rafcode 1.1.2 → 1.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/RAF/018-workflow-forge/decisions.md +13 -0
  2. package/RAF/018-workflow-forge/input.md +2 -0
  3. package/RAF/018-workflow-forge/outcomes/001-add-task-number-progress.md +61 -0
  4. package/RAF/018-workflow-forge/outcomes/002-update-plan-do-prompts.md +62 -0
  5. package/RAF/018-workflow-forge/plans/001-add-task-number-progress.md +30 -0
  6. package/RAF/018-workflow-forge/plans/002-update-plan-do-prompts.md +34 -0
  7. package/RAF/019-verbose-chronicle/decisions.md +25 -0
  8. package/RAF/019-verbose-chronicle/input.md +3 -0
  9. package/RAF/019-verbose-chronicle/outcomes/001-amend-iteration-references.md +25 -0
  10. package/RAF/019-verbose-chronicle/outcomes/002-verbose-task-name-display.md +31 -0
  11. package/RAF/019-verbose-chronicle/outcomes/003-verbose-streaming-fix.md +48 -0
  12. package/RAF/019-verbose-chronicle/outcomes/004-commit-verification-before-halt.md +56 -0
  13. package/RAF/019-verbose-chronicle/plans/001-amend-iteration-references.md +35 -0
  14. package/RAF/019-verbose-chronicle/plans/002-verbose-task-name-display.md +38 -0
  15. package/RAF/019-verbose-chronicle/plans/003-verbose-streaming-fix.md +45 -0
  16. package/RAF/019-verbose-chronicle/plans/004-commit-verification-before-halt.md +62 -0
  17. package/dist/commands/do.js +24 -15
  18. package/dist/commands/do.js.map +1 -1
  19. package/dist/core/claude-runner.d.ts +52 -1
  20. package/dist/core/claude-runner.d.ts.map +1 -1
  21. package/dist/core/claude-runner.js +195 -17
  22. package/dist/core/claude-runner.js.map +1 -1
  23. package/dist/core/git.d.ts +15 -0
  24. package/dist/core/git.d.ts.map +1 -1
  25. package/dist/core/git.js +44 -0
  26. package/dist/core/git.js.map +1 -1
  27. package/dist/parsers/stream-renderer.d.ts +42 -0
  28. package/dist/parsers/stream-renderer.d.ts.map +1 -0
  29. package/dist/parsers/stream-renderer.js +100 -0
  30. package/dist/parsers/stream-renderer.js.map +1 -0
  31. package/dist/prompts/amend.d.ts.map +1 -1
  32. package/dist/prompts/amend.js +27 -3
  33. package/dist/prompts/amend.js.map +1 -1
  34. package/dist/prompts/execution.d.ts.map +1 -1
  35. package/dist/prompts/execution.js +1 -2
  36. package/dist/prompts/execution.js.map +1 -1
  37. package/dist/prompts/planning.d.ts.map +1 -1
  38. package/dist/prompts/planning.js +16 -3
  39. package/dist/prompts/planning.js.map +1 -1
  40. package/dist/utils/terminal-symbols.d.ts +3 -2
  41. package/dist/utils/terminal-symbols.d.ts.map +1 -1
  42. package/dist/utils/terminal-symbols.js +6 -4
  43. package/dist/utils/terminal-symbols.js.map +1 -1
  44. package/package.json +1 -1
  45. package/src/commands/do.ts +25 -15
  46. package/src/core/claude-runner.ts +270 -17
  47. package/src/core/git.ts +44 -0
  48. package/src/parsers/stream-renderer.ts +139 -0
  49. package/src/prompts/amend.ts +28 -3
  50. package/src/prompts/execution.ts +1 -2
  51. package/src/prompts/planning.ts +16 -3
  52. package/src/utils/terminal-symbols.ts +7 -4
  53. package/tests/unit/claude-runner.test.ts +567 -1
  54. package/tests/unit/git-commit-helpers.test.ts +103 -0
  55. package/tests/unit/plan-command.test.ts +51 -0
  56. package/tests/unit/stream-renderer.test.ts +286 -0
  57. package/tests/unit/terminal-symbols.test.ts +20 -0
