@herbcaudill/ralph 0.6.5 → 0.7.0

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 (175) hide show
  1. package/README.md +13 -100
  2. package/dist/cli.d.ts.map +1 -1
  3. package/dist/cli.js +21 -7
  4. package/dist/cli.js.map +1 -1
  5. package/dist/components/App.d.ts +2 -1
  6. package/dist/components/App.d.ts.map +1 -1
  7. package/dist/components/App.js +5 -1
  8. package/dist/components/App.js.map +1 -1
  9. package/dist/components/InitRalph.js +5 -5
  10. package/dist/components/InitRalph.js.map +1 -1
  11. package/dist/components/IterationRunner.d.ts +1 -1
  12. package/dist/components/IterationRunner.d.ts.map +1 -1
  13. package/dist/components/IterationRunner.js +212 -56
  14. package/dist/components/IterationRunner.js.map +1 -1
  15. package/dist/components/IterationRunner.test.js +2 -2
  16. package/dist/components/IterationRunner.test.js.map +1 -1
  17. package/dist/components/JsonOutput.d.ts +14 -0
  18. package/dist/components/JsonOutput.d.ts.map +1 -0
  19. package/dist/components/JsonOutput.js +246 -0
  20. package/dist/components/JsonOutput.js.map +1 -0
  21. package/dist/components/ProgressBar.d.ts +7 -5
  22. package/dist/components/ProgressBar.d.ts.map +1 -1
  23. package/dist/components/ProgressBar.js +7 -5
  24. package/dist/components/ProgressBar.js.map +1 -1
  25. package/dist/components/ProgressBar.test.js +24 -11
  26. package/dist/components/ProgressBar.test.js.map +1 -1
  27. package/dist/lib/MessageQueue.d.ts +2 -0
  28. package/dist/lib/MessageQueue.d.ts.map +1 -1
  29. package/dist/lib/MessageQueue.js +35 -2
  30. package/dist/lib/MessageQueue.js.map +1 -1
  31. package/dist/lib/MessageQueue.test.js +146 -0
  32. package/dist/lib/MessageQueue.test.js.map +1 -1
  33. package/dist/lib/StdinCommandHandler.d.ts +42 -0
  34. package/dist/lib/StdinCommandHandler.d.ts.map +1 -0
  35. package/dist/lib/StdinCommandHandler.js +102 -0
  36. package/dist/lib/StdinCommandHandler.js.map +1 -0
  37. package/dist/lib/StdinCommandHandler.test.d.ts +2 -0
  38. package/dist/lib/StdinCommandHandler.test.d.ts.map +1 -0
  39. package/dist/lib/StdinCommandHandler.test.js +93 -0
  40. package/dist/lib/StdinCommandHandler.test.js.map +1 -0
  41. package/dist/lib/debug.d.ts +18 -0
  42. package/dist/lib/debug.d.ts.map +1 -0
  43. package/dist/lib/debug.js +44 -0
  44. package/dist/lib/debug.js.map +1 -0
  45. package/dist/lib/formatContentBlock.js +1 -1
  46. package/dist/lib/formatContentBlock.js.map +1 -1
  47. package/dist/lib/getNextLogFile.d.ts +12 -0
  48. package/dist/lib/getNextLogFile.d.ts.map +1 -0
  49. package/dist/lib/getNextLogFile.js +52 -0
  50. package/dist/lib/getNextLogFile.js.map +1 -0
  51. package/dist/lib/getNextLogFile.test.d.ts +2 -0
  52. package/dist/lib/getNextLogFile.test.d.ts.map +1 -0
  53. package/dist/lib/getNextLogFile.test.js +65 -0
  54. package/dist/lib/getNextLogFile.test.js.map +1 -0
  55. package/dist/lib/getOpenIssueCount.d.ts +11 -0
  56. package/dist/lib/getOpenIssueCount.d.ts.map +1 -0
  57. package/dist/lib/getOpenIssueCount.js +31 -0
  58. package/dist/lib/getOpenIssueCount.js.map +1 -0
  59. package/dist/lib/getOpenIssueCount.test.d.ts +2 -0
  60. package/dist/lib/getOpenIssueCount.test.d.ts.map +1 -0
  61. package/dist/lib/getOpenIssueCount.test.js +65 -0
  62. package/dist/lib/getOpenIssueCount.test.js.map +1 -0
  63. package/dist/lib/getProgress.d.ts +22 -6
  64. package/dist/lib/getProgress.d.ts.map +1 -1
  65. package/dist/lib/getProgress.js +69 -23
  66. package/dist/lib/getProgress.js.map +1 -1
  67. package/dist/lib/getProgress.test.js +68 -34
  68. package/dist/lib/getProgress.test.js.map +1 -1
  69. package/package.json +1 -1
  70. package/templates/prompt-beads.md +5 -5
  71. package/dist/lib/cleanupAllWorktrees.d.ts +0 -5
  72. package/dist/lib/cleanupAllWorktrees.d.ts.map +0 -1
  73. package/dist/lib/cleanupAllWorktrees.js +0 -23
  74. package/dist/lib/cleanupAllWorktrees.js.map +0 -1
  75. package/dist/lib/cleanupWorktree.d.ts +0 -6
  76. package/dist/lib/cleanupWorktree.d.ts.map +0 -1
  77. package/dist/lib/cleanupWorktree.js +0 -33
  78. package/dist/lib/cleanupWorktree.js.map +0 -1
  79. package/dist/lib/copyRalphFilesFromWorktree.d.ts +0 -5
  80. package/dist/lib/copyRalphFilesFromWorktree.d.ts.map +0 -1
  81. package/dist/lib/copyRalphFilesFromWorktree.js +0 -19
  82. package/dist/lib/copyRalphFilesFromWorktree.js.map +0 -1
  83. package/dist/lib/copyRalphFilesToWorktree.d.ts +0 -5
  84. package/dist/lib/copyRalphFilesToWorktree.d.ts.map +0 -1
  85. package/dist/lib/copyRalphFilesToWorktree.js +0 -21
  86. package/dist/lib/copyRalphFilesToWorktree.js.map +0 -1
  87. package/dist/lib/createWorktree.d.ts +0 -6
  88. package/dist/lib/createWorktree.d.ts.map +0 -1
  89. package/dist/lib/createWorktree.js +0 -33
  90. package/dist/lib/createWorktree.js.map +0 -1
  91. package/dist/lib/getGitRoot.d.ts +0 -5
  92. package/dist/lib/getGitRoot.d.ts.map +0 -1
  93. package/dist/lib/getGitRoot.js +0 -18
  94. package/dist/lib/getGitRoot.js.map +0 -1
  95. package/dist/lib/installDependencies.d.ts +0 -5
  96. package/dist/lib/installDependencies.d.ts.map +0 -1
  97. package/dist/lib/installDependencies.js +0 -23
  98. package/dist/lib/installDependencies.js.map +0 -1
  99. package/dist/lib/installDependencies.test.d.ts +0 -2
  100. package/dist/lib/installDependencies.test.d.ts.map +0 -1
  101. package/dist/lib/installDependencies.test.js +0 -37
  102. package/dist/lib/installDependencies.test.js.map +0 -1
  103. package/dist/lib/mergeWorktreeToMain.d.ts +0 -6
  104. package/dist/lib/mergeWorktreeToMain.d.ts.map +0 -1
  105. package/dist/lib/mergeWorktreeToMain.js +0 -54
  106. package/dist/lib/mergeWorktreeToMain.js.map +0 -1
  107. package/dist/lib/outputState.d.ts +0 -5
  108. package/dist/lib/outputState.d.ts.map +0 -1
  109. package/dist/lib/outputState.js +0 -6
  110. package/dist/lib/outputState.js.map +0 -1
  111. package/dist/lib/popStash.d.ts +0 -5
  112. package/dist/lib/popStash.d.ts.map +0 -1
  113. package/dist/lib/popStash.js +0 -17
  114. package/dist/lib/popStash.js.map +0 -1
  115. package/dist/lib/processEvent.d.ts +0 -2
  116. package/dist/lib/processEvent.d.ts.map +0 -1
  117. package/dist/lib/processEvent.js +0 -100
  118. package/dist/lib/processEvent.js.map +0 -1
  119. package/dist/lib/replayLog.d.ts +0 -2
  120. package/dist/lib/replayLog.d.ts.map +0 -1
  121. package/dist/lib/replayLog.js +0 -35
  122. package/dist/lib/replayLog.js.map +0 -1
  123. package/dist/lib/resolveConflicts.d.ts +0 -6
  124. package/dist/lib/resolveConflicts.d.ts.map +0 -1
  125. package/dist/lib/resolveConflicts.js +0 -76
  126. package/dist/lib/resolveConflicts.js.map +0 -1
  127. package/dist/lib/runIteration.d.ts +0 -2
  128. package/dist/lib/runIteration.d.ts.map +0 -1
  129. package/dist/lib/runIteration.js +0 -91
  130. package/dist/lib/runIteration.js.map +0 -1
  131. package/dist/lib/showToolUse.d.ts +0 -2
  132. package/dist/lib/showToolUse.d.ts.map +0 -1
  133. package/dist/lib/showToolUse.js +0 -17
  134. package/dist/lib/showToolUse.js.map +0 -1
  135. package/dist/lib/signalHandler.d.ts +0 -3
  136. package/dist/lib/signalHandler.d.ts.map +0 -1
  137. package/dist/lib/signalHandler.js +0 -23
  138. package/dist/lib/signalHandler.js.map +0 -1
  139. package/dist/lib/stashChanges.d.ts +0 -6
  140. package/dist/lib/stashChanges.d.ts.map +0 -1
  141. package/dist/lib/stashChanges.js +0 -27
  142. package/dist/lib/stashChanges.js.map +0 -1
  143. package/dist/lib/textFormatting.d.ts +0 -4
  144. package/dist/lib/textFormatting.d.ts.map +0 -1
  145. package/dist/lib/textFormatting.js +0 -94
  146. package/dist/lib/textFormatting.js.map +0 -1
  147. package/dist/lib/types.d.ts +0 -13
  148. package/dist/lib/types.d.ts.map +0 -1
  149. package/dist/lib/types.js +0 -15
  150. package/dist/lib/types.js.map +0 -1
  151. package/dist/lib/worktree.d.ts +0 -43
  152. package/dist/lib/worktree.d.ts.map +0 -1
  153. package/dist/lib/worktree.js +0 -210
  154. package/dist/lib/worktree.js.map +0 -1
  155. package/dist/ui/EventProcessor.d.ts +0 -11
  156. package/dist/ui/EventProcessor.d.ts.map +0 -1
  157. package/dist/ui/EventProcessor.js +0 -95
  158. package/dist/ui/EventProcessor.js.map +0 -1
  159. package/dist/ui/IterationApp.d.ts +0 -10
  160. package/dist/ui/IterationApp.d.ts.map +0 -1
  161. package/dist/ui/IterationApp.js +0 -21
  162. package/dist/ui/IterationApp.js.map +0 -1
  163. package/dist/ui/IterationUI.d.ts +0 -13
  164. package/dist/ui/IterationUI.d.ts.map +0 -1
  165. package/dist/ui/IterationUI.js +0 -19
  166. package/dist/ui/IterationUI.js.map +0 -1
  167. package/dist/ui/TextDisplay.d.ts +0 -7
  168. package/dist/ui/TextDisplay.d.ts.map +0 -1
  169. package/dist/ui/TextDisplay.js +0 -41
  170. package/dist/ui/TextDisplay.js.map +0 -1
  171. package/dist/ui/ToolUseDisplay.d.ts +0 -10
  172. package/dist/ui/ToolUseDisplay.d.ts.map +0 -1
  173. package/dist/ui/ToolUseDisplay.js +0 -10
  174. package/dist/ui/ToolUseDisplay.js.map +0 -1
  175. /package/templates/{prompt.md → prompt-todos.md} +0 -0
