@quantum-ai/gemini-cli 0.45.4 → 0.45.6

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 (1961) hide show
  1. package/README.md +394 -0
  2. package/dist/index.js +1 -1
  3. package/dist/index.js.map +1 -1
  4. package/dist/package.json +17 -14
  5. package/dist/src/acp/acpCommandHandler.js.map +1 -1
  6. package/dist/src/acp/acpErrors.js.map +1 -1
  7. package/dist/src/acp/acpFileSystemService.js.map +1 -1
  8. package/dist/src/acp/acpRpcDispatcher.js.map +1 -1
  9. package/dist/src/acp/acpSession.js.map +1 -1
  10. package/dist/src/acp/acpSessionManager.js.map +1 -1
  11. package/dist/src/acp/acpUtils.js.map +1 -1
  12. package/dist/src/acp/commands/about.js.map +1 -1
  13. package/dist/src/acp/commands/commandRegistry.js.map +1 -1
  14. package/dist/src/acp/commands/extensions.js.map +1 -1
  15. package/dist/src/acp/commands/help.js.map +1 -1
  16. package/dist/src/acp/commands/init.js.map +1 -1
  17. package/dist/src/acp/commands/memory.js.map +1 -1
  18. package/dist/src/acp/commands/restore.js.map +1 -1
  19. package/dist/src/commands/extensions/configure.js.map +1 -1
  20. package/dist/src/commands/extensions/disable.js.map +1 -1
  21. package/dist/src/commands/extensions/enable.js.map +1 -1
  22. package/dist/src/commands/extensions/install.js.map +1 -1
  23. package/dist/src/commands/extensions/link.js.map +1 -1
  24. package/dist/src/commands/extensions/list.js.map +1 -1
  25. package/dist/src/commands/extensions/new.js.map +1 -1
  26. package/dist/src/commands/extensions/uninstall.js.map +1 -1
  27. package/dist/src/commands/extensions/update.js.map +1 -1
  28. package/dist/src/commands/extensions/utils.js.map +1 -1
  29. package/dist/src/commands/extensions/validate.js.map +1 -1
  30. package/dist/src/commands/gemma/logs.js.map +1 -1
  31. package/dist/src/commands/gemma/platform.js.map +1 -1
  32. package/dist/src/commands/gemma/setup.js.map +1 -1
  33. package/dist/src/commands/gemma/start.js.map +1 -1
  34. package/dist/src/commands/gemma/status.js.map +1 -1
  35. package/dist/src/commands/gemma/stop.js.map +1 -1
  36. package/dist/src/commands/hooks/migrate.js +1 -1
  37. package/dist/src/commands/hooks/migrate.js.map +1 -1
  38. package/dist/src/commands/mcp/add.js +1 -1
  39. package/dist/src/commands/mcp/add.js.map +1 -1
  40. package/dist/src/commands/mcp/enableDisable.js.map +1 -1
  41. package/dist/src/commands/mcp/list.js.map +1 -1
  42. package/dist/src/commands/mcp/remove.js.map +1 -1
  43. package/dist/src/commands/skills/install.js.map +1 -1
  44. package/dist/src/commands/skills/link.js.map +1 -1
  45. package/dist/src/commands/skills/list.js.map +1 -1
  46. package/dist/src/commands/skills/uninstall.js.map +1 -1
  47. package/dist/src/config/auth.js.map +1 -1
  48. package/dist/src/config/config.js.map +1 -1
  49. package/dist/src/config/extension-manager-themes.spec.js.map +1 -1
  50. package/dist/src/config/extension-manager.d.ts +1 -0
  51. package/dist/src/config/extension-manager.js.map +1 -1
  52. package/dist/src/config/extension.js.map +1 -1
  53. package/dist/src/config/extensionRegistryClient.js +2 -1
  54. package/dist/src/config/extensionRegistryClient.js.map +1 -1
  55. package/dist/src/config/extensions/consent.js.map +1 -1
  56. package/dist/src/config/extensions/extensionEnablement.js.map +1 -1
  57. package/dist/src/config/extensions/extensionSettings.js +1 -1
  58. package/dist/src/config/extensions/extensionSettings.js.map +1 -1
  59. package/dist/src/config/extensions/github.js.map +1 -1
  60. package/dist/src/config/extensions/github_fetch.js.map +1 -1
  61. package/dist/src/config/extensions/update.js.map +1 -1
  62. package/dist/src/config/extensions/variables.js.map +1 -1
  63. package/dist/src/config/footerItems.js.map +1 -1
  64. package/dist/src/config/mcp/mcpServerEnablement.js +2 -1
  65. package/dist/src/config/mcp/mcpServerEnablement.js.map +1 -1
  66. package/dist/src/config/policy.js.map +1 -1
  67. package/dist/src/config/sandboxConfig.js.map +1 -1
  68. package/dist/src/config/settings-validation.js.map +1 -1
  69. package/dist/src/config/settings.js +1 -1
  70. package/dist/src/config/settings.js.map +1 -1
  71. package/dist/src/config/settingsSchema.d.ts +38 -21
  72. package/dist/src/config/settingsSchema.js +7 -7
  73. package/dist/src/config/settingsSchema.js.map +1 -1
  74. package/dist/src/core/auth.js.map +1 -1
  75. package/dist/src/core/initializer.js.map +1 -1
  76. package/dist/src/core/theme.js.map +1 -1
  77. package/dist/src/deferred.js.map +1 -1
  78. package/dist/src/gemini.js.map +1 -1
  79. package/dist/src/index.d.ts +1 -0
  80. package/dist/src/index.js +1 -0
  81. package/dist/src/index.js.map +1 -1
  82. package/dist/src/interactiveCli.js.map +1 -1
  83. package/dist/src/nonInteractiveCli.js.map +1 -1
  84. package/dist/src/nonInteractiveCliAgentSession.js.map +1 -1
  85. package/dist/src/nonInteractiveCliCommands.js.map +1 -1
  86. package/dist/src/services/BuiltinCommandLoader.js.map +1 -1
  87. package/dist/src/services/CommandService.js.map +1 -1
  88. package/dist/src/services/FileCommandLoader.js.map +1 -1
  89. package/dist/src/services/McpPromptLoader.js.map +1 -1
  90. package/dist/src/services/SkillCommandLoader.js.map +1 -1
  91. package/dist/src/services/SlashCommandConflictHandler.js.map +1 -1
  92. package/dist/src/services/SlashCommandResolver.js.map +1 -1
  93. package/dist/src/services/liteRtServerManager.js.map +1 -1
  94. package/dist/src/services/prompt-processors/argumentProcessor.js.map +1 -1
  95. package/dist/src/services/prompt-processors/atFileProcessor.js.map +1 -1
  96. package/dist/src/services/prompt-processors/injectionParser.js.map +1 -1
  97. package/dist/src/services/prompt-processors/shellProcessor.js.map +1 -1
  98. package/dist/src/test-utils/AppRig.js.map +1 -1
  99. package/dist/src/test-utils/MockShellExecutionService.js +2 -1
  100. package/dist/src/test-utils/MockShellExecutionService.js.map +1 -1
  101. package/dist/src/test-utils/async.js.map +1 -1
  102. package/dist/src/test-utils/createExtension.js.map +1 -1
  103. package/dist/src/test-utils/customMatchers.js.map +1 -1
  104. package/dist/src/test-utils/mockCommandContext.js.map +1 -1
  105. package/dist/src/test-utils/mockDebugLogger.js.map +1 -1
  106. package/dist/src/test-utils/render.js.map +1 -1
  107. package/dist/src/test-utils/settings.js.map +1 -1
  108. package/dist/src/test-utils/svg.js.map +1 -1
  109. package/dist/src/ui/App.d.ts +1 -1
  110. package/dist/src/ui/App.js.map +1 -1
  111. package/dist/src/ui/AppContainer.d.ts +1 -1
  112. package/dist/src/ui/AppContainer.js.map +1 -1
  113. package/dist/src/ui/IdeIntegrationNudge.d.ts +1 -1
  114. package/dist/src/ui/IdeIntegrationNudge.js.map +1 -1
  115. package/dist/src/ui/auth/ApiAuthDialog.js.map +1 -1
  116. package/dist/src/ui/auth/AuthDialog.js.map +1 -1
  117. package/dist/src/ui/auth/AuthInProgress.js.map +1 -1
  118. package/dist/src/ui/auth/BannedAccountDialog.js.map +1 -1
  119. package/dist/src/ui/auth/LoginRestartDialog.d.ts +1 -1
  120. package/dist/src/ui/auth/LoginRestartDialog.js.map +1 -1
  121. package/dist/src/ui/auth/useAuth.d.ts +1 -0
  122. package/dist/src/ui/auth/useAuth.js.map +1 -1
  123. package/dist/src/ui/commands/aboutCommand.js.map +1 -1
  124. package/dist/src/ui/commands/agentsCommand.js.map +1 -1
  125. package/dist/src/ui/commands/bugCommand.js.map +1 -1
  126. package/dist/src/ui/commands/bugMemoryCommand.js.map +1 -1
  127. package/dist/src/ui/commands/chatCommand.js.map +1 -1
  128. package/dist/src/ui/commands/clearCommand.js.map +1 -1
  129. package/dist/src/ui/commands/commandsCommand.js.map +1 -1
  130. package/dist/src/ui/commands/compressCommand.js.map +1 -1
  131. package/dist/src/ui/commands/copyCommand.js.map +1 -1
  132. package/dist/src/ui/commands/directoryCommand.js.map +1 -1
  133. package/dist/src/ui/commands/docsCommand.js.map +1 -1
  134. package/dist/src/ui/commands/exportSessionCommand.js.map +1 -1
  135. package/dist/src/ui/commands/extensionsCommand.js.map +1 -1
  136. package/dist/src/ui/commands/helpCommand.js.map +1 -1
  137. package/dist/src/ui/commands/hooksCommand.js.map +1 -1
  138. package/dist/src/ui/commands/ideCommand.js.map +1 -1
  139. package/dist/src/ui/commands/initCommand.js.map +1 -1
  140. package/dist/src/ui/commands/mcpCommand.js.map +1 -1
  141. package/dist/src/ui/commands/memoryCommand.js.map +1 -1
  142. package/dist/src/ui/commands/modelCommand.js.map +1 -1
  143. package/dist/src/ui/commands/oncallCommand.js.map +1 -1
  144. package/dist/src/ui/commands/permissionsCommand.js.map +1 -1
  145. package/dist/src/ui/commands/planCommand.js.map +1 -1
  146. package/dist/src/ui/commands/policiesCommand.js.map +1 -1
  147. package/dist/src/ui/commands/quitCommand.js +1 -1
  148. package/dist/src/ui/commands/quitCommand.js.map +1 -1
  149. package/dist/src/ui/commands/restoreCommand.js.map +1 -1
  150. package/dist/src/ui/commands/rewindCommand.js.map +1 -1
  151. package/dist/src/ui/commands/setupGithubCommand.js +3 -3
  152. package/dist/src/ui/commands/setupGithubCommand.js.map +1 -1
  153. package/dist/src/ui/commands/skillsCommand.js.map +1 -1
  154. package/dist/src/ui/commands/statsCommand.js.map +1 -1
  155. package/dist/src/ui/commands/terminalSetupCommand.js.map +1 -1
  156. package/dist/src/ui/commands/toolsCommand.js.map +1 -1
  157. package/dist/src/ui/commands/types.js +1 -1
  158. package/dist/src/ui/commands/types.js.map +1 -1
  159. package/dist/src/ui/commands/upgradeCommand.js.map +1 -1
  160. package/dist/src/ui/components/AdminSettingsChangedDialog.d.ts +1 -1
  161. package/dist/src/ui/components/AdminSettingsChangedDialog.js.map +1 -1
  162. package/dist/src/ui/components/AgentConfigDialog.js.map +1 -1
  163. package/dist/src/ui/components/AlternateBufferQuittingDisplay.d.ts +1 -1
  164. package/dist/src/ui/components/AppHeader.d.ts +1 -1
  165. package/dist/src/ui/components/AppHeader.js.map +1 -1
  166. package/dist/src/ui/components/ApprovalModeIndicator.js.map +1 -1
  167. package/dist/src/ui/components/AskUserDialog.js +12 -12
  168. package/dist/src/ui/components/AskUserDialog.js.map +1 -1
  169. package/dist/src/ui/components/BackgroundTaskDisplay.d.ts +1 -1
  170. package/dist/src/ui/components/BackgroundTaskDisplay.js.map +1 -1
  171. package/dist/src/ui/components/Banner.d.ts +1 -1
  172. package/dist/src/ui/components/Banner.js.map +1 -1
  173. package/dist/src/ui/components/Checklist.js.map +1 -1
  174. package/dist/src/ui/components/ChecklistItem.js.map +1 -1
  175. package/dist/src/ui/components/CliSpinner.d.ts +1 -1
  176. package/dist/src/ui/components/CliSpinner.js.map +1 -1
  177. package/dist/src/ui/components/ColorsDisplay.js.map +1 -1
  178. package/dist/src/ui/components/Composer.d.ts +2 -2
  179. package/dist/src/ui/components/Composer.js.map +1 -1
  180. package/dist/src/ui/components/ConfigExtensionDialog.js.map +1 -1
  181. package/dist/src/ui/components/ConfigInitDisplay.d.ts +1 -1
  182. package/dist/src/ui/components/ConfigInitDisplay.js.map +1 -1
  183. package/dist/src/ui/components/ConsentPrompt.d.ts +1 -1
  184. package/dist/src/ui/components/ConsoleSummaryDisplay.js.map +1 -1
  185. package/dist/src/ui/components/ContextSummaryDisplay.js.map +1 -1
  186. package/dist/src/ui/components/ContextUsageDisplay.d.ts +1 -1
  187. package/dist/src/ui/components/ContextUsageDisplay.js.map +1 -1
  188. package/dist/src/ui/components/DebugProfiler.d.ts +1 -1
  189. package/dist/src/ui/components/DebugProfiler.js.map +1 -1
  190. package/dist/src/ui/components/DetailedMessagesDisplay.js.map +1 -1
  191. package/dist/src/ui/components/DialogManager.d.ts +1 -1
  192. package/dist/src/ui/components/DialogManager.js.map +1 -1
  193. package/dist/src/ui/components/EditorSettingsDialog.js.map +1 -1
  194. package/dist/src/ui/components/EmptyWalletDialog.js.map +1 -1
  195. package/dist/src/ui/components/ExitPlanModeDialog.js.map +1 -1
  196. package/dist/src/ui/components/FolderTrustDialog.js +1 -1
  197. package/dist/src/ui/components/FolderTrustDialog.js.map +1 -1
  198. package/dist/src/ui/components/Footer.js.map +1 -1
  199. package/dist/src/ui/components/FooterConfigDialog.js.map +1 -1
  200. package/dist/src/ui/components/GeminiRespondingSpinner.js.map +1 -1
  201. package/dist/src/ui/components/GeminiSpinner.js.map +1 -1
  202. package/dist/src/ui/components/Header.js.map +1 -1
  203. package/dist/src/ui/components/HookStatusDisplay.js.map +1 -1
  204. package/dist/src/ui/components/HooksDialog.js.map +1 -1
  205. package/dist/src/ui/components/IdeTrustChangeDialog.d.ts +1 -1
  206. package/dist/src/ui/components/IdeTrustChangeDialog.js.map +1 -1
  207. package/dist/src/ui/components/InboxDialog.js.map +1 -1
  208. package/dist/src/ui/components/InputPrompt.js.map +1 -1
  209. package/dist/src/ui/components/ListeningIndicator.js.map +1 -1
  210. package/dist/src/ui/components/LoadingIndicator.js.map +1 -1
  211. package/dist/src/ui/components/LogoutConfirmationDialog.js +1 -1
  212. package/dist/src/ui/components/LogoutConfirmationDialog.js.map +1 -1
  213. package/dist/src/ui/components/LoopDetectionConfirmation.d.ts +1 -1
  214. package/dist/src/ui/components/LoopDetectionConfirmation.js.map +1 -1
  215. package/dist/src/ui/components/MainContent.d.ts +1 -1
  216. package/dist/src/ui/components/MainContent.js.map +1 -1
  217. package/dist/src/ui/components/MemoryUsageDisplay.js.map +1 -1
  218. package/dist/src/ui/components/ModelDialog.js.map +1 -1
  219. package/dist/src/ui/components/ModelQuotaDisplay.d.ts +1 -1
  220. package/dist/src/ui/components/ModelQuotaDisplay.js.map +1 -1
  221. package/dist/src/ui/components/ModelStatsDisplay.js.map +1 -1
  222. package/dist/src/ui/components/MultiFolderTrustDialog.js +1 -1
  223. package/dist/src/ui/components/MultiFolderTrustDialog.js.map +1 -1
  224. package/dist/src/ui/components/NewAgentsNotification.d.ts +1 -1
  225. package/dist/src/ui/components/NewAgentsNotification.js +1 -1
  226. package/dist/src/ui/components/NewAgentsNotification.js.map +1 -1
  227. package/dist/src/ui/components/Notifications.d.ts +1 -1
  228. package/dist/src/ui/components/Notifications.js.map +1 -1
  229. package/dist/src/ui/components/OverageMenuDialog.js.map +1 -1
  230. package/dist/src/ui/components/PermissionsModifyTrustDialog.js.map +1 -1
  231. package/dist/src/ui/components/PolicyUpdateDialog.js +1 -1
  232. package/dist/src/ui/components/PolicyUpdateDialog.js.map +1 -1
  233. package/dist/src/ui/components/ProQuotaDialog.js.map +1 -1
  234. package/dist/src/ui/components/ProgressBar.js.map +1 -1
  235. package/dist/src/ui/components/QueuedMessageDisplay.d.ts +1 -1
  236. package/dist/src/ui/components/QueuedMessageDisplay.js.map +1 -1
  237. package/dist/src/ui/components/QuittingDisplay.d.ts +1 -1
  238. package/dist/src/ui/components/QuittingDisplay.js.map +1 -1
  239. package/dist/src/ui/components/QuotaDisplay.js.map +1 -1
  240. package/dist/src/ui/components/QuotaStatsInfo.js.map +1 -1
  241. package/dist/src/ui/components/RewindConfirmation.js +1 -1
  242. package/dist/src/ui/components/RewindConfirmation.js.map +1 -1
  243. package/dist/src/ui/components/RewindViewer.js.map +1 -1
  244. package/dist/src/ui/components/SessionBrowser/utils.d.ts +2 -2
  245. package/dist/src/ui/components/SessionBrowser/utils.js.map +1 -1
  246. package/dist/src/ui/components/SessionBrowser.js.map +1 -1
  247. package/dist/src/ui/components/SessionSummaryDisplay.js.map +1 -1
  248. package/dist/src/ui/components/SettingsDialog.js.map +1 -1
  249. package/dist/src/ui/components/ShellInputPrompt.js.map +1 -1
  250. package/dist/src/ui/components/ShowMoreLines.d.ts +1 -1
  251. package/dist/src/ui/components/ShowMoreLines.js.map +1 -1
  252. package/dist/src/ui/components/StatsDisplay.js.map +1 -1
  253. package/dist/src/ui/components/StatusDisplay.js.map +1 -1
  254. package/dist/src/ui/components/StatusRow.js.map +1 -1
  255. package/dist/src/ui/components/SuggestionsDisplay.d.ts +1 -1
  256. package/dist/src/ui/components/SuggestionsDisplay.js.map +1 -1
  257. package/dist/src/ui/components/Table.d.ts +1 -1
  258. package/dist/src/ui/components/ThemeDialog.js.map +1 -1
  259. package/dist/src/ui/components/ThemedGradient.js.map +1 -1
  260. package/dist/src/ui/components/ToastDisplay.js.map +1 -1
  261. package/dist/src/ui/components/ToolConfirmationQueue.js.map +1 -1
  262. package/dist/src/ui/components/ToolStatsDisplay.js.map +1 -1
  263. package/dist/src/ui/components/UpdateNotification.d.ts +1 -1
  264. package/dist/src/ui/components/UserIdentity.js.map +1 -1
  265. package/dist/src/ui/components/ValidationDialog.js.map +1 -1
  266. package/dist/src/ui/components/VoiceModelDialog.js.map +1 -1
  267. package/dist/src/ui/components/messages/CompressionMessage.d.ts +1 -0
  268. package/dist/src/ui/components/messages/CompressionMessage.js.map +1 -1
  269. package/dist/src/ui/components/messages/DenseToolMessage.js.map +1 -1
  270. package/dist/src/ui/components/messages/DiffRenderer.js.map +1 -1
  271. package/dist/src/ui/components/messages/ShellToolMessage.js.map +1 -1
  272. package/dist/src/ui/components/messages/SubagentGroupDisplay.js.map +1 -1
  273. package/dist/src/ui/components/messages/SubagentProgressDisplay.js.map +1 -1
  274. package/dist/src/ui/components/messages/ThinkingMessage.js.map +1 -1
  275. package/dist/src/ui/components/messages/Todo.js.map +1 -1
  276. package/dist/src/ui/components/messages/ToolConfirmationMessage.js.map +1 -1
  277. package/dist/src/ui/components/messages/ToolGroupDisplay.js.map +1 -1
  278. package/dist/src/ui/components/messages/ToolGroupMessage.js.map +1 -1
  279. package/dist/src/ui/components/messages/ToolResultDisplay.js.map +1 -1
  280. package/dist/src/ui/components/messages/ToolShared.js.map +1 -1
  281. package/dist/src/ui/components/messages/TopicMessage.js.map +1 -1
  282. package/dist/src/ui/components/shared/BaseSelectionList.js.map +1 -1
  283. package/dist/src/ui/components/shared/BaseSettingsDialog.js.map +1 -1
  284. package/dist/src/ui/components/shared/DialogFooter.js.map +1 -1
  285. package/dist/src/ui/components/shared/EnumSelector.d.ts +1 -1
  286. package/dist/src/ui/components/shared/EnumSelector.js.map +1 -1
  287. package/dist/src/ui/components/shared/ExpandableText.js.map +1 -1
  288. package/dist/src/ui/components/shared/HalfLinePaddedBox.js.map +1 -1
  289. package/dist/src/ui/components/shared/MaxSizedBox.js.map +1 -1
  290. package/dist/src/ui/components/shared/RadioButtonSelect.js.map +1 -1
  291. package/dist/src/ui/components/shared/Scrollable.js.map +1 -1
  292. package/dist/src/ui/components/shared/ScrollableList.d.ts +1 -1
  293. package/dist/src/ui/components/shared/ScrollableList.js.map +1 -1
  294. package/dist/src/ui/components/shared/SearchableList.js.map +1 -1
  295. package/dist/src/ui/components/shared/SlicingMaxSizedBox.d.ts +2 -1
  296. package/dist/src/ui/components/shared/SlicingMaxSizedBox.js.map +1 -1
  297. package/dist/src/ui/components/shared/TabHeader.js.map +1 -1
  298. package/dist/src/ui/components/shared/TextInput.js.map +1 -1
  299. package/dist/src/ui/components/shared/VirtualizedList.d.ts +1 -1
  300. package/dist/src/ui/components/shared/VirtualizedList.js.map +1 -1
  301. package/dist/src/ui/components/shared/text-buffer.d.ts +1 -0
  302. package/dist/src/ui/components/shared/text-buffer.js.map +1 -1
  303. package/dist/src/ui/components/shared/vim-buffer-actions.js.map +1 -1
  304. package/dist/src/ui/components/triage/TriageDuplicates.d.ts +2 -2
  305. package/dist/src/ui/components/triage/TriageDuplicates.js +2 -2
  306. package/dist/src/ui/components/triage/TriageDuplicates.js.map +1 -1
  307. package/dist/src/ui/components/triage/TriageIssues.d.ts +3 -3
  308. package/dist/src/ui/components/triage/TriageIssues.js.map +1 -1
  309. package/dist/src/ui/components/views/AgentsStatus.js.map +1 -1
  310. package/dist/src/ui/components/views/ChatList.js.map +1 -1
  311. package/dist/src/ui/components/views/ExtensionDetails.js.map +1 -1
  312. package/dist/src/ui/components/views/ExtensionRegistryView.js.map +1 -1
  313. package/dist/src/ui/components/views/ExtensionsList.js.map +1 -1
  314. package/dist/src/ui/components/views/McpStatus.js.map +1 -1
  315. package/dist/src/ui/components/views/SkillsList.js.map +1 -1
  316. package/dist/src/ui/constants.js +2 -2
  317. package/dist/src/ui/constants.js.map +1 -1
  318. package/dist/src/ui/contexts/AppContext.d.ts +1 -0
  319. package/dist/src/ui/contexts/AppContext.js.map +1 -1
  320. package/dist/src/ui/contexts/AskUserActionsContext.js.map +1 -1
  321. package/dist/src/ui/contexts/ConfigContext.js.map +1 -1
  322. package/dist/src/ui/contexts/InputContext.d.ts +1 -0
  323. package/dist/src/ui/contexts/InputContext.js.map +1 -1
  324. package/dist/src/ui/contexts/KeypressContext.d.ts +1 -1
  325. package/dist/src/ui/contexts/KeypressContext.js +9 -9
  326. package/dist/src/ui/contexts/KeypressContext.js.map +1 -1
  327. package/dist/src/ui/contexts/MouseContext.d.ts +1 -1
  328. package/dist/src/ui/contexts/MouseContext.js.map +1 -1
  329. package/dist/src/ui/contexts/OverflowContext.js.map +1 -1
  330. package/dist/src/ui/contexts/QuotaContext.d.ts +1 -0
  331. package/dist/src/ui/contexts/QuotaContext.js.map +1 -1
  332. package/dist/src/ui/contexts/ScrollProvider.d.ts +1 -1
  333. package/dist/src/ui/contexts/ScrollProvider.js.map +1 -1
  334. package/dist/src/ui/contexts/SessionContext.js +1 -1
  335. package/dist/src/ui/contexts/SessionContext.js.map +1 -1
  336. package/dist/src/ui/contexts/SettingsContext.js.map +1 -1
  337. package/dist/src/ui/contexts/ShellFocusContext.d.ts +1 -0
  338. package/dist/src/ui/contexts/StreamingContext.js.map +1 -1
  339. package/dist/src/ui/contexts/TerminalContext.d.ts +1 -1
  340. package/dist/src/ui/contexts/TerminalContext.js.map +1 -1
  341. package/dist/src/ui/contexts/ToolActionsContext.js.map +1 -1
  342. package/dist/src/ui/contexts/UIActionsContext.d.ts +1 -0
  343. package/dist/src/ui/contexts/UIActionsContext.js.map +1 -1
  344. package/dist/src/ui/contexts/UIStateContext.d.ts +1 -0
  345. package/dist/src/ui/contexts/UIStateContext.js.map +1 -1
  346. package/dist/src/ui/contexts/VimModeContext.d.ts +1 -1
  347. package/dist/src/ui/contexts/VimModeContext.js.map +1 -1
  348. package/dist/src/ui/hooks/atCommandProcessor.js.map +1 -1
  349. package/dist/src/ui/hooks/creditsFlowHandler.d.ts +1 -0
  350. package/dist/src/ui/hooks/creditsFlowHandler.js.map +1 -1
  351. package/dist/src/ui/hooks/shell-completions/gitProvider.js.map +1 -1
  352. package/dist/src/ui/hooks/shell-completions/index.js.map +1 -1
  353. package/dist/src/ui/hooks/shell-completions/npmProvider.js.map +1 -1
  354. package/dist/src/ui/hooks/shellReducer.js.map +1 -1
  355. package/dist/src/ui/hooks/slashCommandProcessor.d.ts +1 -1
  356. package/dist/src/ui/hooks/slashCommandProcessor.js.map +1 -1
  357. package/dist/src/ui/hooks/toolMapping.js.map +1 -1
  358. package/dist/src/ui/hooks/useAgentStream.js.map +1 -1
  359. package/dist/src/ui/hooks/useAnimatedScrollbar.js.map +1 -1
  360. package/dist/src/ui/hooks/useApprovalModeIndicator.js.map +1 -1
  361. package/dist/src/ui/hooks/useAtCompletion.js +1 -1
  362. package/dist/src/ui/hooks/useAtCompletion.js.map +1 -1
  363. package/dist/src/ui/hooks/useBackgroundTaskManager.d.ts +1 -0
  364. package/dist/src/ui/hooks/useBackgroundTaskManager.js.map +1 -1
  365. package/dist/src/ui/hooks/useBanner.js.map +1 -1
  366. package/dist/src/ui/hooks/useCommandCompletion.js +1 -1
  367. package/dist/src/ui/hooks/useCommandCompletion.js.map +1 -1
  368. package/dist/src/ui/hooks/useCompletion.d.ts +1 -0
  369. package/dist/src/ui/hooks/useCompletion.js.map +1 -1
  370. package/dist/src/ui/hooks/useComposerStatus.js.map +1 -1
  371. package/dist/src/ui/hooks/useConsoleMessages.js.map +1 -1
  372. package/dist/src/ui/hooks/useEditorSettings.d.ts +1 -1
  373. package/dist/src/ui/hooks/useEditorSettings.js.map +1 -1
  374. package/dist/src/ui/hooks/useExecutionLifecycle.d.ts +1 -1
  375. package/dist/src/ui/hooks/useExecutionLifecycle.js.map +1 -1
  376. package/dist/src/ui/hooks/useExtensionRegistry.js.map +1 -1
  377. package/dist/src/ui/hooks/useExtensionUpdates.d.ts +4 -3
  378. package/dist/src/ui/hooks/useExtensionUpdates.js.map +1 -1
  379. package/dist/src/ui/hooks/useFlickerDetector.d.ts +1 -0
  380. package/dist/src/ui/hooks/useFlickerDetector.js.map +1 -1
  381. package/dist/src/ui/hooks/useFocus.js.map +1 -1
  382. package/dist/src/ui/hooks/useFolderTrust.js.map +1 -1
  383. package/dist/src/ui/hooks/useGeminiStream.d.ts +2 -2
  384. package/dist/src/ui/hooks/useGeminiStream.js +1 -1
  385. package/dist/src/ui/hooks/useGeminiStream.js.map +1 -1
  386. package/dist/src/ui/hooks/useGitBranchName.js.map +1 -1
  387. package/dist/src/ui/hooks/useHistoryManager.js.map +1 -1
  388. package/dist/src/ui/hooks/useHookDisplayState.js.map +1 -1
  389. package/dist/src/ui/hooks/useIdeTrustListener.js.map +1 -1
  390. package/dist/src/ui/hooks/useInactivityTimer.js.map +1 -1
  391. package/dist/src/ui/hooks/useIncludeDirsTrust.d.ts +1 -0
  392. package/dist/src/ui/hooks/useIncludeDirsTrust.js.map +1 -1
  393. package/dist/src/ui/hooks/useInlineEditBuffer.d.ts +2 -1
  394. package/dist/src/ui/hooks/useInlineEditBuffer.js.map +1 -1
  395. package/dist/src/ui/hooks/useInputHistory.js.map +1 -1
  396. package/dist/src/ui/hooks/useInputHistoryStore.js.map +1 -1
  397. package/dist/src/ui/hooks/useKeypress.js.map +1 -1
  398. package/dist/src/ui/hooks/useLoadingIndicator.js.map +1 -1
  399. package/dist/src/ui/hooks/useMcpStatus.js.map +1 -1
  400. package/dist/src/ui/hooks/useMemoryMonitor.js.map +1 -1
  401. package/dist/src/ui/hooks/useMessageQueue.js.map +1 -1
  402. package/dist/src/ui/hooks/useMouse.js.map +1 -1
  403. package/dist/src/ui/hooks/useMouseClick.d.ts +1 -1
  404. package/dist/src/ui/hooks/useMouseClick.js.map +1 -1
  405. package/dist/src/ui/hooks/usePermissionsModifyTrust.d.ts +1 -1
  406. package/dist/src/ui/hooks/usePermissionsModifyTrust.js.map +1 -1
  407. package/dist/src/ui/hooks/usePhraseCycler.js.map +1 -1
  408. package/dist/src/ui/hooks/usePrivacySettings.js.map +1 -1
  409. package/dist/src/ui/hooks/usePromptCompletion.js.map +1 -1
  410. package/dist/src/ui/hooks/useQuotaAndFallback.js.map +1 -1
  411. package/dist/src/ui/hooks/useRegistrySearch.js.map +1 -1
  412. package/dist/src/ui/hooks/useRepeatedKeyPress.js.map +1 -1
  413. package/dist/src/ui/hooks/useReverseSearchCompletion.js.map +1 -1
  414. package/dist/src/ui/hooks/useRewind.js.map +1 -1
  415. package/dist/src/ui/hooks/useRunEventNotifications.js +1 -1
  416. package/dist/src/ui/hooks/useRunEventNotifications.js.map +1 -1
  417. package/dist/src/ui/hooks/useSelectionList.js.map +1 -1
  418. package/dist/src/ui/hooks/useSessionBrowser.d.ts +1 -1
  419. package/dist/src/ui/hooks/useSessionBrowser.js.map +1 -1
  420. package/dist/src/ui/hooks/useSessionResume.d.ts +1 -1
  421. package/dist/src/ui/hooks/useSessionResume.js.map +1 -1
  422. package/dist/src/ui/hooks/useSettingsNavigation.js.map +1 -1
  423. package/dist/src/ui/hooks/useShellCompletion.js.map +1 -1
  424. package/dist/src/ui/hooks/useShellHistory.js.map +1 -1
  425. package/dist/src/ui/hooks/useShellInactivityStatus.js.map +1 -1
  426. package/dist/src/ui/hooks/useSlashCompletion.js.map +1 -1
  427. package/dist/src/ui/hooks/useSnowfall.js.map +1 -1
  428. package/dist/src/ui/hooks/useStateAndRef.d.ts +1 -1
  429. package/dist/src/ui/hooks/useStateAndRef.js.map +1 -1
  430. package/dist/src/ui/hooks/useSuspend.js.map +1 -1
  431. package/dist/src/ui/hooks/useTabbedNavigation.js.map +1 -1
  432. package/dist/src/ui/hooks/useTerminalTheme.js.map +1 -1
  433. package/dist/src/ui/hooks/useThemeCommand.d.ts +1 -1
  434. package/dist/src/ui/hooks/useThemeCommand.js.map +1 -1
  435. package/dist/src/ui/hooks/useTimedMessage.js.map +1 -1
  436. package/dist/src/ui/hooks/useTimer.js.map +1 -1
  437. package/dist/src/ui/hooks/useTips.js.map +1 -1
  438. package/dist/src/ui/hooks/useToolScheduler.d.ts +1 -0
  439. package/dist/src/ui/hooks/useToolScheduler.js.map +1 -1
  440. package/dist/src/ui/hooks/useTurnActivityMonitor.js.map +1 -1
  441. package/dist/src/ui/hooks/useVisibilityToggle.js.map +1 -1
  442. package/dist/src/ui/hooks/useVoiceMode.js.map +1 -1
  443. package/dist/src/ui/hooks/vim.js.map +1 -1
  444. package/dist/src/ui/key/keyBindings.js +5 -4
  445. package/dist/src/ui/key/keyBindings.js.map +1 -1
  446. package/dist/src/ui/key/keyMatchers.js.map +1 -1
  447. package/dist/src/ui/key/keyToAnsi.js.map +1 -1
  448. package/dist/src/ui/key/keybindingUtils.js.map +1 -1
  449. package/dist/src/ui/noninteractive/nonInteractiveUi.js.map +1 -1
  450. package/dist/src/ui/privacy/CloudFreePrivacyNotice.d.ts +1 -1
  451. package/dist/src/ui/privacy/CloudFreePrivacyNotice.js.map +1 -1
  452. package/dist/src/ui/privacy/CloudPaidPrivacyNotice.d.ts +1 -1
  453. package/dist/src/ui/privacy/CloudPaidPrivacyNotice.js.map +1 -1
  454. package/dist/src/ui/privacy/GeminiPrivacyNotice.d.ts +1 -1
  455. package/dist/src/ui/privacy/GeminiPrivacyNotice.js.map +1 -1
  456. package/dist/src/ui/privacy/PrivacyNotice.d.ts +1 -1
  457. package/dist/src/ui/privacy/PrivacyNotice.js.map +1 -1
  458. package/dist/src/ui/state/extensions.js +1 -1
  459. package/dist/src/ui/state/extensions.js.map +1 -1
  460. package/dist/src/ui/themes/builtin/dark/ansi-dark.js +1 -1
  461. package/dist/src/ui/themes/builtin/dark/ansi-dark.js.map +1 -1
  462. package/dist/src/ui/themes/builtin/dark/holiday-dark.js +1 -1
  463. package/dist/src/ui/themes/builtin/dark/holiday-dark.js.map +1 -1
  464. package/dist/src/ui/themes/builtin/dark/shades-of-purple-dark.js +17 -17
  465. package/dist/src/ui/themes/builtin/dark/shades-of-purple-dark.js.map +1 -1
  466. package/dist/src/ui/themes/builtin/light/github-light.js +1 -1
  467. package/dist/src/ui/themes/builtin/light/github-light.js.map +1 -1
  468. package/dist/src/ui/themes/builtin/light/xcode-light.js +1 -1
  469. package/dist/src/ui/themes/builtin/light/xcode-light.js.map +1 -1
  470. package/dist/src/ui/themes/color-utils.js.map +1 -1
  471. package/dist/src/ui/themes/theme-manager.d.ts +1 -0
  472. package/dist/src/ui/themes/theme-manager.js.map +1 -1
  473. package/dist/src/ui/themes/theme.js.map +1 -1
  474. package/dist/src/ui/types.js +5 -5
  475. package/dist/src/ui/types.js.map +1 -1
  476. package/dist/src/ui/utils/CodeColorizer.js.map +1 -1
  477. package/dist/src/ui/utils/ConsolePatcher.js.map +1 -1
  478. package/dist/src/ui/utils/MarkdownDisplay.js.map +1 -1
  479. package/dist/src/ui/utils/TableRenderer.js.map +1 -1
  480. package/dist/src/ui/utils/antigravityUtils.js.map +1 -1
  481. package/dist/src/ui/utils/borderStyles.js.map +1 -1
  482. package/dist/src/ui/utils/clipboardUtils.js.map +1 -1
  483. package/dist/src/ui/utils/commandUtils.js +2 -2
  484. package/dist/src/ui/utils/commandUtils.js.map +1 -1
  485. package/dist/src/ui/utils/computeStats.js.map +1 -1
  486. package/dist/src/ui/utils/confirmingTool.js.map +1 -1
  487. package/dist/src/ui/utils/contextUsage.js.map +1 -1
  488. package/dist/src/ui/utils/directoryUtils.js.map +1 -1
  489. package/dist/src/ui/utils/displayUtils.js.map +1 -1
  490. package/dist/src/ui/utils/editorUtils.d.ts +1 -0
  491. package/dist/src/ui/utils/editorUtils.js.map +1 -1
  492. package/dist/src/ui/utils/formatters.d.ts +1 -1
  493. package/dist/src/ui/utils/formatters.js.map +1 -1
  494. package/dist/src/ui/utils/highlight.js.map +1 -1
  495. package/dist/src/ui/utils/historyExportUtils.js.map +1 -1
  496. package/dist/src/ui/utils/historyUtils.js +1 -1
  497. package/dist/src/ui/utils/historyUtils.js.map +1 -1
  498. package/dist/src/ui/utils/input.d.ts +2 -2
  499. package/dist/src/ui/utils/latexToUnicode.js.map +1 -1
  500. package/dist/src/ui/utils/markdownParsingUtils.js.map +1 -1
  501. package/dist/src/ui/utils/markdownUtilities.js.map +1 -1
  502. package/dist/src/ui/utils/mouse.js.map +1 -1
  503. package/dist/src/ui/utils/pendingAttentionNotification.js.map +1 -1
  504. package/dist/src/ui/utils/rewindFileOps.js.map +1 -1
  505. package/dist/src/ui/utils/terminalCapabilityManager.d.ts +1 -0
  506. package/dist/src/ui/utils/terminalCapabilityManager.js +2 -1
  507. package/dist/src/ui/utils/terminalCapabilityManager.js.map +1 -1
  508. package/dist/src/ui/utils/terminalSetup.js.map +1 -1
  509. package/dist/src/ui/utils/terminalUtils.js.map +1 -1
  510. package/dist/src/ui/utils/textOutput.d.ts +1 -0
  511. package/dist/src/ui/utils/textOutput.js.map +1 -1
  512. package/dist/src/ui/utils/textUtils.js.map +1 -1
  513. package/dist/src/ui/utils/toolLayoutUtils.js.map +1 -1
  514. package/dist/src/ui/utils/ui-sizing.js.map +1 -1
  515. package/dist/src/ui/utils/updateCheck.js.map +1 -1
  516. package/dist/src/ui/utils/urlSecurityUtils.js.map +1 -1
  517. package/dist/src/utils/activityLogger.d.ts +1 -0
  518. package/dist/src/utils/activityLogger.js.map +1 -1
  519. package/dist/src/utils/agentUtils.js.map +1 -1
  520. package/dist/src/utils/autoMemory.js.map +1 -1
  521. package/dist/src/utils/cleanup.js.map +1 -1
  522. package/dist/src/utils/commands.js.map +1 -1
  523. package/dist/src/utils/commentJson.js.map +1 -1
  524. package/dist/src/utils/deepMerge.js.map +1 -1
  525. package/dist/src/utils/devtoolsService.js +1 -1
  526. package/dist/src/utils/devtoolsService.js.map +1 -1
  527. package/dist/src/utils/dialogScopeUtils.js.map +1 -1
  528. package/dist/src/utils/envVarResolver.js.map +1 -1
  529. package/dist/src/utils/errors.js.map +1 -1
  530. package/dist/src/utils/events.d.ts +1 -0
  531. package/dist/src/utils/events.js +2 -2
  532. package/dist/src/utils/events.js.map +1 -1
  533. package/dist/src/utils/featureToggleUtils.js.map +1 -1
  534. package/dist/src/utils/gitUtils.js +1 -1
  535. package/dist/src/utils/gitUtils.js.map +1 -1
  536. package/dist/src/utils/handleAutoUpdate.d.ts +1 -0
  537. package/dist/src/utils/handleAutoUpdate.js.map +1 -1
  538. package/dist/src/utils/hookSettings.js.map +1 -1
  539. package/dist/src/utils/hookUtils.js.map +1 -1
  540. package/dist/src/utils/installationInfo.js +2 -2
  541. package/dist/src/utils/installationInfo.js.map +1 -1
  542. package/dist/src/utils/jsonoutput.js.map +1 -1
  543. package/dist/src/utils/logCleanup.js.map +1 -1
  544. package/dist/src/utils/persistentState.js.map +1 -1
  545. package/dist/src/utils/processUtils.d.ts +1 -0
  546. package/dist/src/utils/processUtils.js.map +1 -1
  547. package/dist/src/utils/readStdin.js.map +1 -1
  548. package/dist/src/utils/relaunch.js.map +1 -1
  549. package/dist/src/utils/resize-observer-polyfill.d.ts +2 -0
  550. package/dist/src/utils/resize-observer-polyfill.js +7 -0
  551. package/dist/src/utils/resize-observer-polyfill.js.map +1 -0
  552. package/dist/src/utils/resolvePath.js.map +1 -1
  553. package/dist/src/utils/sandbox.js +1 -1
  554. package/dist/src/utils/sandbox.js.map +1 -1
  555. package/dist/src/utils/sandboxUtils.js.map +1 -1
  556. package/dist/src/utils/sessionCleanup.js +3 -3
  557. package/dist/src/utils/sessionCleanup.js.map +1 -1
  558. package/dist/src/utils/sessionUtils.d.ts +1 -1
  559. package/dist/src/utils/sessionUtils.js +1 -1
  560. package/dist/src/utils/sessionUtils.js.map +1 -1
  561. package/dist/src/utils/sessions.js.map +1 -1
  562. package/dist/src/utils/settingsUtils.js.map +1 -1
  563. package/dist/src/utils/skillUtils.js.map +1 -1
  564. package/dist/src/utils/spawnWrapper.d.ts +1 -0
  565. package/dist/src/utils/startupWarnings.js.map +1 -1
  566. package/dist/src/utils/terminalNotifications.js +1 -1
  567. package/dist/src/utils/terminalNotifications.js.map +1 -1
  568. package/dist/src/utils/terminalTheme.js.map +1 -1
  569. package/dist/src/utils/updateEventEmitter.d.ts +1 -0
  570. package/dist/src/utils/userStartupWarnings.js.map +1 -1
  571. package/dist/src/utils/windowTitle.js.map +1 -1
  572. package/dist/src/utils/worktreeSetup.js.map +1 -1
  573. package/dist/src/validateNonInterActiveAuth.js.map +1 -1
  574. package/dist/tsconfig.tsbuildinfo +1 -1
  575. package/package.json +17 -14
  576. package/dist/src/acp/acpCommandHandler.test.d.ts +0 -6
  577. package/dist/src/acp/acpCommandHandler.test.js +0 -28
  578. package/dist/src/acp/acpCommandHandler.test.js.map +0 -1
  579. package/dist/src/acp/acpErrors.test.d.ts +0 -6
  580. package/dist/src/acp/acpErrors.test.js +0 -38
  581. package/dist/src/acp/acpErrors.test.js.map +0 -1
  582. package/dist/src/acp/acpFileSystemService.test.d.ts +0 -6
  583. package/dist/src/acp/acpFileSystemService.test.js +0 -162
  584. package/dist/src/acp/acpFileSystemService.test.js.map +0 -1
  585. package/dist/src/acp/acpResume.test.d.ts +0 -6
  586. package/dist/src/acp/acpResume.test.js +0 -260
  587. package/dist/src/acp/acpResume.test.js.map +0 -1
  588. package/dist/src/acp/acpRpcDispatcher.test.d.ts +0 -6
  589. package/dist/src/acp/acpRpcDispatcher.test.js +0 -238
  590. package/dist/src/acp/acpRpcDispatcher.test.js.map +0 -1
  591. package/dist/src/acp/acpSession.test.d.ts +0 -6
  592. package/dist/src/acp/acpSession.test.js +0 -742
  593. package/dist/src/acp/acpSession.test.js.map +0 -1
  594. package/dist/src/acp/acpSessionManager.test.d.ts +0 -6
  595. package/dist/src/acp/acpSessionManager.test.js +0 -283
  596. package/dist/src/acp/acpSessionManager.test.js.map +0 -1
  597. package/dist/src/acp/commands/extensions.test.d.ts +0 -6
  598. package/dist/src/acp/commands/extensions.test.js +0 -70
  599. package/dist/src/acp/commands/extensions.test.js.map +0 -1
  600. package/dist/src/acp/commands/help.test.d.ts +0 -6
  601. package/dist/src/acp/commands/help.test.js +0 -40
  602. package/dist/src/acp/commands/help.test.js.map +0 -1
  603. package/dist/src/acp/commands/restore.test.d.ts +0 -6
  604. package/dist/src/acp/commands/restore.test.js +0 -173
  605. package/dist/src/acp/commands/restore.test.js.map +0 -1
  606. package/dist/src/commands/extensions/configure.test.d.ts +0 -1
  607. package/dist/src/commands/extensions/configure.test.js +0 -195
  608. package/dist/src/commands/extensions/configure.test.js.map +0 -1
  609. package/dist/src/commands/extensions/disable.test.d.ts +0 -6
  610. package/dist/src/commands/extensions/disable.test.js +0 -169
  611. package/dist/src/commands/extensions/disable.test.js.map +0 -1
  612. package/dist/src/commands/extensions/enable.test.d.ts +0 -6
  613. package/dist/src/commands/extensions/enable.test.js +0 -199
  614. package/dist/src/commands/extensions/enable.test.js.map +0 -1
  615. package/dist/src/commands/extensions/install.test.d.ts +0 -6
  616. package/dist/src/commands/extensions/install.test.js +0 -311
  617. package/dist/src/commands/extensions/install.test.js.map +0 -1
  618. package/dist/src/commands/extensions/link.test.d.ts +0 -6
  619. package/dist/src/commands/extensions/link.test.js +0 -121
  620. package/dist/src/commands/extensions/link.test.js.map +0 -1
  621. package/dist/src/commands/extensions/list.test.d.ts +0 -6
  622. package/dist/src/commands/extensions/list.test.js +0 -132
  623. package/dist/src/commands/extensions/list.test.js.map +0 -1
  624. package/dist/src/commands/extensions/new.test.d.ts +0 -6
  625. package/dist/src/commands/extensions/new.test.js +0 -62
  626. package/dist/src/commands/extensions/new.test.js.map +0 -1
  627. package/dist/src/commands/extensions/uninstall.test.d.ts +0 -6
  628. package/dist/src/commands/extensions/uninstall.test.js +0 -240
  629. package/dist/src/commands/extensions/uninstall.test.js.map +0 -1
  630. package/dist/src/commands/extensions/update.test.d.ts +0 -6
  631. package/dist/src/commands/extensions/update.test.js +0 -196
  632. package/dist/src/commands/extensions/update.test.js.map +0 -1
  633. package/dist/src/commands/extensions/validate.test.d.ts +0 -6
  634. package/dist/src/commands/extensions/validate.test.js +0 -96
  635. package/dist/src/commands/extensions/validate.test.js.map +0 -1
  636. package/dist/src/commands/extensions.test.d.ts +0 -6
  637. package/dist/src/commands/extensions.test.js +0 -67
  638. package/dist/src/commands/extensions.test.js.map +0 -1
  639. package/dist/src/commands/gemma/logs.test.d.ts +0 -6
  640. package/dist/src/commands/gemma/logs.test.js +0 -122
  641. package/dist/src/commands/gemma/logs.test.js.map +0 -1
  642. package/dist/src/commands/gemma/platform.test.d.ts +0 -6
  643. package/dist/src/commands/gemma/platform.test.js +0 -108
  644. package/dist/src/commands/gemma/platform.test.js.map +0 -1
  645. package/dist/src/commands/gemma/setup.test.d.ts +0 -6
  646. package/dist/src/commands/gemma/setup.test.js +0 -36
  647. package/dist/src/commands/gemma/setup.test.js.map +0 -1
  648. package/dist/src/commands/gemma/stop.test.d.ts +0 -6
  649. package/dist/src/commands/gemma/stop.test.js +0 -89
  650. package/dist/src/commands/gemma/stop.test.js.map +0 -1
  651. package/dist/src/commands/hooks/migrate.test.d.ts +0 -6
  652. package/dist/src/commands/hooks/migrate.test.js +0 -388
  653. package/dist/src/commands/hooks/migrate.test.js.map +0 -1
  654. package/dist/src/commands/mcp/add.test.d.ts +0 -6
  655. package/dist/src/commands/mcp/add.test.js +0 -274
  656. package/dist/src/commands/mcp/add.test.js.map +0 -1
  657. package/dist/src/commands/mcp/list.test.d.ts +0 -6
  658. package/dist/src/commands/mcp/list.test.js +0 -477
  659. package/dist/src/commands/mcp/list.test.js.map +0 -1
  660. package/dist/src/commands/mcp/remove.test.d.ts +0 -6
  661. package/dist/src/commands/mcp/remove.test.js +0 -206
  662. package/dist/src/commands/mcp/remove.test.js.map +0 -1
  663. package/dist/src/commands/mcp.test.d.ts +0 -6
  664. package/dist/src/commands/mcp.test.js +0 -64
  665. package/dist/src/commands/mcp.test.js.map +0 -1
  666. package/dist/src/commands/skills/disable.test.d.ts +0 -6
  667. package/dist/src/commands/skills/disable.test.js +0 -93
  668. package/dist/src/commands/skills/disable.test.js.map +0 -1
  669. package/dist/src/commands/skills/enable.test.d.ts +0 -6
  670. package/dist/src/commands/skills/enable.test.js +0 -104
  671. package/dist/src/commands/skills/enable.test.js.map +0 -1
  672. package/dist/src/commands/skills/install.test.d.ts +0 -6
  673. package/dist/src/commands/skills/install.test.js +0 -99
  674. package/dist/src/commands/skills/install.test.js.map +0 -1
  675. package/dist/src/commands/skills/link.test.d.ts +0 -6
  676. package/dist/src/commands/skills/link.test.js +0 -53
  677. package/dist/src/commands/skills/link.test.js.map +0 -1
  678. package/dist/src/commands/skills/list.test.d.ts +0 -6
  679. package/dist/src/commands/skills/list.test.js +0 -127
  680. package/dist/src/commands/skills/list.test.js.map +0 -1
  681. package/dist/src/commands/skills/uninstall.test.d.ts +0 -6
  682. package/dist/src/commands/skills/uninstall.test.js +0 -65
  683. package/dist/src/commands/skills/uninstall.test.js.map +0 -1
  684. package/dist/src/commands/skills.test.d.ts +0 -6
  685. package/dist/src/commands/skills.test.js +0 -49
  686. package/dist/src/commands/skills.test.js.map +0 -1
  687. package/dist/src/commands/utils.test.d.ts +0 -6
  688. package/dist/src/commands/utils.test.js +0 -35
  689. package/dist/src/commands/utils.test.js.map +0 -1
  690. package/dist/src/config/auth.test.d.ts +0 -6
  691. package/dist/src/config/auth.test.js +0 -96
  692. package/dist/src/config/auth.test.js.map +0 -1
  693. package/dist/src/config/config.integration.test.d.ts +0 -6
  694. package/dist/src/config/config.integration.test.js +0 -205
  695. package/dist/src/config/config.integration.test.js.map +0 -1
  696. package/dist/src/config/config.test.d.ts +0 -6
  697. package/dist/src/config/config.test.js +0 -3124
  698. package/dist/src/config/config.test.js.map +0 -1
  699. package/dist/src/config/extension-manager-agents.test.d.ts +0 -6
  700. package/dist/src/config/extension-manager-agents.test.js +0 -116
  701. package/dist/src/config/extension-manager-agents.test.js.map +0 -1
  702. package/dist/src/config/extension-manager-hydration.test.d.ts +0 -6
  703. package/dist/src/config/extension-manager-hydration.test.js +0 -262
  704. package/dist/src/config/extension-manager-hydration.test.js.map +0 -1
  705. package/dist/src/config/extension-manager-permissions.test.d.ts +0 -6
  706. package/dist/src/config/extension-manager-permissions.test.js +0 -107
  707. package/dist/src/config/extension-manager-permissions.test.js.map +0 -1
  708. package/dist/src/config/extension-manager-scope.test.d.ts +0 -6
  709. package/dist/src/config/extension-manager-scope.test.js +0 -158
  710. package/dist/src/config/extension-manager-scope.test.js.map +0 -1
  711. package/dist/src/config/extension-manager-skills.test.d.ts +0 -6
  712. package/dist/src/config/extension-manager-skills.test.js +0 -157
  713. package/dist/src/config/extension-manager-skills.test.js.map +0 -1
  714. package/dist/src/config/extension-manager.test.d.ts +0 -6
  715. package/dist/src/config/extension-manager.test.js +0 -430
  716. package/dist/src/config/extension-manager.test.js.map +0 -1
  717. package/dist/src/config/extension.test.d.ts +0 -6
  718. package/dist/src/config/extension.test.js +0 -1800
  719. package/dist/src/config/extension.test.js.map +0 -1
  720. package/dist/src/config/extensionRegistryClient.test.d.ts +0 -6
  721. package/dist/src/config/extensionRegistryClient.test.js +0 -261
  722. package/dist/src/config/extensionRegistryClient.test.js.map +0 -1
  723. package/dist/src/config/extensions/consent.test.d.ts +0 -6
  724. package/dist/src/config/extensions/consent.test.js +0 -302
  725. package/dist/src/config/extensions/consent.test.js.map +0 -1
  726. package/dist/src/config/extensions/extensionEnablement.test.d.ts +0 -6
  727. package/dist/src/config/extensions/extensionEnablement.test.js +0 -404
  728. package/dist/src/config/extensions/extensionEnablement.test.js.map +0 -1
  729. package/dist/src/config/extensions/extensionSettings.test.d.ts +0 -6
  730. package/dist/src/config/extensions/extensionSettings.test.js +0 -575
  731. package/dist/src/config/extensions/extensionSettings.test.js.map +0 -1
  732. package/dist/src/config/extensions/extensionUpdates.test.d.ts +0 -6
  733. package/dist/src/config/extensions/extensionUpdates.test.js +0 -265
  734. package/dist/src/config/extensions/extensionUpdates.test.js.map +0 -1
  735. package/dist/src/config/extensions/github.test.d.ts +0 -6
  736. package/dist/src/config/extensions/github.test.js +0 -454
  737. package/dist/src/config/extensions/github.test.js.map +0 -1
  738. package/dist/src/config/extensions/github_fetch.test.d.ts +0 -6
  739. package/dist/src/config/extensions/github_fetch.test.js +0 -171
  740. package/dist/src/config/extensions/github_fetch.test.js.map +0 -1
  741. package/dist/src/config/extensions/storage.test.d.ts +0 -6
  742. package/dist/src/config/extensions/storage.test.js +0 -64
  743. package/dist/src/config/extensions/storage.test.js.map +0 -1
  744. package/dist/src/config/extensions/update.test.d.ts +0 -6
  745. package/dist/src/config/extensions/update.test.js +0 -296
  746. package/dist/src/config/extensions/update.test.js.map +0 -1
  747. package/dist/src/config/extensions/variables.test.d.ts +0 -6
  748. package/dist/src/config/extensions/variables.test.js +0 -119
  749. package/dist/src/config/extensions/variables.test.js.map +0 -1
  750. package/dist/src/config/footerItems.test.d.ts +0 -6
  751. package/dist/src/config/footerItems.test.js +0 -180
  752. package/dist/src/config/footerItems.test.js.map +0 -1
  753. package/dist/src/config/mcp/mcpServerEnablement.test.d.ts +0 -6
  754. package/dist/src/config/mcp/mcpServerEnablement.test.js +0 -148
  755. package/dist/src/config/mcp/mcpServerEnablement.test.js.map +0 -1
  756. package/dist/src/config/mutual-exclusivity.test.d.ts +0 -6
  757. package/dist/src/config/mutual-exclusivity.test.js +0 -33
  758. package/dist/src/config/mutual-exclusivity.test.js.map +0 -1
  759. package/dist/src/config/policy-engine.integration.test.d.ts +0 -6
  760. package/dist/src/config/policy-engine.integration.test.js +0 -394
  761. package/dist/src/config/policy-engine.integration.test.js.map +0 -1
  762. package/dist/src/config/policy.test.d.ts +0 -6
  763. package/dist/src/config/policy.test.js +0 -199
  764. package/dist/src/config/policy.test.js.map +0 -1
  765. package/dist/src/config/sandboxConfig.test.d.ts +0 -6
  766. package/dist/src/config/sandboxConfig.test.js +0 -401
  767. package/dist/src/config/sandboxConfig.test.js.map +0 -1
  768. package/dist/src/config/settingPaths.test.d.ts +0 -6
  769. package/dist/src/config/settingPaths.test.js +0 -22
  770. package/dist/src/config/settingPaths.test.js.map +0 -1
  771. package/dist/src/config/settings-env-isolation.test.d.ts +0 -6
  772. package/dist/src/config/settings-env-isolation.test.js +0 -188
  773. package/dist/src/config/settings-env-isolation.test.js.map +0 -1
  774. package/dist/src/config/settings-validation.test.d.ts +0 -6
  775. package/dist/src/config/settings-validation.test.js +0 -464
  776. package/dist/src/config/settings-validation.test.js.map +0 -1
  777. package/dist/src/config/settings.test.d.ts +0 -6
  778. package/dist/src/config/settings.test.js +0 -2660
  779. package/dist/src/config/settings.test.js.map +0 -1
  780. package/dist/src/config/settingsSchema.test.d.ts +0 -6
  781. package/dist/src/config/settingsSchema.test.js +0 -450
  782. package/dist/src/config/settingsSchema.test.js.map +0 -1
  783. package/dist/src/config/settings_repro.test.d.ts +0 -6
  784. package/dist/src/config/settings_repro.test.js +0 -163
  785. package/dist/src/config/settings_repro.test.js.map +0 -1
  786. package/dist/src/config/settings_validation_warning.test.d.ts +0 -6
  787. package/dist/src/config/settings_validation_warning.test.js +0 -124
  788. package/dist/src/config/settings_validation_warning.test.js.map +0 -1
  789. package/dist/src/config/skipExtensions.test.d.ts +0 -6
  790. package/dist/src/config/skipExtensions.test.js +0 -49
  791. package/dist/src/config/skipExtensions.test.js.map +0 -1
  792. package/dist/src/config/trustedFolders.test.d.ts +0 -6
  793. package/dist/src/config/trustedFolders.test.js +0 -411
  794. package/dist/src/config/trustedFolders.test.js.map +0 -1
  795. package/dist/src/config/workspace-policy-cli.test.d.ts +0 -6
  796. package/dist/src/config/workspace-policy-cli.test.js +0 -204
  797. package/dist/src/config/workspace-policy-cli.test.js.map +0 -1
  798. package/dist/src/core/auth.test.d.ts +0 -6
  799. package/dist/src/core/auth.test.js +0 -93
  800. package/dist/src/core/auth.test.js.map +0 -1
  801. package/dist/src/core/initializer.test.d.ts +0 -6
  802. package/dist/src/core/initializer.test.js +0 -111
  803. package/dist/src/core/initializer.test.js.map +0 -1
  804. package/dist/src/core/theme.test.d.ts +0 -6
  805. package/dist/src/core/theme.test.js +0 -46
  806. package/dist/src/core/theme.test.js.map +0 -1
  807. package/dist/src/deferred.test.d.ts +0 -6
  808. package/dist/src/deferred.test.js +0 -180
  809. package/dist/src/deferred.test.js.map +0 -1
  810. package/dist/src/gemini.test.d.ts +0 -6
  811. package/dist/src/gemini.test.js +0 -1432
  812. package/dist/src/gemini.test.js.map +0 -1
  813. package/dist/src/gemini_cleanup.test.d.ts +0 -6
  814. package/dist/src/gemini_cleanup.test.js +0 -391
  815. package/dist/src/gemini_cleanup.test.js.map +0 -1
  816. package/dist/src/integration-tests/modelSteering.test.d.ts +0 -6
  817. package/dist/src/integration-tests/modelSteering.test.js +0 -62
  818. package/dist/src/integration-tests/modelSteering.test.js.map +0 -1
  819. package/dist/src/nonInteractiveCli.test.d.ts +0 -6
  820. package/dist/src/nonInteractiveCli.test.js +0 -1921
  821. package/dist/src/nonInteractiveCli.test.js.map +0 -1
  822. package/dist/src/nonInteractiveCliAgentSession.test.d.ts +0 -6
  823. package/dist/src/nonInteractiveCliAgentSession.test.js +0 -2015
  824. package/dist/src/nonInteractiveCliAgentSession.test.js.map +0 -1
  825. package/dist/src/output-redirection.test.d.ts +0 -6
  826. package/dist/src/output-redirection.test.js +0 -77
  827. package/dist/src/output-redirection.test.js.map +0 -1
  828. package/dist/src/services/BuiltinCommandLoader.test.d.ts +0 -6
  829. package/dist/src/services/BuiltinCommandLoader.test.js +0 -369
  830. package/dist/src/services/BuiltinCommandLoader.test.js.map +0 -1
  831. package/dist/src/services/CommandService.test.d.ts +0 -6
  832. package/dist/src/services/CommandService.test.js +0 -74
  833. package/dist/src/services/CommandService.test.js.map +0 -1
  834. package/dist/src/services/FileCommandLoader.test.d.ts +0 -6
  835. package/dist/src/services/FileCommandLoader.test.js +0 -1128
  836. package/dist/src/services/FileCommandLoader.test.js.map +0 -1
  837. package/dist/src/services/McpPromptLoader.test.d.ts +0 -6
  838. package/dist/src/services/McpPromptLoader.test.js +0 -411
  839. package/dist/src/services/McpPromptLoader.test.js.map +0 -1
  840. package/dist/src/services/SkillCommandLoader.test.d.ts +0 -6
  841. package/dist/src/services/SkillCommandLoader.test.js +0 -113
  842. package/dist/src/services/SkillCommandLoader.test.js.map +0 -1
  843. package/dist/src/services/SlashCommandConflictHandler.test.d.ts +0 -6
  844. package/dist/src/services/SlashCommandConflictHandler.test.js +0 -144
  845. package/dist/src/services/SlashCommandConflictHandler.test.js.map +0 -1
  846. package/dist/src/services/SlashCommandResolver.test.d.ts +0 -6
  847. package/dist/src/services/SlashCommandResolver.test.js +0 -186
  848. package/dist/src/services/SlashCommandResolver.test.js.map +0 -1
  849. package/dist/src/services/liteRtServerManager.test.d.ts +0 -6
  850. package/dist/src/services/liteRtServerManager.test.js +0 -54
  851. package/dist/src/services/liteRtServerManager.test.js.map +0 -1
  852. package/dist/src/services/prompt-processors/argumentProcessor.test.d.ts +0 -6
  853. package/dist/src/services/prompt-processors/argumentProcessor.test.js +0 -40
  854. package/dist/src/services/prompt-processors/argumentProcessor.test.js.map +0 -1
  855. package/dist/src/services/prompt-processors/atFileProcessor.test.d.ts +0 -6
  856. package/dist/src/services/prompt-processors/atFileProcessor.test.js +0 -177
  857. package/dist/src/services/prompt-processors/atFileProcessor.test.js.map +0 -1
  858. package/dist/src/services/prompt-processors/injectionParser.test.d.ts +0 -6
  859. package/dist/src/services/prompt-processors/injectionParser.test.js +0 -189
  860. package/dist/src/services/prompt-processors/injectionParser.test.js.map +0 -1
  861. package/dist/src/services/prompt-processors/shellProcessor.test.d.ts +0 -6
  862. package/dist/src/services/prompt-processors/shellProcessor.test.js +0 -525
  863. package/dist/src/services/prompt-processors/shellProcessor.test.js.map +0 -1
  864. package/dist/src/test-utils/AppRig.test.d.ts +0 -6
  865. package/dist/src/test-utils/AppRig.test.js +0 -60
  866. package/dist/src/test-utils/AppRig.test.js.map +0 -1
  867. package/dist/src/test-utils/mockCommandContext.test.d.ts +0 -6
  868. package/dist/src/test-utils/mockCommandContext.test.js +0 -51
  869. package/dist/src/test-utils/mockCommandContext.test.js.map +0 -1
  870. package/dist/src/test-utils/render.test.d.ts +0 -6
  871. package/dist/src/test-utils/render.test.js +0 -84
  872. package/dist/src/test-utils/render.test.js.map +0 -1
  873. package/dist/src/ui/App.test.d.ts +0 -6
  874. package/dist/src/ui/App.test.js +0 -244
  875. package/dist/src/ui/App.test.js.map +0 -1
  876. package/dist/src/ui/AppContainer.test.d.ts +0 -6
  877. package/dist/src/ui/AppContainer.test.js +0 -2824
  878. package/dist/src/ui/AppContainer.test.js.map +0 -1
  879. package/dist/src/ui/IdeIntegrationNudge.test.d.ts +0 -6
  880. package/dist/src/ui/IdeIntegrationNudge.test.js +0 -149
  881. package/dist/src/ui/IdeIntegrationNudge.test.js.map +0 -1
  882. package/dist/src/ui/ToolConfirmationFullFrame.test.d.ts +0 -1
  883. package/dist/src/ui/ToolConfirmationFullFrame.test.js +0 -153
  884. package/dist/src/ui/ToolConfirmationFullFrame.test.js.map +0 -1
  885. package/dist/src/ui/auth/ApiAuthDialog.test.d.ts +0 -6
  886. package/dist/src/ui/auth/ApiAuthDialog.test.js +0 -127
  887. package/dist/src/ui/auth/ApiAuthDialog.test.js.map +0 -1
  888. package/dist/src/ui/auth/AuthDialog.test.d.ts +0 -6
  889. package/dist/src/ui/auth/AuthDialog.test.js +0 -350
  890. package/dist/src/ui/auth/AuthDialog.test.js.map +0 -1
  891. package/dist/src/ui/auth/AuthInProgress.test.d.ts +0 -6
  892. package/dist/src/ui/auth/AuthInProgress.test.js +0 -99
  893. package/dist/src/ui/auth/AuthInProgress.test.js.map +0 -1
  894. package/dist/src/ui/auth/BannedAccountDialog.test.d.ts +0 -6
  895. package/dist/src/ui/auth/BannedAccountDialog.test.js +0 -141
  896. package/dist/src/ui/auth/BannedAccountDialog.test.js.map +0 -1
  897. package/dist/src/ui/auth/LoginRestartDialog.test.d.ts +0 -6
  898. package/dist/src/ui/auth/LoginRestartDialog.test.js +0 -79
  899. package/dist/src/ui/auth/LoginRestartDialog.test.js.map +0 -1
  900. package/dist/src/ui/auth/useAuth.test.d.ts +0 -6
  901. package/dist/src/ui/auth/useAuth.test.js +0 -214
  902. package/dist/src/ui/auth/useAuth.test.js.map +0 -1
  903. package/dist/src/ui/commands/aboutCommand.test.d.ts +0 -6
  904. package/dist/src/ui/commands/aboutCommand.test.js +0 -145
  905. package/dist/src/ui/commands/aboutCommand.test.js.map +0 -1
  906. package/dist/src/ui/commands/agentsCommand.test.d.ts +0 -6
  907. package/dist/src/ui/commands/agentsCommand.test.js +0 -382
  908. package/dist/src/ui/commands/agentsCommand.test.js.map +0 -1
  909. package/dist/src/ui/commands/authCommand.test.d.ts +0 -6
  910. package/dist/src/ui/commands/authCommand.test.js +0 -103
  911. package/dist/src/ui/commands/authCommand.test.js.map +0 -1
  912. package/dist/src/ui/commands/bugCommand.test.d.ts +0 -6
  913. package/dist/src/ui/commands/bugCommand.test.js +0 -305
  914. package/dist/src/ui/commands/bugCommand.test.js.map +0 -1
  915. package/dist/src/ui/commands/bugMemoryCommand.test.d.ts +0 -6
  916. package/dist/src/ui/commands/bugMemoryCommand.test.js +0 -100
  917. package/dist/src/ui/commands/bugMemoryCommand.test.js.map +0 -1
  918. package/dist/src/ui/commands/chatCommand.test.d.ts +0 -6
  919. package/dist/src/ui/commands/chatCommand.test.js +0 -627
  920. package/dist/src/ui/commands/chatCommand.test.js.map +0 -1
  921. package/dist/src/ui/commands/clearCommand.test.d.ts +0 -6
  922. package/dist/src/ui/commands/clearCommand.test.js +0 -98
  923. package/dist/src/ui/commands/clearCommand.test.js.map +0 -1
  924. package/dist/src/ui/commands/commandsCommand.test.d.ts +0 -6
  925. package/dist/src/ui/commands/commandsCommand.test.js +0 -115
  926. package/dist/src/ui/commands/commandsCommand.test.js.map +0 -1
  927. package/dist/src/ui/commands/compressCommand.test.d.ts +0 -6
  928. package/dist/src/ui/commands/compressCommand.test.js +0 -110
  929. package/dist/src/ui/commands/compressCommand.test.js.map +0 -1
  930. package/dist/src/ui/commands/copyCommand.test.d.ts +0 -6
  931. package/dist/src/ui/commands/copyCommand.test.js +0 -244
  932. package/dist/src/ui/commands/copyCommand.test.js.map +0 -1
  933. package/dist/src/ui/commands/corgiCommand.test.d.ts +0 -6
  934. package/dist/src/ui/commands/corgiCommand.test.js +0 -28
  935. package/dist/src/ui/commands/corgiCommand.test.js.map +0 -1
  936. package/dist/src/ui/commands/directoryCommand.test.d.ts +0 -6
  937. package/dist/src/ui/commands/directoryCommand.test.js +0 -365
  938. package/dist/src/ui/commands/directoryCommand.test.js.map +0 -1
  939. package/dist/src/ui/commands/docsCommand.test.d.ts +0 -6
  940. package/dist/src/ui/commands/docsCommand.test.js +0 -72
  941. package/dist/src/ui/commands/docsCommand.test.js.map +0 -1
  942. package/dist/src/ui/commands/editorCommand.test.d.ts +0 -6
  943. package/dist/src/ui/commands/editorCommand.test.js +0 -27
  944. package/dist/src/ui/commands/editorCommand.test.js.map +0 -1
  945. package/dist/src/ui/commands/exportSessionCommand.test.d.ts +0 -6
  946. package/dist/src/ui/commands/exportSessionCommand.test.js +0 -100
  947. package/dist/src/ui/commands/exportSessionCommand.test.js.map +0 -1
  948. package/dist/src/ui/commands/extensionsCommand.test.d.ts +0 -6
  949. package/dist/src/ui/commands/extensionsCommand.test.js +0 -947
  950. package/dist/src/ui/commands/extensionsCommand.test.js.map +0 -1
  951. package/dist/src/ui/commands/helpCommand.test.d.ts +0 -6
  952. package/dist/src/ui/commands/helpCommand.test.js +0 -94
  953. package/dist/src/ui/commands/helpCommand.test.js.map +0 -1
  954. package/dist/src/ui/commands/hooksCommand.test.d.ts +0 -6
  955. package/dist/src/ui/commands/hooksCommand.test.js +0 -562
  956. package/dist/src/ui/commands/hooksCommand.test.js.map +0 -1
  957. package/dist/src/ui/commands/ideCommand.test.d.ts +0 -6
  958. package/dist/src/ui/commands/ideCommand.test.js +0 -205
  959. package/dist/src/ui/commands/ideCommand.test.js.map +0 -1
  960. package/dist/src/ui/commands/initCommand.test.d.ts +0 -6
  961. package/dist/src/ui/commands/initCommand.test.js +0 -86
  962. package/dist/src/ui/commands/initCommand.test.js.map +0 -1
  963. package/dist/src/ui/commands/mcpCommand.test.d.ts +0 -6
  964. package/dist/src/ui/commands/mcpCommand.test.js +0 -231
  965. package/dist/src/ui/commands/mcpCommand.test.js.map +0 -1
  966. package/dist/src/ui/commands/memoryCommand.test.d.ts +0 -6
  967. package/dist/src/ui/commands/memoryCommand.test.js +0 -361
  968. package/dist/src/ui/commands/memoryCommand.test.js.map +0 -1
  969. package/dist/src/ui/commands/modelCommand.test.d.ts +0 -6
  970. package/dist/src/ui/commands/modelCommand.test.js +0 -135
  971. package/dist/src/ui/commands/modelCommand.test.js.map +0 -1
  972. package/dist/src/ui/commands/permissionsCommand.test.d.ts +0 -6
  973. package/dist/src/ui/commands/permissionsCommand.test.js +0 -86
  974. package/dist/src/ui/commands/permissionsCommand.test.js.map +0 -1
  975. package/dist/src/ui/commands/planCommand.test.d.ts +0 -6
  976. package/dist/src/ui/commands/planCommand.test.js +0 -146
  977. package/dist/src/ui/commands/planCommand.test.js.map +0 -1
  978. package/dist/src/ui/commands/policiesCommand.test.d.ts +0 -6
  979. package/dist/src/ui/commands/policiesCommand.test.js +0 -133
  980. package/dist/src/ui/commands/policiesCommand.test.js.map +0 -1
  981. package/dist/src/ui/commands/privacyCommand.test.d.ts +0 -6
  982. package/dist/src/ui/commands/privacyCommand.test.js +0 -32
  983. package/dist/src/ui/commands/privacyCommand.test.js.map +0 -1
  984. package/dist/src/ui/commands/quitCommand.test.d.ts +0 -6
  985. package/dist/src/ui/commands/quitCommand.test.js +0 -95
  986. package/dist/src/ui/commands/quitCommand.test.js.map +0 -1
  987. package/dist/src/ui/commands/restoreCommand.test.d.ts +0 -6
  988. package/dist/src/ui/commands/restoreCommand.test.js +0 -193
  989. package/dist/src/ui/commands/restoreCommand.test.js.map +0 -1
  990. package/dist/src/ui/commands/resumeCommand.test.d.ts +0 -6
  991. package/dist/src/ui/commands/resumeCommand.test.js +0 -28
  992. package/dist/src/ui/commands/resumeCommand.test.js.map +0 -1
  993. package/dist/src/ui/commands/rewindCommand.test.d.ts +0 -6
  994. package/dist/src/ui/commands/rewindCommand.test.js +0 -256
  995. package/dist/src/ui/commands/rewindCommand.test.js.map +0 -1
  996. package/dist/src/ui/commands/settingsCommand.test.d.ts +0 -6
  997. package/dist/src/ui/commands/settingsCommand.test.js +0 -30
  998. package/dist/src/ui/commands/settingsCommand.test.js.map +0 -1
  999. package/dist/src/ui/commands/setupGithubCommand.test.d.ts +0 -6
  1000. package/dist/src/ui/commands/setupGithubCommand.test.js +0 -238
  1001. package/dist/src/ui/commands/setupGithubCommand.test.js.map +0 -1
  1002. package/dist/src/ui/commands/skillsCommand.test.d.ts +0 -6
  1003. package/dist/src/ui/commands/skillsCommand.test.js +0 -500
  1004. package/dist/src/ui/commands/skillsCommand.test.js.map +0 -1
  1005. package/dist/src/ui/commands/statsCommand.test.d.ts +0 -6
  1006. package/dist/src/ui/commands/statsCommand.test.js +0 -122
  1007. package/dist/src/ui/commands/statsCommand.test.js.map +0 -1
  1008. package/dist/src/ui/commands/tasksCommand.test.d.ts +0 -6
  1009. package/dist/src/ui/commands/tasksCommand.test.js +0 -30
  1010. package/dist/src/ui/commands/tasksCommand.test.js.map +0 -1
  1011. package/dist/src/ui/commands/terminalSetupCommand.test.d.ts +0 -6
  1012. package/dist/src/ui/commands/terminalSetupCommand.test.js +0 -66
  1013. package/dist/src/ui/commands/terminalSetupCommand.test.js.map +0 -1
  1014. package/dist/src/ui/commands/themeCommand.test.d.ts +0 -6
  1015. package/dist/src/ui/commands/themeCommand.test.js +0 -32
  1016. package/dist/src/ui/commands/themeCommand.test.js.map +0 -1
  1017. package/dist/src/ui/commands/toolsCommand.test.d.ts +0 -6
  1018. package/dist/src/ui/commands/toolsCommand.test.js +0 -187
  1019. package/dist/src/ui/commands/toolsCommand.test.js.map +0 -1
  1020. package/dist/src/ui/commands/upgradeCommand.test.d.ts +0 -6
  1021. package/dist/src/ui/commands/upgradeCommand.test.js +0 -102
  1022. package/dist/src/ui/commands/upgradeCommand.test.js.map +0 -1
  1023. package/dist/src/ui/components/AboutBox.test.d.ts +0 -6
  1024. package/dist/src/ui/components/AboutBox.test.js +0 -63
  1025. package/dist/src/ui/components/AboutBox.test.js.map +0 -1
  1026. package/dist/src/ui/components/AdminSettingsChangedDialog.test.d.ts +0 -6
  1027. package/dist/src/ui/components/AdminSettingsChangedDialog.test.js +0 -43
  1028. package/dist/src/ui/components/AdminSettingsChangedDialog.test.js.map +0 -1
  1029. package/dist/src/ui/components/AgentConfigDialog.test.d.ts +0 -6
  1030. package/dist/src/ui/components/AgentConfigDialog.test.js +0 -267
  1031. package/dist/src/ui/components/AgentConfigDialog.test.js.map +0 -1
  1032. package/dist/src/ui/components/AlternateBufferQuittingDisplay.test.d.ts +0 -6
  1033. package/dist/src/ui/components/AlternateBufferQuittingDisplay.test.js +0 -196
  1034. package/dist/src/ui/components/AlternateBufferQuittingDisplay.test.js.map +0 -1
  1035. package/dist/src/ui/components/AnsiOutput.test.d.ts +0 -6
  1036. package/dist/src/ui/components/AnsiOutput.test.js +0 -142
  1037. package/dist/src/ui/components/AnsiOutput.test.js.map +0 -1
  1038. package/dist/src/ui/components/AppHeader.test.d.ts +0 -6
  1039. package/dist/src/ui/components/AppHeader.test.js +0 -212
  1040. package/dist/src/ui/components/AppHeader.test.js.map +0 -1
  1041. package/dist/src/ui/components/AppHeaderIcon.test.d.ts +0 -6
  1042. package/dist/src/ui/components/AppHeaderIcon.test.js +0 -39
  1043. package/dist/src/ui/components/AppHeaderIcon.test.js.map +0 -1
  1044. package/dist/src/ui/components/ApprovalModeIndicator.test.d.ts +0 -6
  1045. package/dist/src/ui/components/ApprovalModeIndicator.test.js +0 -37
  1046. package/dist/src/ui/components/ApprovalModeIndicator.test.js.map +0 -1
  1047. package/dist/src/ui/components/AskUserDialog.test.d.ts +0 -6
  1048. package/dist/src/ui/components/AskUserDialog.test.js +0 -1121
  1049. package/dist/src/ui/components/AskUserDialog.test.js.map +0 -1
  1050. package/dist/src/ui/components/BackgroundTaskDisplay.test.d.ts +0 -6
  1051. package/dist/src/ui/components/BackgroundTaskDisplay.test.js +0 -209
  1052. package/dist/src/ui/components/BackgroundTaskDisplay.test.js.map +0 -1
  1053. package/dist/src/ui/components/Banner.test.d.ts +0 -6
  1054. package/dist/src/ui/components/Banner.test.js +0 -29
  1055. package/dist/src/ui/components/Banner.test.js.map +0 -1
  1056. package/dist/src/ui/components/BubblingRegression.test.d.ts +0 -6
  1057. package/dist/src/ui/components/BubblingRegression.test.js +0 -60
  1058. package/dist/src/ui/components/BubblingRegression.test.js.map +0 -1
  1059. package/dist/src/ui/components/Checklist.test.d.ts +0 -6
  1060. package/dist/src/ui/components/Checklist.test.js +0 -46
  1061. package/dist/src/ui/components/Checklist.test.js.map +0 -1
  1062. package/dist/src/ui/components/ChecklistItem.test.d.ts +0 -6
  1063. package/dist/src/ui/components/ChecklistItem.test.js +0 -40
  1064. package/dist/src/ui/components/ChecklistItem.test.js.map +0 -1
  1065. package/dist/src/ui/components/CliSpinner.test.d.ts +0 -6
  1066. package/dist/src/ui/components/CliSpinner.test.js +0 -32
  1067. package/dist/src/ui/components/CliSpinner.test.js.map +0 -1
  1068. package/dist/src/ui/components/ColorsDisplay.test.d.ts +0 -6
  1069. package/dist/src/ui/components/ColorsDisplay.test.js +0 -107
  1070. package/dist/src/ui/components/ColorsDisplay.test.js.map +0 -1
  1071. package/dist/src/ui/components/Composer.test.d.ts +0 -6
  1072. package/dist/src/ui/components/Composer.test.js +0 -853
  1073. package/dist/src/ui/components/Composer.test.js.map +0 -1
  1074. package/dist/src/ui/components/ConfigInitDisplay.test.d.ts +0 -6
  1075. package/dist/src/ui/components/ConfigInitDisplay.test.js +0 -118
  1076. package/dist/src/ui/components/ConfigInitDisplay.test.js.map +0 -1
  1077. package/dist/src/ui/components/ConsentPrompt.test.d.ts +0 -6
  1078. package/dist/src/ui/components/ConsentPrompt.test.js +0 -80
  1079. package/dist/src/ui/components/ConsentPrompt.test.js.map +0 -1
  1080. package/dist/src/ui/components/ConsoleSummaryDisplay.test.d.ts +0 -6
  1081. package/dist/src/ui/components/ConsoleSummaryDisplay.test.js +0 -28
  1082. package/dist/src/ui/components/ConsoleSummaryDisplay.test.js.map +0 -1
  1083. package/dist/src/ui/components/ContextSummaryDisplay.test.d.ts +0 -6
  1084. package/dist/src/ui/components/ContextSummaryDisplay.test.js +0 -81
  1085. package/dist/src/ui/components/ContextSummaryDisplay.test.js.map +0 -1
  1086. package/dist/src/ui/components/ContextUsageDisplay.test.d.ts +0 -6
  1087. package/dist/src/ui/components/ContextUsageDisplay.test.js +0 -50
  1088. package/dist/src/ui/components/ContextUsageDisplay.test.js.map +0 -1
  1089. package/dist/src/ui/components/CopyModeWarning.test.d.ts +0 -6
  1090. package/dist/src/ui/components/CopyModeWarning.test.js +0 -35
  1091. package/dist/src/ui/components/CopyModeWarning.test.js.map +0 -1
  1092. package/dist/src/ui/components/DebugProfiler.test.d.ts +0 -6
  1093. package/dist/src/ui/components/DebugProfiler.test.js +0 -228
  1094. package/dist/src/ui/components/DebugProfiler.test.js.map +0 -1
  1095. package/dist/src/ui/components/DetailedMessagesDisplay.test.d.ts +0 -6
  1096. package/dist/src/ui/components/DetailedMessagesDisplay.test.js +0 -81
  1097. package/dist/src/ui/components/DetailedMessagesDisplay.test.js.map +0 -1
  1098. package/dist/src/ui/components/DialogManager.test.d.ts +0 -6
  1099. package/dist/src/ui/components/DialogManager.test.js +0 -187
  1100. package/dist/src/ui/components/DialogManager.test.js.map +0 -1
  1101. package/dist/src/ui/components/EditorSettingsDialog.test.d.ts +0 -6
  1102. package/dist/src/ui/components/EditorSettingsDialog.test.js +0 -145
  1103. package/dist/src/ui/components/EditorSettingsDialog.test.js.map +0 -1
  1104. package/dist/src/ui/components/EmptyWalletDialog.test.d.ts +0 -6
  1105. package/dist/src/ui/components/EmptyWalletDialog.test.js +0 -116
  1106. package/dist/src/ui/components/EmptyWalletDialog.test.js.map +0 -1
  1107. package/dist/src/ui/components/ExitPlanModeDialog.test.d.ts +0 -6
  1108. package/dist/src/ui/components/ExitPlanModeDialog.test.js +0 -443
  1109. package/dist/src/ui/components/ExitPlanModeDialog.test.js.map +0 -1
  1110. package/dist/src/ui/components/ExitWarning.test.d.ts +0 -6
  1111. package/dist/src/ui/components/ExitWarning.test.js +0 -58
  1112. package/dist/src/ui/components/ExitWarning.test.js.map +0 -1
  1113. package/dist/src/ui/components/FolderTrustDialog.test.d.ts +0 -6
  1114. package/dist/src/ui/components/FolderTrustDialog.test.js +0 -342
  1115. package/dist/src/ui/components/FolderTrustDialog.test.js.map +0 -1
  1116. package/dist/src/ui/components/Footer.test.d.ts +0 -6
  1117. package/dist/src/ui/components/Footer.test.js +0 -806
  1118. package/dist/src/ui/components/Footer.test.js.map +0 -1
  1119. package/dist/src/ui/components/FooterConfigDialog.test.d.ts +0 -6
  1120. package/dist/src/ui/components/FooterConfigDialog.test.js +0 -191
  1121. package/dist/src/ui/components/FooterConfigDialog.test.js.map +0 -1
  1122. package/dist/src/ui/components/GeminiRespondingSpinner.test.d.ts +0 -6
  1123. package/dist/src/ui/components/GeminiRespondingSpinner.test.js +0 -63
  1124. package/dist/src/ui/components/GeminiRespondingSpinner.test.js.map +0 -1
  1125. package/dist/src/ui/components/GradientRegression.test.d.ts +0 -6
  1126. package/dist/src/ui/components/GradientRegression.test.js +0 -116
  1127. package/dist/src/ui/components/GradientRegression.test.js.map +0 -1
  1128. package/dist/src/ui/components/Header.test.d.ts +0 -6
  1129. package/dist/src/ui/components/Header.test.js +0 -131
  1130. package/dist/src/ui/components/Header.test.js.map +0 -1
  1131. package/dist/src/ui/components/Help.test.d.ts +0 -6
  1132. package/dist/src/ui/components/Help.test.js +0 -67
  1133. package/dist/src/ui/components/Help.test.js.map +0 -1
  1134. package/dist/src/ui/components/HistoryItemDisplay.test.d.ts +0 -6
  1135. package/dist/src/ui/components/HistoryItemDisplay.test.js +0 -302
  1136. package/dist/src/ui/components/HistoryItemDisplay.test.js.map +0 -1
  1137. package/dist/src/ui/components/HookStatusDisplay.test.d.ts +0 -6
  1138. package/dist/src/ui/components/HookStatusDisplay.test.js +0 -77
  1139. package/dist/src/ui/components/HookStatusDisplay.test.js.map +0 -1
  1140. package/dist/src/ui/components/HooksDialog.test.d.ts +0 -6
  1141. package/dist/src/ui/components/HooksDialog.test.js +0 -175
  1142. package/dist/src/ui/components/HooksDialog.test.js.map +0 -1
  1143. package/dist/src/ui/components/IdeTrustChangeDialog.test.d.ts +0 -6
  1144. package/dist/src/ui/components/IdeTrustChangeDialog.test.js +0 -78
  1145. package/dist/src/ui/components/IdeTrustChangeDialog.test.js.map +0 -1
  1146. package/dist/src/ui/components/InboxDialog.test.d.ts +0 -6
  1147. package/dist/src/ui/components/InboxDialog.test.js +0 -804
  1148. package/dist/src/ui/components/InboxDialog.test.js.map +0 -1
  1149. package/dist/src/ui/components/InputPrompt.test.d.ts +0 -17
  1150. package/dist/src/ui/components/InputPrompt.test.js +0 -4078
  1151. package/dist/src/ui/components/InputPrompt.test.js.map +0 -1
  1152. package/dist/src/ui/components/LoadingIndicator.test.d.ts +0 -6
  1153. package/dist/src/ui/components/LoadingIndicator.test.js +0 -325
  1154. package/dist/src/ui/components/LoadingIndicator.test.js.map +0 -1
  1155. package/dist/src/ui/components/LogoutConfirmationDialog.test.d.ts +0 -6
  1156. package/dist/src/ui/components/LogoutConfirmationDialog.test.js +0 -74
  1157. package/dist/src/ui/components/LogoutConfirmationDialog.test.js.map +0 -1
  1158. package/dist/src/ui/components/LoopDetectionConfirmation.test.d.ts +0 -6
  1159. package/dist/src/ui/components/LoopDetectionConfirmation.test.js +0 -27
  1160. package/dist/src/ui/components/LoopDetectionConfirmation.test.js.map +0 -1
  1161. package/dist/src/ui/components/MainContent.test.d.ts +0 -6
  1162. package/dist/src/ui/components/MainContent.test.js +0 -750
  1163. package/dist/src/ui/components/MainContent.test.js.map +0 -1
  1164. package/dist/src/ui/components/MemoryUsageDisplay.test.d.ts +0 -6
  1165. package/dist/src/ui/components/MemoryUsageDisplay.test.js +0 -52
  1166. package/dist/src/ui/components/MemoryUsageDisplay.test.js.map +0 -1
  1167. package/dist/src/ui/components/ModelDialog.test.d.ts +0 -6
  1168. package/dist/src/ui/components/ModelDialog.test.js +0 -356
  1169. package/dist/src/ui/components/ModelDialog.test.js.map +0 -1
  1170. package/dist/src/ui/components/ModelQuotaDisplay.test.d.ts +0 -6
  1171. package/dist/src/ui/components/ModelQuotaDisplay.test.js +0 -62
  1172. package/dist/src/ui/components/ModelQuotaDisplay.test.js.map +0 -1
  1173. package/dist/src/ui/components/ModelStatsDisplay.test.d.ts +0 -6
  1174. package/dist/src/ui/components/ModelStatsDisplay.test.js +0 -651
  1175. package/dist/src/ui/components/ModelStatsDisplay.test.js.map +0 -1
  1176. package/dist/src/ui/components/MultiFolderTrustDialog.test.d.ts +0 -6
  1177. package/dist/src/ui/components/MultiFolderTrustDialog.test.js +0 -177
  1178. package/dist/src/ui/components/MultiFolderTrustDialog.test.js.map +0 -1
  1179. package/dist/src/ui/components/NewAgentsNotification.test.d.ts +0 -6
  1180. package/dist/src/ui/components/NewAgentsNotification.test.js +0 -83
  1181. package/dist/src/ui/components/NewAgentsNotification.test.js.map +0 -1
  1182. package/dist/src/ui/components/Notifications.test.d.ts +0 -6
  1183. package/dist/src/ui/components/Notifications.test.js +0 -285
  1184. package/dist/src/ui/components/Notifications.test.js.map +0 -1
  1185. package/dist/src/ui/components/OverageMenuDialog.test.d.ts +0 -6
  1186. package/dist/src/ui/components/OverageMenuDialog.test.js +0 -118
  1187. package/dist/src/ui/components/OverageMenuDialog.test.js.map +0 -1
  1188. package/dist/src/ui/components/PermissionsModifyTrustDialog.test.d.ts +0 -6
  1189. package/dist/src/ui/components/PermissionsModifyTrustDialog.test.js +0 -181
  1190. package/dist/src/ui/components/PermissionsModifyTrustDialog.test.js.map +0 -1
  1191. package/dist/src/ui/components/PolicyUpdateDialog.test.d.ts +0 -6
  1192. package/dist/src/ui/components/PolicyUpdateDialog.test.js +0 -92
  1193. package/dist/src/ui/components/PolicyUpdateDialog.test.js.map +0 -1
  1194. package/dist/src/ui/components/ProQuotaDialog.test.d.ts +0 -6
  1195. package/dist/src/ui/components/ProQuotaDialog.test.js +0 -222
  1196. package/dist/src/ui/components/ProQuotaDialog.test.js.map +0 -1
  1197. package/dist/src/ui/components/ProgressBar.test.d.ts +0 -6
  1198. package/dist/src/ui/components/ProgressBar.test.js +0 -28
  1199. package/dist/src/ui/components/ProgressBar.test.js.map +0 -1
  1200. package/dist/src/ui/components/QueuedMessageDisplay.test.d.ts +0 -6
  1201. package/dist/src/ui/components/QueuedMessageDisplay.test.js +0 -65
  1202. package/dist/src/ui/components/QueuedMessageDisplay.test.js.map +0 -1
  1203. package/dist/src/ui/components/QuittingDisplay.test.d.ts +0 -6
  1204. package/dist/src/ui/components/QuittingDisplay.test.js +0 -60
  1205. package/dist/src/ui/components/QuittingDisplay.test.js.map +0 -1
  1206. package/dist/src/ui/components/QuotaDisplay.test.d.ts +0 -6
  1207. package/dist/src/ui/components/QuotaDisplay.test.js +0 -68
  1208. package/dist/src/ui/components/QuotaDisplay.test.js.map +0 -1
  1209. package/dist/src/ui/components/RawMarkdownIndicator.test.d.ts +0 -6
  1210. package/dist/src/ui/components/RawMarkdownIndicator.test.js +0 -38
  1211. package/dist/src/ui/components/RawMarkdownIndicator.test.js.map +0 -1
  1212. package/dist/src/ui/components/RewindConfirmation.test.d.ts +0 -6
  1213. package/dist/src/ui/components/RewindConfirmation.test.js +0 -57
  1214. package/dist/src/ui/components/RewindConfirmation.test.js.map +0 -1
  1215. package/dist/src/ui/components/RewindViewer.test.d.ts +0 -6
  1216. package/dist/src/ui/components/RewindViewer.test.js +0 -334
  1217. package/dist/src/ui/components/RewindViewer.test.js.map +0 -1
  1218. package/dist/src/ui/components/SessionBrowser/SessionBrowserSearchNav.test.d.ts +0 -6
  1219. package/dist/src/ui/components/SessionBrowser/SessionBrowserSearchNav.test.js +0 -47
  1220. package/dist/src/ui/components/SessionBrowser/SessionBrowserSearchNav.test.js.map +0 -1
  1221. package/dist/src/ui/components/SessionBrowser/SessionBrowserStates.test.d.ts +0 -6
  1222. package/dist/src/ui/components/SessionBrowser/SessionBrowserStates.test.js +0 -27
  1223. package/dist/src/ui/components/SessionBrowser/SessionBrowserStates.test.js.map +0 -1
  1224. package/dist/src/ui/components/SessionBrowser/utils.test.d.ts +0 -6
  1225. package/dist/src/ui/components/SessionBrowser/utils.test.js +0 -108
  1226. package/dist/src/ui/components/SessionBrowser/utils.test.js.map +0 -1
  1227. package/dist/src/ui/components/SessionBrowser.test.d.ts +0 -6
  1228. package/dist/src/ui/components/SessionBrowser.test.js +0 -266
  1229. package/dist/src/ui/components/SessionBrowser.test.js.map +0 -1
  1230. package/dist/src/ui/components/SessionSummaryDisplay.test.d.ts +0 -6
  1231. package/dist/src/ui/components/SessionSummaryDisplay.test.js +0 -164
  1232. package/dist/src/ui/components/SessionSummaryDisplay.test.js.map +0 -1
  1233. package/dist/src/ui/components/SettingsDialog.test.d.ts +0 -6
  1234. package/dist/src/ui/components/SettingsDialog.test.js +0 -1499
  1235. package/dist/src/ui/components/SettingsDialog.test.js.map +0 -1
  1236. package/dist/src/ui/components/ShellInputPrompt.test.d.ts +0 -6
  1237. package/dist/src/ui/components/ShellInputPrompt.test.js +0 -201
  1238. package/dist/src/ui/components/ShellInputPrompt.test.js.map +0 -1
  1239. package/dist/src/ui/components/ShellModeIndicator.test.d.ts +0 -6
  1240. package/dist/src/ui/components/ShellModeIndicator.test.js +0 -18
  1241. package/dist/src/ui/components/ShellModeIndicator.test.js.map +0 -1
  1242. package/dist/src/ui/components/ShortcutsHelp.test.d.ts +0 -6
  1243. package/dist/src/ui/components/ShortcutsHelp.test.js +0 -45
  1244. package/dist/src/ui/components/ShortcutsHelp.test.js.map +0 -1
  1245. package/dist/src/ui/components/ShowMoreLines.test.d.ts +0 -6
  1246. package/dist/src/ui/components/ShowMoreLines.test.js +0 -79
  1247. package/dist/src/ui/components/ShowMoreLines.test.js.map +0 -1
  1248. package/dist/src/ui/components/ShowMoreLinesLayout.test.d.ts +0 -1
  1249. package/dist/src/ui/components/ShowMoreLinesLayout.test.js +0 -68
  1250. package/dist/src/ui/components/ShowMoreLinesLayout.test.js.map +0 -1
  1251. package/dist/src/ui/components/StatsDisplay.test.d.ts +0 -6
  1252. package/dist/src/ui/components/StatsDisplay.test.js +0 -489
  1253. package/dist/src/ui/components/StatsDisplay.test.js.map +0 -1
  1254. package/dist/src/ui/components/StatusDisplay.test.d.ts +0 -6
  1255. package/dist/src/ui/components/StatusDisplay.test.js +0 -117
  1256. package/dist/src/ui/components/StatusDisplay.test.js.map +0 -1
  1257. package/dist/src/ui/components/StatusRow.test.d.ts +0 -6
  1258. package/dist/src/ui/components/StatusRow.test.js +0 -99
  1259. package/dist/src/ui/components/StatusRow.test.js.map +0 -1
  1260. package/dist/src/ui/components/StickyHeader.test.d.ts +0 -6
  1261. package/dist/src/ui/components/StickyHeader.test.js +0 -19
  1262. package/dist/src/ui/components/StickyHeader.test.js.map +0 -1
  1263. package/dist/src/ui/components/SuggestionsDisplay.test.d.ts +0 -6
  1264. package/dist/src/ui/components/SuggestionsDisplay.test.js +0 -82
  1265. package/dist/src/ui/components/SuggestionsDisplay.test.js.map +0 -1
  1266. package/dist/src/ui/components/Table.test.d.ts +0 -6
  1267. package/dist/src/ui/components/Table.test.js +0 -72
  1268. package/dist/src/ui/components/Table.test.js.map +0 -1
  1269. package/dist/src/ui/components/ThemeDialog.test.d.ts +0 -6
  1270. package/dist/src/ui/components/ThemeDialog.test.js +0 -162
  1271. package/dist/src/ui/components/ThemeDialog.test.js.map +0 -1
  1272. package/dist/src/ui/components/ThemedGradient.test.d.ts +0 -6
  1273. package/dist/src/ui/components/ThemedGradient.test.js +0 -35
  1274. package/dist/src/ui/components/ThemedGradient.test.js.map +0 -1
  1275. package/dist/src/ui/components/Tips.test.d.ts +0 -6
  1276. package/dist/src/ui/components/Tips.test.js +0 -23
  1277. package/dist/src/ui/components/Tips.test.js.map +0 -1
  1278. package/dist/src/ui/components/ToastDisplay.test.d.ts +0 -6
  1279. package/dist/src/ui/components/ToastDisplay.test.js +0 -167
  1280. package/dist/src/ui/components/ToastDisplay.test.js.map +0 -1
  1281. package/dist/src/ui/components/ToolConfirmationQueue.test.d.ts +0 -6
  1282. package/dist/src/ui/components/ToolConfirmationQueue.test.js +0 -444
  1283. package/dist/src/ui/components/ToolConfirmationQueue.test.js.map +0 -1
  1284. package/dist/src/ui/components/ToolStatsDisplay.test.d.ts +0 -6
  1285. package/dist/src/ui/components/ToolStatsDisplay.test.js +0 -234
  1286. package/dist/src/ui/components/ToolStatsDisplay.test.js.map +0 -1
  1287. package/dist/src/ui/components/UpdateNotification.test.d.ts +0 -6
  1288. package/dist/src/ui/components/UpdateNotification.test.js +0 -17
  1289. package/dist/src/ui/components/UpdateNotification.test.js.map +0 -1
  1290. package/dist/src/ui/components/UserIdentity.test.d.ts +0 -6
  1291. package/dist/src/ui/components/UserIdentity.test.js +0 -138
  1292. package/dist/src/ui/components/UserIdentity.test.js.map +0 -1
  1293. package/dist/src/ui/components/ValidationDialog.test.d.ts +0 -6
  1294. package/dist/src/ui/components/ValidationDialog.test.js +0 -162
  1295. package/dist/src/ui/components/ValidationDialog.test.js.map +0 -1
  1296. package/dist/src/ui/components/VoiceModelDialog.test.d.ts +0 -6
  1297. package/dist/src/ui/components/VoiceModelDialog.test.js +0 -68
  1298. package/dist/src/ui/components/VoiceModelDialog.test.js.map +0 -1
  1299. package/dist/src/ui/components/messages/CompressionMessage.test.d.ts +0 -6
  1300. package/dist/src/ui/components/messages/CompressionMessage.test.js +0 -180
  1301. package/dist/src/ui/components/messages/CompressionMessage.test.js.map +0 -1
  1302. package/dist/src/ui/components/messages/DenseToolMessage.test.d.ts +0 -6
  1303. package/dist/src/ui/components/messages/DenseToolMessage.test.js +0 -406
  1304. package/dist/src/ui/components/messages/DenseToolMessage.test.js.map +0 -1
  1305. package/dist/src/ui/components/messages/DiffRenderer.test.d.ts +0 -6
  1306. package/dist/src/ui/components/messages/DiffRenderer.test.js +0 -269
  1307. package/dist/src/ui/components/messages/DiffRenderer.test.js.map +0 -1
  1308. package/dist/src/ui/components/messages/ErrorMessage.test.d.ts +0 -6
  1309. package/dist/src/ui/components/messages/ErrorMessage.test.js +0 -25
  1310. package/dist/src/ui/components/messages/ErrorMessage.test.js.map +0 -1
  1311. package/dist/src/ui/components/messages/ExportSessionMessage.test.d.ts +0 -6
  1312. package/dist/src/ui/components/messages/ExportSessionMessage.test.js +0 -32
  1313. package/dist/src/ui/components/messages/ExportSessionMessage.test.js.map +0 -1
  1314. package/dist/src/ui/components/messages/GeminiMessage.test.d.ts +0 -6
  1315. package/dist/src/ui/components/messages/GeminiMessage.test.js +0 -46
  1316. package/dist/src/ui/components/messages/GeminiMessage.test.js.map +0 -1
  1317. package/dist/src/ui/components/messages/HintMessage.test.d.ts +0 -6
  1318. package/dist/src/ui/components/messages/HintMessage.test.js +0 -42
  1319. package/dist/src/ui/components/messages/HintMessage.test.js.map +0 -1
  1320. package/dist/src/ui/components/messages/InfoMessage.test.d.ts +0 -6
  1321. package/dist/src/ui/components/messages/InfoMessage.test.js +0 -31
  1322. package/dist/src/ui/components/messages/InfoMessage.test.js.map +0 -1
  1323. package/dist/src/ui/components/messages/RedirectionConfirmation.test.d.ts +0 -6
  1324. package/dist/src/ui/components/messages/RedirectionConfirmation.test.js +0 -35
  1325. package/dist/src/ui/components/messages/RedirectionConfirmation.test.js.map +0 -1
  1326. package/dist/src/ui/components/messages/ShellToolMessage.test.d.ts +0 -6
  1327. package/dist/src/ui/components/messages/ShellToolMessage.test.js +0 -290
  1328. package/dist/src/ui/components/messages/ShellToolMessage.test.js.map +0 -1
  1329. package/dist/src/ui/components/messages/SubagentGroupDisplay.test.d.ts +0 -1
  1330. package/dist/src/ui/components/messages/SubagentGroupDisplay.test.js +0 -92
  1331. package/dist/src/ui/components/messages/SubagentGroupDisplay.test.js.map +0 -1
  1332. package/dist/src/ui/components/messages/SubagentHistoryMessage.test.d.ts +0 -6
  1333. package/dist/src/ui/components/messages/SubagentHistoryMessage.test.js +0 -69
  1334. package/dist/src/ui/components/messages/SubagentHistoryMessage.test.js.map +0 -1
  1335. package/dist/src/ui/components/messages/SubagentProgressDisplay.test.d.ts +0 -6
  1336. package/dist/src/ui/components/messages/SubagentProgressDisplay.test.js +0 -164
  1337. package/dist/src/ui/components/messages/SubagentProgressDisplay.test.js.map +0 -1
  1338. package/dist/src/ui/components/messages/ThinkingMessage.test.d.ts +0 -6
  1339. package/dist/src/ui/components/messages/ThinkingMessage.test.js +0 -104
  1340. package/dist/src/ui/components/messages/ThinkingMessage.test.js.map +0 -1
  1341. package/dist/src/ui/components/messages/Todo.test.d.ts +0 -6
  1342. package/dist/src/ui/components/messages/Todo.test.js +0 -129
  1343. package/dist/src/ui/components/messages/Todo.test.js.map +0 -1
  1344. package/dist/src/ui/components/messages/ToolConfirmationMessage.test.d.ts +0 -6
  1345. package/dist/src/ui/components/messages/ToolConfirmationMessage.test.js +0 -558
  1346. package/dist/src/ui/components/messages/ToolConfirmationMessage.test.js.map +0 -1
  1347. package/dist/src/ui/components/messages/ToolGroupDisplay.test.d.ts +0 -6
  1348. package/dist/src/ui/components/messages/ToolGroupDisplay.test.js +0 -210
  1349. package/dist/src/ui/components/messages/ToolGroupDisplay.test.js.map +0 -1
  1350. package/dist/src/ui/components/messages/ToolGroupMessage.compact.test.d.ts +0 -6
  1351. package/dist/src/ui/components/messages/ToolGroupMessage.compact.test.js +0 -147
  1352. package/dist/src/ui/components/messages/ToolGroupMessage.compact.test.js.map +0 -1
  1353. package/dist/src/ui/components/messages/ToolGroupMessage.test.d.ts +0 -6
  1354. package/dist/src/ui/components/messages/ToolGroupMessage.test.js +0 -828
  1355. package/dist/src/ui/components/messages/ToolGroupMessage.test.js.map +0 -1
  1356. package/dist/src/ui/components/messages/ToolGroupMessageRegression.test.d.ts +0 -6
  1357. package/dist/src/ui/components/messages/ToolGroupMessageRegression.test.js +0 -101
  1358. package/dist/src/ui/components/messages/ToolGroupMessageRegression.test.js.map +0 -1
  1359. package/dist/src/ui/components/messages/ToolMessage.test.d.ts +0 -6
  1360. package/dist/src/ui/components/messages/ToolMessage.test.js +0 -292
  1361. package/dist/src/ui/components/messages/ToolMessage.test.js.map +0 -1
  1362. package/dist/src/ui/components/messages/ToolMessageFocusHint.test.d.ts +0 -6
  1363. package/dist/src/ui/components/messages/ToolMessageFocusHint.test.js +0 -96
  1364. package/dist/src/ui/components/messages/ToolMessageFocusHint.test.js.map +0 -1
  1365. package/dist/src/ui/components/messages/ToolMessageRawMarkdown.test.d.ts +0 -6
  1366. package/dist/src/ui/components/messages/ToolMessageRawMarkdown.test.js +0 -72
  1367. package/dist/src/ui/components/messages/ToolMessageRawMarkdown.test.js.map +0 -1
  1368. package/dist/src/ui/components/messages/ToolOverflowConsistencyChecks.test.d.ts +0 -6
  1369. package/dist/src/ui/components/messages/ToolOverflowConsistencyChecks.test.js +0 -88
  1370. package/dist/src/ui/components/messages/ToolOverflowConsistencyChecks.test.js.map +0 -1
  1371. package/dist/src/ui/components/messages/ToolResultDisplay.test.d.ts +0 -6
  1372. package/dist/src/ui/components/messages/ToolResultDisplay.test.js +0 -333
  1373. package/dist/src/ui/components/messages/ToolResultDisplay.test.js.map +0 -1
  1374. package/dist/src/ui/components/messages/ToolResultDisplayOverflow.test.d.ts +0 -6
  1375. package/dist/src/ui/components/messages/ToolResultDisplayOverflow.test.js +0 -77
  1376. package/dist/src/ui/components/messages/ToolResultDisplayOverflow.test.js.map +0 -1
  1377. package/dist/src/ui/components/messages/ToolShared.test.d.ts +0 -6
  1378. package/dist/src/ui/components/messages/ToolShared.test.js +0 -65
  1379. package/dist/src/ui/components/messages/ToolShared.test.js.map +0 -1
  1380. package/dist/src/ui/components/messages/ToolStickyHeaderRegression.test.d.ts +0 -6
  1381. package/dist/src/ui/components/messages/ToolStickyHeaderRegression.test.js +0 -142
  1382. package/dist/src/ui/components/messages/ToolStickyHeaderRegression.test.js.map +0 -1
  1383. package/dist/src/ui/components/messages/TopicMessage.test.d.ts +0 -6
  1384. package/dist/src/ui/components/messages/TopicMessage.test.js +0 -77
  1385. package/dist/src/ui/components/messages/TopicMessage.test.js.map +0 -1
  1386. package/dist/src/ui/components/messages/UserMessage.test.d.ts +0 -6
  1387. package/dist/src/ui/components/messages/UserMessage.test.js +0 -67
  1388. package/dist/src/ui/components/messages/UserMessage.test.js.map +0 -1
  1389. package/dist/src/ui/components/messages/UserShellMessage.test.d.ts +0 -6
  1390. package/dist/src/ui/components/messages/UserShellMessage.test.js +0 -40
  1391. package/dist/src/ui/components/messages/UserShellMessage.test.js.map +0 -1
  1392. package/dist/src/ui/components/messages/WarningMessage.test.d.ts +0 -6
  1393. package/dist/src/ui/components/messages/WarningMessage.test.js +0 -25
  1394. package/dist/src/ui/components/messages/WarningMessage.test.js.map +0 -1
  1395. package/dist/src/ui/components/shared/BaseSelectionList.test.d.ts +0 -6
  1396. package/dist/src/ui/components/shared/BaseSelectionList.test.js +0 -441
  1397. package/dist/src/ui/components/shared/BaseSelectionList.test.js.map +0 -1
  1398. package/dist/src/ui/components/shared/BaseSettingsDialog.test.d.ts +0 -6
  1399. package/dist/src/ui/components/shared/BaseSettingsDialog.test.js +0 -710
  1400. package/dist/src/ui/components/shared/BaseSettingsDialog.test.js.map +0 -1
  1401. package/dist/src/ui/components/shared/DescriptiveRadioButtonSelect.test.d.ts +0 -6
  1402. package/dist/src/ui/components/shared/DescriptiveRadioButtonSelect.test.js +0 -89
  1403. package/dist/src/ui/components/shared/DescriptiveRadioButtonSelect.test.js.map +0 -1
  1404. package/dist/src/ui/components/shared/EnumSelector.test.d.ts +0 -6
  1405. package/dist/src/ui/components/shared/EnumSelector.test.js +0 -83
  1406. package/dist/src/ui/components/shared/EnumSelector.test.js.map +0 -1
  1407. package/dist/src/ui/components/shared/ExpandableText.test.d.ts +0 -6
  1408. package/dist/src/ui/components/shared/ExpandableText.test.js +0 -95
  1409. package/dist/src/ui/components/shared/ExpandableText.test.js.map +0 -1
  1410. package/dist/src/ui/components/shared/HalfLinePaddedBox.test.d.ts +0 -1
  1411. package/dist/src/ui/components/shared/HalfLinePaddedBox.test.js +0 -47
  1412. package/dist/src/ui/components/shared/HalfLinePaddedBox.test.js.map +0 -1
  1413. package/dist/src/ui/components/shared/MaxSizedBox.test.d.ts +0 -6
  1414. package/dist/src/ui/components/shared/MaxSizedBox.test.js +0 -161
  1415. package/dist/src/ui/components/shared/MaxSizedBox.test.js.map +0 -1
  1416. package/dist/src/ui/components/shared/RadioButtonSelect.test.d.ts +0 -6
  1417. package/dist/src/ui/components/shared/RadioButtonSelect.test.js +0 -146
  1418. package/dist/src/ui/components/shared/RadioButtonSelect.test.js.map +0 -1
  1419. package/dist/src/ui/components/shared/Scrollable.test.d.ts +0 -6
  1420. package/dist/src/ui/components/shared/Scrollable.test.js +0 -143
  1421. package/dist/src/ui/components/shared/Scrollable.test.js.map +0 -1
  1422. package/dist/src/ui/components/shared/ScrollableList.test.d.ts +0 -6
  1423. package/dist/src/ui/components/shared/ScrollableList.test.js +0 -438
  1424. package/dist/src/ui/components/shared/ScrollableList.test.js.map +0 -1
  1425. package/dist/src/ui/components/shared/SearchableList.test.d.ts +0 -6
  1426. package/dist/src/ui/components/shared/SearchableList.test.js +0 -169
  1427. package/dist/src/ui/components/shared/SearchableList.test.js.map +0 -1
  1428. package/dist/src/ui/components/shared/SectionHeader.test.d.ts +0 -6
  1429. package/dist/src/ui/components/shared/SectionHeader.test.js +0 -42
  1430. package/dist/src/ui/components/shared/SectionHeader.test.js.map +0 -1
  1431. package/dist/src/ui/components/shared/SlicingMaxSizedBox.test.d.ts +0 -6
  1432. package/dist/src/ui/components/shared/SlicingMaxSizedBox.test.js +0 -54
  1433. package/dist/src/ui/components/shared/SlicingMaxSizedBox.test.js.map +0 -1
  1434. package/dist/src/ui/components/shared/TabHeader.test.d.ts +0 -6
  1435. package/dist/src/ui/components/shared/TabHeader.test.js +0 -144
  1436. package/dist/src/ui/components/shared/TabHeader.test.js.map +0 -1
  1437. package/dist/src/ui/components/shared/TextInput.test.d.ts +0 -6
  1438. package/dist/src/ui/components/shared/TextInput.test.js +0 -353
  1439. package/dist/src/ui/components/shared/TextInput.test.js.map +0 -1
  1440. package/dist/src/ui/components/shared/VirtualizedList.test.d.ts +0 -6
  1441. package/dist/src/ui/components/shared/VirtualizedList.test.js +0 -174
  1442. package/dist/src/ui/components/shared/VirtualizedList.test.js.map +0 -1
  1443. package/dist/src/ui/components/shared/performance.test.d.ts +0 -1
  1444. package/dist/src/ui/components/shared/performance.test.js +0 -74
  1445. package/dist/src/ui/components/shared/performance.test.js.map +0 -1
  1446. package/dist/src/ui/components/shared/text-buffer.test.d.ts +0 -6
  1447. package/dist/src/ui/components/shared/text-buffer.test.js +0 -2965
  1448. package/dist/src/ui/components/shared/text-buffer.test.js.map +0 -1
  1449. package/dist/src/ui/components/shared/vim-buffer-actions.test.d.ts +0 -6
  1450. package/dist/src/ui/components/shared/vim-buffer-actions.test.js +0 -2272
  1451. package/dist/src/ui/components/shared/vim-buffer-actions.test.js.map +0 -1
  1452. package/dist/src/ui/components/views/ChatList.test.d.ts +0 -6
  1453. package/dist/src/ui/components/views/ChatList.test.js +0 -45
  1454. package/dist/src/ui/components/views/ChatList.test.js.map +0 -1
  1455. package/dist/src/ui/components/views/ExtensionDetails.test.d.ts +0 -6
  1456. package/dist/src/ui/components/views/ExtensionDetails.test.js +0 -154
  1457. package/dist/src/ui/components/views/ExtensionDetails.test.js.map +0 -1
  1458. package/dist/src/ui/components/views/ExtensionRegistryView.test.d.ts +0 -6
  1459. package/dist/src/ui/components/views/ExtensionRegistryView.test.js +0 -222
  1460. package/dist/src/ui/components/views/ExtensionRegistryView.test.js.map +0 -1
  1461. package/dist/src/ui/components/views/ExtensionsList.test.d.ts +0 -6
  1462. package/dist/src/ui/components/views/ExtensionsList.test.js +0 -145
  1463. package/dist/src/ui/components/views/ExtensionsList.test.js.map +0 -1
  1464. package/dist/src/ui/components/views/McpStatus.test.d.ts +0 -6
  1465. package/dist/src/ui/components/views/McpStatus.test.js +0 -174
  1466. package/dist/src/ui/components/views/McpStatus.test.js.map +0 -1
  1467. package/dist/src/ui/components/views/SkillsList.test.d.ts +0 -6
  1468. package/dist/src/ui/components/views/SkillsList.test.js +0 -99
  1469. package/dist/src/ui/components/views/SkillsList.test.js.map +0 -1
  1470. package/dist/src/ui/components/views/ToolsList.test.d.ts +0 -6
  1471. package/dist/src/ui/components/views/ToolsList.test.js +0 -45
  1472. package/dist/src/ui/components/views/ToolsList.test.js.map +0 -1
  1473. package/dist/src/ui/contexts/KeypressContext.test.d.ts +0 -6
  1474. package/dist/src/ui/contexts/KeypressContext.test.js +0 -1133
  1475. package/dist/src/ui/contexts/KeypressContext.test.js.map +0 -1
  1476. package/dist/src/ui/contexts/MouseContext.test.d.ts +0 -6
  1477. package/dist/src/ui/contexts/MouseContext.test.js +0 -269
  1478. package/dist/src/ui/contexts/MouseContext.test.js.map +0 -1
  1479. package/dist/src/ui/contexts/ScrollProvider.drag.test.d.ts +0 -6
  1480. package/dist/src/ui/contexts/ScrollProvider.drag.test.js +0 -320
  1481. package/dist/src/ui/contexts/ScrollProvider.drag.test.js.map +0 -1
  1482. package/dist/src/ui/contexts/ScrollProvider.test.d.ts +0 -6
  1483. package/dist/src/ui/contexts/ScrollProvider.test.js +0 -478
  1484. package/dist/src/ui/contexts/ScrollProvider.test.js.map +0 -1
  1485. package/dist/src/ui/contexts/SessionContext.test.d.ts +0 -6
  1486. package/dist/src/ui/contexts/SessionContext.test.js +0 -213
  1487. package/dist/src/ui/contexts/SessionContext.test.js.map +0 -1
  1488. package/dist/src/ui/contexts/SettingsContext.test.d.ts +0 -6
  1489. package/dist/src/ui/contexts/SettingsContext.test.js +0 -106
  1490. package/dist/src/ui/contexts/SettingsContext.test.js.map +0 -1
  1491. package/dist/src/ui/contexts/TerminalContext.test.d.ts +0 -6
  1492. package/dist/src/ui/contexts/TerminalContext.test.js +0 -75
  1493. package/dist/src/ui/contexts/TerminalContext.test.js.map +0 -1
  1494. package/dist/src/ui/contexts/ToolActionsContext.test.d.ts +0 -6
  1495. package/dist/src/ui/contexts/ToolActionsContext.test.js +0 -247
  1496. package/dist/src/ui/contexts/ToolActionsContext.test.js.map +0 -1
  1497. package/dist/src/ui/hooks/atCommandProcessor.test.d.ts +0 -6
  1498. package/dist/src/ui/hooks/atCommandProcessor.test.js +0 -1265
  1499. package/dist/src/ui/hooks/atCommandProcessor.test.js.map +0 -1
  1500. package/dist/src/ui/hooks/atCommandProcessor_agents.test.d.ts +0 -6
  1501. package/dist/src/ui/hooks/atCommandProcessor_agents.test.js +0 -210
  1502. package/dist/src/ui/hooks/atCommandProcessor_agents.test.js.map +0 -1
  1503. package/dist/src/ui/hooks/creditsFlowHandler.test.d.ts +0 -6
  1504. package/dist/src/ui/hooks/creditsFlowHandler.test.js +0 -211
  1505. package/dist/src/ui/hooks/creditsFlowHandler.test.js.map +0 -1
  1506. package/dist/src/ui/hooks/shell-completions/gitProvider.test.d.ts +0 -6
  1507. package/dist/src/ui/hooks/shell-completions/gitProvider.test.js +0 -73
  1508. package/dist/src/ui/hooks/shell-completions/gitProvider.test.js.map +0 -1
  1509. package/dist/src/ui/hooks/shell-completions/npmProvider.test.d.ts +0 -6
  1510. package/dist/src/ui/hooks/shell-completions/npmProvider.test.js +0 -69
  1511. package/dist/src/ui/hooks/shell-completions/npmProvider.test.js.map +0 -1
  1512. package/dist/src/ui/hooks/shellReducer.test.d.ts +0 -6
  1513. package/dist/src/ui/hooks/shellReducer.test.js +0 -341
  1514. package/dist/src/ui/hooks/shellReducer.test.js.map +0 -1
  1515. package/dist/src/ui/hooks/slashCommandProcessor.test.d.ts +0 -6
  1516. package/dist/src/ui/hooks/slashCommandProcessor.test.js +0 -881
  1517. package/dist/src/ui/hooks/slashCommandProcessor.test.js.map +0 -1
  1518. package/dist/src/ui/hooks/toolMapping.test.d.ts +0 -6
  1519. package/dist/src/ui/hooks/toolMapping.test.js +0 -292
  1520. package/dist/src/ui/hooks/toolMapping.test.js.map +0 -1
  1521. package/dist/src/ui/hooks/useAgentStream.test.d.ts +0 -6
  1522. package/dist/src/ui/hooks/useAgentStream.test.js +0 -161
  1523. package/dist/src/ui/hooks/useAgentStream.test.js.map +0 -1
  1524. package/dist/src/ui/hooks/useAlternateBuffer.test.d.ts +0 -6
  1525. package/dist/src/ui/hooks/useAlternateBuffer.test.js +0 -62
  1526. package/dist/src/ui/hooks/useAlternateBuffer.test.js.map +0 -1
  1527. package/dist/src/ui/hooks/useAnimatedScrollbar.test.d.ts +0 -6
  1528. package/dist/src/ui/hooks/useAnimatedScrollbar.test.js +0 -85
  1529. package/dist/src/ui/hooks/useAnimatedScrollbar.test.js.map +0 -1
  1530. package/dist/src/ui/hooks/useApprovalModeIndicator.test.d.ts +0 -6
  1531. package/dist/src/ui/hooks/useApprovalModeIndicator.test.js +0 -477
  1532. package/dist/src/ui/hooks/useApprovalModeIndicator.test.js.map +0 -1
  1533. package/dist/src/ui/hooks/useAtCompletion.test.d.ts +0 -6
  1534. package/dist/src/ui/hooks/useAtCompletion.test.js +0 -567
  1535. package/dist/src/ui/hooks/useAtCompletion.test.js.map +0 -1
  1536. package/dist/src/ui/hooks/useAtCompletion_agents.test.d.ts +0 -6
  1537. package/dist/src/ui/hooks/useAtCompletion_agents.test.js +0 -87
  1538. package/dist/src/ui/hooks/useAtCompletion_agents.test.js.map +0 -1
  1539. package/dist/src/ui/hooks/useBackgroundTaskManager.test.d.ts +0 -6
  1540. package/dist/src/ui/hooks/useBackgroundTaskManager.test.js +0 -168
  1541. package/dist/src/ui/hooks/useBackgroundTaskManager.test.js.map +0 -1
  1542. package/dist/src/ui/hooks/useBanner.test.d.ts +0 -6
  1543. package/dist/src/ui/hooks/useBanner.test.js +0 -144
  1544. package/dist/src/ui/hooks/useBanner.test.js.map +0 -1
  1545. package/dist/src/ui/hooks/useBatchedScroll.test.d.ts +0 -6
  1546. package/dist/src/ui/hooks/useBatchedScroll.test.js +0 -62
  1547. package/dist/src/ui/hooks/useBatchedScroll.test.js.map +0 -1
  1548. package/dist/src/ui/hooks/useCommandCompletion.test.d.ts +0 -6
  1549. package/dist/src/ui/hooks/useCommandCompletion.test.js +0 -722
  1550. package/dist/src/ui/hooks/useCommandCompletion.test.js.map +0 -1
  1551. package/dist/src/ui/hooks/useConsoleMessages.test.d.ts +0 -6
  1552. package/dist/src/ui/hooks/useConsoleMessages.test.js +0 -201
  1553. package/dist/src/ui/hooks/useConsoleMessages.test.js.map +0 -1
  1554. package/dist/src/ui/hooks/useEditorSettings.test.d.ts +0 -6
  1555. package/dist/src/ui/hooks/useEditorSettings.test.js +0 -179
  1556. package/dist/src/ui/hooks/useEditorSettings.test.js.map +0 -1
  1557. package/dist/src/ui/hooks/useExecutionLifecycle.test.d.ts +0 -6
  1558. package/dist/src/ui/hooks/useExecutionLifecycle.test.js +0 -903
  1559. package/dist/src/ui/hooks/useExecutionLifecycle.test.js.map +0 -1
  1560. package/dist/src/ui/hooks/useExtensionUpdates.test.d.ts +0 -6
  1561. package/dist/src/ui/hooks/useExtensionUpdates.test.js +0 -280
  1562. package/dist/src/ui/hooks/useExtensionUpdates.test.js.map +0 -1
  1563. package/dist/src/ui/hooks/useFlickerDetector.test.d.ts +0 -6
  1564. package/dist/src/ui/hooks/useFlickerDetector.test.js +0 -106
  1565. package/dist/src/ui/hooks/useFlickerDetector.test.js.map +0 -1
  1566. package/dist/src/ui/hooks/useFocus.test.d.ts +0 -6
  1567. package/dist/src/ui/hooks/useFocus.test.js +0 -140
  1568. package/dist/src/ui/hooks/useFocus.test.js.map +0 -1
  1569. package/dist/src/ui/hooks/useFolderTrust.test.d.ts +0 -6
  1570. package/dist/src/ui/hooks/useFolderTrust.test.js +0 -268
  1571. package/dist/src/ui/hooks/useFolderTrust.test.js.map +0 -1
  1572. package/dist/src/ui/hooks/useGeminiStream.test.d.ts +0 -6
  1573. package/dist/src/ui/hooks/useGeminiStream.test.js +0 -2855
  1574. package/dist/src/ui/hooks/useGeminiStream.test.js.map +0 -1
  1575. package/dist/src/ui/hooks/useGitBranchName.test.d.ts +0 -6
  1576. package/dist/src/ui/hooks/useGitBranchName.test.js +0 -237
  1577. package/dist/src/ui/hooks/useGitBranchName.test.js.map +0 -1
  1578. package/dist/src/ui/hooks/useHistoryManager.test.d.ts +0 -6
  1579. package/dist/src/ui/hooks/useHistoryManager.test.js +0 -259
  1580. package/dist/src/ui/hooks/useHistoryManager.test.js.map +0 -1
  1581. package/dist/src/ui/hooks/useHookDisplayState.test.d.ts +0 -6
  1582. package/dist/src/ui/hooks/useHookDisplayState.test.js +0 -200
  1583. package/dist/src/ui/hooks/useHookDisplayState.test.js.map +0 -1
  1584. package/dist/src/ui/hooks/useIdeTrustListener.test.d.ts +0 -6
  1585. package/dist/src/ui/hooks/useIdeTrustListener.test.js +0 -225
  1586. package/dist/src/ui/hooks/useIdeTrustListener.test.js.map +0 -1
  1587. package/dist/src/ui/hooks/useIncludeDirsTrust.test.d.ts +0 -6
  1588. package/dist/src/ui/hooks/useIncludeDirsTrust.test.js +0 -174
  1589. package/dist/src/ui/hooks/useIncludeDirsTrust.test.js.map +0 -1
  1590. package/dist/src/ui/hooks/useInlineEditBuffer.test.d.ts +0 -6
  1591. package/dist/src/ui/hooks/useInlineEditBuffer.test.js +0 -112
  1592. package/dist/src/ui/hooks/useInlineEditBuffer.test.js.map +0 -1
  1593. package/dist/src/ui/hooks/useInputHistory.test.d.ts +0 -6
  1594. package/dist/src/ui/hooks/useInputHistory.test.js +0 -389
  1595. package/dist/src/ui/hooks/useInputHistory.test.js.map +0 -1
  1596. package/dist/src/ui/hooks/useInputHistoryStore.test.d.ts +0 -6
  1597. package/dist/src/ui/hooks/useInputHistoryStore.test.js +0 -238
  1598. package/dist/src/ui/hooks/useInputHistoryStore.test.js.map +0 -1
  1599. package/dist/src/ui/hooks/useKeypress.test.d.ts +0 -6
  1600. package/dist/src/ui/hooks/useKeypress.test.js +0 -198
  1601. package/dist/src/ui/hooks/useKeypress.test.js.map +0 -1
  1602. package/dist/src/ui/hooks/useLoadingIndicator.test.d.ts +0 -6
  1603. package/dist/src/ui/hooks/useLoadingIndicator.test.js +0 -177
  1604. package/dist/src/ui/hooks/useLoadingIndicator.test.js.map +0 -1
  1605. package/dist/src/ui/hooks/useLogger.test.d.ts +0 -6
  1606. package/dist/src/ui/hooks/useLogger.test.js +0 -44
  1607. package/dist/src/ui/hooks/useLogger.test.js.map +0 -1
  1608. package/dist/src/ui/hooks/useMcpStatus.test.d.ts +0 -6
  1609. package/dist/src/ui/hooks/useMcpStatus.test.js +0 -69
  1610. package/dist/src/ui/hooks/useMcpStatus.test.js.map +0 -1
  1611. package/dist/src/ui/hooks/useMemoryMonitor.test.d.ts +0 -6
  1612. package/dist/src/ui/hooks/useMemoryMonitor.test.js +0 -62
  1613. package/dist/src/ui/hooks/useMemoryMonitor.test.js.map +0 -1
  1614. package/dist/src/ui/hooks/useMessageQueue.test.d.ts +0 -6
  1615. package/dist/src/ui/hooks/useMessageQueue.test.js +0 -365
  1616. package/dist/src/ui/hooks/useMessageQueue.test.js.map +0 -1
  1617. package/dist/src/ui/hooks/useModelCommand.test.d.ts +0 -6
  1618. package/dist/src/ui/hooks/useModelCommand.test.js +0 -45
  1619. package/dist/src/ui/hooks/useModelCommand.test.js.map +0 -1
  1620. package/dist/src/ui/hooks/useMouse.test.d.ts +0 -6
  1621. package/dist/src/ui/hooks/useMouse.test.js +0 -52
  1622. package/dist/src/ui/hooks/useMouse.test.js.map +0 -1
  1623. package/dist/src/ui/hooks/useMouseClick.test.d.ts +0 -6
  1624. package/dist/src/ui/hooks/useMouseClick.test.js +0 -68
  1625. package/dist/src/ui/hooks/useMouseClick.test.js.map +0 -1
  1626. package/dist/src/ui/hooks/usePermissionsModifyTrust.test.d.ts +0 -6
  1627. package/dist/src/ui/hooks/usePermissionsModifyTrust.test.js +0 -291
  1628. package/dist/src/ui/hooks/usePermissionsModifyTrust.test.js.map +0 -1
  1629. package/dist/src/ui/hooks/usePhraseCycler.test.d.ts +0 -6
  1630. package/dist/src/ui/hooks/usePhraseCycler.test.js +0 -187
  1631. package/dist/src/ui/hooks/usePhraseCycler.test.js.map +0 -1
  1632. package/dist/src/ui/hooks/usePrivacySettings.test.d.ts +0 -6
  1633. package/dist/src/ui/hooks/usePrivacySettings.test.js +0 -113
  1634. package/dist/src/ui/hooks/usePrivacySettings.test.js.map +0 -1
  1635. package/dist/src/ui/hooks/useQuotaAndFallback.test.d.ts +0 -6
  1636. package/dist/src/ui/hooks/useQuotaAndFallback.test.js +0 -817
  1637. package/dist/src/ui/hooks/useQuotaAndFallback.test.js.map +0 -1
  1638. package/dist/src/ui/hooks/useReverseSearchCompletion.test.d.ts +0 -6
  1639. package/dist/src/ui/hooks/useReverseSearchCompletion.test.js +0 -168
  1640. package/dist/src/ui/hooks/useReverseSearchCompletion.test.js.map +0 -1
  1641. package/dist/src/ui/hooks/useRewind.test.d.ts +0 -6
  1642. package/dist/src/ui/hooks/useRewind.test.js +0 -100
  1643. package/dist/src/ui/hooks/useRewind.test.js.map +0 -1
  1644. package/dist/src/ui/hooks/useSelectionList.test.d.ts +0 -6
  1645. package/dist/src/ui/hooks/useSelectionList.test.js +0 -960
  1646. package/dist/src/ui/hooks/useSelectionList.test.js.map +0 -1
  1647. package/dist/src/ui/hooks/useSessionBrowser.test.d.ts +0 -6
  1648. package/dist/src/ui/hooks/useSessionBrowser.test.js +0 -277
  1649. package/dist/src/ui/hooks/useSessionBrowser.test.js.map +0 -1
  1650. package/dist/src/ui/hooks/useSessionResume.test.d.ts +0 -6
  1651. package/dist/src/ui/hooks/useSessionResume.test.js +0 -402
  1652. package/dist/src/ui/hooks/useSessionResume.test.js.map +0 -1
  1653. package/dist/src/ui/hooks/useSettingsNavigation.test.d.ts +0 -6
  1654. package/dist/src/ui/hooks/useSettingsNavigation.test.js +0 -87
  1655. package/dist/src/ui/hooks/useSettingsNavigation.test.js.map +0 -1
  1656. package/dist/src/ui/hooks/useShellCompletion.test.d.ts +0 -6
  1657. package/dist/src/ui/hooks/useShellCompletion.test.js +0 -354
  1658. package/dist/src/ui/hooks/useShellCompletion.test.js.map +0 -1
  1659. package/dist/src/ui/hooks/useShellHistory.test.d.ts +0 -6
  1660. package/dist/src/ui/hooks/useShellHistory.test.js +0 -226
  1661. package/dist/src/ui/hooks/useShellHistory.test.js.map +0 -1
  1662. package/dist/src/ui/hooks/useShellInactivityStatus.test.d.ts +0 -6
  1663. package/dist/src/ui/hooks/useShellInactivityStatus.test.js +0 -84
  1664. package/dist/src/ui/hooks/useShellInactivityStatus.test.js.map +0 -1
  1665. package/dist/src/ui/hooks/useSlashCompletion.test.d.ts +0 -10
  1666. package/dist/src/ui/hooks/useSlashCompletion.test.js +0 -977
  1667. package/dist/src/ui/hooks/useSlashCompletion.test.js.map +0 -1
  1668. package/dist/src/ui/hooks/useSnowfall.test.d.ts +0 -6
  1669. package/dist/src/ui/hooks/useSnowfall.test.js +0 -92
  1670. package/dist/src/ui/hooks/useSnowfall.test.js.map +0 -1
  1671. package/dist/src/ui/hooks/useSuspend.test.d.ts +0 -6
  1672. package/dist/src/ui/hooks/useSuspend.test.js +0 -136
  1673. package/dist/src/ui/hooks/useSuspend.test.js.map +0 -1
  1674. package/dist/src/ui/hooks/useTabbedNavigation.test.d.ts +0 -6
  1675. package/dist/src/ui/hooks/useTabbedNavigation.test.js +0 -243
  1676. package/dist/src/ui/hooks/useTabbedNavigation.test.js.map +0 -1
  1677. package/dist/src/ui/hooks/useTerminalTheme.test.d.ts +0 -6
  1678. package/dist/src/ui/hooks/useTerminalTheme.test.js +0 -169
  1679. package/dist/src/ui/hooks/useTerminalTheme.test.js.map +0 -1
  1680. package/dist/src/ui/hooks/useTimer.test.d.ts +0 -6
  1681. package/dist/src/ui/hooks/useTimer.test.js +0 -119
  1682. package/dist/src/ui/hooks/useTimer.test.js.map +0 -1
  1683. package/dist/src/ui/hooks/useTips.test.d.ts +0 -6
  1684. package/dist/src/ui/hooks/useTips.test.js +0 -33
  1685. package/dist/src/ui/hooks/useTips.test.js.map +0 -1
  1686. package/dist/src/ui/hooks/useToolScheduler.test.d.ts +0 -6
  1687. package/dist/src/ui/hooks/useToolScheduler.test.js +0 -534
  1688. package/dist/src/ui/hooks/useToolScheduler.test.js.map +0 -1
  1689. package/dist/src/ui/hooks/useTurnActivityMonitor.test.d.ts +0 -6
  1690. package/dist/src/ui/hooks/useTurnActivityMonitor.test.js +0 -99
  1691. package/dist/src/ui/hooks/useTurnActivityMonitor.test.js.map +0 -1
  1692. package/dist/src/ui/hooks/vim-passthrough.test.d.ts +0 -6
  1693. package/dist/src/ui/hooks/vim-passthrough.test.js +0 -84
  1694. package/dist/src/ui/hooks/vim-passthrough.test.js.map +0 -1
  1695. package/dist/src/ui/hooks/vim.test.d.ts +0 -6
  1696. package/dist/src/ui/hooks/vim.test.js +0 -2156
  1697. package/dist/src/ui/hooks/vim.test.js.map +0 -1
  1698. package/dist/src/ui/key/keyBindings.test.d.ts +0 -6
  1699. package/dist/src/ui/key/keyBindings.test.js +0 -225
  1700. package/dist/src/ui/key/keyBindings.test.js.map +0 -1
  1701. package/dist/src/ui/key/keyMatchers.test.d.ts +0 -6
  1702. package/dist/src/ui/key/keyMatchers.test.js +0 -524
  1703. package/dist/src/ui/key/keyMatchers.test.js.map +0 -1
  1704. package/dist/src/ui/key/keybindingUtils.test.d.ts +0 -6
  1705. package/dist/src/ui/key/keybindingUtils.test.js +0 -121
  1706. package/dist/src/ui/key/keybindingUtils.test.js.map +0 -1
  1707. package/dist/src/ui/layouts/DefaultAppLayout.test.d.ts +0 -6
  1708. package/dist/src/ui/layouts/DefaultAppLayout.test.js +0 -126
  1709. package/dist/src/ui/layouts/DefaultAppLayout.test.js.map +0 -1
  1710. package/dist/src/ui/privacy/CloudFreePrivacyNotice.test.d.ts +0 -6
  1711. package/dist/src/ui/privacy/CloudFreePrivacyNotice.test.js +0 -134
  1712. package/dist/src/ui/privacy/CloudFreePrivacyNotice.test.js.map +0 -1
  1713. package/dist/src/ui/privacy/CloudPaidPrivacyNotice.test.d.ts +0 -6
  1714. package/dist/src/ui/privacy/CloudPaidPrivacyNotice.test.js +0 -43
  1715. package/dist/src/ui/privacy/CloudPaidPrivacyNotice.test.js.map +0 -1
  1716. package/dist/src/ui/privacy/GeminiPrivacyNotice.test.d.ts +0 -6
  1717. package/dist/src/ui/privacy/GeminiPrivacyNotice.test.js +0 -43
  1718. package/dist/src/ui/privacy/GeminiPrivacyNotice.test.js.map +0 -1
  1719. package/dist/src/ui/privacy/PrivacyNotice.test.d.ts +0 -6
  1720. package/dist/src/ui/privacy/PrivacyNotice.test.js +0 -63
  1721. package/dist/src/ui/privacy/PrivacyNotice.test.js.map +0 -1
  1722. package/dist/src/ui/state/extensions.test.d.ts +0 -6
  1723. package/dist/src/ui/state/extensions.test.js +0 -219
  1724. package/dist/src/ui/state/extensions.test.js.map +0 -1
  1725. package/dist/src/ui/themes/color-utils.test.d.ts +0 -6
  1726. package/dist/src/ui/themes/color-utils.test.js +0 -326
  1727. package/dist/src/ui/themes/color-utils.test.js.map +0 -1
  1728. package/dist/src/ui/themes/theme-manager.test.d.ts +0 -6
  1729. package/dist/src/ui/themes/theme-manager.test.js +0 -274
  1730. package/dist/src/ui/themes/theme-manager.test.js.map +0 -1
  1731. package/dist/src/ui/themes/theme.test.d.ts +0 -6
  1732. package/dist/src/ui/themes/theme.test.js +0 -171
  1733. package/dist/src/ui/themes/theme.test.js.map +0 -1
  1734. package/dist/src/ui/utils/CodeColorizer.test.d.ts +0 -6
  1735. package/dist/src/ui/utils/CodeColorizer.test.js +0 -74
  1736. package/dist/src/ui/utils/CodeColorizer.test.js.map +0 -1
  1737. package/dist/src/ui/utils/ConsolePatcher.test.d.ts +0 -6
  1738. package/dist/src/ui/utils/ConsolePatcher.test.js +0 -199
  1739. package/dist/src/ui/utils/ConsolePatcher.test.js.map +0 -1
  1740. package/dist/src/ui/utils/MarkdownDisplay.test.d.ts +0 -6
  1741. package/dist/src/ui/utils/MarkdownDisplay.test.js +0 -175
  1742. package/dist/src/ui/utils/MarkdownDisplay.test.js.map +0 -1
  1743. package/dist/src/ui/utils/TableRenderer.test.d.ts +0 -1
  1744. package/dist/src/ui/utils/TableRenderer.test.js +0 -396
  1745. package/dist/src/ui/utils/TableRenderer.test.js.map +0 -1
  1746. package/dist/src/ui/utils/antigravityUtils.test.d.ts +0 -6
  1747. package/dist/src/ui/utils/antigravityUtils.test.js +0 -54
  1748. package/dist/src/ui/utils/antigravityUtils.test.js.map +0 -1
  1749. package/dist/src/ui/utils/borderStyles.test.d.ts +0 -6
  1750. package/dist/src/ui/utils/borderStyles.test.js +0 -172
  1751. package/dist/src/ui/utils/borderStyles.test.js.map +0 -1
  1752. package/dist/src/ui/utils/clipboardUtils.test.d.ts +0 -6
  1753. package/dist/src/ui/utils/clipboardUtils.test.js +0 -442
  1754. package/dist/src/ui/utils/clipboardUtils.test.js.map +0 -1
  1755. package/dist/src/ui/utils/clipboardUtils.windows.test.d.ts +0 -6
  1756. package/dist/src/ui/utils/clipboardUtils.windows.test.js +0 -56
  1757. package/dist/src/ui/utils/clipboardUtils.windows.test.js.map +0 -1
  1758. package/dist/src/ui/utils/commandUtils.test.d.ts +0 -6
  1759. package/dist/src/ui/utils/commandUtils.test.js +0 -511
  1760. package/dist/src/ui/utils/commandUtils.test.js.map +0 -1
  1761. package/dist/src/ui/utils/computeStats.test.d.ts +0 -6
  1762. package/dist/src/ui/utils/computeStats.test.js +0 -279
  1763. package/dist/src/ui/utils/computeStats.test.js.map +0 -1
  1764. package/dist/src/ui/utils/directoryUtils.test.d.ts +0 -6
  1765. package/dist/src/ui/utils/directoryUtils.test.js +0 -239
  1766. package/dist/src/ui/utils/directoryUtils.test.js.map +0 -1
  1767. package/dist/src/ui/utils/displayUtils.test.d.ts +0 -6
  1768. package/dist/src/ui/utils/displayUtils.test.js +0 -61
  1769. package/dist/src/ui/utils/displayUtils.test.js.map +0 -1
  1770. package/dist/src/ui/utils/formatters.test.d.ts +0 -6
  1771. package/dist/src/ui/utils/formatters.test.js +0 -152
  1772. package/dist/src/ui/utils/formatters.test.js.map +0 -1
  1773. package/dist/src/ui/utils/highlight.test.d.ts +0 -6
  1774. package/dist/src/ui/utils/highlight.test.js +0 -205
  1775. package/dist/src/ui/utils/highlight.test.js.map +0 -1
  1776. package/dist/src/ui/utils/input.test.d.ts +0 -6
  1777. package/dist/src/ui/utils/input.test.js +0 -44
  1778. package/dist/src/ui/utils/input.test.js.map +0 -1
  1779. package/dist/src/ui/utils/latexToUnicode.test.d.ts +0 -6
  1780. package/dist/src/ui/utils/latexToUnicode.test.js +0 -222
  1781. package/dist/src/ui/utils/latexToUnicode.test.js.map +0 -1
  1782. package/dist/src/ui/utils/markdownParsingUtils.test.d.ts +0 -6
  1783. package/dist/src/ui/utils/markdownParsingUtils.test.js +0 -201
  1784. package/dist/src/ui/utils/markdownParsingUtils.test.js.map +0 -1
  1785. package/dist/src/ui/utils/markdownUtilities.test.d.ts +0 -6
  1786. package/dist/src/ui/utils/markdownUtilities.test.js +0 -42
  1787. package/dist/src/ui/utils/markdownUtilities.test.js.map +0 -1
  1788. package/dist/src/ui/utils/memorySnapshot.test.d.ts +0 -6
  1789. package/dist/src/ui/utils/memorySnapshot.test.js +0 -62
  1790. package/dist/src/ui/utils/memorySnapshot.test.js.map +0 -1
  1791. package/dist/src/ui/utils/mouse.test.d.ts +0 -6
  1792. package/dist/src/ui/utils/mouse.test.js +0 -136
  1793. package/dist/src/ui/utils/mouse.test.js.map +0 -1
  1794. package/dist/src/ui/utils/pendingAttentionNotification.test.d.ts +0 -6
  1795. package/dist/src/ui/utils/pendingAttentionNotification.test.js +0 -79
  1796. package/dist/src/ui/utils/pendingAttentionNotification.test.js.map +0 -1
  1797. package/dist/src/ui/utils/rewindFileOps.test.d.ts +0 -6
  1798. package/dist/src/ui/utils/rewindFileOps.test.js +0 -375
  1799. package/dist/src/ui/utils/rewindFileOps.test.js.map +0 -1
  1800. package/dist/src/ui/utils/terminalCapabilityManager.test.d.ts +0 -6
  1801. package/dist/src/ui/utils/terminalCapabilityManager.test.js +0 -400
  1802. package/dist/src/ui/utils/terminalCapabilityManager.test.js.map +0 -1
  1803. package/dist/src/ui/utils/terminalSetup.test.d.ts +0 -6
  1804. package/dist/src/ui/utils/terminalSetup.test.js +0 -201
  1805. package/dist/src/ui/utils/terminalSetup.test.js.map +0 -1
  1806. package/dist/src/ui/utils/textOutput.test.d.ts +0 -6
  1807. package/dist/src/ui/utils/textOutput.test.js +0 -80
  1808. package/dist/src/ui/utils/textOutput.test.js.map +0 -1
  1809. package/dist/src/ui/utils/textUtils.test.d.ts +0 -6
  1810. package/dist/src/ui/utils/textUtils.test.js +0 -430
  1811. package/dist/src/ui/utils/textUtils.test.js.map +0 -1
  1812. package/dist/src/ui/utils/toolLayoutUtils.test.d.ts +0 -6
  1813. package/dist/src/ui/utils/toolLayoutUtils.test.js +0 -187
  1814. package/dist/src/ui/utils/toolLayoutUtils.test.js.map +0 -1
  1815. package/dist/src/ui/utils/ui-sizing.test.d.ts +0 -6
  1816. package/dist/src/ui/utils/ui-sizing.test.js +0 -25
  1817. package/dist/src/ui/utils/ui-sizing.test.js.map +0 -1
  1818. package/dist/src/ui/utils/updateCheck.test.d.ts +0 -6
  1819. package/dist/src/ui/utils/updateCheck.test.js +0 -207
  1820. package/dist/src/ui/utils/updateCheck.test.js.map +0 -1
  1821. package/dist/src/ui/utils/urlSecurityUtils.test.d.ts +0 -6
  1822. package/dist/src/ui/utils/urlSecurityUtils.test.js +0 -49
  1823. package/dist/src/ui/utils/urlSecurityUtils.test.js.map +0 -1
  1824. package/dist/src/utils/activityLogger.test.d.ts +0 -6
  1825. package/dist/src/utils/activityLogger.test.js +0 -196
  1826. package/dist/src/utils/activityLogger.test.js.map +0 -1
  1827. package/dist/src/utils/agentSettings.test.d.ts +0 -6
  1828. package/dist/src/utils/agentSettings.test.js +0 -111
  1829. package/dist/src/utils/agentSettings.test.js.map +0 -1
  1830. package/dist/src/utils/agentUtils.test.d.ts +0 -6
  1831. package/dist/src/utils/agentUtils.test.js +0 -121
  1832. package/dist/src/utils/agentUtils.test.js.map +0 -1
  1833. package/dist/src/utils/cleanup.test.d.ts +0 -6
  1834. package/dist/src/utils/cleanup.test.js +0 -256
  1835. package/dist/src/utils/cleanup.test.js.map +0 -1
  1836. package/dist/src/utils/commands.test.d.ts +0 -6
  1837. package/dist/src/utils/commands.test.js +0 -194
  1838. package/dist/src/utils/commands.test.js.map +0 -1
  1839. package/dist/src/utils/commentJson.test.d.ts +0 -6
  1840. package/dist/src/utils/commentJson.test.js +0 -308
  1841. package/dist/src/utils/commentJson.test.js.map +0 -1
  1842. package/dist/src/utils/deepMerge.test.d.ts +0 -6
  1843. package/dist/src/utils/deepMerge.test.js +0 -211
  1844. package/dist/src/utils/deepMerge.test.js.map +0 -1
  1845. package/dist/src/utils/devtoolsService.test.d.ts +0 -6
  1846. package/dist/src/utils/devtoolsService.test.js +0 -346
  1847. package/dist/src/utils/devtoolsService.test.js.map +0 -1
  1848. package/dist/src/utils/dialogScopeUtils.test.d.ts +0 -6
  1849. package/dist/src/utils/dialogScopeUtils.test.js +0 -81
  1850. package/dist/src/utils/dialogScopeUtils.test.js.map +0 -1
  1851. package/dist/src/utils/envVarResolver.test.d.ts +0 -6
  1852. package/dist/src/utils/envVarResolver.test.js +0 -238
  1853. package/dist/src/utils/envVarResolver.test.js.map +0 -1
  1854. package/dist/src/utils/errors.test.d.ts +0 -6
  1855. package/dist/src/utils/errors.test.js +0 -420
  1856. package/dist/src/utils/errors.test.js.map +0 -1
  1857. package/dist/src/utils/events.test.d.ts +0 -6
  1858. package/dist/src/utils/events.test.js +0 -24
  1859. package/dist/src/utils/events.test.js.map +0 -1
  1860. package/dist/src/utils/featureToggleUtils.test.d.ts +0 -6
  1861. package/dist/src/utils/featureToggleUtils.test.js +0 -126
  1862. package/dist/src/utils/featureToggleUtils.test.js.map +0 -1
  1863. package/dist/src/utils/gitUtils.test.d.ts +0 -6
  1864. package/dist/src/utils/gitUtils.test.js +0 -172
  1865. package/dist/src/utils/gitUtils.test.js.map +0 -1
  1866. package/dist/src/utils/handleAutoUpdate.test.d.ts +0 -6
  1867. package/dist/src/utils/handleAutoUpdate.test.js +0 -399
  1868. package/dist/src/utils/handleAutoUpdate.test.js.map +0 -1
  1869. package/dist/src/utils/hookSettings.test.d.ts +0 -6
  1870. package/dist/src/utils/hookSettings.test.js +0 -117
  1871. package/dist/src/utils/hookSettings.test.js.map +0 -1
  1872. package/dist/src/utils/hookUtils.test.d.ts +0 -6
  1873. package/dist/src/utils/hookUtils.test.js +0 -113
  1874. package/dist/src/utils/hookUtils.test.js.map +0 -1
  1875. package/dist/src/utils/installationInfo.test.d.ts +0 -6
  1876. package/dist/src/utils/installationInfo.test.js +0 -322
  1877. package/dist/src/utils/installationInfo.test.js.map +0 -1
  1878. package/dist/src/utils/jsonoutput.test.d.ts +0 -6
  1879. package/dist/src/utils/jsonoutput.test.js +0 -74
  1880. package/dist/src/utils/jsonoutput.test.js.map +0 -1
  1881. package/dist/src/utils/logCleanup.test.d.ts +0 -6
  1882. package/dist/src/utils/logCleanup.test.js +0 -87
  1883. package/dist/src/utils/logCleanup.test.js.map +0 -1
  1884. package/dist/src/utils/math.test.d.ts +0 -6
  1885. package/dist/src/utils/math.test.js +0 -23
  1886. package/dist/src/utils/math.test.js.map +0 -1
  1887. package/dist/src/utils/persistentState.test.d.ts +0 -6
  1888. package/dist/src/utils/persistentState.test.js +0 -68
  1889. package/dist/src/utils/persistentState.test.js.map +0 -1
  1890. package/dist/src/utils/processUtils.test.d.ts +0 -6
  1891. package/dist/src/utils/processUtils.test.js +0 -150
  1892. package/dist/src/utils/processUtils.test.js.map +0 -1
  1893. package/dist/src/utils/readStdin.test.d.ts +0 -6
  1894. package/dist/src/utils/readStdin.test.js +0 -149
  1895. package/dist/src/utils/readStdin.test.js.map +0 -1
  1896. package/dist/src/utils/readStdin_safety.test.d.ts +0 -6
  1897. package/dist/src/utils/readStdin_safety.test.js +0 -68
  1898. package/dist/src/utils/readStdin_safety.test.js.map +0 -1
  1899. package/dist/src/utils/relaunch.test.d.ts +0 -6
  1900. package/dist/src/utils/relaunch.test.js +0 -275
  1901. package/dist/src/utils/relaunch.test.js.map +0 -1
  1902. package/dist/src/utils/resolvePath.test.d.ts +0 -6
  1903. package/dist/src/utils/resolvePath.test.js +0 -34
  1904. package/dist/src/utils/resolvePath.test.js.map +0 -1
  1905. package/dist/src/utils/sandbox.test.d.ts +0 -6
  1906. package/dist/src/utils/sandbox.test.js +0 -725
  1907. package/dist/src/utils/sandbox.test.js.map +0 -1
  1908. package/dist/src/utils/sandboxUtils.test.d.ts +0 -6
  1909. package/dist/src/utils/sandboxUtils.test.js +0 -190
  1910. package/dist/src/utils/sandboxUtils.test.js.map +0 -1
  1911. package/dist/src/utils/sessionCleanup.integration.test.d.ts +0 -6
  1912. package/dist/src/utils/sessionCleanup.integration.test.js +0 -276
  1913. package/dist/src/utils/sessionCleanup.integration.test.js.map +0 -1
  1914. package/dist/src/utils/sessionCleanup.test.d.ts +0 -6
  1915. package/dist/src/utils/sessionCleanup.test.js +0 -829
  1916. package/dist/src/utils/sessionCleanup.test.js.map +0 -1
  1917. package/dist/src/utils/sessionUtils.test.d.ts +0 -6
  1918. package/dist/src/utils/sessionUtils.test.js +0 -815
  1919. package/dist/src/utils/sessionUtils.test.js.map +0 -1
  1920. package/dist/src/utils/sessions.test.d.ts +0 -6
  1921. package/dist/src/utils/sessions.test.js +0 -580
  1922. package/dist/src/utils/sessions.test.js.map +0 -1
  1923. package/dist/src/utils/settingsUtils.test.d.ts +0 -6
  1924. package/dist/src/utils/settingsUtils.test.js +0 -673
  1925. package/dist/src/utils/settingsUtils.test.js.map +0 -1
  1926. package/dist/src/utils/skillSettings.test.d.ts +0 -6
  1927. package/dist/src/utils/skillSettings.test.js +0 -142
  1928. package/dist/src/utils/skillSettings.test.js.map +0 -1
  1929. package/dist/src/utils/skillUtils.test.d.ts +0 -6
  1930. package/dist/src/utils/skillUtils.test.js +0 -248
  1931. package/dist/src/utils/skillUtils.test.js.map +0 -1
  1932. package/dist/src/utils/startupWarnings.test.d.ts +0 -6
  1933. package/dist/src/utils/startupWarnings.test.js +0 -61
  1934. package/dist/src/utils/startupWarnings.test.js.map +0 -1
  1935. package/dist/src/utils/terminalNotifications.test.d.ts +0 -6
  1936. package/dist/src/utils/terminalNotifications.test.js +0 -219
  1937. package/dist/src/utils/terminalNotifications.test.js.map +0 -1
  1938. package/dist/src/utils/terminalTheme.test.d.ts +0 -6
  1939. package/dist/src/utils/terminalTheme.test.js +0 -91
  1940. package/dist/src/utils/terminalTheme.test.js.map +0 -1
  1941. package/dist/src/utils/tierUtils.test.d.ts +0 -6
  1942. package/dist/src/utils/tierUtils.test.js +0 -25
  1943. package/dist/src/utils/tierUtils.test.js.map +0 -1
  1944. package/dist/src/utils/toolOutputCleanup.test.d.ts +0 -6
  1945. package/dist/src/utils/toolOutputCleanup.test.js +0 -280
  1946. package/dist/src/utils/toolOutputCleanup.test.js.map +0 -1
  1947. package/dist/src/utils/updateEventEmitter.test.d.ts +0 -6
  1948. package/dist/src/utils/updateEventEmitter.test.js +0 -18
  1949. package/dist/src/utils/updateEventEmitter.test.js.map +0 -1
  1950. package/dist/src/utils/userStartupWarnings.test.d.ts +0 -6
  1951. package/dist/src/utils/userStartupWarnings.test.js +0 -225
  1952. package/dist/src/utils/userStartupWarnings.test.js.map +0 -1
  1953. package/dist/src/utils/windowTitle.test.d.ts +0 -6
  1954. package/dist/src/utils/windowTitle.test.js +0 -216
  1955. package/dist/src/utils/windowTitle.test.js.map +0 -1
  1956. package/dist/src/utils/worktreeSetup.test.d.ts +0 -6
  1957. package/dist/src/utils/worktreeSetup.test.js +0 -89
  1958. package/dist/src/utils/worktreeSetup.test.js.map +0 -1
  1959. package/dist/src/validateNonInterActiveAuth.test.d.ts +0 -6
  1960. package/dist/src/validateNonInterActiveAuth.test.js +0 -319
  1961. package/dist/src/validateNonInterActiveAuth.test.js.map +0 -1
