@google/gemini-cli 0.1.0-development.2

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 (399) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +156 -0
  3. package/dist/.last_build +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 +80 -0
  8. package/dist/src/config/auth.d.ts +6 -0
  9. package/dist/src/config/auth.js +33 -0
  10. package/dist/src/config/auth.js.map +1 -0
  11. package/dist/src/config/config.d.ts +13 -0
  12. package/dist/src/config/config.js +211 -0
  13. package/dist/src/config/config.js.map +1 -0
  14. package/dist/src/config/extension.d.ts +20 -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 +72 -0
  21. package/dist/src/config/settings.js +227 -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 +216 -0
  25. package/dist/src/gemini.js.map +1 -0
  26. package/dist/src/generated/git-commit.d.ts +6 -0
  27. package/dist/src/generated/git-commit.js +9 -0
  28. package/dist/src/generated/git-commit.js.map +1 -0
  29. package/dist/src/nonInteractiveCli.d.ts +7 -0
  30. package/dist/src/nonInteractiveCli.js +115 -0
  31. package/dist/src/nonInteractiveCli.js.map +1 -0
  32. package/dist/src/services/CommandService.d.ts +13 -0
  33. package/dist/src/services/CommandService.js +30 -0
  34. package/dist/src/services/CommandService.js.map +1 -0
  35. package/dist/src/ui/App.d.ts +14 -0
  36. package/dist/src/ui/App.js +391 -0
  37. package/dist/src/ui/App.js.map +1 -0
  38. package/dist/src/ui/colors.d.ts +7 -0
  39. package/dist/src/ui/colors.js +48 -0
  40. package/dist/src/ui/colors.js.map +1 -0
  41. package/dist/src/ui/commands/clearCommand.d.ts +7 -0
  42. package/dist/src/ui/commands/clearCommand.js +15 -0
  43. package/dist/src/ui/commands/clearCommand.js.map +1 -0
  44. package/dist/src/ui/commands/helpCommand.d.ts +7 -0
  45. package/dist/src/ui/commands/helpCommand.js +18 -0
  46. package/dist/src/ui/commands/helpCommand.js.map +1 -0
  47. package/dist/src/ui/commands/memoryCommand.d.ts +7 -0
  48. package/dist/src/ui/commands/memoryCommand.js +81 -0
  49. package/dist/src/ui/commands/memoryCommand.js.map +1 -0
  50. package/dist/src/ui/commands/types.d.ts +63 -0
  51. package/dist/src/ui/commands/types.js +7 -0
  52. package/dist/src/ui/commands/types.js.map +1 -0
  53. package/dist/src/ui/components/AboutBox.d.ts +16 -0
  54. package/dist/src/ui/components/AboutBox.js +6 -0
  55. package/dist/src/ui/components/AboutBox.js.map +1 -0
  56. package/dist/src/ui/components/AsciiArt.d.ts +7 -0
  57. package/dist/src/ui/components/AsciiArt.js +26 -0
  58. package/dist/src/ui/components/AsciiArt.js.map +1 -0
  59. package/dist/src/ui/components/AuthDialog.d.ts +15 -0
  60. package/dist/src/ui/components/AuthDialog.js +66 -0
  61. package/dist/src/ui/components/AuthDialog.js.map +1 -0
  62. package/dist/src/ui/components/AuthInProgress.d.ts +11 -0
  63. package/dist/src/ui/components/AuthInProgress.js +27 -0
  64. package/dist/src/ui/components/AuthInProgress.js.map +1 -0
  65. package/dist/src/ui/components/AutoAcceptIndicator.d.ts +12 -0
  66. package/dist/src/ui/components/AutoAcceptIndicator.js +26 -0
  67. package/dist/src/ui/components/AutoAcceptIndicator.js.map +1 -0
  68. package/dist/src/ui/components/ConsolePatcher.d.ts +12 -0
  69. package/dist/src/ui/components/ConsolePatcher.js +40 -0
  70. package/dist/src/ui/components/ConsolePatcher.js.map +1 -0
  71. package/dist/src/ui/components/ConsoleSummaryDisplay.d.ts +11 -0
  72. package/dist/src/ui/components/ConsoleSummaryDisplay.js +11 -0
  73. package/dist/src/ui/components/ConsoleSummaryDisplay.js.map +1 -0
  74. package/dist/src/ui/components/ContextSummaryDisplay.d.ts +15 -0
  75. package/dist/src/ui/components/ContextSummaryDisplay.js +41 -0
  76. package/dist/src/ui/components/ContextSummaryDisplay.js.map +1 -0
  77. package/dist/src/ui/components/DetailedMessagesDisplay.d.ts +14 -0
  78. package/dist/src/ui/components/DetailedMessagesDisplay.js +34 -0
  79. package/dist/src/ui/components/DetailedMessagesDisplay.js.map +1 -0
  80. package/dist/src/ui/components/EditorSettingsDialog.d.ts +15 -0
  81. package/dist/src/ui/components/EditorSettingsDialog.js +73 -0
  82. package/dist/src/ui/components/EditorSettingsDialog.js.map +1 -0
  83. package/dist/src/ui/components/Footer.d.ts +20 -0
  84. package/dist/src/ui/components/Footer.js +13 -0
  85. package/dist/src/ui/components/Footer.js.map +1 -0
  86. package/dist/src/ui/components/GeminiRespondingSpinner.d.ts +17 -0
  87. package/dist/src/ui/components/GeminiRespondingSpinner.js +16 -0
  88. package/dist/src/ui/components/GeminiRespondingSpinner.js.map +1 -0
  89. package/dist/src/ui/components/Header.d.ts +12 -0
  90. package/dist/src/ui/components/Header.js +20 -0
  91. package/dist/src/ui/components/Header.js.map +1 -0
  92. package/dist/src/ui/components/Help.d.ts +12 -0
  93. package/dist/src/ui/components/Help.js +10 -0
  94. package/dist/src/ui/components/Help.js.map +1 -0
  95. package/dist/src/ui/components/HistoryItemDisplay.d.ts +18 -0
  96. package/dist/src/ui/components/HistoryItemDisplay.js +17 -0
  97. package/dist/src/ui/components/HistoryItemDisplay.js.map +1 -0
  98. package/dist/src/ui/components/InputPrompt.d.ts +25 -0
  99. package/dist/src/ui/components/InputPrompt.js +280 -0
  100. package/dist/src/ui/components/InputPrompt.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/MemoryUsageDisplay.d.ts +7 -0
  105. package/dist/src/ui/components/MemoryUsageDisplay.js +27 -0
  106. package/dist/src/ui/components/MemoryUsageDisplay.js.map +1 -0
  107. package/dist/src/ui/components/ModelStatsDisplay.d.ts +7 -0
  108. package/dist/src/ui/components/ModelStatsDisplay.js +33 -0
  109. package/dist/src/ui/components/ModelStatsDisplay.js.map +1 -0
  110. package/dist/src/ui/components/SessionSummaryDisplay.d.ts +11 -0
  111. package/dist/src/ui/components/SessionSummaryDisplay.js +4 -0
  112. package/dist/src/ui/components/SessionSummaryDisplay.js.map +1 -0
  113. package/dist/src/ui/components/ShellModeIndicator.d.ts +7 -0
  114. package/dist/src/ui/components/ShellModeIndicator.js +5 -0
  115. package/dist/src/ui/components/ShellModeIndicator.js.map +1 -0
  116. package/dist/src/ui/components/ShowMoreLines.d.ts +10 -0
  117. package/dist/src/ui/components/ShowMoreLines.js +24 -0
  118. package/dist/src/ui/components/ShowMoreLines.js.map +1 -0
  119. package/dist/src/ui/components/StatsDisplay.d.ts +12 -0
  120. package/dist/src/ui/components/StatsDisplay.js +42 -0
  121. package/dist/src/ui/components/StatsDisplay.js.map +1 -0
  122. package/dist/src/ui/components/SuggestionsDisplay.d.ts +21 -0
  123. package/dist/src/ui/components/SuggestionsDisplay.js +32 -0
  124. package/dist/src/ui/components/SuggestionsDisplay.js.map +1 -0
  125. package/dist/src/ui/components/ThemeDialog.d.ts +19 -0
  126. package/dist/src/ui/components/ThemeDialog.js +126 -0
  127. package/dist/src/ui/components/ThemeDialog.js.map +1 -0
  128. package/dist/src/ui/components/Tips.d.ts +12 -0
  129. package/dist/src/ui/components/Tips.js +8 -0
  130. package/dist/src/ui/components/Tips.js.map +1 -0
  131. package/dist/src/ui/components/ToolStatsDisplay.d.ts +7 -0
  132. package/dist/src/ui/components/ToolStatsDisplay.js +41 -0
  133. package/dist/src/ui/components/ToolStatsDisplay.js.map +1 -0
  134. package/dist/src/ui/components/UpdateNotification.d.ts +10 -0
  135. package/dist/src/ui/components/UpdateNotification.js +10 -0
  136. package/dist/src/ui/components/UpdateNotification.js.map +1 -0
  137. package/dist/src/ui/components/messages/CompressionMessage.d.ts +11 -0
  138. package/dist/src/ui/components/messages/CompressionMessage.js +16 -0
  139. package/dist/src/ui/components/messages/CompressionMessage.js.map +1 -0
  140. package/dist/src/ui/components/messages/DiffRenderer.d.ts +15 -0
  141. package/dist/src/ui/components/messages/DiffRenderer.js +212 -0
  142. package/dist/src/ui/components/messages/DiffRenderer.js.map +1 -0
  143. package/dist/src/ui/components/messages/ErrorMessage.d.ts +11 -0
  144. package/dist/src/ui/components/messages/ErrorMessage.js +9 -0
  145. package/dist/src/ui/components/messages/ErrorMessage.js.map +1 -0
  146. package/dist/src/ui/components/messages/GeminiMessage.d.ts +14 -0
  147. package/dist/src/ui/components/messages/GeminiMessage.js +10 -0
  148. package/dist/src/ui/components/messages/GeminiMessage.js.map +1 -0
  149. package/dist/src/ui/components/messages/GeminiMessageContent.d.ts +14 -0
  150. package/dist/src/ui/components/messages/GeminiMessageContent.js +15 -0
  151. package/dist/src/ui/components/messages/GeminiMessageContent.js.map +1 -0
  152. package/dist/src/ui/components/messages/InfoMessage.d.ts +11 -0
  153. package/dist/src/ui/components/messages/InfoMessage.js +9 -0
  154. package/dist/src/ui/components/messages/InfoMessage.js.map +1 -0
  155. package/dist/src/ui/components/messages/ToolConfirmationMessage.d.ts +15 -0
  156. package/dist/src/ui/components/messages/ToolConfirmationMessage.js +111 -0
  157. package/dist/src/ui/components/messages/ToolConfirmationMessage.js.map +1 -0
  158. package/dist/src/ui/components/messages/ToolGroupMessage.d.ts +18 -0
  159. package/dist/src/ui/components/messages/ToolGroupMessage.js +53 -0
  160. package/dist/src/ui/components/messages/ToolGroupMessage.js.map +1 -0
  161. package/dist/src/ui/components/messages/ToolMessage.d.ts +15 -0
  162. package/dist/src/ui/components/messages/ToolMessage.js +61 -0
  163. package/dist/src/ui/components/messages/ToolMessage.js.map +1 -0
  164. package/dist/src/ui/components/messages/UserMessage.d.ts +11 -0
  165. package/dist/src/ui/components/messages/UserMessage.js +9 -0
  166. package/dist/src/ui/components/messages/UserMessage.js.map +1 -0
  167. package/dist/src/ui/components/messages/UserShellMessage.d.ts +11 -0
  168. package/dist/src/ui/components/messages/UserShellMessage.js +9 -0
  169. package/dist/src/ui/components/messages/UserShellMessage.js.map +1 -0
  170. package/dist/src/ui/components/shared/MaxSizedBox.d.ts +61 -0
  171. package/dist/src/ui/components/shared/MaxSizedBox.js +384 -0
  172. package/dist/src/ui/components/shared/MaxSizedBox.js.map +1 -0
  173. package/dist/src/ui/components/shared/RadioButtonSelect.d.ts +41 -0
  174. package/dist/src/ui/components/shared/RadioButtonSelect.js +52 -0
  175. package/dist/src/ui/components/shared/RadioButtonSelect.js.map +1 -0
  176. package/dist/src/ui/components/shared/text-buffer.d.ts +184 -0
  177. package/dist/src/ui/components/shared/text-buffer.js +1010 -0
  178. package/dist/src/ui/components/shared/text-buffer.js.map +1 -0
  179. package/dist/src/ui/constants.d.ts +8 -0
  180. package/dist/src/ui/constants.js +12 -0
  181. package/dist/src/ui/constants.js.map +1 -0
  182. package/dist/src/ui/contexts/OverflowContext.d.ts +19 -0
  183. package/dist/src/ui/contexts/OverflowContext.js +43 -0
  184. package/dist/src/ui/contexts/OverflowContext.js.map +1 -0
  185. package/dist/src/ui/contexts/SessionContext.d.ts +33 -0
  186. package/dist/src/ui/contexts/SessionContext.js +49 -0
  187. package/dist/src/ui/contexts/SessionContext.js.map +1 -0
  188. package/dist/src/ui/contexts/StreamingContext.d.ts +9 -0
  189. package/dist/src/ui/contexts/StreamingContext.js +15 -0
  190. package/dist/src/ui/contexts/StreamingContext.js.map +1 -0
  191. package/dist/src/ui/editors/editorSettingsManager.d.ts +19 -0
  192. package/dist/src/ui/editors/editorSettingsManager.js +54 -0
  193. package/dist/src/ui/editors/editorSettingsManager.js.map +1 -0
  194. package/dist/src/ui/hooks/atCommandProcessor.d.ts +31 -0
  195. package/dist/src/ui/hooks/atCommandProcessor.js +310 -0
  196. package/dist/src/ui/hooks/atCommandProcessor.js.map +1 -0
  197. package/dist/src/ui/hooks/shellCommandProcessor.d.ts +16 -0
  198. package/dist/src/ui/hooks/shellCommandProcessor.js +261 -0
  199. package/dist/src/ui/hooks/shellCommandProcessor.js.map +1 -0
  200. package/dist/src/ui/hooks/slashCommandProcessor.d.ts +27 -0
  201. package/dist/src/ui/hooks/slashCommandProcessor.js +1050 -0
  202. package/dist/src/ui/hooks/slashCommandProcessor.js.map +1 -0
  203. package/dist/src/ui/hooks/useAuthCommand.d.ts +14 -0
  204. package/dist/src/ui/hooks/useAuthCommand.js +54 -0
  205. package/dist/src/ui/hooks/useAuthCommand.js.map +1 -0
  206. package/dist/src/ui/hooks/useAutoAcceptIndicator.d.ts +10 -0
  207. package/dist/src/ui/hooks/useAutoAcceptIndicator.js +37 -0
  208. package/dist/src/ui/hooks/useAutoAcceptIndicator.js.map +1 -0
  209. package/dist/src/ui/hooks/useBracketedPaste.d.ts +12 -0
  210. package/dist/src/ui/hooks/useBracketedPaste.js +32 -0
  211. package/dist/src/ui/hooks/useBracketedPaste.js.map +1 -0
  212. package/dist/src/ui/hooks/useCompletion.d.ts +21 -0
  213. package/dist/src/ui/hooks/useCompletion.js +372 -0
  214. package/dist/src/ui/hooks/useCompletion.js.map +1 -0
  215. package/dist/src/ui/hooks/useConsoleMessages.d.ts +12 -0
  216. package/dist/src/ui/hooks/useConsoleMessages.js +60 -0
  217. package/dist/src/ui/hooks/useConsoleMessages.js.map +1 -0
  218. package/dist/src/ui/hooks/useEditorSettings.d.ts +16 -0
  219. package/dist/src/ui/hooks/useEditorSettings.js +43 -0
  220. package/dist/src/ui/hooks/useEditorSettings.js.map +1 -0
  221. package/dist/src/ui/hooks/useGeminiStream.d.ts +23 -0
  222. package/dist/src/ui/hooks/useGeminiStream.js +518 -0
  223. package/dist/src/ui/hooks/useGeminiStream.js.map +1 -0
  224. package/dist/src/ui/hooks/useGitBranchName.d.ts +6 -0
  225. package/dist/src/ui/hooks/useGitBranchName.js +61 -0
  226. package/dist/src/ui/hooks/useGitBranchName.js.map +1 -0
  227. package/dist/src/ui/hooks/useHistoryManager.d.ts +22 -0
  228. package/dist/src/ui/hooks/useHistoryManager.js +72 -0
  229. package/dist/src/ui/hooks/useHistoryManager.js.map +1 -0
  230. package/dist/src/ui/hooks/useInputHistory.d.ts +19 -0
  231. package/dist/src/ui/hooks/useInputHistory.js +84 -0
  232. package/dist/src/ui/hooks/useInputHistory.js.map +1 -0
  233. package/dist/src/ui/hooks/useKeypress.d.ts +29 -0
  234. package/dist/src/ui/hooks/useKeypress.js +86 -0
  235. package/dist/src/ui/hooks/useKeypress.js.map +1 -0
  236. package/dist/src/ui/hooks/useLoadingIndicator.d.ts +10 -0
  237. package/dist/src/ui/hooks/useLoadingIndicator.js +44 -0
  238. package/dist/src/ui/hooks/useLoadingIndicator.js.map +1 -0
  239. package/dist/src/ui/hooks/useLogger.d.ts +10 -0
  240. package/dist/src/ui/hooks/useLogger.js +29 -0
  241. package/dist/src/ui/hooks/useLogger.js.map +1 -0
  242. package/dist/src/ui/hooks/usePhraseCycler.d.ts +14 -0
  243. package/dist/src/ui/hooks/usePhraseCycler.js +189 -0
  244. package/dist/src/ui/hooks/usePhraseCycler.js.map +1 -0
  245. package/dist/src/ui/hooks/usePrivacySettings.d.ts +16 -0
  246. package/dist/src/ui/hooks/usePrivacySettings.js +115 -0
  247. package/dist/src/ui/hooks/usePrivacySettings.js.map +1 -0
  248. package/dist/src/ui/hooks/useReactToolScheduler.d.ts +33 -0
  249. package/dist/src/ui/hooks/useReactToolScheduler.js +186 -0
  250. package/dist/src/ui/hooks/useReactToolScheduler.js.map +1 -0
  251. package/dist/src/ui/hooks/useRefreshMemoryCommand.d.ts +6 -0
  252. package/dist/src/ui/hooks/useRefreshMemoryCommand.js +7 -0
  253. package/dist/src/ui/hooks/useRefreshMemoryCommand.js.map +1 -0
  254. package/dist/src/ui/hooks/useShellHistory.d.ts +11 -0
  255. package/dist/src/ui/hooks/useShellHistory.js +89 -0
  256. package/dist/src/ui/hooks/useShellHistory.js.map +1 -0
  257. package/dist/src/ui/hooks/useShowMemoryCommand.d.ts +9 -0
  258. package/dist/src/ui/hooks/useShowMemoryCommand.js +58 -0
  259. package/dist/src/ui/hooks/useShowMemoryCommand.js.map +1 -0
  260. package/dist/src/ui/hooks/useStateAndRef.d.ts +7 -0
  261. package/dist/src/ui/hooks/useStateAndRef.js +26 -0
  262. package/dist/src/ui/hooks/useStateAndRef.js.map +1 -0
  263. package/dist/src/ui/hooks/useTerminalSize.d.ts +9 -0
  264. package/dist/src/ui/hooks/useTerminalSize.js +27 -0
  265. package/dist/src/ui/hooks/useTerminalSize.js.map +1 -0
  266. package/dist/src/ui/hooks/useThemeCommand.d.ts +15 -0
  267. package/dist/src/ui/hooks/useThemeCommand.js +78 -0
  268. package/dist/src/ui/hooks/useThemeCommand.js.map +1 -0
  269. package/dist/src/ui/hooks/useTimer.d.ts +12 -0
  270. package/dist/src/ui/hooks/useTimer.js +58 -0
  271. package/dist/src/ui/hooks/useTimer.js.map +1 -0
  272. package/dist/src/ui/privacy/CloudFreePrivacyNotice.d.ts +12 -0
  273. package/dist/src/ui/privacy/CloudFreePrivacyNotice.js +40 -0
  274. package/dist/src/ui/privacy/CloudFreePrivacyNotice.js.map +1 -0
  275. package/dist/src/ui/privacy/CloudPaidPrivacyNotice.d.ts +10 -0
  276. package/dist/src/ui/privacy/CloudPaidPrivacyNotice.js +17 -0
  277. package/dist/src/ui/privacy/CloudPaidPrivacyNotice.js.map +1 -0
  278. package/dist/src/ui/privacy/GeminiPrivacyNotice.d.ts +10 -0
  279. package/dist/src/ui/privacy/GeminiPrivacyNotice.js +17 -0
  280. package/dist/src/ui/privacy/GeminiPrivacyNotice.js.map +1 -0
  281. package/dist/src/ui/privacy/PrivacyNotice.d.ts +12 -0
  282. package/dist/src/ui/privacy/PrivacyNotice.js +25 -0
  283. package/dist/src/ui/privacy/PrivacyNotice.js.map +1 -0
  284. package/dist/src/ui/themes/ansi-light.d.ts +7 -0
  285. package/dist/src/ui/themes/ansi-light.js +139 -0
  286. package/dist/src/ui/themes/ansi-light.js.map +1 -0
  287. package/dist/src/ui/themes/ansi.d.ts +7 -0
  288. package/dist/src/ui/themes/ansi.js +149 -0
  289. package/dist/src/ui/themes/ansi.js.map +1 -0
  290. package/dist/src/ui/themes/atom-one-dark.d.ts +7 -0
  291. package/dist/src/ui/themes/atom-one-dark.js +136 -0
  292. package/dist/src/ui/themes/atom-one-dark.js.map +1 -0
  293. package/dist/src/ui/themes/ayu-light.d.ts +7 -0
  294. package/dist/src/ui/themes/ayu-light.js +128 -0
  295. package/dist/src/ui/themes/ayu-light.js.map +1 -0
  296. package/dist/src/ui/themes/ayu.d.ts +7 -0
  297. package/dist/src/ui/themes/ayu.js +102 -0
  298. package/dist/src/ui/themes/ayu.js.map +1 -0
  299. package/dist/src/ui/themes/default-light.d.ts +7 -0
  300. package/dist/src/ui/themes/default-light.js +100 -0
  301. package/dist/src/ui/themes/default-light.js.map +1 -0
  302. package/dist/src/ui/themes/default.d.ts +7 -0
  303. package/dist/src/ui/themes/default.js +143 -0
  304. package/dist/src/ui/themes/default.js.map +1 -0
  305. package/dist/src/ui/themes/dracula.d.ts +7 -0
  306. package/dist/src/ui/themes/dracula.js +113 -0
  307. package/dist/src/ui/themes/dracula.js.map +1 -0
  308. package/dist/src/ui/themes/github-dark.d.ts +7 -0
  309. package/dist/src/ui/themes/github-dark.js +136 -0
  310. package/dist/src/ui/themes/github-dark.js.map +1 -0
  311. package/dist/src/ui/themes/github-light.d.ts +7 -0
  312. package/dist/src/ui/themes/github-light.js +138 -0
  313. package/dist/src/ui/themes/github-light.js.map +1 -0
  314. package/dist/src/ui/themes/googlecode.d.ts +7 -0
  315. package/dist/src/ui/themes/googlecode.js +135 -0
  316. package/dist/src/ui/themes/googlecode.js.map +1 -0
  317. package/dist/src/ui/themes/no-color.d.ts +7 -0
  318. package/dist/src/ui/themes/no-color.js +84 -0
  319. package/dist/src/ui/themes/no-color.js.map +1 -0
  320. package/dist/src/ui/themes/shades-of-purple.d.ts +11 -0
  321. package/dist/src/ui/themes/shades-of-purple.js +302 -0
  322. package/dist/src/ui/themes/shades-of-purple.js.map +1 -0
  323. package/dist/src/ui/themes/theme-manager.d.ts +33 -0
  324. package/dist/src/ui/themes/theme-manager.js +109 -0
  325. package/dist/src/ui/themes/theme-manager.js.map +1 -0
  326. package/dist/src/ui/themes/theme.d.ts +67 -0
  327. package/dist/src/ui/themes/theme.js +304 -0
  328. package/dist/src/ui/themes/theme.js.map +1 -0
  329. package/dist/src/ui/themes/xcode.d.ts +7 -0
  330. package/dist/src/ui/themes/xcode.js +143 -0
  331. package/dist/src/ui/themes/xcode.js.map +1 -0
  332. package/dist/src/ui/types.d.ts +172 -0
  333. package/dist/src/ui/types.js +43 -0
  334. package/dist/src/ui/types.js.map +1 -0
  335. package/dist/src/ui/utils/CodeColorizer.d.ts +14 -0
  336. package/dist/src/ui/utils/CodeColorizer.js +97 -0
  337. package/dist/src/ui/utils/CodeColorizer.js.map +1 -0
  338. package/dist/src/ui/utils/InlineMarkdownRenderer.d.ts +16 -0
  339. package/dist/src/ui/utils/InlineMarkdownRenderer.js +104 -0
  340. package/dist/src/ui/utils/InlineMarkdownRenderer.js.map +1 -0
  341. package/dist/src/ui/utils/MarkdownDisplay.d.ts +14 -0
  342. package/dist/src/ui/utils/MarkdownDisplay.js +197 -0
  343. package/dist/src/ui/utils/MarkdownDisplay.js.map +1 -0
  344. package/dist/src/ui/utils/TableRenderer.d.ts +17 -0
  345. package/dist/src/ui/utils/TableRenderer.js +84 -0
  346. package/dist/src/ui/utils/TableRenderer.js.map +1 -0
  347. package/dist/src/ui/utils/commandUtils.d.ts +22 -0
  348. package/dist/src/ui/utils/commandUtils.js +25 -0
  349. package/dist/src/ui/utils/commandUtils.js.map +1 -0
  350. package/dist/src/ui/utils/computeStats.d.ts +10 -0
  351. package/dist/src/ui/utils/computeStats.js +55 -0
  352. package/dist/src/ui/utils/computeStats.js.map +1 -0
  353. package/dist/src/ui/utils/displayUtils.d.ts +17 -0
  354. package/dist/src/ui/utils/displayUtils.js +24 -0
  355. package/dist/src/ui/utils/displayUtils.js.map +1 -0
  356. package/dist/src/ui/utils/errorParsing.d.ts +15 -0
  357. package/dist/src/ui/utils/errorParsing.js +79 -0
  358. package/dist/src/ui/utils/errorParsing.js.map +1 -0
  359. package/dist/src/ui/utils/formatters.d.ts +13 -0
  360. package/dist/src/ui/utils/formatters.js +56 -0
  361. package/dist/src/ui/utils/formatters.js.map +1 -0
  362. package/dist/src/ui/utils/markdownUtilities.d.ts +6 -0
  363. package/dist/src/ui/utils/markdownUtilities.js +110 -0
  364. package/dist/src/ui/utils/markdownUtilities.js.map +1 -0
  365. package/dist/src/ui/utils/textUtils.d.ts +22 -0
  366. package/dist/src/ui/utils/textUtils.js +58 -0
  367. package/dist/src/ui/utils/textUtils.js.map +1 -0
  368. package/dist/src/ui/utils/updateCheck.d.ts +6 -0
  369. package/dist/src/ui/utils/updateCheck.js +36 -0
  370. package/dist/src/ui/utils/updateCheck.js.map +1 -0
  371. package/dist/src/utils/cleanup.d.ts +6 -0
  372. package/dist/src/utils/cleanup.js +19 -0
  373. package/dist/src/utils/cleanup.js.map +1 -0
  374. package/dist/src/utils/package.d.ts +12 -0
  375. package/dist/src/utils/package.js +24 -0
  376. package/dist/src/utils/package.js.map +1 -0
  377. package/dist/src/utils/readStdin.d.ts +6 -0
  378. package/dist/src/utils/readStdin.js +34 -0
  379. package/dist/src/utils/readStdin.js.map +1 -0
  380. package/dist/src/utils/sandbox-macos-permissive-closed.sb +26 -0
  381. package/dist/src/utils/sandbox-macos-permissive-open.sb +19 -0
  382. package/dist/src/utils/sandbox-macos-permissive-proxied.sb +31 -0
  383. package/dist/src/utils/sandbox-macos-restrictive-closed.sb +87 -0
  384. package/dist/src/utils/sandbox-macos-restrictive-open.sb +90 -0
  385. package/dist/src/utils/sandbox-macos-restrictive-proxied.sb +92 -0
  386. package/dist/src/utils/sandbox.d.ts +7 -0
  387. package/dist/src/utils/sandbox.js +680 -0
  388. package/dist/src/utils/sandbox.js.map +1 -0
  389. package/dist/src/utils/startupWarnings.d.ts +6 -0
  390. package/dist/src/utils/startupWarnings.js +40 -0
  391. package/dist/src/utils/startupWarnings.js.map +1 -0
  392. package/dist/src/utils/userStartupWarnings.d.ts +6 -0
  393. package/dist/src/utils/userStartupWarnings.js +33 -0
  394. package/dist/src/utils/userStartupWarnings.js.map +1 -0
  395. package/dist/src/utils/version.d.ts +6 -0
  396. package/dist/src/utils/version.js +11 -0
  397. package/dist/src/utils/version.js.map +1 -0
  398. package/dist/tsconfig.tsbuildinfo +1 -0
  399. package/package.json +80 -0
