@machina.ai/cell-cli 1.6.1-rc1 → 1.8.2-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 (401) hide show
  1. package/dist/package.json +7 -4
  2. package/dist/src/commands/extensions/examples/context/gemini-extension.json +1 -2
  3. package/dist/src/commands/extensions/examples/mcp-server/gemini-extension.json +3 -2
  4. package/dist/src/commands/extensions/examples/mcp-server/package.json +18 -0
  5. package/dist/src/commands/extensions/examples/mcp-server/tsconfig.json +13 -0
  6. package/dist/src/commands/extensions/install.d.ts +1 -2
  7. package/dist/src/commands/extensions/install.js +29 -36
  8. package/dist/src/commands/extensions/install.js.map +1 -1
  9. package/dist/src/commands/extensions/install.test.js +16 -16
  10. package/dist/src/commands/extensions/install.test.js.map +1 -1
  11. package/dist/src/commands/extensions/link.js +2 -2
  12. package/dist/src/commands/extensions/link.js.map +1 -1
  13. package/dist/src/commands/extensions/list.js +1 -1
  14. package/dist/src/commands/extensions/list.js.map +1 -1
  15. package/dist/src/commands/extensions/new.js +28 -8
  16. package/dist/src/commands/extensions/new.js.map +1 -1
  17. package/dist/src/commands/extensions/new.test.js +14 -5
  18. package/dist/src/commands/extensions/new.test.js.map +1 -1
  19. package/dist/src/commands/extensions/uninstall.test.js +4 -1
  20. package/dist/src/commands/extensions/uninstall.test.js.map +1 -1
  21. package/dist/src/commands/extensions/update.js +19 -5
  22. package/dist/src/commands/extensions/update.js.map +1 -1
  23. package/dist/src/commands/mcp/add.js +6 -1
  24. package/dist/src/commands/mcp/add.js.map +1 -1
  25. package/dist/src/commands/mcp/list.js +3 -2
  26. package/dist/src/commands/mcp/list.js.map +1 -1
  27. package/dist/src/config/config.d.ts +5 -2
  28. package/dist/src/config/config.js +126 -73
  29. package/dist/src/config/config.js.map +1 -1
  30. package/dist/src/config/extension.d.ts +29 -5
  31. package/dist/src/config/extension.js +139 -65
  32. package/dist/src/config/extension.js.map +1 -1
  33. package/dist/src/config/extensions/extensionEnablement.d.ts +12 -9
  34. package/dist/src/config/extensions/extensionEnablement.js +37 -9
  35. package/dist/src/config/extensions/extensionEnablement.js.map +1 -1
  36. package/dist/src/config/extensions/extensionEnablement.test.js +72 -0
  37. package/dist/src/config/extensions/extensionEnablement.test.js.map +1 -1
  38. package/dist/src/config/extensions/github.d.ts +1 -0
  39. package/dist/src/config/extensions/github.js +31 -15
  40. package/dist/src/config/extensions/github.js.map +1 -1
  41. package/dist/src/config/extensions/github.test.js +68 -1
  42. package/dist/src/config/extensions/github.test.js.map +1 -1
  43. package/dist/src/config/extensions/update.d.ts +4 -5
  44. package/dist/src/config/extensions/update.js +59 -40
  45. package/dist/src/config/extensions/update.js.map +1 -1
  46. package/dist/src/config/extensions/update.test.js +89 -71
  47. package/dist/src/config/extensions/update.test.js.map +1 -1
  48. package/dist/src/config/policy-engine.integration.test.js +270 -0
  49. package/dist/src/config/policy-engine.integration.test.js.map +1 -0
  50. package/dist/src/config/policy.d.ts +8 -0
  51. package/dist/src/config/policy.js +150 -0
  52. package/dist/src/config/policy.js.map +1 -0
  53. package/dist/src/config/policy.test.d.ts +6 -0
  54. package/dist/src/config/policy.test.js +336 -0
  55. package/dist/src/config/policy.test.js.map +1 -0
  56. package/dist/src/config/settings.js +19 -3
  57. package/dist/src/config/settings.js.map +1 -1
  58. package/dist/src/config/settingsSchema.d.ts +30 -3
  59. package/dist/src/config/settingsSchema.js +29 -2
  60. package/dist/src/config/settingsSchema.js.map +1 -1
  61. package/dist/src/config/trustedFolders.d.ts +10 -1
  62. package/dist/src/config/trustedFolders.js +42 -16
  63. package/dist/src/config/trustedFolders.js.map +1 -1
  64. package/dist/src/config/trustedFolders.test.js +98 -17
  65. package/dist/src/config/trustedFolders.test.js.map +1 -1
  66. package/dist/src/gemini.js +118 -161
  67. package/dist/src/gemini.js.map +1 -1
  68. package/dist/src/gemini.test.js +81 -12
  69. package/dist/src/gemini.test.js.map +1 -1
  70. package/dist/src/generated/git-commit.d.ts +2 -2
  71. package/dist/src/generated/git-commit.js +2 -2
  72. package/dist/src/nonInteractiveCli.d.ts +2 -1
  73. package/dist/src/nonInteractiveCli.js +29 -16
  74. package/dist/src/nonInteractiveCli.js.map +1 -1
  75. package/dist/src/nonInteractiveCliCommands.d.ts +17 -0
  76. package/dist/src/nonInteractiveCliCommands.js +79 -0
  77. package/dist/src/nonInteractiveCliCommands.js.map +1 -0
  78. package/dist/src/services/BuiltinCommandLoader.js +4 -0
  79. package/dist/src/services/BuiltinCommandLoader.js.map +1 -1
  80. package/dist/src/services/BuiltinCommandLoader.test.js +50 -1
  81. package/dist/src/services/BuiltinCommandLoader.test.js.map +1 -1
  82. package/dist/src/test-utils/render.d.ts +5 -1
  83. package/dist/src/test-utils/render.js +5 -1
  84. package/dist/src/test-utils/render.js.map +1 -1
  85. package/dist/src/ui/App.js +23 -8
  86. package/dist/src/ui/App.js.map +1 -1
  87. package/dist/src/ui/AppContainer.js +114 -55
  88. package/dist/src/ui/AppContainer.js.map +1 -1
  89. package/dist/src/ui/AppContainer.test.js +399 -7
  90. package/dist/src/ui/AppContainer.test.js.map +1 -1
  91. package/dist/src/ui/IdeIntegrationNudge.d.ts +2 -2
  92. package/dist/src/ui/IdeIntegrationNudge.js +4 -2
  93. package/dist/src/ui/IdeIntegrationNudge.js.map +1 -1
  94. package/dist/src/ui/auth/AuthDialog.js +1 -0
  95. package/dist/src/ui/auth/AuthDialog.js.map +1 -1
  96. package/dist/src/ui/auth/AuthDialog.test.js +1 -0
  97. package/dist/src/ui/auth/AuthDialog.test.js.map +1 -1
  98. package/dist/src/ui/commands/chatCommand.js +14 -3
  99. package/dist/src/ui/commands/chatCommand.js.map +1 -1
  100. package/dist/src/ui/commands/clearCommand.js +1 -1
  101. package/dist/src/ui/commands/clearCommand.js.map +1 -1
  102. package/dist/src/ui/commands/extensionsCommand.js +17 -10
  103. package/dist/src/ui/commands/extensionsCommand.js.map +1 -1
  104. package/dist/src/ui/commands/ideCommand.js +1 -1
  105. package/dist/src/ui/commands/ideCommand.js.map +1 -1
  106. package/dist/src/ui/commands/mcpCommand.js +87 -262
  107. package/dist/src/ui/commands/mcpCommand.js.map +1 -1
  108. package/dist/src/ui/commands/modelCommand.d.ts +7 -0
  109. package/dist/src/ui/commands/modelCommand.js +16 -0
  110. package/dist/src/ui/commands/modelCommand.js.map +1 -0
  111. package/dist/src/ui/commands/modelCommand.test.d.ts +6 -0
  112. package/dist/src/ui/commands/modelCommand.test.js +30 -0
  113. package/dist/src/ui/commands/modelCommand.test.js.map +1 -0
  114. package/dist/src/ui/commands/permissionsCommand.d.ts +7 -0
  115. package/dist/src/ui/commands/permissionsCommand.js +16 -0
  116. package/dist/src/ui/commands/permissionsCommand.js.map +1 -0
  117. package/dist/src/ui/commands/permissionsCommand.test.d.ts +6 -0
  118. package/dist/src/ui/commands/permissionsCommand.test.js +30 -0
  119. package/dist/src/ui/commands/permissionsCommand.test.js.map +1 -0
  120. package/dist/src/ui/commands/toolsCommand.js +10 -24
  121. package/dist/src/ui/commands/toolsCommand.js.map +1 -1
  122. package/dist/src/ui/commands/types.d.ts +7 -6
  123. package/dist/src/ui/commands/types.js.map +1 -1
  124. package/dist/src/ui/components/AppHeader.js +2 -5
  125. package/dist/src/ui/components/AppHeader.js.map +1 -1
  126. package/dist/src/ui/components/AsciiArt.d.ts +3 -3
  127. package/dist/src/ui/components/AsciiArt.js +3 -3
  128. package/dist/src/ui/components/Composer.js +12 -32
  129. package/dist/src/ui/components/Composer.js.map +1 -1
  130. package/dist/src/ui/components/Composer.test.js +18 -21
  131. package/dist/src/ui/components/Composer.test.js.map +1 -1
  132. package/dist/src/ui/components/ConsentPrompt.d.ts +13 -0
  133. package/dist/src/ui/components/ConsentPrompt.js +19 -0
  134. package/dist/src/ui/components/ConsentPrompt.js.map +1 -0
  135. package/dist/src/ui/components/ConsentPrompt.test.d.ts +6 -0
  136. package/dist/src/ui/components/ConsentPrompt.test.js +67 -0
  137. package/dist/src/ui/components/ConsentPrompt.test.js.map +1 -0
  138. package/dist/src/ui/components/ContextUsageDisplay.d.ts +2 -1
  139. package/dist/src/ui/components/ContextUsageDisplay.js +4 -2
  140. package/dist/src/ui/components/ContextUsageDisplay.js.map +1 -1
  141. package/dist/src/ui/components/DialogManager.d.ts +7 -1
  142. package/dist/src/ui/components/DialogManager.js +18 -9
  143. package/dist/src/ui/components/DialogManager.js.map +1 -1
  144. package/dist/src/ui/components/EditorSettingsDialog.js +11 -2
  145. package/dist/src/ui/components/EditorSettingsDialog.js.map +1 -1
  146. package/dist/src/ui/components/ExitWarning.d.ts +7 -0
  147. package/dist/src/ui/components/ExitWarning.js +9 -0
  148. package/dist/src/ui/components/ExitWarning.js.map +1 -0
  149. package/dist/src/ui/components/FolderTrustDialog.js +3 -0
  150. package/dist/src/ui/components/FolderTrustDialog.js.map +1 -1
  151. package/dist/src/ui/components/FolderTrustDialog.test.js +2 -2
  152. package/dist/src/ui/components/FolderTrustDialog.test.js.map +1 -1
  153. package/dist/src/ui/components/Footer.d.ts +1 -19
  154. package/dist/src/ui/components/Footer.js +32 -15
  155. package/dist/src/ui/components/Footer.js.map +1 -1
  156. package/dist/src/ui/components/HistoryItemDisplay.d.ts +2 -1
  157. package/dist/src/ui/components/HistoryItemDisplay.js +10 -1
  158. package/dist/src/ui/components/HistoryItemDisplay.js.map +1 -1
  159. package/dist/src/ui/components/HistoryItemDisplay.test.js +90 -9
  160. package/dist/src/ui/components/HistoryItemDisplay.test.js.map +1 -1
  161. package/dist/src/ui/components/IdeTrustChangeDialog.d.ts +11 -0
  162. package/dist/src/ui/components/IdeTrustChangeDialog.js +32 -0
  163. package/dist/src/ui/components/IdeTrustChangeDialog.js.map +1 -0
  164. package/dist/src/ui/components/IdeTrustChangeDialog.test.d.ts +6 -0
  165. package/dist/src/ui/components/IdeTrustChangeDialog.test.js +57 -0
  166. package/dist/src/ui/components/IdeTrustChangeDialog.test.js.map +1 -0
  167. package/dist/src/ui/components/InputPrompt.d.ts +7 -1
  168. package/dist/src/ui/components/InputPrompt.js +59 -22
  169. package/dist/src/ui/components/InputPrompt.js.map +1 -1
  170. package/dist/src/ui/components/LoadingIndicator.js +1 -1
  171. package/dist/src/ui/components/LoadingIndicator.js.map +1 -1
  172. package/dist/src/ui/components/LoadingIndicator.test.js +4 -0
  173. package/dist/src/ui/components/LoadingIndicator.test.js.map +1 -1
  174. package/dist/src/ui/components/LoopDetectionConfirmation.js +2 -0
  175. package/dist/src/ui/components/LoopDetectionConfirmation.js.map +1 -1
  176. package/dist/src/ui/components/MainContent.js +7 -2
  177. package/dist/src/ui/components/MainContent.js.map +1 -1
  178. package/dist/src/ui/components/ModelDialog.d.ts +11 -0
  179. package/dist/src/ui/components/ModelDialog.js +57 -0
  180. package/dist/src/ui/components/ModelDialog.js.map +1 -0
  181. package/dist/src/ui/components/ModelDialog.test.d.ts +6 -0
  182. package/dist/src/ui/components/ModelDialog.test.js +153 -0
  183. package/dist/src/ui/components/ModelDialog.test.js.map +1 -0
  184. package/dist/src/ui/components/PermissionsModifyTrustDialog.d.ts +13 -0
  185. package/dist/src/ui/components/PermissionsModifyTrustDialog.js +48 -0
  186. package/dist/src/ui/components/PermissionsModifyTrustDialog.js.map +1 -0
  187. package/dist/src/ui/components/PermissionsModifyTrustDialog.test.d.ts +6 -0
  188. package/dist/src/ui/components/PermissionsModifyTrustDialog.test.js +154 -0
  189. package/dist/src/ui/components/PermissionsModifyTrustDialog.test.js.map +1 -0
  190. package/dist/src/ui/components/ProQuotaDialog.js +2 -0
  191. package/dist/src/ui/components/ProQuotaDialog.js.map +1 -1
  192. package/dist/src/ui/components/ProQuotaDialog.test.js +2 -0
  193. package/dist/src/ui/components/ProQuotaDialog.test.js.map +1 -1
  194. package/dist/src/ui/components/QueuedMessageDisplay.d.ts +9 -0
  195. package/dist/src/ui/components/QueuedMessageDisplay.js +20 -0
  196. package/dist/src/ui/components/QueuedMessageDisplay.js.map +1 -0
  197. package/dist/src/ui/components/QueuedMessageDisplay.test.d.ts +6 -0
  198. package/dist/src/ui/components/QueuedMessageDisplay.test.js +56 -0
  199. package/dist/src/ui/components/QueuedMessageDisplay.test.js.map +1 -0
  200. package/dist/src/ui/components/RatingWidget.js +5 -1
  201. package/dist/src/ui/components/RatingWidget.js.map +1 -1
  202. package/dist/src/ui/components/SettingsDialog.js +5 -2
  203. package/dist/src/ui/components/SettingsDialog.js.map +1 -1
  204. package/dist/src/ui/components/SettingsDialog.test.js +47 -13
  205. package/dist/src/ui/components/SettingsDialog.test.js.map +1 -1
  206. package/dist/src/ui/components/ShellConfirmationDialog.js +3 -0
  207. package/dist/src/ui/components/ShellConfirmationDialog.js.map +1 -1
  208. package/dist/src/ui/components/ThemeDialog.js +2 -0
  209. package/dist/src/ui/components/ThemeDialog.js.map +1 -1
  210. package/dist/src/ui/components/WorkspaceMigrationDialog.js +5 -3
  211. package/dist/src/ui/components/WorkspaceMigrationDialog.js.map +1 -1
  212. package/dist/src/ui/components/messages/ToolConfirmationMessage.js +14 -0
  213. package/dist/src/ui/components/messages/ToolConfirmationMessage.js.map +1 -1
  214. package/dist/src/ui/components/messages/ToolGroupMessage.d.ts +1 -1
  215. package/dist/src/ui/components/messages/ToolGroupMessage.js +5 -5
  216. package/dist/src/ui/components/messages/ToolGroupMessage.js.map +1 -1
  217. package/dist/src/ui/components/messages/ToolMessage.d.ts +1 -1
  218. package/dist/src/ui/components/messages/ToolMessage.js +27 -4
  219. package/dist/src/ui/components/messages/ToolMessage.js.map +1 -1
  220. package/dist/src/ui/components/messages/UserMessage.js +1 -2
  221. package/dist/src/ui/components/messages/UserMessage.js.map +1 -1
  222. package/dist/src/ui/components/messages/WarningMessage.d.ts +11 -0
  223. package/dist/src/ui/components/messages/WarningMessage.js +10 -0
  224. package/dist/src/ui/components/messages/WarningMessage.js.map +1 -0
  225. package/dist/src/ui/components/shared/BaseSelectionList.d.ts +38 -0
  226. package/dist/src/ui/components/shared/BaseSelectionList.js +72 -0
  227. package/dist/src/ui/components/shared/BaseSelectionList.js.map +1 -0
  228. package/dist/src/ui/components/shared/BaseSelectionList.test.d.ts +6 -0
  229. package/dist/src/ui/components/shared/BaseSelectionList.test.js +376 -0
  230. package/dist/src/ui/components/shared/BaseSelectionList.test.js.map +1 -0
  231. package/dist/src/ui/components/shared/DescriptiveRadioButtonSelect.d.ts +35 -0
  232. package/dist/src/ui/components/shared/DescriptiveRadioButtonSelect.js +13 -0
  233. package/dist/src/ui/components/shared/DescriptiveRadioButtonSelect.js.map +1 -0
  234. package/dist/src/ui/components/shared/DescriptiveRadioButtonSelect.test.d.ts +6 -0
  235. package/dist/src/ui/components/shared/DescriptiveRadioButtonSelect.test.js +79 -0
  236. package/dist/src/ui/components/shared/DescriptiveRadioButtonSelect.test.js.map +1 -0
  237. package/dist/src/ui/components/shared/RadioButtonSelect.d.ts +2 -3
  238. package/dist/src/ui/components/shared/RadioButtonSelect.js +9 -104
  239. package/dist/src/ui/components/shared/RadioButtonSelect.js.map +1 -1
  240. package/dist/src/ui/components/shared/RadioButtonSelect.test.js +115 -92
  241. package/dist/src/ui/components/shared/RadioButtonSelect.test.js.map +1 -1
  242. package/dist/src/ui/components/shared/ScopeSelector.js +4 -1
  243. package/dist/src/ui/components/shared/ScopeSelector.js.map +1 -1
  244. package/dist/src/ui/components/shared/text-buffer.d.ts +6 -0
  245. package/dist/src/ui/components/shared/text-buffer.js +71 -4
  246. package/dist/src/ui/components/shared/text-buffer.js.map +1 -1
  247. package/dist/src/ui/components/views/ExtensionsList.test.js +1 -1
  248. package/dist/src/ui/components/views/ExtensionsList.test.js.map +1 -1
  249. package/dist/src/ui/components/views/McpStatus.d.ts +27 -0
  250. package/dist/src/ui/components/views/McpStatus.js +77 -0
  251. package/dist/src/ui/components/views/McpStatus.js.map +1 -0
  252. package/dist/src/ui/components/views/McpStatus.test.d.ts +6 -0
  253. package/dist/src/ui/components/views/McpStatus.test.js +117 -0
  254. package/dist/src/ui/components/views/McpStatus.test.js.map +1 -0
  255. package/dist/src/ui/components/views/ToolsList.d.ts +14 -0
  256. package/dist/src/ui/components/views/ToolsList.js +7 -0
  257. package/dist/src/ui/components/views/ToolsList.js.map +1 -0
  258. package/dist/src/ui/components/views/ToolsList.test.d.ts +6 -0
  259. package/dist/src/ui/components/views/ToolsList.test.js +45 -0
  260. package/dist/src/ui/components/views/ToolsList.test.js.map +1 -0
  261. package/dist/src/ui/contexts/KeypressContext.js +3 -0
  262. package/dist/src/ui/contexts/KeypressContext.js.map +1 -1
  263. package/dist/src/ui/contexts/SessionContext.d.ts +6 -0
  264. package/dist/src/ui/contexts/SessionContext.js +107 -5
  265. package/dist/src/ui/contexts/SessionContext.js.map +1 -1
  266. package/dist/src/ui/contexts/ShellFocusContext.d.ts +7 -0
  267. package/dist/src/ui/contexts/ShellFocusContext.js +9 -0
  268. package/dist/src/ui/contexts/ShellFocusContext.js.map +1 -0
  269. package/dist/src/ui/contexts/UIActionsContext.d.ts +2 -0
  270. package/dist/src/ui/contexts/UIActionsContext.js.map +1 -1
  271. package/dist/src/ui/contexts/UIStateContext.d.ts +11 -5
  272. package/dist/src/ui/contexts/UIStateContext.js +2 -0
  273. package/dist/src/ui/contexts/UIStateContext.js.map +1 -1
  274. package/dist/src/ui/hooks/slashCommandProcessor.d.ts +7 -5
  275. package/dist/src/ui/hooks/slashCommandProcessor.js +10 -2
  276. package/dist/src/ui/hooks/slashCommandProcessor.js.map +1 -1
  277. package/dist/src/ui/hooks/useExtensionUpdates.d.ts +10 -1
  278. package/dist/src/ui/hooks/useExtensionUpdates.js +93 -41
  279. package/dist/src/ui/hooks/useExtensionUpdates.js.map +1 -1
  280. package/dist/src/ui/hooks/useExtensionUpdates.test.js +160 -79
  281. package/dist/src/ui/hooks/useExtensionUpdates.test.js.map +1 -1
  282. package/dist/src/ui/hooks/useFocus.js +10 -0
  283. package/dist/src/ui/hooks/useFocus.js.map +1 -1
  284. package/dist/src/ui/hooks/useFolderTrust.d.ts +1 -1
  285. package/dist/src/ui/hooks/useFolderTrust.js +2 -7
  286. package/dist/src/ui/hooks/useFolderTrust.js.map +1 -1
  287. package/dist/src/ui/hooks/useGeminiStream.js +7 -6
  288. package/dist/src/ui/hooks/useGeminiStream.js.map +1 -1
  289. package/dist/src/ui/hooks/useGitBranchName.test.js.map +1 -1
  290. package/dist/src/ui/hooks/useIdeTrustListener.d.ts +4 -2
  291. package/dist/src/ui/hooks/useIdeTrustListener.js +40 -14
  292. package/dist/src/ui/hooks/useIdeTrustListener.js.map +1 -1
  293. package/dist/src/ui/hooks/useIdeTrustListener.test.d.ts +6 -0
  294. package/dist/src/ui/hooks/useIdeTrustListener.test.js +183 -0
  295. package/dist/src/ui/hooks/useIdeTrustListener.test.js.map +1 -0
  296. package/dist/src/ui/hooks/useMemoryMonitor.d.ts +13 -0
  297. package/dist/src/ui/hooks/useMemoryMonitor.js +28 -0
  298. package/dist/src/ui/hooks/useMemoryMonitor.js.map +1 -0
  299. package/dist/src/ui/hooks/useMemoryMonitor.test.d.ts +6 -0
  300. package/dist/src/ui/hooks/useMemoryMonitor.test.js +57 -0
  301. package/dist/src/ui/hooks/useMemoryMonitor.test.js.map +1 -0
  302. package/dist/src/ui/hooks/useModelCommand.d.ts +12 -0
  303. package/dist/src/ui/hooks/useModelCommand.js +21 -0
  304. package/dist/src/ui/hooks/useModelCommand.js.map +1 -0
  305. package/dist/src/ui/hooks/useModelCommand.test.d.ts +6 -0
  306. package/dist/src/ui/hooks/useModelCommand.test.js +35 -0
  307. package/dist/src/ui/hooks/useModelCommand.test.js.map +1 -0
  308. package/dist/src/ui/hooks/usePermissionsModifyTrust.d.ts +17 -0
  309. package/dist/src/ui/hooks/usePermissionsModifyTrust.js +78 -0
  310. package/dist/src/ui/hooks/usePermissionsModifyTrust.js.map +1 -0
  311. package/dist/src/ui/hooks/usePermissionsModifyTrust.test.d.ts +6 -0
  312. package/dist/src/ui/hooks/usePermissionsModifyTrust.test.js +182 -0
  313. package/dist/src/ui/hooks/usePermissionsModifyTrust.test.js.map +1 -0
  314. package/dist/src/ui/hooks/useSelectionList.d.ts +34 -0
  315. package/dist/src/ui/hooks/useSelectionList.js +245 -0
  316. package/dist/src/ui/hooks/useSelectionList.js.map +1 -0
  317. package/dist/src/ui/hooks/useSelectionList.test.d.ts +6 -0
  318. package/dist/src/ui/hooks/useSelectionList.test.js +701 -0
  319. package/dist/src/ui/hooks/useSelectionList.test.js.map +1 -0
  320. package/dist/src/ui/hooks/useSlashCompletion.js +7 -2
  321. package/dist/src/ui/hooks/useSlashCompletion.js.map +1 -1
  322. package/dist/src/ui/hooks/useSlashCompletion.test.js +33 -0
  323. package/dist/src/ui/hooks/useSlashCompletion.test.js.map +1 -1
  324. package/dist/src/ui/hooks/useStateAndRef.d.ts +1 -1
  325. package/dist/src/ui/hooks/useStateAndRef.js +2 -2
  326. package/dist/src/ui/hooks/useStateAndRef.js.map +1 -1
  327. package/dist/src/ui/hooks/useToolScheduler.test.js +2 -2
  328. package/dist/src/ui/hooks/useToolScheduler.test.js.map +1 -1
  329. package/dist/src/ui/layouts/DefaultAppLayout.d.ts +9 -0
  330. package/dist/src/ui/layouts/DefaultAppLayout.js +13 -0
  331. package/dist/src/ui/layouts/DefaultAppLayout.js.map +1 -0
  332. package/dist/src/ui/layouts/ScreenReaderAppLayout.d.ts +7 -0
  333. package/dist/src/ui/layouts/ScreenReaderAppLayout.js +14 -0
  334. package/dist/src/ui/layouts/ScreenReaderAppLayout.js.map +1 -0
  335. package/dist/src/ui/noninteractive/nonInteractiveUi.d.ts +12 -0
  336. package/dist/src/ui/noninteractive/nonInteractiveUi.js +28 -0
  337. package/dist/src/ui/noninteractive/nonInteractiveUi.js.map +1 -0
  338. package/dist/src/ui/privacy/CloudFreePrivacyNotice.js +2 -2
  339. package/dist/src/ui/privacy/CloudFreePrivacyNotice.js.map +1 -1
  340. package/dist/src/ui/state/extensions.d.ts +28 -1
  341. package/dist/src/ui/state/extensions.js +46 -1
  342. package/dist/src/ui/state/extensions.js.map +1 -1
  343. package/dist/src/ui/themes/theme.js +2 -2
  344. package/dist/src/ui/themes/theme.js.map +1 -1
  345. package/dist/src/ui/types.d.ts +50 -3
  346. package/dist/src/ui/types.js +3 -0
  347. package/dist/src/ui/types.js.map +1 -1
  348. package/dist/src/ui/utils/MarkdownDisplay.js +1 -2
  349. package/dist/src/ui/utils/MarkdownDisplay.js.map +1 -1
  350. package/dist/src/ui/utils/MarkdownDisplay.test.js +94 -91
  351. package/dist/src/ui/utils/MarkdownDisplay.test.js.map +1 -1
  352. package/dist/src/ui/utils/displayUtils.d.ts +1 -0
  353. package/dist/src/ui/utils/displayUtils.js +4 -1
  354. package/dist/src/ui/utils/displayUtils.js.map +1 -1
  355. package/dist/src/ui/utils/displayUtils.test.js +36 -17
  356. package/dist/src/ui/utils/displayUtils.test.js.map +1 -1
  357. package/dist/src/ui/utils/highlight.d.ts +1 -0
  358. package/dist/src/ui/utils/highlight.js +28 -0
  359. package/dist/src/ui/utils/highlight.js.map +1 -1
  360. package/dist/src/ui/utils/textUtils.d.ts +1 -0
  361. package/dist/src/ui/utils/textUtils.js +56 -0
  362. package/dist/src/ui/utils/textUtils.js.map +1 -1
  363. package/dist/src/ui/utils/textUtils.test.d.ts +6 -0
  364. package/dist/src/ui/utils/textUtils.test.js +132 -0
  365. package/dist/src/ui/utils/textUtils.test.js.map +1 -0
  366. package/dist/src/utils/deepMerge.d.ts +2 -3
  367. package/dist/src/utils/events.d.ts +2 -1
  368. package/dist/src/utils/events.js +1 -0
  369. package/dist/src/utils/events.js.map +1 -1
  370. package/dist/src/utils/math.d.ts +13 -0
  371. package/dist/src/utils/math.js +14 -0
  372. package/dist/src/utils/math.js.map +1 -0
  373. package/dist/src/utils/relaunch.d.ts +7 -0
  374. package/dist/src/utils/relaunch.js +57 -0
  375. package/dist/src/utils/relaunch.js.map +1 -0
  376. package/dist/src/utils/relaunch.test.d.ts +6 -0
  377. package/dist/src/utils/relaunch.test.js +273 -0
  378. package/dist/src/utils/relaunch.test.js.map +1 -0
  379. package/dist/src/utils/sandbox.js +24 -10
  380. package/dist/src/utils/sandbox.js.map +1 -1
  381. package/dist/src/utils/windowTitle.d.ts +12 -0
  382. package/dist/src/utils/windowTitle.js +19 -0
  383. package/dist/src/utils/windowTitle.js.map +1 -0
  384. package/dist/src/utils/windowTitle.test.d.ts +6 -0
  385. package/dist/src/utils/windowTitle.test.js +49 -0
  386. package/dist/src/utils/windowTitle.test.js.map +1 -0
  387. package/dist/src/validateNonInterActiveAuth.d.ts +2 -1
  388. package/dist/src/validateNonInterActiveAuth.js +33 -12
  389. package/dist/src/validateNonInterActiveAuth.js.map +1 -1
  390. package/dist/src/zed-integration/fileSystemService.d.ts +1 -0
  391. package/dist/src/zed-integration/fileSystemService.js +3 -0
  392. package/dist/src/zed-integration/fileSystemService.js.map +1 -1
  393. package/dist/src/zed-integration/schema.d.ts +128 -128
  394. package/dist/src/zed-integration/zedIntegration.d.ts +8 -1
  395. package/dist/src/zed-integration/zedIntegration.js +17 -3
  396. package/dist/src/zed-integration/zedIntegration.js.map +1 -1
  397. package/dist/tsconfig.tsbuildinfo +1 -1
  398. package/package.json +12 -8
  399. package/dist/src/commands/extensions/examples/mcp-server/example.js +0 -46
  400. package/dist/src/commands/extensions/examples/mcp-server/example.js.map +0 -1
  401. /package/dist/src/{commands/extensions/examples/mcp-server/example.d.ts → config/policy-engine.integration.test.d.ts} +0 -0
