{"_id":"@allternit/sdk","_rev":"3-2093af517665fad81f1be804fc8b6354","name":"@allternit/sdk","dist-tags":{"latest":"1.3.0"},"versions":{"1.0.0":{"name":"@allternit/sdk","version":"1.0.0","keywords":["allternit","sdk","ai","platform","workflow","agents"],"author":{"name":"Allternit"},"license":"MIT","_id":"@allternit/sdk@1.0.0","maintainers":[{"name":"allternit","email":"allternitpbc@gmail.com"}],"dist":{"shasum":"8dcae20074a815f7e6b5cf20a38d8d9e19dc8e77","tarball":"https://registry.npmjs.org/@allternit/sdk/-/sdk-1.0.0.tgz","fileCount":3,"integrity":"sha512-8J2Db2O/rokZcj8e6UGO/F9+bvi4NEsdh8wci9N5Tr9wAu9FaBb9+pomOYwdvUW6IECOyRlf7EzW3ulMzoiIiQ==","signatures":[{"sig":"MEUCIEonvkQlVQlmK6kAeZiF3TywUaIwKGW9ZUEOLJwbRdXEAiEAk0w1O+yLMV3rAKPErG6UevXwt3mcJyTFu2QHennxqIk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3831},"main":"index.js","type":"module","types":"index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"671738761038cf4797054f194cf4004d04add14f","scripts":{"postinstall":"echo 'Allternit SDK installed. Import specific packages as needed.'"},"_npmUser":{"name":"allternit","email":"allternitpbc@gmail.com"},"_npmVersion":"11.9.0","description":"Allternit SDK - Complete AI platform SDK for building intelligent applications","directories":{},"_nodeVersion":"25.6.1","dependencies":{"@allternit/ix":"^0.1.0","@allternit/viz":"^0.1.0","@allternit/types":"^1.0.0","@allternit/adapters":"^1.0.0","@allternit/api-client":"^1.0.0","@allternit/plugin-sdk":"^1.0.0","@allternit/capsule-sdk":"^0.1.0","@allternit/parallel-run":"^1.0.0","@allternit/visual-state":"^1.0.0","@allternit/browser-tools":"^0.1.0","@allternit/executor-core":"^1.0.0","@allternit/form-surfaces":"^1.0.0","@allternit/avatar-adapters":"^1.0.0","@allternit/replies-reducer":"^1.0.0","@allternit/workflow-engine":"^0.1.0","@allternit/replies-contract":"^1.0.0","@allternit/provider-adapters":"^1.0.0","@allternit/executor-superconductor":"^1.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"optionalDependencies":{"@allternit/gizzi-code":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk_1.0.0_1776052462736_0.8816036483620482","host":"s3://npm-registry-packages-npm-production"}},"1.2.10":{"name":"@allternit/sdk","version":"1.2.10","license":"MIT","_id":"@allternit/sdk@1.2.10","maintainers":[{"name":"allternit","email":"allternitpbc@gmail.com"}],"dist":{"shasum":"033dff40be80b9f13bc5d2f9da2ff52b216ff30e","tarball":"https://registry.npmjs.org/@allternit/sdk/-/sdk-1.2.10.tgz","fileCount":166,"integrity":"sha512-nZRVmDQgYxty26aB5HMRo7LMRNqMQG49NbrHtp+yshKV7rY1eo+qu+JSHhEicBURAH+4hyvq1EB/vB2BVmoqJg==","signatures":[{"sig":"MEUCIF9mDrSr5fWIo1KVwC8ZpCKT+Po2Vtahck7dxxFOWP4EAiEArATzv0XhksYy8user4essouCAf0/JV0rpdeDGDxpcew=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2354564},"type":"module","$schema":"https://json.schemastore.org/package.json","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./acp":{"types":"./dist/acp/index.d.ts","import":"./dist/acp/index.js"},"./meta":{"types":"./dist/meta.d.ts","import":"./dist/meta.js"},"./tools":{"types":"./dist/tools.d.ts","import":"./dist/tools.js"},"./client":{"types":"./dist/gen/client.d.ts","import":"./dist/gen/client.js"},"./server":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./harness":{"types":"./dist/harness/index.d.ts","import":"./dist/harness/index.js"},"./providers":{"types":"./dist/providers/registry.d.ts","import":"./dist/providers/registry.js"},"./ai-runtime":{"types":"./dist/ai-runtime.d.ts","import":"./dist/ai-runtime.js"},"./computer-use":{"types":"./dist/computer-use.d.ts","import":"./dist/computer-use.js"},"./providers/groq":{"types":"./dist/providers/groq/index.d.ts","import":"./dist/providers/groq/index.js"},"./providers/azure":{"types":"./dist/providers/azure/index.d.ts","import":"./dist/providers/azure/index.js"},"./providers/cohere":{"types":"./dist/providers/cohere/index.d.ts","import":"./dist/providers/cohere/index.js"},"./providers/google":{"types":"./dist/providers/google/index.d.ts","import":"./dist/providers/google/index.js"},"./providers/ollama":{"types":"./dist/providers/ollama/index.d.ts","import":"./dist/providers/ollama/index.js"},"./providers/openai":{"types":"./dist/providers/openai/index.d.ts","import":"./dist/providers/openai/index.js"},"./providers/bedrock":{"types":"./dist/providers/bedrock/index.d.ts","import":"./dist/providers/bedrock/index.js"},"./providers/mistral":{"types":"./dist/providers/mistral/index.d.ts","import":"./dist/providers/mistral/index.js"},"./providers/together":{"types":"./dist/providers/together/index.d.ts","import":"./dist/providers/together/index.js"},"./providers/anthropic":{"types":"./dist/providers/anthropic/index.d.ts","import":"./dist/providers/anthropic/index.js"}},"_npmUser":{"name":"allternit","email":"allternitpbc@gmail.com"},"_npmVersion":"11.9.0","directories":{},"_nodeVersion":"25.6.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/sdk_1.2.10_1776106512715_0.14715170313217008","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"$schema":"https://json.schemastore.org/package.json","name":"@allternit/sdk","version":"1.3.0","type":"module","license":"MIT","scripts":{"build:runtime":"tsc --project tsconfig.runtime.json"},"exports":{".":{"import":"./dist/index.js","types":"./dist/index.d.ts"},"./client":{"import":"./dist/gen/client.js","types":"./dist/gen/client.d.ts"},"./server":{"import":"./dist/index.js","types":"./dist/index.d.ts"},"./tools":{"import":"./dist/tools.js","types":"./dist/tools.d.ts"},"./computer-use":{"import":"./dist/computer-use.js","types":"./dist/computer-use.d.ts"},"./ai-runtime":{"import":"./dist/ai-runtime.js","types":"./dist/ai-runtime.d.ts"},"./harness":{"import":"./dist/harness/index.js","types":"./dist/harness/index.d.ts"},"./providers":{"import":"./dist/providers/registry.js","types":"./dist/providers/registry.d.ts"},"./providers/anthropic":{"import":"./dist/providers/anthropic/index.js","types":"./dist/providers/anthropic/index.d.ts"},"./providers/openai":{"import":"./dist/providers/openai/index.js","types":"./dist/providers/openai/index.d.ts"},"./providers/google":{"import":"./dist/providers/google/index.js","types":"./dist/providers/google/index.d.ts"},"./providers/ollama":{"import":"./dist/providers/ollama/index.js","types":"./dist/providers/ollama/index.d.ts"},"./providers/mistral":{"import":"./dist/providers/mistral/index.js","types":"./dist/providers/mistral/index.d.ts"},"./providers/cohere":{"import":"./dist/providers/cohere/index.js","types":"./dist/providers/cohere/index.d.ts"},"./providers/groq":{"import":"./dist/providers/groq/index.js","types":"./dist/providers/groq/index.d.ts"},"./providers/together":{"import":"./dist/providers/together/index.js","types":"./dist/providers/together/index.d.ts"},"./providers/azure":{"import":"./dist/providers/azure/index.js","types":"./dist/providers/azure/index.d.ts"},"./providers/bedrock":{"import":"./dist/providers/bedrock/index.js","types":"./dist/providers/bedrock/index.d.ts"},"./acp":{"import":"./dist/acp/index.js","types":"./dist/acp/index.d.ts"},"./runtime":{"import":"./dist/runtime/index.js","types":"./dist/runtime/index.d.ts"},"./meta":{"import":"./dist/meta.js","types":"./dist/meta.d.ts"}},"dependencies":{"pdfjs-dist":"^5.4.54","@napi-rs/canvas":"^0.1.88","zod":"^3.x"},"_id":"@allternit/sdk@1.3.0","gitHead":"054d1858a5adfd0d46b1dda09e1a29e05f22580d","description":"The official Allternit SDK for AI interactions.","_nodeVersion":"20.20.2","_npmVersion":"10.8.2","dist":{"integrity":"sha512-MQQTF0K8z9F1ulifHUagbJVTYIyMlffw0WlwaB0UWuWnrc8IEUatcYRqVs5CP7ubIG8MlugQ79lNlPRgsI9SdA==","shasum":"25d94e1922acdf899f29540209bcd43ca27eefe1","tarball":"https://registry.npmjs.org/@allternit/sdk/-/sdk-1.3.0.tgz","fileCount":271,"unpackedSize":2063401,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCICblzGboG5OM5xI69gLh8M0KQD3B5vMmX0QLWjn+mhiMAiEA2pq7N23OE1uIV/ro62mlID8tONtNRqdn8WGekOqgmhY="}]},"_npmUser":{"name":"allternit","email":"allternitpbc@gmail.com"},"directories":{},"maintainers":[{"name":"allternit","email":"allternitpbc@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/sdk_1.3.0_1788560402727_0.47764880722871084"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-13T03:54:22.621Z","modified":"2026-09-04T22:20:03.052Z","1.0.0":"2026-04-13T03:54:22.861Z","1.2.10":"2026-04-13T18:55:12.970Z","1.3.0":"2026-09-04T22:20:02.893Z"},"license":"MIT","maintainers":[{"name":"allternit","email":"allternitpbc@gmail.com"}],"readme":"# @allternit/sdk\n\nThe official Allternit SDK for AI interactions.\n\n## Installation\n\n```bash\nnpm install @allternit/sdk\n```\n\n## Quick Start\n\n### BYOK Mode (Bring Your Own Key)\n\n```typescript\nimport { AllternitHarness } from '@allternit/sdk';\n\nconst harness = new AllternitHarness({\n  mode: 'byok',\n  byok: {\n    anthropic: { apiKey: process.env.ANTHROPIC_API_KEY },\n    openai: { apiKey: process.env.OPENAI_API_KEY },\n    google: { apiKey: process.env.GOOGLE_API_KEY },\n  }\n});\n\nconst stream = harness.stream({\n  provider: 'anthropic',\n  model: 'claude-3-haiku-20240307',\n  messages: [{ role: 'user', content: 'Hello!' }]\n});\n\nfor await (const chunk of stream) {\n  if (chunk.type === 'text') {\n    process.stdout.write(chunk.text);\n  }\n}\n```\n\n### Cloud Mode\n\n```typescript\nconst harness = new AllternitHarness({\n  mode: 'cloud',\n  cloud: {\n    baseURL: 'https://api.allternit.com',\n    accessToken: 'your-oauth-token'\n  }\n});\n```\n\n### Local Mode (Ollama)\n\n```typescript\nconst harness = new AllternitHarness({\n  mode: 'local',\n  local: {\n    baseURL: 'http://localhost:11434'\n  }\n});\n```\n\n## Supported Providers\n\nThe SDK includes built-in support for 10 AI providers:\n\n| Provider | Import | Features |\n|----------|--------|----------|\n| Anthropic Claude | `AllternitAI` | Streaming, Tools, Vision |\n| OpenAI | `AllternitOpenAI` | Streaming, Tools, Vision, JSON Mode |\n| Google AI | `AllternitGoogleAI` | Streaming, Tools, Vision, Multi-modal |\n| Mistral AI | `AllternitMistral` | Streaming, Tools, JSON Mode |\n| Cohere | `AllternitCohere` | Streaming, Tools |\n| Groq | `AllternitGroq` | Streaming, Tools, Ultra-fast |\n| Together AI | `AllternitTogether` | Streaming, Tools, OSS Models |\n| Azure OpenAI | `AllternitAzure` | Streaming, Tools, Vision |\n| AWS Bedrock | `AllternitBedrock` | Streaming, Tools, Vision |\n| Ollama | `AllternitOllama` | Streaming, Tools, Local |\n\n### Provider Usage Examples\n\n```typescript\nimport { \n  AllternitAI,        // Anthropic\n  AllternitOpenAI,    // OpenAI\n  AllternitGoogleAI,  // Google\n  AllternitMistral,   // Mistral\n  AllternitCohere,    // Cohere\n  AllternitGroq,      // Groq\n  AllternitTogether,  // Together AI\n  AllternitAzure,     // Azure OpenAI\n  AllternitBedrock,   // AWS Bedrock\n  AllternitOllama,    // Ollama\n} from '@allternit/sdk';\n\n// Anthropic\nconst anthropic = new AllternitAI({ apiKey: 'your-key' });\n\n// OpenAI\nconst openai = new AllternitOpenAI({ apiKey: 'your-key' });\n\n// Google\nconst google = new AllternitGoogleAI({ apiKey: 'your-key' });\n\n// Mistral\nconst mistral = new AllternitMistral({ apiKey: 'your-key' });\n\n// Cohere\nconst cohere = new AllternitCohere({ apiKey: 'your-key' });\n\n// Groq (ultra-fast inference)\nconst groq = new AllternitGroq({ apiKey: 'your-key' });\n\n// Together AI\nconst together = new AllternitTogether({ apiKey: 'your-key' });\n\n// Azure OpenAI\nconst azure = new AllternitAzure({\n  apiKey: 'your-key',\n  endpoint: 'https://your-resource.openai.azure.com',\n  deploymentId: 'your-deployment'\n});\n\n// AWS Bedrock\nconst bedrock = new AllternitBedrock({\n  region: 'us-east-1',\n  accessKeyId: 'your-access-key',\n  secretAccessKey: 'your-secret-key'\n});\n\n// Ollama (local)\nconst ollama = new AllternitOllama({\n  baseURL: 'http://localhost:11434'\n});\n```\n\n## Provider Registry\n\nThe provider registry provides metadata and discovery for all supported providers:\n\n```typescript\nimport { \n  listProviders, \n  getProvider, \n  findProvidersByFeature,\n  createProvider \n} from '@allternit/sdk';\n\n// List all providers\nconst providers = listProviders();\n// ['anthropic', 'openai', 'google', 'ollama', 'mistral', \n//  'cohere', 'groq', 'together', 'azure', 'bedrock']\n\n// Get provider metadata\nconst anthropicMeta = getProvider('anthropic');\nconsole.log(anthropicMeta);\n// {\n//   name: 'anthropic',\n//   displayName: 'Anthropic Claude',\n//   supportsStreaming: true,\n//   supportsTools: true,\n//   supportsVision: true,\n//   models: ['claude-3-5-sonnet-20241022', ...],\n//   features: ['streaming', 'tools', 'vision', ...]\n// }\n\n// Find providers by feature\nconst visionProviders = findProvidersByFeature('vision');\nconst streamingWithTools = findProvidersByFeature('streaming', 'tools');\n\n// Create provider via factory\nconst provider = createProvider('ollama', { \n  baseURL: 'http://localhost:11434' \n});\n```\n\n## ACP (Agent Capability Protocol)\n\nThe SDK includes a complete implementation of the Agent Capability Protocol for inter-agent communication.\n\n### ACP Registry\n\n```typescript\nimport { acpRegistry, ACPRegistry } from '@allternit/sdk';\n\n// Use the global registry\nacpRegistry.register({\n  agentId: 'my-agent',\n  name: 'My Agent',\n  description: 'An AI agent',\n  version: '1.0.0',\n  capabilities: [{\n    name: 'chat',\n    description: 'Chat capability',\n    version: '1.0.0',\n    tools: []\n  }],\n  endpoints: {},\n  authentication: { type: 'none' },\n  metadata: {\n    tags: ['ai', 'chat'],\n    category: 'agent',\n    author: 'You',\n    license: 'MIT'\n  },\n  status: 'active',\n  registeredAt: new Date().toISOString(),\n  lastSeenAt: new Date().toISOString()\n});\n\n// Or create your own registry\nconst registry = new ACPRegistry({\n  maxEntries: 1000,\n  ttlMs: 3600000, // 1 hour\n  enableHeartbeat: true\n});\n```\n\n### ACP Messages\n\n```typescript\nimport { \n  validateMessage, \n  ACPMessageSchema,\n  type ACPMessage \n} from '@allternit/sdk';\n\n// Create a valid message\nconst message: ACPMessage = {\n  id: crypto.randomUUID(),\n  version: '1.0',\n  timestamp: new Date().toISOString(),\n  source: {\n    agentId: 'agent-1',\n    capability: 'chat'\n  },\n  target: {\n    agentId: 'agent-2'\n  },\n  type: 'request',\n  payload: {\n    action: 'chat',\n    parameters: {\n      message: 'Hello!'\n    }\n  },\n  metadata: {\n    priority: 'normal'\n  }\n};\n\n// Validate the message\nconst result = validateMessage(message);\nif (result.valid) {\n  console.log('Message is valid:', result.data);\n} else {\n  console.error('Validation errors:', result.errors);\n}\n```\n\n### ACP Harness Bridge\n\nConnect ACP agents to the AllternitHarness:\n\n```typescript\nimport { ACPHarnessBridge, AllternitHarness } from '@allternit/sdk';\n\nconst harness = new AllternitHarness({\n  mode: 'byok',\n  byok: { anthropic: { apiKey: process.env.ANTHROPIC_API_KEY } }\n});\n\nconst bridge = new ACPHarnessBridge({\n  harness,\n  agentId: 'my-acp-agent',\n  capabilities: ['chat', 'stream'],\n  enableStreaming: true\n});\n\n// Register the agent\nbridge.register();\n\n// Process incoming ACP messages\nconst response = await bridge.processMessage(incomingMessage);\n\n// Get bridge stats\nconst stats = bridge.getStats();\nconsole.log(stats);\n```\n\n## AI Runtime (`@allternit/sdk/ai-runtime`)\n\nThe AI Runtime subpath provides stateful agent execution with a native tool registry, capability system, and run persistence.\n\n> 📖 See [`ARCHITECTURE.md`](./ARCHITECTURE.md) for the canonical architecture reference covering the execution model, tool registry, harness providers, capabilities, persistence, and platform integration.\n\n### Quick Start\n\n```typescript\nimport { AllternitHarness, AllternitAgent } from '@allternit/sdk/ai-runtime';\n\nconst harness = new AllternitHarness({\n  mode: 'byok',\n  byok: { anthropic: { apiKey: process.env.ANTHROPIC_API_KEY } }\n});\n\nconst agent = new AllternitAgent(harness, {\n  capabilities: ['filesystem', 'computer-use'],\n  computerUseBaseUrl: 'http://127.0.0.1:8760',\n  persistencePath: './.allternit/runs.db'\n});\n\nconst run = agent.run({\n  provider: 'anthropic',\n  model: 'claude-sonnet-4-20250514',\n  messages: [{ role: 'user', content: 'List files in my workspace' }]\n});\n\nrun.on('text', (text) => process.stdout.write(text));\nrun.on('tool_call', (tc) => console.log('Tool called:', tc.name));\nrun.on('completed', () => console.log('Done'));\n```\n\n### Tool Registry\n\n```typescript\nimport { ToolRegistry, NativeToolBelt } from '@allternit/sdk/ai-runtime';\n\nconst registry = new ToolRegistry();\n\n// Register an active tool\nregistry.registerTool({\n  name: 'calculate',\n  description: 'Perform a calculation',\n  input_schema: { type: 'object', properties: { expression: { type: 'string' } }, required: ['expression'] },\n  execute: async (args) => eval(args.expression)\n});\n\n// Register a deferred tool (discoverable via tool_search)\nregistry.registerDeferredTool({\n  id: 'advanced_math',\n  name: 'advanced_math',\n  description: 'Advanced mathematical operations',\n  input_schema: { type: 'object', properties: {} },\n  activate: () => ({ /* full ToolDefinition */ })\n});\n\n// Search and activate\nconst results = registry.search('math');\nregistry.activateTool('advanced_math');\n\n// Snapshot for persistence\nconst snapshot = registry.snapshot();\nregistry.rehydrate(snapshot);\n```\n\n### Capabilities\n\n| Capability | Tools Provided | Config Option |\n|-----------|----------------|---------------|\n| `filesystem` | `read_file`, `write_file` | — |\n| `computer-use` | `computer` (mouse, keyboard, screenshots) | `computerUseBaseUrl` |\n| `brain` | `query_brain` | — |\n| HITL | `ask_user_question` | — |\n\n### AgentRun Events\n\n```typescript\nrun.on('text', (text: string) => { /* text delta */ });\nrun.on('tool_call', (chunk: ToolCallChunk) => { /* tool call started */ });\nrun.on('tool_call_complete', (chunk: ToolCallCompleteChunk) => { /* tool call finished */ });\nrun.on('reply_requested', (req: ReplyRequest) => { /* permission/question */ });\nrun.on('completed', () => { /* run finished */ });\nrun.on('error', (err) => { /* run failed */ });\n```\n\n### Persistence\n\n`AgentStorage` auto-detects the runtime and chooses the best backend:\n- **Bun**: `bun:sqlite`\n- **Node 22.5+**: `node:sqlite`\n- **Fallback**: In-memory\n\n```typescript\nimport { AgentStorage } from '@allternit/sdk/ai-runtime';\n\nconst storage = new AgentStorage({ path: './runs.db' });\nstorage.saveRun(runId, status, messages, metadata);\nconst record = storage.getRun(runId);\n```\n\n## System Prompts\n\nThe SDK includes built-in system prompt management:\n\n```typescript\nimport { \n  ALLTERNIT_SYSTEM_PROMPT, \n  injectSystemPrompt \n} from '@allternit/sdk';\n\n// View the default system prompt\nconsole.log(ALLTERNIT_SYSTEM_PROMPT);\n\n// Inject system prompt into messages\nconst messages = [\n  { role: 'user', content: 'Hello!' }\n];\n\nconst withSystemPrompt = injectSystemPrompt(messages, false);\n// [\n//   { role: 'system', content: 'You are Allternit...' },\n//   { role: 'user', content: 'Hello!' }\n// ]\n```\n\n## API Reference\n\n### AllternitHarness\n\nMain class for AI interactions.\n\n#### Constructor\n\n```typescript\nnew AllternitHarness(config: HarnessConfig)\n```\n\n#### Methods\n\n- `stream(request: StreamRequest): AsyncGenerator<HarnessStreamChunk>` - Stream responses\n- `complete(request: StreamRequest): Promise<HarnessResponse>` - Get complete response\n\n### Types\n\n```typescript\ninterface HarnessConfig {\n  mode: 'byok' | 'cloud' | 'local' | 'subprocess';\n  byok?: {\n    anthropic?: { apiKey: string; baseURL?: string };\n    openai?: { apiKey: string; baseURL?: string };\n    google?: { apiKey: string };\n  };\n  cloud?: { baseURL: string; accessToken: string };\n  local?: { baseURL: string };\n  subprocess?: { command: string; args?: string[]; env?: Record<string, string> };\n}\n\ninterface StreamRequest {\n  provider: string;\n  model: string;\n  messages: Message[];\n  temperature?: number;\n  maxTokens?: number;\n  topP?: number;\n  topK?: number;\n  tools?: Tool[];\n}\n\ntype HarnessStreamChunk =\n  | { type: 'text'; text: string }\n  | { type: 'tool_call'; id: string; name: string; arguments: string }\n  | { type: 'tool_call_complete'; id: string; name: string; arguments: Record<string, unknown> }\n  | { type: 'tool_result'; toolCallId: string; content: string }\n  | { type: 'error'; error: Error; code?: string }\n  | { type: 'done'; usage?: { promptTokens: number; completionTokens: number; totalTokens: number } };\n```\n\n## Modes\n\n### BYOK\nUse your own API keys for providers. Full control over model selection and configuration.\n\n### Cloud\nUse Allternit's managed service. Simplified setup with unified billing.\n\n### Local\nConnect to local Ollama server. Run open-source models on your hardware.\n\n### Subprocess\nUse CLI tools as backends. Integrate custom model runners.\n\n## Examples\n\nSee the `examples/` directory for complete examples:\n\n- `byok-example.ts` - Bring Your Own Key setup\n- `cloud-example.ts` - Cloud mode usage\n- `ollama-example.ts` - Local Ollama integration\n\n## License\n\nMIT\n\n## Version\n\nCurrent version: `1.0.0`\n","readmeFilename":"README.md","description":"The official Allternit SDK for AI interactions."}