@google/gemini-cli-core 0.24.0-nightly.20260103.30f5c4af4 → 0.24.0-preview.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 (298) hide show
  1. package/dist/docs/cli/settings.md +1 -0
  2. package/dist/docs/cli/skills.md +156 -0
  3. package/dist/docs/cli/telemetry.md +3 -3
  4. package/dist/docs/cli/tutorials/skills-getting-started.md +124 -0
  5. package/dist/docs/cli/tutorials.md +4 -0
  6. package/dist/docs/get-started/configuration.md +32 -5
  7. package/dist/docs/sidebar.json +4 -0
  8. package/dist/google-gemini-cli-core-0.24.0-preview.0.tgz +0 -0
  9. package/dist/src/agents/a2a-client-manager.d.ts +5 -0
  10. package/dist/src/agents/a2a-client-manager.js +130 -0
  11. package/dist/src/agents/a2a-client-manager.js.map +1 -1
  12. package/dist/src/agents/a2a-client-manager.test.js +27 -1
  13. package/dist/src/agents/a2a-client-manager.test.js.map +1 -1
  14. package/dist/src/agents/a2aUtils.d.ts +28 -0
  15. package/dist/src/agents/a2aUtils.js +111 -0
  16. package/dist/src/agents/a2aUtils.js.map +1 -0
  17. package/dist/src/agents/a2aUtils.test.js +147 -0
  18. package/dist/src/agents/a2aUtils.test.js.map +1 -0
  19. package/dist/src/agents/delegate-to-agent-tool.d.ts +2 -2
  20. package/dist/src/agents/delegate-to-agent-tool.js +6 -6
  21. package/dist/src/agents/delegate-to-agent-tool.js.map +1 -1
  22. package/dist/src/agents/delegate-to-agent-tool.test.js +37 -7
  23. package/dist/src/agents/delegate-to-agent-tool.test.js.map +1 -1
  24. package/dist/src/agents/introspection-agent.js +2 -2
  25. package/dist/src/agents/introspection-agent.js.map +1 -1
  26. package/dist/src/agents/introspection-agent.test.js +2 -2
  27. package/dist/src/agents/introspection-agent.test.js.map +1 -1
  28. package/dist/src/agents/local-executor.js +1 -1
  29. package/dist/src/agents/local-executor.js.map +1 -1
  30. package/dist/src/agents/local-executor.test.js +2 -2
  31. package/dist/src/agents/local-executor.test.js.map +1 -1
  32. package/dist/src/agents/local-invocation.d.ts +2 -2
  33. package/dist/src/agents/local-invocation.js +3 -3
  34. package/dist/src/agents/local-invocation.js.map +1 -1
  35. package/dist/src/agents/local-invocation.test.js +7 -5
  36. package/dist/src/agents/local-invocation.test.js.map +1 -1
  37. package/dist/src/agents/remote-invocation.d.ts +17 -3
  38. package/dist/src/agents/remote-invocation.js +104 -6
  39. package/dist/src/agents/remote-invocation.js.map +1 -1
  40. package/dist/src/agents/remote-invocation.test.js +184 -18
  41. package/dist/src/agents/remote-invocation.test.js.map +1 -1
  42. package/dist/src/agents/subagent-tool-wrapper.d.ts +2 -2
  43. package/dist/src/agents/subagent-tool-wrapper.js +6 -5
  44. package/dist/src/agents/subagent-tool-wrapper.js.map +1 -1
  45. package/dist/src/agents/subagent-tool-wrapper.test.js +17 -10
  46. package/dist/src/agents/subagent-tool-wrapper.test.js.map +1 -1
  47. package/dist/src/agents/types.d.ts +6 -0
  48. package/dist/src/code_assist/oauth2.js +31 -1
  49. package/dist/src/code_assist/oauth2.js.map +1 -1
  50. package/dist/src/code_assist/oauth2.test.js +75 -3
  51. package/dist/src/code_assist/oauth2.test.js.map +1 -1
  52. package/dist/src/code_assist/server.d.ts +5 -0
  53. package/dist/src/code_assist/server.js +19 -4
  54. package/dist/src/code_assist/server.js.map +1 -1
  55. package/dist/src/code_assist/server.test.js +19 -0
  56. package/dist/src/code_assist/server.test.js.map +1 -1
  57. package/dist/src/code_assist/setup.js +6 -4
  58. package/dist/src/code_assist/setup.js.map +1 -1
  59. package/dist/src/code_assist/setup.test.js +63 -0
  60. package/dist/src/code_assist/setup.test.js.map +1 -1
  61. package/dist/src/code_assist/types.d.ts +18 -0
  62. package/dist/src/config/config.d.ts +19 -3
  63. package/dist/src/config/config.js +49 -25
  64. package/dist/src/config/config.js.map +1 -1
  65. package/dist/src/config/config.test.js +81 -4
  66. package/dist/src/config/config.test.js.map +1 -1
  67. package/dist/src/config/models.js +6 -4
  68. package/dist/src/config/models.js.map +1 -1
  69. package/dist/src/config/models.test.js +21 -1
  70. package/dist/src/config/models.test.js.map +1 -1
  71. package/dist/src/core/client.js +39 -7
  72. package/dist/src/core/client.js.map +1 -1
  73. package/dist/src/core/client.test.js +93 -0
  74. package/dist/src/core/client.test.js.map +1 -1
  75. package/dist/src/core/contentGenerator.js +1 -1
  76. package/dist/src/core/contentGenerator.js.map +1 -1
  77. package/dist/src/core/contentGenerator.test.js +1 -1
  78. package/dist/src/core/contentGenerator.test.js.map +1 -1
  79. package/dist/src/core/coreToolHookTriggers.test.js +11 -9
  80. package/dist/src/core/coreToolHookTriggers.test.js.map +1 -1
  81. package/dist/src/core/coreToolScheduler.d.ts +1 -0
  82. package/dist/src/core/coreToolScheduler.js +30 -106
  83. package/dist/src/core/coreToolScheduler.js.map +1 -1
  84. package/dist/src/core/coreToolScheduler.test.js +21 -21
  85. package/dist/src/core/coreToolScheduler.test.js.map +1 -1
  86. package/dist/src/core/loggingContentGenerator.js +14 -2
  87. package/dist/src/core/loggingContentGenerator.js.map +1 -1
  88. package/dist/src/core/prompts.js +1 -1
  89. package/dist/src/core/prompts.js.map +1 -1
  90. package/dist/src/core/sessionHookTriggers.d.ts +3 -2
  91. package/dist/src/core/sessionHookTriggers.js +8 -1
  92. package/dist/src/core/sessionHookTriggers.js.map +1 -1
  93. package/dist/src/core/turn.d.ts +16 -2
  94. package/dist/src/core/turn.js +2 -0
  95. package/dist/src/core/turn.js.map +1 -1
  96. package/dist/src/generated/git-commit.d.ts +2 -2
  97. package/dist/src/generated/git-commit.js +2 -2
  98. package/dist/src/generated/git-commit.js.map +1 -1
  99. package/dist/src/hooks/hookEventHandler.d.ts +6 -2
  100. package/dist/src/hooks/hookEventHandler.js +24 -3
  101. package/dist/src/hooks/hookEventHandler.js.map +1 -1
  102. package/dist/src/hooks/hookEventHandler.test.js +31 -8
  103. package/dist/src/hooks/hookEventHandler.test.js.map +1 -1
  104. package/dist/src/hooks/hookRunner.d.ts +2 -2
  105. package/dist/src/hooks/hookRunner.js +12 -4
  106. package/dist/src/hooks/hookRunner.js.map +1 -1
  107. package/dist/src/hooks/hookRunner.test.js +33 -0
  108. package/dist/src/hooks/hookRunner.test.js.map +1 -1
  109. package/dist/src/index.d.ts +3 -1
  110. package/dist/src/index.js +3 -2
  111. package/dist/src/index.js.map +1 -1
  112. package/dist/src/policy/config.js +60 -22
  113. package/dist/src/policy/config.js.map +1 -1
  114. package/dist/src/policy/config.test.js +21 -0
  115. package/dist/src/policy/config.test.js.map +1 -1
  116. package/dist/src/policy/persistence.test.js +1 -1
  117. package/dist/src/policy/persistence.test.js.map +1 -1
  118. package/dist/src/policy/policy-engine.js +22 -6
  119. package/dist/src/policy/policy-engine.js.map +1 -1
  120. package/dist/src/policy/policy-engine.test.js +206 -1
  121. package/dist/src/policy/policy-engine.test.js.map +1 -1
  122. package/dist/src/policy/toml-loader.d.ts +0 -8
  123. package/dist/src/policy/toml-loader.js +7 -70
  124. package/dist/src/policy/toml-loader.js.map +1 -1
  125. package/dist/src/policy/toml-loader.test.js +16 -6
  126. package/dist/src/policy/toml-loader.test.js.map +1 -1
  127. package/dist/src/policy/utils.d.ts +21 -0
  128. package/dist/src/policy/utils.js +42 -0
  129. package/dist/src/policy/utils.js.map +1 -0
  130. package/dist/src/policy/utils.test.js +64 -0
  131. package/dist/src/policy/utils.test.js.map +1 -0
  132. package/dist/src/scheduler/tool-executor.d.ts +22 -0
  133. package/dist/src/scheduler/tool-executor.js +198 -0
  134. package/dist/src/scheduler/tool-executor.js.map +1 -0
  135. package/dist/src/scheduler/tool-executor.test.d.ts +6 -0
  136. package/dist/src/scheduler/tool-executor.test.js +231 -0
  137. package/dist/src/scheduler/tool-executor.test.js.map +1 -0
  138. package/dist/src/skills/skillLoader.d.ts +28 -0
  139. package/dist/src/skills/skillLoader.js +77 -0
  140. package/dist/src/skills/skillLoader.js.map +1 -0
  141. package/dist/src/skills/skillLoader.test.d.ts +6 -0
  142. package/dist/src/skills/skillLoader.test.js +73 -0
  143. package/dist/src/skills/skillLoader.test.js.map +1 -0
  144. package/dist/src/{services → skills}/skillManager.d.ts +10 -20
  145. package/dist/src/skills/skillManager.js +89 -0
  146. package/dist/src/skills/skillManager.js.map +1 -0
  147. package/dist/src/skills/skillManager.test.d.ts +6 -0
  148. package/dist/src/skills/skillManager.test.js +128 -0
  149. package/dist/src/skills/skillManager.test.js.map +1 -0
  150. package/dist/src/telemetry/clearcut-logger/clearcut-logger.d.ts +5 -5
  151. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js +8 -8
  152. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js.map +1 -1
  153. package/dist/src/telemetry/clearcut-logger/event-metadata-key.d.ts +2 -2
  154. package/dist/src/telemetry/clearcut-logger/event-metadata-key.js +4 -4
  155. package/dist/src/telemetry/clearcut-logger/event-metadata-key.js.map +1 -1
  156. package/dist/src/telemetry/loggers.d.ts +3 -3
  157. package/dist/src/telemetry/loggers.js +4 -4
  158. package/dist/src/telemetry/loggers.js.map +1 -1
  159. package/dist/src/telemetry/loggers.test.js +6 -5
  160. package/dist/src/telemetry/loggers.test.js.map +1 -1
  161. package/dist/src/telemetry/types.d.ts +7 -7
  162. package/dist/src/telemetry/types.js +10 -10
  163. package/dist/src/telemetry/types.js.map +1 -1
  164. package/dist/src/test-utils/mock-message-bus.d.ts +1 -0
  165. package/dist/src/test-utils/mock-message-bus.js +29 -0
  166. package/dist/src/test-utils/mock-message-bus.js.map +1 -1
  167. package/dist/src/test-utils/mock-tool.d.ts +5 -3
  168. package/dist/src/test-utils/mock-tool.js +11 -10
  169. package/dist/src/test-utils/mock-tool.js.map +1 -1
  170. package/dist/src/tools/activate-skill.d.ts +2 -2
  171. package/dist/src/tools/activate-skill.js +6 -1
  172. package/dist/src/tools/activate-skill.js.map +1 -1
  173. package/dist/src/tools/activate-skill.test.js +7 -5
  174. package/dist/src/tools/activate-skill.test.js.map +1 -1
  175. package/dist/src/tools/confirmation-policy.test.js +2 -12
  176. package/dist/src/tools/confirmation-policy.test.js.map +1 -1
  177. package/dist/src/tools/edit.d.ts +27 -5
  178. package/dist/src/tools/edit.js +444 -137
  179. package/dist/src/tools/edit.js.map +1 -1
  180. package/dist/src/tools/edit.test.js +257 -525
  181. package/dist/src/tools/edit.test.js.map +1 -1
  182. package/dist/src/tools/get-internal-docs.d.ts +2 -2
  183. package/dist/src/tools/get-internal-docs.js +6 -6
  184. package/dist/src/tools/get-internal-docs.js.map +1 -1
  185. package/dist/src/tools/get-internal-docs.test.js +2 -1
  186. package/dist/src/tools/get-internal-docs.test.js.map +1 -1
  187. package/dist/src/tools/glob.d.ts +2 -2
  188. package/dist/src/tools/glob.js +1 -1
  189. package/dist/src/tools/glob.js.map +1 -1
  190. package/dist/src/tools/glob.test.js +2 -1
  191. package/dist/src/tools/glob.test.js.map +1 -1
  192. package/dist/src/tools/grep.d.ts +2 -2
  193. package/dist/src/tools/grep.js +1 -1
  194. package/dist/src/tools/grep.js.map +1 -1
  195. package/dist/src/tools/grep.test.js +5 -4
  196. package/dist/src/tools/grep.test.js.map +1 -1
  197. package/dist/src/tools/ls.d.ts +2 -2
  198. package/dist/src/tools/ls.js +2 -2
  199. package/dist/src/tools/ls.js.map +1 -1
  200. package/dist/src/tools/ls.test.js +2 -1
  201. package/dist/src/tools/ls.test.js.map +1 -1
  202. package/dist/src/tools/mcp-client.d.ts +2 -2
  203. package/dist/src/tools/mcp-client.js +2 -1
  204. package/dist/src/tools/mcp-client.js.map +1 -1
  205. package/dist/src/tools/mcp-tool.d.ts +2 -2
  206. package/dist/src/tools/mcp-tool.js +7 -7
  207. package/dist/src/tools/mcp-tool.js.map +1 -1
  208. package/dist/src/tools/mcp-tool.test.js +11 -6
  209. package/dist/src/tools/mcp-tool.test.js.map +1 -1
  210. package/dist/src/tools/memoryTool.d.ts +3 -3
  211. package/dist/src/tools/memoryTool.js +2 -2
  212. package/dist/src/tools/memoryTool.js.map +1 -1
  213. package/dist/src/tools/memoryTool.test.js +5 -2
  214. package/dist/src/tools/memoryTool.test.js.map +1 -1
  215. package/dist/src/tools/message-bus-integration.test.js +10 -37
  216. package/dist/src/tools/message-bus-integration.test.js.map +1 -1
  217. package/dist/src/tools/read-file.d.ts +2 -2
  218. package/dist/src/tools/read-file.js +1 -1
  219. package/dist/src/tools/read-file.js.map +1 -1
  220. package/dist/src/tools/read-file.test.js +3 -2
  221. package/dist/src/tools/read-file.test.js.map +1 -1
  222. package/dist/src/tools/read-many-files.d.ts +2 -2
  223. package/dist/src/tools/read-many-files.js +2 -3
  224. package/dist/src/tools/read-many-files.js.map +1 -1
  225. package/dist/src/tools/read-many-files.test.js +3 -2
  226. package/dist/src/tools/read-many-files.test.js.map +1 -1
  227. package/dist/src/tools/ripGrep.d.ts +2 -2
  228. package/dist/src/tools/ripGrep.js +3 -4
  229. package/dist/src/tools/ripGrep.js.map +1 -1
  230. package/dist/src/tools/ripGrep.test.js +7 -6
  231. package/dist/src/tools/ripGrep.test.js.map +1 -1
  232. package/dist/src/tools/shell.d.ts +3 -4
  233. package/dist/src/tools/shell.js +9 -35
  234. package/dist/src/tools/shell.js.map +1 -1
  235. package/dist/src/tools/shell.test.js +40 -57
  236. package/dist/src/tools/shell.test.js.map +1 -1
  237. package/dist/src/tools/tool-registry.d.ts +11 -6
  238. package/dist/src/tools/tool-registry.js +13 -8
  239. package/dist/src/tools/tool-registry.js.map +1 -1
  240. package/dist/src/tools/tool-registry.test.js +14 -10
  241. package/dist/src/tools/tool-registry.test.js.map +1 -1
  242. package/dist/src/tools/tools.d.ts +5 -5
  243. package/dist/src/tools/tools.js +15 -17
  244. package/dist/src/tools/tools.js.map +1 -1
  245. package/dist/src/tools/tools.test.js +3 -1
  246. package/dist/src/tools/tools.test.js.map +1 -1
  247. package/dist/src/tools/web-fetch.d.ts +2 -2
  248. package/dist/src/tools/web-fetch.js +4 -4
  249. package/dist/src/tools/web-fetch.js.map +1 -1
  250. package/dist/src/tools/web-fetch.test.js +17 -19
  251. package/dist/src/tools/web-fetch.test.js.map +1 -1
  252. package/dist/src/tools/web-search.d.ts +2 -2
  253. package/dist/src/tools/web-search.js +3 -4
  254. package/dist/src/tools/web-search.js.map +1 -1
  255. package/dist/src/tools/web-search.test.js +2 -1
  256. package/dist/src/tools/web-search.test.js.map +1 -1
  257. package/dist/src/tools/write-file.d.ts +2 -2
  258. package/dist/src/tools/write-file.js +3 -3
  259. package/dist/src/tools/write-file.js.map +1 -1
  260. package/dist/src/tools/write-file.test.js +4 -1
  261. package/dist/src/tools/write-file.test.js.map +1 -1
  262. package/dist/src/tools/write-todos.d.ts +2 -2
  263. package/dist/src/tools/write-todos.js +5 -4
  264. package/dist/src/tools/write-todos.js.map +1 -1
  265. package/dist/src/tools/write-todos.test.js +2 -1
  266. package/dist/src/tools/write-todos.test.js.map +1 -1
  267. package/dist/src/utils/editCorrector.test.js +1 -1
  268. package/dist/src/utils/editCorrector.test.js.map +1 -1
  269. package/dist/src/utils/events.d.ts +46 -1
  270. package/dist/src/utils/events.js +21 -0
  271. package/dist/src/utils/events.js.map +1 -1
  272. package/dist/src/utils/events.test.js +25 -0
  273. package/dist/src/utils/events.test.js.map +1 -1
  274. package/dist/src/utils/shell-permissions.test.js +27 -0
  275. package/dist/src/utils/shell-permissions.test.js.map +1 -1
  276. package/dist/src/utils/terminal.d.ts +2 -0
  277. package/dist/src/utils/terminal.js +6 -0
  278. package/dist/src/utils/terminal.js.map +1 -1
  279. package/dist/src/utils/tokenCalculation.js +20 -5
  280. package/dist/src/utils/tokenCalculation.js.map +1 -1
  281. package/dist/src/utils/tokenCalculation.test.js +11 -2
  282. package/dist/src/utils/tokenCalculation.test.js.map +1 -1
  283. package/dist/src/utils/tool-utils.test.js +2 -1
  284. package/dist/src/utils/tool-utils.test.js.map +1 -1
  285. package/dist/tsconfig.tsbuildinfo +1 -1
  286. package/package.json +1 -1
  287. package/dist/google-gemini-cli-core-0.24.0-nightly.20251227.37be16243.tgz +0 -0
  288. package/dist/src/services/skillManager.js +0 -157
  289. package/dist/src/services/skillManager.js.map +0 -1
  290. package/dist/src/services/skillManager.test.js +0 -169
  291. package/dist/src/services/skillManager.test.js.map +0 -1
  292. package/dist/src/tools/smart-edit.d.ts +0 -78
  293. package/dist/src/tools/smart-edit.js +0 -722
  294. package/dist/src/tools/smart-edit.js.map +0 -1
  295. package/dist/src/tools/smart-edit.test.js +0 -591
  296. package/dist/src/tools/smart-edit.test.js.map +0 -1
  297. /package/dist/src/{services/skillManager.test.d.ts → agents/a2aUtils.test.d.ts} +0 -0
  298. /package/dist/src/{tools/smart-edit.test.d.ts → policy/utils.test.d.ts} +0 -0
@@ -4,6 +4,37 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
  import { BaseToolInvocation, } from '../tools/tools.js';
7
+ import { A2AClientManager } from './a2a-client-manager.js';
8
+ import { extractMessageText, extractTaskText, extractIdsFromResponse, } from './a2aUtils.js';
9
+ import { GoogleAuth } from 'google-auth-library';
10
+ import { debugLogger } from '../utils/debugLogger.js';
11
+ /**
12
+ * Authentication handler implementation using Google Application Default Credentials (ADC).
13
+ */
14
+ export class ADCHandler {
15
+ auth = new GoogleAuth({
16
+ scopes: ['https://www.googleapis.com/auth/cloud-platform'],
17
+ });
18
+ async headers() {
19
+ try {
20
+ const client = await this.auth.getClient();
21
+ const token = await client.getAccessToken();
22
+ if (token.token) {
23
+ return { Authorization: `Bearer ${token.token}` };
24
+ }
25
+ throw new Error('Failed to retrieve ADC access token.');
26
+ }
27
+ catch (e) {
28
+ const errorMessage = `Failed to get ADC token: ${e instanceof Error ? e.message : String(e)}`;
29
+ debugLogger.log('ERROR', errorMessage);
30
+ throw new Error(errorMessage);
31
+ }
32
+ }
33
+ async shouldRetryWithHeaders(_response) {
34
+ // For ADC, we usually just re-fetch the token if needed.
35
+ return this.headers();
36
+ }
37
+ }
7
38
  /**
8
39
  * A tool invocation that proxies to a remote A2A agent.
9
40
  *
@@ -12,20 +43,87 @@ import { BaseToolInvocation, } from '../tools/tools.js';
12
43
  */
