mpd-llm-cli 0.1.18 → 0.1.19

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 (468) hide show
  1. package/dist/.last_build +0 -0
  2. package/dist/index.d.ts +7 -0
  3. package/dist/index.js +20 -0
  4. package/dist/index.js.map +1 -0
  5. package/dist/package.json +83 -0
  6. package/dist/src/api/index.d.ts +17 -0
  7. package/dist/src/api/index.js +192 -0
  8. package/dist/src/api/index.js.map +1 -0
  9. package/dist/src/api/types.d.ts +32 -0
  10. package/dist/src/api/types.js +2 -0
  11. package/dist/src/api/types.js.map +1 -0
  12. package/dist/src/api/util.d.ts +4 -0
  13. package/dist/src/api/util.js +67 -0
  14. package/dist/src/api/util.js.map +1 -0
  15. package/dist/src/config/auth.d.ts +6 -0
  16. package/dist/src/config/auth.js +42 -0
  17. package/dist/src/config/auth.js.map +1 -0
  18. package/dist/src/config/config.d.ts +13 -0
  19. package/dist/src/config/config.js +248 -0
  20. package/dist/src/config/config.js.map +1 -0
  21. package/dist/src/config/extension.d.ts +21 -0
  22. package/dist/src/config/extension.js +109 -0
  23. package/dist/src/config/extension.js.map +1 -0
  24. package/dist/src/config/mpdaiConfig.d.ts +28 -0
  25. package/dist/src/config/mpdaiConfig.js +84 -0
  26. package/dist/src/config/mpdaiConfig.js.map +1 -0
  27. package/dist/src/config/sandboxConfig.d.ts +13 -0
  28. package/dist/src/config/sandboxConfig.js +75 -0
  29. package/dist/src/config/sandboxConfig.js.map +1 -0
  30. package/dist/src/config/settings.d.ts +72 -0
  31. package/dist/src/config/settings.js +227 -0
  32. package/dist/src/config/settings.js.map +1 -0
  33. package/dist/src/config/startup.d.ts +21 -0
  34. package/dist/src/config/startup.js +118 -0
  35. package/dist/src/config/startup.js.map +1 -0
  36. package/dist/src/gemini.d.ts +6 -0
  37. package/dist/src/gemini.js +300 -0
  38. package/dist/src/gemini.js.map +1 -0
  39. package/dist/src/generated/git-commit.d.ts +6 -0
  40. package/dist/src/generated/git-commit.js +9 -0
  41. package/dist/src/generated/git-commit.js.map +1 -0
  42. package/dist/src/nonInteractiveCli.d.ts +7 -0
  43. package/dist/src/nonInteractiveCli.js +115 -0
  44. package/dist/src/nonInteractiveCli.js.map +1 -0
  45. package/dist/src/services/AuthService.d.ts +110 -0
  46. package/dist/src/services/AuthService.js +258 -0
  47. package/dist/src/services/AuthService.js.map +1 -0
  48. package/dist/src/services/CommandService.d.ts +13 -0
  49. package/dist/src/services/CommandService.js +34 -0
  50. package/dist/src/services/CommandService.js.map +1 -0
  51. package/dist/src/services/EnvConfigManager.d.ts +34 -0
  52. package/dist/src/services/EnvConfigManager.js +141 -0
  53. package/dist/src/services/EnvConfigManager.js.map +1 -0
  54. package/dist/src/services/README.md +114 -0
  55. package/dist/src/services/debug-auth.d.ts +10 -0
  56. package/dist/src/services/debug-auth.js +104 -0
  57. package/dist/src/services/debug-auth.js.map +1 -0
  58. package/dist/src/services/demo.d.ts +10 -0
  59. package/dist/src/services/demo.js +96 -0
  60. package/dist/src/services/demo.js.map +1 -0
  61. package/dist/src/services/test-auth.d.ts +10 -0
  62. package/dist/src/services/test-auth.js +104 -0
  63. package/dist/src/services/test-auth.js.map +1 -0
  64. package/dist/src/services/test-readline.d.ts +6 -0
  65. package/dist/src/services/test-readline.js +32 -0
  66. package/dist/src/services/test-readline.js.map +1 -0
  67. package/dist/src/telemetry/README.md +135 -0
  68. package/dist/src/telemetry/costCalculator.d.ts +401 -0
  69. package/dist/src/telemetry/costCalculator.js +555 -0
  70. package/dist/src/telemetry/costCalculator.js.map +1 -0
  71. package/dist/src/telemetry/dataCollector.d.ts +83 -0
  72. package/dist/src/telemetry/dataCollector.js +392 -0
  73. package/dist/src/telemetry/dataCollector.js.map +1 -0
  74. package/dist/src/telemetry/langfuseClient.d.ts +63 -0
  75. package/dist/src/telemetry/langfuseClient.js +355 -0
  76. package/dist/src/telemetry/langfuseClient.js.map +1 -0
  77. package/dist/src/telemetry/langfuseConfig.d.ts +21 -0
  78. package/dist/src/telemetry/langfuseConfig.js +64 -0
  79. package/dist/src/telemetry/langfuseConfig.js.map +1 -0
  80. package/dist/src/telemetry/langfuseIntegration.d.ts +62 -0
  81. package/dist/src/telemetry/langfuseIntegration.js +173 -0
  82. package/dist/src/telemetry/langfuseIntegration.js.map +1 -0
  83. package/dist/src/telemetry/toolExecutionInterceptor.d.ts +29 -0
  84. package/dist/src/telemetry/toolExecutionInterceptor.js +122 -0
  85. package/dist/src/telemetry/toolExecutionInterceptor.js.map +1 -0
  86. package/dist/src/ui/App.d.ts +14 -0
  87. package/dist/src/ui/App.js +466 -0
  88. package/dist/src/ui/App.js.map +1 -0
  89. package/dist/src/ui/colors.d.ts +7 -0
  90. package/dist/src/ui/colors.js +48 -0
  91. package/dist/src/ui/colors.js.map +1 -0
  92. package/dist/src/ui/commands/clearCommand.d.ts +7 -0
  93. package/dist/src/ui/commands/clearCommand.js +15 -0
  94. package/dist/src/ui/commands/clearCommand.js.map +1 -0
  95. package/dist/src/ui/commands/helpCommand.d.ts +7 -0
  96. package/dist/src/ui/commands/helpCommand.js +18 -0
  97. package/dist/src/ui/commands/helpCommand.js.map +1 -0
  98. package/dist/src/ui/commands/logoutCommand.d.ts +7 -0
  99. package/dist/src/ui/commands/logoutCommand.js +77 -0
  100. package/dist/src/ui/commands/logoutCommand.js.map +1 -0
  101. package/dist/src/ui/commands/memoryCommand.d.ts +7 -0
  102. package/dist/src/ui/commands/memoryCommand.js +81 -0
  103. package/dist/src/ui/commands/memoryCommand.js.map +1 -0
  104. package/dist/src/ui/commands/modelCommand.d.ts +14 -0
  105. package/dist/src/ui/commands/modelCommand.js +58 -0
  106. package/dist/src/ui/commands/modelCommand.js.map +1 -0
  107. package/dist/src/ui/commands/types.d.ts +63 -0
  108. package/dist/src/ui/commands/types.js +7 -0
  109. package/dist/src/ui/commands/types.js.map +1 -0
  110. package/dist/src/ui/components/AboutBox.d.ts +16 -0
  111. package/dist/src/ui/components/AboutBox.js +6 -0
  112. package/dist/src/ui/components/AboutBox.js.map +1 -0
  113. package/dist/src/ui/components/AsciiArt.d.ts +7 -0
  114. package/dist/src/ui/components/AsciiArt.js +25 -0
  115. package/dist/src/ui/components/AsciiArt.js.map +1 -0
  116. package/dist/src/ui/components/AuthDialog.d.ts +15 -0
  117. package/dist/src/ui/components/AuthDialog.js +75 -0
  118. package/dist/src/ui/components/AuthDialog.js.map +1 -0
  119. package/dist/src/ui/components/AuthInProgress.d.ts +11 -0
  120. package/dist/src/ui/components/AuthInProgress.js +27 -0
  121. package/dist/src/ui/components/AuthInProgress.js.map +1 -0
  122. package/dist/src/ui/components/AutoAcceptIndicator.d.ts +12 -0
  123. package/dist/src/ui/components/AutoAcceptIndicator.js +26 -0
  124. package/dist/src/ui/components/AutoAcceptIndicator.js.map +1 -0
  125. package/dist/src/ui/components/ConsolePatcher.d.ts +12 -0
  126. package/dist/src/ui/components/ConsolePatcher.js +38 -0
  127. package/dist/src/ui/components/ConsolePatcher.js.map +1 -0
  128. package/dist/src/ui/components/ConsoleSummaryDisplay.d.ts +11 -0
  129. package/dist/src/ui/components/ConsoleSummaryDisplay.js +11 -0
  130. package/dist/src/ui/components/ConsoleSummaryDisplay.js.map +1 -0
  131. package/dist/src/ui/components/ContextSummaryDisplay.d.ts +15 -0
  132. package/dist/src/ui/components/ContextSummaryDisplay.js +41 -0
  133. package/dist/src/ui/components/ContextSummaryDisplay.js.map +1 -0
  134. package/dist/src/ui/components/DetailedMessagesDisplay.d.ts +14 -0
  135. package/dist/src/ui/components/DetailedMessagesDisplay.js +34 -0
  136. package/dist/src/ui/components/DetailedMessagesDisplay.js.map +1 -0
  137. package/dist/src/ui/components/EditorSettingsDialog.d.ts +15 -0
  138. package/dist/src/ui/components/EditorSettingsDialog.js +73 -0
  139. package/dist/src/ui/components/EditorSettingsDialog.js.map +1 -0
  140. package/dist/src/ui/components/Footer.d.ts +20 -0
  141. package/dist/src/ui/components/Footer.js +19 -0
  142. package/dist/src/ui/components/Footer.js.map +1 -0
  143. package/dist/src/ui/components/GeminiRespondingSpinner.d.ts +17 -0
  144. package/dist/src/ui/components/GeminiRespondingSpinner.js +16 -0
  145. package/dist/src/ui/components/GeminiRespondingSpinner.js.map +1 -0
  146. package/dist/src/ui/components/Header.d.ts +12 -0
  147. package/dist/src/ui/components/Header.js +20 -0
  148. package/dist/src/ui/components/Header.js.map +1 -0
  149. package/dist/src/ui/components/Help.d.ts +12 -0
  150. package/dist/src/ui/components/Help.js +10 -0
  151. package/dist/src/ui/components/Help.js.map +1 -0
  152. package/dist/src/ui/components/HistoryItemDisplay.d.ts +18 -0
  153. package/dist/src/ui/components/HistoryItemDisplay.js +17 -0
  154. package/dist/src/ui/components/HistoryItemDisplay.js.map +1 -0
  155. package/dist/src/ui/components/InputPrompt.d.ts +25 -0
  156. package/dist/src/ui/components/InputPrompt.js +280 -0
  157. package/dist/src/ui/components/InputPrompt.js.map +1 -0
  158. package/dist/src/ui/components/LoadingIndicator.d.ts +15 -0
  159. package/dist/src/ui/components/LoadingIndicator.js +20 -0
  160. package/dist/src/ui/components/LoadingIndicator.js.map +1 -0
  161. package/dist/src/ui/components/MemoryUsageDisplay.d.ts +7 -0
  162. package/dist/src/ui/components/MemoryUsageDisplay.js +27 -0
  163. package/dist/src/ui/components/MemoryUsageDisplay.js.map +1 -0
  164. package/dist/src/ui/components/ModelDialog.d.ts +14 -0
  165. package/dist/src/ui/components/ModelDialog.js +34 -0
  166. package/dist/src/ui/components/ModelDialog.js.map +1 -0
  167. package/dist/src/ui/components/ModelStatsDisplay.d.ts +7 -0
  168. package/dist/src/ui/components/ModelStatsDisplay.js +33 -0
  169. package/dist/src/ui/components/ModelStatsDisplay.js.map +1 -0
  170. package/dist/src/ui/components/SessionSummaryDisplay.d.ts +11 -0
  171. package/dist/src/ui/components/SessionSummaryDisplay.js +4 -0
  172. package/dist/src/ui/components/SessionSummaryDisplay.js.map +1 -0
  173. package/dist/src/ui/components/ShellModeIndicator.d.ts +7 -0
  174. package/dist/src/ui/components/ShellModeIndicator.js +5 -0
  175. package/dist/src/ui/components/ShellModeIndicator.js.map +1 -0
  176. package/dist/src/ui/components/ShowMoreLines.d.ts +10 -0
  177. package/dist/src/ui/components/ShowMoreLines.js +24 -0
  178. package/dist/src/ui/components/ShowMoreLines.js.map +1 -0
  179. package/dist/src/ui/components/StatsDisplay.d.ts +12 -0
  180. package/dist/src/ui/components/StatsDisplay.js +42 -0
  181. package/dist/src/ui/components/StatsDisplay.js.map +1 -0
  182. package/dist/src/ui/components/SuggestionsDisplay.d.ts +21 -0
  183. package/dist/src/ui/components/SuggestionsDisplay.js +32 -0
  184. package/dist/src/ui/components/SuggestionsDisplay.js.map +1 -0
  185. package/dist/src/ui/components/ThemeDialog.d.ts +19 -0
  186. package/dist/src/ui/components/ThemeDialog.js +126 -0
  187. package/dist/src/ui/components/ThemeDialog.js.map +1 -0
  188. package/dist/src/ui/components/Tips.d.ts +12 -0
  189. package/dist/src/ui/components/Tips.js +8 -0
  190. package/dist/src/ui/components/Tips.js.map +1 -0
  191. package/dist/src/ui/components/ToolStatsDisplay.d.ts +7 -0
  192. package/dist/src/ui/components/ToolStatsDisplay.js +41 -0
  193. package/dist/src/ui/components/ToolStatsDisplay.js.map +1 -0
  194. package/dist/src/ui/components/UpdateNotification.d.ts +10 -0
  195. package/dist/src/ui/components/UpdateNotification.js +10 -0
  196. package/dist/src/ui/components/UpdateNotification.js.map +1 -0
  197. package/dist/src/ui/components/messages/CompressionMessage.d.ts +11 -0
  198. package/dist/src/ui/components/messages/CompressionMessage.js +16 -0
  199. package/dist/src/ui/components/messages/CompressionMessage.js.map +1 -0
  200. package/dist/src/ui/components/messages/DiffRenderer.d.ts +15 -0
  201. package/dist/src/ui/components/messages/DiffRenderer.js +212 -0
  202. package/dist/src/ui/components/messages/DiffRenderer.js.map +1 -0
  203. package/dist/src/ui/components/messages/ErrorMessage.d.ts +11 -0
  204. package/dist/src/ui/components/messages/ErrorMessage.js +9 -0
  205. package/dist/src/ui/components/messages/ErrorMessage.js.map +1 -0
  206. package/dist/src/ui/components/messages/GeminiMessage.d.ts +14 -0
  207. package/dist/src/ui/components/messages/GeminiMessage.js +10 -0
  208. package/dist/src/ui/components/messages/GeminiMessage.js.map +1 -0
  209. package/dist/src/ui/components/messages/GeminiMessageContent.d.ts +14 -0
  210. package/dist/src/ui/components/messages/GeminiMessageContent.js +15 -0
  211. package/dist/src/ui/components/messages/GeminiMessageContent.js.map +1 -0
  212. package/dist/src/ui/components/messages/InfoMessage.d.ts +11 -0
  213. package/dist/src/ui/components/messages/InfoMessage.js +9 -0
  214. package/dist/src/ui/components/messages/InfoMessage.js.map +1 -0
  215. package/dist/src/ui/components/messages/ToolConfirmationMessage.d.ts +17 -0
  216. package/dist/src/ui/components/messages/ToolConfirmationMessage.js +279 -0
  217. package/dist/src/ui/components/messages/ToolConfirmationMessage.js.map +1 -0
  218. package/dist/src/ui/components/messages/ToolGroupMessage.d.ts +18 -0
  219. package/dist/src/ui/components/messages/ToolGroupMessage.js +53 -0
  220. package/dist/src/ui/components/messages/ToolGroupMessage.js.map +1 -0
  221. package/dist/src/ui/components/messages/ToolMessage.d.ts +15 -0
  222. package/dist/src/ui/components/messages/ToolMessage.js +61 -0
  223. package/dist/src/ui/components/messages/ToolMessage.js.map +1 -0
  224. package/dist/src/ui/components/messages/UserMessage.d.ts +11 -0
  225. package/dist/src/ui/components/messages/UserMessage.js +9 -0
  226. package/dist/src/ui/components/messages/UserMessage.js.map +1 -0
  227. package/dist/src/ui/components/messages/UserShellMessage.d.ts +11 -0
  228. package/dist/src/ui/components/messages/UserShellMessage.js +9 -0
  229. package/dist/src/ui/components/messages/UserShellMessage.js.map +1 -0
  230. package/dist/src/ui/components/shared/MaxSizedBox.d.ts +61 -0
  231. package/dist/src/ui/components/shared/MaxSizedBox.js +384 -0
  232. package/dist/src/ui/components/shared/MaxSizedBox.js.map +1 -0
  233. package/dist/src/ui/components/shared/RadioButtonSelect.d.ts +41 -0
  234. package/dist/src/ui/components/shared/RadioButtonSelect.js +52 -0
  235. package/dist/src/ui/components/shared/RadioButtonSelect.js.map +1 -0
  236. package/dist/src/ui/components/shared/text-buffer.d.ts +184 -0
  237. package/dist/src/ui/components/shared/text-buffer.js +1010 -0
  238. package/dist/src/ui/components/shared/text-buffer.js.map +1 -0
  239. package/dist/src/ui/constants.d.ts +8 -0
  240. package/dist/src/ui/constants.js +12 -0
  241. package/dist/src/ui/constants.js.map +1 -0
  242. package/dist/src/ui/contexts/OverflowContext.d.ts +19 -0
  243. package/dist/src/ui/contexts/OverflowContext.js +43 -0
  244. package/dist/src/ui/contexts/OverflowContext.js.map +1 -0
  245. package/dist/src/ui/contexts/SessionContext.d.ts +33 -0
  246. package/dist/src/ui/contexts/SessionContext.js +49 -0
  247. package/dist/src/ui/contexts/SessionContext.js.map +1 -0
  248. package/dist/src/ui/contexts/StreamingContext.d.ts +9 -0
  249. package/dist/src/ui/contexts/StreamingContext.js +15 -0
  250. package/dist/src/ui/contexts/StreamingContext.js.map +1 -0
  251. package/dist/src/ui/editors/editorSettingsManager.d.ts +19 -0
  252. package/dist/src/ui/editors/editorSettingsManager.js +54 -0
  253. package/dist/src/ui/editors/editorSettingsManager.js.map +1 -0
  254. package/dist/src/ui/hooks/atCommandProcessor.d.ts +31 -0
  255. package/dist/src/ui/hooks/atCommandProcessor.js +310 -0
  256. package/dist/src/ui/hooks/atCommandProcessor.js.map +1 -0
  257. package/dist/src/ui/hooks/shellCommandProcessor.d.ts +16 -0
  258. package/dist/src/ui/hooks/shellCommandProcessor.js +261 -0
  259. package/dist/src/ui/hooks/shellCommandProcessor.js.map +1 -0
  260. package/dist/src/ui/hooks/slashCommandProcessor.d.ts +27 -0
  261. package/dist/src/ui/hooks/slashCommandProcessor.js +1079 -0
  262. package/dist/src/ui/hooks/slashCommandProcessor.js.map +1 -0
  263. package/dist/src/ui/hooks/useAuthCommand.d.ts +14 -0
  264. package/dist/src/ui/hooks/useAuthCommand.js +63 -0
  265. package/dist/src/ui/hooks/useAuthCommand.js.map +1 -0
  266. package/dist/src/ui/hooks/useAutoAcceptIndicator.d.ts +10 -0
  267. package/dist/src/ui/hooks/useAutoAcceptIndicator.js +37 -0
  268. package/dist/src/ui/hooks/useAutoAcceptIndicator.js.map +1 -0
  269. package/dist/src/ui/hooks/useBracketedPaste.d.ts +12 -0
  270. package/dist/src/ui/hooks/useBracketedPaste.js +32 -0
  271. package/dist/src/ui/hooks/useBracketedPaste.js.map +1 -0
  272. package/dist/src/ui/hooks/useCompletion.d.ts +21 -0
  273. package/dist/src/ui/hooks/useCompletion.js +372 -0
  274. package/dist/src/ui/hooks/useCompletion.js.map +1 -0
  275. package/dist/src/ui/hooks/useConsoleMessages.d.ts +12 -0
  276. package/dist/src/ui/hooks/useConsoleMessages.js +60 -0
  277. package/dist/src/ui/hooks/useConsoleMessages.js.map +1 -0
  278. package/dist/src/ui/hooks/useEditorSettings.d.ts +16 -0
  279. package/dist/src/ui/hooks/useEditorSettings.js +43 -0
  280. package/dist/src/ui/hooks/useEditorSettings.js.map +1 -0
  281. package/dist/src/ui/hooks/useGeminiStream.d.ts +23 -0
  282. package/dist/src/ui/hooks/useGeminiStream.js +569 -0
  283. package/dist/src/ui/hooks/useGeminiStream.js.map +1 -0
  284. package/dist/src/ui/hooks/useGitBranchName.d.ts +6 -0
  285. package/dist/src/ui/hooks/useGitBranchName.js +61 -0
  286. package/dist/src/ui/hooks/useGitBranchName.js.map +1 -0
  287. package/dist/src/ui/hooks/useHistoryManager.d.ts +22 -0
  288. package/dist/src/ui/hooks/useHistoryManager.js +72 -0
  289. package/dist/src/ui/hooks/useHistoryManager.js.map +1 -0
  290. package/dist/src/ui/hooks/useInputHistory.d.ts +19 -0
  291. package/dist/src/ui/hooks/useInputHistory.js +84 -0
  292. package/dist/src/ui/hooks/useInputHistory.js.map +1 -0
  293. package/dist/src/ui/hooks/useKeypress.d.ts +29 -0
  294. package/dist/src/ui/hooks/useKeypress.js +86 -0
  295. package/dist/src/ui/hooks/useKeypress.js.map +1 -0
  296. package/dist/src/ui/hooks/useLoadingIndicator.d.ts +10 -0
  297. package/dist/src/ui/hooks/useLoadingIndicator.js +44 -0
  298. package/dist/src/ui/hooks/useLoadingIndicator.js.map +1 -0
  299. package/dist/src/ui/hooks/useLogger.d.ts +10 -0
  300. package/dist/src/ui/hooks/useLogger.js +29 -0
  301. package/dist/src/ui/hooks/useLogger.js.map +1 -0
  302. package/dist/src/ui/hooks/usePhraseCycler.d.ts +14 -0
  303. package/dist/src/ui/hooks/usePhraseCycler.js +189 -0
  304. package/dist/src/ui/hooks/usePhraseCycler.js.map +1 -0
  305. package/dist/src/ui/hooks/usePrivacySettings.d.ts +16 -0
  306. package/dist/src/ui/hooks/usePrivacySettings.js +115 -0
  307. package/dist/src/ui/hooks/usePrivacySettings.js.map +1 -0
  308. package/dist/src/ui/hooks/useReactToolScheduler.d.ts +33 -0
  309. package/dist/src/ui/hooks/useReactToolScheduler.js +186 -0
  310. package/dist/src/ui/hooks/useReactToolScheduler.js.map +1 -0
  311. package/dist/src/ui/hooks/useRefreshMemoryCommand.d.ts +6 -0
  312. package/dist/src/ui/hooks/useRefreshMemoryCommand.js +7 -0
  313. package/dist/src/ui/hooks/useRefreshMemoryCommand.js.map +1 -0
  314. package/dist/src/ui/hooks/useShellHistory.d.ts +11 -0
  315. package/dist/src/ui/hooks/useShellHistory.js +89 -0
  316. package/dist/src/ui/hooks/useShellHistory.js.map +1 -0
  317. package/dist/src/ui/hooks/useShowMemoryCommand.d.ts +9 -0
  318. package/dist/src/ui/hooks/useShowMemoryCommand.js +58 -0
  319. package/dist/src/ui/hooks/useShowMemoryCommand.js.map +1 -0
  320. package/dist/src/ui/hooks/useStateAndRef.d.ts +7 -0
  321. package/dist/src/ui/hooks/useStateAndRef.js +26 -0
  322. package/dist/src/ui/hooks/useStateAndRef.js.map +1 -0
  323. package/dist/src/ui/hooks/useTerminalSize.d.ts +9 -0
  324. package/dist/src/ui/hooks/useTerminalSize.js +27 -0
  325. package/dist/src/ui/hooks/useTerminalSize.js.map +1 -0
  326. package/dist/src/ui/hooks/useThemeCommand.d.ts +15 -0
  327. package/dist/src/ui/hooks/useThemeCommand.js +78 -0
  328. package/dist/src/ui/hooks/useThemeCommand.js.map +1 -0
  329. package/dist/src/ui/hooks/useTimer.d.ts +12 -0
  330. package/dist/src/ui/hooks/useTimer.js +58 -0
  331. package/dist/src/ui/hooks/useTimer.js.map +1 -0
  332. package/dist/src/ui/privacy/CloudFreePrivacyNotice.d.ts +12 -0
  333. package/dist/src/ui/privacy/CloudFreePrivacyNotice.js +40 -0
  334. package/dist/src/ui/privacy/CloudFreePrivacyNotice.js.map +1 -0
  335. package/dist/src/ui/privacy/CloudPaidPrivacyNotice.d.ts +10 -0
  336. package/dist/src/ui/privacy/CloudPaidPrivacyNotice.js +17 -0
  337. package/dist/src/ui/privacy/CloudPaidPrivacyNotice.js.map +1 -0
  338. package/dist/src/ui/privacy/GeminiPrivacyNotice.d.ts +10 -0
  339. package/dist/src/ui/privacy/GeminiPrivacyNotice.js +17 -0
  340. package/dist/src/ui/privacy/GeminiPrivacyNotice.js.map +1 -0
  341. package/dist/src/ui/privacy/PrivacyNotice.d.ts +12 -0
  342. package/dist/src/ui/privacy/PrivacyNotice.js +25 -0
  343. package/dist/src/ui/privacy/PrivacyNotice.js.map +1 -0
  344. package/dist/src/ui/themes/ansi-light.d.ts +7 -0
  345. package/dist/src/ui/themes/ansi-light.js +139 -0
  346. package/dist/src/ui/themes/ansi-light.js.map +1 -0
  347. package/dist/src/ui/themes/ansi.d.ts +7 -0
  348. package/dist/src/ui/themes/ansi.js +149 -0
  349. package/dist/src/ui/themes/ansi.js.map +1 -0
  350. package/dist/src/ui/themes/atom-one-dark.d.ts +7 -0
  351. package/dist/src/ui/themes/atom-one-dark.js +136 -0
  352. package/dist/src/ui/themes/atom-one-dark.js.map +1 -0
  353. package/dist/src/ui/themes/ayu-light.d.ts +7 -0
  354. package/dist/src/ui/themes/ayu-light.js +128 -0
  355. package/dist/src/ui/themes/ayu-light.js.map +1 -0
  356. package/dist/src/ui/themes/ayu.d.ts +7 -0
  357. package/dist/src/ui/themes/ayu.js +102 -0
  358. package/dist/src/ui/themes/ayu.js.map +1 -0
  359. package/dist/src/ui/themes/default-light.d.ts +7 -0
  360. package/dist/src/ui/themes/default-light.js +100 -0
  361. package/dist/src/ui/themes/default-light.js.map +1 -0
  362. package/dist/src/ui/themes/default.d.ts +7 -0
  363. package/dist/src/ui/themes/default.js +143 -0
  364. package/dist/src/ui/themes/default.js.map +1 -0
  365. package/dist/src/ui/themes/dracula.d.ts +7 -0
  366. package/dist/src/ui/themes/dracula.js +113 -0
  367. package/dist/src/ui/themes/dracula.js.map +1 -0
  368. package/dist/src/ui/themes/github-dark.d.ts +7 -0
  369. package/dist/src/ui/themes/github-dark.js +136 -0
  370. package/dist/src/ui/themes/github-dark.js.map +1 -0
  371. package/dist/src/ui/themes/github-light.d.ts +7 -0
  372. package/dist/src/ui/themes/github-light.js +138 -0
  373. package/dist/src/ui/themes/github-light.js.map +1 -0
  374. package/dist/src/ui/themes/googlecode.d.ts +7 -0
  375. package/dist/src/ui/themes/googlecode.js +135 -0
  376. package/dist/src/ui/themes/googlecode.js.map +1 -0
  377. package/dist/src/ui/themes/no-color.d.ts +7 -0
  378. package/dist/src/ui/themes/no-color.js +84 -0
  379. package/dist/src/ui/themes/no-color.js.map +1 -0
  380. package/dist/src/ui/themes/shades-of-purple.d.ts +11 -0
  381. package/dist/src/ui/themes/shades-of-purple.js +302 -0
  382. package/dist/src/ui/themes/shades-of-purple.js.map +1 -0
  383. package/dist/src/ui/themes/theme-manager.d.ts +33 -0
  384. package/dist/src/ui/themes/theme-manager.js +109 -0
  385. package/dist/src/ui/themes/theme-manager.js.map +1 -0
  386. package/dist/src/ui/themes/theme.d.ts +67 -0
  387. package/dist/src/ui/themes/theme.js +304 -0
  388. package/dist/src/ui/themes/theme.js.map +1 -0
  389. package/dist/src/ui/themes/xcode.d.ts +7 -0
  390. package/dist/src/ui/themes/xcode.js +143 -0
  391. package/dist/src/ui/themes/xcode.js.map +1 -0
  392. package/dist/src/ui/types.d.ts +172 -0
  393. package/dist/src/ui/types.js +43 -0
  394. package/dist/src/ui/types.js.map +1 -0
  395. package/dist/src/ui/utils/CodeColorizer.d.ts +14 -0
  396. package/dist/src/ui/utils/CodeColorizer.js +97 -0
  397. package/dist/src/ui/utils/CodeColorizer.js.map +1 -0
  398. package/dist/src/ui/utils/InlineMarkdownRenderer.d.ts +16 -0
  399. package/dist/src/ui/utils/InlineMarkdownRenderer.js +104 -0
  400. package/dist/src/ui/utils/InlineMarkdownRenderer.js.map +1 -0
  401. package/dist/src/ui/utils/MarkdownDisplay.d.ts +14 -0
  402. package/dist/src/ui/utils/MarkdownDisplay.js +197 -0
  403. package/dist/src/ui/utils/MarkdownDisplay.js.map +1 -0
  404. package/dist/src/ui/utils/TableRenderer.d.ts +17 -0
  405. package/dist/src/ui/utils/TableRenderer.js +84 -0
  406. package/dist/src/ui/utils/TableRenderer.js.map +1 -0
  407. package/dist/src/ui/utils/commandUtils.d.ts +22 -0
  408. package/dist/src/ui/utils/commandUtils.js +25 -0
  409. package/dist/src/ui/utils/commandUtils.js.map +1 -0
  410. package/dist/src/ui/utils/computeStats.d.ts +10 -0
  411. package/dist/src/ui/utils/computeStats.js +55 -0
  412. package/dist/src/ui/utils/computeStats.js.map +1 -0
  413. package/dist/src/ui/utils/displayUtils.d.ts +17 -0
  414. package/dist/src/ui/utils/displayUtils.js +24 -0
  415. package/dist/src/ui/utils/displayUtils.js.map +1 -0
  416. package/dist/src/ui/utils/errorParsing.d.ts +15 -0
  417. package/dist/src/ui/utils/errorParsing.js +79 -0
  418. package/dist/src/ui/utils/errorParsing.js.map +1 -0
  419. package/dist/src/ui/utils/formatters.d.ts +13 -0
  420. package/dist/src/ui/utils/formatters.js +56 -0
  421. package/dist/src/ui/utils/formatters.js.map +1 -0
  422. package/dist/src/ui/utils/markdownUtilities.d.ts +6 -0
  423. package/dist/src/ui/utils/markdownUtilities.js +110 -0
  424. package/dist/src/ui/utils/markdownUtilities.js.map +1 -0
  425. package/dist/src/ui/utils/textUtils.d.ts +22 -0
  426. package/dist/src/ui/utils/textUtils.js +58 -0
  427. package/dist/src/ui/utils/textUtils.js.map +1 -0
  428. package/dist/src/ui/utils/updateCheck.d.ts +6 -0
  429. package/dist/src/ui/utils/updateCheck.js +36 -0
  430. package/dist/src/ui/utils/updateCheck.js.map +1 -0
  431. package/dist/src/utils/cleanup.d.ts +6 -0
  432. package/dist/src/utils/cleanup.js +19 -0
  433. package/dist/src/utils/cleanup.js.map +1 -0
  434. package/dist/src/utils/package.d.ts +12 -0
  435. package/dist/src/utils/package.js +24 -0
  436. package/dist/src/utils/package.js.map +1 -0
  437. package/dist/src/utils/readStdin.d.ts +6 -0
  438. package/dist/src/utils/readStdin.js +34 -0
  439. package/dist/src/utils/readStdin.js.map +1 -0
  440. package/dist/src/utils/sandbox.d.ts +7 -0
  441. package/dist/src/utils/sandbox.js +680 -0
  442. package/dist/src/utils/sandbox.js.map +1 -0
  443. package/dist/src/utils/startupWarnings.d.ts +6 -0
  444. package/dist/src/utils/startupWarnings.js +40 -0
  445. package/dist/src/utils/startupWarnings.js.map +1 -0
  446. package/dist/src/utils/userStartupWarnings.d.ts +6 -0
  447. package/dist/src/utils/userStartupWarnings.js +33 -0
  448. package/dist/src/utils/userStartupWarnings.js.map +1 -0
  449. package/dist/src/utils/version.d.ts +6 -0
  450. package/dist/src/utils/version.js +11 -0
  451. package/dist/src/utils/version.js.map +1 -0
  452. package/dist/tsconfig.tsbuildinfo +1 -0
  453. package/dist/vitest.config.d.ts +7 -0
  454. package/dist/vitest.config.js +35 -0
  455. package/dist/vitest.config.js.map +1 -0
  456. package/package.json +66 -79
  457. package/LICENSE +0 -202
  458. package/README.md +0 -203
  459. package/README.zh-CN.md +0 -206
  460. package/bundle/api.cjs +0 -166770
  461. package/bundle/api.js +0 -166765
  462. package/bundle/gemini.js +0 -278258
  463. /package/{bundle → dist/src/utils}/sandbox-macos-permissive-closed.sb +0 -0
  464. /package/{bundle → dist/src/utils}/sandbox-macos-permissive-open.sb +0 -0
  465. /package/{bundle → dist/src/utils}/sandbox-macos-permissive-proxied.sb +0 -0
  466. /package/{bundle → dist/src/utils}/sandbox-macos-restrictive-closed.sb +0 -0
  467. /package/{bundle → dist/src/utils}/sandbox-macos-restrictive-open.sb +0 -0
  468. /package/{bundle → dist/src/utils}/sandbox-macos-restrictive-proxied.sb +0 -0
