bmalph 2.7.2 → 2.7.4

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 (46) 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 +12 -7
  13. package/dist/transition/fix-plan.js.map +1 -1
  14. package/dist/transition/orchestration.js +213 -116
  15. package/dist/transition/orchestration.js.map +1 -1
  16. package/dist/transition/preflight.js +30 -17
  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-id.js +46 -0
  27. package/dist/transition/story-id.js.map +1 -0
  28. package/dist/transition/story-parsing.js +7 -7
  29. package/dist/transition/story-parsing.js.map +1 -1
  30. package/dist/transition/tech-stack.js +1 -7
  31. package/dist/transition/tech-stack.js.map +1 -1
  32. package/package.json +1 -1
  33. package/ralph/RALPH-REFERENCE.md +50 -46
  34. package/ralph/drivers/claude-code.sh +44 -2
  35. package/ralph/drivers/codex.sh +10 -1
  36. package/ralph/drivers/copilot.sh +5 -0
  37. package/ralph/drivers/cursor-agent-wrapper.sh +13 -0
  38. package/ralph/drivers/cursor.sh +178 -14
  39. package/ralph/lib/circuit_breaker.sh +5 -5
  40. package/ralph/lib/enable_core.sh +10 -10
  41. package/ralph/lib/response_analyzer.sh +357 -111
  42. package/ralph/ralph_import.sh +14 -10
  43. package/ralph/ralph_loop.sh +168 -119
  44. package/ralph/ralph_monitor.sh +4 -4
  45. package/ralph/templates/AGENT.md +7 -7
  46. package/ralph/templates/PROMPT.md +13 -13
@@ -1,7 +1,59 @@
1
+ function headingPattern(expression) {
2
+ return new RegExp(`^##\\s+${expression}(?:\\s*:)?\\s*$`, "im");
3
+ }
4
+ export const PROJECT_GOALS_SECTION_PATTERNS = [
5
+ headingPattern("Executive Summary"),
6
+ headingPattern("Vision"),
7
+ headingPattern("Goals"),
8
+ headingPattern("Project Goals"),
9
+ headingPattern("Resumo Executivo"),
10
+ headingPattern("Resumo"),
11
+ headingPattern("Objetivos(?: do Projeto)?"),
12
+ headingPattern("Resumen Ejecutivo"),
13
+ headingPattern("Resumen"),
14
+ headingPattern("Objetivos(?: del Proyecto)?"),
15
+ ];
16
+ export const FUNCTIONAL_REQUIREMENTS_SECTION_PATTERNS = [
17
+ headingPattern("Functional Requirements"),
18
+ headingPattern("Requisitos Funcionais"),
19
+ headingPattern("Requisitos Funcionales"),
20
+ ];
21
+ export const NON_FUNCTIONAL_REQUIREMENTS_SECTION_PATTERNS = [
22
+ headingPattern("Non-Functional(?: Requirements)?"),
23
+ headingPattern("NFR"),
24
+ headingPattern("Quality"),
25
+ headingPattern("Quality Attributes"),
26
+ headingPattern("Requisitos N(?:a|\\u00E3)o Funcionais"),
27
+ headingPattern("Qualidade"),
28
+ headingPattern("Atributos de Qualidade"),
29
+ headingPattern("Requisitos No Funcionales"),
30
+ headingPattern("Calidad"),
31
+ headingPattern("Atributos de Calidad"),
32
+ ];
1
33
  export const PRD_SCOPE_SECTION_PATTERNS = [
2
- /^##\s+Scope/m,
3
- /^##\s+Product Scope/m,
4
- /^##\s+In Scope/m,
5
- /^##\s+Out of Scope/m,
34
+ headingPattern("Scope"),
35
+ headingPattern("Product Scope"),
36
+ headingPattern("In Scope"),
37
+ headingPattern("Out of Scope"),
38
+ headingPattern("Escopo"),
39
+ headingPattern("Em Escopo"),
40
+ headingPattern("Fora de Escopo"),
41
+ headingPattern("Alcance"),
42
+ headingPattern("En Alcance"),
43
+ headingPattern("Fuera de Alcance"),
44
+ ];
45
+ export const TECH_STACK_SOURCE_SECTION_PATTERNS = [
46
+ headingPattern("Tech Stack"),
47
+ headingPattern("Technology Stack"),
48
+ headingPattern("Stack"),
49
+ headingPattern("Core Architectural Decisions"),
50
+ headingPattern("Starter Template Evaluation"),
51
+ headingPattern("Pilha Tecnol(?:o|\\u00F3)gica"),
52
+ headingPattern("Decis(?:o|\\u00F5)es Arquitet(?:o|\\u00F4)nicas Principais"),
53
+ headingPattern("Pila Tecnol(?:o|\\u00F3)gica"),
54
+ headingPattern("Decisiones Arquitect(?:o|\\u00F3)nicas Principales"),
6
55
  ];
