@machina.ai/cell-cli 1.60.0-rc1 → 1.64.0-rc1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (270) hide show
  1. package/dist/index.js +7 -0
  2. package/dist/index.js.map +1 -1
  3. package/dist/package.json +3 -3
  4. package/dist/src/acp/acpResume.test.js +50 -0
  5. package/dist/src/acp/acpResume.test.js.map +1 -1
  6. package/dist/src/acp/acpRpcDispatcher.d.ts +1 -1
  7. package/dist/src/acp/acpRpcDispatcher.js +2 -2
  8. package/dist/src/acp/acpRpcDispatcher.js.map +1 -1
  9. package/dist/src/acp/acpRpcDispatcher.test.js +9 -0
  10. package/dist/src/acp/acpRpcDispatcher.test.js.map +1 -1
  11. package/dist/src/acp/acpSession.d.ts +1 -1
  12. package/dist/src/acp/acpSession.js +90 -80
  13. package/dist/src/acp/acpSession.js.map +1 -1
  14. package/dist/src/acp/acpSession.test.js +279 -2
  15. package/dist/src/acp/acpSession.test.js.map +1 -1
  16. package/dist/src/acp/acpSessionManager.d.ts +2 -2
  17. package/dist/src/acp/acpSessionManager.js +165 -73
  18. package/dist/src/acp/acpSessionManager.js.map +1 -1
  19. package/dist/src/acp/acpSessionManager.test.js +204 -1
  20. package/dist/src/acp/acpSessionManager.test.js.map +1 -1
  21. package/dist/src/acp/acpUtils.js +5 -3
  22. package/dist/src/acp/acpUtils.js.map +1 -1
  23. package/dist/src/config/config.js +1 -0
  24. package/dist/src/config/config.js.map +1 -1
  25. package/dist/src/config/extension-manager.js +8 -5
  26. package/dist/src/config/extension-manager.js.map +1 -1
  27. package/dist/src/config/extension-manager.test.js +27 -0
  28. package/dist/src/config/extension-manager.test.js.map +1 -1
  29. package/dist/src/config/extensions/update.js +7 -2
  30. package/dist/src/config/extensions/update.js.map +1 -1
  31. package/dist/src/config/extensions/update.test.js +21 -0
  32. package/dist/src/config/extensions/update.test.js.map +1 -1
  33. package/dist/src/config/mcp/mcpServerEnablement.d.ts +5 -0
  34. package/dist/src/config/mcp/mcpServerEnablement.js +26 -3
  35. package/dist/src/config/mcp/mcpServerEnablement.js.map +1 -1
  36. package/dist/src/config/mcp/mcpServerEnablement.test.js +27 -0
  37. package/dist/src/config/mcp/mcpServerEnablement.test.js.map +1 -1
  38. package/dist/src/config/settings.test.js +22 -0
  39. package/dist/src/config/settings.test.js.map +1 -1
  40. package/dist/src/config/settingsSchema.d.ts +9 -0
  41. package/dist/src/config/settingsSchema.js +37 -1
  42. package/dist/src/config/settingsSchema.js.map +1 -1
  43. package/dist/src/core/auth.test.js +1 -1
  44. package/dist/src/core/auth.test.js.map +1 -1
  45. package/dist/src/gemini.js +110 -18
  46. package/dist/src/gemini.js.map +1 -1
  47. package/dist/src/gemini_uncaught.test.d.ts +6 -0
  48. package/dist/src/gemini_uncaught.test.js +91 -0
  49. package/dist/src/gemini_uncaught.test.js.map +1 -0
  50. package/dist/src/generated/git-commit.d.ts +2 -2
  51. package/dist/src/generated/git-commit.js +2 -2
  52. package/dist/src/patches/http-proxy-agent.d.ts +4 -1
  53. package/dist/src/patches/http-proxy-agent.js +38 -2
  54. package/dist/src/patches/http-proxy-agent.js.map +1 -1
  55. package/dist/src/patches/https-proxy-agent.d.ts +4 -1
  56. package/dist/src/patches/https-proxy-agent.js +38 -2
  57. package/dist/src/patches/https-proxy-agent.js.map +1 -1
  58. package/dist/src/services/FileCommandLoader.js +3 -5
  59. package/dist/src/services/FileCommandLoader.js.map +1 -1
  60. package/dist/src/services/FileCommandLoader.test.js +68 -6
  61. package/dist/src/services/FileCommandLoader.test.js.map +1 -1
  62. package/dist/src/ui/AppContainer.js +42 -39
  63. package/dist/src/ui/AppContainer.js.map +1 -1
  64. package/dist/src/ui/AppContainer.test.js +30 -0
  65. package/dist/src/ui/AppContainer.test.js.map +1 -1
  66. package/dist/src/ui/auth/AuthDialog.js +11 -3
  67. package/dist/src/ui/auth/AuthDialog.js.map +1 -1
  68. package/dist/src/ui/auth/useAuth.test.js +1 -1
  69. package/dist/src/ui/auth/useAuth.test.js.map +1 -1
  70. package/dist/src/ui/commands/bugCommand.js +3 -3
  71. package/dist/src/ui/commands/bugCommand.js.map +1 -1
  72. package/dist/src/ui/commands/bugCommand.test.js +44 -0
  73. package/dist/src/ui/commands/bugCommand.test.js.map +1 -1
  74. package/dist/src/ui/commands/bugMemoryCommand.js +2 -2
  75. package/dist/src/ui/commands/bugMemoryCommand.js.map +1 -1
  76. package/dist/src/ui/commands/bugMemoryCommand.test.js +12 -0
  77. package/dist/src/ui/commands/bugMemoryCommand.test.js.map +1 -1
  78. package/dist/src/ui/components/AsciiArt.d.ts +6 -6
  79. package/dist/src/ui/components/AsciiArt.js +6 -6
  80. package/dist/src/ui/components/AskUserDialog.js +7 -2
  81. package/dist/src/ui/components/AskUserDialog.js.map +1 -1
  82. package/dist/src/ui/components/AskUserDialog.test.js +33 -0
  83. package/dist/src/ui/components/AskUserDialog.test.js.map +1 -1
  84. package/dist/src/ui/components/Composer.js +4 -4
  85. package/dist/src/ui/components/Composer.js.map +1 -1
  86. package/dist/src/ui/components/Composer.test.js +50 -2
  87. package/dist/src/ui/components/Composer.test.js.map +1 -1
  88. package/dist/src/ui/components/InputPrompt.js +16 -10
  89. package/dist/src/ui/components/InputPrompt.js.map +1 -1
  90. package/dist/src/ui/components/InputPrompt.test.js +103 -7
  91. package/dist/src/ui/components/InputPrompt.test.js.map +1 -1
  92. package/dist/src/ui/components/LoadingIndicator.d.ts +1 -0
  93. package/dist/src/ui/components/LoadingIndicator.js +13 -11
  94. package/dist/src/ui/components/LoadingIndicator.js.map +1 -1
  95. package/dist/src/ui/components/LoadingIndicator.test.js +29 -0
  96. package/dist/src/ui/components/LoadingIndicator.test.js.map +1 -1
  97. package/dist/src/ui/components/MainContent.js +79 -14
  98. package/dist/src/ui/components/MainContent.js.map +1 -1
  99. package/dist/src/ui/components/MainContent.test.js +218 -5
  100. package/dist/src/ui/components/MainContent.test.js.map +1 -1
  101. package/dist/src/ui/components/ProgressBar.js +4 -3
  102. package/dist/src/ui/components/ProgressBar.js.map +1 -1
  103. package/dist/src/ui/components/ProgressBar.test.js +12 -0
  104. package/dist/src/ui/components/ProgressBar.test.js.map +1 -1
  105. package/dist/src/ui/components/RewindViewer.js +2 -1
  106. package/dist/src/ui/components/RewindViewer.js.map +1 -1
  107. package/dist/src/ui/components/RewindViewer.test.js +38 -0
  108. package/dist/src/ui/components/RewindViewer.test.js.map +1 -1
  109. package/dist/src/ui/components/StatusRow.d.ts +2 -0
  110. package/dist/src/ui/components/StatusRow.js +11 -6
  111. package/dist/src/ui/components/StatusRow.js.map +1 -1
  112. package/dist/src/ui/components/StatusRow.test.js +158 -0
  113. package/dist/src/ui/components/StatusRow.test.js.map +1 -1
  114. package/dist/src/ui/components/ToolConfirmationQueue.js +4 -2
  115. package/dist/src/ui/components/ToolConfirmationQueue.js.map +1 -1
  116. package/dist/src/ui/components/ToolConfirmationQueue.test.js +30 -0
  117. package/dist/src/ui/components/ToolConfirmationQueue.test.js.map +1 -1
  118. package/dist/src/ui/components/messages/DenseToolMessage.js +5 -5
  119. package/dist/src/ui/components/messages/DenseToolMessage.js.map +1 -1
  120. package/dist/src/ui/components/messages/DenseToolMessage.test.js +13 -0
  121. package/dist/src/ui/components/messages/DenseToolMessage.test.js.map +1 -1
  122. package/dist/src/ui/components/messages/DiffRenderer.d.ts +1 -0
  123. package/dist/src/ui/components/messages/DiffRenderer.js +16 -8
  124. package/dist/src/ui/components/messages/DiffRenderer.js.map +1 -1
  125. package/dist/src/ui/components/messages/DiffRenderer.test.js +42 -0
  126. package/dist/src/ui/components/messages/DiffRenderer.test.js.map +1 -1
  127. package/dist/src/ui/components/messages/ShellToolMessage.js +4 -3
  128. package/dist/src/ui/components/messages/ShellToolMessage.js.map +1 -1
  129. package/dist/src/ui/components/messages/ToolConfirmationMessage.js +74 -16
  130. package/dist/src/ui/components/messages/ToolConfirmationMessage.js.map +1 -1
  131. package/dist/src/ui/components/messages/ToolConfirmationMessage.test.js +80 -7
  132. package/dist/src/ui/components/messages/ToolConfirmationMessage.test.js.map +1 -1
  133. package/dist/src/ui/components/messages/ToolGroupMessage.js +6 -5
  134. package/dist/src/ui/components/messages/ToolGroupMessage.js.map +1 -1
  135. package/dist/src/ui/components/messages/ToolMessage.js +2 -1
  136. package/dist/src/ui/components/messages/ToolMessage.js.map +1 -1
  137. package/dist/src/ui/components/messages/ToolResultDisplay.js +11 -8
  138. package/dist/src/ui/components/messages/ToolResultDisplay.js.map +1 -1
  139. package/dist/src/ui/components/messages/ToolShared.js +5 -4
  140. package/dist/src/ui/components/messages/ToolShared.js.map +1 -1
  141. package/dist/src/ui/components/shared/HalfLinePaddedBox.js +4 -2
  142. package/dist/src/ui/components/shared/HalfLinePaddedBox.js.map +1 -1
  143. package/dist/src/ui/components/shared/HalfLinePaddedBox.test.js +8 -0
  144. package/dist/src/ui/components/shared/HalfLinePaddedBox.test.js.map +1 -1
  145. package/dist/src/ui/components/shared/SearchableList.js +1 -1
  146. package/dist/src/ui/components/shared/SearchableList.js.map +1 -1
  147. package/dist/src/ui/components/shared/SearchableList.test.js +13 -0
  148. package/dist/src/ui/components/shared/SearchableList.test.js.map +1 -1
  149. package/dist/src/ui/components/shared/TextInput.js +2 -2
  150. package/dist/src/ui/components/shared/TextInput.js.map +1 -1
  151. package/dist/src/ui/components/views/ExtensionRegistryView.test.js +2 -0
  152. package/dist/src/ui/components/views/ExtensionRegistryView.test.js.map +1 -1
  153. package/dist/src/ui/contexts/KeypressContext.js +20 -2
  154. package/dist/src/ui/contexts/KeypressContext.js.map +1 -1
  155. package/dist/src/ui/contexts/KeypressContext.test.js +24 -0
  156. package/dist/src/ui/contexts/KeypressContext.test.js.map +1 -1
  157. package/dist/src/ui/contexts/UIStateContext.d.ts +1 -0
  158. package/dist/src/ui/contexts/UIStateContext.js.map +1 -1
  159. package/dist/src/ui/emergency-stop.test.d.ts +6 -0
  160. package/dist/src/ui/emergency-stop.test.js +116 -0
  161. package/dist/src/ui/emergency-stop.test.js.map +1 -0
  162. package/dist/src/ui/hooks/atCommandProcessor.d.ts +8 -5
  163. package/dist/src/ui/hooks/atCommandProcessor.js +47 -16
  164. package/dist/src/ui/hooks/atCommandProcessor.js.map +1 -1
  165. package/dist/src/ui/hooks/atCommandProcessor.test.js +160 -0
  166. package/dist/src/ui/hooks/atCommandProcessor.test.js.map +1 -1
  167. package/dist/src/ui/hooks/useComposerStatus.d.ts +1 -0
  168. package/dist/src/ui/hooks/useComposerStatus.js +1 -0
  169. package/dist/src/ui/hooks/useComposerStatus.js.map +1 -1
  170. package/dist/src/ui/hooks/useFocus.js +1 -0
  171. package/dist/src/ui/hooks/useFocus.js.map +1 -1
  172. package/dist/src/ui/hooks/useFolderTrust.js +16 -16
  173. package/dist/src/ui/hooks/useFolderTrust.js.map +1 -1
  174. package/dist/src/ui/hooks/useFolderTrust.test.js +186 -3
  175. package/dist/src/ui/hooks/useFolderTrust.test.js.map +1 -1
  176. package/dist/src/ui/hooks/useGeminiStream.js +4 -12
  177. package/dist/src/ui/hooks/useGeminiStream.js.map +1 -1
  178. package/dist/src/ui/hooks/useGeminiStream.test.js +134 -2
  179. package/dist/src/ui/hooks/useGeminiStream.test.js.map +1 -1
  180. package/dist/src/ui/hooks/useLoadingIndicator.d.ts +1 -0
  181. package/dist/src/ui/hooks/useLoadingIndicator.js +1 -0
  182. package/dist/src/ui/hooks/useLoadingIndicator.js.map +1 -1
  183. package/dist/src/ui/hooks/useLoadingIndicator.test.js +2 -0
  184. package/dist/src/ui/hooks/useLoadingIndicator.test.js.map +1 -1
  185. package/dist/src/ui/hooks/useQuotaAndFallback.js +2 -2
  186. package/dist/src/ui/hooks/useQuotaAndFallback.js.map +1 -1
  187. package/dist/src/ui/hooks/useSelectionList.js +24 -1
  188. package/dist/src/ui/hooks/useSelectionList.js.map +1 -1
  189. package/dist/src/ui/hooks/useSelectionList.test.js +63 -1
  190. package/dist/src/ui/hooks/useSelectionList.test.js.map +1 -1
  191. package/dist/src/ui/utils/CodeColorizer.d.ts +1 -0
  192. package/dist/src/ui/utils/CodeColorizer.js +13 -7
  193. package/dist/src/ui/utils/CodeColorizer.js.map +1 -1
  194. package/dist/src/ui/utils/TableRenderer.js +3 -2
  195. package/dist/src/ui/utils/TableRenderer.js.map +1 -1
  196. package/dist/src/ui/utils/borderStyles.d.ts +1 -0
  197. package/dist/src/ui/utils/borderStyles.js +1 -0
  198. package/dist/src/ui/utils/borderStyles.js.map +1 -1
  199. package/dist/src/ui/utils/fileUtils.d.ts +4 -0
  200. package/dist/src/ui/utils/fileUtils.js +13 -0
  201. package/dist/src/ui/utils/fileUtils.js.map +1 -1
  202. package/dist/src/ui/utils/renderBorder.d.ts +27 -0
  203. package/dist/src/ui/utils/renderBorder.js +46 -0
  204. package/dist/src/ui/utils/renderBorder.js.map +1 -0
  205. package/dist/src/ui/utils/renderBorder.test.d.ts +6 -0
  206. package/dist/src/ui/utils/renderBorder.test.js +74 -0
  207. package/dist/src/ui/utils/renderBorder.test.js.map +1 -0
  208. package/dist/src/ui/utils/rewindFileOps.d.ts +9 -0
  209. package/dist/src/ui/utils/rewindFileOps.js +25 -1
  210. package/dist/src/ui/utils/rewindFileOps.js.map +1 -1
  211. package/dist/src/ui/utils/rewindFileOps.test.js +94 -1
  212. package/dist/src/ui/utils/rewindFileOps.test.js.map +1 -1
  213. package/dist/src/ui/utils/terminalCapabilityManager.js +7 -0
  214. package/dist/src/ui/utils/terminalCapabilityManager.js.map +1 -1
  215. package/dist/src/ui/utils/terminalCapabilityManager.stdin-flow.test.d.ts +6 -0
  216. package/dist/src/ui/utils/terminalCapabilityManager.stdin-flow.test.js +105 -0
  217. package/dist/src/ui/utils/terminalCapabilityManager.stdin-flow.test.js.map +1 -0
  218. package/dist/src/utils/commentJson.js +66 -5
  219. package/dist/src/utils/commentJson.js.map +1 -1
  220. package/dist/src/utils/commentJson.test.js +21 -0
  221. package/dist/src/utils/commentJson.test.js.map +1 -1
  222. package/dist/src/utils/handleAutoUpdate.test.js +2 -2
  223. package/dist/src/utils/persistentState.js +84 -15
  224. package/dist/src/utils/persistentState.js.map +1 -1
  225. package/dist/src/utils/persistentState.test.js +66 -9
  226. package/dist/src/utils/persistentState.test.js.map +1 -1
  227. package/dist/src/utils/persistentStateRecovery.test.d.ts +6 -0
  228. package/dist/src/utils/persistentStateRecovery.test.js +84 -0
  229. package/dist/src/utils/persistentStateRecovery.test.js.map +1 -0
  230. package/dist/src/utils/processUtils.d.ts +3 -1
  231. package/dist/src/utils/processUtils.js +26 -1
  232. package/dist/src/utils/processUtils.js.map +1 -1
  233. package/dist/src/utils/processUtils.test.js +58 -1
  234. package/dist/src/utils/processUtils.test.js.map +1 -1
  235. package/dist/src/utils/relaunch.js +7 -0
  236. package/dist/src/utils/relaunch.js.map +1 -1
  237. package/dist/src/utils/relaunch.test.js +16 -0
  238. package/dist/src/utils/relaunch.test.js.map +1 -1
  239. package/dist/src/utils/retry.d.ts +22 -0
  240. package/dist/src/utils/retry.js +54 -0
  241. package/dist/src/utils/retry.js.map +1 -0
  242. package/dist/src/utils/retry.test.d.ts +6 -0
  243. package/dist/src/utils/retry.test.js +141 -0
  244. package/dist/src/utils/retry.test.js.map +1 -0
  245. package/dist/src/utils/sandbox-macos-permissive-open.sb +36 -1
  246. package/dist/src/utils/sandbox-macos-permissive-proxied.sb +36 -1
  247. package/dist/src/utils/sandbox-macos-profiles.test.js +93 -0
  248. package/dist/src/utils/sandbox-macos-profiles.test.js.map +1 -1
  249. package/dist/src/utils/sandbox-macos-restrictive-open.sb +39 -1
  250. package/dist/src/utils/sandbox-macos-restrictive-proxied.sb +40 -1
  251. package/dist/src/utils/sandbox-macos-strict-open.sb +38 -2
  252. package/dist/src/utils/sandbox-macos-strict-proxied.sb +38 -2
  253. package/dist/src/utils/sandbox.js +120 -47
  254. package/dist/src/utils/sandbox.js.map +1 -1
  255. package/dist/src/utils/sandbox.test.js +312 -5
  256. package/dist/src/utils/sandbox.test.js.map +1 -1
  257. package/dist/src/utils/sandboxBuiltinProfiles.js +198 -8
  258. package/dist/src/utils/sandboxBuiltinProfiles.js.map +1 -1
  259. package/dist/src/utils/sandboxUtils.d.ts +11 -0
  260. package/dist/src/utils/sandboxUtils.js +150 -2
  261. package/dist/src/utils/sandboxUtils.js.map +1 -1
  262. package/dist/src/utils/sandboxUtils.test.js +257 -3
  263. package/dist/src/utils/sandboxUtils.test.js.map +1 -1
  264. package/dist/src/utils/sessionUtils.d.ts +21 -1
  265. package/dist/src/utils/sessionUtils.js +66 -2
  266. package/dist/src/utils/sessionUtils.js.map +1 -1
  267. package/dist/src/utils/sessionUtils.test.js +143 -0
  268. package/dist/src/utils/sessionUtils.test.js.map +1 -1
  269. package/dist/tsconfig.tsbuildinfo +1 -1
  270. package/package.json +3 -3
