{"_id":"@curio-data/pi-intelli-search","_rev":"27-2c9cd8b04ed77f7141d7ae416432be68","name":"@curio-data/pi-intelli-search","dist-tags":{"latest":"0.14.0"},"versions":{"0.3.1-alpha.1":{"name":"@curio-data/pi-intelli-search","version":"0.3.1-alpha.1","keywords":["pi-package","pi-extension","web-research","web-search","intelli-search"],"license":"Apache-2.0","_id":"@curio-data/pi-intelli-search@0.3.1-alpha.1","maintainers":[{"name":"miah0x41","email":"ashraf@curiodata.pro"}],"homepage":"https://github.com/Curio-Data/pi-intelli-search#readme","bugs":{"url":"https://github.com/Curio-Data/pi-intelli-search/issues"},"pi":{"skills":["./skills"],"extensions":["./src/index.ts"]},"dist":{"shasum":"24f49a722d5c36fcc0afe1e5655d16f84738ccdd","tarball":"https://registry.npmjs.org/@curio-data/pi-intelli-search/-/pi-intelli-search-0.3.1-alpha.1.tgz","fileCount":58,"integrity":"sha512-guxGGu4nadQF5CUyWDM9GtRbLA9oQQiw6mZ5YT3l4i8ro/fo6WyhDR/PzvUxb4VerPPL9FsH8aF8sDBuInwwQw==","signatures":[{"sig":"MEUCID9FZW46dxyl+MN0tHIvjsz+Vra3jiPq2Mc3pVxkdB5TAiEAzLSXTfZcLoMApLV5un3vmefo5DxpJF4Q69qkQ3oUWfQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@curio-data%2fpi-intelli-search@0.3.1-alpha.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":241031},"type":"module","gitHead":"9496b37c5bdaeae836c47298ebd43da5ffeec8b8","scripts":{"dev":"tsc --watch","test":"node --import tsx --test test/*.test.ts","build":"tsc","test:smoke":"node --import tsx test/smoke.ts"},"_npmUser":{"name":"miah0x41","email":"ashraf@curiodata.pro"},"repository":{"url":"git+https://github.com/Curio-Data/pi-intelli-search.git","type":"git"},"_npmVersion":"10.9.7","description":"Intelligent web research for Pi: search, extract, collate, and cache grounded web context in one tool call.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"wreq-js":"^2.3.0","defuddle":"^0.16.0","linkedom":"^0.18.12"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","typebox":"*","typescript":"^5.7.0","@mariozechner/pi-ai":"^0.72.1","@mariozechner/pi-coding-agent":"^0.72.1"},"peerDependencies":{"typebox":"*","@mariozechner/pi-ai":"*","@mariozechner/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-intelli-search_0.3.1-alpha.1_1777921560195_0.7227648448844146","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@curio-data/pi-intelli-search","version":"0.3.1","keywords":["pi-package","pi-extension","web-research","web-search","intelli-search"],"license":"Apache-2.0","_id":"@curio-data/pi-intelli-search@0.3.1","maintainers":[{"name":"miah0x41","email":"ashraf@curiodata.pro"}],"homepage":"https://github.com/Curio-Data/pi-intelli-search#readme","bugs":{"url":"https://github.com/Curio-Data/pi-intelli-search/issues"},"pi":{"skills":["./skills"],"extensions":["./src/index.ts"]},"dist":{"shasum":"225acefee6109b7d6ce361a52e8ea75658016145","tarball":"https://registry.npmjs.org/@curio-data/pi-intelli-search/-/pi-intelli-search-0.3.1.tgz","fileCount":58,"integrity":"sha512-By9Jbz1fO1QESeXUoVp0kTmTSuNEHQI24vXvzVNlrcjQu3/bLTeiCvabZ6uDuarYBqKsZHYqZEJ2SEMSjOsC3g==","signatures":[{"sig":"MEUCIBKCNb/6N/wls5H5gmVYfOT4pGKSDDdgC5NLE5ADA7irAiEAq+X+z1+LFPJLahAhnwM7ee8gzsQAhq5AgmJtKmx1H44=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@curio-data%2fpi-intelli-search@0.3.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":241391},"type":"module","gitHead":"03ed0c1ca970bece2d134323477001ae95f78ec9","scripts":{"dev":"tsc --watch","test":"node --import tsx --test test/*.test.ts","build":"tsc","test:smoke":"node --import tsx test/smoke.ts"},"_npmUser":{"name":"miah0x41","email":"ashraf@curiodata.pro"},"repository":{"url":"git+https://github.com/Curio-Data/pi-intelli-search.git","type":"git"},"_npmVersion":"10.9.7","description":"Intelligent web research for Pi: search, extract, collate, and cache grounded web context in one tool call.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"wreq-js":"^2.3.0","defuddle":"^0.16.0","linkedom":"^0.18.12"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","typebox":"*","typescript":"^5.7.0","@mariozechner/pi-ai":"^0.72.1","@mariozechner/pi-coding-agent":"^0.72.1"},"peerDependencies":{"typebox":"*","@mariozechner/pi-ai":"*","@mariozechner/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-intelli-search_0.3.1_1777923107282_0.4833389834055901","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"@curio-data/pi-intelli-search","version":"0.3.2","keywords":["pi-package","pi-extension","web-research","web-search","intelli-search"],"license":"Apache-2.0","_id":"@curio-data/pi-intelli-search@0.3.2","maintainers":[{"name":"miah0x41","email":"ashraf@curiodata.pro"}],"homepage":"https://github.com/Curio-Data/pi-intelli-search#readme","bugs":{"url":"https://github.com/Curio-Data/pi-intelli-search/issues"},"pi":{"image":"https://raw.githubusercontent.com/Curio-Data/pi-intelli-search/main/docs/images/02.png","skills":["./skills"],"extensions":["./src/index.ts"]},"dist":{"shasum":"03e7e80b921b8d428eef62b9ec895bff695e50dc","tarball":"https://registry.npmjs.org/@curio-data/pi-intelli-search/-/pi-intelli-search-0.3.2.tgz","fileCount":58,"integrity":"sha512-EReRv0VXjKbjEUJeYKgdPJXhRW71/WXWWe2EtGs5WN5A0xsYsoPNBnJTCqm3uTL/+VZIHI0Zg/YU85ag9cY6nQ==","signatures":[{"sig":"MEQCICa6hbnnsNgncn1D5SUDMFAJJWXy+vQ4WMrILZOkvuaHAiBuyPTjwzBvTH5aeNwf/w5V0maJUaEmDs10bCWJwi5XcQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@curio-data%2fpi-intelli-search@0.3.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":243769},"type":"module","gitHead":"dcd832b8f308fab4970bd65e16dee4a892715211","scripts":{"dev":"tsc --watch","test":"node --import tsx --test test/*.test.ts","build":"tsc","test:smoke":"node --import tsx test/smoke.ts"},"_npmUser":{"name":"miah0x41","email":"ashraf@curiodata.pro"},"repository":{"url":"git+https://github.com/Curio-Data/pi-intelli-search.git","type":"git"},"_npmVersion":"10.9.7","description":"Intelligent web research for Pi: search, extract, collate, and cache grounded web context in one tool call.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"wreq-js":"^2.3.0","defuddle":"^0.16.0","linkedom":"^0.18.12"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","typebox":"*","typescript":"^5.7.0","@mariozechner/pi-ai":"^0.72.1","@mariozechner/pi-coding-agent":"^0.72.1"},"peerDependencies":{"typebox":"*","@mariozechner/pi-ai":"*","@mariozechner/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-intelli-search_0.3.2_1777929323450_0.6542592001068634","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@curio-data/pi-intelli-search","version":"0.4.0","keywords":["pi-package","pi-extension","web-research","web-search","intelli-search"],"license":"Apache-2.0","_id":"@curio-data/pi-intelli-search@0.4.0","maintainers":[{"name":"miah0x41","email":"ashraf@curiodata.pro"}],"homepage":"https://github.com/Curio-Data/pi-intelli-search#readme","bugs":{"url":"https://github.com/Curio-Data/pi-intelli-search/issues"},"pi":{"image":"https://raw.githubusercontent.com/Curio-Data/pi-intelli-search/main/docs/images/02.png","skills":["./skills"],"extensions":["./src/index.ts"]},"dist":{"shasum":"426114e57acc0fa69e674d4fd8d3dd47e799b92e","tarball":"https://registry.npmjs.org/@curio-data/pi-intelli-search/-/pi-intelli-search-0.4.0.tgz","fileCount":58,"integrity":"sha512-6+GWUjFkC21lVdKhwPrWpZyUBz8AM+kTRhOvLVMVM2HRoxpDzqBWcvIfc6NXTdgvBg9wSfagRi2N51DG/hMuDA==","signatures":[{"sig":"MEYCIQDjIHo+EiDk/FAPkVwngOxiQx/FX+tdvsZvPLbA6OMwoQIhANsjXGe8tQ9TJtbjT1tsDwuaBJzKq1GzQURZbS8pR2eC","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@curio-data%2fpi-intelli-search@0.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":250911},"type":"module","gitHead":"2e01f61ffc6b45b1ab60fe173a4014fa06029b31","scripts":{"dev":"tsc --watch","test":"node --import tsx --test test/*.test.ts","build":"tsc","test:smoke":"node --import tsx test/smoke.ts"},"_npmUser":{"name":"miah0x41","email":"ashraf@curiodata.pro"},"repository":{"url":"git+https://github.com/Curio-Data/pi-intelli-search.git","type":"git"},"_npmVersion":"10.9.7","description":"Intelligent web research for Pi: search, extract, collate, and cache grounded web context in one tool call.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"wreq-js":"^2.3.0","defuddle":"^0.16.0","linkedom":"^0.18.12"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","typebox":"*","typescript":"^5.7.0","@mariozechner/pi-ai":"^0.72.1","@mariozechner/pi-coding-agent":"^0.72.1"},"peerDependencies":{"typebox":"*","@mariozechner/pi-ai":"*","@mariozechner/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-intelli-search_0.4.0_1778010992960_0.4363079766642499","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@curio-data/pi-intelli-search","version":"0.4.1","keywords":["pi-package","pi-extension","web-research","web-search","intelli-search"],"license":"Apache-2.0","_id":"@curio-data/pi-intelli-search@0.4.1","maintainers":[{"name":"miah0x41","email":"ashraf@curiodata.pro"}],"homepage":"https://github.com/Curio-Data/pi-intelli-search#readme","bugs":{"url":"https://github.com/Curio-Data/pi-intelli-search/issues"},"pi":{"image":"https://raw.githubusercontent.com/Curio-Data/pi-intelli-search/main/docs/images/02.png","skills":["./skills"],"extensions":["./src/index.ts"]},"dist":{"shasum":"751808cea9efe356a0c221c6c82c9902a1d59af6","tarball":"https://registry.npmjs.org/@curio-data/pi-intelli-search/-/pi-intelli-search-0.4.1.tgz","fileCount":58,"integrity":"sha512-GM3eQ3r6+hkYMceGzgVP+jHXkYWrp6hQ+B3EAz70MgwM2G1uP1OQy2r9GdxUua2XN8LzSkrV+l4RrhuJOW2y/w==","signatures":[{"sig":"MEUCIGjnIhQLc8qFekB9f04M0rkyKh0Y3k5d6AkEg80022vaAiEAoCRC+1qqQZ6u71eCZPzrDDb0hxulJEEZm/WN4tpgowY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@curio-data%2fpi-intelli-search@0.4.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":251716},"type":"module","gitHead":"8b73c0cb0c55067b669bb19679920dc11a04601f","scripts":{"dev":"tsc --watch","test":"node --import tsx --test test/*.test.ts","build":"tsc","test:smoke":"node --import tsx test/smoke.ts"},"_npmUser":{"name":"miah0x41","email":"ashraf@curiodata.pro"},"repository":{"url":"git+https://github.com/Curio-Data/pi-intelli-search.git","type":"git"},"_npmVersion":"10.9.7","description":"Intelligent web research for Pi: search, extract, collate, and cache grounded web context in one tool call.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"wreq-js":"^2.3.0","defuddle":"^0.16.0","linkedom":"^0.18.12"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","typebox":"*","typescript":"^5.7.0","@mariozechner/pi-ai":"^0.73.0","@mariozechner/pi-coding-agent":"^0.73.0"},"peerDependencies":{"typebox":"*","@mariozechner/pi-ai":"*","@mariozechner/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-intelli-search_0.4.1_1778060229174_0.8572558404520709","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@curio-data/pi-intelli-search","version":"0.5.0","keywords":["pi-package","pi-extension","web-research","web-search","intelli-search"],"license":"Apache-2.0","_id":"@curio-data/pi-intelli-search@0.5.0","maintainers":[{"name":"miah0x41","email":"ashraf@curiodata.pro"}],"homepage":"https://github.com/Curio-Data/pi-intelli-search#readme","bugs":{"url":"https://github.com/Curio-Data/pi-intelli-search/issues"},"pi":{"image":"https://raw.githubusercontent.com/Curio-Data/pi-intelli-search/main/docs/images/06.avif","skills":["./skills"],"extensions":["./src/index.ts"]},"dist":{"shasum":"ff0dd777f48bff3530dad3e9d048780adf7f582c","tarball":"https://registry.npmjs.org/@curio-data/pi-intelli-search/-/pi-intelli-search-0.5.0.tgz","fileCount":58,"integrity":"sha512-EPcVe+UPOsyrhXsjmZZWdv6/rtjQZ30raV2n+6uW6xZKeuUtGmBWVIYakkWos9Eh0Z8RS+CkiTzULb+uZbM8LQ==","signatures":[{"sig":"MEQCICbBFmKMDrdiiPiFYB586Gqu3HxGs/he3pDJrVIU7FuqAiBdD6uJ44xA4ivhABnBQKusY6+qwRehS0ulJ4+knKFtKw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@curio-data%2fpi-intelli-search@0.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":253606},"type":"module","gitHead":"b5b7f16d0ea08b13fdf00f4aacd90cb596e65402","scripts":{"dev":"tsc --watch","test":"node --import tsx --test test/*.test.ts","build":"tsc","test:smoke":"node --import tsx test/smoke.ts"},"_npmUser":{"name":"miah0x41","email":"ashraf@curiodata.pro"},"repository":{"url":"git+https://github.com/Curio-Data/pi-intelli-search.git","type":"git"},"_npmVersion":"10.9.7","description":"Intelligent web research for Pi: search, extract, collate, and cache grounded web context in one tool call.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"wreq-js":"^2.3.0","defuddle":"^0.16.0","linkedom":"^0.18.12"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","typebox":"*","typescript":"^5.7.0","@mariozechner/pi-ai":"^0.73.0","@mariozechner/pi-coding-agent":"^0.73.0"},"peerDependencies":{"typebox":"*","@mariozechner/pi-ai":"*","@mariozechner/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-intelli-search_0.5.0_1778092868783_0.10500306619945254","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"name":"@curio-data/pi-intelli-search","version":"0.5.1","keywords":["pi-package","pi-extension","web-research","web-search","intelli-search"],"license":"Apache-2.0","_id":"@curio-data/pi-intelli-search@0.5.1","maintainers":[{"name":"miah0x41","email":"ashraf@curiodata.pro"}],"homepage":"https://github.com/Curio-Data/pi-intelli-search#readme","bugs":{"url":"https://github.com/Curio-Data/pi-intelli-search/issues"},"pi":{"image":"https://raw.githubusercontent.com/Curio-Data/pi-intelli-search/main/docs/images/06.png","skills":["./skills"],"extensions":["./src/index.ts"]},"dist":{"shasum":"9760fe62e4e6a1744886cc28b815b45a24062f36","tarball":"https://registry.npmjs.org/@curio-data/pi-intelli-search/-/pi-intelli-search-0.5.1.tgz","fileCount":58,"integrity":"sha512-WZYH9Jzgcx1JOLIRBFC7lZZ8BR6LXZMBOz7ciXNreUmBI0u4qxcsWhEcQLzyG9y8ZJai+TxbfAUOe00aQf1AFw==","signatures":[{"sig":"MEQCIDlbIORZh0rn6yfgFOMwUEkgzMsX3HSmFilrRZGRJghyAiBu4vv49lsQ2uADCpRW9HwcSlHMugU/w2ypyIvcDnHHDg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@curio-data%2fpi-intelli-search@0.5.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":255231},"type":"module","gitHead":"6dbb4beb1b2aa108ccaf1cf9ae8b3eeb4c7fd7f6","scripts":{"dev":"tsc --watch","test":"node --import tsx --test test/*.test.ts","build":"tsc","test:smoke":"node --import tsx test/smoke.ts"},"_npmUser":{"name":"miah0x41","email":"ashraf@curiodata.pro"},"repository":{"url":"git+https://github.com/Curio-Data/pi-intelli-search.git","type":"git"},"_npmVersion":"10.9.7","description":"Intelligent web research for Pi: search, extract, collate, and cache grounded web context in one tool call.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"wreq-js":"^2.3.0","defuddle":"^0.16.0","linkedom":"^0.18.12"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","typebox":"*","typescript":"^5.7.0","@mariozechner/pi-ai":"^0.73.0","@mariozechner/pi-coding-agent":"^0.73.0"},"peerDependencies":{"typebox":"*","@mariozechner/pi-ai":"*","@mariozechner/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-intelli-search_0.5.1_1778096579880_0.4126086066981578","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@curio-data/pi-intelli-search","version":"0.6.0","keywords":["pi-package","pi-extension","web-research","web-search","intelli-search"],"license":"Apache-2.0","_id":"@curio-data/pi-intelli-search@0.6.0","maintainers":[{"name":"miah0x41","email":"ashraf@curiodata.pro"}],"homepage":"https://github.com/Curio-Data/pi-intelli-search#readme","bugs":{"url":"https://github.com/Curio-Data/pi-intelli-search/issues"},"pi":{"image":"https://raw.githubusercontent.com/Curio-Data/pi-intelli-search/main/docs/images/06.png","skills":["./skills"],"extensions":["./src/index.ts"]},"dist":{"shasum":"dfe3439204d172862e5b553e3d528a56fdd429f9","tarball":"https://registry.npmjs.org/@curio-data/pi-intelli-search/-/pi-intelli-search-0.6.0.tgz","fileCount":58,"integrity":"sha512-d3XU0DFvtdIHGD8QYezTFzg6SNTlQCE7FfgSe1cXatAVhYx0kSbtC9fdhv84C8HdD8tJhNVbQGjsw19ko8oK/A==","signatures":[{"sig":"MEQCIEaxI0F9Zl8kbsZ47KXMHe7N5LtcZ2vFyUk0b/rCpjM/AiBZIUE78AknTPJwsTIXGGS5RtNu2dx1Ityd7uHeairjQA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@curio-data%2fpi-intelli-search@0.6.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":256413},"type":"module","gitHead":"90c8448fb70cca8092e727ea23bd102d28561dcb","scripts":{"dev":"tsc --watch","test":"node --import tsx --test test/*.test.ts","build":"tsc","test:smoke":"node --import tsx test/smoke.ts"},"_npmUser":{"name":"miah0x41","email":"ashraf@curiodata.pro"},"repository":{"url":"git+https://github.com/Curio-Data/pi-intelli-search.git","type":"git"},"_npmVersion":"10.9.7","description":"Intelligent web research for Pi: search, extract, collate, and cache grounded web context in one tool call.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"wreq-js":"^2.3.0","defuddle":"^0.16.0","linkedom":"^0.18.12"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","typebox":"*","typescript":"^5.7.0","@mariozechner/pi-ai":"^0.73.0","@mariozechner/pi-coding-agent":"^0.73.0"},"peerDependencies":{"typebox":"*","@mariozechner/pi-ai":"*","@mariozechner/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-intelli-search_0.6.0_1778409880822_0.27727881638729257","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@curio-data/pi-intelli-search","version":"0.7.0","keywords":["pi-package","pi-extension","web-research","web-search","intelli-search"],"license":"Apache-2.0","_id":"@curio-data/pi-intelli-search@0.7.0","maintainers":[{"name":"miah0x41","email":"ashraf@curiodata.pro"}],"homepage":"https://github.com/Curio-Data/pi-intelli-search#readme","bugs":{"url":"https://github.com/Curio-Data/pi-intelli-search/issues"},"pi":{"image":"https://raw.githubusercontent.com/Curio-Data/pi-intelli-search/main/docs/images/06.png","skills":["./skills"],"extensions":["./src/index.ts"]},"dist":{"shasum":"714025142d31830fffe76011a8e0ed097b441cf2","tarball":"https://registry.npmjs.org/@curio-data/pi-intelli-search/-/pi-intelli-search-0.7.0.tgz","fileCount":58,"integrity":"sha512-u7E5tNW0lROSVvKaEm9UffIgSlmxHr0LPCGUBFRrq1BfOKyiEt5VF1txxiH/HFgAHU/nJ0bBTwEaClkJ0eLAcg==","signatures":[{"sig":"MEUCIQCWmgFQd20vTt5QjwM2aQiujeqyWsQidV7/mUgiReZ3zQIgToG4Qu1FKhvAqsMizJIe0xYVbhGDD9OFN0HHPmdz4W0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@curio-data%2fpi-intelli-search@0.7.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":257111},"type":"module","gitHead":"a4f5d80a5c35cfe855f40da290d2d097a3e7fda4","scripts":{"dev":"tsc --watch","test":"node --import tsx --test test/*.test.ts","build":"tsc","test:smoke":"node --import tsx test/smoke.ts"},"_npmUser":{"name":"miah0x41","email":"ashraf@curiodata.pro"},"repository":{"url":"git+https://github.com/Curio-Data/pi-intelli-search.git","type":"git"},"_npmVersion":"10.9.7","description":"Intelligent web research for Pi: search, extract, collate, and cache grounded web context in one tool call.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"wreq-js":"^2.3.0","defuddle":"^0.16.0","linkedom":"^0.18.12"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","typebox":"*","typescript":"^5.7.0","@earendil-works/pi-ai":"^0.74.0","@earendil-works/pi-coding-agent":"^0.74.0"},"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-intelli-search_0.7.0_1778774070526_0.16587986058059734","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"@curio-data/pi-intelli-search","version":"0.8.0","keywords":["pi-package","pi-extension","web-research","web-search","intelli-search"],"license":"Apache-2.0","_id":"@curio-data/pi-intelli-search@0.8.0","maintainers":[{"name":"miah0x41","email":"ashraf@curiodata.pro"}],"homepage":"https://github.com/Curio-Data/pi-intelli-search#readme","bugs":{"url":"https://github.com/Curio-Data/pi-intelli-search/issues"},"pi":{"image":"https://raw.githubusercontent.com/Curio-Data/pi-intelli-search/main/docs/images/06.png","skills":["./skills"],"extensions":["./src/index.ts"]},"dist":{"shasum":"1a517a995090d4b45f6e3374f6612b789ef1dde7","tarball":"https://registry.npmjs.org/@curio-data/pi-intelli-search/-/pi-intelli-search-0.8.0.tgz","fileCount":58,"integrity":"sha512-be8tgavoGjo3rAPPvhvAv5QbQNzlCbeTE0tZq2O5bsAyfAJvvjD5bwtescXISC9HZpXHkBGOPEnsLg+2gzQk2w==","signatures":[{"sig":"MEUCIHwqVtnFM5HIR0DxuUV9DPx7u7NpkgR2EntvJX5gQOE8AiEArpacbjEyUjQCFJv9h25/rmHyrCqqEuuu8/vlpLfVXHc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@curio-data%2fpi-intelli-search@0.8.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":317916},"type":"module","gitHead":"9b84533c19e8d9e68702be44c11f73de881c5f8a","scripts":{"dev":"tsc --watch","test":"node --import tsx --test test/*.test.ts","build":"tsc","test:smoke":"node --import tsx test/smoke.ts"},"_npmUser":{"name":"miah0x41","email":"ashraf@curiodata.pro"},"repository":{"url":"git+https://github.com/Curio-Data/pi-intelli-search.git","type":"git"},"_npmVersion":"10.9.7","description":"Intelligent web research for Pi: search, extract, collate, and cache grounded web context in one tool call.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"wreq-js":"^2.3.0","defuddle":"^0.16.0","linkedom":"^0.18.12"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","typebox":"*","typescript":"^5.7.0","@earendil-works/pi-ai":"^0.74.0","@earendil-works/pi-coding-agent":"^0.74.0"},"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-intelli-search_0.8.0_1779021719818_0.2559692313453299","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"name":"@curio-data/pi-intelli-search","version":"0.9.0","keywords":["pi-package","pi-extension","web-research","web-search","intelli-search"],"license":"Apache-2.0","_id":"@curio-data/pi-intelli-search@0.9.0","maintainers":[{"name":"miah0x41","email":"ashraf@curiodata.pro"}],"homepage":"https://github.com/Curio-Data/pi-intelli-search#readme","bugs":{"url":"https://github.com/Curio-Data/pi-intelli-search/issues"},"pi":{"image":"https://raw.githubusercontent.com/Curio-Data/pi-intelli-search/main/docs/images/06.png","skills":["./skills"],"extensions":["./src/index.ts"]},"dist":{"shasum":"467c2219604ec95ecedc9767009e4644285b7dc1","tarball":"https://registry.npmjs.org/@curio-data/pi-intelli-search/-/pi-intelli-search-0.9.0.tgz","integrity":"sha512-d71suWclOF+9ZwgqSi+Es8pQ0fdVRQRtGGRqfAm6GjNCSE2HCjeRLdgwMGjwIoWlqbPFRyU5Xz2uNIktQ9iNdQ==","signatures":[{"sig":"MEQCICYiUFAFZZfUI8M0cZgIiFGrXUZNSj7AslJnZ/G2uLGoAiAoxF/T1YwdkWBngcJOLE3racjWjhJT7MN6Bs5P7eY3OA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@curio-data%2fpi-intelli-search@0.9.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}}},"type":"module","gitHead":"e3948287c0134fbfe0cc88cc8787aaeae69950b2","scripts":{"dev":"tsc --watch","test":"node --import tsx --test test/*.test.ts","build":"tsc","test:smoke":"node --import tsx test/smoke.ts"},"_npmUser":{"name":"miah0x41","email":"ashraf@curiodata.pro"},"repository":{"url":"git+https://github.com/Curio-Data/pi-intelli-search.git","type":"git"},"_npmVersion":"11.15.0","description":"Intelligent web research for Pi: search, extract, collate, and cache grounded web context in one tool call.","directories":{},"_nodeVersion":"24.15.0","dependencies":{"wreq-js":"^2.3.0","defuddle":"^0.16.0","linkedom":"^0.18.12"},"devDependencies":{"tsx":"^4.19.0","typebox":"*","typescript":"^5.7.0","@earendil-works/pi-ai":"^0.74.0","@earendil-works/pi-coding-agent":"^0.74.0"},"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-intelli-search_0.9.0_1779708433219_0.41051451507170467","host":"s3://npm-registry-packages-npm-production"}},"0.10.0":{"name":"@curio-data/pi-intelli-search","version":"0.10.0","keywords":["pi-package","pi-extension","web-research","web-search","intelli-search"],"license":"Apache-2.0","_id":"@curio-data/pi-intelli-search@0.10.0","maintainers":[{"name":"miah0x41","email":"ashraf@curiodata.pro"}],"homepage":"https://github.com/Curio-Data/pi-intelli-search#readme","bugs":{"url":"https://github.com/Curio-Data/pi-intelli-search/issues"},"pi":{"image":"https://raw.githubusercontent.com/Curio-Data/pi-intelli-search/main/docs/images/06.png","skills":["./skills"],"extensions":["./src/index.ts"]},"dist":{"shasum":"fec2a7c11eea5a2c986770ce507a2314c6c06e7f","tarball":"https://registry.npmjs.org/@curio-data/pi-intelli-search/-/pi-intelli-search-0.10.0.tgz","fileCount":58,"integrity":"sha512-NmH7H0SgFyqcv+JgfzPdXoRUGkDapmBFyilXRHYb3wNSVmz9ElFnJsDYlgB/BMbmzEWclJVC0odDawSLrSKQYg==","signatures":[{"sig":"MEQCICbuSG4IiNRYx0mf5paBpXQCCounbrmx1dFpyqRHVW6TAiBWXqXXIqQbY8gISuYR02EYj3VjLz/XPkusx56yGEf+yw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@curio-data%2fpi-intelli-search@0.10.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":399506},"type":"module","gitHead":"da89c13ac48159239d85fec418adbf11c11f9537","scripts":{"dev":"tsc --watch","test":"node --import tsx --test test/*.test.ts","build":"tsc","test:smoke":"node --import tsx test/smoke.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","approver":{"name":"miah0x41","email":"ashraf@curiodata.pro"},"trustedPublisher":{"id":"github","oidcConfigId":"oidc:52edff79-8ab5-46cd-94ef-f843a25e157d"}},"repository":{"url":"git+https://github.com/Curio-Data/pi-intelli-search.git","type":"git"},"_npmVersion":"11.16.0","description":"Intelligent web research for Pi: search, extract, collate, and cache grounded web context in one tool call.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"wreq-js":"^2.3.0","defuddle":"^0.16.0","linkedom":"^0.18.12"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","typebox":"*","typescript":"^5.7.0","@earendil-works/pi-ai":"^0.74.0","@earendil-works/pi-coding-agent":"^0.74.0"},"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-intelli-search_0.10.0_1780512689759_0.8203948200504854","host":"s3://npm-registry-packages-npm-production"}},"0.10.1":{"name":"@curio-data/pi-intelli-search","version":"0.10.1","keywords":["pi-package","pi-extension","web-research","web-search","intelli-search"],"license":"Apache-2.0","_id":"@curio-data/pi-intelli-search@0.10.1","maintainers":[{"name":"miah0x41","email":"ashraf@curiodata.pro"}],"homepage":"https://github.com/Curio-Data/pi-intelli-search#readme","bugs":{"url":"https://github.com/Curio-Data/pi-intelli-search/issues"},"pi":{"image":"https://raw.githubusercontent.com/Curio-Data/pi-intelli-search/main/docs/images/06.png","skills":["./skills"],"extensions":["./src/index.ts"]},"dist":{"shasum":"9f864b59bd096391cc769833ddd743818629b0d5","tarball":"https://registry.npmjs.org/@curio-data/pi-intelli-search/-/pi-intelli-search-0.10.1.tgz","fileCount":58,"integrity":"sha512-a6xwbcWNnKIPF0Bmh5bCAiwFJFLxiV+3/AipFLM5oo1UsfpNWOBxwY/+9unvVC4vT9zNKUCh3++QSkHtgYDMlw==","signatures":[{"sig":"MEYCIQDKOtE/PP0WaM2bzW3njtQTopvj3nN7NC4JmEnTVax4JAIhAOHaKoME1UQ0+JebQg9UHwtlVBM79Gzu4+bEYaCQN5pP","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@curio-data%2fpi-intelli-search@0.10.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":399949},"type":"module","gitHead":"8122fa256220997ecbce62a086cd3b854fe11026","scripts":{"dev":"tsc --watch","test":"node --import tsx --test test/*.test.ts","build":"tsc","test:smoke":"node --import tsx test/smoke.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","approver":{"name":"miah0x41","email":"ashraf@curiodata.pro"},"trustedPublisher":{"id":"github","oidcConfigId":"oidc:52edff79-8ab5-46cd-94ef-f843a25e157d"}},"repository":{"url":"git+https://github.com/Curio-Data/pi-intelli-search.git","type":"git"},"_npmVersion":"11.16.0","description":"Intelligent web research for Pi: search, extract, collate, and cache grounded web context in one tool call.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"wreq-js":"^2.3.0","defuddle":"^0.16.0","linkedom":"^0.18.12"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","typebox":"*","typescript":"^5.7.0","@earendil-works/pi-ai":"^0.74.0","@earendil-works/pi-coding-agent":"^0.74.0"},"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-intelli-search_0.10.1_1780579412912_0.14820312799687718","host":"s3://npm-registry-packages-npm-production"}},"0.10.2":{"name":"@curio-data/pi-intelli-search","version":"0.10.2","keywords":["pi-package","pi-extension","web-research","web-search","intelli-search"],"license":"Apache-2.0","_id":"@curio-data/pi-intelli-search@0.10.2","maintainers":[{"name":"miah0x41","email":"ashraf@curiodata.pro"}],"homepage":"https://github.com/Curio-Data/pi-intelli-search#readme","bugs":{"url":"https://github.com/Curio-Data/pi-intelli-search/issues"},"pi":{"image":"https://raw.githubusercontent.com/Curio-Data/pi-intelli-search/main/docs/images/06.png","skills":["./skills"],"extensions":["./src/index.ts"]},"dist":{"shasum":"fae4b69ce934ac2f3e5eada41ca2632eca2a3eaa","tarball":"https://registry.npmjs.org/@curio-data/pi-intelli-search/-/pi-intelli-search-0.10.2.tgz","fileCount":58,"integrity":"sha512-GoGAnvu4vDbRol1rLzjk9+NLjcycF16BK6QCcgxaQDwGG7DlZVp1RHEHTamWDL1v/GOt5l3J8Zf6IQziPoTY5A==","signatures":[{"sig":"MEUCIQCW5pVyFp3ERuh5e+6wzW+GJxJHHvhOnO3sCS8jvPvrgQIgMB+jprp+P+pIcciYVi/etfdlUfCL/5iI+WemQ52v39o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@curio-data%2fpi-intelli-search@0.10.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":406970},"type":"module","gitHead":"5799d3dd332452ae84ee2814736b16acb667c16a","scripts":{"dev":"tsc --watch","test":"node --import tsx --test test/*.test.ts","build":"tsc","test:smoke":"node --import tsx test/smoke.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","approver":{"name":"miah0x41","email":"ashraf@curiodata.pro"},"trustedPublisher":{"id":"github","oidcConfigId":"oidc:52edff79-8ab5-46cd-94ef-f843a25e157d"}},"repository":{"url":"git+https://github.com/Curio-Data/pi-intelli-search.git","type":"git"},"_npmVersion":"11.17.0","description":"Intelligent web research for Pi: search, extract, collate, and cache grounded web context in one tool call.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"wreq-js":"^2.3.0","defuddle":"^0.16.0","linkedom":"^0.18.12"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","typebox":"*","typescript":"^5.7.0","@earendil-works/pi-ai":"^0.74.0","@earendil-works/pi-coding-agent":"^0.74.0"},"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-intelli-search_0.10.2_1781723101801_0.4291487956782094","host":"s3://npm-registry-packages-npm-production"}},"0.11.0":{"name":"@curio-data/pi-intelli-search","version":"0.11.0","keywords":["pi-package","pi-extension","web-research","web-search","intelli-search"],"license":"Apache-2.0","_id":"@curio-data/pi-intelli-search@0.11.0","maintainers":[{"name":"miah0x41","email":"ashraf@curiodata.pro"}],"homepage":"https://github.com/Curio-Data/pi-intelli-search#readme","bugs":{"url":"https://github.com/Curio-Data/pi-intelli-search/issues"},"pi":{"image":"https://raw.githubusercontent.com/Curio-Data/pi-intelli-search/main/docs/images/06.png","skills":["./skills"],"extensions":["./src/index.ts"]},"dist":{"shasum":"eb3acf530e97295e93ca414b3bb2ef389e091b2b","tarball":"https://registry.npmjs.org/@curio-data/pi-intelli-search/-/pi-intelli-search-0.11.0.tgz","fileCount":62,"integrity":"sha512-1iRdGB1pCVCMkSrwXVbtYHu3iTwU/9U/YUW2a1c9xk3QYSBvXRZ7rM3K9DlWJiRFEYHMw9okSg2ZXMX5k5rpMg==","signatures":[{"sig":"MEYCIQDRrhF9kvgKgM67e45LjFe2+c9upnj+LeEfyWoE84SxqwIhALxV1POFezv6d3arRQ83sBK/DaQjmh6vgZxA0SCA5c2i","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@curio-data%2fpi-intelli-search@0.11.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":450294},"type":"module","gitHead":"09cbbfee8d38556f87547efe24f36a539396a67e","scripts":{"dev":"tsc --watch","test":"node --import tsx --test test/*.test.ts","build":"tsc","test:smoke":"node --import tsx test/smoke.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","approver":{"name":"miah0x41","email":"ashraf@curiodata.pro"},"trustedPublisher":{"id":"github","oidcConfigId":"oidc:52edff79-8ab5-46cd-94ef-f843a25e157d"}},"deprecated":"Broken: fails to load under plain node against current pi-ai\n (completeSimple import). Upgrade to 0.11.1 or later.","repository":{"url":"git+https://github.com/Curio-Data/pi-intelli-search.git","type":"git"},"_npmVersion":"11.17.0","description":"Intelligent web research for Pi: search, extract, collate, and cache grounded web context in one tool call.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"wreq-js":"^2.3.0","defuddle":"^0.16.0","linkedom":"^0.18.12"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","typebox":"*","typescript":"^5.7.0","@earendil-works/pi-ai":"^0.74.0","@earendil-works/pi-coding-agent":"^0.74.0"},"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-intelli-search_0.11.0_1782410408514_0.469379621364336","host":"s3://npm-registry-packages-npm-production"}},"0.11.1":{"name":"@curio-data/pi-intelli-search","version":"0.11.1","keywords":["pi-package","pi-extension","web-research","web-search","intelli-search"],"license":"Apache-2.0","_id":"@curio-data/pi-intelli-search@0.11.1","maintainers":[{"name":"miah0x41","email":"ashraf@curiodata.pro"}],"homepage":"https://github.com/Curio-Data/pi-intelli-search#readme","bugs":{"url":"https://github.com/Curio-Data/pi-intelli-search/issues"},"pi":{"image":"https://raw.githubusercontent.com/Curio-Data/pi-intelli-search/main/docs/images/06.png","skills":["./skills"],"extensions":["./src/index.ts"]},"dist":{"shasum":"50ae5157a5e9cbc966fad4a472b827b528b85d8b","tarball":"https://registry.npmjs.org/@curio-data/pi-intelli-search/-/pi-intelli-search-0.11.1.tgz","fileCount":62,"integrity":"sha512-6ye+c/1ltHXZE1ZSUv4KZxGxd82n3TrdHnNJrdx/Z5vJHn0+NcLQMp7hAj0IAXzhw0cc8zXZcPWVTv7Pe8Ft4w==","signatures":[{"sig":"MEUCIQDzEN4GtEcALF9TEeNQ6OxK+RGV7IGHYR+w0Q9gJDvOnQIgSBXMlav3WHc9qYcF+1h8h9jJ8V31b6735WEsF2EtQJw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@curio-data%2fpi-intelli-search@0.11.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":454105},"type":"module","gitHead":"84296cc7e8e25a50b9f8db0f722ea725af63a68f","scripts":{"dev":"tsc --watch","test":"node --import tsx --test test/*.test.ts","build":"tsc","test:smoke":"node --import tsx test/smoke.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","approver":{"name":"miah0x41","email":"ashraf@curiodata.pro"},"trustedPublisher":{"id":"github","oidcConfigId":"oidc:52edff79-8ab5-46cd-94ef-f843a25e157d"}},"repository":{"url":"git+https://github.com/Curio-Data/pi-intelli-search.git","type":"git"},"_npmVersion":"11.17.0","description":"Intelligent web research for Pi: search, extract, collate, and cache grounded web context in one tool call.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"wreq-js":"^2.3.0","defuddle":"^0.16.0","linkedom":"^0.18.12"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","typebox":"*","typescript":"^5.7.0","@earendil-works/pi-ai":"^0.74.0","@earendil-works/pi-coding-agent":"^0.74.0"},"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-intelli-search_0.11.1_1782411468362_0.06055889263077585","host":"s3://npm-registry-packages-npm-production"}},"0.11.2":{"name":"@curio-data/pi-intelli-search","version":"0.11.2","keywords":["pi-package","pi-extension","web-research","web-search","intelli-search"],"license":"Apache-2.0","_id":"@curio-data/pi-intelli-search@0.11.2","maintainers":[{"name":"miah0x41","email":"ashraf@curiodata.pro"}],"homepage":"https://github.com/Curio-Data/pi-intelli-search#readme","bugs":{"url":"https://github.com/Curio-Data/pi-intelli-search/issues"},"pi":{"image":"https://raw.githubusercontent.com/Curio-Data/pi-intelli-search/main/docs/images/06.png","skills":["./skills"],"extensions":["./src/index.ts"]},"dist":{"shasum":"b158a3d0789751cd7db44e2c6755a8a161cdcccf","tarball":"https://registry.npmjs.org/@curio-data/pi-intelli-search/-/pi-intelli-search-0.11.2.tgz","fileCount":62,"integrity":"sha512-D4Vpji0r04iOOqr0y8V38p2sj1/sOse/vL3KHLjoHwHCguxrojFSopyA4OBL8y7qzr4quVHDTkz1lnlXTL+jgA==","signatures":[{"sig":"MEUCIA/nsqt07YBPz+P+/2l+Faw7SniiS0LEGANHp4PExJQpAiEAiZ+eDgVbM5GyjhmwNegqL7q8ST1gBFCTDIJeZYrsB2Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@curio-data%2fpi-intelli-search@0.11.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":462143},"type":"module","gitHead":"1ceba661df956ac8bb3f082b45e0a44ef77b4d8f","scripts":{"dev":"tsc --watch","test":"node --import tsx --test test/*.test.ts","build":"tsc","test:smoke":"node --import tsx test/smoke.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","approver":{"name":"miah0x41","email":"ashraf@curiodata.pro"},"trustedPublisher":{"id":"github","oidcConfigId":"oidc:52edff79-8ab5-46cd-94ef-f843a25e157d"}},"repository":{"url":"git+https://github.com/Curio-Data/pi-intelli-search.git","type":"git"},"_npmVersion":"11.18.0","description":"Intelligent web research for Pi: search, extract, collate, and cache grounded web context in one tool call.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"wreq-js":"^2.3.0","defuddle":"^0.16.0","linkedom":"^0.18.12"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","typebox":"*","typescript":"^5.7.0","@earendil-works/pi-ai":"^0.74.0","@earendil-works/pi-coding-agent":"^0.74.0"},"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-intelli-search_0.11.2_1782755104898_0.14816163281243755","host":"s3://npm-registry-packages-npm-production"}},"0.11.3":{"name":"@curio-data/pi-intelli-search","version":"0.11.3","keywords":["pi-package","pi-extension","web-research","web-search","intelli-search"],"license":"Apache-2.0","_id":"@curio-data/pi-intelli-search@0.11.3","maintainers":[{"name":"miah0x41","email":"ashraf@curiodata.pro"}],"homepage":"https://github.com/Curio-Data/pi-intelli-search#readme","bugs":{"url":"https://github.com/Curio-Data/pi-intelli-search/issues"},"pi":{"image":"https://raw.githubusercontent.com/Curio-Data/pi-intelli-search/main/docs/images/06.png","skills":["./skills"],"extensions":["./src/index.ts"]},"dist":{"shasum":"f1c6a5282e6811e159d9be1a96b93be20cbac07e","tarball":"https://registry.npmjs.org/@curio-data/pi-intelli-search/-/pi-intelli-search-0.11.3.tgz","fileCount":62,"integrity":"sha512-C3fgsUhCobwVRdmLFUS16BaquBMxC/zuWrdEs27SjScIY6FJamKv/JPM0e3wIeaWj73tlQeTRDs/mLQxYbet4Q==","signatures":[{"sig":"MEYCIQC9bL3fqzgKCFjqavLtjfdOgwWysFFzb+Y+HxwEd5kgyQIhANO+/wceLXd9hFMFPfKlI9cu8e3bgA8lTD3cDaqZFBTY","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@curio-data%2fpi-intelli-search@0.11.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":469281},"type":"module","gitHead":"f58bb91f93eec90d13e5c1ee311b7b27a42eed30","scripts":{"dev":"tsc --watch","test":"node --import tsx --test test/*.test.ts","build":"tsc","test:smoke":"node --import tsx test/smoke.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","approver":{"name":"miah0x41","email":"ashraf@curiodata.pro"},"trustedPublisher":{"id":"github","oidcConfigId":"oidc:52edff79-8ab5-46cd-94ef-f843a25e157d"}},"repository":{"url":"git+https://github.com/Curio-Data/pi-intelli-search.git","type":"git"},"_npmVersion":"11.18.0","description":"Intelligent web research for Pi: search, extract, collate, and cache grounded web context in one tool call.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"wreq-js":"^2.3.0","defuddle":"^0.16.0","linkedom":"^0.18.12"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","typebox":"*","typescript":"^5.7.0","@earendil-works/pi-ai":"^0.74.0","@earendil-works/pi-coding-agent":"^0.74.0"},"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-intelli-search_0.11.3_1783020201366_0.22970753999342608","host":"s3://npm-registry-packages-npm-production"}},"0.12.0":{"name":"@curio-data/pi-intelli-search","version":"0.12.0","keywords":["pi-package","pi-extension","web-research","web-search","intelli-search"],"license":"Apache-2.0","_id":"@curio-data/pi-intelli-search@0.12.0","maintainers":[{"name":"miah0x41","email":"ashraf@curiodata.pro"}],"homepage":"https://github.com/Curio-Data/pi-intelli-search#readme","bugs":{"url":"https://github.com/Curio-Data/pi-intelli-search/issues"},"pi":{"image":"https://raw.githubusercontent.com/Curio-Data/pi-intelli-search/main/docs/images/06.png","skills":["./skills"],"extensions":["./src/index.ts"]},"dist":{"shasum":"e0510b810c0501c61d238eaba2a7b078e3efa9d5","tarball":"https://registry.npmjs.org/@curio-data/pi-intelli-search/-/pi-intelli-search-0.12.0.tgz","fileCount":62,"integrity":"sha512-UlAztXMuKaii2N7zpYfdQ35S2rx5sKghPpUA+PBpJDCmmAhazF4VZpBz+nypcPMqOzjFczm3CsXYOF8c195scA==","signatures":[{"sig":"MEQCIAFekU0f+tdKjU1s2WqwIBl3i8XX/s80b0y/q6BVcCo/AiAIEkVpQedUSzdMLdZiK8f7CxJzgdn5o0V9TA6QrQ+0rQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@curio-data%2fpi-intelli-search@0.12.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":516273},"type":"module","gitHead":"5673adf35bff46fa37b34c75592285095976f47c","scripts":{"dev":"tsc --watch","test":"node --import tsx --test test/*.test.ts","build":"tsc","test:smoke":"node --import tsx test/smoke.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","approver":{"name":"miah0x41","email":"ashraf@curiodata.pro"},"trustedPublisher":{"id":"github","oidcConfigId":"oidc:52edff79-8ab5-46cd-94ef-f843a25e157d"}},"repository":{"url":"git+https://github.com/Curio-Data/pi-intelli-search.git","type":"git"},"_npmVersion":"12.0.1","description":"Intelligent web research for Pi: search, extract, collate, and cache grounded web context in one tool call.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"wreq-js":"^2.3.0","defuddle":"^0.16.0","linkedom":"^0.18.12"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","typebox":"*","typescript":"^5.7.0","@earendil-works/pi-ai":"^0.80.9","@earendil-works/pi-tui":"^0.80.9","@earendil-works/pi-coding-agent":"^0.80.9"},"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":">=0.80.8","@earendil-works/pi-tui":">=0.80.8","@earendil-works/pi-coding-agent":">=0.80.8"},"_npmOperationalInternal":{"tmp":"tmp/pi-intelli-search_0.12.0_1784924030437_0.2562150449751528","host":"s3://npm-registry-packages-npm-production"}},"0.12.1":{"name":"@curio-data/pi-intelli-search","version":"0.12.1","keywords":["pi-package","pi-extension","web-research","web-search","intelli-search"],"license":"Apache-2.0","_id":"@curio-data/pi-intelli-search@0.12.1","maintainers":[{"name":"miah0x41","email":"ashraf@curiodata.pro"}],"homepage":"https://github.com/Curio-Data/pi-intelli-search#readme","bugs":{"url":"https://github.com/Curio-Data/pi-intelli-search/issues"},"pi":{"image":"https://raw.githubusercontent.com/Curio-Data/pi-intelli-search/main/docs/images/06.png","skills":["./skills"],"extensions":["./src/index.ts"]},"dist":{"shasum":"7ef1b27a51420de4cc588d728e7476490d9a551d","tarball":"https://registry.npmjs.org/@curio-data/pi-intelli-search/-/pi-intelli-search-0.12.1.tgz","fileCount":66,"integrity":"sha512-t6K0TrV1buTt0nshf3jChZ3Qo7G5Vsz++Uwm+hp8D+z14DSsutKnOwPke5Ige/esSNOOXBCNs4ow2I1MvMv/iA==","signatures":[{"sig":"MEQCIB6RuWDDuMCcMQOP90QZndMogBNikNdmuHULhoWFSDunAiA1j3elUBv83oJDAVAoTsLPSPF1mPdgKoNHaFs3YmJNiQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@curio-data%2fpi-intelli-search@0.12.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":516412},"type":"module","gitHead":"8fc66d50a10969bc8e01e1fc09fb040e5a91e5d5","scripts":{"dev":"tsc --watch","test":"node --import tsx --test test/*.test.ts","build":"tsc","test:smoke":"node --import tsx test/smoke.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","approver":{"name":"miah0x41","email":"ashraf@curiodata.pro"},"trustedPublisher":{"id":"github","oidcConfigId":"oidc:52edff79-8ab5-46cd-94ef-f843a25e157d"}},"repository":{"url":"git+https://github.com/Curio-Data/pi-intelli-search.git","type":"git"},"_npmVersion":"12.0.1","description":"Intelligent web research for Pi: search, extract, collate, and cache grounded web context in one tool call.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"wreq-js":"^2.3.0","defuddle":"^0.16.0","linkedom":"^0.18.12"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","typebox":"*","prettier":"^3.9.6","typescript":"^5.7.0","@earendil-works/pi-ai":"^0.80.9","@earendil-works/pi-tui":"^0.80.9","@earendil-works/pi-coding-agent":"^0.80.9"},"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":">=0.80.8","@earendil-works/pi-tui":">=0.80.8","@earendil-works/pi-coding-agent":">=0.80.8"},"_npmOperationalInternal":{"tmp":"tmp/pi-intelli-search_0.12.1_1785094830231_0.45576574403119596","host":"s3://npm-registry-packages-npm-production"}},"0.12.2":{"name":"@curio-data/pi-intelli-search","version":"0.12.2","keywords":["pi-package","pi-extension","web-research","web-search","intelli-search"],"license":"Apache-2.0","_id":"@curio-data/pi-intelli-search@0.12.2","maintainers":[{"name":"miah0x41","email":"ashraf@curiodata.pro"}],"homepage":"https://github.com/Curio-Data/pi-intelli-search#readme","bugs":{"url":"https://github.com/Curio-Data/pi-intelli-search/issues"},"pi":{"image":"https://raw.githubusercontent.com/Curio-Data/pi-intelli-search/main/docs/images/06.png","skills":["./skills"],"extensions":["./src/index.ts"]},"dist":{"shasum":"3e1dd9613fdbc51d542cae5e8a4efb1fc06ea470","tarball":"https://registry.npmjs.org/@curio-data/pi-intelli-search/-/pi-intelli-search-0.12.2.tgz","fileCount":66,"integrity":"sha512-81LHpOWcNsleEElPAH5f4uGKxldLcvRQb2U0xu3vi9E85dFlPzBukSCsPb9kFoyb8Oot1PIMe4N4Nw85P6ozog==","signatures":[{"sig":"MEUCIGK3Vx2kTUf7L5m1ctA5jqlNqcHE4KI7pX1SCr1x4r+SAiEA/s5BV0Ew1/tqRKLIqNWIC4mozHaUH2eS1HfuvHVm6Ys=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@curio-data%2fpi-intelli-search@0.12.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":518427},"type":"module","gitHead":"a0578b0fdd112d2ed1c883394332c00033781f9e","scripts":{"dev":"tsc --watch","test":"node --import tsx --test test/*.test.ts","build":"tsc","test:smoke":"node --import tsx test/smoke.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","approver":{"name":"miah0x41","email":"ashraf@curiodata.pro"},"trustedPublisher":{"id":"github","oidcConfigId":"oidc:52edff79-8ab5-46cd-94ef-f843a25e157d"}},"repository":{"url":"git+https://github.com/Curio-Data/pi-intelli-search.git","type":"git"},"_npmVersion":"12.0.2","description":"Intelligent web research for Pi: search, extract, collate, and cache grounded web context in one tool call.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"wreq-js":"^2.3.0","defuddle":"^0.16.0","linkedom":"^0.18.12"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","typebox":"*","prettier":"^3.9.6","typescript":"^5.7.0","@earendil-works/pi-ai":"^0.84.1","@earendil-works/pi-tui":"^0.84.1","@earendil-works/pi-coding-agent":"^0.84.1"},"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":">=0.80.8","@earendil-works/pi-tui":">=0.80.8","@earendil-works/pi-coding-agent":">=0.80.8"},"_npmOperationalInternal":{"tmp":"tmp/pi-intelli-search_0.12.2_1786183986014_0.030704463797772696","host":"s3://npm-registry-packages-npm-production"}},"0.12.3":{"name":"@curio-data/pi-intelli-search","version":"0.12.3","keywords":["pi-package","pi-extension","web-research","web-search","intelli-search"],"license":"Apache-2.0","_id":"@curio-data/pi-intelli-search@0.12.3","maintainers":[{"name":"miah0x41","email":"ashraf@curiodata.pro"}],"homepage":"https://github.com/Curio-Data/pi-intelli-search#readme","bugs":{"url":"https://github.com/Curio-Data/pi-intelli-search/issues"},"pi":{"image":"https://raw.githubusercontent.com/Curio-Data/pi-intelli-search/main/docs/images/06.png","skills":["./skills"],"extensions":["./src/index.ts"]},"dist":{"shasum":"157e64e8361cb8a044d4cad2b559748f618b61f2","tarball":"https://registry.npmjs.org/@curio-data/pi-intelli-search/-/pi-intelli-search-0.12.3.tgz","fileCount":66,"integrity":"sha512-ygYqQOqz5DBDI/Kn1htJriShiUtgM7eu8qjp2YO6zezyzJI8MlfiN79cGDwl1ELeSD7dINqMjoq1qHYbiFdrnQ==","signatures":[{"sig":"MEYCIQDxeZtGR2mXPOqnxSj9GMd0otxt4vyBFvtSbR0NsL26bgIhAJ3KLyYYnyMMFz4vx1AfvpPSVpIFteOmpsrZKNxT+6fL","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@curio-data%2fpi-intelli-search@0.12.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":519825},"type":"module","gitHead":"2a348669ad989f122364a65dd7061cb4a106e6ce","scripts":{"dev":"tsc --watch","test":"node --import tsx --test test/*.test.ts","build":"tsc","test:smoke":"node --import tsx test/smoke.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","approver":{"name":"miah0x41","email":"ashraf@curiodata.pro"},"trustedPublisher":{"id":"github","oidcConfigId":"oidc:52edff79-8ab5-46cd-94ef-f843a25e157d"}},"repository":{"url":"git+https://github.com/Curio-Data/pi-intelli-search.git","type":"git"},"_npmVersion":"12.0.2","description":"Intelligent web research for Pi: search, extract, collate, and cache grounded web context in one tool call.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"wreq-js":"^2.3.0","defuddle":"^0.16.0","linkedom":"^0.18.12"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","typebox":"*","prettier":"^3.9.6","typescript":"^5.7.0","@earendil-works/pi-ai":"^0.84.2","@earendil-works/pi-tui":"^0.84.2","@earendil-works/pi-coding-agent":"^0.84.2"},"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":">=0.80.8","@earendil-works/pi-tui":">=0.80.8","@earendil-works/pi-coding-agent":">=0.80.8"},"_npmOperationalInternal":{"tmp":"tmp/pi-intelli-search_0.12.3_1786731001755_0.8791767278531062","host":"s3://npm-registry-packages-npm-production"}},"0.12.4":{"name":"@curio-data/pi-intelli-search","version":"0.12.4","keywords":["pi-package","pi-extension","web-research","web-search","intelli-search"],"license":"Apache-2.0","_id":"@curio-data/pi-intelli-search@0.12.4","maintainers":[{"name":"miah0x41","email":"ashraf@curiodata.pro"}],"homepage":"https://github.com/Curio-Data/pi-intelli-search#readme","bugs":{"url":"https://github.com/Curio-Data/pi-intelli-search/issues"},"pi":{"image":"https://raw.githubusercontent.com/Curio-Data/pi-intelli-search/main/docs/images/06.png","skills":["./skills"],"extensions":["./src/index.ts"]},"dist":{"shasum":"ae9c77e849be923abe3c19a844b7519f84009eac","tarball":"https://registry.npmjs.org/@curio-data/pi-intelli-search/-/pi-intelli-search-0.12.4.tgz","fileCount":66,"integrity":"sha512-AFVdhWDc3tnfQBVBC0YUcrmboyb4YAaAhTYFAj5ynYyaKFCdm1xketuNa60HpN2upK7A64jd/n34O/zLTT3dNA==","signatures":[{"sig":"MEQCIGX1mmiacCsm9bG4JE6WLxQiSwtuKYY7flTB3zj2d+w+AiAovjtpf/OvPpLgx4yU4ze+gpzK31VN9gayY/iqIorbHQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@curio-data%2fpi-intelli-search@0.12.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":529117},"type":"module","gitHead":"8d97eb737255f605a5c76f82645416604a8b2e38","scripts":{"dev":"tsc --watch","test":"node --import tsx --test test/*.test.ts","build":"tsc","test:smoke":"node --import tsx test/smoke.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","approver":{"name":"miah0x41","email":"ashraf@curiodata.pro"},"trustedPublisher":{"id":"github","oidcConfigId":"oidc:52edff79-8ab5-46cd-94ef-f843a25e157d"}},"repository":{"url":"git+https://github.com/Curio-Data/pi-intelli-search.git","type":"git"},"_npmVersion":"12.0.2","description":"Intelligent web research for Pi: search, extract, collate, and cache grounded web context in one tool call.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"wreq-js":"^2.3.0","defuddle":"^0.16.0","linkedom":"^0.18.12"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","typebox":"*","prettier":"^3.9.6","typescript":"^5.7.0","@earendil-works/pi-ai":"^0.84.2","@earendil-works/pi-tui":"^0.84.2","@earendil-works/pi-coding-agent":"^0.84.2"},"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":">=0.80.8","@earendil-works/pi-tui":">=0.80.8","@earendil-works/pi-coding-agent":">=0.80.8"},"_npmOperationalInternal":{"tmp":"tmp/pi-intelli-search_0.12.4_1786811183681_0.59652469327855","host":"s3://npm-registry-packages-npm-production"}},"0.12.5":{"name":"@curio-data/pi-intelli-search","version":"0.12.5","keywords":["pi-package","pi-extension","web-research","web-search","intelli-search"],"license":"Apache-2.0","_id":"@curio-data/pi-intelli-search@0.12.5","maintainers":[{"name":"miah0x41","email":"ashraf@curiodata.pro"}],"homepage":"https://github.com/Curio-Data/pi-intelli-search#readme","bugs":{"url":"https://github.com/Curio-Data/pi-intelli-search/issues"},"pi":{"image":"https://raw.githubusercontent.com/Curio-Data/pi-intelli-search/main/docs/images/06.png","skills":["./skills"],"extensions":["./src/index.ts"]},"dist":{"shasum":"4228a513115c2fc62a7a80b9854848555047207b","tarball":"https://registry.npmjs.org/@curio-data/pi-intelli-search/-/pi-intelli-search-0.12.5.tgz","fileCount":66,"integrity":"sha512-pD6m7td8MGpNvvqdGlVNQn30Zff2IgUyLhdjvLsZoz7CuzXhlZWyKQRY25tYFBHYDohHZX4AFVvo4r6raHJKjQ==","signatures":[{"sig":"MEUCIQDhIpj7YVCYaHgimQL4/VDeIX3hho0Wf6K2xFoIg3BoMgIgAWDbmpHA6rrjfOcUdJyB+hx9TPYaVgLkNGuj8kttwVM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@curio-data%2fpi-intelli-search@0.12.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":536028},"type":"module","gitHead":"f02bd7abe107508874b166a3c81c599e31d150c7","scripts":{"dev":"tsc --watch","test":"node --import tsx --test test/*.test.ts","build":"tsc","chart":"node scripts/plot-downloads.mts","test:smoke":"node --import tsx test/smoke.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","approver":{"name":"miah0x41","email":"ashraf@curiodata.pro"},"trustedPublisher":{"id":"github","oidcConfigId":"oidc:52edff79-8ab5-46cd-94ef-f843a25e157d"}},"repository":{"url":"git+https://github.com/Curio-Data/pi-intelli-search.git","type":"git"},"_npmVersion":"12.0.2","description":"Intelligent web research for Pi: search, extract, collate, and cache grounded web context in one tool call.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"wreq-js":"^2.3.0","defuddle":"^0.16.0","linkedom":"^0.18.12"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","roughjs":"^4.6.6","typebox":"*","prettier":"^3.9.6","typescript":"^5.7.0","@earendil-works/pi-ai":"^0.84.3","@earendil-works/pi-tui":"^0.84.3","@earendil-works/pi-coding-agent":"^0.84.3"},"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":">=0.81.1","@earendil-works/pi-tui":">=0.80.8","@earendil-works/pi-coding-agent":">=0.81.1"},"_npmOperationalInternal":{"tmp":"tmp/pi-intelli-search_0.12.5_1787605600701_0.3961053181584637","host":"s3://npm-registry-packages-npm-production"}},"0.13.0":{"name":"@curio-data/pi-intelli-search","version":"0.13.0","keywords":["pi-package","pi-extension","web-research","web-search","intelli-search"],"license":"Apache-2.0","_id":"@curio-data/pi-intelli-search@0.13.0","maintainers":[{"name":"miah0x41","email":"ashraf@curiodata.pro"}],"homepage":"https://github.com/Curio-Data/pi-intelli-search#readme","bugs":{"url":"https://github.com/Curio-Data/pi-intelli-search/issues"},"pi":{"image":"https://raw.githubusercontent.com/Curio-Data/pi-intelli-search/main/docs/images/06.png","skills":["./skills"],"extensions":["./src/index.ts"]},"dist":{"shasum":"0d5062eac28d22d46f137a3733cfe5604e24faef","tarball":"https://registry.npmjs.org/@curio-data/pi-intelli-search/-/pi-intelli-search-0.13.0.tgz","fileCount":70,"integrity":"sha512-y2xXgoajOV8UFP3+rXPosGwd+pGetv9A8Zc/Ua0B9xvPZRxkGldCvK53v7QMrnE189p8CsHUCLVWiqoJ5JhQRQ==","signatures":[{"sig":"MEUCIBGxjf9+1JOB5rdaGFqB9ilOUotOob05JV++9g0kSpdUAiEAznDciu/2mlSaptXLiiaWCcUbd+eqa5pjFOgcBpglVWc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@curio-data%2fpi-intelli-search@0.13.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":613291},"type":"module","gitHead":"eb6543176f82e77c4312e3ad07d0d199d472de26","scripts":{"dev":"tsc --watch","test":"node --import tsx --test test/*.test.ts","build":"tsc","chart":"node scripts/plot-downloads.mts","test:smoke":"node --import tsx test/smoke.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","approver":{"name":"miah0x41","email":"ashraf@curiodata.pro"},"trustedPublisher":{"id":"github","oidcConfigId":"oidc:52edff79-8ab5-46cd-94ef-f843a25e157d"}},"repository":{"url":"git+https://github.com/Curio-Data/pi-intelli-search.git","type":"git"},"_npmVersion":"12.0.2","description":"Intelligent web research for Pi: search, extract, collate, and cache grounded web context in one tool call.","directories":{},"_nodeVersion":"24.20.0","dependencies":{"wreq-js":"^2.3.0","defuddle":"^0.16.0","linkedom":"^0.18.12"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","roughjs":"^4.6.6","typebox":"*","prettier":"^3.9.6","typescript":"^5.7.0","@earendil-works/pi-ai":"^0.84.4","@earendil-works/pi-tui":"^0.84.4","@earendil-works/pi-coding-agent":"^0.84.4"},"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":">=0.81.1","@earendil-works/pi-tui":">=0.80.8","@earendil-works/pi-coding-agent":">=0.81.1"},"_npmOperationalInternal":{"tmp":"tmp/pi-intelli-search_0.13.0_1788794099419_0.6176318984795754","host":"s3://npm-registry-packages-npm-production"}},"0.14.0":{"pi":{"image":"https://raw.githubusercontent.com/Curio-Data/pi-intelli-search/main/docs/images/06.png","skills":["./skills"],"extensions":["./src/index.ts"]},"_id":"@curio-data/pi-intelli-search@0.14.0","bugs":{"url":"https://github.com/Curio-Data/pi-intelli-search/issues"},"dist":{"shasum":"84b352d207e9e771574f19ae67c12b69d7118d6a","tarball":"https://registry.npmjs.org/@curio-data/pi-intelli-search/-/pi-intelli-search-0.14.0.tgz","integrity":"sha512-HTCopK7veh8wj0OV0Jin5pCnEZW41WEUSHjo5uqb4JC1xp6bN1lh44NMGPaPu4ywZqqPAuv1JgmhBB4QePjXkA==","fileCount":70,"unpackedSize":627040,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@curio-data%2fpi-intelli-search@0.14.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDzXk40xG87/wkeiWlPfDTC8AZQUFspFVmeXp93oZ7hxgIhAL+aJ46wtLydW4iLoCVRArN4aBGjmK+XGKceANOy7B96"}]},"name":"@curio-data/pi-intelli-search","type":"module","gitHead":"9736e767864fe8eab1eaa6e40cea65e65dc4f4ac","license":"Apache-2.0","scripts":{"dev":"tsc --watch","test":"node --import tsx --test test/*.test.ts","build":"tsc","chart":"node scripts/plot-downloads.mts","test:smoke":"node --import tsx test/smoke.ts"},"version":"0.14.0","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:52edff79-8ab5-46cd-94ef-f843a25e157d"},"approver":{"name":"miah0x41","email":"ashraf@curiodata.pro"}},"homepage":"https://github.com/Curio-Data/pi-intelli-search#readme","keywords":["pi-package","pi-extension","web-research","web-search","intelli-search"],"repository":{"url":"git+https://github.com/Curio-Data/pi-intelli-search.git","type":"git"},"_npmVersion":"12.1.0","description":"Intelligent web research for Pi: search, extract, collate, and cache grounded web context in one tool call.","directories":{},"maintainers":[{"name":"miah0x41","email":"ashraf@curiodata.pro"}],"_nodeVersion":"24.21.0","dependencies":{"wreq-js":"^2.3.0","defuddle":"^0.16.0","linkedom":"^0.18.12"},"devDependencies":{"tsx":"^4.19.0","roughjs":"^4.6.6","typebox":"*","prettier":"^3.9.6","typescript":"^5.7.0","@earendil-works/pi-ai":"^0.84.4","@earendil-works/pi-tui":"^0.84.4","@earendil-works/pi-coding-agent":"^0.84.4"},"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":">=0.81.1","@earendil-works/pi-tui":">=0.80.8","@earendil-works/pi-coding-agent":">=0.81.1"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/pi-intelli-search_0.14.0_1790108944133_0.4029149877124192"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-04T19:06:00.076Z","modified":"2026-09-22T20:29:04.512Z","0.3.1-alpha.1":"2026-05-04T19:06:00.371Z","0.3.1":"2026-05-04T19:31:47.440Z","0.3.2":"2026-05-04T21:15:23.582Z","0.4.0":"2026-05-05T19:56:33.183Z","0.4.1":"2026-05-06T09:37:09.317Z","0.5.0":"2026-05-06T18:41:08.927Z","0.5.1":"2026-05-06T19:43:00.035Z","0.6.0":"2026-05-10T10:44:41.001Z","0.7.0":"2026-05-14T15:54:31.762Z","0.8.0":"2026-05-17T12:41:59.994Z","0.9.0":"2026-05-25T11:27:13.305Z","0.10.0":"2026-06-03T18:51:29.881Z","0.10.1":"2026-06-04T13:23:33.001Z","0.10.2":"2026-06-17T19:05:01.918Z","0.11.0":"2026-06-25T18:00:08.607Z","0.11.1":"2026-06-25T18:17:48.474Z","0.11.2":"2026-06-29T17:45:05.050Z","0.11.3":"2026-07-02T19:23:21.449Z","0.12.0":"2026-07-24T20:13:50.525Z","0.12.1":"2026-07-26T19:40:30.363Z","0.12.2":"2026-08-08T10:13:06.112Z","0.12.3":"2026-08-14T18:10:01.895Z","0.12.4":"2026-08-15T16:26:23.777Z","0.12.5":"2026-08-24T21:06:40.817Z","0.13.0":"2026-09-07T15:14:59.501Z","0.14.0":"2026-09-22T20:29:04.232Z"},"bugs":{"url":"https://github.com/Curio-Data/pi-intelli-search/issues"},"license":"Apache-2.0","homepage":"https://github.com/Curio-Data/pi-intelli-search#readme","keywords":["pi-package","pi-extension","web-research","web-search","intelli-search"],"repository":{"url":"git+https://github.com/Curio-Data/pi-intelli-search.git","type":"git"},"description":"Intelligent web research for Pi: search, extract, collate, and cache grounded web context in one tool call.","maintainers":[{"name":"miah0x41","email":"ashraf@curiodata.pro"}],"readme":"# pi-intelli-search\n\n[![npm version](https://img.shields.io/npm/v/@curio-data/pi-intelli-search?color=blue)](https://www.npmjs.com/package/@curio-data/pi-intelli-search)\n[![npm downloads](https://img.shields.io/npm/dt/@curio-data/pi-intelli-search?color=blue)](https://www.npmjs.com/package/@curio-data/pi-intelli-search)\n[![pi compatible](https://img.shields.io/badge/pi-%E2%89%A50.81.1-blueviolet)](https://github.com/earendil-works/pi)\n[![license](https://img.shields.io/badge/license-Apache--2.0-green)](./LICENSE)\n![tests](https://img.shields.io/badge/tests-376%20passing-brightgreen)\n\nIntelligent web research for [`Pi`](https://github.com/earendil-works/pi): search, extract, collate, and cache grounded web context in one tool call.\n\nA `Pi` extension for deep web research. It searches via a search-grounded model ([_Perplexity Sonar_](https://docs.perplexity.ai) by default), merges every source the model cited, fetches pages through a dual-fetch comparison ([_Defuddle_](https://github.com/kepano/defuddle) versus Markdown endpoint), extracts query-relevant content per page with a dedicated LLM guided by a _focused prompt_, then collates findings: deduplicating, flagging inconsistencies, and synthesising a concise summary. Everything is cached in `.search/` for offline reuse. Cache suggest surfaces related previous searches on each query.\n\n<p align=\"center\">\n  <img src=\"docs/images/01.png\" alt=\"PI-Intelli Search: a five-stage research pipeline diagram arranged in a clockwise cycle. The five labelled stages, each enclosed in a laurel-wreath medallion, are Search (top, depicted as a magnifying glass over an open book), Fetch (right, a hand retrieving a document from shelves), Extract (bottom-right, a distillation apparatus), Collate (bottom-left, stacked books and filing boxes), and Cache &amp; Suggest (left, a treasure chest with an envelope). Copper-coloured arrows connect the stages in sequence. The background is decorated with pen-and-ink botanical and scholarly motifs including quill pens, ink bottles, scrolls, globes, hourglasses, and open books.\" width=\"800\" />\n</p>\n\n**Features:**\n\n- 🔍 **Search:** a search-grounded model, [_Perplexity Sonar_](https://docs.perplexity.ai) via [_OpenRouter_](https://openrouter.ai) by default. One API key, no $50 minimum. Any OpenRouter chat model works too via the [web search server tool](#openrouter-web-search-server-tool).\n- 🔗 **Harvest:** every source the search model cited, not only the links it wrote into the answer. Machine-readable `url_citation` annotations are merged with text links before pages are selected.\n- 🌐 **Fetch:** Dual-fetch each page (HTML → Defuddle versus Markdown endpoint), compare quality, pick the cleaner version.\n- 📄 **Extract:** Per-page LLM extraction guided by a _focused prompt_. Compresses ≈50K to ≈3-5K chars of query-relevant content.\n- 🔗 **Collate:** Cross-source deduplication, inconsistency detection, and synthesis into a focused ≈5K summary.\n- 💾 **Cache:** Persistent `.search/` cache with automatic cache suggest. Related previous searches surfaced on each query.\n- 🎯 **Configurable:** Swap any pipeline stage (search, extract, collate) to any model `Pi` supports.\n- 💰 **Low cost:** ≈$0.09 per research session with default settings.\n\n> **Search model advisory (2026-09).** Perplexity retires the Sonar Chat Completions endpoints on **2026-09-27**. Whether the `openrouter/perplexity/sonar` route survives that date is up to [OpenRouter](https://openrouter.ai), which has published no statement. Two supported configurations do not depend on that route, and both are settings-only changes: [the web search server tool](#openrouter-web-search-server-tool) (any OpenRouter chat model, from ≈$0.008 per search) and [`perplexity/sonar-pro-search`](#choosing-an-alternative-search-configuration) (drop-in model swap, ≈$0.05 per search). The default is unchanged in v0.13.0.\n\n## Launch Blog Post\n\n<p align=\"center\">\n  <a href=\"https://blog.curiodata.pro/posts/22-pi-intelli-search/\">\n    <img src=\"docs/images/blog-banner.png\" alt=\"Vintage engraving-style banner for pi-intelli-search. A large magnifying glass dominates the centre, revealing a mechanical Pi symbol constructed from metal plates, rivets, and gears. The title &quot;pi-intelli-search&quot; appears in copper serif lettering at the top. Surrounding the magnifying glass are pen-and-ink scholarly motifs in laurel-wreath medallions: open books, quill pens and ink bottles, hourglasses, armillary spheres, distillation apparatus, and filing boxes. A GitHub logo and the repository URL sit on a ribbon at the bottom.\" width=\"800\" />\n  </a>\n</p>\n\nRead the launch post, [_pi-intelli-search: LLM-Native Web Research for the Pi Coding Agent_](https://blog.curiodata.pro/posts/22-pi-intelli-search/), for the design story behind the pipeline: why per-page LLM extraction beats raw page dumps, how collation keeps the agent context clean, and a full cost breakdown at ≈$0.05 per session.\n\n## What It Adds Over Other Extensions\n\n<p align=\"center\">\n  <img src=\"docs/images/06.png\" alt=\"Pipeline comparison infographic titled &quot;PI-INTELLI-SEARCH&quot; contrasting two approaches in a vintage engraving style. The top row shows the Intelli-Search purpose-built research pipeline: seven sequential stages: Search (Perplexity Sonar, single unified key), Dual Fetch (defuddle &amp; markdown), Quality Compare (pick the best), LLM Extract Per Page (MiniMax M2.7, focused &amp; targeted), LLM Collate (MiniMax M2.7, dedupe/highlight/source, flags conflicts), Persistent Cache (expand on demand), and Cache Suggest (LLM-judged relevance, additive, feeds back). The bottom row shows generic fetch/search extensions: Search (additional keys), Single Fetch (simple, provider-dependent), Raw Page Content (unstructured, ≈50K chars/page), No Cache (in-memory at best). Footer summary: &quot;Intelli-Search: deduped, cited, focused, ≈$0.05/session, reusable&quot; vs. &quot;Other extensions: raw pages, must synthesise, no reuse.&quot;\" width=\"800\" />\n</p>\n\n*The comparison illustration shows the default configuration and cost at its creation; search is configurable (see [Model Configuration](#model-configuration)).*\n\nFour capabilities together separate `intelli-search` from every other extension in the `Pi` ecosystem:\n\n1. **Dual-fetch quality comparison.** Every page is fetched twice in parallel (Defuddle versus Markdown endpoint), scored, and the better version wins. Server-rendered Markdown is not guaranteed to be cleaner than HTML; the comparison catches this automatically.\n2. **Per-page LLM extraction guided by `focusPrompt`.** Each page is compressed to ≈3-5K chars of query-relevant content before entering the agent's context. Extraction quality scales with the chosen model.\n3. **LLM collation with deduplication.** A collation model synthesises across sources, flags conflicting claims, and preserves source attribution. The agent does not spend reasoning tokens on mechanical synthesis.\n4. **Persistent cache with cache suggest.** Full pages and extractions are kept in `.search/` and indexed. An LLM judge surfaces related previous searches on each query, so follow-up research is faster and cheaper.\n\nThe agent receives a concise ≈5K summary by default. The full page content stays in the cache, accessible via native `Pi` tools like `read` or `grep` for deeper inspection. No other `Pi` search extension offers both.\n\nFor the detailed feature-by-feature comparison against six other `Pi` search extensions, see [docs/COMPARISON.md](docs/COMPARISON.md).\n\n\n## Install\n\n### Prerequisites\n\nYou need at minimum an [OpenRouter](https://openrouter.ai) account: one key covers the default search model ([_Perplexity Sonar_](https://docs.perplexity.ai)) plus extraction and collation with the default models, and every [alternative search configuration](#choosing-an-alternative-search-configuration) uses the same account. For the extract and collate stages, any model or provider `Pi` supports can be used. See [Model Configuration](#model-configuration) for how to swap them.\n\n1. **Sign in with OAuth (recommended):** run `/login openrouter` in `Pi`. On `Pi` 0.82.0 and later this performs OpenRouter OAuth PKCE sign-in and stores a user-controlled key automatically. No manual key paste is required.\n2. **Or add a key manually:** create one at [openrouter.ai/keys](https://openrouter.ai/keys), then edit `~/.pi/agent/auth.json`:\n\n```json\n{\n  \"openrouter\": {\n    \"type\": \"api_key\",\n    \"key\": \"sk-or-v1-...\"\n  }\n}\n```\n\n### Install the Extension\n\nFrom `npm` (recommended):\n\n```bash\npi install npm:@curio-data/pi-intelli-search\n```\n\nFrom _GitHub_:\n\n```bash\npi install git:github.com/Curio-Data/pi-intelli-search\n```\n\nLocal development:\n\n```bash\npi install /path/to/pi-intelli-search\n```\n\nOn first load, `Pi` will show `Added models:` followed by whatever was missing: on a fresh install that is `perplexity/sonar`, `perplexity/sonar-pro`, and `perplexity/sonar-pro-search`; an upgrade from an earlier version lists only the models you did not already have. If your OpenRouter key is missing, you will see a warning notification.\n\n### Verify Installation\n\nStart `Pi` and type `/model`. You should see `perplexity/sonar`, `perplexity/sonar-pro`, and `perplexity/sonar-pro-search` in the model list. If they are missing after a manual edit, reopen `/model`: since `Pi` 0.82.0 the picker reloads `models.json` on open. Restart `Pi` only if they are still absent. Registration does not select a pipeline model; `searchModel` in settings does that.\n\n### Customise (Optional)\n\nNo configuration is needed to get started. The defaults use OpenRouter for all stages. If you want to change models, add a `pi-intelli-search` block to `~/.pi/agent/settings.json` or, for a trusted project, `<project>/.pi/settings.json`:\n\n**Defaults (what you get without any config):**\n\nCopying this block pins every value explicitly, which also opts you out of future default migrations. You do not need to write any of this: the table in [Settings Reference](#settings-reference) is the complete list of keys.\n\n```jsonc\n{\n  \"pi-intelli-search\": {\n    \"searchModel\": {\n      \"provider\": \"openrouter\",\n      \"model\": \"perplexity/sonar\"\n    },\n    \"searchWebSearch\": {\n      \"enabled\": false,\n      \"engine\": \"auto\",\n      \"maxResults\": 8,\n      \"reasoning\": \"minimal\"\n    },\n    \"extractModel\": {\n      \"provider\": \"openrouter\",\n      \"model\": \"minimax/minimax-m3\"\n    },\n    \"collateModel\": {\n      \"provider\": \"openrouter\",\n      \"model\": \"minimax/minimax-m3\"\n    },\n\n    \"defaultUrls\": 10,\n    \"maxUrls\": 20,\n    \"cacheDir\": \".search\",\n    \"extractMaxChars\": 150000,\n    \"extractionConcurrency\": 4,\n    \"extractionMaxTokens\": 3000,\n    \"collationMaxTokens\": 4000,\n    \"fetchTimeoutMs\": 20000,\n    \"fetchConcurrency\": 4,\n    \"browserFingerprint\": \"chrome_145\"\n  }\n}\n```\n\n**Customised example (different provider, tuned pipeline):**\n\n```jsonc\n{\n  \"pi-intelli-search\": {\n    \"searchModel\": {\n      \"provider\": \"openrouter\",\n      \"model\": \"perplexity/sonar\"\n    },\n    \"extractModel\": {\n      \"provider\": \"openai\",\n      \"model\": \"gpt-4o-mini\"\n    },\n    \"collateModel\": {\n      \"provider\": \"openai\",\n      \"model\": \"gpt-4o-mini\"\n    },\n\n    \"defaultUrls\": 6,\n    \"maxUrls\": 6,\n    \"cacheDir\": \".my-research-cache\",\n    \"extractMaxChars\": 80000,\n    \"extractionMaxTokens\": 8000,\n    \"collationMaxTokens\": 16000,\n    \"fetchTimeoutMs\": 30000,\n    \"fetchConcurrency\": 2,\n    \"browserFingerprint\": \"chrome_145\"\n  }\n}\n```\n\nSee [Model Configuration](#model-configuration) for all options, [Configuration Recipes](#configuration-recipes) for complete copy-paste examples, and [Settings](#settings) for the full reference.\n\n## Configuration Recipes\n\nEach recipe is a complete `~/.pi/agent/settings.json`. Copy it whole, or lift the `pi-intelli-search` block into your existing file. Project-level overrides go in `<project>/.pi/settings.json` (applies only after `Pi` approves the project; the global file always applies).\n\nTwo loader rules to keep in mind:\n\n- An object you set replaces its default wholesale. The `searchWebSearch` block and the model blocks have no per-key merge: set every key you care about.\n- Nested `pi-intelli-search` keys always win over the deprecated flat `intelli*` keys.\n\n| You want | Recipe |\n|---|---|\n| Works immediately, nothing to write | [Zero Configuration](#recipe-1-zero-configuration) |\n| Off Sonar before 2026-09-27, cheapest | [Web Search Tool + Nano](#recipe-2-web-search-tool--nano) |\n| Off Sonar, strongest search quality | [Sonar Pro Search](#recipe-3-sonar-pro-search) |\n| The pre-0.13 page count and spend | [Pin Eight Pages](#recipe-4-pin-eight-pages) |\n| Cheaper extraction and collation | [Economy Extract and Collate](#recipe-5-economy-extract-and-collate) |\n| Better final summaries | [Stronger Collation](#recipe-6-stronger-collation) |\n| A free-tier or shared OpenRouter key | [Free-Tier Resilience](#recipe-7-free-tier-resilience) |\n| A different search model for one repo only | [Per-Project Override](#recipe-8-per-project-override) |\n\nEvery recipe is exercised end-to-end in its own isolated environment by [`test/e2e/10_config_recipes.sh`](test/e2e/10_config_recipes.sh); recipes 2 and 3 by `08_websearch_tool.sh` and `09_sonar_pro_search.sh`.\n\n### Recipe 1: Zero Configuration\n\nWrite nothing. You get Sonar search with citation harvesting, MiniMax M3 extraction and collation, 10 pages per session, and the `.search/` cache. Every other recipe below changes exactly one concern from this baseline.\n\n### Recipe 2: Web Search Tool + Nano\n\nAny OpenRouter chat model gains live search through the `openrouter:web_search` server tool, so nothing depends on a search-native model family. This is the cheapest post-sunset migration (≈$0.008 per search). The `reasoning: \"minimal\"` pin matters: GPT-5 family models burn their completion budget on reasoning when left unconstrained.\n\n```jsonc\n{\n  \"pi-intelli-search\": {\n    \"searchModel\": {\n      \"provider\": \"openrouter\",\n      \"model\": \"openai/gpt-5-nano\"\n    },\n    \"searchWebSearch\": {\n      \"enabled\": true,\n      \"engine\": \"exa\",\n      \"maxResults\": 8,\n      \"reasoning\": \"minimal\"\n    },\n    \"extractModel\": {\n      \"provider\": \"openrouter\",\n      \"model\": \"minimax/minimax-m3\"\n    },\n    \"collateModel\": {\n      \"provider\": \"openrouter\",\n      \"model\": \"minimax/minimax-m3\"\n    }\n  }\n}\n```\n\n### Recipe 3: Sonar Pro Search\n\nAgentic multi-step search on the Perplexity stack, reached through a settings-only model swap. Best raw search quality of the options, at ≈$0.05 per search ($18 per 1,000 requests plus tokens). `searchWebSearch` is disabled explicitly so this recipe stays correct even if you previously enabled the tool.\n\n```jsonc\n{\n  \"pi-intelli-search\": {\n    \"searchModel\": {\n      \"provider\": \"openrouter\",\n      \"model\": \"perplexity/sonar-pro-search\"\n    },\n    \"searchWebSearch\": {\n      \"enabled\": false\n    },\n    \"extractModel\": {\n      \"provider\": \"openrouter\",\n      \"model\": \"minimax/minimax-m3\"\n    },\n    \"collateModel\": {\n      \"provider\": \"openrouter\",\n      \"model\": \"minimax/minimax-m3\"\n    }\n  }\n}\n```\n\n### Recipe 4: Pin Eight Pages\n\nv0.13.0 raised `defaultUrls` to 10 and `maxUrls` to 20 because citation harvesting fills the URL list. If you prefer the earlier page count and spend, pin both values (each extra page costs ≈$0.004 to extract).\n\n```jsonc\n{\n  \"pi-intelli-search\": {\n    \"defaultUrls\": 8,\n    \"maxUrls\": 16\n  }\n}\n```\n\n### Recipe 5: Economy Extract and Collate\n\nExtraction and collation run 10+1 times per session, so token rates dominate cost. Swap both stages to a cheaper OpenRouter model; search is untouched. Any model `Pi` supports works for these stages.\n\n```jsonc\n{\n  \"pi-intelli-search\": {\n    \"extractModel\": {\n      \"provider\": \"openrouter\",\n      \"model\": \"google/gemini-3.7-flash\"\n    },\n    \"collateModel\": {\n      \"provider\": \"openrouter\",\n      \"model\": \"google/gemini-3.7-flash\"\n    }\n  }\n}\n```\n\nCheck the model's context window against `extractMaxChars` (150K chars is ≈37K tokens); lower `extractMaxChars` for smaller-window models.\n\n### Recipe 6: Stronger Collation\n\nKeep extraction cheap and spend on the final synthesis, where cross-source reasoning and contradiction-flagging live. Only `collateModel` changes.\n\n```jsonc\n{\n  \"pi-intelli-search\": {\n    \"collateModel\": {\n      \"provider\": \"openrouter\",\n      \"model\": \"openai/gpt-5-mini\"\n    }\n  }\n}\n```\n\n### Recipe 7: Free-Tier Resilience\n\nFree-tier OpenRouter keys share a ≈0.33 requests/second bucket. The extract stage fires up to 4 concurrent calls, which trips it. Space the calls, lengthen the retries, and shrink the page count.\n\n```jsonc\n{\n  \"pi-intelli-search\": {\n    \"defaultUrls\": 5,\n    \"minRequestIntervalMs\": 3000,\n    \"extractionConcurrency\": 2,\n    \"llmRetryAttempts\": 4,\n    \"llmTimeoutMs\": 120000\n  }\n}\n```\n\nPaid keys can ignore every key in this recipe; the defaults assume no hard rate limit.\n\n### Recipe 8: Per-Project Override\n\nA trusted project can override individual keys for one repository only. Put the override in `<project>/.pi/settings.json`; everything not listed keeps its global value.\n\n```jsonc\n{\n  \"pi-intelli-search\": {\n    \"searchModel\": {\n      \"provider\": \"openrouter\",\n      \"model\": \"perplexity/sonar-pro-search\"\n    },\n    \"cacheDir\": \".search-client-x\"\n  }\n}\n```\n\nUse this to give a client project a dedicated cache directory and a stronger search model while every other project stays on the global defaults.\n\n## Tools\n\n| Tool               | Description                                                                                         |\n| ------------------ | --------------------------------------------------------------------------------------------------- |\n| `intelli_search`   | Search the web and return a concise answer with a source list (top `defaultUrls`).                   |\n| `intelli_extract`  | Extract query-relevant content from a web page, preserving code and technical detail verbatim.      |\n| `intelli_collate`  | Deduplicate and synthesise multiple extractions into a summary. Writes cache.                       |\n| `intelli_research` | Search, fetch, extract, collate, cache. The primary research tool. One call.                        |\n\n## Quick Start\n\n### Quick Search\n\n```text\nintelli_search(query=\"TypeScript 5.8 release date\")\n```\n\n### Deep Research\n\n**Always provide a `focusPrompt`.** The extraction LLM works best with specific guidance.\n\n```text\nintelli_research(\n  query=\"Svelte 5 runes tutorial examples\",\n  focusPrompt=\"Extract the core rune concepts ($state, $derived, $effect), their syntax, and how they replace the old reactive declarations. Include migration patterns from Svelte 4.\"\n)\n```\n\n### Targeted Research With Domain Guidance\n\n```text\nintelli_research(\n  query=\"Cloudflare Workers KV write timeout limits\",\n  focusPrompt=\"Extract KV write limits, timeout thresholds, storage limits, and any workarounds for bulk writes. Focus on hard numbers and error messages.\",\n  maxUrls=3,\n  domains=[\"developers.cloudflare.com\"]\n)\n```\n\n`domains` guides source selection, it is not a security boundary: the query gains a `site:` expression, and with the web search tool enabled the same domains are also combined with `searchWebSearch.allowedDomains` and sent as an engine filter. The lists are combined, not intersected, and returned URLs are not checked against a local hostname allowlist before fetching. Engine support for allow and exclude lists differs (see [searchWebSearch Keys](#searchwebsearch-keys)).\n\n### Comparing Options\n\n```text\nintelli_research(\n  query=\"Tailwind CSS vs Vanilla Extract comparison 2026\",\n  focusPrompt=\"Extract pros/cons, bundle size benchmarks, DX tradeoffs, and migration costs. Note which claims come from official sources vs blog opinions.\"\n)\n```\n\n## Model Configuration\n\nAll three pipeline stages use independently configurable models. Defaults are chosen for cost-efficiency, but **any model `Pi` can access works**. This includes built-in providers, [OpenRouter](https://openrouter.ai) models, or models from other extensions.\n\n| Stage   | Default                       | Config key              |\n| ------- | ----------------------------- | ----------------------- |\n| Search  | `openrouter/perplexity/sonar` | `searchModel`           |\n| Extract | `openrouter/minimax/minimax-m3` | `extractModel`      |\n| Collate | `openrouter/minimax/minimax-m3` | `collateModel`      |\n\n### Why OpenRouter for _Sonar_?\n\n[_Perplexity Sonar_](https://docs.perplexity.ai) is an excellent search-grounded model, but it is not in `Pi`'s built-in model list. Rather than requiring a separate Perplexity API account (which requires a **$50 minimum credit top-up**), the extension routes _Sonar_ through [OpenRouter](https://openrouter.ai). _OpenRouter_ is a unified pay-as-you-go API with a lower minimum spend. One API key gives you _Sonar_ alongside thousands of other models. On first load, the extension patches `~/.pi/agent/models.json` to add _Sonar_ under the `openrouter` provider so `Pi` can discover it. This approach has several benefits:\n\n- **Avoids the Perplexity API $50 minimum.** Routing through `OpenRouter` consolidates spend on a single account already used across the open-source coding-agent ecosystem, including `Pi`. No separate _Perplexity_ subscription is required.\n- **One account, many models.** The same OpenRouter key covers _Sonar_ and any other models you might want for extract or collate.\n- **Is non-destructive.** The patch merges new models by ID. It never replaces existing OpenRouter models.\n- **Is idempotent.** It is safe across extension reloads and updates.\n\n- **Is idempotent.** It is safe across extension reloads and updates.\n\nThe same single-key argument covers the post-sunset alternatives: the [web search server tool](#openrouter-web-search-server-tool) and [`perplexity/sonar-pro-search`](#choosing-an-alternative-search-configuration) both route through the same OpenRouter account.\n\n### Source Harvesting from Citations\n\nSearch-grounded models return machine-readable `url_citation` annotations naming the sources they consulted, a larger set than the links they write into the prose (probe: 20 annotations against 3 prose links from _Sonar_). `Pi`'s chat-completions adapter reassembles only text, thinking, and tool-call blocks, so those annotations never reach extension code on their own. The pipeline reads a tee of the raw response body, parses the citations out, and merges them with the text-scraped links before pages are selected for fetching.\n\nThis runs on every search call regardless of model, needs no configuration, and never blocks or fails the pipeline. Text links come first; annotation-only links follow; exact URL duplicates are removed. `intelli_research` applies its URL limit after merging, so not every discovered source is fetched. Harvesting is best-effort: a model that emits no annotations, or annotations the parser does not recognise, leaves the text-link path intact. `intelli_search` caps its rendered source list at `defaultUrls` (top 10 by default). The count is recorded in `meta.json` as `stages.search.annotationsHarvested`.\n\n### OpenRouter Web Search Server Tool\n\nThe search stage normally relies on a search-native model (default: _Sonar_). The `searchWebSearch` setting decouples it: [OpenRouter](https://openrouter.ai)'s `openrouter:web_search` server tool gives the configured chat model access to live web search, so the pipeline is not tied to any search-native model family. The tool is beta upstream; the model decides whether and how many times to search, and search charges depend on the engine, the number of server-side searches, and token usage. `maxResults` limits results per search and `maxUrls` limits pages fetched; neither caps total search spend.\n\n**`searchWebSearch` requires `searchModel.provider` to be `openrouter`.** The tool id is OpenRouter-specific; on any other provider the setting is ignored without warning.\n\nA probe-validated pairing (2026-09): `openai/gpt-5-nano` with engine `exa` and `reasoning: \"minimal\"`, at ≈$0.008 per search with 5-17 cited sources:\n\n```jsonc\n{\n  \"pi-intelli-search\": {\n    \"searchModel\": {\n      \"provider\": \"openrouter\",\n      \"model\": \"openai/gpt-5-nano\"\n    },\n    \"searchWebSearch\": {\n      \"enabled\": true,\n      \"engine\": \"exa\",\n      \"maxResults\": 8,\n      \"reasoning\": \"minimal\"\n    }\n  }\n}\n```\n\n#### searchWebSearch Keys\n\nA supplied object replaces the entire default object; there is no per-key merge. A trusted project's object also replaces the global one. Omitting `reasoning` gives `low`, not `minimal`; omitting `maxResults` sends no result-count override and OpenRouter applies its own default (5).\n\n| Key | Values | Notes |\n|---|---|---|\n| `enabled` | `true`, `false` | Off by default. Requires `searchModel.provider` to be `openrouter`. |\n| `engine` | `auto`, `native`, `exa`, `parallel`, `perplexity`, `firecrawl` | `auto` (and unrecognised values) are omitted from the payload, leaving OpenRouter's default. |\n| `maxResults` | 1-25 (1-20 on `perplexity`) | Rounded and clamped by the extension. Per engine search, not per session. |\n| `searchContextSize` | `low` (≈5K chars), `medium` (≈15K), `high` (≈30K) | Engine-specific budgets; some engines ignore it. |\n| `allowedDomains` | array of domains | Combined (not intersected) with the per-call `domains` tool parameter. Cannot be combined with `excludedDomains` except on `exa`. |\n| `excludedDomains` | array of domains | As above. |\n| `reasoning` | `minimal`, `low`, `medium`, `high` | Falls back to `low` when omitted. Use `minimal` explicitly with GPT-5 family models, which otherwise burn reasoning budget when paired with the tool. |\n\nThe extension exposes a subset of the server tool's parameters. Upstream `mode`, `max_uses`, `max_total_results`, `max_characters`, and `user_location` are not settable through this block. The `firecrawl` engine additionally requires your own Firecrawl account configured with OpenRouter (BYOK); the other engines bill through OpenRouter credits.\n\n### Choosing an Alternative Search Configuration\n\nPerplexity states that its Sonar API is supported until September 27, 2026 (see its [migration guide](https://docs.perplexity.ai/docs/agent-api/migrate-from-sonar/overview)). This release does not change the default search model. It adds two configurable alternatives. Check [OpenRouter](https://openrouter.ai) for current availability: the direct API sunset notice does not by itself establish the retirement date of each OpenRouter model.\n\n| Option | Model | Setting | Cost per search |\n|---|---|---|---|\n| Server tool | `openai/gpt-5-nano` + `engine: \"exa\"` | `searchWebSearch.enabled: true` | ≈$0.008 |\n| Model swap | `perplexity/sonar-pro-search` | `searchModel` only | ≈$0.05 |\n| Current default | `perplexity/sonar` | none | ≈$0.007, direct API retires 2026-09-27 |\n\nThe model swap is settings-only:\n\n```jsonc\n{\n  \"pi-intelli-search\": {\n    \"searchModel\": {\n      \"provider\": \"openrouter\",\n      \"model\": \"perplexity/sonar-pro-search\"\n    },\n    \"searchWebSearch\": {\n      \"enabled\": false\n    }\n  }\n}\n```\n\n`perplexity/sonar-pro-search` bills $18 per 1,000 requests on top of $3/$15 per 1M tokens ([model card](https://openrouter.ai/perplexity/sonar-pro-search)). It buys agentic multi-step search; it is not the cheap migration. Explicitly disabling `searchWebSearch` in the example makes it safe to apply after previously enabling the server tool: changing `searchModel` alone does not clear that separate setting.\n\n### Swapping the Extract and Collate Model\n\n_MiniMax_ M3 (via OpenRouter) is the default because its collations state their ranking methodology, caveat low-evidence claims, and flag compatibility warnings, and its ≈1M context never clips a full `extractMaxChars` page. It costs the same per token as M2.7 but writes ≈2× the extraction output, so sessions cost ≈2× the extract stage of M2.7. To spend less, pin `minimax/minimax-m2.7` explicitly. The benchmark methodology, harness, and recorded runs behind this choice live in [docs/BENCHMARKS.md](docs/BENCHMARKS.md). You can also use any model `Pi` supports. Override in `~/.pi/agent/settings.json` or `.pi/settings.json`:\n\n**Option A: Use a `Pi` Built-In Provider** (auth via `/login`):\n\n```jsonc\n{\n  \"pi-intelli-search\": {\n    \"extractModel\": {\n      \"provider\": \"openai\",\n      \"model\": \"gpt-4o-mini\"\n    },\n    \"collateModel\": {\n      \"provider\": \"openai\",\n      \"model\": \"gpt-4o-mini\"\n    }\n  }\n}\n```\n\n**Option B: Use Another OpenRouter Model** (same key, no extra setup):\n\n```jsonc\n{\n  \"pi-intelli-search\": {\n    \"extractModel\": {\n      \"provider\": \"openrouter\",\n      \"model\": \"google/gemini-2.0-flash-001\"\n    },\n    \"collateModel\": {\n      \"provider\": \"openrouter\",\n      \"model\": \"google/gemini-2.0-flash-001\"\n    }\n  }\n}\n```\n\n**Option C: Use a Model Provided by Another Extension** (for example, Z.Ai or local models):\n\n```jsonc\n{\n  \"pi-intelli-search\": {\n    \"extractModel\": {\n      \"provider\": \"zai\",\n      \"model\": \"glm-5.1\"\n    },\n    \"collateModel\": {\n      \"provider\": \"zai\",\n      \"model\": \"glm-5.1\"\n    }\n  }\n}\n```\n\nThe only requirement is that the model is registered in `Pi`'s model registry and has auth configured. Run `/login` to set up built-in providers, or follow the extension's own setup for extension-provided models.\n\n### Model Selection Guidance\n\nFor extraction and collation, the ideal model has:\n\n- **Low cost per token:** 8 extractions, 1 collation, and 1 cache suggest per default session.\n- **Good instruction following:** Must adhere to extraction prompts precisely.\n- **Sufficient context:** Cleaned pages can be ≈50K chars (truncated to `extractMaxChars`).\n\nModels known to work well for extraction and collation: _MiniMax_ M3 (default, ≈1M context, via OpenRouter), _MiniMax_ M2.7 (leaner extractions, half the output tokens, via OpenRouter), _Qwen_ 3.5-Flash (≈1M context, ≈$0.26/M output), _DeepSeek_ V4 Flash (≈1M context, ≈$0.28/M output), _Gemini_ 2.0 Flash Lite (≈1M context, ≈$0.30/M output), _GPT-4.1_ Nano (≈1M context, ≈$0.40/M output).\n\n### Required API Keys\n\nWith default settings, you need one key in `~/.pi/agent/auth.json`:\n\n```json\n{\n  \"openrouter\": {\n    \"type\": \"api_key\",\n    \"key\": \"sk-or-v1-...\"\n  }\n}\n```\n\nA single [OpenRouter](https://openrouter.ai) key is the minimum required. It covers the default search model (Sonar) plus MiniMax M3 for extraction and collation with the default models. The extract and collate stages can use any model `Pi` supports. Override `extractModel` or `collateModel` in settings to switch providers.\n\nRun `/login openrouter` in `Pi` to authorise via OAuth (`Pi` 0.82.0 and later), or edit the file directly with a key from [openrouter.ai/keys](https://openrouter.ai/keys).\n\n## Pipeline\n\n<p align=\"center\">\n  <img src=\"docs/images/07B.png\" alt=\"Vintage engraving-style infographic titled &quot;INTELLI_RESEARCH: The Five-Stage Pipeline,&quot; showing five sequentially linked numbered stages triggered by intelli_research(query): (1) Search: web discovery via Perplexity Sonar, OpenRouter/pi-native auth; (2) Fetch: dual fetch and quality comparison using wreq-js + Defuddle against raw markdown; (3) Extract: per-page parallel LLM extraction, default model MiniMax M2.7, configurable; (4) Collate: deduplication and persistent cache via MiniMax M2.7 (default, configurable), flags conflicts; (5) Cache Suggest: additive stage, LLM judge surfaces related prior searches. Stages are connected by bold arrows; each is illustrated with a period-appropriate vignette (armillary sphere, scrolls, alchemical still, filing cabinet, owl with documents).\" width=\"800\" />\n</p>\n\nAll model assignments are configurable. See [Model Configuration](#model-configuration). The illustration above shows the default configuration; alternative search configurations use the same five-stage pipeline.\n\nThe search stage merges text links with harvested citation annotations before selecting pages (see [Source Harvesting from Citations](#source-harvesting-from-citations)). Each page is dual-fetched (HTML via Defuddle versus Markdown endpoint) and scored for quality. Per-page extraction (guided by `focusPrompt`) compresses ≈50K chars to ≈3-5K of query-relevant content before collation, keeping the total context manageable (≈30-50K for 10 pages).\n\nAt the end of each run the pipeline writes a local-only `meta.json` telemetry sidecar into the cache directory (see [Cache Structure](#cache-structure)). Set `disableTelemetry: true` to suppress it.\n\nSee [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md) for detailed design decisions.\n\n## Cost\n\nPer research session with the default 10 pages: **≈$0.09**\n\n| Step                           | Calls            | Cost     |\n| ------------------------------ | ---------------- | -------- |\n| Search (_Sonar_)               | 1                | ≈$0.007  |\n| Fetch (Defuddle + Markdown)    | 10 (≤4 concurrent) pairs | $0.00    |\n| Extract (M3 via OpenRouter)         | 10 (≤4 concurrent) | ≈$0.07   |\n| Collate (M3 via OpenRouter)         | 1                | ≈$0.01   |\n| Cache suggest (M3 via OpenRouter)   | 1                | ≈$0.0002 |\n\nSince v0.13.0 the search stage contributes every source the model cited, not only the ones it wrote into the prose, so sessions reach the `defaultUrls` page count more often than before. The ≈$0.09 figure is the typical cost of a full 10-page session with the v0.14.0 default models (M3 extracts cost the same per token as M2.7 but write ≈2× the output tokens); lower `defaultUrls` to hold earlier spend. Changing the search model or engine also changes the search step's cost (see [Choosing an Alternative Search Configuration](#choosing-an-alternative-search-configuration)); the extract and collate rows scale with your chosen models.\n\n## Settings\n\nOverride defaults in `~/.pi/agent/settings.json` or, for a trusted project, `<project>/.pi/settings.json` under the `pi-intelli-search` namespace. `Pi` ignores project-local settings until you approve the project; the global file always applies:\n\n```jsonc\n{\n  \"pi-intelli-search\": {\n    // Model assignments (see Model Configuration above)\n    \"searchModel\": {\n      \"provider\": \"openrouter\",\n      \"model\": \"perplexity/sonar\"\n    },\n    \"extractModel\": {\n      \"provider\": \"openrouter\",\n      \"model\": \"minimax/minimax-m3\"\n    },\n    \"collateModel\": {\n      \"provider\": \"openrouter\",\n      \"model\": \"minimax/minimax-m3\"\n    },\n\n    // Pipeline tuning\n    \"defaultUrls\": 10,\n    \"maxUrls\": 20,\n    \"cacheDir\": \".search\",\n    \"extractMaxChars\": 150000,\n    \"extractionMaxTokens\": 3000,\n    \"collationMaxTokens\": 4000,\n\n    // Fetch behavior\n    \"fetchTimeoutMs\": 20000,\n    \"fetchConcurrency\": 4,\n    \"browserFingerprint\": \"chrome_145\"\n  }\n}\n```\n\n### Settings Reference\n\n| Setting | Stage | Default | What It Does |\n|---|---|---|---|\n| `searchModel` | 1. Search | `openrouter/perplexity/sonar` | Model for the initial web search. Swap to a stronger model for deeper search results, or to a cheaper one to reduce the ≈$0.007 search cost. See [Model Configuration](#model-configuration). |\n| `searchWebSearch` | 1. Search | see [reference](#openrouter-web-search-server-tool) | Attach OpenRouter's `openrouter:web_search` server tool to the search-stage call so a plain OpenRouter chat model gains access to live search. Off by default; requires `searchModel.provider` to be `openrouter`. Full key reference in [OpenRouter Web Search Server Tool](#openrouter-web-search-server-tool). |\n| `extractModel` | 3. Extract | `openrouter/minimax/minimax-m3` | Model for per-page content extraction. Runs 10 times per session so low cost per token matters. Ensure the model's context window exceeds `extractMaxChars` plus the system prompt. For a model with a smaller window (e.g. 256K), lower `extractMaxChars` to match. See [Model Configuration](#model-configuration). |\n| `collateModel` | 4. Collate | `openrouter/minimax/minimax-m3` | Model for cross-source synthesis and deduplication. Sees all extractions at once so it needs enough context and instruction-following to flag contradictions. A model with ≥128K context handles 8 full extractions comfortably. See [Model Configuration](#model-configuration). |\n| `defaultUrls` | 1 → 2 | `10` | Fallback when the agent does not pass `maxUrls` per call; also caps `intelli_search`'s rendered source list. Lower values reduce cost and latency but give less thorough results. The agent's [skill guide](skills/intelli-search/SKILL.md) recommends 3 (targeted), 10 (broad), or 16 (exhaustive). Raised from 8 in v0.13.0: citation harvesting fills the URL list, so the pipeline can use more sources than prose links alone provided. |\n| `maxUrls` | 1 → 2 | `20` | Hard cap on URLs fetched. Lower caps mean faster responses and lower cost; higher caps allow more thorough research. Each extra URL adds ≈$0.007 in extract cost with the default model. Requests above the cap are silently clamped. Raised from 16 in v0.13.0. |\n| `cacheDir` | 4, 5 | `.search` | Directory where research sessions are cached. Change this to keep project-specific research separate. Example: `\".my-research-cache\"`. |\n| `extractMaxChars` | 3. Extract | `150000` | Maximum characters of raw page content fed to the extract LLM per page. **Lower this when using an extract model with a small context window** (e.g. 256K) to prevent context overflow. Raise it if pages are truncated and your model has ample headroom. Each 50K chars consumes ≈12K input tokens. |\n| `extractionConcurrency` | 3. Extract | `4` | Number of per-page extractions sent to the extract model simultaneously. Bounded so a wide result set does not fire many concurrent LLM calls and trigger rate limiting. Raise it (6-8) on generous rate limits for faster extraction; lower it (1-2) on tight limits. |\n| `extractionMaxTokens` | 3. Extract | `3000` | Maximum output tokens for each per-page extraction. Higher values preserve more detail at higher cost. **Lower this when using a model with a small context window** so the output does not crowd out the input. The extract prompt targets 3,000-5,000 characters; 3,000 tokens covers this comfortably. |\n| `collationMaxTokens` | 4. Collate | `4000` | Maximum output tokens for the final synthesis. Lower values force tighter deduplication. **Lower this when using a collation model with a small context window** (the output must fit alongside all extraction inputs). The summary you see in the agent context is bounded by this setting. |\n| `fetchTimeoutMs` | 2. Fetch | `20000` | Per-page fetch timeout in milliseconds. Increase if you research sites known to be slow. Fetches run in parallel so this does not multiply by page count. |\n| `fetchConcurrency` | 2. Fetch | `4` | Number of pages fetched simultaneously. Higher values (6-8) complete the fetch stage faster but may trigger rate limiting. Lower values (2) are gentler on target servers. |\n| `browserFingerprint` | 2. Fetch | `chrome_145` | TLS fingerprint used by [_wreq-js_](https://github.com/sqdshguy/wreq-js) to impersonate a browser. Determines which HTTP client signature site sees. Available profiles include `chrome_*`, `firefox_*`, `safari_*`, `edge_*`, and `opera_*` across many versions. Change this if a site blocks the default fingerprint. |\n| `llmTimeoutMs` | All LLM | `90000` | Hard per-call timeout in milliseconds for every LLM request. Bounds a stalled provider connection (common under rate limiting) so it becomes a retryable timeout instead of hanging on the SDK's long default. Raise it for slow reasoning models on large inputs; lower it to fail faster. |\n| `llmRetryAttempts` | All LLM | `3` | Total attempts per LLM call including the first. Transient failures (HTTP 429, 5xx, timeouts) are retried with full-jitter exponential backoff that honours any Retry-After hint. Set to `1` to disable retry. |\n| `retryBaseDelayMs` | All LLM | `1500` | Base delay for retry backoff. Attempt N waits a random duration up to `min(retryMaxDelayMs, retryBaseDelayMs * 2^(N-1))`. |\n| `retryMaxDelayMs` | All LLM | `20000` | Upper bound on any single retry backoff, and the clamp applied to a Retry-After hint so a large hint cannot stall the pipeline. |\n| `searchRetryAttempts` | 1. Search | `2` | Total attempts for the search stage when it returns a valid response with zero usable links (a degraded result), including the first. Independent of `llmRetryAttempts`, which covers transport errors. |\n| `minRequestIntervalMs` | 3. Extract | `0` | Minimum gap in milliseconds between concurrent extract LLM calls. `0` disables the throttle. Free-tier OpenRouter keys (approximately 0.33 requests per second) should set this to approximately `3000` to avoid tripping rate limits; paid keys can leave it off. |\n| `disableTelemetry` | All | `false` | When `false`, each `intelli_research` run writes a local-only `meta.json` sidecar into its `.search/<slug>/` cache directory recording per-stage outcomes (pages fetched/failed, fetch-variant winners, links and harvested annotations, search-retry, cache-suggest hits, latency). Strictly local: no network call, no data leaves the host. Set `true` to suppress the sidecar. |\n\n### Automatic llms-full.txt Discovery\n\nSites that follow the [`llms-full.txt` convention](https://llmstxt.org) publish a single Markdown file containing their complete documentation. During the fetch stage, every domain in the search results is probed at `https://domain/llms-full.txt`. If the file exists (HTTP 200), it is downloaded raw to `sources/llms-full-*.md` for offline search with `grep` or `read`.\n\nThese probes are supplementary and never gate the research result. Each runs under a tight timeout and honours cancellation, so a slow or unresponsive documentation host cannot stall the summary, and pressing Esc cancels them along with the rest of the pipeline. Set `disableLlmsFullDiscovery: true` to skip the probes entirely.\n\nA small built-in list handles sites with non-standard paths:\n\n| Site | Path Pattern |\n|------|-------------|\n| Cloudflare Docs | `/product/llms-full.txt` |\n| Next.js | `/docs/llms-full.txt` |\n| Vite | `/llms-full.txt` (root) |\n\nNo configuration is needed. The probe and download are automatic.\n\n## Cache Structure\n\n```text\n.search/\n├── 2026-04-19-d1-worker-api-3f7a2c/\n│   ├── report.md               # Collated summary + source index\n│   ├── query.txt               # Original search query\n│   ├── meta.json               # Local-only telemetry sidecar (v0.11.0+)\n│   ├── extractions/            # Per-page LLM extractions (≈3-5K each)\n│   │   ├── 01-developers-cloudflare-com.md\n│   │   └── 02-developers-cloudflare-com.md\n│   └── sources/                # Full page content\n│       ├── 01-developers-cloudflare-com.md\n│       ├── 02-developers-cloudflare-com.md\n│       └── llms-full-developers-cloudflare-com.md\n└── .index.json                 # Index of all cached searches\n```\n\nEach cached session lives in a directory named `<date>-<slug>-<hash>`. The `<hash>` is a short SHA-1 of the full query, appended so that distinct queries issued on the same day do not collide and overwrite each other. Concurrent runs stage their output before a short cache commit, so source files and the shared index remain intact.\n\n**`meta.json` (local-only telemetry).** Each `intelli_research` run writes a `meta.json` sidecar recording per-stage outcomes: pages fetched and failed, fetch-variant winners (Defuddle versus Markdown), whether search-retry fired, cache-suggest hits, and per-stage latency. `stages.search.annotationsHarvested` counts `url_citation` entries recovered from the response body; it is absent on runs against models that emit none, and it is not a subset of `linksReturned`: harvested citations are merged with prose links before the `maxUrls` clamp, so a run can harvest twenty and report ten links. It is strictly local: no network call is added, no data leaves the host, and no account or identity is recorded. Set `disableTelemetry: true` in [Settings](#settings) to suppress it. The bundled [`scripts/analyze-sessions.sh`](scripts/README.md) can aggregate these sidecars to report per-stage success rates.\n\n## Compatibility\n\n- **`Pi` >= 0.81.1:** Core functionality, trusted project settings, the configurable `CONFIG_DIR_NAME`, provider-based `pi-ai` calls, and sequential cache-writing tools. On `Pi` >= 0.86, LLM calls dispatch through the `ctx.modelRegistry.streamSimple()` facade so system prompts reach the model; `Pi` 0.81.1 through 0.85.x use the direct provider path. Compatibility audited and verified through `Pi` 0.87.0; the `fetch`/`onPayload` request hooks used by citation harvesting and the web search tool are verified against pi-ai 0.87.0.\n- UI notifications and status indicators are guarded with `ctx.hasUI`, so the tools behave cleanly in non-interactive modes (`pi -p`, `--mode json`, RPC).\n- Page fetching honours the global `httpProxy` setting. The LLM stages already route through `Pi`'s managed HTTP clients, which apply `httpProxy` automatically.\n- Retry and timeout are owned by the extension (`callLlm()`), independent of `Pi`'s `retry.provider.maxRetries`. The extension forces `maxRetries: 0` and runs its own full-jitter backoff, so changing `Pi`'s provider-retry setting has no effect on these tools.\n\n## Development\n\n```bash\nnpm install\nnpm run build        # TypeScript -> dist/\nnpm test             # Unit tests\nnpm run test:smoke   # Smoke test\n\n# Test in pi\npi -e ./dist/index.js\n\n# Install as package\npi install /path/to/pi-intelli-search\n```\n\n## Documentation\n\n- [Comparison](docs/COMPARISON.md): How `intelli-search` compares to other `Pi` search extensions.\n- [Changelog](CHANGELOG.md): Release history.\n- [Architecture](docs/ARCHITECTURE.md): Detailed design decisions and pipeline internals.\n- [Components](docs/COMPONENTS.md): Third-party dependencies and license attribution.\n- [Skill guide](skills/intelli-search/SKILL.md): Agent-facing usage instructions.\n- [Contributor guide](AGENTS.md): Coding conventions and project structure.\n\n## Downloads\n\nWeekly npm downloads across all published versions, refreshed every Monday by a scheduled GitHub Action. The chart is rendered with [rough.js](https://roughjs.com) from an append-only daily cache in `data/downloads.json` (see `scripts/plot-downloads.mts`).\n\n<p align=\"center\">\n  <picture>\n    <source media=\"(prefers-color-scheme: dark)\" srcset=\"docs/images/downloads-dark.svg\">\n    <img alt=\"Weekly npm downloads for @curio-data/pi-intelli-search\" src=\"docs/images/downloads-light.svg\" width=\"800\" />\n  </picture>\n</p>\n\n## Provenance\n\nGit history was rewritten in `v0.9.0` to normalise commit author and committer metadata on the path to a stable `v1` release. The `gitHead` SHAs recorded in `npm` SLSA provenance attestations for versions 0.3.1 through 0.8.0 reference pre-rewrite commits that no longer resolve in this repository. Published tarballs and their tree-level contents are unchanged; only commit metadata was altered. From v0.9.0 onwards, attestations track the rewritten history. See the [Changelog](CHANGELOG.md) entry for v0.9.0 for the full account.\n\n## Sponsor\n\n<img src=\"docs/images/sponsor.png\" alt=\"Banner image for &quot;Curio Data Pro.&quot; A cartoon robot detective in a deerstalker hat and brown cape peers through binoculars on the left, beside a bordered logo reading &quot;CURIO DATA PRO&quot; in dark red serif type. The background is a stylised steampunk harbour scene featuring a docked submarine, a steam locomotive pulling into a quayside station, gas street lamps, industrial cranes, and brick warehouses under a hazy sky.\" width=\"800\" />\n\n**[Curio Data Pro Ltd](https://blog.curiodata.pro/)** sponsors this project. _Curio Data Pro_ is a data consultancy serving _Rail_, _Naval Design_, _Aviation_, and _Offshore Energy_, combining 20+ years of _Chartered Engineer_ experience with _Data Science_ and _DevOps_ capabilities.\n\n[Blog](https://blog.curiodata.pro/) | [LinkedIn](https://www.linkedin.com/company/curio-data-pro-ltd/)\n\n## License\n\nCopyright 2026 Ashraf Miah, Curio Data Pro Ltd.\n\nLicensed under the [Apache License, Version 2.0](./LICENSE).\n\n## Use of Large Language Models\n\nLarge Language Models were used extensively during the development of this project:\n\n- **`Pi` agent** (primary development environment).\n- **_GLM_ 5.1/5.2/5.3:** Primary model family for code generation and architecture, across successive releases.\n- **_Kimi_ K3:** Code generation, review, and vision-dependent verification.\n- **_MiniMax_ M3:** Adversarial review and analysis.\n- **_Qwen_ 3.8 Max:** Review and deep research.\n- **_DeepSeek_ V4 Pro:** Research and data analysis.\n- **_Qwen_ 3.6 Plus:** Secondary model for review and documentation.\n","readmeFilename":"README.md"}