@@ -3,7 +3,7 @@ import { Command } from 'commander';
3
3
  import { ProjectManager } from '../core/project-manager.js';
4
4
  import { ClaudeRunner } from '../core/claude-runner.js';
5
5
  import { shutdownHandler } from '../core/shutdown-handler.js';
6
- import { stashChanges, hasUncommittedChanges } from '../core/git.js';
6
+ import { stashChanges, hasUncommittedChanges, isGitRepo, getHeadCommitHash } from '../core/git.js';
7
7
  import { getExecutionPrompt } from '../prompts/execution.js';
8
8
  import { parseOutput, isRetryableFailure } from '../parsers/output-parser.js';
9
9
  import { validatePlansExist, resolveModelOption } from '../utils/validation.js';
@@ -332,6 +332,8 @@ async function executeSingleProject(projectPath, projectName, options) {
332
332
  const taskNumber = taskIndex + 1;
333
333
  const taskName = extractTaskNameFromPlanFile(task.planFile);
334
334
  const displayName = taskName ?? task.id;
335
+ const taskId = task.id; // Capture for closure
336
+ const taskLabel = displayName !== task.id ? `${task.id} (${displayName})` : task.id;
335
337
  // Handle blocked tasks separately - skip Claude execution
336
338
  if (task.status === 'blocked') {
337
339
  // Find which dependency caused the block for the message
@@ -343,11 +345,11 @@ async function executeSingleProject(projectPath, projectName, options) {
343
345
  if (verbose) {
344
346
  const taskContext = `[Task ${taskNumber}/${totalTasks}: ${displayName}]`;
345
347
  logger.setContext(taskContext);
346
- logger.warn(`Task ${task.id} blocked by failed dependency: ${blockingDep}`);
348
+ logger.warn(`Task ${taskLabel} blocked by failed dependency: ${blockingDep}`);
347
349
  }
348
350
  else {
349
351
  // Minimal mode: show blocked task line with distinct symbol
350
- logger.info(formatTaskProgress(taskNumber, totalTasks, 'blocked', displayName));
352
+ logger.info(formatTaskProgress(taskNumber, totalTasks, 'blocked', displayName, undefined, task.id));
351
353
  }
352
354
  // Generate blocked outcome file
353
355
  const blockedOutcome = generateBlockedOutcome(task, state);
@@ -364,13 +366,13 @@ async function executeSingleProject(projectPath, projectName, options) {
364
366
  logger.setContext(taskContext);
365
367
  // Log task execution status
366
368
  if (task.status === 'failed') {
367
- logger.info(`Retrying task ${task.id} (previously failed)...`);
369
+ logger.info(`Retrying task ${taskLabel} (previously failed)...`);
368
370
  }
369
371
  else if (task.status === 'completed' && force) {
370
- logger.info(`Re-running task ${task.id} (force mode)...`);
372
+ logger.info(`Re-running task ${taskLabel} (force mode)...`);
371
373
  }
372
374
  else {
373
- logger.info(`Executing task ${task.id}...`);
375
+ logger.info(`Executing task ${taskLabel}...`);
374
376
  }
375
377
  }
376
378
  // Get previous outcomes for context
@@ -395,13 +397,13 @@ async function executeSingleProject(projectPath, projectName, options) {
395
397
  const statusLine = createStatusLine();
396
398
  const timer = createTaskTimer(verbose ? undefined : (elapsed) => {
397
399
  // Show running status with task name and timer (updates in place)
398
- statusLine.update(formatTaskProgress(taskNumber, totalTasks, 'running', displayName, elapsed));
400
+ statusLine.update(formatTaskProgress(taskNumber, totalTasks, 'running', displayName, elapsed, taskId));
399
401
  });
400
402
  timer.start();
401
403
  while (!success && attempts < maxRetries) {
402
404
  attempts++;
403
405
  if (verbose && attempts > 1) {
404
- logger.info(` Retry ${attempts}/${maxRetries}...`);
406
+ logger.info(` Retry ${attempts}/${maxRetries} for task ${taskLabel}...`);
405
407
  }
406
408
  // Build execution prompt (inside loop to include retry context on retries)
407
409
  // Check if previous outcome file exists for retry context
@@ -423,10 +425,17 @@ async function executeSingleProject(projectPath, projectName, options) {
423
425
  dependencyIds,
424
426
  dependencyOutcomes,
425
427
  });
428
+ // Capture HEAD hash before execution for commit verification
429
+ const preExecutionHead = isGitRepo() ? getHeadCommitHash() : null;
430
+ const commitContext = preExecutionHead ? {
431
+ preExecutionHead,
432
+ expectedPrefix: `RAF[${projectNumber}:${task.id}]`,
433
+ outcomeFilePath,
434
+ } : undefined;
426
435
  // Run Claude
427
436
  const result = verbose
428
- ? await claudeRunner.runVerbose(prompt, { timeout })
429
- : await claudeRunner.run(prompt, { timeout });
437
+ ? await claudeRunner.runVerbose(prompt, { timeout, outcomeFilePath, commitContext })
438
+ : await claudeRunner.run(prompt, { timeout, outcomeFilePath, commitContext });
430
439
  lastOutput = result.output;
431
440
  // Parse result
432
441
  const parsed = parseOutput(result.output);
@@ -532,11 +541,11 @@ Task completed. No detailed report provided.
532
541
  }
533
542
  projectManager.saveOutcome(projectPath, task.id, outcomeContent);
534
543
  if (verbose) {
535
- logger.success(` Task ${task.id} completed (${elapsedFormatted})`);
544
+ logger.success(` Task ${taskLabel} completed (${elapsedFormatted})`);
536
545
  }
537
546
  else {
538
547
  // Minimal mode: show completed task line
539
- logger.info(formatTaskProgress(taskNumber, totalTasks, 'completed', displayName, elapsedMs));
548
+ logger.info(formatTaskProgress(taskNumber, totalTasks, 'completed', displayName, elapsedMs, task.id));
540
549
  }
541
550
  completedInSession.add(task.id);
542
551
  }
@@ -548,16 +557,16 @@ Task completed. No detailed report provided.
548
557
  stashName = `raf-${projectNum}-task-${task.id}-failed`;
549
558
  const stashed = stashChanges(stashName);
550
559
  if (verbose && stashed) {
551
- logger.info(` Changes stashed as: ${stashName}`);
560
+ logger.info(` Changes for task ${taskLabel} stashed as: ${stashName}`);
552
561
  }
553
562
  }
554
563
  if (verbose) {
555
- logger.error(` Task ${task.id} failed: ${failureReason} (${elapsedFormatted})`);
564
+ logger.error(` Task ${taskLabel} failed: ${failureReason} (${elapsedFormatted})`);
556
565
  logger.info(' Analyzing failure...');
557
566
  }
558
567
  else {
559
568
  // Minimal mode: show failed task line
560
- logger.info(formatTaskProgress(taskNumber, totalTasks, 'failed', displayName, elapsedMs));
569
+ logger.info(formatTaskProgress(taskNumber, totalTasks, 'failed', displayName, elapsedMs, task.id));
561
570
  }
562
571
  // Analyze failure and generate structured report
563
572
  const analysisReport = await analyzeFailure(lastOutput, failureReason, task.id);
@@ -1 +1 @@
1
- {"version":3,"file":"do.js","sourceRoot":"","sources":["../../src/commands/do.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"do.js","sourceRoot":"","sources":["../../src/commands/do.ts"],"names":[],"mappings":"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"}
@@ -13,6 +13,27 @@ export interface ClaudeRunnerOptions {
13
13
  * Claude will still ask planning interview questions.
14
14
  */
15
15
  dangerouslySkipPermissions?: boolean;
16
+ /**
17
+ * Path to the outcome file. When provided, enables completion detection:
18
+ * - Monitors stdout for completion markers (<promise>COMPLETE/FAILED</promise>)
19
+ * - Polls the outcome file for completion markers
20
+ * When detected, starts a grace period before terminating the process,
21
+ * allowing time for git commit operations to complete.
22
+ */
23
+ outcomeFilePath?: string;
24
+ /**
25
+ * Commit verification context. When provided, the grace period will verify
26
+ * that the expected git commit has been made before terminating.
27
+ * Only applies when a COMPLETE marker is detected (not FAILED).
28
+ */
29
+ commitContext?: {
30
+ /** HEAD commit hash recorded before task execution began. */
31
+ preExecutionHead: string;
32
+ /** Expected commit message prefix (e.g., "RAF[005:001]"). */
33
+ expectedPrefix: string;
34
+ /** Path to the outcome file that should be committed. */
35
+ outcomeFilePath: string;
36
+ };
16
37
  }
17
38
  export interface ClaudeRunnerConfig {
18
39
  /**
@@ -27,6 +48,35 @@ export interface RunResult {
27
48
  timedOut: boolean;
28
49
  contextOverflow: boolean;
29
50
  }
51
+ /**
52
+ * Grace period in ms after completion marker is detected before terminating.
53
+ * Allows time for git commit operations to complete.
54
+ */
55
+ export declare const COMPLETION_GRACE_PERIOD_MS = 60000;
56
+ /**
57
+ * Hard maximum grace period in ms. If the commit hasn't landed by this point,
58
+ * the process is killed regardless.
59
+ */
60
+ export declare const COMPLETION_HARD_MAX_MS = 180000;
61
+ /**
62
+ * Interval in ms for polling commit verification after the initial grace period expires.
63
+ */
64
+ export declare const COMMIT_POLL_INTERVAL_MS = 10000;
65
+ /**
66
+ * Interval in ms for polling the outcome file for completion markers.
67
+ */
68
+ export declare const OUTCOME_POLL_INTERVAL_MS = 5000;
69
+ /**
70
+ * Context for commit verification during grace period.
71
+ */
72
+ export interface CommitContext {
73
+ /** HEAD commit hash recorded before task execution began. */
74
+ preExecutionHead: string;
75
+ /** Expected commit message prefix (e.g., "RAF[005:001]"). */
76
+ expectedPrefix: string;
77
+ /** Path to the outcome file that should be committed. */
78
+ outcomeFilePath: string;
79
+ }
30
80
  export declare class ClaudeRunner {
31
81
  private activeProcess;
32
82
  private killed;
@@ -56,7 +106,8 @@ export declare class ClaudeRunner {
56
106
  run(prompt: string, options?: ClaudeRunnerOptions): Promise<RunResult>;
57
107
  /**
58
108
  * Run Claude non-interactively with verbose output to stdout.
59
- * Uses child_process.spawn with -p flag for prompt (like ralphy).
109
+ * Uses --output-format stream-json --verbose to get real-time streaming
110
+ * of tool calls, file operations, and thinking steps.
60
111
  *
61
112
  * TIMEOUT BEHAVIOR:
62
113
  * - The timeout is applied per individual call to this method
@@ -1 +1 @@
1
- {"version":3,"file":"claude-runner.d.ts","sourceRoot":"","sources":["../../src/core/claude-runner.ts"],"names":[],"mappings":"AAaA,MAAM,WAAW,mBAAmB;IAClC;;;;;OAKG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,0BAA0B,CAAC,EAAE,OAAO,CAAC;CACtC;AAED,MAAM,WAAW,kBAAkB;IACjC;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,eAAe,EAAE,OAAO,CAAC;CAC1B;AASD,qBAAa,YAAY;IACvB,OAAO,CAAC,aAAa,CAAyB;IAC9C,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,KAAK,CAAS;gBAEV,MAAM,GAAE,kBAAuB;IAI3C;;;;;;;OAOG;IACG,cAAc,CAClB,YAAY,EAAE,MAAM,EACpB,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,MAAM,CAAC;IAqFlB;;;;;;;;;;;OAWG;IACG,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,mBAAwB,GAAG,OAAO,CAAC,SAAS,CAAC;IAoFhF;;;;;;;;;;OAUG;IACG,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,mBAAwB,GAAG,OAAO,CAAC,SAAS,CAAC;IA8FvF;;OAEG;IACH,IAAI,IAAI,IAAI;IA2BZ;;OAEG;IACH,SAAS,IAAI,OAAO;CAGrB"}
1
+ {"version":3,"file":"claude-runner.d.ts","sourceRoot":"","sources":["../../src/core/claude-runner.ts"],"names":[],"mappings":"AAgBA,MAAM,WAAW,mBAAmB;IAClC;;;;;OAKG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,0BAA0B,CAAC,EAAE,OAAO,CAAC;IACrC;;;;;;OAMG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;;OAIG;IACH,aAAa,CAAC,EAAE;QACd,6DAA6D;QAC7D,gBAAgB,EAAE,MAAM,CAAC;QACzB,6DAA6D;QAC7D,cAAc,EAAE,MAAM,CAAC;QACvB,yDAAyD;QACzD,eAAe,EAAE,MAAM,CAAC;KACzB,CAAC;CACH;AAED,MAAM,WAAW,kBAAkB;IACjC;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,eAAe,EAAE,OAAO,CAAC;CAC1B;AAWD;;;GAGG;AACH,eAAO,MAAM,0BAA0B,QAAS,CAAC;AAEjD;;;GAGG;AACH,eAAO,MAAM,sBAAsB,SAAU,CAAC;AAE9C;;GAEG;AACH,eAAO,MAAM,uBAAuB,QAAS,CAAC;AAE9C;;GAEG;AACH,eAAO,MAAM,wBAAwB,OAAQ,CAAC;AAE9C;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,6DAA6D;IAC7D,gBAAgB,EAAE,MAAM,CAAC;IACzB,6DAA6D;IAC7D,cAAc,EAAE,MAAM,CAAC;IACvB,yDAAyD;IACzD,eAAe,EAAE,MAAM,CAAC;CACzB;AA4ID,qBAAa,YAAY;IACvB,OAAO,CAAC,aAAa,CAAyB;IAC9C,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,KAAK,CAAS;gBAEV,MAAM,GAAE,kBAAuB;IAI3C;;;;;;;OAOG;IACG,cAAc,CAClB,YAAY,EAAE,MAAM,EACpB,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,MAAM,CAAC;IAqFlB;;;;;;;;;;;OAWG;IACG,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,mBAAwB,GAAG,OAAO,CAAC,SAAS,CAAC;IA+FhF;;;;;;;;;;;OAWG;IACG,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,mBAAwB,GAAG,OAAO,CAAC,SAAS,CAAC;IAyIvF;;OAEG;IACH,IAAI,IAAI,IAAI;IA2BZ;;OAEG;IACH,SAAS,IAAI,OAAO;CAGrB"}
@@ -1,6 +1,9 @@
1
+ import * as fs from 'node:fs';
1
2
  import * as pty from 'node-pty';
2
3
  import { execSync, spawn } from 'node:child_process';
3
4
  import { logger } from '../utils/logger.js';
5
+ import { renderStreamEvent } from '../parsers/stream-renderer.js';
6
+ import { getHeadCommitHash, getHeadCommitMessage, isFileCommittedInHead } from './git.js';
4
7
  function getClaudePath() {
5
8
  try {
6
9
  return execSync('which claude', { encoding: 'utf-8' }).trim();
@@ -15,6 +18,145 @@ const CONTEXT_OVERFLOW_PATTERNS = [
15
18
  /maximum context/i,
16
19
  /context window/i,
17
20
  ];
21
+ const COMPLETION_MARKER_PATTERN = /<promise>(COMPLETE|FAILED)<\/promise>/i;
22
+ /**
23
+ * Grace period in ms after completion marker is detected before terminating.
24
+ * Allows time for git commit operations to complete.
25
+ */
26
+ export const COMPLETION_GRACE_PERIOD_MS = 60_000;
27
+ /**
28
+ * Hard maximum grace period in ms. If the commit hasn't landed by this point,
29
+ * the process is killed regardless.
30
+ */
31
+ export const COMPLETION_HARD_MAX_MS = 180_000;
32
+ /**
33
+ * Interval in ms for polling commit verification after the initial grace period expires.
34
+ */
35
+ export const COMMIT_POLL_INTERVAL_MS = 10_000;
36
+ /**
37
+ * Interval in ms for polling the outcome file for completion markers.
38
+ */
39
+ export const OUTCOME_POLL_INTERVAL_MS = 5_000;
40
+ const COMPLETE_MARKER_PATTERN = /<promise>COMPLETE<\/promise>/i;
41
+ /**
42
+ * Verify that the expected commit has been made.
43
+ * Checks: HEAD changed, commit message matches prefix, outcome file is committed.
44
+ */
45
+ function verifyCommit(commitContext) {
46
+ const currentHead = getHeadCommitHash();
47
+ if (!currentHead || currentHead === commitContext.preExecutionHead) {
48
+ return false;
49
+ }
50
+ const message = getHeadCommitMessage();
51
+ if (!message || !message.startsWith(commitContext.expectedPrefix)) {
52
+ return false;
53
+ }
54
+ if (!isFileCommittedInHead(commitContext.outcomeFilePath)) {
55
+ return false;
56
+ }
57
+ return true;
58
+ }
59
+ function createCompletionDetector(killFn, outcomeFilePath, commitContext) {
60
+ let graceHandle = null;
61
+ let commitPollHandle = null;
62
+ let hardMaxHandle = null;
63
+ let pollHandle = null;
64
+ let initialMtime = 0;
65
+ let detectedMarkerIsComplete = false;
66
+ // Record initial mtime of outcome file to avoid false positives from previous runs
67
+ if (outcomeFilePath) {
68
+ try {
69
+ if (fs.existsSync(outcomeFilePath)) {
70
+ initialMtime = fs.statSync(outcomeFilePath).mtimeMs;
71
+ }
72
+ }
73
+ catch {
74
+ // Ignore stat errors
75
+ }
76
+ }
77
+ /**
78
+ * Called when the initial grace period expires.
79
+ * If commit verification is needed and the commit hasn't landed yet,
80
+ * start polling for the commit up to the hard maximum.
81
+ */
82
+ function onGracePeriodExpired() {
83
+ if (commitContext && detectedMarkerIsComplete) {
84
+ // Check if commit already landed
85
+ if (verifyCommit(commitContext)) {
86
+ logger.debug('Grace period expired - commit verified, terminating Claude process');
87
+ killFn();
88
+ return;
89
+ }
90
+ // Commit not found yet - extend with polling
91
+ logger.debug('Grace period expired but commit not verified - extending with polling');
92
+ const remainingMs = COMPLETION_HARD_MAX_MS - COMPLETION_GRACE_PERIOD_MS;
93
+ hardMaxHandle = setTimeout(() => {
94
+ logger.warn('Hard maximum grace period reached without commit verification - terminating Claude process');
95
+ if (commitPollHandle)
96
+ clearInterval(commitPollHandle);
97
+ killFn();
98
+ }, remainingMs);
99
+ commitPollHandle = setInterval(() => {
100
+ if (commitContext && verifyCommit(commitContext)) {
101
+ logger.debug('Commit verified during extended grace period - terminating Claude process');
102
+ if (commitPollHandle)
103
+ clearInterval(commitPollHandle);
104
+ if (hardMaxHandle)
105
+ clearTimeout(hardMaxHandle);
106
+ killFn();
107
+ }
108
+ }, COMMIT_POLL_INTERVAL_MS);
109
+ }
110
+ else {
111
+ // No commit verification needed (FAILED marker or no context) - kill immediately
112
+ logger.debug('Grace period expired - terminating Claude process');
113
+ killFn();
114
+ }
115
+ }
116
+ function startGracePeriod(markerOutput) {
117
+ if (graceHandle)
118
+ return; // Already started
119
+ detectedMarkerIsComplete = COMPLETE_MARKER_PATTERN.test(markerOutput);
120
+ logger.debug('Completion marker detected - starting grace period before termination');
121
+ graceHandle = setTimeout(onGracePeriodExpired, COMPLETION_GRACE_PERIOD_MS);
122
+ }
123
+ function checkOutput(output) {
124
+ if (!graceHandle && COMPLETION_MARKER_PATTERN.test(output)) {
125
+ startGracePeriod(output);
126
+ }
127
+ }
128
+ // Start outcome file polling if path provided
129
+ if (outcomeFilePath) {
130
+ const filePath = outcomeFilePath;
131
+ pollHandle = setInterval(() => {
132
+ try {
133
+ if (!fs.existsSync(filePath))
134
+ return;
135
+ const stat = fs.statSync(filePath);
136
+ if (stat.mtimeMs <= initialMtime)
137
+ return; // File unchanged from before execution
138
+ const content = fs.readFileSync(filePath, 'utf-8');
139
+ if (COMPLETION_MARKER_PATTERN.test(content)) {
140
+ startGracePeriod(content);
141
+ }
142
+ }
143
+ catch {
144
+ // Ignore read errors - file may be mid-write
145
+ }
146
+ }, OUTCOME_POLL_INTERVAL_MS);
147
+ }
148
+ function cleanup() {
149
+ if (graceHandle)
150
+ clearTimeout(graceHandle);
151
+ if (pollHandle)
152
+ clearInterval(pollHandle);
153
+ if (commitPollHandle)
154
+ clearInterval(commitPollHandle);
155
+ if (hardMaxHandle)
156
+ clearTimeout(hardMaxHandle);
157
+ }
158
+ return { checkOutput, cleanup };
159
+ }
18
160
  export class ClaudeRunner {
19
161
  activeProcess = null;
20
162
  killed = false;
@@ -116,7 +258,7 @@ export class ClaudeRunner {
116
258
  * - Default timeout is 60 minutes if not specified
117
259
  */
118
260
  async run(prompt, options = {}) {
119
- const { timeout = 60, cwd = process.cwd() } = options;
261
+ const { timeout = 60, cwd = process.cwd(), outcomeFilePath, commitContext } = options;
120
262
  // Ensure timeout is a positive number, fallback to 60 minutes
121
263
  const validatedTimeout = Number(timeout) > 0 ? Number(timeout) : 60;
122
264
  const timeoutMs = validatedTimeout * 60 * 1000;
@@ -153,10 +295,14 @@ export class ClaudeRunner {
153
295
  logger.warn('Claude session timed out');
154
296
  proc.kill('SIGTERM');
155
297
  }, timeoutMs);
298
+ // Set up completion detection (stdout marker + outcome file polling)
299
+ const completionDetector = createCompletionDetector(() => proc.kill('SIGTERM'), outcomeFilePath, commitContext);
156
300
  // Collect stdout
157
301
  proc.stdout.on('data', (data) => {
158
302
  const text = data.toString();
159
303
  output += text;
304
+ // Check for completion marker to start grace period
305
+ completionDetector.checkOutput(output);
160
306
  // Check for context overflow
161
307
  for (const pattern of CONTEXT_OVERFLOW_PATTERNS) {
162
308
  if (pattern.test(text)) {
@@ -173,6 +319,7 @@ export class ClaudeRunner {
173
319
  });
174
320
  proc.on('close', (exitCode) => {
175
321
  clearTimeout(timeoutHandle);
322
+ completionDetector.cleanup();
176
323
  this.activeProcess = null;
177
324
  if (stderr) {
178
325
  logger.debug(`Claude stderr: ${stderr}`);
@@ -188,7 +335,8 @@ export class ClaudeRunner {
188
335
  }
189
336
  /**
190
337
  * Run Claude non-interactively with verbose output to stdout.
191
- * Uses child_process.spawn with -p flag for prompt (like ralphy).
338
+ * Uses --output-format stream-json --verbose to get real-time streaming
339
+ * of tool calls, file operations, and thinking steps.
192
340
  *
193
341
  * TIMEOUT BEHAVIOR:
194
342
  * - The timeout is applied per individual call to this method
@@ -198,7 +346,7 @@ export class ClaudeRunner {
198
346
  * - Default timeout is 60 minutes if not specified
199
347
  */
200
348
  async runVerbose(prompt, options = {}) {
201
- const { timeout = 60, cwd = process.cwd() } = options;
349
+ const { timeout = 60, cwd = process.cwd(), outcomeFilePath, commitContext } = options;
202
350
  // Ensure timeout is a positive number, fallback to 60 minutes
203
351
  const validatedTimeout = Number(timeout) > 0 ? Number(timeout) : 60;
204
352
  const timeoutMs = validatedTimeout * 60 * 1000;
@@ -208,12 +356,12 @@ export class ClaudeRunner {
208
356
  let timedOut = false;
209
357
  let contextOverflow = false;
210
358
  const claudePath = getClaudePath();
211
- logger.debug(`Starting Claude execution session (verbose) with model: ${this.model}`);
359
+ logger.debug(`Starting Claude execution session (verbose/stream-json) with model: ${this.model}`);
212
360
  logger.debug(`Prompt length: ${prompt.length}, timeout: ${timeoutMs}ms, cwd: ${cwd}`);
213
361
  logger.debug(`Claude path: ${claudePath}`);
214
362
  logger.debug('Spawning process...');
215
- // Use --append-system-prompt to add RAF instructions to system prompt
216
- // This gives RAF instructions stronger precedence than passing as user message
363
+ // Use --output-format stream-json --verbose to get real-time streaming events
364
+ // including tool calls, file operations, and intermediate output.
217
365
  // --dangerously-skip-permissions bypasses interactive prompts
218
366
  // -p enables print mode (non-interactive)
219
367
  const proc = spawn(claudePath, [
@@ -222,6 +370,9 @@ export class ClaudeRunner {
222
370
  this.model,
223
371
  '--append-system-prompt',
224
372
  prompt,
373
+ '--output-format',
374
+ 'stream-json',
375
+ '--verbose',
225
376
  '-p',
226
377
  'Execute the task as described in the system prompt.',
227
378
  ], {
@@ -238,23 +389,39 @@ export class ClaudeRunner {
238
389
  logger.warn('Claude session timed out');
239
390
  proc.kill('SIGTERM');
240
391
  }, timeoutMs);
241
- // Collect and display stdout
392
+ // Set up completion detection (stdout marker + outcome file polling)
393
+ const completionDetector = createCompletionDetector(() => proc.kill('SIGTERM'), outcomeFilePath, commitContext);
394
+ // Buffer for incomplete NDJSON lines (data chunks may split across line boundaries)
395
+ let lineBuffer = '';
242
396
  let dataReceived = false;
243
397
  proc.stdout.on('data', (data) => {
244
398
  if (!dataReceived) {
245
399
  logger.debug('First data chunk received');
246
400
  dataReceived = true;
247
401
  }
248
- const text = data.toString();
249
- output += text;
250
- process.stdout.write(text);
251
- // Check for context overflow
252
- for (const pattern of CONTEXT_OVERFLOW_PATTERNS) {
253
- if (pattern.test(text)) {
254
- contextOverflow = true;
255
- logger.warn('Context overflow detected');
256
- proc.kill('SIGTERM');
257
- break;
402
+ lineBuffer += data.toString();
403
+ // Process complete lines from the NDJSON stream
404
+ let newlineIndex;
405
+ while ((newlineIndex = lineBuffer.indexOf('\n')) !== -1) {
406
+ const line = lineBuffer.substring(0, newlineIndex);
407
+ lineBuffer = lineBuffer.substring(newlineIndex + 1);
408
+ const { display, textContent } = renderStreamEvent(line);
409
+ if (textContent) {
410
+ output += textContent;
411
+ // Check for completion marker to start grace period
412
+ completionDetector.checkOutput(output);
413
+ // Check for context overflow
414
+ for (const pattern of CONTEXT_OVERFLOW_PATTERNS) {
415
+ if (pattern.test(textContent)) {
416
+ contextOverflow = true;
417
+ logger.warn('Context overflow detected');
418
+ proc.kill('SIGTERM');
419
+ break;
420
+ }
421
+ }
422
+ }
423
+ if (display) {
424
+ process.stdout.write(display);
258
425
  }
259
426
  }
260
427
  });
@@ -263,7 +430,18 @@ export class ClaudeRunner {
263
430
  stderr += data.toString();
264
431
  });
265
432
  proc.on('close', (exitCode) => {
433
+ // Process any remaining data in the line buffer
434
+ if (lineBuffer.trim()) {
435
+ const { display, textContent } = renderStreamEvent(lineBuffer);
436
+ if (textContent) {
437
+ output += textContent;
438
+ }
439
+ if (display) {
440
+ process.stdout.write(display);
441
+ }
442
+ }
266
443
  clearTimeout(timeoutHandle);
444
+ completionDetector.cleanup();
267
445
  this.activeProcess = null;
268
446
  logger.debug(`Claude exited with code ${exitCode}, output length: ${output.length}, timedOut: ${timedOut}, contextOverflow: ${contextOverflow}`);
269
447
  if (stderr) {