bmalph 2.5.0 → 2.7.0
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 +50 -36
- package/bmad/lite/create-prd.md +145 -0
- package/dist/cli.js +13 -4
- package/dist/cli.js.map +1 -0
- package/dist/commands/check-updates.js +3 -18
- package/dist/commands/check-updates.js.map +1 -0
- package/dist/commands/doctor-checks.js +103 -0
- package/dist/commands/doctor-checks.js.map +1 -0
- package/dist/commands/doctor-health-checks.js +101 -0
- package/dist/commands/doctor-health-checks.js.map +1 -0
- package/dist/commands/doctor-runtime-checks.js +143 -0
- package/dist/commands/doctor-runtime-checks.js.map +1 -0
- package/dist/commands/doctor.js +6 -372
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/implement.js +14 -17
- package/dist/commands/implement.js.map +1 -0
- package/dist/commands/init.js +26 -47
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/reset.js +7 -10
- package/dist/commands/reset.js.map +1 -0
- package/dist/commands/run.js +46 -0
- package/dist/commands/run.js.map +1 -0
- package/dist/commands/status.js +8 -46
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/upgrade.js +8 -11
- package/dist/commands/upgrade.js.map +1 -0
- package/dist/commands/watch.js +5 -5
- package/dist/commands/watch.js.map +1 -0
- package/dist/installer.js +332 -78
- package/dist/installer.js.map +1 -0
- package/dist/platform/aider.js +8 -64
- package/dist/platform/aider.js.map +1 -0
- package/dist/platform/claude-code.js +6 -40
- package/dist/platform/claude-code.js.map +1 -0
- package/dist/platform/codex.js +8 -60
- package/dist/platform/codex.js.map +1 -0
- package/dist/platform/copilot.js +11 -66
- package/dist/platform/copilot.js.map +1 -0
- package/dist/platform/cursor.js +10 -65
- package/dist/platform/cursor.js.map +1 -0
- package/dist/platform/detect.js +2 -1
- package/dist/platform/detect.js.map +1 -0
- package/dist/platform/doctor-checks.js +70 -0
- package/dist/platform/doctor-checks.js.map +1 -0
- package/dist/platform/instructions-snippet.js +74 -0
- package/dist/platform/instructions-snippet.js.map +1 -0
- package/dist/platform/registry.js +7 -0
- package/dist/platform/registry.js.map +1 -0
- package/dist/platform/resolve.js +1 -0
- package/dist/platform/resolve.js.map +1 -0
- package/dist/platform/types.js +10 -1
- package/dist/platform/types.js.map +1 -0
- package/dist/platform/windsurf.js +8 -64
- package/dist/platform/windsurf.js.map +1 -0
- package/dist/reset.js +24 -27
- package/dist/reset.js.map +1 -0
- package/dist/run/ralph-process.js +95 -0
- package/dist/run/ralph-process.js.map +1 -0
- package/dist/run/run-dashboard.js +104 -0
- package/dist/run/run-dashboard.js.map +1 -0
- package/dist/run/types.js +2 -0
- package/dist/run/types.js.map +1 -0
- package/dist/transition/artifact-scan.js +6 -15
- package/dist/transition/artifact-scan.js.map +1 -0
- package/dist/transition/artifacts.js +2 -1
- package/dist/transition/artifacts.js.map +1 -0
- package/dist/transition/context.js +1 -0
- package/dist/transition/context.js.map +1 -0
- package/dist/transition/fix-plan.js +1 -0
- package/dist/transition/fix-plan.js.map +1 -0
- package/dist/transition/index.js +1 -0
- package/dist/transition/index.js.map +1 -0
- package/dist/transition/orchestration.js +19 -28
- package/dist/transition/orchestration.js.map +1 -0
- package/dist/transition/preflight.js +1 -0
- package/dist/transition/preflight.js.map +1 -0
- package/dist/transition/specs-changelog.js +3 -2
- package/dist/transition/specs-changelog.js.map +1 -0
- package/dist/transition/specs-index.js +7 -6
- package/dist/transition/specs-index.js.map +1 -0
- package/dist/transition/story-parsing.js +1 -0
- package/dist/transition/story-parsing.js.map +1 -0
- package/dist/transition/tech-stack.js +2 -1
- package/dist/transition/tech-stack.js.map +1 -0
- package/dist/transition/types.js +1 -0
- package/dist/transition/types.js.map +1 -0
- package/dist/utils/artifact-definitions.js +19 -0
- package/dist/utils/artifact-definitions.js.map +1 -0
- package/dist/utils/config.js +3 -2
- package/dist/utils/config.js.map +1 -0
- package/dist/utils/constants.js +12 -49
- package/dist/utils/constants.js.map +1 -0
- package/dist/utils/dryrun.js +1 -20
- package/dist/utils/dryrun.js.map +1 -0
- package/dist/utils/errors.js +1 -19
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/file-system.js +34 -3
- package/dist/utils/file-system.js.map +1 -0
- package/dist/utils/format-status.js +31 -0
- package/dist/utils/format-status.js.map +1 -0
- package/dist/utils/github.js +21 -8
- package/dist/utils/github.js.map +1 -0
- package/dist/utils/json.js +5 -1
- package/dist/utils/json.js.map +1 -0
- package/dist/utils/logger.js +1 -14
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/state.js +3 -2
- package/dist/utils/state.js.map +1 -0
- package/dist/utils/validate.js +18 -13
- package/dist/utils/validate.js.map +1 -0
- package/dist/watch/dashboard.js +23 -11
- package/dist/watch/dashboard.js.map +1 -0
- package/dist/watch/file-watcher.js +5 -2
- package/dist/watch/file-watcher.js.map +1 -0
- package/dist/watch/renderer.js +2 -15
- package/dist/watch/renderer.js.map +1 -0
- package/dist/watch/state-reader.js +19 -9
- package/dist/watch/state-reader.js.map +1 -0
- package/dist/watch/types.js +1 -0
- package/dist/watch/types.js.map +1 -0
- package/package.json +4 -6
- package/ralph/drivers/copilot.sh +89 -0
- package/ralph/drivers/cursor.sh +90 -0
- package/ralph/ralph_loop.sh +20 -13
- package/ralph/templates/ralphrc.template +1 -1
- package/slash-commands/bmalph-watch.md +2 -0
- package/dist/cli.d.ts +0 -1
- package/dist/commands/check-updates.d.ts +0 -5
- package/dist/commands/doctor.d.ts +0 -40
- package/dist/commands/implement.d.ts +0 -6
- package/dist/commands/init.d.ts +0 -9
- package/dist/commands/reset.d.ts +0 -7
- package/dist/commands/status.d.ts +0 -7
- package/dist/commands/upgrade.d.ts +0 -7
- package/dist/commands/watch.d.ts +0 -6
- package/dist/installer.d.ts +0 -33
- package/dist/platform/aider.d.ts +0 -2
- package/dist/platform/claude-code.d.ts +0 -2
- package/dist/platform/codex.d.ts +0 -2
- package/dist/platform/copilot.d.ts +0 -2
- package/dist/platform/cursor.d.ts +0 -2
- package/dist/platform/detect.d.ts +0 -7
- package/dist/platform/index.d.ts +0 -4
- package/dist/platform/index.js +0 -3
- package/dist/platform/registry.d.ts +0 -4
- package/dist/platform/resolve.d.ts +0 -8
- package/dist/platform/types.d.ts +0 -41
- package/dist/platform/windsurf.d.ts +0 -2
- package/dist/reset.d.ts +0 -18
- package/dist/transition/artifact-scan.d.ts +0 -27
- package/dist/transition/artifacts.d.ts +0 -1
- package/dist/transition/context.d.ts +0 -19
- package/dist/transition/fix-plan.d.ts +0 -21
- package/dist/transition/index.d.ts +0 -9
- package/dist/transition/orchestration.d.ts +0 -2
- package/dist/transition/preflight.d.ts +0 -6
- package/dist/transition/specs-changelog.d.ts +0 -3
- package/dist/transition/specs-index.d.ts +0 -22
- package/dist/transition/story-parsing.d.ts +0 -7
- package/dist/transition/tech-stack.d.ts +0 -3
- package/dist/transition/types.d.ts +0 -82
- package/dist/utils/config.d.ts +0 -13
- package/dist/utils/constants.d.ts +0 -70
- package/dist/utils/dryrun.d.ts +0 -7
- package/dist/utils/errors.d.ts +0 -63
- package/dist/utils/file-system.d.ts +0 -24
- package/dist/utils/github.d.ts +0 -83
- package/dist/utils/json.d.ts +0 -7
- package/dist/utils/logger.d.ts +0 -9
- package/dist/utils/state.d.ts +0 -24
- package/dist/utils/validate.d.ts +0 -44
- package/dist/watch/dashboard.d.ts +0 -4
- package/dist/watch/file-watcher.d.ts +0 -9
- package/dist/watch/renderer.d.ts +0 -16
- package/dist/watch/state-reader.d.ts +0 -9
- package/dist/watch/types.d.ts +0 -55
|
@@ -49,7 +49,7 @@ function detectFromContent(content) {
|
|
|
49
49
|
/**
|
|
50
50
|
* Determines the reading priority for a spec file based on its type.
|
|
51
51
|
*/
|
|
52
|
-
export function determinePriority(type
|
|
52
|
+
export function determinePriority(type) {
|
|
53
53
|
switch (type) {
|
|
54
54
|
case "prd":
|
|
55
55
|
case "architecture":
|
|
@@ -104,7 +104,7 @@ export async function generateSpecsIndex(specsDir) {
|
|
|
104
104
|
const files = await getMarkdownFilesWithContent(specsDir);
|
|
105
105
|
const metadata = files.map((file) => {
|
|
106
106
|
const type = detectSpecFileType(file.path, file.content);
|
|
107
|
-
const priority = determinePriority(type
|
|
107
|
+
const priority = determinePriority(type);
|
|
108
108
|
const description = extractDescription(file.content);
|
|
109
109
|
return {
|
|
110
110
|
path: file.path,
|
|
@@ -144,10 +144,10 @@ export function formatSpecsIndexMd(index) {
|
|
|
144
144
|
"",
|
|
145
145
|
];
|
|
146
146
|
const priorityConfig = [
|
|
147
|
-
{ key: "critical", heading: "Critical (Always Read First)"
|
|
148
|
-
{ key: "high", heading: "High Priority (Read for Implementation)"
|
|
149
|
-
{ key: "medium", heading: "Medium Priority (Reference as Needed)"
|
|
150
|
-
{ key: "low", heading: "Low Priority (Optional)"
|
|
147
|
+
{ key: "critical", heading: "Critical (Always Read First)" },
|
|
148
|
+
{ key: "high", heading: "High Priority (Read for Implementation)" },
|
|
149
|
+
{ key: "medium", heading: "Medium Priority (Reference as Needed)" },
|
|
150
|
+
{ key: "low", heading: "Low Priority (Optional)" },
|
|
151
151
|
];
|
|
152
152
|
let fileNumber = 1;
|
|
153
153
|
for (const { key, heading } of priorityConfig) {
|
|
@@ -178,3 +178,4 @@ export function formatSpecsIndexMd(index) {
|
|
|
178
178
|
}
|
|
179
179
|
return lines.join("\n");
|
|
180
180
|
}
|
|
181
|
+
//# sourceMappingURL=specs-index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"specs-index.js","sourceRoot":"","sources":["../../src/transition/specs-index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"story-parsing.js","sourceRoot":"","sources":["../../src/transition/story-parsing.ts"],"names":[],"mappings":"AAEA,uEAAuE;AACvE,MAAM,kBAAkB,GAAG,sBAAsB,CAAC;AAClD,MAAM,gBAAgB,GAAG,kCAAkC,CAAC;AAC5D,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,SAAS,CAAC,IAAY;IAC7B,OAAO,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;AAC5C,CAAC;AAED,SAAS,SAAS,CAAC,IAAY;IAC7B,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;AACxC,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,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YACnD,CAAC;YACD,OAAO,GAAG,CAAC,OAAO,CAAC,CAAC;QACtB,CAAC;aAAM,IAAI,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;YAC9B,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACnD,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,OAAe;IAC1C,OAAO,wBAAwB,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,OAAe;IACtD,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;aACnB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;AAC/B,CAAC"}
|
|
@@ -3,7 +3,7 @@ export function detectTechStack(content) {
|
|
|
3
3
|
const stackMatch = content.match(/^##\s+(?:Tech(?:nology)?\s+Stack|Stack)/im);
|
|
4
4
|
if (!stackMatch)
|
|
5
5
|
return null;
|
|
6
|
-
const startIndex = stackMatch.index;
|
|
6
|
+
const startIndex = stackMatch.index ?? 0;
|
|
7
7
|
// Extract section content until next ## heading or end
|
|
8
8
|
const rest = content.slice(startIndex);
|
|
9
9
|
const nextHeading = rest.slice(1).search(/^##\s/m);
|
|
@@ -77,3 +77,4 @@ export function customizeAgentMd(template, stack) {
|
|
|
77
77
|
}
|
|
78
78
|
return result;
|
|
79
79
|
}
|
|
80
|
+
//# sourceMappingURL=tech-stack.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tech-stack.js","sourceRoot":"","sources":["../../src/transition/tech-stack.ts"],"names":[],"mappings":"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"}
|
package/dist/transition/types.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/transition/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared artifact definitions for BMAD planning phases.
|
|
3
|
+
*
|
|
4
|
+
* Used by both artifact-scan.ts (for file classification) and
|
|
5
|
+
* status.ts (for checklist rendering). Each definition includes
|
|
6
|
+
* a regex pattern for matching filenames against artifact types.
|
|
7
|
+
*/
|
|
8
|
+
export const ARTIFACT_DEFINITIONS = [
|
|
9
|
+
{ pattern: /\bbrief\b/i, phase: 1, name: "Product Brief", required: false },
|
|
10
|
+
{ pattern: /\bmarket\b/i, phase: 1, name: "Market Research", required: false },
|
|
11
|
+
{ pattern: /\bdomain\b/i, phase: 1, name: "Domain Research", required: false },
|
|
12
|
+
{ pattern: /tech.*research/i, phase: 1, name: "Technical Research", required: false },
|
|
13
|
+
{ pattern: /\bprd\b/i, phase: 2, name: "PRD", required: true },
|
|
14
|
+
{ pattern: /\bux\b/i, phase: 2, name: "UX Design", required: false },
|
|
15
|
+
{ pattern: /architect/i, phase: 3, name: "Architecture", required: true },
|
|
16
|
+
{ pattern: /\bepics?\b|\bstor(?:y|ies)\b/i, phase: 3, name: "Epics & Stories", required: true },
|
|
17
|
+
{ pattern: /readiness/i, phase: 3, name: "Readiness Report", required: true },
|
|
18
|
+
];
|
|
19
|
+
//# sourceMappingURL=artifact-definitions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"artifact-definitions.js","sourceRoot":"","sources":["../../src/utils/artifact-definitions.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AASH,MAAM,CAAC,MAAM,oBAAoB,GAAyB;IACxD,EAAE,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,QAAQ,EAAE,KAAK,EAAE;IAC3E,EAAE,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,QAAQ,EAAE,KAAK,EAAE;IAC9E,EAAE,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,QAAQ,EAAE,KAAK,EAAE;IAC9E,EAAE,OAAO,EAAE,iBAAiB,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE,QAAQ,EAAE,KAAK,EAAE;IACrF,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE;IAC9D,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,KAAK,EAAE;IACpE,EAAE,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,QAAQ,EAAE,IAAI,EAAE;IACzE,EAAE,OAAO,EAAE,+BAA+B,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,QAAQ,EAAE,IAAI,EAAE;IAC/F,EAAE,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,QAAQ,EAAE,IAAI,EAAE;CAC9E,CAAC"}
|
package/dist/utils/config.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { mkdir } from "fs/promises";
|
|
2
|
-
import { join } from "path";
|
|
1
|
+
import { mkdir } from "node:fs/promises";
|
|
2
|
+
import { join } from "node:path";
|
|
3
3
|
import { readJsonFile } from "./json.js";
|
|
4
4
|
import { validateConfig } from "./validate.js";
|
|
5
5
|
import { CONFIG_FILE } from "./constants.js";
|
|
@@ -22,3 +22,4 @@ export async function writeConfig(projectDir, config) {
|
|
|
22
22
|
await mkdir(join(projectDir, "bmalph"), { recursive: true });
|
|
23
23
|
await atomicWriteFile(join(projectDir, CONFIG_FILE), JSON.stringify(config, null, 2) + "\n");
|
|
24
24
|
}
|
|
25
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACnC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAe1C,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,UAAkB;IACjD,MAAM,IAAI,GAAG,MAAM,YAAY,CAAU,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC,CAAC;IACxE,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAC/B,IAAI,CAAC;QACH,OAAO,cAAc,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,kDAAkD,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC3E,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,UAAkB,EAAE,MAAoB;IACxE,MAAM,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7D,MAAM,eAAe,CAAC,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AAC/F,CAAC"}
|
package/dist/utils/constants.js
CHANGED
|
@@ -6,7 +6,6 @@
|
|
|
6
6
|
*
|
|
7
7
|
* Numeric thresholds are used for validation, file processing, and health checks.
|
|
8
8
|
*/
|
|
9
|
-
import { join } from "path";
|
|
10
9
|
// =============================================================================
|
|
11
10
|
// Validation thresholds
|
|
12
11
|
// =============================================================================
|
|
@@ -41,57 +40,21 @@ export const BMAD_DIR = "_bmad";
|
|
|
41
40
|
export const BMALPH_DIR = "bmalph";
|
|
42
41
|
/** BMAD output directory (planning artifacts) */
|
|
43
42
|
export const BMAD_OUTPUT_DIR = "_bmad-output";
|
|
44
|
-
/**
|
|
45
|
-
export const
|
|
46
|
-
/**
|
|
47
|
-
export const
|
|
48
|
-
/** Claude Code slash commands directory */
|
|
49
|
-
export const CLAUDE_COMMANDS_DIR = ".claude/commands";
|
|
43
|
+
/** Skills directory (for skills-based command delivery) */
|
|
44
|
+
export const SKILLS_DIR = ".agents/skills";
|
|
45
|
+
/** Prefix for bmalph-managed skill directories */
|
|
46
|
+
export const SKILLS_PREFIX = "bmad-";
|
|
50
47
|
/** bmalph state subdirectory (inside BMALPH_DIR) */
|
|
51
48
|
export const STATE_DIR = "bmalph/state";
|
|
52
49
|
/** bmalph config file path */
|
|
53
50
|
export const CONFIG_FILE = "bmalph/config.json";
|
|
54
51
|
/** Ralph status file path */
|
|
55
52
|
export const RALPH_STATUS_FILE = ".ralph/status.json";
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
*/
|
|
65
|
-
export function getBmadDir(projectDir) {
|
|
66
|
-
return join(projectDir, BMAD_DIR);
|
|
67
|
-
}
|
|
68
|
-
/**
|
|
69
|
-
* Get absolute path to bmalph state directory for a project.
|
|
70
|
-
*/
|
|
71
|
-
export function getBmalphDir(projectDir) {
|
|
72
|
-
return join(projectDir, BMALPH_DIR);
|
|
73
|
-
}
|
|
74
|
-
/**
|
|
75
|
-
* Get absolute path to BMAD output directory for a project.
|
|
76
|
-
*/
|
|
77
|
-
export function getBmadOutputDir(projectDir) {
|
|
78
|
-
return join(projectDir, BMAD_OUTPUT_DIR);
|
|
79
|
-
}
|
|
80
|
-
/**
|
|
81
|
-
* Get absolute path to Ralph logs directory for a project.
|
|
82
|
-
*/
|
|
83
|
-
export function getRalphLogsDir(projectDir) {
|
|
84
|
-
return join(projectDir, RALPH_LOGS_DIR);
|
|
85
|
-
}
|
|
86
|
-
/**
|
|
87
|
-
* Get absolute path to Ralph specs directory for a project.
|
|
88
|
-
*/
|
|
89
|
-
export function getRalphSpecsDir(projectDir) {
|
|
90
|
-
return join(projectDir, RALPH_SPECS_DIR);
|
|
91
|
-
}
|
|
92
|
-
/**
|
|
93
|
-
* Get absolute path to Claude commands directory for a project.
|
|
94
|
-
*/
|
|
95
|
-
export function getClaudeCommandsDir(projectDir) {
|
|
96
|
-
return join(projectDir, CLAUDE_COMMANDS_DIR);
|
|
97
|
-
}
|
|
53
|
+
// =============================================================================
|
|
54
|
+
// Dashboard constants
|
|
55
|
+
// =============================================================================
|
|
56
|
+
/** Default dashboard refresh interval in milliseconds */
|
|
57
|
+
export const DEFAULT_INTERVAL_MS = 2000;
|
|
58
|
+
/** Minimum allowed dashboard refresh interval in milliseconds */
|
|
59
|
+
export const MIN_INTERVAL_MS = 500;
|
|
60
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/utils/constants.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,gFAAgF;AAChF,wBAAwB;AACxB,gFAAgF;AAEhF,0CAA0C;AAC1C,MAAM,CAAC,MAAM,uBAAuB,GAAG,GAAG,CAAC;AAE3C,gFAAgF;AAChF,6BAA6B;AAC7B,gFAAgF;AAEhF,4DAA4D;AAC5D,MAAM,CAAC,MAAM,0BAA0B,GAAG,KAAK,CAAC;AAEhD,wDAAwD;AACxD,MAAM,CAAC,MAAM,0BAA0B,GAAG,EAAE,CAAC;AAE7C,+FAA+F;AAC/F,MAAM,CAAC,MAAM,0BAA0B,GAAG,IAAI,CAAC;AAE/C,2CAA2C;AAC3C,MAAM,CAAC,MAAM,wBAAwB,GAAG,EAAE,CAAC;AAE3C,gFAAgF;AAChF,0BAA0B;AAC1B,gFAAgF;AAEhF,+DAA+D;AAC/D,MAAM,CAAC,MAAM,sBAAsB,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAE1D,oDAAoD;AACpD,MAAM,CAAC,MAAM,yBAAyB,GAAG,EAAE,CAAC;AAE5C,gFAAgF;AAChF,iBAAiB;AACjB,gFAAgF;AAEhF,2DAA2D;AAC3D,MAAM,CAAC,MAAM,SAAS,GAAG,QAAQ,CAAC;AAElC,0CAA0C;AAC1C,MAAM,CAAC,MAAM,QAAQ,GAAG,OAAO,CAAC;AAEhC,sDAAsD;AACtD,MAAM,CAAC,MAAM,UAAU,GAAG,QAAQ,CAAC;AAEnC,iDAAiD;AACjD,MAAM,CAAC,MAAM,eAAe,GAAG,cAAc,CAAC;AAE9C,2DAA2D;AAC3D,MAAM,CAAC,MAAM,UAAU,GAAG,gBAAgB,CAAC;AAE3C,kDAAkD;AAClD,MAAM,CAAC,MAAM,aAAa,GAAG,OAAO,CAAC;AAErC,oDAAoD;AACpD,MAAM,CAAC,MAAM,SAAS,GAAG,cAAc,CAAC;AAExC,8BAA8B;AAC9B,MAAM,CAAC,MAAM,WAAW,GAAG,oBAAoB,CAAC;AAEhD,6BAA6B;AAC7B,MAAM,CAAC,MAAM,iBAAiB,GAAG,oBAAoB,CAAC;AAEtD,gFAAgF;AAChF,sBAAsB;AACtB,gFAAgF;AAEhF,yDAAyD;AACzD,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,CAAC;AAExC,iEAAiE;AACjE,MAAM,CAAC,MAAM,eAAe,GAAG,GAAG,CAAC"}
|
package/dist/utils/dryrun.js
CHANGED
|
@@ -1,24 +1,4 @@
|
|
|
1
1
|
import chalk from "chalk";
|
|
2
|
-
export function logDryRunAction(action) {
|
|
3
|
-
const prefix = chalk.dim("[dry-run]");
|
|
4
|
-
switch (action.type) {
|
|
5
|
-
case "create":
|
|
6
|
-
console.log(`${prefix} Would create: ${chalk.green(action.path)}`);
|
|
7
|
-
break;
|
|
8
|
-
case "modify":
|
|
9
|
-
console.log(`${prefix} Would modify: ${chalk.yellow(action.path)}`);
|
|
10
|
-
break;
|
|
11
|
-
case "skip":
|
|
12
|
-
console.log(`${prefix} Would skip: ${chalk.dim(action.path)}${action.reason ? ` (${action.reason})` : ""}`);
|
|
13
|
-
break;
|
|
14
|
-
case "delete":
|
|
15
|
-
console.log(`${prefix} Would delete: ${chalk.red(action.path)}`);
|
|
16
|
-
break;
|
|
17
|
-
case "warn":
|
|
18
|
-
console.log(`${prefix} Warning: ${chalk.yellow(action.path)}${action.reason ? ` (${action.reason})` : ""}`);
|
|
19
|
-
break;
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
2
|
export function formatDryRunSummary(actions) {
|
|
23
3
|
if (actions.length === 0) {
|
|
24
4
|
return chalk.dim("No changes would be made.");
|
|
@@ -68,3 +48,4 @@ export function formatDryRunSummary(actions) {
|
|
|
68
48
|
lines.push(chalk.dim("No changes made."));
|
|
69
49
|
return lines.join("\n");
|
|
70
50
|
}
|
|
51
|
+
//# sourceMappingURL=dryrun.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dryrun.js","sourceRoot":"","sources":["../../src/utils/dryrun.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/errors.js
CHANGED
|
@@ -37,25 +37,6 @@ export function formatError(error) {
|
|
|
37
37
|
}
|
|
38
38
|
return String(error);
|
|
39
39
|
}
|
|
40
|
-
/**
|
|
41
|
-
* Create a formatted error message with a prefix.
|
|
42
|
-
*
|
|
43
|
-
* @param prefix - Context for the error (e.g., "Failed to read file")
|
|
44
|
-
* @param error - The caught error
|
|
45
|
-
* @returns Formatted message like "Failed to read file: <error message>"
|
|
46
|
-
*
|
|
47
|
-
* @example
|
|
48
|
-
* ```ts
|
|
49
|
-
* try {
|
|
50
|
-
* await readFile(path);
|
|
51
|
-
* } catch (err) {
|
|
52
|
-
* throw new Error(formatErrorMessage("Failed to read config", err));
|
|
53
|
-
* }
|
|
54
|
-
* ```
|
|
55
|
-
*/
|
|
56
|
-
export function formatErrorMessage(prefix, error) {
|
|
57
|
-
return `${prefix}: ${formatError(error)}`;
|
|
58
|
-
}
|
|
59
40
|
/**
|
|
60
41
|
* Wrap an async command function with standard error handling.
|
|
61
42
|
*
|
|
@@ -84,3 +65,4 @@ export async function withErrorHandling(fn) {
|
|
|
84
65
|
process.exitCode = 1;
|
|
85
66
|
}
|
|
86
67
|
}
|
|
68
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;;;;;;;;;;;GAcG;AACH;;;;;GAKG;AACH,MAAM,UAAU,QAAQ,CAAC,GAAY;IACnC,OAAO,GAAG,YAAY,KAAK,IAAI,MAAM,IAAI,GAAG,IAAK,GAA6B,CAAC,IAAI,KAAK,QAAQ,CAAC;AACnG,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,KAAc;IACxC,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAC3B,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YAChB,OAAO,GAAG,KAAK,CAAC,OAAO,KAAK,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;QACzD,CAAC;QACD,OAAO,KAAK,CAAC,OAAO,CAAC;IACvB,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,EAAuB;IAC7D,IAAI,CAAC;QACH,MAAM,EAAE,EAAE,CAAC;IACb,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;QACjC,0DAA0D;QAC1D,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC;QACpC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,OAAO,EAAE,CAAC,CAAC,CAAC;QACtD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACvB,CAAC;AACH,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { access, readFile, readdir, stat, writeFile, rename, unlink } from "fs/promises";
|
|
2
|
-
import { join, extname } from "path";
|
|
3
|
-
import { randomUUID } from "crypto";
|
|
1
|
+
import { access, readFile, readdir, stat, writeFile, rename, unlink } from "node:fs/promises";
|
|
2
|
+
import { join, extname } from "node:path";
|
|
3
|
+
import { randomUUID } from "node:crypto";
|
|
4
4
|
import { isEnoent } from "./errors.js";
|
|
5
5
|
/**
|
|
6
6
|
* Checks whether a file or directory exists at the given path.
|
|
@@ -63,6 +63,36 @@ export async function getFilesRecursive(dir, basePath = "") {
|
|
|
63
63
|
}
|
|
64
64
|
return files;
|
|
65
65
|
}
|
|
66
|
+
/**
|
|
67
|
+
* Parse .gitignore content into a set of trimmed, non-empty lines.
|
|
68
|
+
*/
|
|
69
|
+
export function parseGitignoreLines(content) {
|
|
70
|
+
return new Set(content
|
|
71
|
+
.split(/\r?\n/)
|
|
72
|
+
.map((line) => line.trim())
|
|
73
|
+
.filter(Boolean));
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Replace or remove a markdown section identified by a heading marker.
|
|
77
|
+
* Finds the marker, then locates the next level-2 heading to determine section bounds.
|
|
78
|
+
*
|
|
79
|
+
* @param content - The full file content
|
|
80
|
+
* @param marker - The section heading to find (e.g. "## BMAD-METHOD Integration")
|
|
81
|
+
* @param replacement - New content for the section, or empty string to remove it
|
|
82
|
+
* @returns Updated content with section replaced/removed
|
|
83
|
+
*/
|
|
84
|
+
export function replaceSection(content, marker, replacement) {
|
|
85
|
+
if (!content.includes(marker))
|
|
86
|
+
return content;
|
|
87
|
+
const sectionStart = content.indexOf(marker);
|
|
88
|
+
const before = content.slice(0, sectionStart);
|
|
89
|
+
const afterSection = content.slice(sectionStart);
|
|
90
|
+
const headingText = marker.startsWith("## ") ? marker.slice(3) : marker;
|
|
91
|
+
const headingTextEscaped = headingText.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
92
|
+
const nextHeadingMatch = afterSection.match(new RegExp(`\\n## (?!${headingTextEscaped})`));
|
|
93
|
+
const after = nextHeadingMatch ? afterSection.slice(nextHeadingMatch.index ?? 0) : "";
|
|
94
|
+
return before.trimEnd() + replacement + after;
|
|
95
|
+
}
|
|
66
96
|
/**
|
|
67
97
|
* Recursively gets all markdown files from a directory with their content.
|
|
68
98
|
* Returns relative paths using forward slashes (cross-platform).
|
|
@@ -97,3 +127,4 @@ export async function getMarkdownFilesWithContent(dir, basePath = "") {
|
|
|
97
127
|
}
|
|
98
128
|
return files;
|
|
99
129
|
}
|
|
130
|
+
//# sourceMappingURL=file-system.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-system.js","sourceRoot":"","sources":["../../src/utils/file-system.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import chalk from "chalk";
|
|
2
|
+
/**
|
|
3
|
+
* Shared status formatting with chalk colors.
|
|
4
|
+
*
|
|
5
|
+
* Handles all known status values from both bmalph phase tracking
|
|
6
|
+
* and Ralph loop status. Used by both the status command and the
|
|
7
|
+
* watch dashboard renderer.
|
|
8
|
+
*/
|
|
9
|
+
export function formatStatus(status) {
|
|
10
|
+
switch (status) {
|
|
11
|
+
case "planning":
|
|
12
|
+
return chalk.blue(status);
|
|
13
|
+
case "implementing":
|
|
14
|
+
case "running":
|
|
15
|
+
return chalk.yellow(status);
|
|
16
|
+
case "completed":
|
|
17
|
+
case "success":
|
|
18
|
+
return chalk.green(status);
|
|
19
|
+
case "halted":
|
|
20
|
+
case "stopped":
|
|
21
|
+
case "blocked":
|
|
22
|
+
return chalk.red(status);
|
|
23
|
+
case "not_started":
|
|
24
|
+
return chalk.dim("not started");
|
|
25
|
+
case "unknown":
|
|
26
|
+
return chalk.dim(status);
|
|
27
|
+
default:
|
|
28
|
+
return status;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=format-status.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format-status.js","sourceRoot":"","sources":["../../src/utils/format-status.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAAC,MAAc;IACzC,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,UAAU;YACb,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC5B,KAAK,cAAc,CAAC;QACpB,KAAK,SAAS;YACZ,OAAO,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC9B,KAAK,WAAW,CAAC;QACjB,KAAK,SAAS;YACZ,OAAO,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC7B,KAAK,QAAQ,CAAC;QACd,KAAK,SAAS,CAAC;QACf,KAAK,SAAS;YACZ,OAAO,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC3B,KAAK,aAAa;YAChB,OAAO,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QAClC,KAAK,SAAS;YACZ,OAAO,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC3B;YACE,OAAO,MAAM,CAAC;IAClB,CAAC;AACH,CAAC"}
|
package/dist/utils/github.js
CHANGED
|
@@ -190,20 +190,32 @@ export class GitHubClient {
|
|
|
190
190
|
};
|
|
191
191
|
}
|
|
192
192
|
}
|
|
193
|
+
/**
|
|
194
|
+
* Returns a human-readable reason for a GitHub error.
|
|
195
|
+
*/
|
|
196
|
+
export function getErrorReason(error) {
|
|
197
|
+
switch (error.type) {
|
|
198
|
+
case "network":
|
|
199
|
+
return "network error";
|
|
200
|
+
case "timeout":
|
|
201
|
+
return "request timed out";
|
|
202
|
+
case "rate-limit":
|
|
203
|
+
return "rate limited";
|
|
204
|
+
case "not-found":
|
|
205
|
+
return "repository not found";
|
|
206
|
+
case "api-error":
|
|
207
|
+
return `API error (${error.status || "unknown"})`;
|
|
208
|
+
default:
|
|
209
|
+
return "unknown error";
|
|
210
|
+
}
|
|
211
|
+
}
|
|
193
212
|
/**
|
|
194
213
|
* Determines why upstream checks were skipped based on error types.
|
|
195
214
|
*/
|
|
196
215
|
export function getSkipReason(errors) {
|
|
197
216
|
if (errors.length === 0)
|
|
198
217
|
return "unknown";
|
|
199
|
-
|
|
200
|
-
if (types.has("rate-limit"))
|
|
201
|
-
return "rate limited";
|
|
202
|
-
if (types.has("network"))
|
|
203
|
-
return "offline";
|
|
204
|
-
if (types.has("timeout"))
|
|
205
|
-
return "timeout";
|
|
206
|
-
return "error";
|
|
218
|
+
return getErrorReason(errors[0]);
|
|
207
219
|
}
|
|
208
220
|
// Default client instance for backward compatibility
|
|
209
221
|
const defaultClient = new GitHubClient();
|
|
@@ -228,3 +240,4 @@ export async function fetchLatestCommit(repo, options = {}) {
|
|
|
228
240
|
export async function checkUpstream(bundled) {
|
|
229
241
|
return defaultClient.checkUpstream(bundled);
|
|
230
242
|
}
|
|
243
|
+
//# sourceMappingURL=github.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"github.js","sourceRoot":"","sources":["../../src/utils/github.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/json.js
CHANGED
|
@@ -1,10 +1,13 @@
|
|
|
1
|
-
import { readFile } from "fs/promises";
|
|
1
|
+
import { readFile } from "node:fs/promises";
|
|
2
2
|
import { isEnoent } from "./errors.js";
|
|
3
3
|
/**
|
|
4
4
|
* Reads and parses a JSON file with proper error discrimination:
|
|
5
5
|
* - File not found → returns null
|
|
6
6
|
* - Parse error → throws
|
|
7
7
|
* - Permission error → throws
|
|
8
|
+
*
|
|
9
|
+
* Note: The generic type parameter T is an unchecked cast (`JSON.parse(content) as T`).
|
|
10
|
+
* Callers are responsible for validating the parsed data matches the expected shape.
|
|
8
11
|
*/
|
|
9
12
|
export async function readJsonFile(path) {
|
|
10
13
|
let content;
|
|
@@ -24,3 +27,4 @@ export async function readJsonFile(path) {
|
|
|
24
27
|
throw new Error(`Invalid JSON in ${path}`, { cause: err });
|
|
25
28
|
}
|
|
26
29
|
}
|
|
30
|
+
//# sourceMappingURL=json.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json.js","sourceRoot":"","sources":["../../src/utils/json.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAI,IAAY;IAChD,IAAI,OAAe,CAAC;IACpB,IAAI,CAAC;QACH,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC1C,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,IAAI,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAClB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;IAED,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAM,CAAC;IAClC,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,mBAAmB,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;IAC7D,CAAC;AACH,CAAC"}
|
package/dist/utils/logger.js
CHANGED
|
@@ -4,15 +4,9 @@ let quiet = false;
|
|
|
4
4
|
export function setVerbose(value) {
|
|
5
5
|
verbose = value;
|
|
6
6
|
}
|
|
7
|
-
export function isVerbose() {
|
|
8
|
-
return verbose;
|
|
9
|
-
}
|
|
10
7
|
export function setQuiet(value) {
|
|
11
8
|
quiet = value;
|
|
12
9
|
}
|
|
13
|
-
export function isQuiet() {
|
|
14
|
-
return quiet;
|
|
15
|
-
}
|
|
16
10
|
export function debug(message) {
|
|
17
11
|
if (quiet)
|
|
18
12
|
return;
|
|
@@ -30,11 +24,4 @@ export function warn(message) {
|
|
|
30
24
|
return;
|
|
31
25
|
console.log(chalk.yellow(message));
|
|
32
26
|
}
|
|
33
|
-
|
|
34
|
-
console.error(chalk.red(message));
|
|
35
|
-
}
|
|
36
|
-
export function success(message) {
|
|
37
|
-
if (quiet)
|
|
38
|
-
return;
|
|
39
|
-
console.log(chalk.green(message));
|
|
40
|
-
}
|
|
27
|
+
//# sourceMappingURL=logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,IAAI,OAAO,GAAG,KAAK,CAAC;AACpB,IAAI,KAAK,GAAG,KAAK,CAAC;AAElB,MAAM,UAAU,UAAU,CAAC,KAAc;IACvC,OAAO,GAAG,KAAK,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,KAAc;IACrC,KAAK,GAAG,KAAK,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,OAAe;IACnC,IAAI,KAAK;QAAE,OAAO;IAClB,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,OAAO,EAAE,CAAC,CAAC,CAAC;IAC/C,CAAC;AACH,CAAC;AAED,MAAM,UAAU,IAAI,CAAC,OAAe;IAClC,IAAI,KAAK;QAAE,OAAO;IAClB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,IAAI,CAAC,OAAe;IAClC,IAAI,KAAK;QAAE,OAAO;IAClB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;AACrC,CAAC"}
|
package/dist/utils/state.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { mkdir } from "fs/promises";
|
|
2
|
-
import { join } from "path";
|
|
1
|
+
import { mkdir } from "node:fs/promises";
|
|
2
|
+
import { join } from "node:path";
|
|
3
3
|
import { readJsonFile } from "./json.js";
|
|
4
4
|
import { validateState, validateRalphLoopStatus, normalizeRalphStatus } from "./validate.js";
|
|
5
5
|
import { STATE_DIR, RALPH_STATUS_FILE } from "./constants.js";
|
|
@@ -197,3 +197,4 @@ export async function readRalphStatus(projectDir) {
|
|
|
197
197
|
return DEFAULT_RALPH_STATUS;
|
|
198
198
|
}
|
|
199
199
|
}
|
|
200
|
+
//# sourceMappingURL=state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state.js","sourceRoot":"","sources":["../../src/utils/state.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/validate.js
CHANGED
|
@@ -1,12 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
"claude-code",
|
|
4
|
-
"codex",
|
|
5
|
-
"cursor",
|
|
6
|
-
"windsurf",
|
|
7
|
-
"copilot",
|
|
8
|
-
"aider",
|
|
9
|
-
];
|
|
1
|
+
import { PLATFORM_IDS } from "../platform/types.js";
|
|
2
|
+
import { DEFAULT_INTERVAL_MS, MAX_PROJECT_NAME_LENGTH, MIN_INTERVAL_MS } from "./constants.js";
|
|
10
3
|
const VALID_STATUSES = ["planning", "implementing", "completed"];
|
|
11
4
|
// Invalid filesystem characters (Windows + POSIX)
|
|
12
5
|
const INVALID_FS_CHARS = /[<>:"/\\|?*]/;
|
|
@@ -60,8 +53,9 @@ export function validateConfig(data) {
|
|
|
60
53
|
const description = typeof data.description === "string" ? data.description : "";
|
|
61
54
|
let platform;
|
|
62
55
|
if (data.platform !== undefined) {
|
|
63
|
-
if (typeof data.platform !== "string" ||
|
|
64
|
-
|
|
56
|
+
if (typeof data.platform !== "string" ||
|
|
57
|
+
!PLATFORM_IDS.includes(data.platform)) {
|
|
58
|
+
throw new Error(`config.platform must be one of: ${PLATFORM_IDS.join(", ")}`);
|
|
65
59
|
}
|
|
66
60
|
platform = data.platform;
|
|
67
61
|
}
|
|
@@ -147,7 +141,7 @@ export function validateRalphApiStatus(data) {
|
|
|
147
141
|
};
|
|
148
142
|
}
|
|
149
143
|
// Ralph loop status (from state.ts - loop progress tracking)
|
|
150
|
-
const RALPH_LOOP_STATUSES = ["running", "blocked", "completed", "not_started"];
|
|
144
|
+
const RALPH_LOOP_STATUSES = ["running", "blocked", "completed", "not_started", "unknown"];
|
|
151
145
|
export function validateRalphLoopStatus(data) {
|
|
152
146
|
assertObject(data, "ralphLoopStatus");
|
|
153
147
|
if (typeof data.loopCount !== "number") {
|
|
@@ -182,7 +176,7 @@ export function normalizeRalphStatus(data) {
|
|
|
182
176
|
assertObject(data, "normalizeRalphStatus");
|
|
183
177
|
const loopCount = typeof data.loop_count === "number" ? data.loop_count : 0;
|
|
184
178
|
const rawStatus = typeof data.status === "string" ? data.status : undefined;
|
|
185
|
-
const status = (rawStatus !== undefined ? BASH_STATUS_MAP[rawStatus] : undefined) ?? "
|
|
179
|
+
const status = (rawStatus !== undefined ? BASH_STATUS_MAP[rawStatus] : undefined) ?? "unknown";
|
|
186
180
|
return {
|
|
187
181
|
loopCount,
|
|
188
182
|
status,
|
|
@@ -231,3 +225,14 @@ export function validateProjectName(name) {
|
|
|
231
225
|
}
|
|
232
226
|
return name;
|
|
233
227
|
}
|
|
228
|
+
export function parseInterval(value) {
|
|
229
|
+
if (value !== undefined && !Number.isFinite(Number(value))) {
|
|
230
|
+
throw new Error(`Interval must be a number >= ${MIN_INTERVAL_MS} (milliseconds)`);
|
|
231
|
+
}
|
|
232
|
+
const interval = value !== undefined ? Number(value) : DEFAULT_INTERVAL_MS;
|
|
233
|
+
if (interval < MIN_INTERVAL_MS) {
|
|
234
|
+
throw new Error(`Interval must be a number >= ${MIN_INTERVAL_MS} (milliseconds)`);
|
|
235
|
+
}
|
|
236
|
+
return Math.trunc(interval);
|
|
237
|
+
}
|
|
238
|
+
//# sourceMappingURL=validate.js.map
|