@copilot-swarm/core 0.0.9 → 0.0.10

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.
@@ -12,12 +12,20 @@ export interface PipelineCheckpoint {
12
12
  streamResults: string[];
13
13
  issueBody: string;
14
14
  runId: string;
15
+ /** Distinguishes run-mode vs plan-mode checkpoints. */
16
+ mode?: "run" | "plan";
15
17
  /** Phase key that was actively executing when the checkpoint was saved. */
16
18
  activePhase?: string;
17
19
  /** Draft content produced by the main agent before review loops began. */
18
20
  phaseDraft?: string;
19
21
  /** Iteration progress within review/QA loops, keyed by stable identifiers. */
20
22
  iterationProgress?: Record<string, IterationSnapshot>;
23
+ /** Plan-mode: refined engineering decisions. */
24
+ engDecisions?: string;
25
+ /** Plan-mode: refined design decisions. */
26
+ designDecisions?: string;
27
+ /** Plan-mode: technical analysis output. */
28
+ analysis?: string;
21
29
  }
22
30
  export declare function saveCheckpoint(config: SwarmConfig, checkpoint: PipelineCheckpoint): Promise<void>;
23
31
  export declare function loadCheckpoint(config: SwarmConfig): Promise<PipelineCheckpoint | null>;
@@ -1 +1 @@
1
- {"version":3,"file":"checkpoint.d.ts","sourceRoot":"","sources":["../src/checkpoint.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG/C,2DAA2D;AAC3D,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,kBAAkB;IACjC,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,2EAA2E;IAC3E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,0EAA0E;IAC1E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,8EAA8E;IAC9E,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;CACvD;AAqBD,wBAAsB,cAAc,CAAC,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAUvG;AAED,wBAAsB,cAAc,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAQ5F;AAED,wBAAsB,eAAe,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAOxE"}
1
+ {"version":3,"file":"checkpoint.d.ts","sourceRoot":"","sources":["../src/checkpoint.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG/C,2DAA2D;AAC3D,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,kBAAkB;IACjC,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,uDAAuD;IACvD,IAAI,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;IACtB,2EAA2E;IAC3E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,0EAA0E;IAC1E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,8EAA8E;IAC9E,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IACtD,gDAAgD;IAChD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,2CAA2C;IAC3C,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,4CAA4C;IAC5C,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAqBD,wBAAsB,cAAc,CAAC,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAUvG;AAED,wBAAsB,cAAc,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAQ5F;AAED,wBAAsB,eAAe,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAOxE"}
@@ -1 +1 @@
1
- {"version":3,"file":"checkpoint.js","sourceRoot":"","sources":["../src/checkpoint.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,EAAE,iBAAiB,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAwBlE,mGAAmG;AACnG,KAAK,UAAU,cAAc,CAAC,MAAmB;IAC/C,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClB,MAAM,WAAW,GAAG,MAAM,kBAAkB,CAAC,MAAM,CAAC,CAAC;QACrD,IAAI,WAAW,EAAE,CAAC;YAChB,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,iBAAiB,CAAC,CAAC;QAC9E,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,iBAAiB,CAAC,CAAC;AACtD,CAAC;AAED,KAAK,UAAU,kBAAkB,CAAC,MAAmB;IACnD,IAAI,CAAC;QACH,OAAO,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACxE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,MAAmB,EAAE,UAA8B;IACtF,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;IAC3B,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC;IACnD,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAElE,wBAAwB;IACxB,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;IAC/B,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1C,MAAM,EAAE,CAAC,SAAS,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;AAC9D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,MAAmB;IACtD,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,MAAM,CAAC,CAAC;IAC9C,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACrD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAuB,CAAC;IACnD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,MAAmB;IACvD,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,MAAM,CAAC,CAAC;IAC9C,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC5B,CAAC;IAAC,MAAM,CAAC;QACP,qBAAqB;IACvB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"checkpoint.js","sourceRoot":"","sources":["../src/checkpoint.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,EAAE,iBAAiB,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAgClE,mGAAmG;AACnG,KAAK,UAAU,cAAc,CAAC,MAAmB;IAC/C,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClB,MAAM,WAAW,GAAG,MAAM,kBAAkB,CAAC,MAAM,CAAC,CAAC;QACrD,IAAI,WAAW,EAAE,CAAC;YAChB,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,iBAAiB,CAAC,CAAC;QAC9E,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,iBAAiB,CAAC,CAAC;AACtD,CAAC;AAED,KAAK,UAAU,kBAAkB,CAAC,MAAmB;IACnD,IAAI,CAAC;QACH,OAAO,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACxE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,MAAmB,EAAE,UAA8B;IACtF,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;IAC3B,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC;IACnD,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAElE,wBAAwB;IACxB,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;IAC/B,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1C,MAAM,EAAE,CAAC,SAAS,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;AAC9D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,MAAmB;IACtD,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,MAAM,CAAC,CAAC;IAC9C,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACrD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAuB,CAAC;IACnD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,MAAmB;IACvD,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,MAAM,CAAC,CAAC;IAC9C,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC5B,CAAC;IAAC,MAAM,CAAC;QACP,qBAAqB;IACvB,CAAC;AACH,CAAC"}
@@ -134,5 +134,33 @@ describe("checkpoint round-trip", () => {
134
134
  const loaded = await loadCheckpoint(config);
135
135
  expect(loaded).toBeNull();
136
136
  });
137
+ it("saves and loads a plan-mode checkpoint with plan-specific fields", async () => {
138
+ const config = makeConfig("test-plan");
139
+ cleanupDirs.push(config.repoRoot);
140
+ const checkpoint = {
141
+ mode: "plan",
142
+ completedPhases: ["plan-clarify-0", "plan-review-1", "plan-eng-clarify-2"],
143
+ spec: "refined requirements",
144
+ engDecisions: "use REST API with pagination",
145
+ designDecisions: "",
146
+ analysis: "",
147
+ tasks: [],
148
+ designSpec: "",
149
+ streamResults: [],
150
+ issueBody: "Add search feature",
151
+ runId: "test-plan",
152
+ activePhase: "plan-review-3",
153
+ iterationProgress: {
154
+ "plan-review-3": { content: "revised eng decisions", completedIterations: 1 },
155
+ },
156
+ };
157
+ await saveCheckpoint(config, checkpoint);
158
+ const loaded = await loadCheckpoint(config);
159
+ expect(loaded).toEqual(checkpoint);
160
+ expect(loaded?.mode).toBe("plan");
161
+ expect(loaded?.engDecisions).toBe("use REST API with pagination");
162
+ expect(loaded?.activePhase).toBe("plan-review-3");
163
+ expect(loaded?.iterationProgress?.["plan-review-3"]?.completedIterations).toBe(1);
164
+ });
137
165
  });
138
166
  //# sourceMappingURL=checkpoint.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"checkpoint.test.js","sourceRoot":"","sources":["../src/checkpoint.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"checkpoint.test.js","sourceRoot":"","sources":["../src/checkpoint.test.ts"],"names":[],"mappings":"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"}
package/dist/config.d.ts CHANGED
@@ -19,5 +19,5 @@ export interface SwarmConfig {
19
19
  readonly maxRetries: number;
20
20
  readonly maxAutoResume: number;
21
21
  }
22
- export declare function loadConfig(): SwarmConfig;
22
+ export declare function loadConfig(): Promise<SwarmConfig>;
23
23
  //# sourceMappingURL=config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAgCA,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,MAAM,GAAG,SAAS,CAAC;AA+ItD;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;CAChC;AAED,wBAAgB,UAAU,IAAI,WAAW,CAoCxC"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAkCA,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,MAAM,GAAG,SAAS,CAAC;AAgKtD;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;CAChC;AAED,wBAAsB,UAAU,IAAI,OAAO,CAAC,WAAW,CAAC,CA6CvD"}
package/dist/config.js CHANGED
@@ -3,6 +3,8 @@ import * as fs from "node:fs";
3
3
  import * as path from "node:path";
4
4
  import { fileURLToPath } from "node:url";
5
5
  import { parseArgs } from "node:util";
6
+ import { resolveGitHubIssue } from "./github-issue.js";
7
+ import { openTextarea } from "./textarea.js";
6
8
  const repoRoot = execSync("git rev-parse --show-toplevel", { encoding: "utf-8" }).trim();
7
9
  function readEnvString(key, fallback) {
8
10
  const value = process.env[key];
@@ -45,6 +47,7 @@ Commands:
45
47
 
46
48
  Options:
47
49
  -v, --verbose Enable verbose streaming output
50
+ -e, --editor Open an interactive text editor to enter the prompt
48
51
  -p, --plan <file> Use a plan file as input (reads the refined requirements section)
49
52
  -f, --file <file> Read prompt from a file instead of inline text
50
53
  -r, --resume Resume from the last checkpoint (skip completed phases)
@@ -52,13 +55,26 @@ Options:
52
55
  -V, --version Show version number
53
56
  -h, --help Show this help message
54
57
 
58
+ Prompt sources (first match wins):
59
+ --plan <file> Extract refined requirements from a plan file
60
+ --file <file> Read entire file as prompt
61
+ --editor Open interactive multi-line editor (Ctrl+Enter to submit)
62
+ "<prompt>" Inline text argument
63
+ gh:owner/repo#123 Fetch a GitHub issue (requires gh CLI)
64
+ gh:#123 Fetch issue from current repo
65
+ https://github.com/owner/repo/issues/123
66
+ ISSUE_BODY env var Fallback environment variable
67
+
55
68
  Examples:
56
69
  swarm "Add a dark mode toggle"
57
70
  swarm plan "Add a dark mode toggle"
58
71
  swarm plan -f requirements.md
72
+ swarm run -e Open editor to describe the task
59
73
  swarm run -v "Fix the login bug"
60
- swarm run --resume Resume a failed/timed-out run
74
+ swarm run --resume Resume a failed/timed-out run
61
75
  swarm --plan .swarm/plans/plan-latest.md
76
+ swarm "gh:owner/repo#123" Fetch GitHub issue as prompt
77
+ swarm "gh:#42" Fetch issue #42 from current repo
62
78
  swarm analyze
63
79
 
64
80
  Environment variables override defaults; CLI args override env vars.
@@ -72,6 +88,7 @@ function parseCliArgs() {
72
88
  help: { type: "boolean", short: "h", default: false },
73
89
  version: { type: "boolean", short: "V", default: false },
74
90
  resume: { type: "boolean", short: "r", default: false },
91
+ editor: { type: "boolean", short: "e", default: false },
75
92
  "no-tui": { type: "boolean", default: false },
76
93
  plan: { type: "string", short: "p" },
77
94
  file: { type: "string", short: "f" },
@@ -98,6 +115,7 @@ function parseCliArgs() {
98
115
  prompt: promptParts.length > 0 ? promptParts.join(" ") : undefined,
99
116
  planFile: values.plan,
100
117
  promptFile: values.file,
118
+ editor: values.editor,
101
119
  resume: values.resume,
102
120
  noTui: values["no-tui"],
103
121
  };
@@ -144,7 +162,7 @@ function readPromptFile(filePath) {
144
162
  }
145
163
  return fs.readFileSync(resolved, "utf-8").trim();
146
164
  }
147
- export function loadConfig() {
165
+ export async function loadConfig() {
148
166
  const cli = parseCliArgs();
149
167
  let issueBody;
150
168
  if (cli.planFile) {
@@ -153,11 +171,19 @@ export function loadConfig() {
153
171
  else if (cli.promptFile) {
154
172
  issueBody = readPromptFile(cli.promptFile);
155
173
  }
174
+ else if (cli.editor) {
175
+ issueBody = await openTextarea();
176
+ if (!issueBody) {
177
+ console.error("Error: Editor cancelled — no prompt provided.");
178
+ process.exit(1);
179
+ }
180
+ }
156
181
  else {
157
- issueBody = cli.prompt ?? process.env.ISSUE_BODY;
182
+ const raw = cli.prompt ?? process.env.ISSUE_BODY;
183
+ issueBody = resolveGitHubIssue(raw) ?? raw;
158
184
  }
159
185
  if (cli.command !== "analyze" && !cli.resume && (!issueBody || issueBody === "")) {
160
- console.error(`Error: No prompt provided. Pass it as an argument, use --plan, or set ISSUE_BODY.\n\n${HELP_TEXT}`);
186
+ console.error(`Error: No prompt provided. Pass it as an argument, use --editor, --plan, or set ISSUE_BODY.\n\n${HELP_TEXT}`);
161
187
  process.exit(1);
162
188
  }
163
189
  const swarmDir = readEnvString("SWARM_DIR", ".swarm");
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,MAAM,QAAQ,GAAG,QAAQ,CAAC,+BAA+B,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;AAEzF,SAAS,aAAa,CAAC,GAAW,EAAE,QAAgB;IAClD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC/B,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE;QAAE,OAAO,QAAQ,CAAC;IACzD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,cAAc,CAAC,GAAW,EAAE,QAAiB;IACpD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC/B,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE;QAAE,OAAO,QAAQ,CAAC;IACzD,IAAI,KAAK,KAAK,MAAM;QAAE,OAAO,IAAI,CAAC;IAClC,IAAI,KAAK,KAAK,OAAO;QAAE,OAAO,KAAK,CAAC;IACpC,MAAM,IAAI,KAAK,CAAC,qBAAqB,GAAG,MAAM,KAAK,+BAA+B,CAAC,CAAC;AACtF,CAAC;AAED,SAAS,kBAAkB,CAAC,GAAW,EAAE,QAAgB;IACvD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC/B,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE;QAAE,OAAO,QAAQ,CAAC;IACzD,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC7B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,MAAM,IAAI,CAAC,EAAE,CAAC;QAC7C,MAAM,IAAI,KAAK,CAAC,qBAAqB,GAAG,MAAM,KAAK,gCAAgC,CAAC,CAAC;IACvF,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAcD,SAAS,WAAW;IAClB,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACzD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;IACrD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IAC1D,OAAO,GAAG,CAAC,OAAO,CAAC;AACrB,CAAC;AAED,MAAM,SAAS,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;2CA0ByB,CAAC;AAE5C,SAAS,YAAY;IACnB,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,SAAS,CAAC;QACxC,gBAAgB,EAAE,IAAI;QACtB,MAAM,EAAE,KAAK;QACb,OAAO,EAAE;YACP,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE;YACxD,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE;YACrD,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE;YACxD,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE;YACvD,QAAQ,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE;YAC7C,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE;YACpC,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE;SACrC;KACF,CAAC,CAAC;IAEH,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;QAC3B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACvB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,OAAO,GAAiB,KAAK,CAAC;IAClC,IAAI,WAAW,GAAG,WAAW,CAAC;IAE9B,IACE,WAAW,CAAC,MAAM,GAAG,CAAC;QACtB,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,MAAM,IAAI,WAAW,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,WAAW,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,EACvF,CAAC;QACD,OAAO,GAAG,WAAW,CAAC,CAAC,CAAiB,CAAC;QACzC,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACrC,CAAC;IAED,OAAO;QACL,OAAO;QACP,OAAO,EAAE,MAAM,CAAC,OAAkB;QAClC,MAAM,EAAE,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS;QAClE,QAAQ,EAAE,MAAM,CAAC,IAA0B;QAC3C,UAAU,EAAE,MAAM,CAAC,IAA0B;QAC7C,MAAM,EAAE,MAAM,CAAC,MAAiB;QAChC,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAY;KACnC,CAAC;AACJ,CAAC;AAED,+GAA+G;AAC/G,SAAS,YAAY,CAAC,QAAgB;IACpC,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACtF,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7B,OAAO,CAAC,KAAK,CAAC,+BAA+B,QAAQ,EAAE,CAAC,CAAC;QACzD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACnD,MAAM,MAAM,GAAG,yBAAyB,CAAC;IACzC,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACtC,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;QACjB,OAAO,CAAC,KAAK,CAAC,wCAAwC,MAAM,cAAc,QAAQ,EAAE,CAAC,CAAC;QACtF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,+BAA+B;IAC/B,MAAM,WAAW,GAAG,OAAO,CAAC,SAAS,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;IAC7D,MAAM,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACjD,QAAQ,CAAC,IAAI,CAAC,CAAC,WAAW,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAEjG,qEAAqE;IACrE,KAAK,MAAM,OAAO,IAAI,CAAC,0BAA0B,EAAE,qBAAqB,CAAC,EAAE,CAAC;QAC1E,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACxC,IAAI,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC;YAClB,MAAM,YAAY,GAAG,OAAO,CAAC,SAAS,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;YAChE,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAC5C,MAAM,IAAI,GAAG,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,IAAI,EAAE,CAAC;YACrF,IAAI,IAAI,EAAE,CAAC;gBACT,QAAQ,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;YAChE,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC/B,CAAC;AAED,wDAAwD;AACxD,SAAS,cAAc,CAAC,QAAgB;IACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACtF,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7B,OAAO,CAAC,KAAK,CAAC,iCAAiC,QAAQ,EAAE,CAAC,CAAC;QAC3D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,OAAO,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;AACnD,CAAC;AAuBD,MAAM,UAAU,UAAU;IACxB,MAAM,GAAG,GAAG,YAAY,EAAE,CAAC;IAE3B,IAAI,SAA6B,CAAC;IAElC,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;QACjB,SAAS,GAAG,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACzC,CAAC;SAAM,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC;QAC1B,SAAS,GAAG,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC7C,CAAC;SAAM,CAAC;QACN,SAAS,GAAG,GAAG,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;IACnD,CAAC;IAED,IAAI,GAAG,CAAC,OAAO,KAAK,SAAS,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC,SAAS,IAAI,SAAS,KAAK,EAAE,CAAC,EAAE,CAAC;QACjF,OAAO,CAAC,KAAK,CAAC,wFAAwF,SAAS,EAAE,CAAC,CAAC;QACnH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,QAAQ,GAAG,aAAa,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IACtD,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IAE7D,OAAO;QACL,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,QAAQ;QACR,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI,cAAc,CAAC,SAAS,EAAE,KAAK,CAAC;QACxD,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,KAAK,IAAI;QAChE,YAAY,EAAE,GAAG,CAAC,QAAQ,KAAK,SAAS;QACxC,SAAS,EAAE,SAAS,IAAI,EAAE;QAC1B,SAAS,EAAE,aAAa,CAAC,YAAY,EAAE,gBAAgB,CAAC;QACxD,QAAQ;QACR,KAAK;QACL,gBAAgB,EAAE,kBAAkB,CAAC,oBAAoB,EAAE,SAAS,CAAC;QACrE,UAAU,EAAE,kBAAkB,CAAC,aAAa,EAAE,CAAC,CAAC;QAChD,aAAa,EAAE,kBAAkB,CAAC,iBAAiB,EAAE,CAAC,CAAC;KACxD,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * If `input` matches a known GitHub issue pattern, fetch the issue and return
3
+ * its formatted content. Returns `undefined` for non-matching input.
4
+ */
5
+ export declare function resolveGitHubIssue(input: string | undefined): string | undefined;
6
+ //# sourceMappingURL=github-issue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"github-issue.d.ts","sourceRoot":"","sources":["../src/github-issue.ts"],"names":[],"mappings":"AAeA;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAUhF"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Resolve a GitHub issue reference to its title + body using the `gh` CLI.
3
+ * Supported formats:
4
+ * gh:owner/repo#123
5
+ * gh:#123 (uses current repo)
6
+ * https://github.com/owner/repo/issues/123
7
+ */
8
+ import { execSync } from "node:child_process";
9
+ const PATTERNS = [
10
+ [/^gh:([^#]+)#(\d+)$/, (m) => ({ nwo: m[1], number: m[2] })],
11
+ [/^gh:#(\d+)$/, (m) => ({ nwo: "", number: m[1] })],
12
+ [/^https?:\/\/github\.com\/([^/]+\/[^/]+)\/issues\/(\d+)/, (m) => ({ nwo: m[1], number: m[2] })],
13
+ ];
14
+ /**
15
+ * If `input` matches a known GitHub issue pattern, fetch the issue and return
16
+ * its formatted content. Returns `undefined` for non-matching input.
17
+ */
18
+ export function resolveGitHubIssue(input) {
19
+ if (!input)
20
+ return undefined;
21
+ const trimmed = input.trim();
22
+ for (const [pattern, extract] of PATTERNS) {
23
+ const match = trimmed.match(pattern);
24
+ if (!match)
25
+ continue;
26
+ const { nwo, number } = extract(match);
27
+ return fetchIssue(nwo, number, trimmed);
28
+ }
29
+ return undefined;
30
+ }
31
+ function fetchIssue(nwo, number, ref) {
32
+ try {
33
+ execSync("gh --version", { stdio: "ignore" });
34
+ }
35
+ catch {
36
+ console.error("Error: GitHub CLI (gh) is required to fetch issues. Install it from https://cli.github.com/");
37
+ process.exit(1);
38
+ }
39
+ try {
40
+ const repoFlag = nwo ? ` --repo ${nwo}` : "";
41
+ const cmd = `gh issue view ${number}${repoFlag} --json title,body`;
42
+ const result = execSync(cmd, { encoding: "utf-8" });
43
+ const issue = JSON.parse(result);
44
+ return `# ${issue.title}\n\n${issue.body}`;
45
+ }
46
+ catch {
47
+ console.error(`Error: Failed to fetch GitHub issue "${ref}". Make sure you're authenticated (gh auth login).`);
48
+ process.exit(1);
49
+ }
50
+ }
51
+ //# sourceMappingURL=github-issue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"github-issue.js","sourceRoot":"","sources":["../src/github-issue.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE9C,MAAM,QAAQ,GAAyE;IACrF,CAAC,oBAAoB,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC5D,CAAC,aAAa,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACnD,CAAC,wDAAwD,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;CACjG,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAyB;IAC1D,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAC7B,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,KAAK,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,QAAQ,EAAE,CAAC;QAC1C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACrC,IAAI,CAAC,KAAK;YAAE,SAAS;QACrB,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;QACvC,OAAO,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IAC1C,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,UAAU,CAAC,GAAW,EAAE,MAAc,EAAE,GAAW;IAC1D,IAAI,CAAC;QACH,QAAQ,CAAC,cAAc,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;IAChD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,KAAK,CAAC,6FAA6F,CAAC,CAAC;QAC7G,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,GAAG,CAAC,CAAC,CAAC,WAAW,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7C,MAAM,GAAG,GAAG,iBAAiB,MAAM,GAAG,QAAQ,oBAAoB,CAAC;QACnE,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;QACpD,MAAM,KAAK,GAAoC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAClE,OAAO,KAAK,KAAK,CAAC,KAAK,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,KAAK,CAAC,wCAAwC,GAAG,oDAAoD,CAAC,CAAC;QAC/G,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
package/dist/index.js CHANGED
@@ -8,7 +8,7 @@ import { analysisDir, plansDir } from "./paths.js";
8
8
  import { PlanningEngine } from "./planning-engine.js";
9
9
  import { ProgressTracker } from "./progress-tracker.js";
10
10
  import { TuiRenderer } from "./tui-renderer.js";
11
- const config = loadConfig();
11
+ const config = await loadConfig();
12
12
  const logger = new Logger(config.verbose, config.runId);
13
13
  const showLogOnError = (err) => {
14
14
  if (logger.logFilePath) {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -10,6 +10,8 @@ export declare class PlanningEngine {
10
10
  private readonly tracker?;
11
11
  private readonly renderer?;
12
12
  private readonly sessions;
13
+ private activePhaseKey;
14
+ private iterationProgress;
13
15
  constructor(config: SwarmConfig, pipeline: PipelineConfig, logger: Logger, tracker?: ProgressTracker | undefined, renderer?: TuiRenderer | undefined);
14
16
  start(): Promise<void>;
15
17
  stop(): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"planning-engine.d.ts","sourceRoot":"","sources":["../src/planning-engine.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAG1C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE7D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAuGrD,qBAAa,cAAc;IAIvB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;IACzB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;IAP5B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAiB;gBAGvB,MAAM,EAAE,WAAW,EACnB,QAAQ,EAAE,cAAc,EACxB,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,eAAe,YAAA,EACzB,QAAQ,CAAC,EAAE,WAAW,YAAA;IAKnC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAIrB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IA4G9B;;;OAGG;YACW,UAAU;IAiCxB;;OAEG;YACW,gBAAgB;YAiChB,mBAAmB;IA2DjC;;;OAGG;YACW,eAAe;IAyD7B;;;;OAIG;YACW,kBAAkB;YAqBlB,eAAe;CAqB9B"}
1
+ {"version":3,"file":"planning-engine.d.ts","sourceRoot":"","sources":["../src/planning-engine.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAG1C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE7D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAkHrD,qBAAa,cAAc;IAMvB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;IACzB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;IAT5B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAiB;IAC1C,OAAO,CAAC,cAAc,CAAuB;IAC7C,OAAO,CAAC,iBAAiB,CAAyC;gBAG/C,MAAM,EAAE,WAAW,EACnB,QAAQ,EAAE,cAAc,EACxB,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,eAAe,YAAA,EACzB,QAAQ,CAAC,EAAE,WAAW,YAAA;IAKnC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAIrB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IA2P9B;;;OAGG;YACW,UAAU;IA6DxB;;OAEG;YACW,gBAAgB;YA2DhB,mBAAmB;IA2DjC;;;OAGG;YACW,eAAe;IAyD7B;;;;OAIG;YACW,kBAAkB;YAqBlB,eAAe;CAqB9B"}
@@ -1,6 +1,7 @@
1
1
  import * as fs from "node:fs/promises";
2
2
  import * as path from "node:path";
3
3
  import * as readline from "node:readline/promises";
4
+ import { clearCheckpoint, loadCheckpoint, saveCheckpoint } from "./checkpoint.js";
4
5
  import { ResponseKeyword } from "./constants.js";
5
6
  import { msg } from "./messages.js";
6
7
  import { plansDir } from "./paths.js";
@@ -98,6 +99,15 @@ You are a different AI model from the one that produced this plan. Your fresh pe
98
99
  3. Decision:
99
100
  - If the plan is ready for implementation, respond with **PLAN_APPROVED**.
100
101
  - If there are issues, provide a numbered list of specific improvements. Be precise.`;
102
+ /** Section headers that must be present in a valid assembled plan. */
103
+ const PLAN_SECTION_HEADERS = [
104
+ "## Refined Requirements",
105
+ "## Engineering Decisions",
106
+ "## Design Decisions",
107
+ "## Technical Analysis",
108
+ ];
109
+ /** Minimum ratio of revised-to-original length before we consider the revision suspicious. */
110
+ const MIN_REVISION_LENGTH_RATIO = 0.3;
101
111
  export class PlanningEngine {
102
112
  config;
103
113
  pipeline;
@@ -105,6 +115,8 @@ export class PlanningEngine {
105
115
  tracker;
106
116
  renderer;
107
117
  sessions;
118
+ activePhaseKey = null;
119
+ iterationProgress = {};
108
120
  constructor(config, pipeline, logger, tracker, renderer) {
109
121
  this.config = config;
110
122
  this.pipeline = pipeline;
@@ -135,41 +147,160 @@ export class PlanningEngine {
135
147
  phases.push({ phase: "plan-cross-review" });
136
148
  }
137
149
  this.tracker?.initPhases(phases);
150
+ // State
151
+ const completedPhases = new Set();
152
+ let spec = "";
153
+ let engDecisions = "";
154
+ let designDecisions = "";
155
+ let analysis = "";
156
+ let resumedPhaseKey = null;
157
+ let effectiveIssueBody = this.config.issueBody;
158
+ // Resume from checkpoint
159
+ if (this.config.resume) {
160
+ const cp = await loadCheckpoint(this.config);
161
+ if (cp?.mode === "plan") {
162
+ this.logger.info(msg.resuming(cp.completedPhases.length));
163
+ for (const p of cp.completedPhases) {
164
+ completedPhases.add(p);
165
+ this.tracker?.completePhase(p);
166
+ }
167
+ spec = cp.spec || "";
168
+ engDecisions = cp.engDecisions || "";
169
+ designDecisions = cp.designDecisions || "";
170
+ analysis = cp.analysis || "";
171
+ effectiveIssueBody = cp.issueBody || this.config.issueBody;
172
+ if (cp.activePhase) {
173
+ resumedPhaseKey = cp.activePhase;
174
+ this.iterationProgress = cp.iterationProgress ?? {};
175
+ }
176
+ }
177
+ else {
178
+ this.logger.info(msg.noCheckpoint);
179
+ }
180
+ }
181
+ const saveProgress = async () => {
182
+ await saveCheckpoint(this.config, {
183
+ mode: "plan",
184
+ completedPhases: [...completedPhases],
185
+ spec,
186
+ engDecisions,
187
+ designDecisions,
188
+ analysis,
189
+ issueBody: effectiveIssueBody,
190
+ runId: this.config.runId,
191
+ tasks: [],
192
+ designSpec: "",
193
+ streamResults: [],
194
+ activePhase: this.activePhaseKey ?? undefined,
195
+ iterationProgress: Object.keys(this.iterationProgress).length > 0 ? this.iterationProgress : undefined,
196
+ });
197
+ };
138
198
  let phaseIdx = 0;
139
199
  // Phase 1: PM clarifies requirements interactively
140
- this.tracker?.activatePhase(`plan-clarify-${phaseIdx}`);
141
- let spec = await this.clarifyRequirements();
142
- this.tracker?.completePhase(`plan-clarify-${phaseIdx}`);
200
+ const clarifyKey = `plan-clarify-${phaseIdx}`;
201
+ if (completedPhases.has(clarifyKey)) {
202
+ this.logger.info(msg.phaseSkipped("plan-clarify"));
203
+ }
204
+ else {
205
+ this.tracker?.activatePhase(clarifyKey);
206
+ spec = await this.clarifyRequirements(effectiveIssueBody);
207
+ completedPhases.add(clarifyKey);
208
+ this.tracker?.completePhase(clarifyKey);
209
+ await saveProgress();
210
+ }
143
211
  phaseIdx++;
144
212
  // Phase 2: Review PM output
145
- this.tracker?.activatePhase(`plan-review-${phaseIdx}`);
146
- spec = await this.reviewStep(spec, "Refined Requirements", "PM is revising requirements…");
147
- this.tracker?.completePhase(`plan-review-${phaseIdx}`);
213
+ const pmReviewKey = `plan-review-${phaseIdx}`;
214
+ if (completedPhases.has(pmReviewKey)) {
215
+ this.logger.info(msg.phaseSkipped("plan-review"));
216
+ }
217
+ else {
218
+ this.tracker?.activatePhase(pmReviewKey);
219
+ this.activePhaseKey = pmReviewKey;
220
+ if (pmReviewKey !== resumedPhaseKey)
221
+ this.iterationProgress = {};
222
+ spec = await this.reviewStep(spec, "Refined Requirements", "PM is revising requirements…", pmReviewKey, saveProgress);
223
+ this.activePhaseKey = null;
224
+ this.iterationProgress = {};
225
+ completedPhases.add(pmReviewKey);
226
+ this.tracker?.completePhase(pmReviewKey);
227
+ await saveProgress();
228
+ }
148
229
  phaseIdx++;
149
230
  // Phase 3: Engineer clarifies technical questions
150
- this.tracker?.activatePhase(`plan-eng-clarify-${phaseIdx}`);
151
- let engDecisions = await this.clarifyWithRole(ENGINEER_CLARIFIER_INSTRUCTIONS, ENGINEERING_CLEAR_KEYWORD, spec, "Engineer is reviewing requirements…", msg.planningEngClarifyPhase);
152
- this.tracker?.completePhase(`plan-eng-clarify-${phaseIdx}`);
231
+ const engClarifyKey = `plan-eng-clarify-${phaseIdx}`;
232
+ if (completedPhases.has(engClarifyKey)) {
233
+ this.logger.info(msg.phaseSkipped("plan-eng-clarify"));
234
+ }
235
+ else {
236
+ this.tracker?.activatePhase(engClarifyKey);
237
+ engDecisions = await this.clarifyWithRole(ENGINEER_CLARIFIER_INSTRUCTIONS, ENGINEERING_CLEAR_KEYWORD, spec, "Engineer is reviewing requirements…", msg.planningEngClarifyPhase);
238
+ completedPhases.add(engClarifyKey);
239
+ this.tracker?.completePhase(engClarifyKey);
240
+ await saveProgress();
241
+ }
153
242
  phaseIdx++;
154
243
  // Phase 4: Review engineer output
155
- this.tracker?.activatePhase(`plan-review-${phaseIdx}`);
156
- engDecisions = await this.reviewStep(engDecisions, "Engineering Decisions", "Engineer is revising decisions…");
157
- this.tracker?.completePhase(`plan-review-${phaseIdx}`);
244
+ const engReviewKey = `plan-review-${phaseIdx}`;
245
+ if (completedPhases.has(engReviewKey)) {
246
+ this.logger.info(msg.phaseSkipped("plan-review"));
247
+ }
248
+ else {
249
+ this.tracker?.activatePhase(engReviewKey);
250
+ this.activePhaseKey = engReviewKey;
251
+ if (engReviewKey !== resumedPhaseKey)
252
+ this.iterationProgress = {};
253
+ engDecisions = await this.reviewStep(engDecisions, "Engineering Decisions", "Engineer is revising decisions…", engReviewKey, saveProgress);
254
+ this.activePhaseKey = null;
255
+ this.iterationProgress = {};
256
+ completedPhases.add(engReviewKey);
257
+ this.tracker?.completePhase(engReviewKey);
258
+ await saveProgress();
259
+ }
158
260
  phaseIdx++;
159
261
  // Phase 5: Designer clarifies UI/UX
160
- this.tracker?.activatePhase(`plan-design-clarify-${phaseIdx}`);
161
- let designDecisions = await this.clarifyWithRole(DESIGNER_CLARIFIER_INSTRUCTIONS, DESIGN_CLEAR_KEYWORD, spec, "Designer is reviewing requirements…", msg.planningDesignClarifyPhase);
162
- this.tracker?.completePhase(`plan-design-clarify-${phaseIdx}`);
262
+ const designClarifyKey = `plan-design-clarify-${phaseIdx}`;
263
+ if (completedPhases.has(designClarifyKey)) {
264
+ this.logger.info(msg.phaseSkipped("plan-design-clarify"));
265
+ }
266
+ else {
267
+ this.tracker?.activatePhase(designClarifyKey);
268
+ designDecisions = await this.clarifyWithRole(DESIGNER_CLARIFIER_INSTRUCTIONS, DESIGN_CLEAR_KEYWORD, spec, "Designer is reviewing requirements…", msg.planningDesignClarifyPhase);
269
+ completedPhases.add(designClarifyKey);
270
+ this.tracker?.completePhase(designClarifyKey);
271
+ await saveProgress();
272
+ }
163
273
  phaseIdx++;
164
274
  // Phase 6: Review designer output
165
- this.tracker?.activatePhase(`plan-review-${phaseIdx}`);
166
- designDecisions = await this.reviewStep(designDecisions, "Design Decisions", "Designer is revising decisions…");
167
- this.tracker?.completePhase(`plan-review-${phaseIdx}`);
275
+ const designReviewKey = `plan-review-${phaseIdx}`;
276
+ if (completedPhases.has(designReviewKey)) {
277
+ this.logger.info(msg.phaseSkipped("plan-review"));
278
+ }
279
+ else {
280
+ this.tracker?.activatePhase(designReviewKey);
281
+ this.activePhaseKey = designReviewKey;
282
+ if (designReviewKey !== resumedPhaseKey)
283
+ this.iterationProgress = {};
284
+ designDecisions = await this.reviewStep(designDecisions, "Design Decisions", "Designer is revising decisions…", designReviewKey, saveProgress);
285
+ this.activePhaseKey = null;
286
+ this.iterationProgress = {};
287
+ completedPhases.add(designReviewKey);
288
+ this.tracker?.completePhase(designReviewKey);
289
+ await saveProgress();
290
+ }
168
291
  phaseIdx++;
169
292
  // Phase 7: Engineering analyst assesses codebase
170
- this.tracker?.activatePhase(`plan-analyze-${phaseIdx}`);
171
- const analysis = await this.analyzeCodebase(spec);
172
- this.tracker?.completePhase(`plan-analyze-${phaseIdx}`);
293
+ const analyzeKey = `plan-analyze-${phaseIdx}`;
294
+ if (completedPhases.has(analyzeKey)) {
295
+ this.logger.info(msg.phaseSkipped("plan-analyze"));
296
+ }
297
+ else {
298
+ this.tracker?.activatePhase(analyzeKey);
299
+ analysis = await this.analyzeCodebase(spec);
300
+ completedPhases.add(analyzeKey);
301
+ this.tracker?.completePhase(analyzeKey);
302
+ await saveProgress();
303
+ }
173
304
  phaseIdx++;
174
305
  // Assemble full plan
175
306
  let plan = `## Refined Requirements\n\n${spec}\n\n` +
@@ -178,20 +309,35 @@ export class PlanningEngine {
178
309
  `## Technical Analysis\n\n${analysis}`;
179
310
  // Phase 8: Cross-model review of the full plan
180
311
  if (useCrossModel) {
181
- this.tracker?.activatePhase(`plan-cross-review-${phaseIdx}`);
182
- plan = await this.crossModelReview(plan);
183
- this.tracker?.completePhase(`plan-cross-review-${phaseIdx}`);
312
+ const crossKey = `plan-cross-review-${phaseIdx}`;
313
+ if (completedPhases.has(crossKey)) {
314
+ this.logger.info(msg.phaseSkipped("plan-cross-review"));
315
+ }
316
+ else {
317
+ this.tracker?.activatePhase(crossKey);
318
+ this.activePhaseKey = crossKey;
319
+ if (crossKey !== resumedPhaseKey)
320
+ this.iterationProgress = {};
321
+ plan = await this.crossModelReview(plan, crossKey, saveProgress);
322
+ this.activePhaseKey = null;
323
+ this.iterationProgress = {};
324
+ completedPhases.add(crossKey);
325
+ this.tracker?.completePhase(crossKey);
326
+ await saveProgress();
327
+ }
184
328
  }
185
- // Save
329
+ // Save plan output
186
330
  const timestamp = new Date().toISOString();
187
331
  const fileTimestamp = timestamp.replace(/[:.]/g, "-");
188
- const fullPlan = `# Plan\n\n**Timestamp:** ${timestamp}\n\n## Original Request\n\n${this.config.issueBody}\n\n${plan}\n`;
332
+ const fullPlan = `# Plan\n\n**Timestamp:** ${timestamp}\n\n## Original Request\n\n${effectiveIssueBody}\n\n${plan}\n`;
189
333
  const dir = plansDir(this.config);
190
334
  await fs.mkdir(dir, { recursive: true });
191
335
  const timestampedPath = path.join(dir, `plan-${fileTimestamp}.md`);
192
336
  const latestPath = path.join(dir, "plan-latest.md");
193
337
  await fs.writeFile(timestampedPath, fullPlan);
194
338
  await fs.copyFile(timestampedPath, latestPath);
339
+ // Clear checkpoint on success
340
+ await clearCheckpoint(this.config);
195
341
  this.logger.info(msg.planningComplete);
196
342
  this.logger.info(msg.planSaved(path.relative(this.config.repoRoot, timestampedPath)));
197
343
  this.logger.info(`📌 Latest plan: ${path.relative(this.config.repoRoot, latestPath)}`);
@@ -201,10 +347,18 @@ export class PlanningEngine {
201
347
  * Review a plan section with a reviewer agent. If issues found, send feedback
202
348
  * back to the original agent (via isolated session) for revision.
203
349
  */
204
- async reviewStep(content, sectionName, reviseSpinner) {
350
+ async reviewStep(content, sectionName, reviseSpinner, phaseKey, saveProgress) {
205
351
  this.logger.info(msg.planningReviewPhase(sectionName));
206
352
  let revised = content;
207
- for (let i = 1; i <= MAX_REVIEW_ITERATIONS; i++) {
353
+ // Resume: skip completed iterations
354
+ const progress = this.iterationProgress[phaseKey];
355
+ let startIteration = 1;
356
+ if (progress) {
357
+ revised = progress.content;
358
+ startIteration = progress.completedIterations + 1;
359
+ this.logger.info(msg.iterationResumed(progress.completedIterations, MAX_REVIEW_ITERATIONS));
360
+ }
361
+ for (let i = startIteration; i <= MAX_REVIEW_ITERATIONS; i++) {
208
362
  this.logger.info(msg.planReviewIteration(i, MAX_REVIEW_ITERATIONS));
209
363
  const feedback = await this.sessions.callIsolatedWithInstructions(STEP_REVIEWER_INSTRUCTIONS, `Review this "${sectionName}" section of a project plan:\n\n${revised}`, `Reviewing ${sectionName} (${i}/${MAX_REVIEW_ITERATIONS})…`);
210
364
  if (responseContains(feedback, PLAN_APPROVED_KEYWORD)) {
@@ -213,19 +367,39 @@ export class PlanningEngine {
213
367
  }
214
368
  this.logger.info(msg.planReviewFeedback(feedback.substring(0, 80)));
215
369
  // Have the original role revise based on feedback
216
- revised = await this.sessions.callIsolatedWithInstructions(`You are the author of a "${sectionName}" section in a project plan. ` +
217
- "A reviewer has provided feedback. Revise the section to address all issues. " +
218
- "Output ONLY the revised section content.", `Original section:\n\n${revised}\n\nReviewer feedback:\n\n${feedback}\n\nRevise the section to address all feedback.`, reviseSpinner);
370
+ const revision = await this.sessions.callIsolatedWithInstructions(`You are the author of a "${sectionName}" section in a project plan. ` +
371
+ "A reviewer has provided feedback. Revise the section to address all issues.\n\n" +
372
+ "**CRITICAL:** Output the COMPLETE revised section every requirement, criterion, " +
373
+ "and detail. Do NOT output a summary, changelog, or description of your changes. " +
374
+ "The output must be the full section content, ready to replace the original.", `Original section:\n\n${revised}\n\nReviewer feedback:\n\n${feedback}\n\nRevise the section to address all feedback. Output the COMPLETE revised section.`, reviseSpinner);
375
+ // Guard: if revision is suspiciously short, keep original
376
+ if (revision.length >= revised.length * MIN_REVISION_LENGTH_RATIO) {
377
+ revised = revision;
378
+ }
379
+ else {
380
+ this.logger.info(" ⚠️ Revision too short — keeping previous version");
381
+ }
382
+ // Save iteration progress
383
+ this.iterationProgress[phaseKey] = { content: revised, completedIterations: i };
384
+ await saveProgress();
219
385
  }
220
386
  return revised;
221
387
  }
222
388
  /**
223
389
  * Cross-model review of the full assembled plan using the review model.
224
390
  */
225
- async crossModelReview(plan) {
391
+ async crossModelReview(plan, phaseKey, saveProgress) {
226
392
  this.logger.info(msg.planCrossModelPhase(this.pipeline.reviewModel));
227
393
  let revised = plan;
228
- for (let i = 1; i <= MAX_REVIEW_ITERATIONS; i++) {
394
+ // Resume: skip completed iterations
395
+ const progress = this.iterationProgress[phaseKey];
396
+ let startIteration = 1;
397
+ if (progress) {
398
+ revised = progress.content;
399
+ startIteration = progress.completedIterations + 1;
400
+ this.logger.info(msg.iterationResumed(progress.completedIterations, MAX_REVIEW_ITERATIONS));
401
+ }
402
+ for (let i = startIteration; i <= MAX_REVIEW_ITERATIONS; i++) {
229
403
  this.logger.info(msg.planReviewIteration(i, MAX_REVIEW_ITERATIONS));
230
404
  const feedback = await this.sessions.callIsolatedWithInstructions(CROSS_MODEL_PLAN_REVIEWER_INSTRUCTIONS, `Review this complete project plan:\n\n${revised}`, `Cross-model review (${this.pipeline.reviewModel}, ${i}/${MAX_REVIEW_ITERATIONS})…`, this.pipeline.reviewModel);
231
405
  if (responseContains(feedback, PLAN_APPROVED_KEYWORD)) {
@@ -234,17 +408,33 @@ export class PlanningEngine {
234
408
  }
235
409
  this.logger.info(msg.planReviewFeedback(feedback.substring(0, 80)));
236
410
  // Revise with the primary model
237
- revised = await this.sessions.callIsolatedWithInstructions("You are revising a project plan based on feedback from a cross-model reviewer. " +
238
- "Address all issues raised. Output the complete revised plan.", `Current plan:\n\n${revised}\n\nCross-model reviewer feedback:\n\n${feedback}\n\nRevise the plan.`, "Revising plan…");
411
+ const revision = await this.sessions.callIsolatedWithInstructions("You are revising a project plan based on feedback from a cross-model reviewer. " +
412
+ "Address all issues raised.\n\n" +
413
+ "**CRITICAL:** Output the COMPLETE revised plan with ALL sections preserved:\n" +
414
+ "## Refined Requirements\n## Engineering Decisions\n## Design Decisions\n## Technical Analysis\n\n" +
415
+ "Do NOT output a summary, changelog, or description of your changes. " +
416
+ "The output must be the full plan document, ready to replace the original.", `Current plan:\n\n${revised}\n\nCross-model reviewer feedback:\n\n${feedback}\n\nRevise the plan. Output the COMPLETE plan with all sections.`, "Revising plan…");
417
+ // Guard: verify the revision preserves plan structure
418
+ const hasAllSections = PLAN_SECTION_HEADERS.every((h) => revision.includes(h));
419
+ const isLongEnough = revision.length >= revised.length * MIN_REVISION_LENGTH_RATIO;
420
+ if (hasAllSections && isLongEnough) {
421
+ revised = revision;
422
+ }
423
+ else {
424
+ this.logger.info(" ⚠️ Revision lost plan structure — keeping previous version");
425
+ }
426
+ // Save iteration progress
427
+ this.iterationProgress[phaseKey] = { content: revised, completedIterations: i };
428
+ await saveProgress();
239
429
  }
240
430
  return revised;
241
431
  }
242
- async clarifyRequirements() {
432
+ async clarifyRequirements(issueBody) {
243
433
  this.logger.info(msg.planningPmPhase);
244
434
  const session = await this.sessions.createSessionWithInstructions(PLANNER_INSTRUCTIONS);
245
435
  const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
246
436
  try {
247
- let response = await this.sessions.send(session, `Here is the user's request:\n\n${this.config.issueBody}\n\n` +
437
+ let response = await this.sessions.send(session, `Here is the user's request:\n\n${issueBody}\n\n` +
248
438
  "Analyze this request. If it's clear enough, respond with REQUIREMENTS_CLEAR followed by the structured summary. " +
249
439
  "If you need more information, ask your clarifying questions.", "PM is analyzing requirements…");
250
440
  for (let round = 0; round < MAX_CLARIFICATION_ROUNDS; round++) {
@@ -1 +1 @@
1
- {"version":3,"file":"planning-engine.js","sourceRoot":"","sources":["../src/planning-engine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"planning-engine.js","sourceRoot":"","sources":["../src/planning-engine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Interactive multi-line text editor for the terminal.
3
+ * Uses raw stdin mode with ANSI rendering — no external dependencies.
4
+ * Arrow keys to navigate, Enter for newlines, Ctrl+Enter (or Ctrl+D) to submit, Esc to cancel.
5
+ */
6
+ export declare function openTextarea(): Promise<string | undefined>;
7
+ //# sourceMappingURL=textarea.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"textarea.d.ts","sourceRoot":"","sources":["../src/textarea.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,wBAAsB,YAAY,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAuJhE"}
@@ -0,0 +1,156 @@
1
+ /**
2
+ * Interactive multi-line text editor for the terminal.
3
+ * Uses raw stdin mode with ANSI rendering — no external dependencies.
4
+ * Arrow keys to navigate, Enter for newlines, Ctrl+Enter (or Ctrl+D) to submit, Esc to cancel.
5
+ */
6
+ const TITLE = " Task Description ";
7
+ const FOOTER_HINT = " Ctrl+Enter submit │ Esc cancel ";
8
+ export async function openTextarea() {
9
+ if (!process.stdin.isTTY)
10
+ return undefined;
11
+ const cols = process.stdout.columns || 80;
12
+ const rows = process.stdout.rows || 24;
13
+ const editorHeight = Math.max(5, rows - 4);
14
+ const innerWidth = cols - 4;
15
+ const lines = [""];
16
+ let curRow = 0;
17
+ let curCol = 0;
18
+ let scroll = 0;
19
+ function clamp() {
20
+ if (curRow < 0)
21
+ curRow = 0;
22
+ if (curRow >= lines.length)
23
+ curRow = lines.length - 1;
24
+ if (curCol < 0)
25
+ curCol = 0;
26
+ if (curCol > lines[curRow].length)
27
+ curCol = lines[curRow].length;
28
+ if (curRow < scroll)
29
+ scroll = curRow;
30
+ if (curRow >= scroll + editorHeight)
31
+ scroll = curRow - editorHeight + 1;
32
+ }
33
+ function render() {
34
+ const titlePad = Math.max(0, cols - 2 - TITLE.length);
35
+ const top = `┌${TITLE}${"─".repeat(titlePad)}┐`;
36
+ const footerPad = Math.max(0, cols - 2 - FOOTER_HINT.length);
37
+ const bottom = `└${"─".repeat(footerPad)}${FOOTER_HINT}┘`;
38
+ process.stdout.write("\x1b[2J\x1b[1;1H");
39
+ process.stdout.write(`${top}\n`);
40
+ for (let i = 0; i < editorHeight; i++) {
41
+ const idx = scroll + i;
42
+ const text = idx < lines.length ? lines[idx] : "";
43
+ const display = text.substring(0, innerWidth);
44
+ const pad = Math.max(0, innerWidth - display.length);
45
+ process.stdout.write(`│ ${display}${" ".repeat(pad)} │\n`);
46
+ }
47
+ process.stdout.write(bottom);
48
+ const screenRow = 2 + (curRow - scroll);
49
+ const screenCol = 3 + curCol;
50
+ process.stdout.write(`\x1b[${screenRow};${screenCol}H`);
51
+ }
52
+ return new Promise((resolve) => {
53
+ process.stdout.write("\x1b[?1049h"); // alternate screen
54
+ process.stdout.write("\x1b[?25h"); // show cursor
55
+ process.stdin.setRawMode(true);
56
+ process.stdin.resume();
57
+ process.stdin.setEncoding("utf-8");
58
+ render();
59
+ function cleanup(result) {
60
+ process.stdin.removeListener("data", onData);
61
+ process.stdin.setRawMode(false);
62
+ process.stdin.pause();
63
+ process.stdout.write("\x1b[?1049l"); // leave alternate screen
64
+ resolve(result);
65
+ }
66
+ function onData(data) {
67
+ for (let i = 0; i < data.length; i++) {
68
+ const ch = data.charCodeAt(i);
69
+ // Ctrl+C — cancel
70
+ if (ch === 3) {
71
+ cleanup(undefined);
72
+ return;
73
+ }
74
+ // Ctrl+D (4) or LF (10, Ctrl+Enter in most terminals) — submit
75
+ if (ch === 4 || ch === 10) {
76
+ const text = lines.join("\n").trim();
77
+ cleanup(text || undefined);
78
+ return;
79
+ }
80
+ // Escape / escape sequences
81
+ if (ch === 27) {
82
+ if (i + 2 < data.length && data.charCodeAt(i + 1) === 91) {
83
+ const code = data.charCodeAt(i + 2);
84
+ if (code === 65)
85
+ curRow--;
86
+ else if (code === 66)
87
+ curRow++;
88
+ else if (code === 67)
89
+ curCol++;
90
+ else if (code === 68)
91
+ curCol--;
92
+ else if (code === 72)
93
+ curCol = 0;
94
+ else if (code === 70)
95
+ curCol = lines[curRow].length;
96
+ else if (code === 51 && i + 3 < data.length && data.charCodeAt(i + 3) === 126) {
97
+ // Delete key
98
+ if (curCol < lines[curRow].length) {
99
+ lines[curRow] = lines[curRow].substring(0, curCol) + lines[curRow].substring(curCol + 1);
100
+ }
101
+ else if (curRow < lines.length - 1) {
102
+ lines[curRow] += lines[curRow + 1];
103
+ lines.splice(curRow + 1, 1);
104
+ }
105
+ i++;
106
+ }
107
+ i += 2;
108
+ }
109
+ else {
110
+ // Plain Escape — cancel
111
+ cleanup(undefined);
112
+ return;
113
+ }
114
+ clamp();
115
+ render();
116
+ continue;
117
+ }
118
+ // Enter (CR) — new line
119
+ if (ch === 13) {
120
+ const after = lines[curRow].substring(curCol);
121
+ lines[curRow] = lines[curRow].substring(0, curCol);
122
+ lines.splice(curRow + 1, 0, after);
123
+ curRow++;
124
+ curCol = 0;
125
+ clamp();
126
+ render();
127
+ continue;
128
+ }
129
+ // Backspace
130
+ if (ch === 127) {
131
+ if (curCol > 0) {
132
+ lines[curRow] = lines[curRow].substring(0, curCol - 1) + lines[curRow].substring(curCol);
133
+ curCol--;
134
+ }
135
+ else if (curRow > 0) {
136
+ curCol = lines[curRow - 1].length;
137
+ lines[curRow - 1] += lines[curRow];
138
+ lines.splice(curRow, 1);
139
+ curRow--;
140
+ }
141
+ clamp();
142
+ render();
143
+ continue;
144
+ }
145
+ // Printable characters (ASCII + Unicode)
146
+ if (ch >= 32) {
147
+ lines[curRow] = lines[curRow].substring(0, curCol) + data[i] + lines[curRow].substring(curCol);
148
+ curCol++;
149
+ render();
150
+ }
151
+ }
152
+ }
153
+ process.stdin.on("data", onData);
154
+ });
155
+ }
156
+ //# sourceMappingURL=textarea.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"textarea.js","sourceRoot":"","sources":["../src/textarea.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@copilot-swarm/core",
3
- "version": "0.0.9",
3
+ "version": "0.0.10",
4
4
  "description": "Multi-agent orchestrator for GitHub Copilot — coordinates PM, designer, engineer, reviewer, and tester agents through a declarative pipeline",
5
5
  "license": "MIT",
6
6
  "type": "module",