opencode: pair every subagent start with one stop

Commit

peyton-altyesterday

A command subtask (subtask: true) fires tool.execute.before/after with the task part's id, while its part carries a generated callID, so the start and stop opened two task records and one stayed in flight. An aborted or failed task call skips tool.execute.after entirely, so its record never stopped.

The plugin now keeps each announced task's payload until it stops, maps a subtask's part id back to the announced callID, and stops an announced task whose part ends in error. A stop that arrives before the running part is announced suppresses the late start.

Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com Entire-Checkpoint: 01M472PCQK56PMGTCG0TCR2M77

Checkpoints

OpenCode Subagent Start and Stop Pairing

Claude CodeOpus 5.5
View session
Checkpoint 1