* Add opt-in browser tools for desktop tabs Adds the daemon opt-in, desktop tab routing, MCP tools, and real browser automation surfaces for Paseo desktop browser tabs. * Fix browser tools CI expectations * Address browser tools review findings * Restrict browser file automation paths * Fix browser upload test on Windows * Harden browser navigation inputs * Make browser tools create usable tabs * Update browser MCP empty-state test * Fail browser tab creation when registration times out * Fix browser screenshots for agents * Hide disabled browser tools from agents * Address browser tools architecture review * Replace browser tools review tests * Wrap browser tab registration errors * Mock Expo Router in app unit tests * Handle invalid browser automation requests * Return browser failure on desktop disconnect * Update browser disconnect websocket test * Relax browser timeout polling test * Handle invalid browser responses * Return browser failure when send fails * Remove local diagnostics and fixture paths * Fix dev service home fallback * Use worktree home for dev services * Use managed daemon in desktop dev * fix(browser): keep agent tabs addressable Track agent-active browser targets separately from human-focused tabs and keep resident webviews alive for automation. Browser tool visibility now comes from registration while the broker reports disabled execution. * refactor(browser): register tools through catalog Move browser tool registration onto the shared Paseo tool catalog so the MCP server remains only the transport adapter. * fix(settings): translate browser tools host error
2.6 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: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
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=1npx vitest run packages/server/src/server/agent/providers/opencode-agent.error-handling.real.e2e.test.ts --maxWorkers=1npx vitest run packages/server/src/server/daemon-e2e/opencode-initial-prompt-wait.real.e2e.test.ts --maxWorkers=1