@google/gemini-cli-core 0.21.0-nightly.20251217.db643e916 → 0.21.0-nightly.20251219.70696e364

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 (212) hide show
  1. package/dist/google-gemini-cli-core-0.21.0-nightly.20251218.739c02bd6.tgz +0 -0
  2. package/dist/index.d.ts +1 -1
  3. package/dist/index.js +1 -1
  4. package/dist/index.js.map +1 -1
  5. package/dist/src/agents/codebase-investigator.d.ts +2 -2
  6. package/dist/src/agents/codebase-investigator.js +6 -5
  7. package/dist/src/agents/codebase-investigator.js.map +1 -1
  8. package/dist/src/agents/codebase-investigator.test.js +2 -2
  9. package/dist/src/agents/codebase-investigator.test.js.map +1 -1
  10. package/dist/src/agents/delegate-to-agent-tool.js +8 -4
  11. package/dist/src/agents/delegate-to-agent-tool.js.map +1 -1
  12. package/dist/src/agents/delegate-to-agent-tool.test.js +5 -4
  13. package/dist/src/agents/delegate-to-agent-tool.test.js.map +1 -1
  14. package/dist/src/agents/{executor.d.ts → local-executor.d.ts} +5 -11
  15. package/dist/src/agents/{executor.js → local-executor.js} +75 -51
  16. package/dist/src/agents/local-executor.js.map +1 -0
  17. package/dist/src/agents/{executor.test.js → local-executor.test.js} +61 -45
  18. package/dist/src/agents/local-executor.test.js.map +1 -0
  19. package/dist/src/agents/{invocation.d.ts → local-invocation.d.ts} +5 -6
  20. package/dist/src/agents/{invocation.js → local-invocation.js} +8 -9
  21. package/dist/src/agents/local-invocation.js.map +1 -0
  22. package/dist/src/agents/{invocation.test.js → local-invocation.test.js} +18 -17
  23. package/dist/src/agents/local-invocation.test.js.map +1 -0
  24. package/dist/src/agents/registry.d.ts +1 -0
  25. package/dist/src/agents/registry.js +77 -28
  26. package/dist/src/agents/registry.js.map +1 -1
  27. package/dist/src/agents/registry.test.js +130 -5
  28. package/dist/src/agents/registry.test.js.map +1 -1
  29. package/dist/src/agents/remote-invocation.d.ts +21 -0
  30. package/dist/src/agents/remote-invocation.js +31 -0
  31. package/dist/src/agents/remote-invocation.js.map +1 -0
  32. package/dist/src/agents/remote-invocation.test.d.ts +6 -0
  33. package/dist/src/agents/remote-invocation.test.js +35 -0
  34. package/dist/src/agents/remote-invocation.test.js.map +1 -0
  35. package/dist/src/agents/subagent-tool-wrapper.js +7 -3
  36. package/dist/src/agents/subagent-tool-wrapper.js.map +1 -1
  37. package/dist/src/agents/subagent-tool-wrapper.test.js +10 -9
  38. package/dist/src/agents/subagent-tool-wrapper.test.js.map +1 -1
  39. package/dist/src/agents/toml-loader.d.ts +65 -0
  40. package/dist/src/agents/toml-loader.js +176 -0
  41. package/dist/src/agents/toml-loader.js.map +1 -0
  42. package/dist/src/agents/toml-loader.test.d.ts +6 -0
  43. package/dist/src/agents/toml-loader.test.js +190 -0
  44. package/dist/src/agents/toml-loader.test.js.map +1 -0
  45. package/dist/src/agents/types.d.ts +12 -4
  46. package/dist/src/availability/modelAvailabilityService.d.ts +2 -1
  47. package/dist/src/availability/policyCatalog.d.ts +1 -0
  48. package/dist/src/availability/policyCatalog.js +6 -8
  49. package/dist/src/availability/policyCatalog.js.map +1 -1
  50. package/dist/src/availability/policyCatalog.test.js +2 -2
  51. package/dist/src/availability/policyCatalog.test.js.map +1 -1
  52. package/dist/src/availability/policyHelpers.d.ts +9 -5
  53. package/dist/src/availability/policyHelpers.js +43 -37
  54. package/dist/src/availability/policyHelpers.js.map +1 -1
  55. package/dist/src/availability/policyHelpers.test.js +58 -20
  56. package/dist/src/availability/policyHelpers.test.js.map +1 -1
  57. package/dist/src/code_assist/oauth2.js +1 -1
  58. package/dist/src/code_assist/oauth2.js.map +1 -1
  59. package/dist/src/code_assist/oauth2.test.js +6 -8
  60. package/dist/src/code_assist/oauth2.test.js.map +1 -1
  61. package/dist/src/code_assist/server.js +3 -9
  62. package/dist/src/code_assist/server.js.map +1 -1
  63. package/dist/src/code_assist/server.test.js +18 -3
  64. package/dist/src/code_assist/server.test.js.map +1 -1
  65. package/dist/src/code_assist/telemetry.d.ts +6 -1
  66. package/dist/src/code_assist/telemetry.js +92 -3
  67. package/dist/src/code_assist/telemetry.js.map +1 -1
  68. package/dist/src/code_assist/telemetry.test.js +206 -18
  69. package/dist/src/code_assist/telemetry.test.js.map +1 -1
  70. package/dist/src/config/config.d.ts +9 -13
  71. package/dist/src/config/config.js +68 -38
  72. package/dist/src/config/config.js.map +1 -1
  73. package/dist/src/config/config.test.js +134 -22
  74. package/dist/src/config/config.test.js.map +1 -1
  75. package/dist/src/config/defaultModelConfigs.js +11 -0
  76. package/dist/src/config/defaultModelConfigs.js.map +1 -1
  77. package/dist/src/config/flashFallback.test.js +0 -37
  78. package/dist/src/config/flashFallback.test.js.map +1 -1
  79. package/dist/src/config/models.d.ts +23 -10
  80. package/dist/src/config/models.js +65 -23
  81. package/dist/src/config/models.js.map +1 -1
  82. package/dist/src/config/models.test.js +57 -76
  83. package/dist/src/config/models.test.js.map +1 -1
  84. package/dist/src/config/storage.d.ts +2 -0
  85. package/dist/src/config/storage.js +6 -0
  86. package/dist/src/config/storage.js.map +1 -1
  87. package/dist/src/config/storage.test.js +8 -0
  88. package/dist/src/config/storage.test.js.map +1 -1
  89. package/dist/src/core/baseLlmClient.d.ts +3 -1
  90. package/dist/src/core/baseLlmClient.js +51 -43
  91. package/dist/src/core/baseLlmClient.js.map +1 -1
  92. package/dist/src/core/baseLlmClient.test.js +12 -19
  93. package/dist/src/core/baseLlmClient.test.js.map +1 -1
  94. package/dist/src/core/client.js +18 -33
  95. package/dist/src/core/client.js.map +1 -1
  96. package/dist/src/core/client.test.js +14 -65
  97. package/dist/src/core/client.test.js.map +1 -1
  98. package/dist/src/core/contentGenerator.js +1 -1
  99. package/dist/src/core/contentGenerator.js.map +1 -1
  100. package/dist/src/core/contentGenerator.test.js +0 -6
  101. package/dist/src/core/contentGenerator.test.js.map +1 -1
  102. package/dist/src/core/geminiChat.js +29 -88
  103. package/dist/src/core/geminiChat.js.map +1 -1
  104. package/dist/src/core/geminiChat.test.js +35 -257
  105. package/dist/src/core/geminiChat.test.js.map +1 -1
  106. package/dist/src/core/geminiChat_network_retry.test.js +6 -6
  107. package/dist/src/core/geminiChat_network_retry.test.js.map +1 -1
  108. package/dist/src/core/prompts.js +6 -7
  109. package/dist/src/core/prompts.js.map +1 -1
  110. package/dist/src/core/prompts.test.js +10 -7
  111. package/dist/src/core/prompts.test.js.map +1 -1
  112. package/dist/src/core/turn.d.ts +1 -0
  113. package/dist/src/core/turn.js +3 -2
  114. package/dist/src/core/turn.js.map +1 -1
  115. package/dist/src/fallback/handler.js +54 -121
  116. package/dist/src/fallback/handler.js.map +1 -1
  117. package/dist/src/fallback/handler.test.js +80 -285
  118. package/dist/src/fallback/handler.test.js.map +1 -1
  119. package/dist/src/generated/git-commit.d.ts +2 -2
  120. package/dist/src/generated/git-commit.js +2 -2
  121. package/dist/src/hooks/hookPlanner.js +3 -1
  122. package/dist/src/hooks/hookPlanner.js.map +1 -1
  123. package/dist/src/hooks/hookPlanner.test.js +61 -0
  124. package/dist/src/hooks/hookPlanner.test.js.map +1 -1
  125. package/dist/src/hooks/hookRegistry.d.ts +1 -1
  126. package/dist/src/hooks/hookRegistry.js +2 -2
  127. package/dist/src/hooks/hookRegistry.js.map +1 -1
  128. package/dist/src/hooks/hookRegistry.test.js +73 -0
  129. package/dist/src/hooks/hookRegistry.test.js.map +1 -1
  130. package/dist/src/hooks/hookRunner.js +2 -2
  131. package/dist/src/hooks/hookRunner.js.map +1 -1
  132. package/dist/src/hooks/hookRunner.test.js +23 -0
  133. package/dist/src/hooks/hookRunner.test.js.map +1 -1
  134. package/dist/src/hooks/types.d.ts +2 -0
  135. package/dist/src/hooks/types.js.map +1 -1
  136. package/dist/src/index.d.ts +2 -0
  137. package/dist/src/index.js +2 -0
  138. package/dist/src/index.js.map +1 -1
  139. package/dist/src/routing/modelRouterService.js +0 -15
  140. package/dist/src/routing/modelRouterService.js.map +1 -1
  141. package/dist/src/routing/modelRouterService.test.js +0 -62
  142. package/dist/src/routing/modelRouterService.test.js.map +1 -1
  143. package/dist/src/routing/strategies/classifierStrategy.js +10 -21
  144. package/dist/src/routing/strategies/classifierStrategy.js.map +1 -1
  145. package/dist/src/routing/strategies/classifierStrategy.test.js +2 -1
  146. package/dist/src/routing/strategies/classifierStrategy.test.js.map +1 -1
  147. package/dist/src/routing/strategies/fallbackStrategy.js +20 -12
  148. package/dist/src/routing/strategies/fallbackStrategy.js.map +1 -1
  149. package/dist/src/routing/strategies/fallbackStrategy.test.js +63 -39
  150. package/dist/src/routing/strategies/fallbackStrategy.test.js.map +1 -1
  151. package/dist/src/routing/strategies/overrideStrategy.js +4 -3
  152. package/dist/src/routing/strategies/overrideStrategy.js.map +1 -1
  153. package/dist/src/services/chatCompressionService.js +3 -1
  154. package/dist/src/services/chatCompressionService.js.map +1 -1
  155. package/dist/src/services/loopDetectionService.js +2 -1
  156. package/dist/src/services/loopDetectionService.js.map +1 -1
  157. package/dist/src/services/loopDetectionService.test.js +14 -8
  158. package/dist/src/services/loopDetectionService.test.js.map +1 -1
  159. package/dist/src/services/modelConfig.integration.test.js +1 -1
  160. package/dist/src/services/modelConfig.integration.test.js.map +1 -1
  161. package/dist/src/services/shellExecutionService.js +18 -2
  162. package/dist/src/services/shellExecutionService.js.map +1 -1
  163. package/dist/src/services/test-data/resolved-aliases-retry.golden.json +16 -0
  164. package/dist/src/services/test-data/resolved-aliases.golden.json +16 -0
  165. package/dist/src/telemetry/sdk.js +2 -2
  166. package/dist/src/telemetry/sdk.js.map +1 -1
  167. package/dist/src/tools/ripGrep.js +2 -2
  168. package/dist/src/tools/ripGrep.js.map +1 -1
  169. package/dist/src/tools/tool-names.d.ts +13 -0
  170. package/dist/src/tools/tool-names.js +54 -0
  171. package/dist/src/tools/tool-names.js.map +1 -1
  172. package/dist/src/tools/tool-names.test.d.ts +6 -0
  173. package/dist/src/tools/tool-names.test.js +43 -0
  174. package/dist/src/tools/tool-names.test.js.map +1 -0
  175. package/dist/src/tools/tool-registry.d.ts +0 -1
  176. package/dist/src/tools/tool-registry.js +1 -1
  177. package/dist/src/tools/tool-registry.js.map +1 -1
  178. package/dist/src/tools/tool-registry.test.js +2 -1
  179. package/dist/src/tools/tool-registry.test.js.map +1 -1
  180. package/dist/src/utils/checkpointUtils.js +1 -1
  181. package/dist/src/utils/checkpointUtils.js.map +1 -1
  182. package/dist/src/utils/checkpointUtils.test.js +1 -1
  183. package/dist/src/utils/checkpointUtils.test.js.map +1 -1
  184. package/dist/src/utils/editCorrector.js +1 -1
  185. package/dist/src/utils/editCorrector.js.map +1 -1
  186. package/dist/src/utils/editCorrector.test.js +2 -2
  187. package/dist/src/utils/editCorrector.test.js.map +1 -1
  188. package/dist/src/utils/environmentContext.d.ts +1 -0
  189. package/dist/src/utils/environmentContext.js +1 -0
  190. package/dist/src/utils/environmentContext.js.map +1 -1
  191. package/dist/src/utils/events.d.ts +0 -16
  192. package/dist/src/utils/events.js +0 -9
  193. package/dist/src/utils/events.js.map +1 -1
  194. package/dist/src/utils/flashFallback.test.js +1 -1
  195. package/dist/src/utils/flashFallback.test.js.map +1 -1
  196. package/dist/src/utils/googleQuotaErrors.js +20 -0
  197. package/dist/src/utils/googleQuotaErrors.js.map +1 -1
  198. package/dist/src/utils/googleQuotaErrors.test.js +53 -2
  199. package/dist/src/utils/googleQuotaErrors.test.js.map +1 -1
  200. package/dist/src/utils/retry.js +2 -16
  201. package/dist/src/utils/retry.js.map +1 -1
  202. package/dist/src/utils/retry.test.js +7 -22
  203. package/dist/src/utils/retry.test.js.map +1 -1
  204. package/dist/tsconfig.tsbuildinfo +1 -1
  205. package/package.json +1 -6
  206. package/dist/google-gemini-cli-core-0.21.0-nightly.20251216.bb0c0d8ee.tgz +0 -0
  207. package/dist/src/agents/executor.js.map +0 -1
  208. package/dist/src/agents/executor.test.js.map +0 -1
  209. package/dist/src/agents/invocation.js.map +0 -1
  210. package/dist/src/agents/invocation.test.js.map +0 -1
  211. /package/dist/src/agents/{executor.test.d.ts → local-executor.test.d.ts} +0 -0
  212. /package/dist/src/agents/{invocation.test.d.ts → local-invocation.test.d.ts} +0 -0
