{"_id":"@alasano/pi-exa","_rev":"4-514e1c191339b22646a5a858211ab4c5","name":"@alasano/pi-exa","dist-tags":{"latest":"0.1.2"},"versions":{"0.0.1":{"name":"@alasano/pi-exa","version":"0.0.1","keywords":["pi-package"],"license":"MIT","_id":"@alasano/pi-exa@0.0.1","maintainers":[{"name":"alasano","email":"aljosa.a@gmail.com"}],"homepage":"https://github.com/alasano/house-of-pi#readme","bugs":{"url":"https://github.com/alasano/house-of-pi/issues"},"pi":{"image":"https://raw.githubusercontent.com/alasano/house-of-pi/master/packages/pi-exa/assets/screenshot.png","skills":["./skills"],"extensions":["./extensions"]},"dist":{"shasum":"3ff7d62f7b6612d270a90d795bf5a3516f8379bb","tarball":"https://registry.npmjs.org/@alasano/pi-exa/-/pi-exa-0.0.1.tgz","fileCount":27,"integrity":"sha512-4iTJGA/LZJmIfd9TG9GUNlMFiWPeKWGiVfGCcA5tpDNGfmh4YdW9XBQKNNJ9H6ugQAfvqqZudXI5Ms5P7J0BZA==","signatures":[{"sig":"MEQCIDN8h8Ndlj9NeLSTVqo+cngYHG9FRT1Pfy18PHfPsQa8AiBAU0NopoTaPGsFbhqxLPL3HGkL8Q22lHif5cOyScP6WA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":378910},"type":"module","engines":{"node":">=22.19.0"},"gitHead":"aa8cc5364c0eec14cf353f0b3558ec0a501541bc","scripts":{"test":"vitest run","typecheck":"tsc --noEmit"},"_npmUser":{"name":"alasano","email":"aljosa.a@gmail.com"},"repository":{"url":"git+https://github.com/alasano/house-of-pi.git","type":"git","directory":"packages/pi-exa"},"_npmVersion":"11.12.1","description":"Exa-powered web search, content retrieval, answers, and agentic search tools for pi","directories":{},"_nodeVersion":"24.15.0","_hasShrinkwrap":false,"devDependencies":{"@earendil-works/pi-tui":"^0.79.9","@earendil-works/pi-coding-agent":"^0.79.9"},"peerDependencies":{"@sinclair/typebox":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-exa_0.0.1_1782001015624_0.30099019124514825","host":"s3://npm-registry-packages-npm-production"}},"0.1.0":{"name":"@alasano/pi-exa","version":"0.1.0","keywords":["pi-package"],"license":"MIT","_id":"@alasano/pi-exa@0.1.0","maintainers":[{"name":"alasano","email":"aljosa.a@gmail.com"}],"homepage":"https://github.com/alasano/house-of-pi#readme","bugs":{"url":"https://github.com/alasano/house-of-pi/issues"},"pi":{"image":"https://raw.githubusercontent.com/alasano/house-of-pi/master/packages/pi-exa/assets/screenshot.png","skills":["./skills"],"extensions":["./extensions"]},"dist":{"shasum":"40596deaa4094a1cc795fc3e121e24c261af385e","tarball":"https://registry.npmjs.org/@alasano/pi-exa/-/pi-exa-0.1.0.tgz","fileCount":27,"integrity":"sha512-+ZWe03qCP3SUcb5AOuhjXGFPGlUjqvWR4bdnrepd3XQuoMxe8gjjM4OBa64LSfpXHwe7l5n1jDx8VRNTfz3Mbg==","signatures":[{"sig":"MEUCID7fIdL9YHa/o/53YADeurC7gVLuqyF/LeY2Q3WW5EnxAiEAg1Hn7cYG3p1WaTGT+tw8vBVA8Ab3D7YoCueMPXFYRgE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@alasano%2fpi-exa@0.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":378910},"type":"module","engines":{"node":">=22.19.0"},"gitHead":"9d24f2b36cf2842660827204f215261f0af4525b","scripts":{"test":"vitest run","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dc3e4c65-01da-4444-8312-c98c49bfdc24"}},"repository":{"url":"git+https://github.com/alasano/house-of-pi.git","type":"git","directory":"packages/pi-exa"},"_npmVersion":"11.13.0","description":"Exa-powered web search, content retrieval, answers, and agentic search tools for pi","directories":{},"_nodeVersion":"24.16.0","_hasShrinkwrap":false,"devDependencies":{"@earendil-works/pi-tui":"^0.79.9","@earendil-works/pi-coding-agent":"^0.79.9"},"peerDependencies":{"@sinclair/typebox":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-exa_0.1.0_1782001569755_0.44482373524029195","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@alasano/pi-exa","version":"0.1.1","keywords":["pi-package"],"license":"MIT","_id":"@alasano/pi-exa@0.1.1","maintainers":[{"name":"alasano","email":"aljosa.a@gmail.com"}],"homepage":"https://github.com/alasano/house-of-pi#readme","bugs":{"url":"https://github.com/alasano/house-of-pi/issues"},"pi":{"image":"https://raw.githubusercontent.com/alasano/house-of-pi/master/packages/pi-exa/assets/screenshot.png","skills":["./skills"],"extensions":["./extensions"]},"dist":{"shasum":"08f3d63870468c710dfacb3e0e237c4aff5856ce","tarball":"https://registry.npmjs.org/@alasano/pi-exa/-/pi-exa-0.1.1.tgz","fileCount":27,"integrity":"sha512-GyZHTNEsBuLTKDcSnkkl5RG0lu3iYBELs3DLEDGEfIk2pOcpQsDiDfMU4qThsVBELZtkGvexSzLmmZQqAiFffw==","signatures":[{"sig":"MEUCIAxozx4URmrO62VoWhp0pHd2wUo6LFFJVSn1CpjCb4HpAiEAjIqw87f25SAg3TcTnHBUon2eP2P9LsmLL1Uf+6Br2Ro=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@alasano%2fpi-exa@0.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":378877},"type":"module","engines":{"node":">=22.19.0"},"gitHead":"666c86947d777b2294b09ec88b0ed48f9a6fef31","scripts":{"test":"vitest run","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dc3e4c65-01da-4444-8312-c98c49bfdc24"}},"repository":{"url":"git+https://github.com/alasano/house-of-pi.git","type":"git","directory":"packages/pi-exa"},"_npmVersion":"11.13.0","description":"Exa-powered web search, content retrieval, answers, and agentic search tools for pi","directories":{},"_nodeVersion":"24.16.0","_hasShrinkwrap":false,"devDependencies":{"typebox":"^1.1.38","@earendil-works/pi-tui":"^0.79.9","@earendil-works/pi-coding-agent":"^0.79.9"},"peerDependencies":{"typebox":">=1.1.38","@earendil-works/pi-tui":">=0.79.9","@earendil-works/pi-coding-agent":">=0.79.9"},"_npmOperationalInternal":{"tmp":"tmp/pi-exa_0.1.1_1782010714247_0.7108092740516412","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@alasano/pi-exa","version":"0.1.2","description":"Exa-powered web search, content retrieval, answers, and agentic search tools for pi","keywords":["pi-package"],"license":"MIT","repository":{"type":"git","url":"git+https://github.com/alasano/house-of-pi.git","directory":"packages/pi-exa"},"type":"module","engines":{"node":">=22.19.0"},"scripts":{"typecheck":"tsc --noEmit","test":"vitest run"},"pi":{"extensions":["./extensions"],"skills":["./skills"],"image":"https://raw.githubusercontent.com/alasano/house-of-pi/master/packages/pi-exa/assets/screenshot.png"},"peerDependencies":{"@earendil-works/pi-coding-agent":">=0.79.9","@earendil-works/pi-tui":">=0.79.9","typebox":">=1.1.38"},"devDependencies":{"@earendil-works/pi-coding-agent":"^0.79.9","@earendil-works/pi-tui":"^0.79.9","typebox":"^1.1.38"},"gitHead":"578757018fc42b52afcf7be3f3d283c2d8b67bca","_id":"@alasano/pi-exa@0.1.2","bugs":{"url":"https://github.com/alasano/house-of-pi/issues"},"homepage":"https://github.com/alasano/house-of-pi#readme","_nodeVersion":"24.18.0","_npmVersion":"11.16.0","dist":{"integrity":"sha512-e12hNpqgLVpUC1TzASt3b1ZnTwv3Q48yy1507B0JMVSWWk7abSQ3bZlcMIZNS4J5hKZTaFrlAfVUlxC6B9E9HA==","shasum":"9a2134a5dd0d512f1a46abe83d78328de8eac6a6","tarball":"https://registry.npmjs.org/@alasano/pi-exa/-/pi-exa-0.1.2.tgz","fileCount":28,"unpackedSize":381413,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@alasano%2fpi-exa@0.1.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDrSHhIMAoAmzoULyFtk5hrvavCxWc+nSj95QxuM+mijgIgXosn9oA+fTN83KLBeJmoWCiiT/3Puz5AfEQnfbSQE2M="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dc3e4c65-01da-4444-8312-c98c49bfdc24"}},"directories":{},"maintainers":[{"name":"alasano","email":"aljosa.a@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/pi-exa_0.1.2_1783967833067_0.4725864515476821"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-21T00:16:55.372Z","modified":"2026-07-13T18:37:13.529Z","0.0.1":"2026-06-21T00:16:55.800Z","0.1.0":"2026-06-21T00:26:09.945Z","0.1.1":"2026-06-21T02:58:34.417Z","0.1.2":"2026-07-13T18:37:13.250Z"},"bugs":{"url":"https://github.com/alasano/house-of-pi/issues"},"license":"MIT","homepage":"https://github.com/alasano/house-of-pi#readme","keywords":["pi-package"],"repository":{"type":"git","url":"git+https://github.com/alasano/house-of-pi.git","directory":"packages/pi-exa"},"description":"Exa-powered web search, content retrieval, answers, and agentic search tools for pi","maintainers":[{"name":"alasano","email":"aljosa.a@gmail.com"}],"readme":"# @alasano/pi-exa\n\n<p align=\"center\">\n  <img src=\"assets/screenshot.png\" alt=\"pi-exa settings overlay\" />\n</p>\n\n<p align=\"center\"><em>Configure Exa tools from the settings overlay.</em></p>\n\n---\n\n<p align=\"center\">\n  <img src=\"assets/web_search_exa.png\" alt=\"web_search_exa result preview\" />\n</p>\n\n<p align=\"center\"><em>Readable web search previews keep the UI clean while full tool output remains available to the agent.</em></p>\n\n[Exa](https://exa.ai)-powered web search, content retrieval, answers, and agentic search tools for [pi](https://pi.dev). This package has parity with the official Exa MCP server's current search and content-retrieval tools, then adds two Pi-specific capabilities: Exa's Answer API and the newly announced Exa Agent API for long-running research workflows.\n\nIt also ships a bundled `exa-search` skill that guides the agent on when to search, when to fetch, when to use Answer, and when to escalate to Exa Agent without flooding context.\n\n## Prerequisites\n\nYou need an [Exa API key](https://dashboard.exa.ai/api-keys).\n\n## Install\n\n```bash\npi install npm:@alasano/pi-exa\n```\n\n## Authentication\n\nSet `EXA_API_KEY` in the environment before starting pi, or run:\n\n```sh\n/exa-auth set\n```\n\nThe command stores credentials under the pi agent directory for this package only.\n\n## Settings\n\nRun `/exa-settings` to open the tool settings overlay. Search, advanced search, fetch, and answer can be toggled individually. Agent lifecycle tools are toggled as one group so create/get/list/cancel/delete/events stay consistent.\n\nDisabled tools are removed from the agent's active tool list immediately for the next turn.\n\n## Skill\n\nThe package includes the `exa-search` skill. It guides the agent to:\n\n- start with lightweight search for source discovery\n- use advanced search only when filters or content controls matter\n- fetch selected URLs instead of dumping broad page text\n- use Answer for concise sourced answers\n- use the newly announced Exa Agent API for deeper multi-hop or long-running async research workflows\n- retrieve the full stored Agent result after compact background completion notices\n\n## Workflow\n\nUse the tools as a pipeline:\n\n1. `web_search_exa` for normal source discovery.\n2. `web_search_advanced_exa` when domains, dates, categories, freshness, summaries, highlights, subpages, or extracted text matter.\n3. `web_fetch_exa` for selected URLs that need full markdown content.\n4. `web_answer_exa` when a direct answer with sources is enough.\n5. `web_agent_exa` when the task is bigger than search: long-running research, multi-hop source gathering, or structured output across many sources.\n\nForeground Agent runs return the full Agent result to the agent. Background Agent runs return promptly, show a persistent status panel, and send a compact completion notice that tells the agent to call `web_agent_get_exa` before using detailed findings.\n\n## Tools (10)\n\n### Search, Content, And Answers\n\n| Tool                      | Description                                                                                                                                              |\n| ------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| `web_search_exa`          | Search the web with compact, highlight-first results for normal source discovery.                                                                        |\n| `web_search_advanced_exa` | Search with filters and content controls: domains, dates, categories, freshness, summaries, highlights, subpages, text extraction, and response context. |\n| `web_fetch_exa`           | Retrieve clean markdown/text content from selected known URLs. Defaults to bounded content so fetches stay focused.                                      |\n| `web_answer_exa`          | Ask Exa's Answer API for a direct sourced answer when a result list would be too much.                                                                   |\n\n### Exa Agent\n\n`web_agent_exa` is the main Agent tool. Use it for high-value async workflows that need more than search/fetch/answer: long-running research, structured JSON output, or multi-hop source gathering.\n\n| Tool                   | Role                                                                                                           |\n| ---------------------- | -------------------------------------------------------------------------------------------------------------- |\n| `web_agent_exa`        | Create an Agent run. Supports foreground wait mode and background tracking.                                    |\n| `web_agent_get_exa`    | Retrieve the full stored Agent result, including text, structured output, citation grounding, usage, and cost. |\n| `web_agent_list_exa`   | List recent Agent runs to find IDs or inspect statuses.                                                        |\n| `web_agent_cancel_exa` | Cancel a queued or running Agent run.                                                                          |\n| `web_agent_delete_exa` | Delete a stored Agent run when explicitly requested.                                                           |\n| `web_agent_events_exa` | Inspect stored lifecycle events or replay the event stream for debugging/progress history.                     |\n\n## Agent Modes\n\n| Mode                              | Behavior                                                                                                                                                |\n| --------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| `mode: \"wait\", monitor: \"stream\"` | Foreground run with server-sent lifecycle events. Best default when the user needs the result in the current turn.                                      |\n| `mode: \"wait\", monitor: \"poll\"`   | Foreground run using `GET /agent/runs/{id}` polling. Useful if streaming is undesirable.                                                                |\n| `mode: \"background\"`              | Returns the run ID immediately, tracks the run in a pi widget, and sends a compact follow-up when it finishes. `monitor` is ignored in background mode. |\n\n## Output And Context Discipline\n\n- Search defaults to compact highlights rather than full page text.\n- Advanced search returns extracted text by default; use `textMaxCharacters` for broad queries.\n- Fetch is for selected known URLs, not broad discovery.\n- Agent foreground/get results return full structured output and citation grounding to the agent.\n- Background completion notices stay compact and instruct the agent to retrieve the full result before answering in detail.\n- Ctrl+O in the UI exposes expanded previews/raw API diagnostics without changing what the agent receives.\n","readmeFilename":"README.md"}