@google/gemini-cli 0.7.0-nightly.20250912.68035591 → 0.7.0-preview.0

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 (375) hide show
  1. package/dist/package.json +5 -3
  2. package/dist/src/commands/extensions/disable.d.ts +2 -3
  3. package/dist/src/commands/extensions/disable.js +20 -6
  4. package/dist/src/commands/extensions/disable.js.map +1 -1
  5. package/dist/src/commands/extensions/enable.d.ts +2 -3
  6. package/dist/src/commands/extensions/enable.js +20 -9
  7. package/dist/src/commands/extensions/enable.js.map +1 -1
  8. package/dist/src/commands/extensions/install.d.ts +1 -0
  9. package/dist/src/commands/extensions/install.js +13 -4
  10. package/dist/src/commands/extensions/install.js.map +1 -1
  11. package/dist/src/commands/extensions/install.test.js +87 -4
  12. package/dist/src/commands/extensions/install.test.js.map +1 -1
  13. package/dist/src/commands/extensions/link.js +1 -1
  14. package/dist/src/commands/extensions/link.js.map +1 -1
  15. package/dist/src/commands/extensions/new.test.js +2 -2
  16. package/dist/src/commands/extensions/new.test.js.map +1 -1
  17. package/dist/src/commands/extensions/uninstall.js +1 -1
  18. package/dist/src/commands/extensions/uninstall.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 +42 -11
  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/config/config.d.ts +2 -1
  26. package/dist/src/config/config.js +95 -69
  27. package/dist/src/config/config.js.map +1 -1
  28. package/dist/src/config/extension.d.ts +10 -26
  29. package/dist/src/config/extension.js +155 -226
  30. package/dist/src/config/extension.js.map +1 -1
  31. package/dist/src/config/extensions/extensionEnablement.d.ts +44 -0
  32. package/dist/src/config/extensions/extensionEnablement.js +161 -0
  33. package/dist/src/config/extensions/extensionEnablement.js.map +1 -0
  34. package/dist/src/config/extensions/extensionEnablement.test.d.ts +6 -0
  35. package/dist/src/config/extensions/extensionEnablement.test.js +261 -0
  36. package/dist/src/config/extensions/extensionEnablement.test.js.map +1 -0
  37. package/dist/src/config/extensions/github.d.ts +29 -0
  38. package/dist/src/config/extensions/github.js +301 -0
  39. package/dist/src/config/extensions/github.js.map +1 -0
  40. package/dist/src/config/extensions/github.test.d.ts +6 -0
  41. package/dist/src/config/extensions/github.test.js +271 -0
  42. package/dist/src/config/extensions/github.test.js.map +1 -0
  43. package/dist/src/config/extensions/update.d.ts +20 -0
  44. package/dist/src/config/extensions/update.js +94 -0
  45. package/dist/src/config/extensions/update.js.map +1 -0
  46. package/dist/src/config/extensions/update.test.d.ts +6 -0
  47. package/dist/src/config/extensions/update.test.js +327 -0
  48. package/dist/src/config/extensions/update.test.js.map +1 -0
  49. package/dist/src/config/extensions/variableSchema.d.ts +8 -0
  50. package/dist/src/config/extensions/variableSchema.js +4 -0
  51. package/dist/src/config/extensions/variableSchema.js.map +1 -1
  52. package/dist/src/config/keyBindings.d.ts +3 -1
  53. package/dist/src/config/keyBindings.js +6 -0
  54. package/dist/src/config/keyBindings.js.map +1 -1
  55. package/dist/src/config/policy-engine.integration.test.d.ts +6 -0
  56. package/dist/src/config/policy-engine.integration.test.js +270 -0
  57. package/dist/src/config/policy-engine.integration.test.js.map +1 -0
  58. package/dist/src/config/policy.d.ts +8 -0
  59. package/dist/src/config/policy.js +150 -0
  60. package/dist/src/config/policy.js.map +1 -0
  61. package/dist/src/config/policy.test.d.ts +6 -0
  62. package/dist/src/config/policy.test.js +336 -0
  63. package/dist/src/config/policy.test.js.map +1 -0
  64. package/dist/src/config/settings.d.ts +3 -0
  65. package/dist/src/config/settings.js +71 -19
  66. package/dist/src/config/settings.js.map +1 -1
  67. package/dist/src/config/settingsSchema.d.ts +36 -9
  68. package/dist/src/config/settingsSchema.js +36 -9
  69. package/dist/src/config/settingsSchema.js.map +1 -1
  70. package/dist/src/config/settingsSchema.test.js +6 -0
  71. package/dist/src/config/settingsSchema.test.js.map +1 -1
  72. package/dist/src/config/trustedFolders.d.ts +11 -2
  73. package/dist/src/config/trustedFolders.js +47 -16
  74. package/dist/src/config/trustedFolders.js.map +1 -1
  75. package/dist/src/config/trustedFolders.test.js +124 -21
  76. package/dist/src/config/trustedFolders.test.js.map +1 -1
  77. package/dist/src/gemini.js +111 -114
  78. package/dist/src/gemini.js.map +1 -1
  79. package/dist/src/gemini.test.js +97 -7
  80. package/dist/src/gemini.test.js.map +1 -1
  81. package/dist/src/generated/git-commit.d.ts +2 -2
  82. package/dist/src/generated/git-commit.js +2 -2
  83. package/dist/src/generated/git-commit.js.map +1 -1
  84. package/dist/src/nonInteractiveCli.d.ts +2 -1
  85. package/dist/src/nonInteractiveCli.js +29 -16
  86. package/dist/src/nonInteractiveCli.js.map +1 -1
  87. package/dist/src/nonInteractiveCliCommands.d.ts +17 -0
  88. package/dist/src/nonInteractiveCliCommands.js +79 -0
  89. package/dist/src/nonInteractiveCliCommands.js.map +1 -0
  90. package/dist/src/services/BuiltinCommandLoader.js +4 -0
  91. package/dist/src/services/BuiltinCommandLoader.js.map +1 -1
  92. package/dist/src/services/BuiltinCommandLoader.test.js +50 -1
  93. package/dist/src/services/BuiltinCommandLoader.test.js.map +1 -1
  94. package/dist/src/services/McpPromptLoader.js +43 -8
  95. package/dist/src/services/McpPromptLoader.js.map +1 -1
  96. package/dist/src/services/McpPromptLoader.test.js +228 -1
  97. package/dist/src/services/McpPromptLoader.test.js.map +1 -1
  98. package/dist/src/test-utils/createExtension.d.ts +15 -0
  99. package/dist/src/test-utils/createExtension.js +25 -0
  100. package/dist/src/test-utils/createExtension.js.map +1 -0
  101. package/dist/src/test-utils/mockCommandContext.js +2 -0
  102. package/dist/src/test-utils/mockCommandContext.js.map +1 -1
  103. package/dist/src/test-utils/render.d.ts +3 -1
  104. package/dist/src/test-utils/render.js +2 -1
  105. package/dist/src/test-utils/render.js.map +1 -1
  106. package/dist/src/ui/App.js +3 -2
  107. package/dist/src/ui/App.js.map +1 -1
  108. package/dist/src/ui/AppContainer.js +86 -60
  109. package/dist/src/ui/AppContainer.js.map +1 -1
  110. package/dist/src/ui/AppContainer.test.js +166 -0
  111. package/dist/src/ui/AppContainer.test.js.map +1 -1
  112. package/dist/src/ui/IdeIntegrationNudge.d.ts +2 -2
  113. package/dist/src/ui/IdeIntegrationNudge.js +1 -2
  114. package/dist/src/ui/IdeIntegrationNudge.js.map +1 -1
  115. package/dist/src/ui/commands/chatCommand.d.ts +2 -0
  116. package/dist/src/ui/commands/chatCommand.js +91 -1
  117. package/dist/src/ui/commands/chatCommand.js.map +1 -1
  118. package/dist/src/ui/commands/clearCommand.js +1 -1
  119. package/dist/src/ui/commands/clearCommand.js.map +1 -1
  120. package/dist/src/ui/commands/extensionsCommand.js +40 -34
  121. package/dist/src/ui/commands/extensionsCommand.js.map +1 -1
  122. package/dist/src/ui/commands/ideCommand.js +1 -1
  123. package/dist/src/ui/commands/ideCommand.js.map +1 -1
  124. package/dist/src/ui/commands/mcpCommand.js +9 -2
  125. package/dist/src/ui/commands/mcpCommand.js.map +1 -1
  126. package/dist/src/ui/commands/modelCommand.d.ts +7 -0
  127. package/dist/src/ui/commands/modelCommand.js +16 -0
  128. package/dist/src/ui/commands/modelCommand.js.map +1 -0
  129. package/dist/src/ui/commands/modelCommand.test.d.ts +6 -0
  130. package/dist/src/ui/commands/modelCommand.test.js +30 -0
  131. package/dist/src/ui/commands/modelCommand.test.js.map +1 -0
  132. package/dist/src/ui/commands/permissionsCommand.d.ts +7 -0
  133. package/dist/src/ui/commands/permissionsCommand.js +16 -0
  134. package/dist/src/ui/commands/permissionsCommand.js.map +1 -0
  135. package/dist/src/ui/commands/permissionsCommand.test.d.ts +6 -0
  136. package/dist/src/ui/commands/permissionsCommand.test.js +30 -0
  137. package/dist/src/ui/commands/permissionsCommand.test.js.map +1 -0
  138. package/dist/src/ui/commands/types.d.ts +5 -2
  139. package/dist/src/ui/commands/types.js +0 -1
  140. package/dist/src/ui/commands/types.js.map +1 -1
  141. package/dist/src/ui/components/AppHeader.js +2 -5
  142. package/dist/src/ui/components/AppHeader.js.map +1 -1
  143. package/dist/src/ui/components/Composer.js +13 -11
  144. package/dist/src/ui/components/Composer.js.map +1 -1
  145. package/dist/src/ui/components/Composer.test.js +18 -21
  146. package/dist/src/ui/components/Composer.test.js.map +1 -1
  147. package/dist/src/ui/components/DialogManager.d.ts +6 -1
  148. package/dist/src/ui/components/DialogManager.js +11 -2
  149. package/dist/src/ui/components/DialogManager.js.map +1 -1
  150. package/dist/src/ui/components/FolderTrustDialog.js +13 -6
  151. package/dist/src/ui/components/FolderTrustDialog.js.map +1 -1
  152. package/dist/src/ui/components/FolderTrustDialog.test.js +12 -7
  153. package/dist/src/ui/components/FolderTrustDialog.test.js.map +1 -1
  154. package/dist/src/ui/components/Footer.d.ts +3 -0
  155. package/dist/src/ui/components/Footer.js +8 -3
  156. package/dist/src/ui/components/Footer.js.map +1 -1
  157. package/dist/src/ui/components/HistoryItemDisplay.d.ts +1 -1
  158. package/dist/src/ui/components/HistoryItemDisplay.js +3 -1
  159. package/dist/src/ui/components/HistoryItemDisplay.js.map +1 -1
  160. package/dist/src/ui/components/InputPrompt.d.ts +7 -1
  161. package/dist/src/ui/components/InputPrompt.js +135 -37
  162. package/dist/src/ui/components/InputPrompt.js.map +1 -1
  163. package/dist/src/ui/components/MainContent.js +1 -1
  164. package/dist/src/ui/components/MainContent.js.map +1 -1
  165. package/dist/src/ui/components/ModelDialog.d.ts +11 -0
  166. package/dist/src/ui/components/ModelDialog.js +53 -0
  167. package/dist/src/ui/components/ModelDialog.js.map +1 -0
  168. package/dist/src/ui/components/ModelDialog.test.d.ts +6 -0
  169. package/dist/src/ui/components/ModelDialog.test.js +153 -0
  170. package/dist/src/ui/components/ModelDialog.test.js.map +1 -0
  171. package/dist/src/ui/components/PermissionsModifyTrustDialog.d.ts +13 -0
  172. package/dist/src/ui/components/PermissionsModifyTrustDialog.js +45 -0
  173. package/dist/src/ui/components/PermissionsModifyTrustDialog.js.map +1 -0
  174. package/dist/src/ui/components/PermissionsModifyTrustDialog.test.d.ts +6 -0
  175. package/dist/src/ui/components/PermissionsModifyTrustDialog.test.js +158 -0
  176. package/dist/src/ui/components/PermissionsModifyTrustDialog.test.js.map +1 -0
  177. package/dist/src/ui/components/PrepareLabel.d.ts +5 -5
  178. package/dist/src/ui/components/PrepareLabel.js +66 -10
  179. package/dist/src/ui/components/PrepareLabel.js.map +1 -1
  180. package/dist/src/ui/components/PrepareLabel.test.d.ts +6 -0
  181. package/dist/src/ui/components/PrepareLabel.test.js +71 -0
  182. package/dist/src/ui/components/PrepareLabel.test.js.map +1 -0
  183. package/dist/src/ui/components/QueuedMessageDisplay.d.ts +9 -0
  184. package/dist/src/ui/components/QueuedMessageDisplay.js +20 -0
  185. package/dist/src/ui/components/QueuedMessageDisplay.js.map +1 -0
  186. package/dist/src/ui/components/QueuedMessageDisplay.test.d.ts +6 -0
  187. package/dist/src/ui/components/QueuedMessageDisplay.test.js +56 -0
  188. package/dist/src/ui/components/QueuedMessageDisplay.test.js.map +1 -0
  189. package/dist/src/ui/components/SettingsDialog.d.ts +2 -1
  190. package/dist/src/ui/components/SettingsDialog.js +68 -12
  191. package/dist/src/ui/components/SettingsDialog.js.map +1 -1
  192. package/dist/src/ui/components/SettingsDialog.test.js +333 -8
  193. package/dist/src/ui/components/SettingsDialog.test.js.map +1 -1
  194. package/dist/src/ui/components/SuggestionsDisplay.d.ts +5 -2
  195. package/dist/src/ui/components/SuggestionsDisplay.js +11 -5
  196. package/dist/src/ui/components/SuggestionsDisplay.js.map +1 -1
  197. package/dist/src/ui/components/ThemeDialog.test.js +10 -0
  198. package/dist/src/ui/components/ThemeDialog.test.js.map +1 -1
  199. package/dist/src/ui/components/messages/ToolGroupMessage.d.ts +1 -1
  200. package/dist/src/ui/components/messages/ToolGroupMessage.js +11 -9
  201. package/dist/src/ui/components/messages/ToolGroupMessage.js.map +1 -1
  202. package/dist/src/ui/components/messages/ToolMessage.d.ts +1 -1
  203. package/dist/src/ui/components/messages/ToolMessage.js +13 -6
  204. package/dist/src/ui/components/messages/ToolMessage.js.map +1 -1
  205. package/dist/src/ui/components/messages/WarningMessage.d.ts +11 -0
  206. package/dist/src/ui/components/messages/WarningMessage.js +10 -0
  207. package/dist/src/ui/components/messages/WarningMessage.js.map +1 -0
  208. package/dist/src/ui/components/shared/BaseSelectionList.d.ts +43 -0
  209. package/dist/src/ui/components/shared/BaseSelectionList.js +72 -0
  210. package/dist/src/ui/components/shared/BaseSelectionList.js.map +1 -0
  211. package/dist/src/ui/components/shared/BaseSelectionList.test.d.ts +6 -0
  212. package/dist/src/ui/components/shared/BaseSelectionList.test.js +374 -0
  213. package/dist/src/ui/components/shared/BaseSelectionList.test.js.map +1 -0
  214. package/dist/src/ui/components/shared/DescriptiveRadioButtonSelect.d.ts +36 -0
  215. package/dist/src/ui/components/shared/DescriptiveRadioButtonSelect.js +13 -0
  216. package/dist/src/ui/components/shared/DescriptiveRadioButtonSelect.js.map +1 -0
  217. package/dist/src/ui/components/shared/DescriptiveRadioButtonSelect.test.d.ts +6 -0
  218. package/dist/src/ui/components/shared/DescriptiveRadioButtonSelect.test.js +68 -0
  219. package/dist/src/ui/components/shared/DescriptiveRadioButtonSelect.test.js.map +1 -0
  220. package/dist/src/ui/components/shared/RadioButtonSelect.js +9 -104
  221. package/dist/src/ui/components/shared/RadioButtonSelect.js.map +1 -1
  222. package/dist/src/ui/components/shared/RadioButtonSelect.test.js +113 -92
  223. package/dist/src/ui/components/shared/RadioButtonSelect.test.js.map +1 -1
  224. package/dist/src/ui/components/shared/text-buffer.d.ts +6 -0
  225. package/dist/src/ui/components/shared/text-buffer.js +86 -5
  226. package/dist/src/ui/components/shared/text-buffer.js.map +1 -1
  227. package/dist/src/ui/components/views/ExtensionsList.d.ts +6 -0
  228. package/dist/src/ui/components/views/ExtensionsList.js +47 -0
  229. package/dist/src/ui/components/views/ExtensionsList.js.map +1 -0
  230. package/dist/src/ui/components/views/ExtensionsList.test.d.ts +6 -0
  231. package/dist/src/ui/components/views/ExtensionsList.test.js +97 -0
  232. package/dist/src/ui/components/views/ExtensionsList.test.js.map +1 -0
  233. package/dist/src/ui/constants.d.ts +1 -0
  234. package/dist/src/ui/constants.js +1 -0
  235. package/dist/src/ui/constants.js.map +1 -1
  236. package/dist/src/ui/contexts/KeypressContext.js +3 -0
  237. package/dist/src/ui/contexts/KeypressContext.js.map +1 -1
  238. package/dist/src/ui/contexts/SessionContext.d.ts +6 -0
  239. package/dist/src/ui/contexts/SessionContext.js +107 -5
  240. package/dist/src/ui/contexts/SessionContext.js.map +1 -1
  241. package/dist/src/ui/contexts/ShellFocusContext.d.ts +7 -0
  242. package/dist/src/ui/contexts/ShellFocusContext.js +9 -0
  243. package/dist/src/ui/contexts/ShellFocusContext.js.map +1 -0
  244. package/dist/src/ui/contexts/UIActionsContext.d.ts +2 -0
  245. package/dist/src/ui/contexts/UIActionsContext.js.map +1 -1
  246. package/dist/src/ui/contexts/UIStateContext.d.ts +9 -4
  247. package/dist/src/ui/contexts/UIStateContext.js +1 -0
  248. package/dist/src/ui/contexts/UIStateContext.js.map +1 -1
  249. package/dist/src/ui/hooks/shellCommandProcessor.js +7 -5
  250. package/dist/src/ui/hooks/shellCommandProcessor.js.map +1 -1
  251. package/dist/src/ui/hooks/shellCommandProcessor.test.js +1 -1
  252. package/dist/src/ui/hooks/shellCommandProcessor.test.js.map +1 -1
  253. package/dist/src/ui/hooks/slashCommandProcessor.d.ts +6 -1
  254. package/dist/src/ui/hooks/slashCommandProcessor.js +21 -45
  255. package/dist/src/ui/hooks/slashCommandProcessor.js.map +1 -1
  256. package/dist/src/ui/hooks/useAutoAcceptIndicator.d.ts +3 -2
  257. package/dist/src/ui/hooks/useAutoAcceptIndicator.js +9 -5
  258. package/dist/src/ui/hooks/useAutoAcceptIndicator.js.map +1 -1
  259. package/dist/src/ui/hooks/useAutoAcceptIndicator.test.js +69 -0
  260. package/dist/src/ui/hooks/useAutoAcceptIndicator.test.js.map +1 -1
  261. package/dist/src/ui/hooks/useExtensionUpdates.d.ts +12 -0
  262. package/dist/src/ui/hooks/useExtensionUpdates.js +64 -0
  263. package/dist/src/ui/hooks/useExtensionUpdates.js.map +1 -0
  264. package/dist/src/ui/hooks/useExtensionUpdates.test.d.ts +6 -0
  265. package/dist/src/ui/hooks/useExtensionUpdates.test.js +165 -0
  266. package/dist/src/ui/hooks/useExtensionUpdates.test.js.map +1 -0
  267. package/dist/src/ui/hooks/useFocus.js +10 -0
  268. package/dist/src/ui/hooks/useFocus.js.map +1 -1
  269. package/dist/src/ui/hooks/useFolderTrust.d.ts +1 -1
  270. package/dist/src/ui/hooks/useFolderTrust.js +2 -7
  271. package/dist/src/ui/hooks/useFolderTrust.js.map +1 -1
  272. package/dist/src/ui/hooks/useGeminiStream.d.ts +4 -0
  273. package/dist/src/ui/hooks/useGeminiStream.js +53 -23
  274. package/dist/src/ui/hooks/useGeminiStream.js.map +1 -1
  275. package/dist/src/ui/hooks/useGitBranchName.js +15 -18
  276. package/dist/src/ui/hooks/useGitBranchName.js.map +1 -1
  277. package/dist/src/ui/hooks/useGitBranchName.test.js +49 -53
  278. package/dist/src/ui/hooks/useGitBranchName.test.js.map +1 -1
  279. package/dist/src/ui/hooks/useMemoryMonitor.d.ts +13 -0
  280. package/dist/src/ui/hooks/useMemoryMonitor.js +28 -0
  281. package/dist/src/ui/hooks/useMemoryMonitor.js.map +1 -0
  282. package/dist/src/ui/hooks/useMemoryMonitor.test.d.ts +6 -0
  283. package/dist/src/ui/hooks/useMemoryMonitor.test.js +57 -0
  284. package/dist/src/ui/hooks/useMemoryMonitor.test.js.map +1 -0
  285. package/dist/src/ui/hooks/useModelCommand.d.ts +12 -0
  286. package/dist/src/ui/hooks/useModelCommand.js +21 -0
  287. package/dist/src/ui/hooks/useModelCommand.js.map +1 -0
  288. package/dist/src/ui/hooks/useModelCommand.test.d.ts +6 -0
  289. package/dist/src/ui/hooks/useModelCommand.test.js +35 -0
  290. package/dist/src/ui/hooks/useModelCommand.test.js.map +1 -0
  291. package/dist/src/ui/hooks/usePermissionsModifyTrust.d.ts +17 -0
  292. package/dist/src/ui/hooks/usePermissionsModifyTrust.js +78 -0
  293. package/dist/src/ui/hooks/usePermissionsModifyTrust.js.map +1 -0
  294. package/dist/src/ui/hooks/usePermissionsModifyTrust.test.d.ts +6 -0
  295. package/dist/src/ui/hooks/usePermissionsModifyTrust.test.js +182 -0
  296. package/dist/src/ui/hooks/usePermissionsModifyTrust.test.js.map +1 -0
  297. package/dist/src/ui/hooks/useReverseSearchCompletion.d.ts +1 -1
  298. package/dist/src/ui/hooks/useReverseSearchCompletion.js +67 -20
  299. package/dist/src/ui/hooks/useReverseSearchCompletion.js.map +1 -1
  300. package/dist/src/ui/hooks/useSelectionList.d.ts +33 -0
  301. package/dist/src/ui/hooks/useSelectionList.js +252 -0
  302. package/dist/src/ui/hooks/useSelectionList.js.map +1 -0
  303. package/dist/src/ui/hooks/useSelectionList.test.d.ts +6 -0
  304. package/dist/src/ui/hooks/useSelectionList.test.js +651 -0
  305. package/dist/src/ui/hooks/useSelectionList.test.js.map +1 -0
  306. package/dist/src/ui/hooks/useSlashCompletion.d.ts +1 -1
  307. package/dist/src/ui/hooks/useSlashCompletion.js +19 -3
  308. package/dist/src/ui/hooks/useSlashCompletion.js.map +1 -1
  309. package/dist/src/ui/hooks/useSlashCompletion.test.js +47 -2
  310. package/dist/src/ui/hooks/useSlashCompletion.test.js.map +1 -1
  311. package/dist/src/ui/hooks/useStateAndRef.d.ts +1 -1
  312. package/dist/src/ui/hooks/useStateAndRef.js +2 -2
  313. package/dist/src/ui/hooks/useStateAndRef.js.map +1 -1
  314. package/dist/src/ui/hooks/useToolScheduler.test.js +1 -0
  315. package/dist/src/ui/hooks/useToolScheduler.test.js.map +1 -1
  316. package/dist/src/ui/keyMatchers.test.js +2 -0
  317. package/dist/src/ui/keyMatchers.test.js.map +1 -1
  318. package/dist/src/ui/noninteractive/nonInteractiveUi.d.ts +12 -0
  319. package/dist/src/ui/noninteractive/nonInteractiveUi.js +27 -0
  320. package/dist/src/ui/noninteractive/nonInteractiveUi.js.map +1 -0
  321. package/dist/src/ui/privacy/CloudFreePrivacyNotice.js +3 -3
  322. package/dist/src/ui/privacy/CloudFreePrivacyNotice.js.map +1 -1
  323. package/dist/src/ui/state/extensions.d.ts +15 -0
  324. package/dist/src/ui/state/extensions.js +17 -0
  325. package/dist/src/ui/state/extensions.js.map +1 -0
  326. package/dist/src/ui/themes/ayu.js +1 -1
  327. package/dist/src/ui/themes/dracula.js +2 -2
  328. package/dist/src/ui/themes/github-dark.js +1 -1
  329. package/dist/src/ui/types.d.ts +11 -2
  330. package/dist/src/ui/types.js +2 -0
  331. package/dist/src/ui/types.js.map +1 -1
  332. package/dist/src/ui/utils/MarkdownDisplay.test.js +6 -2
  333. package/dist/src/ui/utils/MarkdownDisplay.test.js.map +1 -1
  334. package/dist/src/ui/utils/clipboardUtils.js +5 -6
  335. package/dist/src/ui/utils/clipboardUtils.js.map +1 -1
  336. package/dist/src/ui/utils/highlight.d.ts +1 -0
  337. package/dist/src/ui/utils/highlight.js +28 -0
  338. package/dist/src/ui/utils/highlight.js.map +1 -1
  339. package/dist/src/utils/commands.d.ts +20 -0
  340. package/dist/src/utils/commands.js +53 -0
  341. package/dist/src/utils/commands.js.map +1 -0
  342. package/dist/src/utils/commands.test.d.ts +6 -0
  343. package/dist/src/utils/commands.test.js +115 -0
  344. package/dist/src/utils/commands.test.js.map +1 -0
  345. package/dist/src/utils/commentJson.d.ts +9 -0
  346. package/dist/src/utils/commentJson.js +48 -0
  347. package/dist/src/utils/commentJson.js.map +1 -0
  348. package/dist/src/utils/commentJson.test.d.ts +6 -0
  349. package/dist/src/utils/commentJson.test.js +146 -0
  350. package/dist/src/utils/commentJson.test.js.map +1 -0
  351. package/dist/src/utils/deepMerge.d.ts +2 -3
  352. package/dist/src/utils/events.d.ts +2 -1
  353. package/dist/src/utils/events.js +1 -0
  354. package/dist/src/utils/events.js.map +1 -1
  355. package/dist/src/utils/processUtils.d.ts +13 -0
  356. package/dist/src/utils/processUtils.js +18 -0
  357. package/dist/src/utils/processUtils.js.map +1 -0
  358. package/dist/src/utils/processUtils.test.d.ts +6 -0
  359. package/dist/src/utils/processUtils.test.js +20 -0
  360. package/dist/src/utils/processUtils.test.js.map +1 -0
  361. package/dist/src/utils/relaunch.d.ts +7 -0
  362. package/dist/src/utils/relaunch.js +57 -0
  363. package/dist/src/utils/relaunch.js.map +1 -0
  364. package/dist/src/utils/relaunch.test.d.ts +6 -0
  365. package/dist/src/utils/relaunch.test.js +273 -0
  366. package/dist/src/utils/relaunch.test.js.map +1 -0
  367. package/dist/src/utils/sandbox.d.ts +1 -1
  368. package/dist/src/utils/sandbox.js +17 -8
  369. package/dist/src/utils/sandbox.js.map +1 -1
  370. package/dist/src/validateNonInterActiveAuth.js +30 -18
  371. package/dist/src/validateNonInterActiveAuth.js.map +1 -1
  372. package/dist/src/zed-integration/schema.d.ts +22 -22
  373. package/dist/tsconfig.tsbuildinfo +1 -1
  374. package/package.json +6 -4
  375. package/dist/google-gemini-cli-0.6.0-nightly.tgz +0 -0
