@google/adk 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (311) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +9 -0
  3. package/dist/cjs/agents/active_streaming_tool.js +44 -0
  4. package/dist/cjs/agents/base_agent.js +245 -0
  5. package/dist/cjs/agents/base_llm_processor.js +44 -0
  6. package/dist/cjs/agents/callback_context.js +98 -0
  7. package/dist/cjs/agents/content_processor_utils.js +299 -0
  8. package/dist/cjs/agents/functions.js +394 -0
  9. package/dist/cjs/agents/instructions.js +110 -0
  10. package/dist/cjs/agents/invocation_context.js +109 -0
  11. package/dist/cjs/agents/live_request_queue.js +136 -0
  12. package/dist/cjs/agents/llm_agent.js +859 -0
  13. package/dist/cjs/agents/loop_agent.js +68 -0
  14. package/dist/cjs/agents/parallel_agent.js +78 -0
  15. package/dist/cjs/agents/readonly_context.js +68 -0
  16. package/dist/cjs/agents/run_config.js +74 -0
  17. package/dist/cjs/agents/sequential_agent.js +84 -0
  18. package/dist/cjs/agents/transcription_entry.js +27 -0
  19. package/dist/cjs/artifacts/base_artifact_service.js +27 -0
  20. package/dist/cjs/artifacts/in_memory_artifact_service.js +119 -0
  21. package/dist/cjs/auth/auth_credential.js +46 -0
  22. package/dist/cjs/auth/auth_handler.js +92 -0
  23. package/dist/cjs/auth/auth_schemes.js +62 -0
  24. package/dist/cjs/auth/auth_tool.js +27 -0
  25. package/dist/cjs/auth/credential_service/base_credential_service.js +27 -0
  26. package/dist/cjs/auth/credential_service/in_memory_credential_service.js +63 -0
  27. package/dist/cjs/code_executors/base_code_executor.js +76 -0
  28. package/dist/cjs/code_executors/built_in_code_executor.js +58 -0
  29. package/dist/cjs/code_executors/code_execution_utils.js +142 -0
  30. package/dist/cjs/code_executors/code_executor_context.js +198 -0
  31. package/dist/cjs/common.js +161 -0
  32. package/dist/cjs/events/event.js +107 -0
  33. package/dist/cjs/events/event_actions.js +83 -0
  34. package/dist/cjs/examples/base_example_provider.js +40 -0
  35. package/dist/cjs/examples/example.js +27 -0
  36. package/dist/cjs/examples/example_util.js +107 -0
  37. package/dist/cjs/index.js +40 -0
  38. package/dist/cjs/index.js.map +7 -0
  39. package/dist/cjs/index_web.js +33 -0
  40. package/dist/cjs/memory/base_memory_service.js +27 -0
  41. package/dist/cjs/memory/in_memory_memory_service.js +97 -0
  42. package/dist/cjs/memory/memory_entry.js +27 -0
  43. package/dist/cjs/models/base_llm.js +77 -0
  44. package/dist/cjs/models/base_llm_connection.js +27 -0
  45. package/dist/cjs/models/gemini_llm_connection.js +132 -0
  46. package/dist/cjs/models/google_llm.js +321 -0
  47. package/dist/cjs/models/llm_request.js +82 -0
  48. package/dist/cjs/models/llm_response.js +71 -0
  49. package/dist/cjs/models/registry.js +121 -0
  50. package/dist/cjs/package.json +1 -0
  51. package/dist/cjs/plugins/base_plugin.js +236 -0
  52. package/dist/cjs/plugins/logging_plugin.js +222 -0
  53. package/dist/cjs/plugins/plugin_manager.js +239 -0
  54. package/dist/cjs/plugins/security_plugin.js +153 -0
  55. package/dist/cjs/runner/in_memory_runner.js +58 -0
  56. package/dist/cjs/runner/runner.js +276 -0
  57. package/dist/cjs/sessions/base_session_service.js +71 -0
  58. package/dist/cjs/sessions/in_memory_session_service.js +184 -0
  59. package/dist/cjs/sessions/session.js +48 -0
  60. package/dist/cjs/sessions/state.js +101 -0
  61. package/dist/cjs/tools/agent_tool.js +134 -0
  62. package/dist/cjs/tools/base_tool.js +107 -0
  63. package/dist/cjs/tools/base_toolset.js +76 -0
  64. package/dist/cjs/tools/forwarding_artifact_service.js +71 -0
  65. package/dist/cjs/tools/function_tool.js +101 -0
  66. package/dist/cjs/tools/google_search_tool.js +76 -0
  67. package/dist/cjs/tools/long_running_tool.js +63 -0
  68. package/dist/cjs/tools/mcp/mcp_session_manager.js +65 -0
  69. package/dist/cjs/tools/mcp/mcp_tool.js +65 -0
  70. package/dist/cjs/tools/mcp/mcp_toolset.js +61 -0
  71. package/dist/cjs/tools/tool_confirmation.js +49 -0
  72. package/dist/cjs/tools/tool_context.js +129 -0
  73. package/dist/cjs/utils/deep_clone.js +44 -0
  74. package/dist/cjs/utils/env_aware_utils.js +83 -0
  75. package/dist/cjs/utils/gemini_schema_util.js +88 -0
  76. package/dist/cjs/utils/logger.js +121 -0
  77. package/dist/cjs/utils/model_name.js +64 -0
  78. package/dist/cjs/utils/simple_zod_to_json.js +191 -0
  79. package/dist/cjs/utils/variant_utils.js +55 -0
  80. package/dist/cjs/version.js +39 -0
  81. package/dist/esm/agents/active_streaming_tool.js +14 -0
  82. package/dist/esm/agents/base_agent.js +214 -0
  83. package/dist/esm/agents/base_llm_processor.js +13 -0
  84. package/dist/esm/agents/callback_context.js +68 -0
  85. package/dist/esm/agents/content_processor_utils.js +268 -0
  86. package/dist/esm/agents/functions.js +353 -0
  87. package/dist/esm/agents/instructions.js +80 -0
  88. package/dist/esm/agents/invocation_context.js +78 -0
  89. package/dist/esm/agents/live_request_queue.js +106 -0
  90. package/dist/esm/agents/llm_agent.js +828 -0
  91. package/dist/esm/agents/loop_agent.js +38 -0
  92. package/dist/esm/agents/parallel_agent.js +48 -0
  93. package/dist/esm/agents/readonly_context.js +38 -0
  94. package/dist/esm/agents/run_config.js +43 -0
  95. package/dist/esm/agents/sequential_agent.js +54 -0
  96. package/dist/esm/agents/transcription_entry.js +5 -0
  97. package/dist/esm/artifacts/base_artifact_service.js +5 -0
  98. package/dist/esm/artifacts/in_memory_artifact_service.js +89 -0
  99. package/dist/esm/auth/auth_credential.js +16 -0
  100. package/dist/esm/auth/auth_handler.js +62 -0
  101. package/dist/esm/auth/auth_schemes.js +31 -0
  102. package/dist/esm/auth/auth_tool.js +5 -0
  103. package/dist/esm/auth/credential_service/base_credential_service.js +5 -0
  104. package/dist/esm/auth/credential_service/in_memory_credential_service.js +33 -0
  105. package/dist/esm/code_executors/base_code_executor.js +46 -0
  106. package/dist/esm/code_executors/built_in_code_executor.js +28 -0
  107. package/dist/esm/code_executors/code_execution_utils.js +108 -0
  108. package/dist/esm/code_executors/code_executor_context.js +168 -0
  109. package/dist/esm/common.js +85 -0
  110. package/dist/esm/events/event.js +72 -0
  111. package/dist/esm/events/event_actions.js +52 -0
  112. package/dist/esm/examples/base_example_provider.js +10 -0
  113. package/dist/esm/examples/example.js +5 -0
  114. package/dist/esm/examples/example_util.js +76 -0
  115. package/dist/esm/index.js +40 -0
  116. package/dist/esm/index.js.map +7 -0
  117. package/dist/esm/index_web.js +6 -0
  118. package/dist/esm/memory/base_memory_service.js +5 -0
  119. package/dist/esm/memory/in_memory_memory_service.js +67 -0
  120. package/dist/esm/memory/memory_entry.js +5 -0
  121. package/dist/esm/models/base_llm.js +47 -0
  122. package/dist/esm/models/base_llm_connection.js +5 -0
  123. package/dist/esm/models/gemini_llm_connection.js +102 -0
  124. package/dist/esm/models/google_llm.js +291 -0
  125. package/dist/esm/models/llm_request.js +50 -0
  126. package/dist/esm/models/llm_response.js +41 -0
  127. package/dist/esm/models/registry.js +91 -0
  128. package/dist/esm/plugins/base_plugin.js +206 -0
  129. package/dist/esm/plugins/logging_plugin.js +192 -0
  130. package/dist/esm/plugins/plugin_manager.js +209 -0
  131. package/dist/esm/plugins/security_plugin.js +119 -0
  132. package/dist/esm/runner/in_memory_runner.js +28 -0
  133. package/dist/esm/runner/runner.js +246 -0
  134. package/dist/esm/sessions/base_session_service.js +41 -0
  135. package/dist/esm/sessions/in_memory_session_service.js +154 -0
  136. package/dist/esm/sessions/session.js +18 -0
  137. package/dist/esm/sessions/state.js +71 -0
  138. package/dist/esm/tools/agent_tool.js +104 -0
  139. package/dist/esm/tools/base_tool.js +77 -0
  140. package/dist/esm/tools/base_toolset.js +46 -0
  141. package/dist/esm/tools/forwarding_artifact_service.js +41 -0
  142. package/dist/esm/tools/function_tool.js +71 -0
  143. package/dist/esm/tools/google_search_tool.js +46 -0
  144. package/dist/esm/tools/long_running_tool.js +33 -0
  145. package/dist/esm/tools/mcp/mcp_session_manager.js +35 -0
  146. package/dist/esm/tools/mcp/mcp_tool.js +35 -0
  147. package/dist/esm/tools/mcp/mcp_toolset.js +31 -0
  148. package/dist/esm/tools/tool_confirmation.js +19 -0
  149. package/dist/esm/tools/tool_context.js +99 -0
  150. package/dist/esm/utils/deep_clone.js +14 -0
  151. package/dist/esm/utils/env_aware_utils.js +49 -0
  152. package/dist/esm/utils/gemini_schema_util.js +58 -0
  153. package/dist/esm/utils/logger.js +89 -0
  154. package/dist/esm/utils/model_name.js +31 -0
  155. package/dist/esm/utils/simple_zod_to_json.js +160 -0
  156. package/dist/esm/utils/variant_utils.js +24 -0
  157. package/dist/esm/version.js +9 -0
  158. package/dist/types/agents/active_streaming_tool.d.ts +29 -0
  159. package/dist/types/agents/base_agent.d.ts +167 -0
  160. package/dist/types/agents/base_llm_processor.d.ts +27 -0
  161. package/dist/types/agents/callback_context.d.ts +42 -0
  162. package/dist/types/agents/content_processor_utils.d.ts +36 -0
  163. package/dist/types/agents/functions.d.ts +90 -0
  164. package/dist/types/agents/instructions.d.ts +32 -0
  165. package/dist/types/agents/invocation_context.d.ts +155 -0
  166. package/dist/types/agents/live_request_queue.d.ts +67 -0
  167. package/dist/types/agents/llm_agent.d.ts +333 -0
  168. package/dist/types/agents/loop_agent.d.ts +31 -0
  169. package/dist/types/agents/parallel_agent.d.ts +21 -0
  170. package/dist/types/agents/readonly_context.d.ts +31 -0
  171. package/dist/types/agents/run_config.d.ts +76 -0
  172. package/dist/types/agents/sequential_agent.d.ts +26 -0
  173. package/dist/types/agents/transcription_entry.d.ts +17 -0
  174. package/dist/types/artifacts/base_artifact_service.d.ts +127 -0
  175. package/dist/types/artifacts/in_memory_artifact_service.d.ts +18 -0
  176. package/dist/types/auth/auth_credential.d.ts +227 -0
  177. package/dist/types/auth/auth_handler.d.ts +27 -0
  178. package/dist/types/auth/auth_schemes.d.ts +36 -0
  179. package/dist/types/auth/auth_tool.d.ts +51 -0
  180. package/dist/types/auth/credential_service/base_credential_service.d.ts +27 -0
  181. package/dist/types/auth/credential_service/in_memory_credential_service.d.ts +19 -0
  182. package/dist/types/code_executors/base_code_executor.d.ts +60 -0
  183. package/dist/types/code_executors/built_in_code_executor.d.ts +13 -0
  184. package/dist/types/code_executors/code_execution_utils.d.ts +99 -0
  185. package/dist/types/code_executors/code_executor_context.d.ts +92 -0
  186. package/dist/types/common.d.ts +51 -0
  187. package/dist/types/events/event.d.ts +81 -0
  188. package/dist/types/events/event_actions.d.ts +74 -0
  189. package/dist/types/examples/base_example_provider.d.ts +20 -0
  190. package/dist/types/examples/example.d.ts +19 -0
  191. package/dist/types/examples/example_util.d.ts +13 -0
  192. package/dist/types/index.d.ts +9 -0
  193. package/dist/types/index_web.d.ts +6 -0
  194. package/dist/types/memory/base_memory_service.d.ts +47 -0
  195. package/dist/types/memory/in_memory_memory_service.d.ts +18 -0
  196. package/dist/types/memory/memory_entry.d.ts +24 -0
  197. package/dist/types/models/base_llm.d.ts +46 -0
  198. package/dist/types/models/base_llm_connection.d.ts +51 -0
  199. package/dist/types/models/gemini_llm_connection.d.ts +54 -0
  200. package/dist/types/models/google_llm.d.ts +88 -0
  201. package/dist/types/models/llm_request.d.ts +49 -0
  202. package/dist/types/models/llm_response.d.ts +79 -0
  203. package/dist/types/models/registry.d.ts +45 -0
  204. package/dist/types/plugins/base_plugin.d.ts +310 -0
  205. package/dist/types/plugins/logging_plugin.d.ts +104 -0
  206. package/dist/types/plugins/plugin_manager.d.ts +155 -0
  207. package/dist/types/plugins/security_plugin.d.ts +60 -0
  208. package/dist/types/runner/in_memory_runner.d.ts +15 -0
  209. package/dist/types/runner/runner.d.ts +80 -0
  210. package/dist/types/sessions/base_session_service.d.ts +129 -0
  211. package/dist/types/sessions/in_memory_session_service.d.ts +32 -0
  212. package/dist/types/sessions/session.d.ts +46 -0
  213. package/dist/types/sessions/state.d.ts +57 -0
  214. package/dist/types/tools/agent_tool.d.ts +37 -0
  215. package/dist/types/tools/base_tool.d.ts +84 -0
  216. package/dist/types/tools/base_toolset.d.ts +64 -0
  217. package/dist/types/tools/forwarding_artifact_service.d.ts +21 -0
  218. package/dist/types/tools/function_tool.d.ts +48 -0
  219. package/dist/types/tools/google_search_tool.d.ts +18 -0
  220. package/dist/types/tools/long_running_tool.d.ts +18 -0
  221. package/dist/types/tools/mcp/mcp_session_manager.d.ts +57 -0
  222. package/dist/types/tools/mcp/mcp_tool.d.ts +30 -0
  223. package/dist/types/tools/mcp/mcp_toolset.d.ts +39 -0
  224. package/dist/types/tools/tool_confirmation.d.ts +25 -0
  225. package/dist/types/tools/tool_context.d.ts +63 -0
  226. package/dist/types/utils/deep_clone.d.ts +1 -0
  227. package/dist/types/utils/env_aware_utils.d.ts +31 -0
  228. package/dist/types/utils/gemini_schema_util.d.ts +23 -0
  229. package/dist/types/utils/logger.d.ts +41 -0
  230. package/dist/types/utils/model_name.d.ts +34 -0
  231. package/dist/types/utils/simple_zod_to_json.d.ts +12 -0
  232. package/dist/types/utils/variant_utils.d.ts +24 -0
  233. package/dist/types/version.d.ts +6 -0
  234. package/dist/web/agents/active_streaming_tool.js +14 -0
  235. package/dist/web/agents/base_agent.js +265 -0
  236. package/dist/web/agents/base_llm_processor.js +13 -0
  237. package/dist/web/agents/callback_context.js +68 -0
  238. package/dist/web/agents/content_processor_utils.js +268 -0
  239. package/dist/web/agents/functions.js +353 -0
  240. package/dist/web/agents/instructions.js +80 -0
  241. package/dist/web/agents/invocation_context.js +78 -0
  242. package/dist/web/agents/live_request_queue.js +124 -0
  243. package/dist/web/agents/llm_agent.js +973 -0
  244. package/dist/web/agents/loop_agent.js +71 -0
  245. package/dist/web/agents/parallel_agent.js +83 -0
  246. package/dist/web/agents/readonly_context.js +38 -0
  247. package/dist/web/agents/run_config.js +43 -0
  248. package/dist/web/agents/sequential_agent.js +99 -0
  249. package/dist/web/agents/transcription_entry.js +5 -0
  250. package/dist/web/artifacts/base_artifact_service.js +5 -0
  251. package/dist/web/artifacts/in_memory_artifact_service.js +89 -0
  252. package/dist/web/auth/auth_credential.js +16 -0
  253. package/dist/web/auth/auth_handler.js +62 -0
  254. package/dist/web/auth/auth_schemes.js +31 -0
  255. package/dist/web/auth/auth_tool.js +5 -0
  256. package/dist/web/auth/credential_service/base_credential_service.js +5 -0
  257. package/dist/web/auth/credential_service/in_memory_credential_service.js +33 -0
  258. package/dist/web/code_executors/base_code_executor.js +46 -0
  259. package/dist/web/code_executors/built_in_code_executor.js +28 -0
  260. package/dist/web/code_executors/code_execution_utils.js +105 -0
  261. package/dist/web/code_executors/code_executor_context.js +168 -0
  262. package/dist/web/common.js +85 -0
  263. package/dist/web/events/event.js +90 -0
  264. package/dist/web/events/event_actions.js +67 -0
  265. package/dist/web/examples/base_example_provider.js +10 -0
  266. package/dist/web/examples/example.js +5 -0
  267. package/dist/web/examples/example_util.js +75 -0
  268. package/dist/web/index.js +13 -0
  269. package/dist/web/index.js.map +7 -0
  270. package/dist/web/index_web.js +6 -0
  271. package/dist/web/memory/base_memory_service.js +5 -0
  272. package/dist/web/memory/in_memory_memory_service.js +67 -0
  273. package/dist/web/memory/memory_entry.js +5 -0
  274. package/dist/web/models/base_llm.js +47 -0
  275. package/dist/web/models/base_llm_connection.js +5 -0
  276. package/dist/web/models/gemini_llm_connection.js +120 -0
  277. package/dist/web/models/google_llm.js +332 -0
  278. package/dist/web/models/llm_request.js +50 -0
  279. package/dist/web/models/llm_response.js +41 -0
  280. package/dist/web/models/registry.js +91 -0
  281. package/dist/web/plugins/base_plugin.js +206 -0
  282. package/dist/web/plugins/logging_plugin.js +192 -0
  283. package/dist/web/plugins/plugin_manager.js +209 -0
  284. package/dist/web/plugins/security_plugin.js +119 -0
  285. package/dist/web/runner/in_memory_runner.js +28 -0
  286. package/dist/web/runner/runner.js +277 -0
  287. package/dist/web/sessions/base_session_service.js +41 -0
  288. package/dist/web/sessions/in_memory_session_service.js +154 -0
  289. package/dist/web/sessions/session.js +18 -0
  290. package/dist/web/sessions/state.js +87 -0
  291. package/dist/web/tools/agent_tool.js +118 -0
  292. package/dist/web/tools/base_tool.js +77 -0
  293. package/dist/web/tools/base_toolset.js +46 -0
  294. package/dist/web/tools/forwarding_artifact_service.js +41 -0
  295. package/dist/web/tools/function_tool.js +71 -0
  296. package/dist/web/tools/google_search_tool.js +46 -0
  297. package/dist/web/tools/long_running_tool.js +50 -0
  298. package/dist/web/tools/mcp/mcp_session_manager.js +35 -0
  299. package/dist/web/tools/mcp/mcp_tool.js +35 -0
  300. package/dist/web/tools/mcp/mcp_toolset.js +31 -0
  301. package/dist/web/tools/tool_confirmation.js +19 -0
  302. package/dist/web/tools/tool_context.js +99 -0
  303. package/dist/web/utils/deep_clone.js +14 -0
  304. package/dist/web/utils/env_aware_utils.js +49 -0
  305. package/dist/web/utils/gemini_schema_util.js +58 -0
  306. package/dist/web/utils/logger.js +89 -0
  307. package/dist/web/utils/model_name.js +31 -0
  308. package/dist/web/utils/simple_zod_to_json.js +174 -0
  309. package/dist/web/utils/variant_utils.js +24 -0
  310. package/dist/web/version.js +9 -0
  311. package/package.json +61 -0