56
+ export function matchesAnyPattern(content, patterns) {
57
+ return patterns.some((pattern) => pattern.test(content));
58
+ }
7
59
  //# sourceMappingURL=section-patterns.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"section-patterns.js","sourceRoot":"","sources":["../../src/transition/section-patterns.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,0BAA0B,GAAG;IACxC,cAAc;IACd,sBAAsB;IACtB,iBAAiB;IACjB,qBAAqB;CACb,CAAC"}
1
+ {"version":3,"file":"section-patterns.js","sourceRoot":"","sources":["../../src/transition/section-patterns.ts"],"names":[],"mappings":"AAAA,SAAS,cAAc,CAAC,UAAkB;IACxC,OAAO,IAAI,MAAM,CAAC,UAAU,UAAU,iBAAiB,EAAE,IAAI,CAAC,CAAC;AACjE,CAAC;AAED,MAAM,CAAC,MAAM,8BAA8B,GAAG;IAC5C,cAAc,CAAC,mBAAmB,CAAC;IACnC,cAAc,CAAC,QAAQ,CAAC;IACxB,cAAc,CAAC,OAAO,CAAC;IACvB,cAAc,CAAC,eAAe,CAAC;IAC/B,cAAc,CAAC,kBAAkB,CAAC;IAClC,cAAc,CAAC,QAAQ,CAAC;IACxB,cAAc,CAAC,2BAA2B,CAAC;IAC3C,cAAc,CAAC,mBAAmB,CAAC;IACnC,cAAc,CAAC,SAAS,CAAC;IACzB,cAAc,CAAC,6BAA6B,CAAC;CACrC,CAAC;AAEX,MAAM,CAAC,MAAM,wCAAwC,GAAG;IACtD,cAAc,CAAC,yBAAyB,CAAC;IACzC,cAAc,CAAC,uBAAuB,CAAC;IACvC,cAAc,CAAC,wBAAwB,CAAC;CAChC,CAAC;AAEX,MAAM,CAAC,MAAM,4CAA4C,GAAG;IAC1D,cAAc,CAAC,kCAAkC,CAAC;IAClD,cAAc,CAAC,KAAK,CAAC;IACrB,cAAc,CAAC,SAAS,CAAC;IACzB,cAAc,CAAC,oBAAoB,CAAC;IACpC,cAAc,CAAC,uCAAuC,CAAC;IACvD,cAAc,CAAC,WAAW,CAAC;IAC3B,cAAc,CAAC,wBAAwB,CAAC;IACxC,cAAc,CAAC,2BAA2B,CAAC;IAC3C,cAAc,CAAC,SAAS,CAAC;IACzB,cAAc,CAAC,sBAAsB,CAAC;CAC9B,CAAC;AAEX,MAAM,CAAC,MAAM,0BAA0B,GAAG;IACxC,cAAc,CAAC,OAAO,CAAC;IACvB,cAAc,CAAC,eAAe,CAAC;IAC/B,cAAc,CAAC,UAAU,CAAC;IAC1B,cAAc,CAAC,cAAc,CAAC;IAC9B,cAAc,CAAC,QAAQ,CAAC;IACxB,cAAc,CAAC,WAAW,CAAC;IAC3B,cAAc,CAAC,gBAAgB,CAAC;IAChC,cAAc,CAAC,SAAS,CAAC;IACzB,cAAc,CAAC,YAAY,CAAC;IAC5B,cAAc,CAAC,kBAAkB,CAAC;CAC1B,CAAC;AAEX,MAAM,CAAC,MAAM,kCAAkC,GAAG;IAChD,cAAc,CAAC,YAAY,CAAC;IAC5B,cAAc,CAAC,kBAAkB,CAAC;IAClC,cAAc,CAAC,OAAO,CAAC;IACvB,cAAc,CAAC,8BAA8B,CAAC;IAC9C,cAAc,CAAC,6BAA6B,CAAC;IAC7C,cAAc,CAAC,+BAA+B,CAAC;IAC/C,cAAc,CAAC,4DAA4D,CAAC;IAC5E,cAAc,CAAC,8BAA8B,CAAC;IAC9C,cAAc,CAAC,oDAAoD,CAAC;CAC5D,CAAC;AAEX,MAAM,UAAU,iBAAiB,CAAC,OAAe,EAAE,QAA2B;IAC5E,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;AAC3D,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import { getMarkdownFilesWithContent } from "../utils/file-system.js";
2
2
  import { LARGE_FILE_THRESHOLD_BYTES, DEFAULT_SNIPPET_MAX_LENGTH } from "../utils/constants.js";
3
+ import { FUNCTIONAL_REQUIREMENTS_SECTION_PATTERNS, PROJECT_GOALS_SECTION_PATTERNS, TECH_STACK_SOURCE_SECTION_PATTERNS, matchesAnyPattern, } from "./section-patterns.js";
3
4
  /**
4
5
  * Detects the type of a spec file based on its filename.
5
6
  */
@@ -30,9 +31,11 @@ export function detectSpecFileType(filename, content) {
30
31
  */
31
32
  function detectFromContent(content) {
32
33
  const snippet = content.slice(0, 2000);
33
- if (/^##\s+Functional Requirements/m.test(snippet) || /^##\s+Executive Summary/m.test(snippet))
34
+ if (matchesAnyPattern(snippet, FUNCTIONAL_REQUIREMENTS_SECTION_PATTERNS) ||
35
+ matchesAnyPattern(snippet, PROJECT_GOALS_SECTION_PATTERNS))
34
36
  return "prd";
35
- if (/^##\s+Tech Stack/m.test(snippet) || /^##\s+Architecture Decision/m.test(snippet))
37
+ if (matchesAnyPattern(snippet, TECH_STACK_SOURCE_SECTION_PATTERNS) ||
38
+ /^##\s+Architecture Decision/m.test(snippet))
36
39
  return "architecture";
37
40
  if (/^###\s+Story\s+\d+\.\d+:/m.test(snippet))
38
41
  return "stories";
@@ -1 +1 @@
1
- {"version":3,"file":"specs-index.js","sourceRoot":"","sources":["../../src/transition/specs-index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"specs-index.js","sourceRoot":"","sources":["../../src/transition/specs-index.ts"],"names":[],"mappings":"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"}
@@ -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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"}
@@ -0,0 +1,46 @@
1
+ const RAW_STORY_ID_SOURCE = String.raw `[\d.]+`;
2
+ const CANONICAL_STORY_ID_PATTERN = /^(\d+)\.(\d+)$/;
3
+ export const STORY_HEADER_PATTERN = new RegExp(String.raw `^###\s+Story\s+(${RAW_STORY_ID_SOURCE}):\s+(.+)`);
4
+ export function createFixPlanStoryLinePattern() {
5
+ return new RegExp(String.raw `^\s*-\s*\[([ xX])\]\s*Story\s+(${RAW_STORY_ID_SOURCE}):\s*(.+?)$`, "gm");
6
+ }
7
+ export function createOpenFixPlanStoryLinePattern() {
8
+ return new RegExp(String.raw `^(\s*-\s*)\[ \](\s*Story\s+(${RAW_STORY_ID_SOURCE}):)`, "gm");
9
+ }
10
+ export function isCanonicalStoryId(value) {
11
+ return CANONICAL_STORY_ID_PATTERN.test(value);
12
+ }
13
+ export function parseCanonicalStoryId(value) {
14
+ const match = value.match(CANONICAL_STORY_ID_PATTERN);
15
+ if (!match) {
16
+ return null;
17
+ }
18
+ return {
19
+ epic: Number(match[1]),
20
+ story: Number(match[2]),
21
+ };
22
+ }
23
+ export function compareStoryIds(left, right) {
24
+ const leftParts = parseCanonicalStoryId(left);
25
+ const rightParts = parseCanonicalStoryId(right);
26
+ if (leftParts && rightParts) {
27
+ if (leftParts.epic !== rightParts.epic) {
28
+ return leftParts.epic - rightParts.epic;
29
+ }
30
+ return leftParts.story - rightParts.story;
31
+ }
32
+ if (leftParts) {
33
+ return -1;
34
+ }
35
+ if (rightParts) {
36
+ return 1;
37
+ }
38
+ return left.localeCompare(right);
39
+ }
40
+ export function formatStoryAnchor(value) {
41
+ return value.replaceAll(".", "-");
42
+ }
43
+ export function formatMalformedStoryIdWarning(id, title) {
44
+ return `Malformed story ID "${id}" in "${title}" (expected format: N.M)`;
45
+ }
46
+ //# sourceMappingURL=story-id.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"story-id.js","sourceRoot":"","sources":["../../src/transition/story-id.ts"],"names":[],"mappings":"AAAA,MAAM,mBAAmB,GAAG,MAAM,CAAC,GAAG,CAAA,QAAQ,CAAC;AAC/C,MAAM,0BAA0B,GAAG,gBAAgB,CAAC;AAOpD,MAAM,CAAC,MAAM,oBAAoB,GAAG,IAAI,MAAM,CAC5C,MAAM,CAAC,GAAG,CAAA,mBAAmB,mBAAmB,WAAW,CAC5D,CAAC;AAEF,MAAM,UAAU,6BAA6B;IAC3C,OAAO,IAAI,MAAM,CACf,MAAM,CAAC,GAAG,CAAA,kCAAkC,mBAAmB,aAAa,EAC5E,IAAI,CACL,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iCAAiC;IAC/C,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,CAAA,+BAA+B,mBAAmB,KAAK,EAAE,IAAI,CAAC,CAAC;AAC7F,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,KAAa;IAC9C,OAAO,0BAA0B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,KAAa;IACjD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;IACtD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO;QACL,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACtB,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;KACxB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAAY,EAAE,KAAa;IACzD,MAAM,SAAS,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;IAC9C,MAAM,UAAU,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;IAEhD,IAAI,SAAS,IAAI,UAAU,EAAE,CAAC;QAC5B,IAAI,SAAS,CAAC,IAAI,KAAK,UAAU,CAAC,IAAI,EAAE,CAAC;YACvC,OAAO,SAAS,CAAC,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC;QAC1C,CAAC;QAED,OAAO,SAAS,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC;IAC5C,CAAC;IAED,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,CAAC,CAAC,CAAC;IACZ,CAAC;IAED,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,CAAC,CAAC;IACX,CAAC;IAED,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,KAAa;IAC7C,OAAO,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,6BAA6B,CAAC,EAAU,EAAE,KAAa;IACrE,OAAO,uBAAuB,EAAE,SAAS,KAAK,0BAA0B,CAAC;AAC3E,CAAC"}
@@ -1,11 +1,10 @@
1
+ import { STORY_HEADER_PATTERN, formatMalformedStoryIdWarning, isCanonicalStoryId, } from "./story-id.js";
1
2
  // Cached regex patterns for performance (compiled once at module load)
2
3
  const GIVEN_LINE_PATTERN = /^(?:[-*]\s+)?(?:\*\*)?Given(?:\*\*)?\s/i;
3
4
  const AC_KEYWORD_LINE_PATTERN = /^(?:[-*]\s+)?(?:\*\*)?(Given|When|Then|And)(?:\*\*)?\s/i;
4
5
  const BOLD_PATTERN = /\*\*/g;
5
6
  const EPIC_HEADER_PATTERN = /^##\s+Epic\s+\d+:\s+(.+)/;
6
7
  const HEADING_PATTERN = /^#{2,3}\s/;
7
- const STORY_HEADER_PATTERN = /^###\s+Story\s+([\d.]+):\s+(.+)/;
8
- const STORY_ID_PATTERN = /^\d+\.\d+$/;
9
8
  const AC_HEADING_PATTERN = /^\*?\*?Acceptance Criteria\*?\*?:?/i;
10
9
  function isGivenLine(line) {
11
10
  return GIVEN_LINE_PATTERN.test(line.trim());
@@ -51,10 +50,10 @@ function parseAcBlocks(lines) {
51
50
  }
52
51
  return criteria;
53
52
  }
54
- export function parseStories(content) {
55
- return parseStoriesWithWarnings(content).stories;
53
+ export function parseStories(content, sourceFile = "stories.md") {
54
+ return parseStoriesWithWarnings(content, sourceFile).stories;
56
55
  }
57
- export function parseStoriesWithWarnings(content) {
56
+ export function parseStoriesWithWarnings(content, sourceFile = "stories.md") {
58
57
  const stories = [];
59
58
  const warnings = [];
60
59
  let currentEpic = "";
@@ -84,8 +83,8 @@ export function parseStoriesWithWarnings(content) {
84
83
  const id = storyMatch[1];
85
84
  const title = storyMatch[2].trim();
86
85
  // Validate story ID format (should be like "1.1", "2.3", etc.)
87
- if (!STORY_ID_PATTERN.test(id)) {
88
- warnings.push(`Story "${title}" has malformed ID "${id}" (expected format: N.M)`);
86
+ if (!isCanonicalStoryId(id)) {
87
+ warnings.push(formatMalformedStoryIdWarning(id, title));
89
88
  }
90
89
  // Collect all body lines until next heading
91
90
  const bodyLines = [];
@@ -129,6 +128,7 @@ export function parseStoriesWithWarnings(content) {
129
128
  title,
130
129
  description: descLines.join(" "),
131
130
  acceptanceCriteria,
131
+ sourceFile,
132
132
  });
133
133
  }
134
134
  }
@@ -1 +1 @@
1
- {"version":3,"file":"story-parsing.js","sourceRoot":"","sources":["../../src/transition/story-parsing.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"story-parsing.js","sourceRoot":"","sources":["../../src/transition/story-parsing.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,5 @@
1
1
  import { extractFirstMatchingSection } from "./context.js";
2
- const TECH_STACK_SOURCE_SECTION_PATTERNS = [
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;AAE3D,MAAM,kCAAkC,GAAG;IACzC,mBAAmB;IACnB,yBAAyB;IACzB,cAAc;IACd,qCAAqC;IACrC,oCAAoC;CAC5B,CAAC;AAEX,MAAM,UAAU,sBAAsB,CAAC,OAAe;IACpD,OAAO,2BAA2B,CAChC,OAAO,EACP,kCAAkC,EAClC,MAAM,CAAC,iBAAiB,CACzB,CAAC,IAAI,EAAE,CAAC;AACX,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,OAAe;IAC7C,MAAM,cAAc,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAC;IACvD,IAAI,CAAC,cAAc;QAAE,OAAO,IAAI,CAAC;IAEjC,0BAA0B;IAC1B,MAAM,MAAM,GACV,oBAAoB,CAAC,IAAI,CAAC,cAAc,CAAC;QACzC,iBAAiB,CAAC,IAAI,CAAC,cAAc,CAAC;QACtC,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAClC,MAAM,QAAQ,GAAG,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACvF,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACrF,MAAM,IAAI,GACR,oDAAoD,CAAC,IAAI,CAAC,cAAc,CAAC;QACzE,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAErC,IAAI,MAAM,EAAE,CAAC;QACX,8BAA8B;QAC9B,IAAI,OAAO,GAAG,UAAU,CAAC;QACzB,IAAI,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC;YAAE,OAAO,GAAG,gBAAgB,CAAC;aAC9D,IAAI,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC;YAAE,OAAO,GAAG,UAAU,CAAC;aAC3D,IAAI,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC;YAAE,OAAO,GAAG,WAAW,CAAC;QAElE,uBAAuB;QACvB,IAAI,QAAQ,GAAG,eAAe,CAAC;QAC/B,IAAI,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC;YAAE,QAAQ,GAAG,SAAS,CAAC;QAE1D,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,aAAa,EAAE,CAAC;IACtF,CAAC;IAED,IAAI,QAAQ,EAAE,CAAC;QACb,IAAI,OAAO,GAAG,kBAAkB,CAAC;QACjC,IAAI,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC;YAAE,OAAO,GAAG,QAAQ,CAAC;aACtD,IAAI,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC;YAAE,OAAO,GAAG,6BAA6B,CAAC;QAEvF,OAAO;YACL,KAAK,EAAE,iCAAiC;YACxC,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,iBAAiB;YACxB,GAAG,EAAE,qCAAqC;SAC3C,CAAC;IACJ,CAAC;IAED,IAAI,MAAM,EAAE,CAAC;QACX,OAAO;YACL,KAAK,EAAE,aAAa;YACpB,IAAI,EAAE,YAAY;YAClB,KAAK,EAAE,uBAAuB;YAC9B,GAAG,EAAE,WAAW;SACjB,CAAC;IACJ,CAAC;IAED,IAAI,IAAI,EAAE,CAAC;QACT,OAAO;YACL,KAAK,EAAE,iBAAiB;YACxB,IAAI,EAAE,eAAe;YACrB,KAAK,EAAE,gBAAgB;YACvB,GAAG,EAAE,UAAU;SAChB,CAAC;IACJ,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,QAAgB,EAAE,KAAgB;IACjE,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;IAC1D,MAAM,QAAQ,GAA2C;QACvD,EAAE,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,KAAK,CAAC,KAAK,EAAE;QAClD,EAAE,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,KAAK,CAAC,IAAI,EAAE;QACjD,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAE,KAAK,CAAC,KAAK,EAAE;QACnD,EAAE,OAAO,EAAE,oBAAoB,EAAE,OAAO,EAAE,KAAK,CAAC,GAAG,EAAE;KACtD,CAAC;IAEF,IAAI,MAAM,GAAG,QAAQ,CAAC;IACtB,KAAK,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,QAAQ,EAAE,CAAC;QAC5C,uDAAuD;QACvD,MAAM,OAAO,GAAG,IAAI,MAAM,CACxB,OAAO,OAAO,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,+CAA+C,EACpG,GAAG,CACJ,CAAC;QACF,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,eAAe,OAAO,GAAG,OAAO,GAAG,OAAO,QAAQ,CAAC,CAAC;IACvF,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bmalph",
3
- "version": "2.7.2",
3
+ "version": "2.7.4",
4
4
  "description": "Unified AI Development Framework - BMAD phases with Ralph execution loop",
5
5
  "type": "module",
6
6
  "bin": {