Add scratchpad_delete MCP tool

Mirrors the existing scratchpad_* tools end-to-end: catalog schema,
dispatch, ToolHost.ScratchpadDelete, and a host method that delegates to
scratchpad.Store.Delete and fires scratchpadsChanged() on success so the
sidebar refreshes. Missing-pad errors surface rather than being masked.

Resolves the [MCP SCRATCHPAD DELETE] TODO item.
This commit is contained in:
2026-05-25 12:23:58 +01:00
parent f61788eff2
commit 96f7c66d5f
6 changed files with 146 additions and 5 deletions

69
TODO.md
View File

@@ -1,5 +1,74 @@
- [ ] We should deduplicate /r/n newlines or /n newlines to save tokens on mcp responses for terminal reads.
- [ ] Codex idle detection seems to trigger too soon, see below [CODEX IDLE]
- [ ] Issue with mcp timing out [MCP TIMEOUT]
- [ ] I have to run the close action twice on opencode for it to actually close the tab.
- [ ] When opening a codex sub agent, the message gets input to the field, but the message is never submitted.
- This appears to be inconsistent. Sometimes it works, sometimes it doesn't. Might be because of popups on codex sub agents?
- Question: when it fails, is a Codex startup popup visible (trust/workspace, auth/model selection, permissions), or is the normal composer focused?
- Question: if the message is sitting in the composer, does pressing Enter once manually submit it, or does something else need to be dismissed first?
- Question: does this happen with short one-line prompts as well as long/multiline sub-agent instructions?
# [CODEX IDLE]
Crunched for 1m 57s │
│ Agent Tree
codex-implement is idle. Read your own pane for the [sub-agent:codex-implement] reply. │ ─────────────────────────
│ ▎ ○ claude ⏱ 59m
Called patterm, searched memories (ctrl+o to expand) │ ● codex-implement-2
● Bash(git -C /home/harry/Dev/popdog/.worktrees/harvester-issue-136-kick-segment-repair log -3 --oneline && git -C /home/harry/Dev/popdog/.worktrees/harvester-issue-13…) │ Issue #136 plan drafted
 9604013 fix(youtube): finalize segments on ghost-cleanup path (#120) │ in scratchpad;
6da9125 fix(kick): bump KickCategoryAuditor MaxPerCycle to 500 (#135) │ verification sub-agent
db149e6 fix(twitch): enqueue stream segment repairs (#134) │
 Allowed by auto mode classifier │ Scratchpads
│ ─────────────────────────
● No commits in the worktree. Let me check the codex-implement pane. │ 0027-review
│ 569-state
Called patterm (ctrl+o to expand) │ db-infra-options
│ db-perf-batching-plan
● Codex exited mid-update prompting "Please restart Codex." Let me spawn a fresh one — the update is now installed. │ e2e-canonicalisation-ru…
│ issue-136-kick-segment-…
Called patterm 3 times (ctrl+o to expand) │ pg-stat-optimization-de…
│ pg-stat-statements-find…
● Fresh codex-implement-2 spawned. Waiting. │ pr-569-stream-category-…
│ stream-category-cutover…
✻ Sautéed for 55s │
codex-implement-2 is idle. Read your own pane for the [sub-agent:codex-implement-2] reply. │
● Bash(git log -3 --oneline && echo "---STATUS---" && git status -s && echo "---BRANCH---" && git branch -vv && echo "---REMOTE---" && git ls-remote origin fix/kick-se…) │
 9604013 fix(youtube): finalize segments on ghost-cleanup path (#120) │
6da9125 fix(kick): bump KickCategoryAuditor MaxPerCycle to 500 (#135) │
db149e6 fix(twitch): enqueue stream segment repairs (#134) │
… +44 lines (ctrl+o to expand) │
 Allowed by auto mode classifier │
 Interrupted · What should Claude do instead? │
it's still running. │
● Got it — re-scheduling the wait. │
Called patterm (ctrl+o to expand) │
● Waiting for codex-implement-2 to finish. │
✻ Sautéed for 12s │
7 tasks (5 done, 1 in progress, 1 open) │
◼ Spawn codex sub-agent to implement plan │
◻ Open PR for issue 136 │
✔ Read GitHub issue 136 and gather reference code │
✔ Set up worktree for issue 136 implementation │
✔ Draft implementation plan │
… +2 completed │
# [MCP TIMEOUT]
⚙ patterm_send_input [key=enter, kind=key, process_id=p_a6726d, submit=false, tail_mode=stream, text=, wait_ms=1000] │
⚙ patterm_wait_for_pattern [pattern=Findings|No findings|No issues|Residual risk, process_id=p_a6726d, scope=scrollback, timeout_seconds=300] │
MCP error -32001: Request timed out │
⚙ patterm_get_process_status [process_id=p_a6726d] │
MCP error -32001: Request timed out │