@google/gemini-cli 0.1.1 → 0.1.3-rc.1

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 (391) hide show
  1. package/README.md +7 -6
  2. package/dist/.last_build +0 -0
  3. package/dist/google-gemini-cli-0.1.3.tgz +0 -0
  4. package/dist/index.d.ts +7 -0
  5. package/dist/index.js +20 -0
  6. package/dist/index.js.map +1 -0
  7. package/dist/package.json +74 -0
  8. package/dist/src/config/auth.d.ts +6 -0
  9. package/dist/src/config/auth.js +38 -0
  10. package/dist/src/config/auth.js.map +1 -0
  11. package/dist/src/config/config.d.ts +14 -0
  12. package/dist/src/config/config.js +225 -0
  13. package/dist/src/config/config.js.map +1 -0
  14. package/dist/src/config/extension.d.ts +19 -0
  15. package/dist/src/config/extension.js +81 -0
  16. package/dist/src/config/extension.js.map +1 -0
  17. package/dist/src/config/sandboxConfig.d.ts +13 -0
  18. package/dist/src/config/sandboxConfig.js +75 -0
  19. package/dist/src/config/sandboxConfig.js.map +1 -0
  20. package/dist/src/config/settings.d.ts +69 -0
  21. package/dist/src/config/settings.js +165 -0
  22. package/dist/src/config/settings.js.map +1 -0
  23. package/dist/src/gemini.d.ts +6 -0
  24. package/dist/src/gemini.js +212 -0
  25. package/dist/src/gemini.js.map +1 -0
  26. package/dist/src/gemini.test.d.ts +6 -0
  27. package/dist/src/gemini.test.js +122 -0
  28. package/dist/src/gemini.test.js.map +1 -0
  29. package/dist/src/generated/git-commit.d.ts +6 -0
  30. package/dist/src/generated/git-commit.js +9 -0
  31. package/dist/src/generated/git-commit.js.map +1 -0
  32. package/dist/src/nonInteractiveCli.d.ts +7 -0
  33. package/dist/src/nonInteractiveCli.js +112 -0
  34. package/dist/src/nonInteractiveCli.js.map +1 -0
  35. package/dist/src/ui/App.d.ts +14 -0
  36. package/dist/src/ui/App.js +398 -0
  37. package/dist/src/ui/App.js.map +1 -0
  38. package/dist/src/ui/App.test.d.ts +6 -0
  39. package/dist/src/ui/App.test.js +280 -0
  40. package/dist/src/ui/App.test.js.map +1 -0
  41. package/dist/src/ui/colors.d.ts +7 -0
  42. package/dist/src/ui/colors.js +48 -0
  43. package/dist/src/ui/colors.js.map +1 -0
  44. package/dist/src/ui/components/AboutBox.d.ts +14 -0
  45. package/dist/src/ui/components/AboutBox.js +6 -0
  46. package/dist/src/ui/components/AboutBox.js.map +1 -0
  47. package/dist/src/ui/components/AsciiArt.d.ts +7 -0
  48. package/dist/src/ui/components/AsciiArt.js +26 -0
  49. package/dist/src/ui/components/AsciiArt.js.map +1 -0
  50. package/dist/src/ui/components/AuthDialog.d.ts +15 -0
  51. package/dist/src/ui/components/AuthDialog.js +67 -0
  52. package/dist/src/ui/components/AuthDialog.js.map +1 -0
  53. package/dist/src/ui/components/AuthDialog.test.d.ts +6 -0
  54. package/dist/src/ui/components/AuthDialog.test.js +69 -0
  55. package/dist/src/ui/components/AuthDialog.test.js.map +1 -0
  56. package/dist/src/ui/components/AuthInProgress.d.ts +11 -0
  57. package/dist/src/ui/components/AuthInProgress.js +27 -0
  58. package/dist/src/ui/components/AuthInProgress.js.map +1 -0
  59. package/dist/src/ui/components/AutoAcceptIndicator.d.ts +12 -0
  60. package/dist/src/ui/components/AutoAcceptIndicator.js +26 -0
  61. package/dist/src/ui/components/AutoAcceptIndicator.js.map +1 -0
  62. package/dist/src/ui/components/ConsolePatcher.d.ts +12 -0
  63. package/dist/src/ui/components/ConsolePatcher.js +40 -0
  64. package/dist/src/ui/components/ConsolePatcher.js.map +1 -0
  65. package/dist/src/ui/components/ConsoleSummaryDisplay.d.ts +11 -0
  66. package/dist/src/ui/components/ConsoleSummaryDisplay.js +11 -0
  67. package/dist/src/ui/components/ConsoleSummaryDisplay.js.map +1 -0
  68. package/dist/src/ui/components/ContextSummaryDisplay.d.ts +15 -0
  69. package/dist/src/ui/components/ContextSummaryDisplay.js +41 -0
  70. package/dist/src/ui/components/ContextSummaryDisplay.js.map +1 -0
  71. package/dist/src/ui/components/DetailedMessagesDisplay.d.ts +14 -0
  72. package/dist/src/ui/components/DetailedMessagesDisplay.js +34 -0
  73. package/dist/src/ui/components/DetailedMessagesDisplay.js.map +1 -0
  74. package/dist/src/ui/components/EditorSettingsDialog.d.ts +15 -0
  75. package/dist/src/ui/components/EditorSettingsDialog.js +73 -0
  76. package/dist/src/ui/components/EditorSettingsDialog.js.map +1 -0
  77. package/dist/src/ui/components/Footer.d.ts +22 -0
  78. package/dist/src/ui/components/Footer.js +13 -0
  79. package/dist/src/ui/components/Footer.js.map +1 -0
  80. package/dist/src/ui/components/GeminiRespondingSpinner.d.ts +17 -0
  81. package/dist/src/ui/components/GeminiRespondingSpinner.js +16 -0
  82. package/dist/src/ui/components/GeminiRespondingSpinner.js.map +1 -0
  83. package/dist/src/ui/components/Header.d.ts +12 -0
  84. package/dist/src/ui/components/Header.js +20 -0
  85. package/dist/src/ui/components/Header.js.map +1 -0
  86. package/dist/src/ui/components/Help.d.ts +12 -0
  87. package/dist/src/ui/components/Help.js +7 -0
  88. package/dist/src/ui/components/Help.js.map +1 -0
  89. package/dist/src/ui/components/HistoryItemDisplay.d.ts +18 -0
  90. package/dist/src/ui/components/HistoryItemDisplay.js +15 -0
  91. package/dist/src/ui/components/HistoryItemDisplay.js.map +1 -0
  92. package/dist/src/ui/components/HistoryItemDisplay.test.d.ts +6 -0
  93. package/dist/src/ui/components/HistoryItemDisplay.test.js +85 -0
  94. package/dist/src/ui/components/HistoryItemDisplay.test.js.map +1 -0
  95. package/dist/src/ui/components/InputPrompt.d.ts +24 -0
  96. package/dist/src/ui/components/InputPrompt.js +313 -0
  97. package/dist/src/ui/components/InputPrompt.js.map +1 -0
  98. package/dist/src/ui/components/InputPrompt.test.d.ts +6 -0
  99. package/dist/src/ui/components/InputPrompt.test.js +154 -0
  100. package/dist/src/ui/components/InputPrompt.test.js.map +1 -0
  101. package/dist/src/ui/components/LoadingIndicator.d.ts +15 -0
  102. package/dist/src/ui/components/LoadingIndicator.js +19 -0
  103. package/dist/src/ui/components/LoadingIndicator.js.map +1 -0
  104. package/dist/src/ui/components/LoadingIndicator.test.d.ts +6 -0
  105. package/dist/src/ui/components/LoadingIndicator.test.js +141 -0
  106. package/dist/src/ui/components/LoadingIndicator.test.js.map +1 -0
  107. package/dist/src/ui/components/MemoryUsageDisplay.d.ts +7 -0
  108. package/dist/src/ui/components/MemoryUsageDisplay.js +27 -0
  109. package/dist/src/ui/components/MemoryUsageDisplay.js.map +1 -0
  110. package/dist/src/ui/components/SessionSummaryDisplay.d.ts +13 -0
  111. package/dist/src/ui/components/SessionSummaryDisplay.js +20 -0
  112. package/dist/src/ui/components/SessionSummaryDisplay.js.map +1 -0
  113. package/dist/src/ui/components/SessionSummaryDisplay.test.d.ts +6 -0
  114. package/dist/src/ui/components/SessionSummaryDisplay.test.js +41 -0
  115. package/dist/src/ui/components/SessionSummaryDisplay.test.js.map +1 -0
  116. package/dist/src/ui/components/ShellModeIndicator.d.ts +7 -0
  117. package/dist/src/ui/components/ShellModeIndicator.js +5 -0
  118. package/dist/src/ui/components/ShellModeIndicator.js.map +1 -0
  119. package/dist/src/ui/components/ShowMoreLines.d.ts +10 -0
  120. package/dist/src/ui/components/ShowMoreLines.js +24 -0
  121. package/dist/src/ui/components/ShowMoreLines.js.map +1 -0
  122. package/dist/src/ui/components/Stats.d.ts +39 -0
  123. package/dist/src/ui/components/Stats.js +23 -0
  124. package/dist/src/ui/components/Stats.js.map +1 -0
  125. package/dist/src/ui/components/Stats.test.d.ts +6 -0
  126. package/dist/src/ui/components/Stats.test.js +57 -0
  127. package/dist/src/ui/components/Stats.test.js.map +1 -0
  128. package/dist/src/ui/components/StatsDisplay.d.ts +14 -0
  129. package/dist/src/ui/components/StatsDisplay.js +28 -0
  130. package/dist/src/ui/components/StatsDisplay.js.map +1 -0
  131. package/dist/src/ui/components/StatsDisplay.test.d.ts +6 -0
  132. package/dist/src/ui/components/StatsDisplay.test.js +51 -0
  133. package/dist/src/ui/components/StatsDisplay.test.js.map +1 -0
  134. package/dist/src/ui/components/SuggestionsDisplay.d.ts +21 -0
  135. package/dist/src/ui/components/SuggestionsDisplay.js +32 -0
  136. package/dist/src/ui/components/SuggestionsDisplay.js.map +1 -0
  137. package/dist/src/ui/components/ThemeDialog.d.ts +19 -0
  138. package/dist/src/ui/components/ThemeDialog.js +126 -0
  139. package/dist/src/ui/components/ThemeDialog.js.map +1 -0
  140. package/dist/src/ui/components/Tips.d.ts +12 -0
  141. package/dist/src/ui/components/Tips.js +8 -0
  142. package/dist/src/ui/components/Tips.js.map +1 -0
  143. package/dist/src/ui/components/UpdateNotification.d.ts +10 -0
  144. package/dist/src/ui/components/UpdateNotification.js +10 -0
  145. package/dist/src/ui/components/UpdateNotification.js.map +1 -0
  146. package/dist/src/ui/components/messages/CompressionMessage.d.ts +11 -0
  147. package/dist/src/ui/components/messages/CompressionMessage.js +16 -0
  148. package/dist/src/ui/components/messages/CompressionMessage.js.map +1 -0
  149. package/dist/src/ui/components/messages/DiffRenderer.d.ts +15 -0
  150. package/dist/src/ui/components/messages/DiffRenderer.js +212 -0
  151. package/dist/src/ui/components/messages/DiffRenderer.js.map +1 -0
  152. package/dist/src/ui/components/messages/DiffRenderer.test.d.ts +6 -0
  153. package/dist/src/ui/components/messages/DiffRenderer.test.js +239 -0
  154. package/dist/src/ui/components/messages/DiffRenderer.test.js.map +1 -0
  155. package/dist/src/ui/components/messages/ErrorMessage.d.ts +11 -0
  156. package/dist/src/ui/components/messages/ErrorMessage.js +9 -0
  157. package/dist/src/ui/components/messages/ErrorMessage.js.map +1 -0
  158. package/dist/src/ui/components/messages/GeminiMessage.d.ts +14 -0
  159. package/dist/src/ui/components/messages/GeminiMessage.js +10 -0
  160. package/dist/src/ui/components/messages/GeminiMessage.js.map +1 -0
  161. package/dist/src/ui/components/messages/GeminiMessageContent.d.ts +14 -0
  162. package/dist/src/ui/components/messages/GeminiMessageContent.js +15 -0
  163. package/dist/src/ui/components/messages/GeminiMessageContent.js.map +1 -0
  164. package/dist/src/ui/components/messages/InfoMessage.d.ts +11 -0
  165. package/dist/src/ui/components/messages/InfoMessage.js +9 -0
  166. package/dist/src/ui/components/messages/InfoMessage.js.map +1 -0
  167. package/dist/src/ui/components/messages/ToolConfirmationMessage.d.ts +15 -0
  168. package/dist/src/ui/components/messages/ToolConfirmationMessage.js +111 -0
  169. package/dist/src/ui/components/messages/ToolConfirmationMessage.js.map +1 -0
  170. package/dist/src/ui/components/messages/ToolConfirmationMessage.test.d.ts +6 -0
  171. package/dist/src/ui/components/messages/ToolConfirmationMessage.test.js +37 -0
  172. package/dist/src/ui/components/messages/ToolConfirmationMessage.test.js.map +1 -0
  173. package/dist/src/ui/components/messages/ToolGroupMessage.d.ts +18 -0
  174. package/dist/src/ui/components/messages/ToolGroupMessage.js +53 -0
  175. package/dist/src/ui/components/messages/ToolGroupMessage.js.map +1 -0
  176. package/dist/src/ui/components/messages/ToolMessage.d.ts +15 -0
  177. package/dist/src/ui/components/messages/ToolMessage.js +61 -0
  178. package/dist/src/ui/components/messages/ToolMessage.js.map +1 -0
  179. package/dist/src/ui/components/messages/ToolMessage.test.d.ts +6 -0
  180. package/dist/src/ui/components/messages/ToolMessage.test.js +116 -0
  181. package/dist/src/ui/components/messages/ToolMessage.test.js.map +1 -0
  182. package/dist/src/ui/components/messages/UserMessage.d.ts +11 -0
  183. package/dist/src/ui/components/messages/UserMessage.js +9 -0
  184. package/dist/src/ui/components/messages/UserMessage.js.map +1 -0
  185. package/dist/src/ui/components/messages/UserShellMessage.d.ts +11 -0
  186. package/dist/src/ui/components/messages/UserShellMessage.js +9 -0
  187. package/dist/src/ui/components/messages/UserShellMessage.js.map +1 -0
  188. package/dist/src/ui/components/shared/MaxSizedBox.d.ts +61 -0
  189. package/dist/src/ui/components/shared/MaxSizedBox.js +383 -0
  190. package/dist/src/ui/components/shared/MaxSizedBox.js.map +1 -0
  191. package/dist/src/ui/components/shared/MaxSizedBox.test.d.ts +6 -0
  192. package/dist/src/ui/components/shared/MaxSizedBox.test.js +134 -0
  193. package/dist/src/ui/components/shared/MaxSizedBox.test.js.map +1 -0
  194. package/dist/src/ui/components/shared/RadioButtonSelect.d.ts +41 -0
  195. package/dist/src/ui/components/shared/RadioButtonSelect.js +52 -0
  196. package/dist/src/ui/components/shared/RadioButtonSelect.js.map +1 -0
  197. package/dist/src/ui/components/shared/text-buffer.d.ts +121 -0
  198. package/dist/src/ui/components/shared/text-buffer.js +1147 -0
  199. package/dist/src/ui/components/shared/text-buffer.js.map +1 -0
  200. package/dist/src/ui/constants.d.ts +8 -0
  201. package/dist/src/ui/constants.js +12 -0
  202. package/dist/src/ui/constants.js.map +1 -0
  203. package/dist/src/ui/contexts/OverflowContext.d.ts +19 -0
  204. package/dist/src/ui/contexts/OverflowContext.js +43 -0
  205. package/dist/src/ui/contexts/OverflowContext.js.map +1 -0
  206. package/dist/src/ui/contexts/SessionContext.d.ts +35 -0
  207. package/dist/src/ui/contexts/SessionContext.js +132 -0
  208. package/dist/src/ui/contexts/SessionContext.js.map +1 -0
  209. package/dist/src/ui/contexts/SessionContext.test.d.ts +6 -0
  210. package/dist/src/ui/contexts/SessionContext.test.js +151 -0
  211. package/dist/src/ui/contexts/SessionContext.test.js.map +1 -0
  212. package/dist/src/ui/contexts/StreamingContext.d.ts +9 -0
  213. package/dist/src/ui/contexts/StreamingContext.js +15 -0
  214. package/dist/src/ui/contexts/StreamingContext.js.map +1 -0
  215. package/dist/src/ui/editors/editorSettingsManager.d.ts +19 -0
  216. package/dist/src/ui/editors/editorSettingsManager.js +50 -0
  217. package/dist/src/ui/editors/editorSettingsManager.js.map +1 -0
  218. package/dist/src/ui/hooks/atCommandProcessor.d.ts +31 -0
  219. package/dist/src/ui/hooks/atCommandProcessor.js +312 -0
  220. package/dist/src/ui/hooks/atCommandProcessor.js.map +1 -0
  221. package/dist/src/ui/hooks/shellCommandProcessor.d.ts +16 -0
  222. package/dist/src/ui/hooks/shellCommandProcessor.js +261 -0
  223. package/dist/src/ui/hooks/shellCommandProcessor.js.map +1 -0
  224. package/dist/src/ui/hooks/slashCommandProcessor.d.ts +31 -0
  225. package/dist/src/ui/hooks/slashCommandProcessor.js +922 -0
  226. package/dist/src/ui/hooks/slashCommandProcessor.js.map +1 -0
  227. package/dist/src/ui/hooks/useAuthCommand.d.ts +15 -0
  228. package/dist/src/ui/hooks/useAuthCommand.js +65 -0
  229. package/dist/src/ui/hooks/useAuthCommand.js.map +1 -0
  230. package/dist/src/ui/hooks/useAutoAcceptIndicator.d.ts +10 -0
  231. package/dist/src/ui/hooks/useAutoAcceptIndicator.js +37 -0
  232. package/dist/src/ui/hooks/useAutoAcceptIndicator.js.map +1 -0
  233. package/dist/src/ui/hooks/useCompletion.d.ts +21 -0
  234. package/dist/src/ui/hooks/useCompletion.js +321 -0
  235. package/dist/src/ui/hooks/useCompletion.js.map +1 -0
  236. package/dist/src/ui/hooks/useConsoleMessages.d.ts +12 -0
  237. package/dist/src/ui/hooks/useConsoleMessages.js +59 -0
  238. package/dist/src/ui/hooks/useConsoleMessages.js.map +1 -0
  239. package/dist/src/ui/hooks/useEditorSettings.d.ts +16 -0
  240. package/dist/src/ui/hooks/useEditorSettings.js +43 -0
  241. package/dist/src/ui/hooks/useEditorSettings.js.map +1 -0
  242. package/dist/src/ui/hooks/useGeminiStream.d.ts +23 -0
  243. package/dist/src/ui/hooks/useGeminiStream.js +552 -0
  244. package/dist/src/ui/hooks/useGeminiStream.js.map +1 -0
  245. package/dist/src/ui/hooks/useGeminiStream.test.d.ts +6 -0
  246. package/dist/src/ui/hooks/useGeminiStream.test.js +823 -0
  247. package/dist/src/ui/hooks/useGeminiStream.test.js.map +1 -0
  248. package/dist/src/ui/hooks/useGitBranchName.d.ts +6 -0
  249. package/dist/src/ui/hooks/useGitBranchName.js +61 -0
  250. package/dist/src/ui/hooks/useGitBranchName.js.map +1 -0
  251. package/dist/src/ui/hooks/useHistoryManager.d.ts +22 -0
  252. package/dist/src/ui/hooks/useHistoryManager.js +72 -0
  253. package/dist/src/ui/hooks/useHistoryManager.js.map +1 -0
  254. package/dist/src/ui/hooks/useInputHistory.d.ts +19 -0
  255. package/dist/src/ui/hooks/useInputHistory.js +84 -0
  256. package/dist/src/ui/hooks/useInputHistory.js.map +1 -0
  257. package/dist/src/ui/hooks/useLoadingIndicator.d.ts +10 -0
  258. package/dist/src/ui/hooks/useLoadingIndicator.js +44 -0
  259. package/dist/src/ui/hooks/useLoadingIndicator.js.map +1 -0
  260. package/dist/src/ui/hooks/useLogger.d.ts +10 -0
  261. package/dist/src/ui/hooks/useLogger.js +29 -0
  262. package/dist/src/ui/hooks/useLogger.js.map +1 -0
  263. package/dist/src/ui/hooks/usePhraseCycler.d.ts +14 -0
  264. package/dist/src/ui/hooks/usePhraseCycler.js +189 -0
  265. package/dist/src/ui/hooks/usePhraseCycler.js.map +1 -0
  266. package/dist/src/ui/hooks/useReactToolScheduler.d.ts +33 -0
  267. package/dist/src/ui/hooks/useReactToolScheduler.js +186 -0
  268. package/dist/src/ui/hooks/useReactToolScheduler.js.map +1 -0
  269. package/dist/src/ui/hooks/useRefreshMemoryCommand.d.ts +6 -0
  270. package/dist/src/ui/hooks/useRefreshMemoryCommand.js +7 -0
  271. package/dist/src/ui/hooks/useRefreshMemoryCommand.js.map +1 -0
  272. package/dist/src/ui/hooks/useShellHistory.d.ts +11 -0
  273. package/dist/src/ui/hooks/useShellHistory.js +89 -0
  274. package/dist/src/ui/hooks/useShellHistory.js.map +1 -0
  275. package/dist/src/ui/hooks/useShowMemoryCommand.d.ts +9 -0
  276. package/dist/src/ui/hooks/useShowMemoryCommand.js +58 -0
  277. package/dist/src/ui/hooks/useShowMemoryCommand.js.map +1 -0
  278. package/dist/src/ui/hooks/useStateAndRef.d.ts +7 -0
  279. package/dist/src/ui/hooks/useStateAndRef.js +26 -0
  280. package/dist/src/ui/hooks/useStateAndRef.js.map +1 -0
  281. package/dist/src/ui/hooks/useTerminalSize.d.ts +9 -0
  282. package/dist/src/ui/hooks/useTerminalSize.js +27 -0
  283. package/dist/src/ui/hooks/useTerminalSize.js.map +1 -0
  284. package/dist/src/ui/hooks/useThemeCommand.d.ts +15 -0
  285. package/dist/src/ui/hooks/useThemeCommand.js +78 -0
  286. package/dist/src/ui/hooks/useThemeCommand.js.map +1 -0
  287. package/dist/src/ui/hooks/useTimer.d.ts +12 -0
  288. package/dist/src/ui/hooks/useTimer.js +58 -0
  289. package/dist/src/ui/hooks/useTimer.js.map +1 -0
  290. package/dist/src/ui/themes/ansi-light.d.ts +7 -0
  291. package/dist/src/ui/themes/ansi-light.js +139 -0
  292. package/dist/src/ui/themes/ansi-light.js.map +1 -0
  293. package/dist/src/ui/themes/ansi.d.ts +7 -0
  294. package/dist/src/ui/themes/ansi.js +149 -0
  295. package/dist/src/ui/themes/ansi.js.map +1 -0
  296. package/dist/src/ui/themes/atom-one-dark.d.ts +7 -0
  297. package/dist/src/ui/themes/atom-one-dark.js +136 -0
  298. package/dist/src/ui/themes/atom-one-dark.js.map +1 -0
  299. package/dist/src/ui/themes/ayu-light.d.ts +7 -0
  300. package/dist/src/ui/themes/ayu-light.js +128 -0
  301. package/dist/src/ui/themes/ayu-light.js.map +1 -0
  302. package/dist/src/ui/themes/ayu.d.ts +7 -0
  303. package/dist/src/ui/themes/ayu.js +102 -0
  304. package/dist/src/ui/themes/ayu.js.map +1 -0
  305. package/dist/src/ui/themes/default-light.d.ts +7 -0
  306. package/dist/src/ui/themes/default-light.js +100 -0
  307. package/dist/src/ui/themes/default-light.js.map +1 -0
  308. package/dist/src/ui/themes/default.d.ts +7 -0
  309. package/dist/src/ui/themes/default.js +143 -0
  310. package/dist/src/ui/themes/default.js.map +1 -0
  311. package/dist/src/ui/themes/dracula.d.ts +7 -0
  312. package/dist/src/ui/themes/dracula.js +113 -0
  313. package/dist/src/ui/themes/dracula.js.map +1 -0
  314. package/dist/src/ui/themes/github-dark.d.ts +7 -0
  315. package/dist/src/ui/themes/github-dark.js +136 -0
  316. package/dist/src/ui/themes/github-dark.js.map +1 -0
  317. package/dist/src/ui/themes/github-light.d.ts +7 -0
  318. package/dist/src/ui/themes/github-light.js +138 -0
  319. package/dist/src/ui/themes/github-light.js.map +1 -0
  320. package/dist/src/ui/themes/googlecode.d.ts +7 -0
  321. package/dist/src/ui/themes/googlecode.js +135 -0
  322. package/dist/src/ui/themes/googlecode.js.map +1 -0
  323. package/dist/src/ui/themes/no-color.d.ts +7 -0
  324. package/dist/src/ui/themes/no-color.js +84 -0
  325. package/dist/src/ui/themes/no-color.js.map +1 -0
  326. package/dist/src/ui/themes/theme-manager.d.ts +33 -0
  327. package/dist/src/ui/themes/theme-manager.js +107 -0
  328. package/dist/src/ui/themes/theme-manager.js.map +1 -0
  329. package/dist/src/ui/themes/theme.d.ts +67 -0
  330. package/dist/src/ui/themes/theme.js +304 -0
  331. package/dist/src/ui/themes/theme.js.map +1 -0
  332. package/dist/src/ui/themes/xcode.d.ts +7 -0
  333. package/dist/src/ui/themes/xcode.js +143 -0
  334. package/dist/src/ui/themes/xcode.js.map +1 -0
  335. package/dist/src/ui/types.d.ts +149 -0
  336. package/dist/src/ui/types.js +41 -0
  337. package/dist/src/ui/types.js.map +1 -0
  338. package/dist/src/ui/utils/CodeColorizer.d.ts +14 -0
  339. package/dist/src/ui/utils/CodeColorizer.js +97 -0
  340. package/dist/src/ui/utils/CodeColorizer.js.map +1 -0
  341. package/dist/src/ui/utils/MarkdownDisplay.d.ts +14 -0
  342. package/dist/src/ui/utils/MarkdownDisplay.js +221 -0
  343. package/dist/src/ui/utils/MarkdownDisplay.js.map +1 -0
  344. package/dist/src/ui/utils/commandUtils.d.ts +22 -0
  345. package/dist/src/ui/utils/commandUtils.js +25 -0
  346. package/dist/src/ui/utils/commandUtils.js.map +1 -0
  347. package/dist/src/ui/utils/errorParsing.d.ts +15 -0
  348. package/dist/src/ui/utils/errorParsing.js +80 -0
  349. package/dist/src/ui/utils/errorParsing.js.map +1 -0
  350. package/dist/src/ui/utils/formatters.d.ts +13 -0
  351. package/dist/src/ui/utils/formatters.js +56 -0
  352. package/dist/src/ui/utils/formatters.js.map +1 -0
  353. package/dist/src/ui/utils/markdownUtilities.d.ts +6 -0
  354. package/dist/src/ui/utils/markdownUtilities.js +110 -0
  355. package/dist/src/ui/utils/markdownUtilities.js.map +1 -0
  356. package/dist/src/ui/utils/textUtils.d.ts +22 -0
  357. package/dist/src/ui/utils/textUtils.js +58 -0
  358. package/dist/src/ui/utils/textUtils.js.map +1 -0
  359. package/dist/src/ui/utils/updateCheck.d.ts +6 -0
  360. package/dist/src/ui/utils/updateCheck.js +34 -0
  361. package/dist/src/ui/utils/updateCheck.js.map +1 -0
  362. package/dist/src/utils/cleanup.d.ts +6 -0
  363. package/dist/src/utils/cleanup.js +19 -0
  364. package/dist/src/utils/cleanup.js.map +1 -0
  365. package/dist/src/utils/package.d.ts +12 -0
  366. package/dist/src/utils/package.js +24 -0
  367. package/dist/src/utils/package.js.map +1 -0
  368. package/dist/src/utils/readStdin.d.ts +6 -0
  369. package/dist/src/utils/readStdin.js +34 -0
  370. package/dist/src/utils/readStdin.js.map +1 -0
  371. package/dist/src/utils/sandbox.d.ts +7 -0
  372. package/dist/src/utils/sandbox.js +680 -0
  373. package/dist/src/utils/sandbox.js.map +1 -0
  374. package/dist/src/utils/startupWarnings.d.ts +6 -0
  375. package/dist/src/utils/startupWarnings.js +40 -0
  376. package/dist/src/utils/startupWarnings.js.map +1 -0
  377. package/dist/src/utils/version.d.ts +6 -0
  378. package/dist/src/utils/version.js +11 -0
  379. package/dist/src/utils/version.js.map +1 -0
  380. package/dist/tsconfig.tsbuildinfo +1 -0
  381. package/package.json +60 -71
  382. package/LICENSE +0 -202
  383. package/bundle/gemini.js +0 -257368
  384. package/bundle/shell.json +0 -18
  385. package/bundle/shell.md +0 -16
  386. /package/{bundle → dist/src/utils}/sandbox-macos-permissive-closed.sb +0 -0
  387. /package/{bundle → dist/src/utils}/sandbox-macos-permissive-open.sb +0 -0
  388. /package/{bundle → dist/src/utils}/sandbox-macos-permissive-proxied.sb +0 -0
  389. /package/{bundle → dist/src/utils}/sandbox-macos-restrictive-closed.sb +0 -0
  390. /package/{bundle → dist/src/utils}/sandbox-macos-restrictive-open.sb +0 -0
  391. /package/{bundle → dist/src/utils}/sandbox-macos-restrictive-proxied.sb +0 -0
