@prestyj/cli 4.2.46 → 4.2.62

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 (172) hide show
  1. package/README.md +1 -1
  2. package/dist/cli.js +129 -3
  3. package/dist/cli.js.map +1 -1
  4. package/dist/config.js +5 -5
  5. package/dist/config.js.map +1 -1
  6. package/dist/core/agent-session.d.ts.map +1 -1
  7. package/dist/core/agent-session.js +11 -0
  8. package/dist/core/agent-session.js.map +1 -1
  9. package/dist/core/compaction/compactor.d.ts +8 -4
  10. package/dist/core/compaction/compactor.d.ts.map +1 -1
  11. package/dist/core/compaction/compactor.js +203 -27
  12. package/dist/core/compaction/compactor.js.map +1 -1
  13. package/dist/core/compaction/compactor.test.js +6 -4
  14. package/dist/core/compaction/compactor.test.js.map +1 -1
  15. package/dist/core/compaction/token-estimator.test.js +1 -1
  16. package/dist/core/compaction/token-estimator.test.js.map +1 -1
  17. package/dist/core/model-registry.js +5 -5
  18. package/dist/core/model-registry.js.map +1 -1
  19. package/dist/core/slash-commands.d.ts.map +1 -1
  20. package/dist/core/slash-commands.js +54 -0
  21. package/dist/core/slash-commands.js.map +1 -1
  22. package/dist/core/telegram.d.ts +19 -0
  23. package/dist/core/telegram.d.ts.map +1 -1
  24. package/dist/core/telegram.js +25 -0
  25. package/dist/core/telegram.js.map +1 -1
  26. package/dist/core/voice-transcriber.d.ts +33 -0
  27. package/dist/core/voice-transcriber.d.ts.map +1 -0
  28. package/dist/core/voice-transcriber.js +113 -0
  29. package/dist/core/voice-transcriber.js.map +1 -0
  30. package/dist/core/voice-transcriber.test.d.ts +2 -0
  31. package/dist/core/voice-transcriber.test.d.ts.map +1 -0
  32. package/dist/core/voice-transcriber.test.js +88 -0
  33. package/dist/core/voice-transcriber.test.js.map +1 -0
  34. package/dist/interactive.d.ts.map +1 -1
  35. package/dist/interactive.js +1 -0
  36. package/dist/interactive.js.map +1 -1
  37. package/dist/modes/serve-mode.d.ts.map +1 -1
  38. package/dist/modes/serve-mode.js +37 -0
  39. package/dist/modes/serve-mode.js.map +1 -1
  40. package/dist/tools/bash.d.ts.map +1 -1
  41. package/dist/tools/bash.js +4 -7
  42. package/dist/tools/bash.js.map +1 -1
  43. package/dist/tools/edit-diff.test.d.ts +2 -0
  44. package/dist/tools/edit-diff.test.d.ts.map +1 -0
  45. package/dist/tools/edit-diff.test.js +67 -0
  46. package/dist/tools/edit-diff.test.js.map +1 -0
  47. package/dist/tools/edit.d.ts.map +1 -1
  48. package/dist/tools/edit.js +4 -1
  49. package/dist/tools/edit.js.map +1 -1
  50. package/dist/tools/edit.test.d.ts +2 -0
  51. package/dist/tools/edit.test.d.ts.map +1 -0
  52. package/dist/tools/edit.test.js +93 -0
  53. package/dist/tools/edit.test.js.map +1 -0
  54. package/dist/tools/overflow.d.ts +6 -0
  55. package/dist/tools/overflow.d.ts.map +1 -0
  56. package/dist/tools/overflow.js +13 -0
  57. package/dist/tools/overflow.js.map +1 -0
  58. package/dist/tools/path-utils.test.d.ts +2 -0
  59. package/dist/tools/path-utils.test.d.ts.map +1 -0
  60. package/dist/tools/path-utils.test.js +49 -0
  61. package/dist/tools/path-utils.test.js.map +1 -0
  62. package/dist/tools/plan-mode.test.js.map +1 -1
  63. package/dist/tools/read.d.ts.map +1 -1
  64. package/dist/tools/read.js +6 -2
  65. package/dist/tools/read.js.map +1 -1
  66. package/dist/tools/read.test.d.ts +2 -0
  67. package/dist/tools/read.test.d.ts.map +1 -0
  68. package/dist/tools/read.test.js +81 -0
  69. package/dist/tools/read.test.js.map +1 -0
  70. package/dist/tools/truncate-utils.test.d.ts +2 -0
  71. package/dist/tools/truncate-utils.test.d.ts.map +1 -0
  72. package/dist/tools/truncate-utils.test.js +93 -0
  73. package/dist/tools/truncate-utils.test.js.map +1 -0
  74. package/dist/tools/truncate.d.ts +6 -4
  75. package/dist/tools/truncate.d.ts.map +1 -1
  76. package/dist/tools/truncate.js +12 -10
  77. package/dist/tools/truncate.js.map +1 -1
  78. package/dist/tools/write.test.js +65 -52
  79. package/dist/tools/write.test.js.map +1 -1
  80. package/dist/ui/App.d.ts +8 -1
  81. package/dist/ui/App.d.ts.map +1 -1
  82. package/dist/ui/App.js +62 -15
  83. package/dist/ui/App.js.map +1 -1
  84. package/dist/ui/activity-phrases.d.ts +10 -0
  85. package/dist/ui/activity-phrases.d.ts.map +1 -0
  86. package/dist/ui/activity-phrases.js +227 -0
  87. package/dist/ui/activity-phrases.js.map +1 -0
  88. package/dist/ui/components/ActivityIndicator.d.ts +3 -2
  89. package/dist/ui/components/ActivityIndicator.d.ts.map +1 -1
  90. package/dist/ui/components/ActivityIndicator.js +25 -244
  91. package/dist/ui/components/ActivityIndicator.js.map +1 -1
  92. package/dist/ui/components/AnimationContext.d.ts +9 -2
  93. package/dist/ui/components/AnimationContext.d.ts.map +1 -1
  94. package/dist/ui/components/AnimationContext.js +46 -7
  95. package/dist/ui/components/AnimationContext.js.map +1 -1
  96. package/dist/ui/components/AssistantMessage.d.ts +2 -1
  97. package/dist/ui/components/AssistantMessage.d.ts.map +1 -1
  98. package/dist/ui/components/AssistantMessage.js +2 -2
  99. package/dist/ui/components/AssistantMessage.js.map +1 -1
  100. package/dist/ui/components/Banner.d.ts.map +1 -1
  101. package/dist/ui/components/Banner.js +10 -1
  102. package/dist/ui/components/Banner.js.map +1 -1
  103. package/dist/ui/components/CompactionNotice.d.ts.map +1 -1
  104. package/dist/ui/components/CompactionNotice.js +2 -1
  105. package/dist/ui/components/CompactionNotice.js.map +1 -1
  106. package/dist/ui/components/Footer.d.ts.map +1 -1
  107. package/dist/ui/components/Footer.js +27 -17
  108. package/dist/ui/components/Footer.js.map +1 -1
  109. package/dist/ui/components/InputArea.d.ts.map +1 -1
  110. package/dist/ui/components/InputArea.js +585 -60
  111. package/dist/ui/components/InputArea.js.map +1 -1
  112. package/dist/ui/components/Markdown.d.ts +9 -4
  113. package/dist/ui/components/Markdown.d.ts.map +1 -1
  114. package/dist/ui/components/Markdown.js +74 -17
  115. package/dist/ui/components/Markdown.js.map +1 -1
  116. package/dist/ui/components/PlanApproval.d.ts.map +1 -1
  117. package/dist/ui/components/PlanApproval.js +17 -1
  118. package/dist/ui/components/PlanApproval.js.map +1 -1
  119. package/dist/ui/components/PlanBanner.d.ts.map +1 -1
  120. package/dist/ui/components/PlanBanner.js +18 -1
  121. package/dist/ui/components/PlanBanner.js.map +1 -1
  122. package/dist/ui/components/PlanOverlay.d.ts.map +1 -1
  123. package/dist/ui/components/PlanOverlay.js +43 -12
  124. package/dist/ui/components/PlanOverlay.js.map +1 -1
  125. package/dist/ui/components/SkillsOverlay.d.ts.map +1 -1
  126. package/dist/ui/components/SkillsOverlay.js +5 -1
  127. package/dist/ui/components/SkillsOverlay.js.map +1 -1
  128. package/dist/ui/components/Spinner.d.ts.map +1 -1
  129. package/dist/ui/components/Spinner.js +2 -1
  130. package/dist/ui/components/Spinner.js.map +1 -1
  131. package/dist/ui/components/StreamingArea.d.ts +2 -1
  132. package/dist/ui/components/StreamingArea.d.ts.map +1 -1
  133. package/dist/ui/components/StreamingArea.js +4 -4
  134. package/dist/ui/components/StreamingArea.js.map +1 -1
  135. package/dist/ui/components/SubAgentPanel.d.ts.map +1 -1
  136. package/dist/ui/components/SubAgentPanel.js +2 -1
  137. package/dist/ui/components/SubAgentPanel.js.map +1 -1
  138. package/dist/ui/components/TaskOverlay.d.ts.map +1 -1
  139. package/dist/ui/components/TaskOverlay.js +5 -1
  140. package/dist/ui/components/TaskOverlay.js.map +1 -1
  141. package/dist/ui/components/ThinkingBlock.d.ts +2 -1
  142. package/dist/ui/components/ThinkingBlock.d.ts.map +1 -1
  143. package/dist/ui/components/ThinkingBlock.js +2 -2
  144. package/dist/ui/components/ThinkingBlock.js.map +1 -1
  145. package/dist/ui/components/ThinkingIndicator.d.ts.map +1 -1
  146. package/dist/ui/components/ThinkingIndicator.js +2 -1
  147. package/dist/ui/components/ThinkingIndicator.js.map +1 -1
  148. package/dist/ui/components/ToolExecution.d.ts +1 -0
  149. package/dist/ui/components/ToolExecution.d.ts.map +1 -1
  150. package/dist/ui/components/ToolExecution.js +7 -4
  151. package/dist/ui/components/ToolExecution.js.map +1 -1
  152. package/dist/ui/components/index.d.ts +1 -1
  153. package/dist/ui/components/index.d.ts.map +1 -1
  154. package/dist/ui/components/index.js +1 -1
  155. package/dist/ui/components/index.js.map +1 -1
  156. package/dist/ui/hooks/useAgentLoop.d.ts +8 -1
  157. package/dist/ui/hooks/useAgentLoop.d.ts.map +1 -1
  158. package/dist/ui/hooks/useAgentLoop.js +69 -80
  159. package/dist/ui/hooks/useAgentLoop.js.map +1 -1
  160. package/dist/ui/hooks/useTerminalSize.d.ts +7 -7
  161. package/dist/ui/hooks/useTerminalSize.d.ts.map +1 -1
  162. package/dist/ui/hooks/useTerminalSize.js +25 -12
  163. package/dist/ui/hooks/useTerminalSize.js.map +1 -1
  164. package/dist/ui/hooks/useTerminalTitle.d.ts +8 -1
  165. package/dist/ui/hooks/useTerminalTitle.d.ts.map +1 -1
  166. package/dist/ui/hooks/useTerminalTitle.js +21 -23
  167. package/dist/ui/hooks/useTerminalTitle.js.map +1 -1
  168. package/dist/ui/plan-overlay.test.d.ts +2 -0
  169. package/dist/ui/plan-overlay.test.d.ts.map +1 -0
  170. package/dist/ui/plan-overlay.test.js +327 -0
  171. package/dist/ui/plan-overlay.test.js.map +1 -0
  172. package/package.json +6 -4
