@isaacriehm/cairn-core 0.9.8 → 0.10.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 (82) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/hooks/runners/context-threshold.d.ts +33 -4
  3. package/dist/hooks/runners/context-threshold.js +90 -25
  4. package/dist/hooks/runners/context-threshold.js.map +1 -1
  5. package/dist/hooks/runners/index.d.ts +1 -0
  6. package/dist/hooks/runners/index.js +1 -0
  7. package/dist/hooks/runners/index.js.map +1 -1
  8. package/dist/hooks/runners/session-start.js +36 -2
  9. package/dist/hooks/runners/session-start.js.map +1 -1
  10. package/dist/hooks/runners/stop.js +105 -0
  11. package/dist/hooks/runners/stop.js.map +1 -1
  12. package/dist/index.d.ts +1 -0
  13. package/dist/index.js +1 -0
  14. package/dist/index.js.map +1 -1
  15. package/dist/mcp/errors.d.ts +1 -1
  16. package/dist/mcp/errors.js.map +1 -1
  17. package/dist/mcp/schemas.d.ts +101 -0
  18. package/dist/mcp/schemas.js +92 -0
  19. package/dist/mcp/schemas.js.map +1 -1
  20. package/dist/mcp/tools/index.js +19 -0
  21. package/dist/mcp/tools/index.js.map +1 -1
  22. package/dist/mcp/tools/mission-accept-draft.d.ts +16 -0
  23. package/dist/mcp/tools/mission-accept-draft.js +102 -0
  24. package/dist/mcp/tools/mission-accept-draft.js.map +1 -0
  25. package/dist/mcp/tools/mission-advance.d.ts +8 -0
  26. package/dist/mcp/tools/mission-advance.js +124 -0
  27. package/dist/mcp/tools/mission-advance.js.map +1 -0
  28. package/dist/mcp/tools/mission-close.d.ts +8 -0
  29. package/dist/mcp/tools/mission-close.js +48 -0
  30. package/dist/mcp/tools/mission-close.js.map +1 -0
  31. package/dist/mcp/tools/mission-get.d.ts +6 -0
  32. package/dist/mcp/tools/mission-get.js +64 -0
  33. package/dist/mcp/tools/mission-get.js.map +1 -0
  34. package/dist/mcp/tools/mission-reopen.d.ts +13 -0
  35. package/dist/mcp/tools/mission-reopen.js +56 -0
  36. package/dist/mcp/tools/mission-reopen.js.map +1 -0
  37. package/dist/mcp/tools/mission-resume.d.ts +15 -0
  38. package/dist/mcp/tools/mission-resume.js +219 -0
  39. package/dist/mcp/tools/mission-resume.js.map +1 -0
  40. package/dist/mcp/tools/mission-resync-accept.d.ts +19 -0
  41. package/dist/mcp/tools/mission-resync-accept.js +192 -0
  42. package/dist/mcp/tools/mission-resync-accept.js.map +1 -0
  43. package/dist/mcp/tools/mission-resync.d.ts +20 -0
  44. package/dist/mcp/tools/mission-resync.js +113 -0
  45. package/dist/mcp/tools/mission-resync.js.map +1 -0
  46. package/dist/mcp/tools/mission-start.d.ts +8 -0
  47. package/dist/mcp/tools/mission-start.js +76 -0
  48. package/dist/mcp/tools/mission-start.js.map +1 -0
  49. package/dist/mcp/tools/resume.js +40 -4
  50. package/dist/mcp/tools/resume.js.map +1 -1
  51. package/dist/mcp/tools/task-create.d.ts +2 -0
  52. package/dist/mcp/tools/task-create.js +40 -2
  53. package/dist/mcp/tools/task-create.js.map +1 -1
  54. package/dist/missions/cli.d.ts +106 -0
  55. package/dist/missions/cli.js +279 -0
  56. package/dist/missions/cli.js.map +1 -0
  57. package/dist/missions/cursor.d.ts +40 -0
  58. package/dist/missions/cursor.js +99 -0
  59. package/dist/missions/cursor.js.map +1 -0
  60. package/dist/missions/draft.d.ts +28 -0
  61. package/dist/missions/draft.js +112 -0
  62. package/dist/missions/draft.js.map +1 -0
  63. package/dist/missions/index.d.ts +9 -0
  64. package/dist/missions/index.js +10 -0
  65. package/dist/missions/index.js.map +1 -0
  66. package/dist/missions/task-link.d.ts +51 -0
  67. package/dist/missions/task-link.js +155 -0
  68. package/dist/missions/task-link.js.map +1 -0
  69. package/dist/session-start/build.d.ts +1 -1
  70. package/dist/session-start/build.js +58 -1
  71. package/dist/session-start/build.js.map +1 -1
  72. package/dist/status-line/format.d.ts +15 -1
  73. package/dist/status-line/format.js +12 -1
  74. package/dist/status-line/format.js.map +1 -1
  75. package/dist/status-line/index.d.ts +1 -1
  76. package/dist/status-line/index.js +1 -1
  77. package/dist/status-line/index.js.map +1 -1
  78. package/dist/status-line/reader.js +33 -2
  79. package/dist/status-line/reader.js.map +1 -1
  80. package/dist/tasks/lifecycle.js +11 -0
  81. package/dist/tasks/lifecycle.js.map +1 -1
  82. package/package.json +2 -2
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,2EAA2E;AAC3E,0EAA0E;AAC1E,yEAAyE;AACzE,wEAAwE;AACxE,wEAAwE;AACxE,oDAAoD;AACpD,SAAS,WAAW;IAClB,IAAI,OAAO,iBAAiB,KAAK,QAAQ;QAAE,OAAO,iBAAiB,CAAC;IACpE,MAAM,KAAK,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACtD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,CAAC;QACpE,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACxC,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,SAAS,IAAI,MAAM,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;YAC/G,OAAO,MAAM,CAAC,OAAO,CAAC;QACxB,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,yBAAyB;IAC3B,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AACD,MAAM,CAAC,MAAM,OAAO,GAAW,WAAW,EAAE,CAAC;AAE7C,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3E,OAAO,EACL,aAAa,EACb,oBAAoB,EACpB,sBAAsB,GACvB,MAAM,WAAW,CAAC;AAGnB,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,yBAAyB,CAAC;AACxC,OAAO,EACL,eAAe,EACf,cAAc,EACd,aAAa,EACb,cAAc,EACd,eAAe,GAChB,MAAM,kBAAkB,CAAC;AAE1B,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,OAAO,EACL,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,aAAa,GAGd,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,2EAA2E;AAC3E,0EAA0E;AAC1E,yEAAyE;AACzE,wEAAwE;AACxE,wEAAwE;AACxE,oDAAoD;AACpD,SAAS,WAAW;IAClB,IAAI,OAAO,iBAAiB,KAAK,QAAQ;QAAE,OAAO,iBAAiB,CAAC;IACpE,MAAM,KAAK,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACtD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,CAAC;QACpE,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACxC,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,SAAS,IAAI,MAAM,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;YAC/G,OAAO,MAAM,CAAC,OAAO,CAAC;QACxB,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,yBAAyB;IAC3B,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AACD,MAAM,CAAC,MAAM,OAAO,GAAW,WAAW,EAAE,CAAC;AAE7C,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3E,OAAO,EACL,aAAa,EACb,oBAAoB,EACpB,sBAAsB,GACvB,MAAM,WAAW,CAAC;AAGnB,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,yBAAyB,CAAC;AACxC,OAAO,EACL,eAAe,EACf,cAAc,EACd,aAAa,EACb,cAAc,EACd,eAAe,GAChB,MAAM,kBAAkB,CAAC;AAE1B,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,OAAO,EACL,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,aAAa,GAGd,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC"}
@@ -5,7 +5,7 @@
5
5
  * shaped as { error: { code, message, details? } }. The envelope is wrapped in
