rafcode 1.2.0 → 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 (43) hide show
  1. package/RAF/019-verbose-chronicle/decisions.md +25 -0
  2. package/RAF/019-verbose-chronicle/input.md +3 -0
  3. package/RAF/019-verbose-chronicle/outcomes/001-amend-iteration-references.md +25 -0
  4. package/RAF/019-verbose-chronicle/outcomes/002-verbose-task-name-display.md +31 -0
  5. package/RAF/019-verbose-chronicle/outcomes/003-verbose-streaming-fix.md +48 -0
  6. package/RAF/019-verbose-chronicle/outcomes/004-commit-verification-before-halt.md +56 -0
  7. package/RAF/019-verbose-chronicle/plans/001-amend-iteration-references.md +35 -0
  8. package/RAF/019-verbose-chronicle/plans/002-verbose-task-name-display.md +38 -0
  9. package/RAF/019-verbose-chronicle/plans/003-verbose-streaming-fix.md +45 -0
  10. package/RAF/019-verbose-chronicle/plans/004-commit-verification-before-halt.md +62 -0
  11. package/dist/commands/do.js +19 -11
  12. package/dist/commands/do.js.map +1 -1
  13. package/dist/core/claude-runner.d.ts +52 -1
  14. package/dist/core/claude-runner.d.ts.map +1 -1
  15. package/dist/core/claude-runner.js +195 -17
  16. package/dist/core/claude-runner.js.map +1 -1
  17. package/dist/core/git.d.ts +15 -0
  18. package/dist/core/git.d.ts.map +1 -1
  19. package/dist/core/git.js +44 -0
  20. package/dist/core/git.js.map +1 -1
  21. package/dist/parsers/stream-renderer.d.ts +42 -0
  22. package/dist/parsers/stream-renderer.d.ts.map +1 -0
  23. package/dist/parsers/stream-renderer.js +100 -0
  24. package/dist/parsers/stream-renderer.js.map +1 -0
  25. package/dist/prompts/amend.d.ts.map +1 -1
  26. package/dist/prompts/amend.js +13 -2
  27. package/dist/prompts/amend.js.map +1 -1
  28. package/dist/prompts/execution.d.ts.map +1 -1
  29. package/dist/prompts/execution.js +1 -3
  30. package/dist/prompts/execution.js.map +1 -1
  31. package/dist/prompts/planning.js +2 -2
  32. package/package.json +1 -1
  33. package/src/commands/do.ts +20 -11
  34. package/src/core/claude-runner.ts +270 -17
  35. package/src/core/git.ts +44 -0
  36. package/src/parsers/stream-renderer.ts +139 -0
  37. package/src/prompts/amend.ts +14 -2
  38. package/src/prompts/execution.ts +1 -3
  39. package/src/prompts/planning.ts +2 -2
  40. package/tests/unit/claude-runner.test.ts +567 -1
  41. package/tests/unit/git-commit-helpers.test.ts +103 -0
  42. package/tests/unit/plan-command.test.ts +51 -0
  43. package/tests/unit/stream-renderer.test.ts +286 -0