@@ -4,24 +4,24 @@ import { jsx as _jsx } from "react/jsx-runtime";
4
4
  * Copyright 2025 Google LLC
5
5
  * SPDX-License-Identifier: Apache-2.0
6
6
  */
7
+ import React from 'react';
7
8
  import { render } from 'ink';
8
9
  import { AppContainer } from './ui/AppContainer.js';
9
10
  import { loadCliConfig, parseArguments } from './config/config.js';
11
+ import * as cliConfig from './config/config.js';
10
12
  import { readStdin } from './utils/readStdin.js';
11
13
  import { basename } from 'node:path';
12
14
  import v8 from 'node:v8';
13
15
  import os from 'node:os';
14
16
  import dns from 'node:dns';
15
- import { spawn } from 'node:child_process';
16
17
  import { start_sandbox } from './utils/sandbox.js';
17
- import { RELAUNCH_EXIT_CODE } from './utils/processUtils.js';
18
18
  import { loadSettings, migrateDeprecatedSettings, SettingScope, } from './config/settings.js';
19
19
  import { themeManager } from './ui/themes/theme-manager.js';
20
20
  import { getStartupWarnings } from './utils/startupWarnings.js';
21
21
  import { getUserStartupWarnings } from './utils/userStartupWarnings.js';
22
22
  import { ConsolePatcher } from './ui/utils/ConsolePatcher.js';
