{"_id":"@conductor-oss/conductor-agent-sdk","_rev":"2-08310ee071ba9c4489dcb6f832e3e2e8","name":"@conductor-oss/conductor-agent-sdk","dist-tags":{"latest":"0.3.0"},"versions":{"0.1.0":{"name":"@conductor-oss/conductor-agent-sdk","version":"0.1.0","_id":"@conductor-oss/conductor-agent-sdk@0.1.0","maintainers":[{"name":"io-orkes","email":"developers@orkes.io"},{"name":"virenx","email":"viren@orkes.io"},{"name":"mp-orkes","email":"miguel.prieto@orkes.io"}],"dist":{"shasum":"cf8e2d6061ff97952575e4233938238d28adebbb","tarball":"https://registry.npmjs.org/@conductor-oss/conductor-agent-sdk/-/conductor-agent-sdk-0.1.0.tgz","fileCount":62,"integrity":"sha512-eV0sESW0xxfoIFGslBfqE0AEtgmZnPYZ8eAbNBQrnTL58/m4SO3ZqAV1WxL9oiPNeVP+10nSJmDd1s4T0PHE4A==","signatures":[{"sig":"MEUCIHR1JXc202VNs5Jec6svhAf8C6kIPZ3bHELFxL+fGCZQAiEAp/hEI5CQbfU9VE4G4MCFQVkzB4tcV9RjJneAvMuV2pY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2128032},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./testing":{"types":"./dist/testing/index.d.ts","import":"./dist/testing/index.js","require":"./dist/testing/index.cjs"},"./langchain":{"types":"./dist/wrappers/langchain.d.ts","import":"./dist/wrappers/langchain.js","require":"./dist/wrappers/langchain.cjs"},"./langgraph":{"types":"./dist/wrappers/langgraph.d.ts","import":"./dist/wrappers/langgraph.js","require":"./dist/wrappers/langgraph.cjs"},"./vercel-ai":{"types":"./dist/wrappers/ai.d.ts","import":"./dist/wrappers/ai.js","require":"./dist/wrappers/ai.cjs"}},"gitHead":"3b3a27e387872aa4bc897a8651fb1a0b30843ecc","scripts":{"lint":"eslint src/ tests/","test":"vitest run","build":"tsup && npm run verify:dist","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","lint:fix":"eslint src/ tests/ --fix","typecheck":"tsc --noEmit","test:watch":"vitest","verify:dist":"node ./scripts/verify-dist.mjs","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\""},"_npmUser":{"name":"io-orkes","email":"developers@orkes.io"},"overrides":{"ws":"^8.21.0","esbuild":"^0.28.1","langsmith":">=0.5.27","@langchain/langgraph":{"uuid":"^11.1.1"},"@langchain/langgraph-checkpoint":{"uuid":"^11.1.1"}},"workspaces":["examples"],"_npmVersion":"11.12.1","description":"Conductor Agent SDK for TypeScript — build, deploy, and run AI agents","directories":{},"lint-staged":{"*.ts":["eslint --fix","prettier --write"]},"_nodeVersion":"26.0.0","dependencies":{"dotenv":"^16.0.0","@io-orkes/conductor-javascript":"^3.0.3"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","zod":"^3.25.76","tsup":"^8.0.0","eslint":"^10.2.0","vitest":"^2.1.9","prettier":"^3.8.1","@eslint/js":"^10.0.1","typescript":"^5.4.0","@types/node":"^20.0.0","typescript-eslint":"^8.58.0","zod-to-json-schema":"^3.23.5","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5"},"peerDependencies":{"ai":">=3.0.0","zod":"^3.22.0","@langchain/core":">=0.2.0","zod-to-json-schema":"^3.23.0","@langchain/langgraph":">=0.2.0"},"peerDependenciesMeta":{"ai":{"optional":true},"zod":{"optional":true},"@langchain/core":{"optional":true},"zod-to-json-schema":{"optional":true},"@langchain/langgraph":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/conductor-agent-sdk_0.1.0_1782616489818_0.9275390501644807","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@conductor-oss/conductor-agent-sdk","version":"0.3.0","description":"Conductor Agent SDK for TypeScript — build, deploy, and run AI agents","type":"module","main":"./dist/index.cjs","module":"./dist/index.js","types":"./dist/index.d.ts","workspaces":["examples"],"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./testing":{"types":"./dist/testing/index.d.ts","import":"./dist/testing/index.js","require":"./dist/testing/index.cjs"},"./vercel-ai":{"types":"./dist/wrappers/ai.d.ts","import":"./dist/wrappers/ai.js","require":"./dist/wrappers/ai.cjs"},"./langgraph":{"types":"./dist/wrappers/langgraph.d.ts","import":"./dist/wrappers/langgraph.js","require":"./dist/wrappers/langgraph.cjs"},"./langchain":{"types":"./dist/wrappers/langchain.d.ts","import":"./dist/wrappers/langchain.js","require":"./dist/wrappers/langchain.cjs"}},"engines":{"node":">=18.0.0"},"dependencies":{"@io-orkes/conductor-javascript":"^3.0.3","dotenv":"^16.0.0"},"peerDependencies":{"@langchain/core":">=0.2.0","@langchain/langgraph":">=0.2.0","ai":">=3.0.0","zod":"^3.22.0","zod-to-json-schema":"^3.23.0"},"peerDependenciesMeta":{"zod":{"optional":true},"zod-to-json-schema":{"optional":true},"ai":{"optional":true},"@langchain/core":{"optional":true},"@langchain/langgraph":{"optional":true}},"devDependencies":{"@eslint/js":"^10.0.1","@types/node":"^20.0.0","eslint":"^10.2.0","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","prettier":"^3.8.1","tsup":"^8.0.0","tsx":"^4.21.0","typescript":"^5.4.0","typescript-eslint":"^8.58.0","vitest":"^2.1.9","zod":"^3.25.76","zod-to-json-schema":"^3.23.5"},"scripts":{"build":"tsup && npm run verify:dist","verify:dist":"node ./scripts/verify-dist.mjs","test":"vitest run","test:watch":"vitest","lint":"eslint src/ tests/","lint:fix":"eslint src/ tests/ --fix","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","typecheck":"tsc --noEmit"},"overrides":{"esbuild":"^0.28.1","ws":"^8.21.0","langsmith":">=0.5.27","@langchain/langgraph":{"uuid":"^11.1.1"},"@langchain/langgraph-checkpoint":{"uuid":"^11.1.1"}},"lint-staged":{"*.ts":["eslint --fix","prettier --write"]},"gitHead":"3b3a27e387872aa4bc897a8651fb1a0b30843ecc","_id":"@conductor-oss/conductor-agent-sdk@0.3.0","_nodeVersion":"26.0.0","_npmVersion":"11.12.1","dist":{"integrity":"sha512-kZ6ELvu6X/ekmRaB7hZ6dDNSDyWe6+FHRa+ps+lg33qxRTjuM6m2GknyfEKD5HPW2rwwCjE5bNvPXzw+ohc3zw==","shasum":"05877a26e2fda6a8f1752e3cdf82ebd822a4efb8","tarball":"https://registry.npmjs.org/@conductor-oss/conductor-agent-sdk/-/conductor-agent-sdk-0.3.0.tgz","fileCount":62,"unpackedSize":2128032,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIBVAyAnTAsE5Cub6vVVTl0GWkbX2zvDjNXGn86Xp+yQRAiAoxTXOX2ss9tio+yXIlyGkgMAFl0n9lXuxQgL67lBKVA=="}]},"_npmUser":{"name":"io-orkes","email":"developers@orkes.io"},"directories":{},"maintainers":[{"name":"io-orkes","email":"developers@orkes.io"},{"name":"virenx","email":"viren@orkes.io"},{"name":"mp-orkes","email":"miguel.prieto@orkes.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/conductor-agent-sdk_0.3.0_1782616704356_0.34061506471689085"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-28T03:14:49.648Z","modified":"2026-06-28T03:18:24.724Z","0.1.0":"2026-06-28T03:14:49.968Z","0.3.0":"2026-06-28T03:18:24.568Z"},"description":"Conductor Agent SDK for TypeScript — build, deploy, and run AI agents","maintainers":[{"name":"io-orkes","email":"developers@orkes.io"},{"name":"virenx","email":"viren@orkes.io"},{"name":"mp-orkes","email":"miguel.prieto@orkes.io"}],"readme":"# @conductor-oss/conductor-agent-sdk\n\n[![npm](https://img.shields.io/npm/v/@conductor-oss/conductor-agent-sdk)](https://www.npmjs.com/package/@conductor-oss/conductor-agent-sdk)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](../../LICENSE)\n\nTypeScript SDK for building and running AI agents on [Agentspan](https://agentspan.ai). Define agents and tools in TypeScript, run them durably on the platform with crash recovery, distributed workers, and human-in-the-loop approval.\n\n## Quick Start\n\n```bash\nnpm install @conductor-oss/conductor-agent-sdk zod\n```\n\n```typescript\nimport { Agent, AgentRuntime, tool } from '@conductor-oss/conductor-agent-sdk';\nimport { z } from 'zod';\n\nconst getWeather = tool(\n  async ({ city }: { city: string }) => ({ city, temp: 72, condition: 'Sunny' }),\n  {\n    description: 'Get current weather for a city.',\n    inputSchema: z.object({ city: z.string() }),\n  },\n);\n\nconst agent = new Agent({\n  name: 'weather_agent',\n  model: 'openai/gpt-4o',\n  instructions: 'You are a helpful weather assistant.',\n  tools: [getWeather],\n});\n\nconst runtime = new AgentRuntime();\nconst result = await runtime.run(agent, \"What's the weather in SF?\");\nresult.printResult();\nawait runtime.shutdown();\n```\n\n## Already using Vercel AI SDK?\n\nOne import change. Your code stays identical.\n\n```diff\n-import { generateText } from 'ai';\n+import { generateText } from '@conductor-oss/conductor-agent-sdk/vercel-ai';\n```\n\nThat's it. `generateText` and `streamText` are intercepted, compiled to an agent execution, and run on Agentspan. Tools, model, prompt, result shape -- all unchanged.\n\nWhen you need Agentspan–specific features (guardrails, termination, multi-agent handoff), switch to the Agent API. See [`examples/vercel-ai/README.md`](examples/vercel-ai/README.md) for the full before/after.\n\n## Already using another framework?\n\nPass your existing agent objects directly to `runtime.run()`:\n\n<table>\n<tr><th>Framework</th><th>Integration</th></tr>\n<tr><td><b>OpenAI Agents</b></td><td>\n\n```typescript\nimport { Agent } from '@openai/agents';\nimport { AgentRuntime } from '@conductor-oss/conductor-agent-sdk';\n\nconst agent = new Agent({\n  name: 'helper', model: 'gpt-4o-mini',\n  instructions: 'You are helpful.',\n  tools: [getWeather],\n});\n// Agent format auto-detected\nconst runtime = new AgentRuntime();\nawait runtime.run(agent, 'Weather in SF?');\n```\n\n</td></tr>\n<tr><td><b>Google ADK</b></td><td>\n\n```typescript\nimport { LlmAgent } from '@google/adk';\nimport { AgentRuntime } from '@conductor-oss/conductor-agent-sdk';\n\nconst agent = new LlmAgent({\n  name: 'helper', model: 'gemini-2.5-flash',\n  instruction: 'You are helpful.',\n  tools: [getWeather],\n});\n// Agent format auto-detected\nconst runtime = new AgentRuntime();\nawait runtime.run(agent, 'Weather in Tokyo?');\n```\n\n</td></tr>\n<tr><td><b>LangGraph</b></td><td>\n\n```typescript\nimport { createReactAgent }\n  from '@langchain/langgraph/prebuilt';\nimport { ChatOpenAI } from '@langchain/openai';\nimport { AgentRuntime } from '@conductor-oss/conductor-agent-sdk';\n\nconst graph = createReactAgent({\n  llm: new ChatOpenAI({ model: 'gpt-4o-mini' }),\n  tools: [searchTool],\n});\n// Add metadata for extraction\n(graph as any)._agentspan = {\n  model: 'anthropic/claude-sonnet-4-6',\n  tools: [searchTool],\n  framework: 'langgraph',\n};\nconst runtime = new AgentRuntime();\nawait runtime.run(graph, 'Search quantum');\n```\n\n</td></tr>\n</table>\n\nSee per-framework READMEs for complete before/after guides:\n[Vercel AI](examples/vercel-ai/README.md) | [OpenAI](examples/openai/README.md) | [Google ADK](examples/adk/README.md) | [LangGraph](examples/langgraph/README.md) | [LangChain](examples/langchain/README.md)\n\n## Features\n\n### Streaming\n\n```typescript\nconst stream = await runtime.stream(agent, prompt);\n\nfor await (const event of stream) {\n  switch (event.type) {\n    case 'thinking':    console.log(event.content); break;\n    case 'tool_call':   console.log(event.toolName, event.args); break;\n    case 'tool_result': console.log(event.toolName, event.result); break;\n    case 'waiting':     await stream.approve(); break;\n    case 'done':        console.log(event.output); break;\n  }\n}\n```\n\n### Multi-Agent Strategies\n\n```typescript\n// Sequential pipeline\nconst pipeline = researcher.pipe(writer).pipe(editor);\n\n// Parallel (scatter-gather)\nconst panel = new Agent({ name: 'panel', agents: [analyst1, analyst2], strategy: 'parallel' });\n\n// Handoff (LLM decides which specialist to route to)\nconst team = new Agent({ name: 'team', agents: [coder, reviewer], strategy: 'handoff' });\n\n// Also: router, round-robin, swarm, manual\n```\n\n### Guardrails\n\n```typescript\nimport { guardrail, RegexGuardrail, LLMGuardrail } from '@conductor-oss/conductor-agent-sdk';\n\nconst piiBlocker = new RegexGuardrail({\n  name: 'pii_blocker',\n  patterns: ['\\\\b\\\\d{3}-\\\\d{2}-\\\\d{4}\\\\b'],\n  mode: 'block', onFail: 'raise',\n});\n\nconst customCheck = guardrail(\n  async (content: string) => {\n    if (content.includes('secret')) return { passed: false, message: 'Sensitive content' };\n    return { passed: true };\n  },\n  { name: 'custom_check', position: 'output', onFail: 'retry' },\n);\n\nconst agent = new Agent({ name: 'safe', guardrails: [piiBlocker, customCheck], ... });\n```\n\n### Human-in-the-Loop\n\n```typescript\nconst handle = await runtime.start(agent, prompt);\n\n// Agent pauses when it hits a tool with approvalRequired: true\nconst status = await handle.getStatus();\nif (status.isWaiting) {\n  await handle.approve();   // or handle.reject('reason')\n}\n\nconst result = await handle.wait();\n```\n\n### Termination Conditions\n\n```typescript\nimport { TextMention, MaxMessage } from '@conductor-oss/conductor-agent-sdk';\n\nconst agent = new Agent({\n  name: 'analyst',\n  termination: new TextMention('DONE').or(new MaxMessage(10)),\n  ...\n});\n```\n\n### Testing\n\n```typescript\nimport { mockRun, expectResult } from '@conductor-oss/conductor-agent-sdk/testing';\n\nconst result = await mockRun(agent, 'Write an article', {\n  mockTools: { search: async () => ({ results: ['paper1'] }) },\n});\n\nexpectResult(result)\n  .toBeCompleted()\n  .toContainOutput('article')\n  .toHaveUsedTool('search');\n```\n\n## Configuration\n\n| Variable | Default | Description |\n|----------|---------|-------------|\n| `AGENTSPAN_SERVER_URL` | `http://localhost:6767/api` | Server API URL |\n| `AGENTSPAN_API_KEY` | -- | Bearer token |\n| `OPENAI_API_KEY` | -- | For OpenAI models |\n\nAll config can also be passed to the `AgentRuntime` constructor.\n\n## Examples\n\n157 examples covering every feature:\n\n| Directory | Count | Description |\n|-----------|-------|-------------|\n| [`examples/`](examples/) | 107 | Native agents |\n| [`examples/vercel-ai/`](examples/vercel-ai/) | 10 | Vercel AI SDK integration |\n| [`examples/langgraph/`](examples/langgraph/) | 10 | LangGraph integration |\n| [`examples/langchain/`](examples/langchain/) | 10 | LangChain integration |\n| [`examples/openai/`](examples/openai/) | 10 | OpenAI Agents SDK integration |\n| [`examples/adk/`](examples/adk/) | 10 | Google ADK integration |\n\n```bash\nnpx tsx examples/01-basic-agent.ts\nnpx tsx examples/vercel-ai/01-basic-agent.ts\nnpx tsx examples/langgraph/02-react-with-tools.ts\n```\n\n## Contributing\n\nWe welcome contributions! Please open an issue or PR on [GitHub](https://github.com/agentspan-ai/agentspan).\n\n```bash\ngit clone https://github.com/agentspan-ai/agentspan.git\ncd agentspan/sdk/typescript\nnpm install\nnpm test        # unit tests (no server needed)\nnpm run lint    # type-check\n```\n\n## License\n\nMIT\n","readmeFilename":"README.md"}