{"_id":"@absmartly/claude-code-bridge","_rev":"7-2f63969a9461f8a4037f9da278315be2","name":"@absmartly/claude-code-bridge","dist-tags":{"latest":"1.1.4"},"versions":{"1.0.0":{"name":"@absmartly/claude-code-bridge","version":"1.0.0","keywords":["claude","absmartly","ab-testing","bridge"],"author":{"name":"ABsmartly"},"license":"MIT","_id":"@absmartly/claude-code-bridge@1.0.0","maintainers":[{"name":"marcioapm","email":"marcioapm@gmail.com"},{"name":"joalves","email":"jonas@absmartly.com"},{"name":"caltheabtester","email":"cal@absmartly.com"},{"name":"marcioabs","email":"marcio@absmartly.com"}],"homepage":"https://github.com/absmartly/claude-code-bridge#readme","bugs":{"url":"https://github.com/absmartly/claude-code-bridge/issues"},"bin":{"claude-code-bridge":"index.js"},"dist":{"shasum":"14259e949dd2f15955ec1b91f6abb1c4efafd4b6","tarball":"https://registry.npmjs.org/@absmartly/claude-code-bridge/-/claude-code-bridge-1.0.0.tgz","fileCount":3,"integrity":"sha512-yFK2SKzjcyJt/JkiYg05MTaCxcMxmYRLSmrAQeKRlALo6Cqig3AwbR6+5aVvcCc+SMi+OgXgbpXTAXm8tp0pfw==","signatures":[{"sig":"MEUCIQC3DdJuogJWRuKaLACBBNOletgBU38TC6dUTdelYB9HSAIgCFtHW0w303UcdJQeEd2Whh/NEl9Yu3SpbIx2AzIIEts=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":19084},"main":"index.js","engines":{"node":">=16.0.0"},"gitHead":"253c1bf208062e4581ba5c58fe932862258e9ae8","scripts":{"start":"nodemon --watch index.js --watch package.json --exitcrash index.js"},"_npmUser":{"name":"joalves","email":"jonas@absmartly.com"},"repository":{"url":"git+https://github.com/absmartly/claude-code-bridge.git","type":"git"},"_npmVersion":"11.3.0","description":"HTTP bridge server for ABsmartly Extension to communicate with Claude Code CLI","directories":{},"_nodeVersion":"22.15.0","dependencies":{"cors":"^2.8.5","dotenv":"^16.3.1","express":"^4.18.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"nodemon":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/claude-code-bridge_1.0.0_1764342994728_0.9214205860848323","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@absmartly/claude-code-bridge","version":"1.0.1","keywords":["claude","absmartly","ab-testing","bridge"],"author":{"name":"ABsmartly"},"license":"MIT","_id":"@absmartly/claude-code-bridge@1.0.1","maintainers":[{"name":"marcioapm","email":"marcioapm@gmail.com"},{"name":"joalves","email":"jonas@absmartly.com"},{"name":"caltheabtester","email":"cal@absmartly.com"},{"name":"marcioabs","email":"marcio@absmartly.com"}],"homepage":"https://github.com/absmartly/claude-code-bridge#readme","bugs":{"url":"https://github.com/absmartly/claude-code-bridge/issues"},"bin":{"claude-code-bridge":"index.js"},"dist":{"shasum":"3f55c43c4c6226ffb427ddc293d3e8b2f356fdb0","tarball":"https://registry.npmjs.org/@absmartly/claude-code-bridge/-/claude-code-bridge-1.0.1.tgz","fileCount":3,"integrity":"sha512-Eq28ges0t+T5g+KREhtNYLlMlsoO8xE+G7bhOXB8a8rZrZUvicFf6KM4/niq16n98EyuejlzY2fagSk1MXUK0Q==","signatures":[{"sig":"MEUCIQCm8Qjk+4tcKXIeuPzn+ooHQUM4f3H6q7noKRnXjx34fAIgALMegpnOVA1iNXDAS5DhIipqTqeTgBwHd6h35fhZqNA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":19084},"main":"index.js","engines":{"node":">=16.0.0"},"gitHead":"253c1bf208062e4581ba5c58fe932862258e9ae8","scripts":{"start":"nodemon --watch index.js --watch package.json --exitcrash index.js"},"_npmUser":{"name":"joalves","email":"jonas@absmartly.com"},"repository":{"url":"git+https://github.com/absmartly/claude-code-bridge.git","type":"git"},"_npmVersion":"11.3.0","description":"HTTP bridge server for ABsmartly Extension to communicate with Claude Code CLI","directories":{},"_nodeVersion":"22.15.0","dependencies":{"cors":"^2.8.5","dotenv":"^16.3.1","express":"^4.18.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"nodemon":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/claude-code-bridge_1.0.1_1764343116873_0.14412222588083212","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@absmartly/claude-code-bridge","version":"1.0.2","keywords":["claude","absmartly","ab-testing","bridge"],"author":{"name":"ABsmartly"},"license":"MIT","_id":"@absmartly/claude-code-bridge@1.0.2","maintainers":[{"name":"marcioapm","email":"marcioapm@gmail.com"},{"name":"joalves","email":"jonas@absmartly.com"},{"name":"caltheabtester","email":"cal@absmartly.com"},{"name":"marcioabs","email":"marcio@absmartly.com"}],"homepage":"https://github.com/absmartly/claude-code-bridge#readme","bugs":{"url":"https://github.com/absmartly/claude-code-bridge/issues"},"bin":{"claude-code-bridge":"index.js"},"dist":{"shasum":"eba9571fc244557131eaab87114a9f3c3ae6d9ca","tarball":"https://registry.npmjs.org/@absmartly/claude-code-bridge/-/claude-code-bridge-1.0.2.tgz","fileCount":3,"integrity":"sha512-TxJNW610/R9UTp6UMbt3Kqf2nOQ8SoQCvbn8K2p9uNrJfe2K4+z+3cYPz1wF5BoyG2C4nnZeZ6hZ1dnVgdeLgQ==","signatures":[{"sig":"MEUCIFNJN9tx9s9tjAKqsiEnY5Kuoyg2yyzOzfmHwtiO/wYIAiEA33hbK1wb556rAVUpcoMd3VjfzJKWsLDmsN2BXLolV7A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":20534},"main":"index.js","engines":{"node":">=16.0.0"},"gitHead":"cff71218834027a26cccc3e41141fda88ffc4614","scripts":{"start":"nodemon --watch index.js --watch package.json --exitcrash index.js"},"_npmUser":{"name":"joalves","email":"jonas@absmartly.com"},"repository":{"url":"git+https://github.com/absmartly/claude-code-bridge.git","type":"git"},"_npmVersion":"11.3.0","description":"HTTP bridge server for ABsmartly Extension to communicate with Claude Code CLI","directories":{},"_nodeVersion":"22.15.0","dependencies":{"cors":"^2.8.5","dotenv":"^16.3.1","express":"^4.18.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"nodemon":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/claude-code-bridge_1.0.2_1764870900585_0.21137256249167735","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@absmartly/claude-code-bridge","version":"1.1.0","keywords":["claude","absmartly","ab-testing","bridge"],"author":{"name":"ABsmartly"},"license":"MIT","_id":"@absmartly/claude-code-bridge@1.1.0","maintainers":[{"name":"marcioapm","email":"marcioapm@gmail.com"},{"name":"joalves","email":"jonas@absmartly.com"},{"name":"caltheabtester","email":"cal@absmartly.com"},{"name":"marcioabs","email":"marcio@absmartly.com"}],"homepage":"https://github.com/absmartly/claude-code-bridge#readme","bugs":{"url":"https://github.com/absmartly/claude-code-bridge/issues"},"bin":{"get-chunk":"bin/get-chunk.js","claude-code-bridge":"index.js"},"dist":{"shasum":"94f9d07667d473fcfcc70b322b420f00141c1f85","tarball":"https://registry.npmjs.org/@absmartly/claude-code-bridge/-/claude-code-bridge-1.1.0.tgz","fileCount":4,"integrity":"sha512-HOgpOgzqfCmQm90r3172SvaKRqdbORbzaKJt1MJ/m4b6/hv42l9ogBb9ZgSmHzDyB28tmz1uTF8D+DL+hDcVDg==","signatures":[{"sig":"MEUCIQCZprfCRI9k7puYJ8hwWYoOHNn1w8vWbpqyKiL3nIQGgAIgIsOnSagaPELuFaT8Hl2/IVJvci4Z2tvHwjds/xdGSHI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35520},"main":"index.js","engines":{"node":">=16.0.0"},"gitHead":"8fa91a65b859c5fff16abd63b88bb6204821b1b7","scripts":{"start":"nodemon --watch index.js --watch package.json --exitcrash index.js"},"_npmUser":{"name":"joalves","email":"jonas@absmartly.com"},"repository":{"url":"git+https://github.com/absmartly/claude-code-bridge.git","type":"git"},"_npmVersion":"11.3.0","description":"HTTP bridge server for ABsmartly Extension to communicate with Claude Code CLI","directories":{},"_nodeVersion":"22.15.0","dependencies":{"cors":"^2.8.5","jsdom":"^27.3.0","dotenv":"^16.3.1","express":"^4.18.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"nodemon":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/claude-code-bridge_1.1.0_1767623897492_0.46713355700254233","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@absmartly/claude-code-bridge","version":"1.1.1","keywords":["claude","absmartly","ab-testing","bridge"],"author":{"name":"ABsmartly"},"license":"MIT","_id":"@absmartly/claude-code-bridge@1.1.1","maintainers":[{"name":"marcioapm","email":"marcioapm@gmail.com"},{"name":"joalves","email":"jonas@absmartly.com"},{"name":"caltheabtester","email":"cal@absmartly.com"},{"name":"marcioabs","email":"marcio@absmartly.com"}],"homepage":"https://github.com/absmartly/claude-code-bridge#readme","bugs":{"url":"https://github.com/absmartly/claude-code-bridge/issues"},"bin":{"get-chunk":"bin/get-chunk.js","claude-code-bridge":"index.js"},"dist":{"shasum":"027bf4346560072f444b17f03981776320e6ea9f","tarball":"https://registry.npmjs.org/@absmartly/claude-code-bridge/-/claude-code-bridge-1.1.1.tgz","fileCount":4,"integrity":"sha512-45WpQvu++IHgiX7KZbuVEyGJeQpVso5MbLQ/4PU9k0jPr+DM6U2rtDKtK3sWuMNZHrZgXKZMywqfd+gkuKu5mA==","signatures":[{"sig":"MEUCIQDAdX1HI8kCj/Z1dJ5kPVAHgbMjmducwt9ILMzGqAJEsAIgGkTyt2pLlsqnH/ThRTw2ERBtdt97ua8Bg0ifitvysPE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35571},"main":"index.js","engines":{"node":">=16.0.0"},"gitHead":"73ee2d2ea5adb0efeb8bddd1ee3f47215fe05df8","scripts":{"start":"nodemon --watch index.js --watch package.json --exitcrash index.js"},"_npmUser":{"name":"joalves","email":"jonas@absmartly.com"},"overrides":{"@exodus/bytes":"1.8.0"},"repository":{"url":"git+https://github.com/absmartly/claude-code-bridge.git","type":"git"},"_npmVersion":"11.3.0","description":"HTTP bridge server for ABsmartly Extension to communicate with Claude Code CLI","directories":{},"_nodeVersion":"22.15.0","dependencies":{"cors":"^2.8.5","jsdom":"^27.3.0","dotenv":"^16.3.1","express":"^4.18.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"nodemon":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/claude-code-bridge_1.1.1_1768312352187_0.3578939511049679","host":"s3://npm-registry-packages-npm-production"}},"1.1.2":{"name":"@absmartly/claude-code-bridge","version":"1.1.2","keywords":["claude","absmartly","ab-testing","bridge"],"author":{"name":"ABsmartly"},"license":"MIT","_id":"@absmartly/claude-code-bridge@1.1.2","maintainers":[{"name":"marcioapm","email":"marcioapm@gmail.com"},{"name":"joalves","email":"jonas@absmartly.com"},{"name":"caltheabtester","email":"cal@absmartly.com"},{"name":"marcioabs","email":"marcio@absmartly.com"}],"homepage":"https://github.com/absmartly/claude-code-bridge#readme","bugs":{"url":"https://github.com/absmartly/claude-code-bridge/issues"},"bin":{"get-chunk":"bin/get-chunk.js","claude-code-bridge":"index.js"},"dist":{"shasum":"3a38a8236e6c171214b44b44ed82c41ac891a191","tarball":"https://registry.npmjs.org/@absmartly/claude-code-bridge/-/claude-code-bridge-1.1.2.tgz","fileCount":4,"integrity":"sha512-fF5Yn2yn9RH2Vf3FFzd9uPP0qKpFIEp1nTnz1fOItt/m0diD2fRWhQfZi6aMeMaWVFgSW7ffvRC0WpwU6WhcSQ==","signatures":[{"sig":"MEYCIQCANmwR0XnWOuKP/H9gNqiXQTeLguN4AMfbUOyUV7xIbAIhAPHrQ3Wsedr/ifl6ETuLNRQd+UcIXtHtpmrQ8+GB9EgD","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35520},"main":"index.js","engines":{"node":">=16.0.0"},"gitHead":"569dbaa122577717783148aeab554e8cf1902c8b","scripts":{"start":"nodemon --watch index.js --watch package.json --exitcrash index.js"},"_npmUser":{"name":"joalves","email":"jonas@absmartly.com"},"repository":{"url":"git+https://github.com/absmartly/claude-code-bridge.git","type":"git"},"_npmVersion":"11.3.0","description":"HTTP bridge server for ABsmartly Extension to communicate with Claude Code CLI","directories":{},"_nodeVersion":"22.15.0","dependencies":{"cors":"^2.8.5","jsdom":"^25.0.0","dotenv":"^16.3.1","express":"^4.18.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"nodemon":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/claude-code-bridge_1.1.2_1768312852199_0.333105493246197","host":"s3://npm-registry-packages-npm-production"}},"1.1.4":{"name":"@absmartly/claude-code-bridge","version":"1.1.4","description":"HTTP bridge server for ABsmartly Extension to communicate with Claude Code CLI","main":"index.js","bin":{"claude-code-bridge":"index.js","get-chunk":"bin/get-chunk.js"},"scripts":{"start":"nodemon --watch index.js --watch package.json --exitcrash index.js"},"keywords":["claude","absmartly","ab-testing","bridge"],"author":{"name":"ABsmartly"},"license":"MIT","dependencies":{"@acemir/cssom":"^0.9.31","cors":"^2.8.5","dotenv":"^16.3.1","express":"^4.18.2","jsdom":"^25.0.0"},"devDependencies":{"nodemon":"^3.0.1"},"engines":{"node":">=16.0.0"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/absmartly/claude-code-bridge.git"},"bugs":{"url":"https://github.com/absmartly/claude-code-bridge/issues"},"homepage":"https://github.com/absmartly/claude-code-bridge#readme","_id":"@absmartly/claude-code-bridge@1.1.4","gitHead":"5cf52aeb30677c307a989b1eb9fc00c968065113","_nodeVersion":"22.15.0","_npmVersion":"11.3.0","dist":{"integrity":"sha512-BKAmKh26cOLkMPKgbj1s67gyG3Eat/gVewAc1QO4+MUUiqbVqMPLM2xx0yEPqGPAgEZaywtApHlY2ZynXYheMA==","shasum":"06ea83081ff51420d156186c1337105f95ea75f5","tarball":"https://registry.npmjs.org/@absmartly/claude-code-bridge/-/claude-code-bridge-1.1.4.tgz","fileCount":4,"unpackedSize":37021,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIH/50Fx6x7IGBDjgd4Tw6qp78jOuXVuIAbph3mSQ0GNwAiEAihoMok01EaMfjinpBRy7pOlobDNVLPnEXwNfMJDsDqQ="}]},"_npmUser":{"name":"joalves","email":"jonas@absmartly.com"},"directories":{},"maintainers":[{"name":"marcioapm","email":"marcioapm@gmail.com"},{"name":"joalves","email":"jonas@absmartly.com"},{"name":"caltheabtester","email":"cal@absmartly.com"},{"name":"marcioabs","email":"marcio@absmartly.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/claude-code-bridge_1.1.4_1768903533074_0.1224078101946171"},"_hasShrinkwrap":false}},"time":{"created":"2025-11-28T15:16:34.470Z","modified":"2026-01-20T10:05:34.125Z","1.0.0":"2025-11-28T15:16:34.921Z","1.0.1":"2025-11-28T15:18:37.063Z","1.0.2":"2025-12-04T17:55:00.730Z","1.1.0":"2026-01-05T14:38:17.625Z","1.1.1":"2026-01-13T13:52:32.333Z","1.1.2":"2026-01-13T14:00:52.345Z","1.1.4":"2026-01-20T10:05:33.218Z"},"bugs":{"url":"https://github.com/absmartly/claude-code-bridge/issues"},"author":{"name":"ABsmartly"},"license":"MIT","homepage":"https://github.com/absmartly/claude-code-bridge#readme","keywords":["claude","absmartly","ab-testing","bridge"],"repository":{"type":"git","url":"git+https://github.com/absmartly/claude-code-bridge.git"},"description":"HTTP bridge server for ABsmartly Extension to communicate with Claude Code CLI","maintainers":[{"name":"marcioapm","email":"marcioapm@gmail.com"},{"name":"joalves","email":"jonas@absmartly.com"},{"name":"caltheabtester","email":"cal@absmartly.com"},{"name":"marcioabs","email":"marcio@absmartly.com"}],"readme":"# @absmartly/claude-code-bridge\n\nHTTP bridge server that enables the ABsmartly Browser Extension to communicate with Claude Code CLI for AI-powered A/B testing features.\n\n## Prerequisites\n\n- Node.js 16+\n- Claude Code CLI authenticated: `npx @anthropic-ai/claude-code login`\n\n## Quick Start\n\n```bash\nnpx @absmartly/claude-code-bridge\n```\n\nThe server will start on `http://localhost:3000` by default.\n\n## Usage\n\n### 1. Login to Claude CLI (one-time setup)\n\n```bash\nnpx @anthropic-ai/claude-code login\n```\n\nFollow the prompts to authenticate with your Claude subscription.\n\n### 2. Start the bridge server\n\n```bash\nnpx @absmartly/claude-code-bridge\n```\n\n### 3. Configure ABsmartly Extension\n\nIn the extension settings:\n1. Select \"Claude Subscription\" as your AI provider\n2. The extension will automatically connect to `http://localhost:3000`\n\n### Custom Port\n\n```bash\nPORT=3001 npx @absmartly/claude-code-bridge\n```\n\n## API Endpoints\n\n- `GET /health` - Health check and auth status\n- `GET /auth/status` - Claude CLI authentication status\n- `POST /conversations` - Create new conversation\n- `POST /conversations/:id/messages` - Send message to Claude\n- `GET /conversations/:id/stream` - Stream Claude responses (SSE)\n- `POST /conversations/:id/approve` - Approve tool use\n- `POST /conversations/:id/deny` - Deny tool use\n\n## How It Works\n\n1. **Authentication Check**: Reads your Claude credentials from `~/.claude/.credentials.json`\n2. **Claude CLI Spawn**: Spawns `npx @anthropic-ai/claude-code --json` subprocess\n3. **HTTP Bridge**: Provides REST API for the browser extension to communicate\n4. **Message Forwarding**: Routes messages between the extension and Claude CLI\n5. **Server-Sent Events**: Streams Claude responses back to the extension in real-time\n\n## Troubleshooting\n\n### \"Claude CLI not logged in\"\n\nRun: `npx @anthropic-ai/claude-code login`\n\n### \"Port already in use\"\n\nEither:\n- Kill the existing process: `pkill -f claude-code-bridge`\n- Or use a different port: `PORT=3001 npx @absmartly/claude-code-bridge`\n\n### Extension can't connect\n\n- Ensure the bridge is running: `http://localhost:3000/health` should return JSON\n- Check the port matches in extension settings\n- Restart the extension\n\n## License\n\nMIT\n","readmeFilename":"README.md"}