@machina.ai/cell-cli 1.0.17-rc1 → 1.0.21-rc1

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 (490) hide show
  1. package/dist/package.json +11 -8
  2. package/dist/src/commands/mcp/add.d.ts +7 -0
  3. package/dist/src/commands/mcp/add.js +166 -0
  4. package/dist/src/commands/mcp/add.js.map +1 -0
  5. package/dist/src/commands/mcp/list.d.ts +8 -0
  6. package/dist/src/commands/mcp/list.js +110 -0
  7. package/dist/src/commands/mcp/list.js.map +1 -0
  8. package/dist/src/commands/mcp/remove.d.ts +7 -0
  9. package/dist/src/commands/mcp/remove.js +44 -0
  10. package/dist/src/commands/mcp/remove.js.map +1 -0
  11. package/dist/src/commands/mcp.d.ts +7 -0
  12. package/dist/src/commands/mcp.js +23 -0
  13. package/dist/src/commands/mcp.js.map +1 -0
  14. package/dist/src/config/auth.test.d.ts +6 -0
  15. package/dist/src/config/auth.test.js +28 -0
  16. package/dist/src/config/auth.test.js.map +1 -0
  17. package/dist/src/config/config.d.ts +3 -3
  18. package/dist/src/config/config.js +138 -69
  19. package/dist/src/config/config.js.map +1 -1
  20. package/dist/src/config/keyBindings.d.ts +66 -0
  21. package/dist/src/config/keyBindings.js +141 -0
  22. package/dist/src/config/keyBindings.js.map +1 -0
  23. package/dist/src/config/keyBindings.test.d.ts +6 -0
  24. package/dist/src/config/keyBindings.test.js +51 -0
  25. package/dist/src/config/keyBindings.test.js.map +1 -0
  26. package/dist/src/config/sandboxConfig.js +3 -3
  27. package/dist/src/config/sandboxConfig.js.map +1 -1
  28. package/dist/src/config/settings.d.ts +3 -54
  29. package/dist/src/config/settings.js +58 -38
  30. package/dist/src/config/settings.js.map +1 -1
  31. package/dist/src/config/settingsSchema.d.ts +533 -0
  32. package/dist/src/config/settingsSchema.js +507 -0
  33. package/dist/src/config/settingsSchema.js.map +1 -0
  34. package/dist/src/config/settingsSchema.test.d.ts +6 -0
  35. package/dist/src/config/settingsSchema.test.js +195 -0
  36. package/dist/src/config/settingsSchema.test.js.map +1 -0
  37. package/dist/src/config/trustedFolders.d.ts +37 -0
  38. package/dist/src/config/trustedFolders.js +118 -0
  39. package/dist/src/config/trustedFolders.js.map +1 -0
  40. package/dist/src/config/trustedFolders.test.d.ts +6 -0
  41. package/dist/src/config/trustedFolders.test.js +160 -0
  42. package/dist/src/config/trustedFolders.test.js.map +1 -0
  43. package/dist/src/gemini.js +54 -37
  44. package/dist/src/gemini.js.map +1 -1
  45. package/dist/src/gemini.test.d.ts +6 -0
  46. package/dist/src/gemini.test.js +193 -0
  47. package/dist/src/gemini.test.js.map +1 -0
  48. package/dist/src/generated/git-commit.d.ts +2 -1
  49. package/dist/src/generated/git-commit.js +2 -1
  50. package/dist/src/generated/git-commit.js.map +1 -1
  51. package/dist/src/nonInteractiveCli.js +22 -17
  52. package/dist/src/nonInteractiveCli.js.map +1 -1
  53. package/dist/src/services/BuiltinCommandLoader.js +5 -2
  54. package/dist/src/services/BuiltinCommandLoader.js.map +1 -1
  55. package/dist/src/services/BuiltinCommandLoader.test.d.ts +6 -0
  56. package/dist/src/services/BuiltinCommandLoader.test.js +108 -0
  57. package/dist/src/services/BuiltinCommandLoader.test.js.map +1 -0
  58. package/dist/src/services/CommandService.test.d.ts +6 -0
  59. package/dist/src/services/CommandService.test.js +232 -0
  60. package/dist/src/services/CommandService.test.js.map +1 -0
  61. package/dist/src/services/FileCommandLoader.js +10 -8
  62. package/dist/src/services/FileCommandLoader.js.map +1 -1
  63. package/dist/src/services/McpPromptLoader.js +3 -3
  64. package/dist/src/services/McpPromptLoader.js.map +1 -1
  65. package/dist/src/services/prompt-processors/argumentProcessor.d.ts +2 -7
  66. package/dist/src/services/prompt-processors/argumentProcessor.js +2 -10
  67. package/dist/src/services/prompt-processors/argumentProcessor.js.map +1 -1
  68. package/dist/src/services/prompt-processors/shellProcessor.d.ts +16 -13
  69. package/dist/src/services/prompt-processors/shellProcessor.js +133 -40
  70. package/dist/src/services/prompt-processors/shellProcessor.js.map +1 -1
  71. package/dist/src/services/prompt-processors/types.d.ts +2 -0
  72. package/dist/src/services/prompt-processors/types.js +2 -0
  73. package/dist/src/services/prompt-processors/types.js.map +1 -1
  74. package/dist/src/test-utils/customMatchers.d.ts +14 -0
  75. package/dist/src/test-utils/customMatchers.js +46 -0
  76. package/dist/src/test-utils/customMatchers.js.map +1 -0
  77. package/dist/src/test-utils/mockCommandContext.d.ts +18 -0
  78. package/dist/src/test-utils/mockCommandContext.js +86 -0
  79. package/dist/src/test-utils/mockCommandContext.js.map +1 -0
  80. package/dist/src/test-utils/mockCommandContext.test.d.ts +6 -0
  81. package/dist/src/test-utils/mockCommandContext.test.js +51 -0
  82. package/dist/src/test-utils/mockCommandContext.test.js.map +1 -0
  83. package/dist/src/test-utils/render.d.ts +8 -0
  84. package/dist/src/test-utils/render.js +10 -0
  85. package/dist/src/test-utils/render.js.map +1 -0
  86. package/dist/src/ui/App.js +146 -37
  87. package/dist/src/ui/App.js.map +1 -1
  88. package/dist/src/ui/IdeIntegrationNudge.d.ts +16 -0
  89. package/dist/src/ui/IdeIntegrationNudge.js +52 -0
  90. package/dist/src/ui/IdeIntegrationNudge.js.map +1 -0
  91. package/dist/src/ui/commands/aboutCommand.js +9 -5
  92. package/dist/src/ui/commands/aboutCommand.js.map +1 -1
  93. package/dist/src/ui/commands/bugCommand.js +13 -5
  94. package/dist/src/ui/commands/bugCommand.js.map +1 -1
  95. package/dist/src/ui/commands/chatCommand.js +23 -6
  96. package/dist/src/ui/commands/chatCommand.js.map +1 -1
  97. package/dist/src/ui/commands/directoryCommand.js +2 -4
  98. package/dist/src/ui/commands/directoryCommand.js.map +1 -1
  99. package/dist/src/ui/commands/docsCommand.js +1 -1
  100. package/dist/src/ui/commands/docsCommand.js.map +1 -1
  101. package/dist/src/ui/commands/ideCommand.js +110 -42
  102. package/dist/src/ui/commands/ideCommand.js.map +1 -1
  103. package/dist/src/ui/commands/mcpCommand.js +7 -3
  104. package/dist/src/ui/commands/mcpCommand.js.map +1 -1
  105. package/dist/src/ui/commands/settingsCommand.d.ts +7 -0
  106. package/dist/src/ui/commands/settingsCommand.js +16 -0
  107. package/dist/src/ui/commands/settingsCommand.js.map +1 -0
  108. package/dist/src/ui/commands/setupGithubCommand.js +86 -19
  109. package/dist/src/ui/commands/setupGithubCommand.js.map +1 -1
  110. package/dist/src/ui/commands/setupGithubCommand.test.d.ts +6 -0
  111. package/dist/src/ui/commands/setupGithubCommand.test.js +74 -0
  112. package/dist/src/ui/commands/setupGithubCommand.test.js.map +1 -0
  113. package/dist/src/ui/commands/terminalSetupCommand.d.ts +13 -0
  114. package/dist/src/ui/commands/terminalSetupCommand.js +41 -0
  115. package/dist/src/ui/commands/terminalSetupCommand.js.map +1 -0
  116. package/dist/src/ui/commands/types.d.ts +14 -2
  117. package/dist/src/ui/commands/types.js.map +1 -1
  118. package/dist/src/ui/components/AboutBox.d.ts +1 -0
  119. package/dist/src/ui/components/AboutBox.js +1 -1
  120. package/dist/src/ui/components/AboutBox.js.map +1 -1
  121. package/dist/src/ui/components/AsciiArt.d.ts +2 -1
  122. package/dist/src/ui/components/AsciiArt.js +22 -11
  123. package/dist/src/ui/components/AsciiArt.js.map +1 -1
  124. package/dist/src/ui/components/AuthDialog.js +12 -6
  125. package/dist/src/ui/components/AuthDialog.js.map +1 -1
  126. package/dist/src/ui/components/AuthDialog.test.d.ts +6 -0
  127. package/dist/src/ui/components/AuthDialog.test.js +114 -0
  128. package/dist/src/ui/components/AuthDialog.test.js.map +1 -0
  129. package/dist/src/ui/components/AuthInProgress.js +5 -4
  130. package/dist/src/ui/components/AuthInProgress.js.map +1 -1
  131. package/dist/src/ui/components/ContextSummaryDisplay.js +22 -25
  132. package/dist/src/ui/components/ContextSummaryDisplay.js.map +1 -1
  133. package/dist/src/ui/components/ContextUsageDisplay.d.ts +9 -0
  134. package/dist/src/ui/components/ContextUsageDisplay.js +14 -0
  135. package/dist/src/ui/components/ContextUsageDisplay.js.map +1 -0
  136. package/dist/src/ui/components/DebugProfiler.js +5 -4
  137. package/dist/src/ui/components/DebugProfiler.js.map +1 -1
  138. package/dist/src/ui/components/EditorSettingsDialog.js +6 -5
  139. package/dist/src/ui/components/EditorSettingsDialog.js.map +1 -1
  140. package/dist/src/ui/components/FolderTrustDialog.d.ts +16 -0
  141. package/dist/src/ui/components/FolderTrustDialog.js +39 -0
  142. package/dist/src/ui/components/FolderTrustDialog.js.map +1 -0
  143. package/dist/src/ui/components/FolderTrustDialog.test.d.ts +6 -0
  144. package/dist/src/ui/components/FolderTrustDialog.test.js +26 -0
  145. package/dist/src/ui/components/FolderTrustDialog.test.js.map +1 -0
  146. package/dist/src/ui/components/Footer.d.ts +1 -0
  147. package/dist/src/ui/components/Footer.js +16 -6
  148. package/dist/src/ui/components/Footer.js.map +1 -1
  149. package/dist/src/ui/components/Header.d.ts +0 -1
  150. package/dist/src/ui/components/Header.js +13 -5
  151. package/dist/src/ui/components/Header.js.map +1 -1
  152. package/dist/src/ui/components/Header.test.d.ts +6 -0
  153. package/dist/src/ui/components/Header.test.js +44 -0
  154. package/dist/src/ui/components/Header.test.js.map +1 -0
  155. package/dist/src/ui/components/HistoryItemDisplay.js +1 -1
  156. package/dist/src/ui/components/HistoryItemDisplay.js.map +1 -1
  157. package/dist/src/ui/components/HistoryItemDisplay.test.d.ts +6 -0
  158. package/dist/src/ui/components/HistoryItemDisplay.test.js +91 -0
  159. package/dist/src/ui/components/HistoryItemDisplay.test.js.map +1 -0
  160. package/dist/src/ui/components/InputPrompt.d.ts +1 -0
  161. package/dist/src/ui/components/InputPrompt.js +98 -35
  162. package/dist/src/ui/components/InputPrompt.js.map +1 -1
  163. package/dist/src/ui/components/LoadingIndicator.js +10 -5
  164. package/dist/src/ui/components/LoadingIndicator.js.map +1 -1
  165. package/dist/src/ui/components/LoadingIndicator.test.d.ts +6 -0
  166. package/dist/src/ui/components/LoadingIndicator.test.js +190 -0
  167. package/dist/src/ui/components/LoadingIndicator.test.js.map +1 -0
  168. package/dist/src/ui/components/SettingsDialog.d.ts +14 -0
  169. package/dist/src/ui/components/SettingsDialog.js +519 -0
  170. package/dist/src/ui/components/SettingsDialog.js.map +1 -0
  171. package/dist/src/ui/components/SettingsDialog.test.d.ts +6 -0
  172. package/dist/src/ui/components/SettingsDialog.test.js +568 -0
  173. package/dist/src/ui/components/SettingsDialog.test.js.map +1 -0
  174. package/dist/src/ui/components/ShellConfirmationDialog.js +7 -5
  175. package/dist/src/ui/components/ShellConfirmationDialog.js.map +1 -1
  176. package/dist/src/ui/components/ShellConfirmationDialog.test.d.ts +6 -0
  177. package/dist/src/ui/components/ShellConfirmationDialog.test.js +40 -0
  178. package/dist/src/ui/components/ShellConfirmationDialog.test.js.map +1 -0
  179. package/dist/src/ui/components/StatsDisplay.js +8 -7
  180. package/dist/src/ui/components/StatsDisplay.js.map +1 -1
  181. package/dist/src/ui/components/SuggestionsDisplay.js +1 -1
  182. package/dist/src/ui/components/SuggestionsDisplay.js.map +1 -1
  183. package/dist/src/ui/components/ThemeDialog.js +10 -20
  184. package/dist/src/ui/components/ThemeDialog.js.map +1 -1
  185. package/dist/src/ui/components/messages/DiffRenderer.js +10 -1
  186. package/dist/src/ui/components/messages/DiffRenderer.js.map +1 -1
  187. package/dist/src/ui/components/messages/DiffRenderer.test.d.ts +6 -0
  188. package/dist/src/ui/components/messages/DiffRenderer.test.js +239 -0
  189. package/dist/src/ui/components/messages/DiffRenderer.test.js.map +1 -0
  190. package/dist/src/ui/components/messages/InfoMessage.js +2 -1
  191. package/dist/src/ui/components/messages/InfoMessage.js.map +1 -1
  192. package/dist/src/ui/components/messages/ToolConfirmationMessage.js +36 -14
  193. package/dist/src/ui/components/messages/ToolConfirmationMessage.js.map +1 -1
  194. package/dist/src/ui/components/messages/ToolConfirmationMessage.test.d.ts +6 -0
  195. package/dist/src/ui/components/messages/ToolConfirmationMessage.test.js +37 -0
  196. package/dist/src/ui/components/messages/ToolConfirmationMessage.test.js.map +1 -0
  197. package/dist/src/ui/components/messages/ToolMessage.test.d.ts +6 -0
  198. package/dist/src/ui/components/messages/ToolMessage.test.js +118 -0
  199. package/dist/src/ui/components/messages/ToolMessage.test.js.map +1 -0
  200. package/dist/src/ui/components/shared/MaxSizedBox.js +1 -1
  201. package/dist/src/ui/components/shared/MaxSizedBox.js.map +1 -1
  202. package/dist/src/ui/components/shared/MaxSizedBox.test.d.ts +6 -0
  203. package/dist/src/ui/components/shared/MaxSizedBox.test.js +154 -0
  204. package/dist/src/ui/components/shared/MaxSizedBox.test.js.map +1 -0
  205. package/dist/src/ui/components/shared/RadioButtonSelect.js +11 -9
  206. package/dist/src/ui/components/shared/RadioButtonSelect.js.map +1 -1
  207. package/dist/src/ui/components/shared/RadioButtonSelect.test.d.ts +6 -0
  208. package/dist/src/ui/components/shared/RadioButtonSelect.test.js +111 -0
  209. package/dist/src/ui/components/shared/RadioButtonSelect.test.js.map +1 -0
  210. package/dist/src/ui/components/shared/text-buffer.d.ts +17 -4
  211. package/dist/src/ui/components/shared/text-buffer.js +262 -80
  212. package/dist/src/ui/components/shared/text-buffer.js.map +1 -1
  213. package/dist/src/ui/components/shared/vim-buffer-actions.js +139 -152
  214. package/dist/src/ui/components/shared/vim-buffer-actions.js.map +1 -1
  215. package/dist/src/ui/contexts/KeypressContext.d.ts +30 -0
  216. package/dist/src/ui/contexts/KeypressContext.js +309 -0
  217. package/dist/src/ui/contexts/KeypressContext.js.map +1 -0
  218. package/dist/src/ui/contexts/KeypressContext.test.d.ts +6 -0
  219. package/dist/src/ui/contexts/KeypressContext.test.js +219 -0
  220. package/dist/src/ui/contexts/KeypressContext.test.js.map +1 -0
  221. package/dist/src/ui/contexts/SessionContext.d.ts +3 -0
  222. package/dist/src/ui/contexts/SessionContext.js +2 -1
  223. package/dist/src/ui/contexts/SessionContext.js.map +1 -1
  224. package/dist/src/ui/contexts/SettingsContext.d.ts +9 -0
  225. package/dist/src/ui/contexts/SettingsContext.js +15 -0
  226. package/dist/src/ui/contexts/SettingsContext.js.map +1 -0
  227. package/dist/src/ui/hooks/atCommandProcessor.js +16 -13
  228. package/dist/src/ui/hooks/atCommandProcessor.js.map +1 -1
  229. package/dist/src/ui/hooks/atCommandProcessor.test.d.ts +6 -0
  230. package/dist/src/ui/hooks/atCommandProcessor.test.js +809 -0
  231. package/dist/src/ui/hooks/atCommandProcessor.test.js.map +1 -0
  232. package/dist/src/ui/hooks/shellCommandProcessor.test.d.ts +6 -0
  233. package/dist/src/ui/hooks/shellCommandProcessor.test.js +328 -0
  234. package/dist/src/ui/hooks/shellCommandProcessor.test.js.map +1 -0
  235. package/dist/src/ui/hooks/slashCommandProcessor.d.ts +6 -2
  236. package/dist/src/ui/hooks/slashCommandProcessor.js +121 -57
  237. package/dist/src/ui/hooks/slashCommandProcessor.js.map +1 -1
  238. package/dist/src/ui/hooks/useAtCompletion.d.ts +23 -0
  239. package/dist/src/ui/hooks/useAtCompletion.js +178 -0
  240. package/dist/src/ui/hooks/useAtCompletion.js.map +1 -0
  241. package/dist/src/ui/hooks/useAutoAcceptIndicator.js +5 -5
  242. package/dist/src/ui/hooks/useAutoAcceptIndicator.js.map +1 -1
  243. package/dist/src/ui/hooks/useAutoAcceptIndicator.test.d.ts +6 -0
  244. package/dist/src/ui/hooks/useAutoAcceptIndicator.test.js +191 -0
  245. package/dist/src/ui/hooks/useAutoAcceptIndicator.test.js.map +1 -0
  246. package/dist/src/ui/hooks/useCommandCompletion.d.ts +6 -1
  247. package/dist/src/ui/hooks/useCommandCompletion.js +95 -383
  248. package/dist/src/ui/hooks/useCommandCompletion.js.map +1 -1
  249. package/dist/src/ui/hooks/useEditorSettings.test.d.ts +6 -0
  250. package/dist/src/ui/hooks/useEditorSettings.test.js +164 -0
  251. package/dist/src/ui/hooks/useEditorSettings.test.js.map +1 -0
  252. package/dist/src/ui/hooks/useFocus.d.ts +4 -0
  253. package/dist/src/ui/hooks/useFocus.js +4 -4
  254. package/dist/src/ui/hooks/useFocus.js.map +1 -1
  255. package/dist/src/ui/hooks/useFolderTrust.d.ts +12 -0
  256. package/dist/src/ui/hooks/useFolderTrust.js +55 -0
  257. package/dist/src/ui/hooks/useFolderTrust.js.map +1 -0
  258. package/dist/src/ui/hooks/useGeminiStream.d.ts +2 -1
  259. package/dist/src/ui/hooks/useGeminiStream.js +35 -22
  260. package/dist/src/ui/hooks/useGeminiStream.js.map +1 -1
  261. package/dist/src/ui/hooks/useGitBranchName.test.d.ts +6 -0
  262. package/dist/src/ui/hooks/useGitBranchName.test.js +175 -0
  263. package/dist/src/ui/hooks/useGitBranchName.test.js.map +1 -0
  264. package/dist/src/ui/hooks/useHistoryManager.test.d.ts +6 -0
  265. package/dist/src/ui/hooks/useHistoryManager.test.js +171 -0
  266. package/dist/src/ui/hooks/useHistoryManager.test.js.map +1 -0
  267. package/dist/src/ui/hooks/useInputHistory.test.d.ts +6 -0
  268. package/dist/src/ui/hooks/useInputHistory.test.js +207 -0
  269. package/dist/src/ui/hooks/useInputHistory.test.js.map +1 -0
  270. package/dist/src/ui/hooks/useKeypress.d.ts +4 -16
  271. package/dist/src/ui/hooks/useKeypress.js +8 -140
  272. package/dist/src/ui/hooks/useKeypress.js.map +1 -1
  273. package/dist/src/ui/hooks/useKittyKeyboardProtocol.d.ts +15 -0
  274. package/dist/src/ui/hooks/useKittyKeyboardProtocol.js +20 -0
  275. package/dist/src/ui/hooks/useKittyKeyboardProtocol.js.map +1 -0
  276. package/dist/src/ui/hooks/useLoadingIndicator.test.d.ts +6 -0
  277. package/dist/src/ui/hooks/useLoadingIndicator.test.js +91 -0
  278. package/dist/src/ui/hooks/useLoadingIndicator.test.js.map +1 -0
  279. package/dist/src/ui/hooks/useMessageQueue.d.ts +22 -0
  280. package/dist/src/ui/hooks/useMessageQueue.js +49 -0
  281. package/dist/src/ui/hooks/useMessageQueue.js.map +1 -0
  282. package/dist/src/ui/hooks/useMessageQueue.test.d.ts +6 -0
  283. package/dist/src/ui/hooks/useMessageQueue.test.js +158 -0
  284. package/dist/src/ui/hooks/useMessageQueue.test.js.map +1 -0
  285. package/dist/src/ui/hooks/usePhraseCycler.js +2 -5
  286. package/dist/src/ui/hooks/usePhraseCycler.js.map +1 -1
  287. package/dist/src/ui/hooks/usePrivacySettings.js +6 -2
  288. package/dist/src/ui/hooks/usePrivacySettings.js.map +1 -1
  289. package/dist/src/ui/hooks/usePrivacySettings.test.d.ts +6 -0
  290. package/dist/src/ui/hooks/usePrivacySettings.test.js +154 -0
  291. package/dist/src/ui/hooks/usePrivacySettings.test.js.map +1 -0
  292. package/dist/src/ui/hooks/useReactToolScheduler.d.ts +1 -1
  293. package/dist/src/ui/hooks/useReactToolScheduler.js +18 -16
  294. package/dist/src/ui/hooks/useReactToolScheduler.js.map +1 -1
  295. package/dist/src/ui/hooks/useReverseSearchCompletion.js +4 -2
  296. package/dist/src/ui/hooks/useReverseSearchCompletion.js.map +1 -1
  297. package/dist/src/ui/hooks/useReverseSearchCompletion.test.d.ts +6 -0
  298. package/dist/src/ui/hooks/useReverseSearchCompletion.test.js +163 -0
  299. package/dist/src/ui/hooks/useReverseSearchCompletion.test.js.map +1 -0
  300. package/dist/src/ui/hooks/useSettingsCommand.d.ts +10 -0
  301. package/dist/src/ui/hooks/useSettingsCommand.js +21 -0
  302. package/dist/src/ui/hooks/useSettingsCommand.js.map +1 -0
  303. package/dist/src/ui/hooks/useShellHistory.test.d.ts +6 -0
  304. package/dist/src/ui/hooks/useShellHistory.test.js +159 -0
  305. package/dist/src/ui/hooks/useShellHistory.test.js.map +1 -0
  306. package/dist/src/ui/hooks/useSlashCompletion.d.ts +20 -0
  307. package/dist/src/ui/hooks/useSlashCompletion.js +135 -0
  308. package/dist/src/ui/hooks/useSlashCompletion.js.map +1 -0
  309. package/dist/src/ui/hooks/useSlashCompletion.test.d.ts +6 -0
  310. package/dist/src/ui/hooks/useSlashCompletion.test.js +272 -0
  311. package/dist/src/ui/hooks/useSlashCompletion.test.js.map +1 -0
  312. package/dist/src/ui/hooks/useThemeCommand.js +1 -1
  313. package/dist/src/ui/hooks/useThemeCommand.js.map +1 -1
  314. package/dist/src/ui/hooks/useTimer.test.d.ts +6 -0
  315. package/dist/src/ui/hooks/useTimer.test.js +90 -0
  316. package/dist/src/ui/hooks/useTimer.test.js.map +1 -0
  317. package/dist/src/ui/hooks/useToolScheduler.test.d.ts +6 -0
  318. package/dist/src/ui/hooks/useToolScheduler.test.js +846 -0
  319. package/dist/src/ui/hooks/useToolScheduler.test.js.map +1 -0
  320. package/dist/src/ui/hooks/vim.js +13 -4
  321. package/dist/src/ui/hooks/vim.js.map +1 -1
  322. package/dist/src/ui/keyMatchers.d.ts +26 -0
  323. package/dist/src/ui/keyMatchers.js +68 -0
  324. package/dist/src/ui/keyMatchers.js.map +1 -0
  325. package/dist/src/ui/keyMatchers.test.d.ts +6 -0
  326. package/dist/src/ui/keyMatchers.test.js +276 -0
  327. package/dist/src/ui/keyMatchers.test.js.map +1 -0
  328. package/dist/src/ui/privacy/CloudFreePrivacyNotice.js +5 -4
  329. package/dist/src/ui/privacy/CloudFreePrivacyNotice.js.map +1 -1
  330. package/dist/src/ui/privacy/CloudPaidPrivacyNotice.js +5 -4
  331. package/dist/src/ui/privacy/CloudPaidPrivacyNotice.js.map +1 -1
  332. package/dist/src/ui/privacy/GeminiPrivacyNotice.js +5 -4
  333. package/dist/src/ui/privacy/GeminiPrivacyNotice.js.map +1 -1
  334. package/dist/src/ui/semantic-colors.d.ts +7 -0
  335. package/dist/src/ui/semantic-colors.js +24 -0
  336. package/dist/src/ui/semantic-colors.js.map +1 -0
  337. package/dist/src/ui/themes/ansi-light.js +2 -1
  338. package/dist/src/ui/themes/ansi-light.js.map +1 -1
  339. package/dist/src/ui/themes/ansi.js +2 -1
  340. package/dist/src/ui/themes/ansi.js.map +1 -1
  341. package/dist/src/ui/themes/atom-one-dark.js +2 -1
  342. package/dist/src/ui/themes/atom-one-dark.js.map +1 -1
  343. package/dist/src/ui/themes/ayu-light.js +2 -1
  344. package/dist/src/ui/themes/ayu-light.js.map +1 -1
  345. package/dist/src/ui/themes/ayu.js +2 -1
  346. package/dist/src/ui/themes/ayu.js.map +1 -1
  347. package/dist/src/ui/themes/color-utils.test.d.ts +6 -0
  348. package/dist/src/ui/themes/color-utils.test.js +197 -0
  349. package/dist/src/ui/themes/color-utils.test.js.map +1 -0
  350. package/dist/src/ui/themes/default-light.js +2 -1
  351. package/dist/src/ui/themes/default-light.js.map +1 -1
  352. package/dist/src/ui/themes/default.js +2 -1
  353. package/dist/src/ui/themes/default.js.map +1 -1
  354. package/dist/src/ui/themes/dracula.js +2 -1
  355. package/dist/src/ui/themes/dracula.js.map +1 -1
  356. package/dist/src/ui/themes/github-dark.js +2 -1
  357. package/dist/src/ui/themes/github-dark.js.map +1 -1
  358. package/dist/src/ui/themes/github-light.js +2 -1
  359. package/dist/src/ui/themes/github-light.js.map +1 -1
  360. package/dist/src/ui/themes/googlecode.js +2 -1
  361. package/dist/src/ui/themes/googlecode.js.map +1 -1
  362. package/dist/src/ui/themes/no-color.js +30 -1
  363. package/dist/src/ui/themes/no-color.js.map +1 -1
  364. package/dist/src/ui/themes/semantic-tokens.d.ts +37 -0
  365. package/dist/src/ui/themes/semantic-tokens.js +94 -0
  366. package/dist/src/ui/themes/semantic-tokens.js.map +1 -0
  367. package/dist/src/ui/themes/shades-of-purple.js +2 -1
  368. package/dist/src/ui/themes/shades-of-purple.js.map +1 -1
  369. package/dist/src/ui/themes/theme-manager.d.ts +6 -0
  370. package/dist/src/ui/themes/theme-manager.js +8 -1
  371. package/dist/src/ui/themes/theme-manager.js.map +1 -1
  372. package/dist/src/ui/themes/theme-manager.test.d.ts +6 -0
  373. package/dist/src/ui/themes/theme-manager.test.js +83 -0
  374. package/dist/src/ui/themes/theme-manager.test.js.map +1 -0
  375. package/dist/src/ui/themes/theme.d.ts +45 -2
  376. package/dist/src/ui/themes/theme.js +92 -107
  377. package/dist/src/ui/themes/theme.js.map +1 -1
  378. package/dist/src/ui/themes/xcode.js +2 -1
  379. package/dist/src/ui/themes/xcode.js.map +1 -1
  380. package/dist/src/ui/types.d.ts +3 -1
  381. package/dist/src/ui/types.js.map +1 -1
  382. package/dist/src/ui/utils/CodeColorizer.d.ts +2 -1
  383. package/dist/src/ui/utils/CodeColorizer.js +5 -4
  384. package/dist/src/ui/utils/CodeColorizer.js.map +1 -1
  385. package/dist/src/ui/utils/ConsolePatcher.d.ts +3 -1
  386. package/dist/src/ui/utils/ConsolePatcher.js +18 -8
  387. package/dist/src/ui/utils/ConsolePatcher.js.map +1 -1
  388. package/dist/src/ui/utils/InlineMarkdownRenderer.js +8 -1
  389. package/dist/src/ui/utils/InlineMarkdownRenderer.js.map +1 -1
  390. package/dist/src/ui/utils/MarkdownDisplay.js +4 -2
  391. package/dist/src/ui/utils/MarkdownDisplay.js.map +1 -1
  392. package/dist/src/ui/utils/MarkdownDisplay.test.d.ts +6 -0
  393. package/dist/src/ui/utils/MarkdownDisplay.test.js +151 -0
  394. package/dist/src/ui/utils/MarkdownDisplay.test.js.map +1 -0
  395. package/dist/src/ui/utils/clipboardUtils.test.d.ts +6 -0
  396. package/dist/src/ui/utils/clipboardUtils.test.js +65 -0
  397. package/dist/src/ui/utils/clipboardUtils.test.js.map +1 -0
  398. package/dist/src/ui/utils/commandUtils.d.ts +1 -0
  399. package/dist/src/ui/utils/commandUtils.js +22 -1
  400. package/dist/src/ui/utils/commandUtils.js.map +1 -1
  401. package/dist/src/ui/utils/commandUtils.test.d.ts +6 -0
  402. package/dist/src/ui/utils/commandUtils.test.js +294 -0
  403. package/dist/src/ui/utils/commandUtils.test.js.map +1 -0
  404. package/dist/src/ui/utils/computeStats.js +3 -1
  405. package/dist/src/ui/utils/computeStats.js.map +1 -1
  406. package/dist/src/ui/utils/displayUtils.test.d.ts +6 -0
  407. package/dist/src/ui/utils/displayUtils.test.js +42 -0
  408. package/dist/src/ui/utils/displayUtils.test.js.map +1 -0
  409. package/dist/src/ui/utils/formatters.test.d.ts +6 -0
  410. package/dist/src/ui/utils/formatters.test.js +56 -0
  411. package/dist/src/ui/utils/formatters.test.js.map +1 -0
  412. package/dist/src/ui/utils/isNarrowWidth.d.ts +6 -0
  413. package/dist/src/ui/utils/isNarrowWidth.js +9 -0
  414. package/dist/src/ui/utils/isNarrowWidth.js.map +1 -0
  415. package/dist/src/ui/utils/kittyProtocolDetector.d.ts +13 -0
  416. package/dist/src/ui/utils/kittyProtocolDetector.js +88 -0
  417. package/dist/src/ui/utils/kittyProtocolDetector.js.map +1 -0
  418. package/dist/src/ui/utils/markdownUtilities.test.d.ts +6 -0
  419. package/dist/src/ui/utils/markdownUtilities.test.js +42 -0
  420. package/dist/src/ui/utils/markdownUtilities.test.js.map +1 -0
  421. package/dist/src/ui/utils/platformConstants.d.ts +43 -0
  422. package/dist/src/ui/utils/platformConstants.js +44 -0
  423. package/dist/src/ui/utils/platformConstants.js.map +1 -0
  424. package/dist/src/ui/utils/terminalSetup.d.ts +30 -0
  425. package/dist/src/ui/utils/terminalSetup.js +281 -0
  426. package/dist/src/ui/utils/terminalSetup.js.map +1 -0
  427. package/dist/src/ui/utils/updateCheck.js +1 -1
  428. package/dist/src/ui/utils/updateCheck.js.map +1 -1
  429. package/dist/src/ui/utils/updateCheck.test.d.ts +6 -0
  430. package/dist/src/ui/utils/updateCheck.test.js +145 -0
  431. package/dist/src/ui/utils/updateCheck.test.js.map +1 -0
  432. package/dist/src/utils/checks.d.ts +19 -0
  433. package/dist/src/utils/checks.js +24 -0
  434. package/dist/src/utils/checks.js.map +1 -0
  435. package/dist/src/utils/cleanup.d.ts +2 -2
  436. package/dist/src/utils/cleanup.js +2 -2
  437. package/dist/src/utils/cleanup.js.map +1 -1
  438. package/dist/src/utils/dialogScopeUtils.d.ts +31 -0
  439. package/dist/src/utils/dialogScopeUtils.js +48 -0
  440. package/dist/src/utils/dialogScopeUtils.js.map +1 -0
  441. package/dist/src/utils/gitUtils.d.ts +21 -1
  442. package/dist/src/utils/gitUtils.js +68 -3
  443. package/dist/src/utils/gitUtils.js.map +1 -1
  444. package/dist/src/utils/gitUtils.test.d.ts +6 -0
  445. package/dist/src/utils/gitUtils.test.js +113 -0
  446. package/dist/src/utils/gitUtils.test.js.map +1 -0
  447. package/dist/src/utils/installationInfo.test.d.ts +6 -0
  448. package/dist/src/utils/installationInfo.test.js +242 -0
  449. package/dist/src/utils/installationInfo.test.js.map +1 -0
  450. package/dist/src/utils/readStdin.js +10 -0
  451. package/dist/src/utils/readStdin.js.map +1 -1
  452. package/dist/src/utils/sandbox.js +443 -420
  453. package/dist/src/utils/sandbox.js.map +1 -1
  454. package/dist/src/utils/settingsUtils.d.ts +134 -0
  455. package/dist/src/utils/settingsUtils.js +336 -0
  456. package/dist/src/utils/settingsUtils.js.map +1 -0
  457. package/dist/src/utils/settingsUtils.test.d.ts +6 -0
  458. package/dist/src/utils/settingsUtils.test.js +514 -0
  459. package/dist/src/utils/settingsUtils.test.js.map +1 -0
  460. package/dist/src/utils/userStartupWarnings.test.d.ts +6 -0
  461. package/dist/src/utils/userStartupWarnings.test.js +67 -0
  462. package/dist/src/utils/userStartupWarnings.test.js.map +1 -0
  463. package/dist/src/utils/version.js +1 -1
  464. package/dist/src/utils/version.js.map +1 -1
  465. package/dist/src/validateNonInterActiveAuth.js +3 -3
  466. package/dist/src/validateNonInterActiveAuth.js.map +1 -1
  467. package/dist/src/zed-integration/acp.d.ts +63 -0
  468. package/dist/src/{acp → zed-integration}/acp.js +76 -44
  469. package/dist/src/zed-integration/acp.js.map +1 -0
  470. package/dist/src/zed-integration/fileSystemService.d.ts +19 -0
  471. package/dist/src/zed-integration/fileSystemService.js +43 -0
  472. package/dist/src/zed-integration/fileSystemService.js.map +1 -0
  473. package/dist/src/zed-integration/schema.d.ts +11679 -0
  474. package/dist/src/zed-integration/schema.js +305 -0
  475. package/dist/src/zed-integration/schema.js.map +1 -0
  476. package/dist/src/zed-integration/zedIntegration.d.ts +10 -0
  477. package/dist/src/{acp/acpPeer.js → zed-integration/zedIntegration.js} +336 -169
  478. package/dist/src/zed-integration/zedIntegration.js.map +1 -0
  479. package/dist/tsconfig.tsbuildinfo +1 -1
  480. package/package.json +13 -9
  481. package/dist/src/acp/acp.d.ts +0 -208
  482. package/dist/src/acp/acp.js.map +0 -1
  483. package/dist/src/acp/acpPeer.d.ts +0 -8
  484. package/dist/src/acp/acpPeer.js.map +0 -1
  485. package/dist/src/ui/components/IDEContextDetailDisplay.d.ts +0 -12
  486. package/dist/src/ui/components/IDEContextDetailDisplay.js +0 -12
  487. package/dist/src/ui/components/IDEContextDetailDisplay.js.map +0 -1
  488. package/dist/src/ui/utils/errorParsing.d.ts +0 -7
  489. package/dist/src/ui/utils/errorParsing.js +0 -90
  490. package/dist/src/ui/utils/errorParsing.js.map +0 -1
