{"_id":"@danypops/pi-web-spider","_rev":"47-64698f0ea4835fffed193d617e1cebb1","name":"@danypops/pi-web-spider","dist-tags":{"latest":"0.25.1"},"versions":{"0.10.4":{"name":"@danypops/pi-web-spider","version":"0.10.4","keywords":["pi-package"],"_id":"@danypops/pi-web-spider@0.10.4","maintainers":[{"name":"danypops","email":"danypops@protonmail.com"}],"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"62a60d37c476a951fd8e36277178e65c8cba0075","tarball":"https://registry.npmjs.org/@danypops/pi-web-spider/-/pi-web-spider-0.10.4.tgz","fileCount":16,"integrity":"sha512-Egt2weHZdvMz2Mu2X9cMhtEb2PcffjSu+ME79au2RPtYACQpHjS33SOhq5yfaoK5msuEmhJsC8e/j/nnqgKq8Q==","signatures":[{"sig":"MEUCIHqN4wse5y5Sn3NGOjcCxOio9w+EtnKnxJQbIcQSNyM5AiEA6FTA1Aj6fpEtcz8sZtyD2mtGuDds3rD6g4jrVzX+tME=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":104172},"main":"./src/index.ts","type":"module","gitHead":"01e998fa0dbfcea43fda0acf815e5db04a954de6","scripts":{"lint":"biome lint src/","test":"vitest --run","check":"npm run lint && tsc --noEmit"},"_npmUser":{"name":"danypops","email":"danypops@protonmail.com"},"_npmVersion":"11.14.1","description":"Pi extension: web_fetch, web_crawl, web_search — structured scraping for AI agents","directories":{},"_nodeVersion":"22.22.2","dependencies":{"@danypops/web-spider":"*"},"_hasShrinkwrap":false,"devDependencies":{"jiti":"^2.0.0","vitest":"^3.0.0","typescript":"^5.9.3","@types/node":"^22.19.19","@biomejs/biome":"^2.4.15"},"peerDependencies":{"@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web-spider_0.10.4_1784371457329_0.90620541483205","host":"s3://npm-registry-packages-npm-production"}},"0.10.8":{"name":"@danypops/pi-web-spider","version":"0.10.8","keywords":["pi-package"],"_id":"@danypops/pi-web-spider@0.10.8","maintainers":[{"name":"danypops","email":"danypops@protonmail.com"}],"homepage":"https://github.com/DanyPops/web-spider#readme","bugs":{"url":"https://github.com/DanyPops/web-spider/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"491be01fcd030689a8d637a089740d0421e008fb","tarball":"https://registry.npmjs.org/@danypops/pi-web-spider/-/pi-web-spider-0.10.8.tgz","fileCount":19,"integrity":"sha512-uGEvcfjOaSE8Sa8Vqjou7ELS4LpSEu7LWY8zxdr+mfBrKh6TyJs5jtxB8Np9xefqyR9J+xjLm769R0tg4H9xjg==","signatures":[{"sig":"MEYCIQCS2Cb9Wdw/n/lfFWI7wC/g55YzwlxXZu43/uYJL8SMmAIhAKKd1XLvUTTuLANyLAcGEKSlT4kQLUHmw9g4lKNo0JWi","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@danypops%2fpi-web-spider@0.10.8","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":125373},"main":"./src/index.ts","type":"module","gitHead":"a920f2a97f5d6f1dbfefe3647908a19653ddf22c","scripts":{"lint":"biome lint src/","test":"vitest --run","check":"npm run lint && tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7b0d92ac-f038-44f7-9bed-10643e5d0d61"}},"repository":{"url":"git+https://github.com/DanyPops/web-spider.git","type":"git","directory":"packages/pi-extension"},"_npmVersion":"12.0.1","description":"Pi extension: web_fetch, web_crawl, web_search — structured scraping for AI agents","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@danypops/web-spider":"*"},"_hasShrinkwrap":false,"devDependencies":{"jiti":"^2.0.0","vitest":"^3.0.0","typescript":"^5.9.3","@types/node":"^22.19.19","@biomejs/biome":"^2.4.15","@earendil-works/pi-coding-agent":"^0.80.10"},"peerDependencies":{"@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web-spider_0.10.8_1784381044053_0.3266306047891734","host":"s3://npm-registry-packages-npm-production"}},"0.11.0":{"name":"@danypops/pi-web-spider","version":"0.11.0","keywords":["pi-package"],"license":"MIT","_id":"@danypops/pi-web-spider@0.11.0","maintainers":[{"name":"danypops","email":"danypops@protonmail.com"}],"homepage":"https://github.com/DanyPops/web-spider#readme","bugs":{"url":"https://github.com/DanyPops/web-spider/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"500e4165efc43813619236fa3019924a44541b44","tarball":"https://registry.npmjs.org/@danypops/pi-web-spider/-/pi-web-spider-0.11.0.tgz","fileCount":24,"integrity":"sha512-3Dg625n7YAZSfB5RBTDllD8+iKhNcsK6phCtNbYejPFmVDK/ujlHSGAYh/z55X45DiLNRteYBzwHZv9XTGjUTA==","signatures":[{"sig":"MEUCIQC1b3QvhJKCJzpWqLpLv2JEBI8W0zNkiKg/63LBwoS5NAIgJlPjRiXeOmIbwDUE7nLpOYWD9Zag6H+77eeqRXcJPAE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@danypops%2fpi-web-spider@0.11.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":151176},"main":"./src/index.ts","type":"module","gitHead":"807974aa75b9de44b790a369ef2abd6107b3bb70","scripts":{"lint":"biome lint src/","test":"vitest --run","check":"npm run lint && tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7b0d92ac-f038-44f7-9bed-10643e5d0d61"}},"repository":{"url":"git+https://github.com/DanyPops/web-spider.git","type":"git","directory":"packages/pi-extension"},"_npmVersion":"12.0.1","description":"Pi extension: web_fetch, web_crawl, web_search — structured scraping for AI agents","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@danypops/web-spider":"^0.11.0","@danypops/web-spider-daemon":"^0.11.0"},"_hasShrinkwrap":false,"devDependencies":{"jiti":"^2.0.0","vitest":"^3.0.0","typescript":"^5.9.3","@types/node":"^22.19.19","@biomejs/biome":"^2.4.15","@earendil-works/pi-tui":"^0.80.10","@earendil-works/pi-coding-agent":"^0.80.10"},"peerDependencies":{"@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web-spider_0.11.0_1784666641973_0.824082872778017","host":"s3://npm-registry-packages-npm-production"}},"0.12.0":{"name":"@danypops/pi-web-spider","version":"0.12.0","keywords":["pi-package"],"license":"MIT","_id":"@danypops/pi-web-spider@0.12.0","maintainers":[{"name":"danypops","email":"danypops@protonmail.com"}],"homepage":"https://github.com/DanyPops/web-spider#readme","bugs":{"url":"https://github.com/DanyPops/web-spider/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"2d62f6823abbcf73f2ab6371a9391bfe5459f50b","tarball":"https://registry.npmjs.org/@danypops/pi-web-spider/-/pi-web-spider-0.12.0.tgz","fileCount":25,"integrity":"sha512-67WFWaCSBauUVURFhfeqqL8frS143xLCGSFHmpSCWo7P8ULCUMGrWjqxBJ44pmYmYJZiFAuVS+hUpV2crX9iog==","signatures":[{"sig":"MEUCIQCX45v5GGLNQ9c0If1+U+rOrq9G5l6oqnnEOtOCvjlRewIgEyMUOYQyKX2wZZdd1J1QPqwRm02yMgqgbzrvdcwIda8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@danypops%2fpi-web-spider@0.12.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":182534},"main":"./src/index.ts","type":"module","gitHead":"e1cea066ea950fe826967836b47b855a10ec17e9","scripts":{"lint":"biome lint src/","test":"vitest --run","check":"npm run lint && tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7b0d92ac-f038-44f7-9bed-10643e5d0d61"}},"repository":{"url":"git+https://github.com/DanyPops/web-spider.git","type":"git","directory":"packages/pi-extension"},"_npmVersion":"12.0.1","description":"Pi extension: web_fetch, web_crawl, web_search — structured scraping for AI agents","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@danypops/web-spider":"^0.12.0","@danypops/web-spider-daemon":"^0.12.0"},"_hasShrinkwrap":false,"devDependencies":{"jiti":"^2.0.0","vitest":"^3.0.0","typescript":"^5.9.3","@types/node":"^22.19.19","@biomejs/biome":"^2.4.15","@earendil-works/pi-tui":"^0.80.10","@earendil-works/pi-coding-agent":"^0.80.10"},"peerDependencies":{"@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web-spider_0.12.0_1784800760235_0.33357872427397783","host":"s3://npm-registry-packages-npm-production"}},"0.12.1":{"name":"@danypops/pi-web-spider","version":"0.12.1","keywords":["pi-package"],"license":"MIT","_id":"@danypops/pi-web-spider@0.12.1","maintainers":[{"name":"danypops","email":"danypops@protonmail.com"}],"homepage":"https://github.com/DanyPops/web-spider#readme","bugs":{"url":"https://github.com/DanyPops/web-spider/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"58917a4ed5419951c7d9de96d911e995d03beb90","tarball":"https://registry.npmjs.org/@danypops/pi-web-spider/-/pi-web-spider-0.12.1.tgz","fileCount":27,"integrity":"sha512-ld/GbfvPEd6znNvN23pCjSxFSS7khY8m4zcTLGid/Ek3oRQ8BqyOObH67JrFEVIjzQgeQm0b2pOFuIqulLQ8cg==","signatures":[{"sig":"MEUCIQDZIHXTbtpu3DLtP3gmbK51Kmng/dOAzQ9jc1IUSlj8oQIgOrNT7o3DenLRREhdZ5e16zVFDh6eu9o1bxruEZkrdMM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@danypops%2fpi-web-spider@0.12.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":212135},"main":"./src/index.ts","type":"module","gitHead":"d562689adc9dba1894912c5c3840bafd4984cd28","scripts":{"lint":"biome lint src/","test":"vitest --run","check":"npm run lint && tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7b0d92ac-f038-44f7-9bed-10643e5d0d61"}},"repository":{"url":"git+https://github.com/DanyPops/web-spider.git","type":"git","directory":"packages/pi-extension"},"_npmVersion":"12.0.1","description":"Pi extension: web_fetch, web_crawl, web_search — structured scraping for AI agents","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@danypops/web-spider":"^0.12.0","@danypops/web-spider-daemon":"^0.12.0"},"_hasShrinkwrap":false,"devDependencies":{"jiti":"^2.0.0","vitest":"^3.0.0","typescript":"^5.9.3","@types/node":"^22.19.19","@biomejs/biome":"^2.4.15","@earendil-works/pi-tui":"^0.80.10","@earendil-works/pi-coding-agent":"^0.80.10"},"peerDependencies":{"@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web-spider_0.12.1_1784803238424_0.031750248459333275","host":"s3://npm-registry-packages-npm-production"}},"0.12.2":{"name":"@danypops/pi-web-spider","version":"0.12.2","keywords":["pi-package"],"license":"MIT","_id":"@danypops/pi-web-spider@0.12.2","maintainers":[{"name":"danypops","email":"danypops@protonmail.com"}],"homepage":"https://github.com/DanyPops/web-spider#readme","bugs":{"url":"https://github.com/DanyPops/web-spider/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"088be9a5593201a1246d742221203cd37ebe4592","tarball":"https://registry.npmjs.org/@danypops/pi-web-spider/-/pi-web-spider-0.12.2.tgz","fileCount":29,"integrity":"sha512-60L1kU1VKkZqiqiAwv7L4/3p/9ZIcVDCtlf8n0oJ0fFWIOz+u2/NVDIK2Uw66UAlZcX6GaQfwdOt1PCvsPHouA==","signatures":[{"sig":"MEUCIQDtY8YWcBiFYUN9xkC4oQTr+Rf3kQbj00M664zz0MiN8wIgVOGWSgpBSoUJ1fwiuX2IepCBvULXA7EGJ+WXeR/xStM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@danypops%2fpi-web-spider@0.12.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":217396},"main":"./src/index.ts","type":"module","gitHead":"98cf4f8055da505717ea335919be65ec4a3305e5","scripts":{"lint":"biome lint src/","test":"vitest --run","check":"npm run lint && tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7b0d92ac-f038-44f7-9bed-10643e5d0d61"}},"repository":{"url":"git+https://github.com/DanyPops/web-spider.git","type":"git","directory":"packages/pi-extension"},"_npmVersion":"12.0.1","description":"Pi extension: web_fetch, web_crawl, web_search — structured scraping for AI agents","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@danypops/daemon-kit":"^0.4.0","@danypops/web-spider":"^0.13.0","@danypops/web-spider-daemon":"^0.13.0"},"_hasShrinkwrap":false,"devDependencies":{"jiti":"^2.0.0","vitest":"^3.0.0","typescript":"^5.9.3","@types/node":"^22.19.19","@biomejs/biome":"^2.4.15","@earendil-works/pi-tui":"^0.80.10","@earendil-works/pi-coding-agent":"^0.80.10"},"peerDependencies":{"@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web-spider_0.12.2_1785100641324_0.4718910134688621","host":"s3://npm-registry-packages-npm-production"}},"0.13.0":{"name":"@danypops/pi-web-spider","version":"0.13.0","keywords":["pi-package","web-search","web-scraping","web-fetch","crawler","browser-automation","playwright","brave","tavily","exa"],"license":"MIT","_id":"@danypops/pi-web-spider@0.13.0","maintainers":[{"name":"danypops","email":"danypops@protonmail.com"}],"homepage":"https://github.com/DanyPops/web-spider#readme","bugs":{"url":"https://github.com/DanyPops/web-spider/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"06cf0029679b8e7c7a613a71986418ee907c7529","tarball":"https://registry.npmjs.org/@danypops/pi-web-spider/-/pi-web-spider-0.13.0.tgz","fileCount":9,"integrity":"sha512-n6j/7enB4wUCeQVIIeFDUxeyk/SkV9lxJyQA+KYYQGDSCQd6Wr+ZbtVgM73X5quWPZMCB5akzxO0m3ZU92xNfg==","signatures":[{"sig":"MEUCIFY0FwJ2dXpbKOKfYtrvujfFK6ZNwpo1pQXYvyvlSRXmAiEAyampKF+zoVMtShlDa+jhL4NhZYk5xfw1Tk0zGAK6pEE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@danypops%2fpi-web-spider@0.13.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":108475},"main":"./src/index.ts","type":"module","gitHead":"a2697b4c4645f278570ea38553e0466292fe71be","scripts":{"lint":"biome lint src/","test":"vitest --run","check":"npm run lint && tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7b0d92ac-f038-44f7-9bed-10643e5d0d61"}},"repository":{"url":"git+https://github.com/DanyPops/web-spider.git","type":"git","directory":"packages/pi-extension"},"_npmVersion":"12.0.1","description":"Pi extension for web_fetch, web_search, and live browser sessions: 7 search providers (Brave, Brave LLM Context, Tavily, Exa, Serper, SerpApi, You.com) with automatic fallback, robots.txt-respecting crawl, GitHub/Wikipedia/llms.txt-aware fetching, and a d","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@danypops/daemon-kit":"^0.7.0","@danypops/web-spider":"^0.14.0","@danypops/web-spider-daemon":"^0.14.0"},"_hasShrinkwrap":false,"devDependencies":{"jiti":"^2.0.0","vitest":"^3.0.0","typescript":"^5.9.3","@types/node":"^22.19.19","@biomejs/biome":"^2.4.15","@earendil-works/pi-tui":"^0.80.10","@earendil-works/pi-coding-agent":"^0.80.10"},"peerDependencies":{"@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web-spider_0.13.0_1785338600564_0.8994102296365878","host":"s3://npm-registry-packages-npm-production"}},"0.14.0":{"name":"@danypops/pi-web-spider","version":"0.14.0","keywords":["pi-package","web-search","web-scraping","web-fetch","crawler","browser-automation","playwright","brave","tavily","exa"],"license":"MIT","_id":"@danypops/pi-web-spider@0.14.0","maintainers":[{"name":"danypops","email":"danypops@protonmail.com"}],"homepage":"https://github.com/DanyPops/web-spider#readme","bugs":{"url":"https://github.com/DanyPops/web-spider/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"2dfefb150471afa9b9c20f12c43e40d02174b42a","tarball":"https://registry.npmjs.org/@danypops/pi-web-spider/-/pi-web-spider-0.14.0.tgz","fileCount":9,"integrity":"sha512-OXmBXGBNzy19oZ6kPvAAEbOoUzg0Gr39FOshsMxsK+hSl/F9GLAbZFWp3BR9Tkx79C4M7EZCM7mx6Qx5BpgUwg==","signatures":[{"sig":"MEQCIHRIhC6vUhFZi2T91KoOPsUdgNfxRdTzIAGlWjuoeGuqAiBENksXlRy9iMU8v+OeMmBI9885a2W378KJrs9bzKxtYA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@danypops%2fpi-web-spider@0.14.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":109679},"main":"./src/index.ts","type":"module","gitHead":"525d635fda940ea92da52a4b868027da7c3c53d8","scripts":{"lint":"biome lint src/","test":"vitest --run","check":"npm run lint && tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7b0d92ac-f038-44f7-9bed-10643e5d0d61"}},"repository":{"url":"git+https://github.com/DanyPops/web-spider.git","type":"git","directory":"packages/pi-extension"},"_npmVersion":"12.0.2","description":"Pi extension for web_fetch, web_search, and live browser sessions: 7 search providers (Brave, Brave LLM Context, Tavily, Exa, Serper, SerpApi, You.com) with automatic fallback, robots.txt-respecting crawl, GitHub/Wikipedia/llms.txt-aware fetching, and a d","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@danypops/web-spider":"^0.14.0","@danypops/vehicle-client":"^0.5.1","@danypops/web-spider-daemon":"^0.16.0"},"_hasShrinkwrap":false,"devDependencies":{"jiti":"^2.0.0","vitest":"^3.0.0","typescript":"^5.9.3","@types/node":"^22.19.19","@biomejs/biome":"^2.4.15","@earendil-works/pi-tui":"^0.80.10","@earendil-works/pi-coding-agent":"^0.80.10"},"peerDependencies":{"@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web-spider_0.14.0_1785700481011_0.38948293781267695","host":"s3://npm-registry-packages-npm-production"}},"0.15.0":{"name":"@danypops/pi-web-spider","version":"0.15.0","keywords":["pi-package","web-search","web-scraping","web-fetch","crawler","browser-automation","playwright","brave","tavily","exa"],"license":"MIT","_id":"@danypops/pi-web-spider@0.15.0","maintainers":[{"name":"danypops","email":"danypops@protonmail.com"}],"homepage":"https://github.com/DanyPops/web-spider#readme","bugs":{"url":"https://github.com/DanyPops/web-spider/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"b5ad1787f26a99ad06b2b23c35fd4c8b35c59dab","tarball":"https://registry.npmjs.org/@danypops/pi-web-spider/-/pi-web-spider-0.15.0.tgz","fileCount":9,"integrity":"sha512-BqD7EC9SEIMBjW0kiyPBG2l0oU3RAvK+/YXXocaCz0uTYMmuL3ysv2JGXfB8tgH0BDLiZaoenNpCJxJlM+T/IQ==","signatures":[{"sig":"MEYCIQDCVk+uL2tZxTlejDGcW8Fr71CkJWdNTrLTy9KZnMX8UQIhAOT+atC+FenDraqWtgJDCVlwDdytMuA88PqoI8u+XfSr","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@danypops%2fpi-web-spider@0.15.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":111915},"main":"./src/index.ts","type":"module","gitHead":"fc6b048bce5a485c9e8362203235ab0f866c18fe","scripts":{"lint":"biome lint src/","test":"vitest --run","check":"npm run lint && tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7b0d92ac-f038-44f7-9bed-10643e5d0d61"}},"repository":{"url":"git+https://github.com/DanyPops/web-spider.git","type":"git","directory":"packages/pi-extension"},"_npmVersion":"12.0.2","description":"Pi extension for web_fetch, web_search, and live browser sessions: 7 search providers (Brave, Brave LLM Context, Tavily, Exa, Serper, SerpApi, You.com) with automatic fallback, robots.txt-respecting crawl, GitHub/Wikipedia/llms.txt-aware fetching, and a d","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@danypops/web-spider":"^0.14.0","@danypops/vehicle-core":"^0.10.0","@danypops/vehicle-client":"^0.5.1","@danypops/vehicle-client-pi":"^0.15.2","@danypops/web-spider-daemon":"^0.16.0"},"_hasShrinkwrap":false,"devDependencies":{"jiti":"^2.0.0","vitest":"^3.0.0","typescript":"^5.9.3","@types/node":"^22.19.19","@biomejs/biome":"^2.4.15","@earendil-works/pi-tui":"^0.80.10","@earendil-works/pi-coding-agent":"^0.80.10"},"peerDependencies":{"@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web-spider_0.15.0_1785706009174_0.7883278053665155","host":"s3://npm-registry-packages-npm-production"}},"0.15.1":{"name":"@danypops/pi-web-spider","version":"0.15.1","keywords":["pi-package","web-search","web-scraping","web-fetch","crawler","browser-automation","playwright","brave","tavily","exa"],"license":"MIT","_id":"@danypops/pi-web-spider@0.15.1","maintainers":[{"name":"danypops","email":"danypops@protonmail.com"}],"homepage":"https://github.com/DanyPops/web-spider#readme","bugs":{"url":"https://github.com/DanyPops/web-spider/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"767623113a39c700c890c82fde92b8c69c7c6cad","tarball":"https://registry.npmjs.org/@danypops/pi-web-spider/-/pi-web-spider-0.15.1.tgz","fileCount":9,"integrity":"sha512-BRXgG9PDDgu0HfynWopiumkgj/PuY1U5Ovk7yR/+AVgXlqxnJdelHv2x9f7ImWMnXHXgnOHZiYqi76LB76XifQ==","signatures":[{"sig":"MEUCIQCzk/6Pq4ydHiFGsjXGwGJlLNsFYqrLOm5qSEneXzpj8QIgNIHF4KC4cqpMhOQs9IrgBLdxkCZyjEGmr20qmh/cjEY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@danypops%2fpi-web-spider@0.15.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":112678},"main":"./src/index.ts","type":"module","gitHead":"ea1bf4e5d5203c858f350d029a6d0ef442baa28c","scripts":{"lint":"biome lint src/","test":"vitest --run","check":"npm run lint && tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7b0d92ac-f038-44f7-9bed-10643e5d0d61"}},"repository":{"url":"git+https://github.com/DanyPops/web-spider.git","type":"git","directory":"packages/pi-extension"},"_npmVersion":"12.0.2","description":"Pi extension for web_fetch, web_search, and live browser sessions: 7 search providers (Brave, Brave LLM Context, Tavily, Exa, Serper, SerpApi, You.com) with automatic fallback, robots.txt-respecting crawl, GitHub/Wikipedia/llms.txt-aware fetching, and a d","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@danypops/web-spider":"^0.14.0","@danypops/vehicle-core":"^0.10.0","@danypops/vehicle-client":"^0.5.1","@danypops/vehicle-client-pi":"^0.15.2","@danypops/web-spider-daemon":"^0.16.0"},"_hasShrinkwrap":false,"devDependencies":{"jiti":"^2.0.0","vitest":"^3.0.0","typescript":"^5.9.3","@types/node":"^22.19.19","@biomejs/biome":"^2.4.15","@earendil-works/pi-tui":"^0.80.10","@earendil-works/pi-coding-agent":"^0.80.10"},"peerDependencies":{"@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web-spider_0.15.1_1785739231513_0.8265437123774013","host":"s3://npm-registry-packages-npm-production"}},"0.16.0":{"name":"@danypops/pi-web-spider","version":"0.16.0","keywords":["pi-package","web-search","web-scraping","web-fetch","crawler","browser-automation","playwright","brave","tavily","exa"],"license":"MIT","_id":"@danypops/pi-web-spider@0.16.0","maintainers":[{"name":"danypops","email":"danypops@protonmail.com"}],"homepage":"https://github.com/DanyPops/web-spider#readme","bugs":{"url":"https://github.com/DanyPops/web-spider/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"dbfdb18b0c28b3e2b39a879fd2c90f4a96633c2f","tarball":"https://registry.npmjs.org/@danypops/pi-web-spider/-/pi-web-spider-0.16.0.tgz","fileCount":9,"integrity":"sha512-aPyhNcljfcoNQkXzovB+vNhKglaoKLHKoQ8TTJuc/hnMbJzwGS9iO44sXZ5f1+I5J/tS9T7Q+0EFi6rIROSAig==","signatures":[{"sig":"MEYCIQDYhNq65bMpi2MLnqK4BDsSu4E2KHLTqhFJiHIjNCGhxAIhAPicWBZ6+7d/i9OZ1s3bdXi3g/258arSsj9QV2tHbI9i","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@danypops%2fpi-web-spider@0.16.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":113963},"main":"./src/index.ts","type":"module","gitHead":"61723dcc3e89aeccae4b032f3a2972d47e629737","scripts":{"lint":"biome lint src/","test":"vitest --run","check":"npm run lint && tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7b0d92ac-f038-44f7-9bed-10643e5d0d61"}},"repository":{"url":"git+https://github.com/DanyPops/web-spider.git","type":"git","directory":"packages/pi-extension"},"_npmVersion":"12.0.2","description":"Pi extension for web_fetch, web_search, and live browser sessions: 7 search providers (Brave, Brave LLM Context, Tavily, Exa, Serper, SerpApi, You.com) with automatic fallback, robots.txt-respecting crawl, GitHub/Wikipedia/llms.txt-aware fetching, and a d","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@danypops/web-spider":"^0.14.0","@danypops/vehicle-core":"^0.10.0","@danypops/vehicle-client":"^0.5.1","@danypops/vehicle-client-pi":"^0.15.2","@danypops/web-spider-daemon":"^0.17.0"},"_hasShrinkwrap":false,"devDependencies":{"jiti":"^2.0.0","vitest":"^3.0.0","typescript":"^5.9.3","@types/node":"^22.19.19","@biomejs/biome":"^2.4.15","@earendil-works/pi-tui":"^0.80.10","@earendil-works/pi-coding-agent":"^0.80.10"},"peerDependencies":{"@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web-spider_0.16.0_1785744406315_0.3607363360850986","host":"s3://npm-registry-packages-npm-production"}},"0.17.0":{"name":"@danypops/pi-web-spider","version":"0.17.0","keywords":["pi-package","web-search","web-scraping","web-fetch","crawler","browser-automation","playwright","brave","tavily","exa"],"license":"MIT","_id":"@danypops/pi-web-spider@0.17.0","maintainers":[{"name":"danypops","email":"danypops@protonmail.com"}],"homepage":"https://github.com/DanyPops/web-spider#readme","bugs":{"url":"https://github.com/DanyPops/web-spider/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"869bf18b76cf21cf95fd08dc935644b5d4bdfb21","tarball":"https://registry.npmjs.org/@danypops/pi-web-spider/-/pi-web-spider-0.17.0.tgz","fileCount":9,"integrity":"sha512-dwiu6laizJhoYO9wm2e/t9Vmbtpg7nLq9/za8gvYPC4BIqhmut9aX8VXplBX/g57EV9TaGniprAHyX9EesCLBg==","signatures":[{"sig":"MEUCIAFCnPF/G7Ll/KBpXlWE/hFNU0XJcicr7unwXXfz2u12AiEA2NGjEgXscFcDJrk8KGu/ptrtE9B0PdtcSCh4/rhfYhU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@danypops%2fpi-web-spider@0.17.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":114064},"main":"./src/index.ts","type":"module","gitHead":"c6e9bf9677f2257c16be8da6503b9d63c570f9b8","scripts":{"lint":"biome lint src/","test":"vitest --run","check":"npm run lint && tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7b0d92ac-f038-44f7-9bed-10643e5d0d61"}},"repository":{"url":"git+https://github.com/DanyPops/web-spider.git","type":"git","directory":"packages/pi-extension"},"_npmVersion":"12.0.2","description":"Pi extension for web_fetch, web_search, and live browser sessions: 7 search providers (Brave, Brave LLM Context, Tavily, Exa, Serper, SerpApi, You.com) with automatic fallback, robots.txt-respecting crawl, GitHub/Wikipedia/llms.txt-aware fetching, and a d","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@danypops/web-spider":"^0.14.0","@danypops/vehicle-core":"^0.10.0","@danypops/vehicle-client":"^0.5.1","@danypops/vehicle-client-pi":"^0.15.2","@danypops/web-spider-daemon":"^0.18.0"},"_hasShrinkwrap":false,"devDependencies":{"jiti":"^2.0.0","vitest":"^3.0.0","typescript":"^5.9.3","@types/node":"^22.19.19","@biomejs/biome":"^2.4.15","@earendil-works/pi-tui":"^0.80.10","@earendil-works/pi-coding-agent":"^0.80.10"},"peerDependencies":{"@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web-spider_0.17.0_1785748712477_0.020165319062426468","host":"s3://npm-registry-packages-npm-production"}},"0.17.1":{"name":"@danypops/pi-web-spider","version":"0.17.1","keywords":["pi-package","web-search","web-scraping","web-fetch","crawler","browser-automation","playwright","brave","tavily","exa"],"license":"MIT","_id":"@danypops/pi-web-spider@0.17.1","maintainers":[{"name":"danypops","email":"danypops@protonmail.com"}],"homepage":"https://github.com/DanyPops/web-spider#readme","bugs":{"url":"https://github.com/DanyPops/web-spider/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"1dfefb9fdf4b112275a7d528fd38190310f0edf4","tarball":"https://registry.npmjs.org/@danypops/pi-web-spider/-/pi-web-spider-0.17.1.tgz","fileCount":9,"integrity":"sha512-I7eh5Y7mNPQBnR1sptCJ8jn6JVOlCJZlkaYw2QlCeceX2j3eccyH2FMycuhsAqI/yG9BFicrrrn+4rQJARG7hQ==","signatures":[{"sig":"MEYCIQDJOioIuEwHR/gcgU346mdNNGDZVPi3Y9tjT6kFE3+c/wIhAPbXYuG//u+IoF0Ck7/WS6INkOL1YWYqIwgpWbgitaml","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@danypops%2fpi-web-spider@0.17.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":114064},"main":"./src/index.ts","type":"module","gitHead":"c50b73a27bd116c00a1fe93d745d5f4b5735e197","scripts":{"lint":"biome lint src/","test":"vitest --run","check":"npm run lint && tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7b0d92ac-f038-44f7-9bed-10643e5d0d61"}},"repository":{"url":"git+https://github.com/DanyPops/web-spider.git","type":"git","directory":"packages/pi-extension"},"_npmVersion":"12.0.2","description":"Pi extension for web_fetch, web_search, and live browser sessions: 7 search providers (Brave, Brave LLM Context, Tavily, Exa, Serper, SerpApi, You.com) with automatic fallback, robots.txt-respecting crawl, GitHub/Wikipedia/llms.txt-aware fetching, and a d","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@danypops/web-spider":"^0.14.0","@danypops/vehicle-core":"^0.11.0","@danypops/vehicle-client":"^0.5.1","@danypops/vehicle-client-pi":"^0.15.2","@danypops/web-spider-daemon":"^0.18.0"},"_hasShrinkwrap":false,"devDependencies":{"jiti":"^2.0.0","vitest":"^3.0.0","typescript":"^5.9.3","@types/node":"^22.19.19","@biomejs/biome":"^2.4.15","@earendil-works/pi-tui":"^0.80.10","@earendil-works/pi-coding-agent":"^0.80.10"},"peerDependencies":{"@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web-spider_0.17.1_1785788994806_0.21573660954689666","host":"s3://npm-registry-packages-npm-production"}},"0.17.2":{"name":"@danypops/pi-web-spider","version":"0.17.2","keywords":["pi-package","web-search","web-scraping","web-fetch","crawler","browser-automation","playwright","brave","tavily","exa"],"license":"MIT","_id":"@danypops/pi-web-spider@0.17.2","maintainers":[{"name":"danypops","email":"danypops@protonmail.com"}],"homepage":"https://github.com/DanyPops/web-spider#readme","bugs":{"url":"https://github.com/DanyPops/web-spider/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"745ba26e9c37c724046028fb9b84a64a92200df6","tarball":"https://registry.npmjs.org/@danypops/pi-web-spider/-/pi-web-spider-0.17.2.tgz","fileCount":9,"integrity":"sha512-x20BNXZj50VZEHTA65PmU0qa+FRC8JE8i9LFrIB1pGHhy19jYI7dHO4GvH+EEJUiQi2agcBoV7cVfZATlvKtxw==","signatures":[{"sig":"MEQCIERIdI+0D4PKQ1xiblNtBXcETNxwBy4ooJ5W6ecTS5QKAiAXyyy/X7nIfsjaGEfBQXXYF3Khhak7aCWoEohnkhmNlg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@danypops%2fpi-web-spider@0.17.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":114064},"main":"./src/index.ts","type":"module","gitHead":"60700753d5515a66d94eca715262219022edcc91","scripts":{"lint":"biome lint src/","test":"vitest --run","check":"npm run lint && tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7b0d92ac-f038-44f7-9bed-10643e5d0d61"}},"repository":{"url":"git+https://github.com/DanyPops/web-spider.git","type":"git","directory":"packages/pi-extension"},"_npmVersion":"12.0.2","description":"Pi extension for web_fetch, web_search, and live browser sessions: 7 search providers (Brave, Brave LLM Context, Tavily, Exa, Serper, SerpApi, You.com) with automatic fallback, robots.txt-respecting crawl, GitHub/Wikipedia/llms.txt-aware fetching, and a d","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@danypops/web-spider":"^0.14.0","@danypops/vehicle-core":"^0.12.3","@danypops/vehicle-client":"^0.5.1","@danypops/vehicle-client-pi":"^0.15.2","@danypops/web-spider-daemon":"^0.18.2"},"_hasShrinkwrap":false,"devDependencies":{"jiti":"^2.0.0","vitest":"^3.0.0","typescript":"^5.9.3","@types/node":"^22.19.19","@biomejs/biome":"^2.4.15","@earendil-works/pi-tui":"^0.80.10","@earendil-works/pi-coding-agent":"^0.80.10"},"peerDependencies":{"@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web-spider_0.17.2_1785827458490_0.24253015117818255","host":"s3://npm-registry-packages-npm-production"}},"0.18.0":{"name":"@danypops/pi-web-spider","version":"0.18.0","keywords":["pi-package","web-search","web-scraping","web-fetch","crawler","browser-automation","playwright","brave","tavily","exa"],"license":"MIT","_id":"@danypops/pi-web-spider@0.18.0","maintainers":[{"name":"danypops","email":"danypops@protonmail.com"}],"homepage":"https://github.com/DanyPops/web-spider#readme","bugs":{"url":"https://github.com/DanyPops/web-spider/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"d2483c6d38379903a83643c544ea1314be358922","tarball":"https://registry.npmjs.org/@danypops/pi-web-spider/-/pi-web-spider-0.18.0.tgz","fileCount":10,"integrity":"sha512-YQBPStsXTKAvXIUAfbVZwUXI2IZ32ogkX/9OQTIzFY8BCD1WIpvrzpfK37Fyc6MiigXWjXCJNlwXoX5FYU/+LQ==","signatures":[{"sig":"MEUCICqBfkJnKbAyCPuXVVeyHFi4BS7nItFLY7rn6byO0jYqAiEA5DH0uYWrK5qPSPxEOlNhPTyiF6dtovRYWRo4cBJBgEQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@danypops%2fpi-web-spider@0.18.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":119537},"main":"./src/index.ts","type":"module","gitHead":"01bd5192be3b3900a91164514f0208b465f5a3f4","scripts":{"lint":"biome lint src/","test":"vitest --run","check":"npm run lint && tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7b0d92ac-f038-44f7-9bed-10643e5d0d61"}},"repository":{"url":"git+https://github.com/DanyPops/web-spider.git","type":"git","directory":"packages/pi-extension"},"_npmVersion":"12.0.2","description":"Pi extension for web_fetch, web_search, and live browser sessions: 7 search providers (Brave, Brave LLM Context, Tavily, Exa, Serper, SerpApi, You.com) with automatic fallback, robots.txt-respecting crawl, GitHub/Wikipedia/llms.txt-aware fetching, and a d","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@danypops/web-spider":"^0.14.0","@danypops/vehicle-core":"^0.12.3","malevich-tui-components":"^0.19.0","@danypops/vehicle-client":"^0.5.1","@danypops/vehicle-client-pi":"^0.15.2","@danypops/web-spider-daemon":"^0.18.2"},"_hasShrinkwrap":false,"devDependencies":{"jiti":"^2.0.0","vitest":"^3.0.0","typescript":"^5.9.3","@types/node":"^22.19.19","@biomejs/biome":"^2.4.15","@earendil-works/pi-tui":"^0.80.10","@danypops/pi-extension-harness":"^0.4.0","@earendil-works/pi-coding-agent":"^0.80.10"},"peerDependencies":{"@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web-spider_0.18.0_1785934871338_0.15698290204881227","host":"s3://npm-registry-packages-npm-production"}},"0.19.0":{"name":"@danypops/pi-web-spider","version":"0.19.0","keywords":["pi-package","web-search","web-scraping","web-fetch","crawler","browser-automation","playwright","brave","tavily","exa"],"license":"MIT","_id":"@danypops/pi-web-spider@0.19.0","maintainers":[{"name":"danypops","email":"danypops@protonmail.com"}],"homepage":"https://github.com/DanyPops/web-spider#readme","bugs":{"url":"https://github.com/DanyPops/web-spider/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"27819e715ddccb393ef39ab43a41062e61117f80","tarball":"https://registry.npmjs.org/@danypops/pi-web-spider/-/pi-web-spider-0.19.0.tgz","fileCount":10,"integrity":"sha512-woy6gB/+EQAteSOszYFE3iwPNsHrGB8ln5FBKPha6mG4GNne47RO3cba8WlpO9Sn8qAvvf6LlVnIjNleSiB21w==","signatures":[{"sig":"MEYCIQDUzTfrxXWei52CY6xqNauCWAo5vxJg46TnLW+2dgdVswIhAOFN0eEBe2DeIUd9uivjpHzFH2EBbMrTvEhOTwnbv2nn","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@danypops%2fpi-web-spider@0.19.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":124209},"main":"./src/index.ts","type":"module","gitHead":"4f67c9a2ee6f5ef7c8013fb618173bdba7f1bf51","scripts":{"lint":"biome lint src/","test":"vitest --run","check":"npm run lint && tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7b0d92ac-f038-44f7-9bed-10643e5d0d61"}},"repository":{"url":"git+https://github.com/DanyPops/web-spider.git","type":"git","directory":"packages/pi-extension"},"_npmVersion":"12.0.2","description":"Pi extension for web_fetch, web_search, and live browser sessions: 7 search providers (Brave, Brave LLM Context, Tavily, Exa, Serper, SerpApi, You.com) with automatic fallback, robots.txt-respecting crawl, GitHub/Wikipedia/llms.txt-aware fetching, and a d","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@danypops/web-spider":"^0.14.0","@danypops/vehicle-core":"^0.12.3","malevich-tui-components":"^0.19.0","@danypops/vehicle-client":"^0.5.1","@danypops/vehicle-client-pi":"^0.15.2","@danypops/web-spider-daemon":"^0.18.2"},"_hasShrinkwrap":false,"devDependencies":{"jiti":"^2.0.0","vitest":"^3.0.0","typescript":"^5.9.3","@types/node":"^22.19.19","@biomejs/biome":"^2.4.15","@earendil-works/pi-tui":"^0.80.10","@danypops/pi-extension-harness":"^0.4.0","@earendil-works/pi-coding-agent":"^0.80.10"},"peerDependencies":{"@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web-spider_0.19.0_1785935717361_0.6640733627122712","host":"s3://npm-registry-packages-npm-production"}},"0.19.1":{"name":"@danypops/pi-web-spider","version":"0.19.1","keywords":["pi-package","web-search","web-scraping","web-fetch","crawler","browser-automation","playwright","brave","tavily","exa"],"license":"MIT","_id":"@danypops/pi-web-spider@0.19.1","maintainers":[{"name":"danypops","email":"danypops@protonmail.com"}],"homepage":"https://github.com/DanyPops/web-spider#readme","bugs":{"url":"https://github.com/DanyPops/web-spider/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"97a7142aabb6c2b683d07fc913ad792cb1e63187","tarball":"https://registry.npmjs.org/@danypops/pi-web-spider/-/pi-web-spider-0.19.1.tgz","fileCount":10,"integrity":"sha512-SCHYURUZwSobYuMpmWaOsS+nSM8yhhrPmGwcuPJhrdvIY1qEnGwvd+1LIN8ytoSLARVNc3Qs7yUxBRR3KAgc4A==","signatures":[{"sig":"MEUCIQDbf+x1blm1Kw+uf8Higu55DtMikRcyY3XKjLk/73OpwQIgLbAw7rFDNNStO1jT8kXU1F8md/UGu1+/W2Dqq3LCeVk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@danypops%2fpi-web-spider@0.19.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":124210},"main":"./src/index.ts","type":"module","gitHead":"0e0eb813587de0919e38f78f8a9b2a5aaf850ea4","scripts":{"lint":"biome lint src/","test":"vitest --run","check":"npm run lint && tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7b0d92ac-f038-44f7-9bed-10643e5d0d61"}},"repository":{"url":"git+https://github.com/DanyPops/web-spider.git","type":"git","directory":"packages/pi-web-spider"},"_npmVersion":"12.0.2","description":"Pi extension for web_fetch, web_search, and live browser sessions: 7 search providers (Brave, Brave LLM Context, Tavily, Exa, Serper, SerpApi, You.com) with automatic fallback, robots.txt-respecting crawl, GitHub/Wikipedia/llms.txt-aware fetching, and a d","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@danypops/web-spider":"^0.14.0","@danypops/vehicle-core":"^0.12.3","malevich-tui-components":"^0.19.0","@danypops/vehicle-client":"^0.5.1","@danypops/vehicle-client-pi":"^0.15.2","@danypops/web-spider-daemon":"^0.18.2"},"_hasShrinkwrap":false,"devDependencies":{"jiti":"^2.0.0","vitest":"^3.0.0","typescript":"^5.9.3","@types/node":"^22.19.19","@biomejs/biome":"^2.4.15","@earendil-works/pi-tui":"^0.80.10","@danypops/pi-extension-harness":"^0.4.0","@earendil-works/pi-coding-agent":"^0.80.10"},"peerDependencies":{"@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web-spider_0.19.1_1785941907574_0.5465066002535619","host":"s3://npm-registry-packages-npm-production"}},"0.19.2":{"name":"@danypops/pi-web-spider","version":"0.19.2","keywords":["pi-package","web-search","web-scraping","web-fetch","crawler","browser-automation","playwright","brave","tavily","exa"],"license":"MIT","_id":"@danypops/pi-web-spider@0.19.2","maintainers":[{"name":"danypops","email":"danypops@protonmail.com"}],"homepage":"https://github.com/DanyPops/web-spider#readme","bugs":{"url":"https://github.com/DanyPops/web-spider/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"7473d732fefda28af431aaaeba84a3e9fcb4af5d","tarball":"https://registry.npmjs.org/@danypops/pi-web-spider/-/pi-web-spider-0.19.2.tgz","fileCount":10,"integrity":"sha512-eDCuffp0X9bSlxbOjXN1bKWpdF39bI7m7Glx0lGnWHsKsvUfsNqMZGTTQY9VZRLmR2dRT8YSxecS8maI5AyAaQ==","signatures":[{"sig":"MEQCIC0LUNXPPVZoTwC3ApQBDMiEcxgJAmhrpMcqsbflovmPAiBujKm1LQtRG2IB7My+dg9TeO5L6PJXquxlyunQNKHmcQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@danypops%2fpi-web-spider@0.19.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":124926},"main":"./src/index.ts","type":"module","gitHead":"8ea0c3b9d79600ece3d503bd7f7a60588cf6074f","scripts":{"lint":"biome lint src/","test":"vitest --run","check":"npm run lint && tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7b0d92ac-f038-44f7-9bed-10643e5d0d61"}},"repository":{"url":"git+https://github.com/DanyPops/web-spider.git","type":"git","directory":"packages/pi-web-spider"},"_npmVersion":"12.0.2","description":"Pi extension for web_fetch, web_search, and live browser sessions: 7 search providers (Brave, Brave LLM Context, Tavily, Exa, Serper, SerpApi, You.com) with automatic fallback, robots.txt-respecting crawl, GitHub/Wikipedia/llms.txt-aware fetching, and a d","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@danypops/web-spider":"^0.14.0","@danypops/vehicle-core":"^0.12.3","malevich-tui-components":"^0.19.0","@danypops/vehicle-client":"^0.5.1","@danypops/vehicle-client-pi":"^0.15.2","@danypops/web-spider-daemon":"^0.18.2"},"_hasShrinkwrap":false,"devDependencies":{"jiti":"^2.0.0","vitest":"^3.0.0","typescript":"^5.9.3","@types/node":"^22.19.19","@biomejs/biome":"^2.4.15","@earendil-works/pi-tui":"^0.80.10","@danypops/pi-extension-harness":"^0.4.0","@earendil-works/pi-coding-agent":"^0.80.10"},"peerDependencies":{"@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web-spider_0.19.2_1785945500420_0.22435074454126402","host":"s3://npm-registry-packages-npm-production"}},"0.19.3":{"name":"@danypops/pi-web-spider","version":"0.19.3","keywords":["pi-package","web-search","web-scraping","web-fetch","crawler","browser-automation","playwright","brave","tavily","exa"],"license":"MIT","_id":"@danypops/pi-web-spider@0.19.3","maintainers":[{"name":"danypops","email":"danypops@protonmail.com"}],"homepage":"https://github.com/DanyPops/web-spider#readme","bugs":{"url":"https://github.com/DanyPops/web-spider/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"0f1abbd7d04f259190db752e7095ccb74d8c2570","tarball":"https://registry.npmjs.org/@danypops/pi-web-spider/-/pi-web-spider-0.19.3.tgz","fileCount":10,"integrity":"sha512-QiYmdpp2YAjRgGVyRk3SRX4epu03bT04J85pCW+67qs9RZq1HdNVSWijM8i4GgDw/cqo0PTZkXVl6MI7tMuX/A==","signatures":[{"sig":"MEYCIQCZ+yVbxShB5TW8kf9ef7e0QVvTT/lxuOQN3sRDrV7+TgIhAJYVblJX7F7TNRpcgoUEGKfI6MjPFth+iqik4nvA3Id5","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@danypops%2fpi-web-spider@0.19.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":110430},"main":"./src/index.ts","type":"module","gitHead":"784975fb67f911e7002542f95de155b2e82664ec","scripts":{"lint":"biome lint src/","test":"vitest --run","check":"npm run lint && tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7b0d92ac-f038-44f7-9bed-10643e5d0d61"}},"repository":{"url":"git+https://github.com/DanyPops/web-spider.git","type":"git","directory":"packages/pi-web-spider"},"_npmVersion":"12.0.2","description":"Pi extension for web_fetch, web_search, and live browser sessions: 7 search providers (Brave, Brave LLM Context, Tavily, Exa, Serper, SerpApi, You.com) with automatic fallback, robots.txt-respecting crawl, GitHub/Wikipedia/llms.txt-aware fetching, and a d","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@danypops/web-spider":"^0.14.0","@danypops/vehicle-core":"^0.12.3","malevich-tui-components":"^0.19.0","@danypops/vehicle-client":"^0.5.1","@danypops/vehicle-client-pi":"^0.15.2","@danypops/web-spider-daemon":"^0.18.2"},"_hasShrinkwrap":false,"devDependencies":{"jiti":"^2.0.0","vitest":"^3.0.0","typescript":"^5.9.3","@types/node":"^22.19.19","@biomejs/biome":"^2.4.15","@earendil-works/pi-tui":"^0.80.10","@danypops/pi-extension-harness":"^0.4.0","@earendil-works/pi-coding-agent":"^0.80.10"},"peerDependencies":{"@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web-spider_0.19.3_1786007862964_0.9163751632669965","host":"s3://npm-registry-packages-npm-production"}},"0.19.4":{"name":"@danypops/pi-web-spider","version":"0.19.4","keywords":["pi-package","web-search","web-scraping","web-fetch","crawler","browser-automation","playwright","brave","tavily","exa"],"license":"MIT","_id":"@danypops/pi-web-spider@0.19.4","maintainers":[{"name":"danypops","email":"danypops@protonmail.com"}],"homepage":"https://github.com/DanyPops/web-spider#readme","bugs":{"url":"https://github.com/DanyPops/web-spider/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"52ae0c1dbc0eb51f65c58c5e6adf5a2843151b3f","tarball":"https://registry.npmjs.org/@danypops/pi-web-spider/-/pi-web-spider-0.19.4.tgz","fileCount":10,"integrity":"sha512-k3b5jkH/ZBho8uyTfDiNq/9X27Ghs8NkcaZ97HcOaZfhsvVI9m5T4G5TyZVFOIu9tZPJUHYWnk+GKsgf3II1aA==","signatures":[{"sig":"MEQCIFKTXiuoJ7bJtQKvCAATkFS625np2ULL5jbX8tVXuB1nAiAqXJ/U3Bv7jubzt0/wBfH8OJFAjkgumw58+NVSwQJmGw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@danypops%2fpi-web-spider@0.19.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":111583},"main":"./src/index.ts","type":"module","gitHead":"4ddd94144b0e0d4f9ec5529d37ba9f5905e545db","scripts":{"lint":"biome lint src/","test":"vitest --run","check":"npm run lint && tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7b0d92ac-f038-44f7-9bed-10643e5d0d61"}},"repository":{"url":"git+https://github.com/DanyPops/web-spider.git","type":"git","directory":"packages/pi-web-spider"},"_npmVersion":"12.0.2","description":"Pi extension for web_fetch, web_search, and live browser sessions: 7 search providers (Brave, Brave LLM Context, Tavily, Exa, Serper, SerpApi, You.com) with automatic fallback, robots.txt-respecting crawl, GitHub/Wikipedia/llms.txt-aware fetching, and a d","directories":{},"_nodeVersion":"24.19.0","dependencies":{"@danypops/web-spider":"^0.14.0","@danypops/vehicle-core":"^0.12.3","malevich-tui-components":"^0.19.0","@danypops/vehicle-client":"^0.5.1","@danypops/vehicle-client-pi":"^0.15.2","@danypops/web-spider-daemon":"^0.18.2"},"_hasShrinkwrap":false,"devDependencies":{"jiti":"^2.0.0","vitest":"^3.0.0","typescript":"^5.9.3","@types/node":"^22.19.19","@biomejs/biome":"^2.4.15","@earendil-works/pi-tui":"^0.80.10","@danypops/pi-extension-harness":"^0.4.0","@earendil-works/pi-coding-agent":"^0.80.10"},"peerDependencies":{"@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web-spider_0.19.4_1786022606773_0.10907813007936507","host":"s3://npm-registry-packages-npm-production"}},"0.19.5":{"name":"@danypops/pi-web-spider","version":"0.19.5","keywords":["pi-package","web-search","web-scraping","web-fetch","crawler","browser-automation","playwright","brave","tavily","exa"],"license":"MIT","_id":"@danypops/pi-web-spider@0.19.5","maintainers":[{"name":"danypops","email":"danypops@protonmail.com"}],"homepage":"https://github.com/DanyPops/web-spider#readme","bugs":{"url":"https://github.com/DanyPops/web-spider/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"21eb17525392100fbd19113d133dbf52d0d2e9de","tarball":"https://registry.npmjs.org/@danypops/pi-web-spider/-/pi-web-spider-0.19.5.tgz","fileCount":10,"integrity":"sha512-uoKtdCJMmFlQSfeGetVPII/R48YWdqPISO8dQzfvFdpBYwxPvEr+Sck1+FfUsCSRpAq9p4Y06qwxcnamUG/BRA==","signatures":[{"sig":"MEUCIQCD8b/3yMkBCzTKE96ymcoGOxS4vQu5C4g+rp4mbbRZtAIgUS5gPj8SUz2qT8bMJskda5EBcc25mkt3xhM/78qNJl0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@danypops%2fpi-web-spider@0.19.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":111680},"main":"./src/index.ts","type":"module","gitHead":"7efd8fa4d874a99655981adc77ea7fab24f8cddc","scripts":{"lint":"biome lint src/","test":"vitest --run","check":"npm run lint && tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7b0d92ac-f038-44f7-9bed-10643e5d0d61"}},"repository":{"url":"git+https://github.com/DanyPops/web-spider.git","type":"git","directory":"packages/pi-web-spider"},"_npmVersion":"12.0.2","description":"Pi extension for web_fetch, web_search, and live browser sessions: 7 search providers (Brave, Brave LLM Context, Tavily, Exa, Serper, SerpApi, You.com) with automatic fallback, robots.txt-respecting crawl, GitHub/Wikipedia/llms.txt-aware fetching, and a d","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@danypops/web-spider":"^0.14.0","@danypops/vehicle-core":"^0.12.3","malevich-tui-components":"^0.19.0","@danypops/vehicle-client":"^0.5.1","@danypops/vehicle-client-pi":"^0.15.2","@danypops/web-spider-daemon":"^0.18.2"},"_hasShrinkwrap":false,"devDependencies":{"jiti":"^2.0.0","vitest":"^3.0.0","typescript":"^5.9.3","@types/node":"^22.19.19","@biomejs/biome":"^2.4.15","@earendil-works/pi-tui":"^0.80.10","@danypops/pi-extension-harness":"^0.4.0","@earendil-works/pi-coding-agent":"^0.80.10"},"peerDependencies":{"@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web-spider_0.19.5_1786218384520_0.8209551022076085","host":"s3://npm-registry-packages-npm-production"}},"0.19.6":{"name":"@danypops/pi-web-spider","version":"0.19.6","keywords":["pi-package","web-search","web-scraping","web-fetch","crawler","browser-automation","playwright","brave","tavily","exa"],"license":"MIT","_id":"@danypops/pi-web-spider@0.19.6","maintainers":[{"name":"danypops","email":"danypops@protonmail.com"}],"homepage":"https://github.com/DanyPops/web-spider#readme","bugs":{"url":"https://github.com/DanyPops/web-spider/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"4fb2278c5702c432ecc8cb8c58b3144fd5424f72","tarball":"https://registry.npmjs.org/@danypops/pi-web-spider/-/pi-web-spider-0.19.6.tgz","fileCount":10,"integrity":"sha512-7lbVJSFlozqhoIMPdH3cHqMqreU0jOZqZcbJCA2fiGHDEooCJOjPNA/rg1Ep8rRAU3bT+xyLkT7FtZFGKGJWjw==","signatures":[{"sig":"MEQCIAl1xHnQ4qf9zwTeK73c95jT2t1enPi4oGW9U4PSH5PPAiBmlePsVdnMd6QoKfHOIBPA9CmLMAFkrQMQynNdio6sdw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@danypops%2fpi-web-spider@0.19.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":111686},"main":"./src/index.ts","type":"module","gitHead":"721edf185abac84bf29b73096c5375bef44a8886","scripts":{"lint":"biome lint src/","test":"vitest --run","check":"npm run lint && tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7b0d92ac-f038-44f7-9bed-10643e5d0d61"}},"repository":{"url":"git+https://github.com/DanyPops/web-spider.git","type":"git","directory":"packages/pi-web-spider"},"_npmVersion":"12.0.2","description":"Pi extension for web_fetch, web_search, and live browser sessions: 7 search providers (Brave, Brave LLM Context, Tavily, Exa, Serper, SerpApi, You.com) with automatic fallback, robots.txt-respecting crawl, GitHub/Wikipedia/llms.txt-aware fetching, and a d","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@danypops/web-spider":"^0.14.2","@danypops/vehicle-core":"^0.12.5","malevich-tui-components":"0.24.0","@danypops/vehicle-client":"^0.7.0","@danypops/vehicle-client-pi":"^0.19.0","@danypops/web-spider-daemon":"^0.18.5"},"_hasShrinkwrap":false,"devDependencies":{"jiti":"^2.0.0","vitest":"^3.0.0","typescript":"^5.9.3","@types/node":"^22.19.19","@biomejs/biome":"^2.4.15","@earendil-works/pi-tui":"^0.80.10","@danypops/pi-extension-harness":"^0.4.0","@earendil-works/pi-coding-agent":"^0.80.10"},"peerDependencies":{"@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web-spider_0.19.6_1786289628279_0.16160164213617412","host":"s3://npm-registry-packages-npm-production"}},"0.20.0":{"name":"@danypops/pi-web-spider","version":"0.20.0","keywords":["pi-package","web-search","web-scraping","web-fetch","crawler","browser-automation","playwright","brave","tavily","exa"],"license":"MIT","_id":"@danypops/pi-web-spider@0.20.0","maintainers":[{"name":"danypops","email":"danypops@protonmail.com"}],"homepage":"https://github.com/DanyPops/web-spider#readme","bugs":{"url":"https://github.com/DanyPops/web-spider/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"5a1ec23150825b0ece5ee8da146a4f1f5a6fac6b","tarball":"https://registry.npmjs.org/@danypops/pi-web-spider/-/pi-web-spider-0.20.0.tgz","fileCount":10,"integrity":"sha512-XPxzzk9QpIhDch31+MjBbYT2zQzs/euT6hZqKqlbWtc27DRGewRCAXEzpz/9Hv9G8Yi7steAqO/T1+0Aem7ofA==","signatures":[{"sig":"MEYCIQCkVVtbO5RyApg+1EcAvePNZkYJTCJxfR70oO3JkEWPYAIhAM81fDuqR+laZdhn2GxEDlAmuK3Wfr7pg8/hpIMDMoVR","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@danypops%2fpi-web-spider@0.20.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":109242},"main":"./src/index.ts","type":"module","gitHead":"a2cda09e461f651efe7fa2abab46e182e251d0c0","scripts":{"lint":"biome lint src/","test":"vitest --run","check":"npm run lint && tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7b0d92ac-f038-44f7-9bed-10643e5d0d61"}},"repository":{"url":"git+https://github.com/DanyPops/web-spider.git","type":"git","directory":"packages/pi-web-spider"},"_npmVersion":"12.0.2","description":"Pi extension for web_fetch, web_search, and live browser sessions: 7 search providers (Brave, Brave LLM Context, Tavily, Exa, Serper, SerpApi, You.com) with automatic fallback, robots.txt-respecting crawl, GitHub/Wikipedia/llms.txt-aware fetching, and a d","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@danypops/web-spider":"^0.15.0","@danypops/vehicle-core":"^0.12.5","malevich-tui-components":"0.24.0","@danypops/vehicle-client":"^0.7.0","@danypops/vehicle-client-pi":"^0.19.0","@danypops/web-spider-daemon":"^0.19.0"},"_hasShrinkwrap":false,"devDependencies":{"jiti":"^2.0.0","vitest":"^3.0.0","typescript":"^5.9.3","@types/node":"^22.19.19","@biomejs/biome":"^2.4.15","@earendil-works/pi-tui":"^0.80.10","@danypops/pi-extension-harness":"^0.4.0","@earendil-works/pi-coding-agent":"^0.80.10"},"peerDependencies":{"@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web-spider_0.20.0_1786304965544_0.9807133364966778","host":"s3://npm-registry-packages-npm-production"}},"0.20.1":{"name":"@danypops/pi-web-spider","version":"0.20.1","keywords":["pi-package","web-search","web-scraping","web-fetch","crawler","browser-automation","playwright","brave","tavily","exa"],"author":{"name":"Daniel Popsuevich"},"license":"MIT","_id":"@danypops/pi-web-spider@0.20.1","maintainers":[{"name":"danypops","email":"danypops@protonmail.com"}],"homepage":"https://pi.dev/packages/@danypops/pi-web-spider","bugs":{"url":"https://github.com/DanyPops/web-spider/issues"},"pi":{"image":"https://raw.githubusercontent.com/DanyPops/web-spider/main/packages/pi-web-spider/assets/architecture.png","extensions":["./src/index.ts"]},"dist":{"shasum":"d38a11e2c32f5cf4cf79e80f2f6ac2ed390096d1","tarball":"https://registry.npmjs.org/@danypops/pi-web-spider/-/pi-web-spider-0.20.1.tgz","fileCount":11,"integrity":"sha512-sZlHrYxccZh25mmcldqgT4cUCqnVp+p3QC/QwHp/YDN2Lu5BgapNnhZ9EyPChN82s1qAThhTk7Ny7DzcCajzlw==","signatures":[{"sig":"MEYCIQDzBy92Ch9uR0d8UglndvOSitgg5ikLa9p/yaQzhcz/IAIhAMVCuSSy1ycI29PByemIgm9h9LSxIQJt68fJaipKQXvB","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@danypops%2fpi-web-spider@0.20.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":167063},"main":"./src/index.ts","type":"module","gitHead":"1ff6fd4aaa3b1b4b664426bb30c5be9eb76cb379","scripts":{"lint":"biome lint src/","test":"vitest --run","check":"npm run lint && tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7b0d92ac-f038-44f7-9bed-10643e5d0d61"}},"repository":{"url":"git+https://github.com/DanyPops/web-spider.git","type":"git","directory":"packages/pi-web-spider"},"_npmVersion":"12.0.2","description":"Pi extension for web_fetch, web_search, and live browser sessions: 7 search providers (Brave, Brave LLM Context, Tavily, Exa, Serper, SerpApi, You.com) with automatic fallback, robots.txt-respecting crawl, GitHub/Wikipedia/llms.txt-aware fetching, and a d","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@danypops/web-spider":"^0.16.0","@danypops/vehicle-core":"^0.14.0","malevich-tui-components":"0.25.0","@danypops/vehicle-client":"^0.7.1","@danypops/vehicle-client-pi":"^0.25.1","@danypops/web-spider-daemon":"^0.20.0"},"_hasShrinkwrap":false,"devDependencies":{"jiti":"^2.0.0","vitest":"^4.1.10","typescript":"^5.9.3","@types/node":"^22.19.19","@biomejs/biome":"^2.4.15","@earendil-works/pi-tui":"^0.84.0","@danypops/pi-extension-harness":"^0.4.0","@earendil-works/pi-coding-agent":"^0.80.10"},"peerDependencies":{"@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web-spider_0.20.1_1786366376868_0.16845652031228897","host":"s3://npm-registry-packages-npm-production"}},"0.21.0":{"name":"@danypops/pi-web-spider","version":"0.21.0","keywords":["pi-package","web-search","web-scraping","web-fetch","crawler","browser-automation","playwright","brave","tavily","exa"],"author":{"name":"Daniel Popsuevich"},"license":"MIT","_id":"@danypops/pi-web-spider@0.21.0","maintainers":[{"name":"danypops","email":"danypops@protonmail.com"}],"homepage":"https://pi.dev/packages/@danypops/pi-web-spider","bugs":{"url":"https://github.com/DanyPops/web-spider/issues"},"pi":{"image":"https://raw.githubusercontent.com/DanyPops/web-spider/main/packages/pi-web-spider/assets/architecture.png","extensions":["./src/index.ts"]},"dist":{"shasum":"61391b7ecaf7d7efa30a96818bc0434aa5e27c4b","tarball":"https://registry.npmjs.org/@danypops/pi-web-spider/-/pi-web-spider-0.21.0.tgz","fileCount":11,"integrity":"sha512-G/OKCb2whx5rmz9eTnIAhIt7SNMIN3y1wsWjBRDkFyvoY0belRPnOT11uS/l4WAkfFXry/x9IqyxBB+QvyP1ig==","signatures":[{"sig":"MEYCIQD6d0thW6TgEC+4LddJ8NTEG8TeSuUOs9c6CqLHbXZOjgIhALfG3603stVuORl+vmc4z3mpSRGce7LI+RcAkWT4neOb","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@danypops%2fpi-web-spider@0.21.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":173584},"main":"./src/index.ts","type":"module","gitHead":"7471871d73ee4aca51a0afcc5909340fdfb53933","scripts":{"lint":"biome lint src/","test":"vitest --run","check":"npm run lint && tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7b0d92ac-f038-44f7-9bed-10643e5d0d61"}},"repository":{"url":"git+https://github.com/DanyPops/web-spider.git","type":"git","directory":"packages/pi-web-spider"},"_npmVersion":"12.0.2","description":"Pi extension for web_fetch, web_search, and live browser sessions: 7 search providers (Brave, Brave LLM Context, Tavily, Exa, Serper, SerpApi, You.com) with automatic fallback, robots.txt-respecting crawl, GitHub/Wikipedia/llms.txt-aware fetching, and a d","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@danypops/web-spider":"^0.16.0","@danypops/vehicle-core":"^0.14.0","malevich-tui-components":"0.25.0","@danypops/vehicle-client":"^0.7.1","@danypops/vehicle-client-pi":"^0.25.1","@danypops/web-spider-daemon":"^0.20.0"},"_hasShrinkwrap":false,"devDependencies":{"jiti":"^2.0.0","vitest":"^4.1.10","typescript":"^5.9.3","@types/node":"^22.19.19","@biomejs/biome":"^2.4.15","@earendil-works/pi-tui":"^0.84.0","@danypops/pi-extension-harness":"^0.4.0","@earendil-works/pi-coding-agent":"^0.80.10"},"peerDependencies":{"@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web-spider_0.21.0_1786368037371_0.2813568552783581","host":"s3://npm-registry-packages-npm-production"}},"0.21.1":{"name":"@danypops/pi-web-spider","version":"0.21.1","keywords":["pi-package","web-search","web-scraping","web-fetch","crawler","browser-automation","playwright","brave","tavily","exa"],"author":{"name":"Daniel Popsuevich"},"license":"MIT","_id":"@danypops/pi-web-spider@0.21.1","maintainers":[{"name":"danypops","email":"danypops@protonmail.com"}],"homepage":"https://pi.dev/packages/@danypops/pi-web-spider","bugs":{"url":"https://github.com/DanyPops/web-spider/issues"},"pi":{"image":"https://raw.githubusercontent.com/DanyPops/web-spider/main/packages/pi-web-spider/assets/architecture.png","extensions":["./src/index.ts"]},"dist":{"shasum":"fb8e4461be523ef05039c8209f533794c8c34fb3","tarball":"https://registry.npmjs.org/@danypops/pi-web-spider/-/pi-web-spider-0.21.1.tgz","fileCount":12,"integrity":"sha512-6pKfSXQw5kQYiRySpo4Ju8IlJo5re93eUXanoyZFYMnphZ4ojfMsFJ0YqehWCQvMUjuWsfdcxNL8AQ8QDf+QNw==","signatures":[{"sig":"MEUCIQC64tJrN0JrV67KBgWd3hXZYDudttnUxCmdHT+YHIqkQAIgJ/0EiEsDAIaDoBdCSNEUCzz+Rsjc8yRblimD83BVW30=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@danypops%2fpi-web-spider@0.21.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":185425},"main":"./src/index.ts","type":"module","gitHead":"943da581d6240d3a77f1ca2b2fdc3e5dea4ffdc1","scripts":{"lint":"biome lint src/","test":"vitest --run","check":"npm run lint && tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7b0d92ac-f038-44f7-9bed-10643e5d0d61"}},"repository":{"url":"git+https://github.com/DanyPops/web-spider.git","type":"git","directory":"packages/pi-web-spider"},"_npmVersion":"12.0.2","description":"Pi extension for web_fetch, web_search, and live browser sessions: 7 search providers (Brave, Brave LLM Context, Tavily, Exa, Serper, SerpApi, You.com) with automatic fallback, robots.txt-respecting crawl, GitHub/Wikipedia/llms.txt-aware fetching, and a d","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@danypops/web-spider":"^0.16.0","@danypops/vehicle-core":"^0.14.0","malevich-tui-components":"0.25.0","@danypops/vehicle-client":"^0.7.1","@danypops/vehicle-client-pi":"^0.25.1","@danypops/web-spider-daemon":"^0.20.0"},"_hasShrinkwrap":false,"devDependencies":{"jiti":"^2.0.0","vitest":"^4.1.10","typescript":"^5.9.3","@types/node":"^22.19.19","@biomejs/biome":"^2.4.15","@earendil-works/pi-tui":"^0.84.0","@danypops/pi-extension-harness":"^0.4.0","@earendil-works/pi-coding-agent":"^0.80.10"},"peerDependencies":{"@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web-spider_0.21.1_1786369257734_0.05824318927660688","host":"s3://npm-registry-packages-npm-production"}},"0.21.2":{"name":"@danypops/pi-web-spider","version":"0.21.2","keywords":["pi-package","web-search","web-scraping","web-fetch","crawler","browser-automation","playwright","brave","tavily","exa"],"author":{"name":"Daniel Popsuevich"},"license":"MIT","_id":"@danypops/pi-web-spider@0.21.2","maintainers":[{"name":"danypops","email":"danypops@protonmail.com"}],"homepage":"https://pi.dev/packages/@danypops/pi-web-spider","bugs":{"url":"https://github.com/DanyPops/web-spider/issues"},"pi":{"image":"https://raw.githubusercontent.com/DanyPops/web-spider/main/packages/pi-web-spider/assets/architecture.png","extensions":["./src/index.ts"]},"dist":{"shasum":"e67ec639ecc67ae6f8f9c5a4df3c33c1beb29707","tarball":"https://registry.npmjs.org/@danypops/pi-web-spider/-/pi-web-spider-0.21.2.tgz","fileCount":12,"integrity":"sha512-n/1/EReuxGMXeGDSdSOLqrSrxxugkv5NioL5BgBC0qkSQBYBVyooiUU4SvQwo0yk6M0F96IyWGCNaiel8BV59w==","signatures":[{"sig":"MEYCIQC6PgwU2mP9Egi3UYELHC2w41gKgBv6tBl5i6vewvsj2AIhANL9eriRHbtD3jui8E29SqBfSkooMqkblNNUcMssEfdC","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@danypops%2fpi-web-spider@0.21.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":185826},"main":"./src/index.ts","type":"module","gitHead":"2ae9ca780e86765d53965560cdae19e55b045471","scripts":{"lint":"biome lint src/","test":"vitest --run","check":"npm run lint && tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7b0d92ac-f038-44f7-9bed-10643e5d0d61"}},"repository":{"url":"git+https://github.com/DanyPops/web-spider.git","type":"git","directory":"packages/pi-web-spider"},"_npmVersion":"12.0.2","description":"Pi extension for web_fetch, web_search, and live browser sessions: 7 search providers (Brave, Brave LLM Context, Tavily, Exa, Serper, SerpApi, You.com) with automatic fallback, robots.txt-respecting crawl, GitHub/Wikipedia/llms.txt-aware fetching, and a d","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@danypops/web-spider":"^0.16.0","@danypops/vehicle-core":"^0.14.0","malevich-tui-components":"0.25.0","@danypops/vehicle-client":"^0.7.1","@danypops/vehicle-client-pi":"^0.25.1","@danypops/web-spider-daemon":"^0.20.0"},"_hasShrinkwrap":false,"devDependencies":{"jiti":"^2.0.0","vitest":"^4.1.10","typescript":"^5.9.3","@types/node":"^22.19.19","@biomejs/biome":"^2.4.15","@earendil-works/pi-tui":"^0.84.0","@danypops/pi-extension-harness":"^0.4.0","@earendil-works/pi-coding-agent":"^0.80.10"},"peerDependencies":{"@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web-spider_0.21.2_1786370171217_0.10816986794753092","host":"s3://npm-registry-packages-npm-production"}},"0.21.3":{"name":"@danypops/pi-web-spider","version":"0.21.3","keywords":["pi-package","web-search","web-scraping","web-fetch","crawler","browser-automation","playwright","brave","tavily","exa"],"author":{"name":"Daniel Popsuevich"},"license":"MIT","_id":"@danypops/pi-web-spider@0.21.3","maintainers":[{"name":"danypops","email":"danypops@protonmail.com"}],"homepage":"https://pi.dev/packages/@danypops/pi-web-spider","bugs":{"url":"https://github.com/DanyPops/web-spider/issues"},"pi":{"image":"https://raw.githubusercontent.com/DanyPops/web-spider/main/packages/pi-web-spider/assets/architecture.png","extensions":["./src/index.ts"]},"dist":{"shasum":"1405bc74b26c74c3200b6202977be2be47bb759a","tarball":"https://registry.npmjs.org/@danypops/pi-web-spider/-/pi-web-spider-0.21.3.tgz","fileCount":13,"integrity":"sha512-wKIJVYZG5mA6r58PB9Lr9A9V4beUqktqiKUo/18KqTF8xYVQ5Gkh80Zc3xHYrVFkLkJDTDkNkSU1pKbQA2lHVw==","signatures":[{"sig":"MEQCIGApDNQEyAyD6PV4D8aOxu+EMyZIqDakYwqcb7UF4ocWAiAFUfeI5FQYcssRss/4aVcps/sUtAgijITSy+wRgMiVmA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@danypops%2fpi-web-spider@0.21.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":187463},"main":"./src/index.ts","type":"module","gitHead":"7e523c810bcff04663a9426877ea24a8e1a8c6e1","scripts":{"lint":"biome lint src/","test":"vitest --run","check":"npm run lint && tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7b0d92ac-f038-44f7-9bed-10643e5d0d61"}},"repository":{"url":"git+https://github.com/DanyPops/web-spider.git","type":"git","directory":"packages/pi-web-spider"},"_npmVersion":"12.0.2","description":"Pi extension for web_fetch, web_search, and live browser sessions: 7 search providers (Brave, Brave LLM Context, Tavily, Exa, Serper, SerpApi, You.com) with automatic fallback, robots.txt-respecting crawl, GitHub/Wikipedia/llms.txt-aware fetching, and a d","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@danypops/web-spider":"^0.16.0","@danypops/vehicle-core":"^0.14.0","malevich-tui-components":"0.25.0","@danypops/vehicle-client":"^0.7.1","@danypops/vehicle-client-pi":"^0.25.1","@danypops/web-spider-daemon":"^0.20.0"},"_hasShrinkwrap":false,"devDependencies":{"jiti":"^2.0.0","vitest":"^4.1.10","typescript":"^5.9.3","@types/node":"^22.19.19","@biomejs/biome":"^2.4.15","@earendil-works/pi-tui":"^0.84.0","@danypops/pi-extension-harness":"^0.4.0","@earendil-works/pi-coding-agent":"^0.80.10"},"peerDependencies":{"@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web-spider_0.21.3_1786371329605_0.5756671764566339","host":"s3://npm-registry-packages-npm-production"}},"0.21.4":{"name":"@danypops/pi-web-spider","version":"0.21.4","keywords":["pi-package","web-search","web-scraping","web-fetch","crawler","browser-automation","playwright","brave","tavily","exa"],"author":{"name":"Daniel Popsuevich"},"license":"MIT","_id":"@danypops/pi-web-spider@0.21.4","maintainers":[{"name":"danypops","email":"danypops@protonmail.com"}],"homepage":"https://pi.dev/packages/@danypops/pi-web-spider","bugs":{"url":"https://github.com/DanyPops/web-spider/issues"},"pi":{"image":"https://raw.githubusercontent.com/DanyPops/web-spider/main/packages/pi-web-spider/assets/architecture.png","extensions":["./src/index.ts"]},"dist":{"shasum":"a5049b676f617f0d5477a416bc4365ce16f3f220","tarball":"https://registry.npmjs.org/@danypops/pi-web-spider/-/pi-web-spider-0.21.4.tgz","fileCount":12,"integrity":"sha512-Yct+hFycKTCAdVU4N9YoF5m/qzMmRE1B3V35HLjEq46s87sNyfQADb3jKHAqvuzLJCevdCy4ZBdOogv+Jy0tgQ==","signatures":[{"sig":"MEQCIH7SnPJHYX+feRTNug/BBuzMRKAgWvGz2v9MeQrzwGeQAiBaiTJIfWOP9IAils3IkPZtNxQSaVP9R+ZEvr+xOOkuKQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@danypops%2fpi-web-spider@0.21.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":186123},"main":"./src/index.ts","type":"module","gitHead":"ef696f719fe31448ba2290fbbafbbecc80c8e6fc","scripts":{"lint":"biome lint src/","test":"vitest --run","check":"npm run lint && tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7b0d92ac-f038-44f7-9bed-10643e5d0d61"}},"repository":{"url":"git+https://github.com/DanyPops/web-spider.git","type":"git","directory":"packages/pi-web-spider"},"_npmVersion":"12.0.2","description":"Pi extension for web_fetch, web_search, and live browser sessions: 7 search providers (Brave, Brave LLM Context, Tavily, Exa, Serper, SerpApi, You.com) with automatic fallback, robots.txt-respecting crawl, GitHub/Wikipedia/llms.txt-aware fetching, and a d","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@danypops/web-spider":"^0.16.0","@danypops/vehicle-core":"^0.14.0","malevich-tui-components":"0.25.0","@danypops/vehicle-client":"^0.7.1","@danypops/vehicle-client-pi":"^0.30.0","@danypops/web-spider-daemon":"^0.20.0"},"_hasShrinkwrap":false,"devDependencies":{"jiti":"^2.0.0","vitest":"^4.1.10","typescript":"^5.9.3","@types/node":"^22.19.19","@biomejs/biome":"^2.4.15","@earendil-works/pi-tui":"^0.84.0","@danypops/pi-extension-harness":"^0.4.0","@earendil-works/pi-coding-agent":"^0.80.10"},"peerDependencies":{"@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web-spider_0.21.4_1786373766190_0.18614925805967353","host":"s3://npm-registry-packages-npm-production"}},"0.21.5":{"name":"@danypops/pi-web-spider","version":"0.21.5","keywords":["pi-package","web-search","web-scraping","web-fetch","crawler","browser-automation","playwright","brave","tavily","exa"],"author":{"name":"Daniel Popsuevich"},"license":"MIT","_id":"@danypops/pi-web-spider@0.21.5","maintainers":[{"name":"danypops","email":"danypops@protonmail.com"}],"homepage":"https://pi.dev/packages/@danypops/pi-web-spider","bugs":{"url":"https://github.com/DanyPops/web-spider/issues"},"pi":{"image":"https://raw.githubusercontent.com/DanyPops/web-spider/main/packages/pi-web-spider/assets/architecture.png","extensions":["./src/index.ts"]},"dist":{"shasum":"8048ae1c21c2f3e4be4acb7fae8b5221b7f667ec","tarball":"https://registry.npmjs.org/@danypops/pi-web-spider/-/pi-web-spider-0.21.5.tgz","fileCount":12,"integrity":"sha512-WCvBjRoV/FEHGwWHPjW6+JYHwOpGvLtsT/jkfgYTwDVtKbR4y4Ko+A+8IPza5zNvrvK22TsTHGunKXxyeBikJw==","signatures":[{"sig":"MEUCIDS9X0yJSw28aRiUCTgK4ghyGbO0u9dzLUsSl57E17vOAiEAjeu5iM9/pcziH/DJaOssKUJIg8DDLctJACqeYVmOuFk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@danypops%2fpi-web-spider@0.21.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":186123},"main":"./src/index.ts","type":"module","gitHead":"c92c55a87fe70b9699a034fa7ef326507890aa89","scripts":{"lint":"biome lint src/","test":"vitest --run","check":"npm run lint && tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7b0d92ac-f038-44f7-9bed-10643e5d0d61"}},"repository":{"url":"git+https://github.com/DanyPops/web-spider.git","type":"git","directory":"packages/pi-web-spider"},"_npmVersion":"12.0.2","description":"Pi extension for web_fetch, web_search, and live browser sessions: 7 search providers (Brave, Brave LLM Context, Tavily, Exa, Serper, SerpApi, You.com) with automatic fallback, robots.txt-respecting crawl, GitHub/Wikipedia/llms.txt-aware fetching, and a d","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@danypops/web-spider":"^0.16.0","@danypops/vehicle-core":"^0.14.0","malevich-tui-components":"0.25.0","@danypops/vehicle-client":"^0.7.1","@danypops/vehicle-client-pi":"^0.31.2","@danypops/web-spider-daemon":"^0.20.0"},"_hasShrinkwrap":false,"devDependencies":{"jiti":"^2.0.0","vitest":"^4.1.10","typescript":"^5.9.3","@types/node":"^22.19.19","@biomejs/biome":"^2.4.15","@earendil-works/pi-tui":"^0.84.0","@danypops/pi-extension-harness":"^0.4.0","@earendil-works/pi-coding-agent":"^0.80.10"},"peerDependencies":{"@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web-spider_0.21.5_1786379803786_0.1059951630103042","host":"s3://npm-registry-packages-npm-production"}},"0.22.0":{"name":"@danypops/pi-web-spider","version":"0.22.0","keywords":["pi-package","web-search","web-scraping","web-fetch","crawler","browser-automation","playwright","brave","tavily","exa"],"author":{"name":"Daniel Popsuevich"},"license":"MIT","_id":"@danypops/pi-web-spider@0.22.0","maintainers":[{"name":"danypops","email":"danypops@protonmail.com"}],"homepage":"https://pi.dev/packages/@danypops/pi-web-spider","bugs":{"url":"https://github.com/DanyPops/web-spider/issues"},"pi":{"image":"https://raw.githubusercontent.com/DanyPops/web-spider/main/packages/pi-web-spider/assets/architecture.png","extensions":["./src/index.ts"]},"dist":{"shasum":"700562224539fd96bc6ea7b39981c3c79efa4543","tarball":"https://registry.npmjs.org/@danypops/pi-web-spider/-/pi-web-spider-0.22.0.tgz","fileCount":12,"integrity":"sha512-lrLtW0lvKeueCSqi6SDLoJ8aHICunVx9ZvJgWLJ9wVycU08lzevD7bQISSoxKTPmx8r7fDJQAZw+4YSNtenbUA==","signatures":[{"sig":"MEUCIQD0/7noqKQOH6EGTq5TJAV4FnHzK4uVNXZ897PcFubnswIgSBnmb+JUrf7cdUfxlG2cHrsH653W45bXg6v9OzhvXvQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@danypops%2fpi-web-spider@0.22.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":187601},"main":"./src/index.ts","type":"module","gitHead":"a250cb0906184ec23d770f431ed0ae9a541288f7","scripts":{"lint":"biome lint src/","test":"vitest --run","check":"npm run lint && tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7b0d92ac-f038-44f7-9bed-10643e5d0d61"}},"repository":{"url":"git+https://github.com/DanyPops/web-spider.git","type":"git","directory":"packages/pi-web-spider"},"_npmVersion":"12.0.2","description":"Pi extension for web_fetch, web_search, and live browser sessions: 7 search providers (Brave, Brave LLM Context, Tavily, Exa, Serper, SerpApi, You.com) with automatic fallback, robots.txt-respecting crawl, GitHub/Wikipedia/llms.txt-aware fetching, and a d","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@danypops/web-spider":"^0.17.0","@danypops/vehicle-core":"^0.14.0","malevich-tui-components":"0.25.0","@danypops/vehicle-client":"^0.7.1","@danypops/vehicle-client-pi":"^0.31.2","@danypops/web-spider-daemon":"^0.21.0"},"_hasShrinkwrap":false,"devDependencies":{"jiti":"^2.0.0","vitest":"^4.1.10","typescript":"^5.9.3","@types/node":"^22.19.19","@biomejs/biome":"^2.4.15","@earendil-works/pi-tui":"^0.84.0","@danypops/pi-extension-harness":"^0.4.0","@earendil-works/pi-coding-agent":"^0.80.10"},"peerDependencies":{"@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web-spider_0.22.0_1786436750603_0.2530329351824663","host":"s3://npm-registry-packages-npm-production"}},"0.23.0":{"name":"@danypops/pi-web-spider","version":"0.23.0","keywords":["pi-package","web-search","web-scraping","web-fetch","crawler","browser-automation","playwright","brave","tavily","exa"],"author":{"name":"Daniel Popsuevich"},"license":"MIT","_id":"@danypops/pi-web-spider@0.23.0","maintainers":[{"name":"danypops","email":"danypops@protonmail.com"}],"homepage":"https://pi.dev/packages/@danypops/pi-web-spider","bugs":{"url":"https://github.com/DanyPops/web-spider/issues"},"pi":{"image":"https://raw.githubusercontent.com/DanyPops/web-spider/main/packages/pi-web-spider/assets/architecture.png","extensions":["./src/index.ts"]},"dist":{"shasum":"8baf540b8ce8c94c3018fa60452327f4421d6142","tarball":"https://registry.npmjs.org/@danypops/pi-web-spider/-/pi-web-spider-0.23.0.tgz","fileCount":12,"integrity":"sha512-lGhEpC0fOR4L+ysusGbI6KDTsCNoTzHn9mFKedZhG5HzjQLxw/eF8n09OoVOYgHc3jmIILyfGGE7vji7Or+zyA==","signatures":[{"sig":"MEQCIFZOwEjtKv066M4qf6NeJnJGB7K0CYvu9bcX8cSTfcnOAiBvYLVu4rNILB9ozsnHdzZVsJw2j7uFX1Webmr9qa20Zw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@danypops%2fpi-web-spider@0.23.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":189611},"main":"./src/index.ts","type":"module","gitHead":"43b1d85eae7afad435d1eaad79198db1e5ab9246","scripts":{"lint":"biome lint src/","test":"vitest --run","check":"npm run lint && tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7b0d92ac-f038-44f7-9bed-10643e5d0d61"}},"repository":{"url":"git+https://github.com/DanyPops/web-spider.git","type":"git","directory":"packages/pi-web-spider"},"_npmVersion":"12.0.2","description":"Pi extension for web_fetch, web_search, and live browser sessions: 7 search providers (Brave, Brave LLM Context, Tavily, Exa, Serper, SerpApi, You.com) with automatic fallback, robots.txt-respecting crawl, GitHub/Wikipedia/llms.txt-aware fetching, and a d","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@danypops/web-spider":"^0.17.0","@danypops/vehicle-core":"^0.14.0","malevich-tui-components":"0.25.0","@danypops/vehicle-client":"^0.7.1","@danypops/vehicle-client-pi":"^0.31.2","@danypops/web-spider-daemon":"^0.22.0"},"_hasShrinkwrap":false,"devDependencies":{"jiti":"^2.0.0","vitest":"^4.1.10","typescript":"^5.9.3","@types/node":"^22.19.19","@biomejs/biome":"^2.4.15","@earendil-works/pi-tui":"^0.84.0","@danypops/pi-extension-harness":"^0.4.0","@earendil-works/pi-coding-agent":"^0.80.10"},"peerDependencies":{"@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web-spider_0.23.0_1786444657303_0.1611065698751697","host":"s3://npm-registry-packages-npm-production"}},"0.24.0":{"name":"@danypops/pi-web-spider","version":"0.24.0","keywords":["pi-package","web-search","web-scraping","web-fetch","crawler","browser-automation","playwright","brave","tavily","exa"],"author":{"name":"Daniel Popsuevich"},"license":"MIT","_id":"@danypops/pi-web-spider@0.24.0","maintainers":[{"name":"danypops","email":"danypops@protonmail.com"}],"homepage":"https://pi.dev/packages/@danypops/pi-web-spider","bugs":{"url":"https://github.com/DanyPops/web-spider/issues"},"pi":{"image":"https://raw.githubusercontent.com/DanyPops/web-spider/main/packages/pi-web-spider/assets/architecture.png","extensions":["./src/index.ts"]},"dist":{"shasum":"ca96b249fa6d40e22a7aebefc486fb5c4859dcb2","tarball":"https://registry.npmjs.org/@danypops/pi-web-spider/-/pi-web-spider-0.24.0.tgz","fileCount":12,"integrity":"sha512-DHGJI4yFLVen5eZiRzhgwN0IMk707SUYswLspAWVqLVJyIbqOspHatHgz7NWEjqzMqNDGawZZRSNxNiKkfVaGw==","signatures":[{"sig":"MEYCIQD1N+ls0X5Qpps5J2qZPqBE+Q19ebhb582aGpXWHesHqwIhANfUsfS372rADRTAF0cwpljlFn5rLoubkYpfHDEqUQe4","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@danypops%2fpi-web-spider@0.24.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":190490},"main":"./src/index.ts","type":"module","gitHead":"e9bc1be36624f89a320c14b7fe8486e27946eed7","scripts":{"lint":"biome lint src/","test":"vitest --run","check":"npm run lint && tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7b0d92ac-f038-44f7-9bed-10643e5d0d61"}},"repository":{"url":"git+https://github.com/DanyPops/web-spider.git","type":"git","directory":"packages/pi-web-spider"},"_npmVersion":"12.0.2","description":"Pi extension for web_fetch, web_search, and live browser sessions: 7 search providers (Brave, Brave LLM Context, Tavily, Exa, Serper, SerpApi, You.com) with automatic fallback, robots.txt-respecting crawl, GitHub/Wikipedia/llms.txt-aware fetching, and a d","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@danypops/web-spider":"^0.18.0","@danypops/vehicle-core":"^0.14.0","malevich-tui-components":"0.25.0","@danypops/vehicle-client":"^0.7.1","@danypops/vehicle-client-pi":"^0.31.2","@danypops/web-spider-daemon":"^0.23.0"},"_hasShrinkwrap":false,"devDependencies":{"jiti":"^2.0.0","vitest":"^4.1.10","typescript":"^5.9.3","@types/node":"^22.19.19","@biomejs/biome":"^2.4.15","@earendil-works/pi-tui":"^0.84.0","@danypops/pi-extension-harness":"^0.4.0","@earendil-works/pi-coding-agent":"^0.80.10"},"peerDependencies":{"@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web-spider_0.24.0_1786448953334_0.060667138455905656","host":"s3://npm-registry-packages-npm-production"}},"0.24.1":{"name":"@danypops/pi-web-spider","version":"0.24.1","keywords":["pi-package","web-search","web-scraping","web-fetch","crawler","browser-automation","playwright","brave","tavily","exa"],"author":{"name":"Daniel Popsuevich"},"license":"MIT","_id":"@danypops/pi-web-spider@0.24.1","maintainers":[{"name":"danypops","email":"danypops@protonmail.com"}],"homepage":"https://pi.dev/packages/@danypops/pi-web-spider","bugs":{"url":"https://github.com/DanyPops/web-spider/issues"},"pi":{"image":"https://raw.githubusercontent.com/DanyPops/web-spider/main/packages/pi-web-spider/assets/architecture.png","extensions":["./src/index.ts"]},"dist":{"shasum":"7f461888f41e62cc15802753560472d6883b0657","tarball":"https://registry.npmjs.org/@danypops/pi-web-spider/-/pi-web-spider-0.24.1.tgz","fileCount":17,"integrity":"sha512-1eTUdDQbgg4YLJs9mvyRQtNcHOpUPFSawT/VtW+HVL16FYWQGU9M0X2HIsN+2dprAr4IN6axMMSQRcaGRxcqyg==","signatures":[{"sig":"MEQCIHWxcbIhoP0IozbjG6+8YTfvOhgUCz2Bk4O/8ag/uddyAiAEqXOJUJpBlTLn9gS6bI24vgk9DVWfFk68Ohzt6h6Oig==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@danypops%2fpi-web-spider@0.24.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":196899},"main":"./src/index.ts","type":"module","gitHead":"b2382653c4490cec7347c431e6cb730ef937d338","scripts":{"lint":"biome lint src/","test":"vitest --run","check":"npm run lint && tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7b0d92ac-f038-44f7-9bed-10643e5d0d61"}},"repository":{"url":"git+https://github.com/DanyPops/web-spider.git","type":"git","directory":"packages/pi-web-spider"},"_npmVersion":"12.0.2","description":"Pi extension for web_fetch, web_search, and live browser sessions: 7 search providers (Brave, Brave LLM Context, Tavily, Exa, Serper, SerpApi, You.com) with automatic fallback, robots.txt-respecting crawl, GitHub/Wikipedia/llms.txt-aware fetching, and a d","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@danypops/web-spider":"^0.18.0","@danypops/vehicle-core":"^0.14.0","malevich-tui-components":"0.25.0","@danypops/vehicle-client":"^0.7.1","@danypops/vehicle-client-pi":"^0.31.2","@danypops/web-spider-daemon":"^0.23.0"},"_hasShrinkwrap":false,"devDependencies":{"jiti":"^2.0.0","vitest":"^4.1.10","typescript":"^5.9.3","@types/node":"^22.19.19","@biomejs/biome":"^2.4.15","@earendil-works/pi-tui":"^0.84.0","@danypops/pi-extension-harness":"^0.4.0","@earendil-works/pi-coding-agent":"^0.80.10"},"peerDependencies":{"@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web-spider_0.24.1_1786461029816_0.15019971316846603","host":"s3://npm-registry-packages-npm-production"}},"0.24.2":{"name":"@danypops/pi-web-spider","version":"0.24.2","keywords":["pi-package","web-search","web-scraping","web-fetch","crawler","browser-automation","playwright","brave","tavily","exa"],"author":{"name":"Daniel Popsuevich"},"license":"MIT","_id":"@danypops/pi-web-spider@0.24.2","maintainers":[{"name":"danypops","email":"danypops@protonmail.com"}],"homepage":"https://pi.dev/packages/@danypops/pi-web-spider","bugs":{"url":"https://github.com/DanyPops/web-spider/issues"},"pi":{"image":"https://raw.githubusercontent.com/DanyPops/web-spider/main/packages/pi-web-spider/assets/architecture.png","extensions":["./src/index.ts"]},"dist":{"shasum":"0f2bec0a622bd5b11fdc352b1fe7aa0e4066a9a3","tarball":"https://registry.npmjs.org/@danypops/pi-web-spider/-/pi-web-spider-0.24.2.tgz","fileCount":17,"integrity":"sha512-UIZb1DwrO/cZER6dnEzatL8R1QPGcZ5ilvXiFGrNZbX2kBNRSHh65knEqNP09hAx9nV6rSFxT718OOcyk9vgWQ==","signatures":[{"sig":"MEYCIQCL27yM4zrbcOnJQ30e40K5dT9NVoWrRDtRnmpqqLx4XAIhAJb9peMaA2fGrBPF7uNC9AmUqttmWQMV54pKAm6lOa+t","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@danypops%2fpi-web-spider@0.24.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":196956},"main":"./src/index.ts","type":"module","gitHead":"6dd55f6bc15467a038b99e2a5fda80c310126aad","scripts":{"lint":"biome lint src/","test":"vitest --run","check":"npm run lint && tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7b0d92ac-f038-44f7-9bed-10643e5d0d61"}},"repository":{"url":"git+https://github.com/DanyPops/web-spider.git","type":"git","directory":"packages/pi-web-spider"},"_npmVersion":"12.0.2","description":"Pi extension for web_fetch, web_search, and live browser sessions: 7 search providers (Brave, Brave LLM Context, Tavily, Exa, Serper, SerpApi, You.com) with automatic fallback, robots.txt-respecting crawl, GitHub/Wikipedia/llms.txt-aware fetching, and a d","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@danypops/web-spider":"^0.18.0","@danypops/vehicle-core":"^0.14.0","malevich-tui-components":"0.25.0","@danypops/vehicle-client":"^0.7.1","@danypops/vehicle-client-pi":"^0.31.2","@danypops/web-spider-daemon":"^0.23.0"},"_hasShrinkwrap":false,"devDependencies":{"jiti":"^2.0.0","vitest":"^4.1.10","typescript":"^5.9.3","@types/node":"^22.19.19","@biomejs/biome":"^2.4.15","@earendil-works/pi-tui":"^0.84.0","@danypops/pi-extension-harness":"^0.4.0","@earendil-works/pi-coding-agent":"^0.80.10"},"peerDependencies":{"@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web-spider_0.24.2_1786462140333_0.9962886140158662","host":"s3://npm-registry-packages-npm-production"}},"0.24.3":{"name":"@danypops/pi-web-spider","version":"0.24.3","keywords":["pi-package","web-search","web-scraping","web-fetch","crawler","browser-automation","playwright","brave","tavily","exa"],"author":{"name":"Daniel Popsuevich"},"license":"MIT","_id":"@danypops/pi-web-spider@0.24.3","maintainers":[{"name":"danypops","email":"danypops@protonmail.com"}],"homepage":"https://pi.dev/packages/@danypops/pi-web-spider","bugs":{"url":"https://github.com/DanyPops/web-spider/issues"},"pi":{"image":"https://raw.githubusercontent.com/DanyPops/web-spider/main/packages/pi-web-spider/assets/architecture.png","extensions":["./src/index.ts"]},"dist":{"shasum":"0c3bdb8aa7c0fd647b20341f3a48ce42bb1bd7bf","tarball":"https://registry.npmjs.org/@danypops/pi-web-spider/-/pi-web-spider-0.24.3.tgz","fileCount":17,"integrity":"sha512-pGZtQPw5pvO4x+ozY3ST9CZne+HCf269yW/ZZFdp16MFPyyJito+Jq89Ao/CBN3KW19AWS7c0fZ9Vi6WC5bolQ==","signatures":[{"sig":"MEQCIEWS6avQiwdwqKlWDi24xGrnEGL1RWrtB6yjB/fMYhR1AiByR3a7MXmKgtZq9MykETXlw36u5KXWYzsyuEK1XvrguQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@danypops%2fpi-web-spider@0.24.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":196956},"main":"./src/index.ts","type":"module","gitHead":"546b4e548f3a3bb26c1ebfed5b94084cd3db6bab","scripts":{"lint":"biome lint src/","test":"vitest --run","check":"npm run lint && tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7b0d92ac-f038-44f7-9bed-10643e5d0d61"}},"repository":{"url":"git+https://github.com/DanyPops/web-spider.git","type":"git","directory":"packages/pi-web-spider"},"_npmVersion":"12.0.2","description":"Pi extension for web_fetch, web_search, and live browser sessions: 7 search providers (Brave, Brave LLM Context, Tavily, Exa, Serper, SerpApi, You.com) with automatic fallback, robots.txt-respecting crawl, GitHub/Wikipedia/llms.txt-aware fetching, and a d","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@danypops/web-spider":"^0.18.0","@danypops/vehicle-core":"^0.14.0","malevich-tui-components":"0.25.0","@danypops/vehicle-client":"^0.7.1","@danypops/vehicle-client-pi":"^0.31.2","@danypops/web-spider-daemon":"^0.24.0"},"_hasShrinkwrap":false,"devDependencies":{"jiti":"^2.0.0","vitest":"^4.1.10","typescript":"^5.9.3","@types/node":"^22.19.19","@biomejs/biome":"^2.4.15","@earendil-works/pi-tui":"^0.84.0","@danypops/pi-extension-harness":"^0.4.0","@earendil-works/pi-coding-agent":"^0.80.10"},"peerDependencies":{"@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web-spider_0.24.3_1786465225524_0.8698869763664261","host":"s3://npm-registry-packages-npm-production"}},"0.24.4":{"name":"@danypops/pi-web-spider","version":"0.24.4","keywords":["pi-package","web-search","web-scraping","web-fetch","crawler","browser-automation","playwright","brave","tavily","exa"],"author":{"name":"Daniel Popsuevich"},"license":"MIT","_id":"@danypops/pi-web-spider@0.24.4","maintainers":[{"name":"danypops","email":"danypops@protonmail.com"}],"homepage":"https://pi.dev/packages/@danypops/pi-web-spider","bugs":{"url":"https://github.com/DanyPops/web-spider/issues"},"pi":{"image":"https://raw.githubusercontent.com/DanyPops/web-spider/main/packages/pi-web-spider/assets/architecture.png","extensions":["./src/index.ts"]},"dist":{"shasum":"649d07ac9642b0db13c6147aee0a5c003d64f897","tarball":"https://registry.npmjs.org/@danypops/pi-web-spider/-/pi-web-spider-0.24.4.tgz","fileCount":17,"integrity":"sha512-lxc52XkC4XxZfKktSnud81pXlX34VTnyY8Kcl+rlS3XuJqqLeJznvR0LNHNbpeOvOIIuPQZ84QfuYwjZg8BPwA==","signatures":[{"sig":"MEYCIQD8QJKtAAs58++qwpH4SNQc/wYEC3WflJVpNDl856tAAQIhAMpO0RkxpPDk4aItblfZGrzDXMD9UHERFSy9Q3GXvLRU","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@danypops%2fpi-web-spider@0.24.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":196956},"main":"./src/index.ts","type":"module","gitHead":"74029491e683b0e4969e213470b15b40e37b2acc","scripts":{"lint":"biome lint src/","test":"vitest --run","check":"npm run lint && tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7b0d92ac-f038-44f7-9bed-10643e5d0d61"}},"repository":{"url":"git+https://github.com/DanyPops/web-spider.git","type":"git","directory":"packages/pi-web-spider"},"_npmVersion":"12.0.2","description":"Pi extension for web_fetch, web_search, and live browser sessions: 7 search providers (Brave, Brave LLM Context, Tavily, Exa, Serper, SerpApi, You.com) with automatic fallback, robots.txt-respecting crawl, GitHub/Wikipedia/llms.txt-aware fetching, and a d","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@danypops/web-spider":"^0.19.0","@danypops/vehicle-core":"^0.14.0","malevich-tui-components":"0.25.0","@danypops/vehicle-client":"^0.7.1","@danypops/vehicle-client-pi":"^0.31.2","@danypops/web-spider-daemon":"^0.24.0"},"_hasShrinkwrap":false,"devDependencies":{"jiti":"^2.0.0","vitest":"^4.1.10","typescript":"^5.9.3","@types/node":"^22.19.19","@biomejs/biome":"^2.4.15","@earendil-works/pi-tui":"^0.84.0","@danypops/pi-extension-harness":"^0.4.0","@earendil-works/pi-coding-agent":"^0.80.10"},"peerDependencies":{"@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web-spider_0.24.4_1786469104553_0.83282818735478","host":"s3://npm-registry-packages-npm-production"}},"0.24.5":{"name":"@danypops/pi-web-spider","version":"0.24.5","keywords":["pi-package","web-search","web-scraping","web-fetch","crawler","browser-automation","playwright","brave","tavily","exa"],"author":{"name":"Daniel Popsuevich"},"license":"MIT","_id":"@danypops/pi-web-spider@0.24.5","maintainers":[{"name":"danypops","email":"danypops@protonmail.com"}],"homepage":"https://pi.dev/packages/@danypops/pi-web-spider","bugs":{"url":"https://github.com/DanyPops/web-spider/issues"},"pi":{"image":"https://raw.githubusercontent.com/DanyPops/web-spider/main/packages/pi-web-spider/assets/architecture.png","extensions":["./src/index.ts"]},"dist":{"shasum":"25aa01bf799e6fd80b130ba5c25128bddf4a308a","tarball":"https://registry.npmjs.org/@danypops/pi-web-spider/-/pi-web-spider-0.24.5.tgz","fileCount":17,"integrity":"sha512-/dA18Q6ft9m1VOds+4nsWL+r2ab3M7ujtGr0QgXApFWj8nWYFOSQspHP5SkyuvKNJ1HWJpkF2eCDZ/xGxcZ1AQ==","signatures":[{"sig":"MEQCIBKX25oaTEnuc1xcgMZ8G33wwgcU/B2/9QMU5mmw9ySJAiBwAp9LhoXIVCITXOAjOsMmNCyENu0tA+sWlyWGzAQ19g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@danypops%2fpi-web-spider@0.24.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":196956},"main":"./src/index.ts","type":"module","gitHead":"06512233dfb757221b12eca9c7d6dfadfe5562fe","scripts":{"lint":"biome lint src/","test":"vitest --run","check":"npm run lint && tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7b0d92ac-f038-44f7-9bed-10643e5d0d61"}},"repository":{"url":"git+https://github.com/DanyPops/web-spider.git","type":"git","directory":"packages/pi-web-spider"},"_npmVersion":"12.0.2","description":"Pi extension for web_fetch, web_search, and live browser sessions: 7 search providers (Brave, Brave LLM Context, Tavily, Exa, Serper, SerpApi, You.com) with automatic fallback, robots.txt-respecting crawl, GitHub/Wikipedia/llms.txt-aware fetching, and a d","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@danypops/web-spider":"^0.19.0","@danypops/vehicle-core":"^0.14.0","malevich-tui-components":"0.27.0","@danypops/vehicle-client":"^0.7.1","@danypops/vehicle-client-pi":"^0.39.0","@danypops/web-spider-daemon":"^0.24.0"},"_hasShrinkwrap":false,"devDependencies":{"jiti":"^2.0.0","vitest":"^4.1.10","typescript":"^5.9.3","@types/node":"^22.19.19","@biomejs/biome":"^2.4.15","@earendil-works/pi-tui":"^0.84.0","@danypops/pi-extension-harness":"^0.4.0","@earendil-works/pi-coding-agent":"^0.80.10"},"peerDependencies":{"@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web-spider_0.24.5_1786550031443_0.5256911773343238","host":"s3://npm-registry-packages-npm-production"}},"0.24.6":{"name":"@danypops/pi-web-spider","version":"0.24.6","keywords":["pi-package","web-search","web-scraping","web-fetch","crawler","browser-automation","playwright","brave","tavily","exa"],"author":{"name":"Daniel Popsuevich"},"license":"MIT","_id":"@danypops/pi-web-spider@0.24.6","maintainers":[{"name":"danypops","email":"danypops@protonmail.com"}],"homepage":"https://pi.dev/packages/@danypops/pi-web-spider","bugs":{"url":"https://github.com/DanyPops/web-spider/issues"},"pi":{"image":"https://raw.githubusercontent.com/DanyPops/web-spider/main/packages/pi-web-spider/assets/architecture.png","extensions":["./src/index.ts"]},"dist":{"shasum":"ad0ccadb281af3c353cd29f860059b973b862c14","tarball":"https://registry.npmjs.org/@danypops/pi-web-spider/-/pi-web-spider-0.24.6.tgz","fileCount":17,"integrity":"sha512-SvXwxaQ3rTxFL5kfkaf/VsgKwUIM3ZpVmbE5F0K2YOHcET3daN+QS+lIwnDvANpqIs8Bgrdm1KzrWkbnRYbP0g==","signatures":[{"sig":"MEUCIGCWPOFnJ6QK8ue4byOZ6qMMfss5XZMGnNZIhYQPdroJAiEA/hojz8+yedPveSmVLnp0ShQqnT2OlikB/5YlawBEcr8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@danypops%2fpi-web-spider@0.24.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":196956},"main":"./src/index.ts","type":"module","gitHead":"45f20812592d3fbebffd5cf036633d6012a4936b","scripts":{"lint":"biome lint src/","test":"vitest --run","check":"npm run lint && tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7b0d92ac-f038-44f7-9bed-10643e5d0d61"}},"repository":{"url":"git+https://github.com/DanyPops/web-spider.git","type":"git","directory":"packages/pi-web-spider"},"_npmVersion":"12.0.2","description":"Pi extension for web_fetch, web_search, and live browser sessions: 7 search providers (Brave, Brave LLM Context, Tavily, Exa, Serper, SerpApi, You.com) with automatic fallback, robots.txt-respecting crawl, GitHub/Wikipedia/llms.txt-aware fetching, and a d","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@danypops/web-spider":"^0.19.0","@danypops/vehicle-core":"^0.14.0","malevich-tui-components":"0.28.0","@danypops/vehicle-client":"^0.7.1","@danypops/vehicle-client-pi":"^0.40.1","@danypops/web-spider-daemon":"^0.24.0"},"_hasShrinkwrap":false,"devDependencies":{"jiti":"^2.0.0","vitest":"^4.1.10","typescript":"^5.9.3","@types/node":"^22.19.19","@biomejs/biome":"^2.4.15","@earendil-works/pi-tui":"^0.84.0","@danypops/pi-extension-harness":"^0.4.0","@earendil-works/pi-coding-agent":"^0.80.10"},"peerDependencies":{"@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web-spider_0.24.6_1786617264720_0.4509982440853062","host":"s3://npm-registry-packages-npm-production"}},"0.24.7":{"name":"@danypops/pi-web-spider","version":"0.24.7","keywords":["pi-package","web-search","web-scraping","web-fetch","crawler","browser-automation","playwright","brave","tavily","exa"],"author":{"name":"Daniel Popsuevich"},"license":"MIT","_id":"@danypops/pi-web-spider@0.24.7","maintainers":[{"name":"danypops","email":"danypops@protonmail.com"}],"homepage":"https://pi.dev/packages/@danypops/pi-web-spider","bugs":{"url":"https://github.com/DanyPops/web-spider/issues"},"pi":{"image":"https://raw.githubusercontent.com/DanyPops/web-spider/main/packages/pi-web-spider/assets/architecture.png","extensions":["./src/index.ts"]},"dist":{"shasum":"dbd23447a69e4b2a6f28596ce889f6e5500f3889","tarball":"https://registry.npmjs.org/@danypops/pi-web-spider/-/pi-web-spider-0.24.7.tgz","fileCount":17,"integrity":"sha512-LvOZRG5SmTbZya22/a7PgmWjxHaa50ONtKMEEX7PTHM6dzI2bNi9+IYrLRzVH+Jl7XG5YtY44QxUy5WId1T2jQ==","signatures":[{"sig":"MEQCIFJPdGRCCmgqHlEvXnekNNew6FgTwNaxRtk0e0CqN1VcAiBxBPAW4B5k7WQxieSOk9Lioh5EBrpK4aaLyWQhC4LpBw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@danypops%2fpi-web-spider@0.24.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":197666},"main":"./src/index.ts","type":"module","gitHead":"cd51744d4b3aa98cd5bb4bbc04709f97fb1a5740","scripts":{"lint":"biome lint src/","test":"vitest --run","check":"npm run lint && tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7b0d92ac-f038-44f7-9bed-10643e5d0d61"}},"repository":{"url":"git+https://github.com/DanyPops/web-spider.git","type":"git","directory":"packages/pi-web-spider"},"_npmVersion":"12.0.2","description":"Pi extension for web_fetch, web_search, and live browser sessions: 7 search providers (Brave, Brave LLM Context, Tavily, Exa, Serper, SerpApi, You.com) with automatic fallback, robots.txt-respecting crawl, GitHub/Wikipedia/llms.txt-aware fetching, and a d","directories":{},"_nodeVersion":"24.19.0","dependencies":{"@danypops/web-spider":"^0.19.0","@danypops/vehicle-core":"^0.14.0","malevich-tui-components":"0.28.0","@danypops/vehicle-client":"^0.10.0","@danypops/vehicle-client-pi":"^0.40.1","@danypops/web-spider-daemon":"^0.24.0"},"_hasShrinkwrap":false,"devDependencies":{"jiti":"^2.0.0","vitest":"^4.1.10","typescript":"^5.9.3","@types/node":"^22.19.19","@biomejs/biome":"^2.4.15","@earendil-works/pi-tui":"^0.84.0","@danypops/pi-extension-harness":"^0.4.0","@earendil-works/pi-coding-agent":"^0.80.10"},"peerDependencies":{"@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web-spider_0.24.7_1786704789838_0.5539938790257464","host":"s3://npm-registry-packages-npm-production"}},"0.24.8":{"name":"@danypops/pi-web-spider","version":"0.24.8","keywords":["pi-package","web-search","web-scraping","web-fetch","crawler","browser-automation","playwright","brave","tavily","exa"],"author":{"name":"Daniel Popsuevich"},"license":"MIT","_id":"@danypops/pi-web-spider@0.24.8","maintainers":[{"name":"danypops","email":"danypops@protonmail.com"}],"homepage":"https://pi.dev/packages/@danypops/pi-web-spider","bugs":{"url":"https://github.com/DanyPops/web-spider/issues"},"pi":{"image":"https://raw.githubusercontent.com/DanyPops/web-spider/main/packages/pi-web-spider/assets/architecture.png","extensions":["./src/index.ts"]},"dist":{"shasum":"2b88571efee8fd8a69ac02fb9c5be74bd3a56b39","tarball":"https://registry.npmjs.org/@danypops/pi-web-spider/-/pi-web-spider-0.24.8.tgz","fileCount":17,"integrity":"sha512-dVAhEUOjhwQ0JMPorml1wSxaruw/yKW5NRI8u1bHV92ae50lYt0cANppytlMyq5sfXrEZO8Xb0VCkZYRtnhUbg==","signatures":[{"sig":"MEYCIQDPSh8ZiRo3bAIJNDhclbOUZkQ6veXSGKCZYTonnir8LwIhAIKgP7FK3AkcvVOtVLsg98ITUglSDLuN6NJ0rgxs4nLg","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@danypops%2fpi-web-spider@0.24.8","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":198811},"main":"./src/index.ts","type":"module","gitHead":"6758338147d3805176615e076080ed2ad3f6a547","scripts":{"lint":"biome lint src/","test":"vitest --run","check":"npm run lint && tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7b0d92ac-f038-44f7-9bed-10643e5d0d61"}},"repository":{"url":"git+https://github.com/DanyPops/web-spider.git","type":"git","directory":"packages/pi-web-spider"},"_npmVersion":"12.0.2","description":"Pi extension for web_fetch, web_search, and live browser sessions: 7 search providers (Brave, Brave LLM Context, Tavily, Exa, Serper, SerpApi, You.com) with automatic fallback, robots.txt-respecting crawl, GitHub/Wikipedia/llms.txt-aware fetching, and a d","directories":{},"_nodeVersion":"24.19.0","dependencies":{"@danypops/web-spider":"^0.19.0","@danypops/vehicle-core":"^0.14.0","malevich-tui-components":"0.28.0","@danypops/vehicle-client":"^0.10.0","@danypops/vehicle-client-pi":"^0.40.1","@danypops/web-spider-daemon":"^0.24.3"},"_hasShrinkwrap":false,"devDependencies":{"jiti":"^2.0.0","vitest":"^4.1.10","typescript":"^5.9.3","@types/node":"^22.19.19","@biomejs/biome":"^2.4.15","@earendil-works/pi-tui":"^0.84.0","@danypops/pi-extension-harness":"^0.4.0","@earendil-works/pi-coding-agent":"^0.80.10"},"peerDependencies":{"@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web-spider_0.24.8_1786717538539_0.33246396392887934","host":"s3://npm-registry-packages-npm-production"}},"0.24.9":{"name":"@danypops/pi-web-spider","version":"0.24.9","keywords":["pi-package","web-search","web-scraping","web-fetch","crawler","browser-automation","playwright","brave","tavily","exa"],"author":{"name":"Daniel Popsuevich"},"license":"MIT","_id":"@danypops/pi-web-spider@0.24.9","maintainers":[{"name":"danypops","email":"danypops@protonmail.com"}],"homepage":"https://pi.dev/packages/@danypops/pi-web-spider","bugs":{"url":"https://github.com/DanyPops/web-spider/issues"},"pi":{"image":"https://raw.githubusercontent.com/DanyPops/web-spider/main/packages/pi-web-spider/assets/architecture.png","extensions":["./src/index.ts"]},"dist":{"shasum":"9aacb8b9960f0436c401960b14485836b288a4cf","tarball":"https://registry.npmjs.org/@danypops/pi-web-spider/-/pi-web-spider-0.24.9.tgz","fileCount":17,"integrity":"sha512-Fevmpz8SIUHjNQVjU6TfC7hkwJGQtO3ZHxctkHDIXxruU2VGxNM8oukqDWsix6aM69CQ2tSE9RdlM+Wka/ErvQ==","signatures":[{"sig":"MEQCICwKuzhD0AID+ptz6y9vvfypdMYaA8I7pCtsh7RyYaOoAiBrfuEzVTDMCVPK5FqcZTRGBQV4EQifMnT1iFZg3X22hQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@danypops%2fpi-web-spider@0.24.9","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":198842},"main":"./src/index.ts","type":"module","gitHead":"380a814b769a10c26ae6fbc0f6c62d591ca443ea","scripts":{"lint":"biome lint src/","test":"vitest --run","check":"bun run lint && tsc --noEmit","test:unit":"vitest --run"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7b0d92ac-f038-44f7-9bed-10643e5d0d61"}},"repository":{"url":"git+https://github.com/DanyPops/web-spider.git","type":"git","directory":"packages/pi-web-spider"},"_npmVersion":"12.0.2","description":"Pi extension for web_fetch, web_search, and live browser sessions: 7 search providers (Brave, Brave LLM Context, Tavily, Exa, Serper, SerpApi, You.com) with automatic fallback, robots.txt-respecting crawl, GitHub/Wikipedia/llms.txt-aware fetching, and a d","directories":{},"_nodeVersion":"24.19.0","dependencies":{"@danypops/web-spider":"^0.20.0","@danypops/vehicle-core":"^0.17.1","malevich-tui-components":"0.28.0","@danypops/vehicle-client":"^0.10.1","@danypops/vehicle-client-pi":"^0.42.1","@danypops/web-spider-daemon":"^0.25.0"},"_hasShrinkwrap":false,"devDependencies":{"jiti":"^2.0.0","vitest":"^4.1.10","typescript":"^5.9.3","@types/node":"^22.19.19","@biomejs/biome":"^2.4.15","@earendil-works/pi-tui":"^0.84.0","@danypops/pi-extension-harness":"^0.4.0","@earendil-works/pi-coding-agent":"^0.80.10"},"peerDependencies":{"@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web-spider_0.24.9_1786963534557_0.5797373878069851","host":"s3://npm-registry-packages-npm-production"}},"0.24.10":{"name":"@danypops/pi-web-spider","version":"0.24.10","keywords":["pi-package","web-search","web-scraping","web-fetch","crawler","browser-automation","playwright","brave","tavily","exa"],"author":{"name":"Daniel Popsuevich"},"license":"MIT","_id":"@danypops/pi-web-spider@0.24.10","maintainers":[{"name":"danypops","email":"danypops@protonmail.com"}],"homepage":"https://pi.dev/packages/@danypops/pi-web-spider","bugs":{"url":"https://github.com/DanyPops/web-spider/issues"},"pi":{"image":"https://raw.githubusercontent.com/DanyPops/web-spider/main/packages/pi-web-spider/assets/architecture.png","extensions":["./src/index.ts"]},"dist":{"shasum":"1f44f262b4b6a403bf093c53abf54ea0c72ea3a2","tarball":"https://registry.npmjs.org/@danypops/pi-web-spider/-/pi-web-spider-0.24.10.tgz","fileCount":17,"integrity":"sha512-UcNWBc2RqqsEkYHBFC3RkMvPgjJGBducw7H3r6qUDu9BA0pu89Hn5Nvip/ssh5NqXN/SvRdqtMxq2AN0nfKCIw==","signatures":[{"sig":"MEQCIFBwRIXPckCZzQmSyfy8PZM9GsvOvSCeBfa4EbRgWNSIAiAVzpXm7WJDQAhsKTPndd6epW3N4ya75tPgk7nnZ6VB+A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@danypops%2fpi-web-spider@0.24.10","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":198843},"main":"./src/index.ts","type":"module","gitHead":"d7656ae17ad1fc1ade3b05526b2ffc18c231931b","scripts":{"lint":"biome lint src/","test":"vitest --run","check":"bun run lint && tsc --noEmit","test:unit":"vitest --run"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7b0d92ac-f038-44f7-9bed-10643e5d0d61"}},"repository":{"url":"git+https://github.com/DanyPops/web-spider.git","type":"git","directory":"packages/pi-web-spider"},"_npmVersion":"12.0.2","description":"Pi extension for web_fetch, web_search, and live browser sessions: 7 search providers (Brave, Brave LLM Context, Tavily, Exa, Serper, SerpApi, You.com) with automatic fallback, robots.txt-respecting crawl, GitHub/Wikipedia/llms.txt-aware fetching, and a d","directories":{},"_nodeVersion":"24.19.0","dependencies":{"@danypops/web-spider":"^0.20.0","@danypops/vehicle-core":"^0.17.1","malevich-tui-components":"0.28.0","@danypops/vehicle-client":"^0.10.3","@danypops/vehicle-client-pi":"^0.43.0","@danypops/web-spider-daemon":"^0.25.0"},"_hasShrinkwrap":false,"devDependencies":{"jiti":"^2.0.0","vitest":"^4.1.10","typescript":"^5.9.3","@types/node":"^22.19.19","@biomejs/biome":"^2.4.15","@earendil-works/pi-tui":"^0.84.0","@danypops/pi-extension-harness":"^0.4.0","@earendil-works/pi-coding-agent":"^0.80.10"},"peerDependencies":{"@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web-spider_0.24.10_1787046568308_0.9899533653462875","host":"s3://npm-registry-packages-npm-production"}},"0.24.11":{"name":"@danypops/pi-web-spider","version":"0.24.11","keywords":["pi-package","web-search","web-scraping","web-fetch","crawler","browser-automation","playwright","brave","tavily","exa"],"author":{"name":"Daniel Popsuevich"},"license":"MIT","_id":"@danypops/pi-web-spider@0.24.11","maintainers":[{"name":"danypops","email":"danypops@protonmail.com"}],"homepage":"https://pi.dev/packages/@danypops/pi-web-spider","bugs":{"url":"https://github.com/DanyPops/web-spider/issues"},"pi":{"image":"https://raw.githubusercontent.com/DanyPops/web-spider/main/packages/pi-web-spider/assets/architecture.png","extensions":["./src/index.ts"]},"dist":{"shasum":"33df3f0dd04b5ab6e5a0d4e7a73596c37fac18e3","tarball":"https://registry.npmjs.org/@danypops/pi-web-spider/-/pi-web-spider-0.24.11.tgz","fileCount":17,"integrity":"sha512-KIbrj14dpSKzQfttLKvzTz3T16GRew6lrdJqsFKFZhSZCgKjzoPbTqU5MAXgpGYFJBz9PvifYMVSy1w/phH/sw==","signatures":[{"sig":"MEYCIQDTypybFyC6SzAY0vXEHyrDuHjR1OP+AsGhw1i75LTquAIhANCuY6sfeKCJT+FNMAmIghu1PXTxSbejEiNfWq3lEav3","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@danypops%2fpi-web-spider@0.24.11","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":210125},"main":"./src/index.ts","type":"module","gitHead":"a9b22c10ba1ed93ca217236b406ebcabe7647caf","scripts":{"lint":"biome lint src/","test":"vitest --run && bun test test/tool-shell-dual-channel.test.ts","check":"bun run lint && tsc --noEmit","test:unit":"vitest --run","test:conformance":"bun test test/tool-shell-dual-channel.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7b0d92ac-f038-44f7-9bed-10643e5d0d61"}},"repository":{"url":"git+https://github.com/DanyPops/web-spider.git","type":"git","directory":"packages/pi-web-spider"},"_npmVersion":"12.0.2","description":"Pi extension for web_fetch, web_search, and live browser sessions: 7 search providers (Brave, Brave LLM Context, Tavily, Exa, Serper, SerpApi, You.com) with automatic fallback, robots.txt-respecting crawl, GitHub/Wikipedia/llms.txt-aware fetching, and a d","directories":{},"_nodeVersion":"24.19.0","dependencies":{"@danypops/web-spider":"^0.20.0","@danypops/vehicle-core":"^0.17.1","malevich-tui-components":"0.28.0","@danypops/vehicle-client":"^0.10.3","@danypops/vehicle-client-pi":"^0.43.0","@danypops/web-spider-daemon":"^0.25.0"},"_hasShrinkwrap":false,"devDependencies":{"jiti":"^2.0.0","vitest":"^4.1.10","bun-types":"latest","typescript":"^5.9.3","@types/node":"^22.19.19","@biomejs/biome":"^2.4.15","@earendil-works/pi-tui":"^0.84.0","@danypops/vehicle-conformance":"^0.4.0","@danypops/pi-extension-harness":"^0.4.0","@earendil-works/pi-coding-agent":"^0.80.10"},"peerDependencies":{"@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web-spider_0.24.11_1787062847790_0.0993503314083728","host":"s3://npm-registry-packages-npm-production"}},"0.24.12":{"name":"@danypops/pi-web-spider","version":"0.24.12","keywords":["pi-package","web-search","web-scraping","web-fetch","crawler","browser-automation","playwright","brave","tavily","exa"],"author":{"name":"Daniel Popsuevich"},"license":"MIT","_id":"@danypops/pi-web-spider@0.24.12","maintainers":[{"name":"danypops","email":"danypops@protonmail.com"}],"homepage":"https://pi.dev/packages/@danypops/pi-web-spider","bugs":{"url":"https://github.com/DanyPops/web-spider/issues"},"pi":{"image":"https://raw.githubusercontent.com/DanyPops/web-spider/main/packages/pi-web-spider/assets/architecture.png","extensions":["./src/index.ts"]},"dist":{"shasum":"effd712c76f9fb687641c3aa8444bc17f88a8e57","tarball":"https://registry.npmjs.org/@danypops/pi-web-spider/-/pi-web-spider-0.24.12.tgz","fileCount":17,"integrity":"sha512-gvdP9F+o8Ql3KvD6bAUqU2ujynhYP0jDkvtwJqkqCoBqI8aHlHC58pnhmtb99vmUK01G5dq6xf59YJ+IO5u9WA==","signatures":[{"sig":"MEUCIQChghZYTzUf1lP2swvkRekMKdGAqrrbRYZ+sJVQdymDBAIge4YKn9A2GW9sVWm1V+WargusxW6S0pjGUk694PwSPrE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@danypops%2fpi-web-spider@0.24.12","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":210388},"main":"./src/index.ts","type":"module","gitHead":"1057b6a617e82094d57e2e5a5790f2943a579bd2","scripts":{"lint":"biome lint src/","test":"vitest --run && bun test test/tool-shell-dual-channel.test.ts","check":"bun run lint && tsc --noEmit","test:unit":"vitest --run","test:conformance":"bun test test/tool-shell-dual-channel.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7b0d92ac-f038-44f7-9bed-10643e5d0d61"}},"repository":{"url":"git+https://github.com/DanyPops/web-spider.git","type":"git","directory":"packages/pi-web-spider"},"_npmVersion":"12.0.2","description":"Pi extension for web_fetch, web_search, and live browser sessions: 7 search providers (Brave, Brave LLM Context, Tavily, Exa, Serper, SerpApi, You.com) with automatic fallback, robots.txt-respecting crawl, GitHub/Wikipedia/llms.txt-aware fetching, and a d","directories":{},"_nodeVersion":"24.19.0","dependencies":{"@danypops/web-spider":"^0.20.0","@danypops/vehicle-core":"^0.17.1","malevich-tui-components":"0.28.0","@danypops/vehicle-client":"^0.10.3","@danypops/vehicle-client-pi":"^0.43.0","@danypops/web-spider-daemon":"^0.25.0"},"_hasShrinkwrap":false,"devDependencies":{"jiti":"^2.0.0","vitest":"^4.1.10","bun-types":"latest","typescript":"^5.9.3","@types/node":"^22.19.19","@biomejs/biome":"^2.4.15","@earendil-works/pi-tui":"^0.84.0","@danypops/vehicle-conformance":"^0.4.0","@danypops/pi-extension-harness":"^0.4.0","@earendil-works/pi-coding-agent":"^0.80.10"},"peerDependencies":{"@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web-spider_0.24.12_1787137794040_0.24296800571602684","host":"s3://npm-registry-packages-npm-production"}},"0.25.0":{"name":"@danypops/pi-web-spider","version":"0.25.0","keywords":["pi-package","web-search","web-scraping","web-fetch","crawler","browser-automation","playwright","brave","tavily","exa"],"author":{"name":"Daniel Popsuevich"},"license":"MIT","_id":"@danypops/pi-web-spider@0.25.0","maintainers":[{"name":"danypops","email":"danypops@protonmail.com"}],"homepage":"https://pi.dev/packages/@danypops/pi-web-spider","bugs":{"url":"https://github.com/DanyPops/web-spider/issues"},"pi":{"image":"https://raw.githubusercontent.com/DanyPops/web-spider/main/packages/pi-web-spider/assets/architecture.png","extensions":["./src/index.ts"]},"dist":{"shasum":"89ad23077f8c804912ef8da63cac6bc823a45f64","tarball":"https://registry.npmjs.org/@danypops/pi-web-spider/-/pi-web-spider-0.25.0.tgz","fileCount":17,"integrity":"sha512-QIHHV5dDOTS4/o7Jb/5MfuCgZJrALrmOpIoD3aDuWXxQE2VlgrmmGLTNb3wUdE8V7NNiEGheKHkzZh8oWjmRcA==","signatures":[{"sig":"MEUCICgiHr9LHXsIZGEwEQT/7/QJwdRVGGtJMPmLU+wFviWXAiEA3h1aLVIkxmRJkAp8t+AF54GoobM7osrekaN9eyRVBEU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@danypops%2fpi-web-spider@0.25.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":210431},"main":"./src/index.ts","type":"module","gitHead":"df6071a02db9f54be19218faa70a38cc782e9442","scripts":{"lint":"biome lint src/","test":"vitest --run && bun test test/tool-shell-dual-channel.test.ts","check":"bun run lint && tsc --noEmit","test:unit":"vitest --run","test:conformance":"bun test test/tool-shell-dual-channel.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7b0d92ac-f038-44f7-9bed-10643e5d0d61"}},"repository":{"url":"git+https://github.com/DanyPops/web-spider.git","type":"git","directory":"packages/pi-web-spider"},"_npmVersion":"12.0.2","description":"Pi extension for web_fetch, web_search, and live browser sessions: 7 search providers (Brave, Brave LLM Context, Tavily, Exa, Serper, SerpApi, You.com) with automatic fallback, robots.txt-respecting crawl, GitHub/Wikipedia/llms.txt-aware fetching, and a d","directories":{},"_nodeVersion":"24.19.0","dependencies":{"@danypops/web-spider":"^0.20.0","@danypops/vehicle-core":"^0.17.1","malevich-tui-components":"0.28.0","@danypops/vehicle-client":"^0.10.3","@danypops/web-spider-daemon":"^0.25.0"},"_hasShrinkwrap":false,"devDependencies":{"jiti":"^2.0.0","vitest":"^4.1.10","bun-types":"latest","typescript":"^5.9.3","@types/node":"^22.19.19","@biomejs/biome":"^2.4.15","@earendil-works/pi-tui":"^0.84.0","@danypops/vehicle-client-pi":"^0.44.0","@danypops/vehicle-conformance":"^0.4.0","@danypops/pi-extension-harness":"^0.4.0","@earendil-works/pi-coding-agent":"^0.80.10"},"peerDependencies":{"@earendil-works/pi-tui":"*","@danypops/vehicle-client-pi":"^0.44.0","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web-spider_0.25.0_1787234513005_0.4490520754712395","host":"s3://npm-registry-packages-npm-production"}},"0.25.1":{"name":"@danypops/pi-web-spider","version":"0.25.1","license":"MIT","author":{"name":"Daniel Popsuevich"},"homepage":"https://pi.dev/packages/@danypops/pi-web-spider","description":"Pi extension for web_fetch, web_search, and live browser sessions: 7 search providers (Brave, Brave LLM Context, Tavily, Exa, Serper, SerpApi, You.com) with automatic fallback, robots.txt-respecting crawl, GitHub/Wikipedia/llms.txt-aware fetching, and a d","keywords":["pi-package","web-search","web-scraping","web-fetch","crawler","browser-automation","playwright","brave","tavily","exa"],"type":"module","main":"./src/index.ts","pi":{"extensions":["./src/index.ts"],"image":"https://raw.githubusercontent.com/DanyPops/web-spider/main/packages/pi-web-spider/assets/architecture.png"},"dependencies":{"@danypops/vehicle-client":"^0.10.3","@danypops/vehicle-core":"^0.17.1","@danypops/web-spider":"^0.20.0","@danypops/web-spider-daemon":"^0.25.0","malevich-tui-components":"0.28.0"},"peerDependencies":{"@danypops/vehicle-client-pi":"^0.45.0","@earendil-works/pi-coding-agent":"*","@earendil-works/pi-tui":"*"},"scripts":{"test":"vitest --run && bun test test/tool-shell-dual-channel.test.ts","test:unit":"vitest --run","test:conformance":"bun test test/tool-shell-dual-channel.test.ts","lint":"biome lint src/","check":"bun run lint && tsc --noEmit"},"devDependencies":{"@biomejs/biome":"^2.4.15","@danypops/pi-extension-harness":"^0.4.0","@danypops/vehicle-client-pi":"^0.45.0","@danypops/vehicle-conformance":"^0.4.0","@earendil-works/pi-coding-agent":"^0.80.10","bun-types":"latest","@earendil-works/pi-tui":"^0.84.0","@types/node":"^22.19.19","jiti":"^2.0.0","typescript":"^5.9.3","vitest":"^4.1.10"},"repository":{"type":"git","url":"git+https://github.com/DanyPops/web-spider.git","directory":"packages/pi-web-spider"},"gitHead":"d0eccb75ae622c15836a0356cfb5d846ebe234cd","_id":"@danypops/pi-web-spider@0.25.1","bugs":{"url":"https://github.com/DanyPops/web-spider/issues"},"_nodeVersion":"24.19.0","_npmVersion":"12.0.2","dist":{"integrity":"sha512-t2/8XZi172RQhx5iAUGW+IX/TgPqzAsmFpVesdI1CndT4j5js1Cu6BSAsddQVrnK9vQsYrtv3wEWJpWLngrpeQ==","shasum":"198e25a49cfa0d10111e624e6abc4d3e43bcd954","tarball":"https://registry.npmjs.org/@danypops/pi-web-spider/-/pi-web-spider-0.25.1.tgz","fileCount":17,"unpackedSize":210431,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@danypops%2fpi-web-spider@0.25.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCZGk01s4y7QkHLhd9BKMhCBjYniYRFWWTeGAV2CelKkQIhANRY+XkJ/SpOFW2duUXkoVEacUQYZYAE4w/dDy2daVSo"}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7b0d92ac-f038-44f7-9bed-10643e5d0d61"}},"directories":{},"maintainers":[{"name":"danypops","email":"danypops@protonmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/pi-web-spider_0.25.1_1787245071953_0.43241207725248665"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-18T10:44:17.215Z","modified":"2026-08-20T16:57:52.479Z","0.10.4":"2026-07-18T10:44:17.459Z","0.10.8":"2026-07-18T13:24:04.271Z","0.11.0":"2026-07-21T20:44:02.242Z","0.12.0":"2026-07-23T09:59:20.364Z","0.12.1":"2026-07-23T10:40:38.571Z","0.12.2":"2026-07-26T21:17:21.479Z","0.13.0":"2026-07-29T15:23:20.718Z","0.14.0":"2026-08-02T19:54:41.168Z","0.15.0":"2026-08-02T21:26:49.345Z","0.15.1":"2026-08-03T06:40:32.582Z","0.16.0":"2026-08-03T08:06:46.483Z","0.17.0":"2026-08-03T09:18:32.615Z","0.17.1":"2026-08-03T20:29:54.940Z","0.17.2":"2026-08-04T07:10:58.642Z","0.18.0":"2026-08-05T13:01:11.498Z","0.19.0":"2026-08-05T13:15:17.504Z","0.19.1":"2026-08-05T14:58:27.721Z","0.19.2":"2026-08-05T15:58:20.553Z","0.19.3":"2026-08-06T09:17:43.104Z","0.19.4":"2026-08-06T13:23:26.928Z","0.19.5":"2026-08-08T19:46:24.657Z","0.19.6":"2026-08-09T15:33:48.429Z","0.20.0":"2026-08-09T19:49:25.695Z","0.20.1":"2026-08-10T12:52:57.008Z","0.21.0":"2026-08-10T13:20:37.537Z","0.21.1":"2026-08-10T13:40:57.918Z","0.21.2":"2026-08-10T13:56:11.447Z","0.21.3":"2026-08-10T14:15:29.772Z","0.21.4":"2026-08-10T14:56:06.353Z","0.21.5":"2026-08-10T16:36:43.928Z","0.22.0":"2026-08-11T08:25:50.744Z","0.23.0":"2026-08-11T10:37:37.446Z","0.24.0":"2026-08-11T11:49:13.493Z","0.24.1":"2026-08-11T15:10:30.019Z","0.24.2":"2026-08-11T15:29:00.541Z","0.24.3":"2026-08-11T16:20:25.681Z","0.24.4":"2026-08-11T17:25:04.713Z","0.24.5":"2026-08-12T15:53:51.619Z","0.24.6":"2026-08-13T10:34:24.865Z","0.24.7":"2026-08-14T10:53:10.005Z","0.24.8":"2026-08-14T14:25:38.673Z","0.24.9":"2026-08-17T10:45:34.705Z","0.24.10":"2026-08-18T09:49:28.441Z","0.24.11":"2026-08-18T14:20:47.917Z","0.24.12":"2026-08-19T11:09:54.185Z","0.25.0":"2026-08-20T14:01:53.179Z","0.25.1":"2026-08-20T16:57:52.170Z"},"bugs":{"url":"https://github.com/DanyPops/web-spider/issues"},"author":{"name":"Daniel Popsuevich"},"license":"MIT","homepage":"https://pi.dev/packages/@danypops/pi-web-spider","keywords":["pi-package","web-search","web-scraping","web-fetch","crawler","browser-automation","playwright","brave","tavily","exa"],"repository":{"type":"git","url":"git+https://github.com/DanyPops/web-spider.git","directory":"packages/pi-web-spider"},"description":"Pi extension for web_fetch, web_search, and live browser sessions: 7 search providers (Brave, Brave LLM Context, Tavily, Exa, Serper, SerpApi, You.com) with automatic fallback, robots.txt-respecting crawl, GitHub/Wikipedia/llms.txt-aware fetching, and a d","maintainers":[{"name":"danypops","email":"danypops@protonmail.com"}],"readme":"# @danypops/pi-web-spider\n\n[![npm version](https://img.shields.io/npm/v/@danypops/pi-web-spider.svg)](https://www.npmjs.com/package/@danypops/pi-web-spider)\n[![license: MIT](https://img.shields.io/npm/l/@danypops/pi-web-spider.svg)](https://github.com/DanyPops/web-spider/blob/main/LICENSE)\n\nWeb fetch, web search, and real browser sessions for [Pi](https://github.com/earendil-works/pi) — an agent-ready alternative to raw HTML scraping.\n\n## Why Web Spider\n\n- **Zero-config search** — works with no API key via a bounded keyless fallback (Firecrawl); configure any of 7 keyed providers (Brave, Brave LLM Context, Tavily, Exa, Serper, SerpApi, You.com) for higher limits, with automatic round-robin quota-spreading and fallback once you do.\n- **Honest PDF extraction** — bounded text-layer extraction with an automatic OCR fallback for scanned or garbled pages. A page that genuinely can't be recovered reports `contentOk: false`, never a false-success claim.\n- **Real structured extraction, not scraping** — GitHub (REST/GraphQL), MediaWiki (Wikipedia and any MediaWiki wiki), `llms.txt`, and `.md`-suffix docs (AWS-docs-style) are queried through their actual APIs.\n- **A disk-backed page cache that survives restarts** — every fetch is cached to SQLite (WAL) and searchable by full text, domain, tag, curated category, or date range, at zero network cost on a hit.\n- **Real interactive browser sessions** — `web_session` for pages a single fetch can't handle: type, click, select, wait on async results, read tables, screenshot, handle native dialogs, capture downloads, or open a headed browser so a human can complete CAPTCHA/login/consent before the agent resumes the same session.\n- **A standalone resource finder, not just a summarizer** — `web_quotes` returns ranked, verbatim quotes per URL with a copy-pasteable citation link, never an LLM-digested answer.\n\n```\npi install npm:@danypops/pi-web-spider\n```\n\n## Quick Start\n\n```js\n// Fetch a page as clean markdown\nweb_fetch({ url: \"https://example.com/docs/getting-started\" })\n\n// Crawl one hop of same-domain links\nweb_fetch({ url: \"https://example.com\", depth: 1 })\n\n// Search the web instead of fetching a URL\nweb_fetch({ searchQuery: \"readability extraction library comparison\" })\n\n// Query everything already cached, no network call\nweb_fetch({ query: \"readability extraction\", domain: \"github.com\" })\n\n// Open an interactive browser session for a page that needs real input\nweb_session({ operation: \"create\", name: \"research\" })\n\n// Deep research: find sources, then pull exact quotes from them\nweb_fetch({ searchQuery: \"precision time protocol clock synchronization\" })\nweb_quotes({ query: \"clock synchronization accuracy\", urls: [\"https://example.com/ptp-overview\"] })\n```\n\nSee [`docs/web-fetch-api.md`](https://github.com/DanyPops/web-spider/blob/main/docs/web-fetch-api.md) for the full parameter/output reference behind these examples.\n\n## Tools\n\n### `web_fetch`\nFetch a URL, crawl N hops deep, or search the web — one tool, three modes:\n\n- **Fetch**: `url` → clean markdown, lean outline, link list, BM25F highlights, or a semantic tree. JSON/text is normalized, while PDFs get bounded text-layer extraction with `pdfPageStart`/`pdfPageEnd` (1-based, inclusive, maximum 50 pages). Empty/garbled pages get an automatic, bounded OCR fallback; a page it still can't recover reports `contentOk: false` honestly rather than implying success.\n- **Crawl**: `url` + `depth` → BFS crawl same-domain links, `robots.txt`-respecting and per-domain throttled, with an explicit audited `ignoreRobots` opt-out for a human-directed one-off.\n- **Search**: `searchQuery` instead of `url` → real ranked results instead of a guessed slug. Routes across whichever of Brave, Brave LLM Context, Tavily, Exa, Serper, SerpApi, and You.com you've configured, round-robining for quota spread and falling back automatically on a rate limit or empty result.\n- **Cache query**: omit `url` entirely → full-text search or filter (domain, tag, curated category, date range) over every page already fetched, disk-backed, survives restarts, zero network cost.\n\nStructured extraction beats generic scraping where a real API exists: GitHub (REST/GraphQL), MediaWiki (Wikipedia and any MediaWiki wiki), `llms.txt`, and `.md`-suffix docs (AWS-docs-style) are recognized and queried directly.\n\n### `web_session`\nPersistent, named browser sessions for pages that need real interaction, not a single fetch: type into search boxes, select dropdowns, wait on async results, read a table. Supports navigate/click/hover/type/select/waitFor, structured extraction (`queryText`/`readTable`), accessibility-tree snapshots, screenshots, native dialog handling, file downloads, tab management, and console/network capture. Create with `headed: true` (and preferably `forceChromeChannel: true` for anti-bot-sensitive sites) to hand a visible browser to the user for CAPTCHA/login/consent, then resume agent actions on that same cookie-bearing session.\n\n### `web_category`\nYour own curated relevance categories over cached pages (e.g. \"Code\", \"PTP Protocol\") — distinct from a page's domain or its publisher's own tags. A page can belong to more than one category; assign, remove, rename, or list.\n\n### `web_quotes`\nA standalone resource finder: given a query and an explicit list of URLs (typically a prior `web_fetch(searchQuery=...)` call's own results), fetches each one and returns ranked, verbatim BM25F quotes per URL as resource cards — never an LLM-digested summary. Every quote carries a `citationUrl`, a real URL Text Fragment (`#:~:text=...`) that scrolls to and highlights the exact quoted passage in any modern browser. `maxQuotesPerUrl`/`maxQuotesTotal` bound the per-source and combined result; a URL that fails to fetch becomes its own `{ url, error }` card instead of failing the whole batch.\n\n## Architecture\n\n![Web Spider architecture: Pi → pi-web-spider thin client → authenticated loopback daemon → operation registry → web-spider core library (SQLite cache, HTTP client, PDF+OCR, search providers)](./assets/architecture.png)\n\nA supervised daemon (`@danypops/web-spider-daemon`) owns the SQLite page cache and every network fetch, crawl, throttle, and robots.txt check. This extension is a thin authenticated client — it never touches the network or a cache file directly, and auto-starts the daemon transparently on first use.\n\n```\npi web_fetch / web_session / web_category / web_quotes\n      ↓\nthis extension (thin client)\n      ↓\nauthenticated loopback daemon → web-spider-daemon\n      ↓\nSQLite (WAL) cache · fetch/PDF/crawl/search execution · optional Papyrus ingestion\n```\n\n## Configuring search\n\nSearch works without configuration through Firecrawl's bounded keyless fallback. For higher and more predictable limits, set a provider API key as an environment variable (`BRAVE_SEARCH_API_KEY`, `TAVILY_API_KEY`, `EXA_API_KEY`, `SERPER_API_KEY`, `SERPAPI_API_KEY`, `YOU_API_KEY`) or store it locally:\n\n```bash\nweb-spider search-key set brave\n```\n\nConfigured providers are tried before keyless Firecrawl; configuring more than one gets automatic round-robin quota spreading plus fallback — no code changes, just more keys.\n\n## Running as a service\n\nThe daemon auto-starts on first tool call. For persistence across reboots/logins (and to forward search keys into a systemd `--user` unit, which does not inherit the installing shell's environment):\n\n```bash\nweb-spider service install\n```\n\n## Learn more\n\n- [`docs/web-fetch-api.md`](https://github.com/DanyPops/web-spider/blob/main/docs/web-fetch-api.md) — full `web_fetch` parameter/output reference\n- [`docs/web-session-api.md`](https://github.com/DanyPops/web-spider/blob/main/docs/web-session-api.md) — full `web_session` reference\n- [`packages/web-spider-daemon/README.md`](https://github.com/DanyPops/web-spider/blob/main/packages/web-spider-daemon/README.md) — daemon architecture, CLI reference, service install\n\n## Security\n\nThis extension executes with full system access, like any Pi extension. Review the source before installing.\n","readmeFilename":"README.md"}