bmalph 2.7.2 → 2.7.3

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 (40) hide show
  1. package/README.md +14 -4
  2. package/dist/commands/doctor-checks.js +17 -10
  3. package/dist/commands/doctor-checks.js.map +1 -1
  4. package/dist/run/ralph-process.js +101 -7
  5. package/dist/run/ralph-process.js.map +1 -1
  6. package/dist/transition/artifact-collection.js +74 -0
  7. package/dist/transition/artifact-collection.js.map +1 -0
  8. package/dist/transition/artifacts.js +12 -1
  9. package/dist/transition/artifacts.js.map +1 -1
  10. package/dist/transition/context.js +17 -25
  11. package/dist/transition/context.js.map +1 -1
  12. package/dist/transition/fix-plan.js +8 -3
  13. package/dist/transition/fix-plan.js.map +1 -1
  14. package/dist/transition/orchestration.js +176 -111
  15. package/dist/transition/orchestration.js.map +1 -1
  16. package/dist/transition/preflight.js +21 -16
  17. package/dist/transition/preflight.js.map +1 -1
  18. package/dist/transition/section-patterns.js +56 -4
  19. package/dist/transition/section-patterns.js.map +1 -1
  20. package/dist/transition/specs-index.js +5 -2
  21. package/dist/transition/specs-index.js.map +1 -1
  22. package/dist/transition/specs-sync.js +23 -0
  23. package/dist/transition/specs-sync.js.map +1 -0
  24. package/dist/transition/sprint-status.js +91 -0
  25. package/dist/transition/sprint-status.js.map +1 -0
  26. package/dist/transition/story-parsing.js +4 -3
  27. package/dist/transition/story-parsing.js.map +1 -1
  28. package/dist/transition/tech-stack.js +1 -7
  29. package/dist/transition/tech-stack.js.map +1 -1
  30. package/package.json +1 -1
  31. package/ralph/RALPH-REFERENCE.md +50 -46
  32. package/ralph/drivers/cursor-agent-wrapper.sh +13 -0
  33. package/ralph/drivers/cursor.sh +168 -7
  34. package/ralph/lib/circuit_breaker.sh +5 -5
  35. package/ralph/lib/enable_core.sh +10 -10
  36. package/ralph/ralph_import.sh +14 -10
  37. package/ralph/ralph_loop.sh +94 -57
  38. package/ralph/ralph_monitor.sh +4 -4
  39. package/ralph/templates/AGENT.md +7 -7
  40. package/ralph/templates/PROMPT.md +13 -13
package/README.md CHANGED
@@ -55,7 +55,7 @@ bmalph works with multiple AI coding assistants. Each platform gets BMAD plannin
55
55
  - Node.js 20+
56
56
  - Bash (WSL or Git Bash on Windows)
57
57
  - A supported AI coding platform (see table above)
58
- - For Ralph loop (Phase 4): Claude Code (`claude`), Codex CLI (`codex`), Copilot CLI (`copilot`), or Cursor CLI (`agent`) in PATH
58
+ - For Ralph loop (Phase 4): Claude Code (`claude`), Codex CLI (`codex`), Copilot CLI (`copilot`), or Cursor CLI (`cursor-agent`; older `agent` installs are also supported)
59
59
 
60
60
  ## Installation
61
61
 
@@ -175,7 +175,7 @@ Then start Ralph:
175
175
  bmalph run
176
176
  ```
177
177
 
178
- > **Advanced:** You can also run drivers directly with `bash .ralph/drivers/claude-code.sh`, `bash .ralph/drivers/codex.sh`, `bash .ralph/drivers/copilot.sh`, or `bash .ralph/drivers/cursor.sh`.
178
+ > **Advanced:** Ralph loads the platform drivers internally. Start the loop with `bmalph run`, or run `bash .ralph/ralph_loop.sh` directly if you need to bypass the CLI.
179
179
 
180
180
  Ralph picks stories one by one, implements with TDD, and commits. The loop stops when all stories are done or the circuit breaker triggers.
181
181
 
@@ -354,7 +354,8 @@ project/
354
354
  │ │ ├── claude-code.sh # Claude Code driver (uses `claude`)
355
355
  │ │ ├── codex.sh # OpenAI Codex driver (uses `codex exec`)
356
356
  │ │ ├── copilot.sh # GitHub Copilot driver (uses `copilot`, experimental)
357
- │ │ └── cursor.sh # Cursor driver (uses `agent`, experimental)
357
+ │ │ ├── cursor.sh # Cursor driver (uses `cursor-agent`/`agent`, experimental)
358
+ │ │ └── cursor-agent-wrapper.sh # Wrapper for Windows .cmd Cursor installs
358
359
  │ ├── lib/ # Shell libraries
359
360
  │ ├── docs/generated/ # Generated documentation
360
361
  │ ├── specs/ # Copied from _bmad-output during transition
@@ -382,7 +383,7 @@ Ralph is a bash loop that spawns fresh AI coding sessions using a **platform dri
382
383
  - **Claude Code driver** — invokes `claude` with `--allowedTools` and session resume
383
384
  - **Codex driver** — invokes `codex exec` with `--sandbox workspace-write`
384
385
  - **Copilot driver** _(experimental)_ — invokes `copilot --autopilot --yolo` with plain-text output
385
- - **Cursor driver** _(experimental)_ — invokes `agent --print --force` with NDJSON streaming
386
+ - **Cursor driver** _(experimental)_ — invokes `cursor-agent --print --force` (or compatible `agent` installs) with NDJSON streaming
386
387
 
387
388
  Each iteration:
388
389
 
@@ -410,6 +411,7 @@ Ralph requires bash to run. On Windows, install one of:
410
411
  ```bash
