Models coordinate subagents through send_message, interrupt_agent, list_agents,
and Team task owners, but every one of those addressed a member by a
36-character Session id. Each new child now has a name, unique among its
creator's children, recorded as a field of the subagent/catalog entry the
creator already appends (payload version 3).
The Session id stays the only execution identity for routing, authorization,
persistence, task ownership, and navigation. A name is a model-facing
reference: 1-32 lower-case letters, digits, or hyphens starting with a letter,
never `lead`, so a UUID never parses as one. Omission selects the first free
`agent-N`; an explicit duplicate or invalid name fails before startup. The
creator reserves the name synchronously at admission and releases it when the
catalog entry commits or startup fails, so no second write, rollback protocol,
or optional naming service exists.
The root is `lead`, and a descendant's full name is its path from the root
without a `lead/` prefix, such as `reviewer/checker`. Sibling-unique segments
make full names tree-unique without a root registry, and cold resume rebuilds
a member's path from the catalogs along its creation chain. A member below an
unnamed historical creator keeps its Session id as its name. resolveName()
reads only the catalogs along the path and grants no authority.
Tools, runtime-authored text, and the Web client consume names: delegation
takes an optional name and returns { kind, subagentId, name }; send_message and
interrupt_agent take `agent`; list_agents rows carry name, status, and
description; Team task results report the owner's name while storage keeps
ownerId; identity runtime context, message framing, and settlement notices use
full names. Recorded sessions, CLI and Web expectations, the Python runtime
snapshots, bilingual docs, an upgrade guide, and an Agent Note follow.
description, kind
| description | kind |
|---|---|
| The test-support group map: keyless test harnesses, LLM mock and replay servers, and Loader smoke helpers for developers writing and running repository tests. | package-group |
packages/test-support
English | 中文
Summary
The test-support group gives repository tests deterministic, keyless ways to exercise the real product. It includes Loader application harnesses, session-log snapshot adapters, a replay LLM plugin, and a scriptable OpenAI-compatible fault server. Each package is support-tier infrastructure; a package moves out of this group when it gains a product contract and product consumers.
Table of Contents
Packages
| Package | Role |
|---|---|
session-snapshot |
Provides session-log snapshot support and protocol adapters for profile-driven tests |
agent-loop-testkit |
Provides the shared prerequisite services for tests that exercise the concrete AgentLoop |
tool-testkit |
Defines tool fixtures and exercises invocation or executor behavior in tests |
client-runtime |
Provides the jsdom slot test bench for browser feature specs |
remote-mock |
Provides the endpoint-named Typert Remote mock and the Connection carrier face whole-client specs install |
loader-smoke |
Boots Loader-composed applications and drives fixture turns for smoke tests |
llm-mock-server |
Provides a scriptable OpenAI-compatible fault server for recovery tests |
llm-replay |
Replays recorded model streams for keyless tests and demos |
Related documentation
- Testing policy — the keyless snapshot tier these harnesses serve and when it is required.
- Package groups — how support groups relate to the product groups.
Dev Note
Working context for maintainers — click to expand
None.