@@ -0,0 +1,85 @@
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 { render } from 'ink-testing-library';
8
+ import { describe, it, expect, vi } from 'vitest';
9
+ import { HistoryItemDisplay } from './HistoryItemDisplay.js';
10
+ import { MessageType } from '../types.js';
11
+ // Mock child components
12
+ vi.mock('./messages/ToolGroupMessage.js', () => ({
13
+ ToolGroupMessage: () => _jsx("div", {}),
14
+ }));
15
+ describe('<HistoryItemDisplay />', () => {
16
+ const baseItem = {
17
+ id: 1,
18
+ timestamp: 12345,
19
+ isPending: false,
20
+ terminalWidth: 80,
21
+ };
22
+ it('renders UserMessage for "user" type', () => {
23
+ const item = {
24
+ ...baseItem,
25
+ type: MessageType.USER,
26
+ text: 'Hello',
27
+ };
28
+ const { lastFrame } = render(_jsx(HistoryItemDisplay, { ...baseItem, item: item }));
29
+ expect(lastFrame()).toContain('Hello');
30
+ });
31
+ it('renders StatsDisplay for "stats" type', () => {
32
+ const stats = {
33
+ turnCount: 1,
34
+ promptTokenCount: 10,
35
+ candidatesTokenCount: 20,
36
+ totalTokenCount: 30,
37
+ cachedContentTokenCount: 5,
38
+ toolUsePromptTokenCount: 2,
39
+ thoughtsTokenCount: 3,
40
+ apiTimeMs: 123,
41
+ };
42
+ const item = {
43
+ ...baseItem,
44
+ type: MessageType.STATS,
45
+ stats,
46
+ lastTurnStats: stats,
47
+ duration: '1s',
48
+ };
49
+ const { lastFrame } = render(_jsx(HistoryItemDisplay, { ...baseItem, item: item }));
50
+ expect(lastFrame()).toContain('Stats');
51
+ });
52
+ it('renders AboutBox for "about" type', () => {
53
+ const item = {
54
+ ...baseItem,
55
+ type: MessageType.ABOUT,
56
+ cliVersion: '1.0.0',
57
+ osVersion: 'test-os',
58
+ sandboxEnv: 'test-env',
59
+ modelVersion: 'test-model',
60
+ };
61
+ const { lastFrame } = render(_jsx(HistoryItemDisplay, { ...baseItem, item: item }));
62
+ expect(lastFrame()).toContain('About Gemini CLI');
63
+ });
64
+ it('renders SessionSummaryDisplay for "quit" type', () => {
65
+ const stats = {
66
+ turnCount: 1,
67
+ promptTokenCount: 10,
68
+ candidatesTokenCount: 20,
69
+ totalTokenCount: 30,
70
+ cachedContentTokenCount: 5,
71
+ toolUsePromptTokenCount: 2,
72
+ thoughtsTokenCount: 3,
73
+ apiTimeMs: 123,
74
+ };
75
+ const item = {
76
+ ...baseItem,
77
+ type: 'quit',
78
+ stats,
79
+ duration: '1s',
80
+ };
81
+ const { lastFrame } = render(_jsx(HistoryItemDisplay, { ...baseItem, item: item }));
82
+ expect(lastFrame()).toContain('Agent powering down. Goodbye!');
83
+ });
84
+ });
85
+ //# sourceMappingURL=HistoryItemDisplay.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HistoryItemDisplay.test.js","sourceRoot":"","sources":["../../../../src/ui/components/HistoryItemDisplay.test.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import React from 'react';
7
+ import { TextBuffer } from './shared/text-buffer.js';
8
+ import { SlashCommand } from '../hooks/slashCommandProcessor.js';
9
+ import { Config } from '@google/gemini-cli-core';
10
+ export interface InputPromptProps {
11
+ buffer: TextBuffer;
12
+ onSubmit: (value: string) => void;
13
+ userMessages: readonly string[];
14
+ onClearScreen: () => void;
15
+ config: Config;
16
+ slashCommands: SlashCommand[];
17
+ placeholder?: string;
18
+ focus?: boolean;
19
+ inputWidth: number;
20
+ suggestionsWidth: number;
21
+ shellModeActive: boolean;
22
+ setShellModeActive: (value: boolean) => void;
23
+ }
24
+ export declare const InputPrompt: React.FC<InputPromptProps>;
@@ -0,0 +1,313 @@
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 { Text, Box, useInput } 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 } from '../utils/textUtils.js';
13
+ import chalk from 'chalk';
14
+ import stringWidth from 'string-width';
15
+ import process from 'node:process';
16
+ import { useShellHistory } from '../hooks/useShellHistory.js';
17
+ import { useCompletion } from '../hooks/useCompletion.js';
18
+ import { isAtCommand, isSlashCommand } from '../utils/commandUtils.js';
19
+ export const InputPrompt = ({ buffer, onSubmit, userMessages, onClearScreen, config, slashCommands, placeholder = ' Type your message or @path/to/file', focus = true, inputWidth, suggestionsWidth, shellModeActive, setShellModeActive, }) => {
20
+ const [justNavigatedHistory, setJustNavigatedHistory] = useState(false);
21
+ const completion = useCompletion(buffer.text, config.getTargetDir(), isAtCommand(buffer.text) || isSlashCommand(buffer.text), slashCommands, config);
22
+ const resetCompletionState = completion.resetCompletionState;
23
+ const shellHistory = useShellHistory(config.getProjectRoot());
24
+ const handleSubmitAndClear = useCallback((submittedValue) => {
25
+ if (shellModeActive) {
26
+ shellHistory.addCommandToHistory(submittedValue);
27
+ }
28
+ // Clear the buffer *before* calling onSubmit to prevent potential re-submission
29
+ // if onSubmit triggers a re-render while the buffer still holds the old value.
30
+ buffer.setText('');
31
+ onSubmit(submittedValue);
32
+ resetCompletionState();
33
+ }, [onSubmit, buffer, resetCompletionState, shellModeActive, shellHistory]);
34
+ const customSetTextAndResetCompletionSignal = useCallback((newText) => {
35
+ buffer.setText(newText);
36
+ setJustNavigatedHistory(true);
37
+ }, [buffer, setJustNavigatedHistory]);
38
+ const inputHistory = useInputHistory({
39
+ userMessages,
40
+ onSubmit: handleSubmitAndClear,
41
+ isActive: !completion.showSuggestions && !shellModeActive,
42
+ currentQuery: buffer.text,
43
+ onChange: customSetTextAndResetCompletionSignal,
44
+ });
45
+ // Effect to reset completion if history navigation just occurred and set the text
46
+ useEffect(() => {
47
+ if (justNavigatedHistory) {
48
+ resetCompletionState();
49
+ setJustNavigatedHistory(false);
50
+ }
51
+ }, [
52
+ justNavigatedHistory,
53
+ buffer.text,
54
+ resetCompletionState,
55
+ setJustNavigatedHistory,
56
+ ]);
57
+ const completionSuggestions = completion.suggestions;
58
+ const handleAutocomplete = useCallback((indexToUse) => {
59
+ if (indexToUse < 0 || indexToUse >= completionSuggestions.length) {
60
+ return;
61
+ }
62
+ const query = buffer.text;
63
+ const selectedSuggestion = completionSuggestions[indexToUse];
64
+ if (query.trimStart().startsWith('/')) {
65
+ const parts = query.trimStart().substring(1).split(' ');
66
+ const commandName = parts[0];
67
+ const slashIndex = query.indexOf('/');
68
+ const base = query.substring(0, slashIndex + 1);
69
+ const command = slashCommands.find((cmd) => cmd.name === commandName);
70
+ if (command && command.completion) {
71
+ const newValue = `${base}${commandName} ${selectedSuggestion.value}`;
72
+ buffer.setText(newValue);
73
+ }
74
+ else {
75
+ const newValue = base + selectedSuggestion.value;
76
+ buffer.setText(newValue);
77
+ handleSubmitAndClear(newValue);
78
+ }
79
+ }
80
+ else {
81
+ const atIndex = query.lastIndexOf('@');
82
+ if (atIndex === -1)
83
+ return;
84
+ const pathPart = query.substring(atIndex + 1);
85
+ const lastSlashIndexInPath = pathPart.lastIndexOf('/');
86
+ let autoCompleteStartIndex = atIndex + 1;
87
+ if (lastSlashIndexInPath !== -1) {
88
+ autoCompleteStartIndex += lastSlashIndexInPath + 1;
89
+ }
90
+ buffer.replaceRangeByOffset(autoCompleteStartIndex, buffer.text.length, selectedSuggestion.value);
91
+ }
92
+ resetCompletionState();
93
+ }, [
94
+ resetCompletionState,
95
+ handleSubmitAndClear,
96
+ buffer,
97
+ completionSuggestions,
98
+ slashCommands,
99
+ ]);
100
+ useInput((input, key) => {
101
+ if (!focus) {
102
+ return;
103
+ }
104
+ const query = buffer.text;
105
+ if (input === '!' && query === '' && !completion.showSuggestions) {
106
+ setShellModeActive(!shellModeActive);
107
+ buffer.setText(''); // Clear the '!' from input
108
+ return true;
109
+ }
110
+ if (completion.showSuggestions) {
111
+ if (key.upArrow) {
112
+ completion.navigateUp();
113
+ return;
114
+ }
115
+ if (key.downArrow) {
116
+ completion.navigateDown();
117
+ return;
118
+ }
119
+ if (key.tab) {
120
+ if (completion.suggestions.length > 0) {
121
+ const targetIndex = completion.activeSuggestionIndex === -1
122
+ ? 0
123
+ : completion.activeSuggestionIndex;
124
+ if (targetIndex < completion.suggestions.length) {
125
+ handleAutocomplete(targetIndex);
126
+ }
127
+ }
128
+ return;
129
+ }
130
+ if (key.return) {
131
+ if (completion.activeSuggestionIndex >= 0) {
132
+ handleAutocomplete(completion.activeSuggestionIndex);
133
+ }
134
+ else if (query.trim()) {
135
+ handleSubmitAndClear(query);
136
+ }
137
+ return;
138
+ }
139
+ }
140
+ else {
141
+ // Keybindings when suggestions are not shown
142
+ if (key.ctrl && input === 'l') {
143
+ onClearScreen();
144
+ return true;
145
+ }
146
+ if (key.ctrl && input === 'p') {
147
+ inputHistory.navigateUp();
148
+ return true;
149
+ }
150
+ if (key.ctrl && input === 'n') {
151
+ inputHistory.navigateDown();
152
+ return true;
153
+ }
154
+ if (key.escape) {
155
+ if (shellModeActive) {
156
+ setShellModeActive(false);
157
+ return;
158
+ }
159
+ completion.resetCompletionState();
160
+ return;
161
+ }
162
+ }
163
+ // Ctrl+A (Home)
164
+ if (key.ctrl && input === 'a') {
165
+ buffer.move('home');
166
+ buffer.moveToOffset(0);
167
+ return;
168
+ }
169
+ // Ctrl+E (End)
170
+ if (key.ctrl && input === 'e') {
171
+ buffer.move('end');
172
+ buffer.moveToOffset(cpLen(buffer.text));
173
+ return;
174
+ }
175
+ // Ctrl+L (Clear Screen)
176
+ if (key.ctrl && input === 'l') {
177
+ onClearScreen();
178
+ return;
179
+ }
180
+ // Ctrl+P (History Up)
181
+ if (key.ctrl && input === 'p' && !completion.showSuggestions) {
182
+ inputHistory.navigateUp();
183
+ return;
184
+ }
185
+ // Ctrl+N (History Down)
186
+ if (key.ctrl && input === 'n' && !completion.showSuggestions) {
187
+ inputHistory.navigateDown();
188
+ return;
189
+ }
190
+ // Core text editing from MultilineTextEditor's useInput
191
+ if (key.ctrl && input === 'k') {
192
+ buffer.killLineRight();
193
+ return;
194
+ }
195
+ if (key.ctrl && input === 'u') {
196
+ buffer.killLineLeft();
197
+ return;
198
+ }
199
+ const isCtrlX = (key.ctrl && (input === 'x' || input === '\x18')) || input === '\x18';
200
+ const isCtrlEFromEditor = (key.ctrl && (input === 'e' || input === '\x05')) ||
201
+ input === '\x05' ||
202
+ (!key.ctrl &&
203
+ input === 'e' &&
204
+ input.length === 1 &&
205
+ input.charCodeAt(0) === 5);
206
+ if (isCtrlX || isCtrlEFromEditor) {
207
+ if (isCtrlEFromEditor && !(key.ctrl && input === 'e')) {
208
+ // Avoid double handling Ctrl+E
209
+ buffer.openInExternalEditor();
210
+ return;
211
+ }
212
+ if (isCtrlX) {
213
+ buffer.openInExternalEditor();
214
+ return;
215
+ }
216
+ }
217
+ if (process.env['TEXTBUFFER_DEBUG'] === '1' ||
218
+ process.env['TEXTBUFFER_DEBUG'] === 'true') {
219
+ console.log('[InputPromptCombined] event', { input, key });
220
+ }
221
+ // Ctrl+Enter for newline, Enter for submit
222
+ if (key.return) {
223
+ const [row, col] = buffer.cursor;
224
+ const line = buffer.lines[row];
225
+ const charBefore = col > 0 ? cpSlice(line, col - 1, col) : '';
226
+ if (key.ctrl || charBefore === '\\') {
227
+ // Ctrl+Enter or escaped newline
228
+ if (charBefore === '\\') {
229
+ buffer.backspace();
230
+ }
231
+ buffer.newline();
232
+ }
233
+ else {
234
+ // Enter for submit
235
+ if (query.trim()) {
236
+ handleSubmitAndClear(query);
237
+ }
238
+ }
239
+ return;
240
+ }
241
+ // Standard arrow navigation within the buffer
242
+ if (key.upArrow && !completion.showSuggestions) {
243
+ if (shellModeActive) {
244
+ const prevCommand = shellHistory.getPreviousCommand();
245
+ if (prevCommand !== null) {
246
+ buffer.setText(prevCommand);
247
+ }
248
+ return;
249
+ }
250
+ if ((buffer.allVisualLines.length === 1 || // Always navigate for single line
251
+ (buffer.visualCursor[0] === 0 && buffer.visualScrollRow === 0)) &&
252
+ inputHistory.navigateUp) {
253
+ inputHistory.navigateUp();
254
+ }
255
+ else {
256
+ buffer.move('up');
257
+ }
258
+ return;
259
+ }
260
+ if (key.downArrow && !completion.showSuggestions) {
261
+ if (shellModeActive) {
262
+ const nextCommand = shellHistory.getNextCommand();
263
+ if (nextCommand !== null) {
264
+ buffer.setText(nextCommand);
265
+ }
266
+ return;
267
+ }
268
+ if ((buffer.allVisualLines.length === 1 || // Always navigate for single line
269
+ buffer.visualCursor[0] === buffer.allVisualLines.length - 1) &&
270
+ inputHistory.navigateDown) {
271
+ inputHistory.navigateDown();
272
+ }
273
+ else {
274
+ buffer.move('down');
275
+ }
276
+ return;
277
+ }
278
+ // Fallback to buffer's default input handling
279
+ buffer.handleInput(input, key);
280
+ }, {
281
+ isActive: focus,
282
+ });
283
+ const linesToRender = buffer.viewportVisualLines;
284
+ const [cursorVisualRowAbsolute, cursorVisualColAbsolute] = buffer.visualCursor;
285
+ const scrollVisualRow = buffer.visualScrollRow;
286
+ 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) => {
287
+ const cursorVisualRow = cursorVisualRowAbsolute - scrollVisualRow;
288
+ let display = cpSlice(lineText, 0, inputWidth);
289
+ const currentVisualWidth = stringWidth(display);
290
+ if (currentVisualWidth < inputWidth) {
291
+ display = display + ' '.repeat(inputWidth - currentVisualWidth);
292
+ }
293
+ if (visualIdxInRenderedSet === cursorVisualRow) {
294
+ const relativeVisualColForHighlight = cursorVisualColAbsolute;
295
+ if (relativeVisualColForHighlight >= 0) {
296
+ if (relativeVisualColForHighlight < cpLen(display)) {
297
+ const charToHighlight = cpSlice(display, relativeVisualColForHighlight, relativeVisualColForHighlight + 1) || ' ';
298
+ const highlighted = chalk.inverse(charToHighlight);
299
+ display =
300
+ cpSlice(display, 0, relativeVisualColForHighlight) +
301
+ highlighted +
302
+ cpSlice(display, relativeVisualColForHighlight + 1);
303
+ }
304
+ else if (relativeVisualColForHighlight === cpLen(display) &&
305
+ cpLen(display) === inputWidth) {
306
+ display = display + chalk.inverse(' ');
307
+ }
308
+ }
309
+ }
310
+ return (_jsx(Text, { children: display }, `line-${visualIdxInRenderedSet}`));
311
+ })) })] }), completion.showSuggestions && (_jsx(Box, { children: _jsx(SuggestionsDisplay, { suggestions: completion.suggestions, activeIndex: completion.activeSuggestionIndex, isLoading: completion.isLoadingSuggestions, width: suggestionsWidth, scrollOffset: completion.visibleStartIndex, userInput: buffer.text }) }))] }));
312
+ };
313
+ //# sourceMappingURL=InputPrompt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InputPrompt.js","sourceRoot":"","sources":["../../../../src/ui/components/InputPrompt.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ export {};
@@ -0,0 +1,154 @@
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 { render } from 'ink-testing-library';
8
+ import { InputPrompt } from './InputPrompt.js';
9
+ import { vi } from 'vitest';
10
+ import { useShellHistory } from '../hooks/useShellHistory.js';
11
+ import { useCompletion } from '../hooks/useCompletion.js';
12
+ import { useInputHistory } from '../hooks/useInputHistory.js';
13
+ vi.mock('../hooks/useShellHistory.js');
14
+ vi.mock('../hooks/useCompletion.js');
15
+ vi.mock('../hooks/useInputHistory.js');
16
+ describe('InputPrompt', () => {
17
+ let props;
18
+ let mockShellHistory;
19
+ let mockCompletion;
20
+ let mockInputHistory;
21
+ let mockBuffer;
22
+ const mockedUseShellHistory = vi.mocked(useShellHistory);
23
+ const mockedUseCompletion = vi.mocked(useCompletion);
24
+ const mockedUseInputHistory = vi.mocked(useInputHistory);
25
+ beforeEach(() => {
26
+ vi.resetAllMocks();
27
+ mockBuffer = {
28
+ text: '',
29
+ cursor: [0, 0],
30
+ lines: [''],
31
+ setText: vi.fn((newText) => {
32
+ mockBuffer.text = newText;
33
+ mockBuffer.lines = [newText];
34
+ mockBuffer.cursor = [0, newText.length];
35
+ mockBuffer.viewportVisualLines = [newText];
36
+ mockBuffer.allVisualLines = [newText];
37
+ }),
38
+ viewportVisualLines: [''],
39
+ allVisualLines: [''],
40
+ visualCursor: [0, 0],
41
+ visualScrollRow: 0,
42
+ handleInput: vi.fn(),
43
+ move: vi.fn(),
44
+ moveToOffset: vi.fn(),
45
+ killLineRight: vi.fn(),
46
+ killLineLeft: vi.fn(),
47
+ openInExternalEditor: vi.fn(),
48
+ newline: vi.fn(),
49
+ replaceRangeByOffset: vi.fn(),
50
+ };
51
+ mockShellHistory = {
52
+ addCommandToHistory: vi.fn(),
53
+ getPreviousCommand: vi.fn().mockReturnValue(null),
54
+ getNextCommand: vi.fn().mockReturnValue(null),
55
+ resetHistoryPosition: vi.fn(),
56
+ };
57
+ mockedUseShellHistory.mockReturnValue(mockShellHistory);
58
+ mockCompletion = {
59
+ suggestions: [],
60
+ activeSuggestionIndex: -1,
61
+ isLoadingSuggestions: false,
62
+ showSuggestions: false,
63
+ visibleStartIndex: 0,
64
+ navigateUp: vi.fn(),
65
+ navigateDown: vi.fn(),
66
+ resetCompletionState: vi.fn(),
67
+ setActiveSuggestionIndex: vi.fn(),
68
+ setShowSuggestions: vi.fn(),
69
+ };
70
+ mockedUseCompletion.mockReturnValue(mockCompletion);
71
+ mockInputHistory = {
72
+ navigateUp: vi.fn(),
73
+ navigateDown: vi.fn(),
74
+ handleSubmit: vi.fn(),
75
+ };
76
+ mockedUseInputHistory.mockReturnValue(mockInputHistory);
77
+ props = {
78
+ buffer: mockBuffer,
79
+ onSubmit: vi.fn(),
80
+ userMessages: [],
81
+ onClearScreen: vi.fn(),
82
+ config: {
83
+ getProjectRoot: () => '/test/project',
84
+ getTargetDir: () => '/test/project/src',
85
+ },
86
+ slashCommands: [],
87
+ shellModeActive: false,
88
+ setShellModeActive: vi.fn(),
89
+ inputWidth: 80,
90
+ suggestionsWidth: 80,
91
+ focus: true,
92
+ };
93
+ });
94
+ const wait = (ms = 50) => new Promise((resolve) => setTimeout(resolve, ms));
95
+ it('should call shellHistory.getPreviousCommand on up arrow in shell mode', async () => {
96
+ props.shellModeActive = true;
97
+ const { stdin, unmount } = render(_jsx(InputPrompt, { ...props }));
98
+ await wait();
99
+ stdin.write('\u001B[A');
100
+ await wait();
101
+ expect(mockShellHistory.getPreviousCommand).toHaveBeenCalled();
102
+ unmount();
103
+ });
104
+ it('should call shellHistory.getNextCommand on down arrow in shell mode', async () => {
105
+ props.shellModeActive = true;
106
+ const { stdin, unmount } = render(_jsx(InputPrompt, { ...props }));
107
+ await wait();
108
+ stdin.write('\u001B[B');
109
+ await wait();
110
+ expect(mockShellHistory.getNextCommand).toHaveBeenCalled();
111
+ unmount();
112
+ });
113
+ it('should set the buffer text when a shell history command is retrieved', async () => {
114
+ props.shellModeActive = true;
115
+ vi.mocked(mockShellHistory.getPreviousCommand).mockReturnValue('previous command');
116
+ const { stdin, unmount } = render(_jsx(InputPrompt, { ...props }));
117
+ await wait();
118
+ stdin.write('\u001B[A');
119
+ await wait();
120
+ expect(mockShellHistory.getPreviousCommand).toHaveBeenCalled();
121
+ expect(props.buffer.setText).toHaveBeenCalledWith('previous command');
122
+ unmount();
123
+ });
124
+ it('should call shellHistory.addCommandToHistory on submit in shell mode', async () => {
125
+ props.shellModeActive = true;
126
+ props.buffer.setText('ls -l');
127
+ const { stdin, unmount } = render(_jsx(InputPrompt, { ...props }));
128
+ await wait();
129
+ stdin.write('\r');
130
+ await wait();
131
+ expect(mockShellHistory.addCommandToHistory).toHaveBeenCalledWith('ls -l');
132
+ expect(props.onSubmit).toHaveBeenCalledWith('ls -l');
133
+ unmount();
134
+ });
135
+ it('should NOT call shell history methods when not in shell mode', async () => {
136
+ props.buffer.setText('some text');
137
+ const { stdin, unmount } = render(_jsx(InputPrompt, { ...props }));
138
+ await wait();
139
+ stdin.write('\u001B[A'); // Up arrow
140
+ await wait();
141
+ stdin.write('\u001B[B'); // Down arrow
142
+ await wait();
143
+ stdin.write('\r'); // Enter
144
+ await wait();
145
+ expect(mockShellHistory.getPreviousCommand).not.toHaveBeenCalled();
146
+ expect(mockShellHistory.getNextCommand).not.toHaveBeenCalled();
147
+ expect(mockShellHistory.addCommandToHistory).not.toHaveBeenCalled();
148
+ expect(mockInputHistory.navigateUp).toHaveBeenCalled();
149
+ expect(mockInputHistory.navigateDown).toHaveBeenCalled();
150
+ expect(props.onSubmit).toHaveBeenCalledWith('some text');
151
+ unmount();
152
+ });
153
+ });
154
+ //# sourceMappingURL=InputPrompt.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InputPrompt.test.js","sourceRoot":"","sources":["../../../../src/ui/components/InputPrompt.test.tsx"],"names":[],"mappings":"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"}
@@ -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,19 @@
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
+ export const LoadingIndicator = ({ currentLoadingPhrase, elapsedTime, rightContent, thought, }) => {
8
+ const streamingState = useStreamingContext();
9
+ if (streamingState === StreamingState.Idle) {
10
+ return null;
11
+ }
12
+ const primaryText = thought?.subject || currentLoadingPhrase;
13
+ return (_jsx(Box, { marginTop: 1, paddingLeft: 0, flexDirection: "column", children: _jsxs(Box, { children: [_jsx(Box, { marginRight: 1, children: _jsx(GeminiRespondingSpinner, { nonRespondingDisplay: streamingState === StreamingState.WaitingForConfirmation
14
+ ? '⠏'
15
+ : '' }) }), primaryText && _jsx(Text, { color: Colors.AccentPurple, children: primaryText }), _jsx(Text, { color: Colors.Gray, children: streamingState === StreamingState.WaitingForConfirmation
16
+ ? ''
17
+ : ` (esc to cancel, ${elapsedTime}s)` }), _jsx(Box, { flexGrow: 1 }), rightContent && _jsx(Box, { children: rightContent })] }) }));
18
+ };
19
+ //# sourceMappingURL=LoadingIndicator.js.map