ci / check (push) Waiting to run
acp.md *Subagents in an agent chat*: capability agents carries the chat's {min, max} (and
subagents: false) down on every turn and _lembas/configure, said (the person's earlier words)
on session/new; the tree, progress, approvals, findings and transcripts come up; what the server
keeps. subagents.md §14. team.json: ten 3.4.0 cases (only the main agent, sub-managers and parent,
slots, modes and request options, whoami, finish, findings, running out of context and replacing,
requests and decisions, assign); a member's own task is refused only_main. subagents.md: the
subagents under a sub-manager that ended by itself move under its parent until it is replaced.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
4959 lines
122 KiB
JSON
4959 lines
122 KiB
JSON
{
|
||
"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). 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): 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 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): 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": "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): 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": "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): 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": "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): 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 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): 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": "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): 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": "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): 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"
|
||
}
|
||
]
|
||
]
|
||
},
|
||
{
|
||
"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): it is working. Its report comes to you 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): it is working. Its report comes to you 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): 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": "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): 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": {}
|
||
},
|
||
{
|
||
"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"
|
||
}
|
||
]
|
||
}
|
||
]
|
||
}
|
||
]
|
||
}
|