@@ -0,0 +1,116 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { describe, it, expect, vi, beforeEach, afterEach, } from 'vitest';
7
+ import { act } from 'react';
8
+ import { EventEmitter } from 'node:events';
9
+ import { useStdin } from 'ink';
10
+ import { renderHookWithProviders } from '../test-utils/render.js';
11
+ import { useKeypressContext, ESC_TIMEOUT, KeypressPriority, } from './contexts/KeypressContext.js';
12
+ // Mock ink's useStdin to feed custom stdin bytes
13
+ vi.mock('ink', async (importOriginal) => {
14
+ const original = await importOriginal();
15
+ return {
16
+ ...original,
17
+ useStdin: vi.fn(),
18
+ };
19
+ });
20
+ class MockStdin extends EventEmitter {
21
+ isTTY = true;
22
+ setRawMode = vi.fn();
23
+ on = this.addListener;
24
+ removeListener = super.removeListener;
25
+ resume = vi.fn();
26
+ pause = vi.fn();
27
+ write(text) {
28
+ this.emit('data', text);
29
+ }
30
+ }
31
+ describe('Emergency Stop & Input Handling Fixes (b/561556027)', () => {
32
+ let stdin;
33
+ const mockSetRawMode = vi.fn();
34
+ beforeEach(() => {
35
+ vi.clearAllMocks();
36
+ stdin = new MockStdin();
37
+ useStdin.mockReturnValue({
38
+ stdin,
39
+ setRawMode: mockSetRawMode,
40
+ });
41
+ });
42
+ describe('Fix 1: SGR Mouse Hijack & Stdin Race Condition Traps Emergency Ctrl+C', () => {
43
+ beforeEach(() => {
44
+ vi.useFakeTimers();
45
+ });
46
+ afterEach(() => {
47
+ vi.useRealTimers();
48
+ });
49
+ it('reliably emits Ctrl+C when an incomplete SGR mouse sequence was received prior to timeout', async () => {
50
+ const keyHandler = vi.fn();
51
+ const { result } = await renderHookWithProviders(() => useKeypressContext());
52
+ act(() => result.current.subscribe(keyHandler, KeypressPriority.High));
53
+ // 1. Terminal or touch event sends a fragmented SGR mouse sequence:
54
+ // \x1b[<0;10; (missing the row coordinate and terminator 'M' or 'm')
55
+ act(() => {
56
+ stdin.write('\x1b[<0;10;');
57
+ });
58
+ // 2. Timeout expires (ESC_TIMEOUT = 50ms)
59
+ await act(async () => {
60
+ await vi.advanceTimersByTimeAsync(ESC_TIMEOUT);
61
+ });
62
+ // 3. User attempts Emergency Stop by pressing Ctrl+C (\x03)
63
+ act(() => {
64
+ stdin.write('\x03');
65
+ });
66
+ // The application MUST receive a valid Ctrl+C key event to abort the agent.
67
+ expect(keyHandler).toHaveBeenCalledWith(expect.objectContaining({
68
+ name: 'c',
69
+ ctrl: true,
70
+ }));
71
+ });
72
+ });
73
+ describe('Fix 2: Runaway Agent "No Brakes" - Ctrl+C propagation during generation', () => {
74
+ it('allows Ctrl+C to propagate to cancellation handlers when generating even if text buffer has input', async () => {
75
+ const { result: contextResult } = await renderHookWithProviders(() => useKeypressContext());
76
+ const cancelOngoingRequestMock = vi.fn();
77
+ let isGenerating = true;
78
+ // Outer handler (simulating AppContainer or stream cancellation hook)
79
+ act(() => {
80
+ contextResult.current.subscribe((key) => {
81
+ if (key.ctrl && key.name === 'c') {
82
+ cancelOngoingRequestMock();
83
+ return true;
84
+ }
85
+ return false;
86
+ }, KeypressPriority.High);
87
+ });
88
+ // Inner handler (simulating InputPrompt mounted after AppContainer)
89
+ act(() => {
90
+ contextResult.current.subscribe((key) => {
91
+ // If generating, do not swallow Ctrl+C into local input buffer
92
+ if (isGenerating && key.ctrl && key.name === 'c') {
93
+ return false;
94
+ }
95
+ // Otherwise consume locally (simulating CLEAR_INPUT)
96
+ return true;
97
+ }, KeypressPriority.High);
98
+ });
99
+ // Press Ctrl+C while generating
100
+ act(() => {
101
+ stdin.write('\x03');
102
+ });
103
+ // cancelOngoingRequestMock MUST be called!
104
+ expect(cancelOngoingRequestMock).toHaveBeenCalledTimes(1);
105
+ // Now simulate generation finished (idle)
106
+ isGenerating = false;
107
+ cancelOngoingRequestMock.mockClear();
108
+ // Press Ctrl+C when idle: consumed locally by buffer handler
109
+ act(() => {
110
+ stdin.write('\x03');
111
+ });
112
+ expect(cancelOngoingRequestMock).not.toHaveBeenCalled();
113
+ });
114
+ });
115
+ });
116
+ //# sourceMappingURL=emergency-stop.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emergency-stop.test.js","sourceRoot":"","sources":["../../../src/ui/emergency-stop.test.tsx"],"names":[],"mappings":"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"}
@@ -18,12 +18,15 @@ export declare function unescapeLiteralAt(text: string): string;
18
18
  * Regex source for the path/command part of an @ reference.