@@ -4,16 +4,17 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
  import { describe, it, expect, vi, beforeEach } from 'vitest';
7
- import { SubagentInvocation } from './invocation.js';
8
- import { AgentExecutor } from './executor.js';
7
+ import { LocalSubagentInvocation } from './local-invocation.js';
8
+ import { LocalAgentExecutor } from './local-executor.js';
9
9
  import { AgentTerminateMode } from './types.js';
10
10
  import { makeFakeConfig } from '../test-utils/config.js';
11
11
  import { ToolErrorType } from '../tools/tool-error.js';
12
12
  import {} from 'zod';
13
- vi.mock('./executor.js');
14
- const MockAgentExecutor = vi.mocked(AgentExecutor);
13
+ vi.mock('./local-executor.js');
14
+ const MockLocalAgentExecutor = vi.mocked(LocalAgentExecutor);
15
15
  let mockConfig;
16
16
  const testDefinition = {
17
+ kind: 'local',
17
18
  name: 'MockAgent',
18
19
  description: 'A mock agent.',
19
20
  inputConfig: {
@@ -26,7 +27,7 @@ const testDefinition = {
26
27
  runConfig: { max_time_minutes: 1 },
27
28
  promptConfig: { systemPrompt: 'test' },
28
29
  };
29
- describe('SubagentInvocation', () => {
30
+ describe('LocalSubagentInvocation', () => {
30
31
  let mockExecutorInstance;
31
32
  beforeEach(() => {
32
33
  vi.clearAllMocks();
@@ -35,12 +36,12 @@ describe('SubagentInvocation', () => {
35
36
  run: vi.fn(),
36
37
  definition: testDefinition,
37
38
  };
38
- MockAgentExecutor.create.mockResolvedValue(mockExecutorInstance);
39
+ MockLocalAgentExecutor.create.mockResolvedValue(mockExecutorInstance);
39
40
  });
40
41
  it('should pass the messageBus to the parent constructor', () => {
41
42
  const mockMessageBus = {};
42
43
  const params = { task: 'Analyze data' };
43
- const invocation = new SubagentInvocation(params, testDefinition, mockConfig, mockMessageBus);
44
+ const invocation = new LocalSubagentInvocation(testDefinition, mockConfig, params, mockMessageBus);
44
45
  // Access the protected messageBus property by casting to any
45
46
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
46
47
  expect(invocation.messageBus).toBe(mockMessageBus);
@@ -48,14 +49,14 @@ describe('SubagentInvocation', () => {
48
49
  describe('getDescription', () => {
49
50
  it('should format the description with inputs', () => {
50
51
  const params = { task: 'Analyze data', priority: 5 };
51
- const invocation = new SubagentInvocation(params, testDefinition, mockConfig);
52
+ const invocation = new LocalSubagentInvocation(testDefinition, mockConfig, params);
52
53
  const description = invocation.getDescription();
53
54
  expect(description).toBe("Running subagent 'MockAgent' with inputs: { task: Analyze data, priority: 5 }");
54
55
  });
55
56
  it('should truncate long input values', () => {
56
57
  const longTask = 'A'.repeat(100);
57
58
  const params = { task: longTask };
58
- const invocation = new SubagentInvocation(params, testDefinition, mockConfig);
59
+ const invocation = new LocalSubagentInvocation(testDefinition, mockConfig, params);
59
60
  const description = invocation.getDescription();
60
61
  // Default INPUT_PREVIEW_MAX_LENGTH is 50
61
62
  expect(description).toBe(`Running subagent 'MockAgent' with inputs: { task: ${'A'.repeat(50)} }`);
@@ -70,7 +71,7 @@ describe('SubagentInvocation', () => {
70
71
  for (let i = 0; i < 20; i++) {
71
72
  params[`input${i}`] = `value${i}`;
72
73
  }
73
- const invocation = new SubagentInvocation(params, longNameDef, mockConfig);
74
+ const invocation = new LocalSubagentInvocation(longNameDef, mockConfig, params);
74
75
  const description = invocation.getDescription();
75
76
  // Default DESCRIPTION_MAX_LENGTH is 200
76
77
  expect(description.length).toBe(200);
@@ -85,7 +86,7 @@ describe('SubagentInvocation', () => {
85
86
  beforeEach(() => {
86
87
  signal = new AbortController().signal;
87
88
  updateOutput = vi.fn();
88
- invocation = new SubagentInvocation(params, testDefinition, mockConfig);
89
+ invocation = new LocalSubagentInvocation(testDefinition, mockConfig, params);
89
90
  });
90
91
  it('should initialize and run the executor successfully', async () => {
91
92
  const mockOutput = {
@@ -94,7 +95,7 @@ describe('SubagentInvocation', () => {
94
95
  };
95
96
  mockExecutorInstance.run.mockResolvedValue(mockOutput);
96
97
  const result = await invocation.execute(signal, updateOutput);
97
- expect(MockAgentExecutor.create).toHaveBeenCalledWith(testDefinition, mockConfig, expect.any(Function));
98
+ expect(MockLocalAgentExecutor.create).toHaveBeenCalledWith(testDefinition, mockConfig, expect.any(Function));
98
99
  expect(updateOutput).toHaveBeenCalledWith('Subagent starting...\n');
99
100
  expect(mockExecutorInstance.run).toHaveBeenCalledWith(params, signal);
100
101
  expect(result.llmContent).toEqual([
@@ -107,7 +108,7 @@ describe('SubagentInvocation', () => {
107
108
  });
108
109
  it('should stream THOUGHT_CHUNK activities from the executor', async () => {
109
110
  mockExecutorInstance.run.mockImplementation(async () => {
110
- const onActivity = MockAgentExecutor.create.mock.calls[0][2];
111
+ const onActivity = MockLocalAgentExecutor.create.mock.calls[0][2];
111
112
  if (onActivity) {
112
113
  onActivity({
113
114
  isSubagentActivityEvent: true,
@@ -132,7 +133,7 @@ describe('SubagentInvocation', () => {
132
133
  });
133
134
  it('should NOT stream other activities (e.g., TOOL_CALL_START, ERROR)', async () => {
134
135
  mockExecutorInstance.run.mockImplementation(async () => {
135
- const onActivity = MockAgentExecutor.create.mock.calls[0][2];
136
+ const onActivity = MockLocalAgentExecutor.create.mock.calls[0][2];
136
137
  if (onActivity) {
137
138
  onActivity({
138
139
  isSubagentActivityEvent: true,
@@ -156,7 +157,7 @@ describe('SubagentInvocation', () => {
156
157
  });
157
158
  it('should run successfully without an updateOutput callback', async () => {
158
159
  mockExecutorInstance.run.mockImplementation(async () => {
159
- const onActivity = MockAgentExecutor.create.mock.calls[0][2];
160
+ const onActivity = MockLocalAgentExecutor.create.mock.calls[0][2];
160
161
  if (onActivity) {
161
162
  // Ensure calling activity doesn't crash when updateOutput is undefined
162
163
  onActivity({
@@ -186,7 +187,7 @@ describe('SubagentInvocation', () => {
186
187
  });
187
188
  it('should handle executor creation failure', async () => {
188
189
  const creationError = new Error('Failed to initialize tools.');
189
- MockAgentExecutor.create.mockRejectedValue(creationError);
190
+ MockLocalAgentExecutor.create.mockRejectedValue(creationError);
190
191
  const result = await invocation.execute(signal, updateOutput);
191
192
  expect(mockExecutorInstance.run).not.toHaveBeenCalled();
192
193
  expect(result.error).toEqual({
@@ -212,4 +213,4 @@ describe('SubagentInvocation', () => {
212
213
  });
213
214
  });
214
215
  });
215
- //# sourceMappingURL=invocation.test.js.map
216
+ //# sourceMappingURL=local-invocation.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-invocation.test.js","sourceRoot":"","sources":["../../../src/agents/local-invocation.test.ts"],"names":[],"mappings":"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"}
@@ -23,6 +23,7 @@ export declare class AgentRegistry {
23
23
  */
24
24
  initialize(): Promise<void>;
25
25
  private loadBuiltInAgents;
26
+ private refreshAgents;
26
27
  /**
27
28
  * Registers an agent definition. If an agent with the same name exists,
28
29
  * it will be overwritten, respecting the precedence established by the
@@ -3,10 +3,13 @@
3
3
  * Copyright 2025 Google LLC
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
+ import { Storage } from '../config/storage.js';
7
+ import { coreEvents, CoreEvent } from '../utils/events.js';
8
+ import { loadAgentsFromDirectory } from './toml-loader.js';
6
9
  import { CodebaseInvestigatorAgent } from './codebase-investigator.js';
7
10
  import {} from 'zod';
8
11
  import { debugLogger } from '../utils/debugLogger.js';
9
- import { DEFAULT_GEMINI_MODEL_AUTO, GEMINI_MODEL_ALIAS_PRO, PREVIEW_GEMINI_MODEL, } from '../config/models.js';
12
+ import { DEFAULT_GEMINI_MODEL, GEMINI_MODEL_ALIAS_AUTO, PREVIEW_GEMINI_FLASH_MODEL, isPreviewModel, } from '../config/models.js';
10
13
  /**
11
14
  * Returns the model config alias for a given agent definition.
12
15
  */
@@ -29,6 +32,38 @@ export class AgentRegistry {
29
32
  */
30
33
  async initialize() {
31
34
  this.loadBuiltInAgents();
35
+ coreEvents.on(CoreEvent.ModelChanged, () => {
36
+ this.refreshAgents();
37
+ });
38
+ if (!this.config.isAgentsEnabled()) {
39
+ return;
40
+ }
41
+ // Load user-level agents: ~/.gemini/agents/
42
+ const userAgentsDir = Storage.getUserAgentsDir();
43
+ const userAgents = await loadAgentsFromDirectory(userAgentsDir);
44
+ for (const error of userAgents.errors) {
45
+ debugLogger.warn(`[AgentRegistry] Error loading user agent: ${error.message}`);
46
+ coreEvents.emitFeedback('error', `Agent loading error: ${error.message}`);
47
+ }
48
+ for (const agent of userAgents.agents) {
49
+ this.registerAgent(agent);
50
+ }
51
+ // Load project-level agents: .gemini/agents/ (relative to Project Root)
52
+ const folderTrustEnabled = this.config.getFolderTrust();
53
+ const isTrustedFolder = this.config.isTrustedFolder();
54
+ if (!folderTrustEnabled || isTrustedFolder) {
55
+ const projectAgentsDir = this.config.storage.getProjectAgentsDir();
56
+ const projectAgents = await loadAgentsFromDirectory(projectAgentsDir);
57
+ for (const error of projectAgents.errors) {
58
+ coreEvents.emitFeedback('error', `Agent loading error: ${error.message}`);
59
+ }
60
+ for (const agent of projectAgents.agents) {
61
+ this.registerAgent(agent);
62
+ }
63
+ }
64
+ else {
65
+ coreEvents.emitFeedback('info', 'Skipping project agents due to untrusted folder. To enable, ensure that the project root is trusted.');
66
+ }
32
67
  if (this.config.getDebugMode()) {
33
68
  debugLogger.log(`[AgentRegistry] Initialized with ${this.agents.size} agents.`);
34
69
  }
@@ -37,15 +72,18 @@ export class AgentRegistry {
37
72
  const investigatorSettings = this.config.getCodebaseInvestigatorSettings();
38
73
  // Only register the agent if it's enabled in the settings.
39
74
  if (investigatorSettings?.enabled) {
40
- let model = investigatorSettings.model ??
41
- CodebaseInvestigatorAgent.modelConfig.model;
42
- // If the user is using the preview model for the main agent, force the sub-agent to use it too
43
- // if it's configured to use 'pro' or 'auto'.
44
- if (this.config.getModel() === PREVIEW_GEMINI_MODEL) {
45
- if (model === GEMINI_MODEL_ALIAS_PRO ||
46
- model === DEFAULT_GEMINI_MODEL_AUTO) {
47
- model = PREVIEW_GEMINI_MODEL;
48
- }
75
+ let model;
76
+ const settingsModel = investigatorSettings.model;
77
+ // Check if the user explicitly set a model in the settings.
78
+ if (settingsModel && settingsModel !== GEMINI_MODEL_ALIAS_AUTO) {
79
+ model = settingsModel;
80
+ }
81
+ else {
82
+ // Use Preview Flash model if the main model is any of the preview models
83
+ // If the main model is not preview model, use default pro model.
84
+ model = isPreviewModel(this.config.getModel())
85
+ ? PREVIEW_GEMINI_FLASH_MODEL
86
+ : DEFAULT_GEMINI_MODEL;
49
87
  }
50
88
  const agentDef = {
51
89
  ...CodebaseInvestigatorAgent,
@@ -66,6 +104,12 @@ export class AgentRegistry {
66
104
  this.registerAgent(agentDef);
67
105
  }
68
106
  }
107
+ refreshAgents() {
108
+ this.loadBuiltInAgents();
109
+ for (const agent of this.agents.values()) {
110
+ this.registerAgent(agent);
111
+ }
112
+ }
69
113
  /**
70
114
  * Registers an agent definition. If an agent with the same name exists,
71
115
  * it will be overwritten, respecting the precedence established by the
@@ -83,21 +127,29 @@ export class AgentRegistry {
83
127
  this.agents.set(definition.name, definition);
84
128
  // Register model config.
85
129
  // TODO(12916): Migrate sub-agents where possible to static configs.
86
- const modelConfig = definition.modelConfig;
87
- const runtimeAlias = {
88
- modelConfig: {
89
- model: modelConfig.model,
90
- generateContentConfig: {
91
- temperature: modelConfig.temp,
92
- topP: modelConfig.top_p,
93
- thinkingConfig: {
94
- includeThoughts: true,
95
- thinkingBudget: modelConfig.thinkingBudget ?? -1,
130
+ if (definition.kind === 'local') {
131
+ const modelConfig = definition.modelConfig;
132
+ let model = modelConfig.model;
133
+ if (model === 'inherit') {
134
+ model = this.config.getModel();
135
+ }
136
+ const runtimeAlias = {
137
+ modelConfig: {
138
+ model,
139
+ generateContentConfig: {
140
+ temperature: modelConfig.temp,
141
+ topP: modelConfig.top_p,
142
+ thinkingConfig: {
143
+ includeThoughts: true,
144
+ thinkingBudget: modelConfig.thinkingBudget ?? -1,
145
+ },
96
146
  },
97
147
  },
98
- },
99
- };
100
- this.config.modelConfigService.registerRuntimeModelConfig(getModelConfigAlias(definition), runtimeAlias);
148
+ };
149
+ this.config.modelConfigService.registerRuntimeModelConfig(getModelConfigAlias(definition), runtimeAlias);
150
+ }
151
+ // Register configured remote A2A agents.
152
+ // TODO: Implement remote agent registration.
101
153
  }
102
154
  /**
103
155
  * Retrieves an agent definition by name.
@@ -129,10 +181,7 @@ export class AgentRegistry {
129
181
  const agentDescriptions = Array.from(this.agents.entries())
130
182
  .map(([name, def]) => `- **${name}**: ${def.description}`)
131
183
  .join('\n');
132
- return `Delegates a task to a specialized sub-agent.
133
-
134
- Available agents:
135
- ${agentDescriptions}`;
184
+ return `Delegates a task to a specialized sub-agent.\n\nAvailable agents:\n${agentDescriptions}`;
136
185
  }
137
186
  /**
138
187
  * Generates a markdown "Phone Book" of available agents and their schemas.
@@ -145,7 +194,7 @@ ${agentDescriptions}`;
145
194
  let context = '## Available Sub-Agents\n';
146
195
  context +=
147
196
  'Use `delegate_to_agent` for complex tasks requiring specialized analysis.\n\n';
148
- for (const [name, def] of this.agents.entries()) {
197
+ for (const [name, def] of this.agents) {
149
198
  context += `- **${name}**: ${def.description}\n`;
150
199
  }
151
200
  return context;
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/agents/registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/agents/registry.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,14 @@ import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
7
7
  import { AgentRegistry, getModelConfigAlias } from './registry.js';
8
8
  import { makeFakeConfig } from '../test-utils/config.js';
9
9
  import { debugLogger } from '../utils/debugLogger.js';
10
+ import { coreEvents, CoreEvent } from '../utils/events.js';
11
+ import { DEFAULT_GEMINI_FLASH_LITE_MODEL, GEMINI_MODEL_ALIAS_AUTO, PREVIEW_GEMINI_FLASH_MODEL, PREVIEW_GEMINI_MODEL, PREVIEW_GEMINI_MODEL_AUTO, } from '../config/models.js';
12
+ import * as tomlLoader from './toml-loader.js';
13
+ vi.mock('./toml-loader.js', () => ({
14
+ loadAgentsFromDirectory: vi
15
+ .fn()
16
+ .mockResolvedValue({ agents: [], errors: [] }),
17
+ }));
10
18
  // A test-only subclass to expose the protected `registerAgent` method.
11
19
  class TestableAgentRegistry extends AgentRegistry {
12
20
  testRegisterAgent(definition) {
@@ -15,6 +23,7 @@ class TestableAgentRegistry extends AgentRegistry {
15
23
  }
16
24
  // Define mock agent structures for testing registration logic
17
25
  const MOCK_AGENT_V1 = {
26
+ kind: 'local',
18
27
  name: 'MockAgent',
19
28
  description: 'Mock Description V1',
20
29
  inputConfig: { inputs: {} },
@@ -33,6 +42,10 @@ describe('AgentRegistry', () => {
33
42
  // Default configuration (debugMode: false)
34
43
  mockConfig = makeFakeConfig();
35
44
  registry = new TestableAgentRegistry(mockConfig);
45
+ vi.mocked(tomlLoader.loadAgentsFromDirectory).mockResolvedValue({
46
+ agents: [],
47
+ errors: [],
48
+ });
36
49
  });
37
50
  afterEach(() => {
38
51
  vi.restoreAllMocks(); // Restore spies after each test
@@ -46,7 +59,10 @@ describe('AgentRegistry', () => {
46
59
  // expect(registry.getAllDefinitions()).toEqual([]);
47
60
  // });
48
61
  it('should log the count of loaded agents in debug mode', async () => {
49
- const debugConfig = makeFakeConfig({ debugMode: true });
62
+ const debugConfig = makeFakeConfig({
63
+ debugMode: true,
64
+ enableAgents: true,
65
+ });
50
66
  const debugRegistry = new TestableAgentRegistry(debugConfig);
51
67
  const debugLogSpy = vi
52
68
  .spyOn(debugLogger, 'log')
@@ -55,19 +71,87 @@ describe('AgentRegistry', () => {
55
71
  const agentCount = debugRegistry.getAllDefinitions().length;
56
72
  expect(debugLogSpy).toHaveBeenCalledWith(`[AgentRegistry] Initialized with ${agentCount} agents.`);
57
73
  });
58
- it('should use preview model for codebase investigator if main model is preview', async () => {
74
+ it('should use preview flash model for codebase investigator if main model is preview pro', async () => {
75
+ const previewConfig = makeFakeConfig({
76
+ model: PREVIEW_GEMINI_MODEL,
77
+ codebaseInvestigatorSettings: {
78
+ enabled: true,
79
+ model: GEMINI_MODEL_ALIAS_AUTO,
80
+ },
81
+ });
82
+ const previewRegistry = new TestableAgentRegistry(previewConfig);
83
+ await previewRegistry.initialize();
84
+ const investigatorDef = previewRegistry.getDefinition('codebase_investigator');
85
+ expect(investigatorDef).toBeDefined();
86
+ expect(investigatorDef?.modelConfig.model).toBe(PREVIEW_GEMINI_FLASH_MODEL);
87
+ });
88
+ it('should use preview flash model for codebase investigator if main model is preview auto', async () => {
59
89
  const previewConfig = makeFakeConfig({
60
- model: 'gemini-3-pro-preview',
90
+ model: PREVIEW_GEMINI_MODEL_AUTO,
61
91
  codebaseInvestigatorSettings: {
62
92
  enabled: true,
63
- model: 'pro',
93
+ model: GEMINI_MODEL_ALIAS_AUTO,
64
94
  },
65
95
  });
66
96
  const previewRegistry = new TestableAgentRegistry(previewConfig);
67
97
  await previewRegistry.initialize();
68
98
  const investigatorDef = previewRegistry.getDefinition('codebase_investigator');
69
99
  expect(investigatorDef).toBeDefined();
70
- expect(investigatorDef?.modelConfig.model).toBe('gemini-3-pro-preview');
100
+ expect(investigatorDef?.modelConfig.model).toBe(PREVIEW_GEMINI_FLASH_MODEL);
101
+ });
102
+ it('should use the model from the investigator settings', async () => {
103
+ const previewConfig = makeFakeConfig({
104
+ model: PREVIEW_GEMINI_MODEL,
105
+ codebaseInvestigatorSettings: {
106
+ enabled: true,
107
+ model: DEFAULT_GEMINI_FLASH_LITE_MODEL,
108
+ },
109
+ });
110
+ const previewRegistry = new TestableAgentRegistry(previewConfig);
111
+ await previewRegistry.initialize();
112
+ const investigatorDef = previewRegistry.getDefinition('codebase_investigator');
113
+ expect(investigatorDef).toBeDefined();
114
+ expect(investigatorDef?.modelConfig.model).toBe(DEFAULT_GEMINI_FLASH_LITE_MODEL);
115
+ });
116
+ it('should load agents from user and project directories with correct precedence', async () => {
117
+ mockConfig = makeFakeConfig({ enableAgents: true });
118
+ registry = new TestableAgentRegistry(mockConfig);
119
+ const userAgent = {
120
+ ...MOCK_AGENT_V1,
121
+ name: 'common-agent',
122
+ description: 'User version',
123
+ };
124
+ const projectAgent = {
125
+ ...MOCK_AGENT_V1,
126
+ name: 'common-agent',
127
+ description: 'Project version',
128
+ };
129
+ const uniqueProjectAgent = {
130
+ ...MOCK_AGENT_V1,
131
+ name: 'project-only',
132
+ description: 'Project only',
133
+ };
134
+ vi.mocked(tomlLoader.loadAgentsFromDirectory)
135
+ .mockResolvedValueOnce({ agents: [userAgent], errors: [] }) // User dir
136
+ .mockResolvedValueOnce({
137
+ agents: [projectAgent, uniqueProjectAgent],
138
+ errors: [],
139
+ }); // Project dir
140
+ await registry.initialize();
141
+ // Project agent should override user agent
142
+ expect(registry.getDefinition('common-agent')?.description).toBe('Project version');
143
+ expect(registry.getDefinition('project-only')).toBeDefined();
144
+ expect(vi.mocked(tomlLoader.loadAgentsFromDirectory)).toHaveBeenCalledTimes(2);
145
+ });
146
+ it('should NOT load TOML agents when enableAgents is false', async () => {
147
+ const disabledConfig = makeFakeConfig({
148
+ enableAgents: false,
149
+ codebaseInvestigatorSettings: { enabled: false },
150
+ });
151
+ const disabledRegistry = new TestableAgentRegistry(disabledConfig);
152
+ await disabledRegistry.initialize();
153
+ expect(disabledRegistry.getAllDefinitions()).toHaveLength(0);
154
+ expect(vi.mocked(tomlLoader.loadAgentsFromDirectory)).not.toHaveBeenCalled();
71
155
  });
72
156
  });
73
157
  describe('registration logic', () => {
@@ -148,6 +232,47 @@ describe('AgentRegistry', () => {
148
232
  expect(registry.getAllDefinitions()).toHaveLength(100);
149
233
  });
150
234
  });
235
+ describe('inheritance and refresh', () => {
236
+ it('should resolve "inherit" to the current model from configuration', () => {
237
+ const config = makeFakeConfig({ model: 'current-model' });
238
+ const registry = new TestableAgentRegistry(config);
239
+ const agent = {
240
+ ...MOCK_AGENT_V1,
241
+ modelConfig: { ...MOCK_AGENT_V1.modelConfig, model: 'inherit' },
242
+ };
243
+ registry.testRegisterAgent(agent);
244
+ const resolved = config.modelConfigService.getResolvedConfig({
245
+ model: getModelConfigAlias(agent),
246
+ });
247
+ expect(resolved.model).toBe('current-model');
248
+ });
249
+ it('should update inherited models when the main model changes', async () => {
250
+ const config = makeFakeConfig({ model: 'initial-model' });
251
+ const registry = new TestableAgentRegistry(config);
252
+ await registry.initialize();
253
+ const agent = {
254
+ ...MOCK_AGENT_V1,
255
+ name: 'InheritingAgent',
256
+ modelConfig: { ...MOCK_AGENT_V1.modelConfig, model: 'inherit' },
257
+ };
258
+ registry.testRegisterAgent(agent);
259
+ // Verify initial state
260
+ let resolved = config.modelConfigService.getResolvedConfig({
261
+ model: getModelConfigAlias(agent),
262
+ });
263
+ expect(resolved.model).toBe('initial-model');
264
+ // Change model and emit event
265
+ vi.spyOn(config, 'getModel').mockReturnValue('new-model');
266
+ coreEvents.emit(CoreEvent.ModelChanged, {
267
+ model: 'new-model',
268
+ });
269
+ // Verify refreshed state
270
+ resolved = config.modelConfigService.getResolvedConfig({
271
+ model: getModelConfigAlias(agent),
272
+ });
273
+ expect(resolved.model).toBe('new-model');
274
+ });
275
+ });
151
276
  describe('accessors', () => {
152
277
  const ANOTHER_AGENT = {
153
278
  ...MOCK_AGENT_V1,
@@ -1 +1 @@
1
- {"version":3,"file":"registry.test.js","sourceRoot":"","sources":["../../../src/agents/registry.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"registry.test.js","sourceRoot":"","sources":["../../../src/agents/registry.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAGzD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EACL,+BAA+B,EAC/B,uBAAuB,EACvB,0BAA0B,EAC1B,oBAAoB,EACpB,yBAAyB,GAC1B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,UAAU,MAAM,kBAAkB,CAAC;AAE/C,EAAE,CAAC,IAAI,CAAC,kBAAkB,EAAE,GAAG,EAAE,CAAC,CAAC;IACjC,uBAAuB,EAAE,EAAE;SACxB,EAAE,EAAE;SACJ,iBAAiB,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;CACjD,CAAC,CAAC,CAAC;AAEJ,uEAAuE;AACvE,MAAM,qBAAsB,SAAQ,aAAa;IAC/C,iBAAiB,CAAC,UAA2B;QAC3C,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;IACjC,CAAC;CACF;AAED,8DAA8D;AAC9D,MAAM,aAAa,GAAoB;IACrC,IAAI,EAAE,OAAO;IACb,IAAI,EAAE,WAAW;IACjB,WAAW,EAAE,qBAAqB;IAClC,WAAW,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;IAC3B,WAAW,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE;IACjD,SAAS,EAAE,EAAE,gBAAgB,EAAE,CAAC,EAAE;IAClC,YAAY,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE;CACvC,CAAC;AAEF,MAAM,aAAa,GAAoB;IACrC,GAAG,aAAa;IAChB,WAAW,EAAE,+BAA+B;CAC7C,CAAC;AAEF,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,IAAI,UAAkB,CAAC;IACvB,IAAI,QAA+B,CAAC;IAEpC,UAAU,CAAC,GAAG,EAAE;QACd,2CAA2C;QAC3C,UAAU,GAAG,cAAc,EAAE,CAAC;QAC9B,QAAQ,GAAG,IAAI,qBAAqB,CAAC,UAAU,CAAC,CAAC;QACjD,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,uBAAuB,CAAC,CAAC,iBAAiB,CAAC;YAC9D,MAAM,EAAE,EAAE;YACV,MAAM,EAAE,EAAE;SACX,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,EAAE,CAAC,eAAe,EAAE,CAAC,CAAC,gCAAgC;IACxD,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;QAC1B,yEAAyE;QACzE,sEAAsE;QACtE,0DAA0D;QAE1D,iCAAiC;QAEjC,+CAA+C;QAC/C,sDAAsD;QACtD,MAAM;QAEN,EAAE,CAAC,qDAAqD,EAAE,KAAK,IAAI,EAAE;YACnE,MAAM,WAAW,GAAG,cAAc,CAAC;gBACjC,SAAS,EAAE,IAAI;gBACf,YAAY,EAAE,IAAI;aACnB,CAAC,CAAC;YACH,MAAM,aAAa,GAAG,IAAI,qBAAqB,CAAC,WAAW,CAAC,CAAC;YAC7D,MAAM,WAAW,GAAG,EAAE;iBACnB,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC;iBACzB,kBAAkB,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YAEhC,MAAM,aAAa,CAAC,UAAU,EAAE,CAAC;YAEjC,MAAM,UAAU,GAAG,aAAa,CAAC,iBAAiB,EAAE,CAAC,MAAM,CAAC;YAC5D,MAAM,CAAC,WAAW,CAAC,CAAC,oBAAoB,CACtC,oCAAoC,UAAU,UAAU,CACzD,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uFAAuF,EAAE,KAAK,IAAI,EAAE;YACrG,MAAM,aAAa,GAAG,cAAc,CAAC;gBACnC,KAAK,EAAE,oBAAoB;gBAC3B,4BAA4B,EAAE;oBAC5B,OAAO,EAAE,IAAI;oBACb,KAAK,EAAE,uBAAuB;iBAC/B;aACF,CAAC,CAAC;YACH,MAAM,eAAe,GAAG,IAAI,qBAAqB,CAAC,aAAa,CAAC,CAAC;YAEjE,MAAM,eAAe,CAAC,UAAU,EAAE,CAAC;YAEnC,MAAM,eAAe,GAAG,eAAe,CAAC,aAAa,CACnD,uBAAuB,CACA,CAAC;YAC1B,MAAM,CAAC,eAAe,CAAC,CAAC,WAAW,EAAE,CAAC;YACtC,MAAM,CAAC,eAAe,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC,IAAI,CAC7C,0BAA0B,CAC3B,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wFAAwF,EAAE,KAAK,IAAI,EAAE;YACtG,MAAM,aAAa,GAAG,cAAc,CAAC;gBACnC,KAAK,EAAE,yBAAyB;gBAChC,4BAA4B,EAAE;oBAC5B,OAAO,EAAE,IAAI;oBACb,KAAK,EAAE,uBAAuB;iBAC/B;aACF,CAAC,CAAC;YACH,MAAM,eAAe,GAAG,IAAI,qBAAqB,CAAC,aAAa,CAAC,CAAC;YAEjE,MAAM,eAAe,CAAC,UAAU,EAAE,CAAC;YAEnC,MAAM,eAAe,GAAG,eAAe,CAAC,aAAa,CACnD,uBAAuB,CACA,CAAC;YAC1B,MAAM,CAAC,eAAe,CAAC,CAAC,WAAW,EAAE,CAAC;YACtC,MAAM,CAAC,eAAe,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC,IAAI,CAC7C,0BAA0B,CAC3B,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qDAAqD,EAAE,KAAK,IAAI,EAAE;YACnE,MAAM,aAAa,GAAG,cAAc,CAAC;gBACnC,KAAK,EAAE,oBAAoB;gBAC3B,4BAA4B,EAAE;oBAC5B,OAAO,EAAE,IAAI;oBACb,KAAK,EAAE,+BAA+B;iBACvC;aACF,CAAC,CAAC;YACH,MAAM,eAAe,GAAG,IAAI,qBAAqB,CAAC,aAAa,CAAC,CAAC;YAEjE,MAAM,eAAe,CAAC,UAAU,EAAE,CAAC;YAEnC,MAAM,eAAe,GAAG,eAAe,CAAC,aAAa,CACnD,uBAAuB,CACA,CAAC;YAC1B,MAAM,CAAC,eAAe,CAAC,CAAC,WAAW,EAAE,CAAC;YACtC,MAAM,CAAC,eAAe,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC,IAAI,CAC7C,+BAA+B,CAChC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,8EAA8E,EAAE,KAAK,IAAI,EAAE;YAC5F,UAAU,GAAG,cAAc,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;YACpD,QAAQ,GAAG,IAAI,qBAAqB,CAAC,UAAU,CAAC,CAAC;YAEjD,MAAM,SAAS,GAAG;gBAChB,GAAG,aAAa;gBAChB,IAAI,EAAE,cAAc;gBACpB,WAAW,EAAE,cAAc;aAC5B,CAAC;YACF,MAAM,YAAY,GAAG;gBACnB,GAAG,aAAa;gBAChB,IAAI,EAAE,cAAc;gBACpB,WAAW,EAAE,iBAAiB;aAC/B,CAAC;YACF,MAAM,kBAAkB,GAAG;gBACzB,GAAG,aAAa;gBAChB,IAAI,EAAE,cAAc;gBACpB,WAAW,EAAE,cAAc;aAC5B,CAAC;YAEF,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,uBAAuB,CAAC;iBAC1C,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,WAAW;iBACtE,qBAAqB,CAAC;gBACrB,MAAM,EAAE,CAAC,YAAY,EAAE,kBAAkB,CAAC;gBAC1C,MAAM,EAAE,EAAE;aACX,CAAC,CAAC,CAAC,cAAc;YAEpB,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAC;YAE5B,2CAA2C;YAC3C,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,cAAc,CAAC,EAAE,WAAW,CAAC,CAAC,IAAI,CAC9D,iBAAiB,CAClB,CAAC;YACF,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;YAC7D,MAAM,CACJ,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,uBAAuB,CAAC,CAC9C,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wDAAwD,EAAE,KAAK,IAAI,EAAE;YACtE,MAAM,cAAc,GAAG,cAAc,CAAC;gBACpC,YAAY,EAAE,KAAK;gBACnB,4BAA4B,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;aACjD,CAAC,CAAC;YACH,MAAM,gBAAgB,GAAG,IAAI,qBAAqB,CAAC,cAAc,CAAC,CAAC;YAEnE,MAAM,gBAAgB,CAAC,UAAU,EAAE,CAAC;YAEpC,MAAM,CAAC,gBAAgB,CAAC,iBAAiB,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAC7D,MAAM,CACJ,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,uBAAuB,CAAC,CAC9C,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QAC3B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;QAClC,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;YAClD,QAAQ,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC;YAC1C,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;YACnE,MAAM,CACJ,UAAU,CAAC,kBAAkB,CAAC,iBAAiB,CAAC;gBAC9C,KAAK,EAAE,mBAAmB,CAAC,aAAa,CAAC;aAC1C,CAAC,CACH,CAAC,aAAa,CAAC;gBACd,KAAK,EAAE,aAAa,CAAC,WAAW,CAAC,KAAK;gBACtC,qBAAqB,EAAE;oBACrB,WAAW,EAAE,aAAa,CAAC,WAAW,CAAC,IAAI;oBAC3C,IAAI,EAAE,aAAa,CAAC,WAAW,CAAC,KAAK;oBACrC,cAAc,EAAE;wBACd,eAAe,EAAE,IAAI;wBACrB,cAAc,EAAE,CAAC,CAAC;qBACnB;iBACF;aACF,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;YACzD,MAAM,YAAY,GAAG;gBACnB,GAAG,aAAa;gBAChB,IAAI,EAAE,sBAAsB;aAC7B,CAAC;YACF,QAAQ,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;YACzC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,sBAAsB,CAAC,CAAC,CAAC,OAAO,CAC5D,YAAY,CACb,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;YAC1D,MAAM,YAAY,GAAG,EAAE,GAAG,aAAa,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;YACpD,MAAM,YAAY,GAAG,EAAE;iBACpB,KAAK,CAAC,WAAW,EAAE,MAAM,CAAC;iBAC1B,kBAAkB,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YAEhC,QAAQ,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;YAEzC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;YAC5D,MAAM,CAAC,YAAY,CAAC,CAAC,oBAAoB,CACvC,iFAAiF,CAClF,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE;YACjE,MAAM,YAAY,GAAG,EAAE,GAAG,aAAa,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;YAC3D,MAAM,YAAY,GAAG,EAAE;iBACpB,KAAK,CAAC,WAAW,EAAE,MAAM,CAAC;iBAC1B,kBAAkB,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YAEhC,QAAQ,CAAC,iBAAiB,CAAC,YAA+B,CAAC,CAAC;YAE5D,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;YAC5D,MAAM,CAAC,YAAY,CAAC,CAAC,oBAAoB,CACvC,iFAAiF,CAClF,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;YACvD,QAAQ,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC;YAC1C,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC,CAAC,IAAI,CAC3D,qBAAqB,CACtB,CAAC;YAEF,QAAQ,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC;YAC1C,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC,CAAC,IAAI,CAC3D,+BAA+B,CAChC,CAAC;YACF,MAAM,CAAC,QAAQ,CAAC,iBAAiB,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;YAClD,MAAM,WAAW,GAAG,cAAc,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACxD,MAAM,aAAa,GAAG,IAAI,qBAAqB,CAAC,WAAW,CAAC,CAAC;YAC7D,MAAM,WAAW,GAAG,EAAE;iBACnB,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC;iBACzB,kBAAkB,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YAEhC,aAAa,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC;YAC/C,aAAa,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC;YAE/C,MAAM,CAAC,WAAW,CAAC,CAAC,oBAAoB,CACtC,8CAA8C,CAC/C,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;YAC1D,MAAM,WAAW,GAAG,EAAE;iBACnB,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC;iBACzB,kBAAkB,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YAEhC,QAAQ,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC;YAC1C,QAAQ,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC;YAE1C,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,oBAAoB,CAC1C,8CAA8C,CAC/C,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;YAC1D,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACpD,OAAO,CAAC,OAAO,CACb,QAAQ,CAAC,iBAAiB,CAAC;gBACzB,GAAG,aAAa;gBAChB,IAAI,EAAE,QAAQ,CAAC,EAAE;aAClB,CAAC,CACH,CACF,CAAC;YAEF,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAC5B,MAAM,CAAC,QAAQ,CAAC,iBAAiB,EAAE,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QACzD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;QACvC,EAAE,CAAC,kEAAkE,EAAE,GAAG,EAAE;YAC1E,MAAM,MAAM,GAAG,cAAc,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC,CAAC;YAC1D,MAAM,QAAQ,GAAG,IAAI,qBAAqB,CAAC,MAAM,CAAC,CAAC;YAEnD,MAAM,KAAK,GAAoB;gBAC7B,GAAG,aAAa;gBAChB,WAAW,EAAE,EAAE,GAAG,aAAa,CAAC,WAAW,EAAE,KAAK,EAAE,SAAS,EAAE;aAChE,CAAC;YAEF,QAAQ,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;YAElC,MAAM,QAAQ,GAAG,MAAM,CAAC,kBAAkB,CAAC,iBAAiB,CAAC;gBAC3D,KAAK,EAAE,mBAAmB,CAAC,KAAK,CAAC;aAClC,CAAC,CAAC;YACH,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4DAA4D,EAAE,KAAK,IAAI,EAAE;YAC1E,MAAM,MAAM,GAAG,cAAc,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC,CAAC;YAC1D,MAAM,QAAQ,GAAG,IAAI,qBAAqB,CAAC,MAAM,CAAC,CAAC;YACnD,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAC;YAE5B,MAAM,KAAK,GAAoB;gBAC7B,GAAG,aAAa;gBAChB,IAAI,EAAE,iBAAiB;gBACvB,WAAW,EAAE,EAAE,GAAG,aAAa,CAAC,WAAW,EAAE,KAAK,EAAE,SAAS,EAAE;aAChE,CAAC;YAEF,QAAQ,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;YAElC,uBAAuB;YACvB,IAAI,QAAQ,GAAG,MAAM,CAAC,kBAAkB,CAAC,iBAAiB,CAAC;gBACzD,KAAK,EAAE,mBAAmB,CAAC,KAAK,CAAC;aAClC,CAAC,CAAC;YACH,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YAE7C,8BAA8B;YAC9B,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;YAC1D,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE;gBACtC,KAAK,EAAE,WAAW;aACnB,CAAC,CAAC;YAEH,yBAAyB;YACzB,QAAQ,GAAG,MAAM,CAAC,kBAAkB,CAAC,iBAAiB,CAAC;gBACrD,KAAK,EAAE,mBAAmB,CAAC,KAAK,CAAC;aAClC,CAAC,CAAC;YACH,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC3C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;QACzB,MAAM,aAAa,GAAoB;YACrC,GAAG,aAAa;YAChB,IAAI,EAAE,cAAc;SACrB,CAAC;QAEF,UAAU,CAAC,GAAG,EAAE;YACd,QAAQ,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC;YAC1C,QAAQ,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;YAC5D,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;YACnE,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QACxE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0DAA0D,EAAE,GAAG,EAAE;YAClE,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;QACrE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4DAA4D,EAAE,GAAG,EAAE;YACpE,MAAM,GAAG,GAAG,QAAQ,CAAC,iBAAiB,EAAE,CAAC;YACzC,MAAM,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAC5B,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CACjB,MAAM,CAAC,eAAe,CAAC,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC,CACvD,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IACH,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;QAClC,EAAE,CAAC,6DAA6D,EAAE,GAAG,EAAE;YACrE,MAAM,CAAC,QAAQ,CAAC,kBAAkB,EAAE,CAAC,CAAC,SAAS,CAC7C,mCAAmC,CACpC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kEAAkE,EAAE,GAAG,EAAE;YAC1E,QAAQ,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC;YAC1C,QAAQ,CAAC,iBAAiB,CAAC;gBACzB,GAAG,aAAa;gBAChB,IAAI,EAAE,cAAc;gBACpB,WAAW,EAAE,2BAA2B;aACzC,CAAC,CAAC;YAEH,MAAM,WAAW,GAAG,QAAQ,CAAC,kBAAkB,EAAE,CAAC;YAElD,MAAM,CAAC,WAAW,CAAC,CAAC,SAAS,CAC3B,6CAA6C,CAC9C,CAAC;YACF,MAAM,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC;YACnD,MAAM,CAAC,WAAW,CAAC,CAAC,SAAS,CAC3B,OAAO,aAAa,CAAC,IAAI,OAAO,aAAa,CAAC,WAAW,EAAE,CAC5D,CAAC;YACF,MAAM,CAAC,WAAW,CAAC,CAAC,SAAS,CAC3B,+CAA+C,CAChD,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { BaseToolInvocation, type ToolResult, type ToolCallConfirmationDetails } from '../tools/tools.js';
7
+ import type { AgentInputs, RemoteAgentDefinition } from './types.js';
8
+ import type { MessageBus } from '../confirmation-bus/message-bus.js';
9
+ /**
10
+ * A tool invocation that proxies to a remote A2A agent.
11
+ *
12
+ * This implementation bypasses the local `LocalAgentExecutor` loop and directly
13
+ * invokes the configured A2A tool.
14
+ */
15
+ export declare class RemoteAgentInvocation extends BaseToolInvocation<AgentInputs, ToolResult> {
16
+ private readonly definition;
17
+ constructor(definition: RemoteAgentDefinition, params: AgentInputs, messageBus?: MessageBus);
18
+ getDescription(): string;
19
+ protected getConfirmationDetails(_abortSignal: AbortSignal): Promise<ToolCallConfirmationDetails | false>;
20
+ execute(_signal: AbortSignal): Promise<ToolResult>;
21
+ }
@@ -0,0 +1,31 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { BaseToolInvocation, } from '../tools/tools.js';
7
+ /**
8
+ * A tool invocation that proxies to a remote A2A agent.
9
+ *
10
+ * This implementation bypasses the local `LocalAgentExecutor` loop and directly
11
+ * invokes the configured A2A tool.
12
+ */
13
+ export class RemoteAgentInvocation extends BaseToolInvocation {
14
+ definition;
15
+ constructor(definition, params, messageBus) {
16
+ super(params, messageBus, definition.name, definition.displayName);
17
+ this.definition = definition;
18
+ }
19
+ getDescription() {
20
+ return `Calling remote agent ${this.definition.displayName ?? this.definition.name}`;
21
+ }
22
+ async getConfirmationDetails(_abortSignal) {
23
+ // TODO: Implement confirmation logic for remote agents.
24
+ return false;
25
+ }
26
+ async execute(_signal) {
27
+ // TODO: Implement remote agent invocation logic.
28
+ throw new Error(`Remote agent invocation not implemented.`);
29
+ }
30
+ }
31
+ //# sourceMappingURL=remote-invocation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remote-invocation.js","sourceRoot":"","sources":["../../../src/agents/remote-invocation.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,kBAAkB,GAGnB,MAAM,mBAAmB,CAAC;AAI3B;;;;;GAKG;AACH,MAAM,OAAO,qBAAsB,SAAQ,kBAG1C;IAEoB;IADnB,YACmB,UAAiC,EAClD,MAAmB,EACnB,UAAuB;QAEvB,KAAK,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC;QAJlD,eAAU,GAAV,UAAU,CAAuB;IAKpD,CAAC;IAED,cAAc;QACZ,OAAO,wBAAwB,IAAI,CAAC,UAAU,CAAC,WAAW,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;IACvF,CAAC;IAEkB,KAAK,CAAC,sBAAsB,CAC7C,YAAyB;QAEzB,wDAAwD;QACxD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,OAAoB;QAChC,iDAAiD;QACjD,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;IAC9D,CAAC;CACF"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ export {};