@umsai/ums-code 0.0.11-post6 → 0.0.14-v1

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 (632) hide show
  1. package/dist/package.json +5 -5
  2. package/dist/src/acp/acp.d.ts +208 -0
  3. package/dist/src/{zed-integration → acp}/acp.js +44 -76
  4. package/dist/src/acp/acp.js.map +1 -0
  5. package/dist/src/acp/acpPeer.d.ts +8 -0
  6. package/dist/src/acp/acpPeer.js +537 -0
  7. package/dist/src/acp/acpPeer.js.map +1 -0
  8. package/dist/src/config/auth.js +11 -12
  9. package/dist/src/config/auth.js.map +1 -1
  10. package/dist/src/config/config.d.ts +3 -3
  11. package/dist/src/config/config.js +86 -164
  12. package/dist/src/config/config.js.map +1 -1
  13. package/dist/src/config/extension.d.ts +1 -2
  14. package/dist/src/config/extension.js +4 -9
  15. package/dist/src/config/extension.js.map +1 -1
  16. package/dist/src/config/sandboxConfig.js +3 -3
  17. package/dist/src/config/sandboxConfig.js.map +1 -1
  18. package/dist/src/config/settings.d.ts +64 -3
  19. package/dist/src/config/settings.js +38 -58
  20. package/dist/src/config/settings.js.map +1 -1
  21. package/dist/src/gemini.js +41 -37
  22. package/dist/src/gemini.js.map +1 -1
  23. package/dist/src/generated/git-commit.d.ts +1 -2
  24. package/dist/src/generated/git-commit.js +1 -2
  25. package/dist/src/generated/git-commit.js.map +1 -1
  26. package/dist/src/nonInteractiveCli.js +8 -3
  27. package/dist/src/nonInteractiveCli.js.map +1 -1
  28. package/dist/src/services/BuiltinCommandLoader.d.ts +1 -0
  29. package/dist/src/services/BuiltinCommandLoader.js +4 -11
  30. package/dist/src/services/BuiltinCommandLoader.js.map +1 -1
  31. package/dist/src/services/FileCommandLoader.js +8 -10
  32. package/dist/src/services/FileCommandLoader.js.map +1 -1
  33. package/dist/src/services/McpPromptLoader.js +3 -3
  34. package/dist/src/services/McpPromptLoader.js.map +1 -1
  35. package/dist/src/services/prompt-processors/argumentProcessor.d.ts +7 -2
  36. package/dist/src/services/prompt-processors/argumentProcessor.js +10 -2
  37. package/dist/src/services/prompt-processors/argumentProcessor.js.map +1 -1
  38. package/dist/src/services/prompt-processors/shellProcessor.d.ts +13 -16
  39. package/dist/src/services/prompt-processors/shellProcessor.js +40 -125
  40. package/dist/src/services/prompt-processors/shellProcessor.js.map +1 -1
  41. package/dist/src/services/prompt-processors/types.d.ts +0 -2
  42. package/dist/src/services/prompt-processors/types.js +0 -2
  43. package/dist/src/services/prompt-processors/types.js.map +1 -1
  44. package/dist/src/ui/App.js +46 -224
  45. package/dist/src/ui/App.js.map +1 -1
  46. package/dist/src/ui/commands/aboutCommand.js +5 -9
  47. package/dist/src/ui/commands/aboutCommand.js.map +1 -1
  48. package/dist/src/ui/commands/bugCommand.js +5 -13
  49. package/dist/src/ui/commands/bugCommand.js.map +1 -1
  50. package/dist/src/ui/commands/chatCommand.js +6 -23
  51. package/dist/src/ui/commands/chatCommand.js.map +1 -1
  52. package/dist/src/ui/commands/clearCommand.js +1 -0
  53. package/dist/src/ui/commands/clearCommand.js.map +1 -1
  54. package/dist/src/ui/commands/directoryCommand.js +21 -18
  55. package/dist/src/ui/commands/directoryCommand.js.map +1 -1
  56. package/dist/src/ui/commands/docsCommand.js +1 -1
  57. package/dist/src/ui/commands/docsCommand.js.map +1 -1
  58. package/dist/src/ui/commands/ideCommand.js +18 -90
  59. package/dist/src/ui/commands/ideCommand.js.map +1 -1
  60. package/dist/src/ui/commands/initCommand.d.ts +1 -1
  61. package/dist/src/ui/commands/initCommand.js +7 -17
  62. package/dist/src/ui/commands/initCommand.js.map +1 -1
  63. package/dist/src/ui/commands/mcpCommand.js +7 -11
  64. package/dist/src/ui/commands/mcpCommand.js.map +1 -1
  65. package/dist/src/ui/commands/memoryCommand.js +6 -139
  66. package/dist/src/ui/commands/memoryCommand.js.map +1 -1
  67. package/dist/src/ui/commands/quitCommand.d.ts +0 -1
  68. package/dist/src/ui/commands/quitCommand.js +0 -25
  69. package/dist/src/ui/commands/quitCommand.js.map +1 -1
  70. package/dist/src/ui/commands/setupGithubCommand.d.ts +0 -2
  71. package/dist/src/ui/commands/setupGithubCommand.js +26 -132
  72. package/dist/src/ui/commands/setupGithubCommand.js.map +1 -1
  73. package/dist/src/ui/commands/toolsCommand.js +2 -2
  74. package/dist/src/ui/commands/toolsCommand.js.map +1 -1
  75. package/dist/src/ui/commands/types.d.ts +3 -19
  76. package/dist/src/ui/commands/types.js.map +1 -1
  77. package/dist/src/ui/commands/ums/umsInitCommand.js +21 -55
  78. package/dist/src/ui/commands/ums/umsInitCommand.js.map +1 -1
  79. package/dist/src/ui/components/AboutBox.d.ts +0 -1
  80. package/dist/src/ui/components/AboutBox.js +1 -1
  81. package/dist/src/ui/components/AboutBox.js.map +1 -1
  82. package/dist/src/ui/components/AsciiArt.d.ts +0 -1
  83. package/dist/src/ui/components/AsciiArt.js +0 -8
  84. package/dist/src/ui/components/AsciiArt.js.map +1 -1
  85. package/dist/src/ui/components/AuthDialog.d.ts +1 -1
  86. package/dist/src/ui/components/AuthDialog.js +15 -17
  87. package/dist/src/ui/components/AuthDialog.js.map +1 -1
  88. package/dist/src/ui/components/AuthInProgress.js +5 -6
  89. package/dist/src/ui/components/AuthInProgress.js.map +1 -1
  90. package/dist/src/ui/components/ContextSummaryDisplay.js +25 -22
  91. package/dist/src/ui/components/ContextSummaryDisplay.js.map +1 -1
  92. package/dist/src/ui/components/DebugProfiler.js +4 -5
  93. package/dist/src/ui/components/DebugProfiler.js.map +1 -1
  94. package/dist/src/ui/components/EditorSettingsDialog.js +5 -6
  95. package/dist/src/ui/components/EditorSettingsDialog.js.map +1 -1
  96. package/dist/src/ui/components/Footer.d.ts +0 -1
  97. package/dist/src/ui/components/Footer.js +6 -16
  98. package/dist/src/ui/components/Footer.js.map +1 -1
  99. package/dist/src/ui/components/Header.d.ts +1 -0
  100. package/dist/src/ui/components/Header.js +5 -13
  101. package/dist/src/ui/components/Header.js.map +1 -1
  102. package/dist/src/ui/components/Help.js +1 -1
  103. package/dist/src/ui/components/Help.js.map +1 -1
  104. package/dist/src/ui/components/HistoryItemDisplay.js +1 -2
  105. package/dist/src/ui/components/HistoryItemDisplay.js.map +1 -1
  106. package/dist/src/ui/components/IDEContextDetailDisplay.d.ts +12 -0
  107. package/dist/src/ui/components/IDEContextDetailDisplay.js +12 -0
  108. package/dist/src/ui/components/IDEContextDetailDisplay.js.map +1 -0
  109. package/dist/src/ui/components/InputPrompt.d.ts +0 -1
  110. package/dist/src/ui/components/InputPrompt.js +35 -98
  111. package/dist/src/ui/components/InputPrompt.js.map +1 -1
  112. package/dist/src/ui/components/LoadingIndicator.js +5 -10
  113. package/dist/src/ui/components/LoadingIndicator.js.map +1 -1
  114. package/dist/src/ui/components/ShellConfirmationDialog.js +5 -7
  115. package/dist/src/ui/components/ShellConfirmationDialog.js.map +1 -1
  116. package/dist/src/ui/components/StatsDisplay.js +7 -8
  117. package/dist/src/ui/components/StatsDisplay.js.map +1 -1
  118. package/dist/src/ui/components/SuggestionsDisplay.js +1 -1
  119. package/dist/src/ui/components/SuggestionsDisplay.js.map +1 -1
  120. package/dist/src/ui/components/ThemeDialog.js +20 -10
  121. package/dist/src/ui/components/ThemeDialog.js.map +1 -1
  122. package/dist/src/ui/components/messages/DiffRenderer.js +1 -10
  123. package/dist/src/ui/components/messages/DiffRenderer.js.map +1 -1
  124. package/dist/src/ui/components/messages/InfoMessage.js +1 -6
  125. package/dist/src/ui/components/messages/InfoMessage.js.map +1 -1
  126. package/dist/src/ui/components/messages/ToolConfirmationMessage.js +14 -36
  127. package/dist/src/ui/components/messages/ToolConfirmationMessage.js.map +1 -1
  128. package/dist/src/ui/components/messages/ToolGroupMessage.js +1 -1
  129. package/dist/src/ui/components/messages/ToolGroupMessage.js.map +1 -1
  130. package/dist/src/ui/components/messages/ToolMessage.js +10 -75
  131. package/dist/src/ui/components/messages/ToolMessage.js.map +1 -1
  132. package/dist/src/ui/components/shared/MaxSizedBox.js +1 -1
  133. package/dist/src/ui/components/shared/MaxSizedBox.js.map +1 -1
  134. package/dist/src/ui/components/shared/RadioButtonSelect.js +9 -11
  135. package/dist/src/ui/components/shared/RadioButtonSelect.js.map +1 -1
  136. package/dist/src/ui/components/shared/text-buffer.d.ts +4 -17
  137. package/dist/src/ui/components/shared/text-buffer.js +80 -262
  138. package/dist/src/ui/components/shared/text-buffer.js.map +1 -1
  139. package/dist/src/ui/components/shared/vim-buffer-actions.js +152 -139
  140. package/dist/src/ui/components/shared/vim-buffer-actions.js.map +1 -1
  141. package/dist/src/ui/components/ums/UMSKeyPrompt.js +3 -3
  142. package/dist/src/ui/components/ums/UMSKeyPrompt.js.map +1 -1
  143. package/dist/src/ui/contexts/SessionContext.d.ts +1 -3
  144. package/dist/src/ui/contexts/SessionContext.js +11 -3
  145. package/dist/src/ui/contexts/SessionContext.js.map +1 -1
  146. package/dist/src/ui/hooks/atCommandProcessor.js +16 -17
  147. package/dist/src/ui/hooks/atCommandProcessor.js.map +1 -1
  148. package/dist/src/ui/hooks/shellCommandProcessor.js +13 -8
  149. package/dist/src/ui/hooks/shellCommandProcessor.js.map +1 -1
  150. package/dist/src/ui/hooks/slashCommandProcessor.d.ts +2 -9
  151. package/dist/src/ui/hooks/slashCommandProcessor.js +62 -234
  152. package/dist/src/ui/hooks/slashCommandProcessor.js.map +1 -1
  153. package/dist/src/ui/hooks/useAtCompletion.js +3 -4
  154. package/dist/src/ui/hooks/useAtCompletion.js.map +1 -1
  155. package/dist/src/ui/hooks/useAuthCommand.js +1 -1
  156. package/dist/src/ui/hooks/useAutoAcceptIndicator.js +6 -6
  157. package/dist/src/ui/hooks/useAutoAcceptIndicator.js.map +1 -1
  158. package/dist/src/ui/hooks/useFocus.d.ts +0 -4
  159. package/dist/src/ui/hooks/useFocus.js +4 -4
  160. package/dist/src/ui/hooks/useFocus.js.map +1 -1
  161. package/dist/src/ui/hooks/useGeminiStream.d.ts +3 -4
  162. package/dist/src/ui/hooks/useGeminiStream.js +33 -50
  163. package/dist/src/ui/hooks/useGeminiStream.js.map +1 -1
  164. package/dist/src/ui/hooks/useKeypress.d.ts +16 -4
  165. package/dist/src/ui/hooks/useKeypress.js +140 -8
  166. package/dist/src/ui/hooks/useKeypress.js.map +1 -1
  167. package/dist/src/ui/hooks/usePhraseCycler.js +2 -2
  168. package/dist/src/ui/hooks/usePhraseCycler.js.map +1 -1
  169. package/dist/src/ui/hooks/usePrivacySettings.js +2 -6
  170. package/dist/src/ui/hooks/usePrivacySettings.js.map +1 -1
  171. package/dist/src/ui/hooks/useReactToolScheduler.d.ts +1 -1
  172. package/dist/src/ui/hooks/useReactToolScheduler.js +15 -15
  173. package/dist/src/ui/hooks/useReactToolScheduler.js.map +1 -1
  174. package/dist/src/ui/hooks/useThemeCommand.js +1 -1
  175. package/dist/src/ui/hooks/useThemeCommand.js.map +1 -1
  176. package/dist/src/ui/privacy/CloudFreePrivacyNotice.js +4 -5
  177. package/dist/src/ui/privacy/CloudFreePrivacyNotice.js.map +1 -1
  178. package/dist/src/ui/privacy/CloudPaidPrivacyNotice.js +4 -5
  179. package/dist/src/ui/privacy/CloudPaidPrivacyNotice.js.map +1 -1
  180. package/dist/src/ui/privacy/GeminiPrivacyNotice.js +4 -5
  181. package/dist/src/ui/privacy/GeminiPrivacyNotice.js.map +1 -1
  182. package/dist/src/ui/themes/ansi-light.js +1 -2
  183. package/dist/src/ui/themes/ansi-light.js.map +1 -1
  184. package/dist/src/ui/themes/ansi.js +1 -2
  185. package/dist/src/ui/themes/ansi.js.map +1 -1
  186. package/dist/src/ui/themes/atom-one-dark.js +1 -2
  187. package/dist/src/ui/themes/atom-one-dark.js.map +1 -1
  188. package/dist/src/ui/themes/ayu-light.js +1 -2
  189. package/dist/src/ui/themes/ayu-light.js.map +1 -1
  190. package/dist/src/ui/themes/ayu.js +1 -2
  191. package/dist/src/ui/themes/ayu.js.map +1 -1
  192. package/dist/src/ui/themes/default-light.js +1 -2
  193. package/dist/src/ui/themes/default-light.js.map +1 -1
  194. package/dist/src/ui/themes/default.js +1 -2
  195. package/dist/src/ui/themes/default.js.map +1 -1
  196. package/dist/src/ui/themes/dracula.js +1 -2
  197. package/dist/src/ui/themes/dracula.js.map +1 -1
  198. package/dist/src/ui/themes/github-dark.js +1 -2
  199. package/dist/src/ui/themes/github-dark.js.map +1 -1
  200. package/dist/src/ui/themes/github-light.js +1 -2
  201. package/dist/src/ui/themes/github-light.js.map +1 -1
  202. package/dist/src/ui/themes/googlecode.js +1 -2
  203. package/dist/src/ui/themes/googlecode.js.map +1 -1
  204. package/dist/src/ui/themes/no-color.js +1 -30
  205. package/dist/src/ui/themes/no-color.js.map +1 -1
  206. package/dist/src/ui/themes/qwen-dark.js +1 -2
  207. package/dist/src/ui/themes/qwen-dark.js.map +1 -1
  208. package/dist/src/ui/themes/qwen-light.js +1 -2
  209. package/dist/src/ui/themes/qwen-light.js.map +1 -1
  210. package/dist/src/ui/themes/shades-of-purple.js +1 -2
  211. package/dist/src/ui/themes/shades-of-purple.js.map +1 -1
  212. package/dist/src/ui/themes/theme-manager.d.ts +0 -6
  213. package/dist/src/ui/themes/theme-manager.js +1 -8
  214. package/dist/src/ui/themes/theme-manager.js.map +1 -1
  215. package/dist/src/ui/themes/theme.d.ts +2 -45
  216. package/dist/src/ui/themes/theme.js +107 -92
  217. package/dist/src/ui/themes/theme.js.map +1 -1
  218. package/dist/src/ui/themes/xcode.js +1 -2
  219. package/dist/src/ui/themes/xcode.js.map +1 -1
  220. package/dist/src/ui/types.d.ts +4 -30
  221. package/dist/src/ui/types.js +0 -2
  222. package/dist/src/ui/types.js.map +1 -1
  223. package/dist/src/ui/utils/CodeColorizer.d.ts +1 -2
  224. package/dist/src/ui/utils/CodeColorizer.js +4 -5
  225. package/dist/src/ui/utils/CodeColorizer.js.map +1 -1
  226. package/dist/src/ui/utils/ConsolePatcher.d.ts +0 -1
  227. package/dist/src/ui/utils/ConsolePatcher.js +0 -3
  228. package/dist/src/ui/utils/ConsolePatcher.js.map +1 -1
  229. package/dist/src/ui/utils/InlineMarkdownRenderer.js +1 -8
  230. package/dist/src/ui/utils/InlineMarkdownRenderer.js.map +1 -1
  231. package/dist/src/ui/utils/MarkdownDisplay.js +2 -4
  232. package/dist/src/ui/utils/MarkdownDisplay.js.map +1 -1
  233. package/dist/src/ui/utils/commandUtils.d.ts +0 -1
  234. package/dist/src/ui/utils/commandUtils.js +1 -22
  235. package/dist/src/ui/utils/commandUtils.js.map +1 -1
  236. package/dist/src/ui/utils/computeStats.js +1 -3
  237. package/dist/src/ui/utils/computeStats.js.map +1 -1
  238. package/dist/src/ui/utils/errorParsing.d.ts +7 -0
  239. package/dist/src/ui/utils/errorParsing.js +90 -0
  240. package/dist/src/ui/utils/errorParsing.js.map +1 -0
  241. package/dist/src/ui/utils/updateCheck.d.ts +1 -1
  242. package/dist/src/ui/utils/updateCheck.js +10 -4
  243. package/dist/src/ui/utils/updateCheck.js.map +1 -1
  244. package/dist/src/utils/cleanup.d.ts +2 -2
  245. package/dist/src/utils/cleanup.js +2 -2
  246. package/dist/src/utils/cleanup.js.map +1 -1
  247. package/dist/src/utils/gitUtils.d.ts +1 -21
  248. package/dist/src/utils/gitUtils.js +3 -68
  249. package/dist/src/utils/gitUtils.js.map +1 -1
  250. package/dist/src/utils/installationInfo.js +5 -5
  251. package/dist/src/utils/installationInfo.js.map +1 -1
  252. package/dist/src/utils/readStdin.js +0 -10
  253. package/dist/src/utils/readStdin.js.map +1 -1
  254. package/dist/src/utils/sandbox.js +434 -457
  255. package/dist/src/utils/sandbox.js.map +1 -1
  256. package/dist/src/utils/version.js +1 -1
  257. package/dist/src/utils/version.js.map +1 -1
  258. package/dist/src/validateNonInterActiveAuth.js +7 -4
  259. package/dist/src/validateNonInterActiveAuth.js.map +1 -1
  260. package/dist/tsconfig.tsbuildinfo +1 -1
  261. package/package.json +6 -6
  262. package/dist/src/commands/mcp/add.d.ts +0 -7
  263. package/dist/src/commands/mcp/add.js +0 -166
  264. package/dist/src/commands/mcp/add.js.map +0 -1
  265. package/dist/src/commands/mcp/list.d.ts +0 -8
  266. package/dist/src/commands/mcp/list.js +0 -110
  267. package/dist/src/commands/mcp/list.js.map +0 -1
  268. package/dist/src/commands/mcp/remove.d.ts +0 -7
  269. package/dist/src/commands/mcp/remove.js +0 -44
  270. package/dist/src/commands/mcp/remove.js.map +0 -1
  271. package/dist/src/commands/mcp.d.ts +0 -7
  272. package/dist/src/commands/mcp.js +0 -23
  273. package/dist/src/commands/mcp.js.map +0 -1
  274. package/dist/src/config/auth.test.d.ts +0 -6
  275. package/dist/src/config/auth.test.js +0 -57
  276. package/dist/src/config/auth.test.js.map +0 -1
  277. package/dist/src/config/keyBindings.d.ts +0 -66
  278. package/dist/src/config/keyBindings.js +0 -141
  279. package/dist/src/config/keyBindings.js.map +0 -1
  280. package/dist/src/config/keyBindings.test.d.ts +0 -6
  281. package/dist/src/config/keyBindings.test.js +0 -51
  282. package/dist/src/config/keyBindings.test.js.map +0 -1
  283. package/dist/src/config/settingsSchema.d.ts +0 -613
  284. package/dist/src/config/settingsSchema.js +0 -586
  285. package/dist/src/config/settingsSchema.js.map +0 -1
  286. package/dist/src/config/settingsSchema.test.d.ts +0 -6
  287. package/dist/src/config/settingsSchema.test.js +0 -196
  288. package/dist/src/config/settingsSchema.test.js.map +0 -1
  289. package/dist/src/config/trustedFolders.d.ts +0 -37
  290. package/dist/src/config/trustedFolders.js +0 -118
  291. package/dist/src/config/trustedFolders.js.map +0 -1
  292. package/dist/src/config/trustedFolders.test.d.ts +0 -6
  293. package/dist/src/config/trustedFolders.test.js +0 -160
  294. package/dist/src/config/trustedFolders.test.js.map +0 -1
  295. package/dist/src/gemini.test.d.ts +0 -6
  296. package/dist/src/gemini.test.js +0 -193
  297. package/dist/src/gemini.test.js.map +0 -1
  298. package/dist/src/services/BuiltinCommandLoader.test.d.ts +0 -6
  299. package/dist/src/services/BuiltinCommandLoader.test.js +0 -111
  300. package/dist/src/services/BuiltinCommandLoader.test.js.map +0 -1
  301. package/dist/src/services/CommandService.test.d.ts +0 -6
  302. package/dist/src/services/CommandService.test.js +0 -232
  303. package/dist/src/services/CommandService.test.js.map +0 -1
  304. package/dist/src/test-utils/customMatchers.d.ts +0 -14
  305. package/dist/src/test-utils/customMatchers.js +0 -46
  306. package/dist/src/test-utils/customMatchers.js.map +0 -1
  307. package/dist/src/test-utils/mockCommandContext.d.ts +0 -18
  308. package/dist/src/test-utils/mockCommandContext.js +0 -87
  309. package/dist/src/test-utils/mockCommandContext.js.map +0 -1
  310. package/dist/src/test-utils/mockCommandContext.test.d.ts +0 -6
  311. package/dist/src/test-utils/mockCommandContext.test.js +0 -51
  312. package/dist/src/test-utils/mockCommandContext.test.js.map +0 -1
  313. package/dist/src/test-utils/render.d.ts +0 -8
  314. package/dist/src/test-utils/render.js +0 -10
  315. package/dist/src/test-utils/render.js.map +0 -1
  316. package/dist/src/ui/IdeIntegrationNudge.d.ts +0 -16
  317. package/dist/src/ui/IdeIntegrationNudge.js +0 -52
  318. package/dist/src/ui/IdeIntegrationNudge.js.map +0 -1
  319. package/dist/src/ui/commands/agentsCommand.d.ts +0 -7
  320. package/dist/src/ui/commands/agentsCommand.js +0 -32
  321. package/dist/src/ui/commands/agentsCommand.js.map +0 -1
  322. package/dist/src/ui/commands/settingsCommand.d.ts +0 -7
  323. package/dist/src/ui/commands/settingsCommand.js +0 -16
  324. package/dist/src/ui/commands/settingsCommand.js.map +0 -1
  325. package/dist/src/ui/commands/setupGithubCommand.test.d.ts +0 -6
  326. package/dist/src/ui/commands/setupGithubCommand.test.js +0 -167
  327. package/dist/src/ui/commands/setupGithubCommand.test.js.map +0 -1
  328. package/dist/src/ui/commands/summaryCommand.d.ts +0 -7
  329. package/dist/src/ui/commands/summaryCommand.js +0 -149
  330. package/dist/src/ui/commands/summaryCommand.js.map +0 -1
  331. package/dist/src/ui/commands/terminalSetupCommand.d.ts +0 -13
  332. package/dist/src/ui/commands/terminalSetupCommand.js +0 -41
  333. package/dist/src/ui/commands/terminalSetupCommand.js.map +0 -1
  334. package/dist/src/ui/components/AuthDialog.test.d.ts +0 -6
  335. package/dist/src/ui/components/AuthDialog.test.js +0 -220
  336. package/dist/src/ui/components/AuthDialog.test.js.map +0 -1
  337. package/dist/src/ui/components/ContextUsageDisplay.d.ts +0 -9
  338. package/dist/src/ui/components/ContextUsageDisplay.js +0 -14
  339. package/dist/src/ui/components/ContextUsageDisplay.js.map +0 -1
  340. package/dist/src/ui/components/FolderTrustDialog.d.ts +0 -16
  341. package/dist/src/ui/components/FolderTrustDialog.js +0 -39
  342. package/dist/src/ui/components/FolderTrustDialog.js.map +0 -1
  343. package/dist/src/ui/components/FolderTrustDialog.test.d.ts +0 -6
  344. package/dist/src/ui/components/FolderTrustDialog.test.js +0 -26
  345. package/dist/src/ui/components/FolderTrustDialog.test.js.map +0 -1
  346. package/dist/src/ui/components/Header.test.d.ts +0 -6
  347. package/dist/src/ui/components/Header.test.js +0 -37
  348. package/dist/src/ui/components/Header.test.js.map +0 -1
  349. package/dist/src/ui/components/HistoryItemDisplay.test.d.ts +0 -6
  350. package/dist/src/ui/components/HistoryItemDisplay.test.js +0 -91
  351. package/dist/src/ui/components/HistoryItemDisplay.test.js.map +0 -1
  352. package/dist/src/ui/components/LoadingIndicator.test.d.ts +0 -6
  353. package/dist/src/ui/components/LoadingIndicator.test.js +0 -190
  354. package/dist/src/ui/components/LoadingIndicator.test.js.map +0 -1
  355. package/dist/src/ui/components/OpenAIKeyPrompt.test.d.ts +0 -6
  356. package/dist/src/ui/components/OpenAIKeyPrompt.test.js +0 -44
  357. package/dist/src/ui/components/OpenAIKeyPrompt.test.js.map +0 -1
  358. package/dist/src/ui/components/QuitConfirmationDialog.d.ts +0 -17
  359. package/dist/src/ui/components/QuitConfirmationDialog.js +0 -44
  360. package/dist/src/ui/components/QuitConfirmationDialog.js.map +0 -1
  361. package/dist/src/ui/components/QwenOAuthProgress.test.d.ts +0 -6
  362. package/dist/src/ui/components/QwenOAuthProgress.test.js +0 -292
  363. package/dist/src/ui/components/QwenOAuthProgress.test.js.map +0 -1
  364. package/dist/src/ui/components/SettingsDialog.d.ts +0 -14
  365. package/dist/src/ui/components/SettingsDialog.js +0 -519
  366. package/dist/src/ui/components/SettingsDialog.js.map +0 -1
  367. package/dist/src/ui/components/SettingsDialog.test.d.ts +0 -6
  368. package/dist/src/ui/components/SettingsDialog.test.js +0 -568
  369. package/dist/src/ui/components/SettingsDialog.test.js.map +0 -1
  370. package/dist/src/ui/components/ShellConfirmationDialog.test.d.ts +0 -6
  371. package/dist/src/ui/components/ShellConfirmationDialog.test.js +0 -40
  372. package/dist/src/ui/components/ShellConfirmationDialog.test.js.map +0 -1
  373. package/dist/src/ui/components/TodoDisplay.d.ts +0 -16
  374. package/dist/src/ui/components/TodoDisplay.js +0 -27
  375. package/dist/src/ui/components/TodoDisplay.js.map +0 -1
  376. package/dist/src/ui/components/TodoDisplay.test.d.ts +0 -6
  377. package/dist/src/ui/components/TodoDisplay.test.js +0 -77
  378. package/dist/src/ui/components/TodoDisplay.test.js.map +0 -1
  379. package/dist/src/ui/components/WelcomeBackDialog.d.ts +0 -13
  380. package/dist/src/ui/components/WelcomeBackDialog.js +0 -31
  381. package/dist/src/ui/components/WelcomeBackDialog.js.map +0 -1
  382. package/dist/src/ui/components/messages/DiffRenderer.test.d.ts +0 -6
  383. package/dist/src/ui/components/messages/DiffRenderer.test.js +0 -239
  384. package/dist/src/ui/components/messages/DiffRenderer.test.js.map +0 -1
  385. package/dist/src/ui/components/messages/SummaryMessage.d.ts +0 -11
  386. package/dist/src/ui/components/messages/SummaryMessage.js +0 -35
  387. package/dist/src/ui/components/messages/SummaryMessage.js.map +0 -1
  388. package/dist/src/ui/components/messages/ToolConfirmationMessage.test.d.ts +0 -6
  389. package/dist/src/ui/components/messages/ToolConfirmationMessage.test.js +0 -37
  390. package/dist/src/ui/components/messages/ToolConfirmationMessage.test.js.map +0 -1
  391. package/dist/src/ui/components/messages/ToolMessage.test.d.ts +0 -6
  392. package/dist/src/ui/components/messages/ToolMessage.test.js +0 -146
  393. package/dist/src/ui/components/messages/ToolMessage.test.js.map +0 -1
  394. package/dist/src/ui/components/shared/MaxSizedBox.test.d.ts +0 -6
  395. package/dist/src/ui/components/shared/MaxSizedBox.test.js +0 -154
  396. package/dist/src/ui/components/shared/MaxSizedBox.test.js.map +0 -1
  397. package/dist/src/ui/components/shared/RadioButtonSelect.test.d.ts +0 -6
  398. package/dist/src/ui/components/shared/RadioButtonSelect.test.js +0 -111
  399. package/dist/src/ui/components/shared/RadioButtonSelect.test.js.map +0 -1
  400. package/dist/src/ui/components/shared/TextInput.d.ts +0 -16
  401. package/dist/src/ui/components/shared/TextInput.js +0 -127
  402. package/dist/src/ui/components/shared/TextInput.js.map +0 -1
  403. package/dist/src/ui/components/subagents/constants.d.ts +0 -23
  404. package/dist/src/ui/components/subagents/constants.js +0 -67
  405. package/dist/src/ui/components/subagents/constants.js.map +0 -1
  406. package/dist/src/ui/components/subagents/create/AgentCreationWizard.d.ts +0 -15
  407. package/dist/src/ui/components/subagents/create/AgentCreationWizard.js +0 -171
  408. package/dist/src/ui/components/subagents/create/AgentCreationWizard.js.map +0 -1
  409. package/dist/src/ui/components/subagents/create/ColorSelector.d.ts +0 -15
  410. package/dist/src/ui/components/subagents/create/ColorSelector.js +0 -41
  411. package/dist/src/ui/components/subagents/create/ColorSelector.js.map +0 -1
  412. package/dist/src/ui/components/subagents/create/CreationSummary.d.ts +0 -10
  413. package/dist/src/ui/components/subagents/create/CreationSummary.js +0 -163
  414. package/dist/src/ui/components/subagents/create/CreationSummary.js.map +0 -1
  415. package/dist/src/ui/components/subagents/create/DescriptionInput.d.ts +0 -10
  416. package/dist/src/ui/components/subagents/create/DescriptionInput.js +0 -105
  417. package/dist/src/ui/components/subagents/create/DescriptionInput.js.map +0 -1
  418. package/dist/src/ui/components/subagents/create/GenerationMethodSelector.d.ts +0 -10
  419. package/dist/src/ui/components/subagents/create/GenerationMethodSelector.js +0 -33
  420. package/dist/src/ui/components/subagents/create/GenerationMethodSelector.js.map +0 -1
  421. package/dist/src/ui/components/subagents/create/LocationSelector.d.ts +0 -10
  422. package/dist/src/ui/components/subagents/create/LocationSelector.js +0 -33
  423. package/dist/src/ui/components/subagents/create/LocationSelector.js.map +0 -1
  424. package/dist/src/ui/components/subagents/create/TextEntryStep.d.ts +0 -26
  425. package/dist/src/ui/components/subagents/create/TextEntryStep.js +0 -28
  426. package/dist/src/ui/components/subagents/create/TextEntryStep.js.map +0 -1
  427. package/dist/src/ui/components/subagents/create/ToolSelector.d.ts +0 -16
  428. package/dist/src/ui/components/subagents/create/ToolSelector.js +0 -143
  429. package/dist/src/ui/components/subagents/create/ToolSelector.js.map +0 -1
  430. package/dist/src/ui/components/subagents/index.d.ts +0 -8
  431. package/dist/src/ui/components/subagents/index.js +0 -12
  432. package/dist/src/ui/components/subagents/index.js.map +0 -1
  433. package/dist/src/ui/components/subagents/manage/ActionSelectionStep.d.ts +0 -13
  434. package/dist/src/ui/components/subagents/manage/ActionSelectionStep.js +0 -45
  435. package/dist/src/ui/components/subagents/manage/ActionSelectionStep.js.map +0 -1
  436. package/dist/src/ui/components/subagents/manage/AgentDeleteStep.d.ts +0 -13
  437. package/dist/src/ui/components/subagents/manage/AgentDeleteStep.js +0 -32
  438. package/dist/src/ui/components/subagents/manage/AgentDeleteStep.js.map +0 -1
  439. package/dist/src/ui/components/subagents/manage/AgentEditStep.d.ts +0 -15
  440. package/dist/src/ui/components/subagents/manage/AgentEditStep.js +0 -62
  441. package/dist/src/ui/components/subagents/manage/AgentEditStep.js.map +0 -1
  442. package/dist/src/ui/components/subagents/manage/AgentSelectionStep.d.ts +0 -12
  443. package/dist/src/ui/components/subagents/manage/AgentSelectionStep.js +0 -224
  444. package/dist/src/ui/components/subagents/manage/AgentSelectionStep.js.map +0 -1
  445. package/dist/src/ui/components/subagents/manage/AgentViewerStep.d.ts +0 -11
  446. package/dist/src/ui/components/subagents/manage/AgentViewerStep.js +0 -18
  447. package/dist/src/ui/components/subagents/manage/AgentViewerStep.js.map +0 -1
  448. package/dist/src/ui/components/subagents/manage/AgentsManagerDialog.d.ts +0 -15
  449. package/dist/src/ui/components/subagents/manage/AgentsManagerDialog.js +0 -220
  450. package/dist/src/ui/components/subagents/manage/AgentsManagerDialog.js.map +0 -1
  451. package/dist/src/ui/components/subagents/reducers.d.ts +0 -14
  452. package/dist/src/ui/components/subagents/reducers.js +0 -161
  453. package/dist/src/ui/components/subagents/reducers.js.map +0 -1
  454. package/dist/src/ui/components/subagents/runtime/AgentExecutionDisplay.d.ts +0 -19
  455. package/dist/src/ui/components/subagents/runtime/AgentExecutionDisplay.js +0 -184
  456. package/dist/src/ui/components/subagents/runtime/AgentExecutionDisplay.js.map +0 -1
  457. package/dist/src/ui/components/subagents/types.d.ts +0 -137
  458. package/dist/src/ui/components/subagents/types.js +0 -15
  459. package/dist/src/ui/components/subagents/types.js.map +0 -1
  460. package/dist/src/ui/components/subagents/utils.d.ts +0 -15
  461. package/dist/src/ui/components/subagents/utils.js +0 -79
  462. package/dist/src/ui/components/subagents/utils.js.map +0 -1
  463. package/dist/src/ui/contexts/KeypressContext.d.ts +0 -31
  464. package/dist/src/ui/contexts/KeypressContext.js +0 -388
  465. package/dist/src/ui/contexts/KeypressContext.js.map +0 -1
  466. package/dist/src/ui/contexts/KeypressContext.test.d.ts +0 -6
  467. package/dist/src/ui/contexts/KeypressContext.test.js +0 -754
  468. package/dist/src/ui/contexts/KeypressContext.test.js.map +0 -1
  469. package/dist/src/ui/contexts/SettingsContext.d.ts +0 -9
  470. package/dist/src/ui/contexts/SettingsContext.js +0 -15
  471. package/dist/src/ui/contexts/SettingsContext.js.map +0 -1
  472. package/dist/src/ui/hooks/atCommandProcessor.test.d.ts +0 -6
  473. package/dist/src/ui/hooks/atCommandProcessor.test.js +0 -824
  474. package/dist/src/ui/hooks/atCommandProcessor.test.js.map +0 -1
  475. package/dist/src/ui/hooks/shellCommandProcessor.test.d.ts +0 -6
  476. package/dist/src/ui/hooks/shellCommandProcessor.test.js +0 -328
  477. package/dist/src/ui/hooks/shellCommandProcessor.test.js.map +0 -1
  478. package/dist/src/ui/hooks/useAgentsManagerDialog.d.ts +0 -11
  479. package/dist/src/ui/hooks/useAgentsManagerDialog.js +0 -21
  480. package/dist/src/ui/hooks/useAgentsManagerDialog.js.map +0 -1
  481. package/dist/src/ui/hooks/useAutoAcceptIndicator.test.d.ts +0 -6
  482. package/dist/src/ui/hooks/useAutoAcceptIndicator.test.js +0 -191
  483. package/dist/src/ui/hooks/useAutoAcceptIndicator.test.js.map +0 -1
  484. package/dist/src/ui/hooks/useDialogClose.d.ts +0 -34
  485. package/dist/src/ui/hooks/useDialogClose.js +0 -62
  486. package/dist/src/ui/hooks/useDialogClose.js.map +0 -1
  487. package/dist/src/ui/hooks/useEditorSettings.test.d.ts +0 -6
  488. package/dist/src/ui/hooks/useEditorSettings.test.js +0 -164
  489. package/dist/src/ui/hooks/useEditorSettings.test.js.map +0 -1
  490. package/dist/src/ui/hooks/useFolderTrust.d.ts +0 -12
  491. package/dist/src/ui/hooks/useFolderTrust.js +0 -55
  492. package/dist/src/ui/hooks/useFolderTrust.js.map +0 -1
  493. package/dist/src/ui/hooks/useGitBranchName.test.d.ts +0 -6
  494. package/dist/src/ui/hooks/useGitBranchName.test.js +0 -239
  495. package/dist/src/ui/hooks/useGitBranchName.test.js.map +0 -1
  496. package/dist/src/ui/hooks/useHistoryManager.test.d.ts +0 -6
  497. package/dist/src/ui/hooks/useHistoryManager.test.js +0 -171
  498. package/dist/src/ui/hooks/useHistoryManager.test.js.map +0 -1
  499. package/dist/src/ui/hooks/useInputHistory.test.d.ts +0 -6
  500. package/dist/src/ui/hooks/useInputHistory.test.js +0 -207
  501. package/dist/src/ui/hooks/useInputHistory.test.js.map +0 -1
  502. package/dist/src/ui/hooks/useKittyKeyboardProtocol.d.ts +0 -15
  503. package/dist/src/ui/hooks/useKittyKeyboardProtocol.js +0 -20
  504. package/dist/src/ui/hooks/useKittyKeyboardProtocol.js.map +0 -1
  505. package/dist/src/ui/hooks/useLaunchEditor.d.ts +0 -10
  506. package/dist/src/ui/hooks/useLaunchEditor.js +0 -70
  507. package/dist/src/ui/hooks/useLaunchEditor.js.map +0 -1
  508. package/dist/src/ui/hooks/useLoadingIndicator.test.d.ts +0 -6
  509. package/dist/src/ui/hooks/useLoadingIndicator.test.js +0 -91
  510. package/dist/src/ui/hooks/useLoadingIndicator.test.js.map +0 -1
  511. package/dist/src/ui/hooks/useMessageQueue.d.ts +0 -22
  512. package/dist/src/ui/hooks/useMessageQueue.js +0 -49
  513. package/dist/src/ui/hooks/useMessageQueue.js.map +0 -1
  514. package/dist/src/ui/hooks/useMessageQueue.test.d.ts +0 -6
  515. package/dist/src/ui/hooks/useMessageQueue.test.js +0 -158
  516. package/dist/src/ui/hooks/useMessageQueue.test.js.map +0 -1
  517. package/dist/src/ui/hooks/usePrivacySettings.test.d.ts +0 -6
  518. package/dist/src/ui/hooks/usePrivacySettings.test.js +0 -154
  519. package/dist/src/ui/hooks/usePrivacySettings.test.js.map +0 -1
  520. package/dist/src/ui/hooks/useQuitConfirmation.d.ts +0 -14
  521. package/dist/src/ui/hooks/useQuitConfirmation.js +0 -36
  522. package/dist/src/ui/hooks/useQuitConfirmation.js.map +0 -1
  523. package/dist/src/ui/hooks/useQwenAuth.test.d.ts +0 -6
  524. package/dist/src/ui/hooks/useQwenAuth.test.js +0 -288
  525. package/dist/src/ui/hooks/useQwenAuth.test.js.map +0 -1
  526. package/dist/src/ui/hooks/useReverseSearchCompletion.test.d.ts +0 -6
  527. package/dist/src/ui/hooks/useReverseSearchCompletion.test.js +0 -163
  528. package/dist/src/ui/hooks/useReverseSearchCompletion.test.js.map +0 -1
  529. package/dist/src/ui/hooks/useSettingsCommand.d.ts +0 -10
  530. package/dist/src/ui/hooks/useSettingsCommand.js +0 -21
  531. package/dist/src/ui/hooks/useSettingsCommand.js.map +0 -1
  532. package/dist/src/ui/hooks/useShellHistory.test.d.ts +0 -6
  533. package/dist/src/ui/hooks/useShellHistory.test.js +0 -162
  534. package/dist/src/ui/hooks/useShellHistory.test.js.map +0 -1
  535. package/dist/src/ui/hooks/useSlashCompletion.test.d.ts +0 -6
  536. package/dist/src/ui/hooks/useSlashCompletion.test.js +0 -272
  537. package/dist/src/ui/hooks/useSlashCompletion.test.js.map +0 -1
  538. package/dist/src/ui/hooks/useSubagentCreateDialog.d.ts +0 -10
  539. package/dist/src/ui/hooks/useSubagentCreateDialog.js +0 -21
  540. package/dist/src/ui/hooks/useSubagentCreateDialog.js.map +0 -1
  541. package/dist/src/ui/hooks/useTimer.test.d.ts +0 -6
  542. package/dist/src/ui/hooks/useTimer.test.js +0 -90
  543. package/dist/src/ui/hooks/useTimer.test.js.map +0 -1
  544. package/dist/src/ui/hooks/useToolScheduler.test.d.ts +0 -6
  545. package/dist/src/ui/hooks/useToolScheduler.test.js +0 -846
  546. package/dist/src/ui/hooks/useToolScheduler.test.js.map +0 -1
  547. package/dist/src/ui/hooks/useWelcomeBack.d.ts +0 -23
  548. package/dist/src/ui/hooks/useWelcomeBack.js +0 -78
  549. package/dist/src/ui/hooks/useWelcomeBack.js.map +0 -1
  550. package/dist/src/ui/keyMatchers.d.ts +0 -26
  551. package/dist/src/ui/keyMatchers.js +0 -68
  552. package/dist/src/ui/keyMatchers.js.map +0 -1
  553. package/dist/src/ui/keyMatchers.test.d.ts +0 -6
  554. package/dist/src/ui/keyMatchers.test.js +0 -276
  555. package/dist/src/ui/keyMatchers.test.js.map +0 -1
  556. package/dist/src/ui/semantic-colors.d.ts +0 -7
  557. package/dist/src/ui/semantic-colors.js +0 -24
  558. package/dist/src/ui/semantic-colors.js.map +0 -1
  559. package/dist/src/ui/themes/color-utils.test.d.ts +0 -6
  560. package/dist/src/ui/themes/color-utils.test.js +0 -197
  561. package/dist/src/ui/themes/color-utils.test.js.map +0 -1
  562. package/dist/src/ui/themes/semantic-tokens.d.ts +0 -37
  563. package/dist/src/ui/themes/semantic-tokens.js +0 -94
  564. package/dist/src/ui/themes/semantic-tokens.js.map +0 -1
  565. package/dist/src/ui/themes/theme-manager.test.d.ts +0 -6
  566. package/dist/src/ui/themes/theme-manager.test.js +0 -83
  567. package/dist/src/ui/themes/theme-manager.test.js.map +0 -1
  568. package/dist/src/ui/utils/MarkdownDisplay.test.d.ts +0 -6
  569. package/dist/src/ui/utils/MarkdownDisplay.test.js +0 -151
  570. package/dist/src/ui/utils/MarkdownDisplay.test.js.map +0 -1
  571. package/dist/src/ui/utils/clipboardUtils.test.d.ts +0 -6
  572. package/dist/src/ui/utils/clipboardUtils.test.js +0 -65
  573. package/dist/src/ui/utils/clipboardUtils.test.js.map +0 -1
  574. package/dist/src/ui/utils/commandUtils.test.d.ts +0 -6
  575. package/dist/src/ui/utils/commandUtils.test.js +0 -294
  576. package/dist/src/ui/utils/commandUtils.test.js.map +0 -1
  577. package/dist/src/ui/utils/displayUtils.test.d.ts +0 -6
  578. package/dist/src/ui/utils/displayUtils.test.js +0 -42
  579. package/dist/src/ui/utils/displayUtils.test.js.map +0 -1
  580. package/dist/src/ui/utils/formatters.test.d.ts +0 -6
  581. package/dist/src/ui/utils/formatters.test.js +0 -56
  582. package/dist/src/ui/utils/formatters.test.js.map +0 -1
  583. package/dist/src/ui/utils/isNarrowWidth.d.ts +0 -6
  584. package/dist/src/ui/utils/isNarrowWidth.js +0 -9
  585. package/dist/src/ui/utils/isNarrowWidth.js.map +0 -1
  586. package/dist/src/ui/utils/kittyProtocolDetector.d.ts +0 -13
  587. package/dist/src/ui/utils/kittyProtocolDetector.js +0 -88
  588. package/dist/src/ui/utils/kittyProtocolDetector.js.map +0 -1
  589. package/dist/src/ui/utils/markdownUtilities.test.d.ts +0 -6
  590. package/dist/src/ui/utils/markdownUtilities.test.js +0 -42
  591. package/dist/src/ui/utils/markdownUtilities.test.js.map +0 -1
  592. package/dist/src/ui/utils/platformConstants.d.ts +0 -45
  593. package/dist/src/ui/utils/platformConstants.js +0 -46
  594. package/dist/src/ui/utils/platformConstants.js.map +0 -1
  595. package/dist/src/ui/utils/terminalSetup.d.ts +0 -30
  596. package/dist/src/ui/utils/terminalSetup.js +0 -281
  597. package/dist/src/ui/utils/terminalSetup.js.map +0 -1
  598. package/dist/src/ui/utils/updateCheck.test.d.ts +0 -6
  599. package/dist/src/ui/utils/updateCheck.test.js +0 -145
  600. package/dist/src/ui/utils/updateCheck.test.js.map +0 -1
  601. package/dist/src/utils/checks.d.ts +0 -19
  602. package/dist/src/utils/checks.js +0 -24
  603. package/dist/src/utils/checks.js.map +0 -1
  604. package/dist/src/utils/dialogScopeUtils.d.ts +0 -31
  605. package/dist/src/utils/dialogScopeUtils.js +0 -48
  606. package/dist/src/utils/dialogScopeUtils.js.map +0 -1
  607. package/dist/src/utils/gitUtils.test.d.ts +0 -6
  608. package/dist/src/utils/gitUtils.test.js +0 -113
  609. package/dist/src/utils/gitUtils.test.js.map +0 -1
  610. package/dist/src/utils/installationInfo.test.d.ts +0 -6
  611. package/dist/src/utils/installationInfo.test.js +0 -242
  612. package/dist/src/utils/installationInfo.test.js.map +0 -1
  613. package/dist/src/utils/settingsUtils.d.ts +0 -134
  614. package/dist/src/utils/settingsUtils.js +0 -336
  615. package/dist/src/utils/settingsUtils.js.map +0 -1
  616. package/dist/src/utils/settingsUtils.test.d.ts +0 -6
  617. package/dist/src/utils/settingsUtils.test.js +0 -514
  618. package/dist/src/utils/settingsUtils.test.js.map +0 -1
  619. package/dist/src/utils/userStartupWarnings.test.d.ts +0 -6
  620. package/dist/src/utils/userStartupWarnings.test.js +0 -67
  621. package/dist/src/utils/userStartupWarnings.test.js.map +0 -1
  622. package/dist/src/zed-integration/acp.d.ts +0 -63
  623. package/dist/src/zed-integration/acp.js.map +0 -1
  624. package/dist/src/zed-integration/fileSystemService.d.ts +0 -19
  625. package/dist/src/zed-integration/fileSystemService.js +0 -43
  626. package/dist/src/zed-integration/fileSystemService.js.map +0 -1
  627. package/dist/src/zed-integration/schema.d.ts +0 -11782
  628. package/dist/src/zed-integration/schema.js +0 -311
  629. package/dist/src/zed-integration/schema.js.map +0 -1
  630. package/dist/src/zed-integration/zedIntegration.d.ts +0 -10
  631. package/dist/src/zed-integration/zedIntegration.js +0 -765
  632. package/dist/src/zed-integration/zedIntegration.js.map +0 -1
