{"_id":"@aipexstudio/browser-runtime","_rev":"12-b7c22171f5b568e1db3f0fd71ca3d098","name":"@aipexstudio/browser-runtime","dist-tags":{"latest":"0.1.0"},"versions":{"0.0.6":{"name":"@aipexstudio/browser-runtime","version":"0.0.6","author":{"name":"AIPex Studio"},"license":"MIT","_id":"@aipexstudio/browser-runtime@0.0.6","maintainers":[{"name":"ropzislaw","email":"buttercanbentley@gmail.com"}],"homepage":"https://github.com/AIPexStudio/AIPex#readme","bugs":{"url":"https://github.com/AIPexStudio/AIPex/issues"},"dist":{"shasum":"8968920234157706e06981cad3bcb8af3ee5ce3f","tarball":"https://registry.npmjs.org/@aipexstudio/browser-runtime/-/browser-runtime-0.0.6.tgz","fileCount":112,"integrity":"sha512-tOCeiElyC0OmWJEY0D+1l0NXxE45WhqIDTsn9AU1SQ7Mc2wYQKl5+H0Mv4pQ/yWwppnzVMM0Y8LwJVd9s4vBIw==","signatures":[{"sig":"MEYCIQD09fU4BQmllnf1MDAwe7Q3Qw51eVEpm0Qcz5w4qXCg5wIhAKBzN17auXFjoGbS1/BCAGGtPHVW86HF5GGqMTbAAHsn","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aipexstudio%2fbrowser-runtime@0.0.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":367257},"main":"./dist/src/index.js","type":"module","_from":"file:aipexstudio-browser-runtime-0.0.6.tgz","types":"./dist/src/index.d.ts","exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js"}},"scripts":{"build":"tsc -b","typecheck":"tsc --project tsconfig.json"},"_npmUser":{"name":"ropzislaw","email":"buttercanbentley@gmail.com"},"_resolved":"/tmp/31480428ae1add95c0ed7eafedf02cdf/aipexstudio-browser-runtime-0.0.6.tgz","_integrity":"sha512-tOCeiElyC0OmWJEY0D+1l0NXxE45WhqIDTsn9AU1SQ7Mc2wYQKl5+H0Mv4pQ/yWwppnzVMM0Y8LwJVd9s4vBIw==","repository":{"url":"git+https://github.com/AIPexStudio/AIPex.git","type":"git"},"_npmVersion":"11.6.2","description":"Browser automation runtime, context providers, and extension host contracts for AIPex","directories":{},"_nodeVersion":"24.12.0","dependencies":{"zod":"^4.1.13","nanoid":"^5.1.6","p-limit":"^6.1.0","@aipexstudio/aipex-core":"0.0.6"},"_hasShrinkwrap":false,"devDependencies":{"@types/react":"19.2.7"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","@types/chrome":"^0.1.0"},"peerDependenciesMeta":{"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/browser-runtime_0.0.6_1767697134097_0.6527272170505742","host":"s3://npm-registry-packages-npm-production"}},"0.0.7":{"name":"@aipexstudio/browser-runtime","version":"0.0.7","author":{"name":"AIPex Studio"},"license":"MIT","_id":"@aipexstudio/browser-runtime@0.0.7","maintainers":[{"name":"ropzislaw","email":"buttercanbentley@gmail.com"}],"homepage":"https://github.com/AIPexStudio/AIPex#readme","bugs":{"url":"https://github.com/AIPexStudio/AIPex/issues"},"dist":{"shasum":"5beabf3121899d94f59008aa86bf8f2452402b95","tarball":"https://registry.npmjs.org/@aipexstudio/browser-runtime/-/browser-runtime-0.0.7.tgz","fileCount":112,"integrity":"sha512-HGfnrRFCaPOqO91dc2dH+BmyoqPIJtMAzCl0zGQ0z245csfGw5FuV26QDoEfGcyga4LrHcFMC4kmz+1fWrJ1mg==","signatures":[{"sig":"MEUCICdlutYPxSXVdGPHUGAcow5OWpmKJYQzcfzKNz3BCaHZAiEAmnbHT803j44Sj+IFeaQH7Vxkw58aybQs3b4q0TDKCgM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aipexstudio%2fbrowser-runtime@0.0.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":367257},"main":"./dist/src/index.js","type":"module","_from":"file:aipexstudio-browser-runtime-0.0.7.tgz","types":"./dist/src/index.d.ts","exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js"}},"scripts":{"build":"tsc -b","typecheck":"tsc --project tsconfig.json"},"_npmUser":{"name":"ropzislaw","email":"buttercanbentley@gmail.com"},"_resolved":"/tmp/36eb882818b3427b67fea5ce3455e074/aipexstudio-browser-runtime-0.0.7.tgz","_integrity":"sha512-HGfnrRFCaPOqO91dc2dH+BmyoqPIJtMAzCl0zGQ0z245csfGw5FuV26QDoEfGcyga4LrHcFMC4kmz+1fWrJ1mg==","repository":{"url":"git+https://github.com/AIPexStudio/AIPex.git","type":"git"},"_npmVersion":"11.6.2","description":"Browser automation runtime, context providers, and extension host contracts for AIPex","directories":{},"_nodeVersion":"24.12.0","dependencies":{"zod":"^4.1.13","nanoid":"^5.1.6","p-limit":"^6.1.0","@aipexstudio/aipex-core":"0.0.7"},"_hasShrinkwrap":false,"devDependencies":{"@types/react":"19.2.7"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","@types/chrome":"^0.1.0"},"peerDependenciesMeta":{"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/browser-runtime_0.0.7_1767797134239_0.9971592423264186","host":"s3://npm-registry-packages-npm-production"}},"0.0.8":{"name":"@aipexstudio/browser-runtime","version":"0.0.8","author":{"name":"AIPex Studio"},"license":"MIT","_id":"@aipexstudio/browser-runtime@0.0.8","maintainers":[{"name":"ropzislaw","email":"buttercanbentley@gmail.com"}],"homepage":"https://github.com/AIPexStudio/AIPex#readme","bugs":{"url":"https://github.com/AIPexStudio/AIPex/issues"},"dist":{"shasum":"3541d0515263ce607e2325522164f470ed4029ba","tarball":"https://registry.npmjs.org/@aipexstudio/browser-runtime/-/browser-runtime-0.0.8.tgz","fileCount":112,"integrity":"sha512-jIhrmghBMw0j4uVNmpnZGDQFi4qjysyMl4bG6Kj6jus2S/wIGVeG1NBDfSmEUl7zpOzfpXEoL0QzGhfhJCpKTQ==","signatures":[{"sig":"MEQCID+GJxFba6gvu4jO0iDFUrkZxM9AZexoa7ZG3+KWXmtBAiB2slBh7eBdoYXbtL16bgveAGRKEdiZHes8dH/ay/U3pQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aipexstudio%2fbrowser-runtime@0.0.8","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":367257},"main":"./dist/src/index.js","type":"module","_from":"file:aipexstudio-browser-runtime-0.0.8.tgz","types":"./dist/src/index.d.ts","exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js"}},"scripts":{"build":"tsc -b","typecheck":"tsc --project tsconfig.json"},"_npmUser":{"name":"ropzislaw","email":"buttercanbentley@gmail.com"},"_resolved":"/tmp/106777334adecc82f9fcf5ec5128ae6e/aipexstudio-browser-runtime-0.0.8.tgz","_integrity":"sha512-jIhrmghBMw0j4uVNmpnZGDQFi4qjysyMl4bG6Kj6jus2S/wIGVeG1NBDfSmEUl7zpOzfpXEoL0QzGhfhJCpKTQ==","repository":{"url":"git+https://github.com/AIPexStudio/AIPex.git","type":"git"},"_npmVersion":"11.6.2","description":"Browser automation runtime, context providers, and extension host contracts for AIPex","directories":{},"_nodeVersion":"24.12.0","dependencies":{"zod":"^4.1.13","nanoid":"^5.1.6","p-limit":"^6.1.0","@aipexstudio/aipex-core":"0.0.8"},"_hasShrinkwrap":false,"devDependencies":{"@types/react":"19.2.7"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","@types/chrome":"^0.1.0"},"peerDependenciesMeta":{"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/browser-runtime_0.0.8_1767846537164_0.9972463011152366","host":"s3://npm-registry-packages-npm-production"}},"0.0.9":{"name":"@aipexstudio/browser-runtime","version":"0.0.9","author":{"name":"AIPex Studio"},"license":"MIT","_id":"@aipexstudio/browser-runtime@0.0.9","maintainers":[{"name":"ropzislaw","email":"buttercanbentley@gmail.com"}],"homepage":"https://github.com/AIPexStudio/AIPex#readme","bugs":{"url":"https://github.com/AIPexStudio/AIPex/issues"},"dist":{"shasum":"d10372f34d598219b0d320e0a5c5e4126e259ce2","tarball":"https://registry.npmjs.org/@aipexstudio/browser-runtime/-/browser-runtime-0.0.9.tgz","fileCount":112,"integrity":"sha512-Q2X8FW4PahCOVjAWmQ5XP4KsM909W4z1Kthbxa5ol3XjljZ1Yy/wRZXlYFWA0jxVRtkmKKEWwMcNDv3RNmnuTw==","signatures":[{"sig":"MEYCIQDvmEYMTk+74yovJ8VGOf8a7ZWFkjNVztyvTBfd+RYbigIhAKtTyUToqvW/V53kby17++pItWG8UyzfDelcAD0fNKXY","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aipexstudio%2fbrowser-runtime@0.0.9","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":367257},"main":"./dist/src/index.js","type":"module","_from":"file:aipexstudio-browser-runtime-0.0.9.tgz","types":"./dist/src/index.d.ts","exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js"}},"scripts":{"build":"tsc -b","typecheck":"tsc --project tsconfig.json"},"_npmUser":{"name":"ropzislaw","email":"buttercanbentley@gmail.com"},"_resolved":"/tmp/f4ac3e1e233d9b236070a4410c625bbb/aipexstudio-browser-runtime-0.0.9.tgz","_integrity":"sha512-Q2X8FW4PahCOVjAWmQ5XP4KsM909W4z1Kthbxa5ol3XjljZ1Yy/wRZXlYFWA0jxVRtkmKKEWwMcNDv3RNmnuTw==","repository":{"url":"git+https://github.com/AIPexStudio/AIPex.git","type":"git"},"_npmVersion":"11.6.2","description":"Browser automation runtime, context providers, and extension host contracts for AIPex","directories":{},"_nodeVersion":"24.12.0","dependencies":{"zod":"^4.1.13","nanoid":"^5.1.6","p-limit":"^6.1.0","@aipexstudio/aipex-core":"0.0.9"},"_hasShrinkwrap":false,"devDependencies":{"@types/react":"19.2.7"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","@types/chrome":"^0.1.0"},"peerDependenciesMeta":{"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/browser-runtime_0.0.9_1767851856722_0.3059777280486269","host":"s3://npm-registry-packages-npm-production"}},"0.0.10":{"name":"@aipexstudio/browser-runtime","version":"0.0.10","author":{"name":"AIPex Studio"},"license":"MIT","_id":"@aipexstudio/browser-runtime@0.0.10","maintainers":[{"name":"ropzislaw","email":"buttercanbentley@gmail.com"}],"homepage":"https://github.com/AIPexStudio/AIPex#readme","bugs":{"url":"https://github.com/AIPexStudio/AIPex/issues"},"dist":{"shasum":"1319251a37bb36dac5a7242d001812e38883074a","tarball":"https://registry.npmjs.org/@aipexstudio/browser-runtime/-/browser-runtime-0.0.10.tgz","fileCount":112,"integrity":"sha512-ph7dLtzOv701XDUXekLV50YZRUyls/htqrKerro67jBAltRdDsWQgcL4MFBbzQXaJCLq61oJd+U9f5y/owcf/Q==","signatures":[{"sig":"MEYCIQCr32Z0yUyLTElCrEBktb1RumHgFsaStHKD8qiyKyvQQgIhAKo5Cy7OWnnNuKi4SiOyivkGZlBHZkt8xuGVDv9JYteP","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aipexstudio%2fbrowser-runtime@0.0.10","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":367259},"main":"./dist/src/index.js","type":"module","_from":"file:aipexstudio-browser-runtime-0.0.10.tgz","types":"./dist/src/index.d.ts","exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js"}},"scripts":{"build":"tsc -b","typecheck":"tsc --project tsconfig.json"},"_npmUser":{"name":"ropzislaw","email":"buttercanbentley@gmail.com"},"_resolved":"/tmp/0da085f9fbaa0c010c97e77aef0e7a00/aipexstudio-browser-runtime-0.0.10.tgz","_integrity":"sha512-ph7dLtzOv701XDUXekLV50YZRUyls/htqrKerro67jBAltRdDsWQgcL4MFBbzQXaJCLq61oJd+U9f5y/owcf/Q==","repository":{"url":"git+https://github.com/AIPexStudio/AIPex.git","type":"git"},"_npmVersion":"11.6.2","description":"Browser automation runtime, context providers, and extension host contracts for AIPex","directories":{},"_nodeVersion":"24.12.0","dependencies":{"zod":"^4.1.13","nanoid":"^5.1.6","p-limit":"^6.1.0","@aipexstudio/aipex-core":"0.0.10"},"_hasShrinkwrap":false,"devDependencies":{"@types/react":"19.2.7"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","@types/chrome":"^0.1.0"},"peerDependenciesMeta":{"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/browser-runtime_0.0.10_1767852816573_0.519341467907322","host":"s3://npm-registry-packages-npm-production"}},"0.0.11":{"name":"@aipexstudio/browser-runtime","version":"0.0.11","author":{"name":"AIPex Studio"},"license":"MIT","_id":"@aipexstudio/browser-runtime@0.0.11","maintainers":[{"name":"ropzislaw","email":"buttercanbentley@gmail.com"}],"homepage":"https://github.com/AIPexStudio/AIPex#readme","bugs":{"url":"https://github.com/AIPexStudio/AIPex/issues"},"dist":{"shasum":"d4848a87c01a76601f4f5db3d34987fe747923df","tarball":"https://registry.npmjs.org/@aipexstudio/browser-runtime/-/browser-runtime-0.0.11.tgz","fileCount":112,"integrity":"sha512-FpmSxWOi9GPrMfXP0Gn6Vxfq6RY7o9Xn3eifv+ubI91sojkbxucsYZ2/pfRY/D0zI3hA1fA9dKQtGTmovxE0og==","signatures":[{"sig":"MEQCIEJst/Gusuk8Yn1vQ4p9387yXVCQOHcPTiAOXqAfQEk9AiACRP+7MOfKTNxXXeLacRTKxXhsR+gWjzdRNZhDS8+8Wg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aipexstudio%2fbrowser-runtime@0.0.11","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":367259},"main":"./dist/src/index.js","type":"module","_from":"file:aipexstudio-browser-runtime-0.0.11.tgz","types":"./dist/src/index.d.ts","exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js"}},"scripts":{"build":"tsc -b","typecheck":"tsc --project tsconfig.json"},"_npmUser":{"name":"ropzislaw","email":"buttercanbentley@gmail.com"},"_resolved":"/tmp/217ceaff2b289586eaeaf3f6e51edc1b/aipexstudio-browser-runtime-0.0.11.tgz","_integrity":"sha512-FpmSxWOi9GPrMfXP0Gn6Vxfq6RY7o9Xn3eifv+ubI91sojkbxucsYZ2/pfRY/D0zI3hA1fA9dKQtGTmovxE0og==","repository":{"url":"git+https://github.com/AIPexStudio/AIPex.git","type":"git"},"_npmVersion":"11.6.2","description":"Browser automation runtime, context providers, and extension host contracts for AIPex","directories":{},"_nodeVersion":"24.12.0","dependencies":{"zod":"^4.1.13","nanoid":"^5.1.6","p-limit":"^6.1.0","@aipexstudio/aipex-core":"0.0.11"},"_hasShrinkwrap":false,"devDependencies":{"@types/react":"19.2.7"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","@types/chrome":"^0.1.0"},"peerDependenciesMeta":{"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/browser-runtime_0.0.11_1767856883119_0.5082480363240336","host":"s3://npm-registry-packages-npm-production"}},"0.0.12":{"name":"@aipexstudio/browser-runtime","version":"0.0.12","author":{"name":"AIPex Studio"},"license":"MIT","_id":"@aipexstudio/browser-runtime@0.0.12","maintainers":[{"name":"ropzislaw","email":"buttercanbentley@gmail.com"}],"homepage":"https://github.com/AIPexStudio/AIPex#readme","bugs":{"url":"https://github.com/AIPexStudio/AIPex/issues"},"dist":{"shasum":"30d323d4a86e7de70b4e6f912924bba31154da67","tarball":"https://registry.npmjs.org/@aipexstudio/browser-runtime/-/browser-runtime-0.0.12.tgz","fileCount":112,"integrity":"sha512-A3kZmTbwg4z/+sQhcyUnJ8i8gXzdhQPSRLSwn0fcx7GTjrQBqaqHEzEnRlstkGEAj8unrZ25LIFfA+0BbU167A==","signatures":[{"sig":"MEQCIAmnXl2wrkzPIbiqWIJWx63VcL+2UUc39kfIw8r1G8YuAiBZuOZB7KJyEV1CpDVOXrr7Xddw5ixu4tMV2MB2cksSNw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aipexstudio%2fbrowser-runtime@0.0.12","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":367259},"main":"./dist/src/index.js","type":"module","_from":"file:aipexstudio-browser-runtime-0.0.12.tgz","types":"./dist/src/index.d.ts","exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js"}},"scripts":{"build":"tsc -b","typecheck":"tsc --project tsconfig.json"},"_npmUser":{"name":"ropzislaw","email":"buttercanbentley@gmail.com"},"_resolved":"/tmp/51604fb0b0e2049c14e0487e102afdaa/aipexstudio-browser-runtime-0.0.12.tgz","_integrity":"sha512-A3kZmTbwg4z/+sQhcyUnJ8i8gXzdhQPSRLSwn0fcx7GTjrQBqaqHEzEnRlstkGEAj8unrZ25LIFfA+0BbU167A==","repository":{"url":"git+https://github.com/AIPexStudio/AIPex.git","type":"git"},"_npmVersion":"11.6.2","description":"Browser automation runtime, context providers, and extension host contracts for AIPex","directories":{},"_nodeVersion":"24.12.0","dependencies":{"zod":"^4.1.13","nanoid":"^5.1.6","p-limit":"^6.1.0","@aipexstudio/aipex-core":"0.0.12"},"_hasShrinkwrap":false,"devDependencies":{"@types/react":"19.2.7"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","@types/chrome":"^0.1.0"},"peerDependenciesMeta":{"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/browser-runtime_0.0.12_1767860281116_0.9270096254421645","host":"s3://npm-registry-packages-npm-production"}},"0.0.13":{"name":"@aipexstudio/browser-runtime","version":"0.0.13","author":{"name":"AIPex Studio"},"license":"MIT","_id":"@aipexstudio/browser-runtime@0.0.13","maintainers":[{"name":"ropzislaw","email":"buttercanbentley@gmail.com"}],"homepage":"https://github.com/AIPexStudio/AIPex#readme","bugs":{"url":"https://github.com/AIPexStudio/AIPex/issues"},"dist":{"shasum":"682f157f3095a5b2fa057eaacbc18e0c75d88e4a","tarball":"https://registry.npmjs.org/@aipexstudio/browser-runtime/-/browser-runtime-0.0.13.tgz","fileCount":112,"integrity":"sha512-mrVWIQyZJKLIqnEDeTfRvmXOIOW0yE6AOMqZmHUHa1UDXwV0bKrW7AzNI8kcPmTjKv3EgdLzLQBoXZtSS38gYQ==","signatures":[{"sig":"MEUCIQCMlg+llZAUZwDHCvgXmH9tK+QApJqR819pL7DsHa9cFgIgSu9DPFQv2+r3Qx7s2pt+2Pxulm8BWg4sHi1Qn2t5OUY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aipexstudio%2fbrowser-runtime@0.0.13","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":367259},"main":"./dist/src/index.js","type":"module","_from":"file:aipexstudio-browser-runtime-0.0.13.tgz","types":"./dist/src/index.d.ts","exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js"}},"scripts":{"build":"tsc -b","typecheck":"tsc --project tsconfig.json"},"_npmUser":{"name":"ropzislaw","email":"buttercanbentley@gmail.com"},"_resolved":"/tmp/754977223109dccffaec8493c33412ba/aipexstudio-browser-runtime-0.0.13.tgz","_integrity":"sha512-mrVWIQyZJKLIqnEDeTfRvmXOIOW0yE6AOMqZmHUHa1UDXwV0bKrW7AzNI8kcPmTjKv3EgdLzLQBoXZtSS38gYQ==","repository":{"url":"git+https://github.com/AIPexStudio/AIPex.git","type":"git"},"_npmVersion":"11.6.2","description":"Browser automation runtime, context providers, and extension host contracts for AIPex","directories":{},"_nodeVersion":"24.12.0","dependencies":{"zod":"^4.1.13","nanoid":"^5.1.6","p-limit":"^6.1.0","@aipexstudio/aipex-core":"0.0.13"},"_hasShrinkwrap":false,"devDependencies":{"@types/react":"19.2.7"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","@types/chrome":"^0.1.0"},"peerDependenciesMeta":{"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/browser-runtime_0.0.13_1767862477490_0.594750300248968","host":"s3://npm-registry-packages-npm-production"}},"0.0.14":{"name":"@aipexstudio/browser-runtime","version":"0.0.14","author":{"name":"AIPex Studio"},"license":"MIT","_id":"@aipexstudio/browser-runtime@0.0.14","maintainers":[{"name":"ropzislaw","email":"buttercanbentley@gmail.com"}],"homepage":"https://github.com/AIPexStudio/AIPex#readme","bugs":{"url":"https://github.com/AIPexStudio/AIPex/issues"},"dist":{"shasum":"634a37380db35f6ac0c53c4bc504b474e85979fd","tarball":"https://registry.npmjs.org/@aipexstudio/browser-runtime/-/browser-runtime-0.0.14.tgz","fileCount":112,"integrity":"sha512-aD7eBVIQdouwtRiAdiyJ+61PhVgNiS26vzRRa81YKhKqZRJdjF2WfsyjsSHlclIjmpcyXBgD1oy4mLu7kRI+bQ==","signatures":[{"sig":"MEUCIHGDtdFCpKPFfhtrbADM1Y0vCftNeznZ1tSO1eC11A7HAiEA79zA9ed14fSBRrA7vPadbQvZGn+IAtKJjJxjXWKGWbg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aipexstudio%2fbrowser-runtime@0.0.14","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":367259},"main":"./dist/src/index.js","type":"module","_from":"file:aipexstudio-browser-runtime-0.0.14.tgz","types":"./dist/src/index.d.ts","exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js"}},"scripts":{"build":"tsc -b","typecheck":"tsc --project tsconfig.json"},"_npmUser":{"name":"ropzislaw","email":"buttercanbentley@gmail.com"},"_resolved":"/tmp/0b29b8ab3a91a2edc6dc4795bdae9fae/aipexstudio-browser-runtime-0.0.14.tgz","_integrity":"sha512-aD7eBVIQdouwtRiAdiyJ+61PhVgNiS26vzRRa81YKhKqZRJdjF2WfsyjsSHlclIjmpcyXBgD1oy4mLu7kRI+bQ==","repository":{"url":"git+https://github.com/AIPexStudio/AIPex.git","type":"git"},"_npmVersion":"11.6.2","description":"Browser automation runtime, context providers, and extension host contracts for AIPex","directories":{},"_nodeVersion":"24.12.0","dependencies":{"zod":"^4.1.13","nanoid":"^5.1.6","p-limit":"^6.1.0","@aipexstudio/aipex-core":"0.0.14"},"_hasShrinkwrap":false,"devDependencies":{"@types/react":"19.2.7"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","@types/chrome":"^0.1.0"},"peerDependenciesMeta":{"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/browser-runtime_0.0.14_1767873361957_0.7629415966548287","host":"s3://npm-registry-packages-npm-production"}},"0.0.15":{"name":"@aipexstudio/browser-runtime","version":"0.0.15","author":{"name":"AIPex Studio"},"license":"MIT","_id":"@aipexstudio/browser-runtime@0.0.15","maintainers":[{"name":"ropzislaw","email":"buttercanbentley@gmail.com"}],"homepage":"https://github.com/AIPexStudio/AIPex#readme","bugs":{"url":"https://github.com/AIPexStudio/AIPex/issues"},"dist":{"shasum":"2b5bea487d30c116e96a0500777b2e7a71b81df9","tarball":"https://registry.npmjs.org/@aipexstudio/browser-runtime/-/browser-runtime-0.0.15.tgz","fileCount":113,"integrity":"sha512-RIgXJ7M91FBycUgbNgAZTP3J3n5+z81fN4wTae2GbDsLteqsb1/Rvn2g5oA5QsXtG/DmWsSMd0nWzGUraBQ5aA==","signatures":[{"sig":"MEYCIQDvjoWqlPrinhUEBupZnl6wKig44xP18loGY7kdNzrLvAIhAPPV4JqJlgkN5m/BO1shL+Jt3WhC7EsxoOVVfffagqcl","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aipexstudio%2fbrowser-runtime@0.0.15","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":373884},"main":"./dist/src/index.js","type":"module","_from":"file:aipexstudio-browser-runtime-0.0.15.tgz","types":"./dist/src/index.d.ts","exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js"}},"scripts":{"build":"tsc -b","typecheck":"tsc --project tsconfig.json"},"_npmUser":{"name":"ropzislaw","email":"buttercanbentley@gmail.com"},"_resolved":"/tmp/5c42ee9461268ce26e1cc54f72e3abf3/aipexstudio-browser-runtime-0.0.15.tgz","_integrity":"sha512-RIgXJ7M91FBycUgbNgAZTP3J3n5+z81fN4wTae2GbDsLteqsb1/Rvn2g5oA5QsXtG/DmWsSMd0nWzGUraBQ5aA==","repository":{"url":"git+https://github.com/AIPexStudio/AIPex.git","type":"git"},"_npmVersion":"11.6.2","description":"Browser automation runtime, context providers, and extension host contracts for AIPex","directories":{},"_nodeVersion":"24.12.0","dependencies":{"zod":"^4.1.13","nanoid":"^5.1.6","p-limit":"^6.1.0","@aipexstudio/aipex-core":"0.0.15"},"_hasShrinkwrap":false,"devDependencies":{"@types/react":"19.2.8"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","@types/chrome":"^0.1.0"},"peerDependenciesMeta":{"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/browser-runtime_0.0.15_1768239362933_0.9239346695993922","host":"s3://npm-registry-packages-npm-production"}},"0.0.16":{"name":"@aipexstudio/browser-runtime","version":"0.0.16","author":{"name":"AIPex Studio"},"license":"MIT","_id":"@aipexstudio/browser-runtime@0.0.16","maintainers":[{"name":"ropzislaw","email":"buttercanbentley@gmail.com"}],"homepage":"https://github.com/AIPexStudio/AIPex#readme","bugs":{"url":"https://github.com/AIPexStudio/AIPex/issues"},"dist":{"shasum":"ab943458a828320bd469ff9443544202e3e88221","tarball":"https://registry.npmjs.org/@aipexstudio/browser-runtime/-/browser-runtime-0.0.16.tgz","fileCount":113,"integrity":"sha512-tNumP3qoLhJujlQkbtslbDLkTNH3NW4+UBJ7yu0VuwwPw8ca+vo6A6Yb4M7DH2uf8CN7TBBy99E1Tw/+5OKBUA==","signatures":[{"sig":"MEUCIGyw/BiH4hRJS5ZouIRFt9Qz9xp8No07ZTfCJUnbKaMIAiEAnAMLK1kFdFwCrdpFHf6riPS6JkhlcM5YZZT9rNSiWuc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aipexstudio%2fbrowser-runtime@0.0.16","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":373884},"main":"./dist/src/index.js","type":"module","_from":"file:aipexstudio-browser-runtime-0.0.16.tgz","types":"./dist/src/index.d.ts","exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js"}},"scripts":{"build":"tsc -b","typecheck":"tsc --project tsconfig.json"},"_npmUser":{"name":"ropzislaw","email":"buttercanbentley@gmail.com"},"_resolved":"/tmp/8de06ff5cff4ee4471e34055f24969a4/aipexstudio-browser-runtime-0.0.16.tgz","_integrity":"sha512-tNumP3qoLhJujlQkbtslbDLkTNH3NW4+UBJ7yu0VuwwPw8ca+vo6A6Yb4M7DH2uf8CN7TBBy99E1Tw/+5OKBUA==","repository":{"url":"git+https://github.com/AIPexStudio/AIPex.git","type":"git"},"_npmVersion":"11.6.2","description":"Browser automation runtime, context providers, and extension host contracts for AIPex","directories":{},"_nodeVersion":"24.12.0","dependencies":{"zod":"^4.1.13","nanoid":"^5.1.6","p-limit":"^6.1.0","@aipexstudio/aipex-core":"0.0.16"},"_hasShrinkwrap":false,"devDependencies":{"@types/react":"19.2.8"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","@types/chrome":"^0.1.0"},"peerDependenciesMeta":{"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/browser-runtime_0.0.16_1768404874423_0.7821116909667605","host":"s3://npm-registry-packages-npm-production"}},"0.1.0":{"name":"@aipexstudio/browser-runtime","version":"0.1.0","description":"Browser automation runtime, context providers, and extension host contracts for AIPex","main":"./dist/src/index.js","types":"./dist/src/index.d.ts","repository":{"type":"git","url":"git+https://github.com/AIPexStudio/AIPex.git"},"exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js"},"./hooks":{"types":"./dist/src/hooks/index.d.ts","import":"./dist/src/hooks/index.js"}},"author":{"name":"AIPex Studio"},"license":"MIT","type":"module","dependencies":{"@jitl/quickjs-ng-wasmfile-release-sync":"^0.31.0","@zenfs/core":"^2.4.2","@zenfs/dom":"^1.2.5","fflate":"^0.8.2","nanoid":"^5.1.6","p-limit":"^7.3.0","quickjs-emscripten":"^0.32.0","zod":"^4.3.6","@aipexstudio/aipex-core":"0.1.0","@aipexstudio/dom-snapshot":"0.1.0"},"peerDependencies":{"@types/chrome":"^0.1.0","react":"^18.0.0 || ^19.0.0"},"peerDependenciesMeta":{"react":{"optional":true}},"devDependencies":{"@types/react":"19.2.14","puppeteer":"^24.37.5"},"scripts":{"build":"tsc -b","typecheck":"tsc --project tsconfig.json","test":"vitest run","test:watch":"vitest"},"_id":"@aipexstudio/browser-runtime@0.1.0","bugs":{"url":"https://github.com/AIPexStudio/AIPex/issues"},"homepage":"https://github.com/AIPexStudio/AIPex#readme","_integrity":"sha512-D0Cxyi2inYWqvfkn40KMKnZNzJHhwfqZKQIsB/esnkFZjD0RH/JFNNzKGOvHLLOpCLZCQFr7zpJGVrtrblRdVw==","_resolved":"/tmp/8db97c7be00f9999ce47069695e176cb/aipexstudio-browser-runtime-0.1.0.tgz","_from":"file:aipexstudio-browser-runtime-0.1.0.tgz","_nodeVersion":"24.14.0","_npmVersion":"11.9.0","dist":{"integrity":"sha512-D0Cxyi2inYWqvfkn40KMKnZNzJHhwfqZKQIsB/esnkFZjD0RH/JFNNzKGOvHLLOpCLZCQFr7zpJGVrtrblRdVw==","shasum":"555142d28f883091693337ffb8a2f6d5d83cbf2e","tarball":"https://registry.npmjs.org/@aipexstudio/browser-runtime/-/browser-runtime-0.1.0.tgz","fileCount":185,"unpackedSize":752711,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aipexstudio%2fbrowser-runtime@0.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDYY867nvJyNEapxbNPneW3z8sXl9HKnMPGcgOtcNChMAIgMbueEpY6yHD4NLOyJqJ1e8oBhXm5oQMH5ZiJZVNekBU="}]},"_npmUser":{"name":"ropzislaw","email":"buttercanbentley@gmail.com"},"directories":{},"maintainers":[{"name":"ropzislaw","email":"buttercanbentley@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/browser-runtime_0.1.0_1773226223327_0.9870448231475732"},"_hasShrinkwrap":false}},"time":{"created":"2026-01-06T10:58:53.289Z","modified":"2026-03-11T10:50:23.810Z","0.0.6":"2026-01-06T10:58:54.242Z","0.0.7":"2026-01-07T14:45:34.420Z","0.0.8":"2026-01-08T04:28:57.360Z","0.0.9":"2026-01-08T05:57:36.892Z","0.0.10":"2026-01-08T06:13:36.727Z","0.0.11":"2026-01-08T07:21:23.253Z","0.0.12":"2026-01-08T08:18:01.260Z","0.0.13":"2026-01-08T08:54:37.628Z","0.0.14":"2026-01-08T11:56:02.133Z","0.0.15":"2026-01-12T17:36:03.106Z","0.0.16":"2026-01-14T15:34:34.594Z","0.1.0":"2026-03-11T10:50:23.489Z"},"bugs":{"url":"https://github.com/AIPexStudio/AIPex/issues"},"author":{"name":"AIPex Studio"},"license":"MIT","homepage":"https://github.com/AIPexStudio/AIPex#readme","repository":{"type":"git","url":"git+https://github.com/AIPexStudio/AIPex.git"},"description":"Browser automation runtime, context providers, and extension host contracts for AIPex","maintainers":[{"name":"ropzislaw","email":"buttercanbentley@gmail.com"}],"readme":"# @aipexstudio/browser-runtime\n\nChrome/Chromium runtime implementations for `@aipexstudio/aipex-core`.\n\nThis package is where **browser-specific** code lives (Manifest V3 friendly). It provides:\n\n- **Browser tools** (`allBrowserTools`) for tab/page interaction\n- **Context providers** for common browser data sources (tabs, bookmarks, history, current page, screenshots)\n- **Storage adapters** for extension environments (`ChromeStorageAdapter`, `IndexedDBStorage`)\n- A CDP-based automation layer (via `chrome.debugger`) and related helpers\n- Runtime contracts used by the AIPex extension (hosts, addons, omni action registry)\n\n> Note: These APIs depend on `chrome.*` and/or `indexedDB`. They are not meant to run in plain Node.js.\n\n## Why a separate runtime package?\n\nAIPex is split into layers so each stays focused:\n\n- `@aipexstudio/aipex-core`: platform-agnostic agent + events + contexts + sessions\n- `@aipexstudio/browser-runtime`: Chrome/extension implementations (tools, providers, storage, automation)\n- `@aipexstudio/aipex-react`: React UI toolkit that depends only on core\n- `browser-ext`: the actual extension that wires everything together\n\n## Features\n\n### 1) `allBrowserTools` (32 tools)\n\n`allBrowserTools` is a curated bundle of `FunctionTool`s that an agent can call.\nIt includes:\n\n- **Tab management**: list/open/close, basic grouping helpers\n- **UI operations**: locate elements, click, hover, fill inputs/forms, computer tool\n- **Page content**: metadata, scrolling, highlighting\n- **Screenshots**: capture to data URL\n- **Downloads**: save images from the agent workflow\n- **Human-in-the-loop interventions**: request/cancel interventions\n- **Skills**: load/execute skill scripts\n\nTool names included (strings used for tool-calling):\n\n- Tabs (7): `get_all_tabs`, `get_current_tab`, `create_new_tab`, `get_tab_info`, `close_tab`, `organize_tabs`, `ungroup_tabs`\n- UI ops (7): `search_elements`, `click`, `fill_element_by_uid`, `get_editor_value`, `fill_form`, `hover_element_by_uid`, `computer`\n- Page (4): `get_page_metadata`, `scroll_to_element`, `highlight_element`, `highlight_text_inline`\n- Screenshot (2): `capture_screenshot`, `capture_tab_screenshot`\n- Download (2): `download_image`, `download_chat_images`\n- Interventions (4): `list_interventions`, `get_intervention_info`, `request_intervention`, `cancel_intervention`\n- Skills (6): `load_skill`, `execute_skill_script`, and 4 other skill tools\n\n**Disabled tools** (exist in code but not in default bundle):\n\n- `switch_to_tab`: causes context switching issues\n- `duplicate_tab`: not enabled\n- `wait`: deprecated, replaced by `computer` tool's wait action\n- `capture_screenshot_to_clipboard`: not enabled\n- `download_text_as_markdown`: not enabled\n- `download_current_chat_images`: architecture issue\n\n**Available but not registered by default** (can be imported separately):\n\n- Bookmarks: `list_bookmarks`, `search_bookmarks`, `create_bookmark`, `delete_bookmark`, etc. (`tools/bookmark.ts`)\n- History: `get_recent_history`, `search_history`, `delete_history_item`, `clear_history`, etc. (`tools/history.ts`)\n- Clipboard: `copy_to_clipboard`, `read_from_clipboard`, `copy_page_as_markdown`, etc. (`tools/tools/clipboard/`)\n- Window management: `get_all_windows`, `switch_to_window`, `create_new_window`, etc. (`tools/tools/window-management/`)\n- Sessions: `get_all_sessions`, `restore_session`, etc. (`tools/tools/sessions/`)\n- Extensions: `get_all_extensions`, `set_extension_enabled`, etc. (`tools/tools/extensions/`)\n- Context menus: `create_context_menu_item`, etc. (`tools/tools/context-menus/`)\n- Tab groups: `create_tab_group`, `get_all_tab_groups`, etc. (`tools/tools/tab-groups/`)\n\n> Note: `take_snapshot` exists but is intentionally not included in `allBrowserTools` because it is used internally.\n\n### 2) Default browser context providers\n\nThis package includes providers and a convenience registration helper:\n\n- `allBrowserProviders`\n- `registerDefaultBrowserContextProviders(manager)`\n\nProviders included by default:\n\n- `CurrentPageProvider`\n- `TabsProvider`\n- `BookmarksProvider`\n- `ScreenshotProvider`\n- `HistoryProvider`\n\n### 3) Storage adapters\n\n- `ChromeStorageAdapter<T>`: implements `KeyValueStorage<T>` using `chrome.storage`.\n  - Supports `\"local\"` and `\"sync\"` areas\n  - Falls back to `localStorage` when `chrome.storage` is unavailable (useful for non-extension dev)\n- `IndexedDBStorage<T extends { id: string }>`: a small `KeyValueStorage` implementation backed by IndexedDB\n\n### 4) Automation helpers\n\nUnder `automation/`, you'll find building blocks for browser automation:\n\n**CDP-based automation** (via `chrome.debugger`):\n- `DebuggerManager`\n- `SmartLocator` / `SmartElementHandle`\n\n**DOM-based automation** (pure JavaScript, no CDP required):\n- `DomLocator` / `DomElementHandle` - Element handles that work with DOM snapshot strategy\n- Supports same-origin iframes with automatic coordinate offset tracking\n\n**Snapshot management**:\n- `SnapshotManager` - Supports dual snapshot strategies:\n  - `cdp`: CDP-based accessibility tree snapshots\n  - `dom`: Pure DOM-based snapshots (using `@aipexstudio/dom-snapshot`)\n- Snapshot text search utilities (`searchSnapshotText`, `parseSearchQuery`, `hasGlobPatterns`)\n\n## Installation\n\n```bash\nnpm install @aipexstudio/browser-runtime\n# or\npnpm add @aipexstudio/browser-runtime\n```\n\nPeer dependencies:\n\n- `@types/chrome` (for TypeScript)\n- `react` (optional; only needed if you use React-related helpers)\n\n## Usage\n\n### 1) Use the built-in browser tools with an agent\n\n```ts\nimport { google } from \"@ai-sdk/google\";\nimport { AIPex, aisdk } from \"@aipexstudio/aipex-core\";\nimport { allBrowserTools } from \"@aipexstudio/browser-runtime\";\n\nconst agent = AIPex.create({\n  instructions: \"You can control the current browser tab.\",\n  model: aisdk(google(\"gemini-2.5-flash\")),\n  tools: allBrowserTools,\n});\n```\n\n### 2) Register default browser context providers\n\n```ts\nimport { ContextManager } from \"@aipexstudio/aipex-core\";\nimport { registerDefaultBrowserContextProviders } from \"@aipexstudio/browser-runtime\";\n\nconst contextManager = new ContextManager({ autoInitialize: true });\nregisterDefaultBrowserContextProviders(contextManager);\n```\n\n### 3) Use extension storage in UI packages\n\n`@aipexstudio/aipex-react` accepts any `KeyValueStorage` implementation for persisting settings.\nIn a Chrome extension, you can pass `chromeStorageAdapter`:\n\n```tsx\nimport { Chatbot } from \"@aipexstudio/aipex-react\";\nimport { chromeStorageAdapter } from \"@aipexstudio/browser-runtime\";\n\nexport function App({ agent }: { agent: any }) {\n  return <Chatbot agent={agent} storageAdapter={chromeStorageAdapter} />;\n}\n```\n\n### 4) Execute a function in the active tab\n\n```ts\nimport { executeScriptInActiveTab } from \"@aipexstudio/browser-runtime\";\n\nconst title = await executeScriptInActiveTab(() => document.title, []);\nconsole.log(title);\n```\n\n### 5) IndexedDB-backed storage\n\n```ts\nimport { IndexedDBStorage } from \"@aipexstudio/browser-runtime\";\n\nconst storage = new IndexedDBStorage<{ id: string; value: string }>({\n  dbName: \"aipex\",\n  storeName: \"sessions\",\n});\n```\n\n## API reference\n\n### Tools\n\n- `allBrowserTools: FunctionTool[]`\n- `interventionTools: FunctionTool[]`\n- `registerDefaultBrowserTools(registryLike)`\n- `getActiveTab(): Promise<chrome.tabs.Tab>`\n- `executeScriptInTab(tabId, func, args)`\n- `executeScriptInActiveTab(func, args)`\n\n### Context providers\n\n- `allBrowserProviders: ContextProvider[]`\n- `registerDefaultBrowserContextProviders(manager)`\n- Provider classes: `CurrentPageProvider`, `TabsProvider`, `BookmarksProvider`, `ScreenshotProvider`, `HistoryProvider`\n\n### Storage\n\n- `ChromeStorageAdapter<T>`\n- `chromeStorageAdapter: ChromeStorageAdapter`\n- `IndexedDBStorage<T>`\n- `IndexedDBConfig`\n\n### Automation\n\n- `DebuggerManager`, `debuggerManager`\n- `SnapshotManager`, `snapshotManager` - supports `SnapshotStrategy` (`\"cdp\"` | `\"dom\"`)\n- `SmartLocator`, `SmartElementHandle` - CDP-based element handles\n- `DomLocator`, `DomElementHandle` - DOM-based element handles\n- `searchSnapshotText`, `parseSearchQuery`, `hasGlobPatterns`\n\n### Runtime contracts\n\n- `RuntimeAddon`\n- `NoopBrowserAutomationHost`\n- `InMemoryOmniActionRegistry`\n- `NullInterventionHost`\n- `NoopContextProvider`\n\n## Development (monorepo)\n\nFrom the repository root:\n\n```bash\npnpm --filter @aipexstudio/browser-runtime build\npnpm --filter @aipexstudio/browser-runtime typecheck\npnpm --filter @aipexstudio/browser-runtime test\n```\n\n### Testing\n\nThis package includes Puppeteer-based integration tests for CDP automation features:\n\n- **Iframe Manager tests**: Test iframe accessibility tree merging (`iframe-manager.puppeteer.test.ts`)\n- **Snapshot Manager tests**: Test snapshot creation, search, and node ID injection (`snapshot-manager.puppeteer.test.ts`)\n\nThese tests use Puppeteer to simulate a browser environment without requiring a real Chrome extension. They automatically handle CI environments (GitHub Actions) with appropriate launch flags.\n\nTo run tests:\n\n```bash\npnpm --filter @aipexstudio/browser-runtime test\n```\n\n**CI Considerations**: The tests are configured to work in CI environments (GitHub Actions) with:\n- Automatic Chromium download via Puppeteer\n- Sandbox flags (`--no-sandbox`, `--disable-setuid-sandbox`) for containerized environments\n- Increased timeouts for slower CI runners\n\n## License\n\nMIT\n","readmeFilename":"README.md"}