@@ -0,0 +1,246 @@
1
+ import React, { useState, useEffect, useRef } from "react";
2
+ import { useApp, Text } from "ink";
3
+ import { writeFileSync, readFileSync, existsSync } from "fs";
4
+ import { join, dirname, basename } from "path";
5
+ import { fileURLToPath } from "url";
6
+ const __dirname = dirname(fileURLToPath(import.meta.url));
7
+ import { query } from "@anthropic-ai/claude-agent-sdk";
8
+ import { MessageQueue, createUserMessage } from "../lib/MessageQueue.js";
9
+ import { getProgress, captureStartupSnapshot } from "../lib/getProgress.js";
10
+ import { createDebugLogger } from "../lib/debug.js";
11
+ import { getNextLogFile } from "../lib/getNextLogFile.js";
12
+ import { createStdinCommandHandler } from "../lib/StdinCommandHandler.js";
13
+ const log = createDebugLogger("iteration");
14
+ const ralphDir = join(process.cwd(), ".ralph");
15
+ const promptFile = join(ralphDir, "prompt.md");
16
+ const todoFile = join(ralphDir, "todo.md");
17
+ const beadsDir = join(process.cwd(), ".beads");
18
+ const templatesDir = join(__dirname, "..", "..", "templates");
19
+ const repoName = basename(process.cwd());
20
+ /**
21
+ * Get the prompt content, falling back to templates if .ralph/prompt.md doesn't exist.
22
+ * Uses the appropriate template based on the project setup:
23
+ * - If .beads directory exists OR no .ralph/todo.md: use prompt-beads.md
24
+ * - If .ralph/todo.md exists: use prompt-todos.md (todo-based workflow)
25
+ */
26
+ export const getPromptContent = () => {
27
+ // First, try to read from .ralph/prompt.md
28
+ if (existsSync(promptFile)) {
29
+ return readFileSync(promptFile, "utf-8");
30
+ }
31
+ // Fall back to templates based on project setup
32
+ const useBeadsTemplate = existsSync(beadsDir) || !existsSync(todoFile);
33
+ const templateFile = useBeadsTemplate ? "prompt-beads.md" : "prompt-todos.md";
34
+ const templatePath = join(templatesDir, templateFile);
35
+ if (existsSync(templatePath)) {
36
+ return readFileSync(templatePath, "utf-8");
37
+ }
38
+ // Last resort: return a minimal prompt
39
+ return "Work on the highest-priority task.";
40
+ };
41
+ // Output an event as newline-delimited JSON to stdout
42
+ const outputEvent = (event) => {
43
+ process.stdout.write(JSON.stringify(event) + "\n");
44
+ };
45
+ export const JsonOutput = ({ totalIterations }) => {
46
+ const { exit } = useApp();
47
+ const [currentIteration, setCurrentIteration] = useState(1);
48
+ const [error, setError] = useState();
49
+ const [isRunning, setIsRunning] = useState(false);
50
+ const [startupSnapshot] = useState(() => captureStartupSnapshot());
51
+ const messageQueueRef = useRef(null);
52
+ // Log file path for this run (set once at startup, persisted across iterations)
53
+ const logFileRef = useRef(null);
54
+ const [stopAfterCurrent, setStopAfterCurrent] = useState(false); // Stop gracefully after current iteration
55
+ const stopAfterCurrentRef = useRef(false); // Ref to access in async callbacks
56
+ const [isPaused, setIsPaused] = useState(false); // Pause after current iteration completes
57
+ const isPausedRef = useRef(false); // Ref to access in async callbacks
58
+ const stdinCleanupRef = useRef(null);
59
+ // Keep stopAfterCurrent ref in sync with state
60
+ useEffect(() => {
61
+ stopAfterCurrentRef.current = stopAfterCurrent;
62
+ }, [stopAfterCurrent]);
63
+ // Keep isPaused ref in sync with state
64
+ useEffect(() => {
65
+ isPausedRef.current = isPaused;
66
+ }, [isPaused]);
67
+ // Set up stdin command handler for receiving commands via piped input
68
+ useEffect(() => {
69
+ const cleanup = createStdinCommandHandler(() => ({
70
+ messageQueue: messageQueueRef.current,
71
+ onStop: () => {
72
+ setStopAfterCurrent(true);
73
+ outputEvent({ type: "ralph_stop_requested" });
74
+ },
75
+ onPause: () => {
76
+ setIsPaused(true);
77
+ outputEvent({ type: "ralph_pause_requested" });
78
+ },
79
+ onResume: () => {
80
+ const wasPaused = isPausedRef.current;
81
+ setIsPaused(false);
82
+ outputEvent({ type: "ralph_resumed" });
83
+ // If we were paused between iterations, trigger the next iteration
84
+ if (wasPaused && !isRunning) {
85
+ setTimeout(() => setCurrentIteration(i => i + 1), 100);
86
+ }
87
+ },
88
+ onMessage: (text) => {
89
+ // Output event showing we received a message command
90
+ outputEvent({
91
+ type: "ralph_message_received",
92
+ text: text.slice(0, 100) + (text.length > 100 ? "..." : ""),
93
+ });
94
+ },
95
+ }));
96
+ stdinCleanupRef.current = cleanup;
97
+ return () => {
98
+ cleanup();
99
+ stdinCleanupRef.current = null;
100
+ };
101
+ }, []);
102
+ useEffect(() => {
103
+ if (currentIteration > totalIterations) {
104
+ outputEvent({ type: "ralph_exit", reason: "max_iterations" });
105
+ exit();
106
+ return;
107
+ }
108
+ // Check if there are any tasks available before starting a round
109
+ const currentProgress = startupSnapshot ?
110
+ getProgress(startupSnapshot.initialCount, startupSnapshot.timestamp)
111
+ : { type: "none", completed: 0, total: 0 };
112
+ // All tasks are complete when completed equals total
113
+ if (currentProgress.completed >= currentProgress.total && currentProgress.type !== "none") {
114
+ outputEvent({ type: "ralph_exit", reason: "all_tasks_complete" });
115
+ exit();
116
+ process.exit(0);
117
+ return;
118
+ }
119
+ // Get or create the log file path for this run
120
+ // Only create a new sequential log file on the first iteration
121
+ if (!logFileRef.current) {
122
+ logFileRef.current = getNextLogFile();
123
+ writeFileSync(logFileRef.current, "");
124
+ }
125
+ // Read prompt (from .ralph/prompt.md or falling back to templates)
126
+ const promptContent = getPromptContent();
127
+ const todoExists = existsSync(todoFile);
128
+ const todoContent = todoExists ? readFileSync(todoFile, "utf-8") : "";
129
+ const fullPrompt = todoContent ? `${promptContent}\n\n## Current Todo List\n\n${todoContent}` : promptContent;
130
+ const abortController = new AbortController();
131
+ setIsRunning(true);
132
+ // Output iteration start event
133
+ outputEvent({
134
+ type: "ralph_iteration_start",
135
+ iteration: currentIteration,
136
+ totalIterations,
137
+ repo: repoName,
138
+ });
139
+ // Create a message queue for this iteration
140
+ const messageQueue = new MessageQueue();
141
+ messageQueueRef.current = messageQueue;
142
+ // Push the initial prompt as the first message
143
+ messageQueue.push(createUserMessage(fullPrompt));
144
+ const runQuery = async () => {
145
+ let finalResult = "";
146
+ log(`Starting iteration ${currentIteration}`);
147
+ try {
148
+ log(`Beginning query() loop`);
149
+ for await (const message of query({
150
+ prompt: messageQueue,
151
+ options: {
152
+ abortController,
153
+ permissionMode: "bypassPermissions",
154
+ allowDangerouslySkipPermissions: true,
155
+ includePartialMessages: false, // Only complete messages for JSON output
156
+ env: {
157
+ ...process.env,
158
+ // Disable LSP plugins to avoid crashes when TypeScript LSP server errors
159
+ ENABLE_LSP_TOOL: "0",
160
+ },
161
+ },
162
+ })) {
163
+ log(`Received message type: ${message.type}`);
164
+ // Output the raw SDK message as JSON
165
+ outputEvent(message);
166
+ // Capture the final result message
167
+ if (message.type === "result" &&
168
+ "result" in message &&
169
+ typeof message.result === "string") {
170
+ log(`Received result message`);
171
+ finalResult = message.result;
172
+ // Close the message queue immediately when we get the result.
173
+ log(`Closing message queue on result`);
174
+ messageQueue.close();
175
+ }
176
+ }
177
+ log(`query() loop completed normally`);
178
+ setIsRunning(false);
179
+ log(`Ensuring message queue is closed`);
180
+ messageQueue.close();
181
+ messageQueueRef.current = null;
182
+ // Output iteration end event
183
+ outputEvent({
184
+ type: "ralph_iteration_end",
185
+ iteration: currentIteration,
186
+ });
187
+ // Check for stop-after-current request
188
+ if (stopAfterCurrentRef.current) {
189
+ log(`Stop after current requested - exiting gracefully`);
190
+ outputEvent({ type: "ralph_exit", reason: "stop_requested" });
191
+ exit();
192
+ process.exit(0);
193
+ return;
194
+ }
195
+ // Check for completion
196
+ if (finalResult.includes("<promise>COMPLETE</promise>")) {
197
+ outputEvent({ type: "ralph_exit", reason: "task_complete" });
198
+ exit();
199
+ process.exit(0);
200
+ return;
201
+ }
202
+ // Check for pause request - if paused, we wait for resume via stdin
203
+ if (isPausedRef.current) {
204
+ log(`Paused after iteration ${currentIteration}`);
205
+ outputEvent({ type: "ralph_paused", iteration: currentIteration });
206
+ // Don't move to next iteration - the resume handler will trigger it
207
+ return;
208
+ }
209
+ // Move to next iteration
210
+ setTimeout(() => setCurrentIteration(i => i + 1), 500);
211
+ }
212
+ catch (err) {
213
+ log(`query() loop error: ${err instanceof Error ? err.message : String(err)}`);
214
+ setIsRunning(false);
215
+ log(`Closing message queue after error`);
216
+ messageQueue.close();
217
+ messageQueueRef.current = null;
218
+ if (abortController.signal.aborted) {
219
+ log(`Abort signal detected`);
220
+ return; // Intentionally aborted
221
+ }
222
+ const errorMsg = `Error running Claude: ${err instanceof Error ? err.message : String(err)}`;
223
+ setError(errorMsg);
224
+ outputEvent({ type: "ralph_error", error: errorMsg });
225
+ setTimeout(() => {
226
+ exit();
227
+ process.exit(1);
228
+ }, 100);
229
+ }
230
+ };
231
+ runQuery();
232
+ return () => {
233
+ log(`Cleanup: aborting and closing queue for iteration ${currentIteration}`);
234
+ abortController.abort();
235
+ messageQueue.close();
236
+ messageQueueRef.current = null;
237
+ };
238
+ }, [currentIteration, totalIterations, exit, startupSnapshot]);
239
+ // In JSON mode, we output to stdout, so no visual rendering needed
240
+ // Just return an empty component (Ink requires something to render)
241
+ if (error) {
242
+ return React.createElement(Text, null, "");
243
+ }
244
+ return React.createElement(Text, null, "");
245
+ };
246
+ //# sourceMappingURL=JsonOutput.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JsonOutput.js","sourceRoot":"","sources":["../../src/components/JsonOutput.tsx"],"names":[],"mappings":"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"}
@@ -1,16 +1,18 @@
1
1
  import React from "react";
