@machina.ai/cell-cli 1.64.0-rc3 → 1.66.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 (194) hide show
  1. package/dist/index.js +14 -9
  2. package/dist/index.js.map +1 -1
  3. package/dist/package.json +4 -4
  4. package/dist/src/acp/acpSession.js +9 -13
  5. package/dist/src/acp/acpSession.js.map +1 -1
  6. package/dist/src/acp/acpSession.test.js +88 -0
  7. package/dist/src/acp/acpSession.test.js.map +1 -1
  8. package/dist/src/commands/mcp/add.js +14 -6
  9. package/dist/src/commands/mcp/add.js.map +1 -1
  10. package/dist/src/commands/mcp/add.test.js +61 -0
  11. package/dist/src/commands/mcp/add.test.js.map +1 -1
  12. package/dist/src/commands/mcp/remove.js +14 -1
  13. package/dist/src/commands/mcp/remove.js.map +1 -1
  14. package/dist/src/commands/mcp/remove.test.js +63 -0
  15. package/dist/src/commands/mcp/remove.test.js.map +1 -1
  16. package/dist/src/config/config.js +5 -0
  17. package/dist/src/config/config.js.map +1 -1
  18. package/dist/src/config/config.test.js +1 -0
  19. package/dist/src/config/config.test.js.map +1 -1
  20. package/dist/src/config/envDefaults.d.ts +20 -0
  21. package/dist/src/config/envDefaults.js +29 -0
  22. package/dist/src/config/envDefaults.js.map +1 -0
  23. package/dist/src/config/envDefaults.test.d.ts +6 -0
  24. package/dist/src/config/envDefaults.test.js +23 -0
  25. package/dist/src/config/envDefaults.test.js.map +1 -0
  26. package/dist/src/config/extension-manager.js +13 -4
  27. package/dist/src/config/extension-manager.js.map +1 -1
  28. package/dist/src/config/extension.test.js +117 -0
  29. package/dist/src/config/extension.test.js.map +1 -1
  30. package/dist/src/config/extensions/github.test.js +34 -0
  31. package/dist/src/config/extensions/github.test.js.map +1 -1
  32. package/dist/src/config/extensions/github_fetch.js +110 -18
  33. package/dist/src/config/extensions/github_fetch.js.map +1 -1
  34. package/dist/src/config/extensions/github_fetch.test.js +251 -36
  35. package/dist/src/config/extensions/github_fetch.test.js.map +1 -1
  36. package/dist/src/config/settings.d.ts +1 -0
  37. package/dist/src/config/settings.js +148 -58
  38. package/dist/src/config/settings.js.map +1 -1
  39. package/dist/src/config/settings.test.js +300 -0
  40. package/dist/src/config/settings.test.js.map +1 -1
  41. package/dist/src/config/settingsSchema.d.ts +1 -1
  42. package/dist/src/config/settingsSchema.js +6 -1
  43. package/dist/src/config/settingsSchema.js.map +1 -1
  44. package/dist/src/gemini.test.js +69 -0
  45. package/dist/src/gemini.test.js.map +1 -1
  46. package/dist/src/generated/git-commit.d.ts +2 -2
  47. package/dist/src/generated/git-commit.js +2 -2
  48. package/dist/src/interactiveCli.js +8 -3
  49. package/dist/src/interactiveCli.js.map +1 -1
  50. package/dist/src/services/CommandService.js +1 -1
  51. package/dist/src/services/CommandService.js.map +1 -1
  52. package/dist/src/services/CommandService.test.js +18 -1
  53. package/dist/src/services/CommandService.test.js.map +1 -1
  54. package/dist/src/services/SlashCommandConflictHandler.d.ts +1 -0
  55. package/dist/src/services/SlashCommandConflictHandler.js +18 -2
  56. package/dist/src/services/SlashCommandConflictHandler.js.map +1 -1
  57. package/dist/src/services/SlashCommandConflictHandler.test.js +85 -8
  58. package/dist/src/services/SlashCommandConflictHandler.test.js.map +1 -1
  59. package/dist/src/ui/AppContainer.js +254 -12
  60. package/dist/src/ui/AppContainer.js.map +1 -1
  61. package/dist/src/ui/AppContainer.test.js +362 -6
  62. package/dist/src/ui/AppContainer.test.js.map +1 -1
  63. package/dist/src/ui/auth/AuthDialog.js +21 -5
  64. package/dist/src/ui/auth/AuthDialog.js.map +1 -1
  65. package/dist/src/ui/auth/AuthDialog.test.js +83 -0
  66. package/dist/src/ui/auth/AuthDialog.test.js.map +1 -1
  67. package/dist/src/ui/auth/useAuth.js +7 -1
  68. package/dist/src/ui/auth/useAuth.js.map +1 -1
  69. package/dist/src/ui/auth/useAuth.test.js +9 -0
  70. package/dist/src/ui/auth/useAuth.test.js.map +1 -1
  71. package/dist/src/ui/commands/marketplaceCommand.js +92 -4
  72. package/dist/src/ui/commands/marketplaceCommand.js.map +1 -1
  73. package/dist/src/ui/commands/marketplaceCommand.test.js +98 -1
  74. package/dist/src/ui/commands/marketplaceCommand.test.js.map +1 -1
  75. package/dist/src/ui/components/AsciiArt.d.ts +6 -6
  76. package/dist/src/ui/components/AsciiArt.js +6 -6
  77. package/dist/src/ui/components/CliSpinner.d.ts +3 -2
  78. package/dist/src/ui/components/CliSpinner.js +27 -3
  79. package/dist/src/ui/components/CliSpinner.js.map +1 -1
  80. package/dist/src/ui/components/CliSpinner.test.js +42 -3
  81. package/dist/src/ui/components/CliSpinner.test.js.map +1 -1
  82. package/dist/src/ui/components/Composer.js +3 -3
  83. package/dist/src/ui/components/Composer.js.map +1 -1
  84. package/dist/src/ui/components/Composer.test.js +39 -1
  85. package/dist/src/ui/components/Composer.test.js.map +1 -1
  86. package/dist/src/ui/components/DetailedMessagesDisplay.js +5 -1
  87. package/dist/src/ui/components/DetailedMessagesDisplay.js.map +1 -1
  88. package/dist/src/ui/components/DetailedMessagesDisplay.test.js +19 -1
  89. package/dist/src/ui/components/DetailedMessagesDisplay.test.js.map +1 -1
  90. package/dist/src/ui/components/Footer.js +1 -1
  91. package/dist/src/ui/components/Footer.js.map +1 -1
  92. package/dist/src/ui/components/GeminiRespondingSpinner.d.ts +1 -1
  93. package/dist/src/ui/components/GeminiRespondingSpinner.js +9 -2
  94. package/dist/src/ui/components/GeminiRespondingSpinner.js.map +1 -1
  95. package/dist/src/ui/components/GeminiSpinner.d.ts +1 -1
  96. package/dist/src/ui/components/GeminiSpinner.js +18 -7
  97. package/dist/src/ui/components/GeminiSpinner.js.map +1 -1
  98. package/dist/src/ui/components/HistoryItemDisplay.js +5 -2
  99. package/dist/src/ui/components/HistoryItemDisplay.js.map +1 -1
  100. package/dist/src/ui/components/HistoryItemDisplay.test.js +21 -0
  101. package/dist/src/ui/components/HistoryItemDisplay.test.js.map +1 -1
  102. package/dist/src/ui/components/LoadingIndicator.d.ts +1 -1
  103. package/dist/src/ui/components/LoadingIndicator.js +4 -2
  104. package/dist/src/ui/components/LoadingIndicator.js.map +1 -1
  105. package/dist/src/ui/components/MainContent.js +47 -9
  106. package/dist/src/ui/components/MainContent.js.map +1 -1
  107. package/dist/src/ui/components/MainContent.test.js +87 -1
  108. package/dist/src/ui/components/MainContent.test.js.map +1 -1
  109. package/dist/src/ui/components/MemoryUsageDisplay.js +8 -4
  110. package/dist/src/ui/components/MemoryUsageDisplay.js.map +1 -1
  111. package/dist/src/ui/components/ModelDialog.js +11 -5
  112. package/dist/src/ui/components/ModelDialog.js.map +1 -1
  113. package/dist/src/ui/components/ModelDialog.test.js +18 -14
  114. package/dist/src/ui/components/ModelDialog.test.js.map +1 -1
  115. package/dist/src/ui/components/StatusRow.d.ts +7 -6
  116. package/dist/src/ui/components/StatusRow.js +24 -10
  117. package/dist/src/ui/components/StatusRow.js.map +1 -1
  118. package/dist/src/ui/components/ValidationDialog.js +13 -6
  119. package/dist/src/ui/components/ValidationDialog.js.map +1 -1
  120. package/dist/src/ui/components/ValidationDialog.test.js +40 -0
  121. package/dist/src/ui/components/ValidationDialog.test.js.map +1 -1
  122. package/dist/src/ui/components/messages/DenseToolMessage.js +17 -12
  123. package/dist/src/ui/components/messages/DenseToolMessage.js.map +1 -1
  124. package/dist/src/ui/components/messages/DenseToolMessage.test.js +71 -0
  125. package/dist/src/ui/components/messages/DenseToolMessage.test.js.map +1 -1
  126. package/dist/src/ui/components/messages/ToolResultDisplay.js +14 -11
  127. package/dist/src/ui/components/messages/ToolResultDisplay.js.map +1 -1
  128. package/dist/src/ui/components/messages/ToolResultDisplay.test.js +32 -0
  129. package/dist/src/ui/components/messages/ToolResultDisplay.test.js.map +1 -1
  130. package/dist/src/ui/components/shared/MaxSizedBox.js +8 -2
  131. package/dist/src/ui/components/shared/MaxSizedBox.js.map +1 -1
  132. package/dist/src/ui/components/shared/MaxSizedBox.test.js +23 -1
  133. package/dist/src/ui/components/shared/MaxSizedBox.test.js.map +1 -1
  134. package/dist/src/ui/contexts/ToolActionsContext.js +7 -1
  135. package/dist/src/ui/contexts/ToolActionsContext.js.map +1 -1
  136. package/dist/src/ui/contexts/ToolActionsContext.test.js +54 -1
  137. package/dist/src/ui/contexts/ToolActionsContext.test.js.map +1 -1
  138. package/dist/src/ui/hooks/atCommandProcessor.d.ts +2 -1
  139. package/dist/src/ui/hooks/atCommandProcessor.js +15 -15
  140. package/dist/src/ui/hooks/atCommandProcessor.js.map +1 -1
  141. package/dist/src/ui/hooks/useAgentStream.d.ts +9 -2
  142. package/dist/src/ui/hooks/useAgentStream.js +173 -8
  143. package/dist/src/ui/hooks/useAgentStream.js.map +1 -1
  144. package/dist/src/ui/hooks/useAgentStream.test.js +104 -1
  145. package/dist/src/ui/hooks/useAgentStream.test.js.map +1 -1
  146. package/dist/src/ui/hooks/useGeminiStream.d.ts +1 -1
  147. package/dist/src/ui/hooks/useGeminiStream.js +174 -59
  148. package/dist/src/ui/hooks/useGeminiStream.js.map +1 -1
  149. package/dist/src/ui/hooks/useGeminiStream.test.js +230 -3
  150. package/dist/src/ui/hooks/useGeminiStream.test.js.map +1 -1
  151. package/dist/src/ui/hooks/useLoadingIndicator.d.ts +2 -1
  152. package/dist/src/ui/hooks/useLoadingIndicator.js +3 -3
  153. package/dist/src/ui/hooks/useLoadingIndicator.js.map +1 -1
  154. package/dist/src/ui/hooks/useLoadingIndicator.test.js +23 -4
  155. package/dist/src/ui/hooks/useLoadingIndicator.test.js.map +1 -1
  156. package/dist/src/ui/hooks/useReverseSearchCompletion.js +10 -6
  157. package/dist/src/ui/hooks/useReverseSearchCompletion.js.map +1 -1
  158. package/dist/src/ui/hooks/useReverseSearchCompletion.test.js +49 -0
  159. package/dist/src/ui/hooks/useReverseSearchCompletion.test.js.map +1 -1
  160. package/dist/src/ui/key/keyBindings.js +19 -6
  161. package/dist/src/ui/key/keyBindings.js.map +1 -1
  162. package/dist/src/ui/key/keyBindings.test.js +106 -0
  163. package/dist/src/ui/key/keyBindings.test.js.map +1 -1
  164. package/dist/src/ui/utils/formatters.d.ts +2 -0
  165. package/dist/src/ui/utils/formatters.js +13 -5
  166. package/dist/src/ui/utils/formatters.js.map +1 -1
  167. package/dist/src/ui/utils/formatters.test.js +18 -0
  168. package/dist/src/ui/utils/formatters.test.js.map +1 -1
  169. package/dist/src/utils/activityLogger.js +109 -33
  170. package/dist/src/utils/activityLogger.js.map +1 -1
  171. package/dist/src/utils/activityLogger.test.js +441 -0
  172. package/dist/src/utils/activityLogger.test.js.map +1 -1
  173. package/dist/src/utils/handleAutoUpdate.d.ts +4 -1
  174. package/dist/src/utils/handleAutoUpdate.js +45 -3
  175. package/dist/src/utils/handleAutoUpdate.js.map +1 -1
  176. package/dist/src/utils/handleAutoUpdate.test.js +280 -2
  177. package/dist/src/utils/handleAutoUpdate.test.js.map +1 -1
  178. package/dist/src/utils/nodeVersion.d.ts +11 -0
  179. package/dist/src/utils/nodeVersion.js +42 -0
  180. package/dist/src/utils/nodeVersion.js.map +1 -0
  181. package/dist/src/utils/nodeVersion.test.d.ts +6 -0
  182. package/dist/src/utils/nodeVersion.test.js +35 -0
  183. package/dist/src/utils/nodeVersion.test.js.map +1 -0
  184. package/dist/src/utils/processUtils.d.ts +23 -0
  185. package/dist/src/utils/processUtils.js +72 -0
  186. package/dist/src/utils/processUtils.js.map +1 -1
  187. package/dist/src/utils/processUtils.test.js +95 -1
  188. package/dist/src/utils/processUtils.test.js.map +1 -1
  189. package/dist/src/utils/relaunch.js +8 -6
  190. package/dist/src/utils/relaunch.js.map +1 -1
  191. package/dist/src/utils/relaunch.test.js +107 -1
  192. package/dist/src/utils/relaunch.test.js.map +1 -1
  193. package/dist/tsconfig.tsbuildinfo +1 -1
  194. package/package.json +4 -4
