From 16e2ab3ff6498408b4ef22ce719f2ae72a396266 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 5 Jun 2026 14:48:08 +0000 Subject: [PATCH] chore: release --- .changeset/plan-file-escape-hatch.md | 12 ------------ CHANGELOG.md | 13 +++++++++++++ package.json | 2 +- 3 files changed, 14 insertions(+), 13 deletions(-) delete mode 100644 .changeset/plan-file-escape-hatch.md diff --git a/.changeset/plan-file-escape-hatch.md b/.changeset/plan-file-escape-hatch.md deleted file mode 100644 index c5ae199..0000000 --- a/.changeset/plan-file-escape-hatch.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -"@planningo/duul": minor ---- - -Fix the recurring `-32602: plan required` (and `code`/`approved_plan` equivalents) failure where a caller's tool call collapsed to an empty `{}` and looped. - -Two-part fix: - -- **Reachable guards.** The large required string fields (`plan`, `code`, `approved_plan`) are now `optional` at the schema level, so an empty/partial call reaches the handler instead of being rejected pre-handler by the MCP SDK. Callers now get actionable retry guidance instead of an opaque `-32602` zod error. (Partition's short `workspace_root` was also relaxed to `optional` for the same reachability reason — the handler still hard-requires it.) -- **File escape hatch.** Added `plan_file` (plan review), `code_file` + `approved_plan_file` (code review), and `approved_plan_file` (execution partition). Callers can write large content to a file with a normal Write call and pass a short relative path; the server reads it (scoped, symlink-guarded, `tracked_only` bypassed for the caller's own artifact). This avoids the large-argument serialization failure that made models emit `{}`. - -The reviewer system prompts now emit free-text fields in compressed style to reduce output tokens. Exactly one of the inline field or its `*_file` companion is required. diff --git a/CHANGELOG.md b/CHANGELOG.md index 7f08cdb..b5bc952 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,18 @@ # @planningo/duul +## 1.1.0 + +### Minor Changes + +- 7a6123f: Fix the recurring `-32602: plan required` (and `code`/`approved_plan` equivalents) failure where a caller's tool call collapsed to an empty `{}` and looped. + + Two-part fix: + + - **Reachable guards.** The large required string fields (`plan`, `code`, `approved_plan`) are now `optional` at the schema level, so an empty/partial call reaches the handler instead of being rejected pre-handler by the MCP SDK. Callers now get actionable retry guidance instead of an opaque `-32602` zod error. (Partition's short `workspace_root` was also relaxed to `optional` for the same reachability reason — the handler still hard-requires it.) + - **File escape hatch.** Added `plan_file` (plan review), `code_file` + `approved_plan_file` (code review), and `approved_plan_file` (execution partition). Callers can write large content to a file with a normal Write call and pass a short relative path; the server reads it (scoped, symlink-guarded, `tracked_only` bypassed for the caller's own artifact). This avoids the large-argument serialization failure that made models emit `{}`. + + The reviewer system prompts now emit free-text fields in compressed style to reduce output tokens. Exactly one of the inline field or its `*_file` companion is required. + ## 1.0.1 ### Patch Changes diff --git a/package.json b/package.json index ef5614d..423698f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@planningo/duul", - "version": "1.0.1", + "version": "1.1.0", "description": "DUUL — Dual-phase Upfront-plan & Unit-verify Loop. MCP server for LLM peer review of plans and code.", "type": "module", "main": "build/index.js",