@machina.ai/cell-cli 0.1.13-rc2

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 (475) hide show
  1. package/dist/.last_build +0 -0
  2. package/dist/index.d.ts +7 -0
  3. package/dist/index.js +20 -0
  4. package/dist/index.js.map +1 -0
  5. package/dist/package.json +79 -0
  6. package/dist/src/acp/acp.d.ts +208 -0
  7. package/dist/src/acp/acp.js +193 -0
  8. package/dist/src/acp/acp.js.map +1 -0
  9. package/dist/src/acp/acpPeer.d.ts +8 -0
  10. package/dist/src/acp/acpPeer.js +537 -0
  11. package/dist/src/acp/acpPeer.js.map +1 -0
  12. package/dist/src/config/auth.d.ts +6 -0
  13. package/dist/src/config/auth.js +15 -0
  14. package/dist/src/config/auth.js.map +1 -0
  15. package/dist/src/config/config.d.ts +39 -0
  16. package/dist/src/config/config.js +359 -0
  17. package/dist/src/config/config.js.map +1 -0
  18. package/dist/src/config/extension.d.ts +21 -0
  19. package/dist/src/config/extension.js +114 -0
  20. package/dist/src/config/extension.js.map +1 -0
  21. package/dist/src/config/sandboxConfig.d.ts +13 -0
  22. package/dist/src/config/sandboxConfig.js +75 -0
  23. package/dist/src/config/sandboxConfig.js.map +1 -0
  24. package/dist/src/config/settings.d.ts +91 -0
  25. package/dist/src/config/settings.js +282 -0
  26. package/dist/src/config/settings.js.map +1 -0
  27. package/dist/src/gemini.d.ts +6 -0
  28. package/dist/src/gemini.js +242 -0
  29. package/dist/src/gemini.js.map +1 -0
  30. package/dist/src/generated/git-commit.d.ts +6 -0
  31. package/dist/src/generated/git-commit.js +9 -0
  32. package/dist/src/generated/git-commit.js.map +1 -0
  33. package/dist/src/nonInteractiveCli.d.ts +7 -0
  34. package/dist/src/nonInteractiveCli.js +124 -0
  35. package/dist/src/nonInteractiveCli.js.map +1 -0
  36. package/dist/src/services/BuiltinCommandLoader.d.ts +24 -0
  37. package/dist/src/services/BuiltinCommandLoader.js +70 -0
  38. package/dist/src/services/BuiltinCommandLoader.js.map +1 -0
  39. package/dist/src/services/CommandService.d.ts +51 -0
  40. package/dist/src/services/CommandService.js +74 -0
  41. package/dist/src/services/CommandService.js.map +1 -0
  42. package/dist/src/services/FileCommandLoader.d.ts +37 -0
  43. package/dist/src/services/FileCommandLoader.js +133 -0
  44. package/dist/src/services/FileCommandLoader.js.map +1 -0
  45. package/dist/src/services/types.d.ts +22 -0
  46. package/dist/src/services/types.js +7 -0
  47. package/dist/src/services/types.js.map +1 -0
  48. package/dist/src/ui/App.d.ts +15 -0
  49. package/dist/src/ui/App.js +488 -0
  50. package/dist/src/ui/App.js.map +1 -0
  51. package/dist/src/ui/colors.d.ts +7 -0
  52. package/dist/src/ui/colors.js +48 -0
  53. package/dist/src/ui/colors.js.map +1 -0
  54. package/dist/src/ui/commands/aboutCommand.d.ts +7 -0
  55. package/dist/src/ui/commands/aboutCommand.js +39 -0
  56. package/dist/src/ui/commands/aboutCommand.js.map +1 -0
  57. package/dist/src/ui/commands/authCommand.d.ts +7 -0
  58. package/dist/src/ui/commands/authCommand.js +16 -0
  59. package/dist/src/ui/commands/authCommand.js.map +1 -0
  60. package/dist/src/ui/commands/bugCommand.d.ts +7 -0
  61. package/dist/src/ui/commands/bugCommand.js +63 -0
  62. package/dist/src/ui/commands/bugCommand.js.map +1 -0
  63. package/dist/src/ui/commands/chatCommand.d.ts +7 -0
  64. package/dist/src/ui/commands/chatCommand.js +174 -0
  65. package/dist/src/ui/commands/chatCommand.js.map +1 -0
  66. package/dist/src/ui/commands/clearCommand.d.ts +7 -0
  67. package/dist/src/ui/commands/clearCommand.js +27 -0
  68. package/dist/src/ui/commands/clearCommand.js.map +1 -0
  69. package/dist/src/ui/commands/compressCommand.d.ts +7 -0
  70. package/dist/src/ui/commands/compressCommand.js +64 -0
  71. package/dist/src/ui/commands/compressCommand.js.map +1 -0
  72. package/dist/src/ui/commands/copyCommand.d.ts +7 -0
  73. package/dist/src/ui/commands/copyCommand.js +59 -0
  74. package/dist/src/ui/commands/copyCommand.js.map +1 -0
  75. package/dist/src/ui/commands/corgiCommand.d.ts +7 -0
  76. package/dist/src/ui/commands/corgiCommand.js +15 -0
  77. package/dist/src/ui/commands/corgiCommand.js.map +1 -0
  78. package/dist/src/ui/commands/docsCommand.d.ts +7 -0
  79. package/dist/src/ui/commands/docsCommand.js +31 -0
  80. package/dist/src/ui/commands/docsCommand.js.map +1 -0
  81. package/dist/src/ui/commands/editorCommand.d.ts +7 -0
  82. package/dist/src/ui/commands/editorCommand.js +16 -0
  83. package/dist/src/ui/commands/editorCommand.js.map +1 -0
  84. package/dist/src/ui/commands/extensionsCommand.d.ts +7 -0
  85. package/dist/src/ui/commands/extensionsCommand.js +31 -0
  86. package/dist/src/ui/commands/extensionsCommand.js.map +1 -0
  87. package/dist/src/ui/commands/helpCommand.d.ts +7 -0
  88. package/dist/src/ui/commands/helpCommand.js +20 -0
  89. package/dist/src/ui/commands/helpCommand.js.map +1 -0
  90. package/dist/src/ui/commands/ideCommand.d.ts +8 -0
  91. package/dist/src/ui/commands/ideCommand.js +127 -0
  92. package/dist/src/ui/commands/ideCommand.js.map +1 -0
  93. package/dist/src/ui/commands/mcpCommand.d.ts +7 -0
  94. package/dist/src/ui/commands/mcpCommand.js +206 -0
  95. package/dist/src/ui/commands/mcpCommand.js.map +1 -0
  96. package/dist/src/ui/commands/memoryCommand.d.ts +7 -0
  97. package/dist/src/ui/commands/memoryCommand.js +86 -0
  98. package/dist/src/ui/commands/memoryCommand.js.map +1 -0
  99. package/dist/src/ui/commands/privacyCommand.d.ts +7 -0
  100. package/dist/src/ui/commands/privacyCommand.js +16 -0
  101. package/dist/src/ui/commands/privacyCommand.js.map +1 -0
  102. package/dist/src/ui/commands/quitCommand.d.ts +7 -0
  103. package/dist/src/ui/commands/quitCommand.js +34 -0
  104. package/dist/src/ui/commands/quitCommand.js.map +1 -0
  105. package/dist/src/ui/commands/restoreCommand.d.ts +8 -0
  106. package/dist/src/ui/commands/restoreCommand.js +128 -0
  107. package/dist/src/ui/commands/restoreCommand.js.map +1 -0
  108. package/dist/src/ui/commands/statsCommand.d.ts +7 -0
  109. package/dist/src/ui/commands/statsCommand.js +54 -0
  110. package/dist/src/ui/commands/statsCommand.js.map +1 -0
  111. package/dist/src/ui/commands/themeCommand.d.ts +7 -0
  112. package/dist/src/ui/commands/themeCommand.js +16 -0
  113. package/dist/src/ui/commands/themeCommand.js.map +1 -0
  114. package/dist/src/ui/commands/toolsCommand.d.ts +7 -0
  115. package/dist/src/ui/commands/toolsCommand.js +56 -0
  116. package/dist/src/ui/commands/toolsCommand.js.map +1 -0
  117. package/dist/src/ui/commands/types.d.ts +110 -0
  118. package/dist/src/ui/commands/types.js +11 -0
  119. package/dist/src/ui/commands/types.js.map +1 -0
  120. package/dist/src/ui/components/AboutBox.d.ts +16 -0
  121. package/dist/src/ui/components/AboutBox.js +6 -0
  122. package/dist/src/ui/components/AboutBox.js.map +1 -0
  123. package/dist/src/ui/components/AsciiArt.d.ts +7 -0
  124. package/dist/src/ui/components/AsciiArt.js +32 -0
  125. package/dist/src/ui/components/AsciiArt.js.map +1 -0
  126. package/dist/src/ui/components/AuthDialog.d.ts +15 -0
  127. package/dist/src/ui/components/AuthDialog.js +50 -0
  128. package/dist/src/ui/components/AuthDialog.js.map +1 -0
  129. package/dist/src/ui/components/AuthInProgress.d.ts +11 -0
  130. package/dist/src/ui/components/AuthInProgress.js +27 -0
  131. package/dist/src/ui/components/AuthInProgress.js.map +1 -0
  132. package/dist/src/ui/components/AutoAcceptIndicator.d.ts +12 -0
  133. package/dist/src/ui/components/AutoAcceptIndicator.js +26 -0
  134. package/dist/src/ui/components/AutoAcceptIndicator.js.map +1 -0
  135. package/dist/src/ui/components/ConsoleSummaryDisplay.d.ts +11 -0
  136. package/dist/src/ui/components/ConsoleSummaryDisplay.js +11 -0
  137. package/dist/src/ui/components/ConsoleSummaryDisplay.js.map +1 -0
  138. package/dist/src/ui/components/ContextSummaryDisplay.d.ts +20 -0
  139. package/dist/src/ui/components/ContextSummaryDisplay.js +68 -0
  140. package/dist/src/ui/components/ContextSummaryDisplay.js.map +1 -0
  141. package/dist/src/ui/components/DetailedMessagesDisplay.d.ts +14 -0
  142. package/dist/src/ui/components/DetailedMessagesDisplay.js +34 -0
  143. package/dist/src/ui/components/DetailedMessagesDisplay.js.map +1 -0
  144. package/dist/src/ui/components/EditorSettingsDialog.d.ts +15 -0
  145. package/dist/src/ui/components/EditorSettingsDialog.js +73 -0
  146. package/dist/src/ui/components/EditorSettingsDialog.js.map +1 -0
  147. package/dist/src/ui/components/Footer.d.ts +21 -0
  148. package/dist/src/ui/components/Footer.js +14 -0
  149. package/dist/src/ui/components/Footer.js.map +1 -0
  150. package/dist/src/ui/components/GeminiRespondingSpinner.d.ts +17 -0
  151. package/dist/src/ui/components/GeminiRespondingSpinner.js +16 -0
  152. package/dist/src/ui/components/GeminiRespondingSpinner.js.map +1 -0
  153. package/dist/src/ui/components/Header.d.ts +14 -0
  154. package/dist/src/ui/components/Header.js +20 -0
  155. package/dist/src/ui/components/Header.js.map +1 -0
  156. package/dist/src/ui/components/Help.d.ts +12 -0
  157. package/dist/src/ui/components/Help.js +10 -0
  158. package/dist/src/ui/components/Help.js.map +1 -0
  159. package/dist/src/ui/components/HistoryItemDisplay.d.ts +18 -0
  160. package/dist/src/ui/components/HistoryItemDisplay.js +17 -0
  161. package/dist/src/ui/components/HistoryItemDisplay.js.map +1 -0
  162. package/dist/src/ui/components/InputPrompt.d.ts +25 -0
  163. package/dist/src/ui/components/InputPrompt.js +387 -0
  164. package/dist/src/ui/components/InputPrompt.js.map +1 -0
  165. package/dist/src/ui/components/LoadingIndicator.d.ts +15 -0
  166. package/dist/src/ui/components/LoadingIndicator.js +20 -0
  167. package/dist/src/ui/components/LoadingIndicator.js.map +1 -0
  168. package/dist/src/ui/components/MemoryUsageDisplay.d.ts +7 -0
  169. package/dist/src/ui/components/MemoryUsageDisplay.js +27 -0
  170. package/dist/src/ui/components/MemoryUsageDisplay.js.map +1 -0
  171. package/dist/src/ui/components/ModelStatsDisplay.d.ts +7 -0
  172. package/dist/src/ui/components/ModelStatsDisplay.js +33 -0
  173. package/dist/src/ui/components/ModelStatsDisplay.js.map +1 -0
  174. package/dist/src/ui/components/SessionSummaryDisplay.d.ts +11 -0
  175. package/dist/src/ui/components/SessionSummaryDisplay.js +4 -0
  176. package/dist/src/ui/components/SessionSummaryDisplay.js.map +1 -0
  177. package/dist/src/ui/components/ShellModeIndicator.d.ts +7 -0
  178. package/dist/src/ui/components/ShellModeIndicator.js +5 -0
  179. package/dist/src/ui/components/ShellModeIndicator.js.map +1 -0
  180. package/dist/src/ui/components/ShowMoreLines.d.ts +10 -0
  181. package/dist/src/ui/components/ShowMoreLines.js +24 -0
  182. package/dist/src/ui/components/ShowMoreLines.js.map +1 -0
  183. package/dist/src/ui/components/StatsDisplay.d.ts +12 -0
  184. package/dist/src/ui/components/StatsDisplay.js +42 -0
  185. package/dist/src/ui/components/StatsDisplay.js.map +1 -0
  186. package/dist/src/ui/components/SuggestionsDisplay.d.ts +21 -0
  187. package/dist/src/ui/components/SuggestionsDisplay.js +32 -0
  188. package/dist/src/ui/components/SuggestionsDisplay.js.map +1 -0
  189. package/dist/src/ui/components/ThemeDialog.d.ts +19 -0
  190. package/dist/src/ui/components/ThemeDialog.js +148 -0
  191. package/dist/src/ui/components/ThemeDialog.js.map +1 -0
  192. package/dist/src/ui/components/Tips.d.ts +12 -0
  193. package/dist/src/ui/components/Tips.js +8 -0
  194. package/dist/src/ui/components/Tips.js.map +1 -0
  195. package/dist/src/ui/components/ToolStatsDisplay.d.ts +7 -0
  196. package/dist/src/ui/components/ToolStatsDisplay.js +41 -0
  197. package/dist/src/ui/components/ToolStatsDisplay.js.map +1 -0
  198. package/dist/src/ui/components/UpdateNotification.d.ts +10 -0
  199. package/dist/src/ui/components/UpdateNotification.js +10 -0
  200. package/dist/src/ui/components/UpdateNotification.js.map +1 -0
  201. package/dist/src/ui/components/messages/CompressionMessage.d.ts +11 -0
  202. package/dist/src/ui/components/messages/CompressionMessage.js +16 -0
  203. package/dist/src/ui/components/messages/CompressionMessage.js.map +1 -0
  204. package/dist/src/ui/components/messages/DiffRenderer.d.ts +16 -0
  205. package/dist/src/ui/components/messages/DiffRenderer.js +212 -0
  206. package/dist/src/ui/components/messages/DiffRenderer.js.map +1 -0
  207. package/dist/src/ui/components/messages/ErrorMessage.d.ts +11 -0
  208. package/dist/src/ui/components/messages/ErrorMessage.js +9 -0
  209. package/dist/src/ui/components/messages/ErrorMessage.js.map +1 -0
  210. package/dist/src/ui/components/messages/GeminiMessage.d.ts +14 -0
  211. package/dist/src/ui/components/messages/GeminiMessage.js +10 -0
  212. package/dist/src/ui/components/messages/GeminiMessage.js.map +1 -0
  213. package/dist/src/ui/components/messages/GeminiMessageContent.d.ts +14 -0
  214. package/dist/src/ui/components/messages/GeminiMessageContent.js +15 -0
  215. package/dist/src/ui/components/messages/GeminiMessageContent.js.map +1 -0
  216. package/dist/src/ui/components/messages/InfoMessage.d.ts +11 -0
  217. package/dist/src/ui/components/messages/InfoMessage.js +9 -0
  218. package/dist/src/ui/components/messages/InfoMessage.js.map +1 -0
  219. package/dist/src/ui/components/messages/ToolConfirmationMessage.d.ts +15 -0
  220. package/dist/src/ui/components/messages/ToolConfirmationMessage.js +111 -0
  221. package/dist/src/ui/components/messages/ToolConfirmationMessage.js.map +1 -0
  222. package/dist/src/ui/components/messages/ToolGroupMessage.d.ts +18 -0
  223. package/dist/src/ui/components/messages/ToolGroupMessage.js +55 -0
  224. package/dist/src/ui/components/messages/ToolGroupMessage.js.map +1 -0
  225. package/dist/src/ui/components/messages/ToolMessage.d.ts +15 -0
  226. package/dist/src/ui/components/messages/ToolMessage.js +61 -0
  227. package/dist/src/ui/components/messages/ToolMessage.js.map +1 -0
  228. package/dist/src/ui/components/messages/UserMessage.d.ts +11 -0
  229. package/dist/src/ui/components/messages/UserMessage.js +9 -0
  230. package/dist/src/ui/components/messages/UserMessage.js.map +1 -0
  231. package/dist/src/ui/components/messages/UserShellMessage.d.ts +11 -0
  232. package/dist/src/ui/components/messages/UserShellMessage.js +9 -0
  233. package/dist/src/ui/components/messages/UserShellMessage.js.map +1 -0
  234. package/dist/src/ui/components/shared/MaxSizedBox.d.ts +61 -0
  235. package/dist/src/ui/components/shared/MaxSizedBox.js +451 -0
  236. package/dist/src/ui/components/shared/MaxSizedBox.js.map +1 -0
  237. package/dist/src/ui/components/shared/RadioButtonSelect.d.ts +46 -0
  238. package/dist/src/ui/components/shared/RadioButtonSelect.js +119 -0
  239. package/dist/src/ui/components/shared/RadioButtonSelect.js.map +1 -0
  240. package/dist/src/ui/components/shared/text-buffer.d.ts +184 -0
  241. package/dist/src/ui/components/shared/text-buffer.js +1010 -0
  242. package/dist/src/ui/components/shared/text-buffer.js.map +1 -0
  243. package/dist/src/ui/constants.d.ts +9 -0
  244. package/dist/src/ui/constants.js +13 -0
  245. package/dist/src/ui/constants.js.map +1 -0
  246. package/dist/src/ui/contexts/OverflowContext.d.ts +19 -0
  247. package/dist/src/ui/contexts/OverflowContext.js +43 -0
  248. package/dist/src/ui/contexts/OverflowContext.js.map +1 -0
  249. package/dist/src/ui/contexts/SessionContext.d.ts +36 -0
  250. package/dist/src/ui/contexts/SessionContext.js +59 -0
  251. package/dist/src/ui/contexts/SessionContext.js.map +1 -0
  252. package/dist/src/ui/contexts/StreamingContext.d.ts +9 -0
  253. package/dist/src/ui/contexts/StreamingContext.js +15 -0
  254. package/dist/src/ui/contexts/StreamingContext.js.map +1 -0
  255. package/dist/src/ui/editors/editorSettingsManager.d.ts +19 -0
  256. package/dist/src/ui/editors/editorSettingsManager.js +54 -0
  257. package/dist/src/ui/editors/editorSettingsManager.js.map +1 -0
  258. package/dist/src/ui/hooks/atCommandProcessor.d.ts +31 -0
  259. package/dist/src/ui/hooks/atCommandProcessor.js +347 -0
  260. package/dist/src/ui/hooks/atCommandProcessor.js.map +1 -0
  261. package/dist/src/ui/hooks/shellCommandProcessor.d.ts +16 -0
  262. package/dist/src/ui/hooks/shellCommandProcessor.js +295 -0
  263. package/dist/src/ui/hooks/shellCommandProcessor.js.map +1 -0
  264. package/dist/src/ui/hooks/slashCommandProcessor.d.ts +20 -0
  265. package/dist/src/ui/hooks/slashCommandProcessor.js +294 -0
  266. package/dist/src/ui/hooks/slashCommandProcessor.js.map +1 -0
  267. package/dist/src/ui/hooks/useAuthCommand.d.ts +14 -0
  268. package/dist/src/ui/hooks/useAuthCommand.js +65 -0
  269. package/dist/src/ui/hooks/useAuthCommand.js.map +1 -0
  270. package/dist/src/ui/hooks/useAutoAcceptIndicator.d.ts +10 -0
  271. package/dist/src/ui/hooks/useAutoAcceptIndicator.js +37 -0
  272. package/dist/src/ui/hooks/useAutoAcceptIndicator.js.map +1 -0
  273. package/dist/src/ui/hooks/useBracketedPaste.d.ts +12 -0
  274. package/dist/src/ui/hooks/useBracketedPaste.js +32 -0
  275. package/dist/src/ui/hooks/useBracketedPaste.js.map +1 -0
  276. package/dist/src/ui/hooks/useCompletion.d.ts +22 -0
  277. package/dist/src/ui/hooks/useCompletion.js +393 -0
  278. package/dist/src/ui/hooks/useCompletion.js.map +1 -0
  279. package/dist/src/ui/hooks/useConsoleMessages.d.ts +12 -0
  280. package/dist/src/ui/hooks/useConsoleMessages.js +60 -0
  281. package/dist/src/ui/hooks/useConsoleMessages.js.map +1 -0
  282. package/dist/src/ui/hooks/useEditorSettings.d.ts +16 -0
  283. package/dist/src/ui/hooks/useEditorSettings.js +43 -0
  284. package/dist/src/ui/hooks/useEditorSettings.js.map +1 -0
  285. package/dist/src/ui/hooks/useFocus.d.ts +6 -0
  286. package/dist/src/ui/hooks/useFocus.js +41 -0
  287. package/dist/src/ui/hooks/useFocus.js.map +1 -0
  288. package/dist/src/ui/hooks/useGeminiStream.d.ts +23 -0
  289. package/dist/src/ui/hooks/useGeminiStream.js +613 -0
  290. package/dist/src/ui/hooks/useGeminiStream.js.map +1 -0
  291. package/dist/src/ui/hooks/useGitBranchName.d.ts +6 -0
  292. package/dist/src/ui/hooks/useGitBranchName.js +61 -0
  293. package/dist/src/ui/hooks/useGitBranchName.js.map +1 -0
  294. package/dist/src/ui/hooks/useHistoryManager.d.ts +22 -0
  295. package/dist/src/ui/hooks/useHistoryManager.js +72 -0
  296. package/dist/src/ui/hooks/useHistoryManager.js.map +1 -0
  297. package/dist/src/ui/hooks/useInputHistory.d.ts +19 -0
  298. package/dist/src/ui/hooks/useInputHistory.js +84 -0
  299. package/dist/src/ui/hooks/useInputHistory.js.map +1 -0
  300. package/dist/src/ui/hooks/useKeypress.d.ts +29 -0
  301. package/dist/src/ui/hooks/useKeypress.js +156 -0
  302. package/dist/src/ui/hooks/useKeypress.js.map +1 -0
  303. package/dist/src/ui/hooks/useLoadingIndicator.d.ts +10 -0
  304. package/dist/src/ui/hooks/useLoadingIndicator.js +44 -0
  305. package/dist/src/ui/hooks/useLoadingIndicator.js.map +1 -0
  306. package/dist/src/ui/hooks/useLogger.d.ts +10 -0
  307. package/dist/src/ui/hooks/useLogger.js +29 -0
  308. package/dist/src/ui/hooks/useLogger.js.map +1 -0
  309. package/dist/src/ui/hooks/usePhraseCycler.d.ts +14 -0
  310. package/dist/src/ui/hooks/usePhraseCycler.js +189 -0
  311. package/dist/src/ui/hooks/usePhraseCycler.js.map +1 -0
  312. package/dist/src/ui/hooks/usePrivacySettings.d.ts +16 -0
  313. package/dist/src/ui/hooks/usePrivacySettings.js +115 -0
  314. package/dist/src/ui/hooks/usePrivacySettings.js.map +1 -0
  315. package/dist/src/ui/hooks/useReactToolScheduler.d.ts +33 -0
  316. package/dist/src/ui/hooks/useReactToolScheduler.js +186 -0
  317. package/dist/src/ui/hooks/useReactToolScheduler.js.map +1 -0
  318. package/dist/src/ui/hooks/useRefreshMemoryCommand.d.ts +6 -0
  319. package/dist/src/ui/hooks/useRefreshMemoryCommand.js +7 -0
  320. package/dist/src/ui/hooks/useRefreshMemoryCommand.js.map +1 -0
  321. package/dist/src/ui/hooks/useShellHistory.d.ts +11 -0
  322. package/dist/src/ui/hooks/useShellHistory.js +89 -0
  323. package/dist/src/ui/hooks/useShellHistory.js.map +1 -0
  324. package/dist/src/ui/hooks/useShowMemoryCommand.d.ts +9 -0
  325. package/dist/src/ui/hooks/useShowMemoryCommand.js +58 -0
  326. package/dist/src/ui/hooks/useShowMemoryCommand.js.map +1 -0
  327. package/dist/src/ui/hooks/useStateAndRef.d.ts +7 -0
  328. package/dist/src/ui/hooks/useStateAndRef.js +26 -0
  329. package/dist/src/ui/hooks/useStateAndRef.js.map +1 -0
  330. package/dist/src/ui/hooks/useTerminalSize.d.ts +9 -0
  331. package/dist/src/ui/hooks/useTerminalSize.js +27 -0
  332. package/dist/src/ui/hooks/useTerminalSize.js.map +1 -0
  333. package/dist/src/ui/hooks/useThemeCommand.d.ts +15 -0
  334. package/dist/src/ui/hooks/useThemeCommand.js +79 -0
  335. package/dist/src/ui/hooks/useThemeCommand.js.map +1 -0
  336. package/dist/src/ui/hooks/useTimer.d.ts +12 -0
  337. package/dist/src/ui/hooks/useTimer.js +58 -0
  338. package/dist/src/ui/hooks/useTimer.js.map +1 -0
  339. package/dist/src/ui/privacy/CloudFreePrivacyNotice.d.ts +12 -0
  340. package/dist/src/ui/privacy/CloudFreePrivacyNotice.js +40 -0
  341. package/dist/src/ui/privacy/CloudFreePrivacyNotice.js.map +1 -0
  342. package/dist/src/ui/privacy/CloudPaidPrivacyNotice.d.ts +10 -0
  343. package/dist/src/ui/privacy/CloudPaidPrivacyNotice.js +17 -0
  344. package/dist/src/ui/privacy/CloudPaidPrivacyNotice.js.map +1 -0
  345. package/dist/src/ui/privacy/GeminiPrivacyNotice.d.ts +10 -0
  346. package/dist/src/ui/privacy/GeminiPrivacyNotice.js +17 -0
  347. package/dist/src/ui/privacy/GeminiPrivacyNotice.js.map +1 -0
  348. package/dist/src/ui/privacy/PrivacyNotice.d.ts +12 -0
  349. package/dist/src/ui/privacy/PrivacyNotice.js +25 -0
  350. package/dist/src/ui/privacy/PrivacyNotice.js.map +1 -0
  351. package/dist/src/ui/themes/ansi-light.d.ts +7 -0
  352. package/dist/src/ui/themes/ansi-light.js +139 -0
  353. package/dist/src/ui/themes/ansi-light.js.map +1 -0
  354. package/dist/src/ui/themes/ansi.d.ts +7 -0
  355. package/dist/src/ui/themes/ansi.js +149 -0
  356. package/dist/src/ui/themes/ansi.js.map +1 -0
  357. package/dist/src/ui/themes/atom-one-dark.d.ts +7 -0
  358. package/dist/src/ui/themes/atom-one-dark.js +136 -0
  359. package/dist/src/ui/themes/atom-one-dark.js.map +1 -0
  360. package/dist/src/ui/themes/ayu-light.d.ts +7 -0
  361. package/dist/src/ui/themes/ayu-light.js +128 -0
  362. package/dist/src/ui/themes/ayu-light.js.map +1 -0
  363. package/dist/src/ui/themes/ayu.d.ts +7 -0
  364. package/dist/src/ui/themes/ayu.js +102 -0
  365. package/dist/src/ui/themes/ayu.js.map +1 -0
  366. package/dist/src/ui/themes/color-utils.d.ts +21 -0
  367. package/dist/src/ui/themes/color-utils.js +221 -0
  368. package/dist/src/ui/themes/color-utils.js.map +1 -0
  369. package/dist/src/ui/themes/default-light.d.ts +7 -0
  370. package/dist/src/ui/themes/default-light.js +100 -0
  371. package/dist/src/ui/themes/default-light.js.map +1 -0
  372. package/dist/src/ui/themes/default.d.ts +7 -0
  373. package/dist/src/ui/themes/default.js +143 -0
  374. package/dist/src/ui/themes/default.js.map +1 -0
  375. package/dist/src/ui/themes/dracula.d.ts +7 -0
  376. package/dist/src/ui/themes/dracula.js +113 -0
  377. package/dist/src/ui/themes/dracula.js.map +1 -0
  378. package/dist/src/ui/themes/github-dark.d.ts +7 -0
  379. package/dist/src/ui/themes/github-dark.js +136 -0
  380. package/dist/src/ui/themes/github-dark.js.map +1 -0
  381. package/dist/src/ui/themes/github-light.d.ts +7 -0
  382. package/dist/src/ui/themes/github-light.js +138 -0
  383. package/dist/src/ui/themes/github-light.js.map +1 -0
  384. package/dist/src/ui/themes/googlecode.d.ts +7 -0
  385. package/dist/src/ui/themes/googlecode.js +135 -0
  386. package/dist/src/ui/themes/googlecode.js.map +1 -0
  387. package/dist/src/ui/themes/no-color.d.ts +7 -0
  388. package/dist/src/ui/themes/no-color.js +84 -0
  389. package/dist/src/ui/themes/no-color.js.map +1 -0
  390. package/dist/src/ui/themes/shades-of-purple.d.ts +11 -0
  391. package/dist/src/ui/themes/shades-of-purple.js +302 -0
  392. package/dist/src/ui/themes/shades-of-purple.js.map +1 -0
  393. package/dist/src/ui/themes/theme-manager.d.ts +58 -0
  394. package/dist/src/ui/themes/theme-manager.js +179 -0
  395. package/dist/src/ui/themes/theme-manager.js.map +1 -0
  396. package/dist/src/ui/themes/theme.d.ts +84 -0
  397. package/dist/src/ui/themes/theme.js +341 -0
  398. package/dist/src/ui/themes/theme.js.map +1 -0
  399. package/dist/src/ui/themes/xcode.d.ts +7 -0
  400. package/dist/src/ui/themes/xcode.js +143 -0
  401. package/dist/src/ui/themes/xcode.js.map +1 -0
  402. package/dist/src/ui/types.d.ts +180 -0
  403. package/dist/src/ui/types.js +43 -0
  404. package/dist/src/ui/types.js.map +1 -0
  405. package/dist/src/ui/utils/CodeColorizer.d.ts +15 -0
  406. package/dist/src/ui/utils/CodeColorizer.js +97 -0
  407. package/dist/src/ui/utils/CodeColorizer.js.map +1 -0
  408. package/dist/src/ui/utils/ConsolePatcher.d.ts +23 -0
  409. package/dist/src/ui/utils/ConsolePatcher.js +42 -0
  410. package/dist/src/ui/utils/ConsolePatcher.js.map +1 -0
  411. package/dist/src/ui/utils/InlineMarkdownRenderer.d.ts +16 -0
  412. package/dist/src/ui/utils/InlineMarkdownRenderer.js +104 -0
  413. package/dist/src/ui/utils/InlineMarkdownRenderer.js.map +1 -0
  414. package/dist/src/ui/utils/MarkdownDisplay.d.ts +14 -0
  415. package/dist/src/ui/utils/MarkdownDisplay.js +205 -0
  416. package/dist/src/ui/utils/MarkdownDisplay.js.map +1 -0
  417. package/dist/src/ui/utils/TableRenderer.d.ts +17 -0
  418. package/dist/src/ui/utils/TableRenderer.js +84 -0
  419. package/dist/src/ui/utils/TableRenderer.js.map +1 -0
  420. package/dist/src/ui/utils/clipboardUtils.d.ts +22 -0
  421. package/dist/src/ui/utils/clipboardUtils.js +127 -0
  422. package/dist/src/ui/utils/clipboardUtils.js.map +1 -0
  423. package/dist/src/ui/utils/commandUtils.d.ts +23 -0
  424. package/dist/src/ui/utils/commandUtils.js +72 -0
  425. package/dist/src/ui/utils/commandUtils.js.map +1 -0
  426. package/dist/src/ui/utils/computeStats.d.ts +10 -0
  427. package/dist/src/ui/utils/computeStats.js +55 -0
  428. package/dist/src/ui/utils/computeStats.js.map +1 -0
  429. package/dist/src/ui/utils/displayUtils.d.ts +17 -0
  430. package/dist/src/ui/utils/displayUtils.js +24 -0
  431. package/dist/src/ui/utils/displayUtils.js.map +1 -0
  432. package/dist/src/ui/utils/errorParsing.d.ts +7 -0
  433. package/dist/src/ui/utils/errorParsing.js +90 -0
  434. package/dist/src/ui/utils/errorParsing.js.map +1 -0
  435. package/dist/src/ui/utils/formatters.d.ts +13 -0
  436. package/dist/src/ui/utils/formatters.js +56 -0
  437. package/dist/src/ui/utils/formatters.js.map +1 -0
  438. package/dist/src/ui/utils/markdownUtilities.d.ts +6 -0
  439. package/dist/src/ui/utils/markdownUtilities.js +110 -0
  440. package/dist/src/ui/utils/markdownUtilities.js.map +1 -0
  441. package/dist/src/ui/utils/textUtils.d.ts +22 -0
  442. package/dist/src/ui/utils/textUtils.js +58 -0
  443. package/dist/src/ui/utils/textUtils.js.map +1 -0
  444. package/dist/src/ui/utils/updateCheck.d.ts +6 -0
  445. package/dist/src/ui/utils/updateCheck.js +40 -0
  446. package/dist/src/ui/utils/updateCheck.js.map +1 -0
  447. package/dist/src/utils/cleanup.d.ts +8 -0
  448. package/dist/src/utils/cleanup.js +34 -0
  449. package/dist/src/utils/cleanup.js.map +1 -0
  450. package/dist/src/utils/package.d.ts +12 -0
  451. package/dist/src/utils/package.js +24 -0
  452. package/dist/src/utils/package.js.map +1 -0
  453. package/dist/src/utils/readStdin.d.ts +6 -0
  454. package/dist/src/utils/readStdin.js +34 -0
  455. package/dist/src/utils/readStdin.js.map +1 -0
  456. package/dist/src/utils/sandbox-macos-permissive-closed.sb +26 -0
  457. package/dist/src/utils/sandbox-macos-permissive-open.sb +19 -0
  458. package/dist/src/utils/sandbox-macos-permissive-proxied.sb +31 -0
  459. package/dist/src/utils/sandbox-macos-restrictive-closed.sb +87 -0
  460. package/dist/src/utils/sandbox-macos-restrictive-open.sb +90 -0
  461. package/dist/src/utils/sandbox-macos-restrictive-proxied.sb +92 -0
  462. package/dist/src/utils/sandbox.d.ts +7 -0
  463. package/dist/src/utils/sandbox.js +680 -0
  464. package/dist/src/utils/sandbox.js.map +1 -0
  465. package/dist/src/utils/startupWarnings.d.ts +6 -0
  466. package/dist/src/utils/startupWarnings.js +40 -0
  467. package/dist/src/utils/startupWarnings.js.map +1 -0
  468. package/dist/src/utils/userStartupWarnings.d.ts +6 -0
  469. package/dist/src/utils/userStartupWarnings.js +54 -0
  470. package/dist/src/utils/userStartupWarnings.js.map +1 -0
  471. package/dist/src/utils/version.d.ts +6 -0
  472. package/dist/src/utils/version.js +11 -0
  473. package/dist/src/utils/version.js.map +1 -0
  474. package/dist/tsconfig.tsbuildinfo +1 -0
  475. package/package.json +79 -0
