@google/gemini-cli-core 0.23.0-preview.3 → 0.24.0-nightly.20251227.37be16243

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 (151) hide show
  1. package/dist/docs/cli/settings.md +7 -5
  2. package/dist/docs/get-started/configuration.md +67 -0
  3. package/dist/google-gemini-cli-core-0.24.0-nightly.20251226.546baf993.tgz +0 -0
  4. package/dist/src/agents/a2a-client-manager.d.ts +73 -0
  5. package/dist/src/agents/a2a-client-manager.js +165 -0
  6. package/dist/src/agents/a2a-client-manager.js.map +1 -0
  7. package/dist/src/agents/a2a-client-manager.test.d.ts +6 -0
  8. package/dist/src/agents/a2a-client-manager.test.js +211 -0
  9. package/dist/src/agents/a2a-client-manager.test.js.map +1 -0
  10. package/dist/src/agents/local-executor.js +1 -0
  11. package/dist/src/agents/local-executor.js.map +1 -1
  12. package/dist/src/availability/policyHelpers.js +0 -2
  13. package/dist/src/availability/policyHelpers.js.map +1 -1
  14. package/dist/src/code_assist/server.js +7 -2
  15. package/dist/src/code_assist/server.js.map +1 -1
  16. package/dist/src/code_assist/server.test.js +3 -0
  17. package/dist/src/code_assist/server.test.js.map +1 -1
  18. package/dist/src/config/config.d.ts +25 -4
  19. package/dist/src/config/config.js +37 -6
  20. package/dist/src/config/config.js.map +1 -1
  21. package/dist/src/config/config.test.js +18 -0
  22. package/dist/src/config/config.test.js.map +1 -1
  23. package/dist/src/config/models.d.ts +1 -9
  24. package/dist/src/config/models.js +1 -11
  25. package/dist/src/config/models.js.map +1 -1
  26. package/dist/src/config/models.test.js +16 -16
  27. package/dist/src/config/models.test.js.map +1 -1
  28. package/dist/src/core/client.d.ts +1 -1
  29. package/dist/src/core/client.js +3 -3
  30. package/dist/src/core/client.js.map +1 -1
  31. package/dist/src/core/contentGenerator.js +2 -2
  32. package/dist/src/core/contentGenerator.js.map +1 -1
  33. package/dist/src/core/coreToolScheduler.d.ts +5 -85
  34. package/dist/src/core/coreToolScheduler.js +13 -184
  35. package/dist/src/core/coreToolScheduler.js.map +1 -1
  36. package/dist/src/core/coreToolScheduler.test.js +18 -365
  37. package/dist/src/core/coreToolScheduler.test.js.map +1 -1
  38. package/dist/src/core/turn.d.ts +3 -21
  39. package/dist/src/core/turn.js +1 -0
  40. package/dist/src/core/turn.js.map +1 -1
  41. package/dist/src/fallback/handler.js +0 -6
  42. package/dist/src/fallback/handler.js.map +1 -1
  43. package/dist/src/generated/git-commit.d.ts +2 -2
  44. package/dist/src/generated/git-commit.js +2 -2
  45. package/dist/src/generated/git-commit.js.map +1 -1
  46. package/dist/src/hooks/hookPlanner.d.ts +1 -5
  47. package/dist/src/hooks/hookPlanner.js +2 -9
  48. package/dist/src/hooks/hookPlanner.js.map +1 -1
  49. package/dist/src/hooks/hookPlanner.test.js +1 -2
  50. package/dist/src/hooks/hookPlanner.test.js.map +1 -1
  51. package/dist/src/hooks/hookRegistry.d.ts +5 -10
  52. package/dist/src/hooks/hookRegistry.js +39 -12
  53. package/dist/src/hooks/hookRegistry.js.map +1 -1
  54. package/dist/src/hooks/hookRegistry.test.js +93 -2
  55. package/dist/src/hooks/hookRegistry.test.js.map +1 -1
  56. package/dist/src/hooks/hookRunner.d.ts +3 -1
  57. package/dist/src/hooks/hookRunner.js +20 -3
  58. package/dist/src/hooks/hookRunner.js.map +1 -1
  59. package/dist/src/hooks/hookRunner.test.js +58 -2
  60. package/dist/src/hooks/hookRunner.test.js.map +1 -1
  61. package/dist/src/hooks/hookSystem.js +1 -1
  62. package/dist/src/hooks/hookSystem.js.map +1 -1
  63. package/dist/src/hooks/index.d.ts +1 -1
  64. package/dist/src/hooks/index.js +1 -1
  65. package/dist/src/hooks/index.js.map +1 -1
  66. package/dist/src/hooks/trustedHooks.d.ts +28 -0
  67. package/dist/src/hooks/trustedHooks.js +90 -0
  68. package/dist/src/hooks/trustedHooks.js.map +1 -0
  69. package/dist/src/hooks/trustedHooks.test.d.ts +6 -0
  70. package/dist/src/hooks/trustedHooks.test.js +154 -0
  71. package/dist/src/hooks/trustedHooks.test.js.map +1 -0
  72. package/dist/src/hooks/types.d.ts +15 -11
  73. package/dist/src/hooks/types.js +19 -30
  74. package/dist/src/hooks/types.js.map +1 -1
  75. package/dist/src/hooks/types.test.js +1 -24
  76. package/dist/src/hooks/types.test.js.map +1 -1
  77. package/dist/src/ide/ide-client.js +3 -0
  78. package/dist/src/ide/ide-client.js.map +1 -1
  79. package/dist/src/index.d.ts +1 -0
  80. package/dist/src/index.js +1 -0
  81. package/dist/src/index.js.map +1 -1
  82. package/dist/src/policy/config.js +2 -1
  83. package/dist/src/policy/config.js.map +1 -1
  84. package/dist/src/policy/persistence.test.js +6 -1
  85. package/dist/src/policy/persistence.test.js.map +1 -1
  86. package/dist/src/policy/policy-engine.d.ts +10 -1
  87. package/dist/src/policy/policy-engine.js +24 -4
  88. package/dist/src/policy/policy-engine.js.map +1 -1
  89. package/dist/src/policy/policy-engine.test.js +26 -2
  90. package/dist/src/policy/policy-engine.test.js.map +1 -1
  91. package/dist/src/policy/shell-safety.test.js +2 -1
  92. package/dist/src/policy/shell-safety.test.js.map +1 -1
  93. package/dist/src/policy/toml-loader.d.ts +3 -5
  94. package/dist/src/policy/toml-loader.js +35 -20
  95. package/dist/src/policy/toml-loader.js.map +1 -1
  96. package/dist/src/policy/toml-loader.test.js +28 -7
  97. package/dist/src/policy/toml-loader.test.js.map +1 -1
  98. package/dist/src/policy/types.d.ts +15 -0
  99. package/dist/src/routing/strategies/overrideStrategy.js +2 -2
  100. package/dist/src/routing/strategies/overrideStrategy.js.map +1 -1
  101. package/dist/src/scheduler/types.d.ts +95 -0
  102. package/dist/src/scheduler/types.js +7 -0
  103. package/dist/src/scheduler/types.js.map +1 -0
  104. package/dist/src/services/environmentSanitization.d.ts +15 -0
  105. package/dist/src/services/environmentSanitization.js +141 -0
  106. package/dist/src/services/environmentSanitization.js.map +1 -0
  107. package/dist/src/services/environmentSanitization.test.d.ts +6 -0
  108. package/dist/src/services/environmentSanitization.test.js +284 -0
  109. package/dist/src/services/environmentSanitization.test.js.map +1 -0
  110. package/dist/src/services/gitService.js +10 -1
  111. package/dist/src/services/gitService.js.map +1 -1
  112. package/dist/src/services/gitService.test.js +18 -0
  113. package/dist/src/services/gitService.test.js.map +1 -1
  114. package/dist/src/services/shellExecutionService.d.ts +2 -0
  115. package/dist/src/services/shellExecutionService.js +5 -65
  116. package/dist/src/services/shellExecutionService.js.map +1 -1
  117. package/dist/src/services/shellExecutionService.test.js +26 -3
  118. package/dist/src/services/shellExecutionService.test.js.map +1 -1
  119. package/dist/src/telemetry/loggers.test.circular.js +1 -0
  120. package/dist/src/telemetry/loggers.test.circular.js.map +1 -1
  121. package/dist/src/tools/mcp-client.d.ts +3 -2
  122. package/dist/src/tools/mcp-client.js +7 -6
  123. package/dist/src/tools/mcp-client.js.map +1 -1
  124. package/dist/src/tools/mcp-client.test.js +47 -42
  125. package/dist/src/tools/mcp-client.test.js.map +1 -1
  126. package/dist/src/tools/shell.js +6 -1
  127. package/dist/src/tools/shell.js.map +1 -1
  128. package/dist/src/tools/tools.d.ts +1 -1
  129. package/dist/src/tools/tools.js +1 -1
  130. package/dist/src/utils/checkpointUtils.d.ts +1 -1
  131. package/dist/src/utils/fileUtils.d.ts +4 -0
  132. package/dist/src/utils/fileUtils.js +53 -0
  133. package/dist/src/utils/fileUtils.js.map +1 -1
  134. package/dist/src/utils/fileUtils.test.js +112 -1
  135. package/dist/src/utils/fileUtils.test.js.map +1 -1
  136. package/dist/src/utils/generateContentResponseUtilities.d.ts +2 -1
  137. package/dist/src/utils/generateContentResponseUtilities.js +96 -0
  138. package/dist/src/utils/generateContentResponseUtilities.js.map +1 -1
  139. package/dist/src/utils/generateContentResponseUtilities.test.js +221 -1
  140. package/dist/src/utils/generateContentResponseUtilities.test.js.map +1 -1
  141. package/dist/src/utils/terminal.d.ts +2 -0
  142. package/dist/src/utils/terminal.js +6 -0
  143. package/dist/src/utils/terminal.js.map +1 -1
  144. package/dist/src/utils/tool-utils.d.ts +9 -0
  145. package/dist/src/utils/tool-utils.js +29 -0
  146. package/dist/src/utils/tool-utils.js.map +1 -1
  147. package/dist/src/utils/tool-utils.test.js +15 -1
  148. package/dist/src/utils/tool-utils.test.js.map +1 -1
  149. package/dist/tsconfig.tsbuildinfo +1 -1
  150. package/package.json +2 -1
  151. package/dist/google-gemini-cli-core-0.23.0-preview.2.tgz +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"terminal.js","sourceRoot":"","sources":["../../../src/utils/terminal.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3C,MAAM,UAAU,iBAAiB;IAC/B,wCAAwC;IACxC,iEAAiE;IACjE,gEAAgE;IAChE,aAAa,CAAC,4BAA4B,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,kBAAkB;IAChC,yCAAyC;IACzC,aAAa,CAAC,4BAA4B,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,2BAA2B;IACzC,aAAa,CAAC,UAAU,CAAC,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,4BAA4B;IAC1C,aAAa,CAAC,SAAS,CAAC,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,kBAAkB;IAChC,aAAa,CAAC,UAAU,CAAC,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,mBAAmB;IACjC,aAAa,CAAC,UAAU,CAAC,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,oBAAoB;IAClC,aAAa,CAAC,aAAa,CAAC,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,mBAAmB;IACjC,aAAa,CAAC,aAAa,CAAC,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,0BAA0B,CACxC,kBAA2B,EAC3B,cAAuB;IAEvB,OAAO,kBAAkB,IAAI,CAAC,cAAc,CAAC;AAC/C,CAAC"}
