{"_id":"@bytetrue/pi-web-search","_rev":"11-0a380f2ada2925c90af5367260487ec5","name":"@bytetrue/pi-web-search","dist-tags":{"latest":"0.5.1"},"versions":{"0.1.0":{"name":"@bytetrue/pi-web-search","version":"0.1.0","keywords":["pi-package","pi-extension","web-search","web-fetch","search","fetch","duckduckgo","tavily","exa","brave","jina","firecrawl","ai","llm","agent"],"author":{"name":"byte"},"license":"MIT","_id":"@bytetrue/pi-web-search@0.1.0","maintainers":[{"name":"bytetrue","email":"bytetrue@outlook.com"}],"homepage":"https://github.com/ByteTrue/pi-package-mono#readme","bugs":{"url":"https://github.com/ByteTrue/pi-package-mono/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"652722c95ddb55a11e18e8a441cb56d819de388c","tarball":"https://registry.npmjs.org/@bytetrue/pi-web-search/-/pi-web-search-0.1.0.tgz","fileCount":19,"integrity":"sha512-2y2fWxuAMxgZJ+XKWRHpPw7pL+i9ifH/Qv8bwnr1QrC9qvocoUXR2IVWRu2PuMIy5qL3HrxSGn1x2g5tbG/HyQ==","signatures":[{"sig":"MEUCIF99FiPtf63T+LjCr+/XxzjtVzejZ5J85f6ZISQEa+jJAiEAi9d3CccNSOd31pfFTkmLATDrmZK6TEQiPyKtpJU0uoM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":70898},"type":"module","gitHead":"050ee06ee827c277fd6883adf483371544b195c5","scripts":{"test":"vitest run","typecheck":"tsc --noEmit"},"_npmUser":{"name":"bytetrue","email":"bytetrue@outlook.com"},"repository":{"url":"git+https://github.com/ByteTrue/pi-package-mono.git","type":"git","directory":"packages/pi-web-search"},"_npmVersion":"11.17.0","description":"Pi extension: web_search + web_fetch with a zero-config free default (Bing, works in mainland China) and pluggable providers (DuckDuckGo, Bocha, Tavily, Exa, Brave, Jina, Firecrawl).","directories":{},"_nodeVersion":"24.15.0","dependencies":{"undici":"^8.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.0.0","typescript":"^5.0.0","@types/node":"^22.0.0"},"peerDependencies":{"typebox":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web-search_0.1.0_1781941212896_0.8422987619413986","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@bytetrue/pi-web-search","version":"0.1.1","keywords":["pi-package","pi-extension","web-search","web-fetch","search","fetch","tavily","exa","brave","jina","firecrawl","ai","llm","agent"],"author":{"name":"byte"},"license":"MIT","_id":"@bytetrue/pi-web-search@0.1.1","maintainers":[{"name":"bytetrue","email":"bytetrue@outlook.com"}],"homepage":"https://github.com/ByteTrue/pi-package-mono#readme","bugs":{"url":"https://github.com/ByteTrue/pi-package-mono/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"e3dda5d5cdbeff58c348a037ebf96e8d858800c2","tarball":"https://registry.npmjs.org/@bytetrue/pi-web-search/-/pi-web-search-0.1.1.tgz","fileCount":20,"integrity":"sha512-lIuMD0n6GV21LEYV/Fdqo3I1hJCu+DCp+PZQxaEV6D2nK/hYnL8QoiLh1UgnDG+ZNMfXIjlTymG7/cNe4y7w4A==","signatures":[{"sig":"MEUCIEqDXTAzkMz4tPblyPVxTIdTOk5cO7bGJRGPKsBZgba6AiEA8Ur8wXmwL4OugYAa2DNZmjaCI4DhuraqytI1c+VYzhQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":76654},"type":"module","gitHead":"334d6538f35fac956fe03605624009f689352a6d","scripts":{"test":"vitest run","test:e2e":"vitest run src/live.e2e.test.ts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4b8576b9-7515-43ea-bee1-6bfec4598edc"}},"repository":{"url":"git+https://github.com/ByteTrue/pi-package-mono.git","type":"git","directory":"packages/pi-web-search"},"_npmVersion":"11.18.0","description":"Pi extension: web_search + web_fetch with zero-config Exa MCP free search, keyless Bing, self-hosted SearXNG, and pluggable providers (Bocha, Tavily, Exa, Brave, Jina, Firecrawl).","directories":{},"_nodeVersion":"24.18.0","dependencies":{"undici":"^8.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.0.0","typescript":"^5.0.0","@types/node":"^22.0.0"},"peerDependencies":{"typebox":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web-search_0.1.1_1783185523837_0.6067164150173918","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@bytetrue/pi-web-search","version":"0.1.2","keywords":["pi-package","pi-extension","web-search","web-fetch","search","fetch","tavily","exa","brave","jina","firecrawl","ai","llm","agent"],"author":{"name":"byte"},"license":"MIT","_id":"@bytetrue/pi-web-search@0.1.2","maintainers":[{"name":"bytetrue","email":"bytetrue@outlook.com"}],"homepage":"https://github.com/ByteTrue/pi-package-mono#readme","bugs":{"url":"https://github.com/ByteTrue/pi-package-mono/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"1ea0e072d2b638c7cce628b15a25f030d19bdad9","tarball":"https://registry.npmjs.org/@bytetrue/pi-web-search/-/pi-web-search-0.1.2.tgz","fileCount":21,"integrity":"sha512-l5F+kiEU/0ybg9/+v3ikEGh7QdXQi58jvSlB5luUiq7Dx6yISlbVtbnZZOuMcPIEzBAReW7s/3tAv2Slh13Rxg==","signatures":[{"sig":"MEQCIEg5N7hZdVbgps9IUun0nrpPBozu7TQ74VhbCVwoKdA6AiBvksySyqBhkiCNIn6QDPz5He7E+3XJWM1QG33udujvRQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":92080},"type":"module","gitHead":"3f6c641c25943511e5dbca3f3dbf4545a606cea0","scripts":{"test":"vitest run","test:e2e":"vitest run src/live.e2e.test.ts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4b8576b9-7515-43ea-bee1-6bfec4598edc"}},"repository":{"url":"git+https://github.com/ByteTrue/pi-package-mono.git","type":"git","directory":"packages/pi-web-search"},"_npmVersion":"12.0.1","description":"Pi extension: web_search + web_fetch with zero-config Exa MCP free search, keyless Bing, self-hosted SearXNG, and pluggable providers (Bocha, Tavily, Exa, Brave, Jina, Firecrawl).","directories":{},"_nodeVersion":"24.18.0","dependencies":{"undici":"^8.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.0.0","typescript":"^5.0.0","@types/node":"^22.0.0"},"peerDependencies":{"typebox":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web-search_0.1.2_1783793734446_0.41195429559620034","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@bytetrue/pi-web-search","version":"0.1.3","keywords":["pi-package","pi-extension","web-search","web-fetch","search","fetch","tavily","exa","brave","jina","firecrawl","ai","llm","agent"],"author":{"name":"byte"},"license":"MIT","_id":"@bytetrue/pi-web-search@0.1.3","maintainers":[{"name":"bytetrue","email":"bytetrue@outlook.com"}],"homepage":"https://github.com/ByteTrue/pi-package-mono#readme","bugs":{"url":"https://github.com/ByteTrue/pi-package-mono/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"60d430f45be4f9c7c67a59a73fdd3fd31eb53565","tarball":"https://registry.npmjs.org/@bytetrue/pi-web-search/-/pi-web-search-0.1.3.tgz","fileCount":21,"integrity":"sha512-TZLwkh7HEabRKdanXVEaBTxL2hMU65e/9cnDMLcnViOcUBzzojFWZ4j2Fo8U0cwZ4BVSeG9ETMv9JCpK6UPifw==","signatures":[{"sig":"MEUCIQDuSFOandDmF4Y/aebDXK3STlJfUzapz9hfpKTsJ+TP6wIgJ3zEdwIC+xYg1nhhoCQ3wBY6IAlP8SFL5Lt8PVfxXZo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@bytetrue%2fpi-web-search@0.1.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":92265},"type":"module","gitHead":"431b2079b19e229cb1a886db0c8dbd44552dbb5e","scripts":{"test":"vitest run","test:e2e":"vitest run src/live.e2e.test.ts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4b8576b9-7515-43ea-bee1-6bfec4598edc"}},"repository":{"url":"git+https://github.com/ByteTrue/pi-package-mono.git","type":"git","directory":"packages/pi-web-search"},"_npmVersion":"12.0.1","description":"Pi extension: web_search + web_fetch with zero-config Exa MCP free search, keyless Bing, self-hosted SearXNG, and pluggable providers (Bocha, Tavily, Exa, Brave, Jina, Firecrawl).","directories":{},"_nodeVersion":"24.18.0","dependencies":{"undici":"^8.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.0.0","typescript":"^5.0.0","@types/node":"^22.0.0"},"peerDependencies":{"typebox":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web-search_0.1.3_1784477017358_0.04980392948930512","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@bytetrue/pi-web-search","version":"0.2.0","keywords":["pi-package","pi-extension","web-search","web-fetch","search","fetch","tavily","exa","brave","jina","firecrawl","ai","llm","agent"],"author":{"name":"byte"},"license":"MIT","_id":"@bytetrue/pi-web-search@0.2.0","maintainers":[{"name":"bytetrue","email":"bytetrue@outlook.com"}],"homepage":"https://github.com/ByteTrue/pi-package-mono#readme","bugs":{"url":"https://github.com/ByteTrue/pi-package-mono/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"ff948e667c95cec586ddf57b4cf79c2f33ef4466","tarball":"https://registry.npmjs.org/@bytetrue/pi-web-search/-/pi-web-search-0.2.0.tgz","fileCount":21,"integrity":"sha512-XxAY54Y3t2xIJzuCBvFF/t3X8koJXgXrpLu7Odq/b1sY1vZ531n500XkN3sPcCmjfiS3xWx4og1MwCW/cR/1YA==","signatures":[{"sig":"MEUCIQCttWTWBqPlDSbMK8V7n3P74w2hCbi1mMvTZYx7rOWkeAIgE4mRDniCdTv+fm5rxuL4YXkE0Istu9UpYe7rrNEaD8g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@bytetrue%2fpi-web-search@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":76564},"type":"module","gitHead":"3e526d72d4832f80abd11736d50a564941a0cd2c","scripts":{"test":"vitest run","test:e2e":"vitest run src/live.e2e.test.ts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4b8576b9-7515-43ea-bee1-6bfec4598edc"}},"repository":{"url":"git+https://github.com/ByteTrue/pi-package-mono.git","type":"git","directory":"packages/pi-web-search"},"_npmVersion":"12.0.2","description":"Pi extension: web_search + web_fetch with zero-config Exa MCP free search, keyless Bing, self-hosted SearXNG, and pluggable providers (Bocha, Tavily, Exa, Brave, Jina, Firecrawl).","directories":{},"_nodeVersion":"24.18.0","dependencies":{"undici":"^8.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.0.0","typescript":"^5.0.0","@types/node":"^22.0.0"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web-search_0.2.0_1786038380028_0.24352322695273898","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@bytetrue/pi-web-search","version":"0.2.1","keywords":["pi-package","pi-extension","web-search","web-fetch","search","fetch","tavily","exa","brave","jina","firecrawl","ai","llm","agent"],"author":{"name":"byte"},"license":"MIT","_id":"@bytetrue/pi-web-search@0.2.1","maintainers":[{"name":"bytetrue","email":"bytetrue@outlook.com"}],"homepage":"https://github.com/ByteTrue/pi-package-mono#readme","bugs":{"url":"https://github.com/ByteTrue/pi-package-mono/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"d54c72c2bfd9cdb181b1e361a119d7fb47fcf44e","tarball":"https://registry.npmjs.org/@bytetrue/pi-web-search/-/pi-web-search-0.2.1.tgz","fileCount":21,"integrity":"sha512-n3itCdDh8Tj85LG7dd+AGE+S8QY/eP/ng8LQCGfptjLgBRzSUsewSuhP9YFfBtiv5HMi82ESwDbwiyFy4STC4A==","signatures":[{"sig":"MEYCIQDakVNoqmYvREpnOybQ0ZmgQ9GrgLqHAcWvPbA2afwSOAIhALe+36+DNax9AvG527NN97TvRgp/hirB+VN3s8vRLYH3","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@bytetrue%2fpi-web-search@0.2.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":75373},"type":"module","gitHead":"2e8d31687f2efddde450cb473f44a95d97db86bc","scripts":{"test":"vitest run","test:e2e":"vitest run src/live.e2e.test.ts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4b8576b9-7515-43ea-bee1-6bfec4598edc"}},"repository":{"url":"git+https://github.com/ByteTrue/pi-package-mono.git","type":"git","directory":"packages/pi-web-search"},"_npmVersion":"12.0.2","description":"Pi extension: web_search + web_fetch with zero-config Exa MCP free search, keyless Bing, self-hosted SearXNG, and pluggable providers (Bocha, Tavily, Exa, Brave, Jina, Firecrawl).","directories":{},"_nodeVersion":"24.18.0","dependencies":{"undici":"8.9.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.0.0","typescript":"^5.0.0","@types/node":"^22.0.0"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web-search_0.2.1_1786461872310_0.24978173777851742","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@bytetrue/pi-web-search","version":"0.3.0","keywords":["pi-package","pi-extension","web-search","web-fetch","search","fetch","tavily","exa","brave","jina","firecrawl","ai","llm","agent"],"author":{"name":"byte"},"license":"MIT","_id":"@bytetrue/pi-web-search@0.3.0","maintainers":[{"name":"bytetrue","email":"bytetrue@outlook.com"}],"homepage":"https://github.com/ByteTrue/pi-package-mono#readme","bugs":{"url":"https://github.com/ByteTrue/pi-package-mono/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"8059597fc187b5e997367b9d40eb9836be404078","tarball":"https://registry.npmjs.org/@bytetrue/pi-web-search/-/pi-web-search-0.3.0.tgz","fileCount":22,"integrity":"sha512-j9zWNyARrfYjlDmTFnJcK0c9afhhAnOlDTgra95lzY7yK/fxTt82hIOfX5tRLqCPRJc4QjJ1gM7WuTHirUlqtA==","signatures":[{"sig":"MEUCIQDcAl5AqC7KAMbuRJi2dyJVtw1zRMriiacGyEhxtUGzoQIgPvi2/eDLPWi41p7nzULqW4CgKd4xWl/zP2i4qScC6g8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@bytetrue%2fpi-web-search@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":167211},"type":"module","gitHead":"f20b4d46c3a7715810fa49650fcf5934a38d15cc","scripts":{"test":"vitest run","test:e2e":"vitest run src/live.e2e.test.ts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4b8576b9-7515-43ea-bee1-6bfec4598edc"}},"repository":{"url":"git+https://github.com/ByteTrue/pi-package-mono.git","type":"git","directory":"packages/pi-web-search"},"_npmVersion":"12.0.2","description":"Pi extension: web_search + web_fetch with zero-config Exa MCP free search, keyless Bing, self-hosted SearXNG, and pluggable providers (Bocha, Tavily, Exa, Brave, Jina, Firecrawl).","directories":{},"_nodeVersion":"24.19.0","dependencies":{"undici":"8.9.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.0.0","typescript":"^5.0.0","@types/node":"^22.0.0"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web-search_0.3.0_1787581018050_0.12779867028512926","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@bytetrue/pi-web-search","version":"0.4.0","keywords":["pi-package","pi-extension","web-search","web-fetch","search","fetch","tavily","exa","brave","jina","firecrawl","ai","llm","agent"],"author":{"name":"byte"},"license":"MIT","_id":"@bytetrue/pi-web-search@0.4.0","maintainers":[{"name":"bytetrue","email":"bytetrue@outlook.com"}],"homepage":"https://github.com/ByteTrue/pi-package-mono#readme","bugs":{"url":"https://github.com/ByteTrue/pi-package-mono/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"3440dc9ba0690c6cb7a1992dd75819b56ca73a95","tarball":"https://registry.npmjs.org/@bytetrue/pi-web-search/-/pi-web-search-0.4.0.tgz","fileCount":22,"integrity":"sha512-WQ8vp7AVT0NrntcNePxseb5tS4f0uyR8gRi1m4lnZE67UC/p5fVwjUy9CDxfjkTKVdtLkBa8+irpT7XPQaG6jw==","signatures":[{"sig":"MEYCIQDTvWRulCv0w00oqEtmfOvnATwS+5oMCGNmWE1+2lFTswIhAOZG80h7+rjUBR4+OLULzXewfIRpqB9j8j9POhVjbH6W","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@bytetrue%2fpi-web-search@0.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":166233},"type":"module","gitHead":"a1ad3c603e61ce2c5cf9a30a633c7056ba252601","scripts":{"test":"vitest run","test:e2e":"vitest run src/live.e2e.test.ts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4b8576b9-7515-43ea-bee1-6bfec4598edc"}},"repository":{"url":"git+https://github.com/ByteTrue/pi-package-mono.git","type":"git","directory":"packages/pi-web-search"},"_npmVersion":"12.0.2","description":"Pi extension: web_search + web_fetch with zero-config Exa MCP free search, keyless Bing, self-hosted SearXNG, and pluggable providers (Bocha, Tavily, Exa, Brave, Jina, Firecrawl).","directories":{},"_nodeVersion":"24.19.0","dependencies":{"undici":"8.9.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.0.0","typescript":"^5.0.0","@types/node":"^22.0.0"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web-search_0.4.0_1787933587805_0.8430669443606091","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@bytetrue/pi-web-search","version":"0.4.1","keywords":["pi-package","pi-extension","web-search","web-fetch","search","fetch","tavily","exa","brave","jina","firecrawl","ai","llm","agent"],"author":{"name":"byte"},"license":"MIT","_id":"@bytetrue/pi-web-search@0.4.1","maintainers":[{"name":"bytetrue","email":"bytetrue@outlook.com"}],"homepage":"https://github.com/ByteTrue/pi-package-mono#readme","bugs":{"url":"https://github.com/ByteTrue/pi-package-mono/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"8f168730e3b7d5b1f7bf281d70dfbcd5bfb25180","tarball":"https://registry.npmjs.org/@bytetrue/pi-web-search/-/pi-web-search-0.4.1.tgz","fileCount":22,"integrity":"sha512-qs+0tgKMp6RRZJLb9kDcBvewwSsH9WgJ0A9+QUYMYD9vVzQQ6ltGNInL8Jim14PrlTulEE37sTEPkkUC211HNA==","signatures":[{"sig":"MEQCIGjKS4koWPbuJkb2dliI2ziWEGtkBs21EyfLAqmR/4TqAiA3XErp03Qrln6jSBrFQ6Dx+5mjs5EWfDbAujAT0WunTA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIC+2KGVa5fCFkqfVoQv9p4JrHQ/s1JcBCXRGwI1qVwQ+AiB3A9BwZAMUKjAvjtA2B8zG6jGnBwbM/fv+hWipjMHgGA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@bytetrue%2fpi-web-search@0.4.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":166435},"type":"module","gitHead":"4918cbfce7565f5b4f05452b93d986e4a6ae6cba","scripts":{"test":"vitest run","test:e2e":"vitest run src/live.e2e.test.ts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4b8576b9-7515-43ea-bee1-6bfec4598edc"}},"repository":{"url":"git+https://github.com/ByteTrue/pi-package-mono.git","type":"git","directory":"packages/pi-web-search"},"_npmVersion":"12.0.2","description":"Pi extension: web_search + web_fetch with zero-config Exa MCP free search, keyless Bing, self-hosted SearXNG, and pluggable providers (Bocha, Tavily, Exa, Brave, Jina, Firecrawl).","directories":{},"_nodeVersion":"24.20.0","dependencies":{"undici":"8.9.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.11","typescript":"^5.0.0","@types/node":"^22.0.0"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web-search_0.4.1_1789879401254_0.29480160204750994","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@bytetrue/pi-web-search","version":"0.5.0","keywords":["pi-package","pi-extension","web-search","web-fetch","search","fetch","tavily","exa","brave","jina","firecrawl","ai","llm","agent"],"author":{"name":"byte"},"license":"MIT","_id":"@bytetrue/pi-web-search@0.5.0","maintainers":[{"name":"bytetrue","email":"bytetrue@outlook.com"}],"homepage":"https://github.com/ByteTrue/pi-package-mono#readme","bugs":{"url":"https://github.com/ByteTrue/pi-package-mono/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"300919cb82dc8f380f6ffd1039fd60a303ecd5e2","tarball":"https://registry.npmjs.org/@bytetrue/pi-web-search/-/pi-web-search-0.5.0.tgz","fileCount":22,"integrity":"sha512-+057W85I928gON9jG84YanpyGZqqIP1UKdq39wvLDBRFX0VoW9mzBE4OxTwrHBnf8Ciypx0CmO+1y/tIrnC9AQ==","signatures":[{"sig":"MEUCIQCw2gyXJdUJmKd5LzMXo/7tEAZ1P/NOZRExSoOznaNdCgIgRFGx+JeYAVn/M7+voXaZciBpsS0ZVbeQ97flh1bMVzQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDg4RD0NtY/wWMbsLZB5qVkKV4wyUbUiJykcn0Nkj2lAwIgCk88sF0ur5rUSXonYHL98B+Gb/0X2jm47xa5FKUUquU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@bytetrue%2fpi-web-search@0.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":169666},"type":"module","gitHead":"4dbaba7033a0850b338b62156f5b2bfcf3e270c6","scripts":{"test":"vitest run","test:e2e":"vitest run src/live.e2e.test.ts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"4b8576b9-7515-43ea-bee1-6bfec4598edc"}},"repository":{"url":"git+https://github.com/ByteTrue/pi-package-mono.git","type":"git","directory":"packages/pi-web-search"},"_npmVersion":"12.1.0","description":"Pi extension: web_search + web_fetch with zero-config Exa MCP free search, keyless Bing, self-hosted SearXNG, and pluggable providers (Bocha, Tavily, Exa, Brave, Jina, Firecrawl).","directories":{},"_nodeVersion":"24.21.0","dependencies":{"undici":"8.9.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.11","typescript":"^5.0.0","@types/node":"^22.0.0"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web-search_0.5.0_1790756623279_0.9865781399302977","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"pi":{"extensions":["./src/index.ts"]},"_id":"@bytetrue/pi-web-search@0.5.1","bugs":{"url":"https://github.com/ByteTrue/pi-package-mono/issues"},"dist":{"shasum":"75e86f260befc26508262a752a3f0cb3412a5bce","tarball":"https://registry.npmjs.org/@bytetrue/pi-web-search/-/pi-web-search-0.5.1.tgz","fileCount":22,"integrity":"sha512-UYgw5Yw0goW29k5kYtWc44E27SNyxW6eLmuBB8iadoLy9D4L2+Tpr+CW9I6w0LKEo4unQvQtXx6JLvvlZ483/g==","signatures":[{"sig":"MEYCIQCq/uYWHo1efmrm7IyNoprFIKYlc6vdZpR2CKluUMpl+wIhAMrXwvBYlytlwi7vsJMfqi2PMIoRyzjkaQNKdaa0qhBw","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDPdUBONiGSicJORpV4wR2Mc2oIWO8RHTDYA3FIhsd2ggIgTNJF1wCebBTEnZHTBpmN/tnVG570qrR//Zpcv2KMaog="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@bytetrue%2fpi-web-search@0.5.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":169667},"name":"@bytetrue/pi-web-search","type":"module","author":{"name":"byte"},"gitHead":"884fbaed73e0938bfba38d4cd6d6ad80b982460e","license":"MIT","scripts":{"test":"vitest run","test:e2e":"vitest run src/live.e2e.test.ts","typecheck":"tsc --noEmit"},"version":"0.5.1","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"4b8576b9-7515-43ea-bee1-6bfec4598edc"}},"homepage":"https://github.com/ByteTrue/pi-package-mono#readme","keywords":["pi-package","pi-extension","web-search","web-fetch","search","fetch","tavily","exa","brave","jina","firecrawl","ai","llm","agent"],"repository":{"url":"git+https://github.com/ByteTrue/pi-package-mono.git","type":"git","directory":"packages/pi-web-search"},"_npmVersion":"12.2.0","description":"Pi extension: web_search + web_fetch with zero-config Exa MCP free search, keyless Bing, self-hosted SearXNG, and pluggable providers (Bocha, Tavily, Exa, Brave, Jina, Firecrawl).","directories":{},"maintainers":[{"name":"bytetrue","email":"bytetrue@outlook.com"}],"_nodeVersion":"24.21.0","dependencies":{"undici":"8.11.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.11","typescript":"^5.0.0","@types/node":"^22.0.0"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/pi-web-search_0.5.1_1790825369523_0.9509162765832031"}}},"time":{"created":"2026-06-20T07:40:12.740Z","modified":"2026-10-01T03:29:29.885Z","0.1.0":"2026-06-20T07:40:13.026Z","0.1.1":"2026-07-04T17:18:43.970Z","0.1.2":"2026-07-11T18:15:34.582Z","0.1.3":"2026-07-19T16:03:37.514Z","0.2.0":"2026-08-06T17:46:20.176Z","0.2.1":"2026-08-11T15:24:32.452Z","0.3.0":"2026-08-24T14:16:58.268Z","0.4.0":"2026-08-28T16:13:07.974Z","0.4.1":"2026-09-20T04:43:21.342Z","0.5.0":"2026-09-30T08:23:43.371Z","0.5.1":"2026-10-01T03:29:29.599Z"},"bugs":{"url":"https://github.com/ByteTrue/pi-package-mono/issues"},"author":{"name":"byte"},"license":"MIT","homepage":"https://github.com/ByteTrue/pi-package-mono#readme","keywords":["pi-package","pi-extension","web-search","web-fetch","search","fetch","tavily","exa","brave","jina","firecrawl","ai","llm","agent"],"repository":{"url":"git+https://github.com/ByteTrue/pi-package-mono.git","type":"git","directory":"packages/pi-web-search"},"description":"Pi extension: web_search + web_fetch with zero-config Exa MCP free search, keyless Bing, self-hosted SearXNG, and pluggable providers (Bocha, Tavily, Exa, Brave, Jina, Firecrawl).","maintainers":[{"name":"bytetrue","email":"bytetrue@outlook.com"}],"readme":"<p align=\"center\">\n  <img src=\"./docs/banner.webp\" alt=\"A web radar selecting a source and returning a guarded document\" width=\"100%\">\n</p>\n\n<h1 align=\"center\">@bytetrue/pi-web-search</h1>\n\n<p align=\"center\">Search the current web and fetch public pages through explicit, bounded routes.</p>\n\n<p align=\"center\">\n  <a href=\"https://www.npmjs.com/package/@bytetrue/pi-web-search\"><img src=\"https://img.shields.io/npm/v/@bytetrue/pi-web-search?style=flat-square\" alt=\"npm version\"></a>\n</p>\n\nZero-config search works immediately through Exa MCP free. `/web` adds provider, API-key, SearXNG, and proxy configuration without requiring manual JSON edits.\n\n## Install\n\n```bash\npi install npm:@bytetrue/pi-web-search\n```\n\nRestart or reload Pi, then ask it to search the web. Run `/web` only when you want to change provider or network settings.\n\n> [!IMPORTANT]\n> Remove any extension that already registers `web_search` or `web_fetch`; Pi tool names must be unique.\n\n## Tools\n\n### `web_search`\n\n| Argument | Required | Meaning |\n| --- | --- | --- |\n| `query` | Yes | Search text |\n| `max_results` | No | 1–10 results; default 5 |\n\nSearch follows the provider chain configured in `/web`: the first provider is tried first, then configured fallbacks after provider creation, request, or timeout failures. User cancellation stops the whole chain; an empty successful result does not trigger fallback.\n\n### `web_fetch`\n\n| Argument | Required | Meaning |\n| --- | --- | --- |\n| `url` | Yes | Public HTTP(S) URL |\n| `raw` | No | Return raw HTML instead of extracted text |\n\nSearch-provider choice never changes fetch routing. Every URL uses the same generic transport with redirect revalidation, SSRF checks, text-only enforcement, and a 10 MiB decoded-body limit. Large accepted text is truncated for context and saved to a temporary file for later reading.\n\n## Configure with `/web`\n\nThe TUI can select an active provider, configure an ordered fallback chain, enter provider keys, set a SearXNG base URL, and configure an HTTP proxy. `/web --show` reports the provider chain with credentials masked. The API-key field is visible while typing; prefer the provider's environment variable when sharing or recording your terminal.\n\n| Provider | Environment variable | Notes |\n| --- | --- | --- |\n| Exa MCP free | — | Keyless default |\n| Bing | — | Keyless; useful in mainland China without a proxy |\n| SearXNG | `SEARXNG_URL` | Self-hosted base URL |\n| Bocha 博查 | `BOCHA_API_KEY` | China AI-search API |\n| Tavily | `TAVILY_API_KEY` | Search API |\n| Exa | `EXA_API_KEY` | Search API |\n| Brave | `BRAVE_SEARCH_API_KEY` | Search API |\n| Jina | `JINA_API_KEY` | Search API |\n| Firecrawl | `FIRECRAWL_API_KEY` | Search API |\n\nProvider API-key and base-URL environment variables override stored provider values; a configured proxy overrides proxy environment variables. Configuration lives at `<agent dir>/pi-pkg-cfg/pi-web-search/config.json`, where `<agent dir>` is `$PI_CODING_AGENT_DIR` or `~/.pi/agent`; set `PI_PKG_CFG_DIR` to put the whole root somewhere else. Writes are atomic with mode `0600`, and malformed JSON is never overwritten.\n\nUpgrading from pi-web-search 0.4.x: the older `~/.pi/byte-pi-web/config.json` is copied into the new location the first time the package reads it, and the original is left untouched so downgrading still works. `PI_CONFIG_DIR` now only locates that older file; it no longer moves the live one.\n\n## Proxy behavior\n\nConfigure a proxy through `/web`, or set `HTTP_PROXY`, `HTTPS_PROXY`, or `ALL_PROXY` before starting Pi. Provider requests honor `NO_PROXY`.\n\nThe dispatcher is package-scoped and never changes Node's process-global dispatcher. Arbitrary `web_fetch` targets intentionally do not use `NO_PROXY` to escape the guarded route. Set `BYTE_PI_WEB_NO_PROXY=1` to disable proxy use for this package.\n\nDirect fetches block private, loopback, link-local, metadata, and other non-public destinations after local DNS resolution and at redirect/connect time. With an explicit proxy, local/private hostnames and IP literals remain blocked while the proxy becomes the trusted boundary for target DNS resolution.\n\n<details>\n<summary>Optional configuration shape</summary>\n\n```json\n{\n  \"providers\": [\"exa-free\", \"bing\"],\n  \"proxy\": \"http://127.0.0.1:7890\",\n  \"apiKeys\": { \"tavily\": \"tvly-...\" },\n  \"baseUrls\": { \"searxng\": \"http://127.0.0.1:8080\" }\n}\n```\n\nThe `/web` flow is preferred. Only `providers` is read; a legacy singular `provider` field is ignored.\n\n</details>\n\n## Development\n\n```bash\nnpm --workspace @bytetrue/pi-web-search test\nnpm --workspace @bytetrue/pi-web-search run typecheck\nnpm --workspace @bytetrue/pi-web-search pack --dry-run\n```\n\nLive provider tests are opt-in:\n\n```bash\nnpm --workspace @bytetrue/pi-web-search run test:e2e\n```\n","readmeFilename":"README.md"}