toolroll 0.9.29 → 0.9.30

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.9.30 — 2026-10-04
4
+
5
+ - **Long tasks can be planned.** 0.9.28 let task goals run to 8,000
6
+ characters, but plans still had to fit the goal in 2,000, so every plan for a
7
+ longer task was refused. Plans now take the same limit as the task.
8
+
3
9
  ## 0.9.29 — 2026-10-04
4
10
 
5
11
  - **Tasks filed from the command line get sized too.** `task scope` now sizes
package/dist/plan.d.ts CHANGED
@@ -69,11 +69,13 @@ export type PlanParseResult = {
69
69
  ok: false;
70
70
  problems: PlanProblem[];
71
71
  };
72
- /** Caps matching the scope ritual's fields, plus the document itself. */
72
+ /** Caps matching the scope ritual's fields, plus the document itself. The goal and out-of-scope text share the
73
+ * task's own limit: a plan reproduces the filed contract exactly, so a lower cap here would refuse every plan for a
74
+ * long goal. */
73
75
  export declare const PLAN_LIMITS: {
74
76
  readonly payload: number;
75
- readonly goal: 2000;
76
- readonly outOfScope: 2000;
77
+ readonly goal: 8000;
78
+ readonly outOfScope: 8000;
77
79
  readonly touch: 200;
78
80
  readonly touches: 32;
79
81
  readonly document: number;
package/dist/plan.js CHANGED
@@ -8,6 +8,7 @@
8
8
  import { createHash } from "node:crypto";
9
9
  import { hasForbiddenControls } from "./decision.js";
10
10
  import { parseAcceptanceCriteria } from "./scope.js";
11
+ import { TEXT_LIMITS } from "./text-limits.js";
11
12
  const EXECUTION_PLAN_SECTIONS = ["approach", "milestones", "dependencies", "risks", "proof"];
12
13
  const EXECUTION_PLAN_LIST_CAP = 12;
13
14
  const EXECUTION_PLAN_ITEM_CAP = 600;
@@ -127,11 +128,13 @@ export function renderExecutionPlanDocument(document) {
127
128
  "",
128
129
  ].join("\n");
129
130
  }
130
- /** Caps matching the scope ritual's fields, plus the document itself. */
131
+ /** Caps matching the scope ritual's fields, plus the document itself. The goal and out-of-scope text share the
132
+ * task's own limit: a plan reproduces the filed contract exactly, so a lower cap here would refuse every plan for a
133
+ * long goal. */
131
134
  export const PLAN_LIMITS = {
132
135
  payload: 64 * 1024,
133
- goal: 2_000,
134
- outOfScope: 2_000,
136
+ goal: TEXT_LIMITS.goal,
137
+ outOfScope: TEXT_LIMITS.goal,
135
138
  touch: 200,
136
139
  touches: 32,
137
140
  document: 16 * 1024,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "toolroll",
3
- "version": "0.9.29",
3
+ "version": "0.9.30",
4
4
  "description": "A control plane for unattended coding agents — queue tasks, walk away, come back to pull requests. Agents build in leased worktrees, never touch your default branch, and interrupt you only for decisions that need a human.",
5
5
  "directories": {
6
6
  "doc": "docs"