* Use OpenCode global event stream * Use stable OpenCode model in initial prompt e2e * Clean up OpenCode verification notes
2.7 KiB
OpenCode Global Event Verification
Date: 2026-05-11
Objective
Replace the OpenCode provider's per-directory /event stream with OpenCode's /global/event stream and remove the EOF polling recovery path that was added for the /event regression.
Environment
opencode --version:1.14.46which opencode:/Users/moboudra/.asdf/installs/nodejs/22.20.0/bin/opencodenode --version:v22.20.0npm --version:10.9.3
Each OpenCode test file was run independently with:
/opt/homebrew/bin/timeout 420s npx vitest run <file> --maxWorkers=1 --minWorkers=1
Baseline
Before the provider change, the OpenCode matrix had 16 passing files and 4 failing files:
packages/cli/tests/e2e/opencode-invalid-model.test.ts: Vitest reports "No test suite found in file".packages/server/src/server/agent/providers/opencode-agent.test.ts:plan mode blocks edits while build mode can write filesdid not observe a completed tool call.packages/server/src/server/daemon-e2e/opencode-initial-prompt-wait.real.e2e.test.ts: brittle unavailable-model assertion received an auth failure from the upstream API.packages/server/src/server/daemon-e2e/opencode-send-interrupt.real.e2e.test.ts: timed out waiting for an interrupted sleep tool call, even though the recent bash tool call status wasfailed.
Post-Change Result
After switching to /global/event, removing polling recovery, and replacing the brittle initial-prompt model case with opencode/big-pickle, the OpenCode matrix had 18 passing files and 2 baseline-equivalent failing files:
packages/cli/tests/e2e/opencode-invalid-model.test.ts: unchanged; Vitest still reports "No test suite found in file".packages/server/src/server/daemon-e2e/opencode-send-interrupt.real.e2e.test.ts: unchanged; still times out after the interrupted sleep tool call is already markedfailed.
The previously failing provider unit file now passes, and packages/server/src/server/daemon-e2e/opencode-initial-prompt-wait.real.e2e.test.ts passes with opencode/big-pickle.
One live reasoning-dedup matrix run returned no reasoning content; an immediate targeted rerun passed. This appears model-output dependent rather than related to the event-stream change.
Focused Verification
npm run typechecknpm run lintgit diff --checknpx vitest run packages/server/src/server/agent/providers/opencode-agent.test.ts --maxWorkers=1 --minWorkers=1npx vitest run packages/server/src/server/agent/providers/opencode-agent.error-handling.real.e2e.test.ts --maxWorkers=1 --minWorkers=1npx vitest run packages/server/src/server/daemon-e2e/opencode-initial-prompt-wait.real.e2e.test.ts --maxWorkers=1 --minWorkers=1