@google/gemini-cli-core 0.22.0 → 0.22.1

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 (218) hide show
  1. package/dist/src/agents/executor.js +1 -1
  2. package/dist/src/agents/executor.js.map +1 -1
  3. package/dist/src/agents/executor.test.js.map +1 -1
  4. package/dist/src/agents/registry.d.ts +0 -15
  5. package/dist/src/agents/registry.js +0 -39
  6. package/dist/src/agents/registry.js.map +1 -1
  7. package/dist/src/agents/registry.test.js +0 -18
  8. package/dist/src/agents/registry.test.js.map +1 -1
  9. package/dist/src/availability/policyCatalog.test.js.map +1 -1
  10. package/dist/src/code_assist/experiments/client_metadata.js +1 -2
  11. package/dist/src/code_assist/experiments/client_metadata.js.map +1 -1
  12. package/dist/src/code_assist/experiments/client_metadata.test.js +10 -7
  13. package/dist/src/code_assist/experiments/client_metadata.test.js.map +1 -1
  14. package/dist/src/config/config.js +17 -25
  15. package/dist/src/config/config.js.map +1 -1
  16. package/dist/src/config/config.test.js +8 -32
  17. package/dist/src/config/config.test.js.map +1 -1
  18. package/dist/src/config/defaultModelConfigs.js +0 -10
  19. package/dist/src/config/defaultModelConfigs.js.map +1 -1
  20. package/dist/src/config/models.d.ts +1 -9
  21. package/dist/src/config/models.js +1 -11
  22. package/dist/src/config/models.js.map +1 -1
  23. package/dist/src/config/models.test.js +1 -14
  24. package/dist/src/config/models.test.js.map +1 -1
  25. package/dist/src/confirmation-bus/message-bus.js.map +1 -1
  26. package/dist/src/confirmation-bus/types.d.ts +0 -4
  27. package/dist/src/core/baseLlmClient.test.js.map +1 -1
  28. package/dist/src/core/contentGenerator.js +3 -5
  29. package/dist/src/core/contentGenerator.js.map +1 -1
  30. package/dist/src/core/contentGenerator.test.js +2 -29
  31. package/dist/src/core/contentGenerator.test.js.map +1 -1
  32. package/dist/src/core/coreToolScheduler.d.ts +1 -1
  33. package/dist/src/core/coreToolScheduler.js +34 -72
  34. package/dist/src/core/coreToolScheduler.js.map +1 -1
  35. package/dist/src/core/coreToolScheduler.test.js +37 -134
  36. package/dist/src/core/coreToolScheduler.test.js.map +1 -1
  37. package/dist/src/core/geminiChat.js +3 -1
  38. package/dist/src/core/geminiChat.js.map +1 -1
  39. package/dist/src/core/geminiChat.test.js.map +1 -1
  40. package/dist/src/core/logger.js.map +1 -1
  41. package/dist/src/core/nonInteractiveToolExecutor.test.js +5 -4
  42. package/dist/src/core/nonInteractiveToolExecutor.test.js.map +1 -1
  43. package/dist/src/core/prompts.js +6 -8
  44. package/dist/src/core/prompts.js.map +1 -1
  45. package/dist/src/core/prompts.test.js +3 -9
  46. package/dist/src/core/prompts.test.js.map +1 -1
  47. package/dist/src/core/turn.js +1 -1
  48. package/dist/src/core/turn.js.map +1 -1
  49. package/dist/src/generated/git-commit.d.ts +2 -2
  50. package/dist/src/generated/git-commit.js +2 -2
  51. package/dist/src/hooks/hookEventHandler.js +1 -6
  52. package/dist/src/hooks/hookEventHandler.js.map +1 -1
  53. package/dist/src/hooks/hookEventHandler.test.js +1 -8
  54. package/dist/src/hooks/hookEventHandler.test.js.map +1 -1
  55. package/dist/src/hooks/hookRegistry.d.ts +7 -0
  56. package/dist/src/hooks/hookRegistry.js +20 -0
  57. package/dist/src/hooks/hookRegistry.js.map +1 -1
  58. package/dist/src/hooks/hookRegistry.test.js +7 -1
  59. package/dist/src/hooks/hookRegistry.test.js.map +1 -1
  60. package/dist/src/hooks/hookRunner.test.js +1 -1
  61. package/dist/src/hooks/hookRunner.test.js.map +1 -1
  62. package/dist/src/hooks/hookSystem.d.ts +8 -0
  63. package/dist/src/hooks/hookSystem.js +18 -0
  64. package/dist/src/hooks/hookSystem.js.map +1 -1
  65. package/dist/src/hooks/hookSystem.test.js +21 -2
  66. package/dist/src/hooks/hookSystem.test.js.map +1 -1
  67. package/dist/src/ide/detect-ide.test.js +1 -32
  68. package/dist/src/ide/detect-ide.test.js.map +1 -1
  69. package/dist/src/ide/ide-installer.test.js +1 -1
  70. package/dist/src/ide/ide-installer.test.js.map +1 -1
  71. package/dist/src/index.d.ts +0 -3
  72. package/dist/src/index.js +0 -3
  73. package/dist/src/index.js.map +1 -1
  74. package/dist/src/mcp/oauth-provider.js.map +1 -1
  75. package/dist/src/output/json-formatter.test.js +0 -2
  76. package/dist/src/output/json-formatter.test.js.map +1 -1
  77. package/dist/src/output/stream-json-formatter.js +0 -6
  78. package/dist/src/output/stream-json-formatter.js.map +1 -1
  79. package/dist/src/output/stream-json-formatter.test.js +100 -98
  80. package/dist/src/output/stream-json-formatter.test.js.map +1 -1
  81. package/dist/src/output/types.d.ts +0 -2
  82. package/dist/src/policy/config.js +2 -71
  83. package/dist/src/policy/config.js.map +1 -1
  84. package/dist/src/policy/policy-engine.js +1 -55
  85. package/dist/src/policy/policy-engine.js.map +1 -1
  86. package/dist/src/policy/toml-loader.d.ts +0 -8
  87. package/dist/src/policy/toml-loader.js +3 -3
  88. package/dist/src/policy/toml-loader.js.map +1 -1
  89. package/dist/src/safety/checker-runner.js +6 -17
  90. package/dist/src/safety/checker-runner.js.map +1 -1
  91. package/dist/src/services/chatRecordingService.d.ts +0 -5
  92. package/dist/src/services/chatRecordingService.js +0 -7
  93. package/dist/src/services/chatRecordingService.js.map +1 -1
  94. package/dist/src/services/fileSystemService.d.ts +9 -0
  95. package/dist/src/services/fileSystemService.js +11 -0
  96. package/dist/src/services/fileSystemService.js.map +1 -1
  97. package/dist/src/services/loopDetectionService.js +2 -2
  98. package/dist/src/services/loopDetectionService.js.map +1 -1
  99. package/dist/src/services/modelConfig.golden.test.js +0 -32
  100. package/dist/src/services/modelConfig.golden.test.js.map +1 -1
  101. package/dist/src/services/modelConfigService.d.ts +0 -3
  102. package/dist/src/services/modelConfigService.js +2 -3
  103. package/dist/src/services/modelConfigService.js.map +1 -1
  104. package/dist/src/services/modelConfigService.test.js +0 -110
  105. package/dist/src/services/modelConfigService.test.js.map +1 -1
  106. package/dist/src/services/shellExecutionService.js +2 -1
  107. package/dist/src/services/shellExecutionService.js.map +1 -1
  108. package/dist/src/services/shellExecutionService.test.js +3 -6
  109. package/dist/src/services/shellExecutionService.test.js.map +1 -1
  110. package/dist/src/telemetry/activity-detector.test.js.map +1 -1
  111. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js +5 -5
  112. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js.map +1 -1
  113. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js +1 -18
  114. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js.map +1 -1
  115. package/dist/src/telemetry/config.js.map +1 -1
  116. package/dist/src/telemetry/loggers.test.js +5 -5
  117. package/dist/src/telemetry/loggers.test.js.map +1 -1
  118. package/dist/src/telemetry/metrics.test.js.map +1 -1
  119. package/dist/src/telemetry/startupProfiler.test.js +2 -1
  120. package/dist/src/telemetry/startupProfiler.test.js.map +1 -1
  121. package/dist/src/telemetry/trace.js.map +1 -1
  122. package/dist/src/telemetry/types.d.ts +5 -10
  123. package/dist/src/telemetry/types.js +8 -16
  124. package/dist/src/telemetry/types.js.map +1 -1
  125. package/dist/src/telemetry/uiTelemetry.d.ts +0 -1
  126. package/dist/src/telemetry/uiTelemetry.js +0 -2
  127. package/dist/src/telemetry/uiTelemetry.js.map +1 -1
  128. package/dist/src/telemetry/uiTelemetry.test.js +0 -4
  129. package/dist/src/telemetry/uiTelemetry.test.js.map +1 -1
  130. package/dist/src/test-utils/mock-message-bus.js.map +1 -1
  131. package/dist/src/tools/edit.js +0 -1
  132. package/dist/src/tools/edit.js.map +1 -1
  133. package/dist/src/tools/edit.test.js.map +1 -1
  134. package/dist/src/tools/grep.js.map +1 -1
  135. package/dist/src/tools/mcp-tool.js +0 -13
  136. package/dist/src/tools/mcp-tool.js.map +1 -1
  137. package/dist/src/tools/mcp-tool.test.js +0 -25
  138. package/dist/src/tools/mcp-tool.test.js.map +1 -1
  139. package/dist/src/tools/memoryTool.js +0 -1
  140. package/dist/src/tools/memoryTool.js.map +1 -1
  141. package/dist/src/tools/modifiable-tool.js.map +1 -1
  142. package/dist/src/tools/read-file.test.js.map +1 -1
  143. package/dist/src/tools/shell.d.ts +1 -2
  144. package/dist/src/tools/shell.js +1 -9
  145. package/dist/src/tools/shell.js.map +1 -1
  146. package/dist/src/tools/shell.test.js +1 -2
  147. package/dist/src/tools/shell.test.js.map +1 -1
  148. package/dist/src/tools/smart-edit.js +0 -1
  149. package/dist/src/tools/smart-edit.js.map +1 -1
  150. package/dist/src/tools/smart-edit.test.js.map +1 -1
  151. package/dist/src/tools/tool-names.d.ts +0 -1
  152. package/dist/src/tools/tool-names.js +0 -1
  153. package/dist/src/tools/tool-names.js.map +1 -1
  154. package/dist/src/tools/tools.d.ts +0 -19
  155. package/dist/src/tools/tools.js +9 -28
  156. package/dist/src/tools/tools.js.map +1 -1
  157. package/dist/src/tools/web-fetch.js +0 -1
  158. package/dist/src/tools/web-fetch.js.map +1 -1
  159. package/dist/src/tools/write-file.js +0 -1
  160. package/dist/src/tools/write-file.js.map +1 -1
  161. package/dist/src/tools/write-file.test.js.map +1 -1
  162. package/dist/src/utils/bfsFileSearch.d.ts +0 -8
  163. package/dist/src/utils/bfsFileSearch.js +23 -63
  164. package/dist/src/utils/bfsFileSearch.js.map +1 -1
  165. package/dist/src/utils/bfsFileSearch.test.js +1 -65
  166. package/dist/src/utils/bfsFileSearch.test.js.map +1 -1
  167. package/dist/src/utils/checkpointUtils.js.map +1 -1
  168. package/dist/src/utils/extensionLoader.d.ts +2 -2
  169. package/dist/src/utils/extensionLoader.js +6 -5
  170. package/dist/src/utils/extensionLoader.js.map +1 -1
  171. package/dist/src/utils/extensionLoader.test.js +0 -11
  172. package/dist/src/utils/extensionLoader.test.js.map +1 -1
  173. package/dist/src/utils/filesearch/crawlCache.js.map +1 -1
  174. package/dist/src/utils/filesearch/fileSearch.js.map +1 -1
  175. package/dist/src/utils/pathCorrector.js +2 -12
  176. package/dist/src/utils/pathCorrector.js.map +1 -1
  177. package/dist/src/utils/pathCorrector.test.js +2 -6
  178. package/dist/src/utils/pathCorrector.test.js.map +1 -1
  179. package/dist/src/utils/shell-utils.d.ts +47 -10
  180. package/dist/src/utils/shell-utils.js +182 -1
  181. package/dist/src/utils/shell-utils.js.map +1 -1
  182. package/dist/src/utils/shell-utils.test.js +288 -1
  183. package/dist/src/utils/shell-utils.test.js.map +1 -1
  184. package/dist/src/utils/tool-utils.js.map +1 -1
  185. package/dist/tsconfig.tsbuildinfo +1 -1
  186. package/package.json +1 -2
  187. package/dist/src/agents/delegate-to-agent-tool.d.ts +0 -19
  188. package/dist/src/agents/delegate-to-agent-tool.js +0 -111
  189. package/dist/src/agents/delegate-to-agent-tool.js.map +0 -1
  190. package/dist/src/agents/delegate-to-agent-tool.test.d.ts +0 -6
  191. package/dist/src/agents/delegate-to-agent-tool.test.js +0 -133
  192. package/dist/src/agents/delegate-to-agent-tool.test.js.map +0 -1
  193. package/dist/src/commands/init.d.ts +0 -7
  194. package/dist/src/commands/init.js +0 -53
  195. package/dist/src/commands/init.js.map +0 -1
  196. package/dist/src/commands/init.test.d.ts +0 -6
  197. package/dist/src/commands/init.test.js +0 -25
  198. package/dist/src/commands/init.test.js.map +0 -1
  199. package/dist/src/policy/persistence.test.d.ts +0 -6
  200. package/dist/src/policy/persistence.test.js +0 -149
  201. package/dist/src/policy/persistence.test.js.map +0 -1
  202. package/dist/src/policy/policies/agent.toml +0 -31
  203. package/dist/src/policy/shell-safety.test.d.ts +0 -6
  204. package/dist/src/policy/shell-safety.test.js +0 -74
  205. package/dist/src/policy/shell-safety.test.js.map +0 -1
  206. package/dist/src/services/test-data/resolved-aliases-retry.golden.json +0 -238
  207. package/dist/src/utils/shell-permissions.d.ts +0 -52
  208. package/dist/src/utils/shell-permissions.js +0 -188
  209. package/dist/src/utils/shell-permissions.js.map +0 -1
  210. package/dist/src/utils/shell-permissions.test.d.ts +0 -6
  211. package/dist/src/utils/shell-permissions.test.js +0 -342
  212. package/dist/src/utils/shell-permissions.test.js.map +0 -1
  213. package/dist/src/utils/version.d.ts +0 -6
  214. package/dist/src/utils/version.js +0 -15
  215. package/dist/src/utils/version.js.map +0 -1
  216. package/dist/src/utils/version.test.d.ts +0 -6
  217. package/dist/src/utils/version.test.js +0 -39
  218. package/dist/src/utils/version.test.js.map +0 -1
