{"_id":"@alfe.ai/browser","_rev":"5-12f6aadf70d2e59456c1e87600a0e6e0","name":"@alfe.ai/browser","dist-tags":{"latest":"0.3.0"},"versions":{"0.0.0":{"name":"@alfe.ai/browser","version":"0.0.0","license":"UNLICENSED","_id":"@alfe.ai/browser@0.0.0","maintainers":[{"name":"kevupton","email":"kevin@upton.tech"},{"name":"sam-alfe","email":"sam@alfe.ai"}],"dist":{"shasum":"739f38eaafb6f655eb27b637f6c3d127b3370602","tarball":"https://registry.npmjs.org/@alfe.ai/browser/-/browser-0.0.0.tgz","fileCount":5,"integrity":"sha512-RWxpj9uML5eijrQG+DCGm8plhzAlQqwHfGrVJAQp+XkYc+gpd3moeeY1sWXuqPYSd7w9HccUVMXhW2vf3UNZuw==","signatures":[{"sig":"MEQCIF6F6Jbe+g1QdusysswDHL3oA1nVp0oA7cRZVu/NKoN7AiAvEYJaz0IiViQArMCjMKdWWHeGN93fHYddwpYqKGmIaQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":50668},"main":"./dist/index.js","type":"module","_from":"file:alfe.ai-browser-0.0.0.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"scripts":{"dev":"tsdown --watch","lint":"eslint .","test":"vitest run --passWithNoTests","build":"tsdown","typecheck":"tsc --noEmit"},"_npmUser":{"name":"kevupton","email":"kevin@upton.tech"},"_resolved":"/tmp/2cd9c4805d0e4837d5c8834dbbbc5abc/alfe.ai-browser-0.0.0.tgz","_integrity":"sha512-RWxpj9uML5eijrQG+DCGm8plhzAlQqwHfGrVJAQp+XkYc+gpd3moeeY1sWXuqPYSd7w9HccUVMXhW2vf3UNZuw==","_npmVersion":"10.9.8","description":"CDP-driven browser surface for the Alfe interactive remote-control relay — one shared headless Chrome for agent automation + human co-browse takeover","directories":{},"_nodeVersion":"22.23.0","dependencies":{"puppeteer-core":"^24.0.0","@alfe.ai/remote":"^0.0.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/browser_0.0.0_1782982505083_0.5777527005577188","host":"s3://npm-registry-packages-npm-production"}},"0.1.0":{"name":"@alfe.ai/browser","version":"0.1.0","keywords":["alfe","ai-agents","agent","llm"],"author":{"url":"https://alfe.ai","name":"Alfe"},"license":"UNLICENSED","_id":"@alfe.ai/browser@0.1.0","maintainers":[{"name":"kevupton","email":"kevin@upton.tech"},{"name":"sam-alfe","email":"sam@alfe.ai"}],"homepage":"https://alfe.ai","dist":{"shasum":"c1010c489437e90ee43180c2f96ee71f27a9b8a2","tarball":"https://registry.npmjs.org/@alfe.ai/browser/-/browser-0.1.0.tgz","fileCount":5,"integrity":"sha512-QO4QoJ5RId6KEE83l8enPvfsBihm51XxdV4bFYsCmn9RKKt1xFDB64aatHvQoLKKHW4V6OJ5EiPW6wsEWNEDVg==","signatures":[{"sig":"MEYCIQCNRtIIiSjXz+jO6vEBXEanLqFpzL3RhgwyZw7BAtE71QIhAIgUKfigcqFLO6bU5B/2zJuDuYIgr48Uf3gdNNF7f8Tk","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":50812},"main":"./dist/index.js","type":"module","_from":"file:alfe.ai-browser-0.1.0.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"scripts":{"dev":"tsdown --watch","lint":"eslint .","test":"vitest run --passWithNoTests","build":"tsdown","typecheck":"tsc --noEmit"},"_npmUser":{"name":"kevupton","email":"kevin@upton.tech"},"_resolved":"/tmp/b7d51c3b770036b89613b02951c455c0/alfe.ai-browser-0.1.0.tgz","_integrity":"sha512-QO4QoJ5RId6KEE83l8enPvfsBihm51XxdV4bFYsCmn9RKKt1xFDB64aatHvQoLKKHW4V6OJ5EiPW6wsEWNEDVg==","_npmVersion":"10.9.8","description":"CDP-driven browser surface for the Alfe interactive remote-control relay — one shared headless Chrome for agent automation + human co-browse takeover","directories":{},"_nodeVersion":"22.23.1","dependencies":{"puppeteer-core":"^24.0.0","@alfe.ai/remote":"^0.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/browser_0.1.0_1783007058366_0.30079754873545794","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@alfe.ai/browser","version":"0.2.0","keywords":["alfe","ai-agents","agent","llm"],"author":{"url":"https://alfe.ai","name":"Alfe"},"license":"UNLICENSED","_id":"@alfe.ai/browser@0.2.0","maintainers":[{"name":"kevupton","email":"kevin@upton.tech"},{"name":"sam-alfe","email":"sam@alfe.ai"}],"homepage":"https://alfe.ai","dist":{"shasum":"f156d6c56ddde42ed4097d4c14bf57085f89df59","tarball":"https://registry.npmjs.org/@alfe.ai/browser/-/browser-0.2.0.tgz","fileCount":5,"integrity":"sha512-E2291kD8XF8sDRqxqYUr3h0/Wiu9JMsrC17PrR4AITun57EpEbI1EV+mLdFp7PmkzKKbsxW6JMHLUWSJRepW0A==","signatures":[{"sig":"MEQCIFu8F1+zCiNOE31HKt6wtguu1ctQL3naQOYImqqUvxBvAiAJmuzrY2TfsjH/Te86dTo7DfKUx7tZ5lWwR3zxoIfL/Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":57013},"main":"./dist/index.js","type":"module","_from":"file:alfe.ai-browser-0.2.0.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"scripts":{"dev":"tsdown --watch","lint":"eslint .","test":"vitest run --passWithNoTests","build":"tsdown","typecheck":"tsc --noEmit"},"_npmUser":{"name":"kevupton","email":"kevin@upton.tech"},"_resolved":"/tmp/14f56e970a7e3331cfd30f1929655174/alfe.ai-browser-0.2.0.tgz","_integrity":"sha512-E2291kD8XF8sDRqxqYUr3h0/Wiu9JMsrC17PrR4AITun57EpEbI1EV+mLdFp7PmkzKKbsxW6JMHLUWSJRepW0A==","_npmVersion":"10.9.8","description":"CDP-driven browser surface for the Alfe interactive remote-control relay — one shared headless Chrome for agent automation + human co-browse takeover","directories":{},"_nodeVersion":"22.23.1","dependencies":{"puppeteer-core":"^24.0.0","@alfe.ai/remote":"^0.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/browser_0.2.0_1783440872281_0.21718056501165495","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@alfe.ai/browser","version":"0.2.1","keywords":["alfe","ai-agents","agent","llm"],"author":{"url":"https://alfe.ai","name":"Alfe"},"license":"UNLICENSED","_id":"@alfe.ai/browser@0.2.1","maintainers":[{"name":"kevupton","email":"kevin@upton.tech"},{"name":"sam-alfe","email":"sam@alfe.ai"}],"homepage":"https://alfe.ai","dist":{"shasum":"4a3c493e9c1187996ad223e136c5bf40e52adf61","tarball":"https://registry.npmjs.org/@alfe.ai/browser/-/browser-0.2.1.tgz","fileCount":6,"integrity":"sha512-VXyRb+WVCBtJSFJm9PfrD4cq6rVA/vkaZgJHFiIeCC2qdUeQIi76uBp1KJHu4/d4elA/grbOTlD4PppDYoXnbg==","signatures":[{"sig":"MEQCIFs6gXf+K045HLJrHJ5yAyKwK4Mc3MF/o1iW2efAN/JxAiAqDljSVPF+muHk/XcSr8gFZbeqoqpWBTffl+S+dJSIhw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":91611},"main":"./dist/index.js","type":"module","_from":"file:alfe.ai-browser-0.2.1.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"scripts":{"dev":"tsdown --watch","lint":"eslint .","test":"vitest run --passWithNoTests","build":"tsdown","typecheck":"tsc --noEmit"},"_npmUser":{"name":"kevupton","email":"kevin@upton.tech"},"_resolved":"/tmp/571db7b3f0ac7bf2ca819e7387e5f3ee/alfe.ai-browser-0.2.1.tgz","_integrity":"sha512-VXyRb+WVCBtJSFJm9PfrD4cq6rVA/vkaZgJHFiIeCC2qdUeQIi76uBp1KJHu4/d4elA/grbOTlD4PppDYoXnbg==","_npmVersion":"10.9.8","description":"CDP-driven browser surface for the Alfe interactive remote-control relay — one shared headless Chrome for agent automation + human co-browse takeover","directories":{},"_nodeVersion":"22.23.1","dependencies":{"puppeteer-core":"^24.0.0","@alfe.ai/remote":"^0.1.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/browser_0.2.1_1785753561534_0.028587520683920564","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@alfe.ai/browser","version":"0.3.0","description":"CDP-driven browser surface for the Alfe interactive remote-control relay — one shared headless Chrome for agent automation + human co-browse takeover","type":"module","main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","require":"./dist/index.cjs","import":"./dist/index.js"}},"dependencies":{"puppeteer-core":"^24.0.0","@alfe.ai/remote":"^0.2.0"},"license":"UNLICENSED","homepage":"https://alfe.ai","author":{"name":"Alfe","url":"https://alfe.ai"},"keywords":["alfe","ai-agents","agent","llm"],"scripts":{"build":"tsdown","dev":"tsdown --watch","test":"vitest run --passWithNoTests","test:integration":"tsc --noEmit -p tsconfig.integration.json && vitest run --config test/vitest.config.ts","typecheck":"tsc --noEmit","lint":"eslint ."},"_id":"@alfe.ai/browser@0.3.0","_integrity":"sha512-AOvtdDjsjcb28LAnCNDFBQyyOyro405zFUefWjQZLk0K2ROniXUQS/gHccuF75MdoAGliKB2P5JcFzou2mVWDQ==","_resolved":"/tmp/51496d8ef658895467b5d6884569ed9f/alfe.ai-browser-0.3.0.tgz","_from":"file:alfe.ai-browser-0.3.0.tgz","_nodeVersion":"22.23.2","_npmVersion":"10.9.8","dist":{"integrity":"sha512-AOvtdDjsjcb28LAnCNDFBQyyOyro405zFUefWjQZLk0K2ROniXUQS/gHccuF75MdoAGliKB2P5JcFzou2mVWDQ==","shasum":"e9e2c7b6589ff92b183b9024859334627547d286","tarball":"https://registry.npmjs.org/@alfe.ai/browser/-/browser-0.3.0.tgz","fileCount":6,"unpackedSize":109315,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDo0i9NO6tdt/zeMUNR298ogOqimuAuBA4sLV5ohaLeyQIhAOJPHiv0dCtHagMzES+Nyq4tpBgw/WFmP8nIsO3w5LyD"}]},"_npmUser":{"name":"kevupton","email":"kevin@upton.tech"},"directories":{},"maintainers":[{"name":"kevupton","email":"kevin@upton.tech"},{"name":"sam-alfe","email":"sam@alfe.ai"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/browser_0.3.0_1788928263720_0.161118829250805"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-02T08:55:04.869Z","modified":"2026-09-09T04:31:04.139Z","0.0.0":"2026-07-02T08:55:05.277Z","0.1.0":"2026-07-02T15:44:18.491Z","0.2.0":"2026-07-07T16:14:32.465Z","0.2.1":"2026-08-03T10:39:21.694Z","0.3.0":"2026-09-09T04:31:03.878Z"},"author":{"name":"Alfe","url":"https://alfe.ai"},"license":"UNLICENSED","homepage":"https://alfe.ai","keywords":["alfe","ai-agents","agent","llm"],"description":"CDP-driven browser surface for the Alfe interactive remote-control relay — one shared headless Chrome for agent automation + human co-browse takeover","maintainers":[{"name":"kevupton","email":"kevin@upton.tech"},{"name":"sam-alfe","email":"sam@alfe.ai"}],"readme":"# @alfe.ai/browser\n\nCDP-driven shared browser surface for Alfe agent automation and human\nco-browse takeover. One persistent Chrome profile is streamed to authorized\nviewers while an explicit controller session owns all human input.\n\n## Install\n\n```bash\nnpm install @alfe.ai/browser\n```\n\nCallers provide the Chrome executable/profile paths and should provide\n`isNavigationAllowed` for their network policy. The predicate is applied both\nto agent navigation and every intercepted page request, including redirects\nand human-clicked navigation. The package bounds viewports, screencast frames,\nautomation input/results, and keeps replacement Chrome/CDP generations from\nmutating current state.\n\n## Browser integration verification\n\nRun `BROWSER_TEST_EXECUTABLE_PATH=/path/to/chrome pnpm test:integration` from\nthis package. This dedicated suite launches a real headless Chrome with a fresh\ntemporary profile and local HTTP/WebSocket fixtures. It exercises streamed\nJPEGs, human keyboard/mouse input, login popups, hand-back, and cookie persistence\nafter browser restart; it never attaches to an existing browser profile.\n\nPart of [Alfe](https://alfe.ai). See the\n[documentation](https://docs.alfe.ai) for platform setup.\n","readmeFilename":"README.md"}