@@ -0,0 +1,299 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+
7
+ "use strict";
8
+ var __defProp = Object.defineProperty;
9
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
10
+ var __getOwnPropNames = Object.getOwnPropertyNames;
11
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
12
+ var __export = (target, all) => {
13
+ for (var name in all)
14
+ __defProp(target, name, { get: all[name], enumerable: true });
15
+ };
16
+ var __copyProps = (to, from, except, desc) => {
17
+ if (from && typeof from === "object" || typeof from === "function") {
18
+ for (let key of __getOwnPropNames(from))
19
+ if (!__hasOwnProp.call(to, key) && key !== except)
20
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
21
+ }
22
+ return to;
23
+ };
24
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
25
+ var content_processor_utils_exports = {};
26
+ __export(content_processor_utils_exports, {
27
+ getContents: () => getContents,
28
+ getCurrentTurnContents: () => getCurrentTurnContents
29
+ });
30
+ module.exports = __toCommonJS(content_processor_utils_exports);
31
+ var import_event = require("../events/event.js");
32
+ var import_deep_clone = require("../utils/deep_clone.js");
33
+ var import_functions = require("./functions.js");
34
+ /**
35
+ * @license
36
+ * Copyright 2025 Google LLC
37
+ * SPDX-License-Identifier: Apache-2.0
38
+ */
39
+ function getContents(events, agentName, currentBranch) {
40
+ var _a, _b, _c;
41
+ const filteredEvents = [];
42
+ for (const event of events) {
43
+ if (!((_a = event.content) == null ? void 0 : _a.role) || ((_c = (_b = event.content.parts) == null ? void 0 : _b[0]) == null ? void 0 : _c.text) === "") {
44
+ continue;
45
+ }
46
+ if (currentBranch && event.branch && !currentBranch.startsWith(event.branch)) {
47
+ continue;
48
+ }
49
+ if (isAuthEvent(event)) {
50
+ continue;
51
+ }
52
+ if (isToolConfirmationEvent(event)) {
53
+ continue;
54
+ }
55
+ filteredEvents.push(
56
+ isEventFromAnotherAgent(agentName, event) ? convertForeignEvent(event) : event
57
+ );
58
+ }
59
+ let resultEvents = rearrangeEventsForLatestFunctionResponse(filteredEvents);
60
+ resultEvents = rearrangeEventsForAsyncFunctionResponsesInHistory(resultEvents);
61
+ const contents = [];
62
+ for (const event of resultEvents) {
63
+ const content = (0, import_deep_clone.deepClone)(event.content);
64
+ (0, import_functions.removeClientFunctionCallId)(content);
65
+ contents.push(content);
66
+ }
67
+ return contents;
68
+ }
69
+ function getCurrentTurnContents(events, agentName, currentBranch) {
70
+ for (let i = events.length - 1; i >= 0; i--) {
71
+ const event = events[i];
72
+ if (event.author === "user" || isEventFromAnotherAgent(agentName, event)) {
73
+ return getContents(events.slice(i), agentName, currentBranch);
74
+ }
75
+ }
76
+ return [];
77
+ }
78
+ function isAuthEvent(event) {
79
+ var _a, _b, _c;
80
+ if (!((_a = event.content) == null ? void 0 : _a.parts)) {
81
+ return false;
82
+ }
83
+ for (const part of event.content.parts) {
84
+ if (((_b = part.functionCall) == null ? void 0 : _b.name) === import_functions.REQUEST_EUC_FUNCTION_CALL_NAME || ((_c = part.functionResponse) == null ? void 0 : _c.name) === import_functions.REQUEST_EUC_FUNCTION_CALL_NAME) {
85
+ return true;
86
+ }
87
+ }
88
+ return false;
89
+ }
90
+ function isToolConfirmationEvent(event) {
91
+ var _a, _b, _c;
92
+ if (!((_a = event.content) == null ? void 0 : _a.parts)) {
93
+ return false;
94
+ }
95
+ for (const part of event.content.parts) {
96
+ if (((_b = part.functionCall) == null ? void 0 : _b.name) === import_functions.REQUEST_CONFIRMATION_FUNCTION_CALL_NAME || ((_c = part.functionResponse) == null ? void 0 : _c.name) === import_functions.REQUEST_CONFIRMATION_FUNCTION_CALL_NAME) {
97
+ return true;
98
+ }
99
+ }
100
+ return false;
101
+ }
102
+ function isEventFromAnotherAgent(agentName, event) {
103
+ return !!agentName && event.author !== agentName && event.author !== "user";
104
+ }
105
+ function convertForeignEvent(event) {
106
+ var _a, _b, _c, _d, _e;
107
+ if (!((_a = event.content) == null ? void 0 : _a.parts)) {
108
+ return event;
109
+ }
110
+ const content = {
111
+ role: "user",
112
+ parts: [{
113
+ text: "For context:"
114
+ }]
115
+ };
116
+ for (const part of event.content.parts) {
117
+ if (part.text && !part.thought) {
118
+ (_b = content.parts) == null ? void 0 : _b.push({
119
+ text: `[${event.author}] said: ${part.text}`
120
+ });
121
+ } else if (part.functionCall) {
122
+ (_c = content.parts) == null ? void 0 : _c.push({
123
+ text: `[${event.author}] called tool \`${part.functionCall.name}\` with parameters: ${part.functionCall.args}`
124
+ });
125
+ } else if (part.functionResponse) {
126
+ (_d = content.parts) == null ? void 0 : _d.push({
127
+ text: `[${event.author}] tool \`${part.functionResponse.name}\` returned result: ${part.functionResponse.response}`
128
+ });
129
+ } else {
130
+ (_e = content.parts) == null ? void 0 : _e.push(part);
131
+ }
132
+ }
133
+ return (0, import_event.createEvent)({
134
+ invocationId: event.invocationId,
135
+ author: "user",
136
+ content,
137
+ branch: event.branch,
138
+ timestamp: event.timestamp
139
+ });
140
+ }
141
+ function mergeFunctionResponseEvents(events) {
142
+ var _a;
143
+ if (events.length === 0) {
144
+ throw new Error("Cannot merge an empty list of events.");
145
+ }
146
+ const mergedEvent = (0, import_event.createEvent)(events[0]);
147
+ const partsInMergedEvent = ((_a = mergedEvent.content) == null ? void 0 : _a.parts) || [];
148
+ if (partsInMergedEvent.length === 0) {
149
+ throw new Error("There should be at least one function_response part.");
150
+ }
151
+ const partIndicesInMergedEvent = {};
152
+ for (let i = 0; i < partsInMergedEvent.length; i++) {
153
+ const part = partsInMergedEvent[i];
154
+ if (part.functionResponse && part.functionResponse.id) {
155
+ partIndicesInMergedEvent[part.functionResponse.id] = i;
156
+ }
157
+ }
158
+ for (const event of events.slice(1)) {
159
+ if (!event.content || !event.content.parts) {
160
+ throw new Error("There should be at least one function_response part.");
161
+ }
162
+ for (const part of event.content.parts) {
163
+ if (part.functionResponse && part.functionResponse.id) {
164
+ const functionCallId = part.functionResponse.id;
165
+ if (functionCallId in partIndicesInMergedEvent) {
166
+ partsInMergedEvent[partIndicesInMergedEvent[functionCallId]] = part;
167
+ } else {
168
+ partsInMergedEvent.push(part);
169
+ partIndicesInMergedEvent[functionCallId] = partsInMergedEvent.length - 1;
170
+ }
171
+ } else {
172
+ partsInMergedEvent.push(part);
173
+ }
174
+ }
175
+ }
176
+ return mergedEvent;
177
+ }
178
+ function rearrangeEventsForLatestFunctionResponse(events) {
179
+ if (events.length === 0) {
180
+ return events;
181
+ }
182
+ const latestEvent = events[events.length - 1];
183
+ const functionResponses = (0, import_event.getFunctionResponses)(latestEvent);
184
+ if (!(functionResponses == null ? void 0 : functionResponses.length)) {
185
+ return events;
186
+ }
187
+ let functionResponsesIds = new Set(
188
+ functionResponses.filter((response) => !!response.id).map((response) => response.id)
189
+ );
190
+ const secondLatestEvent = events.at(-2);
191
+ if (secondLatestEvent) {
192
+ const functionCallsFromSecondLatest = (0, import_event.getFunctionCalls)(secondLatestEvent);
193
+ if (functionCallsFromSecondLatest) {
194
+ for (const functionCall of functionCallsFromSecondLatest) {
195
+ if (functionCall.id && functionResponsesIds.has(functionCall.id)) {
196
+ return events;
197
+ }
198
+ }
199
+ }
200
+ }
201
+ let functionCallEventIdx = -1;
202
+ for (let idx = events.length - 2; idx >= 0; idx--) {
203
+ const event = events[idx];
204
+ const functionCalls = (0, import_event.getFunctionCalls)(event);
205
+ if (!(functionCalls == null ? void 0 : functionCalls.length)) {
206
+ continue;
207
+ }
208
+ for (const functionCall of functionCalls) {
209
+ if (functionCall.id && functionResponsesIds.has(functionCall.id)) {
210
+ functionCallEventIdx = idx;
211
+ const functionCallIds = new Set(
212
+ functionCalls.map((fc) => fc.id).filter((id) => !!id)
213
+ );
214
+ const isSubset = Array.from(functionResponsesIds).every((id) => functionCallIds.has(id));
215
+ if (!isSubset) {
216
+ throw new Error(
217
+ `Last response event should only contain the responses for the function calls in the same function call event. Function call ids found : ${Array.from(functionCallIds).join(", ")}, function response ids provided: ${Array.from(functionResponsesIds).join(", ")}`
218
+ );
219
+ }
220
+ functionResponsesIds = functionCallIds;
221
+ break;
222
+ }
223
+ }
224
+ }
225
+ if (functionCallEventIdx === -1) {
226
+ throw new Error(
227
+ `No function call event found for function responses ids: ${Array.from(
228
+ functionResponsesIds
229
+ ).join(", ")}`
230
+ );
231
+ }
232
+ const functionResponseEvents = [];
233
+ for (let idx = functionCallEventIdx + 1; idx < events.length - 1; idx++) {
234
+ const event = events[idx];
235
+ const responses = (0, import_event.getFunctionResponses)(event);
236
+ if (responses && responses.some(
237
+ (response) => response.id && functionResponsesIds.has(response.id)
238
+ )) {
239
+ functionResponseEvents.push(event);
240
+ }
241
+ }
242
+ functionResponseEvents.push(events[events.length - 1]);
243
+ const resultEvents = events.slice(0, functionCallEventIdx + 1);
244
+ resultEvents.push(mergeFunctionResponseEvents(functionResponseEvents));
245
+ return resultEvents;
246
+ }
247
+ function rearrangeEventsForAsyncFunctionResponsesInHistory(events) {
248
+ const functionCallIdToResponseEventIndex = /* @__PURE__ */ new Map();
249
+ for (let i = 0; i < events.length; i++) {
250
+ const event = events[i];
251
+ const functionResponses = (0, import_event.getFunctionResponses)(event);
252
+ if (functionResponses == null ? void 0 : functionResponses.length) {
253
+ for (const functionResponse of functionResponses) {
254
+ if (!functionResponse.id) {
255
+ continue;
256
+ }
257
+ functionCallIdToResponseEventIndex.set(functionResponse.id, i);
258
+ }
259
+ }
260
+ }
261
+ const resultEvents = [];
262
+ for (const event of events) {
263
+ if ((0, import_event.getFunctionResponses)(event).length > 0) {
264
+ continue;
265
+ }
266
+ const functionCalls = (0, import_event.getFunctionCalls)(event);
267
+ if (functionCalls == null ? void 0 : functionCalls.length) {
268
+ const functionResponseEventsIndices = /* @__PURE__ */ new Set();
269
+ for (const functionCall of functionCalls) {
270
+ const functionCallId = functionCall.id;
271
+ if (functionCallId && functionCallIdToResponseEventIndex.has(functionCallId)) {
272
+ functionResponseEventsIndices.add(
273
+ functionCallIdToResponseEventIndex.get(functionCallId)
274
+ );
275
+ }
276
+ }
277
+ resultEvents.push(event);
278
+ if (functionResponseEventsIndices.size === 0) {
279
+ continue;
280
+ }
281
+ if (functionResponseEventsIndices.size === 1) {
282
+ const [responseIndex] = [...functionResponseEventsIndices];
283
+ resultEvents.push(events[responseIndex]);
284
+ } else {
285
+ const indicesArray = Array.from(functionResponseEventsIndices).sort((a, b) => a - b);
286
+ const eventsToMerge = indicesArray.map((index) => events[index]);
287
+ resultEvents.push(mergeFunctionResponseEvents(eventsToMerge));
288
+ }
289
+ } else {
290
+ resultEvents.push(event);
291
+ }
292
+ }
293
+ return resultEvents;
294
+ }
295
+ // Annotate the CommonJS export names for ESM import in node:
296
+ 0 && (module.exports = {
297
+ getContents,
298
+ getCurrentTurnContents
299
+ });
@@ -0,0 +1,394 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+
7
+ "use strict";
8
+ var __defProp = Object.defineProperty;
9
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
10
+ var __getOwnPropNames = Object.getOwnPropertyNames;
11
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
12
+ var __export = (target, all) => {
13
+ for (var name in all)
14
+ __defProp(target, name, { get: all[name], enumerable: true });
15
+ };
16
+ var __copyProps = (to, from, except, desc) => {
17
+ if (from && typeof from === "object" || typeof from === "function") {
18
+ for (let key of __getOwnPropNames(from))
19
+ if (!__hasOwnProp.call(to, key) && key !== except)
20
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
21
+ }
22
+ return to;
23
+ };
24
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
25
+ var functions_exports = {};
26
+ __export(functions_exports, {
27
+ REQUEST_CONFIRMATION_FUNCTION_CALL_NAME: () => REQUEST_CONFIRMATION_FUNCTION_CALL_NAME,
28
+ REQUEST_EUC_FUNCTION_CALL_NAME: () => REQUEST_EUC_FUNCTION_CALL_NAME,
29
+ functionsExportedForTestingOnly: () => functionsExportedForTestingOnly,
30
+ generateAuthEvent: () => generateAuthEvent,
31
+ generateClientFunctionCallId: () => generateClientFunctionCallId,
32
+ generateRequestConfirmationEvent: () => generateRequestConfirmationEvent,
33
+ getLongRunningFunctionCalls: () => getLongRunningFunctionCalls,
34
+ handleFunctionCallList: () => handleFunctionCallList,
35
+ handleFunctionCallsAsync: () => handleFunctionCallsAsync,
36
+ mergeParallelFunctionResponseEvents: () => mergeParallelFunctionResponseEvents,
37
+ populateClientFunctionCallId: () => populateClientFunctionCallId,
38
+ removeClientFunctionCallId: () => removeClientFunctionCallId
39
+ });
40
+ module.exports = __toCommonJS(functions_exports);
41
+ var import_event = require("../events/event.js");
42
+ var import_event_actions = require("../events/event_actions.js");
43
+ var import_tool_context = require("../tools/tool_context.js");
44
+ var import_env_aware_utils = require("../utils/env_aware_utils.js");
45
+ var import_logger = require("../utils/logger.js");
46
+ /**
47
+ * @license
48
+ * Copyright 2025 Google LLC
49
+ * SPDX-License-Identifier: Apache-2.0
50
+ */
51
+ const AF_FUNCTION_CALL_ID_PREFIX = "adk-";
52
+ const REQUEST_EUC_FUNCTION_CALL_NAME = "adk_request_credential";
53
+ const REQUEST_CONFIRMATION_FUNCTION_CALL_NAME = "adk_request_confirmation";
54
+ const functionsExportedForTestingOnly = {
55
+ handleFunctionCallList
56
+ };
57
+ function generateClientFunctionCallId() {
58
+ return `${AF_FUNCTION_CALL_ID_PREFIX}${(0, import_env_aware_utils.randomUUID)()}`;
59
+ }
60
+ function populateClientFunctionCallId(modelResponseEvent) {
61
+ const functionCalls = (0, import_event.getFunctionCalls)(modelResponseEvent);
62
+ if (!functionCalls) {
63
+ return;
64
+ }
65
+ for (const functionCall of functionCalls) {
66
+ if (!functionCall.id) {
67
+ functionCall.id = generateClientFunctionCallId();
68
+ }
69
+ }
70
+ }
71
+ function removeClientFunctionCallId(content) {
72
+ if (content && content.parts) {
73
+ for (const part of content.parts) {
74
+ if (part.functionCall && part.functionCall.id && part.functionCall.id.startsWith(AF_FUNCTION_CALL_ID_PREFIX)) {
75
+ part.functionCall.id = void 0;
76
+ }
77
+ if (part.functionResponse && part.functionResponse.id && part.functionResponse.id.startsWith(AF_FUNCTION_CALL_ID_PREFIX)) {
78
+ part.functionResponse.id = void 0;
79
+ }
80
+ }
81
+ }
82
+ }
83
+ function getLongRunningFunctionCalls(functionCalls, toolsDict) {
84
+ const longRunningToolIds = /* @__PURE__ */ new Set();
85
+ for (const functionCall of functionCalls) {
86
+ if (functionCall.name && functionCall.name in toolsDict && toolsDict[functionCall.name].isLongRunning && functionCall.id) {
87
+ longRunningToolIds.add(functionCall.id);
88
+ }
89
+ }
90
+ return longRunningToolIds;
91
+ }
92
+ function generateAuthEvent(invocationContext, functionResponseEvent) {
93
+ var _a;
94
+ if (!((_a = functionResponseEvent.actions) == null ? void 0 : _a.requestedAuthConfigs)) {
95
+ return void 0;
96
+ }
97
+ const parts = [];
98
+ const longRunningToolIds = /* @__PURE__ */ new Set();
99
+ for (const [functionCallId, authConfig] of Object.entries(
100
+ functionResponseEvent.actions.requestedAuthConfigs
101
+ )) {
102
+ const requestEucFunctionCall = {
103
+ name: REQUEST_EUC_FUNCTION_CALL_NAME,
104
+ args: {
105
+ "function_call_id": functionCallId,
106
+ "auth_config": authConfig
107
+ },
108
+ id: generateClientFunctionCallId()
109
+ };
110
+ longRunningToolIds.add(requestEucFunctionCall.id);
111
+ parts.push({ functionCall: requestEucFunctionCall });
112
+ }
113
+ return (0, import_event.createEvent)({
114
+ invocationId: invocationContext.invocationId,
115
+ author: invocationContext.agent.name,
116
+ branch: invocationContext.branch,
117
+ content: {
118
+ parts,
119
+ role: functionResponseEvent.content.role
120
+ },
121
+ longRunningToolIds: Array.from(longRunningToolIds)
122
+ });
123
+ }
124
+ function generateRequestConfirmationEvent({
125
+ invocationContext,
126
+ functionCallEvent,
127
+ functionResponseEvent
128
+ }) {
129
+ var _a, _b;
130
+ if (!((_a = functionResponseEvent.actions) == null ? void 0 : _a.requestedToolConfirmations)) {
131
+ return;
132
+ }
133
+ const parts = [];
134
+ const longRunningToolIds = /* @__PURE__ */ new Set();
135
+ const functionCalls = (0, import_event.getFunctionCalls)(functionCallEvent);
136
+ for (const [functionCallId, toolConfirmation] of Object.entries(
137
+ functionResponseEvent.actions.requestedToolConfirmations
138
+ )) {
139
+ const originalFunctionCall = (_b = functionCalls.find((call) => call.id === functionCallId)) != null ? _b : void 0;
140
+ if (!originalFunctionCall) {
141
+ continue;
142
+ }
143
+ const requestConfirmationFunctionCall = {
144
+ name: REQUEST_CONFIRMATION_FUNCTION_CALL_NAME,
145
+ args: {
146
+ "originalFunctionCall": originalFunctionCall,
147
+ "toolConfirmation": toolConfirmation
148
+ },
149
+ id: generateClientFunctionCallId()
150
+ };
151
+ longRunningToolIds.add(requestConfirmationFunctionCall.id);
152
+ parts.push({ functionCall: requestConfirmationFunctionCall });
153
+ }
154
+ return (0, import_event.createEvent)({
155
+ invocationId: invocationContext.invocationId,
156
+ author: invocationContext.agent.name,
157
+ branch: invocationContext.branch,
158
+ content: {
159
+ parts,
160
+ role: functionResponseEvent.content.role
161
+ },
162
+ longRunningToolIds: Array.from(longRunningToolIds)
163
+ });
164
+ }
165
+ async function callToolAsync(tool, args, toolContext) {
166
+ import_logger.logger.debug(`callToolAsync ${tool.name}`);
167
+ return await tool.runAsync({ args, toolContext });
168
+ }
169
+ function buildResponseEvent(tool, functionResult, toolContext, invocationContext) {
170
+ let responseResult = functionResult;
171
+ if (typeof functionResult !== "object" || functionResult == null) {
172
+ responseResult = { result: functionResult };
173
+ }
174
+ const partFunctionResponse = {
175
+ functionResponse: {
176
+ name: tool.name,
177
+ response: responseResult,
178
+ id: toolContext.functionCallId
179
+ }
180
+ };
181
+ const content = {
182
+ role: "user",
183
+ parts: [partFunctionResponse]
184
+ };
185
+ return (0, import_event.createEvent)({
186
+ invocationId: invocationContext.invocationId,
187
+ author: invocationContext.agent.name,
188
+ content,
189
+ actions: toolContext.actions,
190
+ branch: invocationContext.branch
191
+ });
192
+ }
193
+ async function handleFunctionCallsAsync({
194
+ invocationContext,
195
+ functionCallEvent,
196
+ toolsDict,
197
+ beforeToolCallbacks,
198
+ afterToolCallbacks,
199
+ filters,
200
+ toolConfirmationDict
201
+ }) {
202
+ const functionCalls = (0, import_event.getFunctionCalls)(functionCallEvent);
203
+ return await handleFunctionCallList({
204
+ invocationContext,
205
+ functionCalls,
206
+ toolsDict,
207
+ beforeToolCallbacks,
208
+ afterToolCallbacks,
209
+ filters,
210
+ toolConfirmationDict
211
+ });
212
+ }
213
+ async function handleFunctionCallList({
214
+ invocationContext,
215
+ functionCalls,
216
+ toolsDict,
217
+ beforeToolCallbacks,
218
+ afterToolCallbacks,
219
+ filters,
220
+ toolConfirmationDict
221
+ }) {
222
+ var _a;
223
+ const functionResponseEvents = [];
224
+ const filteredFunctionCalls = functionCalls.filter((functionCall) => {
225
+ return !filters || functionCall.id && filters.has(functionCall.id);
226
+ });
227
+ for (const functionCall of filteredFunctionCalls) {
228
+ let toolConfirmation = void 0;
229
+ if (toolConfirmationDict && functionCall.id) {
230
+ toolConfirmation = toolConfirmationDict[functionCall.id];
231
+ }
232
+ const { tool, toolContext } = getToolAndContext(
233
+ {
234
+ invocationContext,
235
+ functionCall,
236
+ toolsDict,
237
+ toolConfirmation
238
+ }
239
+ );
240
+ import_logger.logger.debug(`execute_tool ${tool.name}`);
241
+ const functionArgs = (_a = functionCall.args) != null ? _a : {};
242
+ let functionResponse = null;
243
+ functionResponse = await invocationContext.pluginManager.runBeforeToolCallback({
244
+ tool,
245
+ toolArgs: functionArgs,
246
+ toolContext
247
+ });
248
+ if (functionResponse == null) {
249
+ for (const callback of beforeToolCallbacks) {
250
+ functionResponse = await callback({
251
+ tool,
252
+ args: functionArgs,
253
+ context: toolContext
254
+ });
255
+ if (functionResponse) {
256
+ break;
257
+ }
258
+ }
259
+ }
260
+ if (functionResponse == null) {
261
+ try {
262
+ functionResponse = await callToolAsync(
263
+ tool,
264
+ functionArgs,
265
+ toolContext
266
+ );
267
+ } catch (e) {
268
+ if (e instanceof Error) {
269
+ const onToolErrorResponse = await invocationContext.pluginManager.runOnToolErrorCallback(
270
+ {
271
+ tool,
272
+ toolArgs: functionArgs,
273
+ toolContext,
274
+ error: e
275
+ }
276
+ );
277
+ if (onToolErrorResponse) {
278
+ functionResponse = onToolErrorResponse;
279
+ }
280
+ } else {
281
+ import_logger.logger.error("Unknown error on tool execution type", e);
282
+ throw e;
283
+ }
284
+ }
285
+ }
286
+ let alteredFunctionResponse = await invocationContext.pluginManager.runAfterToolCallback({
287
+ tool,
288
+ toolArgs: functionArgs,
289
+ toolContext,
290
+ result: functionResponse
291
+ });
292
+ if (alteredFunctionResponse == null) {
293
+ for (const callback of afterToolCallbacks) {
294
+ alteredFunctionResponse = await callback({
295
+ tool,
296
+ args: functionArgs,
297
+ context: toolContext,
298
+ response: functionResponse
299
+ });
300
+ if (alteredFunctionResponse) {
301
+ break;
302
+ }
303
+ }
304
+ }
305
+ if (alteredFunctionResponse != null) {
306
+ functionResponse = alteredFunctionResponse;
307
+ }
308
+ if (tool.isLongRunning && !functionResponse) {
309
+ continue;
310
+ }
311
+ const functionResponseEvent = buildResponseEvent(
312
+ tool,
313
+ functionResponse,
314
+ toolContext,
315
+ invocationContext
316
+ );
317
+ import_logger.logger.debug("traceToolCall", {
318
+ tool: tool.name,
319
+ args: functionArgs,
320
+ functionResponseEvent: functionResponseEvent.id
321
+ });
322
+ functionResponseEvents.push(functionResponseEvent);
323
+ }
324
+ if (!functionResponseEvents.length) {
325
+ return null;
326
+ }
327
+ const mergedEvent = mergeParallelFunctionResponseEvents(functionResponseEvents);
328
+ if (functionResponseEvents.length > 1) {
329
+ import_logger.logger.debug("execute_tool (merged)");
330
+ import_logger.logger.debug("traceMergedToolCalls", {
331
+ responseEventId: mergedEvent.id,
332
+ functionResponseEvent: mergedEvent.id
333
+ });
334
+ }
335
+ return mergedEvent;
336
+ }
337
+ function getToolAndContext({
338
+ invocationContext,
339
+ functionCall,
340
+ toolsDict,
341
+ toolConfirmation
342
+ }) {
343
+ if (!functionCall.name || !(functionCall.name in toolsDict)) {
344
+ throw new Error(
345
+ `Function ${functionCall.name} is not found in the toolsDict.`
346
+ );
347
+ }
348
+ const toolContext = new import_tool_context.ToolContext({
349
+ invocationContext,
350
+ functionCallId: functionCall.id || void 0,
351
+ toolConfirmation
352
+ });
353
+ const tool = toolsDict[functionCall.name];
354
+ return { tool, toolContext };
355
+ }
356
+ function mergeParallelFunctionResponseEvents(functionResponseEvents) {
357
+ if (!functionResponseEvents.length) {
358
+ throw new Error("No function response events provided.");
359
+ }
360
+ if (functionResponseEvents.length === 1) {
361
+ return functionResponseEvents[0];
362
+ }
363
+ const mergedParts = [];
364
+ for (const event of functionResponseEvents) {
365
+ if (event.content && event.content.parts) {
366
+ mergedParts.push(...event.content.parts);
367
+ }
368
+ }
369
+ const baseEvent = functionResponseEvents[0];
370
+ const actionsList = functionResponseEvents.map((event) => event.actions || {});
371
+ const mergedActions = (0, import_event_actions.mergeEventActions)(actionsList);
372
+ return (0, import_event.createEvent)({
373
+ author: baseEvent.author,
374
+ branch: baseEvent.branch,
375
+ content: { role: "user", parts: mergedParts },
376
+ actions: mergedActions,
377
+ timestamp: baseEvent.timestamp
378
+ });
379
+ }
380
+ // Annotate the CommonJS export names for ESM import in node:
381
+ 0 && (module.exports = {
382
+ REQUEST_CONFIRMATION_FUNCTION_CALL_NAME,
383
+ REQUEST_EUC_FUNCTION_CALL_NAME,
384
+ functionsExportedForTestingOnly,
385
+ generateAuthEvent,
386
+ generateClientFunctionCallId,
387
+ generateRequestConfirmationEvent,
388
+ getLongRunningFunctionCalls,
389
+ handleFunctionCallList,
390
+ handleFunctionCallsAsync,
391
+ mergeParallelFunctionResponseEvents,
392
+ populateClientFunctionCallId,
393
+ removeClientFunctionCallId
394
+ });