Skip to content

Add optional official DeepSeek Search and Fetch providers - #221

Draft
Poros023 wants to merge 1 commit into
EdgeTypE:mainfrom
Poros023:feat/official-search-fetch
Draft

Poros023 wants to merge 1 commit into
EdgeTypE:mainfrom
Poros023:feat/official-search-fetch

Conversation

@Poros023

Copy link
Copy Markdown

Problem and behavior

Better DeepSeek currently relies on browser search providers and browser-side page extraction. This adds opt-in providers for the official DeepSeek Search and Fetch tools, with separate choices for search and page reading. Existing search providers and browser Fetch remain the defaults.

  • Adds deepseek-official to the search provider catalog and an independent webFetchProvider setting.
  • Routes ordinary tool searches, deep fetching and DeepResearch through the shared reader paths.
  • Keeps the official API key in a separate extension-local storage entry, managed only from an extension-owned settings page. The chat page receives configured/unconfigured status rather than the key.
  • Uses fixed https://api.deepseek.com/v1/tools/search and /fetch endpoints, omits cookies, rejects redirects, and applies request timeouts and a 4 MiB response limit.
  • Validates queries without silent truncation, filters local/private URL forms, and surfaces errors without silently falling back to another provider.
  • Adds localized settings labels and focused tests. No new npm dependencies or host permissions.

Validation

Based on current upstream d7ec20aecb7df6cc2e4249e9835ccb4ccdd28f99.

  • vitest run src/background/official-web.test.js src/content/files/search-reader.test.js tests/integration/official-web-routing.test.js: 3 files / 111 tests passed, exit 0.
  • npm run build: Chrome and Firefox builds passed.
  • Full vitest run: 147 files / 2,236 assertions passed, but exit 1 with 5 unhandled window is not defined rejections after teardown in tests/integration/deep-research-state.test.js, originating from asynchronous sendStepForAnalysis → markStepAwaitingAnalysis → emitRunState. This is not reported as a clean full-suite pass.
  • A local derivative was also exercised in an isolated Chromium profile against mocked page/API fixtures (8 end-to-end stages), and settings persistence was checked in Firefox. These are local checks, not upstream CI.
  • No live paid API requests, real API-account compatibility, or Android validation. No credentials, chats, profiles, or built binaries are included.

Review / remaining work

Submitting as a draft for maintainer feedback and live API compatibility review. Before a store release, Firefox data-transmission declarations/privacy disclosures should be updated consistently with the new opt-in provider; the inherited required: ["none"] declaration needs review. Personal derivative branding, extension IDs and Mozilla signing/submission files are deliberately excluded.

Implementation was prepared with AI assistance and is offered for review; no maintainer endorsement or signing approval is implied.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant