@google/gemini-cli-core 0.7.0-nightly.20250912.68035591 → 0.7.0-preview.0

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 (246) hide show
  1. package/dist/index.d.ts +5 -4
  2. package/dist/index.js +5 -4
  3. package/dist/index.js.map +1 -1
  4. package/dist/src/code_assist/converter.d.ts +1 -0
  5. package/dist/src/code_assist/converter.js +1 -0
  6. package/dist/src/code_assist/converter.js.map +1 -1
  7. package/dist/src/code_assist/converter.test.js +10 -0
  8. package/dist/src/code_assist/converter.test.js.map +1 -1
  9. package/dist/src/code_assist/oauth-credential-storage.d.ts +5 -7
  10. package/dist/src/code_assist/oauth-credential-storage.js +5 -8
  11. package/dist/src/code_assist/oauth-credential-storage.js.map +1 -1
  12. package/dist/src/code_assist/oauth-credential-storage.test.js +35 -33
  13. package/dist/src/code_assist/oauth-credential-storage.test.js.map +1 -1
  14. package/dist/src/code_assist/oauth2.js +28 -2
  15. package/dist/src/code_assist/oauth2.js.map +1 -1
  16. package/dist/src/code_assist/oauth2.test.js +674 -536
  17. package/dist/src/code_assist/oauth2.test.js.map +1 -1
  18. package/dist/src/config/config.d.ts +19 -0
  19. package/dist/src/config/config.js +48 -6
  20. package/dist/src/config/config.js.map +1 -1
  21. package/dist/src/config/config.test.js +93 -1
  22. package/dist/src/config/config.test.js.map +1 -1
  23. package/dist/src/config/models.d.ts +1 -0
  24. package/dist/src/config/models.js +1 -0
  25. package/dist/src/config/models.js.map +1 -1
  26. package/dist/src/core/baseLlmClient.d.ts +1 -0
  27. package/dist/src/core/baseLlmClient.js +24 -0
  28. package/dist/src/core/baseLlmClient.js.map +1 -1
  29. package/dist/src/core/baseLlmClient.test.js +63 -0
  30. package/dist/src/core/baseLlmClient.test.js.map +1 -1
  31. package/dist/src/core/client.d.ts +3 -4
  32. package/dist/src/core/client.js +62 -145
  33. package/dist/src/core/client.js.map +1 -1
  34. package/dist/src/core/client.test.js +119 -202
  35. package/dist/src/core/client.test.js.map +1 -1
  36. package/dist/src/core/coreToolScheduler.test.js +9 -0
  37. package/dist/src/core/coreToolScheduler.test.js.map +1 -1
  38. package/dist/src/core/geminiChat.d.ts +16 -11
  39. package/dist/src/core/geminiChat.js +124 -150
  40. package/dist/src/core/geminiChat.js.map +1 -1
  41. package/dist/src/core/geminiChat.test.js +342 -204
  42. package/dist/src/core/geminiChat.test.js.map +1 -1
  43. package/dist/src/core/loggingContentGenerator.js +5 -5
  44. package/dist/src/core/loggingContentGenerator.js.map +1 -1
  45. package/dist/src/core/nonInteractiveToolExecutor.test.js +1 -0
  46. package/dist/src/core/nonInteractiveToolExecutor.test.js.map +1 -1
  47. package/dist/src/generated/git-commit.d.ts +2 -2
  48. package/dist/src/generated/git-commit.js +2 -2
  49. package/dist/src/generated/git-commit.js.map +1 -1
  50. package/dist/src/ide/constants.d.ts +1 -0
  51. package/dist/src/ide/constants.js +1 -0
  52. package/dist/src/ide/constants.js.map +1 -1
  53. package/dist/src/ide/detect-ide.d.ts +44 -14
  54. package/dist/src/ide/detect-ide.js +29 -69
  55. package/dist/src/ide/detect-ide.js.map +1 -1
  56. package/dist/src/ide/detect-ide.test.js +29 -46
  57. package/dist/src/ide/detect-ide.test.js.map +1 -1
  58. package/dist/src/ide/ide-client.d.ts +28 -17
  59. package/dist/src/ide/ide-client.js +125 -57
  60. package/dist/src/ide/ide-client.js.map +1 -1
  61. package/dist/src/ide/ide-client.test.js +44 -10
  62. package/dist/src/ide/ide-client.test.js.map +1 -1
  63. package/dist/src/ide/ide-installer.d.ts +2 -2
  64. package/dist/src/ide/ide-installer.js +15 -11
  65. package/dist/src/ide/ide-installer.js.map +1 -1
  66. package/dist/src/ide/ide-installer.test.js +30 -12
  67. package/dist/src/ide/ide-installer.test.js.map +1 -1
  68. package/dist/src/ide/ideContext.d.ts +0 -93
  69. package/dist/src/ide/ideContext.js +0 -45
  70. package/dist/src/ide/ideContext.js.map +1 -1
  71. package/dist/src/ide/types.d.ts +141 -0
  72. package/dist/src/ide/types.js +73 -0
  73. package/dist/src/ide/types.js.map +1 -1
  74. package/dist/src/index.d.ts +4 -2
  75. package/dist/src/index.js +4 -2
  76. package/dist/src/index.js.map +1 -1
  77. package/dist/src/mcp/oauth-provider.d.ts +4 -1
  78. package/dist/src/mcp/oauth-provider.js +32 -26
  79. package/dist/src/mcp/oauth-provider.js.map +1 -1
  80. package/dist/src/mcp/oauth-token-storage.d.ts +2 -0
  81. package/dist/src/mcp/oauth-token-storage.js +25 -0
  82. package/dist/src/mcp/oauth-token-storage.js.map +1 -1
  83. package/dist/src/mcp/oauth-token-storage.test.js +251 -160
  84. package/dist/src/mcp/oauth-token-storage.test.js.map +1 -1
  85. package/dist/src/mcp/token-storage/index.d.ts +11 -0
  86. package/dist/src/mcp/token-storage/index.js +12 -0
  87. package/dist/src/mcp/token-storage/index.js.map +1 -0
  88. package/dist/src/policy/policy-engine.js +11 -2
  89. package/dist/src/policy/policy-engine.js.map +1 -1
  90. package/dist/src/policy/policy-engine.test.js +45 -0
  91. package/dist/src/policy/policy-engine.test.js.map +1 -1
  92. package/dist/src/routing/modelRouterService.js +37 -3
  93. package/dist/src/routing/modelRouterService.js.map +1 -1
  94. package/dist/src/routing/modelRouterService.test.js +37 -11
  95. package/dist/src/routing/modelRouterService.test.js.map +1 -1
  96. package/dist/src/routing/strategies/classifierStrategy.d.ts +12 -0
  97. package/dist/src/routing/strategies/classifierStrategy.js +173 -0
  98. package/dist/src/routing/strategies/classifierStrategy.js.map +1 -0
  99. package/dist/src/routing/strategies/classifierStrategy.test.d.ts +6 -0
  100. package/dist/src/routing/strategies/classifierStrategy.test.js +192 -0
  101. package/dist/src/routing/strategies/classifierStrategy.test.js.map +1 -0
  102. package/dist/src/routing/strategies/compositeStrategy.js +4 -3
  103. package/dist/src/routing/strategies/compositeStrategy.js.map +1 -1
  104. package/dist/src/routing/strategies/overrideStrategy.js +13 -12
  105. package/dist/src/routing/strategies/overrideStrategy.js.map +1 -1
  106. package/dist/src/routing/strategies/overrideStrategy.test.js +3 -2
  107. package/dist/src/routing/strategies/overrideStrategy.test.js.map +1 -1
  108. package/dist/src/services/chatRecordingService.d.ts +2 -1
  109. package/dist/src/services/chatRecordingService.js +3 -3
  110. package/dist/src/services/chatRecordingService.js.map +1 -1
  111. package/dist/src/services/chatRecordingService.test.js +8 -3
  112. package/dist/src/services/chatRecordingService.test.js.map +1 -1
  113. package/dist/src/services/gitService.js +9 -12
  114. package/dist/src/services/gitService.js.map +1 -1
  115. package/dist/src/services/gitService.test.js +10 -20
  116. package/dist/src/services/gitService.test.js.map +1 -1
  117. package/dist/src/services/loopDetectionService.js +23 -18
  118. package/dist/src/services/loopDetectionService.js.map +1 -1
  119. package/dist/src/services/loopDetectionService.test.js +27 -13
  120. package/dist/src/services/loopDetectionService.test.js.map +1 -1
  121. package/dist/src/services/shellExecutionService.js +30 -15
  122. package/dist/src/services/shellExecutionService.js.map +1 -1
  123. package/dist/src/services/shellExecutionService.test.js +43 -11
  124. package/dist/src/services/shellExecutionService.test.js.map +1 -1
  125. package/dist/src/telemetry/activity-detector.d.ts +41 -0
  126. package/dist/src/telemetry/activity-detector.js +61 -0
  127. package/dist/src/telemetry/activity-detector.js.map +1 -0
  128. package/dist/src/telemetry/activity-detector.test.d.ts +6 -0
  129. package/dist/src/telemetry/activity-detector.test.js +136 -0
  130. package/dist/src/telemetry/activity-detector.test.js.map +1 -0
  131. package/dist/src/telemetry/activity-types.d.ts +19 -0
  132. package/dist/src/telemetry/activity-types.js +21 -0
  133. package/dist/src/telemetry/activity-types.js.map +1 -0
  134. package/dist/src/telemetry/clearcut-logger/clearcut-logger.d.ts +14 -2
  135. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js +109 -3
  136. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js.map +1 -1
  137. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js +63 -5
  138. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js.map +1 -1
  139. package/dist/src/telemetry/clearcut-logger/event-metadata-key.d.ts +12 -1
  140. package/dist/src/telemetry/clearcut-logger/event-metadata-key.js +27 -0
  141. package/dist/src/telemetry/clearcut-logger/event-metadata-key.js.map +1 -1
  142. package/dist/src/telemetry/config.d.ts +31 -0
  143. package/dist/src/telemetry/config.js +76 -0
  144. package/dist/src/telemetry/config.js.map +1 -0
  145. package/dist/src/telemetry/config.test.d.ts +6 -0
  146. package/dist/src/telemetry/config.test.js +124 -0
  147. package/dist/src/telemetry/config.test.js.map +1 -0
  148. package/dist/src/telemetry/constants.d.ts +9 -0
  149. package/dist/src/telemetry/constants.js +9 -0
  150. package/dist/src/telemetry/constants.js.map +1 -1
  151. package/dist/src/telemetry/gcp-exporters.d.ts +34 -0
  152. package/dist/src/telemetry/gcp-exporters.js +117 -0
  153. package/dist/src/telemetry/gcp-exporters.js.map +1 -0
  154. package/dist/src/telemetry/gcp-exporters.test.d.ts +6 -0
  155. package/dist/src/telemetry/gcp-exporters.test.js +318 -0
  156. package/dist/src/telemetry/gcp-exporters.test.js.map +1 -0
  157. package/dist/src/telemetry/index.d.ts +5 -1
  158. package/dist/src/telemetry/index.js +5 -1
  159. package/dist/src/telemetry/index.js.map +1 -1
  160. package/dist/src/telemetry/loggers.d.ts +8 -1
  161. package/dist/src/telemetry/loggers.js +111 -2
  162. package/dist/src/telemetry/loggers.js.map +1 -1
  163. package/dist/src/telemetry/loggers.test.js +207 -4
  164. package/dist/src/telemetry/loggers.test.js.map +1 -1
  165. package/dist/src/telemetry/metrics.d.ts +3 -0
  166. package/dist/src/telemetry/metrics.js +43 -1
  167. package/dist/src/telemetry/metrics.js.map +1 -1
  168. package/dist/src/telemetry/metrics.test.js +42 -0
  169. package/dist/src/telemetry/metrics.test.js.map +1 -1
  170. package/dist/src/telemetry/sdk.js +20 -2
  171. package/dist/src/telemetry/sdk.js.map +1 -1
  172. package/dist/src/telemetry/sdk.test.js +108 -0
  173. package/dist/src/telemetry/sdk.test.js.map +1 -1
  174. package/dist/src/telemetry/types.d.ts +50 -3
  175. package/dist/src/telemetry/types.js +91 -6
  176. package/dist/src/telemetry/types.js.map +1 -1
  177. package/dist/src/telemetry/uiTelemetry.d.ts +1 -1
  178. package/dist/src/telemetry/uiTelemetry.js +2 -3
  179. package/dist/src/telemetry/uiTelemetry.js.map +1 -1
  180. package/dist/src/telemetry/uiTelemetry.test.js +11 -11
  181. package/dist/src/telemetry/uiTelemetry.test.js.map +1 -1
  182. package/dist/src/tools/edit.js +4 -2
  183. package/dist/src/tools/edit.js.map +1 -1
  184. package/dist/src/tools/edit.test.js +77 -1
  185. package/dist/src/tools/edit.test.js.map +1 -1
  186. package/dist/src/tools/message-bus-integration.test.d.ts +6 -0
  187. package/dist/src/tools/message-bus-integration.test.js +183 -0
  188. package/dist/src/tools/message-bus-integration.test.js.map +1 -0
  189. package/dist/src/tools/shell.js +8 -11
  190. package/dist/src/tools/shell.js.map +1 -1
  191. package/dist/src/tools/shell.test.js +33 -37
  192. package/dist/src/tools/shell.test.js.map +1 -1
  193. package/dist/src/tools/smart-edit.d.ts +0 -1
  194. package/dist/src/tools/smart-edit.js +3 -15
  195. package/dist/src/tools/smart-edit.js.map +1 -1
  196. package/dist/src/tools/smart-edit.test.js +16 -1
  197. package/dist/src/tools/smart-edit.test.js.map +1 -1
  198. package/dist/src/tools/tool-registry.js +1 -0
  199. package/dist/src/tools/tool-registry.js.map +1 -1
  200. package/dist/src/tools/tools.d.ts +13 -4
  201. package/dist/src/tools/tools.js +101 -3
  202. package/dist/src/tools/tools.js.map +1 -1
  203. package/dist/src/tools/write-file.js +2 -2
  204. package/dist/src/tools/write-file.js.map +1 -1
  205. package/dist/src/tools/write-file.test.js +16 -10
  206. package/dist/src/tools/write-file.test.js.map +1 -1
  207. package/dist/src/tools/write-todos.d.ts +25 -0
  208. package/dist/src/tools/write-todos.js +150 -0
  209. package/dist/src/tools/write-todos.js.map +1 -0
  210. package/dist/src/tools/write-todos.test.d.ts +6 -0
  211. package/dist/src/tools/write-todos.test.js +89 -0
  212. package/dist/src/tools/write-todos.test.js.map +1 -0
  213. package/dist/src/utils/editCorrector.d.ts +7 -6
  214. package/dist/src/utils/editCorrector.js +61 -18
  215. package/dist/src/utils/editCorrector.js.map +1 -1
  216. package/dist/src/utils/editCorrector.test.js +30 -79
  217. package/dist/src/utils/editCorrector.test.js.map +1 -1
  218. package/dist/src/utils/editor.js +31 -44
  219. package/dist/src/utils/editor.js.map +1 -1
  220. package/dist/src/utils/editor.test.js +61 -75
  221. package/dist/src/utils/editor.test.js.map +1 -1
  222. package/dist/src/utils/errorParsing.js +2 -2
  223. package/dist/src/utils/errorParsing.js.map +1 -1
  224. package/dist/src/utils/errorParsing.test.js +7 -7
  225. package/dist/src/utils/errorParsing.test.js.map +1 -1
  226. package/dist/src/utils/fileUtils.test.js +17 -8
  227. package/dist/src/utils/fileUtils.test.js.map +1 -1
  228. package/dist/src/utils/memoryDiscovery.test.js +12 -6
  229. package/dist/src/utils/memoryDiscovery.test.js.map +1 -1
  230. package/dist/src/utils/nextSpeakerChecker.d.ts +2 -2
  231. package/dist/src/utils/nextSpeakerChecker.js +8 -2
  232. package/dist/src/utils/nextSpeakerChecker.js.map +1 -1
  233. package/dist/src/utils/nextSpeakerChecker.test.js +40 -33
  234. package/dist/src/utils/nextSpeakerChecker.test.js.map +1 -1
  235. package/dist/src/utils/shell-utils.d.ts +5 -0
  236. package/dist/src/utils/shell-utils.js +23 -0
  237. package/dist/src/utils/shell-utils.js.map +1 -1
  238. package/dist/src/utils/textUtils.d.ts +5 -0
  239. package/dist/src/utils/textUtils.js +14 -0
  240. package/dist/src/utils/textUtils.js.map +1 -1
  241. package/dist/src/utils/textUtils.test.d.ts +6 -0
  242. package/dist/src/utils/textUtils.test.js +59 -0
  243. package/dist/src/utils/textUtils.test.js.map +1 -0
  244. package/dist/tsconfig.tsbuildinfo +1 -1
  245. package/package.json +5 -1
  246. package/dist/google-gemini-cli-core-0.6.0-nightly.tgz +0 -0
@@ -0,0 +1,150 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { BaseDeclarativeTool, BaseToolInvocation, Kind, } from './tools.js';
7
+ // Insprired by langchain/deepagents.
8
+ export const WRITE_TODOS_DESCRIPTION = `This tool can help you list out the current subtasks that are required to be completed for a given user request. The list of subtasks helps you keep track of the current task, organize complex queries and help ensure that you don't miss any steps. With this list, the user can also see the current progress you are making in executing a given task.
9
+
10
+ Depending on the task complexity, you should first divide a given task into subtasks and then use this tool to list out the subtasks that are required to be completed for a given user request.
11
+ Each of the subtasks should be clear and distinct.
12
+
13
+ Use this tool for complex queries that require multiple steps. If you find that the request is actually complex after you have started executing the user task, create a todo list and use it. If execution of the user task requires multiple steps, planning and generally is higher complexity than a simple Q&A, use this tool.
14
+
15
+ DO NOT use this tool for simple tasks that can be completed in less than 2 steps. If the user query is simple and straightforward, do not use the tool. If you can respond with an answer in a single turn then this tool is not required.
16
+
17
+ ## Task state definitions
18
+
19
+ - pending: Work has not begun on a given subtask.
20
+ - in_progress: Marked just prior to beginning work on a given subtask. You should only have one subtask as in_progress at a time.
21
+ - completed: Subtask was succesfully completed with no errors or issues. If the subtask required more steps to complete, update the todo list with the subtasks. All steps should be identified as completed only when they are completed.
22
+ - cancelled: As you update the todo list, some tasks are not required anymore due to the dynamic nature of the task. In this case, mark the subtasks as cancelled.
23
+
24
+
25
+ ## Methodology for using this tool
26
+ 1. Use this todo list list as soon as you receive a user request based on the complexity of the task.
27
+ 2. Keep track of every subtask that you update the list with.
28
+ 3. Mark a subtask as in_progress before you begin working on it. You should only have one subtask as in_progress at a time.
29
+ 4. Update the subtask list as you proceed in executing the task. The subtask list is not static and should reflect your progress and current plans, which may evolve as you acquire new information.
30
+ 5. Mark a subtask as completed when you have completed it.
31
+ 6. Mark a subtask as cancelled if the subtask is no longer needed.
32
+ 7. You must update the todo list as soon as you start, stop or cancel a subtask. Don't batch or wait to update the todo list.
33
+
34
+
35
+ ## Examples of When to Use the Todo List
36
+
37
+ <example>
38
+ User request: Create a website with a React for creating fancy logos using gemini-2.5-flash-image
39
+
40
+ ToDo list created by the agent:
41
+ 1. Initialize a new React project environment (e.g., using Vite).
42
+ 2. Design and build the core UI components: a text input (prompt field) for the logo description, selection controls for style parameters (if the API supports them), and an image preview area.
43
+ 3. Implement state management (e.g., React Context or Zustand) to manage the user's input prompt, the API loading status (pending, success, error), and the resulting image data.
44
+ 4. Create an API service module within the React app (using "fetch" or "axios") to securely format and send the prompt data via an HTTP POST request to the specified "gemini-2.5-flash-image" (Gemini model) endpoint.
45
+ 5. Implement asynchronous logic to handle the API call: show a loading indicator while the request is pending, retrieve the generated image (e.g., as a URL or base64 string) upon success, and display any errors.
46
+ 6. Display the returned "fancy logo" from the API response in the preview area component.
47
+ 7. Add functionality (e.g., a "Download" button) to allow the user to save the generated image file.
48
+ 8. Deploy the application to a web server or hosting platform.
49
+
50
+ <reasoning>
51
+ The agent used the todo list to break the task into distinct, manageable steps:
52
+ 1. Building an entire interactive web application from scratch is a highly complex, multi-stage process involving setup, UI development, logic integration, and deployment.
53
+ 2. The agent inferred the core functionality required for a "logo creator," such as UI controls for customization (Task 3) and an export feature (Task 7), which must be tracked as distinct goals.
54
+ 3. The agent rightly inferred the requirement of an API service model for interacting with the image model endpoint.
55
+ </reasoning>
56
+ </example>
57
+
58
+
59
+ ## Examples of When NOT to Use the Todo List
60
+
61
+ <example>
62
+ User request: Ensure that the test <test file> passes.
63
+
64
+ Agent:
65
+ <Goes into a loop of running the test, identifying errors, and updating the code until the test passes.>
66
+
67
+ <reasoning>
68
+ The agent did not use the todo list because this task could be completed by a tight loop of execute test->edit->execute test.
69
+ </reasoning>
70
+ </example>
71
+ `;
72
+ class WriteTodosToolInvocation extends BaseToolInvocation {
73
+ getDescription() {
74
+ const count = this.params.todos?.length ?? 0;
75
+ if (count === 0) {
76
+ return 'Cleared todo list';
77
+ }
78
+ return `Set ${count} todo(s)`;
79
+ }
80
+ async execute(_signal, _updateOutput) {
81
+ const todos = this.params.todos ?? [];
82
+ const todoListString = todos
83
+ .map((todo, index) => `${index + 1}. [${todo.status}] ${todo.description}`)
84
+ .join('\n');
85
+ const llmContent = todos.length > 0
86
+ ? `Successfully updated the todo list. The current list is now:\n${todoListString}`
87
+ : 'Successfully cleared the todo list.';
88
+ return {
89
+ llmContent,
90
+ returnDisplay: llmContent,
91
+ };
92
+ }
93
+ }
94
+ export class WriteTodosTool extends BaseDeclarativeTool {
95
+ static Name = 'write_todos_list';
96
+ constructor() {
97
+ super(WriteTodosTool.Name, 'Write Todos', WRITE_TODOS_DESCRIPTION, Kind.Other, {
98
+ type: 'object',
99
+ properties: {
100
+ todos: {
101
+ type: 'array',
102
+ description: 'The complete list of todo items. This will replace the existing list.',
103
+ items: {
104
+ type: 'object',
105
+ description: 'A single todo item.',
106
+ properties: {
107
+ description: {
108
+ type: 'string',
109
+ description: 'The description of the task.',
110
+ },
111
+ status: {
112
+ type: 'string',
113
+ description: 'The current status of the task.',
114
+ enum: ['pending', 'in_progress', 'completed'],
115
+ },
116
+ },
117
+ required: ['description', 'status'],
118
+ },
119
+ },
120
+ },
121
+ required: ['todos'],
122
+ });
123
+ }
124
+ validateToolParamValues(params) {
125
+ const todos = params?.todos;
126
+ if (!params || !Array.isArray(todos)) {
127
+ return '`todos` parameter must be an array';
128
+ }
129
+ for (const todo of todos) {
130
+ if (typeof todo !== 'object' || todo === null) {
131
+ return 'Each todo item must be an object';
132
+ }
133
+ if (typeof todo.description !== 'string' || !todo.description.trim()) {
134
+ return 'Each todo must have a non-empty description string';
135
+ }
136
+ if (!['pending', 'in_progress', 'completed'].includes(todo.status)) {
137
+ return 'Each todo must have a valid status (pending, in_progress, or completed)';
138
+ }
139
+ }
140
+ const inProgressCount = todos.filter((todo) => todo.status === 'in_progress').length;
141
+ if (inProgressCount > 1) {
142
+ return 'Invalid parameters: Only one task can be "in_progress" at a time.';
143
+ }
144
+ return null;
145
+ }
146
+ createInvocation(params) {
147
+ return new WriteTodosToolInvocation(params);
148
+ }
149
+ }
150
+ //# sourceMappingURL=write-todos.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"write-todos.js","sourceRoot":"","sources":["../../../src/tools/write-todos.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ export {};
@@ -0,0 +1,89 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { describe, expect, it } from 'vitest';
7
+ import { WriteTodosTool } from './write-todos.js';
8
+ describe('WriteTodosTool', () => {
9
+ const tool = new WriteTodosTool();
10
+ const signal = new AbortController().signal;
11
+ describe('validation', () => {
12
+ it('should not throw for valid parameters', async () => {
13
+ const params = {
14
+ todos: [
15
+ { description: 'Task 1', status: 'pending' },
16
+ { description: 'Task 2', status: 'in_progress' },
17
+ { description: 'Task 3', status: 'completed' },
18
+ ],
19
+ };
20
+ await expect(tool.buildAndExecute(params, signal)).resolves.toBeDefined();
21
+ });
22
+ it('should not throw for an empty list', async () => {
23
+ const params = {
24
+ todos: [],
25
+ };
26
+ await expect(tool.buildAndExecute(params, signal)).resolves.toBeDefined();
27
+ });
28
+ it('should throw an error if todos is not an array', async () => {
29
+ const params = {
30
+ todos: 'not-an-array',
31
+ };
32
+ await expect(tool.buildAndExecute(params, signal)).rejects.toThrow('params/todos must be array');
33
+ });
34
+ it('should throw an error if a todo item is not an object', async () => {
35
+ const params = {
36
+ todos: ['not-an-object'],
37
+ };
38
+ await expect(tool.buildAndExecute(params, signal)).rejects.toThrow('params/todos/0 must be object');
39
+ });
40
+ it('should throw an error if a todo description is missing or empty', async () => {
41
+ const params = {
42
+ todos: [{ description: ' ', status: 'pending' }],
43
+ };
44
+ await expect(tool.buildAndExecute(params, signal)).rejects.toThrow('Each todo must have a non-empty description string');
45
+ });
46
+ it('should throw an error if a todo status is invalid', async () => {
47
+ const params = {
48
+ todos: [{ description: 'Task 1', status: 'invalid-status' }],
49
+ };
50
+ await expect(tool.buildAndExecute(params, signal)).rejects.toThrow('params/todos/0/status must be equal to one of the allowed values');
51
+ });
52
+ it('should throw an error if more than one task is in_progress', async () => {
53
+ const params = {
54
+ todos: [
55
+ { description: 'Task 1', status: 'in_progress' },
56
+ { description: 'Task 2', status: 'in_progress' },
57
+ ],
58
+ };
59
+ await expect(tool.buildAndExecute(params, signal)).rejects.toThrow('Invalid parameters: Only one task can be "in_progress" at a time.');
60
+ });
61
+ });
62
+ describe('execute', () => {
63
+ it('should return a success message for clearing the list', async () => {
64
+ const params = {
65
+ todos: [],
66
+ };
67
+ const result = await tool.buildAndExecute(params, signal);
68
+ expect(result.llmContent).toBe('Successfully cleared the todo list.');
69
+ expect(result.returnDisplay).toBe('Successfully cleared the todo list.');
70
+ });
71
+ it('should return a formatted todo list on success', async () => {
72
+ const params = {
73
+ todos: [
74
+ { description: 'First task', status: 'completed' },
75
+ { description: 'Second task', status: 'in_progress' },
76
+ { description: 'Third task', status: 'pending' },
77
+ ],
78
+ };
79
+ const result = await tool.buildAndExecute(params, signal);
80
+ const expectedOutput = `Successfully updated the todo list. The current list is now:
81
+ 1. [completed] First task
82
+ 2. [in_progress] Second task
83
+ 3. [pending] Third task`;
84
+ expect(result.llmContent).toBe(expectedOutput);
85
+ expect(result.returnDisplay).toBe(expectedOutput);
86
+ });
87
+ });
88
+ });
89
+ //# sourceMappingURL=write-todos.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"write-todos.test.js","sourceRoot":"","sources":["../../../src/tools/write-todos.test.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
  import type { GeminiClient } from '../core/client.js';
7
+ import type { BaseLlmClient } from '../core/baseLlmClient.js';
7
8
  import type { EditToolParams } from '../tools/edit.js';
8
9
  /**
9
10
  * Defines the structure of the parameters within CorrectedEditResult
@@ -32,15 +33,15 @@ export interface CorrectedEditResult {
32
33
  * EditToolParams (as CorrectedEditParams) and the final occurrences count.
33
34
  */
34
35
  export declare function ensureCorrectEdit(filePath: string, currentContent: string, originalParams: EditToolParams, // This is the EditToolParams from edit.ts, without \'corrected\'
35
- client: GeminiClient, abortSignal: AbortSignal): Promise<CorrectedEditResult>;
36
- export declare function ensureCorrectFileContent(content: string, client: GeminiClient, abortSignal: AbortSignal): Promise<string>;
37
- export declare function correctOldStringMismatch(geminiClient: GeminiClient, fileContent: string, problematicSnippet: string, abortSignal: AbortSignal): Promise<string>;
36
+ geminiClient: GeminiClient, baseLlmClient: BaseLlmClient, abortSignal: AbortSignal): Promise<CorrectedEditResult>;
37
+ export declare function ensureCorrectFileContent(content: string, baseLlmClient: BaseLlmClient, abortSignal: AbortSignal): Promise<string>;
38
+ export declare function correctOldStringMismatch(baseLlmClient: BaseLlmClient, fileContent: string, problematicSnippet: string, abortSignal: AbortSignal): Promise<string>;
38
39
  /**
39
40
  * Adjusts the new_string to align with a corrected old_string, maintaining the original intent.
40
41
  */
41
- export declare function correctNewString(geminiClient: GeminiClient, originalOldString: string, correctedOldString: string, originalNewString: string, abortSignal: AbortSignal): Promise<string>;
42
- export declare function correctNewStringEscaping(geminiClient: GeminiClient, oldString: string, potentiallyProblematicNewString: string, abortSignal: AbortSignal): Promise<string>;
43
- export declare function correctStringEscaping(potentiallyProblematicString: string, client: GeminiClient, abortSignal: AbortSignal): Promise<string>;
42
+ export declare function correctNewString(baseLlmClient: BaseLlmClient, originalOldString: string, correctedOldString: string, originalNewString: string, abortSignal: AbortSignal): Promise<string>;
43
+ export declare function correctNewStringEscaping(baseLlmClient: BaseLlmClient, oldString: string, potentiallyProblematicNewString: string, abortSignal: AbortSignal): Promise<string>;
44
+ export declare function correctStringEscaping(potentiallyProblematicString: string, baseLlmClient: BaseLlmClient, abortSignal: AbortSignal): Promise<string>;
44
45
  /**
45
46
  * Unescapes a string that might have been overly escaped by an LLM.
46
47
  */
@@ -12,12 +12,23 @@ import { LruCache } from './LruCache.js';
12
12
  import { DEFAULT_GEMINI_FLASH_LITE_MODEL } from '../config/models.js';