23
23
  import { runNonInteractive } from './nonInteractiveCli.js';
24
- import { loadExtensions } from './config/extension.js';
24
+ import { ExtensionStorage, loadExtensions } from './config/extension.js';
25
25
  import { cleanupCheckpoints, registerCleanup, runExitCleanup, } from './utils/cleanup.js';
26
26
  import { getCliVersion } from './utils/version.js';
27
27
  import { sessionId, logUserPrompt, AuthType, getOauthClient, } from '@google/gemini-cli-core';
@@ -34,11 +34,13 @@ import { detectAndEnableKittyProtocol } from './ui/utils/kittyProtocolDetector.j
34
34
  import { checkForUpdates } from './ui/utils/updateCheck.js';
35
35
  import { handleAutoUpdate } from './utils/handleAutoUpdate.js';
36
36
  import { appEvents, AppEvent } from './utils/events.js';
37
+ import { computeWindowTitle } from './utils/windowTitle.js';
37
38
  import { SettingsContext } from './ui/contexts/SettingsContext.js';
38
39
  import { SessionStatsProvider } from './ui/contexts/SessionContext.js';
39
40
  import { VimModeProvider } from './ui/contexts/VimModeContext.js';
40
41
  import { KeypressProvider } from './ui/contexts/KeypressContext.js';
