@isaacriehm/cairn-core 0.12.0 → 0.13.1

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.
Files changed (37) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/hooks/post-tool-use/post-write.js +6 -1
  3. package/dist/hooks/post-tool-use/post-write.js.map +1 -1
  4. package/dist/hooks/post-tool-use/write-guardian.js +14 -12
  5. package/dist/hooks/post-tool-use/write-guardian.js.map +1 -1
  6. package/dist/hooks/runners/session-start.js +10 -3
  7. package/dist/hooks/runners/session-start.js.map +1 -1
  8. package/dist/init/sot-emit.d.ts +15 -0
  9. package/dist/init/sot-emit.js +37 -4
  10. package/dist/init/sot-emit.js.map +1 -1
  11. package/dist/mcp/schemas.d.ts +1 -1
  12. package/dist/mcp/schemas.js +24 -6
  13. package/dist/mcp/schemas.js.map +1 -1
  14. package/dist/mcp/tools/decision-get.js +24 -2
  15. package/dist/mcp/tools/decision-get.js.map +1 -1
  16. package/dist/mcp/tools/in-scope.js +1 -1
  17. package/dist/mcp/tools/in-scope.js.map +1 -1
  18. package/dist/mcp/tools/mission-advance.js +9 -1
  19. package/dist/mcp/tools/mission-advance.js.map +1 -1
  20. package/dist/mcp/tools/record-decision.js +34 -3
  21. package/dist/mcp/tools/record-decision.js.map +1 -1
  22. package/dist/mcp/tools/task-complete.js +23 -1
  23. package/dist/mcp/tools/task-complete.js.map +1 -1
  24. package/dist/mcp/tools/task-create.d.ts +1 -1
  25. package/dist/mcp/tools/task-create.js +18 -3
  26. package/dist/mcp/tools/task-create.js.map +1 -1
  27. package/dist/mcp/tools/task-journal-append.js +38 -4
  28. package/dist/mcp/tools/task-journal-append.js.map +1 -1
  29. package/dist/session-start/build.js +21 -3
  30. package/dist/session-start/build.js.map +1 -1
  31. package/dist/status-line/index.d.ts +1 -1
  32. package/dist/status-line/index.js +1 -1
  33. package/dist/status-line/index.js.map +1 -1
  34. package/dist/status-line/reader.d.ts +16 -0
  35. package/dist/status-line/reader.js +86 -3
  36. package/dist/status-line/reader.js.map +1 -1
  37. package/package.json +2 -2
@@ -138,7 +138,15 @@ async function handler(ctx, input) {
138
138
  }
139
139
  export const missionAdvanceTool = {
140
140
  name: "cairn_mission_advance",
141
- description: "Resolve a phase-exit prompt (or manually advance the mission). `choice=exit` marks the named phase done and advances the cursor; refused when the phase has zero linked tasks (use force). `choice=force` advances even when the phase has zero linked tasks. `choice=not_yet` keeps the cursor — next code-change task gets attached to the same phase. `choice=defer` suppresses the phase-exit prompt for `defer_hours` (default 24). `choice=drop` removes a drifted phase id from `phase_progress` (the id was deleted from roadmap.md mid-mission); refuses if the phase is still present in roadmap.md. When the advance hits the last pending phase, the mission is auto-closed and archived.",
141
+ description: "Resolve a phase-exit prompt (or manually advance the mission). " +
142
+ "**Pick `choice` based on intent**: " +
143
+ "`exit` — phase work is done, advance the cursor. Refused only when the phase has zero linked tasks (rare in v0.12.x because `cairn_task_create` auto-links on creation). If you hit the refusal, the phase truly is empty — pass `force`. " +
144
+ "`force` — advance even when zero tasks are linked (skip a phase that wasn't worked on at all). " +
145
+ "`not_yet` — keep cursor on this phase; next `cairn_task_create` auto-attaches here. Use when more work is pending. " +
146
+ "`defer` — suppress the phase-exit prompt for `defer_hours` (default 24) without changing cursor. " +
147
+ "`drop` — remove a drifted phase id from `phase_progress` (id was deleted from `roadmap.md` mid-mission); refused if still in `roadmap.md`. " +
148
+ "When advance hits the last pending phase, mission auto-closes and archives. " +
149
+ "**Common UX**: after completing work and committing, call with `choice=exit`. The 'no linked tasks' error means the task was never created via `cairn_task_create` — go create one and retry.",
142
150
  inputSchema: missionAdvanceInput,
143
151
  handler,
144
152
  };
