diff --git a/.changeset/configurable-env-loading.md b/.changeset/configurable-env-loading.md deleted file mode 100644 index af9a2136..00000000 --- a/.changeset/configurable-env-loading.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -"@dawn-ai/cli": minor -"@dawn-ai/core": minor ---- - -Configurable env loading for `dawn dev` and `dawn verify`. The env file is now resolved by precedence: `--env-file ` flag > `dawn.config.ts` `env` field > default `./.env`. Shell-exported variables still win over file contents. - -- New optional `DawnConfig.env` field (a path relative to the app root). Local-only — it does not affect the deploy artifact; `langgraph.json` env detection (`.env.example` → `.env`) is unchanged. -- New `--env-file ` flag on `dawn dev` and `dawn verify`. -- A shared `resolveEnvPath` resolver now backs both `dev` and `verify`, so they agree on which file they read. -- `loadEnvFile(dir)` is refactored to `loadEnvFiles(absPaths)` with a back-compat wrapper retained; the LangSmith auto-trace and shell-wins behaviors are preserved. - -This unblocks monorepo apps: a nested app can set `env: "../../.env"` to load the workspace-root env file. diff --git a/.changeset/content-accuracy-audit.md b/.changeset/content-accuracy-audit.md deleted file mode 100644 index 1ee620f3..00000000 --- a/.changeset/content-accuracy-audit.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -"@dawn-ai/cli": patch -"@dawn-ai/config-biome": patch -"@dawn-ai/config-typescript": patch -"@dawn-ai/core": patch -"@dawn-ai/devkit": patch -"@dawn-ai/langchain": patch -"@dawn-ai/langgraph": patch -"@dawn-ai/sdk": patch -"@dawn-ai/vite-plugin": patch -"create-dawn-ai-app": patch ---- - -Correct package README links and CLI/runtime examples, export the SDK reasoning type, and fix `dawn build` agent deployment entry generation. diff --git a/.changeset/core-sqlite-direct-dep.md b/.changeset/core-sqlite-direct-dep.md deleted file mode 100644 index 28c8e8a4..00000000 --- a/.changeset/core-sqlite-direct-dep.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@dawn-ai/core": patch ---- - -Move `@dawn-ai/sqlite-storage` from `peerDependencies` to `dependencies`. It backs the default SQLite checkpointer/threads store that `@dawn-ai/core` ships, so a direct dependency reflects the real relationship and avoids requiring consumers to install it separately. diff --git a/.changeset/harness-polish.md b/.changeset/harness-polish.md deleted file mode 100644 index 5c924065..00000000 --- a/.changeset/harness-polish.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@dawn-ai/cli": patch ---- - -Fix SSE event payload double-wrap. `toSseEvent` used to emit `data: {"data": }` for the built-in `chunk` event and for capability-contributed events like `plan_update`, when it should emit `data: ` directly. The shaped events (`tool_call`, `tool_result`, `done`) are unchanged. diff --git a/.changeset/langchain-1x-zod-4.md b/.changeset/langchain-1x-zod-4.md deleted file mode 100644 index ac98050f..00000000 --- a/.changeset/langchain-1x-zod-4.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -"@dawn-ai/langchain": minor -"@dawn-ai/cli": minor -"@dawn-ai/vite-plugin": minor ---- - -Upgrade `@langchain/core` (0.3 → 1.x), `@langchain/langgraph` (0.2 → 1.x), `@langchain/openai` (0.3 → 1.x), and `zod` (3 → 4). Removes the dual-zod-version cast workaround in `tool-converter.ts`; `DynamicStructuredTool` now accepts Standard Schema directly. Downstream consumers must align on the new peer ranges (`@langchain/core >=1.1.0`). diff --git a/.changeset/phase3-agent-protocol.md b/.changeset/phase3-agent-protocol.md deleted file mode 100644 index 6231dc88..00000000 --- a/.changeset/phase3-agent-protocol.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -"@dawn-ai/sqlite-storage": minor -"@dawn-ai/core": minor -"@dawn-ai/cli": minor -"@dawn-ai/langchain": minor ---- - -Add Agent Protocol HTTP endpoints backed by a Dawn-native SQLite checkpointer (phase-3 sub-project 7). - -- New `@dawn-ai/sqlite-storage` package: `sqliteCheckpointer` (a `BaseCheckpointSaver` over Node's built-in `node:sqlite`, no native deps) and `createThreadsStore`. Requires Node 22.13+ (where `node:sqlite` is available without the `--experimental-sqlite` flag). -- `dawn.config.ts` gains `checkpointer` and `threadsStore` fields — both pluggable, with SQLite-backed defaults at `.dawn/checkpoints.sqlite` and `.dawn/threads.sqlite`. -- The dev server's HTTP layer is reshaped to the Agent Protocol: `POST /threads`, `GET`/`DELETE /threads/{id}`, `POST /threads/{id}/runs/stream`, `POST /threads/{id}/runs/wait`, `GET /threads/{id}/state`, `POST /threads/{id}/resume`. The legacy `POST /runs/stream` is removed. -- Conversation state and permission interrupts now survive a server restart. `MemorySaver` is removed from `@dawn-ai/langchain`; the checkpointer is supplied by the caller. Permission resume is state-based (reads the parked interrupt from the checkpoint) and resolves the route durably from thread metadata. diff --git a/.changeset/phase3-agents-md.md b/.changeset/phase3-agents-md.md deleted file mode 100644 index 566b2cb7..00000000 --- a/.changeset/phase3-agents-md.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -"@dawn-ai/core": minor -"@dawn-ai/cli": minor ---- - -Add the `agents-md` built-in capability: Dawn now auto-injects `/AGENTS.md` into every agent's system prompt under a `# Memory` heading on every model turn. Always-on (no opt-in marker). Preserves the feedback loop — the agent updates its memory via `writeFile` and the next turn sees the change automatically. Re-reads the file each turn (64 KiB cap; oversize, empty, or unreadable files render empty or a one-line notice). diff --git a/.changeset/phase3-nested-tool-inputs.md b/.changeset/phase3-nested-tool-inputs.md deleted file mode 100644 index 67e52716..00000000 --- a/.changeset/phase3-nested-tool-inputs.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -"@dawn-ai/core": minor -"@dawn-ai/langchain": minor ---- - -Support nested structures in tool input schemas: nested objects, arrays of objects, `Record` maps, and object unions (arbitrary depth, capped at 8 levels). Previously any non-flat input type was silently coerced to `string` in both the generated JSON Schema and the runtime Zod schema. Schemas are emitted fully inlined (no `$ref`); `Record` maps and object unions are incompatible with provider strict mode (documented), which Dawn does not currently enable. diff --git a/.changeset/phase3-planning-capability.md b/.changeset/phase3-planning-capability.md deleted file mode 100644 index 802ead79..00000000 --- a/.changeset/phase3-planning-capability.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -"@dawn-ai/core": minor -"@dawn-ai/langchain": minor -"@dawn-ai/cli": minor ---- - -Add the first phase-3 harness capability: planning. A `plan.md` file in a route directory now opts the agent into a built-in `write_todos` tool, a `todos` state channel, a Dawn-locked planning prompt fragment, and a `plan_update` SSE event. Introduces `CapabilityMarker` and `applyCapabilities` in `@dawn-ai/core` — the autowiring spine that all later phase-3 capabilities (skills, subagents, etc.) will reuse. diff --git a/.changeset/phase3-skills.md b/.changeset/phase3-skills.md deleted file mode 100644 index 7488050c..00000000 --- a/.changeset/phase3-skills.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -"@dawn-ai/core": minor -"@dawn-ai/cli": minor ---- - -Add the phase-3 skills capability. A route with `src/app//skills//SKILL.md` files now exposes them to the agent via: - -- An always-on `# Skills` section in the system prompt listing each skill's name + description -- A `readSkill({ name })` tool the agent calls to load a skill's full body on demand - -Each `SKILL.md` requires YAML frontmatter with `description`; `name` defaults to the directory name and can be overridden. The body lives in conversation history after `readSkill` returns it (not re-injected each turn) — matches the deepagents / Claude Code convention. Typegen includes `readSkill` in `RouteTools` when a route has skills. The chat example ships two seeded skills (`workspace-conventions`, `recover-from-failure`). diff --git a/.changeset/phase3-tool-state-mutation.md b/.changeset/phase3-tool-state-mutation.md deleted file mode 100644 index 8aa742a3..00000000 --- a/.changeset/phase3-tool-state-mutation.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -"@dawn-ai/core": minor -"@dawn-ai/langchain": minor ---- - -Capability tools can now mutate state channels via a Dawn-native `{result, state}` wrapped return shape — `result` becomes the agent-visible ToolMessage; `state` is a partial channel update applied via reducers. The langchain bridge translates this into a LangGraph `Command({update})` internally; capability authors don't import from `@langchain/langgraph`. Plain tool returns (anything not matching the strict wrapper shape) work unchanged. - -Planning's `write_todos` adopts the new shape, fixing the previously-documented re-emission loop: the `todos` state channel now actually reflects the agent's writes between turns, so the agent stops re-calling `write_todos` with the same content. The `plan_update` stream transformer also reads defensively from both legacy and Command-shaped tool outputs so the SSE event keeps firing. diff --git a/.changeset/planning-schema-and-memory-prompt-fix.md b/.changeset/planning-schema-and-memory-prompt-fix.md deleted file mode 100644 index ecf2576b..00000000 --- a/.changeset/planning-schema-and-memory-prompt-fix.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -"@dawn-ai/core": patch ---- - -Two fixes surfaced by live LLM smoke testing the chat example end-to-end: - -- **Planning `write_todos` now declares a real zod schema.** Previously the tool's `schema` field was undefined; the LangChain bridge fell back to `z.record(z.string(), z.unknown())`, which produced JSON Schema without `properties`. OpenAI strict-mode tool calling rejected the tool with `400 Invalid schema for function 'write_todos': object schema missing properties`. Now the planning marker exports an explicit zod schema for `{ todos: Array<{ content, status }> }`. Adds `zod` as a runtime dependency of `@dawn-ai/core`. -- **`# Memory` block now includes orientation text.** The agents-md prompt fragment used to inject `# Memory\n\n` only. With both planning and memory loaded, the model often called `listDir` and `readFile` to look at AGENTS.md even though Dawn had already injected its contents. The fragment now opens with a short paragraph telling the agent the block IS the memory file, re-rendered each turn, and that the way to update it is `writeFile`. Existing unit tests still pass — the `# Memory` heading and content substrings are unchanged. diff --git a/.changeset/provider-aware-agent-materialization.md b/.changeset/provider-aware-agent-materialization.md deleted file mode 100644 index ee0e4560..00000000 --- a/.changeset/provider-aware-agent-materialization.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -"@dawn-ai/sdk": minor -"@dawn-ai/langchain": minor ---- - -Add provider-aware agent materialization. Agent configs can now carry an optional `provider`, and the LangChain runtime infers providers for known model families or lazy-loads the explicit provider integration package for built-in provider IDs. diff --git a/.changeset/reasoning-effort.md b/.changeset/reasoning-effort.md deleted file mode 100644 index 84593409..00000000 --- a/.changeset/reasoning-effort.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -"@dawn-ai/sdk": minor -"@dawn-ai/langchain": minor ---- - -`agent({...})` now accepts an optional `reasoning: { effort }` field. Maps to OpenAI's `reasoningEffort` parameter (`none | minimal | low | medium | high | xhigh`). Non-reasoning models silently ignore it. Useful for tool-use-heavy agents that aren't following directives at the default reasoning depth. diff --git a/.changeset/rebrand-langsmith.md b/.changeset/rebrand-langsmith.md deleted file mode 100644 index 4418caeb..00000000 --- a/.changeset/rebrand-langsmith.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@dawn-ai/cli": patch ---- - -docs: rebrand "LangGraph Platform" → "LangSmith" in user-visible CLI strings, README, and comments. The `langgraph.json` artifact format is unchanged. diff --git a/examples/chat/server/CHANGELOG.md b/examples/chat/server/CHANGELOG.md new file mode 100644 index 00000000..22698ea3 --- /dev/null +++ b/examples/chat/server/CHANGELOG.md @@ -0,0 +1,25 @@ +# @dawn-example/chat-server + +## 0.0.1 + +### Patch Changes + +- Updated dependencies [17fa4aa] +- Updated dependencies [82dd52f] +- Updated dependencies [8e02fe1] +- Updated dependencies [13bc466] +- Updated dependencies [ad17e85] +- Updated dependencies [cfc3e8c] +- Updated dependencies [dd242ac] +- Updated dependencies [c777569] +- Updated dependencies [34e615b] +- Updated dependencies [2ba0773] +- Updated dependencies [affeb46] +- Updated dependencies [12ee95f] +- Updated dependencies [1005b3a] +- Updated dependencies [e8462db] +- Updated dependencies [36552c1] + - @dawn-ai/cli@0.2.0 + - @dawn-ai/core@0.2.0 + - @dawn-ai/langchain@0.2.0 + - @dawn-ai/sdk@0.2.0 diff --git a/examples/chat/server/package.json b/examples/chat/server/package.json index c6f19d8d..f24229cb 100644 --- a/examples/chat/server/package.json +++ b/examples/chat/server/package.json @@ -1,7 +1,7 @@ { "name": "@dawn-example/chat-server", "private": true, - "version": "0.0.0", + "version": "0.0.1", "type": "module", "scripts": { "dev": "node node_modules/@dawn-ai/cli/dist/index.js dev --port 3001", diff --git a/packages/cli/CHANGELOG.md b/packages/cli/CHANGELOG.md index 0d415c93..4f0bf82c 100644 --- a/packages/cli/CHANGELOG.md +++ b/packages/cli/CHANGELOG.md @@ -1,5 +1,59 @@ # @dawn-ai/cli +## 0.2.0 + +### Minor Changes + +- 17fa4aa: Configurable env loading for `dawn dev` and `dawn verify`. The env file is now resolved by precedence: `--env-file ` flag > `dawn.config.ts` `env` field > default `./.env`. Shell-exported variables still win over file contents. + + - New optional `DawnConfig.env` field (a path relative to the app root). Local-only — it does not affect the deploy artifact; `langgraph.json` env detection (`.env.example` → `.env`) is unchanged. + - New `--env-file ` flag on `dawn dev` and `dawn verify`. + - A shared `resolveEnvPath` resolver now backs both `dev` and `verify`, so they agree on which file they read. + - `loadEnvFile(dir)` is refactored to `loadEnvFiles(absPaths)` with a back-compat wrapper retained; the LangSmith auto-trace and shell-wins behaviors are preserved. + + This unblocks monorepo apps: a nested app can set `env: "../../.env"` to load the workspace-root env file. + +- ad17e85: Upgrade `@langchain/core` (0.3 → 1.x), `@langchain/langgraph` (0.2 → 1.x), `@langchain/openai` (0.3 → 1.x), and `zod` (3 → 4). Removes the dual-zod-version cast workaround in `tool-converter.ts`; `DynamicStructuredTool` now accepts Standard Schema directly. Downstream consumers must align on the new peer ranges (`@langchain/core >=1.1.0`). +- cfc3e8c: Add Agent Protocol HTTP endpoints backed by a Dawn-native SQLite checkpointer (phase-3 sub-project 7). + + - New `@dawn-ai/sqlite-storage` package: `sqliteCheckpointer` (a `BaseCheckpointSaver` over Node's built-in `node:sqlite`, no native deps) and `createThreadsStore`. Requires Node 22.13+ (where `node:sqlite` is available without the `--experimental-sqlite` flag). + - `dawn.config.ts` gains `checkpointer` and `threadsStore` fields — both pluggable, with SQLite-backed defaults at `.dawn/checkpoints.sqlite` and `.dawn/threads.sqlite`. + - The dev server's HTTP layer is reshaped to the Agent Protocol: `POST /threads`, `GET`/`DELETE /threads/{id}`, `POST /threads/{id}/runs/stream`, `POST /threads/{id}/runs/wait`, `GET /threads/{id}/state`, `POST /threads/{id}/resume`. The legacy `POST /runs/stream` is removed. + - Conversation state and permission interrupts now survive a server restart. `MemorySaver` is removed from `@dawn-ai/langchain`; the checkpointer is supplied by the caller. Permission resume is state-based (reads the parked interrupt from the checkpoint) and resolves the route durably from thread metadata. + +- dd242ac: Add the `agents-md` built-in capability: Dawn now auto-injects `/AGENTS.md` into every agent's system prompt under a `# Memory` heading on every model turn. Always-on (no opt-in marker). Preserves the feedback loop — the agent updates its memory via `writeFile` and the next turn sees the change automatically. Re-reads the file each turn (64 KiB cap; oversize, empty, or unreadable files render empty or a one-line notice). +- 34e615b: Add the first phase-3 harness capability: planning. A `plan.md` file in a route directory now opts the agent into a built-in `write_todos` tool, a `todos` state channel, a Dawn-locked planning prompt fragment, and a `plan_update` SSE event. Introduces `CapabilityMarker` and `applyCapabilities` in `@dawn-ai/core` — the autowiring spine that all later phase-3 capabilities (skills, subagents, etc.) will reuse. +- 2ba0773: Add the phase-3 skills capability. A route with `src/app//skills//SKILL.md` files now exposes them to the agent via: + + - An always-on `# Skills` section in the system prompt listing each skill's name + description + - A `readSkill({ name })` tool the agent calls to load a skill's full body on demand + + Each `SKILL.md` requires YAML frontmatter with `description`; `name` defaults to the directory name and can be overridden. The body lives in conversation history after `readSkill` returns it (not re-injected each turn) — matches the deepagents / Claude Code convention. Typegen includes `readSkill` in `RouteTools` when a route has skills. The chat example ships two seeded skills (`workspace-conventions`, `recover-from-failure`). + +### Patch Changes + +- 82dd52f: Correct package README links and CLI/runtime examples, export the SDK reasoning type, and fix `dawn build` agent deployment entry generation. +- 13bc466: Fix SSE event payload double-wrap. `toSseEvent` used to emit `data: {"data": }` for the built-in `chunk` event and for capability-contributed events like `plan_update`, when it should emit `data: ` directly. The shaped events (`tool_call`, `tool_result`, `done`) are unchanged. +- 36552c1: docs: rebrand "LangGraph Platform" → "LangSmith" in user-visible CLI strings, README, and comments. The `langgraph.json` artifact format is unchanged. +- Updated dependencies [17fa4aa] +- Updated dependencies [82dd52f] +- Updated dependencies [8e02fe1] +- Updated dependencies [ad17e85] +- Updated dependencies [cfc3e8c] +- Updated dependencies [dd242ac] +- Updated dependencies [c777569] +- Updated dependencies [34e615b] +- Updated dependencies [2ba0773] +- Updated dependencies [affeb46] +- Updated dependencies [12ee95f] +- Updated dependencies [1005b3a] +- Updated dependencies [e8462db] + - @dawn-ai/core@0.2.0 + - @dawn-ai/langchain@0.2.0 + - @dawn-ai/langgraph@0.2.0 + - @dawn-ai/sqlite-storage@0.2.0 + - @dawn-ai/permissions@0.1.8 + ## 0.1.8 ### Patch Changes diff --git a/packages/cli/package.json b/packages/cli/package.json index 7a6bf053..24aaa694 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@dawn-ai/cli", - "version": "0.1.8", + "version": "0.2.0", "private": false, "type": "module", "license": "MIT", diff --git a/packages/config-biome/CHANGELOG.md b/packages/config-biome/CHANGELOG.md index 554f9d78..4144b771 100644 --- a/packages/config-biome/CHANGELOG.md +++ b/packages/config-biome/CHANGELOG.md @@ -1,5 +1,11 @@ # @dawn-ai/config-biome +## 0.2.0 + +### Patch Changes + +- 82dd52f: Correct package README links and CLI/runtime examples, export the SDK reasoning type, and fix `dawn build` agent deployment entry generation. + ## 0.1.8 ## 0.1.7 diff --git a/packages/config-biome/package.json b/packages/config-biome/package.json index 6b8e3de8..c5c17a8a 100644 --- a/packages/config-biome/package.json +++ b/packages/config-biome/package.json @@ -1,6 +1,6 @@ { "name": "@dawn-ai/config-biome", - "version": "0.1.8", + "version": "0.2.0", "private": false, "type": "module", "license": "MIT", diff --git a/packages/config-typescript/CHANGELOG.md b/packages/config-typescript/CHANGELOG.md index 237b4fde..dd4ab792 100644 --- a/packages/config-typescript/CHANGELOG.md +++ b/packages/config-typescript/CHANGELOG.md @@ -1,5 +1,11 @@ # @dawn-ai/config-typescript +## 0.2.0 + +### Patch Changes + +- 82dd52f: Correct package README links and CLI/runtime examples, export the SDK reasoning type, and fix `dawn build` agent deployment entry generation. + ## 0.1.8 ## 0.1.7 diff --git a/packages/config-typescript/package.json b/packages/config-typescript/package.json index 3b142996..2a4be5fa 100644 --- a/packages/config-typescript/package.json +++ b/packages/config-typescript/package.json @@ -1,6 +1,6 @@ { "name": "@dawn-ai/config-typescript", - "version": "0.1.8", + "version": "0.2.0", "private": false, "type": "module", "license": "MIT", diff --git a/packages/core/CHANGELOG.md b/packages/core/CHANGELOG.md index 9c367fe4..c603df60 100644 --- a/packages/core/CHANGELOG.md +++ b/packages/core/CHANGELOG.md @@ -1,5 +1,57 @@ # @dawn-ai/core +## 0.2.0 + +### Minor Changes + +- 17fa4aa: Configurable env loading for `dawn dev` and `dawn verify`. The env file is now resolved by precedence: `--env-file ` flag > `dawn.config.ts` `env` field > default `./.env`. Shell-exported variables still win over file contents. + + - New optional `DawnConfig.env` field (a path relative to the app root). Local-only — it does not affect the deploy artifact; `langgraph.json` env detection (`.env.example` → `.env`) is unchanged. + - New `--env-file ` flag on `dawn dev` and `dawn verify`. + - A shared `resolveEnvPath` resolver now backs both `dev` and `verify`, so they agree on which file they read. + - `loadEnvFile(dir)` is refactored to `loadEnvFiles(absPaths)` with a back-compat wrapper retained; the LangSmith auto-trace and shell-wins behaviors are preserved. + + This unblocks monorepo apps: a nested app can set `env: "../../.env"` to load the workspace-root env file. + +- cfc3e8c: Add Agent Protocol HTTP endpoints backed by a Dawn-native SQLite checkpointer (phase-3 sub-project 7). + + - New `@dawn-ai/sqlite-storage` package: `sqliteCheckpointer` (a `BaseCheckpointSaver` over Node's built-in `node:sqlite`, no native deps) and `createThreadsStore`. Requires Node 22.13+ (where `node:sqlite` is available without the `--experimental-sqlite` flag). + - `dawn.config.ts` gains `checkpointer` and `threadsStore` fields — both pluggable, with SQLite-backed defaults at `.dawn/checkpoints.sqlite` and `.dawn/threads.sqlite`. + - The dev server's HTTP layer is reshaped to the Agent Protocol: `POST /threads`, `GET`/`DELETE /threads/{id}`, `POST /threads/{id}/runs/stream`, `POST /threads/{id}/runs/wait`, `GET /threads/{id}/state`, `POST /threads/{id}/resume`. The legacy `POST /runs/stream` is removed. + - Conversation state and permission interrupts now survive a server restart. `MemorySaver` is removed from `@dawn-ai/langchain`; the checkpointer is supplied by the caller. Permission resume is state-based (reads the parked interrupt from the checkpoint) and resolves the route durably from thread metadata. + +- dd242ac: Add the `agents-md` built-in capability: Dawn now auto-injects `/AGENTS.md` into every agent's system prompt under a `# Memory` heading on every model turn. Always-on (no opt-in marker). Preserves the feedback loop — the agent updates its memory via `writeFile` and the next turn sees the change automatically. Re-reads the file each turn (64 KiB cap; oversize, empty, or unreadable files render empty or a one-line notice). +- c777569: Support nested structures in tool input schemas: nested objects, arrays of objects, `Record` maps, and object unions (arbitrary depth, capped at 8 levels). Previously any non-flat input type was silently coerced to `string` in both the generated JSON Schema and the runtime Zod schema. Schemas are emitted fully inlined (no `$ref`); `Record` maps and object unions are incompatible with provider strict mode (documented), which Dawn does not currently enable. +- 34e615b: Add the first phase-3 harness capability: planning. A `plan.md` file in a route directory now opts the agent into a built-in `write_todos` tool, a `todos` state channel, a Dawn-locked planning prompt fragment, and a `plan_update` SSE event. Introduces `CapabilityMarker` and `applyCapabilities` in `@dawn-ai/core` — the autowiring spine that all later phase-3 capabilities (skills, subagents, etc.) will reuse. +- 2ba0773: Add the phase-3 skills capability. A route with `src/app//skills//SKILL.md` files now exposes them to the agent via: + + - An always-on `# Skills` section in the system prompt listing each skill's name + description + - A `readSkill({ name })` tool the agent calls to load a skill's full body on demand + + Each `SKILL.md` requires YAML frontmatter with `description`; `name` defaults to the directory name and can be overridden. The body lives in conversation history after `readSkill` returns it (not re-injected each turn) — matches the deepagents / Claude Code convention. Typegen includes `readSkill` in `RouteTools` when a route has skills. The chat example ships two seeded skills (`workspace-conventions`, `recover-from-failure`). + +- affeb46: Capability tools can now mutate state channels via a Dawn-native `{result, state}` wrapped return shape — `result` becomes the agent-visible ToolMessage; `state` is a partial channel update applied via reducers. The langchain bridge translates this into a LangGraph `Command({update})` internally; capability authors don't import from `@langchain/langgraph`. Plain tool returns (anything not matching the strict wrapper shape) work unchanged. + + Planning's `write_todos` adopts the new shape, fixing the previously-documented re-emission loop: the `todos` state channel now actually reflects the agent's writes between turns, so the agent stops re-calling `write_todos` with the same content. The `plan_update` stream transformer also reads defensively from both legacy and Command-shaped tool outputs so the SSE event keeps firing. + +### Patch Changes + +- 82dd52f: Correct package README links and CLI/runtime examples, export the SDK reasoning type, and fix `dawn build` agent deployment entry generation. +- 8e02fe1: Move `@dawn-ai/sqlite-storage` from `peerDependencies` to `dependencies`. It backs the default SQLite checkpointer/threads store that `@dawn-ai/core` ships, so a direct dependency reflects the real relationship and avoids requiring consumers to install it separately. +- 12ee95f: Two fixes surfaced by live LLM smoke testing the chat example end-to-end: + + - **Planning `write_todos` now declares a real zod schema.** Previously the tool's `schema` field was undefined; the LangChain bridge fell back to `z.record(z.string(), z.unknown())`, which produced JSON Schema without `properties`. OpenAI strict-mode tool calling rejected the tool with `400 Invalid schema for function 'write_todos': object schema missing properties`. Now the planning marker exports an explicit zod schema for `{ todos: Array<{ content, status }> }`. Adds `zod` as a runtime dependency of `@dawn-ai/core`. + - **`# Memory` block now includes orientation text.** The agents-md prompt fragment used to inject `# Memory\n\n` only. With both planning and memory loaded, the model often called `listDir` and `readFile` to look at AGENTS.md even though Dawn had already injected its contents. The fragment now opens with a short paragraph telling the agent the block IS the memory file, re-rendered each turn, and that the way to update it is `writeFile`. Existing unit tests still pass — the `# Memory` heading and content substrings are unchanged. + +- Updated dependencies [82dd52f] +- Updated dependencies [cfc3e8c] +- Updated dependencies [1005b3a] +- Updated dependencies [e8462db] + - @dawn-ai/sdk@0.2.0 + - @dawn-ai/sqlite-storage@0.2.0 + - @dawn-ai/permissions@0.1.8 + - @dawn-ai/workspace@0.1.8 + ## 0.1.8 ### Patch Changes diff --git a/packages/core/package.json b/packages/core/package.json index 1d7b0ad7..9e0f6791 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@dawn-ai/core", - "version": "0.1.8", + "version": "0.2.0", "private": false, "type": "module", "license": "MIT", diff --git a/packages/create-dawn-app/CHANGELOG.md b/packages/create-dawn-app/CHANGELOG.md index 271dffca..b2732d3e 100644 --- a/packages/create-dawn-app/CHANGELOG.md +++ b/packages/create-dawn-app/CHANGELOG.md @@ -1,5 +1,13 @@ # create-dawn-app +## 0.2.0 + +### Patch Changes + +- 82dd52f: Correct package README links and CLI/runtime examples, export the SDK reasoning type, and fix `dawn build` agent deployment entry generation. +- Updated dependencies [82dd52f] + - @dawn-ai/devkit@0.2.0 + ## 0.1.8 ### Patch Changes diff --git a/packages/create-dawn-app/package.json b/packages/create-dawn-app/package.json index 5b53e94e..a43330d1 100644 --- a/packages/create-dawn-app/package.json +++ b/packages/create-dawn-app/package.json @@ -1,6 +1,6 @@ { "name": "create-dawn-ai-app", - "version": "0.1.8", + "version": "0.2.0", "private": false, "type": "module", "license": "MIT", diff --git a/packages/devkit/CHANGELOG.md b/packages/devkit/CHANGELOG.md index 8cd2489d..b3d3644d 100644 --- a/packages/devkit/CHANGELOG.md +++ b/packages/devkit/CHANGELOG.md @@ -1,5 +1,11 @@ # @dawn-ai/devkit +## 0.2.0 + +### Patch Changes + +- 82dd52f: Correct package README links and CLI/runtime examples, export the SDK reasoning type, and fix `dawn build` agent deployment entry generation. + ## 0.1.8 ## 0.1.7 diff --git a/packages/devkit/package.json b/packages/devkit/package.json index 58b8d3ba..59100701 100644 --- a/packages/devkit/package.json +++ b/packages/devkit/package.json @@ -1,6 +1,6 @@ { "name": "@dawn-ai/devkit", - "version": "0.1.8", + "version": "0.2.0", "private": false, "type": "module", "license": "MIT", diff --git a/packages/langchain/CHANGELOG.md b/packages/langchain/CHANGELOG.md index 88d5b1f3..d523f322 100644 --- a/packages/langchain/CHANGELOG.md +++ b/packages/langchain/CHANGELOG.md @@ -1,5 +1,44 @@ # @dawn-ai/langchain +## 0.2.0 + +### Minor Changes + +- ad17e85: Upgrade `@langchain/core` (0.3 → 1.x), `@langchain/langgraph` (0.2 → 1.x), `@langchain/openai` (0.3 → 1.x), and `zod` (3 → 4). Removes the dual-zod-version cast workaround in `tool-converter.ts`; `DynamicStructuredTool` now accepts Standard Schema directly. Downstream consumers must align on the new peer ranges (`@langchain/core >=1.1.0`). +- cfc3e8c: Add Agent Protocol HTTP endpoints backed by a Dawn-native SQLite checkpointer (phase-3 sub-project 7). + + - New `@dawn-ai/sqlite-storage` package: `sqliteCheckpointer` (a `BaseCheckpointSaver` over Node's built-in `node:sqlite`, no native deps) and `createThreadsStore`. Requires Node 22.13+ (where `node:sqlite` is available without the `--experimental-sqlite` flag). + - `dawn.config.ts` gains `checkpointer` and `threadsStore` fields — both pluggable, with SQLite-backed defaults at `.dawn/checkpoints.sqlite` and `.dawn/threads.sqlite`. + - The dev server's HTTP layer is reshaped to the Agent Protocol: `POST /threads`, `GET`/`DELETE /threads/{id}`, `POST /threads/{id}/runs/stream`, `POST /threads/{id}/runs/wait`, `GET /threads/{id}/state`, `POST /threads/{id}/resume`. The legacy `POST /runs/stream` is removed. + - Conversation state and permission interrupts now survive a server restart. `MemorySaver` is removed from `@dawn-ai/langchain`; the checkpointer is supplied by the caller. Permission resume is state-based (reads the parked interrupt from the checkpoint) and resolves the route durably from thread metadata. + +- c777569: Support nested structures in tool input schemas: nested objects, arrays of objects, `Record` maps, and object unions (arbitrary depth, capped at 8 levels). Previously any non-flat input type was silently coerced to `string` in both the generated JSON Schema and the runtime Zod schema. Schemas are emitted fully inlined (no `$ref`); `Record` maps and object unions are incompatible with provider strict mode (documented), which Dawn does not currently enable. +- 34e615b: Add the first phase-3 harness capability: planning. A `plan.md` file in a route directory now opts the agent into a built-in `write_todos` tool, a `todos` state channel, a Dawn-locked planning prompt fragment, and a `plan_update` SSE event. Introduces `CapabilityMarker` and `applyCapabilities` in `@dawn-ai/core` — the autowiring spine that all later phase-3 capabilities (skills, subagents, etc.) will reuse. +- affeb46: Capability tools can now mutate state channels via a Dawn-native `{result, state}` wrapped return shape — `result` becomes the agent-visible ToolMessage; `state` is a partial channel update applied via reducers. The langchain bridge translates this into a LangGraph `Command({update})` internally; capability authors don't import from `@langchain/langgraph`. Plain tool returns (anything not matching the strict wrapper shape) work unchanged. + + Planning's `write_todos` adopts the new shape, fixing the previously-documented re-emission loop: the `todos` state channel now actually reflects the agent's writes between turns, so the agent stops re-calling `write_todos` with the same content. The `plan_update` stream transformer also reads defensively from both legacy and Command-shaped tool outputs so the SSE event keeps firing. + +- 1005b3a: Add provider-aware agent materialization. Agent configs can now carry an optional `provider`, and the LangChain runtime infers providers for known model families or lazy-loads the explicit provider integration package for built-in provider IDs. +- e8462db: `agent({...})` now accepts an optional `reasoning: { effort }` field. Maps to OpenAI's `reasoningEffort` parameter (`none | minimal | low | medium | high | xhigh`). Non-reasoning models silently ignore it. Useful for tool-use-heavy agents that aren't following directives at the default reasoning depth. + +### Patch Changes + +- 82dd52f: Correct package README links and CLI/runtime examples, export the SDK reasoning type, and fix `dawn build` agent deployment entry generation. +- Updated dependencies [17fa4aa] +- Updated dependencies [82dd52f] +- Updated dependencies [8e02fe1] +- Updated dependencies [cfc3e8c] +- Updated dependencies [dd242ac] +- Updated dependencies [c777569] +- Updated dependencies [34e615b] +- Updated dependencies [2ba0773] +- Updated dependencies [affeb46] +- Updated dependencies [12ee95f] +- Updated dependencies [1005b3a] +- Updated dependencies [e8462db] + - @dawn-ai/core@0.2.0 + - @dawn-ai/sdk@0.2.0 + ## 0.1.8 ### Patch Changes diff --git a/packages/langchain/package.json b/packages/langchain/package.json index fc1b2405..8791ab22 100644 --- a/packages/langchain/package.json +++ b/packages/langchain/package.json @@ -1,6 +1,6 @@ { "name": "@dawn-ai/langchain", - "version": "0.1.8", + "version": "0.2.0", "private": false, "type": "module", "license": "MIT", diff --git a/packages/langgraph/CHANGELOG.md b/packages/langgraph/CHANGELOG.md index 5cf0c3da..ee452700 100644 --- a/packages/langgraph/CHANGELOG.md +++ b/packages/langgraph/CHANGELOG.md @@ -1,5 +1,15 @@ # @dawn-ai/langgraph +## 0.2.0 + +### Patch Changes + +- 82dd52f: Correct package README links and CLI/runtime examples, export the SDK reasoning type, and fix `dawn build` agent deployment entry generation. +- Updated dependencies [82dd52f] +- Updated dependencies [1005b3a] +- Updated dependencies [e8462db] + - @dawn-ai/sdk@0.2.0 + ## 0.1.8 ### Patch Changes diff --git a/packages/langgraph/package.json b/packages/langgraph/package.json index 8a1e3bd3..615209be 100644 --- a/packages/langgraph/package.json +++ b/packages/langgraph/package.json @@ -1,6 +1,6 @@ { "name": "@dawn-ai/langgraph", - "version": "0.1.8", + "version": "0.2.0", "private": false, "type": "module", "license": "MIT", diff --git a/packages/sdk/CHANGELOG.md b/packages/sdk/CHANGELOG.md index 17f39b71..927326f4 100644 --- a/packages/sdk/CHANGELOG.md +++ b/packages/sdk/CHANGELOG.md @@ -1,5 +1,16 @@ # @dawn-ai/sdk +## 0.2.0 + +### Minor Changes + +- 1005b3a: Add provider-aware agent materialization. Agent configs can now carry an optional `provider`, and the LangChain runtime infers providers for known model families or lazy-loads the explicit provider integration package for built-in provider IDs. +- e8462db: `agent({...})` now accepts an optional `reasoning: { effort }` field. Maps to OpenAI's `reasoningEffort` parameter (`none | minimal | low | medium | high | xhigh`). Non-reasoning models silently ignore it. Useful for tool-use-heavy agents that aren't following directives at the default reasoning depth. + +### Patch Changes + +- 82dd52f: Correct package README links and CLI/runtime examples, export the SDK reasoning type, and fix `dawn build` agent deployment entry generation. + ## 0.1.8 ### Patch Changes diff --git a/packages/sdk/package.json b/packages/sdk/package.json index 416aa2e5..8e323051 100644 --- a/packages/sdk/package.json +++ b/packages/sdk/package.json @@ -1,6 +1,6 @@ { "name": "@dawn-ai/sdk", - "version": "0.1.8", + "version": "0.2.0", "private": false, "type": "module", "license": "MIT", diff --git a/packages/sqlite-storage/CHANGELOG.md b/packages/sqlite-storage/CHANGELOG.md new file mode 100644 index 00000000..fc93f16f --- /dev/null +++ b/packages/sqlite-storage/CHANGELOG.md @@ -0,0 +1,12 @@ +# @dawn-ai/sqlite-storage + +## 0.2.0 + +### Minor Changes + +- cfc3e8c: Add Agent Protocol HTTP endpoints backed by a Dawn-native SQLite checkpointer (phase-3 sub-project 7). + + - New `@dawn-ai/sqlite-storage` package: `sqliteCheckpointer` (a `BaseCheckpointSaver` over Node's built-in `node:sqlite`, no native deps) and `createThreadsStore`. Requires Node 22.13+ (where `node:sqlite` is available without the `--experimental-sqlite` flag). + - `dawn.config.ts` gains `checkpointer` and `threadsStore` fields — both pluggable, with SQLite-backed defaults at `.dawn/checkpoints.sqlite` and `.dawn/threads.sqlite`. + - The dev server's HTTP layer is reshaped to the Agent Protocol: `POST /threads`, `GET`/`DELETE /threads/{id}`, `POST /threads/{id}/runs/stream`, `POST /threads/{id}/runs/wait`, `GET /threads/{id}/state`, `POST /threads/{id}/resume`. The legacy `POST /runs/stream` is removed. + - Conversation state and permission interrupts now survive a server restart. `MemorySaver` is removed from `@dawn-ai/langchain`; the checkpointer is supplied by the caller. Permission resume is state-based (reads the parked interrupt from the checkpoint) and resolves the route durably from thread metadata. diff --git a/packages/sqlite-storage/package.json b/packages/sqlite-storage/package.json index dccee559..3ebe9ddb 100644 --- a/packages/sqlite-storage/package.json +++ b/packages/sqlite-storage/package.json @@ -1,6 +1,6 @@ { "name": "@dawn-ai/sqlite-storage", - "version": "0.1.0", + "version": "0.2.0", "private": false, "type": "module", "license": "MIT", diff --git a/packages/vite-plugin/CHANGELOG.md b/packages/vite-plugin/CHANGELOG.md index 0c4aaaf5..56230e72 100644 --- a/packages/vite-plugin/CHANGELOG.md +++ b/packages/vite-plugin/CHANGELOG.md @@ -1,5 +1,26 @@ # @dawn-ai/vite-plugin +## 0.2.0 + +### Minor Changes + +- ad17e85: Upgrade `@langchain/core` (0.3 → 1.x), `@langchain/langgraph` (0.2 → 1.x), `@langchain/openai` (0.3 → 1.x), and `zod` (3 → 4). Removes the dual-zod-version cast workaround in `tool-converter.ts`; `DynamicStructuredTool` now accepts Standard Schema directly. Downstream consumers must align on the new peer ranges (`@langchain/core >=1.1.0`). + +### Patch Changes + +- 82dd52f: Correct package README links and CLI/runtime examples, export the SDK reasoning type, and fix `dawn build` agent deployment entry generation. +- Updated dependencies [17fa4aa] +- Updated dependencies [82dd52f] +- Updated dependencies [8e02fe1] +- Updated dependencies [cfc3e8c] +- Updated dependencies [dd242ac] +- Updated dependencies [c777569] +- Updated dependencies [34e615b] +- Updated dependencies [2ba0773] +- Updated dependencies [affeb46] +- Updated dependencies [12ee95f] + - @dawn-ai/core@0.2.0 + ## 0.1.8 ### Patch Changes diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index 773305d4..2912a720 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@dawn-ai/vite-plugin", - "version": "0.1.8", + "version": "0.2.0", "private": false, "type": "module", "license": "MIT",