Files
LLeMbas-CLI/harness/conformance/team.json
T
HomerandClaude Opus 5.5 e349d829a1
ci / check (push) Waiting to run
Harness spec 3.5.0: scheduled work on a linked computer
Accept scheduled work (remote.scheduled, off by default) said as limits.scheduled; a scheduled
turn is an agent session marked `scheduled` in the schedule's mode (Edit when none chosen, Plan
refused, lowered to remote.max_mode) with its Min/Max; the answer reports status ok, silent,
failed or cancelled and the final reply. Approvals wait the schedule's wait and go to the person
through the server, then count as denied. _lembas/monitor runs a watch command under the mode's
rules (one that would ask is refused) and answers a hash and an excerpt. Schedule routes of
/api/v2 accept the device's token. team_add under a sub-manager names it (added_under).
Conformance areas scheduled, silent, monitor; team cases changed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-10 12:11:56 +00:00

4959 lines
122 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"about": "Teams (team.md, spec 3.2.0; the main agent and its tree, subagents.md §5–§13, spec 3.4.0 — a member's team_add is now the lead's with `parent`, and `offered` lists 3.4.0's tools): one lead session's team, step by step, written from a reference model of the rules. `start`: the size setting `min` and `max`, `subagents` (enabled for the session; default true) and the chat model's `capacity` (models/schema.json: `parallel`, `single_session`; {} — no limit). The lead is `lead`; its first prompt is running as the case begins, and every agent is on the chat's model, and it is the only model there is (spec 3.3.0: other models are subagents.json's). Spec 3.5.0: a subagent added under a sub-manager is said to report to it (`added_under`). Steps and what each answers: `offered` (`by` an agent, default lead) — `{tools, setting}`: the team tools listed for that agent, sorted, and whether the setting is shown; `call` (`by`, `tool`, `args`) — `{result, delivered}`: the call's answer word for word (null where an ordinary tool would run: the case looks only at whether it is refused), and what was delivered to whom by this step, `{name: [message, …]}`; `team_read` answers `{room, delivered}` instead, `room` being the messages it shows as `{n, from, to}` (the tree and the text format are loop.json team.read's, checked by each project's own tests); `task` runs a subagent that counts toward the size (and holds a slot) until `task_done` (`by`) — answers null; `finish` (`by`, `reply`, `reason`: stop by default, or steps, budget, `error — <text>`) — the agent's turn ends: a member's reply is its report — `{delivered}`; `set` (`min`, `max`, `capacity`: the person's setting or the model's metadata changed) — null; `person_stop` (`name`) — the person stopped that member in the UI — null; `user` — the person's message to the lead — `{note}`: the note on it (context.md §10), null when there is none; `state` — the team in tree order as `{name, manager, state}`: working, waiting (for a slot), finished, idle (the lead between turns). Delivering to a finished member or the idle lead wakes it (it is then working, or waiting when its model is full). Spec 3.4.0 adds: `start.mode` — the main agent's mode (default edit); `call` to team_whoami, team_finish, team_findings, team_request, team_decide, team_assign, team_replace, answered word for word; `context` (`by`, `used`, `window`) — its engine's context use — null; `context_full` (`by`) — its context reached team.context.pause_at: `{delivered}`; `started` (`by`) — `{text}`: what its latest turn was started with (a brief, or the messages that woke it); `tree` — `{size, open_slots, agents: [{id, name, parent, state, mode, request}], ended: [{id, name, state}]}`; `main_mode` (`mode`) — the main agent's mode changed — null. LLeMbas: services/team.py; CLI: team/.",
"cases": [
{
"about": "Offered on a model that serves two requests at once: the lead has all four tools and the setting is shown.",
"start": {
"min": 1,
"max": 4,
"capacity": {
"parallel": 2
}
},
"steps": [
{
"op": "offered"
}
],
"expect": [
{
"tools": [
"team_add",
"team_assign",
"team_decide",
"team_findings",
"team_read",
"team_replace",
"team_send",
"team_stop",
"team_whoami"
],
"setting": true
}
]
},
{
"about": "A hosted API (no capacity said) offers a team too.",
"start": {
"min": 1,
"max": 4,
"capacity": {}
},
"steps": [
{
"op": "offered"
}
],
"expect": [
{
"tools": [
"team_add",
"team_assign",
"team_decide",
"team_findings",
"team_read",
"team_replace",
"team_send",
"team_stop",
"team_whoami"
],
"setting": true
}
]
},
{
"about": "A model that serves one request at a time, with no other model, offers no team: no tools, no setting.",
"start": {
"min": 1,
"max": 4,
"capacity": {
"single_session": true
}
},
"steps": [
{
"op": "offered"
}
],
"expect": [
{
"tools": [],
"setting": false
}
]
},
{
"about": "parallel 1 is the same as single_session.",
"start": {
"min": 1,
"max": 4,
"capacity": {
"parallel": 1,
"single_session": false
}
},
"steps": [
{
"op": "offered"
}
],
"expect": [
{
"tools": [],
"setting": false
}
]
},
{
"about": "parallel wins over single_session where they disagree.",
"start": {
"min": 1,
"max": 4,
"capacity": {
"parallel": 3,
"single_session": true
}
},
"steps": [
{
"op": "offered"
}
],
"expect": [
{
"tools": [
"team_add",
"team_assign",
"team_decide",
"team_findings",
"team_read",
"team_replace",
"team_send",
"team_stop",
"team_whoami"
],
"setting": true
}
]
},
{
"about": "Subagents switched off: no team.",
"start": {
"min": 1,
"max": 4,
"subagents": false,
"capacity": {
"parallel": 4
}
},
"steps": [
{
"op": "offered"
}
],
"expect": [
{
"tools": [],
"setting": false
}
]
},
{
"about": "max 1: the tools stay listed (the setting can change during the session) and answer that one agent is allowed; task answers the same.",
"start": {
"min": 1,
"max": 1,
"capacity": {
"parallel": 2
}
},
"steps": [
{
"op": "offered"
},
{
"op": "user"
},
{
"op": "call",
"by": "lead",
"tool": "team_add",
"args": {
"name": "parser",
"role": "owns a part",
"task": "Do the part.",
"goal": "A parser"
}
},
{
"op": "call",
"by": "lead",
"tool": "team_send",
"args": {
"to": [
"all"
],
"message": "hi"
}
},
{
"op": "call",
"by": "lead",
"tool": "task",
"args": {
"prompt": "x"
}
},
{
"op": "call",
"by": "lead",
"tool": "write",
"args": {}
}
],
"expect": [
{
"tools": [
"team_add",
"team_assign",
"team_decide",
"team_findings",
"team_read",
"team_replace",
"team_send",
"team_stop",
"team_whoami"
],
"setting": true
},
{
"note": "<session-note>\nThe person allows one agent: work alone; the team tools and task are unavailable.\n</session-note>"
},
{
"result": "The person allows one agent in this chat: there is no team. Do the work yourself.",
"delivered": {}
},
{
"result": "The person allows one agent in this chat: there is no team. Do the work yourself.",
"delivered": {}
},
{
"result": "The person allows one agent in this chat: there is no team. Do the work yourself.",
"delivered": {}
},
{
"result": null,
"delivered": {}
}
]
},
{
"about": "A subagent has team_whoami, team_read, team_send, team_findings and team_finish; a sub-manager the same — it adds nothing (spec 3.4.0).",
"start": {
"min": 1,
"max": 4,
"capacity": {
"parallel": 4
}
},
"steps": [
{
"op": "call",
"by": "lead",
"tool": "team_add",
"args": {
"name": "parser",
"role": "owns a part",
"task": "Do the part.",
"goal": "Ship the parser"
}
},
{
"op": "call",
"by": "lead",
"tool": "team_add",
"args": {
"name": "docs",
"role": "owns a part",
"task": "Do the part.",
"lead": true
}
},
{
"op": "offered",
"by": "parser"
},
{
"op": "offered",
"by": "docs"
}
],
"expect": [
{
"result": "Added parser (owns a part): it is working. Its report comes to you when it finishes. The team is 2 of 4 agents.",
"delivered": {}
},
{
"result": "Added docs (owns a part): it is working. Its report comes to you when it finishes. The team is 3 of 4 agents.",
"delivered": {}
},
{
"tools": [
"team_findings",
"team_finish",
"team_read",
"team_send",
"team_whoami"
],
"setting": true
},
{
"tools": [
"team_findings",
"team_finish",
"team_read",
"team_send",
"team_whoami"
],
"setting": true
}
]
},
{
"about": "The size is a note on the first user message, and on the next one after it changes — never in the prompt.",
"start": {
"min": 1,
"max": 4,
"capacity": {
"parallel": 2
}
},
"steps": [
{
"op": "user"
},
{
"op": "finish",
"by": "lead"
},
{
"op": "user"
},
{
"op": "set",
"max": 6
},
{
"op": "finish",
"by": "lead"
},
{
"op": "user"
},
{
"op": "set",
"max": 6
},
{
"op": "finish",
"by": "lead"
},
{
"op": "user"
}
],
"expect": [
{
"note": "<session-note>\nThe team may have 1 to 4 agents, you included.\n</session-note>"
},
{
"delivered": {}
},
{
"note": null
},
null,
{
"delivered": {}
},
{
"note": "<session-note>\nThe team may have 1 to 6 agents, you included.\n</session-note>"
},
null,
{
"delivered": {}
},
{
"note": null
}
]
},
{
"about": "min 2 or more: the note asks for a team from the start, and the lead is a manager before its first member.",
"start": {
"min": 3,
"max": 5,
"capacity": {
"parallel": 4
}
},
"steps": [
{
"op": "user"
},
{
"op": "call",
"by": "lead",
"tool": "edit",
"args": {}
},
{
"op": "call",
"by": "lead",
"tool": "read",
"args": {}
}
],
"expect": [
{
"note": "<session-note>\nThe team may have 3 to 5 agents, you included.\nWork through subagents from the start: you lead, and they do the work. The person opened 2 slots for them: fill them with team_add.\n</session-note>"
},
{
"result": "You lead a team: give this to a member (team_add or team_send).",
"delivered": {}
},
{
"result": null,
"delivered": {}
}
]
},
{
"about": "Lowering max to 1 is said as one agent.",
"start": {
"min": 1,
"max": 4,
"capacity": {
"parallel": 2
}
},
"steps": [
{
"op": "user"
},
{
"op": "set",
"max": 1
},
{
"op": "finish",
"by": "lead"
},
{
"op": "user"
}
],
"expect": [
{
"note": "<session-note>\nThe team may have 1 to 4 agents, you included.\n</session-note>"
},
null,
{
"delivered": {}
},
{
"note": "<session-note>\nThe person allows one agent: work alone; the team tools and task are unavailable.\n</session-note>"
}
]
},
{
"about": "min equal to max: the range and the request for a team.",
"start": {
"min": 2,
"max": 2,
"capacity": {
"parallel": 2
}
},
"steps": [
{
"op": "user"
}
],
"expect": [
{
"note": "<session-note>\nThe team may have 2 to 2 agents, you included.\nWork through subagents from the start: you lead, and they do the work. The person opened 1 slots for them: fill them with team_add.\n</session-note>"
}
]
},
{
"about": "Past max, team_add is refused; a stopped member makes room. The size counts the lead.",
"start": {
"min": 1,
"max": 3,
"capacity": {}
},
"steps": [
{
"op": "call",
"by": "lead",
"tool": "team_add",
"args": {
"name": "parser",
"role": "owns a part",
"task": "Do the part.",
"goal": "Ship the parser"
}
},
{
"op": "call",
"by": "lead",
"tool": "team_add",
"args": {
"name": "lexer",
"role": "owns a part",
"task": "Do the part."
}
},
{
"op": "call",
"by": "lead",
"tool": "team_add",
"args": {
"name": "tests",
"role": "owns a part",
"task": "Do the part."
}
},
{
"op": "call",
"by": "lead",
"tool": "team_stop",
"args": {
"name": "lexer"
}
},
{
"op": "call",
"by": "lead",
"tool": "team_add",
"args": {
"name": "tests",
"role": "owns a part",
"task": "Do the part."
}
},
{
"op": "state"
}
],
"expect": [
{
"result": "Added parser (owns a part): it is working. Its report comes to you when it finishes. The team is 2 of 3 agents.",
"delivered": {}
},
{
"result": "Added lexer (owns a part): it is working. Its report comes to you when it finishes. The team is 3 of 3 agents.",
"delivered": {}
},
{
"result": "The team is full: it has as many agents as the person allows (3). Give the work to a member already on it (team_send), or stop one (team_stop) first.",
"delivered": {}
},
{
"result": "Stopped lexer. The team is 2 of 3 agents.",
"delivered": {}
},
{
"result": "Added tests (owns a part): it is working. Its report comes to you when it finishes. The team is 3 of 3 agents.",
"delivered": {}
},
[
{
"name": "lead",
"manager": null,
"state": "working"
},
{
"name": "parser",
"manager": "lead",
"state": "working"
},
{
"name": "tests",
"manager": "lead",
"state": "working"
}
]
]
},
{
"about": "A finished member keeps its place in the size: it can be woken.",
"start": {
"min": 1,
"max": 2,
"capacity": {}
},
"steps": [
{
"op": "call",
"by": "lead",
"tool": "team_add",
"args": {
"name": "parser",
"role": "owns a part",
"task": "Do the part.",
"goal": "Ship the parser"
}
},
{
"op": "finish",
"by": "parser",
"reply": "Done."
},
{
"op": "call",
"by": "lead",
"tool": "team_add",
"args": {
"name": "lexer",
"role": "owns a part",
"task": "Do the part."
}
},
{
"op": "state"
}
],
"expect": [
{
"result": "Added parser (owns a part): it is working. Its report comes to you when it finishes. The team is 2 of 2 agents.",
"delivered": {}
},
{
"delivered": {
"lead": [
"[Team report from parser to lead:]\nDone."
]
}
},
{
"result": "The team is full: it has as many agents as the person allows (2). Give the work to a member already on it (team_send), or stop one (team_stop) first.",
"delivered": {}
},
[
{
"name": "lead",
"manager": null,
"state": "working"
},
{
"name": "parser",
"manager": "lead",
"state": "finished"
}
]
]
},
{
"about": "The size is across the whole tree: subagents placed under a sub-manager count within the same max.",
"start": {
"min": 1,
"max": 4,
"capacity": {}
},
"steps": [
{
"op": "call",
"by": "lead",
"tool": "team_add",
"args": {
"name": "backend",
"role": "owns a part",
"task": "Do the part.",
"lead": true,
"goal": "Ship v2"
}
},
{
"op": "call",
"by": "lead",
"tool": "team_add",
"args": {
"name": "db",
"role": "owns a part",
"task": "Do the part.",
"parent": "backend"
}
},
{
"op": "call",
"by": "lead",
"tool": "team_add",
"args": {
"name": "frontend",
"role": "owns a part",
"task": "Do the part."
}
},
{
"op": "call",
"by": "lead",
"tool": "team_add",
"args": {
"name": "api",
"role": "owns a part",
"task": "Do the part.",
"parent": "backend"
}
},
{
"op": "state"
}
],
"expect": [
{
"result": "Added backend (owns a part): it is working. Its report comes to you when it finishes. The team is 2 of 4 agents.",
"delivered": {}
},
{
"result": "Added db (owns a part) under backend: it is working. Its report goes to backend when it finishes. The team is 3 of 4 agents.",
"delivered": {}
},
{
"result": "Added frontend (owns a part): it is working. Its report comes to you when it finishes. The team is 4 of 4 agents.",
"delivered": {}
},
{
"result": "The team is full: it has as many agents as the person allows (4). Give the work to a member already on it (team_send), or stop one (team_stop) first.",
"delivered": {}
},
[
{
"name": "lead",
"manager": null,
"state": "working"
},
{
"name": "backend",
"manager": "lead",
"state": "working"
},
{
"name": "db",
"manager": "backend",
"state": "working"
},
{
"name": "frontend",
"manager": "lead",
"state": "working"
}
]
]
},
{
"about": "A task subagent counts toward max while it runs, inside a team. A subagent's own task is refused: only the main agent starts subagents (spec 3.4.0).",
"start": {
"min": 1,
"max": 3,
"capacity": {}
},
"steps": [
{
"op": "call",
"by": "lead",
"tool": "team_add",
"args": {
"name": "parser",
"role": "owns a part",
"task": "Do the part.",
"goal": "Ship the parser"
}
},
{
"op": "call",
"by": "lead",
"tool": "task",
"args": {
"prompt": "Find the grammar."
}
},
{
"op": "call",
"by": "lead",
"tool": "team_add",
"args": {
"name": "lexer",
"role": "owns a part",
"task": "Do the part."
}
},
{
"op": "call",
"by": "parser",
"tool": "task",
"args": {
"prompt": "x"
}
},
{
"op": "task_done",
"by": "lead"
},
{
"op": "call",
"by": "lead",
"tool": "team_add",
"args": {
"name": "lexer",
"role": "owns a part",
"task": "Do the part."
}
}
],
"expect": [
{
"result": "Added parser (owns a part): it is working. Its report comes to you when it finishes. The team is 2 of 3 agents.",
"delivered": {}
},
{
"result": null,
"delivered": {}
},
{
"result": "The team is full: it has as many agents as the person allows (3). Give the work to a member already on it (team_send), or stop one (team_stop) first.",
"delivered": {}
},
{
"result": "Only the main agent adds, assigns, replaces and stops subagents: ask it (team_send to lead).",
"delivered": {}
},
null,
{
"result": "Added lexer (owns a part): it is working. Its report comes to you when it finishes. The team is 3 of 3 agents.",
"delivered": {}
}
]
},
{
"about": "The count includes the lead: max 2 is the lead and one subagent. A second task while the first runs is refused; once it is done there is room again.",
"start": {
"min": 1,
"max": 2,
"capacity": {}
},
"steps": [
{
"op": "call",
"by": "lead",
"tool": "task",
"args": {
"prompt": "Find the grammar."
}
},
{
"op": "call",
"by": "lead",
"tool": "task",
"args": {
"prompt": "x"
}
},
{
"op": "task_done",
"by": "lead"
},
{
"op": "call",
"by": "lead",
"tool": "task",
"args": {
"prompt": "x"
}
}
],
"expect": [
{
"result": null,
"delivered": {}
},
{
"result": "The team is full: it has as many agents as the person allows (2). Give the work to a member already on it (team_send), or stop one (team_stop) first.",
"delivered": {}
},
null,
{
"result": null,
"delivered": {}
}
]
},
{
"about": "Lowering max stops nobody: the members stay, and nothing is added until the size is under it. The lead keeps its team tools while it has members.",
"start": {
"min": 1,
"max": 4,
"capacity": {}
},
"steps": [
{
"op": "call",
"by": "lead",
"tool": "team_add",
"args": {
"name": "a",
"role": "owns a part",
"task": "Do the part.",
"goal": "G"
}
},
{
"op": "call",
"by": "lead",
"tool": "team_add",
"args": {
"name": "b",
"role": "owns a part",
"task": "Do the part."
}
},
{
"op": "set",
"max": 1
},
{
"op": "call",
"by": "lead",
"tool": "team_add",
"args": {
"name": "c",
"role": "owns a part",
"task": "Do the part."
}
},
{
"op": "call",
"by": "lead",
"tool": "team_send",
"args": {
"to": [
"a"
],
"message": "Wrap up."
}
},
{
"op": "call",
"by": "lead",
"tool": "team_stop",
"args": {
"name": "all"
}
},
{
"op": "call",
"by": "lead",
"tool": "team_send",
"args": {
"to": [
"all"
],
"message": "x"
}
},
{
"op": "state"
}
],
"expect": [
{
"result": "Added a (owns a part): it is working. Its report comes to you when it finishes. The team is 2 of 4 agents.",
"delivered": {}
},
{
"result": "Added b (owns a part): it is working. Its report comes to you when it finishes. The team is 3 of 4 agents.",
"delivered": {}
},
null,
{
"result": "The team is full: it has as many agents as the person allows (1). Give the work to a member already on it (team_send), or stop one (team_stop) first.",
"delivered": {}
},
{
"result": "Sent to a.",
"delivered": {
"a": [
"[Team message from lead to a:]\nWrap up."
]
}
},
{
"result": "Stopped a, b. The team is 1 of 1 agents.",
"delivered": {}
},
{
"result": "The person allows one agent in this chat: there is no team. Do the work yourself.",
"delivered": {}
},
[
{
"name": "lead",
"manager": null,
"state": "working"
}
]
]
},
{
"about": "The model's capacity changed after the prompt was made: the tools answer one_request.",
"start": {
"min": 1,
"max": 4,
"capacity": {
"parallel": 2
}
},
"steps": [
{
"op": "set",
"capacity": {
"single_session": true
}
},
{
"op": "call",
"by": "lead",
"tool": "team_add",
"args": {
"name": "parser",
"role": "owns a part",
"task": "Do the part.",
"goal": "G"
}
}
],
"expect": [
null,
{
"result": "This model serves one request at a time now, so there is no team. Do the work yourself.",
"delivered": {}
}
]
},
{
"about": "Names: the pattern, all, lead and a name already on the team are refused; the first member needs the goal.",
"start": {
"min": 1,
"max": 8,
"capacity": {}
},
"steps": [
{
"op": "call",
"by": "lead",
"tool": "team_add",
"args": {
"name": "Parser",
"role": "owns a part",
"task": "Do the part.",
"goal": "G"
}
},
{
"op": "call",
"by": "lead",
"tool": "team_add",
"args": {
"name": "all",
"role": "owns a part",
"task": "Do the part.",
"goal": "G"
}
},
{
"op": "call",
"by": "lead",
"tool": "team_add",
"args": {
"name": "lead",
"role": "owns a part",
"task": "Do the part.",
"goal": "G"
}
},
{
"op": "call",
"by": "lead",
"tool": "team_add",
"args": {
"name": "parser",
"role": "owns a part",
"task": "Do the part."
}
},
{
"op": "call",
"by": "lead",
"tool": "team_add",
"args": {
"name": "parser",
"role": "owns a part",
"task": "Do the part.",
"goal": "G"
}
},
{
"op": "call",
"by": "lead",
"tool": "team_add",
"args": {
"name": "parser",
"role": "owns a part",
"task": "Do the part.",
"goal": "G"
}
},
{
"op": "call",
"by": "lead",
"tool": "team_add",
"args": {
"name": "9lives",
"role": "owns a part",
"task": "Do the part.",
"goal": "G"
}
},
{
"op": "call",
"by": "lead",
"tool": "team_add",
"args": {
"name": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"role": "owns a part",
"task": "Do the part.",
"goal": "G"
}
},
{
"op": "call",
"by": "lead",
"tool": "team_add",
"args": {
"name": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"role": "owns a part",
"task": "Do the part."
}
}
],
"expect": [
{
"result": "Parser cannot be a name: use lowercase letters, digits and hyphens, beginning with a letter, at most 32 characters.",
"delivered": {}
},
{
"result": "all addresses the whole team; it cannot be a name.",
"delivered": {}
},
{
"result": "There is already an agent called lead in this team. Choose another name.",
"delivered": {}
},
{
"result": "Say the team's goal in `goal`, in one line, with your first member: every member is told it.",
"delivered": {}
},
{
"result": "Added parser (owns a part): it is working. Its report comes to you when it finishes. The team is 2 of 8 agents.",
"delivered": {}
},
{
"result": "There is already an agent called parser in this team. Choose another name.",
"delivered": {}
},
{
"result": "9lives cannot be a name: use lowercase letters, digits and hyphens, beginning with a letter, at most 32 characters.",
"delivered": {}
},
{
"result": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa cannot be a name: use lowercase letters, digits and hyphens, beginning with a letter, at most 32 characters.",
"delivered": {}
},
{
"result": "Added aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa (owns a part): it is working. Its report comes to you when it finishes. The team is 3 of 8 agents.",
"delivered": {}
}
]
},
{
"about": "Once it has a member, the lead does not do the work: writers and executors are refused, readers and the interact tools stay, and bash only for what the default rules allow.",
"start": {
"min": 1,
"max": 4,
"capacity": {}
},
"steps": [
{
"op": "call",
"by": "lead",
"tool": "write",
"args": {}
},
{
"op": "call",
"by": "lead",
"tool": "team_add",
"args": {
"name": "parser",
"role": "owns a part",
"task": "Do the part.",
"goal": "Ship the parser"
}
},
{
"op": "call",
"by": "lead",
"tool": "write",
"args": {}
},
{
"op": "call",
"by": "lead",
"tool": "edit",
"args": {}
},
{
"op": "call",
"by": "lead",
"tool": "multiedit",
"args": {}
},
{
"op": "call",
"by": "lead",
"tool": "apply_patch",
"args": {}
},
{
"op": "call",
"by": "lead",
"tool": "mkdir",
"args": {}
},
{
"op": "call",
"by": "lead",
"tool": "mv",
"args": {}
},
{
"op": "call",
"by": "lead",
"tool": "rm",
"args": {}
},
{
"op": "call",
"by": "lead",
"tool": "skill_manage",
"args": {}
},
{
"op": "call",
"by": "lead",
"tool": "python",
"args": {}
},
{
"op": "call",
"by": "lead",
"tool": "commit",
"args": {}
},
{
"op": "call",
"by": "lead",
"tool": "branch",
"args": {}
},
{
"op": "call",
"by": "lead",
"tool": "pr",
"args": {}
},
{
"op": "call",
"by": "lead",
"tool": "merge",
"args": {}
},
{
"op": "call",
"by": "lead",
"tool": "tag",
"args": {}
},
{
"op": "call",
"by": "lead",
"tool": "release",
"args": {}
},
{
"op": "call",
"by": "lead",
"tool": "bash",
"args": {
"command": "git status"
}
},
{
"op": "call",
"by": "lead",
"tool": "bash",
"args": {
"command": "cat README.md"
}
},
{
"op": "call",
"by": "lead",
"tool": "bash",
"args": {
"command": "grep -r foo ."
}
},
{
"op": "call",
"by": "lead",
"tool": "bash",
"args": {
"command": "npm test"
}
},
{
"op": "call",
"by": "lead",
"tool": "bash",
"args": {
"command": "ls && rm -rf build"
}
},
{
"op": "call",
"by": "lead",
"tool": "read",
"args": {}
},
{
"op": "call",
"by": "lead",
"tool": "glob",
"args": {}
},
{
"op": "call",
"by": "lead",
"tool": "grep",
"args": {}
},
{
"op": "call",
"by": "lead",
"tool": "list",
"args": {}
},
{
"op": "call",
"by": "lead",
"tool": "recall",
"args": {}
},
{
"op": "call",
"by": "lead",
"tool": "web_fetch",
"args": {}
},
{
"op": "call",
"by": "lead",
"tool": "ask_user",
"args": {}
},
{
"op": "call",
"by": "lead",
"tool": "plan_write",
"args": {}
},
{
"op": "call",
"by": "lead",
"tool": "memory",
"args": {}
},
{
"op": "call",
"by": "lead",
"tool": "show",
"args": {}
},
{
"op": "call",
"by": "lead",
"tool": "job_send",
"args": {}
},
{
"op": "call",
"by": "lead",
"tool": "job_stop",
"args": {}
},
{
"op": "call",
"by": "lead",
"tool": "task",
"args": {}
}
],
"expect": [
{
"result": null,
"delivered": {}
},
{
"result": "Added parser (owns a part): it is working. Its report comes to you when it finishes. The team is 2 of 4 agents.",
"delivered": {}
},
{
"result": "You lead a team: give this to a member (team_add or team_send).",
"delivered": {}
},
{
"result": "You lead a team: give this to a member (team_add or team_send).",
"delivered": {}
},
{
"result": "You lead a team: give this to a member (team_add or team_send).",
"delivered": {}
},
{
"result": "You lead a team: give this to a member (team_add or team_send).",
"delivered": {}
},
{
"result": "You lead a team: give this to a member (team_add or team_send).",
"delivered": {}
},
{
"result": "You lead a team: give this to a member (team_add or team_send).",
"delivered": {}
},
{
"result": "You lead a team: give this to a member (team_add or team_send).",
"delivered": {}
},
{
"result": "You lead a team: give this to a member (team_add or team_send).",
"delivered": {}
},
{
"result": "You lead a team: give this to a member (team_add or team_send).",
"delivered": {}
},
{
"result": "You lead a team: give this to a member (team_add or team_send).",
"delivered": {}
},
{
"result": "You lead a team: give this to a member (team_add or team_send).",
"delivered": {}
},
{
"result": "You lead a team: give this to a member (team_add or team_send).",
"delivered": {}
},
{
"result": "You lead a team: give this to a member (team_add or team_send).",
"delivered": {}
},
{
"result": "You lead a team: give this to a member (team_add or team_send).",
"delivered": {}
},
{
"result": "You lead a team: give this to a member (team_add or team_send).",
"delivered": {}
},
{
"result": null,
"delivered": {}
},
{
"result": null,
"delivered": {}
},
{
"result": null,
"delivered": {}
},
{
"result": "You lead a team: give this to a member (team_add or team_send).",
"delivered": {}
},
{
"result": "You lead a team: give this to a member (team_add or team_send).",
"delivered": {}
},
{
"result": null,
"delivered": {}
},
{
"result": null,
"delivered": {}
},
{
"result": null,
"delivered": {}
},
{
"result": null,
"delivered": {}
},
{
"result": null,
"delivered": {}
},
{
"result": null,
"delivered": {}
},
{
"result": null,
"delivered": {}
},
{
"result": null,
"delivered": {}
},
{
"result": null,
"delivered": {}
},
{
"result": null,
"delivered": {}
},
{
"result": null,
"delivered": {}
},
{
"result": null,
"delivered": {}
},
{
"result": null,
"delivered": {}
}
]
},
{
"about": "A subagent works; a sub-manager becomes a manager when one is placed under it; stopping them all makes the lead a worker again (min 1).",
"start": {
"min": 1,
"max": 6,
"capacity": {}
},
"steps": [
{
"op": "call",
"by": "lead",
"tool": "team_add",
"args": {
"name": "api",
"role": "owns a part",
"task": "Do the part.",
"lead": true,
"goal": "Ship v2"
}
},
{
"op": "call",
"by": "api",
"tool": "edit",
"args": {}
},
{
"op": "call",
"by": "lead",
"tool": "team_add",
"args": {
"name": "routes",
"role": "owns a part",
"task": "Do the part.",
"parent": "api"
}
},
{
"op": "call",
"by": "api",
"tool": "edit",
"args": {}
},
{
"op": "call",
"by": "routes",
"tool": "edit",
"args": {}
},
{
"op": "call",
"by": "lead",
"tool": "team_stop",
"args": {
"name": "all"
}
},
{
"op": "call",
"by": "lead",
"tool": "edit",
"args": {}
}
],
"expect": [
{
"result": "Added api (owns a part): it is working. Its report comes to you when it finishes. The team is 2 of 6 agents.",
"delivered": {}
},
{
"result": null,
"delivered": {}
},
{
"result": "Added routes (owns a part) under api: it is working. Its report goes to api when it finishes. The team is 3 of 6 agents.",
"delivered": {}
},
{
"result": "You lead a team: give this to a member (team_add or team_send).",
"delivered": {}
},
{
"result": null,
"delivered": {}
},
{
"result": "Stopped api, routes. The team is 1 of 6 agents.",
"delivered": {}
},
{
"result": null,
"delivered": {}
}
]
},
{
"about": "A finished member still makes its manager a manager: it can be woken.",
"start": {
"min": 1,
"max": 4,
"capacity": {}
},
"steps": [
{
"op": "call",
"by": "lead",
"tool": "team_add",
"args": {
"name": "parser",
"role": "owns a part",
"task": "Do the part.",
"goal": "G"
}
},
{
"op": "finish",
"by": "parser",
"reply": "Done."
},
{
"op": "call",
"by": "lead",
"tool": "write",
"args": {}
}
],
"expect": [
{
"result": "Added parser (owns a part): it is working. Its report comes to you when it finishes. The team is 2 of 4 agents.",
"delivered": {}
},
{
"delivered": {
"lead": [
"[Team report from parser to lead:]\nDone."
]
}
},
{
"result": "You lead a team: give this to a member (team_add or team_send).",
"delivered": {}
}
]
},
{
"about": "A message to one name reaches that one only, under the message mark; the answer names who it went to.",
"start": {
"min": 1,
"max": 4,
"capacity": {}
},
"steps": [
{
"op": "call",
"by": "lead",
"tool": "team_add",
"args": {
"name": "parser",
"role": "owns a part",
"task": "Do the part.",
"goal": "Ship the parser"
}
},
{
"op": "call",
"by": "lead",
"tool": "team_add",
"args": {
"name": "lexer",
"role": "owns a part",
"task": "Do the part."
}
},
{
"op": "call",
"by": "parser",
"tool": "team_send",
"args": {
"to": [
"lexer"
],
"message": "I need a token for `=>`."
}
},
{
"op": "call",
"by": "lexer",
"tool": "team_send",
"args": {
"to": [
"parser",
"lead"
],
"message": "Added; see src/lex.ts:40."
}
},
{
"op": "call",
"by": "lead",
"tool": "team_send",
"args": {
"to": [
"lexer",
"lexer"
],
"message": "Thanks."
}
}
],
"expect": [
{
"result": "Added parser (owns a part): it is working. Its report comes to you when it finishes. The team is 2 of 4 agents.",
"delivered": {}
},
{
"result": "Added lexer (owns a part): it is working. Its report comes to you when it finishes. The team is 3 of 4 agents.",
"delivered": {}
},
{
"result": "Sent to lexer.",
"delivered": {
"lexer": [
"[Team message from parser to lexer:]\nI need a token for `=>`."
]
}
},
{
"result": "Sent to parser, lead.",
"delivered": {
"parser": [
"[Team message from lexer to parser, lead:]\nAdded; see src/lex.ts:40."
],
"lead": [
"[Team message from lexer to parser, lead:]\nAdded; see src/lex.ts:40."
]
}
},
{
"result": "Sent to lexer.",
"delivered": {
"lexer": [
"[Team message from lead to lexer:]\nThanks."
]
}
}
]
},
{
"about": "all reaches everyone but the sender, across the tree; a message is addressed the same way to every recipient.",
"start": {
"min": 1,
"max": 6,
"capacity": {}
},
"steps": [
{
"op": "call",
"by": "lead",
"tool": "team_add",
"args": {
"name": "api",
"role": "owns a part",
"task": "Do the part.",
"lead": true,
"goal": "Ship v2"
}
},
{
"op": "call",
"by": "lead",
"tool": "team_add",
"args": {
"name": "routes",
"role": "owns a part",
"task": "Do the part.",
"parent": "api"
}
},
{
"op": "call",
"by": "lead",
"tool": "team_add",
"args": {
"name": "web",
"role": "owns a part",
"task": "Do the part."
}
},
{
"op": "call",
"by": "routes",
"tool": "team_send",
"args": {
"to": [
"all"
],
"message": "The API is frozen from now on."
}
},
{
"op": "call",
"by": "lead",
"tool": "team_send",
"args": {
"to": "all",
"message": "Stand-up: post your status."
}
}
],
"expect": [
{
"result": "Added api (owns a part): it is working. Its report comes to you when it finishes. The team is 2 of 6 agents.",
"delivered": {}
},
{
"result": "Added routes (owns a part) under api: it is working. Its report goes to api when it finishes. The team is 3 of 6 agents.",
"delivered": {}
},
{
"result": "Added web (owns a part): it is working. Its report comes to you when it finishes. The team is 4 of 6 agents.",
"delivered": {}
},
{
"result": "Sent to all.",
"delivered": {
"lead": [
"[Team message from routes to all:]\nThe API is frozen from now on."
],
"api": [
"[Team message from routes to all:]\nThe API is frozen from now on."
],
"web": [
"[Team message from routes to all:]\nThe API is frozen from now on."
]
}
},
{
"result": "Sent to all.",
"delivered": {
"api": [
"[Team message from lead to all:]\nStand-up: post your status."
],
"routes": [
"[Team message from lead to all:]\nStand-up: post your status."
],
"web": [
"[Team message from lead to all:]\nStand-up: post your status."
]
}
}
]
},
{
"about": "Refused sends post nothing: an unknown name (the first), yourself, all with nobody else.",
"start": {
"min": 1,
"max": 4,
"capacity": {}
},
"steps": [
{
"op": "call",
"by": "lead",
"tool": "team_send",
"args": {
"to": [
"all"
],
"message": "Anyone?"
}
},
{
"op": "call",
"by": "lead",
"tool": "team_add",
"args": {
"name": "parser",
"role": "owns a part",
"task": "Do the part.",
"goal": "G"
}
},
{
"op": "call",
"by": "lead",
"tool": "team_send",
"args": {
"to": [
"parser",
"ghost",
"spook"
],
"message": "x"
}
},
{
"op": "call",
"by": "parser",
"tool": "team_send",
"args": {
"to": [
"parser"
],
"message": "x"
}
},
{
"op": "call",
"by": "parser",
"tool": "team_send",
"args": {
"to": [
"lead",
"parser"
],
"message": "x"
}
},
{
"op": "call",
"by": "lead",
"tool": "team_read",
"args": {}
}
],
"expect": [
{
"result": "Nobody else is on the team yet: add a member with team_add.",
"delivered": {}
},
{
"result": "Added parser (owns a part): it is working. Its report comes to you when it finishes. The team is 2 of 4 agents.",
"delivered": {}
},
{
"result": "No agent called ghost in this team. The team: lead, parser.",
"delivered": {}
},
{
"result": "That is you: send it to someone else.",
"delivered": {}
},
{
"result": "That is you: send it to someone else.",
"delivered": {}
},
{
"room": [],
"delivered": {}
}
]
},
{
"about": "A manager is not sent its members' messages to each other; it reads them with team_read. A member sees what it sent and received; a sub-manager what touches its subtree; the lead all.",
"start": {
"min": 1,
"max": 8,
"capacity": {}
},
"steps": [
{
"op": "call",
"by": "lead",
"tool": "team_add",
"args": {
"name": "api",
"role": "owns a part",
"task": "Do the part.",
"lead": true,
"goal": "Ship v2"
}
},
{
"op": "call",
"by": "lead",
"tool": "team_add",
"args": {
"name": "routes",
"role": "owns a part",
"task": "Do the part.",
"parent": "api"
}
},
{
"op": "call",
"by": "lead",
"tool": "team_add",
"args": {
"name": "db",
"role": "owns a part",
"task": "Do the part.",
"parent": "api"
}
},
{
"op": "call",
"by": "lead",
"tool": "team_add",
"args": {
"name": "web",
"role": "owns a part",
"task": "Do the part."
}
},
{
"op": "call",
"by": "routes",
"tool": "team_send",
"args": {
"to": [
"db"
],
"message": "Which table?"
}
},
{
"op": "call",
"by": "db",
"tool": "team_send",
"args": {
"to": [
"routes"
],
"message": "users."
}
},
{
"op": "call",
"by": "web",
"tool": "team_send",
"args": {
"to": [
"lead"
],
"message": "Mock data ok?"
}
},
{
"op": "call",
"by": "lead",
"tool": "team_send",
"args": {
"to": [
"web"
],
"message": "Yes."
}
},
{
"op": "call",
"by": "web",
"tool": "team_send",
"args": {
"to": [
"routes"
],
"message": "Path for login?"
}
},
{
"op": "call",
"by": "lead",
"tool": "team_read",
"args": {}
},
{
"op": "call",
"by": "api",
"tool": "team_read",
"args": {}
},
{
"op": "call",
"by": "db",
"tool": "team_read",
"args": {}
},
{
"op": "call",
"by": "web",
"tool": "team_read",
"args": {
"since": 3
}
}
],
"expect": [
{
"result": "Added api (owns a part): it is working. Its report comes to you when it finishes. The team is 2 of 8 agents.",
"delivered": {}
},
{
"result": "Added routes (owns a part) under api: it is working. Its report goes to api when it finishes. The team is 3 of 8 agents.",
"delivered": {}
},
{
"result": "Added db (owns a part) under api: it is working. Its report goes to api when it finishes. The team is 4 of 8 agents.",
"delivered": {}
},
{
"result": "Added web (owns a part): it is working. Its report comes to you when it finishes. The team is 5 of 8 agents.",
"delivered": {}
},
{
"result": "Sent to db.",
"delivered": {
"db": [
"[Team message from routes to db:]\nWhich table?"
]
}
},
{
"result": "Sent to routes.",
"delivered": {
"routes": [
"[Team message from db to routes:]\nusers."
]
}
},
{
"result": "Sent to lead.",
"delivered": {
"lead": [
"[Team message from web to lead:]\nMock data ok?"
]
}
},
{
"result": "Sent to web.",
"delivered": {
"web": [
"[Team message from lead to web:]\nYes."
]
}
},
{
"result": "Sent to routes.",
"delivered": {
"routes": [
"[Team message from web to routes:]\nPath for login?"
]
}
},
{
"room": [
{
"n": 1,
"from": "routes",
"to": "db"
},
{
"n": 2,
"from": "db",
"to": "routes"
},
{
"n": 3,
"from": "web",
"to": "lead"
},
{
"n": 4,
"from": "lead",
"to": "web"
},
{
"n": 5,
"from": "web",
"to": "routes"
}
],
"delivered": {}
},
{
"room": [
{
"n": 1,
"from": "routes",
"to": "db"
},
{
"n": 2,
"from": "db",
"to": "routes"
},
{
"n": 5,
"from": "web",
"to": "routes"
}
],
"delivered": {}
},
{
"room": [
{
"n": 1,
"from": "routes",
"to": "db"
},
{
"n": 2,
"from": "db",
"to": "routes"
}
],
"delivered": {}
},
{
"room": [
{
"n": 4,
"from": "lead",
"to": "web"
},
{
"n": 5,
"from": "web",
"to": "routes"
}
],
"delivered": {}
}
]
},
{
"about": "A member's final reply is its report to its manager, under the report mark, and in the room; an empty one says so; a turn that ended at its limit says how.",
"start": {
"min": 1,
"max": 4,
"capacity": {}
},
"steps": [
{
"op": "call",
"by": "lead",
"tool": "team_add",
"args": {
"name": "parser",
"role": "owns a part",
"task": "Do the part.",
"goal": "Ship the parser"
}
},
{
"op": "call",
"by": "lead",
"tool": "team_add",
"args": {
"name": "lexer",
"role": "owns a part",
"task": "Do the part."
}
},
{
"op": "finish",
"by": "lead"
},
{
"op": "finish",
"by": "parser",
"reply": "The parser handles `=>`; tests in tests/parse.test.ts pass."
},
{
"op": "state"
},
{
"op": "finish",
"by": "lexer",
"reply": "",
"reason": "steps"
},
{
"op": "call",
"by": "lead",
"tool": "team_read",
"args": {
"since": 0
}
}
],
"expect": [
{
"result": "Added parser (owns a part): it is working. Its report comes to you when it finishes. The team is 2 of 4 agents.",
"delivered": {}
},
{
"result": "Added lexer (owns a part): it is working. Its report comes to you when it finishes. The team is 3 of 4 agents.",
"delivered": {}
},
{
"delivered": {}
},
{
"delivered": {
"lead": [
"[Team report from parser to lead:]\nThe parser handles `=>`; tests in tests/parse.test.ts pass."
]
}
},
[
{
"name": "lead",
"manager": null,
"state": "working"
},
{
"name": "parser",
"manager": "lead",
"state": "finished"
},
{
"name": "lexer",
"manager": "lead",
"state": "working"
}
],
{
"delivered": {
"lead": [
"[Team report from lexer to lead:]\n(no report)\n\n[ended: steps]"
]
}
},
{
"room": [
{
"n": 1,
"from": "parser",
"to": "lead"
},
{
"n": 2,
"from": "lexer",
"to": "lead"
}
],
"delivered": {}
}
]
},
{
"about": "A sub-manager's members report to it, not to the lead; its own final reply is its report to the lead.",
"start": {
"min": 1,
"max": 5,
"capacity": {}
},
"steps": [
{
"op": "call",
"by": "lead",
"tool": "team_add",
"args": {
"name": "api",
"role": "owns a part",
"task": "Do the part.",
"lead": true,
"goal": "Ship v2"
}
},
{
"op": "call",
"by": "lead",
"tool": "team_add",
"args": {
"name": "routes",
"role": "owns a part",
"task": "Do the part.",
"goal": "The REST API",
"parent": "api"
}
},
{
"op": "finish",
"by": "api",
"reply": ""
},
{
"op": "state"
},
{
"op": "finish",
"by": "routes",
"reply": "Routes done."
},
{
"op": "state"
},
{
"op": "finish",
"by": "api",
"reply": "API done: routes by routes."
}
],
"expect": [
{
"result": "Added api (owns a part): it is working. Its report comes to you when it finishes. The team is 2 of 5 agents.",
"delivered": {}
},
{
"result": "Added routes (owns a part) under api: it is working. Its report goes to api when it finishes. The team is 3 of 5 agents.",
"delivered": {}
},
{
"delivered": {
"lead": [
"[Team report from api to lead:]\n(no report)"
]
}
},
[
{
"name": "lead",
"manager": null,
"state": "working"
},
{
"name": "api",
"manager": "lead",
"state": "finished"
},
{
"name": "routes",
"manager": "api",
"state": "working"
}
],
{
"delivered": {
"api": [
"[Team report from routes to api:]\nRoutes done."
]
}
},
[
{
"name": "lead",
"manager": null,
"state": "working"
},
{
"name": "api",
"manager": "lead",
"state": "working"
},
{
"name": "routes",
"manager": "api",
"state": "finished"
}
],
{
"delivered": {
"lead": [
"[Team report from api to lead:]\nAPI done: routes by routes."
]
}
}
]
},
{
"about": "A message wakes a finished member with its context; its next final reply is its next report.",
"start": {
"min": 1,
"max": 4,
"capacity": {}
},
"steps": [
{
"op": "call",
"by": "lead",
"tool": "team_add",
"args": {
"name": "parser",
"role": "owns a part",
"task": "Do the part.",
"goal": "G"
}
},
{
"op": "finish",
"by": "parser",
"reply": "Done."
},
{
"op": "state"
},
{
"op": "call",
"by": "lead",
"tool": "team_send",
"args": {
"to": [
"parser"
],
"message": "Also handle `<=`."
}
},
{
"op": "state"
},
{
"op": "finish",
"by": "parser",
"reply": "Both done."
}
],
"expect": [
{
"result": "Added parser (owns a part): it is working. Its report comes to you when it finishes. The team is 2 of 4 agents.",
"delivered": {}
},
{
"delivered": {
"lead": [
"[Team report from parser to lead:]\nDone."
]
}
},
[
{
"name": "lead",
"manager": null,
"state": "working"
},
{
"name": "parser",
"manager": "lead",
"state": "finished"
}
],
{
"result": "Sent to parser.",
"delivered": {
"parser": [
"[Team message from lead to parser:]\nAlso handle `<=`."
]
}
},
[
{
"name": "lead",
"manager": null,
"state": "working"
},
{
"name": "parser",
"manager": "lead",
"state": "working"
}
],
{
"delivered": {
"lead": [
"[Team report from parser to lead:]\nBoth done."
]
}
}
]
},
{
"about": "A report wakes the idle lead.",
"start": {
"min": 1,
"max": 4,
"capacity": {}
},
"steps": [
{
"op": "call",
"by": "lead",
"tool": "team_add",
"args": {
"name": "parser",
"role": "owns a part",
"task": "Do the part.",
"goal": "G"
}
},
{
"op": "finish",
"by": "lead"
},
{
"op": "state"
},
{
"op": "finish",
"by": "parser",
"reply": "Done."
},
{
"op": "state"
}
],
"expect": [
{
"result": "Added parser (owns a part): it is working. Its report comes to you when it finishes. The team is 2 of 4 agents.",
"delivered": {}
},
{
"delivered": {}
},
[
{
"name": "lead",
"manager": null,
"state": "idle"
},
{
"name": "parser",
"manager": "lead",
"state": "working"
}
],
{
"delivered": {
"lead": [
"[Team report from parser to lead:]\nDone."
]
}
},
[
{
"name": "lead",
"manager": null,
"state": "working"
},
{
"name": "parser",
"manager": "lead",
"state": "finished"
}
]
]
},
{
"about": "Stopping is the main agent's: a subagent's team_stop is refused. Stopping a subagent stops its subtree; they leave the team, and their names are free again.",
"start": {
"min": 1,
"max": 8,
"capacity": {}
},
"steps": [
{
"op": "call",
"by": "lead",
"tool": "team_add",
"args": {
"name": "api",
"role": "owns a part",
"task": "Do the part.",
"lead": true,
"goal": "Ship v2"
}
},
{
"op": "call",
"by": "lead",
"tool": "team_add",
"args": {
"name": "routes",
"role": "owns a part",
"task": "Do the part.",
"lead": true,
"parent": "api"
}
},
{
"op": "call",
"by": "lead",
"tool": "team_add",
"args": {
"name": "auth",
"role": "owns a part",
"task": "Do the part.",
"parent": "routes"
}
},
{
"op": "call",
"by": "lead",
"tool": "team_add",
"args": {
"name": "db",
"role": "owns a part",
"task": "Do the part.",
"parent": "api"
}
},
{
"op": "call",
"by": "lead",
"tool": "team_add",
"args": {
"name": "web",
"role": "owns a part",
"task": "Do the part."
}
},
{
"op": "call",
"by": "api",
"tool": "team_stop",
"args": {
"name": "web"
}
},
{
"op": "call",
"by": "api",
"tool": "team_stop",
"args": {
"name": "api"
}
},
{
"op": "call",
"by": "api",
"tool": "team_stop",
"args": {
"name": "ghost"
}
},
{
"op": "call",
"by": "lead",
"tool": "team_stop",
"args": {
"name": "routes"
}
},
{
"op": "state"
},
{
"op": "call",
"by": "lead",
"tool": "team_add",
"args": {
"name": "auth",
"role": "owns a part",
"task": "Do the part.",
"parent": "api"
}
},
{
"op": "call",
"by": "lead",
"tool": "team_stop",
"args": {
"name": "all"
}
},
{
"op": "state"
},
{
"op": "call",
"by": "lead",
"tool": "team_stop",
"args": {
"name": "all"
}
}
],
"expect": [
{
"result": "Added api (owns a part): it is working. Its report comes to you when it finishes. The team is 2 of 8 agents.",
"delivered": {}
},
{
"result": "Added routes (owns a part) under api: it is working. Its report goes to api when it finishes. The team is 3 of 8 agents.",
"delivered": {}
},
{
"result": "Added auth (owns a part) under routes: it is working. Its report goes to routes when it finishes. The team is 4 of 8 agents.",
"delivered": {}
},
{
"result": "Added db (owns a part) under api: it is working. Its report goes to api when it finishes. The team is 5 of 8 agents.",
"delivered": {}
},
{
"result": "Added web (owns a part): it is working. Its report comes to you when it finishes. The team is 6 of 8 agents.",
"delivered": {}
},
{
"result": "Only the main agent adds, assigns, replaces and stops subagents: ask it (team_send to lead).",
"delivered": {}
},
{
"result": "Only the main agent adds, assigns, replaces and stops subagents: ask it (team_send to lead).",
"delivered": {}
},
{
"result": "Only the main agent adds, assigns, replaces and stops subagents: ask it (team_send to lead).",
"delivered": {}
},
{
"result": "Stopped routes, auth. The team is 4 of 8 agents.",
"delivered": {}
},
[
{
"name": "lead",
"manager": null,
"state": "working"
},
{
"name": "api",
"manager": "lead",
"state": "working"
},
{
"name": "db",
"manager": "api",
"state": "working"
},
{
"name": "web",
"manager": "lead",
"state": "working"
}
],
{
"result": "Added auth (owns a part) under api: it is working. Its report goes to api when it finishes. The team is 5 of 8 agents.",
"delivered": {}
},
{
"result": "Stopped api, db, auth, web. The team is 1 of 8 agents.",
"delivered": {}
},
[
{
"name": "lead",
"manager": null,
"state": "working"
}
],
{
"result": "No member is under you: there is nobody to stop.",
"delivered": {}
}
]
},
{
"about": "A member the person stopped is said to the lead in a note, with those under it.",
"start": {
"min": 1,
"max": 6,
"capacity": {}
},
"steps": [
{
"op": "user"
},
{
"op": "call",
"by": "lead",
"tool": "team_add",
"args": {
"name": "api",
"role": "owns a part",
"task": "Do the part.",
"lead": true,
"goal": "Ship v2"
}
},
{
"op": "call",
"by": "lead",
"tool": "team_add",
"args": {
"name": "routes",
"role": "owns a part",
"task": "Do the part.",
"parent": "api"
}
},
{
"op": "finish",
"by": "lead"
},
{
"op": "person_stop",
"name": "api"
},
{
"op": "user"
},
{
"op": "state"
}
],
"expect": [
{
"note": "<session-note>\nThe team may have 1 to 6 agents, you included.\n</session-note>"
},
{
"result": "Added api (owns a part): it is working. Its report comes to you when it finishes. The team is 2 of 6 agents.",
"delivered": {}
},
{
"result": "Added routes (owns a part) under api: it is working. Its report goes to api when it finishes. The team is 3 of 6 agents.",
"delivered": {}
},
{
"delivered": {}
},
null,
{
"note": "<session-note>\nThe person stopped api, routes; they have left the team.\n</session-note>"
},
[
{
"name": "lead",
"manager": null,
"state": "working"
}
]
]
},
{
"about": "Past the model's parallel capacity a member waits for a slot; slots free in order as turns end; the lead goes first.",
"start": {
"min": 1,
"max": 6,
"capacity": {
"parallel": 2
}
},
"steps": [
{
"op": "call",
"by": "lead",
"tool": "team_add",
"args": {
"name": "a",
"role": "owns a part",
"task": "Do the part.",
"goal": "G"
}
},
{
"op": "call",
"by": "lead",
"tool": "team_add",
"args": {
"name": "b",
"role": "owns a part",
"task": "Do the part."
}
},
{
"op": "call",
"by": "lead",
"tool": "team_add",
"args": {
"name": "c",
"role": "owns a part",
"task": "Do the part."
}
},
{
"op": "state"
},
{
"op": "finish",
"by": "lead"
},
{
"op": "state"
},
{
"op": "finish",
"by": "a",
"reply": "a done"
},
{
"op": "state"
},
{
"op": "finish",
"by": "b",
"reply": "b done"
},
{
"op": "state"
}
],
"expect": [
{
"result": "Added a (owns a part): it is working. Its report comes to you when it finishes. The team is 2 of 6 agents.",
"delivered": {}
},
{
"result": "Added b (owns a part): it waits for a free slot — the model serves 2 requests at once and all are busy — and starts when one frees. Its report comes to you when it finishes. The team is 3 of 6 agents.",
"delivered": {}
},
{
"result": "Added c (owns a part): it waits for a free slot — the model serves 2 requests at once and all are busy — and starts when one frees. Its report comes to you when it finishes. The team is 4 of 6 agents.",
"delivered": {}
},
[
{
"name": "lead",
"manager": null,
"state": "working"
},
{
"name": "a",
"manager": "lead",
"state": "working"
},
{
"name": "b",
"manager": "lead",
"state": "waiting"
},
{
"name": "c",
"manager": "lead",
"state": "waiting"
}
],
{
"delivered": {}
},
[
{
"name": "lead",
"manager": null,
"state": "idle"
},
{
"name": "a",
"manager": "lead",
"state": "working"
},
{
"name": "b",
"manager": "lead",
"state": "working"
},
{
"name": "c",
"manager": "lead",
"state": "waiting"
}
],
{
"delivered": {
"lead": [
"[Team report from a to lead:]\na done"
]
}
},
[
{
"name": "lead",
"manager": null,
"state": "working"
},
{
"name": "a",
"manager": "lead",
"state": "finished"
},
{
"name": "b",
"manager": "lead",
"state": "working"
},
{
"name": "c",
"manager": "lead",
"state": "waiting"
}
],
{
"delivered": {
"lead": [
"[Team report from b to lead:]\nb done"
]
}
},
[
{
"name": "lead",
"manager": null,
"state": "working"
},
{
"name": "a",
"manager": "lead",
"state": "finished"
},
{
"name": "b",
"manager": "lead",
"state": "finished"
},
{
"name": "c",
"manager": "lead",
"state": "working"
}
]
]
},
{
"about": "A stopped member's slot goes to the next waiting one; a waiting member that is stopped leaves the queue.",
"start": {
"min": 1,
"max": 6,
"capacity": {
"parallel": 2
}
},
"steps": [
{
"op": "call",
"by": "lead",
"tool": "team_add",
"args": {
"name": "a",
"role": "owns a part",
"task": "Do the part.",
"goal": "G"
}
},
{
"op": "call",
"by": "lead",
"tool": "team_add",
"args": {
"name": "b",
"role": "owns a part",
"task": "Do the part."
}
},
{
"op": "call",
"by": "lead",
"tool": "team_add",
"args": {
"name": "c",
"role": "owns a part",
"task": "Do the part."
}
},
{
"op": "call",
"by": "lead",
"tool": "team_stop",
"args": {
"name": "b"
}
},
{
"op": "state"
},
{
"op": "call",
"by": "lead",
"tool": "team_stop",
"args": {
"name": "a"
}
},
{
"op": "state"
}
],
"expect": [
{
"result": "Added a (owns a part): it is working. Its report comes to you when it finishes. The team is 2 of 6 agents.",
"delivered": {}
},
{
"result": "Added b (owns a part): it waits for a free slot — the model serves 2 requests at once and all are busy — and starts when one frees. Its report comes to you when it finishes. The team is 3 of 6 agents.",
"delivered": {}
},
{
"result": "Added c (owns a part): it waits for a free slot — the model serves 2 requests at once and all are busy — and starts when one frees. Its report comes to you when it finishes. The team is 4 of 6 agents.",
"delivered": {}
},
{
"result": "Stopped b. The team is 3 of 6 agents.",
"delivered": {}
},
[
{
"name": "lead",
"manager": null,
"state": "working"
},
{
"name": "a",
"manager": "lead",
"state": "working"
},
{
"name": "c",
"manager": "lead",
"state": "waiting"
}
],
{
"result": "Stopped a. The team is 2 of 6 agents.",
"delivered": {}
},
[
{
"name": "lead",
"manager": null,
"state": "working"
},
{
"name": "c",
"manager": "lead",
"state": "working"
}
]
]
},
{
"about": "A message to a finished member while the model is full: it waits for a slot.",
"start": {
"min": 1,
"max": 6,
"capacity": {
"parallel": 2
}
},
"steps": [
{
"op": "call",
"by": "lead",
"tool": "team_add",
"args": {
"name": "a",
"role": "owns a part",
"task": "Do the part.",
"goal": "G"
}
},
{
"op": "finish",
"by": "a",
"reply": "done"
},
{
"op": "call",
"by": "lead",
"tool": "team_add",
"args": {
"name": "b",
"role": "owns a part",
"task": "Do the part."
}
},
{
"op": "call",
"by": "lead",
"tool": "team_send",
"args": {
"to": [
"a"
],
"message": "One more thing."
}
},
{
"op": "state"
},
{
"op": "finish",
"by": "b",
"reply": "b done"
},
{
"op": "state"
}
],
"expect": [
{
"result": "Added a (owns a part): it is working. Its report comes to you when it finishes. The team is 2 of 6 agents.",
"delivered": {}
},
{
"delivered": {
"lead": [
"[Team report from a to lead:]\ndone"
]
}
},
{
"result": "Added b (owns a part): it is working. Its report comes to you when it finishes. The team is 3 of 6 agents.",
"delivered": {}
},
{
"result": "Sent to a.",
"delivered": {
"a": [
"[Team message from lead to a:]\nOne more thing."
]
}
},
[
{
"name": "lead",
"manager": null,
"state": "working"
},
{
"name": "a",
"manager": "lead",
"state": "waiting"
},
{
"name": "b",
"manager": "lead",
"state": "working"
}
],
{
"delivered": {
"lead": [
"[Team report from b to lead:]\nb done"
]
}
},
[
{
"name": "lead",
"manager": null,
"state": "working"
},
{
"name": "a",
"manager": "lead",
"state": "working"
},
{
"name": "b",
"manager": "lead",
"state": "finished"
}
]
]
},
{
"about": "Spec 3.4.0: only the main agent adds, assigns, replaces, stops and decides; a subagent's call to any of them, or to task, is refused with one text.",
"start": {
"min": 1,
"max": 4,
"capacity": {}
},
"steps": [
{
"op": "call",
"by": "lead",
"tool": "team_add",
"args": {
"name": "api",
"role": "owns a part",
"task": "Do the part.",
"lead": true,
"goal": "Ship v2"
}
},
{
"op": "call",
"by": "api",
"tool": "team_add",
"args": {
"name": "routes",
"role": "owns a part",
"task": "Do the part."
}
},
{
"op": "call",
"by": "api",
"tool": "team_assign",
"args": {
"name": "api",
"task": "x"
}
},
{
"op": "call",
"by": "api",
"tool": "team_replace",
"args": {
"name": "api"
}
},
{
"op": "call",
"by": "api",
"tool": "team_stop",
"args": {
"name": "all"
}
},
{
"op": "call",
"by": "api",
"tool": "team_decide",
"args": {
"id": "r1",
"allow": true
}
},
{
"op": "call",
"by": "api",
"tool": "task",
"args": {
"prompt": "x"
}
},
{
"op": "tree"
}
],
"expect": [
{
"result": "Added api (owns a part): it is working. Its report comes to you when it finishes. The team is 2 of 4 agents.",
"delivered": {}
},
{
"result": "Only the main agent adds, assigns, replaces and stops subagents: ask it (team_send to lead).",
"delivered": {}
},
{
"result": "Only the main agent adds, assigns, replaces and stops subagents: ask it (team_send to lead).",
"delivered": {}
},
{
"result": "Only the main agent adds, assigns, replaces and stops subagents: ask it (team_send to lead).",
"delivered": {}
},
{
"result": "Only the main agent adds, assigns, replaces and stops subagents: ask it (team_send to lead).",
"delivered": {}
},
{
"result": "Only the main agent adds, assigns, replaces and stops subagents: ask it (team_send to lead).",
"delivered": {}
},
{
"result": "Only the main agent adds, assigns, replaces and stops subagents: ask it (team_send to lead).",
"delivered": {}
},
{
"size": 2,
"open_slots": 0,
"agents": [
{
"id": "lead",
"name": "lead",
"parent": null,
"state": "working",
"mode": "edit",
"request": []
},
{
"id": "s1",
"name": "api",
"parent": "lead",
"state": "working",
"mode": "edit",
"request": []
}
],
"ended": []
}
]
},
{
"about": "Spec 3.4.0: a subagent is placed under a sub-manager with parent; parent must be one (lead: true), and the size still counts the whole tree.",
"start": {
"min": 1,
"max": 6,
"capacity": {}
},
"steps": [
{
"op": "call",
"by": "lead",
"tool": "team_add",
"args": {
"name": "api",
"role": "owns a part",
"task": "Do the part.",
"lead": true,
"goal": "Ship v2"
}
},
{
"op": "call",
"by": "lead",
"tool": "team_add",
"args": {
"name": "routes",
"role": "owns a part",
"task": "Do the part.",
"parent": "api"
}
},
{
"op": "call",
"by": "lead",
"tool": "team_add",
"args": {
"name": "auth",
"role": "owns a part",
"task": "Do the part.",
"parent": "routes"
}
},
{
"op": "call",
"by": "lead",
"tool": "team_add",
"args": {
"name": "auth",
"role": "owns a part",
"task": "Do the part.",
"parent": "ghost"
}
},
{
"op": "call",
"by": "lead",
"tool": "team_add",
"args": {
"name": "parent",
"role": "owns a part",
"task": "Do the part."
}
},
{
"op": "call",
"by": "routes",
"tool": "team_send",
"args": {
"to": [
"parent"
],
"message": "Routes are in."
}
},
{
"op": "call",
"by": "lead",
"tool": "team_send",
"args": {
"to": [
"parent"
],
"message": "Hello?"
}
},
{
"op": "finish",
"by": "routes",
"reply": "Routes done."
},
{
"op": "tree"
}
],
"expect": [
{
"result": "Added api (owns a part): it is working. Its report comes to you when it finishes. The team is 2 of 6 agents.",
"delivered": {}
},
{
"result": "Added routes (owns a part) under api: it is working. Its report goes to api when it finishes. The team is 3 of 6 agents.",
"delivered": {}
},
{
"result": "routes is not a sub-manager: place a subagent under the main agent (lead) or under one added with lead: true.",
"delivered": {}
},
{
"result": "No agent called ghost in this team. The team: lead, api, routes.",
"delivered": {}
},
{
"result": "There is already an agent called parent in this team. Choose another name.",
"delivered": {}
},
{
"result": "Sent to api.",
"delivered": {
"api": [
"[Team message from routes to api:]\nRoutes are in."
]
}
},
{
"result": "You are the main agent: you have no parent.",
"delivered": {}
},
{
"delivered": {
"api": [
"[Team report from routes to api:]\nRoutes done."
]
}
},
{
"size": 3,
"open_slots": 0,
"agents": [
{
"id": "lead",
"name": "lead",
"parent": null,
"state": "working",
"mode": "edit",
"request": []
},
{
"id": "s1",
"name": "api",
"parent": "lead",
"state": "working",
"mode": "edit",
"request": []
},
{
"id": "s2",
"name": "routes",
"parent": "api",
"state": "finished",
"mode": "edit",
"request": []
}
],
"ended": []
}
]
},
{
"about": "Spec 3.4.0: Min above 1 opens min − 1 slots from the start of the reply; each subagent added fills one, and the note says how many the person opened.",
"start": {
"min": 3,
"max": 4,
"capacity": {}
},
"steps": [
{
"op": "user"
},
{
"op": "tree"
},
{
"op": "call",
"by": "lead",
"tool": "team_add",
"args": {
"name": "api",
"role": "owns a part",
"task": "Do the part.",
"goal": "Ship v2"
}
},
{
"op": "tree"
},
{
"op": "call",
"by": "lead",
"tool": "team_add",
"args": {
"name": "web",
"role": "owns a part",
"task": "Do the part."
}
},
{
"op": "call",
"by": "lead",
"tool": "team_add",
"args": {
"name": "docs",
"role": "owns a part",
"task": "Do the part."
}
},
{
"op": "tree"
}
],
"expect": [
{
"note": "<session-note>\nThe team may have 3 to 4 agents, you included.\nWork through subagents from the start: you lead, and they do the work. The person opened 2 slots for them: fill them with team_add.\n</session-note>"
},
{
"size": 1,
"open_slots": 2,
"agents": [
{
"id": "lead",
"name": "lead",
"parent": null,
"state": "working",
"mode": "edit",
"request": []
}
],
"ended": []
},
{
"result": "Added api (owns a part): it is working. Its report comes to you when it finishes. The team is 2 of 4 agents.",
"delivered": {}
},
{
"size": 2,
"open_slots": 1,
"agents": [
{
"id": "lead",
"name": "lead",
"parent": null,
"state": "working",
"mode": "edit",
"request": []
},
{
"id": "s1",
"name": "api",
"parent": "lead",
"state": "working",
"mode": "edit",
"request": []
}
],
"ended": []
},
{
"result": "Added web (owns a part): it is working. Its report comes to you when it finishes. The team is 3 of 4 agents.",
"delivered": {}
},
{
"result": "Added docs (owns a part): it is working. Its report comes to you when it finishes. The team is 4 of 4 agents.",
"delivered": {}
},
{
"size": 4,
"open_slots": 0,
"agents": [
{
"id": "lead",
"name": "lead",
"parent": null,
"state": "working",
"mode": "edit",
"request": []
},
{
"id": "s1",
"name": "api",
"parent": "lead",
"state": "working",
"mode": "edit",
"request": []
},
{
"id": "s2",
"name": "web",
"parent": "lead",
"state": "working",
"mode": "edit",
"request": []
},
{
"id": "s3",
"name": "docs",
"parent": "lead",
"state": "working",
"mode": "edit",
"request": []
}
],
"ended": []
}
]
},
{
"about": "Spec 3.4.0: a subagent's mode is its parent's or stricter; request options only with a stricter one; a main agent made stricter reaches down the tree.",
"start": {
"min": 1,
"max": 6,
"capacity": {},
"mode": "edit"
},
"steps": [
{
"op": "call",
"by": "lead",
"tool": "team_add",
"args": {
"name": "api",
"role": "owns a part",
"task": "Do the part.",
"lead": true,
"goal": "Ship v2",
"mode": "auto"
}
},
{
"op": "call",
"by": "lead",
"tool": "team_add",
"args": {
"name": "api",
"role": "owns a part",
"task": "Do the part.",
"lead": true,
"mode": "manual",
"request": [
"write"
],
"goal": "Ship v2"
}
},
{
"op": "call",
"by": "lead",
"tool": "team_add",
"args": {
"name": "routes",
"role": "owns a part",
"task": "Do the part.",
"parent": "api",
"mode": "edit",
"goal": "Ship v2"
}
},
{
"op": "call",
"by": "lead",
"tool": "team_add",
"args": {
"name": "routes",
"role": "owns a part",
"task": "Do the part.",
"parent": "api",
"mode": "plan",
"request": [
"execute"
],
"goal": "Ship v2"
}
},
{
"op": "call",
"by": "lead",
"tool": "team_add",
"args": {
"name": "web",
"role": "owns a part",
"task": "Do the part.",
"request": [
"write"
],
"goal": "Ship v2"
}
},
{
"op": "call",
"by": "lead",
"tool": "team_add",
"args": {
"name": "web",
"role": "owns a part",
"task": "Do the part.",
"goal": "Ship v2"
}
},
{
"op": "tree"
},
{
"op": "main_mode",
"mode": "manual"
},
{
"op": "tree"
}
],
"expect": [
{
"result": "A subagent's mode cannot be looser than its parent's (edit).",
"delivered": {}
},
{
"result": "Added api (owns a part): it is working. Its report comes to you when it finishes. The team is 2 of 6 agents.",
"delivered": {}
},
{
"result": "A subagent's mode cannot be looser than its parent's (manual).",
"delivered": {}
},
{
"result": "Added routes (owns a part) under api: it is working. Its report goes to api when it finishes. The team is 3 of 6 agents.",
"delivered": {}
},
{
"result": "Request options go with a mode stricter than the parent's: without one there is nothing to ask for.",
"delivered": {}
},
{
"result": "Added web (owns a part): it is working. Its report comes to you when it finishes. The team is 4 of 6 agents.",
"delivered": {}
},
{
"size": 4,
"open_slots": 0,
"agents": [
{
"id": "lead",
"name": "lead",
"parent": null,
"state": "working",
"mode": "edit",
"request": []
},
{
"id": "s1",
"name": "api",
"parent": "lead",
"state": "working",
"mode": "manual",
"request": [
"write"
]
},
{
"id": "s2",
"name": "routes",
"parent": "api",
"state": "working",
"mode": "plan",
"request": [
"execute"
]
},
{
"id": "s3",
"name": "web",
"parent": "lead",
"state": "working",
"mode": "edit",
"request": []
}
],
"ended": []
},
null,
{
"size": 4,
"open_slots": 0,
"agents": [
{
"id": "lead",
"name": "lead",
"parent": null,
"state": "working",
"mode": "manual",
"request": []
},
{
"id": "s1",
"name": "api",
"parent": "lead",
"state": "working",
"mode": "manual",
"request": [
"write"
]
},
{
"id": "s2",
"name": "routes",
"parent": "api",
"state": "working",
"mode": "plan",
"request": [
"execute"
]
},
{
"id": "s3",
"name": "web",
"parent": "lead",
"state": "working",
"mode": "manual",
"request": []
}
],
"ended": []
}
]
},
{
"about": "Spec 3.4.0: team_whoami says who the caller is, its mode and request options, its limits and its context use; the main agent has no parent or task line.",
"start": {
"min": 1,
"max": 4,
"capacity": {},
"mode": "edit"
},
"steps": [
{
"op": "call",
"by": "lead",
"tool": "team_add",
"args": {
"name": "parser",
"role": "reviews the parser",
"task": "Review src/parse.ts.\nReport what is wrong.",
"goal": "Ship v2",
"mode": "manual",
"request": [
"write"
]
}
},
{
"op": "context",
"by": "parser",
"used": 1000,
"window": 4000
},
{
"op": "call",
"by": "parser",
"tool": "team_whoami",
"args": {}
},
{
"op": "call",
"by": "lead",
"tool": "team_whoami",
"args": {}
}
],
"expect": [
{
"result": "Added parser (reviews the parser): it is working. Its report comes to you when it finishes. The team is 2 of 4 agents.",
"delivered": {}
},
null,
{
"result": "You are parser (s1): reviews the parser.\nYour parent: lead.\nYour task: Review src/parse.ts.\nYour mode: manual.\nYou may ask the main agent for: write (team_request).\nYour model: m.\nLimits: the team is 2 of 4 agents; at most 50 steps a turn; only the main agent adds subagents.\nContext: 1000 of 4000 tokens (25%).",
"delivered": {}
},
{
"result": "You are lead (lead): the main agent.\nYour mode: edit.\nYour model: m.\nLimits: the team is 2 of 4 agents; at most 200 steps a turn; you add subagents.",
"delivered": {}
}
]
},
{
"about": "Spec 3.4.0: team_finish reports to the parent and ends the subagent: it leaves the size, its name is free again with a new id, and it stays in the tree's ended list.",
"start": {
"min": 1,
"max": 4,
"capacity": {}
},
"steps": [
{
"op": "call",
"by": "lead",
"tool": "team_add",
"args": {
"name": "api",
"role": "owns a part",
"task": "Do the part.",
"goal": "Ship v2"
}
},
{
"op": "call",
"by": "api",
"tool": "team_finish",
"args": {
"report": "All done: see src/api.ts:12."
}
},
{
"op": "tree"
},
{
"op": "call",
"by": "lead",
"tool": "team_send",
"args": {
"to": [
"api"
],
"message": "One more thing."
}
},
{
"op": "call",
"by": "lead",
"tool": "team_add",
"args": {
"name": "api",
"role": "owns a part",
"task": "Do the part."
}
},
{
"op": "tree"
}
],
"expect": [
{
"result": "Added api (owns a part): it is working. Its report comes to you when it finishes. The team is 2 of 4 agents.",
"delivered": {}
},
{
"result": "Reported to lead. Your task is done: stop here.",
"delivered": {
"lead": [
"[Team report from api to lead:]\nAll done: see src/api.ts:12."
]
}
},
{
"size": 1,
"open_slots": 0,
"agents": [
{
"id": "lead",
"name": "lead",
"parent": null,
"state": "working",
"mode": "edit",
"request": []
}
],
"ended": [
{
"id": "s1",
"name": "api",
"state": "done"
}
]
},
{
"result": "No agent called api in this team. The team: lead.",
"delivered": {}
},
{
"result": "Added api (owns a part): it is working. Its report comes to you when it finishes. The team is 2 of 4 agents.",
"delivered": {}
},
{
"size": 2,
"open_slots": 0,
"agents": [
{
"id": "lead",
"name": "lead",
"parent": null,
"state": "working",
"mode": "edit",
"request": []
},
{
"id": "s2",
"name": "api",
"parent": "lead",
"state": "working",
"mode": "edit",
"request": []
}
],
"ended": [
{
"id": "s1",
"name": "api",
"state": "done"
}
]
}
]
},
{
"about": "Spec 3.4.0: findings are kept beyond an agent's end; the agent, the subagents above it and the main agent read them; nobody else.",
"start": {
"min": 1,
"max": 6,
"capacity": {}
},
"steps": [
{
"op": "call",
"by": "lead",
"tool": "team_add",
"args": {
"name": "api",
"role": "owns a part",
"task": "Do the part.",
"lead": true,
"goal": "Ship v2"
}
},
{
"op": "call",
"by": "lead",
"tool": "team_add",
"args": {
"name": "routes",
"role": "owns a part",
"task": "Do the part.",
"parent": "api"
}
},
{
"op": "call",
"by": "lead",
"tool": "team_add",
"args": {
"name": "web",
"role": "owns a part",
"task": "Do the part."
}
},
{
"op": "call",
"by": "routes",
"tool": "team_findings",
"args": {
"action": "write",
"text": "Login is POST /session."
}
},
{
"op": "call",
"by": "routes",
"tool": "team_findings",
"args": {
"action": "write",
"text": "Tokens expire after 1h."
}
},
{
"op": "call",
"by": "routes",
"tool": "team_findings",
"args": {
"action": "read"
}
},
{
"op": "call",
"by": "api",
"tool": "team_findings",
"args": {
"action": "read",
"of": "routes"
}
},
{
"op": "call",
"by": "web",
"tool": "team_findings",
"args": {
"action": "read",
"of": "routes"
}
},
{
"op": "call",
"by": "web",
"tool": "team_findings",
"args": {
"action": "read"
}
},
{
"op": "call",
"by": "routes",
"tool": "team_finish",
"args": {
"report": "Done."
}
},
{
"op": "call",
"by": "lead",
"tool": "team_findings",
"args": {
"action": "read",
"of": "s2"
}
}
],
"expect": [
{
"result": "Added api (owns a part): it is working. Its report comes to you when it finishes. The team is 2 of 6 agents.",
"delivered": {}
},
{
"result": "Added routes (owns a part) under api: it is working. Its report goes to api when it finishes. The team is 3 of 6 agents.",
"delivered": {}
},
{
"result": "Added web (owns a part): it is working. Its report comes to you when it finishes. The team is 4 of 6 agents.",
"delivered": {}
},
{
"result": "Noted (finding 1).",
"delivered": {}
},
{
"result": "Noted (finding 2).",
"delivered": {}
},
{
"result": "Findings of routes (s2):\n1. Login is POST /session.\n2. Tokens expire after 1h.",
"delivered": {}
},
{
"result": "Findings of routes (s2):\n1. Login is POST /session.\n2. Tokens expire after 1h.",
"delivered": {}
},
{
"result": "You may read only your own findings and those of the subagents under you.",
"delivered": {}
},
{
"result": "Findings of web (s3):\n(no findings)",
"delivered": {}
},
{
"result": "Reported to api. Your task is done: stop here.",
"delivered": {
"api": [
"[Team report from routes to api:]\nDone."
]
}
},
{
"result": "Findings of routes (s2):\n1. Login is POST /session.\n2. Tokens expire after 1h.",
"delivered": {}
}
]
},
{
"about": "Spec 3.4.0: when a subagent's context fills it is paused and given one final turn; a message to it then stays in the room; when that turn ends it is out of context and its parent gets the notice and its last reply as its report. The main agent replaces it: the same name and position, a new id, briefed with the task and the findings.",
"start": {
"min": 1,
"max": 4,
"capacity": {}
},
"steps": [
{
"op": "call",
"by": "lead",
"tool": "team_add",
"args": {
"name": "api",
"role": "owns a part",
"task": "Write the API.",
"goal": "Ship v2"
}
},
{
"op": "call",
"by": "api",
"tool": "team_findings",
"args": {
"action": "write",
"text": "Half the routes are done."
}
},
{
"op": "context_full",
"by": "api"
},
{
"op": "state"
},
{
"op": "call",
"by": "lead",
"tool": "team_send",
"args": {
"to": [
"api"
],
"message": "How far?"
}
},
{
"op": "finish",
"by": "api",
"reply": "Saved; the rest is the auth routes."
},
{
"op": "tree"
},
{
"op": "call",
"by": "lead",
"tool": "team_replace",
"args": {
"name": "api"
}
},
{
"op": "started",
"by": "api"
},
{
"op": "tree"
}
],
"expect": [
{
"result": "Added api (owns a part): it is working. Its report comes to you when it finishes. The team is 2 of 4 agents.",
"delivered": {}
},
{
"result": "Noted (finding 1).",
"delivered": {}
},
{
"delivered": {
"api": [
"[Team notice to api: your context is full]\nSave what you found with team_findings, then tell your parent with team_send that you are gone and what is left undone. This is your last turn: at most 8 steps."
]
}
},
[
{
"name": "lead",
"manager": null,
"state": "working"
},
{
"name": "api",
"manager": "lead",
"state": "paused"
}
],
{
"result": "Sent to api.",
"delivered": {}
},
{
"delivered": {
"lead": [
"[Team report from api to lead:]\napi (s1) ran out of context and has ended. Its findings: team_findings with of api.\n\nSaved; the rest is the auth routes."
]
}
},
{
"size": 1,
"open_slots": 0,
"agents": [
{
"id": "lead",
"name": "lead",
"parent": null,
"state": "working",
"mode": "edit",
"request": []
}
],
"ended": [
{
"id": "s1",
"name": "api",
"state": "out_of_context"
}
]
},
{
"result": "Replaced api: s2 takes its place, briefed with its task and findings. The team is 2 of 4 agents.",
"delivered": {}
},
{
"text": "Write the API.\n\nYou take over from api (s1), which ended. What it found:\n1. Half the routes are done."
},
{
"size": 2,
"open_slots": 0,
"agents": [
{
"id": "lead",
"name": "lead",
"parent": null,
"state": "working",
"mode": "edit",
"request": []
},
{
"id": "s2",
"name": "api",
"parent": "lead",
"state": "working",
"mode": "edit",
"request": []
}
],
"ended": [
{
"id": "s1",
"name": "api",
"state": "out_of_context"
}
]
}
]
},
{
"about": "Spec 3.4.0: a narrowed subagent asks the main agent with team_request (only for a kind in its options); the main agent decides once, and the subagent is told under the decision mark.",
"start": {
"min": 1,
"max": 4,
"capacity": {},
"mode": "auto"
},
"steps": [
{
"op": "call",
"by": "lead",
"tool": "team_add",
"args": {
"name": "ops",
"role": "owns a part",
"task": "Do the part.",
"goal": "Ship v2",
"mode": "edit",
"request": [
"execute"
]
}
},
{
"op": "call",
"by": "ops",
"tool": "team_request",
"args": {
"tool": "edit",
"pattern": "src/a.ts",
"why": "to fix it"
}
},
{
"op": "call",
"by": "ops",
"tool": "team_request",
"args": {
"tool": "bash",
"pattern": "git push *",
"why": "to publish the branch"
}
},
{
"op": "call",
"by": "lead",
"tool": "team_decide",
"args": {
"id": "r1",
"allow": true,
"note": "Only to origin."
}
},
{
"op": "call",
"by": "lead",
"tool": "team_decide",
"args": {
"id": "r1",
"allow": false
}
},
{
"op": "call",
"by": "ops",
"tool": "team_request",
"args": {
"tool": "bash",
"pattern": "rm -rf build",
"why": "clean"
}
},
{
"op": "call",
"by": "lead",
"tool": "team_decide",
"args": {
"id": "r2",
"allow": false
}
}
],
"expect": [
{
"result": "Added ops (owns a part): it is working. Its report comes to you when it finishes. The team is 2 of 4 agents.",
"delivered": {}
},
{
"result": "You may not ask for edit: your request options are execute.",
"delivered": {}
},
{
"result": "Asked the main agent (r1): you are told its decision. Carry on with what you can meanwhile.",
"delivered": {
"lead": [
"[Team request r1 from ops to lead:]\nbash git push * — to publish the branch"
]
}
},
{
"result": "Allowed r1 for ops.",
"delivered": {
"ops": [
"[Team decision on r1 from lead to ops:]\nAllowed: bash git push *. Try it again now.\n\nOnly to origin."
]
}
},
{
"result": "No open request r1.",
"delivered": {}
},
{
"result": "Asked the main agent (r2): you are told its decision. Carry on with what you can meanwhile.",
"delivered": {
"lead": [
"[Team request r2 from ops to lead:]\nbash rm -rf build — clean"
]
}
},
{
"result": "Refused r2 for ops.",
"delivered": {
"ops": [
"[Team decision on r2 from lead to ops:]\nRefused: bash rm -rf build."
]
}
}
]
},
{
"about": "Spec 3.4.0: team_assign gives a subagent new work (it is told, and woken), may move it under another sub-manager, never under its own subtree, and never to one that ended.",
"start": {
"min": 1,
"max": 6,
"capacity": {}
},
"steps": [
{
"op": "call",
"by": "lead",
"tool": "team_add",
"args": {
"name": "api",
"role": "owns a part",
"task": "Do the part.",
"lead": true,
"goal": "Ship v2"
}
},
{
"op": "call",
"by": "lead",
"tool": "team_add",
"args": {
"name": "routes",
"role": "owns a part",
"task": "Do the part.",
"lead": true,
"parent": "api"
}
},
{
"op": "call",
"by": "lead",
"tool": "team_add",
"args": {
"name": "web",
"role": "owns a part",
"task": "Do the part."
}
},
{
"op": "finish",
"by": "web",
"reply": "Web done."
},
{
"op": "call",
"by": "lead",
"tool": "team_assign",
"args": {
"name": "web",
"task": "Now the docs.",
"role": "writes the docs"
}
},
{
"op": "state"
},
{
"op": "call",
"by": "lead",
"tool": "team_assign",
"args": {
"name": "api",
"task": "x",
"parent": "routes"
}
},
{
"op": "call",
"by": "lead",
"tool": "team_assign",
"args": {
"name": "web",
"task": "x",
"parent": "routes",
"mode": "auto"
}
},
{
"op": "call",
"by": "lead",
"tool": "team_assign",
"args": {
"name": "web",
"task": "Help with routes.",
"parent": "routes"
}
},
{
"op": "call",
"by": "web",
"tool": "team_finish",
"args": {
"report": "ok"
}
},
{
"op": "call",
"by": "lead",
"tool": "team_assign",
"args": {
"name": "web",
"task": "again"
}
},
{
"op": "tree"
}
],
"expect": [
{
"result": "Added api (owns a part): it is working. Its report comes to you when it finishes. The team is 2 of 6 agents.",
"delivered": {}
},
{
"result": "Added routes (owns a part) under api: it is working. Its report goes to api when it finishes. The team is 3 of 6 agents.",
"delivered": {}
},
{
"result": "Added web (owns a part): it is working. Its report comes to you when it finishes. The team is 4 of 6 agents.",
"delivered": {}
},
{
"delivered": {
"lead": [
"[Team report from web to lead:]\nWeb done."
]
}
},
{
"result": "Assigned to web: it is told now.",
"delivered": {
"web": [
"[Team assignment from lead to web:]\nNow the docs."
]
}
},
[
{
"name": "lead",
"manager": null,
"state": "working"
},
{
"name": "api",
"manager": "lead",
"state": "working"
},
{
"name": "routes",
"manager": "api",
"state": "working"
},
{
"name": "web",
"manager": "lead",
"state": "working"
}
],
{
"result": "api cannot go under routes: that is under it.",
"delivered": {}
},
{
"result": "A subagent's mode cannot be looser than its parent's (edit).",
"delivered": {}
},
{
"result": "Assigned to web: it is told now.",
"delivered": {
"web": [
"[Team assignment from lead to web:]\nHelp with routes."
]
}
},
{
"result": "Reported to routes. Your task is done: stop here.",
"delivered": {
"routes": [
"[Team report from web to routes:]\nok"
]
}
},
{
"result": "web has ended: replace it (team_replace) or add another.",
"delivered": {}
},
{
"size": 3,
"open_slots": 0,
"agents": [
{
"id": "lead",
"name": "lead",
"parent": null,
"state": "working",
"mode": "edit",
"request": []
},
{
"id": "s1",
"name": "api",
"parent": "lead",
"state": "working",
"mode": "edit",
"request": []
},
{
"id": "s2",
"name": "routes",
"parent": "api",
"state": "working",
"mode": "edit",
"request": []
}
],
"ended": [
{
"id": "s3",
"name": "web",
"state": "done"
}
]
}
]
}
]
}