ci / check (push) Waiting to run
progress.md: thirteen fixed phases (queued … failed), each { phase, since, data },
their texts as shared i18n keys (loop.json progress), one line every client draws,
sent beside the old status text in /api/v2 and over the link (capability progress).
subagents.md §5–§13 (supersedes team.md where they differ): only the main agent
adds, assigns, replaces, stops and decides; sub-managers direct those placed under
them; ids, positions, parents; Min above 1 opens slots; permissions inherited and
never widened, request options decided by the main agent, what nobody in the tree
can allow goes to the person; team_finish, findings, running out of context;
transcripts read-only; the tree over the link (capability tree). New tools
team_whoami, team_finish, team_findings, team_request, team_decide, team_assign,
team_replace. Conformance: progress, delegation; team updated.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
334 lines
8.7 KiB
JSON
334 lines
8.7 KiB
JSON
{
|
||
"about": "Progress (progress.md, spec 3.4.0): the text and the line every client draws for a progress object. `progress`: the object; `now`: the client's clock (Unix ms). Expect `text` — the phase's text from loop.json progress.texts, its fields filled (numbers written plainly: integers as they are, a rate with one decimal) — and `line` — `{{text}} · {{elapsed}}` with elapsed = now − since in whole seconds (5s, 1m 05s, 1h 02m), or the text alone for stopped and failed. retrying's `in` is counted down: in − floor((now − since) / 1000), never below 0. LLeMbas: services/progress.py; CLI: session/progress.ts.",
|
||
"cases": [
|
||
{
|
||
"about": "Queued, nothing more known.",
|
||
"progress": {
|
||
"phase": "queued",
|
||
"since": 1762790400000
|
||
},
|
||
"now": 1762790405000,
|
||
"expect": {
|
||
"text": "Queued",
|
||
"line": "Queued · 5s"
|
||
}
|
||
},
|
||
{
|
||
"about": "Queued behind two turns.",
|
||
"progress": {
|
||
"phase": "queued",
|
||
"since": 1762790400000,
|
||
"ahead": 2
|
||
},
|
||
"now": 1762790465000,
|
||
"expect": {
|
||
"text": "Queued: 2 ahead",
|
||
"line": "Queued: 2 ahead · 1m 05s"
|
||
}
|
||
},
|
||
{
|
||
"about": "A one-request server answering another request.",
|
||
"progress": {
|
||
"phase": "waiting_for_model",
|
||
"since": 1762790400000,
|
||
"model": "Qwen 27B",
|
||
"reason": "busy"
|
||
},
|
||
"now": 1762790412400,
|
||
"expect": {
|
||
"text": "Waiting for Qwen 27B: it serves one request at a time and is answering another",
|
||
"line": "Waiting for Qwen 27B: it serves one request at a time and is answering another · 12s"
|
||
}
|
||
},
|
||
{
|
||
"about": "Every slot taken.",
|
||
"progress": {
|
||
"phase": "waiting_for_model",
|
||
"since": 1762790400000,
|
||
"model": "coder",
|
||
"reason": "slots"
|
||
},
|
||
"now": 1762790401000,
|
||
"expect": {
|
||
"text": "Waiting for coder: all its slots are in use",
|
||
"line": "Waiting for coder: all its slots are in use · 1s"
|
||
}
|
||
},
|
||
{
|
||
"about": "Another model on the one-model server.",
|
||
"progress": {
|
||
"phase": "waiting_for_model",
|
||
"since": 1762790400000,
|
||
"model": "coder",
|
||
"reason": "group"
|
||
},
|
||
"now": 1762790400000,
|
||
"expect": {
|
||
"text": "Waiting for coder: its server holds another model now",
|
||
"line": "Waiting for coder: its server holds another model now · 0s"
|
||
}
|
||
},
|
||
{
|
||
"about": "Loading.",
|
||
"progress": {
|
||
"phase": "loading_model",
|
||
"since": 1762790400000,
|
||
"model": "Gemma 12B"
|
||
},
|
||
"now": 1762794125000,
|
||
"expect": {
|
||
"text": "Loading Gemma 12B",
|
||
"line": "Loading Gemma 12B · 1h 02m"
|
||
}
|
||
},
|
||
{
|
||
"about": "Reading the prompt: the percentage is floored.",
|
||
"progress": {
|
||
"phase": "reading_prompt",
|
||
"since": 1762790400000,
|
||
"done": 1999,
|
||
"total": 3000
|
||
},
|
||
"now": 1762790402000,
|
||
"expect": {
|
||
"text": "Reading the prompt: 1999 / 3000 tokens (66%)",
|
||
"line": "Reading the prompt: 1999 / 3000 tokens (66%) · 2s"
|
||
}
|
||
},
|
||
{
|
||
"about": "Reading the prompt with no counts from the server.",
|
||
"progress": {
|
||
"phase": "reading_prompt",
|
||
"since": 1762790400000
|
||
},
|
||
"now": 1762790402000,
|
||
"expect": {
|
||
"text": "Reading the prompt",
|
||
"line": "Reading the prompt · 2s"
|
||
}
|
||
},
|
||
{
|
||
"about": "Thinking.",
|
||
"progress": {
|
||
"phase": "thinking",
|
||
"since": 1762790400000
|
||
},
|
||
"now": 1762790459999,
|
||
"expect": {
|
||
"text": "Thinking",
|
||
"line": "Thinking · 59s"
|
||
}
|
||
},
|
||
{
|
||
"about": "Writing, the rate with one decimal.",
|
||
"progress": {
|
||
"phase": "writing",
|
||
"since": 1762790400000,
|
||
"rate": 12.46
|
||
},
|
||
"now": 1762790404000,
|
||
"expect": {
|
||
"text": "Writing: 12.5 tok/s",
|
||
"line": "Writing: 12.5 tok/s · 4s"
|
||
}
|
||
},
|
||
{
|
||
"about": "Writing before a rate is measured.",
|
||
"progress": {
|
||
"phase": "writing",
|
||
"since": 1762790400000
|
||
},
|
||
"now": 1762790400400,
|
||
"expect": {
|
||
"text": "Writing",
|
||
"line": "Writing · 0s"
|
||
}
|
||
},
|
||
{
|
||
"about": "A tool with what it does.",
|
||
"progress": {
|
||
"phase": "running_tool",
|
||
"since": 1762790400000,
|
||
"tool": "bash",
|
||
"what": "bun test"
|
||
},
|
||
"now": 1762790461000,
|
||
"expect": {
|
||
"text": "Running bash: bun test",
|
||
"line": "Running bash: bun test · 1m 01s"
|
||
}
|
||
},
|
||
{
|
||
"about": "A tool without a title.",
|
||
"progress": {
|
||
"phase": "running_tool",
|
||
"since": 1762790400000,
|
||
"tool": "recall"
|
||
},
|
||
"now": 1762790401000,
|
||
"expect": {
|
||
"text": "Running recall",
|
||
"line": "Running recall · 1s"
|
||
}
|
||
},
|
||
{
|
||
"about": "An approval, naming the tool.",
|
||
"progress": {
|
||
"phase": "waiting_for_person",
|
||
"since": 1762790400000,
|
||
"what": "approval",
|
||
"tool": "bash"
|
||
},
|
||
"now": 1762790430000,
|
||
"expect": {
|
||
"text": "Waiting for you: allow bash?",
|
||
"line": "Waiting for you: allow bash? · 30s"
|
||
}
|
||
},
|
||
{
|
||
"about": "An approval with no tool named.",
|
||
"progress": {
|
||
"phase": "waiting_for_person",
|
||
"since": 1762790400000,
|
||
"what": "approval"
|
||
},
|
||
"now": 1762790400000,
|
||
"expect": {
|
||
"text": "Waiting for you: an approval",
|
||
"line": "Waiting for you: an approval · 0s"
|
||
}
|
||
},
|
||
{
|
||
"about": "A question.",
|
||
"progress": {
|
||
"phase": "waiting_for_person",
|
||
"since": 1762790400000,
|
||
"what": "question"
|
||
},
|
||
"now": 1762790403000,
|
||
"expect": {
|
||
"text": "Waiting for you: a question",
|
||
"line": "Waiting for you: a question · 3s"
|
||
}
|
||
},
|
||
{
|
||
"about": "The plan.",
|
||
"progress": {
|
||
"phase": "waiting_for_person",
|
||
"since": 1762790400000,
|
||
"what": "plan"
|
||
},
|
||
"now": 1762790403000,
|
||
"expect": {
|
||
"text": "Waiting for you: the plan",
|
||
"line": "Waiting for you: the plan · 3s"
|
||
}
|
||
},
|
||
{
|
||
"about": "Subagents.",
|
||
"progress": {
|
||
"phase": "waiting_for_subagents",
|
||
"since": 1762790400000,
|
||
"running": 3
|
||
},
|
||
"now": 1762790490000,
|
||
"expect": {
|
||
"text": "Waiting for subagents: 3 running",
|
||
"line": "Waiting for subagents: 3 running · 1m 30s"
|
||
}
|
||
},
|
||
{
|
||
"about": "Compacting.",
|
||
"progress": {
|
||
"phase": "compacting",
|
||
"since": 1762790400000
|
||
},
|
||
"now": 1762790407000,
|
||
"expect": {
|
||
"text": "Compacting the conversation",
|
||
"line": "Compacting the conversation · 7s"
|
||
}
|
||
},
|
||
{
|
||
"about": "Retrying: `in` counts down from since.",
|
||
"progress": {
|
||
"phase": "retrying",
|
||
"since": 1762790400000,
|
||
"reason": "502 Bad Gateway",
|
||
"in": 10,
|
||
"attempt": 2
|
||
},
|
||
"now": 1762790403000,
|
||
"expect": {
|
||
"text": "Retrying in 7 s: 502 Bad Gateway",
|
||
"line": "Retrying in 7 s: 502 Bad Gateway · 3s"
|
||
}
|
||
},
|
||
{
|
||
"about": "Retrying: never below 0.",
|
||
"progress": {
|
||
"phase": "retrying",
|
||
"since": 1762790400000,
|
||
"reason": "overloaded",
|
||
"in": 2
|
||
},
|
||
"now": 1762790405000,
|
||
"expect": {
|
||
"text": "Retrying in 0 s: overloaded",
|
||
"line": "Retrying in 0 s: overloaded · 5s"
|
||
}
|
||
},
|
||
{
|
||
"about": "Stopped draws no elapsed time.",
|
||
"progress": {
|
||
"phase": "stopped",
|
||
"since": 1762790400000
|
||
},
|
||
"now": 1762790405000,
|
||
"expect": {
|
||
"text": "Stopped",
|
||
"line": "Stopped"
|
||
}
|
||
},
|
||
{
|
||
"about": "Stopped by the person.",
|
||
"progress": {
|
||
"phase": "stopped",
|
||
"since": 1762790400000,
|
||
"reason": "person"
|
||
},
|
||
"now": 1762790405000,
|
||
"expect": {
|
||
"text": "Stopped: by you",
|
||
"line": "Stopped: by you"
|
||
}
|
||
},
|
||
{
|
||
"about": "Stopped at the step limit.",
|
||
"progress": {
|
||
"phase": "stopped",
|
||
"since": 1762790400000,
|
||
"reason": "steps"
|
||
},
|
||
"now": 1762790400000,
|
||
"expect": {
|
||
"text": "Stopped: step limit",
|
||
"line": "Stopped: step limit"
|
||
}
|
||
},
|
||
{
|
||
"about": "Failed.",
|
||
"progress": {
|
||
"phase": "failed",
|
||
"since": 1762790400000,
|
||
"reason": "connection refused"
|
||
},
|
||
"now": 1762790405000,
|
||
"expect": {
|
||
"text": "Failed: connection refused",
|
||
"line": "Failed: connection refused"
|
||
}
|
||
}
|
||
]
|
||
}
|