@@ -1 +1 @@
1
- {"version":3,"file":"mission-advance.js","sourceRoot":"","sources":["../../../src/mcp/tools/mission-advance.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mission-advance.js","sourceRoot":"","sources":["../../../src/mcp/tools/mission-advance.ts"],"names":[],"mappings":"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"}
@@ -16,13 +16,32 @@ async function handler(ctx, input) {
16
16
  return block;
17
17
  const dir = decisionsDir(ctx.repoRoot);
18
18
  const inboxDir = join(dir, "_inbox");
19
- // Validate assertions, if provided.
19
+ // Validate assertions, if provided. Inline the valid-kind list in the
20
+ // error envelope so an AI that hallucinates a kind (e.g. `no-pattern`)
21
+ // can self-correct on the retry — saving an MCP round-trip.
22
+ const VALID_KINDS = [
23
+ "schema_must_contain",
24
+ "text_must_match",
25
+ "text_must_not_match",
26
+ "index_must_exist",
27
+ "ast_pattern",
28
+ "file_must_not_be_modified",
29
+ "query_must_filter_by",
30
+ "route_must_have_guard",
31
+ "event_must_emit",
32
+ "service_method_must_call",
33
+ "human_review_hint",
34
+ ];
20
35
  if (input.assertions !== undefined) {
21
36
  for (const a of input.assertions) {
22
37
  const result = DecisionAssertion.safeParse(a);
23
38
  if (!result.success) {
24
- return mcpError("INVALID_ASSERTION_KIND", "assertion failed schema", {
39
+ const submittedKind = a !== null && typeof a === "object" && "kind" in a
40
+ ? a["kind"]
41
+ : undefined;
42
+ return mcpError("INVALID_ASSERTION_KIND", `assertion failed schema (kind=${JSON.stringify(submittedKind)}); valid kinds: ${VALID_KINDS.join(", ")}. Per-assertion glob field is 'in_globs', not 'scope_globs'.`, {
25
43
  assertion: a,
44
+ valid_kinds: VALID_KINDS,
26
45
  issues: result.error.issues,
27
46
  });
28
47
  }
@@ -181,7 +200,19 @@ function allocateUniqueDecId(input, existingIds) {
181
200
  }
182
201
  export const recordDecisionTool = {
183
202
  name: "cairn_record_decision",
184
- description: "Record a decision in the ledger or inbox. Use `slug` to promote a candidate from the topic index, or provide `title` and `summary` for a manual entry. Use `target=accepted` (operator only) to bypass the inbox.",
203
+ description: "Record a decision in the ledger or inbox. Use `slug` to promote a candidate from the topic index, or provide `title` and `summary` for a manual entry. Use `target='accepted'` (operator only) to bypass the inbox.\n\n" +
204
+ "**`assertions` schema** (only emit one of these `kind` values — anything else returns INVALID_ASSERTION_KIND):\n" +
205
+ "- `text_must_match` / `text_must_not_match`: `{id, kind, pattern, in_globs[]}` — regex over files in globs.\n" +
206
+ "- `ast_pattern`: `{id, kind, language, pattern, in_globs[]}` — AST grep in named lang over globs.\n" +
207
+ "- `file_must_not_be_modified`: `{id, kind, path}` — single file is read-only.\n" +
208
+ "- `schema_must_contain`: `{id, kind, table, column, column_type?, nullable?}` — DB schema.\n" +
209
+ "- `index_must_exist`: `{id, kind, table, columns[], where?}` — DB index.\n" +
210
+ "- `query_must_filter_by`: `{id, kind, orm, in_globs[], table, columns[], operator: 'eq'|'in'|'between'|'is_not_null', require_combination: 'and'|'or'}`.\n" +
211
+ "- `route_must_have_guard`: `{id, kind, in_globs[], guard, require_on[]}`.\n" +
212
+ "- `event_must_emit`: `{id, kind, in_globs[], after_method, event_key, payload_must_include?[]}`.\n" +
213
+ "- `service_method_must_call`: `{id, kind, in_globs[], in_method, must_call, before_returning?}`.\n" +
214
+ "- `human_review_hint`: `{id, kind, description}` — fallback when the rule can't be machine-checked.\n" +
215
+ "**Field hint**: the field is `in_globs` (where to scan), not `scope_globs`. `scope_globs` is the top-level decision field; per-assertion globs use `in_globs`.",
185
216
  inputSchema: recordDecisionInput,
186
217
  handler,
187
218
  };
@@ -1 +1 @@
1
- {"version":3,"file":"record-decision.js","sourceRoot":"","sources":["../../../src/mcp/tools/record-decision.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"record-decision.js","sourceRoot":"","sources":["../../../src/mcp/tools/record-decision.ts"],"names":[],"mappings":"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"}
@@ -20,6 +20,24 @@ import { mcpError } from "../errors.js";
20
20
  import { taskCompleteInput } from "../schemas.js";
21
21
  import { completeTask, findCurrentActiveTask } from "../../tasks/index.js";
22
22
  import { findActiveMission, readMissionState, readRoadmap, } from "@isaacriehm/cairn-state";
23
+ const SUMMARY_ADVISORY = 2000;
24
+ /**
25
+ * Soft-truncate to `advisory` chars with a trailing marker. Returns
26
+ * the unchanged string when it fits. Splits at the last word boundary
27
+ * before the cap to avoid mid-token truncation.
28
+ */
29
+ function softTruncate(s, advisory) {
30
+ if (s.length <= advisory)
31
+ return { value: s, truncated: false };
32
+ const removed = s.length - advisory;
33
+ const markerSuffix = `…[+${removed} chars truncated]`;
34
+ const keep = Math.max(0, advisory - markerSuffix.length);
35
+ let cut = s.slice(0, keep);
36
+ const lastSpace = cut.lastIndexOf(" ");
37
+ if (lastSpace > advisory - 200)
38
+ cut = cut.slice(0, lastSpace);
39
+ return { value: cut + markerSuffix, truncated: true };
40
+ }
23
41
  /**
24
42
  * Read the `title:` and `phase: <terminal>` from a done task's
25
43
  * `status.yaml`. Best-effort — returns the task id as title when the
@@ -168,11 +186,12 @@ async function handler(ctx, input) {
168
186
  if (taskId === null) {
169
187
  return mcpError("TASK_NOT_FOUND", "no active task — pass task_id explicitly or call cairn_task_create first");
170
188
  }
189
+ const summaryResult = input.summary !== undefined ? softTruncate(input.summary, SUMMARY_ADVISORY) : null;
171
190
  const result = completeTask({
172
191
  repoRoot: ctx.repoRoot,
173
192
  taskId,
174
193
  outcome: input.outcome,
175
- ...(input.summary !== undefined ? { summary: input.summary } : {}),
194
+ ...(summaryResult !== null ? { summary: summaryResult.value } : {}),
176
195
  source: "cairn_task_complete",
177
196
  });
178
197
  if (!result.ok) {
@@ -197,6 +216,7 @@ async function handler(ctx, input) {
197
216
  outcome: result.outcome,
198
217
  completed_at: result.completedAt,
199
218
  moved_to: result.movedTo,
219
+ ...(summaryResult?.truncated === true ? { truncated: ["summary"] } : {}),
200
220
  phase_ready_to_exit: {
201
221
  mission_id: phaseReady.mission_id,
202
222
  mission_title: phaseReady.mission_title,
@@ -226,6 +246,7 @@ async function handler(ctx, input) {
226
246
  outcome: result.outcome,
227
247
  completed_at: result.completedAt,
228
248
  moved_to: result.movedTo,
249
+ ...(summaryResult?.truncated === true ? { truncated: ["summary"] } : {}),
229
250
  next_action_hint: nextAction,
230
251
  };
231
252
  }
@@ -235,6 +256,7 @@ async function handler(ctx, input) {
235
256
  outcome: result.outcome,
236
257
  completed_at: result.completedAt,
237
258
  moved_to: result.movedTo,
259
+ ...(summaryResult?.truncated === true ? { truncated: ["summary"] } : {}),
238
260
  };
239
261
  }
240
262
  export const taskCompleteTool = {
@@ -1 +1 @@
1
- {"version":3,"file":"task-complete.js","sourceRoot":"","sources":["../../../src/mcp/tools/task-complete.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"task-complete.js","sourceRoot":"","sources":["../../../src/mcp/tools/task-complete.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@ interface Input {
3
3
  slug: string;
4
4
  title: string;
5
5
  goal: string;
6
- target_path_globs: string[];
6
+ target_path_globs?: string[];
7
7
  in_scope_decisions?: string[];
8
8
  in_scope_invariants?: string[];
9
9
  constraints?: string[];
@@ -6,6 +6,7 @@ import { findActiveMission, readMissionState, readRoadmap, } from "@isaacriehm/c
6
6
  import { requireBootstrap } from "../bootstrap-guard.js";
7
7
  import { mcpError } from "../errors.js";
8
8
  import { taskCreateInput } from "../schemas.js";
9
+ import { linkTaskToPhase } from "../../missions/task-link.js";
9
10
  /**
10
11
  * Generate a `task_id` matching the regex `^TSK-[a-z0-9-]+-[0-9a-f]{7}$`.
11
12
  *
@@ -117,7 +118,7 @@ async function handler(ctx, input) {
117
118
  status: "ready",
118
119
  audience: "dual",
119
120
  generated: generatedAt,
120
- target_path_globs: input.target_path_globs,
121
+ target_path_globs: input.target_path_globs ?? [],
121
122
  in_scope_decisions: input.in_scope_decisions ?? [],
122
123
  in_scope_invariants: input.in_scope_invariants ?? [],
123
124
  needs_review: needsReview,
@@ -145,7 +146,7 @@ async function handler(ctx, input) {
145
146
  const statusFrame = {
146
147
  id: taskId,
147
148
  phase: "running",
148
- module: input.module ?? input.target_path_globs[0]?.split("/")[0] ?? ".",
149
+ module: input.module ?? input.target_path_globs?.[0]?.split("/")[0] ?? ".",
149
150
  title: input.title,
150
151
  started_at: generatedAt,
151
152
  };
@@ -156,6 +157,15 @@ async function handler(ctx, input) {
156
157
  const statusContent = stringifyYaml(statusFrame);
157
158
  const statusPath = join(taskDir, "status.yaml");
158
159
  writeFileSync(statusPath, statusContent, "utf8");
160
+ // Eagerly link the task to its phase's `task_ids`. Before this, linkage
161
+ // only fired in `onTaskCompleted` — meaning a phase that had pending
162
+ // (not-yet-completed) tasks looked empty to `mission_advance choice=exit`,
163
+ // forcing operators to pass `choice=force` even though real work was
164
+ // anchored to the phase. Linking on create makes the phase ledger
165
+ // reflect intent, not just graduation.
166
+ if (missionId !== null && phaseId !== null) {
167
+ linkTaskToPhase(ctx.repoRoot, missionId, phaseId, taskId);
168
+ }
159
169
  return {
160
170
  ok: true,
161
171
  task_id: taskId,
@@ -170,7 +180,12 @@ async function handler(ctx, input) {
170
180
  }
171
181
  export const taskCreateTool = {
172
182
  name: "cairn_task_create",
173
- description: "Allocate a task_id and atomically write spec.tightened.md + status.yaml under .cairn/tasks/active/<task_id>/. The server controls task_id format (TSK-YYYY-MM-DD-<slug>-<5-digit-ms>) — callers cannot misformat it. Required by the cairn-direction skill before any source mutation.",
183
+ description: "Allocate a task_id and atomically write spec.tightened.md + status.yaml under .cairn/tasks/active/<task_id>/. " +
184
+ "**Required fields**: `slug` (lowercase kebab, 3-80 chars), `title` (≤80 chars), `goal` (free-form). " +
185
+ "**Optional**: `target_path_globs` (defaults to []; pass paths to pin scope), `in_scope_decisions`, `in_scope_invariants`, `constraints`, `out_of_scope`, `acceptance`, `module`, `needs_review`, `mission_id` (anchor to mission; defaults to active mission's cursor — pass `''` to opt out as side-task), `phase_id`. " +
186
+ "Server controls task_id format (`TSK-<slug>-<7-hex>`); callers cannot misformat it. " +
187
+ "Auto-links the new task to its phase's `task_ids` immediately so `cairn_mission_advance choice='exit'` sees the task without waiting for `cairn_task_complete`. " +
188
+ "Required by the cairn-direction skill before any source mutation.",
174
189
  inputSchema: taskCreateInput,
175
190
  handler,
176
191
  };
@@ -1 +1 @@
1
- {"version":3,"file":"task-create.js","sourceRoot":"","sources":["../../../src/mcp/tools/task-create.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,SAAS,IAAI,aAAa,EAAE,MAAM,MAAM,CAAC;AAClD,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,WAAW,GACZ,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAmBhD;;;;;;;;;;;;GAYG;AACH,SAAS,cAAc,CAAC,IAAY;IAClC,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC;SAC9B,MAAM,CAAC,GAAG,IAAI,GAAG,UAAU,EAAE,EAAE,EAAE,MAAM,CAAC;SACxC,MAAM,CAAC,KAAK,CAAC;SACb,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACf,OAAO,OAAO,IAAI,IAAI,IAAI,EAAE,CAAC;AAC/B,CAAC;AAED,SAAS,iBAAiB,CAAC,EAAU;IACnC,OAAO,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;AAC5C,CAAC;AAED,SAAS,gBAAgB,CAAC,KAA2B,EAAE,QAAgB;IACrE,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,QAAQ,IAAI,CAAC;IACxE,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AAC5D,CAAC;AAED,KAAK,UAAU,OAAO,CAAC,GAAe,EAAE,KAAY;IAClD,MAAM,KAAK,GAAG,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC7C,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAEjC,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IACxE,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACxB,OAAO,QAAQ,CACb,iBAAiB,EACjB,GAAG,OAAO,0DAA0D,CACrE,CAAC;IACJ,CAAC;IAED,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAExC,MAAM,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC7C,MAAM,WAAW,GAAG,KAAK,CAAC,YAAY,IAAI,IAAI,CAAC;IAE/C,mEAAmE;IACnE,mEAAmE;IACnE,IAAI,SAAS,GAAkB,IAAI,CAAC;IACpC,IAAI,OAAO,GAAkB,IAAI,CAAC;IAClC,IAAI,KAAK,CAAC,UAAU,KAAK,EAAE,EAAE,CAAC;QAC5B,SAAS,GAAG,IAAI,CAAC;QACjB,OAAO,GAAG,IAAI,CAAC;IACjB,CAAC;SAAM,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS,IAAI,KAAK,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;QACvE,SAAS,GAAG,KAAK,CAAC,UAAU,CAAC;QAC7B,OAAO,GAAG,KAAK,CAAC,QAAQ,IAAI,IAAI,CAAC;IACnC,CAAC;SAAM,CAAC;QACN,MAAM,aAAa,GAAG,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACtD,IAAI,aAAa,KAAK,IAAI,EAAE,CAAC;YAC3B,MAAM,KAAK,GAAG,gBAAgB,CAAC,GAAG,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;YAC5D,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;YACzD,MAAM,WAAW,GAAG,KAAK,EAAE,MAAM,CAAC,YAAY,IAAI,IAAI,CAAC;YACvD,IAAI,WAAW,KAAK,IAAI,IAAI,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,WAAW,CAAC,EAAE,CAAC;gBAC1F,SAAS,GAAG,aAAa,CAAC;gBAC1B,OAAO,GAAG,KAAK,CAAC,QAAQ,IAAI,WAAW,CAAC;YAC1C,CAAC;QACH,CAAC;IACH,CAAC;IACD,kEAAkE;IAClE,uEAAuE;IACvE,qEAAqE;IACrE,sEAAsE;IACtE,kEAAkE;IAClE,uEAAuE;IACvE,wCAAwC;IACxC,IAAI,YAAY,GAAkB,IAAI,CAAC;IACvC,IACE,SAAS,KAAK,IAAI;QAClB,OAAO,KAAK,IAAI;QAChB,CAAC,KAAK,CAAC,UAAU,KAAK,SAAS,IAAI,KAAK,CAAC,UAAU,KAAK,IAAI,CAAC,EAC7D,CAAC;QACD,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QACrD,IAAI,OAAO,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,EAAE,CAAC;YAClF,OAAO,QAAQ,CACb,mBAAmB,EACnB,YAAY,OAAO,8BAA8B,SAAS,EAAE,CAC7D,CAAC;QACJ,CAAC;QACD,MAAM,QAAQ,GAAG,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC;QAC3E,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU,CAAC;YACjC,KAAK,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,CAAC;gBAC9D,KAAK,MAAM,GAAG,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC;oBACtD,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC;wBAAE,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACvC,CAAC;YACH,CAAC;YACD,MAAM,QAAQ,GAAG,GAAG,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,aAAa,EAAE,CAAC,WAAW,EAAE,CAAC;YAC7E,MAAM,GAAG,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;YAC9D,IAAI,CAAC,GAAG,IAAI,MAAM,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;gBAC5B,YAAY;oBACV,wCAAwC,OAAO,wEAAwE;wBACvH,oJAAoJ;wBACpJ,iBAAiB,QAAQ,CAAC,KAAK,IAAI,CAAC;YACxC,CAAC;QACH,CAAC;IACH,CAAC;SAAM,IAAI,SAAS,KAAK,IAAI,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QAClD,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QACrD,IAAI,OAAO,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,EAAE,CAAC;YAClF,OAAO,QAAQ,CACb,mBAAmB,EACnB,YAAY,OAAO,8BAA8B,SAAS,EAAE,CAC7D,CAAC;QACJ,CAAC;IACH,CAAC;IAED,MAAM,eAAe,GAAG;QACtB,EAAE,EAAE,MAAM;QACV,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,OAAO;QACf,QAAQ,EAAE,MAAM;QAChB,SAAS,EAAE,WAAW;QACtB,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;QAC1C,kBAAkB,EAAE,KAAK,CAAC,kBAAkB,IAAI,EAAE;QAClD,mBAAmB,EAAE,KAAK,CAAC,mBAAmB,IAAI,EAAE;QACpD,YAAY,EAAE,WAAW;KAC1B,CAAC;IAEF,MAAM,QAAQ,GAAG;QACf,KAAK,KAAK,CAAC,KAAK,EAAE;QAClB,EAAE;QACF,SAAS;QACT,EAAE;QACF,KAAK,CAAC,IAAI;QACV,EAAE;QACF,gBAAgB;QAChB,EAAE;QACF,gBAAgB,CAAC,KAAK,CAAC,WAAW,EAAE,+CAA+C,CAAC;QACpF,iBAAiB;QACjB,EAAE;QACF,gBAAgB,CAAC,KAAK,CAAC,YAAY,EAAE,QAAQ,CAAC;QAC9C,eAAe;QACf,EAAE;QACF,gBAAgB,CAAC,KAAK,CAAC,UAAU,EAAE,mDAAmD,CAAC;KACxF,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEb,MAAM,WAAW,GAAG,QAAQ,aAAa,CAAC,eAAe,CAAC,UAAU,QAAQ,EAAE,CAAC;IAC/E,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAAC;IACpD,aAAa,CAAC,QAAQ,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;IAE7C,MAAM,WAAW,GAA4B;QAC3C,EAAE,EAAE,MAAM;QACV,KAAK,EAAE,SAAS;QAChB,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG;QACxE,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,UAAU,EAAE,WAAW;KACxB,CAAC;IACF,IAAI,SAAS,KAAK,IAAI,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QAC3C,WAAW,CAAC,YAAY,CAAC,GAAG,SAAS,CAAC;QACtC,WAAW,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC;IACpC,CAAC;IACD,MAAM,aAAa,GAAG,aAAa,CAAC,WAAW,CAAC,CAAC;IACjD,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;IAChD,aAAa,CAAC,UAAU,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC;IAEjD,OAAO;QACL,EAAE,EAAE,IAAI;QACR,OAAO,EAAE,MAAM;QACf,SAAS,EAAE,uBAAuB,MAAM,oBAAoB;QAC5D,WAAW,EAAE,uBAAuB,MAAM,cAAc;QACxD,kBAAkB,EAAE,KAAK,CAAC,kBAAkB,IAAI,EAAE;QAClD,mBAAmB,EAAE,CAAC,KAAK,CAAC,mBAAmB,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,iBAAiB,CAAC;QAC7E,UAAU,EAAE,SAAS;QACrB,QAAQ,EAAE,OAAO;QACjB,GAAG,CAAC,YAAY,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC5D,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,cAAc,GAAmB;IAC5C,IAAI,EAAE,mBAAmB;IACzB,WAAW,EACT,wRAAwR;IAC1R,WAAW,EAAE,eAAe;IAC5B,OAAO;CACR,CAAC"}
1
+ {"version":3,"file":"task-create.js","sourceRoot":"","sources":["../../../src/mcp/tools/task-create.ts"],"names":[],"mappings":"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"}
@@ -13,6 +13,25 @@ import { requireBootstrap } from "../bootstrap-guard.js";
13
13
  import { mcpError } from "../errors.js";
14
14
  import { taskJournalAppendInput } from "../schemas.js";
15
15
  import { appendTaskJournal, findCurrentActiveTask } from "../../tasks/index.js";
16
+ const SUMMARY_ADVISORY = 320;
17
+ /**
18
+ * Soft-truncate to `advisory` chars with a trailing marker. Returns the
19
+ * unchanged string when it fits. Splits at the last word boundary
20
+ * before the cap to avoid mid-token truncation.
21
+ */
22
+ function softTruncate(s, advisory) {
23
+ if (s.length <= advisory)
24
+ return { value: s, truncated: false };
25
+ // Reserve room for the marker so the final string lands at ≤advisory.
26
+ const removed = s.length - advisory;
27
+ const markerSuffix = `…[+${removed} chars truncated]`;
28
+ const keep = Math.max(0, advisory - markerSuffix.length);
29
+ let cut = s.slice(0, keep);
30
+ const lastSpace = cut.lastIndexOf(" ");
31
+ if (lastSpace > advisory - 80)
32
+ cut = cut.slice(0, lastSpace);
33
+ return { value: cut + markerSuffix, truncated: true };
34
+ }
16
35
  async function handler(ctx, input) {
17
36
  const block = requireBootstrap(ctx.repoRoot);
18
37
  if (block !== null)
@@ -21,23 +40,38 @@ async function handler(ctx, input) {
21
40
  if (taskId === null) {
22
41
  return mcpError("TASK_NOT_FOUND", "no active task — call cairn_task_create first or pass task_id explicitly");
23
42
  }
43
+ const summaryResult = softTruncate(input.summary, SUMMARY_ADVISORY);
44
+ const nextStepResult = input.next_step !== undefined ? softTruncate(input.next_step, SUMMARY_ADVISORY) : null;
24
45
  const ok = appendTaskJournal({
25
46
  repoRoot: ctx.repoRoot,
26
47
  taskId,
27
48
  sessionId: input.session_id ?? null,
28
- summary: input.summary,
29
- ...(input.next_step !== undefined ? { nextStep: input.next_step } : {}),
49
+ summary: summaryResult.value,
50
+ ...(nextStepResult !== null ? { nextStep: nextStepResult.value } : {}),
30
51
  ...(input.files_touched !== undefined ? { filesTouched: input.files_touched } : {}),
31
52
  ...(input.decisions_loaded !== undefined ? { decisionsLoaded: input.decisions_loaded } : {}),
32
53
  });
33
54
  if (!ok) {
34
55
  return mcpError("TASK_NOT_FOUND", `active task directory missing: .cairn/tasks/active/${taskId}/`);
35
56
  }
36
- return { ok: true, task_id: taskId };
57
+ const truncatedFields = [];
58
+ if (summaryResult.truncated)
59
+ truncatedFields.push("summary");
60
+ if (nextStepResult?.truncated === true)
61
+ truncatedFields.push("next_step");
62
+ return {
63
+ ok: true,
64
+ task_id: taskId,
65
+ ...(truncatedFields.length > 0 ? { truncated: truncatedFields } : {}),
66
+ };
37
67
  }
38
68
  export const taskJournalAppendTool = {
39
69
  name: "cairn_task_journal_append",
40
- description: "Append one journal entry to the active task's journal.jsonl. Call at the end of every assistant turn while a task is active so that `/cairn-resume <task_id>` after a `/clear` rebuilds the operator's mental state cold. `summary` is a ≤160-char one-liner of what just happened; `next_step` is what comes next. `task_id` is optional — Cairn picks the most-recently-touched active task when omitted.",
70
+ description: "Append one journal entry to the active task's journal.jsonl. Call at the end of every assistant turn while a task is active so that `/cairn-resume <task_id>` after a `/clear` rebuilds the operator's mental state cold. " +
71
+ "`summary` is a terse one-liner (~320 chars; soft-truncated above that with a trailing marker — no validation reject). " +
72
+ "`next_step` is what comes next, same length budget. " +
73
+ "`task_id` is optional — Cairn picks the most-recently-touched active task when omitted. " +
74
+ "Response includes `truncated: [field…]` when any input was soft-truncated.",
41
75
  inputSchema: taskJournalAppendInput,
42
76
  handler,
43
77
  };
@@ -1 +1 @@
1
- {"version":3,"file":"task-journal-append.js","sourceRoot":"","sources":["../../../src/mcp/tools/task-journal-append.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAEvD,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAWhF,KAAK,UAAU,OAAO,CAAC,GAAe,EAAE,KAAY;IAClD,MAAM,KAAK,GAAG,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC7C,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAEjC,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,IAAI,qBAAqB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACpE,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,OAAO,QAAQ,CACb,gBAAgB,EAChB,0EAA0E,CAC3E,CAAC;IACJ,CAAC;IAED,MAAM,EAAE,GAAG,iBAAiB,CAAC;QAC3B,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,MAAM;QACN,SAAS,EAAE,KAAK,CAAC,UAAU,IAAI,IAAI;QACnC,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,GAAG,CAAC,KAAK,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvE,GAAG,CAAC,KAAK,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACnF,GAAG,CAAC,KAAK,CAAC,gBAAgB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,KAAK,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC7F,CAAC,CAAC;IAEH,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,OAAO,QAAQ,CACb,gBAAgB,EAChB,sDAAsD,MAAM,GAAG,CAChE,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;AACvC,CAAC;AAED,MAAM,CAAC,MAAM,qBAAqB,GAAmB;IACnD,IAAI,EAAE,2BAA2B;IACjC,WAAW,EACT,6YAA6Y;IAC/Y,WAAW,EAAE,sBAAsB;IACnC,OAAO;CACR,CAAC"}
1
+ {"version":3,"file":"task-journal-append.js","sourceRoot":"","sources":["../../../src/mcp/tools/task-journal-append.ts"],"names":[],"mappings":"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"}
@@ -390,7 +390,7 @@ function isMissionPhaseDeferActive(repoRoot, missionId, phaseId) {
390
390
  function readBrandAndPositioning(repoRoot, warnings) {
391
391
  const brandPath = join(repoRoot, ".cairn", "ground", "brand", "overview.md");
392
392
  const positioningPath = join(repoRoot, ".cairn", "ground", "product", "positioning.md");
393
- const parts = [];
393
+ const sections = [];
394
394
  for (const [label, path] of [
395
395
  ["Brand overview", brandPath],
396
396
  ["Product positioning", positioningPath],
@@ -408,14 +408,32 @@ function readBrandAndPositioning(repoRoot, warnings) {
408
408
  const draftHint = status === "draft"
409
409
  ? " [DRAFT — operator has not filled this in; ask before making design decisions]"
410
410
  : "";
411
- parts.push(`### ${label}${draftHint}\n\n${body}`);
411
+ sections.push({ label, body, draftHint });
412
412
  }
413
413
  catch (err) {
414
414
  warnings.push(`${label} read failed: ${err instanceof Error ? err.message : String(err)}`);
415
415
  }
416
416
  }
417
- if (parts.length === 0)
417
+ if (sections.length === 0)
418
418
  return null;
419
+ // Dedupe by normalized body. Strip leading `#`-headings + collapse
420
+ // whitespace so `# Brand overview\n\nfoo` and `# Product positioning\n\nfoo`
421
+ // are recognized as identical prose under different titles. Phase
422
+ // 6-brand pre-fills both files from the same Q1 answer; in practice
423
+ // adopted repos ship a SessionStart with the same paragraph appearing
424
+ // twice under two headings until the operator manually diverges them.
425
+ // Render once with a merged label.
426
+ const normalize = (s) => s
427
+ .replace(/^\s*#{1,6}\s+.*$/gm, "") // drop H1-H6 lines entirely
428
+ .replace(/\s+/g, " ")
429
+ .trim();
430
+ const uniqBodies = new Set(sections.map((s) => normalize(s.body)));
431
+ if (uniqBodies.size === 1 && sections.length > 1) {
432
+ const first = sections[0];
433
+ const mergedLabel = sections.map((s) => s.label).join(" / ");
434
+ return `## Brand and product context\n\n### ${mergedLabel}${first.draftHint}\n\n${first.body}`;
435
+ }
436
+ const parts = sections.map((s) => `### ${s.label}${s.draftHint}\n\n${s.body}`);
419
437
  return `## Brand and product context\n\n${parts.join("\n\n")}`;
420
438
  }
421
439
  function computeTotalChars(sections) {