- 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>
- 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>
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>
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>
- 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