Lint: eslint --fix over the merge-crossed projection/command files (arrow parens, trailing commas, unnecessary assertions), Extract<> replaces the keyof-map & string intersections no-redundant-type-constituents rejects, the fold-adapter's merge loop drops its non-null assertions for a bounds-carrying cursor, one JSDoc line wrapped under max-len (api-catalog regenerated). Snapshots: the four TUI goldens re-recorded for the merged event-count shift (the durable command lifecycle adds one event to the seeded diagnostics log). The headless advanced-toolchain snapshot passes on CI and fails locally in this sandbox both with and without these changes (30s child timeout — environment-bound, tracked in the ledger).
todo/ — todo / planning capability family
English | 中文
The model-facing todo tool. A single product package — there is no interface/implementation seam here, because the list is single-owner session state (one agent session owns its own list), not a swappable capability.
| Package | Role | ctx key |
|---|---|---|
tool-todo/ |
Model-facing todo_write tool; writes the whole list to the session log (todo/write) |
(registers on ctx.tools) |
The list lives on the event-sourced session log (SessionEventMap['todo/write'], owned by dsh-session); this package is the thin consumer that appends the snapshot. UIs such as the TUI app and the host/client runtime render the durable list from session events.