@boopkit/cli 0.4.0 → 0.4.1
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.
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"@boopkit/cap-cloud-storage": "0.4.0",
|
|
5
5
|
"@boopkit/cap-coding": "0.4.0",
|
|
6
6
|
"@boopkit/cap-database": "0.4.0",
|
|
7
|
-
"@boopkit/cap-email": "0.4.
|
|
7
|
+
"@boopkit/cap-email": "0.4.1",
|
|
8
8
|
"@boopkit/cap-hello": "0.4.0",
|
|
9
9
|
"@boopkit/cap-noticeboard": "0.4.0",
|
|
10
10
|
"@boopkit/cap-product-design": "0.4.0",
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
"@boopkit/cap-services": "0.4.0",
|
|
13
13
|
"@boopkit/cap-skills": "0.4.0",
|
|
14
14
|
"@boopkit/cap-testing": "0.4.0",
|
|
15
|
-
"@boopkit/cap-users": "0.4.
|
|
16
|
-
"@boopkit/cap-web": "0.4.
|
|
15
|
+
"@boopkit/cap-users": "0.4.1",
|
|
16
|
+
"@boopkit/cap-web": "0.4.1",
|
|
17
17
|
"@boopkit/logger": "0.4.0"
|
|
18
18
|
}
|
package/dist/commands/loop.js
CHANGED
|
@@ -566,10 +566,21 @@ async function runLoop(options) {
|
|
|
566
566
|
return;
|
|
567
567
|
}
|
|
568
568
|
if (flow && !fs.existsSync(flow)) {
|
|
569
|
-
console.error(`\x1b[31mERR\x1b[0m --flow
|
|
569
|
+
console.error(`\x1b[31mERR\x1b[0m --flow path not found: ${flow}`);
|
|
570
570
|
process.exitCode = 1;
|
|
571
571
|
return;
|
|
572
572
|
}
|
|
573
|
+
// If --flow points to a directory (e.g. a skill folder), resolve to its SKILL.md
|
|
574
|
+
let resolvedFlow = flow;
|
|
575
|
+
if (flow && fs.statSync(flow).isDirectory()) {
|
|
576
|
+
const skillPath = path.join(flow, 'SKILL.md');
|
|
577
|
+
if (!fs.existsSync(skillPath)) {
|
|
578
|
+
console.error(`\x1b[31mERR\x1b[0m --flow directory has no SKILL.md: ${flow}`);
|
|
579
|
+
process.exitCode = 1;
|
|
580
|
+
return;
|
|
581
|
+
}
|
|
582
|
+
resolvedFlow = skillPath;
|
|
583
|
+
}
|
|
573
584
|
const dryRun = !options.run;
|
|
574
585
|
const maxIssues = parseInt(options.max || '0', 10);
|
|
575
586
|
const budget = options.budget || '5.00';
|
|
@@ -586,12 +597,12 @@ async function runLoop(options) {
|
|
|
586
597
|
const logDir = path.join(projectDir, 'labs', 'claude-runs');
|
|
587
598
|
fs.mkdirSync(logDir, { recursive: true });
|
|
588
599
|
// Planning mode dry-run
|
|
589
|
-
if (dryRun && work &&
|
|
600
|
+
if (dryRun && work && resolvedFlow) {
|
|
590
601
|
const workContent = fs.readFileSync(work, 'utf8');
|
|
591
|
-
const flowContent = fs.readFileSync(
|
|
602
|
+
const flowContent = fs.readFileSync(resolvedFlow, 'utf8');
|
|
592
603
|
console.log('[bd-loop] PLANNING MODE (dry-run)');
|
|
593
604
|
console.log(`[bd-loop] Work file: ${work}`);
|
|
594
|
-
console.log(`[bd-loop] Flow file: ${flow}`);
|
|
605
|
+
console.log(`[bd-loop] Flow file: ${resolvedFlow}${resolvedFlow !== flow ? ` (resolved from ${flow})` : ''}`);
|
|
595
606
|
console.log('[bd-loop] Planning prompt that would be sent:');
|
|
596
607
|
console.log('---');
|
|
597
608
|
console.log(buildPlanningPrompt(workContent, flowContent, prefix));
|
|
@@ -600,10 +611,10 @@ async function runLoop(options) {
|
|
|
600
611
|
return;
|
|
601
612
|
}
|
|
602
613
|
// Planning phase: create feature tree before looping
|
|
603
|
-
if (work &&
|
|
614
|
+
if (work && resolvedFlow) {
|
|
604
615
|
const planResult = await planWork({
|
|
605
616
|
workPath: work,
|
|
606
|
-
flowPath:
|
|
617
|
+
flowPath: resolvedFlow,
|
|
607
618
|
prefix,
|
|
608
619
|
budget,
|
|
609
620
|
model,
|
package/package.json
CHANGED