{"_id":"@bacnh85/pi-web","_rev":"64-bc40189229911ab34a023c618290ed8d","name":"@bacnh85/pi-web","dist-tags":{"latest":"0.17.6"},"versions":{"0.1.0":{"name":"@bacnh85/pi-web","version":"0.1.0","keywords":["pi-package","pi-extension","web-search","brave-search","firecrawl","scraping"],"license":"MIT","_id":"@bacnh85/pi-web@0.1.0","maintainers":[{"name":"bacnh85","email":"mail@bacnh.com"}],"homepage":"https://github.com/bacnh85/skills#readme","bugs":{"url":"https://github.com/bacnh85/skills/issues"},"pi":{"extensions":["./index.ts"]},"dist":{"shasum":"09b67f42d9b4b25b20e60c043cbce117b4861aaf","tarball":"https://registry.npmjs.org/@bacnh85/pi-web/-/pi-web-0.1.0.tgz","fileCount":4,"integrity":"sha512-JTHavyMGVSY4prKCaUKD13VK1Dx2dAnpYpnhUOOQ1jRzmSCAotxW1pWmBJWbfIfWJEcwS6qDiYdnEpkUNbUs/g==","signatures":[{"sig":"MEYCIQC6ME8ds4BwKCd3mHSNqFWFEmpuW5Cs8Y0jYVgOZ3OVGwIhANa7g60ltsSh6kpSZs5G5czMRTE3FLAjbp4Afe1+6jKD","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35037},"type":"module","gitHead":"379c7d5643cbfc3afbcfc72d30029868f13e0d4f","_npmUser":{"name":"bacnh85","email":"mail@bacnh.com"},"repository":{"url":"git+https://github.com/bacnh85/skills.git","type":"git","directory":"extensions/pi-web"},"_npmVersion":"10.8.2","description":"Pi extension for web search, page extraction, and Firecrawl scraping/crawling.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"jsdom":"^27.0.1","turndown":"^7.2.2","turndown-plugin-gfm":"^1.0.2","@mozilla/readability":"^0.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/jsdom":"^28.0.3","@types/turndown":"^5.0.6"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web_0.1.0_1782375093029_0.9787551692537662","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@bacnh85/pi-web","version":"0.1.1","keywords":["pi-package","pi-extension","web-search","brave-search","firecrawl","scraping"],"license":"MIT","_id":"@bacnh85/pi-web@0.1.1","maintainers":[{"name":"bacnh85","email":"mail@bacnh.com"}],"homepage":"https://github.com/bacnh85/skills#readme","bugs":{"url":"https://github.com/bacnh85/skills/issues"},"pi":{"extensions":["./index.ts"]},"dist":{"shasum":"7440ab5ea1821086108e5a9e3e76ab42c083c4a1","tarball":"https://registry.npmjs.org/@bacnh85/pi-web/-/pi-web-0.1.1.tgz","fileCount":4,"integrity":"sha512-uu2k5B6u6RAUn23slHXYtRzjfAq+NxAhsCYBCWEBMAUCN8JJ+obtQStsrfwL8y7WOaRKsJ9/zwpO5lljNsee+w==","signatures":[{"sig":"MEUCIQDmDvZAc+TfJjnXA2wXoA0FWt+rnBJ91P4weBYOPF/2qAIgHmRD9F3K6L4ZnUbaCTcPLO3kcvgQdp7GvRPI8cXXNQg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35330},"type":"module","gitHead":"5d91e3a1f8e3683fe89d770cee9204eefda9abae","_npmUser":{"name":"bacnh85","email":"mail@bacnh.com"},"repository":{"url":"git+https://github.com/bacnh85/skills.git","type":"git","directory":"extensions/pi-web"},"_npmVersion":"10.8.2","description":"Pi extension for web search, page extraction, and Firecrawl scraping/crawling.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"jsdom":"^27.0.1","turndown":"^7.2.2","turndown-plugin-gfm":"^1.0.2","@mozilla/readability":"^0.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/jsdom":"^28.0.3","@types/turndown":"^5.0.6"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web_0.1.1_1782376128451_0.07705219942814345","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@bacnh85/pi-web","version":"0.1.2","keywords":["pi-package","pi-extension","web-search","brave-search","firecrawl","scraping"],"license":"MIT","_id":"@bacnh85/pi-web@0.1.2","maintainers":[{"name":"bacnh85","email":"mail@bacnh.com"}],"homepage":"https://github.com/bacnh85/skills#readme","bugs":{"url":"https://github.com/bacnh85/skills/issues"},"pi":{"extensions":["./index.ts"]},"dist":{"shasum":"193470ca6c698536e1f89b823efce1f32eb7527a","tarball":"https://registry.npmjs.org/@bacnh85/pi-web/-/pi-web-0.1.2.tgz","fileCount":4,"integrity":"sha512-aBmMejZttCIeFwwlS1Q4ODWdleCiv1McEIv1MulgwQHvV6CKSPcCk3Uo+39u6bV5bDfW6RmbOv5uIUXXk8DmHQ==","signatures":[{"sig":"MEYCIQDVMmMI0lkUOavGnbaoJ95r4jR61Fep1STOPSMbOXlQNAIhANp38yHUTE4oZO+rWbafTdizso5IMQe6hliQ5C2LNHwl","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36233},"type":"module","gitHead":"bffe3764aaef0210e1ac334b53663780227c9ddd","_npmUser":{"name":"bacnh85","email":"mail@bacnh.com"},"repository":{"url":"git+https://github.com/bacnh85/skills.git","type":"git","directory":"extensions/pi-web"},"_npmVersion":"10.8.2","description":"Pi extension for web search, page extraction, and Firecrawl scraping/crawling.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"jsdom":"^27.0.1","turndown":"^7.2.2","turndown-plugin-gfm":"^1.0.2","@mozilla/readability":"^0.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/jsdom":"^28.0.3","@types/turndown":"^5.0.6"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web_0.1.2_1782443520133_0.5782620484042602","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@bacnh85/pi-web","version":"0.2.0","keywords":["pi-package","pi-extension","web-search","brave-search","firecrawl","scraping"],"license":"MIT","_id":"@bacnh85/pi-web@0.2.0","maintainers":[{"name":"bacnh85","email":"mail@bacnh.com"}],"homepage":"https://github.com/bacnh85/skills#readme","bugs":{"url":"https://github.com/bacnh85/skills/issues"},"pi":{"extensions":["./index.ts"]},"dist":{"shasum":"dac5d669391eb26f59152cadd1b4c47f02ba02f2","tarball":"https://registry.npmjs.org/@bacnh85/pi-web/-/pi-web-0.2.0.tgz","fileCount":11,"integrity":"sha512-ek83nroUh/qU1swlHXOOdFA4j92Bp3Wb/N/p8qt3jchHJehpVTWirhb9+SCitG4USY0i9bxRV3Hten7nCjzB5Q==","signatures":[{"sig":"MEYCIQCHa4nLA1UAH6Q4k93N64S5meFvf8+1v4aO0J1mxFG/EgIhAO8R24qVFL1eBEvOgPAjGw7+wfufGe6jOAga1QrpnKWM","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":51379},"type":"module","gitHead":"3f76bda3c8a5e05dc1f8350ae10ecca7b5c59416","scripts":{"test":"npx mocha","test:unit":"npx mocha --spec 'test/unit/**/*.test.ts'"},"_npmUser":{"name":"bacnh85","email":"mail@bacnh.com"},"repository":{"url":"git+https://github.com/bacnh85/skills.git","type":"git","directory":"extensions/pi-web"},"_npmVersion":"11.13.0","description":"Pi extension for web search, page extraction, and Firecrawl scraping/crawling.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"jsdom":"^27.0.1","turndown":"^7.2.2","turndown-plugin-gfm":"^1.0.2","@mozilla/readability":"^0.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","chai":"^6.2.2","mocha":"^11.7.6","@types/chai":"^5.2.3","@types/node":"^26.0.1","@types/jsdom":"^28.0.3","@types/mocha":"^10.0.10","@types/turndown":"^5.0.6"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web_0.2.0_1782729200012_0.4890685066086293","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@bacnh85/pi-web","version":"0.2.1","keywords":["pi-package","pi-extension","web-search","brave-search","firecrawl","scraping"],"license":"MIT","_id":"@bacnh85/pi-web@0.2.1","maintainers":[{"name":"bacnh85","email":"mail@bacnh.com"}],"homepage":"https://github.com/bacnh85/skills#readme","bugs":{"url":"https://github.com/bacnh85/skills/issues"},"pi":{"extensions":["./index.ts"]},"dist":{"shasum":"f13795dbe3b824e3e94a238b99060f46d67514b6","tarball":"https://registry.npmjs.org/@bacnh85/pi-web/-/pi-web-0.2.1.tgz","fileCount":11,"integrity":"sha512-rb6Cd6ZqJe+z4JVun1EP5XAsE7KVjuiv8Yg7M2H1eWTopWERDfsFxANuHAxeE/JUYyeZjMSkaCnSogm965rwRw==","signatures":[{"sig":"MEUCIQCK0DIF5bJrIB+cpvQTJt9RFaNKxvAxvjwf27gy1FeC+AIgEV6RSKzOnHbi3va840wD8Jvydja9AuFhqo789iVHJBA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":52212},"type":"module","gitHead":"9248a80637a1708da85be36800137a1963d2e3c6","scripts":{"test":"npx mocha","test:unit":"npx mocha --spec 'test/unit/**/*.test.ts'"},"_npmUser":{"name":"bacnh85","email":"mail@bacnh.com"},"repository":{"url":"git+https://github.com/bacnh85/skills.git","type":"git","directory":"extensions/pi-web"},"_npmVersion":"11.13.0","description":"Pi extension for web search, page extraction, and Firecrawl scraping/crawling.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"jsdom":"^27.0.1","turndown":"^7.2.2","turndown-plugin-gfm":"^1.0.2","@mozilla/readability":"^0.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","chai":"^6.2.2","mocha":"^11.7.6","@types/chai":"^5.2.3","@types/node":"^26.0.1","@types/jsdom":"^28.0.3","@types/mocha":"^10.0.10","@types/turndown":"^5.0.6"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web_0.2.1_1782736119447_0.5867367352175865","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@bacnh85/pi-web","version":"0.3.0","keywords":["pi-package","pi-extension","web-search","brave-search","firecrawl","crawl4ai","scraping","crawling"],"license":"MIT","_id":"@bacnh85/pi-web@0.3.0","maintainers":[{"name":"bacnh85","email":"mail@bacnh.com"}],"homepage":"https://github.com/bacnh85/skills#readme","bugs":{"url":"https://github.com/bacnh85/skills/issues"},"pi":{"extensions":["./index.ts"]},"dist":{"shasum":"418e6312af8fdd7c474e093209c450a85f17144f","tarball":"https://registry.npmjs.org/@bacnh85/pi-web/-/pi-web-0.3.0.tgz","fileCount":12,"integrity":"sha512-84pqgY52YRbIUO0olDqc6F4OmqqhUIDxzNxbu60dru9zEyJtnJ3ykV/CTaODa7vNm3+6n/9u9ip6WDizDlNUyQ==","signatures":[{"sig":"MEQCH01DzfDJNt71L0Wb6vCh99voH1h9+yYBi8jXNLHTrHUCIQCoqe0HykPsbCIKKwjW0T9g2FDZlkMEKc3zz6xybwl31Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":78117},"type":"module","gitHead":"c81d5673394fb5aaa69c50ffaa2a3600873ca28c","scripts":{"test":"npx mocha","test:unit":"npx mocha --spec 'test/unit/**/*.test.ts'"},"_npmUser":{"name":"bacnh85","email":"mail@bacnh.com"},"repository":{"url":"git+https://github.com/bacnh85/skills.git","type":"git","directory":"extensions/pi-web"},"_npmVersion":"11.13.0","description":"Pi extension for web search, page extraction, Firecrawl scraping/crawling, and Crawl4AI headless browser crawling.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"jsdom":"^27.0.1","turndown":"^7.2.2","turndown-plugin-gfm":"^1.0.2","@mozilla/readability":"^0.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","chai":"^6.2.2","mocha":"^11.7.6","@types/chai":"^5.2.3","@types/node":"^26.0.1","@types/jsdom":"^28.0.3","@types/mocha":"^10.0.10","@types/turndown":"^5.0.6"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web_0.3.0_1782742334646_0.417908197719016","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@bacnh85/pi-web","version":"0.4.1","keywords":["pi-package","pi-extension","web-search","brave-search","firecrawl","crawl4ai","scraping","crawling"],"license":"MIT","_id":"@bacnh85/pi-web@0.4.1","maintainers":[{"name":"bacnh85","email":"mail@bacnh.com"}],"homepage":"https://github.com/bacnh85/skills#readme","bugs":{"url":"https://github.com/bacnh85/skills/issues"},"pi":{"extensions":["./index.ts"]},"dist":{"shasum":"5bee4858b71c0eedf49673496f2515dc8396e238","tarball":"https://registry.npmjs.org/@bacnh85/pi-web/-/pi-web-0.4.1.tgz","fileCount":14,"integrity":"sha512-84U4QfB6ztepy5eDJ/YRPipX3q1UJCkhzoRATUsVbt0//MgQcQ+XQXUcdKuzUjTf/YHfIzasfdVD+gwFlQesww==","signatures":[{"sig":"MEQCIFYdgiNmH77H6avFUz5KC0/ITC5XS0cyv1j6rnNnbxDUAiAhdr2ZY8zup2qHd8gVFDnzGj5lopkQHxD7eLlMd9bwlA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":90089},"type":"module","gitHead":"8c8a1092fcf7e95bc4c03be39ec4cabf681036ba","scripts":{"test":"npx mocha","test:unit":"npx mocha --spec 'test/unit/**/*.test.ts'"},"_npmUser":{"name":"bacnh85","email":"mail@bacnh.com"},"repository":{"url":"git+https://github.com/bacnh85/skills.git","type":"git","directory":"extensions/pi-web"},"_npmVersion":"11.13.0","description":"Pi extension for web search, page extraction, Firecrawl scraping/crawling, and Crawl4AI headless browser crawling.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"jsdom":"^27.0.1","turndown":"^7.2.2","turndown-plugin-gfm":"^1.0.2","@mozilla/readability":"^0.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","chai":"^6.2.2","mocha":"^11.7.6","@types/chai":"^5.2.3","@types/node":"^26.0.1","@types/jsdom":"^28.0.3","@types/mocha":"^10.0.10","@types/turndown":"^5.0.6"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web_0.4.1_1782802386801_0.030271437386431677","host":"s3://npm-registry-packages-npm-production"}},"0.4.3":{"name":"@bacnh85/pi-web","version":"0.4.3","keywords":["pi-package","pi-extension","web-search","brave-search","firecrawl","crawl4ai","scraping","crawling"],"license":"MIT","_id":"@bacnh85/pi-web@0.4.3","maintainers":[{"name":"bacnh85","email":"mail@bacnh.com"}],"homepage":"https://github.com/bacnh85/pi-extensions#readme","bugs":{"url":"https://github.com/bacnh85/pi-extensions/issues"},"pi":{"skills":["./skills"],"extensions":["./extensions/index.ts"]},"dist":{"shasum":"70bc823944d876f17e24db753dfcc0927a8b1462","tarball":"https://registry.npmjs.org/@bacnh85/pi-web/-/pi-web-0.4.3.tgz","fileCount":22,"integrity":"sha512-Yn13hCJZTgAapCeAYNfGm977AQvFRy9o6G65QdMXDHZsdxiSL+7actLcnmInEi+sqIfy13oUUHIZE4E8WqPxTw==","signatures":[{"sig":"MEQCIHNf5xHW9PPgoRVtCheAo2LPgmKbHFV7cDaefLYaLIOzAiBbbeeNlHjQT+AoEzLBaeoWS5bS79DY0XnQ1R6s6AuQ/w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":116894},"type":"module","gitHead":"a1532b67941af804f7a98368b6255f082ed7b179","scripts":{"test":"cd extensions && mocha"},"_npmUser":{"name":"bacnh85","email":"mail@bacnh.com"},"repository":{"url":"git+https://github.com/bacnh85/pi-extensions.git","type":"git","directory":"pi-web"},"_npmVersion":"10.9.8","description":"Pi extension for web search, page extraction, Firecrawl scraping/crawling, and Crawl4AI headless browser crawling.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"jsdom":"^27.0.1","turndown":"^7.2.2","turndown-plugin-gfm":"^1.0.2","@mozilla/readability":"^0.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","chai":"^6.2.2","mocha":"^11.7.6","@types/chai":"^5.2.3","@types/node":"^26.0.1","@types/jsdom":"^28.0.3","@types/mocha":"^10.0.10","@types/turndown":"^5.0.6"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web_0.4.3_1783066126635_0.7289803115874289","host":"s3://npm-registry-packages-npm-production"}},"0.4.4":{"name":"@bacnh85/pi-web","version":"0.4.4","keywords":["pi-package","pi-extension","web-search","brave-search","firecrawl","crawl4ai","scraping","crawling"],"license":"MIT","_id":"@bacnh85/pi-web@0.4.4","maintainers":[{"name":"bacnh85","email":"mail@bacnh.com"}],"homepage":"https://github.com/bacnh85/pi-extensions#readme","bugs":{"url":"https://github.com/bacnh85/pi-extensions/issues"},"pi":{"skills":["./skills"],"extensions":["./extensions/index.ts"]},"dist":{"shasum":"ce3841c8d0f02710a831d3d742ecc5932cc14e97","tarball":"https://registry.npmjs.org/@bacnh85/pi-web/-/pi-web-0.4.4.tgz","fileCount":22,"integrity":"sha512-smlHVbo/iP+MC6ahw3eF51INO+kxy46EAR1xzaC9MluxzOH+CZo6zIIGWwl+NO3ms96sMpoDnI259wpZQ/2cxw==","signatures":[{"sig":"MEUCIHliDPRjVC7hBz+2UWg++N9Ylz6WsEIoubdPre5m9Z2mAiEA6Su9I6AxQGNGrZQNTuXN1N9SWxTPd7p93eBLGKiGa/s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":115321},"type":"module","gitHead":"2274830557563efe50dacf908c78a18c33a87c33","scripts":{"test":"cd extensions && mocha"},"_npmUser":{"name":"bacnh85","email":"mail@bacnh.com"},"repository":{"url":"git+https://github.com/bacnh85/pi-extensions.git","type":"git","directory":"pi-web"},"_npmVersion":"10.9.8","description":"Pi extension for web search, page extraction, Firecrawl scraping/crawling, and Crawl4AI headless browser crawling.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"jsdom":"^27.0.1","turndown":"^7.2.2","turndown-plugin-gfm":"^1.0.2","@mozilla/readability":"^0.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","chai":"^6.2.2","mocha":"^11.7.6","@types/chai":"^5.2.3","@types/node":"^26.0.1","@types/jsdom":"^28.0.3","@types/mocha":"^10.0.10","@types/turndown":"^5.0.6"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web_0.4.4_1783176932861_0.1766710180123343","host":"s3://npm-registry-packages-npm-production"}},"0.4.5":{"name":"@bacnh85/pi-web","version":"0.4.5","keywords":["pi-package","pi-extension","web-search","brave-search","firecrawl","crawl4ai","scraping","crawling"],"license":"MIT","_id":"@bacnh85/pi-web@0.4.5","maintainers":[{"name":"bacnh85","email":"mail@bacnh.com"}],"homepage":"https://github.com/bacnh85/pi-extensions#readme","bugs":{"url":"https://github.com/bacnh85/pi-extensions/issues"},"pi":{"skills":["./skills"],"extensions":["./extensions/index.ts"]},"dist":{"shasum":"9add4df6f635f2376a7fdc1120497c92119393c7","tarball":"https://registry.npmjs.org/@bacnh85/pi-web/-/pi-web-0.4.5.tgz","fileCount":22,"integrity":"sha512-xtBk8GMVHoXC2jXylolw/oGX6eX2lTBAQd1FO5LIn0ge/5TErgRGkM2JPFEyMH/9RnBnxg+QG6cxHtoSwy4gOA==","signatures":[{"sig":"MEUCIQC3qquZ2iyurc16ZPc4BTzJwQ6DBK/jzS6E8y/qwdY9lgIgapYBWldwx1FitpOQScEQTZ1T1hWLl4ZYGxcdFFnw/nk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":115007},"type":"module","gitHead":"62d6e8952e4ddcb91033d7cde2797dacbbe2cbfd","scripts":{"test":"cd extensions && mocha"},"_npmUser":{"name":"bacnh85","email":"mail@bacnh.com"},"repository":{"url":"git+https://github.com/bacnh85/pi-extensions.git","type":"git","directory":"pi-web"},"_npmVersion":"10.9.8","description":"Pi extension for web search, page extraction, Firecrawl scraping/crawling, and Crawl4AI headless browser crawling.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"jsdom":"^27.0.1","turndown":"^7.2.2","turndown-plugin-gfm":"^1.0.2","@mozilla/readability":"^0.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","chai":"^6.2.2","mocha":"^11.7.6","@types/chai":"^5.2.3","@types/node":"^26.0.1","@types/jsdom":"^28.0.3","@types/mocha":"^10.0.10","@types/turndown":"^5.0.6"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web_0.4.5_1783178742419_0.3095956915783873","host":"s3://npm-registry-packages-npm-production"}},"0.4.6":{"name":"@bacnh85/pi-web","version":"0.4.6","keywords":["pi-package","pi-extension","web-search","brave-search","firecrawl","crawl4ai","scraping","crawling"],"license":"MIT","_id":"@bacnh85/pi-web@0.4.6","maintainers":[{"name":"bacnh85","email":"mail@bacnh.com"}],"homepage":"https://github.com/bacnh85/pi-extensions#readme","bugs":{"url":"https://github.com/bacnh85/pi-extensions/issues"},"pi":{"skills":["./skills"],"extensions":["./extensions/index.ts"]},"dist":{"shasum":"648def1148b4cbc7f09d0235cd75b9d088b6c1c9","tarball":"https://registry.npmjs.org/@bacnh85/pi-web/-/pi-web-0.4.6.tgz","fileCount":22,"integrity":"sha512-kSks5kNNVLf8mPcktdy4bCNwS2WBNOwzK2JU+4+abed0m+DAn3l/gDRJ55Vn/RJQkBmlfGuamtQ3uBZcaf/o5w==","signatures":[{"sig":"MEQCIAhlXcu8u4fz+B535ZZWn2f8W5bbdUBGzkVS3bq3V2MgAiBL3vXJvAWp8tHf7lYiO9/VNMa3zClvxP7ejSr/nRHXZw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":111299},"type":"module","gitHead":"61b44a371114b1a10eb5bfebcd44850254acf263","scripts":{"test":"cd extensions && mocha"},"_npmUser":{"name":"bacnh85","email":"mail@bacnh.com"},"repository":{"url":"git+https://github.com/bacnh85/pi-extensions.git","type":"git","directory":"pi-web"},"_npmVersion":"10.9.8","description":"Pi extension for web search, page extraction, Firecrawl scraping/crawling, and Crawl4AI headless browser crawling.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"jsdom":"^27.0.1","turndown":"^7.2.2","turndown-plugin-gfm":"^1.0.2","@mozilla/readability":"^0.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","chai":"^6.2.2","mocha":"^11.7.6","@types/chai":"^5.2.3","@types/node":"^26.0.1","@types/jsdom":"^28.0.3","@types/mocha":"^10.0.10","@types/turndown":"^5.0.6"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web_0.4.6_1783517272299_0.08079125139291188","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@bacnh85/pi-web","version":"0.5.0","keywords":["pi-package","pi-extension","web-search","brave-search","firecrawl","crawl4ai","scraping","crawling"],"license":"MIT","_id":"@bacnh85/pi-web@0.5.0","maintainers":[{"name":"bacnh85","email":"mail@bacnh.com"}],"homepage":"https://github.com/bacnh85/pi-extensions#readme","bugs":{"url":"https://github.com/bacnh85/pi-extensions/issues"},"pi":{"skills":["./skills"],"extensions":["./extensions/index.ts"]},"dist":{"shasum":"db3ba54de76bdf2b484cc806de3ded5a8b73f7c3","tarball":"https://registry.npmjs.org/@bacnh85/pi-web/-/pi-web-0.5.0.tgz","fileCount":15,"integrity":"sha512-mD/NjQSTtDSWEX1mN1l2PHWZLY8lx2aMtCSwTJY4N66Bz1eVrXLPpSiXlT5ij7lCChqWgQceJA/PSj4WN2fAkA==","signatures":[{"sig":"MEUCIHAF1ROjNfuMgMLRuowBuBj5x2Ki9HMSAfjSrmppee3pAiEAkfN7JpxVfZd50/jh4lsYxVh0fKgM5xn5oKcupVURwU8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":83319},"type":"module","gitHead":"4cf1433f18cf45d2e3293a27fc20cb611d4d8d3b","scripts":{"test":"cd extensions && mocha"},"_npmUser":{"name":"bacnh85","email":"mail@bacnh.com"},"repository":{"url":"git+https://github.com/bacnh85/pi-extensions.git","type":"git","directory":"pi-web"},"_npmVersion":"10.9.8","description":"Pi extension for web search, page extraction, Firecrawl scraping/crawling, and Crawl4AI headless browser crawling.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"jsdom":"^27.0.1","turndown":"^7.2.2","turndown-plugin-gfm":"^1.0.2","@mozilla/readability":"^0.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","chai":"^6.2.2","mocha":"^11.7.6","@types/chai":"^5.2.3","@types/node":"^26.0.1","@types/jsdom":"^28.0.3","@types/mocha":"^10.0.10","@types/turndown":"^5.0.6"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web_0.5.0_1783655319402_0.5199797608630481","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"name":"@bacnh85/pi-web","version":"0.5.1","keywords":["pi-package","pi-extension","web-search","brave-search","firecrawl","crawl4ai","scraping","crawling"],"license":"MIT","_id":"@bacnh85/pi-web@0.5.1","maintainers":[{"name":"bacnh85","email":"mail@bacnh.com"}],"homepage":"https://github.com/bacnh85/pi-extensions#readme","bugs":{"url":"https://github.com/bacnh85/pi-extensions/issues"},"pi":{"skills":["./skills"],"extensions":["./extensions/index.ts"]},"dist":{"shasum":"a5197f9ccbdc56b5cae03ed91604d474b8787739","tarball":"https://registry.npmjs.org/@bacnh85/pi-web/-/pi-web-0.5.1.tgz","fileCount":15,"integrity":"sha512-IkWerYAzp0QUyAgaoRjbD6sE144hC9dbD5QEuzVyIuiymN+N4rnCEQSmQxDgA+tq6ubMDevOMrmkU+pMBM07mw==","signatures":[{"sig":"MEUCIQDMJeS5FY15yp96D7ghcAQwHETaP43CiJclxeAHv02gdgIgIjA8bWIadwxId75sbsquW74vznj1XXJMv50d3ODel3E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":83605},"type":"module","gitHead":"bad64a5e7328be2e1e5430e18e174cd35c2e5fd7","scripts":{"test":"cd extensions && npx mocha"},"_npmUser":{"name":"bacnh85","email":"mail@bacnh.com"},"repository":{"url":"git+https://github.com/bacnh85/pi-extensions.git","type":"git","directory":"pi-web"},"_npmVersion":"10.9.8","description":"Pi extension for web search, page extraction, Firecrawl scraping/crawling, and Crawl4AI headless browser crawling.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"jsdom":"^27.0.1","turndown":"^7.2.2","turndown-plugin-gfm":"^1.0.2","@mozilla/readability":"^0.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","chai":"^6.2.2","mocha":"^11.7.6","@types/chai":"^5.2.3","@types/node":"^26.0.1","@types/jsdom":"^28.0.3","@types/mocha":"^10.0.10","@types/turndown":"^5.0.6"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web_0.5.1_1783760697107_0.6283669703644883","host":"s3://npm-registry-packages-npm-production"}},"0.5.2":{"name":"@bacnh85/pi-web","version":"0.5.2","keywords":["pi-package","pi-extension","web-search","brave-search","firecrawl","crawl4ai","scraping","crawling"],"license":"MIT","_id":"@bacnh85/pi-web@0.5.2","maintainers":[{"name":"bacnh85","email":"mail@bacnh.com"}],"homepage":"https://github.com/bacnh85/pi-extensions#readme","bugs":{"url":"https://github.com/bacnh85/pi-extensions/issues"},"pi":{"skills":["./skills"],"extensions":["./extensions/index.ts"]},"dist":{"shasum":"0aaec70df8915d19a2edaf4aa9e7eb3ab7bd8433","tarball":"https://registry.npmjs.org/@bacnh85/pi-web/-/pi-web-0.5.2.tgz","fileCount":15,"integrity":"sha512-N0UMrBUzhITFucaZQ+8Td/q7wYGdP5EmCsYEEaqiboEOtffT7gfjhHCunR6Wa+N4DB+TJIXCEXfcC5nx6uBrTg==","signatures":[{"sig":"MEQCIEpXalSaxp8eZ69h01K89Sx4DFvEyF+2zAHNZS28E/UxAiBbJtfNTSyu+yWkZupEckm2cCw4nHses/ugJPez1SgHTg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":83323},"type":"module","gitHead":"8c7bd9f6c0664f6664367d03d5d72da56a6f018a","scripts":{"test":"cd extensions && npx mocha"},"_npmUser":{"name":"bacnh85","email":"mail@bacnh.com"},"repository":{"url":"git+https://github.com/bacnh85/pi-extensions.git","type":"git","directory":"pi-web"},"_npmVersion":"10.9.8","description":"Pi extension for web search, page extraction, Firecrawl scraping/crawling, and Crawl4AI headless browser crawling.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"jsdom":"^27.0.1","turndown":"^7.2.2","turndown-plugin-gfm":"^1.0.2","@mozilla/readability":"^0.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","chai":"^6.2.2","mocha":"^11.7.6","@types/chai":"^5.2.3","@types/node":"^26.0.1","@types/jsdom":"^28.0.3","@types/mocha":"^10.0.10","@types/turndown":"^5.0.6"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web_0.5.2_1783911484615_0.3458907757649228","host":"s3://npm-registry-packages-npm-production"}},"0.5.3":{"name":"@bacnh85/pi-web","version":"0.5.3","keywords":["pi-package","pi-extension","web-search","brave-search","firecrawl","crawl4ai","scraping","crawling"],"license":"MIT","_id":"@bacnh85/pi-web@0.5.3","maintainers":[{"name":"bacnh85","email":"mail@bacnh.com"}],"homepage":"https://github.com/bacnh85/pi-extensions#readme","bugs":{"url":"https://github.com/bacnh85/pi-extensions/issues"},"pi":{"skills":["./skills"],"extensions":["./extensions/index.ts"]},"dist":{"shasum":"b0a119a7f2bd518bb3b989e9398a247750f557a6","tarball":"https://registry.npmjs.org/@bacnh85/pi-web/-/pi-web-0.5.3.tgz","fileCount":15,"integrity":"sha512-K4/PRWxEivinD/k8mK7BIHl3InOc9cLHsEOgET06TnhMvT2Nv7uPahj/oixZLj4MC89YJ9zHmfS/DGb+jk/eXg==","signatures":[{"sig":"MEQCIDuJeULfikhK6WuCIZm25HT6NCfpgKWAn2VMmpB4x4LqAiBD1Yhq0iP9Ag/9zYEudNyl+Tq3RwlruJL6Re8D15NQmg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84243},"type":"module","gitHead":"a82601985e09c616a3abc8fe614921b19500e3da","scripts":{"test":"cd extensions && npx mocha"},"_npmUser":{"name":"bacnh85","email":"mail@bacnh.com"},"repository":{"url":"git+https://github.com/bacnh85/pi-extensions.git","type":"git","directory":"pi-web"},"_npmVersion":"10.9.8","description":"Pi extension for web search, page extraction, Firecrawl scraping/crawling, and Crawl4AI headless browser crawling.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"jsdom":"^27.0.1","turndown":"^7.2.2","turndown-plugin-gfm":"^1.0.2","@mozilla/readability":"^0.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","chai":"^6.2.2","mocha":"^11.7.6","@types/chai":"^5.2.3","@types/node":"^26.0.1","@types/jsdom":"^28.0.3","@types/mocha":"^10.0.10","@types/turndown":"^5.0.6"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web_0.5.3_1784011912453_0.9609950998004702","host":"s3://npm-registry-packages-npm-production"}},"0.5.4":{"name":"@bacnh85/pi-web","version":"0.5.4","keywords":["pi-package","pi-extension","web-search","brave-search","firecrawl","crawl4ai","scraping","crawling"],"license":"MIT","_id":"@bacnh85/pi-web@0.5.4","maintainers":[{"name":"bacnh85","email":"mail@bacnh.com"}],"homepage":"https://github.com/bacnh85/pi-extensions#readme","bugs":{"url":"https://github.com/bacnh85/pi-extensions/issues"},"pi":{"skills":["./skills"],"extensions":["./extensions/index.ts"]},"dist":{"shasum":"c9851460fda601347b100271bc3e1d05e2b2fcec","tarball":"https://registry.npmjs.org/@bacnh85/pi-web/-/pi-web-0.5.4.tgz","fileCount":15,"integrity":"sha512-wUc6AY07pz7c2snNjKmMAMw7gfQuqVSZulU8eoaCrbu0jWWqo7a0ef6WKDUsag8fKQkqb3xBwkoONLM++Mb8QA==","signatures":[{"sig":"MEYCIQCs30PIXni57LgfocZeZj1tFOcxdEyZAtP2vkvYsUYTGQIhANLJri/xBLNcos/5kamxv50+s75pd7p/d5nZUYBX4v9L","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":86738},"type":"module","gitHead":"3302e96071be5f8a134af4742b9c23077dc5a6b6","scripts":{"test":"cd extensions && npx mocha"},"_npmUser":{"name":"bacnh85","email":"mail@bacnh.com"},"repository":{"url":"git+https://github.com/bacnh85/pi-extensions.git","type":"git","directory":"pi-web"},"_npmVersion":"10.9.8","description":"Pi extension for web search, page extraction, Firecrawl scraping/crawling, and Crawl4AI headless browser crawling.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"jsdom":"^27.0.1","turndown":"^7.2.2","turndown-plugin-gfm":"^1.0.2","@mozilla/readability":"^0.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","chai":"^6.2.2","mocha":"^11.7.6","@types/chai":"^5.2.3","@types/node":"^26.0.1","@types/jsdom":"^28.0.3","@types/mocha":"^10.0.10","@types/turndown":"^5.0.6"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web_0.5.4_1785044671630_0.20519555127122113","host":"s3://npm-registry-packages-npm-production"}},"0.5.5":{"name":"@bacnh85/pi-web","version":"0.5.5","keywords":["pi-package","pi-extension","web-search","brave-search","firecrawl","crawl4ai","scraping","crawling"],"license":"MIT","_id":"@bacnh85/pi-web@0.5.5","maintainers":[{"name":"bacnh85","email":"mail@bacnh.com"}],"homepage":"https://github.com/bacnh85/pi-extensions#readme","bugs":{"url":"https://github.com/bacnh85/pi-extensions/issues"},"pi":{"skills":["./skills"],"extensions":["./extensions/index.ts"]},"dist":{"shasum":"53136f7b86e17b3ff63e66a4522ff08e3aa8dff8","tarball":"https://registry.npmjs.org/@bacnh85/pi-web/-/pi-web-0.5.5.tgz","fileCount":16,"integrity":"sha512-IK0LXAMJ6YQ5oKef8uAS3fUk6CaZiEGUhq33BDTwHEP0rDoOVtz1owOZq1EfDwW3cZHIxhs51liAU1uxUjoJ5g==","signatures":[{"sig":"MEYCIQC74tJOo6zvfhQftFVYWJoSfERCjXZRVMTHCBzmuIaoEgIhAP7UC5blx4xAzUiKrQOGllpKp/rop4Byi8nUEUIYTNH5","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":87462},"type":"module","gitHead":"92c3ed2b01c74685201a903655a39a7c7ddff2dc","scripts":{"test":"cd extensions && npx mocha"},"_npmUser":{"name":"bacnh85","email":"mail@bacnh.com"},"repository":{"url":"git+https://github.com/bacnh85/pi-extensions.git","type":"git","directory":"pi-web"},"_npmVersion":"10.9.8","description":"Pi extension for web search, page extraction, Firecrawl scraping/crawling, and Crawl4AI headless browser crawling.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"jsdom":"^27.0.1","turndown":"^7.2.2","turndown-plugin-gfm":"^1.0.2","@mozilla/readability":"^0.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","chai":"^6.2.2","mocha":"^11.7.6","@types/chai":"^5.2.3","@types/node":"^26.0.1","@types/jsdom":"^28.0.3","@types/mocha":"^10.0.10","@types/turndown":"^5.0.6"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web_0.5.5_1785378974694_0.62427619528666","host":"s3://npm-registry-packages-npm-production"}},"0.5.6":{"name":"@bacnh85/pi-web","version":"0.5.6","keywords":["pi-package","pi-extension","web-search","brave-search","firecrawl","crawl4ai","scraping","crawling"],"license":"MIT","_id":"@bacnh85/pi-web@0.5.6","maintainers":[{"name":"bacnh85","email":"mail@bacnh.com"}],"homepage":"https://github.com/bacnh85/pi-extensions#readme","bugs":{"url":"https://github.com/bacnh85/pi-extensions/issues"},"pi":{"skills":["./skills"],"extensions":["./extensions/index.ts"]},"dist":{"shasum":"2cba16f4d69fed307ca27d0708f5d4d0cce24e41","tarball":"https://registry.npmjs.org/@bacnh85/pi-web/-/pi-web-0.5.6.tgz","fileCount":16,"integrity":"sha512-vxXlQ3hBHGhFhUn21Ae/UAb/hTrR+4ZEwvHflN4Se0G65BxPXibIppHU4WfeEnEjp350Ny0z55HLYgUt/1+r+Q==","signatures":[{"sig":"MEQCIElS0p4YwlcoxDJFtg8AHxymJgtTGK9zoAi7fUy+Lgg7AiB334wnu5k1SPyuE5MRMfayK7oTTuoFkH9q5+Kt5YzdUw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":90500},"type":"module","gitHead":"b64c3f555d5e2e4627cd5709170ee6755d9d1c26","scripts":{"test":"cd extensions && npx mocha"},"_npmUser":{"name":"bacnh85","email":"mail@bacnh.com"},"repository":{"url":"git+https://github.com/bacnh85/pi-extensions.git","type":"git","directory":"pi-web"},"_npmVersion":"10.9.8","description":"Pi extension for web search, page extraction, Firecrawl scraping/crawling, and Crawl4AI headless browser crawling.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"jsdom":"^27.0.1","turndown":"^7.2.2","turndown-plugin-gfm":"^1.0.2","@mozilla/readability":"^0.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","chai":"^6.2.2","mocha":"^11.7.6","@types/chai":"^5.2.3","@types/node":"^26.0.1","@types/jsdom":"^28.0.3","@types/mocha":"^10.0.10","@types/turndown":"^5.0.6"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web_0.5.6_1785592119857_0.928960504577554","host":"s3://npm-registry-packages-npm-production"}},"0.5.7":{"name":"@bacnh85/pi-web","version":"0.5.7","keywords":["pi-package","pi-extension","web-search","brave-search","firecrawl","crawl4ai","scraping","crawling"],"license":"MIT","_id":"@bacnh85/pi-web@0.5.7","maintainers":[{"name":"bacnh85","email":"mail@bacnh.com"}],"homepage":"https://github.com/bacnh85/pi-extensions/tree/main/pi-web","bugs":{"url":"https://github.com/bacnh85/pi-extensions/issues"},"pi":{"skills":["./skills"],"extensions":["./extensions/index.ts"]},"dist":{"shasum":"6e0415ca220b241862a0d47d4ca683bf111c8577","tarball":"https://registry.npmjs.org/@bacnh85/pi-web/-/pi-web-0.5.7.tgz","fileCount":16,"integrity":"sha512-Tp6W2oLOfpAepYlOkYSuNIuywaxo5UtieSGpkz/ewtME61cWx3eirK8NGi2ldBiHjqYcCSLtYse8RldUsCZ25Q==","signatures":[{"sig":"MEUCIQCMPOtT/F2k++7cpu6kHQ67dARP/mQfgZ68TQidm89EngIgAUQfen3ruz3z6YQ4LTHdH+KQHBF3WN6L99DLEyQQETE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":90624},"type":"module","gitHead":"b6dc2aa08224976862793b502d6ec946c2b9b2d4","scripts":{"test":"cd extensions && npx mocha"},"_npmUser":{"name":"bacnh85","email":"mail@bacnh.com"},"repository":{"url":"git+https://github.com/bacnh85/pi-extensions.git","type":"git","directory":"pi-web"},"_npmVersion":"10.9.8","description":"Pi extension for web search, page extraction, Firecrawl scraping/crawling, and Crawl4AI headless browser crawling.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"jsdom":"^27.0.1","turndown":"^7.2.2","turndown-plugin-gfm":"^1.0.2","@mozilla/readability":"^0.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","chai":"^6.2.2","mocha":"^11.7.6","@types/chai":"^5.2.3","@types/node":"^26.0.1","@types/jsdom":"^28.0.3","@types/mocha":"^10.0.10","@types/turndown":"^5.0.6"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web_0.5.7_1785926427829_0.9728104539391864","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@bacnh85/pi-web","version":"0.6.0","keywords":["pi-package","pi-extension","web-search","brave-search","firecrawl","crawl4ai","scraping","crawling"],"license":"MIT","_id":"@bacnh85/pi-web@0.6.0","maintainers":[{"name":"bacnh85","email":"mail@bacnh.com"}],"homepage":"https://github.com/bacnh85/pi-extensions/tree/main/pi-web","bugs":{"url":"https://github.com/bacnh85/pi-extensions/issues"},"pi":{"skills":["./skills"],"extensions":["./extensions/index.ts"]},"dist":{"shasum":"5b5d44c6329443ea870baf4e58629fc15a2b4dfe","tarball":"https://registry.npmjs.org/@bacnh85/pi-web/-/pi-web-0.6.0.tgz","fileCount":17,"integrity":"sha512-VwYfx6lpHVSfxrspOBqja9t9aM9GaOgiFWGc7kJj4mijv67HreFsRwpU1aI4xvOG5D93YcyZuAG8gC1OappqbQ==","signatures":[{"sig":"MEUCIQD50Y6burZ0MMRAX7tCKbuvLjGA9JnsqTgq+fx//AD/dAIgOH1pGTHYya5lU4IfFefbqIsyngHNdTDgxiV3NnUrklw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":103974},"type":"module","gitHead":"6774d7fde5feff847839175d83e480f7ef823260","scripts":{"test":"cd extensions && npx mocha"},"_npmUser":{"name":"bacnh85","email":"mail@bacnh.com"},"repository":{"url":"git+https://github.com/bacnh85/pi-extensions.git","type":"git","directory":"pi-web"},"_npmVersion":"10.9.8","description":"Pi extension for web search, page extraction, Firecrawl scraping/crawling, and Crawl4AI headless browser crawling.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"jsdom":"^27.0.1","turndown":"^7.2.2","turndown-plugin-gfm":"^1.0.2","@mozilla/readability":"^0.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","chai":"^6.2.2","mocha":"^11.7.6","@types/chai":"^5.2.3","@types/node":"^26.0.1","@types/jsdom":"^28.0.3","@types/mocha":"^10.0.10","@types/turndown":"^5.0.6"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web_0.6.0_1786094775810_0.18571801834906476","host":"s3://npm-registry-packages-npm-production"}},"0.6.1":{"name":"@bacnh85/pi-web","version":"0.6.1","keywords":["pi-package","pi-extension","web-search","brave-search","firecrawl","crawl4ai","scraping","crawling"],"license":"MIT","_id":"@bacnh85/pi-web@0.6.1","maintainers":[{"name":"bacnh85","email":"mail@bacnh.com"}],"homepage":"https://github.com/bacnh85/pi-extensions/tree/main/pi-web","bugs":{"url":"https://github.com/bacnh85/pi-extensions/issues"},"pi":{"skills":["./skills"],"extensions":["./extensions/index.ts"]},"dist":{"shasum":"f675d90436da3049fac3a5fadb94879574c743ba","tarball":"https://registry.npmjs.org/@bacnh85/pi-web/-/pi-web-0.6.1.tgz","fileCount":17,"integrity":"sha512-sj33zBqmYZcWJZXvaCFMbf28hEvpkme4inAk7TjefRBuQ3WW914t4j8dGeBn9eK9XLL6qrPKeGd8EfWYBZLvbA==","signatures":[{"sig":"MEUCIQDUVAad6vMiP7je65DemerX7oTxH7xtgdK6QCUhWq7JEgIgUFeGe/mNs091DIgQWG2PZvvxnJ+xWONo83iB9oItBMk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":103167},"type":"module","gitHead":"49c147380d8bb08e64e3d6965ffd2d70266c5f95","scripts":{"test":"cd extensions && npx mocha"},"_npmUser":{"name":"bacnh85","email":"mail@bacnh.com"},"overrides":{"diff":"^8.0.3","js-yaml@>=4.0.0 <4.3.1":"^4.3.1","brace-expansion@>=2.0.0 <2.1.4":"^2.1.4","serialize-javascript@>=5.0.0 <7.0.5":"^7.0.5"},"repository":{"url":"git+https://github.com/bacnh85/pi-extensions.git","type":"git","directory":"pi-web"},"_npmVersion":"10.9.8","description":"Pi extension for web search, page extraction, Firecrawl scraping/crawling, and Crawl4AI headless browser crawling.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"jsdom":"^27.0.1","turndown":"^7.2.2","turndown-plugin-gfm":"^1.0.2","@mozilla/readability":"^0.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","chai":"^6.2.2","mocha":"^11.8.0","@types/chai":"^5.2.3","@types/node":"^26.0.1","@types/jsdom":"^28.0.3","@types/mocha":"^10.0.10","@types/turndown":"^5.0.6"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web_0.6.1_1788076763649_0.07095807843967039","host":"s3://npm-registry-packages-npm-production"}},"0.6.2":{"name":"@bacnh85/pi-web","version":"0.6.2","keywords":["pi-package","pi-extension","web-search","brave-search","firecrawl","crawl4ai","scraping","crawling"],"license":"MIT","_id":"@bacnh85/pi-web@0.6.2","maintainers":[{"name":"bacnh85","email":"mail@bacnh.com"}],"homepage":"https://github.com/bacnh85/pi-extensions/tree/main/pi-web","bugs":{"url":"https://github.com/bacnh85/pi-extensions/issues"},"pi":{"skills":["./skills"],"extensions":["./extensions/index.ts"]},"dist":{"shasum":"32bc095216f08547a6b6c17ad6a3100ea0c83350","tarball":"https://registry.npmjs.org/@bacnh85/pi-web/-/pi-web-0.6.2.tgz","fileCount":17,"integrity":"sha512-DLg8t6xSncwLITlELatJjecyOC9BCEiPpQMlHDX1Z8SjMpEtH2APbdtOyCpSueFQ9F2I5FhvroG0d0N7YgnufQ==","signatures":[{"sig":"MEYCIQCAahmBUwysQELw78ceCp1cqX+mKVoqyUCZ+U99SSpPOAIhAJEjTkHAZG/TXHduG+ft7KSbu+zNksePRfRGltLiH9sv","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":105206},"type":"module","gitHead":"8f9350757e92bf33cbb0af1d36360fc4731b25db","scripts":{"test":"cd extensions && npx mocha"},"_npmUser":{"name":"bacnh85","email":"mail@bacnh.com"},"overrides":{"diff":"^8.0.3","js-yaml@>=4.0.0 <4.3.1":"^4.3.1","brace-expansion@>=2.0.0 <2.1.4":"^2.1.4","serialize-javascript@>=5.0.0 <7.0.5":"^7.0.5"},"repository":{"url":"git+https://github.com/bacnh85/pi-extensions.git","type":"git","directory":"pi-web"},"_npmVersion":"10.9.8","description":"Pi extension for web search, page extraction, Firecrawl scraping/crawling, and Crawl4AI headless browser crawling.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"jsdom":"^27.0.1","turndown":"^7.2.2","turndown-plugin-gfm":"^1.0.2","@mozilla/readability":"^0.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","chai":"^6.2.2","mocha":"^11.8.0","@types/chai":"^5.2.3","@types/node":"^26.0.1","@types/jsdom":"^28.0.3","@types/mocha":"^10.0.10","@types/turndown":"^5.0.6"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web_0.6.2_1788757119146_0.5653379348616059","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@bacnh85/pi-web","version":"0.7.0","keywords":["pi-package","pi-extension","web-search","brave-search","firecrawl","crawl4ai","scraping","crawling"],"license":"MIT","_id":"@bacnh85/pi-web@0.7.0","maintainers":[{"name":"bacnh85","email":"mail@bacnh.com"}],"homepage":"https://github.com/bacnh85/pi-extensions/tree/main/pi-web","bugs":{"url":"https://github.com/bacnh85/pi-extensions/issues"},"pi":{"skills":["./skills"],"extensions":["./extensions/index.ts"]},"dist":{"shasum":"7b181bc2e794d3f3a153742ba0446ab13a7a0c07","tarball":"https://registry.npmjs.org/@bacnh85/pi-web/-/pi-web-0.7.0.tgz","fileCount":18,"integrity":"sha512-NeBqasma9TrjxeURmjIDy19ltWvqi+eg63DKaB15NnYoh1G6EnMra97i70a3i5zipIjJRzIOR4THVX1PpgRv2Q==","signatures":[{"sig":"MEUCIEq0dLhb6q7Ss/tQQS8aQx0sjXx/TGT1kqlg2LrD7u3hAiEAvy/A0dsSLFtKHaxqCMS8X3/1w36Zwjr8Xpc4HTBit8M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":122105},"type":"module","gitHead":"52e862ebca867366ccf3be0c563c124687c91bfd","scripts":{"test":"cd extensions && npx mocha"},"_npmUser":{"name":"bacnh85","email":"mail@bacnh.com"},"overrides":{"diff":"^8.0.3","js-yaml@>=4.0.0 <4.3.1":"^4.3.1","brace-expansion@>=2.0.0 <2.1.4":"^2.1.4","serialize-javascript@>=5.0.0 <7.0.5":"^7.0.5"},"repository":{"url":"git+https://github.com/bacnh85/pi-extensions.git","type":"git","directory":"pi-web"},"_npmVersion":"10.9.8","description":"Pi extension for web search, page extraction, Firecrawl scraping/crawling, and Crawl4AI headless browser crawling.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"jsdom":"^27.0.1","turndown":"^7.2.2","turndown-plugin-gfm":"^1.0.2","@mozilla/readability":"^0.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","chai":"^6.2.2","mocha":"^11.8.0","@types/chai":"^5.2.3","@types/node":"^26.0.1","@types/jsdom":"^28.0.3","@types/mocha":"^10.0.10","@types/turndown":"^5.0.6"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web_0.7.0_1789123293244_0.21286734556608167","host":"s3://npm-registry-packages-npm-production"}},"0.7.1":{"name":"@bacnh85/pi-web","version":"0.7.1","keywords":["pi-package","pi-extension","web-search","brave-search","firecrawl","crawl4ai","scraping","crawling"],"license":"MIT","_id":"@bacnh85/pi-web@0.7.1","maintainers":[{"name":"bacnh85","email":"mail@bacnh.com"}],"homepage":"https://github.com/bacnh85/pi-extensions/tree/main/pi-web","bugs":{"url":"https://github.com/bacnh85/pi-extensions/issues"},"pi":{"skills":["./skills"],"extensions":["./extensions/index.ts"]},"dist":{"shasum":"00aef1e1d733aadb874830d982968d532472df82","tarball":"https://registry.npmjs.org/@bacnh85/pi-web/-/pi-web-0.7.1.tgz","fileCount":18,"integrity":"sha512-PwqWq0a/vMGe0I0vDUqPiwWWz8l2iKQguasl/CLUQYnB9TVffCD/8Kn717tmYyUODXk8n3Mcd8O7B9TTX5bxqg==","signatures":[{"sig":"MEYCIQDWCCwu2zYFEPyM2/NnhzAfq/Em6iE2igvbeh1ysN2wIgIhAJY754qsSnfkyTDgsoKVE2AwqBU/jNQJgTEE/pBhPa7P","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":122625},"type":"module","gitHead":"fc25702c6bed994da1dd5071c5ec8071bfd28393","scripts":{"test":"cd extensions && npx mocha"},"_npmUser":{"name":"bacnh85","email":"mail@bacnh.com"},"overrides":{"diff":"^8.0.3","js-yaml@>=4.0.0 <4.3.1":"^4.3.1","brace-expansion@>=2.0.0 <2.1.4":"^2.1.4","serialize-javascript@>=5.0.0 <7.0.5":"^7.0.5"},"repository":{"url":"git+https://github.com/bacnh85/pi-extensions.git","type":"git","directory":"pi-web"},"_npmVersion":"10.9.8","description":"Pi extension for web search, page extraction, Firecrawl scraping/crawling, and Crawl4AI headless browser crawling.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"jsdom":"^27.0.1","turndown":"^7.2.2","turndown-plugin-gfm":"^1.0.2","@mozilla/readability":"^0.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","chai":"^6.2.2","mocha":"^11.8.0","@types/chai":"^5.2.3","@types/node":"^26.0.1","@types/jsdom":"^28.0.3","@types/mocha":"^10.0.10","@types/turndown":"^5.0.6"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web_0.7.1_1789204318518_0.3737620355672915","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"@bacnh85/pi-web","version":"0.8.0","keywords":["pi-package","pi-extension","web-search","brave-search","firecrawl","crawl4ai","scraping","crawling","gemini","deep-research"],"license":"MIT","_id":"@bacnh85/pi-web@0.8.0","maintainers":[{"name":"bacnh85","email":"mail@bacnh.com"}],"homepage":"https://github.com/bacnh85/pi-extensions/tree/main/pi-web","bugs":{"url":"https://github.com/bacnh85/pi-extensions/issues"},"pi":{"skills":["./skills"],"extensions":["./extensions/index.ts"]},"dist":{"shasum":"1f4621cdafc7fd35a27011b3cec20184e65d60e0","tarball":"https://registry.npmjs.org/@bacnh85/pi-web/-/pi-web-0.8.0.tgz","fileCount":19,"integrity":"sha512-ZyS+9mgVw7GVcYt4UoPMYEJlJZ0IwhAmsQ3rxuBFhona8NLIEEZX1ki0ga39OCpVfbA7x36nDrSGGhSBeDRj/g==","signatures":[{"sig":"MEQCIFhGF2uD5UoyFobLcaNJIXg08WrUPdBeHJzt9vOCFBZbAiBEqjvyXyH7BSMOAFkR6VPa/bq5mMNr1v7SE41fNQgWMQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":144854},"type":"module","gitHead":"8705ad1164d061b10e12202b963f0d604235d411","scripts":{"test":"cd extensions && npx mocha"},"_npmUser":{"name":"bacnh85","email":"mail@bacnh.com"},"overrides":{"diff":"^8.0.3","js-yaml@>=4.0.0 <4.3.1":"^4.3.1","brace-expansion@>=2.0.0 <2.1.4":"^2.1.4","serialize-javascript@>=5.0.0 <7.0.5":"^7.0.5"},"repository":{"url":"git+https://github.com/bacnh85/pi-extensions.git","type":"git","directory":"pi-web"},"_npmVersion":"10.9.8","description":"Pi extension for web search, page extraction, Firecrawl scraping/crawling, Crawl4AI headless browser crawling, and Gemini web-tier research.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"jsdom":"^27.0.1","turndown":"^7.2.2","gemini-reverse":"^2.1.0","turndown-plugin-gfm":"^1.0.2","@mozilla/readability":"^0.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","chai":"^6.2.2","mocha":"^11.8.0","@types/chai":"^5.2.3","@types/node":"^26.0.1","@types/jsdom":"^28.0.3","@types/mocha":"^10.0.10","@types/turndown":"^5.0.6"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web_0.8.0_1789285012184_0.5963821529169999","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"name":"@bacnh85/pi-web","version":"0.9.0","keywords":["pi-package","pi-extension","web-search","brave-search","firecrawl","crawl4ai","scraping","crawling","gemini","deep-research","image-generation","zai","cogview"],"license":"MIT","_id":"@bacnh85/pi-web@0.9.0","maintainers":[{"name":"bacnh85","email":"mail@bacnh.com"}],"homepage":"https://github.com/bacnh85/pi-extensions/tree/main/pi-web","bugs":{"url":"https://github.com/bacnh85/pi-extensions/issues"},"pi":{"skills":["./skills"],"extensions":["./extensions/index.ts"]},"dist":{"shasum":"331a60f5a64bd4f36b8bcb87603fa972698a5f7a","tarball":"https://registry.npmjs.org/@bacnh85/pi-web/-/pi-web-0.9.0.tgz","fileCount":20,"integrity":"sha512-OZExHRPpsS0uWMbbrYvRPZDUN7Vk3dbYT5MonJIN4WjEof4bijHc/7dYNZXHxjR05Egb36hyGcM0RzE443WU4A==","signatures":[{"sig":"MEUCIQDnp2IO3a/3aA4viYwlbnxFdfnw4ACZ68qTqTjm5eJd+QIgCNYi4j3E9UsHRHLtAWuNiihgF1AH+BFp7hf23ZRlM6s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":170132},"type":"module","gitHead":"1549c2c43864170074afe35433461d42676d62e7","scripts":{"test":"cd extensions && npx mocha"},"_npmUser":{"name":"bacnh85","email":"mail@bacnh.com"},"overrides":{"diff":"^8.0.3","js-yaml@>=4.0.0 <4.3.1":"^4.3.1","brace-expansion@>=2.0.0 <2.1.4":"^2.1.4","serialize-javascript@>=5.0.0 <7.0.5":"^7.0.5"},"repository":{"url":"git+https://github.com/bacnh85/pi-extensions.git","type":"git","directory":"pi-web"},"_npmVersion":"10.9.8","description":"Pi extension for web search, page extraction, Firecrawl scraping/crawling, Crawl4AI headless browser crawling, Gemini web-tier research, and free upstream image generation.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"jsdom":"^27.0.1","turndown":"^7.2.2","gemini-reverse":"^2.1.0","turndown-plugin-gfm":"^1.0.2","@mozilla/readability":"^0.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","chai":"^6.2.2","mocha":"^11.8.0","@types/chai":"^5.2.3","@types/node":"^26.0.1","@types/jsdom":"^28.0.3","@types/mocha":"^10.0.10","@types/turndown":"^5.0.6"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web_0.9.0_1789292566820_0.3424029188980955","host":"s3://npm-registry-packages-npm-production"}},"0.9.1":{"name":"@bacnh85/pi-web","version":"0.9.1","keywords":["pi-package","pi-extension","web-search","brave-search","firecrawl","crawl4ai","scraping","crawling","gemini","deep-research","image-generation","zai","cogview"],"license":"MIT","_id":"@bacnh85/pi-web@0.9.1","maintainers":[{"name":"bacnh85","email":"mail@bacnh.com"}],"homepage":"https://github.com/bacnh85/pi-extensions/tree/main/pi-web","bugs":{"url":"https://github.com/bacnh85/pi-extensions/issues"},"pi":{"skills":["./skills"],"extensions":["./extensions/index.ts"]},"dist":{"shasum":"bfce6fbf3b3f55d8642d4eb478e9a73b04b83e38","tarball":"https://registry.npmjs.org/@bacnh85/pi-web/-/pi-web-0.9.1.tgz","fileCount":20,"integrity":"sha512-DV2dxpb40LFFLVBBt82erDRgkMiQ1ftlGzc1+t1kfMmAl3F5Fw34IapkdZIfqb9vfcjjH/2vXg8nZTL7HqdCKA==","signatures":[{"sig":"MEYCIQCnzk4KsUg4cBF7FUM6sPsO+00aZQqQqTojSbJ94E6M3AIhAOwk/389ECVZ0UAiXMVNjVcUryDi5oPArMPIxrzx6mLF","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":171455},"type":"module","gitHead":"76be0b4a197a0dfdc79ecaa65475ec5845908652","scripts":{"test":"cd extensions && npx mocha"},"_npmUser":{"name":"bacnh85","email":"mail@bacnh.com"},"overrides":{"diff":"^8.0.3","js-yaml@>=4.0.0 <4.3.1":"^4.3.1","brace-expansion@>=2.0.0 <2.1.4":"^2.1.4","serialize-javascript@>=5.0.0 <7.0.5":"^7.0.5"},"repository":{"url":"git+https://github.com/bacnh85/pi-extensions.git","type":"git","directory":"pi-web"},"_npmVersion":"10.9.8","description":"Pi extension for web search, page extraction, Firecrawl scraping/crawling, Crawl4AI headless browser crawling, Gemini web-tier research, and free upstream image generation.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"jsdom":"^27.0.1","turndown":"^7.2.2","gemini-reverse":"^2.1.0","turndown-plugin-gfm":"^1.0.2","@mozilla/readability":"^0.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","chai":"^6.2.2","mocha":"^11.8.0","@types/chai":"^5.2.3","@types/node":"^26.0.1","@types/jsdom":"^28.0.3","@types/mocha":"^10.0.10","@types/turndown":"^5.0.6"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web_0.9.1_1789294370428_0.5216596758017804","host":"s3://npm-registry-packages-npm-production"}},"0.9.2":{"name":"@bacnh85/pi-web","version":"0.9.2","keywords":["pi-package","pi-extension","web-search","brave-search","firecrawl","crawl4ai","scraping","crawling","gemini","deep-research","image-generation","zai","cogview"],"license":"MIT","_id":"@bacnh85/pi-web@0.9.2","maintainers":[{"name":"bacnh85","email":"mail@bacnh.com"}],"homepage":"https://github.com/bacnh85/pi-extensions/tree/main/pi-web","bugs":{"url":"https://github.com/bacnh85/pi-extensions/issues"},"pi":{"skills":["./skills"],"extensions":["./extensions/index.ts"]},"dist":{"shasum":"c1a624e8965e501f4304d2d554cfaa5ce5746f33","tarball":"https://registry.npmjs.org/@bacnh85/pi-web/-/pi-web-0.9.2.tgz","fileCount":20,"integrity":"sha512-ASB7AYoWyw43Ikaz3w9i71tAVZByUnMrPoLEs0FmwA9cWHzkqVYfUUjyRFGh4atzEYTHF5Dm8ot0DhJw8eUbcA==","signatures":[{"sig":"MEQCIHLbCDehxM9fdoFe6ld+IQDuY+S6s0oaQ54EI5POxntqAiAX70Rm8I4Ol+N8E8eDpZhTNxymdTrrDcJNB04PIpw6yQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":173811},"type":"module","gitHead":"31598fe82091765a933c65a6f163d513a470db98","scripts":{"test":"cd extensions && npx mocha"},"_npmUser":{"name":"bacnh85","email":"mail@bacnh.com"},"overrides":{"diff":"^8.0.3","js-yaml@>=4.0.0 <4.3.1":"^4.3.1","brace-expansion@>=2.0.0 <2.1.4":"^2.1.4","serialize-javascript@>=5.0.0 <7.0.5":"^7.0.5"},"repository":{"url":"git+https://github.com/bacnh85/pi-extensions.git","type":"git","directory":"pi-web"},"_npmVersion":"10.9.8","description":"Pi extension for web search, page extraction, Firecrawl scraping/crawling, Crawl4AI headless browser crawling, Gemini web-tier research, and free upstream image generation.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"jsdom":"^27.0.1","turndown":"^7.2.2","gemini-reverse":"^2.1.0","turndown-plugin-gfm":"^1.0.2","@mozilla/readability":"^0.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","chai":"^6.2.2","mocha":"^11.8.0","@types/chai":"^5.2.3","@types/node":"^26.0.1","@types/jsdom":"^28.0.3","@types/mocha":"^10.0.10","@types/turndown":"^5.0.6"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web_0.9.2_1789297340263_0.6921173276192449","host":"s3://npm-registry-packages-npm-production"}},"0.10.0":{"name":"@bacnh85/pi-web","version":"0.10.0","keywords":["pi-package","pi-extension","web-search","brave-search","firecrawl","crawl4ai","scraping","crawling","gemini","deep-research","image-generation","zai","cogview"],"license":"MIT","_id":"@bacnh85/pi-web@0.10.0","maintainers":[{"name":"bacnh85","email":"mail@bacnh.com"}],"homepage":"https://github.com/bacnh85/pi-extensions/tree/main/pi-web","bugs":{"url":"https://github.com/bacnh85/pi-extensions/issues"},"pi":{"skills":["./skills"],"extensions":["./extensions/index.ts"]},"dist":{"shasum":"489d633fbd57b43cb7053c01b2a6039dd22674c2","tarball":"https://registry.npmjs.org/@bacnh85/pi-web/-/pi-web-0.10.0.tgz","fileCount":21,"integrity":"sha512-S81tR+PseFT0fK4zMAiPq4zNGuNJ6cB8h9iqWbK4wu9/BxPloqsIuL+xIdBOL/GDPCuKUUP3xnhxRIM/fU5Cmw==","signatures":[{"sig":"MEYCIQDHrkHetnfzpO2O/BOjZ+ftI80dyyDsM5pdcrs9L+YSngIhANduoLGkOotrHq9dvroFKT6HLI2ANIniqMGHD2lyzaDf","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":182994},"type":"module","gitHead":"4a6bea4c2a2e16511c3679a07df29e8789164a3e","scripts":{"test":"cd extensions && npx mocha"},"_npmUser":{"name":"bacnh85","email":"mail@bacnh.com"},"overrides":{"diff":"^8.0.3","js-yaml@>=4.0.0 <4.3.1":"^4.3.1","brace-expansion@>=2.0.0 <2.1.4":"^2.1.4","serialize-javascript@>=5.0.0 <7.0.5":"^7.0.5"},"repository":{"url":"git+https://github.com/bacnh85/pi-extensions.git","type":"git","directory":"pi-web"},"_npmVersion":"10.9.8","description":"Pi extension for web search, page extraction, Firecrawl scraping/crawling, Crawl4AI headless browser crawling, Gemini web-tier research, free upstream image generation, and one-off gateway chat.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"jsdom":"^27.0.1","turndown":"^7.2.2","gemini-reverse":"^2.1.0","turndown-plugin-gfm":"^1.0.2","@mozilla/readability":"^0.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","chai":"^6.2.2","mocha":"^11.8.0","@types/chai":"^5.2.3","@types/node":"^26.0.1","@types/jsdom":"^28.0.3","@types/mocha":"^10.0.10","@types/turndown":"^5.0.6"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web_0.10.0_1789297662469_0.808907061794174","host":"s3://npm-registry-packages-npm-production"}},"0.10.1":{"name":"@bacnh85/pi-web","version":"0.10.1","keywords":["pi-package","pi-extension","web-search","brave-search","firecrawl","crawl4ai","scraping","crawling","gemini","deep-research","image-generation","zai","cogview"],"license":"MIT","_id":"@bacnh85/pi-web@0.10.1","maintainers":[{"name":"bacnh85","email":"mail@bacnh.com"}],"homepage":"https://github.com/bacnh85/pi-extensions/tree/main/pi-web","bugs":{"url":"https://github.com/bacnh85/pi-extensions/issues"},"pi":{"skills":["./skills"],"extensions":["./extensions/index.ts"]},"dist":{"shasum":"cf4b578d4f2feccafc61341b8ede5d3c7ed393ca","tarball":"https://registry.npmjs.org/@bacnh85/pi-web/-/pi-web-0.10.1.tgz","fileCount":21,"integrity":"sha512-CqxbofVWjs+6ZVh2H/2FqJoshN9Aqrjfi86xrQLjq8l01gANe6ZGR3JPtE03BTuhvDHr0EZzlX0PiJjqadC+Vg==","signatures":[{"sig":"MEQCIH2AQWl3RR423fCS/pyio3h73p9ZZJ2WCtaDNSuHYlmyAiB4vNh1F3F7TaZ8GB+d7+f2vlsyg6uyQ+qHn+h6A7MExA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":184338},"type":"module","gitHead":"e2d321e0dc5f82204deca9af7e6487cb632dd9a1","scripts":{"test":"cd extensions && npx mocha"},"_npmUser":{"name":"bacnh85","email":"mail@bacnh.com"},"overrides":{"diff":"^8.0.3","js-yaml@>=4.0.0 <4.3.1":"^4.3.1","brace-expansion@>=2.0.0 <2.1.4":"^2.1.4","serialize-javascript@>=5.0.0 <7.0.5":"^7.0.5"},"repository":{"url":"git+https://github.com/bacnh85/pi-extensions.git","type":"git","directory":"pi-web"},"_npmVersion":"10.9.8","description":"Pi extension for web search, page extraction, Firecrawl scraping/crawling, Crawl4AI headless browser crawling, Gemini web-tier research, free upstream image generation, and one-off gateway chat.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"jsdom":"^27.0.1","turndown":"^7.2.2","gemini-reverse":"^2.1.0","turndown-plugin-gfm":"^1.0.2","@mozilla/readability":"^0.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","chai":"^6.2.2","mocha":"^11.8.0","@types/chai":"^5.2.3","@types/node":"^26.0.1","@types/jsdom":"^28.0.3","@types/mocha":"^10.0.10","@types/turndown":"^5.0.6"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web_0.10.1_1789297802663_0.8344080596988752","host":"s3://npm-registry-packages-npm-production"}},"0.10.2":{"name":"@bacnh85/pi-web","version":"0.10.2","keywords":["pi-package","pi-extension","web-search","brave-search","firecrawl","crawl4ai","scraping","crawling","gemini","deep-research","image-generation","zai","cogview"],"license":"MIT","_id":"@bacnh85/pi-web@0.10.2","maintainers":[{"name":"bacnh85","email":"mail@bacnh.com"}],"homepage":"https://github.com/bacnh85/pi-extensions/tree/main/pi-web","bugs":{"url":"https://github.com/bacnh85/pi-extensions/issues"},"pi":{"skills":["./skills"],"extensions":["./extensions/index.ts"]},"dist":{"shasum":"762f723c0a6d41a970f5c86450d1679156065200","tarball":"https://registry.npmjs.org/@bacnh85/pi-web/-/pi-web-0.10.2.tgz","fileCount":21,"integrity":"sha512-VJMsTl4j/lS/1i6OMTgg3v74WBLidbHfUWr/jklieKjcMAu/O1nrn1oQOEXU8hqViobS1rAQwF/kJn58orsoCw==","signatures":[{"sig":"MEUCICPuNdWSprTFPTJYsgzsH5Kc7yOFwsHF5PkXC1tzBXIlAiEAoGnzbxMNYI6uL/Qgqek9B1jEiS26OiaOtJFW//d4X1M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":185285},"type":"module","gitHead":"94754ab6e050386c7b915f4736eda1fac96a71ac","scripts":{"test":"cd extensions && npx mocha"},"_npmUser":{"name":"bacnh85","email":"mail@bacnh.com"},"overrides":{"diff":"^8.0.3","js-yaml@>=4.0.0 <4.3.1":"^4.3.1","brace-expansion@>=2.0.0 <2.1.4":"^2.1.4","serialize-javascript@>=5.0.0 <7.0.5":"^7.0.5"},"repository":{"url":"git+https://github.com/bacnh85/pi-extensions.git","type":"git","directory":"pi-web"},"_npmVersion":"10.9.8","description":"Pi extension for web search, page extraction, Firecrawl scraping/crawling, Crawl4AI headless browser crawling, Gemini web-tier research, free upstream image generation, and one-off gateway chat.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"jsdom":"^27.0.1","turndown":"^7.2.2","gemini-reverse":"^2.1.0","turndown-plugin-gfm":"^1.0.2","@mozilla/readability":"^0.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","chai":"^6.2.2","mocha":"^11.8.0","@types/chai":"^5.2.3","@types/node":"^26.0.1","@types/jsdom":"^28.0.3","@types/mocha":"^10.0.10","@types/turndown":"^5.0.6"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web_0.10.2_1789298424364_0.7151955152631959","host":"s3://npm-registry-packages-npm-production"}},"0.10.3":{"name":"@bacnh85/pi-web","version":"0.10.3","keywords":["pi-package","pi-extension","web-search","brave-search","firecrawl","crawl4ai","scraping","crawling","gemini","deep-research","image-generation","zai","cogview"],"license":"MIT","_id":"@bacnh85/pi-web@0.10.3","maintainers":[{"name":"bacnh85","email":"mail@bacnh.com"}],"homepage":"https://github.com/bacnh85/pi-extensions/tree/main/pi-web","bugs":{"url":"https://github.com/bacnh85/pi-extensions/issues"},"pi":{"skills":["./skills"],"extensions":["./extensions/index.ts"]},"dist":{"shasum":"9e989b5c534cd481ca8b5c07b1af2407147dce4b","tarball":"https://registry.npmjs.org/@bacnh85/pi-web/-/pi-web-0.10.3.tgz","fileCount":21,"integrity":"sha512-LdWHEQj0fnPhPXv0OR80TJ1WkehRYajSVN0XNqB3U9gFseweTPZ28yyiLDeDmQzR+uo6a4Y1WCE+RZzgAXayfA==","signatures":[{"sig":"MEUCIA1kH2C+TO0lhS4/Xlo4fz/DO4j1oCZn1NYBf3HTkyRNAiEAseGNkNgo0Uav3e7lQDwjcuJ0LwVHdL25Hlh1optHI3M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":186497},"type":"module","gitHead":"5035bb1bae33ea27b32899fc23c69c60331a3145","scripts":{"test":"cd extensions && npx mocha"},"_npmUser":{"name":"bacnh85","email":"mail@bacnh.com"},"overrides":{"diff":"^8.0.3","js-yaml@>=4.0.0 <4.3.1":"^4.3.1","brace-expansion@>=2.0.0 <2.1.4":"^2.1.4","serialize-javascript@>=5.0.0 <7.0.5":"^7.0.5"},"repository":{"url":"git+https://github.com/bacnh85/pi-extensions.git","type":"git","directory":"pi-web"},"_npmVersion":"10.9.8","description":"Pi extension for web search, page extraction, Firecrawl scraping/crawling, Crawl4AI headless browser crawling, Gemini web-tier research, free upstream image generation, and one-off gateway chat.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"jsdom":"^27.0.1","turndown":"^7.2.2","gemini-reverse":"^2.1.0","turndown-plugin-gfm":"^1.0.2","@mozilla/readability":"^0.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","chai":"^6.2.2","mocha":"^11.8.0","@types/chai":"^5.2.3","@types/node":"^26.0.1","@types/jsdom":"^28.0.3","@types/mocha":"^10.0.10","@types/turndown":"^5.0.6"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web_0.10.3_1789298807103_0.6071260764861057","host":"s3://npm-registry-packages-npm-production"}},"0.10.4":{"name":"@bacnh85/pi-web","version":"0.10.4","keywords":["pi-package","pi-extension","web-search","brave-search","firecrawl","crawl4ai","scraping","crawling","gemini","deep-research","image-generation","zai","cogview"],"license":"MIT","_id":"@bacnh85/pi-web@0.10.4","maintainers":[{"name":"bacnh85","email":"mail@bacnh.com"}],"homepage":"https://github.com/bacnh85/pi-extensions/tree/main/pi-web","bugs":{"url":"https://github.com/bacnh85/pi-extensions/issues"},"pi":{"skills":["./skills"],"extensions":["./extensions/index.ts"]},"dist":{"shasum":"264f5cc6640b558c12037c6431011dac6d863d1c","tarball":"https://registry.npmjs.org/@bacnh85/pi-web/-/pi-web-0.10.4.tgz","fileCount":21,"integrity":"sha512-lSYYFVbZcFsiuXJFyqifLFxZGeGGhWhgtPonDvMR+FaJ7emzkYhQqBOiNfzUECtiKzIY90iaSoIjcTfxlS/nAw==","signatures":[{"sig":"MEQCIB32BHF8Jd+zxUQ56GwKsEMWO33pADGFxGBNaLQTvLtaAiAcyT7PeLgkSsFxkYz4AX7uLZctdVYHJQe0OFGujCrknQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":187423},"type":"module","gitHead":"9fcd9adf9a756587d265458c9a22586dcbd609a1","scripts":{"test":"cd extensions && npx mocha"},"_npmUser":{"name":"bacnh85","email":"mail@bacnh.com"},"overrides":{"diff":"^8.0.3","js-yaml@>=4.0.0 <4.3.1":"^4.3.1","brace-expansion@>=2.0.0 <2.1.4":"^2.1.4","serialize-javascript@>=5.0.0 <7.0.5":"^7.0.5"},"repository":{"url":"git+https://github.com/bacnh85/pi-extensions.git","type":"git","directory":"pi-web"},"_npmVersion":"10.9.8","description":"Pi extension for web search, page extraction, Firecrawl scraping/crawling, Crawl4AI headless browser crawling, Gemini web-tier research, free upstream image generation, and one-off gateway chat.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"jsdom":"^27.0.1","turndown":"^7.2.2","gemini-reverse":"^2.1.0","turndown-plugin-gfm":"^1.0.2","@mozilla/readability":"^0.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","chai":"^6.2.2","mocha":"^11.8.0","@types/chai":"^5.2.3","@types/node":"^26.0.1","@types/jsdom":"^28.0.3","@types/mocha":"^10.0.10","@types/turndown":"^5.0.6"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web_0.10.4_1789299397827_0.26209110975782157","host":"s3://npm-registry-packages-npm-production"}},"0.10.5":{"name":"@bacnh85/pi-web","version":"0.10.5","keywords":["pi-package","pi-extension","web-search","brave-search","firecrawl","crawl4ai","scraping","crawling","gemini","deep-research","image-generation","zai","cogview"],"license":"MIT","_id":"@bacnh85/pi-web@0.10.5","maintainers":[{"name":"bacnh85","email":"mail@bacnh.com"}],"homepage":"https://github.com/bacnh85/pi-extensions/tree/main/pi-web","bugs":{"url":"https://github.com/bacnh85/pi-extensions/issues"},"pi":{"skills":["./skills"],"extensions":["./extensions/index.ts"]},"dist":{"shasum":"6ca7a15737cd29c4f25a915db5432823823198ea","tarball":"https://registry.npmjs.org/@bacnh85/pi-web/-/pi-web-0.10.5.tgz","fileCount":21,"integrity":"sha512-zYGIm18xkEJpgeBkYcUAZ8We/nhphHbqOAILPX+YxCUpjoankkmTzVFEpl1J45YevqenP5i+Lwqp5y8lwHvGaQ==","signatures":[{"sig":"MEQCIGbaIq0hRlhYYCgo9UETfcamH2Nm5lZ2z6yw5lW1p4gyAiBcEdnlsibBU5pPYFvUCgYXn5uH8xlR/LMyJW6l1IwRFg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":188851},"type":"module","gitHead":"6a980ed9758a87a7ea41919b86029ae04d88ecad","scripts":{"test":"cd extensions && npx mocha"},"_npmUser":{"name":"bacnh85","email":"mail@bacnh.com"},"overrides":{"diff":"^8.0.3","js-yaml@>=4.0.0 <4.3.1":"^4.3.1","brace-expansion@>=2.0.0 <2.1.4":"^2.1.4","serialize-javascript@>=5.0.0 <7.0.5":"^7.0.5"},"repository":{"url":"git+https://github.com/bacnh85/pi-extensions.git","type":"git","directory":"pi-web"},"_npmVersion":"10.9.8","description":"Pi extension for web search, page extraction, Firecrawl scraping/crawling, Crawl4AI headless browser crawling, Gemini web-tier research, free upstream image generation, and one-off gateway chat.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"jsdom":"^27.0.1","turndown":"^7.2.2","gemini-reverse":"^2.1.0","turndown-plugin-gfm":"^1.0.2","@mozilla/readability":"^0.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","chai":"^6.2.2","mocha":"^11.8.0","@types/chai":"^5.2.3","@types/node":"^26.0.1","@types/jsdom":"^28.0.3","@types/mocha":"^10.0.10","@types/turndown":"^5.0.6"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web_0.10.5_1789301303325_0.03921585077800893","host":"s3://npm-registry-packages-npm-production"}},"0.10.6":{"name":"@bacnh85/pi-web","version":"0.10.6","keywords":["pi-package","pi-extension","web-search","brave-search","firecrawl","crawl4ai","scraping","crawling","gemini","deep-research","image-generation","zai","cogview"],"license":"MIT","_id":"@bacnh85/pi-web@0.10.6","maintainers":[{"name":"bacnh85","email":"mail@bacnh.com"}],"homepage":"https://github.com/bacnh85/pi-extensions/tree/main/pi-web","bugs":{"url":"https://github.com/bacnh85/pi-extensions/issues"},"pi":{"skills":["./skills"],"extensions":["./extensions/index.ts"]},"dist":{"shasum":"068edef1bf1909186949e596ef9737e774fc5316","tarball":"https://registry.npmjs.org/@bacnh85/pi-web/-/pi-web-0.10.6.tgz","fileCount":21,"integrity":"sha512-iRsASyxZUHTYSpAP7M5QRTaU1+GG5ThbQyqUsSTr2URNAaPjlJQRASY2mjpjWypaZr6NP+5BCcgmkxML3mMyjw==","signatures":[{"sig":"MEUCIHUN8F8q7mlbpR114k9AKwbsKtXQd6jjg5y4DL5NZdnvAiEApb6BBM1xghiXbCxYRfKTuW/TYL101g5RPV/M3UfXZyc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":189910},"type":"module","gitHead":"125ee023e7f4327f8a864ace8b0a558a2d0ff681","scripts":{"test":"cd extensions && npx mocha"},"_npmUser":{"name":"bacnh85","email":"mail@bacnh.com"},"overrides":{"diff":"^8.0.3","js-yaml@>=4.0.0 <4.3.1":"^4.3.1","brace-expansion@>=2.0.0 <2.1.4":"^2.1.4","serialize-javascript@>=5.0.0 <7.0.5":"^7.0.5"},"repository":{"url":"git+https://github.com/bacnh85/pi-extensions.git","type":"git","directory":"pi-web"},"_npmVersion":"10.9.8","description":"Pi extension for web search, page extraction, Firecrawl scraping/crawling, Crawl4AI headless browser crawling, Gemini web-tier research, free upstream image generation, and one-off gateway chat.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"jsdom":"^27.0.1","turndown":"^7.2.2","gemini-reverse":"^2.1.0","turndown-plugin-gfm":"^1.0.2","@mozilla/readability":"^0.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","chai":"^6.2.2","mocha":"^11.8.0","@types/chai":"^5.2.3","@types/node":"^26.0.1","@types/jsdom":"^28.0.3","@types/mocha":"^10.0.10","@types/turndown":"^5.0.6"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web_0.10.6_1789313991081_0.5990676357185851","host":"s3://npm-registry-packages-npm-production"}},"0.11.0":{"name":"@bacnh85/pi-web","version":"0.11.0","keywords":["pi-package","pi-extension","web-search","brave-search","firecrawl","crawl4ai","scraping","crawling","gemini","deep-research","image-generation","zai","cogview"],"license":"MIT","_id":"@bacnh85/pi-web@0.11.0","maintainers":[{"name":"bacnh85","email":"mail@bacnh.com"}],"homepage":"https://github.com/bacnh85/pi-extensions/tree/main/pi-web","bugs":{"url":"https://github.com/bacnh85/pi-extensions/issues"},"pi":{"skills":["./skills"],"extensions":["./extensions/index.ts"]},"dist":{"shasum":"07f8df0c7c283fd3967bbd960dbb9436bb95e491","tarball":"https://registry.npmjs.org/@bacnh85/pi-web/-/pi-web-0.11.0.tgz","fileCount":22,"integrity":"sha512-IDUuKSDxd7zLyEwkEtNEKCLOHVamYO9rNiBuoTbQ9hfUqzHER74aQv9qwl3bz6AEwV45Ql8R9EClkpD3lFii7A==","signatures":[{"sig":"MEYCIQDO5bB7UXcfT6qMIwpzzQElifAMFo/BiUFjALsci0UCRgIhAO5zcya3C0mtOeJBqhvYVrOrXcWqjyWh3bKqrUV/xCb3","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":207854},"type":"module","gitHead":"041d09a60e58500ed16627c90a3bceadb64c8437","scripts":{"test":"cd extensions && npx mocha"},"_npmUser":{"name":"bacnh85","email":"mail@bacnh.com"},"overrides":{"diff":"^8.0.3","js-yaml@>=4.0.0 <4.3.1":"^4.3.1","brace-expansion@>=2.0.0 <2.1.4":"^2.1.4","serialize-javascript@>=5.0.0 <7.0.5":"^7.0.5"},"repository":{"url":"git+https://github.com/bacnh85/pi-extensions.git","type":"git","directory":"pi-web"},"_npmVersion":"10.9.8","description":"Pi extension for web search, page extraction, Firecrawl scraping/crawling, Crawl4AI headless browser crawling, Gemini web-tier research, free upstream image generation, and one-off gateway chat.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"axios":"^1.20.0","jsdom":"^27.0.1","turndown":"^7.2.2","gemini-reverse":"^2.1.0","turndown-plugin-gfm":"^1.0.2","@mozilla/readability":"^0.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","chai":"^6.2.2","mocha":"^11.8.0","@types/chai":"^5.2.3","@types/node":"^26.0.1","@types/jsdom":"^28.0.3","@types/mocha":"^10.0.10","@types/turndown":"^5.0.6"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web_0.11.0_1789318857904_0.16458863904341103","host":"s3://npm-registry-packages-npm-production"}},"0.11.1":{"name":"@bacnh85/pi-web","version":"0.11.1","keywords":["pi-package","pi-extension","web-search","brave-search","firecrawl","crawl4ai","scraping","crawling","gemini","deep-research","image-generation","zai","cogview"],"license":"MIT","_id":"@bacnh85/pi-web@0.11.1","maintainers":[{"name":"bacnh85","email":"mail@bacnh.com"}],"homepage":"https://github.com/bacnh85/pi-extensions/tree/main/pi-web","bugs":{"url":"https://github.com/bacnh85/pi-extensions/issues"},"pi":{"skills":["./skills"],"extensions":["./extensions/index.ts"]},"dist":{"shasum":"e242ed012faa4040c9e662b6f798ef649ed821e9","tarball":"https://registry.npmjs.org/@bacnh85/pi-web/-/pi-web-0.11.1.tgz","fileCount":22,"integrity":"sha512-rQB65st4wkqZcc/Tfm/sPBepzQ9ZUnygB5LS3FOkrBDCd/2f+SfHKprkeNIajKScHgbFkqgYLlYDMd1hXKOx7A==","signatures":[{"sig":"MEUCIFx+ZBQLR0ZmoErfnKzJ3xoeDwoFT6pXiA3OsUbIxjJ9AiEA7j0HsYfWQCTFwC19of8J6xUqEc4fQ4AW/LeM+5aZJ7c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":209144},"type":"module","gitHead":"b285f62871e589e783b7271ab5c87556d948d35f","scripts":{"test":"cd extensions && npx mocha"},"_npmUser":{"name":"bacnh85","email":"mail@bacnh.com"},"overrides":{"diff":"^8.0.3","js-yaml@>=4.0.0 <4.3.1":"^4.3.1","brace-expansion@>=2.0.0 <2.1.4":"^2.1.4","serialize-javascript@>=5.0.0 <7.0.5":"^7.0.5"},"repository":{"url":"git+https://github.com/bacnh85/pi-extensions.git","type":"git","directory":"pi-web"},"_npmVersion":"10.9.8","description":"Pi extension for web search, page extraction, Firecrawl scraping/crawling, Crawl4AI headless browser crawling, Gemini web-tier research, free upstream image generation, and one-off gateway chat.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"axios":"^1.20.0","jsdom":"^27.0.1","turndown":"^7.2.2","gemini-reverse":"^2.1.0","turndown-plugin-gfm":"^1.0.2","@mozilla/readability":"^0.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","chai":"^6.2.2","mocha":"^11.8.0","@types/chai":"^5.2.3","@types/node":"^26.0.1","@types/jsdom":"^28.0.3","@types/mocha":"^10.0.10","@types/turndown":"^5.0.6"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web_0.11.1_1789319239971_0.025720731652190576","host":"s3://npm-registry-packages-npm-production"}},"0.11.2":{"name":"@bacnh85/pi-web","version":"0.11.2","keywords":["pi-package","pi-extension","web-search","brave-search","firecrawl","crawl4ai","scraping","crawling","gemini","deep-research","image-generation","zai","cogview"],"license":"MIT","_id":"@bacnh85/pi-web@0.11.2","maintainers":[{"name":"bacnh85","email":"mail@bacnh.com"}],"homepage":"https://github.com/bacnh85/pi-extensions/tree/main/pi-web","bugs":{"url":"https://github.com/bacnh85/pi-extensions/issues"},"pi":{"skills":["./skills"],"extensions":["./extensions/index.ts"]},"dist":{"shasum":"2b9172d668afb47596f6f1aedcafcc44f2bb2012","tarball":"https://registry.npmjs.org/@bacnh85/pi-web/-/pi-web-0.11.2.tgz","fileCount":22,"integrity":"sha512-XINk+C2HDzW1UQfa53qPtCGHvgj33DPAGIJJ7aDDFAgRpWHY45sPYAzky3Gpd89gto8aUTiVmqCeqkBexRbgfw==","signatures":[{"sig":"MEQCIFasBrd74agGXtZLzEWTd9yI4DV9xOugHULM/mJfO0CVAiBy4nEyp3W0AuKgY48I0bgHnJF8sXAfuo8O71NXJMtFFQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":209874},"type":"module","gitHead":"362111714a5f2b494e125d78a711c091c3a4a3b7","scripts":{"test":"cd extensions && npx mocha"},"_npmUser":{"name":"bacnh85","email":"mail@bacnh.com"},"overrides":{"diff":"^8.0.3","js-yaml@>=4.0.0 <4.3.1":"^4.3.1","brace-expansion@>=2.0.0 <2.1.4":"^2.1.4","serialize-javascript@>=5.0.0 <7.0.5":"^7.0.5"},"repository":{"url":"git+https://github.com/bacnh85/pi-extensions.git","type":"git","directory":"pi-web"},"_npmVersion":"10.9.8","description":"Pi extension for web search, page extraction, Firecrawl scraping/crawling, Crawl4AI headless browser crawling, Gemini web-tier research, free upstream image generation, and one-off gateway chat.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"axios":"^1.20.0","jsdom":"^27.0.1","turndown":"^7.2.2","gemini-reverse":"^2.1.0","turndown-plugin-gfm":"^1.0.2","@mozilla/readability":"^0.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","chai":"^6.2.2","mocha":"^11.8.0","@types/chai":"^5.2.3","@types/node":"^26.0.1","@types/jsdom":"^28.0.3","@types/mocha":"^10.0.10","@types/turndown":"^5.0.6"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web_0.11.2_1789319976837_0.8456417853074767","host":"s3://npm-registry-packages-npm-production"}},"0.11.3":{"name":"@bacnh85/pi-web","version":"0.11.3","keywords":["pi-package","pi-extension","web-search","brave-search","firecrawl","crawl4ai","scraping","crawling","gemini","deep-research","image-generation","zai","cogview"],"license":"MIT","_id":"@bacnh85/pi-web@0.11.3","maintainers":[{"name":"bacnh85","email":"mail@bacnh.com"}],"homepage":"https://github.com/bacnh85/pi-extensions/tree/main/pi-web","bugs":{"url":"https://github.com/bacnh85/pi-extensions/issues"},"pi":{"skills":["./skills"],"extensions":["./extensions/index.ts"]},"dist":{"shasum":"b2e6cdb8f889af49e5827b1ec3f39c9003f17927","tarball":"https://registry.npmjs.org/@bacnh85/pi-web/-/pi-web-0.11.3.tgz","fileCount":22,"integrity":"sha512-IVuPBPF25nkNvgWbqU9gfoB52TfvcIsN+9wwWKdOkEuuursqn/Iz9OcEvjVua7RkRJNzR9NUK1Rkg8FRSVHReA==","signatures":[{"sig":"MEUCIAxMc88l82+B/XTXQqdoRIitwnNNteSLiA3v3X4m1yESAiEA9BqA+TmftB4TKwSrBhHkRWDJsnZyiHIJChZglubfsyc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":210857},"type":"module","gitHead":"2d1b89b5af47b06b38e5010f5ba9d976fa0086ee","scripts":{"test":"cd extensions && npx mocha"},"_npmUser":{"name":"bacnh85","email":"mail@bacnh.com"},"overrides":{"diff":"^8.0.3","js-yaml@>=4.0.0 <4.3.1":"^4.3.1","brace-expansion@>=2.0.0 <2.1.4":"^2.1.4","serialize-javascript@>=5.0.0 <7.0.5":"^7.0.5"},"repository":{"url":"git+https://github.com/bacnh85/pi-extensions.git","type":"git","directory":"pi-web"},"_npmVersion":"10.9.8","description":"Pi extension for web search, page extraction, Firecrawl scraping/crawling, Crawl4AI headless browser crawling, Gemini web-tier research, free upstream image generation, and one-off gateway chat.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"axios":"^1.20.0","jsdom":"^27.0.1","turndown":"^7.2.2","gemini-reverse":"^2.1.0","turndown-plugin-gfm":"^1.0.2","@mozilla/readability":"^0.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","chai":"^6.2.2","mocha":"^11.8.0","@types/chai":"^5.2.3","@types/node":"^26.0.1","@types/jsdom":"^28.0.3","@types/mocha":"^10.0.10","@types/turndown":"^5.0.6"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web_0.11.3_1789321027845_0.06665042270295918","host":"s3://npm-registry-packages-npm-production"}},"0.11.4":{"name":"@bacnh85/pi-web","version":"0.11.4","keywords":["pi-package","pi-extension","web-search","brave-search","firecrawl","crawl4ai","scraping","crawling","gemini","deep-research","image-generation","zai","cogview"],"license":"MIT","_id":"@bacnh85/pi-web@0.11.4","maintainers":[{"name":"bacnh85","email":"mail@bacnh.com"}],"homepage":"https://github.com/bacnh85/pi-extensions/tree/main/pi-web","bugs":{"url":"https://github.com/bacnh85/pi-extensions/issues"},"pi":{"skills":["./skills"],"extensions":["./extensions/index.ts"]},"dist":{"shasum":"a8d419073d4bac5263c534776f633566ff3811f8","tarball":"https://registry.npmjs.org/@bacnh85/pi-web/-/pi-web-0.11.4.tgz","fileCount":22,"integrity":"sha512-oI0htgPemJOG3lrM+3x+rfGBdhL432hvG4fP27gR2EP791hxHbbd1+5oj+pnPeQy4a9lF0fq2cgfUlisziLUhQ==","signatures":[{"sig":"MEQCICFAPQMKv5Mqe5Wl/DzOqeLIxNYc/79NwOHb2Kh6LWGXAiBaPNBs9RPqASRQZKPZ3tcFMvRD3QB1W2+qhJY3knFO1w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":213474},"type":"module","gitHead":"e12f226b0730d3d363c36bc37daaeeed7c658be6","scripts":{"test":"cd extensions && npx mocha"},"_npmUser":{"name":"bacnh85","email":"mail@bacnh.com"},"overrides":{"diff":"^8.0.3","js-yaml@>=4.0.0 <4.3.1":"^4.3.1","brace-expansion@>=2.0.0 <2.1.4":"^2.1.4","serialize-javascript@>=5.0.0 <7.0.5":"^7.0.5"},"repository":{"url":"git+https://github.com/bacnh85/pi-extensions.git","type":"git","directory":"pi-web"},"_npmVersion":"10.9.8","description":"Pi extension for web search, page extraction, Firecrawl scraping/crawling, Crawl4AI headless browser crawling, Gemini web-tier research, free upstream image generation, and one-off gateway chat.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"axios":"^1.20.0","jsdom":"^27.0.1","turndown":"^7.2.2","gemini-reverse":"^2.1.0","turndown-plugin-gfm":"^1.0.2","@mozilla/readability":"^0.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","chai":"^6.2.2","mocha":"^11.8.0","@types/chai":"^5.2.3","@types/node":"^26.0.1","@types/jsdom":"^28.0.3","@types/mocha":"^10.0.10","@types/turndown":"^5.0.6"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web_0.11.4_1789321627703_0.522800722684976","host":"s3://npm-registry-packages-npm-production"}},"0.11.5":{"name":"@bacnh85/pi-web","version":"0.11.5","keywords":["pi-package","pi-extension","web-search","brave-search","firecrawl","crawl4ai","scraping","crawling","gemini","deep-research","image-generation","zai","cogview"],"license":"MIT","_id":"@bacnh85/pi-web@0.11.5","maintainers":[{"name":"bacnh85","email":"mail@bacnh.com"}],"homepage":"https://github.com/bacnh85/pi-extensions/tree/main/pi-web","bugs":{"url":"https://github.com/bacnh85/pi-extensions/issues"},"pi":{"skills":["./skills"],"extensions":["./extensions/index.ts"]},"dist":{"shasum":"048422ba05610621957bfce003fc60a227ebee99","tarball":"https://registry.npmjs.org/@bacnh85/pi-web/-/pi-web-0.11.5.tgz","fileCount":22,"integrity":"sha512-4t1sgnRV2u4E2LPgNTlPHMapD0D9xGVt8cFtuuAjjj5L4s203RgUsxCNfC7rkKy2QU3whWXoM169esQP3050fQ==","signatures":[{"sig":"MEYCIQDhnkxMVIb1JN75fcZm6Jeik1glv/uULa6W2Z/xC9QVFAIhAOG6IwBItNDok1uomQ93Dk+6cPITnVlnJRXpHVFBmvqH","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":214580},"type":"module","gitHead":"4cf69656283a33a50729d4c2fa395330c615d67c","scripts":{"test":"cd extensions && npx mocha"},"_npmUser":{"name":"bacnh85","email":"mail@bacnh.com"},"overrides":{"diff":"^8.0.3","js-yaml@>=4.0.0 <4.3.1":"^4.3.1","brace-expansion@>=2.0.0 <2.1.4":"^2.1.4","serialize-javascript@>=5.0.0 <7.0.5":"^7.0.5"},"repository":{"url":"git+https://github.com/bacnh85/pi-extensions.git","type":"git","directory":"pi-web"},"_npmVersion":"10.9.8","description":"Pi extension for web search, page extraction, Firecrawl scraping/crawling, Crawl4AI headless browser crawling, Gemini web-tier research, free upstream image generation, and one-off gateway chat.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"axios":"^1.20.0","jsdom":"^27.0.1","turndown":"^7.2.2","gemini-reverse":"^2.1.0","turndown-plugin-gfm":"^1.0.2","@mozilla/readability":"^0.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","chai":"^6.2.2","mocha":"^11.8.0","@types/chai":"^5.2.3","@types/node":"^26.0.1","@types/jsdom":"^28.0.3","@types/mocha":"^10.0.10","@types/turndown":"^5.0.6"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web_0.11.5_1789322548065_0.8615590251861018","host":"s3://npm-registry-packages-npm-production"}},"0.11.6":{"name":"@bacnh85/pi-web","version":"0.11.6","keywords":["pi-package","pi-extension","web-search","brave-search","firecrawl","crawl4ai","scraping","crawling","gemini","deep-research","image-generation","zai","cogview"],"license":"MIT","_id":"@bacnh85/pi-web@0.11.6","maintainers":[{"name":"bacnh85","email":"mail@bacnh.com"}],"homepage":"https://github.com/bacnh85/pi-extensions/tree/main/pi-web","bugs":{"url":"https://github.com/bacnh85/pi-extensions/issues"},"pi":{"skills":["./skills"],"extensions":["./extensions/index.ts"]},"dist":{"shasum":"a3819b3ed35ad9f9e99afe0932a1922aaf458c5b","tarball":"https://registry.npmjs.org/@bacnh85/pi-web/-/pi-web-0.11.6.tgz","fileCount":22,"integrity":"sha512-+04Fp7MHyhKuUuEVA15zsuZUx9cqJpaJJ35NGwGYH/jOEVjmJmrdZnYJcr+7SMcBVLOALnTmh2sDAl9WAjOBgw==","signatures":[{"sig":"MEUCIQDqMzc8hJrR0hE5ffUV4sQRnCwFH7ppG5mBCSSomUoJ6wIgJf2Y28sd+ZcIEANgoPLyr0QLrIw8IC6RjYekD5dSxlk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":216181},"type":"module","gitHead":"e67d440ffde0ea3179cd88383af81a8af677c381","scripts":{"test":"cd extensions && npx mocha"},"_npmUser":{"name":"bacnh85","email":"mail@bacnh.com"},"overrides":{"diff":"^8.0.3","js-yaml@>=4.0.0 <4.3.1":"^4.3.1","brace-expansion@>=2.0.0 <2.1.4":"^2.1.4","serialize-javascript@>=5.0.0 <7.0.5":"^7.0.5"},"repository":{"url":"git+https://github.com/bacnh85/pi-extensions.git","type":"git","directory":"pi-web"},"_npmVersion":"10.9.8","description":"Pi extension for web search, page extraction, Firecrawl scraping/crawling, Crawl4AI headless browser crawling, Gemini web-tier research, free upstream image generation, and one-off gateway chat.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"axios":"^1.20.0","jsdom":"^27.0.1","turndown":"^7.2.2","gemini-reverse":"^2.1.0","turndown-plugin-gfm":"^1.0.2","@mozilla/readability":"^0.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","chai":"^6.2.2","mocha":"^11.8.0","@types/chai":"^5.2.3","@types/node":"^26.0.1","@types/jsdom":"^28.0.3","@types/mocha":"^10.0.10","@types/turndown":"^5.0.6"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web_0.11.6_1789322909514_0.44137035084268716","host":"s3://npm-registry-packages-npm-production"}},"0.11.7":{"name":"@bacnh85/pi-web","version":"0.11.7","keywords":["pi-package","pi-extension","web-search","brave-search","firecrawl","crawl4ai","scraping","crawling","gemini","deep-research","image-generation","zai","cogview"],"license":"MIT","_id":"@bacnh85/pi-web@0.11.7","maintainers":[{"name":"bacnh85","email":"mail@bacnh.com"}],"homepage":"https://github.com/bacnh85/pi-extensions/tree/main/pi-web","bugs":{"url":"https://github.com/bacnh85/pi-extensions/issues"},"pi":{"skills":["./skills"],"extensions":["./extensions/index.ts"]},"dist":{"shasum":"9131d18250ae1e11d1b92323f32fc697659e49a4","tarball":"https://registry.npmjs.org/@bacnh85/pi-web/-/pi-web-0.11.7.tgz","fileCount":22,"integrity":"sha512-EKc5wo+58Lj7IcZSf4JDurST6XlKPFEXe/n7g0wRCpiM5yoN30adCboSgUN4yD+GPuLgXPEnc5zzUZHD9fJ1GQ==","signatures":[{"sig":"MEUCIH2/rwUfknRld4MHt6mU0h+t5NU1qSbwoLsY+3h3R4nPAiEAz4jHymXDGuFQJEbstmcnTTZTKboaVS7Kqw3E5FOPTS8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":216430},"type":"module","gitHead":"92cec944797551813ef16e87cad81f2ae8b50188","scripts":{"test":"cd extensions && npx mocha"},"_npmUser":{"name":"bacnh85","email":"mail@bacnh.com"},"overrides":{"diff":"^8.0.3","js-yaml@>=4.0.0 <4.3.1":"^4.3.1","brace-expansion@>=2.0.0 <2.1.4":"^2.1.4","serialize-javascript@>=5.0.0 <7.0.5":"^7.0.5"},"repository":{"url":"git+https://github.com/bacnh85/pi-extensions.git","type":"git","directory":"pi-web"},"_npmVersion":"10.9.8","description":"Pi extension for web search, page extraction, Firecrawl scraping/crawling, Crawl4AI headless browser crawling, Gemini web-tier research, free upstream image generation, and one-off gateway chat.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"axios":"^1.20.0","jsdom":"^27.0.1","turndown":"^7.2.2","gemini-reverse":"^2.1.0","turndown-plugin-gfm":"^1.0.2","@mozilla/readability":"^0.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","chai":"^6.2.2","mocha":"^11.8.0","@types/chai":"^5.2.3","@types/node":"^26.0.1","@types/jsdom":"^28.0.3","@types/mocha":"^10.0.10","@types/turndown":"^5.0.6"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web_0.11.7_1789323537337_0.10827604317487283","host":"s3://npm-registry-packages-npm-production"}},"0.11.8":{"name":"@bacnh85/pi-web","version":"0.11.8","keywords":["pi-package","pi-extension","web-search","brave-search","firecrawl","crawl4ai","scraping","crawling","gemini","deep-research","image-generation","zai","cogview"],"license":"MIT","_id":"@bacnh85/pi-web@0.11.8","maintainers":[{"name":"bacnh85","email":"mail@bacnh.com"}],"homepage":"https://github.com/bacnh85/pi-extensions/tree/main/pi-web","bugs":{"url":"https://github.com/bacnh85/pi-extensions/issues"},"pi":{"skills":["./skills"],"extensions":["./extensions/index.ts"]},"dist":{"shasum":"3faf22b6f758e803dd6a7abd2374dba6432a6e57","tarball":"https://registry.npmjs.org/@bacnh85/pi-web/-/pi-web-0.11.8.tgz","fileCount":22,"integrity":"sha512-/E6MF0cTwLqCXrtz/YlZEVbwxoJdM5F/EHVcS9onv8OCQ3Cn9ezTu/8nzNxwjcz2wOrYJD3UhP9r2MFp0k6SPg==","signatures":[{"sig":"MEUCICslJC1Zgcidg4kHUONAqz3qdITZ5mdgxSVDWlXUXsFJAiEAv70UpgtHPEt+dcD43IpbB1E5w6hwDOBZQXRsZ2TbmRo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":218263},"type":"module","gitHead":"5f5e16d7481cde34bc7f8168fe896a1a39cf8af4","scripts":{"test":"cd extensions && npx mocha"},"_npmUser":{"name":"bacnh85","email":"mail@bacnh.com"},"overrides":{"diff":"^8.0.3","js-yaml@>=4.0.0 <4.3.1":"^4.3.1","brace-expansion@>=2.0.0 <2.1.4":"^2.1.4","serialize-javascript@>=5.0.0 <7.0.5":"^7.0.5"},"repository":{"url":"git+https://github.com/bacnh85/pi-extensions.git","type":"git","directory":"pi-web"},"_npmVersion":"10.9.8","description":"Pi extension for web search, page extraction, Firecrawl scraping/crawling, Crawl4AI headless browser crawling, Gemini web-tier research, free upstream image generation, and one-off gateway chat.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"axios":"^1.20.0","jsdom":"^27.0.1","turndown":"^7.2.2","gemini-reverse":"^2.1.0","turndown-plugin-gfm":"^1.0.2","@mozilla/readability":"^0.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","chai":"^6.2.2","mocha":"^11.8.0","@types/chai":"^5.2.3","@types/node":"^26.0.1","@types/jsdom":"^28.0.3","@types/mocha":"^10.0.10","@types/turndown":"^5.0.6"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web_0.11.8_1789323878694_0.9740001189003111","host":"s3://npm-registry-packages-npm-production"}},"0.11.9":{"name":"@bacnh85/pi-web","version":"0.11.9","keywords":["pi-package","pi-extension","web-search","brave-search","firecrawl","crawl4ai","scraping","crawling","gemini","deep-research","image-generation","zai","cogview"],"license":"MIT","_id":"@bacnh85/pi-web@0.11.9","maintainers":[{"name":"bacnh85","email":"mail@bacnh.com"}],"homepage":"https://github.com/bacnh85/pi-extensions/tree/main/pi-web","bugs":{"url":"https://github.com/bacnh85/pi-extensions/issues"},"pi":{"skills":["./skills"],"extensions":["./extensions/index.ts"]},"dist":{"shasum":"11f52a6fe832fa44e5e6a5a649ab49323256a2ca","tarball":"https://registry.npmjs.org/@bacnh85/pi-web/-/pi-web-0.11.9.tgz","fileCount":22,"integrity":"sha512-LJoCXw+ReK73IwyKiNt6bjUfXKlnMar7LOvsN0dQxC01rtu9dwEXKFBQgchFVjZIzziuCeiHnPLSE8K3PzqLsQ==","signatures":[{"sig":"MEUCIGYHgsztNsPQL85B9s1IZhAzEpI3PcNOCDaBX/e8o2FcAiEA7/AflLSpgcVCugI1CCKR7g5OJM1rgn6F1J2UuCNnNfI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":219129},"type":"module","gitHead":"9b21cbc0d04ebd44869b56cfa4ce9ca3ba888a7a","scripts":{"test":"cd extensions && npx mocha"},"_npmUser":{"name":"bacnh85","email":"mail@bacnh.com"},"overrides":{"diff":"^8.0.3","js-yaml@>=4.0.0 <4.3.1":"^4.3.1","brace-expansion@>=2.0.0 <2.1.4":"^2.1.4","serialize-javascript@>=5.0.0 <7.0.5":"^7.0.5"},"repository":{"url":"git+https://github.com/bacnh85/pi-extensions.git","type":"git","directory":"pi-web"},"_npmVersion":"10.9.8","description":"Pi extension for web search, page extraction, Firecrawl scraping/crawling, Crawl4AI headless browser crawling, Gemini web-tier research, free upstream image generation, and one-off gateway chat.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"axios":"^1.20.0","jsdom":"^27.0.1","turndown":"^7.2.2","gemini-reverse":"^2.1.0","turndown-plugin-gfm":"^1.0.2","@mozilla/readability":"^0.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","chai":"^6.2.2","mocha":"^11.8.0","@types/chai":"^5.2.3","@types/node":"^26.0.1","@types/jsdom":"^28.0.3","@types/mocha":"^10.0.10","@types/turndown":"^5.0.6"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web_0.11.9_1789326094378_0.06662475663596168","host":"s3://npm-registry-packages-npm-production"}},"0.12.0":{"name":"@bacnh85/pi-web","version":"0.12.0","keywords":["pi-package","pi-extension","web-search","brave-search","firecrawl","crawl4ai","scraping","crawling","gemini","deep-research","image-generation","zai","cogview"],"license":"MIT","_id":"@bacnh85/pi-web@0.12.0","maintainers":[{"name":"bacnh85","email":"mail@bacnh.com"}],"homepage":"https://github.com/bacnh85/pi-extensions/tree/main/pi-web","bugs":{"url":"https://github.com/bacnh85/pi-extensions/issues"},"pi":{"skills":["./skills"],"extensions":["./extensions/index.ts"]},"dist":{"shasum":"3c6469045988fc43f9eab294e6f105112a94708f","tarball":"https://registry.npmjs.org/@bacnh85/pi-web/-/pi-web-0.12.0.tgz","fileCount":23,"integrity":"sha512-P9ZWfin6p9ChpqJwXcdZZUQXWK/4Zzk21C6700B7CuUSSR7Z8orEeuqiQ1sN4k/SMn9aYcD5SPVjKLg/jO/+rQ==","signatures":[{"sig":"MEYCIQDLTUpnUFayNyDEHTfDNm5096AGqKkUtjQDf5r3NyaVSgIhANtSzHM33RbaxLt62iQ+9QL+NNu/saCqA3isRrIUKZOA","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":234180},"type":"module","gitHead":"1323da7b3631cef68e70d25d714b08d5a0837833","scripts":{"test":"cd extensions && npx mocha"},"_npmUser":{"name":"bacnh85","email":"mail@bacnh.com"},"overrides":{"diff":"^8.0.3","js-yaml@>=4.0.0 <4.3.1":"^4.3.1","brace-expansion@>=2.0.0 <2.1.4":"^2.1.4","serialize-javascript@>=5.0.0 <7.0.5":"^7.0.5"},"repository":{"url":"git+https://github.com/bacnh85/pi-extensions.git","type":"git","directory":"pi-web"},"_npmVersion":"10.9.8","description":"Pi extension for web search, page extraction, Firecrawl scraping/crawling, Crawl4AI headless browser crawling, Gemini web-tier research, free upstream image generation, and one-off gateway chat.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"axios":"^1.20.0","jsdom":"^27.0.1","turndown":"^7.2.2","gemini-reverse":"^2.1.0","turndown-plugin-gfm":"^1.0.2","@mozilla/readability":"^0.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","chai":"^6.2.2","mocha":"^11.8.0","@types/chai":"^5.2.3","@types/node":"^26.0.1","@types/jsdom":"^28.0.3","@types/mocha":"^10.0.10","@types/turndown":"^5.0.6"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web_0.12.0_1789331053798_0.7364500337660795","host":"s3://npm-registry-packages-npm-production"}},"0.12.1":{"name":"@bacnh85/pi-web","version":"0.12.1","keywords":["pi-package","pi-extension","web-search","brave-search","firecrawl","crawl4ai","scraping","crawling","gemini","deep-research","image-generation","zai"],"license":"MIT","_id":"@bacnh85/pi-web@0.12.1","maintainers":[{"name":"bacnh85","email":"mail@bacnh.com"}],"homepage":"https://github.com/bacnh85/pi-extensions/tree/main/pi-web","bugs":{"url":"https://github.com/bacnh85/pi-extensions/issues"},"pi":{"skills":["./skills"],"extensions":["./extensions/index.ts"]},"dist":{"shasum":"fe3eeb3dc2cf9441c526b2cd3312ad834570d4ac","tarball":"https://registry.npmjs.org/@bacnh85/pi-web/-/pi-web-0.12.1.tgz","fileCount":23,"integrity":"sha512-mGbhlEcuk5njJxXCLgOKBrwp1cvVFgp4sybxPjVVbDv/iNgpH0gXjP5+arDyTSwSPXVeTlu6lTejmzN1WARL0w==","signatures":[{"sig":"MEQCIFrQ9UCuDHbwZwQwyuBbmovH1OMZoMffN+Ix/79fMRkoAiASSvhXPE+rbgQNZXn1xtzeCwVgwBtMtVbK7LOHAQFq8g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":235850},"type":"module","gitHead":"67f18a8216d09e87e55732c2bb4b18e75eca005d","scripts":{"test":"cd extensions && npx mocha"},"_npmUser":{"name":"bacnh85","email":"mail@bacnh.com"},"overrides":{"diff":"^8.0.3","js-yaml@>=4.0.0 <4.3.1":"^4.3.1","brace-expansion@>=2.0.0 <2.1.4":"^2.1.4","serialize-javascript@>=5.0.0 <7.0.5":"^7.0.5"},"repository":{"url":"git+https://github.com/bacnh85/pi-extensions.git","type":"git","directory":"pi-web"},"_npmVersion":"10.9.8","description":"Pi extension for web search, page extraction, Firecrawl scraping/crawling, Crawl4AI headless browser crawling, Gemini web-tier research, free upstream image generation, and one-off gateway chat.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"axios":"^1.20.0","jsdom":"^27.0.1","turndown":"^7.2.2","gemini-reverse":"^2.1.0","turndown-plugin-gfm":"^1.0.2","@mozilla/readability":"^0.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","chai":"^6.2.2","mocha":"^11.8.0","@types/chai":"^5.2.3","@types/node":"^26.0.1","@types/jsdom":"^28.0.3","@types/mocha":"^10.0.10","@types/turndown":"^5.0.6"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web_0.12.1_1789341846260_0.04557028473543778","host":"s3://npm-registry-packages-npm-production"}},"0.12.2":{"name":"@bacnh85/pi-web","version":"0.12.2","keywords":["pi-package","pi-extension","web-search","brave-search","firecrawl","crawl4ai","scraping","crawling","gemini","deep-research","image-generation","zai"],"license":"MIT","_id":"@bacnh85/pi-web@0.12.2","maintainers":[{"name":"bacnh85","email":"mail@bacnh.com"}],"homepage":"https://github.com/bacnh85/pi-extensions/tree/main/pi-web","bugs":{"url":"https://github.com/bacnh85/pi-extensions/issues"},"pi":{"skills":["./skills"],"extensions":["./extensions/index.ts"]},"dist":{"shasum":"f187fb48d2ef2139366e81712b66dffa86f11414","tarball":"https://registry.npmjs.org/@bacnh85/pi-web/-/pi-web-0.12.2.tgz","fileCount":23,"integrity":"sha512-xQxJv3izXl1HmNaylVhE0dXndHHjLrvnC3mX62Uavm8OaIsaiejpzdarFzHxlBqLii4gdk0V1WEEIy2HeRVseA==","signatures":[{"sig":"MEUCIF3Z/os7gwCDO2Kh3IoXjeFHo4qmf8DrvDaTrqavYQ/zAiEAwfz4qBuPmKth3oylvewhGRuvSmYqhBMnH81Nh43ofxw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":236555},"type":"module","gitHead":"f02c21c1e23bd879b6a02e120ada72ccd350852a","scripts":{"test":"cd extensions && npx mocha"},"_npmUser":{"name":"bacnh85","email":"mail@bacnh.com"},"overrides":{"diff":"^8.0.3","js-yaml@>=4.0.0 <4.3.1":"^4.3.1","brace-expansion@>=2.0.0 <2.1.4":"^2.1.4","serialize-javascript@>=5.0.0 <7.0.5":"^7.0.5"},"repository":{"url":"git+https://github.com/bacnh85/pi-extensions.git","type":"git","directory":"pi-web"},"_npmVersion":"10.9.8","description":"Pi extension for web search, page extraction, Firecrawl scraping/crawling, Crawl4AI headless browser crawling, Gemini web-tier research, free upstream image generation, and one-off gateway chat.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"axios":"^1.20.0","jsdom":"^27.0.1","turndown":"^7.2.2","gemini-reverse":"^2.1.0","turndown-plugin-gfm":"^1.0.2","@mozilla/readability":"^0.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","chai":"^6.2.2","mocha":"^11.8.0","@types/chai":"^5.2.3","@types/node":"^26.0.1","@types/jsdom":"^28.0.3","@types/mocha":"^10.0.10","@types/turndown":"^5.0.6"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web_0.12.2_1789342644473_0.15760663655625184","host":"s3://npm-registry-packages-npm-production"}},"0.12.3":{"name":"@bacnh85/pi-web","version":"0.12.3","keywords":["pi-package","pi-extension","web-search","brave-search","firecrawl","crawl4ai","scraping","crawling","gemini","deep-research","image-generation","zai"],"license":"MIT","_id":"@bacnh85/pi-web@0.12.3","maintainers":[{"name":"bacnh85","email":"mail@bacnh.com"}],"homepage":"https://github.com/bacnh85/pi-extensions/tree/main/pi-web","bugs":{"url":"https://github.com/bacnh85/pi-extensions/issues"},"pi":{"skills":["./skills"],"extensions":["./extensions/index.ts"]},"dist":{"shasum":"fc6110a78be9f1e05775f77635226857a4eee466","tarball":"https://registry.npmjs.org/@bacnh85/pi-web/-/pi-web-0.12.3.tgz","fileCount":23,"integrity":"sha512-O2i6cirK9Ec0ca03AjoNocHeTruerssvk5ugudeCCy/bqmByscay09ENCb9AZD6D1ybPYD4yCspsOijylkiv/g==","signatures":[{"sig":"MEQCIBZMt0aWb3VfLZ1zRKgZaIVoDr0m/nEoOJCBY7lEUcmhAiBDd4sq9bd1a1XUBVEiHgJ7yqEkaxqN5Syc5IE8VPb81Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":237791},"type":"module","gitHead":"731f8131b2873fb2be10b9ade841d54ef24f203c","scripts":{"test":"cd extensions && npx mocha"},"_npmUser":{"name":"bacnh85","email":"mail@bacnh.com"},"overrides":{"diff":"^8.0.3","js-yaml@>=4.0.0 <4.3.1":"^4.3.1","brace-expansion@>=2.0.0 <2.1.4":"^2.1.4","serialize-javascript@>=5.0.0 <7.0.5":"^7.0.5"},"repository":{"url":"git+https://github.com/bacnh85/pi-extensions.git","type":"git","directory":"pi-web"},"_npmVersion":"10.9.8","description":"Pi extension for web search, page extraction, Firecrawl scraping/crawling, Crawl4AI headless browser crawling, Gemini web-tier research, free upstream image generation, and one-off gateway chat.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"axios":"^1.20.0","jsdom":"^27.0.1","turndown":"^7.2.2","gemini-reverse":"^2.1.0","turndown-plugin-gfm":"^1.0.2","@mozilla/readability":"^0.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","chai":"^6.2.2","mocha":"^11.8.0","@types/chai":"^5.2.3","@types/node":"^26.0.1","@types/jsdom":"^28.0.3","@types/mocha":"^10.0.10","@types/turndown":"^5.0.6"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web_0.12.3_1789343435377_0.13623637067976402","host":"s3://npm-registry-packages-npm-production"}},"0.13.0":{"name":"@bacnh85/pi-web","version":"0.13.0","keywords":["pi-package","pi-extension","web-search","brave-search","firecrawl","crawl4ai","scraping","crawling","gemini","deep-research","image-generation","zai"],"license":"MIT","_id":"@bacnh85/pi-web@0.13.0","maintainers":[{"name":"bacnh85","email":"mail@bacnh.com"}],"homepage":"https://github.com/bacnh85/pi-extensions/tree/main/pi-web","bugs":{"url":"https://github.com/bacnh85/pi-extensions/issues"},"pi":{"skills":["./skills"],"extensions":["./extensions/index.ts"]},"dist":{"shasum":"3f06ba4b59d8865db53007e3fffd1c9121820d65","tarball":"https://registry.npmjs.org/@bacnh85/pi-web/-/pi-web-0.13.0.tgz","fileCount":23,"integrity":"sha512-6OpzZNA2qTFCUqfzyGxOMpABWfw/K3cA4a2Ktklimmv0Lwqzy7rEuickJTqIwIqGE/DVTdMpnxjGNdqw2tqOZQ==","signatures":[{"sig":"MEQCIHxL5Zq1UvnJO55yByJAudDE28EfnOtVKFC+8fRgiJhPAiBAKRYm26OBpXhRMN87a/K9mWg6z0QKK2vgRrv6jAci8Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":239261},"type":"module","gitHead":"39c0fe29518ba92a0f7b580f0f83de81d09f3bea","scripts":{"test":"cd extensions && npx mocha"},"_npmUser":{"name":"bacnh85","email":"mail@bacnh.com"},"overrides":{"diff":"^8.0.3","js-yaml@>=4.0.0 <4.3.1":"^4.3.1","brace-expansion@>=2.0.0 <2.1.4":"^2.1.4","serialize-javascript@>=5.0.0 <7.0.5":"^7.0.5"},"repository":{"url":"git+https://github.com/bacnh85/pi-extensions.git","type":"git","directory":"pi-web"},"_npmVersion":"10.9.8","description":"Pi extension for web search, page extraction, Firecrawl scraping/crawling, Crawl4AI headless browser crawling, Gemini web-tier research, free upstream image generation, and one-off gateway chat.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"axios":"^1.20.0","jsdom":"^27.0.1","turndown":"^7.2.2","gemini-reverse":"^2.1.0","turndown-plugin-gfm":"^1.0.2","@mozilla/readability":"^0.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","chai":"^6.2.2","mocha":"^11.8.0","@types/chai":"^5.2.3","@types/node":"^26.0.1","@types/jsdom":"^28.0.3","@types/mocha":"^10.0.10","@types/turndown":"^5.0.6"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web_0.13.0_1789347274308_0.9282411647337379","host":"s3://npm-registry-packages-npm-production"}},"0.13.1":{"name":"@bacnh85/pi-web","version":"0.13.1","keywords":["pi-package","pi-extension","web-search","brave-search","firecrawl","crawl4ai","scraping","crawling","gemini","deep-research","image-generation","zai"],"license":"MIT","_id":"@bacnh85/pi-web@0.13.1","maintainers":[{"name":"bacnh85","email":"mail@bacnh.com"}],"homepage":"https://github.com/bacnh85/pi-extensions/tree/main/pi-web","bugs":{"url":"https://github.com/bacnh85/pi-extensions/issues"},"pi":{"skills":["./skills"],"extensions":["./extensions/index.ts"]},"dist":{"shasum":"c31bb143c310e6cb76f5d69149dc1e068be7b69e","tarball":"https://registry.npmjs.org/@bacnh85/pi-web/-/pi-web-0.13.1.tgz","fileCount":23,"integrity":"sha512-4em0ZfVukGZ1eI5hO+RB6NJBl29/ecBoQmesfQBaUPyQhs8MNbd2gfFzhQTzJNflUCUbJEFFXkaKJBlm1wjk7A==","signatures":[{"sig":"MEYCIQCKlrHZfs2t8zS/q6d9mgBw99nmui+cDsz4ipW8pTWz5QIhAOxn/AAq2PbSUI41gCs2zwvqf9R7hoNwJoZVnPa70g8r","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":239547},"type":"module","gitHead":"b5edf7a168bf4795742bd78473d91d84b41df206","scripts":{"test":"cd extensions && npx mocha"},"_npmUser":{"name":"bacnh85","email":"mail@bacnh.com"},"overrides":{"diff":"^8.0.3","js-yaml@>=4.0.0 <4.3.1":"^4.3.1","brace-expansion@>=2.0.0 <2.1.4":"^2.1.4","serialize-javascript@>=5.0.0 <7.0.5":"^7.0.5"},"repository":{"url":"git+https://github.com/bacnh85/pi-extensions.git","type":"git","directory":"pi-web"},"_npmVersion":"10.9.8","description":"Pi extension for web search, page extraction, Firecrawl scraping/crawling, Crawl4AI headless browser crawling, Gemini web-tier research, free upstream image generation, and one-off gateway chat.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"axios":"^1.20.0","jsdom":"^27.0.1","turndown":"^7.2.2","gemini-reverse":"^2.1.0","turndown-plugin-gfm":"^1.0.2","@mozilla/readability":"^0.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","chai":"^6.2.2","mocha":"^11.8.0","@types/chai":"^5.2.3","@types/node":"^26.0.1","@types/jsdom":"^28.0.3","@types/mocha":"^10.0.10","@types/turndown":"^5.0.6"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web_0.13.1_1789347635976_0.053538953949723744","host":"s3://npm-registry-packages-npm-production"}},"0.13.2":{"name":"@bacnh85/pi-web","version":"0.13.2","keywords":["pi-package","pi-extension","web-search","brave-search","firecrawl","crawl4ai","scraping","crawling","gemini","deep-research","image-generation","zai"],"license":"MIT","_id":"@bacnh85/pi-web@0.13.2","maintainers":[{"name":"bacnh85","email":"mail@bacnh.com"}],"homepage":"https://github.com/bacnh85/pi-extensions/tree/main/pi-web","bugs":{"url":"https://github.com/bacnh85/pi-extensions/issues"},"pi":{"skills":["./skills"],"extensions":["./extensions/index.ts"]},"dist":{"shasum":"06a7ce3c2ece9c39a807c77c7ecfb67b7b9ab6fc","tarball":"https://registry.npmjs.org/@bacnh85/pi-web/-/pi-web-0.13.2.tgz","fileCount":23,"integrity":"sha512-HXF1qyFX5ksWGjUS5XEaiCnaHGvFFZEyVFFgt/UekdRrahRsh+2xt+BSURjIputdi58fpye0kLHapznr14mf0A==","signatures":[{"sig":"MEYCIQCjLcSdJU6pP2gHruQ+vUBPPWcOqOP6WQcrLg8fkt/xQAIhANMIYJJx40k12ShEukRzAbt3pQvpS5K5bXT/Wigh9vwx","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":240370},"type":"module","gitHead":"40bd8004da82b89942adbe21f36c6e74e8fe3aed","scripts":{"test":"cd extensions && npx mocha"},"_npmUser":{"name":"bacnh85","email":"mail@bacnh.com"},"overrides":{"diff":"^8.0.3","js-yaml@>=4.0.0 <4.3.1":"^4.3.1","brace-expansion@>=2.0.0 <2.1.4":"^2.1.4","serialize-javascript@>=5.0.0 <7.0.5":"^7.0.5"},"repository":{"url":"git+https://github.com/bacnh85/pi-extensions.git","type":"git","directory":"pi-web"},"_npmVersion":"10.9.8","description":"Pi extension for web search, page extraction, Firecrawl scraping/crawling, Crawl4AI headless browser crawling, Gemini web-tier research, free upstream image generation, and one-off gateway chat.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"axios":"^1.20.0","jsdom":"^27.0.1","turndown":"^7.2.2","gemini-reverse":"^2.1.0","turndown-plugin-gfm":"^1.0.2","@mozilla/readability":"^0.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","chai":"^6.2.2","mocha":"^11.8.0","@types/chai":"^5.2.3","@types/node":"^26.0.1","@types/jsdom":"^28.0.3","@types/mocha":"^10.0.10","@types/turndown":"^5.0.6"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web_0.13.2_1789348632513_0.5735367836371228","host":"s3://npm-registry-packages-npm-production"}},"0.13.3":{"name":"@bacnh85/pi-web","version":"0.13.3","keywords":["pi-package","pi-extension","web-search","brave-search","firecrawl","crawl4ai","scraping","crawling","gemini","deep-research","image-generation","zai"],"license":"MIT","_id":"@bacnh85/pi-web@0.13.3","maintainers":[{"name":"bacnh85","email":"mail@bacnh.com"}],"homepage":"https://github.com/bacnh85/pi-extensions/tree/main/pi-web","bugs":{"url":"https://github.com/bacnh85/pi-extensions/issues"},"pi":{"skills":["./skills"],"extensions":["./extensions/index.ts"]},"dist":{"shasum":"9d10f14a01219cf9f32c7c1b511a217d1d86818d","tarball":"https://registry.npmjs.org/@bacnh85/pi-web/-/pi-web-0.13.3.tgz","fileCount":23,"integrity":"sha512-/5SkHYra6Q1ssEttpHiS8BWKWw+iJbOmBXxmGMEGZrux6eOMHlLDqYzANBDEocAhrpjRXFVC7jHN/vCOwBmudw==","signatures":[{"sig":"MEUCIE9EieysTwlJSmPL2spNOMpz6O6aBlTcXlEJXfU/xzXrAiEAzRFUUohRGTBA/uw1tEJG5VypvPCL8ZVT59FRtaTdlFk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":244825},"type":"module","gitHead":"78b9df500fb0621a5d048eb0d9ba45ff7c6f6afa","scripts":{"test":"cd extensions && npx mocha"},"_npmUser":{"name":"bacnh85","email":"mail@bacnh.com"},"overrides":{"diff":"^8.0.3","js-yaml@>=4.0.0 <4.3.1":"^4.3.1","brace-expansion@>=2.0.0 <2.1.4":"^2.1.4","serialize-javascript@>=5.0.0 <7.0.5":"^7.0.5"},"repository":{"url":"git+https://github.com/bacnh85/pi-extensions.git","type":"git","directory":"pi-web"},"_npmVersion":"10.9.8","description":"Pi extension for web search, page extraction, Firecrawl scraping/crawling, Crawl4AI headless browser crawling, Gemini web-tier research, free upstream image generation, and one-off gateway chat.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"axios":"^1.20.0","jsdom":"^27.0.1","turndown":"^7.2.2","gemini-reverse":"^2.1.0","turndown-plugin-gfm":"^1.0.2","@mozilla/readability":"^0.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","chai":"^6.2.2","mocha":"^11.8.0","@types/chai":"^5.2.3","@types/node":"^26.0.1","@types/jsdom":"^28.0.3","@types/mocha":"^10.0.10","@types/turndown":"^5.0.6"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web_0.13.3_1789355574558_0.4791636536742576","host":"s3://npm-registry-packages-npm-production"}},"0.13.4":{"name":"@bacnh85/pi-web","version":"0.13.4","keywords":["pi-package","pi-extension","web-search","brave-search","firecrawl","crawl4ai","scraping","crawling","gemini","deep-research","image-generation","zai"],"license":"MIT","_id":"@bacnh85/pi-web@0.13.4","maintainers":[{"name":"bacnh85","email":"mail@bacnh.com"}],"homepage":"https://github.com/bacnh85/pi-extensions/tree/main/pi-web","bugs":{"url":"https://github.com/bacnh85/pi-extensions/issues"},"pi":{"skills":["./skills"],"extensions":["./extensions/index.ts"]},"dist":{"shasum":"1a4f64d7cfedc153582153a58ba7cbc63c117984","tarball":"https://registry.npmjs.org/@bacnh85/pi-web/-/pi-web-0.13.4.tgz","fileCount":23,"integrity":"sha512-vVG8TFJSK1gkJuAycBjxP41I7pcr4XXkme7F7B0Cr/b9H6o4G0UZcrwqCBfvFmFh1GNAiwy6HRaeAZGofPhonQ==","signatures":[{"sig":"MEUCICusMBw9ZVxtoQLcdx1SgaKTyi7i9NywvLk/VfRE1NQXAiEArWlI+xoPan2SfRuC6jDSx/MHuisH3e6yAGE/DS4OeO8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":248196},"type":"module","gitHead":"addfb55c00cc92a9b4e14fd9348705caaea4851d","scripts":{"test":"cd extensions && npx mocha"},"_npmUser":{"name":"bacnh85","email":"mail@bacnh.com"},"overrides":{"diff":"^8.0.3","js-yaml@>=4.0.0 <4.3.1":"^4.3.1","brace-expansion@>=2.0.0 <2.1.4":"^2.1.4","serialize-javascript@>=5.0.0 <7.0.5":"^7.0.5"},"repository":{"url":"git+https://github.com/bacnh85/pi-extensions.git","type":"git","directory":"pi-web"},"_npmVersion":"10.9.8","description":"Pi extension for web search, page extraction, Firecrawl scraping/crawling, Crawl4AI headless browser crawling, Gemini web-tier research, free upstream image generation, and one-off gateway chat.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"axios":"^1.20.0","jsdom":"^27.0.1","turndown":"^7.2.2","gemini-reverse":"^2.1.0","turndown-plugin-gfm":"^1.0.2","@mozilla/readability":"^0.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","chai":"^6.2.2","mocha":"^11.8.0","@types/chai":"^5.2.3","@types/node":"^26.0.1","@types/jsdom":"^28.0.3","@types/mocha":"^10.0.10","@types/turndown":"^5.0.6"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web_0.13.4_1789357070091_0.8492706028340256","host":"s3://npm-registry-packages-npm-production"}},"0.15.0":{"name":"@bacnh85/pi-web","version":"0.15.0","keywords":["pi-package","pi-extension","web-search","brave-search","firecrawl","crawl4ai","scraping","crawling","gemini","deep-research","image-generation","zai"],"license":"MIT","_id":"@bacnh85/pi-web@0.15.0","maintainers":[{"name":"bacnh85","email":"mail@bacnh.com"}],"homepage":"https://github.com/bacnh85/pi-extensions/tree/main/pi-web","bugs":{"url":"https://github.com/bacnh85/pi-extensions/issues"},"pi":{"skills":["./skills"],"extensions":["./extensions/index.ts"]},"dist":{"shasum":"aa474bd1f7601c3feee84609dc46338c75493d06","tarball":"https://registry.npmjs.org/@bacnh85/pi-web/-/pi-web-0.15.0.tgz","fileCount":24,"integrity":"sha512-81ZBdErreOQ3RErj4Q6LHVJBuOuGtEf4RuhDwtpS05ytz9tDnu6lA21eks9SJlxNc3WkyEBQuBuxXpgFgfU1aQ==","signatures":[{"sig":"MEUCIDk812gGef7ZxSiohv/IkuTSuAiLAgabqJ0H4wstsVbEAiEA/SztoPrHNI4Bn/XiiCx6tE9fokE3N+BmeKr3CKHKeC0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":297075},"type":"module","gitHead":"613645f8277319572bc3cff4cc28fa8702fddf42","scripts":{"test":"cd extensions && npx mocha"},"_npmUser":{"name":"bacnh85","email":"mail@bacnh.com"},"overrides":{"diff":"^8.0.3","js-yaml@>=4.0.0 <4.3.1":"^4.3.1","brace-expansion@>=2.0.0 <2.1.4":"^2.1.4","serialize-javascript@>=5.0.0 <7.0.5":"^7.0.5"},"repository":{"url":"git+https://github.com/bacnh85/pi-extensions.git","type":"git","directory":"pi-web"},"_npmVersion":"10.9.8","description":"Pi extension for web search, page extraction, Firecrawl scraping/crawling, Crawl4AI headless browser crawling, Gemini web-tier research, free upstream image generation (Gemini/ChatGPT web/Z.ai), and one-off ChatGPT-web/gateway chat.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"axios":"^1.20.0","jsdom":"^27.0.1","turndown":"^7.2.2","gemini-reverse":"^2.1.0","turndown-plugin-gfm":"^1.0.2","@mozilla/readability":"^0.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","chai":"^6.2.2","mocha":"^11.8.0","@types/chai":"^5.2.3","@types/node":"^26.0.1","@types/jsdom":"^28.0.3","@types/mocha":"^10.0.10","@types/turndown":"^5.0.6"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web_0.15.0_1789400161997_0.2932345980934834","host":"s3://npm-registry-packages-npm-production"}},"0.16.0":{"name":"@bacnh85/pi-web","version":"0.16.0","keywords":["pi-package","pi-extension","web-search","brave-search","firecrawl","crawl4ai","scraping","crawling","gemini","deep-research","image-generation","zai"],"license":"MIT","_id":"@bacnh85/pi-web@0.16.0","maintainers":[{"name":"bacnh85","email":"mail@bacnh.com"}],"homepage":"https://github.com/bacnh85/pi-extensions/tree/main/pi-web","bugs":{"url":"https://github.com/bacnh85/pi-extensions/issues"},"pi":{"skills":["./skills"],"extensions":["./extensions/index.ts"]},"dist":{"shasum":"bbb3e35686d57a323f907ea6d0491609661ddeae","tarball":"https://registry.npmjs.org/@bacnh85/pi-web/-/pi-web-0.16.0.tgz","fileCount":25,"integrity":"sha512-9eYzewZfVxyOJ+WnHvzvlaSD58O17mYenea5cmODPumHzKbggaIAf7WhpfJWjNS4CUuHhDtU8rtz55UINAlS1g==","signatures":[{"sig":"MEYCIQDrP9e66nRDRcBUkrHfjfSgi2m9aRqNKol6U1NWCLJCKgIhALuTSmQCyeOEmS+FrBIdNu73Aw+kLiXimxLElASaE19s","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCESjSmCiAgglLRzxYt3P3p4SUlYbuOehMVq7gN5s3OBwIgH+6UlJFCy5rLJhFcWUxhEdnzVC6oII5xKNeGKGzDvZk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":339263},"type":"module","gitHead":"588651c7c7b6974e2b1c7a32d75a7d96cb920638","scripts":{"test":"cd extensions && npx mocha"},"_npmUser":{"name":"bacnh85","email":"mail@bacnh.com"},"overrides":{"diff":"^8.0.3","js-yaml@>=4.0.0 <4.3.1":"^4.3.1","brace-expansion@>=2.0.0 <2.1.4":"^2.1.4","serialize-javascript@>=5.0.0 <7.0.5":"^7.0.5"},"repository":{"url":"git+https://github.com/bacnh85/pi-extensions.git","type":"git","directory":"pi-web"},"_npmVersion":"10.9.8","description":"Pi extension for web search, page extraction, Firecrawl scraping/crawling, Crawl4AI headless browser crawling, real-browser interaction (trusted click/type/evaluate via CDP), Gemini web-tier research, free upstream image generation (Gemini/ChatGPT web/Z.a","directories":{},"_nodeVersion":"22.23.2","dependencies":{"axios":"^1.20.0","jsdom":"^27.0.1","turndown":"^7.2.2","gemini-reverse":"^2.1.0","turndown-plugin-gfm":"^1.0.2","@mozilla/readability":"^0.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","chai":"^6.2.2","mocha":"^11.8.0","@types/chai":"^5.2.3","@types/node":"^26.0.1","@types/jsdom":"^28.0.3","@types/mocha":"^10.0.10","@types/turndown":"^5.0.6"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web_0.16.0_1789624917876_0.8451808018160174","host":"s3://npm-registry-packages-npm-production"}},"0.16.1":{"name":"@bacnh85/pi-web","version":"0.16.1","keywords":["pi-package","pi-extension","web-search","brave-search","firecrawl","crawl4ai","scraping","crawling","gemini","deep-research","image-generation","zai"],"license":"MIT","_id":"@bacnh85/pi-web@0.16.1","maintainers":[{"name":"bacnh85","email":"mail@bacnh.com"}],"homepage":"https://github.com/bacnh85/pi-extensions/tree/main/pi-web","bugs":{"url":"https://github.com/bacnh85/pi-extensions/issues"},"pi":{"skills":["./skills"],"extensions":["./extensions/index.ts"]},"dist":{"shasum":"421606779bbe3e790136d326c66cd0f248225650","tarball":"https://registry.npmjs.org/@bacnh85/pi-web/-/pi-web-0.16.1.tgz","fileCount":25,"integrity":"sha512-/MX7F2YZV0afVMtY75MJYwW/llMI9nRjlBCuu6nMOLWw8d6o0NG6C3GaLI8P6hbEIioFUZ8Tv/8OJHP+Fvk84A==","signatures":[{"sig":"MEUCIBS8mz8YmMlXZsgjNVkMnNBNidYXGSrxEj9u2e9J7oS/AiEA0R4uKsb9jDb5S3zowp8+AL20xLvvVWdYQm+Ux5+qvE4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDUxwPGgXxsx/MqPakynZ+z+i0ta6AiVpSl0xoK5L+O5AIgYMBYmVO55GKwVNPTig9wsDVJLojkDIkvqF3boEvULAI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":339378},"type":"module","gitHead":"b162b1757a8c8bb5b173fc7c265e4517e9dc78da","scripts":{"test":"cd extensions && npx mocha"},"_npmUser":{"name":"bacnh85","email":"mail@bacnh.com"},"overrides":{"diff":"^8.0.3","js-yaml@>=4.0.0 <4.3.1":"^4.3.1","brace-expansion@>=2.0.0 <2.1.4":"^2.1.4","serialize-javascript@>=5.0.0 <7.0.5":"^7.0.5"},"repository":{"url":"git+https://github.com/bacnh85/pi-extensions.git","type":"git","directory":"pi-web"},"_npmVersion":"10.9.8","description":"Pi extension for web search, page extraction, Firecrawl scraping/crawling, Crawl4AI headless browser crawling, real-browser interaction (trusted click/type/evaluate via CDP), Gemini web-tier research, free upstream image generation (Gemini/ChatGPT web/Z.a","directories":{},"_nodeVersion":"22.23.2","dependencies":{"axios":"^1.20.0","jsdom":"^27.0.1","turndown":"^7.2.2","gemini-reverse":"^2.1.0","turndown-plugin-gfm":"^1.0.2","@mozilla/readability":"^0.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","chai":"^6.2.2","mocha":"^11.8.0","@types/chai":"^5.2.3","@types/node":"^26.0.1","@types/jsdom":"^28.0.3","@types/mocha":"^10.0.10","@types/turndown":"^5.0.6"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web_0.16.1_1789648419466_0.14739027632072643","host":"s3://npm-registry-packages-npm-production"}},"0.17.0":{"name":"@bacnh85/pi-web","version":"0.17.0","keywords":["pi-package","pi-extension","web-search","brave-search","firecrawl","crawl4ai","scraping","crawling","gemini","deep-research","image-generation","zai"],"license":"MIT","_id":"@bacnh85/pi-web@0.17.0","maintainers":[{"name":"bacnh85","email":"mail@bacnh.com"}],"homepage":"https://github.com/bacnh85/pi-extensions/tree/main/pi-web","bugs":{"url":"https://github.com/bacnh85/pi-extensions/issues"},"pi":{"skills":["./skills"],"extensions":["./extensions/index.ts"]},"dist":{"shasum":"3be21ea30c0043c63e92b32a6a98ca89f1cd79ab","tarball":"https://registry.npmjs.org/@bacnh85/pi-web/-/pi-web-0.17.0.tgz","fileCount":25,"integrity":"sha512-0OpwJNbtIRun16BGfEC/jBCNdRwgfRgvMUHuBXFfgR+02e+cFDUVRyqhMc0GyLjGSXQSYj1ASHm/1LoljNSlag==","signatures":[{"sig":"MEQCIByFNFzBs6gtvmhb0YSwnkgKF47eBNY7AihGhndR++SZAiAWhfo5DIT1aD8ogYOHwjLYUcoe6ldyP7ExRwp/FRayUA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIFOxBwDcyNPhSAsigXcvmrvlsSHU2DgbdYC9Nxh9neqCAiEAoSL24j0s6dkWRipVGhm78qTR+qSthzadjpYsnc40Q7A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":347099},"type":"module","gitHead":"e0f76047159972d5b86f333652f1b2c9f476e15e","scripts":{"test":"cd extensions && npx mocha"},"_npmUser":{"name":"bacnh85","email":"mail@bacnh.com"},"overrides":{"diff":"^8.0.3","js-yaml@>=4.0.0 <4.3.1":"^4.3.1","brace-expansion@>=2.0.0 <2.1.4":"^2.1.4","serialize-javascript@>=5.0.0 <7.0.5":"^7.0.5"},"repository":{"url":"git+https://github.com/bacnh85/pi-extensions.git","type":"git","directory":"pi-web"},"_npmVersion":"10.9.8","description":"Pi extension for web search, page extraction, Firecrawl scraping/crawling, Crawl4AI headless browser crawling, real-browser interaction (trusted click/type/evaluate via CDP), Gemini web-tier research, free upstream image generation (Gemini/ChatGPT web/Z.a","directories":{},"_nodeVersion":"22.23.2","dependencies":{"axios":"^1.20.0","jsdom":"^27.0.1","turndown":"^7.2.2","gemini-reverse":"^2.1.0","turndown-plugin-gfm":"^1.0.2","@mozilla/readability":"^0.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","chai":"^6.2.2","mocha":"^11.8.0","@types/chai":"^5.2.3","@types/node":"^26.0.1","@types/jsdom":"^28.0.3","@types/mocha":"^10.0.10","@types/turndown":"^5.0.6"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web_0.17.0_1789703422222_0.20315521834802364","host":"s3://npm-registry-packages-npm-production"}},"0.17.1":{"name":"@bacnh85/pi-web","version":"0.17.1","keywords":["pi-package","pi-extension","web-search","brave-search","firecrawl","crawl4ai","scraping","crawling","gemini","deep-research","image-generation","zai"],"license":"MIT","_id":"@bacnh85/pi-web@0.17.1","maintainers":[{"name":"bacnh85","email":"mail@bacnh.com"}],"homepage":"https://github.com/bacnh85/pi-extensions/tree/main/pi-web","bugs":{"url":"https://github.com/bacnh85/pi-extensions/issues"},"pi":{"skills":["./skills"],"extensions":["./extensions/index.ts"]},"dist":{"shasum":"1d9a50fcfcb500875c04eca481be40c9cf2a315b","tarball":"https://registry.npmjs.org/@bacnh85/pi-web/-/pi-web-0.17.1.tgz","fileCount":25,"integrity":"sha512-bvj94BY0f3gE4Sa4PjhcQd2KdpW1ltaK9uyFoKNkzDE/4kwCcmyaP6P8yoW1CqHJj/6mRbUAJ5/UeDA/eeol8Q==","signatures":[{"sig":"MEQCIEX4DYT3Cgy8RzgbAjAmUumPjDJmO2b50M/3klN1dqw1AiA42yEebSogBv2AdcibmQX1nqnXg12OyQkktpmSC025Pw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDDaKQzRYxwkS1rYNBN87IGtR0fLIu1Vg+oh6ekdd+feQIgJ7x81C+QI8OFZKUGpqemk5AQclFPpSeETmr2kZgU7qw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":348471},"type":"module","gitHead":"fdf44f60a4ad34359a855de70f0de2edb64c7f2b","scripts":{"test":"cd extensions && npx mocha"},"_npmUser":{"name":"bacnh85","email":"mail@bacnh.com"},"overrides":{"diff":"^8.0.3","js-yaml@>=4.0.0 <4.3.1":"^4.3.1","brace-expansion@>=2.0.0 <2.1.4":"^2.1.4","serialize-javascript@>=5.0.0 <7.0.5":"^7.0.5"},"repository":{"url":"git+https://github.com/bacnh85/pi-extensions.git","type":"git","directory":"pi-web"},"_npmVersion":"10.9.8","description":"Pi extension for web search, page extraction, Firecrawl scraping/crawling, Crawl4AI headless browser crawling, real-browser interaction (trusted click/type/evaluate via CDP), Gemini web-tier research, free upstream image generation (Gemini/ChatGPT web/Z.a","directories":{},"_nodeVersion":"22.23.2","dependencies":{"axios":"^1.20.0","jsdom":"^27.0.1","turndown":"^7.2.2","gemini-reverse":"^2.1.0","turndown-plugin-gfm":"^1.0.2","@mozilla/readability":"^0.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","chai":"^6.2.2","mocha":"^11.8.0","@types/chai":"^5.2.3","@types/node":"^26.0.1","@types/jsdom":"^28.0.3","@types/mocha":"^10.0.10","@types/turndown":"^5.0.6"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web_0.17.1_1789784501631_0.5750193623656823","host":"s3://npm-registry-packages-npm-production"}},"0.17.2":{"name":"@bacnh85/pi-web","version":"0.17.2","keywords":["pi-package","pi-extension","web-search","brave-search","firecrawl","crawl4ai","scraping","crawling","gemini","deep-research","image-generation","zai"],"license":"MIT","_id":"@bacnh85/pi-web@0.17.2","maintainers":[{"name":"bacnh85","email":"mail@bacnh.com"}],"homepage":"https://github.com/bacnh85/pi-extensions/tree/main/pi-web","bugs":{"url":"https://github.com/bacnh85/pi-extensions/issues"},"pi":{"skills":["./skills"],"extensions":["./extensions/index.ts"]},"dist":{"shasum":"90e38506497472f5594303cc905f2f3577800c60","tarball":"https://registry.npmjs.org/@bacnh85/pi-web/-/pi-web-0.17.2.tgz","fileCount":25,"integrity":"sha512-7G47DrKWymV9Ejb695i1VbybgFWmP0lqx5t70jI6B7B/k0nlphRwCiUVDjg1MBwO6fpns9ZIbgKNnIJmeeEq3A==","signatures":[{"sig":"MEQCIEbn1aaHiix959KvyVvMUqgpuzTisboq0vjFQKR0rjZ9AiA0iXJuwTVEp7ocwcWKA6t0CrNphV1zunTTVxObZyHuPg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQD+9yIuKssBhKlWEN4LRbQmferMkGkcDuk3tAo50nqrtAIhAOebHY+hA6l+b1rHLECOi4kCe0EmGjIezGYibhdhJrM8","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":349665},"type":"module","gitHead":"d00c3deaa5f3423b44adc2e160397b2feaf8465f","scripts":{"test":"cd extensions && npx mocha"},"_npmUser":{"name":"bacnh85","email":"mail@bacnh.com"},"overrides":{"diff":"^8.0.3","js-yaml@>=4.0.0 <4.3.1":"^4.3.1","brace-expansion@>=2.0.0 <2.1.4":"^2.1.4","serialize-javascript@>=5.0.0 <7.0.5":"^7.0.5"},"repository":{"url":"git+https://github.com/bacnh85/pi-extensions.git","type":"git","directory":"pi-web"},"_npmVersion":"10.9.8","description":"Pi extension for web search, page extraction, Firecrawl scraping/crawling, Crawl4AI headless browser crawling, real-browser interaction (trusted click/type/evaluate via CDP), Gemini web-tier research, free upstream image generation (Gemini/ChatGPT web/Z.a","directories":{},"_nodeVersion":"22.23.2","dependencies":{"axios":"^1.20.0","jsdom":"^27.0.1","turndown":"^7.2.2","gemini-reverse":"^2.1.0","turndown-plugin-gfm":"^1.0.2","@mozilla/readability":"^0.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","chai":"^6.2.2","mocha":"^11.8.0","@types/chai":"^5.2.3","@types/node":"^26.0.1","@types/jsdom":"^28.0.3","@types/mocha":"^10.0.10","@types/turndown":"^5.0.6"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web_0.17.2_1789881059619_0.44301521217526085","host":"s3://npm-registry-packages-npm-production"}},"0.17.3":{"name":"@bacnh85/pi-web","version":"0.17.3","keywords":["pi-package","pi-extension","web-search","brave-search","firecrawl","crawl4ai","scraping","crawling","gemini","deep-research","image-generation","zai"],"license":"MIT","_id":"@bacnh85/pi-web@0.17.3","maintainers":[{"name":"bacnh85","email":"mail@bacnh.com"}],"homepage":"https://github.com/bacnh85/pi-extensions/tree/main/pi-web","bugs":{"url":"https://github.com/bacnh85/pi-extensions/issues"},"pi":{"skills":["./skills"],"extensions":["./extensions/index.ts"]},"dist":{"shasum":"5d8ca7f393809b7feac6be9781de7f32c1d35b25","tarball":"https://registry.npmjs.org/@bacnh85/pi-web/-/pi-web-0.17.3.tgz","fileCount":25,"integrity":"sha512-1CxzDEhARE8Qh5VkrDpyOsV1xXEVLoV5715+ufHycc8ulmI1wI4d7bw3/WU/Ww8jwwNY8+Yx8sLftYglmG73sQ==","signatures":[{"sig":"MEUCICCrUvEzhvsumEVBhi3VS1lLV7kP8V2DiH7Tk4t1mwAeAiEA/0jH5HLg3qB4uwa6LvnitQ+5RUkP46WC8AC44PoUKzI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIDsmfhVYUpc+WRj010/sUMfoEe9V+1u9cAWkUQmW2JL0AiEA06R1U6MHfI0YbKNR173ViGzkcoZdUkBRYkWBjRrEtms=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":350915},"type":"module","gitHead":"74fb274b1607622d56678ec7a38a3973cc8c3f38","scripts":{"test":"cd extensions && npx mocha"},"_npmUser":{"name":"bacnh85","email":"mail@bacnh.com"},"overrides":{"diff":"^8.0.3","js-yaml@>=4.0.0 <4.3.1":"^4.3.1","brace-expansion@>=2.0.0 <2.1.4":"^2.1.4","serialize-javascript@>=5.0.0 <7.0.5":"^7.0.5"},"repository":{"url":"git+https://github.com/bacnh85/pi-extensions.git","type":"git","directory":"pi-web"},"_npmVersion":"10.9.8","description":"Pi extension for web search, page extraction, Firecrawl scraping/crawling, Crawl4AI headless browser crawling, real-browser interaction (trusted click/type/evaluate via CDP), Gemini web-tier research, free upstream image generation (Gemini/ChatGPT web/Z.a","directories":{},"_nodeVersion":"22.23.2","dependencies":{"axios":"^1.20.0","jsdom":"^27.0.1","turndown":"^7.2.2","gemini-reverse":"^2.1.0","turndown-plugin-gfm":"^1.0.2","@mozilla/readability":"^0.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","chai":"^6.2.2","mocha":"^11.8.0","@types/chai":"^5.2.3","@types/node":"^26.0.1","@types/jsdom":"^28.0.3","@types/mocha":"^10.0.10","@types/turndown":"^5.0.6"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web_0.17.3_1789918343578_0.5136056447512158","host":"s3://npm-registry-packages-npm-production"}},"0.17.4":{"name":"@bacnh85/pi-web","version":"0.17.4","keywords":["pi-package","pi-extension","web-search","brave-search","firecrawl","crawl4ai","scraping","crawling","gemini","deep-research","image-generation","zai"],"license":"MIT","_id":"@bacnh85/pi-web@0.17.4","maintainers":[{"name":"bacnh85","email":"mail@bacnh.com"}],"homepage":"https://github.com/bacnh85/pi-extensions/tree/main/pi-web","bugs":{"url":"https://github.com/bacnh85/pi-extensions/issues"},"pi":{"skills":["./skills"],"extensions":["./extensions/index.ts"]},"dist":{"shasum":"ca90d1d99c37c8da689fc5f08cd6d0c2186365c7","tarball":"https://registry.npmjs.org/@bacnh85/pi-web/-/pi-web-0.17.4.tgz","fileCount":25,"integrity":"sha512-EuAztwuvo8ZxB4P09fKR0P1ybSgljnmY+KeSVgJcd8IefCIQEqw6nU4vHAv06KA7HrrZn/v7XyojobHsxpRP1g==","signatures":[{"sig":"MEUCIEK9OTixKWzFEKCOBMjBT0G2VVsGEBLkZTzQpQ4KW247AiEAnJeQM8/g0hjmaOvXjj8VNJ37xff4NSlGyFkP6DJ/a0Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIE+iP7k4Vf0oyn3oqnC69tcD6tR7/npcPC10fG+UY6thAiA34/pXAI81GUFhDudIzjgV41SpXvZzRXaZhe0sYGUmww==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":352201},"type":"module","gitHead":"b5330ac3d014f92dff97a2b90cd9ebdbf0de22fd","scripts":{"test":"cd extensions && npx mocha"},"_npmUser":{"name":"bacnh85","email":"mail@bacnh.com"},"overrides":{"diff":"^8.0.3","js-yaml@>=4.0.0 <4.3.1":"^4.3.1","brace-expansion@>=2.0.0 <2.1.4":"^2.1.4","serialize-javascript@>=5.0.0 <7.0.5":"^7.0.5"},"repository":{"url":"git+https://github.com/bacnh85/pi-extensions.git","type":"git","directory":"pi-web"},"_npmVersion":"10.9.8","description":"Pi extension for web search, page extraction, Firecrawl scraping/crawling, Crawl4AI headless browser crawling, real-browser interaction (trusted click/type/evaluate via CDP), Gemini web-tier research, free upstream image generation (Gemini/ChatGPT web/Z.a","directories":{},"_nodeVersion":"22.23.2","dependencies":{"axios":"^1.20.0","jsdom":"^27.0.1","turndown":"^7.2.2","gemini-reverse":"^2.1.0","turndown-plugin-gfm":"^1.0.2","@mozilla/readability":"^0.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","chai":"^6.2.2","mocha":"^11.8.0","@types/chai":"^5.2.3","@types/node":"^26.0.1","@types/jsdom":"^28.0.3","@types/mocha":"^10.0.10","@types/turndown":"^5.0.6"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web_0.17.4_1789962686293_0.42733051789864795","host":"s3://npm-registry-packages-npm-production"}},"0.17.5":{"name":"@bacnh85/pi-web","version":"0.17.5","keywords":["pi-package","pi-extension","web-search","brave-search","firecrawl","crawl4ai","scraping","crawling","gemini","deep-research","image-generation","zai"],"license":"MIT","_id":"@bacnh85/pi-web@0.17.5","maintainers":[{"name":"bacnh85","email":"mail@bacnh.com"}],"homepage":"https://github.com/bacnh85/pi-extensions/tree/main/pi-web","bugs":{"url":"https://github.com/bacnh85/pi-extensions/issues"},"pi":{"skills":["./skills"],"extensions":["./extensions/index.ts"]},"dist":{"shasum":"ac7cd1fe83806157bc6436eafc694dd26a342227","tarball":"https://registry.npmjs.org/@bacnh85/pi-web/-/pi-web-0.17.5.tgz","fileCount":25,"integrity":"sha512-s2wO3C2lXGqY9nesXAJBW9e4omJoL/Ixx34KhdC7biff+12ahdVLmT/Se2+6wRydZEM90nrxmsycAMFPpDtYlg==","signatures":[{"sig":"MEUCIQCGYuUZ4vtrZ/OWzyqehKEROnr+rnSTV7rmDcdNL2djbwIgKGeZb85MyeFAPsevqvR2ZXDkYXAKD5sT8VPJpPl0rB0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDdfHuEf8SCilmCpRwj13+8ETfPbVcpyPBwqlMa4nU92AIhAPbCX50Due9Fsupxl7Da2XkyiCbknrwL5/spe5VfSAg/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":353216},"type":"module","gitHead":"500cfa53e96e9ff2b5279062cba5fb58d44f2abf","scripts":{"test":"cd extensions && npx mocha"},"_npmUser":{"name":"bacnh85","email":"mail@bacnh.com"},"overrides":{"diff":"^8.0.3","js-yaml@>=4.0.0 <4.3.1":"^4.3.1","brace-expansion@>=2.0.0 <2.1.4":"^2.1.4","serialize-javascript@>=5.0.0 <7.0.5":"^7.0.5"},"repository":{"url":"git+https://github.com/bacnh85/pi-extensions.git","type":"git","directory":"pi-web"},"_npmVersion":"10.9.8","description":"Pi extension for web search, page extraction, Firecrawl scraping/crawling, Crawl4AI headless browser crawling, real-browser interaction (trusted click/type/evaluate via CDP), Gemini web-tier research, free upstream image generation (Gemini/ChatGPT web/Z.a","directories":{},"_nodeVersion":"22.23.2","dependencies":{"axios":"^1.20.0","jsdom":"^27.0.1","turndown":"^7.2.2","gemini-reverse":"^2.1.0","turndown-plugin-gfm":"^1.0.2","@mozilla/readability":"^0.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","chai":"^6.2.2","mocha":"^11.8.0","@types/chai":"^5.2.3","@types/node":"^26.0.1","@types/jsdom":"^28.0.3","@types/mocha":"^10.0.10","@types/turndown":"^5.0.6"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-web_0.17.5_1790296160070_0.3928486467931731","host":"s3://npm-registry-packages-npm-production"}},"0.17.6":{"pi":{"skills":["./skills"],"extensions":["./extensions/index.ts"]},"_id":"@bacnh85/pi-web@0.17.6","bugs":{"url":"https://github.com/bacnh85/pi-extensions/issues"},"dist":{"shasum":"31b88d3a0f10b4fa7748a4fdea73156580e3f5c7","tarball":"https://registry.npmjs.org/@bacnh85/pi-web/-/pi-web-0.17.6.tgz","fileCount":26,"integrity":"sha512-XRnb2oFy2RTUTOEGDRRp2c3LEqKfYJIFpIqhI36DB2vhDVCccRFRLOwfXISqu6HEBUeDUW1yYm5fFEvaI2IcZQ==","signatures":[{"sig":"MEUCIQDPV0dlz9o0umlkSTTNMQy+ttk1wWeON52ViCxKZzth+gIgSWP/Kii3gc59iNmbk9E/LHNxdB07ws14r5azfvHjjss=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQC3HaRBNlPSq3xBQnd4cEmI+B2Wn1i4Fk4NzqWAo9lOzAIgWBct0Szh8xsYIZ0MXyVrDWbnqDmlCXtMToyTl8oj6EY="}],"unpackedSize":353609},"name":"@bacnh85/pi-web","type":"module","gitHead":"edad246dd00bc061afdca0cd50782d3883535f96","license":"MIT","scripts":{"test":"cd extensions && npx mocha"},"version":"0.17.6","_npmUser":{"name":"bacnh85","email":"mail@bacnh.com"},"homepage":"https://github.com/bacnh85/pi-extensions/tree/main/pi-web","keywords":["pi-package","pi-extension","web-search","brave-search","firecrawl","crawl4ai","scraping","crawling","gemini","deep-research","image-generation","zai"],"overrides":{"diff":"^8.0.3","js-yaml@>=4.0.0 <4.3.1":"^4.3.1","brace-expansion@>=2.0.0 <2.1.4":"^2.1.4","serialize-javascript@>=5.0.0 <7.0.5":"^7.0.5"},"repository":{"url":"git+https://github.com/bacnh85/pi-extensions.git","type":"git","directory":"pi-web"},"_npmVersion":"10.9.8","description":"Pi extension for web search, page extraction, Firecrawl scraping/crawling, Crawl4AI headless browser crawling, real-browser interaction (trusted click/type/evaluate via CDP), Gemini web-tier research, free upstream image generation (Gemini/ChatGPT web/Z.a","directories":{},"maintainers":[{"name":"bacnh85","email":"mail@bacnh.com"}],"_nodeVersion":"22.23.2","dependencies":{"axios":"^1.20.0","jsdom":"^27.0.1","turndown":"^7.2.2","gemini-reverse":"^2.1.0","turndown-plugin-gfm":"^1.0.2","@mozilla/readability":"^0.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","chai":"^6.2.2","mocha":"^11.8.0","@types/chai":"^5.2.3","@types/node":"^26.0.1","@types/jsdom":"^28.0.3","@types/mocha":"^10.0.10","@types/turndown":"^5.0.6"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/pi-web_0.17.6_1790387035419_0.6080141308114859"}}},"time":{"created":"2026-06-25T08:11:32.871Z","modified":"2026-09-26T01:43:55.658Z","0.1.0":"2026-06-25T08:11:33.160Z","0.1.1":"2026-06-25T08:28:48.592Z","0.1.2":"2026-06-26T03:12:00.296Z","0.2.0":"2026-06-29T10:33:20.145Z","0.2.1":"2026-06-29T12:28:39.609Z","0.3.0":"2026-06-29T14:12:14.808Z","0.4.1":"2026-06-30T06:53:06.947Z","0.4.3":"2026-07-03T08:08:46.801Z","0.4.4":"2026-07-04T14:55:32.989Z","0.4.5":"2026-07-04T15:25:42.612Z","0.4.6":"2026-07-08T13:27:52.426Z","0.5.0":"2026-07-10T03:48:39.601Z","0.5.1":"2026-07-11T09:04:57.251Z","0.5.2":"2026-07-13T02:58:04.740Z","0.5.3":"2026-07-14T06:51:52.582Z","0.5.4":"2026-07-26T05:44:31.773Z","0.5.5":"2026-07-30T02:36:14.829Z","0.5.6":"2026-08-01T13:48:40.008Z","0.5.7":"2026-08-05T10:40:27.991Z","0.6.0":"2026-08-07T09:26:15.963Z","0.6.1":"2026-08-30T07:59:23.771Z","0.6.2":"2026-09-07T04:58:39.277Z","0.7.0":"2026-09-11T10:41:33.366Z","0.7.1":"2026-09-12T09:11:58.657Z","0.8.0":"2026-09-13T07:36:52.341Z","0.9.0":"2026-09-13T09:42:46.974Z","0.9.1":"2026-09-13T10:12:50.571Z","0.9.2":"2026-09-13T11:02:20.409Z","0.10.0":"2026-09-13T11:07:42.634Z","0.10.1":"2026-09-13T11:10:02.793Z","0.10.2":"2026-09-13T11:20:24.509Z","0.10.3":"2026-09-13T11:26:47.294Z","0.10.4":"2026-09-13T11:36:37.963Z","0.10.5":"2026-09-13T12:08:23.466Z","0.10.6":"2026-09-13T15:39:51.217Z","0.11.0":"2026-09-13T17:00:58.037Z","0.11.1":"2026-09-13T17:07:20.114Z","0.11.2":"2026-09-13T17:19:36.982Z","0.11.3":"2026-09-13T17:37:07.980Z","0.11.4":"2026-09-13T17:47:07.841Z","0.11.5":"2026-09-13T18:02:28.228Z","0.11.6":"2026-09-13T18:08:29.668Z","0.11.7":"2026-09-13T18:18:57.474Z","0.11.8":"2026-09-13T18:24:38.854Z","0.11.9":"2026-09-13T19:01:34.532Z","0.12.0":"2026-09-13T20:24:13.921Z","0.12.1":"2026-09-13T23:24:06.451Z","0.12.2":"2026-09-13T23:37:24.625Z","0.12.3":"2026-09-13T23:50:35.536Z","0.13.0":"2026-09-14T00:54:34.441Z","0.13.1":"2026-09-14T01:00:36.118Z","0.13.2":"2026-09-14T01:17:12.654Z","0.13.3":"2026-09-14T03:12:54.736Z","0.13.4":"2026-09-14T03:37:50.247Z","0.15.0":"2026-09-14T15:36:02.133Z","0.16.0":"2026-09-17T06:01:57.993Z","0.16.1":"2026-09-17T12:33:39.550Z","0.17.0":"2026-09-18T03:50:22.345Z","0.17.1":"2026-09-19T02:21:41.726Z","0.17.2":"2026-09-20T05:10:59.722Z","0.17.3":"2026-09-20T15:32:23.695Z","0.17.4":"2026-09-21T03:51:26.378Z","0.17.5":"2026-09-25T00:29:20.150Z","0.17.6":"2026-09-26T01:43:55.504Z"},"bugs":{"url":"https://github.com/bacnh85/pi-extensions/issues"},"license":"MIT","homepage":"https://github.com/bacnh85/pi-extensions/tree/main/pi-web","keywords":["pi-package","pi-extension","web-search","brave-search","firecrawl","crawl4ai","scraping","crawling","gemini","deep-research","image-generation","zai"],"repository":{"url":"git+https://github.com/bacnh85/pi-extensions.git","type":"git","directory":"pi-web"},"description":"Pi extension for web search, page extraction, Firecrawl scraping/crawling, Crawl4AI headless browser crawling, real-browser interaction (trusted click/type/evaluate via CDP), Gemini web-tier research, free upstream image generation (Gemini/ChatGPT web/Z.a","maintainers":[{"name":"bacnh85","email":"mail@bacnh.com"}],"readme":"# @bacnh85/pi-web\n\nPi extension for **unified web search, content extraction, site crawling, page capture, Gemini web-tier research, free upstream image generation, and one-off gateway chat**.\n\nAuto-selects the best backend from SearXNG (self-hosted), Brave Search, Firecrawl, Crawl4AI, and agy (Gemini/Claude, when installed) — so agents don't have to know which backend to use. Search selection is adaptive: broad discovery prefers self-hosted SearXNG, while precision-sensitive searches and inline content prefer Brave. `web_research` adds AI-synthesized research with citations via your gemini.google.com session.\n\n## Install\n\n```bash\npi install npm:@bacnh85/pi-web\n```\n\n## Configuration\n\nEnvironment lookup order:\n\n1. Process environment\n2. Current working directory `.env.local`\n3. Current working directory `.env`\n4. Pi global config `~/.pi/agent/.env.local`\n5. Pi global config `~/.pi/agent/.env`\n\nVariables:\n\n| Variable | Required | Default | Notes |\n|---|---|---|---|\n| `BRAVE_API_KEY` | No (1) | — | Brave Search API key |\n| `SEARXNG_BASE_URL` | No | `http://127.0.0.1:8888` | Self-hosted SearXNG |\n| `FIRECRAWL_API_URL` | No | `https://api.firecrawl.dev/v2` | Self-hosted or hosted |\n| `FIRECRAWL_API_KEY` | No (2) | — | Required for hosted Firecrawl |\n| `CRAWL4AI_API_URL` | No | `http://127.0.0.1:11235` | Self-hosted Crawl4AI |\n| `CRAWL4AI_API_TOKEN` | No (3) | — | Required if Crawl4AI auth enabled |\n| `GEMINI_WEB_SECURE_1PSID` | No (4) | — | `__Secure-1PSID` cookie from gemini.google.com — enables authed `web_research` (Deep Research) |\n| `GEMINI_WEB_PROXY` | No | — | Proxy URL for Gemini web calls (escape hatch if Google blocks the IP) |\n| `GEMINI_WEB_SECURE_1PSIDTS` | No (5) | — | Rotating `__Secure-1PSIDTS` cookie — bootstrap only; keep the source browser session closed so it isn't superseded (see \"Keeping the session alive\") |\n| `GEMINI_WEB_COOKIE_STORE` | No | `~/.pi/agent/gemini-web-cookies.json` | Where the pasted/rotated cookie state persists (0600) |\n| `GEMINI_WEB_KEEPALIVE` | No (6) | off | Set `1` to opt in to experimental background cookie rotation (see \"Keeping the session alive\") |\n| `GEMINI_WEB_ROTATE_INTERVAL_MS` | No | `600000` | Keepalive rotation cadence (min 60000) |\n| `ZAI_API_KEY` | No (7) | — | Z.ai API key — enables the `web_image` `zai` provider (GLM-Image via the official `api.z.ai`); `Z_AI_API_KEY` also accepted |\n| `WEB_IMAGE_API_BASE_URL` | No | — | `web_image` `custom` provider: any OpenAI-compatible images endpoint (e.g. `https://api.openai.com/v1`) |\n| `WEB_IMAGE_API_KEY` | No | — | Bearer key for the `custom` endpoint |\n| `WEB_IMAGE_API_LABEL` | No | — | Display label for the `custom` endpoint (default: host name) |\n| `WEB_IMAGE_MIN_INTERVAL_MS` | No | `5000` | Min interval between `web_image` calls per provider |\n| `WEB_IMAGE_DAILY_CAP` | No | `20` | Daily soft cap for the Gemini **web tier** and ChatGPT web `web_image` providers (keyed APIs stay uncapped) |\n| `CHATGPT_WEB_AUTH_KEY` | No | — | ChatGPT web tier: the OAuth tokens JSON from `codex login` (`~/.codex/auth.json`) or a bare access-token JWT. Unset → falls back to `~/.codex/auth.json`, then Pi auth.json `openai-codex` |\n| `CHATGPT_WEB_CODEX_AUTH` | No | `~/.codex/auth.json` | Alternative codex-login file path to read |\n| `CHATGPT_WEB_AUTH_STORE` | No | `~/.pi/agent/chatgpt-web-auth.json` | Where rotated refresh tokens persist when the source can't be rewritten (0600) |\n| `CHATGPT_WEB_MODEL` | No | `gpt-5.5` | Default `web_chat` model on the ChatGPT web surface |\n| `WEB_CHAT_API_BASE_URL` | No | — | `web_chat` gateway provider: any OpenAI-compatible `/chat/completions` gateway (`https://api.openai.com/v1`, …) |\n| `WEB_CHAT_API_KEY` | No | — | Bearer key for the `web_chat` gateway |\n\n> (1) At least one search backend (SearXNG, Brave, or Firecrawl) must be configured for `web_search`.\n> (2) Required for hosted Firecrawl; optional for self-hosted instances without auth.\n> (3) Required for Crawl4AI v0.9+ default config.\n> (4) Without it `web_research mode=ask` still works in guest mode (Flash-only); `mode=research` errors with setup steps.\n> (5) Copy the current value from DevTools (Application → Cookies) alongside `__Secure-1PSID`; it rotates, so refresh it when auth degrades.\n> (6) Off by default; experimental. Only arm it when instructed for a diagnosed dying session (see \"Keeping the session alive\").\n> (7) `web_image`'s Gemini provider is currently gated server-side (browser-grade TLS fingerprint required — generation refuses over plain Node even with a valid cookie); `zai` activates when `ZAI_API_KEY` is present and is the reliable path, `custom` when `WEB_IMAGE_API_BASE_URL` is set.\n\nSecrets are never printed; `web_status` reports only presence/source.\n\n### Always-on routing guidance\n\nWhen any `web_*` tool is active, pi-web injects a condensed backend-selection protocol (SearXNG → Brave → Firecrawl ordering, Firecrawl precision/scrape caveats, source-citation rule) into the system prompt via a `before_agent_start` hook. This travels with the package — no edits to `~/.pi/agent/AGENTS.md` are required — and carries zero overhead when pi-web is not loaded.\n\n## Tools\n\n### `web_search` — Unified search\n\nSearches the web. Auto-selects backends adaptively: SearXNG for broad self-hosted discovery, Brave for precision-sensitive queries and `include_content`, Firecrawl as last resort.\n\n```\nweb_search query=\"ansible podman quadlet\" count=5\nweb_search query=\"ansible documentation\" backend=brave count=10\nweb_search query=\"latest python release\" engines=\"google,github\"\nweb_search query=\"riven media\" include_content=true\n```\n\nParameters:\n\n| Parameter | Type | Default | Description |\n|---|---|---|---|\n| `query` | string | — | Search query |\n| `count` | number | 5 | Number of results (backend-dependent cap: SearXNG 50, Firecrawl 100; Brave passed through verbatim) |\n| `freshness` | string | — | Time filter: `pw`, `pm`, `py`, or `YYYY-MM-DDtoYYYY-MM-DD` |\n| `country` | string | `US` | Two-letter country code |\n| `backend` | string | `auto` | Force backend: `auto`, `searxng`, `brave`, `firecrawl` |\n| `engines` | string | — | SearXNG engine override, e.g. `google,github` |\n| `include_content` | boolean | false | Fetch page content alongside results |\n| `content_chars` | number | 5000 | Max content chars per result |\n| `timeout_ms` | number | per-backend | Request timeout in ms (SearXNG/static 15000, Firecrawl/Crawl4AI 60000) |\n\n**Auto-selection behavior:**\n\n1. **SearXNG** — first for broad/general discovery, especially when `engines` is supplied.\n2. **Brave** — first for precision-sensitive queries (`site:`, quoted phrases, docs/API/source lookups, short proper-name queries) and whenever `include_content` is true. Requires `BRAVE_API_KEY`.\n3. **Firecrawl Search** — last resort. ⚠️ Poor semantic accuracy on domain-specific/ambiguous queries (e.g., \"Riven\" returns League of Legends results). Prefer SearXNG or Brave for precision.\n\nTool output includes search diagnostics showing attempted backends and the selected backend.\n\nUse `backend` parameter to force a specific backend when needed.\n\n### `web_extract` — Unified content extraction\n\nExtracts readable content from a URL. Auto-selects backend: static (JSDOM) → dynamic (Firecrawl) → full (Crawl4AI) → agy (model-backed), with extraction diagnostics showing fallback attempts.\n\n```\nweb_extract url=\"https://docs.ansible.com/...\"\nweb_extract url=\"https://riven.tv/\" mode=static\nweb_extract url=\"https://example.com\" mode=dynamic prompt=\"Extract pricing plans\"\nweb_extract url=\"https://blocked.example.com\" mode=agy\n```\n\nParameters:\n\n| Parameter | Type | Default | Description |\n|---|---|---|---|\n| `url` | string | — | URL to extract |\n| `mode` | string | `auto` | `auto`, `static`, `dynamic`, `full`, or `agy` |\n| `prompt` | string | — | Prompt for JSON extraction (dynamic/agy modes) |\n| `schema` | any | — | JSON schema for structured extraction (dynamic/agy modes) |\n| `content_chars` | number | 20000 | Max content chars |\n| `wait_for` | number | — | Milliseconds to wait for Firecrawl dynamic rendering. Crawl4AI `/md` full mode may ignore this. |\n| `mobile` | boolean | false | Emulate mobile viewport (dynamic mode) |\n\n**Mode behavior:**\n\n| Mode | Backend | Best for | API key needed |\n|---|---|---|---|\n| `static` | JSDOM+Readability | Simple static pages, blog posts, docs | No |\n| `dynamic` | Firecrawl Scrape | JS-rendered pages, dynamic content | Maybe |\n| `full` | Crawl4AI | JS-heavy SPA, complex rendering | Maybe |\n| `agy` | agy (Gemini/Claude) | Bot-protected / anti-AI-scraping pages | agy CLI installed |\n| `auto` (default) | static → dynamic → full → agy | Unknown page type | Maybe |\n\nIn `auto` mode, fallbacks are noted in the output (e.g., `[Extraction fell back to Firecrawl Scrape (dynamic mode)]`). If `static` extraction fails, the tool gracefully escalates to heavier backends.\n\n> ⚠️ **Note on Firecrawl Scrape**: Fails on bot-protected sites (Ansible docs, many CDN-backed doc sites). Falls back to `full` mode (Crawl4AI) in `auto` mode, and to `agy` mode as a last resort.\n\n> **`agy` mode (optional)**: Uses the [Antigravity CLI](https://antigravity.google/) with Gemini/Claude — its native `read_url` browser tool can fetch pages that block Firecrawl/Crawl4AI. Install with `curl -fsSL https://antigravity.google/cli/install.sh | bash`, authenticate once with `agy`, then `auto` mode falls back to it automatically. If agy is not installed, `auto` mode skips it silently; `web_status` reports `agy.installed`.\n\n### `web_map` — Site URL discovery\n\nDiscovers URLs from a site using Firecrawl Map. Best on base domains; may return fewer results on sub-paths.\n\n```\nweb_map url=\"https://riven.tv\"\nweb_map url=\"https://docs.example.com\" sitemap=only\n```\n\nParameters: `url`, `limit` (default 100), `include_subdomains`, `search`, `sitemap`, `use_index`, `ignore_cache`.\n\n### `web_crawl` — Site crawl\n\nCrawls pages from a site. Two modes:\n\n- **`light`** (default): Firecrawl Crawl — conservative, docs-focused, single URL.\n- **`full`**: Crawl4AI Crawl — headless browser, rendered data, media, links, up to 100 URLs.\n\n```\nweb_crawl url=\"https://docs.example.com\" limit=10          # Firecrawl light mode\nweb_crawl urls=[\"https://a.com\",\"https://b.com\"] mode=full  # Crawl4AI full mode\nweb_crawl url=\"https://example.com\" mode=light poll=true    # Poll for completion\n```\n\n### `web_screenshot` — Page screenshot\n\nCaptures a full-page PNG screenshot using the Crawl4AI daemon, or **local headless Chrome for localhost/LAN/file URLs** (auto-detected; see [Local capture](#local-capture)). Returns the PNG inline as an image block (multimodal models see it); text summary includes engine/MIME/size.\n\n```\nweb_screenshot url=\"https://example.com\"\nweb_screenshot url=\"https://example.com\" wait_for=5 wait_for_images=true\nweb_screenshot url=\"http://localhost:3000\"           # local Chrome, auto-detected\nweb_screenshot url=\"http://localhost:3000\" full_page=true width=1280\nweb_screenshot url=\"https://example.com\" engine=\"daemon\"  # force the daemon\n```\n\nLocal-engine params: `width` (default 1280), `height` (default 800), `full_page` (captures a tall 8000px window — the Chrome CLI has no true full-page flag), `reduced_motion` (forces `--force-prefers-reduced-motion` — staggered page-load reveals otherwise screenshot as blank sections).\n\n**Honest mobile widths**: headless Chrome clamps `--window-size` to 500px, so a `width=390` capture would render at 500 and crop. `web_screenshot` routes `width < 500` through CDP device-metrics emulation instead and reports the truth in text: `Viewport: 390x844 (device-emulated)` + `Probe: scrollWidth X / innerWidth Y` (`scrollWidth > width` ⇒ `— CONTENT OVERFLOWS`).\n\n### `web_interact` — real-browser interaction\n\nDrives local headless Chrome over a zero-dependency CDP client (Node ≥22): open `url`, run `steps` in order, get per-step results, a final inline PNG, and a scrollWidth/innerWidth probe. One call = one browser lifecycle; steps stop at the first failure with the reason.\n\n```\nweb_interact url=\"http://localhost:5173\" viewport={width:390,height:844} reduced_motion=true \\\n  grant=[\"clipboard-read\",\"clipboard-write\"] \\\n  steps=[{click:\"#copy\"},{evaluate:\"document.getElementById('status').textContent\",label:\"status\"},\n         {type:{selector:\"#email\",text:\"a@b.co\"}},{press:\"Enter\"},{wait_for:\"[data-success]\"}]\n```\n\n| Step | Behavior |\n|------|----------|\n| `{click: \"selector\"}` | Trusted CDP mouse click at the element center (scrolled into view) — user activation is granted, so `execCommand('copy')`, logins, and gated APIs behave like a real user |\n| `{type: {selector, text}}` | Focus the element, then insert text |\n| `{press: \"key\"}` | Enter, Tab, Escape, Backspace, Delete, arrows, Space, or a single character |\n| `{evaluate: \"expr\", label}` | JS expression; the resolved value is returned (`awaitPromise` on) |\n| `{wait_for: \"selector\" \\| ms}` | Poll for a selector (5s budget) or sleep ms |\n| `{dialog: \"accept\" \\| \"dismiss\"}` | The answer for the NEXT native dialog (`confirm`/`alert`/`prompt`/`beforeunload`); dialogs are auto-DISMISSED without it (destructive actions stay blocked) and every answer is reported on the step result, e.g. `confirm(\"Delete?\") → dismissed` |\n| `{screenshot: true}` | Capture now; the last screenshot is returned inline |\n\nOptions: `viewport {width, height, device_scale_factor}` (honest device-metrics emulation — the probe's `scrollWidth > width` means overflowing CSS), `reduced_motion`, `grant` (browser permissions), `wait_for` (settle seconds after load), `timeout_ms` (per-step budget, default 60s — a step stuck past it fails with the reason instead of hanging the call).\n\n### `web_pdf` — Page PDF\n\nGenerates a PDF document using the Crawl4AI daemon, or **local headless Chrome** for localhost/LAN/file URLs (auto-detected). Returns base64-encoded PDF.\n\n```\nweb_pdf url=\"https://example.com/article\"\nweb_pdf url=\"http://localhost:3000\"   # local Chrome, auto-detected\n```\n\n### Local capture\n\nThe Crawl4AI daemon's browser runs on the daemon host — it cannot reach (and SSRF-blocks) your `localhost`. pi-web therefore routes private URLs to a **locally installed Chrome/Chromium** in headless mode:\n\n| URL | Engine |\n|-----|--------|\n| `localhost`, `127.0.0.1`, LAN IPs (10/8, 172.16/12, 192.168/16, 169.254/16), `file://` | local Chrome |\n| public URLs | Crawl4AI daemon |\n| daemon SSRF-blocks a URL | automatic local-Chrome retry |\n\nOverride with `engine=\"local\"` / `engine=\"daemon\"`. Binary discovery: `CHROME_PATH` env, then standard Chrome/Chromium paths per OS (Edge as a Windows fallback). Captures use an isolated temp profile, a 30s timeout, and `--virtual-time-budget` for `wait_for`. `web_interact` uses the same Chrome discovery plus a CDP websocket session (`--remote-debugging-port=0`, target created over the websocket — not the `/json/new` HTTP endpoint).\n\n### `web_status` — Provider status\n\nShows all provider configuration status and Crawl4AI server health.\n\n```\nweb_status\n```\n\nTypical output:\n\n```json\n{\n  \"brave\": { \"apiKeyFound\": true, \"apiKeySource\": \"process.env\" },\n  \"searxng\": { \"baseUrl\": \"http://127.0.0.1:8888\", ... },\n  \"firecrawl\": { \"baseUrl\": \"http://127.0.0.1:3002/v2\", ... },\n  \"crawl4ai\": {\n    \"baseUrl\": \"http://127.0.0.1:11235\",\n    ...\n    \"health\": { \"status\": \"healthy\", \"version\": \"0.5.0\", ... }\n  },\n  \"agy\": { \"installed\": true },\n  \"geminiWeb\": { \"configured\": true, \"cookieSource\": \"process.env\", \"proxy\": false },\n  \"localChrome\": { \"path\": \"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome\" }\n}\n```\n\n### `web_research` — Gemini web-tier research\n\nAI-synthesized research through your gemini.google.com session (powered by the\n[`gemini-reverse`](https://github.com/rynn-k/Gemini-Reverse) client, lazy-loaded).\n\n```\nweb_research(query=\"compare the top 3 cloud providers' AI offerings\", mode=\"research\", timeout_ms=600000)\n```\n\n- **`mode: \"ask\"`** (default) — quick grounded answer (Gemini auto-grounds with\n  Google Search). Works **without any cookie** in guest mode (Flash-only).\n  Sent as a temporary chat so your Gemini history stays clean.\n- **`mode: \"research\"`** — full Gemini **Deep Research**: plan → autonomous web\n  browsing (minutes) → cited report. Requires the cookie and a **fresh session**.\n  Runs a plan turn, a \"Start research\" confirm turn, then polls conversation\n  turns until the report lands. Plan/confirm run even on degraded sessions,\n  but report polling needs the live-session XSRF token — on stale sessions\n  the tool returns an honest partial result (plan + transcript + note)\n  instead of failing.\n  Default timeout 600 s, cap 1 800 000.\n\nBoth modes return the text plus **Sources** — URLs extracted from the\nanswer/report markdown (the web protocol exposes no structured citations field).\n\nSetup (authed mode):\n\n1. Sign in at [gemini.google.com](https://gemini.google.com/).\n2. `F12` → **Application** → **Cookies** → `https://gemini.google.com`.\n3. Copy the `__Secure-1PSID` value into `~/.pi/agent/.env.local`:\n\n   ```bash\n   GEMINI_WEB_SECURE_1PSID=your-cookie-value\n   # optional, if Google blocks your IP:\n   # GEMINI_WEB_PROXY=http://host:port\n   ```\n4. Restart pi; `web_status` shows `geminiWeb.configured: true`.\n\n**Paste from a fresh incognito login** (sign in, copy both `__Secure-1PSID`\nand `__Secure-1PSIDTS`, close the window). Cookies copied from your daily\nbrowser are short-lived: Chrome's Device Bound Session Credentials caps them\nat a few hours, and an open Gemini tab keeps rotating the value under you.\n\n### Keeping the session alive\n\nLive testing (2026-09-14) produced a result that reverses the earlier\nauto-rotation design: a `__Secure-1PSIDTS` obtained from Google's own\n`RotateCookies` endpoint is **rejected by gemini.google.com's privileged\nsurfaces** (Deep Research returns no plan, image generation 403s), while the\n**original pasted cookie keeps working indefinitely** — as long as the browser\nsession it came from doesn't rotate it again.\n\nSo the default recipe is:\n\n1. **Harvest from a fresh incognito login** (sign in, copy\n   `__Secure-1PSID` + `__Secure-1PSIDTS`, close the window).\n2. Paste into `~/.pi/agent/.env.local`, restart pi.\n3. **Never open gemini.google.com in that Google session's browser** — an\n   open Gemini tab supersedes the pasted cookie within minutes (verified).\n\nUnder those conditions the pasted cookie stays valid for as long as the\nincognito session lives server-side (observed: 19+ hours of authed `ask`).\n`web_status` reports the cookie store under `geminiWeb.cookieStore`.\n\n**Auto-rotation is now opt-in** (`GEMINI_WEB_KEEPALIVE=1`): it rotates via\n`POST accounts.google.com/RotateCookies` every 10 minutes and persists the\nresult, but the rotated value is rejected by gemini's privileged surfaces —\nuse it only if you accept losing Deep Research / image generation on that\nsession. Rotation failures never delete your stored paste cookie.\n\nSmoke the rotation directly (no prompt needed):\n\n```bash\nnpx tsx extensions/scripts/gemini-smoke.ts x auth\n```\n\nLive verification script (also proves the header-cap patch end-to-end — an\nauthed failure would surface `HPE_HEADER_OVERFLOW`):\n\n```bash\nnpx tsx extensions/scripts/gemini-smoke.ts \"test query\"            # ask (authed or guest)\nnpx tsx extensions/scripts/gemini-smoke.ts \"topic\" research        # Deep Research\n```\n\n⚠️ **Unofficial, at your own risk.** Cookie auth uses your real Google session\nagainst gemini.google.com's internal web API and may not comply with Google's\nToS; the protocol can break when Google changes it. `ask` mode errors map to\nactionable steps (expired cookie → re-copy; IP block → set `GEMINI_WEB_PROXY`).\n\nTroubleshooting:\n\n- *\"session expired\"* — re-copy `__Secure-1PSID` + `__Secure-1PSIDTS` from a\n  fresh **incognito** login. If this returns often, your daily browser is\n  competing for the same session — keep using the incognito cookie and never\n  open gemini.google.com there.\n- *\"unauthorized (400/401)\" from rotation* — the pasted generation was\n  superseded (usually by the daily browser). Content calls may still work;\n  rotation retries later. Your stored paste cookie is never deleted by this.\n- *\"temporarily blocked this IP\"* — set `GEMINI_WEB_PROXY`.\n- *research mode returns a partial result (\"report could not be retrieved\")* —\n  the plan/confirm turns ran, but report polling needs a live-session token:\n  re-copy `__Secure-1PSID` + `__Secure-1PSIDTS` from a fresh **incognito**\n  login and retry. The report remains in your Gemini web history for the\n  returned chat id. `ask` mode is unaffected.\n\n### `web_image` — free upstream image generation\n\nText → image with automatic provider fallback (all direct-to-upstream, no\nself-host services):\n\n```\nweb_image(prompt=\"isometric cutaway of a container ship, technical illustration\")\nweb_image(prompt=\"...\", provider=\"zai\")                       # pin GLM-Image via api.z.ai\nweb_image(prompt=\"...\", model=\"glm-image\", n=2, out_dir=\"/tmp/imgs\")\nweb_image(prompt=\"...\", provider=\"zai\", size=\"960x1728\")       # portrait aspect\n```\n\n`size` (zai/custom only) is passed through as `WxH`. `glm-image` enums:\n`1280x1280` (default), `1568x1056`, `1056x1568`, `1472x1088`, `1088x1472`,\n`1728x960`, `960x1728` — portrait prompts should pick a portrait size, or the\nserver default gives a square.\n\n**Provider chain** (`provider: \"auto\"` tries in order; pin one to skip):\n\n| Provider | Upstream | Auth | Notes |\n|---|---|---|---|\n| `gemini` (default) | gemini.google.com web tier | none (guest) or `GEMINI_WEB_SECURE_1PSID` | currently refused to non-browser clients (server-side TLS-fingerprint gate, verified 2026-09-14) — `zai` is the working path |\n| `chatgpt` | `chatgpt.com/backend-api/codex/responses` (Codex surface, ChatGPT subscription) | `CHATGPT_WEB_AUTH_KEY` / `codex login` / Pi auth.json | the `image_generation` Responses tool — same gpt-image family as chatgpt.com/images/; bills the metered Codex-usage bucket |\n| `zai` | `https://api.z.ai/api/paas/v4` (official API) | `ZAI_API_KEY` | GLM-Image (`model` default), fully ToS-compliant |\n| `custom` | any OpenAI-compatible `/images/generations` endpoint | `WEB_IMAGE_API_KEY` | e.g. official OpenAI `https://api.openai.com/v1` |\n\nResults are saved to `out_dir` (default: fresh temp dir) and returned as file\npaths **plus inline image blocks** (multimodal models see the render\nimmediately). `details` reports the winning provider, model, and fallback\nattempts.\n\n`n` (1–4) applies to the API providers (`zai`/`custom`, and `chatgpt` — one\nimage per call, sequentially); the Gemini web tier returns its own image\ncount (surfaced as a provider note when fewer than `n`).\n\n**Guardrails** (soft, in-memory): per-provider `WEB_IMAGE_MIN_INTERVAL_MS`\n(default 5 s) and a `WEB_IMAGE_DAILY_CAP` (default 20/day, applied to the\nGemini web tier **and** the ChatGPT web provider — the latter bills the\nsubscription's metered Codex-usage bucket; keyed APIs are billed upstream\nand stay uncapped). Counters reset on restart;\n`web_status.imageProviders.rate` shows usage.\n\n⚠️ **ToS reality (read once)**: *every* AI chatbot's terms prohibit automated\naccess to its web UI (Google, OpenAI, xAI \"unauthorized automated or\nnon-human means\", Z.ai alike). This tool therefore follows a risk ladder:\n\n1. **Official APIs** (`zai`, `custom`) — fully compliant; prefer them when a key exists.\n2. **Guest mode** (Gemini without a cookie) — no account at stake, lowest risk, Flash-tier.\n3. **Personal cookie** (Gemini authed) — your own account, single session, low volume; same accepted-risk stance as the web bridges: use a burner/low-value account, never a valued one. No account pools, no commercial use, keep volume human-scale.\n\nSmoke test: `npx tsx extensions/scripts/gemini-smoke.ts \"a red cube on white background\" image`\n(or `… zai` for the Z.ai path, `… chatgpt-image` for the ChatGPT web path).\n\n### `web_chat` — ChatGPT web / one-off gateway chat\n\nSingle non-streaming chat completion — via the **ChatGPT web tier** (your\nsubscription, through the same `backend-api/codex/responses` surface the\nCodex CLI uses) or any OpenAI-compatible gateway. The in-session equivalent\nof \"ask another model quickly\" without switching your main provider:\n\n```\nweb_chat(prompt=\"In one sentence: why is idempotency key needed here?\")\nweb_chat(prompt=\"Summarize\", provider=\"chatgpt\", model=\"gpt-5.5\", system=\"Be terse\")\nweb_chat(prompt=\"Summarize\", provider=\"gateway\", model=\"gpt-5.3-mini\")\n```\n\n**ChatGPT web provider** (`provider: \"chatgpt\"`, the default when a\ncredential is found): credential resolution order is `CHATGPT_WEB_AUTH_KEY`\n(the tokens JSON from `codex login`'s `~/.codex/auth.json`, or a bare\naccess-token JWT) → `CHATGPT_WEB_CODEX_AUTH`/`~/.codex/auth.json` → Pi\nauth.json `openai-codex`. Expired tokens auto-refresh via\n`auth.openai.com` (rotated tokens persist back to the codex file, or to\n`~/.pi/agent/chatgpt-web-auth.json` when the source is read-only). The\nliteral chatgpt.com web UI is Cloudflare-Turnstile-gated and unreachable\nheadless — this surface is the reachable headless path on the same\nsubscription, and it bills the metered Codex-usage limits (the 5-hour/\nweekly windows pi-sub displays), not the general chat quota. Image requests\non the free plan typically answer `429 The usage limit has been reached`.\n\n**Gateway provider** (`provider: \"gateway\"`) — configure once in\n`~/.pi/agent/.env.local`, then restart pi:\n\n```bash\nWEB_CHAT_API_BASE_URL=https://api.openai.com/v1   # or any OpenAI-compatible gateway\nWEB_CHAT_API_KEY=sk-...                           # if the gateway needs a key\n```\n\n`web_status.webChat` / `web_status.chatgptWeb` show configuration without\nprinting secrets. Chat-only by design (no tool calling); for grounded\nresearch with sources use `web_research`, and `/model` switches your main\nmodel.\n\nSmoke test: `npx tsx extensions/scripts/gemini-smoke.ts x chatgpt-auth`,\n`… \"reply pong\" chatgpt`.\n\n## Library structure\n\n| Module | Contents |\n|--------|----------|\n| `lib/config.ts` | Environment loading, config helpers for all providers |\n| `lib/format.ts` | Text sanitization, truncation, crawl/scrape result formatting |\n| `lib/content.ts` | Readable content extraction (JSDOM + Readability + Turndown) |\n| `lib/retry.ts` | Retry with exponential backoff for transient HTTP failures |\n| `lib/brave.ts` | Brave Search API fetch client (internal) |\n| `lib/searxng.ts` | SearXNG metasearch fetch client (internal) |\n| `lib/firecrawl.ts` | Firecrawl API fetch client (internal) |\n| `lib/crawl4ai.ts` | Crawl4AI Docker API fetch client (internal) |\n| `lib/chrome.ts` | Local headless Chrome capture for localhost/private/file:// URLs the Crawl4AI daemon can't reach |\n| `lib/cdp.ts` | Minimal Chrome DevTools Protocol client over Node's native WebSocket — powers `web_interact` |\n| `lib/chatapi.ts` | Generic OpenAI-compatible chat client for `web_chat` (custom gateway endpoint) |\n| `lib/chatgpt.ts` | Direct ChatGPT web-tier client — chat + image generation via the Codex backend surface |\n| `lib/gemini.ts` | Gemini web-tier research backend, cookie-authed via `__Secure-1PSID` |\n| `lib/gemini-auth.ts` | Gemini web cookie auto-refresh — rotates `__Secure-1PSIDTS` on a 10-min keepalive |\n| `lib/gemini-dr.ts` | Pure-Node Deep Research client for gemini.google.com (plan → confirm → poll) |\n| `lib/imageapi.ts` | Generic OpenAI-compatible images client + fallback chain for `web_image` (zai, custom) |\n| `lib/agy.ts` | agy (Antigravity CLI) spawn helper — `read_url` extraction via Gemini/Claude |\n| `lib/search.ts` | Unified search orchestrator — probes backends, fallback chain |\n| `lib/extract.ts` | Unified extraction orchestrator — mode-based backend selection |\n\n## Migration from 0.3.x\n\nv0.4 replaces the 14 individual backend-specific tools with 7 unified tools:\n\n| v0.3 tool | v0.4 replacement |\n|---|---|\n| `brave_search` | `web_search` with `backend: \"brave\"` |\n| `searxng_search` | `web_search` with `backend: \"searxng\"` |\n| `firecrawl_search` | `web_search` with `backend: \"firecrawl\"` |\n| `web_content` | `web_extract` with `mode: \"static\"` |\n| `firecrawl_scrape` | `web_extract` with `mode: \"dynamic\"` |\n| `crawl4ai_scrape` | `web_extract` with `mode: \"full\"` |\n| `firecrawl_map` | `web_map` (same behavior) |\n| `firecrawl_crawl` | `web_crawl` with `mode: \"light\"` |\n| `crawl4ai_crawl` | `web_crawl` with `mode: \"full\"` |\n| `crawl4ai_stream` | (removed — use `web_crawl` with `mode: \"full\"`) |\n| `crawl4ai_screenshot` | `web_screenshot` (same behavior) |\n| `crawl4ai_pdf` | `web_pdf` (same behavior) |\n| `crawl4ai_status` | Merged into `web_status` |\n| `web_status` | `web_status` (enhanced with Crawl4AI health) |\n\nAll v0.3 tool names were removed in v0.4. Update any agent instructions or skills that reference the old names.\n\n## Changelog\n\nSee [CHANGELOG.md](CHANGELOG.md) for release history.\n\n## Development\n\n```bash\n# Run all tests\nnpm test\n```\n","readmeFilename":"README.md"}