@@ -0,0 +1,197 @@
1
+ import { Fragment as _Fragment, 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 React from 'react';
8
+ import { Text, Box } from 'ink';
9
+ import { Colors } from '../colors.js';
10
+ import { colorizeCode } from './CodeColorizer.js';
11
+ import { TableRenderer } from './TableRenderer.js';
12
+ import { RenderInline } from './InlineMarkdownRenderer.js';
13
+ // Constants for Markdown parsing and rendering
14
+ const EMPTY_LINE_HEIGHT = 1;
15
+ const CODE_BLOCK_PADDING = 1;
16
+ const LIST_ITEM_PREFIX_PADDING = 1;
17
+ const LIST_ITEM_TEXT_FLEX_GROW = 1;
18
+ const MarkdownDisplayInternal = ({ text, isPending, availableTerminalHeight, terminalWidth, }) => {
19
+ if (!text)
20
+ return _jsx(_Fragment, {});
21
+ const lines = text.split('\n');
22
+ const headerRegex = /^ *(#{1,4}) +(.*)/;
23
+ const codeFenceRegex = /^ *(`{3,}|~{3,}) *(\w*?) *$/;
24
+ const ulItemRegex = /^([ \t]*)([-*+]) +(.*)/;
25
+ const olItemRegex = /^([ \t]*)(\d+)\. +(.*)/;
26
+ const hrRegex = /^ *([-*_] *){3,} *$/;
27
+ const tableRowRegex = /^\s*\|(.+)\|\s*$/;
28
+ const tableSeparatorRegex = /^\s*\|?\s*(:?-+:?)\s*(\|\s*(:?-+:?)\s*)+\|?\s*$/;
29
+ const contentBlocks = [];
30
+ let inCodeBlock = false;
31
+ let codeBlockContent = [];
32
+ let codeBlockLang = null;
33
+ let codeBlockFence = '';
34
+ let inTable = false;
35
+ let tableRows = [];
36
+ let tableHeaders = [];
37
+ lines.forEach((line, index) => {
38
+ const key = `line-${index}`;
39
+ if (inCodeBlock) {
40
+ const fenceMatch = line.match(codeFenceRegex);
41
+ if (fenceMatch &&
42
+ fenceMatch[1].startsWith(codeBlockFence[0]) &&
43
+ fenceMatch[1].length >= codeBlockFence.length) {
44
+ contentBlocks.push(_jsx(RenderCodeBlock, { content: codeBlockContent, lang: codeBlockLang, isPending: isPending, availableTerminalHeight: availableTerminalHeight, terminalWidth: terminalWidth }, key));
45
+ inCodeBlock = false;
46
+ codeBlockContent = [];
47
+ codeBlockLang = null;
48
+ codeBlockFence = '';
49
+ }
50
+ else {
51
+ codeBlockContent.push(line);
52
+ }
53
+ return;
54
+ }
55
+ const codeFenceMatch = line.match(codeFenceRegex);
56
+ const headerMatch = line.match(headerRegex);
57
+ const ulMatch = line.match(ulItemRegex);
58
+ const olMatch = line.match(olItemRegex);
59
+ const hrMatch = line.match(hrRegex);
60
+ const tableRowMatch = line.match(tableRowRegex);
61
+ const tableSeparatorMatch = line.match(tableSeparatorRegex);
62
+ if (codeFenceMatch) {
63
+ inCodeBlock = true;
64
+ codeBlockFence = codeFenceMatch[1];
65
+ codeBlockLang = codeFenceMatch[2] || null;
66
+ }
67
+ else if (tableRowMatch && !inTable) {
68
+ // Potential table start - check if next line is separator
69
+ if (index + 1 < lines.length &&
70
+ lines[index + 1].match(tableSeparatorRegex)) {
71
+ inTable = true;
72
+ tableHeaders = tableRowMatch[1].split('|').map((cell) => cell.trim());
73
+ tableRows = [];
74
+ }
75
+ else {
76
+ // Not a table, treat as regular text
77
+ contentBlocks.push(_jsx(Box, { children: _jsx(Text, { wrap: "wrap", children: _jsx(RenderInline, { text: line }) }) }, key));
78
+ }
79
+ }
80
+ else if (inTable && tableSeparatorMatch) {
81
+ // Skip separator line - already handled
82
+ }
83
+ else if (inTable && tableRowMatch) {
84
+ // Add table row
85
+ const cells = tableRowMatch[1].split('|').map((cell) => cell.trim());
86
+ // Ensure row has same column count as headers
87
+ while (cells.length < tableHeaders.length) {
88
+ cells.push('');
89
+ }
90
+ if (cells.length > tableHeaders.length) {
91
+ cells.length = tableHeaders.length;
92
+ }
93
+ tableRows.push(cells);
94
+ }
95
+ else if (inTable && !tableRowMatch) {
96
+ // End of table
97
+ if (tableHeaders.length > 0 && tableRows.length > 0) {
98
+ contentBlocks.push(_jsx(RenderTable, { headers: tableHeaders, rows: tableRows, terminalWidth: terminalWidth }, `table-${contentBlocks.length}`));
99
+ }
100
+ inTable = false;
101
+ tableRows = [];
102
+ tableHeaders = [];
103
+ // Process current line as normal
104
+ if (line.trim().length > 0) {
105
+ contentBlocks.push(_jsx(Box, { children: _jsx(Text, { wrap: "wrap", children: _jsx(RenderInline, { text: line }) }) }, key));
106
+ }
107
+ }
108
+ else if (hrMatch) {
109
+ contentBlocks.push(_jsx(Box, { children: _jsx(Text, { dimColor: true, children: "---" }) }, key));
110
+ }
111
+ else if (headerMatch) {
112
+ const level = headerMatch[1].length;
113
+ const headerText = headerMatch[2];
114
+ let headerNode = null;
115
+ switch (level) {
116
+ case 1:
117
+ headerNode = (_jsx(Text, { bold: true, color: Colors.AccentCyan, children: _jsx(RenderInline, { text: headerText }) }));
118
+ break;
119
+ case 2:
120
+ headerNode = (_jsx(Text, { bold: true, color: Colors.AccentBlue, children: _jsx(RenderInline, { text: headerText }) }));
121
+ break;
122
+ case 3:
123
+ headerNode = (_jsx(Text, { bold: true, children: _jsx(RenderInline, { text: headerText }) }));
124
+ break;
125
+ case 4:
126
+ headerNode = (_jsx(Text, { italic: true, color: Colors.Gray, children: _jsx(RenderInline, { text: headerText }) }));
127
+ break;
128
+ default:
129
+ headerNode = (_jsx(Text, { children: _jsx(RenderInline, { text: headerText }) }));
130
+ break;
131
+ }
132
+ if (headerNode)
133
+ contentBlocks.push(_jsx(Box, { children: headerNode }, key));
134
+ }
135
+ else if (ulMatch) {
136
+ const leadingWhitespace = ulMatch[1];
137
+ const marker = ulMatch[2];
138
+ const itemText = ulMatch[3];
139
+ contentBlocks.push(_jsx(RenderListItem, { itemText: itemText, type: "ul", marker: marker, leadingWhitespace: leadingWhitespace }, key));
140
+ }
141
+ else if (olMatch) {
142
+ const leadingWhitespace = olMatch[1];
143
+ const marker = olMatch[2];
144
+ const itemText = olMatch[3];
145
+ contentBlocks.push(_jsx(RenderListItem, { itemText: itemText, type: "ol", marker: marker, leadingWhitespace: leadingWhitespace }, key));
146
+ }
147
+ else {
148
+ if (line.trim().length === 0) {
149
+ if (contentBlocks.length > 0 && !inCodeBlock) {
150
+ contentBlocks.push(_jsx(Box, { height: EMPTY_LINE_HEIGHT }, key));
151
+ }
152
+ }
153
+ else {
154
+ contentBlocks.push(_jsx(Box, { children: _jsx(Text, { wrap: "wrap", children: _jsx(RenderInline, { text: line }) }) }, key));
155
+ }
156
+ }
157
+ });
158
+ if (inCodeBlock) {
159
+ contentBlocks.push(_jsx(RenderCodeBlock, { content: codeBlockContent, lang: codeBlockLang, isPending: isPending, availableTerminalHeight: availableTerminalHeight, terminalWidth: terminalWidth }, "line-eof"));
160
+ }
161
+ // Handle table at end of content
162
+ if (inTable && tableHeaders.length > 0 && tableRows.length > 0) {
163
+ contentBlocks.push(_jsx(RenderTable, { headers: tableHeaders, rows: tableRows, terminalWidth: terminalWidth }, `table-${contentBlocks.length}`));
164
+ }
165
+ return _jsx(_Fragment, { children: contentBlocks });
166
+ };
167
+ const RenderCodeBlockInternal = ({ content, lang, isPending, availableTerminalHeight, terminalWidth, }) => {
168
+ const MIN_LINES_FOR_MESSAGE = 1; // Minimum lines to show before the "generating more" message
169
+ const RESERVED_LINES = 2; // Lines reserved for the message itself and potential padding
170
+ if (isPending && availableTerminalHeight !== undefined) {
171
+ const MAX_CODE_LINES_WHEN_PENDING = Math.max(0, availableTerminalHeight - CODE_BLOCK_PADDING * 2 - RESERVED_LINES);
172
+ if (content.length > MAX_CODE_LINES_WHEN_PENDING) {
173
+ if (MAX_CODE_LINES_WHEN_PENDING < MIN_LINES_FOR_MESSAGE) {
174
+ // Not enough space to even show the message meaningfully
175
+ return (_jsx(Box, { padding: CODE_BLOCK_PADDING, children: _jsx(Text, { color: Colors.Gray, children: "... code is being written ..." }) }));
176
+ }
177
+ const truncatedContent = content.slice(0, MAX_CODE_LINES_WHEN_PENDING);
178
+ const colorizedTruncatedCode = colorizeCode(truncatedContent.join('\n'), lang, availableTerminalHeight, terminalWidth - CODE_BLOCK_PADDING * 2);
179
+ return (_jsxs(Box, { flexDirection: "column", padding: CODE_BLOCK_PADDING, children: [colorizedTruncatedCode, _jsx(Text, { color: Colors.Gray, children: "... generating more ..." })] }));
180
+ }
181
+ }
182
+ const fullContent = content.join('\n');
183
+ const colorizedCode = colorizeCode(fullContent, lang, availableTerminalHeight, terminalWidth - CODE_BLOCK_PADDING * 2);
184
+ return (_jsx(Box, { flexDirection: "column", padding: CODE_BLOCK_PADDING, width: terminalWidth, flexShrink: 0, children: colorizedCode }));
185
+ };
186
+ const RenderCodeBlock = React.memo(RenderCodeBlockInternal);
187
+ const RenderListItemInternal = ({ itemText, type, marker, leadingWhitespace = '', }) => {
188
+ const prefix = type === 'ol' ? `${marker}. ` : `${marker} `;
189
+ const prefixWidth = prefix.length;
190
+ const indentation = leadingWhitespace.length;
191
+ return (_jsxs(Box, { paddingLeft: indentation + LIST_ITEM_PREFIX_PADDING, flexDirection: "row", children: [_jsx(Box, { width: prefixWidth, children: _jsx(Text, { children: prefix }) }), _jsx(Box, { flexGrow: LIST_ITEM_TEXT_FLEX_GROW, children: _jsx(Text, { wrap: "wrap", children: _jsx(RenderInline, { text: itemText }) }) })] }));
192
+ };
193
+ const RenderListItem = React.memo(RenderListItemInternal);
194
+ const RenderTableInternal = ({ headers, rows, terminalWidth, }) => (_jsx(TableRenderer, { headers: headers, rows: rows, terminalWidth: terminalWidth }));
195
+ const RenderTable = React.memo(RenderTableInternal);
196
+ export const MarkdownDisplay = React.memo(MarkdownDisplayInternal);
197
+ //# sourceMappingURL=MarkdownDisplay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MarkdownDisplay.js","sourceRoot":"","sources":["../../../../src/ui/utils/MarkdownDisplay.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import React from 'react';
7
+ interface TableRendererProps {
8
+ headers: string[];
9
+ rows: string[][];
10
+ terminalWidth: number;
11
+ }
12
+ /**
13
+ * Custom table renderer for markdown tables
14
+ * We implement our own instead of using ink-table due to module compatibility issues
15
+ */
16
+ export declare const TableRenderer: React.FC<TableRendererProps>;
17
+ export {};
@@ -0,0 +1,84 @@
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 React from 'react';
8
+ import { Text, Box } from 'ink';
9
+ import { Colors } from '../colors.js';
10
+ import { RenderInline, getPlainTextLength } from './InlineMarkdownRenderer.js';
11
+ /**
12
+ * Custom table renderer for markdown tables
13
+ * We implement our own instead of using ink-table due to module compatibility issues
14
+ */
15
+ export const TableRenderer = ({ headers, rows, terminalWidth, }) => {
16
+ // Calculate column widths using actual display width after markdown processing
17
+ const columnWidths = headers.map((header, index) => {
18
+ const headerWidth = getPlainTextLength(header);
19
+ const maxRowWidth = Math.max(...rows.map((row) => getPlainTextLength(row[index] || '')));
20
+ return Math.max(headerWidth, maxRowWidth) + 2; // Add padding
21
+ });
22
+ // Ensure table fits within terminal width
23
+ const totalWidth = columnWidths.reduce((sum, width) => sum + width + 1, 1);
24
+ const scaleFactor = totalWidth > terminalWidth ? terminalWidth / totalWidth : 1;
25
+ const adjustedWidths = columnWidths.map((width) => Math.floor(width * scaleFactor));
26
+ // Helper function to render a cell with proper width
27
+ const renderCell = (content, width, isHeader = false) => {
28
+ const contentWidth = Math.max(0, width - 2);
29
+ const displayWidth = getPlainTextLength(content);
30
+ let cellContent = content;
31
+ if (displayWidth > contentWidth) {
32
+ if (contentWidth <= 3) {
33
+ // Just truncate by character count
34
+ cellContent = content.substring(0, Math.min(content.length, contentWidth));
35
+ }
36
+ else {
37
+ // Truncate preserving markdown formatting using binary search
38
+ let left = 0;
39
+ let right = content.length;
40
+ let bestTruncated = content;
41
+ // Binary search to find the optimal truncation point
42
+ while (left <= right) {
43
+ const mid = Math.floor((left + right) / 2);
44
+ const candidate = content.substring(0, mid);
45
+ const candidateWidth = getPlainTextLength(candidate);
46
+ if (candidateWidth <= contentWidth - 3) {
47
+ bestTruncated = candidate;
48
+ left = mid + 1;
49
+ }
50
+ else {
51
+ right = mid - 1;
52
+ }
53
+ }
54
+ cellContent = bestTruncated + '...';
55
+ }
56
+ }
57
+ // Calculate exact padding needed
58
+ const actualDisplayWidth = getPlainTextLength(cellContent);
59
+ const paddingNeeded = Math.max(0, contentWidth - actualDisplayWidth);
60
+ return (_jsxs(Text, { children: [isHeader ? (_jsx(Text, { bold: true, color: Colors.AccentCyan, children: _jsx(RenderInline, { text: cellContent }) })) : (_jsx(RenderInline, { text: cellContent })), ' '.repeat(paddingNeeded)] }));
61
+ };
62
+ // Helper function to render border
63
+ const renderBorder = (type) => {
64
+ const chars = {
65
+ top: { left: '┌', middle: '┬', right: '┐', horizontal: '─' },
66
+ middle: { left: '├', middle: '┼', right: '┤', horizontal: '─' },
67
+ bottom: { left: '└', middle: '┴', right: '┘', horizontal: '─' },
68
+ };
69
+ const char = chars[type];
70
+ const borderParts = adjustedWidths.map((w) => char.horizontal.repeat(w));
71
+ const border = char.left + borderParts.join(char.middle) + char.right;
72
+ return _jsx(Text, { children: border });
73
+ };
74
+ // Helper function to render a table row
75
+ const renderRow = (cells, isHeader = false) => {
76
+ const renderedCells = cells.map((cell, index) => {
77
+ const width = adjustedWidths[index] || 0;
78
+ return renderCell(cell || '', width, isHeader);
79
+ });
80
+ return (_jsxs(Text, { children: ["\u2502", ' ', renderedCells.map((cell, index) => (_jsxs(React.Fragment, { children: [cell, index < renderedCells.length - 1 ? ' │ ' : ''] }, index))), ' ', "\u2502"] }));
81
+ };
82
+ return (_jsxs(Box, { flexDirection: "column", marginY: 1, children: [renderBorder('top'), renderRow(headers, true), renderBorder('middle'), rows.map((row, index) => (_jsx(React.Fragment, { children: renderRow(row) }, index))), renderBorder('bottom')] }));
83
+ };
84
+ //# sourceMappingURL=TableRenderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TableRenderer.js","sourceRoot":"","sources":["../../../../src/ui/utils/TableRenderer.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ /**
7
+ * Checks if a query string potentially represents an '@' command.
8
+ * It triggers if the query starts with '@' or contains '@' preceded by whitespace
9
+ * and followed by a non-whitespace character.
10
+ *
11
+ * @param query The input query string.
12
+ * @returns True if the query looks like an '@' command, false otherwise.
13
+ */
14
+ export declare const isAtCommand: (query: string) => boolean;
15
+ /**
16
+ * Checks if a query string potentially represents an '/' command.
17
+ * It triggers if the query starts with '/'
18
+ *
19
+ * @param query The input query string.
20
+ * @returns True if the query looks like an '/' command, false otherwise.
21
+ */
22
+ export declare const isSlashCommand: (query: string) => boolean;
@@ -0,0 +1,25 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ /**
7
+ * Checks if a query string potentially represents an '@' command.
8
+ * It triggers if the query starts with '@' or contains '@' preceded by whitespace
9
+ * and followed by a non-whitespace character.
10
+ *
11
+ * @param query The input query string.
12
+ * @returns True if the query looks like an '@' command, false otherwise.
13
+ */
14
+ export const isAtCommand = (query) =>
15
+ // Check if starts with @ OR has a space, then @
16
+ query.startsWith('@') || /\s@/.test(query);
17
+ /**
18
+ * Checks if a query string potentially represents an '/' command.
19
+ * It triggers if the query starts with '/'
20
+ *
21
+ * @param query The input query string.
22
+ * @returns True if the query looks like an '/' command, false otherwise.
23
+ */
24
+ export const isSlashCommand = (query) => query.startsWith('/');
25
+ //# sourceMappingURL=commandUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commandUtils.js","sourceRoot":"","sources":["../../../../src/ui/utils/commandUtils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,KAAa,EAAW,EAAE;AACpD,gDAAgD;AAChD,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAE7C;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,KAAa,EAAW,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { SessionMetrics, ComputedSessionStats, ModelMetrics } from '../contexts/SessionContext.js';
7
+ export declare function calculateErrorRate(metrics: ModelMetrics): number;
8
+ export declare function calculateAverageLatency(metrics: ModelMetrics): number;
9
+ export declare function calculateCacheHitRate(metrics: ModelMetrics): number;
10
+ export declare const computeSessionStats: (metrics: SessionMetrics) => ComputedSessionStats;
@@ -0,0 +1,55 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ export function calculateErrorRate(metrics) {
7
+ if (metrics.api.totalRequests === 0) {
8
+ return 0;
9
+ }
10
+ return (metrics.api.totalErrors / metrics.api.totalRequests) * 100;
11
+ }
12
+ export function calculateAverageLatency(metrics) {
13
+ if (metrics.api.totalRequests === 0) {
14
+ return 0;
15
+ }
16
+ return metrics.api.totalLatencyMs / metrics.api.totalRequests;
17
+ }
18
+ export function calculateCacheHitRate(metrics) {
19
+ if (metrics.tokens.prompt === 0) {
20
+ return 0;
21
+ }
22
+ return (metrics.tokens.cached / metrics.tokens.prompt) * 100;
23
+ }
24
+ export const computeSessionStats = (metrics) => {
25
+ const { models, tools } = metrics;
26
+ const totalApiTime = Object.values(models).reduce((acc, model) => acc + model.api.totalLatencyMs, 0);
27
+ const totalToolTime = tools.totalDurationMs;
28
+ const agentActiveTime = totalApiTime + totalToolTime;
29
+ const apiTimePercent = agentActiveTime > 0 ? (totalApiTime / agentActiveTime) * 100 : 0;
30
+ const toolTimePercent = agentActiveTime > 0 ? (totalToolTime / agentActiveTime) * 100 : 0;
31
+ const totalCachedTokens = Object.values(models).reduce((acc, model) => acc + model.tokens.cached, 0);
32
+ const totalPromptTokens = Object.values(models).reduce((acc, model) => acc + model.tokens.prompt, 0);
33
+ const cacheEfficiency = totalPromptTokens > 0 ? (totalCachedTokens / totalPromptTokens) * 100 : 0;
34
+ const totalDecisions = tools.totalDecisions.accept +
35
+ tools.totalDecisions.reject +
36
+ tools.totalDecisions.modify;
37
+ const successRate = tools.totalCalls > 0 ? (tools.totalSuccess / tools.totalCalls) * 100 : 0;
38
+ const agreementRate = totalDecisions > 0
39
+ ? (tools.totalDecisions.accept / totalDecisions) * 100
40
+ : 0;
41
+ return {
42
+ totalApiTime,
43
+ totalToolTime,
44
+ agentActiveTime,
45
+ apiTimePercent,
46
+ toolTimePercent,
47
+ cacheEfficiency,
48
+ totalDecisions,
49
+ successRate,
50
+ agreementRate,
51
+ totalCachedTokens,
52
+ totalPromptTokens,
53
+ };
54
+ };
55
+ //# sourceMappingURL=computeStats.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"computeStats.js","sourceRoot":"","sources":["../../../../src/ui/utils/computeStats.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ export declare const TOOL_SUCCESS_RATE_HIGH = 95;
7
+ export declare const TOOL_SUCCESS_RATE_MEDIUM = 85;
8
+ export declare const USER_AGREEMENT_RATE_HIGH = 75;
9
+ export declare const USER_AGREEMENT_RATE_MEDIUM = 45;
10
+ export declare const CACHE_EFFICIENCY_HIGH = 40;
11
+ export declare const CACHE_EFFICIENCY_MEDIUM = 15;
12
+ export declare const getStatusColor: (value: number, thresholds: {
13
+ green: number;
14
+ yellow: number;
15
+ }, options?: {
16
+ defaultColor?: string;
17
+ }) => string;
@@ -0,0 +1,24 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { Colors } from '../colors.js';
7
+ // --- Thresholds ---
8
+ export const TOOL_SUCCESS_RATE_HIGH = 95;
9
+ export const TOOL_SUCCESS_RATE_MEDIUM = 85;
10
+ export const USER_AGREEMENT_RATE_HIGH = 75;
11
+ export const USER_AGREEMENT_RATE_MEDIUM = 45;
12
+ export const CACHE_EFFICIENCY_HIGH = 40;
13
+ export const CACHE_EFFICIENCY_MEDIUM = 15;
14
+ // --- Color Logic ---
15
+ export const getStatusColor = (value, thresholds, options = {}) => {
16
+ if (value >= thresholds.green) {
17
+ return Colors.AccentGreen;
18
+ }
19
+ if (value >= thresholds.yellow) {
20
+ return Colors.AccentYellow;
21
+ }
22
+ return options.defaultColor || Colors.AccentRed;
23
+ };
24
+ //# sourceMappingURL=displayUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"displayUtils.js","sourceRoot":"","sources":["../../../../src/ui/utils/displayUtils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,qBAAqB;AACrB,MAAM,CAAC,MAAM,sBAAsB,GAAG,EAAE,CAAC;AACzC,MAAM,CAAC,MAAM,wBAAwB,GAAG,EAAE,CAAC;AAE3C,MAAM,CAAC,MAAM,wBAAwB,GAAG,EAAE,CAAC;AAC3C,MAAM,CAAC,MAAM,0BAA0B,GAAG,EAAE,CAAC;AAE7C,MAAM,CAAC,MAAM,qBAAqB,GAAG,EAAE,CAAC;AACxC,MAAM,CAAC,MAAM,uBAAuB,GAAG,EAAE,CAAC;AAE1C,sBAAsB;AACtB,MAAM,CAAC,MAAM,cAAc,GAAG,CAC5B,KAAa,EACb,UAA6C,EAC7C,UAAqC,EAAE,EACvC,EAAE;IACF,IAAI,KAAK,IAAI,UAAU,CAAC,KAAK,EAAE,CAAC;QAC9B,OAAO,MAAM,CAAC,WAAW,CAAC;IAC5B,CAAC;IACD,IAAI,KAAK,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;QAC/B,OAAO,MAAM,CAAC,YAAY,CAAC;IAC7B,CAAC;IACD,OAAO,OAAO,CAAC,YAAY,IAAI,MAAM,CAAC,SAAS,CAAC;AAClD,CAAC,CAAC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { AuthType } from '@google/gemini-cli-core';
7
+ export interface ApiError {
8
+ error: {
9
+ code: number;
10
+ message: string;
11
+ status: string;
12
+ details: unknown[];
13
+ };
14
+ }
15
+ export declare function parseAndFormatApiError(error: unknown, authType?: AuthType): string;
@@ -0,0 +1,79 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { AuthType } from '@google/gemini-cli-core';
7
+ const RATE_LIMIT_ERROR_MESSAGE_GOOGLE = '\nPlease wait and try again later. To increase your limits, upgrade to a plan with higher limits, or use /auth to switch to using a paid API key from AI Studio at https://aistudio.google.com/apikey';
8
+ const RATE_LIMIT_ERROR_MESSAGE_USE_GEMINI = '\nPlease wait and try again later. To increase your limits, request a quota increase through AI Studio, or switch to another /auth method';
9
+ const RATE_LIMIT_ERROR_MESSAGE_VERTEX = '\nPlease wait and try again later. To increase your limits, request a quota increase through Vertex, or switch to another /auth method';
10
+ const RATE_LIMIT_ERROR_MESSAGE_DEFAULT = 'Your request has been rate limited. Please wait and try again later.';
11
+ function isApiError(error) {
12
+ return (typeof error === 'object' &&
13
+ error !== null &&
14
+ 'error' in error &&
15
+ typeof error.error === 'object' &&
16
+ 'message' in error.error);
17
+ }
18
+ function isStructuredError(error) {
19
+ return (typeof error === 'object' &&
20
+ error !== null &&
21
+ 'message' in error &&
22
+ typeof error.message === 'string');
23
+ }
24
+ function getRateLimitMessage(authType) {
25
+ switch (authType) {
26
+ case AuthType.LOGIN_WITH_GOOGLE:
27
+ return RATE_LIMIT_ERROR_MESSAGE_GOOGLE;
28
+ case AuthType.USE_GEMINI:
29
+ return RATE_LIMIT_ERROR_MESSAGE_USE_GEMINI;
30
+ case AuthType.USE_VERTEX_AI:
31
+ return RATE_LIMIT_ERROR_MESSAGE_VERTEX;
32
+ default:
33
+ return RATE_LIMIT_ERROR_MESSAGE_DEFAULT;
34
+ }
35
+ }
36
+ export function parseAndFormatApiError(error, authType) {
37
+ if (isStructuredError(error)) {
38
+ let text = `[API Error: ${error.message}]`;
39
+ if (error.status === 429) {
40
+ text += getRateLimitMessage(authType);
41
+ }
42
+ return text;
43
+ }
44
+ // The error message might be a string containing a JSON object.
45
+ if (typeof error === 'string') {
46
+ const jsonStart = error.indexOf('{');
47
+ if (jsonStart === -1) {
48
+ return `[API Error: ${error}]`; // Not a JSON error, return as is.
49
+ }
50
+ const jsonString = error.substring(jsonStart);
51
+ try {
52
+ const parsedError = JSON.parse(jsonString);
53
+ if (isApiError(parsedError)) {
54
+ let finalMessage = parsedError.error.message;
55
+ try {
56
+ // See if the message is a stringified JSON with another error
57
+ const nestedError = JSON.parse(finalMessage);
58
+ if (isApiError(nestedError)) {
59
+ finalMessage = nestedError.error.message;
60
+ }
61
+ }
62
+ catch (_e) {
63
+ // It's not a nested JSON error, so we just use the message as is.
64
+ }
65
+ let text = `[API Error: ${finalMessage} (Status: ${parsedError.error.status})]`;
66
+ if (parsedError.error.code === 429) {
67
+ text += getRateLimitMessage(authType);
68
+ }
69
+ return text;
70
+ }
71
+ }
72
+ catch (_e) {
73
+ // Not a valid JSON, fall through and return the original message.
74
+ }
75
+ return `[API Error: ${error}]`;
76
+ }
77
+ return '[API Error: An unknown error occurred.]';
78
+ }
79
+ //# sourceMappingURL=errorParsing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errorParsing.js","sourceRoot":"","sources":["../../../../src/ui/utils/errorParsing.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAmB,MAAM,yBAAyB,CAAC;AAEpE,MAAM,+BAA+B,GACnC,uMAAuM,CAAC;AAC1M,MAAM,mCAAmC,GACvC,2IAA2I,CAAC;AAC9I,MAAM,+BAA+B,GACnC,wIAAwI,CAAC;AAC3I,MAAM,gCAAgC,GACpC,sEAAsE,CAAC;AAWzE,SAAS,UAAU,CAAC,KAAc;IAChC,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,OAAO,IAAI,KAAK;QAChB,OAAQ,KAAkB,CAAC,KAAK,KAAK,QAAQ;QAC7C,SAAS,IAAK,KAAkB,CAAC,KAAK,CACvC,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAc;IACvC,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,SAAS,IAAI,KAAK;QAClB,OAAQ,KAAyB,CAAC,OAAO,KAAK,QAAQ,CACvD,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAAC,QAAmB;IAC9C,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,QAAQ,CAAC,iBAAiB;YAC7B,OAAO,+BAA+B,CAAC;QACzC,KAAK,QAAQ,CAAC,UAAU;YACtB,OAAO,mCAAmC,CAAC;QAC7C,KAAK,QAAQ,CAAC,aAAa;YACzB,OAAO,+BAA+B,CAAC;QACzC;YACE,OAAO,gCAAgC,CAAC;IAC5C,CAAC;AACH,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,KAAc,EACd,QAAmB;IAEnB,IAAI,iBAAiB,CAAC,KAAK,CAAC,EAAE,CAAC;QAC7B,IAAI,IAAI,GAAG,eAAe,KAAK,CAAC,OAAO,GAAG,CAAC;QAC3C,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YACzB,IAAI,IAAI,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QACxC,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,gEAAgE;IAChE,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACrC,IAAI,SAAS,KAAK,CAAC,CAAC,EAAE,CAAC;YACrB,OAAO,eAAe,KAAK,GAAG,CAAC,CAAC,kCAAkC;QACpE,CAAC;QAED,MAAM,UAAU,GAAG,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAE9C,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAY,CAAC;YACtD,IAAI,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC5B,IAAI,YAAY,GAAG,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC;gBAC7C,IAAI,CAAC;oBACH,8DAA8D;oBAC9D,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAY,CAAC;oBACxD,IAAI,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;wBAC5B,YAAY,GAAG,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC;oBAC3C,CAAC;gBACH,CAAC;gBAAC,OAAO,EAAE,EAAE,CAAC;oBACZ,kEAAkE;gBACpE,CAAC;gBACD,IAAI,IAAI,GAAG,eAAe,YAAY,aAAa,WAAW,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC;gBAChF,IAAI,WAAW,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC;oBACnC,IAAI,IAAI,mBAAmB,CAAC,QAAQ,CAAC,CAAC;gBACxC,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QAAC,OAAO,EAAE,EAAE,CAAC;YACZ,kEAAkE;QACpE,CAAC;QACD,OAAO,eAAe,KAAK,GAAG,CAAC;IACjC,CAAC;IAED,OAAO,yCAAyC,CAAC;AACnD,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ export declare const formatMemoryUsage: (bytes: number) => string;
7
+ /**
8
+ * Formats a duration in milliseconds into a concise, human-readable string (e.g., "1h 5s").
9
+ * It omits any time units that are zero.
10
+ * @param milliseconds The duration in milliseconds.
11
+ * @returns A formatted string representing the duration.
12
+ */
13
+ export declare const formatDuration: (milliseconds: number) => string;