41
42
  import { useKittyKeyboardProtocol } from './ui/hooks/useKittyKeyboardProtocol.js';
43
+ import { relaunchAppInChildProcess, relaunchOnExitCode, } from './utils/relaunch.js';
42
44
  export function validateDnsResolutionOrder(order) {
43
45
  const defaultValue = 'ipv4first';
44
46
  if (order === undefined) {
@@ -51,66 +53,29 @@ export function validateDnsResolutionOrder(order) {
51
53
  console.warn(`Invalid value for dnsResolutionOrder in settings: "${order}". Using default "${defaultValue}".`);
52
54
  return defaultValue;
53
55
  }
54
- function getNodeMemoryArgs(config) {
56
+ function getNodeMemoryArgs(isDebugMode) {
55
57
  const totalMemoryMB = os.totalmem() / (1024 * 1024);
56
58
  const heapStats = v8.getHeapStatistics();
57
59
  const currentMaxOldSpaceSizeMb = Math.floor(heapStats.heap_size_limit / 1024 / 1024);
58
60
  // Set target to 50% of total memory
59
61
  const targetMaxOldSpaceSizeInMB = Math.floor(totalMemoryMB * 0.5);
60
- if (config.getDebugMode()) {
62
+ if (isDebugMode) {
61
63
  console.debug(`Current heap size ${currentMaxOldSpaceSizeMb.toFixed(2)} MB`);
62
64
  }
63
- if (process.env['GEMINI_CLI_NO_RELAUNCH']) {
65
+ if (process.env['CELL_CLI_NO_RELAUNCH']) {
64
66
  return [];
65
67
  }
66
68
  if (targetMaxOldSpaceSizeInMB > currentMaxOldSpaceSizeMb) {
67
- if (config.getDebugMode()) {
69
+ if (isDebugMode) {
68
70
  console.debug(`Need to relaunch with more memory: ${targetMaxOldSpaceSizeInMB.toFixed(2)} MB`);
69
71
  }
70
72
  return [`--max-old-space-size=${targetMaxOldSpaceSizeInMB}`];
71
73
  }
72
74
  return [];
73
75
  }
74
- async function relaunchOnExitCode(runner) {
75
- while (true) {
76
- try {
77
- const exitCode = await runner();
78
- if (exitCode !== RELAUNCH_EXIT_CODE) {
79
- process.exit(exitCode);
80
- }
81
- }
82
- catch (error) {
83
- process.stdin.resume();
84
- console.error('Fatal error: Failed to relaunch the CLI process.', error);
85
- process.exit(1);
86
- }
87
- }
88
- }
89
- async function relaunchAppInChildProcess(additionalArgs) {
90
- if (process.env['GEMINI_CLI_NO_RELAUNCH']) {
91
- return;
92
- }
93
- const runner = () => {
94
- const nodeArgs = [...additionalArgs, ...process.argv.slice(1)];
95
- const newEnv = { ...process.env, GEMINI_CLI_NO_RELAUNCH: 'true' };
96
- // The parent process should not be reading from stdin while the child is running.
97
- process.stdin.pause();
98
- const child = spawn(process.execPath, nodeArgs, {
99
- stdio: 'inherit',
100
- env: newEnv,
101
- });
102
- return new Promise((resolve, reject) => {
103
- child.on('error', reject);
104
- child.on('close', (code) => {
105
- // Resume stdin before the parent process exits.
106
- process.stdin.resume();
107
- resolve(code ?? 1);
108
- });
109
- });
110
- };
111
- await relaunchOnExitCode(runner);
112
- }
113
76
  import { runZedIntegration } from './zed-integration/zedIntegration.js';
77
+ import { loadSandboxConfig } from './config/sandboxConfig.js';
78
+ import { ExtensionEnablementManager } from './config/extensions/extensionEnablement.js';
114
79
  export function setupUnhandledRejectionHandler() {
115
80
  let unhandledRejectionOccurred = false;
116
81
  process.on('unhandledRejection', (reason, _promise) => {
@@ -138,7 +103,7 @@ export async function startInteractiveUI(config, settings, startupWarnings, work
138
103
  const kittyProtocolStatus = useKittyKeyboardProtocol();
139
104
  return (_jsx(SettingsContext.Provider, { value: settings, children: _jsx(KeypressProvider, { kittyProtocolEnabled: kittyProtocolStatus.enabled, config: config, debugKeystrokeLogging: settings.merged.general?.debugKeystrokeLogging, children: _jsx(SessionStatsProvider, { children: _jsx(VimModeProvider, { settings: settings, children: _jsx(AppContainer, { config: config, settings: settings, startupWarnings: startupWarnings, version: version, initializationResult: initializationResult }) }) }) }) }));
140
105
  };
141
- const instance = render(_jsx(AppWrapper, {}), {
106
+ const instance = render(process.env['DEBUG'] ? (_jsx(React.StrictMode, { children: _jsx(AppWrapper, {}) })) : (_jsx(AppWrapper, {})), {
142
107
  exitOnCtrlC: false,
143
108
  isScreenReaderEnabled: config.getScreenReader(),
144
109
  });
@@ -160,77 +125,25 @@ export async function main() {
160
125
  migrateDeprecatedSettings(settings);
161
126
  await cleanupCheckpoints();
162
127
  const argv = await parseArguments(settings.merged);
163
- // If running in ACP mode, redirect stdout to stderr early.
164
- if (argv.experimentalAcp) {
165
- console.log = console.error;
166
- console.info = console.error;
167
- console.debug = console.error;
168
- }
169
- const extensions = loadExtensions();
170
- const config = await loadCliConfig(settings.merged, extensions, sessionId, argv);
171
128
  // Check for invalid input combinations early to prevent crashes
172
129
  if (argv.promptInteractive && !process.stdin.isTTY) {
173
130
  console.error('Error: The --prompt-interactive flag cannot be used when input is piped from stdin.');
174
131
  process.exit(1);
175
132
  }
176
- const wasRaw = process.stdin.isRaw;
177
- let kittyProtocolDetectionComplete;
178
- if (config.isInteractive() && !wasRaw && process.stdin.isTTY) {
179
- // Set this as early as possible to avoid spurious characters from
180
- // input showing up in the output.
181
- process.stdin.setRawMode(true);
182
- // This cleanup isn't strictly needed but may help in certain situations.
183
- process.on('SIGTERM', () => {
184
- process.stdin.setRawMode(wasRaw);
185
- });
186
- process.on('SIGINT', () => {
187
- process.stdin.setRawMode(wasRaw);
188
- });
189
- // Detect and enable Kitty keyboard protocol once at startup.
190
- kittyProtocolDetectionComplete = detectAndEnableKittyProtocol();
191
- }
133
+ const isDebugMode = cliConfig.isDebugMode(argv);
192
134
  const consolePatcher = new ConsolePatcher({
193
135
  stderr: true,
194
- debugMode: config.getDebugMode(),
136
+ debugMode: isDebugMode,
195
137
  });
196
138
  consolePatcher.patch();
197
139
  registerCleanup(consolePatcher.cleanup);
198
140
  dns.setDefaultResultOrder(validateDnsResolutionOrder(settings.merged.advanced?.dnsResolutionOrder));
199
- if (config.getListExtensions()) {
200
- console.log('Installed extensions:');
201
- for (const extension of extensions) {
202
- console.log(`- ${extension.config.name}`);
203
- }
204
- process.exit(0);
205
- }
206
141
  // Set a default auth type if one isn't set.
207
142
  if (!settings.merged.security?.auth?.selectedType) {
208
- settings.setValue(SettingScope.User, 'security.auth.selectedType', AuthType.KEYCLOAK);
209
- }
210
- setMaxSizedBoxDebugging(config.getDebugMode());
211
- //const mcpServers = config.getMcpServers();
212
- //const mcpServersCount = mcpServers ? Object.keys(mcpServers).length : 0;
213
- let spinnerInstance;
214
- /*if (config.isInteractive() && mcpServersCount > 0) {
215
- spinnerInstance = render(
216
- <InitializingComponent initialTotal={mcpServersCount} />,
217
- );
218
- }*/ //
219
- //await config.initialize();
220
- if (!config.getExperimentalZedIntegration()) {
221
- try {
222
- startProxy(sessionId);
223
- }
224
- catch (err) {
225
- console.error('Error starting api-proxy:', err);
143
+ if (process.env['CLOUD_SHELL'] === 'true') {
144
+ settings.setValue(SettingScope.User, 'selectedAuthType', AuthType.CLOUD_SHELL);
226
145
  }
227
146
  }
228
- if (spinnerInstance) {
229
- // Small UX detail to show the completion message for a bit before unmounting.
230
- await new Promise((f) => setTimeout(f, 100));
231
- spinnerInstance.clear();
232
- spinnerInstance.unmount();
233
- }
234
147
  // Load custom themes from settings
235
148
  themeManager.loadCustomThemes(settings.merged.ui?.customThemes);
236
149
  if (settings.merged.ui?.theme) {
@@ -240,14 +153,19 @@ export async function main() {
240
153
  console.warn(`Warning: Theme "${settings.merged.ui?.theme}" not found.`);
241
154
  }
242
155
  }
243
- const initializationResult = await initializeApp(config, settings);
244
156
  // hop into sandbox if we are outside and sandboxing is enabled
245
157
  if (!process.env['SANDBOX']) {
246
158
  const memoryArgs = settings.merged.advanced?.autoConfigureMemory
247
- ? getNodeMemoryArgs(config)
159
+ ? getNodeMemoryArgs(isDebugMode)
248
160
  : [];
249
- const sandboxConfig = config.getSandbox();
161
+ const sandboxConfig = await loadSandboxConfig(settings.merged, argv);
162
+ // We intentially omit the list of extensions here because extensions
163
+ // should not impact auth or setting up the sandbox.
164
+ // TODO(jacobr): refactor loadCliConfig so there is a minimal version
165
+ // that only initializes enough config to enable refreshAuth or find
166
+ // another way to decouple refreshAuth from requiring a config.
250
167
  if (sandboxConfig) {
168
+ const partialConfig = await loadCliConfig(settings.merged, [], new ExtensionEnablementManager(ExtensionStorage.getUserExtensionsDir()), sessionId, argv);
251
169
  if (settings.merged.security?.auth?.selectedType &&
252
170
  !settings.merged.security?.auth?.useExternal) {
253
171
  // Validate authentication here because the sandbox will interfere with the Oauth2 web redirect.
@@ -256,7 +174,7 @@ export async function main() {
256
174
  if (err) {
257
175
  throw new Error(err);
258
176
  }
259
- await config.refreshAuth(settings.merged.security.auth.selectedType);
177
+ await partialConfig.refreshAuth(settings.merged.security.auth.selectedType);
260
178
  }
261
179
  catch (err) {
262
180
  console.error('Error authenticating:', err);
@@ -286,72 +204,111 @@ export async function main() {
286
204
  return finalArgs;
287
205
  };
288
206
  const sandboxArgs = injectStdinIntoArgs(process.argv, stdinData);
289
- await relaunchOnExitCode(() => start_sandbox(sandboxConfig, memoryArgs, config, sandboxArgs));
207
+ await relaunchOnExitCode(() => start_sandbox(sandboxConfig, memoryArgs, partialConfig, sandboxArgs));
290
208
  process.exit(0);
291
209
  }
292
210
  else {
293
211
  // Relaunch app so we always have a child process that can be internally
294
212
  // restarted if needed.
295
- await relaunchAppInChildProcess(memoryArgs);
213
+ await relaunchAppInChildProcess(memoryArgs, []);
296
214
  }
297
215
  }
298
- if (settings.merged.security?.auth?.selectedType ===
299
- AuthType.LOGIN_WITH_GOOGLE &&
300
- config.isBrowserLaunchSuppressed()) {
301
- // Do oauth before app renders to make copying the link possible.
302
- await getOauthClient(settings.merged.security.auth.selectedType, config);
303
- }
304
- if (config.getExperimentalZedIntegration()) {
305
- return runZedIntegration(config, settings, extensions, argv);
306
- }
307
- let input = config.getQuestion();
308
- const startupWarnings = [
309
- ...(await getStartupWarnings()),
310
- ...(await getUserStartupWarnings()),
311
- ];
312
- // Render UI, passing necessary config values. Check that there is no command line question.
313
- if (config.isInteractive()) {
314
- // Need kitty detection to be complete before we can start the interactive UI.
315
- await kittyProtocolDetectionComplete;
316
- await startInteractiveUI(config, settings, startupWarnings, process.cwd(), initializationResult);
317
- return;
318
- }
319
- await config.initialize();
320
- // If not a TTY, read from stdin
321
- // This is for cases where the user pipes input directly into the command
322
- if (!process.stdin.isTTY) {
323
- const stdinData = await readStdin();
324
- if (stdinData) {
325
- input = `${stdinData}\n\n${input}`;
216
+ // We are now past the logic handling potentially launching a child process
217
+ // to run Gemini CLI. It is now safe to perform expensive initialization that
218
+ // may have side effects.
219
+ {
220
+ const extensionEnablementManager = new ExtensionEnablementManager(ExtensionStorage.getUserExtensionsDir(), argv.extensions);
221
+ const extensions = loadExtensions(extensionEnablementManager);
222
+ const config = await loadCliConfig(settings.merged, extensions, extensionEnablementManager, sessionId, argv);
223
+ if (config.getListExtensions()) {
224
+ console.log('Installed extensions:');
225
+ for (const extension of extensions) {
226
+ console.log(`- ${extension.config.name}`);
227
+ }
228
+ process.exit(0);
326
229
  }
230
+ const wasRaw = process.stdin.isRaw;
231
+ let kittyProtocolDetectionComplete;
232
+ if (config.isInteractive() && !wasRaw && process.stdin.isTTY) {
233
+ // Set this as early as possible to avoid spurious characters from
234
+ // input showing up in the output.
235
+ process.stdin.setRawMode(true);
236
+ // This cleanup isn't strictly needed but may help in certain situations.
237
+ process.on('SIGTERM', () => {
238
+ process.stdin.setRawMode(wasRaw);
239
+ });
240
+ process.on('SIGINT', () => {
241
+ process.stdin.setRawMode(wasRaw);
242
+ });
243
+ // Detect and enable Kitty keyboard protocol once at startup.
244
+ kittyProtocolDetectionComplete = detectAndEnableKittyProtocol();
245
+ }
246
+ setMaxSizedBoxDebugging(isDebugMode);
247
+ if (!config.getExperimentalZedIntegration()) {
248
+ try {
249
+ startProxy(sessionId);
250
+ }
251
+ catch (err) {
252
+ console.error('Error starting api-proxy:', err);
253
+ }
254
+ }
255
+ const initializationResult = await initializeApp(config, settings);
256
+ if (settings.merged.security?.auth?.selectedType ===
257
+ AuthType.LOGIN_WITH_GOOGLE &&
258
+ config.isBrowserLaunchSuppressed()) {
259
+ // Do oauth before app renders to make copying the link possible.
260
+ await getOauthClient(settings.merged.security.auth.selectedType, config);
261
+ }
262
+ if (config.getExperimentalZedIntegration()) {
263
+ return runZedIntegration(config, settings, extensions, argv);
264
+ }
265
+ let input = config.getQuestion();
266
+ const startupWarnings = [
267
+ ...(await getStartupWarnings()),
268
+ ...(await getUserStartupWarnings()),
269
+ ];
270
+ // Render UI, passing necessary config values. Check that there is no command line question.
271
+ if (config.isInteractive()) {
272
+ // Need kitty detection to be complete before we can start the interactive UI.
273
+ await kittyProtocolDetectionComplete;
274
+ await startInteractiveUI(config, settings, startupWarnings, process.cwd(), initializationResult);
275
+ return;
276
+ }
277
+ await config.initialize();
278
+ // If not a TTY, read from stdin
279
+ // This is for cases where the user pipes input directly into the command
280
+ if (!process.stdin.isTTY) {
281
+ const stdinData = await readStdin();
282
+ if (stdinData) {
283
+ input = `${stdinData}\n\n${input}`;
284
+ }
285
+ }
286
+ if (!input) {
287
+ console.error(`No input provided via stdin. Input can be provided by piping data into gemini or using the --prompt option.`);
288
+ process.exit(1);
289
+ }
290
+ const prompt_id = Math.random().toString(16).slice(2);
291
+ logUserPrompt(config, {
292
+ 'event.name': 'user_prompt',
293
+ 'event.timestamp': new Date().toISOString(),
294
+ prompt: input,
295
+ prompt_id,
296
+ auth_type: config.getContentGeneratorConfig()?.authType,
297
+ prompt_length: input.length,
298
+ });
299
+ const nonInteractiveConfig = await validateNonInteractiveAuth(settings.merged.security?.auth?.selectedType, settings.merged.security?.auth?.useExternal, config, settings);
300
+ if (config.getDebugMode()) {
301
+ console.log('Session ID: %s', sessionId);
302
+ }
303
+ await runNonInteractive(nonInteractiveConfig, settings, input, prompt_id);
304
+ // Call cleanup before process.exit, which causes cleanup to not run
305
+ await runExitCleanup();
306
+ process.exit(0);
327
307
  }
328
- if (!input) {
329
- console.error(`No input provided via stdin. Input can be provided by piping data into gemini or using the --prompt option.`);
330
- process.exit(1);
331
- }
332
- const prompt_id = Math.random().toString(16).slice(2);
333
- logUserPrompt(config, {
334
- 'event.name': 'user_prompt',
335
- 'event.timestamp': new Date().toISOString(),
336
- prompt: input,
337
- prompt_id,
338
- auth_type: config.getContentGeneratorConfig()?.authType,
339
- prompt_length: input.length,
340
- });
341
- const nonInteractiveConfig = await validateNonInteractiveAuth(settings.merged.security?.auth?.selectedType, settings.merged.security?.auth?.useExternal, config);
342
- if (config.getDebugMode()) {
343
- console.log('Session ID: %s', sessionId);
344
- }
345
- await runNonInteractive(nonInteractiveConfig, input, prompt_id);
346
- // Call cleanup before process.exit, which causes cleanup to not run
347
- await runExitCleanup();
348
- process.exit(0);
349
308
  }
350
309
  function setWindowTitle(title, settings) {
351
310
  if (!settings.merged.ui?.hideWindowTitle) {
352
- const windowTitle = (process.env['CLI_TITLE'] || `Gemini - ${title}`).replace(
353
- // eslint-disable-next-line no-control-regex
354
- /[\x00-\x1F\x7F]/g, '');
311
+ const windowTitle = computeWindowTitle(title);
355
312
  process.stdout.write(`\x1b]2;${windowTitle}\x07`);
356
313
  process.on('exit', () => {
357
314
  process.stdout.write(`\x1b]2;\x07`);
@@ -1 +1 @@
1
- {"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../src/gemini.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../src/gemini.tsx"],"names":[],"mappings":"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"}
@@ -28,8 +28,10 @@ vi.mock('./config/config.js', () => ({
28
28
  loadCliConfig: vi.fn().mockResolvedValue({
29
29
  getSandbox: vi.fn(() => false),
30
30
  getQuestion: vi.fn(() => ''),
31
+ isInteractive: () => false,
31
32
  }),
32
33
  parseArguments: vi.fn().mockResolvedValue({}),
34
+ isDebugMode: vi.fn(() => false),
33
35
  }));
34
36
  vi.mock('read-package-up', () => ({
35
37
  readPackageUp: vi.fn().mockResolvedValue({
@@ -55,15 +57,16 @@ vi.mock('./utils/sandbox.js', () => ({
55
57
  sandbox_command: vi.fn(() => ''), // Default to no sandbox command
56
58
  start_sandbox: vi.fn(() => Promise.resolve()), // Mock as an async function that resolves
57
59
  }));
60
+ vi.mock('./utils/relaunch.js', () => ({
61
+ relaunchAppInChildProcess: vi.fn(),
62
+ }));
63
+ vi.mock('./config/sandboxConfig.js', () => ({
64
+ loadSandboxConfig: vi.fn(),
65
+ }));
58
66
  describe('gemini.tsx main function', () => {
59
67
  let originalEnvGeminiSandbox;
60
68
  let originalEnvSandbox;
61
69
  let initialUnhandledRejectionListeners = [];
62
- const processExitSpy = vi
63
- .spyOn(process, 'exit')
64
- .mockImplementation((code) => {
65
- throw new MockProcessExitError(code);
66
- });
67
70
  beforeEach(() => {
68
71
  // Store and clear sandbox-related env variables to ensure a consistent test environment
69
72
  originalEnvGeminiSandbox = process.env['GEMINI_SANDBOX'];
@@ -94,7 +97,72 @@ describe('gemini.tsx main function', () => {
94
97
  }
95
98
  vi.restoreAllMocks();
96
99
  });
100
+ it('verifies that we dont load the config before relaunchAppInChildProcess', async () => {
101
+ const processExitSpy = vi
102
+ .spyOn(process, 'exit')
103
+ .mockImplementation((code) => {
104
+ throw new MockProcessExitError(code);
105
+ });
106
+ const { relaunchAppInChildProcess } = await import('./utils/relaunch.js');
107
+ const { loadCliConfig } = await import('./config/config.js');
108
+ const { loadSettings } = await import('./config/settings.js');
109
+ const { loadSandboxConfig } = await import('./config/sandboxConfig.js');
110
+ vi.mocked(loadSandboxConfig).mockResolvedValue(undefined);
111
+ const callOrder = [];
112
+ vi.mocked(relaunchAppInChildProcess).mockImplementation(async () => {
113
+ callOrder.push('relaunch');
114
+ });
115
+ vi.mocked(loadCliConfig).mockImplementation(async () => {
116
+ callOrder.push('loadCliConfig');
117
+ return {
118
+ isInteractive: () => false,
119
+ getQuestion: () => '',
120
+ getSandbox: () => false,
121
+ getDebugMode: () => false,
122
+ getListExtensions: () => false,
123
+ getMcpServers: () => ({}),
124
+ initialize: vi.fn(),
125
+ getIdeMode: () => false,
126
+ getExperimentalZedIntegration: () => false,
127
+ getScreenReader: () => false,
128
+ getGeminiMdFileCount: () => 0,
129
+ getProjectRoot: () => '/',
130
+ };
131
+ });
132
+ vi.mocked(loadSettings).mockReturnValue({
133
+ errors: [],
134
+ merged: {
135
+ advanced: { autoConfigureMemory: true },
136
+ security: { auth: {} },
137
+ ui: {},
138
+ },
139
+ setValue: vi.fn(),
140
+ forScope: () => ({ settings: {}, originalSettings: {}, path: '' }),
141
+ });
142
+ try {
143
+ await main();
144
+ }
145
+ catch (e) {
146
+ // Mocked process exit throws an error.
147
+ if (!(e instanceof MockProcessExitError))
148
+ throw e;
149
+ }
150
+ // It is critical that we call relaunch before loadCliConfig to avoid
151
+ // loading config in the outer process when we are going to relaunch.
152
+ // By ensuring we don't load the config we also ensure we don't trigger any
153
+ // operations that might require loading the config such as such as
154
+ // initializing mcp servers.
155
+ // For the sandbox case we still have to load a partial cli config.
156
+ // we can authorize outside the sandbox.
157
+ expect(callOrder).toEqual(['relaunch', 'loadCliConfig']);
158
+ processExitSpy.mockRestore();
159
+ });
97
160
  it('should log unhandled promise rejections and open debug console on first error', async () => {
161
+ const processExitSpy = vi
162
+ .spyOn(process, 'exit')
163
+ .mockImplementation((code) => {
164
+ throw new MockProcessExitError(code);
165
+ });
98
166
  const appEventsMock = vi.mocked(appEvents);
99
167
  const rejectionError = new Error('Test unhandled rejection');
100
168
  setupUnhandledRejectionHandler();
@@ -123,8 +191,8 @@ describe('gemini.tsx main function kitty protocol', () => {
123
191
  let setRawModeSpy;
124
192
  beforeEach(() => {
125
193
  // Set no relaunch in tests since process spawning causing issues in tests
126
- originalEnvNoRelaunch = process.env['GEMINI_CLI_NO_RELAUNCH'];
127
- process.env['GEMINI_CLI_NO_RELAUNCH'] = 'true';
194
+ originalEnvNoRelaunch = process.env['CELL_CLI_NO_RELAUNCH'];
195
+ process.env['CELL_CLI_NO_RELAUNCH'] = 'true';
128
196
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
129
197
  if (!process.stdin.setRawMode) {
130
198
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
@@ -143,19 +211,19 @@ describe('gemini.tsx main function kitty protocol', () => {
143
211
  afterEach(() => {
144
212
  // Restore original env variables
145
213
  if (originalEnvNoRelaunch !== undefined) {
146
- process.env['GEMINI_CLI_NO_RELAUNCH'] = originalEnvNoRelaunch;
214
+ process.env['CELL_CLI_NO_RELAUNCH'] = originalEnvNoRelaunch;
147
215
  }
148
216
  else {
149
- delete process.env['GEMINI_CLI_NO_RELAUNCH'];
217
+ delete process.env['CELL_CLI_NO_RELAUNCH'];
150
218
  }
151
219
  });
152
220
  afterEach(() => {
153
221
  // Restore original env variables
154
222
  if (originalEnvNoRelaunch !== undefined) {
155
- process.env['GEMINI_CLI_NO_RELAUNCH'] = originalEnvNoRelaunch;
223
+ process.env['CELL_CLI_NO_RELAUNCH'] = originalEnvNoRelaunch;
156
224
  }
157
225
  else {
158
- delete process.env['GEMINI_CLI_NO_RELAUNCH'];
226
+ delete process.env['CELL_CLI_NO_RELAUNCH'];
159
227
  }
160
228
  });
161
229
  it('should call setRawMode and detectAndEnableKittyProtocol when isInteractive is true', async () => {
@@ -192,6 +260,7 @@ describe('gemini.tsx main function kitty protocol', () => {
192
260
  debug: undefined,
193
261
  prompt: undefined,
194
262
  promptInteractive: undefined,
263
+ query: undefined,
195
264
  allFiles: undefined,
196
265
  showMemoryUsage: undefined,
197
266
  yolo: undefined,
@@ -214,7 +283,7 @@ describe('gemini.tsx main function kitty protocol', () => {
214
283
  useSmartEdit: undefined,
215
284
  sessionSummary: undefined,
216
285
  logout: undefined,
217
- promptWords: undefined,
286
+ useWriteTodos: undefined,
218
287
  outputFormat: undefined,
219
288
  });
220
289
  await main();