19
19
  * It uses strict ASCII whitespace delimiters to allow Unicode characters like NNBSP in filenames.
20
20
  *
21
- * 1. "(?:[^"]*)" matches a double-quoted string (for Windows paths with spaces).
22
- * 2. \\. matches any escaped character (e.g., \ ).
23
- * 3. [^ \t\n\r,;!?()\[\]{}.] matches any character that is NOT a delimiter and NOT a period.
24
- * 4. \.(?!$|[ \t\n\r]) matches a period ONLY if it is NOT followed by whitespace or end-of-string.
21
+ * Either:
22
+ * 1. "(?:[^"\n\r]*)" - a double-quoted string (for paths with spaces, e.g. on Windows) without internal newlines.
23
+ * 2. An unquoted path consisting of escaped characters or non-delimiter characters (excluding quotes).
24
+ * 3. \.(?!$|[ \t\n\r]) matches a period ONLY if it is NOT followed by whitespace or end-of-string.
25
+ *
26
+ * Notably, a quoted string cannot be extended by unquoted characters, and unquoted paths cannot contain unescaped quotes.
27
+ * This prevents catastrophic multi-line matches when code like `import { x } from "@scope/pkg";` is processed (#29434).
25
28
  */
26
- export declare const AT_COMMAND_PATH_REGEX_SOURCE = "(?:(?:\"(?:[^\"]*)\")|(?:\\\\.|[^ \\t\\n\\r,;!?()\\[\\]{}.]|\\.(?!$|[ \\t\\n\\r])))+";
29
+ export declare const AT_COMMAND_PATH_REGEX_SOURCE = "(?:(?:\"[^\"\\n\\r]*\")|(?:\\\\.|[^ \\t\\n\\r,;!?()\\[\\]{}.\"'`]|\\.(?!$|[ \\t\\n\\r]))+)";
27
30
  interface HandleAtCommandParams {
28
31
  query: string;
29
32
  config: Config;
@@ -5,7 +5,7 @@
5
5
  */
6
6
  import * as path from 'node:path';
7
7
  import * as fs from 'node:fs';
8
- import { debugLogger, getErrorMessage, unescapePath, resolveToRealPath, fileExists, ReadManyFilesTool, REFERENCE_CONTENT_START, REFERENCE_CONTENT_END, CoreToolCallStatus, resolveAtCommandPath, } from '@google/gemini-cli-core';
8
+ import { debugLogger, getErrorMessage, unescapePath, resolveToRealPath, fileExists, ReadManyFilesTool, REFERENCE_CONTENT_START, REFERENCE_CONTENT_END, CoreToolCallStatus, resolveAtCommandPath, stripLineNumberSuffix, } from '@google/gemini-cli-core';
9
9
  import { Buffer } from 'node:buffer';
10
10
  const REF_CONTENT_HEADER = `\n${REFERENCE_CONTENT_START}`;
11
11
  const REF_CONTENT_FOOTER = `\n${REFERENCE_CONTENT_END}`;
@@ -31,12 +31,15 @@ export function unescapeLiteralAt(text) {
31
31
  * Regex source for the path/command part of an @ reference.
32
32
  * It uses strict ASCII whitespace delimiters to allow Unicode characters like NNBSP in filenames.
33
33
  *
34
- * 1. "(?:[^"]*)" matches a double-quoted string (for Windows paths with spaces).
35
- * 2. \\. matches any escaped character (e.g., \ ).
36
- * 3. [^ \t\n\r,;!?()\[\]{}.] matches any character that is NOT a delimiter and NOT a period.
37
- * 4. \.(?!$|[ \t\n\r]) matches a period ONLY if it is NOT followed by whitespace or end-of-string.
34
+ * Either:
35
+ * 1. "(?:[^"\n\r]*)" - a double-quoted string (for paths with spaces, e.g. on Windows) without internal newlines.
36
+ * 2. An unquoted path consisting of escaped characters or non-delimiter characters (excluding quotes).
37
+ * 3. \.(?!$|[ \t\n\r]) matches a period ONLY if it is NOT followed by whitespace or end-of-string.
38
+ *
39
+ * Notably, a quoted string cannot be extended by unquoted characters, and unquoted paths cannot contain unescaped quotes.
40
+ * This prevents catastrophic multi-line matches when code like `import { x } from "@scope/pkg";` is processed (#29434).
38
41
  */
39
- export const AT_COMMAND_PATH_REGEX_SOURCE = '(?:(?:"(?:[^"]*)")|(?:\\\\.|[^ \\t\\n\\r,;!?()\\[\\]{}.]|\\.(?!$|[ \\t\\n\\r])))+';
42
+ export const AT_COMMAND_PATH_REGEX_SOURCE = '(?:(?:"[^"\\n\\r]*")|(?:\\\\.|[^ \\t\\n\\r,;!?()\\[\\]{}."\'`]|\\.(?!$|[ \\t\\n\\r]))+)';
40
43
  /**
41
44
  * Parses a query string to find all '@<path>' commands and text segments.
42
45
  * Handles \ escaped spaces within paths.
@@ -116,8 +119,17 @@ export async function checkPermissions(query, config) {
116
119
  resolvedPathName = resolveToRealPath(path.resolve(config.getTargetDir(), pathName));
117
120
  }
118
121
  catch {
119
- // skip if resolveToRealPath errors out
120
- continue;
122
+ const strippedPath = stripLineNumberSuffix(pathName);
123
+ if (!strippedPath) {
124
+ continue;
125
+ }
126
+ try {
127
+ resolvedPathName = resolveToRealPath(path.resolve(config.getTargetDir(), strippedPath));
128
+ }
129
+ catch {
130
+ // skip if resolveToRealPath errors out
131
+ continue;
132
+ }
121
133
  }
122
134
  if (config.validatePathAccess(resolvedPathName, 'read')) {
123
135
  if (await fileExists(resolvedPathName)) {
@@ -143,16 +155,27 @@ async function resolveFilePaths(fileParts, config, onDebugMessage, signal) {
143
155
  if (!pathName) {
144
156
  continue;
145
157
  }
158
+ const basePathName = stripLineNumberSuffix(pathName) ?? pathName;
146
159
  const gitIgnored = respectFileIgnore.respectGitIgnore &&
147
- fileDiscovery.shouldIgnoreFile(pathName, {
160
+ (fileDiscovery.shouldIgnoreFile(pathName, {
148
161
  respectGitIgnore: true,
149
162
  respectGeminiIgnore: false,
150
- });
163
+ }) ||
164
+ (basePathName !== pathName &&
165
+ fileDiscovery.shouldIgnoreFile(basePathName, {
166
+ respectGitIgnore: true,
167
+ respectGeminiIgnore: false,
168
+ })));
151
169
  const geminiIgnored = respectFileIgnore.respectGeminiIgnore &&
152
- fileDiscovery.shouldIgnoreFile(pathName, {
170
+ (fileDiscovery.shouldIgnoreFile(pathName, {
153
171
  respectGitIgnore: false,
154
172
  respectGeminiIgnore: true,
155
- });
173
+ }) ||
174
+ (basePathName !== pathName &&
175
+ fileDiscovery.shouldIgnoreFile(basePathName, {
176
+ respectGitIgnore: false,
177
+ respectGeminiIgnore: true,
178
+ })));
156
179
  if (gitIgnored || geminiIgnored) {
157
180
  const reason = gitIgnored && geminiIgnored ? 'both' : gitIgnored ? 'git' : 'gemini';
158
181
  ignoredFiles.push({ path: pathName, reason });
@@ -190,12 +213,20 @@ async function resolveFilePaths(fileParts, config, onDebugMessage, signal) {
190
213
  // We also allow glob fallback for "unauthorized" results from resolveAtCommandPath,
191
214
  // as they might represent a relative path that matched an unauthorized file in one directory
192
215
  // but might have a valid match (via glob) in another.
193
- if (config.getEnableRecursiveFileSearch() && globTool) {
216
+ const MAX_GLOB_SEARCH_PATH_LENGTH = 255;
217
+ const isPathSuitableForGlob = pathName.length > 0 &&
218
+ pathName.length <= MAX_GLOB_SEARCH_PATH_LENGTH &&
219
+ !path.isAbsolute(pathName) &&
220
+ !pathName.includes('..') &&
221
+ !/[\r\n\t\0{}*?[\]]/.test(pathName);
222
+ if (config.getEnableRecursiveFileSearch() &&
223
+ globTool &&
224
+ isPathSuitableForGlob) {
194
225
  onDebugMessage(`Path ${pathName} not found directly, attempting glob search.`);
195
226
  for (const dir of config.getWorkspaceContext().getDirectories()) {
196
227
  try {
197
228
  const globResult = await globTool.buildAndExecute({
198
- pattern: `**/*${pathName}*`,
229
+ pattern: `**/*${basePathName}*`,
199
230
  path: dir,
200
231
  }, signal);
201
232
  if (globResult.llmContent &&
@@ -230,12 +261,12 @@ async function resolveFilePaths(fileParts, config, onDebugMessage, signal) {
230
261
  break;
231
262
  }
232
263
  else {
233
- onDebugMessage(`Glob search for '**/*${pathName}*' did not return a usable path. Path ${pathName} will be skipped.`);
264
+ onDebugMessage(`Glob search for '**/*${basePathName}*' did not return a usable path. Path ${pathName} will be skipped.`);
234
265
  break;
235
266
  }
