feat(tools): hide todo_* aliases from model catalog, add deprecation metadata (#2682)

- Add model_visible() hook to ToolSpec trait (default true)
- Override model_visible() -> false on todo_write, todo_add, todo_update, todo_list
- Checklist variants remain model-visible as the canonical surface
- Legacy todo_* calls still work for saved transcript replay
- Return _deprecation metadata with use_instead and removed_in=0.9.0
- Update prompts to recommend checklist_* only
- Update TOOL_SURFACE.md with v0.9.0 deprecation notes
- Add tests for hidden catalog, compat alias behavior, and metadata

Verification: cargo test -p codewhale-tui -- todo, cargo clippy -D warnings
This commit is contained in:
Hunter B
2026-06-03 19:20:23 -07:00
parent 8dff2f7525
commit f7a602cd20
6 changed files with 158 additions and 8 deletions
+6 -1
View File
@@ -110,9 +110,14 @@ to the model, such as `mcp_<server>_<tool>`.
| `task_cancel` | Cancel a queued or running durable task. Approval-required. |
| `checklist_write` | Granular progress under the active thread/task. Checklist state is subordinate to the durable task. |
| `checklist_add` / `checklist_update` / `checklist_list` | Single-item checklist operations. |
| `todo_write` / `todo_add` / `todo_update` / `todo_list` | Compatibility aliases for the checklist tools. Existing sessions keep working, but new prompts should use `checklist_*`. |
| `note` | One-off important fact for later. |
The legacy `todo_write`, `todo_add`, `todo_update`, and `todo_list` names are
hidden compatibility aliases for saved transcript replay. They remain callable
by exact name, but they are not part of the model-visible catalog; compatibility
results include `_deprecation.use_instead = checklist_*` and
`_deprecation.removed_in = 0.9.0`.
### Verification gates and artifacts
| Tool | Niche |