Merge branch 'web2-todo' into feat/todo-multi-in-progress
Stack the parallel-in_progress change on the web todo display (#497): the GUI is now the surface where several active items are visible, so the two land as a chain rather than colliding on tool-todo at merge time. Conflicts combined rather than resolved to one side: tool-todo keeps this branch's parallel-allowing validation AND web2-todo's additionalProperties unknown-key rejection, in src/index.ts and both README sides; the spec drops web2-todo's 'two in_progress' rejection case and keeps its unknown-key case; the two headless advanced-toolchain session fixtures keep this branch's parallel transcripts.
This commit is contained in:
@@ -16,11 +16,11 @@ The list belongs to the ONE agent session that called the tool. There is no suba
|
||||
|
||||
## Validation
|
||||
|
||||
Beyond the schema's type/required/enum checks, `execute` rejects an empty or duplicate `content`. Any number of tasks may be `in_progress` at once — parallel work (concurrent subagents, background commands) legitimately runs several tasks simultaneously. Ordering and the discipline of keeping the list current are left to the model via the tool description.
|
||||
Beyond the schema's type/required/enum checks, `execute` rejects an empty or duplicate `content`, and any item key beyond `content`/`status` — an extended item shape (ids, nesting) fails loud instead of silently flattening, keeping the logged snapshot equal to what the model believes it wrote. Any number of tasks may be `in_progress` at once — parallel work (concurrent subagents, background commands) legitimately runs several tasks simultaneously. Ordering and the discipline of keeping the list current are left to the model via the tool description.
|
||||
|
||||
## Rendering
|
||||
|
||||
The canonical result is `{ todos, counts: { pending, inProgress, completed } }`; its Native renderer returns the compact update acknowledgement. The tool also writes the full `todo/write` session event. UIs subscribe to the event stream and render that durable list themselves; the [TUI app](../../examples/tui-demo) shows it as a persistent plan.
|
||||
The canonical result is `{ todos, counts: { pending, inProgress, completed } }`; its Native renderer returns the compact update acknowledgement. The tool also writes the full `todo/write` session event. UIs subscribe to the event stream and render that durable list themselves: the [TUI app](../../examples/tui-demo) shows it as a persistent plan, and the [web client](../../client/ui-conversation) renders a plan strip plus a dedicated tool row off `ConversationSnapshot.todos` ([Agent Note](../../../.agents/notes/implemented/feature/2026-07-23-web-todo-display.md)).
|
||||
|
||||
## Export shape
|
||||
|
||||
|
||||
Reference in New Issue
Block a user