{"_id":"@alexion42/pi-web-search","_rev":"6-e05de0ed8ef9179946c5edb5f071cc27","name":"@alexion42/pi-web-search","dist-tags":{"latest":"0.2.3"},"versions":{"0.1.0":{"name":"@alexion42/pi-web-search","version":"0.1.0","keywords":["pi-package","pi","pi-coding-agent","extension","web-search","exa","fetch","scraping"],"author":{"name":"Alexion Fortytwo","email":"alexion@lexiupon.com"},"license":"MIT","_id":"@alexion42/pi-web-search@0.1.0","maintainers":[{"name":"alexion42","email":"alexion@lexiupon.com"}],"homepage":"https://github.com/nicobailon/pi-web-access#readme","bugs":{"url":"https://github.com/nicobailon/pi-web-access/issues"},"pi":{"extensions":["./index.ts"]},"dist":{"shasum":"cd8854c8b26b567653f9edec6e6d977950a63958","tarball":"https://registry.npmjs.org/@alexion42/pi-web-search/-/pi-web-search-0.1.0.tgz","fileCount":22,"integrity":"sha512-g/bHSPn6EvjKKEKkQsrs9vWupMzlAr6mK5M1UzTti0x+25xsjS8+yRWZk39m209e4uEuRjZqax9AoWfnBA1yKg==","signatures":[{"sig":"MEUCIQDtrAo0XQQpWUNLtXd5nEH/bwXOj08+Y4Bu6x8g3suWQAIgc3XFgOw8wfps3zp1OW67aHaCizJeLGrbMu0JRhU5dXI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6525800},"type":"module","gitHead":"9493844d412583961ad8575a942f49fd790460db","scripts":{"test":"node --test"},"_npmUser":{"name":"alexion42","email":"alexion@lexiupon.com"},"repository":{"url":"git+https://github.com/nicobailon/pi-web-access.git","type":"git"},"_npmVersion":"11.1.0","description":"Exa-powered web search and content extraction for Pi coding agent","directories":{},"_nodeVersion":"24.14.1","dependencies":{"unpdf":"^1.6.2","p-limit":"^6.1.0","linkedom":"^0.16.0","turndown":"^7.2.0","@mozilla/readability":"^0.5.0"},"_hasShrinkwrap":false,"peerDependencies":{"@mariozechner/pi-ai":">=0.6.0","@mariozechner/pi-tui":">=0.37.3","@mariozechner/pi-coding-agent":">=0.37.3"},"_npmOperationalInternal":{"tmp":"tmp/pi-web-search_0.1.0_1779617186293_0.827592522887733","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@alexion42/pi-web-search","version":"0.1.1","keywords":["pi-package","pi","pi-coding-agent","extension","web-search","exa","fetch","scraping"],"author":{"name":"Alexion Fortytwo","email":"alexion@lexiupon.com"},"license":"MIT","_id":"@alexion42/pi-web-search@0.1.1","maintainers":[{"name":"alexion42","email":"alexion@lexiupon.com"}],"homepage":"https://github.com/nicobailon/pi-web-access#readme","bugs":{"url":"https://github.com/nicobailon/pi-web-access/issues"},"pi":{"extensions":["./index.ts"]},"dist":{"shasum":"1dbcdf20aa8bb0919f6ec50acf527dd48a4f0034","tarball":"https://registry.npmjs.org/@alexion42/pi-web-search/-/pi-web-search-0.1.1.tgz","fileCount":22,"integrity":"sha512-itMIPhcUGOuvnGjVWLYGINzmomD/6SM6Fkf4X3MPbmSr2SQyAFP8c6aqPA1lltOMJCFwsPcyk33nz+QwXVp5ZA==","signatures":[{"sig":"MEQCIF9MxTfkmApYRpxq47EJgkSNu4SBoxmJbD3zJif8pjjsAiBvyBnLZ9LjWnKQXNK3vVF88fODxWPPzCkddGJoyBE3vA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6525906},"type":"module","gitHead":"6c957608d9760e286f935f3305a53bf27747ca57","scripts":{"test":"node --test"},"_npmUser":{"name":"alexion42","email":"alexion@lexiupon.com"},"repository":{"url":"git+https://github.com/nicobailon/pi-web-access.git","type":"git"},"_npmVersion":"11.1.0","description":"Exa-powered web search and content extraction for Pi coding agent","directories":{},"_nodeVersion":"24.14.1","dependencies":{"unpdf":"^1.6.2","p-limit":"^7.3.0","linkedom":"^0.18.12","turndown":"^7.2.4","@mozilla/readability":"^0.6.0"},"_hasShrinkwrap":false,"peerDependencies":{"@mariozechner/pi-ai":"^0.73.1","@mariozechner/pi-tui":"^0.73.1","@mariozechner/pi-coding-agent":"^0.73.1"},"_npmOperationalInternal":{"tmp":"tmp/pi-web-search_0.1.1_1779617648334_0.1479371307099251","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@alexion42/pi-web-search","version":"0.2.0","keywords":["pi-package","pi","pi-coding-agent","extension","web-search","exa","fetch","scraping"],"author":{"name":"Alexion Fortytwo","email":"alexion@lexiupon.com"},"license":"MIT","_id":"@alexion42/pi-web-search@0.2.0","maintainers":[{"name":"alexion42","email":"alexion@lexiupon.com"}],"homepage":"https://github.com/lexiupon/pi-web-search#readme","bugs":{"url":"https://github.com/lexiupon/pi-web-search/issues"},"pi":{"extensions":["./index.ts"]},"dist":{"shasum":"2858313a3e51bfc853b41d11af5408cd223b7f92","tarball":"https://registry.npmjs.org/@alexion42/pi-web-search/-/pi-web-search-0.2.0.tgz","fileCount":17,"integrity":"sha512-4FQTk7aKAtPlVHGJNWC/oBqZvz2ohgKHSHxz4tY9r7SJlPx45c48wnn/WC1PqBDUlgKsInWCJi2tPKDjRa2lhg==","signatures":[{"sig":"MEQCIHAPHK+8HVP46XCxNYM5qM4WLmXme1f0HcayyO6t9RV2AiAwMxfkVs31BASotBQh+suWxZ6bzv5ZtW8ID5rcAh50jw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":100369},"type":"module","gitHead":"fdad2fd84b5f57082c4a8dcf81a96c6570f955f1","scripts":{"test":"node --test"},"_npmUser":{"name":"alexion42","email":"alexion@lexiupon.com"},"repository":{"url":"git+https://github.com/lexiupon/pi-web-search.git","type":"git"},"_npmVersion":"11.1.0","description":"Single-tool Exa-powered web search and URL reading for Pi coding agent","directories":{},"_nodeVersion":"24.14.1","dependencies":{"unpdf":"^1.6.2","p-limit":"^7.3.0","linkedom":"^0.18.12","turndown":"^7.2.4","@mozilla/readability":"^0.6.0"},"_hasShrinkwrap":false,"peerDependencies":{"@mariozechner/pi-ai":"^0.73.1","@mariozechner/pi-tui":"^0.73.1","@mariozechner/pi-coding-agent":"^0.73.1"},"_npmOperationalInternal":{"tmp":"tmp/pi-web-search_0.2.0_1779625121561_0.1174157289366442","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@alexion42/pi-web-search","version":"0.2.1","keywords":["pi-package","pi","pi-coding-agent","extension","web-search","exa","fetch","scraping"],"author":{"name":"Alexion Fortytwo","email":"alexion@lexiupon.com"},"license":"MIT","_id":"@alexion42/pi-web-search@0.2.1","maintainers":[{"name":"alexion42","email":"alexion@lexiupon.com"}],"homepage":"https://github.com/lexiupon/pi-web-search#readme","bugs":{"url":"https://github.com/lexiupon/pi-web-search/issues"},"pi":{"extensions":["./index.ts"]},"dist":{"shasum":"b26631c572729bfe6879df131c5b3f48df6a6d9a","tarball":"https://registry.npmjs.org/@alexion42/pi-web-search/-/pi-web-search-0.2.1.tgz","fileCount":17,"integrity":"sha512-Inlq7pyn33Acfg2JUndEk1HFwVnWTOhZWbOGSuiqefpYTfoDaPh3XTCSojW+4KDUbSOBPpVPkaUijLxtfPDT/g==","signatures":[{"sig":"MEUCIQCGqOGyFiT6d+HfUO8RNeUyHx5xJLgQrRR3BOOiBPWxeAIgYsnp27andnkppa+tRJHnYnPVpZn/3nW3FOrcywU5Cfk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":100732},"type":"module","gitHead":"d0a21ce0c71a8c475cd7f819e27972bce3024254","scripts":{"test":"node --test"},"_npmUser":{"name":"alexion42","email":"alexion@lexiupon.com"},"repository":{"url":"git+https://github.com/lexiupon/pi-web-search.git","type":"git"},"_npmVersion":"11.1.0","description":"Single-tool Exa-powered web search and URL reading for Pi coding agent","directories":{},"_nodeVersion":"24.14.1","dependencies":{"unpdf":"^1.6.2","p-limit":"^7.3.0","linkedom":"^0.18.12","turndown":"^7.2.4","@mozilla/readability":"^0.6.0"},"_hasShrinkwrap":false,"peerDependencies":{"@earendil-works/pi-ai":"^0.75.5","@earendil-works/pi-tui":"^0.75.5","@earendil-works/pi-coding-agent":"^0.75.5"},"_npmOperationalInternal":{"tmp":"tmp/pi-web-search_0.2.1_1779810454270_0.7418435793970879","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@alexion42/pi-web-search","version":"0.2.2","keywords":["pi-package","pi","pi-coding-agent","extension","web-search","exa","fetch","scraping"],"author":{"name":"Alexion Fortytwo","email":"alexion@lexiupon.com"},"license":"MIT","_id":"@alexion42/pi-web-search@0.2.2","maintainers":[{"name":"alexion42","email":"alexion@lexiupon.com"}],"homepage":"https://github.com/lexiupon/pi-web-search#readme","bugs":{"url":"https://github.com/lexiupon/pi-web-search/issues"},"pi":{"extensions":["./index.ts"]},"dist":{"shasum":"0bf051e86e82cff48bc7a7e0d24f1b46819c8edc","tarball":"https://registry.npmjs.org/@alexion42/pi-web-search/-/pi-web-search-0.2.2.tgz","fileCount":17,"integrity":"sha512-6NQY6B2roRk5Er7YQ/RAtHzy9beedfxfWfP308ONP4kZY9v/h+bdELSVkcspYsdtT/AeI2N8xebFdMT/hJzuSg==","signatures":[{"sig":"MEQCIAVHFHWIA+JdNB/poumZmXNIUOaJPe9DaLm1eKiXrw5BAiAUKzpggqpWxomBpfdbR8/WNBucGhQ3/2nOdMCHOL9ksg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":100962},"type":"module","gitHead":"a58f489896226351035df06140a66cec31485083","scripts":{"test":"node --test"},"_npmUser":{"name":"alexion42","email":"alexion@lexiupon.com"},"repository":{"url":"git+https://github.com/lexiupon/pi-web-search.git","type":"git"},"_npmVersion":"11.1.0","description":"Single-tool Exa-powered web search and URL reading for Pi coding agent","directories":{},"_nodeVersion":"24.14.1","dependencies":{"unpdf":"^1.6.2","p-limit":"^7.3.0","linkedom":"^0.18.12","turndown":"^7.2.4","@mozilla/readability":"^0.6.0"},"_hasShrinkwrap":false,"peerDependencies":{"@earendil-works/pi-ai":"^0.79.0","@earendil-works/pi-tui":"^0.79.0","@earendil-works/pi-coding-agent":"^0.79.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-web-search_0.2.2_1780935029241_0.7663451278651432","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"name":"@alexion42/pi-web-search","version":"0.2.3","description":"Single-tool Exa-powered web search and URL reading for Pi coding agent","type":"module","scripts":{"test":"node --test"},"keywords":["pi-package","pi","pi-coding-agent","extension","web-search","exa","fetch","scraping"],"author":{"name":"Alexion Fortytwo","email":"alexion@lexiupon.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/lexiupon/pi-web-search.git"},"bugs":{"url":"https://github.com/lexiupon/pi-web-search/issues"},"homepage":"https://github.com/lexiupon/pi-web-search#readme","dependencies":{"@mozilla/readability":"^0.6.0","linkedom":"^0.18.12","p-limit":"^7.3.0","turndown":"^7.2.4","unpdf":"^1.6.2"},"peerDependencies":{"@earendil-works/pi-ai":"^0.79.0","@earendil-works/pi-coding-agent":"^0.79.0","@earendil-works/pi-tui":"^0.79.0"},"pi":{"extensions":["./index.ts"]},"_id":"@alexion42/pi-web-search@0.2.3","gitHead":"1fac43b222b951b7335b4ece6c3e4196cf58d567","_nodeVersion":"24.14.1","_npmVersion":"11.1.0","dist":{"integrity":"sha512-zILQdQFz/UuhffpRrnNiQac6K50In/r/7vIflvmXt/discgl+qzVDy+hL9HnEfAEX1mgrYWuNiqGaqKibrhI7Q==","shasum":"9435b18a881bbf8aa977988c05ad334178c42ce0","tarball":"https://registry.npmjs.org/@alexion42/pi-web-search/-/pi-web-search-0.2.3.tgz","fileCount":17,"unpackedSize":100962,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCICKvJgMP7koT+xVDGHQGMYsQq6c8SjwPCyzTJRCOAvneAiAcKCDZTxXYpWPtfIWtjDW3oqTryrkXI5eeXbjmo566ow=="}]},"_npmUser":{"name":"alexion42","email":"alexion@lexiupon.com"},"directories":{},"maintainers":[{"name":"alexion42","email":"alexion@lexiupon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/pi-web-search_0.2.3_1781858197212_0.18075713498342938"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-24T10:06:26.094Z","modified":"2026-06-19T08:36:37.454Z","0.1.0":"2026-05-24T10:06:26.600Z","0.1.1":"2026-05-24T10:14:08.654Z","0.2.0":"2026-05-24T12:18:41.751Z","0.2.1":"2026-05-26T15:47:34.415Z","0.2.2":"2026-06-08T16:10:29.396Z","0.2.3":"2026-06-19T08:36:37.345Z"},"bugs":{"url":"https://github.com/lexiupon/pi-web-search/issues"},"author":{"name":"Alexion Fortytwo","email":"alexion@lexiupon.com"},"license":"MIT","homepage":"https://github.com/lexiupon/pi-web-search#readme","keywords":["pi-package","pi","pi-coding-agent","extension","web-search","exa","fetch","scraping"],"repository":{"type":"git","url":"git+https://github.com/lexiupon/pi-web-search.git"},"description":"Single-tool Exa-powered web search and URL reading for Pi coding agent","maintainers":[{"name":"alexion42","email":"alexion@lexiupon.com"}],"readme":"# Pi Web Search\n\nLean web search for Pi, powered by Exa. A lean fork of [nicobailon/pi-web-access](https://github.com/nicobailon/pi-web-access).\n\n[![npm version](https://img.shields.io/npm/v/@alexion42/pi-web-search?style=for-the-badge)](https://www.npmjs.com/package/@alexion42/pi-web-search)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg?style=for-the-badge)](https://opensource.org/licenses/MIT)\n\n## Install\n\n```bash\npi install npm:@alexion42/pi-web-search\n```\n\nWorks immediately with no API keys — Exa MCP provides zero-config search. For direct API access, add your key to `~/.pi/web-search.json`:\n\n```json\n{\n  \"exaApiKey\": \"exa-...\"\n}\n```\n\nRequires a recent Pi release using the `@earendil-works/pi-*` package namespace.\n\n## What's Available\n\n| Tool | Description |\n|------|-------------|\n| `web` | Single web tool: `mode: \"search\"` finds sources, `mode: \"read\"` reads one known URL, `mode: \"get\"` reloads a stored result by `resultId` |\n| `/search` | Interactive command to browse stored web results |\n| Activity monitor | `Ctrl+Shift+W` to view live request/response activity |\n\nContent extraction uses a robust fallback chain: Readability → RSC parser → Jina Reader. Full parameter reference and examples are in [TOOLS.md](./TOOLS.md).\n\n## Configuration\n\nAll config lives in `~/.pi/web-search.json`. Every field is optional.\n\n```json\n{\n  \"exaApiKey\": \"exa-...\",\n  \"githubClone\": {\n    \"enabled\": true,\n    \"maxRepoSizeMB\": 350,\n    \"cloneTimeoutSeconds\": 30,\n    \"clonePath\": \"/tmp/pi-github-repos\"\n  },\n  \"shortcuts\": {\n    \"activity\": \"ctrl+shift+w\"\n  }\n}\n```\n\n`EXA_API_KEY` env var takes precedence over config file values. Config changes require a Pi restart.\n\n## How It Works\n\n```\nweb({ mode: \"search\", query })\n  → Exa (direct API with key, MCP without)\n\nweb({ mode: \"read\", url })\n  → GitHub URL?  Clone repo, return file contents + local path\n  → HTTP fetch → PDF? Extract text, save to ~/Downloads/\n               → HTML? Readability → RSC parser → Jina Reader\n               → Text/JSON/Markdown? Return directly\n\nweb({ mode: \"get\", resultId })\n  → Load stored search or URL-read results from the current session\n```\n\n## Limitations\n\n- PDFs are text-extracted only (no OCR for scanned documents).\n- GitHub branch names with slashes may misresolve file paths; the clone still works and the agent can navigate manually.\n- Non-code GitHub URLs (issues, PRs, wiki) fall through to normal web extraction.\n\n## Comparison with Other Pi Search Extensions\n\n| Extension | Backends | Differentiator |\n|-----------|----------|----------------|\n| [nicobailon/pi-web-access](https://github.com/nicobailon/pi-web-access) | Perplexity, Gemini, Exa | Upstream — curator, YouTube, video |\n| [ronnieops/pi-search-hub](https://github.com/ronnieops/pi-search-hub) | 12 backends | RRF combine mode, auto-fallback |\n| [code-yeongyu/pi-websearch](https://github.com/code-yeongyu/pi-websearch) | 11 backends + native OpenAI/Anthropic | Provider routing, keyless DDG |\n| [ayagmar/pi-codex-web-search](https://github.com/ayagmar/pi-codex-web-search) | OpenAI Codex CLI | Wraps local `codex` CLI |\n| [iaptsiauri/pi-surf](https://github.com/iaptsiauri/pi-surf) | Brave + custom providers | Scout subagent, pluggable providers |\n| [NicoAvanzDev/pi-web-extension](https://github.com/NicoAvanzDev/pi-web-extension) | Brave, DDG (keyless) | Prompt steering, token-aware |\n\nThis project's niche: **GitHub cloning + Exa MCP zero-config in a lean package**, now exposed through a single `web` tool for simpler model tool-calling. No multi-provider routing, no browser UI, no video.\n","readmeFilename":"README.md"}