{"_id":"pi-webaio","_rev":"32-ca4a816a7c74e49094273b799939637b","name":"pi-webaio","dist-tags":{"latest":"1.0.8"},"versions":{"0.1.6":{"name":"pi-webaio","version":"0.1.6","keywords":["pi-package"],"license":"MIT","_id":"pi-webaio@0.1.6","maintainers":[{"name":"apmantza","email":"ap.mantza@gmail.com"}],"homepage":"https://github.com/apmantza/pi-webaio#readme","bugs":{"url":"https://github.com/apmantza/pi-webaio/issues"},"pi":{"extensions":["./index.ts"]},"dist":{"shasum":"420e6ef153c16b9468bfb945a4b669c08df9b19d","tarball":"https://registry.npmjs.org/pi-webaio/-/pi-webaio-0.1.6.tgz","fileCount":7,"integrity":"sha512-aPWx5rwaBrtE99HobQyiv2H2GxVpB/pT83J3CWKVmpbPhPrTkX5B0iwLqph5aZlGFjcsnh/4UifVsdxGcGOwRw==","signatures":[{"sig":"MEYCIQCl3xBburniMaxGO7xrCxLySx3Ss4ONT8t6UYzs2fOPVgIhAI52RgTvMuRpam/rZADBbLfz2KJLe85fyJoLEUmmc2DK","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":175706},"main":"index.ts","type":"module","gitHead":"ba0e811048b2afc2ff5b2eec3eb46c8b618ed55b","scripts":{"test":"node tests/unit.test.mjs","test:all":"node tests/unit.test.mjs && node tests/integration.test.mjs","test:integration":"node tests/integration.test.mjs"},"_npmUser":{"name":"apmantza","email":"ap.mantza@gmail.com"},"repository":{"url":"git+https://github.com/apmantza/pi-webaio.git","type":"git"},"_npmVersion":"11.12.1","description":"All-in-one web access tools for pi with search, fetch, crawl, extraction, and anti-bot TLS fingerprinting","directories":{},"_nodeVersion":"24.15.0","dependencies":{"wreq-js":"^2.3.0","defuddle":"^0.18.1","linkedom":"^0.18.12","pdf-parse":"^2.4.5","@mozilla/readability":"^0.6.0"},"_hasShrinkwrap":false,"devDependencies":{"typebox":"^1.1.34","typescript":"^6.0.3","@types/node":"^25.6.0"},"peerDependencies":{"typebox":"*","@mariozechner/pi-coding-agent":"*"},"optionalDependencies":{"playwright":"^1.55.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-webaio_0.1.6_1777735529377_0.24138347635587465","host":"s3://npm-registry-packages-npm-production"}},"0.1.7":{"name":"pi-webaio","version":"0.1.7","keywords":["pi","pi-extension","pi-package","web-scraping","web-fetch","crawler","markdown","anti-bot","tls-fingerprinting","pdf-extraction","duckduckgo","brave","llm","typescript"],"license":"MIT","_id":"pi-webaio@0.1.7","maintainers":[{"name":"apmantza","email":"ap.mantza@gmail.com"}],"homepage":"https://github.com/apmantza/pi-webaio#readme","bugs":{"url":"https://github.com/apmantza/pi-webaio/issues"},"pi":{"extensions":["./index.ts"]},"dist":{"shasum":"fba04e5bd187d5920935e6e39050e34e8e6ee472","tarball":"https://registry.npmjs.org/pi-webaio/-/pi-webaio-0.1.7.tgz","fileCount":7,"integrity":"sha512-8nsUNjZvLeS/PQm2w87Rzxurdt6OnVWgVLR0FpW1ih2TbEPOcPKGTnf3eCgMkmSZs5Ode1ZoXDbNc8I39lPBtQ==","signatures":[{"sig":"MEQCIHgXDorsQZd5HxNkteVuYHDfbH9VpcNjARNnFPvD+k3CAiB0gv6I7n/R2xMDFSQTW+qfrK1oqRdIvkg/eRfEu7FU9Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":176136},"main":"index.ts","type":"module","gitHead":"3c2d48741896eb97c71bb906f39867d19956a7f1","scripts":{"test":"node tests/unit.test.mjs","test:all":"node tests/unit.test.mjs && node tests/integration.test.mjs","test:integration":"node tests/integration.test.mjs"},"_npmUser":{"name":"apmantza","email":"ap.mantza@gmail.com"},"repository":{"url":"git+https://github.com/apmantza/pi-webaio.git","type":"git"},"_npmVersion":"11.12.1","description":"All-in-one web access tools for pi with search, fetch, crawl, extraction, and anti-bot TLS fingerprinting","directories":{},"_nodeVersion":"24.15.0","dependencies":{"wreq-js":"^2.3.0","defuddle":"^0.18.1","linkedom":"^0.18.12","pdf-parse":"^2.4.5","@mozilla/readability":"^0.6.0"},"_hasShrinkwrap":false,"devDependencies":{"typebox":"^1.1.34","typescript":"^6.0.3","@types/node":"^25.6.0"},"peerDependencies":{"typebox":"*","@mariozechner/pi-coding-agent":"*"},"optionalDependencies":{"playwright":"^1.55.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-webaio_0.1.7_1777735880774_0.9488671265738726","host":"s3://npm-registry-packages-npm-production"}},"0.1.8":{"name":"pi-webaio","version":"0.1.8","keywords":["pi","pi-extension","pi-package","web-scraping","web-fetch","crawler","markdown","anti-bot","tls-fingerprinting","pdf-extraction","duckduckgo","brave","llm","typescript"],"license":"MIT","_id":"pi-webaio@0.1.8","maintainers":[{"name":"apmantza","email":"ap.mantza@gmail.com"}],"homepage":"https://github.com/apmantza/pi-webaio#readme","bugs":{"url":"https://github.com/apmantza/pi-webaio/issues"},"pi":{"extensions":["./index.ts"]},"dist":{"shasum":"1eb79650c59fef9ea559107383c0345a090e9292","tarball":"https://registry.npmjs.org/pi-webaio/-/pi-webaio-0.1.8.tgz","fileCount":7,"integrity":"sha512-b6wvixjHKWWqq9xhw07bq26Em5n494lJWOf8sr0cTkYvYKRpWivnUOl/nUXrVrDqcc7nBd7fNkNYFvxVp1bO1A==","signatures":[{"sig":"MEUCIHcZvXQKJKN80pNKpRISPCIdXDXRnKYUsNpxVAjnwOFYAiEA+lIL01Y5B68oLDxOSxol2397MKeCqFPCEfHKilYJBWI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":176290},"main":"index.ts","type":"module","gitHead":"948196ea1823bbbbb2a61261ec74e68dcdb3985d","scripts":{"test":"node tests/unit.test.mjs","test:all":"node tests/unit.test.mjs && node tests/integration.test.mjs","test:integration":"node tests/integration.test.mjs"},"_npmUser":{"name":"apmantza","email":"ap.mantza@gmail.com"},"repository":{"url":"git+https://github.com/apmantza/pi-webaio.git","type":"git"},"_npmVersion":"11.12.1","description":"All-in-one web access tools for pi with search, fetch, crawl, extraction, and anti-bot TLS fingerprinting","directories":{},"_nodeVersion":"24.15.0","dependencies":{"wreq-js":"^2.3.0","defuddle":"^0.18.1","linkedom":"^0.18.12","pdf-parse":"^2.4.5","@mozilla/readability":"^0.6.0"},"_hasShrinkwrap":false,"devDependencies":{"typebox":"^1.1.34","typescript":"^6.0.3","@types/node":"^25.6.0"},"peerDependencies":{"typebox":"*","@mariozechner/pi-coding-agent":"*"},"optionalDependencies":{"playwright":"^1.55.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-webaio_0.1.8_1777737233850_0.1339807782765552","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"pi-webaio","version":"0.2.1","keywords":["pi","pi-extension","pi-package","web-scraping","web-fetch","crawler","markdown","anti-bot","tls-fingerprinting","pdf-extraction","duckduckgo","brave","google","google-search","ai-summarization","headless-chrome","cdp","llm","typescript"],"license":"MIT","_id":"pi-webaio@0.2.1","maintainers":[{"name":"apmantza","email":"ap.mantza@gmail.com"}],"homepage":"https://github.com/apmantza/pi-webaio#readme","bugs":{"url":"https://github.com/apmantza/pi-webaio/issues"},"pi":{"extensions":["./index.ts"]},"dist":{"shasum":"7a921d57974ef6054320585b4ff4afbfae81d662","tarball":"https://registry.npmjs.org/pi-webaio/-/pi-webaio-0.2.1.tgz","fileCount":24,"integrity":"sha512-kTfNQqncjX8RJwtSXGHz+VCZ0acl4DcFGMXk/TSX/0nnwCt0uvcfYJSzOa+vb3IsKkV0j4wslHX5+OiIAGNdkw==","signatures":[{"sig":"MEYCIQDnRzn8k5I8tgDu2+HaAnWh9uWqqeoWsLqRaU8lFG+M8QIhANtWJAd5KHEyyTM60p42t/JlAJNNFI5rp0+DZdYYDoxg","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":392006},"main":"index.ts","type":"module","gitHead":"b77219f4c471dc8e3e6bb68503d65f01015e0053","scripts":{"test":"node tests/unit.test.mjs","test:all":"node tests/unit.test.mjs && node tests/integration.test.mjs","test:integration":"node tests/integration.test.mjs"},"_npmUser":{"name":"apmantza","email":"ap.mantza@gmail.com"},"repository":{"url":"git+https://github.com/apmantza/pi-webaio.git","type":"git"},"_npmVersion":"11.7.0","description":"All-in-one web tools for pi with search (Google, Brave, DDG) and fetch with headless browser AI summarization","directories":{},"_nodeVersion":"24.12.0","dependencies":{"sharp":"^0.34.5","wreq-js":"^2.3.0","defuddle":"^0.18.1","linkedom":"^0.18.12","pdf-parse":"^2.4.5","@mozilla/readability":"^0.6.0"},"_hasShrinkwrap":false,"devDependencies":{"typebox":"^1.1.34","typescript":"^6.0.3","@types/node":"^25.6.0"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":"*"},"optionalDependencies":{"playwright":"^1.55.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-webaio_0.2.1_1778232417042_0.8315548606485874","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"pi-webaio","version":"0.3.1","keywords":["pi","pi-extension","pi-package","web-scraping","web-fetch","crawler","markdown","anti-bot","tls-fingerprinting","pdf-extraction","duckduckgo","brave","google","google-search","ai-summarization","headless-chrome","cdp","llm","typescript"],"license":"MIT","_id":"pi-webaio@0.3.1","maintainers":[{"name":"apmantza","email":"ap.mantza@gmail.com"}],"homepage":"https://github.com/apmantza/pi-webaio#readme","bugs":{"url":"https://github.com/apmantza/pi-webaio/issues"},"pi":{"extensions":["./index.ts"]},"dist":{"shasum":"1076a86bb0de0949b26241c9c7ed76a83c7a7949","tarball":"https://registry.npmjs.org/pi-webaio/-/pi-webaio-0.3.1.tgz","fileCount":36,"integrity":"sha512-FraVF/8AMVoA67drMmysLaQ0vujWVoXvlO7Fo8y6VKQWPj8DZ06etCUZFdacaYzt8eI7pQHMLyD5l6/bEdR6zw==","signatures":[{"sig":"MEUCIESAA1RpSgjwOQHE5Cg44gCAb/LY1zogGQUOrMdEH86JAiEAt4HGa/Zd0+hwC5w2iM8Hd0tHZGZ8rllY4p12nhifeVQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":496165},"main":"index.ts","type":"module","gitHead":"5708cdf20d679209965bb930aee96d400c456de5","scripts":{"test":"node tests/unit.test.mjs","test:all":"node tests/unit.test.mjs && node tests/integration.test.mjs","test:integration":"node tests/integration.test.mjs"},"_npmUser":{"name":"apmantza","email":"ap.mantza@gmail.com"},"repository":{"url":"git+https://github.com/apmantza/pi-webaio.git","type":"git"},"_npmVersion":"11.7.0","description":"All-in-one web tools for pi with search (Google, Brave, DDG) and fetch with headless browser AI summarization","directories":{},"_nodeVersion":"24.12.0","dependencies":{"sharp":"^0.34.5","wreq-js":"^2.3.0","defuddle":"^0.18.1","linkedom":"^0.18.12","pdf-parse":"^2.4.5","@mozilla/readability":"^0.6.0"},"_hasShrinkwrap":false,"devDependencies":{"typebox":"^1.1.34","typescript":"^6.0.3","@types/node":"^25.6.0"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":"*"},"optionalDependencies":{"playwright":"^1.55.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-webaio_0.3.1_1778247179783_0.2115498390294397","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"pi-webaio","version":"0.3.2","keywords":["pi","pi-extension","pi-package","web-scraping","web-fetch","crawler","markdown","anti-bot","tls-fingerprinting","pdf-extraction","duckduckgo","brave","google","google-search","ai-summarization","headless-chrome","cdp","llm","typescript"],"license":"MIT","_id":"pi-webaio@0.3.2","maintainers":[{"name":"apmantza","email":"ap.mantza@gmail.com"}],"homepage":"https://github.com/apmantza/pi-webaio#readme","bugs":{"url":"https://github.com/apmantza/pi-webaio/issues"},"pi":{"extensions":["./index.ts"]},"dist":{"shasum":"0122cd9fac0bac31a2396a5f03ac9bb365f48b73","tarball":"https://registry.npmjs.org/pi-webaio/-/pi-webaio-0.3.2.tgz","fileCount":41,"integrity":"sha512-RSAWgQILU+EL75mw5VEsCN/byPX3M3PdwGTB6GG6UcEgUI+X5Fg+3TMRgVAQaOhrn5UkgYQCgaGPrM6fAwyLBQ==","signatures":[{"sig":"MEYCIQDz60R2FxuT/IwCKORchxeWPMHufov/NBkMR0mrKUbAewIhAOV0GuDCAv6gqXVLUZ/d7s+4a7hnLAqE9e+la8HKZq3b","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":545124},"main":"index.ts","type":"module","gitHead":"c35aee76f3d4a06f8403954759ecc8febc77588b","scripts":{"test":"node tests/unit.test.mjs","test:all":"node tests/unit.test.mjs && node tests/integration.test.mjs","test:integration":"node tests/integration.test.mjs"},"_npmUser":{"name":"apmantza","email":"ap.mantza@gmail.com"},"repository":{"url":"git+https://github.com/apmantza/pi-webaio.git","type":"git"},"_npmVersion":"11.7.0","description":"All-in-one web tools for pi with search (Google, Brave, DDG) and fetch with headless browser AI summarization","directories":{},"_nodeVersion":"24.12.0","dependencies":{"sharp":"^0.34.5","wreq-js":"^2.3.0","defuddle":"^0.18.1","linkedom":"^0.18.12","pdf-parse":"^2.4.5","@mozilla/readability":"^0.6.0"},"_hasShrinkwrap":false,"devDependencies":{"typebox":"^1.1.34","typescript":"^6.0.3","@types/node":"^25.6.0"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":"*"},"optionalDependencies":{"playwright":"^1.55.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-webaio_0.3.2_1778358030425_0.5571251551405629","host":"s3://npm-registry-packages-npm-production"}},"0.3.3":{"name":"pi-webaio","version":"0.3.3","keywords":["pi","pi-extension","pi-package","web-scraping","web-fetch","crawler","markdown","anti-bot","tls-fingerprinting","pdf-extraction","duckduckgo","brave","google","google-search","ai-summarization","headless-chrome","cdp","llm","typescript"],"license":"MIT","_id":"pi-webaio@0.3.3","maintainers":[{"name":"apmantza","email":"ap.mantza@gmail.com"}],"homepage":"https://github.com/apmantza/pi-webaio#readme","bugs":{"url":"https://github.com/apmantza/pi-webaio/issues"},"pi":{"extensions":["./index.ts"]},"dist":{"shasum":"f7ba38c645d2b50195ca5637ea2c8e20ba5ade94","tarball":"https://registry.npmjs.org/pi-webaio/-/pi-webaio-0.3.3.tgz","fileCount":42,"integrity":"sha512-r1UI7uwGE1IignmgxwuarptNCZ+MKmZ8i1D2ubteidUti/ZgSlpx7LduirSveN1KF2FqpkUHWQ3tBkVp7e+ujg==","signatures":[{"sig":"MEUCIQDJpdksYJ7sCeWK4ZSZJe990az605McgPktprZVBDVWgwIgMTyAA/M3ofTbZ4OSWN+hRhrfwArwavKS2y2LHPvn+JY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":579924},"main":"index.ts","type":"module","gitHead":"232dedeb13870a4b9ba4a17a42525131da94673f","scripts":{"test":"node tests/unit.test.mjs","test:all":"node tests/unit.test.mjs && node tests/integration.test.mjs","test:integration":"node tests/integration.test.mjs"},"_npmUser":{"name":"apmantza","email":"ap.mantza@gmail.com"},"repository":{"url":"git+https://github.com/apmantza/pi-webaio.git","type":"git"},"_npmVersion":"11.7.0","description":"All-in-one web tools for pi with search (Google, Brave, DDG) and fetch with headless browser AI summarization","directories":{},"_nodeVersion":"24.12.0","dependencies":{"sharp":"^0.34.5","wreq-js":"^2.3.0","defuddle":"^0.18.1","linkedom":"^0.18.12","pdf-parse":"^2.4.5","@mozilla/readability":"^0.6.0","youtube-transcript-plus":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"typebox":"^1.1.34","typescript":"^6.0.3","@types/node":"^25.6.0"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":"*"},"optionalDependencies":{"playwright":"^1.55.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-webaio_0.3.3_1778602745215_0.9006172622764703","host":"s3://npm-registry-packages-npm-production"}},"0.3.4":{"name":"pi-webaio","version":"0.3.4","keywords":["pi","pi-extension","pi-package","web-scraping","web-fetch","crawler","markdown","anti-bot","tls-fingerprinting","pdf-extraction","duckduckgo","brave","google","google-search","ai-summarization","headless-chrome","cdp","llm","typescript"],"license":"MIT","_id":"pi-webaio@0.3.4","maintainers":[{"name":"apmantza","email":"ap.mantza@gmail.com"}],"homepage":"https://github.com/apmantza/pi-webaio#readme","bugs":{"url":"https://github.com/apmantza/pi-webaio/issues"},"pi":{"extensions":["./index.ts"]},"dist":{"shasum":"afa70a3df81dd2c73eeec857c69ccb4e76f8d78e","tarball":"https://registry.npmjs.org/pi-webaio/-/pi-webaio-0.3.4.tgz","fileCount":38,"integrity":"sha512-YSGuu9lz/Bk+6gN/VlIljdefkOt1AtUMb4nnviGXhrmT0U0Lqe8H9gEYm7yzDJcwoax/xoj2icirv8LxUt8tTA==","signatures":[{"sig":"MEUCIFLSbQ2sFSNGdaxcMhwdte6+avbCd48hMwl6fFcNx3U5AiEAwHoWXNb2sxj+HeVWB8HFefVYqgCmG9XQmPo8Jf2XzyA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":573525},"main":"index.ts","type":"module","gitHead":"0acfb470fc95ab751b77291c1624edbec81cbdfe","scripts":{"test":"node tests/unit.test.mjs","test:all":"node tests/unit.test.mjs && node tests/integration.test.mjs","test:integration":"node tests/integration.test.mjs"},"_npmUser":{"name":"apmantza","email":"ap.mantza@gmail.com"},"repository":{"url":"git+https://github.com/apmantza/pi-webaio.git","type":"git"},"_npmVersion":"11.7.0","description":"All-in-one web tools for pi with search (Google, Brave, DDG) and fetch with headless browser AI summarization","directories":{},"_nodeVersion":"24.12.0","dependencies":{"sharp":"^0.34.5","wreq-js":"^2.3.0","defuddle":"^0.18.1","linkedom":"^0.18.12","pdf-parse":"^2.4.5","@mozilla/readability":"^0.6.0","youtube-transcript-plus":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"typebox":"^1.1.34","typescript":"^6.0.3","@types/node":"^25.6.0"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":"*"},"optionalDependencies":{"playwright":"^1.55.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-webaio_0.3.4_1779086451491_0.07896895150186722","host":"s3://npm-registry-packages-npm-production"}},"0.3.5":{"name":"pi-webaio","version":"0.3.5","keywords":["pi","pi-extension","pi-package","web-scraping","web-fetch","crawler","markdown","anti-bot","tls-fingerprinting","pdf-extraction","duckduckgo","brave","google","google-search","ai-summarization","headless-chrome","cdp","llm","typescript"],"license":"MIT","_id":"pi-webaio@0.3.5","maintainers":[{"name":"apmantza","email":"ap.mantza@gmail.com"}],"homepage":"https://github.com/apmantza/pi-webaio#readme","bugs":{"url":"https://github.com/apmantza/pi-webaio/issues"},"pi":{"extensions":["./index.ts"]},"dist":{"shasum":"beac0015ae149f47155dd6f07fb595bdbe4958d6","tarball":"https://registry.npmjs.org/pi-webaio/-/pi-webaio-0.3.5.tgz","fileCount":38,"integrity":"sha512-4igdcddDjON2SvJ3NW+LVbd75kskj7oOuMPOZ3nZIh5kPUEpyPBUQrlTx1tcgdjyZmVOy36+N3jbz/QL4XN5kw==","signatures":[{"sig":"MEYCIQDYRvp8KOFc+FK0xFtwUC1jr8MqFPQVXoDLUnZ/zCiBlQIhAJogAvQd0Kug/Lj0TE9FNoDfsZeVSplU48u+ZUpQ910w","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":574605},"main":"index.ts","type":"module","gitHead":"ed3adecf5577e4adf2f80443f1b348820d833d16","scripts":{"test":"node tests/unit.test.mjs","test:all":"node tests/unit.test.mjs && node tests/integration.test.mjs","test:integration":"node tests/integration.test.mjs"},"_npmUser":{"name":"apmantza","email":"ap.mantza@gmail.com"},"repository":{"url":"git+https://github.com/apmantza/pi-webaio.git","type":"git"},"_npmVersion":"11.7.0","description":"All-in-one web tools for pi with search (Google, Brave, DDG) and fetch with headless browser AI summarization","directories":{},"_nodeVersion":"24.12.0","dependencies":{"sharp":"^0.34.5","wreq-js":"^2.3.0","defuddle":"^0.18.1","linkedom":"^0.18.12","pdf-parse":"^2.4.5","@mozilla/readability":"^0.6.0","youtube-transcript-plus":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"typebox":"^1.1.34","typescript":"^6.0.3","@types/node":"^25.6.0"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":"*"},"optionalDependencies":{"playwright":"^1.55.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-webaio_0.3.5_1779403404132_0.5422269755788585","host":"s3://npm-registry-packages-npm-production"}},"0.3.7":{"name":"pi-webaio","version":"0.3.7","keywords":["pi","pi-extension","pi-package","web-scraping","web-fetch","crawler","markdown","anti-bot","tls-fingerprinting","pdf-extraction","duckduckgo","brave","google","google-search","ai-summarization","headless-chrome","cdp","llm","typescript"],"license":"MIT","_id":"pi-webaio@0.3.7","maintainers":[{"name":"apmantza","email":"ap.mantza@gmail.com"}],"homepage":"https://github.com/apmantza/pi-webaio#readme","bugs":{"url":"https://github.com/apmantza/pi-webaio/issues"},"pi":{"extensions":["./index.ts"]},"dist":{"shasum":"3ab6941e6279aaa9909804f5b34c12d34f4d2a5a","tarball":"https://registry.npmjs.org/pi-webaio/-/pi-webaio-0.3.7.tgz","fileCount":43,"integrity":"sha512-LjWRf9BI7PUqBdB0CPcleiBN6/+KrEwz9Y0EpL6nXknncImBYvtt5yHvhxX8C23WSnFw4R9NMh/H8bDtzZ2qZQ==","signatures":[{"sig":"MEYCIQDztAfyfOQc8OPGZvvi3vvLlVgxX9zuYQ1/5YAqyoZH/wIhAIBlZzq+dFNqkyHJA2NirXroq762Jf7D/zxha3cTGQ/s","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":610387},"main":"index.ts","type":"module","gitHead":"37b8ab00321ac9d20ea2cd4f19aa80023b854051","scripts":{"test":"node tests/unit.test.mjs","test:all":"node tests/unit.test.mjs && node tests/integration.test.mjs","test:integration":"node tests/integration.test.mjs"},"_npmUser":{"name":"apmantza","email":"ap.mantza@gmail.com"},"repository":{"url":"git+https://github.com/apmantza/pi-webaio.git","type":"git"},"_npmVersion":"11.7.0","description":"All-in-one web tools for pi with search (Google, Brave, DDG) and fetch with headless browser AI summarization","directories":{},"_nodeVersion":"24.12.0","dependencies":{"sharp":"^0.34.5","wreq-js":"^2.3.0","defuddle":"^0.18.1","linkedom":"^0.18.12","pdf-parse":"^2.4.5","@mozilla/readability":"^0.6.0","youtube-transcript-plus":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"typebox":"^1.1.34","typescript":"^6.0.3","@types/node":"^25.6.0"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":"*"},"optionalDependencies":{"playwright":"^1.55.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-webaio_0.3.7_1779453249833_0.26539092592677416","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"pi-webaio","version":"0.4.0","keywords":["pi","pi-extension","pi-package","web-scraping","web-fetch","crawler","markdown","anti-bot","tls-fingerprinting","pdf-extraction","duckduckgo","brave","google","google-search","ai-summarization","headless-chrome","cdp","llm","typescript"],"license":"MIT","_id":"pi-webaio@0.4.0","maintainers":[{"name":"apmantza","email":"ap.mantza@gmail.com"}],"homepage":"https://github.com/apmantza/pi-webaio#readme","bugs":{"url":"https://github.com/apmantza/pi-webaio/issues"},"pi":{"extensions":["./index.ts"]},"dist":{"shasum":"914c4ec9e1001ed3ae02331f1ee1ef5833c8ca3a","tarball":"https://registry.npmjs.org/pi-webaio/-/pi-webaio-0.4.0.tgz","fileCount":50,"integrity":"sha512-HWguWl1aKIPchgGjvRkrIPiL6avH02YRLk2mC5eTaaPFHnx2XJ3QQ/v4GkdTwe+mnWYkEPPGOBM350F+fhrM0w==","signatures":[{"sig":"MEUCIQCeD6wnF1sxrEK1mejhXyO6NCkgJyzDeFxrm971LHVXaQIgf4SVidkXojnCzAiWf1sTW/Wa+Gh68Qg7T6z6wqYfTA0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":651255},"main":"index.ts","type":"module","gitHead":"fa6506626950695d5d65c1e885baafbd9139f2f3","scripts":{"test":"node tests/unit.test.mjs","test:all":"node tests/unit.test.mjs && node tests/integration.test.mjs","test:integration":"node tests/integration.test.mjs"},"_npmUser":{"name":"apmantza","email":"ap.mantza@gmail.com"},"repository":{"url":"git+https://github.com/apmantza/pi-webaio.git","type":"git"},"_npmVersion":"11.7.0","description":"All-in-one web tools for pi with search (Google, Brave, DDG) and fetch with headless browser AI summarization","directories":{},"_nodeVersion":"24.12.0","dependencies":{"sharp":"^0.34.5","wreq-js":"^2.3.0","defuddle":"^0.18.1","linkedom":"^0.18.12","pdf-parse":"^2.4.5","@mozilla/readability":"^0.6.0","youtube-transcript-plus":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"typebox":"^1.1.34","typescript":"^6.0.3","@types/node":"^25.6.0"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":"*"},"optionalDependencies":{"playwright":"^1.55.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-webaio_0.4.0_1779556344703_0.9333961051708108","host":"s3://npm-registry-packages-npm-production"}},"0.4.2":{"name":"pi-webaio","version":"0.4.2","keywords":["pi","pi-extension","pi-package","web-scraping","web-fetch","crawler","markdown","anti-bot","tls-fingerprinting","pdf-extraction","duckduckgo","brave","google","google-search","ai-summarization","headless-chrome","cdp","llm","typescript"],"license":"MIT","_id":"pi-webaio@0.4.2","maintainers":[{"name":"apmantza","email":"ap.mantza@gmail.com"}],"homepage":"https://github.com/apmantza/pi-webaio#readme","bugs":{"url":"https://github.com/apmantza/pi-webaio/issues"},"pi":{"extensions":["./index.ts"]},"dist":{"shasum":"3e6910c9369f5a4bea165c5c23e6837ff7603a3b","tarball":"https://registry.npmjs.org/pi-webaio/-/pi-webaio-0.4.2.tgz","fileCount":77,"integrity":"sha512-5dMwRWINUssa0OaYMpxFO2lm2yX7NNq6HDbzf0NaqD7Ik3d/NZ/aU70+YkeaQOYSNdchlnPaUMIjvabpMfkd6Q==","signatures":[{"sig":"MEUCIG4uGVAEMGzhFpSXC7Mdhbzlcprv8oDVw1y2P+G3x+qcAiEA+TupP6rdxkAf99ep70RDFYQVutHqKFYL2L2G34sEpUU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":849615},"main":"index.ts","type":"module","gitHead":"0848ebb58c2f75dc9791e428073c262142d1b43e","scripts":{"test":"npx tsx tests/unit.test.mjs","test:all":"npx tsx tests/unit.test.mjs && npx tsx tests/new-features.test.mjs && npx tsx tests/paywall.test.mjs && npx tsx tests/github-check.test.mjs && npx tsx tests/integration.test.mjs","test:new":"npx tsx tests/new-features.test.mjs","test:check":"npx tsx tests/github-check.test.mjs","test:paywall":"npx tsx tests/paywall.test.mjs","test:integration":"npx tsx tests/integration.test.mjs"},"_npmUser":{"name":"apmantza","email":"ap.mantza@gmail.com"},"repository":{"url":"git+https://github.com/apmantza/pi-webaio.git","type":"git"},"_npmVersion":"11.7.0","description":"All-in-one web tools for pi with search (Google, Brave, DDG) and fetch with headless browser AI summarization","directories":{},"_nodeVersion":"24.12.0","dependencies":{"sharp":"^0.34.5","temml":"^0.13.1","wreq-js":"^2.3.0","defuddle":"^0.18.1","linkedom":"^0.18.12","turndown":"^7.2.0","pdf-parse":"^2.4.5","mathml-to-latex":"^1.5.0","@mozilla/readability":"^0.6.0","@earendil-works/pi-tui":"^0.74.2","youtube-transcript-plus":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"typebox":"^1.1.34","typescript":"^6.0.3","@types/node":"^25.6.0"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":"*"},"optionalDependencies":{"playwright":"^1.55.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-webaio_0.4.2_1780421618567_0.8625955288753322","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"pi-webaio","version":"0.5.0","keywords":["pi","pi-extension","pi-package","web-scraping","web-fetch","crawler","markdown","anti-bot","tls-fingerprinting","pdf-extraction","duckduckgo","brave","google","google-search","ai-summarization","headless-chrome","cdp","llm","typescript"],"license":"MIT","_id":"pi-webaio@0.5.0","maintainers":[{"name":"apmantza","email":"ap.mantza@gmail.com"}],"homepage":"https://github.com/apmantza/pi-webaio#readme","bugs":{"url":"https://github.com/apmantza/pi-webaio/issues"},"pi":{"extensions":["./dist/index.js"]},"dist":{"shasum":"c7d3d2240bf0e88ffdc6b03059a15bc096e89452","tarball":"https://registry.npmjs.org/pi-webaio/-/pi-webaio-0.5.0.tgz","fileCount":69,"integrity":"sha512-JsUzP3HWB4dOKTYWRmrRcnNs+W/Tq6UR2u5lQYm/fPLgwTbdfM+EEYeIElqdwmdmSoNlixWR31Xa8dpgbKqVFg==","signatures":[{"sig":"MEYCIQCvGBNVtG0ysVkFgzQuVavL6zLgGoYAKpO3DgCbXi791AIhAM0MVtczYTUmrbOmHOSefuCn59zU93gf68k9KxyIAJd8","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":673763},"main":"./dist/index.js","type":"module","gitHead":"a30121e441b1f4ae3f588b0f239f4d0fbf88697b","scripts":{"lint":"tsc --project tsconfig.json","test":"npx tsx tests/unit.test.mjs","build":"tsc --project tsconfig.dist.json","watch":"tsc --watch","prepare":"npm run build:dist","test:all":"npx tsx tests/unit.test.mjs && npx tsx tests/new-features.test.mjs && npx tsx tests/paywall.test.mjs && npx tsx tests/github-check.test.mjs && npx tsx tests/render-result.test.mjs && npx tsx tests/fetch-error.test.mjs && npx tsx tests/fetch-progress.test.mjs && npx tsx tests/hardening.test.mjs && npx tsx tests/format.test.mjs && npx tsx tests/webfetch-summary.test.mjs && npx tsx tests/chunker.test.mjs && npx tsx tests/integration.test.mjs","test:new":"npx tsx tests/new-features.test.mjs","build:dist":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\" && tsc --project tsconfig.dist.json","test:check":"npx tsx tests/github-check.test.mjs","test:format":"npx tsx tests/format.test.mjs","test:render":"npx tsx tests/render-result.test.mjs","test:chunker":"npx tsx tests/chunker.test.mjs","test:paywall":"npx tsx tests/paywall.test.mjs","check:lockfile":"node scripts/check-lockfile-sync.mjs","test:hardening":"npx tsx tests/hardening.test.mjs","test:fetcherror":"npx tsx tests/fetch-error.test.mjs","test:integration":"npx tsx tests/integration.test.mjs","test:fetchprogress":"npx tsx tests/fetch-progress.test.mjs","test:webfetch-summary":"npx tsx tests/webfetch-summary.test.mjs"},"_npmUser":{"name":"apmantza","email":"ap.mantza@gmail.com"},"repository":{"url":"git+https://github.com/apmantza/pi-webaio.git","type":"git"},"_npmVersion":"11.7.0","description":"All-in-one web tools for pi with search (Google, Brave, DDG) and fetch with headless browser AI summarization","directories":{},"_nodeVersion":"24.12.0","dependencies":{"sharp":"^0.34.5","temml":"^0.13.1","wreq-js":"^2.3.0","defuddle":"^0.18.1","linkedom":"^0.18.12","turndown":"^7.2.0","pdf-parse":"^2.4.5","mathml-to-latex":"^1.5.0","@mozilla/readability":"^0.6.0","@earendil-works/pi-tui":"^0.74.2","youtube-transcript-plus":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"typebox":"^1.1.34","typescript":"^6.0.3","@types/node":"^25.6.0"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":"*"},"optionalDependencies":{"playwright":"^1.55.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-webaio_0.5.0_1781462139847_0.2357823495614655","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"pi-webaio","version":"0.6.0","keywords":["pi","pi-extension","pi-package","web-scraping","web-fetch","crawler","markdown","anti-bot","tls-fingerprinting","pdf-extraction","duckduckgo","brave","google","google-search","ai-summarization","headless-chrome","cdp","llm","typescript"],"license":"MIT","_id":"pi-webaio@0.6.0","maintainers":[{"name":"apmantza","email":"ap.mantza@gmail.com"}],"homepage":"https://github.com/apmantza/pi-webaio#readme","bugs":{"url":"https://github.com/apmantza/pi-webaio/issues"},"pi":{"extensions":["./dist/index.js"]},"dist":{"shasum":"cb180231565057c270a61fb36b3062955ef842f2","tarball":"https://registry.npmjs.org/pi-webaio/-/pi-webaio-0.6.0.tgz","fileCount":70,"integrity":"sha512-q4UzZ5klUfFhVgMgNfYidrncpx8zj2E4mst8q4h+Y9ZCOiqR+QZbvJw0qYg6PEOVPJwZdTrseuoJCCagwz2ccg==","signatures":[{"sig":"MEUCIBlVoQ1uBgzDYIihrHp04PppJExNOhKVyFP3Ep/VOCgbAiEAtYR5hHj8/ORuIC4KEOMwizhW9sQ6uI2NibfQR9Pppek=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":746040},"main":"./dist/index.js","type":"module","gitHead":"451913c59b63c94f17d0284459c58ae7a536432c","scripts":{"lint":"tsc --project tsconfig.json","test":"node --experimental-strip-types --test tests/unit.test.mjs","build":"tsc --project tsconfig.dist.json","watch":"tsc --watch","prepare":"npm run build:dist","test:all":"node --experimental-strip-types --test tests/unit.test.mjs tests/new-features.test.mjs tests/paywall.test.mjs tests/github-check.test.mjs tests/reddit-block.test.mjs tests/github-map.test.mjs tests/render-result.test.mjs tests/fetch-error.test.mjs tests/fetch-progress.test.mjs tests/hardening.test.mjs tests/format.test.mjs tests/webfetch-summary.test.mjs tests/chunker.test.mjs tests/integration.test.mjs","test:new":"node --experimental-strip-types --test tests/new-features.test.mjs","build:dist":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\" && tsc --project tsconfig.dist.json","test:check":"node --experimental-strip-types --test tests/github-check.test.mjs","test:format":"node --experimental-strip-types --test tests/format.test.mjs","test:reddit":"node --experimental-strip-types --test tests/reddit-block.test.mjs","test:render":"node --experimental-strip-types --test tests/render-result.test.mjs","test:chunker":"node --experimental-strip-types --test tests/chunker.test.mjs","test:paywall":"node --experimental-strip-types --test tests/paywall.test.mjs","check:lockfile":"node scripts/check-lockfile-sync.mjs","test:hardening":"node --experimental-strip-types --test tests/hardening.test.mjs","test:fetcherror":"node --experimental-strip-types --test tests/fetch-error.test.mjs","test:github-map":"node --experimental-strip-types --test tests/github-map.test.mjs","test:integration":"node --experimental-strip-types --test tests/integration.test.mjs","test:fetchprogress":"node --experimental-strip-types --test tests/fetch-progress.test.mjs","test:webfetch-summary":"node --experimental-strip-types --test tests/webfetch-summary.test.mjs"},"_npmUser":{"name":"apmantza","email":"ap.mantza@gmail.com"},"repository":{"url":"git+https://github.com/apmantza/pi-webaio.git","type":"git"},"_npmVersion":"11.7.0","description":"All-in-one web tools for pi with search (Google, Brave, DDG) and fetch with headless browser AI summarization","directories":{},"_nodeVersion":"24.12.0","dependencies":{"sharp":"^0.34.5","temml":"^0.13.1","typebox":"^1.1.34","wreq-js":"^2.3.0","defuddle":"^0.18.1","linkedom":"^0.18.12","turndown":"^7.2.0","pdf-parse":"^2.4.5","mathml-to-latex":"^1.5.0","@mozilla/readability":"^0.6.0","@earendil-works/pi-tui":"^0.79.0","youtube-transcript-plus":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^25.6.0"},"peerDependencies":{"@earendil-works/pi-coding-agent":"^0.79.0"},"optionalDependencies":{"playwright":"^1.55.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-webaio_0.6.0_1781885145077_0.06446447251986598","host":"s3://npm-registry-packages-npm-production"}},"0.6.1":{"name":"pi-webaio","version":"0.6.1","keywords":["pi","pi-extension","pi-package","web-scraping","web-fetch","crawler","markdown","anti-bot","tls-fingerprinting","pdf-extraction","duckduckgo","brave","google","google-search","ai-summarization","headless-chrome","cdp","llm","typescript"],"license":"MIT","_id":"pi-webaio@0.6.1","maintainers":[{"name":"apmantza","email":"ap.mantza@gmail.com"}],"homepage":"https://github.com/apmantza/pi-webaio#readme","bugs":{"url":"https://github.com/apmantza/pi-webaio/issues"},"pi":{"extensions":["./dist/index.js"]},"dist":{"shasum":"2b7d5de8c3eefda78abe2de3485f6f6df902b2a2","tarball":"https://registry.npmjs.org/pi-webaio/-/pi-webaio-0.6.1.tgz","fileCount":70,"integrity":"sha512-nkNAO3AR1XHlzjtm8IzFC1PBSENZo0p2pd9i9qewg3U293/Z2UpdWo5Wx2q6dDEU5CE4OyagqBe10OOGiNk9+Q==","signatures":[{"sig":"MEYCIQCX1rm7lilP/vrSZvhRxcXQdZcusouiKHg5ZLkCNV7rxAIhAMuWbuMe/g+PjW5PHd8+lgmitQ6Cx8OLLMk7UjsgmFkY","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":747497},"main":"./dist/index.js","type":"module","gitHead":"2ff014820c7b784d10b9f08569a7776612d3a1bd","scripts":{"lint":"tsc --project tsconfig.json","test":"node --experimental-strip-types --test tests/unit.test.mjs","build":"tsc --project tsconfig.dist.json","watch":"tsc --watch","prepare":"npm run build:dist","test:all":"node --experimental-strip-types --test tests/unit.test.mjs tests/new-features.test.mjs tests/paywall.test.mjs tests/github-check.test.mjs tests/reddit-block.test.mjs tests/github-map.test.mjs tests/render-result.test.mjs tests/fetch-error.test.mjs tests/fetch-progress.test.mjs tests/hardening.test.mjs tests/format.test.mjs tests/webfetch-summary.test.mjs tests/chunker.test.mjs tests/integration.test.mjs","test:new":"node --experimental-strip-types --test tests/new-features.test.mjs","build:dist":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\" && tsc --project tsconfig.dist.json","test:check":"node --experimental-strip-types --test tests/github-check.test.mjs","test:format":"node --experimental-strip-types --test tests/format.test.mjs","test:reddit":"node --experimental-strip-types --test tests/reddit-block.test.mjs","test:render":"node --experimental-strip-types --test tests/render-result.test.mjs","test:chunker":"node --experimental-strip-types --test tests/chunker.test.mjs","test:paywall":"node --experimental-strip-types --test tests/paywall.test.mjs","check:lockfile":"node scripts/check-lockfile-sync.mjs","test:hardening":"node --experimental-strip-types --test tests/hardening.test.mjs","changelog:check":"node scripts/changelog-release.mjs --check","test:fetcherror":"node --experimental-strip-types --test tests/fetch-error.test.mjs","test:github-map":"node --experimental-strip-types --test tests/github-map.test.mjs","test:integration":"node --experimental-strip-types --test tests/integration.test.mjs","changelog:extract":"node scripts/changelog-extract.mjs","changelog:release":"node scripts/changelog-release.mjs","test:fetchprogress":"node --experimental-strip-types --test tests/fetch-progress.test.mjs","test:webfetch-summary":"node --experimental-strip-types --test tests/webfetch-summary.test.mjs","release:backfill-notes":"node scripts/backfill-github-releases.mjs"},"_npmUser":{"name":"apmantza","email":"ap.mantza@gmail.com"},"repository":{"url":"git+https://github.com/apmantza/pi-webaio.git","type":"git"},"_npmVersion":"11.7.0","description":"All-in-one web tools for pi with search (Google, Brave, DDG) and fetch with headless browser AI summarization","directories":{},"_nodeVersion":"24.12.0","dependencies":{"sharp":"^0.34.5","temml":"^0.13.1","typebox":"^1.1.34","wreq-js":"^2.3.0","defuddle":"^0.18.1","linkedom":"^0.18.12","turndown":"^7.2.0","pdf-parse":"^2.4.5","mathml-to-latex":"^1.5.0","@mozilla/readability":"^0.6.0","@earendil-works/pi-tui":"^0.79.0","youtube-transcript-plus":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^25.6.0"},"peerDependencies":{"@earendil-works/pi-coding-agent":"^0.79.0"},"optionalDependencies":{"playwright":"^1.55.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-webaio_0.6.1_1783083076023_0.8079336393781666","host":"s3://npm-registry-packages-npm-production"}},"0.6.2":{"name":"pi-webaio","version":"0.6.2","keywords":["pi","pi-extension","pi-package","web-scraping","web-fetch","crawler","markdown","anti-bot","tls-fingerprinting","pdf-extraction","duckduckgo","brave","google","google-search","ai-summarization","headless-chrome","cdp","llm","typescript"],"license":"MIT","_id":"pi-webaio@0.6.2","maintainers":[{"name":"apmantza","email":"ap.mantza@gmail.com"}],"homepage":"https://github.com/apmantza/pi-webaio#readme","bugs":{"url":"https://github.com/apmantza/pi-webaio/issues"},"pi":{"extensions":["./dist/index.js"]},"dist":{"shasum":"d185adf3ad7c4b1743835a00becf4f5ab448ee4e","tarball":"https://registry.npmjs.org/pi-webaio/-/pi-webaio-0.6.2.tgz","fileCount":79,"integrity":"sha512-PAM9mPkHF69s+H24dU0PTRt08HTKxm1L2xwLn+a9qIvgUqR6BPLfLWIKc8ASILAOFojXAEzgpk6xbDlnydwyPg==","signatures":[{"sig":"MEUCIBWuRdahdhVVrtGVIDtMrEJfzqel0700VFS2m5G5jY6OAiEAiIhXmk5IHl+EKo4owEZp+nZqd4qOmRwuj66Jffj889Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":814181},"main":"./dist/index.js","type":"module","gitHead":"b8b22f078b0e43eeda15b9a5f2af8cad9986b9c7","scripts":{"lint":"tsc --project tsconfig.json","test":"node --experimental-strip-types --test tests/unit.test.mjs","build":"tsc --project tsconfig.dist.json","watch":"tsc --watch","prepare":"npm run build:dist","test:all":"node --experimental-strip-types --test tests/unit.test.mjs tests/new-features.test.mjs tests/paywall.test.mjs tests/github-check.test.mjs tests/reddit-block.test.mjs tests/github-map.test.mjs tests/render-result.test.mjs tests/fetch-error.test.mjs tests/fetch-progress.test.mjs tests/hardening.test.mjs tests/fingerprint.test.mjs tests/format.test.mjs tests/webfetch-summary.test.mjs tests/chunker.test.mjs tests/prune-markdown.test.mjs tests/integration.test.mjs","test:new":"node --experimental-strip-types --test tests/new-features.test.mjs","build:dist":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\" && tsc --project tsconfig.dist.json","test:check":"node --experimental-strip-types --test tests/github-check.test.mjs","test:prune":"node --experimental-strip-types --test tests/prune-markdown.test.mjs","test:format":"node --experimental-strip-types --test tests/format.test.mjs","test:reddit":"node --experimental-strip-types --test tests/reddit-block.test.mjs","test:render":"node --experimental-strip-types --test tests/render-result.test.mjs","test:chunker":"node --experimental-strip-types --test tests/chunker.test.mjs","test:paywall":"node --experimental-strip-types --test tests/paywall.test.mjs","check:lockfile":"node scripts/check-lockfile-sync.mjs","test:hardening":"node --experimental-strip-types --test tests/hardening.test.mjs","changelog:check":"node scripts/changelog-release.mjs --check","test:fetcherror":"node --experimental-strip-types --test tests/fetch-error.test.mjs","test:github-map":"node --experimental-strip-types --test tests/github-map.test.mjs","test:fingerprint":"node --experimental-strip-types --test tests/fingerprint.test.mjs","test:integration":"node --experimental-strip-types --test tests/integration.test.mjs","changelog:extract":"node scripts/changelog-extract.mjs","changelog:release":"node scripts/changelog-release.mjs","test:fetchprogress":"node --experimental-strip-types --test tests/fetch-progress.test.mjs","diagnose:fingerprint":"node --experimental-strip-types scripts/fingerprint-diagnostics.mjs","test:webfetch-summary":"node --experimental-strip-types --test tests/webfetch-summary.test.mjs","release:backfill-notes":"node scripts/backfill-github-releases.mjs"},"_npmUser":{"name":"apmantza","email":"ap.mantza@gmail.com"},"repository":{"url":"git+https://github.com/apmantza/pi-webaio.git","type":"git"},"_npmVersion":"11.7.0","description":"All-in-one web tools for pi with search (Google, Brave, DDG) and fetch with headless browser AI summarization","directories":{},"_nodeVersion":"24.12.0","dependencies":{"sharp":"^0.34.5","temml":"^0.13.1","typebox":"^1.1.34","wreq-js":"^2.3.0","defuddle":"^0.18.1","linkedom":"^0.18.12","turndown":"^7.2.0","pdf-parse":"^2.4.5","mathml-to-latex":"^1.5.0","@mozilla/readability":"^0.6.0","@earendil-works/pi-tui":"^0.79.0","youtube-transcript-plus":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^25.6.0"},"peerDependencies":{"@earendil-works/pi-coding-agent":"^0.79.0"},"optionalDependencies":{"playwright":"^1.55.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-webaio_0.6.2_1783164123655_0.5018798453984619","host":"s3://npm-registry-packages-npm-production"}},"0.6.3":{"name":"pi-webaio","version":"0.6.3","keywords":["pi","pi-extension","pi-package","web-scraping","web-fetch","crawler","markdown","anti-bot","tls-fingerprinting","pdf-extraction","duckduckgo","brave","google","google-search","ai-summarization","headless-chrome","cdp","llm","typescript"],"license":"MIT","_id":"pi-webaio@0.6.3","maintainers":[{"name":"apmantza","email":"ap.mantza@gmail.com"}],"homepage":"https://github.com/apmantza/pi-webaio#readme","bugs":{"url":"https://github.com/apmantza/pi-webaio/issues"},"pi":{"extensions":["./dist/index.js"]},"dist":{"shasum":"eda5170ead26b244f28c8515d132eef787e8fc3a","tarball":"https://registry.npmjs.org/pi-webaio/-/pi-webaio-0.6.3.tgz","fileCount":79,"integrity":"sha512-48qixw4kAIsReXNBe1nuTVTUVajNM3BKHg03S2kEhYFHUhOs5AVh5cvOS8HVBiEPtkS/mwE7z8uQK04tWTH87Q==","signatures":[{"sig":"MEQCIC18b4eeHHLnQ202fKcOHDLm+XgyeWyPvCd3w//9jnhlAiA+1guYvuCfmuGFEDWFgo2MmNUll24uaQhwmddhHSK6OQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":829810},"main":"./dist/index.js","type":"module","gitHead":"7d4ab80a20f51d3ed64fd9b1c546a0fe69524a25","scripts":{"lint":"tsc --project tsconfig.json","test":"node --experimental-strip-types --test tests/unit.test.mjs","build":"tsc --project tsconfig.dist.json","watch":"tsc --watch","prepare":"npm run build:dist","test:all":"node --experimental-strip-types --test tests/unit.test.mjs tests/new-features.test.mjs tests/paywall.test.mjs tests/github-check.test.mjs tests/reddit-block.test.mjs tests/github-map.test.mjs tests/render-result.test.mjs tests/fetch-error.test.mjs tests/fetch-progress.test.mjs tests/hardening.test.mjs tests/fingerprint.test.mjs tests/format.test.mjs tests/webfetch-summary.test.mjs tests/chunker.test.mjs tests/prune-markdown.test.mjs tests/integration.test.mjs","test:new":"node --experimental-strip-types --test tests/new-features.test.mjs","build:dist":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\" && tsc --project tsconfig.dist.json","test:check":"node --experimental-strip-types --test tests/github-check.test.mjs","test:prune":"node --experimental-strip-types --test tests/prune-markdown.test.mjs","test:format":"node --experimental-strip-types --test tests/format.test.mjs","test:reddit":"node --experimental-strip-types --test tests/reddit-block.test.mjs","test:render":"node --experimental-strip-types --test tests/render-result.test.mjs","test:chunker":"node --experimental-strip-types --test tests/chunker.test.mjs","test:paywall":"node --experimental-strip-types --test tests/paywall.test.mjs","check:lockfile":"node scripts/check-lockfile-sync.mjs","test:hardening":"node --experimental-strip-types --test tests/hardening.test.mjs","changelog:check":"node scripts/changelog-release.mjs --check","test:fetcherror":"node --experimental-strip-types --test tests/fetch-error.test.mjs","test:github-map":"node --experimental-strip-types --test tests/github-map.test.mjs","test:fingerprint":"node --experimental-strip-types --test tests/fingerprint.test.mjs","test:integration":"node --experimental-strip-types --test tests/integration.test.mjs","changelog:extract":"node scripts/changelog-extract.mjs","changelog:release":"node scripts/changelog-release.mjs","test:fetchprogress":"node --experimental-strip-types --test tests/fetch-progress.test.mjs","diagnose:fingerprint":"node --experimental-strip-types scripts/fingerprint-diagnostics.mjs","test:webfetch-summary":"node --experimental-strip-types --test tests/webfetch-summary.test.mjs","release:backfill-notes":"node scripts/backfill-github-releases.mjs"},"_npmUser":{"name":"apmantza","email":"ap.mantza@gmail.com"},"repository":{"url":"git+https://github.com/apmantza/pi-webaio.git","type":"git"},"_npmVersion":"11.7.0","description":"All-in-one web tools for pi with search (Google, Brave, DDG) and fetch with headless browser AI summarization","directories":{},"_nodeVersion":"24.12.0","dependencies":{"sharp":"^0.34.5","temml":"^0.13.1","typebox":"^1.1.34","wreq-js":"^2.3.0","defuddle":"^0.18.1","linkedom":"^0.18.12","turndown":"^7.2.0","pdf-parse":"^2.4.5","mathml-to-latex":"^1.5.0","@mozilla/readability":"^0.6.0","@earendil-works/pi-tui":"^0.79.0","youtube-transcript-plus":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^25.6.0"},"peerDependencies":{"@earendil-works/pi-coding-agent":"^0.79.0"},"optionalDependencies":{"playwright":"^1.55.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-webaio_0.6.3_1784376573291_0.749904203663809","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"pi-webaio","version":"0.7.0","keywords":["pi","pi-extension","pi-package","web-scraping","web-fetch","crawler","markdown","anti-bot","tls-fingerprinting","pdf-extraction","duckduckgo","brave","google","google-search","ai-summarization","headless-chrome","cdp","llm","typescript"],"license":"MIT","_id":"pi-webaio@0.7.0","maintainers":[{"name":"apmantza","email":"ap.mantza@gmail.com"}],"homepage":"https://github.com/apmantza/pi-webaio#readme","bugs":{"url":"https://github.com/apmantza/pi-webaio/issues"},"pi":{"extensions":["./pi-entry.mjs"]},"bin":{"pi-webaio-mcp":"bin/pi-webaio-mcp.mjs"},"dist":{"shasum":"0bac308e59b7f6cb7f4a8e19991efabfacb25178","tarball":"https://registry.npmjs.org/pi-webaio/-/pi-webaio-0.7.0.tgz","fileCount":91,"integrity":"sha512-ypSrgNQrMOOm7xQddOgzrvWBHjruTV5kX+Th65tORDyd/+6YTKNRC+n5ybnAtV6WUZ5v7eFbC838FaNUCwZ8Vw==","signatures":[{"sig":"MEUCIQCHpOm7o7vK7toOZOf/GwtsdGKSYGRz3QDWpcdetLkV9gIgNUHWn0I0/P4bRckZF3TsuZ3u8n+TCArQkiKUJKd988A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/pi-webaio@0.7.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":926615},"main":"./dist/index.js","type":"module","gitHead":"73f5bfbf74f5ba4b0ff4206e0a7e531e43b0086b","scripts":{"lint":"tsc --project tsconfig.json","test":"node --experimental-strip-types --test tests/unit.test.mjs","bench":"node --experimental-strip-types scripts/bench-extraction.mjs","build":"tsc --project tsconfig.dist.json","watch":"tsc --watch","prepare":"node scripts/prepare.mjs","test:all":"node --experimental-strip-types --test tests/unit.test.mjs tests/new-features.test.mjs tests/paywall.test.mjs tests/github-check.test.mjs tests/reddit-block.test.mjs tests/github-map.test.mjs tests/render-result.test.mjs tests/fetch-error.test.mjs tests/fetch-progress.test.mjs tests/hardening.test.mjs tests/fingerprint.test.mjs tests/format.test.mjs tests/webfetch-summary.test.mjs tests/chunker.test.mjs tests/prune-markdown.test.mjs tests/integration.test.mjs tests/bench-harness.test.mjs","test:mcp":"node --test tests/mcp-server.test.mjs","test:new":"node --experimental-strip-types --test tests/new-features.test.mjs","build:dist":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\" && tsc --project tsconfig.dist.json","test:bench":"node --experimental-strip-types --test tests/bench-harness.test.mjs","test:check":"node --experimental-strip-types --test tests/github-check.test.mjs","test:prune":"node --experimental-strip-types --test tests/prune-markdown.test.mjs","test:format":"node --experimental-strip-types --test tests/format.test.mjs","test:reddit":"node --experimental-strip-types --test tests/reddit-block.test.mjs","test:render":"node --experimental-strip-types --test tests/render-result.test.mjs","test:chunker":"node --experimental-strip-types --test tests/chunker.test.mjs","test:paywall":"node --experimental-strip-types --test tests/paywall.test.mjs","check:lockfile":"node scripts/check-lockfile-sync.mjs","test:hardening":"node --experimental-strip-types --test tests/hardening.test.mjs","changelog:check":"node scripts/changelog-release.mjs --check","test:fetcherror":"node --experimental-strip-types --test tests/fetch-error.test.mjs","test:github-map":"node --experimental-strip-types --test tests/github-map.test.mjs","test:fingerprint":"node --experimental-strip-types --test tests/fingerprint.test.mjs","test:integration":"node --experimental-strip-types --test tests/integration.test.mjs","changelog:extract":"node scripts/changelog-extract.mjs","changelog:release":"node scripts/changelog-release.mjs","test:fetchprogress":"node --experimental-strip-types --test tests/fetch-progress.test.mjs","diagnose:fingerprint":"node --experimental-strip-types scripts/fingerprint-diagnostics.mjs","test:webfetch-summary":"node --experimental-strip-types --test tests/webfetch-summary.test.mjs","release:backfill-notes":"node scripts/backfill-github-releases.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a3c2dd9e-28f3-407f-8bca-8666abee0b95"}},"repository":{"url":"git+https://github.com/apmantza/pi-webaio.git","type":"git"},"_npmVersion":"11.16.0","description":"All-in-one web tools for pi with search (Google, Brave, DDG) and fetch with headless browser AI summarization","directories":{},"_nodeVersion":"24.18.0","dependencies":{"sharp":"^0.34.5","temml":"^0.13.1","typebox":"^1.1.34","wreq-js":"^2.3.0","defuddle":"^0.18.1","linkedom":"^0.18.12","turndown":"^7.2.0","pdf-parse":"^2.4.5","mathml-to-latex":"^1.5.0","@mozilla/readability":"^0.6.0","@earendil-works/pi-tui":"^0.79.0","youtube-transcript-plus":"^2.0.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^25.6.0"},"peerDependencies":{"@earendil-works/pi-coding-agent":"^0.79.0"},"optionalDependencies":{"playwright":"^1.55.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-webaio_0.7.0_1784564289221_0.4922799410373102","host":"s3://npm-registry-packages-npm-production"}},"0.7.1":{"name":"pi-webaio","version":"0.7.1","keywords":["pi","pi-extension","pi-package","web-scraping","web-fetch","crawler","markdown","anti-bot","tls-fingerprinting","pdf-extraction","duckduckgo","brave","google","google-search","ai-summarization","headless-chrome","cdp","llm","typescript"],"license":"MIT","_id":"pi-webaio@0.7.1","maintainers":[{"name":"apmantza","email":"ap.mantza@gmail.com"}],"homepage":"https://github.com/apmantza/pi-webaio#readme","bugs":{"url":"https://github.com/apmantza/pi-webaio/issues"},"pi":{"extensions":["./pi-entry.mjs"]},"bin":{"pi-webaio-mcp":"bin/pi-webaio-mcp.mjs"},"dist":{"shasum":"dbf2c0290a44ee17ddb21d7d7e8147629b169224","tarball":"https://registry.npmjs.org/pi-webaio/-/pi-webaio-0.7.1.tgz","fileCount":97,"integrity":"sha512-YTJNJT7D2EaKOwuFwk6EfWZZcnTYlnBBOovbHD+7LbHeHel/jFk7tvBKgnpCGylzAXqHbNT0pAMAmvjgIoZnVg==","signatures":[{"sig":"MEYCIQC5TMi5fR8VvJmt097KccSERwAEc/mi/YKylkKeJf0P2gIhAMvyXHQLxl73tQ8OUHDkXmrEU2eAKoCYIHZ77dDOTAaB","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/pi-webaio@0.7.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1023635},"main":"./dist/index.js","type":"module","gitHead":"44213cbe8bfe807fdc25edb0a85a7d5ab67b2825","imports":{"#stealth-script":"./extractors/stealth-script.mjs"},"scripts":{"lint":"tsc --project tsconfig.json","test":"node --experimental-strip-types --test tests/unit.test.mjs","bench":"node --experimental-strip-types scripts/bench-extraction.mjs","build":"tsc --project tsconfig.dist.json","watch":"tsc --watch","prepare":"node scripts/prepare.mjs","test:all":"node --experimental-strip-types --test tests/unit.test.mjs tests/new-features.test.mjs tests/paywall.test.mjs tests/github-check.test.mjs tests/reddit-block.test.mjs tests/github-map.test.mjs tests/render-result.test.mjs tests/fetch-error.test.mjs tests/fetch-progress.test.mjs tests/hardening.test.mjs tests/fingerprint.test.mjs tests/format.test.mjs tests/webfetch-summary.test.mjs tests/chunker.test.mjs tests/prune-markdown.test.mjs tests/integration.test.mjs tests/bench-harness.test.mjs tests/webresearch.test.mjs tests/source-ranking.test.mjs tests/cookie-cache.test.mjs tests/goggles.test.mjs tests/stance.test.mjs","test:mcp":"node --test tests/mcp-server.test.mjs","test:new":"node --experimental-strip-types --test tests/new-features.test.mjs","build:dist":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\" && tsc --project tsconfig.dist.json","test:bench":"node --experimental-strip-types --test tests/bench-harness.test.mjs","test:check":"node --experimental-strip-types --test tests/github-check.test.mjs","test:prune":"node --experimental-strip-types --test tests/prune-markdown.test.mjs","test:format":"node --experimental-strip-types --test tests/format.test.mjs","test:reddit":"node --experimental-strip-types --test tests/reddit-block.test.mjs","test:render":"node --experimental-strip-types --test tests/render-result.test.mjs","test:stance":"node --experimental-strip-types --test tests/stance.test.mjs","test:chunker":"node --experimental-strip-types --test tests/chunker.test.mjs","test:paywall":"node --experimental-strip-types --test tests/paywall.test.mjs","check:lockfile":"node scripts/check-lockfile-sync.mjs","test:hardening":"node --experimental-strip-types --test tests/hardening.test.mjs","changelog:check":"node scripts/changelog-release.mjs --check","test:fetcherror":"node --experimental-strip-types --test tests/fetch-error.test.mjs","test:github-map":"node --experimental-strip-types --test tests/github-map.test.mjs","test:fingerprint":"node --experimental-strip-types --test tests/fingerprint.test.mjs","test:integration":"node --experimental-strip-types --test tests/integration.test.mjs","test:webresearch":"node --experimental-strip-types --test tests/webresearch.test.mjs","changelog:extract":"node scripts/changelog-extract.mjs","changelog:release":"node scripts/changelog-release.mjs","test:cookie-cache":"node --experimental-strip-types --test tests/cookie-cache.test.mjs","test:fetchprogress":"node --experimental-strip-types --test tests/fetch-progress.test.mjs","test:source-ranking":"node --experimental-strip-types --test tests/source-ranking.test.mjs","diagnose:fingerprint":"node --experimental-strip-types scripts/fingerprint-diagnostics.mjs","test:webfetch-summary":"node --experimental-strip-types --test tests/webfetch-summary.test.mjs","release:backfill-notes":"node scripts/backfill-github-releases.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a3c2dd9e-28f3-407f-8bca-8666abee0b95"}},"repository":{"url":"git+https://github.com/apmantza/pi-webaio.git","type":"git"},"_npmVersion":"11.16.0","description":"All-in-one web tools for pi with search (Google, Brave, DDG) and fetch with headless browser AI summarization","directories":{},"_nodeVersion":"24.18.0","dependencies":{"sharp":"^0.34.5","temml":"^0.13.1","typebox":"^1.1.34","wreq-js":"^2.3.0","defuddle":"^0.18.1","linkedom":"^0.18.12","turndown":"^7.2.0","pdf-parse":"^2.4.5","mathml-to-latex":"^1.5.0","@mozilla/readability":"^0.6.0","@earendil-works/pi-tui":"^0.79.0","youtube-transcript-plus":"^2.0.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^25.6.0"},"peerDependencies":{"@earendil-works/pi-coding-agent":"^0.79.0"},"optionalDependencies":{"playwright":"^1.55.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-webaio_0.7.1_1784580699521_0.472096527146014","host":"s3://npm-registry-packages-npm-production"}},"0.7.2":{"name":"pi-webaio","version":"0.7.2","keywords":["pi","pi-extension","pi-package","web-scraping","web-fetch","crawler","markdown","anti-bot","tls-fingerprinting","pdf-extraction","duckduckgo","brave","google","google-search","ai-summarization","headless-chrome","cdp","llm","typescript"],"license":"MIT","_id":"pi-webaio@0.7.2","maintainers":[{"name":"apmantza","email":"ap.mantza@gmail.com"}],"homepage":"https://github.com/apmantza/pi-webaio#readme","bugs":{"url":"https://github.com/apmantza/pi-webaio/issues"},"pi":{"extensions":["./pi-entry.mjs"]},"bin":{"pi-webaio-mcp":"bin/pi-webaio-mcp.mjs"},"dist":{"shasum":"90a17c06b843f0d1d2ca0c317a783b846a6c640c","tarball":"https://registry.npmjs.org/pi-webaio/-/pi-webaio-0.7.2.tgz","fileCount":98,"integrity":"sha512-uPkIT8Q5BvwJRG1L1pNG4A+Bl++ugfo7i7Hx/FBkFs98aA3O9HPHjtGa0l15xjb8R2eV1LOCZay1g3QTh8cAYw==","signatures":[{"sig":"MEYCIQD+RyPZt4qn1UOspbFSOYjstmmx4maWLOnY8K85J/awFQIhAK0+JUnd/8byvonM3sua7sWby5elzw7Y7G1iXOKfzqk9","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/pi-webaio@0.7.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1041697},"main":"./dist/index.js","type":"module","gitHead":"c4ef39035b885644989f8be20ea9ac996fe54f42","imports":{"#stealth-script":"./extractors/stealth-script.mjs"},"scripts":{"lint":"tsc --project tsconfig.json","test":"node --experimental-strip-types --test tests/unit.test.mjs","bench":"node --experimental-strip-types scripts/bench-extraction.mjs","build":"tsc --project tsconfig.dist.json","watch":"tsc --watch","prepare":"node scripts/prepare.mjs","test:all":"node --experimental-strip-types --test tests/unit.test.mjs tests/new-features.test.mjs tests/paywall.test.mjs tests/github-check.test.mjs tests/reddit-block.test.mjs tests/github-map.test.mjs tests/render-result.test.mjs tests/fetch-error.test.mjs tests/fetch-progress.test.mjs tests/hardening.test.mjs tests/fingerprint.test.mjs tests/format.test.mjs tests/webfetch-summary.test.mjs tests/chunker.test.mjs tests/prune-markdown.test.mjs tests/integration.test.mjs tests/bench-harness.test.mjs tests/webresearch.test.mjs tests/source-ranking.test.mjs tests/cookie-cache.test.mjs tests/goggles.test.mjs tests/stance.test.mjs tests/bot-wait.test.mjs tests/ssrf-allowlist.test.mjs tests/lifecycle-hooks.test.mjs","test:mcp":"node --test tests/mcp-server.test.mjs","test:new":"node --experimental-strip-types --test tests/new-features.test.mjs","build:dist":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\" && tsc --project tsconfig.dist.json","test:bench":"node --experimental-strip-types --test tests/bench-harness.test.mjs","test:check":"node --experimental-strip-types --test tests/github-check.test.mjs","test:prune":"node --experimental-strip-types --test tests/prune-markdown.test.mjs","test:format":"node --experimental-strip-types --test tests/format.test.mjs","test:reddit":"node --experimental-strip-types --test tests/reddit-block.test.mjs","test:render":"node --experimental-strip-types --test tests/render-result.test.mjs","test:stance":"node --experimental-strip-types --test tests/stance.test.mjs","test:chunker":"node --experimental-strip-types --test tests/chunker.test.mjs","test:paywall":"node --experimental-strip-types --test tests/paywall.test.mjs","check:lockfile":"node scripts/check-lockfile-sync.mjs","test:hardening":"node --experimental-strip-types --test tests/hardening.test.mjs","changelog:check":"node scripts/changelog-release.mjs --check","test:fetcherror":"node --experimental-strip-types --test tests/fetch-error.test.mjs","test:github-map":"node --experimental-strip-types --test tests/github-map.test.mjs","test:fingerprint":"node --experimental-strip-types --test tests/fingerprint.test.mjs","test:integration":"node --experimental-strip-types --test tests/integration.test.mjs","test:webresearch":"node --experimental-strip-types --test tests/webresearch.test.mjs","changelog:extract":"node scripts/changelog-extract.mjs","changelog:release":"node scripts/changelog-release.mjs","test:cookie-cache":"node --experimental-strip-types --test tests/cookie-cache.test.mjs","test:fetchprogress":"node --experimental-strip-types --test tests/fetch-progress.test.mjs","test:source-ranking":"node --experimental-strip-types --test tests/source-ranking.test.mjs","diagnose:fingerprint":"node --experimental-strip-types scripts/fingerprint-diagnostics.mjs","test:webfetch-summary":"node --experimental-strip-types --test tests/webfetch-summary.test.mjs","release:backfill-notes":"node scripts/backfill-github-releases.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a3c2dd9e-28f3-407f-8bca-8666abee0b95"}},"overrides":{"protobufjs":"^7.6.5","brace-expansion":"^5.0.7"},"repository":{"url":"git+https://github.com/apmantza/pi-webaio.git","type":"git"},"_npmVersion":"11.16.0","description":"All-in-one web tools for pi with search (Google, Brave, DDG) and fetch with headless browser AI summarization","directories":{},"_nodeVersion":"24.18.0","dependencies":{"sharp":"^0.34.5","temml":"^0.13.1","typebox":"^1.1.34","wreq-js":"^2.3.0","defuddle":"^0.18.1","linkedom":"^0.18.12","turndown":"^7.2.0","pdf-parse":"^2.4.5","mathml-to-latex":"^1.5.0","@mozilla/readability":"^0.6.0","@earendil-works/pi-tui":"^0.79.0","youtube-transcript-plus":"^2.0.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^25.6.0"},"peerDependencies":{"@earendil-works/pi-coding-agent":"^0.79.0"},"optionalDependencies":{"playwright":"^1.55.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-webaio_0.7.2_1784622019626_0.19782250523331624","host":"s3://npm-registry-packages-npm-production"}},"0.7.3":{"name":"pi-webaio","version":"0.7.3","keywords":["pi","pi-extension","pi-package","web-scraping","web-fetch","crawler","markdown","anti-bot","tls-fingerprinting","pdf-extraction","duckduckgo","brave","google","google-search","ai-summarization","headless-chrome","cdp","llm","typescript"],"license":"MIT","_id":"pi-webaio@0.7.3","maintainers":[{"name":"apmantza","email":"ap.mantza@gmail.com"}],"homepage":"https://github.com/apmantza/pi-webaio#readme","bugs":{"url":"https://github.com/apmantza/pi-webaio/issues"},"pi":{"extensions":["./pi-entry.mjs"]},"bin":{"pi-webaio-mcp":"bin/pi-webaio-mcp.mjs"},"dist":{"shasum":"feecfaa961d08cc781d809c055820a8bb9cd2db1","tarball":"https://registry.npmjs.org/pi-webaio/-/pi-webaio-0.7.3.tgz","fileCount":99,"integrity":"sha512-X3jU3fOpFtEnwEPP2ItDc5bfEWI2RUvicF0/5n+6QGumnrMhJgXU4+nZsPsv8VCFi8NAb5UbTsuNxXbM7cflbQ==","signatures":[{"sig":"MEUCIGgjLs9lgqPxHi2LfUeEmRtG82vS4XmEhkuyprOXKNJ8AiEAl2Qh59KXmyVyp52KT0ZfxO2BnXoUALcybGVqbuiGZKY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/pi-webaio@0.7.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1092500},"main":"./dist/index.js","type":"module","gitHead":"14b5d5b838332b70906457eb22934e4333a3f304","imports":{"#stealth-script":"./extractors/stealth-script.mjs"},"scripts":{"lint":"tsc --project tsconfig.json","test":"node --experimental-strip-types --test tests/unit.test.mjs","bench":"node --experimental-strip-types scripts/bench-extraction.mjs","build":"tsc --project tsconfig.dist.json","watch":"tsc --watch","prepare":"node scripts/prepare.mjs","test:all":"node --experimental-strip-types --test tests/unit.test.mjs tests/new-features.test.mjs tests/paywall.test.mjs tests/github-check.test.mjs tests/reddit-block.test.mjs tests/github-map.test.mjs tests/render-result.test.mjs tests/fetch-error.test.mjs tests/fetch-progress.test.mjs tests/hardening.test.mjs tests/fingerprint.test.mjs tests/format.test.mjs tests/webfetch-summary.test.mjs tests/search-context.test.mjs tests/chunker.test.mjs tests/prune-markdown.test.mjs tests/integration.test.mjs tests/bench-harness.test.mjs tests/webresearch.test.mjs tests/source-ranking.test.mjs tests/cookie-cache.test.mjs tests/goggles.test.mjs tests/stance.test.mjs tests/bot-wait.test.mjs tests/ssrf-allowlist.test.mjs tests/lifecycle-hooks.test.mjs tests/webquery.test.mjs tests/ssrf-hardening.test.mjs tests/redact.test.mjs tests/title-extraction.test.mjs","test:mcp":"node --test tests/mcp-server.test.mjs","test:new":"node --experimental-strip-types --test tests/new-features.test.mjs","test:ssrf":"node --experimental-strip-types --test tests/ssrf-hardening.test.mjs","build:dist":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\" && tsc --project tsconfig.dist.json","test:bench":"node --experimental-strip-types --test tests/bench-harness.test.mjs","test:check":"node --experimental-strip-types --test tests/github-check.test.mjs","test:prune":"node --experimental-strip-types --test tests/prune-markdown.test.mjs","test:format":"node --experimental-strip-types --test tests/format.test.mjs","test:redact":"node --experimental-strip-types --test tests/redact.test.mjs","test:reddit":"node --experimental-strip-types --test tests/reddit-block.test.mjs","test:render":"node --experimental-strip-types --test tests/render-result.test.mjs","test:stance":"node --experimental-strip-types --test tests/stance.test.mjs","test:chunker":"node --experimental-strip-types --test tests/chunker.test.mjs","test:paywall":"node --experimental-strip-types --test tests/paywall.test.mjs","check:lockfile":"node scripts/check-lockfile-sync.mjs","test:hardening":"node --experimental-strip-types --test tests/hardening.test.mjs","changelog:check":"node scripts/changelog-release.mjs --check","test:fetcherror":"node --experimental-strip-types --test tests/fetch-error.test.mjs","test:github-map":"node --experimental-strip-types --test tests/github-map.test.mjs","test:fingerprint":"node --experimental-strip-types --test tests/fingerprint.test.mjs","test:integration":"node --experimental-strip-types --test tests/integration.test.mjs","test:webresearch":"node --experimental-strip-types --test tests/webresearch.test.mjs","changelog:extract":"node scripts/changelog-extract.mjs","changelog:release":"node scripts/changelog-release.mjs","test:cookie-cache":"node --experimental-strip-types --test tests/cookie-cache.test.mjs","test:fetchprogress":"node --experimental-strip-types --test tests/fetch-progress.test.mjs","test:search-context":"node --experimental-strip-types --test tests/search-context.test.mjs","test:source-ranking":"node --experimental-strip-types --test tests/source-ranking.test.mjs","diagnose:fingerprint":"node --experimental-strip-types scripts/fingerprint-diagnostics.mjs","test:title-extraction":"node --experimental-strip-types --test tests/title-extraction.test.mjs","test:webfetch-summary":"node --experimental-strip-types --test tests/webfetch-summary.test.mjs","release:backfill-notes":"node scripts/backfill-github-releases.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a3c2dd9e-28f3-407f-8bca-8666abee0b95"}},"overrides":{"protobufjs":"^7.6.5","brace-expansion":"^5.0.8","@hono/node-server":"^2.0.5","@earendil-works/pi-coding-agent":{"brace-expansion":"^5.0.8"}},"repository":{"url":"git+https://github.com/apmantza/pi-webaio.git","type":"git"},"_npmVersion":"11.16.0","description":"All-in-one web tools for pi with search (Google, Brave, DDG) and fetch with headless browser AI summarization","directories":{},"_nodeVersion":"24.18.0","dependencies":{"temml":"^0.13.1","typebox":"^1.1.34","wreq-js":"^2.3.0","defuddle":"^0.19.2","linkedom":"^0.18.12","turndown":"^7.2.0","pdf-parse":"^2.4.5","mathml-to-latex":"^1.5.0","@mozilla/readability":"^0.6.0","@earendil-works/pi-tui":"^0.83.0","youtube-transcript-plus":"^2.0.0","@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^7.0.2","@types/node":"^26.1.2"},"peerDependencies":{"@earendil-works/pi-coding-agent":"^0.83.0"},"optionalDependencies":{"playwright":"^1.55.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-webaio_0.7.3_1785366319290_0.2998072268948835","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"pi-webaio","version":"0.8.0","keywords":["pi","pi-extension","pi-package","web-scraping","web-fetch","crawler","markdown","anti-bot","tls-fingerprinting","pdf-extraction","duckduckgo","brave","google","google-search","ai-summarization","headless-chrome","cdp","llm","typescript"],"license":"MIT","_id":"pi-webaio@0.8.0","maintainers":[{"name":"apmantza","email":"ap.mantza@gmail.com"}],"homepage":"https://github.com/apmantza/pi-webaio#readme","bugs":{"url":"https://github.com/apmantza/pi-webaio/issues"},"pi":{"extensions":["./pi-entry.mjs"]},"bin":{"pi-webaio-mcp":"bin/pi-webaio-mcp.mjs"},"dist":{"shasum":"fc5e799e1b310ef746f52dadec5f0566431b1c80","tarball":"https://registry.npmjs.org/pi-webaio/-/pi-webaio-0.8.0.tgz","fileCount":109,"integrity":"sha512-qp4THEub79VNnmr4TA4euQQnfP0kcDjGvGBxoPoAhegFeEJHL3+qo6XI1tY3i3ZUXhaBQPEKNwHYkfyunXLPMA==","signatures":[{"sig":"MEUCIBc75nT3+IxUL1QFAzvSr4c6SxAM773knqvhb/sK5TpUAiEA6/3ilMhrE0KepAu9COvPP0INkOv5NqjDThnxPeU/c1I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/pi-webaio@0.8.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1338485},"main":"./dist/index.js","type":"module","gitHead":"2b1831171409cca15b20298f1234f6a4030ec0ef","imports":{"#stealth-script":"./extractors/stealth-script.mjs"},"scripts":{"lint":"tsc --project tsconfig.json","test":"node --experimental-strip-types --test tests/unit.test.mjs","bench":"node --experimental-strip-types scripts/bench-extraction.mjs","build":"tsc --project tsconfig.dist.json","watch":"tsc --watch","prepare":"node scripts/prepare.mjs","test:all":"node --experimental-strip-types --test tests/unit.test.mjs tests/new-features.test.mjs tests/paywall.test.mjs tests/github-check.test.mjs tests/reddit-block.test.mjs tests/github-map.test.mjs tests/render-result.test.mjs tests/fetch-error.test.mjs tests/fetch-progress.test.mjs tests/hardening.test.mjs tests/fingerprint.test.mjs tests/format.test.mjs tests/webfetch-summary.test.mjs tests/search-context.test.mjs tests/chunker.test.mjs tests/prune-markdown.test.mjs tests/integration.test.mjs tests/bench-harness.test.mjs tests/webresearch.test.mjs tests/source-ranking.test.mjs tests/cookie-cache.test.mjs tests/goggles.test.mjs tests/stance.test.mjs tests/bot-wait.test.mjs tests/ssrf-allowlist.test.mjs tests/lifecycle-hooks.test.mjs tests/webquery.test.mjs tests/ssrf-hardening.test.mjs tests/redact.test.mjs tests/title-extraction.test.mjs tests/source-trust.test.mjs tests/diagnose-backends.test.mjs tests/security-crosscheck.test.mjs tests/verticals-context7-deepwiki.test.mjs tests/search-diversity.test.mjs tests/content-hash-dedup.test.mjs tests/local-precheck.test.mjs tests/escalation-404.test.mjs tests/batch-throw-isolation.test.mjs tests/debug.test.mjs tests/search-engine-status.test.mjs tests/browser-obs.test.mjs tests/obs-small-wins.test.mjs tests/perf-extraction.test.mjs tests/perf-browser-pool.test.mjs tests/perf-search-deadline.test.mjs tests/perf-workers-cache.test.mjs tests/ux-webfetch-output.test.mjs tests/ux-compact-search.test.mjs tests/ux-multi-answer.test.mjs tests/extraction-quality.test.mjs","test:mcp":"node --test tests/mcp-server.test.mjs","test:new":"node --experimental-strip-types --test tests/new-features.test.mjs","test:ssrf":"node --experimental-strip-types --test tests/ssrf-hardening.test.mjs","build:dist":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\" && tsc --project tsconfig.dist.json","test:bench":"node --experimental-strip-types --test tests/bench-harness.test.mjs","test:check":"node --experimental-strip-types --test tests/github-check.test.mjs","test:debug":"node --experimental-strip-types --test tests/debug.test.mjs","test:prune":"node --experimental-strip-types --test tests/prune-markdown.test.mjs","test:format":"node --experimental-strip-types --test tests/format.test.mjs","test:redact":"node --experimental-strip-types --test tests/redact.test.mjs","test:reddit":"node --experimental-strip-types --test tests/reddit-block.test.mjs","test:render":"node --experimental-strip-types --test tests/render-result.test.mjs","test:stance":"node --experimental-strip-types --test tests/stance.test.mjs","test:chunker":"node --experimental-strip-types --test tests/chunker.test.mjs","test:paywall":"node --experimental-strip-types --test tests/paywall.test.mjs","check:lockfile":"node scripts/check-lockfile-sync.mjs","test:hardening":"node --experimental-strip-types --test tests/hardening.test.mjs","changelog:check":"node scripts/changelog-release.mjs --check","test:escalation":"node --experimental-strip-types --test tests/escalation-404.test.mjs","test:fetcherror":"node --experimental-strip-types --test tests/fetch-error.test.mjs","test:github-map":"node --experimental-strip-types --test tests/github-map.test.mjs","test:browser-obs":"node --experimental-strip-types --test tests/browser-obs.test.mjs","test:fingerprint":"node --experimental-strip-types --test tests/fingerprint.test.mjs","test:integration":"node --experimental-strip-types --test tests/integration.test.mjs","test:webresearch":"node --experimental-strip-types --test tests/webresearch.test.mjs","changelog:extract":"node scripts/changelog-extract.mjs","changelog:release":"node scripts/changelog-release.mjs","diagnose:backends":"node scripts/diagnose-backends.mjs","test:cookie-cache":"node --experimental-strip-types --test tests/cookie-cache.test.mjs","test:fetchprogress":"node --experimental-strip-types --test tests/fetch-progress.test.mjs","test:obs-small-wins":"node --experimental-strip-types --test tests/obs-small-wins.test.mjs","test:search-context":"node --experimental-strip-types --test tests/search-context.test.mjs","test:source-ranking":"node --experimental-strip-types --test tests/source-ranking.test.mjs","diagnose:fingerprint":"node --experimental-strip-types scripts/fingerprint-diagnostics.mjs","test:batch-isolation":"node --experimental-strip-types --test tests/batch-throw-isolation.test.mjs","test:perf-extraction":"node --experimental-strip-types --test tests/perf-extraction.test.mjs","test:ux-multi-answer":"node --experimental-strip-types --test tests/ux-multi-answer.test.mjs","test:title-extraction":"node --experimental-strip-types --test tests/title-extraction.test.mjs","test:webfetch-summary":"node --experimental-strip-types --test tests/webfetch-summary.test.mjs","release:backfill-notes":"node scripts/backfill-github-releases.mjs","test:perf-browser-pool":"node --experimental-strip-types --test tests/perf-browser-pool.test.mjs","test:ux-compact-search":"node --experimental-strip-types --test tests/ux-compact-search.test.mjs","test:extraction-quality":"node --experimental-strip-types --test tests/extraction-quality.test.mjs","test:perf-workers-cache":"node --experimental-strip-types --test tests/perf-workers-cache.test.mjs","test:ux-webfetch-output":"node --experimental-strip-types --test tests/ux-webfetch-output.test.mjs","test:perf-search-deadline":"node --experimental-strip-types --test tests/perf-search-deadline.test.mjs","test:search-engine-status":"node --experimental-strip-types --test tests/search-engine-status.test.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a3c2dd9e-28f3-407f-8bca-8666abee0b95"}},"overrides":{"protobufjs":"^7.6.5","brace-expansion":"^5.0.8","@hono/node-server":"^2.0.5","@earendil-works/pi-coding-agent":{"brace-expansion":"^5.0.8"}},"repository":{"url":"git+https://github.com/apmantza/pi-webaio.git","type":"git"},"_npmVersion":"11.16.0","description":"All-in-one web tools for pi with search (Google, Brave, DDG) and fetch with headless browser AI summarization","directories":{},"_nodeVersion":"24.18.0","dependencies":{"temml":"^0.13.1","typebox":"^1.1.34","wreq-js":"^2.3.0","defuddle":"^0.19.2","linkedom":"^0.18.12","turndown":"^7.2.0","pdf-parse":"^2.4.5","mathml-to-latex":"^1.5.0","@mozilla/readability":"^0.6.0","@earendil-works/pi-tui":"^0.83.0","youtube-transcript-plus":"^2.0.0","@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^7.0.2","@types/node":"^26.1.2"},"peerDependencies":{"@earendil-works/pi-coding-agent":"^0.83.0"},"optionalDependencies":{"playwright":"^1.55.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-webaio_0.8.0_1785482097428_0.3509372395061283","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"name":"pi-webaio","version":"0.9.0","keywords":["pi","pi-extension","pi-package","web-scraping","web-fetch","crawler","markdown","anti-bot","tls-fingerprinting","pdf-extraction","duckduckgo","brave","google","google-search","ai-summarization","headless-chrome","cdp","llm","typescript"],"license":"MIT","_id":"pi-webaio@0.9.0","maintainers":[{"name":"apmantza","email":"ap.mantza@gmail.com"}],"homepage":"https://github.com/apmantza/pi-webaio#readme","bugs":{"url":"https://github.com/apmantza/pi-webaio/issues"},"pi":{"extensions":["./pi-entry.mjs"]},"bin":{"pi-webaio-mcp":"bin/pi-webaio-mcp.mjs"},"dist":{"shasum":"b295cfdd80c76ca6150ca19db611de1d14aa10bb","tarball":"https://registry.npmjs.org/pi-webaio/-/pi-webaio-0.9.0.tgz","fileCount":111,"integrity":"sha512-S+nPAspOpqO863uJ0EtAAdnqgwTDMPr6vQIeqE6TnMXHWvMg9DOMuNLj6jydTKp/bumOI8JhO47PCLntOcFwNA==","signatures":[{"sig":"MEUCIQD+324W/kwRpx9X8ocsgNRx5mxvdFWMg6JcSFSrTVyuMgIgJZE6kl1zw2trgsNodKVjvakwBbwQx2fsiifQLf14zSk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/pi-webaio@0.9.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1513360},"main":"./dist/index.js","type":"module","gitHead":"0f7cf940bf4c1121d2ca85bc367a3df245a267a1","imports":{"#stealth-script":"./extractors/stealth-script.mjs"},"scripts":{"lint":"tsc --project tsconfig.json","test":"node --experimental-strip-types --test tests/unit.test.mjs","bench":"node --experimental-strip-types scripts/bench-extraction.mjs","build":"tsc --project tsconfig.dist.json","watch":"tsc --watch","prepare":"node scripts/prepare.mjs","test:all":"node --experimental-strip-types --test tests/unit.test.mjs tests/google-cdp-broker.test.mjs tests/google-cdp-broker-process.test.mjs tests/google-cdp-broker-cdp.test.mjs tests/google-cdp-broker-client.test.mjs tests/google-ai-broker.test.mjs tests/google-search-waits.test.mjs tests/new-features.test.mjs tests/paywall.test.mjs tests/github-check.test.mjs tests/reddit-block.test.mjs tests/reddit-search.test.mjs tests/github-map.test.mjs tests/render-result.test.mjs tests/fetch-error.test.mjs tests/fetch-progress.test.mjs tests/hardening.test.mjs tests/fingerprint.test.mjs tests/format.test.mjs tests/webfetch-summary.test.mjs tests/search-context.test.mjs tests/chunker.test.mjs tests/prune-markdown.test.mjs tests/integration.test.mjs tests/bench-harness.test.mjs tests/webresearch.test.mjs tests/source-ranking.test.mjs tests/cookie-cache.test.mjs tests/goggles.test.mjs tests/stance.test.mjs tests/bot-wait.test.mjs tests/ssrf-allowlist.test.mjs tests/lifecycle-hooks.test.mjs tests/webquery.test.mjs tests/ssrf-hardening.test.mjs tests/redact.test.mjs tests/title-extraction.test.mjs tests/source-trust.test.mjs tests/diagnose-backends.test.mjs tests/security-crosscheck.test.mjs tests/verticals-context7-deepwiki.test.mjs tests/search-diversity.test.mjs tests/content-hash-dedup.test.mjs tests/local-precheck.test.mjs tests/escalation-404.test.mjs tests/batch-throw-isolation.test.mjs tests/debug.test.mjs tests/search-engine-status.test.mjs tests/search-orchestration.test.mjs tests/browser-obs.test.mjs tests/obs-small-wins.test.mjs tests/perf-extraction.test.mjs tests/perf-browser-pool.test.mjs tests/perf-search-deadline.test.mjs tests/perf-workers-cache.test.mjs tests/ux-webfetch-output.test.mjs tests/ux-compact-search.test.mjs tests/ux-multi-answer.test.mjs tests/extraction-quality.test.mjs","test:mcp":"node --test tests/mcp-server.test.mjs","test:new":"node --experimental-strip-types --test tests/new-features.test.mjs","test:ssrf":"node --experimental-strip-types --test tests/ssrf-hardening.test.mjs","build:dist":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\" && tsc --project tsconfig.dist.json","test:bench":"node --experimental-strip-types --test tests/bench-harness.test.mjs","test:check":"node --experimental-strip-types --test tests/github-check.test.mjs","test:debug":"node --experimental-strip-types --test tests/debug.test.mjs","test:prune":"node --experimental-strip-types --test tests/prune-markdown.test.mjs","test:broker":"node --test tests/google-cdp-broker.test.mjs tests/google-cdp-broker-process.test.mjs tests/google-cdp-broker-cdp.test.mjs tests/google-cdp-broker-client.test.mjs tests/google-ai-broker.test.mjs","test:format":"node --experimental-strip-types --test tests/format.test.mjs","test:redact":"node --experimental-strip-types --test tests/redact.test.mjs","test:reddit":"node --experimental-strip-types --test tests/reddit-block.test.mjs","test:render":"node --experimental-strip-types --test tests/render-result.test.mjs","test:stance":"node --experimental-strip-types --test tests/stance.test.mjs","test:chunker":"node --experimental-strip-types --test tests/chunker.test.mjs","test:paywall":"node --experimental-strip-types --test tests/paywall.test.mjs","check:lockfile":"node scripts/check-lockfile-sync.mjs","test:hardening":"node --experimental-strip-types --test tests/hardening.test.mjs","changelog:check":"node scripts/changelog-release.mjs --check","test:escalation":"node --experimental-strip-types --test tests/escalation-404.test.mjs","test:fetcherror":"node --experimental-strip-types --test tests/fetch-error.test.mjs","test:github-map":"node --experimental-strip-types --test tests/github-map.test.mjs","bench:google-cdp":"node --experimental-strip-types scripts/bench-google-cdp.mjs","test:browser-obs":"node --experimental-strip-types --test tests/browser-obs.test.mjs","test:fingerprint":"node --experimental-strip-types --test tests/fingerprint.test.mjs","test:integration":"node --experimental-strip-types --test tests/integration.test.mjs","test:webresearch":"node --experimental-strip-types --test tests/webresearch.test.mjs","changelog:extract":"node scripts/changelog-extract.mjs","changelog:release":"node scripts/changelog-release.mjs","diagnose:backends":"node scripts/diagnose-backends.mjs","test:cookie-cache":"node --experimental-strip-types --test tests/cookie-cache.test.mjs","test:fetchprogress":"node --experimental-strip-types --test tests/fetch-progress.test.mjs","test:obs-small-wins":"node --experimental-strip-types --test tests/obs-small-wins.test.mjs","test:search-context":"node --experimental-strip-types --test tests/search-context.test.mjs","test:source-ranking":"node --experimental-strip-types --test tests/source-ranking.test.mjs","diagnose:fingerprint":"node --experimental-strip-types scripts/fingerprint-diagnostics.mjs","test:batch-isolation":"node --experimental-strip-types --test tests/batch-throw-isolation.test.mjs","test:perf-extraction":"node --experimental-strip-types --test tests/perf-extraction.test.mjs","test:ux-multi-answer":"node --experimental-strip-types --test tests/ux-multi-answer.test.mjs","test:title-extraction":"node --experimental-strip-types --test tests/title-extraction.test.mjs","test:webfetch-summary":"node --experimental-strip-types --test tests/webfetch-summary.test.mjs","release:backfill-notes":"node scripts/backfill-github-releases.mjs","test:perf-browser-pool":"node --experimental-strip-types --test tests/perf-browser-pool.test.mjs","test:ux-compact-search":"node --experimental-strip-types --test tests/ux-compact-search.test.mjs","test:extraction-quality":"node --experimental-strip-types --test tests/extraction-quality.test.mjs","test:perf-workers-cache":"node --experimental-strip-types --test tests/perf-workers-cache.test.mjs","test:ux-webfetch-output":"node --experimental-strip-types --test tests/ux-webfetch-output.test.mjs","test:perf-search-deadline":"node --experimental-strip-types --test tests/perf-search-deadline.test.mjs","test:search-engine-status":"node --experimental-strip-types --test tests/search-engine-status.test.mjs","test:search-orchestration":"node --experimental-strip-types --test tests/search-orchestration.test.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a3c2dd9e-28f3-407f-8bca-8666abee0b95"}},"overrides":{"protobufjs":"^7.6.5","@hono/node-server":"^2.0.5"},"repository":{"url":"git+https://github.com/apmantza/pi-webaio.git","type":"git"},"_npmVersion":"11.17.0","description":"All-in-one web tools for pi with search (Google, Brave, DDG) and fetch with headless browser AI summarization","directories":{},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.21.1","typebox":"^1.1.34","wreq-js":"^3.0.0","defuddle":"^0.19.2","linkedom":"^0.18.12","pdf-parse":"^2.4.5","@mozilla/readability":"^0.6.0","@earendil-works/pi-tui":"^0.83.0 || ^0.84.0","youtube-transcript-plus":"^2.0.0","@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1","typescript":"^7.0.2","@types/node":"^26.1.2"},"peerDependencies":{"@earendil-works/pi-coding-agent":"^0.83.0 || ^0.84.0"},"optionalDependencies":{"playwright":"^1.55.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-webaio_0.9.0_1786975045375_0.7378524979700329","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"pi-webaio","version":"1.0.0","keywords":["pi","pi-extension","pi-package","web-scraping","web-fetch","crawler","markdown","anti-bot","tls-fingerprinting","pdf-extraction","duckduckgo","brave","google","google-search","ai-summarization","headless-chrome","cdp","llm","typescript"],"license":"MIT","_id":"pi-webaio@1.0.0","maintainers":[{"name":"apmantza","email":"ap.mantza@gmail.com"}],"homepage":"https://github.com/apmantza/pi-webaio#readme","bugs":{"url":"https://github.com/apmantza/pi-webaio/issues"},"pi":{"extensions":["./pi-entry.mjs"]},"bin":{"pi-webaio-mcp":"bin/pi-webaio-mcp.mjs"},"dist":{"shasum":"3787428d394fab578858936a80f85c2a8569dc66","tarball":"https://registry.npmjs.org/pi-webaio/-/pi-webaio-1.0.0.tgz","fileCount":115,"integrity":"sha512-8puxSD+vyMlnr2cYbLr6Wvg4w7IqefNwZVH8zKahoTrMvoTAgF2hlCJRcRJ7DcWTBV9ayPULZQzUxKEC4ma6vg==","signatures":[{"sig":"MEYCIQD70Eo2/hLMxbJ6qwz8HVIgcgT+TDqQS8deu+0qPZ2VwgIhANeyBdsfqJmOjomEzRLjWuUzNzTkrvNQc7PlaFiF0OvZ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/pi-webaio@1.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1571361},"main":"./dist/index.js","type":"module","gitHead":"bfd6549496ff09567877f5e017707cb42ffabaf5","imports":{"#stealth-script":"./extractors/stealth-script.mjs"},"scripts":{"lint":"tsc --project tsconfig.json","test":"node --experimental-strip-types --test tests/unit.test.mjs","bench":"node --experimental-strip-types scripts/bench-extraction.mjs","build":"tsc --project tsconfig.dist.json","watch":"tsc --watch","prepare":"node scripts/prepare.mjs","test:all":"node --experimental-strip-types --test tests/unit.test.mjs tests/startup-lazy.test.mjs tests/tui-compat.test.mjs tests/websearch-google-flag.test.mjs tests/google-cdp-broker.test.mjs tests/google-cdp-broker-process.test.mjs tests/google-cdp-broker-cdp.test.mjs tests/google-cdp-broker-client.test.mjs tests/google-ai-broker.test.mjs tests/google-search-waits.test.mjs tests/new-features.test.mjs tests/paywall.test.mjs tests/github-check.test.mjs tests/reddit-block.test.mjs tests/reddit-search.test.mjs tests/github-map.test.mjs tests/render-result.test.mjs tests/fetch-error.test.mjs tests/fetch-progress.test.mjs tests/hardening.test.mjs tests/fingerprint.test.mjs tests/format.test.mjs tests/webfetch-summary.test.mjs tests/search-context.test.mjs tests/chunker.test.mjs tests/prune-markdown.test.mjs tests/integration.test.mjs tests/bench-harness.test.mjs tests/webresearch.test.mjs tests/source-ranking.test.mjs tests/cookie-cache.test.mjs tests/goggles.test.mjs tests/stance.test.mjs tests/bot-wait.test.mjs tests/ssrf-allowlist.test.mjs tests/lifecycle-hooks.test.mjs tests/webquery.test.mjs tests/ssrf-hardening.test.mjs tests/redact.test.mjs tests/title-extraction.test.mjs tests/source-trust.test.mjs tests/diagnose-backends.test.mjs tests/security-crosscheck.test.mjs tests/verticals-context7-deepwiki.test.mjs tests/search-diversity.test.mjs tests/content-hash-dedup.test.mjs tests/local-precheck.test.mjs tests/escalation-404.test.mjs tests/batch-throw-isolation.test.mjs tests/debug.test.mjs tests/search-engine-status.test.mjs tests/search-orchestration.test.mjs tests/browser-obs.test.mjs tests/obs-small-wins.test.mjs tests/perf-extraction.test.mjs tests/perf-browser-pool.test.mjs tests/perf-search-deadline.test.mjs tests/perf-workers-cache.test.mjs tests/ux-webfetch-output.test.mjs tests/ux-compact-search.test.mjs tests/ux-multi-answer.test.mjs tests/extraction-quality.test.mjs tests/search-render.test.mjs","test:mcp":"node --test tests/mcp-server.test.mjs","test:new":"node --experimental-strip-types --test tests/new-features.test.mjs","test:ssrf":"node --experimental-strip-types --test tests/ssrf-hardening.test.mjs","build:dist":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\" && tsc --project tsconfig.dist.json","test:bench":"node --experimental-strip-types --test tests/bench-harness.test.mjs","test:check":"node --experimental-strip-types --test tests/github-check.test.mjs","test:debug":"node --experimental-strip-types --test tests/debug.test.mjs","test:prune":"node --experimental-strip-types --test tests/prune-markdown.test.mjs","test:broker":"node --test tests/google-cdp-broker.test.mjs tests/google-cdp-broker-process.test.mjs tests/google-cdp-broker-cdp.test.mjs tests/google-cdp-broker-client.test.mjs tests/google-ai-broker.test.mjs","test:format":"node --experimental-strip-types --test tests/format.test.mjs","test:redact":"node --experimental-strip-types --test tests/redact.test.mjs","test:reddit":"node --experimental-strip-types --test tests/reddit-block.test.mjs","test:render":"node --experimental-strip-types --test tests/render-result.test.mjs","test:stance":"node --experimental-strip-types --test tests/stance.test.mjs","test:chunker":"node --experimental-strip-types --test tests/chunker.test.mjs","test:paywall":"node --experimental-strip-types --test tests/paywall.test.mjs","test:startup":"node --experimental-strip-types --test tests/startup-lazy.test.mjs","check:lockfile":"node scripts/check-lockfile-sync.mjs","test:hardening":"node --experimental-strip-types --test tests/hardening.test.mjs","changelog:check":"node scripts/changelog-release.mjs --check","test:escalation":"node --experimental-strip-types --test tests/escalation-404.test.mjs","test:fetcherror":"node --experimental-strip-types --test tests/fetch-error.test.mjs","test:github-map":"node --experimental-strip-types --test tests/github-map.test.mjs","bench:google-cdp":"node --experimental-strip-types scripts/bench-google-cdp.mjs","test:browser-obs":"node --experimental-strip-types --test tests/browser-obs.test.mjs","test:fingerprint":"node --experimental-strip-types --test tests/fingerprint.test.mjs","test:integration":"node --experimental-strip-types --test tests/integration.test.mjs","test:webresearch":"node --experimental-strip-types --test tests/webresearch.test.mjs","changelog:extract":"node scripts/changelog-extract.mjs","changelog:release":"node scripts/changelog-release.mjs","diagnose:backends":"node scripts/diagnose-backends.mjs","test:cookie-cache":"node --experimental-strip-types --test tests/cookie-cache.test.mjs","test:fetchprogress":"node --experimental-strip-types --test tests/fetch-progress.test.mjs","test:search-render":"node --experimental-strip-types --test tests/search-render.test.mjs","test:obs-small-wins":"node --experimental-strip-types --test tests/obs-small-wins.test.mjs","test:search-context":"node --experimental-strip-types --test tests/search-context.test.mjs","test:source-ranking":"node --experimental-strip-types --test tests/source-ranking.test.mjs","diagnose:fingerprint":"node --experimental-strip-types scripts/fingerprint-diagnostics.mjs","test:batch-isolation":"node --experimental-strip-types --test tests/batch-throw-isolation.test.mjs","test:perf-extraction":"node --experimental-strip-types --test tests/perf-extraction.test.mjs","test:ux-multi-answer":"node --experimental-strip-types --test tests/ux-multi-answer.test.mjs","test:title-extraction":"node --experimental-strip-types --test tests/title-extraction.test.mjs","test:webfetch-summary":"node --experimental-strip-types --test tests/webfetch-summary.test.mjs","release:backfill-notes":"node scripts/backfill-github-releases.mjs","test:perf-browser-pool":"node --experimental-strip-types --test tests/perf-browser-pool.test.mjs","test:ux-compact-search":"node --experimental-strip-types --test tests/ux-compact-search.test.mjs","test:extraction-quality":"node --experimental-strip-types --test tests/extraction-quality.test.mjs","test:perf-workers-cache":"node --experimental-strip-types --test tests/perf-workers-cache.test.mjs","test:ux-webfetch-output":"node --experimental-strip-types --test tests/ux-webfetch-output.test.mjs","test:perf-search-deadline":"node --experimental-strip-types --test tests/perf-search-deadline.test.mjs","test:search-engine-status":"node --experimental-strip-types --test tests/search-engine-status.test.mjs","test:search-orchestration":"node --experimental-strip-types --test tests/search-orchestration.test.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a3c2dd9e-28f3-407f-8bca-8666abee0b95"}},"overrides":{"protobufjs":"^7.6.5","@hono/node-server":"^2.0.5"},"repository":{"url":"git+https://github.com/apmantza/pi-webaio.git","type":"git"},"_npmVersion":"11.17.0","description":"All-in-one web tools for pi with search (Google, Brave, DDG) and fetch with headless browser AI summarization","directories":{},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.21.1","wreq-js":"^3.0.0","defuddle":"^0.19.2","linkedom":"^0.18.12","pdf-parse":"^2.4.5","@mozilla/readability":"^0.6.0","youtube-transcript-plus":"^2.0.0","@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1","typescript":"^7.0.2","@types/node":"^26.1.2","@earendil-works/pi-tui":"^0.83.0 || ^0.84.0"},"peerDependencies":{"@earendil-works/pi-tui":"^0.83.0 || ^0.84.0","@earendil-works/pi-coding-agent":"^0.83.0 || ^0.84.0"},"optionalDependencies":{"playwright":"^1.55.0"},"peerDependenciesMeta":{"@earendil-works/pi-tui":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-webaio_1.0.0_1787385281309_0.020791508059444963","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"pi-webaio","version":"1.0.1","keywords":["pi","pi-extension","pi-package","web-scraping","web-fetch","crawler","markdown","anti-bot","tls-fingerprinting","pdf-extraction","duckduckgo","brave","google","google-search","ai-summarization","headless-chrome","cdp","llm","typescript"],"license":"MIT","_id":"pi-webaio@1.0.1","maintainers":[{"name":"apmantza","email":"ap.mantza@gmail.com"}],"homepage":"https://github.com/apmantza/pi-webaio#readme","bugs":{"url":"https://github.com/apmantza/pi-webaio/issues"},"pi":{"extensions":["./pi-entry.mjs"]},"bin":{"pi-webaio-mcp":"bin/pi-webaio-mcp.mjs"},"dist":{"shasum":"801dff35bce78a256a6d4f65d22aa8541332c601","tarball":"https://registry.npmjs.org/pi-webaio/-/pi-webaio-1.0.1.tgz","fileCount":115,"integrity":"sha512-aMH4DEIA5JqnfaCaYSuNZ1Ham8I2ukP5/IqSCeNr2Y5UYRYh5G3ART+I3djIgzvZxXD8siUj2U+7RJBN+1xR5Q==","signatures":[{"sig":"MEQCIH/vqSSIuiflU87uSPHeITM8sfJyFjSclkDYdnZONdmSAiBKIgL/+Wn2kzFwyA+Sv18Pg/7QPElV7I0JFCpfQ3PYvg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/pi-webaio@1.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1578445},"main":"./dist/index.js","type":"module","gitHead":"1f0cd60bdac7e7cd0fd9cbc8bba4442d609d7e65","imports":{"#stealth-script":"./extractors/stealth-script.mjs"},"scripts":{"lint":"tsc --project tsconfig.json","test":"node --experimental-strip-types --test tests/unit.test.mjs","bench":"node --experimental-strip-types scripts/bench-extraction.mjs","build":"tsc --project tsconfig.dist.json","watch":"tsc --watch","prepare":"node scripts/prepare.mjs","test:all":"node --experimental-strip-types --test tests/unit.test.mjs tests/startup-lazy.test.mjs tests/tui-compat.test.mjs tests/websearch-google-flag.test.mjs tests/google-cdp-broker.test.mjs tests/google-cdp-broker-process.test.mjs tests/google-cdp-broker-cdp.test.mjs tests/google-cdp-broker-client.test.mjs tests/google-ai-broker.test.mjs tests/google-search-waits.test.mjs tests/new-features.test.mjs tests/paywall.test.mjs tests/github-check.test.mjs tests/reddit-block.test.mjs tests/reddit-search.test.mjs tests/github-map.test.mjs tests/render-result.test.mjs tests/fetch-error.test.mjs tests/fetch-progress.test.mjs tests/hardening.test.mjs tests/fingerprint.test.mjs tests/format.test.mjs tests/webfetch-summary.test.mjs tests/search-context.test.mjs tests/chunker.test.mjs tests/prune-markdown.test.mjs tests/integration.test.mjs tests/bench-harness.test.mjs tests/webresearch.test.mjs tests/source-ranking.test.mjs tests/cookie-cache.test.mjs tests/goggles.test.mjs tests/stance.test.mjs tests/bot-wait.test.mjs tests/ssrf-allowlist.test.mjs tests/lifecycle-hooks.test.mjs tests/webquery.test.mjs tests/ssrf-hardening.test.mjs tests/redact.test.mjs tests/title-extraction.test.mjs tests/source-trust.test.mjs tests/diagnose-backends.test.mjs tests/security-crosscheck.test.mjs tests/verticals-context7-deepwiki.test.mjs tests/search-diversity.test.mjs tests/content-hash-dedup.test.mjs tests/local-precheck.test.mjs tests/escalation-404.test.mjs tests/batch-throw-isolation.test.mjs tests/debug.test.mjs tests/search-engine-status.test.mjs tests/search-orchestration.test.mjs tests/browser-obs.test.mjs tests/obs-small-wins.test.mjs tests/perf-extraction.test.mjs tests/perf-browser-pool.test.mjs tests/perf-search-deadline.test.mjs tests/perf-workers-cache.test.mjs tests/ux-webfetch-output.test.mjs tests/ux-compact-search.test.mjs tests/ux-multi-answer.test.mjs tests/extraction-quality.test.mjs tests/search-render.test.mjs","test:mcp":"node --test tests/mcp-server.test.mjs","test:new":"node --experimental-strip-types --test tests/new-features.test.mjs","test:ssrf":"node --experimental-strip-types --test tests/ssrf-hardening.test.mjs","build:dist":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\" && tsc --project tsconfig.dist.json","test:bench":"node --experimental-strip-types --test tests/bench-harness.test.mjs","test:check":"node --experimental-strip-types --test tests/github-check.test.mjs","test:debug":"node --experimental-strip-types --test tests/debug.test.mjs","test:prune":"node --experimental-strip-types --test tests/prune-markdown.test.mjs","test:broker":"node --test tests/google-cdp-broker.test.mjs tests/google-cdp-broker-process.test.mjs tests/google-cdp-broker-cdp.test.mjs tests/google-cdp-broker-client.test.mjs tests/google-ai-broker.test.mjs","test:format":"node --experimental-strip-types --test tests/format.test.mjs","test:redact":"node --experimental-strip-types --test tests/redact.test.mjs","test:reddit":"node --experimental-strip-types --test tests/reddit-block.test.mjs","test:render":"node --experimental-strip-types --test tests/render-result.test.mjs","test:stance":"node --experimental-strip-types --test tests/stance.test.mjs","test:chunker":"node --experimental-strip-types --test tests/chunker.test.mjs","test:paywall":"node --experimental-strip-types --test tests/paywall.test.mjs","test:startup":"node --experimental-strip-types --test tests/startup-lazy.test.mjs","check:lockfile":"node scripts/check-lockfile-sync.mjs","test:hardening":"node --experimental-strip-types --test tests/hardening.test.mjs","changelog:check":"node scripts/changelog-release.mjs --check","test:escalation":"node --experimental-strip-types --test tests/escalation-404.test.mjs","test:fetcherror":"node --experimental-strip-types --test tests/fetch-error.test.mjs","test:github-map":"node --experimental-strip-types --test tests/github-map.test.mjs","bench:google-cdp":"node --experimental-strip-types scripts/bench-google-cdp.mjs","test:browser-obs":"node --experimental-strip-types --test tests/browser-obs.test.mjs","test:fingerprint":"node --experimental-strip-types --test tests/fingerprint.test.mjs","test:integration":"node --experimental-strip-types --test tests/integration.test.mjs","test:webresearch":"node --experimental-strip-types --test tests/webresearch.test.mjs","changelog:extract":"node scripts/changelog-extract.mjs","changelog:release":"node scripts/changelog-release.mjs","diagnose:backends":"node scripts/diagnose-backends.mjs","test:cookie-cache":"node --experimental-strip-types --test tests/cookie-cache.test.mjs","test:fetchprogress":"node --experimental-strip-types --test tests/fetch-progress.test.mjs","test:search-render":"node --experimental-strip-types --test tests/search-render.test.mjs","test:obs-small-wins":"node --experimental-strip-types --test tests/obs-small-wins.test.mjs","test:search-context":"node --experimental-strip-types --test tests/search-context.test.mjs","test:source-ranking":"node --experimental-strip-types --test tests/source-ranking.test.mjs","diagnose:fingerprint":"node --experimental-strip-types scripts/fingerprint-diagnostics.mjs","test:batch-isolation":"node --experimental-strip-types --test tests/batch-throw-isolation.test.mjs","test:perf-extraction":"node --experimental-strip-types --test tests/perf-extraction.test.mjs","test:ux-multi-answer":"node --experimental-strip-types --test tests/ux-multi-answer.test.mjs","test:title-extraction":"node --experimental-strip-types --test tests/title-extraction.test.mjs","test:webfetch-summary":"node --experimental-strip-types --test tests/webfetch-summary.test.mjs","release:backfill-notes":"node scripts/backfill-github-releases.mjs","test:perf-browser-pool":"node --experimental-strip-types --test tests/perf-browser-pool.test.mjs","test:ux-compact-search":"node --experimental-strip-types --test tests/ux-compact-search.test.mjs","test:extraction-quality":"node --experimental-strip-types --test tests/extraction-quality.test.mjs","test:perf-workers-cache":"node --experimental-strip-types --test tests/perf-workers-cache.test.mjs","test:ux-webfetch-output":"node --experimental-strip-types --test tests/ux-webfetch-output.test.mjs","test:perf-search-deadline":"node --experimental-strip-types --test tests/perf-search-deadline.test.mjs","test:search-engine-status":"node --experimental-strip-types --test tests/search-engine-status.test.mjs","test:search-orchestration":"node --experimental-strip-types --test tests/search-orchestration.test.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a3c2dd9e-28f3-407f-8bca-8666abee0b95"}},"overrides":{"protobufjs":"^7.6.5","@hono/node-server":"^2.0.5"},"repository":{"url":"git+https://github.com/apmantza/pi-webaio.git","type":"git"},"_npmVersion":"11.17.0","description":"All-in-one web tools for pi with search (Google, Brave, DDG) and fetch with headless browser AI summarization","directories":{},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.21.1","wreq-js":"^3.0.0","defuddle":"^0.19.2","linkedom":"^0.18.12","pdf-parse":"^2.4.5","@mozilla/readability":"^0.6.0","youtube-transcript-plus":"^2.0.0","@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1","typescript":"^7.0.2","@types/node":"^26.1.2","@earendil-works/pi-tui":"^0.83.0 || ^0.84.0"},"peerDependencies":{"@earendil-works/pi-tui":"^0.83.0 || ^0.84.0","@earendil-works/pi-coding-agent":"^0.83.0 || ^0.84.0"},"optionalDependencies":{"playwright":"^1.55.0"},"peerDependenciesMeta":{"@earendil-works/pi-tui":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-webaio_1.0.1_1787434402837_0.16068863111614484","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"pi-webaio","version":"1.0.2","keywords":["pi","pi-extension","pi-package","web-scraping","web-fetch","crawler","markdown","anti-bot","tls-fingerprinting","pdf-extraction","duckduckgo","brave","google","google-search","ai-summarization","headless-chrome","cdp","llm","typescript"],"license":"MIT","_id":"pi-webaio@1.0.2","maintainers":[{"name":"apmantza","email":"ap.mantza@gmail.com"}],"homepage":"https://github.com/apmantza/pi-webaio#readme","bugs":{"url":"https://github.com/apmantza/pi-webaio/issues"},"pi":{"extensions":["./pi-entry.mjs"]},"bin":{"pi-webaio-mcp":"bin/pi-webaio-mcp.mjs"},"dist":{"shasum":"07f62921165edd3a6016b3751b6ba41c91451055","tarball":"https://registry.npmjs.org/pi-webaio/-/pi-webaio-1.0.2.tgz","fileCount":115,"integrity":"sha512-bPTLbRNahzI/18l7/4q4GuGS+blI+zz4h2jlSpp6cdjZak/UGq68Nin3agbOY3hzKyqEcx70KTMVQiSkSW/dCw==","signatures":[{"sig":"MEYCIQDKxgv9BjMz8HvBmxKvfXtV9QyPwDvxNE2qMVao7g0KoQIhAMcfsRDLKzhyoQNQHs2439tYM8EE82roX085UlxON4xR","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/pi-webaio@1.0.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1581343},"main":"./dist/index.js","type":"module","gitHead":"85f145fe0c95604f826c7a353d0fb7764cded131","imports":{"#stealth-script":"./extractors/stealth-script.mjs"},"scripts":{"lint":"tsc --project tsconfig.json","test":"node --experimental-strip-types --test tests/unit.test.mjs","bench":"node --experimental-strip-types scripts/bench-extraction.mjs","build":"tsc --project tsconfig.dist.json","watch":"tsc --watch","prepare":"node scripts/prepare.mjs","test:all":"node --experimental-strip-types --test tests/unit.test.mjs tests/startup-lazy.test.mjs tests/tui-compat.test.mjs tests/websearch-google-flag.test.mjs tests/google-cdp-broker.test.mjs tests/google-cdp-broker-process.test.mjs tests/google-cdp-broker-cdp.test.mjs tests/google-cdp-broker-client.test.mjs tests/google-ai-broker.test.mjs tests/google-search-waits.test.mjs tests/new-features.test.mjs tests/paywall.test.mjs tests/github-check.test.mjs tests/reddit-block.test.mjs tests/reddit-search.test.mjs tests/github-map.test.mjs tests/render-result.test.mjs tests/fetch-error.test.mjs tests/fetch-progress.test.mjs tests/hardening.test.mjs tests/fingerprint.test.mjs tests/format.test.mjs tests/webfetch-summary.test.mjs tests/search-context.test.mjs tests/chunker.test.mjs tests/prune-markdown.test.mjs tests/integration.test.mjs tests/bench-harness.test.mjs tests/webresearch.test.mjs tests/source-ranking.test.mjs tests/cookie-cache.test.mjs tests/goggles.test.mjs tests/stance.test.mjs tests/bot-wait.test.mjs tests/ssrf-allowlist.test.mjs tests/lifecycle-hooks.test.mjs tests/webquery.test.mjs tests/ssrf-hardening.test.mjs tests/redact.test.mjs tests/title-extraction.test.mjs tests/source-trust.test.mjs tests/diagnose-backends.test.mjs tests/security-crosscheck.test.mjs tests/verticals-context7-deepwiki.test.mjs tests/search-diversity.test.mjs tests/content-hash-dedup.test.mjs tests/local-precheck.test.mjs tests/escalation-404.test.mjs tests/batch-throw-isolation.test.mjs tests/debug.test.mjs tests/search-engine-status.test.mjs tests/search-orchestration.test.mjs tests/browser-obs.test.mjs tests/obs-small-wins.test.mjs tests/perf-extraction.test.mjs tests/perf-browser-pool.test.mjs tests/perf-search-deadline.test.mjs tests/perf-workers-cache.test.mjs tests/ux-webfetch-output.test.mjs tests/ux-compact-search.test.mjs tests/ux-multi-answer.test.mjs tests/extraction-quality.test.mjs tests/search-render.test.mjs","test:mcp":"node --test tests/mcp-server.test.mjs","test:new":"node --experimental-strip-types --test tests/new-features.test.mjs","test:ssrf":"node --experimental-strip-types --test tests/ssrf-hardening.test.mjs","build:dist":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\" && tsc --project tsconfig.dist.json","test:bench":"node --experimental-strip-types --test tests/bench-harness.test.mjs","test:check":"node --experimental-strip-types --test tests/github-check.test.mjs","test:debug":"node --experimental-strip-types --test tests/debug.test.mjs","test:prune":"node --experimental-strip-types --test tests/prune-markdown.test.mjs","test:broker":"node --test tests/google-cdp-broker.test.mjs tests/google-cdp-broker-process.test.mjs tests/google-cdp-broker-cdp.test.mjs tests/google-cdp-broker-client.test.mjs tests/google-ai-broker.test.mjs","test:format":"node --experimental-strip-types --test tests/format.test.mjs","test:redact":"node --experimental-strip-types --test tests/redact.test.mjs","test:reddit":"node --experimental-strip-types --test tests/reddit-block.test.mjs","test:render":"node --experimental-strip-types --test tests/render-result.test.mjs","test:stance":"node --experimental-strip-types --test tests/stance.test.mjs","test:chunker":"node --experimental-strip-types --test tests/chunker.test.mjs","test:paywall":"node --experimental-strip-types --test tests/paywall.test.mjs","test:startup":"node --experimental-strip-types --test tests/startup-lazy.test.mjs","check:lockfile":"node scripts/check-lockfile-sync.mjs","test:hardening":"node --experimental-strip-types --test tests/hardening.test.mjs","changelog:check":"node scripts/changelog-release.mjs --check","test:escalation":"node --experimental-strip-types --test tests/escalation-404.test.mjs","test:fetcherror":"node --experimental-strip-types --test tests/fetch-error.test.mjs","test:github-map":"node --experimental-strip-types --test tests/github-map.test.mjs","bench:google-cdp":"node --experimental-strip-types scripts/bench-google-cdp.mjs","test:browser-obs":"node --experimental-strip-types --test tests/browser-obs.test.mjs","test:fingerprint":"node --experimental-strip-types --test tests/fingerprint.test.mjs","test:integration":"node --experimental-strip-types --test tests/integration.test.mjs","test:webresearch":"node --experimental-strip-types --test tests/webresearch.test.mjs","changelog:extract":"node scripts/changelog-extract.mjs","changelog:release":"node scripts/changelog-release.mjs","diagnose:backends":"node scripts/diagnose-backends.mjs","test:cookie-cache":"node --experimental-strip-types --test tests/cookie-cache.test.mjs","test:fetchprogress":"node --experimental-strip-types --test tests/fetch-progress.test.mjs","test:search-render":"node --experimental-strip-types --test tests/search-render.test.mjs","test:obs-small-wins":"node --experimental-strip-types --test tests/obs-small-wins.test.mjs","test:search-context":"node --experimental-strip-types --test tests/search-context.test.mjs","test:source-ranking":"node --experimental-strip-types --test tests/source-ranking.test.mjs","diagnose:fingerprint":"node --experimental-strip-types scripts/fingerprint-diagnostics.mjs","test:batch-isolation":"node --experimental-strip-types --test tests/batch-throw-isolation.test.mjs","test:perf-extraction":"node --experimental-strip-types --test tests/perf-extraction.test.mjs","test:ux-multi-answer":"node --experimental-strip-types --test tests/ux-multi-answer.test.mjs","test:title-extraction":"node --experimental-strip-types --test tests/title-extraction.test.mjs","test:webfetch-summary":"node --experimental-strip-types --test tests/webfetch-summary.test.mjs","release:backfill-notes":"node scripts/backfill-github-releases.mjs","test:perf-browser-pool":"node --experimental-strip-types --test tests/perf-browser-pool.test.mjs","test:ux-compact-search":"node --experimental-strip-types --test tests/ux-compact-search.test.mjs","test:extraction-quality":"node --experimental-strip-types --test tests/extraction-quality.test.mjs","test:perf-workers-cache":"node --experimental-strip-types --test tests/perf-workers-cache.test.mjs","test:ux-webfetch-output":"node --experimental-strip-types --test tests/ux-webfetch-output.test.mjs","test:perf-search-deadline":"node --experimental-strip-types --test tests/perf-search-deadline.test.mjs","test:search-engine-status":"node --experimental-strip-types --test tests/search-engine-status.test.mjs","test:search-orchestration":"node --experimental-strip-types --test tests/search-orchestration.test.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a3c2dd9e-28f3-407f-8bca-8666abee0b95"}},"overrides":{"protobufjs":"^7.6.5","@hono/node-server":"^2.0.5"},"repository":{"url":"git+https://github.com/apmantza/pi-webaio.git","type":"git"},"_npmVersion":"11.17.0","description":"All-in-one web tools for pi with search (Google, Brave, DDG) and fetch with headless browser AI summarization","directories":{},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.21.1","wreq-js":"^3.0.0","defuddle":"^0.19.2","linkedom":"^0.18.12","pdf-parse":"^2.4.5","@mozilla/readability":"^0.6.0","youtube-transcript-plus":"^2.0.0","@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1","typescript":"^7.0.2","@types/node":"^26.1.2","@earendil-works/pi-tui":"^0.83.0 || ^0.84.0"},"peerDependencies":{"@earendil-works/pi-tui":"^0.83.0 || ^0.84.0","@earendil-works/pi-coding-agent":"^0.83.0 || ^0.84.0"},"optionalDependencies":{"playwright":"^1.55.0"},"peerDependenciesMeta":{"@earendil-works/pi-tui":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-webaio_1.0.2_1787923942775_0.0007152118757529635","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"pi-webaio","version":"1.0.3","keywords":["pi","pi-extension","pi-package","web-scraping","web-fetch","crawler","markdown","anti-bot","tls-fingerprinting","pdf-extraction","duckduckgo","brave","google","google-search","ai-summarization","headless-chrome","cdp","llm","typescript"],"license":"MIT","_id":"pi-webaio@1.0.3","maintainers":[{"name":"apmantza","email":"ap.mantza@gmail.com"}],"homepage":"https://github.com/apmantza/pi-webaio#readme","bugs":{"url":"https://github.com/apmantza/pi-webaio/issues"},"pi":{"extensions":["./pi-entry.mjs"]},"bin":{"pi-webaio-mcp":"bin/pi-webaio-mcp.mjs"},"dist":{"shasum":"4d3eaf07ddac4b5773ca7cb6bac6676b910f7721","tarball":"https://registry.npmjs.org/pi-webaio/-/pi-webaio-1.0.3.tgz","fileCount":118,"integrity":"sha512-0bKQC2UOQIlxgc4jgaAnQZjnkY2xaJMNDgQBZlfFJe4fKzuPAN9Vo/nWOckdAKK6poUQmQqoJVhYkdQVPNwAFQ==","signatures":[{"sig":"MEYCIQCRb1zOTmPRKa6EgDMrAgJMFEgk5gVy2gFDHpiTXSnhywIhANHrgHNctb+MGAvLDRXra1OYSlubNdi0r/E76EMq08rk","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/pi-webaio@1.0.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1608570},"main":"./dist/index.js","type":"module","gitHead":"2dcc1c7b22981daedc948498359edfd8a0b3f7de","imports":{"#stealth-script":"./extractors/stealth-script.mjs"},"scripts":{"lint":"tsc --project tsconfig.json","test":"node --experimental-strip-types --test tests/unit.test.mjs","bench":"node --experimental-strip-types scripts/bench-extraction.mjs","build":"tsc --project tsconfig.dist.json","watch":"tsc --watch","prepare":"node scripts/prepare.mjs","test:all":"node --experimental-strip-types --test tests/unit.test.mjs tests/startup-lazy.test.mjs tests/tui-compat.test.mjs tests/websearch-google-flag.test.mjs tests/google-cdp-broker.test.mjs tests/google-cdp-broker-process.test.mjs tests/google-cdp-broker-cdp.test.mjs tests/google-cdp-broker-client.test.mjs tests/google-ai-broker.test.mjs tests/google-search-waits.test.mjs tests/new-features.test.mjs tests/paywall.test.mjs tests/github-check.test.mjs tests/reddit-block.test.mjs tests/reddit-search.test.mjs tests/github-map.test.mjs tests/render-result.test.mjs tests/fetch-error.test.mjs tests/fetch-progress.test.mjs tests/hardening.test.mjs tests/fingerprint.test.mjs tests/format.test.mjs tests/webfetch-summary.test.mjs tests/search-context.test.mjs tests/chunker.test.mjs tests/prune-markdown.test.mjs tests/integration.test.mjs tests/bench-harness.test.mjs tests/webresearch.test.mjs tests/source-ranking.test.mjs tests/cookie-cache.test.mjs tests/goggles.test.mjs tests/stance.test.mjs tests/bot-wait.test.mjs tests/ssrf-allowlist.test.mjs tests/lifecycle-hooks.test.mjs tests/webquery.test.mjs tests/ssrf-hardening.test.mjs tests/redact.test.mjs tests/title-extraction.test.mjs tests/source-trust.test.mjs tests/diagnose-backends.test.mjs tests/security-crosscheck.test.mjs tests/verticals-context7-deepwiki.test.mjs tests/search-diversity.test.mjs tests/content-hash-dedup.test.mjs tests/local-precheck.test.mjs tests/escalation-404.test.mjs tests/batch-throw-isolation.test.mjs tests/debug.test.mjs tests/search-engine-status.test.mjs tests/search-orchestration.test.mjs tests/browser-obs.test.mjs tests/obs-small-wins.test.mjs tests/perf-extraction.test.mjs tests/perf-browser-pool.test.mjs tests/perf-search-deadline.test.mjs tests/perf-workers-cache.test.mjs tests/ux-webfetch-output.test.mjs tests/ux-compact-search.test.mjs tests/ux-multi-answer.test.mjs tests/extraction-quality.test.mjs tests/search-render.test.mjs","test:mcp":"node --test tests/mcp-server.test.mjs","test:new":"node --experimental-strip-types --test tests/new-features.test.mjs","test:ssrf":"node --experimental-strip-types --test tests/ssrf-hardening.test.mjs","build:dist":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\" && tsc --project tsconfig.dist.json","test:bench":"node --experimental-strip-types --test tests/bench-harness.test.mjs","test:check":"node --experimental-strip-types --test tests/github-check.test.mjs","test:debug":"node --experimental-strip-types --test tests/debug.test.mjs","test:prune":"node --experimental-strip-types --test tests/prune-markdown.test.mjs","test:broker":"node --test tests/google-cdp-broker.test.mjs tests/google-cdp-broker-process.test.mjs tests/google-cdp-broker-cdp.test.mjs tests/google-cdp-broker-client.test.mjs tests/google-ai-broker.test.mjs","test:format":"node --experimental-strip-types --test tests/format.test.mjs","test:redact":"node --experimental-strip-types --test tests/redact.test.mjs","test:reddit":"node --experimental-strip-types --test tests/reddit-block.test.mjs","test:render":"node --experimental-strip-types --test tests/render-result.test.mjs","test:stance":"node --experimental-strip-types --test tests/stance.test.mjs","test:chunker":"node --experimental-strip-types --test tests/chunker.test.mjs","test:paywall":"node --experimental-strip-types --test tests/paywall.test.mjs","test:startup":"node --experimental-strip-types --test tests/startup-lazy.test.mjs","check:lockfile":"node scripts/check-lockfile-sync.mjs","test:hardening":"node --experimental-strip-types --test tests/hardening.test.mjs","changelog:check":"node scripts/changelog-release.mjs --check","test:escalation":"node --experimental-strip-types --test tests/escalation-404.test.mjs","test:fetcherror":"node --experimental-strip-types --test tests/fetch-error.test.mjs","test:github-map":"node --experimental-strip-types --test tests/github-map.test.mjs","bench:google-cdp":"node --experimental-strip-types scripts/bench-google-cdp.mjs","test:browser-obs":"node --experimental-strip-types --test tests/browser-obs.test.mjs","test:fingerprint":"node --experimental-strip-types --test tests/fingerprint.test.mjs","test:integration":"node --experimental-strip-types --test tests/integration.test.mjs","test:webresearch":"node --experimental-strip-types --test tests/webresearch.test.mjs","changelog:extract":"node scripts/changelog-extract.mjs","changelog:release":"node scripts/changelog-release.mjs","diagnose:backends":"node scripts/diagnose-backends.mjs","test:cookie-cache":"node --experimental-strip-types --test tests/cookie-cache.test.mjs","test:fetchprogress":"node --experimental-strip-types --test tests/fetch-progress.test.mjs","test:search-render":"node --experimental-strip-types --test tests/search-render.test.mjs","test:obs-small-wins":"node --experimental-strip-types --test tests/obs-small-wins.test.mjs","test:search-context":"node --experimental-strip-types --test tests/search-context.test.mjs","test:source-ranking":"node --experimental-strip-types --test tests/source-ranking.test.mjs","diagnose:fingerprint":"node --experimental-strip-types scripts/fingerprint-diagnostics.mjs","test:batch-isolation":"node --experimental-strip-types --test tests/batch-throw-isolation.test.mjs","test:perf-extraction":"node --experimental-strip-types --test tests/perf-extraction.test.mjs","test:ux-multi-answer":"node --experimental-strip-types --test tests/ux-multi-answer.test.mjs","test:title-extraction":"node --experimental-strip-types --test tests/title-extraction.test.mjs","test:webfetch-summary":"node --experimental-strip-types --test tests/webfetch-summary.test.mjs","release:backfill-notes":"node scripts/backfill-github-releases.mjs","test:perf-browser-pool":"node --experimental-strip-types --test tests/perf-browser-pool.test.mjs","test:ux-compact-search":"node --experimental-strip-types --test tests/ux-compact-search.test.mjs","test:extraction-quality":"node --experimental-strip-types --test tests/extraction-quality.test.mjs","test:perf-workers-cache":"node --experimental-strip-types --test tests/perf-workers-cache.test.mjs","test:ux-webfetch-output":"node --experimental-strip-types --test tests/ux-webfetch-output.test.mjs","test:perf-search-deadline":"node --experimental-strip-types --test tests/perf-search-deadline.test.mjs","test:search-engine-status":"node --experimental-strip-types --test tests/search-engine-status.test.mjs","test:search-orchestration":"node --experimental-strip-types --test tests/search-orchestration.test.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a3c2dd9e-28f3-407f-8bca-8666abee0b95"}},"overrides":{"protobufjs":"^7.6.5","@hono/node-server":"^2.0.5"},"repository":{"url":"git+https://github.com/apmantza/pi-webaio.git","type":"git"},"_npmVersion":"11.17.0","description":"All-in-one web tools for pi with search (Google, Brave, DDG, TinyFish, FireCrawl) and fetch with headless browser AI summarization, TinyFish Fetch, and FireCrawl Keyless Scrape","directories":{},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.21.1","wreq-js":"^3.0.0","defuddle":"^0.19.2","linkedom":"^0.18.12","pdf-parse":"^2.4.5","@mozilla/readability":"^0.6.0","youtube-transcript-plus":"^2.0.0","@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1","typescript":"^7.0.2","@types/node":"^26.1.2","@earendil-works/pi-tui":"^0.83.0 || ^0.84.0"},"peerDependencies":{"@earendil-works/pi-tui":"^0.83.0 || ^0.84.0","@earendil-works/pi-coding-agent":"^0.83.0 || ^0.84.0"},"optionalDependencies":{"playwright":"^1.55.0"},"peerDependenciesMeta":{"@earendil-works/pi-tui":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-webaio_1.0.3_1787950707742_0.7157679553088718","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"pi-webaio","version":"1.0.4","keywords":["pi","pi-extension","pi-package","web-scraping","web-fetch","crawler","markdown","anti-bot","tls-fingerprinting","pdf-extraction","duckduckgo","brave","google","google-search","ai-summarization","headless-chrome","cdp","llm","typescript"],"license":"MIT","_id":"pi-webaio@1.0.4","maintainers":[{"name":"apmantza","email":"ap.mantza@gmail.com"}],"homepage":"https://github.com/apmantza/pi-webaio#readme","bugs":{"url":"https://github.com/apmantza/pi-webaio/issues"},"pi":{"extensions":["./pi-entry.mjs"]},"bin":{"pi-webaio-mcp":"bin/pi-webaio-mcp.mjs"},"dist":{"shasum":"5603e8fe8f09cd03b71963ea0960cd579c75a094","tarball":"https://registry.npmjs.org/pi-webaio/-/pi-webaio-1.0.4.tgz","fileCount":118,"integrity":"sha512-pODVFuLnq0L5lHX7l8cWUykDZm3XlHf75iuqHyF0lPcrZcsDILS5nt6Wd6HalLs/b9CrWQ2+u5bW/s+DWolJIg==","signatures":[{"sig":"MEUCIQCjcUdeA/znXcBc8ZW0SPpBABwSVNhF8ASUboQvQs572wIgfUknCT1YC3HTyulG+/f5J+VjsV/H4smpih+zKRQ2Ok8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/pi-webaio@1.0.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1620308},"main":"./dist/index.js","type":"module","gitHead":"722cc21b3fd13bc367cffefa57873876329d5593","imports":{"#stealth-script":"./extractors/stealth-script.mjs"},"scripts":{"lint":"tsc --project tsconfig.json","test":"node --experimental-strip-types --test tests/unit.test.mjs","bench":"node --experimental-strip-types scripts/bench-extraction.mjs","build":"tsc --project tsconfig.dist.json","watch":"tsc --watch","prepare":"node scripts/prepare.mjs","test:all":"node --experimental-strip-types --test tests/unit.test.mjs tests/startup-lazy.test.mjs tests/tui-compat.test.mjs tests/websearch-google-flag.test.mjs tests/google-cdp-broker.test.mjs tests/google-cdp-broker-process.test.mjs tests/google-cdp-broker-cdp.test.mjs tests/google-cdp-broker-client.test.mjs tests/google-ai-broker.test.mjs tests/google-search-waits.test.mjs tests/new-features.test.mjs tests/paywall.test.mjs tests/github-check.test.mjs tests/reddit-block.test.mjs tests/reddit-search.test.mjs tests/github-map.test.mjs tests/render-result.test.mjs tests/fetch-error.test.mjs tests/fetch-progress.test.mjs tests/hardening.test.mjs tests/fingerprint.test.mjs tests/format.test.mjs tests/webfetch-summary.test.mjs tests/search-context.test.mjs tests/chunker.test.mjs tests/prune-markdown.test.mjs tests/integration.test.mjs tests/bench-harness.test.mjs tests/webresearch.test.mjs tests/source-ranking.test.mjs tests/cookie-cache.test.mjs tests/goggles.test.mjs tests/stance.test.mjs tests/bot-wait.test.mjs tests/ssrf-allowlist.test.mjs tests/lifecycle-hooks.test.mjs tests/webquery.test.mjs tests/ssrf-hardening.test.mjs tests/redact.test.mjs tests/title-extraction.test.mjs tests/source-trust.test.mjs tests/diagnose-backends.test.mjs tests/security-crosscheck.test.mjs tests/verticals-context7-deepwiki.test.mjs tests/search-diversity.test.mjs tests/content-hash-dedup.test.mjs tests/local-precheck.test.mjs tests/escalation-404.test.mjs tests/batch-throw-isolation.test.mjs tests/debug.test.mjs tests/search-engine-status.test.mjs tests/search-orchestration.test.mjs tests/browser-obs.test.mjs tests/obs-small-wins.test.mjs tests/perf-extraction.test.mjs tests/perf-browser-pool.test.mjs tests/perf-search-deadline.test.mjs tests/perf-workers-cache.test.mjs tests/ux-webfetch-output.test.mjs tests/ux-compact-search.test.mjs tests/ux-multi-answer.test.mjs tests/extraction-quality.test.mjs tests/search-render.test.mjs tests/websearch-default-captcha.test.mjs","test:mcp":"node --test tests/mcp-server.test.mjs","test:new":"node --experimental-strip-types --test tests/new-features.test.mjs","test:ssrf":"node --experimental-strip-types --test tests/ssrf-hardening.test.mjs","build:dist":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\" && tsc --project tsconfig.dist.json","test:bench":"node --experimental-strip-types --test tests/bench-harness.test.mjs","test:check":"node --experimental-strip-types --test tests/github-check.test.mjs","test:debug":"node --experimental-strip-types --test tests/debug.test.mjs","test:prune":"node --experimental-strip-types --test tests/prune-markdown.test.mjs","test:broker":"node --test tests/google-cdp-broker.test.mjs tests/google-cdp-broker-process.test.mjs tests/google-cdp-broker-cdp.test.mjs tests/google-cdp-broker-client.test.mjs tests/google-ai-broker.test.mjs","test:format":"node --experimental-strip-types --test tests/format.test.mjs","test:redact":"node --experimental-strip-types --test tests/redact.test.mjs","test:reddit":"node --experimental-strip-types --test tests/reddit-block.test.mjs","test:render":"node --experimental-strip-types --test tests/render-result.test.mjs","test:stance":"node --experimental-strip-types --test tests/stance.test.mjs","test:chunker":"node --experimental-strip-types --test tests/chunker.test.mjs","test:paywall":"node --experimental-strip-types --test tests/paywall.test.mjs","test:startup":"node --experimental-strip-types --test tests/startup-lazy.test.mjs","check:lockfile":"node scripts/check-lockfile-sync.mjs","test:hardening":"node --experimental-strip-types --test tests/hardening.test.mjs","changelog:check":"node scripts/changelog-release.mjs --check","test:escalation":"node --experimental-strip-types --test tests/escalation-404.test.mjs","test:fetcherror":"node --experimental-strip-types --test tests/fetch-error.test.mjs","test:github-map":"node --experimental-strip-types --test tests/github-map.test.mjs","bench:google-cdp":"node --experimental-strip-types scripts/bench-google-cdp.mjs","test:browser-obs":"node --experimental-strip-types --test tests/browser-obs.test.mjs","test:fingerprint":"node --experimental-strip-types --test tests/fingerprint.test.mjs","test:integration":"node --experimental-strip-types --test tests/integration.test.mjs","test:webresearch":"node --experimental-strip-types --test tests/webresearch.test.mjs","changelog:extract":"node scripts/changelog-extract.mjs","changelog:release":"node scripts/changelog-release.mjs","diagnose:backends":"node scripts/diagnose-backends.mjs","test:cookie-cache":"node --experimental-strip-types --test tests/cookie-cache.test.mjs","test:fetchprogress":"node --experimental-strip-types --test tests/fetch-progress.test.mjs","test:search-render":"node --experimental-strip-types --test tests/search-render.test.mjs","test:obs-small-wins":"node --experimental-strip-types --test tests/obs-small-wins.test.mjs","test:search-context":"node --experimental-strip-types --test tests/search-context.test.mjs","test:source-ranking":"node --experimental-strip-types --test tests/source-ranking.test.mjs","diagnose:fingerprint":"node --experimental-strip-types scripts/fingerprint-diagnostics.mjs","test:batch-isolation":"node --experimental-strip-types --test tests/batch-throw-isolation.test.mjs","test:perf-extraction":"node --experimental-strip-types --test tests/perf-extraction.test.mjs","test:ux-multi-answer":"node --experimental-strip-types --test tests/ux-multi-answer.test.mjs","test:title-extraction":"node --experimental-strip-types --test tests/title-extraction.test.mjs","test:webfetch-summary":"node --experimental-strip-types --test tests/webfetch-summary.test.mjs","release:backfill-notes":"node scripts/backfill-github-releases.mjs","test:perf-browser-pool":"node --experimental-strip-types --test tests/perf-browser-pool.test.mjs","test:ux-compact-search":"node --experimental-strip-types --test tests/ux-compact-search.test.mjs","test:extraction-quality":"node --experimental-strip-types --test tests/extraction-quality.test.mjs","test:perf-workers-cache":"node --experimental-strip-types --test tests/perf-workers-cache.test.mjs","test:ux-webfetch-output":"node --experimental-strip-types --test tests/ux-webfetch-output.test.mjs","test:perf-search-deadline":"node --experimental-strip-types --test tests/perf-search-deadline.test.mjs","test:search-engine-status":"node --experimental-strip-types --test tests/search-engine-status.test.mjs","test:search-orchestration":"node --experimental-strip-types --test tests/search-orchestration.test.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a3c2dd9e-28f3-407f-8bca-8666abee0b95"}},"overrides":{"protobufjs":"^7.6.5","@hono/node-server":"^2.0.5"},"repository":{"url":"git+https://github.com/apmantza/pi-webaio.git","type":"git"},"_npmVersion":"11.17.0","description":"All-in-one web tools for pi with search (Google, Brave, DDG, TinyFish, FireCrawl) and fetch with headless browser AI summarization, TinyFish Fetch, and FireCrawl Keyless Scrape","directories":{},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.21.1","wreq-js":"^3.0.0","defuddle":"^0.19.2","linkedom":"^0.18.12","pdf-parse":"^2.4.5","@mozilla/readability":"^0.6.0","youtube-transcript-plus":"^2.0.0","@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1","typescript":"^7.0.2","@types/node":"^26.1.2","@earendil-works/pi-tui":"^0.83.0 || ^0.84.0"},"peerDependencies":{"@earendil-works/pi-tui":"^0.83.0 || ^0.84.0","@earendil-works/pi-coding-agent":"^0.83.0 || ^0.84.0"},"optionalDependencies":{"playwright":"^1.55.0"},"peerDependenciesMeta":{"@earendil-works/pi-tui":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-webaio_1.0.4_1788206821418_0.77562082002036","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"pi-webaio","version":"1.0.5","keywords":["pi","pi-extension","pi-package","web-scraping","web-fetch","crawler","markdown","anti-bot","tls-fingerprinting","pdf-extraction","duckduckgo","brave","google","google-search","ai-summarization","headless-chrome","cdp","llm","typescript"],"license":"MIT","_id":"pi-webaio@1.0.5","maintainers":[{"name":"apmantza","email":"ap.mantza@gmail.com"}],"homepage":"https://github.com/apmantza/pi-webaio#readme","bugs":{"url":"https://github.com/apmantza/pi-webaio/issues"},"pi":{"extensions":["./pi-entry.mjs"]},"bin":{"pi-webaio-mcp":"bin/pi-webaio-mcp.mjs"},"dist":{"shasum":"6ae01fe96c783577ed51f850e27fd3e0e9aab786","tarball":"https://registry.npmjs.org/pi-webaio/-/pi-webaio-1.0.5.tgz","fileCount":118,"integrity":"sha512-gduNOSmuSY/ObFXlg03gSqfWUEfaIIlckk5P5L5XFX+wAKMHUFPyzL66xRi8L8lzcMj2H1P7tjBpj2c2APHu1w==","signatures":[{"sig":"MEUCIDiFlVLZAZqY+Nfn4PY0UNDsXbfy5LnF9LCJGdIkLH8kAiEAuhYsqqKRzKmC9zFkT2Wc1WtR0/xS27Pvt3NSeGT/3Z0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/pi-webaio@1.0.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1637113},"main":"./dist/index.js","type":"module","gitHead":"c9b0efc482b40f6566af88f75ae534119bff0e3d","imports":{"#stealth-script":"./extractors/stealth-script.mjs"},"scripts":{"lint":"tsc --project tsconfig.json","test":"node --experimental-strip-types --test tests/unit.test.mjs","bench":"node --experimental-strip-types scripts/bench-extraction.mjs","build":"tsc --project tsconfig.dist.json","watch":"tsc --watch","prepare":"node scripts/prepare.mjs","test:all":"node --experimental-strip-types --test tests/unit.test.mjs tests/startup-lazy.test.mjs tests/tui-compat.test.mjs tests/websearch-google-flag.test.mjs tests/google-cdp-broker.test.mjs tests/google-cdp-broker-process.test.mjs tests/google-cdp-broker-cdp.test.mjs tests/google-cdp-broker-client.test.mjs tests/google-ai-broker.test.mjs tests/google-search-waits.test.mjs tests/new-features.test.mjs tests/paywall.test.mjs tests/github-check.test.mjs tests/reddit-block.test.mjs tests/reddit-search.test.mjs tests/github-map.test.mjs tests/render-result.test.mjs tests/fetch-error.test.mjs tests/fetch-progress.test.mjs tests/hardening.test.mjs tests/fingerprint.test.mjs tests/format.test.mjs tests/webfetch-summary.test.mjs tests/search-context.test.mjs tests/chunker.test.mjs tests/prune-markdown.test.mjs tests/integration.test.mjs tests/bench-harness.test.mjs tests/webresearch.test.mjs tests/source-ranking.test.mjs tests/cookie-cache.test.mjs tests/goggles.test.mjs tests/stance.test.mjs tests/bot-wait.test.mjs tests/ssrf-allowlist.test.mjs tests/lifecycle-hooks.test.mjs tests/webquery.test.mjs tests/ssrf-hardening.test.mjs tests/redact.test.mjs tests/title-extraction.test.mjs tests/source-trust.test.mjs tests/diagnose-backends.test.mjs tests/security-crosscheck.test.mjs tests/verticals-context7-deepwiki.test.mjs tests/search-diversity.test.mjs tests/content-hash-dedup.test.mjs tests/local-precheck.test.mjs tests/escalation-404.test.mjs tests/batch-throw-isolation.test.mjs tests/debug.test.mjs tests/search-engine-status.test.mjs tests/search-orchestration.test.mjs tests/browser-obs.test.mjs tests/obs-small-wins.test.mjs tests/perf-extraction.test.mjs tests/perf-browser-pool.test.mjs tests/perf-search-deadline.test.mjs tests/perf-workers-cache.test.mjs tests/ux-webfetch-output.test.mjs tests/ux-compact-search.test.mjs tests/ux-multi-answer.test.mjs tests/extraction-quality.test.mjs tests/search-render.test.mjs tests/websearch-default-captcha.test.mjs","test:mcp":"node --test tests/mcp-server.test.mjs","test:new":"node --experimental-strip-types --test tests/new-features.test.mjs","test:ssrf":"node --experimental-strip-types --test tests/ssrf-hardening.test.mjs","build:dist":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\" && tsc --project tsconfig.dist.json","test:bench":"node --experimental-strip-types --test tests/bench-harness.test.mjs","test:check":"node --experimental-strip-types --test tests/github-check.test.mjs","test:debug":"node --experimental-strip-types --test tests/debug.test.mjs","test:prune":"node --experimental-strip-types --test tests/prune-markdown.test.mjs","test:broker":"node --test tests/google-cdp-broker.test.mjs tests/google-cdp-broker-process.test.mjs tests/google-cdp-broker-cdp.test.mjs tests/google-cdp-broker-client.test.mjs tests/google-ai-broker.test.mjs","test:format":"node --experimental-strip-types --test tests/format.test.mjs","test:redact":"node --experimental-strip-types --test tests/redact.test.mjs","test:reddit":"node --experimental-strip-types --test tests/reddit-block.test.mjs","test:render":"node --experimental-strip-types --test tests/render-result.test.mjs","test:stance":"node --experimental-strip-types --test tests/stance.test.mjs","test:chunker":"node --experimental-strip-types --test tests/chunker.test.mjs","test:paywall":"node --experimental-strip-types --test tests/paywall.test.mjs","test:startup":"node --experimental-strip-types --test tests/startup-lazy.test.mjs","check:lockfile":"node scripts/check-lockfile-sync.mjs","test:hardening":"node --experimental-strip-types --test tests/hardening.test.mjs","changelog:check":"node scripts/changelog-release.mjs --check","test:escalation":"node --experimental-strip-types --test tests/escalation-404.test.mjs","test:fetcherror":"node --experimental-strip-types --test tests/fetch-error.test.mjs","test:github-map":"node --experimental-strip-types --test tests/github-map.test.mjs","bench:google-cdp":"node --experimental-strip-types scripts/bench-google-cdp.mjs","test:browser-obs":"node --experimental-strip-types --test tests/browser-obs.test.mjs","test:fingerprint":"node --experimental-strip-types --test tests/fingerprint.test.mjs","test:integration":"node --experimental-strip-types --test tests/integration.test.mjs","test:webresearch":"node --experimental-strip-types --test tests/webresearch.test.mjs","changelog:extract":"node scripts/changelog-extract.mjs","changelog:release":"node scripts/changelog-release.mjs","diagnose:backends":"node scripts/diagnose-backends.mjs","test:cookie-cache":"node --experimental-strip-types --test tests/cookie-cache.test.mjs","test:fetchprogress":"node --experimental-strip-types --test tests/fetch-progress.test.mjs","test:search-render":"node --experimental-strip-types --test tests/search-render.test.mjs","test:obs-small-wins":"node --experimental-strip-types --test tests/obs-small-wins.test.mjs","test:search-context":"node --experimental-strip-types --test tests/search-context.test.mjs","test:source-ranking":"node --experimental-strip-types --test tests/source-ranking.test.mjs","diagnose:fingerprint":"node --experimental-strip-types scripts/fingerprint-diagnostics.mjs","test:batch-isolation":"node --experimental-strip-types --test tests/batch-throw-isolation.test.mjs","test:perf-extraction":"node --experimental-strip-types --test tests/perf-extraction.test.mjs","test:ux-multi-answer":"node --experimental-strip-types --test tests/ux-multi-answer.test.mjs","test:title-extraction":"node --experimental-strip-types --test tests/title-extraction.test.mjs","test:webfetch-summary":"node --experimental-strip-types --test tests/webfetch-summary.test.mjs","release:backfill-notes":"node scripts/backfill-github-releases.mjs","test:perf-browser-pool":"node --experimental-strip-types --test tests/perf-browser-pool.test.mjs","test:ux-compact-search":"node --experimental-strip-types --test tests/ux-compact-search.test.mjs","test:extraction-quality":"node --experimental-strip-types --test tests/extraction-quality.test.mjs","test:perf-workers-cache":"node --experimental-strip-types --test tests/perf-workers-cache.test.mjs","test:ux-webfetch-output":"node --experimental-strip-types --test tests/ux-webfetch-output.test.mjs","test:perf-search-deadline":"node --experimental-strip-types --test tests/perf-search-deadline.test.mjs","test:search-engine-status":"node --experimental-strip-types --test tests/search-engine-status.test.mjs","test:search-orchestration":"node --experimental-strip-types --test tests/search-orchestration.test.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a3c2dd9e-28f3-407f-8bca-8666abee0b95"}},"overrides":{"protobufjs":"^7.6.5","@hono/node-server":"^2.0.5"},"repository":{"url":"git+https://github.com/apmantza/pi-webaio.git","type":"git"},"_npmVersion":"11.17.0","description":"All-in-one web tools for pi with search (Google, Brave, DDG, TinyFish, FireCrawl) and fetch with headless browser AI summarization, TinyFish Fetch, and FireCrawl Keyless Scrape","directories":{},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.21.1","wreq-js":"^3.0.0","defuddle":"^0.19.2","linkedom":"^0.18.12","pdf-parse":"^2.4.5","@mozilla/readability":"^0.6.0","youtube-transcript-plus":"^2.0.0","@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1","typescript":"^7.0.2","@types/node":"^26.1.2","@earendil-works/pi-tui":"^0.83.0 || ^0.84.0"},"peerDependencies":{"@earendil-works/pi-tui":"^0.83.0 || ^0.84.0","@earendil-works/pi-coding-agent":"^0.83.0 || ^0.84.0"},"optionalDependencies":{"playwright":"^1.55.0"},"peerDependenciesMeta":{"@earendil-works/pi-tui":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-webaio_1.0.5_1788469405377_0.6678811726351179","host":"s3://npm-registry-packages-npm-production"}},"1.0.6":{"name":"pi-webaio","version":"1.0.6","keywords":["pi","pi-extension","pi-package","web-scraping","web-fetch","crawler","markdown","anti-bot","tls-fingerprinting","pdf-extraction","duckduckgo","brave","google","google-search","ai-summarization","headless-chrome","cdp","llm","typescript"],"license":"MIT","_id":"pi-webaio@1.0.6","maintainers":[{"name":"apmantza","email":"ap.mantza@gmail.com"}],"homepage":"https://github.com/apmantza/pi-webaio#readme","bugs":{"url":"https://github.com/apmantza/pi-webaio/issues"},"pi":{"extensions":["./pi-entry.mjs"]},"bin":{"pi-webaio-mcp":"bin/pi-webaio-mcp.mjs"},"dist":{"shasum":"903b0f65ab34da7ffba2f780a59c332a2500117c","tarball":"https://registry.npmjs.org/pi-webaio/-/pi-webaio-1.0.6.tgz","fileCount":220,"integrity":"sha512-tJh696ZGmOqykp0EsHMfRlBN75rxIw3x3LMCHb3wSKYVqdxlkiwFOK6Rab83hXNdIKu6mpM6QVyHv+BFh7bNig==","signatures":[{"sig":"MEUCIQCEqLOLeC7nHCyTV/P0YgXNzkZOpci3+uPeV8VthLyJagIgH6ksTlaALmDmvrU4Sb1ocufM3oN+1J/l7UjBmNNrRSU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/pi-webaio@1.0.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1931656},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./webfetch":{"types":"./dist/src/webfetch.d.ts","import":"./dist/src/webfetch.js"}},"gitHead":"47373b4be8e16f68ea3c48c08fc869a953253c3a","imports":{"#stealth-script":"./extractors/stealth-script.mjs"},"scripts":{"lint":"tsc --project tsconfig.json","test":"node --experimental-strip-types --test tests/unit.test.mjs","bench":"node --experimental-strip-types scripts/bench-extraction.mjs","build":"tsc --project tsconfig.dist.json","watch":"tsc --watch","prepare":"node scripts/prepare.mjs","pretest":"node scripts/check-node-test-runner.mjs","test:all":"node --experimental-strip-types --test tests/unit.test.mjs tests/startup-lazy.test.mjs tests/tui-compat.test.mjs tests/websearch-google-flag.test.mjs tests/google-cdp-broker.test.mjs tests/google-cdp-broker-process.test.mjs tests/google-cdp-broker-cdp.test.mjs tests/google-cdp-broker-client.test.mjs tests/google-ai-broker.test.mjs tests/google-search-waits.test.mjs tests/new-features.test.mjs tests/paywall.test.mjs tests/github-check.test.mjs tests/reddit-block.test.mjs tests/reddit-search.test.mjs tests/github-map.test.mjs tests/render-result.test.mjs tests/fetch-error.test.mjs tests/fetch-progress.test.mjs tests/static-webfetch-api.test.mjs tests/parallel.test.mjs tests/hardening.test.mjs tests/fingerprint.test.mjs tests/format.test.mjs tests/webfetch-summary.test.mjs tests/search-context.test.mjs tests/chunker.test.mjs tests/prune-markdown.test.mjs tests/integration.test.mjs tests/bench-harness.test.mjs tests/webresearch.test.mjs tests/source-ranking.test.mjs tests/cookie-cache.test.mjs tests/goggles.test.mjs tests/stance.test.mjs tests/bot-wait.test.mjs tests/ssrf-allowlist.test.mjs tests/lifecycle-hooks.test.mjs tests/webquery.test.mjs tests/ssrf-hardening.test.mjs tests/redact.test.mjs tests/title-extraction.test.mjs tests/source-trust.test.mjs tests/diagnose-backends.test.mjs tests/security-crosscheck.test.mjs tests/verticals-context7-deepwiki.test.mjs tests/search-diversity.test.mjs tests/content-hash-dedup.test.mjs tests/local-precheck.test.mjs tests/escalation-404.test.mjs tests/batch-throw-isolation.test.mjs tests/debug.test.mjs tests/search-engine-status.test.mjs tests/search-orchestration.test.mjs tests/browser-obs.test.mjs tests/obs-small-wins.test.mjs tests/perf-extraction.test.mjs tests/perf-browser-pool.test.mjs tests/perf-search-deadline.test.mjs tests/perf-workers-cache.test.mjs tests/ux-webfetch-output.test.mjs tests/ux-compact-search.test.mjs tests/ux-multi-answer.test.mjs tests/extraction-quality.test.mjs tests/search-render.test.mjs tests/websearch-default-captcha.test.mjs","test:mcp":"node --test tests/mcp-server.test.mjs","test:new":"node --experimental-strip-types --test tests/new-features.test.mjs","test:ssrf":"node --experimental-strip-types --test tests/ssrf-hardening.test.mjs","build:dist":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\" && tsc --project tsconfig.dist.json","test:bench":"node --experimental-strip-types --test tests/bench-harness.test.mjs","test:check":"node --experimental-strip-types --test tests/github-check.test.mjs","test:debug":"node --experimental-strip-types --test tests/debug.test.mjs","test:prune":"node --experimental-strip-types --test tests/prune-markdown.test.mjs","pretest:all":"node scripts/check-node-test-runner.mjs","test:broker":"node --test tests/google-cdp-broker.test.mjs tests/google-cdp-broker-process.test.mjs tests/google-cdp-broker-cdp.test.mjs tests/google-cdp-broker-client.test.mjs tests/google-ai-broker.test.mjs","test:format":"node --experimental-strip-types --test tests/format.test.mjs","test:redact":"node --experimental-strip-types --test tests/redact.test.mjs","test:reddit":"node --experimental-strip-types --test tests/reddit-block.test.mjs","test:render":"node --experimental-strip-types --test tests/render-result.test.mjs","test:stance":"node --experimental-strip-types --test tests/stance.test.mjs","test:chunker":"node --experimental-strip-types --test tests/chunker.test.mjs","test:paywall":"node --experimental-strip-types --test tests/paywall.test.mjs","test:startup":"node --experimental-strip-types --test tests/startup-lazy.test.mjs","test:parallel":"node --experimental-strip-types --test tests/parallel.test.mjs","check:lockfile":"node scripts/check-lockfile-sync.mjs","test:hardening":"node --experimental-strip-types --test tests/hardening.test.mjs","changelog:check":"node scripts/changelog-release.mjs --check","test:escalation":"node --experimental-strip-types --test tests/escalation-404.test.mjs","test:fetcherror":"node --experimental-strip-types --test tests/fetch-error.test.mjs","test:github-map":"node --experimental-strip-types --test tests/github-map.test.mjs","bench:google-cdp":"node --experimental-strip-types scripts/bench-google-cdp.mjs","test:browser-obs":"node --experimental-strip-types --test tests/browser-obs.test.mjs","test:fingerprint":"node --experimental-strip-types --test tests/fingerprint.test.mjs","test:integration":"node --experimental-strip-types --test tests/integration.test.mjs","test:webresearch":"node --experimental-strip-types --test tests/webresearch.test.mjs","changelog:extract":"node scripts/changelog-extract.mjs","changelog:release":"node scripts/changelog-release.mjs","diagnose:backends":"node scripts/diagnose-backends.mjs","test:cookie-cache":"node --experimental-strip-types --test tests/cookie-cache.test.mjs","test:webfetch-api":"node --experimental-strip-types --test tests/static-webfetch-api.test.mjs","test:fetchprogress":"node --experimental-strip-types --test tests/fetch-progress.test.mjs","test:search-render":"node --experimental-strip-types --test tests/search-render.test.mjs","test:obs-small-wins":"node --experimental-strip-types --test tests/obs-small-wins.test.mjs","test:search-context":"node --experimental-strip-types --test tests/search-context.test.mjs","test:source-ranking":"node --experimental-strip-types --test tests/source-ranking.test.mjs","diagnose:fingerprint":"node --experimental-strip-types scripts/fingerprint-diagnostics.mjs","test:batch-isolation":"node --experimental-strip-types --test tests/batch-throw-isolation.test.mjs","test:perf-extraction":"node --experimental-strip-types --test tests/perf-extraction.test.mjs","test:ux-multi-answer":"node --experimental-strip-types --test tests/ux-multi-answer.test.mjs","test:title-extraction":"node --experimental-strip-types --test tests/title-extraction.test.mjs","test:webfetch-package":"node scripts/test-static-webfetch-package.mjs","test:webfetch-summary":"node --experimental-strip-types --test tests/webfetch-summary.test.mjs","release:backfill-notes":"node scripts/backfill-github-releases.mjs","test:perf-browser-pool":"node --experimental-strip-types --test tests/perf-browser-pool.test.mjs","test:ux-compact-search":"node --experimental-strip-types --test tests/ux-compact-search.test.mjs","test:extraction-quality":"node --experimental-strip-types --test tests/extraction-quality.test.mjs","test:perf-workers-cache":"node --experimental-strip-types --test tests/perf-workers-cache.test.mjs","test:ux-webfetch-output":"node --experimental-strip-types --test tests/ux-webfetch-output.test.mjs","test:perf-search-deadline":"node --experimental-strip-types --test tests/perf-search-deadline.test.mjs","test:search-engine-status":"node --experimental-strip-types --test tests/search-engine-status.test.mjs","test:search-orchestration":"node --experimental-strip-types --test tests/search-orchestration.test.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a3c2dd9e-28f3-407f-8bca-8666abee0b95"}},"overrides":{"protobufjs":"^7.6.5","@hono/node-server":"^2.0.5"},"repository":{"url":"git+https://github.com/apmantza/pi-webaio.git","type":"git"},"_npmVersion":"11.19.0","description":"All-in-one web tools for pi with search (Google, Brave, DDG, TinyFish, FireCrawl) and fetch with headless browser AI summarization, TinyFish Fetch, and FireCrawl Keyless Scrape","directories":{},"_nodeVersion":"24.20.0","dependencies":{"ws":"^8.21.1","wreq-js":"^3.0.0","defuddle":"^0.19.2","linkedom":"^0.18.12","pdf-parse":"^2.4.5","@mozilla/readability":"^0.6.0","youtube-transcript-plus":"^2.0.0","@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1","typescript":"^7.0.2","@types/node":"^26.1.2","@earendil-works/pi-tui":"^0.83.0 || ^0.84.0"},"peerDependencies":{"@earendil-works/pi-tui":"^0.83.0 || ^0.84.0","@earendil-works/pi-coding-agent":"^0.83.0 || ^0.84.0"},"optionalDependencies":{"playwright":"^1.55.0"},"peerDependenciesMeta":{"@earendil-works/pi-tui":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-webaio_1.0.6_1788775941262_0.90882566156877","host":"s3://npm-registry-packages-npm-production"}},"1.0.7":{"name":"pi-webaio","version":"1.0.7","keywords":["pi","pi-extension","pi-package","web-scraping","web-fetch","crawler","markdown","anti-bot","tls-fingerprinting","pdf-extraction","duckduckgo","brave","google","google-search","ai-summarization","headless-chrome","cdp","llm","typescript"],"license":"MIT","_id":"pi-webaio@1.0.7","maintainers":[{"name":"apmantza","email":"ap.mantza@gmail.com"}],"homepage":"https://github.com/apmantza/pi-webaio#readme","bugs":{"url":"https://github.com/apmantza/pi-webaio/issues"},"pi":{"extensions":["./pi-entry.mjs"]},"bin":{"pi-webaio-cli":"bin/pi-webaio-cli.mjs","pi-webaio-mcp":"bin/pi-webaio-mcp.mjs"},"dist":{"shasum":"db23ba07e0d1e5e6237c0cff528bfd933d13cb9d","tarball":"https://registry.npmjs.org/pi-webaio/-/pi-webaio-1.0.7.tgz","fileCount":230,"integrity":"sha512-G9QIyhePDzeyCe0kI74CHfERqV5Pvl8t0/udDtj6QfBENJI7swNUgMdjYuhwj3eHIGg2yPOt82/hRi1X7DFLQg==","signatures":[{"sig":"MEQCIDqvEMdPZz1uGG3yhCsz697O/xVW/uG5jZEbcSFp+MU/AiAAocGOTwDzixY0woVLlTHw4oqZ+e3cuhqKV4O7rX9HBQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIBsJZz14P3jc0pORw6fzF7PyiJgpmxovVhMqOBkXIL9nAiEA9r/t8WYLIA9o37bOp/XOx1P5EOiW7dlNKS+iVqSH6OY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/pi-webaio@1.0.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1978199},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./webfetch":{"types":"./dist/src/webfetch.d.ts","import":"./dist/src/webfetch.js"}},"gitHead":"0c9fc2455322a57dd359b5084687f1dc5be17c1b","imports":{"#stealth-script":"./extractors/stealth-script.mjs"},"scripts":{"lint":"tsc --project tsconfig.json","test":"node --experimental-strip-types --test tests/unit.test.mjs","bench":"node --experimental-strip-types scripts/bench-extraction.mjs","build":"tsc --project tsconfig.dist.json","watch":"tsc --watch","prepare":"node scripts/prepare.mjs","pretest":"node scripts/check-node-test-runner.mjs","test:all":"node --experimental-strip-types --test tests/unit.test.mjs tests/startup-lazy.test.mjs tests/tui-compat.test.mjs tests/websearch-google-flag.test.mjs tests/google-cdp-broker.test.mjs tests/google-cdp-broker-process.test.mjs tests/google-cdp-broker-cdp.test.mjs tests/google-cdp-broker-client.test.mjs tests/google-ai-broker.test.mjs tests/google-search-waits.test.mjs tests/new-features.test.mjs tests/paywall.test.mjs tests/github-check.test.mjs tests/reddit-block.test.mjs tests/reddit-search.test.mjs tests/github-map.test.mjs tests/render-result.test.mjs tests/fetch-error.test.mjs tests/fetch-progress.test.mjs tests/static-webfetch-api.test.mjs tests/parallel.test.mjs tests/hardening.test.mjs tests/fingerprint.test.mjs tests/format.test.mjs tests/webfetch-summary.test.mjs tests/search-context.test.mjs tests/chunker.test.mjs tests/prune-markdown.test.mjs tests/integration.test.mjs tests/bench-harness.test.mjs tests/webresearch.test.mjs tests/source-ranking.test.mjs tests/cookie-cache.test.mjs tests/goggles.test.mjs tests/stance.test.mjs tests/bot-wait.test.mjs tests/ssrf-allowlist.test.mjs tests/lifecycle-hooks.test.mjs tests/webquery.test.mjs tests/ssrf-hardening.test.mjs tests/redact.test.mjs tests/title-extraction.test.mjs tests/source-trust.test.mjs tests/diagnose-backends.test.mjs tests/security-crosscheck.test.mjs tests/verticals-context7-deepwiki.test.mjs tests/search-diversity.test.mjs tests/content-hash-dedup.test.mjs tests/local-precheck.test.mjs tests/escalation-404.test.mjs tests/batch-throw-isolation.test.mjs tests/crash-guard.test.mjs tests/search-canonicalization.test.mjs tests/fetch-metadata.test.mjs tests/stale-wayback.test.mjs tests/chrome-profile.test.mjs tests/webresearch-outdir.test.mjs tests/debug.test.mjs tests/search-engine-status.test.mjs tests/search-orchestration.test.mjs tests/browser-obs.test.mjs tests/obs-small-wins.test.mjs tests/perf-extraction.test.mjs tests/perf-browser-pool.test.mjs tests/perf-search-deadline.test.mjs tests/perf-workers-cache.test.mjs tests/ux-webfetch-output.test.mjs tests/ux-compact-search.test.mjs tests/ux-multi-answer.test.mjs tests/extraction-quality.test.mjs tests/search-render.test.mjs tests/websearch-default-captcha.test.mjs","test:cli":"node --test tests/cli.test.mjs","test:mcp":"node --test tests/mcp-server.test.mjs","test:new":"node --experimental-strip-types --test tests/new-features.test.mjs","test:ssrf":"node --experimental-strip-types --test tests/ssrf-hardening.test.mjs","build:dist":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\" && tsc --project tsconfig.dist.json","test:bench":"node --experimental-strip-types --test tests/bench-harness.test.mjs","test:check":"node --experimental-strip-types --test tests/github-check.test.mjs","test:debug":"node --experimental-strip-types --test tests/debug.test.mjs","test:prune":"node --experimental-strip-types --test tests/prune-markdown.test.mjs","pretest:all":"node scripts/check-node-test-runner.mjs","test:broker":"node --test tests/google-cdp-broker.test.mjs tests/google-cdp-broker-process.test.mjs tests/google-cdp-broker-cdp.test.mjs tests/google-cdp-broker-client.test.mjs tests/google-ai-broker.test.mjs","test:format":"node --experimental-strip-types --test tests/format.test.mjs","test:redact":"node --experimental-strip-types --test tests/redact.test.mjs","test:reddit":"node --experimental-strip-types --test tests/reddit-block.test.mjs","test:render":"node --experimental-strip-types --test tests/render-result.test.mjs","test:stance":"node --experimental-strip-types --test tests/stance.test.mjs","test:chunker":"node --experimental-strip-types --test tests/chunker.test.mjs","test:paywall":"node --experimental-strip-types --test tests/paywall.test.mjs","test:startup":"node --experimental-strip-types --test tests/startup-lazy.test.mjs","test:parallel":"node --experimental-strip-types --test tests/parallel.test.mjs","check:lockfile":"node scripts/check-lockfile-sync.mjs","test:hardening":"node --experimental-strip-types --test tests/hardening.test.mjs","changelog:check":"node scripts/changelog-release.mjs --check","test:escalation":"node --experimental-strip-types --test tests/escalation-404.test.mjs","test:fetcherror":"node --experimental-strip-types --test tests/fetch-error.test.mjs","test:github-map":"node --experimental-strip-types --test tests/github-map.test.mjs","bench:google-cdp":"node --experimental-strip-types scripts/bench-google-cdp.mjs","test:browser-obs":"node --experimental-strip-types --test tests/browser-obs.test.mjs","test:fingerprint":"node --experimental-strip-types --test tests/fingerprint.test.mjs","test:integration":"node --experimental-strip-types --test tests/integration.test.mjs","test:webresearch":"node --experimental-strip-types --test tests/webresearch.test.mjs","changelog:extract":"node scripts/changelog-extract.mjs","changelog:release":"node scripts/changelog-release.mjs","diagnose:backends":"node scripts/diagnose-backends.mjs","test:cookie-cache":"node --experimental-strip-types --test tests/cookie-cache.test.mjs","test:webfetch-api":"node --experimental-strip-types --test tests/static-webfetch-api.test.mjs","test:fetchprogress":"node --experimental-strip-types --test tests/fetch-progress.test.mjs","test:search-render":"node --experimental-strip-types --test tests/search-render.test.mjs","test:obs-small-wins":"node --experimental-strip-types --test tests/obs-small-wins.test.mjs","test:search-context":"node --experimental-strip-types --test tests/search-context.test.mjs","test:source-ranking":"node --experimental-strip-types --test tests/source-ranking.test.mjs","diagnose:fingerprint":"node --experimental-strip-types scripts/fingerprint-diagnostics.mjs","test:batch-isolation":"node --experimental-strip-types --test tests/batch-throw-isolation.test.mjs","test:perf-extraction":"node --experimental-strip-types --test tests/perf-extraction.test.mjs","test:ux-multi-answer":"node --experimental-strip-types --test tests/ux-multi-answer.test.mjs","test:title-extraction":"node --experimental-strip-types --test tests/title-extraction.test.mjs","test:webfetch-package":"node scripts/test-static-webfetch-package.mjs","test:webfetch-summary":"node --experimental-strip-types --test tests/webfetch-summary.test.mjs","release:backfill-notes":"node scripts/backfill-github-releases.mjs","test:perf-browser-pool":"node --experimental-strip-types --test tests/perf-browser-pool.test.mjs","test:ux-compact-search":"node --experimental-strip-types --test tests/ux-compact-search.test.mjs","test:extraction-quality":"node --experimental-strip-types --test tests/extraction-quality.test.mjs","test:perf-workers-cache":"node --experimental-strip-types --test tests/perf-workers-cache.test.mjs","test:ux-webfetch-output":"node --experimental-strip-types --test tests/ux-webfetch-output.test.mjs","test:perf-search-deadline":"node --experimental-strip-types --test tests/perf-search-deadline.test.mjs","test:search-engine-status":"node --experimental-strip-types --test tests/search-engine-status.test.mjs","test:search-orchestration":"node --experimental-strip-types --test tests/search-orchestration.test.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a3c2dd9e-28f3-407f-8bca-8666abee0b95"}},"overrides":{"protobufjs":"^7.6.5","@hono/node-server":"^2.0.5"},"repository":{"url":"git+https://github.com/apmantza/pi-webaio.git","type":"git"},"_npmVersion":"11.19.0","description":"All-in-one web tools for pi with search (Google, Brave, DDG, TinyFish, FireCrawl) and fetch with headless browser AI summarization, TinyFish Fetch, and FireCrawl Keyless Scrape","directories":{},"_nodeVersion":"24.20.0","dependencies":{"ws":"^8.21.1","wreq-js":"^3.0.0","defuddle":"^0.19.2","linkedom":"^0.18.12","pdf-parse":"^2.4.5","@mozilla/readability":"^0.6.0","youtube-transcript-plus":"^2.0.0","@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1","typescript":"^7.0.2","@types/node":"^26.1.2","@earendil-works/pi-tui":"^0.83.0 || ^0.84.0"},"peerDependencies":{"@earendil-works/pi-tui":"^0.83.0 || ^0.84.0","@earendil-works/pi-coding-agent":"^0.83.0 || ^0.84.0"},"optionalDependencies":{"playwright":"^1.55.0"},"peerDependenciesMeta":{"@earendil-works/pi-tui":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-webaio_1.0.7_1789830605348_0.04722720429475835","host":"s3://npm-registry-packages-npm-production"}},"1.0.8":{"pi":{"extensions":["./pi-entry.mjs"]},"_id":"pi-webaio@1.0.8","bin":{"pi-webaio-cli":"bin/pi-webaio-cli.mjs","pi-webaio-mcp":"bin/pi-webaio-mcp.mjs"},"bugs":{"url":"https://github.com/apmantza/pi-webaio/issues"},"dist":{"shasum":"0d6bd4bb9f349ea3623ae50feb9bc1fff8059947","tarball":"https://registry.npmjs.org/pi-webaio/-/pi-webaio-1.0.8.tgz","fileCount":230,"integrity":"sha512-k4GCdpX08lCTjmkWpEp8kT3naJQ/pCPlMya3QcFvjdHky918H7SwQxVrB4Vc645Q7wdJeeUPCfuv9ozTBxJckw==","signatures":[{"sig":"MEUCIEJE6NPuDWVmzJJw2+4Ky5OorvcpAaL8WSzKNYkuscajAiEAv64ZioGx5n4IlQ9sdWd6SqvY8R+NoKp/4RxL5HxJHis=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQC08V+i5ov9ANqQ+s4BrCEdtp5xXGh7orqVcLKf7k3isgIgIW3a6WGioT6YJllzzf8C37O+B1EXAhxNnKmpjVry7MQ="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/pi-webaio@1.0.8","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1993718},"main":"./dist/index.js","name":"pi-webaio","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./webfetch":{"types":"./dist/src/webfetch.d.ts","import":"./dist/src/webfetch.js"}},"gitHead":"da04bdea97ad76545607ff2ea729bff536c1d4eb","imports":{"#stealth-script":"./extractors/stealth-script.mjs"},"license":"MIT","scripts":{"lint":"tsc --project tsconfig.json","test":"node --experimental-strip-types --test tests/unit.test.mjs","bench":"node --experimental-strip-types scripts/bench-extraction.mjs","build":"tsc --project tsconfig.dist.json","watch":"tsc --watch","prepare":"node scripts/prepare.mjs","pretest":"node scripts/check-node-test-runner.mjs","test:all":"node --experimental-strip-types --test tests/unit.test.mjs tests/startup-lazy.test.mjs tests/tui-compat.test.mjs tests/websearch-google-flag.test.mjs tests/google-cdp-broker.test.mjs tests/google-cdp-broker-process.test.mjs tests/google-cdp-broker-cdp.test.mjs tests/google-cdp-broker-client.test.mjs tests/google-ai-broker.test.mjs tests/google-search-waits.test.mjs tests/new-features.test.mjs tests/paywall.test.mjs tests/github-check.test.mjs tests/reddit-block.test.mjs tests/reddit-search.test.mjs tests/github-map.test.mjs tests/render-result.test.mjs tests/fetch-error.test.mjs tests/fetch-progress.test.mjs tests/static-webfetch-api.test.mjs tests/parallel.test.mjs tests/hardening.test.mjs tests/fingerprint.test.mjs tests/format.test.mjs tests/webfetch-summary.test.mjs tests/search-context.test.mjs tests/chunker.test.mjs tests/prune-markdown.test.mjs tests/integration.test.mjs tests/bench-harness.test.mjs tests/webresearch.test.mjs tests/source-ranking.test.mjs tests/cookie-cache.test.mjs tests/goggles.test.mjs tests/stance.test.mjs tests/bot-wait.test.mjs tests/ssrf-allowlist.test.mjs tests/lifecycle-hooks.test.mjs tests/webquery.test.mjs tests/ssrf-hardening.test.mjs tests/redact.test.mjs tests/title-extraction.test.mjs tests/source-trust.test.mjs tests/diagnose-backends.test.mjs tests/security-crosscheck.test.mjs tests/verticals-context7-deepwiki.test.mjs tests/search-diversity.test.mjs tests/content-hash-dedup.test.mjs tests/local-precheck.test.mjs tests/escalation-404.test.mjs tests/batch-throw-isolation.test.mjs tests/crash-guard.test.mjs tests/search-canonicalization.test.mjs tests/fetch-metadata.test.mjs tests/stale-wayback.test.mjs tests/chrome-profile.test.mjs tests/webresearch-outdir.test.mjs tests/multi-answer-width.test.mjs tests/debug.test.mjs tests/search-engine-status.test.mjs tests/search-orchestration.test.mjs tests/browser-obs.test.mjs tests/obs-small-wins.test.mjs tests/perf-extraction.test.mjs tests/perf-browser-pool.test.mjs tests/perf-search-deadline.test.mjs tests/perf-workers-cache.test.mjs tests/ux-webfetch-output.test.mjs tests/ux-compact-search.test.mjs tests/ux-multi-answer.test.mjs tests/extraction-quality.test.mjs tests/search-render.test.mjs tests/websearch-default-captcha.test.mjs tests/strategy-memory.test.mjs tests/cdp-lifecycle.test.mjs","test:cli":"node --test tests/cli.test.mjs","test:mcp":"node --test tests/mcp-server.test.mjs","test:new":"node --experimental-strip-types --test tests/new-features.test.mjs","test:ssrf":"node --experimental-strip-types --test tests/ssrf-hardening.test.mjs","build:dist":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\" && tsc --project tsconfig.dist.json","test:bench":"node --experimental-strip-types --test tests/bench-harness.test.mjs","test:check":"node --experimental-strip-types --test tests/github-check.test.mjs","test:debug":"node --experimental-strip-types --test tests/debug.test.mjs","test:prune":"node --experimental-strip-types --test tests/prune-markdown.test.mjs","pretest:all":"node scripts/check-node-test-runner.mjs","test:broker":"node --test tests/google-cdp-broker.test.mjs tests/google-cdp-broker-process.test.mjs tests/google-cdp-broker-cdp.test.mjs tests/google-cdp-broker-client.test.mjs tests/google-ai-broker.test.mjs","test:format":"node --experimental-strip-types --test tests/format.test.mjs","test:models":"node tla/check-queue-model.mjs && node tla/check-pool-model.mjs && node tla/check-strategy-model.mjs && node tla/check-cookie-model.mjs && node tla/check-cdp-model.mjs","test:redact":"node --experimental-strip-types --test tests/redact.test.mjs","test:reddit":"node --experimental-strip-types --test tests/reddit-block.test.mjs","test:render":"node --experimental-strip-types --test tests/render-result.test.mjs","test:stance":"node --experimental-strip-types --test tests/stance.test.mjs","test:chunker":"node --experimental-strip-types --test tests/chunker.test.mjs","test:paywall":"node --experimental-strip-types --test tests/paywall.test.mjs","test:startup":"node --experimental-strip-types --test tests/startup-lazy.test.mjs","test:parallel":"node --experimental-strip-types --test tests/parallel.test.mjs","check:lockfile":"node scripts/check-lockfile-sync.mjs","test:hardening":"node --experimental-strip-types --test tests/hardening.test.mjs","changelog:check":"node scripts/changelog-release.mjs --check","test:escalation":"node --experimental-strip-types --test tests/escalation-404.test.mjs","test:fetcherror":"node --experimental-strip-types --test tests/fetch-error.test.mjs","test:github-map":"node --experimental-strip-types --test tests/github-map.test.mjs","bench:google-cdp":"node --experimental-strip-types scripts/bench-google-cdp.mjs","test:browser-obs":"node --experimental-strip-types --test tests/browser-obs.test.mjs","test:fingerprint":"node --experimental-strip-types --test tests/fingerprint.test.mjs","test:integration":"node --experimental-strip-types --test tests/integration.test.mjs","test:webresearch":"node --experimental-strip-types --test tests/webresearch.test.mjs","changelog:extract":"node scripts/changelog-extract.mjs","changelog:release":"node scripts/changelog-release.mjs","diagnose:backends":"node scripts/diagnose-backends.mjs","test:cookie-cache":"node --experimental-strip-types --test tests/cookie-cache.test.mjs","test:webfetch-api":"node --experimental-strip-types --test tests/static-webfetch-api.test.mjs","test:cdp-lifecycle":"node --experimental-strip-types --test tests/cdp-lifecycle.test.mjs","test:fetchprogress":"node --experimental-strip-types --test tests/fetch-progress.test.mjs","test:search-render":"node --experimental-strip-types --test tests/search-render.test.mjs","test:obs-small-wins":"node --experimental-strip-types --test tests/obs-small-wins.test.mjs","test:search-context":"node --experimental-strip-types --test tests/search-context.test.mjs","test:source-ranking":"node --experimental-strip-types --test tests/source-ranking.test.mjs","diagnose:fingerprint":"node --experimental-strip-types scripts/fingerprint-diagnostics.mjs","test:batch-isolation":"node --experimental-strip-types --test tests/batch-throw-isolation.test.mjs","test:perf-extraction":"node --experimental-strip-types --test tests/perf-extraction.test.mjs","test:strategy-memory":"node --experimental-strip-types --test tests/strategy-memory.test.mjs","test:ux-multi-answer":"node --experimental-strip-types --test tests/ux-multi-answer.test.mjs","test:title-extraction":"node --experimental-strip-types --test tests/title-extraction.test.mjs","test:webfetch-package":"node scripts/test-static-webfetch-package.mjs","test:webfetch-summary":"node --experimental-strip-types --test tests/webfetch-summary.test.mjs","release:backfill-notes":"node scripts/backfill-github-releases.mjs","test:perf-browser-pool":"node --experimental-strip-types --test tests/perf-browser-pool.test.mjs","test:ux-compact-search":"node --experimental-strip-types --test tests/ux-compact-search.test.mjs","test:extraction-quality":"node --experimental-strip-types --test tests/extraction-quality.test.mjs","test:perf-workers-cache":"node --experimental-strip-types --test tests/perf-workers-cache.test.mjs","test:ux-webfetch-output":"node --experimental-strip-types --test tests/ux-webfetch-output.test.mjs","test:perf-search-deadline":"node --experimental-strip-types --test tests/perf-search-deadline.test.mjs","test:search-engine-status":"node --experimental-strip-types --test tests/search-engine-status.test.mjs","test:search-orchestration":"node --experimental-strip-types --test tests/search-orchestration.test.mjs"},"version":"1.0.8","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a3c2dd9e-28f3-407f-8bca-8666abee0b95"}},"homepage":"https://github.com/apmantza/pi-webaio#readme","keywords":["pi","pi-extension","pi-package","web-scraping","web-fetch","crawler","markdown","anti-bot","tls-fingerprinting","pdf-extraction","duckduckgo","brave","google","google-search","ai-summarization","headless-chrome","cdp","llm","typescript"],"overrides":{"protobufjs":"^7.6.5","@hono/node-server":"^2.0.5"},"repository":{"url":"git+https://github.com/apmantza/pi-webaio.git","type":"git"},"_npmVersion":"11.19.0","description":"All-in-one web tools for pi with search (Google, Brave, DDG, TinyFish, FireCrawl) and fetch with headless browser AI summarization, TinyFish Fetch, and FireCrawl Keyless Scrape","directories":{},"maintainers":[{"name":"apmantza","email":"ap.mantza@gmail.com"}],"_nodeVersion":"24.21.0","dependencies":{"ws":"^8.21.1","wreq-js":"^3.0.0","defuddle":"^0.19.2","linkedom":"^0.18.12","pdf-parse":"^2.4.5","@mozilla/readability":"^0.6.0","youtube-transcript-plus":"^2.0.0","@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1","typescript":"^7.0.2","@types/node":"^26.1.2","@earendil-works/pi-tui":"^0.83.0 || ^0.84.0"},"peerDependencies":{"@earendil-works/pi-tui":"^0.83.0 || ^0.84.0","@earendil-works/pi-coding-agent":"^0.83.0 || ^0.84.0"},"optionalDependencies":{"playwright":"^1.55.0"},"peerDependenciesMeta":{"@earendil-works/pi-tui":{"optional":true}},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/pi-webaio_1.0.8_1790466533544_0.654522296909958"}}},"time":{"created":"2026-05-02T15:25:29.375Z","modified":"2026-09-26T23:48:53.932Z","0.1.6":"2026-05-02T15:25:29.617Z","0.1.7":"2026-05-02T15:31:20.944Z","0.1.8":"2026-05-02T15:53:54.008Z","0.2.1":"2026-05-08T09:26:57.228Z","0.3.1":"2026-05-08T13:32:59.972Z","0.3.2":"2026-05-09T20:20:30.635Z","0.3.3":"2026-05-12T16:19:05.429Z","0.3.4":"2026-05-18T06:40:51.636Z","0.3.5":"2026-05-21T22:43:24.366Z","0.3.7":"2026-05-22T12:34:10.000Z","0.4.0":"2026-05-23T17:12:24.925Z","0.4.2":"2026-06-02T17:33:38.770Z","0.5.0":"2026-06-14T18:35:40.022Z","0.6.0":"2026-06-19T16:05:45.239Z","0.6.1":"2026-07-03T12:51:16.249Z","0.6.2":"2026-07-04T11:22:03.867Z","0.6.3":"2026-07-18T12:09:33.487Z","0.7.0":"2026-07-20T16:18:09.464Z","0.7.1":"2026-07-20T20:51:39.690Z","0.7.2":"2026-07-21T08:20:19.813Z","0.7.3":"2026-07-29T23:05:19.519Z","0.8.0":"2026-07-31T07:14:57.597Z","0.9.0":"2026-08-17T13:57:25.525Z","1.0.0":"2026-08-22T07:54:41.457Z","1.0.1":"2026-08-22T21:33:23.008Z","1.0.2":"2026-08-28T13:32:22.928Z","1.0.3":"2026-08-28T20:58:27.887Z","1.0.4":"2026-08-31T20:07:01.564Z","1.0.5":"2026-09-03T21:03:25.534Z","1.0.6":"2026-09-07T10:12:21.417Z","1.0.7":"2026-09-19T15:10:05.489Z","1.0.8":"2026-09-26T23:48:53.642Z"},"bugs":{"url":"https://github.com/apmantza/pi-webaio/issues"},"license":"MIT","homepage":"https://github.com/apmantza/pi-webaio#readme","keywords":["pi","pi-extension","pi-package","web-scraping","web-fetch","crawler","markdown","anti-bot","tls-fingerprinting","pdf-extraction","duckduckgo","brave","google","google-search","ai-summarization","headless-chrome","cdp","llm","typescript"],"repository":{"url":"git+https://github.com/apmantza/pi-webaio.git","type":"git"},"description":"All-in-one web tools for pi with search (Google, Brave, DDG, TinyFish, FireCrawl) and fetch with headless browser AI summarization, TinyFish Fetch, and FireCrawl Keyless Scrape","maintainers":[{"name":"apmantza","email":"ap.mantza@gmail.com"}],"readme":"<!-- markdownlint-disable MD041 -->\n\n![pi-webaio](banner.png)\n\n# pi-webaio\n\nAll-in-one web access tools for [pi](https://pi.dev): search, fetch, crawl,\nextract, map, cache, chunk, and render web content for AI agents.\n\n## What It Does\n\npi-webaio registers eight pi tools:\n\n- `aio-websearch` — search DuckDuckGo, Brave, Yahoo, Bing, **TinyFish**, **FireCrawl Keyless**, and **Parallel** in parallel, with default Google (via a local CDP broker) and an opt-in Reddit CDP companion (`reddit: true`, requires Chrome). Returns in ~2.9s with live per-provider TUI progress (spinner rows, result counts with latency, an elapsed-vs-target bar) and a stable final view showing every engine's count and timing\n- `aio-webfetch` — fetch one or many URLs into markdown or structured formats, with an opt-in heading outline, query-focused answer mode, and multi-source cited answers\n- `aio-webcontent` — retrieve cached content by URL (with opt-in section-level diff)\n- `aio-webresult` — retrieve cached results by response ID\n- `aio-webmap` — discover site pages or map GitHub repositories without fetching\n- `aio-webpull` — crawl/pull sites into local markdown files\n- `aio-webquery` — BM25 search over a locally-pulled corpus (offline, no re-fetching)\n- `aio-webresearch` — single-round research bundle: search → rank → fetch → cited evidence bundle on disk\n\nIt includes anti-bot TLS fingerprinting, browser fallback, 21 API-first\nextractors (GitHub, YouTube, npm/PyPI and other package registries, Context7,\nDeepWiki, and more), RAG chunking, TUI progress rendering, phase-aware errors,\nopt-in paywall bypass support, and **keyless providers** (FireCrawl) and **API-key providers** (TinyFish, Parallel) that work\nwithout API keys.\n\n### Extra Providers\n\n**FireCrawl Keyless** (free, 1k credits/month, **no API key needed**):\n\n- Search: works out of the box as a search provider\n- Fetch: `firecrawl: true` on `aio-webfetch` — delegates to FireCrawl Scrape API\n\n**TinyFish** (free, requires API key in `~/.piwebaio/config` or `~/.piwebaio/.env`):\n\n- Search: unlimited free search results\n- Fetch: `tinyfish: true` on `aio-webfetch` — delegates to TinyFish Fetch API\n\nBoth providers run in parallel with the HTTP engines during search.\nFor fetch, the recommended chain is FireCrawl → TinyFish → normal pipeline.\n\nGoogle Search uses the local CDP broker by default (faster cold start, tighter\np95, 100% Google success under concurrency — see `speed.md`). Google ignores the\ndeprecated `num` param and renders ~8–10 organic results per SERP page, so the\nbroker **paginates through `?start=10`, `?start=20`, …** (the same mechanism\nGoogle's own \"Next\" links use), merging and URL-deduping pages up to `max` until\nthe lane is satisfied, the SERP runs out of new organics, or the lane budget is\nexhausted. The Google lane carries a hard 3-second cap measured from when its\nsearch starts, so it never gates the tool's 7-second overall deadline — even on\na full multi-page pagination. If a page-2+ navigation or extraction fails, the\nlane degrades gracefully to the results it had already collected and annotates\n`googleStatus` accordingly (e.g. `ok (an extra SERP page failed…)`); a total\nfresh failure still surfaces as an error. Set `PI_WEBAIO_CDP_BROKER=0` to force\nthe legacy extractor.\nThe manual, live-only benchmark is `npm run bench:google-cdp -- --live\n--query \"...\" --samples 3`. It reports total/startup measurements; detailed CDP\nphase timings are not yet instrumented, and no speedup is inferred.\n\nFor the **full public tool path** (HTTP engines + Google + Reddit under the\nresponse target), use `scripts/bench-full-search.mjs`:\n\n```bash\nnode --experimental-strip-types scripts/bench-full-search.mjs broker 10 3000 \"query\"\n```\n\n`<legacy|broker>` picks the Google path; sample 1 measures cold start and\nsamples 2–n are warm; the third argument is inter-sample spacing in ms. On the\n2.9s response-target path the tool returns at the budget by design — recent\nruns: p50 ≈ 2.90s both modes, HTTP success 10/10 (see `speed.md` for full\ntables and environment caveats).\n\n## Install\n\n```bash\npi install npm:pi-webaio\n```\n\nOr from git:\n\n```bash\npi install git:github.com/apmantza/pi-webaio\n```\n\n## Static Fetch API\n\nUse `pi-webaio/webfetch` when an integration needs local extraction without\nregistering the eight `aio-*` tools:\n\n```js\nimport { fetch } from \"pi-webaio/webfetch\";\n\nconst abortController = new AbortController();\nconst result = await fetch(\"https://example.com/article\", {\n  format: \"markdown\",\n  maxChars: 50_000,\n  signal: abortController.signal,\n});\n\nif (!result.ok) throw new Error(`${result.error.code}: ${result.error.message}`);\nconsole.log(result.content);\n```\n\nThe entrypoint uses `wreq-js` TLS fingerprinting and local Defuddle extraction.\nIt does not start a browser, call a remote reader, register pi tools, or write a\ncontent cache. HTTP and literal client-side redirects are followed manually.\nFor direct requests, each destination is checked by the public-network guard\nand pinned into the `wreq-js` transport before connection. Cross-origin\nredirects retain only `Accept`, `Accept-Language`, and `User-Agent` from the\nrequest headers.\n\nThe default call budget is 15 seconds, including bounded cleanup. The call can\ndownload up to 10 MiB across all retry attempts and redirect responses, then\nreturn up to 50,000 characters. It follows at most ten redirects and retries a\nfailed hop at most twice. The input cap cannot exceed 10 MiB.\n\nHeader names and values are validated before a request. Transport-controlled\nframing headers such as `Host` and `Content-Length` are rejected.\n\n### Errors\n\nA failed call returns `{ ok: false, error }` rather than throwing. The error\nuses pi-webaio's single shared taxonomy — the same `FetchErrorCode`,\n`FetchPhase`, and `FetchErrorCategory` the `aio-*` tools and the MCP server\nreport — so one `switch` over codes works on every surface:\n\n```js\nif (!result.ok) {\n  const { code, phase, category, retryable, statusCode } = result.error;\n  // e.g. \"parse_error\" / \"processing\" / \"processing\" / false\n}\n```\n\n`retryable` defaults from the shared retry matrix, so it means \"a later call\nmay succeed\" — not \"this call will be retried\" (retries within a single call\nare governed by `maxRetries`). Corrupt or undecodable content reports\n`parse_error` at phase `processing` and is never marked retryable.\n\n`format` accepts `markdown`, `html`, `text`, `json`, or `raw`. `html` requires\nan HTML response and returns Defuddle's cleaned HTML. `json` requires a JSON\nresponse and returns pretty-printed JSON text. `text` removes markup from HTML\nand XML. `raw` returns the decoded textual response before extraction; binary\nresponses are rejected. HTML extraction accepts `removeImages` and\n`includeReplies`.\n\nA configured proxy is checked and pinned before connection. HTTP(S) forward\nproxies and `socks5h` proxies can resolve the target independently, so target\npinning cannot be enforced through those modes. Use them only with a proxy\nwhose destination policy you trust. Successful results report\n`targetPinning: \"proxy-dependent\"` when a proxy is configured.\n\n## Documentation\n\n- [Features](docs/features.md) — overview, extraction pipeline, GitHub/YouTube\n  handling, output formats, chunking, errors, and search ranking\n- [Custom vertical extractors](docs/custom-verticals.md) — add your own site\n  extractors (company wikis, niche sites) without forking\n- [Usage guide](docs/usage.md) — common pi prompts and examples\n- [Tools reference](docs/tools.md) — tool names, parameters, and defaults\n- [Architecture](docs/architecture.md) — build, TUI rendering, FetchError system,\n  CI, and security notes\n- [MCP server](docs/mcp.md) — use the tools from Claude Code, Claude Desktop,\n  and other MCP clients without pi (`npx -y pi-webaio-mcp`)\n- [PageMap inspiration](docs/pagemap-inspiration.md) — future extraction and\n  structured-output ideas\n\n## Contributing\n\nWe especially welcome contributors for new vertical extractors, search engines,\nsite-specific fetch fixes, anti-bot/paywall resilience, and docs. See\n[`CONTRIBUTING.md`](CONTRIBUTING.md) for setup, testing, and contribution\nchecklists.\n\n## Contributors\n\nThanks goes to these wonderful people:\n\n<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->\n<!-- prettier-ignore-start -->\n<!-- markdownlint-disable -->\n<table>\n<tbody>\n<tr>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/apmantza\"><img src=\"https://avatars.githubusercontent.com/u/247365598?v=4\" width=\"100px;\" alt=\"\"/><br /><sub><b>Apostolos Mantzaris</b></sub></a><br /><a href=\"#code-apmantza\" title=\"Code\">💻</a> <a href=\"#doc-apmantza\" title=\"Documentation\">📖</a> <a href=\"#ideas-apmantza\" title=\"Ideas & Planning\">🤔</a> <a href=\"#maintenance-apmantza\" title=\"Maintenance\">🚧</a> <a href=\"#review-apmantza\" title=\"Reviewed Pull Requests\">👀</a></td>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/ptbsare\"><img src=\"https://avatars.githubusercontent.com/u/3147576?v=4\" width=\"100px;\" alt=\"\"/><br /><sub><b>ptbsare</b></sub></a><br /><a href=\"#code-ptbsare\" title=\"Code\">💻</a> <a href=\"#bug-ptbsare\" title=\"Bug reports\">🐛</a></td>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/jacksenechal\"><img src=\"https://avatars.githubusercontent.com/u/87883?v=4\" width=\"100px;\" alt=\"\"/><br /><sub><b>Jack Senechal</b></sub></a><br /><a href=\"#code-jacksenechal\" title=\"Code\">💻</a></td>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/apps/dependabot\"><img src=\"https://avatars.githubusercontent.com/in/29110?v=4\" width=\"100px;\" alt=\"\"/><br /><sub><b>Dependabot</b></sub></a><br /><a href=\"#maintenance-dependabot[bot]\" title=\"Maintenance\">🚧</a></td>\n    </tr>\n</tbody>\n</table>\n\n<!-- markdownlint-restore -->\n<!-- prettier-ignore-end -->\n<!-- ALL-CONTRIBUTORS-LIST:END -->\n\nIf you land a pull request or report an issue that gets fixed, we'll add you here.\n\n## License\n\npi-webaio is released under the [MIT License](LICENSE).\n","readmeFilename":"README.md"}