@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,2272 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2025 Google LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
- import { describe, it, expect } from 'vitest';
7
- import { handleVimAction } from './vim-buffer-actions.js';
8
- const defaultVisualLayout = {
9
- visualLines: [''],
10
- logicalToVisualMap: [[[0, 0]]],
11
- visualToLogicalMap: [[0, 0]],
12
- transformedToLogicalMaps: [[]],
13
- visualToTransformedMap: [],
14
- };
15
- // Helper to create test state
16
- const createTestState = (lines = ['hello world'], cursorRow = 0, cursorCol = 0) => ({
17
- lines,
18
- cursorRow,
19
- cursorCol,
20
- preferredCol: null,
21
- undoStack: [],
22
- redoStack: [],
23
- clipboard: null,
24
- selectionAnchor: null,
25
- viewportWidth: 80,
26
- viewportHeight: 24,
27
- transformationsByLine: [[]],
28
- visualLayout: defaultVisualLayout,
29
- pastedContent: {},
30
- expandedPaste: null,
31
- yankRegister: null,
32
- });
33
- describe('vim-buffer-actions', () => {
34
- describe('Movement commands', () => {
35
- describe('vim_move_left', () => {
36
- it('should move cursor left by count', () => {
37
- const state = createTestState(['hello world'], 0, 5);
38
- const action = {
39
- type: 'vim_move_left',
40
- payload: { count: 3 },
41
- };
42
- const result = handleVimAction(state, action);
43
- expect(result).toHaveOnlyValidCharacters();
44
- expect(result.cursorCol).toBe(2);
45
- expect(result.preferredCol).toBeNull();
46
- });
47
- it('should not move past beginning of line', () => {
48
- const state = createTestState(['hello'], 0, 2);
49
- const action = {
50
- type: 'vim_move_left',
51
- payload: { count: 5 },
52
- };
53
- const result = handleVimAction(state, action);
54
- expect(result).toHaveOnlyValidCharacters();
55
- expect(result.cursorCol).toBe(0);
56
- });
57
- it('should wrap to previous line when at beginning', () => {
58
- const state = createTestState(['line1', 'line2'], 1, 0);
59
- const action = {
60
- type: 'vim_move_left',
61
- payload: { count: 1 },
62
- };
63
- const result = handleVimAction(state, action);
64
- expect(result).toHaveOnlyValidCharacters();
65
- expect(result.cursorRow).toBe(0);
66
- expect(result.cursorCol).toBe(4); // On last character '1' of 'line1'
67
- });
68
- it('should handle multiple line wrapping', () => {
69
- const state = createTestState(['abc', 'def', 'ghi'], 2, 0);
70
- const action = {
71
- type: 'vim_move_left',
72
- payload: { count: 5 },
73
- };
74
- const result = handleVimAction(state, action);
75
- expect(result).toHaveOnlyValidCharacters();
76
- expect(result.cursorRow).toBe(0);
77
- expect(result.cursorCol).toBe(1); // On 'b' after 5 left movements
78
- });
79
- it('should correctly handle h/l movement between lines', () => {
80
- // Start at end of first line at 'd' (position 10)
81
- let state = createTestState(['hello world', 'foo bar'], 0, 10);
82
- // Move right - should go to beginning of next line
83
- state = handleVimAction(state, {
84
- type: 'vim_move_right',
85
- payload: { count: 1 },
86
- });
87
- expect(state).toHaveOnlyValidCharacters();
88
- expect(state.cursorRow).toBe(1);
89
- expect(state.cursorCol).toBe(0); // Should be on 'f'
90
- // Move left - should go back to end of previous line on 'd'
91
- state = handleVimAction(state, {
92
- type: 'vim_move_left',
93
- payload: { count: 1 },
94
- });
95
- expect(state).toHaveOnlyValidCharacters();
96
- expect(state.cursorRow).toBe(0);
97
- expect(state.cursorCol).toBe(10); // Should be on 'd', not past it
98
- });
99
- });
100
- describe('vim_move_right', () => {
101
- it('should move cursor right by count', () => {
102
- const state = createTestState(['hello world'], 0, 2);
103
- const action = {
104
- type: 'vim_move_right',
105
- payload: { count: 3 },
106
- };
107
- const result = handleVimAction(state, action);
108
- expect(result).toHaveOnlyValidCharacters();
109
- expect(result.cursorCol).toBe(5);
110
- });
111
- it('should not move past last character of line', () => {
112
- const state = createTestState(['hello'], 0, 3);
113
- const action = {
114
- type: 'vim_move_right',
115
- payload: { count: 5 },
116
- };
117
- const result = handleVimAction(state, action);
118
- expect(result).toHaveOnlyValidCharacters();
119
- expect(result.cursorCol).toBe(4); // Last character of 'hello'
120
- });
121
- it('should wrap to next line when at end', () => {
122
- const state = createTestState(['line1', 'line2'], 0, 4); // At end of 'line1'
123
- const action = {
124
- type: 'vim_move_right',
125
- payload: { count: 1 },
126
- };
127
- const result = handleVimAction(state, action);
128
- expect(result).toHaveOnlyValidCharacters();
129
- expect(result.cursorRow).toBe(1);
130
- expect(result.cursorCol).toBe(0);
131
- });
132
- it('should skip over combining marks to avoid cursor disappearing', () => {
133
- // Test case for combining character cursor disappearing bug
134
- // "café test" where é is represented as e + combining acute accent
135
- const state = createTestState(['cafe\u0301 test'], 0, 2); // Start at 'f'
136
- const action = {
137
- type: 'vim_move_right',
138
- payload: { count: 1 },
139
- };
140
- const result = handleVimAction(state, action);
141
- expect(result).toHaveOnlyValidCharacters();
142
- expect(result.cursorCol).toBe(3); // Should be on 'e' of 'café'
143
- // Move right again - should skip combining mark and land on space
144
- const result2 = handleVimAction(result, action);
145
- expect(result2).toHaveOnlyValidCharacters();
146
- expect(result2.cursorCol).toBe(5); // Should be on space after 'café'
147
- });
148
- });
149
- describe('vim_move_up', () => {
150
- it('should move cursor up by count', () => {
151
- const state = createTestState(['line1', 'line2', 'line3'], 2, 3);
152
- const action = { type: 'vim_move_up', payload: { count: 2 } };
153
- const result = handleVimAction(state, action);
154
- expect(result).toHaveOnlyValidCharacters();
155
- expect(result.cursorRow).toBe(0);
156
- expect(result.cursorCol).toBe(3);
157
- });
158
- it('should not move past first line', () => {
159
- const state = createTestState(['line1', 'line2'], 1, 3);
160
- const action = { type: 'vim_move_up', payload: { count: 5 } };
161
- const result = handleVimAction(state, action);
162
- expect(result).toHaveOnlyValidCharacters();
163
- expect(result.cursorRow).toBe(0);
164
- });
165
- it('should adjust column for shorter lines', () => {
166
- const state = createTestState(['short', 'very long line'], 1, 10);
167
- const action = { type: 'vim_move_up', payload: { count: 1 } };
168
- const result = handleVimAction(state, action);
169
- expect(result).toHaveOnlyValidCharacters();
170
- expect(result.cursorRow).toBe(0);
171
- expect(result.cursorCol).toBe(4); // Last character 't' of 'short', not past it
172
- });
173
- });
174
- describe('vim_move_down', () => {
175
- it('should move cursor down by count', () => {
176
- const state = createTestState(['line1', 'line2', 'line3'], 0, 2);
177
- const action = {
178
- type: 'vim_move_down',
179
- payload: { count: 2 },
180
- };
181
- const result = handleVimAction(state, action);
182
- expect(result).toHaveOnlyValidCharacters();
183
- expect(result.cursorRow).toBe(2);
184
- expect(result.cursorCol).toBe(2);
185
- });
186
- it('should not move past last line', () => {
187
- const state = createTestState(['line1', 'line2'], 0, 2);
188
- const action = {
189
- type: 'vim_move_down',
190
- payload: { count: 5 },
191
- };
192
- const result = handleVimAction(state, action);
193
- expect(result).toHaveOnlyValidCharacters();
194
- expect(result.cursorRow).toBe(1);
195
- });
196
- });
197
- describe('vim_move_word_forward', () => {
198
- it('should move to start of next word', () => {
199
- const state = createTestState(['hello world test'], 0, 0);
200
- const action = {
201
- type: 'vim_move_word_forward',
202
- payload: { count: 1 },
203
- };
204
- const result = handleVimAction(state, action);
205
- expect(result).toHaveOnlyValidCharacters();
206
- expect(result.cursorCol).toBe(6); // Start of 'world'
207
- });
208
- it('should handle multiple words', () => {
209
- const state = createTestState(['hello world test'], 0, 0);
210
- const action = {
211
- type: 'vim_move_word_forward',
212
- payload: { count: 2 },
213
- };
214
- const result = handleVimAction(state, action);
215
- expect(result).toHaveOnlyValidCharacters();
216
- expect(result.cursorCol).toBe(12); // Start of 'test'
217
- });
218
- it('should handle punctuation correctly', () => {
219
- const state = createTestState(['hello, world!'], 0, 0);
220
- const action = {
221
- type: 'vim_move_word_forward',
222
- payload: { count: 1 },
223
- };
224
- const result = handleVimAction(state, action);
225
- expect(result).toHaveOnlyValidCharacters();
226
- expect(result.cursorCol).toBe(5); // Start of ','
227
- });
228
- it('should move across empty lines when starting from within a word', () => {
229
- // Testing the exact scenario: cursor on 'w' of 'hello world', w should move to next line
230
- const state = createTestState(['hello world', ''], 0, 6); // At 'w' of 'world'
231
- const action = {
232
- type: 'vim_move_word_forward',
233
- payload: { count: 1 },
234
- };
235
- const result = handleVimAction(state, action);
236
- expect(result).toHaveOnlyValidCharacters();
237
- expect(result.cursorRow).toBe(1);
238
- expect(result.cursorCol).toBe(0); // Beginning of empty line
239
- });
240
- });
241
- describe('vim_move_word_backward', () => {
242
- it('should move to start of previous word', () => {
243
- const state = createTestState(['hello world test'], 0, 12);
244
- const action = {
245
- type: 'vim_move_word_backward',
246
- payload: { count: 1 },
247
- };
248
- const result = handleVimAction(state, action);
249
- expect(result).toHaveOnlyValidCharacters();
250
- expect(result.cursorCol).toBe(6); // Start of 'world'
251
- });
252
- it('should handle multiple words', () => {
253
- const state = createTestState(['hello world test'], 0, 12);
254
- const action = {
255
- type: 'vim_move_word_backward',
256
- payload: { count: 2 },
257
- };
258
- const result = handleVimAction(state, action);
259
- expect(result).toHaveOnlyValidCharacters();
260
- expect(result.cursorCol).toBe(0); // Start of 'hello'
261
- });
262
- });
263
- describe('vim_move_big_word_backward', () => {
264
- it('should treat punctuation as part of the word (B)', () => {
265
- const state = createTestState(['hello.world'], 0, 10);
266
- const action = {
267
- type: 'vim_move_big_word_backward',
268
- payload: { count: 1 },
269
- };
270
- const result = handleVimAction(state, action);
271
- expect(result).toHaveOnlyValidCharacters();
272
- expect(result.cursorCol).toBe(0); // Start of 'hello'
273
- });
274
- it('should skip punctuation when moving back to previous big word', () => {
275
- const state = createTestState(['word1, word2'], 0, 7);
276
- const action = {
277
- type: 'vim_move_big_word_backward',
278
- payload: { count: 1 },
279
- };
280
- const result = handleVimAction(state, action);
281
- expect(result).toHaveOnlyValidCharacters();
282
- expect(result.cursorCol).toBe(0); // Start of 'word1,'
283
- });
284
- });
285
- describe('vim_move_word_end', () => {
286
- it('should move to end of current word', () => {
287
- const state = createTestState(['hello world'], 0, 0);
288
- const action = {
289
- type: 'vim_move_word_end',
290
- payload: { count: 1 },
291
- };
292
- const result = handleVimAction(state, action);
293
- expect(result).toHaveOnlyValidCharacters();
294
- expect(result.cursorCol).toBe(4); // End of 'hello'
295
- });
296
- it('should move to end of next word if already at word end', () => {
297
- const state = createTestState(['hello world'], 0, 4);
298
- const action = {
299
- type: 'vim_move_word_end',
300
- payload: { count: 1 },
301
- };
302
- const result = handleVimAction(state, action);
303
- expect(result).toHaveOnlyValidCharacters();
304
- expect(result.cursorCol).toBe(10); // End of 'world'
305
- });
306
- it('should move across empty lines when at word end', () => {
307
- const state = createTestState(['hello world', '', 'test'], 0, 10); // At 'd' of 'world'
308
- const action = {
309
- type: 'vim_move_word_end',
310
- payload: { count: 1 },
311
- };
312
- const result = handleVimAction(state, action);
313
- expect(result).toHaveOnlyValidCharacters();
314
- expect(result.cursorRow).toBe(2);
315
- expect(result.cursorCol).toBe(3); // Should be at 't' (end of 'test')
316
- });
317
- it('should handle consecutive word-end movements across empty lines', () => {
318
- // Testing the exact scenario: cursor on 'w' of world, press 'e' twice
319
- const state = createTestState(['hello world', ''], 0, 6); // At 'w' of 'world'
320
- // First 'e' should move to 'd' of 'world'
321
- let result = handleVimAction(state, {
322
- type: 'vim_move_word_end',
323
- payload: { count: 1 },
324
- });
325
- expect(result).toHaveOnlyValidCharacters();
326
- expect(result.cursorRow).toBe(0);
327
- expect(result.cursorCol).toBe(10); // At 'd' of 'world'
328
- // Second 'e' should move to the empty line (end of file in this case)
329
- result = handleVimAction(result, {
330
- type: 'vim_move_word_end',
331
- payload: { count: 1 },
332
- });
333
- expect(result).toHaveOnlyValidCharacters();
334
- expect(result.cursorRow).toBe(1);
335
- expect(result.cursorCol).toBe(0); // Empty line has col 0
336
- });
337
- it('should handle combining characters - advance from end of base character', () => {
338
- // Test case for combining character word end bug
339
- // "café test" where é is represented as e + combining acute accent
340
- const state = createTestState(['cafe\u0301 test'], 0, 0); // Start at 'c'
341
- // First 'e' command should move to the 'e' (position 3)
342
- let result = handleVimAction(state, {
343
- type: 'vim_move_word_end',
344
- payload: { count: 1 },
345
- });
346
- expect(result).toHaveOnlyValidCharacters();
347
- expect(result.cursorCol).toBe(3); // At 'e' of café
348
- // Second 'e' command should advance to end of "test" (position 9), not stay stuck
349
- result = handleVimAction(result, {
350
- type: 'vim_move_word_end',
351
- payload: { count: 1 },
352
- });
353
- expect(result).toHaveOnlyValidCharacters();
354
- expect(result.cursorCol).toBe(9); // At 't' of "test"
355
- });
356
- it('should handle precomposed characters with diacritics', () => {
357
- // Test case with precomposed é for comparison
358
- const state = createTestState(['café test'], 0, 0);
359
- // First 'e' command should move to the 'é' (position 3)
360
- let result = handleVimAction(state, {
361
- type: 'vim_move_word_end',
362
- payload: { count: 1 },
363
- });
364
- expect(result).toHaveOnlyValidCharacters();
365
- expect(result.cursorCol).toBe(3); // At 'é' of café
366
- // Second 'e' command should advance to end of "test" (position 8)
367
- result = handleVimAction(result, {
368
- type: 'vim_move_word_end',
369
- payload: { count: 1 },
370
- });
371
- expect(result).toHaveOnlyValidCharacters();
372
- expect(result.cursorCol).toBe(8); // At 't' of "test"
373
- });
374
- });
375
- describe('Position commands', () => {
376
- it('vim_move_to_line_start should move to column 0', () => {
377
- const state = createTestState(['hello world'], 0, 5);
378
- const action = { type: 'vim_move_to_line_start' };
379
- const result = handleVimAction(state, action);
380
- expect(result).toHaveOnlyValidCharacters();
381
- expect(result.cursorCol).toBe(0);
382
- });
383
- it('vim_move_to_line_end should move to last character', () => {
384
- const state = createTestState(['hello world'], 0, 0);
385
- const action = { type: 'vim_move_to_line_end' };
386
- const result = handleVimAction(state, action);
387
- expect(result).toHaveOnlyValidCharacters();
388
- expect(result.cursorCol).toBe(10); // Last character of 'hello world'
389
- });
390
- it('vim_move_to_first_nonwhitespace should skip leading whitespace', () => {
391
- const state = createTestState([' hello world'], 0, 0);
392
- const action = { type: 'vim_move_to_first_nonwhitespace' };
393
- const result = handleVimAction(state, action);
394
- expect(result).toHaveOnlyValidCharacters();
395
- expect(result.cursorCol).toBe(3); // Position of 'h'
396
- });
397
- it('vim_move_to_first_nonwhitespace should go to column 0 on whitespace-only line', () => {
398
- const state = createTestState([' '], 0, 3);
399
- const action = { type: 'vim_move_to_first_nonwhitespace' };
400
- const result = handleVimAction(state, action);
401
- expect(result).toHaveOnlyValidCharacters();
402
- expect(result.cursorCol).toBe(0);
403
- });
404
- it('vim_move_to_first_nonwhitespace should go to column 0 on empty line', () => {
405
- const state = createTestState([''], 0, 0);
406
- const action = { type: 'vim_move_to_first_nonwhitespace' };
407
- const result = handleVimAction(state, action);
408
- expect(result).toHaveOnlyValidCharacters();
409
- expect(result.cursorCol).toBe(0);
410
- });
411
- it('vim_move_to_first_line should move to row 0', () => {
412
- const state = createTestState(['line1', 'line2', 'line3'], 2, 5);
413
- const action = { type: 'vim_move_to_first_line' };
414
- const result = handleVimAction(state, action);
415
- expect(result).toHaveOnlyValidCharacters();
416
- expect(result.cursorRow).toBe(0);
417
- expect(result.cursorCol).toBe(0);
418
- });
419
- it('vim_move_to_last_line should move to last row', () => {
420
- const state = createTestState(['line1', 'line2', 'line3'], 0, 5);
421
- const action = { type: 'vim_move_to_last_line' };
422
- const result = handleVimAction(state, action);
423
- expect(result).toHaveOnlyValidCharacters();
424
- expect(result.cursorRow).toBe(2);
425
- expect(result.cursorCol).toBe(0);
426
- });
427
- it('vim_move_to_line should move to specific line', () => {
428
- const state = createTestState(['line1', 'line2', 'line3'], 0, 5);
429
- const action = {
430
- type: 'vim_move_to_line',
431
- payload: { lineNumber: 2 },
432
- };
433
- const result = handleVimAction(state, action);
434
- expect(result).toHaveOnlyValidCharacters();
435
- expect(result.cursorRow).toBe(1); // 0-indexed
436
- expect(result.cursorCol).toBe(0);
437
- });
438
- it('vim_move_to_line should clamp to valid range', () => {
439
- const state = createTestState(['line1', 'line2'], 0, 0);
440
- const action = {
441
- type: 'vim_move_to_line',
442
- payload: { lineNumber: 10 },
443
- };
444
- const result = handleVimAction(state, action);
445
- expect(result).toHaveOnlyValidCharacters();
446
- expect(result.cursorRow).toBe(1); // Last line
447
- });
448
- });
449
- });
450
- describe('Edit commands', () => {
451
- describe('vim_delete_char', () => {
452
- it('should delete single character', () => {
453
- const state = createTestState(['hello'], 0, 1);
454
- const action = {
455
- type: 'vim_delete_char',
456
- payload: { count: 1 },
457
- };
458
- const result = handleVimAction(state, action);
459
- expect(result).toHaveOnlyValidCharacters();
460
- expect(result.lines[0]).toBe('hllo');
461
- expect(result.cursorCol).toBe(1);
462
- });
463
- it('should delete multiple characters', () => {
464
- const state = createTestState(['hello'], 0, 1);
465
- const action = {
466
- type: 'vim_delete_char',
467
- payload: { count: 3 },
468
- };
469
- const result = handleVimAction(state, action);
470
- expect(result).toHaveOnlyValidCharacters();
471
- expect(result.lines[0]).toBe('ho');
472
- expect(result.cursorCol).toBe(1);
473
- });
474
- it('should not delete past end of line', () => {
475
- const state = createTestState(['hello'], 0, 3);
476
- const action = {
477
- type: 'vim_delete_char',
478
- payload: { count: 5 },
479
- };
480
- const result = handleVimAction(state, action);
481
- expect(result).toHaveOnlyValidCharacters();
482
- expect(result.lines[0]).toBe('hel');
483
- // Cursor clamps to last char of the shortened line (vim NORMAL mode
484
- // cursor cannot rest past the final character).
485
- expect(result.cursorCol).toBe(2);
486
- });
487
- it('should clamp cursor when deleting the last character on a line', () => {
488
- const state = createTestState(['hello'], 0, 4);
489
- const action = {
490
- type: 'vim_delete_char',
491
- payload: { count: 1 },
492
- };
493
- const result = handleVimAction(state, action);
494
- expect(result).toHaveOnlyValidCharacters();
495
- expect(result.lines[0]).toBe('hell');
496
- expect(result.cursorCol).toBe(3);
497
- });
498
- it('should do nothing at end of line', () => {
499
- const state = createTestState(['hello'], 0, 5);
500
- const action = {
501
- type: 'vim_delete_char',
502
- payload: { count: 1 },
503
- };
504
- const result = handleVimAction(state, action);
505
- expect(result).toHaveOnlyValidCharacters();
506
- expect(result.lines[0]).toBe('hello');
507
- expect(result.cursorCol).toBe(5);
508
- });
509
- });
510
- describe('vim_delete_word_forward', () => {
511
- it('should delete from cursor to next word start', () => {
512
- const state = createTestState(['hello world test'], 0, 0);
513
- const action = {
514
- type: 'vim_delete_word_forward',
515
- payload: { count: 1 },
516
- };
517
- const result = handleVimAction(state, action);
518
- expect(result).toHaveOnlyValidCharacters();
519
- expect(result.lines[0]).toBe('world test');
520
- expect(result.cursorCol).toBe(0);
521
- });
522
- it('should delete multiple words', () => {
523
- const state = createTestState(['hello world test'], 0, 0);
524
- const action = {
525
- type: 'vim_delete_word_forward',
526
- payload: { count: 2 },
527
- };
528
- const result = handleVimAction(state, action);
529
- expect(result).toHaveOnlyValidCharacters();
530
- expect(result.lines[0]).toBe('test');
531
- expect(result.cursorCol).toBe(0);
532
- });
533
- it('should delete to end if no more words', () => {
534
- const state = createTestState(['hello world'], 0, 6);
535
- const action = {
536
- type: 'vim_delete_word_forward',
537
- payload: { count: 2 },
538
- };
539
- const result = handleVimAction(state, action);
540
- expect(result).toHaveOnlyValidCharacters();
541
- expect(result.lines[0]).toBe('hello ');
542
- expect(result.cursorCol).toBe(5);
543
- });
544
- it('should delete only the word characters if it is the last word followed by whitespace', () => {
545
- const state = createTestState(['foo bar '], 0, 4); // on 'b'
546
- const action = {
547
- type: 'vim_delete_word_forward',
548
- payload: { count: 1 },
549
- };
550
- const result = handleVimAction(state, action);
551
- expect(result).toHaveOnlyValidCharacters();
552
- expect(result.lines[0]).toBe('foo ');
553
- });
554
- it('should do nothing if cursor is on whitespace after the last word', () => {
555
- const state = createTestState(['foo bar '], 0, 8); // on one of the trailing spaces
556
- const action = {
557
- type: 'vim_delete_word_forward',
558
- payload: { count: 1 },
559
- };
560
- const result = handleVimAction(state, action);
561
- expect(result).toHaveOnlyValidCharacters();
562
- expect(result.lines[0]).toBe('foo bar ');
563
- });
564
- });
565
- describe('vim_delete_big_word_forward', () => {
566
- it('should delete only the big word characters if it is the last word followed by whitespace', () => {
567
- const state = createTestState(['foo bar.baz '], 0, 4); // on 'b'
568
- const action = {
569
- type: 'vim_delete_big_word_forward',
570
- payload: { count: 1 },
571
- };
572
- const result = handleVimAction(state, action);
573
- expect(result).toHaveOnlyValidCharacters();
574
- expect(result.lines[0]).toBe('foo ');
575
- });
576
- it('should clamp cursor when dW removes the last word leaving only a trailing space', () => {
577
- // cursor on 'w' in 'hello world'; dW deletes 'world' → 'hello '
578
- const state = createTestState(['hello world'], 0, 6);
579
- const result = handleVimAction(state, {
580
- type: 'vim_delete_big_word_forward',
581
- payload: { count: 1 },
582
- });
583
- expect(result.lines[0]).toBe('hello ');
584
- // col 6 is past the new line end (len 6, max valid = 5)
585
- expect(result.cursorCol).toBe(5);
586
- });
587
- });
588
- describe('vim_delete_word_end', () => {
589
- it('should clamp cursor when de removes the last word on a line', () => {
590
- // cursor on 'w' in 'hello world'; de deletes through 'd' → 'hello '
591
- const state = createTestState(['hello world'], 0, 6);
592
- const result = handleVimAction(state, {
593
- type: 'vim_delete_word_end',
594
- payload: { count: 1 },
595
- });
596
- expect(result.lines[0]).toBe('hello ');
597
- expect(result.cursorCol).toBe(5);
598
- });
599
- });
600
- describe('vim_delete_big_word_end', () => {
601
- it('should delete from cursor to end of WORD (skipping punctuation)', () => {
602
- // cursor on 'b' in 'foo bar.baz qux'; dE treats 'bar.baz' as one WORD
603
- const state = createTestState(['foo bar.baz qux'], 0, 4);
604
- const result = handleVimAction(state, {
605
- type: 'vim_delete_big_word_end',
606
- payload: { count: 1 },
607
- });
608
- expect(result.lines[0]).toBe('foo qux');
609
- expect(result.cursorCol).toBe(4);
610
- });
611
- it('should clamp cursor when dE removes the last WORD on a line', () => {
612
- // cursor on 'w' in 'hello world'; dE deletes through 'd' → 'hello '
613
- const state = createTestState(['hello world'], 0, 6);
614
- const result = handleVimAction(state, {
615
- type: 'vim_delete_big_word_end',
616
- payload: { count: 1 },
617
- });
618
- expect(result.lines[0]).toBe('hello ');
619
- expect(result.cursorCol).toBe(5);
620
- });
621
- });
622
- describe('vim_delete_word_backward', () => {
623
- it('should delete from cursor to previous word start', () => {
624
- const state = createTestState(['hello world test'], 0, 12);
625
- const action = {
626
- type: 'vim_delete_word_backward',
627
- payload: { count: 1 },
628
- };
629
- const result = handleVimAction(state, action);
630
- expect(result).toHaveOnlyValidCharacters();
631
- expect(result.lines[0]).toBe('hello test');
632
- expect(result.cursorCol).toBe(6);
633
- });
634
- it('should delete multiple words backward', () => {
635
- const state = createTestState(['hello world test'], 0, 12);
636
- const action = {
637
- type: 'vim_delete_word_backward',
638
- payload: { count: 2 },
639
- };
640
- const result = handleVimAction(state, action);
641
- expect(result).toHaveOnlyValidCharacters();
642
- expect(result.lines[0]).toBe('test');
643
- expect(result.cursorCol).toBe(0);
644
- });
645
- });
646
- describe('vim_delete_line', () => {
647
- it('should delete current line', () => {
648
- const state = createTestState(['line1', 'line2', 'line3'], 1, 2);
649
- const action = {
650
- type: 'vim_delete_line',
651
- payload: { count: 1 },
652
- };
653
- const result = handleVimAction(state, action);
654
- expect(result).toHaveOnlyValidCharacters();
655
- expect(result.lines).toEqual(['line1', 'line3']);
656
- expect(result.cursorRow).toBe(1);
657
- expect(result.cursorCol).toBe(0);
658
- });
659
- it('should delete multiple lines', () => {
660
- const state = createTestState(['line1', 'line2', 'line3'], 0, 2);
661
- const action = {
662
- type: 'vim_delete_line',
663
- payload: { count: 2 },
664
- };
665
- const result = handleVimAction(state, action);
666
- expect(result).toHaveOnlyValidCharacters();
667
- expect(result.lines).toEqual(['line3']);
668
- expect(result.cursorRow).toBe(0);
669
- expect(result.cursorCol).toBe(0);
670
- });
671
- it('should leave empty line when deleting all lines', () => {
672
- const state = createTestState(['only line'], 0, 0);
673
- const action = {
674
- type: 'vim_delete_line',
675
- payload: { count: 1 },
676
- };
677
- const result = handleVimAction(state, action);
678
- expect(result).toHaveOnlyValidCharacters();
679
- expect(result.lines).toEqual(['']);
680
- expect(result.cursorRow).toBe(0);
681
- expect(result.cursorCol).toBe(0);
682
- });
683
- });
684
- describe('vim_delete_to_end_of_line', () => {
685
- it('should delete from cursor to end of line', () => {
686
- const state = createTestState(['hello world'], 0, 5);
687
- const action = {
688
- type: 'vim_delete_to_end_of_line',
689
- payload: { count: 1 },
690
- };
691
- const result = handleVimAction(state, action);
692
- expect(result).toHaveOnlyValidCharacters();
693
- expect(result.lines[0]).toBe('hello');
694
- expect(result.cursorCol).toBe(4);
695
- });
696
- it('should do nothing at end of line', () => {
697
- const state = createTestState(['hello'], 0, 5);
698
- const action = {
699
- type: 'vim_delete_to_end_of_line',
700
- payload: { count: 1 },
701
- };
702
- const result = handleVimAction(state, action);
703
- expect(result).toHaveOnlyValidCharacters();
704
- expect(result.lines[0]).toBe('hello');
705
- });
706
- it('should delete to end of line plus additional lines with count > 1', () => {
707
- const state = createTestState(['line one', 'line two', 'line three'], 0, 5);
708
- const action = {
709
- type: 'vim_delete_to_end_of_line',
710
- payload: { count: 2 },
711
- };
712
- const result = handleVimAction(state, action);
713
- expect(result).toHaveOnlyValidCharacters();
714
- // 2D at position 5 on "line one" should delete "one" + entire "line two"
715
- expect(result.lines).toEqual(['line ', 'line three']);
716
- expect(result.cursorCol).toBe(4);
717
- });
718
- it('should handle count exceeding available lines', () => {
719
- const state = createTestState(['line one', 'line two'], 0, 5);
720
- const action = {
721
- type: 'vim_delete_to_end_of_line',
722
- payload: { count: 5 },
723
- };
724
- const result = handleVimAction(state, action);
725
- expect(result).toHaveOnlyValidCharacters();
726
- // Should delete to end of available lines
727
- expect(result.lines).toEqual(['line ']);
728
- });
729
- });
730
- describe('vim_delete_to_first_nonwhitespace', () => {
731
- it('should delete from cursor backwards to first non-whitespace', () => {
732
- const state = createTestState([' hello world'], 0, 10);
733
- const action = { type: 'vim_delete_to_first_nonwhitespace' };
734
- const result = handleVimAction(state, action);
735
- expect(result).toHaveOnlyValidCharacters();
736
- // Delete from 'h' (col 4) to cursor (col 10), leaving " world"
737
- expect(result.lines[0]).toBe(' world');
738
- expect(result.cursorCol).toBe(4);
739
- });
740
- it('should delete from cursor forwards when cursor is in whitespace', () => {
741
- const state = createTestState([' hello'], 0, 2);
742
- const action = { type: 'vim_delete_to_first_nonwhitespace' };
743
- const result = handleVimAction(state, action);
744
- expect(result).toHaveOnlyValidCharacters();
745
- // Delete from cursor (col 2) to first non-ws (col 4), leaving " hello"
746
- expect(result.lines[0]).toBe(' hello');
747
- expect(result.cursorCol).toBe(2);
748
- });
749
- it('should do nothing when cursor is at first non-whitespace', () => {
750
- const state = createTestState([' hello'], 0, 4);
751
- const action = { type: 'vim_delete_to_first_nonwhitespace' };
752
- const result = handleVimAction(state, action);
753
- expect(result).toHaveOnlyValidCharacters();
754
- expect(result.lines[0]).toBe(' hello');
755
- });
756
- it('should delete to column 0 on whitespace-only line', () => {
757
- const state = createTestState([' '], 0, 2);
758
- const action = { type: 'vim_delete_to_first_nonwhitespace' };
759
- const result = handleVimAction(state, action);
760
- expect(result).toHaveOnlyValidCharacters();
761
- // On whitespace-only line, ^ goes to col 0, so d^ deletes cols 0-2
762
- expect(result.lines[0]).toBe(' ');
763
- expect(result.cursorCol).toBe(0);
764
- });
765
- });
766
- describe('vim_delete_to_first_line', () => {
767
- it('should delete from current line to first line (dgg)', () => {
768
- const state = createTestState(['line1', 'line2', 'line3', 'line4'], 2, 0);
769
- const action = {
770
- type: 'vim_delete_to_first_line',
771
- payload: { count: 0 },
772
- };
773
- const result = handleVimAction(state, action);
774
- expect(result).toHaveOnlyValidCharacters();
775
- // Delete lines 0, 1, 2 (current), leaving line4
776
- expect(result.lines).toEqual(['line4']);
777
- expect(result.cursorRow).toBe(0);
778
- });
779
- it('should delete from current line to specified line (d5gg)', () => {
780
- const state = createTestState(['line1', 'line2', 'line3', 'line4', 'line5'], 4, 0);
781
- const action = {
782
- type: 'vim_delete_to_first_line',
783
- payload: { count: 2 }, // Delete to line 2 (1-based)
784
- };
785
- const result = handleVimAction(state, action);
786
- expect(result).toHaveOnlyValidCharacters();
787
- // Delete lines 1-4 (line2 to line5), leaving line1
788
- expect(result.lines).toEqual(['line1']);
789
- expect(result.cursorRow).toBe(0);
790
- });
791
- it('should keep one empty line when deleting all lines', () => {
792
- const state = createTestState(['line1', 'line2'], 1, 0);
793
- const action = {
794
- type: 'vim_delete_to_first_line',
795
- payload: { count: 0 },
796
- };
797
- const result = handleVimAction(state, action);
798
- expect(result).toHaveOnlyValidCharacters();
799
- expect(result.lines).toEqual(['']);
800
- });
801
- });
802
- describe('vim_delete_to_last_line', () => {
803
- it('should delete from current line to last line (dG)', () => {
804
- const state = createTestState(['line1', 'line2', 'line3', 'line4'], 1, 0);
805
- const action = {
806
- type: 'vim_delete_to_last_line',
807
- payload: { count: 0 },
808
- };
809
- const result = handleVimAction(state, action);
810
- expect(result).toHaveOnlyValidCharacters();
811
- // Delete lines 1, 2, 3 (from current to last), leaving line1
812
- expect(result.lines).toEqual(['line1']);
813
- expect(result.cursorRow).toBe(0);
814
- });
815
- it('should delete from current line to specified line (d3G)', () => {
816
- const state = createTestState(['line1', 'line2', 'line3', 'line4', 'line5'], 0, 0);
817
- const action = {
818
- type: 'vim_delete_to_last_line',
819
- payload: { count: 3 }, // Delete to line 3 (1-based)
820
- };
821
- const result = handleVimAction(state, action);
822
- expect(result).toHaveOnlyValidCharacters();
823
- // Delete lines 0-2 (line1 to line3), leaving line4 and line5
824
- expect(result.lines).toEqual(['line4', 'line5']);
825
- expect(result.cursorRow).toBe(0);
826
- });
827
- it('should keep one empty line when deleting all lines', () => {
828
- const state = createTestState(['line1', 'line2'], 0, 0);
829
- const action = {
830
- type: 'vim_delete_to_last_line',
831
- payload: { count: 0 },
832
- };
833
- const result = handleVimAction(state, action);
834
- expect(result).toHaveOnlyValidCharacters();
835
- expect(result.lines).toEqual(['']);
836
- });
837
- });
838
- describe('vim_change_to_start_of_line', () => {
839
- it('should delete from start of line to cursor (c0)', () => {
840
- const state = createTestState(['hello world'], 0, 6);
841
- const action = { type: 'vim_change_to_start_of_line' };
842
- const result = handleVimAction(state, action);
843
- expect(result).toHaveOnlyValidCharacters();
844
- expect(result.lines[0]).toBe('world');
845
- expect(result.cursorCol).toBe(0);
846
- });
847
- it('should do nothing at start of line', () => {
848
- const state = createTestState(['hello'], 0, 0);
849
- const action = { type: 'vim_change_to_start_of_line' };
850
- const result = handleVimAction(state, action);
851
- expect(result).toHaveOnlyValidCharacters();
852
- expect(result.lines[0]).toBe('hello');
853
- });
854
- });
855
- describe('vim_change_to_first_nonwhitespace', () => {
856
- it('should delete from first non-whitespace to cursor (c^)', () => {
857
- const state = createTestState([' hello world'], 0, 10);
858
- const action = { type: 'vim_change_to_first_nonwhitespace' };
859
- const result = handleVimAction(state, action);
860
- expect(result).toHaveOnlyValidCharacters();
861
- expect(result.lines[0]).toBe(' world');
862
- expect(result.cursorCol).toBe(4);
863
- });
864
- it('should delete backwards when cursor before first non-whitespace', () => {
865
- const state = createTestState([' hello'], 0, 2);
866
- const action = { type: 'vim_change_to_first_nonwhitespace' };
867
- const result = handleVimAction(state, action);
868
- expect(result).toHaveOnlyValidCharacters();
869
- expect(result.lines[0]).toBe(' hello');
870
- expect(result.cursorCol).toBe(2);
871
- });
872
- it('should handle whitespace-only line', () => {
873
- const state = createTestState([' '], 0, 3);
874
- const action = { type: 'vim_change_to_first_nonwhitespace' };
875
- const result = handleVimAction(state, action);
876
- expect(result).toHaveOnlyValidCharacters();
877
- expect(result.lines[0]).toBe(' ');
878
- expect(result.cursorCol).toBe(0);
879
- });
880
- });
881
- describe('vim_change_to_end_of_line', () => {
882
- it('should delete from cursor to end of line (C)', () => {
883
- const state = createTestState(['hello world'], 0, 6);
884
- const action = {
885
- type: 'vim_change_to_end_of_line',
886
- payload: { count: 1 },
887
- };
888
- const result = handleVimAction(state, action);
889
- expect(result).toHaveOnlyValidCharacters();
890
- expect(result.lines[0]).toBe('hello ');
891
- expect(result.cursorCol).toBe(6);
892
- });
893
- it('should delete multiple lines with count (2C)', () => {
894
- const state = createTestState(['line1 hello', 'line2', 'line3'], 0, 6);
895
- const action = {
896
- type: 'vim_change_to_end_of_line',
897
- payload: { count: 2 },
898
- };
899
- const result = handleVimAction(state, action);
900
- expect(result).toHaveOnlyValidCharacters();
901
- expect(result.lines).toEqual(['line1 ', 'line3']);
902
- expect(result.cursorRow).toBe(0);
903
- expect(result.cursorCol).toBe(6);
904
- });
905
- it('should delete remaining lines when count exceeds available (3C on 2 lines)', () => {
906
- const state = createTestState(['hello world', 'end'], 0, 6);
907
- const action = {
908
- type: 'vim_change_to_end_of_line',
909
- payload: { count: 3 },
910
- };
911
- const result = handleVimAction(state, action);
912
- expect(result).toHaveOnlyValidCharacters();
913
- expect(result.lines).toEqual(['hello ']);
914
- expect(result.cursorCol).toBe(6);
915
- });
916
- it('should handle count at last line', () => {
917
- const state = createTestState(['first', 'last line'], 1, 5);
918
- const action = {
919
- type: 'vim_change_to_end_of_line',
920
- payload: { count: 2 },
921
- };
922
- const result = handleVimAction(state, action);
923
- expect(result).toHaveOnlyValidCharacters();
924
- expect(result.lines).toEqual(['first', 'last ']);
925
- expect(result.cursorRow).toBe(1);
926
- expect(result.cursorCol).toBe(5);
927
- });
928
- });
929
- describe('vim_change_to_first_line', () => {
930
- it('should delete from first line to current line (cgg)', () => {
931
- const state = createTestState(['line1', 'line2', 'line3'], 2, 3);
932
- const action = {
933
- type: 'vim_delete_to_first_line',
934
- payload: { count: 0 },
935
- };
936
- const result = handleVimAction(state, action);
937
- expect(result).toHaveOnlyValidCharacters();
938
- expect(result.lines).toEqual(['']);
939
- expect(result.cursorRow).toBe(0);
940
- });
941
- it('should delete from line 1 to target line (c3gg)', () => {
942
- const state = createTestState(['line1', 'line2', 'line3', 'line4', 'line5'], 0, 0);
943
- const action = {
944
- type: 'vim_delete_to_first_line',
945
- payload: { count: 3 },
946
- };
947
- const result = handleVimAction(state, action);
948
- expect(result).toHaveOnlyValidCharacters();
949
- expect(result.lines).toEqual(['line4', 'line5']);
950
- expect(result.cursorRow).toBe(0);
951
- });
952
- it('should handle cursor below target line', () => {
953
- // Cursor on line 4 (index 3), target line 2 (index 1)
954
- // Should delete lines 2-4 (indices 1-3), leaving line1 and line5
955
- const state = createTestState(['line1', 'line2', 'line3', 'line4', 'line5'], 3, 0);
956
- const action = {
957
- type: 'vim_delete_to_first_line',
958
- payload: { count: 2 },
959
- };
960
- const result = handleVimAction(state, action);
961
- expect(result).toHaveOnlyValidCharacters();
962
- expect(result.lines).toEqual(['line1', 'line5']);
963
- expect(result.cursorRow).toBe(1);
964
- });
965
- });
966
- describe('vim_change_to_last_line', () => {
967
- it('should delete from current line to last line (cG)', () => {
968
- const state = createTestState(['line1', 'line2', 'line3'], 0, 3);
969
- const action = {
970
- type: 'vim_delete_to_last_line',
971
- payload: { count: 0 },
972
- };
973
- const result = handleVimAction(state, action);
974
- expect(result).toHaveOnlyValidCharacters();
975
- expect(result.lines).toEqual(['']);
976
- expect(result.cursorRow).toBe(0);
977
- });
978
- it('should delete from cursor to target line (c2G)', () => {
979
- const state = createTestState(['line1', 'line2', 'line3', 'line4'], 0, 0);
980
- const action = {
981
- type: 'vim_delete_to_last_line',
982
- payload: { count: 2 },
983
- };
984
- const result = handleVimAction(state, action);
985
- expect(result).toHaveOnlyValidCharacters();
986
- expect(result.lines).toEqual(['line3', 'line4']);
987
- expect(result.cursorRow).toBe(0);
988
- });
989
- it('should handle cursor above target', () => {
990
- // Cursor on line 2 (index 1), target line 3 (index 2)
991
- // Should delete lines 2-3 (indices 1-2), leaving line1 and line4
992
- const state = createTestState(['line1', 'line2', 'line3', 'line4'], 1, 0);
993
- const action = {
994
- type: 'vim_delete_to_last_line',
995
- payload: { count: 3 },
996
- };
997
- const result = handleVimAction(state, action);
998
- expect(result).toHaveOnlyValidCharacters();
999
- expect(result.lines).toEqual(['line1', 'line4']);
1000
- expect(result.cursorRow).toBe(1);
1001
- });
1002
- });
1003
- });
1004
- describe('Insert mode commands', () => {
1005
- describe('vim_insert_at_cursor', () => {
1006
- it('should not change cursor position', () => {
1007
- const state = createTestState(['hello'], 0, 2);
1008
- const action = { type: 'vim_insert_at_cursor' };
1009
- const result = handleVimAction(state, action);
1010
- expect(result).toHaveOnlyValidCharacters();
1011
- expect(result.cursorRow).toBe(0);
1012
- expect(result.cursorCol).toBe(2);
1013
- });
1014
- });
1015
- describe('vim_append_at_cursor', () => {
1016
- it('should move cursor right by one', () => {
1017
- const state = createTestState(['hello'], 0, 2);
1018
- const action = { type: 'vim_append_at_cursor' };
1019
- const result = handleVimAction(state, action);
1020
- expect(result).toHaveOnlyValidCharacters();
1021
- expect(result.cursorCol).toBe(3);
1022
- });
1023
- it('should not move past end of line', () => {
1024
- const state = createTestState(['hello'], 0, 5);
1025
- const action = { type: 'vim_append_at_cursor' };
1026
- const result = handleVimAction(state, action);
1027
- expect(result).toHaveOnlyValidCharacters();
1028
- expect(result.cursorCol).toBe(5);
1029
- });
1030
- });
1031
- describe('vim_append_at_line_end', () => {
1032
- it('should move cursor to end of line', () => {
1033
- const state = createTestState(['hello world'], 0, 3);
1034
- const action = { type: 'vim_append_at_line_end' };
1035
- const result = handleVimAction(state, action);
1036
- expect(result).toHaveOnlyValidCharacters();
1037
- expect(result.cursorCol).toBe(11);
1038
- });
1039
- });
1040
- describe('vim_insert_at_line_start', () => {
1041
- it('should move to first non-whitespace character', () => {
1042
- const state = createTestState([' hello world'], 0, 5);
1043
- const action = { type: 'vim_insert_at_line_start' };
1044
- const result = handleVimAction(state, action);
1045
- expect(result).toHaveOnlyValidCharacters();
1046
- expect(result.cursorCol).toBe(2);
1047
- });
1048
- it('should move to column 0 for line with only whitespace', () => {
1049
- const state = createTestState([' '], 0, 1);
1050
- const action = { type: 'vim_insert_at_line_start' };
1051
- const result = handleVimAction(state, action);
1052
- expect(result).toHaveOnlyValidCharacters();
1053
- expect(result.cursorCol).toBe(3);
1054
- });
1055
- });
1056
- describe('vim_open_line_below', () => {
1057
- it('should insert a new line below the current one', () => {
1058
- const state = createTestState(['hello world'], 0, 5);
1059
- const action = { type: 'vim_open_line_below' };
1060
- const result = handleVimAction(state, action);
1061
- expect(result).toHaveOnlyValidCharacters();
1062
- expect(result.lines).toEqual(['hello world', '']);
1063
- expect(result.cursorRow).toBe(1);
1064
- expect(result.cursorCol).toBe(0);
1065
- });
1066
- });
1067
- describe('vim_open_line_above', () => {
1068
- it('should insert a new line above the current one', () => {
1069
- const state = createTestState(['hello', 'world'], 1, 2);
1070
- const action = { type: 'vim_open_line_above' };
1071
- const result = handleVimAction(state, action);
1072
- expect(result).toHaveOnlyValidCharacters();
1073
- expect(result.lines).toEqual(['hello', '', 'world']);
1074
- expect(result.cursorRow).toBe(1);
1075
- expect(result.cursorCol).toBe(0);
1076
- });
1077
- });
1078
- describe('vim_escape_insert_mode', () => {
1079
- it('should move cursor left', () => {
1080
- const state = createTestState(['hello'], 0, 3);
1081
- const action = { type: 'vim_escape_insert_mode' };
1082
- const result = handleVimAction(state, action);
1083
- expect(result).toHaveOnlyValidCharacters();
1084
- expect(result.cursorCol).toBe(2);
1085
- });
1086
- it('should not move past beginning of line', () => {
1087
- const state = createTestState(['hello'], 0, 0);
1088
- const action = { type: 'vim_escape_insert_mode' };
1089
- const result = handleVimAction(state, action);
1090
- expect(result).toHaveOnlyValidCharacters();
1091
- expect(result.cursorCol).toBe(0);
1092
- });
1093
- });
1094
- });
1095
- describe('Change commands', () => {
1096
- describe('vim_change_word_forward', () => {
1097
- it('should delete from cursor to next word start', () => {
1098
- const state = createTestState(['hello world test'], 0, 0);
1099
- const action = {
1100
- type: 'vim_change_word_forward',
1101
- payload: { count: 1 },
1102
- };
1103
- const result = handleVimAction(state, action);
1104
- expect(result).toHaveOnlyValidCharacters();
1105
- expect(result.lines[0]).toBe('world test');
1106
- expect(result.cursorCol).toBe(0);
1107
- });
1108
- });
1109
- describe('vim_change_line', () => {
1110
- it('should delete entire line content', () => {
1111
- const state = createTestState(['hello world'], 0, 5);
1112
- const action = {
1113
- type: 'vim_change_line',
1114
- payload: { count: 1 },
1115
- };
1116
- const result = handleVimAction(state, action);
1117
- expect(result).toHaveOnlyValidCharacters();
1118
- expect(result.lines[0]).toBe('');
1119
- expect(result.cursorCol).toBe(0);
1120
- });
1121
- });
1122
- describe('vim_change_movement', () => {
1123
- it('should change characters to the left', () => {
1124
- const state = createTestState(['hello world'], 0, 5);
1125
- const action = {
1126
- type: 'vim_change_movement',
1127
- payload: { movement: 'h', count: 2 },
1128
- };
1129
- const result = handleVimAction(state, action);
1130
- expect(result).toHaveOnlyValidCharacters();
1131
- expect(result.lines[0]).toBe('hel world');
1132
- expect(result.cursorCol).toBe(3);
1133
- });
1134
- it('should change characters to the right', () => {
1135
- const state = createTestState(['hello world'], 0, 5);
1136
- const action = {
1137
- type: 'vim_change_movement',
1138
- payload: { movement: 'l', count: 3 },
1139
- };
1140
- const result = handleVimAction(state, action);
1141
- expect(result).toHaveOnlyValidCharacters();
1142
- expect(result.lines[0]).toBe('hellorld'); // Deletes ' wo' (3 chars to the right)
1143
- expect(result.cursorCol).toBe(5);
1144
- });
1145
- it('should change multiple lines down', () => {
1146
- const state = createTestState(['line1', 'line2', 'line3'], 0, 2);
1147
- const action = {
1148
- type: 'vim_change_movement',
1149
- payload: { movement: 'j', count: 2 },
1150
- };
1151
- const result = handleVimAction(state, action);
1152
- expect(result).toHaveOnlyValidCharacters();
1153
- // In VIM, 2cj deletes current line + 2 lines below = 3 lines total
1154
- // Since there are exactly 3 lines, all are deleted
1155
- expect(result.lines).toEqual(['']);
1156
- expect(result.cursorRow).toBe(0);
1157
- expect(result.cursorCol).toBe(0);
1158
- });
1159
- it('should handle Unicode characters in cj (down)', () => {
1160
- const state = createTestState(['hello 🎉 world', 'line2 émoji', 'line3'], 0, 0);
1161
- const action = {
1162
- type: 'vim_change_movement',
1163
- payload: { movement: 'j', count: 1 },
1164
- };
1165
- const result = handleVimAction(state, action);
1166
- expect(result).toHaveOnlyValidCharacters();
1167
- expect(result.lines).toEqual(['line3']);
1168
- expect(result.cursorRow).toBe(0);
1169
- expect(result.cursorCol).toBe(0);
1170
- });
1171
- it('should handle Unicode characters in ck (up)', () => {
1172
- const state = createTestState(['line1', 'hello 🎉 world', 'line3 émoji'], 2, 0);
1173
- const action = {
1174
- type: 'vim_change_movement',
1175
- payload: { movement: 'k', count: 1 },
1176
- };
1177
- const result = handleVimAction(state, action);
1178
- expect(result).toHaveOnlyValidCharacters();
1179
- expect(result.lines).toEqual(['line1']);
1180
- expect(result.cursorRow).toBe(0);
1181
- expect(result.cursorCol).toBe(0);
1182
- });
1183
- it('should handle cj on first line of 2 lines (delete all)', () => {
1184
- const state = createTestState(['line1', 'line2'], 0, 0);
1185
- const action = {
1186
- type: 'vim_change_movement',
1187
- payload: { movement: 'j', count: 1 },
1188
- };
1189
- const result = handleVimAction(state, action);
1190
- expect(result).toHaveOnlyValidCharacters();
1191
- expect(result.lines).toEqual(['']);
1192
- expect(result.cursorRow).toBe(0);
1193
- expect(result.cursorCol).toBe(0);
1194
- });
1195
- it('should handle cj on last line (delete only current line)', () => {
1196
- const state = createTestState(['line1', 'line2', 'line3'], 2, 0);
1197
- const action = {
1198
- type: 'vim_change_movement',
1199
- payload: { movement: 'j', count: 1 },
1200
- };
1201
- const result = handleVimAction(state, action);
1202
- expect(result).toHaveOnlyValidCharacters();
1203
- expect(result.lines).toEqual(['line1', 'line2']);
1204
- expect(result.cursorRow).toBe(1);
1205
- expect(result.cursorCol).toBe(0);
1206
- });
1207
- it('should handle ck on first line (delete only current line)', () => {
1208
- const state = createTestState(['line1', 'line2', 'line3'], 0, 0);
1209
- const action = {
1210
- type: 'vim_change_movement',
1211
- payload: { movement: 'k', count: 1 },
1212
- };
1213
- const result = handleVimAction(state, action);
1214
- expect(result).toHaveOnlyValidCharacters();
1215
- expect(result.lines).toEqual(['line2', 'line3']);
1216
- expect(result.cursorRow).toBe(0);
1217
- expect(result.cursorCol).toBe(0);
1218
- });
1219
- it('should handle 2cj from middle line', () => {
1220
- const state = createTestState(['line1', 'line2', 'line3', 'line4', 'line5'], 1, 0);
1221
- const action = {
1222
- type: 'vim_change_movement',
1223
- payload: { movement: 'j', count: 2 },
1224
- };
1225
- const result = handleVimAction(state, action);
1226
- expect(result).toHaveOnlyValidCharacters();
1227
- // 2cj from line 1: delete lines 1, 2, 3 (current + 2 below)
1228
- expect(result.lines).toEqual(['line1', 'line5']);
1229
- expect(result.cursorRow).toBe(1);
1230
- expect(result.cursorCol).toBe(0);
1231
- });
1232
- it('should handle 2ck from middle line', () => {
1233
- const state = createTestState(['line1', 'line2', 'line3', 'line4', 'line5'], 3, 0);
1234
- const action = {
1235
- type: 'vim_change_movement',
1236
- payload: { movement: 'k', count: 2 },
1237
- };
1238
- const result = handleVimAction(state, action);
1239
- expect(result).toHaveOnlyValidCharacters();
1240
- // 2ck from line 3: delete lines 1, 2, 3 (current + 2 above)
1241
- expect(result.lines).toEqual(['line1', 'line5']);
1242
- expect(result.cursorRow).toBe(1);
1243
- expect(result.cursorCol).toBe(0);
1244
- });
1245
- });
1246
- });
1247
- describe('Edge cases', () => {
1248
- it('should handle empty text', () => {
1249
- const state = createTestState([''], 0, 0);
1250
- const action = {
1251
- type: 'vim_move_word_forward',
1252
- payload: { count: 1 },
1253
- };
1254
- const result = handleVimAction(state, action);
1255
- expect(result).toHaveOnlyValidCharacters();
1256
- expect(result.cursorRow).toBe(0);
1257
- expect(result.cursorCol).toBe(0);
1258
- });
1259
- it('should handle single character line', () => {
1260
- const state = createTestState(['a'], 0, 0);
1261
- const action = { type: 'vim_move_to_line_end' };
1262
- const result = handleVimAction(state, action);
1263
- expect(result).toHaveOnlyValidCharacters();
1264
- expect(result.cursorCol).toBe(0); // Should be last character position
1265
- });
1266
- it('should handle empty lines in multi-line text', () => {
1267
- const state = createTestState(['line1', '', 'line3'], 1, 0);
1268
- const action = {
1269
- type: 'vim_move_word_forward',
1270
- payload: { count: 1 },
1271
- };
1272
- const result = handleVimAction(state, action);
1273
- expect(result).toHaveOnlyValidCharacters();
1274
- // Should move to next line with content
1275
- expect(result.cursorRow).toBe(2);
1276
- expect(result.cursorCol).toBe(0);
1277
- });
1278
- it('should preserve undo stack in operations', () => {
1279
- const state = createTestState(['hello'], 0, 0);
1280
- state.undoStack = [
1281
- {
1282
- lines: ['previous'],
1283
- cursorRow: 0,
1284
- cursorCol: 0,
1285
- pastedContent: {},
1286
- expandedPaste: null,
1287
- },
1288
- ];
1289
- const action = {
1290
- type: 'vim_delete_char',
1291
- payload: { count: 1 },
1292
- };
1293
- const result = handleVimAction(state, action);
1294
- expect(result).toHaveOnlyValidCharacters();
1295
- expect(result.undoStack).toHaveLength(2); // Original plus new snapshot
1296
- });
1297
- });
1298
- describe('UTF-32 character handling in word/line operations', () => {
1299
- describe('Right-to-left text handling', () => {
1300
- it('should handle Arabic text in word movements', () => {
1301
- const state = createTestState(['hello مرحبا world'], 0, 0);
1302
- // Move to end of 'hello'
1303
- let result = handleVimAction(state, {
1304
- type: 'vim_move_word_end',
1305
- payload: { count: 1 },
1306
- });
1307
- expect(result).toHaveOnlyValidCharacters();
1308
- expect(result.cursorCol).toBe(4); // End of 'hello'
1309
- // Move to end of Arabic word
1310
- result = handleVimAction(result, {
1311
- type: 'vim_move_word_end',
1312
- payload: { count: 1 },
1313
- });
1314
- expect(result).toHaveOnlyValidCharacters();
1315
- expect(result.cursorCol).toBe(10); // End of Arabic word 'مرحبا'
1316
- });
1317
- });
1318
- describe('Chinese character handling', () => {
1319
- it('should handle Chinese characters in word movements', () => {
1320
- const state = createTestState(['hello 你好 world'], 0, 0);
1321
- // Move to end of 'hello'
1322
- let result = handleVimAction(state, {
1323
- type: 'vim_move_word_end',
1324
- payload: { count: 1 },
1325
- });
1326
- expect(result).toHaveOnlyValidCharacters();
1327
- expect(result.cursorCol).toBe(4); // End of 'hello'
1328
- // Move forward to start of 'world'
1329
- result = handleVimAction(result, {
1330
- type: 'vim_move_word_forward',
1331
- payload: { count: 1 },
1332
- });
1333
- expect(result).toHaveOnlyValidCharacters();
1334
- expect(result.cursorCol).toBe(6); // Start of '你好'
1335
- });
1336
- });
1337
- describe('Mixed script handling', () => {
1338
- it('should handle mixed Latin and non-Latin scripts with word end commands', () => {
1339
- const state = createTestState(['test中文test'], 0, 0);
1340
- let result = handleVimAction(state, {
1341
- type: 'vim_move_word_end',
1342
- payload: { count: 1 },
1343
- });
1344
- expect(result).toHaveOnlyValidCharacters();
1345
- expect(result.cursorCol).toBe(3); // End of 'test'
1346
- // Second word end command should move to end of '中文'
1347
- result = handleVimAction(result, {
1348
- type: 'vim_move_word_end',
1349
- payload: { count: 1 },
1350
- });
1351
- expect(result).toHaveOnlyValidCharacters();
1352
- expect(result.cursorCol).toBe(5); // End of '中文'
1353
- });
1354
- it('should handle mixed Latin and non-Latin scripts with word forward commands', () => {
1355
- const state = createTestState(['test中文test'], 0, 0);
1356
- let result = handleVimAction(state, {
1357
- type: 'vim_move_word_forward',
1358
- payload: { count: 1 },
1359
- });
1360
- expect(result).toHaveOnlyValidCharacters();
1361
- expect(result.cursorCol).toBe(4); // Start of '中'
1362
- // Second word forward command should move to start of final 'test'
1363
- result = handleVimAction(result, {
1364
- type: 'vim_move_word_forward',
1365
- payload: { count: 1 },
1366
- });
1367
- expect(result).toHaveOnlyValidCharacters();
1368
- expect(result.cursorCol).toBe(6); // Start of final 'test'
1369
- });
1370
- it('should handle mixed Latin and non-Latin scripts with word backward commands', () => {
1371
- const state = createTestState(['test中文test'], 0, 9); // Start at end of final 'test'
1372
- let result = handleVimAction(state, {
1373
- type: 'vim_move_word_backward',
1374
- payload: { count: 1 },
1375
- });
1376
- expect(result).toHaveOnlyValidCharacters();
1377
- expect(result.cursorCol).toBe(6); // Start of final 'test'
1378
- // Second word backward command should move to start of '中文'
1379
- result = handleVimAction(result, {
1380
- type: 'vim_move_word_backward',
1381
- payload: { count: 1 },
1382
- });
1383
- expect(result).toHaveOnlyValidCharacters();
1384
- expect(result.cursorCol).toBe(4); // Start of '中'
1385
- });
1386
- it('should handle Unicode block characters consistently with w and e commands', () => {
1387
- const state = createTestState(['██ █████ ██'], 0, 0);
1388
- // Test w command progression
1389
- let wResult = handleVimAction(state, {
1390
- type: 'vim_move_word_forward',
1391
- payload: { count: 1 },
1392
- });
1393
- expect(wResult).toHaveOnlyValidCharacters();
1394
- expect(wResult.cursorCol).toBe(3); // Start of second block sequence
1395
- wResult = handleVimAction(wResult, {
1396
- type: 'vim_move_word_forward',
1397
- payload: { count: 1 },
1398
- });
1399
- expect(wResult).toHaveOnlyValidCharacters();
1400
- expect(wResult.cursorCol).toBe(9); // Start of third block sequence
1401
- // Test e command progression from beginning
1402
- let eResult = handleVimAction(state, {
1403
- type: 'vim_move_word_end',
1404
- payload: { count: 1 },
1405
- });
1406
- expect(eResult).toHaveOnlyValidCharacters();
1407
- expect(eResult.cursorCol).toBe(1); // End of first block sequence
1408
- eResult = handleVimAction(eResult, {
1409
- type: 'vim_move_word_end',
1410
- payload: { count: 1 },
1411
- });
1412
- expect(eResult).toHaveOnlyValidCharacters();
1413
- expect(eResult.cursorCol).toBe(7); // End of second block sequence
1414
- eResult = handleVimAction(eResult, {
1415
- type: 'vim_move_word_end',
1416
- payload: { count: 1 },
1417
- });
1418
- expect(eResult).toHaveOnlyValidCharacters();
1419
- expect(eResult.cursorCol).toBe(10); // End of third block sequence
1420
- });
1421
- it('should handle strings starting with Chinese characters', () => {
1422
- const state = createTestState(['中文test英文word'], 0, 0);
1423
- // Test 'w' command - when at start of non-Latin word, w moves to next word
1424
- let wResult = handleVimAction(state, {
1425
- type: 'vim_move_word_forward',
1426
- payload: { count: 1 },
1427
- });
1428
- expect(wResult).toHaveOnlyValidCharacters();
1429
- expect(wResult.cursorCol).toBe(2); // Start of 'test'
1430
- wResult = handleVimAction(wResult, {
1431
- type: 'vim_move_word_forward',
1432
- payload: { count: 1 },
1433
- });
1434
- expect(wResult.cursorCol).toBe(6); // Start of '英文'
1435
- // Test 'e' command
1436
- let eResult = handleVimAction(state, {
1437
- type: 'vim_move_word_end',
1438
- payload: { count: 1 },
1439
- });
1440
- expect(eResult).toHaveOnlyValidCharacters();
1441
- expect(eResult.cursorCol).toBe(1); // End of 中文
1442
- eResult = handleVimAction(eResult, {
1443
- type: 'vim_move_word_end',
1444
- payload: { count: 1 },
1445
- });
1446
- expect(eResult.cursorCol).toBe(5); // End of test
1447
- });
1448
- it('should handle strings starting with Arabic characters', () => {
1449
- const state = createTestState(['مرحباhelloسلام'], 0, 0);
1450
- // Test 'w' command - when at start of non-Latin word, w moves to next word
1451
- let wResult = handleVimAction(state, {
1452
- type: 'vim_move_word_forward',
1453
- payload: { count: 1 },
1454
- });
1455
- expect(wResult).toHaveOnlyValidCharacters();
1456
- expect(wResult.cursorCol).toBe(5); // Start of 'hello'
1457
- wResult = handleVimAction(wResult, {
1458
- type: 'vim_move_word_forward',
1459
- payload: { count: 1 },
1460
- });
1461
- expect(wResult.cursorCol).toBe(10); // Start of 'سلام'
1462
- // Test 'b' command from end
1463
- const bState = createTestState(['مرحباhelloسلام'], 0, 13);
1464
- let bResult = handleVimAction(bState, {
1465
- type: 'vim_move_word_backward',
1466
- payload: { count: 1 },
1467
- });
1468
- expect(bResult).toHaveOnlyValidCharacters();
1469
- expect(bResult.cursorCol).toBe(10); // Start of سلام
1470
- bResult = handleVimAction(bResult, {
1471
- type: 'vim_move_word_backward',
1472
- payload: { count: 1 },
1473
- });
1474
- expect(bResult.cursorCol).toBe(5); // Start of hello
1475
- });
1476
- });
1477
- });
1478
- describe('Character manipulation commands (X, ~, r, f/F/t/T)', () => {
1479
- describe('vim_delete_char_before (X)', () => {
1480
- it('should delete the character before the cursor', () => {
1481
- const state = createTestState(['hello'], 0, 3);
1482
- const result = handleVimAction(state, {
1483
- type: 'vim_delete_char_before',
1484
- payload: { count: 1 },
1485
- });
1486
- expect(result.lines[0]).toBe('helo');
1487
- expect(result.cursorCol).toBe(2);
1488
- });
1489
- it('should delete N characters before the cursor', () => {
1490
- const state = createTestState(['hello world'], 0, 5);
1491
- const result = handleVimAction(state, {
1492
- type: 'vim_delete_char_before',
1493
- payload: { count: 3 },
1494
- });
1495
- expect(result.lines[0]).toBe('he world');
1496
- expect(result.cursorCol).toBe(2);
1497
- });
1498
- it('should clamp to start of line when count exceeds position', () => {
1499
- const state = createTestState(['hello'], 0, 2);
1500
- const result = handleVimAction(state, {
1501
- type: 'vim_delete_char_before',
1502
- payload: { count: 10 },
1503
- });
1504
- expect(result.lines[0]).toBe('llo');
1505
- expect(result.cursorCol).toBe(0);
1506
- });
1507
- it('should do nothing when cursor is at column 0', () => {
1508
- const state = createTestState(['hello'], 0, 0);
1509
- const result = handleVimAction(state, {
1510
- type: 'vim_delete_char_before',
1511
- payload: { count: 1 },
1512
- });
1513
- expect(result.lines[0]).toBe('hello');
1514
- expect(result.cursorCol).toBe(0);
1515
- });
1516
- it('should push undo state', () => {
1517
- const state = createTestState(['hello'], 0, 3);
1518
- const result = handleVimAction(state, {
1519
- type: 'vim_delete_char_before',
1520
- payload: { count: 1 },
1521
- });
1522
- expect(result.undoStack.length).toBeGreaterThan(0);
1523
- });
1524
- });
1525
- describe('vim_toggle_case (~)', () => {
1526
- it('should toggle lowercase to uppercase', () => {
1527
- const state = createTestState(['hello'], 0, 0);
1528
- const result = handleVimAction(state, {
1529
- type: 'vim_toggle_case',
1530
- payload: { count: 1 },
1531
- });
1532
- expect(result.lines[0]).toBe('Hello');
1533
- expect(result.cursorCol).toBe(1);
1534
- });
1535
- it('should toggle uppercase to lowercase', () => {
1536
- const state = createTestState(['HELLO'], 0, 0);
1537
- const result = handleVimAction(state, {
1538
- type: 'vim_toggle_case',
1539
- payload: { count: 1 },
1540
- });
1541
- expect(result.lines[0]).toBe('hELLO');
1542
- expect(result.cursorCol).toBe(1);
1543
- });
1544
- it('should toggle N characters', () => {
1545
- const state = createTestState(['hello world'], 0, 0);
1546
- const result = handleVimAction(state, {
1547
- type: 'vim_toggle_case',
1548
- payload: { count: 5 },
1549
- });
1550
- expect(result.lines[0]).toBe('HELLO world');
1551
- expect(result.cursorCol).toBe(5); // cursor advances past the toggled range
1552
- });
1553
- it('should clamp count to end of line', () => {
1554
- const state = createTestState(['hi'], 0, 1);
1555
- const result = handleVimAction(state, {
1556
- type: 'vim_toggle_case',
1557
- payload: { count: 100 },
1558
- });
1559
- expect(result.lines[0]).toBe('hI');
1560
- expect(result.cursorCol).toBe(1);
1561
- });
1562
- it('should do nothing when cursor is past end of line', () => {
1563
- const state = createTestState(['hi'], 0, 5);
1564
- const result = handleVimAction(state, {
1565
- type: 'vim_toggle_case',
1566
- payload: { count: 1 },
1567
- });
1568
- expect(result.lines[0]).toBe('hi');
1569
- });
1570
- it('should push undo state', () => {
1571
- const state = createTestState(['hello'], 0, 0);
1572
- const result = handleVimAction(state, {
1573
- type: 'vim_toggle_case',
1574
- payload: { count: 1 },
1575
- });
1576
- expect(result.undoStack.length).toBeGreaterThan(0);
1577
- });
1578
- });
1579
- describe('vim_replace_char (r)', () => {
1580
- it('should replace the character under the cursor', () => {
1581
- const state = createTestState(['hello'], 0, 1);
1582
- const result = handleVimAction(state, {
1583
- type: 'vim_replace_char',
1584
- payload: { char: 'a', count: 1 },
1585
- });
1586
- expect(result.lines[0]).toBe('hallo');
1587
- expect(result.cursorCol).toBe(1);
1588
- });
1589
- it('should replace N characters with the given char', () => {
1590
- const state = createTestState(['hello'], 0, 1);
1591
- const result = handleVimAction(state, {
1592
- type: 'vim_replace_char',
1593
- payload: { char: 'x', count: 3 },
1594
- });
1595
- expect(result.lines[0]).toBe('hxxxo');
1596
- expect(result.cursorCol).toBe(3); // cursor at last replaced char
1597
- });
1598
- it('should clamp replace count to end of line', () => {
1599
- const state = createTestState(['hi'], 0, 1);
1600
- const result = handleVimAction(state, {
1601
- type: 'vim_replace_char',
1602
- payload: { char: 'z', count: 100 },
1603
- });
1604
- expect(result.lines[0]).toBe('hz');
1605
- expect(result.cursorCol).toBe(1);
1606
- });
1607
- it('should do nothing when cursor is past end of line', () => {
1608
- const state = createTestState(['hi'], 0, 5);
1609
- const result = handleVimAction(state, {
1610
- type: 'vim_replace_char',
1611
- payload: { char: 'z', count: 1 },
1612
- });
1613
- expect(result.lines[0]).toBe('hi');
1614
- });
1615
- it('should push undo state', () => {
1616
- const state = createTestState(['hello'], 0, 0);
1617
- const result = handleVimAction(state, {
1618
- type: 'vim_replace_char',
1619
- payload: { char: 'x', count: 1 },
1620
- });
1621
- expect(result.undoStack.length).toBeGreaterThan(0);
1622
- });
1623
- });
1624
- it.each([
1625
- {
1626
- label: 'f: move to char',
1627
- type: 'vim_find_char_forward',
1628
- cursorStart: 0,
1629
- char: 'o',
1630
- count: 1,
1631
- till: false,
1632
- expectedCol: 4,
1633
- },
1634
- {
1635
- label: 'f: Nth occurrence',
1636
- type: 'vim_find_char_forward',
1637
- cursorStart: 0,
1638
- char: 'o',
1639
- count: 2,
1640
- till: false,
1641
- expectedCol: 7,
1642
- },
1643
- {
1644
- label: 't: move before char',
1645
- type: 'vim_find_char_forward',
1646
- cursorStart: 0,
1647
- char: 'o',
1648
- count: 1,
1649
- till: true,
1650
- expectedCol: 3,
1651
- },
1652
- {
1653
- label: 'f: not found',
1654
- type: 'vim_find_char_forward',
1655
- cursorStart: 0,
1656
- char: 'z',
1657
- count: 1,
1658
- till: false,
1659
- expectedCol: 0,
1660
- },
1661
- {
1662
- label: 'f: skip char at cursor',
1663
- type: 'vim_find_char_forward',
1664
- cursorStart: 1,
1665
- char: 'h',
1666
- count: 1,
1667
- till: false,
1668
- expectedCol: 1,
1669
- },
1670
- {
1671
- label: 'F: move to char',
1672
- type: 'vim_find_char_backward',
1673
- cursorStart: 10,
1674
- char: 'o',
1675
- count: 1,
1676
- till: false,
1677
- expectedCol: 7,
1678
- },
1679
- {
1680
- label: 'F: Nth occurrence',
1681
- type: 'vim_find_char_backward',
1682
- cursorStart: 10,
1683
- char: 'o',
1684
- count: 2,
1685
- till: false,
1686
- expectedCol: 4,
1687
- },
1688
- {
1689
- label: 'T: move after char',
1690
- type: 'vim_find_char_backward',
1691
- cursorStart: 10,
1692
- char: 'o',
1693
- count: 1,
1694
- till: true,
1695
- expectedCol: 8,
1696
- },
1697
- {
1698
- label: 'F: not found',
1699
- type: 'vim_find_char_backward',
1700
- cursorStart: 4,
1701
- char: 'z',
1702
- count: 1,
1703
- till: false,
1704
- expectedCol: 4,
1705
- },
1706
- {
1707
- label: 'F: skip char at cursor',
1708
- type: 'vim_find_char_backward',
1709
- cursorStart: 3,
1710
- char: 'o',
1711
- count: 1,
1712
- till: false,
1713
- expectedCol: 3,
1714
- },
1715
- ])('$label', ({ type, cursorStart, char, count, till, expectedCol }) => {
1716
- const line = type === 'vim_find_char_forward' ? ['hello world'] : ['hello world'];
1717
- const state = createTestState(line, 0, cursorStart);
1718
- const result = handleVimAction(state, {
1719
- type,
1720
- payload: { char, count, till },
1721
- });
1722
- expect(result.cursorCol).toBe(expectedCol);
1723
- });
1724
- });
1725
- describe('Unicode character support in find operations', () => {
1726
- it('vim_find_char_forward: finds multi-byte char (é) correctly', () => {
1727
- const state = createTestState(['café world'], 0, 0);
1728
- const result = handleVimAction(state, {
1729
- type: 'vim_find_char_forward',
1730
- payload: { char: 'é', count: 1, till: false },
1731
- });
1732
- expect(result.cursorCol).toBe(3); // 'c','a','f','é' — é is at index 3
1733
- expect(result.lines[0]).toBe('café world');
1734
- });
1735
- it('vim_find_char_backward: finds multi-byte char (é) correctly', () => {
1736
- const state = createTestState(['café world'], 0, 9);
1737
- const result = handleVimAction(state, {
1738
- type: 'vim_find_char_backward',
1739
- payload: { char: 'é', count: 1, till: false },
1740
- });
1741
- expect(result.cursorCol).toBe(3);
1742
- });
1743
- it('vim_delete_to_char_forward: handles multi-byte target char', () => {
1744
- const state = createTestState(['café world'], 0, 0);
1745
- const result = handleVimAction(state, {
1746
- type: 'vim_delete_to_char_forward',
1747
- payload: { char: 'é', count: 1, till: false },
1748
- });
1749
- // Deletes 'caf' + 'é' → ' world' remains
1750
- expect(result.lines[0]).toBe(' world');
1751
- expect(result.cursorCol).toBe(0);
1752
- });
1753
- it('vim_delete_to_char_forward (till): stops before multi-byte char', () => {
1754
- const state = createTestState(['café world'], 0, 0);
1755
- const result = handleVimAction(state, {
1756
- type: 'vim_delete_to_char_forward',
1757
- payload: { char: 'é', count: 1, till: true },
1758
- });
1759
- // Deletes 'caf', keeps 'é world'
1760
- expect(result.lines[0]).toBe('é world');
1761
- expect(result.cursorCol).toBe(0);
1762
- });
1763
- });
1764
- describe('vim_delete_to_char_forward (df/dt)', () => {
1765
- it('df: deletes from cursor through found char (inclusive)', () => {
1766
- const state = createTestState(['hello world'], 0, 0);
1767
- const result = handleVimAction(state, {
1768
- type: 'vim_delete_to_char_forward',
1769
- payload: { char: 'o', count: 1, till: false },
1770
- });
1771
- expect(result.lines[0]).toBe(' world');
1772
- expect(result.cursorCol).toBe(0);
1773
- });
1774
- it('dt: deletes from cursor up to (not including) found char', () => {
1775
- const state = createTestState(['hello world'], 0, 0);
1776
- const result = handleVimAction(state, {
1777
- type: 'vim_delete_to_char_forward',
1778
- payload: { char: 'o', count: 1, till: true },
1779
- });
1780
- expect(result.lines[0]).toBe('o world');
1781
- expect(result.cursorCol).toBe(0);
1782
- });
1783
- it('df with count: deletes to Nth occurrence', () => {
1784
- const state = createTestState(['hello world'], 0, 0);
1785
- const result = handleVimAction(state, {
1786
- type: 'vim_delete_to_char_forward',
1787
- payload: { char: 'o', count: 2, till: false },
1788
- });
1789
- expect(result.lines[0]).toBe('rld');
1790
- expect(result.cursorCol).toBe(0);
1791
- });
1792
- it('does nothing if char not found', () => {
1793
- const state = createTestState(['hello'], 0, 0);
1794
- const result = handleVimAction(state, {
1795
- type: 'vim_delete_to_char_forward',
1796
- payload: { char: 'z', count: 1, till: false },
1797
- });
1798
- expect(result.lines[0]).toBe('hello');
1799
- expect(result.cursorCol).toBe(0);
1800
- });
1801
- it('pushes undo state', () => {
1802
- const state = createTestState(['hello world'], 0, 0);
1803
- const result = handleVimAction(state, {
1804
- type: 'vim_delete_to_char_forward',
1805
- payload: { char: 'o', count: 1, till: false },
1806
- });
1807
- expect(result.undoStack.length).toBeGreaterThan(0);
1808
- });
1809
- it('df: clamps cursor when deleting through the last char on the line', () => {
1810
- // cursor at 1 in 'hello'; dfo finds 'o' at col 4 and deletes [1,4] → 'h'
1811
- const state = createTestState(['hello'], 0, 1);
1812
- const result = handleVimAction(state, {
1813
- type: 'vim_delete_to_char_forward',
1814
- payload: { char: 'o', count: 1, till: false },
1815
- });
1816
- expect(result.lines[0]).toBe('h');
1817
- // cursor was at col 1, new line has only col 0 valid
1818
- expect(result.cursorCol).toBe(0);
1819
- });
1820
- });
1821
- describe('vim_delete_to_char_backward (dF/dT)', () => {
1822
- it('dF: deletes from found char through cursor (inclusive)', () => {
1823
- const state = createTestState(['hello world'], 0, 7);
1824
- const result = handleVimAction(state, {
1825
- type: 'vim_delete_to_char_backward',
1826
- payload: { char: 'o', count: 1, till: false },
1827
- });
1828
- // cursor at 7 ('o' in world), dFo finds 'o' at col 4
1829
- // delete [4, 8) — both ends inclusive → 'hell' + 'rld'
1830
- expect(result.lines[0]).toBe('hellrld');
1831
- expect(result.cursorCol).toBe(4);
1832
- });
1833
- it('dT: deletes from found+1 through cursor (inclusive)', () => {
1834
- const state = createTestState(['hello world'], 0, 7);
1835
- const result = handleVimAction(state, {
1836
- type: 'vim_delete_to_char_backward',
1837
- payload: { char: 'o', count: 1, till: true },
1838
- });
1839
- // dTo finds 'o' at col 4, deletes [5, 8) → 'hello' + 'rld'
1840
- expect(result.lines[0]).toBe('hellorld');
1841
- expect(result.cursorCol).toBe(5);
1842
- });
1843
- it('does nothing if char not found', () => {
1844
- const state = createTestState(['hello'], 0, 4);
1845
- const result = handleVimAction(state, {
1846
- type: 'vim_delete_to_char_backward',
1847
- payload: { char: 'z', count: 1, till: false },
1848
- });
1849
- expect(result.lines[0]).toBe('hello');
1850
- expect(result.cursorCol).toBe(4);
1851
- });
1852
- it('pushes undo state', () => {
1853
- const state = createTestState(['hello world'], 0, 7);
1854
- const result = handleVimAction(state, {
1855
- type: 'vim_delete_to_char_backward',
1856
- payload: { char: 'o', count: 1, till: false },
1857
- });
1858
- expect(result.undoStack.length).toBeGreaterThan(0);
1859
- });
1860
- it('dF: clamps cursor when deletion removes chars up to end of line', () => {
1861
- // 'hello', cursor on last char 'o' (col 4), dFe finds 'e' at col 1
1862
- // deletes [1, 5) → 'h'; without clamp cursor would be at col 1 (past end)
1863
- const state = createTestState(['hello'], 0, 4);
1864
- const result = handleVimAction(state, {
1865
- type: 'vim_delete_to_char_backward',
1866
- payload: { char: 'e', count: 1, till: false },
1867
- });
1868
- expect(result.lines[0]).toBe('h');
1869
- expect(result.cursorCol).toBe(0);
1870
- });
1871
- });
1872
- describe('vim yank and paste', () => {
1873
- describe('vim_yank_line (yy)', () => {
1874
- it('should yank current line into register as linewise', () => {
1875
- const state = createTestState(['hello world'], 0, 0);
1876
- const result = handleVimAction(state, {
1877
- type: 'vim_yank_line',
1878
- payload: { count: 1 },
1879
- });
1880
- expect(result.yankRegister).toEqual({
1881
- text: 'hello world',
1882
- linewise: true,
1883
- });
1884
- });
1885
- it('should not modify the buffer or cursor position', () => {
1886
- const state = createTestState(['hello world'], 0, 3);
1887
- const result = handleVimAction(state, {
1888
- type: 'vim_yank_line',
1889
- payload: { count: 1 },
1890
- });
1891
- expect(result.lines).toEqual(['hello world']);
1892
- expect(result.cursorRow).toBe(0);
1893
- expect(result.cursorCol).toBe(3);
1894
- });
1895
- it('should yank multiple lines with count', () => {
1896
- const state = createTestState(['line1', 'line2', 'line3'], 0, 0);
1897
- const result = handleVimAction(state, {
1898
- type: 'vim_yank_line',
1899
- payload: { count: 2 },
1900
- });
1901
- expect(result.yankRegister).toEqual({
1902
- text: 'line1\nline2',
1903
- linewise: true,
1904
- });
1905
- expect(result.lines).toEqual(['line1', 'line2', 'line3']);
1906
- });
1907
- it('should clamp count to available lines', () => {
1908
- const state = createTestState(['only'], 0, 0);
1909
- const result = handleVimAction(state, {
1910
- type: 'vim_yank_line',
1911
- payload: { count: 99 },
1912
- });
1913
- expect(result.yankRegister).toEqual({ text: 'only', linewise: true });
1914
- });
1915
- });
1916
- describe('vim_yank_word_forward (yw)', () => {
1917
- it('should yank from cursor to start of next word', () => {
1918
- const state = createTestState(['hello world'], 0, 0);
1919
- const result = handleVimAction(state, {
1920
- type: 'vim_yank_word_forward',
1921
- payload: { count: 1 },
1922
- });
1923
- expect(result.yankRegister).toEqual({
1924
- text: 'hello ',
1925
- linewise: false,
1926
- });
1927
- expect(result.lines).toEqual(['hello world']);
1928
- });
1929
- });
1930
- describe('vim_yank_big_word_forward (yW)', () => {
1931
- it('should yank from cursor to start of next big word', () => {
1932
- const state = createTestState(['hello world'], 0, 0);
1933
- const result = handleVimAction(state, {
1934
- type: 'vim_yank_big_word_forward',
1935
- payload: { count: 1 },
1936
- });
1937
- expect(result.yankRegister).toEqual({
1938
- text: 'hello ',
1939
- linewise: false,
1940
- });
1941
- expect(result.lines).toEqual(['hello world']);
1942
- });
1943
- });
1944
- describe('vim_yank_word_end (ye)', () => {
1945
- it('should yank from cursor to end of current word', () => {
1946
- const state = createTestState(['hello world'], 0, 0);
1947
- const result = handleVimAction(state, {
1948
- type: 'vim_yank_word_end',
1949
- payload: { count: 1 },
1950
- });
1951
- expect(result.yankRegister).toEqual({ text: 'hello', linewise: false });
1952
- expect(result.lines).toEqual(['hello world']);
1953
- });
1954
- });
1955
- describe('vim_yank_big_word_end (yE)', () => {
1956
- it('should yank from cursor to end of current big word', () => {
1957
- const state = createTestState(['hello world'], 0, 0);
1958
- const result = handleVimAction(state, {
1959
- type: 'vim_yank_big_word_end',
1960
- payload: { count: 1 },
1961
- });
1962
- expect(result.yankRegister).toEqual({ text: 'hello', linewise: false });
1963
- expect(result.lines).toEqual(['hello world']);
1964
- });
1965
- });
1966
- describe('vim_yank_to_end_of_line (y$)', () => {
1967
- it('should yank from cursor to end of line', () => {
1968
- const state = createTestState(['hello world'], 0, 6);
1969
- const result = handleVimAction(state, {
1970
- type: 'vim_yank_to_end_of_line',
1971
- payload: { count: 1 },
1972
- });
1973
- expect(result.yankRegister).toEqual({ text: 'world', linewise: false });
1974
- expect(result.lines).toEqual(['hello world']);
1975
- });
1976
- it('should do nothing when cursor is at end of line', () => {
1977
- const state = createTestState(['hello'], 0, 5);
1978
- const result = handleVimAction(state, {
1979
- type: 'vim_yank_to_end_of_line',
1980
- payload: { count: 1 },
1981
- });
1982
- expect(result.yankRegister).toBeNull();
1983
- });
1984
- });
1985
- describe('delete operations populate yankRegister', () => {
1986
- it('should populate register on x (vim_delete_char)', () => {
1987
- const state = createTestState(['hello'], 0, 1);
1988
- const result = handleVimAction(state, {
1989
- type: 'vim_delete_char',
1990
- payload: { count: 1 },
1991
- });
1992
- expect(result.yankRegister).toEqual({ text: 'e', linewise: false });
1993
- expect(result.lines[0]).toBe('hllo');
1994
- });
1995
- it('should populate register on X (vim_delete_char_before)', () => {
1996
- // cursor at col 2 ('l'); X deletes the char before = col 1 ('e')
1997
- const state = createTestState(['hello'], 0, 2);
1998
- const result = handleVimAction(state, {
1999
- type: 'vim_delete_char_before',
2000
- payload: { count: 1 },
2001
- });
2002
- expect(result.yankRegister).toEqual({ text: 'e', linewise: false });
2003
- expect(result.lines[0]).toBe('hllo');
2004
- });
2005
- it('should populate register on dd (vim_delete_line) as linewise', () => {
2006
- const state = createTestState(['hello', 'world'], 0, 0);
2007
- const result = handleVimAction(state, {
2008
- type: 'vim_delete_line',
2009
- payload: { count: 1 },
2010
- });
2011
- expect(result.yankRegister).toEqual({ text: 'hello', linewise: true });
2012
- expect(result.lines).toEqual(['world']);
2013
- });
2014
- it('should populate register on 2dd with multiple lines', () => {
2015
- const state = createTestState(['one', 'two', 'three'], 0, 0);
2016
- const result = handleVimAction(state, {
2017
- type: 'vim_delete_line',
2018
- payload: { count: 2 },
2019
- });
2020
- expect(result.yankRegister).toEqual({
2021
- text: 'one\ntwo',
2022
- linewise: true,
2023
- });
2024
- expect(result.lines).toEqual(['three']);
2025
- });
2026
- it('should populate register on dw (vim_delete_word_forward)', () => {
2027
- const state = createTestState(['hello world'], 0, 0);
2028
- const result = handleVimAction(state, {
2029
- type: 'vim_delete_word_forward',
2030
- payload: { count: 1 },
2031
- });
2032
- expect(result.yankRegister).toEqual({
2033
- text: 'hello ',
2034
- linewise: false,
2035
- });
2036
- expect(result.lines[0]).toBe('world');
2037
- });
2038
- it('should populate register on dW (vim_delete_big_word_forward)', () => {
2039
- const state = createTestState(['hello world'], 0, 0);
2040
- const result = handleVimAction(state, {
2041
- type: 'vim_delete_big_word_forward',
2042
- payload: { count: 1 },
2043
- });
2044
- expect(result.yankRegister).toEqual({
2045
- text: 'hello ',
2046
- linewise: false,
2047
- });
2048
- });
2049
- it('should populate register on de (vim_delete_word_end)', () => {
2050
- const state = createTestState(['hello world'], 0, 0);
2051
- const result = handleVimAction(state, {
2052
- type: 'vim_delete_word_end',
2053
- payload: { count: 1 },
2054
- });
2055
- expect(result.yankRegister).toEqual({ text: 'hello', linewise: false });
2056
- });
2057
- it('should populate register on dE (vim_delete_big_word_end)', () => {
2058
- const state = createTestState(['hello world'], 0, 0);
2059
- const result = handleVimAction(state, {
2060
- type: 'vim_delete_big_word_end',
2061
- payload: { count: 1 },
2062
- });
2063
- expect(result.yankRegister).toEqual({ text: 'hello', linewise: false });
2064
- });
2065
- it('should populate register on D (vim_delete_to_end_of_line)', () => {
2066
- const state = createTestState(['hello world'], 0, 6);
2067
- const result = handleVimAction(state, {
2068
- type: 'vim_delete_to_end_of_line',
2069
- payload: { count: 1 },
2070
- });
2071
- expect(result.yankRegister).toEqual({ text: 'world', linewise: false });
2072
- expect(result.lines[0]).toBe('hello ');
2073
- });
2074
- it('should populate register on df (vim_delete_to_char_forward, inclusive)', () => {
2075
- const state = createTestState(['hello world'], 0, 0);
2076
- const result = handleVimAction(state, {
2077
- type: 'vim_delete_to_char_forward',
2078
- payload: { char: 'o', count: 1, till: false },
2079
- });
2080
- expect(result.yankRegister).toEqual({ text: 'hello', linewise: false });
2081
- });
2082
- it('should populate register on dt (vim_delete_to_char_forward, till)', () => {
2083
- const state = createTestState(['hello world'], 0, 0);
2084
- const result = handleVimAction(state, {
2085
- type: 'vim_delete_to_char_forward',
2086
- payload: { char: 'o', count: 1, till: true },
2087
- });
2088
- // dt stops before 'o', so deletes 'hell'
2089
- expect(result.yankRegister).toEqual({ text: 'hell', linewise: false });
2090
- });
2091
- it('should populate register on dF (vim_delete_to_char_backward, inclusive)', () => {
2092
- // cursor at 7 ('o' in world), dFo finds 'o' at col 4, deletes [4, 8)
2093
- const state = createTestState(['hello world'], 0, 7);
2094
- const result = handleVimAction(state, {
2095
- type: 'vim_delete_to_char_backward',
2096
- payload: { char: 'o', count: 1, till: false },
2097
- });
2098
- expect(result.yankRegister).toEqual({ text: 'o wo', linewise: false });
2099
- });
2100
- it('should populate register on dT (vim_delete_to_char_backward, till)', () => {
2101
- // cursor at 7 ('o' in world), dTo finds 'o' at col 4, deletes [5, 8) = ' wo'
2102
- const state = createTestState(['hello world'], 0, 7);
2103
- const result = handleVimAction(state, {
2104
- type: 'vim_delete_to_char_backward',
2105
- payload: { char: 'o', count: 1, till: true },
2106
- });
2107
- expect(result.yankRegister).toEqual({ text: ' wo', linewise: false });
2108
- });
2109
- it('should preserve existing register when delete finds nothing to delete', () => {
2110
- const state = {
2111
- ...createTestState(['hello'], 0, 5),
2112
- yankRegister: { text: 'preserved', linewise: false },
2113
- };
2114
- // x at end-of-line does nothing
2115
- const result = handleVimAction(state, {
2116
- type: 'vim_delete_char',
2117
- payload: { count: 1 },
2118
- });
2119
- expect(result.yankRegister).toEqual({
2120
- text: 'preserved',
2121
- linewise: false,
2122
- });
2123
- });
2124
- });
2125
- describe('vim_paste_after (p)', () => {
2126
- it('should paste charwise text after cursor and land on last pasted char', () => {
2127
- const state = {
2128
- ...createTestState(['abc'], 0, 1),
2129
- yankRegister: { text: 'XY', linewise: false },
2130
- };
2131
- const result = handleVimAction(state, {
2132
- type: 'vim_paste_after',
2133
- payload: { count: 1 },
2134
- });
2135
- expect(result).toHaveOnlyValidCharacters();
2136
- expect(result.lines[0]).toBe('abXYc');
2137
- expect(result.cursorCol).toBe(3);
2138
- });
2139
- it('should paste charwise at end of line when cursor is on last char', () => {
2140
- const state = {
2141
- ...createTestState(['ab'], 0, 1),
2142
- yankRegister: { text: 'Z', linewise: false },
2143
- };
2144
- const result = handleVimAction(state, {
2145
- type: 'vim_paste_after',
2146
- payload: { count: 1 },
2147
- });
2148
- expect(result).toHaveOnlyValidCharacters();
2149
- expect(result.lines[0]).toBe('abZ');
2150
- expect(result.cursorCol).toBe(2);
2151
- });
2152
- it('should paste linewise below current row', () => {
2153
- const state = {
2154
- ...createTestState(['hello', 'world'], 0, 0),
2155
- yankRegister: { text: 'inserted', linewise: true },
2156
- };
2157
- const result = handleVimAction(state, {
2158
- type: 'vim_paste_after',
2159
- payload: { count: 1 },
2160
- });
2161
- expect(result).toHaveOnlyValidCharacters();
2162
- expect(result.lines).toEqual(['hello', 'inserted', 'world']);
2163
- expect(result.cursorRow).toBe(1);
2164
- expect(result.cursorCol).toBe(0);
2165
- });
2166
- it('should do nothing when register is empty', () => {
2167
- const state = createTestState(['hello'], 0, 0);
2168
- const result = handleVimAction(state, {
2169
- type: 'vim_paste_after',
2170
- payload: { count: 1 },
2171
- });
2172
- expect(result.lines).toEqual(['hello']);
2173
- expect(result.cursorCol).toBe(0);
2174
- });
2175
- it('should paste charwise text count times', () => {
2176
- const state = {
2177
- ...createTestState(['abc'], 0, 1),
2178
- yankRegister: { text: 'X', linewise: false },
2179
- };
2180
- const result = handleVimAction(state, {
2181
- type: 'vim_paste_after',
2182
- payload: { count: 2 },
2183
- });
2184
- expect(result).toHaveOnlyValidCharacters();
2185
- expect(result.lines[0]).toBe('abXXc');
2186
- });
2187
- it('should paste linewise count times', () => {
2188
- const state = {
2189
- ...createTestState(['hello', 'world'], 0, 0),
2190
- yankRegister: { text: 'foo', linewise: true },
2191
- };
2192
- const result = handleVimAction(state, {
2193
- type: 'vim_paste_after',
2194
- payload: { count: 2 },
2195
- });
2196
- expect(result).toHaveOnlyValidCharacters();
2197
- expect(result.lines).toEqual(['hello', 'foo', 'foo', 'world']);
2198
- expect(result.cursorRow).toBe(1);
2199
- });
2200
- it('should land cursor on last char when pasting multiline charwise text', () => {
2201
- // Simulates yanking across a line boundary and pasting charwise.
2202
- // Cursor must land on the last pasted char, not a large out-of-bounds column.
2203
- const state = {
2204
- ...createTestState(['ab', 'cd'], 0, 1),
2205
- yankRegister: { text: 'b\nc', linewise: false },
2206
- };
2207
- const result = handleVimAction(state, {
2208
- type: 'vim_paste_after',
2209
- payload: { count: 1 },
2210
- });
2211
- expect(result).toHaveOnlyValidCharacters();
2212
- expect(result.cursorRow).toBe(1);
2213
- expect(result.cursorCol).toBe(0);
2214
- });
2215
- it('should land cursor correctly for count > 1 multiline charwise paste', () => {
2216
- const state = {
2217
- ...createTestState(['ab', 'cd'], 0, 0),
2218
- yankRegister: { text: 'x\ny', linewise: false },
2219
- };
2220
- const result = handleVimAction(state, {
2221
- type: 'vim_paste_after',
2222
- payload: { count: 2 },
2223
- });
2224
- expect(result).toHaveOnlyValidCharacters();
2225
- // cursor should be on the last char of the last pasted copy, not off-screen
2226
- expect(result.cursorCol).toBeLessThanOrEqual(result.lines[result.cursorRow].length - 1);
2227
- });
2228
- });
2229
- describe('vim_paste_before (P)', () => {
2230
- it('should paste charwise text before cursor and land on last pasted char', () => {
2231
- const state = {
2232
- ...createTestState(['abc'], 0, 2),
2233
- yankRegister: { text: 'XY', linewise: false },
2234
- };
2235
- const result = handleVimAction(state, {
2236
- type: 'vim_paste_before',
2237
- payload: { count: 1 },
2238
- });
2239
- expect(result).toHaveOnlyValidCharacters();
2240
- expect(result.lines[0]).toBe('abXYc');
2241
- expect(result.cursorCol).toBe(3);
2242
- });
2243
- it('should land cursor on last char when pasting multiline charwise text', () => {
2244
- const state = {
2245
- ...createTestState(['ab', 'cd'], 0, 1),
2246
- yankRegister: { text: 'b\nc', linewise: false },
2247
- };
2248
- const result = handleVimAction(state, {
2249
- type: 'vim_paste_before',
2250
- payload: { count: 1 },
2251
- });
2252
- expect(result).toHaveOnlyValidCharacters();
2253
- expect(result.cursorCol).toBeLessThanOrEqual(result.lines[result.cursorRow].length - 1);
2254
- });
2255
- it('should paste linewise above current row', () => {
2256
- const state = {
2257
- ...createTestState(['hello', 'world'], 1, 0),
2258
- yankRegister: { text: 'inserted', linewise: true },
2259
- };
2260
- const result = handleVimAction(state, {
2261
- type: 'vim_paste_before',
2262
- payload: { count: 1 },
2263
- });
2264
- expect(result).toHaveOnlyValidCharacters();
2265
- expect(result.lines).toEqual(['hello', 'inserted', 'world']);
2266
- expect(result.cursorRow).toBe(1);
2267
- expect(result.cursorCol).toBe(0);
2268
- });
2269
- });
2270
- });
2271
- });
2272
- //# sourceMappingURL=vim-buffer-actions.test.js.map