9 Commits

Author SHA1 Message Date
yuhao
99f92f0525 WIP transfer root-skills and hub updates 2026-04-18 10:12:58 +00:00
Teo Gonzalez Collazo
d717eeb08a fix: add x-exa-integration header for Exa usage tracking
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-08 15:16:45 -07:00
Teo Gonzalez Collazo
28cf94ec5e fix: address SDK compat, version pin, gitignore, and exit code issues
- Replace invalid `additional_headers` kwarg with `user_agent` in Exa client
- Pin exa-py>=2.0.0 (code uses v2-only `contents` param)
- Add missing .gitignore Step 5/6 entries for exa/
- Exit non-zero from `server status` when check fails

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-05 09:19:34 -07:00
Teo Gonzalez Collazo
574f5bd4b0 fix: address PR review feedback (items 1-6)
- Reformat PR body to match repo template
- Add Exa to root README (category table, software grid, directory tree)
- Add comment explaining different build_contents_param() usage in search vs get_contents
- Document that server status consumes 1 search credit
- Clarify auto=neural in --type help text
- Remove stale noqa: SIM114 comment

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-05 09:19:23 -07:00
Teo Gonzalez Collazo
7e6fdf3413 fix: address Copilot review feedback on Exa CLI harness
- Fix REPL to use skin.get_input() instead of skin.prompt() so it
  actually reads user input
- Use shlex.split() instead of str.split() to preserve quoted arguments
- Remove unnecessary ImportError guard on ReplSkin (prompt-toolkit is
  optional within ReplSkin itself)
- Deduplicate get_contents() by reusing build_contents_param()
- Use shutil.which() instead of shelling out to `which` in tests
- Fix get_client() docstring to match actual RuntimeError raise

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-05 09:19:23 -07:00
Teo Gonzalez Collazo
db2ff670ef revert: remove unnecessary _json_output reset in REPL loop
cli.main() re-invokes the root group callback on every dispatch, which
already resets _json_output = use_json before any output runs — so the
reset in finally was a no-op.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-05 09:19:23 -07:00
Teo Gonzalez Collazo
b8329a5907 fix: reset _json_output after each REPL dispatch
Prevents --json from leaking across subsequent REPL commands when a
user types e.g. `--json search "foo"` — the global was left True for
all following commands in the session.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-05 09:19:23 -07:00
Devin AI
b0e360262b refactor: remove deprecated answer, similar, and session endpoints
- Delete core/answer.py (Exa deprecating /answer)
- Delete core/session.py (not Exa-specific)
- Remove find_similar() from core/search.py (Exa deprecating /similar)
- Remove answer, similar, session CLI commands from exa_cli.py
- Fix ReplSkin constructor call (wrong kwargs)
- Add x-exa-integration header to all API calls
- Update all docs and tests to match
- Update setup.py and registry.json descriptions

Co-Authored-By: teo@exa.ai <teodorolgonzalez5@gmail.com>
2026-04-05 09:19:23 -07:00
Teo Gonzalez Collazo
b1c9dd4f0d feat: add Exa CLI harness for AI-powered web search and answers
- Web search with neural/fast/instant/deep/deep-reasoning modes
- Find similar pages by URL
- Fetch full-text or highlighted page contents
- LLM-synthesised answers with cited sources
- Category filters, domain filters, date filters, geo-bias
- --json flag for agent-native output on all commands
- Interactive REPL mode
- 40 unit tests passing (no API calls required)
- E2E test suite (requires EXA_API_KEY)
- registry.json entry added
2026-04-05 09:19:23 -07:00