13
13
  import { isFunctionResponse, isFunctionCall, } from '../utils/messageInspectors.js';
14
14
  import * as fs from 'node:fs';
15
- const EditModel = DEFAULT_GEMINI_FLASH_LITE_MODEL;
16
- const EditConfig = {
15
+ import { promptIdContext } from './promptIdContext.js';
16
+ const EDIT_MODEL = DEFAULT_GEMINI_FLASH_LITE_MODEL;
17
+ const EDIT_CONFIG = {
17
18
  thinkingConfig: {
18
19
  thinkingBudget: 0,
19
20
  },
20
21
  };
22
+ const CODE_CORRECTION_SYSTEM_PROMPT = `
23
+ You are an expert code-editing assistant. Your task is to analyze a failed edit attempt and provide a corrected version of the text snippets.
24
+ The correction should be as minimal as possible, staying very close to the original.
25
+ Focus ONLY on fixing issues like whitespace, indentation, line endings, or incorrect escaping.
26
+ Do NOT invent a completely new edit. Your job is to fix the provided parameters to make the edit succeed.
27
+ Return ONLY the corrected snippet in the specified JSON format.
28
+ `.trim();
29
+ function getPromptId() {
30
+ return promptIdContext.getStore() ?? `edit-corrector-${Date.now()}`;
31
+ }
21
32
  const MAX_CACHE_SIZE = 50;
22
33
  // Cache for ensureCorrectEdit results
23
34
  const editCorrectionCache = new LruCache(MAX_CACHE_SIZE);
@@ -109,7 +120,7 @@ async function findLastEditTimestamp(filePath, client) {
109
120
  * EditToolParams (as CorrectedEditParams) and the final occurrences count.
110
121
  */
111
122
  export async function ensureCorrectEdit(filePath, currentContent, originalParams, // This is the EditToolParams from edit.ts, without \'corrected\'
112
- client, abortSignal) {
123
+ geminiClient, baseLlmClient, abortSignal) {
113
124
  const cacheKey = `${currentContent}---${originalParams.old_string}---${originalParams.new_string}`;
114
125
  const cachedResult = editCorrectionCache.get(cacheKey);
115
126
  if (cachedResult) {
@@ -123,7 +134,7 @@ client, abortSignal) {
123
134
  let occurrences = countOccurrences(currentContent, finalOldString);
124
135
  if (occurrences === expectedReplacements) {
125
136
  if (newStringPotentiallyEscaped) {
126
- finalNewString = await correctNewStringEscaping(client, finalOldString, originalParams.new_string, abortSignal);
137
+ finalNewString = await correctNewStringEscaping(baseLlmClient, finalOldString, originalParams.new_string, abortSignal);
127
138
  }
128
139
  }
129
140
  else if (occurrences > expectedReplacements) {
@@ -161,7 +172,7 @@ client, abortSignal) {
161
172
  if (occurrences === expectedReplacements) {
162
173
  finalOldString = unescapedOldStringAttempt;
163
174
  if (newStringPotentiallyEscaped) {
164
- finalNewString = await correctNewString(client, originalParams.old_string, // original old
175
+ finalNewString = await correctNewString(baseLlmClient, originalParams.old_string, // original old
165
176
  unescapedOldStringAttempt, // corrected old
166
177
  originalParams.new_string, // original new (which is potentially escaped)
167
178
  abortSignal);
@@ -172,7 +183,7 @@ client, abortSignal) {
172
183
  // In order to keep from clobbering edits made outside our system,
173
184
  // let's check if there was a more recent edit to the file than what
174
185
  // our system has done
175
- const lastEditedByUsTime = await findLastEditTimestamp(filePath, client);
186
+ const lastEditedByUsTime = await findLastEditTimestamp(filePath, geminiClient);
176
187
  // Add a 1-second buffer to account for timing inaccuracies. If the file
177
188
  // was modified more than a second after the last edit tool was run, we
178
189
  // can assume it was modified by something else.
@@ -191,14 +202,14 @@ client, abortSignal) {
191
202
  }
192
203
  }
193
204
  }
194
- const llmCorrectedOldString = await correctOldStringMismatch(client, currentContent, unescapedOldStringAttempt, abortSignal);
205
+ const llmCorrectedOldString = await correctOldStringMismatch(baseLlmClient, currentContent, unescapedOldStringAttempt, abortSignal);
195
206
  const llmOldOccurrences = countOccurrences(currentContent, llmCorrectedOldString);
196
207
  if (llmOldOccurrences === expectedReplacements) {
197
208
  finalOldString = llmCorrectedOldString;
198
209
  occurrences = llmOldOccurrences;
199
210
  if (newStringPotentiallyEscaped) {
200
211
  const baseNewStringForLLMCorrection = unescapeStringForGeminiBug(originalParams.new_string);
201
- finalNewString = await correctNewString(client, originalParams.old_string, // original old
212
+ finalNewString = await correctNewString(baseLlmClient, originalParams.old_string, // original old
202
213
  llmCorrectedOldString, // corrected old
203
214
  baseNewStringForLLMCorrection, // base new for correction
204
215
  abortSignal);
@@ -239,7 +250,7 @@ client, abortSignal) {
239
250
  editCorrectionCache.set(cacheKey, result);
240
251
  return result;
241
252
  }
242
- export async function ensureCorrectFileContent(content, client, abortSignal) {
253
+ export async function ensureCorrectFileContent(content, baseLlmClient, abortSignal) {
243
254
  const cachedResult = fileContentCorrectionCache.get(content);
244
255
  if (cachedResult) {
245
256
  return cachedResult;
@@ -249,7 +260,7 @@ export async function ensureCorrectFileContent(content, client, abortSignal) {
249
260
  fileContentCorrectionCache.set(content, content);
250
261
  return content;
251
262
  }
252
- const correctedContent = await correctStringEscaping(content, client, abortSignal);
263
+ const correctedContent = await correctStringEscaping(content, baseLlmClient, abortSignal);
253
264
  fileContentCorrectionCache.set(content, correctedContent);
254
265
  return correctedContent;
255
266
  }
@@ -264,7 +275,7 @@ const OLD_STRING_CORRECTION_SCHEMA = {
264
275
  },
265
276
  required: ['corrected_target_snippet'],
266
277
  };
267
- export async function correctOldStringMismatch(geminiClient, fileContent, problematicSnippet, abortSignal) {
278
+ export async function correctOldStringMismatch(baseLlmClient, fileContent, problematicSnippet, abortSignal) {
268
279
  const prompt = `
269
280
  Context: A process needs to find an exact literal, unique match for a specific text snippet within a file's content. The provided snippet failed to match exactly. This is most likely because it has been overly escaped.
270
281
 
@@ -287,7 +298,15 @@ Return ONLY the corrected target snippet in the specified JSON format with the k
287
298
  `.trim();
288
299
  const contents = [{ role: 'user', parts: [{ text: prompt }] }];
289
300
  try {
290
- const result = await geminiClient.generateJson(contents, OLD_STRING_CORRECTION_SCHEMA, abortSignal, EditModel, EditConfig);
301
+ const result = await baseLlmClient.generateJson({
302
+ contents,
303
+ schema: OLD_STRING_CORRECTION_SCHEMA,
304
+ abortSignal,
305
+ model: EDIT_MODEL,
306
+ config: EDIT_CONFIG,
307
+ systemInstruction: CODE_CORRECTION_SYSTEM_PROMPT,
308
+ promptId: getPromptId(),
309
+ });
291
310
  if (result &&
292
311
  typeof result['corrected_target_snippet'] === 'string' &&
293
312
  result['corrected_target_snippet'].length > 0) {
@@ -319,7 +338,7 @@ const NEW_STRING_CORRECTION_SCHEMA = {
319
338
  /**
320
339
  * Adjusts the new_string to align with a corrected old_string, maintaining the original intent.
321
340
  */
322
- export async function correctNewString(geminiClient, originalOldString, correctedOldString, originalNewString, abortSignal) {
341
+ export async function correctNewString(baseLlmClient, originalOldString, correctedOldString, originalNewString, abortSignal) {
323
342
  if (originalOldString === correctedOldString) {
324
343
  return originalNewString;
325
344
  }
@@ -351,7 +370,15 @@ Return ONLY the corrected string in the specified JSON format with the key 'corr
351
370
  `.trim();
352
371
  const contents = [{ role: 'user', parts: [{ text: prompt }] }];
353
372
  try {
354
- const result = await geminiClient.generateJson(contents, NEW_STRING_CORRECTION_SCHEMA, abortSignal, EditModel, EditConfig);
373
+ const result = await baseLlmClient.generateJson({
374
+ contents,
375
+ schema: NEW_STRING_CORRECTION_SCHEMA,
376
+ abortSignal,
377
+ model: EDIT_MODEL,
378
+ config: EDIT_CONFIG,
379
+ systemInstruction: CODE_CORRECTION_SYSTEM_PROMPT,
380
+ promptId: getPromptId(),
381
+ });
355
382
  if (result &&
356
383
  typeof result['corrected_new_string'] === 'string' &&
357
384
  result['corrected_new_string'].length > 0) {
@@ -379,7 +406,7 @@ const CORRECT_NEW_STRING_ESCAPING_SCHEMA = {
379
406
  },
380
407
  required: ['corrected_new_string_escaping'],
381
408
  };
382
- export async function correctNewStringEscaping(geminiClient, oldString, potentiallyProblematicNewString, abortSignal) {
409
+ export async function correctNewStringEscaping(baseLlmClient, oldString, potentiallyProblematicNewString, abortSignal) {
383
410
  const prompt = `
384
411
  Context: A text replacement operation is planned. The text to be replaced (old_string) has been correctly identified in the file. However, the replacement text (new_string) might have been improperly escaped by a previous LLM generation (e.g. too many backslashes for newlines like \\n instead of \n, or unnecessarily quotes like \\"Hello\\" instead of "Hello").
385
412
 
@@ -402,7 +429,15 @@ Return ONLY the corrected string in the specified JSON format with the key 'corr
402
429
  `.trim();
403
430
  const contents = [{ role: 'user', parts: [{ text: prompt }] }];
404
431
  try {
405
- const result = await geminiClient.generateJson(contents, CORRECT_NEW_STRING_ESCAPING_SCHEMA, abortSignal, EditModel, EditConfig);
432
+ const result = await baseLlmClient.generateJson({
433
+ contents,
434
+ schema: CORRECT_NEW_STRING_ESCAPING_SCHEMA,
435
+ abortSignal,
436
+ model: EDIT_MODEL,
437
+ config: EDIT_CONFIG,
438
+ systemInstruction: CODE_CORRECTION_SYSTEM_PROMPT,
439
+ promptId: getPromptId(),
440
+ });
406
441
  if (result &&
407
442
  typeof result['corrected_new_string_escaping'] === 'string' &&
408
443
  result['corrected_new_string_escaping'].length > 0) {
@@ -430,7 +465,7 @@ const CORRECT_STRING_ESCAPING_SCHEMA = {
430
465
  },
431
466
  required: ['corrected_string_escaping'],
432
467
  };
433
- export async function correctStringEscaping(potentiallyProblematicString, client, abortSignal) {
468
+ export async function correctStringEscaping(potentiallyProblematicString, baseLlmClient, abortSignal) {
434
469
  const prompt = `
435
470
  Context: An LLM has just generated potentially_problematic_string and the text might have been improperly escaped (e.g. too many backslashes for newlines like \\n instead of \n, or unnecessarily quotes like \\"Hello\\" instead of "Hello").
436
471
 
@@ -448,7 +483,15 @@ Return ONLY the corrected string in the specified JSON format with the key 'corr
448
483
  `.trim();
449
484
  const contents = [{ role: 'user', parts: [{ text: prompt }] }];
450
485
  try {
451
- const result = await client.generateJson(contents, CORRECT_STRING_ESCAPING_SCHEMA, abortSignal, EditModel, EditConfig);
486
+ const result = await baseLlmClient.generateJson({
487
+ contents,
488
+ schema: CORRECT_STRING_ESCAPING_SCHEMA,
489
+ abortSignal,
490
+ model: EDIT_MODEL,
491
+ config: EDIT_CONFIG,
492
+ systemInstruction: CODE_CORRECTION_SYSTEM_PROMPT,
493
+ promptId: getPromptId(),
494
+ });
452
495
  if (result &&
453
496
  typeof result['corrected_string_escaping'] === 'string' &&
454
497
  result['corrected_string_escaping'].length > 0) {
@@ -1 +1 @@
1
- {"version":3,"file":"editCorrector.js","sourceRoot":"","sources":["../../../src/utils/editCorrector.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"editCorrector.js","sourceRoot":"","sources":["../../../src/utils/editCorrector.ts"],"names":[],"mappings":"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"}