@entelligentsia/forgecli 0.10.1 → 0.11.2

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 (161) hide show
  1. package/CHANGELOG.md +78 -0
  2. package/README.md +21 -3
  3. package/dist/CHANGELOG-forge-plugin.md +22 -0
  4. package/dist/extensions/forgecli/add-pipeline.d.ts +19 -0
  5. package/dist/extensions/forgecli/add-pipeline.js +143 -0
  6. package/dist/extensions/forgecli/add-pipeline.js.map +1 -0
  7. package/dist/extensions/forgecli/add-task.d.ts +20 -0
  8. package/dist/extensions/forgecli/add-task.js +154 -0
  9. package/dist/extensions/forgecli/add-task.js.map +1 -0
  10. package/dist/extensions/forgecli/calibrate.d.ts +61 -0
  11. package/dist/extensions/forgecli/calibrate.js +488 -0
  12. package/dist/extensions/forgecli/calibrate.js.map +1 -0
  13. package/dist/extensions/forgecli/fix-bug.d.ts +9 -1
  14. package/dist/extensions/forgecli/fix-bug.js +70 -8
  15. package/dist/extensions/forgecli/fix-bug.js.map +1 -1
  16. package/dist/extensions/forgecli/forge-commands.js +15 -22
  17. package/dist/extensions/forgecli/forge-commands.js.map +1 -1
  18. package/dist/extensions/forgecli/forge-subagent.js +34 -7
  19. package/dist/extensions/forgecli/forge-subagent.js.map +1 -1
  20. package/dist/extensions/forgecli/forge-update-command.d.ts +9 -0
  21. package/dist/extensions/forgecli/forge-update-command.js +106 -7
  22. package/dist/extensions/forgecli/forge-update-command.js.map +1 -1
  23. package/dist/extensions/forgecli/health-check.d.ts +22 -1
  24. package/dist/extensions/forgecli/health-check.js +177 -4
  25. package/dist/extensions/forgecli/health-check.js.map +1 -1
  26. package/dist/extensions/forgecli/hook-dispatcher.d.ts +25 -1
  27. package/dist/extensions/forgecli/hook-dispatcher.js +104 -9
  28. package/dist/extensions/forgecli/hook-dispatcher.js.map +1 -1
  29. package/dist/extensions/forgecli/hooks/check-update.d.ts +81 -0
  30. package/dist/extensions/forgecli/hooks/check-update.js +308 -0
  31. package/dist/extensions/forgecli/hooks/check-update.js.map +1 -0
  32. package/dist/extensions/forgecli/hooks/forge-permissions.d.ts +32 -0
  33. package/dist/extensions/forgecli/hooks/forge-permissions.js +119 -0
  34. package/dist/extensions/forgecli/hooks/forge-permissions.js.map +1 -0
  35. package/dist/extensions/forgecli/hooks/triage-error.d.ts +23 -0
  36. package/dist/extensions/forgecli/hooks/triage-error.js +62 -0
  37. package/dist/extensions/forgecli/hooks/triage-error.js.map +1 -0
  38. package/dist/extensions/forgecli/hooks/write-guard.d.ts +28 -0
  39. package/dist/extensions/forgecli/hooks/write-guard.js +225 -0
  40. package/dist/extensions/forgecli/hooks/write-guard.js.map +1 -0
  41. package/dist/extensions/forgecli/index.js +60 -0
  42. package/dist/extensions/forgecli/index.js.map +1 -1
  43. package/dist/extensions/forgecli/init-context.d.ts +1 -1
  44. package/dist/extensions/forgecli/init-context.js +21 -6
  45. package/dist/extensions/forgecli/init-context.js.map +1 -1
  46. package/dist/extensions/forgecli/materialize.d.ts +16 -0
  47. package/dist/extensions/forgecli/materialize.js +195 -0
  48. package/dist/extensions/forgecli/materialize.js.map +1 -0
  49. package/dist/extensions/forgecli/migrate.d.ts +19 -0
  50. package/dist/extensions/forgecli/migrate.js +258 -0
  51. package/dist/extensions/forgecli/migrate.js.map +1 -0
  52. package/dist/extensions/forgecli/migration-engine.d.ts +111 -0
  53. package/dist/extensions/forgecli/migration-engine.js +533 -0
  54. package/dist/extensions/forgecli/migration-engine.js.map +1 -0
  55. package/dist/extensions/forgecli/quiz-agent.d.ts +17 -0
  56. package/dist/extensions/forgecli/quiz-agent.js +98 -0
  57. package/dist/extensions/forgecli/quiz-agent.js.map +1 -0
  58. package/dist/extensions/forgecli/remove-command.d.ts +17 -0
  59. package/dist/extensions/forgecli/remove-command.js +124 -0
  60. package/dist/extensions/forgecli/remove-command.js.map +1 -0
  61. package/dist/extensions/forgecli/report-bug.d.ts +25 -0
  62. package/dist/extensions/forgecli/report-bug.js +159 -0
  63. package/dist/extensions/forgecli/report-bug.js.map +1 -0
  64. package/dist/extensions/forgecli/retrospective.d.ts +19 -0
  65. package/dist/extensions/forgecli/retrospective.js +156 -0
  66. package/dist/extensions/forgecli/retrospective.js.map +1 -0
  67. package/dist/extensions/forgecli/run-sprint.js +34 -0
  68. package/dist/extensions/forgecli/run-sprint.js.map +1 -1
  69. package/dist/extensions/forgecli/run-task.d.ts +9 -1
  70. package/dist/extensions/forgecli/run-task.js +64 -10
  71. package/dist/extensions/forgecli/run-task.js.map +1 -1
  72. package/dist/extensions/forgecli/session-registry.d.ts +27 -2
  73. package/dist/extensions/forgecli/session-registry.js +52 -1
  74. package/dist/extensions/forgecli/session-registry.js.map +1 -1
  75. package/dist/extensions/forgecli/status-command.d.ts +19 -0
  76. package/dist/extensions/forgecli/status-command.js +140 -0
  77. package/dist/extensions/forgecli/status-command.js.map +1 -0
  78. package/dist/extensions/forgecli/store-query.d.ts +22 -0
  79. package/dist/extensions/forgecli/store-query.js +107 -0
  80. package/dist/extensions/forgecli/store-query.js.map +1 -0
  81. package/dist/extensions/forgecli/store-repair.d.ts +17 -0
  82. package/dist/extensions/forgecli/store-repair.js +123 -0
  83. package/dist/extensions/forgecli/store-repair.js.map +1 -0
  84. package/dist/extensions/forgecli/thread-switcher.js +213 -28
  85. package/dist/extensions/forgecli/thread-switcher.js.map +1 -1
  86. package/dist/extensions/forgecli/update-tools.d.ts +23 -0
  87. package/dist/extensions/forgecli/update-tools.js +136 -0
  88. package/dist/extensions/forgecli/update-tools.js.map +1 -0
  89. package/dist/extensions/forgecli/viewport-theme.js +4 -0
  90. package/dist/extensions/forgecli/viewport-theme.js.map +1 -1
  91. package/dist/forge-payload/.claude-plugin/plugin.json +1 -1
  92. package/dist/forge-payload/.schemas/config.schema.json +83 -0
  93. package/dist/forge-payload/.schemas/migrations.json +2049 -0
  94. package/dist/forge-payload/commands/regenerate.md +17 -1
  95. package/dist/forge-payload/meta/personas/README.md +16 -0
  96. package/dist/forge-payload/meta/personas/meta-architect.md +70 -0
  97. package/dist/forge-payload/meta/personas/meta-bug-fixer.md +73 -0
  98. package/dist/forge-payload/meta/personas/meta-collator.md +72 -0
  99. package/dist/forge-payload/meta/personas/meta-engineer.md +70 -0
  100. package/dist/forge-payload/meta/personas/meta-orchestrator.md +71 -0
  101. package/dist/forge-payload/meta/personas/meta-product-manager.md +82 -0
  102. package/dist/forge-payload/meta/personas/meta-qa-engineer.md +91 -0
  103. package/dist/forge-payload/meta/personas/meta-supervisor.md +92 -0
  104. package/dist/forge-payload/meta/skill-recommendations.md +154 -0
  105. package/dist/forge-payload/meta/skills/meta-architect-skills.md +43 -0
  106. package/dist/forge-payload/meta/skills/meta-bug-fixer-skills.md +43 -0
  107. package/dist/forge-payload/meta/skills/meta-collator-skills.md +41 -0
  108. package/dist/forge-payload/meta/skills/meta-engineer-skills.md +43 -0
  109. package/dist/forge-payload/meta/skills/meta-generic-skills.md +58 -0
  110. package/dist/forge-payload/meta/skills/meta-qa-engineer-skills.md +46 -0
  111. package/dist/forge-payload/meta/skills/meta-supervisor-skills.md +43 -0
  112. package/dist/forge-payload/meta/store-schema/bug.schema.md +71 -0
  113. package/dist/forge-payload/meta/store-schema/event.schema.md +76 -0
  114. package/dist/forge-payload/meta/store-schema/feature.schema.md +65 -0
  115. package/dist/forge-payload/meta/store-schema/sprint.schema.md +64 -0
  116. package/dist/forge-payload/meta/store-schema/task.schema.md +78 -0
  117. package/dist/forge-payload/meta/templates/meta-code-review.md +26 -0
  118. package/dist/forge-payload/meta/templates/meta-plan-review.md +28 -0
  119. package/dist/forge-payload/meta/templates/meta-plan.md +28 -0
  120. package/dist/forge-payload/meta/templates/meta-progress.md +25 -0
  121. package/dist/forge-payload/meta/templates/meta-retrospective.md +28 -0
  122. package/dist/forge-payload/meta/templates/meta-sprint-manifest.md +26 -0
  123. package/dist/forge-payload/meta/templates/meta-sprint-requirements.md +91 -0
  124. package/dist/forge-payload/meta/templates/meta-task-prompt.md +26 -0
  125. package/dist/forge-payload/meta/tool-specs/collate.spec.md +88 -0
  126. package/dist/forge-payload/meta/tool-specs/generation-manifest.spec.md +139 -0
  127. package/dist/forge-payload/meta/tool-specs/manage-config.spec.md +143 -0
  128. package/dist/forge-payload/meta/tool-specs/seed-store.spec.md +91 -0
  129. package/dist/forge-payload/meta/tool-specs/store-cli.spec.md +328 -0
  130. package/dist/forge-payload/meta/tool-specs/validate-store.spec.md +191 -0
  131. package/dist/forge-payload/meta/workflows/_fragments/context-injection.md +75 -0
  132. package/dist/forge-payload/meta/workflows/_fragments/event-emission-schema.md +73 -0
  133. package/dist/forge-payload/meta/workflows/_fragments/finalize.md +13 -0
  134. package/dist/forge-payload/meta/workflows/_fragments/friction-emit.md +73 -0
  135. package/dist/forge-payload/meta/workflows/_fragments/progress-reporting.md +38 -0
  136. package/dist/forge-payload/meta/workflows/_fragments/store-cli-verbs.md +39 -0
  137. package/dist/forge-payload/meta/workflows/meta-approve.md +119 -0
  138. package/dist/forge-payload/meta/workflows/meta-collate.md +89 -0
  139. package/dist/forge-payload/meta/workflows/meta-commit.md +93 -0
  140. package/dist/forge-payload/meta/workflows/meta-enhance.md +286 -0
  141. package/dist/forge-payload/meta/workflows/meta-fix-bug.md +501 -0
  142. package/dist/forge-payload/meta/workflows/meta-implement.md +132 -0
  143. package/dist/forge-payload/meta/workflows/meta-migrate.md +455 -0
  144. package/dist/forge-payload/meta/workflows/meta-orchestrate.md +993 -0
  145. package/dist/forge-payload/meta/workflows/meta-plan-task.md +133 -0
  146. package/dist/forge-payload/meta/workflows/meta-quiz-agent.md +135 -0
  147. package/dist/forge-payload/meta/workflows/meta-retrospective.md +65 -0
  148. package/dist/forge-payload/meta/workflows/meta-review-implementation.md +119 -0
  149. package/dist/forge-payload/meta/workflows/meta-review-plan.md +108 -0
  150. package/dist/forge-payload/meta/workflows/meta-review-sprint-completion.md +65 -0
  151. package/dist/forge-payload/meta/workflows/meta-sprint-intake.md +76 -0
  152. package/dist/forge-payload/meta/workflows/meta-sprint-plan.md +147 -0
  153. package/dist/forge-payload/meta/workflows/meta-update-implementation.md +76 -0
  154. package/dist/forge-payload/meta/workflows/meta-update-plan.md +76 -0
  155. package/dist/forge-payload/meta/workflows/meta-validate.md +111 -0
  156. package/dist/forge-payload/tools/check-structure.cjs +344 -0
  157. package/dist/forge-payload/tools/list-skills.js +76 -0
  158. package/dist/forge-payload/tools/store-cli.cjs +27 -1
  159. package/dist/forge-payload/tools/substitute-placeholders.cjs +60 -8
  160. package/dist/forge-payload/tools/verify-integrity.cjs +86 -0
  161. package/package.json +2 -2