@@ -0,0 +1,227 @@
1
+ // ── Phrase lists ────────────────────────────────────────────
2
+ const CONTEXTUAL_PHRASES = [
3
+ {
4
+ keywords: /\b(bug|fix|error|issue|broken|crash|fail|wrong)\b/i,
5
+ phrases: [
6
+ "Investigating",
7
+ "Diagnosing",
8
+ "Tracing the issue",
9
+ "Hunting the bug",
10
+ "Analyzing the problem",
11
+ "Narrowing it down",
12
+ ],
13
+ },
14
+ {
15
+ keywords: /\b(refactor|clean|improve|optimize|simplify|restructure)\b/i,
16
+ phrases: [
17
+ "Studying the code",
18
+ "Planning improvements",
19
+ "Mapping dependencies",
20
+ "Finding patterns",
21
+ "Designing the approach",
22
+ ],
23
+ },
24
+ {
25
+ keywords: /\b(test|spec|coverage|assert|expect|describe|it\()\b/i,
26
+ phrases: [
27
+ "Designing tests",
28
+ "Thinking about edge cases",
29
+ "Planning test coverage",
30
+ "Considering scenarios",
31
+ ],
32
+ },
33
+ {
34
+ keywords: /\b(build|deploy|ci|cd|pipeline|docker|config)\b/i,
35
+ phrases: [
36
+ "Checking the config",
37
+ "Analyzing the pipeline",
38
+ "Working through setup",
39
+ "Reviewing the build",
40
+ ],
41
+ },
42
+ {
43
+ keywords: /\b(style|css|ui|layout|design|color|theme|display|render)\b/i,
44
+ phrases: [
45
+ "Visualizing the layout",
46
+ "Crafting the design",
47
+ "Considering the aesthetics",
48
+ "Sketching it out",
49
+ "Polishing the pixels",
50
+ ],
51
+ },
52
+ {
53
+ keywords: /\b(add|create|new|implement|feature|make|build)\b/i,
54
+ phrases: [
55
+ "Architecting",
56
+ "Drafting the approach",
57
+ "Planning the implementation",
58
+ "Mapping it out",
59
+ "Designing the solution",
60
+ ],
61
+ },
62
+ {
63
+ keywords: /\b(explain|how|why|what|understand|describe)\b/i,
64
+ phrases: [
65
+ "Reading through the code",
66
+ "Connecting the dots",
67
+ "Building understanding",
68
+ "Tracing the logic",
69
+ "Piecing it together",
70
+ ],
71
+ },
72
+ {
73
+ keywords: /\b(delete|remove|drop|clean\s*up|prune|trim)\b/i,
74
+ phrases: ["Identifying dead code", "Marking for removal", "Cleaning house", "Pruning the tree"],
75
+ },
76
+ {
77
+ keywords: /\b(move|rename|reorganize|restructure|migrate)\b/i,
78
+ phrases: ["Planning the move", "Mapping the migration", "Tracing dependencies", "Reorganizing"],
79
+ },
80
+ {
81
+ keywords: /\b(fetch|url|http|api|request|web|download|scrape)\b/i,
82
+ phrases: ["Checking the docs", "Looking it up", "Pulling references", "Gathering info"],
83
+ },
84
+ {
85
+ keywords: /\b(debug|log|trace|inspect|breakpoint|stack\s*trace)\b/i,
86
+ phrases: [
87
+ "Following the trail",
88
+ "Inspecting the stack",
89
+ "Chasing the bug",
90
+ "Tracing execution",
91
+ "Zeroing in",
92
+ ],
93
+ },
94
+ {
95
+ keywords: /\b(type|types|interface|generic|typescript|schema)\b/i,
96
+ phrases: [
97
+ "Mapping the types",
98
+ "Checking the signatures",
99
+ "Modeling the data",
100
+ "Tracing the type graph",
101
+ ],
102
+ },
103
+ {
104
+ keywords: /\b(commit|push|pull|merge|rebase|branch|git|pr)\b/i,
105
+ phrases: [
106
+ "Reviewing the history",
107
+ "Checking the diff",
108
+ "Preparing changes",
109
+ "Sorting out the branch",
110
+ ],
111
+ },
112
+ {
113
+ keywords: /\b(install|dependency|package|upgrade|update|version)\b/i,
114
+ phrases: [
115
+ "Checking dependencies",
116
+ "Reviewing versions",
117
+ "Sorting out packages",
118
+ "Mapping the dep tree",
119
+ ],
120
+ },
121
+ ];
122
+ export const PLANNING_PHRASES = [
123
+ "Studying the codebase",
124
+ "Mapping the architecture",
125
+ "Drafting the plan",
126
+ "Analyzing dependencies",
127
+ "Charting the course",
128
+ "Surveying the landscape",
129
+ "Building the blueprint",
130
+ ];
131
+ export const GENERAL_PHRASES = [
132
+ "Thinking",
133
+ "Reasoning",
134
+ "Processing",
135
+ "Mulling it over",
136
+ "Working on it",
137
+ "Contemplating",
138
+ "Figuring it out",
139
+ "Crunching",
140
+ "Assembling thoughts",
141
+ "Cooking up a plan",
142
+ "Brewing ideas",
143
+ "Spinning up neurons",
144
+ "Loading wisdom",
145
+ "Parsing the universe",
146
+ "Channeling clarity",
147
+ ];
148
+ export const THINKING_PHRASES = [
149
+ "Deep in thought",
150
+ "Reasoning",
151
+ "Contemplating",
152
+ "Pondering",
153
+ "Reflecting",
154
+ "Working through it",
155
+ "Analyzing",
156
+ "Deliberating",
157
+ ];
158
+ export const GENERATING_PHRASES = [
159
+ "Writing",
160
+ "Composing",
161
+ "Generating",
162
+ "Crafting a response",
163
+ "Drafting",
164
+ "Putting it together",
165
+ "Formulating",
166
+ ];
167
+ export const TOOLS_GENERIC = [
168
+ "Running tools",
169
+ "Executing",
170
+ "Working",
171
+ "Processing",
172
+ "Operating",
173
+ "Carrying out tasks",
174
+ ];
175
+ export const TOOL_PHRASES = {
176
+ bash: ["Running a command", "Executing in the shell", "Running a process"],
177
+ read: ["Reading a file", "Scanning the source", "Studying the code"],
178
+ write: ["Writing a file", "Creating a file", "Laying down code"],
179
+ edit: ["Editing a file", "Applying changes", "Patching the code"],
180
+ grep: ["Searching the codebase", "Scanning for matches", "Grepping"],
181
+ find: ["Locating files", "Searching the tree", "Scanning the directory"],
182
+ ls: ["Listing files", "Browsing the directory", "Scanning contents"],
183
+ subagent: ["Dispatching a subagent", "Delegating work", "Spinning up an agent"],
184
+ "web-fetch": ["Fetching from the web", "Pulling a page", "Downloading content"],
185
+ tasks: ["Managing tasks", "Updating the task list", "Organizing work"],
186
+ "task-output": ["Checking task output", "Reading task results"],
187
+ "task-stop": ["Stopping a task", "Halting a running task"],
188
+ };
189
+ function selectToolPhrases(activeToolNames) {
190
+ if (activeToolNames.length === 0)
191
+ return TOOLS_GENERIC;
192
+ const phrases = [];
193
+ for (const name of activeToolNames) {
194
+ const specific = TOOL_PHRASES[name];
195
+ if (specific)
196
+ phrases.push(...specific);
197
+ }
198
+ return phrases.length > 0 ? phrases : TOOLS_GENERIC;
199
+ }
200
+ export function selectPhrases(phase, userMessage, activeToolNames) {
201
+ switch (phase) {
202
+ case "thinking":
203
+ return THINKING_PHRASES;
204
+ case "generating":
205
+ return GENERATING_PHRASES;
206
+ case "tools":
207
+ return selectToolPhrases(activeToolNames);
208
+ default: {
209
+ // waiting / idle — use contextual phrases based on user message
210
+ for (const set of CONTEXTUAL_PHRASES) {
211
+ if (set.keywords.test(userMessage)) {
212
+ return [...set.phrases, ...GENERAL_PHRASES.slice(0, 3)];
213
+ }
214
+ }
215
+ return GENERAL_PHRASES;
216
+ }
217
+ }
218
+ }
219
+ export function shuffleArray(arr) {
220
+ const shuffled = [...arr];
221
+ for (let i = shuffled.length - 1; i > 0; i--) {
222
+ const j = Math.floor(Math.random() * (i + 1));
223
+ [shuffled[i], shuffled[j]] = [shuffled[j], shuffled[i]];
224
+ }
225
+ return shuffled;
226
+ }
227
+ //# sourceMappingURL=activity-phrases.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"activity-phrases.js","sourceRoot":"","sources":["../../src/ui/activity-phrases.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { ActivityPhase } from "../hooks/useAgentLoop.js";
1
+ import type { ActivityPhase, RetryInfo } from "../hooks/useAgentLoop.js";
2
2
  interface ActivityIndicatorProps {
3
3
  phase: ActivityPhase;
4
4
  elapsedMs: number;
@@ -8,7 +8,8 @@ interface ActivityIndicatorProps {
8
8
  userMessage?: string;
9
9
  activeToolNames?: string[];
10
10
  planMode?: boolean;
11
+ retryInfo?: RetryInfo | null;
11
12
  }
12
- export declare function ActivityIndicator({ phase, elapsedMs, thinkingMs, isThinking, tokenEstimate, userMessage, activeToolNames, planMode, }: ActivityIndicatorProps): import("react/jsx-runtime").JSX.Element;
13
+ export declare function ActivityIndicator({ phase, elapsedMs, thinkingMs, isThinking, tokenEstimate, userMessage, activeToolNames, planMode, retryInfo, }: ActivityIndicatorProps): import("react/jsx-runtime").JSX.Element;
13
14
  export {};
14
15
  //# sourceMappingURL=ActivityIndicator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ActivityIndicator.d.ts","sourceRoot":"","sources":["../../../src/ui/components/ActivityIndicator.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAmV9D,UAAU,sBAAsB;IAC9B,KAAK,EAAE,aAAa,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,wBAAgB,iBAAiB,CAAC,EAChC,KAAK,EACL,SAAS,EACT,UAAU,EACV,UAAU,EACV,aAAa,EACb,WAAgB,EAChB,eAAoB,EACpB,QAAQ,GACT,EAAE,sBAAsB,2CAqExB"}
1
+ {"version":3,"file":"ActivityIndicator.d.ts","sourceRoot":"","sources":["../../../src/ui/components/ActivityIndicator.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAuGzE,UAAU,sBAAsB;IAC9B,KAAK,EAAE,aAAa,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;CAC9B;AASD,wBAAgB,iBAAiB,CAAC,EAChC,KAAK,EACL,SAAS,EACT,UAAU,EACV,UAAU,EACV,aAAa,EACb,WAAgB,EAChB,eAAoB,EACpB,QAAQ,EACR,SAAS,GACV,EAAE,sBAAsB,2CAkFxB"}
@@ -1,8 +1,10 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import React, { useState, useEffect, useMemo } from "react";
2
+ import React, { useMemo } from "react";
3
3
  import { Text, Box } from "ink";
4
4
  import { useTheme } from "../theme/theme.js";
5
5
  import { SPINNER_FRAMES, SPINNER_INTERVAL } from "../spinner-frames.js";
6
+ import { PLANNING_PHRASES, selectPhrases, shuffleArray } from "../activity-phrases.js";
7
+ import { useAnimationTick, useAnimationActive, deriveFrame } from "./AnimationContext.js";
6
8
  // ── Color pulse cycle ─────────────────────────────────────
7
9
  const PULSE_COLORS = [
8
10
  "#60a5fa", // blue
@@ -29,231 +31,6 @@ const ELLIPSIS_INTERVAL = 500;
29
31
  // ── Phrase rotation ───────────────────────────────────────
30
32
  const WAITING_PHRASE_INTERVAL = 3000;
31
33
  const OTHER_PHRASE_INTERVAL = 4000;
32
- const CONTEXTUAL_PHRASES = [
33
- {
34
- keywords: /\b(bug|fix|error|issue|broken|crash|fail|wrong)\b/i,
35
- phrases: [
36
- "Investigating",
37
- "Diagnosing",
38
- "Tracing the issue",
39
- "Hunting the bug",
40
- "Analyzing the problem",
41
- "Narrowing it down",
42
- ],
43
- },
44
- {
45
- keywords: /\b(refactor|clean|improve|optimize|simplify|restructure)\b/i,
46
- phrases: [
47
- "Studying the code",
48
- "Planning improvements",
49
- "Mapping dependencies",
50
- "Finding patterns",
51
- "Designing the approach",
52
- ],
53
- },
54
- {
55
- keywords: /\b(test|spec|coverage|assert|expect|describe|it\()\b/i,
56
- phrases: [
57
- "Designing tests",
58
- "Thinking about edge cases",
59
- "Planning test coverage",
60
- "Considering scenarios",
61
- ],
62
- },
63
- {
64
- keywords: /\b(build|deploy|ci|cd|pipeline|docker|config)\b/i,
65
- phrases: [
66
- "Checking the config",
67
- "Analyzing the pipeline",
68
- "Working through setup",
69
- "Reviewing the build",
70
- ],
71
- },
72
- {
73
- keywords: /\b(style|css|ui|layout|design|color|theme|display|render)\b/i,
74
- phrases: [
75
- "Visualizing the layout",
76
- "Crafting the design",
77
- "Considering the aesthetics",
78
- "Sketching it out",
79
- "Polishing the pixels",
80
- ],
81
- },
82
- {
83
- keywords: /\b(add|create|new|implement|feature|make|build)\b/i,
84
- phrases: [
85
- "Architecting",
86
- "Drafting the approach",
87
- "Planning the implementation",
88
- "Mapping it out",
89
- "Designing the solution",
90
- ],
91
- },
92
- {
93
- keywords: /\b(explain|how|why|what|understand|describe)\b/i,
94
- phrases: [
95
- "Reading through the code",
96
- "Connecting the dots",
97
- "Building understanding",
98
- "Tracing the logic",
99
- "Piecing it together",
100
- ],
101
- },
102
- {
103
- keywords: /\b(delete|remove|drop|clean\s*up|prune|trim)\b/i,
104
- phrases: ["Identifying dead code", "Marking for removal", "Cleaning house", "Pruning the tree"],
105
- },
106
- {
107
- keywords: /\b(move|rename|reorganize|restructure|migrate)\b/i,
108
- phrases: ["Planning the move", "Mapping the migration", "Tracing dependencies", "Reorganizing"],
109
- },
110
- {
111
- keywords: /\b(fetch|url|http|api|request|web|download|scrape)\b/i,
112
- phrases: ["Checking the docs", "Looking it up", "Pulling references", "Gathering info"],
113
- },
114
- {
115
- keywords: /\b(debug|log|trace|inspect|breakpoint|stack\s*trace)\b/i,
116
- phrases: [
117
- "Following the trail",
118
- "Inspecting the stack",
119
- "Chasing the bug",
120
- "Tracing execution",
121
- "Zeroing in",
122
- ],
123
- },
124
- {
125
- keywords: /\b(type|types|interface|generic|typescript|schema)\b/i,
126
- phrases: [
127
- "Mapping the types",
128
- "Checking the signatures",
129
- "Modeling the data",
130
- "Tracing the type graph",
131
- ],
132
- },
133
- {
134
- keywords: /\b(commit|push|pull|merge|rebase|branch|git|pr)\b/i,
135
- phrases: [
136
- "Reviewing the history",
137
- "Checking the diff",
138
- "Preparing changes",
139
- "Sorting out the branch",
140
- ],
141
- },
142
- {
143
- keywords: /\b(install|dependency|package|upgrade|update|version)\b/i,
144
- phrases: [
145
- "Checking dependencies",
146
- "Reviewing versions",
147
- "Sorting out packages",
148
- "Mapping the dep tree",
149
- ],
150
- },
151
- ];
152
- const PLANNING_PHRASES = [
153
- "Studying the codebase",
154
- "Mapping the architecture",
155
- "Drafting the plan",
156
- "Analyzing dependencies",
157
- "Charting the course",
158
- "Surveying the landscape",
159
- "Building the blueprint",
160
- ];
161
- const GENERAL_PHRASES = [
162
- "Thinking",
163
- "Reasoning",
164
- "Processing",
165
- "Mulling it over",
166
- "Working on it",
167
- "Contemplating",
168
- "Figuring it out",
169
- "Crunching",
170
- "Assembling thoughts",
171
- "Cooking up a plan",
172
- "Brewing ideas",
173
- "Spinning up neurons",
174
- "Loading wisdom",
175
- "Parsing the universe",
176
- "Channeling clarity",
177
- ];
178
- const THINKING_PHRASES = [
179
- "Deep in thought",
180
- "Reasoning",
181
- "Contemplating",
182
- "Pondering",
183
- "Reflecting",
184
- "Working through it",
185
- "Analyzing",
186
- "Deliberating",
187
- ];
188
- const GENERATING_PHRASES = [
189
- "Writing",
190
- "Composing",
191
- "Generating",
192
- "Crafting a response",
193
- "Drafting",
194
- "Putting it together",
195
- "Formulating",
196
- ];
197
- const TOOLS_GENERIC = [
198
- "Running tools",
199
- "Executing",
200
- "Working",
201
- "Processing",
202
- "Operating",
203
- "Carrying out tasks",
204
- ];
205
- const TOOL_PHRASES = {
206
- bash: ["Running a command", "Executing in the shell", "Running a process"],
207
- read: ["Reading a file", "Scanning the source", "Studying the code"],
208
- write: ["Writing a file", "Creating a file", "Laying down code"],
209
- edit: ["Editing a file", "Applying changes", "Patching the code"],
210
- grep: ["Searching the codebase", "Scanning for matches", "Grepping"],
211
- find: ["Locating files", "Searching the tree", "Scanning the directory"],
212
- ls: ["Listing files", "Browsing the directory", "Scanning contents"],
213
- subagent: ["Dispatching a subagent", "Delegating work", "Spinning up an agent"],
214
- "web-fetch": ["Fetching from the web", "Pulling a page", "Downloading content"],
215
- tasks: ["Managing tasks", "Updating the task list", "Organizing work"],
216
- "task-output": ["Checking task output", "Reading task results"],
217
- "task-stop": ["Stopping a task", "Halting a running task"],
218
- };
219
- function selectToolPhrases(activeToolNames) {
220
- if (activeToolNames.length === 0)
221
- return TOOLS_GENERIC;
222
- const phrases = [];
223
- for (const name of activeToolNames) {
224
- const specific = TOOL_PHRASES[name];
225
- if (specific)
226
- phrases.push(...specific);
227
- }
228
- return phrases.length > 0 ? phrases : TOOLS_GENERIC;
229
- }
230
- function selectPhrases(phase, userMessage, activeToolNames) {
231
- switch (phase) {
232
- case "thinking":
233
- return THINKING_PHRASES;
234
- case "generating":
235
- return GENERATING_PHRASES;
236
- case "tools":
237
- return selectToolPhrases(activeToolNames);
238
- default: {
239
- // waiting / idle — use contextual phrases based on user message
240
- for (const set of CONTEXTUAL_PHRASES) {
241
- if (set.keywords.test(userMessage)) {
242
- return [...set.phrases, ...GENERAL_PHRASES.slice(0, 3)];
243
- }
244
- }
245
- return GENERAL_PHRASES;
246
- }
247
- }
248
- }
249
- function shuffleArray(arr) {
250
- const shuffled = [...arr];
251
- for (let i = shuffled.length - 1; i > 0; i--) {
252
- const j = Math.floor(Math.random() * (i + 1));
253
- [shuffled[i], shuffled[j]] = [shuffled[j], shuffled[i]];
254
- }
255
- return shuffled;
256
- }
257
34
  // ── Formatting helpers ────────────────────────────────────
258
35
  function formatElapsed(ms) {
259
36
  const totalSec = Math.round(ms / 1000);
@@ -292,27 +69,24 @@ const ShimmerText = ({ text, color, shimmerPos, }) => (_jsx(Text, { children: te
292
69
  const isBright = Math.abs(i - shimmerPos) <= SHIMMER_WIDTH;
293
70
  return (_jsx(Text, { bold: isBright, color: color, dimColor: !isBright, children: char }, i));
294
71
  }) }));
295
- export function ActivityIndicator({ phase, elapsedMs, thinkingMs, isThinking, tokenEstimate, userMessage = "", activeToolNames = [], planMode, }) {
72
+ const RETRY_REASON_LABELS = {
73
+ overloaded: "Provider overloaded",
74
+ rate_limit: "Rate limited",
75
+ empty_response: "Empty response",
76
+ context_overflow: "Context overflow, compacting",
77
+ };
78
+ export function ActivityIndicator({ phase, elapsedMs, thinkingMs, isThinking, tokenEstimate, userMessage = "", activeToolNames = [], planMode, retryInfo, }) {
296
79
  const theme = useTheme();
297
- // ── Single animation tick ────────────────────────────────
298
- // Instead of 5 separate setIntervals (spinner, pulse, ellipsis, shimmer,
299
- // phrase), we use ONE timer at the fastest cadence (SHIMMER_INTERVAL=100ms)
300
- // and derive all animation frames via modular arithmetic. This reduces
301
- // Ink re-renders from ~5 independent state updates to 1 batched update
302
- // per tick, which prevents live-area height miscalculations that cause
303
- // viewport jumping.
304
- const [tick, setTick] = useState(0);
305
- useEffect(() => {
306
- const timer = setInterval(() => {
307
- setTick((t) => t + 1);
308
- }, SHIMMER_INTERVAL);
309
- return () => clearInterval(timer);
310
- }, []);
80
+ // Use the global animation tick instead of a local timer.
81
+ // This eliminates a duplicate 100ms setInterval that was causing
82
+ // independent re-renders on top of the global AnimationProvider tick.
83
+ useAnimationActive();
84
+ const tick = useAnimationTick();
311
85
  // Derive all animation frames from the single tick counter
312
- const spinnerFrame = Math.floor((tick * SHIMMER_INTERVAL) / SPINNER_INTERVAL) % SPINNER_FRAMES.length;
86
+ const spinnerFrame = deriveFrame(tick, SPINNER_INTERVAL, SPINNER_FRAMES.length);
313
87
  const pulseColors = planMode ? PLAN_PULSE_COLORS : PULSE_COLORS;
314
- const colorFrame = Math.floor((tick * SHIMMER_INTERVAL) / PULSE_INTERVAL) % pulseColors.length;
315
- const ellipsisFrame = Math.floor((tick * SHIMMER_INTERVAL) / ELLIPSIS_INTERVAL) % ELLIPSIS_FRAMES.length;
88
+ const colorFrame = deriveFrame(tick, PULSE_INTERVAL, pulseColors.length);
89
+ const ellipsisFrame = deriveFrame(tick, ELLIPSIS_INTERVAL, ELLIPSIS_FRAMES.length);
316
90
  // Phrase rotation — pick phrases based on phase + user message + active tools, shuffle, rotate
317
91
  const toolNamesKey = activeToolNames.sort().join(",");
318
92
  const phrases = useMemo(() => shuffleArray(planMode && phase === "waiting"
@@ -329,6 +103,13 @@ export function ActivityIndicator({ phase, elapsedMs, thinkingMs, isThinking, to
329
103
  // Pad ellipsis to prevent text from shifting
330
104
  const paddedEllipsis = ellipsis + " ".repeat(3 - ellipsis.length);
331
105
  const meta = buildMetaSuffix(elapsedMs, thinkingMs, isThinking, tokenEstimate);
106
+ // ── Retry display ──────────────────────────────────────
107
+ if (phase === "retrying" && retryInfo) {
108
+ const retryLabel = RETRY_REASON_LABELS[retryInfo.reason];
109
+ const retryColor = "#f59e0b"; // amber
110
+ const delaySec = retryInfo.delayMs > 0 ? ` waiting ${Math.round(retryInfo.delayMs / 1000)}s` : "";
111
+ return (_jsxs(Box, { children: [_jsxs(Text, { color: retryColor, bold: true, children: [SPINNER_FRAMES[spinnerFrame], " "] }), _jsxs(Text, { color: retryColor, children: [retryLabel, " \u2014 retrying (", retryInfo.attempt, "/", retryInfo.maxAttempts, ")"] }), _jsxs(Text, { color: theme.textDim, children: [delaySec, " (", formatElapsed(elapsedMs), ")"] })] }));
112
+ }
332
113
  return (_jsxs(Box, { children: [_jsxs(Text, { color: spinnerColor, bold: true, children: [SPINNER_FRAMES[spinnerFrame], " "] }), _jsx(ShimmerText, { text: phrase, color: spinnerColor, shimmerPos: shimmerPos }), _jsx(Text, { color: theme.textDim, children: paddedEllipsis }), meta && (_jsxs(Text, { color: theme.textDim, children: [" (", meta, ")"] }))] }));
333
114
  }
334
115
  //# sourceMappingURL=ActivityIndicator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ActivityIndicator.js","sourceRoot":"","sources":["../../../src/ui/components/ActivityIndicator.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ActivityIndicator.js","sourceRoot":"","sources":["../../../src/ui/components/ActivityIndicator.tsx"],"names":[],"mappings":"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"}
@@ -7,8 +7,9 @@ import React from "react";
7
7
  * arithmetic. This replaces per-component setIntervals that each caused
8
8
  * independent React re-renders — N spinners no longer means N timers.
9
9
  *
10
- * The tick only runs while at least one AnimationProvider is mounted
11
- * (i.e. while the app is alive).
10
+ * The tick only runs while at least one component has registered via
11
+ * `useAnimationActive()`, avoiding 10 re-renders/sec during idle streaming
12
+ * when no spinners or animations are visible.
12
13
  */
13
14
  declare const TICK_INTERVAL = 100;
14
15
  export declare function AnimationProvider({ children }: {
@@ -16,6 +17,12 @@ export declare function AnimationProvider({ children }: {
16
17
  }): import("react/jsx-runtime").JSX.Element;
17
18
  /** Returns the current global animation tick counter. */
18
19
  export declare function useAnimationTick(): number;
20
+ /**
21
+ * Register this component as needing animation ticks.
22
+ * The global timer only runs while at least one component is registered.
23
+ * Call this in any component that uses animation frames (spinners, shimmer, etc).
24
+ */
25
+ export declare function useAnimationActive(): void;
19
26
  /** Derive a frame index from the global tick for a given interval and frame count. */
20
27
  export declare function deriveFrame(tick: number, intervalMs: number, frameCount: number): number;
21
28
  export { TICK_INTERVAL };
@@ -1 +1 @@
1
- {"version":3,"file":"AnimationContext.d.ts","sourceRoot":"","sources":["../../../src/ui/components/AnimationContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAyD,MAAM,OAAO,CAAC;AAE9E;;;;;;;;;;GAUG;AAEH,QAAA,MAAM,aAAa,MAAM,CAAC;AAI1B,wBAAgB,iBAAiB,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,2CAW5E;AAED,yDAAyD;AACzD,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED,sFAAsF;AACtF,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAExF;AAED,OAAO,EAAE,aAAa,EAAE,CAAC"}
1
+ {"version":3,"file":"AnimationContext.d.ts","sourceRoot":"","sources":["../../../src/ui/components/AnimationContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8E,MAAM,OAAO,CAAC;AAEnG;;;;;;;;;;;GAWG;AAEH,QAAA,MAAM,aAAa,MAAM,CAAC;AAO1B,wBAAgB,iBAAiB,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,2CA4C5E;AAED,yDAAyD;AACzD,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CAKzC;AAED,sFAAsF;AACtF,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAExF;AAED,OAAO,EAAE,aAAa,EAAE,CAAC"}