6
6
  * the MCP `CallToolResult` content text.
7
7
  */
8
- export type McpErrorCode = "VALIDATION_FAILED" | "TOOL_NOT_FOUND" | "PATH_OUTSIDE_REPO" | "PATH_HISTORICAL_USE_QUERY_HISTORY" | "PATH_NOT_ALLOWED" | "FILE_NOT_FOUND" | "OPERATION_TIMEOUT" | "DECISION_NOT_FOUND" | "DECISION_ID_TAKEN" | "INVALID_ASSERTION_KIND" | "SUPERSEDES_NOT_FOUND" | "INVARIANT_NOT_FOUND" | "TOPIC_NOT_REGISTERED" | "RUN_NOT_FOUND" | "TASK_NOT_FOUND" | "TASK_DIR_EXISTS" | "NOT_ALLOWED" | "NOT_IMPLEMENTED" | "BOOTSTRAP_REQUIRED" | "INTERNAL_ERROR";
8
+ export type McpErrorCode = "VALIDATION_FAILED" | "TOOL_NOT_FOUND" | "PATH_OUTSIDE_REPO" | "PATH_HISTORICAL_USE_QUERY_HISTORY" | "PATH_NOT_ALLOWED" | "FILE_NOT_FOUND" | "OPERATION_TIMEOUT" | "DECISION_NOT_FOUND" | "DECISION_ID_TAKEN" | "INVALID_ASSERTION_KIND" | "SUPERSEDES_NOT_FOUND" | "INVARIANT_NOT_FOUND" | "TOPIC_NOT_REGISTERED" | "RUN_NOT_FOUND" | "TASK_NOT_FOUND" | "TASK_DIR_EXISTS" | "MISSION_NOT_FOUND" | "MISSION_ALREADY_ACTIVE" | "MISSION_DRAFT_FAILED" | "MISSION_PHASE_NOT_FOUND" | "NOT_ALLOWED" | "NOT_IMPLEMENTED" | "BOOTSTRAP_REQUIRED" | "INTERNAL_ERROR";
9
9
  export interface McpErrorPayload {
10
10
  error: {
11
11
  code: McpErrorCode;
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/mcp/errors.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAgCH,MAAM,UAAU,QAAQ,CACtB,IAAkB,EAClB,OAAe,EACf,OAAiB;IAEjB,OAAO;QACL,KAAK,EAAE;YACL,IAAI;YACJ,OAAO;YACP,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC9C;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,OAAgB;IACzC,OAAO,CACL,OAAO,OAAO,KAAK,QAAQ;QAC3B,OAAO,KAAK,IAAI;QAChB,OAAO,IAAI,OAAO;QAClB,OAAQ,OAA8B,CAAC,KAAK,KAAK,QAAQ,CAC1D,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/mcp/errors.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAoCH,MAAM,UAAU,QAAQ,CACtB,IAAkB,EAClB,OAAe,EACf,OAAiB;IAEjB,OAAO;QACL,KAAK,EAAE;YACL,IAAI;YACJ,OAAO;YACP,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC9C;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,OAAgB;IACzC,OAAO,CACL,OAAO,OAAO,KAAK,QAAQ;QAC3B,OAAO,KAAK,IAAI;QAChB,OAAO,IAAI,OAAO;QAClB,OAAQ,OAA8B,CAAC,KAAK,KAAK,QAAQ,CAC1D,CAAC;AACJ,CAAC"}
@@ -80,6 +80,13 @@ export declare const taskCreateInput: {
80
80
  acceptance: z.ZodOptional<z.ZodArray<z.ZodString>>;
81
81
  module: z.ZodOptional<z.ZodString>;
82
82
  needs_review: z.ZodOptional<z.ZodBoolean>;
83
+ /**
84
+ * Mission anchor — when set, the task is linked to the given phase
85
+ * of the mission. Defaults to the active mission's cursor when both
86
+ * fields are omitted. Pass `mission_id: ""` to opt out (side-task).
87
+ */
88
+ mission_id: z.ZodOptional<z.ZodString>;
89
+ phase_id: z.ZodOptional<z.ZodString>;
83
90
  };
84
91
  /**
85
92
  * `cairn_task_journal_append` — append a per-turn journal entry. The
@@ -249,3 +256,97 @@ export declare const rejectCandidateInput: {
249
256
  slug: z.ZodString;
250
257
  reason: z.ZodString;
251
258
  };
259
+ /**
260
+ * `cairn_mission_start` — read the source spec, draft a roadmap via
261
+ * Haiku, return the draft for operator approval. Does NOT write
262
+ * anything to disk; the skill calls `cairn_mission_accept_draft` once
263
+ * the operator confirms.
264
+ *
265
+ * `no_llm: true` skips the Haiku call and returns a single-phase stub
266
+ * roadmap so the operator can hand-edit it before approving (used when
267
+ * Haiku is offline or quota-exhausted).
268
+ */
269
+ export declare const missionStartInput: {
270
+ spec_path: z.ZodString;
271
+ exit_gate: z.ZodEnum<{
272
+ prompt: "prompt";
273
+ auto: "auto";
274
+ manual: "manual";
275
+ }>;
276
+ no_llm: z.ZodOptional<z.ZodBoolean>;
277
+ };
278
+ export declare const missionAcceptDraftInput: {
279
+ title: z.ZodString;
280
+ spec_path: z.ZodString;
281
+ exit_gate: z.ZodEnum<{
282
+ prompt: "prompt";
283
+ auto: "auto";
284
+ manual: "manual";
285
+ }>;
286
+ phases: z.ZodArray<z.ZodObject<{
287
+ id: z.ZodString;
288
+ title: z.ZodString;
289
+ depends_on: z.ZodOptional<z.ZodArray<z.ZodString>>;
290
+ exit_criteria: z.ZodString;
291
+ exit_gate: z.ZodOptional<z.ZodEnum<{
292
+ prompt: "prompt";
293
+ auto: "auto";
294
+ manual: "manual";
295
+ }>>;
296
+ }, z.core.$strip>>;
297
+ };
298
+ export declare const missionGetInput: {
299
+ /** Mission id; omit to read the active mission. */
300
+ mission_id: z.ZodOptional<z.ZodString>;
301
+ };
302
+ /**
303
+ * `cairn_mission_advance` — operator picked a phase-exit choice.
304
+ * `phase_id` is the phase being exited. choice=exit advances cursor;
305
+ * choice=not_yet keeps cursor; choice=defer suppresses the prompt for
306
+ * 24h; choice=force advances even when the phase has zero tasks;
307
+ * choice=drop removes a drifted phase id from `phase_progress` (the
308
+ * id is no longer in roadmap.md — operator deleted it mid-mission).
309
+ */
310
+ export declare const missionAdvanceInput: {
311
+ phase_id: z.ZodString;
312
+ choice: z.ZodEnum<{
313
+ force: "force";
314
+ drop: "drop";
315
+ exit: "exit";
316
+ not_yet: "not_yet";
317
+ defer: "defer";
318
+ }>;
319
+ defer_hours: z.ZodOptional<z.ZodNumber>;
320
+ };
321
+ export declare const missionResumeInput: {
322
+ mission_id: z.ZodOptional<z.ZodString>;
323
+ };
324
+ export declare const missionCloseInput: {
325
+ mission_id: z.ZodString;
326
+ outcome: z.ZodEnum<{
327
+ aborted: "aborted";
328
+ done: "done";
329
+ }>;
330
+ reason: z.ZodOptional<z.ZodString>;
331
+ };
332
+ export declare const missionReopenInput: {
333
+ mission_id: z.ZodString;
334
+ };
335
+ export declare const missionResyncInput: {
336
+ /** Optional override; defaults to the mission's stored spec_path. */
337
+ spec_path: z.ZodOptional<z.ZodString>;
338
+ no_llm: z.ZodOptional<z.ZodBoolean>;
339
+ };
340
+ /**
341
+ * `cairn_mission_resync_accept` — apply (or reject) a pending resync
342
+ * marker. `outcome=accept` rewrites roadmap.md with the proposed
343
+ * phases, refreshes spec.md, reconciles phase_progress (added phases
344
+ * → pending; removed phases → dropped from progress with journal note).
345
+ * `outcome=reject` deletes the marker without touching roadmap.md.
346
+ */
347
+ export declare const missionResyncAcceptInput: {
348
+ outcome: z.ZodEnum<{
349
+ accept: "accept";
350
+ reject: "reject";
351
+ }>;
352
+ };
@@ -81,6 +81,19 @@ export const taskCreateInput = {
81
81
  acceptance: z.array(z.string().min(1)).optional(),
82
82
  module: z.string().optional(),
83
83
  needs_review: z.boolean().optional(),
84
+ /**
85
+ * Mission anchor — when set, the task is linked to the given phase
86
+ * of the mission. Defaults to the active mission's cursor when both
87
+ * fields are omitted. Pass `mission_id: ""` to opt out (side-task).
88
+ */
89
+ mission_id: z
90
+ .string()
91
+ .regex(/^MIS-[a-z0-9-]+-[0-9a-f]{7}$|^$/, "mission id must match MIS-<slug>-<hash7> or empty string")
92
+ .optional(),
93
+ phase_id: z
94
+ .string()
95
+ .regex(/^[a-z0-9][a-z0-9-]*$/, "phase id must be kebab-case")
96
+ .optional(),
84
97
  };
85
98
  /**
86
99
  * `cairn_task_journal_append` — append a per-turn journal entry. The
@@ -256,4 +269,83 @@ export const rejectCandidateInput = {
256
269
  slug: z.string().min(1),
257
270
  reason: z.string().min(1),
258
271
  };
272
+ // ── Mission system — supra-task layer ──────────────────────────────────────
273
+ const missionIdField = z
274
+ .string()
275
+ .regex(/^MIS-[a-z0-9-]+-[0-9a-f]{7}$/, "mission id must match MIS-<slug>-<hash7>");
276
+ const missionExitGateField = z.enum(["prompt", "auto", "manual"]);
277
+ const missionPhaseIdField = z
278
+ .string()
279
+ .regex(/^[a-z0-9][a-z0-9-]*$/, "phase id must be kebab-case");
280
+ const missionPhaseDraftField = z.array(z.object({
281
+ id: missionPhaseIdField,
282
+ title: z.string().min(1),
283
+ depends_on: z.array(z.string()).optional(),
284
+ exit_criteria: z.string().min(1),
285
+ exit_gate: missionExitGateField.optional(),
286
+ }));
287
+ /**
288
+ * `cairn_mission_start` — read the source spec, draft a roadmap via
289
+ * Haiku, return the draft for operator approval. Does NOT write
290
+ * anything to disk; the skill calls `cairn_mission_accept_draft` once
291
+ * the operator confirms.
292
+ *
293
+ * `no_llm: true` skips the Haiku call and returns a single-phase stub
294
+ * roadmap so the operator can hand-edit it before approving (used when
295
+ * Haiku is offline or quota-exhausted).
296
+ */
297
+ export const missionStartInput = {
298
+ spec_path: z.string().min(1),
299
+ exit_gate: missionExitGateField,
300
+ no_llm: z.boolean().optional(),
301
+ };
302
+ export const missionAcceptDraftInput = {
303
+ title: z.string().min(1).max(80),
304
+ spec_path: z.string().min(1),
305
+ exit_gate: missionExitGateField,
306
+ phases: missionPhaseDraftField.min(1),
307
+ };
308
+ export const missionGetInput = {
309
+ /** Mission id; omit to read the active mission. */
310
+ mission_id: missionIdField.optional(),
311
+ };
312
+ /**
313
+ * `cairn_mission_advance` — operator picked a phase-exit choice.
314
+ * `phase_id` is the phase being exited. choice=exit advances cursor;
315
+ * choice=not_yet keeps cursor; choice=defer suppresses the prompt for
316
+ * 24h; choice=force advances even when the phase has zero tasks;
317
+ * choice=drop removes a drifted phase id from `phase_progress` (the
318
+ * id is no longer in roadmap.md — operator deleted it mid-mission).
319
+ */
320
+ export const missionAdvanceInput = {
321
+ phase_id: missionPhaseIdField,
322
+ choice: z.enum(["exit", "not_yet", "defer", "force", "drop"]),
323
+ defer_hours: z.number().int().min(1).max(24 * 30).optional(),
324
+ };
325
+ export const missionResumeInput = {
326
+ mission_id: missionIdField.optional(),
327
+ };
328
+ export const missionCloseInput = {
329
+ mission_id: missionIdField,
330
+ outcome: z.enum(["done", "aborted"]),
331
+ reason: z.string().min(1).optional(),
332
+ };
333
+ export const missionReopenInput = {
334
+ mission_id: missionIdField,
335
+ };
336
+ export const missionResyncInput = {
337
+ /** Optional override; defaults to the mission's stored spec_path. */
338
+ spec_path: z.string().min(1).optional(),
339
+ no_llm: z.boolean().optional(),
340
+ };
341
+ /**
342
+ * `cairn_mission_resync_accept` — apply (or reject) a pending resync
343
+ * marker. `outcome=accept` rewrites roadmap.md with the proposed
344
+ * phases, refreshes spec.md, reconciles phase_progress (added phases
345
+ * → pending; removed phases → dropped from progress with journal note).
346
+ * `outcome=reject` deletes the marker without touching roadmap.md.
347
+ */
348
+ export const missionResyncAcceptInput = {
349
+ outcome: z.enum(["accept", "reject"]),
350
+ };
259
351
  //# sourceMappingURL=schemas.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../src/mcp/schemas.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../src/mcp/schemas.ts"],"names":[],"mappings":"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"}
@@ -13,6 +13,15 @@ import { getFullTool } from "./get-full.js";
13
13
  import { groundGetTool } from "./ground-get.js";
14
14
  import { inScopeTool } from "./in-scope.js";
15
15
  import { initResumeTool, initRunTool, } from "./init-phases.js";
16
+ import { missionStartTool } from "./mission-start.js";
17
+ import { missionAcceptDraftTool } from "./mission-accept-draft.js";
18
+ import { missionGetTool } from "./mission-get.js";
19
+ import { missionAdvanceTool } from "./mission-advance.js";
20
+ import { missionCloseTool } from "./mission-close.js";
21
+ import { missionResumeTool } from "./mission-resume.js";
22
+ import { missionResyncTool } from "./mission-resync.js";
23
+ import { missionResyncAcceptTool } from "./mission-resync-accept.js";
24
+ import { missionReopenTool } from "./mission-reopen.js";
16
25
  import { invariantGetTool } from "./invariant-get.js";
17
26
  import { queryHistoryTool } from "./query-history.js";
18
27
  import { recordDecisionTool } from "./record-decision.js";
@@ -67,5 +76,15 @@ export const allTools = [
67
76
  // Write — init pipeline (v0.7.2 single-umbrella surface)
68
77
  initResumeTool,
69
78
  initRunTool,
79
+ // Mission system — supra-task layer
80
+ missionStartTool,
81
+ missionAcceptDraftTool,
82
+ missionGetTool,
83
+ missionAdvanceTool,
84
+ missionCloseTool,
85
+ missionResumeTool,
86
+ missionResyncTool,
87
+ missionResyncAcceptTool,
88
+ missionReopenTool,
70
89
  ];
71
90
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/mcp/tools/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EACL,cAAc,EACd,WAAW,GACZ,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,MAAM,CAAC,MAAM,QAAQ,GAAqB;IACxC,yBAAyB;IACzB,eAAe;IACf,sBAAsB;IACtB,qBAAqB;IACrB,aAAa;IACb,mBAAmB;IACnB,gBAAgB;IAChB,WAAW;IACX,6BAA6B;IAC7B,UAAU;IACV,YAAY;IACZ,WAAW;IACX,4BAA4B;IAC5B,gBAAgB;IAChB,mCAAmC;IACnC,oBAAoB;IACpB,QAAQ;IACR,kBAAkB;IAClB,cAAc;IACd,gBAAgB;IAChB,qBAAqB;IACrB,WAAW;IACX,sBAAsB;IACtB,UAAU;IACV,oCAAoC;IACpC,mBAAmB;IACnB,qBAAqB;IACrB,oBAAoB;IACpB,uBAAuB;IACvB,kBAAkB;IAClB,oBAAoB;IACpB,kBAAkB;IAClB,iBAAiB;IACjB,qCAAqC;IACrC,cAAc;IACd,2EAA2E;IAC3E,kBAAkB;IAClB,yDAAyD;IACzD,cAAc;IACd,WAAW;CACZ,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/mcp/tools/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import type { ToolDef } from "./types.js";
2
+ interface InputPhase {
3
+ id: string;
4
+ title: string;
5
+ depends_on?: string[];
6
+ exit_criteria: string;
7
+ exit_gate?: "prompt" | "auto" | "manual";
8
+ }
9
+ interface Input {
10
+ title: string;
11
+ spec_path: string;
12
+ exit_gate: "prompt" | "auto" | "manual";
13
+ phases: InputPhase[];
14
+ }
15
+ export declare const missionAcceptDraftTool: ToolDef<Input>;
16
+ export {};
@@ -0,0 +1,102 @@
1
+ import { existsSync, mkdirSync, readFileSync } from "node:fs";
2
+ import { isAbsolute, resolve } from "node:path";
3
+ import { appendMissionJournal, deriveMissionId, findActiveMission, initialPhaseProgress, missionRuntimeDir, missionsGroundRoot, nextPendingPhase, writeMissionSpec, writeMissionState, writeRoadmap, } from "@isaacriehm/cairn-state";
4
+ import { requireBootstrap } from "../bootstrap-guard.js";
5
+ import { mcpError } from "../errors.js";
6
+ import { missionAcceptDraftInput } from "../schemas.js";
7
+ async function handler(ctx, input) {
8
+ const block = requireBootstrap(ctx.repoRoot);
9
+ if (block !== null)
10
+ return block;
11
+ if (findActiveMission(ctx.repoRoot) !== null) {
12
+ return mcpError("MISSION_ALREADY_ACTIVE", "An active mission already exists. Close or abort it before starting another.");
13
+ }
14
+ const absSpec = isAbsolute(input.spec_path)
15
+ ? input.spec_path
16
+ : resolve(ctx.repoRoot, input.spec_path);
17
+ if (!absSpec.startsWith(ctx.repoRoot)) {
18
+ return mcpError("PATH_OUTSIDE_REPO", `${input.spec_path} resolves outside the repo`);
19
+ }
20
+ if (!existsSync(absSpec)) {
21
+ return mcpError("FILE_NOT_FOUND", `Spec doc not found: ${input.spec_path}`);
22
+ }
23
+ let specSource;
24
+ try {
25
+ specSource = readFileSync(absSpec, "utf8");
26
+ }
27
+ catch (err) {
28
+ return mcpError("INTERNAL_ERROR", `Failed to read spec doc: ${err instanceof Error ? err.message : String(err)}`);
29
+ }
30
+ const startedAt = new Date().toISOString();
31
+ const missionId = deriveMissionId({
32
+ title: input.title,
33
+ spec_path: input.spec_path,
34
+ started_at: startedAt,
35
+ });
36
+ const phases = input.phases.map((p) => ({
37
+ id: p.id,
38
+ title: p.title,
39
+ depends_on: p.depends_on ?? [],
40
+ exit_criteria: p.exit_criteria,
41
+ ...(p.exit_gate !== undefined ? { exit_gate: p.exit_gate } : {}),
42
+ }));
43
+ const frontmatter = {
44
+ mission_id: missionId,
45
+ title: input.title,
46
+ spec_path: input.spec_path,
47
+ created_at: startedAt,
48
+ exit_gate: input.exit_gate,
49
+ phases,
50
+ };
51
+ // Roadmap dir + per-clone runtime dir.
52
+ mkdirSync(missionsGroundRoot(ctx.repoRoot), { recursive: true });
53
+ mkdirSync(missionRuntimeDir(ctx.repoRoot, missionId), { recursive: true });
54
+ writeRoadmap(ctx.repoRoot, missionId, frontmatter, `# Mission — ${input.title}\n\nSpec: \`${input.spec_path}\`. Phase list above is the canonical structure.\n`);
55
+ writeMissionSpec(ctx.repoRoot, missionId, specSource);
56
+ const phaseProgress = initialPhaseProgress(frontmatter);
57
+ const firstPhase = nextPendingPhase(frontmatter, {
58
+ mission_id: missionId,
59
+ started_at: startedAt,
60
+ cursor: { active_phase: null, active_phase_started_at: null },
61
+ phase_progress: phaseProgress,
62
+ outcome: "active",
63
+ });
64
+ if (firstPhase !== null) {
65
+ phaseProgress[firstPhase.id] = {
66
+ state: "in_progress",
67
+ task_ids: [],
68
+ };
69
+ }
70
+ writeMissionState(ctx.repoRoot, missionId, {
71
+ mission_id: missionId,
72
+ started_at: startedAt,
73
+ cursor: {
74
+ active_phase: firstPhase?.id ?? null,
75
+ active_phase_started_at: firstPhase !== null ? startedAt : null,
76
+ },
77
+ phase_progress: phaseProgress,
78
+ outcome: "active",
79
+ });
80
+ // Empty journal + initial entry.
81
+ appendMissionJournal(ctx.repoRoot, missionId, {
82
+ ts: startedAt,
83
+ kind: "started",
84
+ detail: `${phases.length} phases, exit_gate=${input.exit_gate}`,
85
+ });
86
+ return {
87
+ ok: true,
88
+ mission_id: missionId,
89
+ roadmap_path: `.cairn/ground/missions/${missionId}/roadmap.md`,
90
+ state_path: `.cairn/missions/${missionId}/state.json`,
91
+ spec_path: `.cairn/missions/${missionId}/spec.md`,
92
+ cursor: { active_phase: firstPhase?.id ?? null },
93
+ total_phases: phases.length,
94
+ };
95
+ }
96
+ export const missionAcceptDraftTool = {
97
+ name: "cairn_mission_accept_draft",
98
+ description: "Commit an operator-approved roadmap draft. Generates the mission id (MIS-<slug>-<hash7>), writes `.cairn/ground/missions/<id>/roadmap.md` (committed), `.cairn/missions/<id>/state.json` + `spec.md` (per-clone), and seeds the mission journal. Sets the cursor to the first phase whose `depends_on` is empty.",
99
+ inputSchema: missionAcceptDraftInput,
100
+ handler,
101
+ };
102
+ //# sourceMappingURL=mission-accept-draft.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mission-accept-draft.js","sourceRoot":"","sources":["../../../src/mcp/tools/mission-accept-draft.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { ToolDef } from "./types.js";
2
+ interface Input {
3
+ phase_id: string;
4
+ choice: "exit" | "not_yet" | "defer" | "force" | "drop";
5
+ defer_hours?: number;
6
+ }
7
+ export declare const missionAdvanceTool: ToolDef<Input>;
8
+ export {};
@@ -0,0 +1,124 @@
1
+ import { mkdirSync, writeFileSync } from "node:fs";
2
+ import { dirname, join } from "node:path";
3
+ import { appendMissionJournal, findActiveMission, readMissionState, readRoadmap, writeMissionState, } from "@isaacriehm/cairn-state";
4
+ import { requireBootstrap } from "../bootstrap-guard.js";
5
+ import { mcpError } from "../errors.js";
6
+ import { missionAdvanceInput } from "../schemas.js";
7
+ import { advanceMissionPhase as advancePhase } from "../../missions/index.js";
8
+ function writeMissionPhaseDefer(repoRoot, missionId, phaseId, hours) {
9
+ const now = new Date();
10
+ const until = new Date(now.getTime() + hours * 60 * 60 * 1000);
11
+ const payload = {
12
+ mission_id: missionId,
13
+ phase_id: phaseId,
14
+ deferred_at: now.toISOString(),
15
+ deferred_until: until.toISOString(),
16
+ };
17
+ const path = join(repoRoot, ".cairn", ".mission-phase-deferred-until");
18
+ mkdirSync(dirname(path), { recursive: true });
19
+ writeFileSync(path, JSON.stringify(payload, null, 2), "utf8");
20
+ return until.toISOString();
21
+ }
22
+ async function handler(ctx, input) {
23
+ const block = requireBootstrap(ctx.repoRoot);
24
+ if (block !== null)
25
+ return block;
26
+ const missionId = findActiveMission(ctx.repoRoot);
27
+ if (missionId === null) {
28
+ return mcpError("MISSION_NOT_FOUND", "No active mission");
29
+ }
30
+ const roadmap = readRoadmap(ctx.repoRoot, missionId);
31
+ const state = readMissionState(ctx.repoRoot, missionId);
32
+ if (roadmap === null || state === null) {
33
+ return mcpError("MISSION_NOT_FOUND", `Mission ${missionId} state or roadmap unreadable`);
34
+ }
35
+ const phaseInRoadmap = roadmap.frontmatter.phases.some((p) => p.id === input.phase_id);
36
+ // choice=drop is the drift resolver — phase_id intentionally NOT in
37
+ // roadmap.md anymore (operator deleted it mid-mission). Removes the
38
+ // phase from phase_progress and journals the drift resolution.
39
+ if (input.choice === "drop") {
40
+ if (phaseInRoadmap) {
41
+ return mcpError("VALIDATION_FAILED", `phase ${input.phase_id} is still in roadmap.md; choice=drop only resolves drifted ids. Use choice=exit/force to advance an in-roadmap phase.`);
42
+ }
43
+ if (!(input.phase_id in state.phase_progress)) {
44
+ return mcpError("MISSION_PHASE_NOT_FOUND", `phase ${input.phase_id} not present in phase_progress (nothing to drop)`);
45
+ }
46
+ const taskIds = state.phase_progress[input.phase_id]?.task_ids ?? [];
47
+ delete state.phase_progress[input.phase_id];
48
+ writeMissionState(ctx.repoRoot, missionId, state);
49
+ appendMissionJournal(ctx.repoRoot, missionId, {
50
+ ts: new Date().toISOString(),
51
+ kind: "drift-detected",
52
+ phase_id: input.phase_id,
53
+ detail: `dropped — ${taskIds.length} graduated task(s) orphaned`,
54
+ });
55
+ return {
56
+ ok: true,
57
+ action: "dropped",
58
+ mission_id: missionId,
59
+ phase_id: input.phase_id,
60
+ orphaned_task_ids: taskIds,
61
+ };
62
+ }
63
+ if (!phaseInRoadmap) {
64
+ return mcpError("MISSION_PHASE_NOT_FOUND", `phase ${input.phase_id} not in roadmap`);
65
+ }
66
+ if (input.choice === "not_yet") {
67
+ appendMissionJournal(ctx.repoRoot, missionId, {
68
+ ts: new Date().toISOString(),
69
+ kind: "phase-deferred",
70
+ phase_id: input.phase_id,
71
+ detail: "operator chose not_yet",
72
+ });
73
+ return { ok: true, action: "deferred", mission_id: missionId, phase_id: input.phase_id };
74
+ }
75
+ if (input.choice === "defer") {
76
+ const hours = input.defer_hours ?? 24;
77
+ const deferredUntil = writeMissionPhaseDefer(ctx.repoRoot, missionId, input.phase_id, hours);
78
+ appendMissionJournal(ctx.repoRoot, missionId, {
79
+ ts: new Date().toISOString(),
80
+ kind: "phase-deferred",
81
+ phase_id: input.phase_id,
82
+ detail: `defer ${hours}h`,
83
+ });
84
+ return {
85
+ ok: true,
86
+ action: "deferred",
87
+ mission_id: missionId,
88
+ phase_id: input.phase_id,
89
+ deferred_until: deferredUntil,
90
+ };
91
+ }
92
+ // choice === "exit" || "force"
93
+ if (input.choice === "exit") {
94
+ const progress = state.phase_progress[input.phase_id];
95
+ if (progress === undefined || progress.task_ids.length === 0) {
96
+ return mcpError("VALIDATION_FAILED", `phase ${input.phase_id} has no linked tasks. Pass choice="force" to advance an empty phase.`);
97
+ }
98
+ }
99
+ const result = advancePhase(ctx.repoRoot, missionId, input.phase_id);
100
+ if (!result.ok) {
101
+ return mcpError(result.code === "PHASE_NOT_FOUND"
102
+ ? "MISSION_PHASE_NOT_FOUND"
103
+ : result.code === "MISSION_NOT_FOUND"
104
+ ? "MISSION_NOT_FOUND"
105
+ : "VALIDATION_FAILED", result.message);
106
+ }
107
+ return {
108
+ ok: true,
109
+ action: result.closed ? "closed" : "advanced",
110
+ mission_id: missionId,
111
+ phase_advanced: result.phase_advanced,
112
+ next_phase: result.next_phase?.id ?? null,
113
+ next_phase_title: result.next_phase?.title ?? null,
114
+ progress: { done: result.donePhases, total: result.totalPhases },
115
+ closed: result.closed,
116
+ };
117
+ }
118
+ export const missionAdvanceTool = {
119
+ name: "cairn_mission_advance",
120
+ 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.",
121
+ inputSchema: missionAdvanceInput,
122
+ handler,
123
+ };
124
+ //# sourceMappingURL=mission-advance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mission-advance.js","sourceRoot":"","sources":["../../../src/mcp/tools/mission-advance.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { ToolDef } from "./types.js";
2
+ interface Input {
3
+ mission_id: string;
4
+ outcome: "done" | "aborted";
5
+ reason?: string;
6
+ }
7
+ export declare const missionCloseTool: ToolDef<Input>;
8
+ export {};