@@ -0,0 +1,156 @@
1
+ // forge:retrospective — native kickoff handler (FORGE-S23-T06).
2
+ //
3
+ // Replaces the auto-generated stub previously installed by
4
+ // registerAllForgeCommands (forge-commands.ts). Kickoff Shim archetype
5
+ // (Pack-04 + Pack-06): single LLM handoff in current context, no fork.
6
+ //
7
+ // The retrospective workflow (sprint_retrospective.md) is LLM-driven:
8
+ // the handler reads the materialized workflow, composes a kickoff message
9
+ // citing the persona path and workflow path, then dispatches via
10
+ // pi.sendUserMessage with { deliverAs: "steer" }.
11
+ //
12
+ // Iron Laws:
13
+ // IL1 — code only under forge-cli/src/extensions/forgecli/.
14
+ // IL4 — no JSON.stringify-into-subagent dispatch.
15
+ // IL6 — no shell-string interpolation; no spawn calls here.
16
+ // IL7 — every failure path emits ctx.ui.notify and returns; no silent
17
+ // continuation.
18
+ import * as fs from "node:fs";
19
+ import * as path from "node:path";
20
+ import { assertAudience } from "./audience-gate.js";
21
+ import { sendKickoff } from "./kickoff.js";
22
+ import { loadPersona, PersonaSkillLoaderError } from "./loaders/persona-skill-loader.js";
23
+ import { loadWorkflow, WorkflowLoaderError } from "./loaders/workflow-loader.js";
24
+ export function parseRetroArgs(rawArgs, cwd) {
25
+ const trimmed = (rawArgs ?? "").trim();
26
+ if (trimmed === "") {
27
+ return { mode: "empty", sprintRef: "", sourceLabel: "(no sprint specified — will prompt)" };
28
+ }
29
+ if (trimmed.startsWith("@")) {
30
+ const ref = trimmed.slice(1).trim();
31
+ const filePath = path.isAbsolute(ref) ? ref : path.resolve(cwd, ref);
32
+ const seed = fs.readFileSync(filePath, "utf8");
33
+ return { mode: "file", sprintRef: seed, sourceLabel: `(seed from file: ${ref})` };
34
+ }
35
+ return { mode: "text", sprintRef: trimmed, sourceLabel: "(seed from inline text)" };
36
+ }
37
+ // Frontmatter persona extraction (permissive) ------------------------------
38
+ export function extractPersonaNames(workflowMd) {
39
+ const lines = workflowMd.split(/\r?\n/);
40
+ if (lines.length === 0 || lines[0] !== "---")
41
+ return [];
42
+ let inside = false;
43
+ let depsBlock = false;
44
+ for (let i = 0; i < lines.length; i++) {
45
+ const line = lines[i];
46
+ if (i === 0 && line === "---") {
47
+ inside = true;
48
+ continue;
49
+ }
50
+ if (!inside)
51
+ break;
52
+ if (line === "---")
53
+ break;
54
+ if (/^deps\s*:\s*$/.test(line)) {
55
+ depsBlock = true;
56
+ continue;
57
+ }
58
+ const m = /^\s*personas\s*:\s*\[([^\]]*)\]\s*$/.exec(line);
59
+ if (m && (depsBlock || /^\s/.test(line))) {
60
+ return m[1]
61
+ .split(",")
62
+ .map((s) => s.trim().replace(/^["']|["']$/g, ""))
63
+ .filter((s) => s.length > 0);
64
+ }
65
+ if (depsBlock && /^[A-Za-z0-9_-]+\s*:/.test(line) && !/^\s/.test(line)) {
66
+ depsBlock = false;
67
+ }
68
+ }
69
+ return [];
70
+ }
71
+ export function composeKickoff(opts) {
72
+ const { workflowMd, personaIdentity, parsed } = opts;
73
+ const sections = ["# /forge:retrospective", ""];
74
+ if (personaIdentity.trim().length > 0) {
75
+ sections.push(personaIdentity.trim(), "");
76
+ }
77
+ sections.push("## Dispatch", "", "Run the retrospective workflow below. Specifically:", "", "1. Identify the sprint to retrospect: if a sprint ID was provided (e.g. FORGE-SNN) use it directly; otherwise ask the user which sprint to retrospect before proceeding.", "2. Load the architect persona from `.forge/personas/architect.md` for full identity context.", "3. Follow the workflow at `.forge/workflows/sprint_retrospective.md` verbatim: load all sprint task manifests, event logs, and retrospective notes; compute cost and bottlenecks; write RETROSPECTIVE.md.", "4. Use `forge_store_query` for all store reads — do NOT raw-read `.forge/store/`.", "5. Write retrospective artifacts using the `write` tool.", "6. Honour Pack-06 Read/Write/Ask/Store discipline: in-conversation clarifications use `forge_ask_user`.");
78
+ sections.push("", "---", "", "## Workflow", "", workflowMd.trim(), "", "---");
79
+ if (parsed.mode === "empty") {
80
+ sections.push("", "## Input", "", "(no sprint specified — ask the user which sprint to retrospect before proceeding)");
81
+ }
82
+ else {
83
+ sections.push("", `## Input — ${parsed.sourceLabel}`, "", parsed.sprintRef.trim());
84
+ }
85
+ return sections.join("\n");
86
+ }
87
+ // Registration -------------------------------------------------------------
88
+ const WORKFLOW_REL_PATH = path.join(".forge", "workflows", "sprint_retrospective.md");
89
+ export function registerRetrospective(pi, options = {}) {
90
+ pi.registerCommand("forge:retrospective", {
91
+ description: "Run the retrospective workflow for a Forge sprint. " +
92
+ "Usage: /forge:retrospective [FORGE-SNN | @<file> | <free-form text>]. " +
93
+ "Empty args — the LLM will prompt you for the sprint to retrospect.",
94
+ async handler(args, ctx) {
95
+ const cwd = options.cwd ?? process.cwd();
96
+ const workflowPath = path.join(cwd, WORKFLOW_REL_PATH);
97
+ let workflowMd;
98
+ let workflowAudience;
99
+ try {
100
+ const loaded = loadWorkflow(workflowPath);
101
+ workflowMd = loaded.rawMarkdown;
102
+ workflowAudience = loaded.audience;
103
+ }
104
+ catch (err) {
105
+ if (err instanceof WorkflowLoaderError) {
106
+ if (err.code === "missing_file") {
107
+ ctx.ui.notify(`× forge:retrospective — workflow not found at ${WORKFLOW_REL_PATH}; run /forge:init or /forge:regenerate first.`, "error");
108
+ }
109
+ else {
110
+ ctx.ui.notify(`× forge:retrospective — workflow load failed (${err.code}): ${err.message}`, "error");
111
+ }
112
+ return;
113
+ }
114
+ const e = err;
115
+ ctx.ui.notify(`× forge:retrospective — failed to read workflow: ${e.message ?? "unknown"}`, "error");
116
+ return;
117
+ }
118
+ let parsed;
119
+ try {
120
+ parsed = parseRetroArgs(args, cwd);
121
+ }
122
+ catch (err) {
123
+ const e = err;
124
+ ctx.ui.notify(`× forge:retrospective — failed to read seed: ${e.message ?? "unknown"}`, "error");
125
+ return;
126
+ }
127
+ const personas = extractPersonaNames(workflowMd);
128
+ let personaIdentity = "";
129
+ if (personas.length > 0) {
130
+ try {
131
+ const persona = loadPersona(personas[0], { cwd });
132
+ personaIdentity = persona.identity;
133
+ }
134
+ catch (err) {
135
+ if (err instanceof PersonaSkillLoaderError) {
136
+ ctx.ui.notify(`× forge:retrospective — persona '${personas[0]}' load failed (${err.code}): ${err.message}`, "error");
137
+ return;
138
+ }
139
+ const e = err;
140
+ ctx.ui.notify(`× forge:retrospective — persona load error: ${e.message ?? "unknown"}`, "error");
141
+ return;
142
+ }
143
+ }
144
+ if (!assertAudience({ workflowName: "sprint_retrospective", audience: workflowAudience }, ctx)) {
145
+ return;
146
+ }
147
+ const kickoff = composeKickoff({
148
+ workflowMd,
149
+ personaIdentity,
150
+ parsed,
151
+ });
152
+ sendKickoff(pi, kickoff);
153
+ },
154
+ });
155
+ }
156
+ //# sourceMappingURL=retrospective.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retrospective.js","sourceRoot":"","sources":["../../../src/extensions/forgecli/retrospective.ts"],"names":[],"mappings":"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"}
@@ -438,6 +438,7 @@ export function registerRunSprint(pi, options = {}) {
438
438
  }
439
439
  // ── Session lifecycle for thread-switcher (REVIEW FIX #2) ──────
440
440
  registry.startSession(taskId);
441
+ const taskSignal = registry.getAbortSignal(taskId);
441
442
  const taskResult = await runTaskPipeline({
442
443
  taskId,
443
444
  cwd,
@@ -447,6 +448,7 @@ export function registerRunSprint(pi, options = {}) {
447
448
  preflightGate,
448
449
  registry,
449
450
  resumeFromState,
451
+ signal: taskSignal, // ← wire AbortSignal for cancellation
450
452
  streamFnFactory: options.streamFnFactory
451
453
  ? (c) => options.streamFnFactory?.({
452
454
  kind: "task-phase",
@@ -466,6 +468,38 @@ export function registerRunSprint(pi, options = {}) {
466
468
  completedTaskIds.push(taskId);
467
469
  registry.completeSession(taskId, "completed");
468
470
  }
471
+ else if (taskResult.status === "cancelled") {
472
+ // Task was cancelled by user — mark session, persist sprint
473
+ // state, emit sprint-halted with cancellation detail, exit.
474
+ registry.completeSession(taskId, "cancelled");
475
+ const cancelledEvent = {
476
+ eventId: `${isoCompact(sprintStartMs)}_${sprintId}_sprint_halted`,
477
+ sprintId,
478
+ role: "orchestrator",
479
+ action: "sprint-halted",
480
+ startTimestamp: new Date(sprintStartMs).toISOString(),
481
+ endTimestamp: new Date(Date.now()).toISOString(),
482
+ durationMinutes: Math.round(((Date.now() - sprintStartMs) / 60000) * 100) / 100,
483
+ model: lastModel ?? "orchestrator",
484
+ provider: lastProvider ?? "orchestrator",
485
+ type: "sprint-halted",
486
+ haltedAtTaskIndex: i,
487
+ haltedAtTaskId: taskId,
488
+ lastError: "cancelled",
489
+ };
490
+ emitEvent(storeCli, cwd, sprintId, cancelledEvent);
491
+ writeSprintState(cwd, {
492
+ sprintId,
493
+ taskIndex: i,
494
+ completedTaskIds,
495
+ halted: true,
496
+ lastError: "cancelled",
497
+ savedAt: new Date().toISOString(),
498
+ });
499
+ ctx.ui.notify(`⊘ forge:run-sprint — ${sprintId} halted: task ${taskId} cancelled.`, "info");
500
+ ctx.ui.setStatus?.(SPRINT_STATUS_KEY, undefined);
501
+ return;
502
+ }
469
503
  else {
470
504
  // Task halted/escalated/failed: mark session failed, persist sprint state, emit sprint-halted, exit.
471
505
  registry.completeSession(taskId, "failed");
@@ -1 +1 @@
1
- {"version":3,"file":"run-sprint.js","sourceRoot":"","sources":["../../../src/extensions/forgecli/run-sprint.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"run-sprint.js","sourceRoot":"","sources":["../../../src/extensions/forgecli/run-sprint.ts"],"names":[],"mappings":"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"}
@@ -20,6 +20,8 @@ export interface RunTaskState {
20
20
  phaseIndex: number;
21
21
  iterationCounts: Record<string, number>;
22
22
  halted: boolean;
23
+ /** Set on cancellation so the resume prompt can say "cancelled" vs "halted". */
24
+ status?: "cancelled" | "halted" | "running";
23
25
  lastError?: string;
24
26
  savedAt: string;
25
27
  }
@@ -59,8 +61,14 @@ export interface RunTaskPipelineOptions {
59
61
  phase: string;
60
62
  taskId: string;
61
63
  }) => import("@earendil-works/pi-agent-core").StreamFn | undefined;
64
+ /**
65
+ * Optional AbortSignal from SessionRegistry. When provided, the pipeline
66
+ * checks signal.aborted between phases and passes the signal to
67
+ * runForgeSubagent so in-flight subagents can be aborted.
68
+ */
69
+ signal?: AbortSignal;
62
70
  }
63
- export type RunTaskPipelineStatus = "completed" | "halted" | "escalated" | "failed";
71
+ export type RunTaskPipelineStatus = "completed" | "halted" | "escalated" | "failed" | "cancelled";
64
72
  export interface RunTaskPipelineResult {
65
73
  status: RunTaskPipelineStatus;
66
74
  lastPhaseIndex: number;
@@ -419,6 +419,24 @@ export async function runTaskPipeline(opts) {
419
419
  const taskRecordAtStart = readTaskRecord(taskId, storeCli, cwd);
420
420
  const cacheSessionId = taskRecordAtStart?.sprintId ? `forge:${taskRecordAtStart.sprintId}` : `forge:task:${taskId}`;
421
421
  while (currentPhaseIndex < PHASES.length) {
422
+ // ── Between-phase cancellation gate ────────────────────────────
423
+ if (opts.signal?.aborted) {
424
+ ctx.ui.notify(`⊘ forge:run-task — ${taskId} cancelled by user.`, "info");
425
+ registry.completePhase(taskId, PHASES[currentPhaseIndex]?.role ?? "unknown", "cancelled");
426
+ registry.confirmCancelled(taskId);
427
+ // ADR-S21-01: preserve state file so cancelled runs are resumable
428
+ // from the beginning of the cancelled phase (not deleted).
429
+ writeState(cwd, {
430
+ taskId,
431
+ phaseIndex: currentPhaseIndex,
432
+ iterationCounts,
433
+ halted: false,
434
+ status: "cancelled",
435
+ lastError: undefined,
436
+ savedAt: new Date().toISOString(),
437
+ });
438
+ return { status: "cancelled", lastPhaseIndex: currentPhaseIndex, iterationCounts };
439
+ }
422
440
  const phase = PHASES[currentPhaseIndex];
423
441
  if (!phase) {
424
442
  ctx.ui.notify(`× forge:run-task — invalid phase index ${currentPhaseIndex}`, "error");
@@ -594,6 +612,7 @@ export async function runTaskPipeline(opts) {
594
612
  onEvent: wrappedOnEvent,
595
613
  requestedModel: modelResolution.model,
596
614
  modelRegistry: ctx.modelRegistry,
615
+ signal: opts.signal, // ← wire AbortSignal for cancellation
597
616
  });
598
617
  }
599
618
  catch (err) {
@@ -609,6 +628,29 @@ export async function runTaskPipeline(opts) {
609
628
  });
610
629
  return { status: "failed", lastPhaseIndex: currentPhaseIndex, iterationCounts, lastError: `runForgeSubagent threw: ${e.message ?? "unknown"}` };
611
630
  }
631
+ // ── Post-subagent abort detection ─────────────────────────────────
632
+ // If the abort signal fired during the subagent run, treat it as
633
+ // cancellation regardless of the exit code (subagent may have been
634
+ // mid-turn when aborted — exitCode could be 0 or 1).
635
+ // This check MUST come before halt-on-failure so that
636
+ // stopReason="aborted" + exitCode=1 is classified as cancellation,
637
+ // not a phase failure.
638
+ if (result.stopReason === "aborted" || opts.signal?.aborted) {
639
+ ctx.ui.notify(`⊘ forge:run-task — ${taskId} phase ${phase.role} cancelled.`, "info");
640
+ registry.completePhase(taskId, phase.role, "cancelled");
641
+ registry.confirmCancelled(taskId);
642
+ // ADR-S21-01: preserve state file so cancelled runs are resumable
643
+ writeState(cwd, {
644
+ taskId,
645
+ phaseIndex: currentPhaseIndex,
646
+ iterationCounts,
647
+ halted: false,
648
+ status: "cancelled",
649
+ lastError: undefined,
650
+ savedAt: new Date().toISOString(),
651
+ });
652
+ return { status: "cancelled", lastPhaseIndex: currentPhaseIndex, iterationCounts };
653
+ }
612
654
  // ── Halt-on-failure ───────────────────────────────────────────
613
655
  if (result.exitCode !== 0) {
614
656
  ctx.ui.notify(`× forge:run-task — phase ${phase.role} failed (exit ${result.exitCode})` +
@@ -822,29 +864,35 @@ export function registerRunTask(pi, options = {}) {
822
864
  }
823
865
  }
824
866
  else {
825
- // Fresh state: offer resume
867
+ // Fresh state: offer resume for ALL non-stale states — halted=true
868
+ // (explicit failure), halted=false (cancelled/interrupted), and
869
+ // any state with existing.status set (ADR-S21-01).
870
+ const stateStatus = existing.status ?? (existing.halted ? "halted" : "interrupted");
871
+ const statusLabel = stateStatus === "cancelled" ? "cancelled"
872
+ : stateStatus === "halted" ? "halted"
873
+ : "interrupted";
874
+ const phaseRole = PHASES[existing.phaseIndex]?.role ?? existing.phaseIndex;
826
875
  if (!isNonInteractive()) {
827
- const resume = await ctx.ui.confirm(`Resume ${taskId}?`, `Cached state found at phase ${existing.phaseIndex} (saved at ${formatLocalTime(existing.savedAt)}). Resume from here?`);
876
+ const resume = await ctx.ui.confirm(`Resume ${taskId}?`, `Cached state phase ${existing.phaseIndex} (${phaseRole}), ${statusLabel}, ` +
877
+ `saved at ${formatLocalTime(existing.savedAt)}. Resume from here?`);
828
878
  if (resume) {
829
879
  resumeFromState = existing;
830
- ctx.ui.notify(`forge:run-task — resuming ${taskId} from phase ${PHASES[existing.phaseIndex]?.role ?? existing.phaseIndex}`, "info");
880
+ ctx.ui.notify(`forge:run-task — resuming ${taskId} from phase ${phaseRole} (${statusLabel})`, "info");
831
881
  }
832
882
  else {
833
- // Restart from beginning
834
883
  deleteState(cwd, taskId);
835
884
  }
836
885
  }
837
886
  else {
838
- // Non-interactive + halted state: auto-abort
839
- ctx.ui.notify(`forge:run-task cached state for ${taskId} found but non-interactive mode; aborting.`, "info");
840
- registry.completeSession(taskId, "failed");
841
- ctx.ui.setStatus?.(STATUS_KEY, undefined);
842
- ctx.ui.setStatus?.(MESSAGE_KEY, undefined);
843
- return;
887
+ // Non-interactive: auto-resume from state (no confirmation).
888
+ // Cancelled/interrupted states are valid resume points.
889
+ resumeFromState = existing;
890
+ ctx.ui.notify(`forge:run-task — resuming ${taskId} from phase ${phaseRole} (${statusLabel})`, "info");
844
891
  }
845
892
  }
846
893
  }
847
894
  // ── Delegate to pipeline ─────────────────────────────────────────
895
+ const signal = registry.getAbortSignal(taskId);
848
896
  const pipelineResult = await runTaskPipeline({
849
897
  taskId,
850
898
  cwd,
@@ -854,12 +902,18 @@ export function registerRunTask(pi, options = {}) {
854
902
  preflightGate,
855
903
  registry,
856
904
  resumeFromState,
905
+ signal,
857
906
  });
858
907
  // ── Handle result ────────────────────────────────────────────────
859
908
  if (pipelineResult.status === "completed") {
860
909
  registry.completeSession(taskId, "completed");
861
910
  ctx.ui.notify(`〇 forge:run-task — ${taskId} pipeline complete (${PHASES.length} phases).`, "info");
862
911
  }
912
+ else if (pipelineResult.status === "cancelled") {
913
+ // confirmCancelled was already called by the pipeline, but
914
+ // completeSession("cancelled") ensures the session ends cleanly.
915
+ registry.completeSession(taskId, "cancelled");
916
+ }
863
917
  else {
864
918
  registry.completeSession(taskId, "failed");
865
919
  }