@@ -0,0 +1,27 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ /**
7
+ * Creates a UI context object with no-op functions.
8
+ * Useful for non-interactive environments where UI operations
9
+ * are not applicable.
10
+ */
11
+ export function createNonInteractiveUI() {
12
+ return {
13
+ addItem: (_item, _timestamp) => 0,
14
+ clear: () => { },
15
+ setDebugMessage: (_message) => { },
16
+ loadHistory: (_newHistory) => { },
17
+ pendingItem: null,
18
+ setPendingItem: (_item) => { },
19
+ toggleCorgiMode: () => { },
20
+ toggleVimEnabled: async () => false,
21
+ setGeminiMdFileCount: (_count) => { },
22
+ reloadCommands: () => { },
23
+ extensionsUpdateState: new Map(),
24
+ setExtensionsUpdateState: (_updateState) => { },
25
+ };
26
+ }
27
+ //# sourceMappingURL=nonInteractiveUi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nonInteractiveUi.js","sourceRoot":"","sources":["../../../../src/ui/noninteractive/nonInteractiveUi.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH;;;;GAIG;AACH,MAAM,UAAU,sBAAsB;IACpC,OAAO;QACL,OAAO,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC;QACjC,KAAK,EAAE,GAAG,EAAE,GAAE,CAAC;QACf,eAAe,EAAE,CAAC,QAAQ,EAAE,EAAE,GAAE,CAAC;QACjC,WAAW,EAAE,CAAC,WAAW,EAAE,EAAE,GAAE,CAAC;QAChC,WAAW,EAAE,IAAI;QACjB,cAAc,EAAE,CAAC,KAAK,EAAE,EAAE,GAAE,CAAC;QAC7B,eAAe,EAAE,GAAG,EAAE,GAAE,CAAC;QACzB,gBAAgB,EAAE,KAAK,IAAI,EAAE,CAAC,KAAK;QACnC,oBAAoB,EAAE,CAAC,MAAM,EAAE,EAAE,GAAE,CAAC;QACpC,cAAc,EAAE,GAAG,EAAE,GAAE,CAAC;QACxB,qBAAqB,EAAE,IAAI,GAAG,EAAE;QAChC,wBAAwB,EAAE,CAAC,YAAY,EAAE,EAAE,GAAE,CAAC;KAC/C,CAAC;AACJ,CAAC"}
@@ -7,13 +7,13 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
7
7
  import { Box, Newline, Text } from 'ink';