@@ -0,0 +1,294 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { vi, describe, it, expect, beforeEach } from 'vitest';
7
+ import { EventEmitter } from 'events';
8
+ import { isAtCommand, isSlashCommand, copyToClipboard, getUrlOpenCommand, } from './commandUtils.js';
9
+ // Mock child_process
10
+ vi.mock('child_process');
11
+ // Mock process.platform for platform-specific tests
12
+ const mockProcess = vi.hoisted(() => ({
13
+ platform: 'darwin',
14
+ }));
15
+ vi.stubGlobal('process', {
16
+ ...process,
17
+ get platform() {
18
+ return mockProcess.platform;
19
+ },
20
+ });
21
+ describe('commandUtils', () => {
22
+ let mockSpawn;
23
+ let mockChild;
24
+ beforeEach(async () => {
25
+ vi.clearAllMocks();
26
+ // Dynamically import and set up spawn mock
27
+ const { spawn } = await import('child_process');
28
+ mockSpawn = spawn;
29
+ // Create mock child process with stdout/stderr emitters
30
+ mockChild = Object.assign(new EventEmitter(), {
31
+ stdin: Object.assign(new EventEmitter(), {
32
+ write: vi.fn(),
33
+ end: vi.fn(),
34
+ }),
35
+ stderr: new EventEmitter(),
36
+ });
37
+ mockSpawn.mockReturnValue(mockChild);
38
+ });
39
+ describe('isAtCommand', () => {
40
+ it('should return true when query starts with @', () => {
41
+ expect(isAtCommand('@file')).toBe(true);
42
+ expect(isAtCommand('@path/to/file')).toBe(true);
43
+ expect(isAtCommand('@')).toBe(true);
44
+ });
45
+ it('should return true when query contains @ preceded by whitespace', () => {
46
+ expect(isAtCommand('hello @file')).toBe(true);
47
+ expect(isAtCommand('some text @path/to/file')).toBe(true);
48
+ expect(isAtCommand(' @file')).toBe(true);
49
+ });
50
+ it('should return false when query does not start with @ and has no spaced @', () => {
51
+ expect(isAtCommand('file')).toBe(false);
52
+ expect(isAtCommand('hello')).toBe(false);
53
+ expect(isAtCommand('')).toBe(false);
54
+ expect(isAtCommand('email@domain.com')).toBe(false);
55
+ expect(isAtCommand('user@host')).toBe(false);
56
+ });
57
+ it('should return false when @ is not preceded by whitespace', () => {
58
+ expect(isAtCommand('hello@file')).toBe(false);
59
+ expect(isAtCommand('text@path')).toBe(false);
60
+ });
61
+ });
62
+ describe('isSlashCommand', () => {
63
+ it('should return true when query starts with /', () => {
64
+ expect(isSlashCommand('/help')).toBe(true);
65
+ expect(isSlashCommand('/memory show')).toBe(true);
66
+ expect(isSlashCommand('/clear')).toBe(true);
67
+ expect(isSlashCommand('/')).toBe(true);
68
+ });
69
+ it('should return false when query does not start with /', () => {
70
+ expect(isSlashCommand('help')).toBe(false);
71
+ expect(isSlashCommand('memory show')).toBe(false);
72
+ expect(isSlashCommand('')).toBe(false);
73
+ expect(isSlashCommand('path/to/file')).toBe(false);
74
+ expect(isSlashCommand(' /help')).toBe(false);
75
+ });
76
+ });
77
+ describe('copyToClipboard', () => {
78
+ describe('on macOS (darwin)', () => {
79
+ beforeEach(() => {
80
+ mockProcess.platform = 'darwin';
81
+ });
82
+ it('should successfully copy text to clipboard using pbcopy', async () => {
83
+ const testText = 'Hello, world!';
84
+ // Simulate successful execution
85
+ setTimeout(() => {
86
+ mockChild.emit('close', 0);
87
+ }, 0);
88
+ await copyToClipboard(testText);
89
+ expect(mockSpawn).toHaveBeenCalledWith('pbcopy', []);
90
+ expect(mockChild.stdin.write).toHaveBeenCalledWith(testText);
91
+ expect(mockChild.stdin.end).toHaveBeenCalled();
92
+ });
93
+ it('should handle pbcopy command failure', async () => {
94
+ const testText = 'Hello, world!';
95
+ // Simulate command failure
96
+ setTimeout(() => {
97
+ mockChild.stderr.emit('data', 'Command not found');
98
+ mockChild.emit('close', 1);
99
+ }, 0);
100
+ await expect(copyToClipboard(testText)).rejects.toThrow("'pbcopy' exited with code 1: Command not found");
101
+ });
102
+ it('should handle spawn error', async () => {
103
+ const testText = 'Hello, world!';
104
+ setTimeout(() => {
105
+ mockChild.emit('error', new Error('spawn error'));
106
+ }, 0);
107
+ await expect(copyToClipboard(testText)).rejects.toThrow('spawn error');
108
+ });
109
+ it('should handle stdin write error', async () => {
110
+ const testText = 'Hello, world!';
111
+ setTimeout(() => {
112
+ mockChild.stdin.emit('error', new Error('stdin error'));
113
+ }, 0);
114
+ await expect(copyToClipboard(testText)).rejects.toThrow('stdin error');
115
+ });
116
+ });
117
+ describe('on Windows (win32)', () => {
118
+ beforeEach(() => {
119
+ mockProcess.platform = 'win32';
120
+ });
121
+ it('should successfully copy text to clipboard using clip', async () => {
122
+ const testText = 'Hello, world!';
123
+ setTimeout(() => {
124
+ mockChild.emit('close', 0);
125
+ }, 0);
126
+ await copyToClipboard(testText);
127
+ expect(mockSpawn).toHaveBeenCalledWith('clip', []);
128
+ expect(mockChild.stdin.write).toHaveBeenCalledWith(testText);
129
+ expect(mockChild.stdin.end).toHaveBeenCalled();
130
+ });
131
+ });
132
+ describe('on Linux', () => {
133
+ beforeEach(() => {
134
+ mockProcess.platform = 'linux';
135
+ });
136
+ it('should successfully copy text to clipboard using xclip', async () => {
137
+ const testText = 'Hello, world!';
138
+ setTimeout(() => {
139
+ mockChild.emit('close', 0);
140
+ }, 0);
141
+ await copyToClipboard(testText);
142
+ expect(mockSpawn).toHaveBeenCalledWith('xclip', [
143
+ '-selection',
144
+ 'clipboard',
145
+ ]);
146
+ expect(mockChild.stdin.write).toHaveBeenCalledWith(testText);
147
+ expect(mockChild.stdin.end).toHaveBeenCalled();
148
+ });
149
+ it('should fall back to xsel when xclip fails', async () => {
150
+ const testText = 'Hello, world!';
151
+ let callCount = 0;
152
+ mockSpawn.mockImplementation(() => {
153
+ const child = Object.assign(new EventEmitter(), {
154
+ stdin: Object.assign(new EventEmitter(), {
155
+ write: vi.fn(),
156
+ end: vi.fn(),
157
+ }),
158
+ stderr: new EventEmitter(),
159
+ });
160
+ setTimeout(() => {
161
+ if (callCount === 0) {
162
+ // First call (xclip) fails
163
+ child.stderr.emit('data', 'xclip not found');
164
+ child.emit('close', 1);
165
+ callCount++;
166
+ }
167
+ else {
168
+ // Second call (xsel) succeeds
169
+ child.emit('close', 0);
170
+ }
171
+ }, 0);
172
+ return child;
173
+ });
174
+ await copyToClipboard(testText);
175
+ expect(mockSpawn).toHaveBeenCalledTimes(2);
176
+ expect(mockSpawn).toHaveBeenNthCalledWith(1, 'xclip', [
177
+ '-selection',
178
+ 'clipboard',
179
+ ]);
180
+ expect(mockSpawn).toHaveBeenNthCalledWith(2, 'xsel', [
181
+ '--clipboard',
182
+ '--input',
183
+ ]);
184
+ });
185
+ it('should throw error when both xclip and xsel fail', async () => {
186
+ const testText = 'Hello, world!';
187
+ let callCount = 0;
188
+ mockSpawn.mockImplementation(() => {
189
+ const child = Object.assign(new EventEmitter(), {
190
+ stdin: Object.assign(new EventEmitter(), {
191
+ write: vi.fn(),
192
+ end: vi.fn(),
193
+ }),
194
+ stderr: new EventEmitter(),
195
+ });
196
+ setTimeout(() => {
197
+ if (callCount === 0) {
198
+ // First call (xclip) fails
199
+ child.stderr.emit('data', 'xclip command not found');
200
+ child.emit('close', 1);
201
+ callCount++;
202
+ }
203
+ else {
204
+ // Second call (xsel) fails
205
+ child.stderr.emit('data', 'xsel command not found');
206
+ child.emit('close', 1);
207
+ }
208
+ }, 0);
209
+ return child;
210
+ });
211
+ await expect(copyToClipboard(testText)).rejects.toThrow(/All copy commands failed/);
212
+ expect(mockSpawn).toHaveBeenCalledTimes(2);
213
+ });
214
+ });
215
+ describe('on unsupported platform', () => {
216
+ beforeEach(() => {
217
+ mockProcess.platform = 'unsupported';
218
+ });
219
+ it('should throw error for unsupported platform', async () => {
220
+ await expect(copyToClipboard('test')).rejects.toThrow('Unsupported platform: unsupported');
221
+ });
222
+ });
223
+ describe('error handling', () => {
224
+ beforeEach(() => {
225
+ mockProcess.platform = 'darwin';
226
+ });
227
+ it('should handle command exit without stderr', async () => {
228
+ const testText = 'Hello, world!';
229
+ setTimeout(() => {
230
+ mockChild.emit('close', 1);
231
+ }, 0);
232
+ await expect(copyToClipboard(testText)).rejects.toThrow("'pbcopy' exited with code 1");
233
+ });
234
+ it('should handle empty text', async () => {
235
+ setTimeout(() => {
236
+ mockChild.emit('close', 0);
237
+ }, 0);
238
+ await copyToClipboard('');
239
+ expect(mockChild.stdin.write).toHaveBeenCalledWith('');
240
+ });
241
+ it('should handle multiline text', async () => {
242
+ const multilineText = 'Line 1\nLine 2\nLine 3';
243
+ setTimeout(() => {
244
+ mockChild.emit('close', 0);
245
+ }, 0);
246
+ await copyToClipboard(multilineText);
247
+ expect(mockChild.stdin.write).toHaveBeenCalledWith(multilineText);
248
+ });
249
+ it('should handle special characters', async () => {
250
+ const specialText = 'Special chars: !@#$%^&*()_+-=[]{}|;:,.<>?';
251
+ setTimeout(() => {
252
+ mockChild.emit('close', 0);
253
+ }, 0);
254
+ await copyToClipboard(specialText);
255
+ expect(mockChild.stdin.write).toHaveBeenCalledWith(specialText);
256
+ });
257
+ });
258
+ });
259
+ describe('getUrlOpenCommand', () => {
260
+ describe('on macOS (darwin)', () => {
261
+ beforeEach(() => {
262
+ mockProcess.platform = 'darwin';
263
+ });
264
+ it('should return open', () => {
265
+ expect(getUrlOpenCommand()).toBe('open');
266
+ });
267
+ });
268
+ describe('on Windows (win32)', () => {
269
+ beforeEach(() => {
270
+ mockProcess.platform = 'win32';
271
+ });
272
+ it('should return start', () => {
273
+ expect(getUrlOpenCommand()).toBe('start');
274
+ });
275
+ });
276
+ describe('on Linux (linux)', () => {
277
+ beforeEach(() => {
278
+ mockProcess.platform = 'linux';
279
+ });
280
+ it('should return xdg-open', () => {
281
+ expect(getUrlOpenCommand()).toBe('xdg-open');
282
+ });
283
+ });
284
+ describe('on unmatched OS', () => {
285
+ beforeEach(() => {
286
+ mockProcess.platform = 'unmatched';
287
+ });
288
+ it('should return xdg-open', () => {
289
+ expect(getUrlOpenCommand()).toBe('xdg-open');
290
+ });
291
+ });
292
+ });
293
+ });
294
+ //# sourceMappingURL=commandUtils.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commandUtils.test.js","sourceRoot":"","sources":["../../../../src/ui/utils/commandUtils.test.ts"],"names":[],"mappings":"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"}
@@ -22,7 +22,7 @@ export function calculateCacheHitRate(metrics) {
22
22
  return (metrics.tokens.cached / metrics.tokens.prompt) * 100;
23
23
  }
