@google/gemini-cli-core 0.1.21 → 0.1.22

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 (205) hide show
  1. package/README.md +26 -28
  2. package/dist/src/code_assist/converter.d.ts +1 -0
  3. package/dist/src/code_assist/converter.js +1 -0
  4. package/dist/src/code_assist/converter.js.map +1 -1
  5. package/dist/src/code_assist/oauth2.d.ts +1 -0
  6. package/dist/src/code_assist/oauth2.js +37 -20
  7. package/dist/src/code_assist/oauth2.js.map +1 -1
  8. package/dist/src/code_assist/oauth2.test.js +51 -8
  9. package/dist/src/code_assist/oauth2.test.js.map +1 -1
  10. package/dist/src/code_assist/server.js +1 -1
  11. package/dist/src/code_assist/server.js.map +1 -1
  12. package/dist/src/code_assist/setup.js +1 -1
  13. package/dist/src/code_assist/setup.js.map +1 -1
  14. package/dist/src/code_assist/setup.test.js +14 -8
  15. package/dist/src/code_assist/setup.test.js.map +1 -1
  16. package/dist/src/config/config.d.ts +2 -0
  17. package/dist/src/config/config.js +7 -6
  18. package/dist/src/config/config.js.map +1 -1
  19. package/dist/src/config/config.test.js +22 -0
  20. package/dist/src/config/config.test.js.map +1 -1
  21. package/dist/src/core/client.d.ts +4 -11
  22. package/dist/src/core/client.js +46 -28
  23. package/dist/src/core/client.js.map +1 -1
  24. package/dist/src/core/client.test.js +294 -0
  25. package/dist/src/core/client.test.js.map +1 -1
  26. package/dist/src/core/contentGenerator.js +19 -9
  27. package/dist/src/core/contentGenerator.js.map +1 -1
  28. package/dist/src/core/contentGenerator.test.js +39 -15
  29. package/dist/src/core/contentGenerator.test.js.map +1 -1
  30. package/dist/src/core/coreToolScheduler.js +6 -2
  31. package/dist/src/core/coreToolScheduler.js.map +1 -1
  32. package/dist/src/core/coreToolScheduler.test.js +46 -63
  33. package/dist/src/core/coreToolScheduler.test.js.map +1 -1
  34. package/dist/src/core/logger.d.ts +22 -1
  35. package/dist/src/core/logger.js +103 -17
  36. package/dist/src/core/logger.js.map +1 -1
  37. package/dist/src/core/logger.test.js +86 -20
  38. package/dist/src/core/logger.test.js.map +1 -1
  39. package/dist/src/core/nonInteractiveToolExecutor.js +1 -1
  40. package/dist/src/core/nonInteractiveToolExecutor.js.map +1 -1
  41. package/dist/src/core/nonInteractiveToolExecutor.test.js +79 -36
  42. package/dist/src/core/nonInteractiveToolExecutor.test.js.map +1 -1
  43. package/dist/src/core/prompts.js +4 -4
  44. package/dist/src/core/prompts.js.map +1 -1
  45. package/dist/src/generated/git-commit.d.ts +7 -0
  46. package/dist/src/generated/git-commit.js +10 -0
  47. package/dist/src/generated/git-commit.js.map +1 -0
  48. package/dist/src/ide/constants.d.ts +6 -0
  49. package/dist/src/ide/constants.js +7 -0
  50. package/dist/src/ide/constants.js.map +1 -0
  51. package/dist/src/ide/detect-ide.js +8 -8
  52. package/dist/src/ide/detect-ide.js.map +1 -1
  53. package/dist/src/ide/ide-client.d.ts +5 -1
  54. package/dist/src/ide/ide-client.js +57 -21
  55. package/dist/src/ide/ide-client.js.map +1 -1
  56. package/dist/src/ide/ide-client.test.d.ts +6 -0
  57. package/dist/src/ide/ide-client.test.js +43 -0
  58. package/dist/src/ide/ide-client.test.js.map +1 -0
  59. package/dist/src/ide/ide-installer.js +5 -4
  60. package/dist/src/ide/ide-installer.js.map +1 -1
  61. package/dist/src/ide/ideContext.d.ts +6 -6
  62. package/dist/src/ide/process-utils.d.ts +14 -0
  63. package/dist/src/ide/process-utils.js +57 -0
  64. package/dist/src/ide/process-utils.js.map +1 -0
  65. package/dist/src/index.d.ts +1 -0
  66. package/dist/src/index.js +1 -0
  67. package/dist/src/index.js.map +1 -1
  68. package/dist/src/mcp/oauth-provider.js +176 -58
  69. package/dist/src/mcp/oauth-provider.js.map +1 -1
  70. package/dist/src/mcp/oauth-provider.test.js +132 -62
  71. package/dist/src/mcp/oauth-provider.test.js.map +1 -1
  72. package/dist/src/mcp/oauth-utils.d.ts +3 -1
  73. package/dist/src/mcp/oauth-utils.js +50 -12
  74. package/dist/src/mcp/oauth-utils.js.map +1 -1
  75. package/dist/src/mcp/oauth-utils.test.js +17 -2
  76. package/dist/src/mcp/oauth-utils.test.js.map +1 -1
  77. package/dist/src/services/loopDetectionService.js +5 -5
  78. package/dist/src/services/loopDetectionService.js.map +1 -1
  79. package/dist/src/services/shellExecutionService.test.js +13 -3
  80. package/dist/src/services/shellExecutionService.test.js.map +1 -1
  81. package/dist/src/telemetry/clearcut-logger/clearcut-logger.d.ts +22 -4
  82. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js +60 -34
  83. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js.map +1 -1
  84. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.d.ts +11 -0
  85. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js +91 -39
  86. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js.map +1 -1
  87. package/dist/src/telemetry/clearcut-logger/event-metadata-key.d.ts +5 -2
  88. package/dist/src/telemetry/clearcut-logger/event-metadata-key.js +10 -11
  89. package/dist/src/telemetry/clearcut-logger/event-metadata-key.js.map +1 -1
  90. package/dist/src/telemetry/constants.d.ts +1 -0
  91. package/dist/src/telemetry/constants.js +1 -0
  92. package/dist/src/telemetry/constants.js.map +1 -1
  93. package/dist/src/telemetry/index.d.ts +2 -2
  94. package/dist/src/telemetry/index.js +2 -2
  95. package/dist/src/telemetry/index.js.map +1 -1
  96. package/dist/src/telemetry/integration.test.circular.js +1 -0
  97. package/dist/src/telemetry/integration.test.circular.js.map +1 -1
  98. package/dist/src/telemetry/loggers.d.ts +2 -1
  99. package/dist/src/telemetry/loggers.js +22 -4
  100. package/dist/src/telemetry/loggers.js.map +1 -1
  101. package/dist/src/telemetry/loggers.test.js +27 -2
  102. package/dist/src/telemetry/loggers.test.js.map +1 -1
  103. package/dist/src/telemetry/metrics.d.ts +4 -0
  104. package/dist/src/telemetry/metrics.js +21 -8
  105. package/dist/src/telemetry/metrics.js.map +1 -1
  106. package/dist/src/telemetry/metrics.test.js +31 -1
  107. package/dist/src/telemetry/metrics.test.js.map +1 -1
  108. package/dist/src/telemetry/sdk.js +64 -36
  109. package/dist/src/telemetry/sdk.js.map +1 -1
  110. package/dist/src/telemetry/sdk.test.d.ts +6 -0
  111. package/dist/src/telemetry/sdk.test.js +82 -0
  112. package/dist/src/telemetry/sdk.test.js.map +1 -0
  113. package/dist/src/telemetry/types.d.ts +8 -1
  114. package/dist/src/telemetry/types.js +8 -0
  115. package/dist/src/telemetry/types.js.map +1 -1
  116. package/dist/src/test-utils/tools.d.ts +21 -6
  117. package/dist/src/test-utils/tools.js +77 -12
  118. package/dist/src/test-utils/tools.js.map +1 -1
  119. package/dist/src/tools/mcp-client.js +40 -10
  120. package/dist/src/tools/mcp-client.js.map +1 -1
  121. package/dist/src/tools/mcp-client.test.js +31 -1
  122. package/dist/src/tools/mcp-client.test.js.map +1 -1
  123. package/dist/src/tools/mcp-tool.js +21 -3
  124. package/dist/src/tools/mcp-tool.js.map +1 -1
  125. package/dist/src/tools/mcp-tool.test.js +57 -0
  126. package/dist/src/tools/mcp-tool.test.js.map +1 -1
  127. package/dist/src/tools/shell.js +25 -8
  128. package/dist/src/tools/shell.js.map +1 -1
  129. package/dist/src/tools/shell.test.js +12 -0
  130. package/dist/src/tools/shell.test.js.map +1 -1
  131. package/dist/src/tools/tool-error.d.ts +1 -0
  132. package/dist/src/tools/tool-error.js +1 -0
  133. package/dist/src/tools/tool-error.js.map +1 -1
  134. package/dist/src/tools/tool-registry.d.ts +3 -3
  135. package/dist/src/tools/tool-registry.js +45 -30
  136. package/dist/src/tools/tool-registry.js.map +1 -1
  137. package/dist/src/tools/tools.d.ts +14 -73
  138. package/dist/src/tools/tools.js +52 -108
  139. package/dist/src/tools/tools.js.map +1 -1
  140. package/dist/src/tools/tools.test.js +91 -2
  141. package/dist/src/tools/tools.test.js.map +1 -1
  142. package/dist/src/tools/web-search.d.ts +4 -5
  143. package/dist/src/tools/web-search.js +51 -50
  144. package/dist/src/tools/web-search.js.map +1 -1
  145. package/dist/src/tools/web-search.test.d.ts +6 -0
  146. package/dist/src/tools/web-search.test.js +139 -0
  147. package/dist/src/tools/web-search.test.js.map +1 -0
  148. package/dist/src/tools/write-file.d.ts +15 -11
  149. package/dist/src/tools/write-file.js +133 -144
  150. package/dist/src/tools/write-file.js.map +1 -1
  151. package/dist/src/tools/write-file.test.js +57 -88
  152. package/dist/src/tools/write-file.test.js.map +1 -1
  153. package/dist/src/utils/browser.js +4 -3
  154. package/dist/src/utils/browser.js.map +1 -1
  155. package/dist/src/utils/editCorrector.js +13 -13
  156. package/dist/src/utils/editCorrector.js.map +1 -1
  157. package/dist/src/utils/editor.js +1 -1
  158. package/dist/src/utils/editor.js.map +1 -1
  159. package/dist/src/utils/editor.test.js +10 -10
  160. package/dist/src/utils/editor.test.js.map +1 -1
  161. package/dist/src/utils/filesearch/crawler.d.ts +15 -0
  162. package/dist/src/utils/filesearch/crawler.js +50 -0
  163. package/dist/src/utils/filesearch/crawler.js.map +1 -0
  164. package/dist/src/utils/filesearch/crawler.test.d.ts +6 -0
  165. package/dist/src/utils/filesearch/crawler.test.js +468 -0
  166. package/dist/src/utils/filesearch/crawler.test.js.map +1 -0
  167. package/dist/src/utils/filesearch/fileSearch.d.ts +9 -53
  168. package/dist/src/utils/filesearch/fileSearch.js +62 -117
  169. package/dist/src/utils/filesearch/fileSearch.js.map +1 -1
  170. package/dist/src/utils/filesearch/fileSearch.test.js +95 -197
  171. package/dist/src/utils/filesearch/fileSearch.test.js.map +1 -1
  172. package/dist/src/utils/filesearch/ignore.d.ts +7 -0
  173. package/dist/src/utils/filesearch/ignore.js +25 -0
  174. package/dist/src/utils/filesearch/ignore.js.map +1 -1
  175. package/dist/src/utils/filesearch/ignore.test.js +89 -2
  176. package/dist/src/utils/filesearch/ignore.test.js.map +1 -1
  177. package/dist/src/utils/memoryDiscovery.js +3 -3
  178. package/dist/src/utils/memoryDiscovery.js.map +1 -1
  179. package/dist/src/utils/memoryDiscovery.test.js +3 -2
  180. package/dist/src/utils/memoryDiscovery.test.js.map +1 -1
  181. package/dist/src/utils/memoryImportProcessor.js +2 -6
  182. package/dist/src/utils/memoryImportProcessor.js.map +1 -1
  183. package/dist/src/utils/paths.d.ts +7 -0
  184. package/dist/src/utils/paths.js +15 -0
  185. package/dist/src/utils/paths.js.map +1 -1
  186. package/dist/src/utils/paths.test.js +74 -2
  187. package/dist/src/utils/paths.test.js.map +1 -1
  188. package/dist/src/utils/secure-browser-launcher.js +4 -3
  189. package/dist/src/utils/secure-browser-launcher.js.map +1 -1
  190. package/dist/src/utils/shell-utils.d.ts +39 -0
  191. package/dist/src/utils/shell-utils.js +72 -2
  192. package/dist/src/utils/shell-utils.js.map +1 -1
  193. package/dist/src/utils/shell-utils.test.js +132 -4
  194. package/dist/src/utils/shell-utils.test.js.map +1 -1
  195. package/dist/src/utils/systemEncoding.js +1 -1
  196. package/dist/src/utils/systemEncoding.js.map +1 -1
  197. package/dist/src/utils/systemEncoding.test.js +23 -23
  198. package/dist/src/utils/systemEncoding.test.js.map +1 -1
  199. package/dist/src/utils/workspaceContext.d.ts +22 -7
  200. package/dist/src/utils/workspaceContext.js +81 -55
  201. package/dist/src/utils/workspaceContext.js.map +1 -1
  202. package/dist/src/utils/workspaceContext.test.js +221 -137
  203. package/dist/src/utils/workspaceContext.test.js.map +1 -1
  204. package/dist/tsconfig.tsbuildinfo +1 -1
  205. package/package.json +4 -1
