Home

mweinbach / agent-coworker

publicmweinbach/agent-coworker
Overview Code History Branches Pull requestsIssuesInsights
main
HomeOverview Code PRsIssues

Support Exa API key (web search) and UI polish

8 months ago

208418f
Authored
mweinbach2/19/2026, 7:42:36 PM
Add support for an Exa-backed web search API key and several UI/UX improvements.

- Add new auth method `exa_api_key` for the Google provider across provider defaults, provider dialog, and settings page; show masked saved key placeholders and allow view/edit/save flows.
- Persist tool API keys in the connection store (connect.read/write helpers) and expose masked values via provider status (savedApiKeyMasks) so the UI can display masked keys without exposing secrets.
- Update providerStatus to include savedApiKeyMasks and document the websocket protocol change.
- Update prompts to mention Exa as the webSearch backend for Gemini models and instruct users how to provide an Exa API key.
- Add setThreadModel store action and corresponding type in store helpers.
- Various desktop UI tweaks: sidebar, topbar, tool components, ToolCard label changes, CSS token adjustments, transitions, accessibility focus styling updates, and add a screenshot asset.
- Bump package dependency versions (package.json + lock updates).

These changes enable Exa-based web search for Google/Gemini flows, improve key management UX, and introduce general visual polish and minor store APIs.

Parent4acc7e5

26 files changed
  • apps/TUI/component/dialog-provider.tsx+32−3
  • apps/desktop/screenshot.png——
  • apps/desktop/src/App.tsx+1−1
  • apps/desktop/src/app/store.actions.ts+13−0
  • apps/desktop/src/app/store.helpers.ts+7−0
  • apps/desktop/src/components/ai-elements/tool.tsx+47−35
  • apps/desktop/src/styles.css+2−2
  • apps/desktop/src/styles/tokens.css
+1
−1
  • apps/desktop/src/ui/Sidebar.tsx+20−18
  • apps/desktop/src/ui/chat/toolCards/ToolCard.tsx+2−11
  • apps/desktop/src/ui/layout/AppTopBar.tsx+1−1
  • apps/desktop/src/ui/settings/pages/ProvidersPage.tsx+87−14
  • bun.lock+17−5
  • docs/websocket-protocol.md+5−0
  • package.json+3−3
  • prompts/system-models/gemini-3-flash-preview.md+1−0
  • prompts/system-models/gemini-3-pro-preview.md+1−0
  • prompts/system-models/gemini-3.1-pro-preview.md+1−0
  • src/connect.ts+64−0
  • src/providerStatus.ts+28−1
  • src/providers/authRegistry.ts+29−2
  • src/tools/webSearch.ts+42−7
  • test/providerStatus.test.ts+48−1
  • test/providers/auth-registry.test.ts+32−0
  • test/session.test.ts+1−0
  • test/tools.test.ts+101−1