@prestyj/cli 4.3.164 → 4.3.201

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 (258) hide show
  1. package/dist/cli.js +106 -27
  2. package/dist/cli.js.map +1 -1
  3. package/dist/core/agent-session.d.ts +50 -1
  4. package/dist/core/agent-session.d.ts.map +1 -1
  5. package/dist/core/agent-session.js +175 -20
  6. package/dist/core/agent-session.js.map +1 -1
  7. package/dist/core/agents.d.ts +6 -1
  8. package/dist/core/agents.d.ts.map +1 -1
  9. package/dist/core/agents.js +112 -3
  10. package/dist/core/agents.js.map +1 -1
  11. package/dist/core/auth-storage.d.ts.map +1 -1
  12. package/dist/core/auth-storage.js +20 -1
  13. package/dist/core/auth-storage.js.map +1 -1
  14. package/dist/core/claude-code-version.d.ts +10 -0
  15. package/dist/core/claude-code-version.d.ts.map +1 -0
  16. package/dist/core/claude-code-version.js +106 -0
  17. package/dist/core/claude-code-version.js.map +1 -0
  18. package/dist/core/compaction/compactor.d.ts +13 -0
  19. package/dist/core/compaction/compactor.d.ts.map +1 -1
  20. package/dist/core/compaction/compactor.js +20 -1
  21. package/dist/core/compaction/compactor.js.map +1 -1
  22. package/dist/core/compaction/compactor.test.js +12 -1
  23. package/dist/core/compaction/compactor.test.js.map +1 -1
  24. package/dist/core/index.d.ts +1 -1
  25. package/dist/core/index.d.ts.map +1 -1
  26. package/dist/core/index.js +1 -1
  27. package/dist/core/index.js.map +1 -1
  28. package/dist/core/model-registry.d.ts +30 -2
  29. package/dist/core/model-registry.d.ts.map +1 -1
  30. package/dist/core/model-registry.js +41 -26
  31. package/dist/core/model-registry.js.map +1 -1
  32. package/dist/core/model-registry.test.d.ts +2 -0
  33. package/dist/core/model-registry.test.d.ts.map +1 -0
  34. package/dist/core/model-registry.test.js +19 -0
  35. package/dist/core/model-registry.test.js.map +1 -0
  36. package/dist/core/oauth/anthropic.d.ts.map +1 -1
  37. package/dist/core/oauth/anthropic.js +64 -42
  38. package/dist/core/oauth/anthropic.js.map +1 -1
  39. package/dist/core/oauth/openai.js +1 -1
  40. package/dist/core/oauth/openai.js.map +1 -1
  41. package/dist/core/prompt-commands.d.ts.map +1 -1
  42. package/dist/core/prompt-commands.js +480 -100
  43. package/dist/core/prompt-commands.js.map +1 -1
  44. package/dist/core/prompt-commands.test.d.ts +2 -0
  45. package/dist/core/prompt-commands.test.d.ts.map +1 -0
  46. package/dist/core/prompt-commands.test.js +33 -0
  47. package/dist/core/prompt-commands.test.js.map +1 -0
  48. package/dist/core/repomap-context.d.ts +11 -0
  49. package/dist/core/repomap-context.d.ts.map +1 -0
  50. package/dist/core/repomap-context.js +68 -0
  51. package/dist/core/repomap-context.js.map +1 -0
  52. package/dist/core/repomap-context.test.d.ts +2 -0
  53. package/dist/core/repomap-context.test.d.ts.map +1 -0
  54. package/dist/core/repomap-context.test.js +47 -0
  55. package/dist/core/repomap-context.test.js.map +1 -0
  56. package/dist/core/repomap.d.ts +74 -0
  57. package/dist/core/repomap.d.ts.map +1 -0
  58. package/dist/core/repomap.js +897 -0
  59. package/dist/core/repomap.js.map +1 -0
  60. package/dist/core/repomap.test.d.ts +2 -0
  61. package/dist/core/repomap.test.d.ts.map +1 -0
  62. package/dist/core/repomap.test.js +444 -0
  63. package/dist/core/repomap.test.js.map +1 -0
  64. package/dist/core/session-compaction.d.ts +15 -0
  65. package/dist/core/session-compaction.d.ts.map +1 -0
  66. package/dist/core/session-compaction.js +31 -0
  67. package/dist/core/session-compaction.js.map +1 -0
  68. package/dist/core/session-compaction.test.d.ts +2 -0
  69. package/dist/core/session-compaction.test.d.ts.map +1 -0
  70. package/dist/core/session-compaction.test.js +70 -0
  71. package/dist/core/session-compaction.test.js.map +1 -0
  72. package/dist/core/settings-manager.d.ts +3 -5
  73. package/dist/core/settings-manager.d.ts.map +1 -1
  74. package/dist/core/settings-manager.js +6 -5
  75. package/dist/core/settings-manager.js.map +1 -1
  76. package/dist/core/slash-commands.d.ts +2 -0
  77. package/dist/core/slash-commands.d.ts.map +1 -1
  78. package/dist/core/slash-commands.js +15 -14
  79. package/dist/core/slash-commands.js.map +1 -1
  80. package/dist/core/style-packs/index.d.ts.map +1 -1
  81. package/dist/core/style-packs/index.js +8 -9
  82. package/dist/core/style-packs/index.js.map +1 -1
  83. package/dist/index.d.ts +2 -2
  84. package/dist/index.d.ts.map +1 -1
  85. package/dist/index.js +1 -1
  86. package/dist/index.js.map +1 -1
  87. package/dist/interactive.d.ts.map +1 -1
  88. package/dist/interactive.js +12 -6
  89. package/dist/interactive.js.map +1 -1
  90. package/dist/modes/json-mode.d.ts +7 -0
  91. package/dist/modes/json-mode.d.ts.map +1 -1
  92. package/dist/modes/json-mode.js +9 -1
  93. package/dist/modes/json-mode.js.map +1 -1
  94. package/dist/system-prompt.d.ts.map +1 -1
  95. package/dist/system-prompt.js +105 -108
  96. package/dist/system-prompt.js.map +1 -1
  97. package/dist/system-prompt.test.d.ts +2 -0
  98. package/dist/system-prompt.test.d.ts.map +1 -0
  99. package/dist/system-prompt.test.js +107 -0
  100. package/dist/system-prompt.test.js.map +1 -0
  101. package/dist/tools/bash.d.ts.map +1 -1
  102. package/dist/tools/bash.js +1 -0
  103. package/dist/tools/bash.js.map +1 -1
  104. package/dist/tools/edit-diff.d.ts +66 -1
  105. package/dist/tools/edit-diff.d.ts.map +1 -1
  106. package/dist/tools/edit-diff.js +208 -10
  107. package/dist/tools/edit-diff.js.map +1 -1
  108. package/dist/tools/edit-diff.test.js +175 -15
  109. package/dist/tools/edit-diff.test.js.map +1 -1
  110. package/dist/tools/edit.d.ts +3 -1
  111. package/dist/tools/edit.d.ts.map +1 -1
  112. package/dist/tools/edit.js +190 -44
  113. package/dist/tools/edit.js.map +1 -1
  114. package/dist/tools/edit.test.js +392 -3
  115. package/dist/tools/edit.test.js.map +1 -1
  116. package/dist/tools/enter-plan.d.ts.map +1 -1
  117. package/dist/tools/enter-plan.js +1 -0
  118. package/dist/tools/enter-plan.js.map +1 -1
  119. package/dist/tools/exit-plan.d.ts.map +1 -1
  120. package/dist/tools/exit-plan.js +1 -0
  121. package/dist/tools/exit-plan.js.map +1 -1
  122. package/dist/tools/index.d.ts +13 -0
  123. package/dist/tools/index.d.ts.map +1 -1
  124. package/dist/tools/index.js +4 -4
  125. package/dist/tools/index.js.map +1 -1
  126. package/dist/tools/prompt-hints.d.ts.map +1 -1
  127. package/dist/tools/prompt-hints.js +6 -4
  128. package/dist/tools/prompt-hints.js.map +1 -1
  129. package/dist/tools/read.d.ts +1 -1
  130. package/dist/tools/read.d.ts.map +1 -1
  131. package/dist/tools/read.js +2 -1
  132. package/dist/tools/read.js.map +1 -1
  133. package/dist/tools/subagent.d.ts +1 -1
  134. package/dist/tools/subagent.d.ts.map +1 -1
  135. package/dist/tools/subagent.js +55 -2
  136. package/dist/tools/subagent.js.map +1 -1
  137. package/dist/tools/tasks.d.ts.map +1 -1
  138. package/dist/tools/tasks.js +1 -0
  139. package/dist/tools/tasks.js.map +1 -1
  140. package/dist/tools/web-fetch.d.ts +1 -0
  141. package/dist/tools/web-fetch.d.ts.map +1 -1
  142. package/dist/tools/web-fetch.js +96 -6
  143. package/dist/tools/web-fetch.js.map +1 -1
  144. package/dist/tools/web-fetch.test.d.ts +2 -0
  145. package/dist/tools/web-fetch.test.d.ts.map +1 -0
  146. package/dist/tools/web-fetch.test.js +90 -0
  147. package/dist/tools/web-fetch.test.js.map +1 -0
  148. package/dist/tools/web-search.d.ts +1 -0
  149. package/dist/tools/web-search.d.ts.map +1 -1
  150. package/dist/tools/web-search.js +167 -27
  151. package/dist/tools/web-search.js.map +1 -1
  152. package/dist/tools/web-search.test.d.ts +2 -0
  153. package/dist/tools/web-search.test.d.ts.map +1 -0
  154. package/dist/tools/web-search.test.js +119 -0
  155. package/dist/tools/web-search.test.js.map +1 -0
  156. package/dist/tools/write.d.ts +1 -1
  157. package/dist/tools/write.d.ts.map +1 -1
  158. package/dist/tools/write.js +3 -1
  159. package/dist/tools/write.js.map +1 -1
  160. package/dist/tools/write.test.js +23 -0
  161. package/dist/tools/write.test.js.map +1 -1
  162. package/dist/ui/App.d.ts +54 -5
  163. package/dist/ui/App.d.ts.map +1 -1
  164. package/dist/ui/App.js +533 -241
  165. package/dist/ui/App.js.map +1 -1
  166. package/dist/ui/activity-phrases.d.ts +2 -1
  167. package/dist/ui/activity-phrases.d.ts.map +1 -1
  168. package/dist/ui/activity-phrases.js +11 -1
  169. package/dist/ui/activity-phrases.js.map +1 -1
  170. package/dist/ui/components/ActivityIndicator.d.ts +15 -1
  171. package/dist/ui/components/ActivityIndicator.d.ts.map +1 -1
  172. package/dist/ui/components/ActivityIndicator.js +143 -44
  173. package/dist/ui/components/ActivityIndicator.js.map +1 -1
  174. package/dist/ui/components/ActivityIndicator.test.d.ts +2 -0
  175. package/dist/ui/components/ActivityIndicator.test.d.ts.map +1 -0
  176. package/dist/ui/components/ActivityIndicator.test.js +40 -0
  177. package/dist/ui/components/ActivityIndicator.test.js.map +1 -0
  178. package/dist/ui/components/AnimationContext.d.ts +8 -2
  179. package/dist/ui/components/AnimationContext.d.ts.map +1 -1
  180. package/dist/ui/components/AnimationContext.js +94 -16
  181. package/dist/ui/components/AnimationContext.js.map +1 -1
  182. package/dist/ui/components/AssistantMessage.js +1 -1
  183. package/dist/ui/components/AssistantMessage.js.map +1 -1
  184. package/dist/ui/components/CompactionNotice.d.ts +5 -1
  185. package/dist/ui/components/CompactionNotice.d.ts.map +1 -1
  186. package/dist/ui/components/CompactionNotice.js +4 -6
  187. package/dist/ui/components/CompactionNotice.js.map +1 -1
  188. package/dist/ui/components/Footer.d.ts +10 -2
  189. package/dist/ui/components/Footer.d.ts.map +1 -1
  190. package/dist/ui/components/Footer.js +45 -8
  191. package/dist/ui/components/Footer.js.map +1 -1
  192. package/dist/ui/components/InputArea.d.ts.map +1 -1
  193. package/dist/ui/components/InputArea.js +76 -28
  194. package/dist/ui/components/InputArea.js.map +1 -1
  195. package/dist/ui/components/ServerToolExecution.d.ts +1 -0
  196. package/dist/ui/components/ServerToolExecution.d.ts.map +1 -1
  197. package/dist/ui/components/ServerToolExecution.js +21 -2
  198. package/dist/ui/components/ServerToolExecution.js.map +1 -1
  199. package/dist/ui/components/Spinner.d.ts +3 -1
  200. package/dist/ui/components/Spinner.d.ts.map +1 -1
  201. package/dist/ui/components/Spinner.js +10 -4
  202. package/dist/ui/components/Spinner.js.map +1 -1
  203. package/dist/ui/components/StreamingArea.js +1 -1
  204. package/dist/ui/components/StreamingArea.js.map +1 -1
  205. package/dist/ui/components/SubAgentPanel.d.ts.map +1 -1
  206. package/dist/ui/components/SubAgentPanel.js +3 -4
  207. package/dist/ui/components/SubAgentPanel.js.map +1 -1
  208. package/dist/ui/components/ToolExecution.d.ts +2 -0
  209. package/dist/ui/components/ToolExecution.d.ts.map +1 -1
  210. package/dist/ui/components/ToolExecution.js +24 -5
  211. package/dist/ui/components/ToolExecution.js.map +1 -1
  212. package/dist/ui/components/ToolGroupExecution.d.ts.map +1 -1
  213. package/dist/ui/components/ToolGroupExecution.js +23 -2
  214. package/dist/ui/components/ToolGroupExecution.js.map +1 -1
  215. package/dist/ui/components/ToolUseLoader.d.ts +4 -2
  216. package/dist/ui/components/ToolUseLoader.d.ts.map +1 -1
  217. package/dist/ui/components/ToolUseLoader.js +3 -3
  218. package/dist/ui/components/ToolUseLoader.js.map +1 -1
  219. package/dist/ui/components/index.d.ts +1 -2
  220. package/dist/ui/components/index.d.ts.map +1 -1
  221. package/dist/ui/components/index.js +1 -2
  222. package/dist/ui/components/index.js.map +1 -1
  223. package/dist/ui/hooks/useAgentLoop.d.ts +4 -1
  224. package/dist/ui/hooks/useAgentLoop.d.ts.map +1 -1
  225. package/dist/ui/hooks/useAgentLoop.js +110 -13
  226. package/dist/ui/hooks/useAgentLoop.js.map +1 -1
  227. package/dist/ui/hooks/useBlink.d.ts.map +1 -1
  228. package/dist/ui/hooks/useBlink.js +3 -4
  229. package/dist/ui/hooks/useBlink.js.map +1 -1
  230. package/dist/ui/hooks/useTerminalSize.d.ts +12 -3
  231. package/dist/ui/hooks/useTerminalSize.d.ts.map +1 -1
  232. package/dist/ui/hooks/useTerminalSize.js +16 -1
  233. package/dist/ui/hooks/useTerminalSize.js.map +1 -1
  234. package/dist/ui/pixel.js +1 -1
  235. package/dist/ui/render.d.ts +44 -5
  236. package/dist/ui/render.d.ts.map +1 -1
  237. package/dist/ui/render.js +56 -8
  238. package/dist/ui/render.js.map +1 -1
  239. package/dist/utils/error-handler.d.ts.map +1 -1
  240. package/dist/utils/error-handler.js +2 -0
  241. package/dist/utils/error-handler.js.map +1 -1
  242. package/package.json +8 -5
  243. package/dist/ui/buddy/Buddy.d.ts +0 -15
  244. package/dist/ui/buddy/Buddy.d.ts.map +0 -1
  245. package/dist/ui/buddy/Buddy.js +0 -118
  246. package/dist/ui/buddy/Buddy.js.map +0 -1
  247. package/dist/ui/buddy/gacha.d.ts +0 -8
  248. package/dist/ui/buddy/gacha.d.ts.map +0 -1
  249. package/dist/ui/buddy/gacha.js +0 -94
  250. package/dist/ui/buddy/gacha.js.map +0 -1
  251. package/dist/ui/buddy/species.d.ts +0 -52
  252. package/dist/ui/buddy/species.d.ts.map +0 -1
  253. package/dist/ui/buddy/species.js +0 -257
  254. package/dist/ui/buddy/species.js.map +0 -1
  255. package/dist/ui/components/ThinkingIndicator.d.ts +0 -6
  256. package/dist/ui/components/ThinkingIndicator.d.ts.map +0 -1
  257. package/dist/ui/components/ThinkingIndicator.js +0 -145
  258. package/dist/ui/components/ThinkingIndicator.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"ActivityIndicator.d.ts","sourceRoot":"","sources":["../../../src/ui/components/ActivityIndicator.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA0B,MAAM,OAAO,CAAC;AAG/C,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AA4GzE,UAAU,sBAAsB;IAC9B,KAAK,EAAE,aAAa,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,2EAA2E;IAC3E,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,4EAA4E;IAC5E,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IACvC,oDAAoD;IACpD,kBAAkB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAC7C,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;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;OAKG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;IACnD;;;;OAIG;IACH,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACjC;AAUD,wBAAgB,iBAAiB,CAAC,EAChC,KAAK,EACL,SAAS,EAAE,aAAa,EACxB,WAAW,EACX,UAAU,EACV,UAAU,EACV,aAAa,EACb,YAAY,EAAE,gBAAgB,EAC9B,kBAAkB,EAAE,sBAAsB,EAC1C,WAAgB,EAChB,eAAoB,EACpB,QAAQ,EACR,SAAS,EACT,QAAY,EACZ,SAAa,EACb,OAAO,EAAE,cAAc,EACvB,WAAW,EAAE,mBAAmB,GACjC,EAAE,sBAAsB,2CA4JxB"}
