opencastle 0.29.0 → 0.30.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.
@@ -1,8 +1,34 @@
1
- import { readFile } from 'node:fs/promises';
1
+ import { readFile, writeFile, mkdir } from 'node:fs/promises';
2
2
  import { existsSync } from 'node:fs';
3
3
  import { resolve } from 'node:path';
4
+ import { stringify } from 'yaml';
4
5
  import { c, confirm, closePrompts } from './prompt.js';
5
- import { runPromptStep } from './plan.js';
6
+ import { runPromptStep, readProjectMcpServers } from './plan.js';
7
+ export function parseComplexityAssessment(prdContent) {
8
+ const sectionMatch = prdContent.match(/## Complexity Assessment\s+([\s\S]*?)(?=\n## |\n# |$)/);
9
+ if (!sectionMatch)
10
+ return null;
11
+ const sectionContent = sectionMatch[1];
12
+ const jsonMatch = sectionContent.match(/```json\s*([\s\S]*?)```/);
13
+ if (!jsonMatch)
14
+ return null;
15
+ try {
16
+ const parsed = JSON.parse(jsonMatch[1].trim());
17
+ // Validate required fields
18
+ if (typeof parsed.total_tasks !== 'number' ||
19
+ typeof parsed.total_phases !== 'number' ||
20
+ !Array.isArray(parsed.domains) ||
21
+ !parsed.complexity ||
22
+ !parsed.recommended_strategy ||
23
+ !Array.isArray(parsed.convoy_groups)) {
24
+ return null;
25
+ }
26
+ return parsed;
27
+ }
28
+ catch {
29
+ return null;
30
+ }
31
+ }
6
32
  const HELP = `
7
33
  opencastle pipeline [options]
8
34
 
@@ -10,9 +36,10 @@ const HELP = `
10
36
 
11
37
  Step 1 — Generate PRD (generate-prd)
12
38
  Step 2 — Validate PRD (validate-prd)
13
- Step 3 — Generate convoy spec (generate-convoy, using PRD as BDO)
14
- Step 4 — Validate convoy spec (validate-convoy)
15
- Step 5 — Fix convoy spec (fix-convoy, up to 2 retries if invalid)
39
+ Step 3 — Fix PRD (fix-prd, up to 2 retries if invalid)
40
+ Step 4 — Generate convoy spec (generate-convoy, using PRD as BDO)
41
+ Step 5 — Validate convoy spec (validate-convoy)
42
+ Step 6 — Fix convoy spec (fix-convoy, up to 2 retries if invalid)
16
43
 
17
44
  Options:
18
45
  --text, -t <text> Feature prompt text (required, unless --prd is set)
@@ -127,11 +154,13 @@ export default async function pipeline({ args, pkgRoot }) {
127
154
  process.exit(1);
128
155
  }
129
156
  }
130
- const totalSteps = opts.skipValidation ? 3 : 5;
157
+ const totalSteps = opts.skipValidation ? 3 : 6;
158
+ const mcpServers = await readProjectMcpServers(process.cwd());
131
159
  const sharedOpts = {
132
160
  adapterName: opts.adapter ?? undefined,
133
161
  verbose: opts.verbose,
134
162
  pkgRoot,
163
+ ...(mcpServers.length ? { mcpServers } : {}),
135
164
  };
136
165
  console.log(c.bold('\n opencastle pipeline\n'));
137
166
  // ── Step 1: Generate PRD ──────────────────────────────────────────────────
@@ -180,16 +209,208 @@ export default async function pipeline({ args, pkgRoot }) {
180
209
  process.exit(1);
181
210
  }
