@machina.ai/cell-cli 1.16.0-rc2 → 1.19.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 (695) hide show
  1. package/dist/index.d.ts +1 -1
  2. package/dist/index.js +8 -7
  3. package/dist/index.js.map +1 -1
  4. package/dist/package.json +10 -9
  5. package/dist/src/commands/extensions/disable.js +2 -0
  6. package/dist/src/commands/extensions/disable.js.map +1 -1
  7. package/dist/src/commands/extensions/disable.test.d.ts +6 -0
  8. package/dist/src/commands/extensions/disable.test.js +169 -0
  9. package/dist/src/commands/extensions/disable.test.js.map +1 -0
  10. package/dist/src/commands/extensions/enable.js +2 -0
  11. package/dist/src/commands/extensions/enable.js.map +1 -1
  12. package/dist/src/commands/extensions/enable.test.d.ts +6 -0
  13. package/dist/src/commands/extensions/enable.test.js +150 -0
  14. package/dist/src/commands/extensions/enable.test.js.map +1 -0
  15. package/dist/src/commands/extensions/examples/mcp-server/example.test.d.ts +6 -0
  16. package/dist/src/commands/extensions/examples/mcp-server/example.test.js +111 -0
  17. package/dist/src/commands/extensions/examples/mcp-server/example.test.js.map +1 -0
  18. package/dist/src/commands/extensions/examples/mcp-server/example.test.ts +143 -0
  19. package/dist/src/commands/extensions/examples/mcp-server/package.json +1 -1
  20. package/dist/src/commands/extensions/install.js +2 -0
  21. package/dist/src/commands/extensions/install.js.map +1 -1
  22. package/dist/src/commands/extensions/install.test.js +3 -0
  23. package/dist/src/commands/extensions/install.test.js.map +1 -1
  24. package/dist/src/commands/extensions/link.js +2 -0
  25. package/dist/src/commands/extensions/link.js.map +1 -1
  26. package/dist/src/commands/extensions/link.test.d.ts +6 -0
  27. package/dist/src/commands/extensions/link.test.js +131 -0
  28. package/dist/src/commands/extensions/link.test.js.map +1 -0
  29. package/dist/src/commands/extensions/list.js +2 -0
  30. package/dist/src/commands/extensions/list.js.map +1 -1
  31. package/dist/src/commands/extensions/list.test.d.ts +6 -0
  32. package/dist/src/commands/extensions/list.test.js +112 -0
  33. package/dist/src/commands/extensions/list.test.js.map +1 -0
  34. package/dist/src/commands/extensions/new.js +2 -0
  35. package/dist/src/commands/extensions/new.js.map +1 -1
  36. package/dist/src/commands/extensions/new.test.js +3 -0
  37. package/dist/src/commands/extensions/new.test.js.map +1 -1
  38. package/dist/src/commands/extensions/uninstall.d.ts +1 -1
  39. package/dist/src/commands/extensions/uninstall.js +26 -9
  40. package/dist/src/commands/extensions/uninstall.js.map +1 -1
  41. package/dist/src/commands/extensions/uninstall.test.js +190 -9
  42. package/dist/src/commands/extensions/uninstall.test.js.map +1 -1
  43. package/dist/src/commands/extensions/update.js +2 -0
  44. package/dist/src/commands/extensions/update.js.map +1 -1
  45. package/dist/src/commands/extensions/update.test.d.ts +6 -0
  46. package/dist/src/commands/extensions/update.test.js +170 -0
  47. package/dist/src/commands/extensions/update.test.js.map +1 -0
  48. package/dist/src/commands/extensions/validate.js +2 -0
  49. package/dist/src/commands/extensions/validate.js.map +1 -1
  50. package/dist/src/commands/extensions/validate.test.js +3 -0
  51. package/dist/src/commands/extensions/validate.test.js.map +1 -1
  52. package/dist/src/commands/extensions.js +2 -0
  53. package/dist/src/commands/extensions.js.map +1 -1
  54. package/dist/src/commands/extensions.test.d.ts +6 -0
  55. package/dist/src/commands/extensions.test.js +67 -0
  56. package/dist/src/commands/extensions.test.js.map +1 -0
  57. package/dist/src/commands/mcp/add.js +2 -0
  58. package/dist/src/commands/mcp/add.js.map +1 -1
  59. package/dist/src/commands/mcp/add.test.js +11 -3
  60. package/dist/src/commands/mcp/add.test.js.map +1 -1
  61. package/dist/src/commands/mcp/list.js +2 -0
  62. package/dist/src/commands/mcp/list.js.map +1 -1
  63. package/dist/src/commands/mcp/list.test.js +4 -6
  64. package/dist/src/commands/mcp/list.test.js.map +1 -1
  65. package/dist/src/commands/mcp/remove.js +2 -0
  66. package/dist/src/commands/mcp/remove.js.map +1 -1
  67. package/dist/src/commands/mcp/remove.test.js +26 -12
  68. package/dist/src/commands/mcp/remove.test.js.map +1 -1
  69. package/dist/src/commands/mcp.js +2 -0
  70. package/dist/src/commands/mcp.js.map +1 -1
  71. package/dist/src/commands/mcp.test.js +1 -0
  72. package/dist/src/commands/mcp.test.js.map +1 -1
  73. package/dist/src/commands/utils.d.ts +6 -0
  74. package/dist/src/commands/utils.js +11 -0
  75. package/dist/src/commands/utils.js.map +1 -0
  76. package/dist/src/commands/utils.test.d.ts +6 -0
  77. package/dist/src/commands/utils.test.js +35 -0
  78. package/dist/src/commands/utils.test.js.map +1 -0
  79. package/dist/src/config/auth.js +4 -0
  80. package/dist/src/config/auth.js.map +1 -1
  81. package/dist/src/config/auth.test.js +1 -2
  82. package/dist/src/config/auth.test.js.map +1 -1
  83. package/dist/src/config/config.d.ts +2 -1
  84. package/dist/src/config/config.integration.test.js +81 -198
  85. package/dist/src/config/config.integration.test.js.map +1 -1
  86. package/dist/src/config/config.js +38 -31
  87. package/dist/src/config/config.js.map +1 -1
  88. package/dist/src/config/config.test.js +235 -294
  89. package/dist/src/config/config.test.js.map +1 -1
  90. package/dist/src/config/extension.test.js +30 -48
  91. package/dist/src/config/extension.test.js.map +1 -1
  92. package/dist/src/config/extensions/consent.test.d.ts +6 -0
  93. package/dist/src/config/extensions/consent.test.js +152 -0
  94. package/dist/src/config/extensions/consent.test.js.map +1 -0
  95. package/dist/src/config/extensions/extensionEnablement.test.js +82 -15
  96. package/dist/src/config/extensions/extensionEnablement.test.js.map +1 -1
  97. package/dist/src/config/extensions/extensionSettings.test.js +105 -1
  98. package/dist/src/config/extensions/extensionSettings.test.js.map +1 -1
  99. package/dist/src/config/extensions/github.d.ts +1 -0
  100. package/dist/src/config/extensions/github.js +21 -5
  101. package/dist/src/config/extensions/github.js.map +1 -1
  102. package/dist/src/config/extensions/github.test.js +201 -318
  103. package/dist/src/config/extensions/github.test.js.map +1 -1
  104. package/dist/src/config/extensions/storage.test.d.ts +6 -0
  105. package/dist/src/config/extensions/storage.test.js +64 -0
  106. package/dist/src/config/extensions/storage.test.js.map +1 -0
  107. package/dist/src/config/extensions/update.test.js +154 -263
  108. package/dist/src/config/extensions/update.test.js.map +1 -1
  109. package/dist/src/config/extensions/variables.test.js +87 -1
  110. package/dist/src/config/extensions/variables.test.js.map +1 -1
  111. package/dist/src/config/keyBindings.d.ts +1 -1
  112. package/dist/src/config/keyBindings.js +4 -4
  113. package/dist/src/config/keyBindings.js.map +1 -1
  114. package/dist/src/config/sandboxConfig.d.ts +1 -1
  115. package/dist/src/config/sandboxConfig.js.map +1 -1
  116. package/dist/src/config/sandboxConfig.test.d.ts +6 -0
  117. package/dist/src/config/sandboxConfig.test.js +178 -0
  118. package/dist/src/config/sandboxConfig.test.js.map +1 -0
  119. package/dist/src/config/settingPaths.test.d.ts +6 -0
  120. package/dist/src/config/settingPaths.test.js +22 -0
  121. package/dist/src/config/settingPaths.test.js.map +1 -0
  122. package/dist/src/config/settings.js +12 -1
  123. package/dist/src/config/settings.js.map +1 -1
  124. package/dist/src/config/settings.test.js +228 -227
  125. package/dist/src/config/settings.test.js.map +1 -1
  126. package/dist/src/config/settingsSchema.d.ts +25 -7
  127. package/dist/src/config/settingsSchema.js +26 -8
  128. package/dist/src/config/settingsSchema.js.map +1 -1
  129. package/dist/src/config/settingsSchema.test.js +11 -6
  130. package/dist/src/config/settingsSchema.test.js.map +1 -1
  131. package/dist/src/config/trustedFolders.d.ts +1 -1
  132. package/dist/src/config/trustedFolders.js +24 -17
  133. package/dist/src/config/trustedFolders.js.map +1 -1
  134. package/dist/src/core/auth.test.d.ts +6 -0
  135. package/dist/src/core/auth.test.js +43 -0
  136. package/dist/src/core/auth.test.js.map +1 -0
  137. package/dist/src/core/initializer.test.d.ts +6 -0
  138. package/dist/src/core/initializer.test.js +101 -0
  139. package/dist/src/core/initializer.test.js.map +1 -0
  140. package/dist/src/core/theme.test.d.ts +6 -0
  141. package/dist/src/core/theme.test.js +46 -0
  142. package/dist/src/core/theme.test.js.map +1 -0
  143. package/dist/src/gemini.d.ts +3 -1
  144. package/dist/src/gemini.js +80 -17
  145. package/dist/src/gemini.js.map +1 -1
  146. package/dist/src/gemini.test.js +681 -16
  147. package/dist/src/gemini.test.js.map +1 -1
  148. package/dist/src/gemini_cleanup.test.d.ts +6 -0
  149. package/dist/src/gemini_cleanup.test.js +201 -0
  150. package/dist/src/gemini_cleanup.test.js.map +1 -0
  151. package/dist/src/generated/git-commit.d.ts +2 -2
  152. package/dist/src/generated/git-commit.js +2 -2
  153. package/dist/src/nonInteractiveCli.js +4 -1
  154. package/dist/src/nonInteractiveCli.js.map +1 -1
  155. package/dist/src/nonInteractiveCli.test.js +338 -2
  156. package/dist/src/nonInteractiveCli.test.js.map +1 -1
  157. package/dist/src/services/BuiltinCommandLoader.js +3 -1
  158. package/dist/src/services/BuiltinCommandLoader.js.map +1 -1
  159. package/dist/src/services/BuiltinCommandLoader.test.js +1 -22
  160. package/dist/src/services/BuiltinCommandLoader.test.js.map +1 -1
  161. package/dist/src/services/CommandService.test.js +3 -2
  162. package/dist/src/services/CommandService.test.js.map +1 -1
  163. package/dist/src/services/McpPromptLoader.js +5 -3
  164. package/dist/src/services/McpPromptLoader.js.map +1 -1
  165. package/dist/src/services/McpPromptLoader.test.js +29 -1
  166. package/dist/src/services/McpPromptLoader.test.js.map +1 -1
  167. package/dist/src/test-utils/mockCommandContext.js +1 -1
  168. package/dist/src/test-utils/render.d.ts +26 -2
  169. package/dist/src/test-utils/render.js +80 -3
  170. package/dist/src/test-utils/render.js.map +1 -1
  171. package/dist/src/ui/App.test.js +28 -14
  172. package/dist/src/ui/App.test.js.map +1 -1
  173. package/dist/src/ui/AppContainer.js +142 -48
  174. package/dist/src/ui/AppContainer.js.map +1 -1
  175. package/dist/src/ui/AppContainer.test.js +181 -103
  176. package/dist/src/ui/AppContainer.test.js.map +1 -1
  177. package/dist/src/ui/IdeIntegrationNudge.test.d.ts +6 -0
  178. package/dist/src/ui/IdeIntegrationNudge.test.js +147 -0
  179. package/dist/src/ui/IdeIntegrationNudge.test.js.map +1 -0
  180. package/dist/src/ui/auth/ApiAuthDialog.test.js +12 -17
  181. package/dist/src/ui/auth/ApiAuthDialog.test.js.map +1 -1
  182. package/dist/src/ui/auth/AuthDialog.js +17 -10
  183. package/dist/src/ui/auth/AuthDialog.js.map +1 -1
  184. package/dist/src/ui/auth/AuthDialog.test.js +55 -21
  185. package/dist/src/ui/auth/AuthDialog.test.js.map +1 -1
  186. package/dist/src/ui/auth/AuthInProgress.test.d.ts +6 -0
  187. package/dist/src/ui/auth/AuthInProgress.test.js +71 -0
  188. package/dist/src/ui/auth/AuthInProgress.test.js.map +1 -0
  189. package/dist/src/ui/auth/useAuth.d.ts +2 -0
  190. package/dist/src/ui/auth/useAuth.js +6 -1
  191. package/dist/src/ui/auth/useAuth.js.map +1 -1
  192. package/dist/src/ui/auth/useAuth.test.d.ts +6 -0
  193. package/dist/src/ui/auth/useAuth.test.js +178 -0
  194. package/dist/src/ui/auth/useAuth.test.js.map +1 -0
  195. package/dist/src/ui/commands/aboutCommand.js +8 -1
  196. package/dist/src/ui/commands/aboutCommand.js.map +1 -1
  197. package/dist/src/ui/commands/aboutCommand.test.js +4 -0
  198. package/dist/src/ui/commands/aboutCommand.test.js.map +1 -1
  199. package/dist/src/ui/commands/clearCommand.js +12 -0
  200. package/dist/src/ui/commands/clearCommand.js.map +1 -1
  201. package/dist/src/ui/commands/clearCommand.test.js +5 -0
  202. package/dist/src/ui/commands/clearCommand.test.js.map +1 -1
  203. package/dist/src/ui/commands/directoryCommand.d.ts +0 -1
  204. package/dist/src/ui/commands/directoryCommand.js +104 -43
  205. package/dist/src/ui/commands/directoryCommand.js.map +1 -1
  206. package/dist/src/ui/commands/directoryCommand.test.js +91 -2
  207. package/dist/src/ui/commands/directoryCommand.test.js.map +1 -1
  208. package/dist/src/ui/commands/extensionsCommand.js +28 -6
  209. package/dist/src/ui/commands/extensionsCommand.js.map +1 -1
  210. package/dist/src/ui/commands/extensionsCommand.test.js +32 -0
  211. package/dist/src/ui/commands/extensionsCommand.test.js.map +1 -1
  212. package/dist/src/ui/commands/memoryCommand.js +1 -0
  213. package/dist/src/ui/commands/memoryCommand.js.map +1 -1
  214. package/dist/src/ui/commands/memoryCommand.test.js +3 -0
  215. package/dist/src/ui/commands/memoryCommand.test.js.map +1 -1
  216. package/dist/src/ui/commands/permissionsCommand.js +62 -5
  217. package/dist/src/ui/commands/permissionsCommand.js.map +1 -1
  218. package/dist/src/ui/commands/permissionsCommand.test.js +60 -4
  219. package/dist/src/ui/commands/permissionsCommand.test.js.map +1 -1
  220. package/dist/src/ui/commands/resumeCommand.d.ts +7 -0
  221. package/dist/src/ui/commands/resumeCommand.js +16 -0
  222. package/dist/src/ui/commands/resumeCommand.js.map +1 -0
  223. package/dist/src/ui/commands/setupGithubCommand.d.ts +1 -0
  224. package/dist/src/ui/commands/setupGithubCommand.js +82 -45
  225. package/dist/src/ui/commands/setupGithubCommand.js.map +1 -1
  226. package/dist/src/ui/commands/setupGithubCommand.test.js +35 -5
  227. package/dist/src/ui/commands/setupGithubCommand.test.js.map +1 -1
  228. package/dist/src/ui/commands/statsCommand.js +27 -16
  229. package/dist/src/ui/commands/statsCommand.js.map +1 -1
  230. package/dist/src/ui/commands/types.d.ts +8 -2
  231. package/dist/src/ui/commands/types.js.map +1 -1
  232. package/dist/src/ui/components/AboutBox.d.ts +1 -0
  233. package/dist/src/ui/components/AboutBox.js +1 -1
  234. package/dist/src/ui/components/AboutBox.js.map +1 -1
  235. package/dist/src/ui/components/AboutBox.test.d.ts +6 -0
  236. package/dist/src/ui/components/AboutBox.test.js +53 -0
  237. package/dist/src/ui/components/AboutBox.test.js.map +1 -0
  238. package/dist/src/ui/components/AlternateBufferQuittingDisplay.test.js +62 -11
  239. package/dist/src/ui/components/AlternateBufferQuittingDisplay.test.js.map +1 -1
  240. package/dist/src/ui/components/AnsiOutput.test.js +18 -23
  241. package/dist/src/ui/components/AnsiOutput.test.js.map +1 -1
  242. package/dist/src/ui/components/AppHeader.js +3 -22
  243. package/dist/src/ui/components/AppHeader.js.map +1 -1
  244. package/dist/src/ui/components/AppHeader.test.js +10 -4
  245. package/dist/src/ui/components/AppHeader.test.js.map +1 -1
  246. package/dist/src/ui/components/AsciiArt.d.ts +6 -6
  247. package/dist/src/ui/components/AsciiArt.js +6 -6
  248. package/dist/src/ui/components/AutoAcceptIndicator.test.d.ts +6 -0
  249. package/dist/src/ui/components/AutoAcceptIndicator.test.js +31 -0
  250. package/dist/src/ui/components/AutoAcceptIndicator.test.js.map +1 -0
  251. package/dist/src/ui/components/Banner.d.ts +4 -2
  252. package/dist/src/ui/components/Banner.js +18 -4
  253. package/dist/src/ui/components/Banner.js.map +1 -1
  254. package/dist/src/ui/components/Banner.test.d.ts +6 -0
  255. package/dist/src/ui/components/Banner.test.js +24 -0
  256. package/dist/src/ui/components/Banner.test.js.map +1 -0
  257. package/dist/src/ui/components/ConfigInitDisplay.test.d.ts +6 -0
  258. package/dist/src/ui/components/ConfigInitDisplay.test.js +103 -0
  259. package/dist/src/ui/components/ConfigInitDisplay.test.js.map +1 -0
  260. package/dist/src/ui/components/ConsoleSummaryDisplay.test.d.ts +6 -0
  261. package/dist/src/ui/components/ConsoleSummaryDisplay.test.js +26 -0
  262. package/dist/src/ui/components/ConsoleSummaryDisplay.test.js.map +1 -0
  263. package/dist/src/ui/components/ContextUsageDisplay.test.d.ts +6 -0
  264. package/dist/src/ui/components/ContextUsageDisplay.test.js +39 -0
  265. package/dist/src/ui/components/ContextUsageDisplay.test.js.map +1 -0
  266. package/dist/src/ui/components/CopyModeWarning.test.d.ts +6 -0
  267. package/dist/src/ui/components/CopyModeWarning.test.js +33 -0
  268. package/dist/src/ui/components/CopyModeWarning.test.js.map +1 -0
  269. package/dist/src/ui/components/DebugProfiler.d.ts +1 -0
  270. package/dist/src/ui/components/DebugProfiler.js +24 -35
  271. package/dist/src/ui/components/DebugProfiler.js.map +1 -1
  272. package/dist/src/ui/components/DebugProfiler.test.js +47 -1
  273. package/dist/src/ui/components/DebugProfiler.test.js.map +1 -1
  274. package/dist/src/ui/components/DetailedMessagesDisplay.test.d.ts +6 -0
  275. package/dist/src/ui/components/DetailedMessagesDisplay.test.js +49 -0
  276. package/dist/src/ui/components/DetailedMessagesDisplay.test.js.map +1 -0
  277. package/dist/src/ui/components/DialogManager.js +11 -2
  278. package/dist/src/ui/components/DialogManager.js.map +1 -1
  279. package/dist/src/ui/components/DialogManager.test.d.ts +6 -0
  280. package/dist/src/ui/components/DialogManager.test.js +167 -0
  281. package/dist/src/ui/components/DialogManager.test.js.map +1 -0
  282. package/dist/src/ui/components/EditorSettingsDialog.test.d.ts +6 -0
  283. package/dist/src/ui/components/EditorSettingsDialog.test.js +111 -0
  284. package/dist/src/ui/components/EditorSettingsDialog.test.js.map +1 -0
  285. package/dist/src/ui/components/ExitWarning.test.d.ts +6 -0
  286. package/dist/src/ui/components/ExitWarning.test.js +54 -0
  287. package/dist/src/ui/components/ExitWarning.test.js.map +1 -0
  288. package/dist/src/ui/components/GeminiRespondingSpinner.test.d.ts +6 -0
  289. package/dist/src/ui/components/GeminiRespondingSpinner.test.js +58 -0
  290. package/dist/src/ui/components/GeminiRespondingSpinner.test.js.map +1 -0
  291. package/dist/src/ui/components/GradientRegression.test.js +22 -1
  292. package/dist/src/ui/components/GradientRegression.test.js.map +1 -1
  293. package/dist/src/ui/components/Header.test.js +27 -2
  294. package/dist/src/ui/components/Header.test.js.map +1 -1
  295. package/dist/src/ui/components/HistoryItemDisplay.js +2 -1
  296. package/dist/src/ui/components/HistoryItemDisplay.js.map +1 -1
  297. package/dist/src/ui/components/InputPrompt.js +30 -36
  298. package/dist/src/ui/components/InputPrompt.js.map +1 -1
  299. package/dist/src/ui/components/InputPrompt.test.js +110 -24
  300. package/dist/src/ui/components/InputPrompt.test.js.map +1 -1
  301. package/dist/src/ui/components/LoadingIndicator.js +6 -1
  302. package/dist/src/ui/components/LoadingIndicator.js.map +1 -1
  303. package/dist/src/ui/components/MainContent.test.d.ts +6 -0
  304. package/dist/src/ui/components/MainContent.test.js +73 -0
  305. package/dist/src/ui/components/MainContent.test.js.map +1 -0
  306. package/dist/src/ui/components/MemoryUsageDisplay.test.d.ts +6 -0
  307. package/dist/src/ui/components/MemoryUsageDisplay.test.js +49 -0
  308. package/dist/src/ui/components/MemoryUsageDisplay.test.js.map +1 -0
  309. package/dist/src/ui/components/ModelDialog.js +2 -2
  310. package/dist/src/ui/components/ModelDialog.js.map +1 -1
  311. package/dist/src/ui/components/ModelDialog.test.js +1 -1
  312. package/dist/src/ui/components/ModelDialog.test.js.map +1 -1
  313. package/dist/src/ui/components/MultiFolderTrustDialog.d.ts +23 -0
  314. package/dist/src/ui/components/MultiFolderTrustDialog.js +90 -0
  315. package/dist/src/ui/components/MultiFolderTrustDialog.js.map +1 -0
  316. package/dist/src/ui/components/MultiFolderTrustDialog.test.d.ts +6 -0
  317. package/dist/src/ui/components/MultiFolderTrustDialog.test.js +161 -0
  318. package/dist/src/ui/components/MultiFolderTrustDialog.test.js.map +1 -0
  319. package/dist/src/ui/components/Notifications.js +5 -3
  320. package/dist/src/ui/components/Notifications.js.map +1 -1
  321. package/dist/src/ui/components/Notifications.test.d.ts +6 -0
  322. package/dist/src/ui/components/Notifications.test.js +153 -0
  323. package/dist/src/ui/components/Notifications.test.js.map +1 -0
  324. package/dist/src/ui/components/PermissionsModifyTrustDialog.d.ts +5 -2
  325. package/dist/src/ui/components/PermissionsModifyTrustDialog.js +12 -7
  326. package/dist/src/ui/components/PermissionsModifyTrustDialog.js.map +1 -1
  327. package/dist/src/ui/components/PermissionsModifyTrustDialog.test.js +2 -2
  328. package/dist/src/ui/components/PermissionsModifyTrustDialog.test.js.map +1 -1
  329. package/dist/src/ui/components/ProQuotaDialog.js +2 -2
  330. package/dist/src/ui/components/ProQuotaDialog.js.map +1 -1
  331. package/dist/src/ui/components/QuittingDisplay.test.d.ts +6 -0
  332. package/dist/src/ui/components/QuittingDisplay.test.js +49 -0
  333. package/dist/src/ui/components/QuittingDisplay.test.js.map +1 -0
  334. package/dist/src/ui/components/RawMarkdownIndicator.test.d.ts +6 -0
  335. package/dist/src/ui/components/RawMarkdownIndicator.test.js +34 -0
  336. package/dist/src/ui/components/RawMarkdownIndicator.test.js.map +1 -0
  337. package/dist/src/ui/components/SessionBrowser.d.ts +98 -0
  338. package/dist/src/ui/components/SessionBrowser.js +457 -0
  339. package/dist/src/ui/components/SessionBrowser.js.map +1 -0
  340. package/dist/src/ui/components/SessionBrowser.test.d.ts +6 -0
  341. package/dist/src/ui/components/SessionBrowser.test.js +250 -0
  342. package/dist/src/ui/components/SessionBrowser.test.js.map +1 -0
  343. package/dist/src/ui/components/SettingsDialog.d.ts +3 -1
  344. package/dist/src/ui/components/SettingsDialog.js +4 -1
  345. package/dist/src/ui/components/SettingsDialog.js.map +1 -1
  346. package/dist/src/ui/components/ShellInputPrompt.test.d.ts +6 -0
  347. package/dist/src/ui/components/ShellInputPrompt.test.js +82 -0
  348. package/dist/src/ui/components/ShellInputPrompt.test.js.map +1 -0
  349. package/dist/src/ui/components/ShellModeIndicator.test.d.ts +6 -0
  350. package/dist/src/ui/components/ShellModeIndicator.test.js +17 -0
  351. package/dist/src/ui/components/ShellModeIndicator.test.js.map +1 -0
  352. package/dist/src/ui/components/ShowMoreLines.test.d.ts +6 -0
  353. package/dist/src/ui/components/ShowMoreLines.test.js +40 -0
  354. package/dist/src/ui/components/ShowMoreLines.test.js.map +1 -0
  355. package/dist/src/ui/components/SuggestionsDisplay.test.d.ts +6 -0
  356. package/dist/src/ui/components/SuggestionsDisplay.test.js +56 -0
  357. package/dist/src/ui/components/SuggestionsDisplay.test.js.map +1 -0
  358. package/dist/src/ui/components/ThemeDialog.js +6 -2
  359. package/dist/src/ui/components/ThemeDialog.js.map +1 -1
  360. package/dist/src/ui/components/ThemeDialog.test.js +20 -6
  361. package/dist/src/ui/components/ThemeDialog.test.js.map +1 -1
  362. package/dist/src/ui/components/ThemedGradient.js +2 -1
  363. package/dist/src/ui/components/ThemedGradient.js.map +1 -1
  364. package/dist/src/ui/components/ThemedGradient.test.d.ts +6 -0
  365. package/dist/src/ui/components/ThemedGradient.test.js +30 -0
  366. package/dist/src/ui/components/ThemedGradient.test.js.map +1 -0
  367. package/dist/src/ui/components/Tips.test.d.ts +6 -0
  368. package/dist/src/ui/components/Tips.test.js +23 -0
  369. package/dist/src/ui/components/Tips.test.js.map +1 -0
  370. package/dist/src/ui/components/UpdateNotification.test.d.ts +6 -0
  371. package/dist/src/ui/components/UpdateNotification.test.js +16 -0
  372. package/dist/src/ui/components/UpdateNotification.test.js.map +1 -0
  373. package/dist/src/ui/components/messages/ErrorMessage.test.d.ts +6 -0
  374. package/dist/src/ui/components/messages/ErrorMessage.test.js +23 -0
  375. package/dist/src/ui/components/messages/ErrorMessage.test.js.map +1 -0
  376. package/dist/src/ui/components/messages/InfoMessage.test.d.ts +6 -0
  377. package/dist/src/ui/components/messages/InfoMessage.test.js +28 -0
  378. package/dist/src/ui/components/messages/InfoMessage.test.js.map +1 -0
  379. package/dist/src/ui/components/messages/ModelMessage.d.ts +11 -0
  380. package/dist/src/ui/components/messages/ModelMessage.js +5 -0
  381. package/dist/src/ui/components/messages/ModelMessage.js.map +1 -0
  382. package/dist/src/ui/components/messages/ShellToolMessage.d.ts +14 -0
  383. package/dist/src/ui/components/messages/ShellToolMessage.js +76 -0
  384. package/dist/src/ui/components/messages/ShellToolMessage.js.map +1 -0
  385. package/dist/src/ui/components/messages/ShellToolMessage.test.d.ts +6 -0
  386. package/dist/src/ui/components/messages/ShellToolMessage.test.js +123 -0
  387. package/dist/src/ui/components/messages/ShellToolMessage.test.js.map +1 -0
  388. package/dist/src/ui/components/messages/ToolConfirmationMessage.test.js +5 -6
  389. package/dist/src/ui/components/messages/ToolConfirmationMessage.test.js.map +1 -1
  390. package/dist/src/ui/components/messages/ToolGroupMessage.js +19 -1
  391. package/dist/src/ui/components/messages/ToolGroupMessage.js.map +1 -1
  392. package/dist/src/ui/components/messages/ToolMessage.d.ts +6 -4
  393. package/dist/src/ui/components/messages/ToolMessage.js +15 -102
  394. package/dist/src/ui/components/messages/ToolMessage.js.map +1 -1
  395. package/dist/src/ui/components/messages/ToolMessage.test.js +26 -26
  396. package/dist/src/ui/components/messages/ToolMessage.test.js.map +1 -1
  397. package/dist/src/ui/components/messages/ToolResultDisplay.d.ts +13 -0
  398. package/dist/src/ui/components/messages/ToolResultDisplay.js +54 -0
  399. package/dist/src/ui/components/messages/ToolResultDisplay.js.map +1 -0
  400. package/dist/src/ui/components/messages/ToolResultDisplay.test.d.ts +6 -0
  401. package/dist/src/ui/components/messages/ToolResultDisplay.test.js +96 -0
  402. package/dist/src/ui/components/messages/ToolResultDisplay.test.js.map +1 -0
  403. package/dist/src/ui/components/messages/ToolShared.d.ts +23 -0
  404. package/dist/src/ui/components/messages/ToolShared.js +40 -0
  405. package/dist/src/ui/components/messages/ToolShared.js.map +1 -0
  406. package/dist/src/ui/components/messages/UserMessage.test.d.ts +6 -0
  407. package/dist/src/ui/components/messages/UserMessage.test.js +32 -0
  408. package/dist/src/ui/components/messages/UserMessage.test.js.map +1 -0
  409. package/dist/src/ui/components/messages/WarningMessage.test.d.ts +6 -0
  410. package/dist/src/ui/components/messages/WarningMessage.test.js +23 -0
  411. package/dist/src/ui/components/messages/WarningMessage.test.js.map +1 -0
  412. package/dist/src/ui/components/shared/text-buffer.d.ts +1 -0
  413. package/dist/src/ui/components/shared/text-buffer.js +27 -5
  414. package/dist/src/ui/components/shared/text-buffer.js.map +1 -1
  415. package/dist/src/ui/components/shared/text-buffer.test.js +20 -0
  416. package/dist/src/ui/components/shared/text-buffer.test.js.map +1 -1
  417. package/dist/src/ui/constants/tips.d.ts +6 -0
  418. package/dist/src/ui/constants/tips.js +168 -0
  419. package/dist/src/ui/constants/tips.js.map +1 -0
  420. package/dist/src/ui/constants/wittyPhrases.d.ts +6 -0
  421. package/dist/src/ui/constants/wittyPhrases.js +137 -0
  422. package/dist/src/ui/constants/wittyPhrases.js.map +1 -0
  423. package/dist/src/ui/constants.d.ts +1 -0
  424. package/dist/src/ui/constants.js +1 -0
  425. package/dist/src/ui/constants.js.map +1 -1
  426. package/dist/src/ui/contexts/KeypressContext.js +21 -11
  427. package/dist/src/ui/contexts/KeypressContext.js.map +1 -1
  428. package/dist/src/ui/contexts/KeypressContext.test.js +29 -10
  429. package/dist/src/ui/contexts/KeypressContext.test.js.map +1 -1
  430. package/dist/src/ui/contexts/UIActionsContext.d.ts +8 -0
  431. package/dist/src/ui/contexts/UIActionsContext.js +1 -0
  432. package/dist/src/ui/contexts/UIActionsContext.js.map +1 -1
  433. package/dist/src/ui/contexts/UIStateContext.d.ts +5 -0
  434. package/dist/src/ui/contexts/UIStateContext.js.map +1 -1
  435. package/dist/src/ui/hooks/shellCommandProcessor.d.ts +1 -0
  436. package/dist/src/ui/hooks/shellCommandProcessor.js +11 -5
  437. package/dist/src/ui/hooks/shellCommandProcessor.js.map +1 -1
  438. package/dist/src/ui/hooks/shellCommandProcessor.test.js +4 -3
  439. package/dist/src/ui/hooks/shellCommandProcessor.test.js.map +1 -1
  440. package/dist/src/ui/hooks/slashCommandProcessor.d.ts +6 -3
  441. package/dist/src/ui/hooks/slashCommandProcessor.js +17 -5
  442. package/dist/src/ui/hooks/slashCommandProcessor.js.map +1 -1
  443. package/dist/src/ui/hooks/slashCommandProcessor.test.js +2 -0
  444. package/dist/src/ui/hooks/slashCommandProcessor.test.js.map +1 -1
  445. package/dist/src/ui/hooks/useAlternateBuffer.js +1 -1
  446. package/dist/src/ui/hooks/useAlternateBuffer.js.map +1 -1
  447. package/dist/src/ui/hooks/useBanner.d.ts +14 -0
  448. package/dist/src/ui/hooks/useBanner.js +48 -0
  449. package/dist/src/ui/hooks/useBanner.js.map +1 -0
  450. package/dist/src/ui/hooks/useBanner.test.d.ts +6 -0
  451. package/dist/src/ui/hooks/useBanner.test.js +92 -0
  452. package/dist/src/ui/hooks/useBanner.test.js.map +1 -0
  453. package/dist/src/ui/hooks/useBracketedPaste.js +3 -4
  454. package/dist/src/ui/hooks/useBracketedPaste.js.map +1 -1
  455. package/dist/src/ui/hooks/useCommandCompletion.test.js +5 -5
  456. package/dist/src/ui/hooks/useCommandCompletion.test.js.map +1 -1
  457. package/dist/src/ui/hooks/useConsoleMessages.d.ts +0 -1
  458. package/dist/src/ui/hooks/useConsoleMessages.js +26 -1
  459. package/dist/src/ui/hooks/useConsoleMessages.js.map +1 -1
  460. package/dist/src/ui/hooks/useConsoleMessages.test.js +37 -5
  461. package/dist/src/ui/hooks/useConsoleMessages.test.js.map +1 -1
  462. package/dist/src/ui/hooks/useEditorSettings.d.ts +2 -2
  463. package/dist/src/ui/hooks/useEditorSettings.js.map +1 -1
  464. package/dist/src/ui/hooks/useEditorSettings.test.js.map +1 -1
  465. package/dist/src/ui/hooks/useFolderTrust.js +11 -1
  466. package/dist/src/ui/hooks/useFolderTrust.js.map +1 -1
  467. package/dist/src/ui/hooks/useFolderTrust.test.js +22 -0
  468. package/dist/src/ui/hooks/useFolderTrust.test.js.map +1 -1
  469. package/dist/src/ui/hooks/useGeminiStream.d.ts +2 -1
  470. package/dist/src/ui/hooks/useGeminiStream.js +69 -12
  471. package/dist/src/ui/hooks/useGeminiStream.js.map +1 -1
  472. package/dist/src/ui/hooks/useGeminiStream.test.js +21 -22
  473. package/dist/src/ui/hooks/useGeminiStream.test.js.map +1 -1
  474. package/dist/src/ui/hooks/useHistoryManager.d.ts +5 -2
  475. package/dist/src/ui/hooks/useHistoryManager.js +39 -3
  476. package/dist/src/ui/hooks/useHistoryManager.js.map +1 -1
  477. package/dist/src/ui/hooks/useInactivityTimer.d.ts +14 -0
  478. package/dist/src/ui/hooks/useInactivityTimer.js +30 -0
  479. package/dist/src/ui/hooks/useInactivityTimer.js.map +1 -0
  480. package/dist/src/ui/hooks/useIncludeDirsTrust.d.ts +8 -0
  481. package/dist/src/ui/hooks/useIncludeDirsTrust.js +119 -0
  482. package/dist/src/ui/hooks/useIncludeDirsTrust.js.map +1 -0
  483. package/dist/src/ui/hooks/useIncludeDirsTrust.test.d.ts +6 -0
  484. package/dist/src/ui/hooks/useIncludeDirsTrust.test.js +151 -0
  485. package/dist/src/ui/hooks/useIncludeDirsTrust.test.js.map +1 -0
  486. package/dist/src/ui/hooks/useInputHistoryStore.test.js +4 -1
  487. package/dist/src/ui/hooks/useInputHistoryStore.test.js.map +1 -1
  488. package/dist/src/ui/hooks/useKittyKeyboardProtocol.d.ts +0 -1
  489. package/dist/src/ui/hooks/useKittyKeyboardProtocol.js +1 -2
  490. package/dist/src/ui/hooks/useKittyKeyboardProtocol.js.map +1 -1
  491. package/dist/src/ui/hooks/useLoadingIndicator.d.ts +1 -1
  492. package/dist/src/ui/hooks/useLoadingIndicator.js +2 -2
  493. package/dist/src/ui/hooks/useLoadingIndicator.js.map +1 -1
  494. package/dist/src/ui/hooks/useLoadingIndicator.test.js +21 -9
  495. package/dist/src/ui/hooks/useLoadingIndicator.test.js.map +1 -1
  496. package/dist/src/ui/hooks/useMouseClick.d.ts +12 -0
  497. package/dist/src/ui/hooks/useMouseClick.js +28 -0
  498. package/dist/src/ui/hooks/useMouseClick.js.map +1 -0
  499. package/dist/src/ui/hooks/useMouseClick.test.d.ts +6 -0
  500. package/dist/src/ui/hooks/useMouseClick.test.js +59 -0
  501. package/dist/src/ui/hooks/useMouseClick.test.js.map +1 -0
  502. package/dist/src/ui/hooks/usePermissionsModifyTrust.d.ts +2 -2
  503. package/dist/src/ui/hooks/usePermissionsModifyTrust.js +44 -7
  504. package/dist/src/ui/hooks/usePermissionsModifyTrust.js.map +1 -1
  505. package/dist/src/ui/hooks/usePermissionsModifyTrust.test.js +191 -89
  506. package/dist/src/ui/hooks/usePermissionsModifyTrust.test.js.map +1 -1
  507. package/dist/src/ui/hooks/usePhraseCycler.d.ts +4 -3
  508. package/dist/src/ui/hooks/usePhraseCycler.js +54 -305
  509. package/dist/src/ui/hooks/usePhraseCycler.js.map +1 -1
  510. package/dist/src/ui/hooks/usePhraseCycler.test.js +109 -30
  511. package/dist/src/ui/hooks/usePhraseCycler.test.js.map +1 -1
  512. package/dist/src/ui/hooks/useQuotaAndFallback.js +9 -3
  513. package/dist/src/ui/hooks/useQuotaAndFallback.js.map +1 -1
  514. package/dist/src/ui/hooks/useQuotaAndFallback.test.js +25 -3
  515. package/dist/src/ui/hooks/useQuotaAndFallback.test.js.map +1 -1
  516. package/dist/src/ui/hooks/useReactToolScheduler.d.ts +3 -2
  517. package/dist/src/ui/hooks/useReactToolScheduler.js +4 -8
  518. package/dist/src/ui/hooks/useReactToolScheduler.js.map +1 -1
  519. package/dist/src/ui/hooks/useReactToolScheduler.test.js +1 -8
  520. package/dist/src/ui/hooks/useReactToolScheduler.test.js.map +1 -1
  521. package/dist/src/ui/hooks/useReverseSearchCompletion.test.js +18 -12
  522. package/dist/src/ui/hooks/useReverseSearchCompletion.test.js.map +1 -1
  523. package/dist/src/ui/hooks/useSessionBrowser.d.ts +18 -1
  524. package/dist/src/ui/hooks/useSessionBrowser.js +76 -4
  525. package/dist/src/ui/hooks/useSessionBrowser.js.map +1 -1
  526. package/dist/src/ui/hooks/useSessionBrowser.test.js +154 -489
  527. package/dist/src/ui/hooks/useSessionBrowser.test.js.map +1 -1
  528. package/dist/src/ui/hooks/useSessionResume.js +1 -1
  529. package/dist/src/ui/hooks/useSessionResume.js.map +1 -1
  530. package/dist/src/ui/hooks/useSessionResume.test.js +4 -4
  531. package/dist/src/ui/hooks/useSessionResume.test.js.map +1 -1
  532. package/dist/src/ui/hooks/useSlashCompletion.test.js +5 -5
  533. package/dist/src/ui/hooks/useSlashCompletion.test.js.map +1 -1
  534. package/dist/src/ui/hooks/useThemeCommand.d.ts +2 -2
  535. package/dist/src/ui/hooks/useThemeCommand.js.map +1 -1
  536. package/dist/src/ui/hooks/useToolScheduler.test.js +8 -4
  537. package/dist/src/ui/hooks/useToolScheduler.test.js.map +1 -1
  538. package/dist/src/ui/keyMatchers.test.js +2 -2
  539. package/dist/src/ui/keyMatchers.test.js.map +1 -1
  540. package/dist/src/ui/layouts/DefaultAppLayout.js +1 -1
  541. package/dist/src/ui/layouts/DefaultAppLayout.js.map +1 -1
  542. package/dist/src/ui/noninteractive/nonInteractiveUi.js +1 -0
  543. package/dist/src/ui/noninteractive/nonInteractiveUi.js.map +1 -1
  544. package/dist/src/ui/privacy/CloudFreePrivacyNotice.test.d.ts +6 -0
  545. package/dist/src/ui/privacy/CloudFreePrivacyNotice.test.js +121 -0
  546. package/dist/src/ui/privacy/CloudFreePrivacyNotice.test.js.map +1 -0
  547. package/dist/src/ui/privacy/CloudPaidPrivacyNotice.test.d.ts +6 -0
  548. package/dist/src/ui/privacy/CloudPaidPrivacyNotice.test.js +34 -0
  549. package/dist/src/ui/privacy/CloudPaidPrivacyNotice.test.js.map +1 -0
  550. package/dist/src/ui/privacy/GeminiPrivacyNotice.test.d.ts +6 -0
  551. package/dist/src/ui/privacy/GeminiPrivacyNotice.test.js +34 -0
  552. package/dist/src/ui/privacy/GeminiPrivacyNotice.test.js.map +1 -0
  553. package/dist/src/ui/privacy/PrivacyNotice.test.d.ts +6 -0
  554. package/dist/src/ui/privacy/PrivacyNotice.test.js +62 -0
  555. package/dist/src/ui/privacy/PrivacyNotice.test.js.map +1 -0
  556. package/dist/src/ui/state/extensions.test.js +208 -51
  557. package/dist/src/ui/state/extensions.test.js.map +1 -1
  558. package/dist/src/ui/themes/holiday.d.ts +7 -0
  559. package/dist/src/ui/themes/holiday.js +162 -0
  560. package/dist/src/ui/themes/holiday.js.map +1 -0
  561. package/dist/src/ui/themes/theme-manager.js +2 -0
  562. package/dist/src/ui/themes/theme-manager.js.map +1 -1
  563. package/dist/src/ui/themes/theme-manager.test.js +2 -1
  564. package/dist/src/ui/themes/theme-manager.test.js.map +1 -1
  565. package/dist/src/ui/types.d.ts +7 -1
  566. package/dist/src/ui/types.js +1 -1
  567. package/dist/src/ui/types.js.map +1 -1
  568. package/dist/src/ui/utils/ConsolePatcher.js +6 -9
  569. package/dist/src/ui/utils/ConsolePatcher.js.map +1 -1
  570. package/dist/src/ui/utils/bracketedPaste.d.ts +7 -0
  571. package/dist/src/ui/utils/bracketedPaste.js +15 -0
  572. package/dist/src/ui/utils/bracketedPaste.js.map +1 -0
  573. package/dist/src/ui/utils/commandUtils.js +3 -86
  574. package/dist/src/ui/utils/commandUtils.js.map +1 -1
  575. package/dist/src/ui/utils/commandUtils.test.js +21 -273
  576. package/dist/src/ui/utils/commandUtils.test.js.map +1 -1
  577. package/dist/src/ui/utils/directoryUtils.d.ts +6 -0
  578. package/dist/src/ui/utils/directoryUtils.js +21 -0
  579. package/dist/src/ui/utils/directoryUtils.js.map +1 -0
  580. package/dist/src/ui/utils/directoryUtils.test.d.ts +6 -0
  581. package/dist/src/ui/utils/directoryUtils.test.js +52 -0
  582. package/dist/src/ui/utils/directoryUtils.test.js.map +1 -0
  583. package/dist/src/ui/utils/kittyProtocolDetector.d.ts +6 -2
  584. package/dist/src/ui/utils/kittyProtocolDetector.js +47 -43
  585. package/dist/src/ui/utils/kittyProtocolDetector.js.map +1 -1
  586. package/dist/src/ui/utils/kittyProtocolDetector.test.d.ts +6 -0
  587. package/dist/src/ui/utils/kittyProtocolDetector.test.js +113 -0
  588. package/dist/src/ui/utils/kittyProtocolDetector.test.js.map +1 -0
  589. package/dist/src/ui/utils/mouse.d.ts +2 -2
  590. package/dist/src/ui/utils/mouse.js +2 -11
  591. package/dist/src/ui/utils/mouse.js.map +1 -1
  592. package/dist/src/ui/utils/terminalSetup.js +39 -38
  593. package/dist/src/ui/utils/terminalSetup.js.map +1 -1
  594. package/dist/src/ui/utils/terminalSetup.test.d.ts +6 -0
  595. package/dist/src/ui/utils/terminalSetup.test.js +132 -0
  596. package/dist/src/ui/utils/terminalSetup.test.js.map +1 -0
  597. package/dist/src/ui/utils/ui-sizing.test.d.ts +6 -0
  598. package/dist/src/ui/utils/ui-sizing.test.js +56 -0
  599. package/dist/src/ui/utils/ui-sizing.test.js.map +1 -0
  600. package/dist/src/utils/checks.test.d.ts +6 -0
  601. package/dist/src/utils/checks.test.js +29 -0
  602. package/dist/src/utils/checks.test.js.map +1 -0
  603. package/dist/src/utils/cleanup.d.ts +2 -0
  604. package/dist/src/utils/cleanup.js +16 -0
  605. package/dist/src/utils/cleanup.js.map +1 -1
  606. package/dist/src/utils/cleanup.test.js +69 -16
  607. package/dist/src/utils/cleanup.test.js.map +1 -1
  608. package/dist/src/utils/dialogScopeUtils.test.d.ts +6 -0
  609. package/dist/src/utils/dialogScopeUtils.test.js +81 -0
  610. package/dist/src/utils/dialogScopeUtils.test.js.map +1 -0
  611. package/dist/src/utils/errors.js +10 -0
  612. package/dist/src/utils/errors.js.map +1 -1
  613. package/dist/src/utils/errors.test.js +62 -0
  614. package/dist/src/utils/errors.test.js.map +1 -1
  615. package/dist/src/utils/events.d.ts +0 -2
  616. package/dist/src/utils/events.js +0 -1
  617. package/dist/src/utils/events.js.map +1 -1
  618. package/dist/src/utils/events.test.d.ts +6 -0
  619. package/dist/src/utils/events.test.js +24 -0
  620. package/dist/src/utils/events.test.js.map +1 -0
  621. package/dist/src/utils/handleAutoUpdate.test.js +103 -24
  622. package/dist/src/utils/handleAutoUpdate.test.js.map +1 -1
  623. package/dist/src/utils/installationInfo.test.js +8 -9
  624. package/dist/src/utils/installationInfo.test.js.map +1 -1
  625. package/dist/src/utils/math.test.d.ts +6 -0
  626. package/dist/src/utils/math.test.js +23 -0
  627. package/dist/src/utils/math.test.js.map +1 -0
  628. package/dist/src/utils/persistentState.d.ts +1 -1
  629. package/dist/src/utils/persistentState.test.d.ts +6 -0
  630. package/dist/src/utils/persistentState.test.js +68 -0
  631. package/dist/src/utils/persistentState.test.js.map +1 -0
  632. package/dist/src/utils/readStdin.js +1 -0
  633. package/dist/src/utils/readStdin.js.map +1 -1
  634. package/dist/src/utils/readStdin.test.js +25 -0
  635. package/dist/src/utils/readStdin.test.js.map +1 -1
  636. package/dist/src/utils/resolvePath.test.d.ts +6 -0
  637. package/dist/src/utils/resolvePath.test.js +31 -0
  638. package/dist/src/utils/resolvePath.test.js.map +1 -0
  639. package/dist/src/utils/sandbox.js +6 -137
  640. package/dist/src/utils/sandbox.js.map +1 -1
  641. package/dist/src/utils/sandbox.test.d.ts +6 -0
  642. package/dist/src/utils/sandbox.test.js +302 -0
  643. package/dist/src/utils/sandbox.test.js.map +1 -0
  644. package/dist/src/utils/sandboxUtils.d.ts +14 -0
  645. package/dist/src/utils/sandboxUtils.js +120 -0
  646. package/dist/src/utils/sandboxUtils.js.map +1 -0
  647. package/dist/src/utils/sandboxUtils.test.d.ts +6 -0
  648. package/dist/src/utils/sandboxUtils.test.js +119 -0
  649. package/dist/src/utils/sandboxUtils.test.js.map +1 -0
  650. package/dist/src/utils/sessionCleanup.test.js +42 -2
  651. package/dist/src/utils/sessionCleanup.test.js.map +1 -1
  652. package/dist/src/utils/sessionUtils.d.ts +54 -4
  653. package/dist/src/utils/sessionUtils.js +106 -26
  654. package/dist/src/utils/sessionUtils.js.map +1 -1
  655. package/dist/src/utils/sessionUtils.test.js +46 -3
  656. package/dist/src/utils/sessionUtils.test.js.map +1 -1
  657. package/dist/src/utils/sessions.js +4 -1
  658. package/dist/src/utils/sessions.js.map +1 -1
  659. package/dist/src/utils/sessions.test.d.ts +6 -0
  660. package/dist/src/utils/sessions.test.js +558 -0
  661. package/dist/src/utils/sessions.test.js.map +1 -0
  662. package/dist/src/utils/updateEventEmitter.test.d.ts +6 -0
  663. package/dist/src/utils/updateEventEmitter.test.js +18 -0
  664. package/dist/src/utils/updateEventEmitter.test.js.map +1 -0
  665. package/dist/src/utils/version.test.d.ts +6 -0
  666. package/dist/src/utils/version.test.js +39 -0
  667. package/dist/src/utils/version.test.js.map +1 -0
  668. package/dist/src/validateNonInterActiveAuth.js +2 -0
  669. package/dist/src/validateNonInterActiveAuth.js.map +1 -1
  670. package/dist/src/zed-integration/acp.d.ts +2 -24
  671. package/dist/src/zed-integration/acp.js +2 -156
  672. package/dist/src/zed-integration/acp.js.map +1 -1
  673. package/dist/src/zed-integration/acp.test.d.ts +6 -0
  674. package/dist/src/zed-integration/acp.test.js +227 -0
  675. package/dist/src/zed-integration/acp.test.js.map +1 -0
  676. package/dist/src/zed-integration/connection.d.ts +28 -0
  677. package/dist/src/zed-integration/connection.js +163 -0
  678. package/dist/src/zed-integration/connection.js.map +1 -0
  679. package/dist/src/zed-integration/connection.test.d.ts +6 -0
  680. package/dist/src/zed-integration/connection.test.js +175 -0
  681. package/dist/src/zed-integration/connection.test.js.map +1 -0
  682. package/dist/src/zed-integration/fileSystemService.test.d.ts +6 -0
  683. package/dist/src/zed-integration/fileSystemService.test.js +98 -0
  684. package/dist/src/zed-integration/fileSystemService.test.js.map +1 -0
  685. package/dist/src/zed-integration/schema.d.ts +69 -13
  686. package/dist/src/zed-integration/schema.js +6 -5
  687. package/dist/src/zed-integration/schema.js.map +1 -1
  688. package/dist/src/zed-integration/zedIntegration.d.ts +31 -8
  689. package/dist/src/zed-integration/zedIntegration.js +14 -23
  690. package/dist/src/zed-integration/zedIntegration.js.map +1 -1
  691. package/dist/src/zed-integration/zedIntegration.test.d.ts +6 -0
  692. package/dist/src/zed-integration/zedIntegration.test.js +619 -0
  693. package/dist/src/zed-integration/zedIntegration.test.js.map +1 -0
  694. package/dist/tsconfig.tsbuildinfo +1 -1
  695. package/package.json +10 -9
