feat: add Exa AI-powered search tool#164
Open
tgonzalezc5 wants to merge 1 commit into
Open
Conversation
Adds Exa (https://exa.ai) as an alternative search provider alongside the existing Firecrawl integration. Selectable via SEARCH_PROVIDER env var; Firecrawl remains the default so existing setups are unchanged. Exposes Exa search type, content modes (text + highlights + summary with cascading fallback), category filtering, domain filtering, and date range filtering through optional environment variables. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds Exa as an alternative search provider alongside the existing Firecrawl integration. Exa is a neural search API designed for AI agents and exposes useful knobs for research workflows (search type, category filtering, domain filtering, date ranges) that often improve quality on technical or research-paper queries.
SearchProviderabstraction insrc/search.tsso additional providers can be added without touchingdeep-research.ts.SEARCH_PROVIDERenv var (firecrawl|exa). Firecrawl remains the default — existing setups are unchanged.node:testframework.Usage
In
.env.local:Then
npm startas usual.Files changed
src/search.ts— new provider abstraction (Firecrawl + Exa).src/search.test.ts— unit tests for response parsing, content fallback cascade, env-driven filters, and disabled state.src/deep-research.ts— switched the search call site fromfirecrawl.search(...)to the unifiedsearch(...). No behavioral change for default (Firecrawl) users..env.example— documentedSEARCH_PROVIDERand Exa env vars.README.md— added a short "Using Exa as the search provider" section.package.json/package-lock.json— addsexa-jsdependency.Test plan