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.
28 lines
14 KiB
JSON
28 lines
14 KiB
JSON
{"type":"session","version":4,"id":"{{session:1}}","createdAt":1789456219793,"cwd":"{{cwd}}","isSeeded":false,"delegationDepth":0}
|
|
{"type":"permission/preset","data":{"preset":"danger-full-access"}}
|
|
{"type":"sandbox/mode","data":{"mode":"danger-full-access"}}
|
|
{"type":"approval/policy","data":{"policy":"never"}}
|
|
{"type":"agent/inbox/spliced","data":{"target":"next-turn","start":0,"inserted":[{"content":[{"type":"text","text":"Use plugin_manager with action set_plugin, target include:tool-todo, and enabled false. Then call it again with enabled true. Do not use other tools. Finish by replying exactly PLUGIN_MANAGER_DONE."}],"source":{"kind":"user"},"role":"user","id":"{{message:1}}"}]}}
|
|
{"type":"turn/start","data":{"turn":1}}
|
|
{"type":"agent/inbox/spliced","data":{"target":"next-turn","start":0,"removedCount":1,"inserted":[]}}
|
|
{"type":"step/start","data":{"turn":1,"step":1}}
|
|
{"type":"system/message","data":{"turn":1,"step":1,"message":{"role":"system","content":[{"type":"text","text":"{{system}}"}],"source":{"kind":"system-prompt"},"id":"{{message:2}}"}},"surfaceOp":"append"}
|
|
{"type":"user/message","data":{"content":[{"type":"text","text":"Use plugin_manager with action set_plugin, target include:tool-todo, and enabled false. Then call it again with enabled true. Do not use other tools. Finish by replying exactly PLUGIN_MANAGER_DONE."}],"source":{"kind":"user"},"role":"user","id":"{{message:1}}"},"surfaceOp":"append"}
|
|
{"type":"user/message","data":{"content":[{"type":"text","text":"Current runtime context. This snapshot supersedes earlier runtime-context snapshots.\n\nCurrent working directory: \"{{cwd}}\".\n\nCurrent DSH file policy: danger-full-access. The DSH file sandbox does not restrict file modifications by available operations.\n\nApproval prompts are disabled in this session: actions that require approval are rejected automatically — do not request sandbox escalation (do not set `sandbox_permissions`).\n\nYou are the root agent. Your name is \"lead\".\n\nTo message other agents, use send_message({ agent: \"<agent-name>\", message: \"...\" }).\nUse list_agents({}) to find your collaborator agents and their names."}],"source":{"kind":"runtime-context","form":"snapshot","sections":[{"name":"working-directory:current","text":"Current working directory: \"{{cwd}}\"."},{"name":"sandbox:policy","text":"Current DSH file policy: danger-full-access. The DSH file sandbox does not restrict file modifications by available operations."},{"name":"approval:policy","text":"Approval prompts are disabled in this session: actions that require approval are rejected automatically — do not request sandbox escalation (do not set `sandbox_permissions`)."},{"name":"subagent:identity","text":"You are the root agent. Your name is \"lead\".\n\nTo message other agents, use send_message({ agent: \"<agent-name>\", message: \"...\" }).\nUse list_agents({}) to find your collaborator agents and their names."}]},"role":"user","id":"{{message:3}}"},"surfaceOp":"append"}
|
|
{"type":"request/header","data":{"header":{"config":{"provider":"deepseek-official","model":"deepseek-v4-flash","maxTokens":256000,"reasoningEffort":"max"},"adapterDefaults":{"reasoningEffort":true,"maxTokens":true},"tools":"{{tools}}"},"reason":"initial"}}
|
|
{"type":"request/context","data":{"provider":"deepseek-official","model":"deepseek-v4-flash","contextWindow":1000000}}
|
|
{"type":"session/title","data":{"title":"Use plugin_manager with action set_plugi","messageSeqs":[8],"source":{"kind":"fallback"}}}
|
|
{"type":"assistant/message","data":{"turn":1,"step":1,"message":{"role":"assistant","content":[{"type":"reasoning","text":"The user wants me to call plugin_manager twice with the given parameters, then reply \"PLUGIN_MANAGER_DONE\". Let me make the calls. The first call with enabled false, then the second with enabled true. These are dependent in sequence (toggle off, then on), so I should do them sequentially — actually, the instruction says call it again after. Let me do them one at a time to be safe, since the second depends on the first having applied.\n\nActually the user says \"Do not use other tools\" — plugin_manager is fine. Let me make the first call."},{"type":"tool-call","id":"call_00_XgwocGXnE4z5t7I5ENoS0769","name":"plugin_manager","arguments":"{\"action\": \"set_plugin\", \"target\": \"include:tool-todo\", \"enabled\": false}"}],"source":{"kind":"model","provider":"deepseek-official","model":"deepseek-v4-flash","replayState":{"response":{"kind":"deepseek-messages","version":1,"model":"deepseek-v4-flash"},"blocks":[{"type":"reasoning","signature":"14ac483b-5df3-4d50-9aac-43c9caa07684"},{"type":"tool-call"}]}},"id":"{{message:4}}"},"usage":{"inputTokens":7164,"outputTokens":199,"cacheReadTokens":0,"cacheWriteTokens":0,"totalTokens":7363},"stream":[{"type":"chunk","time":1789475683170,"chunk":{"type":"block-start","index":0,"blockType":"reasoning"}},{"type":"reasoning-chunks","time0":1789475683170,"index":0,"dt":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"texts":["The"," user"," wants"," me"," to"," call"," plugin","_manager"," twice"," with"," the"," given"," parameters",","," then"," reply"," \"","PL","UG","IN","_M","AN","AG","ER","_D","ONE","\"."," Let"," me"," make"," the"," calls","."," The"," first"," call"," with"," enabled"," false",","," then"," the"," second"," with"," enabled"," true","."," These"," are"," dependent"," in"," sequence"," (","toggle"," off",","," then"," on","),"," so"," I"," should"," do"," them"," sequentially"," —"," actually",","," the"," instruction"," says"," call"," it"," again"," after","."," Let"," me"," do"," them"," one"," at"," a"," time"," to"," be"," safe",","," since"," the"," second"," depends"," on"," the"," first"," having"," applied",".\n\n","Actually"," the"," user"," says"," \"","Do"," not"," use"," other"," tools","\""," —"," plugin","_manager"," is"," fine","."," Let"," me"," make"," the"," first"," call","."]},{"type":"chunk","time":1789475683171,"chunk":{"type":"block-end","index":0,"block":{"type":"reasoning","text":"The user wants me to call plugin_manager twice with the given parameters, then reply \"PLUGIN_MANAGER_DONE\". Let me make the calls. The first call with enabled false, then the second with enabled true. These are dependent in sequence (toggle off, then on), so I should do them sequentially — actually, the instruction says call it again after. Let me do them one at a time to be safe, since the second depends on the first having applied.\n\nActually the user says \"Do not use other tools\" — plugin_manager is fine. Let me make the first call."}}},{"type":"chunk","time":1789475683171,"chunk":{"type":"block-start","index":1,"blockType":"tool-call"}},{"type":"tool-call-chunks","time0":1789475683171,"index":1,"dt":[],"id":"call_00_XgwocGXnE4z5t7I5ENoS0769","name":"plugin_manager","args":[""]},{"type":"tool-call-chunks","time0":1789475683171,"index":1,"dt":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"id":"call_00_XgwocGXnE4z5t7I5ENoS0769","args":["{","\"","action","\"",": ","\"","set","_","plugin","\"",", ","\"","target","\"",": ","\"","include",":","tool","-t","odo","\"",", ","\"","en","abled","\"",": ","false","}"]},{"type":"chunk","time":1789475683171,"chunk":{"type":"block-end","index":1,"block":{"type":"tool-call","id":"call_00_XgwocGXnE4z5t7I5ENoS0769","name":"plugin_manager","arguments":"{\"action\": \"set_plugin\", \"target\": \"include:tool-todo\", \"enabled\": false}"}}},{"type":"chunk","time":1789475683171,"chunk":{"type":"usage","usage":{"inputTokens":7164,"outputTokens":199,"cacheReadTokens":0,"cacheWriteTokens":0,"totalTokens":7363}}},{"type":"chunk","time":1789475683171,"chunk":{"type":"finish","reason":{"kind":"tool-calls"},"replayState":{"response":{"kind":"deepseek-messages","version":1,"model":"deepseek-v4-flash"},"blocks":[{"type":"reasoning","signature":"14ac483b-5df3-4d50-9aac-43c9caa07684"},{"type":"tool-call"}]}}}]},"surfaceOp":"append"}
|
|
{"type":"tool/call","data":{"turn":1,"step":1,"callId":"call_00_XgwocGXnE4z5t7I5ENoS0769","name":"plugin_manager","arguments":"{\"action\": \"set_plugin\", \"target\": \"include:tool-todo\", \"enabled\": false}"}}
|
|
{"type":"tool/result","data":{"turn":1,"step":1,"message":{"role":"tool","source":{"kind":"tool","callId":"call_00_XgwocGXnE4z5t7I5ENoS0769"},"toolCallId":"call_00_XgwocGXnE4z5t7I5ENoS0769","content":[{"type":"text","text":"{\"stage\":\"enable\",\"target\":\"include:tool-todo\",\"enabled\":false,\"changed\":true,\"application\":\"restart-required\",\"restartReason\":\"no-hmr\",\"warnings\":[],\"nextStep\":\"Tell the user to restart DSH to apply this change: this profile applies changes only at startup.\"}"}],"isError":false,"id":"{{message:5}}"}},"sourceEventSeqs":[14],"surfaceOp":"append"}
|
|
{"type":"step/end","data":{"turn":1,"step":1}}
|
|
{"type":"step/start","data":{"turn":1,"step":2}}
|
|
{"type":"assistant/message","data":{"turn":1,"step":2,"message":{"role":"assistant","content":[{"type":"reasoning","text":"Now the second call with enabled true."},{"type":"tool-call","id":"call_00_8FDEYUdbLsc4vBZYHKUs0380","name":"plugin_manager","arguments":"{\"action\": \"set_plugin\", \"enabled\": true, \"target\": \"include:tool-todo\"}"}],"source":{"kind":"model","provider":"deepseek-official","model":"deepseek-v4-flash","replayState":{"response":{"kind":"deepseek-messages","version":1,"model":"deepseek-v4-flash"},"blocks":[{"type":"reasoning","signature":"4f20c714-9549-4b29-b0de-3e3bfb2d70e8"},{"type":"tool-call"}]}},"id":"{{message:6}}"},"usage":{"inputTokens":151,"outputTokens":85,"cacheReadTokens":7296,"cacheWriteTokens":0,"totalTokens":7532},"stream":[{"type":"chunk","time":1789475683202,"chunk":{"type":"block-start","index":0,"blockType":"reasoning"}},{"type":"reasoning-chunks","time0":1789475683202,"index":0,"dt":[0,0,0,0,0,0,0],"texts":["Now"," the"," second"," call"," with"," enabled"," true","."]},{"type":"chunk","time":1789475683202,"chunk":{"type":"block-end","index":0,"block":{"type":"reasoning","text":"Now the second call with enabled true."}}},{"type":"chunk","time":1789475683202,"chunk":{"type":"block-start","index":1,"blockType":"tool-call"}},{"type":"tool-call-chunks","time0":1789475683202,"index":1,"dt":[],"id":"call_00_8FDEYUdbLsc4vBZYHKUs0380","name":"plugin_manager","args":[""]},{"type":"tool-call-chunks","time0":1789475683202,"index":1,"dt":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"id":"call_00_8FDEYUdbLsc4vBZYHKUs0380","args":["{","\"","action","\"",": ","\"","set","_","plugin","\"",", ","\"","en","abled","\"",": ","true",", ","\"","target","\"",": ","\"","include",":","tool","-t","odo","\"","}"]},{"type":"chunk","time":1789475683202,"chunk":{"type":"block-end","index":1,"block":{"type":"tool-call","id":"call_00_8FDEYUdbLsc4vBZYHKUs0380","name":"plugin_manager","arguments":"{\"action\": \"set_plugin\", \"enabled\": true, \"target\": \"include:tool-todo\"}"}}},{"type":"chunk","time":1789475683202,"chunk":{"type":"usage","usage":{"inputTokens":151,"outputTokens":85,"cacheReadTokens":7296,"cacheWriteTokens":0,"totalTokens":7532}}},{"type":"chunk","time":1789475683202,"chunk":{"type":"finish","reason":{"kind":"tool-calls"},"replayState":{"response":{"kind":"deepseek-messages","version":1,"model":"deepseek-v4-flash"},"blocks":[{"type":"reasoning","signature":"4f20c714-9549-4b29-b0de-3e3bfb2d70e8"},{"type":"tool-call"}]}}}]},"surfaceOp":"append"}
|
|
{"type":"tool/call","data":{"turn":1,"step":2,"callId":"call_00_8FDEYUdbLsc4vBZYHKUs0380","name":"plugin_manager","arguments":"{\"action\": \"set_plugin\", \"enabled\": true, \"target\": \"include:tool-todo\"}"}}
|
|
{"type":"tool/result","data":{"turn":1,"step":2,"message":{"role":"tool","source":{"kind":"tool","callId":"call_00_8FDEYUdbLsc4vBZYHKUs0380"},"toolCallId":"call_00_8FDEYUdbLsc4vBZYHKUs0380","content":[{"type":"text","text":"{\"stage\":\"enable\",\"target\":\"include:tool-todo\",\"enabled\":true,\"changed\":true,\"application\":\"restart-required\",\"restartReason\":\"no-hmr\",\"warnings\":[],\"nextStep\":\"Tell the user to restart DSH to apply this change: this profile applies changes only at startup.\"}"}],"isError":false,"id":"{{message:7}}"}},"sourceEventSeqs":[19],"surfaceOp":"append"}
|
|
{"type":"step/end","data":{"turn":1,"step":2}}
|
|
{"type":"step/start","data":{"turn":1,"step":3}}
|
|
{"type":"assistant/message","data":{"turn":1,"step":3,"message":{"role":"assistant","content":[{"type":"reasoning","text":""},{"type":"text","text":"PLUGIN_MANAGER_DONE"}],"source":{"kind":"model","provider":"deepseek-official","model":"deepseek-v4-flash","replayState":{"response":{"kind":"deepseek-messages","version":1,"model":"deepseek-v4-flash"},"blocks":[{"type":"reasoning","signature":"f082a27e-1e6a-4a30-b674-1a229370cd70"},{"type":"text"}]}},"id":"{{message:8}}"},"usage":{"inputTokens":192,"outputTokens":10,"cacheReadTokens":7424,"cacheWriteTokens":0,"totalTokens":7626},"stream":[{"type":"chunk","time":1789475683228,"chunk":{"type":"block-start","index":0,"blockType":"reasoning"}},{"type":"chunk","time":1789475683228,"chunk":{"type":"block-end","index":0,"block":{"type":"reasoning","text":""}}},{"type":"chunk","time":1789475683228,"chunk":{"type":"block-start","index":1,"blockType":"text"}},{"type":"text-chunks","time0":1789475683228,"index":1,"dt":[0,0,0,0,0,0,0,0],"texts":["PL","UG","IN","_M","AN","AG","ER","_D","ONE"]},{"type":"chunk","time":1789475683228,"chunk":{"type":"block-end","index":1,"block":{"type":"text","text":"PLUGIN_MANAGER_DONE"}}},{"type":"chunk","time":1789475683228,"chunk":{"type":"usage","usage":{"inputTokens":192,"outputTokens":10,"cacheReadTokens":7424,"cacheWriteTokens":0,"totalTokens":7626}}},{"type":"chunk","time":1789475683228,"chunk":{"type":"finish","reason":{"kind":"stop"},"replayState":{"response":{"kind":"deepseek-messages","version":1,"model":"deepseek-v4-flash"},"blocks":[{"type":"reasoning","signature":"f082a27e-1e6a-4a30-b674-1a229370cd70"},{"type":"text"}]}}}]},"surfaceOp":"append"}
|
|
{"type":"step/end","data":{"turn":1,"step":3}}
|
|
{"type":"turn/end","data":{"turn":1,"reason":{"kind":"completed"}}}
|