1
+ {"version":3,"file":"terminal.js","sourceRoot":"","sources":["../../../src/utils/terminal.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3C,MAAM,UAAU,iBAAiB;IAC/B,wCAAwC;IACxC,iEAAiE;IACjE,gEAAgE;IAChE,aAAa,CAAC,4BAA4B,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,kBAAkB;IAChC,yCAAyC;IACzC,aAAa,CAAC,4BAA4B,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,2BAA2B;IACzC,aAAa,CAAC,UAAU,CAAC,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,4BAA4B;IAC1C,aAAa,CAAC,SAAS,CAAC,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,qBAAqB;IACnC,aAAa,CAAC,YAAY,CAAC,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,sBAAsB;IACpC,aAAa,CAAC,YAAY,CAAC,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,kBAAkB;IAChC,aAAa,CAAC,UAAU,CAAC,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,mBAAmB;IACjC,aAAa,CAAC,UAAU,CAAC,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,oBAAoB;IAClC,aAAa,CAAC,aAAa,CAAC,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,mBAAmB;IACjC,aAAa,CAAC,aAAa,CAAC,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,0BAA0B,CACxC,kBAA2B,EAC3B,cAAuB;IAEvB,OAAO,kBAAkB,IAAI,CAAC,cAAc,CAAC;AAC/C,CAAC"}
@@ -4,6 +4,15 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
  import type { AnyDeclarativeTool, AnyToolInvocation } from '../index.js';
7
+ /**
8
+ * Generates a suggestion string for a tool name that was not found in the registry.
9
+ * It finds the closest matches based on Levenshtein distance.
10
+ * @param unknownToolName The tool name that was not found.
11
+ * @param allToolNames The list of all available tool names.
12
+ * @param topN The number of suggestions to return. Defaults to 3.
13
+ * @returns A suggestion string like " Did you mean 'tool'?" or " Did you mean one of: 'tool1', 'tool2'?", or an empty string if no suggestions are found.
14
+ */
15
+ export declare function getToolSuggestion(unknownToolName: string, allToolNames: string[], topN?: number): string;
7
16
  /**
8
17
  * Checks if a tool invocation matches any of a list of patterns.
9
18
  *
@@ -5,6 +5,35 @@
5
5
  */
6
6
  import { isTool } from '../index.js';
7
7
  import { SHELL_TOOL_NAMES } from './shell-utils.js';
8
+ import levenshtein from 'fast-levenshtein';
9
+ /**
10
+ * Generates a suggestion string for a tool name that was not found in the registry.
11
+ * It finds the closest matches based on Levenshtein distance.
12
+ * @param unknownToolName The tool name that was not found.
13
+ * @param allToolNames The list of all available tool names.
14
+ * @param topN The number of suggestions to return. Defaults to 3.
15
+ * @returns A suggestion string like " Did you mean 'tool'?" or " Did you mean one of: 'tool1', 'tool2'?", or an empty string if no suggestions are found.
16
+ */
17
+ export function getToolSuggestion(unknownToolName, allToolNames, topN = 3) {
18
+ const matches = allToolNames.map((toolName) => ({
19
+ name: toolName,
20
+ distance: levenshtein.get(unknownToolName, toolName),
21
+ }));
22
+ matches.sort((a, b) => a.distance - b.distance);
23
+ const topNResults = matches.slice(0, topN);
24
+ if (topNResults.length === 0) {
25
+ return '';
26
+ }
27
+ const suggestedNames = topNResults
28
+ .map((match) => `"${match.name}"`)
29
+ .join(', ');
30
+ if (topNResults.length > 1) {
31
+ return ` Did you mean one of: ${suggestedNames}?`;
32
+ }
33
+ else {
34
+ return ` Did you mean ${suggestedNames}?`;
35
+ }
36
+ }
8
37
  /**
9
38
  * Checks if a tool invocation matches any of a list of patterns.
10
39
  *
@@ -1 +1 @@
1
- {"version":3,"file":"tool-utils.js","sourceRoot":"","sources":["../../../src/utils/tool-utils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,uBAAuB,CACrC,cAA2C,EAC3C,UAAsC,EACtC,QAAkB;IAElB,IAAI,SAAmB,CAAC;IACxB,IAAI,MAAM,CAAC,cAAc,CAAC,EAAE,CAAC;QAC3B,SAAS,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IACrE,CAAC;SAAM,CAAC;QACN,SAAS,GAAG,CAAC,cAAc,CAAC,CAAC;IAC/B,CAAC;IAED,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QAC9D,SAAS,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,SAAS,EAAE,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;IAChE,CAAC;IAED,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAEvC,IAAI,SAAS,KAAK,CAAC,CAAC,EAAE,CAAC;YACrB,iCAAiC;YACjC,IAAI,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBAChC,OAAO,IAAI,CAAC;YACd,CAAC;YACD,SAAS;QACX,CAAC;QAED,MAAM,eAAe,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;QACxD,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;YACzC,SAAS;QACX,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAC3B,SAAS;QACX,CAAC;QAED,MAAM,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC,SAAS,GAAG,CAAC,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAExE,IAAI,OAAe,CAAC;QACpB,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE,CAAC;YACnC,OAAO,GAAG,UAAU,CAAC;QACvB,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,CAAC,SAAS,IAAI,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;gBACtC,qDAAqD;gBACrD,SAAS;YACX,CAAC;YACD,OAAO,GAAG,MAAM,CAAE,UAAU,CAAC,MAA8B,CAAC,OAAO,CAAC,CAAC;QACvE,CAAC;QAED,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;YAC9D,IAAI,OAAO,KAAK,UAAU,IAAI,OAAO,CAAC,UAAU,CAAC,UAAU,GAAG,GAAG,CAAC,EAAE,CAAC;gBACnE,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"tool-utils.js","sourceRoot":"","sources":["../../../src/utils/tool-utils.ts"],"names":[],"mappings":"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"}
@@ -4,8 +4,22 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
  import { expect, describe, it } from 'vitest';
7
- import { doesToolInvocationMatch } from './tool-utils.js';
7
+ import { doesToolInvocationMatch, getToolSuggestion } from './tool-utils.js';
8
8
  import { ReadFileTool } from '../tools/read-file.js';
9
+ describe('getToolSuggestion', () => {
10
+ it('should suggest the top N closest tool names for a typo', () => {
11
+ const allToolNames = ['list_files', 'read_file', 'write_file'];
12
+ // Test that the right tool is selected, with only 1 result, for typos
13
+ const misspelledTool = getToolSuggestion('list_fils', allToolNames, 1);
14
+ expect(misspelledTool).toBe(' Did you mean "list_files"?');
15
+ // Test that the right tool is selected, with only 1 result, for prefixes
16
+ const prefixedTool = getToolSuggestion('github.list_files', allToolNames, 1);
17
+ expect(prefixedTool).toBe(' Did you mean "list_files"?');
18
+ // Test that the right tool is first
19
+ const suggestionMultiple = getToolSuggestion('list_fils', allToolNames);
20
+ expect(suggestionMultiple).toBe(' Did you mean one of: "list_files", "read_file", "write_file"?');
21
+ });
22
+ });
9
23
  describe('doesToolInvocationMatch', () => {
10
24
  it('should not match a partial command prefix', () => {
11
25
  const invocation = {
@@ -1 +1 @@
1
- {"version":3,"file":"tool-utils.test.js","sourceRoot":"","sources":["../../../src/utils/tool-utils.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tool-utils.test.js","sourceRoot":"","sources":["../../../src/utils/tool-utils.test.ts"],"names":[],"mappings":"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"}