2
2
  /**
3
3
  * A simple progress bar component using Unicode block characters.
4
- * Shows completion progress: (total - remaining) / total
4
+ * Shows completion progress: completed / total
5
5
  */
6
- export declare const ProgressBar: ({ remaining, total, width }: Props) => React.JSX.Element | null;
6
+ export declare const ProgressBar: ({ completed, total, width, repoName }: Props) => React.JSX.Element | null;
7
7
  type Props = {
8
- /** Number of items remaining (open issues or unchecked tasks) */
9
- remaining: number;
10
- /** Total number of items at the start */
8
+ /** Number of items completed (closed issues or checked tasks) */
9
+ completed: number;
10
+ /** Total number of items seen since startup */
11
11
  total: number;
12
12
  /** Width of the progress bar in characters (default: 12) */
13
13
  width?: number;
14
+ /** Repository name to display before the progress bar */
15
+ repoName?: string;
14
16
  };
15
17
  export {};
16
18
  //# sourceMappingURL=ProgressBar.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ProgressBar.d.ts","sourceRoot":"","sources":["../../src/components/ProgressBar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB;;;GAGG;AACH,eAAO,MAAM,WAAW,GAAI,6BAAkC,KAAK,6BAyBlE,CAAA;AAED,KAAK,KAAK,GAAG;IACX,iEAAiE;IACjE,SAAS,EAAE,MAAM,CAAA;IACjB,yCAAyC;IACzC,KAAK,EAAE,MAAM,CAAA;IACb,4DAA4D;IAC5D,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA"}