8
8
  import { RadioButtonSelect } from '../components/shared/RadioButtonSelect.js';
9
9
  import { usePrivacySettings } from '../hooks/usePrivacySettings.js';
10
- import { CloudPaidPrivacyNotice } from './CloudPaidPrivacyNotice.js';
11
10
  import { theme } from '../semantic-colors.js';
12
11
  import { useKeypress } from '../hooks/useKeypress.js';
13
12
  export const CloudFreePrivacyNotice = ({ config, onExit, }) => {
14
13
  const { privacyState, updateDataCollectionOptIn } = usePrivacySettings(config);
15
14
  useKeypress((key) => {
16
- if (privacyState.error && key.name === 'escape') {
15
+ if ((privacyState.error || privacyState.isFreeTier === false) &&
16
+ key.name === 'escape') {
17
17
  onExit();
18
18
  }
19
19
  }, { isActive: true });
@@ -24,7 +24,7 @@ export const CloudFreePrivacyNotice = ({ config, onExit, }) => {
24
24
  return (_jsxs(Box, { flexDirection: "column", marginY: 1, children: [_jsxs(Text, { color: theme.status.error, children: ["Error loading Opt-in settings: ", privacyState.error] }), _jsx(Text, { color: theme.text.secondary, children: "Press Esc to exit." })] }));
25
25
  }
26
26
  if (privacyState.isFreeTier === false) {
27
- return _jsx(CloudPaidPrivacyNotice, { onExit: onExit });
27
+ return (_jsxs(Box, { flexDirection: "column", marginY: 1, children: [_jsx(Text, { bold: true, color: theme.text.accent, children: "Gemini Code Assist Privacy Notice" }), _jsx(Newline, {}), _jsx(Text, { children: "https://developers.google.com/gemini-code-assist/resources/privacy-notices" }), _jsx(Newline, {}), _jsx(Text, { color: theme.text.secondary, children: "Press Esc to exit." })] }));
28
28
  }
29
29
  const items = [
30
30
  { label: 'Yes', value: true },
@@ -1 +1 @@
1
- {"version":3,"file":"CloudFreePrivacyNotice.js","sourceRoot":"","sources":["../../../../src/ui/privacy/CloudFreePrivacyNotice.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CloudFreePrivacyNotice.js","sourceRoot":"","sources":["../../../../src/ui/privacy/CloudFreePrivacyNotice.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ export declare enum ExtensionUpdateState {
7
+ CHECKING_FOR_UPDATES = "checking for updates",
8
+ UPDATED_NEEDS_RESTART = "updated, needs restart",
9
+ UPDATING = "updating",
10
+ UPDATE_AVAILABLE = "update available",
11
+ UP_TO_DATE = "up to date",
12
+ ERROR = "error checking for updates",
13
+ NOT_UPDATABLE = "not updatable",
14
+ UNKNOWN = "unknown"
15
+ }
@@ -0,0 +1,17 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ export var ExtensionUpdateState;
7
+ (function (ExtensionUpdateState) {
8
+ ExtensionUpdateState["CHECKING_FOR_UPDATES"] = "checking for updates";
9
+ ExtensionUpdateState["UPDATED_NEEDS_RESTART"] = "updated, needs restart";
10
+ ExtensionUpdateState["UPDATING"] = "updating";
11
+ ExtensionUpdateState["UPDATE_AVAILABLE"] = "update available";
12
+ ExtensionUpdateState["UP_TO_DATE"] = "up to date";
13
+ ExtensionUpdateState["ERROR"] = "error checking for updates";
14
+ ExtensionUpdateState["NOT_UPDATABLE"] = "not updatable";
15
+ ExtensionUpdateState["UNKNOWN"] = "unknown";
16
+ })(ExtensionUpdateState || (ExtensionUpdateState = {}));
17
+ //# sourceMappingURL=extensions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extensions.js","sourceRoot":"","sources":["../../../../src/ui/state/extensions.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,CAAN,IAAY,oBASX;AATD,WAAY,oBAAoB;IAC9B,qEAA6C,CAAA;IAC7C,wEAAgD,CAAA;IAChD,6CAAqB,CAAA;IACrB,6DAAqC,CAAA;IACrC,iDAAyB,CAAA;IACzB,4DAAoC,CAAA;IACpC,uDAA+B,CAAA;IAC/B,2CAAmB,CAAA;AACrB,CAAC,EATW,oBAAoB,KAApB,oBAAoB,QAS/B"}
@@ -7,7 +7,7 @@ import { Theme } from './theme.js';
7
7
  const ayuDarkColors = {
8
8
  type: 'dark',
9
9
  Background: '#0b0e14',
10
- Foreground: '#bfbdb6',
10
+ Foreground: '#aeaca6',
11
11
  LightBlue: '#59C2FF',
12
12
  AccentBlue: '#39BAE6',
13
13
  AccentPurple: '#D2A6FF',
@@ -7,13 +7,13 @@ import { Theme } from './theme.js';
7
7
  const draculaColors = {
8
8
  type: 'dark',
9
9
  Background: '#282a36',
10
- Foreground: '#f8f8f2',
10
+ Foreground: '#a3afb7',
11
11
  LightBlue: '#8be9fd',
12
12
  AccentBlue: '#8be9fd',
13
13
  AccentPurple: '#ff79c6',
14
14
  AccentCyan: '#8be9fd',
15
15
  AccentGreen: '#50fa7b',
16
- AccentYellow: '#f1fa8c',
16
+ AccentYellow: '#fff783',
17
17
  AccentRed: '#ff5555',
18
18
  DiffAdded: '#11431d',
19
19
  DiffRemoved: '#6e1818',
@@ -7,7 +7,7 @@ import { Theme } from './theme.js';
7
7
  const githubDarkColors = {
8
8
  type: 'dark',
9
9
  Background: '#24292e',
10
- Foreground: '#d1d5da',
10
+ Foreground: '#c0c4c8',
11
11
  LightBlue: '#79B8FF',
12
12
  AccentBlue: '#79B8FF',
13
13
  AccentPurple: '#B392F0',
@@ -78,6 +78,10 @@ export type HistoryItemError = HistoryItemBase & {
78
78
  type: 'error';
79
79
  text: string;
80
80
  };
81
+ export type HistoryItemWarning = HistoryItemBase & {
82
+ type: 'warning';
83
+ text: string;
84
+ };
81
85
  export type HistoryItemAbout = HistoryItemBase & {
82
86
  type: 'about';
83
87
  cliVersion: string;
@@ -118,13 +122,17 @@ export type HistoryItemCompression = HistoryItemBase & {
118
122
  type: 'compression';
119
123
  compression: CompressionProps;
120
124
  };
121
- export type HistoryItemWithoutId = HistoryItemUser | HistoryItemUserShell | HistoryItemGemini | HistoryItemGeminiContent | HistoryItemInfo | HistoryItemError | HistoryItemAbout | HistoryItemHelp | HistoryItemToolGroup | HistoryItemStats | HistoryItemModelStats | HistoryItemToolStats | HistoryItemQuit | HistoryItemCompression;
125
+ export type HistoryItemExtensionsList = HistoryItemBase & {
126
+ type: 'extensions_list';
127
+ };
128
+ export type HistoryItemWithoutId = HistoryItemUser | HistoryItemUserShell | HistoryItemGemini | HistoryItemGeminiContent | HistoryItemInfo | HistoryItemError | HistoryItemWarning | HistoryItemAbout | HistoryItemHelp | HistoryItemToolGroup | HistoryItemStats | HistoryItemModelStats | HistoryItemToolStats | HistoryItemQuit | HistoryItemCompression | HistoryItemExtensionsList;
122
129
  export type HistoryItem = HistoryItemWithoutId & {
123
130
  id: number;
124
131
  };
125
132
  export declare enum MessageType {
126
133
  INFO = "info",
127
134
  ERROR = "error",
135
+ WARNING = "warning",
128
136
  USER = "user",
129
137
  ABOUT = "about",
130
138
  HELP = "help",
@@ -133,7 +141,8 @@ export declare enum MessageType {
133
141
  TOOL_STATS = "tool_stats",
134
142
  QUIT = "quit",
135
143
  GEMINI = "gemini",
136
- COMPRESSION = "compression"
144
+ COMPRESSION = "compression",
145
+ EXTENSIONS_LIST = "extensions_list"
137
146
  }
138
147
  export type Message = {
139
148
  type: MessageType.INFO | MessageType.ERROR | MessageType.USER;
@@ -41,6 +41,7 @@ export var MessageType;
41
41
  (function (MessageType) {
42
42
  MessageType["INFO"] = "info";
43
43
  MessageType["ERROR"] = "error";
44
+ MessageType["WARNING"] = "warning";
44
45
  MessageType["USER"] = "user";
45
46
  MessageType["ABOUT"] = "about";
46
47
  MessageType["HELP"] = "help";
@@ -50,5 +51,6 @@ export var MessageType;
50
51
  MessageType["QUIT"] = "quit";
51
52
  MessageType["GEMINI"] = "gemini";
52
53
  MessageType["COMPRESSION"] = "compression";
54
+ MessageType["EXTENSIONS_LIST"] = "extensions_list";
53
55
  })(MessageType || (MessageType = {}));
54
56
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/ui/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAUH,OAAO,EAAkB,MAAM,OAAO,CAAC;AAIvC,MAAM,CAAN,IAAY,SAOX;AAPD,WAAY,SAAS;IACnB,gDAAgD;IAChD,gDAAmC,CAAA;IACnC,qDAAqD;IACrD,kCAAqB,CAAA;IACrB,6BAA6B;IAC7B,4CAA+B,CAAA;AACjC,CAAC,EAPW,SAAS,KAAT,SAAS,QAOpB;AAED,gDAAgD;AAChD,MAAM,CAAN,IAAY,cAIX;AAJD,WAAY,cAAc;IACxB,+BAAa,CAAA;IACb,2CAAyB,CAAA;IACzB,qEAAmD,CAAA;AACrD,CAAC,EAJW,cAAc,KAAd,cAAc,QAIzB;AAED,oDAAoD;AACpD,MAAM,CAAN,IAAY,eAIX;AAJD,WAAY,eAAe;IACzB,sCAAmB,CAAA;IACnB,wDAAqC,CAAA;IACrC,4DAA4D;AAC9D,CAAC,EAJW,eAAe,KAAf,eAAe,QAI1B;AAED,MAAM,CAAN,IAAY,cAOX;AAPD,WAAY,cAAc;IACxB,qCAAmB,CAAA;IACnB,uCAAqB,CAAA;IACrB,2CAAyB,CAAA;IACzB,yCAAuB,CAAA;IACvB,qCAAmB,CAAA;IACnB,iCAAe,CAAA;AACjB,CAAC,EAPW,cAAc,KAAd,cAAc,QAOzB;AAmID,gFAAgF;AAChF,MAAM,CAAN,IAAY,WAYX;AAZD,WAAY,WAAW;IACrB,4BAAa,CAAA;IACb,8BAAe,CAAA;IACf,4BAAa,CAAA;IACb,8BAAe,CAAA;IACf,4BAAa,CAAA;IACb,8BAAe,CAAA;IACf,0CAA2B,CAAA;IAC3B,wCAAyB,CAAA;IACzB,4BAAa,CAAA;IACb,gCAAiB,CAAA;IACjB,0CAA2B,CAAA;AAC7B,CAAC,EAZW,WAAW,KAAX,WAAW,QAYtB"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/ui/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAUH,OAAO,EAAkB,MAAM,OAAO,CAAC;AAIvC,MAAM,CAAN,IAAY,SAOX;AAPD,WAAY,SAAS;IACnB,gDAAgD;IAChD,gDAAmC,CAAA;IACnC,qDAAqD;IACrD,kCAAqB,CAAA;IACrB,6BAA6B;IAC7B,4CAA+B,CAAA;AACjC,CAAC,EAPW,SAAS,KAAT,SAAS,QAOpB;AAED,gDAAgD;AAChD,MAAM,CAAN,IAAY,cAIX;AAJD,WAAY,cAAc;IACxB,+BAAa,CAAA;IACb,2CAAyB,CAAA;IACzB,qEAAmD,CAAA;AACrD,CAAC,EAJW,cAAc,KAAd,cAAc,QAIzB;AAED,oDAAoD;AACpD,MAAM,CAAN,IAAY,eAIX;AAJD,WAAY,eAAe;IACzB,sCAAmB,CAAA;IACnB,wDAAqC,CAAA;IACrC,4DAA4D;AAC9D,CAAC,EAJW,eAAe,KAAf,eAAe,QAI1B;AAED,MAAM,CAAN,IAAY,cAOX;AAPD,WAAY,cAAc;IACxB,qCAAmB,CAAA;IACnB,uCAAqB,CAAA;IACrB,2CAAyB,CAAA;IACzB,yCAAuB,CAAA;IACvB,qCAAmB,CAAA;IACnB,iCAAe,CAAA;AACjB,CAAC,EAPW,cAAc,KAAd,cAAc,QAOzB;AA8ID,gFAAgF;AAChF,MAAM,CAAN,IAAY,WAcX;AAdD,WAAY,WAAW;IACrB,4BAAa,CAAA;IACb,8BAAe,CAAA;IACf,kCAAmB,CAAA;IACnB,4BAAa,CAAA;IACb,8BAAe,CAAA;IACf,4BAAa,CAAA;IACb,8BAAe,CAAA;IACf,0CAA2B,CAAA;IAC3B,wCAAyB,CAAA;IACzB,4BAAa,CAAA;IACb,gCAAiB,CAAA;IACjB,0CAA2B,CAAA;IAC3B,kDAAmC,CAAA;AACrC,CAAC,EAdW,WAAW,KAAX,WAAW,QActB"}
@@ -16,7 +16,7 @@ describe('<MarkdownDisplay />', () => {
16
16
  terminalWidth: 80,
17
17
  availableTerminalHeight: 40,
18
18
  };
19
- const mockSettings = new LoadedSettings({ path: '', settings: {} }, { path: '', settings: {} }, { path: '', settings: {} }, { path: '', settings: {} }, true, new Set());
19
+ const mockSettings = new LoadedSettings({ path: '', settings: {}, originalSettings: {} }, { path: '', settings: {}, originalSettings: {} }, { path: '', settings: {}, originalSettings: {} }, { path: '', settings: {}, originalSettings: {} }, true, new Set());
20
20
  beforeEach(() => {
21
21
  vi.clearAllMocks();
22
22
  });
@@ -137,7 +137,11 @@ Another paragraph.
137
137
  });
138
138
  it('hides line numbers in code blocks when showLineNumbers is false', () => {
139
139
  const text = '```javascript\nconst x = 1;\n```'.replace(/\n/g, EOL);
140
- const settings = new LoadedSettings({ path: '', settings: {} }, { path: '', settings: {} }, { path: '', settings: { ui: { showLineNumbers: false } } }, { path: '', settings: {} }, true, new Set());
140
+ const settings = new LoadedSettings({ path: '', settings: {}, originalSettings: {} }, { path: '', settings: {}, originalSettings: {} }, {
141
+ path: '',
142
+ settings: { ui: { showLineNumbers: false } },
143
+ originalSettings: { ui: { showLineNumbers: false } },
144
+ }, { path: '', settings: {}, originalSettings: {} }, true, new Set());
141
145
  const { lastFrame } = render(_jsx(SettingsContext.Provider, { value: settings, children: _jsx(MarkdownDisplay, { ...baseProps, text: text }) }));
142
146
  expect(lastFrame()).toMatchSnapshot();
143
147
  expect(lastFrame()).not.toContain(' 1 ');
@@ -1 +1 @@
1
- {"version":3,"file":"MarkdownDisplay.test.js","sourceRoot":"","sources":["../../../../src/ui/utils/MarkdownDisplay.test.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MarkdownDisplay.test.js","sourceRoot":"","sources":["../../../../src/ui/utils/MarkdownDisplay.test.tsx"],"names":[],"mappings":"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"}
@@ -3,11 +3,9 @@
3
3
  * Copyright 2025 Google LLC
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- import { exec } from 'node:child_process';
7
- import { promisify } from 'node:util';
8
6
  import * as fs from 'node:fs/promises';
9
7
  import * as path from 'node:path';
10
- const execAsync = promisify(exec);
8
+ import { spawnAsync } from '@google/gemini-cli-core';
11
9
  /**
12
10
  * Checks if the system clipboard contains an image (macOS only for now)
13
11
  * @returns true if clipboard contains an image
@@ -18,8 +16,9 @@ export async function clipboardHasImage() {
18
16
  }
19
17
  try {
20
18
  // Use osascript to check clipboard type
21
- const { stdout } = await execAsync(`osascript -e 'clipboard info' 2>/dev/null | grep -qE "«class PNGf»|TIFF picture|JPEG picture|GIF picture|«class JPEG»|«class TIFF»" && echo "true" || echo "false"`, { shell: '/bin/bash' });
22
- return stdout.trim() === 'true';
19
+ const { stdout } = await spawnAsync('osascript', ['-e', 'clipboard info']);
20
+ const imageRegex = /«class PNGf»|TIFF picture|JPEG picture|GIF picture|«class JPEG»|«class TIFF»/;
21
+ return imageRegex.test(stdout);
23
22
  }
24
23
  catch {
25
24
  return false;
@@ -66,7 +65,7 @@ export async function saveClipboardImage(targetDir) {
66
65
  return "error"
67
66
  end try
68
67
  `;
69
- const { stdout } = await execAsync(`osascript -e '${script}'`);
68
+ const { stdout } = await spawnAsync('osascript', ['-e', script]);
70
69
  if (stdout.trim() === 'success') {
71
70
  // Verify the file was created and has content
72
71
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"clipboardUtils.js","sourceRoot":"","sources":["../../../../src/ui/utils/clipboardUtils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"clipboardUtils.js","sourceRoot":"","sources":["../../../../src/ui/utils/clipboardUtils.ts"],"names":[],"mappings":"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"}
@@ -8,3 +8,4 @@ export type HighlightToken = {
8
8
  type: 'default' | 'command' | 'file';
9
9
  };
10
10
  export declare function parseInputForHighlighting(text: string, index: number): readonly HighlightToken[];
11
+ export declare function buildSegmentsForVisualSlice(tokens: readonly HighlightToken[], sliceStart: number, sliceEnd: number): readonly HighlightToken[];
@@ -3,6 +3,7 @@
3
3
  * Copyright 2025 Google LLC
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
+ import { cpLen, cpSlice } from './textUtils.js';
6
7
  const HIGHLIGHT_REGEX = /(^\/[a-zA-Z0-9_-]+|@(?:\\ |[a-zA-Z0-9_./-])+)/g;
7
8
  export function parseInputForHighlighting(text, index) {
8
9
  if (!text) {
@@ -47,4 +48,31 @@ export function parseInputForHighlighting(text, index) {
47
48
  }
48
49
  return tokens;
49
50
  }
51
+ export function buildSegmentsForVisualSlice(tokens, sliceStart, sliceEnd) {
52
+ if (sliceStart >= sliceEnd)
53
+ return [];
54
+ const segments = [];
55
+ let tokenCpStart = 0;
56
+ for (const token of tokens) {
57
+ const tokenLen = cpLen(token.text);
58
+ const tokenStart = tokenCpStart;
59
+ const tokenEnd = tokenStart + tokenLen;
60
+ const overlapStart = Math.max(tokenStart, sliceStart);
61
+ const overlapEnd = Math.min(tokenEnd, sliceEnd);
62
+ if (overlapStart < overlapEnd) {
63
+ const sliceStartInToken = overlapStart - tokenStart;
64
+ const sliceEndInToken = overlapEnd - tokenStart;
65
+ const rawSlice = cpSlice(token.text, sliceStartInToken, sliceEndInToken);
66
+ const last = segments[segments.length - 1];
67
+ if (last && last.type === token.type) {
68
+ last.text += rawSlice;
69
+ }
70
+ else {
71
+ segments.push({ type: token.type, text: rawSlice });
72
+ }
73
+ }
74
+ tokenCpStart += tokenLen;
75
+ }
76
+ return segments;
77
+ }
50
78
  //# sourceMappingURL=highlight.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"highlight.js","sourceRoot":"","sources":["../../../../src/ui/utils/highlight.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH,MAAM,eAAe,GAAG,gDAAgD,CAAC;AAEzE,MAAM,UAAU,yBAAyB,CACvC,IAAY,EACZ,KAAa;IAEb,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;IACzC,CAAC;IAED,MAAM,MAAM,GAAqB,EAAE,CAAC;IACpC,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,IAAI,KAAK,CAAC;IAEV,OAAO,CAAC,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QACrD,MAAM,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC;QAC1B,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC;QAE/B,mDAAmD;QACnD,IAAI,UAAU,GAAG,SAAS,EAAE,CAAC;YAC3B,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,UAAU,CAAC;gBACvC,IAAI,EAAE,SAAS;aAChB,CAAC,CAAC;QACL,CAAC;QAED,wBAAwB;QACxB,MAAM,IAAI,GAAG,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC;QAC5D,mDAAmD;QACnD,IAAI,IAAI,KAAK,SAAS,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;YACtC,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,SAAS;aAChB,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,SAAS;gBACf,IAAI;aACL,CAAC,CAAC;QACL,CAAC;QAED,SAAS,GAAG,UAAU,GAAG,SAAS,CAAC,MAAM,CAAC;IAC5C,CAAC;IAED,8CAA8C;IAC9C,IAAI,SAAS,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAC5B,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;YAC3B,IAAI,EAAE,SAAS;SAChB,CAAC,CAAC;IACL,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"highlight.js","sourceRoot":"","sources":["../../../../src/ui/utils/highlight.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAOhD,MAAM,eAAe,GAAG,gDAAgD,CAAC;AAEzE,MAAM,UAAU,yBAAyB,CACvC,IAAY,EACZ,KAAa;IAEb,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;IACzC,CAAC;IAED,MAAM,MAAM,GAAqB,EAAE,CAAC;IACpC,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,IAAI,KAAK,CAAC;IAEV,OAAO,CAAC,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QACrD,MAAM,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC;QAC1B,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC;QAE/B,mDAAmD;QACnD,IAAI,UAAU,GAAG,SAAS,EAAE,CAAC;YAC3B,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,UAAU,CAAC;gBACvC,IAAI,EAAE,SAAS;aAChB,CAAC,CAAC;QACL,CAAC;QAED,wBAAwB;QACxB,MAAM,IAAI,GAAG,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC;QAC5D,mDAAmD;QACnD,IAAI,IAAI,KAAK,SAAS,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;YACtC,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,SAAS;aAChB,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,SAAS;gBACf,IAAI;aACL,CAAC,CAAC;QACL,CAAC;QAED,SAAS,GAAG,UAAU,GAAG,SAAS,CAAC,MAAM,CAAC;IAC5C,CAAC;IAED,8CAA8C;IAC9C,IAAI,SAAS,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAC5B,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;YAC3B,IAAI,EAAE,SAAS;SAChB,CAAC,CAAC;IACL,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,2BAA2B,CACzC,MAAiC,EACjC,UAAkB,EAClB,QAAgB;IAEhB,IAAI,UAAU,IAAI,QAAQ;QAAE,OAAO,EAAE,CAAC;IAEtC,MAAM,QAAQ,GAAqB,EAAE,CAAC;IACtC,IAAI,YAAY,GAAG,CAAC,CAAC;IAErB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACnC,MAAM,UAAU,GAAG,YAAY,CAAC;QAChC,MAAM,QAAQ,GAAG,UAAU,GAAG,QAAQ,CAAC;QAEvC,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QACtD,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAChD,IAAI,YAAY,GAAG,UAAU,EAAE,CAAC;YAC9B,MAAM,iBAAiB,GAAG,YAAY,GAAG,UAAU,CAAC;YACpD,MAAM,eAAe,GAAG,UAAU,GAAG,UAAU,CAAC;YAChD,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,iBAAiB,EAAE,eAAe,CAAC,CAAC;YAEzE,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAC3C,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,EAAE,CAAC;gBACrC,IAAI,CAAC,IAAI,IAAI,QAAQ,CAAC;YACxB,CAAC;iBAAM,CAAC;gBACN,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;YACtD,CAAC;QACH,CAAC;QAED,YAAY,IAAI,QAAQ,CAAC;IAC3B,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { type SlashCommand } from '../ui/commands/types.js';
7
+ export type ParsedSlashCommand = {
8
+ commandToExecute: SlashCommand | undefined;
9
+ args: string;
10
+ canonicalPath: string[];
11
+ };
12
+ /**
13
+ * Parses a raw slash command string into its command, arguments, and canonical path.
14
+ * If no valid command is found, the `commandToExecute` property will be `undefined`.
15
+ *
16
+ * @param query The raw input string, e.g., "/memory add some data" or "/help".
17
+ * @param commands The list of available top-level slash commands.
18
+ * @returns An object containing the resolved command, its arguments, and its canonical path.
19
+ */
20
+ export declare const parseSlashCommand: (query: string, commands: readonly SlashCommand[]) => ParsedSlashCommand;
@@ -0,0 +1,53 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import {} from '../ui/commands/types.js';
7
+ /**
8
+ * Parses a raw slash command string into its command, arguments, and canonical path.
9
+ * If no valid command is found, the `commandToExecute` property will be `undefined`.
10
+ *
11
+ * @param query The raw input string, e.g., "/memory add some data" or "/help".
12
+ * @param commands The list of available top-level slash commands.
13
+ * @returns An object containing the resolved command, its arguments, and its canonical path.
14
+ */
15
+ export const parseSlashCommand = (query, commands) => {
16
+ const trimmed = query.trim();
17
+ const parts = trimmed.substring(1).trim().split(/\s+/);
18
+ const commandPath = parts.filter((p) => p); // The parts of the command, e.g., ['memory', 'add']
19
+ let currentCommands = commands;
20
+ let commandToExecute;
21
+ let pathIndex = 0;
22
+ const canonicalPath = [];
23
+ for (const part of commandPath) {
24
+ // TODO: For better performance and architectural clarity, this two-pass
25
+ // search could be replaced. A more optimal approach would be to
26
+ // pre-compute a single lookup map in `CommandService.ts` that resolves
27
+ // all name and alias conflicts during the initial loading phase. The
28
+ // processor would then perform a single, fast lookup on that map.
29
+ // First pass: check for an exact match on the primary command name.
30
+ let foundCommand = currentCommands.find((cmd) => cmd.name === part);
31
+ // Second pass: if no primary name matches, check for an alias.
32
+ if (!foundCommand) {
33
+ foundCommand = currentCommands.find((cmd) => cmd.altNames?.includes(part));
34
+ }
35
+ if (foundCommand) {
36
+ commandToExecute = foundCommand;
37
+ canonicalPath.push(foundCommand.name);
38
+ pathIndex++;
39
+ if (foundCommand.subCommands) {
40
+ currentCommands = foundCommand.subCommands;
41
+ }
42
+ else {
43
+ break;
44
+ }
45
+ }
46
+ else {
47
+ break;
48
+ }
49
+ }
50
+ const args = parts.slice(pathIndex).join(' ');
51
+ return { commandToExecute, args, canonicalPath };
52
+ };
53
+ //# sourceMappingURL=commands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commands.js","sourceRoot":"","sources":["../../../src/utils/commands.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAqB,MAAM,yBAAyB,CAAC;AAQ5D;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,KAAa,EACb,QAAiC,EACb,EAAE;IACtB,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAE7B,MAAM,KAAK,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACvD,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,oDAAoD;IAEhG,IAAI,eAAe,GAAG,QAAQ,CAAC;IAC/B,IAAI,gBAA0C,CAAC;IAC/C,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,MAAM,aAAa,GAAa,EAAE,CAAC;IAEnC,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;QAC/B,wEAAwE;QACxE,gEAAgE;QAChE,uEAAuE;QACvE,qEAAqE;QACrE,kEAAkE;QAElE,oEAAoE;QACpE,IAAI,YAAY,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;QAEpE,+DAA+D;QAC/D,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,YAAY,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAC1C,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,CAC7B,CAAC;QACJ,CAAC;QAED,IAAI,YAAY,EAAE,CAAC;YACjB,gBAAgB,GAAG,YAAY,CAAC;YAChC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YACtC,SAAS,EAAE,CAAC;YACZ,IAAI,YAAY,CAAC,WAAW,EAAE,CAAC;gBAC7B,eAAe,GAAG,YAAY,CAAC,WAAW,CAAC;YAC7C,CAAC;iBAAM,CAAC;gBACN,MAAM;YACR,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM;QACR,CAAC;IACH,CAAC;IAED,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAE9C,OAAO,EAAE,gBAAgB,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;AACnD,CAAC,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ export {};
@@ -0,0 +1,115 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { describe, it, expect } from 'vitest';
7
+ import { parseSlashCommand } from './commands.js';
8
+ import { CommandKind } from '../ui/commands/types.js';
9
+ // Mock command structure for testing
10
+ const mockCommands = [
11
+ {
12
+ name: 'help',
13
+ description: 'Show help',
14
+ action: async () => { },
15
+ kind: CommandKind.BUILT_IN,
16
+ },
17
+ {
18
+ name: 'commit',
19
+ description: 'Commit changes',
20
+ action: async () => { },
21
+ kind: CommandKind.FILE,
22
+ },
23
+ {
24
+ name: 'memory',
25
+ description: 'Manage memory',
26
+ altNames: ['mem'],
27
+ subCommands: [
28
+ {
29
+ name: 'add',
30
+ description: 'Add to memory',
31
+ action: async () => { },
32
+ kind: CommandKind.BUILT_IN,
33
+ },
34
+ {
35
+ name: 'clear',
36
+ description: 'Clear memory',
37
+ altNames: ['c'],
38
+ action: async () => { },
39
+ kind: CommandKind.BUILT_IN,
40
+ },
41
+ ],
42
+ kind: CommandKind.BUILT_IN,
43
+ },
44
+ ];
45
+ describe('parseSlashCommand', () => {
46
+ it('should parse a simple command without arguments', () => {
47
+ const result = parseSlashCommand('/help', mockCommands);
48
+ expect(result.commandToExecute?.name).toBe('help');
49
+ expect(result.args).toBe('');
50
+ expect(result.canonicalPath).toEqual(['help']);
51
+ });
52
+ it('should parse a simple command with arguments', () => {
53
+ const result = parseSlashCommand('/commit -m "Initial commit"', mockCommands);
54
+ expect(result.commandToExecute?.name).toBe('commit');
55
+ expect(result.args).toBe('-m "Initial commit"');
56
+ expect(result.canonicalPath).toEqual(['commit']);
57
+ });
58
+ it('should parse a subcommand', () => {
59
+ const result = parseSlashCommand('/memory add', mockCommands);
60
+ expect(result.commandToExecute?.name).toBe('add');
61
+ expect(result.args).toBe('');
62
+ expect(result.canonicalPath).toEqual(['memory', 'add']);
63
+ });
64
+ it('should parse a subcommand with arguments', () => {
65
+ const result = parseSlashCommand('/memory add some important data', mockCommands);
66
+ expect(result.commandToExecute?.name).toBe('add');
67
+ expect(result.args).toBe('some important data');
68
+ expect(result.canonicalPath).toEqual(['memory', 'add']);
69
+ });
70
+ it('should handle a command alias', () => {
71
+ const result = parseSlashCommand('/mem add some data', mockCommands);
72
+ expect(result.commandToExecute?.name).toBe('add');
73
+ expect(result.args).toBe('some data');
74
+ expect(result.canonicalPath).toEqual(['memory', 'add']);
75
+ });
76
+ it('should handle a subcommand alias', () => {
77
+ const result = parseSlashCommand('/memory c', mockCommands);
78
+ expect(result.commandToExecute?.name).toBe('clear');
79
+ expect(result.args).toBe('');
80
+ expect(result.canonicalPath).toEqual(['memory', 'clear']);
81
+ });
82
+ it('should return undefined for an unknown command', () => {
83
+ const result = parseSlashCommand('/unknown', mockCommands);
84
+ expect(result.commandToExecute).toBeUndefined();
85
+ expect(result.args).toBe('unknown');
86
+ expect(result.canonicalPath).toEqual([]);
87
+ });
88
+ it('should return the parent command if subcommand is unknown', () => {
89
+ const result = parseSlashCommand('/memory unknownsub some args', mockCommands);
90
+ expect(result.commandToExecute?.name).toBe('memory');
91
+ expect(result.args).toBe('unknownsub some args');
92
+ expect(result.canonicalPath).toEqual(['memory']);
93
+ });
94
+ it('should handle extra whitespace', () => {
95
+ const result = parseSlashCommand(' /memory add some data ', mockCommands);
96
+ expect(result.commandToExecute?.name).toBe('add');
97
+ expect(result.args).toBe('some data');
98
+ expect(result.canonicalPath).toEqual(['memory', 'add']);
99
+ });
100
+ it('should return undefined if query does not start with a slash', () => {
101
+ const result = parseSlashCommand('help', mockCommands);
102
+ expect(result.commandToExecute).toBeUndefined();
103
+ });
104
+ it('should handle an empty query', () => {
105
+ const result = parseSlashCommand('', mockCommands);
106
+ expect(result.commandToExecute).toBeUndefined();
107
+ });
108
+ it('should handle a query with only a slash', () => {
109
+ const result = parseSlashCommand('/', mockCommands);
110
+ expect(result.commandToExecute).toBeUndefined();
111
+ expect(result.args).toBe('');
112
+ expect(result.canonicalPath).toEqual([]);
113
+ });
114
+ });
115
+ //# sourceMappingURL=commands.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commands.test.js","sourceRoot":"","sources":["../../../src/utils/commands.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ /**
7
+ * Updates a JSON file while preserving comments and formatting.
8
+ */
9
+ export declare function updateSettingsFilePreservingFormat(filePath: string, updates: Record<string, unknown>): void;