Motivation
Agents currently have write-only breakpoints: set_breakpoint exists, but there is no way to enumerate what is set, remove one, or clear all without tearing down the session. Long agentic debugging sessions accumulate stale breakpoints that cause confusing extra pauses; bisection workflows (move the window each iteration) need cheap removal.
Proposed API
list_breakpoints {sessionId} → [{id, file, line, condition?, logMessage?, verified}]
remove_breakpoint {sessionId, breakpointId} (or {file, line})
clear_breakpoints {sessionId, file?} — all breakpoints, or all in one file
Implementation sketch
Breakpoints are already tracked per-session in the session store (queued + verified state). Listing is a read of that store; removal re-sends DAP setBreakpoints for the affected file with the remaining set (DAP replaces the file's whole array, so removal = re-send minus one).
Acceptance criteria
- list reflects verified state and includes adapter-assigned ids.
- remove/clear take effect immediately while paused or running.
- Unit tests over the session store diff logic; e2e for at least Python + mock adapter.
Motivation
Agents currently have write-only breakpoints:
set_breakpointexists, but there is no way to enumerate what is set, remove one, or clear all without tearing down the session. Long agentic debugging sessions accumulate stale breakpoints that cause confusing extra pauses; bisection workflows (move the window each iteration) need cheap removal.Proposed API
list_breakpoints {sessionId}→[{id, file, line, condition?, logMessage?, verified}]remove_breakpoint {sessionId, breakpointId}(or{file, line})clear_breakpoints {sessionId, file?}— all breakpoints, or all in one fileImplementation sketch
Breakpoints are already tracked per-session in the session store (queued + verified state). Listing is a read of that store; removal re-sends DAP
setBreakpointsfor the affected file with the remaining set (DAP replaces the file's whole array, so removal = re-send minus one).Acceptance criteria