@@ -0,0 +1,212 @@
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 crypto from 'crypto';
5
+ import { colorizeCode } from '../../utils/CodeColorizer.js';
6
+ import { MaxSizedBox } from '../shared/MaxSizedBox.js';
7
+ function parseDiffWithLineNumbers(diffContent) {
8
+ const lines = diffContent.split('\n');
9
+ const result = [];
10
+ let currentOldLine = 0;
11
+ let currentNewLine = 0;
12
+ let inHunk = false;
13
+ const hunkHeaderRegex = /^@@ -(\d+),?\d* \+(\d+),?\d* @@/;
14
+ for (const line of lines) {
15
+ const hunkMatch = line.match(hunkHeaderRegex);
16
+ if (hunkMatch) {
17
+ currentOldLine = parseInt(hunkMatch[1], 10);
18
+ currentNewLine = parseInt(hunkMatch[2], 10);
19
+ inHunk = true;
20
+ result.push({ type: 'hunk', content: line });
21
+ // We need to adjust the starting point because the first line number applies to the *first* actual line change/context,
22
+ // but we increment *before* pushing that line. So decrement here.
23
+ currentOldLine--;
24
+ currentNewLine--;
25
+ continue;
26
+ }
27
+ if (!inHunk) {
28
+ // Skip standard Git header lines more robustly
29
+ if (line.startsWith('--- ') ||
30
+ line.startsWith('+++ ') ||
31
+ line.startsWith('diff --git') ||
32
+ line.startsWith('index ') ||
33
+ line.startsWith('similarity index') ||
34
+ line.startsWith('rename from') ||
35
+ line.startsWith('rename to') ||
36
+ line.startsWith('new file mode') ||
37
+ line.startsWith('deleted file mode'))
38
+ continue;
39
+ // If it's not a hunk or header, skip (or handle as 'other' if needed)
40
+ continue;
41
+ }
42
+ if (line.startsWith('+')) {
43
+ currentNewLine++; // Increment before pushing
44
+ result.push({
45
+ type: 'add',
46
+ newLine: currentNewLine,
47
+ content: line.substring(1),
48
+ });
49
+ }
50
+ else if (line.startsWith('-')) {
51
+ currentOldLine++; // Increment before pushing
52
+ result.push({
53
+ type: 'del',
54
+ oldLine: currentOldLine,
55
+ content: line.substring(1),
56
+ });
57
+ }
58
+ else if (line.startsWith(' ')) {
59
+ currentOldLine++; // Increment before pushing
60
+ currentNewLine++;
61
+ result.push({
62
+ type: 'context',
63
+ oldLine: currentOldLine,
64
+ newLine: currentNewLine,
65
+ content: line.substring(1),
66
+ });
67
+ }
68
+ else if (line.startsWith('\\')) {
69
+ // Handle ""
70
+ result.push({ type: 'other', content: line });
71
+ }
72
+ }
73
+ return result;
74
+ }
75
+ const DEFAULT_TAB_WIDTH = 4; // Spaces per tab for normalization
76
+ export const DiffRenderer = ({ diffContent, filename, tabWidth = DEFAULT_TAB_WIDTH, availableTerminalHeight, terminalWidth, }) => {
77
+ if (!diffContent || typeof diffContent !== 'string') {
78
+ return _jsx(Text, { color: Colors.AccentYellow, children: "No diff content." });
79
+ }
80
+ const parsedLines = parseDiffWithLineNumbers(diffContent);
81
+ if (parsedLines.length === 0) {
82
+ return (_jsx(Box, { borderStyle: "round", borderColor: Colors.Gray, padding: 1, children: _jsx(Text, { dimColor: true, children: "No changes detected." }) }));
83
+ }
84
+ // Check if the diff represents a new file (only additions and header lines)
85
+ const isNewFile = parsedLines.every((line) => line.type === 'add' ||
86
+ line.type === 'hunk' ||
87
+ line.type === 'other' ||
88
+ line.content.startsWith('diff --git') ||
89
+ line.content.startsWith('new file mode'));
90
+ let renderedOutput;
91
+ if (isNewFile) {
92
+ // Extract only the added lines' content
93
+ const addedContent = parsedLines
94
+ .filter((line) => line.type === 'add')
95
+ .map((line) => line.content)
96
+ .join('\n');
97
+ // Attempt to infer language from filename, default to plain text if no filename
98
+ const fileExtension = filename?.split('.').pop() || null;
99
+ const language = fileExtension
100
+ ? getLanguageFromExtension(fileExtension)
101
+ : null;
102
+ renderedOutput = colorizeCode(addedContent, language, availableTerminalHeight, terminalWidth);
103
+ }
104
+ else {
105
+ renderedOutput = renderDiffContent(parsedLines, filename, tabWidth, availableTerminalHeight, terminalWidth);
106
+ }
107
+ return renderedOutput;
108
+ };
109
+ const renderDiffContent = (parsedLines, filename, tabWidth = DEFAULT_TAB_WIDTH, availableTerminalHeight, terminalWidth) => {
110
+ // 1. Normalize whitespace (replace tabs with spaces) *before* further processing
111
+ const normalizedLines = parsedLines.map((line) => ({
112
+ ...line,
113
+ content: line.content.replace(/\t/g, ' '.repeat(tabWidth)),
114
+ }));
115
+ // Filter out non-displayable lines (hunks, potentially 'other') using the normalized list
116
+ const displayableLines = normalizedLines.filter((l) => l.type !== 'hunk' && l.type !== 'other');
117
+ if (displayableLines.length === 0) {
118
+ return (_jsx(Box, { borderStyle: "round", borderColor: Colors.Gray, padding: 1, children: _jsx(Text, { dimColor: true, children: "No changes detected." }) }));
119
+ }
120
+ // Calculate the minimum indentation across all displayable lines
121
+ let baseIndentation = Infinity; // Start high to find the minimum
122
+ for (const line of displayableLines) {
123
+ // Only consider lines with actual content for indentation calculation
124
+ if (line.content.trim() === '')
125
+ continue;
126
+ const firstCharIndex = line.content.search(/\S/); // Find index of first non-whitespace char
127
+ const currentIndent = firstCharIndex === -1 ? 0 : firstCharIndex; // Indent is 0 if no non-whitespace found
128
+ baseIndentation = Math.min(baseIndentation, currentIndent);
129
+ }
130
+ // If baseIndentation remained Infinity (e.g., no displayable lines with content), default to 0
131
+ if (!isFinite(baseIndentation)) {
132
+ baseIndentation = 0;
133
+ }
134
+ const key = filename
135
+ ? `diff-box-${filename}`
136
+ : `diff-box-${crypto.createHash('sha1').update(JSON.stringify(parsedLines)).digest('hex')}`;
137
+ let lastLineNumber = null;
138
+ const MAX_CONTEXT_LINES_WITHOUT_GAP = 5;
139
+ return (_jsx(MaxSizedBox, { maxHeight: availableTerminalHeight, maxWidth: terminalWidth, children: displayableLines.reduce((acc, line, index) => {
140
+ // Determine the relevant line number for gap calculation based on type
141
+ let relevantLineNumberForGapCalc = null;
142
+ if (line.type === 'add' || line.type === 'context') {
143
+ relevantLineNumberForGapCalc = line.newLine ?? null;
144
+ }
145
+ else if (line.type === 'del') {
146
+ // For deletions, the gap is typically in relation to the original file's line numbering
147
+ relevantLineNumberForGapCalc = line.oldLine ?? null;
148
+ }
149
+ if (lastLineNumber !== null &&
150
+ relevantLineNumberForGapCalc !== null &&
151
+ relevantLineNumberForGapCalc >
152
+ lastLineNumber + MAX_CONTEXT_LINES_WITHOUT_GAP + 1) {
153
+ acc.push(_jsx(Box, { children: _jsx(Text, { wrap: "truncate", children: '═'.repeat(terminalWidth) }) }, `gap-${index}`));
154
+ }
155
+ const lineKey = `diff-line-${index}`;
156
+ let gutterNumStr = '';
157
+ let color = undefined;
158
+ let prefixSymbol = ' ';
159
+ let dim = false;
160
+ switch (line.type) {
161
+ case 'add':
162
+ gutterNumStr = (line.newLine ?? '').toString();
163
+ color = 'green';
164
+ prefixSymbol = '+';
165
+ lastLineNumber = line.newLine ?? null;
166
+ break;
167
+ case 'del':
168
+ gutterNumStr = (line.oldLine ?? '').toString();
169
+ color = 'red';
170
+ prefixSymbol = '-';
171
+ // For deletions, update lastLineNumber based on oldLine if it's advancing.
172
+ // This helps manage gaps correctly if there are multiple consecutive deletions
173
+ // or if a deletion is followed by a context line far away in the original file.
174
+ if (line.oldLine !== undefined) {
175
+ lastLineNumber = line.oldLine;
176
+ }
177
+ break;
178
+ case 'context':
179
+ gutterNumStr = (line.newLine ?? '').toString();
180
+ dim = true;
181
+ prefixSymbol = ' ';
182
+ lastLineNumber = line.newLine ?? null;
183
+ break;
184
+ default:
185
+ return acc;
186
+ }
187
+ const displayContent = line.content.substring(baseIndentation);
188
+ acc.push(_jsxs(Box, { flexDirection: "row", children: [_jsxs(Text, { color: Colors.Gray, children: [gutterNumStr.padEnd(4), " "] }), _jsxs(Text, { color: color, dimColor: dim, children: [prefixSymbol, ' '] }), _jsx(Text, { color: color, dimColor: dim, wrap: "wrap", children: displayContent })] }, lineKey));
189
+ return acc;
190
+ }, []) }, key));
191
+ };
192
+ const getLanguageFromExtension = (extension) => {
193
+ const languageMap = {
194
+ js: 'javascript',
195
+ ts: 'typescript',
196
+ py: 'python',
197
+ json: 'json',
198
+ css: 'css',
199
+ html: 'html',
200
+ sh: 'bash',
201
+ md: 'markdown',
202
+ yaml: 'yaml',
203
+ yml: 'yaml',
204
+ txt: 'plaintext',
205
+ java: 'java',
206
+ c: 'c',
207
+ cpp: 'cpp',
208
+ rb: 'ruby',
209
+ };
210
+ return languageMap[extension] || null; // Return null if extension not found
211
+ };
212
+ //# sourceMappingURL=DiffRenderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DiffRenderer.js","sourceRoot":"","sources":["../../../../../src/ui/components/messages/DiffRenderer.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import React from 'react';
7
+ interface ErrorMessageProps {
8
+ text: string;
9
+ }
10
+ export declare const ErrorMessage: React.FC<ErrorMessageProps>;
11
+ export {};
@@ -0,0 +1,9 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Text, Box } from 'ink';
3
+ import { Colors } from '../../colors.js';
4
+ export const ErrorMessage = ({ text }) => {
5
+ const prefix = '✕ ';
6
+ const prefixWidth = prefix.length;
7
+ return (_jsxs(Box, { flexDirection: "row", marginBottom: 1, children: [_jsx(Box, { width: prefixWidth, children: _jsx(Text, { color: Colors.AccentRed, children: prefix }) }), _jsx(Box, { flexGrow: 1, children: _jsx(Text, { wrap: "wrap", color: Colors.AccentRed, children: text }) })] }));
8
+ };
9
+ //# sourceMappingURL=ErrorMessage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ErrorMessage.js","sourceRoot":"","sources":["../../../../../src/ui/components/messages/ErrorMessage.tsx"],"names":[],"mappings":";AAOA,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAMzC,MAAM,CAAC,MAAM,YAAY,GAAgC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE;IACpE,MAAM,MAAM,GAAG,IAAI,CAAC;IACpB,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC;IAElC,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,KAAK,EAAC,YAAY,EAAE,CAAC,aACtC,KAAC,GAAG,IAAC,KAAK,EAAE,WAAW,YACrB,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,SAAS,YAAG,MAAM,GAAQ,GAC1C,EACN,KAAC,GAAG,IAAC,QAAQ,EAAE,CAAC,YACd,KAAC,IAAI,IAAC,IAAI,EAAC,MAAM,EAAC,KAAK,EAAE,MAAM,CAAC,SAAS,YACtC,IAAI,GACA,GACH,IACF,CACP,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import React from 'react';
7
+ interface GeminiMessageProps {
8
+ text: string;
9
+ isPending: boolean;
10
+ availableTerminalHeight?: number;
11
+ terminalWidth: number;
12
+ }
13
+ export declare const GeminiMessage: React.FC<GeminiMessageProps>;
14
+ export {};
@@ -0,0 +1,10 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Text, Box } from 'ink';
3
+ import { MarkdownDisplay } from '../../utils/MarkdownDisplay.js';
4
+ import { Colors } from '../../colors.js';
5
+ export const GeminiMessage = ({ text, isPending, availableTerminalHeight, terminalWidth, }) => {
6
+ const prefix = '✦ ';
7
+ const prefixWidth = prefix.length;
8
+ return (_jsxs(Box, { flexDirection: "row", children: [_jsx(Box, { width: prefixWidth, children: _jsx(Text, { color: Colors.AccentPurple, children: prefix }) }), _jsx(Box, { flexGrow: 1, flexDirection: "column", children: _jsx(MarkdownDisplay, { text: text, isPending: isPending, availableTerminalHeight: availableTerminalHeight, terminalWidth: terminalWidth }) })] }));
9
+ };
10
+ //# sourceMappingURL=GeminiMessage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GeminiMessage.js","sourceRoot":"","sources":["../../../../../src/ui/components/messages/GeminiMessage.tsx"],"names":[],"mappings":";AAOA,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AASzC,MAAM,CAAC,MAAM,aAAa,GAAiC,CAAC,EAC1D,IAAI,EACJ,SAAS,EACT,uBAAuB,EACvB,aAAa,GACd,EAAE,EAAE;IACH,MAAM,MAAM,GAAG,IAAI,CAAC;IACpB,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC;IAElC,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,KAAK,aACtB,KAAC,GAAG,IAAC,KAAK,EAAE,WAAW,YACrB,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,YAAY,YAAG,MAAM,GAAQ,GAC7C,EACN,KAAC,GAAG,IAAC,QAAQ,EAAE,CAAC,EAAE,aAAa,EAAC,QAAQ,YACtC,KAAC,eAAe,IACd,IAAI,EAAE,IAAI,EACV,SAAS,EAAE,SAAS,EACpB,uBAAuB,EAAE,uBAAuB,EAChD,aAAa,EAAE,aAAa,GAC5B,GACE,IACF,CACP,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import React from 'react';
7
+ interface GeminiMessageContentProps {
8
+ text: string;
9
+ isPending: boolean;
10
+ availableTerminalHeight?: number;
11
+ terminalWidth: number;
12
+ }
13
+ export declare const GeminiMessageContent: React.FC<GeminiMessageContentProps>;
14
+ export {};
@@ -0,0 +1,15 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { Box } from 'ink';
3
+ import { MarkdownDisplay } from '../../utils/MarkdownDisplay.js';
4
+ /*
5
+ * Gemini message content is a semi-hacked component. The intention is to represent a partial
6
+ * of GeminiMessage and is only used when a response gets too long. In that instance messages
7
+ * are split into multiple GeminiMessageContent's to enable the root <Static> component in
8
+ * App.tsx to be as performant as humanly possible.
9
+ */
10
+ export const GeminiMessageContent = ({ text, isPending, availableTerminalHeight, terminalWidth, }) => {
11
+ const originalPrefix = '✦ ';
12
+ const prefixWidth = originalPrefix.length;
13
+ return (_jsx(Box, { flexDirection: "column", paddingLeft: prefixWidth, children: _jsx(MarkdownDisplay, { text: text, isPending: isPending, availableTerminalHeight: availableTerminalHeight, terminalWidth: terminalWidth }) }));
14
+ };
15
+ //# sourceMappingURL=GeminiMessageContent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GeminiMessageContent.js","sourceRoot":"","sources":["../../../../../src/ui/components/messages/GeminiMessageContent.tsx"],"names":[],"mappings":";AAOA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AASjE;;;;;GAKG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAwC,CAAC,EACxE,IAAI,EACJ,SAAS,EACT,uBAAuB,EACvB,aAAa,GACd,EAAE,EAAE;IACH,MAAM,cAAc,GAAG,IAAI,CAAC;IAC5B,MAAM,WAAW,GAAG,cAAc,CAAC,MAAM,CAAC;IAE1C,OAAO,CACL,KAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,WAAW,EAAE,WAAW,YAClD,KAAC,eAAe,IACd,IAAI,EAAE,IAAI,EACV,SAAS,EAAE,SAAS,EACpB,uBAAuB,EAAE,uBAAuB,EAChD,aAAa,EAAE,aAAa,GAC5B,GACE,CACP,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import React from 'react';
7
+ interface InfoMessageProps {
8
+ text: string;
9
+ }
10
+ export declare const InfoMessage: React.FC<InfoMessageProps>;
11
+ export {};
@@ -0,0 +1,9 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Text, Box } from 'ink';
3
+ import { Colors } from '../../colors.js';
4
+ export const InfoMessage = ({ text }) => {
5
+ const prefix = 'ℹ ';
6
+ const prefixWidth = prefix.length;
7
+ return (_jsxs(Box, { flexDirection: "row", marginTop: 1, children: [_jsx(Box, { width: prefixWidth, children: _jsx(Text, { color: Colors.AccentYellow, children: prefix }) }), _jsx(Box, { flexGrow: 1, children: _jsx(Text, { wrap: "wrap", color: Colors.AccentYellow, children: text }) })] }));
8
+ };
9
+ //# sourceMappingURL=InfoMessage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InfoMessage.js","sourceRoot":"","sources":["../../../../../src/ui/components/messages/InfoMessage.tsx"],"names":[],"mappings":";AAOA,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAMzC,MAAM,CAAC,MAAM,WAAW,GAA+B,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE;IAClE,MAAM,MAAM,GAAG,IAAI,CAAC;IACpB,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC;IAElC,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,KAAK,EAAC,SAAS,EAAE,CAAC,aACnC,KAAC,GAAG,IAAC,KAAK,EAAE,WAAW,YACrB,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,YAAY,YAAG,MAAM,GAAQ,GAC7C,EACN,KAAC,GAAG,IAAC,QAAQ,EAAE,CAAC,YACd,KAAC,IAAI,IAAC,IAAI,EAAC,MAAM,EAAC,KAAK,EAAE,MAAM,CAAC,YAAY,YACzC,IAAI,GACA,GACH,IACF,CACP,CAAC;AACJ,CAAC,CAAC"}
@@ -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
+ import { ToolCallConfirmationDetails, Config } from '@google/gemini-cli-core';
8
+ export interface ToolConfirmationMessageProps {
9
+ confirmationDetails: ToolCallConfirmationDetails;
10
+ callId?: string;
11
+ toolName?: string;
12
+ config?: Config;
13
+ isFocused?: boolean;
14
+ availableTerminalHeight?: number;
15
+ terminalWidth: number;
16
+ }
17
+ export declare const ToolConfirmationMessage: React.FC<ToolConfirmationMessageProps>;
@@ -0,0 +1,279 @@
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 { useRef } from 'react';
8
+ import { Box, Text, useInput } from 'ink';
9
+ import { DiffRenderer } from './DiffRenderer.js';
10
+ import { Colors } from '../../colors.js';
11
+ import { ToolConfirmationOutcome, } from '@google/gemini-cli-core';
12
+ import { RadioButtonSelect, } from '../shared/RadioButtonSelect.js';
13
+ import { MaxSizedBox } from '../shared/MaxSizedBox.js';
14
+ import { DataCollector } from '../../../telemetry/dataCollector.js';
15
+ export const ToolConfirmationMessage = ({ confirmationDetails, callId, toolName, isFocused = true, availableTerminalHeight, terminalWidth, config, }) => {
16
+ const { onConfirm } = confirmationDetails;
17
+ const childWidth = terminalWidth - 2; // 2 for padding
18
+ const dataCollector = useRef(new DataCollector());
19
+ const confirmationStartTime = useRef(Date.now());
20
+ // 获取选择原因函数 - 移到组件内部
21
+ const getChoiceReason = (choice, details) => {
22
+ try {
23
+ switch (choice) {
24
+ case ToolConfirmationOutcome.ProceedOnce:
25
+ return 'User chose to allow this operation once';
26
+ case ToolConfirmationOutcome.ProceedAlways:
27
+ return 'User chose to always allow this operation';
28
+ case ToolConfirmationOutcome.ProceedAlwaysServer:
29
+ return 'User chose to always allow all tools from this server';
30
+ case ToolConfirmationOutcome.ProceedAlwaysTool:
31
+ return 'User chose to always allow this specific tool';
32
+ case ToolConfirmationOutcome.ModifyWithEditor:
33
+ return 'User chose to modify with external editor';
34
+ case ToolConfirmationOutcome.Cancel:
35
+ return 'User cancelled the operation';
36
+ default:
37
+ return 'Unknown choice';
38
+ }
39
+ }
40
+ catch (error) {
41
+ console.warn('Error getting choice reason:', error);
42
+ return 'Unknown choice';
43
+ }
44
+ };
45
+ useInput((_, key) => {
46
+ if (!isFocused)
47
+ return;
48
+ if (key.escape) {
49
+ onConfirm(ToolConfirmationOutcome.Cancel);
50
+ }
51
+ });
52
+ const handleSelect = async (item) => {
53
+ const choiceDuration = Date.now() - confirmationStartTime.current;
54
+ try {
55
+ // 准备确认数据 - 添加错误处理和默认值
56
+ const confirmationData = {
57
+ sessionId: (() => {
58
+ try {
59
+ return config?.getSessionId?.() || 'unknown';
60
+ }
61
+ catch (error) {
62
+ console.warn('Error getting session ID:', error);
63
+ return 'unknown';
64
+ }
65
+ })(),
66
+ callId: (() => {
67
+ try {
68
+ return callId || confirmationDetails?.callId || 'unknown';
69
+ }
70
+ catch (error) {
71
+ console.warn('Error getting call ID:', error);
72
+ return 'unknown';
73
+ }
74
+ })(),
75
+ toolName: (() => {
76
+ try {
77
+ // Use passed toolName prop first, then fallback to confirmationDetails
78
+ if (toolName) {
79
+ return toolName;
80
+ }
81
+ // For MCP tools, use toolName property, for other tools try tool_name
82
+ if (confirmationDetails?.type === 'mcp') {
83
+ return confirmationDetails?.toolName || 'unknown';
84
+ }
85
+ // For exec tools, use rootCommand as tool name
86
+ if (confirmationDetails?.type === 'exec') {
87
+ return confirmationDetails?.rootCommand || 'unknown';
88
+ }
89
+ // For other tools, try various property names
90
+ return confirmationDetails?.tool_name ||
91
+ confirmationDetails?.toolName ||
92
+ confirmationDetails?.name ||
93
+ 'unknown';
94
+ }
95
+ catch (error) {
96
+ console.warn('Error getting tool name:', error);
97
+ return 'unknown';
98
+ }
99
+ })(),
100
+ toolType: (() => {
101
+ try {
102
+ return confirmationDetails?.type || 'unknown';
103
+ }
104
+ catch (error) {
105
+ console.warn('Error getting tool type:', error);
106
+ return 'unknown';
107
+ }
108
+ })(),
109
+ toolDescription: (() => {
110
+ try {
111
+ return confirmationDetails?.tool_description || '';
112
+ }
113
+ catch (error) {
114
+ console.warn('Error getting tool description:', error);
115
+ return '';
116
+ }
117
+ })(),
118
+ userChoice: item,
119
+ choiceDurationMs: choiceDuration,
120
+ choiceReason: getChoiceReason(item, confirmationDetails),
121
+ projectPath: (() => {
122
+ try {
123
+ return process.cwd();
124
+ }
125
+ catch (error) {
126
+ console.warn('Error getting project path:', error);
127
+ return '';
128
+ }
129
+ })(),
130
+ workingDirectory: (() => {
131
+ try {
132
+ return process.cwd();
133
+ }
134
+ catch (error) {
135
+ console.warn('Error getting working directory:', error);
136
+ return '';
137
+ }
138
+ })(),
139
+ terminalWidth: terminalWidth || 0,
140
+ terminalHeight: availableTerminalHeight || 0,
141
+ availableHeight: availableTerminalHeight || 0,
142
+ };
143
+ // 调试信息
144
+ if (process.env.DEBUG === '1') {
145
+ console.log('🔧 ToolConfirmationMessage - confirmationData being sent to DataCollector:', JSON.stringify(confirmationData, null, 2));
146
+ }
147
+ // 收集数据到Langfuse
148
+ const result = await dataCollector.current.collectConfirmationData(confirmationData);
149
+ // 只在DEBUG模式下显示详细结果
150
+ if (process.env.DEBUG === '1') {
151
+ if (result.success) {
152
+ console.log(`Data collected to Langfuse with trace ID: ${result.traceId}`);
153
+ }
154
+ else {
155
+ console.warn('Failed to collect data to Langfuse:', result.reason || result.error);
156
+ }
157
+ }
158
+ // 如果用户选择"总是允许",记录这个选择以便后续自动收集
159
+ if (item === ToolConfirmationOutcome.ProceedAlways ||
160
+ item === ToolConfirmationOutcome.ProceedAlwaysTool ||
161
+ item === ToolConfirmationOutcome.ProceedAlwaysServer) {
162
+ try {
163
+ // 存储用户选择,用于后续自动收集
164
+ if (typeof window !== 'undefined' && window.localStorage) {
165
+ localStorage.setItem('mpd_llm_auto_approve', JSON.stringify({
166
+ tool_name: confirmationData.toolName,
167
+ tool_type: confirmationData.toolType,
168
+ user_choice: item,
169
+ timestamp: new Date().toISOString(),
170
+ session_id: confirmationData.sessionId,
171
+ }));
172
+ }
173
+ }
174
+ catch (error) {
175
+ console.warn('Failed to store auto-approve preference:', error);
176
+ }
177
+ }
178
+ // 调用原始确认回调
179
+ onConfirm(item);
180
+ }
181
+ catch (error) {
182
+ console.error('Error in confirmation handling:', error);
183
+ // 即使数据收集失败,也要继续执行确认
184
+ onConfirm(item);
185
+ }
186
+ };
187
+ let bodyContent = null; // Removed contextDisplay here
188
+ let question;
189
+ const options = new Array();
190
+ // Body content is now the DiffRenderer, passing filename to it
191
+ // The bordered box is removed from here and handled within DiffRenderer
192
+ function availableBodyContentHeight() {
193
+ if (options.length === 0) {
194
+ // This should not happen in practice as options are always added before this is called.
195
+ throw new Error('Options not provided for confirmation message');
196
+ }
197
+ if (availableTerminalHeight === undefined) {
198
+ return undefined;
199
+ }
200
+ // Calculate the vertical space (in lines) consumed by UI elements
201
+ // surrounding the main body content.
202
+ const PADDING_OUTER_Y = 2; // Main container has `padding={1}` (top & bottom).
203
+ const MARGIN_BODY_BOTTOM = 1; // margin on the body container.
204
+ const HEIGHT_QUESTION = 1; // The question text is one line.
205
+ const MARGIN_QUESTION_BOTTOM = 1; // Margin on the question container.
206
+ const HEIGHT_OPTIONS = options.length; // Each option in the radio select takes one line.
207
+ const surroundingElementsHeight = PADDING_OUTER_Y +
208
+ MARGIN_BODY_BOTTOM +
209
+ HEIGHT_QUESTION +
210
+ MARGIN_QUESTION_BOTTOM +
211
+ HEIGHT_OPTIONS;
212
+ return Math.max(availableTerminalHeight - surroundingElementsHeight, 1);
213
+ }
214
+ if (confirmationDetails.type === 'edit') {
215
+ if (confirmationDetails.isModifying) {
216
+ return (_jsxs(Box, { minWidth: "90%", borderStyle: "round", borderColor: Colors.Gray, justifyContent: "space-around", padding: 1, overflow: "hidden", children: [_jsx(Text, { children: "Modify in progress: " }), _jsx(Text, { color: Colors.AccentGreen, children: "Save and close external editor to continue" })] }));
217
+ }
218
+ question = `Apply this change?`;
219
+ options.push({
220
+ label: 'Yes, allow once',
221
+ value: ToolConfirmationOutcome.ProceedOnce,
222
+ }, {
223
+ label: 'Yes, allow always',
224
+ value: ToolConfirmationOutcome.ProceedAlways,
225
+ }, {
226
+ label: 'Modify with external editor',
227
+ value: ToolConfirmationOutcome.ModifyWithEditor,
228
+ }, { label: 'No (esc)', value: ToolConfirmationOutcome.Cancel });
229
+ bodyContent = (_jsx(DiffRenderer, { diffContent: confirmationDetails.fileDiff, filename: confirmationDetails.fileName, availableTerminalHeight: availableBodyContentHeight(), terminalWidth: childWidth }));
230
+ }
231
+ else if (confirmationDetails.type === 'exec') {
232
+ const executionProps = confirmationDetails;
233
+ question = `Allow execution?`;
234
+ options.push({
235
+ label: 'Yes, allow once',
236
+ value: ToolConfirmationOutcome.ProceedOnce,
237
+ }, {
238
+ label: `Yes, allow always "${executionProps.rootCommand} ..."`,
239
+ value: ToolConfirmationOutcome.ProceedAlways,
240
+ }, { label: 'No (esc)', value: ToolConfirmationOutcome.Cancel });
241
+ let bodyContentHeight = availableBodyContentHeight();
242
+ if (bodyContentHeight !== undefined) {
243
+ bodyContentHeight -= 2; // Account for padding;
244
+ }
245
+ bodyContent = (_jsx(Box, { flexDirection: "column", children: _jsx(Box, { paddingX: 1, marginLeft: 1, children: _jsx(MaxSizedBox, { maxHeight: bodyContentHeight, maxWidth: Math.max(childWidth - 4, 1), children: _jsx(Box, { children: _jsx(Text, { color: Colors.AccentCyan, children: executionProps.command }) }) }) }) }));
246
+ }
247
+ else if (confirmationDetails.type === 'info') {
248
+ const infoProps = confirmationDetails;
249
+ const displayUrls = infoProps.urls &&
250
+ !(infoProps.urls.length === 1 && infoProps.urls[0] === infoProps.prompt);
251
+ question = `Do you want to proceed?`;
252
+ options.push({
253
+ label: 'Yes, allow once',
254
+ value: ToolConfirmationOutcome.ProceedOnce,
255
+ }, {
256
+ label: 'Yes, allow always',
257
+ value: ToolConfirmationOutcome.ProceedAlways,
258
+ }, { label: 'No (esc)', value: ToolConfirmationOutcome.Cancel });
259
+ bodyContent = (_jsxs(Box, { flexDirection: "column", paddingX: 1, marginLeft: 1, children: [_jsx(Text, { color: Colors.AccentCyan, children: infoProps.prompt }), displayUrls && infoProps.urls && infoProps.urls.length > 0 && (_jsxs(Box, { flexDirection: "column", marginTop: 1, children: [_jsx(Text, { children: "URLs to fetch:" }), infoProps.urls.map((url) => (_jsxs(Text, { children: [" - ", url] }, url)))] }))] }));
260
+ }
261
+ else {
262
+ // mcp tool confirmation
263
+ const mcpProps = confirmationDetails;
264
+ bodyContent = (_jsxs(Box, { flexDirection: "column", paddingX: 1, marginLeft: 1, children: [_jsxs(Text, { color: Colors.AccentCyan, children: ["MCP Server: ", mcpProps.serverName] }), _jsxs(Text, { color: Colors.AccentCyan, children: ["Tool: ", mcpProps.toolName] }), _jsxs(Box, { flexDirection: "column", marginTop: 1, children: [_jsx(Text, { color: Colors.Foreground, children: "Parameters:" }), _jsx(Box, { marginLeft: 1, children: _jsx(Text, { color: Colors.Gray, children: mcpProps.args ? JSON.stringify(mcpProps.args, null, 2) : 'No parameters' }) })] })] }));
265
+ question = `Allow execution of MCP tool "${mcpProps.toolName}" from server "${mcpProps.serverName}"?`;
266
+ options.push({
267
+ label: 'Yes, allow once',
268
+ value: ToolConfirmationOutcome.ProceedOnce,
269
+ }, {
270
+ label: `Yes, always allow tool "${mcpProps.toolName}" from server "${mcpProps.serverName}"`,
271
+ value: ToolConfirmationOutcome.ProceedAlwaysTool, // Cast until types are updated
272
+ }, {
273
+ label: `Yes, always allow all tools from server "${mcpProps.serverName}"`,
274
+ value: ToolConfirmationOutcome.ProceedAlwaysServer,
275
+ }, { label: 'No (esc)', value: ToolConfirmationOutcome.Cancel });
276
+ }
277
+ return (_jsxs(Box, { flexDirection: "column", padding: 1, width: childWidth, children: [_jsx(Box, { flexGrow: 1, flexShrink: 1, overflow: "hidden", marginBottom: 1, children: bodyContent }), _jsx(Box, { marginBottom: 1, flexShrink: 0, children: _jsx(Text, { wrap: "truncate", children: question }) }), _jsx(Box, { flexShrink: 0, children: _jsx(RadioButtonSelect, { items: options, onSelect: handleSelect, isFocused: isFocused }) })] }));
278
+ };
279
+ //# sourceMappingURL=ToolConfirmationMessage.js.map