@prestyj/cli 4.2.56 → 4.2.75

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 (195) hide show
  1. package/README.md +1 -1
  2. package/dist/cli.js +4 -4
  3. package/dist/cli.js.map +1 -1
  4. package/dist/config.d.ts +1 -0
  5. package/dist/config.d.ts.map +1 -1
  6. package/dist/config.js +6 -5
  7. package/dist/config.js.map +1 -1
  8. package/dist/core/agent-session.d.ts.map +1 -1
  9. package/dist/core/agent-session.js +11 -0
  10. package/dist/core/agent-session.js.map +1 -1
  11. package/dist/core/compaction/compactor.d.ts +3 -1
  12. package/dist/core/compaction/compactor.d.ts.map +1 -1
  13. package/dist/core/compaction/compactor.js +28 -5
  14. package/dist/core/compaction/compactor.js.map +1 -1
  15. package/dist/core/compaction/compactor.test.js +86 -10
  16. package/dist/core/compaction/compactor.test.js.map +1 -1
  17. package/dist/core/compaction/token-estimator.test.js +1 -1
  18. package/dist/core/compaction/token-estimator.test.js.map +1 -1
  19. package/dist/core/model-registry.js +8 -8
  20. package/dist/core/model-registry.js.map +1 -1
  21. package/dist/core/settings-manager.d.ts +1 -0
  22. package/dist/core/settings-manager.d.ts.map +1 -1
  23. package/dist/core/settings-manager.js +2 -0
  24. package/dist/core/settings-manager.js.map +1 -1
  25. package/dist/core/slash-commands.d.ts.map +1 -1
  26. package/dist/core/slash-commands.js +18 -4
  27. package/dist/core/slash-commands.js.map +1 -1
  28. package/dist/core/telegram.d.ts.map +1 -1
  29. package/dist/core/telegram.js +3 -0
  30. package/dist/core/telegram.js.map +1 -1
  31. package/dist/interactive.d.ts.map +1 -1
  32. package/dist/interactive.js +1 -0
  33. package/dist/interactive.js.map +1 -1
  34. package/dist/system-prompt.d.ts.map +1 -1
  35. package/dist/system-prompt.js +21 -3
  36. package/dist/system-prompt.js.map +1 -1
  37. package/dist/tools/bash.d.ts.map +1 -1
  38. package/dist/tools/bash.js +4 -7
  39. package/dist/tools/bash.js.map +1 -1
  40. package/dist/tools/edit.d.ts.map +1 -1
  41. package/dist/tools/edit.js +4 -1
  42. package/dist/tools/edit.js.map +1 -1
  43. package/dist/tools/overflow.d.ts +6 -0
  44. package/dist/tools/overflow.d.ts.map +1 -0
  45. package/dist/tools/overflow.js +13 -0
  46. package/dist/tools/overflow.js.map +1 -0
  47. package/dist/tools/read.d.ts.map +1 -1
  48. package/dist/tools/read.js +6 -2
  49. package/dist/tools/read.js.map +1 -1
  50. package/dist/tools/truncate-utils.test.js +11 -11
  51. package/dist/tools/truncate-utils.test.js.map +1 -1
  52. package/dist/tools/truncate.d.ts +6 -4
  53. package/dist/tools/truncate.d.ts.map +1 -1
  54. package/dist/tools/truncate.js +12 -10
  55. package/dist/tools/truncate.js.map +1 -1
  56. package/dist/ui/App.d.ts +1 -0
  57. package/dist/ui/App.d.ts.map +1 -1
  58. package/dist/ui/App.js +261 -62
  59. package/dist/ui/App.js.map +1 -1
  60. package/dist/ui/buddy/Buddy.d.ts +15 -0
  61. package/dist/ui/buddy/Buddy.d.ts.map +1 -0
  62. package/dist/ui/buddy/Buddy.js +118 -0
  63. package/dist/ui/buddy/Buddy.js.map +1 -0
  64. package/dist/ui/buddy/gacha.d.ts +8 -0
  65. package/dist/ui/buddy/gacha.d.ts.map +1 -0
  66. package/dist/ui/buddy/gacha.js +94 -0
  67. package/dist/ui/buddy/gacha.js.map +1 -0
  68. package/dist/ui/buddy/species.d.ts +52 -0
  69. package/dist/ui/buddy/species.d.ts.map +1 -0
  70. package/dist/ui/buddy/species.js +257 -0
  71. package/dist/ui/buddy/species.js.map +1 -0
  72. package/dist/ui/components/ActivityIndicator.d.ts +10 -2
  73. package/dist/ui/components/ActivityIndicator.d.ts.map +1 -1
  74. package/dist/ui/components/ActivityIndicator.js +79 -22
  75. package/dist/ui/components/ActivityIndicator.js.map +1 -1
  76. package/dist/ui/components/AnimationContext.d.ts +14 -2
  77. package/dist/ui/components/AnimationContext.d.ts.map +1 -1
  78. package/dist/ui/components/AnimationContext.js +54 -8
  79. package/dist/ui/components/AnimationContext.js.map +1 -1
  80. package/dist/ui/components/AssistantMessage.d.ts +2 -1
  81. package/dist/ui/components/AssistantMessage.d.ts.map +1 -1
  82. package/dist/ui/components/AssistantMessage.js +5 -4
  83. package/dist/ui/components/AssistantMessage.js.map +1 -1
  84. package/dist/ui/components/BackgroundTasksBar.js +2 -2
  85. package/dist/ui/components/BackgroundTasksBar.js.map +1 -1
  86. package/dist/ui/components/CompactionNotice.d.ts.map +1 -1
  87. package/dist/ui/components/CompactionNotice.js +2 -1
  88. package/dist/ui/components/CompactionNotice.js.map +1 -1
  89. package/dist/ui/components/Footer.d.ts +3 -1
  90. package/dist/ui/components/Footer.d.ts.map +1 -1
  91. package/dist/ui/components/Footer.js +23 -48
  92. package/dist/ui/components/Footer.js.map +1 -1
  93. package/dist/ui/components/InputArea.d.ts.map +1 -1
  94. package/dist/ui/components/InputArea.js +2 -1
  95. package/dist/ui/components/InputArea.js.map +1 -1
  96. package/dist/ui/components/Markdown.d.ts +11 -6
  97. package/dist/ui/components/Markdown.d.ts.map +1 -1
  98. package/dist/ui/components/Markdown.js +170 -18
  99. package/dist/ui/components/Markdown.js.map +1 -1
  100. package/dist/ui/components/MessageResponse.d.ts +25 -0
  101. package/dist/ui/components/MessageResponse.d.ts.map +1 -0
  102. package/dist/ui/components/MessageResponse.js +42 -0
  103. package/dist/ui/components/MessageResponse.js.map +1 -0
  104. package/dist/ui/components/NoSelect.d.ts +20 -0
  105. package/dist/ui/components/NoSelect.d.ts.map +1 -0
  106. package/dist/ui/components/NoSelect.js +14 -0
  107. package/dist/ui/components/NoSelect.js.map +1 -0
  108. package/dist/ui/components/PlanProgress.d.ts +7 -0
  109. package/dist/ui/components/PlanProgress.d.ts.map +1 -0
  110. package/dist/ui/components/PlanProgress.js +30 -0
  111. package/dist/ui/components/PlanProgress.js.map +1 -0
  112. package/dist/ui/components/Ratchet.d.ts +20 -0
  113. package/dist/ui/components/Ratchet.d.ts.map +1 -0
  114. package/dist/ui/components/Ratchet.js +30 -0
  115. package/dist/ui/components/Ratchet.js.map +1 -0
  116. package/dist/ui/components/ServerToolExecution.d.ts.map +1 -1
  117. package/dist/ui/components/ServerToolExecution.js +5 -6
  118. package/dist/ui/components/ServerToolExecution.js.map +1 -1
  119. package/dist/ui/components/Spinner.d.ts +8 -2
  120. package/dist/ui/components/Spinner.d.ts.map +1 -1
  121. package/dist/ui/components/Spinner.js +52 -5
  122. package/dist/ui/components/Spinner.js.map +1 -1
  123. package/dist/ui/components/StreamingArea.d.ts +2 -1
  124. package/dist/ui/components/StreamingArea.d.ts.map +1 -1
  125. package/dist/ui/components/StreamingArea.js +9 -44
  126. package/dist/ui/components/StreamingArea.js.map +1 -1
  127. package/dist/ui/components/SubAgentPanel.d.ts.map +1 -1
  128. package/dist/ui/components/SubAgentPanel.js +6 -4
  129. package/dist/ui/components/SubAgentPanel.js.map +1 -1
  130. package/dist/ui/components/ThinkingBlock.d.ts +2 -1
  131. package/dist/ui/components/ThinkingBlock.d.ts.map +1 -1
  132. package/dist/ui/components/ThinkingBlock.js +2 -2
  133. package/dist/ui/components/ThinkingBlock.js.map +1 -1
  134. package/dist/ui/components/ThinkingIndicator.d.ts.map +1 -1
  135. package/dist/ui/components/ThinkingIndicator.js +2 -1
  136. package/dist/ui/components/ThinkingIndicator.js.map +1 -1
  137. package/dist/ui/components/ToolExecution.d.ts +1 -0
  138. package/dist/ui/components/ToolExecution.d.ts.map +1 -1
  139. package/dist/ui/components/ToolExecution.js +44 -15
  140. package/dist/ui/components/ToolExecution.js.map +1 -1
  141. package/dist/ui/components/ToolGroupExecution.d.ts.map +1 -1
  142. package/dist/ui/components/ToolGroupExecution.js +21 -17
  143. package/dist/ui/components/ToolGroupExecution.js.map +1 -1
  144. package/dist/ui/components/ToolUseLoader.d.ts +19 -0
  145. package/dist/ui/components/ToolUseLoader.d.ts.map +1 -0
  146. package/dist/ui/components/ToolUseLoader.js +42 -0
  147. package/dist/ui/components/ToolUseLoader.js.map +1 -0
  148. package/dist/ui/components/index.d.ts +1 -1
  149. package/dist/ui/components/index.d.ts.map +1 -1
  150. package/dist/ui/components/index.js +1 -1
  151. package/dist/ui/components/index.js.map +1 -1
  152. package/dist/ui/constants/figures.d.ts +30 -0
  153. package/dist/ui/constants/figures.d.ts.map +1 -0
  154. package/dist/ui/constants/figures.js +41 -0
  155. package/dist/ui/constants/figures.js.map +1 -0
  156. package/dist/ui/hooks/useAgentLoop.d.ts +16 -1
  157. package/dist/ui/hooks/useAgentLoop.d.ts.map +1 -1
  158. package/dist/ui/hooks/useAgentLoop.js +49 -141
  159. package/dist/ui/hooks/useAgentLoop.js.map +1 -1
  160. package/dist/ui/hooks/useBlink.d.ts +11 -0
  161. package/dist/ui/hooks/useBlink.d.ts.map +1 -0
  162. package/dist/ui/hooks/useBlink.js +19 -0
  163. package/dist/ui/hooks/useBlink.js.map +1 -0
  164. package/dist/ui/hooks/useMinDisplayTime.d.ts +11 -0
  165. package/dist/ui/hooks/useMinDisplayTime.d.ts.map +1 -0
  166. package/dist/ui/hooks/useMinDisplayTime.js +34 -0
  167. package/dist/ui/hooks/useMinDisplayTime.js.map +1 -0
  168. package/dist/ui/hooks/useTerminalProgress.d.ts +2 -0
  169. package/dist/ui/hooks/useTerminalProgress.d.ts.map +1 -0
  170. package/dist/ui/hooks/useTerminalProgress.js +98 -0
  171. package/dist/ui/hooks/useTerminalProgress.js.map +1 -0
  172. package/dist/ui/hooks/useTerminalTitle.d.ts.map +1 -1
  173. package/dist/ui/hooks/useTerminalTitle.js +2 -1
  174. package/dist/ui/hooks/useTerminalTitle.js.map +1 -1
  175. package/dist/ui/spinner-frames.d.ts +1 -0
  176. package/dist/ui/spinner-frames.d.ts.map +1 -1
  177. package/dist/ui/spinner-frames.js +15 -5
  178. package/dist/ui/spinner-frames.js.map +1 -1
  179. package/dist/ui/theme/dark.json +2 -1
  180. package/dist/ui/theme/light.json +2 -1
  181. package/dist/ui/theme/theme.d.ts +1 -0
  182. package/dist/ui/theme/theme.d.ts.map +1 -1
  183. package/dist/ui/utils/markdown-cache.d.ts +12 -0
  184. package/dist/ui/utils/markdown-cache.d.ts.map +1 -0
  185. package/dist/ui/utils/markdown-cache.js +43 -0
  186. package/dist/ui/utils/markdown-cache.js.map +1 -0
  187. package/dist/ui/utils/word-diff.d.ts +11 -0
  188. package/dist/ui/utils/word-diff.d.ts.map +1 -0
  189. package/dist/ui/utils/word-diff.js +23 -0
  190. package/dist/ui/utils/word-diff.js.map +1 -0
  191. package/dist/utils/plan-steps.d.ts +41 -0
  192. package/dist/utils/plan-steps.d.ts.map +1 -0
  193. package/dist/utils/plan-steps.js +91 -0
  194. package/dist/utils/plan-steps.js.map +1 -0
  195. package/package.json +3 -3
