Fix download reservation and default-reset behaviors (#35)
7 months ago
Authored
Max Weinbach* Add OpenCode Zen provider
* Add downloads to webFetch
* Update webFetch to use Exa contents
* Add tool output overflow spill files
* Add tool output overflow handling
* Review agent-coworker fixes
* Fix desktop persistence globals
* Limit scratchpad backup exclusions
* Fix webFetch markdown download
* Fix OpenCode Zen endpoint routing
* Address review follow-ups for webFetch and spill previews
- document opencode-go as usage-based and intentionally excluded from local pricing overrides
- prefer saved Exa credentials and harden webFetch download routing, streaming cleanup, and bounded body-less fallbacks
- standardize 5,000-char spill previews across runtime, desktop copy, docs, and regression coverage
* Claim download paths securely
* Fix CI tests with OPENCODE flag
* Fix session_busy cancel test
* Add logging to failing tests
* Fix overflow defaults on dev page
Parent1b7f520
124 files changed
- .github/workflows/ci.yml+6−1
- .gitignore+1−0
- AGENTS.md+6−0
- README.md+1−1
- apps/TUI/context/syncTypes.ts+1−0
- apps/desktop/electron/services/persistence.ts+8−0
- apps/desktop/src/app/store.actions/bootstrap.ts+9−0
- apps/desktop/src/app/store.actions/provider.ts+43−1
apps/desktop/src/app/store.actions/workspace.ts+1−1apps/desktop/src/app/store.actions/workspaceDefaults.ts+39−14apps/desktop/src/app/store.feedMapping.ts+35−10apps/desktop/src/app/store.helpers.ts+3−1apps/desktop/src/app/store.helpers/controlSocket.ts+1−0apps/desktop/src/app/store.helpers/threadEventReducer.ts+2−1apps/desktop/src/app/types.ts+5−0apps/desktop/src/lib/desktopSchemas.ts+8−0apps/desktop/src/lib/wsProtocol.ts+1−0apps/desktop/src/ui/ChatView.tsx+2−0apps/desktop/src/ui/settings/pages/DeveloperPage.tsx+198−0apps/desktop/src/ui/settings/pages/ProvidersPage.tsx+36−0apps/desktop/src/ui/settings/pages/WorkspacesPage.tsx+2−0apps/desktop/test/desktop-schemas.test.ts+3−0apps/desktop/test/developer-page.test.tsx+396−0apps/desktop/test/persistence-state-sanitization.test.ts+56−0apps/desktop/test/protocol-v2-events.test.ts+24−17apps/desktop/test/providers-page.test.ts+99−0apps/desktop/test/store-feed-mapping.test.ts+146−0apps/desktop/test/workspace-settings-sync.test.ts+206−9apps/desktop/test/workspace-startup.test.ts+1−0bun.lock+14−18config/defaults.json+1−0docs/websocket-protocol.md+73−17prompts/system-models/claude-haiku-4-5.md+4−3prompts/system-models/claude-opus-4-6.md+4−3prompts/system-models/claude-sonnet-4-6.md+4−3prompts/system-models/gemini-3-flash-preview.md+2−2prompts/system-models/gemini-3-pro-preview.md+4−3prompts/system-models/gemini-3.1-pro-preview.md+4−1prompts/system-models/gpt-5.2.md+4−3prompts/system-models/gpt-5.4.md+4−3prompts/system.md+4−3src/client/agentSocket.ts+25−8src/config.ts+32−0src/mcp/oauthProvider.ts+3−2src/providers/authRegistry.ts+49−0src/providers/catalog.ts+15−0src/providers/connectionCatalog.ts+3−0src/providers/index.ts+6−0src/providers/modelAdapter.ts+33−0src/providers/opencode-go.ts+8−0src/providers/opencode-zen.ts+8−0src/providers/opencodeShared.ts+237−0src/runtime/openaiResponsesProjector.ts+3−2src/runtime/piRuntime.ts+79−8src/runtime/piRuntimeOptions.ts+1−1src/runtime/toolOutputOverflow.ts+181−0src/server/protocol.ts+12−1src/server/protocolEventParser.ts+2−0src/server/protocolParser.ts+55−1src/server/session/AgentSession.ts+4−0src/server/session/ProviderAuthManager.ts+99−0src/server/session/SessionContext.ts+5−1src/server/session/SessionMetadataManager.ts+41−0src/server/sessionBackup/fileSystem.ts+26−5src/server/sessionBackup/fingerprint.ts+3−0src/server/sessionBackup/snapshot.ts+7−1src/server/sessionTitleService.ts+2−0src/server/startServer.ts+43−9src/server/startServer/dispatchClientMessage.ts+2−0src/session/pricing.ts+39−0src/shared/persistentSubagents.ts+2−2src/shared/toolOutputOverflow.ts+13−0src/tools/bash.ts+3−4src/tools/exa.ts+165−0src/tools/grep.ts+2−2src/tools/webFetch.ts+592−91src/tools/webSearch.ts+52−97src/types.ts+15−0src/utils/browser.ts+12−1tasks/lessons.md+15−0tasks/todo.md+606−0test/agentSocket.parse.test.ts+45−0test/agentSocket.runtime.test.ts+475−50test/atomicFile.test.ts+98−0test/config.test.ts+35−0test/connect.test.ts+99−0test/decode-client-message.test.ts+47−0test/mcp.oauth-provider.test.ts+77−63test/mcp.remote.grep.test.ts+0−1test/modelStreamReplay.test.ts+101−0test/prompt.test.ts+26−6test/protocol.test.ts+67−0test/providerStatus.test.ts+48−0test/providers/auth-registry.test.ts+270−3test/providers/connection-catalog.test.ts+91−1test/providers/cross-provider.test.ts+10−0test/providers/index.test.ts+44−0test/providers/modelAdapter.test.ts+121−0test/providers/saved-keys.test.ts+124−0test/repl.disconnect-send.test.ts+148−60test/repl.prompt-controller.test.ts+88−0test/repl.restart-failure.test.ts+154−67test/runtime.openai-responses-runtime.test.ts+142−0test/runtime.pi-message-bridge.test.ts+16−0test/runtime.pi-runtime.test.ts+318−0test/runtime.selection.test.ts+20−0test/server.commands.test.ts+51−0test/server.model-stream.test.ts+35−0test/server.test.ts+84−4test/session-backup.test.ts+177−0test/session.stream-pipeline.test.ts+38−0test/session.test.ts+241−19test/session/pricing.test.ts+61−2test/shared/failureDiagnostics.ts+36−0test/shared/openaiCompatibleOptions.test.ts+84−0test/shared/persistentSubagents.test.ts+38−0test/tools.api-keys.test.ts+276−0test/tools.exa.test.ts+198−0test/tools.test.ts+898−121test/tui.model-stream.test.ts+28−4test/tui.socketLifecycle.test.ts+118−0test/tui.syncEventReducer.test.ts+190−0test/types.test.ts+14−2test/utils.browser.test.ts+95−10