182
211
  if (!result.isValid) {
183
- console.log(c.red(` ✗ PRD validation failed.\n`));
184
- console.log(result.errors ?? result.rawOutput);
185
- console.log(c.dim(`\n Fix the PRD at ${relPath(prdPath)} and re-run with:\n`) +
186
- ` opencastle pipeline --prd ${relPath(prdPath)}${opts.adapter ? ` --adapter ${opts.adapter}` : ''}\n`);
187
- process.exit(1);
212
+ let prdValidationErrors = result.errors ?? result.rawOutput;
213
+ console.log(c.yellow(` ⚠ PRD has validation issues — attempting auto-fix…\n`));
214
+ console.log(c.dim(prdValidationErrors));
215
+ console.log();
216
+ // ── Step 3: Fix PRD (up to 2 retries) ──────────────────────────────────
217
+ const MAX_PRD_FIX_RETRIES = 2;
218
+ let fixedPrdContent = prdContent;
219
+ let prdFixed = false;
220
+ for (let attempt = 1; attempt <= MAX_PRD_FIX_RETRIES; attempt++) {
221
+ const label = `Fix PRD attempt ${attempt}/${MAX_PRD_FIX_RETRIES}…`;
222
+ console.log(stepLabel(3, totalSteps, label));
223
+ try {
224
+ await runPromptStep({
225
+ ...sharedOpts,
226
+ template: 'fix-prd',
227
+ goalText: fixedPrdContent,
228
+ contextText: prdValidationErrors,
229
+ outputPath: prdPath, // overwrite in place
230
+ });
231
+ }
232
+ catch (err) {
233
+ console.error(`\n ✗ Step 3 (attempt ${attempt}) failed: ${err instanceof Error ? err.message : String(err)}`);
234
+ process.exit(1);
235
+ }
236
+ console.log(c.dim(` Re-validating after fix…`));
237
+ fixedPrdContent = await readFile(prdPath, 'utf8');
238
+ let revalidation;
239
+ try {
240
+ revalidation = await runPromptStep({
241
+ ...sharedOpts,
242
+ template: 'validate-prd',
243
+ goalText: fixedPrdContent,
244
+ });
245
+ }
246
+ catch (err) {
247
+ console.error(`\n ✗ Re-validation failed: ${err instanceof Error ? err.message : String(err)}`);
248
+ process.exit(1);
249
+ }
250
+ if (revalidation.isValid) {
251
+ console.log(c.green(` ✓ PRD fixed and validated\n`));
252
+ prdFixed = true;
253
+ break;
254
+ }
255
+ prdValidationErrors = revalidation.errors ?? revalidation.rawOutput;
256
+ if (attempt < MAX_PRD_FIX_RETRIES) {
257
+ console.log(c.yellow(` ⚠ Still has issues after fix attempt ${attempt} — retrying…\n`));
258
+ console.log(c.dim(prdValidationErrors));
259
+ console.log();
260
+ }
261
+ }
262
+ if (!prdFixed) {
263
+ console.log(c.red(`\n ✗ Could not auto-fix the PRD after ${MAX_PRD_FIX_RETRIES} attempts.\n`));
264
+ console.log(` Remaining issues:\n`);
265
+ console.log(prdValidationErrors);
266
+ console.log(c.dim(`\n The PRD has been saved to ${relPath(prdPath)} with the best available fixes.\n`) +
267
+ c.dim(` Review the remaining issues above and edit the file manually, then re-run with:\n`) +
268
+ ` opencastle pipeline --prd ${relPath(prdPath)}${opts.adapter ? ` --adapter ${opts.adapter}` : ''}\n`);
269
+ process.exit(1);
270
+ }
271
+ }
272
+ else {
273
+ console.log(c.green(` ✓ PRD is valid\n`));
274
+ }
275
+ }
276
+ // ── Complexity-aware strategy decision ────────────────────────────────────
277
+ const prdContentForComplexity = await readFile(prdPath, 'utf8');
278
+ const complexity = parseComplexityAssessment(prdContentForComplexity);
279
+ if (complexity) {
280
+ if (complexity.recommended_strategy === 'chain' && complexity.convoy_groups.length > 1) {
281
+ console.log(c.cyan(` ℹ`) +
282
+ ` Complexity: ${complexity.complexity} | Strategy: chain | ${complexity.convoy_groups.length} convoy groups\n`);
283
+ console.log(` Chain plan:`);
284
+ for (let i = 0; i < complexity.convoy_groups.length; i++) {
285
+ const g = complexity.convoy_groups[i];
286
+ const depStr = g.depends_on.length > 0 ? ` → depends on: ${g.depends_on.join(', ')}` : '';
287
+ console.log(` ${i + 1}. ${g.name.padEnd(20)} (phases: ${g.phases.join(', ')})${depStr}`);
288
+ }
289
+ console.log();
290
+ const convoyDir = resolve(process.cwd(), '.opencastle', 'convoys');
291
+ await mkdir(convoyDir, { recursive: true });
292
+ const genBaseStep = opts.skipValidation ? 2 : 4;
293
+ const groupSpecPaths = [];
294
+ const totalGroupSteps = (opts.skipValidation ? 2 : 3) + complexity.convoy_groups.length * (opts.skipValidation ? 1 : 2);
295
+ for (let i = 0; i < complexity.convoy_groups.length; i++) {
296
+ const group = complexity.convoy_groups[i];
297
+ const groupStep = genBaseStep + i * (opts.skipValidation ? 1 : 2);
298
+ console.log(stepLabel(groupStep, totalGroupSteps, `Generating convoy spec for group: ${group.name}…`));
299
+ const chainContext = JSON.stringify({
300
+ mode: 'chain_subset',
301
+ group_name: group.name,
302
+ group_description: group.description,
303
+ group_phases: group.phases,
304
+ depends_on_groups: group.depends_on,
305
+ total_groups: complexity.convoy_groups.length,
306
+ group_index: i + 1,
307
+ });
308
+ const groupSpecPath = resolve(convoyDir, `${group.name}.convoy.yml`);
309
+ let groupResult;
310
+ try {
311
+ groupResult = await runPromptStep({
312
+ ...sharedOpts,
313
+ template: 'generate-convoy',
314
+ filePath: prdPath,
315
+ contextText: chainContext,
316
+ outputPath: groupSpecPath,
317
+ });
318
+ }
319
+ catch (err) {
320
+ console.error(`\n ✗ Step ${groupStep} failed: ${err instanceof Error ? err.message : String(err)}`);
321
+ process.exit(1);
322
+ }
323
+ const resolvedGroupSpecPath = groupResult.outputPath ?? groupSpecPath;
324
+ groupSpecPaths.push(resolvedGroupSpecPath);
325
+ console.log(c.green(` ✓ Group spec written to ${relPath(resolvedGroupSpecPath)}\n`));
326
+ if (!opts.skipValidation) {
327
+ const valStep = groupStep + 1;
328
+ console.log(stepLabel(valStep, totalGroupSteps, `Validating spec: ${group.name}…`));
329
+ const groupSpecContent = await readFile(resolvedGroupSpecPath, 'utf8');
330
+ let groupValidation;
331
+ try {
332
+ groupValidation = await runPromptStep({
333
+ ...sharedOpts,
334
+ template: 'validate-convoy',
335
+ goalText: groupSpecContent,
336
+ });
337
+ }
338
+ catch (err) {
339
+ console.error(`\n ✗ Validation failed for group ${group.name}: ${err instanceof Error ? err.message : String(err)}`);
340
+ process.exit(1);
341
+ }
342
+ if (!groupValidation.isValid) {
343
+ console.log(c.yellow(` ⚠ Spec has issues — attempting one auto-fix…\n`));
344
+ console.log(c.dim(groupValidation.errors ?? groupValidation.rawOutput));
345
+ console.log();
346
+ try {
347
+ await runPromptStep({
348
+ ...sharedOpts,
349
+ template: 'fix-convoy',
350
+ goalText: groupSpecContent,
351
+ contextText: groupValidation.errors ?? groupValidation.rawOutput,
352
+ outputPath: resolvedGroupSpecPath,
353
+ });
354
+ }
355
+ catch (err) {
356
+ console.error(`\n ✗ Fix failed for group ${group.name}: ${err instanceof Error ? err.message : String(err)}`);
357
+ process.exit(1);
358
+ }
359
+ console.log(c.dim(` Applied fix for ${group.name}\n`));
360
+ }
361
+ else {
362
+ console.log(c.green(` ✓ Spec valid\n`));
363
+ }
364
+ }
365
+ }
366
+ // Build master pipeline spec (version 2)
367
+ const featureNameMatch = prdContentForComplexity.match(/^# (.+?)\s*(?:—|-)?\s*PRD/m);
368
+ const featureName = featureNameMatch
369
+ ? featureNameMatch[1].trim().toLowerCase().replace(/[^a-z0-9]+/g, '-')
370
+ : 'feature';
371
+ const branchMatch = prdContentForComplexity.match(/`feat\/([^`]+)`/);
372
+ const branch = branchMatch ? `feat/${branchMatch[1]}` : `feat/${featureName}`;
373
+ const masterSpec = {
374
+ name: featureNameMatch ? featureNameMatch[1].trim() : 'Feature Pipeline',
375
+ version: 2,
376
+ branch,
377
+ on_failure: 'stop',
378
+ depends_on_convoy: groupSpecPaths.map(p => relPath(p)),
379
+ };
380
+ const masterSpecPath = resolve(convoyDir, `${featureName}-pipeline.convoy.yml`);
381
+ await writeFile(masterSpecPath, stringify(masterSpec), 'utf8');
382
+ console.log(c.green(` ✓ Generated convoy chain:\n`));
383
+ for (const p of groupSpecPaths) {
384
+ console.log(` ${relPath(p)}`);
385
+ }
386
+ console.log(` ${relPath(masterSpecPath)} ${c.dim('(master)')}`);
387
+ console.log();
388
+ console.log(` ${c.dim('Preview:')} npx opencastle run -f ${relPath(masterSpecPath)} --dry-run\n` +
389
+ ` ${c.dim('Execute:')} npx opencastle run -f ${relPath(masterSpecPath)}\n`);
390
+ try {
391
+ const shouldRun = await confirm('Run the convoy chain now?', true);
392
+ if (shouldRun) {
393
+ closePrompts();
394
+ const runModule = await import('./run.js');
395
+ const runArgs = ['-f', masterSpecPath];
396
+ if (opts.adapter)
397
+ runArgs.push('-a', opts.adapter);
398
+ if (opts.verbose)
399
+ runArgs.push('--verbose');
400
+ await runModule.default({ args: runArgs, pkgRoot });
401
+ }
402
+ }
403
+ finally {
404
+ closePrompts();
405
+ }
406
+ return;
407
+ }
408
+ else {
409
+ console.log(c.cyan(` ℹ`) + ` Complexity: ${complexity.complexity} | Strategy: single\n`);
188
410
  }
189
- console.log(c.green(` ✓ PRD is valid\n`));
190
411
  }
191
- // ── Step 3: Generate convoy spec ──────────────────────────────────────────
192
- const genStep = opts.skipValidation ? 2 : 3;
412
+ // ── Step 4: Generate convoy spec ──────────────────────────────────────────
413
+ const genStep = opts.skipValidation ? 2 : 4;
193
414
  console.log(stepLabel(genStep, totalSteps, 'Generating convoy spec…'));
194
415
  let specPath;
195
416
  try {
@@ -210,8 +431,8 @@ export default async function pipeline({ args, pkgRoot }) {
210
431
  await printFinalSummary(prdPath, specPath, opts, pkgRoot);
211
432
  return;
212
433
  }
213
- // ── Step 4: Validate convoy spec ──────────────────────────────────────────
214
- console.log(stepLabel(4, totalSteps, 'Validating convoy spec…'));
434
+ // ── Step 5: Validate convoy spec ──────────────────────────────────────────
435
+ console.log(stepLabel(5, totalSteps, 'Validating convoy spec…'));
215
436
  const specContent = await readFile(specPath, 'utf8');
216
437
  let validationErrors;
217
438
  {
@@ -224,7 +445,7 @@ export default async function pipeline({ args, pkgRoot }) {
224
445
  });
225
446
  }
226
447
  catch (err) {
227
- console.error(`\n ✗ Step 4 failed: ${err instanceof Error ? err.message : String(err)}`);
448
+ console.error(`\n ✗ Step 5 failed: ${err instanceof Error ? err.message : String(err)}`);
228
449
  process.exit(1);
229
450
  }
230
451
  if (result.isValid) {
@@ -237,12 +458,12 @@ export default async function pipeline({ args, pkgRoot }) {
237
458
  console.log(c.dim(validationErrors));
238
459
  console.log();
239
460
  }
240
- // ── Step 5: Fix convoy spec (up to 2 retries) ─────────────────────────────
461
+ // ── Step 6: Fix convoy spec (up to 2 retries) ─────────────────────────────
241
462
  const MAX_FIX_RETRIES = 2;
242
463
  let fixedSpecContent = specContent;
243
464
  for (let attempt = 1; attempt <= MAX_FIX_RETRIES; attempt++) {
244
465
  const label = `Fix attempt ${attempt}/${MAX_FIX_RETRIES}…`;
245
- console.log(stepLabel(5, totalSteps, label));
466
+ console.log(stepLabel(6, totalSteps, label));
246
467
  let fixResult;
247
468
  try {
248
469
  fixResult = await runPromptStep({
@@ -254,7 +475,7 @@ export default async function pipeline({ args, pkgRoot }) {
254
475
  });
255
476
  }
256
477
  catch (err) {
257
- console.error(`\n ✗ Step 5 (attempt ${attempt}) failed: ${err instanceof Error ? err.message : String(err)}`);
478
+ console.error(`\n ✗ Step 6 (attempt ${attempt}) failed: ${err instanceof Error ? err.message : String(err)}`);
258
479
  process.exit(1);
259
480
  }
260
481
  console.log(c.dim(` Re-validating after fix…`));
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../src/cli/pipeline.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../src/cli/pipeline.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=pipeline.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipeline.test.d.ts","sourceRoot":"","sources":["../../src/cli/pipeline.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,178 @@
1
+ import { describe, it, expect } from 'vitest';
2
+ import { parseComplexityAssessment } from './pipeline.js';
3
+ const SINGLE_PRD = `# My Feature — PRD
4
+
5
+ ## Overview
6
+ Some overview.
7
+
8
+ ## Risks & Open Questions
9
+ None identified.
10
+
11
+ ## Complexity Assessment
12
+
13
+ \`\`\`json
14
+ {
15
+ "total_tasks": 4,
16
+ "total_phases": 2,
17
+ "domains": ["api", "frontend"],
18
+ "estimated_duration_minutes": 60,
19
+ "complexity": "medium",
20
+ "recommended_strategy": "single",
21
+ "chain_rationale": "",
22
+ "convoy_groups": [
23
+ {
24
+ "name": "full-implementation",
25
+ "description": "All phases in a single convoy",
26
+ "phases": [1, 2],
27
+ "depends_on": []
28
+ }
29
+ ]
30
+ }
31
+ \`\`\`
32
+ `;
33
+ const CHAIN_PRD = `# Big Feature — PRD
34
+
35
+ ## Overview
36
+ Big feature.
37
+
38
+ ## Risks & Open Questions
39
+ None identified.
40
+
41
+ ## Complexity Assessment
42
+
43
+ \`\`\`json
44
+ {
45
+ "total_tasks": 12,
46
+ "total_phases": 4,
47
+ "domains": ["database", "api", "frontend", "testing"],
48
+ "estimated_duration_minutes": 240,
49
+ "complexity": "high",
50
+ "recommended_strategy": "chain",
51
+ "chain_rationale": "Database schema changes have no frontend dependencies and can be validated independently.",
52
+ "convoy_groups": [
53
+ {
54
+ "name": "database-setup",
55
+ "description": "Schema changes and migrations",
56
+ "phases": [1],
57
+ "depends_on": []
58
+ },
59
+ {
60
+ "name": "api-integration",
61
+ "description": "API routes and server logic",
62
+ "phases": [2],
63
+ "depends_on": ["database-setup"]
64
+ },
65
+ {
66
+ "name": "frontend-testing",
67
+ "description": "UI components and test suite",
68
+ "phases": [3, 4],
69
+ "depends_on": ["api-integration"]
70
+ }
71
+ ]
72
+ }
73
+ \`\`\`
74
+ `;
75
+ const NO_SECTION_PRD = `# Feature — PRD
76
+
77
+ ## Overview
78
+ Plain prd with no complexity section.
79
+
80
+ ## Risks & Open Questions
81
+ None.
82
+ `;
83
+ const MALFORMED_JSON_PRD = `# Feature — PRD
84
+
85
+ ## Complexity Assessment
86
+
87
+ \`\`\`json
88
+ { "total_tasks": 3, "broken":
89
+ \`\`\`
90
+ `;
91
+ const UNFENCED_JSON_PRD = `# Feature — PRD
92
+
93
+ ## Complexity Assessment
94
+
95
+ The complexity is medium.
96
+
97
+ total_tasks: 3, total_phases: 2
98
+ `;
99
+ const OTHER_JSON_PRD = `# Feature — PRD
100
+
101
+ ## Overview
102
+ Some feature with json-like content: \`{"key": "value"}\`
103
+
104
+ Another block:
105
+ \`\`\`json
106
+ {"not": "complexity"}
107
+ \`\`\`
108
+
109
+ ## Complexity Assessment
110
+
111
+ \`\`\`json
112
+ {
113
+ "total_tasks": 6,
114
+ "total_phases": 3,
115
+ "domains": ["api", "frontend"],
116
+ "complexity": "medium",
117
+ "recommended_strategy": "single",
118
+ "convoy_groups": [
119
+ {
120
+ "name": "impl",
121
+ "description": "All phases",
122
+ "phases": [1, 2, 3],
123
+ "depends_on": []
124
+ }
125
+ ]
126
+ }
127
+ \`\`\`
128
+ `;
129
+ describe('parseComplexityAssessment', () => {
130
+ it('returns null when PRD has no Complexity Assessment section', () => {
131
+ expect(parseComplexityAssessment(NO_SECTION_PRD)).toBeNull();
132
+ });
133
+ it('returns null when JSON is malformed', () => {
134
+ expect(parseComplexityAssessment(MALFORMED_JSON_PRD)).toBeNull();
135
+ });
136
+ it('parses a valid single strategy assessment', () => {
137
+ const result = parseComplexityAssessment(SINGLE_PRD);
138
+ expect(result).not.toBeNull();
139
+ expect(result?.recommended_strategy).toBe('single');
140
+ expect(result?.complexity).toBe('medium');
141
+ expect(result?.total_tasks).toBe(4);
142
+ expect(result?.total_phases).toBe(2);
143
+ expect(result?.domains).toEqual(['api', 'frontend']);
144
+ expect(result?.convoy_groups).toHaveLength(1);
145
+ expect(result?.convoy_groups[0].name).toBe('full-implementation');
146
+ });
147
+ it('parses a valid chain strategy assessment with multiple groups', () => {
148
+ const result = parseComplexityAssessment(CHAIN_PRD);
149
+ expect(result).not.toBeNull();
150
+ expect(result?.recommended_strategy).toBe('chain');
151
+ expect(result?.complexity).toBe('high');
152
+ expect(result?.convoy_groups).toHaveLength(3);
153
+ expect(result?.convoy_groups[0].name).toBe('database-setup');
154
+ expect(result?.convoy_groups[1].depends_on).toEqual(['database-setup']);
155
+ expect(result?.convoy_groups[2].phases).toEqual([3, 4]);
156
+ });
157
+ it('handles missing optional fields gracefully', () => {
158
+ const prd = `# Feature — PRD\n\n## Complexity Assessment\n\n\`\`\`json\n{\n "total_tasks": 3,\n "total_phases": 1,\n "domains": ["api"],\n "complexity": "low",\n "recommended_strategy": "single",\n "convoy_groups": [{"name": "all", "description": "All", "phases": [1], "depends_on": []}]\n}\n\`\`\`\n`;
159
+ const result = parseComplexityAssessment(prd);
160
+ expect(result).not.toBeNull();
161
+ expect(result?.estimated_duration_minutes).toBeUndefined();
162
+ expect(result?.chain_rationale).toBeUndefined();
163
+ });
164
+ it('returns null when JSON block is not fenced properly', () => {
165
+ expect(parseComplexityAssessment(UNFENCED_JSON_PRD)).toBeNull();
166
+ });
167
+ it('correctly extracts JSON even when PRD has other JSON-like content elsewhere', () => {
168
+ const result = parseComplexityAssessment(OTHER_JSON_PRD);
169
+ expect(result).not.toBeNull();
170
+ expect(result?.total_tasks).toBe(6);
171
+ expect(result?.recommended_strategy).toBe('single');
172
+ });
173
+ it('returns null when required fields are missing from JSON', () => {
174
+ const prd = `# Feature — PRD\n\n## Complexity Assessment\n\n\`\`\`json\n{"total_tasks": 3}\n\`\`\`\n`;
175
+ expect(parseComplexityAssessment(prd)).toBeNull();
176
+ });
177
+ });
178
+ //# sourceMappingURL=pipeline.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipeline.test.js","sourceRoot":"","sources":["../../src/cli/pipeline.test.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import type { CliContext } from './types.js';
2
+ import type { MCPServerConfig } from './convoy/types.js';
2
3
  export interface PromptStepOptions {
3
4
  /** Template name without extension. Default: 'generate-convoy' */
4
5
  template?: string;
@@ -18,6 +19,8 @@ export interface PromptStepOptions {
18
19
  dryRun?: boolean;
19
20
  /** Absolute path to the opencastle package root (for locating prompt templates) */
20
21
  pkgRoot: string;
22
+ /** MCP servers to make available to the AI adapter during execution. */
23
+ mcpServers?: MCPServerConfig[];
21
24
  }
22
25
  export interface PromptStepResult {
23
26
  /** Absolute path the output was written to. null for validation output or dry-run */
@@ -36,5 +39,10 @@ export interface PromptStepResult {
36
39
  * Used by the pipeline command to chain steps programmatically.
37
40
  */
38
41
  export declare function runPromptStep(opts: PromptStepOptions): Promise<PromptStepResult>;
42
+ /**
43
+ * Read MCP server configurations from the project's MCP config file.
44
+ * Checks in priority order: .vscode/mcp.json, .cursor/mcp.json, .claude/mcp.json, mcp.json
45
+ */
46
+ export declare function readProjectMcpServers(projectRoot: string): Promise<MCPServerConfig[]>;
39
47
  export default function plan({ args, pkgRoot }: CliContext): Promise<void>;
40
48
  //# sourceMappingURL=plan.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"plan.d.ts","sourceRoot":"","sources":["../../src/cli/plan.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,UAAU,EAAQ,MAAM,YAAY,CAAA;AA0ClD,MAAM,WAAW,iBAAiB;IAChC,kEAAkE;IAClE,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,sDAAsD;IACtD,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,gEAAgE;IAChE,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,gDAAgD;IAChD,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,sEAAsE;IACtE,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,oCAAoC;IACpC,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,4BAA4B;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,mFAAmF;IACnF,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,gBAAgB;IAC/B,qFAAqF;IACrF,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,2EAA2E;IAC3E,SAAS,EAAE,MAAM,CAAA;IACjB,qCAAqC;IACrC,UAAU,EAAE,aAAa,GAAG,KAAK,GAAG,YAAY,CAAA;IAChD,2CAA2C;IAC3C,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,iEAAiE;IACjE,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAgJD;;;GAGG;AACH,wBAAsB,aAAa,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CA8HtF;AA4ED,wBAA8B,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAwF/E"}
1
+ {"version":3,"file":"plan.d.ts","sourceRoot":"","sources":["../../src/cli/plan.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,UAAU,EAAQ,MAAM,YAAY,CAAA;AAClD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AA0CxD,MAAM,WAAW,iBAAiB;IAChC,kEAAkE;IAClE,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,sDAAsD;IACtD,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,gEAAgE;IAChE,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,gDAAgD;IAChD,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,sEAAsE;IACtE,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,oCAAoC;IACpC,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,4BAA4B;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,mFAAmF;IACnF,OAAO,EAAE,MAAM,CAAA;IACf,wEAAwE;IACxE,UAAU,CAAC,EAAE,eAAe,EAAE,CAAA;CAC/B;AAED,MAAM,WAAW,gBAAgB;IAC/B,qFAAqF;IACrF,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,2EAA2E;IAC3E,SAAS,EAAE,MAAM,CAAA;IACjB,qCAAqC;IACrC,UAAU,EAAE,aAAa,GAAG,KAAK,GAAG,YAAY,CAAA;IAChD,2CAA2C;IAC3C,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,iEAAiE;IACjE,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AA4KD;;;GAGG;AACH,wBAAsB,aAAa,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAuItF;AAED;;;GAGG;AACH,wBAAsB,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAoC3F;AA4ED,wBAA8B,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAwF/E"}