@@ -71,19 +71,17 @@ export function useAgentLoop(messages, options, callbacks) {
71
71
  const [thinkingMs, setThinkingMs] = useState(0);
72
72
  const [isThinking, setIsThinking] = useState(false);
73
73
  const [streamedTokenEstimate, setStreamedTokenEstimate] = useState(0);
74
+ const [retryInfo, setRetryInfo] = useState(null);
75
+ const [linesChanged, setLinesChanged] = useState({ added: 0, removed: 0 });
74
76
  const abortRef = useRef(null);
75
77
  const queueRef = useRef([]);
76
78
  const [queuedCount, setQueuedCount] = useState(0);
77
79
  const activeToolCallsRef = useRef([]);
78
- const textPendingRef = useRef("");
79
80
  const textVisibleRef = useRef("");
80
81
  const thinkingBufferRef = useRef("");
81
- const thinkingPendingRef = useRef("");
82
82
  const thinkingVisibleRef = useRef("");
83
- const thinkingRevealTimerRef = useRef(null);
84
83
  const runStartRef = useRef(0);
85
84
  const toolsUsedRef = useRef(new Set());
86
- const revealTimerRef = useRef(null);
87
85
  const phaseRef = useRef("idle");
88
86
  const thinkingStartRef = useRef(null);
89
87
  const thinkingAccumRef = useRef(0);
@@ -91,110 +89,6 @@ export function useAgentLoop(messages, options, callbacks) {
91
89
  const realTokensAccumRef = useRef(0);
92
90
  const elapsedTimerRef = useRef(null);
93
91
  const doneCalledRef = useRef(false);
94
- const stopReveal = useCallback(() => {
95
- if (revealTimerRef.current) {
96
- clearInterval(revealTimerRef.current);
97
- revealTimerRef.current = null;
98
- }
99
- }, []);
100
- const emptyTicksRef = useRef(0);
101
- const startReveal = useCallback(() => {
102
- if (revealTimerRef.current)
103
- return;
104
- emptyTicksRef.current = 0;
105
- revealTimerRef.current = setInterval(() => {
106
- const pending = textPendingRef.current;
107
- if (pending.length === 0) {
108
- // Auto-stop after 3 empty ticks to avoid unnecessary re-renders
109
- emptyTicksRef.current++;
110
- if (emptyTicksRef.current >= 3) {
111
- stopReveal();
112
- }
113
- return;
114
- }
115
- emptyTicksRef.current = 0;
116
- // Adaptive speed: continuous interpolation prevents jarring speed
117
- // jumps at tier boundaries. Clamped to [12, 180] chars/tick at
118
- // 33ms (~30fps) to balance smoothness vs catch-up speed.
119
- const buffered = pending.length;
120
- const charsPerTick = Math.max(12, Math.min(180, Math.ceil(buffered * 0.35)));
121
- // Snap to a word boundary when possible so partial words don't
122
- // flash on screen. Look back up to 20 chars for a natural break.
123
- let endIndex = Math.min(charsPerTick, buffered);
124
- if (endIndex < buffered) {
125
- const breakChars = " \n.,;:`')]}>";
126
- for (let i = endIndex; i >= Math.max(1, endIndex - 20); i--) {
127
- if (breakChars.includes(pending[i])) {
128
- endIndex = i + 1;
129
- break;
130
- }
131
- }
132
- }
133
- const reveal = pending.slice(0, endIndex);
134
- textPendingRef.current = pending.slice(endIndex);
135
- textVisibleRef.current += reveal;
136
- setStreamingText(textVisibleRef.current);
137
- }, 33);
138
- }, [stopReveal]);
139
- // ── Thinking reveal (throttled like text reveal) ──────────
140
- // Without this, every thinking_delta event triggers setStreamingThinking
141
- // immediately, causing rapid live-area height changes as text wraps to
142
- // new lines — which makes Ink's cursor math misalign and the viewport jump.
143
- const thinkingEmptyTicksRef = useRef(0);
144
- const stopThinkingReveal = useCallback(() => {
145
- if (thinkingRevealTimerRef.current) {
146
- clearInterval(thinkingRevealTimerRef.current);
147
- thinkingRevealTimerRef.current = null;
148
- }
149
- }, []);
150
- const startThinkingReveal = useCallback(() => {
151
- if (thinkingRevealTimerRef.current)
152
- return;
153
- thinkingEmptyTicksRef.current = 0;
154
- thinkingRevealTimerRef.current = setInterval(() => {
155
- const pending = thinkingPendingRef.current;
156
- if (pending.length === 0) {
157
- thinkingEmptyTicksRef.current++;
158
- if (thinkingEmptyTicksRef.current >= 3) {
159
- stopThinkingReveal();
160
- }
161
- return;
162
- }
163
- thinkingEmptyTicksRef.current = 0;
164
- // Larger chunks than text reveal — thinking text is dimmed/secondary
165
- // so smooth animation matters less than keeping re-renders low.
166
- const buffered = pending.length;
167
- const charsPerTick = Math.max(20, Math.min(300, Math.ceil(buffered * 0.4)));
168
- let endIndex = Math.min(charsPerTick, buffered);
169
- if (endIndex < buffered) {
170
- const breakChars = " \n.,;:`')]}>";
171
- for (let i = endIndex; i >= Math.max(1, endIndex - 20); i--) {
172
- if (breakChars.includes(pending[i])) {
173
- endIndex = i + 1;
174
- break;
175
- }
176
- }
177
- }
178
- const reveal = pending.slice(0, endIndex);
179
- thinkingPendingRef.current = pending.slice(endIndex);
180
- thinkingVisibleRef.current += reveal;
181
- setStreamingThinking(thinkingVisibleRef.current);
182
- }, 33);
183
- }, [stopThinkingReveal]);
184
- const flushAllText = useCallback(() => {
185
- stopReveal();
186
- stopThinkingReveal();
187
- if (textPendingRef.current.length > 0) {
188
- textVisibleRef.current += textPendingRef.current;
189
- textPendingRef.current = "";
190
- }
191
- if (thinkingPendingRef.current.length > 0) {
192
- thinkingVisibleRef.current += thinkingPendingRef.current;
193
- thinkingPendingRef.current = "";
194
- }
195
- setStreamingText(textVisibleRef.current);
196
- setStreamingThinking(thinkingVisibleRef.current);
197
- }, [stopReveal, stopThinkingReveal]);
198
92
  const abort = useCallback(() => {
199
93
  abortRef.current?.abort();
200
94
  }, []);
@@ -229,10 +123,8 @@ export function useAgentLoop(messages, options, callbacks) {
229
123
  let wasAborted = false;
230
124
  // Reset state
231
125
  doneCalledRef.current = false;
232
- textPendingRef.current = "";
233
126
  textVisibleRef.current = "";
234
127
  thinkingBufferRef.current = "";
235
- thinkingPendingRef.current = "";
236
128
  thinkingVisibleRef.current = "";
237
129
  runStartRef.current = Date.now();
238
130
  toolsUsedRef.current = new Set();
@@ -311,27 +203,32 @@ export function useAgentLoop(messages, options, callbacks) {
311
203
  onQueuedStart?.(merged);
312
204
  return [{ role: "user", content: merged }];
313
205
  },
206
+ clearToolUses: options.provider === "anthropic",
314
207
  });
315
208
  for await (const event of generator) {
316
209
  switch (event.type) {
317
210
  case "text_delta":
318
- textPendingRef.current += event.text;
211
+ textVisibleRef.current += event.text;
319
212
  charCountRef.current += event.text.length;
320
- startReveal();
213
+ setStreamingText(textVisibleRef.current);
321
214
  if (phaseRef.current !== "generating") {
322
215
  freezeThinking();
216
+ if (phaseRef.current === "retrying")
217
+ setRetryInfo(null);
323
218
  phaseRef.current = "generating";
324
219
  setActivityPhase("generating");
325
220
  }
326
221
  break;
327
222
  case "thinking_delta":
328
223
  thinkingBufferRef.current += event.text;
329
- thinkingPendingRef.current += event.text;
224
+ thinkingVisibleRef.current += event.text;
330
225
  charCountRef.current += event.text.length;
331
- startThinkingReveal();
226
+ setStreamingThinking(thinkingVisibleRef.current);
332
227
  if (phaseRef.current !== "thinking") {
333
228
  thinkingStartRef.current = Date.now();
334
229
  setIsThinking(true);
230
+ if (phaseRef.current === "retrying")
231
+ setRetryInfo(null);
335
232
  phaseRef.current = "thinking";
336
233
  setActivityPhase("thinking");
337
234
  }
@@ -377,6 +274,18 @@ export function useAgentLoop(messages, options, callbacks) {
377
274
  const toolName = tc?.name ?? "unknown";
378
275
  const durationMs = tc ? Date.now() - tc.startTime : 0;
379
276
  onToolEnd?.(event.toolCallId, toolName, event.result, event.isError, durationMs, event.details);
277
+ // Track lines changed for edit tools
278
+ if (toolName === "edit" && !event.isError) {
279
+ const diff = event.details?.diff ?? event.result;
280
+ const addedLines = (diff.match(/^\+[^+]/gm) ?? []).length;
281
+ const removedLines = (diff.match(/^-[^-]/gm) ?? []).length;
282
+ if (addedLines > 0 || removedLines > 0) {
283
+ setLinesChanged((prev) => ({
284
+ added: prev.added + addedLines,
285
+ removed: prev.removed + removedLines,
286
+ }));
287
+ }
288
+ }
380
289
  activeToolCallsRef.current = activeToolCallsRef.current.filter((t) => t.toolCallId !== event.toolCallId);
381
290
  setActiveToolCalls(activeToolCallsRef.current);
382
291
  break;
@@ -391,19 +300,33 @@ export function useAgentLoop(messages, options, callbacks) {
391
300
  // Steering message was injected — UI already notified via
392
301
  // onQueuedStart inside getSteeringMessages callback.
393
302
  break;
394
- case "turn_end":
303
+ case "retry":
304
+ phaseRef.current = "retrying";
305
+ setActivityPhase("retrying");
306
+ setRetryInfo({
307
+ reason: event.reason,
308
+ attempt: event.attempt,
309
+ maxAttempts: event.maxAttempts,
310
+ delayMs: event.delayMs,
311
+ });
312
+ break;
313
+ case "turn_end": {
314
+ setRetryInfo(null);
395
315
  onTurnEnd?.(event.turn, event.stopReason, event.usage);
396
316
  setCurrentTurn(event.turn);
397
317
  setTotalTokens((prev) => ({
398
318
  input: prev.input + event.usage.inputTokens,
399
319
  output: prev.output + event.usage.outputTokens,
400
320
  }));
401
- // Latest turn's input tokens = current context window fill
402
- // With prompt caching, input_tokens only counts non-cached tokens.
403
- // Total context = input + cache_read + cache_write.
404
- setContextUsed(event.usage.inputTokens +
321
+ // Total input context = uncached + cache_read + cache_write.
322
+ // Anthropic has separate input/output limits, so only count input.
323
+ // OpenAI/GLM/Moonshot share the context window, so include output.
324
+ const inputContext = event.usage.inputTokens +
405
325
  (event.usage.cacheRead ?? 0) +
406
- (event.usage.cacheWrite ?? 0));
326
+ (event.usage.cacheWrite ?? 0);
327
+ setContextUsed(options.provider === "anthropic"
328
+ ? inputContext
329
+ : inputContext + event.usage.outputTokens);
407
330
  // Replace char-based estimate with real output tokens
408
331
  realTokensAccumRef.current += event.usage.outputTokens;
409
332
  charCountRef.current = 0;
@@ -411,22 +334,18 @@ export function useAgentLoop(messages, options, callbacks) {
411
334
  // Reset phase for next turn
412
335
  phaseRef.current = "waiting";
413
336
  setActivityPhase("waiting");
414
- // Flush all pending text before completing turn
415
- flushAllText();
416
337
  if (textVisibleRef.current) {
417
338
  onTurnText?.(textVisibleRef.current, thinkingBufferRef.current, thinkingAccumRef.current);
418
339
  }
419
340
  // Reset streaming buffers for next turn
420
- textPendingRef.current = "";
421
341
  textVisibleRef.current = "";
422
342
  thinkingBufferRef.current = "";
423
- thinkingPendingRef.current = "";
424
343
  thinkingVisibleRef.current = "";
425
344
  setStreamingText("");
426
345
  setStreamingThinking("");
427
346
  break;
347
+ }
428
348
  case "agent_done":
429
- flushAllText();
430
349
  // Batch ALL completion state into a single render so Ink
431
350
  // processes the live-area change atomically. Previously
432
351
  // isRunning, activityPhase, and onDone landed in separate
@@ -459,8 +378,6 @@ export function useAgentLoop(messages, options, callbacks) {
459
378
  }
460
379
  setIsRunning(false);
461
380
  abortRef.current = null;
462
- stopReveal();
463
- stopThinkingReveal();
464
381
  if (elapsedTimerRef.current) {
465
382
  clearInterval(elapsedTimerRef.current);
466
383
  elapsedTimerRef.current = null;
@@ -468,17 +385,11 @@ export function useAgentLoop(messages, options, callbacks) {
468
385
  phaseRef.current = "idle";
469
386
  setActivityPhase("idle");
470
387
  if (wasAborted) {
471
- // Flush any visible streaming text so onAborted (which adds
472
- // "Request was stopped.") lands AFTER the agent's partial text
473
- // in liveItems — not above it.
474
- flushAllText();
475
388
  if (textVisibleRef.current) {
476
389
  onTurnText?.(textVisibleRef.current, thinkingBufferRef.current, thinkingAccumRef.current);
477
390
  }
478
- textPendingRef.current = "";
479
391
  textVisibleRef.current = "";
480
392
  thinkingBufferRef.current = "";
481
- thinkingPendingRef.current = "";
482
393
  thinkingVisibleRef.current = "";
483
394
  setStreamingText("");
484
395
  setStreamingThinking("");
@@ -524,24 +435,17 @@ export function useAgentLoop(messages, options, callbacks) {
524
435
  onDone,
525
436
  onAborted,
526
437
  onQueuedStart,
527
- startReveal,
528
- stopReveal,
529
- startThinkingReveal,
530
- stopThinkingReveal,
531
- flushAllText,
532
438
  ]);
533
439
  // Cleanup on unmount
534
440
  useEffect(() => {
535
441
  return () => {
536
- stopReveal();
537
- stopThinkingReveal();
538
442
  abortRef.current?.abort();
539
443
  if (elapsedTimerRef.current) {
540
444
  clearInterval(elapsedTimerRef.current);
541
445
  elapsedTimerRef.current = null;
542
446
  }
543
447
  };
544
- }, [stopReveal, stopThinkingReveal]);
448
+ }, []);
545
449
  return {
546
450
  run,
547
451
  abort,
@@ -557,10 +461,14 @@ export function useAgentLoop(messages, options, callbacks) {
557
461
  totalTokens,
558
462
  contextUsed,
559
463
  activityPhase,
464
+ retryInfo,
560
465
  elapsedMs,
561
466
  thinkingMs,
562
467
  isThinking,
563
468
  streamedTokenEstimate,
469
+ charCountRef,
470
+ realTokensAccumRef,
471
+ linesChanged,
564
472
  };
565
473
  }
566
474
  //# sourceMappingURL=useAgentLoop.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useAgentLoop.js","sourceRoot":"","sources":["../../../src/ui/hooks/useAgentLoop.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useAgentLoop.js","sourceRoot":"","sources":["../../../src/ui/hooks/useAgentLoop.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACjE,OAAO,EAAE,SAAS,EAAmC,MAAM,gBAAgB,CAAC;AAG5E,sEAAsE;AACtE,SAAS,cAAc,CAAC,IAAe;IACrC,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;YACpC,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC;QAC9B,CAAC;aAAM,CAAC;YACN,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;gBAChC,IAAI,MAAM,IAAI,KAAK,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ;oBAAE,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;gBAClF,IAAI,SAAS,IAAI,KAAK,IAAI,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ;oBAAE,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;gBAC3F,IAAI,MAAM,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI;oBAAE,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;gBAC9E,IAAI,OAAO,IAAI,KAAK,IAAI,KAAK,CAAC,KAAK;oBAAE,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;YACnF,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;AAC/B,CAAC;AAED;;;;GAIG;AACH,SAAS,gBAAgB,CAAC,KAAoB;IAC5C,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;IAExC,MAAM,eAAe,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5D,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,6CAA6C;QAC7C,OAAQ,KAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC;IAED,sCAAsC;IACtC,MAAM,KAAK,GAAmC,EAAE,CAAC;IACjD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7B,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3C,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAsED,MAAM,UAAU,YAAY,CAC1B,QAA2C,EAC3C,OAAyB,EACzB,SA6BC;IAED,MAAM,UAAU,GAAG,SAAS,EAAE,UAAU,CAAC;IACzC,MAAM,UAAU,GAAG,SAAS,EAAE,UAAU,CAAC;IACzC,MAAM,WAAW,GAAG,SAAS,EAAE,WAAW,CAAC;IAC3C,MAAM,YAAY,GAAG,SAAS,EAAE,YAAY,CAAC;IAC7C,MAAM,SAAS,GAAG,SAAS,EAAE,SAAS,CAAC;IACvC,MAAM,gBAAgB,GAAG,SAAS,EAAE,gBAAgB,CAAC;IACrD,MAAM,kBAAkB,GAAG,SAAS,EAAE,kBAAkB,CAAC;IACzD,MAAM,SAAS,GAAG,SAAS,EAAE,SAAS,CAAC;IACvC,MAAM,MAAM,GAAG,SAAS,EAAE,MAAM,CAAC;IACjC,MAAM,SAAS,GAAG,SAAS,EAAE,SAAS,CAAC;IACvC,MAAM,aAAa,GAAG,SAAS,EAAE,aAAa,CAAC;IAC/C,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAClD,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IACvD,MAAM,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC/D,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,QAAQ,CAAmB,EAAE,CAAC,CAAC;IAC7E,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAClD,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;IACxE,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;IACvF,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAAgB,MAAM,CAAC,CAAC;IAC1E,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC9C,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAChD,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACpD,MAAM,CAAC,qBAAqB,EAAE,wBAAwB,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IACtE,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAmB,IAAI,CAAC,CAAC;IACnE,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;IAE3E,MAAM,QAAQ,GAAG,MAAM,CAAyB,IAAI,CAAC,CAAC;IACtD,MAAM,QAAQ,GAAG,MAAM,CAAgB,EAAE,CAAC,CAAC;IAC3C,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAClD,MAAM,kBAAkB,GAAG,MAAM,CAAmB,EAAE,CAAC,CAAC;IACxD,MAAM,cAAc,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;IAClC,MAAM,iBAAiB,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;IACrC,MAAM,kBAAkB,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;IACtC,MAAM,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IAC9B,MAAM,YAAY,GAAG,MAAM,CAAc,IAAI,GAAG,EAAE,CAAC,CAAC;IACpD,MAAM,QAAQ,GAAG,MAAM,CAAgB,MAAM,CAAC,CAAC;IAC/C,MAAM,gBAAgB,GAAG,MAAM,CAAgB,IAAI,CAAC,CAAC;IACrD,MAAM,gBAAgB,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACnC,MAAM,YAAY,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IAC/B,MAAM,kBAAkB,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACrC,MAAM,eAAe,GAAG,MAAM,CAAwC,IAAI,CAAC,CAAC;IAC5E,MAAM,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAEpC,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;QAC7B,QAAQ,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC;IAC5B,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;QAC7B,cAAc,CAAC,CAAC,CAAC,CAAC;QAClB,cAAc,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;QACxC,cAAc,CAAC,CAAC,CAAC,CAAC;QAClB,gBAAgB,CAAC,EAAE,CAAC,CAAC;QACrB,oBAAoB,CAAC,EAAE,CAAC,CAAC;QACzB,kBAAkB,CAAC,EAAE,CAAC,CAAC;QACvB,gBAAgB,CAAC,MAAM,CAAC,CAAC;QACzB,YAAY,CAAC,CAAC,CAAC,CAAC;QAChB,aAAa,CAAC,CAAC,CAAC,CAAC;QACjB,aAAa,CAAC,KAAK,CAAC,CAAC;QACrB,wBAAwB,CAAC,CAAC,CAAC,CAAC;QAC5B,QAAQ,CAAC,OAAO,GAAG,EAAE,CAAC;QACtB,cAAc,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,YAAY,GAAG,WAAW,CAAC,CAAC,OAAoB,EAAE,EAAE;QACxD,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC/B,cAAc,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC1C,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE;QAClC,QAAQ,CAAC,OAAO,GAAG,EAAE,CAAC;QACtB,cAAc,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,GAAG,GAAG,WAAW,CACrB,KAAK,EAAE,WAAwB,EAAE,EAAE;QACjC,iFAAiF;QACjF,MAAM,SAAS,GAAG,KAAK,EAAE,OAAoB,EAAoB,EAAE;YACjE,MAAM,EAAE,GAAG,IAAI,eAAe,EAAE,CAAC;YACjC,QAAQ,CAAC,OAAO,GAAG,EAAE,CAAC;YACtB,IAAI,UAAU,GAAG,KAAK,CAAC;YAEvB,cAAc;YACd,aAAa,CAAC,OAAO,GAAG,KAAK,CAAC;YAC9B,cAAc,CAAC,OAAO,GAAG,EAAE,CAAC;YAC5B,iBAAiB,CAAC,OAAO,GAAG,EAAE,CAAC;YAC/B,kBAAkB,CAAC,OAAO,GAAG,EAAE,CAAC;YAChC,WAAW,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACjC,YAAY,CAAC,OAAO,GAAG,IAAI,GAAG,EAAE,CAAC;YACjC,YAAY,CAAC,OAAO,GAAG,CAAC,CAAC;YACzB,kBAAkB,CAAC,OAAO,GAAG,CAAC,CAAC;YAC/B,gBAAgB,CAAC,OAAO,GAAG,CAAC,CAAC;YAC7B,gBAAgB,CAAC,OAAO,GAAG,IAAI,CAAC;YAChC,QAAQ,CAAC,OAAO,GAAG,SAAS,CAAC;YAC7B,gBAAgB,CAAC,EAAE,CAAC,CAAC;YACrB,oBAAoB,CAAC,EAAE,CAAC,CAAC;YACzB,kBAAkB,CAAC,EAAE,CAAC,CAAC;YACvB,gBAAgB,CAAC,SAAS,CAAC,CAAC;YAC5B,YAAY,CAAC,CAAC,CAAC,CAAC;YAChB,aAAa,CAAC,CAAC,CAAC,CAAC;YACjB,aAAa,CAAC,KAAK,CAAC,CAAC;YACrB,wBAAwB,CAAC,CAAC,CAAC,CAAC;YAC5B,YAAY,CAAC,IAAI,CAAC,CAAC;YAEnB,oEAAoE;YACpE,yEAAyE;YACzE,IAAI,eAAe,CAAC,OAAO;gBAAE,aAAa,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;YACpE,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAC9B,eAAe,CAAC,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE;gBACzC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBACvB,YAAY,CAAC,GAAG,GAAG,UAAU,CAAC,CAAC;gBAC/B,kDAAkD;gBAClD,IAAI,gBAAgB,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;oBACtC,aAAa,CAAC,gBAAgB,CAAC,OAAO,GAAG,CAAC,GAAG,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC;gBAC7E,CAAC;gBACD,wBAAwB;gBACxB,wBAAwB,CACtB,kBAAkB,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,GAAG,CAAC,CAAC,CACjE,CAAC;YACJ,CAAC,EAAE,IAAI,CAAC,CAAC;YAET,0DAA0D;YAC1D,MAAM,cAAc,GAAG,GAAG,EAAE;gBAC1B,IAAI,gBAAgB,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;oBACtC,gBAAgB,CAAC,OAAO,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,gBAAgB,CAAC,OAAO,CAAC;oBAClE,gBAAgB,CAAC,OAAO,GAAG,IAAI,CAAC;oBAChC,aAAa,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;oBACxC,aAAa,CAAC,KAAK,CAAC,CAAC;gBACvB,CAAC;YACH,CAAC,CAAC;YAEF,oBAAoB;YACpB,MAAM,OAAO,GAAY,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;YAC5D,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC/B,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC;YAE3C,IAAI,CAAC;gBACH,0DAA0D;gBAC1D,IAAI,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;gBAC5B,IAAI,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;gBAClC,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC;oBAC/B,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,kBAAkB,EAAE,CAAC;oBACjD,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;oBACtB,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;gBAC9B,CAAC;gBAED,MAAM,SAAS,GAAG,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE;oBAC5C,QAAQ,EAAE,OAAO,CAAC,QAAQ;oBAC1B,KAAK,EAAE,OAAO,CAAC,KAAK;oBACpB,KAAK,EAAE,OAAO,CAAC,KAAK;oBACpB,SAAS,EAAE,OAAO,CAAC,SAAS;oBAC5B,SAAS,EAAE,OAAO,CAAC,SAAS;oBAC5B,QAAQ,EAAE,OAAO,CAAC,QAAQ;oBAC1B,MAAM;oBACN,OAAO,EAAE,OAAO,CAAC,OAAO;oBACxB,SAAS;oBACT,MAAM,EAAE,EAAE,CAAC,MAAM;oBACjB,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;oBAC1C,kEAAkE;oBAClE,iEAAiE;oBACjE,wDAAwD;oBACxD,mBAAmB,EAAE,GAAG,EAAE;wBACxB,IAAI,QAAQ,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;4BAAE,OAAO,IAAI,CAAC;wBAC/C,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;wBACzC,cAAc,CAAC,CAAC,CAAC,CAAC;wBAClB,MAAM,MAAM,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;wBACvC,aAAa,EAAE,CAAC,MAAM,CAAC,CAAC;wBACxB,OAAO,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;oBACtD,CAAC;oBACD,aAAa,EAAE,OAAO,CAAC,QAAQ,KAAK,WAAW;iBAChD,CAAC,CAAC;gBAEH,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,SAAsC,EAAE,CAAC;oBACjE,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;wBACnB,KAAK,YAAY;4BACf,cAAc,CAAC,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC;4BACrC,YAAY,CAAC,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;4BAC1C,gBAAgB,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;4BACzC,IAAI,QAAQ,CAAC,OAAO,KAAK,YAAY,EAAE,CAAC;gCACtC,cAAc,EAAE,CAAC;gCACjB,IAAI,QAAQ,CAAC,OAAO,KAAK,UAAU;oCAAE,YAAY,CAAC,IAAI,CAAC,CAAC;gCACxD,QAAQ,CAAC,OAAO,GAAG,YAAY,CAAC;gCAChC,gBAAgB,CAAC,YAAY,CAAC,CAAC;4BACjC,CAAC;4BACD,MAAM;wBAER,KAAK,gBAAgB;4BACnB,iBAAiB,CAAC,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC;4BACxC,kBAAkB,CAAC,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC;4BACzC,YAAY,CAAC,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;4BAC1C,oBAAoB,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;4BACjD,IAAI,QAAQ,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;gCACpC,gBAAgB,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gCACtC,aAAa,CAAC,IAAI,CAAC,CAAC;gCACpB,IAAI,QAAQ,CAAC,OAAO,KAAK,UAAU;oCAAE,YAAY,CAAC,IAAI,CAAC,CAAC;gCACxD,QAAQ,CAAC,OAAO,GAAG,UAAU,CAAC;gCAC9B,gBAAgB,CAAC,UAAU,CAAC,CAAC;4BAC/B,CAAC;4BACD,MAAM;wBAER,KAAK,iBAAiB,CAAC,CAAC,CAAC;4BACvB,cAAc,EAAE,CAAC;4BACjB,IAAI,QAAQ,CAAC,OAAO,KAAK,OAAO,EAAE,CAAC;gCACjC,QAAQ,CAAC,OAAO,GAAG,OAAO,CAAC;gCAC3B,gBAAgB,CAAC,OAAO,CAAC,CAAC;4BAC5B,CAAC;4BACD,MAAM,KAAK,GAAmB;gCAC5B,UAAU,EAAE,KAAK,CAAC,UAAU;gCAC5B,IAAI,EAAE,KAAK,CAAC,IAAI;gCAChB,IAAI,EAAE,KAAK,CAAC,IAAI;gCAChB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;gCACrB,OAAO,EAAE,EAAE;6BACZ,CAAC;4BACF,WAAW,EAAE,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;4BACxD,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;4BACrC,kBAAkB,CAAC,OAAO,GAAG,CAAC,GAAG,kBAAkB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;4BACpE,kBAAkB,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;4BAC/C,MAAM;wBACR,CAAC;wBAED,KAAK,kBAAkB,CAAC,CAAC,CAAC;4BACxB,YAAY,EAAE,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;4BAC/C,6DAA6D;4BAC7D,6DAA6D;4BAC7D,iEAAiE;4BACjE,sCAAsC;4BACtC,MAAM,MAAM,GAAG,kBAAkB,CAAC,OAAO,CAAC,IAAI,CAC5C,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,UAAU,KAAK,KAAK,CAAC,UAAU,CAC3C,CAAC;4BACF,IAAI,MAAM,EAAE,CAAC;gCACX,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC;oCAChC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;gCACzB,CAAC;gCACD,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;4BACpC,CAAC;4BACD,8DAA8D;4BAC9D,kBAAkB,CAAC,CAAC,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC;4BACpD,MAAM;wBACR,CAAC;wBAED,KAAK,eAAe,CAAC,CAAC,CAAC;4BACrB,MAAM,EAAE,GAAG,kBAAkB,CAAC,OAAO,CAAC,IAAI,CACxC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,KAAK,CAAC,UAAU,CACzC,CAAC;4BACF,MAAM,QAAQ,GAAG,EAAE,EAAE,IAAI,IAAI,SAAS,CAAC;4BACvC,MAAM,UAAU,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;4BACtD,SAAS,EAAE,CACT,KAAK,CAAC,UAAU,EAChB,QAAQ,EACR,KAAK,CAAC,MAAM,EACZ,KAAK,CAAC,OAAO,EACb,UAAU,EACV,KAAK,CAAC,OAAO,CACd,CAAC;4BACF,qCAAqC;4BACrC,IAAI,QAAQ,KAAK,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;gCAC1C,MAAM,IAAI,GACP,KAAK,CAAC,OAAyC,EAAE,IAAI,IAAI,KAAK,CAAC,MAAM,CAAC;gCACzE,MAAM,UAAU,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;gCAC1D,MAAM,YAAY,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;gCAC3D,IAAI,UAAU,GAAG,CAAC,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;oCACvC,eAAe,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;wCACzB,KAAK,EAAE,IAAI,CAAC,KAAK,GAAG,UAAU;wCAC9B,OAAO,EAAE,IAAI,CAAC,OAAO,GAAG,YAAY;qCACrC,CAAC,CAAC,CAAC;gCACN,CAAC;4BACH,CAAC;4BACD,kBAAkB,CAAC,OAAO,GAAG,kBAAkB,CAAC,OAAO,CAAC,MAAM,CAC5D,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,KAAK,CAAC,UAAU,CACzC,CAAC;4BACF,kBAAkB,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;4BAC/C,MAAM;wBACR,CAAC;wBAED,KAAK,kBAAkB;4BACrB,gBAAgB,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;4BACtD,MAAM;wBAER,KAAK,oBAAoB;4BACvB,kBAAkB,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;4BACpE,MAAM;wBAER,KAAK,kBAAkB;4BACrB,0DAA0D;4BAC1D,qDAAqD;4BACrD,MAAM;wBAER,KAAK,OAAO;4BACV,QAAQ,CAAC,OAAO,GAAG,UAAU,CAAC;4BAC9B,gBAAgB,CAAC,UAAU,CAAC,CAAC;4BAC7B,YAAY,CAAC;gCACX,MAAM,EAAE,KAAK,CAAC,MAAM;gCACpB,OAAO,EAAE,KAAK,CAAC,OAAO;gCACtB,WAAW,EAAE,KAAK,CAAC,WAAW;gCAC9B,OAAO,EAAE,KAAK,CAAC,OAAO;6BACvB,CAAC,CAAC;4BACH,MAAM;wBAER,KAAK,UAAU,CAAC,CAAC,CAAC;4BAChB,YAAY,CAAC,IAAI,CAAC,CAAC;4BACnB,SAAS,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;4BACvD,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;4BAC3B,cAAc,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gCACxB,KAAK,EAAE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,WAAW;gCAC3C,MAAM,EAAE,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,YAAY;6BAC/C,CAAC,CAAC,CAAC;4BACJ,6DAA6D;4BAC7D,mEAAmE;4BACnE,mEAAmE;4BACnE,MAAM,YAAY,GAChB,KAAK,CAAC,KAAK,CAAC,WAAW;gCACvB,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,CAAC;gCAC5B,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC;4BAChC,cAAc,CACZ,OAAO,CAAC,QAAQ,KAAK,WAAW;gCAC9B,CAAC,CAAC,YAAY;gCACd,CAAC,CAAC,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,YAAY,CAC5C,CAAC;4BACF,sDAAsD;4BACtD,kBAAkB,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC;4BACvD,YAAY,CAAC,OAAO,GAAG,CAAC,CAAC;4BACzB,wBAAwB,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;4BACrD,4BAA4B;4BAC5B,QAAQ,CAAC,OAAO,GAAG,SAAS,CAAC;4BAC7B,gBAAgB,CAAC,SAAS,CAAC,CAAC;4BAC5B,IAAI,cAAc,CAAC,OAAO,EAAE,CAAC;gCAC3B,UAAU,EAAE,CACV,cAAc,CAAC,OAAO,EACtB,iBAAiB,CAAC,OAAO,EACzB,gBAAgB,CAAC,OAAO,CACzB,CAAC;4BACJ,CAAC;4BACD,wCAAwC;4BACxC,cAAc,CAAC,OAAO,GAAG,EAAE,CAAC;4BAC5B,iBAAiB,CAAC,OAAO,GAAG,EAAE,CAAC;4BAC/B,kBAAkB,CAAC,OAAO,GAAG,EAAE,CAAC;4BAChC,gBAAgB,CAAC,EAAE,CAAC,CAAC;4BACrB,oBAAoB,CAAC,EAAE,CAAC,CAAC;4BACzB,MAAM;wBACR,CAAC;wBAED,KAAK,YAAY;4BACf,yDAAyD;4BACzD,yDAAyD;4BACzD,0DAA0D;4BAC1D,4DAA4D;4BAC5D,uDAAuD;4BACvD,YAAY,CAAC,KAAK,CAAC,CAAC;4BACpB,QAAQ,CAAC,OAAO,GAAG,MAAM,CAAC;4BAC1B,gBAAgB,CAAC,MAAM,CAAC,CAAC;4BACzB,yDAAyD;4BACzD,0DAA0D;4BAC1D,MAAM,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,WAAW,CAAC,OAAO,EAAE,CAAC,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;4BACtE,aAAa,CAAC,OAAO,GAAG,IAAI,CAAC;4BAC7B,MAAM;oBACV,CAAC;gBACH,CAAC;YACH,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,OAAO,GACX,GAAG,YAAY,KAAK,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,YAAY,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;gBACzF,IAAI,CAAC,OAAO,EAAE,CAAC;oBACb,MAAM,GAAG,CAAC;gBACZ,CAAC;gBACD,UAAU,GAAG,IAAI,CAAC;YACpB,CAAC;oBAAS,CAAC;gBACT,+DAA+D;gBAC/D,mEAAmE;gBACnE,mEAAmE;gBACnE,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;oBACrC,UAAU,GAAG,IAAI,CAAC;gBACpB,CAAC;gBACD,YAAY,CAAC,KAAK,CAAC,CAAC;gBACpB,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC;gBACxB,IAAI,eAAe,CAAC,OAAO,EAAE,CAAC;oBAC5B,aAAa,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;oBACvC,eAAe,CAAC,OAAO,GAAG,IAAI,CAAC;gBACjC,CAAC;gBACD,QAAQ,CAAC,OAAO,GAAG,MAAM,CAAC;gBAC1B,gBAAgB,CAAC,MAAM,CAAC,CAAC;gBAEzB,IAAI,UAAU,EAAE,CAAC;oBACf,IAAI,cAAc,CAAC,OAAO,EAAE,CAAC;wBAC3B,UAAU,EAAE,CACV,cAAc,CAAC,OAAO,EACtB,iBAAiB,CAAC,OAAO,EACzB,gBAAgB,CAAC,OAAO,CACzB,CAAC;oBACJ,CAAC;oBACD,cAAc,CAAC,OAAO,GAAG,EAAE,CAAC;oBAC5B,iBAAiB,CAAC,OAAO,GAAG,EAAE,CAAC;oBAC/B,kBAAkB,CAAC,OAAO,GAAG,EAAE,CAAC;oBAChC,gBAAgB,CAAC,EAAE,CAAC,CAAC;oBACrB,oBAAoB,CAAC,EAAE,CAAC,CAAC;oBACzB,SAAS,EAAE,EAAE,CAAC;gBAChB,CAAC;qBAAM,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;oBAClC,6DAA6D;oBAC7D,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,WAAW,CAAC,OAAO,CAAC;oBACpD,MAAM,EAAE,CAAC,UAAU,EAAE,CAAC,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;gBAClD,CAAC;gBAED,gCAAgC;gBAChC,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;gBACnD,UAAU,EAAE,CAAC,OAAO,CAAC,CAAC;YACxB,CAAC;YACD,OAAO,UAAU,CAAC;QACpB,CAAC,CAAC,CAAC,gBAAgB;QAEnB,0BAA0B;QAC1B,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,WAAW,CAAC,CAAC;QAE7C,6EAA6E;QAC7E,yEAAyE;QACzE,uEAAuE;QACvE,sEAAsE;QACtE,IAAI,CAAC,OAAO,IAAI,QAAQ,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5C,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACzC,cAAc,CAAC,CAAC,CAAC,CAAC;YAClB,MAAM,MAAM,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;YACvC,sEAAsE;YACtE,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;YAC7C,aAAa,EAAE,CAAC,MAAM,CAAC,CAAC;YACxB,MAAM,SAAS,CAAC,MAAM,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC,EACD;QACE,QAAQ;QACR,OAAO;QACP,UAAU;QACV,UAAU;QACV,WAAW;QACX,YAAY;QACZ,SAAS;QACT,gBAAgB;QAChB,kBAAkB;QAClB,SAAS;QACT,MAAM;QACN,SAAS;QACT,aAAa;KACd,CACF,CAAC;IAEF,qBAAqB;IACrB,SAAS,CAAC,GAAG,EAAE;QACb,OAAO,GAAG,EAAE;YACV,QAAQ,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC;YAC1B,IAAI,eAAe,CAAC,OAAO,EAAE,CAAC;gBAC5B,aAAa,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;gBACvC,eAAe,CAAC,OAAO,GAAG,IAAI,CAAC;YACjC,CAAC;QACH,CAAC,CAAC;IACJ,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO;QACL,GAAG;QACH,KAAK;QACL,KAAK;QACL,YAAY;QACZ,WAAW;QACX,UAAU;QACV,SAAS;QACT,aAAa;QACb,iBAAiB;QACjB,eAAe;QACf,WAAW;QACX,WAAW;QACX,WAAW;QACX,aAAa;QACb,SAAS;QACT,SAAS;QACT,UAAU;QACV,UAAU;QACV,qBAAqB;QACrB,YAAY;QACZ,kBAAkB;QAClB,YAAY;KACb,CAAC;AACJ,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Synchronized blink hook.
3
+ *
4
+ * All instances derive visibility from the same global animation clock,
5
+ * so every blinking element toggles in unison.
6
+ *
7
+ * @returns `true` when the element should be visible, `false` when hidden.
8
+ * Always returns `true` when `enabled` is `false`.
9
+ */
10
+ export declare function useBlink(enabled: boolean, intervalMs?: number): boolean;
11
+ //# sourceMappingURL=useBlink.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useBlink.d.ts","sourceRoot":"","sources":["../../../src/ui/hooks/useBlink.ts"],"names":[],"mappings":"AAQA;;;;;;;;GAQG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,SAAoB,GAAG,OAAO,CAMlF"}
@@ -0,0 +1,19 @@
1
+ import { useAnimationTick, useAnimationActive, TICK_INTERVAL, } from "../components/AnimationContext.js";
2
+ const BLINK_INTERVAL_MS = 600;
3
+ /**
4
+ * Synchronized blink hook.
5
+ *
6
+ * All instances derive visibility from the same global animation clock,
7
+ * so every blinking element toggles in unison.
8
+ *
9
+ * @returns `true` when the element should be visible, `false` when hidden.
10
+ * Always returns `true` when `enabled` is `false`.
11
+ */
12
+ export function useBlink(enabled, intervalMs = BLINK_INTERVAL_MS) {
13
+ const tick = useAnimationTick();
14
+ useAnimationActive();
15
+ if (!enabled)
16
+ return true;
17
+ return Math.floor((tick * TICK_INTERVAL) / intervalMs) % 2 === 0;
18
+ }
19
+ //# sourceMappingURL=useBlink.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useBlink.js","sourceRoot":"","sources":["../../../src/ui/hooks/useBlink.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,aAAa,GACd,MAAM,mCAAmC,CAAC;AAE3C,MAAM,iBAAiB,GAAG,GAAG,CAAC;AAE9B;;;;;;;;GAQG;AACH,MAAM,UAAU,QAAQ,CAAC,OAAgB,EAAE,UAAU,GAAG,iBAAiB;IACvE,MAAM,IAAI,GAAG,gBAAgB,EAAE,CAAC;IAChC,kBAAkB,EAAE,CAAC;IAErB,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IAC1B,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,GAAG,aAAa,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACnE,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Hold a value for at least `minMs` milliseconds before switching to the
3
+ * next value. Prevents rapid visual flicker when values change faster
4
+ * than a human can read (e.g. collapsed tool group hints).
5
+ *
6
+ * If the value changes again before the timer fires the timer restarts
7
+ * with the newest value, so the displayed value is never stale by more
8
+ * than one transition.
9
+ */
10
+ export declare function useMinDisplayTime<T>(value: T, minMs?: number): T;
11
+ //# sourceMappingURL=useMinDisplayTime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useMinDisplayTime.d.ts","sourceRoot":"","sources":["../../../src/ui/hooks/useMinDisplayTime.ts"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,SAAM,GAAG,CAAC,CAyB7D"}
@@ -0,0 +1,34 @@
1
+ import { useState, useRef, useEffect } from "react";
2
+ /**
3
+ * Hold a value for at least `minMs` milliseconds before switching to the
4
+ * next value. Prevents rapid visual flicker when values change faster
5
+ * than a human can read (e.g. collapsed tool group hints).
6
+ *
7
+ * If the value changes again before the timer fires the timer restarts
8
+ * with the newest value, so the displayed value is never stale by more
9
+ * than one transition.
10
+ */
11
+ export function useMinDisplayTime(value, minMs = 700) {
12
+ const [displayed, setDisplayed] = useState(value);
13
+ const timerRef = useRef(null);
14
+ const latestRef = useRef(value);
15
+ latestRef.current = value;
16
+ useEffect(() => {
17
+ // First render — sync immediately
18
+ if (displayed === value)
19
+ return;
20
+ // Clear any pending timer
21
+ if (timerRef.current)
22
+ clearTimeout(timerRef.current);
23
+ timerRef.current = setTimeout(() => {
24
+ setDisplayed(latestRef.current);
25
+ timerRef.current = null;
26
+ }, minMs);
27
+ return () => {
28
+ if (timerRef.current)
29
+ clearTimeout(timerRef.current);
30
+ };
31
+ }, [value, minMs, displayed]);
32
+ return displayed;
33
+ }
34
+ //# sourceMappingURL=useMinDisplayTime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useMinDisplayTime.js","sourceRoot":"","sources":["../../../src/ui/hooks/useMinDisplayTime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEpD;;;;;;;;GAQG;AACH,MAAM,UAAU,iBAAiB,CAAI,KAAQ,EAAE,KAAK,GAAG,GAAG;IACxD,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAClD,MAAM,QAAQ,GAAG,MAAM,CAAuC,IAAI,CAAC,CAAC;IACpE,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAEhC,SAAS,CAAC,OAAO,GAAG,KAAK,CAAC;IAE1B,SAAS,CAAC,GAAG,EAAE;QACb,kCAAkC;QAClC,IAAI,SAAS,KAAK,KAAK;YAAE,OAAO;QAEhC,0BAA0B;QAC1B,IAAI,QAAQ,CAAC,OAAO;YAAE,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAErD,QAAQ,CAAC,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;YACjC,YAAY,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YAChC,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC;QAC1B,CAAC,EAAE,KAAK,CAAC,CAAC;QAEV,OAAO,GAAG,EAAE;YACV,IAAI,QAAQ,CAAC,OAAO;gBAAE,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACvD,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC;IAE9B,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function useTerminalProgress(isRunning: boolean, hasActiveTools: boolean): void;
2
+ //# sourceMappingURL=useTerminalProgress.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useTerminalProgress.d.ts","sourceRoot":"","sources":["../../../src/ui/hooks/useTerminalProgress.ts"],"names":[],"mappings":"AA2EA,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,OAAO,EAAE,cAAc,EAAE,OAAO,GAAG,IAAI,CA8BrF"}
@@ -0,0 +1,98 @@
1
+ import { useEffect, useRef } from "react";
2
+ import { useStdout } from "ink";
3
+ /**
4
+ * Terminal progress bar via OSC 9;4 escape sequences.
5
+ *
6
+ * Supported terminals:
7
+ * - iTerm2 ≥ 3.6.6
8
+ * - Ghostty ≥ 1.2.0
9
+ * - ConEmu (any version)
10
+ *
11
+ * Shows an indeterminate (pulsing) progress bar at the top of the terminal
12
+ * window when the agent is actively running, and clears it when idle.
13
+ */
14
+ // OSC 9;4 sub-commands
15
+ const PROGRESS_CLEAR = 0;
16
+ // const PROGRESS_SET = 1;
17
+ // const PROGRESS_ERROR = 2;
18
+ const PROGRESS_INDETERMINATE = 3;
19
+ function buildProgressSequence(subcommand, value = "") {
20
+ // ESC ] 9 ; 4 ; <sub> ; <value> BEL
21
+ return `\x1b]9;4;${subcommand};${value}\x07`;
22
+ }
23
+ function wrapForMultiplexer(sequence) {
24
+ if (process.env["TMUX"]) {
25
+ const escaped = sequence.replaceAll("\x1b", "\x1b\x1b");
26
+ return `\x1bPtmux;${escaped}\x1b\\`;
27
+ }
28
+ if (process.env["STY"]) {
29
+ return `\x1bP${sequence}\x1b\\`;
30
+ }
31
+ return sequence;
32
+ }
33
+ function isProgressReportingAvailable() {
34
+ if (!process.stdout.isTTY)
35
+ return false;
36
+ // Windows Terminal interprets OSC 9;4 as notifications, not progress
37
+ if (process.env["WT_SESSION"])
38
+ return false;
39
+ // ConEmu supports OSC 9;4 for progress (all versions)
40
+ if (process.env["ConEmuANSI"] || process.env["ConEmuPID"] || process.env["ConEmuTask"]) {
41
+ return true;
42
+ }
43
+ const termProgram = process.env["TERM_PROGRAM"];
44
+ const version = process.env["TERM_PROGRAM_VERSION"];
45
+ if (!version)
46
+ return false;
47
+ // Parse semver-ish version
48
+ const parts = version.split(".").map(Number);
49
+ const major = parts[0] ?? 0;
50
+ const minor = parts[1] ?? 0;
51
+ const patch = parts[2] ?? 0;
52
+ function gte(a, b, c) {
53
+ if (major !== a)
54
+ return major > a;
55
+ if (minor !== b)
56
+ return minor > b;
57
+ return patch >= c;
58
+ }
59
+ // Ghostty 1.2.0+
60
+ if (termProgram === "ghostty")
61
+ return gte(1, 2, 0);
62
+ // iTerm2 3.6.6+
63
+ if (termProgram === "iTerm.app")
64
+ return gte(3, 6, 6);
65
+ return false;
66
+ }
67
+ const available = isProgressReportingAvailable();
68
+ export function useTerminalProgress(isRunning, hasActiveTools) {
69
+ const { stdout } = useStdout();
70
+ const prevStateRef = useRef(null);
71
+ useEffect(() => {
72
+ if (!available || !stdout)
73
+ return;
74
+ const state = isRunning
75
+ ? hasActiveTools
76
+ ? "indeterminate"
77
+ : "indeterminate" // show indeterminate for any running state (thinking, generating, tools)
78
+ : "completed";
79
+ if (prevStateRef.current === state)
80
+ return;
81
+ prevStateRef.current = state;
82
+ if (state === "indeterminate") {
83
+ stdout.write(wrapForMultiplexer(buildProgressSequence(PROGRESS_INDETERMINATE)));
84
+ }
85
+ else {
86
+ stdout.write(wrapForMultiplexer(buildProgressSequence(PROGRESS_CLEAR)));
87
+ }
88
+ }, [stdout, isRunning, hasActiveTools]);
89
+ // Clear on unmount
90
+ useEffect(() => {
91
+ return () => {
92
+ if (!available || !stdout)
93
+ return;
94
+ stdout.write(wrapForMultiplexer(buildProgressSequence(PROGRESS_CLEAR)));
95
+ };
96
+ }, [stdout]);
97
+ }
98
+ //# sourceMappingURL=useTerminalProgress.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useTerminalProgress.js","sourceRoot":"","sources":["../../../src/ui/hooks/useTerminalProgress.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"useTerminalTitle.d.ts","sourceRoot":"","sources":["../../../src/ui/hooks/useTerminalTitle.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAQvD,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,aAAa,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,wBAAgB,gBAAgB,CAAC,EAC/B,KAAK,EACL,SAAS,EACT,WAAgB,EAChB,eAAoB,EACpB,QAAgB,GACjB,EAAE,oBAAoB,GAAG,IAAI,CAwC7B"}
1
+ {"version":3,"file":"useTerminalTitle.d.ts","sourceRoot":"","sources":["../../../src/ui/hooks/useTerminalTitle.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAYvD,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,aAAa,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,wBAAgB,gBAAgB,CAAC,EAC/B,KAAK,EACL,SAAS,EACT,WAAgB,EAChB,eAAoB,EACpB,QAAgB,GACjB,EAAE,oBAAoB,GAAG,IAAI,CAyC7B"}
@@ -1,12 +1,13 @@
1
1
  import { useEffect, useMemo, useRef } from "react";
2
2
  import { useStdout } from "ink";
3
3
  import { SPINNER_FRAMES, SPINNER_INTERVAL } from "../spinner-frames.js";
4
- import { useAnimationTick, deriveFrame } from "../components/AnimationContext.js";
4
+ import { useAnimationTick, useAnimationActive, deriveFrame, } from "../components/AnimationContext.js";
5
5
  import { PLANNING_PHRASES, selectPhrases, shuffleArray } from "../activity-phrases.js";
6
6
  const PHRASE_INTERVAL = 3000;
7
7
  export function useTerminalTitle({ phase, isRunning, userMessage = "", activeToolNames = [], planMode = false, }) {
8
8
  const { stdout } = useStdout();
9
9
  // Derive spinner frame from global animation tick — no independent timer
10
+ useAnimationActive();
10
11
  const tick = useAnimationTick();
11
12
  const spinnerFrame = isRunning ? deriveFrame(tick, SPINNER_INTERVAL, SPINNER_FRAMES.length) : 0;
12
13
  // Phrase rotation — mirrors ActivityIndicator logic