@machina.ai/cell-cli 1.16.0-rc1 → 1.18.4-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 (406) hide show
  1. package/dist/index.js +8 -6
  2. package/dist/index.js.map +1 -1
  3. package/dist/package.json +8 -7
  4. package/dist/src/commands/extensions/disable.js +2 -0
  5. package/dist/src/commands/extensions/disable.js.map +1 -1
  6. package/dist/src/commands/extensions/disable.test.d.ts +6 -0
  7. package/dist/src/commands/extensions/disable.test.js +169 -0
  8. package/dist/src/commands/extensions/disable.test.js.map +1 -0
  9. package/dist/src/commands/extensions/enable.js +2 -0
  10. package/dist/src/commands/extensions/enable.js.map +1 -1
  11. package/dist/src/commands/extensions/enable.test.d.ts +6 -0
  12. package/dist/src/commands/extensions/enable.test.js +150 -0
  13. package/dist/src/commands/extensions/enable.test.js.map +1 -0
  14. package/dist/src/commands/extensions/examples/mcp-server/example.test.d.ts +6 -0
  15. package/dist/src/commands/extensions/examples/mcp-server/example.test.js +111 -0
  16. package/dist/src/commands/extensions/examples/mcp-server/example.test.js.map +1 -0
  17. package/dist/src/commands/extensions/examples/mcp-server/example.test.ts +143 -0
  18. package/dist/src/commands/extensions/examples/mcp-server/package.json +1 -1
  19. package/dist/src/commands/extensions/install.js +2 -0
  20. package/dist/src/commands/extensions/install.js.map +1 -1
  21. package/dist/src/commands/extensions/install.test.js +3 -0
  22. package/dist/src/commands/extensions/install.test.js.map +1 -1
  23. package/dist/src/commands/extensions/link.js +2 -0
  24. package/dist/src/commands/extensions/link.js.map +1 -1
  25. package/dist/src/commands/extensions/link.test.d.ts +6 -0
  26. package/dist/src/commands/extensions/link.test.js +131 -0
  27. package/dist/src/commands/extensions/link.test.js.map +1 -0
  28. package/dist/src/commands/extensions/list.js +2 -0
  29. package/dist/src/commands/extensions/list.js.map +1 -1
  30. package/dist/src/commands/extensions/list.test.d.ts +6 -0
  31. package/dist/src/commands/extensions/list.test.js +112 -0
  32. package/dist/src/commands/extensions/list.test.js.map +1 -0
  33. package/dist/src/commands/extensions/new.js +2 -0
  34. package/dist/src/commands/extensions/new.js.map +1 -1
  35. package/dist/src/commands/extensions/new.test.js +3 -0
  36. package/dist/src/commands/extensions/new.test.js.map +1 -1
  37. package/dist/src/commands/extensions/uninstall.d.ts +1 -1
  38. package/dist/src/commands/extensions/uninstall.js +26 -9
  39. package/dist/src/commands/extensions/uninstall.js.map +1 -1
  40. package/dist/src/commands/extensions/uninstall.test.js +190 -9
  41. package/dist/src/commands/extensions/uninstall.test.js.map +1 -1
  42. package/dist/src/commands/extensions/update.js +2 -0
  43. package/dist/src/commands/extensions/update.js.map +1 -1
  44. package/dist/src/commands/extensions/update.test.d.ts +6 -0
  45. package/dist/src/commands/extensions/update.test.js +170 -0
  46. package/dist/src/commands/extensions/update.test.js.map +1 -0
  47. package/dist/src/commands/extensions/validate.js +2 -0
  48. package/dist/src/commands/extensions/validate.js.map +1 -1
  49. package/dist/src/commands/extensions/validate.test.js +3 -0
  50. package/dist/src/commands/extensions/validate.test.js.map +1 -1
  51. package/dist/src/commands/extensions.js +2 -0
  52. package/dist/src/commands/extensions.js.map +1 -1
  53. package/dist/src/commands/mcp/add.js +2 -0
  54. package/dist/src/commands/mcp/add.js.map +1 -1
  55. package/dist/src/commands/mcp/add.test.js +11 -3
  56. package/dist/src/commands/mcp/add.test.js.map +1 -1
  57. package/dist/src/commands/mcp/list.js +2 -0
  58. package/dist/src/commands/mcp/list.js.map +1 -1
  59. package/dist/src/commands/mcp/list.test.js +4 -6
  60. package/dist/src/commands/mcp/list.test.js.map +1 -1
  61. package/dist/src/commands/mcp/remove.js +2 -0
  62. package/dist/src/commands/mcp/remove.js.map +1 -1
  63. package/dist/src/commands/mcp/remove.test.js +26 -12
  64. package/dist/src/commands/mcp/remove.test.js.map +1 -1
  65. package/dist/src/commands/mcp.js +2 -0
  66. package/dist/src/commands/mcp.js.map +1 -1
  67. package/dist/src/commands/mcp.test.js +1 -0
  68. package/dist/src/commands/mcp.test.js.map +1 -1
  69. package/dist/src/commands/utils.d.ts +6 -0
  70. package/dist/src/commands/utils.js +11 -0
  71. package/dist/src/commands/utils.js.map +1 -0
  72. package/dist/src/config/config.d.ts +2 -1
  73. package/dist/src/config/config.js +36 -23
  74. package/dist/src/config/config.js.map +1 -1
  75. package/dist/src/config/config.test.js +69 -12
  76. package/dist/src/config/config.test.js.map +1 -1
  77. package/dist/src/config/extension.test.js +131 -125
  78. package/dist/src/config/extension.test.js.map +1 -1
  79. package/dist/src/config/keyBindings.d.ts +1 -1
  80. package/dist/src/config/keyBindings.js +4 -4
  81. package/dist/src/config/keyBindings.js.map +1 -1
  82. package/dist/src/config/settingsSchema.d.ts +12 -3
  83. package/dist/src/config/settingsSchema.js +13 -4
  84. package/dist/src/config/settingsSchema.js.map +1 -1
  85. package/dist/src/config/settingsSchema.test.js +1 -1
  86. package/dist/src/config/settingsSchema.test.js.map +1 -1
  87. package/dist/src/config/trustedFolders.d.ts +1 -1
  88. package/dist/src/config/trustedFolders.js +24 -17
  89. package/dist/src/config/trustedFolders.js.map +1 -1
  90. package/dist/src/gemini.d.ts +2 -1
  91. package/dist/src/gemini.js +73 -15
  92. package/dist/src/gemini.js.map +1 -1
  93. package/dist/src/gemini.test.js +56 -15
  94. package/dist/src/gemini.test.js.map +1 -1
  95. package/dist/src/generated/git-commit.d.ts +2 -2
  96. package/dist/src/generated/git-commit.js +2 -2
  97. package/dist/src/nonInteractiveCli.js +4 -1
  98. package/dist/src/nonInteractiveCli.js.map +1 -1
  99. package/dist/src/nonInteractiveCli.test.js +2 -2
  100. package/dist/src/nonInteractiveCli.test.js.map +1 -1
  101. package/dist/src/services/CommandService.test.js +3 -2
  102. package/dist/src/services/CommandService.test.js.map +1 -1
  103. package/dist/src/services/McpPromptLoader.js +5 -3
  104. package/dist/src/services/McpPromptLoader.js.map +1 -1
  105. package/dist/src/services/McpPromptLoader.test.js +29 -1
  106. package/dist/src/services/McpPromptLoader.test.js.map +1 -1
  107. package/dist/src/test-utils/render.d.ts +26 -2
  108. package/dist/src/test-utils/render.js +76 -3
  109. package/dist/src/test-utils/render.js.map +1 -1
  110. package/dist/src/ui/AppContainer.js +112 -42
  111. package/dist/src/ui/AppContainer.js.map +1 -1
  112. package/dist/src/ui/AppContainer.test.js +181 -103
  113. package/dist/src/ui/AppContainer.test.js.map +1 -1
  114. package/dist/src/ui/auth/AuthDialog.js +17 -10
  115. package/dist/src/ui/auth/AuthDialog.js.map +1 -1
  116. package/dist/src/ui/auth/AuthDialog.test.js +7 -4
  117. package/dist/src/ui/auth/AuthDialog.test.js.map +1 -1
  118. package/dist/src/ui/commands/aboutCommand.js +8 -1
  119. package/dist/src/ui/commands/aboutCommand.js.map +1 -1
  120. package/dist/src/ui/commands/aboutCommand.test.js +4 -0
  121. package/dist/src/ui/commands/aboutCommand.test.js.map +1 -1
  122. package/dist/src/ui/commands/clearCommand.js +12 -0
  123. package/dist/src/ui/commands/clearCommand.js.map +1 -1
  124. package/dist/src/ui/commands/clearCommand.test.js +5 -0
  125. package/dist/src/ui/commands/clearCommand.test.js.map +1 -1
  126. package/dist/src/ui/commands/directoryCommand.d.ts +0 -1
  127. package/dist/src/ui/commands/directoryCommand.js +104 -43
  128. package/dist/src/ui/commands/directoryCommand.js.map +1 -1
  129. package/dist/src/ui/commands/directoryCommand.test.js +91 -2
  130. package/dist/src/ui/commands/directoryCommand.test.js.map +1 -1
  131. package/dist/src/ui/commands/memoryCommand.js +1 -0
  132. package/dist/src/ui/commands/memoryCommand.js.map +1 -1
  133. package/dist/src/ui/commands/memoryCommand.test.js +3 -0
  134. package/dist/src/ui/commands/memoryCommand.test.js.map +1 -1
  135. package/dist/src/ui/commands/permissionsCommand.js +62 -5
  136. package/dist/src/ui/commands/permissionsCommand.js.map +1 -1
  137. package/dist/src/ui/commands/permissionsCommand.test.js +60 -4
  138. package/dist/src/ui/commands/permissionsCommand.test.js.map +1 -1
  139. package/dist/src/ui/commands/setupGithubCommand.d.ts +1 -0
  140. package/dist/src/ui/commands/setupGithubCommand.js +82 -45
  141. package/dist/src/ui/commands/setupGithubCommand.js.map +1 -1
  142. package/dist/src/ui/commands/setupGithubCommand.test.js +35 -5
  143. package/dist/src/ui/commands/setupGithubCommand.test.js.map +1 -1
  144. package/dist/src/ui/commands/types.d.ts +7 -1
  145. package/dist/src/ui/commands/types.js.map +1 -1
  146. package/dist/src/ui/components/AboutBox.d.ts +1 -0
  147. package/dist/src/ui/components/AboutBox.js +1 -1
  148. package/dist/src/ui/components/AboutBox.js.map +1 -1
  149. package/dist/src/ui/components/AppHeader.js +3 -22
  150. package/dist/src/ui/components/AppHeader.js.map +1 -1
  151. package/dist/src/ui/components/AppHeader.test.js +10 -4
  152. package/dist/src/ui/components/AppHeader.test.js.map +1 -1
  153. package/dist/src/ui/components/AsciiArt.d.ts +6 -6
  154. package/dist/src/ui/components/AsciiArt.js +16 -15
  155. package/dist/src/ui/components/AsciiArt.js.map +1 -1
  156. package/dist/src/ui/components/Banner.d.ts +4 -2
  157. package/dist/src/ui/components/Banner.js +18 -4
  158. package/dist/src/ui/components/Banner.js.map +1 -1
  159. package/dist/src/ui/components/DebugProfiler.d.ts +1 -0
  160. package/dist/src/ui/components/DebugProfiler.js +23 -34
  161. package/dist/src/ui/components/DebugProfiler.js.map +1 -1
  162. package/dist/src/ui/components/DebugProfiler.test.js +1 -0
  163. package/dist/src/ui/components/DebugProfiler.test.js.map +1 -1
  164. package/dist/src/ui/components/DialogManager.js +7 -2
  165. package/dist/src/ui/components/DialogManager.js.map +1 -1
  166. package/dist/src/ui/components/GradientRegression.test.js +22 -1
  167. package/dist/src/ui/components/GradientRegression.test.js.map +1 -1
  168. package/dist/src/ui/components/Header.test.js +27 -2
  169. package/dist/src/ui/components/Header.test.js.map +1 -1
  170. package/dist/src/ui/components/HistoryItemDisplay.js +2 -1
  171. package/dist/src/ui/components/HistoryItemDisplay.js.map +1 -1
  172. package/dist/src/ui/components/InputPrompt.js +29 -35
  173. package/dist/src/ui/components/InputPrompt.js.map +1 -1
  174. package/dist/src/ui/components/InputPrompt.test.js +104 -24
  175. package/dist/src/ui/components/InputPrompt.test.js.map +1 -1
  176. package/dist/src/ui/components/LoadingIndicator.js +6 -1
  177. package/dist/src/ui/components/LoadingIndicator.js.map +1 -1
  178. package/dist/src/ui/components/ModelDialog.js +2 -2
  179. package/dist/src/ui/components/ModelDialog.js.map +1 -1
  180. package/dist/src/ui/components/MultiFolderTrustDialog.d.ts +23 -0
  181. package/dist/src/ui/components/MultiFolderTrustDialog.js +90 -0
  182. package/dist/src/ui/components/MultiFolderTrustDialog.js.map +1 -0
  183. package/dist/src/ui/components/MultiFolderTrustDialog.test.d.ts +6 -0
  184. package/dist/src/ui/components/MultiFolderTrustDialog.test.js +161 -0
  185. package/dist/src/ui/components/MultiFolderTrustDialog.test.js.map +1 -0
  186. package/dist/src/ui/components/PermissionsModifyTrustDialog.d.ts +5 -2
  187. package/dist/src/ui/components/PermissionsModifyTrustDialog.js +12 -7
  188. package/dist/src/ui/components/PermissionsModifyTrustDialog.js.map +1 -1
  189. package/dist/src/ui/components/PermissionsModifyTrustDialog.test.js +2 -2
  190. package/dist/src/ui/components/PermissionsModifyTrustDialog.test.js.map +1 -1
  191. package/dist/src/ui/components/ProQuotaDialog.js +2 -2
  192. package/dist/src/ui/components/ProQuotaDialog.js.map +1 -1
  193. package/dist/src/ui/components/SettingsDialog.d.ts +3 -1
  194. package/dist/src/ui/components/SettingsDialog.js +4 -1
  195. package/dist/src/ui/components/SettingsDialog.js.map +1 -1
  196. package/dist/src/ui/components/ThemedGradient.js +2 -1
  197. package/dist/src/ui/components/ThemedGradient.js.map +1 -1
  198. package/dist/src/ui/components/messages/ModelMessage.d.ts +11 -0
  199. package/dist/src/ui/components/messages/ModelMessage.js +5 -0
  200. package/dist/src/ui/components/messages/ModelMessage.js.map +1 -0
  201. package/dist/src/ui/components/messages/ShellToolMessage.d.ts +14 -0
  202. package/dist/src/ui/components/messages/ShellToolMessage.js +76 -0
  203. package/dist/src/ui/components/messages/ShellToolMessage.js.map +1 -0
  204. package/dist/src/ui/components/messages/ShellToolMessage.test.d.ts +6 -0
  205. package/dist/src/ui/components/messages/ShellToolMessage.test.js +123 -0
  206. package/dist/src/ui/components/messages/ShellToolMessage.test.js.map +1 -0
  207. package/dist/src/ui/components/messages/ToolGroupMessage.js +19 -1
  208. package/dist/src/ui/components/messages/ToolGroupMessage.js.map +1 -1
  209. package/dist/src/ui/components/messages/ToolMessage.d.ts +6 -4
  210. package/dist/src/ui/components/messages/ToolMessage.js +15 -102
  211. package/dist/src/ui/components/messages/ToolMessage.js.map +1 -1
  212. package/dist/src/ui/components/messages/ToolMessage.test.js +13 -5
  213. package/dist/src/ui/components/messages/ToolMessage.test.js.map +1 -1
  214. package/dist/src/ui/components/messages/ToolResultDisplay.d.ts +13 -0
  215. package/dist/src/ui/components/messages/ToolResultDisplay.js +54 -0
  216. package/dist/src/ui/components/messages/ToolResultDisplay.js.map +1 -0
  217. package/dist/src/ui/components/messages/ToolShared.d.ts +23 -0
  218. package/dist/src/ui/components/messages/ToolShared.js +40 -0
  219. package/dist/src/ui/components/messages/ToolShared.js.map +1 -0
  220. package/dist/src/ui/components/shared/text-buffer.d.ts +1 -0
  221. package/dist/src/ui/components/shared/text-buffer.js +7 -1
  222. package/dist/src/ui/components/shared/text-buffer.js.map +1 -1
  223. package/dist/src/ui/constants/tips.d.ts +6 -0
  224. package/dist/src/ui/constants/tips.js +168 -0
  225. package/dist/src/ui/constants/tips.js.map +1 -0
  226. package/dist/src/ui/constants/wittyPhrases.d.ts +6 -0
  227. package/dist/src/ui/constants/wittyPhrases.js +137 -0
  228. package/dist/src/ui/constants/wittyPhrases.js.map +1 -0
  229. package/dist/src/ui/constants.d.ts +1 -0
  230. package/dist/src/ui/constants.js +1 -0
  231. package/dist/src/ui/constants.js.map +1 -1
  232. package/dist/src/ui/contexts/KeypressContext.js +21 -11
  233. package/dist/src/ui/contexts/KeypressContext.js.map +1 -1
  234. package/dist/src/ui/contexts/KeypressContext.test.js +29 -10
  235. package/dist/src/ui/contexts/KeypressContext.test.js.map +1 -1
  236. package/dist/src/ui/contexts/UIActionsContext.d.ts +3 -0
  237. package/dist/src/ui/contexts/UIActionsContext.js +1 -0
  238. package/dist/src/ui/contexts/UIActionsContext.js.map +1 -1
  239. package/dist/src/ui/contexts/UIStateContext.d.ts +4 -0
  240. package/dist/src/ui/contexts/UIStateContext.js.map +1 -1
  241. package/dist/src/ui/hooks/shellCommandProcessor.d.ts +1 -0
  242. package/dist/src/ui/hooks/shellCommandProcessor.js +11 -5
  243. package/dist/src/ui/hooks/shellCommandProcessor.js.map +1 -1
  244. package/dist/src/ui/hooks/shellCommandProcessor.test.js +4 -3
  245. package/dist/src/ui/hooks/shellCommandProcessor.test.js.map +1 -1
  246. package/dist/src/ui/hooks/slashCommandProcessor.d.ts +5 -3
  247. package/dist/src/ui/hooks/slashCommandProcessor.js +14 -5
  248. package/dist/src/ui/hooks/slashCommandProcessor.js.map +1 -1
  249. package/dist/src/ui/hooks/slashCommandProcessor.test.js +1 -0
  250. package/dist/src/ui/hooks/slashCommandProcessor.test.js.map +1 -1
  251. package/dist/src/ui/hooks/useAlternateBuffer.js +1 -1
  252. package/dist/src/ui/hooks/useAlternateBuffer.js.map +1 -1
  253. package/dist/src/ui/hooks/useBanner.d.ts +14 -0
  254. package/dist/src/ui/hooks/useBanner.js +48 -0
  255. package/dist/src/ui/hooks/useBanner.js.map +1 -0
  256. package/dist/src/ui/hooks/useBanner.test.d.ts +6 -0
  257. package/dist/src/ui/hooks/useBanner.test.js +92 -0
  258. package/dist/src/ui/hooks/useBanner.test.js.map +1 -0
  259. package/dist/src/ui/hooks/useBracketedPaste.js +3 -2
  260. package/dist/src/ui/hooks/useBracketedPaste.js.map +1 -1
  261. package/dist/src/ui/hooks/useCommandCompletion.test.js +5 -5
  262. package/dist/src/ui/hooks/useCommandCompletion.test.js.map +1 -1
  263. package/dist/src/ui/hooks/useConsoleMessages.d.ts +0 -1
  264. package/dist/src/ui/hooks/useConsoleMessages.js +26 -1
  265. package/dist/src/ui/hooks/useConsoleMessages.js.map +1 -1
  266. package/dist/src/ui/hooks/useConsoleMessages.test.js +37 -5
  267. package/dist/src/ui/hooks/useConsoleMessages.test.js.map +1 -1
  268. package/dist/src/ui/hooks/useEditorSettings.d.ts +2 -2
  269. package/dist/src/ui/hooks/useEditorSettings.js.map +1 -1
  270. package/dist/src/ui/hooks/useEditorSettings.test.js.map +1 -1
  271. package/dist/src/ui/hooks/useFolderTrust.js +11 -1
  272. package/dist/src/ui/hooks/useFolderTrust.js.map +1 -1
  273. package/dist/src/ui/hooks/useFolderTrust.test.js +22 -0
  274. package/dist/src/ui/hooks/useFolderTrust.test.js.map +1 -1
  275. package/dist/src/ui/hooks/useGeminiStream.d.ts +2 -1
  276. package/dist/src/ui/hooks/useGeminiStream.js +69 -12
  277. package/dist/src/ui/hooks/useGeminiStream.js.map +1 -1
  278. package/dist/src/ui/hooks/useGeminiStream.test.js +20 -21
  279. package/dist/src/ui/hooks/useGeminiStream.test.js.map +1 -1
  280. package/dist/src/ui/hooks/useHistoryManager.d.ts +5 -2
  281. package/dist/src/ui/hooks/useHistoryManager.js +39 -3
  282. package/dist/src/ui/hooks/useHistoryManager.js.map +1 -1
  283. package/dist/src/ui/hooks/useInactivityTimer.d.ts +14 -0
  284. package/dist/src/ui/hooks/useInactivityTimer.js +30 -0
  285. package/dist/src/ui/hooks/useInactivityTimer.js.map +1 -0
  286. package/dist/src/ui/hooks/useIncludeDirsTrust.d.ts +8 -0
  287. package/dist/src/ui/hooks/useIncludeDirsTrust.js +119 -0
  288. package/dist/src/ui/hooks/useIncludeDirsTrust.js.map +1 -0
  289. package/dist/src/ui/hooks/useIncludeDirsTrust.test.d.ts +6 -0
  290. package/dist/src/ui/hooks/useIncludeDirsTrust.test.js +151 -0
  291. package/dist/src/ui/hooks/useIncludeDirsTrust.test.js.map +1 -0
  292. package/dist/src/ui/hooks/useInputHistoryStore.test.js +4 -1
  293. package/dist/src/ui/hooks/useInputHistoryStore.test.js.map +1 -1
  294. package/dist/src/ui/hooks/useKittyKeyboardProtocol.d.ts +0 -1
  295. package/dist/src/ui/hooks/useKittyKeyboardProtocol.js +1 -2
  296. package/dist/src/ui/hooks/useKittyKeyboardProtocol.js.map +1 -1
  297. package/dist/src/ui/hooks/useLoadingIndicator.d.ts +1 -1
  298. package/dist/src/ui/hooks/useLoadingIndicator.js +2 -2
  299. package/dist/src/ui/hooks/useLoadingIndicator.js.map +1 -1
  300. package/dist/src/ui/hooks/useLoadingIndicator.test.js +21 -9
  301. package/dist/src/ui/hooks/useLoadingIndicator.test.js.map +1 -1
  302. package/dist/src/ui/hooks/useMouseClick.d.ts +12 -0
  303. package/dist/src/ui/hooks/useMouseClick.js +28 -0
  304. package/dist/src/ui/hooks/useMouseClick.js.map +1 -0
  305. package/dist/src/ui/hooks/useMouseClick.test.d.ts +6 -0
  306. package/dist/src/ui/hooks/useMouseClick.test.js +59 -0
  307. package/dist/src/ui/hooks/useMouseClick.test.js.map +1 -0
  308. package/dist/src/ui/hooks/usePermissionsModifyTrust.d.ts +2 -2
  309. package/dist/src/ui/hooks/usePermissionsModifyTrust.js +44 -7
  310. package/dist/src/ui/hooks/usePermissionsModifyTrust.js.map +1 -1
  311. package/dist/src/ui/hooks/usePermissionsModifyTrust.test.js +191 -89
  312. package/dist/src/ui/hooks/usePermissionsModifyTrust.test.js.map +1 -1
  313. package/dist/src/ui/hooks/usePhraseCycler.d.ts +4 -3
  314. package/dist/src/ui/hooks/usePhraseCycler.js +54 -305
  315. package/dist/src/ui/hooks/usePhraseCycler.js.map +1 -1
  316. package/dist/src/ui/hooks/usePhraseCycler.test.js +109 -30
  317. package/dist/src/ui/hooks/usePhraseCycler.test.js.map +1 -1
  318. package/dist/src/ui/hooks/useQuotaAndFallback.js +9 -3
  319. package/dist/src/ui/hooks/useQuotaAndFallback.js.map +1 -1
  320. package/dist/src/ui/hooks/useQuotaAndFallback.test.js +25 -3
  321. package/dist/src/ui/hooks/useQuotaAndFallback.test.js.map +1 -1
  322. package/dist/src/ui/hooks/useReactToolScheduler.d.ts +3 -2
  323. package/dist/src/ui/hooks/useReactToolScheduler.js +4 -8
  324. package/dist/src/ui/hooks/useReactToolScheduler.js.map +1 -1
  325. package/dist/src/ui/hooks/useReactToolScheduler.test.js +1 -8
  326. package/dist/src/ui/hooks/useReactToolScheduler.test.js.map +1 -1
  327. package/dist/src/ui/hooks/useReverseSearchCompletion.test.js +18 -12
  328. package/dist/src/ui/hooks/useReverseSearchCompletion.test.js.map +1 -1
  329. package/dist/src/ui/hooks/useSessionBrowser.js +13 -4
  330. package/dist/src/ui/hooks/useSessionBrowser.js.map +1 -1
  331. package/dist/src/ui/hooks/useSessionBrowser.test.js +37 -0
  332. package/dist/src/ui/hooks/useSessionBrowser.test.js.map +1 -1
  333. package/dist/src/ui/hooks/useSessionResume.js +1 -1
  334. package/dist/src/ui/hooks/useSessionResume.js.map +1 -1
  335. package/dist/src/ui/hooks/useSessionResume.test.js +4 -4
  336. package/dist/src/ui/hooks/useSessionResume.test.js.map +1 -1
  337. package/dist/src/ui/hooks/useThemeCommand.d.ts +2 -2
  338. package/dist/src/ui/hooks/useThemeCommand.js.map +1 -1
  339. package/dist/src/ui/hooks/useToolScheduler.test.js +2 -2
  340. package/dist/src/ui/hooks/useToolScheduler.test.js.map +1 -1
  341. package/dist/src/ui/keyMatchers.test.js +2 -2
  342. package/dist/src/ui/keyMatchers.test.js.map +1 -1
  343. package/dist/src/ui/layouts/DefaultAppLayout.js +1 -1
  344. package/dist/src/ui/layouts/DefaultAppLayout.js.map +1 -1
  345. package/dist/src/ui/noninteractive/nonInteractiveUi.js +1 -0
  346. package/dist/src/ui/noninteractive/nonInteractiveUi.js.map +1 -1
  347. package/dist/src/ui/themes/theme-manager.test.js +2 -1
  348. package/dist/src/ui/themes/theme-manager.test.js.map +1 -1
  349. package/dist/src/ui/types.d.ts +7 -1
  350. package/dist/src/ui/types.js.map +1 -1
  351. package/dist/src/ui/utils/ConsolePatcher.js +6 -9
  352. package/dist/src/ui/utils/ConsolePatcher.js.map +1 -1
  353. package/dist/src/ui/utils/commandUtils.js +3 -86
  354. package/dist/src/ui/utils/commandUtils.js.map +1 -1
  355. package/dist/src/ui/utils/commandUtils.test.js +21 -273
  356. package/dist/src/ui/utils/commandUtils.test.js.map +1 -1
  357. package/dist/src/ui/utils/directoryUtils.d.ts +6 -0
  358. package/dist/src/ui/utils/directoryUtils.js +21 -0
  359. package/dist/src/ui/utils/directoryUtils.js.map +1 -0
  360. package/dist/src/ui/utils/directoryUtils.test.d.ts +6 -0
  361. package/dist/src/ui/utils/directoryUtils.test.js +52 -0
  362. package/dist/src/ui/utils/directoryUtils.test.js.map +1 -0
  363. package/dist/src/ui/utils/kittyProtocolDetector.d.ts +6 -2
  364. package/dist/src/ui/utils/kittyProtocolDetector.js +47 -43
  365. package/dist/src/ui/utils/kittyProtocolDetector.js.map +1 -1
  366. package/dist/src/ui/utils/mouse.d.ts +2 -2
  367. package/dist/src/ui/utils/mouse.js +2 -11
  368. package/dist/src/ui/utils/mouse.js.map +1 -1
  369. package/dist/src/utils/cleanup.d.ts +2 -0
  370. package/dist/src/utils/cleanup.js +16 -0
  371. package/dist/src/utils/cleanup.js.map +1 -1
  372. package/dist/src/utils/errors.js +10 -0
  373. package/dist/src/utils/errors.js.map +1 -1
  374. package/dist/src/utils/events.d.ts +0 -2
  375. package/dist/src/utils/events.js +0 -1
  376. package/dist/src/utils/events.js.map +1 -1
  377. package/dist/src/utils/installationInfo.test.js +8 -9
  378. package/dist/src/utils/installationInfo.test.js.map +1 -1
  379. package/dist/src/utils/persistentState.d.ts +1 -1
  380. package/dist/src/utils/sessionCleanup.test.js +4 -2
  381. package/dist/src/utils/sessionCleanup.test.js.map +1 -1
  382. package/dist/src/utils/sessionUtils.d.ts +5 -0
  383. package/dist/src/utils/sessionUtils.js +6 -1
  384. package/dist/src/utils/sessionUtils.js.map +1 -1
  385. package/dist/src/utils/sessions.test.d.ts +6 -0
  386. package/dist/src/utils/sessions.test.js +516 -0
  387. package/dist/src/utils/sessions.test.js.map +1 -0
  388. package/dist/src/validateNonInterActiveAuth.js +2 -0
  389. package/dist/src/validateNonInterActiveAuth.js.map +1 -1
  390. package/dist/src/zed-integration/acp.d.ts +2 -24
  391. package/dist/src/zed-integration/acp.js +2 -156
  392. package/dist/src/zed-integration/acp.js.map +1 -1
  393. package/dist/src/zed-integration/acp.test.d.ts +6 -0
  394. package/dist/src/zed-integration/acp.test.js +227 -0
  395. package/dist/src/zed-integration/acp.test.js.map +1 -0
  396. package/dist/src/zed-integration/connection.d.ts +28 -0
  397. package/dist/src/zed-integration/connection.js +163 -0
  398. package/dist/src/zed-integration/connection.js.map +1 -0
  399. package/dist/src/zed-integration/schema.d.ts +69 -13
  400. package/dist/src/zed-integration/schema.js +6 -5
  401. package/dist/src/zed-integration/schema.js.map +1 -1
  402. package/dist/src/zed-integration/zedIntegration.d.ts +0 -7
  403. package/dist/src/zed-integration/zedIntegration.js +9 -21
  404. package/dist/src/zed-integration/zedIntegration.js.map +1 -1
  405. package/dist/tsconfig.tsbuildinfo +1 -1
  406. package/package.json +8 -7