package/package.json CHANGED
@@ -1,8 +1,7 @@
1
1
  {
2
2
  "name": "@google/gemini-cli-core",
3
- "version": "0.22.0",
3
+ "version": "0.22.1",
4
4
  "description": "Gemini CLI Core",
5
- "license": "Apache-2.0",
6
5
  "repository": {
7
6
  "type": "git",
8
7
  "url": "git+https://github.com/google-gemini/gemini-cli.git"
@@ -1,19 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2025 Google LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
- import { BaseDeclarativeTool, type ToolInvocation, type ToolResult } from '../tools/tools.js';
7
- import type { AgentRegistry } from './registry.js';
8
- import type { Config } from '../config/config.js';
9
- import type { MessageBus } from '../confirmation-bus/message-bus.js';
10
- type DelegateParams = {
11
- agent_name: string;
12
- } & Record<string, unknown>;
13
- export declare class DelegateToAgentTool extends BaseDeclarativeTool<DelegateParams, ToolResult> {
14
- private readonly registry;
15
- private readonly config;
16
- constructor(registry: AgentRegistry, config: Config, messageBus?: MessageBus);
17
- protected createInvocation(params: DelegateParams): ToolInvocation<DelegateParams, ToolResult>;
18
- }
19
- export {};
@@ -1,111 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2025 Google LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
- import { z } from 'zod';
7
- import { zodToJsonSchema } from 'zod-to-json-schema';
8
- import { BaseDeclarativeTool, Kind, BaseToolInvocation, } from '../tools/tools.js';
9
- import { DELEGATE_TO_AGENT_TOOL_NAME } from '../tools/tool-names.js';
10
- import { SubagentInvocation } from './invocation.js';
11
- export class DelegateToAgentTool extends BaseDeclarativeTool {
12
- registry;
13
- config;
14
- constructor(registry, config, messageBus) {
15
- const definitions = registry.getAllDefinitions();
16
- let schema;
17
- if (definitions.length === 0) {
18
- // Fallback if no agents are registered (mostly for testing/safety)
19
- schema = z.object({
20
- agent_name: z.string().describe('No agents are currently available.'),
21
- });
22
- }
23
- else {
24
- const agentSchemas = definitions.map((def) => {
25
- const inputShape = {
26
- agent_name: z.literal(def.name).describe(def.description),
27
- };
28
- for (const [key, inputDef] of Object.entries(def.inputConfig.inputs)) {
29
- if (key === 'agent_name') {
30
- throw new Error(`Agent '${def.name}' cannot have an input parameter named 'agent_name' as it is a reserved parameter for delegation.`);
31
- }
32
- let validator;
33
- // Map input types to Zod
34
- switch (inputDef.type) {
35
- case 'string':
36
- validator = z.string();
37
- break;
38
- case 'number':
39
- validator = z.number();
40
- break;
41
- case 'boolean':
42
- validator = z.boolean();
43
- break;
44
- case 'integer':
45
- validator = z.number().int();
46
- break;
47
- case 'string[]':
48
- validator = z.array(z.string());
49
- break;
50
- case 'number[]':
51
- validator = z.array(z.number());
52
- break;
53
- default: {
54
- // This provides compile-time exhaustiveness checking.
55
- const _exhaustiveCheck = inputDef.type;
56
- void _exhaustiveCheck;
57
- throw new Error(`Unhandled agent input type: '${inputDef.type}'`);
58
- }
59
- }
60
- if (!inputDef.required) {
61
- validator = validator.optional();
62
- }
63
- inputShape[key] = validator.describe(inputDef.description);
64
- }
65
- // Cast required because Zod can't infer the discriminator from dynamic keys
66
- return z.object(inputShape);
67
- });
68
- // Create the discriminated union
69
- // z.discriminatedUnion requires at least 2 options, so we handle the single agent case
70
- if (agentSchemas.length === 1) {
71
- schema = agentSchemas[0];
72
- }
73
- else {
74
- schema = z.discriminatedUnion('agent_name', agentSchemas);
75
- }
76
- }
77
- super(DELEGATE_TO_AGENT_TOOL_NAME, 'Delegate to Agent', registry.getToolDescription(), Kind.Think, zodToJsonSchema(schema),
78
- /* isOutputMarkdown */ true,
79
- /* canUpdateOutput */ true, messageBus);
80
- this.registry = registry;
81
- this.config = config;
82
- }
83
- createInvocation(params) {
84
- return new DelegateInvocation(params, this.registry, this.config, this.messageBus);
85
- }
86
- }
87
- class DelegateInvocation extends BaseToolInvocation {
88
- registry;
89
- config;
90
- constructor(params, registry, config, messageBus) {
91
- super(params, messageBus, DELEGATE_TO_AGENT_TOOL_NAME);
92
- this.registry = registry;
93
- this.config = config;
94
- }
95
- getDescription() {
96
- return `Delegating to agent '${this.params.agent_name}'`;
97
- }
98
- async execute(signal, updateOutput) {
99
- const definition = this.registry.getDefinition(this.params.agent_name);
100
- if (!definition) {
101
- throw new Error(`Agent '${this.params.agent_name}' exists in the tool definition but could not be found in the registry.`);
102
- }
103
- // Extract arguments (everything except agent_name)
104
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
105
- const { agent_name, ...agentArgs } = this.params;
106
- // Instantiate the Subagent Loop
107
- const subagentInvocation = new SubagentInvocation(agentArgs, definition, this.config, this.messageBus);
108
- return subagentInvocation.execute(signal, updateOutput);
109
- }
110
- }
111
- //# sourceMappingURL=delegate-to-agent-tool.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"delegate-to-agent-tool.js","sourceRoot":"","sources":["../../../src/agents/delegate-to-agent-tool.ts"],"names":[],"mappings":"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"}
@@ -1,6 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2025 Google LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
- export {};
@@ -1,133 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2025 Google LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
- import { describe, it, expect, vi, beforeEach } from 'vitest';
7
- import { DelegateToAgentTool } from './delegate-to-agent-tool.js';
8
- import { AgentRegistry } from './registry.js';
9
- import { SubagentInvocation } from './invocation.js';
10
- import { MessageBusType } from '../confirmation-bus/types.js';
11
- import { DELEGATE_TO_AGENT_TOOL_NAME } from '../tools/tool-names.js';
12
- vi.mock('./invocation.js', () => ({
13
- SubagentInvocation: vi.fn().mockImplementation(() => ({
14
- execute: vi
15
- .fn()
16
- .mockResolvedValue({ content: [{ type: 'text', text: 'Success' }] }),
17
- })),
18
- }));
19
- describe('DelegateToAgentTool', () => {
20
- let registry;
21
- let config;
22
- let tool;
23
- let messageBus;
24
- const mockAgentDef = {
25
- name: 'test_agent',
26
- description: 'A test agent',
27
- promptConfig: {},
28
- modelConfig: { model: 'test-model', temp: 0, top_p: 0 },
29
- inputConfig: {
30
- inputs: {
31
- arg1: { type: 'string', description: 'Argument 1', required: true },
32
- arg2: { type: 'number', description: 'Argument 2', required: false },
33
- },
34
- },
35
- runConfig: { max_turns: 1, max_time_minutes: 1 },
36
- toolConfig: { tools: [] },
37
- };
38
- beforeEach(() => {
39
- config = {
40
- getDebugMode: () => false,
41
- modelConfigService: {
42
- registerRuntimeModelConfig: vi.fn(),
43
- },
44
- };
45
- registry = new AgentRegistry(config);
46
- // Manually register the mock agent (bypassing protected method for testing)
47
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
48
- registry.agents.set(mockAgentDef.name, mockAgentDef);
49
- messageBus = {
50
- publish: vi.fn(),
51
- subscribe: vi.fn(),
52
- unsubscribe: vi.fn(),
53
- };
54
- tool = new DelegateToAgentTool(registry, config, messageBus);
55
- });
56
- it('should use dynamic description from registry', () => {
57
- // registry has mockAgentDef registered in beforeEach
58
- expect(tool.description).toContain('Delegates a task to a specialized sub-agent');
59
- expect(tool.description).toContain(`- **${mockAgentDef.name}**: ${mockAgentDef.description}`);
60
- });
61
- it('should validate agent_name exists in registry', async () => {
62
- // Zod validation happens at build time now (or rather, build validates the schema)
63
- // Since we use discriminated union, an invalid agent_name won't match any option.
64
- expect(() => tool.build({
65
- agent_name: 'non_existent_agent',
66
- })).toThrow();
67
- });
68
- it('should validate correct arguments', async () => {
69
- const invocation = tool.build({
70
- agent_name: 'test_agent',
71
- arg1: 'valid',
72
- });
73
- const result = await invocation.execute(new AbortController().signal);
74
- expect(result).toEqual({ content: [{ type: 'text', text: 'Success' }] });
75
- expect(SubagentInvocation).toHaveBeenCalledWith({ arg1: 'valid' }, mockAgentDef, config, messageBus);
76
- });
77
- it('should throw error for missing required argument', async () => {
78
- // Missing arg1 should fail Zod validation
79
- expect(() => tool.build({
80
- agent_name: 'test_agent',
81
- arg2: 123,
82
- })).toThrow();
83
- });
84
- it('should throw error for invalid argument type', async () => {
85
- // arg1 should be string, passing number
86
- expect(() => tool.build({
87
- agent_name: 'test_agent',
88
- arg1: 123,
89
- })).toThrow();
90
- });
91
- it('should allow optional arguments to be omitted', async () => {
92
- const invocation = tool.build({
93
- agent_name: 'test_agent',
94
- arg1: 'valid',
95
- // arg2 is optional
96
- });
97
- await expect(invocation.execute(new AbortController().signal)).resolves.toBeDefined();
98
- });
99
- it('should throw error if an agent has an input named "agent_name"', () => {
100
- const invalidAgentDef = {
101
- ...mockAgentDef,
102
- name: 'invalid_agent',
103
- inputConfig: {
104
- inputs: {
105
- agent_name: {
106
- type: 'string',
107
- description: 'Conflict',
108
- required: true,
109
- },
110
- },
111
- },
112
- };
113
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
114
- registry.agents.set(invalidAgentDef.name, invalidAgentDef);
115
- expect(() => new DelegateToAgentTool(registry, config)).toThrow("Agent 'invalid_agent' cannot have an input parameter named 'agent_name' as it is a reserved parameter for delegation.");
116
- });
117
- it('should use correct tool name "delegate_to_agent" when requesting confirmation', async () => {
118
- const invocation = tool.build({
119
- agent_name: 'test_agent',
120
- arg1: 'valid',
121
- });
122
- // Trigger confirmation check
123
- const p = invocation.shouldConfirmExecute(new AbortController().signal);
124
- void p;
125
- expect(messageBus.publish).toHaveBeenCalledWith(expect.objectContaining({
126
- type: MessageBusType.TOOL_CONFIRMATION_REQUEST,
127
- toolCall: expect.objectContaining({
128
- name: DELEGATE_TO_AGENT_TOOL_NAME,
129
- }),
130
- }));
131
- });
132
- });
133
- //# sourceMappingURL=delegate-to-agent-tool.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"delegate-to-agent-tool.test.js","sourceRoot":"","sources":["../../../src/agents/delegate-to-agent-tool.test.ts"],"names":[],"mappings":"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"}
@@ -1,7 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2025 Google LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
- import type { CommandActionReturn } from './types.js';
7
- export declare function performInit(doesGeminiMdExist: boolean): CommandActionReturn;
@@ -1,53 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2025 Google LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
- export function performInit(doesGeminiMdExist) {
7
- if (doesGeminiMdExist) {
8
- return {
9
- type: 'message',
10
- messageType: 'info',
11
- content: 'A GEMINI.md file already exists in this directory. No changes were made.',
12
- };
13
- }
14
- return {
15
- type: 'submit_prompt',
16
- content: `
17
- You are an AI agent that brings the power of Gemini directly into the terminal. Your task is to analyze the current directory and generate a comprehensive GEMINI.md file to be used as instructional context for future interactions.
18
-
19
- **Analysis Process:**
20
-
21
- 1. **Initial Exploration:**
22
- * Start by listing the files and directories to get a high-level overview of the structure.
23
- * Read the README file (e.g., \`README.md\`, \`README.txt\`) if it exists. This is often the best place to start.
24
-
25
- 2. **Iterative Deep Dive (up to 10 files):**
26
- * Based on your initial findings, select a few files that seem most important (e.g., configuration files, main source files, documentation).
27
- * Read them. As you learn more, refine your understanding and decide which files to read next. You don't need to decide all 10 files at once. Let your discoveries guide your exploration.
28
-
29
- 3. **Identify Project Type:**
30
- * **Code Project:** Look for clues like \`package.json\`, \`requirements.txt\`, \`pom.xml\`, \`go.mod\`, \`Cargo.toml\`, \`build.gradle\`, or a \`src\` directory. If you find them, this is likely a software project.
31
- * **Non-Code Project:** If you don't find code-related files, this might be a directory for documentation, research papers, notes, or something else.
32
-
33
- **GEMINI.md Content Generation:**
34
-
35
- **For a Code Project:**
36
-
37
- * **Project Overview:** Write a clear and concise summary of the project's purpose, main technologies, and architecture.
38
- * **Building and Running:** Document the key commands for building, running, and testing the project. Infer these from the files you've read (e.g., \`scripts\` in \`package.json\`, \`Makefile\`, etc.). If you can't find explicit commands, provide a placeholder with a TODO.
39
- * **Development Conventions:** Describe any coding styles, testing practices, or contribution guidelines you can infer from the codebase.
40
-
41
- **For a Non-Code Project:**
42
-
43
- * **Directory Overview:** Describe the purpose and contents of the directory. What is it for? What kind of information does it hold?
44
- * **Key Files:** List the most important files and briefly explain what they contain.
45
- * **Usage:** Explain how the contents of this directory are intended to be used.
46
-
47
- **Final Output:**
48
-
49
- Write the complete content to the \`GEMINI.md\` file. The output must be well-formatted Markdown.
50
- `,
51
- };
52
- }
53
- //# sourceMappingURL=init.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/commands/init.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,MAAM,UAAU,WAAW,CAAC,iBAA0B;IACpD,IAAI,iBAAiB,EAAE,CAAC;QACtB,OAAO;YACL,IAAI,EAAE,SAAS;YACf,WAAW,EAAE,MAAM;YACnB,OAAO,EACL,0EAA0E;SAC7E,CAAC;IACJ,CAAC;IAED,OAAO;QACL,IAAI,EAAE,eAAe;QACrB,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkCZ;KACE,CAAC;AACJ,CAAC"}
@@ -1,6 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2025 Google LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
- export {};
@@ -1,25 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2025 Google LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
- import { expect, describe, it } from 'vitest';
7
- import { performInit } from './init.js';
8
- describe('performInit', () => {
9
- it('returns info if GEMINI.md already exists', () => {
10
- const result = performInit(true);
11
- expect(result.type).toBe('message');
12
- if (result.type === 'message') {
13
- expect(result.messageType).toBe('info');
14
- expect(result.content).toContain('already exists');
15
- }
16
- });
17
- it('returns submit_prompt if GEMINI.md does not exist', () => {
18
- const result = performInit(false);
19
- expect(result.type).toBe('submit_prompt');
20
- if (result.type === 'submit_prompt') {
21
- expect(result.content).toContain('You are an AI agent');
22
- }
23
- });
24
- });
25
- //# sourceMappingURL=init.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"init.test.js","sourceRoot":"","sources":["../../../src/commands/init.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAExC,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;QAClD,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;QAEjC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACpC,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC9B,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACxC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;QACrD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;QAC3D,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;QAClC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAE1C,IAAI,MAAM,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;YACpC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,6 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2025 Google LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
- export {};
@@ -1,149 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2025 Google LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
- import { describe, it, expect, vi, beforeEach, afterEach, } from 'vitest';
7
- import * as fs from 'node:fs/promises';
8
- import * as path from 'node:path';
9
- import { createPolicyUpdater } from './config.js';
10
- import { PolicyEngine } from './policy-engine.js';
11
- import { MessageBus } from '../confirmation-bus/message-bus.js';
12
- import { MessageBusType } from '../confirmation-bus/types.js';
13
- import { Storage } from '../config/storage.js';
14
- vi.mock('node:fs/promises');
15
- vi.mock('../config/storage.js');
16
- describe('createPolicyUpdater', () => {
17
- let policyEngine;
18
- let messageBus;
19
- beforeEach(() => {
20
- policyEngine = new PolicyEngine({ rules: [], checkers: [] });
21
- messageBus = new MessageBus(policyEngine);
22
- vi.clearAllMocks();
23
- });
24
- afterEach(() => {
25
- vi.restoreAllMocks();
26
- });
27
- it('should persist policy when persist flag is true', async () => {
28
- createPolicyUpdater(policyEngine, messageBus);
29
- const userPoliciesDir = '/mock/user/policies';
30
- vi.spyOn(Storage, 'getUserPoliciesDir').mockReturnValue(userPoliciesDir);
31
- fs.mkdir.mockResolvedValue(undefined);
32
- fs.readFile.mockRejectedValue(new Error('File not found')); // Simulate new file
33
- fs.writeFile.mockResolvedValue(undefined);
34
- fs.rename.mockResolvedValue(undefined);
35
- const toolName = 'test_tool';
36
- await messageBus.publish({
37
- type: MessageBusType.UPDATE_POLICY,
38
- toolName,
39
- persist: true,
40
- });
41
- // Wait for async operations (microtasks)
42
- await new Promise((resolve) => setTimeout(resolve, 0));
43
- expect(Storage.getUserPoliciesDir).toHaveBeenCalled();
44
- expect(fs.mkdir).toHaveBeenCalledWith(userPoliciesDir, {
45
- recursive: true,
46
- });
47
- // Check written content
48
- const expectedContent = expect.stringContaining(`toolName = "test_tool"`);
49
- expect(fs.writeFile).toHaveBeenCalledWith(expect.stringMatching(/\.tmp$/), expectedContent, 'utf-8');
50
- expect(fs.rename).toHaveBeenCalledWith(expect.stringMatching(/\.tmp$/), path.join(userPoliciesDir, 'auto-saved.toml'));
51
- });
52
- it('should not persist policy when persist flag is false or undefined', async () => {
53
- createPolicyUpdater(policyEngine, messageBus);
54
- await messageBus.publish({
55
- type: MessageBusType.UPDATE_POLICY,
56
- toolName: 'test_tool',
57
- });
58
- await new Promise((resolve) => setTimeout(resolve, 0));
59
- expect(fs.writeFile).not.toHaveBeenCalled();
60
- expect(fs.rename).not.toHaveBeenCalled();
61
- });
62
- it('should persist policy with commandPrefix when provided', async () => {
63
- createPolicyUpdater(policyEngine, messageBus);
64
- const userPoliciesDir = '/mock/user/policies';
65
- vi.spyOn(Storage, 'getUserPoliciesDir').mockReturnValue(userPoliciesDir);
66
- fs.mkdir.mockResolvedValue(undefined);
67
- fs.readFile.mockRejectedValue(new Error('File not found'));
68
- fs.writeFile.mockResolvedValue(undefined);
69
- fs.rename.mockResolvedValue(undefined);
70
- const toolName = 'run_shell_command';
71
- const commandPrefix = 'git status';
72
- await messageBus.publish({
73
- type: MessageBusType.UPDATE_POLICY,
74
- toolName,
75
- persist: true,
76
- commandPrefix,
77
- });
78
- await new Promise((resolve) => setTimeout(resolve, 0));
79
- // In-memory rule check (unchanged)
80
- const rules = policyEngine.getRules();
81
- const addedRule = rules.find((r) => r.toolName === toolName);
82
- expect(addedRule).toBeDefined();
83
- expect(addedRule?.priority).toBe(2.95);
84
- expect(addedRule?.argsPattern).toEqual(new RegExp(`"command":"git status`));
85
- // Verify file written
86
- expect(fs.writeFile).toHaveBeenCalledWith(expect.stringMatching(/\.tmp$/), expect.stringContaining(`commandPrefix = "git status"`), 'utf-8');
87
- });
88
- it('should persist policy with mcpName and toolName when provided', async () => {
89
- createPolicyUpdater(policyEngine, messageBus);
90
- const userPoliciesDir = '/mock/user/policies';
91
- vi.spyOn(Storage, 'getUserPoliciesDir').mockReturnValue(userPoliciesDir);
92
- fs.mkdir.mockResolvedValue(undefined);
93
- fs.readFile.mockRejectedValue(new Error('File not found'));
94
- fs.writeFile.mockResolvedValue(undefined);
95
- fs.rename.mockResolvedValue(undefined);
96
- const mcpName = 'my-jira-server';
97
- const simpleToolName = 'search';
98
- const toolName = `${mcpName}__${simpleToolName}`;
99
- await messageBus.publish({
100
- type: MessageBusType.UPDATE_POLICY,
101
- toolName,
102
- persist: true,
103
- mcpName,
104
- });
105
- await new Promise((resolve) => setTimeout(resolve, 0));
106
- // Verify file written
107
- const writeCall = fs.writeFile.mock.calls[0];
108
- const writtenContent = writeCall[1];
109
- expect(writtenContent).toContain(`mcpName = "${mcpName}"`);
110
- expect(writtenContent).toContain(`toolName = "${simpleToolName}"`);
111
- expect(writtenContent).toContain('priority = 200');
112
- });
113
- it('should escape special characters in toolName and mcpName', async () => {
114
- createPolicyUpdater(policyEngine, messageBus);
115
- const userPoliciesDir = '/mock/user/policies';
116
- vi.spyOn(Storage, 'getUserPoliciesDir').mockReturnValue(userPoliciesDir);
117
- fs.mkdir.mockResolvedValue(undefined);
118
- fs.readFile.mockRejectedValue(new Error('File not found'));
119
- fs.writeFile.mockResolvedValue(undefined);
120
- fs.rename.mockResolvedValue(undefined);
121
- const mcpName = 'my"jira"server';
122
- const toolName = `my"jira"server__search"tool"`;
123
- await messageBus.publish({
124
- type: MessageBusType.UPDATE_POLICY,
125
- toolName,
126
- persist: true,
127
- mcpName,
128
- });
129
- await new Promise((resolve) => setTimeout(resolve, 0));
130
- const writeCall = fs.writeFile.mock.calls[0];
131
- const writtenContent = writeCall[1];
132
- // Verify escaping - should be valid TOML
133
- // Note: @iarna/toml optimizes for shortest representation, so it may use single quotes 'foo"bar'
134
- // instead of "foo\"bar\"" if there are no single quotes in the string.
135
- try {
136
- expect(writtenContent).toContain(`mcpName = "my\\"jira\\"server"`);
137
- }
138
- catch {
139
- expect(writtenContent).toContain(`mcpName = 'my"jira"server'`);
140
- }
141
- try {
142
- expect(writtenContent).toContain(`toolName = "search\\"tool\\""`);
143
- }
144
- catch {
145
- expect(writtenContent).toContain(`toolName = 'search"tool"'`);
146
- }
147
- });
148
- });
149
- //# sourceMappingURL=persistence.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"persistence.test.js","sourceRoot":"","sources":["../../../src/policy/persistence.test.ts"],"names":[],"mappings":"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"}
@@ -1,31 +0,0 @@
1
- # Priority system for policy rules:
2
- # - Higher priority numbers win over lower priority numbers
3
- # - When multiple rules match, the highest priority rule is applied
4
- # - Rules are evaluated in order of priority (highest first)
5
- #
6
- # Priority bands (tiers):
7
- # - Default policies (TOML): 1 + priority/1000 (e.g., priority 100 → 1.100)
8
- # - User policies (TOML): 2 + priority/1000 (e.g., priority 100 → 2.100)
9
- # - Admin policies (TOML): 3 + priority/1000 (e.g., priority 100 → 3.100)
10
- #
11
- # This ensures Admin > User > Default hierarchy is always preserved,
12
- # while allowing user-specified priorities to work within each tier.
13
- #
14
- # Settings-based and dynamic rules (all in user tier 2.x):
15
- # 2.95: Tools that the user has selected as "Always Allow" in the interactive UI
16
- # 2.9: MCP servers excluded list (security: persistent server blocks)
17
- # 2.4: Command line flag --exclude-tools (explicit temporary blocks)
18
- # 2.3: Command line flag --allowed-tools (explicit temporary allows)
19
- # 2.2: MCP servers with trust=true (persistent trusted servers)
20
- # 2.1: MCP servers allowed list (persistent general server allows)
21
- #
22
- # TOML policy priorities (before transformation):
23
- # 10: Write tools default to ASK_USER (becomes 1.010 in default tier)
24
- # 15: Auto-edit tool override (becomes 1.015 in default tier)
25
- # 50: Read-only tools (becomes 1.050 in default tier)
26
- # 999: YOLO mode allow-all (becomes 1.999 in default tier)
27
-
28
- [[rule]]
29
- toolName = "delegate_to_agent"
30
- decision = "allow"
31
- priority = 50
@@ -1,6 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2025 Google LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
- export {};