@@ -0,0 +1,387 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ /**
3
+ * @license
4
+ * Copyright 2025 Google LLC
5
+ * SPDX-License-Identifier: Apache-2.0
6
+ */
7
+ import { useCallback, useEffect, useState } from 'react';
8
+ import { Box, Text } from 'ink';
9
+ import { Colors } from '../colors.js';
10
+ import { SuggestionsDisplay } from './SuggestionsDisplay.js';
11
+ import { useInputHistory } from '../hooks/useInputHistory.js';
12
+ import { cpSlice, cpLen, toCodePoints } from '../utils/textUtils.js';
13
+ import chalk from 'chalk';
14
+ import stringWidth from 'string-width';
15
+ import { useShellHistory } from '../hooks/useShellHistory.js';
16
+ import { useCompletion } from '../hooks/useCompletion.js';
17
+ import { useKeypress } from '../hooks/useKeypress.js';
18
+ import { isAtCommand, isSlashCommand } from '../utils/commandUtils.js';
19
+ import { clipboardHasImage, saveClipboardImage, cleanupOldClipboardImages, } from '../utils/clipboardUtils.js';
20
+ import * as path from 'path';
21
+ export const InputPrompt = ({ buffer, onSubmit, userMessages, onClearScreen, config, slashCommands, commandContext, placeholder = ' Type your message or @path/to/file', focus = true, inputWidth, suggestionsWidth, shellModeActive, setShellModeActive, }) => {
22
+ const [justNavigatedHistory, setJustNavigatedHistory] = useState(false);
23
+ // Check if cursor is after @ or / without unescaped spaces
24
+ const isCursorAfterCommandWithoutSpace = useCallback(() => {
25
+ const [row, col] = buffer.cursor;
26
+ const currentLine = buffer.lines[row] || '';
27
+ // Convert current line to code points for Unicode-aware processing
28
+ const codePoints = toCodePoints(currentLine);
29
+ // Search backwards from cursor position within the current line only
30
+ for (let i = col - 1; i >= 0; i--) {
31
+ const char = codePoints[i];
32
+ if (char === ' ') {
33
+ // Check if this space is escaped by counting backslashes before it
34
+ let backslashCount = 0;
35
+ for (let j = i - 1; j >= 0 && codePoints[j] === '\\'; j--) {
36
+ backslashCount++;
37
+ }
38
+ // If there's an odd number of backslashes, the space is escaped
39
+ const isEscaped = backslashCount % 2 === 1;
40
+ if (!isEscaped) {
41
+ // Found unescaped space before @ or /, return false
42
+ return false;
43
+ }
44
+ // If escaped, continue searching backwards
45
+ }
46
+ else if (char === '@' || char === '/') {
47
+ // Found @ or / without unescaped space in between
48
+ return true;
49
+ }
50
+ }
51
+ return false;
52
+ }, [buffer.cursor, buffer.lines]);
53
+ const shouldShowCompletion = useCallback(() => (isAtCommand(buffer.text) || isSlashCommand(buffer.text)) &&
54
+ isCursorAfterCommandWithoutSpace(), [buffer.text, isCursorAfterCommandWithoutSpace]);
55
+ const completion = useCompletion(buffer.text, config.getTargetDir(), shouldShowCompletion(), slashCommands, commandContext, config);
56
+ const resetCompletionState = completion.resetCompletionState;
57
+ const shellHistory = useShellHistory(config.getProjectRoot());
58
+ const handleSubmitAndClear = useCallback((submittedValue) => {
59
+ if (shellModeActive) {
60
+ shellHistory.addCommandToHistory(submittedValue);
61
+ }
62
+ // Clear the buffer *before* calling onSubmit to prevent potential re-submission
63
+ // if onSubmit triggers a re-render while the buffer still holds the old value.
64
+ buffer.setText('');
65
+ onSubmit(submittedValue);
66
+ resetCompletionState();
67
+ }, [onSubmit, buffer, resetCompletionState, shellModeActive, shellHistory]);
68
+ const customSetTextAndResetCompletionSignal = useCallback((newText) => {
69
+ buffer.setText(newText);
70
+ setJustNavigatedHistory(true);
71
+ }, [buffer, setJustNavigatedHistory]);
72
+ const inputHistory = useInputHistory({
73
+ userMessages,
74
+ onSubmit: handleSubmitAndClear,
75
+ isActive: (!completion.showSuggestions || completion.suggestions.length === 1) &&
76
+ !shellModeActive,
77
+ currentQuery: buffer.text,
78
+ onChange: customSetTextAndResetCompletionSignal,
79
+ });
80
+ // Effect to reset completion if history navigation just occurred and set the text
81
+ useEffect(() => {
82
+ if (justNavigatedHistory) {
83
+ resetCompletionState();
84
+ setJustNavigatedHistory(false);
85
+ }
86
+ }, [
87
+ justNavigatedHistory,
88
+ buffer.text,
89
+ resetCompletionState,
90
+ setJustNavigatedHistory,
91
+ ]);
92
+ const completionSuggestions = completion.suggestions;
93
+ const handleAutocomplete = useCallback((indexToUse) => {
94
+ if (indexToUse < 0 || indexToUse >= completionSuggestions.length) {
95
+ return;
96
+ }
97
+ const query = buffer.text;
98
+ const suggestion = completionSuggestions[indexToUse].value;
99
+ if (query.trimStart().startsWith('/')) {
100
+ const hasTrailingSpace = query.endsWith(' ');
101
+ const parts = query
102
+ .trimStart()
103
+ .substring(1)
104
+ .split(/\s+/)
105
+ .filter(Boolean);
106
+ let isParentPath = false;
107
+ // If there's no trailing space, we need to check if the current query
108
+ // is already a complete path to a parent command.
109
+ if (!hasTrailingSpace) {
110
+ let currentLevel = slashCommands;
111
+ for (let i = 0; i < parts.length; i++) {
112
+ const part = parts[i];
113
+ const found = currentLevel?.find((cmd) => cmd.name === part || cmd.altNames?.includes(part));
114
+ if (found) {
115
+ if (i === parts.length - 1 && found.subCommands) {
116
+ isParentPath = true;
117
+ }
118
+ currentLevel = found.subCommands;
119
+ }
120
+ else {
121
+ // Path is invalid, so it can't be a parent path.
122
+ currentLevel = undefined;
123
+ break;
124
+ }
125
+ }
126
+ }
127
+ // Determine the base path of the command.
128
+ // - If there's a trailing space, the whole command is the base.
129
+ // - If it's a known parent path, the whole command is the base.
130
+ // - Otherwise, the base is everything EXCEPT the last partial part.
131
+ const basePath = hasTrailingSpace || isParentPath ? parts : parts.slice(0, -1);
132
+ const newValue = `/${[...basePath, suggestion].join(' ')}`;
133
+ buffer.setText(newValue);
134
+ }
135
+ else {
136
+ const atIndex = query.lastIndexOf('@');
137
+ if (atIndex === -1)
138
+ return;
139
+ const pathPart = query.substring(atIndex + 1);
140
+ const lastSlashIndexInPath = pathPart.lastIndexOf('/');
141
+ let autoCompleteStartIndex = atIndex + 1;
142
+ if (lastSlashIndexInPath !== -1) {
143
+ autoCompleteStartIndex += lastSlashIndexInPath + 1;
144
+ }
145
+ buffer.replaceRangeByOffset(autoCompleteStartIndex, buffer.text.length, suggestion);
146
+ }
147
+ resetCompletionState();
148
+ }, [resetCompletionState, buffer, completionSuggestions, slashCommands]);
149
+ // Handle clipboard image pasting with Ctrl+V
150
+ const handleClipboardImage = useCallback(async () => {
151
+ try {
152
+ if (await clipboardHasImage()) {
153
+ const imagePath = await saveClipboardImage(config.getTargetDir());
154
+ if (imagePath) {
155
+ // Clean up old images
156
+ cleanupOldClipboardImages(config.getTargetDir()).catch(() => {
157
+ // Ignore cleanup errors
158
+ });
159
+ // Get relative path from current directory
160
+ const relativePath = path.relative(config.getTargetDir(), imagePath);
161
+ // Insert @path reference at cursor position
162
+ const insertText = `@${relativePath}`;
163
+ const currentText = buffer.text;
164
+ const [row, col] = buffer.cursor;
165
+ // Calculate offset from row/col
166
+ let offset = 0;
167
+ for (let i = 0; i < row; i++) {
168
+ offset += buffer.lines[i].length + 1; // +1 for newline
169
+ }
170
+ offset += col;
171
+ // Add spaces around the path if needed
172
+ let textToInsert = insertText;
173
+ const charBefore = offset > 0 ? currentText[offset - 1] : '';
174
+ const charAfter = offset < currentText.length ? currentText[offset] : '';
175
+ if (charBefore && charBefore !== ' ' && charBefore !== '\n') {
176
+ textToInsert = ' ' + textToInsert;
177
+ }
178
+ if (!charAfter || (charAfter !== ' ' && charAfter !== '\n')) {
179
+ textToInsert = textToInsert + ' ';
180
+ }
181
+ // Insert at cursor position
182
+ buffer.replaceRangeByOffset(offset, offset, textToInsert);
183
+ }
184
+ }
185
+ }
186
+ catch (error) {
187
+ console.error('Error handling clipboard image:', error);
188
+ }
189
+ }, [buffer, config]);
190
+ const handleInput = useCallback((key) => {
191
+ if (!focus) {
192
+ return;
193
+ }
194
+ if (key.sequence === '!' &&
195
+ buffer.text === '' &&
196
+ !completion.showSuggestions) {
197
+ setShellModeActive(!shellModeActive);
198
+ buffer.setText(''); // Clear the '!' from input
199
+ return;
200
+ }
201
+ if (key.name === 'escape') {
202
+ if (shellModeActive) {
203
+ setShellModeActive(false);
204
+ return;
205
+ }
206
+ if (completion.showSuggestions) {
207
+ completion.resetCompletionState();
208
+ return;
209
+ }
210
+ }
211
+ if (key.ctrl && key.name === 'l') {
212
+ onClearScreen();
213
+ return;
214
+ }
215
+ // If the command is a perfect match, pressing enter should execute it.
216
+ if (completion.isPerfectMatch && key.name === 'return') {
217
+ handleSubmitAndClear(buffer.text);
218
+ return;
219
+ }
220
+ if (completion.showSuggestions) {
221
+ if (completion.suggestions.length > 1) {
222
+ if (key.name === 'up' || (key.ctrl && key.name === 'p')) {
223
+ completion.navigateUp();
224
+ return;
225
+ }
226
+ if (key.name === 'down' || (key.ctrl && key.name === 'n')) {
227
+ completion.navigateDown();
228
+ return;
229
+ }
230
+ }
231
+ if (key.name === 'tab' || (key.name === 'return' && !key.ctrl)) {
232
+ if (completion.suggestions.length > 0) {
233
+ const targetIndex = completion.activeSuggestionIndex === -1
234
+ ? 0 // Default to the first if none is active
235
+ : completion.activeSuggestionIndex;
236
+ if (targetIndex < completion.suggestions.length) {
237
+ handleAutocomplete(targetIndex);
238
+ }
239
+ }
240
+ return;
241
+ }
242
+ }
243
+ if (!shellModeActive) {
244
+ if (key.ctrl && key.name === 'p') {
245
+ inputHistory.navigateUp();
246
+ return;
247
+ }
248
+ if (key.ctrl && key.name === 'n') {
249
+ inputHistory.navigateDown();
250
+ return;
251
+ }
252
+ // Handle arrow-up/down for history on single-line or at edges
253
+ if (key.name === 'up' &&
254
+ (buffer.allVisualLines.length === 1 ||
255
+ (buffer.visualCursor[0] === 0 && buffer.visualScrollRow === 0))) {
256
+ inputHistory.navigateUp();
257
+ return;
258
+ }
259
+ if (key.name === 'down' &&
260
+ (buffer.allVisualLines.length === 1 ||
261
+ buffer.visualCursor[0] === buffer.allVisualLines.length - 1)) {
262
+ inputHistory.navigateDown();
263
+ return;
264
+ }
265
+ }
266
+ else {
267
+ // Shell History Navigation
268
+ if (key.name === 'up') {
269
+ const prevCommand = shellHistory.getPreviousCommand();
270
+ if (prevCommand !== null)
271
+ buffer.setText(prevCommand);
272
+ return;
273
+ }
274
+ if (key.name === 'down') {
275
+ const nextCommand = shellHistory.getNextCommand();
276
+ if (nextCommand !== null)
277
+ buffer.setText(nextCommand);
278
+ return;
279
+ }
280
+ }
281
+ if (key.name === 'return' && !key.ctrl && !key.meta && !key.paste) {
282
+ if (buffer.text.trim()) {
283
+ const [row, col] = buffer.cursor;
284
+ const line = buffer.lines[row];
285
+ const charBefore = col > 0 ? cpSlice(line, col - 1, col) : '';
286
+ if (charBefore === '\\') {
287
+ buffer.backspace();
288
+ buffer.newline();
289
+ }
290
+ else {
291
+ handleSubmitAndClear(buffer.text);
292
+ }
293
+ }
294
+ return;
295
+ }
296
+ // Newline insertion
297
+ if (key.name === 'return' && (key.ctrl || key.meta || key.paste)) {
298
+ buffer.newline();
299
+ return;
300
+ }
301
+ // Ctrl+A (Home) / Ctrl+E (End)
302
+ if (key.ctrl && key.name === 'a') {
303
+ buffer.move('home');
304
+ return;
305
+ }
306
+ if (key.ctrl && key.name === 'e') {
307
+ buffer.move('end');
308
+ buffer.moveToOffset(cpLen(buffer.text));
309
+ return;
310
+ }
311
+ // Ctrl+C (Clear input)
312
+ if (key.ctrl && key.name === 'c') {
313
+ if (buffer.text.length > 0) {
314
+ buffer.setText('');
315
+ resetCompletionState();
316
+ return;
317
+ }
318
+ return;
319
+ }
320
+ // Kill line commands
321
+ if (key.ctrl && key.name === 'k') {
322
+ buffer.killLineRight();
323
+ return;
324
+ }
325
+ if (key.ctrl && key.name === 'u') {
326
+ buffer.killLineLeft();
327
+ return;
328
+ }
329
+ // External editor
330
+ const isCtrlX = key.ctrl && (key.name === 'x' || key.sequence === '\x18');
331
+ if (isCtrlX) {
332
+ buffer.openInExternalEditor();
333
+ return;
334
+ }
335
+ // Ctrl+V for clipboard image paste
336
+ if (key.ctrl && key.name === 'v') {
337
+ handleClipboardImage();
338
+ return;
339
+ }
340
+ // Fall back to the text buffer's default input handling for all other keys
341
+ buffer.handleInput(key);
342
+ }, [
343
+ focus,
344
+ buffer,
345
+ completion,
346
+ shellModeActive,
347
+ setShellModeActive,
348
+ onClearScreen,
349
+ inputHistory,
350
+ handleAutocomplete,
351
+ handleSubmitAndClear,
352
+ shellHistory,
353
+ handleClipboardImage,
354
+ resetCompletionState,
355
+ ]);
356
+ useKeypress(handleInput, { isActive: focus });
357
+ const linesToRender = buffer.viewportVisualLines;
358
+ const [cursorVisualRowAbsolute, cursorVisualColAbsolute] = buffer.visualCursor;
359
+ const scrollVisualRow = buffer.visualScrollRow;
360
+ return (_jsxs(_Fragment, { children: [_jsxs(Box, { borderStyle: "round", borderColor: shellModeActive ? Colors.AccentYellow : Colors.AccentBlue, paddingX: 1, children: [_jsx(Text, { color: shellModeActive ? Colors.AccentYellow : Colors.AccentPurple, children: shellModeActive ? '! ' : '> ' }), _jsx(Box, { flexGrow: 1, flexDirection: "column", children: buffer.text.length === 0 && placeholder ? (focus ? (_jsxs(Text, { children: [chalk.inverse(placeholder.slice(0, 1)), _jsx(Text, { color: Colors.Gray, children: placeholder.slice(1) })] })) : (_jsx(Text, { color: Colors.Gray, children: placeholder }))) : (linesToRender.map((lineText, visualIdxInRenderedSet) => {
361
+ const cursorVisualRow = cursorVisualRowAbsolute - scrollVisualRow;
362
+ let display = cpSlice(lineText, 0, inputWidth);
363
+ const currentVisualWidth = stringWidth(display);
364
+ if (currentVisualWidth < inputWidth) {
365
+ display = display + ' '.repeat(inputWidth - currentVisualWidth);
366
+ }
367
+ if (focus && visualIdxInRenderedSet === cursorVisualRow) {
368
+ const relativeVisualColForHighlight = cursorVisualColAbsolute;
369
+ if (relativeVisualColForHighlight >= 0) {
370
+ if (relativeVisualColForHighlight < cpLen(display)) {
371
+ const charToHighlight = cpSlice(display, relativeVisualColForHighlight, relativeVisualColForHighlight + 1) || ' ';
372
+ const highlighted = chalk.inverse(charToHighlight);
373
+ display =
374
+ cpSlice(display, 0, relativeVisualColForHighlight) +
375
+ highlighted +
376
+ cpSlice(display, relativeVisualColForHighlight + 1);
377
+ }
378
+ else if (relativeVisualColForHighlight === cpLen(display) &&
379
+ cpLen(display) === inputWidth) {
380
+ display = display + chalk.inverse(' ');
381
+ }
382
+ }
383
+ }
384
+ return (_jsx(Text, { children: display }, `line-${visualIdxInRenderedSet}`));
385
+ })) })] }), completion.showSuggestions && (_jsx(Box, { children: _jsx(SuggestionsDisplay, { suggestions: completion.suggestions, activeIndex: completion.activeSuggestionIndex, isLoading: completion.isLoadingSuggestions, width: suggestionsWidth, scrollOffset: completion.visibleStartIndex, userInput: buffer.text }) }))] }));
386
+ };
387
+ //# sourceMappingURL=InputPrompt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InputPrompt.js","sourceRoot":"","sources":["../../../../src/ui/components/InputPrompt.tsx"],"names":[],"mappings":";AAAA;;;;GAIG;AAEH,OAAc,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAChE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAE9D,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,WAAW,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAO,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAGvE,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,yBAAyB,GAC1B,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAkB7B,MAAM,CAAC,MAAM,WAAW,GAA+B,CAAC,EACtD,MAAM,EACN,QAAQ,EACR,YAAY,EACZ,aAAa,EACb,MAAM,EACN,aAAa,EACb,cAAc,EACd,WAAW,GAAG,sCAAsC,EACpD,KAAK,GAAG,IAAI,EACZ,UAAU,EACV,gBAAgB,EAChB,eAAe,EACf,kBAAkB,GACnB,EAAE,EAAE;IACH,MAAM,CAAC,oBAAoB,EAAE,uBAAuB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAExE,2DAA2D;IAC3D,MAAM,gCAAgC,GAAG,WAAW,CAAC,GAAG,EAAE;QACxD,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;QACjC,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QAE5C,mEAAmE;QACnE,MAAM,UAAU,GAAG,YAAY,CAAC,WAAW,CAAC,CAAC;QAE7C,qEAAqE;QACrE,KAAK,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAClC,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;YAE3B,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;gBACjB,mEAAmE;gBACnE,IAAI,cAAc,GAAG,CAAC,CAAC;gBACvB,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;oBAC1D,cAAc,EAAE,CAAC;gBACnB,CAAC;gBAED,gEAAgE;gBAChE,MAAM,SAAS,GAAG,cAAc,GAAG,CAAC,KAAK,CAAC,CAAC;gBAE3C,IAAI,CAAC,SAAS,EAAE,CAAC;oBACf,oDAAoD;oBACpD,OAAO,KAAK,CAAC;gBACf,CAAC;gBACD,2CAA2C;YAC7C,CAAC;iBAAM,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;gBACxC,kDAAkD;gBAClD,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IAElC,MAAM,oBAAoB,GAAG,WAAW,CACtC,GAAG,EAAE,CACH,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACzD,gCAAgC,EAAE,EACpC,CAAC,MAAM,CAAC,IAAI,EAAE,gCAAgC,CAAC,CAChD,CAAC;IAEF,MAAM,UAAU,GAAG,aAAa,CAC9B,MAAM,CAAC,IAAI,EACX,MAAM,CAAC,YAAY,EAAE,EACrB,oBAAoB,EAAE,EACtB,aAAa,EACb,cAAc,EACd,MAAM,CACP,CAAC;IAEF,MAAM,oBAAoB,GAAG,UAAU,CAAC,oBAAoB,CAAC;IAC7D,MAAM,YAAY,GAAG,eAAe,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC;IAE9D,MAAM,oBAAoB,GAAG,WAAW,CACtC,CAAC,cAAsB,EAAE,EAAE;QACzB,IAAI,eAAe,EAAE,CAAC;YACpB,YAAY,CAAC,mBAAmB,CAAC,cAAc,CAAC,CAAC;QACnD,CAAC;QACD,gFAAgF;QAChF,+EAA+E;QAC/E,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACnB,QAAQ,CAAC,cAAc,CAAC,CAAC;QACzB,oBAAoB,EAAE,CAAC;IACzB,CAAC,EACD,CAAC,QAAQ,EAAE,MAAM,EAAE,oBAAoB,EAAE,eAAe,EAAE,YAAY,CAAC,CACxE,CAAC;IAEF,MAAM,qCAAqC,GAAG,WAAW,CACvD,CAAC,OAAe,EAAE,EAAE;QAClB,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACxB,uBAAuB,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC,EACD,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAClC,CAAC;IAEF,MAAM,YAAY,GAAG,eAAe,CAAC;QACnC,YAAY;QACZ,QAAQ,EAAE,oBAAoB;QAC9B,QAAQ,EACN,CAAC,CAAC,UAAU,CAAC,eAAe,IAAI,UAAU,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,CAAC;YACpE,CAAC,eAAe;QAClB,YAAY,EAAE,MAAM,CAAC,IAAI;QACzB,QAAQ,EAAE,qCAAqC;KAChD,CAAC,CAAC;IAEH,kFAAkF;IAClF,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,oBAAoB,EAAE,CAAC;YACzB,oBAAoB,EAAE,CAAC;YACvB,uBAAuB,CAAC,KAAK,CAAC,CAAC;QACjC,CAAC;IACH,CAAC,EAAE;QACD,oBAAoB;QACpB,MAAM,CAAC,IAAI;QACX,oBAAoB;QACpB,uBAAuB;KACxB,CAAC,CAAC;IAEH,MAAM,qBAAqB,GAAG,UAAU,CAAC,WAAW,CAAC;IACrD,MAAM,kBAAkB,GAAG,WAAW,CACpC,CAAC,UAAkB,EAAE,EAAE;QACrB,IAAI,UAAU,GAAG,CAAC,IAAI,UAAU,IAAI,qBAAqB,CAAC,MAAM,EAAE,CAAC;YACjE,OAAO;QACT,CAAC;QACD,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC;QAC1B,MAAM,UAAU,GAAG,qBAAqB,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC;QAE3D,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACtC,MAAM,gBAAgB,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YAC7C,MAAM,KAAK,GAAG,KAAK;iBAChB,SAAS,EAAE;iBACX,SAAS,CAAC,CAAC,CAAC;iBACZ,KAAK,CAAC,KAAK,CAAC;iBACZ,MAAM,CAAC,OAAO,CAAC,CAAC;YAEnB,IAAI,YAAY,GAAG,KAAK,CAAC;YACzB,sEAAsE;YACtE,kDAAkD;YAClD,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACtB,IAAI,YAAY,GAAwC,aAAa,CAAC;gBACtE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;oBACtB,MAAM,KAAK,GAA6B,YAAY,EAAE,IAAI,CACxD,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,IAAI,IAAI,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,CAC3D,CAAC;oBAEF,IAAI,KAAK,EAAE,CAAC;wBACV,IAAI,CAAC,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;4BAChD,YAAY,GAAG,IAAI,CAAC;wBACtB,CAAC;wBACD,YAAY,GAAG,KAAK,CAAC,WAER,CAAC;oBAChB,CAAC;yBAAM,CAAC;wBACN,iDAAiD;wBACjD,YAAY,GAAG,SAAS,CAAC;wBACzB,MAAM;oBACR,CAAC;gBACH,CAAC;YACH,CAAC;YAED,0CAA0C;YAC1C,gEAAgE;YAChE,gEAAgE;YAChE,oEAAoE;YACpE,MAAM,QAAQ,GACZ,gBAAgB,IAAI,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAChE,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,QAAQ,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YAE3D,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC3B,CAAC;aAAM,CAAC;YACN,MAAM,OAAO,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;YACvC,IAAI,OAAO,KAAK,CAAC,CAAC;gBAAE,OAAO;YAC3B,MAAM,QAAQ,GAAG,KAAK,CAAC,SAAS,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;YAC9C,MAAM,oBAAoB,GAAG,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;YACvD,IAAI,sBAAsB,GAAG,OAAO,GAAG,CAAC,CAAC;YACzC,IAAI,oBAAoB,KAAK,CAAC,CAAC,EAAE,CAAC;gBAChC,sBAAsB,IAAI,oBAAoB,GAAG,CAAC,CAAC;YACrD,CAAC;YACD,MAAM,CAAC,oBAAoB,CACzB,sBAAsB,EACtB,MAAM,CAAC,IAAI,CAAC,MAAM,EAClB,UAAU,CACX,CAAC;QACJ,CAAC;QACD,oBAAoB,EAAE,CAAC;IACzB,CAAC,EACD,CAAC,oBAAoB,EAAE,MAAM,EAAE,qBAAqB,EAAE,aAAa,CAAC,CACrE,CAAC;IAEF,6CAA6C;IAC7C,MAAM,oBAAoB,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;QAClD,IAAI,CAAC;YACH,IAAI,MAAM,iBAAiB,EAAE,EAAE,CAAC;gBAC9B,MAAM,SAAS,GAAG,MAAM,kBAAkB,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;gBAClE,IAAI,SAAS,EAAE,CAAC;oBACd,sBAAsB;oBACtB,yBAAyB,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;wBAC1D,wBAAwB;oBAC1B,CAAC,CAAC,CAAC;oBAEH,2CAA2C;oBAC3C,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,YAAY,EAAE,EAAE,SAAS,CAAC,CAAC;oBAErE,4CAA4C;oBAC5C,MAAM,UAAU,GAAG,IAAI,YAAY,EAAE,CAAC;oBACtC,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC;oBAChC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;oBAEjC,gCAAgC;oBAChC,IAAI,MAAM,GAAG,CAAC,CAAC;oBACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;wBAC7B,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,iBAAiB;oBACzD,CAAC;oBACD,MAAM,IAAI,GAAG,CAAC;oBAEd,uCAAuC;oBACvC,IAAI,YAAY,GAAG,UAAU,CAAC;oBAC9B,MAAM,UAAU,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC7D,MAAM,SAAS,GACb,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;oBAEzD,IAAI,UAAU,IAAI,UAAU,KAAK,GAAG,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;wBAC5D,YAAY,GAAG,GAAG,GAAG,YAAY,CAAC;oBACpC,CAAC;oBACD,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS,KAAK,GAAG,IAAI,SAAS,KAAK,IAAI,CAAC,EAAE,CAAC;wBAC5D,YAAY,GAAG,YAAY,GAAG,GAAG,CAAC;oBACpC,CAAC;oBAED,4BAA4B;oBAC5B,MAAM,CAAC,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;gBAC5D,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,iCAAiC,EAAE,KAAK,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAErB,MAAM,WAAW,GAAG,WAAW,CAC7B,CAAC,GAAQ,EAAE,EAAE;QACX,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO;QACT,CAAC;QAED,IACE,GAAG,CAAC,QAAQ,KAAK,GAAG;YACpB,MAAM,CAAC,IAAI,KAAK,EAAE;YAClB,CAAC,UAAU,CAAC,eAAe,EAC3B,CAAC;YACD,kBAAkB,CAAC,CAAC,eAAe,CAAC,CAAC;YACrC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,2BAA2B;YAC/C,OAAO;QACT,CAAC;QAED,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC1B,IAAI,eAAe,EAAE,CAAC;gBACpB,kBAAkB,CAAC,KAAK,CAAC,CAAC;gBAC1B,OAAO;YACT,CAAC;YAED,IAAI,UAAU,CAAC,eAAe,EAAE,CAAC;gBAC/B,UAAU,CAAC,oBAAoB,EAAE,CAAC;gBAClC,OAAO;YACT,CAAC;QACH,CAAC;QAED,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC;YACjC,aAAa,EAAE,CAAC;YAChB,OAAO;QACT,CAAC;QAED,uEAAuE;QACvE,IAAI,UAAU,CAAC,cAAc,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACvD,oBAAoB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAClC,OAAO;QACT,CAAC;QAED,IAAI,UAAU,CAAC,eAAe,EAAE,CAAC;YAC/B,IAAI,UAAU,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACtC,IAAI,GAAG,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;oBACxD,UAAU,CAAC,UAAU,EAAE,CAAC;oBACxB,OAAO;gBACT,CAAC;gBACD,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;oBAC1D,UAAU,CAAC,YAAY,EAAE,CAAC;oBAC1B,OAAO;gBACT,CAAC;YACH,CAAC;YAED,IAAI,GAAG,CAAC,IAAI,KAAK,KAAK,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC/D,IAAI,UAAU,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACtC,MAAM,WAAW,GACf,UAAU,CAAC,qBAAqB,KAAK,CAAC,CAAC;wBACrC,CAAC,CAAC,CAAC,CAAC,yCAAyC;wBAC7C,CAAC,CAAC,UAAU,CAAC,qBAAqB,CAAC;oBACvC,IAAI,WAAW,GAAG,UAAU,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC;wBAChD,kBAAkB,CAAC,WAAW,CAAC,CAAC;oBAClC,CAAC;gBACH,CAAC;gBACD,OAAO;YACT,CAAC;QACH,CAAC;QAED,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC;gBACjC,YAAY,CAAC,UAAU,EAAE,CAAC;gBAC1B,OAAO;YACT,CAAC;YACD,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC;gBACjC,YAAY,CAAC,YAAY,EAAE,CAAC;gBAC5B,OAAO;YACT,CAAC;YACD,8DAA8D;YAC9D,IACE,GAAG,CAAC,IAAI,KAAK,IAAI;gBACjB,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC;oBACjC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,eAAe,KAAK,CAAC,CAAC,CAAC,EACjE,CAAC;gBACD,YAAY,CAAC,UAAU,EAAE,CAAC;gBAC1B,OAAO;YACT,CAAC;YACD,IACE,GAAG,CAAC,IAAI,KAAK,MAAM;gBACnB,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC;oBACjC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,EAC9D,CAAC;gBACD,YAAY,CAAC,YAAY,EAAE,CAAC;gBAC5B,OAAO;YACT,CAAC;QACH,CAAC;aAAM,CAAC;YACN,2BAA2B;YAC3B,IAAI,GAAG,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;gBACtB,MAAM,WAAW,GAAG,YAAY,CAAC,kBAAkB,EAAE,CAAC;gBACtD,IAAI,WAAW,KAAK,IAAI;oBAAE,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;gBACtD,OAAO;YACT,CAAC;YACD,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBACxB,MAAM,WAAW,GAAG,YAAY,CAAC,cAAc,EAAE,CAAC;gBAClD,IAAI,WAAW,KAAK,IAAI;oBAAE,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;gBACtD,OAAO;YACT,CAAC;QACH,CAAC;QAED,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;YAClE,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;gBACvB,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;gBACjC,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC/B,MAAM,UAAU,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC9D,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;oBACxB,MAAM,CAAC,SAAS,EAAE,CAAC;oBACnB,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnB,CAAC;qBAAM,CAAC;oBACN,oBAAoB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBACpC,CAAC;YACH,CAAC;YACD,OAAO;QACT,CAAC;QAED,oBAAoB;QACpB,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YACjE,MAAM,CAAC,OAAO,EAAE,CAAC;YACjB,OAAO;QACT,CAAC;QAED,+BAA+B;QAC/B,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC;YACjC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACpB,OAAO;QACT,CAAC;QACD,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC;YACjC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACnB,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;YACxC,OAAO;QACT,CAAC;QACD,uBAAuB;QACvB,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC;YACjC,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC3B,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBACnB,oBAAoB,EAAE,CAAC;gBACvB,OAAO;YACT,CAAC;YACD,OAAO;QACT,CAAC;QAED,qBAAqB;QACrB,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC;YACjC,MAAM,CAAC,aAAa,EAAE,CAAC;YACvB,OAAO;QACT,CAAC;QACD,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC;YACjC,MAAM,CAAC,YAAY,EAAE,CAAC;YACtB,OAAO;QACT,CAAC;QAED,kBAAkB;QAClB,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,GAAG,IAAI,GAAG,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC;QAC1E,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,CAAC,oBAAoB,EAAE,CAAC;YAC9B,OAAO;QACT,CAAC;QAED,mCAAmC;QACnC,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC;YACjC,oBAAoB,EAAE,CAAC;YACvB,OAAO;QACT,CAAC;QAED,2EAA2E;QAC3E,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC,EACD;QACE,KAAK;QACL,MAAM;QACN,UAAU;QACV,eAAe;QACf,kBAAkB;QAClB,aAAa;QACb,YAAY;QACZ,kBAAkB;QAClB,oBAAoB;QACpB,YAAY;QACZ,oBAAoB;QACpB,oBAAoB;KACrB,CACF,CAAC;IAEF,WAAW,CAAC,WAAW,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;IAE9C,MAAM,aAAa,GAAG,MAAM,CAAC,mBAAmB,CAAC;IACjD,MAAM,CAAC,uBAAuB,EAAE,uBAAuB,CAAC,GACtD,MAAM,CAAC,YAAY,CAAC;IACtB,MAAM,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;IAE/C,OAAO,CACL,8BACE,MAAC,GAAG,IACF,WAAW,EAAC,OAAO,EACnB,WAAW,EAAE,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,EACtE,QAAQ,EAAE,CAAC,aAEX,KAAC,IAAI,IACH,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,YAEjE,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,GACzB,EACP,KAAC,GAAG,IAAC,QAAQ,EAAE,CAAC,EAAE,aAAa,EAAC,QAAQ,YACrC,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,CACzC,KAAK,CAAC,CAAC,CAAC,CACN,MAAC,IAAI,eACF,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EACvC,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,IAAI,YAAG,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,GAAQ,IAClD,CACR,CAAC,CAAC,CAAC,CACF,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,IAAI,YAAG,WAAW,GAAQ,CAC/C,CACF,CAAC,CAAC,CAAC,CACF,aAAa,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,sBAAsB,EAAE,EAAE;4BACrD,MAAM,eAAe,GAAG,uBAAuB,GAAG,eAAe,CAAC;4BAClE,IAAI,OAAO,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;4BAC/C,MAAM,kBAAkB,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;4BAChD,IAAI,kBAAkB,GAAG,UAAU,EAAE,CAAC;gCACpC,OAAO,GAAG,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,UAAU,GAAG,kBAAkB,CAAC,CAAC;4BAClE,CAAC;4BAED,IAAI,KAAK,IAAI,sBAAsB,KAAK,eAAe,EAAE,CAAC;gCACxD,MAAM,6BAA6B,GAAG,uBAAuB,CAAC;gCAE9D,IAAI,6BAA6B,IAAI,CAAC,EAAE,CAAC;oCACvC,IAAI,6BAA6B,GAAG,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;wCACnD,MAAM,eAAe,GACnB,OAAO,CACL,OAAO,EACP,6BAA6B,EAC7B,6BAA6B,GAAG,CAAC,CAClC,IAAI,GAAG,CAAC;wCACX,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;wCACnD,OAAO;4CACL,OAAO,CAAC,OAAO,EAAE,CAAC,EAAE,6BAA6B,CAAC;gDAClD,WAAW;gDACX,OAAO,CAAC,OAAO,EAAE,6BAA6B,GAAG,CAAC,CAAC,CAAC;oCACxD,CAAC;yCAAM,IACL,6BAA6B,KAAK,KAAK,CAAC,OAAO,CAAC;wCAChD,KAAK,CAAC,OAAO,CAAC,KAAK,UAAU,EAC7B,CAAC;wCACD,OAAO,GAAG,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;oCACzC,CAAC;gCACH,CAAC;4BACH,CAAC;4BACD,OAAO,CACL,KAAC,IAAI,cAAyC,OAAO,IAA1C,QAAQ,sBAAsB,EAAE,CAAkB,CAC9D,CAAC;wBACJ,CAAC,CAAC,CACH,GACG,IACF,EACL,UAAU,CAAC,eAAe,IAAI,CAC7B,KAAC,GAAG,cACF,KAAC,kBAAkB,IACjB,WAAW,EAAE,UAAU,CAAC,WAAW,EACnC,WAAW,EAAE,UAAU,CAAC,qBAAqB,EAC7C,SAAS,EAAE,UAAU,CAAC,oBAAoB,EAC1C,KAAK,EAAE,gBAAgB,EACvB,YAAY,EAAE,UAAU,CAAC,iBAAiB,EAC1C,SAAS,EAAE,MAAM,CAAC,IAAI,GACtB,GACE,CACP,IACA,CACJ,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { ThoughtSummary } from '@google/gemini-cli-core';
7
+ import React from 'react';
8
+ interface LoadingIndicatorProps {
9
+ currentLoadingPhrase?: string;
10
+ elapsedTime: number;
11
+ rightContent?: React.ReactNode;
12
+ thought?: ThoughtSummary | null;
13
+ }
14
+ export declare const LoadingIndicator: React.FC<LoadingIndicatorProps>;
15
+ export {};
@@ -0,0 +1,20 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Box, Text } from 'ink';
3
+ import { Colors } from '../colors.js';
4
+ import { useStreamingContext } from '../contexts/StreamingContext.js';
5
+ import { StreamingState } from '../types.js';
6
+ import { GeminiRespondingSpinner } from './GeminiRespondingSpinner.js';
7
+ import { formatDuration } from '../utils/formatters.js';
8
+ export const LoadingIndicator = ({ currentLoadingPhrase, elapsedTime, rightContent, thought, }) => {
9
+ const streamingState = useStreamingContext();
10
+ if (streamingState === StreamingState.Idle) {
11
+ return null;
12
+ }
13
+ const primaryText = thought?.subject || currentLoadingPhrase;
14
+ return (_jsx(Box, { marginTop: 1, paddingLeft: 0, flexDirection: "column", children: _jsxs(Box, { children: [_jsx(Box, { marginRight: 1, children: _jsx(GeminiRespondingSpinner, { nonRespondingDisplay: streamingState === StreamingState.WaitingForConfirmation
15
+ ? '⠏'
16
+ : '' }) }), primaryText && _jsx(Text, { color: Colors.AccentPurple, children: primaryText }), _jsx(Text, { color: Colors.Gray, children: streamingState === StreamingState.WaitingForConfirmation
17
+ ? ''
18
+ : ` (esc to cancel, ${elapsedTime < 60 ? `${elapsedTime}s` : formatDuration(elapsedTime * 1000)})` }), _jsx(Box, { flexGrow: 1 }), rightContent && _jsx(Box, { children: rightContent })] }) }));
19
+ };
20
+ //# sourceMappingURL=LoadingIndicator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LoadingIndicator.js","sourceRoot":"","sources":["../../../../src/ui/components/LoadingIndicator.tsx"],"names":[],"mappings":";AAQA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AASxD,MAAM,CAAC,MAAM,gBAAgB,GAAoC,CAAC,EAChE,oBAAoB,EACpB,WAAW,EACX,YAAY,EACZ,OAAO,GACR,EAAE,EAAE;IACH,MAAM,cAAc,GAAG,mBAAmB,EAAE,CAAC;IAE7C,IAAI,cAAc,KAAK,cAAc,CAAC,IAAI,EAAE,CAAC;QAC3C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,WAAW,GAAG,OAAO,EAAE,OAAO,IAAI,oBAAoB,CAAC;IAE7D,OAAO,CACL,KAAC,GAAG,IAAC,SAAS,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,aAAa,EAAC,QAAQ,YAEvD,MAAC,GAAG,eACF,KAAC,GAAG,IAAC,WAAW,EAAE,CAAC,YACjB,KAAC,uBAAuB,IACtB,oBAAoB,EAClB,cAAc,KAAK,cAAc,CAAC,sBAAsB;4BACtD,CAAC,CAAC,GAAG;4BACL,CAAC,CAAC,EAAE,GAER,GACE,EACL,WAAW,IAAI,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,YAAY,YAAG,WAAW,GAAQ,EACtE,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,IAAI,YACrB,cAAc,KAAK,cAAc,CAAC,sBAAsB;wBACvD,CAAC,CAAC,EAAE;wBACJ,CAAC,CAAC,oBAAoB,WAAW,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,WAAW,GAAG,CAAC,CAAC,CAAC,cAAc,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,GAC/F,EACP,KAAC,GAAG,IAAC,QAAQ,EAAE,CAAC,GAAsB,EACrC,YAAY,IAAI,KAAC,GAAG,cAAE,YAAY,GAAO,IACtC,GACF,CACP,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import React from 'react';
7
+ export declare const MemoryUsageDisplay: React.FC;
@@ -0,0 +1,27 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /**
3
+ * @license
4
+ * Copyright 2025 Google LLC
5
+ * SPDX-License-Identifier: Apache-2.0
6
+ */
7
+ import { useEffect, useState } from 'react';
8
+ import { Box, Text } from 'ink';
9
+ import { Colors } from '../colors.js';
10
+ import process from 'node:process';
11
+ import { formatMemoryUsage } from '../utils/formatters.js';
12
+ export const MemoryUsageDisplay = () => {
13
+ const [memoryUsage, setMemoryUsage] = useState('');
14
+ const [memoryUsageColor, setMemoryUsageColor] = useState(Colors.Gray);
15
+ useEffect(() => {
16
+ const updateMemory = () => {
17
+ const usage = process.memoryUsage().rss;
18
+ setMemoryUsage(formatMemoryUsage(usage));
19
+ setMemoryUsageColor(usage >= 2 * 1024 * 1024 * 1024 ? Colors.AccentRed : Colors.Gray);
20
+ };
21
+ const intervalId = setInterval(updateMemory, 2000);
22
+ updateMemory(); // Initial update
23
+ return () => clearInterval(intervalId);
24
+ }, []);
25
+ return (_jsxs(Box, { children: [_jsx(Text, { color: Colors.Gray, children: "| " }), _jsx(Text, { color: memoryUsageColor, children: memoryUsage })] }));
26
+ };
27
+ //# sourceMappingURL=MemoryUsageDisplay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MemoryUsageDisplay.js","sourceRoot":"","sources":["../../../../src/ui/components/MemoryUsageDisplay.tsx"],"names":[],"mappings":";AAAA;;;;GAIG;AAEH,OAAc,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACnD,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,OAAO,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D,MAAM,CAAC,MAAM,kBAAkB,GAAa,GAAG,EAAE;IAC/C,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAS,EAAE,CAAC,CAAC;IAC3D,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAAG,QAAQ,CAAS,MAAM,CAAC,IAAI,CAAC,CAAC;IAE9E,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,YAAY,GAAG,GAAG,EAAE;YACxB,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC;YACxC,cAAc,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC;YACzC,mBAAmB,CACjB,KAAK,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CACjE,CAAC;QACJ,CAAC,CAAC;QACF,MAAM,UAAU,GAAG,WAAW,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;QACnD,YAAY,EAAE,CAAC,CAAC,iBAAiB;QACjC,OAAO,GAAG,EAAE,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;IACzC,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,CACL,MAAC,GAAG,eACF,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,IAAI,mBAAW,EACnC,KAAC,IAAI,IAAC,KAAK,EAAE,gBAAgB,YAAG,WAAW,GAAQ,IAC/C,CACP,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import React from 'react';
7
+ export declare const ModelStatsDisplay: React.FC;
@@ -0,0 +1,33 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Box, Text } from 'ink';
3
+ import { Colors } from '../colors.js';
4
+ import { formatDuration } from '../utils/formatters.js';
5
+ import { calculateAverageLatency, calculateCacheHitRate, calculateErrorRate, } from '../utils/computeStats.js';
6
+ import { useSessionStats } from '../contexts/SessionContext.js';
7
+ const METRIC_COL_WIDTH = 28;
8
+ const MODEL_COL_WIDTH = 22;
9
+ const StatRow = ({ title, values, isSubtle = false, isSection = false, }) => (_jsxs(Box, { children: [_jsx(Box, { width: METRIC_COL_WIDTH, children: _jsx(Text, { bold: isSection, color: isSection ? undefined : Colors.LightBlue, children: isSubtle ? ` ↳ ${title}` : title }) }), values.map((value, index) => (_jsx(Box, { width: MODEL_COL_WIDTH, children: _jsx(Text, { children: value }) }, index)))] }));
10
+ export const ModelStatsDisplay = () => {
11
+ const { stats } = useSessionStats();
12
+ const { models } = stats.metrics;
13
+ const activeModels = Object.entries(models).filter(([, metrics]) => metrics.api.totalRequests > 0);
14
+ if (activeModels.length === 0) {
15
+ return (_jsx(Box, { borderStyle: "round", borderColor: Colors.Gray, paddingY: 1, paddingX: 2, children: _jsx(Text, { children: "No API calls have been made in this session." }) }));
16
+ }
17
+ const modelNames = activeModels.map(([name]) => name);
18
+ const getModelValues = (getter) => activeModels.map(([, metrics]) => getter(metrics));
19
+ const hasThoughts = activeModels.some(([, metrics]) => metrics.tokens.thoughts > 0);
20
+ const hasTool = activeModels.some(([, metrics]) => metrics.tokens.tool > 0);
21
+ const hasCached = activeModels.some(([, metrics]) => metrics.tokens.cached > 0);
22
+ return (_jsxs(Box, { borderStyle: "round", borderColor: Colors.Gray, flexDirection: "column", paddingY: 1, paddingX: 2, children: [_jsx(Text, { bold: true, color: Colors.AccentPurple, children: "Model Stats For Nerds" }), _jsx(Box, { height: 1 }), _jsxs(Box, { children: [_jsx(Box, { width: METRIC_COL_WIDTH, children: _jsx(Text, { bold: true, children: "Metric" }) }), modelNames.map((name) => (_jsx(Box, { width: MODEL_COL_WIDTH, children: _jsx(Text, { bold: true, children: name }) }, name)))] }), _jsx(Box, { borderStyle: "single", borderBottom: true, borderTop: false, borderLeft: false, borderRight: false }), _jsx(StatRow, { title: "API", values: [], isSection: true }), _jsx(StatRow, { title: "Requests", values: getModelValues((m) => m.api.totalRequests.toLocaleString()) }), _jsx(StatRow, { title: "Errors", values: getModelValues((m) => {
23
+ const errorRate = calculateErrorRate(m);
24
+ return (_jsxs(Text, { color: m.api.totalErrors > 0 ? Colors.AccentRed : Colors.Foreground, children: [m.api.totalErrors.toLocaleString(), " (", errorRate.toFixed(1), "%)"] }));
25
+ }) }), _jsx(StatRow, { title: "Avg Latency", values: getModelValues((m) => {
26
+ const avgLatency = calculateAverageLatency(m);
27
+ return formatDuration(avgLatency);
28
+ }) }), _jsx(Box, { height: 1 }), _jsx(StatRow, { title: "Tokens", values: [], isSection: true }), _jsx(StatRow, { title: "Total", values: getModelValues((m) => (_jsx(Text, { color: Colors.AccentYellow, children: m.tokens.total.toLocaleString() }))) }), _jsx(StatRow, { title: "Prompt", isSubtle: true, values: getModelValues((m) => m.tokens.prompt.toLocaleString()) }), hasCached && (_jsx(StatRow, { title: "Cached", isSubtle: true, values: getModelValues((m) => {
29
+ const cacheHitRate = calculateCacheHitRate(m);
30
+ return (_jsxs(Text, { color: Colors.AccentGreen, children: [m.tokens.cached.toLocaleString(), " (", cacheHitRate.toFixed(1), "%)"] }));
31
+ }) })), hasThoughts && (_jsx(StatRow, { title: "Thoughts", isSubtle: true, values: getModelValues((m) => m.tokens.thoughts.toLocaleString()) })), hasTool && (_jsx(StatRow, { title: "Tool", isSubtle: true, values: getModelValues((m) => m.tokens.tool.toLocaleString()) })), _jsx(StatRow, { title: "Output", isSubtle: true, values: getModelValues((m) => m.tokens.candidates.toLocaleString()) })] }));
32
+ };
33
+ //# sourceMappingURL=ModelStatsDisplay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ModelStatsDisplay.js","sourceRoot":"","sources":["../../../../src/ui/components/ModelStatsDisplay.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import React from 'react';
7
+ interface SessionSummaryDisplayProps {
8
+ duration: string;
9
+ }
10
+ export declare const SessionSummaryDisplay: React.FC<SessionSummaryDisplayProps>;
11
+ export {};
@@ -0,0 +1,4 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { StatsDisplay } from './StatsDisplay.js';
3
+ export const SessionSummaryDisplay = ({ duration, }) => (_jsx(StatsDisplay, { title: "Agent powering down. Goodbye!", duration: duration }));
4
+ //# sourceMappingURL=SessionSummaryDisplay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SessionSummaryDisplay.js","sourceRoot":"","sources":["../../../../src/ui/components/SessionSummaryDisplay.tsx"],"names":[],"mappings":";AAOA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAMjD,MAAM,CAAC,MAAM,qBAAqB,GAAyC,CAAC,EAC1E,QAAQ,GACT,EAAE,EAAE,CAAC,CACJ,KAAC,YAAY,IAAC,KAAK,EAAC,+BAA+B,EAAC,QAAQ,EAAE,QAAQ,GAAI,CAC3E,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import React from 'react';
7
+ export declare const ShellModeIndicator: React.FC;
@@ -0,0 +1,5 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Box, Text } from 'ink';
3
+ import { Colors } from '../colors.js';
4
+ export const ShellModeIndicator = () => (_jsx(Box, { children: _jsxs(Text, { color: Colors.AccentYellow, children: ["shell mode enabled", _jsx(Text, { color: Colors.Gray, children: " (esc to disable)" })] }) }));
5
+ //# sourceMappingURL=ShellModeIndicator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ShellModeIndicator.js","sourceRoot":"","sources":["../../../../src/ui/components/ShellModeIndicator.tsx"],"names":[],"mappings":";AAOA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,MAAM,CAAC,MAAM,kBAAkB,GAAa,GAAG,EAAE,CAAC,CAChD,KAAC,GAAG,cACF,MAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,YAAY,mCAE9B,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,IAAI,kCAA0B,IAC7C,GACH,CACP,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ interface ShowMoreLinesProps {
7
+ constrainHeight: boolean;
8
+ }
9
+ export declare const ShowMoreLines: ({ constrainHeight }: ShowMoreLinesProps) => import("react/jsx-runtime").JSX.Element | null;
10
+ export {};
@@ -0,0 +1,24 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ /**
3
+ * @license
4
+ * Copyright 2025 Google LLC
5
+ * SPDX-License-Identifier: Apache-2.0
6
+ */
7
+ import { Box, Text } from 'ink';
8
+ import { useOverflowState } from '../contexts/OverflowContext.js';
9
+ import { useStreamingContext } from '../contexts/StreamingContext.js';
10
+ import { StreamingState } from '../types.js';
11
+ import { Colors } from '../colors.js';
12
+ export const ShowMoreLines = ({ constrainHeight }) => {
13
+ const overflowState = useOverflowState();
14
+ const streamingState = useStreamingContext();
15
+ if (overflowState === undefined ||
16
+ overflowState.overflowingIds.size === 0 ||
17
+ !constrainHeight ||
18
+ !(streamingState === StreamingState.Idle ||
19
+ streamingState === StreamingState.WaitingForConfirmation)) {
20
+ return null;
21
+ }
22
+ return (_jsx(Box, { children: _jsx(Text, { color: Colors.Gray, wrap: "truncate", children: "Press ctrl-s to show more lines" }) }));
23
+ };
24
+ //# sourceMappingURL=ShowMoreLines.js.map