@herbcaudill/ralph 1.0.1 → 1.0.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.
- package/dist/index.js +2401 -6
- package/dist/index.js.map +1 -1
- package/package.json +9 -8
- package/templates/core-prompt.md +3 -3
- package/templates/workflow.md +1 -1
- package/dist/cli.d.ts +0 -3
- package/dist/cli.d.ts.map +0 -1
- package/dist/cli.js +0 -102
- package/dist/cli.js.map +0 -1
- package/dist/components/App.d.ts +0 -17
- package/dist/components/App.d.ts.map +0 -1
- package/dist/components/App.js +0 -18
- package/dist/components/App.js.map +0 -1
- package/dist/components/EnhancedTextInput.d.ts +0 -22
- package/dist/components/EnhancedTextInput.d.ts.map +0 -1
- package/dist/components/EnhancedTextInput.js +0 -130
- package/dist/components/EnhancedTextInput.js.map +0 -1
- package/dist/components/EnhancedTextInput.test.d.ts +0 -2
- package/dist/components/EnhancedTextInput.test.d.ts.map +0 -1
- package/dist/components/EnhancedTextInput.test.js +0 -99
- package/dist/components/EnhancedTextInput.test.js.map +0 -1
- package/dist/components/EventDisplay.d.ts +0 -14
- package/dist/components/EventDisplay.d.ts.map +0 -1
- package/dist/components/EventDisplay.js +0 -91
- package/dist/components/EventDisplay.js.map +0 -1
- package/dist/components/EventDisplay.replay.test.d.ts +0 -2
- package/dist/components/EventDisplay.replay.test.d.ts.map +0 -1
- package/dist/components/EventDisplay.replay.test.js +0 -379
- package/dist/components/EventDisplay.replay.test.js.map +0 -1
- package/dist/components/EventDisplay.test.d.ts +0 -2
- package/dist/components/EventDisplay.test.d.ts.map +0 -1
- package/dist/components/EventDisplay.test.js +0 -349
- package/dist/components/EventDisplay.test.js.map +0 -1
- package/dist/components/FullScreenLayout.d.ts +0 -15
- package/dist/components/FullScreenLayout.d.ts.map +0 -1
- package/dist/components/FullScreenLayout.js +0 -20
- package/dist/components/FullScreenLayout.js.map +0 -1
- package/dist/components/Header.d.ts +0 -10
- package/dist/components/Header.d.ts.map +0 -1
- package/dist/components/Header.js +0 -22
- package/dist/components/Header.js.map +0 -1
- package/dist/components/Header.test.d.ts +0 -2
- package/dist/components/Header.test.d.ts.map +0 -1
- package/dist/components/Header.test.js +0 -27
- package/dist/components/Header.test.js.map +0 -1
- package/dist/components/InitRalph.d.ts +0 -8
- package/dist/components/InitRalph.d.ts.map +0 -1
- package/dist/components/InitRalph.js +0 -136
- package/dist/components/InitRalph.js.map +0 -1
- package/dist/components/IterationRunner.d.ts +0 -10
- package/dist/components/IterationRunner.d.ts.map +0 -1
- package/dist/components/IterationRunner.js +0 -536
- package/dist/components/IterationRunner.js.map +0 -1
- package/dist/components/IterationRunner.test.d.ts +0 -46
- package/dist/components/IterationRunner.test.d.ts.map +0 -1
- package/dist/components/IterationRunner.test.js +0 -69
- package/dist/components/IterationRunner.test.js.map +0 -1
- package/dist/components/IterationRunner.types.d.ts +0 -30
- package/dist/components/IterationRunner.types.d.ts.map +0 -1
- package/dist/components/IterationRunner.types.js +0 -2
- package/dist/components/IterationRunner.types.js.map +0 -1
- package/dist/components/JsonOutput.d.ts +0 -13
- package/dist/components/JsonOutput.d.ts.map +0 -1
- package/dist/components/JsonOutput.js +0 -269
- package/dist/components/JsonOutput.js.map +0 -1
- package/dist/components/JsonOutput.test.d.ts +0 -2
- package/dist/components/JsonOutput.test.d.ts.map +0 -1
- package/dist/components/JsonOutput.test.js +0 -39
- package/dist/components/JsonOutput.test.js.map +0 -1
- package/dist/components/ProgressBar.d.ts +0 -18
- package/dist/components/ProgressBar.d.ts.map +0 -1
- package/dist/components/ProgressBar.js +0 -30
- package/dist/components/ProgressBar.js.map +0 -1
- package/dist/components/ProgressBar.test.d.ts +0 -2
- package/dist/components/ProgressBar.test.d.ts.map +0 -1
- package/dist/components/ProgressBar.test.js +0 -55
- package/dist/components/ProgressBar.test.js.map +0 -1
- package/dist/components/ReplayLog.d.ts +0 -7
- package/dist/components/ReplayLog.d.ts.map +0 -1
- package/dist/components/ReplayLog.js +0 -57
- package/dist/components/ReplayLog.js.map +0 -1
- package/dist/components/StreamingText.d.ts +0 -11
- package/dist/components/StreamingText.d.ts.map +0 -1
- package/dist/components/StreamingText.js +0 -37
- package/dist/components/StreamingText.js.map +0 -1
- package/dist/components/StreamingText.test.d.ts +0 -2
- package/dist/components/StreamingText.test.d.ts.map +0 -1
- package/dist/components/StreamingText.test.js +0 -125
- package/dist/components/StreamingText.test.js.map +0 -1
- package/dist/components/ToolUse.d.ts +0 -16
- package/dist/components/ToolUse.d.ts.map +0 -1
- package/dist/components/ToolUse.js +0 -11
- package/dist/components/ToolUse.js.map +0 -1
- package/dist/components/ToolUse.test.d.ts +0 -2
- package/dist/components/ToolUse.test.d.ts.map +0 -1
- package/dist/components/ToolUse.test.js +0 -43
- package/dist/components/ToolUse.test.js.map +0 -1
- package/dist/components/blocksToLines.d.ts +0 -6
- package/dist/components/blocksToLines.d.ts.map +0 -1
- package/dist/components/blocksToLines.js +0 -15
- package/dist/components/blocksToLines.js.map +0 -1
- package/dist/components/eventToBlocks.d.ts +0 -22
- package/dist/components/eventToBlocks.d.ts.map +0 -1
- package/dist/components/eventToBlocks.js +0 -166
- package/dist/components/eventToBlocks.js.map +0 -1
- package/dist/components/eventToBlocks.test.d.ts +0 -2
- package/dist/components/eventToBlocks.test.d.ts.map +0 -1
- package/dist/components/eventToBlocks.test.js +0 -466
- package/dist/components/eventToBlocks.test.js.map +0 -1
- package/dist/components/findNextWordBoundary.d.ts +0 -10
- package/dist/components/findNextWordBoundary.d.ts.map +0 -1
- package/dist/components/findNextWordBoundary.js +0 -23
- package/dist/components/findNextWordBoundary.js.map +0 -1
- package/dist/components/findPreviousWordBoundary.d.ts +0 -10
- package/dist/components/findPreviousWordBoundary.d.ts.map +0 -1
- package/dist/components/findPreviousWordBoundary.js +0 -23
- package/dist/components/findPreviousWordBoundary.js.map +0 -1
- package/dist/components/processEvents.d.ts +0 -11
- package/dist/components/processEvents.d.ts.map +0 -1
- package/dist/components/processEvents.js +0 -87
- package/dist/components/processEvents.js.map +0 -1
- package/dist/components/renderStaticItem.d.ts +0 -7
- package/dist/components/renderStaticItem.d.ts.map +0 -1
- package/dist/components/renderStaticItem.js +0 -23
- package/dist/components/renderStaticItem.js.map +0 -1
- package/dist/components/replay.d.ts +0 -5
- package/dist/components/replay.d.ts.map +0 -1
- package/dist/components/replay.js +0 -49
- package/dist/components/replay.js.map +0 -1
- package/dist/components/test-helpers/ControlledInput.d.ts +0 -14
- package/dist/components/test-helpers/ControlledInput.d.ts.map +0 -1
- package/dist/components/test-helpers/ControlledInput.js +0 -15
- package/dist/components/test-helpers/ControlledInput.js.map +0 -1
- package/dist/components/useContentHeight.d.ts +0 -9
- package/dist/components/useContentHeight.d.ts.map +0 -1
- package/dist/components/useContentHeight.js +0 -16
- package/dist/components/useContentHeight.js.map +0 -1
- package/dist/index.d.ts +0 -3
- package/dist/index.d.ts.map +0 -1
- package/dist/lib/MessageQueue.d.ts +0 -33
- package/dist/lib/MessageQueue.d.ts.map +0 -1
- package/dist/lib/MessageQueue.js +0 -96
- package/dist/lib/MessageQueue.js.map +0 -1
- package/dist/lib/MessageQueue.test.d.ts +0 -2
- package/dist/lib/MessageQueue.test.d.ts.map +0 -1
- package/dist/lib/MessageQueue.test.js +0 -224
- package/dist/lib/MessageQueue.test.js.map +0 -1
- package/dist/lib/StdinCommandHandler.d.ts +0 -48
- package/dist/lib/StdinCommandHandler.d.ts.map +0 -1
- package/dist/lib/StdinCommandHandler.js +0 -95
- package/dist/lib/StdinCommandHandler.js.map +0 -1
- package/dist/lib/StdinCommandHandler.test.d.ts +0 -2
- package/dist/lib/StdinCommandHandler.test.d.ts.map +0 -1
- package/dist/lib/StdinCommandHandler.test.js +0 -93
- package/dist/lib/StdinCommandHandler.test.js.map +0 -1
- package/dist/lib/WorktreeManager.d.ts +0 -114
- package/dist/lib/WorktreeManager.d.ts.map +0 -1
- package/dist/lib/WorktreeManager.js +0 -350
- package/dist/lib/WorktreeManager.js.map +0 -1
- package/dist/lib/WorktreeManager.test.d.ts +0 -2
- package/dist/lib/WorktreeManager.test.d.ts.map +0 -1
- package/dist/lib/WorktreeManager.test.js +0 -261
- package/dist/lib/WorktreeManager.test.js.map +0 -1
- package/dist/lib/addTodo.d.ts +0 -11
- package/dist/lib/addTodo.d.ts.map +0 -1
- package/dist/lib/addTodo.js +0 -51
- package/dist/lib/addTodo.js.map +0 -1
- package/dist/lib/beadsClient.d.ts +0 -46
- package/dist/lib/beadsClient.d.ts.map +0 -1
- package/dist/lib/beadsClient.js +0 -172
- package/dist/lib/beadsClient.js.map +0 -1
- package/dist/lib/captureBeadsSnapshot.d.ts +0 -4
- package/dist/lib/captureBeadsSnapshot.d.ts.map +0 -1
- package/dist/lib/captureBeadsSnapshot.js +0 -24
- package/dist/lib/captureBeadsSnapshot.js.map +0 -1
- package/dist/lib/captureStartupSnapshot.d.ts +0 -10
- package/dist/lib/captureStartupSnapshot.d.ts.map +0 -1
- package/dist/lib/captureStartupSnapshot.js +0 -29
- package/dist/lib/captureStartupSnapshot.js.map +0 -1
- package/dist/lib/captureTodoSnapshot.d.ts +0 -4
- package/dist/lib/captureTodoSnapshot.d.ts.map +0 -1
- package/dist/lib/captureTodoSnapshot.js +0 -24
- package/dist/lib/captureTodoSnapshot.js.map +0 -1
- package/dist/lib/copyTemplates.d.ts +0 -22
- package/dist/lib/copyTemplates.d.ts.map +0 -1
- package/dist/lib/copyTemplates.js +0 -32
- package/dist/lib/copyTemplates.js.map +0 -1
- package/dist/lib/createStdinCommandHandler.d.ts +0 -28
- package/dist/lib/createStdinCommandHandler.d.ts.map +0 -1
- package/dist/lib/createStdinCommandHandler.js +0 -67
- package/dist/lib/createStdinCommandHandler.js.map +0 -1
- package/dist/lib/createUserMessage.d.ts +0 -6
- package/dist/lib/createUserMessage.d.ts.map +0 -1
- package/dist/lib/createUserMessage.js +0 -13
- package/dist/lib/createUserMessage.js.map +0 -1
- package/dist/lib/debug.d.ts +0 -19
- package/dist/lib/debug.d.ts.map +0 -1
- package/dist/lib/debug.js +0 -54
- package/dist/lib/debug.js.map +0 -1
- package/dist/lib/findMaxLogNumber.d.ts +0 -6
- package/dist/lib/findMaxLogNumber.d.ts.map +0 -1
- package/dist/lib/findMaxLogNumber.js +0 -26
- package/dist/lib/findMaxLogNumber.js.map +0 -1
- package/dist/lib/findMaxLogNumber.test.d.ts +0 -2
- package/dist/lib/findMaxLogNumber.test.d.ts.map +0 -1
- package/dist/lib/findMaxLogNumber.test.js +0 -39
- package/dist/lib/findMaxLogNumber.test.js.map +0 -1
- package/dist/lib/formatContentBlock.d.ts +0 -6
- package/dist/lib/formatContentBlock.d.ts.map +0 -1
- package/dist/lib/formatContentBlock.js +0 -18
- package/dist/lib/formatContentBlock.js.map +0 -1
- package/dist/lib/formatIterationHeader.d.ts +0 -5
- package/dist/lib/formatIterationHeader.d.ts.map +0 -1
- package/dist/lib/formatIterationHeader.js +0 -8
- package/dist/lib/formatIterationHeader.js.map +0 -1
- package/dist/lib/formatText.d.ts +0 -5
- package/dist/lib/formatText.d.ts.map +0 -1
- package/dist/lib/formatText.js +0 -33
- package/dist/lib/formatText.js.map +0 -1
- package/dist/lib/formatToolUse.d.ts +0 -7
- package/dist/lib/formatToolUse.d.ts.map +0 -1
- package/dist/lib/formatToolUse.js +0 -14
- package/dist/lib/formatToolUse.js.map +0 -1
- package/dist/lib/formatUserMessage.d.ts +0 -5
- package/dist/lib/formatUserMessage.d.ts.map +0 -1
- package/dist/lib/formatUserMessage.js +0 -8
- package/dist/lib/formatUserMessage.js.map +0 -1
- package/dist/lib/getBaseCwd.d.ts +0 -6
- package/dist/lib/getBaseCwd.d.ts.map +0 -1
- package/dist/lib/getBaseCwd.js +0 -6
- package/dist/lib/getBaseCwd.js.map +0 -1
- package/dist/lib/getBeadsProgress.d.ts +0 -8
- package/dist/lib/getBeadsProgress.d.ts.map +0 -1
- package/dist/lib/getBeadsProgress.js +0 -35
- package/dist/lib/getBeadsProgress.js.map +0 -1
- package/dist/lib/getClaudeVersion.d.ts +0 -6
- package/dist/lib/getClaudeVersion.d.ts.map +0 -1
- package/dist/lib/getClaudeVersion.js +0 -21
- package/dist/lib/getClaudeVersion.js.map +0 -1
- package/dist/lib/getClaudeVersion.test.d.ts +0 -2
- package/dist/lib/getClaudeVersion.test.d.ts.map +0 -1
- package/dist/lib/getClaudeVersion.test.js +0 -39
- package/dist/lib/getClaudeVersion.test.js.map +0 -1
- package/dist/lib/getDefaultIterations.d.ts +0 -6
- package/dist/lib/getDefaultIterations.d.ts.map +0 -1
- package/dist/lib/getDefaultIterations.js +0 -14
- package/dist/lib/getDefaultIterations.js.map +0 -1
- package/dist/lib/getDefaultIterations.test.d.ts +0 -2
- package/dist/lib/getDefaultIterations.test.d.ts.map +0 -1
- package/dist/lib/getDefaultIterations.test.js +0 -39
- package/dist/lib/getDefaultIterations.test.js.map +0 -1
- package/dist/lib/getLatestLogFile.d.ts +0 -6
- package/dist/lib/getLatestLogFile.d.ts.map +0 -1
- package/dist/lib/getLatestLogFile.js +0 -15
- package/dist/lib/getLatestLogFile.js.map +0 -1
- package/dist/lib/getNextLogFile.d.ts +0 -7
- package/dist/lib/getNextLogFile.d.ts.map +0 -1
- package/dist/lib/getNextLogFile.js +0 -18
- package/dist/lib/getNextLogFile.js.map +0 -1
- package/dist/lib/getNextLogFile.test.d.ts +0 -2
- package/dist/lib/getNextLogFile.test.d.ts.map +0 -1
- package/dist/lib/getNextLogFile.test.js +0 -66
- package/dist/lib/getNextLogFile.test.js.map +0 -1
- package/dist/lib/getOpenIssueCount.d.ts +0 -6
- package/dist/lib/getOpenIssueCount.d.ts.map +0 -1
- package/dist/lib/getOpenIssueCount.js +0 -19
- package/dist/lib/getOpenIssueCount.js.map +0 -1
- package/dist/lib/getOpenIssueCount.test.d.ts +0 -2
- package/dist/lib/getOpenIssueCount.test.d.ts.map +0 -1
- package/dist/lib/getOpenIssueCount.test.js +0 -31
- package/dist/lib/getOpenIssueCount.test.js.map +0 -1
- package/dist/lib/getProgress.d.ts +0 -14
- package/dist/lib/getProgress.d.ts.map +0 -1
- package/dist/lib/getProgress.js +0 -30
- package/dist/lib/getProgress.js.map +0 -1
- package/dist/lib/getProgress.test.d.ts +0 -2
- package/dist/lib/getProgress.test.d.ts.map +0 -1
- package/dist/lib/getProgress.test.js +0 -218
- package/dist/lib/getProgress.test.js.map +0 -1
- package/dist/lib/getPromptContent.d.ts +0 -8
- package/dist/lib/getPromptContent.d.ts.map +0 -1
- package/dist/lib/getPromptContent.js +0 -31
- package/dist/lib/getPromptContent.js.map +0 -1
- package/dist/lib/getTerminalSize.d.ts +0 -8
- package/dist/lib/getTerminalSize.d.ts.map +0 -1
- package/dist/lib/getTerminalSize.js +0 -10
- package/dist/lib/getTerminalSize.js.map +0 -1
- package/dist/lib/getTodoProgress.d.ts +0 -4
- package/dist/lib/getTodoProgress.d.ts.map +0 -1
- package/dist/lib/getTodoProgress.js +0 -22
- package/dist/lib/getTodoProgress.js.map +0 -1
- package/dist/lib/insertTodo.d.ts +0 -7
- package/dist/lib/insertTodo.d.ts.map +0 -1
- package/dist/lib/insertTodo.js +0 -22
- package/dist/lib/insertTodo.js.map +0 -1
- package/dist/lib/outputEvent.d.ts +0 -5
- package/dist/lib/outputEvent.d.ts.map +0 -1
- package/dist/lib/outputEvent.js +0 -7
- package/dist/lib/outputEvent.js.map +0 -1
- package/dist/lib/parseStdinCommand.d.ts +0 -25
- package/dist/lib/parseStdinCommand.d.ts.map +0 -1
- package/dist/lib/parseStdinCommand.js +0 -43
- package/dist/lib/parseStdinCommand.js.map +0 -1
- package/dist/lib/parseStdinCommand.test.d.ts +0 -2
- package/dist/lib/parseStdinCommand.test.d.ts.map +0 -1
- package/dist/lib/parseStdinCommand.test.js +0 -93
- package/dist/lib/parseStdinCommand.test.js.map +0 -1
- package/dist/lib/parseTaskLifecycle.d.ts +0 -18
- package/dist/lib/parseTaskLifecycle.d.ts.map +0 -1
- package/dist/lib/parseTaskLifecycle.js +0 -30
- package/dist/lib/parseTaskLifecycle.js.map +0 -1
- package/dist/lib/parseTaskLifecycle.test.d.ts +0 -2
- package/dist/lib/parseTaskLifecycle.test.d.ts.map +0 -1
- package/dist/lib/parseTaskLifecycle.test.js +0 -122
- package/dist/lib/parseTaskLifecycle.test.js.map +0 -1
- package/dist/lib/parseWorktreeFromBranch.d.ts +0 -13
- package/dist/lib/parseWorktreeFromBranch.d.ts.map +0 -1
- package/dist/lib/parseWorktreeFromBranch.js +0 -19
- package/dist/lib/parseWorktreeFromBranch.js.map +0 -1
- package/dist/lib/processEvents.d.ts +0 -12
- package/dist/lib/processEvents.d.ts.map +0 -1
- package/dist/lib/processEvents.js +0 -113
- package/dist/lib/processEvents.js.map +0 -1
- package/dist/lib/rel.d.ts +0 -8
- package/dist/lib/rel.d.ts.map +0 -1
- package/dist/lib/rel.js +0 -19
- package/dist/lib/rel.js.map +0 -1
- package/dist/lib/rel.test.d.ts +0 -2
- package/dist/lib/rel.test.d.ts.map +0 -1
- package/dist/lib/rel.test.js +0 -51
- package/dist/lib/rel.test.js.map +0 -1
- package/dist/lib/sdkMessageToEvent.d.ts +0 -6
- package/dist/lib/sdkMessageToEvent.d.ts.map +0 -1
- package/dist/lib/sdkMessageToEvent.js +0 -12
- package/dist/lib/sdkMessageToEvent.js.map +0 -1
- package/dist/lib/shortenTempPaths.d.ts +0 -8
- package/dist/lib/shortenTempPaths.d.ts.map +0 -1
- package/dist/lib/shortenTempPaths.js +0 -12
- package/dist/lib/shortenTempPaths.js.map +0 -1
- package/dist/lib/shortenTempPaths.test.d.ts +0 -2
- package/dist/lib/shortenTempPaths.test.d.ts.map +0 -1
- package/dist/lib/shortenTempPaths.test.js +0 -46
- package/dist/lib/shortenTempPaths.test.js.map +0 -1
- package/dist/lib/types.d.ts +0 -19
- package/dist/lib/types.d.ts.map +0 -1
- package/dist/lib/types.js +0 -2
- package/dist/lib/types.js.map +0 -1
- package/dist/lib/useTerminalSize.d.ts +0 -6
- package/dist/lib/useTerminalSize.d.ts.map +0 -1
- package/dist/lib/useTerminalSize.js +0 -19
- package/dist/lib/useTerminalSize.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"InitRalph.js","sourceRoot":"","sources":["../../src/components/InitRalph.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
import { type IterationRunnerProps } from "./IterationRunner.types.js";
|
|
3
|
-
/**
|
|
4
|
-
* Orchestrates the iterative execution of Claude AI iterations.
|
|
5
|
-
*
|
|
6
|
-
* Spawns Claude CLI with prompts, captures streaming output, displays formatted UI,
|
|
7
|
-
* and handles user input during iteration execution.
|
|
8
|
-
*/
|
|
9
|
-
export declare const IterationRunner: ({ totalIterations, claudeVersion, ralphVersion, watch, agent, }: IterationRunnerProps) => React.JSX.Element;
|
|
10
|
-
//# sourceMappingURL=IterationRunner.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"IterationRunner.d.ts","sourceRoot":"","sources":["../../src/components/IterationRunner.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsC,MAAM,OAAO,CAAA;AAuB1D,OAAO,EAAmB,KAAK,oBAAoB,EAAE,MAAM,4BAA4B,CAAA;AAcvF;;;;;GAKG;AACH,eAAO,MAAM,eAAe,GAAI,iEAM7B,oBAAoB,sBA0lBtB,CAAA"}
|
|
@@ -1,536 +0,0 @@
|
|
|
1
|
-
import React, { useState, useEffect, useRef } from "react";
|
|
2
|
-
import { Box, Text, useApp, Static, useInput } from "ink";
|
|
3
|
-
import Spinner from "ink-spinner";
|
|
4
|
-
import { EnhancedTextInput } from "./EnhancedTextInput.js";
|
|
5
|
-
import { appendFileSync, writeFileSync, readFileSync, existsSync } from "fs";
|
|
6
|
-
import { join, basename } from "path";
|
|
7
|
-
import { query } from "@anthropic-ai/claude-agent-sdk";
|
|
8
|
-
import { addTodo } from "../lib/addTodo.js";
|
|
9
|
-
import { getProgress } from "../lib/getProgress.js";
|
|
10
|
-
import { captureStartupSnapshot } from "../lib/captureStartupSnapshot.js";
|
|
11
|
-
import { ProgressBar } from "./ProgressBar.js";
|
|
12
|
-
import { watchForNewIssues } from "../lib/beadsClient.js";
|
|
13
|
-
import { MessageQueue, createUserMessage } from "../lib/MessageQueue.js";
|
|
14
|
-
import { createDebugLogger } from "../lib/debug.js";
|
|
15
|
-
import { useTerminalSize } from "../lib/useTerminalSize.js";
|
|
16
|
-
import { getNextLogFile } from "../lib/getNextLogFile.js";
|
|
17
|
-
import { parseTaskLifecycleEvent } from "../lib/parseTaskLifecycle.js";
|
|
18
|
-
import { getPromptContent } from "../lib/getPromptContent.js";
|
|
19
|
-
import { sdkMessageToEvent } from "../lib/sdkMessageToEvent.js";
|
|
20
|
-
import { processEvents } from "../lib/processEvents.js";
|
|
21
|
-
import { renderStaticItem } from "./renderStaticItem.js";
|
|
22
|
-
/** Debug logger for iteration lifecycle events */
|
|
23
|
-
const log = createDebugLogger("iteration");
|
|
24
|
-
/** The .ralph directory path in the current working directory */
|
|
25
|
-
const ralphDir = join(process.cwd(), ".ralph");
|
|
26
|
-
/** Path to the todo.md file in the .ralph directory */
|
|
27
|
-
const todoFile = join(ralphDir, "todo.md");
|
|
28
|
-
/** The name of the current repository (basename of cwd) */
|
|
29
|
-
const repoName = basename(process.cwd());
|
|
30
|
-
/**
|
|
31
|
-
* Orchestrates the iterative execution of Claude AI iterations.
|
|
32
|
-
*
|
|
33
|
-
* Spawns Claude CLI with prompts, captures streaming output, displays formatted UI,
|
|
34
|
-
* and handles user input during iteration execution.
|
|
35
|
-
*/
|
|
36
|
-
export const IterationRunner = ({ totalIterations, claudeVersion, ralphVersion, watch, agent, }) => {
|
|
37
|
-
const { exit } = useApp();
|
|
38
|
-
const { columns } = useTerminalSize();
|
|
39
|
-
const [currentIteration, setCurrentIteration] = useState(1);
|
|
40
|
-
const [events, setEvents] = useState([]);
|
|
41
|
-
const eventsRef = useRef([]);
|
|
42
|
-
const [error, setError] = useState();
|
|
43
|
-
const [isRunning, setIsRunning] = useState(false);
|
|
44
|
-
const [isAddingTodo, setIsAddingTodo] = useState(false);
|
|
45
|
-
const [todoText, setTodoText] = useState("");
|
|
46
|
-
const [todoMessage, setTodoMessage] = useState(null);
|
|
47
|
-
const [userMessageText, setUserMessageText] = useState("");
|
|
48
|
-
const [userMessageStatus, setUserMessageStatus] = useState(null);
|
|
49
|
-
const [hasTodoFile, setHasTodoFile] = useState(false);
|
|
50
|
-
const [startupSnapshot] = useState(() => captureStartupSnapshot());
|
|
51
|
-
const [progressData, setProgressData] = useState(() => {
|
|
52
|
-
const snapshot = captureStartupSnapshot();
|
|
53
|
-
if (!snapshot)
|
|
54
|
-
return { type: "none", completed: 0, total: 0 };
|
|
55
|
-
return { type: snapshot.type, completed: 0, total: snapshot.initialCount };
|
|
56
|
-
});
|
|
57
|
-
const [isWatching, setIsWatching] = useState(false);
|
|
58
|
-
const [detectedIssue, setDetectedIssue] = useState(null);
|
|
59
|
-
const watchCleanupRef = useRef(null);
|
|
60
|
-
const [watchCycle, setWatchCycle] = useState(0); // Increments to force useEffect re-run
|
|
61
|
-
const [stopAfterCurrent, setStopAfterCurrent] = useState(false); // Stop gracefully after current iteration
|
|
62
|
-
const stopAfterCurrentRef = useRef(false); // Ref to access in async callbacks
|
|
63
|
-
const [isPaused, setIsPaused] = useState(false); // Pause after current iteration completes
|
|
64
|
-
const isPausedRef = useRef(false); // Ref to access in async callbacks
|
|
65
|
-
const [currentTaskId, setCurrentTaskId] = useState(null);
|
|
66
|
-
const [currentTaskTitle, setCurrentTaskTitle] = useState(null);
|
|
67
|
-
// Track static items that have been rendered (for Ink's Static component)
|
|
68
|
-
const [staticItems, setStaticItems] = useState([
|
|
69
|
-
{ type: "header", claudeVersion, ralphVersion, key: "header" },
|
|
70
|
-
]);
|
|
71
|
-
const renderedBlocksRef = useRef(new Set());
|
|
72
|
-
const lastIterationRef = useRef(0);
|
|
73
|
-
// Message queue for sending user messages to Claude while running
|
|
74
|
-
const messageQueueRef = useRef(null);
|
|
75
|
-
// Log file path for this run (set once at startup, persisted across iterations)
|
|
76
|
-
const logFileRef = useRef(null);
|
|
77
|
-
/** Whether stdin supports raw mode (required for keyboard input handling) */
|
|
78
|
-
const stdinSupportsRawMode = process.stdin.isTTY === true;
|
|
79
|
-
/**
|
|
80
|
-
* Handle adding a new todo when Ctrl-T is pressed.
|
|
81
|
-
*/
|
|
82
|
-
const handleTodoSubmit = (
|
|
83
|
-
/** The todo text to add */
|
|
84
|
-
text) => {
|
|
85
|
-
const trimmed = text.trim();
|
|
86
|
-
if (!trimmed) {
|
|
87
|
-
setIsAddingTodo(false);
|
|
88
|
-
setTodoText("");
|
|
89
|
-
return;
|
|
90
|
-
}
|
|
91
|
-
try {
|
|
92
|
-
addTodo(trimmed);
|
|
93
|
-
setTodoMessage({ type: "success", text: "✅ added" });
|
|
94
|
-
setTodoText("");
|
|
95
|
-
setIsAddingTodo(false);
|
|
96
|
-
// Clear success message after 2 seconds
|
|
97
|
-
setTimeout(() => setTodoMessage(null), 2000);
|
|
98
|
-
}
|
|
99
|
-
catch (err) {
|
|
100
|
-
setTodoMessage({
|
|
101
|
-
type: "error",
|
|
102
|
-
text: `Failed to add todo: ${err instanceof Error ? err.message : String(err)}`,
|
|
103
|
-
});
|
|
104
|
-
setTodoText("");
|
|
105
|
-
setIsAddingTodo(false);
|
|
106
|
-
// Clear error message after 5 seconds
|
|
107
|
-
setTimeout(() => setTodoMessage(null), 5000);
|
|
108
|
-
}
|
|
109
|
-
};
|
|
110
|
-
/**
|
|
111
|
-
* Handle submitting a user message to Claude during iteration.
|
|
112
|
-
*/
|
|
113
|
-
const handleUserMessageSubmit = (
|
|
114
|
-
/** The message text from the user */
|
|
115
|
-
text) => {
|
|
116
|
-
const trimmed = text.trim();
|
|
117
|
-
if (!trimmed) {
|
|
118
|
-
setUserMessageText("");
|
|
119
|
-
return;
|
|
120
|
-
}
|
|
121
|
-
// Send the message to Claude via the SDK's streamInput
|
|
122
|
-
if (messageQueueRef.current && isRunning) {
|
|
123
|
-
const userMessage = createUserMessage(trimmed);
|
|
124
|
-
messageQueueRef.current.push(userMessage);
|
|
125
|
-
// Also add the user message to events for display
|
|
126
|
-
const displayEvent = {
|
|
127
|
-
type: "user",
|
|
128
|
-
message: {
|
|
129
|
-
id: `user-injected-${Date.now()}`,
|
|
130
|
-
role: "user",
|
|
131
|
-
content: [{ type: "text", text: trimmed }],
|
|
132
|
-
},
|
|
133
|
-
};
|
|
134
|
-
setEvents(prev => [...prev, displayEvent]);
|
|
135
|
-
// No confirmation message - the user message appears directly in the stream
|
|
136
|
-
}
|
|
137
|
-
else {
|
|
138
|
-
setUserMessageStatus({
|
|
139
|
-
type: "error",
|
|
140
|
-
text: "Unable to send message - Claude is not running",
|
|
141
|
-
});
|
|
142
|
-
}
|
|
143
|
-
setUserMessageText("");
|
|
144
|
-
// Clear status message after 3 seconds
|
|
145
|
-
setTimeout(() => setUserMessageStatus(null), 3000);
|
|
146
|
-
};
|
|
147
|
-
/**
|
|
148
|
-
* Handle keyboard input for Ctrl-T (todo), Ctrl-S (stop), Ctrl-P (pause), and Escape (cancel).
|
|
149
|
-
*/
|
|
150
|
-
useInput((
|
|
151
|
-
/** The input character */
|
|
152
|
-
input,
|
|
153
|
-
/** The key information including modifiers */
|
|
154
|
-
key) => {
|
|
155
|
-
// Ctrl-T to start adding a todo (only if todo.md exists)
|
|
156
|
-
if (key.ctrl && input === "t" && hasTodoFile) {
|
|
157
|
-
setIsAddingTodo(true);
|
|
158
|
-
setTodoText("");
|
|
159
|
-
setTodoMessage(null);
|
|
160
|
-
}
|
|
161
|
-
// Ctrl-S to request stop after current iteration
|
|
162
|
-
if (key.ctrl && input === "s" && isRunning && !stopAfterCurrent) {
|
|
163
|
-
setStopAfterCurrent(true);
|
|
164
|
-
}
|
|
165
|
-
// Ctrl-P to toggle pause state
|
|
166
|
-
if (key.ctrl && input === "p") {
|
|
167
|
-
if (isPaused) {
|
|
168
|
-
// Resume - if we were paused between iterations, trigger next iteration
|
|
169
|
-
setIsPaused(false);
|
|
170
|
-
if (!isRunning) {
|
|
171
|
-
setTimeout(() => setCurrentIteration(i => i + 1), 100);
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
else if (isRunning) {
|
|
175
|
-
// Request pause after current iteration
|
|
176
|
-
setIsPaused(true);
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
// Escape to cancel todo input
|
|
180
|
-
if (key.escape) {
|
|
181
|
-
if (isAddingTodo) {
|
|
182
|
-
// Cancel todo input
|
|
183
|
-
setIsAddingTodo(false);
|
|
184
|
-
setTodoText("");
|
|
185
|
-
}
|
|
186
|
-
}
|
|
187
|
-
}, { isActive: stdinSupportsRawMode });
|
|
188
|
-
// Keep ref in sync with events state for access in callbacks
|
|
189
|
-
useEffect(() => {
|
|
190
|
-
eventsRef.current = events;
|
|
191
|
-
}, [events]);
|
|
192
|
-
// Keep stopAfterCurrent ref in sync with state for access in async callbacks
|
|
193
|
-
useEffect(() => {
|
|
194
|
-
stopAfterCurrentRef.current = stopAfterCurrent;
|
|
195
|
-
}, [stopAfterCurrent]);
|
|
196
|
-
// Keep isPaused ref in sync with state for access in async callbacks
|
|
197
|
-
useEffect(() => {
|
|
198
|
-
isPausedRef.current = isPaused;
|
|
199
|
-
}, [isPaused]);
|
|
200
|
-
// Update progress data when iteration changes or running stops
|
|
201
|
-
useEffect(() => {
|
|
202
|
-
if (!isRunning && startupSnapshot) {
|
|
203
|
-
setProgressData(getProgress(startupSnapshot.initialCount, startupSnapshot.timestamp));
|
|
204
|
-
}
|
|
205
|
-
}, [currentIteration, isRunning, startupSnapshot]);
|
|
206
|
-
// Poll progress data periodically while running to catch newly created/closed issues
|
|
207
|
-
useEffect(() => {
|
|
208
|
-
if (!isRunning || !startupSnapshot)
|
|
209
|
-
return;
|
|
210
|
-
const pollInterval = setInterval(() => {
|
|
211
|
-
setProgressData(getProgress(startupSnapshot.initialCount, startupSnapshot.timestamp));
|
|
212
|
-
}, 5000); // Poll every 5 seconds
|
|
213
|
-
return () => clearInterval(pollInterval);
|
|
214
|
-
}, [isRunning, startupSnapshot]);
|
|
215
|
-
// Watch for new issues when in watch mode
|
|
216
|
-
useEffect(() => {
|
|
217
|
-
if (!isWatching)
|
|
218
|
-
return;
|
|
219
|
-
// Start watching for new issues
|
|
220
|
-
const cleanup = watchForNewIssues(issue => {
|
|
221
|
-
setDetectedIssue(issue);
|
|
222
|
-
// Refresh progress data to pick up the new issue
|
|
223
|
-
// The timestamp-based counting will automatically include it
|
|
224
|
-
if (startupSnapshot) {
|
|
225
|
-
setProgressData(getProgress(startupSnapshot.initialCount, startupSnapshot.timestamp));
|
|
226
|
-
}
|
|
227
|
-
// Brief pause to show the detected issue, then resume
|
|
228
|
-
setTimeout(() => {
|
|
229
|
-
setIsWatching(false);
|
|
230
|
-
setDetectedIssue(null);
|
|
231
|
-
// Reset rendered blocks for new cycle
|
|
232
|
-
renderedBlocksRef.current.clear();
|
|
233
|
-
// Increment round number when picking up new issue
|
|
234
|
-
setCurrentIteration(i => i + 1);
|
|
235
|
-
setWatchCycle(c => c + 1);
|
|
236
|
-
}, 1500);
|
|
237
|
-
});
|
|
238
|
-
watchCleanupRef.current = cleanup;
|
|
239
|
-
return () => {
|
|
240
|
-
cleanup();
|
|
241
|
-
watchCleanupRef.current = null;
|
|
242
|
-
};
|
|
243
|
-
}, [isWatching, startupSnapshot]);
|
|
244
|
-
// Convert events to static items as they arrive
|
|
245
|
-
useEffect(() => {
|
|
246
|
-
const newItems = [];
|
|
247
|
-
// Add iteration header if this is a new iteration
|
|
248
|
-
if (currentIteration > lastIterationRef.current) {
|
|
249
|
-
newItems.push({
|
|
250
|
-
type: "iteration",
|
|
251
|
-
iteration: currentIteration,
|
|
252
|
-
key: `iteration-${currentIteration}`,
|
|
253
|
-
});
|
|
254
|
-
lastIterationRef.current = currentIteration;
|
|
255
|
-
}
|
|
256
|
-
// Process current events into blocks
|
|
257
|
-
const blocks = processEvents(events);
|
|
258
|
-
// Add any new blocks that haven't been rendered yet
|
|
259
|
-
for (const block of blocks) {
|
|
260
|
-
// Use the block's ID which is generated from message ID + block index
|
|
261
|
-
// This ensures the same logical block always has the same key
|
|
262
|
-
const blockKey = block.id;
|
|
263
|
-
if (!renderedBlocksRef.current.has(blockKey)) {
|
|
264
|
-
renderedBlocksRef.current.add(blockKey);
|
|
265
|
-
newItems.push({ type: "block", block, key: blockKey });
|
|
266
|
-
}
|
|
267
|
-
}
|
|
268
|
-
if (newItems.length > 0) {
|
|
269
|
-
setStaticItems(prev => [...prev, ...newItems]);
|
|
270
|
-
}
|
|
271
|
-
}, [events, currentIteration]);
|
|
272
|
-
useEffect(() => {
|
|
273
|
-
if (currentIteration > totalIterations) {
|
|
274
|
-
exit();
|
|
275
|
-
return;
|
|
276
|
-
}
|
|
277
|
-
// Check if there are any tasks available before starting a round
|
|
278
|
-
// This avoids running Claude unnecessarily when there's no work to do
|
|
279
|
-
const currentProgress = startupSnapshot ?
|
|
280
|
-
getProgress(startupSnapshot.initialCount, startupSnapshot.timestamp)
|
|
281
|
-
: { type: "none", completed: 0, total: 0 };
|
|
282
|
-
// All tasks are complete when completed equals total
|
|
283
|
-
if (currentProgress.completed >= currentProgress.total && currentProgress.type !== "none") {
|
|
284
|
-
// No tasks available - go straight to watching if enabled
|
|
285
|
-
if (watch) {
|
|
286
|
-
setIsWatching(true);
|
|
287
|
-
}
|
|
288
|
-
else {
|
|
289
|
-
exit();
|
|
290
|
-
process.exit(0);
|
|
291
|
-
}
|
|
292
|
-
return;
|
|
293
|
-
}
|
|
294
|
-
// Get or create the log file path for this run
|
|
295
|
-
// Only create a new sequential log file on the first iteration
|
|
296
|
-
if (!logFileRef.current) {
|
|
297
|
-
logFileRef.current = getNextLogFile();
|
|
298
|
-
writeFileSync(logFileRef.current, "");
|
|
299
|
-
}
|
|
300
|
-
const logFile = logFileRef.current;
|
|
301
|
-
setEvents([]);
|
|
302
|
-
// Read prompt (from .ralph/prompt.md or falling back to templates)
|
|
303
|
-
const promptContent = getPromptContent();
|
|
304
|
-
const todoExists = existsSync(todoFile);
|
|
305
|
-
setHasTodoFile(todoExists);
|
|
306
|
-
const todoContent = todoExists ? readFileSync(todoFile, "utf-8") : "";
|
|
307
|
-
const roundHeader = `# Ralph, round ${currentIteration}\n\n`;
|
|
308
|
-
const fullPrompt = todoContent ?
|
|
309
|
-
`${roundHeader}${promptContent}\n\n## Current Todo List\n\n${todoContent}`
|
|
310
|
-
: `${roundHeader}${promptContent}`;
|
|
311
|
-
const abortController = new AbortController();
|
|
312
|
-
setIsRunning(true);
|
|
313
|
-
// Create a message queue for this iteration
|
|
314
|
-
// This allows us to send user messages to Claude while it's running
|
|
315
|
-
const messageQueue = new MessageQueue();
|
|
316
|
-
messageQueueRef.current = messageQueue;
|
|
317
|
-
// Push the initial prompt as the first message
|
|
318
|
-
messageQueue.push(createUserMessage(fullPrompt));
|
|
319
|
-
/**
|
|
320
|
-
* Execute a query to Claude and handle the streaming response.
|
|
321
|
-
*/
|
|
322
|
-
const runQuery = async () => {
|
|
323
|
-
let finalResult = "";
|
|
324
|
-
log(`Starting iteration ${currentIteration}`);
|
|
325
|
-
try {
|
|
326
|
-
log(`Beginning query() loop`);
|
|
327
|
-
for await (const message of query({
|
|
328
|
-
prompt: messageQueue,
|
|
329
|
-
options: {
|
|
330
|
-
abortController,
|
|
331
|
-
permissionMode: "bypassPermissions",
|
|
332
|
-
allowDangerouslySkipPermissions: true,
|
|
333
|
-
includePartialMessages: true,
|
|
334
|
-
env: {
|
|
335
|
-
...process.env,
|
|
336
|
-
// Disable LSP plugins to avoid crashes when TypeScript LSP server errors
|
|
337
|
-
ENABLE_LSP_TOOL: "0",
|
|
338
|
-
// Signal that tests should use minimal reporters (dots)
|
|
339
|
-
RALPH_QUIET: "1",
|
|
340
|
-
},
|
|
341
|
-
},
|
|
342
|
-
})) {
|
|
343
|
-
log(`Received message type: ${message.type}`);
|
|
344
|
-
// Log raw message to file (JSONL format - one JSON object per line)
|
|
345
|
-
appendFileSync(logFile, JSON.stringify(message) + "\n");
|
|
346
|
-
// Convert to event format for display
|
|
347
|
-
const event = sdkMessageToEvent(message);
|
|
348
|
-
if (event) {
|
|
349
|
-
setEvents(prev => [...prev, event]);
|
|
350
|
-
}
|
|
351
|
-
// Check for task lifecycle events in assistant messages
|
|
352
|
-
if (message.type === "assistant") {
|
|
353
|
-
const assistantMessage = message.message;
|
|
354
|
-
const content = assistantMessage?.content;
|
|
355
|
-
if (content) {
|
|
356
|
-
for (const block of content) {
|
|
357
|
-
if (block.type === "text" && typeof block.text === "string") {
|
|
358
|
-
const taskInfo = parseTaskLifecycleEvent(block.text);
|
|
359
|
-
if (taskInfo) {
|
|
360
|
-
if (taskInfo.action === "starting") {
|
|
361
|
-
setCurrentTaskId(taskInfo.taskId ?? null);
|
|
362
|
-
setCurrentTaskTitle(taskInfo.taskTitle ?? null);
|
|
363
|
-
log(`Task started: ${taskInfo.taskId}${taskInfo.taskTitle ? ` - ${taskInfo.taskTitle}` : ""}`);
|
|
364
|
-
// Emit ralph_task_started event to log file
|
|
365
|
-
const taskStartedEvent = {
|
|
366
|
-
type: "ralph_task_started",
|
|
367
|
-
taskId: taskInfo.taskId,
|
|
368
|
-
taskTitle: taskInfo.taskTitle,
|
|
369
|
-
iteration: currentIteration,
|
|
370
|
-
};
|
|
371
|
-
appendFileSync(logFile, JSON.stringify(taskStartedEvent) + "\n");
|
|
372
|
-
}
|
|
373
|
-
else if (taskInfo.action === "completed") {
|
|
374
|
-
log(`Task completed: ${taskInfo.taskId}${taskInfo.taskTitle ? ` - ${taskInfo.taskTitle}` : ""}`);
|
|
375
|
-
// Emit ralph_task_completed event to log file
|
|
376
|
-
const taskCompletedEvent = {
|
|
377
|
-
type: "ralph_task_completed",
|
|
378
|
-
taskId: taskInfo.taskId,
|
|
379
|
-
taskTitle: taskInfo.taskTitle,
|
|
380
|
-
iteration: currentIteration,
|
|
381
|
-
};
|
|
382
|
-
appendFileSync(logFile, JSON.stringify(taskCompletedEvent) + "\n");
|
|
383
|
-
// Keep tracking the same task until a new one starts
|
|
384
|
-
}
|
|
385
|
-
}
|
|
386
|
-
}
|
|
387
|
-
}
|
|
388
|
-
}
|
|
389
|
-
}
|
|
390
|
-
// Capture the final result message
|
|
391
|
-
if (message.type === "result" &&
|
|
392
|
-
"result" in message &&
|
|
393
|
-
typeof message.result === "string") {
|
|
394
|
-
log(`Received result message`);
|
|
395
|
-
finalResult = message.result;
|
|
396
|
-
// Close the message queue immediately when we get the result.
|
|
397
|
-
// This is critical to prevent hangs: the SDK's streamInput() needs
|
|
398
|
-
// to complete iterating our queue before it can call endInput(),
|
|
399
|
-
// which signals EOF to the CLI. If we wait until after the for-await
|
|
400
|
-
// loop exits, we create a circular dependency that can cause hangs.
|
|
401
|
-
log(`Closing message queue on result`);
|
|
402
|
-
messageQueue.close();
|
|
403
|
-
}
|
|
404
|
-
}
|
|
405
|
-
log(`query() loop completed normally`);
|
|
406
|
-
setIsRunning(false);
|
|
407
|
-
// MessageQueue should already be closed when we received the result message.
|
|
408
|
-
// We ensure it's closed here as a safety measure (close() is idempotent).
|
|
409
|
-
log(`Ensuring message queue is closed`);
|
|
410
|
-
messageQueue.close();
|
|
411
|
-
messageQueueRef.current = null;
|
|
412
|
-
// Check for stop-after-current request
|
|
413
|
-
if (stopAfterCurrentRef.current) {
|
|
414
|
-
log(`Stop after current requested - exiting gracefully`);
|
|
415
|
-
exit();
|
|
416
|
-
process.exit(0);
|
|
417
|
-
return;
|
|
418
|
-
}
|
|
419
|
-
// Check for completion
|
|
420
|
-
if (finalResult.includes("<promise>COMPLETE</promise>")) {
|
|
421
|
-
if (watch) {
|
|
422
|
-
// Enter watch mode instead of exiting
|
|
423
|
-
setIsWatching(true);
|
|
424
|
-
}
|
|
425
|
-
else {
|
|
426
|
-
exit();
|
|
427
|
-
process.exit(0);
|
|
428
|
-
}
|
|
429
|
-
return;
|
|
430
|
-
}
|
|
431
|
-
// Check for pause request - if paused, we wait for resume via Ctrl-P
|
|
432
|
-
if (isPausedRef.current) {
|
|
433
|
-
log(`Paused after iteration ${currentIteration}`);
|
|
434
|
-
// Don't move to next iteration - the resume handler (Ctrl-P) will trigger it
|
|
435
|
-
return;
|
|
436
|
-
}
|
|
437
|
-
// Move to next iteration
|
|
438
|
-
setTimeout(() => setCurrentIteration(i => i + 1), 500);
|
|
439
|
-
}
|
|
440
|
-
catch (err) {
|
|
441
|
-
log(`query() loop error: ${err instanceof Error ? err.message : String(err)}`);
|
|
442
|
-
setIsRunning(false);
|
|
443
|
-
log(`Closing message queue after error`);
|
|
444
|
-
messageQueue.close();
|
|
445
|
-
messageQueueRef.current = null;
|
|
446
|
-
if (abortController.signal.aborted) {
|
|
447
|
-
log(`Abort signal detected`);
|
|
448
|
-
return; // Intentionally aborted
|
|
449
|
-
}
|
|
450
|
-
setError(`Error running Claude: ${err instanceof Error ? err.message : String(err)}`);
|
|
451
|
-
setTimeout(() => {
|
|
452
|
-
exit();
|
|
453
|
-
process.exit(1);
|
|
454
|
-
}, 100);
|
|
455
|
-
}
|
|
456
|
-
};
|
|
457
|
-
runQuery();
|
|
458
|
-
return () => {
|
|
459
|
-
log(`Cleanup: aborting and closing queue for iteration ${currentIteration}`);
|
|
460
|
-
abortController.abort();
|
|
461
|
-
messageQueue.close();
|
|
462
|
-
messageQueueRef.current = null;
|
|
463
|
-
};
|
|
464
|
-
}, [currentIteration, totalIterations, exit, watch, watchCycle]);
|
|
465
|
-
if (error) {
|
|
466
|
-
return (React.createElement(Box, { flexDirection: "column" },
|
|
467
|
-
React.createElement(Text, { color: "red" }, error)));
|
|
468
|
-
}
|
|
469
|
-
return (React.createElement(Box, { flexDirection: "column" },
|
|
470
|
-
React.createElement(Static, { items: staticItems }, item => (React.createElement(Box, { key: item.key, flexDirection: "column" }, renderStaticItem(item)))),
|
|
471
|
-
isAddingTodo && (React.createElement(Box, { flexDirection: "column", marginTop: 1 },
|
|
472
|
-
React.createElement(Text, { color: "yellow" }, "Todo:"),
|
|
473
|
-
React.createElement(EnhancedTextInput, { value: todoText, onChange: setTodoText, onSubmit: handleTodoSubmit }),
|
|
474
|
-
React.createElement(Text, { dimColor: true }, "(Enter to add, Esc to cancel)"))),
|
|
475
|
-
todoMessage && (React.createElement(Box, { marginTop: 1 },
|
|
476
|
-
React.createElement(Text, { color: todoMessage.type === "success" ? "green" : "red" }, todoMessage.text))),
|
|
477
|
-
!isWatching && (React.createElement(Box, { flexDirection: "column", marginTop: 1 },
|
|
478
|
-
React.createElement(Text, { dimColor: true }, "─".repeat(columns)),
|
|
479
|
-
React.createElement(Box, null,
|
|
480
|
-
React.createElement(Text, { color: isRunning ? "yellow" : "gray" }, "\u276F "),
|
|
481
|
-
React.createElement(EnhancedTextInput, { value: userMessageText, placeholder: isRunning ? "Type a message for Ralph..." : "Waiting for Ralph to start...", onChange: setUserMessageText, onSubmit: handleUserMessageSubmit, focus: isRunning && !isAddingTodo })),
|
|
482
|
-
userMessageStatus && (React.createElement(Text, { color: userMessageStatus.type === "success" ? "green"
|
|
483
|
-
: userMessageStatus.type === "error" ?
|
|
484
|
-
"red"
|
|
485
|
-
: "yellow" }, userMessageStatus.text)),
|
|
486
|
-
React.createElement(Text, { dimColor: true }, "─".repeat(columns)))),
|
|
487
|
-
React.createElement(Box, { marginTop: 1, justifyContent: "space-between" },
|
|
488
|
-
isWatching ?
|
|
489
|
-
detectedIssue ?
|
|
490
|
-
React.createElement(Text, { color: "green" },
|
|
491
|
-
React.createElement(Spinner, { type: "dots" }),
|
|
492
|
-
" New issue: ",
|
|
493
|
-
React.createElement(Text, { color: "yellow" }, detectedIssue.IssueID),
|
|
494
|
-
detectedIssue.Title ? ` - ${detectedIssue.Title}` : "")
|
|
495
|
-
: React.createElement(Text, { color: "cyan" },
|
|
496
|
-
"Waiting for new issues ",
|
|
497
|
-
React.createElement(Spinner, { type: "simpleDotsScrolling" }))
|
|
498
|
-
: isPaused && !isRunning ?
|
|
499
|
-
React.createElement(Text, { color: "magenta" },
|
|
500
|
-
"\u23F8 Paused after round ",
|
|
501
|
-
React.createElement(Text, { color: "yellow" }, currentIteration),
|
|
502
|
-
" ",
|
|
503
|
-
React.createElement(Text, { dimColor: true }, "(Ctrl-P to resume)"))
|
|
504
|
-
: isRunning ?
|
|
505
|
-
stopAfterCurrent ?
|
|
506
|
-
React.createElement(Text, { color: "yellow" },
|
|
507
|
-
React.createElement(Spinner, { type: "dots" }),
|
|
508
|
-
" Stopping after round",
|
|
509
|
-
" ",
|
|
510
|
-
React.createElement(Text, { color: "yellow" }, currentIteration),
|
|
511
|
-
" completes...",
|
|
512
|
-
" ",
|
|
513
|
-
React.createElement(Text, { dimColor: true }, "(Ctrl-S pressed)"))
|
|
514
|
-
: isPaused ?
|
|
515
|
-
React.createElement(Text, { color: "magenta" },
|
|
516
|
-
React.createElement(Spinner, { type: "dots" }),
|
|
517
|
-
" Pausing after round",
|
|
518
|
-
" ",
|
|
519
|
-
React.createElement(Text, { color: "yellow" }, currentIteration),
|
|
520
|
-
" completes...",
|
|
521
|
-
" ",
|
|
522
|
-
React.createElement(Text, { dimColor: true }, "(Ctrl-P pressed)"))
|
|
523
|
-
: React.createElement(Text, { color: "cyan" },
|
|
524
|
-
React.createElement(Spinner, { type: "dots" }),
|
|
525
|
-
" Running round ",
|
|
526
|
-
React.createElement(Text, { color: "yellow" }, currentIteration),
|
|
527
|
-
" ",
|
|
528
|
-
"(max ",
|
|
529
|
-
totalIterations,
|
|
530
|
-
")")
|
|
531
|
-
: React.createElement(Text, { color: "cyan" },
|
|
532
|
-
React.createElement(Spinner, { type: "simpleDotsScrolling" }),
|
|
533
|
-
" Waiting for Ralph to start..."),
|
|
534
|
-
progressData.type !== "none" && progressData.total > 0 && (React.createElement(ProgressBar, { completed: progressData.completed, total: progressData.total, repoName: repoName })))));
|
|
535
|
-
};
|
|
536
|
-
//# sourceMappingURL=IterationRunner.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"IterationRunner.js","sourceRoot":"","sources":["../../src/components/IterationRunner.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
export {};
|
|
2
|
-
/**
|
|
3
|
-
* Note: For comprehensive integration tests, you would want to:
|
|
4
|
-
*
|
|
5
|
-
* 1. Test child process spawning:
|
|
6
|
-
* - Mock spawn() to return a fake ChildProcess
|
|
7
|
-
* - Emit data events to simulate Claude output
|
|
8
|
-
* - Test JSON parsing of events
|
|
9
|
-
* - Test COMPLETE promise detection
|
|
10
|
-
* - Test exit code handling
|
|
11
|
-
*
|
|
12
|
-
* 2. Test file operations:
|
|
13
|
-
* - Mock appendFileSync/writeFileSync
|
|
14
|
-
* - Verify events are logged correctly
|
|
15
|
-
* - Test log file creation
|
|
16
|
-
*
|
|
17
|
-
* 3. Test React rendering:
|
|
18
|
-
* - Use ink-testing-library to render component
|
|
19
|
-
* - Test initialization prompts
|
|
20
|
-
* - Test error display
|
|
21
|
-
* - Test iteration counter
|
|
22
|
-
*
|
|
23
|
-
* Example structure for a full integration test:
|
|
24
|
-
*
|
|
25
|
-
* import { render } from 'ink-testing-library'
|
|
26
|
-
* import { EventEmitter } from 'events'
|
|
27
|
-
*
|
|
28
|
-
* vi.mock('child_process', () => ({
|
|
29
|
-
* spawn: vi.fn(() => {
|
|
30
|
-
* const mockProcess = new EventEmitter()
|
|
31
|
-
* mockProcess.stdout = new EventEmitter()
|
|
32
|
-
* mockProcess.kill = vi.fn()
|
|
33
|
-
* return mockProcess
|
|
34
|
-
* })
|
|
35
|
-
* }))
|
|
36
|
-
*
|
|
37
|
-
* it('parses streaming JSON events', () => {
|
|
38
|
-
* const { lastFrame } = render(<IterationRunner totalIterations={1} />)
|
|
39
|
-
* const mockChild = getLastSpawnedProcess()
|
|
40
|
-
*
|
|
41
|
-
* mockChild.stdout.emit('data', Buffer.from('{"type":"assistant"}\n'))
|
|
42
|
-
*
|
|
43
|
-
* expect(lastFrame()).toContain('expected output')
|
|
44
|
-
* })
|
|
45
|
-
*/
|
|
46
|
-
//# sourceMappingURL=IterationRunner.test.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"IterationRunner.test.d.ts","sourceRoot":"","sources":["../../src/components/IterationRunner.test.tsx"],"names":[],"mappings":";AA0BA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG"}
|