@cluesmith/codev 2.0.0-rc.3 → 2.0.0-rc.5
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/dist/agent-farm/commands/kickoff.d.ts.map +1 -1
- package/dist/agent-farm/commands/kickoff.js +10 -2
- package/dist/agent-farm/commands/kickoff.js.map +1 -1
- package/dist/commands/porch/index.d.ts +1 -1
- package/dist/commands/porch/index.d.ts.map +1 -1
- package/dist/commands/porch/index.js +293 -18
- package/dist/commands/porch/index.js.map +1 -1
- package/dist/commands/porch/protocol-loader.d.ts.map +1 -1
- package/dist/commands/porch/protocol-loader.js +4 -0
- package/dist/commands/porch/protocol-loader.js.map +1 -1
- package/dist/commands/porch/state.d.ts.map +1 -1
- package/dist/commands/porch/state.js +14 -0
- package/dist/commands/porch/state.js.map +1 -1
- package/package.json +1 -1
- package/skeleton/protocols/spider/prompts/defend.md +215 -0
- package/skeleton/protocols/spider/prompts/evaluate.md +241 -0
- package/skeleton/protocols/spider/prompts/implement.md +149 -0
- package/skeleton/protocols/spider/prompts/plan.md +214 -0
- package/skeleton/protocols/spider/prompts/review.md +217 -0
- package/skeleton/protocols/spider/prompts/specify.md +167 -0
- package/skeleton/protocols/spider/protocol.json +6 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kickoff.d.ts","sourceRoot":"","sources":["../../../src/agent-farm/commands/kickoff.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAYH,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;
|
|
1
|
+
{"version":3,"file":"kickoff.d.ts","sourceRoot":"","sources":["../../../src/agent-farm/commands/kickoff.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAYH,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAqKD;;GAEG;AACH,wBAAsB,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CA6MpE"}
|
|
@@ -168,8 +168,12 @@ export async function kickoff(options) {
|
|
|
168
168
|
const safeName = specFile
|
|
169
169
|
? specName.toLowerCase().replace(/[^a-z0-9_-]/g, '-').replace(/-+/g, '-')
|
|
170
170
|
: porchState.title.toLowerCase().replace(/[^a-z0-9_-]/g, '-').replace(/-+/g, '-');
|
|
171
|
+
const actualProtocol = porchState?.protocol || protocolName;
|
|
172
|
+
// Use worktrees/ directory with protocol-prefixed naming per spec 0073
|
|
173
|
+
const worktreesDir = resolve(config.projectRoot, 'worktrees');
|
|
174
|
+
const worktreeName = `${actualProtocol.toLowerCase()}_${projectId}_${safeName}`;
|
|
171
175
|
const branchName = `builder/${projectId}-${safeName}`;
|
|
172
|
-
const worktreePath = resolve(
|
|
176
|
+
const worktreePath = resolve(worktreesDir, worktreeName);
|
|
173
177
|
// Check for plan file (only if spec exists)
|
|
174
178
|
const planFile = specFile ? resolve(config.codevDir, 'plans', `${basename(specFile, '.md')}.md`) : null;
|
|
175
179
|
const hasPlan = planFile ? existsSync(planFile) : false;
|
|
@@ -183,6 +187,11 @@ export async function kickoff(options) {
|
|
|
183
187
|
logger.kv('Porch State', hasExistingState ? 'exists (resume)' : 'new');
|
|
184
188
|
await ensureDirectories(config);
|
|
185
189
|
await checkDependencies();
|
|
190
|
+
// Ensure worktrees directory exists
|
|
191
|
+
if (!existsSync(worktreesDir)) {
|
|
192
|
+
const { mkdir } = await import('node:fs/promises');
|
|
193
|
+
await mkdir(worktreesDir, { recursive: true });
|
|
194
|
+
}
|
|
186
195
|
// Check if worktree already exists
|
|
187
196
|
if (existsSync(worktreePath)) {
|
|
188
197
|
if (resume) {
|
|
@@ -211,7 +220,6 @@ export async function kickoff(options) {
|
|
|
211
220
|
}
|
|
212
221
|
}
|
|
213
222
|
// Build the prompt
|
|
214
|
-
const actualProtocol = porchState?.protocol || protocolName;
|
|
215
223
|
const specRelPath = specFile ? `codev/specs/${basename(specFile)}` : `codev/specs/${projectId}-${safeName}.md`;
|
|
216
224
|
const planRelPath = `codev/plans/${projectId}-${safeName}.md`;
|
|
217
225
|
const protocolPath = `codev/protocols/${actualProtocol.toLowerCase()}/protocol.md`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kickoff.js","sourceRoot":"","sources":["../../../src/agent-farm/commands/kickoff.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"kickoff.js","sourceRoot":"","sources":["../../../src/agent-farm/commands/kickoff.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,7 +21,7 @@ export declare function loadProtocol(name: string, projectRoot?: string): Protoc
|
|
|
21
21
|
*/
|
|
22
22
|
export declare function init(protocolName: string, projectId: string, projectName: string, options?: PorchInitOptions): Promise<void>;
|
|
23
23
|
/**
|
|
24
|
-
* Run the protocol loop for a project
|
|
24
|
+
* Run the protocol loop for a project (Interactive REPL mode)
|
|
25
25
|
*/
|
|
26
26
|
export declare function run(projectId: string, options?: PorchRunOptions): Promise<void>;
|
|
27
27
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/porch/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/porch/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAQH,OAAO,KAAK,EACV,QAAQ,EAGR,eAAe,EACf,gBAAgB,EACjB,MAAM,YAAY,CAAC;AA+CpB;;;GAGG;AACH,wBAAgB,aAAa,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAG5D;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,QAAQ,CASzE;AA8MD;;GAEG;AACH,wBAAsB,IAAI,CACxB,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,IAAI,CAAC,CAiBf;AA2ND;;GAEG;AACH,wBAAsB,GAAG,CACvB,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,IAAI,CAAC,CAwdf;AAED;;GAEG;AACH,wBAAsB,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAiB9E;AAED;;GAEG;AACH,wBAAsB,MAAM,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA6E9D;AAED;;GAEG;AACH,wBAAsB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAkB1C;AAED;;GAEG;AACH,wBAAsB,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAO9D;AAED;;GAEG;AACH,wBAAsB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAe7C;AAyDD;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAsB,KAAK,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAuEhE"}
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
*/
|
|
8
8
|
import * as fs from 'node:fs';
|
|
9
9
|
import * as path from 'node:path';
|
|
10
|
+
import * as readline from 'node:readline';
|
|
10
11
|
import { spawn } from 'node:child_process';
|
|
11
12
|
import chalk from 'chalk';
|
|
12
13
|
import { findProjectRoot, getSkeletonDir } from '../../lib/skeleton.js';
|
|
@@ -286,8 +287,143 @@ function getNextIDEState(protocol, currentState, planPhases, signal) {
|
|
|
286
287
|
}
|
|
287
288
|
return 'complete';
|
|
288
289
|
}
|
|
290
|
+
// ============================================================================
|
|
291
|
+
// Interactive REPL
|
|
292
|
+
// ============================================================================
|
|
293
|
+
/**
|
|
294
|
+
* Create a readline interface for interactive input
|
|
295
|
+
*/
|
|
296
|
+
function createRepl() {
|
|
297
|
+
return readline.createInterface({
|
|
298
|
+
input: process.stdin,
|
|
299
|
+
output: process.stdout,
|
|
300
|
+
terminal: true,
|
|
301
|
+
});
|
|
302
|
+
}
|
|
303
|
+
/**
|
|
304
|
+
* Prompt user for input with a given message
|
|
305
|
+
*/
|
|
306
|
+
async function prompt(rl, message) {
|
|
307
|
+
return new Promise((resolve) => {
|
|
308
|
+
rl.question(message, (answer) => {
|
|
309
|
+
resolve(answer.trim().toLowerCase());
|
|
310
|
+
});
|
|
311
|
+
});
|
|
312
|
+
}
|
|
313
|
+
/**
|
|
314
|
+
* Show REPL help
|
|
315
|
+
*/
|
|
316
|
+
function showReplHelp() {
|
|
317
|
+
console.log('');
|
|
318
|
+
console.log(chalk.blue('Porch REPL Commands:'));
|
|
319
|
+
console.log(' ' + chalk.green('approve') + ' [gate] - Approve pending gate (or current if omitted)');
|
|
320
|
+
console.log(' ' + chalk.green('view') + ' - View the full artifact for current gate');
|
|
321
|
+
console.log(' ' + chalk.green('status') + ' - Show current project status');
|
|
322
|
+
console.log(' ' + chalk.green('continue') + ' - Continue to next iteration');
|
|
323
|
+
console.log(' ' + chalk.green('skip') + ' - Skip current phase (use with caution)');
|
|
324
|
+
console.log(' ' + chalk.green('help') + ' - Show this help');
|
|
325
|
+
console.log(' ' + chalk.green('quit') + ' - Exit porch');
|
|
326
|
+
console.log('');
|
|
327
|
+
}
|
|
328
|
+
/**
|
|
329
|
+
* Display current status summary
|
|
330
|
+
*/
|
|
331
|
+
function displayStatus(state, protocol) {
|
|
332
|
+
console.log('');
|
|
333
|
+
console.log(chalk.blue('─'.repeat(50)));
|
|
334
|
+
console.log(chalk.blue(`Project: ${state.id} - ${state.title}`));
|
|
335
|
+
console.log(chalk.blue(`Protocol: ${state.protocol}`));
|
|
336
|
+
console.log(chalk.blue(`State: ${state.current_state}`));
|
|
337
|
+
console.log(chalk.blue(`Iteration: ${state.iteration}`));
|
|
338
|
+
// Show pending gates
|
|
339
|
+
const pendingGates = Object.entries(state.gates)
|
|
340
|
+
.filter(([, g]) => g.status === 'pending' && g.requested_at)
|
|
341
|
+
.map(([id]) => id);
|
|
342
|
+
if (pendingGates.length > 0) {
|
|
343
|
+
console.log(chalk.yellow(`Pending gates: ${pendingGates.join(', ')}`));
|
|
344
|
+
}
|
|
345
|
+
console.log(chalk.blue('─'.repeat(50)));
|
|
346
|
+
console.log('');
|
|
347
|
+
}
|
|
348
|
+
/**
|
|
349
|
+
* Get the artifact file path for a gate
|
|
350
|
+
*/
|
|
351
|
+
function getGateArtifact(gateId, state, projectRoot) {
|
|
352
|
+
const projectDir = `${state.id}-${state.title}`;
|
|
353
|
+
if (gateId === 'specify_approval') {
|
|
354
|
+
// Look for spec file
|
|
355
|
+
const specPath = path.join(projectRoot, 'codev', 'specs', `${projectDir}.md`);
|
|
356
|
+
if (fs.existsSync(specPath))
|
|
357
|
+
return specPath;
|
|
358
|
+
// Try alternate naming
|
|
359
|
+
const altPath = path.join(projectRoot, 'codev', 'specs', `${state.id}-${state.title}.md`);
|
|
360
|
+
if (fs.existsSync(altPath))
|
|
361
|
+
return altPath;
|
|
362
|
+
}
|
|
363
|
+
else if (gateId === 'plan_approval') {
|
|
364
|
+
// Look for plan file
|
|
365
|
+
const planPath = path.join(projectRoot, 'codev', 'plans', `${projectDir}.md`);
|
|
366
|
+
if (fs.existsSync(planPath))
|
|
367
|
+
return planPath;
|
|
368
|
+
const altPath = path.join(projectRoot, 'codev', 'plans', `${state.id}-${state.title}.md`);
|
|
369
|
+
if (fs.existsSync(altPath))
|
|
370
|
+
return altPath;
|
|
371
|
+
}
|
|
372
|
+
else if (gateId === 'review_approval') {
|
|
373
|
+
// Look for review file
|
|
374
|
+
const reviewPath = path.join(projectRoot, 'codev', 'reviews', `${projectDir}.md`);
|
|
375
|
+
if (fs.existsSync(reviewPath))
|
|
376
|
+
return reviewPath;
|
|
377
|
+
}
|
|
378
|
+
return null;
|
|
379
|
+
}
|
|
289
380
|
/**
|
|
290
|
-
*
|
|
381
|
+
* Display gate context - show what artifact was created and key information
|
|
382
|
+
*/
|
|
383
|
+
function displayGateContext(gateId, state, projectRoot) {
|
|
384
|
+
const artifactPath = getGateArtifact(gateId, state, projectRoot);
|
|
385
|
+
console.log('');
|
|
386
|
+
console.log(chalk.cyan('─'.repeat(50)));
|
|
387
|
+
console.log(chalk.cyan(' CONTEXT FOR REVIEW'));
|
|
388
|
+
console.log(chalk.cyan('─'.repeat(50)));
|
|
389
|
+
if (artifactPath) {
|
|
390
|
+
console.log(chalk.white(` Artifact: ${artifactPath}`));
|
|
391
|
+
console.log('');
|
|
392
|
+
// Read and show first ~30 lines of the artifact
|
|
393
|
+
try {
|
|
394
|
+
const content = fs.readFileSync(artifactPath, 'utf-8');
|
|
395
|
+
const lines = content.split('\n');
|
|
396
|
+
const preview = lines.slice(0, 30).join('\n');
|
|
397
|
+
console.log(chalk.gray(' ┌' + '─'.repeat(46) + '┐'));
|
|
398
|
+
for (const line of preview.split('\n')) {
|
|
399
|
+
console.log(chalk.gray(' │ ') + line.slice(0, 44));
|
|
400
|
+
}
|
|
401
|
+
if (lines.length > 30) {
|
|
402
|
+
console.log(chalk.gray(` │ ... (${lines.length - 30} more lines)`));
|
|
403
|
+
}
|
|
404
|
+
console.log(chalk.gray(' └' + '─'.repeat(46) + '┘'));
|
|
405
|
+
console.log('');
|
|
406
|
+
console.log(chalk.white(` To view full document: cat ${artifactPath}`));
|
|
407
|
+
}
|
|
408
|
+
catch (e) {
|
|
409
|
+
console.log(chalk.yellow(` Could not read artifact: ${e}`));
|
|
410
|
+
}
|
|
411
|
+
}
|
|
412
|
+
else {
|
|
413
|
+
console.log(chalk.yellow(' No artifact file found for this gate.'));
|
|
414
|
+
console.log(chalk.yellow(' This may indicate Claude did not produce the expected output.'));
|
|
415
|
+
// Show what we expected
|
|
416
|
+
if (gateId === 'specify_approval') {
|
|
417
|
+
console.log(chalk.gray(` Expected: codev/specs/${state.id}-${state.title}.md`));
|
|
418
|
+
}
|
|
419
|
+
else if (gateId === 'plan_approval') {
|
|
420
|
+
console.log(chalk.gray(` Expected: codev/plans/${state.id}-${state.title}.md`));
|
|
421
|
+
}
|
|
422
|
+
}
|
|
423
|
+
console.log('');
|
|
424
|
+
}
|
|
425
|
+
/**
|
|
426
|
+
* Run the protocol loop for a project (Interactive REPL mode)
|
|
291
427
|
*/
|
|
292
428
|
export async function run(projectId, options = {}) {
|
|
293
429
|
const projectRoot = findProjectRoot();
|
|
@@ -303,13 +439,22 @@ export async function run(projectId, options = {}) {
|
|
|
303
439
|
throw new Error(`Could not read state from: ${statusFilePath}`);
|
|
304
440
|
}
|
|
305
441
|
const protocol = loadProtocol(state.protocol, projectRoot);
|
|
306
|
-
const pollInterval = options.pollInterval || protocol.config?.poll_interval || 30;
|
|
307
442
|
const maxIterations = protocol.config?.max_iterations || 100;
|
|
308
443
|
// Create notifier for this project (desktop notifications for important events)
|
|
309
444
|
const notifier = createNotifier(projectId, { desktop: true });
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
console.log(
|
|
445
|
+
// Create REPL interface
|
|
446
|
+
const rl = createRepl();
|
|
447
|
+
console.log('');
|
|
448
|
+
console.log(chalk.green('═'.repeat(50)));
|
|
449
|
+
console.log(chalk.green(` PORCH - Protocol Orchestrator`));
|
|
450
|
+
console.log(chalk.green('═'.repeat(50)));
|
|
451
|
+
console.log(chalk.blue(` Project: ${state.id} - ${state.title}`));
|
|
452
|
+
console.log(chalk.blue(` Protocol: ${state.protocol}`));
|
|
453
|
+
console.log(chalk.blue(` State: ${state.current_state}`));
|
|
454
|
+
console.log(chalk.green('═'.repeat(50)));
|
|
455
|
+
console.log('');
|
|
456
|
+
console.log(chalk.gray('Type "help" for commands, "quit" to exit'));
|
|
457
|
+
console.log('');
|
|
313
458
|
let currentState = state;
|
|
314
459
|
// Extract plan phases if not already done and we're past planning
|
|
315
460
|
if (!currentState.plan_phases || currentState.plan_phases.length === 0) {
|
|
@@ -366,6 +511,7 @@ export async function run(projectId, options = {}) {
|
|
|
366
511
|
console.log(chalk.green(`[porch] ${state.protocol} loop COMPLETE`));
|
|
367
512
|
console.log(chalk.green(`[porch] Project ${projectId} finished all phases`));
|
|
368
513
|
console.log(chalk.green('━'.repeat(40)));
|
|
514
|
+
rl.close();
|
|
369
515
|
return;
|
|
370
516
|
}
|
|
371
517
|
// Check if there's a pending gate from a previous iteration (step already executed)
|
|
@@ -395,11 +541,69 @@ export async function run(projectId, options = {}) {
|
|
|
395
541
|
}
|
|
396
542
|
}
|
|
397
543
|
else if (currentState.gates[gateId]?.requested_at) {
|
|
398
|
-
// Gate requested but not approved -
|
|
399
|
-
console.log(
|
|
400
|
-
console.log(chalk.yellow(
|
|
401
|
-
console.log(chalk.yellow(`
|
|
402
|
-
|
|
544
|
+
// Gate requested but not approved - prompt user interactively
|
|
545
|
+
console.log('');
|
|
546
|
+
console.log(chalk.yellow('═'.repeat(50)));
|
|
547
|
+
console.log(chalk.yellow(` GATE PENDING: ${gateId}`));
|
|
548
|
+
console.log(chalk.yellow('═'.repeat(50)));
|
|
549
|
+
console.log(chalk.cyan(` Phase: ${phaseId}`));
|
|
550
|
+
console.log(chalk.cyan(` State: ${currentState.current_state}`));
|
|
551
|
+
// Show context for the gate - what artifact was created
|
|
552
|
+
displayGateContext(gateId, currentState, projectRoot);
|
|
553
|
+
// Interactive gate approval loop
|
|
554
|
+
let gateHandled = false;
|
|
555
|
+
while (!gateHandled) {
|
|
556
|
+
const answer = await prompt(rl, chalk.yellow(`Approve ${gateId}? [y/n/help]: `));
|
|
557
|
+
switch (answer) {
|
|
558
|
+
case 'y':
|
|
559
|
+
case 'yes':
|
|
560
|
+
case 'approve':
|
|
561
|
+
currentState = approveGate(currentState, gateId);
|
|
562
|
+
await writeState(statusFilePath, currentState);
|
|
563
|
+
console.log(chalk.green(`✓ Gate ${gateId} approved`));
|
|
564
|
+
gateHandled = true;
|
|
565
|
+
break;
|
|
566
|
+
case 'n':
|
|
567
|
+
case 'no':
|
|
568
|
+
console.log(chalk.yellow('Gate not approved. Staying in current state.'));
|
|
569
|
+
console.log(chalk.gray('Type "quit" to exit or wait for changes.'));
|
|
570
|
+
break;
|
|
571
|
+
case 'status':
|
|
572
|
+
displayStatus(currentState, protocol);
|
|
573
|
+
break;
|
|
574
|
+
case 'view':
|
|
575
|
+
case 'cat':
|
|
576
|
+
case 'show':
|
|
577
|
+
// Show full artifact
|
|
578
|
+
const artifactPath = getGateArtifact(gateId, currentState, projectRoot);
|
|
579
|
+
if (artifactPath) {
|
|
580
|
+
console.log(chalk.cyan(`\n─── ${artifactPath} ───\n`));
|
|
581
|
+
try {
|
|
582
|
+
const content = fs.readFileSync(artifactPath, 'utf-8');
|
|
583
|
+
console.log(content);
|
|
584
|
+
console.log(chalk.cyan(`\n─── End of ${artifactPath} ───\n`));
|
|
585
|
+
}
|
|
586
|
+
catch (e) {
|
|
587
|
+
console.log(chalk.red(`Error reading file: ${e}`));
|
|
588
|
+
}
|
|
589
|
+
}
|
|
590
|
+
else {
|
|
591
|
+
console.log(chalk.yellow('No artifact file found for this gate.'));
|
|
592
|
+
}
|
|
593
|
+
break;
|
|
594
|
+
case 'help':
|
|
595
|
+
case '?':
|
|
596
|
+
showReplHelp();
|
|
597
|
+
break;
|
|
598
|
+
case 'quit':
|
|
599
|
+
case 'exit':
|
|
600
|
+
console.log(chalk.blue('Exiting porch...'));
|
|
601
|
+
rl.close();
|
|
602
|
+
return;
|
|
603
|
+
default:
|
|
604
|
+
console.log(chalk.gray('Type "y" to approve, "n" to decline, or "help" for commands'));
|
|
605
|
+
}
|
|
606
|
+
}
|
|
403
607
|
continue;
|
|
404
608
|
}
|
|
405
609
|
// If gate not yet requested, fall through to execute phase first
|
|
@@ -497,15 +701,53 @@ export async function run(projectId, options = {}) {
|
|
|
497
701
|
await writeState(statusFilePath, currentState);
|
|
498
702
|
await notifier.gatePending(phaseId, escalationGateId);
|
|
499
703
|
}
|
|
500
|
-
//
|
|
501
|
-
|
|
704
|
+
// Prompt user to approve escalation gate
|
|
705
|
+
console.log('');
|
|
706
|
+
console.log(chalk.red('═'.repeat(50)));
|
|
707
|
+
console.log(chalk.red(` ESCALATION: ${escalationGateId}`));
|
|
708
|
+
console.log(chalk.red('═'.repeat(50)));
|
|
709
|
+
console.log(chalk.yellow(` Consultation failed after ${attemptCount} attempts`));
|
|
710
|
+
console.log('');
|
|
711
|
+
let escalationHandled = false;
|
|
712
|
+
while (!escalationHandled) {
|
|
713
|
+
const answer = await prompt(rl, chalk.red(`Override and continue? [y/n/help]: `));
|
|
714
|
+
switch (answer) {
|
|
715
|
+
case 'y':
|
|
716
|
+
case 'yes':
|
|
717
|
+
case 'approve':
|
|
718
|
+
case 'override':
|
|
719
|
+
currentState = approveGate(currentState, escalationGateId);
|
|
720
|
+
currentState = resetConsultationAttempts(currentState, stateKey);
|
|
721
|
+
await writeState(statusFilePath, currentState);
|
|
722
|
+
console.log(chalk.green(`✓ Escalation gate ${escalationGateId} approved`));
|
|
723
|
+
escalationHandled = true;
|
|
724
|
+
break;
|
|
725
|
+
case 'n':
|
|
726
|
+
case 'no':
|
|
727
|
+
console.log(chalk.yellow('Escalation not approved. Consultation loop will continue.'));
|
|
728
|
+
break;
|
|
729
|
+
case 'status':
|
|
730
|
+
displayStatus(currentState, protocol);
|
|
731
|
+
break;
|
|
732
|
+
case 'help':
|
|
733
|
+
case '?':
|
|
734
|
+
showReplHelp();
|
|
735
|
+
break;
|
|
736
|
+
case 'quit':
|
|
737
|
+
case 'exit':
|
|
738
|
+
console.log(chalk.blue('Exiting porch...'));
|
|
739
|
+
rl.close();
|
|
740
|
+
return;
|
|
741
|
+
default:
|
|
742
|
+
console.log(chalk.gray('Type "y" to override and continue, "n" to decline, or "help" for commands'));
|
|
743
|
+
}
|
|
744
|
+
}
|
|
502
745
|
continue;
|
|
503
746
|
}
|
|
504
747
|
}
|
|
505
748
|
else {
|
|
506
749
|
console.log(chalk.yellow(`[porch] Consultation requested changes (attempt ${attemptCount}/${maxRounds}), continuing for revision`));
|
|
507
750
|
// Stay in same state for Claude to revise on next iteration
|
|
508
|
-
await new Promise(r => setTimeout(r, 2000));
|
|
509
751
|
continue;
|
|
510
752
|
}
|
|
511
753
|
}
|
|
@@ -539,11 +781,44 @@ export async function run(projectId, options = {}) {
|
|
|
539
781
|
console.log(chalk.yellow(`[porch] Step complete. Gate approval requested: ${gateId}`));
|
|
540
782
|
await notifier.gatePending(phaseId, gateId);
|
|
541
783
|
}
|
|
542
|
-
// Gate not yet approved -
|
|
784
|
+
// Gate not yet approved - prompt user interactively
|
|
543
785
|
if (currentState.gates[gateId]?.status !== 'passed') {
|
|
544
|
-
console.log(
|
|
545
|
-
console.log(chalk.yellow(
|
|
546
|
-
|
|
786
|
+
console.log('');
|
|
787
|
+
console.log(chalk.yellow('═'.repeat(50)));
|
|
788
|
+
console.log(chalk.yellow(` GATE PENDING: ${gateId}`));
|
|
789
|
+
console.log(chalk.yellow('═'.repeat(50)));
|
|
790
|
+
let gateHandled = false;
|
|
791
|
+
while (!gateHandled) {
|
|
792
|
+
const answer = await prompt(rl, chalk.yellow(`Approve ${gateId}? [y/n/help]: `));
|
|
793
|
+
switch (answer) {
|
|
794
|
+
case 'y':
|
|
795
|
+
case 'yes':
|
|
796
|
+
case 'approve':
|
|
797
|
+
currentState = approveGate(currentState, gateId);
|
|
798
|
+
await writeState(statusFilePath, currentState);
|
|
799
|
+
console.log(chalk.green(`✓ Gate ${gateId} approved`));
|
|
800
|
+
gateHandled = true;
|
|
801
|
+
break;
|
|
802
|
+
case 'n':
|
|
803
|
+
case 'no':
|
|
804
|
+
console.log(chalk.yellow('Gate not approved. Staying in current state.'));
|
|
805
|
+
break;
|
|
806
|
+
case 'status':
|
|
807
|
+
displayStatus(currentState, protocol);
|
|
808
|
+
break;
|
|
809
|
+
case 'help':
|
|
810
|
+
case '?':
|
|
811
|
+
showReplHelp();
|
|
812
|
+
break;
|
|
813
|
+
case 'quit':
|
|
814
|
+
case 'exit':
|
|
815
|
+
console.log(chalk.blue('Exiting porch...'));
|
|
816
|
+
rl.close();
|
|
817
|
+
return;
|
|
818
|
+
default:
|
|
819
|
+
console.log(chalk.gray('Type "y" to approve, "n" to decline, or "help" for commands'));
|
|
820
|
+
}
|
|
821
|
+
}
|
|
547
822
|
continue;
|
|
548
823
|
}
|
|
549
824
|
}
|
|
@@ -580,8 +855,8 @@ export async function run(projectId, options = {}) {
|
|
|
580
855
|
else {
|
|
581
856
|
console.log(chalk.yellow(`[porch] No transition defined, staying in current state`));
|
|
582
857
|
}
|
|
583
|
-
await new Promise(r => setTimeout(r, 2000));
|
|
584
858
|
}
|
|
859
|
+
rl.close();
|
|
585
860
|
throw new Error(`Max iterations (${maxIterations}) reached!`);
|
|
586
861
|
}
|
|
587
862
|
/**
|