On the server's /api/v2 (3.4.0, server dev 5d7b79c):
- The activity panel reads GET /chats/{chat}/tree beside the activity and
draws ui/js/tree.js's rows in a Subagents section, the server panel's words
and layout: nested by parent, position, phase, context %, state, model,
mode + request options, messages and the last one, open slots, the ended
ones folded and dimmed. A team's members are no longer drawn again among
the tasks. The stream's `tree` frame redraws it.
- A subagent's conversation (/subagents/{id}/transcript, read again every 3 s
while it works) and its findings open read-only in the panel; Stop asks,
then POSTs /stop. With an agent chat's device away: the kept tree with the
server's note, and its 409 sentence for the rest.
- A new agent chat's Subagents chip from /models?kind=agent&device= (each
model's `subagents`, `agent_subagents.offered` and `device_runs`); an open
agent chat's from its own `subagents`, as before.
- An approval item's `subagent` names it on the card.
- Progress keys are the spec's own ({{field}}), as the server's catalogues
have them; SERVER_PENDING is gone, every sentence is translated.
tests/ui reads the server's contract fixtures (scripts/fetch-fixtures.sh ->
tests/ui/fixtures, SOURCE says the commit): status frames, tree, tree frame,
transcript, findings, models?kind=agent, a subagent's approval; six C4 cases.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
82 lines
1.5 KiB
JSON
82 lines
1.5 KiB
JSON
{
|
|
"models": [
|
|
{
|
|
"id": "qwen",
|
|
"name": "Qwen",
|
|
"vision": false,
|
|
"tools": true,
|
|
"efforts": [
|
|
"medium"
|
|
],
|
|
"thinking_switch": true,
|
|
"levels": [
|
|
"off",
|
|
"medium"
|
|
],
|
|
"effort": "medium",
|
|
"control": "switch",
|
|
"parallel": 2,
|
|
"context": 131072,
|
|
"image": "/api/v2/models/images/0a1b2c3d4e5f.png",
|
|
"default": true,
|
|
"subagents": {
|
|
"offered": true,
|
|
"named_only": false
|
|
}
|
|
},
|
|
{
|
|
"id": "gpt-oss",
|
|
"name": "gpt-oss",
|
|
"vision": false,
|
|
"tools": true,
|
|
"efforts": [
|
|
"low",
|
|
"medium",
|
|
"high"
|
|
],
|
|
"thinking_switch": false,
|
|
"levels": [
|
|
"low",
|
|
"medium",
|
|
"high"
|
|
],
|
|
"effort": "high",
|
|
"control": "slider",
|
|
"parallel": 1,
|
|
"context": 0,
|
|
"image": null,
|
|
"default": false,
|
|
"subagents": {
|
|
"offered": true,
|
|
"named_only": false
|
|
}
|
|
},
|
|
{
|
|
"id": "vision-small",
|
|
"name": "Vision",
|
|
"vision": true,
|
|
"tools": false,
|
|
"efforts": [],
|
|
"thinking_switch": false,
|
|
"levels": [
|
|
"default"
|
|
],
|
|
"effort": "default",
|
|
"control": "none",
|
|
"parallel": null,
|
|
"context": 8192,
|
|
"image": null,
|
|
"default": false,
|
|
"subagents": {
|
|
"offered": true,
|
|
"named_only": false
|
|
}
|
|
}
|
|
],
|
|
"subagents_cap": 32,
|
|
"agent_subagents": {
|
|
"offered": true,
|
|
"device_runs": true
|
|
}
|
|
}
|