feat(opencode): integrate native goals and clearing
Route OpenCode /goal messages to its native command endpoint and map its plugin RPC updates onto Artisan’s goal strip. Goals support pause, resume, completion and clearing; the clear control works during a run and while the session is idle. Active goals keep their server alive while background work finishes, and child goals stay under their agent.
Synchronize command snapshots with their streamed changes so queued older events cannot end a resumed goal. Ordinary prompts continue to work with older OpenCode builds.
Requires an OpenCode release containing native /goal support; the fork sync is artisanstreet/opencode#2.
Validation: 30 OpenCode-related adapter tests and all 95 Forge run tests passed from a clean checkout based on origin/master. Clippy passed for both crates with warnings denied.
![View with [code]smith](https://pr-comments-assets.blacksmith.sh/codesmith/view-with-codesmith-dark-v3-3x.png)
![Autofix with [code]smith](https://pr-comments-assets.blacksmith.sh/codesmith/autofix-with-codesmith-dark-3x.png)
Need help on this PR? Tag @codesmith-bot with what you need.
Summary by cubic
Routes OpenCode /goal messages to its native command endpoint and maps its plugin RPC updates onto Artisan's goal strip. Goals support pause, resume, completion, and clearing; clear works during a run and while the session is idle. Active goals keep their server alive while background work finishes, and child goals stay under their agent.
Synchronizes command snapshots with streamed changes so queued older events can't end a resumed goal. Ordinary prompts keep working with older OpenCode builds that lack native /goal support. This requires an OpenCode release containing native /goal support (fork sync: artisanstreet/opencode#2).