{"_id":"@agentic-passport/agent-browser","_rev":"5-7b2fd9c258a976fb0da2d50e0c16820e","name":"@agentic-passport/agent-browser","dist-tags":{"latest":"0.4.2"},"versions":{"0.3.0":{"name":"@agentic-passport/agent-browser","version":"0.3.0","license":"Apache-2.0","_id":"@agentic-passport/agent-browser@0.3.0","maintainers":[{"name":"mkotsollaris","email":"mkotsollari@gmail.com"}],"dist":{"shasum":"d4eb94c722b157880efe1797cc5f5d00643504ac","tarball":"https://registry.npmjs.org/@agentic-passport/agent-browser/-/agent-browser-0.3.0.tgz","fileCount":6,"integrity":"sha512-+aG+RzROtELnzcZS9LfXtkppS0TCyvTk3kCwaE73IFfl670MZJd0Z0Uexfo76Ueik6JWw7In/CvQOsY80COxyQ==","signatures":[{"sig":"MEYCIQDt1PrAWEg0o3lpoPDPrSvkd8GMucfuDAQyIST/tWzDjQIhALWVxtvA8BZX71tIavkJ+JNTXjyr1ZqosQhJLdnS0CQd","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":23633},"main":"./dist/index.js","type":"module","_from":"file:agentic-passport-agent-browser-0.3.0.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.json","clean":"rm -rf dist .turbo","test:unit":"vitest run","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"mkotsollaris","email":"mkotsollari@gmail.com"},"_resolved":"/private/var/folders/gt/b9ct810116v9ycsn204t46d80000gn/T/44044cfb3176a92af2bd0f9d010b1849/agentic-passport-agent-browser-0.3.0.tgz","_integrity":"sha512-+aG+RzROtELnzcZS9LfXtkppS0TCyvTk3kCwaE73IFfl670MZJd0Z0Uexfo76Ueik6JWw7In/CvQOsY80COxyQ==","_npmVersion":"10.9.4","description":"AgentAuth browser-runtime SDK — runs the handshake, then drives a real browser context (Playwright) so the agent can navigate JS-rendered pages exactly as a human would.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"@agentic-passport/agent":"0.3.0","@agentic-passport/protocol":"0.3.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.6","playwright":"^1.49.0","typescript":"^5.7.3"},"peerDependencies":{"playwright":">=1.40.0"},"peerDependenciesMeta":{"playwright":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/agent-browser_0.3.0_1779162792148_0.18687676565015554","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@agentic-passport/agent-browser","version":"0.3.1","keywords":["agent-passport","agentic-ai","ai-agents","authentication","rfc-9421","dpop"],"license":"Apache-2.0","_id":"@agentic-passport/agent-browser@0.3.1","maintainers":[{"name":"mkotsollaris","email":"mkotsollari@gmail.com"}],"homepage":"https://github.com/mkotsollaris/agentpassport/tree/main/packages/agent-browser#readme","bugs":{"url":"https://github.com/mkotsollaris/agentpassport/issues"},"dist":{"shasum":"42a5756c15a77ff91418b74044ed8526305e8602","tarball":"https://registry.npmjs.org/@agentic-passport/agent-browser/-/agent-browser-0.3.1.tgz","fileCount":7,"integrity":"sha512-UDbtsWxS3LLVFO+eNqXsc3QOJ+UZjZ0UMNAsq+n55lwAMtL5wAuonFoDYACC04CHu8uoHSxW3yGzXuNRS5lhIw==","signatures":[{"sig":"MEUCIF2hXD6hE1msCrbjVZZ8eF6Rh0GrTmJ/AJknuyiC27CxAiEAm48M2mOz0eqsvriHmw6xKBGgoMLET7HFtnZ290Udzg0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":25836},"main":"./dist/index.js","type":"module","_from":"file:agentic-passport-agent-browser-0.3.1.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.json","clean":"rm -rf dist .turbo","test:unit":"vitest run","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"mkotsollaris","email":"mkotsollari@gmail.com"},"_resolved":"/private/var/folders/gt/b9ct810116v9ycsn204t46d80000gn/T/908e21dffdcd581dfcae4aab67f6f2fc/agentic-passport-agent-browser-0.3.1.tgz","_integrity":"sha512-UDbtsWxS3LLVFO+eNqXsc3QOJ+UZjZ0UMNAsq+n55lwAMtL5wAuonFoDYACC04CHu8uoHSxW3yGzXuNRS5lhIw==","repository":{"url":"git+https://github.com/mkotsollaris/agentpassport.git","type":"git","directory":"packages/agent-browser"},"_npmVersion":"10.9.4","description":"AgentPassport browser-runtime SDK — handshake + Playwright session for JS-rendered pages.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"@agentic-passport/agent":"0.3.1","@agentic-passport/protocol":"0.3.1"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.6","playwright":"^1.49.0","typescript":"^5.7.3"},"peerDependencies":{"playwright":">=1.40.0"},"peerDependenciesMeta":{"playwright":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/agent-browser_0.3.1_1779420035293_0.931168283396872","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@agentic-passport/agent-browser","version":"0.4.0","keywords":["agent-passport","agentic-ai","ai-agents","authentication","rfc-9421","dpop"],"license":"Apache-2.0","_id":"@agentic-passport/agent-browser@0.4.0","maintainers":[{"name":"mkotsollaris","email":"mkotsollari@gmail.com"}],"homepage":"https://github.com/mkotsollaris/agentpassport/tree/main/packages/agent-browser#readme","bugs":{"url":"https://github.com/mkotsollaris/agentpassport/issues"},"dist":{"shasum":"55ea94361bca82b3a3a7e4c80a0f83858be7322f","tarball":"https://registry.npmjs.org/@agentic-passport/agent-browser/-/agent-browser-0.4.0.tgz","fileCount":7,"integrity":"sha512-GKOxYdTZN9vhaH+poULFVQ0ir2zh7yAmFLNc/pdEBc7cAgFL4qD+VEWoOygdvSlLL+Noxk9WHytp0BacD+sFDQ==","signatures":[{"sig":"MEUCIQDW1NnjRVhtm3bn3IoOn0IJb97etkWhLf3QWFupAs7nwwIgWAwDdigCW5IuL1tqZLKQzxtt1jkzY678T5a2rfHRlao=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":25860},"main":"./dist/index.js","type":"module","_from":"file:agentic-passport-agent-browser-0.4.0.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.json","clean":"rm -rf dist .turbo","test:unit":"vitest run","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"mkotsollaris","email":"mkotsollari@gmail.com"},"_resolved":"/private/var/folders/gt/b9ct810116v9ycsn204t46d80000gn/T/7beef9b75a1ca9f9e2e04d3ebab022e1/agentic-passport-agent-browser-0.4.0.tgz","_integrity":"sha512-GKOxYdTZN9vhaH+poULFVQ0ir2zh7yAmFLNc/pdEBc7cAgFL4qD+VEWoOygdvSlLL+Noxk9WHytp0BacD+sFDQ==","repository":{"url":"git+https://github.com/mkotsollaris/agentpassport.git","type":"git","directory":"packages/agent-browser"},"_npmVersion":"10.9.4","description":"AgentPassport browser-runtime SDK — handshake + Playwright session for JS-rendered pages.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"@agentic-passport/agent":"0.4.0","@agentic-passport/protocol":"0.4.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.6","playwright":"^1.49.0","typescript":"^5.7.3"},"peerDependencies":{"playwright":">=1.40.0"},"peerDependenciesMeta":{"playwright":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/agent-browser_0.4.0_1779503365357_0.33841949267759075","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@agentic-passport/agent-browser","version":"0.4.1","keywords":["agent-passport","agentic-ai","ai-agents","authentication","rfc-9421","dpop"],"license":"Apache-2.0","_id":"@agentic-passport/agent-browser@0.4.1","maintainers":[{"name":"mkotsollaris","email":"mkotsollari@gmail.com"}],"homepage":"https://github.com/mkotsollaris/agentpassport/tree/main/packages/agent-browser#readme","bugs":{"url":"https://github.com/mkotsollaris/agentpassport/issues"},"dist":{"shasum":"bdb924684da4575f0c3d047c81cc13e670181df1","tarball":"https://registry.npmjs.org/@agentic-passport/agent-browser/-/agent-browser-0.4.1.tgz","fileCount":7,"integrity":"sha512-nppqb/y5F+LBNA3YpwLrOACbCzi8E2ZaVZ4fQG8SRz3qJdx/yaz1LJcmMsnyBqBkut3hy6Eo5VbabvEcZST4vw==","signatures":[{"sig":"MEUCIQClLxMar7E3BZ4jFzvqJmrKiHtNqCktxze8ae+TvbbMRQIgIGvSJmP0IKglbKYDujJValNWgDpoxCrLkYpU4jLv8xw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":25860},"main":"./dist/index.js","type":"module","_from":"file:agentic-passport-agent-browser-0.4.1.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.json","clean":"rm -rf dist .turbo","test:unit":"vitest run","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"mkotsollaris","email":"mkotsollari@gmail.com"},"_resolved":"/private/var/folders/gt/b9ct810116v9ycsn204t46d80000gn/T/10b9e47d23341791251ecfe81711a9ae/agentic-passport-agent-browser-0.4.1.tgz","_integrity":"sha512-nppqb/y5F+LBNA3YpwLrOACbCzi8E2ZaVZ4fQG8SRz3qJdx/yaz1LJcmMsnyBqBkut3hy6Eo5VbabvEcZST4vw==","repository":{"url":"git+https://github.com/mkotsollaris/agentpassport.git","type":"git","directory":"packages/agent-browser"},"_npmVersion":"10.9.4","description":"AgentPassport browser-runtime SDK — handshake + Playwright session for JS-rendered pages.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"@agentic-passport/agent":"0.4.1","@agentic-passport/protocol":"0.4.1"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.6","playwright":"^1.49.0","typescript":"^5.7.3"},"peerDependencies":{"playwright":">=1.40.0"},"peerDependenciesMeta":{"playwright":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/agent-browser_0.4.1_1779505842421_0.6443722176522133","host":"s3://npm-registry-packages-npm-production"}},"0.4.2":{"name":"@agentic-passport/agent-browser","version":"0.4.2","description":"AgentPassport browser-runtime SDK — handshake + Playwright session for JS-rendered pages.","license":"Apache-2.0","type":"module","main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"dependencies":{"@agentic-passport/protocol":"0.4.1","@agentic-passport/agent":"0.4.1"},"peerDependencies":{"playwright":">=1.40.0"},"peerDependenciesMeta":{"playwright":{"optional":false}},"devDependencies":{"playwright":"^1.49.0","typescript":"^5.7.3","vitest":"^4.1.6"},"repository":{"type":"git","url":"git+https://github.com/mkotsollaris/agentpassport.git","directory":"packages/agent-browser"},"homepage":"https://github.com/mkotsollaris/agentpassport/tree/main/packages/agent-browser#readme","bugs":{"url":"https://github.com/mkotsollaris/agentpassport/issues"},"keywords":["agent-passport","agentic-ai","ai-agents","authentication","rfc-9421","dpop"],"scripts":{"build":"tsc -p tsconfig.json","test":"vitest run","test:unit":"vitest run","typecheck":"tsc -p tsconfig.json --noEmit","clean":"rm -rf dist .turbo"},"_id":"@agentic-passport/agent-browser@0.4.2","_integrity":"sha512-mBTqhatuDPydurexhfO07Hk/dnQX7WyqqzPiS8dA2b26l4cjKEPc1aDdR1w/LvgZNDO+KEB1OtnAIsNBWkns6g==","_resolved":"/private/var/folders/gt/b9ct810116v9ycsn204t46d80000gn/T/b01e0ff2f424a8f0ecd5e85ee4fcabd5/agentic-passport-agent-browser-0.4.2.tgz","_from":"file:agentic-passport-agent-browser-0.4.2.tgz","_nodeVersion":"22.21.1","_npmVersion":"10.9.4","dist":{"integrity":"sha512-mBTqhatuDPydurexhfO07Hk/dnQX7WyqqzPiS8dA2b26l4cjKEPc1aDdR1w/LvgZNDO+KEB1OtnAIsNBWkns6g==","shasum":"e13e237fc71a7ff56e9301c94017abd778cc43ec","tarball":"https://registry.npmjs.org/@agentic-passport/agent-browser/-/agent-browser-0.4.2.tgz","fileCount":7,"unpackedSize":26924,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDFEUvrz6MfwwYzMtiGSwqRI5CTxhtyZqQ1d7QVgMZ16gIhALodEY0V0wiuBOKRSwERSfSYhAMSIqcHJJm7bkKzO5k1"}]},"_npmUser":{"name":"mkotsollaris","email":"mkotsollari@gmail.com"},"directories":{},"maintainers":[{"name":"mkotsollaris","email":"mkotsollari@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/agent-browser_0.4.2_1779506505748_0.30861062953760054"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-19T03:53:12.048Z","modified":"2026-05-23T03:21:46.050Z","0.3.0":"2026-05-19T03:53:12.365Z","0.3.1":"2026-05-22T03:20:35.425Z","0.4.0":"2026-05-23T02:29:25.521Z","0.4.1":"2026-05-23T03:10:42.547Z","0.4.2":"2026-05-23T03:21:45.892Z"},"bugs":{"url":"https://github.com/mkotsollaris/agentpassport/issues"},"license":"Apache-2.0","homepage":"https://github.com/mkotsollaris/agentpassport/tree/main/packages/agent-browser#readme","keywords":["agent-passport","agentic-ai","ai-agents","authentication","rfc-9421","dpop"],"repository":{"type":"git","url":"git+https://github.com/mkotsollaris/agentpassport.git","directory":"packages/agent-browser"},"description":"AgentPassport browser-runtime SDK — handshake + Playwright session for JS-rendered pages.","maintainers":[{"name":"mkotsollaris","email":"mkotsollari@gmail.com"}],"readme":"# @agentic-passport/agent-browser\n\nBrowser-runtime AgentPassport agent. Runs the HTTP handshake (same as `@agentic-passport/agent`), then drives a real Playwright browser context so the agent can navigate JS-rendered pages exactly as a human would.\n\n**Use this when the protected resource is HTML** (a React SPA, a dashboard, a `/account` page — anything that hydrates client-side). A bare HTTP fetch against such a URL returns the SPA shell with an empty `<main>` even if you're authenticated — because the data is fetched by JavaScript that hasn't run yet. The browser-runtime SDK handles the vendor's `bootstrap_url` handoff so the page renders for real.\n\nFor JSON endpoints (`/api/...`), use [`@agentic-passport/agent`](../agent-sdk/) instead.\n\n## Install\n\n```bash\npnpm add @agentic-passport/agent-browser\n# Playwright browsers also need to be installed:\npnpm exec playwright install chromium\n```\n\n## Use\n\n```ts\nimport { chromium } from 'playwright';\nimport { browserAgent } from '@agentic-passport/agent-browser';\n\nconst browser = await chromium.launch();\nconst context = await browser.newContext();\n\nconst agent = await browserAgent({\n  context,\n  vendorUrl: 'https://vendor.example',\n  issuerUrl: 'https://issuer.agentpassport.app',\n  mandate: {\n    task: 'view my account',\n    budget: { usd: 1 },\n    scopes: ['account.read'],\n  },\n});\n\n// agent.page is a Playwright Page with the vendor's native session set.\nawait agent.page.goto('https://vendor.example/account');\nconst text = await agent.page.locator('main').textContent();\nconsole.log(text);\n\nawait browser.close();\n```\n\n## What it returns\n\n```ts\ntype BrowserAgent = {\n  page: Page;              // Playwright page, post-bootstrap, ready to navigate\n  httpSession: HttpSession; // The underlying AgentPassport HTTP session\n  agentId: string;         // Vendor-assigned during /agent/register\n  bootstrapped: boolean;   // true iff vendor returned a bootstrap_url\n  audit: () => readonly { step: string; ok: boolean; detail?: unknown }[];\n};\n```\n\nThe handshake is identical to `@agentic-passport/agent`. The difference is that the vendor's `onAgentSessionMint` hook returns a `bootstrap_url`; `browserAgent` navigates to it, the vendor's auth provider (Clerk, Auth.js, WorkOS, etc.) mints its native session cookie in the browser context, and you land on a fully authenticated browser ready to render the SPA.\n\nIf the vendor doesn't implement `onAgentSessionMint`, `bootstrapped` is `false` and the browser is not authenticated to the vendor — only direct API calls via `agent.httpSession.fetch()` work.\n\n## Spec\n\n[Wire format](https://github.com/mkotsollaris/agentpassport/blob/main/packages/protocol/spec.md) — see `vendor_session` in the `/agent/authorize` response and `WWW-Authenticate: ... resource_type=\"html\"` in §2.\n\n## License\n\nApache-2.0. [Repository](https://github.com/mkotsollaris/agentpassport)\n","readmeFilename":"README.md"}