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.
- package/README.md +14 -4
- package/dist/commands/doctor-checks.js +17 -10
- package/dist/commands/doctor-checks.js.map +1 -1
- package/dist/run/ralph-process.js +101 -7
- package/dist/run/ralph-process.js.map +1 -1
- package/dist/transition/artifact-collection.js +74 -0
- package/dist/transition/artifact-collection.js.map +1 -0
- package/dist/transition/artifacts.js +12 -1
- package/dist/transition/artifacts.js.map +1 -1
- package/dist/transition/context.js +17 -25
- package/dist/transition/context.js.map +1 -1
- package/dist/transition/fix-plan.js +8 -3
- package/dist/transition/fix-plan.js.map +1 -1
- package/dist/transition/orchestration.js +176 -111
- package/dist/transition/orchestration.js.map +1 -1
- package/dist/transition/preflight.js +21 -16
- package/dist/transition/preflight.js.map +1 -1
- package/dist/transition/section-patterns.js +56 -4
- package/dist/transition/section-patterns.js.map +1 -1
- package/dist/transition/specs-index.js +5 -2
- package/dist/transition/specs-index.js.map +1 -1
- package/dist/transition/specs-sync.js +23 -0
- package/dist/transition/specs-sync.js.map +1 -0
- package/dist/transition/sprint-status.js +91 -0
- package/dist/transition/sprint-status.js.map +1 -0
- package/dist/transition/story-parsing.js +4 -3
- package/dist/transition/story-parsing.js.map +1 -1
- package/dist/transition/tech-stack.js +1 -7
- package/dist/transition/tech-stack.js.map +1 -1
- package/package.json +1 -1
- package/ralph/RALPH-REFERENCE.md +50 -46
- package/ralph/drivers/cursor-agent-wrapper.sh +13 -0
- package/ralph/drivers/cursor.sh +168 -7
- package/ralph/lib/circuit_breaker.sh +5 -5
- package/ralph/lib/enable_core.sh +10 -10
- package/ralph/ralph_import.sh +14 -10
- package/ralph/ralph_loop.sh +94 -57
- package/ralph/ralph_monitor.sh +4 -4
- package/ralph/templates/AGENT.md +7 -7
- package/ralph/templates/PROMPT.md +13 -13
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"specs-index.js","sourceRoot":"","sources":["../../src/transition/specs-index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,2BAA2B,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,0BAA0B,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AAE/
|
|
1
|
+
{"version":3,"file":"specs-index.js","sourceRoot":"","sources":["../../src/transition/specs-index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,2BAA2B,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,0BAA0B,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AAC/F,OAAO,EACL,wCAAwC,EACxC,8BAA8B,EAC9B,kCAAkC,EAClC,iBAAiB,GAClB,MAAM,uBAAuB,CAAC;AAE/B;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,QAAgB,EAAE,OAAe;IAClE,MAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;IAErC,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACxC,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,cAAc,CAAC;IAClD,2FAA2F;IAC3F,IAAI,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,SAAS,CAAC;IAC3E,IAAI,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC;QAAE,OAAO,YAAY,CAAC;IACtD,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACtC,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,aAAa,CAAC;IAChD,IAAI,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC;QAAE,OAAO,WAAW,CAAC;IACpD,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAAE,OAAO,QAAQ,CAAC;IAE9C,OAAO,iBAAiB,CAAC,OAAO,CAAC,CAAC;AACpC,CAAC;AAED;;;GAGG;AACH,SAAS,iBAAiB,CAAC,OAAe;IACxC,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IAEvC,IACE,iBAAiB,CAAC,OAAO,EAAE,wCAAwC,CAAC;QACpE,iBAAiB,CAAC,OAAO,EAAE,8BAA8B,CAAC;QAE1D,OAAO,KAAK,CAAC;IACf,IACE,iBAAiB,CAAC,OAAO,EAAE,kCAAkC,CAAC;QAC9D,8BAA8B,CAAC,IAAI,CAAC,OAAO,CAAC;QAE5C,OAAO,cAAc,CAAC;IACxB,IAAI,2BAA2B,CAAC,IAAI,CAAC,OAAO,CAAC;QAAE,OAAO,SAAS,CAAC;IAChE,IAAI,0BAA0B,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,CAAC;IAC/F,IAAI,sBAAsB,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC;QAC3E,OAAO,aAAa,CAAC;IACvB,IAAI,wBAAwB,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC;QAC5E,OAAO,WAAW,CAAC;IACrB,IAAI,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,wBAAwB,CAAC,IAAI,CAAC,OAAO,CAAC;QAC/E,OAAO,UAAU,CAAC;IAEpB,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAkB;IAClD,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,KAAK,CAAC;QACX,KAAK,cAAc,CAAC;QACpB,KAAK,SAAS;YACZ,OAAO,UAAU,CAAC;QACpB,KAAK,aAAa,CAAC;QACnB,KAAK,WAAW,CAAC;QACjB,KAAK,UAAU;YACb,OAAO,MAAM,CAAC;QAChB,KAAK,IAAI,CAAC;QACV,KAAK,QAAQ;YACX,OAAO,QAAQ,CAAC;QAClB,KAAK,YAAY,CAAC;QAClB,KAAK,OAAO,CAAC;QACb;YACE,OAAO,KAAK,CAAC;IACjB,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAChC,OAAe,EACf,SAAS,GAAG,0BAA0B;IAEtC,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAC/B,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,CAAC;IAExB,kCAAkC;IAClC,MAAM,YAAY,GAAG,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACtD,IAAI,YAAY,EAAE,CAAC;QACjB,IAAI,OAAO,GAAG,YAAY,CAAC,CAAC,CAAE,CAAC;QAC/B,6BAA6B;QAC7B,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC;QACpD,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;QAChD,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;QAC9C,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;QAEzB,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,EAAE,CAAC;YAC/B,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;QACjD,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,oCAAoC;IACpC,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAE,CAAC,IAAI,EAAE,CAAC;IACjD,IAAI,SAAS,CAAC,MAAM,GAAG,SAAS,EAAE,CAAC;QACjC,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;IACnD,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,QAAgB;IACvD,MAAM,KAAK,GAAG,MAAM,2BAA2B,CAAC,QAAQ,CAAC,CAAC;IAE1D,MAAM,QAAQ,GAAuB,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACtD,MAAM,IAAI,GAAG,kBAAkB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACzD,MAAM,QAAQ,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;QACzC,MAAM,WAAW,GAAG,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAErD,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI;YACJ,QAAQ;YACR,WAAW;SACZ,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,4DAA4D;IAC5D,MAAM,aAAa,GAA6B;QAC9C,QAAQ,EAAE,CAAC;QACX,IAAI,EAAE,CAAC;QACP,MAAM,EAAE,CAAC;QACT,GAAG,EAAE,CAAC;KACP,CAAC;IAEF,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;IAE/E,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAE5D,OAAO;QACL,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACrC,UAAU,EAAE,KAAK,CAAC,MAAM;QACxB,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC;QACzC,KAAK,EAAE,QAAQ;KAChB,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAiB;IAClD,MAAM,KAAK,GAAa;QACtB,eAAe;QACf,EAAE;QACF,cAAc,KAAK,CAAC,WAAW,EAAE;QACjC,UAAU,KAAK,CAAC,UAAU,WAAW,KAAK,CAAC,WAAW,MAAM;QAC5D,EAAE;QACF,kBAAkB;QAClB,EAAE;KACH,CAAC;IAEF,MAAM,cAAc,GAAyC;QAC3D,EAAE,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,8BAA8B,EAAE;QAC5D,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,yCAAyC,EAAE;QACnE,EAAE,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,uCAAuC,EAAE;QACnE,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,yBAAyB,EAAE;KACnD,CAAC;IAEF,IAAI,UAAU,GAAG,CAAC,CAAC;IAEnB,KAAK,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,cAAc,EAAE,CAAC;QAC9C,MAAM,eAAe,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,GAAG,CAAC,CAAC;QAEtE,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QAE3C,KAAK,CAAC,IAAI,CAAC,OAAO,OAAO,EAAE,CAAC,CAAC;QAE7B,KAAK,MAAM,IAAI,IAAI,eAAe,EAAE,CAAC;YACnC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;YAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,IAAI,0BAA0B,CAAC;YAExD,IAAI,IAAI,GAAG,GAAG,UAAU,OAAO,IAAI,CAAC,IAAI,OAAO,MAAM,MAAM,CAAC;YAC5D,IAAI,OAAO,EAAE,CAAC;gBACZ,IAAI,IAAI,UAAU,CAAC;YACrB,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAEjB,kBAAkB;YAClB,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;gBACrB,IAAI,OAAO,EAAE,CAAC;oBACZ,KAAK,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,WAAW,yCAAyC,CAAC,CAAC;gBAC9E,CAAC;qBAAM,CAAC;oBACN,KAAK,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;gBACvC,CAAC;YACH,CAAC;YAED,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACf,UAAU,EAAE,CAAC;QACf,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { access, cp, mkdir, rm } from "node:fs/promises";
|
|
2
|
+
import { dirname, join } from "node:path";
|
|
3
|
+
import { exists } from "../utils/file-system.js";
|
|
4
|
+
import { resolvePlanningSpecsSubpath } from "./artifacts.js";
|
|
5
|
+
export async function prepareSpecsDirectory(projectDir, artifactsDir, artifactFiles, specsTmpDir) {
|
|
6
|
+
const bmadOutputDir = join(projectDir, "_bmad-output");
|
|
7
|
+
const bmadOutputExists = await exists(bmadOutputDir);
|
|
8
|
+
const planningSpecsSubpath = resolvePlanningSpecsSubpath(projectDir, artifactsDir);
|
|
9
|
+
await rm(specsTmpDir, { recursive: true, force: true });
|
|
10
|
+
await mkdir(specsTmpDir, { recursive: true });
|
|
11
|
+
if (bmadOutputExists) {
|
|
12
|
+
await cp(bmadOutputDir, specsTmpDir, { recursive: true, dereference: false });
|
|
13
|
+
}
|
|
14
|
+
for (const file of artifactFiles) {
|
|
15
|
+
const destinationPath = join(specsTmpDir, planningSpecsSubpath, file);
|
|
16
|
+
await mkdir(dirname(destinationPath), { recursive: true });
|
|
17
|
+
await cp(join(artifactsDir, file), destinationPath, {
|
|
18
|
+
dereference: false,
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
await access(specsTmpDir);
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=specs-sync.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"specs-sync.js","sourceRoot":"","sources":["../../src/transition/specs-sync.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACjD,OAAO,EAAE,2BAA2B,EAAE,MAAM,gBAAgB,CAAC;AAE7D,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,UAAkB,EAClB,YAAoB,EACpB,aAAgC,EAChC,WAAmB;IAEnB,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;IACvD,MAAM,gBAAgB,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;IACrD,MAAM,oBAAoB,GAAG,2BAA2B,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;IAEnF,MAAM,EAAE,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACxD,MAAM,KAAK,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE9C,IAAI,gBAAgB,EAAE,CAAC;QACrB,MAAM,EAAE,CAAC,aAAa,EAAE,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC;IAChF,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;QACjC,MAAM,eAAe,GAAG,IAAI,CAAC,WAAW,EAAE,oBAAoB,EAAE,IAAI,CAAC,CAAC;QACtE,MAAM,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3D,MAAM,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,EAAE,eAAe,EAAE;YAClD,WAAW,EAAE,KAAK;SACnB,CAAC,CAAC;IACL,CAAC;IAED,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC;AAC5B,CAAC"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
const STORY_STATUSES = new Set([
|
|
2
|
+
"backlog",
|
|
3
|
+
"ready-for-dev",
|
|
4
|
+
"in-progress",
|
|
5
|
+
"review",
|
|
6
|
+
"done",
|
|
7
|
+
"drafted",
|
|
8
|
+
]);
|
|
9
|
+
const EPIC_STATUSES = new Set(["backlog", "in-progress", "done", "contexted"]);
|
|
10
|
+
const RETROSPECTIVE_STATUSES = new Set(["optional", "done"]);
|
|
11
|
+
function parseIndentedEntry(line) {
|
|
12
|
+
const match = /^\s+([^:#]+):\s*([a-z-]+)\s*$/i.exec(line);
|
|
13
|
+
if (!match)
|
|
14
|
+
return null;
|
|
15
|
+
return {
|
|
16
|
+
key: match[1].trim(),
|
|
17
|
+
status: match[2].trim().toLowerCase(),
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
function storyIdFromKey(key) {
|
|
21
|
+
const match = /^(\d+)-(\d+)-.+$/.exec(key);
|
|
22
|
+
if (!match)
|
|
23
|
+
return null;
|
|
24
|
+
return `${match[1]}.${match[2]}`;
|
|
25
|
+
}
|
|
26
|
+
export function parseSprintStatus(content) {
|
|
27
|
+
const warnings = [];
|
|
28
|
+
const fatalWarnings = [];
|
|
29
|
+
const storyStatusById = new Map();
|
|
30
|
+
const lines = content.split(/\r?\n/);
|
|
31
|
+
const developmentStatusIndex = lines.findIndex((line) => /^development_status:\s*$/i.test(line));
|
|
32
|
+
if (developmentStatusIndex === -1) {
|
|
33
|
+
return {
|
|
34
|
+
storyStatusById,
|
|
35
|
+
warnings: ['Sprint status is missing a "development_status" section'],
|
|
36
|
+
valid: false,
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
for (const line of lines.slice(developmentStatusIndex + 1)) {
|
|
40
|
+
if (!line.trim() || /^\s*#/.test(line)) {
|
|
41
|
+
continue;
|
|
42
|
+
}
|
|
43
|
+
if (/^\S/.test(line)) {
|
|
44
|
+
break;
|
|
45
|
+
}
|
|
46
|
+
const entry = parseIndentedEntry(line);
|
|
47
|
+
if (!entry) {
|
|
48
|
+
fatalWarnings.push(`Sprint status entry could not be parsed: ${line.trim()}`);
|
|
49
|
+
continue;
|
|
50
|
+
}
|
|
51
|
+
if (entry.key.endsWith("-retrospective")) {
|
|
52
|
+
if (!RETROSPECTIVE_STATUSES.has(entry.status)) {
|
|
53
|
+
warnings.push(`Sprint retrospective entry "${entry.key}" has invalid status "${entry.status}"`);
|
|
54
|
+
}
|
|
55
|
+
continue;
|
|
56
|
+
}
|
|
57
|
+
if (entry.key.startsWith("epic-")) {
|
|
58
|
+
if (!EPIC_STATUSES.has(entry.status)) {
|
|
59
|
+
warnings.push(`Sprint epic entry "${entry.key}" has invalid status "${entry.status}"`);
|
|
60
|
+
}
|
|
61
|
+
continue;
|
|
62
|
+
}
|
|
63
|
+
if (!STORY_STATUSES.has(entry.status)) {
|
|
64
|
+
fatalWarnings.push(`Sprint story entry "${entry.key}" has invalid status "${entry.status}"`);
|
|
65
|
+
continue;
|
|
66
|
+
}
|
|
67
|
+
const storyId = storyIdFromKey(entry.key);
|
|
68
|
+
if (!storyId) {
|
|
69
|
+
fatalWarnings.push(`Sprint story entry "${entry.key}" does not match the expected N-M-name format`);
|
|
70
|
+
continue;
|
|
71
|
+
}
|
|
72
|
+
if (storyStatusById.has(storyId)) {
|
|
73
|
+
fatalWarnings.push(`Sprint story entry "${entry.key}" duplicates story ID "${storyId}"`);
|
|
74
|
+
continue;
|
|
75
|
+
}
|
|
76
|
+
storyStatusById.set(storyId, entry.status);
|
|
77
|
+
}
|
|
78
|
+
if (fatalWarnings.length > 0) {
|
|
79
|
+
return {
|
|
80
|
+
storyStatusById: new Map(),
|
|
81
|
+
warnings: [...warnings, ...fatalWarnings],
|
|
82
|
+
valid: false,
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
return {
|
|
86
|
+
storyStatusById,
|
|
87
|
+
warnings,
|
|
88
|
+
valid: true,
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=sprint-status.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sprint-status.js","sourceRoot":"","sources":["../../src/transition/sprint-status.ts"],"names":[],"mappings":"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"}
|
|
@@ -51,10 +51,10 @@ function parseAcBlocks(lines) {
|
|
|
51
51
|
}
|
|
52
52
|
return criteria;
|
|
53
53
|
}
|
|
54
|
-
export function parseStories(content) {
|
|
55
|
-
return parseStoriesWithWarnings(content).stories;
|
|
54
|
+
export function parseStories(content, sourceFile = "stories.md") {
|
|
55
|
+
return parseStoriesWithWarnings(content, sourceFile).stories;
|
|
56
56
|
}
|
|
57
|
-
export function parseStoriesWithWarnings(content) {
|
|
57
|
+
export function parseStoriesWithWarnings(content, sourceFile = "stories.md") {
|
|
58
58
|
const stories = [];
|
|
59
59
|
const warnings = [];
|
|
60
60
|
let currentEpic = "";
|
|
@@ -129,6 +129,7 @@ export function parseStoriesWithWarnings(content) {
|
|
|
129
129
|
title,
|
|
130
130
|
description: descLines.join(" "),
|
|
131
131
|
acceptanceCriteria,
|
|
132
|
+
sourceFile,
|
|
132
133
|
});
|
|
133
134
|
}
|
|
134
135
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"story-parsing.js","sourceRoot":"","sources":["../../src/transition/story-parsing.ts"],"names":[],"mappings":"AAEA,uEAAuE;AACvE,MAAM,kBAAkB,GAAG,yCAAyC,CAAC;AACrE,MAAM,uBAAuB,GAAG,yDAAyD,CAAC;AAC1F,MAAM,YAAY,GAAG,OAAO,CAAC;AAC7B,MAAM,mBAAmB,GAAG,0BAA0B,CAAC;AACvD,MAAM,eAAe,GAAG,WAAW,CAAC;AACpC,MAAM,oBAAoB,GAAG,iCAAiC,CAAC;AAC/D,MAAM,gBAAgB,GAAG,YAAY,CAAC;AACtC,MAAM,kBAAkB,GAAG,qCAAqC,CAAC;AAOjE,SAAS,WAAW,CAAC,IAAY;IAC/B,OAAO,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;AAC9C,CAAC;AAED,SAAS,eAAe,CAAC,IAAY;IACnC,OAAO,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;AACnD,CAAC;AAED,SAAS,SAAS,CAAC,IAAY;IAC7B,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;AACxC,CAAC;AAED,SAAS,eAAe,CAAC,IAAY;IACnC,OAAO,SAAS,CAAC,IAAI,CAAC;SACnB,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;SACvB,IAAI,EAAE,CAAC;AACZ,CAAC;AAED,SAAS,oBAAoB,CAAC,IAAY;IACxC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC5B,OAAO,CACL,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,CAC9F,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,KAAe;IACpC,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,IAAI,OAAO,GAAa,EAAE,CAAC;IAE3B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,CAAC,OAAO;YAAE,SAAS;QAEvB,IAAI,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC;YACzB,4BAA4B;YAC5B,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvB,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YACpC,CAAC;YACD,OAAO,GAAG,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC;QACvC,CAAC;aAAM,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC;YAC1D,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC;QACzC,CAAC;aAAM,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5D,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACpC,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,OAAe;
|
|
1
|
+
{"version":3,"file":"story-parsing.js","sourceRoot":"","sources":["../../src/transition/story-parsing.ts"],"names":[],"mappings":"AAEA,uEAAuE;AACvE,MAAM,kBAAkB,GAAG,yCAAyC,CAAC;AACrE,MAAM,uBAAuB,GAAG,yDAAyD,CAAC;AAC1F,MAAM,YAAY,GAAG,OAAO,CAAC;AAC7B,MAAM,mBAAmB,GAAG,0BAA0B,CAAC;AACvD,MAAM,eAAe,GAAG,WAAW,CAAC;AACpC,MAAM,oBAAoB,GAAG,iCAAiC,CAAC;AAC/D,MAAM,gBAAgB,GAAG,YAAY,CAAC;AACtC,MAAM,kBAAkB,GAAG,qCAAqC,CAAC;AAOjE,SAAS,WAAW,CAAC,IAAY;IAC/B,OAAO,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;AAC9C,CAAC;AAED,SAAS,eAAe,CAAC,IAAY;IACnC,OAAO,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;AACnD,CAAC;AAED,SAAS,SAAS,CAAC,IAAY;IAC7B,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;AACxC,CAAC;AAED,SAAS,eAAe,CAAC,IAAY;IACnC,OAAO,SAAS,CAAC,IAAI,CAAC;SACnB,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;SACvB,IAAI,EAAE,CAAC;AACZ,CAAC;AAED,SAAS,oBAAoB,CAAC,IAAY;IACxC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC5B,OAAO,CACL,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,CAC9F,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,KAAe;IACpC,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,IAAI,OAAO,GAAa,EAAE,CAAC;IAE3B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,CAAC,OAAO;YAAE,SAAS;QAEvB,IAAI,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC;YACzB,4BAA4B;YAC5B,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvB,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YACpC,CAAC;YACD,OAAO,GAAG,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC;QACvC,CAAC;aAAM,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC;YAC1D,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC;QACzC,CAAC;aAAM,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5D,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACpC,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,OAAe,EAAE,UAAU,GAAG,YAAY;IACrE,OAAO,wBAAwB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,OAAO,CAAC;AAC/D,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,OAAe,EACf,UAAU,GAAG,YAAY;IAEzB,MAAM,OAAO,GAAY,EAAE,CAAC;IAC5B,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,IAAI,WAAW,GAAG,EAAE,CAAC;IACrB,IAAI,sBAAsB,GAAG,EAAE,CAAC;IAEhC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAElC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAEtB,uCAAuC;QACvC,MAAM,SAAS,GAAG,IAAI,EAAE,KAAK,CAAC,mBAAmB,CAAC,CAAC;QACnD,IAAI,SAAS,EAAE,CAAC;YACd,WAAW,GAAG,SAAS,CAAC,CAAC,CAAE,CAAC,IAAI,EAAE,CAAC;YACnC,+EAA+E;YAC/E,MAAM,SAAS,GAAa,EAAE,CAAC;YAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC1C,IAAI,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC;oBAAE,MAAM;gBAC3C,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC,IAAI,EAAE,CAAC;gBACjC,IAAI,OAAO;oBAAE,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACvC,CAAC;YACD,sBAAsB,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC7C,SAAS;QACX,CAAC;QAED,4CAA4C;QAC5C,MAAM,UAAU,GAAG,IAAI,EAAE,KAAK,CAAC,oBAAoB,CAAC,CAAC;QACrD,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,EAAE,GAAG,UAAU,CAAC,CAAC,CAAE,CAAC;YAC1B,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,CAAE,CAAC,IAAI,EAAE,CAAC;YAEpC,+DAA+D;YAC/D,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;gBAC/B,QAAQ,CAAC,IAAI,CAAC,UAAU,KAAK,uBAAuB,EAAE,0BAA0B,CAAC,CAAC;YACpF,CAAC;YAED,4CAA4C;YAC5C,MAAM,SAAS,GAAa,EAAE,CAAC;YAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC1C,IAAI,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC;oBAAE,MAAM;gBAC3C,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC;YAC5B,CAAC;YAED,sFAAsF;YACtF,IAAI,YAAY,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YAEjF,IAAI,YAAY,KAAK,CAAC,CAAC,EAAE,CAAC;gBACxB,kDAAkD;gBAClD,YAAY,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5D,CAAC;YAED,6CAA6C;YAC7C,MAAM,UAAU,GAAG,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YACpF,MAAM,SAAS,GAAa,EAAE,CAAC;YAC/B,KAAK,MAAM,EAAE,IAAI,UAAU,EAAE,CAAC;gBAC5B,IAAI,EAAE,CAAC,IAAI,EAAE;oBAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;YAC3C,CAAC;YAED,kDAAkD;YAClD,MAAM,OAAO,GAAG,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACvE,MAAM,kBAAkB,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;YAElD,sDAAsD;YACtD,IAAI,kBAAkB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACpC,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,KAAK,8BAA8B,CAAC,CAAC;YACtE,CAAC;YAED,2CAA2C;YAC3C,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC3B,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,KAAK,sBAAsB,CAAC,CAAC;YAC9D,CAAC;YAED,6CAA6C;YAC7C,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,KAAK,wBAAwB,CAAC,CAAC;YAChE,CAAC;YAED,OAAO,CAAC,IAAI,CAAC;gBACX,IAAI,EAAE,WAAW;gBACjB,eAAe,EAAE,sBAAsB;gBACvC,EAAE;gBACF,KAAK;gBACL,WAAW,EAAE,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC;gBAChC,kBAAkB;gBAClB,UAAU;aACX,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;AAC/B,CAAC"}
|
|
@@ -1,11 +1,5 @@
|
|
|
1
1
|
import { extractFirstMatchingSection } from "./context.js";
|
|
2
|
-
|
|
3
|
-
/^##\s+Tech Stack/m,
|
|
4
|
-
/^##\s+Technology Stack/m,
|
|
5
|
-
/^##\s+Stack/m,
|
|
6
|
-
/^##\s+Core Architectural Decisions/m,
|
|
7
|
-
/^##\s+Starter Template Evaluation/m,
|
|
8
|
-
];
|
|
2
|
+
import { TECH_STACK_SOURCE_SECTION_PATTERNS } from "./section-patterns.js";
|
|
9
3
|
export function extractTechStackSource(content) {
|
|
10
4
|
return extractFirstMatchingSection(content, TECH_STACK_SOURCE_SECTION_PATTERNS, Number.POSITIVE_INFINITY).trim();
|
|
11
5
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tech-stack.js","sourceRoot":"","sources":["../../src/transition/tech-stack.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,2BAA2B,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"tech-stack.js","sourceRoot":"","sources":["../../src/transition/tech-stack.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/ralph/RALPH-REFERENCE.md
CHANGED
|
@@ -2,10 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
This reference guide provides essential information for troubleshooting and understanding Ralph's autonomous development loop.
|
|
4
4
|
|
|
5
|
+
In bmalph-managed projects, start Ralph with `bmalph run`. When you need direct loop flags such as `--reset-circuit` or `--live`, invoke `bash .ralph/ralph_loop.sh ...` from the project root.
|
|
6
|
+
|
|
5
7
|
## Table of Contents
|
|
6
8
|
|
|
7
9
|
1. [Configuration Files](#configuration-files)
|
|
8
|
-
2. [Project Configuration (.ralphrc)](#project-configuration-
|
|
10
|
+
2. [Project Configuration (.ralph/.ralphrc)](#project-configuration-ralphralphrc)
|
|
9
11
|
3. [Session Management](#session-management)
|
|
10
12
|
4. [Circuit Breaker](#circuit-breaker)
|
|
11
13
|
5. [Exit Detection](#exit-detection)
|
|
@@ -16,12 +18,12 @@ This reference guide provides essential information for troubleshooting and unde
|
|
|
16
18
|
|
|
17
19
|
## Configuration Files
|
|
18
20
|
|
|
19
|
-
Ralph uses several files within the `.ralph/` directory:
|
|
21
|
+
Ralph uses several files within the `.ralph/` directory, plus an optional legacy fallback config at the project root:
|
|
20
22
|
|
|
21
23
|
| File | Purpose |
|
|
22
24
|
|------|---------|
|
|
23
25
|
| `.ralph/PROMPT.md` | Main prompt that drives each loop iteration |
|
|
24
|
-
| `.ralph
|
|
26
|
+
| `.ralph/@fix_plan.md` | Prioritized task list that Ralph follows |
|
|
25
27
|
| `.ralph/@AGENT.md` | Build and run instructions maintained by Ralph |
|
|
26
28
|
| `.ralph/status.json` | Real-time status tracking (JSON format) |
|
|
27
29
|
| `.ralph/logs/` | Execution logs for each loop iteration |
|
|
@@ -29,23 +31,25 @@ Ralph uses several files within the `.ralph/` directory:
|
|
|
29
31
|
| `.ralph/.circuit_breaker_state` | Circuit breaker state |
|
|
30
32
|
| `.ralph/live.log` | Live streaming output file for monitoring |
|
|
31
33
|
| `.ralph/.loop_start_sha` | Git HEAD SHA captured at loop start for progress detection |
|
|
32
|
-
| `.ralphrc`
|
|
34
|
+
| `.ralph/.ralphrc` | Project-specific configuration installed by bmalph |
|
|
35
|
+
| `.ralphrc` (project root, legacy fallback) | Optional legacy configuration for older standalone Ralph layouts |
|
|
33
36
|
|
|
34
37
|
### Rate Limiting
|
|
35
38
|
|
|
36
|
-
- Default: 100 API calls per hour (configurable via `--calls` flag or `.ralphrc`)
|
|
39
|
+
- Default: 100 API calls per hour (configurable via `--calls` flag or `.ralph/.ralphrc`)
|
|
37
40
|
- Automatic hourly reset with countdown display
|
|
38
41
|
- Call tracking persists across script restarts
|
|
39
42
|
|
|
40
43
|
---
|
|
41
44
|
|
|
42
|
-
## Project Configuration (.ralphrc)
|
|
45
|
+
## Project Configuration (.ralph/.ralphrc)
|
|
43
46
|
|
|
44
|
-
Ralph
|
|
47
|
+
In bmalph-managed projects, Ralph reads `.ralph/.ralphrc` for per-project settings.
|
|
48
|
+
For backward compatibility with older standalone Ralph layouts, it also falls back to a project-root `.ralphrc` when the bundled config file is missing.
|
|
45
49
|
|
|
46
50
|
### Precedence
|
|
47
51
|
|
|
48
|
-
Environment variables >
|
|
52
|
+
Environment variables > Ralph config file > script defaults
|
|
49
53
|
|
|
50
54
|
### Available Settings
|
|
51
55
|
|
|
@@ -54,7 +58,7 @@ Environment variables > `.ralphrc` > script defaults
|
|
|
54
58
|
| `PROJECT_NAME` | `my-project` | Project name for prompts and logging |
|
|
55
59
|
| `PROJECT_TYPE` | `unknown` | Project type (javascript, typescript, python, rust, go) |
|
|
56
60
|
| `MAX_CALLS_PER_HOUR` | `100` | Rate limit for API calls |
|
|
57
|
-
| `CLAUDE_TIMEOUT_MINUTES` | `15` | Timeout per
|
|
61
|
+
| `CLAUDE_TIMEOUT_MINUTES` | `15` | Timeout per loop driver invocation |
|
|
58
62
|
| `CLAUDE_OUTPUT_FORMAT` | `json` | Output format (json or text) |
|
|
59
63
|
| `ALLOWED_TOOLS` | `Write,Read,Edit,Bash(git *),Bash(npm *),Bash(pytest)` | Comma-separated allowed tools |
|
|
60
64
|
| `SESSION_CONTINUITY` | `true` | Maintain context across loops |
|
|
@@ -69,7 +73,7 @@ Environment variables > `.ralphrc` > script defaults
|
|
|
69
73
|
|
|
70
74
|
### Generation
|
|
71
75
|
|
|
72
|
-
bmalph copies `ralphrc.template` to `.ralph/.ralphrc` during `bmalph init`. Existing `.ralphrc` files are preserved during upgrades.
|
|
76
|
+
bmalph copies `ralphrc.template` to `.ralph/.ralphrc` during `bmalph init`. Existing `.ralph/.ralphrc` files are preserved during upgrades.
|
|
73
77
|
|
|
74
78
|
---
|
|
75
79
|
|
|
@@ -79,7 +83,7 @@ Ralph maintains session continuity across loop iterations using `--resume` with
|
|
|
79
83
|
|
|
80
84
|
### Session Continuity
|
|
81
85
|
|
|
82
|
-
Ralph uses `--resume <session_id>` instead of `--continue` to resume sessions. This ensures Ralph only resumes its own sessions and avoids hijacking active
|
|
86
|
+
Ralph uses `--resume <session_id>` instead of `--continue` to resume sessions. This ensures Ralph only resumes its own saved sessions and avoids hijacking unrelated active sessions.
|
|
83
87
|
|
|
84
88
|
### Session Files
|
|
85
89
|
|
|
@@ -87,7 +91,7 @@ Ralph uses `--resume <session_id>` instead of `--continue` to resume sessions. T
|
|
|
87
91
|
|------|---------|
|
|
88
92
|
| `.ralph/.ralph_session` | Current session ID and timestamps |
|
|
89
93
|
| `.ralph/.ralph_session_history` | History of last 50 session transitions |
|
|
90
|
-
| `.ralph/.claude_session_id` |
|
|
94
|
+
| `.ralph/.claude_session_id` | Persisted driver session ID (shared filename for historical reasons) |
|
|
91
95
|
|
|
92
96
|
### Session Lifecycle
|
|
93
97
|
|
|
@@ -95,12 +99,12 @@ Sessions are automatically reset when:
|
|
|
95
99
|
- Circuit breaker opens (stagnation detected)
|
|
96
100
|
- Manual interrupt (Ctrl+C / SIGINT)
|
|
97
101
|
- Project completion (graceful exit)
|
|
98
|
-
- Manual circuit breaker reset (`ralph --reset-circuit`)
|
|
99
|
-
- Manual session reset (`ralph --reset-session`)
|
|
102
|
+
- Manual circuit breaker reset (`bash .ralph/ralph_loop.sh --reset-circuit`)
|
|
103
|
+
- Manual session reset (`bash .ralph/ralph_loop.sh --reset-session`)
|
|
100
104
|
|
|
101
105
|
### Session Expiration
|
|
102
106
|
|
|
103
|
-
Sessions expire after 24 hours (configurable via `SESSION_EXPIRY_HOURS` in `.ralphrc`). When expired:
|
|
107
|
+
Sessions expire after 24 hours (configurable via `SESSION_EXPIRY_HOURS` in `.ralph/.ralphrc`). When expired:
|
|
104
108
|
- A new session is created automatically
|
|
105
109
|
- Previous context is not preserved
|
|
106
110
|
- Session history records the transition
|
|
@@ -144,16 +148,16 @@ The circuit breaker prevents runaway loops by detecting stagnation.
|
|
|
144
148
|
|
|
145
149
|
### Permission Denial Detection
|
|
146
150
|
|
|
147
|
-
When
|
|
151
|
+
When the active driver is denied permission to execute commands, Ralph:
|
|
148
152
|
1. Detects permission denials from the JSON output
|
|
149
153
|
2. Halts the loop with reason `permission_denied`
|
|
150
|
-
3. Displays guidance to update `ALLOWED_TOOLS` in `.ralphrc`
|
|
154
|
+
3. Displays guidance to update `ALLOWED_TOOLS` in `.ralph/.ralphrc`
|
|
151
155
|
|
|
152
156
|
### Auto-Recovery Cooldown
|
|
153
157
|
|
|
154
158
|
After `CB_COOLDOWN_MINUTES` (default: 30) in OPEN state, the circuit auto-transitions to HALF_OPEN. From HALF_OPEN, if progress is detected, circuit goes to CLOSED; otherwise back to OPEN.
|
|
155
159
|
|
|
156
|
-
Set `CB_AUTO_RESET=true` in `.ralphrc` to bypass cooldown entirely and reset to CLOSED on startup.
|
|
160
|
+
Set `CB_AUTO_RESET=true` in `.ralph/.ralphrc` to bypass cooldown entirely and reset to CLOSED on startup.
|
|
157
161
|
|
|
158
162
|
### Circuit Breaker State Structure
|
|
159
163
|
|
|
@@ -175,7 +179,7 @@ Set `CB_AUTO_RESET=true` in `.ralphrc` to bypass cooldown entirely and reset to
|
|
|
175
179
|
|
|
176
180
|
To reset the circuit breaker:
|
|
177
181
|
```bash
|
|
178
|
-
ralph --reset-circuit
|
|
182
|
+
bash .ralph/ralph_loop.sh --reset-circuit
|
|
179
183
|
```
|
|
180
184
|
|
|
181
185
|
---
|
|
@@ -200,17 +204,17 @@ The `completion_indicators` exit condition requires dual verification:
|
|
|
200
204
|
| completion_indicators | EXIT_SIGNAL | Result |
|
|
201
205
|
|-----------------------|-------------|--------|
|
|
202
206
|
| >= 2 | `true` | **Exit** ("project_complete") |
|
|
203
|
-
| >= 2 | `false` | **Continue** (
|
|
207
|
+
| >= 2 | `false` | **Continue** (agent still working) |
|
|
204
208
|
| >= 2 | missing | **Continue** (defaults to false) |
|
|
205
209
|
| < 2 | `true` | **Continue** (threshold not met) |
|
|
206
210
|
|
|
207
|
-
**Rationale:** Natural language patterns like "done" or "complete" can trigger false positives during productive work. By requiring
|
|
211
|
+
**Rationale:** Natural language patterns like "done" or "complete" can trigger false positives during productive work. By requiring an explicit `EXIT_SIGNAL` confirmation, Ralph avoids exiting mid-iteration.
|
|
208
212
|
|
|
209
|
-
When
|
|
213
|
+
When the agent outputs `STATUS: COMPLETE` with `EXIT_SIGNAL: false`, the explicit `false` takes precedence. This allows marking a phase complete while indicating more phases remain.
|
|
210
214
|
|
|
211
215
|
### RALPH_STATUS Block
|
|
212
216
|
|
|
213
|
-
|
|
217
|
+
The coding agent should include this status block at the end of each response:
|
|
214
218
|
|
|
215
219
|
```
|
|
216
220
|
---RALPH_STATUS---
|
|
@@ -227,7 +231,7 @@ RECOMMENDATION: <one line summary of what to do next>
|
|
|
227
231
|
### When to Set EXIT_SIGNAL: true
|
|
228
232
|
|
|
229
233
|
Set EXIT_SIGNAL to **true** when ALL conditions are met:
|
|
230
|
-
1. All items in fix_plan.md are marked [x]
|
|
234
|
+
1. All items in `@fix_plan.md` are marked `[x]`
|
|
231
235
|
2. All tests are passing (or no tests exist for valid reasons)
|
|
232
236
|
3. No errors or warnings in the last execution
|
|
233
237
|
4. All requirements from specs/ are implemented
|
|
@@ -246,8 +250,8 @@ Ralph supports real-time streaming output with the `--live` flag.
|
|
|
246
250
|
### Usage
|
|
247
251
|
|
|
248
252
|
```bash
|
|
249
|
-
ralph --live # Live streaming output
|
|
250
|
-
ralph --monitor --live # Live streaming with tmux monitoring
|
|
253
|
+
bash .ralph/ralph_loop.sh --live # Live streaming output
|
|
254
|
+
bash .ralph/ralph_loop.sh --monitor --live # Live streaming with tmux monitoring
|
|
251
255
|
```
|
|
252
256
|
|
|
253
257
|
### How It Works
|
|
@@ -260,8 +264,8 @@ ralph --monitor --live # Live streaming with tmux monitoring
|
|
|
260
264
|
|
|
261
265
|
When using `--monitor` with `--live`, tmux creates a 3-pane layout:
|
|
262
266
|
- **Left pane:** Ralph loop with live streaming
|
|
263
|
-
- **Right-top pane:** `tail -f .ralph/live.log` (
|
|
264
|
-
- **Right-bottom pane:** `
|
|
267
|
+
- **Right-top pane:** `tail -f .ralph/live.log` (live driver output)
|
|
268
|
+
- **Right-bottom pane:** status dashboard (`bmalph watch` when available)
|
|
265
269
|
|
|
266
270
|
---
|
|
267
271
|
|
|
@@ -276,11 +280,11 @@ When using `--monitor` with `--live`, tmux creates a 3-pane layout:
|
|
|
276
280
|
**Causes:**
|
|
277
281
|
- EXIT_SIGNAL set to true prematurely
|
|
278
282
|
- completion_indicators triggered by natural language
|
|
279
|
-
- All fix_plan.md items marked complete
|
|
283
|
+
- All `@fix_plan.md` items marked complete
|
|
280
284
|
|
|
281
285
|
**Solutions:**
|
|
282
286
|
1. Ensure EXIT_SIGNAL is only true when genuinely complete
|
|
283
|
-
2. Add remaining tasks to fix_plan.md
|
|
287
|
+
2. Add remaining tasks to `@fix_plan.md`
|
|
284
288
|
3. Check `.ralph/.response_analysis` for exit reasons
|
|
285
289
|
|
|
286
290
|
#### Ralph doesn't exit when complete
|
|
@@ -289,13 +293,13 @@ When using `--monitor` with `--live`, tmux creates a 3-pane layout:
|
|
|
289
293
|
|
|
290
294
|
**Causes:**
|
|
291
295
|
- EXIT_SIGNAL not being set to true
|
|
292
|
-
- fix_plan.md has unmarked items
|
|
296
|
+
- `@fix_plan.md` has unmarked items
|
|
293
297
|
- completion_indicators threshold not met
|
|
294
298
|
|
|
295
299
|
**Solutions:**
|
|
296
300
|
1. Ensure RALPH_STATUS block is included in responses
|
|
297
301
|
2. Set EXIT_SIGNAL: true when all work is done
|
|
298
|
-
3. Mark all completed items in fix_plan.md
|
|
302
|
+
3. Mark all completed items in `@fix_plan.md`
|
|
299
303
|
|
|
300
304
|
#### Circuit breaker opens unexpectedly
|
|
301
305
|
|
|
@@ -309,19 +313,19 @@ When using `--monitor` with `--live`, tmux creates a 3-pane layout:
|
|
|
309
313
|
**Solutions:**
|
|
310
314
|
1. Check `.ralph/logs/` for the recurring error
|
|
311
315
|
2. Fix the underlying issue causing the error
|
|
312
|
-
3. Reset circuit breaker: `ralph --reset-circuit`
|
|
316
|
+
3. Reset circuit breaker: `bash .ralph/ralph_loop.sh --reset-circuit`
|
|
313
317
|
|
|
314
318
|
#### Permission denied halts loop
|
|
315
319
|
|
|
316
320
|
**Symptoms:** "OPEN - permission_denied" message
|
|
317
321
|
|
|
318
322
|
**Causes:**
|
|
319
|
-
-
|
|
320
|
-
- `ALLOWED_TOOLS` in `.ralphrc` too restrictive
|
|
323
|
+
- The active driver denied permission to run commands
|
|
324
|
+
- `ALLOWED_TOOLS` in `.ralph/.ralphrc` too restrictive
|
|
321
325
|
|
|
322
326
|
**Solutions:**
|
|
323
|
-
1. Update `ALLOWED_TOOLS` in `.ralphrc` to include needed tools
|
|
324
|
-
2. Reset circuit breaker: `ralph --reset-circuit`
|
|
327
|
+
1. Update `ALLOWED_TOOLS` in `.ralph/.ralphrc` to include needed tools
|
|
328
|
+
2. Reset circuit breaker: `bash .ralph/ralph_loop.sh --reset-circuit`
|
|
325
329
|
3. Common tools: `Write,Read,Edit,Bash(git *),Bash(npm *),Bash(pytest)`
|
|
326
330
|
|
|
327
331
|
#### Session expires mid-project
|
|
@@ -334,32 +338,32 @@ When using `--monitor` with `--live`, tmux creates a 3-pane layout:
|
|
|
334
338
|
|
|
335
339
|
**Solutions:**
|
|
336
340
|
1. Sessions are designed to expire after 24h (configurable via `SESSION_EXPIRY_HOURS`)
|
|
337
|
-
2. Start a new session with `ralph --reset-session`
|
|
338
|
-
3. Context will be rebuilt from fix_plan.md and specs
|
|
341
|
+
2. Start a new session with `bash .ralph/ralph_loop.sh --reset-session`
|
|
342
|
+
3. Context will be rebuilt from `@fix_plan.md` and `specs/`
|
|
339
343
|
|
|
340
344
|
### Diagnostic Commands
|
|
341
345
|
|
|
342
346
|
```bash
|
|
343
347
|
# Check Ralph status
|
|
344
|
-
ralph --status
|
|
348
|
+
bash .ralph/ralph_loop.sh --status
|
|
345
349
|
|
|
346
350
|
# Check circuit breaker state
|
|
347
|
-
ralph --circuit-status
|
|
351
|
+
bash .ralph/ralph_loop.sh --circuit-status
|
|
348
352
|
|
|
349
353
|
# Reset circuit breaker
|
|
350
|
-
ralph --reset-circuit
|
|
354
|
+
bash .ralph/ralph_loop.sh --reset-circuit
|
|
351
355
|
|
|
352
356
|
# Auto-reset circuit breaker (bypasses cooldown)
|
|
353
|
-
ralph --auto-reset-circuit
|
|
357
|
+
bash .ralph/ralph_loop.sh --auto-reset-circuit
|
|
354
358
|
|
|
355
359
|
# Reset session
|
|
356
|
-
ralph --reset-session
|
|
360
|
+
bash .ralph/ralph_loop.sh --reset-session
|
|
357
361
|
|
|
358
362
|
# Enable live streaming
|
|
359
|
-
ralph --live
|
|
363
|
+
bash .ralph/ralph_loop.sh --live
|
|
360
364
|
|
|
361
365
|
# Live streaming with monitoring
|
|
362
|
-
ralph --monitor --live
|
|
366
|
+
bash .ralph/ralph_loop.sh --monitor --live
|
|
363
367
|
```
|
|
364
368
|
|
|
365
369
|
### Log Files
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Wrap Windows .cmd execution so GNU timeout launches a bash script instead of the .cmd directly.
|
|
3
|
+
|
|
4
|
+
set -euo pipefail
|
|
5
|
+
|
|
6
|
+
cli_path=${1:-}
|
|
7
|
+
if [[ -z "$cli_path" ]]; then
|
|
8
|
+
echo "ERROR: Missing Cursor CLI path" >&2
|
|
9
|
+
exit 1
|
|
10
|
+
fi
|
|
11
|
+
|
|
12
|
+
shift
|
|
13
|
+
exec "$cli_path" "$@"
|