1
+ {"version":3,"file":"ProgressBar.d.ts","sourceRoot":"","sources":["../../src/components/ProgressBar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB;;;GAGG;AACH,eAAO,MAAM,WAAW,GAAI,uCAA4C,KAAK,6BA6B5E,CAAA;AAED,KAAK,KAAK,GAAG;IACX,iEAAiE;IACjE,SAAS,EAAE,MAAM,CAAA;IACjB,+CAA+C;IAC/C,KAAK,EAAE,MAAM,CAAA;IACb,4DAA4D;IAC5D,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,yDAAyD;IACzD,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB,CAAA"}
@@ -2,20 +2,22 @@ import React from "react";
2
2
  import { Text } from "ink";
3
3
  /**
4
4
  * A simple progress bar component using Unicode block characters.
5
- * Shows completion progress: (total - remaining) / total
5
+ * Shows completion progress: completed / total
6
6
  */
7
- export const ProgressBar = ({ remaining, total, width = 12 }) => {
7
+ export const ProgressBar = ({ completed, total, width = 12, repoName }) => {
8
8
  if (total === 0) {
9
9
  return null;
10
10
  }
11
- // Progress is how much is done: 1 - (remaining / total)
12
- const progress = Math.min(1, Math.max(0, 1 - remaining / total));
11
+ // Progress is how much is done: completed / total
12
+ const progress = Math.min(1, Math.max(0, completed / total));
13
13
  const filledWidth = Math.round(progress * width);
14
14
  const emptyWidth = width - filledWidth;
15
15
  const filled = "▰".repeat(filledWidth);
16
16
  const empty = "▱".repeat(emptyWidth);
17
- const completed = total - remaining;
18
17
  return (React.createElement(Text, null,
18
+ repoName && (React.createElement(React.Fragment, null,
19
+ React.createElement(Text, { color: "cyan" }, repoName),
20
+ React.createElement(Text, { dimColor: true }, " \u2502 "))),
19
21
  React.createElement(Text, { color: "yellow" }, filled),
20
22
  React.createElement(Text, { dimColor: true }, empty),
21
23
  React.createElement(Text, { dimColor: true },
@@ -1 +1 @@
1
- {"version":3,"file":"ProgressBar.js","sourceRoot":"","sources":["../../src/components/ProgressBar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAA;AAE1B;;;GAGG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,GAAG,EAAE,EAAS,EAAE,EAAE;IACrE,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;QAChB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,wDAAwD;IACxD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,SAAS,GAAG,KAAK,CAAC,CAAC,CAAA;IAChE,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,CAAA;IAChD,MAAM,UAAU,GAAG,KAAK,GAAG,WAAW,CAAA;IAEtC,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;IACtC,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;IAEpC,MAAM,SAAS,GAAG,KAAK,GAAG,SAAS,CAAA;IAEnC,OAAO,CACL,oBAAC,IAAI;QACH,oBAAC,IAAI,IAAC,KAAK,EAAC,QAAQ,IAAE,MAAM,CAAQ;QACpC,oBAAC,IAAI,IAAC,QAAQ,UAAE,KAAK,CAAQ;QAC7B,oBAAC,IAAI,IAAC,QAAQ;YACX,GAAG;YACH,SAAS;;YAAG,KAAK;YAAE,GAAG,CAClB,CACF,CACR,CAAA;AACH,CAAC,CAAA"}
1
+ {"version":3,"file":"ProgressBar.js","sourceRoot":"","sources":["../../src/components/ProgressBar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAA;AAE1B;;;GAGG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,GAAG,EAAE,EAAE,QAAQ,EAAS,EAAE,EAAE;IAC/E,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;QAChB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,kDAAkD;IAClD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,GAAG,KAAK,CAAC,CAAC,CAAA;IAC5D,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,CAAA;IAChD,MAAM,UAAU,GAAG,KAAK,GAAG,WAAW,CAAA;IAEtC,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;IACtC,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;IAEpC,OAAO,CACL,oBAAC,IAAI;QACF,QAAQ,IAAI,CACX;YACE,oBAAC,IAAI,IAAC,KAAK,EAAC,MAAM,IAAE,QAAQ,CAAQ;YACpC,oBAAC,IAAI,IAAC,QAAQ,qBAAW,CACxB,CACJ;QACD,oBAAC,IAAI,IAAC,KAAK,EAAC,QAAQ,IAAE,MAAM,CAAQ;QACpC,oBAAC,IAAI,IAAC,QAAQ,UAAE,KAAK,CAAQ;QAC7B,oBAAC,IAAI,IAAC,QAAQ;YACX,GAAG;YACH,SAAS;;YAAG,KAAK;YAAE,GAAG,CAClB,CACF,CACR,CAAA;AACH,CAAC,CAAA"}
@@ -4,39 +4,52 @@ import { render } from "ink-testing-library";
4
4
  import { ProgressBar } from "./ProgressBar.js";
5
5
  describe("ProgressBar", () => {
6
6
  it("renders nothing when total is 0", () => {
7
- const { lastFrame } = render(React.createElement(ProgressBar, { remaining: 0, total: 0 }));
7
+ const { lastFrame } = render(React.createElement(ProgressBar, { completed: 0, total: 0 }));
8
8
  expect(lastFrame()).toBe("");
9
9
  });
10
- it("shows empty bar when all tasks remain", () => {
11
- const { lastFrame } = render(React.createElement(ProgressBar, { remaining: 10, total: 10, width: 10 }));
10
+ it("shows empty bar when no tasks completed", () => {
11
+ const { lastFrame } = render(React.createElement(ProgressBar, { completed: 0, total: 10, width: 10 }));
12
12
  const output = lastFrame();
13
13
  expect(output).toContain("▱▱▱▱▱▱▱▱▱▱");
14
14
  expect(output).toContain("0/10");
15
15
  });
16
- it("shows full bar when no tasks remain", () => {
17
- const { lastFrame } = render(React.createElement(ProgressBar, { remaining: 0, total: 10, width: 10 }));
16
+ it("shows full bar when all tasks completed", () => {
17
+ const { lastFrame } = render(React.createElement(ProgressBar, { completed: 10, total: 10, width: 10 }));
18
18
  const output = lastFrame();
19
19
  expect(output).toContain("▰▰▰▰▰▰▰▰▰▰");
20
20
  expect(output).toContain("10/10");
21
21
  });
22
- it("shows half bar when half remain", () => {
23
- const { lastFrame } = render(React.createElement(ProgressBar, { remaining: 5, total: 10, width: 10 }));
22
+ it("shows half bar when half completed", () => {
23
+ const { lastFrame } = render(React.createElement(ProgressBar, { completed: 5, total: 10, width: 10 }));
24
24
  const output = lastFrame();
25
25
  expect(output).toContain("▰▰▰▰▰");
26
26
  expect(output).toContain("▱▱▱▱▱");
27
27
  expect(output).toContain("5/10");
28
28
  });
29
29
  it("respects custom width", () => {
30
- const { lastFrame } = render(React.createElement(ProgressBar, { remaining: 0, total: 10, width: 5 }));
30
+ const { lastFrame } = render(React.createElement(ProgressBar, { completed: 10, total: 10, width: 5 }));
31
31
  const output = lastFrame();
32
32
  // Should have 5 filled blocks
33
33
  expect(output).toMatch(/▰{5}/);
34
34
  });
35
35
  it("clamps progress to 0-100%", () => {
36
- // More remaining than total (shouldn't happen, but handle gracefully)
37
- const { lastFrame } = render(React.createElement(ProgressBar, { remaining: 15, total: 10, width: 10 }));
36
+ // More completed than total (shouldn't happen, but handle gracefully)
37
+ const { lastFrame } = render(React.createElement(ProgressBar, { completed: 15, total: 10, width: 10 }));
38
38
  const output = lastFrame();
39
- expect(output).toContain("▱▱▱▱▱▱▱▱▱▱");
39
+ expect(output).toContain("▰▰▰▰▰▰▰▰▰▰");
40
+ });
41
+ it("displays repo name when provided", () => {
42
+ const { lastFrame } = render(React.createElement(ProgressBar, { completed: 5, total: 10, width: 10, repoName: "my-repo" }));
43
+ const output = lastFrame();
44
+ expect(output).toContain("my-repo");
45
+ expect(output).toContain("│");
46
+ expect(output).toContain("5/10");
47
+ });
48
+ it("does not display repo name when not provided", () => {
49
+ const { lastFrame } = render(React.createElement(ProgressBar, { completed: 5, total: 10, width: 10 }));
50
+ const output = lastFrame();
51
+ expect(output).not.toContain("│");
52
+ expect(output).toContain("5/10");
40
53
  });
41
54
  });
42
55
  //# sourceMappingURL=ProgressBar.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ProgressBar.test.js","sourceRoot":"","sources":["../../src/components/ProgressBar.test.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ProgressBar.test.js","sourceRoot":"","sources":["../../src/components/ProgressBar.test.tsx"],"names":[],"mappings":"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"}
@@ -7,8 +7,10 @@ export declare class MessageQueue implements AsyncIterable<SDKUserMessage> {
7
7
  private queue;
8
8
  private resolvers;
9
9
  private closed;
10
+ private nextCallCount;
10
11
  push(message: SDKUserMessage): void;
11
12
  close(): void;
13
+ private getMessagePreview;
12
14
  [Symbol.asyncIterator](): AsyncIterator<SDKUserMessage>;
13
15
  }
14
16
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"MessageQueue.d.ts","sourceRoot":"","sources":["../../src/lib/MessageQueue.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAA;AAEpE;;;GAGG;AACH,qBAAa,YAAa,YAAW,aAAa,CAAC,cAAc,CAAC;IAChE,OAAO,CAAC,KAAK,CAAuB;IACpC,OAAO,CAAC,SAAS,CAA8D;IAC/E,OAAO,CAAC,MAAM,CAAQ;IAEtB,IAAI,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI;IAWnC,KAAK,IAAI,IAAI;IASb,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,aAAa,CAAC,cAAc,CAAC;CAexD;AAED;;GAEG;AACH,eAAO,MAAM,iBAAiB,GAAI,MAAM,MAAM,KAAG,cAQ/C,CAAA"}
1
+ {"version":3,"file":"MessageQueue.d.ts","sourceRoot":"","sources":["../../src/lib/MessageQueue.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAA;AAKpE;;;GAGG;AACH,qBAAa,YAAa,YAAW,aAAa,CAAC,cAAc,CAAC;IAChE,OAAO,CAAC,KAAK,CAAuB;IACpC,OAAO,CAAC,SAAS,CAA8D;IAC/E,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,aAAa,CAAI;IAEzB,IAAI,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI;IAmBnC,KAAK,IAAI,IAAI;IAgBb,OAAO,CAAC,iBAAiB;IAYzB,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,aAAa,CAAC,cAAc,CAAC;CAwBxD;AAED;;GAEG;AACH,eAAO,MAAM,iBAAiB,GAAI,MAAM,MAAM,KAAG,cAQ/C,CAAA"}
@@ -1,3 +1,5 @@
1
+ import { createDebugLogger } from "./debug.js";
2
+ const log = createDebugLogger("messagequeue");
1
3
  /**
2
4
  * A message queue that can be used as an async iterable for the SDK's streamInput.
3
5
  * Allows pushing messages dynamically while iterating.
@@ -6,34 +8,65 @@ export class MessageQueue {
6
8
  queue = [];
7
9
  resolvers = [];
8
10
  closed = false;
11
+ nextCallCount = 0;
9
12
  push(message) {
10
- if (this.closed)
13
+ const messagePreview = this.getMessagePreview(message);
14
+ log(`push() called with message: ${messagePreview}`);
15
+ if (this.closed) {
16
+ log(`push() ignored - queue is closed`);
11
17
  return;
18
+ }
12
19
  if (this.resolvers.length > 0) {
13
20
  const resolve = this.resolvers.shift();
21
+ log(`push() resolving pending next() call (${this.resolvers.length} resolvers remaining)`);
14
22
  resolve({ value: message, done: false });
15
23
  }
16
24
  else {
17
25
  this.queue.push(message);
26
+ log(`push() added to queue (queue length: ${this.queue.length})`);
18
27
  }
19
28
  }
20
29
  close() {
30
+ if (this.closed) {
31
+ log(`close() called but already closed - no-op`);
32
+ return;
33
+ }
34
+ log(`close() called - resolving ${this.resolvers.length} pending resolvers`);
21
35
  this.closed = true;
22
36
  // Resolve any pending iterators
23
37
  for (const resolve of this.resolvers) {
38
+ log(`close() resolving pending resolver with done=true`);
24
39
  resolve({ value: undefined, done: true });
25
40
  }
26
41
  this.resolvers = [];
42
+ log(`close() complete`);
43
+ }
44
+ getMessagePreview(message) {
45
+ const content = message.message?.content;
46
+ if (Array.isArray(content) && content.length > 0) {
47
+ const firstBlock = content[0];
48
+ if ("text" in firstBlock && typeof firstBlock.text === "string") {
49
+ const text = firstBlock.text.slice(0, 50);
50
+ return text.length < firstBlock.text.length ? `"${text}..."` : `"${text}"`;
51
+ }
52
+ }
53
+ return `[${message.type} message]`;
27
54
  }
28
55
  [Symbol.asyncIterator]() {
29
56
  return {
30
57
  next: () => {
58
+ this.nextCallCount++;
59
+ const callId = this.nextCallCount;
31
60
  if (this.queue.length > 0) {
32
- return Promise.resolve({ value: this.queue.shift(), done: false });
61
+ const message = this.queue.shift();
62
+ log(`next() #${callId}: returning queued message (${this.queue.length} remaining)`);
63
+ return Promise.resolve({ value: message, done: false });
33
64
  }
34
65
  if (this.closed) {
66
+ log(`next() #${callId}: queue closed, returning done=true`);
35
67
  return Promise.resolve({ value: undefined, done: true });
36
68
  }
69
+ log(`next() #${callId}: queue empty, creating pending resolver (${this.resolvers.length + 1} total)`);
37
70
  return new Promise(resolve => {
38
71
  this.resolvers.push(resolve);
39
72
  });
@@ -1 +1 @@
1
- {"version":3,"file":"MessageQueue.js","sourceRoot":"","sources":["../../src/lib/MessageQueue.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,OAAO,YAAY;IACf,KAAK,GAAqB,EAAE,CAAA;IAC5B,SAAS,GAA4D,EAAE,CAAA;IACvE,MAAM,GAAG,KAAK,CAAA;IAEtB,IAAI,CAAC,OAAuB;QAC1B,IAAI,IAAI,CAAC,MAAM;YAAE,OAAM;QAEvB,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAG,CAAA;YACvC,OAAO,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAA;QAC1C,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAC1B,CAAC;IACH,CAAC;IAED,KAAK;QACH,IAAI,CAAC,MAAM,GAAG,IAAI,CAAA;QAClB,gCAAgC;QAChC,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACrC,OAAO,CAAC,EAAE,KAAK,EAAE,SAAsC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;QACxE,CAAC;QACD,IAAI,CAAC,SAAS,GAAG,EAAE,CAAA;IACrB,CAAC;IAED,CAAC,MAAM,CAAC,aAAa,CAAC;QACpB,OAAO;YACL,IAAI,EAAE,GAA4C,EAAE;gBAClD,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC1B,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EAAG,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAA;gBACrE,CAAC;gBACD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;oBAChB,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,SAAsC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;gBACvF,CAAC;gBACD,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;oBAC3B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;gBAC9B,CAAC,CAAC,CAAA;YACJ,CAAC;SACF,CAAA;IACH,CAAC;CACF;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,IAAY,EAAkB,EAAE,CAAC,CAAC;IAClE,IAAI,EAAE,MAAM;IACZ,UAAU,EAAE,EAAE;IACd,OAAO,EAAE;QACP,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;KAClC;IACD,kBAAkB,EAAE,IAAI;CACzB,CAAC,CAAA"}
1
+ {"version":3,"file":"MessageQueue.js","sourceRoot":"","sources":["../../src/lib/MessageQueue.ts"],"names":[],"mappings":"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"}