@@ -1,824 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2025 Google LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
- import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
7
- import { handleAtCommand } from './atCommandProcessor.js';
8
- import { FileDiscoveryService, GlobTool, ReadManyFilesTool, StandardFileSystemService, ToolRegistry, } from '@umsai/ums-code-core';
9
- import * as os from 'os';
10
- import { ToolCallStatus } from '../types.js';
11
- import * as fsPromises from 'fs/promises';
12
- import * as path from 'path';
13
- describe('handleAtCommand', () => {
14
- let testRootDir;
15
- let mockConfig;
16
- const mockAddItem = vi.fn();
17
- const mockOnDebugMessage = vi.fn();
18
- let abortController;
19
- async function createTestFile(fullPath, fileContents) {
20
- await fsPromises.mkdir(path.dirname(fullPath), { recursive: true });
21
- await fsPromises.writeFile(fullPath, fileContents);
22
- return path.resolve(testRootDir, fullPath);
23
- }
24
- beforeEach(async () => {
25
- vi.resetAllMocks();
26
- testRootDir = await fsPromises.mkdtemp(path.join(os.tmpdir(), 'folder-structure-test-'));
27
- abortController = new AbortController();
28
- const getToolRegistry = vi.fn();
29
- mockConfig = {
30
- getToolRegistry,
31
- getTargetDir: () => testRootDir,
32
- isSandboxed: () => false,
33
- getFileService: () => new FileDiscoveryService(testRootDir),
34
- getFileFilteringRespectGitIgnore: () => true,
35
- getFileFilteringRespectGeminiIgnore: () => true,
36
- getFileFilteringOptions: () => ({
37
- respectGitIgnore: true,
38
- respectGeminiIgnore: true,
39
- }),
40
- getFileSystemService: () => new StandardFileSystemService(),
41
- getEnableRecursiveFileSearch: vi.fn(() => true),
42
- getWorkspaceContext: () => ({
43
- isPathWithinWorkspace: () => true,
44
- getDirectories: () => [testRootDir],
45
- }),
46
- getMcpServers: () => ({}),
47
- getMcpServerCommand: () => undefined,
48
- getPromptRegistry: () => ({
49
- getPromptsByServer: () => [],
50
- }),
51
- getDebugMode: () => false,
52
- };
53
- const registry = new ToolRegistry(mockConfig);
54
- registry.registerTool(new ReadManyFilesTool(mockConfig));
55
- registry.registerTool(new GlobTool(mockConfig));
56
- getToolRegistry.mockReturnValue(registry);
57
- });
58
- afterEach(async () => {
59
- abortController.abort();
60
- await fsPromises.rm(testRootDir, { recursive: true, force: true });
61
- });
62
- it('should pass through query if no @ command is present', async () => {
63
- const query = 'regular user query';
64
- const result = await handleAtCommand({
65
- query,
66
- config: mockConfig,
67
- addItem: mockAddItem,
68
- onDebugMessage: mockOnDebugMessage,
69
- messageId: 123,
70
- signal: abortController.signal,
71
- });
72
- expect(result).toEqual({
73
- processedQuery: [{ text: query }],
74
- shouldProceed: true,
75
- });
76
- });
77
- it('should pass through original query if only a lone @ symbol is present', async () => {
78
- const queryWithSpaces = ' @ ';
79
- const result = await handleAtCommand({
80
- query: queryWithSpaces,
81
- config: mockConfig,
82
- addItem: mockAddItem,
83
- onDebugMessage: mockOnDebugMessage,
84
- messageId: 124,
85
- signal: abortController.signal,
86
- });
87
- expect(result).toEqual({
88
- processedQuery: [{ text: queryWithSpaces }],
89
- shouldProceed: true,
90
- });
91
- expect(mockOnDebugMessage).toHaveBeenCalledWith('Lone @ detected, will be treated as text in the modified query.');
92
- });
93
- it('should process a valid text file path', async () => {
94
- const fileContent = 'This is the file content.';
95
- const filePath = await createTestFile(path.join(testRootDir, 'path', 'to', 'file.txt'), fileContent);
96
- const query = `@${filePath}`;
97
- const result = await handleAtCommand({
98
- query,
99
- config: mockConfig,
100
- addItem: mockAddItem,
101
- onDebugMessage: mockOnDebugMessage,
102
- messageId: 125,
103
- signal: abortController.signal,
104
- });
105
- expect(result).toEqual({
106
- processedQuery: [
107
- { text: `@${filePath}` },
108
- { text: '\n--- Content from referenced files ---' },
109
- { text: `\nContent from @${filePath}:\n` },
110
- { text: fileContent },
111
- { text: '\n--- End of content ---' },
112
- ],
113
- shouldProceed: true,
114
- });
115
- expect(mockAddItem).toHaveBeenCalledWith(expect.objectContaining({
116
- type: 'tool_group',
117
- tools: [expect.objectContaining({ status: ToolCallStatus.Success })],
118
- }), 125);
119
- });
120
- it('should process a valid directory path and convert to glob', async () => {
121
- const fileContent = 'This is the file content.';
122
- const filePath = await createTestFile(path.join(testRootDir, 'path', 'to', 'file.txt'), fileContent);
123
- const dirPath = path.dirname(filePath);
124
- const query = `@${dirPath}`;
125
- const resolvedGlob = `${dirPath}/**`;
126
- const result = await handleAtCommand({
127
- query,
128
- config: mockConfig,
129
- addItem: mockAddItem,
130
- onDebugMessage: mockOnDebugMessage,
131
- messageId: 126,
132
- signal: abortController.signal,
133
- });
134
- expect(result).toEqual({
135
- processedQuery: [
136
- { text: `@${resolvedGlob}` },
137
- { text: '\n--- Content from referenced files ---' },
138
- { text: `\nContent from @${filePath}:\n` },
139
- { text: fileContent },
140
- { text: '\n--- End of content ---' },
141
- ],
142
- shouldProceed: true,
143
- });
144
- expect(mockOnDebugMessage).toHaveBeenCalledWith(`Path ${dirPath} resolved to directory, using glob: ${resolvedGlob}`);
145
- });
146
- it('should handle query with text before and after @command', async () => {
147
- const fileContent = 'Markdown content.';
148
- const filePath = await createTestFile(path.join(testRootDir, 'doc.md'), fileContent);
149
- const textBefore = 'Explain this: ';
150
- const textAfter = ' in detail.';
151
- const query = `${textBefore}@${filePath}${textAfter}`;
152
- const result = await handleAtCommand({
153
- query,
154
- config: mockConfig,
155
- addItem: mockAddItem,
156
- onDebugMessage: mockOnDebugMessage,
157
- messageId: 128,
158
- signal: abortController.signal,
159
- });
160
- expect(result).toEqual({
161
- processedQuery: [
162
- { text: `${textBefore}@${filePath}${textAfter}` },
163
- { text: '\n--- Content from referenced files ---' },
164
- { text: `\nContent from @${filePath}:\n` },
165
- { text: fileContent },
166
- { text: '\n--- End of content ---' },
167
- ],
168
- shouldProceed: true,
169
- });
170
- });
171
- it('should correctly unescape paths with escaped spaces', async () => {
172
- const fileContent = 'This is the file content.';
173
- const filePath = await createTestFile(path.join(testRootDir, 'path', 'to', 'my file.txt'), fileContent);
174
- const escapedpath = path.join(testRootDir, 'path', 'to', 'my\\ file.txt');
175
- const query = `@${escapedpath}`;
176
- const result = await handleAtCommand({
177
- query,
178
- config: mockConfig,
179
- addItem: mockAddItem,
180
- onDebugMessage: mockOnDebugMessage,
181
- messageId: 125,
182
- signal: abortController.signal,
183
- });
184
- expect(result).toEqual({
185
- processedQuery: [
186
- { text: `@${filePath}` },
187
- { text: '\n--- Content from referenced files ---' },
188
- { text: `\nContent from @${filePath}:\n` },
189
- { text: fileContent },
190
- { text: '\n--- End of content ---' },
191
- ],
192
- shouldProceed: true,
193
- });
194
- expect(mockAddItem).toHaveBeenCalledWith(expect.objectContaining({
195
- type: 'tool_group',
196
- tools: [expect.objectContaining({ status: ToolCallStatus.Success })],
197
- }), 125);
198
- });
199
- it('should handle multiple @file references', async () => {
200
- const content1 = 'Content file1';
201
- const file1Path = await createTestFile(path.join(testRootDir, 'file1.txt'), content1);
202
- const content2 = 'Content file2';
203
- const file2Path = await createTestFile(path.join(testRootDir, 'file2.md'), content2);
204
- const query = `@${file1Path} @${file2Path}`;
205
- const result = await handleAtCommand({
206
- query,
207
- config: mockConfig,
208
- addItem: mockAddItem,
209
- onDebugMessage: mockOnDebugMessage,
210
- messageId: 130,
211
- signal: abortController.signal,
212
- });
213
- expect(result).toEqual({
214
- processedQuery: [
215
- { text: query },
216
- { text: '\n--- Content from referenced files ---' },
217
- { text: `\nContent from @${file1Path}:\n` },
218
- { text: content1 },
219
- { text: `\nContent from @${file2Path}:\n` },
220
- { text: content2 },
221
- { text: '\n--- End of content ---' },
222
- ],
223
- shouldProceed: true,
224
- });
225
- });
226
- it('should handle multiple @file references with interleaved text', async () => {
227
- const text1 = 'Check ';
228
- const content1 = 'C1';
229
- const file1Path = await createTestFile(path.join(testRootDir, 'f1.txt'), content1);
230
- const text2 = ' and ';
231
- const content2 = 'C2';
232
- const file2Path = await createTestFile(path.join(testRootDir, 'f2.md'), content2);
233
- const text3 = ' please.';
234
- const query = `${text1}@${file1Path}${text2}@${file2Path}${text3}`;
235
- const result = await handleAtCommand({
236
- query,
237
- config: mockConfig,
238
- addItem: mockAddItem,
239
- onDebugMessage: mockOnDebugMessage,
240
- messageId: 131,
241
- signal: abortController.signal,
242
- });
243
- expect(result).toEqual({
244
- processedQuery: [
245
- { text: query },
246
- { text: '\n--- Content from referenced files ---' },
247
- { text: `\nContent from @${file1Path}:\n` },
248
- { text: content1 },
249
- { text: `\nContent from @${file2Path}:\n` },
250
- { text: content2 },
251
- { text: '\n--- End of content ---' },
252
- ],
253
- shouldProceed: true,
254
- });
255
- });
256
- it('should handle a mix of valid, invalid, and lone @ references', async () => {
257
- const content1 = 'Valid content 1';
258
- const file1Path = await createTestFile(path.join(testRootDir, 'valid1.txt'), content1);
259
- const invalidFile = 'nonexistent.txt';
260
- const content2 = 'Globbed content';
261
- const file2Path = await createTestFile(path.join(testRootDir, 'resolved', 'valid2.actual'), content2);
262
- const query = `Look at @${file1Path} then @${invalidFile} and also just @ symbol, then @${file2Path}`;
263
- const result = await handleAtCommand({
264
- query,
265
- config: mockConfig,
266
- addItem: mockAddItem,
267
- onDebugMessage: mockOnDebugMessage,
268
- messageId: 132,
269
- signal: abortController.signal,
270
- });
271
- expect(result).toEqual({
272
- processedQuery: [
273
- {
274
- text: `Look at @${file1Path} then @${invalidFile} and also just @ symbol, then @${file2Path}`,
275
- },
276
- { text: '\n--- Content from referenced files ---' },
277
- { text: `\nContent from @${file2Path}:\n` },
278
- { text: content2 },
279
- { text: `\nContent from @${file1Path}:\n` },
280
- { text: content1 },
281
- { text: '\n--- End of content ---' },
282
- ],
283
- shouldProceed: true,
284
- });
285
- expect(mockOnDebugMessage).toHaveBeenCalledWith(`Path ${invalidFile} not found directly, attempting glob search.`);
286
- expect(mockOnDebugMessage).toHaveBeenCalledWith(`Glob search for '**/*${invalidFile}*' found no files or an error. Path ${invalidFile} will be skipped.`);
287
- expect(mockOnDebugMessage).toHaveBeenCalledWith('Lone @ detected, will be treated as text in the modified query.');
288
- });
289
- it('should return original query if all @paths are invalid or lone @', async () => {
290
- const query = 'Check @nonexistent.txt and @ also';
291
- const result = await handleAtCommand({
292
- query,
293
- config: mockConfig,
294
- addItem: mockAddItem,
295
- onDebugMessage: mockOnDebugMessage,
296
- messageId: 133,
297
- signal: abortController.signal,
298
- });
299
- expect(result).toEqual({
300
- processedQuery: [{ text: 'Check @nonexistent.txt and @ also' }],
301
- shouldProceed: true,
302
- });
303
- });
304
- describe('git-aware filtering', () => {
305
- beforeEach(async () => {
306
- await fsPromises.mkdir(path.join(testRootDir, '.git'), {
307
- recursive: true,
308
- });
309
- });
310
- it('should skip git-ignored files in @ commands', async () => {
311
- await createTestFile(path.join(testRootDir, '.gitignore'), 'node_modules/package.json');
312
- const gitIgnoredFile = await createTestFile(path.join(testRootDir, 'node_modules', 'package.json'), 'the file contents');
313
- const query = `@${gitIgnoredFile}`;
314
- const result = await handleAtCommand({
315
- query,
316
- config: mockConfig,
317
- addItem: mockAddItem,
318
- onDebugMessage: mockOnDebugMessage,
319
- messageId: 200,
320
- signal: abortController.signal,
321
- });
322
- expect(result).toEqual({
323
- processedQuery: [{ text: query }],
324
- shouldProceed: true,
325
- });
326
- expect(mockOnDebugMessage).toHaveBeenCalledWith(`Path ${gitIgnoredFile} is git-ignored and will be skipped.`);
327
- expect(mockOnDebugMessage).toHaveBeenCalledWith(`Ignored 1 files:\nGit-ignored: ${gitIgnoredFile}`);
328
- });
329
- it('should process non-git-ignored files normally', async () => {
330
- await createTestFile(path.join(testRootDir, '.gitignore'), 'node_modules/package.json');
331
- const validFile = await createTestFile(path.join(testRootDir, 'src', 'index.ts'), 'console.log("Hello world");');
332
- const query = `@${validFile}`;
333
- const result = await handleAtCommand({
334
- query,
335
- config: mockConfig,
336
- addItem: mockAddItem,
337
- onDebugMessage: mockOnDebugMessage,
338
- messageId: 201,
339
- signal: abortController.signal,
340
- });
341
- expect(result).toEqual({
342
- processedQuery: [
343
- { text: `@${validFile}` },
344
- { text: '\n--- Content from referenced files ---' },
345
- { text: `\nContent from @${validFile}:\n` },
346
- { text: 'console.log("Hello world");' },
347
- { text: '\n--- End of content ---' },
348
- ],
349
- shouldProceed: true,
350
- });
351
- });
352
- it('should handle mixed git-ignored and valid files', async () => {
353
- await createTestFile(path.join(testRootDir, '.gitignore'), '.env');
354
- const validFile = await createTestFile(path.join(testRootDir, 'README.md'), '# Project README');
355
- const gitIgnoredFile = await createTestFile(path.join(testRootDir, '.env'), 'SECRET=123');
356
- const query = `@${validFile} @${gitIgnoredFile}`;
357
- const result = await handleAtCommand({
358
- query,
359
- config: mockConfig,
360
- addItem: mockAddItem,
361
- onDebugMessage: mockOnDebugMessage,
362
- messageId: 202,
363
- signal: abortController.signal,
364
- });
365
- expect(result).toEqual({
366
- processedQuery: [
367
- { text: `@${validFile} @${gitIgnoredFile}` },
368
- { text: '\n--- Content from referenced files ---' },
369
- { text: `\nContent from @${validFile}:\n` },
370
- { text: '# Project README' },
371
- { text: '\n--- End of content ---' },
372
- ],
373
- shouldProceed: true,
374
- });
375
- expect(mockOnDebugMessage).toHaveBeenCalledWith(`Path ${gitIgnoredFile} is git-ignored and will be skipped.`);
376
- expect(mockOnDebugMessage).toHaveBeenCalledWith(`Ignored 1 files:\nGit-ignored: ${gitIgnoredFile}`);
377
- });
378
- it('should always ignore .git directory files', async () => {
379
- const gitFile = await createTestFile(path.join(testRootDir, '.git', 'config'), '[core]\n\trepositoryformatversion = 0\n');
380
- const query = `@${gitFile}`;
381
- const result = await handleAtCommand({
382
- query,
383
- config: mockConfig,
384
- addItem: mockAddItem,
385
- onDebugMessage: mockOnDebugMessage,
386
- messageId: 203,
387
- signal: abortController.signal,
388
- });
389
- expect(result).toEqual({
390
- processedQuery: [{ text: query }],
391
- shouldProceed: true,
392
- });
393
- expect(mockOnDebugMessage).toHaveBeenCalledWith(`Path ${gitFile} is git-ignored and will be skipped.`);
394
- expect(mockOnDebugMessage).toHaveBeenCalledWith(`Ignored 1 files:\nGit-ignored: ${gitFile}`);
395
- });
396
- });
397
- describe('when recursive file search is disabled', () => {
398
- beforeEach(() => {
399
- vi.mocked(mockConfig.getEnableRecursiveFileSearch).mockReturnValue(false);
400
- });
401
- it('should not use glob search for a nonexistent file', async () => {
402
- const invalidFile = 'nonexistent.txt';
403
- const query = `@${invalidFile}`;
404
- const result = await handleAtCommand({
405
- query,
406
- config: mockConfig,
407
- addItem: mockAddItem,
408
- onDebugMessage: mockOnDebugMessage,
409
- messageId: 300,
410
- signal: abortController.signal,
411
- });
412
- expect(mockOnDebugMessage).toHaveBeenCalledWith(`Glob tool not found. Path ${invalidFile} will be skipped.`);
413
- expect(result.processedQuery).toEqual([{ text: query }]);
414
- expect(result.shouldProceed).toBe(true);
415
- });
416
- });
417
- describe('gemini-ignore filtering', () => {
418
- it('should skip gemini-ignored files in @ commands', async () => {
419
- await createTestFile(path.join(testRootDir, '.geminiignore'), 'build/output.js');
420
- const geminiIgnoredFile = await createTestFile(path.join(testRootDir, 'build', 'output.js'), 'console.log("Hello");');
421
- const query = `@${geminiIgnoredFile}`;
422
- const result = await handleAtCommand({
423
- query,
424
- config: mockConfig,
425
- addItem: mockAddItem,
426
- onDebugMessage: mockOnDebugMessage,
427
- messageId: 204,
428
- signal: abortController.signal,
429
- });
430
- expect(result).toEqual({
431
- processedQuery: [{ text: query }],
432
- shouldProceed: true,
433
- });
434
- expect(mockOnDebugMessage).toHaveBeenCalledWith(`Path ${geminiIgnoredFile} is gemini-ignored and will be skipped.`);
435
- expect(mockOnDebugMessage).toHaveBeenCalledWith(`Ignored 1 files:\nGemini-ignored: ${geminiIgnoredFile}`);
436
- });
437
- });
438
- it('should process non-ignored files when .geminiignore is present', async () => {
439
- await createTestFile(path.join(testRootDir, '.geminiignore'), 'build/output.js');
440
- const validFile = await createTestFile(path.join(testRootDir, 'src', 'index.ts'), 'console.log("Hello world");');
441
- const query = `@${validFile}`;
442
- const result = await handleAtCommand({
443
- query,
444
- config: mockConfig,
445
- addItem: mockAddItem,
446
- onDebugMessage: mockOnDebugMessage,
447
- messageId: 205,
448
- signal: abortController.signal,
449
- });
450
- expect(result).toEqual({
451
- processedQuery: [
452
- { text: `@${validFile}` },
453
- { text: '\n--- Content from referenced files ---' },
454
- { text: `\nContent from @${validFile}:\n` },
455
- { text: 'console.log("Hello world");' },
456
- { text: '\n--- End of content ---' },
457
- ],
458
- shouldProceed: true,
459
- });
460
- });
461
- it('should handle mixed gemini-ignored and valid files', async () => {
462
- await createTestFile(path.join(testRootDir, '.geminiignore'), 'dist/bundle.js');
463
- const validFile = await createTestFile(path.join(testRootDir, 'src', 'main.ts'), '// Main application entry');
464
- const geminiIgnoredFile = await createTestFile(path.join(testRootDir, 'dist', 'bundle.js'), 'console.log("bundle");');
465
- const query = `@${validFile} @${geminiIgnoredFile}`;
466
- const result = await handleAtCommand({
467
- query,
468
- config: mockConfig,
469
- addItem: mockAddItem,
470
- onDebugMessage: mockOnDebugMessage,
471
- messageId: 206,
472
- signal: abortController.signal,
473
- });
474
- expect(result).toEqual({
475
- processedQuery: [
476
- { text: `@${validFile} @${geminiIgnoredFile}` },
477
- { text: '\n--- Content from referenced files ---' },
478
- { text: `\nContent from @${validFile}:\n` },
479
- { text: '// Main application entry' },
480
- { text: '\n--- End of content ---' },
481
- ],
482
- shouldProceed: true,
483
- });
484
- expect(mockOnDebugMessage).toHaveBeenCalledWith(`Path ${geminiIgnoredFile} is gemini-ignored and will be skipped.`);
485
- expect(mockOnDebugMessage).toHaveBeenCalledWith(`Ignored 1 files:\nGemini-ignored: ${geminiIgnoredFile}`);
486
- });
487
- describe('punctuation termination in @ commands', () => {
488
- const punctuationTestCases = [
489
- {
490
- name: 'comma',
491
- fileName: 'test.txt',
492
- fileContent: 'File content here',
493
- queryTemplate: (filePath) => `Look at @${filePath}, then explain it.`,
494
- messageId: 400,
495
- },
496
- {
497
- name: 'period',
498
- fileName: 'readme.md',
499
- fileContent: 'File content here',
500
- queryTemplate: (filePath) => `Check @${filePath}. What does it say?`,
501
- messageId: 401,
502
- },
503
- {
504
- name: 'semicolon',
505
- fileName: 'example.js',
506
- fileContent: 'Code example',
507
- queryTemplate: (filePath) => `Review @${filePath}; check for bugs.`,
508
- messageId: 402,
509
- },
510
- {
511
- name: 'exclamation mark',
512
- fileName: 'important.txt',
513
- fileContent: 'Important content',
514
- queryTemplate: (filePath) => `Look at @${filePath}! This is critical.`,
515
- messageId: 403,
516
- },
517
- {
518
- name: 'question mark',
519
- fileName: 'config.json',
520
- fileContent: 'Config settings',
521
- queryTemplate: (filePath) => `What is in @${filePath}? Please explain.`,
522
- messageId: 404,
523
- },
524
- {
525
- name: 'opening parenthesis',
526
- fileName: 'func.ts',
527
- fileContent: 'Function definition',
528
- queryTemplate: (filePath) => `Analyze @${filePath}(the main function).`,
529
- messageId: 405,
530
- },
531
- {
532
- name: 'closing parenthesis',
533
- fileName: 'data.json',
534
- fileContent: 'Test data',
535
- queryTemplate: (filePath) => `Use data from @${filePath}) for testing.`,
536
- messageId: 406,
537
- },
538
- {
539
- name: 'opening square bracket',
540
- fileName: 'array.js',
541
- fileContent: 'Array data',
542
- queryTemplate: (filePath) => `Check @${filePath}[0] for the first element.`,
543
- messageId: 407,
544
- },
545
- {
546
- name: 'closing square bracket',
547
- fileName: 'list.md',
548
- fileContent: 'List content',
549
- queryTemplate: (filePath) => `Review item @${filePath}] from the list.`,
550
- messageId: 408,
551
- },
552
- {
553
- name: 'opening curly brace',
554
- fileName: 'object.ts',
555
- fileContent: 'Object definition',
556
- queryTemplate: (filePath) => `Parse @${filePath}{prop1: value1}.`,
557
- messageId: 409,
558
- },
559
- {
560
- name: 'closing curly brace',
561
- fileName: 'config.yaml',
562
- fileContent: 'Configuration',
563
- queryTemplate: (filePath) => `Use settings from @${filePath}} for deployment.`,
564
- messageId: 410,
565
- },
566
- ];
567
- it.each(punctuationTestCases)('should terminate @path at $name', async ({ fileName, fileContent, queryTemplate, messageId }) => {
568
- const filePath = await createTestFile(path.join(testRootDir, fileName), fileContent);
569
- const query = queryTemplate(filePath);
570
- const result = await handleAtCommand({
571
- query,
572
- config: mockConfig,
573
- addItem: mockAddItem,
574
- onDebugMessage: mockOnDebugMessage,
575
- messageId,
576
- signal: abortController.signal,
577
- });
578
- expect(result).toEqual({
579
- processedQuery: [
580
- { text: query },
581
- { text: '\n--- Content from referenced files ---' },
582
- { text: `\nContent from @${filePath}:\n` },
583
- { text: fileContent },
584
- { text: '\n--- End of content ---' },
585
- ],
586
- shouldProceed: true,
587
- });
588
- });
589
- it('should handle multiple @paths terminated by different punctuation', async () => {
590
- const content1 = 'First file';
591
- const file1Path = await createTestFile(path.join(testRootDir, 'first.txt'), content1);
592
- const content2 = 'Second file';
593
- const file2Path = await createTestFile(path.join(testRootDir, 'second.txt'), content2);
594
- const query = `Compare @${file1Path}, @${file2Path}; what's different?`;
595
- const result = await handleAtCommand({
596
- query,
597
- config: mockConfig,
598
- addItem: mockAddItem,
599
- onDebugMessage: mockOnDebugMessage,
600
- messageId: 411,
601
- signal: abortController.signal,
602
- });
603
- expect(result).toEqual({
604
- processedQuery: [
605
- { text: `Compare @${file1Path}, @${file2Path}; what's different?` },
606
- { text: '\n--- Content from referenced files ---' },
607
- { text: `\nContent from @${file1Path}:\n` },
608
- { text: content1 },
609
- { text: `\nContent from @${file2Path}:\n` },
610
- { text: content2 },
611
- { text: '\n--- End of content ---' },
612
- ],
613
- shouldProceed: true,
614
- });
615
- });
616
- it('should still handle escaped spaces in paths before punctuation', async () => {
617
- const fileContent = 'Spaced file content';
618
- const filePath = await createTestFile(path.join(testRootDir, 'spaced file.txt'), fileContent);
619
- const escapedPath = path.join(testRootDir, 'spaced\\ file.txt');
620
- const query = `Check @${escapedPath}, it has spaces.`;
621
- const result = await handleAtCommand({
622
- query,
623
- config: mockConfig,
624
- addItem: mockAddItem,
625
- onDebugMessage: mockOnDebugMessage,
626
- messageId: 412,
627
- signal: abortController.signal,
628
- });
629
- expect(result).toEqual({
630
- processedQuery: [
631
- { text: `Check @${filePath}, it has spaces.` },
632
- { text: '\n--- Content from referenced files ---' },
633
- { text: `\nContent from @${filePath}:\n` },
634
- { text: fileContent },
635
- { text: '\n--- End of content ---' },
636
- ],
637
- shouldProceed: true,
638
- });
639
- });
640
- it('should not break file paths with periods in extensions', async () => {
641
- const fileContent = 'TypeScript content';
642
- const filePath = await createTestFile(path.join(testRootDir, 'example.d.ts'), fileContent);
643
- const query = `Analyze @${filePath} for type definitions.`;
644
- const result = await handleAtCommand({
645
- query,
646
- config: mockConfig,
647
- addItem: mockAddItem,
648
- onDebugMessage: mockOnDebugMessage,
649
- messageId: 413,
650
- signal: abortController.signal,
651
- });
652
- expect(result).toEqual({
653
- processedQuery: [
654
- { text: `Analyze @${filePath} for type definitions.` },
655
- { text: '\n--- Content from referenced files ---' },
656
- { text: `\nContent from @${filePath}:\n` },
657
- { text: fileContent },
658
- { text: '\n--- End of content ---' },
659
- ],
660
- shouldProceed: true,
661
- });
662
- });
663
- it('should handle file paths ending with period followed by space', async () => {
664
- const fileContent = 'Config content';
665
- const filePath = await createTestFile(path.join(testRootDir, 'config.json'), fileContent);
666
- const query = `Check @${filePath}. This file contains settings.`;
667
- const result = await handleAtCommand({
668
- query,
669
- config: mockConfig,
670
- addItem: mockAddItem,
671
- onDebugMessage: mockOnDebugMessage,
672
- messageId: 414,
673
- signal: abortController.signal,
674
- });
675
- expect(result).toEqual({
676
- processedQuery: [
677
- { text: `Check @${filePath}. This file contains settings.` },
678
- { text: '\n--- Content from referenced files ---' },
679
- { text: `\nContent from @${filePath}:\n` },
680
- { text: fileContent },
681
- { text: '\n--- End of content ---' },
682
- ],
683
- shouldProceed: true,
684
- });
685
- });
686
- it('should handle comma termination with complex file paths', async () => {
687
- const fileContent = 'Package info';
688
- const filePath = await createTestFile(path.join(testRootDir, 'package.json'), fileContent);
689
- const query = `Review @${filePath}, then check dependencies.`;
690
- const result = await handleAtCommand({
691
- query,
692
- config: mockConfig,
693
- addItem: mockAddItem,
694
- onDebugMessage: mockOnDebugMessage,
695
- messageId: 415,
696
- signal: abortController.signal,
697
- });
698
- expect(result).toEqual({
699
- processedQuery: [
700
- { text: `Review @${filePath}, then check dependencies.` },
701
- { text: '\n--- Content from referenced files ---' },
702
- { text: `\nContent from @${filePath}:\n` },
703
- { text: fileContent },
704
- { text: '\n--- End of content ---' },
705
- ],
706
- shouldProceed: true,
707
- });
708
- });
709
- it('should not terminate at period within file name', async () => {
710
- const fileContent = 'Version info';
711
- const filePath = await createTestFile(path.join(testRootDir, 'version.1.2.3.txt'), fileContent);
712
- const query = `Check @${filePath} contains version information.`;
713
- const result = await handleAtCommand({
714
- query,
715
- config: mockConfig,
716
- addItem: mockAddItem,
717
- onDebugMessage: mockOnDebugMessage,
718
- messageId: 416,
719
- signal: abortController.signal,
720
- });
721
- expect(result).toEqual({
722
- processedQuery: [
723
- { text: `Check @${filePath} contains version information.` },
724
- { text: '\n--- Content from referenced files ---' },
725
- { text: `\nContent from @${filePath}:\n` },
726
- { text: fileContent },
727
- { text: '\n--- End of content ---' },
728
- ],
729
- shouldProceed: true,
730
- });
731
- });
732
- it('should handle end of string termination for period and comma', async () => {
733
- const fileContent = 'End file content';
734
- const filePath = await createTestFile(path.join(testRootDir, 'end.txt'), fileContent);
735
- const query = `Show me @${filePath}.`;
736
- const result = await handleAtCommand({
737
- query,
738
- config: mockConfig,
739
- addItem: mockAddItem,
740
- onDebugMessage: mockOnDebugMessage,
741
- messageId: 417,
742
- signal: abortController.signal,
743
- });
744
- expect(result).toEqual({
745
- processedQuery: [
746
- { text: `Show me @${filePath}.` },
747
- { text: '\n--- Content from referenced files ---' },
748
- { text: `\nContent from @${filePath}:\n` },
749
- { text: fileContent },
750
- { text: '\n--- End of content ---' },
751
- ],
752
- shouldProceed: true,
753
- });
754
- });
755
- it('should handle files with special characters in names', async () => {
756
- const fileContent = 'File with special chars content';
757
- const filePath = await createTestFile(path.join(testRootDir, 'file$with&special#chars.txt'), fileContent);
758
- const query = `Check @${filePath} for content.`;
759
- const result = await handleAtCommand({
760
- query,
761
- config: mockConfig,
762
- addItem: mockAddItem,
763
- onDebugMessage: mockOnDebugMessage,
764
- messageId: 418,
765
- signal: abortController.signal,
766
- });
767
- expect(result).toEqual({
768
- processedQuery: [
769
- { text: `Check @${filePath} for content.` },
770
- { text: '\n--- Content from referenced files ---' },
771
- { text: `\nContent from @${filePath}:\n` },
772
- { text: fileContent },
773
- { text: '\n--- End of content ---' },
774
- ],
775
- shouldProceed: true,
776
- });
777
- });
778
- it('should handle basic file names without special characters', async () => {
779
- const fileContent = 'Basic file content';
780
- const filePath = await createTestFile(path.join(testRootDir, 'basicfile.txt'), fileContent);
781
- const query = `Check @${filePath} please.`;
782
- const result = await handleAtCommand({
783
- query,
784
- config: mockConfig,
785
- addItem: mockAddItem,
786
- onDebugMessage: mockOnDebugMessage,
787
- messageId: 421,
788
- signal: abortController.signal,
789
- });
790
- expect(result).toEqual({
791
- processedQuery: [
792
- { text: `Check @${filePath} please.` },
793
- { text: '\n--- Content from referenced files ---' },
794
- { text: `\nContent from @${filePath}:\n` },
795
- { text: fileContent },
796
- { text: '\n--- End of content ---' },
797
- ],
798
- shouldProceed: true,
799
- });
800
- });
801
- });
802
- it("should not add the user's turn to history, as that is the caller's responsibility", async () => {
803
- // Arrange
804
- const fileContent = 'This is the file content.';
805
- const filePath = await createTestFile(path.join(testRootDir, 'path', 'to', 'another-file.txt'), fileContent);
806
- const query = `A query with @${filePath}`;
807
- // Act
808
- await handleAtCommand({
809
- query,
810
- config: mockConfig,
811
- addItem: mockAddItem,
812
- onDebugMessage: mockOnDebugMessage,
813
- messageId: 999,
814
- signal: abortController.signal,
815
- });
816
- // Assert
817
- // It SHOULD be called for the tool_group
818
- expect(mockAddItem).toHaveBeenCalledWith(expect.objectContaining({ type: 'tool_group' }), 999);
819
- // It should NOT have been called for the user turn
820
- const userTurnCalls = mockAddItem.mock.calls.filter((call) => call[0].type === 'user');
821
- expect(userTurnCalls).toHaveLength(0);
822
- });
823
- });
824
- //# sourceMappingURL=atCommandProcessor.test.js.map