@@ -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) {
@@ -1 +1 @@
1
- {"version":3,"file":"claude-runner.js","sourceRoot":"","sources":["../../src/core/claude-runner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"claude-runner.js","sourceRoot":"","sources":["../../src/core/claude-runner.ts"],"names":[],"mappings":"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"}
@@ -39,6 +39,21 @@ export declare function getChangedFiles(): string[];
39
39
  * @returns true if stash was created, false otherwise
40
40
  */
41
41
  export declare function stashChanges(name: string): boolean;
42
+ /**
43
+ * Get the current HEAD commit hash.
44
+ * Returns null if not in a git repo or HEAD doesn't exist.
45
+ */
46
+ export declare function getHeadCommitHash(): string | null;
47
+ /**
48
+ * Get the current HEAD commit message (first line only).
49
+ * Returns null if not in a git repo or HEAD doesn't exist.
50
+ */
51
+ export declare function getHeadCommitMessage(): string | null;
52
+ /**
53
+ * Check if a file is tracked in the HEAD commit.
54
+ * Returns true if the file appears in the latest commit's tree.
55
+ */
56
+ export declare function isFileCommittedInHead(filePath: string): boolean;
42
57
  /**
43
58
  * Commit planning artifacts (input.md and decisions.md) for a project.
44
59
  * Uses commit message format: RAF[NNN] Plan: project-name
@@ -1 +1 @@
1
- {"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../src/core/git.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,EAAE,OAAO,CAAC;IACpB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAED;;GAEG;AACH,wBAAgB,SAAS,IAAI,OAAO,CAOnC;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,SAAS,CA6BxC;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,OAAO,CAO/C;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAyCvD;AAED;;;GAGG;AACH,wBAAgB,eAAe,IAAI,MAAM,EAAE,CAW1C;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAqBlD;AAED;;;;;;GAMG;AACH,wBAAsB,uBAAuB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA4DhF"}
1
+ {"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../src/core/git.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,EAAE,OAAO,CAAC;IACpB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAED;;GAEG;AACH,wBAAgB,SAAS,IAAI,OAAO,CAOnC;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,SAAS,CA6BxC;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,OAAO,CAO/C;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAyCvD;AAED;;;GAGG;AACH,wBAAgB,eAAe,IAAI,MAAM,EAAE,CAW1C;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAqBlD;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,GAAG,IAAI,CAMjD;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,GAAG,IAAI,CAMpD;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAc/D;AAED;;;;;;GAMG;AACH,wBAAsB,uBAAuB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA4DhF"}
package/dist/core/git.js CHANGED
@@ -147,6 +147,50 @@ export function stashChanges(name) {
147
147
  return false;
148
148
  }
149
149
  }
150
+ /**
151
+ * Get the current HEAD commit hash.
152
+ * Returns null if not in a git repo or HEAD doesn't exist.
153
+ */
154
+ export function getHeadCommitHash() {
155
+ try {
156
+ return execSync('git rev-parse HEAD', { encoding: 'utf-8', stdio: 'pipe' }).trim() || null;
157
+ }
158
+ catch {
159
+ return null;
160
+ }
161
+ }
162
+ /**
163
+ * Get the current HEAD commit message (first line only).
164
+ * Returns null if not in a git repo or HEAD doesn't exist.
165
+ */
166
+ export function getHeadCommitMessage() {
167
+ try {
168
+ return execSync('git log -1 --format=%s', { encoding: 'utf-8', stdio: 'pipe' }).trim() || null;
169
+ }
170
+ catch {
171
+ return null;
172
+ }
173
+ }
174
+ /**
175
+ * Check if a file is tracked in the HEAD commit.
176
+ * Returns true if the file appears in the latest commit's tree.
177
+ */
178
+ export function isFileCommittedInHead(filePath) {
179
+ try {
180
+ // Use git ls-tree to check if the file exists in HEAD
181
+ // We need the path relative to the repo root
182
+ const repoRoot = execSync('git rev-parse --show-toplevel', { encoding: 'utf-8', stdio: 'pipe' }).trim();
183
+ const relativePath = path.relative(repoRoot, path.resolve(filePath));
184
+ const result = execSync(`git ls-tree HEAD -- "${relativePath.replace(/"/g, '\\"')}"`, {
185
+ encoding: 'utf-8',
186
+ stdio: 'pipe',
187
+ }).trim();
188
+ return result.length > 0;
189
+ }
190
+ catch {
191
+ return false;
192
+ }
193
+ }
150
194
  /**
151
195
  * Commit planning artifacts (input.md and decisions.md) for a project.
152
196
  * Uses commit message format: RAF[NNN] Plan: project-name
@@ -1 +1 @@
1
- {"version":3,"file":"git.js","sourceRoot":"","sources":["../../src/core/git.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"git.js","sourceRoot":"","sources":["../../src/core/git.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAQ7E;;GAEG;AACH,MAAM,UAAU,SAAS;IACvB,IAAI,CAAC;QACH,QAAQ,CAAC,qCAAqC,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QACtF,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY;IAC1B,MAAM,MAAM,GAAc;QACxB,MAAM,EAAE,KAAK;QACb,UAAU,EAAE,KAAK;QACjB,MAAM,EAAE,IAAI;KACb,CAAC;IAEF,IAAI,CAAC;QACH,QAAQ,CAAC,qCAAqC,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QACtF,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC;IACvB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,CAAC;QACH,MAAM,YAAY,GAAG,QAAQ,CAAC,2BAA2B,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QACjG,MAAM,CAAC,MAAM,GAAG,YAAY,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC;IAC9C,CAAC;IAAC,MAAM,CAAC;QACP,kCAAkC;IACpC,CAAC;IAED,IAAI,CAAC;QACH,MAAM,YAAY,GAAG,QAAQ,CAAC,wBAAwB,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QAC9F,MAAM,CAAC,UAAU,GAAG,YAAY,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;IACrD,CAAC;IAAC,MAAM,CAAC;QACP,gBAAgB;IAClB,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB;IACnC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,QAAQ,CAAC,wBAAwB,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QACxF,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;IAClC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,cAAc,CAAC,MAAc;IAC3C,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;QACnB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,wFAAwF;IACxF,gDAAgD;IAChD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAEjC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;YAAE,SAAS;QAEvC,yDAAyD;QACzD,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAE7B,0DAA0D;QAC1D,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;YACvC,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAC5C,IAAI,UAAU,KAAK,CAAC,CAAC,EAAE,CAAC;gBACtB,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;YAC5C,CAAC;QACH,CAAC;QAED,gCAAgC;QAChC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;YACvC,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAC5C,IAAI,UAAU,KAAK,CAAC,CAAC,EAAE,CAAC;gBACtB,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;YAC5C,CAAC;QACH,CAAC;QAED,uDAAuD;QACvD,IAAI,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACvD,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACnC,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACvB,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe;IAC7B,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC;QACjB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,QAAQ,CAAC,wBAAwB,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QACxF,OAAO,cAAc,CAAC,MAAM,CAAC,CAAC;IAChC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC;QACjB,MAAM,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;QACvD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,CAAC,qBAAqB,EAAE,EAAE,CAAC;QAC7B,MAAM,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;QAChD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,CAAC;QACH,QAAQ,CAAC,sBAAsB,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,EAAE;YAC3D,QAAQ,EAAE,OAAO;YACjB,KAAK,EAAE,MAAM;SACd,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,4BAA4B,KAAK,EAAE,CAAC,CAAC;QAClD,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB;IAC/B,IAAI,CAAC;QACH,OAAO,QAAQ,CAAC,oBAAoB,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC;IAC7F,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,oBAAoB;IAClC,IAAI,CAAC;QACH,OAAO,QAAQ,CAAC,wBAAwB,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC;IACjG,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,QAAgB;IACpD,IAAI,CAAC;QACH,sDAAsD;QACtD,6CAA6C;QAC7C,MAAM,QAAQ,GAAG,QAAQ,CAAC,+BAA+B,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACxG,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;QACrE,MAAM,MAAM,GAAG,QAAQ,CAAC,wBAAwB,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,EAAE;YACpF,QAAQ,EAAE,OAAO;YACjB,KAAK,EAAE,MAAM;SACd,CAAC,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;IAC3B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,WAAmB;IAC/D,qCAAqC;IACrC,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC;QACjB,MAAM,CAAC,IAAI,CAAC,6DAA6D,CAAC,CAAC;QAC3E,OAAO;IACT,CAAC;IAED,4CAA4C;IAC5C,MAAM,aAAa,GAAG,oBAAoB,CAAC,WAAW,CAAC,CAAC;IACxD,MAAM,WAAW,GAAG,kBAAkB,CAAC,WAAW,CAAC,CAAC;IAEpD,IAAI,CAAC,aAAa,IAAI,CAAC,WAAW,EAAE,CAAC;QACnC,MAAM,CAAC,IAAI,CAAC,qEAAqE,CAAC,CAAC;QACnF,OAAO;IACT,CAAC;IAED,kDAAkD;IAClD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;IACrD,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;IAE7D,uBAAuB;IACvB,MAAM,aAAa,GAAG,OAAO,aAAa,WAAW,WAAW,EAAE,CAAC;IAEnE,IAAI,CAAC;QACH,4DAA4D;QAC5D,sFAAsF;QACtF,QAAQ,CAAC,eAAe,SAAS,MAAM,aAAa,GAAG,EAAE;YACvD,QAAQ,EAAE,OAAO;YACjB,KAAK,EAAE,MAAM;SACd,CAAC,CAAC;QAEH,6CAA6C;QAC7C,MAAM,YAAY,GAAG,QAAQ,CAAC,+BAA+B,EAAE;YAC7D,QAAQ,EAAE,OAAO;YACjB,KAAK,EAAE,MAAM;SACd,CAAC,CAAC,IAAI,EAAE,CAAC;QAEV,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,MAAM,CAAC,KAAK,CAAC,4CAA4C,CAAC,CAAC;YAC3D,OAAO;QACT,CAAC;QAED,0BAA0B;QAC1B,QAAQ,CAAC,kBAAkB,aAAa,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,EAAE;YAChE,QAAQ,EAAE,OAAO;YACjB,KAAK,EAAE,MAAM;SACd,CAAC,CAAC;QAEH,MAAM,CAAC,KAAK,CAAC,iCAAiC,aAAa,EAAE,CAAC,CAAC;IACjE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,+DAA+D;QAC/D,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5E,IAAI,YAAY,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC;YAC/C,MAAM,CAAC,KAAK,CAAC,oDAAoD,CAAC,CAAC;YACnE,OAAO;QACT,CAAC;QAED,gDAAgD;QAChD,MAAM,CAAC,IAAI,CAAC,wCAAwC,YAAY,EAAE,CAAC,CAAC;IACtE,CAAC;AACH,CAAC"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Renders stream-json events from Claude CLI into human-readable verbose output.
3
+ *
4
+ * Event types from `claude -p --output-format stream-json --verbose`:
5
+ * - system (init): Session initialization info
6
+ * - assistant: Claude's response with text or tool_use content blocks
7
+ * - user: Tool results (tool_result content blocks)
8
+ * - result: Final result with success/failure status
9
+ */
10
+ export interface StreamEvent {
11
+ type: string;
12
+ subtype?: string;
13
+ message?: {
14
+ content?: ContentBlock[];
15
+ };
16
+ result?: string;
17
+ tool_use_result?: {
18
+ type?: string;
19
+ file?: {
20
+ filePath?: string;
21
+ };
22
+ };
23
+ }
24
+ interface ContentBlock {
25
+ type: string;
26
+ text?: string;
27
+ name?: string;
28
+ input?: Record<string, unknown>;
29
+ }
30
+ export interface RenderResult {
31
+ /** Text to display to stdout (may be empty if no display needed) */
32
+ display: string;
33
+ /** Text content to accumulate for output parsing (completion markers, etc.) */
34
+ textContent: string;
35
+ }
36
+ /**
37
+ * Parse and render a single NDJSON line from stream-json output.
38
+ * Returns display text for stdout and text content for output accumulation.
39
+ */
40
+ export declare function renderStreamEvent(line: string): RenderResult;
41
+ export {};
42
+ //# sourceMappingURL=stream-renderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stream-renderer.d.ts","sourceRoot":"","sources":["../../src/parsers/stream-renderer.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE;QACR,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;KAC1B,CAAC;IACF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE;QAChB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE;YACL,QAAQ,CAAC,EAAE,MAAM,CAAC;SACnB,CAAC;KACH,CAAC;CACH;AAED,UAAU,YAAY;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAuCD,MAAM,WAAW,YAAY;IAC3B,oEAAoE;IACpE,OAAO,EAAE,MAAM,CAAC;IAChB,+EAA+E;IAC/E,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CA8B5D"}