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,55 +1,122 @@
|
|
|
1
|
-
import { readFile,
|
|
2
|
-
import { join } from "node:path";
|
|
1
|
+
import { readFile, rm, rename } from "node:fs/promises";
|
|
2
|
+
import { join, relative } from "node:path";
|
|
3
3
|
import { debug, info, warn } from "../utils/logger.js";
|
|
4
4
|
import { isEnoent, formatError } from "../utils/errors.js";
|
|
5
|
-
import { atomicWriteFile, exists } from "../utils/file-system.js";
|
|
5
|
+
import { atomicWriteFile, exists, getFilesRecursive } from "../utils/file-system.js";
|
|
6
6
|
import { readConfig } from "../utils/config.js";
|
|
7
7
|
import { readState, writeState } from "../utils/state.js";
|
|
8
8
|
import { parseStoriesWithWarnings } from "./story-parsing.js";
|
|
9
9
|
import { generateFixPlan, parseFixPlan, mergeFixPlanProgress, detectOrphanedCompletedStories, detectRenumberedStories, buildCompletedTitleMap, normalizeTitle, } from "./fix-plan.js";
|
|
10
10
|
import { detectTechStack, customizeAgentMd } from "./tech-stack.js";
|
|
11
|
-
import { findArtifactsDir } from "./artifacts.js";
|
|
11
|
+
import { findArtifactsDir, resolvePlanningSpecsSubpath } from "./artifacts.js";
|
|
12
12
|
import { runPreflight, PreflightValidationError } from "./preflight.js";
|
|
13
|
+
import { collectTransitionArtifacts, combineArtifactContents } from "./artifact-collection.js";
|
|
13
14
|
import { extractProjectContext, generateProjectContextMd, generatePrompt, detectTruncation, } from "./context.js";
|
|
14
15
|
import { generateSpecsChangelog, formatChangelog } from "./specs-changelog.js";
|
|
15
16
|
import { generateSpecsIndex, formatSpecsIndexMd } from "./specs-index.js";
|
|
17
|
+
import { parseSprintStatus } from "./sprint-status.js";
|
|
18
|
+
import { prepareSpecsDirectory } from "./specs-sync.js";
|
|
19
|
+
function compareStoryIds(left, right) {
|
|
20
|
+
const [leftEpic = 0, leftStory = 0] = left.split(".").map((part) => Number(part));
|
|
21
|
+
const [rightEpic = 0, rightStory = 0] = right.split(".").map((part) => Number(part));
|
|
22
|
+
if (leftEpic !== rightEpic) {
|
|
23
|
+
return leftEpic - rightEpic;
|
|
24
|
+
}
|
|
25
|
+
return leftStory - rightStory;
|
|
26
|
+
}
|
|
27
|
+
function ensureUniqueStoryIds(stories) {
|
|
28
|
+
const sourceById = new Map();
|
|
29
|
+
for (const story of stories) {
|
|
30
|
+
const existingSource = sourceById.get(story.id);
|
|
31
|
+
if (existingSource) {
|
|
32
|
+
throw new Error(`Duplicate story ID "${story.id}" found in ${existingSource} and ${story.sourceFile}`);
|
|
33
|
+
}
|
|
34
|
+
sourceById.set(story.id, story.sourceFile);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
async function resolveSprintStatusSource(projectDir, artifactsDir, collectedArtifacts, artifactContents) {
|
|
38
|
+
const canonicalCandidates = [
|
|
39
|
+
"_bmad-output/implementation-artifacts/sprint-status.yaml",
|
|
40
|
+
"_bmad-output/implementation_artifacts/sprint-status.yaml",
|
|
41
|
+
];
|
|
42
|
+
for (const candidate of canonicalCandidates) {
|
|
43
|
+
const candidatePath = join(projectDir, candidate);
|
|
44
|
+
if (!(await exists(candidatePath))) {
|
|
45
|
+
continue;
|
|
46
|
+
}
|
|
47
|
+
try {
|
|
48
|
+
return {
|
|
49
|
+
displayPath: candidate,
|
|
50
|
+
content: await readFile(candidatePath, "utf-8"),
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
catch (err) {
|
|
54
|
+
return {
|
|
55
|
+
displayPath: candidate,
|
|
56
|
+
content: null,
|
|
57
|
+
readError: formatError(err),
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
if (!collectedArtifacts.sprintStatusFile) {
|
|
62
|
+
return null;
|
|
63
|
+
}
|
|
64
|
+
const artifactsRelativeDir = relative(projectDir, artifactsDir).replace(/\\/g, "/");
|
|
65
|
+
return {
|
|
66
|
+
displayPath: `${artifactsRelativeDir}/${collectedArtifacts.sprintStatusFile}`,
|
|
67
|
+
content: artifactContents.get(collectedArtifacts.sprintStatusFile) ?? null,
|
|
68
|
+
};
|
|
69
|
+
}
|
|
16
70
|
export async function runTransition(projectDir, options) {
|
|
17
71
|
info("Locating BMAD artifacts...");
|
|
18
72
|
const artifactsDir = await findArtifactsDir(projectDir);
|
|
19
73
|
if (!artifactsDir) {
|
|
20
74
|
throw new Error("No BMAD artifacts found. Run BMAD planning phases first (at minimum: Create PRD, Create Architecture, Create Epics and Stories).");
|
|
21
75
|
}
|
|
22
|
-
|
|
23
|
-
const
|
|
76
|
+
const files = await getFilesRecursive(artifactsDir);
|
|
77
|
+
const collectedArtifacts = collectTransitionArtifacts(files);
|
|
24
78
|
// Read artifact contents early for preflight validation and later use
|
|
25
79
|
const artifactContents = new Map();
|
|
26
|
-
for (const file of files) {
|
|
27
|
-
if (
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
80
|
+
for (const file of collectedArtifacts.files) {
|
|
81
|
+
if (!/\.(?:md|ya?ml)$/i.test(file)) {
|
|
82
|
+
continue;
|
|
83
|
+
}
|
|
84
|
+
try {
|
|
85
|
+
const content = await readFile(join(artifactsDir, file), "utf-8");
|
|
86
|
+
artifactContents.set(file, content);
|
|
87
|
+
}
|
|
88
|
+
catch (err) {
|
|
89
|
+
warn(`Could not read artifact ${file}: ${formatError(err)}`);
|
|
35
90
|
}
|
|
36
91
|
}
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
debug(`Files in artifacts dir: ${files.join(", ")}`);
|
|
41
|
-
throw new Error(`No epics/stories file found in ${artifactsDir}. Available files: ${files.join(", ")}. Run 'CE' (Create Epics and Stories) first.`);
|
|
92
|
+
if (collectedArtifacts.storyFiles.length === 0) {
|
|
93
|
+
debug(`Files in artifacts dir: ${collectedArtifacts.files.join(", ")}`);
|
|
94
|
+
throw new Error(`No epics/stories file found in ${artifactsDir}. Available files: ${collectedArtifacts.files.join(", ")}. Run 'CE' (Create Epics and Stories) first.`);
|
|
42
95
|
}
|
|
43
|
-
debug(`Using stories
|
|
44
|
-
const storiesContent = await readFile(join(artifactsDir, storiesFile), "utf-8");
|
|
96
|
+
debug(`Using stories files: ${collectedArtifacts.storyFiles.join(", ")}`);
|
|
45
97
|
info("Parsing stories...");
|
|
46
|
-
const
|
|
98
|
+
const stories = [];
|
|
99
|
+
const parseWarnings = [];
|
|
100
|
+
for (const storyFile of collectedArtifacts.storyFiles) {
|
|
101
|
+
const storiesContent = artifactContents.get(storyFile);
|
|
102
|
+
if (!storiesContent) {
|
|
103
|
+
warn(`Could not read stories artifact ${storyFile}`);
|
|
104
|
+
continue;
|
|
105
|
+
}
|
|
106
|
+
const parsedStories = parseStoriesWithWarnings(storiesContent, storyFile);
|
|
107
|
+
stories.push(...parsedStories.stories);
|
|
108
|
+
parseWarnings.push(...parsedStories.warnings);
|
|
109
|
+
}
|
|
110
|
+
ensureUniqueStoryIds(stories);
|
|
111
|
+
stories.sort((left, right) => compareStoryIds(left.id, right.id) ||
|
|
112
|
+
left.sourceFile.localeCompare(right.sourceFile) ||
|
|
113
|
+
left.title.localeCompare(right.title));
|
|
47
114
|
if (stories.length === 0) {
|
|
48
|
-
throw new Error("No stories parsed from the epics
|
|
115
|
+
throw new Error("No stories parsed from the epics files. Ensure stories follow the format: ### Story N.M: Title");
|
|
49
116
|
}
|
|
50
117
|
// Pre-flight validation
|
|
51
118
|
info("Pre-flight validation...");
|
|
52
|
-
const preflightResult = runPreflight(artifactContents, files, stories, parseWarnings);
|
|
119
|
+
const preflightResult = runPreflight(artifactContents, collectedArtifacts.files, stories, parseWarnings);
|
|
53
120
|
if (!preflightResult.pass) {
|
|
54
121
|
if (options?.force) {
|
|
55
122
|
warn("Pre-flight validation has errors but --force was used, continuing...");
|
|
@@ -63,13 +130,17 @@ export async function runTransition(projectDir, options) {
|
|
|
63
130
|
// Check existing fix_plan for completed items (smart merge)
|
|
64
131
|
let completedIds = new Set();
|
|
65
132
|
let existingItems = [];
|
|
133
|
+
let orphanWarnings = [];
|
|
134
|
+
let renumberWarnings = [];
|
|
135
|
+
const completionWarnings = [];
|
|
136
|
+
let useTitleBasedMerge = true;
|
|
137
|
+
let fixPlanPreserved = false;
|
|
66
138
|
const fixPlanPath = join(projectDir, ".ralph/@fix_plan.md");
|
|
67
139
|
const fixPlanExisted = await exists(fixPlanPath);
|
|
68
140
|
try {
|
|
69
141
|
const existingFixPlan = await readFile(fixPlanPath, "utf-8");
|
|
70
142
|
existingItems = parseFixPlan(existingFixPlan);
|
|
71
|
-
|
|
72
|
-
debug(`Found ${completedIds.size} completed stories in existing fix_plan`);
|
|
143
|
+
debug(`Found ${existingItems.filter((item) => item.completed).length} completed stories in existing fix_plan`);
|
|
73
144
|
}
|
|
74
145
|
catch (err) {
|
|
75
146
|
if (isEnoent(err)) {
|
|
@@ -79,86 +150,82 @@ export async function runTransition(projectDir, options) {
|
|
|
79
150
|
warn(`Could not read existing fix_plan: ${formatError(err)}`);
|
|
80
151
|
}
|
|
81
152
|
}
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
153
|
+
const sprintStatusSource = await resolveSprintStatusSource(projectDir, artifactsDir, collectedArtifacts, artifactContents);
|
|
154
|
+
if (sprintStatusSource) {
|
|
155
|
+
useTitleBasedMerge = false;
|
|
156
|
+
if (sprintStatusSource.readError) {
|
|
157
|
+
completionWarnings.push(`Sprint status file "${sprintStatusSource.displayPath}" could not be read: ${sprintStatusSource.readError}. All stories were left unchecked.`);
|
|
158
|
+
}
|
|
159
|
+
else if (!sprintStatusSource.content) {
|
|
160
|
+
completionWarnings.push(`Sprint status file "${sprintStatusSource.displayPath}" could not be read. All stories were left unchecked.`);
|
|
161
|
+
}
|
|
162
|
+
else {
|
|
163
|
+
const sprintStatus = parseSprintStatus(sprintStatusSource.content);
|
|
164
|
+
completionWarnings.push(...sprintStatus.warnings);
|
|
165
|
+
if (sprintStatus.valid) {
|
|
166
|
+
completedIds = new Set(stories
|
|
167
|
+
.filter((story) => sprintStatus.storyStatusById.get(story.id) === "done")
|
|
168
|
+
.map((story) => story.id));
|
|
169
|
+
fixPlanPreserved = completedIds.size > 0;
|
|
170
|
+
for (const story of stories) {
|
|
171
|
+
if (!sprintStatus.storyStatusById.has(story.id)) {
|
|
172
|
+
completionWarnings.push(`Sprint status is missing story ${story.id} (${story.title}); leaving it unchecked.`);
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
else {
|
|
179
|
+
completedIds = new Set(existingItems.filter((item) => item.completed).map((item) => item.id));
|
|
180
|
+
fixPlanPreserved = completedIds.size > 0;
|
|
181
|
+
// Detect orphaned completed stories (Bug #2)
|
|
182
|
+
const newStoryIds = new Set(stories.map((story) => story.id));
|
|
183
|
+
orphanWarnings = detectOrphanedCompletedStories(existingItems, newStoryIds);
|
|
184
|
+
// Build title maps for title-based merge (Gap 3: renumbered story preservation)
|
|
185
|
+
const completedTitles = buildCompletedTitleMap(existingItems);
|
|
186
|
+
const newTitleMap = new Map(stories.map((story) => [story.id, story.title]));
|
|
187
|
+
// Detect which stories were preserved via title match (for renumber warning suppression)
|
|
188
|
+
const preservedIds = new Set();
|
|
189
|
+
for (const [id, title] of newTitleMap) {
|
|
190
|
+
if (!completedIds.has(id) && completedTitles.has(normalizeTitle(title))) {
|
|
191
|
+
preservedIds.add(id);
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
// Detect renumbered stories (Bug #3), skipping auto-preserved ones
|
|
195
|
+
renumberWarnings = detectRenumberedStories(existingItems, stories, preservedIds);
|
|
196
|
+
}
|
|
86
197
|
const completedTitles = buildCompletedTitleMap(existingItems);
|
|
87
|
-
const newTitleMap = new Map(stories.map((
|
|
198
|
+
const newTitleMap = new Map(stories.map((story) => [story.id, story.title]));
|
|
88
199
|
// Generate new fix_plan from current stories, preserving completion status
|
|
89
200
|
info(`Generating fix plan for ${stories.length} stories...`);
|
|
90
|
-
const
|
|
91
|
-
const
|
|
92
|
-
|
|
93
|
-
const preservedIds = new Set();
|
|
94
|
-
for (const [id, title] of newTitleMap) {
|
|
95
|
-
if (!completedIds.has(id) && completedTitles.has(normalizeTitle(title))) {
|
|
96
|
-
preservedIds.add(id);
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
// Detect renumbered stories (Bug #3), skipping auto-preserved ones
|
|
100
|
-
const renumberWarnings = detectRenumberedStories(existingItems, stories, preservedIds);
|
|
201
|
+
const planningSpecsSubpath = resolvePlanningSpecsSubpath(projectDir, artifactsDir);
|
|
202
|
+
const newFixPlan = generateFixPlan(stories, undefined, planningSpecsSubpath);
|
|
203
|
+
const mergedFixPlan = mergeFixPlanProgress(newFixPlan, completedIds, useTitleBasedMerge ? newTitleMap : undefined, useTitleBasedMerge ? completedTitles : undefined);
|
|
101
204
|
await atomicWriteFile(fixPlanPath, mergedFixPlan);
|
|
102
205
|
generatedFiles.push({
|
|
103
206
|
path: ".ralph/@fix_plan.md",
|
|
104
207
|
action: fixPlanExisted ? "updated" : "created",
|
|
105
208
|
});
|
|
106
|
-
// Track whether progress was preserved for return value
|
|
107
|
-
const fixPlanPreserved = completedIds.size > 0;
|
|
108
|
-
// Generate changelog before overwriting specs/
|
|
109
209
|
const specsDir = join(projectDir, ".ralph/specs");
|
|
110
|
-
const
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
catch (err) {
|
|
123
|
-
warn(`Could not generate SPECS_CHANGELOG.md: ${formatError(err)}`);
|
|
210
|
+
const specsTmpDir = join(projectDir, ".ralph/specs.new");
|
|
211
|
+
info("Preparing specs tree...");
|
|
212
|
+
await prepareSpecsDirectory(projectDir, artifactsDir, collectedArtifacts.files, specsTmpDir);
|
|
213
|
+
try {
|
|
214
|
+
const changes = await generateSpecsChangelog(specsDir, specsTmpDir);
|
|
215
|
+
if (changes.length > 0) {
|
|
216
|
+
const changelog = formatChangelog(changes, new Date().toISOString());
|
|
217
|
+
await atomicWriteFile(join(projectDir, ".ralph/SPECS_CHANGELOG.md"), changelog);
|
|
218
|
+
generatedFiles.push({ path: ".ralph/SPECS_CHANGELOG.md", action: "updated" });
|
|
219
|
+
debug(`Generated SPECS_CHANGELOG.md with ${changes.length} changes`);
|
|
124
220
|
}
|
|
125
221
|
}
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
}
|
|
129
|
-
// Copy entire _bmad-output/ tree to .ralph/specs/ (preserving structure)
|
|
130
|
-
if (!bmadOutputExists) {
|
|
131
|
-
debug("_bmad-output not found, falling back to artifacts directory");
|
|
222
|
+
catch (err) {
|
|
223
|
+
warn(`Could not generate SPECS_CHANGELOG.md: ${formatError(err)}`);
|
|
132
224
|
}
|
|
133
225
|
info("Copying specs to .ralph/specs/...");
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
await rm(specsTmpDir, { recursive: true, force: true });
|
|
138
|
-
await mkdir(specsTmpDir, { recursive: true });
|
|
139
|
-
await cp(bmadOutputDir, specsTmpDir, { recursive: true, dereference: false });
|
|
140
|
-
// Verify the copy succeeded before swapping
|
|
141
|
-
await access(specsTmpDir);
|
|
142
|
-
await rm(specsDir, { recursive: true, force: true });
|
|
143
|
-
await rename(specsTmpDir, specsDir);
|
|
144
|
-
generatedFiles.push({ path: ".ralph/specs/", action: "updated" });
|
|
145
|
-
debug("Copied _bmad-output/ to .ralph/specs/ (atomic)");
|
|
146
|
-
}
|
|
147
|
-
else {
|
|
148
|
-
// Fall back to just artifactsDir if _bmad-output root doesn't exist
|
|
149
|
-
await rm(specsTmpDir, { recursive: true, force: true });
|
|
150
|
-
await mkdir(specsTmpDir, { recursive: true });
|
|
151
|
-
for (const file of files) {
|
|
152
|
-
await cp(join(artifactsDir, file), join(specsTmpDir, file), {
|
|
153
|
-
recursive: true,
|
|
154
|
-
dereference: false,
|
|
155
|
-
});
|
|
156
|
-
}
|
|
157
|
-
await access(specsTmpDir);
|
|
158
|
-
await rm(specsDir, { recursive: true, force: true });
|
|
159
|
-
await rename(specsTmpDir, specsDir);
|
|
160
|
-
generatedFiles.push({ path: ".ralph/specs/", action: "updated" });
|
|
161
|
-
}
|
|
226
|
+
await rm(specsDir, { recursive: true, force: true });
|
|
227
|
+
await rename(specsTmpDir, specsDir);
|
|
228
|
+
generatedFiles.push({ path: ".ralph/specs/", action: "updated" });
|
|
162
229
|
// Generate SPECS_INDEX.md for intelligent spec reading
|
|
163
230
|
info("Generating SPECS_INDEX.md...");
|
|
164
231
|
const specsIndexPath = join(projectDir, ".ralph/SPECS_INDEX.md");
|
|
@@ -234,25 +301,22 @@ export async function runTransition(projectDir, options) {
|
|
|
234
301
|
await atomicWriteFile(join(projectDir, ".ralph/PROMPT.md"), prompt);
|
|
235
302
|
generatedFiles.push({ path: ".ralph/PROMPT.md", action: promptExisted ? "updated" : "created" });
|
|
236
303
|
// Customize @AGENT.md based on detected tech stack from architecture
|
|
237
|
-
const
|
|
238
|
-
if (
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
const
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
generatedFiles.push({ path: ".ralph/@AGENT.md", action: "updated" });
|
|
249
|
-
debug("Customized @AGENT.md with detected tech stack");
|
|
250
|
-
}
|
|
251
|
-
}
|
|
252
|
-
catch (err) {
|
|
253
|
-
warn(`Could not customize @AGENT.md: ${formatError(err)}`);
|
|
304
|
+
const combinedArchitectureContent = combineArtifactContents(collectedArtifacts.architectureFiles, artifactContents);
|
|
305
|
+
if (combinedArchitectureContent) {
|
|
306
|
+
try {
|
|
307
|
+
const stack = detectTechStack(combinedArchitectureContent);
|
|
308
|
+
if (stack) {
|
|
309
|
+
const agentPath = join(projectDir, ".ralph/@AGENT.md");
|
|
310
|
+
const agentTemplate = await readFile(agentPath, "utf-8");
|
|
311
|
+
const customized = customizeAgentMd(agentTemplate, stack);
|
|
312
|
+
await atomicWriteFile(agentPath, customized);
|
|
313
|
+
generatedFiles.push({ path: ".ralph/@AGENT.md", action: "updated" });
|
|
314
|
+
debug("Customized @AGENT.md with detected tech stack");
|
|
254
315
|
}
|
|
255
316
|
}
|
|
317
|
+
catch (err) {
|
|
318
|
+
warn(`Could not customize @AGENT.md: ${formatError(err)}`);
|
|
319
|
+
}
|
|
256
320
|
}
|
|
257
321
|
// Collect warnings from all sources
|
|
258
322
|
const preflightWarnings = preflightResult.issues
|
|
@@ -265,6 +329,7 @@ export async function runTransition(projectDir, options) {
|
|
|
265
329
|
const warnings = [
|
|
266
330
|
...preflightWarnings,
|
|
267
331
|
...nonPreflightParseWarnings,
|
|
332
|
+
...completionWarnings,
|
|
268
333
|
...orphanWarnings,
|
|
269
334
|
...renumberWarnings,
|
|
270
335
|
...truncationWarnings,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orchestration.js","sourceRoot":"","sources":["../../src/transition/orchestration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AACpF,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,UAAU,EAAoB,MAAM,mBAAmB,CAAC;AAE5E,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EACL,eAAe,EACf,YAAY,EACZ,oBAAoB,EACpB,8BAA8B,EAC9B,uBAAuB,EACvB,sBAAsB,EACtB,cAAc,GACf,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AACxE,OAAO,EACL,qBAAqB,EACrB,wBAAwB,EACxB,cAAc,EACd,gBAAgB,GACjB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,sBAAsB,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC/E,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAE1E,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,UAAkB,EAClB,OAA2B;IAE3B,IAAI,CAAC,4BAA4B,CAAC,CAAC;IACnC,MAAM,YAAY,GAAG,MAAM,gBAAgB,CAAC,UAAU,CAAC,CAAC;IACxD,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CACb,kIAAkI,CACnI,CAAC;IACJ,CAAC;IAED,8BAA8B;IAC9B,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,YAAY,CAAC,CAAC;IAE1C,sEAAsE;IACtE,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAkB,CAAC;IACnD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;gBAClE,gBAAgB,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YACtC,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,CAAC,2BAA2B,IAAI,KAAK,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC/D,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,cAAc,GAAG,sDAAsD,CAAC;IAC9E,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAEjF,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,KAAK,CAAC,2BAA2B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACrD,MAAM,IAAI,KAAK,CACb,kCAAkC,YAAY,sBAAsB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,8CAA8C,CACnI,CAAC;IACJ,CAAC;IACD,KAAK,CAAC,uBAAuB,WAAW,EAAE,CAAC,CAAC;IAE5C,MAAM,cAAc,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC,EAAE,OAAO,CAAC,CAAC;IAChF,IAAI,CAAC,oBAAoB,CAAC,CAAC;IAC3B,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,GAAG,wBAAwB,CAAC,cAAc,CAAC,CAAC;IAEtF,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CACb,+FAA+F,CAChG,CAAC;IACJ,CAAC;IAED,wBAAwB;IACxB,IAAI,CAAC,0BAA0B,CAAC,CAAC;IACjC,MAAM,eAAe,GAAG,YAAY,CAAC,gBAAgB,EAAE,KAAK,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC;IAEtF,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;QAC1B,IAAI,OAAO,EAAE,KAAK,EAAE,CAAC;YACnB,IAAI,CAAC,sEAAsE,CAAC,CAAC;QAC/E,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,wBAAwB,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;IAED,2CAA2C;IAC3C,MAAM,cAAc,GAAoB,EAAE,CAAC;IAE3C,4DAA4D;IAC5D,IAAI,YAAY,GAAG,IAAI,GAAG,EAAU,CAAC;IACrC,IAAI,aAAa,GAAyD,EAAE,CAAC;IAC7E,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,EAAE,qBAAqB,CAAC,CAAC;IAC5D,MAAM,cAAc,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC;IACjD,IAAI,CAAC;QACH,MAAM,eAAe,GAAG,MAAM,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QAC7D,aAAa,GAAG,YAAY,CAAC,eAAe,CAAC,CAAC;QAC9C,YAAY,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAClF,KAAK,CAAC,SAAS,YAAY,CAAC,IAAI,yCAAyC,CAAC,CAAC;IAC7E,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAClB,KAAK,CAAC,4CAA4C,CAAC,CAAC;QACtD,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,qCAAqC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChE,CAAC;IACH,CAAC;IAED,6CAA6C;IAC7C,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACtD,MAAM,cAAc,GAAG,8BAA8B,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;IAElF,gFAAgF;IAChF,MAAM,eAAe,GAAG,sBAAsB,CAAC,aAAa,CAAC,CAAC;IAC9D,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAEjE,2EAA2E;IAC3E,IAAI,CAAC,2BAA2B,OAAO,CAAC,MAAM,aAAa,CAAC,CAAC;IAC7D,MAAM,UAAU,GAAG,eAAe,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IACzD,MAAM,aAAa,GAAG,oBAAoB,CACxC,UAAU,EACV,YAAY,EACZ,WAAW,EACX,eAAe,CAChB,CAAC;IAEF,yFAAyF;IACzF,MAAM,YAAY,GAAG,IAAI,GAAG,EAAU,CAAC;IACvC,KAAK,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,WAAW,EAAE,CAAC;QACtC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,eAAe,CAAC,GAAG,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;YACxE,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IAED,mEAAmE;IACnE,MAAM,gBAAgB,GAAG,uBAAuB,CAAC,aAAa,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;IACvF,MAAM,eAAe,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;IAClD,cAAc,CAAC,IAAI,CAAC;QAClB,IAAI,EAAE,qBAAqB;QAC3B,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;KAC/C,CAAC,CAAC;IAEH,wDAAwD;IACxD,MAAM,gBAAgB,GAAG,YAAY,CAAC,IAAI,GAAG,CAAC,CAAC;IAE/C,+CAA+C;IAC/C,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;IAClD,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;IACvD,MAAM,gBAAgB,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;IACrD,IAAI,gBAAgB,EAAE,CAAC;QACrB,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,sBAAsB,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;YACtE,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvB,MAAM,SAAS,GAAG,eAAe,CAAC,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;gBACrE,MAAM,eAAe,CAAC,IAAI,CAAC,UAAU,EAAE,2BAA2B,CAAC,EAAE,SAAS,CAAC,CAAC;gBAChF,cAAc,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,2BAA2B,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;gBAC9E,KAAK,CAAC,qCAAqC,OAAO,CAAC,MAAM,UAAU,CAAC,CAAC;YACvE,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,0CAA0C,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACrE,CAAC;IACH,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,yDAAyD,CAAC,CAAC;IACnE,CAAC;IAED,yEAAyE;IACzE,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtB,KAAK,CAAC,6DAA6D,CAAC,CAAC;IACvE,CAAC;IAED,IAAI,CAAC,mCAAmC,CAAC,CAAC;IAC1C,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAAC;IACzD,IAAI,gBAAgB,EAAE,CAAC;QACrB,oDAAoD;QACpD,MAAM,EAAE,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACxD,MAAM,KAAK,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9C,MAAM,EAAE,CAAC,aAAa,EAAE,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC;QAC9E,4CAA4C;QAC5C,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC;QAC1B,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACrD,MAAM,MAAM,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;QACpC,cAAc,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;QAClE,KAAK,CAAC,gDAAgD,CAAC,CAAC;IAC1D,CAAC;SAAM,CAAC;QACN,oEAAoE;QACpE,MAAM,EAAE,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACxD,MAAM,KAAK,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,EAAE;gBAC1D,SAAS,EAAE,IAAI;gBACf,WAAW,EAAE,KAAK;aACnB,CAAC,CAAC;QACL,CAAC;QACD,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC;QAC1B,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACrD,MAAM,MAAM,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;QACpC,cAAc,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;IACpE,CAAC;IAED,uDAAuD;IACvD,IAAI,CAAC,8BAA8B,CAAC,CAAC;IACrC,MAAM,cAAc,GAAG,IAAI,CAAC,UAAU,EAAE,uBAAuB,CAAC,CAAC;IACjE,MAAM,iBAAiB,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAC;IACvD,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,MAAM,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QACtD,IAAI,UAAU,CAAC,UAAU,GAAG,CAAC,EAAE,CAAC;YAC9B,MAAM,eAAe,CAAC,cAAc,EAAE,kBAAkB,CAAC,UAAU,CAAC,CAAC,CAAC;YACtE,cAAc,CAAC,IAAI,CAAC;gBAClB,IAAI,EAAE,uBAAuB;gBAC7B,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;aAClD,CAAC,CAAC;YACH,KAAK,CAAC,iCAAiC,UAAU,CAAC,UAAU,QAAQ,CAAC,CAAC;QACxE,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,sCAAsC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACjE,CAAC;IAED,sDAAsD;IACtD,IAAI,WAAW,GAAG,SAAS,CAAC;IAC5B,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,UAAU,CAAC,CAAC;QAC5C,IAAI,MAAM,EAAE,IAAI,EAAE,CAAC;YACjB,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC;QAC5B,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,KAAK,CAAC,2CAA2C,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACvE,CAAC;IAED,oEAAoE;IACpE,IAAI,CAAC,kCAAkC,CAAC,CAAC;IACzC,MAAM,kBAAkB,GAAG,IAAI,CAAC,UAAU,EAAE,2BAA2B,CAAC,CAAC;IACzE,MAAM,qBAAqB,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;IAC/D,IAAI,cAAc,GAAG,IAAI,CAAC;IAC1B,IAAI,kBAAkB,GAAa,EAAE,CAAC;IACtC,IAAI,gBAAgB,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;QAC9B,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,qBAAqB,CAAC,gBAAgB,CAAC,CAAC;QACvE,cAAc,GAAG,OAAO,CAAC;QACzB,kBAAkB,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;QACjD,MAAM,SAAS,GAAG,wBAAwB,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;QACxE,MAAM,eAAe,CAAC,kBAAkB,EAAE,SAAS,CAAC,CAAC;QACrD,cAAc,CAAC,IAAI,CAAC;YAClB,IAAI,EAAE,2BAA2B;YACjC,MAAM,EAAE,qBAAqB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;SACtD,CAAC,CAAC;QACH,KAAK,CAAC,8BAA8B,CAAC,CAAC;IACxC,CAAC;IAED,2CAA2C;IAC3C,IAAI,CAAC,yBAAyB,CAAC,CAAC;IAChC,oEAAoE;IACpE,IAAI,MAAc,CAAC;IACnB,IAAI,aAAa,GAAG,KAAK,CAAC;IAC1B,IAAI,CAAC;QACH,MAAM,cAAc,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,kBAAkB,CAAC,EAAE,OAAO,CAAC,CAAC;QACrF,aAAa,GAAG,IAAI,CAAC;QACrB,IAAI,cAAc,CAAC,QAAQ,CAAC,qBAAqB,CAAC,EAAE,CAAC;YACnD,MAAM,GAAG,cAAc,CAAC,OAAO,CAAC,wBAAwB,EAAE,WAAW,CAAC,CAAC;QACzE,CAAC;aAAM,CAAC;YACN,6DAA6D;YAC7D,MAAM,GAAG,cAAc,CAAC,WAAW,EAAE,cAAc,IAAI,SAAS,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAClB,KAAK,CAAC,uDAAuD,CAAC,CAAC;QACjE,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,sCAAsC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACjE,CAAC;QACD,MAAM,GAAG,cAAc,CAAC,WAAW,EAAE,cAAc,IAAI,SAAS,CAAC,CAAC;IACpE,CAAC;IACD,MAAM,eAAe,CAAC,IAAI,CAAC,UAAU,EAAE,kBAAkB,CAAC,EAAE,MAAM,CAAC,CAAC;IACpE,cAAc,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;IAEjG,qEAAqE;IACrE,MAAM,gBAAgB,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACjE,IAAI,gBAAgB,EAAE,CAAC;QACrB,MAAM,WAAW,GAAG,gBAAgB,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAC3D,IAAI,WAAW,EAAE,CAAC;YAChB,IAAI,CAAC;gBACH,MAAM,KAAK,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC;gBAC3C,IAAI,KAAK,EAAE,CAAC;oBACV,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAAC;oBACvD,MAAM,aAAa,GAAG,MAAM,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;oBACzD,MAAM,UAAU,GAAG,gBAAgB,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;oBAC1D,MAAM,eAAe,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;oBAC7C,cAAc,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;oBACrE,KAAK,CAAC,+CAA+C,CAAC,CAAC;gBACzD,CAAC;YACH,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,CAAC,kCAAkC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC7D,CAAC;QACH,CAAC;IACH,CAAC;IAED,oCAAoC;IACpC,MAAM,iBAAiB,GAAG,eAAe,CAAC,MAAM;SAC7C,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,SAAS,IAAI,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,IAAI,OAAO,EAAE,KAAK,CAAC,CAAC;SACrF,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IAEzB,6EAA6E;IAC7E,MAAM,yBAAyB,GAAG,aAAa,CAAC,MAAM,CACpD,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,6BAA6B,CAAC,IAAI,CAAC,CAAC,CAAC;QACtC,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC;QAC9B,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,CAChC,CAAC;IAEF,MAAM,QAAQ,GAAG;QACf,GAAG,iBAAiB;QACpB,GAAG,yBAAyB;QAC5B,GAAG,cAAc;QACjB,GAAG,gBAAgB;QACnB,GAAG,kBAAkB;KACtB,CAAC;IAEF,oDAAoD;IACpD,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACrC,MAAM,YAAY,GAAG,MAAM,SAAS,CAAC,UAAU,CAAC,CAAC;IACjD,MAAM,QAAQ,GAAgB;QAC5B,YAAY,EAAE,CAAC;QACf,MAAM,EAAE,cAAc;QACtB,SAAS,EAAE,YAAY,EAAE,SAAS,IAAI,GAAG;QACzC,WAAW,EAAE,GAAG;KACjB,CAAC;IACF,MAAM,UAAU,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IACvC,IAAI,CAAC,6CAA6C,CAAC,CAAC;IAEpD,OAAO;QACL,YAAY,EAAE,OAAO,CAAC,MAAM;QAC5B,QAAQ;QACR,gBAAgB;QAChB,eAAe,EAAE,eAAe,CAAC,MAAM;QACvC,cAAc;KACf,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"orchestration.js","sourceRoot":"","sources":["../../src/transition/orchestration.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { extractFirstMatchingSection } from "./context.js";
|
|
2
|
-
import { PRD_SCOPE_SECTION_PATTERNS } from "./section-patterns.js";
|
|
2
|
+
import { FUNCTIONAL_REQUIREMENTS_SECTION_PATTERNS, NON_FUNCTIONAL_REQUIREMENTS_SECTION_PATTERNS, PRD_SCOPE_SECTION_PATTERNS, PROJECT_GOALS_SECTION_PATTERNS, } from "./section-patterns.js";
|
|
3
3
|
import { extractTechStackSource } from "./tech-stack.js";
|
|
4
|
+
import { collectTransitionArtifacts, combineArtifactContents } from "./artifact-collection.js";
|
|
4
5
|
function hasSection(content, patterns) {
|
|
5
6
|
return extractFirstMatchingSection(content, patterns) !== "";
|
|
6
7
|
}
|
|
@@ -27,12 +28,7 @@ export function validatePrd(content) {
|
|
|
27
28
|
];
|
|
28
29
|
}
|
|
29
30
|
const issues = [];
|
|
30
|
-
if (!hasSection(content,
|
|
31
|
-
/^##\s+Executive Summary/m,
|
|
32
|
-
/^##\s+Vision/m,
|
|
33
|
-
/^##\s+Goals/m,
|
|
34
|
-
/^##\s+Project Goals/m,
|
|
35
|
-
])) {
|
|
31
|
+
if (!hasSection(content, PROJECT_GOALS_SECTION_PATTERNS)) {
|
|
36
32
|
issues.push({
|
|
37
33
|
id: "W3",
|
|
38
34
|
severity: "warning",
|
|
@@ -40,7 +36,7 @@ export function validatePrd(content) {
|
|
|
40
36
|
suggestion: "Ralph will lack project context — PROJECT_CONTEXT.md will have empty goals.",
|
|
41
37
|
});
|
|
42
38
|
}
|
|
43
|
-
if (!hasSection(content,
|
|
39
|
+
if (!hasSection(content, FUNCTIONAL_REQUIREMENTS_SECTION_PATTERNS)) {
|
|
44
40
|
issues.push({
|
|
45
41
|
id: "W4",
|
|
46
42
|
severity: "warning",
|
|
@@ -48,7 +44,7 @@ export function validatePrd(content) {
|
|
|
48
44
|
suggestion: "Ralph may miss key requirements during implementation.",
|
|
49
45
|
});
|
|
50
46
|
}
|
|
51
|
-
if (!hasSection(content,
|
|
47
|
+
if (!hasSection(content, NON_FUNCTIONAL_REQUIREMENTS_SECTION_PATTERNS)) {
|
|
52
48
|
issues.push({
|
|
53
49
|
id: "W5",
|
|
54
50
|
severity: "warning",
|
|
@@ -148,14 +144,23 @@ export function validateReadiness(content) {
|
|
|
148
144
|
return [];
|
|
149
145
|
}
|
|
150
146
|
export function runPreflight(artifactContents, files, stories, parseWarnings) {
|
|
151
|
-
const
|
|
152
|
-
const
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
147
|
+
const collectedArtifacts = collectTransitionArtifacts(files);
|
|
148
|
+
const prdIssues = collectedArtifacts.prdDocuments.length === 0
|
|
149
|
+
? validatePrd(null)
|
|
150
|
+
: collectedArtifacts.prdDocuments.flatMap((prdDocument) => validatePrd(combineArtifactContents(prdDocument.files, artifactContents) || null).map((issue) => collectedArtifacts.prdDocuments.length > 1
|
|
151
|
+
? {
|
|
152
|
+
...issue,
|
|
153
|
+
message: `${issue.message} (${prdDocument.label})`,
|
|
154
|
+
}
|
|
155
|
+
: issue));
|
|
156
|
+
const archContent = collectedArtifacts.architectureFiles.length > 0
|
|
157
|
+
? combineArtifactContents(collectedArtifacts.architectureFiles, artifactContents)
|
|
158
|
+
: null;
|
|
159
|
+
const readinessContent = collectedArtifacts.readinessFiles.length > 0
|
|
160
|
+
? combineArtifactContents(collectedArtifacts.readinessFiles, artifactContents)
|
|
161
|
+
: null;
|
|
157
162
|
const issues = [
|
|
158
|
-
...
|
|
163
|
+
...prdIssues,
|
|
159
164
|
...validateArchitecture(archContent),
|
|
160
165
|
...validateStories(stories, parseWarnings),
|
|
161
166
|
...validateReadiness(readinessContent),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"preflight.js","sourceRoot":"","sources":["../../src/transition/preflight.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,2BAA2B,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,
|
|
1
|
+
{"version":3,"file":"preflight.js","sourceRoot":"","sources":["../../src/transition/preflight.ts"],"names":[],"mappings":"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"}
|
|
@@ -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
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
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,
|
|
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 (
|
|
34
|
+
if (matchesAnyPattern(snippet, FUNCTIONAL_REQUIREMENTS_SECTION_PATTERNS) ||
|
|
35
|
+
matchesAnyPattern(snippet, PROJECT_GOALS_SECTION_PATTERNS))
|
|
34
36
|
return "prd";
|
|
35
|
-
if (
|
|
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";
|