Files
deepseek-harness/packages/test-support
Dudu-0223 ff563d07e0 feat(subagent): name subagents in their creator catalog
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.
2026-11-02 14:58:32 +08:00
..
2026-10-28 02:03:15 +08:00
2026-10-28 02:03:15 +08:00

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

  • 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.