Files
LLeMbas-CLI/harness/conformance/team.json
T
HomerandClaude Opus 5.5 880289970b Harness spec 3.2.0: teams — subagents that work together
team.md: a lead adds members (team_add) that work in the background on
the parts they own; members may lead areas of their own. The chat
setting agents {min, max} (defaults 1/4, an instance cap of 32) bounds
the whole tree, task helpers included; a team is offered only where
subagents are enabled and the model serves two requests at once
(capacity.parallel). A manager's work calls — risk write or execute,
bar job_stop and reading bash — answer a fixed refusal while the tool
list stays unchanged. The room: team_send to names or all, delivered
under "[Team message from X to Y:]" at the next step or waking a
finished member; a member's final reply is its report to its manager;
team_read shows the tree and the visible part of the room; team_stop
stops a subtree. Past the model's capacity a member waits for a slot,
the lead first. Size notes in context.note; texts in loop.json team;
prompts blocks/team_lead.md and team_member.md; tools allowed by
default. Conformance area team, written from a reference model.

The CLI embeds the new tool and prompt files; its tools are pending.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-09 08:17:48 +00:00

3333 lines
80 KiB
JSON

{
"about": "Teams (team.md, spec 3.2.0): 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. 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 helper that counts toward the size (and holds a slot) until `helper_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). 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_read",
"team_send",
"team_stop"
],
"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_read",
"team_send",
"team_stop"
],
"setting": true
}
]
},
{
"about": "A model that serves one request at a time 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_read",
"team_send",
"team_stop"
],
"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_read",
"team_send",
"team_stop"
],
"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 member that may not lead has team_send and team_read; one that may lead has all four.",
"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_read",
"team_send"
],
"setting": true
},
{
"tools": [
"team_add",
"team_read",
"team_send",
"team_stop"
],
"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 a team from the start: you lead, and members do the work — at least 2 of them.\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 a team from the start: you lead, and members do the work — at least 1 of them.\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: a member that leads adds 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": "backend",
"tool": "team_add",
"args": {
"name": "db",
"role": "owns a part",
"task": "Do the part."
}
},
{
"op": "call",
"by": "lead",
"tool": "team_add",
"args": {
"name": "frontend",
"role": "owns a part",
"task": "Do the part."
}
},
{
"op": "call",
"by": "backend",
"tool": "team_add",
"args": {
"name": "api",
"role": "owns a part",
"task": "Do the part."
}
},
{
"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): it is working. Its report comes to you 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 helper counts toward max while it runs, inside a team.",
"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": "helper_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": "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": {}
},
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": "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 member works; a member that leads becomes a manager when it adds one; stopping all its members 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": "api",
"tool": "team_add",
"args": {
"name": "routes",
"role": "owns a part",
"task": "Do the part."
}
},
{
"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): it is working. Its report comes to you 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": "api",
"tool": "team_add",
"args": {
"name": "routes",
"role": "owns a part",
"task": "Do the part."
}
},
{
"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): it is working. Its report comes to you 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": "api",
"tool": "team_add",
"args": {
"name": "routes",
"role": "owns a part",
"task": "Do the part."
}
},
{
"op": "call",
"by": "api",
"tool": "team_add",
"args": {
"name": "db",
"role": "owns a part",
"task": "Do the part."
}
},
{
"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): it is working. Its report comes to you when it finishes. The team is 3 of 8 agents.",
"delivered": {}
},
{
"result": "Added db (owns a part): it is working. Its report comes to you 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": "api",
"tool": "team_add",
"args": {
"name": "routes",
"role": "owns a part",
"task": "Do the part.",
"goal": "The REST 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): it is working. Its report comes to you 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 a member stops its subtree; they leave the team, and their names are free again. Only members under the caller may be stopped.",
"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": "api",
"tool": "team_add",
"args": {
"name": "routes",
"role": "owns a part",
"task": "Do the part.",
"lead": true
}
},
{
"op": "call",
"by": "routes",
"tool": "team_add",
"args": {
"name": "auth",
"role": "owns a part",
"task": "Do the part."
}
},
{
"op": "call",
"by": "api",
"tool": "team_add",
"args": {
"name": "db",
"role": "owns a part",
"task": "Do the part."
}
},
{
"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": "api",
"tool": "team_stop",
"args": {
"name": "routes"
}
},
{
"op": "state"
},
{
"op": "call",
"by": "api",
"tool": "team_add",
"args": {
"name": "auth",
"role": "owns a part",
"task": "Do the part."
}
},
{
"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): it is working. Its report comes to you when it finishes. The team is 3 of 8 agents.",
"delivered": {}
},
{
"result": "Added auth (owns a part): it is working. Its report comes to you when it finishes. The team is 4 of 8 agents.",
"delivered": {}
},
{
"result": "Added db (owns a part): it is working. Its report comes to you 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": "web is not under you: you can stop only the members you lead, directly or through your members.",
"delivered": {}
},
{
"result": "api is not under you: you can stop only the members you lead, directly or through your members.",
"delivered": {}
},
{
"result": "No agent called ghost in this team. The team: lead, api, routes, auth, db, web.",
"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): it is working. Its report comes to you 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": "api",
"tool": "team_add",
"args": {
"name": "routes",
"role": "owns a part",
"task": "Do the part."
}
},
{
"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): it is working. Its report comes to you 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"
}
]
]
}
]
}