feat: add Exa AI-powered search tool#135
Open
tgonzalezc5 wants to merge 1 commit intoAgenticHighway:mainfrom
Open
feat: add Exa AI-powered search tool#135tgonzalezc5 wants to merge 1 commit intoAgenticHighway:mainfrom
tgonzalezc5 wants to merge 1 commit intoAgenticHighway:mainfrom
Conversation
Adds kelvin.exa, a wasm_tool_v1 plugin that calls the Exa /search API for AI-powered web search. The plugin mirrors the structure and ABI of the existing kelvin-websearch-plugin (Brave) so it slots into the same plugin lifecycle (build / test / pack / install). Features exposed: - query, num_results, type (auto/neural/fast), category - include_domains / exclude_domains - start_published_date / end_published_date - livecrawl, summary - Always requests highlights + a short text snippet, with a highlights -> summary -> text fallback chain when formatting Auth uses the EXA_API_KEY environment variable, declared in capability_scopes.env_allow. Network egress is restricted to api.exa.ai.
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
kelvin.exa, awasm_tool_v1tool plugin that calls the Exa/searchAPI for AI-powered web search. It mirrors the structure and ABI of the existingkelvin-websearch-plugin(Brave) so it slots into the same plugin lifecycle (make build / test / pack / install).plugins/kelvin-exa-plugin/(no_std cdylib, ~11 KiB WASM)network_allow_hosts: ["api.exa.ai"],env_allow: ["EXA_API_KEY"]query,num_results,type(auto/neural/fast),category,include_domains/exclude_domains,start_published_date/end_published_date,livecrawl, and asummaryflaghighlights+ a shorttextsnippet; formats output with ahighlights -> summary -> textfallback chain so results are immediately useful to the modelrelease/README.mdto document the new plugin andEXA_API_KEYenv varUsage
Files changed
plugins/kelvin-exa-plugin/Cargo.toml,Cargo.lock— crate config (cdylib, no_std, wasm32 target)plugins/kelvin-exa-plugin/plugin.json— manifest with capabilities, scopes, andtool_input_schemaplugins/kelvin-exa-plugin/src/lib.rs— guest implementation: input parsing, request build, response formattingplugins/kelvin-exa-plugin/build.sh,Makefile,.gitignore,README.md,payload/README.md— build/dev tooling matching the websearch plugin layoutrelease/README.md— addskelvin.exarow to the Tool Plugins table andEXA_API_KEYto the env var tableTest plan
bash build.shcompiles the WASM cdylib successfully (~11 KiB, well under the 512 KiB module limit)scripts/kelvin-plugin-dev.sh test --manifest plugins/kelvin-exa-plugin/plugin.jsonvalidates the manifest and capability/runtime declarations (manifest ok: kelvin.exa@0.1.0 (wasm_tool_v1))cargo check --workspace(root) passes; the plugin uses an empty[workspace]to stay independent of the host workspace, matching the existingkelvin-websearch-pluginandkelvin-wiki-pluginlayoutapi.exa.ai/searchwith a realEXA_API_KEY(left to maintainers / a follow-up smoke run; no plugin-level unit tests since the plugin isno_stdcdylib WASM, matching the other tool plugins in this repo)Notes
x-exa-integration: kelvinclawheader so usage attributable to KelvinClaw is observable on the Exa side, mirroring how other Exa integrations are tagged.index.jsonorrelease/vendor/— those carry pre-built tarballs for the public plugin index and seem to be regenerated as part of release tagging rather than per-PR. Happy to add an entry if maintainers prefer it bundled in this PR.