{"_id":"@anagnole/claude-cli-wrapper","_rev":"6-ed9e19603495d824341bb0a68241d6b9","name":"@anagnole/claude-cli-wrapper","dist-tags":{"latest":"0.3.1"},"versions":{"0.1.1":{"name":"@anagnole/claude-cli-wrapper","version":"0.1.1","keywords":["claude","cli","anthropic","proxy","agent"],"license":"MIT","_id":"@anagnole/claude-cli-wrapper@0.1.1","maintainers":[{"name":"anagnole","email":"anagnole@outlook.com.gr"}],"dist":{"shasum":"6420846abd1d9df7712cf79f8d2cef880586d47c","tarball":"https://registry.npmjs.org/@anagnole/claude-cli-wrapper/-/claude-cli-wrapper-0.1.1.tgz","fileCount":34,"integrity":"sha512-y5waPYdY7pNDxbbxVh+U3NaMlHZHTVAb/P5LkHtjX5l2zlWLZYDFRfH5FJrahUCvapiL6o1YbjryX+ceTJ9nKw==","signatures":[{"sig":"MEYCIQDitv3gOXVuoN2ifFjIlQZ92U/rygEnAXvfmKuMF+DLEQIhAOKluirDed910jp1iJYHZZfpjQcnyAiD+JH2z1FklIAo","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":55691},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./cli":{"types":"./dist/cli/spawn.d.ts","default":"./dist/cli/spawn.js"},"./types":{"types":"./dist/types.d.ts","default":"./dist/types.js"},"./parser":{"types":"./dist/cli/parser.d.ts","default":"./dist/cli/parser.js"},"./session":{"types":"./dist/session/session-map.d.ts","default":"./dist/session/session-map.js"}},"gitHead":"2d6c380b135f2a3071f7336ccd93e4d9a77c1f2b","scripts":{"build":"tsc","prepublishOnly":"tsc"},"_npmUser":{"name":"anagnole","email":"anagnole@outlook.com.gr"},"_npmVersion":"11.6.2","description":"Shared library for spawning, parsing, and managing Claude Code CLI sessions","directories":{},"_nodeVersion":"24.12.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/claude-cli-wrapper_0.1.1_1773833069981_0.7495096249061173","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@anagnole/claude-cli-wrapper","version":"0.1.2","keywords":["claude","cli","anthropic","proxy","agent"],"license":"MIT","_id":"@anagnole/claude-cli-wrapper@0.1.2","maintainers":[{"name":"anagnole","email":"anagnole@outlook.com.gr"}],"homepage":"https://github.com/anagnole/claude-cli#readme","bugs":{"url":"https://github.com/anagnole/claude-cli/issues"},"dist":{"shasum":"02211c9919baefbfd6c21a1b7da7643940a9a711","tarball":"https://registry.npmjs.org/@anagnole/claude-cli-wrapper/-/claude-cli-wrapper-0.1.2.tgz","fileCount":34,"integrity":"sha512-HzHLsTUMGJ6g0Dq3Y9OrKHNcRt+i7FRDp2kwtcbXLILh9F+H/SLsLrACW1n5OgqYuMlBzmIfL845dWQJe6e1XA==","signatures":[{"sig":"MEYCIQCLQKY9MZDPvyRpfObXCkzb5evN91MfzJeJhtgvV2CsMAIhAKm5h2IjTSI20k6gPLgxHRiU4EvtfMVFL9icMcUye8LL","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":55962},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./cli":{"types":"./dist/cli/spawn.d.ts","default":"./dist/cli/spawn.js"},"./types":{"types":"./dist/types.d.ts","default":"./dist/types.js"},"./parser":{"types":"./dist/cli/parser.d.ts","default":"./dist/cli/parser.js"},"./session":{"types":"./dist/session/session-map.d.ts","default":"./dist/session/session-map.js"}},"gitHead":"29b605dab80f764fcf86035aab118ae09076dafc","scripts":{"build":"tsc","prepublishOnly":"tsc"},"_npmUser":{"name":"anagnole","email":"anagnole@outlook.com.gr"},"repository":{"url":"git+https://github.com/anagnole/claude-cli.git","type":"git","directory":"packages/core"},"_npmVersion":"11.6.2","description":"Shared library for spawning, parsing, and managing Claude Code CLI sessions","directories":{},"_nodeVersion":"24.12.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/claude-cli-wrapper_0.1.2_1773833262430_0.30196340879543015","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@anagnole/claude-cli-wrapper","version":"0.2.0","keywords":["claude","cli","anthropic","proxy","agent"],"license":"MIT","_id":"@anagnole/claude-cli-wrapper@0.2.0","maintainers":[{"name":"anagnole","email":"anagnole@outlook.com.gr"}],"homepage":"https://github.com/anagnole/claude-cli#readme","bugs":{"url":"https://github.com/anagnole/claude-cli/issues"},"dist":{"shasum":"29bbe78f155ec2a6cd1d1002d568af28d859db4e","tarball":"https://registry.npmjs.org/@anagnole/claude-cli-wrapper/-/claude-cli-wrapper-0.2.0.tgz","fileCount":34,"integrity":"sha512-VSJKcqQNAxfALDz5h2TNt2ILvbOvWoWR/ETsAJU14Mg6iZp2Hi+xT3Laq15XZh5qEvZSpUCoOCq7fwhwz2qQIA==","signatures":[{"sig":"MEUCIEcmXlHNy+oPwgUgZfA40tY5MixyXx/SS5vSPf7RYQTeAiEAttAlf6JRqesUQH+aL2efAkDXCht03YkMUQ7gx2I10j8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":56881},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./cli":{"types":"./dist/cli/spawn.d.ts","default":"./dist/cli/spawn.js"},"./types":{"types":"./dist/types.d.ts","default":"./dist/types.js"},"./parser":{"types":"./dist/cli/parser.d.ts","default":"./dist/cli/parser.js"},"./session":{"types":"./dist/session/session-map.d.ts","default":"./dist/session/session-map.js"}},"gitHead":"cac204dfd4a243b68bbdbb31a2168dece44f6676","scripts":{"build":"tsc","prepublishOnly":"tsc"},"_npmUser":{"name":"anagnole","email":"anagnole@outlook.com.gr"},"repository":{"url":"git+https://github.com/anagnole/claude-cli.git","type":"git","directory":"packages/core"},"_npmVersion":"11.6.2","description":"Shared library for spawning, parsing, and managing Claude Code CLI sessions","directories":{},"_nodeVersion":"24.12.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/claude-cli-wrapper_0.2.0_1773853392161_0.8928455987487824","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@anagnole/claude-cli-wrapper","version":"0.2.1","keywords":["claude","cli","anthropic","proxy","agent"],"license":"MIT","_id":"@anagnole/claude-cli-wrapper@0.2.1","maintainers":[{"name":"anagnole","email":"anagnole@outlook.com.gr"}],"homepage":"https://github.com/anagnole/claude-cli#readme","bugs":{"url":"https://github.com/anagnole/claude-cli/issues"},"dist":{"shasum":"daeef241dc755f15d9a7be55813db5c5471a7f0e","tarball":"https://registry.npmjs.org/@anagnole/claude-cli-wrapper/-/claude-cli-wrapper-0.2.1.tgz","fileCount":34,"integrity":"sha512-UArs2pXJTdM4eUVWT4cncXySPf8w8uSjT6DLVbOy5ZqMGH5O4W2U9nwm8vkRs+BCgEVONB23j4UIAb2RdfIa2w==","signatures":[{"sig":"MEUCIQC2o34ZGa1PW+LAZZEzRCkLPmgdW6NkS6DjFx8i3Cq5rgIgbnfHcfNmqhbtvsN9bWdIb9zo+jjNMTN5aPQa7JZNd3s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":57818},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./cli":{"types":"./dist/cli/spawn.d.ts","default":"./dist/cli/spawn.js"},"./types":{"types":"./dist/types.d.ts","default":"./dist/types.js"},"./parser":{"types":"./dist/cli/parser.d.ts","default":"./dist/cli/parser.js"},"./session":{"types":"./dist/session/session-map.d.ts","default":"./dist/session/session-map.js"}},"gitHead":"13e4a3dce824f2f6127cfaa142441d5551742712","scripts":{"build":"tsc","prepublishOnly":"tsc"},"_npmUser":{"name":"anagnole","email":"anagnole@outlook.com.gr"},"repository":{"url":"git+https://github.com/anagnole/claude-cli.git","type":"git","directory":"packages/core"},"_npmVersion":"11.6.2","description":"Shared library for spawning, parsing, and managing Claude Code CLI sessions","directories":{},"_nodeVersion":"24.12.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/claude-cli-wrapper_0.2.1_1773853601276_0.055161248774935334","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@anagnole/claude-cli-wrapper","version":"0.3.0","keywords":["claude","ollama","llm","provider","anthropic","cli","agent"],"license":"MIT","_id":"@anagnole/claude-cli-wrapper@0.3.0","maintainers":[{"name":"anagnole","email":"anagnole@outlook.com.gr"}],"homepage":"https://github.com/anagnole/claude-cli#readme","bugs":{"url":"https://github.com/anagnole/claude-cli/issues"},"dist":{"shasum":"fe14f3e6e15f775b5726dd340b15a45b60e23d58","tarball":"https://registry.npmjs.org/@anagnole/claude-cli-wrapper/-/claude-cli-wrapper-0.3.0.tgz","fileCount":54,"integrity":"sha512-H69abDFrTQZ6jaSdCDrTADfQkl4MU7UfXGsk3Yq7sq9I+hfscRNiL50LrvteH/5iqNNtHKZqCVo/Fsb5QUs3Fw==","signatures":[{"sig":"MEQCIG6mP043aL95aGWFK4HB1GoOfMS/oa/uMDoTZoV4ajnuAiB52gQ+glrMS/byKs+cxQfvBudhOCCSLTVYh/PkpZu4nw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":113119},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./cli":{"types":"./dist/cli/spawn.d.ts","default":"./dist/cli/spawn.js"},"./types":{"types":"./dist/types.d.ts","default":"./dist/types.js"},"./parser":{"types":"./dist/cli/parser.d.ts","default":"./dist/cli/parser.js"},"./session":{"types":"./dist/session/session-map.d.ts","default":"./dist/session/session-map.js"},"./provider":{"types":"./dist/provider/index.d.ts","default":"./dist/provider/index.js"}},"gitHead":"6ec83aee03249bf45f55a0b246681b34e27233bf","scripts":{"build":"tsc","prepublishOnly":"tsc"},"_npmUser":{"name":"anagnole","email":"anagnole@outlook.com.gr"},"repository":{"url":"git+https://github.com/anagnole/claude-cli.git","type":"git","directory":"packages/core"},"_npmVersion":"11.6.2","description":"Unified provider abstraction for Claude CLI and Ollama — one API for any model","directories":{},"_nodeVersion":"24.12.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/claude-cli-wrapper_0.3.0_1774541659845_0.971204945196098","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@anagnole/claude-cli-wrapper","version":"0.3.1","description":"Unified provider abstraction for Claude CLI, Ollama, and OpenRouter — one API for any model","type":"module","main":"dist/index.js","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./cli":{"types":"./dist/cli/spawn.d.ts","default":"./dist/cli/spawn.js"},"./parser":{"types":"./dist/cli/parser.d.ts","default":"./dist/cli/parser.js"},"./session":{"types":"./dist/session/session-map.d.ts","default":"./dist/session/session-map.js"},"./types":{"types":"./dist/types.d.ts","default":"./dist/types.js"},"./provider":{"types":"./dist/provider/index.d.ts","default":"./dist/provider/index.js"}},"scripts":{"build":"tsc","prepublishOnly":"tsc"},"keywords":["claude","ollama","openrouter","llm","provider","anthropic","cli","agent"],"license":"MIT","repository":{"type":"git","url":"git+https://github.com/anagnole/claude-cli.git","directory":"packages/core"},"homepage":"https://github.com/anagnole/claude-cli#readme","bugs":{"url":"https://github.com/anagnole/claude-cli/issues"},"engines":{"node":">=18"},"gitHead":"1640d6421de6a35f7ed1e7aaec105242e2351816","_id":"@anagnole/claude-cli-wrapper@0.3.1","_nodeVersion":"24.12.0","_npmVersion":"11.6.2","dist":{"integrity":"sha512-/OOqtHRWuCvlRcXvdwutibsnViycwxduuR47p1YAeAUZa/V79mw3B5SaYs3dUMg6AOYOeuwjub9w3+vMl+PzBg==","shasum":"ea5aa13535ca36b8673aef8f183628f4178b457b","tarball":"https://registry.npmjs.org/@anagnole/claude-cli-wrapper/-/claude-cli-wrapper-0.3.1.tgz","fileCount":58,"unpackedSize":142729,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCi9PsrkBNDi+lQAog1XTWkkxZMdflsX3s6GdQQErSLPgIhAJxjRUh+XjsxbNKo0OnH+XMaoKkf1iIRGhSttEfUX570"}]},"_npmUser":{"name":"anagnole","email":"anagnole@outlook.com.gr"},"directories":{},"maintainers":[{"name":"anagnole","email":"anagnole@outlook.com.gr"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/claude-cli-wrapper_0.3.1_1774887101708_0.6427824109072069"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-18T11:24:29.873Z","modified":"2026-03-30T16:11:42.017Z","0.1.1":"2026-03-18T11:24:30.114Z","0.1.2":"2026-03-18T11:27:42.589Z","0.2.0":"2026-03-18T17:03:12.337Z","0.2.1":"2026-03-18T17:06:41.460Z","0.3.0":"2026-03-26T16:14:19.970Z","0.3.1":"2026-03-30T16:11:41.907Z"},"bugs":{"url":"https://github.com/anagnole/claude-cli/issues"},"license":"MIT","homepage":"https://github.com/anagnole/claude-cli#readme","keywords":["claude","ollama","openrouter","llm","provider","anthropic","cli","agent"],"repository":{"type":"git","url":"git+https://github.com/anagnole/claude-cli.git","directory":"packages/core"},"description":"Unified provider abstraction for Claude CLI, Ollama, and OpenRouter — one API for any model","maintainers":[{"name":"anagnole","email":"anagnole@outlook.com.gr"}],"readme":"# @anagnole/claude-cli-wrapper\n\nA shared library providing a unified provider abstraction for [Claude Code CLI](https://code.claude.com), [Ollama](https://ollama.com), and [OpenRouter](https://openrouter.ai) models from TypeScript/Node.js. Use Claude, Llama, Mistral, or any Ollama/OpenRouter model through one API — all returning Anthropic Messages API format.\n\n## Install\n\n```bash\nnpm install @anagnole/claude-cli-wrapper\n```\n\nRequires the Claude CLI (`claude`) for Claude models, and/or Ollama for local models, and/or an OpenRouter API key for free cloud models.\n\n## Provider abstraction\n\nThe `ProviderRegistry` routes requests to the right provider based on model ID. Claude models go through the CLI, `openrouter/` prefixed models go to OpenRouter, everything else falls through to Ollama.\n\n```typescript\nimport {\n  ProviderRegistry,\n  ClaudeCliProvider,\n  OllamaProvider,\n  OpenRouterProvider,\n} from \"@anagnole/claude-cli-wrapper\";\n\nconst registry = new ProviderRegistry();\nregistry.register(new ClaudeCliProvider({ defaultModel: \"claude-sonnet-4-6\" }));\nregistry.register(new OpenRouterProvider({ apiKey: process.env.OPENROUTER_API_KEY! }));\nregistry.register(new OllamaProvider({ baseUrl: \"http://localhost:11434\" }));\n\n// Route automatically by model ID\nconst provider = registry.resolve(\"llama3.2:3b\");   // → OllamaProvider\nconst provider2 = registry.resolve(\"claude-sonnet-4-6\"); // → ClaudeCliProvider\nconst provider3 = registry.resolve(\"openrouter/meta-llama/llama-3.3-70b-instruct:free\"); // → OpenRouterProvider\n\n// Same API regardless of provider\nconst response = await provider.complete({\n  model: \"llama3.2:3b\",\n  messages: [{ role: \"user\", content: \"Hello\" }],\n});\nconsole.log(response.content[0].text);\n```\n\n### Streaming\n\n```typescript\nconst cancel = provider.stream(request, {\n  onEvent: (sse) => process.stdout.write(sse),\n  onDone: (result) => console.log(\"done:\", result.assistantText),\n  onError: (err) => console.error(err),\n});\n\n// Cancel anytime\ncancel();\n```\n\n### List all models\n\n```typescript\nconst models = await registry.listAllModels();\n// [{ id: \"claude-sonnet-4-6\", provider: \"claude-cli\", ... },\n//  { id: \"llama3.2:3b\", provider: \"ollama\", ... }, ...]\n```\n\n### Use a provider directly\n\n```typescript\nconst ollama = new OllamaProvider({ baseUrl: \"http://gpu-box:11434\" });\nconst response = await ollama.complete({\n  model: \"mistral:7b\",\n  messages: [{ role: \"user\", content: \"Hello\" }],\n});\n\n// OpenRouter — free cloud models, no GPU needed\nconst openrouter = new OpenRouterProvider({ apiKey: \"sk-or-...\" });\nconst response2 = await openrouter.complete({\n  model: \"meta-llama/llama-3.3-70b-instruct:free\",\n  messages: [{ role: \"user\", content: \"Hello\" }],\n});\n```\n\n### Custom providers\n\nImplement the `Provider` interface to add any model source:\n\n```typescript\nimport type { Provider } from \"@anagnole/claude-cli-wrapper\";\n\nclass TogetherProvider implements Provider {\n  readonly name = \"together\";\n  canHandle(model: string) { return model.startsWith(\"together/\"); }\n  async listModels() { /* ... */ }\n  async complete(request) { /* ... */ }\n  stream(request, callbacks) { /* ... */ }\n}\n\nregistry.register(new TogetherProvider({ apiKey: \"...\" }));\n```\n\n## Low-level CLI access\n\nFor full control over the Claude CLI process:\n\n```typescript\nimport { spawnClaude } from \"@anagnole/claude-cli-wrapper\";\n\nconst child = spawnClaude({\n  prompt: \"Fix the auth bug\",\n  model: \"claude-sonnet-4-6\",\n  streaming: false,\n  systemPrompt: \"You are a senior engineer.\",\n  permissionMode: \"bypassPermissions\",\n  allowedTools: [\"Bash(git *)\", \"Read\", \"Edit\"],\n  mcpConfig: \"/path/to/mcp-config.json\",\n  workingDirectory: \"/path/to/project\",\n  maxTurns: 10,\n  maxBudgetUsd: 1.00,\n});\n```\n\n## Subpath imports\n\n```typescript\nimport { spawnClaude } from \"@anagnole/claude-cli-wrapper/cli\";\nimport { NdjsonParser } from \"@anagnole/claude-cli-wrapper/parser\";\nimport { SessionMap } from \"@anagnole/claude-cli-wrapper/session\";\nimport { ProviderRegistry } from \"@anagnole/claude-cli-wrapper/provider\";\nimport type { MessagesRequest } from \"@anagnole/claude-cli-wrapper/types\";\n```\n\n## All exports\n\n```typescript\n// Providers\nProviderRegistry, ClaudeCliProvider, OllamaProvider, OpenRouterProvider\nProvider, ModelInfo, ProviderStreamCallbacks  // types\nClaudeCliProviderOptions, OllamaProviderConfig, OpenRouterProviderConfig // types\n\n// CLI (low-level)\nspawnClaude, SpawnOptions, NdjsonParser\n\n// Session\nSessionMap, SessionLookup\n\n// Transform\nextractPrompt, extractSystem, warnUnsupported\nbuildResponse, generateMsgId\ncreateStreamState, transformEvent, StreamState\n\n// Types\nContentBlock, SystemBlock, MessageParam,\nMessagesRequest, MessagesResponse, Usage, ApiError, apiError\n```\n\n## Companion: API server\n\nThis package also comes with a companion HTTP server (`@anagnole/claude-api-server`) that wraps the provider registry as an Anthropic Messages API-compatible endpoint. See the [monorepo README](https://github.com/anagnole/claude-api) for details.\n","readmeFilename":"README.md"}