1
+ {"version":3,"file":"ActivityIndicator.d.ts","sourceRoot":"","sources":["../../../src/ui/components/ActivityIndicator.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA+C,MAAM,OAAO,CAAC;AAGpE,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAsDzE,KAAK,oBAAoB,GAAG;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,oBAAoB,CAsB/E;AAwBD,wBAAgB,cAAc,CAC5B,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,OAAO,EACnB,aAAa,EAAE,MAAM,GACpB;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAKtC;AA6BD,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAIjE;AA6FD,UAAU,sBAAsB;IAC9B,KAAK,EAAE,aAAa,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,2EAA2E;IAC3E,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;IACpB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,4EAA4E;IAC5E,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IACvC,oDAAoD;IACpD,kBAAkB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAC7C,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;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;OAKG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;IACnD;;;;OAIG;IACH,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAChC,mFAAmF;IACnF,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAWD,wBAAgB,iBAAiB,CAAC,EAChC,KAAK,EACL,SAAS,EAAE,aAAa,EACxB,WAAW,EACX,UAAU,EACV,UAAU,EACV,eAAuB,EACvB,aAAa,EACb,YAAY,EAAE,gBAAgB,EAC9B,kBAAkB,EAAE,sBAAsB,EAC1C,WAAgB,EAChB,eAAoB,EACpB,QAAQ,EACR,SAAS,EACT,QAAY,EACZ,SAAa,EACb,OAAO,EAAE,cAAc,EACvB,WAAW,EAAE,mBAAmB,EAChC,aAAqB,GACtB,EAAE,sBAAsB,2CA8NxB"}
@@ -1,10 +1,10 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import React, { useMemo, useRef } from "react";
2
+ import React, { useEffect, useMemo, useRef, useState } from "react";
3
3
  import { Text, Box } from "ink";
4
4
  import { useTheme } from "../theme/theme.js";
5
5
  import { SPINNER_FRAMES, SPINNER_INTERVAL, REDUCED_MOTION_DOT } from "../spinner-frames.js";
6
6
  import { PLANNING_PHRASES, selectPhrases, shuffleArray } from "../activity-phrases.js";
7
- import { useAnimationTick, useAnimationActive, deriveFrame, useReducedMotion, } from "./AnimationContext.js";
7
+ import { useFocusedAnimation, deriveFrame, useReducedMotion, useTerminalFocus, } from "./AnimationContext.js";
8
8
  // ── Color pulse cycle ─────────────────────────────────────
9
9
  const PULSE_COLORS = [
10
10
  "#60a5fa", // blue
@@ -25,13 +25,39 @@ const PLAN_PULSE_COLORS = [
25
25
  "#d97706", // amber dark
26
26
  ];
27
27
  const PULSE_INTERVAL = 400;
28
+ // ── Low-churn liveness ────────────────────────────────────
29
+ const LOW_CHURN_INTERVAL = 1000;
30
+ const LOW_CHURN_PHRASE_INTERVAL = 10_000;
31
+ const LOW_CHURN_COLOR_INTERVAL = 2000;
32
+ const HEARTBEAT_DOT_COUNT = 3;
33
+ const HEARTBEAT_ACTIVE_INDEXES = [0, 1, 2, 1];
28
34
  // ── Ellipsis animation ────────────────────────────────────
29
35
  const ELLIPSIS_FRAMES = ["", ".", "..", "..."];
30
36
  const ELLIPSIS_INTERVAL = 500;
31
37
  // ── Phrase rotation ───────────────────────────────────────
32
38
  const WAITING_PHRASE_INTERVAL = 3000;
33
39
  const OTHER_PHRASE_INTERVAL = 4000;
34
- // ── Formatting helpers ────────────────────────────────────
40
+ export function getActivityAccentColors(themeName) {
41
+ if (themeName.includes("ansi")) {
42
+ return {
43
+ duration: "#55ffff",
44
+ tokens: "#ff55ff",
45
+ thinking: "#55ff55",
46
+ };
47
+ }
48
+ if (themeName.startsWith("light")) {
49
+ return {
50
+ duration: "#2563eb",
51
+ tokens: "#c026d3",
52
+ thinking: "#16a34a",
53
+ };
54
+ }
55
+ return {
56
+ duration: "#38bdf8",
57
+ tokens: "#f472b6",
58
+ thinking: "#4ade80",
59
+ };
60
+ }
35
61
  function formatElapsed(ms) {
36
62
  const totalSec = Math.round(ms / 1000);
37
63
  if (totalSec < 60)
@@ -47,46 +73,90 @@ function formatTokenCount(n) {
47
73
  }
48
74
  return String(n);
49
75
  }
50
- function buildMetaSuffix(elapsedMs, thinkingMs, isThinking, tokenEstimate) {
51
- const parts = [];
52
- parts.push(formatElapsed(elapsedMs));
53
- if (tokenEstimate > 0)
54
- parts.push(`↓ ${formatTokenCount(tokenEstimate)} tokens`);
55
- if (isThinking) {
56
- // Live label always show while thinking, add duration once >= 1s
57
- parts.push(thinkingMs >= 1000 ? `thinking for ${formatElapsed(thinkingMs)}` : "thinking");
58
- }
59
- else if (thinkingMs >= 1000) {
60
- // Frozen — past tense with duration
61
- parts.push(`thought for ${formatElapsed(thinkingMs)}`);
62
- }
63
- return parts.join(" · ");
76
+ export function buildMetaParts(elapsedMs, thinkingMs, isThinking, tokenEstimate) {
77
+ const meta = buildStructuredMetaParts(elapsedMs, thinkingMs, isThinking, tokenEstimate);
78
+ const prefix = [meta.duration, meta.tokens].filter(Boolean).join(" · ");
79
+ return { prefix, thinking: meta.thinking };
80
+ }
81
+ function buildStructuredMetaParts(elapsedMs, thinkingMs, isThinking, tokenEstimate) {
82
+ const tokens = tokenEstimate > 0 ? `↓ ${formatTokenCount(tokenEstimate)} tokens` : "";
83
+ const thinking = isThinking
84
+ ? thinkingMs >= 1000
85
+ ? `thinking for ${formatElapsed(thinkingMs)}`
86
+ : "thinking"
87
+ : thinkingMs >= 1000
88
+ ? `thought for ${formatElapsed(thinkingMs)}`
89
+ : "";
90
+ return {
91
+ duration: formatElapsed(elapsedMs),
92
+ tokens,
93
+ thinking,
94
+ };
64
95
  }
65
96
  // ── Shimmer effect ────────────────────────────────────────
66
97
  const SHIMMER_WIDTH = 3;
67
98
  const SHIMMER_INTERVAL = 100;
99
+ export function getThinkingShimmerColor(themeName) {
100
+ if (themeName.includes("ansi"))
101
+ return "#55ff55";
102
+ if (themeName.startsWith("light"))
103
+ return "#15803d";
104
+ return "#22c55e";
105
+ }
68
106
  const ShimmerText = ({ text, color, shimmerPos, }) => (_jsx(Text, { children: text.split("").map((char, i) => {
69
107
  const isBright = Math.abs(i - shimmerPos) <= SHIMMER_WIDTH;
70
108
  return (_jsx(Text, { bold: isBright, color: color, dimColor: !isBright, children: char }, i));
71
109
  }) }));
110
+ function useLowChurnFrame(enabled) {
111
+ const [frame, setFrame] = useState(0);
112
+ useEffect(() => {
113
+ if (!enabled)
114
+ return undefined;
115
+ const timer = setInterval(() => {
116
+ setFrame((current) => current + 1);
117
+ }, LOW_CHURN_INTERVAL);
118
+ return () => clearInterval(timer);
119
+ }, [enabled]);
120
+ return enabled ? frame : 0;
121
+ }
122
+ function HeartbeatGlyph({ activeIndex, color }) {
123
+ return (_jsxs(Text, { children: [Array.from({ length: HEARTBEAT_DOT_COUNT }, (_, index) => {
124
+ const active = index === activeIndex;
125
+ return (_jsx(Text, { bold: active, color: color, dimColor: !active, children: active ? "●" : "·" }, index));
126
+ }), " "] }));
127
+ }
128
+ function ActivityMetaText({ colors, isThinking, meta, mutedColor, }) {
129
+ if (!meta.duration && !meta.tokens && !meta.thinking)
130
+ return null;
131
+ const hasTokenSeparator = !!meta.duration && !!meta.tokens;
132
+ const hasThinkingSeparator = !!meta.thinking && (!!meta.duration || !!meta.tokens);
133
+ return (_jsxs(Text, { children: [_jsx(Text, { color: mutedColor, children: " (" }), meta.duration && (_jsx(Text, { color: colors.duration, bold: true, children: meta.duration })), hasTokenSeparator && _jsx(Text, { color: mutedColor, children: " · " }), meta.tokens && (_jsx(Text, { color: colors.tokens, bold: true, children: meta.tokens })), hasThinkingSeparator && _jsx(Text, { color: mutedColor, children: " · " }), meta.thinking && (_jsx(Text, { color: isThinking ? colors.thinking : mutedColor, bold: isThinking, children: meta.thinking })), _jsx(Text, { color: mutedColor, children: ")" })] }));
134
+ }
72
135
  const RETRY_REASON_LABELS = {
73
136
  overloaded: "Provider overloaded",
74
137
  rate_limit: "Rate limited",
138
+ provider_error: "Provider server error",
75
139
  empty_response: "Empty response",
76
140
  stream_stall: "Provider stream stalled",
77
141
  overflow_compact: "Context overflow — compacting",
78
142
  };
79
- export function ActivityIndicator({ phase, elapsedMs: elapsedMsProp, runStartRef, thinkingMs, isThinking, tokenEstimate, charCountRef: charCountRefProp, realTokensAccumRef: realTokensAccumRefProp, userMessage = "", activeToolNames = [], planMode, retryInfo, planDone = 0, planTotal = 0, phrases: phrasesByPhase, pulseColors: pulseColorsOverride, }) {
143
+ export function ActivityIndicator({ phase, elapsedMs: elapsedMsProp, runStartRef, thinkingMs, isThinking, thinkingEnabled = false, tokenEstimate, charCountRef: charCountRefProp, realTokensAccumRef: realTokensAccumRefProp, userMessage = "", activeToolNames = [], planMode, retryInfo, planDone = 0, planTotal = 0, phrases: phrasesByPhase, pulseColors: pulseColorsOverride, staticDisplay = false, }) {
80
144
  const theme = useTheme();
81
145
  const reducedMotion = useReducedMotion();
82
- // Smooth elapsed time: compute from runStartRef on each animation tick
83
- // instead of using the 1000ms state update (which looks jerky).
84
- const elapsedMs = runStartRef?.current && phase !== "idle" ? Date.now() - runStartRef.current : elapsedMsProp;
85
- // Use the global animation tick instead of a local timer.
86
- // This eliminates a duplicate 100ms setInterval that was causing
87
- // independent re-renders on top of the global AnimationProvider tick.
88
- useAnimationActive();
89
- const tick = useAnimationTick();
146
+ const thinkingShimmerColor = getThinkingShimmerColor(theme.name);
147
+ const accentColors = getActivityAccentColors(theme.name);
148
+ // Full animation uses the shared 100ms clock. Static display deliberately
149
+ // avoids that clock and uses a tiny 1s heartbeat instead.
150
+ const canAnimate = phase !== "idle" && !reducedMotion;
151
+ const { active: fullAnimationActive, tick } = useFocusedAnimation(canAnimate && !staticDisplay);
152
+ const focused = useTerminalFocus(canAnimate && staticDisplay);
153
+ const lowChurnActive = canAnimate && staticDisplay && focused;
154
+ const lowChurnFrame = useLowChurnFrame(lowChurnActive);
155
+ // Smooth elapsed time only in full-animation mode. Low-churn mode uses the
156
+ // existing 1s timer from useAgentLoop so the status line repaints slowly.
157
+ const elapsedMs = runStartRef?.current && phase !== "idle" && fullAnimationActive
158
+ ? Date.now() - runStartRef.current
159
+ : elapsedMsProp;
90
160
  // ── Smooth token counter animation ─────────────────────
91
161
  // Smooths the TOTAL token estimate (real + estimated) so it never
92
162
  // jumps — whether tokens arrive from streaming deltas or from
@@ -99,7 +169,7 @@ export function ActivityIndicator({ phase, elapsedMs: elapsedMsProp, runStartRef
99
169
  const currentChars = charCountRefProp?.current ?? 0;
100
170
  const realTokens = realTokensAccumRefProp?.current ?? 0;
101
171
  const targetTokens = charCountRefProp ? realTokens + Math.ceil(currentChars / 4) : tokenEstimate;
102
- if (reducedMotion || !charCountRefProp) {
172
+ if (!fullAnimationActive || !charCountRefProp) {
103
173
  displayedTokensRef.current = targetTokens;
104
174
  }
105
175
  else {
@@ -128,32 +198,61 @@ export function ActivityIndicator({ phase, elapsedMs: elapsedMsProp, runStartRef
128
198
  }
129
199
  }
130
200
  const smoothTokenEstimate = displayedTokensRef.current;
131
- // Derive all animation frames from the single tick counter
132
- const spinnerFrame = reducedMotion
133
- ? 0
134
- : deriveFrame(tick, SPINNER_INTERVAL, SPINNER_FRAMES.length);
135
- const pulseColors = planMode ? PLAN_PULSE_COLORS : (pulseColorsOverride ?? PULSE_COLORS);
136
- const colorFrame = deriveFrame(tick, PULSE_INTERVAL, pulseColors.length);
137
- const ellipsisFrame = deriveFrame(tick, ELLIPSIS_INTERVAL, ELLIPSIS_FRAMES.length);
201
+ // Derive all animation frames from the single tick counter.
202
+ const spinnerFrame = fullAnimationActive
203
+ ? deriveFrame(tick, SPINNER_INTERVAL, SPINNER_FRAMES.length)
204
+ : 0;
205
+ const pulseColors = planMode || !pulseColorsOverride || pulseColorsOverride.length === 0
206
+ ? planMode
207
+ ? PLAN_PULSE_COLORS
208
+ : PULSE_COLORS
209
+ : pulseColorsOverride;
210
+ const colorFrame = fullAnimationActive
211
+ ? deriveFrame(tick, PULSE_INTERVAL, pulseColors.length)
212
+ : lowChurnActive
213
+ ? Math.floor((lowChurnFrame * LOW_CHURN_INTERVAL) / LOW_CHURN_COLOR_INTERVAL) %
214
+ pulseColors.length
215
+ : 0;
216
+ const ellipsisFrame = fullAnimationActive
217
+ ? deriveFrame(tick, ELLIPSIS_INTERVAL, ELLIPSIS_FRAMES.length)
218
+ : lowChurnActive
219
+ ? lowChurnFrame % ELLIPSIS_FRAMES.length
220
+ : 0;
221
+ const heartbeatFrame = lowChurnActive ? lowChurnFrame % HEARTBEAT_ACTIVE_INDEXES.length : 0;
138
222
  // Phrase rotation — pick phrases based on phase + user message + active tools, shuffle, rotate
139
- const toolNamesKey = activeToolNames.sort().join(",");
223
+ const sortedActiveToolNames = [...activeToolNames].sort();
224
+ const toolNamesKey = sortedActiveToolNames.join(",");
140
225
  const overridePhrases = phrasesByPhase?.[phase];
141
226
  const phrases = useMemo(() => shuffleArray(overridePhrases && overridePhrases.length > 0
142
227
  ? overridePhrases
143
228
  : planMode && phase === "waiting"
144
229
  ? PLANNING_PHRASES
145
- : selectPhrases(phase, userMessage, activeToolNames)), [phase, userMessage, toolNamesKey, planMode, overridePhrases]);
146
- const phraseInterval = phase === "waiting" ? WAITING_PHRASE_INTERVAL : OTHER_PHRASE_INTERVAL;
147
- const phraseIndex = Math.floor((tick * SHIMMER_INTERVAL) / phraseInterval) % phrases.length;
148
- const spinnerColor = pulseColors[colorFrame];
230
+ : selectPhrases(phase, userMessage, activeToolNames, thinkingEnabled)), [phase, userMessage, toolNamesKey, planMode, overridePhrases, thinkingEnabled]);
231
+ const phraseInterval = lowChurnActive
232
+ ? LOW_CHURN_PHRASE_INTERVAL
233
+ : phase === "waiting"
234
+ ? WAITING_PHRASE_INTERVAL
235
+ : OTHER_PHRASE_INTERVAL;
236
+ const phraseIndex = fullAnimationActive
237
+ ? Math.floor((tick * SHIMMER_INTERVAL) / phraseInterval) % phrases.length
238
+ : lowChurnActive
239
+ ? Math.floor((lowChurnFrame * LOW_CHURN_INTERVAL) / phraseInterval) % phrases.length
240
+ : 0;
241
+ const spinnerColor = pulseColors[colorFrame] ?? pulseColors[0] ?? theme.spinnerColor;
242
+ const heartbeatIndex = HEARTBEAT_ACTIVE_INDEXES[heartbeatFrame] ?? HEARTBEAT_ACTIVE_INDEXES[0];
149
243
  const phrase = phrases[phraseIndex] ?? phrases[0];
150
244
  const ellipsis = ELLIPSIS_FRAMES[ellipsisFrame];
151
245
  // Shimmer — derive position from tick, wrapping across phrase length
152
246
  const shimmerCycle = phrase.length + SHIMMER_WIDTH * 2;
153
- const shimmerPos = (tick % shimmerCycle) - SHIMMER_WIDTH;
247
+ const shimmerPos = fullAnimationActive ? (tick % shimmerCycle) - SHIMMER_WIDTH : -SHIMMER_WIDTH;
154
248
  // Pad ellipsis to prevent text from shifting
155
- const paddedEllipsis = ellipsis + " ".repeat(3 - ellipsis.length);
156
- const meta = buildMetaSuffix(elapsedMs, thinkingMs, isThinking, smoothTokenEstimate);
249
+ const paddedEllipsis = fullAnimationActive || lowChurnActive ? ellipsis + " ".repeat(3 - ellipsis.length) : "...";
250
+ const structuredMeta = buildStructuredMetaParts(elapsedMs, thinkingMs, isThinking, smoothTokenEstimate);
251
+ const legacyMeta = buildMetaParts(elapsedMs, thinkingMs, isThinking, smoothTokenEstimate);
252
+ const thinkingShimmerCycle = Math.max(1, legacyMeta.thinking.length + SHIMMER_WIDTH * 2);
253
+ const thinkingShimmerPos = fullAnimationActive
254
+ ? (tick % thinkingShimmerCycle) - SHIMMER_WIDTH
255
+ : -SHIMMER_WIDTH;
157
256
  // ── Plan progress bar ──────────────────────────────────
158
257
  const planBar = useMemo(() => {
159
258
  if (planTotal <= 0)
@@ -167,8 +266,8 @@ export function ActivityIndicator({ phase, elapsedMs: elapsedMsProp, runStartRef
167
266
  const retryLabel = RETRY_REASON_LABELS[retryInfo.reason];
168
267
  const retryColor = "#f59e0b"; // amber
169
268
  const delaySec = retryInfo.delayMs > 0 ? ` waiting ${Math.round(retryInfo.delayMs / 1000)}s` : "";
170
- return (_jsxs(Box, { children: [_jsxs(Text, { color: retryColor, bold: true, children: [reducedMotion ? REDUCED_MOTION_DOT : SPINNER_FRAMES[spinnerFrame], " "] }), _jsxs(Text, { color: retryColor, children: [retryLabel, " \u2014 retrying (", retryInfo.attempt, "/", retryInfo.maxAttempts, ")"] }), _jsxs(Text, { color: theme.textDim, children: [delaySec, " (", formatElapsed(elapsedMs), ")"] })] }));
269
+ return (_jsxs(Box, { children: [lowChurnActive ? (_jsx(HeartbeatGlyph, { activeIndex: heartbeatIndex, color: retryColor })) : (_jsxs(Text, { color: retryColor, bold: true, children: [reducedMotion ? REDUCED_MOTION_DOT : SPINNER_FRAMES[spinnerFrame], " "] })), _jsxs(Text, { color: retryColor, children: [retryLabel, " \u2014 retrying (", retryInfo.attempt, "/", retryInfo.maxAttempts, ")"] }), _jsx(Text, { color: theme.textDim, children: delaySec }), _jsx(ActivityMetaText, { colors: accentColors, isThinking: isThinking, meta: { duration: formatElapsed(elapsedMs), tokens: "", thinking: "" }, mutedColor: theme.textDim })] }));
171
270
  }
172
- return (_jsxs(Box, { children: [_jsxs(Text, { color: spinnerColor, bold: true, children: [reducedMotion ? REDUCED_MOTION_DOT : SPINNER_FRAMES[spinnerFrame], " "] }), reducedMotion ? (_jsx(Text, { dimColor: true, color: spinnerColor, children: phrase })) : (_jsx(ShimmerText, { text: phrase, color: spinnerColor, shimmerPos: shimmerPos })), _jsx(Text, { color: theme.textDim, children: reducedMotion ? "..." : paddedEllipsis }), meta && (_jsxs(Text, { color: theme.textDim, children: [" (", meta, ")"] })), planBar && (_jsxs(Text, { children: [" ", _jsx(Text, { color: planDone === planTotal ? theme.success : theme.planPrimary, children: planBar }), _jsxs(Text, { color: theme.textDim, children: [" ", planDone, "/", planTotal] })] }))] }));
271
+ return (_jsxs(Box, { children: [lowChurnActive ? (_jsx(HeartbeatGlyph, { activeIndex: heartbeatIndex, color: spinnerColor })) : (_jsxs(Text, { color: spinnerColor, bold: true, children: [reducedMotion ? REDUCED_MOTION_DOT : SPINNER_FRAMES[spinnerFrame], " "] })), fullAnimationActive ? (_jsx(ShimmerText, { text: phrase, color: spinnerColor, shimmerPos: shimmerPos })) : (_jsx(Text, { color: spinnerColor, bold: canAnimate && (fullAnimationActive || lowChurnActive), children: phrase })), _jsx(Text, { color: theme.textDim, children: reducedMotion ? "..." : paddedEllipsis }), fullAnimationActive && isThinking && legacyMeta.thinking ? (_jsxs(Text, { children: [_jsx(Text, { color: theme.textDim, children: " (" }), legacyMeta.prefix && _jsx(Text, { color: theme.textDim, children: legacyMeta.prefix }), legacyMeta.prefix && legacyMeta.thinking ? (_jsx(Text, { color: theme.textDim, children: " · " })) : null, _jsx(ShimmerText, { text: legacyMeta.thinking, color: thinkingShimmerColor, shimmerPos: thinkingShimmerPos }), _jsx(Text, { color: theme.textDim, children: ")" })] })) : (_jsx(ActivityMetaText, { colors: accentColors, isThinking: isThinking, meta: structuredMeta, mutedColor: theme.textDim })), planBar && (_jsxs(Text, { children: [" ", _jsx(Text, { color: planDone === planTotal ? theme.success : theme.planPrimary, children: planBar }), _jsxs(Text, { color: theme.textDim, children: [" ", planDone, "/", planTotal] })] }))] }));
173
272
  }
174
273
  //# sourceMappingURL=ActivityIndicator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ActivityIndicator.js","sourceRoot":"","sources":["../../../src/ui/components/ActivityIndicator.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAC/C,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAG7C,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC5F,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACvF,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,WAAW,EACX,gBAAgB,GACjB,MAAM,uBAAuB,CAAC;AAE/B,6DAA6D;AAE7D,MAAM,YAAY,GAAG;IACnB,SAAS,EAAE,OAAO;IAClB,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,gBAAgB;IAC3B,SAAS,EAAE,cAAc;IACzB,SAAS,EAAE,MAAM;IACjB,SAAS,EAAE,cAAc;CAC1B,CAAC;AAEF,MAAM,iBAAiB,GAAG;IACxB,SAAS,EAAE,QAAQ;IACnB,SAAS,EAAE,cAAc;IACzB,SAAS,EAAE,QAAQ;IACnB,SAAS,EAAE,aAAa;IACxB,SAAS,EAAE,QAAQ;IACnB,SAAS,EAAE,cAAc;IACzB,SAAS,EAAE,aAAa;CACzB,CAAC;AACF,MAAM,cAAc,GAAG,GAAG,CAAC;AAE3B,6DAA6D;AAE7D,MAAM,eAAe,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;AAC/C,MAAM,iBAAiB,GAAG,GAAG,CAAC;AAE9B,6DAA6D;AAE7D,MAAM,uBAAuB,GAAG,IAAI,CAAC;AACrC,MAAM,qBAAqB,GAAG,IAAI,CAAC;AAEnC,6DAA6D;AAE7D,SAAS,aAAa,CAAC,EAAU;IAC/B,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;IACvC,IAAI,QAAQ,GAAG,EAAE;QAAE,OAAO,GAAG,QAAQ,GAAG,CAAC;IACzC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC;IACtC,MAAM,GAAG,GAAG,QAAQ,GAAG,EAAE,CAAC;IAC1B,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC;AACjD,CAAC;AAED,SAAS,gBAAgB,CAAC,CAAS;IACjC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;QACd,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;QACnB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;IACpD,CAAC;IACD,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;AACnB,CAAC;AAED,SAAS,eAAe,CACtB,SAAiB,EACjB,UAAkB,EAClB,UAAmB,EACnB,aAAqB;IAErB,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC;IAErC,IAAI,aAAa,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,KAAK,gBAAgB,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;IAEjF,IAAI,UAAU,EAAE,CAAC;QACf,mEAAmE;QACnE,KAAK,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,CAAC,CAAC,gBAAgB,aAAa,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IAC5F,CAAC;SAAM,IAAI,UAAU,IAAI,IAAI,EAAE,CAAC;QAC9B,oCAAoC;QACpC,KAAK,CAAC,IAAI,CAAC,eAAe,aAAa,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IACzD,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC3B,CAAC;AAED,6DAA6D;AAE7D,MAAM,aAAa,GAAG,CAAC,CAAC;AACxB,MAAM,gBAAgB,GAAG,GAAG,CAAC;AAE7B,MAAM,WAAW,GAAkE,CAAC,EAClF,IAAI,EACJ,KAAK,EACL,UAAU,GACX,EAAE,EAAE,CAAC,CACJ,KAAC,IAAI,cACF,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;QAC9B,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC,IAAI,aAAa,CAAC;QAC3D,OAAO,CACL,KAAC,IAAI,IAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,QAAQ,YACpD,IAAI,IADuD,CAAC,CAExD,CACR,CAAC;IACJ,CAAC,CAAC,GACG,CACR,CAAC;AAqCF,MAAM,mBAAmB,GAAwC;IAC/D,UAAU,EAAE,qBAAqB;IACjC,UAAU,EAAE,cAAc;IAC1B,cAAc,EAAE,gBAAgB;IAChC,YAAY,EAAE,yBAAyB;IACvC,gBAAgB,EAAE,+BAA+B;CAClD,CAAC;AAEF,MAAM,UAAU,iBAAiB,CAAC,EAChC,KAAK,EACL,SAAS,EAAE,aAAa,EACxB,WAAW,EACX,UAAU,EACV,UAAU,EACV,aAAa,EACb,YAAY,EAAE,gBAAgB,EAC9B,kBAAkB,EAAE,sBAAsB,EAC1C,WAAW,GAAG,EAAE,EAChB,eAAe,GAAG,EAAE,EACpB,QAAQ,EACR,SAAS,EACT,QAAQ,GAAG,CAAC,EACZ,SAAS,GAAG,CAAC,EACb,OAAO,EAAE,cAAc,EACvB,WAAW,EAAE,mBAAmB,GACT;IACvB,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IACzB,MAAM,aAAa,GAAG,gBAAgB,EAAE,CAAC;IAEzC,uEAAuE;IACvE,gEAAgE;IAChE,MAAM,SAAS,GACb,WAAW,EAAE,OAAO,IAAI,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC;IAE9F,0DAA0D;IAC1D,iEAAiE;IACjE,sEAAsE;IACtE,kBAAkB,EAAE,CAAC;IACrB,MAAM,IAAI,GAAG,gBAAgB,EAAE,CAAC;IAEhC,0DAA0D;IAC1D,kEAAkE;IAClE,8DAA8D;IAC9D,0DAA0D;IAC1D,EAAE;IACF,iEAAiE;IACjE,8DAA8D;IAC9D,2BAA2B;IAC3B,MAAM,kBAAkB,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACrC,MAAM,YAAY,GAAG,gBAAgB,EAAE,OAAO,IAAI,CAAC,CAAC;IACpD,MAAM,UAAU,GAAG,sBAAsB,EAAE,OAAO,IAAI,CAAC,CAAC;IACxD,MAAM,YAAY,GAAG,gBAAgB,CAAC,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;IAEjG,IAAI,aAAa,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACvC,kBAAkB,CAAC,OAAO,GAAG,YAAY,CAAC;IAC5C,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,GAAG,YAAY,GAAG,kBAAkB,CAAC,OAAO,CAAC;QACtD,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;YACZ,oDAAoD;YACpD,IAAI,SAAiB,CAAC;YACtB,IAAI,GAAG,GAAG,EAAE,EAAE,CAAC;gBACb,SAAS,GAAG,CAAC,CAAC;YAChB,CAAC;iBAAM,IAAI,GAAG,GAAG,EAAE,EAAE,CAAC;gBACpB,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;YAChD,CAAC;iBAAM,IAAI,GAAG,GAAG,GAAG,EAAE,CAAC;gBACrB,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC;YACjD,CAAC;iBAAM,CAAC;gBACN,2DAA2D;gBAC3D,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC;YAClD,CAAC;YACD,kBAAkB,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,kBAAkB,CAAC,OAAO,GAAG,SAAS,EAAE,YAAY,CAAC,CAAC;QAC9F,CAAC;aAAM,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;YACnB,4CAA4C;YAC5C,kBAAkB,CAAC,OAAO,GAAG,YAAY,CAAC;QAC5C,CAAC;IACH,CAAC;IAED,MAAM,mBAAmB,GAAG,kBAAkB,CAAC,OAAO,CAAC;IAEvD,2DAA2D;IAC3D,MAAM,YAAY,GAAG,aAAa;QAChC,CAAC,CAAC,CAAC;QACH,CAAC,CAAC,WAAW,CAAC,IAAI,EAAE,gBAAgB,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC;IAC/D,MAAM,WAAW,GAAG,QAAQ,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,mBAAmB,IAAI,YAAY,CAAC,CAAC;IACzF,MAAM,UAAU,GAAG,WAAW,CAAC,IAAI,EAAE,cAAc,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACzE,MAAM,aAAa,GAAG,WAAW,CAAC,IAAI,EAAE,iBAAiB,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;IAEnF,+FAA+F;IAC/F,MAAM,YAAY,GAAG,eAAe,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACtD,MAAM,eAAe,GAAG,cAAc,EAAE,CAAC,KAAK,CAAC,CAAC;IAChD,MAAM,OAAO,GAAG,OAAO,CACrB,GAAG,EAAE,CACH,YAAY,CACV,eAAe,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC;QAC3C,CAAC,CAAC,eAAe;QACjB,CAAC,CAAC,QAAQ,IAAI,KAAK,KAAK,SAAS;YAC/B,CAAC,CAAC,gBAAgB;YAClB,CAAC,CAAC,aAAa,CAAC,KAAK,EAAE,WAAW,EAAE,eAAe,CAAC,CACzD,EACH,CAAC,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAE,eAAe,CAAC,CAC9D,CAAC;IACF,MAAM,cAAc,GAAG,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,qBAAqB,CAAC;IAC7F,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,GAAG,gBAAgB,CAAC,GAAG,cAAc,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IAE5F,MAAM,YAAY,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC;IAC7C,MAAM,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;IAClD,MAAM,QAAQ,GAAG,eAAe,CAAC,aAAa,CAAC,CAAC;IAEhD,qEAAqE;IACrE,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,GAAG,aAAa,GAAG,CAAC,CAAC;IACvD,MAAM,UAAU,GAAG,CAAC,IAAI,GAAG,YAAY,CAAC,GAAG,aAAa,CAAC;IAEzD,6CAA6C;IAC7C,MAAM,cAAc,GAAG,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;IAElE,MAAM,IAAI,GAAG,eAAe,CAAC,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,mBAAmB,CAAC,CAAC;IAErF,0DAA0D;IAC1D,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE;QAC3B,IAAI,SAAS,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;QAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QACzC,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,GAAG,SAAS,CAAC,GAAG,QAAQ,CAAC,CAAC;QAClE,OAAO,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,QAAQ,GAAG,WAAW,CAAC,CAAC;IAChF,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;IAE1B,0DAA0D;IAC1D,IAAI,KAAK,KAAK,UAAU,IAAI,SAAS,EAAE,CAAC;QACtC,MAAM,UAAU,GAAG,mBAAmB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACzD,MAAM,UAAU,GAAG,SAAS,CAAC,CAAC,QAAQ;QACtC,MAAM,QAAQ,GACZ,SAAS,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QACnF,OAAO,CACL,MAAC,GAAG,eACF,MAAC,IAAI,IAAC,KAAK,EAAE,UAAU,EAAE,IAAI,mBAC1B,aAAa,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,cAAc,CAAC,YAAY,CAAC,EAAE,GAAG,IAClE,EACP,MAAC,IAAI,IAAC,KAAK,EAAE,UAAU,aACpB,UAAU,wBAAe,SAAS,CAAC,OAAO,OAAG,SAAS,CAAC,WAAW,SAC9D,EACP,MAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,OAAO,aACvB,QAAQ,EACR,KAAK,EACL,aAAa,CAAC,SAAS,CAAC,EACxB,GAAG,IACC,IACH,CACP,CAAC;IACJ,CAAC;IAED,OAAO,CACL,MAAC,GAAG,eACF,MAAC,IAAI,IAAC,KAAK,EAAE,YAAY,EAAE,IAAI,mBAC5B,aAAa,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,cAAc,CAAC,YAAY,CAAC,EAAE,GAAG,IAClE,EACN,aAAa,CAAC,CAAC,CAAC,CACf,KAAC,IAAI,IAAC,QAAQ,QAAC,KAAK,EAAE,YAAY,YAC/B,MAAM,GACF,CACR,CAAC,CAAC,CAAC,CACF,KAAC,WAAW,IAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,GAAI,CAC3E,EACD,KAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,OAAO,YAAG,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,cAAc,GAAQ,EAC1E,IAAI,IAAI,CACP,MAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,OAAO,aACvB,KAAK,EACL,IAAI,EACJ,GAAG,IACC,CACR,EACA,OAAO,IAAI,CACV,MAAC,IAAI,eACF,IAAI,EACL,KAAC,IAAI,IAAC,KAAK,EAAE,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,YAAG,OAAO,GAAQ,EACzF,MAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,OAAO,aACvB,GAAG,EACH,QAAQ,OAAG,SAAS,IAChB,IACF,CACR,IACG,CACP,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"ActivityIndicator.js","sourceRoot":"","sources":["../../../src/ui/components/ActivityIndicator.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ActivityIndicator.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ActivityIndicator.test.d.ts","sourceRoot":"","sources":["../../../src/ui/components/ActivityIndicator.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,40 @@
1
+ import { describe, expect, it } from "vitest";
2
+ import { buildMetaParts, getThinkingShimmerColor } from "./ActivityIndicator.js";
3
+ describe("buildMetaParts", () => {
4
+ it("shows live thinking without a duration before one second", () => {
5
+ expect(buildMetaParts(400, 400, true, 0)).toEqual({
6
+ prefix: "0s",
7
+ thinking: "thinking",
8
+ });
9
+ });
10
+ it("shows live thinking duration after one second", () => {
11
+ expect(buildMetaParts(12_400, 5_400, true, 425)).toEqual({
12
+ prefix: "12s · ↓ 425 tokens",
13
+ thinking: "thinking for 5s",
14
+ });
15
+ });
16
+ it("shows completed thought duration only after one second", () => {
17
+ expect(buildMetaParts(61_000, 1_000, false, 1_250)).toEqual({
18
+ prefix: "1m 1s · ↓ 1.3k tokens",
19
+ thinking: "thought for 1s",
20
+ });
21
+ });
22
+ it("omits completed thought duration below one second", () => {
23
+ expect(buildMetaParts(2_000, 999, false, 0)).toEqual({
24
+ prefix: "2s",
25
+ thinking: "",
26
+ });
27
+ });
28
+ });
29
+ describe("getThinkingShimmerColor", () => {
30
+ it("uses high-contrast green on dark themes", () => {
31
+ expect(getThinkingShimmerColor("dark")).toBe("#22c55e");
32
+ });
33
+ it("uses a darker green on light themes", () => {
34
+ expect(getThinkingShimmerColor("light")).toBe("#15803d");
35
+ });
36
+ it("uses ANSI green on ANSI themes", () => {
37
+ expect(getThinkingShimmerColor("light-ansi")).toBe("#55ff55");
38
+ });
39
+ });
40
+ //# sourceMappingURL=ActivityIndicator.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ActivityIndicator.test.js","sourceRoot":"","sources":["../../../src/ui/components/ActivityIndicator.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAEjF,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC9B,EAAE,CAAC,0DAA0D,EAAE,GAAG,EAAE;QAClE,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;YAChD,MAAM,EAAE,IAAI;YACZ,QAAQ,EAAE,UAAU;SACrB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACvD,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC;YACvD,MAAM,EAAE,oBAAoB;YAC5B,QAAQ,EAAE,iBAAiB;SAC5B,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;QAChE,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC;YAC1D,MAAM,EAAE,uBAAuB;YAC/B,QAAQ,EAAE,gBAAgB;SAC3B,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;QAC3D,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;YACnD,MAAM,EAAE,IAAI;YACZ,QAAQ,EAAE,EAAE;SACb,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;IACvC,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACjD,MAAM,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;QAC7C,MAAM,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;QACxC,MAAM,CAAC,uBAAuB,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -16,13 +16,19 @@ export declare function AnimationProvider({ children }: {
16
16
  children: React.ReactNode;
17
17
  }): import("react/jsx-runtime").JSX.Element;
18
18
  /** Returns the current global animation tick counter. */
19
- export declare function useAnimationTick(): number;
19
+ export declare function useAnimationTick(enabled?: boolean): number;
20
+ /** Returns whether the terminal currently has focus when focus reporting is supported. */
21
+ export declare function useTerminalFocus(enabled?: boolean): boolean;
20
22
  /**
21
23
  * Register this component as needing animation ticks.
22
24
  * The global timer only runs while at least one component is registered.
23
25
  * Call this in any component that uses animation frames (spinners, shimmer, etc).
24
26
  */
25
- export declare function useAnimationActive(): void;
27
+ export declare function useAnimationActive(enabled?: boolean): void;
28
+ export declare function useFocusedAnimation(enabled?: boolean): {
29
+ active: boolean;
30
+ tick: number;
31
+ };
26
32
  /** Derive a frame index from the global tick for a given interval and frame count. */
27
33
  export declare function deriveFrame(tick: number, intervalMs: number, frameCount: number): number;
28
34
  /**
@@ -1 +1 @@
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;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,OAAO,CAE1C;AAED,OAAO,EAAE,aAAa,EAAE,CAAC"}
1
+ {"version":3,"file":"AnimationContext.d.ts","sourceRoot":"","sources":["../../../src/ui/components/AnimationContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAQN,MAAM,OAAO,CAAC;AAEf;;;;;;;;;;;GAWG;AAEH,QAAA,MAAM,aAAa,MAAM,CAAC;AAoB1B,wBAAgB,iBAAiB,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,2CAoG5E;AAED,yDAAyD;AACzD,wBAAgB,gBAAgB,CAAC,OAAO,UAAO,GAAG,MAAM,CAQvD;AAED,0FAA0F;AAC1F,wBAAgB,gBAAgB,CAAC,OAAO,UAAO,GAAG,OAAO,CAQxD;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,UAAO,GAAG,IAAI,CAMvD;AAED,wBAAgB,mBAAmB,CAAC,OAAO,UAAO,GAAG;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAMrF;AAED,sFAAsF;AACtF,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAExF;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,OAAO,CAE1C;AAED,OAAO,EAAE,aAAa,EAAE,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
- import React, { createContext, useContext, useState, useEffect, useCallback, useRef } from "react";
2
+ import React, { createContext, useContext, useEffect, useCallback, useMemo, useRef, useSyncExternalStore, } from "react";
3
3
  /**
4
4
  * Global animation tick context.
5
5
  *
@@ -12,20 +12,33 @@ import React, { createContext, useContext, useState, useEffect, useCallback, use
12
12
  * `useAnimationActive()`, avoiding 10 re-renders/sec during idle streaming
13
13
  * when no spinners or animations are visible.
14
14
  */
15
- const TICK_INTERVAL = 100; // ms — fast enough for the spinner (100ms frames)
16
- const AnimationContext = createContext(0);
17
- const AnimationControlContext = createContext({ register: () => () => { } });
15
+ const TICK_INTERVAL = 100; // ms — base clock; consumers can derive slower frames.
16
+ const ENABLE_FOCUS_REPORTING = "\x1b[?1004h";
17
+ const DISABLE_FOCUS_REPORTING = "\x1b[?1004l";
18
+ const noopStore = {
19
+ register: () => () => { },
20
+ subscribe: () => () => { },
21
+ getSnapshot: () => 0,
22
+ isFocused: () => true,
23
+ };
24
+ const AnimationStoreContext = createContext(noopStore);
18
25
  export function AnimationProvider({ children }) {
19
- const [tick, setTick] = useState(0);
26
+ const tickRef = useRef(0);
20
27
  const subscriberCountRef = useRef(0);
28
+ const focusedRef = useRef(true);
21
29
  const timerRef = useRef(null);
30
+ const listenersRef = useRef(new Set());
31
+ const notify = useCallback(() => {
32
+ tickRef.current += 1;
33
+ for (const listener of listenersRef.current) {
34
+ listener();
35
+ }
36
+ }, []);
22
37
  const startTimer = useCallback(() => {
23
38
  if (timerRef.current)
24
39
  return;
25
- timerRef.current = setInterval(() => {
26
- setTick((t) => t + 1);
27
- }, TICK_INTERVAL);
28
- }, []);
40
+ timerRef.current = setInterval(notify, TICK_INTERVAL);
41
+ }, [notify]);
29
42
  const stopTimer = useCallback(() => {
30
43
  if (timerRef.current) {
31
44
  clearInterval(timerRef.current);
@@ -36,6 +49,44 @@ export function AnimationProvider({ children }) {
36
49
  useEffect(() => {
37
50
  return () => stopTimer();
38
51
  }, [stopTimer]);
52
+ useEffect(() => {
53
+ if (!process.stdin.isTTY)
54
+ return undefined;
55
+ const setFocused = (focused) => {
56
+ if (focusedRef.current === focused)
57
+ return;
58
+ focusedRef.current = focused;
59
+ for (const listener of listenersRef.current) {
60
+ listener();
61
+ }
62
+ };
63
+ const onData = (chunk) => {
64
+ const data = chunk.toString("utf8");
65
+ const lastFocusIn = data.lastIndexOf("\x1b[I");
66
+ const lastFocusOut = data.lastIndexOf("\x1b[O");
67
+ if (lastFocusIn > lastFocusOut)
68
+ setFocused(true);
69
+ else if (lastFocusOut > lastFocusIn)
70
+ setFocused(false);
71
+ };
72
+ process.stdin.on("data", onData);
73
+ let enableTimer = null;
74
+ const enableWhenRaw = () => {
75
+ if (process.stdin.isRaw === false) {
76
+ enableTimer = setTimeout(enableWhenRaw, 10);
77
+ return;
78
+ }
79
+ process.stdout.write(ENABLE_FOCUS_REPORTING);
80
+ };
81
+ enableTimer = setTimeout(enableWhenRaw, 0);
82
+ return () => {
83
+ if (enableTimer)
84
+ clearTimeout(enableTimer);
85
+ process.stdin.off("data", onData);
86
+ process.stdout.write(DISABLE_FOCUS_REPORTING);
87
+ focusedRef.current = true;
88
+ };
89
+ }, []);
39
90
  const register = useCallback(() => {
40
91
  subscriberCountRef.current++;
41
92
  if (subscriberCountRef.current === 1)
@@ -48,23 +99,50 @@ export function AnimationProvider({ children }) {
48
99
  }
49
100
  };
50
101
  }, [startTimer, stopTimer]);
51
- const control = React.useMemo(() => ({ register }), [register]);
52
- return (_jsx(AnimationControlContext, { value: control, children: _jsx(AnimationContext, { value: tick, children: children }) }));
102
+ const subscribe = useCallback((listener) => {
103
+ listenersRef.current.add(listener);
104
+ return () => {
105
+ listenersRef.current.delete(listener);
106
+ };
107
+ }, []);
108
+ const getSnapshot = useCallback(() => tickRef.current, []);
109
+ const isFocused = useCallback(() => focusedRef.current, []);
110
+ const store = useMemo(() => ({ register, subscribe, getSnapshot, isFocused }), [getSnapshot, isFocused, register, subscribe]);
111
+ return _jsx(AnimationStoreContext, { value: store, children: children });
53
112
  }
54
113
  /** Returns the current global animation tick counter. */
55
- export function useAnimationTick() {
56
- return useContext(AnimationContext);
114
+ export function useAnimationTick(enabled = true) {
115
+ const store = useContext(AnimationStoreContext);
116
+ const subscribe = useCallback((listener) => (enabled ? store.subscribe(listener) : () => { }), [enabled, store]);
117
+ const getSnapshot = useCallback(() => (enabled ? store.getSnapshot() : 0), [enabled, store]);
118
+ return useSyncExternalStore(subscribe, getSnapshot, getSnapshot);
119
+ }
120
+ /** Returns whether the terminal currently has focus when focus reporting is supported. */
121
+ export function useTerminalFocus(enabled = true) {
122
+ const store = useContext(AnimationStoreContext);
123
+ const subscribe = useCallback((listener) => (enabled ? store.subscribe(listener) : () => { }), [enabled, store]);
124
+ const getSnapshot = useCallback(() => !enabled || store.isFocused(), [enabled, store]);
125
+ return useSyncExternalStore(subscribe, getSnapshot, getSnapshot);
57
126
  }
58
127
  /**
59
128
  * Register this component as needing animation ticks.
60
129
  * The global timer only runs while at least one component is registered.
61
130
  * Call this in any component that uses animation frames (spinners, shimmer, etc).
62
131
  */
63
- export function useAnimationActive() {
64
- const { register } = useContext(AnimationControlContext);
132
+ export function useAnimationActive(enabled = true) {
133
+ const { register } = useContext(AnimationStoreContext);
65
134
  useEffect(() => {
135
+ if (!enabled)
136
+ return undefined;
66
137
  return register();
67
- }, [register]);
138
+ }, [enabled, register]);
139
+ }
140
+ export function useFocusedAnimation(enabled = true) {
141
+ const focused = useTerminalFocus(enabled);
142
+ const active = enabled && focused;
143
+ useAnimationActive(active);
144
+ const tick = useAnimationTick(active);
145
+ return { active, tick };
68
146
  }
69
147
  /** Derive a frame index from the global tick for a given interval and frame count. */
70
148
  export function deriveFrame(tick, intervalMs, frameCount) {
@@ -1 +1 @@
1
- {"version":3,"file":"AnimationContext.js","sourceRoot":"","sources":["../../../src/ui/components/AnimationContext.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AnimationContext.js","sourceRoot":"","sources":["../../../src/ui/components/AnimationContext.tsx"],"names":[],"mappings":"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"}
@@ -8,7 +8,7 @@ import { useTerminalSize } from "../hooks/useTerminalSize.js";
8
8
  import { BLACK_CIRCLE } from "../constants/figures.js";
9
9
  // BLACK_CIRCLE + " " = 2 chars
10
10
  const PREFIX_WIDTH = 2;
11
- export const AssistantMessage = React.memo(function AssistantMessage({ text, thinking, thinkingMs, showThinking = true, planMode, }) {
11
+ export const AssistantMessage = React.memo(function AssistantMessage({ text, thinking, thinkingMs, showThinking = false, planMode, }) {
12
12
  const theme = useTheme();
13
13
  const { columns } = useTerminalSize();
14
14
  const contentWidth = Math.max(10, columns - PREFIX_WIDTH);
@@ -1 +1 @@
1
- {"version":3,"file":"AssistantMessage.js","sourceRoot":"","sources":["../../../src/ui/components/AssistantMessage.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAUvD,+BAA+B;AAC/B,MAAM,YAAY,GAAG,CAAC,CAAC;AAEvB,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,gBAAgB,CAAC,EACnE,IAAI,EACJ,QAAQ,EACR,UAAU,EACV,YAAY,GAAG,IAAI,EACnB,QAAQ,GACc;IACtB,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IACzB,MAAM,EAAE,OAAO,EAAE,GAAG,eAAe,EAAE,CAAC;IACtC,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,GAAG,YAAY,CAAC,CAAC;IAE1D,wEAAwE;IACxE,sEAAsE;IACtE,oEAAoE;IACpE,mCAAmC;IACnC,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAChC,MAAM,WAAW,GAAG,YAAY,IAAI,CAAC,CAAC,QAAQ,CAAC;IAC/C,IAAI,CAAC,WAAW,IAAI,CAAC,WAAW;QAAE,OAAO,IAAI,CAAC;IAE9C,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,SAAS,EAAE,CAAC,aACrC,WAAW,IAAI,KAAC,aAAa,IAAC,IAAI,EAAE,QAAS,EAAE,UAAU,EAAE,UAAU,GAAI,EACzE,WAAW,IAAI,CACd,MAAC,GAAG,IAAC,aAAa,EAAC,KAAK,aACtB,KAAC,GAAG,IAAC,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,CAAC,YACrC,KAAC,IAAI,IAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,YAAG,YAAY,GAAG,GAAG,GAAQ,GAClF,EACN,KAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,YAAY,YAC1D,KAAC,QAAQ,cAAE,WAAW,GAAY,GAC9B,IACF,CACP,IACG,CACP,CAAC;AACJ,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"AssistantMessage.js","sourceRoot":"","sources":["../../../src/ui/components/AssistantMessage.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAUvD,+BAA+B;AAC/B,MAAM,YAAY,GAAG,CAAC,CAAC;AAEvB,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,gBAAgB,CAAC,EACnE,IAAI,EACJ,QAAQ,EACR,UAAU,EACV,YAAY,GAAG,KAAK,EACpB,QAAQ,GACc;IACtB,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IACzB,MAAM,EAAE,OAAO,EAAE,GAAG,eAAe,EAAE,CAAC;IACtC,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,GAAG,YAAY,CAAC,CAAC;IAE1D,wEAAwE;IACxE,sEAAsE;IACtE,oEAAoE;IACpE,mCAAmC;IACnC,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAChC,MAAM,WAAW,GAAG,YAAY,IAAI,CAAC,CAAC,QAAQ,CAAC;IAC/C,IAAI,CAAC,WAAW,IAAI,CAAC,WAAW;QAAE,OAAO,IAAI,CAAC;IAE9C,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,SAAS,EAAE,CAAC,aACrC,WAAW,IAAI,KAAC,aAAa,IAAC,IAAI,EAAE,QAAS,EAAE,UAAU,EAAE,UAAU,GAAI,EACzE,WAAW,IAAI,CACd,MAAC,GAAG,IAAC,aAAa,EAAC,KAAK,aACtB,KAAC,GAAG,IAAC,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,CAAC,YACrC,KAAC,IAAI,IAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,YAAG,YAAY,GAAG,GAAG,GAAQ,GAClF,EACN,KAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,YAAY,YAC1D,KAAC,QAAQ,cAAE,WAAW,GAAY,GAC9B,IACF,CACP,IACG,CACP,CAAC;AACJ,CAAC,CAAC,CAAC"}