{"_id":"@arlopass/ai-sdk-transport","name":"@arlopass/ai-sdk-transport","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"@arlopass/ai-sdk-transport","version":"0.1.0","license":"MIT","type":"module","publishConfig":{"access":"public","provenance":true},"repository":{"type":"git","url":"git+https://github.com/arlopass/arlopass.git","directory":"packages/ai-sdk-transport"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc -p tsconfig.json","typecheck":"tsc -p tsconfig.json --noEmit","test":"vitest run --passWithNoTests"},"peerDependencies":{"@arlopass/web-sdk":"workspace:*","ai":"^6.0.0"},"devDependencies":{"@arlopass/web-sdk":"workspace:*","ai":"^6.0.0"},"_id":"@arlopass/ai-sdk-transport@0.1.0","gitHead":"c3020fa5e8477ec74d9873b35576656af55c75ff","description":"Use Vercel AI SDK's `useChat` with the Arlopass browser extension. No API route, no API keys, no server.","bugs":{"url":"https://github.com/arlopass/arlopass/issues"},"homepage":"https://github.com/arlopass/arlopass#readme","_nodeVersion":"22.22.1","_npmVersion":"10.9.4","dist":{"integrity":"sha512-j9TTnLstPvrZUHTlo9Tkgfv/v5m2Fby1SV66svh+9SSTFHFt2eCfs4YTBY8Q9OW9HN+bL3HnQXcaVICwq9S1yw==","shasum":"28cbd945a92ea61f3ffb05b5affbd8ef95bb2f5f","tarball":"https://registry.npmjs.org/@arlopass/ai-sdk-transport/-/ai-sdk-transport-0.1.0.tgz","fileCount":18,"unpackedSize":22243,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@arlopass%2fai-sdk-transport@0.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIBXfFCE9CnA9OiEjY1N95GW3YXdqbffHuQGvkt/AnaRGAiEA4LBL0A8mbGRVnSfBTUZX8/4AbE8pkpsZnmkd5MfzNx0="}]},"_npmUser":{"name":"davidszakacs","email":"szakacs_david@hotmail.com"},"directories":{},"maintainers":[{"name":"davidszakacs","email":"szakacs_david@hotmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ai-sdk-transport_0.1.0_1774855626138_0.14122755548109955"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-30T07:27:06.058Z","0.1.0":"2026-03-30T07:27:06.285Z","modified":"2026-03-30T07:27:07.295Z"},"maintainers":[{"name":"davidszakacs","email":"szakacs_david@hotmail.com"}],"description":"Use Vercel AI SDK's `useChat` with the Arlopass browser extension. No API route, no API keys, no server.","homepage":"https://github.com/arlopass/arlopass#readme","repository":{"type":"git","url":"git+https://github.com/arlopass/arlopass.git","directory":"packages/ai-sdk-transport"},"bugs":{"url":"https://github.com/arlopass/arlopass/issues"},"license":"MIT","readme":"# @arlopass/ai-sdk-transport\n\nUse Vercel AI SDK's `useChat` with the Arlopass browser extension. No API route, no API keys, no server.\n\n## Install\n\n```bash\npnpm add @arlopass/ai-sdk-transport ai @arlopass/web-sdk\n```\n\n> [!IMPORTANT]\n> The [Arlopass browser extension](https://arlopass.com) must be installed for the transport to work. It provides the AI model that powers your app.\n\n## Quick Start\n\nZero-config — just pass a `ArlopassChatTransport` instance to `useChat`:\n\n```tsx\nimport { useChat } from \"@ai-sdk/react\";\nimport { ArlopassChatTransport } from \"@arlopass/ai-sdk-transport\";\n\nfunction Chat() {\n  const { messages, sendMessage, status } = useChat({\n    transport: new ArlopassChatTransport(),\n  });\n\n  return (\n    <div>\n      {messages.map(m => (\n        <div key={m.id}>\n          {m.role}: {m.parts.map(p => p.type === \"text\" ? p.text : \"\").join(\"\")}\n        </div>\n      ))}\n      <button onClick={() => sendMessage({ content: \"Hello!\" })}>Send</button>\n    </div>\n  );\n}\n```\n\n## With App Metadata\n\nIdentify your app in the extension's connection list:\n\n```tsx\nnew ArlopassChatTransport({\n  appId: \"com.acme.copilot\",\n  appName: \"Acme Copilot\",\n  appDescription: \"AI assistant for Acme\",\n})\n```\n\n## Advanced: Pre-connected Client\n\nIf you manage the `ArlopassClient` lifecycle yourself, pass it directly:\n\n```tsx\nimport { ArlopassClient } from \"@arlopass/web-sdk\";\n\nconst client = new ArlopassClient({ transport: window.arlopass });\nawait client.connect({ appId: \"my-app\" });\n\nuseChat({ transport: new ArlopassChatTransport({ client }) });\n```\n\n## Options\n\n| Option | Type | Default | Description |\n|---|---|---|---|\n| `appId` | `string` | auto-derived | App identifier shown in the extension |\n| `appSuffix` | `string` | — | Suffix for auto-derived app ID |\n| `appName` | `string` | — | Human-readable app name |\n| `appDescription` | `string` | — | Short description |\n| `appIcon` | `string` | — | URL to a square icon |\n| `client` | `ArlopassClient` | — | Pre-connected client (skips auto-connect) |\n| `timeoutMs` | `number` | `120000` | Request timeout in ms |\n\n## How It Works\n\nThe transport detects the Arlopass browser extension (`window.arlopass`), auto-connects, and routes `useChat` messages through the extension to whatever AI provider the user has configured. Messages are converted from AI SDK `UIMessage` format to Arlopass `ChatMessage` format. Streaming responses are converted back to AI SDK `UIMessageChunk` events that `useChat` consumes natively.\n\n## Links\n\n- [Arlopass website](https://arlopass.com)\n- [GitHub](https://github.com/arlopass/arlopass-web/tree/main/packages/ai-sdk-transport)\n","readmeFilename":"README.md","_rev":"1-a9aed17b8ed36962dfb634035363632f"}