{"_id":"@agent-dev-lab/core","_rev":"7-ebf227f4ef96f7418b5a86fa15d2f9bd","name":"@agent-dev-lab/core","dist-tags":{"latest":"0.0.5"},"versions":{"0.0.3":{"name":"@agent-dev-lab/core","version":"0.0.3","keywords":["ai","agents","workflows","vercel-ai-sdk","typescript"],"author":{"name":"J. Simon Richard"},"license":"MIT","_id":"@agent-dev-lab/core@0.0.3","maintainers":[{"name":"jsimonrichard","email":"jsimonrichard@gmail.com"}],"homepage":"https://github.com/jsimonrichard/agent-dev-lab#readme","bugs":{"url":"https://github.com/jsimonrichard/agent-dev-lab/issues"},"dist":{"shasum":"0683129f50398aa0e2bf8de91f2176d26ee287a1","tarball":"https://registry.npmjs.org/@agent-dev-lab/core/-/core-0.0.3.tgz","fileCount":348,"integrity":"sha512-w/glvZwZ8r+iWqnndirCiKJocSFZEffzsQjJmIDpEGIzxczdA+dTQt/2xcQOKduMIhkUTbBDzwI1ZKICOSS6CA==","signatures":[{"sig":"MEUCIQD54QaRXE8VWnKPBuseKIeXS6uKFtUiZU1PCFyNDzqLnwIgFPJ9y5jY3bOILBRss6qT/EDFzaGPzGGUmAH28mqEvYU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@agent-dev-lab%2fcore@0.0.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":880300},"main":"./dist/index.js","type":"module","_from":"file:/tmp/agent-dev-lab-core-0.0.3.tgz","types":"./src/index.ts","engines":{"node":">=22"},"exports":{".":{"bun":"./src/index.ts","types":"./src/index.ts","default":"./dist/index.js","development":"./src/index.ts"},"./db":{"bun":"./src/db/index.ts","types":"./src/db/index.ts","default":"./dist/db/index.js","development":"./src/db/index.ts"},"./eslint":"./eslint.config.js","./result":{"bun":"./src/result.ts","types":"./src/result.ts","import":"./src/result.ts","default":"./dist/result.js"},"./logging":{"bun":"./src/logging/index.ts","types":"./src/logging/index.ts","default":"./dist/logging/index.js","development":"./src/logging/index.ts"},"./project":{"bun":"./src/project/index.ts","types":"./src/project/index.ts","default":"./dist/project/index.js","development":"./src/project/index.ts"},"./tsconfig/node.json":"./tsconfig.node.json"},"private":false,"scripts":{"lint":"eslint .","test":"bun test","build":"tsdown","db:push":"drizzle-kit push","typecheck":"tsc --noEmit -p tsconfig.json","ci:publish":"bash ../../scripts/ci-publish.sh","db:generate":"drizzle-kit generate"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d67d8e7d-3fd4-4158-b31a-d09c302d6840"}},"_resolved":"/tmp/agent-dev-lab-core-0.0.3.tgz","_integrity":"sha512-w/glvZwZ8r+iWqnndirCiKJocSFZEffzsQjJmIDpEGIzxczdA+dTQt/2xcQOKduMIhkUTbBDzwI1ZKICOSS6CA==","repository":{"url":"git+https://github.com/jsimonrichard/agent-dev-lab.git","type":"git","directory":"packages/core"},"_npmVersion":"12.0.2","description":"Headless Agent Dev Lab runtime — agents, workflows, templates, and stores on the Vercel AI SDK","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ai":"^5.0.86","zod":"^3.25.76","jiti":"^2.7.0","pino":"^10.1.0","handlebars":"^4.7.8","drizzle-orm":"^0.44.7","better-sqlite3":"^13.0.3","@opentelemetry/api":"^1.9.0","@types/better-sqlite3":"^9.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/core_0.0.3_1788196563248_0.7098691795150791","host":"s3://npm-registry-packages-npm-production"}},"0.0.4":{"name":"@agent-dev-lab/core","version":"0.0.4","keywords":["ai","agents","workflows","vercel-ai-sdk","typescript"],"author":{"name":"J. Simon Richard"},"license":"MIT","_id":"@agent-dev-lab/core@0.0.4","maintainers":[{"name":"jsimonrichard","email":"jsimonrichard@gmail.com"}],"homepage":"https://github.com/jsimonrichard/agent-dev-lab#readme","bugs":{"url":"https://github.com/jsimonrichard/agent-dev-lab/issues"},"dist":{"shasum":"cb404845a2a77cc320aea7e424fe5642e20823db","tarball":"https://registry.npmjs.org/@agent-dev-lab/core/-/core-0.0.4.tgz","fileCount":424,"integrity":"sha512-WpV/8xFeRGrMfbFOflkR+xRAbrr1ihT0B7c5nUnRm2R7NVOLQcRmFeJZFslHveJA/H1SydqSHvESVvO9mbo28w==","signatures":[{"sig":"MEUCIGox3OW2f3OSBwR+KO3vlMiZq2phpjGf92RFpa9Zc54+AiEAwvymzfgwgkgd4Y6Yh847fKZInQrS5bRzbsbPnz3o384=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@agent-dev-lab%2fcore@0.0.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1273203},"main":"./dist/index.js","type":"module","_from":"file:/tmp/agent-dev-lab-core-0.0.4.tgz","types":"./src/index.ts","engines":{"node":">=22"},"exports":{".":{"bun":"./src/index.ts","types":"./src/index.ts","default":"./dist/index.js","development":"./src/index.ts"},"./db":{"bun":"./src/db/index.ts","types":"./src/db/index.ts","default":"./dist/db/index.js","development":"./src/db/index.ts"},"./eslint":"./eslint.config.js","./result":{"bun":"./src/result.ts","types":"./src/result.ts","import":"./src/result.ts","default":"./dist/result.js"},"./logging":{"bun":"./src/logging/index.ts","types":"./src/logging/index.ts","default":"./dist/logging/index.js","development":"./src/logging/index.ts"},"./project":{"bun":"./src/project/index.ts","types":"./src/project/index.ts","default":"./dist/project/index.js","development":"./src/project/index.ts"},"./tsconfig/node.json":"./tsconfig.node.json"},"private":false,"scripts":{"lint":"eslint .","test":"bun test","build":"tsdown","db:push":"drizzle-kit push","typecheck":"tsc --noEmit -p tsconfig.json","ci:publish":"bash ../../scripts/ci-publish.sh","db:generate":"drizzle-kit generate"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d67d8e7d-3fd4-4158-b31a-d09c302d6840"}},"_resolved":"/tmp/agent-dev-lab-core-0.0.4.tgz","_integrity":"sha512-WpV/8xFeRGrMfbFOflkR+xRAbrr1ihT0B7c5nUnRm2R7NVOLQcRmFeJZFslHveJA/H1SydqSHvESVvO9mbo28w==","repository":{"url":"git+https://github.com/jsimonrichard/agent-dev-lab.git","type":"git","directory":"packages/core"},"_npmVersion":"12.0.2","description":"Headless Agent Dev Lab runtime — agents, workflows, templates, and stores on the Vercel AI SDK","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ai":"^5.0.86","zod":"^4.1.8","jiti":"^2.7.0","pino":"^10.1.0","chokidar":"^5.0.0","handlebars":"^4.7.8","drizzle-orm":"^0.44.7","better-sqlite3":"^13.0.3","@opentelemetry/api":"^1.9.0","@types/better-sqlite3":"^9.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/core_0.0.4_1789239521485_0.47344287408873287","host":"s3://npm-registry-packages-npm-production"}},"0.0.5":{"_id":"@agent-dev-lab/core@0.0.5","bugs":{"url":"https://github.com/jsimonrichard/agent-dev-lab/issues"},"dist":{"shasum":"67a25b6f46dbef66799754b06d7cbcd5db323c3d","tarball":"https://registry.npmjs.org/@agent-dev-lab/core/-/core-0.0.5.tgz","fileCount":430,"integrity":"sha512-IVIhF1+90TaXjjINTZ4TmWYJuo7H6Xsfgm0Lm8kLrLnzkCdCAZPVdq7nE9Zf9AnR7K8ncngYUi0FAyUWUlrJMA==","signatures":[{"sig":"MEUCIHkMU416Ze1exrKqm3NywX+W5pj/dxl+F7wfQqpYdysxAiEA0tG4EOrbB003qN+xxmsrr7U1P8PiP6Qty6LPxzncNb4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIDsYXSUgj2xNxrejPhPCqvY0LF9Z9HPtGPO5nRZO/JEpAiBNyXKjz/3rZIqQgdBsenm2aQesQcxRTUyrxQxITPjgnQ=="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@agent-dev-lab%2fcore@0.0.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1300999},"main":"./dist/index.js","name":"@agent-dev-lab/core","type":"module","_from":"file:/tmp/agent-dev-lab-core-0.0.5.tgz","types":"./src/index.ts","author":{"name":"J. Simon Richard"},"engines":{"node":">=22"},"exports":{".":{"bun":"./src/index.ts","types":"./src/index.ts","default":"./dist/index.js","development":"./src/index.ts"},"./db":{"bun":"./src/db/index.ts","types":"./src/db/index.ts","default":"./dist/db/index.js","development":"./src/db/index.ts"},"./eslint":"./eslint.config.js","./result":{"bun":"./src/result.ts","types":"./src/result.ts","import":"./src/result.ts","default":"./dist/result.js"},"./logging":{"bun":"./src/logging/index.ts","types":"./src/logging/index.ts","default":"./dist/logging/index.js","development":"./src/logging/index.ts"},"./project":{"bun":"./src/project/index.ts","types":"./src/project/index.ts","default":"./dist/project/index.js","development":"./src/project/index.ts"},"./tsconfig/node.json":"./tsconfig.node.json"},"license":"MIT","private":false,"scripts":{"lint":"eslint .","test":"bun test","build":"tsdown","db:push":"drizzle-kit push","typecheck":"tsc --noEmit -p tsconfig.json","ci:publish":"bash ../../scripts/ci-publish.sh","db:generate":"drizzle-kit generate"},"version":"0.0.5","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d67d8e7d-3fd4-4158-b31a-d09c302d6840"}},"homepage":"https://github.com/jsimonrichard/agent-dev-lab#readme","keywords":["ai","agents","workflows","vercel-ai-sdk","typescript"],"_resolved":"/tmp/agent-dev-lab-core-0.0.5.tgz","_integrity":"sha512-IVIhF1+90TaXjjINTZ4TmWYJuo7H6Xsfgm0Lm8kLrLnzkCdCAZPVdq7nE9Zf9AnR7K8ncngYUi0FAyUWUlrJMA==","repository":{"url":"git+https://github.com/jsimonrichard/agent-dev-lab.git","type":"git","directory":"packages/core"},"_npmVersion":"12.0.2","description":"Headless Agent Dev Lab runtime — agents, workflows, templates, and stores on the Vercel AI SDK","directories":{},"maintainers":[{"name":"jsimonrichard","email":"jsimonrichard@gmail.com"}],"_nodeVersion":"22.23.2","dependencies":{"ai":"^5.0.86","zod":"^4.1.8","jiti":"^2.7.0","pino":"^10.1.0","chokidar":"^5.0.0","handlebars":"^4.7.8","drizzle-orm":"^0.44.7","better-sqlite3":"^13.0.3","@opentelemetry/api":"^1.9.0","@types/better-sqlite3":"^9.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/core_0.0.5_1789573538894_0.7959959484060071"}}},"time":{"created":"2026-08-31T16:19:30.826Z","modified":"2026-09-16T15:45:39.402Z","0.0.1":"2026-08-31T16:19:31.205Z","0.0.2":"2026-08-31T17:03:32.299Z","0.0.3":"2026-08-31T17:16:03.457Z","0.0.4":"2026-09-12T18:58:41.634Z","0.0.5":"2026-09-16T15:45:38.989Z"},"bugs":{"url":"https://github.com/jsimonrichard/agent-dev-lab/issues"},"author":{"name":"J. Simon Richard"},"license":"MIT","homepage":"https://github.com/jsimonrichard/agent-dev-lab#readme","keywords":["ai","agents","workflows","vercel-ai-sdk","typescript"],"repository":{"url":"git+https://github.com/jsimonrichard/agent-dev-lab.git","type":"git","directory":"packages/core"},"description":"Headless Agent Dev Lab runtime — agents, workflows, templates, and stores on the Vercel AI SDK","maintainers":[{"name":"jsimonrichard","email":"jsimonrichard@gmail.com"}],"readme":"<img src=\"https://raw.githubusercontent.com/jsimonrichard/agent-dev-lab/main/assets/brand/logo.svg\" alt=\"\" width=\"40\" height=\"40\" align=\"left\" />\n\n# `@agent-dev-lab/core`\n\nHeadless runtime for [Agent Dev Lab](https://agent-dev-lab.com) (ADL) — author agents and workflows as plain TypeScript on top of [Vercel's AI SDK](https://ai-sdk.dev/), with persisted run history for the optional [`@agent-dev-lab/web`](https://www.npmjs.com/package/@agent-dev-lab/web) inspection UI.\n\nThis package has no UI and no CLI dependency — it runs from scripts, tests, or a server. `@agent-dev-lab/cli` and `@agent-dev-lab/web` are optional additions for scaffolding and inspecting runs.\n\n## Install\n\n```bash\nbun add @agent-dev-lab/core @ai-sdk/openai\n# or: npm install @agent-dev-lab/core @ai-sdk/openai\n```\n\n`ai` (the Vercel AI SDK) and `zod` are dependencies of this package — `ModelMessage`, `streamText`, `tool`, and `stepCountIs` are re-exported from `@agent-dev-lab/core` so you don't need to depend on `ai` directly. You do need a model provider package such as `@ai-sdk/openai`.\n\n## Quick start\n\n```ts\nimport { createAdlRuntime, sqliteMessageStore, sqliteWorkflowStore } from \"@agent-dev-lab/core\";\nimport { openai } from \"@ai-sdk/openai\";\n\nexport const adl = createAdlRuntime({\n  defaults: { model: openai(\"gpt-4o-mini\") },\n  stores: {\n    message: sqliteMessageStore(),\n    workflow: sqliteWorkflowStore(),\n  },\n});\n\nconst researcher = adl.createAgent({\n  id: \"researcher\",\n  model: openai(\"gpt-4o\"),\n  systemPrompt: \"You are a research assistant.\",\n});\n\nconst review = adl.createWorkflow({\n  id: \"literature-review\",\n  run: async (input: { topic: string }, ctx) => {\n    await ctx.step(\"research\", async ({ ctx: child }) => {\n      await researcher.run({\n        memoryScope: child.memoryScopeWithSuffix(\"notes\"),\n        user: input.topic,\n      }).result;\n    });\n    return { topic: input.topic };\n  },\n});\n\nconst handle = review.run({ topic: \"CRISPR delivery\" });\nawait handle.result;\n```\n\n`adl.createAgent` / `adl.createWorkflow` bind the runtime you built with `createAdlRuntime` — stores, observers, and default model/tools are wired in automatically. For unit tests, `createTestRuntime()` gives you the same shape backed by in-memory stores.\n\n## What's in this package\n\n| Area              | Exports                                                                                                            | Role                                                                                                                          |\n| ----------------- | ------------------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------- |\n| **Runtime**       | `createAdlRuntime`, `createTestRuntime`                                                                            | Wires stores, observers, template engine, and default model/tools; `adl.createAgent` / `adl.createWorkflow` bind to it        |\n| **Agents**        | `createAgent`, `stopWhen` re-exports (`stepCountIs`, `hasToolCall`), `inspectLanguageModel`, `inspectSystemPrompt` | Model + system prompt + tools + memory binding; `agent.run` / `agent.stream` are one conversation episode each                |\n| **Workflows**     | `createWorkflow`, `createWorkflowFromAgent`                                                                        | Plain-TypeScript orchestration (`if` / `for` / `await` / `Promise.all`) with `ctx.step` as the observability + retry boundary |\n| **Tools**         | `createToolProvider`, `combineToolProviders`, `createToolFromAgent`, `createToolFromWorkflow`                      | `ToolSet` or `ToolProvider` (`getTools`, optional `dispose` / `onRunEnd`); wrap an agent or workflow as an AI SDK `Tool`      |\n| **Templates**     | `createTemplate`, `TemplateEngine`                                                                                 | Handlebars markdown templates validated with Zod, colocated with code                                                         |\n| **Stores**        | `sqliteMessageStore`, `inMemoryMessageStore`, `sqliteWorkflowStore`, `inMemoryWorkflowStore`                       | Conversation transcripts (`MessageStore`) and run/step/event history (`WorkflowStore`)                                        |\n| **Observability** | `inMemoryEventLog`, `RunEvent` types, `WorkflowObserver` / `AgentObserver`                                         | Push-based event stream (`step_*`, `agent_*`, `workflow_*`, and author `ctx.emit` custom events)                              |\n| **Project**       | `loadAdlProject`, `findAdlProjectRootFromCwd`, `watchAdlProject`                                                   | Discovers and loads an `adl.config.*` project — the same path the CLI and inspection UI use                                   |\n| **Result**        | `ok`, `err`, `unwrap`, `fromThrowable`                                                                             | A small `Result<T, E>` helper (`@agent-dev-lab/core/result`) safe for inspector payloads and server-function returns          |\n\nEach `agent.run` / `agent.stream` is one conversation episode (an AI SDK tool loop). A workflow is ordinary TypeScript — `ctx.step` marks retry/observability boundaries; `otherWorkflow.run(input)` nests. There is no workflow graph DSL.\n\n## Subpath exports\n\n| Import                                   | Contents                                                                                                                     |\n| ---------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- |\n| `@agent-dev-lab/core`                    | Everything above                                                                                                             |\n| `@agent-dev-lab/core/project`            | Project discovery/loading only (`loadAdlProject`, `watchAdlProject`, `AdlProjectConfig`) — used by the CLI and inspection UI |\n| `@agent-dev-lab/core/db`                 | SQLite helpers (`openAdlSqlite`, `resolveAdlSqlitePath`, `DEFAULT_SQLITE_RELATIVE_PATH`) backing the SQLite stores           |\n| `@agent-dev-lab/core/logging`            | `createLogger` — a small Pino wrapper (`LOG_LEVEL` env, JSON output)                                                         |\n| `@agent-dev-lab/core/result`             | The `Result<T, E>` helpers standalone                                                                                        |\n| `@agent-dev-lab/core/eslint`             | Shared ESLint flat config used across ADL projects                                                                           |\n| `@agent-dev-lab/core/tsconfig/node.json` | Shared `tsconfig` base for Node/Bun ADL projects                                                                             |\n\nThere's no `@agent-dev-lab/common` package — ESLint and tsconfig live on `core` instead of a separate package.\n\n## An ADL project\n\nAn ADL **project** is any directory with an `adl.config.*` file at its root — the single discovery surface `loadAdlProject()`, the CLI, and the inspection UI all use:\n\n```ts\nimport type { AdlProjectConfig } from \"@agent-dev-lab/core\";\nimport { adl } from \"#adl\";\n\nimport { researcher } from \"./agents/researcher\";\nimport { literatureReview } from \"./workflows/literature-review\";\n\nexport default {\n  name: \"my-research\",\n  adl, // required for CLI / inspection UI execution\n  agents: [researcher],\n  workflows: [literatureReview],\n} satisfies AdlProjectConfig;\n```\n\n```ts\nimport { loadAdlProject } from \"@agent-dev-lab/core\";\n\nconst project = await loadAdlProject();\nconst workflow = project.getWorkflow(\"literature-review\");\nconst output = await workflow!.run({ topic: \"CRISPR delivery\" }).result;\n```\n\n`bunx @agent-dev-lab/cli init my-research` scaffolds this layout for you. See [Project Setup](https://agent-dev-lab.com/guides/project-setup/) for the recommended `src/` structure and the `#adl` import alias.\n\n## Documentation\n\n- [Overview](https://agent-dev-lab.com/guides/overview/)\n- [Runtime](https://agent-dev-lab.com/core/runtime/) — `createAdlRuntime`, workflow context, OpenTelemetry\n- [Agents](https://agent-dev-lab.com/core/agents/) — `adl.createAgent`, [`stopWhen`](https://ai-sdk.dev/docs/agents/loop-control), memory, structured output\n- [Tool providers](https://agent-dev-lab.com/core/tool-provider/) — `ToolProvider`, `dispose` / `onRunEnd`, per-call context\n- [Workflows](https://agent-dev-lab.com/core/workflows/) — `adl.createWorkflow`, `ctx.step`, retry/resumability\n- [Project Config](https://agent-dev-lab.com/core/project/) — registry shape, `loadAdlProject`\n- [API Reference](https://agent-dev-lab.com/api/readme/) — generated from this package's JSDoc\n\n## License\n\n[MIT](https://github.com/jsimonrichard/agent-dev-lab/blob/main/LICENSE) © J. Simon Richard\n","readmeFilename":"README.md"}