5269d2ac3d
The registry's validateArgs rejects a bad `status` enum before execute runs, so the in-body re-check (`status !== 'pending' && …` → throw) was unreachable dead code — line 70 was uncovered, failing the per-file 100% coverage gate. Narrow the registry-guaranteed value with `status as TodoItem['status']` instead of re-validating it, mirroring tool-bash (which only checks what the DSL can't express). The malformed-status test still passes — it exercises the registry's rejection, the actual path. Coverage back to 100%.
todo/ — todo / planning capability family
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 render off session/event: the stdio UI prints the list, the ACP bridge maps it to a plan sessionUpdate.