411
412
  # Install Git for Windows from https://git-scm.com/downloads
412
413
  # Git Bash is included and works well with bmalph
414
+ # bmalph prefers Git Bash over broken Windows bash.exe shims
413
415
  ```
414
416
 
415
417
  **WSL (Windows Subsystem for Linux)**
@@ -443,6 +445,14 @@ ls -la .ralph/
443
445
  | Wrong platform detected | Re-run `bmalph init --platform <id>` with the correct platform |
444
446
  | Ralph unavailable on platform | Ralph requires a full tier platform (claude-code, codex, copilot, or cursor) |
445
447
 
448
+ ### Windows: Cursor Driver
449
+
450
+ `bmalph run --driver cursor` is experimental on Windows and is designed for Git Bash.
451
+
452
+ - `bmalph` prefers a working Git Bash install instead of Windows `bash.exe` shims.
453
+ - The Cursor driver detects `cursor-agent`, `cursor-agent.cmd`, `agent`, `agent.cmd`, and `%LOCALAPPDATA%\\cursor-agent\\agent.cmd`.
454
+ - On Windows, the driver sends Cursor a short bootstrap prompt that tells it to read the Ralph files from `.ralph/` instead of trying to inline the full prompt on the command line.
455
+
446
456
  ### Reset Installation
447
457
 
448
458
  The simplest way to remove all bmalph files:
@@ -1,5 +1,6 @@
1
1
  import { readFile, stat } from "node:fs/promises";
2
2
  import { join } from "node:path";
3
+ import { resolveBashCommand } from "../run/ralph-process.js";
3
4
  import { readJsonFile } from "../utils/json.js";
4
5
  import { isEnoent, formatError } from "../utils/errors.js";
5
6
  import { CONFIG_FILE } from "../utils/constants.js";
@@ -24,17 +25,23 @@ export async function checkNodeVersion(_projectDir) {
24
25
  };
25
26
  }
26
27
  export async function checkBash(_projectDir) {
27
- const available = await checkCommandAvailable("bash");
28
- return {
29
- label: "bash available",
30
- passed: available,
31
- detail: available ? undefined : "bash not found in PATH",
32
- hint: available
33
- ? undefined
34
- : process.platform === "win32"
35
- ? "Install Git Bash or WSL: https://git-scm.com/downloads"
28
+ try {
29
+ await resolveBashCommand();
30
+ return {
31
+ label: "bash available",
32
+ passed: true,
33
+ };
34
+ }
35
+ catch (err) {
36
+ return {
37
+ label: "bash available",
38
+ passed: false,
39
+ detail: formatError(err),
40
+ hint: process.platform === "win32"
41
+ ? "Install Git Bash and ensure its bash.exe is available: https://git-scm.com/downloads"
36
42
  : "Install bash via your package manager (apt, brew, etc.)",
37
- };
43
+ };
44
+ }
38
45
  }
39
46
  export async function checkJq(_projectDir) {
40
47
  const available = await checkCommandAvailable("jq");
@@ -1 +1 @@
1
- {"version":3,"file":"doctor-checks.js","sourceRoot":"","sources":["../../src/commands/doctor-checks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"doctor-checks.js","sourceRoot":"","sources":["../../src/commands/doctor-checks.ts"],"names":[],"mappings":"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"}
@@ -1,15 +1,32 @@
1
- import { spawn } from "node:child_process";
1
+ import { execFileSync, spawn } from "node:child_process";
2
2
  import { join } from "node:path";
3
3
  import { RALPH_DIR } from "../utils/constants.js";
4
4
  import { exists } from "../utils/file-system.js";
5
5
  const RALPH_LOOP_PATH = `${RALPH_DIR}/ralph_loop.sh`;
6
6
  const BASH_RALPH_LOOP_PATH = `./${RALPH_LOOP_PATH}`;
7
+ const BASH_VALIDATION_TIMEOUT_MS = 3000;
8
+ const DEFAULT_WINDOWS_GIT_BASH_PATHS = [
9
+ "C:\\Program Files\\Git\\bin\\bash.exe",
10
+ "C:\\Program Files\\Git\\usr\\bin\\bash.exe",
11
+ "C:\\Program Files (x86)\\Git\\bin\\bash.exe",
12
+ "C:\\Program Files (x86)\\Git\\usr\\bin\\bash.exe",
13
+ ];
14
+ let cachedBashCommand;
15
+ export async function resolveBashCommand() {
16
+ if (cachedBashCommand) {
17
+ return cachedBashCommand;
18
+ }
19
+ const candidates = process.platform === "win32" ? getWindowsBashCandidates() : ["bash"];
20
+ for (const candidate of candidates) {
21
+ if (await canExecuteBash(candidate)) {
22
+ cachedBashCommand = candidate;
23
+ return candidate;
24
+ }
25
+ }
26
+ throw new Error(getMissingBashMessage());
27
+ }
7
28
  export async function validateBashAvailable() {
8
- return new Promise((resolve, reject) => {
9
- const child = spawn("bash", ["--version"], { stdio: "ignore" });
10
- child.on("close", () => resolve());
11
- child.on("error", () => reject(new Error("bash is not available. Install bash to run Ralph.")));
12
- });
29
+ await resolveBashCommand();
13
30
  }
14
31
  export async function validateRalphLoop(projectDir) {
15
32
  const loopPath = join(projectDir, RALPH_LOOP_PATH);
@@ -18,11 +35,12 @@ export async function validateRalphLoop(projectDir) {
18
35
  }
19
36
  }
20
37
  export function spawnRalphLoop(projectDir, platformId, options) {
21
- const child = spawn("bash", [BASH_RALPH_LOOP_PATH], {
38
+ const child = spawn(cachedBashCommand ?? "bash", [BASH_RALPH_LOOP_PATH], {
22
39
  cwd: projectDir,
23
40
  env: { ...process.env, PLATFORM_DRIVER: platformId },
24
41
  stdio: options.inheritStdio ? "inherit" : ["ignore", "pipe", "pipe"],
25
42
  detached: process.platform !== "win32",
43
+ windowsHide: true,
26
44
  });
27
45
  let state = "running";
28
46
  let exitCode = null;
@@ -92,4 +110,80 @@ export function spawnRalphLoop(projectDir, platformId, options) {
92
110
  },
93
111
  };
94
112
  }
113
+ function getWindowsBashCandidates() {
114
+ const discoveredPaths = [];
115
+ try {
116
+ const output = execFileSync("where", ["bash"], {
117
+ encoding: "utf8",
118
+ stdio: ["ignore", "pipe", "ignore"],
119
+ windowsHide: true,
120
+ });
121
+ for (const line of output.split(/\r?\n/)) {
122
+ const candidate = line.trim();
123
+ if (candidate.length === 0 || isWindowsBashShim(candidate)) {
124
+ continue;
125
+ }
126
+ discoveredPaths.push(candidate);
127
+ }
128
+ }
129
+ catch {
130
+ // Ignore failed discovery and fall back to common Git Bash locations.
131
+ }
132
+ return uniqueWindowsPaths([...discoveredPaths, ...DEFAULT_WINDOWS_GIT_BASH_PATHS]);
133
+ }
134
+ function isWindowsBashShim(candidate) {
135
+ const normalized = candidate.replaceAll("/", "\\").toLowerCase();
136
+ return (normalized.endsWith("\\windows\\system32\\bash.exe") ||
137
+ (normalized.includes("\\windowsapps\\") && normalized.endsWith("\\bash.exe")));
138
+ }
139
+ function uniqueWindowsPaths(paths) {
140
+ const seen = new Set();
141
+ const unique = [];
142
+ for (const path of paths) {
143
+ const normalized = path.trim();
144
+ if (normalized.length === 0) {
145
+ continue;
146
+ }
147
+ const key = normalized.toLowerCase();
148
+ if (seen.has(key)) {
149
+ continue;
150
+ }
151
+ seen.add(key);
152
+ unique.push(normalized);
153
+ }
154
+ return unique;
155
+ }
156
+ async function canExecuteBash(command) {
157
+ return new Promise((resolve) => {
158
+ const child = spawn(command, ["--version"], {
159
+ stdio: "ignore",
160
+ windowsHide: true,
161
+ });
162
+ let settled = false;
163
+ const finish = (result) => {
164
+ if (settled) {
165
+ return;
166
+ }
167
+ settled = true;
168
+ clearTimeout(timeoutId);
169
+ resolve(result);
170
+ };
171
+ const timeoutId = setTimeout(() => {
172
+ try {
173
+ child.kill();
174
+ }
175
+ catch {
176
+ // Ignore kill failures for already exited processes.
177
+ }
178
+ finish(false);
179
+ }, BASH_VALIDATION_TIMEOUT_MS);
180
+ child.on("close", (code) => finish(code === 0));
181
+ child.on("error", () => finish(false));
182
+ });
183
+ }
184
+ function getMissingBashMessage() {
185
+ return process.platform === "win32"
186
+ ? "bash is not available. Install Git Bash to run Ralph on Windows."
187
+ : "bash is not available. Install bash to run Ralph.";
188
+ }
95
189
  //# sourceMappingURL=ralph-process.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ralph-process.js","sourceRoot":"","sources":["../../src/run/ralph-process.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ralph-process.js","sourceRoot":"","sources":["../../src/run/ralph-process.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAGjD,MAAM,eAAe,GAAG,GAAG,SAAS,gBAAgB,CAAC;AACrD,MAAM,oBAAoB,GAAG,KAAK,eAAe,EAAE,CAAC;AACpD,MAAM,0BAA0B,GAAG,IAAI,CAAC;AACxC,MAAM,8BAA8B,GAAG;IACrC,uCAAuC;IACvC,4CAA4C;IAC5C,6CAA6C;IAC7C,kDAAkD;CAC1C,CAAC;AAEX,IAAI,iBAAqC,CAAC;AAE1C,MAAM,CAAC,KAAK,UAAU,kBAAkB;IACtC,IAAI,iBAAiB,EAAE,CAAC;QACtB,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IAED,MAAM,UAAU,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,wBAAwB,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IAExF,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,MAAM,cAAc,CAAC,SAAS,CAAC,EAAE,CAAC;YACpC,iBAAiB,GAAG,SAAS,CAAC;YAC9B,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,qBAAqB,EAAE,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB;IACzC,MAAM,kBAAkB,EAAE,CAAC;AAC7B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,UAAkB;IACxD,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;IACnD,IAAI,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,GAAG,eAAe,8BAA8B,CAAC,CAAC;IACpE,CAAC;AACH,CAAC;AAED,MAAM,UAAU,cAAc,CAC5B,UAAkB,EAClB,UAAkB,EAClB,OAAkC;IAElC,MAAM,KAAK,GAAG,KAAK,CAAC,iBAAiB,IAAI,MAAM,EAAE,CAAC,oBAAoB,CAAC,EAAE;QACvE,GAAG,EAAE,UAAU;QACf,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,eAAe,EAAE,UAAU,EAAE;QACpD,KAAK,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;QACpE,QAAQ,EAAE,OAAO,CAAC,QAAQ,KAAK,OAAO;QACtC,WAAW,EAAE,IAAI;KAClB,CAAC,CAAC;IAEH,IAAI,KAAK,GAAsB,SAAS,CAAC;IACzC,IAAI,QAAQ,GAAkB,IAAI,CAAC;IACnC,IAAI,aAAa,GAAyC,EAAE,CAAC;IAC7D,IAAI,MAAM,GAAG,KAAK,CAAC;IAEnB,MAAM,UAAU,GAAG,CAAC,IAAmB,EAAQ,EAAE;QAC/C,IAAI,MAAM;YAAE,OAAO;QACnB,KAAK,GAAG,SAAS,CAAC;QAClB,QAAQ,GAAG,IAAI,CAAC;QAChB,MAAM,GAAG,IAAI,CAAC;QACd,KAAK,MAAM,EAAE,IAAI,aAAa;YAAE,EAAE,CAAC,IAAI,CAAC,CAAC;QACzC,aAAa,GAAG,EAAE,CAAC;IACrB,CAAC,CAAC;IAEF,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9C,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;IAE1C,OAAO;QACL,IAAI,KAAK;YACP,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,KAAK;YACP,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,KAAK,CAAC,CAAoB;YAC5B,KAAK,GAAG,CAAC,CAAC;QACZ,CAAC;QACD,IAAI,QAAQ;YACV,OAAO,QAAQ,CAAC;QAClB,CAAC;QACD,IAAI,QAAQ,CAAC,CAAgB;YAC3B,QAAQ,GAAG,CAAC,CAAC;QACf,CAAC;QACD,IAAI;YACF,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC;gBAC9C,IAAI,CAAC;oBACH,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;gBACtC,CAAC;gBAAC,MAAM,CAAC;oBACP,IAAI,CAAC;wBACH,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oBACxB,CAAC;oBAAC,MAAM,CAAC;wBACP,8BAA8B;oBAChC,CAAC;gBACH,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACxB,CAAC;QACH,CAAC;QACD,MAAM;YACJ,KAAK,CAAC,KAAK,EAAE,CAAC;YACd,IAAI,KAAK,CAAC,MAAM;gBAAE,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACzC,IAAI,KAAK,CAAC,MAAM;gBAAE,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACzC,KAAK,GAAG,UAAU,CAAC;QACrB,CAAC;QACD,MAAM,CAAC,QAAQ;YACb,IAAI,MAAM,EAAE,CAAC;gBACX,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACrB,CAAC;iBAAM,CAAC;gBACN,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC;AAED,SAAS,wBAAwB;IAC/B,MAAM,eAAe,GAAa,EAAE,CAAC;IAErC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,EAAE;YAC7C,QAAQ,EAAE,MAAM;YAChB,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC;YACnC,WAAW,EAAE,IAAI;SAClB,CAAC,CAAC;QAEH,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;YACzC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;YAC9B,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,IAAI,iBAAiB,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC3D,SAAS;YACX,CAAC;YACD,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,sEAAsE;IACxE,CAAC;IAED,OAAO,kBAAkB,CAAC,CAAC,GAAG,eAAe,EAAE,GAAG,8BAA8B,CAAC,CAAC,CAAC;AACrF,CAAC;AAED,SAAS,iBAAiB,CAAC,SAAiB;IAC1C,MAAM,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;IACjE,OAAO,CACL,UAAU,CAAC,QAAQ,CAAC,+BAA+B,CAAC;QACpD,CAAC,UAAU,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAC9E,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAwB;IAClD,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC/B,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,SAAS;QACX,CAAC;QAED,MAAM,GAAG,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC;QACrC,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAClB,SAAS;QACX,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACd,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC1B,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,OAAe;IAC3C,OAAO,IAAI,OAAO,CAAU,CAAC,OAAO,EAAE,EAAE;QACtC,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,WAAW,CAAC,EAAE;YAC1C,KAAK,EAAE,QAAQ;YACf,WAAW,EAAE,IAAI;SAClB,CAAC,CAAC;QAEH,IAAI,OAAO,GAAG,KAAK,CAAC;QAEpB,MAAM,MAAM,GAAG,CAAC,MAAe,EAAQ,EAAE;YACvC,IAAI,OAAO,EAAE,CAAC;gBACZ,OAAO;YACT,CAAC;YAED,OAAO,GAAG,IAAI,CAAC;YACf,YAAY,CAAC,SAAS,CAAC,CAAC;YACxB,OAAO,CAAC,MAAM,CAAC,CAAC;QAClB,CAAC,CAAC;QAEF,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE;YAChC,IAAI,CAAC;gBACH,KAAK,CAAC,IAAI,EAAE,CAAC;YACf,CAAC;YAAC,MAAM,CAAC;gBACP,qDAAqD;YACvD,CAAC;YACD,MAAM,CAAC,KAAK,CAAC,CAAC;QAChB,CAAC,EAAE,0BAA0B,CAAC,CAAC;QAE/B,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;QAChD,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,qBAAqB;IAC5B,OAAO,OAAO,CAAC,QAAQ,KAAK,OAAO;QACjC,CAAC,CAAC,kEAAkE;QACpE,CAAC,CAAC,mDAAmD,CAAC;AAC1D,CAAC"}
@@ -0,0 +1,74 @@
1
+ function sortFiles(files) {
2
+ return [...files].sort((left, right) => left.localeCompare(right));
3
+ }
4
+ function isMarkdownFile(file) {
5
+ return /\.md$/i.test(file);
6
+ }
7
+ function hasSeparatedToken(file, expression) {
8
+ return new RegExp(`(?:^|[\\/._-])${expression}(?=$|[\\/._-])`, "i").test(file);
9
+ }
10
+ function isPrdPath(file) {
11
+ return hasSeparatedToken(file, "prd");
12
+ }
13
+ function isPrdFile(file) {
14
+ return isPrdPath(file) && isMarkdownFile(file);
15
+ }
16
+ function isPrdDocumentDirectory(segment) {
17
+ return isPrdPath(segment);
18
+ }
19
+ function isArchitectureFile(file) {
20
+ return /architect/i.test(file) && isMarkdownFile(file);
21
+ }
22
+ function isReadinessFile(file) {
23
+ return /readiness/i.test(file) && isMarkdownFile(file);
24
+ }
25
+ function isStoryFile(file) {
26
+ return ((hasSeparatedToken(file, "epics?") || hasSeparatedToken(file, "stor(?:y|ies)")) &&
27
+ isMarkdownFile(file));
28
+ }
29
+ function isSprintStatusFile(file) {
30
+ return /(?:^|\/)sprint[-_]status\.ya?ml$/i.test(file);
31
+ }
32
+ function topLevelSegment(file) {
33
+ return file.split("/")[0] ?? file;
34
+ }
35
+ function buildArtifactGroups(files, matchesGroupDirectory) {
36
+ const groupedFiles = new Map();
37
+ for (const file of files) {
38
+ const topLevel = topLevelSegment(file);
39
+ const key = file.includes("/") && matchesGroupDirectory(topLevel) ? topLevel : file;
40
+ const existingGroup = groupedFiles.get(key);
41
+ if (existingGroup) {
42
+ existingGroup.push(file);
43
+ continue;
44
+ }
45
+ groupedFiles.set(key, [file]);
46
+ }
47
+ return [...groupedFiles.entries()]
48
+ .map(([label, groupFiles]) => ({
49
+ label,
50
+ files: sortFiles(groupFiles),
51
+ }))
52
+ .sort((left, right) => left.label.localeCompare(right.label));
53
+ }
54
+ export function collectTransitionArtifacts(files) {
55
+ const sortedFiles = sortFiles(files);
56
+ const prdFiles = sortedFiles.filter(isPrdFile);
57
+ const sprintStatusFiles = sortedFiles.filter(isSprintStatusFile);
58
+ return {
59
+ files: sortedFiles,
60
+ prdFiles,
61
+ prdDocuments: buildArtifactGroups(prdFiles, isPrdDocumentDirectory),
62
+ architectureFiles: sortedFiles.filter(isArchitectureFile),
63
+ readinessFiles: sortedFiles.filter(isReadinessFile),
64
+ storyFiles: sortedFiles.filter(isStoryFile),
65
+ sprintStatusFile: sprintStatusFiles[0] ?? null,
66
+ };
67
+ }
68
+ export function combineArtifactContents(files, artifactContents) {
69
+ return files
70
+ .map((file) => artifactContents.get(file)?.trim())
71
+ .filter((content) => Boolean(content))
72
+ .join("\n\n");
73
+ }
74
+ //# sourceMappingURL=artifact-collection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"artifact-collection.js","sourceRoot":"","sources":["../../src/transition/artifact-collection.ts"],"names":[],"mappings":"AAeA,SAAS,SAAS,CAAC,KAAe;IAChC,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;AACrE,CAAC;AAED,SAAS,cAAc,CAAC,IAAY;IAClC,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7B,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAY,EAAE,UAAkB;IACzD,OAAO,IAAI,MAAM,CAAC,iBAAiB,UAAU,gBAAgB,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACjF,CAAC;AAED,SAAS,SAAS,CAAC,IAAY;IAC7B,OAAO,iBAAiB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACxC,CAAC;AAED,SAAS,SAAS,CAAC,IAAY;IAC7B,OAAO,SAAS,CAAC,IAAI,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC;AACjD,CAAC;AAED,SAAS,sBAAsB,CAAC,OAAe;IAC7C,OAAO,SAAS,CAAC,OAAO,CAAC,CAAC;AAC5B,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAY;IACtC,OAAO,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC;AACzD,CAAC;AAED,SAAS,eAAe,CAAC,IAAY;IACnC,OAAO,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC;AACzD,CAAC;AAED,SAAS,WAAW,CAAC,IAAY;IAC/B,OAAO,CACL,CAAC,iBAAiB,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,iBAAiB,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;QAC/E,cAAc,CAAC,IAAI,CAAC,CACrB,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAY;IACtC,OAAO,mCAAmC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACxD,CAAC;AAED,SAAS,eAAe,CAAC,IAAY;IACnC,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;AACpC,CAAC;AAED,SAAS,mBAAmB,CAC1B,KAAe,EACf,qBAAmD;IAEnD,MAAM,YAAY,GAAG,IAAI,GAAG,EAAoB,CAAC;IAEjD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,QAAQ,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;QACvC,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,qBAAqB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;QACpF,MAAM,aAAa,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAE5C,IAAI,aAAa,EAAE,CAAC;YAClB,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACzB,SAAS;QACX,CAAC;QAED,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAChC,CAAC;IAED,OAAO,CAAC,GAAG,YAAY,CAAC,OAAO,EAAE,CAAC;SAC/B,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC;QAC7B,KAAK;QACL,KAAK,EAAE,SAAS,CAAC,UAAU,CAAC;KAC7B,CAAC,CAAC;SACF,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;AAClE,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,KAAe;IACxD,MAAM,WAAW,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;IACrC,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAC/C,MAAM,iBAAiB,GAAG,WAAW,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;IAEjE,OAAO;QACL,KAAK,EAAE,WAAW;QAClB,QAAQ;QACR,YAAY,EAAE,mBAAmB,CAAC,QAAQ,EAAE,sBAAsB,CAAC;QACnE,iBAAiB,EAAE,WAAW,CAAC,MAAM,CAAC,kBAAkB,CAAC;QACzD,cAAc,EAAE,WAAW,CAAC,MAAM,CAAC,eAAe,CAAC;QACnD,UAAU,EAAE,WAAW,CAAC,MAAM,CAAC,WAAW,CAAC;QAC3C,gBAAgB,EAAE,iBAAiB,CAAC,CAAC,CAAC,IAAI,IAAI;KAC/C,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,KAAe,EACf,gBAA6C;IAE7C,OAAO,KAAK;SACT,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC;SACjD,MAAM,CAAC,CAAC,OAAO,EAAqB,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;SACxD,IAAI,CAAC,MAAM,CAAC,CAAC;AAClB,CAAC"}
@@ -1,4 +1,4 @@
1
- import { join } from "node:path";
1
+ import { join, relative } from "node:path";
2
2
  import { debug } from "../utils/logger.js";
3
3
  import { exists } from "../utils/file-system.js";
4
4
  export async function findArtifactsDir(projectDir) {
@@ -18,4 +18,15 @@ export async function findArtifactsDir(projectDir) {
18
18
  debug(`No artifacts found. Checked: ${candidates.join(", ")}`);
19
19
  return null;
20
20
  }
21
+ export function resolvePlanningSpecsSubpath(projectDir, artifactsDir) {
22
+ const bmadOutputDir = join(projectDir, "_bmad-output");
23
+ const relativePath = relative(bmadOutputDir, artifactsDir).replace(/\\/g, "/");
24
+ if (!relativePath || relativePath === "." || relativePath === "..") {
25
+ return "";
26
+ }
27
+ if (relativePath.startsWith("../")) {
28
+ return "";
29
+ }
30
+ return relativePath;
31
+ }
21
32
  //# sourceMappingURL=artifacts.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"artifacts.js","sourceRoot":"","sources":["../../src/transition/artifacts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAEjD,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,UAAkB;IACvD,MAAM,UAAU,GAAG;QACjB,iCAAiC;QACjC,iCAAiC;QACjC,eAAe;KAChB,CAAC;IAEF,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QAC7C,KAAK,CAAC,2BAA2B,QAAQ,EAAE,CAAC,CAAC;QAC7C,IAAI,MAAM,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC3B,KAAK,CAAC,uBAAuB,QAAQ,EAAE,CAAC,CAAC;YACzC,OAAO,QAAQ,CAAC;QAClB,CAAC;IACH,CAAC;IACD,KAAK,CAAC,gCAAgC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC/D,OAAO,IAAI,CAAC;AACd,CAAC"}
1
+ {"version":3,"file":"artifacts.js","sourceRoot":"","sources":["../../src/transition/artifacts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAEjD,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,UAAkB;IACvD,MAAM,UAAU,GAAG;QACjB,iCAAiC;QACjC,iCAAiC;QACjC,eAAe;KAChB,CAAC;IAEF,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QAC7C,KAAK,CAAC,2BAA2B,QAAQ,EAAE,CAAC,CAAC;QAC7C,IAAI,MAAM,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC3B,KAAK,CAAC,uBAAuB,QAAQ,EAAE,CAAC,CAAC;YACzC,OAAO,QAAQ,CAAC;QAClB,CAAC;IACH,CAAC;IACD,KAAK,CAAC,gCAAgC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC/D,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,UAAkB,EAAE,YAAoB;IAClF,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;IACvD,MAAM,YAAY,GAAG,QAAQ,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAE/E,IAAI,CAAC,YAAY,IAAI,YAAY,KAAK,GAAG,IAAI,YAAY,KAAK,IAAI,EAAE,CAAC;QACnE,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,YAAY,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QACnC,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO,YAAY,CAAC;AACtB,CAAC"}
@@ -1,5 +1,6 @@
1
- import { PRD_SCOPE_SECTION_PATTERNS } from "./section-patterns.js";
1
+ import { NON_FUNCTIONAL_REQUIREMENTS_SECTION_PATTERNS, PRD_SCOPE_SECTION_PATTERNS, PROJECT_GOALS_SECTION_PATTERNS, } from "./section-patterns.js";
2
2
  import { SECTION_EXTRACT_MAX_LENGTH } from "../utils/constants.js";
3
+ import { collectTransitionArtifacts } from "./artifact-collection.js";
3
4
  export function extractSection(content, headingPattern, maxLength = SECTION_EXTRACT_MAX_LENGTH) {
4
5
  return extractSectionWithInfo(content, headingPattern, maxLength).content;
5
6
  }
@@ -53,12 +54,13 @@ export function extractProjectContext(artifacts) {
53
54
  let archContent = "";
54
55
  let uxContent = "";
55
56
  let researchContent = "";
57
+ const collectedArtifacts = collectTransitionArtifacts([...artifacts.keys()]);
56
58
  for (const [filename, content] of artifacts) {
57
- if (/prd/i.test(filename))
59
+ if (collectedArtifacts.prdFiles.includes(filename))
58
60
  prdContent += "\n" + content;
59
- if (/architect/i.test(filename))
61
+ if (collectedArtifacts.architectureFiles.includes(filename))
60
62
  archContent += "\n" + content;
61
- if (/readiness/i.test(filename))
63
+ if (collectedArtifacts.readinessFiles.includes(filename))
62
64
  archContent += "\n" + content;
63
65
  if (/ux/i.test(filename))
64
66
  uxContent += "\n" + content;
@@ -71,12 +73,7 @@ export function extractProjectContext(artifacts) {
71
73
  {
72
74
  field: "projectGoals",
73
75
  source: prdContent || allContent,
74
- patterns: [
75
- /^##\s+Executive Summary/m,
76
- /^##\s+Vision/m,
77
- /^##\s+Goals/m,
78
- /^##\s+Project Goals/m,
79
- ],
76
+ patterns: [...PROJECT_GOALS_SECTION_PATTERNS],
80
77
  },
81
78
  {
82
79
  field: "successMetrics",
@@ -111,12 +108,7 @@ export function extractProjectContext(artifacts) {
111
108
  {
112
109
  field: "nonFunctionalRequirements",
113
110
  source: prdContent || allContent,
114
- patterns: [
115
- /^##\s+Non-Functional/m,
116
- /^##\s+NFR/m,
117
- /^##\s+Quality/m,
118
- /^##\s+Quality Attributes/m,
119
- ],
111
+ patterns: [...NON_FUNCTIONAL_REQUIREMENTS_SECTION_PATTERNS],
120
112
  },
121
113
  {
122
114
  field: "designGuidelines",
@@ -249,15 +241,15 @@ For each story in @fix_plan.md:
249
241
  ## Current Objectives
250
242
  1. Read .ralph/PROJECT_CONTEXT.md for project goals, constraints, and scope
251
243
  2. Read .ralph/SPECS_INDEX.md for prioritized spec file overview
252
- 3. Study .ralph/specs/ following the reading order in SPECS_INDEX.md:
253
- - planning-artifacts/: PRD, architecture, epics/stories, test design, UX
254
- - implementation-artifacts/: sprint plans, detailed stories (if present)
255
- - brainstorming/: brainstorming sessions (if present)
256
- 4. Check docs/ for project knowledge and research documents (if present)
257
- 5. Review .ralph/@fix_plan.md for current priorities
258
- 6. Implement the highest priority story using TDD
259
- 7. Run tests after each implementation
260
- 8. Update @fix_plan.md with your progress
244
+ 3. Study .ralph/specs/ following the reading order in SPECS_INDEX.md
245
+ 4. Use the exact spec paths listed in SPECS_INDEX.md instead of assuming a fixed subdirectory layout
246
+ 5. Prioritize planning specs first (PRD, architecture, epics/stories, test design, UX)
247
+ 6. Review implementation artifacts next (sprint plans, detailed stories) when they exist
248
+ 7. Check docs/ for project knowledge and research documents (if present)
249
+ 8. Review .ralph/@fix_plan.md for current priorities
250
+ 9. Implement the highest priority story using TDD
251
+ 10. Run tests after each implementation
252
+ 11. Update @fix_plan.md with your progress
261
253
 
262
254
  ## Key Principles
263
255
  - ONE story per loop - focus completely on it
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/transition/context.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/transition/context.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,8 @@
1
- export function generateFixPlan(stories, storiesFileName) {
1
+ function buildSpecPath(planningSpecsSubpath, fileName) {
2
+ const normalizedPath = [planningSpecsSubpath, fileName].filter(Boolean).join("/");
3
+ return `specs/${normalizedPath}`;
4
+ }
5
+ export function generateFixPlan(stories, storiesFileName, planningSpecsSubpath = "planning-artifacts") {
2
6
  const lines = ["# Ralph Fix Plan", "", "## Stories to Implement", ""];
3
7
  let currentEpic = "";
4
8
  for (const story of stories) {
@@ -25,8 +29,9 @@ export function generateFixPlan(stories, storiesFileName) {
25
29
  }
26
30
  // Add spec-link for easy reference to full story details
27
31
  const anchor = story.id.replace(".", "-");
28
- const fileName = storiesFileName ?? "stories.md";
29
- lines.push(` > Spec: specs/planning-artifacts/${fileName}#story-${anchor}`);
32
+ const fileName = storiesFileName || story.sourceFile || "stories.md";
33
+ const specPath = buildSpecPath(planningSpecsSubpath, fileName);
34
+ lines.push(` > Spec: ${specPath}#story-${anchor}`);
30
35
  }
31
36
  lines.push("", "## Completed", "", "## Notes", "- Follow TDD methodology (red-green-refactor)", "- One story per Ralph loop iteration", "- Update this file after completing each story", "");
32
37
  return lines.join("\n");
@@ -1 +1 @@
1
- {"version":3,"file":"fix-plan.js","sourceRoot":"","sources":["../../src/transition/fix-plan.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fix-plan.js","sourceRoot":"","sources":["../../src/transition/fix-plan.ts"],"names":[],"mappings":"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"}