13
44
  export class RemoteAgentInvocation extends BaseToolInvocation {
14
45
  definition;
15
- constructor(definition, params, messageBus) {
16
- super(params, messageBus, definition.name, definition.displayName);
46
+ // Persist state across ephemeral invocation instances.
47
+ static sessionState = new Map();
48
+ // State for the ongoing conversation with the remote agent
49
+ contextId;
50
+ taskId;
51
+ // TODO: See if we can reuse the singleton from AppContainer or similar, but for now use getInstance directly
52
+ // as per the current pattern in the codebase.
53
+ clientManager = A2AClientManager.getInstance();
54
+ authHandler = new ADCHandler();
55
+ constructor(definition, params, messageBus, _toolName, _toolDisplayName) {
56
+ const query = params['query'];
57
+ if (typeof query !== 'string') {
58
+ throw new Error(`Remote agent '${definition.name}' requires a string 'query' input.`);
59
+ }
60
+ // Safe to pass strict object to super
61
+ super({ query }, messageBus, _toolName ?? definition.name, _toolDisplayName ?? definition.displayName);
17
62
  this.definition = definition;
18
63
  }
19
64
  getDescription() {
20
65
  return `Calling remote agent ${this.definition.displayName ?? this.definition.name}`;
21
66
  }
22
67
  async getConfirmationDetails(_abortSignal) {
23
- // TODO: Implement confirmation logic for remote agents.
24
- return false;
68
+ // For now, always require confirmation for remote agents until we have a policy system for them.
69
+ return {
70
+ type: 'info',
71
+ title: `Call Remote Agent: ${this.definition.displayName ?? this.definition.name}`,
72
+ prompt: `This will send a message to the external agent at ${this.definition.agentCardUrl}.`,
73
+ onConfirm: async () => { }, // No-op for now, just informational
74
+ };
25
75
  }
26
76
  async execute(_signal) {
27
- // TODO: Implement remote agent invocation logic.
28
- throw new Error(`Remote agent invocation not implemented.`);
77
+ // 1. Ensure the agent is loaded (cached by manager)
78
+ // We assume the user has provided an access token via some mechanism (TODO),
79
+ // or we rely on ADC.
80
+ try {
81
+ const priorState = RemoteAgentInvocation.sessionState.get(this.definition.name);
82
+ if (priorState) {
83
+ this.contextId = priorState.contextId;
84
+ this.taskId = priorState.taskId;
85
+ }
86
+ if (!this.clientManager.getClient(this.definition.name)) {
87
+ await this.clientManager.loadAgent(this.definition.name, this.definition.agentCardUrl, this.authHandler);
88
+ }
89
+ const message = this.params.query;
90
+ const response = await this.clientManager.sendMessage(this.definition.name, message, {
91
+ contextId: this.contextId,
92
+ taskId: this.taskId,
93
+ });
94
+ // Extracts IDs, taskID will be undefined if the task is completed/failed/canceled.
95
+ const { contextId, taskId } = extractIdsFromResponse(response);
96
+ this.contextId = contextId ?? this.contextId;
97
+ this.taskId = taskId;
98
+ RemoteAgentInvocation.sessionState.set(this.definition.name, {
99
+ contextId: this.contextId,
100
+ taskId: this.taskId,
101
+ });
102
+ // Extract the output text
103
+ const resultData = response;
104
+ let outputText = '';
105
+ if (resultData.kind === 'message') {
106
+ outputText = extractMessageText(resultData);
107
+ }
108
+ else if (resultData.kind === 'task') {
109
+ outputText = extractTaskText(resultData);
110
+ }
111
+ else {
112
+ outputText = JSON.stringify(resultData);
113
+ }
114
+ return {
115
+ llmContent: [{ text: outputText }],
116
+ returnDisplay: outputText,
117
+ };
118
+ }
119
+ catch (error) {
120
+ const errorMessage = `Error calling remote agent: ${error instanceof Error ? error.message : String(error)}`;
121
+ return {
122
+ llmContent: [{ text: errorMessage }],
123
+ returnDisplay: errorMessage,
124
+ error: { message: errorMessage },
125
+ };
126
+ }
29
127
  }
30
128
  }
31
129
  //# sourceMappingURL=remote-invocation.js.map
@@ -1 +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"}
1
+ {"version":3,"file":"remote-invocation.js","sourceRoot":"","sources":["../../../src/agents/remote-invocation.ts"],"names":[],"mappings":"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"}
@@ -3,33 +3,199 @@
3
3
  * Copyright 2025 Google LLC
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- import { describe, it, expect } from 'vitest';
6
+ import { describe, it, expect, vi, beforeEach, afterEach, } from 'vitest';
7
7
  import { RemoteAgentInvocation } from './remote-invocation.js';
8
- class TestableRemoteAgentInvocation extends RemoteAgentInvocation {
9
- async getConfirmationDetails(abortSignal) {
10
- return super.getConfirmationDetails(abortSignal);
11
- }
12
- }
8
+ import { A2AClientManager } from './a2a-client-manager.js';
9
+ import { createMockMessageBus } from '../test-utils/mock-message-bus.js';
10
+ // Mock A2AClientManager
11
+ vi.mock('./a2a-client-manager.js', () => {
12
+ const A2AClientManager = {
13
+ getInstance: vi.fn(),
14
+ };
15
+ return { A2AClientManager };
16
+ });
13
17
  describe('RemoteAgentInvocation', () => {
14
18
  const mockDefinition = {
19
+ name: 'test-agent',
15
20
  kind: 'remote',
16
- name: 'test-remote-agent',
17
- description: 'A test remote agent',
18
- displayName: 'Test Remote Agent',
19
- agentCardUrl: 'https://example.com/agent-card',
21
+ agentCardUrl: 'http://test-agent/card',
22
+ displayName: 'Test Agent',
23
+ description: 'A test agent',
20
24
  inputConfig: {
21
25
  inputs: {},
22
26
  },
23
27
  };
24
- it('should be instantiated with correct params', () => {
25
- const invocation = new RemoteAgentInvocation(mockDefinition, {});
26
- expect(invocation).toBeDefined();
27
- expect(invocation.getDescription()).toBe('Calling remote agent Test Remote Agent');
28
+ const mockClientManager = {
29
+ getClient: vi.fn(),
30
+ loadAgent: vi.fn(),
31
+ sendMessage: vi.fn(),
32
+ };
33
+ const mockMessageBus = createMockMessageBus();
34
+ beforeEach(() => {
35
+ vi.clearAllMocks();
36
+ A2AClientManager.getInstance.mockReturnValue(mockClientManager);
37
+ RemoteAgentInvocation.sessionState?.clear();
38
+ });
39
+ afterEach(() => {
40
+ vi.restoreAllMocks();
41
+ });
42
+ describe('Constructor Validation', () => {
43
+ it('accepts valid input with string query', () => {
44
+ expect(() => {
45
+ new RemoteAgentInvocation(mockDefinition, { query: 'valid' }, mockMessageBus);
46
+ }).not.toThrow();
47
+ });
48
+ it('throws if query is missing', () => {
49
+ expect(() => {
50
+ new RemoteAgentInvocation(mockDefinition, {}, mockMessageBus);
51
+ }).toThrow("requires a string 'query' input");
52
+ });
53
+ it('throws if query is not a string', () => {
54
+ expect(() => {
55
+ new RemoteAgentInvocation(mockDefinition, { query: 123 }, mockMessageBus);
56
+ }).toThrow("requires a string 'query' input");
57
+ });
58
+ });
59
+ describe('Execution Logic', () => {
60
+ it('should lazy load the agent with ADCHandler if not present', async () => {
61
+ mockClientManager.getClient.mockReturnValue(undefined);
62
+ mockClientManager.sendMessage.mockResolvedValue({
63
+ kind: 'message',
64
+ messageId: 'msg-1',
65
+ role: 'agent',
66
+ parts: [{ kind: 'text', text: 'Hello' }],
67
+ });
68
+ const invocation = new RemoteAgentInvocation(mockDefinition, {
69
+ query: 'hi',
70
+ }, mockMessageBus);
71
+ await invocation.execute(new AbortController().signal);
72
+ expect(mockClientManager.loadAgent).toHaveBeenCalledWith('test-agent', 'http://test-agent/card', expect.objectContaining({
73
+ headers: expect.any(Function),
74
+ shouldRetryWithHeaders: expect.any(Function),
75
+ }));
76
+ });
77
+ it('should not load the agent if already present', async () => {
78
+ mockClientManager.getClient.mockReturnValue({});
79
+ mockClientManager.sendMessage.mockResolvedValue({
80
+ kind: 'message',
81
+ messageId: 'msg-1',
82
+ role: 'agent',
83
+ parts: [{ kind: 'text', text: 'Hello' }],
84
+ });
85
+ const invocation = new RemoteAgentInvocation(mockDefinition, {
86
+ query: 'hi',
87
+ }, mockMessageBus);
88
+ await invocation.execute(new AbortController().signal);
89
+ expect(mockClientManager.loadAgent).not.toHaveBeenCalled();
90
+ });
91
+ it('should persist contextId and taskId across invocations', async () => {
92
+ mockClientManager.getClient.mockReturnValue({});
93
+ // First call return values
94
+ mockClientManager.sendMessage.mockResolvedValueOnce({
95
+ kind: 'message',
96
+ messageId: 'msg-1',
97
+ role: 'agent',
98
+ parts: [{ kind: 'text', text: 'Response 1' }],
99
+ contextId: 'ctx-1',
100
+ taskId: 'task-1',
101
+ });
102
+ const invocation1 = new RemoteAgentInvocation(mockDefinition, {
103
+ query: 'first',
104
+ }, mockMessageBus);
105
+ // Execute first time
106
+ const result1 = await invocation1.execute(new AbortController().signal);
107
+ expect(result1.returnDisplay).toBe('Response 1');
108
+ expect(mockClientManager.sendMessage).toHaveBeenLastCalledWith('test-agent', 'first', { contextId: undefined, taskId: undefined });
109
+ // Prepare for second call with simulated state persistence
110
+ mockClientManager.sendMessage.mockResolvedValueOnce({
111
+ kind: 'message',
112
+ messageId: 'msg-2',
113
+ role: 'agent',
114
+ parts: [{ kind: 'text', text: 'Response 2' }],
115
+ contextId: 'ctx-1',
116
+ taskId: 'task-2',
117
+ });
118
+ const invocation2 = new RemoteAgentInvocation(mockDefinition, {
119
+ query: 'second',
120
+ }, mockMessageBus);
121
+ const result2 = await invocation2.execute(new AbortController().signal);
122
+ expect(result2.returnDisplay).toBe('Response 2');
123
+ expect(mockClientManager.sendMessage).toHaveBeenLastCalledWith('test-agent', 'second', { contextId: 'ctx-1', taskId: 'task-1' });
124
+ // Third call: Task completes
125
+ mockClientManager.sendMessage.mockResolvedValueOnce({
126
+ kind: 'task',
127
+ id: 'task-2',
128
+ contextId: 'ctx-1',
129
+ status: { state: 'completed', message: undefined },
130
+ artifacts: [],
131
+ history: [],
132
+ });
133
+ const invocation3 = new RemoteAgentInvocation(mockDefinition, {
134
+ query: 'third',
135
+ }, mockMessageBus);
136
+ await invocation3.execute(new AbortController().signal);
137
+ // Fourth call: Should start new task (taskId undefined)
138
+ mockClientManager.sendMessage.mockResolvedValueOnce({
139
+ kind: 'message',
140
+ messageId: 'msg-3',
141
+ role: 'agent',
142
+ parts: [{ kind: 'text', text: 'New Task' }],
143
+ });
144
+ const invocation4 = new RemoteAgentInvocation(mockDefinition, {
145
+ query: 'fourth',
146
+ }, mockMessageBus);
147
+ await invocation4.execute(new AbortController().signal);
148
+ expect(mockClientManager.sendMessage).toHaveBeenLastCalledWith('test-agent', 'fourth', { contextId: 'ctx-1', taskId: undefined });
149
+ });
150
+ it('should handle errors gracefully', async () => {
151
+ mockClientManager.getClient.mockReturnValue({});
152
+ mockClientManager.sendMessage.mockRejectedValue(new Error('Network error'));
153
+ const invocation = new RemoteAgentInvocation(mockDefinition, {
154
+ query: 'hi',
155
+ }, mockMessageBus);
156
+ const result = await invocation.execute(new AbortController().signal);
157
+ expect(result.error).toBeDefined();
158
+ expect(result.error?.message).toContain('Network error');
159
+ expect(result.returnDisplay).toContain('Network error');
160
+ });
161
+ it('should use a2a helpers for extracting text', async () => {
162
+ mockClientManager.getClient.mockReturnValue({});
163
+ // Mock a complex message part that needs extraction
164
+ mockClientManager.sendMessage.mockResolvedValue({
165
+ kind: 'message',
166
+ messageId: 'msg-1',
167
+ role: 'agent',
168
+ parts: [
169
+ { kind: 'text', text: 'Extracted text' },
170
+ { kind: 'data', data: { foo: 'bar' } },
171
+ ],
172
+ });
173
+ const invocation = new RemoteAgentInvocation(mockDefinition, {
174
+ query: 'hi',
175
+ }, mockMessageBus);
176
+ const result = await invocation.execute(new AbortController().signal);
177
+ // Just check that text is present, exact formatting depends on helper
178
+ expect(result.returnDisplay).toContain('Extracted text');
179
+ });
28
180
  });
29
- it('should return false for confirmation details (not yet implemented)', async () => {
30
- const invocation = new TestableRemoteAgentInvocation(mockDefinition, {});
31
- const details = await invocation.getConfirmationDetails(new AbortController().signal);
32
- expect(details).toBe(false);
181
+ describe('Confirmations', () => {
182
+ it('should return info confirmation details', async () => {
183
+ const invocation = new RemoteAgentInvocation(mockDefinition, {
184
+ query: 'hi',
185
+ }, mockMessageBus);
186
+ // @ts-expect-error - getConfirmationDetails is protected
187
+ const confirmation = await invocation.getConfirmationDetails(new AbortController().signal);
188
+ expect(confirmation).not.toBe(false);
189
+ if (confirmation &&
190
+ typeof confirmation === 'object' &&
191
+ confirmation.type === 'info') {
192
+ expect(confirmation.title).toContain('Test Agent');
193
+ expect(confirmation.prompt).toContain('http://test-agent/card');
194
+ }
195
+ else {
196
+ throw new Error('Expected confirmation to be of type info');
197
+ }
198
+ });
33
199
  });
34
200
  });
35
201
  //# sourceMappingURL=remote-invocation.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"remote-invocation.test.js","sourceRoot":"","sources":["../../../src/agents/remote-invocation.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAE9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAG/D,MAAM,6BAA8B,SAAQ,qBAAqB;IACtD,KAAK,CAAC,sBAAsB,CACnC,WAAwB;QAExB,OAAO,KAAK,CAAC,sBAAsB,CAAC,WAAW,CAAC,CAAC;IACnD,CAAC;CACF;AAED,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,MAAM,cAAc,GAA0B;QAC5C,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,mBAAmB;QACzB,WAAW,EAAE,qBAAqB;QAClC,WAAW,EAAE,mBAAmB;QAChC,YAAY,EAAE,gCAAgC;QAC9C,WAAW,EAAE;YACX,MAAM,EAAE,EAAE;SACX;KACF,CAAC;IAEF,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;QACpD,MAAM,UAAU,GAAG,IAAI,qBAAqB,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;QACjE,MAAM,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE,CAAC;QACjC,MAAM,CAAC,UAAU,CAAC,cAAc,EAAE,CAAC,CAAC,IAAI,CACtC,wCAAwC,CACzC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oEAAoE,EAAE,KAAK,IAAI,EAAE;QAClF,MAAM,UAAU,GAAG,IAAI,6BAA6B,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;QACzE,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,sBAAsB,CACrD,IAAI,eAAe,EAAE,CAAC,MAAM,CAC7B,CAAC;QACF,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"remote-invocation.test.js","sourceRoot":"","sources":["../../../src/agents/remote-invocation.test.ts"],"names":[],"mappings":"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"}
@@ -24,7 +24,7 @@ export declare class SubagentToolWrapper extends BaseDeclarativeTool<AgentInputs
24
24
  * @param config The runtime configuration, passed down to the subagent.
25
25
  * @param messageBus Optional message bus for policy enforcement.
26
26
  */
27
- constructor(definition: AgentDefinition, config: Config, messageBus?: MessageBus);
27
+ constructor(definition: AgentDefinition, config: Config, messageBus: MessageBus);
28
28
  /**
29
29
  * Creates an invocation instance for executing the subagent.
30
30
  *
@@ -34,5 +34,5 @@ export declare class SubagentToolWrapper extends BaseDeclarativeTool<AgentInputs
34
34
  * @param params The validated input parameters from the parent agent's call.
35
35
  * @returns A `ToolInvocation` instance ready for execution.
36
36
  */
37
- protected createInvocation(params: AgentInputs): ToolInvocation<AgentInputs, ToolResult>;
37
+ protected createInvocation(params: AgentInputs, messageBus: MessageBus, _toolName?: string, _toolDisplayName?: string): ToolInvocation<AgentInputs, ToolResult>;
38
38
  }
@@ -26,9 +26,9 @@ export class SubagentToolWrapper extends BaseDeclarativeTool {
26
26
  */
27
27
  constructor(definition, config, messageBus) {
28
28
  const parameterSchema = convertInputConfigToJsonSchema(definition.inputConfig);
29
- super(definition.name, definition.displayName ?? definition.name, definition.description, Kind.Think, parameterSchema,
29
+ super(definition.name, definition.displayName ?? definition.name, definition.description, Kind.Think, parameterSchema, messageBus,
30
30
  /* isOutputMarkdown */ true,
31
- /* canUpdateOutput */ true, messageBus);
31
+ /* canUpdateOutput */ true);
32
32
  this.definition = definition;
33
33
  this.config = config;
34
34
  }
@@ -41,12 +41,13 @@ export class SubagentToolWrapper extends BaseDeclarativeTool {
41
41
  * @param params The validated input parameters from the parent agent's call.
42
42
  * @returns A `ToolInvocation` instance ready for execution.
43
43
  */
44
- createInvocation(params) {
44
+ createInvocation(params, messageBus, _toolName, _toolDisplayName) {
45
45
  const definition = this.definition;
46
+ const effectiveMessageBus = messageBus;
46
47
  if (definition.kind === 'remote') {
47
- return new RemoteAgentInvocation(definition, params, this.messageBus);
48
+ return new RemoteAgentInvocation(definition, params, effectiveMessageBus, _toolName, _toolDisplayName);
48
49
  }
49
- return new LocalSubagentInvocation(definition, this.config, params, this.messageBus);
50
+ return new LocalSubagentInvocation(definition, this.config, params, effectiveMessageBus, _toolName, _toolDisplayName);
50
51
  }
51
52
  }
52
53
  //# sourceMappingURL=subagent-tool-wrapper.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"subagent-tool-wrapper.js","sourceRoot":"","sources":["../../../src/agents/subagent-tool-wrapper.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,mBAAmB,EACnB,IAAI,GAGL,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAE,8BAA8B,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAG/D;;;GAGG;AACH,MAAM,OAAO,mBAAoB,SAAQ,mBAGxC;IAYoB;IACA;IAZnB;;;;;;;;;OASG;IACH,YACmB,UAA2B,EAC3B,MAAc,EAC/B,UAAuB;QAEvB,MAAM,eAAe,GAAG,8BAA8B,CACpD,UAAU,CAAC,WAAW,CACvB,CAAC;QAEF,KAAK,CACH,UAAU,CAAC,IAAI,EACf,UAAU,CAAC,WAAW,IAAI,UAAU,CAAC,IAAI,EACzC,UAAU,CAAC,WAAW,EACtB,IAAI,CAAC,KAAK,EACV,eAAe;QACf,sBAAsB,CAAC,IAAI;QAC3B,qBAAqB,CAAC,IAAI,EAC1B,UAAU,CACX,CAAC;QAjBe,eAAU,GAAV,UAAU,CAAiB;QAC3B,WAAM,GAAN,MAAM,CAAQ;IAiBjC,CAAC;IAED;;;;;;;;OAQG;IACO,gBAAgB,CACxB,MAAmB;QAEnB,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QACnC,IAAI,UAAU,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACjC,OAAO,IAAI,qBAAqB,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QACxE,CAAC;QAED,OAAO,IAAI,uBAAuB,CAChC,UAAU,EACV,IAAI,CAAC,MAAM,EACX,MAAM,EACN,IAAI,CAAC,UAAU,CAChB,CAAC;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"subagent-tool-wrapper.js","sourceRoot":"","sources":["../../../src/agents/subagent-tool-wrapper.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,mBAAmB,EACnB,IAAI,GAGL,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAE,8BAA8B,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAG/D;;;GAGG;AACH,MAAM,OAAO,mBAAoB,SAAQ,mBAGxC;IAYoB;IACA;IAZnB;;;;;;;;;OASG;IACH,YACmB,UAA2B,EAC3B,MAAc,EAC/B,UAAsB;QAEtB,MAAM,eAAe,GAAG,8BAA8B,CACpD,UAAU,CAAC,WAAW,CACvB,CAAC;QAEF,KAAK,CACH,UAAU,CAAC,IAAI,EACf,UAAU,CAAC,WAAW,IAAI,UAAU,CAAC,IAAI,EACzC,UAAU,CAAC,WAAW,EACtB,IAAI,CAAC,KAAK,EACV,eAAe,EACf,UAAU;QACV,sBAAsB,CAAC,IAAI;QAC3B,qBAAqB,CAAC,IAAI,CAC3B,CAAC;QAjBe,eAAU,GAAV,UAAU,CAAiB;QAC3B,WAAM,GAAN,MAAM,CAAQ;IAiBjC,CAAC;IAED;;;;;;;;OAQG;IACO,gBAAgB,CACxB,MAAmB,EACnB,UAAsB,EACtB,SAAkB,EAClB,gBAAyB;QAEzB,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QACnC,MAAM,mBAAmB,GAAG,UAAU,CAAC;QAEvC,IAAI,UAAU,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACjC,OAAO,IAAI,qBAAqB,CAC9B,UAAU,EACV,MAAM,EACN,mBAAmB,EACnB,SAAS,EACT,gBAAgB,CACjB,CAAC;QACJ,CAAC;QAED,OAAO,IAAI,uBAAuB,CAChC,UAAU,EACV,IAAI,CAAC,MAAM,EACX,MAAM,EACN,mBAAmB,EACnB,SAAS,EACT,gBAAgB,CACjB,CAAC;IACJ,CAAC;CACF"}
@@ -9,6 +9,7 @@ import { LocalSubagentInvocation } from './local-invocation.js';
9
9
  import { convertInputConfigToJsonSchema } from './schema-utils.js';
10
10
  import { makeFakeConfig } from '../test-utils/config.js';
11
11
  import { Kind } from '../tools/tools.js';
12
+ import { createMockMessageBus } from '../test-utils/mock-message-bus.js';
12
13
  // Mock dependencies to isolate the SubagentToolWrapper class
13
14
  vi.mock('./local-invocation.js');
14
15
  vi.mock('./schema-utils.js');
@@ -16,6 +17,7 @@ const MockedLocalSubagentInvocation = vi.mocked(LocalSubagentInvocation);
16
17
  const mockConvertInputConfigToJsonSchema = vi.mocked(convertInputConfigToJsonSchema);
17
18
  // Define reusable test data
18
19
  let mockConfig;
20
+ let mockMessageBus;
19
21
  const mockDefinition = {
20
22
  kind: 'local',
21
23
  name: 'TestAgent',
@@ -47,17 +49,18 @@ describe('SubagentToolWrapper', () => {
47
49
  beforeEach(() => {
48
50
  vi.clearAllMocks();
49
51
  mockConfig = makeFakeConfig();
52
+ mockMessageBus = createMockMessageBus();
50
53
  // Provide a mock implementation for the schema conversion utility
51
54
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
52
55
  mockConvertInputConfigToJsonSchema.mockReturnValue(mockSchema);
53
56
  });
54
57
  describe('constructor', () => {
55
58
  it('should call convertInputConfigToJsonSchema with the correct agent inputConfig', () => {
56
- new SubagentToolWrapper(mockDefinition, mockConfig);
59
+ new SubagentToolWrapper(mockDefinition, mockConfig, mockMessageBus);
57
60
  expect(convertInputConfigToJsonSchema).toHaveBeenCalledExactlyOnceWith(mockDefinition.inputConfig);
58
61
  });
59
62
  it('should correctly configure the tool properties from the agent definition', () => {
60
- const wrapper = new SubagentToolWrapper(mockDefinition, mockConfig);
63
+ const wrapper = new SubagentToolWrapper(mockDefinition, mockConfig, mockMessageBus);
61
64
  expect(wrapper.name).toBe(mockDefinition.name);
62
65
  expect(wrapper.displayName).toBe(mockDefinition.displayName);
63
66
  expect(wrapper.description).toBe(mockDefinition.description);
@@ -70,11 +73,11 @@ describe('SubagentToolWrapper', () => {
70
73
  ...mockDefinition,
71
74
  displayName: undefined,
72
75
  };
73
- const wrapper = new SubagentToolWrapper(definitionWithoutDisplayName, mockConfig);
76
+ const wrapper = new SubagentToolWrapper(definitionWithoutDisplayName, mockConfig, mockMessageBus);
74
77
  expect(wrapper.displayName).toBe(definitionWithoutDisplayName.name);
75
78
  });
76
79
  it('should generate a valid tool schema using the definition and converted schema', () => {
77
- const wrapper = new SubagentToolWrapper(mockDefinition, mockConfig);
80
+ const wrapper = new SubagentToolWrapper(mockDefinition, mockConfig, mockMessageBus);
78
81
  const schema = wrapper.schema;
79
82
  expect(schema.name).toBe(mockDefinition.name);
80
83
  expect(schema.description).toBe(mockDefinition.description);
@@ -83,22 +86,26 @@ describe('SubagentToolWrapper', () => {
83
86
  });
84
87
  describe('createInvocation', () => {
85
88
  it('should create a LocalSubagentInvocation with the correct parameters', () => {
86
- const wrapper = new SubagentToolWrapper(mockDefinition, mockConfig);
89
+ const wrapper = new SubagentToolWrapper(mockDefinition, mockConfig, mockMessageBus);
87
90
  const params = { goal: 'Test the invocation', priority: 1 };
88
91
  // The public `build` method calls the protected `createInvocation` after validation
89
92
  const invocation = wrapper.build(params);
90
93
  expect(invocation).toBeInstanceOf(LocalSubagentInvocation);
91
- expect(MockedLocalSubagentInvocation).toHaveBeenCalledExactlyOnceWith(mockDefinition, mockConfig, params, undefined);
94
+ expect(MockedLocalSubagentInvocation).toHaveBeenCalledExactlyOnceWith(mockDefinition, mockConfig, params, mockMessageBus, mockDefinition.name, mockDefinition.displayName);
92
95
  });
93
96
  it('should pass the messageBus to the LocalSubagentInvocation constructor', () => {
94
- const mockMessageBus = {};
95
- const wrapper = new SubagentToolWrapper(mockDefinition, mockConfig, mockMessageBus);
97
+ const specificMessageBus = {
98
+ publish: vi.fn(),
99
+ subscribe: vi.fn(),
100
+ unsubscribe: vi.fn(),
101
+ };
102
+ const wrapper = new SubagentToolWrapper(mockDefinition, mockConfig, specificMessageBus);
96
103
  const params = { goal: 'Test the invocation', priority: 1 };
97
104
  wrapper.build(params);
98
- expect(MockedLocalSubagentInvocation).toHaveBeenCalledWith(mockDefinition, mockConfig, params, mockMessageBus);
105
+ expect(MockedLocalSubagentInvocation).toHaveBeenCalledWith(mockDefinition, mockConfig, params, specificMessageBus, mockDefinition.name, mockDefinition.displayName);
99
106
  });
100
107
  it('should throw a validation error for invalid parameters before creating an invocation', () => {
101
- const wrapper = new SubagentToolWrapper(mockDefinition, mockConfig);
108
+ const wrapper = new SubagentToolWrapper(mockDefinition, mockConfig, mockMessageBus);
102
109
  // Missing the required 'goal' parameter
103
110
  const invalidParams = { priority: 1 };
104
111
  // The `build` method in the base class performs JSON schema validation
@@ -1 +1 @@
1
- {"version":3,"file":"subagent-tool-wrapper.test.js","sourceRoot":"","sources":["../../../src/agents/subagent-tool-wrapper.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"subagent-tool-wrapper.test.js","sourceRoot":"","sources":["../../../src/agents/subagent-tool-wrapper.test.ts"],"names":[],"mappings":"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"}
@@ -32,6 +32,12 @@ export interface OutputObject {
32
32
  * Used primarily for templating the system prompt. (Replaces ContextState)
33
33
  */
34
34
  export type AgentInputs = Record<string, unknown>;
35
+ /**
36
+ * Simplified input structure for Remote Agents, which consumes a single string query.
37
+ */
38
+ export type RemoteAgentInputs = {
39
+ query: string;
40
+ };
35
41
  /**
36
42
  * Structured events emitted during subagent execution for user observability.
37
43
  */
@@ -232,7 +232,37 @@ async function initOauthClient(authType, config) {
232
232
  'Please try again or use NO_BROWSER=true for manual authentication.'));
233
233
  }, authTimeout);
234
234
  });
235
- await Promise.race([webLogin.loginCompletePromise, timeoutPromise]);
235
+ // Listen for SIGINT to stop waiting for auth so the terminal doesn't hang
236
+ // if the user chooses not to auth.
237
+ let sigIntHandler;
238
+ let stdinHandler;
239
+ const cancellationPromise = new Promise((_, reject) => {
240
+ sigIntHandler = () => reject(new FatalCancellationError('Authentication cancelled by user.'));
241
+ process.on('SIGINT', sigIntHandler);
242
+ // Note that SIGINT might not get raised on Ctrl+C in raw mode
243
+ // so we also need to look for Ctrl+C directly in stdin.
244
+ stdinHandler = (data) => {
245
+ if (data.includes(0x03)) {
246
+ reject(new FatalCancellationError('Authentication cancelled by user.'));
247
+ }
248
+ };
249
+ process.stdin.on('data', stdinHandler);
250
+ });
251
+ try {
252
+ await Promise.race([
253
+ webLogin.loginCompletePromise,
254
+ timeoutPromise,
255
+ cancellationPromise,
256
+ ]);
257
+ }
258
+ finally {
259
+ if (sigIntHandler) {
260
+ process.removeListener('SIGINT', sigIntHandler);
261
+ }
262
+ if (stdinHandler) {
263
+ process.stdin.removeListener('data', stdinHandler);
264
+ }
265
+ }
236
266
  coreEvents.emit(CoreEvent.UserFeedback, {
237
267
  severity: 'info',
238
268
  message: 'Authentication succeeded\n',