@@ -6,11 +6,12 @@
6
6
  import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
7
7
  import * as os from 'node:os';
8
8
  import * as path from 'node:path';
9
- import { DEFAULT_FILE_FILTERING_OPTIONS, DEFAULT_GEMINI_MODEL, DEFAULT_GEMINI_MODEL_AUTO, OutputFormat, SHELL_TOOL_NAME, WRITE_FILE_TOOL_NAME, EDIT_TOOL_NAME, } from '@google/gemini-cli-core';
9
+ import { DEFAULT_GEMINI_MODEL_AUTO, DEFAULT_FILE_FILTERING_OPTIONS, OutputFormat, SHELL_TOOL_NAME, WRITE_FILE_TOOL_NAME, EDIT_TOOL_NAME, debugLogger, } from '@google/gemini-cli-core';
10
10
  import { loadCliConfig, parseArguments } from './config.js';
11
11
  import * as ServerConfig from '@google/gemini-cli-core';
12
12
  import { isWorkspaceTrusted } from './trustedFolders.js';
13
13
  import { ExtensionManager } from './extension-manager.js';
14
+ import { RESUME_LATEST } from '../utils/sessionUtils.js';
14
15
  vi.mock('./trustedFolders.js', () => ({
15
16
  isWorkspaceTrusted: vi
16
17
  .fn()
@@ -80,6 +81,7 @@ vi.mock('@google/gemini-cli-core', async () => {
80
81
  return Promise.resolve({
81
82
  memoryContent: extensionPaths.join(',') || '',
82
83
  fileCount: extensionPaths?.length || 0,
84
+ filePaths: extensionPaths,
83
85
  });
84
86
  }),
85
87
  DEFAULT_MEMORY_FILE_FILTERING_OPTIONS: {
@@ -109,35 +111,31 @@ afterEach(() => {
109
111
  }
110
112
  });
111
113
  describe('parseArguments', () => {
112
- it('should throw an error when both --prompt and --prompt-interactive are used together', async () => {
113
- process.argv = [
114
- 'node',
115
- 'script.js',
116
- '--prompt',
117
- 'test prompt',
118
- '--prompt-interactive',
119
- 'interactive prompt',
120
- ];
121
- const mockExit = vi.spyOn(process, 'exit').mockImplementation(() => {
122
- throw new Error('process.exit called');
123
- });
124
- const mockConsoleError = vi
125
- .spyOn(console, 'error')
126
- .mockImplementation(() => { });
127
- await expect(parseArguments({})).rejects.toThrow('process.exit called');
128
- expect(mockConsoleError).toHaveBeenCalledWith(expect.stringContaining('Cannot use both --prompt (-p) and --prompt-interactive (-i) together'));
129
- mockExit.mockRestore();
130
- mockConsoleError.mockRestore();
131
- });
132
- it('should throw an error when using short flags -p and -i together', async () => {
133
- process.argv = [
134
- 'node',
135
- 'script.js',
136
- '-p',
137
- 'test prompt',
138
- '-i',
139
- 'interactive prompt',
140
- ];
114
+ it.each([
115
+ {
116
+ description: 'long flags',
117
+ argv: [
118
+ 'node',
119
+ 'script.js',
120
+ '--prompt',
121
+ 'test prompt',
122
+ '--prompt-interactive',
123
+ 'interactive prompt',
124
+ ],
125
+ },
126
+ {
127
+ description: 'short flags',
128
+ argv: [
129
+ 'node',
130
+ 'script.js',
131
+ '-p',
132
+ 'test prompt',
133
+ '-i',
134
+ 'interactive prompt',
135
+ ],
136
+ },
137
+ ])('should throw an error when using conflicting prompt flags ($description)', async ({ argv }) => {
138
+ process.argv = argv;
141
139
  const mockExit = vi.spyOn(process, 'exit').mockImplementation(() => {
142
140
  throw new Error('process.exit called');
143
141
  });
@@ -149,158 +147,160 @@ describe('parseArguments', () => {
149
147
  mockExit.mockRestore();
150
148
  mockConsoleError.mockRestore();
151
149
  });
152
- it('should allow --prompt without --prompt-interactive', async () => {
153
- process.argv = ['node', 'script.js', '--prompt', 'test prompt'];
154
- const argv = await parseArguments({});
155
- expect(argv.prompt).toBe('test prompt');
156
- expect(argv.promptInteractive).toBeUndefined();
157
- });
158
- it('should allow --prompt-interactive without --prompt', async () => {
159
- process.argv = [
160
- 'node',
161
- 'script.js',
162
- '--prompt-interactive',
163
- 'interactive prompt',
164
- ];
165
- const argv = await parseArguments({});
166
- expect(argv.promptInteractive).toBe('interactive prompt');
167
- expect(argv.prompt).toBeUndefined();
168
- });
169
- it('should allow -i flag as alias for --prompt-interactive', async () => {
170
- process.argv = ['node', 'script.js', '-i', 'interactive prompt'];
171
- const argv = await parseArguments({});
172
- expect(argv.promptInteractive).toBe('interactive prompt');
173
- expect(argv.prompt).toBeUndefined();
174
- });
175
- it('should convert positional query argument to prompt by default', async () => {
176
- process.argv = ['node', 'script.js', 'Hi Gemini'];
177
- const argv = await parseArguments({});
178
- expect(argv.query).toBe('Hi Gemini');
179
- expect(argv.prompt).toBe('Hi Gemini');
180
- expect(argv.promptInteractive).toBeUndefined();
181
- });
182
- it('should map @path to prompt (one-shot) when it starts with @', async () => {
183
- process.argv = ['node', 'script.js', '@path ./file.md'];
184
- const argv = await parseArguments({});
185
- expect(argv.query).toBe('@path ./file.md');
186
- expect(argv.prompt).toBe('@path ./file.md');
187
- expect(argv.promptInteractive).toBeUndefined();
188
- });
189
- it('should map @path to prompt even when config flags are present', async () => {
190
- // @path queries should now go to one-shot mode regardless of other flags
191
- process.argv = [
192
- 'node',
193
- 'script.js',
194
- '@path',
195
- './file.md',
196
- '--model',
197
- 'gemini-2.5-pro',
198
- ];
199
- const argv = await parseArguments({});
200
- expect(argv.query).toBe('@path ./file.md');
201
- expect(argv.prompt).toBe('@path ./file.md'); // Should map to one-shot
202
- expect(argv.promptInteractive).toBeUndefined();
203
- expect(argv.model).toBe('gemini-2.5-pro');
204
- });
205
- it('maps unquoted positional @path + arg to prompt (one-shot)', async () => {
206
- // Simulate: gemini @path ./file.md
207
- process.argv = ['node', 'script.js', '@path', './file.md'];
208
- const argv = await parseArguments({});
209
- // After normalization, query is a single string
210
- expect(argv.query).toBe('@path ./file.md');
211
- // And it's mapped to one-shot prompt when no -p/-i flags are set
212
- expect(argv.prompt).toBe('@path ./file.md');
213
- expect(argv.promptInteractive).toBeUndefined();
214
- });
215
- it('should handle multiple @path arguments in a single command (one-shot)', async () => {
216
- // Simulate: gemini @path ./file1.md @path ./file2.md
217
- process.argv = [
218
- 'node',
219
- 'script.js',
220
- '@path',
221
- './file1.md',
222
- '@path',
223
- './file2.md',
224
- ];
225
- const argv = await parseArguments({});
226
- // After normalization, all arguments are joined with spaces
227
- expect(argv.query).toBe('@path ./file1.md @path ./file2.md');
228
- // And it's mapped to one-shot prompt
229
- expect(argv.prompt).toBe('@path ./file1.md @path ./file2.md');
230
- expect(argv.promptInteractive).toBeUndefined();
231
- });
232
- it('should handle mixed quoted and unquoted @path arguments (one-shot)', async () => {
233
- // Simulate: gemini "@path ./file1.md" @path ./file2.md "additional text"
234
- process.argv = [
235
- 'node',
236
- 'script.js',
237
- '@path ./file1.md',
238
- '@path',
239
- './file2.md',
240
- 'additional text',
241
- ];
242
- const argv = await parseArguments({});
243
- // After normalization, all arguments are joined with spaces
244
- expect(argv.query).toBe('@path ./file1.md @path ./file2.md additional text');
245
- // And it's mapped to one-shot prompt
246
- expect(argv.prompt).toBe('@path ./file1.md @path ./file2.md additional text');
247
- expect(argv.promptInteractive).toBeUndefined();
248
- });
249
- it('should map @path to prompt with ambient flags (debug)', async () => {
250
- // Ambient flags like debug should NOT affect routing
251
- process.argv = ['node', 'script.js', '@path', './file.md', '--debug'];
252
- const argv = await parseArguments({});
253
- expect(argv.query).toBe('@path ./file.md');
254
- expect(argv.prompt).toBe('@path ./file.md'); // Should map to one-shot
255
- expect(argv.promptInteractive).toBeUndefined();
256
- expect(argv.debug).toBe(true);
257
- });
258
- it('should map any @command to prompt (one-shot)', async () => {
259
- // Test that all @commands now go to one-shot mode
260
- const testCases = [
261
- '@path ./file.md',
262
- '@include src/',
263
- '@search pattern',
264
- '@web query',
265
- '@git status',
266
- ];
267
- for (const testQuery of testCases) {
268
- process.argv = ['node', 'script.js', testQuery];
269
- const argv = await parseArguments({});
270
- expect(argv.query).toBe(testQuery);
271
- expect(argv.prompt).toBe(testQuery);
272
- expect(argv.promptInteractive).toBeUndefined();
273
- }
274
- });
275
- it('should handle @command with leading whitespace', async () => {
276
- // Test that trim() + routing handles leading whitespace correctly
277
- process.argv = ['node', 'script.js', ' @path ./file.md'];
278
- const argv = await parseArguments({});
279
- expect(argv.query).toBe(' @path ./file.md');
280
- expect(argv.prompt).toBe(' @path ./file.md');
281
- expect(argv.promptInteractive).toBeUndefined();
282
- });
283
- it('should throw an error when both --yolo and --approval-mode are used together', async () => {
284
- process.argv = [
285
- 'node',
286
- 'script.js',
287
- '--yolo',
288
- '--approval-mode',
289
- 'default',
290
- ];
291
- const mockExit = vi.spyOn(process, 'exit').mockImplementation(() => {
292
- throw new Error('process.exit called');
150
+ it.each([
151
+ {
152
+ description: 'should allow --prompt without --prompt-interactive',
153
+ argv: ['node', 'script.js', '--prompt', 'test prompt'],
154
+ expected: { prompt: 'test prompt', promptInteractive: undefined },
155
+ },
156
+ {
157
+ description: 'should allow --prompt-interactive without --prompt',
158
+ argv: ['node', 'script.js', '--prompt-interactive', 'interactive prompt'],
159
+ expected: { prompt: undefined, promptInteractive: 'interactive prompt' },
160
+ },
161
+ {
162
+ description: 'should allow -i flag as alias for --prompt-interactive',
163
+ argv: ['node', 'script.js', '-i', 'interactive prompt'],
164
+ expected: { prompt: undefined, promptInteractive: 'interactive prompt' },
165
+ },
166
+ ])('$description', async ({ argv, expected }) => {
167
+ process.argv = argv;
168
+ const parsedArgs = await parseArguments({});
169
+ expect(parsedArgs.prompt).toBe(expected.prompt);
170
+ expect(parsedArgs.promptInteractive).toBe(expected.promptInteractive);
171
+ });
172
+ describe('positional arguments and @commands', () => {
173
+ it.each([
174
+ {
175
+ description: 'should convert positional query argument to prompt by default',
176
+ argv: ['node', 'script.js', 'Hi Gemini'],
177
+ expectedQuery: 'Hi Gemini',
178
+ expectedModel: undefined,
179
+ debug: false,
180
+ },
181
+ {
182
+ description: 'should map @path to prompt (one-shot) when it starts with @',
183
+ argv: ['node', 'script.js', '@path ./file.md'],
184
+ expectedQuery: '@path ./file.md',
185
+ expectedModel: undefined,
186
+ debug: false,
187
+ },
188
+ {
189
+ description: 'should map @path to prompt even when config flags are present',
190
+ argv: [
191
+ 'node',
192
+ 'script.js',
193
+ '@path',
194
+ './file.md',
195
+ '--model',
196
+ 'gemini-2.5-pro',
197
+ ],
198
+ expectedQuery: '@path ./file.md',
199
+ expectedModel: 'gemini-2.5-pro',
200
+ debug: false,
201
+ },
202
+ {
203
+ description: 'maps unquoted positional @path + arg to prompt (one-shot)',
204
+ argv: ['node', 'script.js', '@path', './file.md'],
205
+ expectedQuery: '@path ./file.md',
206
+ expectedModel: undefined,
207
+ debug: false,
208
+ },
209
+ {
210
+ description: 'should handle multiple @path arguments in a single command (one-shot)',
211
+ argv: [
212
+ 'node',
213
+ 'script.js',
214
+ '@path',
215
+ './file1.md',
216
+ '@path',
217
+ './file2.md',
218
+ ],
219
+ expectedQuery: '@path ./file1.md @path ./file2.md',
220
+ expectedModel: undefined,
221
+ debug: false,
222
+ },
223
+ {
224
+ description: 'should handle mixed quoted and unquoted @path arguments (one-shot)',
225
+ argv: [
226
+ 'node',
227
+ 'script.js',
228
+ '@path ./file1.md',
229
+ '@path',
230
+ './file2.md',
231
+ 'additional text',
232
+ ],
233
+ expectedQuery: '@path ./file1.md @path ./file2.md additional text',
234
+ expectedModel: undefined,
235
+ debug: false,
236
+ },
237
+ {
238
+ description: 'should map @path to prompt with ambient flags (debug)',
239
+ argv: ['node', 'script.js', '@path', './file.md', '--debug'],
240
+ expectedQuery: '@path ./file.md',
241
+ expectedModel: undefined,
242
+ debug: true,
243
+ },
244
+ {
245
+ description: 'should map @include to prompt (one-shot)',
246
+ argv: ['node', 'script.js', '@include src/'],
247
+ expectedQuery: '@include src/',
248
+ expectedModel: undefined,
249
+ debug: false,
250
+ },
251
+ {
252
+ description: 'should map @search to prompt (one-shot)',
253
+ argv: ['node', 'script.js', '@search pattern'],
254
+ expectedQuery: '@search pattern',
255
+ expectedModel: undefined,
256
+ debug: false,
257
+ },
258
+ {
259
+ description: 'should map @web to prompt (one-shot)',
260
+ argv: ['node', 'script.js', '@web query'],
261
+ expectedQuery: '@web query',
262
+ expectedModel: undefined,
263
+ debug: false,
264
+ },
265
+ {
266
+ description: 'should map @git to prompt (one-shot)',
267
+ argv: ['node', 'script.js', '@git status'],
268
+ expectedQuery: '@git status',
269
+ expectedModel: undefined,
270
+ debug: false,
271
+ },
272
+ {
273
+ description: 'should handle @command with leading whitespace',
274
+ argv: ['node', 'script.js', ' @path ./file.md'],
275
+ expectedQuery: ' @path ./file.md',
276
+ expectedModel: undefined,
277
+ debug: false,
278
+ },
279
+ ])('$description', async ({ argv, expectedQuery, expectedModel, debug }) => {
280
+ process.argv = argv;
281
+ const parsedArgs = await parseArguments({});
282
+ expect(parsedArgs.query).toBe(expectedQuery);
283
+ expect(parsedArgs.prompt).toBe(expectedQuery);
284
+ expect(parsedArgs.promptInteractive).toBeUndefined();
285
+ if (expectedModel) {
286
+ expect(parsedArgs.model).toBe(expectedModel);
287
+ }
288
+ if (debug) {
289
+ expect(parsedArgs.debug).toBe(true);
290
+ }
293
291
  });
294
- const mockConsoleError = vi
295
- .spyOn(console, 'error')
296
- .mockImplementation(() => { });
297
- await expect(parseArguments({})).rejects.toThrow('process.exit called');
298
- expect(mockConsoleError).toHaveBeenCalledWith(expect.stringContaining('Cannot use both --yolo (-y) and --approval-mode together. Use --approval-mode=yolo instead.'));
299
- mockExit.mockRestore();
300
- mockConsoleError.mockRestore();
301
292
  });
302
- it('should throw an error when using short flags -y and --approval-mode together', async () => {
303
- process.argv = ['node', 'script.js', '-y', '--approval-mode', 'yolo'];
293
+ it.each([
294
+ {
295
+ description: 'long flags',
296
+ argv: ['node', 'script.js', '--yolo', '--approval-mode', 'default'],
297
+ },
298
+ {
299
+ description: 'short flags',
300
+ argv: ['node', 'script.js', '-y', '--approval-mode', 'yolo'],
301
+ },
302
+ ])('should throw an error when using conflicting yolo/approval-mode flags ($description)', async ({ argv }) => {
303
+ process.argv = argv;
304
304
  const mockExit = vi.spyOn(process, 'exit').mockImplementation(() => {
305
305
  throw new Error('process.exit called');
306
306
  });
@@ -312,17 +312,22 @@ describe('parseArguments', () => {
312
312
  mockExit.mockRestore();
313
313
  mockConsoleError.mockRestore();
314
314
  });
315
- it('should allow --approval-mode without --yolo', async () => {
316
- process.argv = ['node', 'script.js', '--approval-mode', 'auto_edit'];
317
- const argv = await parseArguments({});
318
- expect(argv.approvalMode).toBe('auto_edit');
319
- expect(argv.yolo).toBe(false);
320
- });
321
- it('should allow --yolo without --approval-mode', async () => {
322
- process.argv = ['node', 'script.js', '--yolo'];
323
- const argv = await parseArguments({});
324
- expect(argv.yolo).toBe(true);
325
- expect(argv.approvalMode).toBeUndefined();
315
+ it.each([
316
+ {
317
+ description: 'should allow --approval-mode without --yolo',
318
+ argv: ['node', 'script.js', '--approval-mode', 'auto_edit'],
319
+ expected: { approvalMode: 'auto_edit', yolo: false },
320
+ },
321
+ {
322
+ description: 'should allow --yolo without --approval-mode',
323
+ argv: ['node', 'script.js', '--yolo'],
324
+ expected: { approvalMode: undefined, yolo: true },
325
+ },
326
+ ])('$description', async ({ argv, expected }) => {
327
+ process.argv = argv;
328
+ const parsedArgs = await parseArguments({});
329
+ expect(parsedArgs.approvalMode).toBe(expected.approvalMode);
330
+ expect(parsedArgs.yolo).toBe(expected.yolo);
326
331
  });
327
332
  it('should reject invalid --approval-mode values', async () => {
328
333
  process.argv = ['node', 'script.js', '--approval-mode', 'invalid'];
@@ -332,28 +337,38 @@ describe('parseArguments', () => {
332
337
  const mockConsoleError = vi
333
338
  .spyOn(console, 'error')
334
339
  .mockImplementation(() => { });
340
+ const debugErrorSpy = vi
341
+ .spyOn(debugLogger, 'error')
342
+ .mockImplementation(() => { });
335
343
  await expect(parseArguments({})).rejects.toThrow('process.exit called');
336
- expect(mockConsoleError).toHaveBeenCalledWith(expect.stringContaining('Invalid values:'));
344
+ expect(debugErrorSpy).toHaveBeenCalledWith(expect.stringContaining('Invalid values:'));
345
+ expect(mockConsoleError).toHaveBeenCalled();
337
346
  mockExit.mockRestore();
338
347
  mockConsoleError.mockRestore();
348
+ debugErrorSpy.mockRestore();
339
349
  });
340
- it('should throw an error when resuming a session without prompt in non-interactive mode', async () => {
350
+ it('should allow resuming a session without prompt argument in non-interactive mode (expecting stdin)', async () => {
341
351
  const originalIsTTY = process.stdin.isTTY;
342
352
  process.stdin.isTTY = false;
343
353
  process.argv = ['node', 'script.js', '--resume', 'session-id'];
344
- const mockExit = vi.spyOn(process, 'exit').mockImplementation(() => {
345
- throw new Error('process.exit called');
346
- });
347
- const mockConsoleError = vi
348
- .spyOn(console, 'error')
349
- .mockImplementation(() => { });
350
354
  try {
351
- await expect(parseArguments({})).rejects.toThrow('process.exit called');
352
- expect(mockConsoleError).toHaveBeenCalledWith(expect.stringContaining('When resuming a session, you must provide a message via --prompt (-p) or stdin'));
355
+ const argv = await parseArguments({});
356
+ expect(argv.resume).toBe('session-id');
357
+ }
358
+ finally {
359
+ process.stdin.isTTY = originalIsTTY;
360
+ }
361
+ });
362
+ it('should return RESUME_LATEST constant when --resume is passed without a value', async () => {
363
+ const originalIsTTY = process.stdin.isTTY;
364
+ process.stdin.isTTY = true; // Make it interactive to avoid validation error
365
+ process.argv = ['node', 'script.js', '--resume'];
366
+ try {
367
+ const argv = await parseArguments({});
368
+ expect(argv.resume).toBe(RESUME_LATEST);
369
+ expect(argv.resume).toBe('latest');
353
370
  }
354
371
  finally {
355
- mockExit.mockRestore();
356
- mockConsoleError.mockRestore();
357
372
  process.stdin.isTTY = originalIsTTY;
358
373
  }
359
374
  });
@@ -1060,7 +1075,7 @@ describe('loadCliConfig model selection', () => {
1060
1075
  const config = await loadCliConfig({
1061
1076
  // No model set.
1062
1077
  }, 'test-session', argv);
1063
- expect(config.getModel()).toBe(DEFAULT_GEMINI_MODEL);
1078
+ expect(config.getModel()).toBe(DEFAULT_GEMINI_MODEL_AUTO);
1064
1079
  });
1065
1080
  it('always prefers model from argv', async () => {
1066
1081
  process.argv = ['node', 'script.js', '--model', 'gemini-2.5-flash-preview'];
@@ -1081,68 +1096,6 @@ describe('loadCliConfig model selection', () => {
1081
1096
  expect(config.getModel()).toBe('gemini-2.5-flash-preview');
1082
1097
  });
1083
1098
  });
1084
- describe('loadCliConfig model selection with model router', () => {
1085
- beforeEach(() => {
1086
- vi.spyOn(ExtensionManager.prototype, 'getExtensions').mockReturnValue([]);
1087
- });
1088
- afterEach(() => {
1089
- vi.resetAllMocks();
1090
- });
1091
- it('should use auto model when useModelRouter is true and no model is provided', async () => {
1092
- process.argv = ['node', 'script.js'];
1093
- const argv = await parseArguments({});
1094
- const config = await loadCliConfig({
1095
- experimental: {
1096
- useModelRouter: true,
1097
- },
1098
- }, 'test-session', argv);
1099
- expect(config.getModel()).toBe(DEFAULT_GEMINI_MODEL_AUTO);
1100
- });
1101
- it('should use default model when useModelRouter is false and no model is provided', async () => {
1102
- process.argv = ['node', 'script.js'];
1103
- const argv = await parseArguments({});
1104
- const config = await loadCliConfig({
1105
- experimental: {
1106
- useModelRouter: false,
1107
- },
1108
- }, 'test-session', argv);
1109
- expect(config.getModel()).toBe(DEFAULT_GEMINI_MODEL);
1110
- });
1111
- it('should prioritize argv over useModelRouter', async () => {
1112
- process.argv = ['node', 'script.js', '--model', 'gemini-from-argv'];
1113
- const argv = await parseArguments({});
1114
- const config = await loadCliConfig({
1115
- experimental: {
1116
- useModelRouter: true,
1117
- },
1118
- }, 'test-session', argv);
1119
- expect(config.getModel()).toBe('gemini-from-argv');
1120
- });
1121
- it('should prioritize settings over useModelRouter', async () => {
1122
- process.argv = ['node', 'script.js'];
1123
- const argv = await parseArguments({});
1124
- const config = await loadCliConfig({
1125
- experimental: {
1126
- useModelRouter: true,
1127
- },
1128
- model: {
1129
- name: 'gemini-from-settings',
1130
- },
1131
- }, 'test-session', argv);
1132
- expect(config.getModel()).toBe('gemini-from-settings');
1133
- });
1134
- it('should prioritize environment variable over useModelRouter', async () => {
1135
- process.argv = ['node', 'script.js'];
1136
- vi.stubEnv('GEMINI_MODEL', 'gemini-from-env');
1137
- const argv = await parseArguments({});
1138
- const config = await loadCliConfig({
1139
- experimental: {
1140
- useModelRouter: true,
1141
- },
1142
- }, 'test-session', argv);
1143
- expect(config.getModel()).toBe('gemini-from-env');
1144
- });
1145
- });
1146
1099
  describe('loadCliConfig folderTrust', () => {
1147
1100
  beforeEach(() => {
1148
1101
  vi.resetAllMocks();
@@ -1226,8 +1179,10 @@ describe('loadCliConfig with includeDirectories', () => {
1226
1179
  path.join(os.homedir(), 'settings', 'path2'),
1227
1180
  path.join(mockCwd, 'settings', 'path3'),
1228
1181
  ];
1229
- expect(config.getWorkspaceContext().getDirectories()).toEqual(expect.arrayContaining(expected));
1230
- expect(config.getWorkspaceContext().getDirectories()).toHaveLength(expected.length);
1182
+ const directories = config.getWorkspaceContext().getDirectories();
1183
+ expect(directories).toEqual([mockCwd]);
1184
+ expect(config.getPendingIncludeDirectories()).toEqual(expect.arrayContaining(expected.filter((dir) => dir !== mockCwd)));
1185
+ expect(config.getPendingIncludeDirectories()).toHaveLength(expected.length - 1);
1231
1186
  });
1232
1187
  });
1233
1188
  describe('loadCliConfig compressionThreshold', () => {
@@ -1292,29 +1247,6 @@ describe('loadCliConfig useRipgrep', () => {
1292
1247
  const config = await loadCliConfig(settings, 'test-session', argv);
1293
1248
  expect(config.getUseRipgrep()).toBe(true);
1294
1249
  });
1295
- describe('loadCliConfig useModelRouter', () => {
1296
- it('should be false by default when useModelRouter is not set in settings', async () => {
1297
- process.argv = ['node', 'script.js'];
1298
- const _argv = await parseArguments({});
1299
- const settings = {};
1300
- const config = await loadCliConfig(settings, 'test-session', _argv);
1301
- expect(config.getUseModelRouter()).toBe(false);
1302
- });
1303
- it('should be true when useModelRouter is set to true in settings', async () => {
1304
- process.argv = ['node', 'script.js'];
1305
- const argv = await parseArguments({});
1306
- const settings = { experimental: { useModelRouter: true } };
1307
- const config = await loadCliConfig(settings, 'test-session', argv);
1308
- expect(config.getUseModelRouter()).toBe(true);
1309
- });
1310
- it('should be false when useModelRouter is explicitly set to false in settings', async () => {
1311
- process.argv = ['node', 'script.js'];
1312
- const argv = await parseArguments({});
1313
- const settings = { experimental: { useModelRouter: false } };
1314
- const config = await loadCliConfig(settings, 'test-session', argv);
1315
- expect(config.getUseModelRouter()).toBe(false);
1316
- });
1317
- });
1318
1250
  });
1319
1251
  describe('screenReader configuration', () => {
1320
1252
  beforeEach(() => {
@@ -1801,17 +1733,22 @@ describe('Output format', () => {
1801
1733
  expect(config.getOutputFormat()).toBe(OutputFormat.STREAM_JSON);
1802
1734
  });
1803
1735
  it('should error on invalid --output-format argument', async () => {
1804
- process.argv = ['node', 'script.js', '--output-format', 'yaml'];
1736
+ process.argv = ['node', 'script.js', '--output-format', 'invalid'];
1805
1737
  const mockExit = vi.spyOn(process, 'exit').mockImplementation(() => {
1806
1738
  throw new Error('process.exit called');
1807
1739
  });
1808
1740
  const mockConsoleError = vi
1809
1741
  .spyOn(console, 'error')
1810
1742
  .mockImplementation(() => { });
1743
+ const debugErrorSpy = vi
1744
+ .spyOn(debugLogger, 'error')
1745
+ .mockImplementation(() => { });
1811
1746
  await expect(parseArguments({})).rejects.toThrow('process.exit called');
1812
- expect(mockConsoleError).toHaveBeenCalledWith(expect.stringContaining('Invalid values:'));
1747
+ expect(debugErrorSpy).toHaveBeenCalledWith(expect.stringContaining('Invalid values:'));
1748
+ expect(mockConsoleError).toHaveBeenCalled();
1813
1749
  mockExit.mockRestore();
1814
1750
  mockConsoleError.mockRestore();
1751
+ debugErrorSpy.mockRestore();
1815
1752
  });
1816
1753
  });
1817
1754
  describe('parseArguments with positional prompt', () => {
@@ -1834,10 +1771,14 @@ describe('parseArguments with positional prompt', () => {
1834
1771
  const mockConsoleError = vi
1835
1772
  .spyOn(console, 'error')
1836
1773
  .mockImplementation(() => { });
1774
+ const debugErrorSpy = vi
1775
+ .spyOn(debugLogger, 'error')
1776
+ .mockImplementation(() => { });
1837
1777
  await expect(parseArguments({})).rejects.toThrow('process.exit called');
1838
- expect(mockConsoleError).toHaveBeenCalledWith(expect.stringContaining('Cannot use both a positional prompt and the --prompt (-p) flag together'));
1778
+ expect(debugErrorSpy).toHaveBeenCalledWith(expect.stringContaining('Cannot use both a positional prompt and the --prompt (-p) flag together'));
1839
1779
  mockExit.mockRestore();
1840
1780
  mockConsoleError.mockRestore();
1781
+ debugErrorSpy.mockRestore();
1841
1782
  });
1842
1783
  it('should correctly parse a positional prompt to query field', async () => {
1843
1784
  process.argv = ['node', 'script.js', 'positional', 'prompt'];