@@ -9,7 +9,9 @@ import { act } from 'react';
9
9
  import { render } from '../../test-utils/render.js';
10
10
  import { useLoadingIndicator } from './useLoadingIndicator.js';
11
11
  import { StreamingState } from '../types.js';
12
- import { WITTY_LOADING_PHRASES, PHRASE_CHANGE_INTERVAL_MS, } from './usePhraseCycler.js';
12
+ import { PHRASE_CHANGE_INTERVAL_MS, INTERACTIVE_SHELL_WAITING_PHRASE, } from './usePhraseCycler.js';
13
+ import { WITTY_LOADING_PHRASES } from '../constants/wittyPhrases.js';
14
+ import { INFORMATIVE_TIPS } from '../constants/tips.js';
13
15
  describe('useLoadingIndicator', () => {
14
16
  beforeEach(() => {
15
17
  vi.useFakeTimers();
@@ -19,13 +21,13 @@ describe('useLoadingIndicator', () => {
19
21
  act(() => vi.runOnlyPendingTimers);
20
22
  vi.restoreAllMocks();
21
23
  });
22
- const renderLoadingIndicatorHook = (initialStreamingState) => {
24
+ const renderLoadingIndicatorHook = (initialStreamingState, initialIsInteractiveShellWaiting = false, initialLastOutputTime = 0) => {
23
25
  let hookResult;
24
- function TestComponent({ streamingState, }) {
25
- hookResult = useLoadingIndicator(streamingState);
26
+ function TestComponent({ streamingState, isInteractiveShellWaiting, lastOutputTime, }) {
27
+ hookResult = useLoadingIndicator(streamingState, undefined, isInteractiveShellWaiting, lastOutputTime);
26
28
  return null;
27
29
  }
28
- const { rerender } = render(_jsx(TestComponent, { streamingState: initialStreamingState }));
30
+ const { rerender } = render(_jsx(TestComponent, { streamingState: initialStreamingState, isInteractiveShellWaiting: initialIsInteractiveShellWaiting, lastOutputTime: initialLastOutputTime }));
29
31
  return {
30
32
  result: {
31
33
  get current() {
@@ -41,16 +43,26 @@ describe('useLoadingIndicator', () => {
41
43
  expect(result.current.elapsedTime).toBe(0);
42
44
  expect(WITTY_LOADING_PHRASES).toContain(result.current.currentLoadingPhrase);
43
45
  });
44
- it('should reflect values when Responding', async () => {
46
+ it('should show interactive shell waiting phrase when isInteractiveShellWaiting is true after 5s', async () => {
45
47
  vi.spyOn(Math, 'random').mockImplementation(() => 0.5); // Always witty
48
+ const { result } = renderLoadingIndicatorHook(StreamingState.Responding, true, 1);
49
+ // Initially should be witty phrase or tip
50
+ expect([...WITTY_LOADING_PHRASES, ...INFORMATIVE_TIPS]).toContain(result.current.currentLoadingPhrase);
51
+ await act(async () => {
52
+ await vi.advanceTimersByTimeAsync(5000);
53
+ });
54
+ expect(result.current.currentLoadingPhrase).toBe(INTERACTIVE_SHELL_WAITING_PHRASE);
55
+ });
56
+ it('should reflect values when Responding', async () => {
57
+ vi.spyOn(Math, 'random').mockImplementation(() => 0.5); // Always witty for subsequent phrases
46
58
  const { result } = renderLoadingIndicatorHook(StreamingState.Responding);
47
- // Initial state before timers advance
59
+ // Initial phrase on first activation will be a tip, not necessarily from witty phrases
48
60
  expect(result.current.elapsedTime).toBe(0);
49
- expect(WITTY_LOADING_PHRASES).toContain(result.current.currentLoadingPhrase);
61
+ // On first activation, it may show a tip, so we can't guarantee it's in WITTY_LOADING_PHRASES
50
62
  await act(async () => {
51
63
  await vi.advanceTimersByTimeAsync(PHRASE_CHANGE_INTERVAL_MS + 1);
52
64
  });
53
- // Phrase should cycle if PHRASE_CHANGE_INTERVAL_MS has passed
65
+ // Phrase should cycle if PHRASE_CHANGE_INTERVAL_MS has passed, now it should be witty since first activation already happened
54
66
  expect(WITTY_LOADING_PHRASES).toContain(result.current.currentLoadingPhrase);
55
67
  });
56
68
  it('should show waiting phrase and retain elapsedTime when WaitingForConfirmation', async () => {
@@ -1 +1 @@
1
- {"version":3,"file":"useLoadingIndicator.test.js","sourceRoot":"","sources":["../../../../src/ui/hooks/useLoadingIndicator.test.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useLoadingIndicator.test.js","sourceRoot":"","sources":["../../../../src/ui/hooks/useLoadingIndicator.test.tsx"],"names":[],"mappings":";AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACzE,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAC5B,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EACL,yBAAyB,EACzB,gCAAgC,GACjC,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExD,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACnC,UAAU,CAAC,GAAG,EAAE;QACd,EAAE,CAAC,aAAa,EAAE,CAAC;IACrB,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,EAAE,CAAC,aAAa,EAAE,CAAC,CAAC,sCAAsC;QAC1D,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,oBAAoB,CAAC,CAAC;QACnC,EAAE,CAAC,eAAe,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,MAAM,0BAA0B,GAAG,CACjC,qBAAqC,EACrC,mCAA4C,KAAK,EACjD,wBAAgC,CAAC,EACjC,EAAE;QACF,IAAI,UAAkD,CAAC;QACvD,SAAS,aAAa,CAAC,EACrB,cAAc,EACd,yBAAyB,EACzB,cAAc,GAKf;YACC,UAAU,GAAG,mBAAmB,CAC9B,cAAc,EACd,SAAS,EACT,yBAAyB,EACzB,cAAc,CACf,CAAC;YACF,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,CACzB,KAAC,aAAa,IACZ,cAAc,EAAE,qBAAqB,EACrC,yBAAyB,EAAE,gCAAgC,EAC3D,cAAc,EAAE,qBAAqB,GACrC,CACH,CAAC;QACF,OAAO;YACL,MAAM,EAAE;gBACN,IAAI,OAAO;oBACT,OAAO,UAAU,CAAC;gBACpB,CAAC;aACF;YACD,QAAQ,EAAE,CAAC,QAIV,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAC,aAAa,OAAK,QAAQ,GAAI,CAAC;SAChD,CAAC;IACJ,CAAC,CAAC;IAEF,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QACzD,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,eAAe;QACvE,MAAM,EAAE,MAAM,EAAE,GAAG,0BAA0B,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QACnE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC3C,MAAM,CAAC,qBAAqB,CAAC,CAAC,SAAS,CACrC,MAAM,CAAC,OAAO,CAAC,oBAAoB,CACpC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8FAA8F,EAAE,KAAK,IAAI,EAAE;QAC5G,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,eAAe;QACvE,MAAM,EAAE,MAAM,EAAE,GAAG,0BAA0B,CAC3C,cAAc,CAAC,UAAU,EACzB,IAAI,EACJ,CAAC,CACF,CAAC;QAEF,0CAA0C;QAC1C,MAAM,CAAC,CAAC,GAAG,qBAAqB,EAAE,GAAG,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAC/D,MAAM,CAAC,OAAO,CAAC,oBAAoB,CACpC,CAAC;QAEF,MAAM,GAAG,CAAC,KAAK,IAAI,EAAE;YACnB,MAAM,EAAE,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAC9C,gCAAgC,CACjC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uCAAuC,EAAE,KAAK,IAAI,EAAE;QACrD,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,sCAAsC;QAC9F,MAAM,EAAE,MAAM,EAAE,GAAG,0BAA0B,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QAEzE,uFAAuF;QACvF,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC3C,8FAA8F;QAE9F,MAAM,GAAG,CAAC,KAAK,IAAI,EAAE;YACnB,MAAM,EAAE,CAAC,wBAAwB,CAAC,yBAAyB,GAAG,CAAC,CAAC,CAAC;QACnE,CAAC,CAAC,CAAC;QAEH,8HAA8H;QAC9H,MAAM,CAAC,qBAAqB,CAAC,CAAC,SAAS,CACrC,MAAM,CAAC,OAAO,CAAC,oBAAoB,CACpC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+EAA+E,EAAE,KAAK,IAAI,EAAE;QAC7F,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,0BAA0B,CACrD,cAAc,CAAC,UAAU,CAC1B,CAAC;QAEF,MAAM,GAAG,CAAC,KAAK,IAAI,EAAE;YACnB,MAAM,EAAE,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC;QAC3C,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAE5C,GAAG,CAAC,GAAG,EAAE;YACP,QAAQ,CAAC,EAAE,cAAc,EAAE,cAAc,CAAC,sBAAsB,EAAE,CAAC,CAAC;QACtE,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAC9C,kCAAkC,CACnC,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,kCAAkC;QAE/E,mCAAmC;QACnC,MAAM,GAAG,CAAC,KAAK,IAAI,EAAE;YACnB,MAAM,EAAE,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8GAA8G,EAAE,KAAK,IAAI,EAAE;QAC5H,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,eAAe;QACvE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,0BAA0B,CACrD,cAAc,CAAC,UAAU,CAC1B,CAAC;QAEF,MAAM,GAAG,CAAC,KAAK,IAAI,EAAE;YACnB,MAAM,EAAE,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK;QAChD,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAE3C,GAAG,CAAC,GAAG,EAAE;YACP,QAAQ,CAAC,EAAE,cAAc,EAAE,cAAc,CAAC,sBAAsB,EAAE,CAAC,CAAC;QACtE,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC3C,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAC9C,kCAAkC,CACnC,CAAC;QAEF,GAAG,CAAC,GAAG,EAAE;YACP,QAAQ,CAAC,EAAE,cAAc,EAAE,cAAc,CAAC,UAAU,EAAE,CAAC,CAAC;QAC1D,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe;QAC3D,MAAM,CAAC,qBAAqB,CAAC,CAAC,SAAS,CACrC,MAAM,CAAC,OAAO,CAAC,oBAAoB,CACpC,CAAC;QAEF,MAAM,GAAG,CAAC,KAAK,IAAI,EAAE;YACnB,MAAM,EAAE,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mFAAmF,EAAE,KAAK,IAAI,EAAE;QACjG,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,eAAe;QACvE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,0BAA0B,CACrD,cAAc,CAAC,UAAU,CAC1B,CAAC;QAEF,MAAM,GAAG,CAAC,KAAK,IAAI,EAAE;YACnB,MAAM,EAAE,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM;QAClD,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAE5C,GAAG,CAAC,GAAG,EAAE;YACP,QAAQ,CAAC,EAAE,cAAc,EAAE,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC3C,MAAM,CAAC,qBAAqB,CAAC,CAAC,SAAS,CACrC,MAAM,CAAC,OAAO,CAAC,oBAAoB,CACpC,CAAC;QAEF,2BAA2B;QAC3B,MAAM,GAAG,CAAC,KAAK,IAAI,EAAE;YACnB,MAAM,EAAE,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { type DOMElement } from 'ink';
7
+ import type React from 'react';
8
+ import { type MouseEvent } from '../contexts/MouseContext.js';
9
+ export declare const useMouseClick: (containerRef: React.RefObject<DOMElement | null>, handler: (event: MouseEvent, relativeX: number, relativeY: number) => void, options?: {
10
+ isActive?: boolean;
11
+ button?: "left" | "right";
12
+ }) => void;
@@ -0,0 +1,28 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { getBoundingBox } from 'ink';
7
+ import { useMouse } from '../contexts/MouseContext.js';
8
+ export const useMouseClick = (containerRef, handler, options = {}) => {
9
+ const { isActive = true, button = 'left' } = options;
10
+ useMouse((event) => {
11
+ const eventName = button === 'left' ? 'left-press' : 'right-release';
12
+ if (event.name === eventName && containerRef.current) {
13
+ const { x, y, width, height } = getBoundingBox(containerRef.current);
14
+ // Terminal mouse events are 1-based, Ink layout is 0-based.
15
+ const mouseX = event.col - 1;
16
+ const mouseY = event.row - 1;
17
+ const relativeX = mouseX - x;
18
+ const relativeY = mouseY - y;
19
+ if (relativeX >= 0 &&
20
+ relativeX < width &&
21
+ relativeY >= 0 &&
22
+ relativeY < height) {
23
+ handler(event, relativeX, relativeY);
24
+ }
25
+ }
26
+ }, { isActive });
27
+ };
28
+ //# sourceMappingURL=useMouseClick.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useMouseClick.js","sourceRoot":"","sources":["../../../../src/ui/hooks/useMouseClick.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,cAAc,EAAmB,MAAM,KAAK,CAAC;AAEtD,OAAO,EAAE,QAAQ,EAAmB,MAAM,6BAA6B,CAAC;AAExE,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,YAAgD,EAChD,OAA0E,EAC1E,UAA6D,EAAE,EAC/D,EAAE;IACF,MAAM,EAAE,QAAQ,GAAG,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,OAAO,CAAC;IAErD,QAAQ,CACN,CAAC,KAAiB,EAAE,EAAE;QACpB,MAAM,SAAS,GAAG,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,eAAe,CAAC;QACrE,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,YAAY,CAAC,OAAO,EAAE,CAAC;YACrD,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,cAAc,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;YACrE,4DAA4D;YAC5D,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC;YAC7B,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC;YAE7B,MAAM,SAAS,GAAG,MAAM,GAAG,CAAC,CAAC;YAC7B,MAAM,SAAS,GAAG,MAAM,GAAG,CAAC,CAAC;YAE7B,IACE,SAAS,IAAI,CAAC;gBACd,SAAS,GAAG,KAAK;gBACjB,SAAS,IAAI,CAAC;gBACd,SAAS,GAAG,MAAM,EAClB,CAAC;gBACD,OAAO,CAAC,KAAK,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;YACvC,CAAC;QACH,CAAC;IACH,CAAC,EACD,EAAE,QAAQ,EAAE,CACb,CAAC;AACJ,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,59 @@
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 { renderHook } from '../../test-utils/render.js';
8
+ import { useMouseClick } from './useMouseClick.js';
9
+ import { getBoundingBox } from 'ink';
10
+ // Mock ink
11
+ vi.mock('ink', async () => ({
12
+ getBoundingBox: vi.fn(),
13
+ }));
14
+ // Mock MouseContext
15
+ const mockUseMouse = vi.fn();
16
+ vi.mock('../contexts/MouseContext.js', async () => ({
17
+ useMouse: (cb, opts) => mockUseMouse(cb, opts),
18
+ }));
19
+ describe('useMouseClick', () => {
20
+ let handler;
21
+ let containerRef;
22
+ beforeEach(() => {
23
+ vi.clearAllMocks();
24
+ handler = vi.fn();
25
+ containerRef = { current: {} };
26
+ });
27
+ it('should call handler with relative coordinates when click is inside bounds', () => {
28
+ vi.mocked(getBoundingBox).mockReturnValue({
29
+ x: 10,
30
+ y: 5,
31
+ width: 20,
32
+ height: 10,
33
+ });
34
+ renderHook(() => useMouseClick(containerRef, handler));
35
+ // Get the callback registered with useMouse
36
+ expect(mockUseMouse).toHaveBeenCalled();
37
+ const callback = mockUseMouse.mock.calls[0][0];
38
+ // Simulate click inside: x=15 (col 16), y=7 (row 8)
39
+ // Terminal events are 1-based. col 16 -> mouseX 15. row 8 -> mouseY 7.
40
+ // relativeX = 15 - 10 = 5
41
+ // relativeY = 7 - 5 = 2
42
+ callback({ name: 'left-press', col: 16, row: 8 });
43
+ expect(handler).toHaveBeenCalledWith(expect.objectContaining({ name: 'left-press' }), 5, 2);
44
+ });
45
+ it('should not call handler when click is outside bounds', () => {
46
+ vi.mocked(getBoundingBox).mockReturnValue({
47
+ x: 10,
48
+ y: 5,
49
+ width: 20,
50
+ height: 10,
51
+ });
52
+ renderHook(() => useMouseClick(containerRef, handler));
53
+ const callback = mockUseMouse.mock.calls[0][0];
54
+ // Click outside: x=5 (col 6), y=7 (row 8) -> left of box
55
+ callback({ name: 'left-press', col: 6, row: 8 });
56
+ expect(handler).not.toHaveBeenCalled();
57
+ });
58
+ });
59
+ //# sourceMappingURL=useMouseClick.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useMouseClick.test.js","sourceRoot":"","sources":["../../../../src/ui/hooks/useMouseClick.test.ts"],"names":[],"mappings":"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"}
@@ -5,13 +5,13 @@
5
5
  */
6
6
  import { TrustLevel } from '../../config/trustedFolders.js';
7
7
  import { type UseHistoryManagerReturn } from './useHistoryManager.js';
8
- export declare const usePermissionsModifyTrust: (onExit: () => void, addItem: UseHistoryManagerReturn["addItem"]) => {
8
+ export declare const usePermissionsModifyTrust: (onExit: () => void, addItem: UseHistoryManagerReturn["addItem"], targetDirectory: string) => {
9
9
  cwd: string;
10
10
  currentTrustLevel: TrustLevel | undefined;
11
11
  isInheritedTrustFromParent: boolean;
12
12
  isInheritedTrustFromIde: boolean;
13
13
  needsRestart: boolean;
14
14
  updateTrustLevel: (trustLevel: TrustLevel) => void;
15
- commitTrustLevelChange: () => void;
15
+ commitTrustLevelChange: () => boolean;
16
16
  isFolderTrustEnabled: boolean;
17
17
  };
@@ -5,13 +5,22 @@
5
5
  */
6
6
  import { useState, useCallback } from 'react';
7
7
  import * as process from 'node:process';
8
+ import * as path from 'node:path';
8
9
  import { loadTrustedFolders, TrustLevel, isWorkspaceTrusted, } from '../../config/trustedFolders.js';
9
10
  import { useSettings } from '../contexts/SettingsContext.js';
10
11
  import { MessageType } from '../types.js';
11
12
  import {} from './useHistoryManager.js';
12
- function getInitialTrustState(settings, cwd) {
13
+ import { coreEvents } from '@google/gemini-cli-core';
14
+ function getInitialTrustState(settings, cwd, isCurrentWorkspace) {
13
15
  const folders = loadTrustedFolders();
14
16
  const explicitTrustLevel = folders.user.config[cwd];
17
+ if (!isCurrentWorkspace) {
18
+ return {
19
+ currentTrustLevel: explicitTrustLevel,
20
+ isInheritedTrustFromParent: false,
21
+ isInheritedTrustFromIde: false,
22
+ };
23
+ }
15
24
  const { isTrusted, source } = isWorkspaceTrusted(settings.merged);
16
25
  const isInheritedTrust = isTrusted &&
17
26
  (!explicitTrustLevel || explicitTrustLevel === TrustLevel.DO_NOT_TRUST);
@@ -21,10 +30,14 @@ function getInitialTrustState(settings, cwd) {
21
30
  isInheritedTrustFromIde: !!(source === 'ide' && isInheritedTrust),
22
31
  };
23
32
  }
24
- export const usePermissionsModifyTrust = (onExit, addItem) => {
33
+ export const usePermissionsModifyTrust = (onExit, addItem, targetDirectory) => {
25
34
  const settings = useSettings();
26
- const cwd = process.cwd();
27
- const [initialState] = useState(() => getInitialTrustState(settings, cwd));
35
+ const cwd = targetDirectory;
36
+ // Normalize paths for case-insensitive file systems (macOS/Windows) to ensure
37
+ // accurate comparison between targetDirectory and process.cwd().
38
+ const isCurrentWorkspace = path.resolve(targetDirectory).toLowerCase() ===
39
+ path.resolve(process.cwd()).toLowerCase();
40
+ const [initialState] = useState(() => getInitialTrustState(settings, cwd, isCurrentWorkspace));
28
41
  const [currentTrustLevel] = useState(initialState.currentTrustLevel);
29
42
  const [pendingTrustLevel, setPendingTrustLevel] = useState();
30
43
  const [isInheritedTrustFromParent] = useState(initialState.isInheritedTrustFromParent);
@@ -32,6 +45,15 @@ export const usePermissionsModifyTrust = (onExit, addItem) => {
32
45
  const [needsRestart, setNeedsRestart] = useState(false);
33
46
  const isFolderTrustEnabled = !!settings.merged.security?.folderTrust?.enabled;
34
47
  const updateTrustLevel = useCallback((trustLevel) => {
48
+ // If we are not editing the current workspace, the logic is simple:
49
+ // just save the setting and exit. No restart or warnings are needed.
50
+ if (!isCurrentWorkspace) {
51
+ const folders = loadTrustedFolders();
52
+ folders.setValue(cwd, trustLevel);
53
+ onExit();
54
+ return;
55
+ }
56
+ // All logic below only applies when editing the current workspace.
35
57
  const wasTrusted = isWorkspaceTrusted(settings.merged).isTrusted;
36
58
  // Create a temporary config to check the new trust status without writing
37
59
  const currentConfig = loadTrustedFolders().user.config;
@@ -54,15 +76,30 @@ export const usePermissionsModifyTrust = (onExit, addItem) => {
54
76
  }
55
77
  else {
56
78
  const folders = loadTrustedFolders();
57
- folders.setValue(cwd, trustLevel);
79
+ try {
80
+ folders.setValue(cwd, trustLevel);
81
+ }
82
+ catch (_e) {
83
+ coreEvents.emitFeedback('error', 'Failed to save trust settings. Your changes may not persist.');
84
+ }
58
85
  onExit();
59
86
  }
60
- }, [cwd, settings.merged, onExit, addItem]);
87
+ }, [cwd, settings.merged, onExit, addItem, isCurrentWorkspace]);
61
88
  const commitTrustLevelChange = useCallback(() => {
62
89
  if (pendingTrustLevel) {
63
90
  const folders = loadTrustedFolders();
64
- folders.setValue(cwd, pendingTrustLevel);
91
+ try {
92
+ folders.setValue(cwd, pendingTrustLevel);
93
+ return true;
94
+ }
95
+ catch (_e) {
96
+ coreEvents.emitFeedback('error', 'Failed to save trust settings. Your changes may not persist.');
97
+ setNeedsRestart(false);
98
+ setPendingTrustLevel(undefined);
99
+ return false;
100
+ }
65
101
  }
102
+ return true;
66
103
  }, [cwd, pendingTrustLevel]);
67
104
  return {
68
105
  cwd,
@@ -1 +1 @@
1
- {"version":3,"file":"usePermissionsModifyTrust.js","sourceRoot":"","sources":["../../../../src/ui/hooks/usePermissionsModifyTrust.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"usePermissionsModifyTrust.js","sourceRoot":"","sources":["../../../../src/ui/hooks/usePermissionsModifyTrust.ts"],"names":[],"mappings":"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"}