@@ -1 +1 @@
1
- {"version":3,"file":"github_fetch.js","sourceRoot":"","sources":["../../../../src/config/extensions/github_fetch.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,KAAK,MAAM,YAAY,CAAC;AAEpC,MAAM,UAAU,cAAc;IAC5B,OAAO,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;AACrC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,GAAW,EACX,gBAAwB,CAAC;IAEzB,MAAM,OAAO,GAAqD;QAChE,YAAY,EAAE,YAAY;KAC3B,CAAC;IACF,MAAM,KAAK,GAAG,cAAc,EAAE,CAAC;IAC/B,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,CAAC,aAAa,GAAG,SAAS,KAAK,EAAE,CAAC;IAC3C,CAAC;IACD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,KAAK;aACF,GAAG,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE;YAC7B,IAAI,GAAG,CAAC,UAAU,KAAK,GAAG,IAAI,GAAG,CAAC,UAAU,KAAK,GAAG,EAAE,CAAC;gBACrD,IAAI,aAAa,IAAI,EAAE,EAAE,CAAC;oBACxB,OAAO,MAAM,CAAC,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC,CAAC;gBACjD,CAAC;gBACD,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;oBAC1B,OAAO,MAAM,CAAC,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC,CAAC;gBACtE,CAAC;gBACD,GAAG,CAAC,MAAM,EAAE,CAAC;gBACb,SAAS,CACP,IAAI,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,QAAQ,EAAE,EAC7C,aAAa,GAAG,CAAC,CAClB;qBACE,IAAI,CAAC,OAAO,CAAC;qBACb,KAAK,CAAC,MAAM,CAAC,CAAC;gBACjB,OAAO;YACT,CAAC;YACD,IAAI,GAAG,CAAC,UAAU,KAAK,GAAG,EAAE,CAAC;gBAC3B,OAAO,MAAM,CACX,IAAI,KAAK,CAAC,mCAAmC,GAAG,CAAC,UAAU,EAAE,CAAC,CAC/D,CAAC;YACJ,CAAC;YACD,MAAM,MAAM,GAAa,EAAE,CAAC;YAC5B,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;YAC9C,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;gBACjB,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC;gBAC9C,uEAAuE;gBACvE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAM,CAAC,CAAC;YACjC,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;aACD,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACzB,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"github_fetch.js","sourceRoot":"","sources":["../../../../src/config/extensions/github_fetch.ts"],"names":[],"mappings":"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"}
@@ -6,29 +6,41 @@
6
6
  import { describe, it, expect, vi, afterEach, beforeEach } from 'vitest';
7
7
  import * as https from 'node:https';
8
8
  import { EventEmitter } from 'node:events';
9
+ import { promisify } from 'node:util';
10
+ import { getErrorMessage, PrivateIpError, validateUrlDestination, } from '@google/gemini-cli-core';
9
11
  import { fetchJson, getGitHubToken } from './github_fetch.js';
10
12
  vi.mock('node:https');
13
+ vi.mock('@google/gemini-cli-core', async (importOriginal) => {
14
+ const actual = await importOriginal();
15
+ return {
16
+ ...actual,
17
+ validateUrlDestination: vi.fn(),
18
+ // Pass-through spy: lets tests assert that no extra errors are built.
19
+ getErrorMessage: vi.fn(actual.getErrorMessage),
20
+ };
21
+ });
11
22
  describe('getGitHubToken', () => {
12
- const originalToken = process.env['GITHUB_TOKEN'];
13
23
  afterEach(() => {
14
- if (originalToken) {
15
- process.env['GITHUB_TOKEN'] = originalToken;
16
- }
17
- else {
18
- delete process.env['GITHUB_TOKEN'];
19
- }
24
+ vi.unstubAllEnvs();
20
25
  });
21
26
  it('should return the token if GITHUB_TOKEN is set', () => {
22
- process.env['GITHUB_TOKEN'] = 'test-token';
27
+ vi.stubEnv('GITHUB_TOKEN', 'test-token');
23
28
  expect(getGitHubToken()).toBe('test-token');
24
29
  });
25
30
  it('should return undefined if GITHUB_TOKEN is not set', () => {
26
- delete process.env['GITHUB_TOKEN'];
31
+ // An empty string is how vi.stubEnv "unsets" a variable (see GEMINI.md);
32
+ // getGitHubToken treats an empty value as unset.
33
+ vi.stubEnv('GITHUB_TOKEN', '');
27
34
  expect(getGitHubToken()).toBeUndefined();
28
35
  });
29
36
  });
30
37
  describe('fetchJson', () => {
31
38
  const getMock = vi.mocked(https.get);
39
+ const validateUrlDestinationMock = vi.mocked(validateUrlDestination);
40
+ const getErrorMessageMock = vi.mocked(getErrorMessage);
41
+ beforeEach(() => {
42
+ validateUrlDestinationMock.mockResolvedValue(true);
43
+ });
32
44
  afterEach(() => {
33
45
  vi.resetAllMocks();
34
46
  });
@@ -46,11 +58,10 @@ describe('fetchJson', () => {
46
58
  foo: 'bar',
47
59
  });
48
60
  });
49
- it('should handle redirects (301 and 302)', async () => {
50
- // Test 302
61
+ it.each([301, 302, 303, 307, 308])('should follow a %i redirect', async (statusCode) => {
51
62
  getMock.mockImplementationOnce((_url, _options, callback) => {
52
63
  const res = new EventEmitter();
53
- res.statusCode = 302;
64
+ res.statusCode = statusCode;
54
65
  res.headers = { location: 'https://example.com/final' };
55
66
  res.resume = vi.fn();
56
67
  callback(res);
@@ -69,60 +80,236 @@ describe('fetchJson', () => {
69
80
  await expect(fetchJson('https://example.com/redirect')).resolves.toEqual({
70
81
  success: true,
71
82
  });
72
- // Test 301
83
+ });
84
+ it('should reject when URL destination validation fails (SSRF protection)', async () => {
85
+ validateUrlDestinationMock.mockResolvedValueOnce(false);
86
+ await expect(fetchJson('http://169.254.169.254/latest/meta-data/')).rejects.toThrow('Access to blocked or private host http://169.254.169.254/latest/meta-data/ is not allowed.');
87
+ expect(getMock).not.toHaveBeenCalled();
88
+ });
89
+ it('should reject when redirect destination fails SSRF validation', async () => {
90
+ validateUrlDestinationMock
91
+ .mockResolvedValueOnce(true)
92
+ .mockResolvedValueOnce(false);
73
93
  getMock.mockImplementationOnce((_url, _options, callback) => {
74
94
  const res = new EventEmitter();
75
- res.statusCode = 301;
76
- res.headers = { location: 'https://example.com/final-permanent' };
95
+ res.statusCode = 302;
96
+ res.headers = { location: 'http://127.0.0.1:8080/internal' };
77
97
  res.resume = vi.fn();
78
98
  callback(res);
79
99
  res.emit('end');
80
100
  return new EventEmitter();
81
101
  });
82
- getMock.mockImplementationOnce((url, _options, callback) => {
83
- expect(url).toBe('https://example.com/final-permanent');
102
+ await expect(fetchJson('https://example.com/redirect')).rejects.toThrow('Access to blocked or private host http://127.0.0.1:8080/internal is not allowed.');
103
+ expect(getMock).toHaveBeenCalledTimes(1);
104
+ });
105
+ it('should connect through a lookup that refuses private addresses', async () => {
106
+ getMock.mockImplementationOnce((_url, _options, callback) => {
84
107
  const res = new EventEmitter();
85
108
  res.statusCode = 200;
86
109
  callback(res);
87
- res.emit('data', Buffer.from('{"permanent": true}'));
110
+ res.emit('data', Buffer.from('{}'));
88
111
  res.emit('end');
89
112
  return new EventEmitter();
90
113
  });
91
- await expect(fetchJson('https://example.com/redirect-perm')).resolves.toEqual({ permanent: true });
114
+ await fetchJson('https://example.com/data.json');
115
+ const { lookup } = getMock.mock.calls[0][1];
116
+ if (!lookup) {
117
+ throw new Error('https.get was called without a lookup');
118
+ }
119
+ const resolveHost = promisify(lookup);
120
+ // validateUrlDestination is mocked to pass, so a host that resolves to a
121
+ // private address when the client connects is only stopped by this lookup.
122
+ // Literal addresses stand in for hostnames, which keeps DNS out of the test.
123
+ await expect(resolveHost('10.0.0.5', {})).rejects.toThrow(PrivateIpError);
124
+ await expect(resolveHost('localhost', {})).rejects.toThrow(PrivateIpError);
125
+ await expect(resolveHost('8.8.8.8', {})).resolves.toBe('8.8.8.8');
126
+ await expect(resolveHost('8.8.8.8', { all: true })).resolves.toEqual([
127
+ { address: '8.8.8.8', family: 4 },
128
+ ]);
129
+ });
130
+ it.each([
131
+ {
132
+ event: 'error',
133
+ trigger: (req) => req.emit('error', new Error('socket hang up')),
134
+ expectedDestroyCalls: 0,
135
+ },
136
+ {
137
+ event: 'timeout',
138
+ trigger: (req) => req.emit('timeout'),
139
+ // The original socket is still released; only its rejection is suppressed.
140
+ expectedDestroyCalls: 1,
141
+ },
142
+ ])('should ignore a late $event of the original request once a redirect has started', async ({ trigger, expectedDestroyCalls }) => {
143
+ const destroyMock = vi.fn();
144
+ const originalReq = Object.assign(new EventEmitter(), {
145
+ destroy: destroyMock,
146
+ });
147
+ getMock.mockImplementationOnce((_url, _options, callback) => {
148
+ const res = new EventEmitter();
149
+ res.statusCode = 302;
150
+ res.headers = { location: 'https://example.com/final' };
151
+ res.resume = vi.fn();
152
+ queueMicrotask(() => {
153
+ callback(res);
154
+ });
155
+ return originalReq;
156
+ });
157
+ getMock.mockImplementationOnce((_url, _options, callback) => {
158
+ // The redirect request is now in flight while the original one fails.
159
+ trigger(originalReq);
160
+ queueMicrotask(() => {
161
+ const res = new EventEmitter();
162
+ res.statusCode = 200;
163
+ callback(res);
164
+ res.emit('data', Buffer.from('{"redirected": true}'));
165
+ res.emit('end');
166
+ });
167
+ return new EventEmitter();
168
+ });
169
+ await expect(fetchJson('https://example.com/redirect')).resolves.toEqual({
170
+ redirected: true,
171
+ });
172
+ expect(destroyMock).toHaveBeenCalledTimes(expectedDestroyCalls);
92
173
  });
93
- it('should reject on non-200/30x status code', async () => {
174
+ it('should reject on non-200/30x status code and drain the response', async () => {
175
+ const resumeMock = vi.fn();
94
176
  getMock.mockImplementationOnce((_url, _options, callback) => {
95
177
  const res = new EventEmitter();
96
178
  res.statusCode = 404;
179
+ res.resume = resumeMock;
97
180
  callback(res);
98
181
  res.emit('end');
99
182
  return new EventEmitter();
100
183
  });
101
184
  await expect(fetchJson('https://example.com/error')).rejects.toThrow('Request failed with status code 404');
185
+ expect(resumeMock).toHaveBeenCalledOnce();
102
186
  });
103
187
  it('should reject on request error', async () => {
104
188
  const error = new Error('Network error');
105
189
  getMock.mockImplementationOnce(() => {
106
190
  const req = new EventEmitter();
107
- req.emit('error', error);
191
+ queueMicrotask(() => {
192
+ req.emit('error', error);
193
+ });
108
194
  return req;
109
195
  });
110
196
  await expect(fetchJson('https://example.com/error')).rejects.toThrow('Network error');
111
197
  });
198
+ it('should destroy request and reject on request timeout', async () => {
199
+ const destroyMock = vi.fn();
200
+ getMock.mockImplementationOnce((_url, options) => {
201
+ expect(options).toEqual(expect.objectContaining({
202
+ timeout: 30000,
203
+ }));
204
+ const req = Object.assign(new EventEmitter(), {
205
+ destroy: destroyMock,
206
+ });
207
+ queueMicrotask(() => {
208
+ req.emit('timeout');
209
+ // Destroying a real request makes Node emit a follow-up error.
210
+ req.emit('error', new Error('socket hang up'));
211
+ });
212
+ return req;
213
+ });
214
+ await expect(fetchJson('https://example.com/slow')).rejects.toThrow('Request timed out after 30000ms');
215
+ expect(destroyMock).toHaveBeenCalledOnce();
216
+ });
217
+ it('should reject with contextual error on malformed JSON', async () => {
218
+ getMock.mockImplementationOnce((_url, _options, callback) => {
219
+ const res = new EventEmitter();
220
+ res.statusCode = 200;
221
+ queueMicrotask(() => {
222
+ callback(res);
223
+ res.emit('data', Buffer.from('{invalid'));
224
+ res.emit('end');
225
+ });
226
+ return new EventEmitter();
227
+ });
228
+ await expect(fetchJson('https://example.com/invalid.json')).rejects.toThrow(/Failed to parse JSON response from https:\/\/example\.com\/invalid\.json \(status 200\)/);
229
+ });
230
+ it('should reject on response stream error', async () => {
231
+ const streamError = new Error('Stream reset');
232
+ getMock.mockImplementationOnce((_url, _options, callback) => {
233
+ const res = new EventEmitter();
234
+ res.statusCode = 200;
235
+ queueMicrotask(() => {
236
+ callback(res);
237
+ res.emit('error', streamError);
238
+ // Node emits 'close' after 'error'; it must not reject a second time.
239
+ res.emit('close');
240
+ });
241
+ return new EventEmitter();
242
+ });
243
+ await expect(fetchJson('https://example.com/stream-error')).rejects.toThrow(/Response error while fetching https:\/\/example\.com\/stream-error \(status 200\): Stream reset/);
244
+ });
245
+ it('should reject when response stream is aborted', async () => {
246
+ getMock.mockImplementationOnce((_url, _options, callback) => {
247
+ const res = new EventEmitter();
248
+ res.statusCode = 200;
249
+ queueMicrotask(() => {
250
+ callback(res);
251
+ res.emit('aborted');
252
+ });
253
+ return new EventEmitter();
254
+ });
255
+ await expect(fetchJson('https://example.com/aborted')).rejects.toThrow('Response aborted while fetching https://example.com/aborted (status 200)');
256
+ });
257
+ it('should settle once when the response emits aborted, error and close in sequence', async () => {
258
+ const resetError = Object.assign(new Error('aborted'), {
259
+ code: 'ECONNRESET',
260
+ });
261
+ getMock.mockImplementationOnce((_url, _options, callback) => {
262
+ const res = new EventEmitter();
263
+ res.statusCode = 200;
264
+ queueMicrotask(() => {
265
+ callback(res);
266
+ // A connection reset mid-response emits all three, in this order.
267
+ res.emit('aborted');
268
+ res.emit('error', resetError);
269
+ res.emit('close');
270
+ });
271
+ return new EventEmitter();
272
+ });
273
+ await expect(fetchJson('https://example.com/reset')).rejects.toThrow('Response aborted while fetching https://example.com/reset (status 200)');
274
+ // The follow-up events must not build (and discard) further errors.
275
+ expect(getErrorMessageMock).not.toHaveBeenCalled();
276
+ });
277
+ it('should reject when response ends prematurely (res.complete === false)', async () => {
278
+ getMock.mockImplementationOnce((_url, _options, callback) => {
279
+ const res = new EventEmitter();
280
+ res.statusCode = 200;
281
+ res.complete = false;
282
+ queueMicrotask(() => {
283
+ callback(res);
284
+ res.emit('data', Buffer.from('{"partial":'));
285
+ res.emit('end');
286
+ // Node emits 'close' after 'end'; it must not reject a second time.
287
+ res.emit('close');
288
+ });
289
+ return new EventEmitter();
290
+ });
291
+ await expect(fetchJson('https://example.com/truncated')).rejects.toThrow('Response ended prematurely while fetching https://example.com/truncated (status 200)');
292
+ });
293
+ it('should reject when response closes before end', async () => {
294
+ getMock.mockImplementationOnce((_url, _options, callback) => {
295
+ const res = new EventEmitter();
296
+ res.statusCode = 200;
297
+ queueMicrotask(() => {
298
+ callback(res);
299
+ res.emit('close');
300
+ });
301
+ return new EventEmitter();
302
+ });
303
+ await expect(fetchJson('https://example.com/closed-early')).rejects.toThrow('Response closed prematurely while fetching https://example.com/closed-early (status 200)');
304
+ });
112
305
  describe('with GITHUB_TOKEN', () => {
113
- const originalToken = process.env['GITHUB_TOKEN'];
114
306
  beforeEach(() => {
115
- process.env['GITHUB_TOKEN'] = 'my-secret-token';
307
+ vi.stubEnv('GITHUB_TOKEN', 'my-secret-token');
116
308
  });
117
309
  afterEach(() => {
118
- if (originalToken) {
119
- process.env['GITHUB_TOKEN'] = originalToken;
120
- }
121
- else {
122
- delete process.env['GITHUB_TOKEN'];
123
- }
124
- });
125
- it('should include Authorization header if token is present', async () => {
310
+ vi.unstubAllEnvs();
311
+ });
312
+ it('should include Authorization header if token is present for github.com domains', async () => {
126
313
  getMock.mockImplementationOnce((_url, options, callback) => {
127
314
  expect(options.headers).toEqual({
128
315
  'User-Agent': 'gemini-cli',
@@ -139,16 +326,44 @@ describe('fetchJson', () => {
139
326
  foo: 'bar',
140
327
  });
141
328
  });
329
+ it('should strip Authorization header when redirecting to a non-GitHub domain', async () => {
330
+ getMock.mockImplementationOnce((_url, options, callback) => {
331
+ expect(options.headers).toEqual({
332
+ 'User-Agent': 'gemini-cli',
333
+ Authorization: 'token my-secret-token',
334
+ });
335
+ const res = new EventEmitter();
336
+ res.statusCode = 302;
337
+ res.headers = {
338
+ location: 'https://external-bucket.s3.amazonaws.com/data.json',
339
+ };
340
+ res.resume = vi.fn();
341
+ callback(res);
342
+ res.emit('end');
343
+ return new EventEmitter();
344
+ });
345
+ getMock.mockImplementationOnce((_url, options, callback) => {
346
+ expect(options.headers).toEqual({
347
+ 'User-Agent': 'gemini-cli',
348
+ });
349
+ const res = new EventEmitter();
350
+ res.statusCode = 200;
351
+ callback(res);
352
+ res.emit('data', Buffer.from('{"redirected": true}'));
353
+ res.emit('end');
354
+ return new EventEmitter();
355
+ });
356
+ await expect(fetchJson('https://api.github.com/repos/owner/repo/releases/latest')).resolves.toEqual({
357
+ redirected: true,
358
+ });
359
+ });
142
360
  });
143
361
  describe('without GITHUB_TOKEN', () => {
144
- const originalToken = process.env['GITHUB_TOKEN'];
145
362
  beforeEach(() => {
146
- delete process.env['GITHUB_TOKEN'];
363
+ vi.stubEnv('GITHUB_TOKEN', '');
147
364
  });
148
365
  afterEach(() => {
149
- if (originalToken) {
150
- process.env['GITHUB_TOKEN'] = originalToken;
151
- }
366
+ vi.unstubAllEnvs();
152
367
  });
153
368
  it('should not include Authorization header if token is not present', async () => {
154
369
  getMock.mockImplementationOnce((_url, options, callback) => {
@@ -1 +1 @@
1
- {"version":3,"file":"github_fetch.test.js","sourceRoot":"","sources":["../../../../src/config/extensions/github_fetch.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"github_fetch.test.js","sourceRoot":"","sources":["../../../../src/config/extensions/github_fetch.test.ts"],"names":[],"mappings":"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"}
@@ -92,6 +92,7 @@ export interface LoadedSettingsSnapshot {
92
92
  errors: SettingsError[];
93
93
  merged: MergedSettings;
94
94
  }
95
+ export declare const UNTRUSTED_WORKSPACE_SETTINGS_ERROR = "Cannot modify settings in an untrusted workspace. To enable this, verify the source of the repository and set CELL_CLI_TRUST_WORKSPACE=true or move your configuration to the global settings file.";
95
96
  export declare class LoadedSettings {
96
97
  constructor(system: SettingsFile, systemDefaults: SettingsFile, user: SettingsFile, workspace: SettingsFile, isTrusted: boolean, errors?: SettingsError[]);
97
98
  readonly system: SettingsFile;