236
267
  }
237
268
  else {
238
- onDebugMessage(`Glob search for '**/*${pathName}*' found no files or an error. Path ${pathName} will be skipped.`);
269
+ onDebugMessage(`Glob search for '**/*${basePathName}*' found no files or an error. Path ${pathName} will be skipped.`);
239
270
  }
240
271
  }
241
272
  catch (globError) {
@@ -1 +1 @@
1
- {"version":3,"file":"atCommandProcessor.js","sourceRoot":"","sources":["../../../../src/ui/hooks/atCommandProcessor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"atCommandProcessor.js","sourceRoot":"","sources":["../../../../src/ui/hooks/atCommandProcessor.ts"],"names":[],"mappings":"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"}
@@ -1156,6 +1156,166 @@ describe('handleAtCommand', () => {
1156
1156
  expect(result.processedQuery).toContainEqual(expect.objectContaining({ text: 'Recovered content' }));
1157
1157
  expect(mockOnDebugMessage).toHaveBeenCalledWith(expect.stringContaining('Identified invalid path fragment, attempting to extract path'));
1158
1158
  });
1159
+ // Regression tests for #29434: code with @ inside quotes should not trigger runaway glob searches or hangs
1160
+ it('does not greedily consume code across quotes when @ is inside quotes (#29434)', async () => {
1161
+ const query = 'import { x } from "@scope/pkg";\nconst a = "foo";\nconsole.log("hello");';
1162
+ const result = await handleAtCommand({
1163
+ query,
1164
+ config: mockConfig,
1165
+ addItem: mockAddItem,
1166
+ onDebugMessage: mockOnDebugMessage,
1167
+ messageId: 704,
1168
+ signal: abortController.signal,
1169
+ });
1170
+ // The query should be processed without hanging or throwing
1171
+ expect(result.processedQuery).not.toBeNull();
1172
+ expect(result.error).toBeUndefined();
1173
+ });
1174
+ it('does not hang when input contains @scope/pkg followed by many imports (#29434)', async () => {
1175
+ let query = 'import { useThing } from "@scope/pkg";\n';
1176
+ for (let i = 1; i <= 60; i++) {
1177
+ query += `import { alpha${i}, beta${i}, gamma${i} } from "~/modules/feature${i}/index";\n`;
1178
+ }
1179
+ const result = await handleAtCommand({
1180
+ query,
1181
+ config: mockConfig,
1182
+ addItem: mockAddItem,
1183
+ onDebugMessage: mockOnDebugMessage,
1184
+ messageId: 705,
1185
+ signal: abortController.signal,
1186
+ });
1187
+ expect(result.processedQuery).not.toBeNull();
1188
+ expect(result.error).toBeUndefined();
1189
+ });
1190
+ it('does not invoke recursive glob search on paths exceeding MAX_GLOB_SEARCH_PATH_LENGTH (#29434)', async () => {
1191
+ const globSpy = vi.fn();
1192
+ const mockGlobTool = {
1193
+ buildAndExecute: globSpy,
1194
+ };
1195
+ vi.spyOn(mockConfig.getToolRegistry(), 'getTool').mockReturnValue(mockGlobTool);
1196
+ // Path with individual components < 255 but total length > 255
1197
+ const excessivelyLongNonexistent = 'sub/'.repeat(65) + 'file.ts';
1198
+ const query = `@${excessivelyLongNonexistent}`;
1199
+ await handleAtCommand({
1200
+ query,
1201
+ config: mockConfig,
1202
+ addItem: mockAddItem,
1203
+ onDebugMessage: mockOnDebugMessage,
1204
+ messageId: 706,
1205
+ signal: abortController.signal,
1206
+ });
1207
+ // Glob search should be skipped for excessively long path names
1208
+ expect(globSpy).not.toHaveBeenCalled();
1209
+ });
1210
+ it('does not invoke recursive glob search on paths containing newlines (#29434)', async () => {
1211
+ const globSpy = vi.fn();
1212
+ const mockGlobTool = {
1213
+ buildAndExecute: globSpy,
1214
+ };
1215
+ vi.spyOn(mockConfig.getToolRegistry(), 'getTool').mockReturnValue(mockGlobTool);
1216
+ // Path containing newline characters should never trigger glob fallback
1217
+ const query = '@"invalid\npath"';
1218
+ await handleAtCommand({
1219
+ query,
1220
+ config: mockConfig,
1221
+ addItem: mockAddItem,
1222
+ onDebugMessage: mockOnDebugMessage,
1223
+ messageId: 707,
1224
+ signal: abortController.signal,
1225
+ });
1226
+ expect(globSpy).not.toHaveBeenCalled();
1227
+ });
1228
+ it('does not invoke recursive glob search on paths containing curly braces (#29434)', async () => {
1229
+ const globSpy = vi.fn();
1230
+ const mockGlobTool = {
1231
+ buildAndExecute: globSpy,
1232
+ };
1233
+ vi.spyOn(mockConfig.getToolRegistry(), 'getTool').mockReturnValue(mockGlobTool);
1234
+ // Paths containing curly braces can cause catastrophic brace expansion in minimatch
1235
+ const query = '@"foo{a,b}{c,d}"';
1236
+ await handleAtCommand({
1237
+ query,
1238
+ config: mockConfig,
1239
+ addItem: mockAddItem,
1240
+ onDebugMessage: mockOnDebugMessage,
1241
+ messageId: 708,
1242
+ signal: abortController.signal,
1243
+ });
1244
+ expect(globSpy).not.toHaveBeenCalled();
1245
+ });
1246
+ it('does not invoke recursive glob search on paths containing directory traversal sequences (#29434)', async () => {
1247
+ const globSpy = vi.fn();
1248
+ const mockGlobTool = {
1249
+ buildAndExecute: globSpy,
1250
+ };
1251
+ vi.spyOn(mockConfig.getToolRegistry(), 'getTool').mockReturnValue(mockGlobTool);
1252
+ // Paths containing directory traversal sequences should never trigger glob fallback
1253
+ const query = '@../sibling/nonexistent.txt';
1254
+ await handleAtCommand({
1255
+ query,
1256
+ config: mockConfig,
1257
+ addItem: mockAddItem,
1258
+ onDebugMessage: mockOnDebugMessage,
1259
+ messageId: 709,
1260
+ signal: abortController.signal,
1261
+ });
1262
+ expect(globSpy).not.toHaveBeenCalled();
1263
+ });
1264
+ it('does not invoke recursive glob search on absolute paths that do not exist (#29434)', async () => {
1265
+ const globSpy = vi.fn();
1266
+ const mockGlobTool = {
1267
+ buildAndExecute: globSpy,
1268
+ };
1269
+ vi.spyOn(mockConfig.getToolRegistry(), 'getTool').mockReturnValue(mockGlobTool);
1270
+ const query = '@/usr/bin/nonexistent-binary-path-xyz';
1271
+ await handleAtCommand({
1272
+ query,
1273
+ config: mockConfig,
1274
+ addItem: mockAddItem,
1275
+ onDebugMessage: mockOnDebugMessage,
1276
+ messageId: 710,
1277
+ signal: abortController.signal,
1278
+ });
1279
+ expect(globSpy).not.toHaveBeenCalled();
1280
+ });
1281
+ it('does not invoke recursive glob search on paths containing glob wildcards (#29434)', async () => {
1282
+ const globSpy = vi.fn();
1283
+ const mockGlobTool = {
1284
+ buildAndExecute: globSpy,
1285
+ };
1286
+ vi.spyOn(mockConfig.getToolRegistry(), 'getTool').mockReturnValue(mockGlobTool);
1287
+ const query = '@"test*wildcard?.txt"';
1288
+ await handleAtCommand({
1289
+ query,
1290
+ config: mockConfig,
1291
+ addItem: mockAddItem,
1292
+ onDebugMessage: mockOnDebugMessage,
1293
+ messageId: 711,
1294
+ signal: abortController.signal,
1295
+ });
1296
+ expect(globSpy).not.toHaveBeenCalled();
1297
+ });
1298
+ it.each([
1299
+ '@src/app.js:10',
1300
+ '@src/app.js:10-20',
1301
+ '@src/app.js:10:5',
1302
+ '@src/app.js#L10',
1303
+ '@src/app.js#L10-L25',
1304
+ '@src/app.js#L10-#L25',
1305
+ ])('should resolve file references with line numbers or ranges (%s) without falling back to glob', async (atRef) => {
1306
+ const fileContent = 'const x = 42;';
1307
+ await createTestFile(path.join(testRootDir, 'src', 'app.js'), fileContent);
1308
+ const result = await handleAtCommand({
1309
+ query: `Explain ${atRef}`,
1310
+ config: mockConfig,
1311
+ addItem: mockAddItem,
1312
+ onDebugMessage: mockOnDebugMessage,
1313
+ messageId: 712,
1314
+ signal: abortController.signal,
1315
+ });
1316
+ expect(result.processedQuery).toContainEqual(expect.objectContaining({ text: fileContent }));
1317
+ expect(mockOnDebugMessage).not.toHaveBeenCalledWith(expect.stringContaining('not found directly, attempting glob search.'));
1318
+ });
1159
1319
  });
1160
1320
  describe('escapeAtSymbols', () => {
1161
1321
  it('escapes a bare @ symbol', () => {