@@ -4,7 +4,7 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
  import { describe, it, expect, beforeEach, afterEach, vi, } from 'vitest';
7
- import { WriteFileTool } from './write-file.js';
7
+ import { getCorrectedFileContent, WriteFileTool, } from './write-file.js';
8
8
  import { ToolErrorType } from './tool-error.js';
9
9
  import { ToolConfirmationOutcome, } from './tools.js';
10
10
  import { ApprovalMode } from '../config/config.js';
@@ -115,58 +115,57 @@ describe('WriteFileTool', () => {
115
115
  }
116
116
  vi.clearAllMocks();
117
117
  });
118
- describe('validateToolParams', () => {
119
- it('should return null for valid absolute path within root', () => {
118
+ describe('build', () => {
119
+ it('should return an invocation for a valid absolute path within root', () => {
120
120
  const params = {
121
121
  file_path: path.join(rootDir, 'test.txt'),
122
122
  content: 'hello',
123
123
  };
124
- expect(tool.validateToolParams(params)).toBeNull();
124
+ const invocation = tool.build(params);
125
+ expect(invocation).toBeDefined();
126
+ expect(invocation.params).toEqual(params);
125
127
  });
126
- it('should return error for relative path', () => {
128
+ it('should throw an error for a relative path', () => {
127
129
  const params = { file_path: 'test.txt', content: 'hello' };
128
- expect(tool.validateToolParams(params)).toMatch(/File path must be absolute/);
130
+ expect(() => tool.build(params)).toThrow(/File path must be absolute/);
129
131
  });
130
- it('should return error for path outside root', () => {
132
+ it('should throw an error for a path outside root', () => {
131
133
  const outsidePath = path.resolve(tempDir, 'outside-root.txt');
132
134
  const params = {
133
135
  file_path: outsidePath,
134
136
  content: 'hello',
135
137
  };
136
- const error = tool.validateToolParams(params);
137
- expect(error).toContain('File path must be within one of the workspace directories');
138
+ expect(() => tool.build(params)).toThrow(/File path must be within one of the workspace directories/);
138
139
  });
139
- it('should return error if path is a directory', () => {
140
+ it('should throw an error if path is a directory', () => {
140
141
  const dirAsFilePath = path.join(rootDir, 'a_directory');
141
142
  fs.mkdirSync(dirAsFilePath);
142
143
  const params = {
143
144
  file_path: dirAsFilePath,
144
145
  content: 'hello',
145
146
  };
146
- expect(tool.validateToolParams(params)).toMatch(`Path is a directory, not a file: ${dirAsFilePath}`);
147
+ expect(() => tool.build(params)).toThrow(`Path is a directory, not a file: ${dirAsFilePath}`);
147
148
  });
148
- it('should return error if the content is null', () => {
149
+ it('should throw an error if the content is null', () => {
149
150
  const dirAsFilePath = path.join(rootDir, 'a_directory');
150
151
  fs.mkdirSync(dirAsFilePath);
151
152
  const params = {
152
153
  file_path: dirAsFilePath,
153
154
  content: null,
154
155
  }; // Intentionally non-conforming
155
- expect(tool.validateToolParams(params)).toMatch(`params/content must be string`);
156
+ expect(() => tool.build(params)).toThrow('params/content must be string');
156
157
  });
157
- });
158
- describe('getDescription', () => {
159
- it('should return error if the file_path is empty', () => {
158
+ it('should throw error if the file_path is empty', () => {
160
159
  const dirAsFilePath = path.join(rootDir, 'a_directory');
161
160
  fs.mkdirSync(dirAsFilePath);
162
161
  const params = {
163
162
  file_path: '',
164
163
  content: '',
165
164
  };
166
- expect(tool.getDescription(params)).toMatch(`Model did not provide valid parameters for write file tool, missing or empty "file_path"`);
165
+ expect(() => tool.build(params)).toThrow(`Missing or empty "file_path"`);
167
166
  });
168
167
  });
169
- describe('_getCorrectedFileContent', () => {
168
+ describe('getCorrectedFileContent', () => {
170
169
  it('should call ensureCorrectFileContent for a new file', async () => {
171
170
  const filePath = path.join(rootDir, 'new_corrected_file.txt');
172
171
  const proposedContent = 'Proposed new content.';
@@ -174,8 +173,7 @@ describe('WriteFileTool', () => {
174
173
  const abortSignal = new AbortController().signal;
175
174
  // Ensure the mock is set for this specific test case if needed, or rely on beforeEach
176
175
  mockEnsureCorrectFileContent.mockResolvedValue(correctedContent);
177
- // @ts-expect-error _getCorrectedFileContent is private
178
- const result = await tool._getCorrectedFileContent(filePath, proposedContent, abortSignal);
176
+ const result = await getCorrectedFileContent(mockConfig, filePath, proposedContent, abortSignal);
179
177
  expect(mockEnsureCorrectFileContent).toHaveBeenCalledWith(proposedContent, mockGeminiClientInstance, abortSignal);
180
178
  expect(mockEnsureCorrectEdit).not.toHaveBeenCalled();
181
179
  expect(result.correctedContent).toBe(correctedContent);
@@ -199,8 +197,7 @@ describe('WriteFileTool', () => {
199
197
  },
200
198
  occurrences: 1,
201
199
  });
202
- // @ts-expect-error _getCorrectedFileContent is private
203
- const result = await tool._getCorrectedFileContent(filePath, proposedContent, abortSignal);
200
+ const result = await getCorrectedFileContent(mockConfig, filePath, proposedContent, abortSignal);
204
201
  expect(mockEnsureCorrectEdit).toHaveBeenCalledWith(filePath, originalContent, {
205
202
  old_string: originalContent,
206
203
  new_string: proposedContent,
@@ -222,8 +219,7 @@ describe('WriteFileTool', () => {
222
219
  vi.spyOn(fs, 'readFileSync').mockImplementationOnce(() => {
223
220
  throw readError;
224
221
  });
225
- // @ts-expect-error _getCorrectedFileContent is private
226
- const result = await tool._getCorrectedFileContent(filePath, proposedContent, abortSignal);
222
+ const result = await getCorrectedFileContent(mockConfig, filePath, proposedContent, abortSignal);
227
223
  expect(fs.readFileSync).toHaveBeenCalledWith(filePath, 'utf8');
228
224
  expect(mockEnsureCorrectEdit).not.toHaveBeenCalled();
229
225
  expect(mockEnsureCorrectFileContent).not.toHaveBeenCalled();
@@ -240,17 +236,6 @@ describe('WriteFileTool', () => {
240
236
  });
241
237
  describe('shouldConfirmExecute', () => {
242
238
  const abortSignal = new AbortController().signal;
243
- it('should return false if params are invalid (relative path)', async () => {
244
- const params = { file_path: 'relative.txt', content: 'test' };
245
- const confirmation = await tool.shouldConfirmExecute(params, abortSignal);
246
- expect(confirmation).toBe(false);
247
- });
248
- it('should return false if params are invalid (outside root)', async () => {
249
- const outsidePath = path.resolve(tempDir, 'outside-root.txt');
250
- const params = { file_path: outsidePath, content: 'test' };
251
- const confirmation = await tool.shouldConfirmExecute(params, abortSignal);
252
- expect(confirmation).toBe(false);
253
- });
254
239
  it('should return false if _getCorrectedFileContent returns an error', async () => {
255
240
  const filePath = path.join(rootDir, 'confirm_error_file.txt');
256
241
  const params = { file_path: filePath, content: 'test content' };
@@ -260,7 +245,8 @@ describe('WriteFileTool', () => {
260
245
  vi.spyOn(fs, 'readFileSync').mockImplementationOnce(() => {
261
246
  throw readError;
262
247
  });
263
- const confirmation = await tool.shouldConfirmExecute(params, abortSignal);
248
+ const invocation = tool.build(params);
249
+ const confirmation = await invocation.shouldConfirmExecute(abortSignal);
264
250
  expect(confirmation).toBe(false);
265
251
  vi.spyOn(fs, 'readFileSync').mockImplementation(originalReadFileSync);
266
252
  fs.chmodSync(filePath, 0o600);
@@ -271,7 +257,8 @@ describe('WriteFileTool', () => {
271
257
  const correctedContent = 'Corrected new content for confirmation.';
272
258
  mockEnsureCorrectFileContent.mockResolvedValue(correctedContent); // Ensure this mock is active
273
259
  const params = { file_path: filePath, content: proposedContent };
274
- const confirmation = (await tool.shouldConfirmExecute(params, abortSignal));
260
+ const invocation = tool.build(params);
261
+ const confirmation = (await invocation.shouldConfirmExecute(abortSignal));
275
262
  expect(mockEnsureCorrectFileContent).toHaveBeenCalledWith(proposedContent, mockGeminiClientInstance, abortSignal);
276
263
  expect(confirmation).toEqual(expect.objectContaining({
277
264
  title: `Confirm Write: ${path.basename(filePath)}`,
@@ -296,7 +283,8 @@ describe('WriteFileTool', () => {
296
283
  occurrences: 1,
297
284
  });
298
285
  const params = { file_path: filePath, content: proposedContent };
299
- const confirmation = (await tool.shouldConfirmExecute(params, abortSignal));
286
+ const invocation = tool.build(params);
287
+ const confirmation = (await invocation.shouldConfirmExecute(abortSignal));
300
288
  expect(mockEnsureCorrectEdit).toHaveBeenCalledWith(filePath, originalContent, {
301
289
  old_string: originalContent,
302
290
  new_string: proposedContent,
@@ -312,24 +300,6 @@ describe('WriteFileTool', () => {
312
300
  });
313
301
  describe('execute', () => {
314
302
  const abortSignal = new AbortController().signal;
315
- it('should return error if params are invalid (relative path)', async () => {
316
- const params = { file_path: 'relative.txt', content: 'test' };
317
- const result = await tool.execute(params, abortSignal);
318
- expect(result.llmContent).toContain('Could not write file due to invalid parameters:');
319
- expect(result.returnDisplay).toMatch(/File path must be absolute/);
320
- expect(result.error).toEqual({
321
- message: 'File path must be absolute: relative.txt',
322
- type: ToolErrorType.INVALID_TOOL_PARAMS,
323
- });
324
- });
325
- it('should return error if params are invalid (path outside root)', async () => {
326
- const outsidePath = path.resolve(tempDir, 'outside-root.txt');
327
- const params = { file_path: outsidePath, content: 'test' };
328
- const result = await tool.execute(params, abortSignal);
329
- expect(result.llmContent).toContain('Could not write file due to invalid parameters:');
330
- expect(result.returnDisplay).toContain('File path must be within one of the workspace directories');
331
- expect(result.error?.type).toBe(ToolErrorType.INVALID_TOOL_PARAMS);
332
- });
333
303
  it('should return error if _getCorrectedFileContent returns an error during execute', async () => {
334
304
  const filePath = path.join(rootDir, 'execute_error_file.txt');
335
305
  const params = { file_path: filePath, content: 'test content' };
@@ -339,7 +309,8 @@ describe('WriteFileTool', () => {
339
309
  vi.spyOn(fs, 'readFileSync').mockImplementationOnce(() => {
340
310
  throw readError;
341
311
  });
342
- const result = await tool.execute(params, abortSignal);
312
+ const invocation = tool.build(params);
313
+ const result = await invocation.execute(abortSignal);
343
314
  expect(result.llmContent).toContain('Error checking existing file:');
344
315
  expect(result.returnDisplay).toMatch(/Error checking existing file: Simulated read error for execute/);
345
316
  expect(result.error).toEqual({
@@ -355,13 +326,14 @@ describe('WriteFileTool', () => {
355
326
  const correctedContent = 'Corrected new content for execute.';
356
327
  mockEnsureCorrectFileContent.mockResolvedValue(correctedContent);
357
328
  const params = { file_path: filePath, content: proposedContent };
358
- const confirmDetails = await tool.shouldConfirmExecute(params, abortSignal);
329
+ const invocation = tool.build(params);
330
+ const confirmDetails = await invocation.shouldConfirmExecute(abortSignal);
359
331
  if (typeof confirmDetails === 'object' &&
360
332
  'onConfirm' in confirmDetails &&
361
333
  confirmDetails.onConfirm) {
362
334
  await confirmDetails.onConfirm(ToolConfirmationOutcome.ProceedOnce);
363
335
  }
364
- const result = await tool.execute(params, abortSignal);
336
+ const result = await invocation.execute(abortSignal);
365
337
  expect(mockEnsureCorrectFileContent).toHaveBeenCalledWith(proposedContent, mockGeminiClientInstance, abortSignal);
366
338
  expect(result.llmContent).toMatch(/Successfully created and wrote to new file/);
367
339
  expect(fs.existsSync(filePath)).toBe(true);
@@ -387,13 +359,14 @@ describe('WriteFileTool', () => {
387
359
  occurrences: 1,
388
360
  });
389
361
  const params = { file_path: filePath, content: proposedContent };
390
- const confirmDetails = await tool.shouldConfirmExecute(params, abortSignal);
362
+ const invocation = tool.build(params);
363
+ const confirmDetails = await invocation.shouldConfirmExecute(abortSignal);
391
364
  if (typeof confirmDetails === 'object' &&
392
365
  'onConfirm' in confirmDetails &&
393
366
  confirmDetails.onConfirm) {
394
367
  await confirmDetails.onConfirm(ToolConfirmationOutcome.ProceedOnce);
395
368
  }
396
- const result = await tool.execute(params, abortSignal);
369
+ const result = await invocation.execute(abortSignal);
397
370
  expect(mockEnsureCorrectEdit).toHaveBeenCalledWith(filePath, initialContent, {
398
371
  old_string: initialContent,
399
372
  new_string: proposedContent,
@@ -412,14 +385,15 @@ describe('WriteFileTool', () => {
412
385
  const content = 'Content in new directory';
413
386
  mockEnsureCorrectFileContent.mockResolvedValue(content); // Ensure this mock is active
414
387
  const params = { file_path: filePath, content };
388
+ const invocation = tool.build(params);
415
389
  // Simulate confirmation if your logic requires it before execute, or remove if not needed for this path
416
- const confirmDetails = await tool.shouldConfirmExecute(params, abortSignal);
390
+ const confirmDetails = await invocation.shouldConfirmExecute(abortSignal);
417
391
  if (typeof confirmDetails === 'object' &&
418
392
  'onConfirm' in confirmDetails &&
419
393
  confirmDetails.onConfirm) {
420
394
  await confirmDetails.onConfirm(ToolConfirmationOutcome.ProceedOnce);
421
395
  }
422
- await tool.execute(params, abortSignal);
396
+ await invocation.execute(abortSignal);
423
397
  expect(fs.existsSync(dirPath)).toBe(true);
424
398
  expect(fs.statSync(dirPath).isDirectory()).toBe(true);
425
399
  expect(fs.existsSync(filePath)).toBe(true);
@@ -434,7 +408,8 @@ describe('WriteFileTool', () => {
434
408
  content,
435
409
  modified_by_user: true,
436
410
  };
437
- const result = await tool.execute(params, abortSignal);
411
+ const invocation = tool.build(params);
412
+ const result = await invocation.execute(abortSignal);
438
413
  expect(result.llmContent).toMatch(/User modified the `content`/);
439
414
  });
440
415
  it('should not include modification message when proposed content is not modified', async () => {
@@ -446,7 +421,8 @@ describe('WriteFileTool', () => {
446
421
  content,
447
422
  modified_by_user: false,
448
423
  };
449
- const result = await tool.execute(params, abortSignal);
424
+ const invocation = tool.build(params);
425
+ const result = await invocation.execute(abortSignal);
450
426
  expect(result.llmContent).not.toMatch(/User modified the `content`/);
451
427
  });
452
428
  it('should not include modification message when modified_by_user is not provided', async () => {
@@ -457,7 +433,8 @@ describe('WriteFileTool', () => {
457
433
  file_path: filePath,
458
434
  content,
459
435
  };
460
- const result = await tool.execute(params, abortSignal);
436
+ const invocation = tool.build(params);
437
+ const result = await invocation.execute(abortSignal);
461
438
  expect(result.llmContent).not.toMatch(/User modified the `content`/);
462
439
  });
463
440
  });
@@ -467,26 +444,14 @@ describe('WriteFileTool', () => {
467
444
  file_path: path.join(rootDir, 'file.txt'),
468
445
  content: 'test content',
469
446
  };
470
- expect(tool.validateToolParams(params)).toBeNull();
447
+ expect(() => tool.build(params)).not.toThrow();
471
448
  });
472
449
  it('should reject paths outside workspace root', () => {
473
450
  const params = {
474
451
  file_path: '/etc/passwd',
475
452
  content: 'malicious',
476
453
  };
477
- const error = tool.validateToolParams(params);
478
- expect(error).toContain('File path must be within one of the workspace directories');
479
- expect(error).toContain(rootDir);
480
- });
481
- it('should provide clear error message with workspace directories', () => {
482
- const outsidePath = path.join(tempDir, 'outside-root.txt');
483
- const params = {
484
- file_path: outsidePath,
485
- content: 'test',
486
- };
487
- const error = tool.validateToolParams(params);
488
- expect(error).toContain('File path must be within one of the workspace directories');
489
- expect(error).toContain(rootDir);
454
+ expect(() => tool.build(params)).toThrow(/File path must be within one of the workspace directories/);
490
455
  });
491
456
  });
492
457
  describe('specific error types for write failures', () => {
@@ -502,10 +467,11 @@ describe('WriteFileTool', () => {
502
467
  throw error;
503
468
  });
504
469
  const params = { file_path: filePath, content };
505
- const result = await tool.execute(params, abortSignal);
470
+ const invocation = tool.build(params);
471
+ const result = await invocation.execute(abortSignal);
506
472
  expect(result.error?.type).toBe(ToolErrorType.PERMISSION_DENIED);
507
473
  expect(result.llmContent).toContain(`Permission denied writing to file: ${filePath} (EACCES)`);
508
- expect(result.returnDisplay).toContain('Permission denied');
474
+ expect(result.returnDisplay).toContain(`Permission denied writing to file: ${filePath} (EACCES)`);
509
475
  vi.spyOn(fs, 'writeFileSync').mockImplementation(originalWriteFileSync);
510
476
  });
511
477
  it('should return NO_SPACE_LEFT error when write fails with ENOSPC', async () => {
@@ -519,10 +485,11 @@ describe('WriteFileTool', () => {
519
485
  throw error;
520
486
  });
521
487
  const params = { file_path: filePath, content };
522
- const result = await tool.execute(params, abortSignal);
488
+ const invocation = tool.build(params);
489
+ const result = await invocation.execute(abortSignal);
523
490
  expect(result.error?.type).toBe(ToolErrorType.NO_SPACE_LEFT);
524
491
  expect(result.llmContent).toContain(`No space left on device: ${filePath} (ENOSPC)`);
525
- expect(result.returnDisplay).toContain('No space left');
492
+ expect(result.returnDisplay).toContain(`No space left on device: ${filePath} (ENOSPC)`);
526
493
  vi.spyOn(fs, 'writeFileSync').mockImplementation(originalWriteFileSync);
527
494
  });
528
495
  it('should return TARGET_IS_DIRECTORY error when write fails with EISDIR', async () => {
@@ -544,10 +511,11 @@ describe('WriteFileTool', () => {
544
511
  throw error;
545
512
  });
546
513
  const params = { file_path: dirPath, content };
547
- const result = await tool.execute(params, abortSignal);
514
+ const invocation = tool.build(params);
515
+ const result = await invocation.execute(abortSignal);
548
516
  expect(result.error?.type).toBe(ToolErrorType.TARGET_IS_DIRECTORY);
549
517
  expect(result.llmContent).toContain(`Target is a directory, not a file: ${dirPath} (EISDIR)`);
550
- expect(result.returnDisplay).toContain('Target is a directory');
518
+ expect(result.returnDisplay).toContain(`Target is a directory, not a file: ${dirPath} (EISDIR)`);
551
519
  vi.spyOn(fs, 'existsSync').mockImplementation(originalExistsSync);
552
520
  vi.spyOn(fs, 'writeFileSync').mockImplementation(originalWriteFileSync);
553
521
  });
@@ -561,10 +529,11 @@ describe('WriteFileTool', () => {
561
529
  throw new Error('Generic write error');
562
530
  });
563
531
  const params = { file_path: filePath, content };
564
- const result = await tool.execute(params, abortSignal);
532
+ const invocation = tool.build(params);
533
+ const result = await invocation.execute(abortSignal);
565
534
  expect(result.error?.type).toBe(ToolErrorType.FILE_WRITE_FAILURE);
566
535
  expect(result.llmContent).toContain('Error writing to file: Generic write error');
567
- expect(result.returnDisplay).toContain('Generic write error');
536
+ expect(result.returnDisplay).toContain('Error writing to file: Generic write error');
568
537
  });
569
538
  });
570
539
  });
@@ -1 +1 @@
1
- {"version":3,"file":"write-file.test.js","sourceRoot":"","sources":["../../../src/tools/write-file.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"write-file.test.js","sourceRoot":"","sources":["../../../src/tools/write-file.test.ts"],"names":[],"mappings":"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"}
@@ -14,18 +14,19 @@ export function shouldAttemptBrowserLaunch() {
14
14
  // A list of browser names that indicate we should not attempt to open a
15
15
  // web browser for the user.
16
16
  const browserBlocklist = ['www-browser'];
17
- const browserEnv = process.env.BROWSER;
17
+ const browserEnv = process.env['BROWSER'];
18
18
  if (browserEnv && browserBlocklist.includes(browserEnv)) {
19
19
  return false;
20
20
  }
21
21
  // Common environment variables used in CI/CD or other non-interactive shells.
22
- if (process.env.CI || process.env.DEBIAN_FRONTEND === 'noninteractive') {
22
+ if (process.env['CI'] ||
23
+ process.env['DEBIAN_FRONTEND'] === 'noninteractive') {
23
24
  return false;
24
25
  }
25
26
  // The presence of SSH_CONNECTION indicates a remote session.
26
27
  // We should not attempt to launch a browser unless a display is explicitly available
27
28
  // (checked below for Linux).
28
- const isSSH = !!process.env.SSH_CONNECTION;
29
+ const isSSH = !!process.env['SSH_CONNECTION'];
29
30
  // On Linux, the presence of a display server is a strong indicator of a GUI.
30
31
  if (process.platform === 'linux') {
31
32
  // These are environment variables that can indicate a running compositor on
@@ -1 +1 @@
1
- {"version":3,"file":"browser.js","sourceRoot":"","sources":["../../../src/utils/browser.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;;GAMG;AACH,MAAM,UAAU,0BAA0B;IACxC,wEAAwE;IACxE,4BAA4B;IAC5B,MAAM,gBAAgB,GAAG,CAAC,aAAa,CAAC,CAAC;IACzC,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;IACvC,IAAI,UAAU,IAAI,gBAAgB,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QACxD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,8EAA8E;IAC9E,IAAI,OAAO,CAAC,GAAG,CAAC,EAAE,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe,KAAK,gBAAgB,EAAE,CAAC;QACvE,OAAO,KAAK,CAAC;IACf,CAAC;IAED,6DAA6D;IAC7D,qFAAqF;IACrF,6BAA6B;IAC7B,MAAM,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;IAE3C,6EAA6E;IAC7E,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACjC,4EAA4E;QAC5E,SAAS;QACT,MAAM,gBAAgB,GAAG,CAAC,SAAS,EAAE,iBAAiB,EAAE,YAAY,CAAC,CAAC;QACtE,MAAM,UAAU,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAClE,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,8EAA8E;IAC9E,oEAAoE;IACpE,IAAI,KAAK,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QAC1C,OAAO,KAAK,CAAC;IACf,CAAC;IAED,6DAA6D;IAC7D,qDAAqD;IACrD,mEAAmE;IACnE,OAAO,IAAI,CAAC;AACd,CAAC"}
1
+ {"version":3,"file":"browser.js","sourceRoot":"","sources":["../../../src/utils/browser.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;;GAMG;AACH,MAAM,UAAU,0BAA0B;IACxC,wEAAwE;IACxE,4BAA4B;IAC5B,MAAM,gBAAgB,GAAG,CAAC,aAAa,CAAC,CAAC;IACzC,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAC1C,IAAI,UAAU,IAAI,gBAAgB,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QACxD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,8EAA8E;IAC9E,IACE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;QACjB,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,KAAK,gBAAgB,EACnD,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,6DAA6D;IAC7D,qFAAqF;IACrF,6BAA6B;IAC7B,MAAM,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAE9C,6EAA6E;IAC7E,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACjC,4EAA4E;QAC5E,SAAS;QACT,MAAM,gBAAgB,GAAG,CAAC,SAAS,EAAE,iBAAiB,EAAE,YAAY,CAAC,CAAC;QACtE,MAAM,UAAU,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAClE,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,8EAA8E;IAC9E,oEAAoE;IACpE,IAAI,KAAK,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QAC1C,OAAO,KAAK,CAAC;IACf,CAAC;IAED,6DAA6D;IAC7D,qDAAqD;IACrD,mEAAmE;IACnE,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -78,7 +78,7 @@ async function findLastEditTimestamp(filePath, client) {
78
78
  const { response } = part.functionResponse;
79
79
  if (response && !('error' in response) && 'output' in response) {
80
80
  id = part.functionResponse.id;
81
- content = response.output;
81
+ content = response['output'];
82
82
  }
83
83
  }
84
84
  if (!id || content === undefined)
@@ -289,9 +289,9 @@ Return ONLY the corrected target snippet in the specified JSON format with the k
289
289
  try {
290
290
  const result = await geminiClient.generateJson(contents, OLD_STRING_CORRECTION_SCHEMA, abortSignal, EditModel, EditConfig);
291
291
  if (result &&
292
- typeof result.corrected_target_snippet === 'string' &&
293
- result.corrected_target_snippet.length > 0) {
294
- return result.corrected_target_snippet;
292
+ typeof result['corrected_target_snippet'] === 'string' &&
293
+ result['corrected_target_snippet'].length > 0) {
294
+ return result['corrected_target_snippet'];
295
295
  }
296
296
  else {
297
297
  return problematicSnippet;
@@ -353,9 +353,9 @@ Return ONLY the corrected string in the specified JSON format with the key 'corr
353
353
  try {
354
354
  const result = await geminiClient.generateJson(contents, NEW_STRING_CORRECTION_SCHEMA, abortSignal, EditModel, EditConfig);
355
355
  if (result &&
356
- typeof result.corrected_new_string === 'string' &&
357
- result.corrected_new_string.length > 0) {
358
- return result.corrected_new_string;
356
+ typeof result['corrected_new_string'] === 'string' &&
357
+ result['corrected_new_string'].length > 0) {
358
+ return result['corrected_new_string'];
359
359
  }
360
360
  else {
361
361
  return originalNewString;
@@ -404,9 +404,9 @@ Return ONLY the corrected string in the specified JSON format with the key 'corr
404
404
  try {
405
405
  const result = await geminiClient.generateJson(contents, CORRECT_NEW_STRING_ESCAPING_SCHEMA, abortSignal, EditModel, EditConfig);
406
406
  if (result &&
407
- typeof result.corrected_new_string_escaping === 'string' &&
408
- result.corrected_new_string_escaping.length > 0) {
409
- return result.corrected_new_string_escaping;
407
+ typeof result['corrected_new_string_escaping'] === 'string' &&
408
+ result['corrected_new_string_escaping'].length > 0) {
409
+ return result['corrected_new_string_escaping'];
410
410
  }
411
411
  else {
412
412
  return potentiallyProblematicNewString;
@@ -450,9 +450,9 @@ Return ONLY the corrected string in the specified JSON format with the key 'corr
450
450
  try {
451
451
  const result = await client.generateJson(contents, CORRECT_STRING_ESCAPING_SCHEMA, abortSignal, EditModel, EditConfig);
452
452
  if (result &&
453
- typeof result.corrected_string_escaping === 'string' &&
454
- result.corrected_string_escaping.length > 0) {
455
- return result.corrected_string_escaping;
453
+ typeof result['corrected_string_escaping'] === 'string' &&
454
+ result['corrected_string_escaping'].length > 0) {
455
+ return result['corrected_string_escaping'];
456
456
  }
457
457
  else {
458
458
  return potentiallyProblematicString;