24
24
  export const computeSessionStats = (metrics) => {
25
- const { models, tools } = metrics;
25
+ const { models, tools, files } = metrics;
26
26
  const totalApiTime = Object.values(models).reduce((acc, model) => acc + model.api.totalLatencyMs, 0);
27
27
  const totalToolTime = tools.totalDurationMs;
28
28
  const agentActiveTime = totalApiTime + totalToolTime;
@@ -50,6 +50,8 @@ export const computeSessionStats = (metrics) => {
50
50
  agreementRate,
51
51
  totalCachedTokens,
52
52
  totalPromptTokens,
53
+ totalLinesAdded: files.totalLinesAdded,
54
+ totalLinesRemoved: files.totalLinesRemoved,
53
55
  };
54
56
  };
55
57
  //# sourceMappingURL=computeStats.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"computeStats.js","sourceRoot":"","sources":["../../../../src/ui/utils/computeStats.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"computeStats.js","sourceRoot":"","sources":["../../../../src/ui/utils/computeStats.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ export {};
@@ -0,0 +1,42 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { describe, it, expect } from 'vitest';
7
+ import { getStatusColor, TOOL_SUCCESS_RATE_HIGH, TOOL_SUCCESS_RATE_MEDIUM, USER_AGREEMENT_RATE_HIGH, USER_AGREEMENT_RATE_MEDIUM, CACHE_EFFICIENCY_HIGH, CACHE_EFFICIENCY_MEDIUM, } from './displayUtils.js';
8
+ import { Colors } from '../colors.js';
9
+ describe('displayUtils', () => {
10
+ describe('getStatusColor', () => {
11
+ const thresholds = {
12
+ green: 80,
13
+ yellow: 50,
14
+ };
15
+ it('should return green for values >= green threshold', () => {
16
+ expect(getStatusColor(90, thresholds)).toBe(Colors.AccentGreen);
17
+ expect(getStatusColor(80, thresholds)).toBe(Colors.AccentGreen);
18
+ });
19
+ it('should return yellow for values < green and >= yellow threshold', () => {
20
+ expect(getStatusColor(79, thresholds)).toBe(Colors.AccentYellow);
21
+ expect(getStatusColor(50, thresholds)).toBe(Colors.AccentYellow);
22
+ });
23
+ it('should return red for values < yellow threshold', () => {
24
+ expect(getStatusColor(49, thresholds)).toBe(Colors.AccentRed);
25
+ expect(getStatusColor(0, thresholds)).toBe(Colors.AccentRed);
26
+ });
27
+ it('should return defaultColor for values < yellow threshold when provided', () => {
28
+ expect(getStatusColor(49, thresholds, { defaultColor: Colors.Foreground })).toBe(Colors.Foreground);
29
+ });
30
+ });
31
+ describe('Threshold Constants', () => {
32
+ it('should have the correct values', () => {
33
+ expect(TOOL_SUCCESS_RATE_HIGH).toBe(95);
34
+ expect(TOOL_SUCCESS_RATE_MEDIUM).toBe(85);
35
+ expect(USER_AGREEMENT_RATE_HIGH).toBe(75);
36
+ expect(USER_AGREEMENT_RATE_MEDIUM).toBe(45);
37
+ expect(CACHE_EFFICIENCY_HIGH).toBe(40);
38
+ expect(CACHE_EFFICIENCY_MEDIUM).toBe(15);
39
+ });
40
+ });
41
+ });
42
+ //# sourceMappingURL=displayUtils.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"displayUtils.test.js","sourceRoot":"","sources":["../../../../src/ui/utils/displayUtils.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EACL,cAAc,EACd,sBAAsB,EACtB,wBAAwB,EACxB,wBAAwB,EACxB,0BAA0B,EAC1B,qBAAqB,EACrB,uBAAuB,GACxB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;QAC9B,MAAM,UAAU,GAAG;YACjB,KAAK,EAAE,EAAE;YACT,MAAM,EAAE,EAAE;SACX,CAAC;QAEF,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;YAC3D,MAAM,CAAC,cAAc,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YAChE,MAAM,CAAC,cAAc,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAClE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iEAAiE,EAAE,GAAG,EAAE;YACzE,MAAM,CAAC,cAAc,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YACjE,MAAM,CAAC,cAAc,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QACnE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;YACzD,MAAM,CAAC,cAAc,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAC9D,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC/D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wEAAwE,EAAE,GAAG,EAAE;YAChF,MAAM,CACJ,cAAc,CAAC,EAAE,EAAE,UAAU,EAAE,EAAE,YAAY,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC,CACpE,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;QACnC,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;YACxC,MAAM,CAAC,sBAAsB,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACxC,MAAM,CAAC,wBAAwB,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC1C,MAAM,CAAC,wBAAwB,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC1C,MAAM,CAAC,0BAA0B,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC5C,MAAM,CAAC,qBAAqB,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACvC,MAAM,CAAC,uBAAuB,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC3C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ export {};
@@ -0,0 +1,56 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { describe, it, expect } from 'vitest';
7
+ import { formatDuration, formatMemoryUsage } from './formatters.js';
8
+ describe('formatters', () => {
9
+ describe('formatMemoryUsage', () => {
10
+ it('should format bytes into KB', () => {
11
+ expect(formatMemoryUsage(12345)).toBe('12.1 KB');
12
+ });
13
+ it('should format bytes into MB', () => {
14
+ expect(formatMemoryUsage(12345678)).toBe('11.8 MB');
15
+ });
16
+ it('should format bytes into GB', () => {
17
+ expect(formatMemoryUsage(12345678901)).toBe('11.50 GB');
18
+ });
19
+ });
20
+ describe('formatDuration', () => {
21
+ it('should format milliseconds less than a second', () => {
22
+ expect(formatDuration(500)).toBe('500ms');
23
+ });
24
+ it('should format a duration of 0', () => {
25
+ expect(formatDuration(0)).toBe('0s');
26
+ });
27
+ it('should format an exact number of seconds', () => {
28
+ expect(formatDuration(5000)).toBe('5.0s');
29
+ });
30
+ it('should format a duration in seconds with one decimal place', () => {
31
+ expect(formatDuration(12345)).toBe('12.3s');
32
+ });
33
+ it('should format an exact number of minutes', () => {
34
+ expect(formatDuration(120000)).toBe('2m');
35
+ });
36
+ it('should format a duration in minutes and seconds', () => {
37
+ expect(formatDuration(123000)).toBe('2m 3s');
38
+ });
39
+ it('should format an exact number of hours', () => {
40
+ expect(formatDuration(3600000)).toBe('1h');
41
+ });
42
+ it('should format a duration in hours and seconds', () => {
43
+ expect(formatDuration(3605000)).toBe('1h 5s');
44
+ });
45
+ it('should format a duration in hours, minutes, and seconds', () => {
46
+ expect(formatDuration(3723000)).toBe('1h 2m 3s');
47
+ });
48
+ it('should handle large durations', () => {
49
+ expect(formatDuration(86400000 + 3600000 + 120000 + 1000)).toBe('25h 2m 1s');
50
+ });
51
+ it('should handle negative durations', () => {
52
+ expect(formatDuration(-100)).toBe('0s');
53
+ });
54
+ });
55
+ });
56
+ //# sourceMappingURL=formatters.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatters.test.js","sourceRoot":"","sources":["../../../../src/ui/utils/formatters.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ export declare function isNarrowWidth(width: number): boolean;
@@ -0,0 +1,9 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ export function isNarrowWidth(width) {
7
+ return width < 80;
8
+ }
9
+ //# sourceMappingURL=isNarrowWidth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isNarrowWidth.js","sourceRoot":"","sources":["../../../../src/ui/utils/isNarrowWidth.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,UAAU,aAAa,CAAC,KAAa;IACzC,OAAO,KAAK,GAAG,EAAE,CAAC;AACpB,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ /**
7
+ * Detects Kitty keyboard protocol support.
8
+ * Definitive document about this protocol lives at https://sw.kovidgoyal.net/kitty/keyboard-protocol/
9
+ * This function should be called once at app startup.
10
+ */
11
+ export declare function detectAndEnableKittyProtocol(): Promise<boolean>;
12
+ export declare function isKittyProtocolEnabled(): boolean;
13
+ export declare function isKittyProtocolSupported(): boolean;
@@ -0,0 +1,88 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ let detectionComplete = false;
7
+ let protocolSupported = false;
8
+ let protocolEnabled = false;
9
+ /**
10
+ * Detects Kitty keyboard protocol support.
11
+ * Definitive document about this protocol lives at https://sw.kovidgoyal.net/kitty/keyboard-protocol/
12
+ * This function should be called once at app startup.
13
+ */
14
+ export async function detectAndEnableKittyProtocol() {
15
+ if (detectionComplete) {
16
+ return protocolSupported;
17
+ }
18
+ return new Promise((resolve) => {
19
+ if (!process.stdin.isTTY || !process.stdout.isTTY) {
20
+ detectionComplete = true;
21
+ resolve(false);
22
+ return;
23
+ }
24
+ const originalRawMode = process.stdin.isRaw;
25
+ if (!originalRawMode) {
26
+ process.stdin.setRawMode(true);
27
+ }
28
+ let responseBuffer = '';
29
+ let progressiveEnhancementReceived = false;
30
+ let checkFinished = false;
31
+ const handleData = (data) => {
32
+ responseBuffer += data.toString();
33
+ // Check for progressive enhancement response (CSI ? <flags> u)
34
+ if (responseBuffer.includes('\x1b[?') && responseBuffer.includes('u')) {
35
+ progressiveEnhancementReceived = true;
36
+ }
37
+ // Check for device attributes response (CSI ? <attrs> c)
38
+ if (responseBuffer.includes('\x1b[?') && responseBuffer.includes('c')) {
39
+ if (!checkFinished) {
40
+ checkFinished = true;
41
+ process.stdin.removeListener('data', handleData);
42
+ if (!originalRawMode) {
43
+ process.stdin.setRawMode(false);
44
+ }
45
+ if (progressiveEnhancementReceived) {
46
+ // Enable the protocol
47
+ process.stdout.write('\x1b[>1u');
48
+ protocolSupported = true;
49
+ protocolEnabled = true;
50
+ // Set up cleanup on exit
51
+ process.on('exit', disableProtocol);
52
+ process.on('SIGTERM', disableProtocol);
53
+ }
54
+ detectionComplete = true;
55
+ resolve(protocolSupported);
56
+ }
57
+ }
58
+ };
59
+ process.stdin.on('data', handleData);
60
+ // Send queries
61
+ process.stdout.write('\x1b[?u'); // Query progressive enhancement
62
+ process.stdout.write('\x1b[c'); // Query device attributes
63
+ // Timeout after 50ms
64
+ setTimeout(() => {
65
+ if (!checkFinished) {
66
+ process.stdin.removeListener('data', handleData);
67
+ if (!originalRawMode) {
68
+ process.stdin.setRawMode(false);
69
+ }
70
+ detectionComplete = true;
71
+ resolve(false);
72
+ }
73
+ }, 50);
74
+ });
75
+ }
76
+ function disableProtocol() {
77
+ if (protocolEnabled) {
78
+ process.stdout.write('\x1b[<u');
79
+ protocolEnabled = false;
80
+ }
81
+ }
82
+ export function isKittyProtocolEnabled() {
83
+ return protocolEnabled;
84
+ }
85
+ export function isKittyProtocolSupported() {
86
+ return protocolSupported;
87
+ }
88
+ //# sourceMappingURL=kittyProtocolDetector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kittyProtocolDetector.js","sourceRoot":"","sources":["../../../../src/ui/utils/kittyProtocolDetector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ export {};