@@ -1,1800 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2025 Google LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
- import { vi, describe, it, expect, beforeEach, afterEach, afterAll, } from 'vitest';
7
- import * as fs from 'node:fs';
8
- import * as os from 'node:os';
9
- import * as path from 'node:path';
10
- import { ExtensionUninstallEvent, ExtensionDisableEvent, ExtensionEnableEvent, KeychainTokenStorage, loadAgentsFromDirectory, loadSkillsFromDir, getRealPath, normalizePath, } from '@google/gemini-cli-core';
11
- import { loadSettings, createTestMergedSettings, SettingScope, resetSettingsCacheForTesting, } from './settings.js';
12
- import { isWorkspaceTrusted, resetTrustedFoldersForTesting, } from './trustedFolders.js';
13
- import { createExtension } from '../test-utils/createExtension.js';
14
- import { ExtensionEnablementManager } from './extensions/extensionEnablement.js';
15
- import { join } from 'node:path';
16
- import { EXTENSIONS_CONFIG_FILENAME, EXTENSIONS_DIRECTORY_NAME, INSTALL_METADATA_FILENAME, } from './extensions/variables.js';
17
- import { hashValue, ExtensionManager } from './extension-manager.js';
18
- import { ExtensionStorage } from './extensions/storage.js';
19
- import { INSTALL_WARNING_MESSAGE } from './extensions/consent.js';
20
- const mockGit = {
21
- clone: vi.fn(),
22
- getRemotes: vi.fn(),
23
- fetch: vi.fn(),
24
- checkout: vi.fn(),
25
- listRemote: vi.fn(),
26
- revparse: vi.fn(),
27
- // Not a part of the actual API, but we need to use this to do the correct
28
- // file system interactions.
29
- path: vi.fn(),
30
- };
31
- const mockDownloadFromGithubRelease = vi.hoisted(() => vi.fn());
32
- vi.mock('./extensions/github.js', async (importOriginal) => {
33
- const original = await importOriginal();
34
- return {
35
- ...original,
36
- downloadFromGitHubRelease: mockDownloadFromGithubRelease,
37
- };
38
- });
39
- vi.mock('simple-git', () => ({
40
- simpleGit: vi.fn((path) => {
41
- mockGit.path.mockReturnValue(path);
42
- return mockGit;
43
- }),
44
- }));
45
- const mockHomedir = vi.hoisted(() => vi.fn(() => '/tmp/mock-home'));
46
- vi.mock('os', async (importOriginal) => {
47
- const mockedOs = await importOriginal();
48
- return {
49
- ...mockedOs,
50
- homedir: mockHomedir,
51
- };
52
- });
53
- vi.mock('./trustedFolders.js', async (importOriginal) => {
54
- const actual = await importOriginal();
55
- return {
56
- ...actual,
57
- isWorkspaceTrusted: vi.fn(),
58
- };
59
- });
60
- const mockLogExtensionEnable = vi.hoisted(() => vi.fn());
61
- const mockLogExtensionInstallEvent = vi.hoisted(() => vi.fn());
62
- const mockLogExtensionUninstall = vi.hoisted(() => vi.fn());
63
- const mockLogExtensionUpdateEvent = vi.hoisted(() => vi.fn());
64
- const mockLogExtensionDisable = vi.hoisted(() => vi.fn());
65
- const mockIntegrityManager = vi.hoisted(() => ({
66
- verify: vi.fn().mockResolvedValue('verified'),
67
- store: vi.fn().mockResolvedValue(undefined),
68
- }));
69
- vi.mock('@google/gemini-cli-core', async (importOriginal) => {
70
- const actual = await importOriginal();
71
- return {
72
- ...actual,
73
- logExtensionEnable: mockLogExtensionEnable,
74
- logExtensionInstallEvent: mockLogExtensionInstallEvent,
75
- logExtensionUninstall: mockLogExtensionUninstall,
76
- logExtensionUpdateEvent: mockLogExtensionUpdateEvent,
77
- logExtensionDisable: mockLogExtensionDisable,
78
- homedir: mockHomedir,
79
- ExtensionEnableEvent: vi.fn(),
80
- ExtensionInstallEvent: vi.fn(),
81
- ExtensionUninstallEvent: vi.fn(),
82
- ExtensionDisableEvent: vi.fn(),
83
- ExtensionIntegrityManager: vi
84
- .fn()
85
- .mockImplementation(() => mockIntegrityManager),
86
- KeychainTokenStorage: vi.fn().mockImplementation(() => ({
87
- getSecret: vi.fn(),
88
- setSecret: vi.fn(),
89
- deleteSecret: vi.fn(),
90
- listSecrets: vi.fn(),
91
- isAvailable: vi.fn().mockResolvedValue(true),
92
- })),
93
- loadAgentsFromDirectory: vi
94
- .fn()
95
- .mockImplementation(async () => ({ agents: [], errors: [] })),
96
- loadSkillsFromDir: vi.fn().mockImplementation(async () => []),
97
- };
98
- });
99
- vi.mock('child_process', async (importOriginal) => {
100
- const actual = await importOriginal();
101
- return {
102
- ...actual,
103
- execSync: vi.fn(),
104
- };
105
- });
106
- describe('extension tests', () => {
107
- let tempHomeDir;
108
- let tempWorkspaceDir;
109
- let userExtensionsDir;
110
- let extensionManager;
111
- let mockRequestConsent;
112
- let mockPromptForSettings;
113
- let mockKeychainStorage;
114
- let keychainData;
115
- beforeEach(() => {
116
- vi.clearAllMocks();
117
- resetSettingsCacheForTesting();
118
- keychainData = {};
119
- mockKeychainStorage = {
120
- getSecret: vi
121
- .fn()
122
- .mockImplementation(async (key) => keychainData[key] || null),
123
- setSecret: vi
124
- .fn()
125
- .mockImplementation(async (key, value) => {
126
- keychainData[key] = value;
127
- }),
128
- deleteSecret: vi.fn().mockImplementation(async (key) => {
129
- delete keychainData[key];
130
- }),
131
- listSecrets: vi
132
- .fn()
133
- .mockImplementation(async () => Object.keys(keychainData)),
134
- isAvailable: vi.fn().mockResolvedValue(true),
135
- };
136
- KeychainTokenStorage.mockImplementation(() => mockKeychainStorage);
137
- vi.mocked(loadAgentsFromDirectory).mockResolvedValue({
138
- agents: [],
139
- errors: [],
140
- });
141
- vi.mocked(loadSkillsFromDir).mockResolvedValue([]);
142
- tempHomeDir = getRealPath(fs.mkdtempSync(path.join(os.tmpdir(), 'gemini-cli-test-home-')));
143
- tempWorkspaceDir = getRealPath(fs.mkdtempSync(path.join(tempHomeDir, 'gemini-cli-test-workspace-')));
144
- userExtensionsDir = path.join(tempHomeDir, EXTENSIONS_DIRECTORY_NAME);
145
- mockRequestConsent = vi.fn();
146
- mockRequestConsent.mockResolvedValue(true);
147
- mockPromptForSettings = vi.fn();
148
- mockPromptForSettings.mockResolvedValue('');
149
- fs.mkdirSync(userExtensionsDir, { recursive: true });
150
- vi.mocked(os.homedir).mockReturnValue(tempHomeDir);
151
- vi.mocked(isWorkspaceTrusted).mockReturnValue({
152
- isTrusted: true,
153
- source: undefined,
154
- });
155
- vi.spyOn(process, 'cwd').mockReturnValue(tempWorkspaceDir);
156
- const settings = loadSettings(tempWorkspaceDir).merged;
157
- settings.experimental.extensionConfig = true;
158
- extensionManager = new ExtensionManager({
159
- workspaceDir: tempWorkspaceDir,
160
- requestConsent: mockRequestConsent,
161
- requestSetting: mockPromptForSettings,
162
- settings,
163
- integrityManager: mockIntegrityManager,
164
- });
165
- resetTrustedFoldersForTesting();
166
- });
167
- afterEach(() => {
168
- fs.rmSync(tempHomeDir, { recursive: true, force: true });
169
- fs.rmSync(tempWorkspaceDir, { recursive: true, force: true });
170
- vi.restoreAllMocks();
171
- });
172
- describe('loadExtensions', () => {
173
- it('should include extension path in loaded extension', async () => {
174
- const extensionDir = path.join(userExtensionsDir, 'test-extension');
175
- fs.mkdirSync(extensionDir, { recursive: true });
176
- createExtension({
177
- extensionsDir: userExtensionsDir,
178
- name: 'test-extension',
179
- version: '1.0.0',
180
- });
181
- const extensions = await extensionManager.loadExtensions();
182
- expect(extensions).toHaveLength(1);
183
- expect(extensions[0].path).toBe(extensionDir);
184
- expect(extensions[0].name).toBe('test-extension');
185
- });
186
- it('should skip the extension if a context file path is outside the extension directory and log an error', async () => {
187
- const consoleSpy = vi
188
- .spyOn(console, 'error')
189
- .mockImplementation(() => { });
190
- createExtension({
191
- extensionsDir: userExtensionsDir,
192
- name: 'traversal-extension',
193
- version: '1.0.0',
194
- contextFileName: '../secret.txt',
195
- });
196
- const extensions = await extensionManager.loadExtensions();
197
- expect(extensions).toHaveLength(0);
198
- expect(consoleSpy).toHaveBeenCalledWith(expect.stringContaining('traversal-extension: Invalid context file path: "../secret.txt"'));
199
- consoleSpy.mockRestore();
200
- });
201
- it('should load context file path when GEMINI.md is present', async () => {
202
- createExtension({
203
- extensionsDir: userExtensionsDir,
204
- name: 'ext1',
205
- version: '1.0.0',
206
- addContextFile: true,
207
- });
208
- createExtension({
209
- extensionsDir: userExtensionsDir,
210
- name: 'ext2',
211
- version: '2.0.0',
212
- });
213
- const extensions = await extensionManager.loadExtensions();
214
- expect(extensions).toHaveLength(2);
215
- const ext1 = extensions.find((e) => e.name === 'ext1');
216
- const ext2 = extensions.find((e) => e.name === 'ext2');
217
- expect(ext1?.contextFiles).toEqual([
218
- path.join(userExtensionsDir, 'ext1', 'GEMINI.md'),
219
- ]);
220
- expect(ext2?.contextFiles).toEqual([]);
221
- });
222
- it('should load context file path from the extension config', async () => {
223
- createExtension({
224
- extensionsDir: userExtensionsDir,
225
- name: 'ext1',
226
- version: '1.0.0',
227
- addContextFile: false,
228
- contextFileName: 'my-context-file.md',
229
- });
230
- const extensions = await extensionManager.loadExtensions();
231
- expect(extensions).toHaveLength(1);
232
- const ext1 = extensions.find((e) => e.name === 'ext1');
233
- expect(ext1?.contextFiles).toEqual([
234
- path.join(userExtensionsDir, 'ext1', 'my-context-file.md'),
235
- ]);
236
- });
237
- it('should annotate disabled extensions', async () => {
238
- createExtension({
239
- extensionsDir: userExtensionsDir,
240
- name: 'disabled-extension',
241
- version: '1.0.0',
242
- });
243
- createExtension({
244
- extensionsDir: userExtensionsDir,
245
- name: 'enabled-extension',
246
- version: '2.0.0',
247
- });
248
- await extensionManager.loadExtensions();
249
- await extensionManager.disableExtension('disabled-extension', SettingScope.User);
250
- const extensions = extensionManager.getExtensions();
251
- expect(extensions).toHaveLength(2);
252
- expect(extensions[0].name).toBe('disabled-extension');
253
- expect(extensions[0].isActive).toBe(false);
254
- expect(extensions[1].name).toBe('enabled-extension');
255
- expect(extensions[1].isActive).toBe(true);
256
- });
257
- it('should hydrate variables', async () => {
258
- createExtension({
259
- extensionsDir: userExtensionsDir,
260
- name: 'test-extension',
261
- version: '1.0.0',
262
- addContextFile: false,
263
- contextFileName: undefined,
264
- mcpServers: {
265
- 'test-server': {
266
- cwd: '${extensionPath}${/}server',
267
- },
268
- },
269
- });
270
- const extensions = await extensionManager.loadExtensions();
271
- expect(extensions).toHaveLength(1);
272
- const expectedCwd = path.join(userExtensionsDir, 'test-extension', 'server');
273
- expect(extensions[0].mcpServers?.['test-server'].cwd).toBe(expectedCwd);
274
- });
275
- it('should load a linked extension correctly', async () => {
276
- const sourceExtDir = getRealPath(createExtension({
277
- extensionsDir: tempWorkspaceDir,
278
- name: 'my-linked-extension',
279
- version: '1.0.0',
280
- contextFileName: 'context.md',
281
- }));
282
- fs.writeFileSync(path.join(sourceExtDir, 'context.md'), 'linked context');
283
- await extensionManager.loadExtensions();
284
- const extension = await extensionManager.installOrUpdateExtension({
285
- source: sourceExtDir,
286
- type: 'link',
287
- });
288
- expect(extension.name).toEqual('my-linked-extension');
289
- const extensions = extensionManager.getExtensions();
290
- expect(extensions).toHaveLength(1);
291
- const linkedExt = extensions[0];
292
- expect(linkedExt.name).toBe('my-linked-extension');
293
- expect(linkedExt.path).toBe(sourceExtDir);
294
- expect(linkedExt.installMetadata).toEqual({
295
- source: sourceExtDir,
296
- type: 'link',
297
- });
298
- expect(linkedExt.contextFiles).toEqual([
299
- path.join(sourceExtDir, 'context.md'),
300
- ]);
301
- });
302
- it('should load extension policies from the policies directory', async () => {
303
- const extDir = createExtension({
304
- extensionsDir: userExtensionsDir,
305
- name: 'policy-extension',
306
- version: '1.0.0',
307
- });
308
- const policiesDir = path.join(extDir, 'policies');
309
- fs.mkdirSync(policiesDir);
310
- const policiesContent = `
311
- [[rule]]
312
- toolName = "deny_tool"
313
- decision = "deny"
314
- priority = 500
315
-
316
- [[rule]]
317
- toolName = "ask_tool"
318
- decision = "ask_user"
319
- priority = 100
320
- `;
321
- fs.writeFileSync(path.join(policiesDir, 'policies.toml'), policiesContent);
322
- const extensions = await extensionManager.loadExtensions();
323
- expect(extensions).toHaveLength(1);
324
- const extension = extensions[0];
325
- expect(extension.rules).toBeDefined();
326
- expect(extension.rules).toHaveLength(2);
327
- expect(extension.rules.find((r) => r.toolName === 'deny_tool')?.decision).toBe('deny');
328
- expect(extension.rules.find((r) => r.toolName === 'ask_tool')?.decision).toBe('ask_user');
329
- // Verify source is prefixed
330
- expect(extension.rules[0].source).toContain('Extension (policy-extension):');
331
- });
332
- it('should ignore ALLOW rules and YOLO mode from extension policies for security', async () => {
333
- const consoleSpy = vi.spyOn(console, 'warn').mockImplementation(() => { });
334
- const extDir = createExtension({
335
- extensionsDir: userExtensionsDir,
336
- name: 'security-test-extension',
337
- version: '1.0.0',
338
- });
339
- const policiesDir = path.join(extDir, 'policies');
340
- fs.mkdirSync(policiesDir);
341
- const policiesContent = `
342
- [[rule]]
343
- toolName = "allow_tool"
344
- decision = "allow"
345
- priority = 100
346
-
347
- [[rule]]
348
- toolName = "yolo_tool"
349
- decision = "ask_user"
350
- priority = 100
351
- modes = ["yolo"]
352
-
353
- [[safety_checker]]
354
- toolName = "yolo_check"
355
- priority = 100
356
- modes = ["yolo"]
357
- [safety_checker.checker]
358
- type = "external"
359
- name = "yolo-checker"
360
- `;
361
- fs.writeFileSync(path.join(policiesDir, 'policies.toml'), policiesContent);
362
- const extensions = await extensionManager.loadExtensions();
363
- expect(extensions).toHaveLength(1);
364
- const extension = extensions[0];
365
- // ALLOW rules and YOLO rules/checkers should be filtered out
366
- expect(extension.rules).toBeDefined();
367
- expect(extension.rules).toHaveLength(0);
368
- expect(extension.checkers).toBeDefined();
369
- expect(extension.checkers).toHaveLength(0);
370
- // Should have logged warnings
371
- expect(consoleSpy).toHaveBeenCalledWith(expect.stringContaining('attempted to contribute an ALLOW rule'));
372
- expect(consoleSpy).toHaveBeenCalledWith(expect.stringContaining('attempted to contribute a rule for YOLO mode'));
373
- expect(consoleSpy).toHaveBeenCalledWith(expect.stringContaining('attempted to contribute a safety checker for YOLO mode'));
374
- consoleSpy.mockRestore();
375
- });
376
- it('should hydrate ${extensionPath} correctly for linked extensions', async () => {
377
- const sourceExtDir = getRealPath(createExtension({
378
- extensionsDir: tempWorkspaceDir,
379
- name: 'my-linked-extension-with-path',
380
- version: '1.0.0',
381
- mcpServers: {
382
- 'test-server': {
383
- command: 'node',
384
- args: ['${extensionPath}${/}server${/}index.js'],
385
- cwd: '${extensionPath}${/}server',
386
- },
387
- },
388
- }));
389
- await extensionManager.loadExtensions();
390
- await extensionManager.installOrUpdateExtension({
391
- source: sourceExtDir,
392
- type: 'link',
393
- });
394
- const extensions = extensionManager.getExtensions();
395
- expect(extensions).toHaveLength(1);
396
- expect(extensions[0].mcpServers?.['test-server'].cwd).toBe(path.join(sourceExtDir, 'server'));
397
- expect(extensions[0].mcpServers?.['test-server'].args).toEqual([
398
- path.join(sourceExtDir, 'server', 'index.js'),
399
- ]);
400
- });
401
- it('should resolve environment variables in extension configuration', async () => {
402
- process.env['TEST_API_KEY'] = 'test-api-key-123';
403
- process.env['TEST_DB_URL'] = 'postgresql://localhost:5432/testdb';
404
- try {
405
- const userExtensionsDir = path.join(tempHomeDir, EXTENSIONS_DIRECTORY_NAME);
406
- fs.mkdirSync(userExtensionsDir, { recursive: true });
407
- const extDir = path.join(userExtensionsDir, 'test-extension');
408
- fs.mkdirSync(extDir);
409
- // Write config to a separate file for clarity and good practices
410
- const configPath = path.join(extDir, EXTENSIONS_CONFIG_FILENAME);
411
- const extensionConfig = {
412
- name: 'test-extension',
413
- version: '1.0.0',
414
- mcpServers: {
415
- 'test-server': {
416
- command: 'node',
417
- args: ['server.js'],
418
- env: {
419
- API_KEY: '$TEST_API_KEY',
420
- DATABASE_URL: '${TEST_DB_URL}',
421
- STATIC_VALUE: 'no-substitution',
422
- },
423
- },
424
- },
425
- };
426
- fs.writeFileSync(configPath, JSON.stringify(extensionConfig));
427
- const extensions = await extensionManager.loadExtensions();
428
- expect(extensions).toHaveLength(1);
429
- const extension = extensions[0];
430
- expect(extension.name).toBe('test-extension');
431
- expect(extension.mcpServers).toBeDefined();
432
- const serverConfig = extension.mcpServers?.['test-server'];
433
- expect(serverConfig).toBeDefined();
434
- expect(serverConfig?.env).toBeDefined();
435
- expect(serverConfig?.env?.['API_KEY']).toBe('test-api-key-123');
436
- expect(serverConfig?.env?.['DATABASE_URL']).toBe('postgresql://localhost:5432/testdb');
437
- expect(serverConfig?.env?.['STATIC_VALUE']).toBe('no-substitution');
438
- }
439
- finally {
440
- delete process.env['TEST_API_KEY'];
441
- delete process.env['TEST_DB_URL'];
442
- }
443
- });
444
- it('should resolve environment variables from an extension .env file', async () => {
445
- const extDir = createExtension({
446
- extensionsDir: userExtensionsDir,
447
- name: 'test-extension',
448
- version: '1.0.0',
449
- mcpServers: {
450
- 'test-server': {
451
- command: 'node',
452
- args: ['server.js'],
453
- env: {
454
- API_KEY: '$MY_API_KEY',
455
- STATIC_VALUE: 'no-substitution',
456
- },
457
- },
458
- },
459
- settings: [
460
- {
461
- name: 'My API Key',
462
- description: 'API key for testing.',
463
- envVar: 'MY_API_KEY',
464
- },
465
- ],
466
- });
467
- const envFilePath = path.join(extDir, '.env');
468
- fs.writeFileSync(envFilePath, 'MY_API_KEY=test-key-from-file\n');
469
- const extensions = await extensionManager.loadExtensions();
470
- expect(extensions).toHaveLength(1);
471
- const extension = extensions[0];
472
- const serverConfig = extension.mcpServers['test-server'];
473
- expect(serverConfig.env).toBeDefined();
474
- expect(serverConfig.env['API_KEY']).toBe('test-key-from-file');
475
- expect(serverConfig.env['STATIC_VALUE']).toBe('no-substitution');
476
- });
477
- it('should handle missing environment variables gracefully', async () => {
478
- const userExtensionsDir = path.join(tempHomeDir, EXTENSIONS_DIRECTORY_NAME);
479
- fs.mkdirSync(userExtensionsDir, { recursive: true });
480
- const extDir = path.join(userExtensionsDir, 'test-extension');
481
- fs.mkdirSync(extDir);
482
- const extensionConfig = {
483
- name: 'test-extension',
484
- version: '1.0.0',
485
- mcpServers: {
486
- 'test-server': {
487
- command: 'node',
488
- args: ['server.js'],
489
- env: {
490
- MISSING_VAR: '$UNDEFINED_ENV_VAR',
491
- MISSING_VAR_BRACES: '${ALSO_UNDEFINED}',
492
- },
493
- },
494
- },
495
- };
496
- fs.writeFileSync(path.join(extDir, EXTENSIONS_CONFIG_FILENAME), JSON.stringify(extensionConfig));
497
- const extensions = await extensionManager.loadExtensions();
498
- expect(extensions).toHaveLength(1);
499
- const extension = extensions[0];
500
- const serverConfig = extension.mcpServers['test-server'];
501
- expect(serverConfig.env).toBeDefined();
502
- expect(serverConfig.env['MISSING_VAR']).toBe('$UNDEFINED_ENV_VAR');
503
- expect(serverConfig.env['MISSING_VAR_BRACES']).toBe('${ALSO_UNDEFINED}');
504
- });
505
- it('should skip an extension with invalid JSON config and log an error', async () => {
506
- const consoleSpy = vi
507
- .spyOn(console, 'error')
508
- .mockImplementation(() => { });
509
- // Good extension
510
- createExtension({
511
- extensionsDir: userExtensionsDir,
512
- name: 'good-ext',
513
- version: '1.0.0',
514
- });
515
- // Bad extension
516
- const badExtDir = path.join(userExtensionsDir, 'bad-ext');
517
- fs.mkdirSync(badExtDir, { recursive: true });
518
- const badConfigPath = path.join(badExtDir, EXTENSIONS_CONFIG_FILENAME);
519
- fs.writeFileSync(badConfigPath, '{ "name": "bad-ext"'); // Malformed
520
- const extensions = await extensionManager.loadExtensions();
521
- expect(extensions).toHaveLength(1);
522
- expect(extensions[0].name).toBe('good-ext');
523
- expect(consoleSpy).toHaveBeenCalledWith(expect.stringContaining(`Warning: Skipping extension in ${badExtDir}: Failed to load extension config from ${badConfigPath}`));
524
- consoleSpy.mockRestore();
525
- });
526
- it('should skip an extension with missing "name" in config and log an error', async () => {
527
- const consoleSpy = vi
528
- .spyOn(console, 'error')
529
- .mockImplementation(() => { });
530
- // Good extension
531
- createExtension({
532
- extensionsDir: userExtensionsDir,
533
- name: 'good-ext',
534
- version: '1.0.0',
535
- });
536
- // Bad extension
537
- const badExtDir = path.join(userExtensionsDir, 'bad-ext-no-name');
538
- fs.mkdirSync(badExtDir, { recursive: true });
539
- const badConfigPath = path.join(badExtDir, EXTENSIONS_CONFIG_FILENAME);
540
- fs.writeFileSync(badConfigPath, JSON.stringify({ version: '1.0.0' }));
541
- const extensions = await extensionManager.loadExtensions();
542
- expect(extensions).toHaveLength(1);
543
- expect(extensions[0].name).toBe('good-ext');
544
- expect(consoleSpy).toHaveBeenCalledWith(expect.stringContaining(`Warning: Skipping extension in ${badExtDir}: Failed to load extension config from ${badConfigPath}: Invalid configuration in ${badConfigPath}: missing "name"`));
545
- consoleSpy.mockRestore();
546
- });
547
- it('should filter trust out of mcp servers', async () => {
548
- createExtension({
549
- extensionsDir: userExtensionsDir,
550
- name: 'test-extension',
551
- version: '1.0.0',
552
- mcpServers: {
553
- 'test-server': {
554
- command: 'node',
555
- args: ['server.js'],
556
- trust: true,
557
- },
558
- },
559
- });
560
- const extensions = await extensionManager.loadExtensions();
561
- expect(extensions).toHaveLength(1);
562
- expect(extensions[0].mcpServers?.['test-server'].trust).toBeUndefined();
563
- });
564
- it('should log an error for invalid extension names during loading', async () => {
565
- const consoleSpy = vi
566
- .spyOn(console, 'error')
567
- .mockImplementation(() => { });
568
- createExtension({
569
- extensionsDir: userExtensionsDir,
570
- name: 'bad_name',
571
- version: '1.0.0',
572
- });
573
- const extensions = await extensionManager.loadExtensions();
574
- const extension = extensions.find((e) => e.name === 'bad_name');
575
- expect(extension).toBeUndefined();
576
- expect(consoleSpy).toHaveBeenCalledWith(expect.stringContaining('Invalid extension name: "bad_name"'));
577
- consoleSpy.mockRestore();
578
- });
579
- it('should not load github extensions and log a warning if blockGitExtensions is set', async () => {
580
- const consoleSpy = vi.spyOn(console, 'warn').mockImplementation(() => { });
581
- createExtension({
582
- extensionsDir: userExtensionsDir,
583
- name: 'my-ext',
584
- version: '1.0.0',
585
- installMetadata: {
586
- type: 'git',
587
- source: 'http://somehost.com/foo/bar',
588
- },
589
- });
590
- const blockGitExtensionsSetting = createTestMergedSettings({
591
- security: { blockGitExtensions: true },
592
- });
593
- extensionManager = new ExtensionManager({
594
- workspaceDir: tempWorkspaceDir,
595
- requestConsent: mockRequestConsent,
596
- requestSetting: mockPromptForSettings,
597
- settings: blockGitExtensionsSetting,
598
- integrityManager: mockIntegrityManager,
599
- });
600
- const extensions = await extensionManager.loadExtensions();
601
- const extension = extensions.find((e) => e.name === 'my-ext');
602
- expect(extension).toBeUndefined();
603
- expect(consoleSpy).toHaveBeenCalledWith(expect.stringContaining('Extensions from remote sources is disallowed by your current settings.'));
604
- consoleSpy.mockRestore();
605
- });
606
- it('should load allowed extensions if the allowlist is set.', async () => {
607
- createExtension({
608
- extensionsDir: userExtensionsDir,
609
- name: 'my-ext',
610
- version: '1.0.0',
611
- installMetadata: {
612
- type: 'git',
613
- source: 'http://allowed.com/foo/bar',
614
- },
615
- });
616
- const extensionAllowlistSetting = createTestMergedSettings({
617
- security: {
618
- allowedExtensions: ['\\b(https?:\\/\\/)?(www\\.)?allowed\\.com\\S*'],
619
- },
620
- });
621
- extensionManager = new ExtensionManager({
622
- workspaceDir: tempWorkspaceDir,
623
- requestConsent: mockRequestConsent,
624
- requestSetting: mockPromptForSettings,
625
- settings: extensionAllowlistSetting,
626
- integrityManager: mockIntegrityManager,
627
- });
628
- const extensions = await extensionManager.loadExtensions();
629
- expect(extensions).toHaveLength(1);
630
- expect(extensions[0].name).toBe('my-ext');
631
- });
632
- it('should not load disallowed extensions and log a warning if the allowlist is set.', async () => {
633
- const consoleSpy = vi.spyOn(console, 'warn').mockImplementation(() => { });
634
- createExtension({
635
- extensionsDir: userExtensionsDir,
636
- name: 'my-ext',
637
- version: '1.0.0',
638
- installMetadata: {
639
- type: 'git',
640
- source: 'http://notallowed.com/foo/bar',
641
- },
642
- });
643
- const extensionAllowlistSetting = createTestMergedSettings({
644
- security: {
645
- allowedExtensions: ['\\b(https?:\\/\\/)?(www\\.)?allowed\\.com\\S*'],
646
- },
647
- });
648
- extensionManager = new ExtensionManager({
649
- workspaceDir: tempWorkspaceDir,
650
- requestConsent: mockRequestConsent,
651
- requestSetting: mockPromptForSettings,
652
- settings: extensionAllowlistSetting,
653
- integrityManager: mockIntegrityManager,
654
- });
655
- const extensions = await extensionManager.loadExtensions();
656
- const extension = extensions.find((e) => e.name === 'my-ext');
657
- expect(extension).toBeUndefined();
658
- expect(consoleSpy).toHaveBeenCalledWith(expect.stringContaining('This extension is not allowed by the "allowedExtensions" security setting'));
659
- consoleSpy.mockRestore();
660
- });
661
- it('should not load any extensions if admin.extensions.enabled is false', async () => {
662
- createExtension({
663
- extensionsDir: userExtensionsDir,
664
- name: 'test-extension',
665
- version: '1.0.0',
666
- });
667
- const loadedSettings = loadSettings(tempWorkspaceDir).merged;
668
- loadedSettings.admin.extensions.enabled = false;
669
- extensionManager = new ExtensionManager({
670
- workspaceDir: tempWorkspaceDir,
671
- requestConsent: mockRequestConsent,
672
- requestSetting: mockPromptForSettings,
673
- settings: loadedSettings,
674
- integrityManager: mockIntegrityManager,
675
- });
676
- const extensions = await extensionManager.loadExtensions();
677
- expect(extensions).toEqual([]);
678
- });
679
- it('should not load mcpServers if admin.mcp.enabled is false', async () => {
680
- createExtension({
681
- extensionsDir: userExtensionsDir,
682
- name: 'test-extension',
683
- version: '1.0.0',
684
- mcpServers: {
685
- 'test-server': { command: 'echo', args: ['hello'] },
686
- },
687
- });
688
- const loadedSettings = loadSettings(tempWorkspaceDir).merged;
689
- loadedSettings.admin.mcp.enabled = false;
690
- extensionManager = new ExtensionManager({
691
- workspaceDir: tempWorkspaceDir,
692
- requestConsent: mockRequestConsent,
693
- requestSetting: mockPromptForSettings,
694
- settings: loadedSettings,
695
- integrityManager: mockIntegrityManager,
696
- });
697
- const extensions = await extensionManager.loadExtensions();
698
- expect(extensions).toHaveLength(1);
699
- expect(extensions[0].mcpServers).toBeUndefined();
700
- });
701
- it('should load mcpServers if admin.mcp.enabled is true', async () => {
702
- createExtension({
703
- extensionsDir: userExtensionsDir,
704
- name: 'test-extension',
705
- version: '1.0.0',
706
- mcpServers: {
707
- 'test-server': { command: 'echo', args: ['hello'] },
708
- },
709
- });
710
- const loadedSettings = loadSettings(tempWorkspaceDir).merged;
711
- loadedSettings.admin.mcp.enabled = true;
712
- extensionManager = new ExtensionManager({
713
- workspaceDir: tempWorkspaceDir,
714
- requestConsent: mockRequestConsent,
715
- requestSetting: mockPromptForSettings,
716
- settings: loadedSettings,
717
- integrityManager: mockIntegrityManager,
718
- });
719
- const extensions = await extensionManager.loadExtensions();
720
- expect(extensions).toHaveLength(1);
721
- expect(extensions[0].mcpServers).toEqual({
722
- 'test-server': { command: 'echo', args: ['hello'] },
723
- });
724
- });
725
- describe('id generation', () => {
726
- it.each([
727
- {
728
- description: 'should generate id from source for non-github git urls',
729
- installMetadata: {
730
- type: 'git',
731
- source: 'http://somehost.com/foo/bar',
732
- },
733
- expectedIdSource: 'http://somehost.com/foo/bar',
734
- },
735
- {
736
- description: 'should generate id from owner/repo for github http urls',
737
- installMetadata: {
738
- type: 'git',
739
- source: 'http://github.com/foo/bar',
740
- },
741
- expectedIdSource: 'https://github.com/foo/bar',
742
- },
743
- {
744
- description: 'should generate id from owner/repo for github ssh urls',
745
- installMetadata: {
746
- type: 'git',
747
- source: 'git@github.com:foo/bar',
748
- },
749
- expectedIdSource: 'https://github.com/foo/bar',
750
- },
751
- {
752
- description: 'should generate id from source for github-release extension',
753
- installMetadata: {
754
- type: 'github-release',
755
- source: 'https://github.com/foo/bar',
756
- },
757
- expectedIdSource: 'https://github.com/foo/bar',
758
- },
759
- {
760
- description: 'should generate id from the original source for local extension',
761
- installMetadata: {
762
- type: 'local',
763
- source: '/some/path',
764
- },
765
- expectedIdSource: '/some/path',
766
- },
767
- ])('$description', async ({ installMetadata, expectedIdSource }) => {
768
- createExtension({
769
- extensionsDir: userExtensionsDir,
770
- name: 'my-ext',
771
- version: '1.0.0',
772
- installMetadata,
773
- });
774
- const extensions = await extensionManager.loadExtensions();
775
- const extension = extensions.find((e) => e.name === 'my-ext');
776
- expect(extension?.id).toBe(hashValue(expectedIdSource));
777
- });
778
- it('should generate id from the original source for linked extensions', async () => {
779
- const extDevelopmentDir = path.join(tempHomeDir, 'local_extensions');
780
- const actualExtensionDir = getRealPath(createExtension({
781
- extensionsDir: extDevelopmentDir,
782
- name: 'link-ext-name',
783
- version: '1.0.0',
784
- }));
785
- await extensionManager.loadExtensions();
786
- await extensionManager.installOrUpdateExtension({
787
- type: 'link',
788
- source: actualExtensionDir,
789
- });
790
- const extension = extensionManager
791
- .getExtensions()
792
- .find((e) => e.name === 'link-ext-name');
793
- expect(extension?.id).toBe(hashValue(actualExtensionDir));
794
- });
795
- it('should generate id from name for extension with no install metadata', async () => {
796
- createExtension({
797
- extensionsDir: userExtensionsDir,
798
- name: 'no-meta-name',
799
- version: '1.0.0',
800
- });
801
- const extensions = await extensionManager.loadExtensions();
802
- const extension = extensions.find((e) => e.name === 'no-meta-name');
803
- expect(extension?.id).toBe(hashValue('no-meta-name'));
804
- });
805
- it('should load extension hooks and hydrate variables', async () => {
806
- const extDir = createExtension({
807
- extensionsDir: userExtensionsDir,
808
- name: 'hook-extension',
809
- version: '1.0.0',
810
- });
811
- const hooksDir = path.join(extDir, 'hooks');
812
- fs.mkdirSync(hooksDir);
813
- const hooksConfig = {
814
- enabled: false,
815
- hooks: {
816
- BeforeTool: [
817
- {
818
- matcher: '.*',
819
- hooks: [
820
- {
821
- type: 'command',
822
- command: 'echo ${extensionPath}',
823
- },
824
- ],
825
- },
826
- ],
827
- },
828
- };
829
- fs.writeFileSync(path.join(hooksDir, 'hooks.json'), JSON.stringify(hooksConfig));
830
- const settings = loadSettings(tempWorkspaceDir).merged;
831
- settings.hooksConfig.enabled = true;
832
- extensionManager = new ExtensionManager({
833
- workspaceDir: tempWorkspaceDir,
834
- requestConsent: mockRequestConsent,
835
- requestSetting: mockPromptForSettings,
836
- settings,
837
- integrityManager: mockIntegrityManager,
838
- });
839
- const extensions = await extensionManager.loadExtensions();
840
- expect(extensions).toHaveLength(1);
841
- const extension = extensions[0];
842
- expect(extension.hooks).toBeDefined();
843
- expect(extension.hooks?.BeforeTool).toHaveLength(1);
844
- expect(extension.hooks?.BeforeTool?.[0].hooks[0].command).toBe(`echo ${extDir}`);
845
- });
846
- it('should not load hooks if hooks.enabled is false', async () => {
847
- const extDir = createExtension({
848
- extensionsDir: userExtensionsDir,
849
- name: 'hook-extension-disabled',
850
- version: '1.0.0',
851
- });
852
- const hooksDir = path.join(extDir, 'hooks');
853
- fs.mkdirSync(hooksDir);
854
- fs.writeFileSync(path.join(hooksDir, 'hooks.json'), JSON.stringify({ hooks: { BeforeTool: [] }, enabled: false }));
855
- const settings = loadSettings(tempWorkspaceDir).merged;
856
- settings.hooksConfig.enabled = false;
857
- extensionManager = new ExtensionManager({
858
- workspaceDir: tempWorkspaceDir,
859
- requestConsent: mockRequestConsent,
860
- requestSetting: mockPromptForSettings,
861
- settings,
862
- integrityManager: mockIntegrityManager,
863
- });
864
- const extensions = await extensionManager.loadExtensions();
865
- expect(extensions).toHaveLength(1);
866
- expect(extensions[0].hooks).toBeUndefined();
867
- });
868
- it('should warn about hooks during installation', async () => {
869
- const requestConsentSpy = vi.fn().mockResolvedValue(true);
870
- extensionManager.setRequestConsent(requestConsentSpy);
871
- const sourceExtDir = path.join(tempWorkspaceDir, 'hook-extension-source');
872
- fs.mkdirSync(sourceExtDir, { recursive: true });
873
- const hooksDir = path.join(sourceExtDir, 'hooks');
874
- fs.mkdirSync(hooksDir);
875
- fs.writeFileSync(path.join(hooksDir, 'hooks.json'), JSON.stringify({ hooks: {} }));
876
- fs.writeFileSync(path.join(sourceExtDir, 'gemini-extension.json'), JSON.stringify({
877
- name: 'hook-extension-install',
878
- version: '1.0.0',
879
- }));
880
- await extensionManager.loadExtensions();
881
- await extensionManager.installOrUpdateExtension({
882
- source: sourceExtDir,
883
- type: 'local',
884
- });
885
- expect(requestConsentSpy).toHaveBeenCalledWith(expect.stringContaining('⚠️ This extension contains Hooks'));
886
- });
887
- });
888
- });
889
- describe('installExtension', () => {
890
- it('should install an extension from a local path', async () => {
891
- const sourceExtDir = getRealPath(createExtension({
892
- extensionsDir: tempHomeDir,
893
- name: 'my-local-extension',
894
- version: '1.0.0',
895
- }));
896
- const targetExtDir = path.join(userExtensionsDir, 'my-local-extension');
897
- const metadataPath = path.join(targetExtDir, INSTALL_METADATA_FILENAME);
898
- await extensionManager.loadExtensions();
899
- await extensionManager.installOrUpdateExtension({
900
- source: sourceExtDir,
901
- type: 'local',
902
- });
903
- expect(fs.existsSync(targetExtDir)).toBe(true);
904
- expect(fs.existsSync(metadataPath)).toBe(true);
905
- const metadata = JSON.parse(fs.readFileSync(metadataPath, 'utf-8'));
906
- expect(metadata).toEqual({
907
- source: sourceExtDir,
908
- type: 'local',
909
- });
910
- fs.rmSync(targetExtDir, { recursive: true, force: true });
911
- });
912
- it('should throw an error if the extension already exists', async () => {
913
- const sourceExtDir = createExtension({
914
- extensionsDir: tempHomeDir,
915
- name: 'my-local-extension',
916
- version: '1.0.0',
917
- });
918
- await extensionManager.loadExtensions();
919
- await extensionManager.installOrUpdateExtension({
920
- source: sourceExtDir,
921
- type: 'local',
922
- });
923
- await expect(extensionManager.installOrUpdateExtension({
924
- source: sourceExtDir,
925
- type: 'local',
926
- })).rejects.toThrow('Extension "my-local-extension" is already installed. Please uninstall it first.');
927
- });
928
- it('should throw an error and cleanup if gemini-extension.json is missing', async () => {
929
- const sourceExtDir = getRealPath(path.join(tempHomeDir, 'bad-extension'));
930
- fs.mkdirSync(sourceExtDir, { recursive: true });
931
- const configPath = path.join(sourceExtDir, EXTENSIONS_CONFIG_FILENAME);
932
- await expect(extensionManager.installOrUpdateExtension({
933
- source: sourceExtDir,
934
- type: 'local',
935
- })).rejects.toThrow(`Configuration file not found at ${configPath}`);
936
- const targetExtDir = path.join(userExtensionsDir, 'bad-extension');
937
- expect(fs.existsSync(targetExtDir)).toBe(false);
938
- });
939
- it('should throw an error for invalid JSON in gemini-extension.json', async () => {
940
- const sourceExtDir = getRealPath(path.join(tempHomeDir, 'bad-json-ext'));
941
- fs.mkdirSync(sourceExtDir, { recursive: true });
942
- const configPath = path.join(sourceExtDir, EXTENSIONS_CONFIG_FILENAME);
943
- fs.writeFileSync(configPath, '{ "name": "bad-json", "version": "1.0.0"'); // Malformed JSON
944
- await expect(extensionManager.installOrUpdateExtension({
945
- source: sourceExtDir,
946
- type: 'local',
947
- })).rejects.toThrow(`Failed to load extension config from ${configPath}`);
948
- });
949
- it('should throw an error for missing name in gemini-extension.json', async () => {
950
- const sourceExtDir = getRealPath(createExtension({
951
- extensionsDir: tempHomeDir,
952
- name: 'missing-name-ext',
953
- version: '1.0.0',
954
- }));
955
- const configPath = path.join(sourceExtDir, EXTENSIONS_CONFIG_FILENAME);
956
- // Overwrite with invalid config
957
- fs.writeFileSync(configPath, JSON.stringify({ version: '1.0.0' }));
958
- await expect(extensionManager.installOrUpdateExtension({
959
- source: sourceExtDir,
960
- type: 'local',
961
- })).rejects.toThrow(`Invalid configuration in ${configPath}: missing "name"`);
962
- });
963
- it('should install an extension from a git URL', async () => {
964
- const gitUrl = 'https://somehost.com/somerepo.git';
965
- const extensionName = 'some-extension';
966
- const targetExtDir = path.join(userExtensionsDir, extensionName);
967
- const metadataPath = path.join(targetExtDir, INSTALL_METADATA_FILENAME);
968
- mockGit.clone.mockImplementation(async (_, destination) => {
969
- fs.mkdirSync(path.join(mockGit.path(), destination), {
970
- recursive: true,
971
- });
972
- fs.writeFileSync(path.join(mockGit.path(), destination, EXTENSIONS_CONFIG_FILENAME), JSON.stringify({ name: extensionName, version: '1.0.0' }));
973
- });
974
- mockGit.getRemotes.mockResolvedValue([{ name: 'origin' }]);
975
- mockDownloadFromGithubRelease.mockResolvedValue({
976
- success: false,
977
- failureReason: 'no release data',
978
- type: 'github-release',
979
- });
980
- await extensionManager.loadExtensions();
981
- await extensionManager.installOrUpdateExtension({
982
- source: gitUrl,
983
- type: 'git',
984
- });
985
- expect(fs.existsSync(targetExtDir)).toBe(true);
986
- expect(fs.existsSync(metadataPath)).toBe(true);
987
- const metadata = JSON.parse(fs.readFileSync(metadataPath, 'utf-8'));
988
- expect(metadata).toEqual({
989
- source: gitUrl,
990
- type: 'git',
991
- });
992
- });
993
- it('should install a linked extension', async () => {
994
- const sourceExtDir = getRealPath(createExtension({
995
- extensionsDir: tempHomeDir,
996
- name: 'my-linked-extension',
997
- version: '1.0.0',
998
- }));
999
- const targetExtDir = path.join(userExtensionsDir, 'my-linked-extension');
1000
- const metadataPath = path.join(targetExtDir, INSTALL_METADATA_FILENAME);
1001
- const configPath = path.join(targetExtDir, EXTENSIONS_CONFIG_FILENAME);
1002
- await extensionManager.loadExtensions();
1003
- await extensionManager.installOrUpdateExtension({
1004
- source: sourceExtDir,
1005
- type: 'link',
1006
- });
1007
- expect(fs.existsSync(targetExtDir)).toBe(true);
1008
- expect(fs.existsSync(metadataPath)).toBe(true);
1009
- expect(fs.existsSync(configPath)).toBe(false);
1010
- const metadata = JSON.parse(fs.readFileSync(metadataPath, 'utf-8'));
1011
- expect(metadata).toEqual({
1012
- source: sourceExtDir,
1013
- type: 'link',
1014
- });
1015
- fs.rmSync(targetExtDir, { recursive: true, force: true });
1016
- });
1017
- it('should not install a github extension if blockGitExtensions is set', async () => {
1018
- const gitUrl = 'https://somehost.com/somerepo.git';
1019
- const blockGitExtensionsSetting = createTestMergedSettings({
1020
- security: { blockGitExtensions: true },
1021
- });
1022
- extensionManager = new ExtensionManager({
1023
- workspaceDir: tempWorkspaceDir,
1024
- requestConsent: mockRequestConsent,
1025
- requestSetting: mockPromptForSettings,
1026
- settings: blockGitExtensionsSetting,
1027
- integrityManager: mockIntegrityManager,
1028
- });
1029
- await extensionManager.loadExtensions();
1030
- await expect(extensionManager.installOrUpdateExtension({
1031
- source: gitUrl,
1032
- type: 'git',
1033
- })).rejects.toThrow('Installing extensions from remote sources is disallowed by your current settings.');
1034
- });
1035
- it('should not install a disallowed extension if the allowlist is set', async () => {
1036
- const gitUrl = 'https://somehost.com/somerepo.git';
1037
- const allowedExtensionsSetting = createTestMergedSettings({
1038
- security: {
1039
- allowedExtensions: ['\\b(https?:\\/\\/)?(www\\.)?allowed\\.com\\S*'],
1040
- },
1041
- });
1042
- extensionManager = new ExtensionManager({
1043
- workspaceDir: tempWorkspaceDir,
1044
- requestConsent: mockRequestConsent,
1045
- requestSetting: mockPromptForSettings,
1046
- settings: allowedExtensionsSetting,
1047
- integrityManager: mockIntegrityManager,
1048
- });
1049
- await extensionManager.loadExtensions();
1050
- await expect(extensionManager.installOrUpdateExtension({
1051
- source: gitUrl,
1052
- type: 'git',
1053
- })).rejects.toThrow(`Installing extension from source "${gitUrl}" is not allowed by the "allowedExtensions" security setting.`);
1054
- });
1055
- it('should prompt for trust if workspace is not trusted', async () => {
1056
- vi.mocked(isWorkspaceTrusted).mockReturnValue({
1057
- isTrusted: false,
1058
- source: undefined,
1059
- });
1060
- const sourceExtDir = createExtension({
1061
- extensionsDir: tempHomeDir,
1062
- name: 'my-local-extension',
1063
- version: '1.0.0',
1064
- });
1065
- await extensionManager.loadExtensions();
1066
- await extensionManager.installOrUpdateExtension({
1067
- source: sourceExtDir,
1068
- type: 'local',
1069
- });
1070
- expect(mockRequestConsent).toHaveBeenCalledWith(`The current workspace at "${tempWorkspaceDir}" is not trusted. Do you want to trust this workspace to install extensions?`);
1071
- });
1072
- it('should not install if user denies trust', async () => {
1073
- vi.mocked(isWorkspaceTrusted).mockReturnValue({
1074
- isTrusted: false,
1075
- source: undefined,
1076
- });
1077
- mockRequestConsent.mockImplementation(async (message) => {
1078
- if (message.includes('is not trusted. Do you want to trust this workspace to install extensions?')) {
1079
- return false;
1080
- }
1081
- return true;
1082
- });
1083
- const sourceExtDir = createExtension({
1084
- extensionsDir: tempHomeDir,
1085
- name: 'my-local-extension',
1086
- version: '1.0.0',
1087
- });
1088
- await extensionManager.loadExtensions();
1089
- await expect(extensionManager.installOrUpdateExtension({
1090
- source: sourceExtDir,
1091
- type: 'local',
1092
- })).rejects.toThrow(`Could not install extension because the current workspace at ${tempWorkspaceDir} is not trusted.`);
1093
- });
1094
- it('should add the workspace to trusted folders if user consents', async () => {
1095
- const trustedFoldersPath = path.join(tempHomeDir, '.gemini', 'trustedFolders.json');
1096
- vi.stubEnv('GEMINI_CLI_TRUSTED_FOLDERS_PATH', trustedFoldersPath);
1097
- vi.mocked(isWorkspaceTrusted).mockReturnValue({
1098
- isTrusted: false,
1099
- source: undefined,
1100
- });
1101
- const sourceExtDir = createExtension({
1102
- extensionsDir: tempHomeDir,
1103
- name: 'my-local-extension',
1104
- version: '1.0.0',
1105
- });
1106
- await extensionManager.loadExtensions();
1107
- await extensionManager.installOrUpdateExtension({
1108
- source: sourceExtDir,
1109
- type: 'local',
1110
- });
1111
- expect(fs.existsSync(trustedFoldersPath)).toBe(true);
1112
- const trustedFolders = JSON.parse(fs.readFileSync(trustedFoldersPath, 'utf-8'));
1113
- expect(trustedFolders[normalizePath(tempWorkspaceDir)]).toBe('TRUST_FOLDER');
1114
- });
1115
- describe.each([true, false])('with previous extension config: %s', (isUpdate) => {
1116
- let sourceExtDir;
1117
- beforeEach(async () => {
1118
- sourceExtDir = createExtension({
1119
- extensionsDir: tempHomeDir,
1120
- name: 'my-local-extension',
1121
- version: '1.1.0',
1122
- });
1123
- await extensionManager.loadExtensions();
1124
- if (isUpdate) {
1125
- await extensionManager.installOrUpdateExtension({
1126
- source: sourceExtDir,
1127
- type: 'local',
1128
- });
1129
- }
1130
- // Clears out any calls to mocks from the above function calls.
1131
- vi.clearAllMocks();
1132
- });
1133
- it(`should log an ${isUpdate ? 'update' : 'install'} event to clearcut on success`, async () => {
1134
- await extensionManager.installOrUpdateExtension({ source: sourceExtDir, type: 'local' }, isUpdate
1135
- ? {
1136
- name: 'my-local-extension',
1137
- version: '1.0.0',
1138
- }
1139
- : undefined);
1140
- if (isUpdate) {
1141
- expect(mockLogExtensionUpdateEvent).toHaveBeenCalled();
1142
- expect(mockLogExtensionInstallEvent).not.toHaveBeenCalled();
1143
- }
1144
- else {
1145
- expect(mockLogExtensionInstallEvent).toHaveBeenCalled();
1146
- expect(mockLogExtensionUpdateEvent).not.toHaveBeenCalled();
1147
- }
1148
- });
1149
- it(`should ${isUpdate ? 'not ' : ''} alter the extension enablement configuration`, async () => {
1150
- const enablementManager = new ExtensionEnablementManager();
1151
- enablementManager.enable('my-local-extension', true, '/some/scope');
1152
- await extensionManager.installOrUpdateExtension({ source: sourceExtDir, type: 'local' }, isUpdate
1153
- ? {
1154
- name: 'my-local-extension',
1155
- version: '1.0.0',
1156
- }
1157
- : undefined);
1158
- const config = enablementManager.readConfig()['my-local-extension'];
1159
- if (isUpdate) {
1160
- expect(config).not.toBeUndefined();
1161
- expect(config.overrides).toContain('/some/scope/*');
1162
- }
1163
- else {
1164
- expect(config).not.toContain('/some/scope/*');
1165
- }
1166
- });
1167
- });
1168
- it('should show users information on their ansi escaped mcp servers when installing', async () => {
1169
- const sourceExtDir = createExtension({
1170
- extensionsDir: tempHomeDir,
1171
- name: 'my-local-extension',
1172
- version: '1.0.0',
1173
- mcpServers: {
1174
- 'test-server': {
1175
- command: 'node dobadthing \u001b[12D\u001b[K',
1176
- args: ['server.js'],
1177
- description: 'a local mcp server',
1178
- },
1179
- 'test-server-2': {
1180
- description: 'a remote mcp server',
1181
- httpUrl: 'https://google.com',
1182
- },
1183
- },
1184
- });
1185
- await extensionManager.loadExtensions();
1186
- await expect(extensionManager.installOrUpdateExtension({
1187
- source: sourceExtDir,
1188
- type: 'local',
1189
- })).resolves.toMatchObject({
1190
- name: 'my-local-extension',
1191
- });
1192
- expect(mockRequestConsent).toHaveBeenCalledWith(`Installing extension "my-local-extension".
1193
- This extension will run the following MCP servers:
1194
- * test-server (local): node dobadthing \\u001b[12D\\u001b[K server.js
1195
- * test-server-2 (remote): https://google.com
1196
-
1197
- ${INSTALL_WARNING_MESSAGE}`);
1198
- });
1199
- it('should continue installation if user accepts prompt for local extension with mcp servers', async () => {
1200
- const sourceExtDir = createExtension({
1201
- extensionsDir: tempHomeDir,
1202
- name: 'my-local-extension',
1203
- version: '1.0.0',
1204
- mcpServers: {
1205
- 'test-server': {
1206
- command: 'node',
1207
- args: ['server.js'],
1208
- },
1209
- },
1210
- });
1211
- await extensionManager.loadExtensions();
1212
- await expect(extensionManager.installOrUpdateExtension({
1213
- source: sourceExtDir,
1214
- type: 'local',
1215
- })).resolves.toMatchObject({ name: 'my-local-extension' });
1216
- });
1217
- it('should cancel installation if user declines prompt for local extension with mcp servers', async () => {
1218
- const sourceExtDir = createExtension({
1219
- extensionsDir: tempHomeDir,
1220
- name: 'my-local-extension',
1221
- version: '1.0.0',
1222
- mcpServers: {
1223
- 'test-server': {
1224
- command: 'node',
1225
- args: ['server.js'],
1226
- },
1227
- },
1228
- });
1229
- mockRequestConsent.mockResolvedValue(false);
1230
- await extensionManager.loadExtensions();
1231
- await expect(extensionManager.installOrUpdateExtension({
1232
- source: sourceExtDir,
1233
- type: 'local',
1234
- })).rejects.toThrow('Installation cancelled for "my-local-extension".');
1235
- });
1236
- it('should save the autoUpdate flag to the install metadata', async () => {
1237
- const sourceExtDir = getRealPath(createExtension({
1238
- extensionsDir: tempHomeDir,
1239
- name: 'my-local-extension',
1240
- version: '1.0.0',
1241
- }));
1242
- const targetExtDir = path.join(userExtensionsDir, 'my-local-extension');
1243
- const metadataPath = path.join(targetExtDir, INSTALL_METADATA_FILENAME);
1244
- await extensionManager.loadExtensions();
1245
- await extensionManager.installOrUpdateExtension({
1246
- source: sourceExtDir,
1247
- type: 'local',
1248
- autoUpdate: true,
1249
- });
1250
- expect(fs.existsSync(targetExtDir)).toBe(true);
1251
- expect(fs.existsSync(metadataPath)).toBe(true);
1252
- const metadata = JSON.parse(fs.readFileSync(metadataPath, 'utf-8'));
1253
- expect(metadata).toEqual({
1254
- source: sourceExtDir,
1255
- type: 'local',
1256
- autoUpdate: true,
1257
- });
1258
- fs.rmSync(targetExtDir, { recursive: true, force: true });
1259
- });
1260
- it('should ignore consent flow if not required', async () => {
1261
- const sourceExtDir = createExtension({
1262
- extensionsDir: tempHomeDir,
1263
- name: 'my-local-extension',
1264
- version: '1.0.0',
1265
- mcpServers: {
1266
- 'test-server': {
1267
- command: 'node',
1268
- args: ['server.js'],
1269
- },
1270
- },
1271
- });
1272
- await extensionManager.loadExtensions();
1273
- // Install it with hard coded consent first.
1274
- await extensionManager.installOrUpdateExtension({
1275
- source: sourceExtDir,
1276
- type: 'local',
1277
- });
1278
- expect(mockRequestConsent).toHaveBeenCalledOnce();
1279
- // Now update it without changing anything.
1280
- await expect(extensionManager.installOrUpdateExtension({ source: sourceExtDir, type: 'local' },
1281
- // Provide its own existing config as the previous config.
1282
- await extensionManager.loadExtensionConfig(sourceExtDir))).resolves.toMatchObject({ name: 'my-local-extension' });
1283
- // Still only called once
1284
- expect(mockRequestConsent).toHaveBeenCalledOnce();
1285
- });
1286
- it('should prompt for settings if promptForSettings', async () => {
1287
- const sourceExtDir = createExtension({
1288
- extensionsDir: tempHomeDir,
1289
- name: 'my-local-extension',
1290
- version: '1.0.0',
1291
- settings: [
1292
- {
1293
- name: 'API Key',
1294
- description: 'Your API key for the service.',
1295
- envVar: 'MY_API_KEY',
1296
- },
1297
- ],
1298
- });
1299
- await extensionManager.loadExtensions();
1300
- await extensionManager.installOrUpdateExtension({
1301
- source: sourceExtDir,
1302
- type: 'local',
1303
- });
1304
- expect(mockPromptForSettings).toHaveBeenCalled();
1305
- });
1306
- it('should not prompt for settings if promptForSettings is false', async () => {
1307
- const sourceExtDir = createExtension({
1308
- extensionsDir: tempHomeDir,
1309
- name: 'my-local-extension',
1310
- version: '1.0.0',
1311
- settings: [
1312
- {
1313
- name: 'API Key',
1314
- description: 'Your API key for the service.',
1315
- envVar: 'MY_API_KEY',
1316
- },
1317
- ],
1318
- });
1319
- extensionManager = new ExtensionManager({
1320
- workspaceDir: tempWorkspaceDir,
1321
- requestConsent: mockRequestConsent,
1322
- requestSetting: null,
1323
- settings: loadSettings(tempWorkspaceDir).merged,
1324
- integrityManager: mockIntegrityManager,
1325
- });
1326
- await extensionManager.loadExtensions();
1327
- await extensionManager.installOrUpdateExtension({
1328
- source: sourceExtDir,
1329
- type: 'local',
1330
- });
1331
- });
1332
- it('should only prompt for new settings on update, and preserve old settings', async () => {
1333
- // 1. Create and install the "old" version of the extension.
1334
- const oldSourceExtDir = createExtension({
1335
- extensionsDir: tempHomeDir, // Create it in a temp location first
1336
- name: 'my-local-extension',
1337
- version: '1.0.0',
1338
- settings: [
1339
- {
1340
- name: 'API Key',
1341
- description: 'Your API key for the service.',
1342
- envVar: 'MY_API_KEY',
1343
- },
1344
- ],
1345
- });
1346
- mockPromptForSettings.mockResolvedValueOnce('old-api-key');
1347
- await extensionManager.loadExtensions();
1348
- // Install it so it exists in the userExtensionsDir
1349
- await extensionManager.installOrUpdateExtension({
1350
- source: oldSourceExtDir,
1351
- type: 'local',
1352
- });
1353
- const envPath = new ExtensionStorage('my-local-extension').getEnvFilePath();
1354
- expect(fs.existsSync(envPath)).toBe(true);
1355
- let envContent = fs.readFileSync(envPath, 'utf-8');
1356
- expect(envContent).toContain('MY_API_KEY=old-api-key');
1357
- expect(mockPromptForSettings).toHaveBeenCalledTimes(1);
1358
- // 2. Create the "new" version of the extension in a new source directory.
1359
- const newSourceExtDir = createExtension({
1360
- extensionsDir: path.join(tempHomeDir, 'new-source'), // Another temp location
1361
- name: 'my-local-extension', // Same name
1362
- version: '1.1.0', // New version
1363
- settings: [
1364
- {
1365
- name: 'API Key',
1366
- description: 'Your API key for the service.',
1367
- envVar: 'MY_API_KEY',
1368
- },
1369
- {
1370
- name: 'New Setting',
1371
- description: 'A new setting.',
1372
- envVar: 'NEW_SETTING',
1373
- },
1374
- ],
1375
- });
1376
- const previousExtensionConfig = await extensionManager.loadExtensionConfig(path.join(userExtensionsDir, 'my-local-extension'));
1377
- mockPromptForSettings.mockResolvedValueOnce('new-setting-value');
1378
- // 3. Call installOrUpdateExtension to perform the update.
1379
- await extensionManager.installOrUpdateExtension({ source: newSourceExtDir, type: 'local' }, previousExtensionConfig);
1380
- expect(mockPromptForSettings).toHaveBeenCalledTimes(2);
1381
- expect(mockPromptForSettings).toHaveBeenCalledWith(expect.objectContaining({ name: 'New Setting' }));
1382
- expect(fs.existsSync(envPath)).toBe(true);
1383
- envContent = fs.readFileSync(envPath, 'utf-8');
1384
- expect(envContent).toContain('MY_API_KEY=old-api-key');
1385
- expect(envContent).toContain('NEW_SETTING=new-setting-value');
1386
- });
1387
- it('should auto-update if settings have changed', async () => {
1388
- // 1. Install initial version with autoUpdate: true
1389
- const oldSourceExtDir = createExtension({
1390
- extensionsDir: tempHomeDir,
1391
- name: 'my-auto-update-ext',
1392
- version: '1.0.0',
1393
- settings: [
1394
- {
1395
- name: 'OLD_SETTING',
1396
- envVar: 'OLD_SETTING',
1397
- description: 'An old setting',
1398
- },
1399
- ],
1400
- });
1401
- await extensionManager.loadExtensions();
1402
- await extensionManager.installOrUpdateExtension({
1403
- source: oldSourceExtDir,
1404
- type: 'local',
1405
- autoUpdate: true,
1406
- });
1407
- // 2. Create new version with different settings
1408
- const extensionDir = createExtension({
1409
- extensionsDir: tempHomeDir,
1410
- name: 'my-auto-update-ext',
1411
- version: '1.1.0',
1412
- settings: [
1413
- {
1414
- name: 'NEW_SETTING',
1415
- envVar: 'NEW_SETTING',
1416
- description: 'A new setting',
1417
- },
1418
- ],
1419
- });
1420
- const previousExtensionConfig = await extensionManager.loadExtensionConfig(path.join(userExtensionsDir, 'my-auto-update-ext'));
1421
- // 3. Attempt to update and assert it fails
1422
- const updatedExtension = await extensionManager.installOrUpdateExtension({
1423
- source: extensionDir,
1424
- type: 'local',
1425
- autoUpdate: true,
1426
- }, previousExtensionConfig);
1427
- expect(updatedExtension.version).toBe('1.1.0');
1428
- expect(extensionManager.getExtensions()[0].version).toBe('1.1.0');
1429
- });
1430
- it('should throw an error for invalid extension names', async () => {
1431
- const sourceExtDir = createExtension({
1432
- extensionsDir: tempHomeDir,
1433
- name: 'bad_name',
1434
- version: '1.0.0',
1435
- });
1436
- await expect(extensionManager.installOrUpdateExtension({
1437
- source: sourceExtDir,
1438
- type: 'local',
1439
- })).rejects.toThrow('Invalid extension name: "bad_name"');
1440
- });
1441
- describe('installing from github', () => {
1442
- const gitUrl = 'https://github.com/google/gemini-test-extension.git';
1443
- const extensionName = 'gemini-test-extension';
1444
- beforeEach(() => {
1445
- // Mock the git clone behavior for github installs that fallback to it.
1446
- mockGit.clone.mockImplementation(async (_, destination) => {
1447
- fs.mkdirSync(path.join(mockGit.path(), destination), {
1448
- recursive: true,
1449
- });
1450
- fs.writeFileSync(path.join(mockGit.path(), destination, EXTENSIONS_CONFIG_FILENAME), JSON.stringify({ name: extensionName, version: '1.0.0' }));
1451
- });
1452
- mockGit.getRemotes.mockResolvedValue([{ name: 'origin' }]);
1453
- });
1454
- afterEach(() => {
1455
- vi.restoreAllMocks();
1456
- });
1457
- it('should install from a github release successfully', async () => {
1458
- const targetExtDir = path.join(userExtensionsDir, extensionName);
1459
- mockDownloadFromGithubRelease.mockResolvedValue({
1460
- success: true,
1461
- tagName: 'v1.0.0',
1462
- type: 'github-release',
1463
- });
1464
- const tempDir = path.join(tempHomeDir, 'temp-ext');
1465
- fs.mkdirSync(tempDir, { recursive: true });
1466
- createExtension({
1467
- extensionsDir: tempDir,
1468
- name: extensionName,
1469
- version: '1.0.0',
1470
- });
1471
- vi.spyOn(ExtensionStorage, 'createTmpDir').mockResolvedValue(join(tempDir, extensionName));
1472
- await extensionManager.loadExtensions();
1473
- await extensionManager.installOrUpdateExtension({
1474
- source: gitUrl,
1475
- type: 'github-release',
1476
- });
1477
- expect(fs.existsSync(targetExtDir)).toBe(true);
1478
- const metadataPath = path.join(targetExtDir, INSTALL_METADATA_FILENAME);
1479
- expect(fs.existsSync(metadataPath)).toBe(true);
1480
- const metadata = JSON.parse(fs.readFileSync(metadataPath, 'utf-8'));
1481
- expect(metadata).toEqual({
1482
- source: gitUrl,
1483
- type: 'github-release',
1484
- releaseTag: 'v1.0.0',
1485
- });
1486
- });
1487
- it('should fallback to git clone if github release download fails and user consents', async () => {
1488
- mockDownloadFromGithubRelease.mockResolvedValue({
1489
- success: false,
1490
- failureReason: 'failed to download asset',
1491
- errorMessage: 'download failed',
1492
- type: 'github-release',
1493
- });
1494
- await extensionManager.loadExtensions();
1495
- await extensionManager.installOrUpdateExtension({ source: gitUrl, type: 'github-release' });
1496
- // It gets called once to ask for a git clone, and once to consent to
1497
- // the actual extension features.
1498
- expect(mockRequestConsent).toHaveBeenCalledTimes(2);
1499
- expect(mockRequestConsent).toHaveBeenCalledWith(expect.stringContaining('Would you like to attempt to install via "git clone" instead?'));
1500
- expect(mockGit.clone).toHaveBeenCalled();
1501
- const metadataPath = path.join(userExtensionsDir, extensionName, INSTALL_METADATA_FILENAME);
1502
- const metadata = JSON.parse(fs.readFileSync(metadataPath, 'utf-8'));
1503
- expect(metadata.type).toBe('git');
1504
- });
1505
- it('should throw an error if github release download fails and user denies consent', async () => {
1506
- mockDownloadFromGithubRelease.mockResolvedValue({
1507
- success: false,
1508
- errorMessage: 'download failed',
1509
- type: 'github-release',
1510
- });
1511
- mockRequestConsent.mockResolvedValue(false);
1512
- await extensionManager.loadExtensions();
1513
- await expect(extensionManager.installOrUpdateExtension({
1514
- source: gitUrl,
1515
- type: 'github-release',
1516
- })).rejects.toThrow(`Failed to install extension ${gitUrl}: download failed`);
1517
- expect(mockRequestConsent).toHaveBeenCalledExactlyOnceWith(expect.stringContaining('Would you like to attempt to install via "git clone" instead?'));
1518
- expect(mockGit.clone).not.toHaveBeenCalled();
1519
- });
1520
- it('should fallback to git clone without consent if no release data is found on first install', async () => {
1521
- mockDownloadFromGithubRelease.mockResolvedValue({
1522
- success: false,
1523
- failureReason: 'no release data',
1524
- type: 'github-release',
1525
- });
1526
- await extensionManager.loadExtensions();
1527
- await extensionManager.installOrUpdateExtension({
1528
- source: gitUrl,
1529
- type: 'git',
1530
- });
1531
- // We should not see the request to use git clone, this is a repo that
1532
- // has no github releases so it is the only install method.
1533
- expect(mockRequestConsent).toHaveBeenCalledExactlyOnceWith(expect.stringContaining('Installing extension "gemini-test-extension"'));
1534
- expect(mockGit.clone).toHaveBeenCalled();
1535
- const metadataPath = path.join(userExtensionsDir, extensionName, INSTALL_METADATA_FILENAME);
1536
- const metadata = JSON.parse(fs.readFileSync(metadataPath, 'utf-8'));
1537
- expect(metadata.type).toBe('git');
1538
- });
1539
- it('should ask for consent if no release data is found for an existing github-release extension', async () => {
1540
- mockDownloadFromGithubRelease.mockResolvedValue({
1541
- success: false,
1542
- failureReason: 'no release data',
1543
- errorMessage: 'No release data found',
1544
- type: 'github-release',
1545
- });
1546
- await extensionManager.loadExtensions();
1547
- await extensionManager.installOrUpdateExtension({ source: gitUrl, type: 'github-release' });
1548
- expect(mockRequestConsent).toHaveBeenCalledWith(expect.stringContaining('Would you like to attempt to install via "git clone" instead?'));
1549
- expect(mockGit.clone).toHaveBeenCalled();
1550
- });
1551
- });
1552
- });
1553
- describe('uninstallExtension', () => {
1554
- it('should uninstall an extension by name', async () => {
1555
- const sourceExtDir = createExtension({
1556
- extensionsDir: userExtensionsDir,
1557
- name: 'my-local-extension',
1558
- version: '1.0.0',
1559
- });
1560
- await extensionManager.loadExtensions();
1561
- await extensionManager.uninstallExtension('my-local-extension', false);
1562
- expect(fs.existsSync(sourceExtDir)).toBe(false);
1563
- });
1564
- it('should uninstall an extension by name and retain existing extensions', async () => {
1565
- const sourceExtDir = createExtension({
1566
- extensionsDir: userExtensionsDir,
1567
- name: 'my-local-extension',
1568
- version: '1.0.0',
1569
- });
1570
- const otherExtDir = createExtension({
1571
- extensionsDir: userExtensionsDir,
1572
- name: 'other-extension',
1573
- version: '1.0.0',
1574
- });
1575
- await extensionManager.loadExtensions();
1576
- await extensionManager.uninstallExtension('my-local-extension', false);
1577
- expect(fs.existsSync(sourceExtDir)).toBe(false);
1578
- expect(extensionManager.getExtensions()).toHaveLength(1);
1579
- expect(fs.existsSync(otherExtDir)).toBe(true);
1580
- });
1581
- it('should uninstall an extension on non-matching extension directory name', async () => {
1582
- // Create an extension with a name that differs from the directory name.
1583
- const sourceExtDir = createExtension({
1584
- extensionsDir: userExtensionsDir,
1585
- name: 'My-Local-Extension',
1586
- version: '1.0.0',
1587
- });
1588
- const newSourceExtDir = path.join(userExtensionsDir, 'my-local-extension');
1589
- fs.renameSync(sourceExtDir, newSourceExtDir);
1590
- const otherExtDir = createExtension({
1591
- extensionsDir: userExtensionsDir,
1592
- name: 'other-extension',
1593
- version: '1.0.0',
1594
- });
1595
- await extensionManager.loadExtensions();
1596
- await extensionManager.uninstallExtension('my-local-extension', false);
1597
- expect(fs.existsSync(sourceExtDir)).toBe(false);
1598
- expect(fs.existsSync(newSourceExtDir)).toBe(false);
1599
- expect(extensionManager.getExtensions()).toHaveLength(1);
1600
- expect(fs.existsSync(otherExtDir)).toBe(true);
1601
- });
1602
- it('should throw an error if the extension does not exist', async () => {
1603
- await extensionManager.loadExtensions();
1604
- await expect(extensionManager.uninstallExtension('nonexistent-extension', false)).rejects.toThrow('Extension not found.');
1605
- });
1606
- describe.each([true, false])('with isUpdate: %s', (isUpdate) => {
1607
- it(`should ${isUpdate ? 'not ' : ''}log uninstall event`, async () => {
1608
- createExtension({
1609
- extensionsDir: userExtensionsDir,
1610
- name: 'my-local-extension',
1611
- version: '1.0.0',
1612
- installMetadata: {
1613
- source: userExtensionsDir,
1614
- type: 'local',
1615
- },
1616
- });
1617
- await extensionManager.loadExtensions();
1618
- await extensionManager.uninstallExtension('my-local-extension', isUpdate);
1619
- if (isUpdate) {
1620
- expect(mockLogExtensionUninstall).not.toHaveBeenCalled();
1621
- expect(ExtensionUninstallEvent).not.toHaveBeenCalled();
1622
- }
1623
- else {
1624
- expect(mockLogExtensionUninstall).toHaveBeenCalled();
1625
- expect(ExtensionUninstallEvent).toHaveBeenCalledWith('my-local-extension', hashValue('my-local-extension'), hashValue(userExtensionsDir), 'success');
1626
- }
1627
- });
1628
- it(`should ${isUpdate ? 'not ' : ''} alter the extension enablement configuration`, async () => {
1629
- createExtension({
1630
- extensionsDir: userExtensionsDir,
1631
- name: 'test-extension',
1632
- version: '1.0.0',
1633
- });
1634
- const enablementManager = new ExtensionEnablementManager();
1635
- enablementManager.enable('test-extension', true, '/some/scope');
1636
- await extensionManager.loadExtensions();
1637
- await extensionManager.uninstallExtension('test-extension', isUpdate);
1638
- const config = enablementManager.readConfig()['test-extension'];
1639
- if (isUpdate) {
1640
- expect(config).not.toBeUndefined();
1641
- expect(config.overrides).toEqual(['/some/scope/*']);
1642
- }
1643
- else {
1644
- expect(config).toBeUndefined();
1645
- }
1646
- });
1647
- });
1648
- it('should uninstall an extension by its source URL', async () => {
1649
- const gitUrl = 'https://github.com/google/gemini-sql-extension.git';
1650
- const sourceExtDir = createExtension({
1651
- extensionsDir: userExtensionsDir,
1652
- name: 'gemini-sql-extension',
1653
- version: '1.0.0',
1654
- installMetadata: {
1655
- source: gitUrl,
1656
- type: 'git',
1657
- },
1658
- });
1659
- await extensionManager.loadExtensions();
1660
- await extensionManager.uninstallExtension(gitUrl, false);
1661
- expect(fs.existsSync(sourceExtDir)).toBe(false);
1662
- expect(mockLogExtensionUninstall).toHaveBeenCalled();
1663
- expect(ExtensionUninstallEvent).toHaveBeenCalledWith('gemini-sql-extension', hashValue('gemini-sql-extension'), hashValue('https://github.com/google/gemini-sql-extension'), 'success');
1664
- });
1665
- it('should fail to uninstall by URL if an extension has no install metadata', async () => {
1666
- createExtension({
1667
- extensionsDir: userExtensionsDir,
1668
- name: 'no-metadata-extension',
1669
- version: '1.0.0',
1670
- // No installMetadata provided
1671
- });
1672
- await extensionManager.loadExtensions();
1673
- await expect(extensionManager.uninstallExtension('https://github.com/google/no-metadata-extension', false)).rejects.toThrow('Extension not found.');
1674
- });
1675
- });
1676
- describe('disableExtension', () => {
1677
- it('should disable an extension at the user scope', async () => {
1678
- createExtension({
1679
- extensionsDir: userExtensionsDir,
1680
- name: 'my-extension',
1681
- version: '1.0.0',
1682
- });
1683
- await extensionManager.loadExtensions();
1684
- await extensionManager.disableExtension('my-extension', SettingScope.User);
1685
- expect(isEnabled({
1686
- name: 'my-extension',
1687
- enabledForPath: tempWorkspaceDir,
1688
- })).toBe(false);
1689
- });
1690
- it('should disable an extension at the workspace scope', async () => {
1691
- createExtension({
1692
- extensionsDir: userExtensionsDir,
1693
- name: 'my-extension',
1694
- version: '1.0.0',
1695
- });
1696
- await extensionManager.loadExtensions();
1697
- await extensionManager.disableExtension('my-extension', SettingScope.Workspace);
1698
- expect(isEnabled({
1699
- name: 'my-extension',
1700
- enabledForPath: tempHomeDir,
1701
- })).toBe(true);
1702
- expect(isEnabled({
1703
- name: 'my-extension',
1704
- enabledForPath: tempWorkspaceDir,
1705
- })).toBe(false);
1706
- });
1707
- it('should handle disabling the same extension twice', async () => {
1708
- createExtension({
1709
- extensionsDir: userExtensionsDir,
1710
- name: 'my-extension',
1711
- version: '1.0.0',
1712
- });
1713
- await extensionManager.loadExtensions();
1714
- await extensionManager.disableExtension('my-extension', SettingScope.User);
1715
- await extensionManager.disableExtension('my-extension', SettingScope.User);
1716
- expect(isEnabled({
1717
- name: 'my-extension',
1718
- enabledForPath: tempWorkspaceDir,
1719
- })).toBe(false);
1720
- });
1721
- it('should throw an error if you request system scope', async () => {
1722
- await expect(async () => extensionManager.disableExtension('my-extension', SettingScope.System)).rejects.toThrow('System and SystemDefaults scopes are not supported.');
1723
- });
1724
- it('should log a disable event', async () => {
1725
- createExtension({
1726
- extensionsDir: userExtensionsDir,
1727
- name: 'ext1',
1728
- version: '1.0.0',
1729
- installMetadata: {
1730
- source: userExtensionsDir,
1731
- type: 'local',
1732
- },
1733
- });
1734
- await extensionManager.loadExtensions();
1735
- await extensionManager.disableExtension('ext1', SettingScope.Workspace);
1736
- expect(mockLogExtensionDisable).toHaveBeenCalled();
1737
- expect(ExtensionDisableEvent).toHaveBeenCalledWith('ext1', hashValue('ext1'), hashValue(userExtensionsDir), SettingScope.Workspace);
1738
- });
1739
- });
1740
- describe('enableExtension', () => {
1741
- afterAll(() => {
1742
- vi.restoreAllMocks();
1743
- });
1744
- const getActiveExtensions = () => {
1745
- const extensions = extensionManager.getExtensions();
1746
- return extensions.filter((e) => e.isActive);
1747
- };
1748
- it('should enable an extension at the user scope', async () => {
1749
- createExtension({
1750
- extensionsDir: userExtensionsDir,
1751
- name: 'ext1',
1752
- version: '1.0.0',
1753
- });
1754
- await extensionManager.loadExtensions();
1755
- await extensionManager.disableExtension('ext1', SettingScope.User);
1756
- let activeExtensions = getActiveExtensions();
1757
- expect(activeExtensions).toHaveLength(0);
1758
- await extensionManager.enableExtension('ext1', SettingScope.User);
1759
- activeExtensions = getActiveExtensions();
1760
- expect(activeExtensions).toHaveLength(1);
1761
- expect(activeExtensions[0].name).toBe('ext1');
1762
- });
1763
- it('should enable an extension at the workspace scope', async () => {
1764
- createExtension({
1765
- extensionsDir: userExtensionsDir,
1766
- name: 'ext1',
1767
- version: '1.0.0',
1768
- });
1769
- await extensionManager.loadExtensions();
1770
- await extensionManager.disableExtension('ext1', SettingScope.Workspace);
1771
- let activeExtensions = getActiveExtensions();
1772
- expect(activeExtensions).toHaveLength(0);
1773
- await extensionManager.enableExtension('ext1', SettingScope.Workspace);
1774
- activeExtensions = getActiveExtensions();
1775
- expect(activeExtensions).toHaveLength(1);
1776
- expect(activeExtensions[0].name).toBe('ext1');
1777
- });
1778
- it('should log an enable event', async () => {
1779
- createExtension({
1780
- extensionsDir: userExtensionsDir,
1781
- name: 'ext1',
1782
- version: '1.0.0',
1783
- installMetadata: {
1784
- source: userExtensionsDir,
1785
- type: 'local',
1786
- },
1787
- });
1788
- await extensionManager.loadExtensions();
1789
- await extensionManager.disableExtension('ext1', SettingScope.Workspace);
1790
- await extensionManager.enableExtension('ext1', SettingScope.Workspace);
1791
- expect(mockLogExtensionEnable).toHaveBeenCalled();
1792
- expect(ExtensionEnableEvent).toHaveBeenCalledWith('ext1', hashValue('ext1'), hashValue(userExtensionsDir), SettingScope.Workspace);
1793
- });
1794
- });
1795
- });
1796
- function isEnabled(options) {
1797
- const manager = new ExtensionEnablementManager();
1798
- return manager.isEnabled(options.name, options.enabledForPath);
1799
- }
1800
- //# sourceMappingURL=extension.test.js.map