@google/adk 2.4.0 → 2.5.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 (326) hide show
  1. package/dist/cjs/a2a/a2a_remote_agent.js +17 -2
  2. package/dist/cjs/a2a/a2a_remote_agent_utils.js +8 -4
  3. package/dist/cjs/a2a/agent_card.js +5 -81
  4. package/dist/cjs/a2a/agent_to_a2a.js +7 -0
  5. package/dist/cjs/a2a/event_converter_utils.js +10 -3
  6. package/dist/cjs/agents/agent_engine_client.js +282 -55
  7. package/dist/cjs/agents/base_agent.js +111 -68
  8. package/dist/cjs/agents/functions.js +62 -85
  9. package/dist/cjs/agents/instructions.js +7 -6
  10. package/dist/cjs/agents/invocation_context.js +2 -2
  11. package/dist/cjs/agents/llm_agent.js +105 -95
  12. package/dist/cjs/agents/processors/content_processor_utils.js +42 -15
  13. package/dist/cjs/agents/processors/content_request_processor.js +28 -11
  14. package/dist/cjs/agents/processors/context_compactor_request_processor.js +5 -1
  15. package/dist/cjs/agents/processors/instructions_llm_request_processor.js +1 -1
  16. package/dist/cjs/agents/processors/nl_planning_processor.js +2 -1
  17. package/dist/cjs/artifacts/file_artifact_service.js +1 -1
  18. package/dist/cjs/cli/cli_eval.js +884 -17
  19. package/dist/cjs/cli/utils/cleanup.js +84 -0
  20. package/dist/cjs/cli/utils/envs.js +33 -2
  21. package/dist/cjs/cli/utils/evals.js +75 -8
  22. package/dist/cjs/cli/utils/logs.js +128 -9
  23. package/dist/cjs/cli/utils/path_validation.js +83 -0
  24. package/dist/cjs/code_executors/container_code_executor.js +158 -36
  25. package/dist/cjs/common.js +50 -12
  26. package/dist/cjs/context/compaction_utils.js +19 -0
  27. package/dist/cjs/events/event.js +7 -3
  28. package/dist/cjs/features/feature_registry.js +5 -0
  29. package/dist/cjs/index.js +29 -14
  30. package/dist/cjs/models/google_llm.js +33 -2
  31. package/dist/cjs/models/interactions_utils.js +3 -0
  32. package/dist/cjs/plugins/base_plugin.js +45 -21
  33. package/dist/cjs/plugins/plugin_manager.js +27 -0
  34. package/dist/cjs/runner/runner.js +306 -189
  35. package/dist/cjs/sessions/base_session_service.js +1 -4
  36. package/dist/cjs/sessions/database_session_service.js +191 -19
  37. package/dist/cjs/sessions/db/operations.js +70 -1
  38. package/dist/cjs/sessions/db/schema.js +4 -0
  39. package/dist/cjs/sessions/in_memory_session_service.js +2 -2
  40. package/dist/cjs/sessions/vertex_ai_session_service.js +11 -3
  41. package/dist/cjs/skills/loader.js +29 -28
  42. package/dist/cjs/telemetry/api/instrumentation.js +632 -0
  43. package/dist/cjs/telemetry/api/internal/common/accumulators.js +169 -0
  44. package/dist/cjs/telemetry/api/internal/common/attributes.js +131 -0
  45. package/dist/cjs/telemetry/api/internal/common/config.js +159 -0
  46. package/dist/cjs/telemetry/api/internal/common/error.js +98 -0
  47. package/dist/cjs/telemetry/api/internal/common/finish_reason.js +63 -0
  48. package/dist/cjs/telemetry/api/internal/common/genai_messages.js +217 -0
  49. package/dist/cjs/telemetry/api/internal/common/http_exchange.js +169 -0
  50. package/dist/cjs/telemetry/api/internal/common/provider_name.js +87 -0
  51. package/dist/cjs/telemetry/api/internal/common/redaction.js +148 -0
  52. package/dist/cjs/telemetry/api/internal/common/serialization.js +58 -0
  53. package/dist/cjs/telemetry/api/internal/common/token_usage.js +118 -0
  54. package/dist/cjs/telemetry/api/internal/logs/inference.js +50 -0
  55. package/dist/cjs/telemetry/api/internal/logs/logger.js +46 -0
  56. package/dist/cjs/telemetry/api/internal/logs/mcp.js +141 -0
  57. package/dist/cjs/telemetry/api/internal/metrics/agent.js +128 -0
  58. package/dist/cjs/telemetry/api/internal/metrics/inference_start_hook.js +56 -0
  59. package/dist/cjs/telemetry/api/internal/metrics/meters.js +189 -0
  60. package/dist/cjs/telemetry/api/internal/metrics/tool.js +147 -0
  61. package/dist/cjs/telemetry/api/internal/metrics/workflow.js +132 -0
  62. package/dist/cjs/telemetry/api/internal/trace/agent.js +52 -0
  63. package/dist/cjs/telemetry/api/internal/trace/compaction.js +78 -0
  64. package/dist/cjs/telemetry/api/internal/trace/inference.js +132 -0
  65. package/dist/cjs/telemetry/api/internal/trace/live.js +52 -0
  66. package/dist/cjs/telemetry/api/internal/trace/node.js +73 -0
  67. package/dist/cjs/telemetry/api/internal/trace/propagation.js +67 -0
  68. package/dist/cjs/telemetry/api/internal/trace/tool.js +122 -0
  69. package/dist/cjs/telemetry/api/internal/trace/tracer.js +77 -0
  70. package/dist/cjs/telemetry/api/internal/trace/workflow.js +77 -0
  71. package/dist/cjs/telemetry/export/agent_engine.js +90 -0
  72. package/dist/cjs/telemetry/export/agent_runtime.js +73 -0
  73. package/dist/cjs/telemetry/export/google_cloud.js +763 -0
  74. package/dist/cjs/telemetry/export/request_driven_metric_reader.js +303 -0
  75. package/dist/cjs/telemetry/{setup.js → export/setup.js} +72 -5
  76. package/dist/cjs/tools/agent_tool.js +9 -1
  77. package/dist/cjs/tools/application_integration_tool/application_integration_toolset.js +22 -34
  78. package/dist/cjs/tools/application_integration_tool/clients/connections_client.js +60 -20
  79. package/dist/cjs/tools/application_integration_tool/clients/integration_client.js +26 -10
  80. package/dist/cjs/tools/application_integration_tool/integration_connector_tool.js +14 -23
  81. package/dist/cjs/tools/base_toolset.js +1 -1
  82. package/dist/cjs/tools/computer_use/base_computer.js +125 -0
  83. package/dist/cjs/tools/computer_use/computer_use_actions.js +502 -0
  84. package/dist/cjs/tools/computer_use/computer_use_tool.js +244 -0
  85. package/dist/cjs/tools/computer_use/computer_use_toolset.js +360 -0
  86. package/dist/cjs/tools/function_tool.js +15 -5
  87. package/dist/cjs/tools/google_api_tool/google_api_toolset.js +3 -2
  88. package/dist/cjs/tools/google_api_tool/googleapi_to_openapi_converter.js +3 -1
  89. package/dist/cjs/tools/load_artifacts_tool.js +15 -5
  90. package/dist/cjs/tools/load_memory_tool.js +2 -5
  91. package/dist/cjs/tools/mcp/mcp_session_manager.js +23 -3
  92. package/dist/cjs/tools/mcp/mcp_tool.js +7 -3
  93. package/dist/cjs/tools/mcp/mcp_toolset.js +18 -6
  94. package/dist/cjs/tools/openapi_tool/auth/auth_helpers.js +30 -29
  95. package/dist/cjs/tools/openapi_tool/auth/credential_exchangers/oauth2_exchanger.js +2 -2
  96. package/dist/cjs/tools/openapi_tool/rest_api_tool.js +45 -14
  97. package/dist/cjs/tools/skill/load_skill_resource_tool.js +7 -0
  98. package/dist/cjs/tools/skill/load_skill_tool.js +3 -0
  99. package/dist/cjs/tools/skill/run_skill_script_tool.js +12 -2
  100. package/dist/cjs/tools/toolbox_toolset.js +47 -28
  101. package/dist/cjs/utils/async_queue.js +37 -3
  102. package/dist/cjs/utils/client_labels.js +9 -11
  103. package/dist/cjs/utils/env_aware_utils.js +13 -7
  104. package/dist/cjs/utils/error_utils.js +40 -2
  105. package/dist/cjs/utils/failover_utils.js +10 -9
  106. package/dist/cjs/utils/gemini_schema_util.js +125 -12
  107. package/dist/cjs/utils/id_provider.js +63 -0
  108. package/dist/cjs/utils/model_name.js +15 -0
  109. package/dist/cjs/utils/simple_zod_to_json.js +13 -31
  110. package/dist/cjs/utils/ssrf_guard.js +46 -16
  111. package/dist/cjs/version.js +1 -1
  112. package/dist/cjs/workflow/index.js +2 -0
  113. package/dist/cjs/workflow/node_runner.js +24 -80
  114. package/dist/cjs/workflow/nodes/parallel_worker.js +18 -7
  115. package/dist/cjs/workflow/run_llm_agent_as_node.js +19 -14
  116. package/dist/cjs/workflow/utils/retry_utils.js +2 -2
  117. package/dist/cjs/workflow/workflow.js +12 -12
  118. package/dist/esm/a2a/a2a_remote_agent.js +23 -3
  119. package/dist/esm/a2a/a2a_remote_agent_utils.js +8 -4
  120. package/dist/esm/a2a/agent_card.js +5 -83
  121. package/dist/esm/a2a/agent_to_a2a.js +7 -0
  122. package/dist/esm/a2a/event_converter_utils.js +10 -3
  123. package/dist/esm/agents/agent_engine_client.js +293 -55
  124. package/dist/esm/agents/base_agent.js +111 -72
  125. package/dist/esm/agents/functions.js +67 -89
  126. package/dist/esm/agents/instructions.js +7 -6
  127. package/dist/esm/agents/invocation_context.js +2 -2
  128. package/dist/esm/agents/llm_agent.js +111 -100
  129. package/dist/esm/agents/processors/content_processor_utils.js +42 -15
  130. package/dist/esm/agents/processors/content_request_processor.js +28 -11
  131. package/dist/esm/agents/processors/context_compactor_request_processor.js +5 -1
  132. package/dist/esm/agents/processors/instructions_llm_request_processor.js +1 -1
  133. package/dist/esm/agents/processors/nl_planning_processor.js +2 -1
  134. package/dist/esm/artifacts/file_artifact_service.js +1 -1
  135. package/dist/esm/cli/cli_eval.js +880 -17
  136. package/dist/esm/cli/utils/cleanup.js +56 -0
  137. package/dist/esm/cli/utils/envs.js +33 -2
  138. package/dist/esm/cli/utils/evals.js +74 -8
  139. package/dist/esm/cli/utils/logs.js +128 -9
  140. package/dist/esm/cli/utils/path_validation.js +45 -0
  141. package/dist/esm/code_executors/container_code_executor.js +158 -36
  142. package/dist/esm/common.js +49 -6
  143. package/dist/esm/context/compaction_utils.js +19 -0
  144. package/dist/esm/events/event.js +7 -3
  145. package/dist/esm/features/feature_registry.js +5 -0
  146. package/dist/esm/index.js +27 -15
  147. package/dist/esm/models/google_llm.js +33 -2
  148. package/dist/esm/models/interactions_utils.js +3 -0
  149. package/dist/esm/plugins/base_plugin.js +45 -21
  150. package/dist/esm/plugins/plugin_manager.js +27 -0
  151. package/dist/esm/runner/runner.js +310 -192
  152. package/dist/esm/sessions/base_session_service.js +1 -4
  153. package/dist/esm/sessions/database_session_service.js +191 -19
  154. package/dist/esm/sessions/db/operations.js +70 -1
  155. package/dist/esm/sessions/db/schema.js +4 -0
  156. package/dist/esm/sessions/in_memory_session_service.js +2 -2
  157. package/dist/esm/sessions/vertex_ai_session_service.js +11 -3
  158. package/dist/esm/skills/loader.js +29 -28
  159. package/dist/esm/telemetry/api/instrumentation.js +655 -0
  160. package/dist/esm/telemetry/api/internal/common/accumulators.js +139 -0
  161. package/dist/esm/telemetry/api/internal/common/attributes.js +94 -0
  162. package/dist/esm/telemetry/api/internal/common/config.js +128 -0
  163. package/dist/esm/telemetry/api/internal/common/error.js +69 -0
  164. package/dist/esm/telemetry/api/internal/common/finish_reason.js +35 -0
  165. package/dist/esm/telemetry/api/internal/common/genai_messages.js +188 -0
  166. package/dist/esm/telemetry/api/internal/common/http_exchange.js +142 -0
  167. package/dist/esm/telemetry/api/internal/common/provider_name.js +59 -0
  168. package/dist/esm/telemetry/api/internal/common/redaction.js +121 -0
  169. package/dist/esm/telemetry/api/internal/common/serialization.js +30 -0
  170. package/dist/esm/telemetry/api/internal/common/token_usage.js +85 -0
  171. package/dist/esm/telemetry/api/internal/logs/inference.js +23 -0
  172. package/dist/esm/telemetry/api/internal/logs/logger.js +19 -0
  173. package/dist/esm/telemetry/api/internal/logs/mcp.js +113 -0
  174. package/dist/esm/telemetry/api/internal/metrics/agent.js +107 -0
  175. package/dist/esm/telemetry/api/internal/metrics/inference_start_hook.js +29 -0
  176. package/dist/esm/telemetry/api/internal/metrics/meters.js +165 -0
  177. package/dist/esm/telemetry/api/internal/metrics/tool.js +119 -0
  178. package/dist/esm/telemetry/api/internal/metrics/workflow.js +112 -0
  179. package/dist/esm/telemetry/api/internal/trace/agent.js +25 -0
  180. package/dist/esm/telemetry/api/internal/trace/compaction.js +50 -0
  181. package/dist/esm/telemetry/api/internal/trace/inference.js +107 -0
  182. package/dist/esm/telemetry/api/internal/trace/live.js +28 -0
  183. package/dist/esm/telemetry/api/internal/trace/node.js +44 -0
  184. package/dist/esm/telemetry/api/internal/trace/propagation.js +39 -0
  185. package/dist/esm/telemetry/api/internal/trace/tool.js +96 -0
  186. package/dist/esm/telemetry/api/internal/trace/tracer.js +52 -0
  187. package/dist/esm/telemetry/api/internal/trace/workflow.js +54 -0
  188. package/dist/esm/telemetry/export/agent_engine.js +67 -0
  189. package/dist/esm/telemetry/export/agent_runtime.js +46 -0
  190. package/dist/esm/telemetry/export/google_cloud.js +733 -0
  191. package/dist/esm/telemetry/export/request_driven_metric_reader.js +276 -0
  192. package/dist/esm/telemetry/export/setup.js +160 -0
  193. package/dist/esm/tools/agent_tool.js +9 -1
  194. package/dist/esm/tools/application_integration_tool/application_integration_toolset.js +23 -35
  195. package/dist/esm/tools/application_integration_tool/clients/connections_client.js +64 -21
  196. package/dist/esm/tools/application_integration_tool/clients/integration_client.js +26 -10
  197. package/dist/esm/tools/application_integration_tool/integration_connector_tool.js +14 -23
  198. package/dist/esm/tools/base_toolset.js +1 -1
  199. package/dist/esm/tools/computer_use/base_computer.js +99 -0
  200. package/dist/esm/tools/computer_use/computer_use_actions.js +477 -0
  201. package/dist/esm/tools/computer_use/computer_use_tool.js +217 -0
  202. package/dist/esm/tools/computer_use/computer_use_toolset.js +344 -0
  203. package/dist/esm/tools/function_tool.js +15 -5
  204. package/dist/esm/tools/google_api_tool/google_api_toolset.js +3 -2
  205. package/dist/esm/tools/google_api_tool/googleapi_to_openapi_converter.js +3 -1
  206. package/dist/esm/tools/load_artifacts_tool.js +15 -5
  207. package/dist/esm/tools/load_memory_tool.js +2 -5
  208. package/dist/esm/tools/mcp/mcp_session_manager.js +23 -3
  209. package/dist/esm/tools/mcp/mcp_tool.js +7 -3
  210. package/dist/esm/tools/mcp/mcp_toolset.js +18 -6
  211. package/dist/esm/tools/openapi_tool/auth/auth_helpers.js +27 -26
  212. package/dist/esm/tools/openapi_tool/auth/credential_exchangers/oauth2_exchanger.js +2 -2
  213. package/dist/esm/tools/openapi_tool/rest_api_tool.js +45 -14
  214. package/dist/esm/tools/skill/load_skill_resource_tool.js +7 -0
  215. package/dist/esm/tools/skill/load_skill_tool.js +3 -0
  216. package/dist/esm/tools/skill/run_skill_script_tool.js +12 -2
  217. package/dist/esm/tools/toolbox_toolset.js +47 -28
  218. package/dist/esm/utils/async_queue.js +37 -3
  219. package/dist/esm/utils/client_labels.js +9 -11
  220. package/dist/esm/utils/env_aware_utils.js +12 -7
  221. package/dist/esm/utils/error_utils.js +37 -1
  222. package/dist/esm/utils/failover_utils.js +10 -9
  223. package/dist/esm/utils/gemini_schema_util.js +124 -11
  224. package/dist/esm/utils/id_provider.js +33 -0
  225. package/dist/esm/utils/model_name.js +14 -0
  226. package/dist/esm/utils/simple_zod_to_json.js +13 -31
  227. package/dist/esm/utils/ssrf_guard.js +55 -15
  228. package/dist/esm/version.js +1 -1
  229. package/dist/esm/workflow/index.js +2 -1
  230. package/dist/esm/workflow/node_runner.js +26 -80
  231. package/dist/esm/workflow/nodes/parallel_worker.js +16 -6
  232. package/dist/esm/workflow/run_llm_agent_as_node.js +19 -14
  233. package/dist/esm/workflow/utils/retry_utils.js +2 -2
  234. package/dist/esm/workflow/workflow.js +12 -12
  235. package/dist/types/a2a/a2a_remote_agent.d.ts +6 -0
  236. package/dist/types/a2a/a2a_remote_agent_utils.d.ts +3 -2
  237. package/dist/types/agents/agent_engine_client.d.ts +121 -3
  238. package/dist/types/agents/base_agent.d.ts +2 -0
  239. package/dist/types/agents/processors/content_processor_utils.d.ts +9 -9
  240. package/dist/types/agents/run_config.d.ts +14 -0
  241. package/dist/types/cli/cli_eval.d.ts +172 -9
  242. package/dist/types/cli/utils/cleanup.d.ts +18 -0
  243. package/dist/types/cli/utils/envs.d.ts +13 -3
  244. package/dist/types/cli/utils/evals.d.ts +64 -1
  245. package/dist/types/cli/utils/logs.d.ts +19 -2
  246. package/dist/types/cli/utils/path_validation.d.ts +30 -0
  247. package/dist/types/code_executors/container_code_executor.d.ts +49 -8
  248. package/dist/types/common.d.ts +16 -9
  249. package/dist/types/context/compaction_utils.d.ts +13 -1
  250. package/dist/types/events/event.d.ts +3 -0
  251. package/dist/types/features/feature_registry.d.ts +1 -0
  252. package/dist/types/index.d.ts +9 -6
  253. package/dist/types/plugins/base_plugin.d.ts +50 -21
  254. package/dist/types/plugins/plugin_manager.d.ts +13 -0
  255. package/dist/types/runner/runner.d.ts +11 -0
  256. package/dist/types/sessions/base_session_service.d.ts +0 -2
  257. package/dist/types/sessions/db/operations.d.ts +2 -1
  258. package/dist/types/sessions/db/schema.d.ts +5 -3
  259. package/dist/types/telemetry/api/instrumentation.d.ts +259 -0
  260. package/dist/types/telemetry/api/internal/common/accumulators.d.ts +91 -0
  261. package/dist/types/telemetry/api/internal/common/attributes.d.ts +90 -0
  262. package/dist/types/telemetry/api/internal/common/config.d.ts +61 -0
  263. package/dist/types/telemetry/api/internal/common/error.d.ts +29 -0
  264. package/dist/types/telemetry/api/internal/common/finish_reason.d.ts +18 -0
  265. package/dist/types/telemetry/api/internal/common/genai_messages.d.ts +26 -0
  266. package/dist/types/telemetry/api/internal/common/http_exchange.d.ts +50 -0
  267. package/dist/types/telemetry/api/internal/common/provider_name.d.ts +16 -0
  268. package/dist/types/telemetry/api/internal/common/redaction.d.ts +14 -0
  269. package/dist/types/telemetry/api/internal/common/serialization.d.ts +18 -0
  270. package/dist/types/telemetry/api/internal/common/token_usage.d.ts +47 -0
  271. package/dist/types/telemetry/api/internal/logs/inference.d.ts +15 -0
  272. package/dist/types/telemetry/api/internal/logs/logger.d.ts +13 -0
  273. package/dist/types/telemetry/api/internal/logs/mcp.d.ts +31 -0
  274. package/dist/types/telemetry/api/internal/metrics/agent.d.ts +28 -0
  275. package/dist/types/telemetry/api/internal/metrics/inference_start_hook.d.ts +12 -0
  276. package/dist/types/telemetry/api/internal/metrics/meters.d.ts +57 -0
  277. package/dist/types/telemetry/api/internal/metrics/tool.d.ts +44 -0
  278. package/dist/types/telemetry/api/internal/metrics/workflow.d.ts +32 -0
  279. package/dist/types/telemetry/api/internal/trace/agent.d.ts +14 -0
  280. package/dist/types/telemetry/api/internal/trace/compaction.d.ts +20 -0
  281. package/dist/types/telemetry/api/internal/trace/inference.d.ts +31 -0
  282. package/dist/types/telemetry/api/internal/trace/live.d.ts +21 -0
  283. package/dist/types/telemetry/api/internal/trace/node.d.ts +22 -0
  284. package/dist/types/telemetry/api/internal/trace/propagation.d.ts +22 -0
  285. package/dist/types/telemetry/api/internal/trace/tool.d.ts +57 -0
  286. package/dist/types/telemetry/api/internal/trace/tracer.d.ts +31 -0
  287. package/dist/types/telemetry/api/internal/trace/workflow.d.ts +21 -0
  288. package/dist/types/telemetry/export/agent_engine.d.ts +23 -0
  289. package/dist/types/telemetry/export/agent_runtime.d.ts +40 -0
  290. package/dist/types/telemetry/export/google_cloud.d.ts +189 -0
  291. package/dist/types/telemetry/export/request_driven_metric_reader.d.ts +144 -0
  292. package/dist/types/telemetry/{setup.d.ts → export/setup.d.ts} +3 -0
  293. package/dist/types/tools/agent_tool.d.ts +1 -1
  294. package/dist/types/tools/application_integration_tool/clients/connections_client.d.ts +13 -4
  295. package/dist/types/tools/base_toolset.d.ts +1 -1
  296. package/dist/types/tools/computer_use/base_computer.d.ts +281 -0
  297. package/dist/types/tools/computer_use/computer_use_actions.d.ts +53 -0
  298. package/dist/types/tools/computer_use/computer_use_tool.d.ts +108 -0
  299. package/dist/types/tools/computer_use/computer_use_toolset.d.ts +132 -0
  300. package/dist/types/tools/google_api_tool/google_api_toolset.d.ts +2 -0
  301. package/dist/types/tools/load_artifacts_tool.d.ts +5 -1
  302. package/dist/types/tools/load_memory_tool.d.ts +13 -7
  303. package/dist/types/tools/mcp/mcp_session_manager.d.ts +16 -0
  304. package/dist/types/tools/openapi_tool/auth/auth_helpers.d.ts +8 -8
  305. package/dist/types/tools/openapi_tool/openapi_spec_parser/operation_parser.d.ts +7 -3
  306. package/dist/types/tools/toolbox_toolset.d.ts +15 -20
  307. package/dist/types/utils/async_queue.d.ts +14 -0
  308. package/dist/types/utils/env_aware_utils.d.ts +11 -0
  309. package/dist/types/utils/error_utils.d.ts +4 -0
  310. package/dist/types/utils/gemini_schema_util.d.ts +27 -6
  311. package/dist/types/utils/id_provider.d.ts +43 -0
  312. package/dist/types/utils/model_name.d.ts +8 -0
  313. package/dist/types/utils/ssrf_guard.d.ts +2 -0
  314. package/dist/types/version.d.ts +1 -1
  315. package/dist/types/workflow/index.d.ts +1 -1
  316. package/dist/types/workflow/nodes/parallel_worker.d.ts +8 -1
  317. package/dist/web/index_web.js +86 -88
  318. package/dist/web/index_web.js.map +4 -4
  319. package/package.json +13 -15
  320. package/dist/cjs/telemetry/google_cloud.js +0 -116
  321. package/dist/cjs/telemetry/tracing.js +0 -393
  322. package/dist/esm/telemetry/google_cloud.js +0 -99
  323. package/dist/esm/telemetry/setup.js +0 -88
  324. package/dist/esm/telemetry/tracing.js +0 -361
  325. package/dist/types/telemetry/google_cloud.d.ts +0 -9
  326. package/dist/types/telemetry/tracing.d.ts +0 -143
@@ -33,7 +33,6 @@ __export(runner_exports, {
33
33
  });
34
34
  module.exports = __toCommonJS(runner_exports);
35
35
  var import_genai = require("@google/genai");
36
- var import_api = require("@opentelemetry/api");
37
36
  var import_base_agent = require("../agents/base_agent.js");
38
37
  var import_framework_function_calls = require("../agents/framework_function_calls.js");
39
38
  var import_functions = require("../agents/functions.js");
@@ -48,11 +47,13 @@ var import_event = require("../events/event.js");
48
47
  var import_event_actions = require("../events/event_actions.js");
49
48
  var import_internal_metadata = require("../events/internal_metadata.js");
50
49
  var import_plugin_manager = require("../plugins/plugin_manager.js");
51
- var import_tracing = require("../telemetry/tracing.js");
50
+ var import_instrumentation = require("../telemetry/api/instrumentation.js");
52
51
  var import_base_toolset = require("../tools/base_toolset.js");
52
+ var import_error_utils = require("../utils/error_utils.js");
53
53
  var import_logger = require("../utils/logger.js");
54
54
  var import_model_name = require("../utils/model_name.js");
55
55
  var import_redact_inline_data = require("../utils/redact_inline_data.js");
56
+ var import_workflow = require("../workflow/index.js");
56
57
  var import_run_node_as_invocation = require("../workflow/run_node_as_invocation.js");
57
58
  /**
58
59
  * @license
@@ -60,6 +61,10 @@ var import_run_node_as_invocation = require("../workflow/run_node_as_invocation.
60
61
  * SPDX-License-Identifier: Apache-2.0
61
62
  */
62
63
  var _a;
64
+ const TOOLSET_CLEANUP_TIMEOUT_MS = 1e4;
65
+ const TOOLSET_CLEANUP_TIMEOUT_SYMBOL = /* @__PURE__ */ Symbol(
66
+ "google.adk.runner.toolsetCleanupTimeout"
67
+ );
63
68
  const RUNNER_SIGNATURE_SYMBOL = /* @__PURE__ */ Symbol.for("google.adk.runner");
64
69
  function isRunner(obj) {
65
70
  return typeof obj === "object" && obj !== null && RUNNER_SIGNATURE_SYMBOL in obj && obj[RUNNER_SIGNATURE_SYMBOL] === true;
@@ -159,59 +164,57 @@ const _Runner = class _Runner {
159
164
  newMessage.role = "user";
160
165
  }
161
166
  rejectReservedFunctionCalls(newMessage);
162
- const span = import_tracing.tracer.startSpan("invocation");
163
- const ctx = import_api.trace.setSpan(import_api.context.active(), span);
167
+ const runnerCtx = this;
164
168
  try {
165
- yield* (0, import_tracing.runAsyncGeneratorWithOtelContext)(
166
- ctx,
167
- this,
169
+ yield* (0, import_instrumentation.recordInvocation)(
170
+ { entrypoint: this.agent, sessionId, runConfig },
168
171
  async function* () {
169
- var _a2, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l;
170
- const session = await this.resolveSession(userId, sessionId);
172
+ var _a2, _b, _c, _d, _e;
173
+ const session = await runnerCtx.resolveSession(userId, sessionId);
171
174
  if ((_a2 = params.abortSignal) == null ? void 0 : _a2.aborted) {
172
175
  return;
173
176
  }
174
177
  if (!session) {
175
- if (!this.appName) {
178
+ if (!runnerCtx.appName) {
176
179
  throw new Error(
177
180
  `Session lookup failed: appName must be provided in runner constructor (or via app.name)`
178
181
  );
179
182
  }
180
183
  throw new Error(
181
- `Session not found: ${sessionId} (appName=${this.appName}, userId=${userId})`
184
+ `Session not found: ${sessionId} (appName=${runnerCtx.appName}, userId=${userId})`
182
185
  );
183
186
  }
184
- if (runConfig.supportCfc && (0, import_llm_agent.isLlmAgent)(this.agent)) {
185
- const modelName = this.agent.canonicalModel.model;
187
+ if (runConfig.supportCfc && (0, import_llm_agent.isLlmAgent)(runnerCtx.agent)) {
188
+ const modelName = runnerCtx.agent.canonicalModel.model;
186
189
  if (!(0, import_model_name.isGemini2OrAbove)(modelName)) {
187
190
  throw new Error(
188
- `CFC is not supported for model: ${modelName} in agent: ${this.agent.name}`
191
+ `CFC is not supported for model: ${modelName} in agent: ${runnerCtx.agent.name}`
189
192
  );
190
193
  }
191
- if (!(0, import_built_in_code_executor.isBuiltInCodeExecutor)(this.agent.codeExecutor)) {
192
- this.agent.codeExecutor = new import_built_in_code_executor.BuiltInCodeExecutor();
194
+ if (!(0, import_built_in_code_executor.isBuiltInCodeExecutor)(runnerCtx.agent.codeExecutor)) {
195
+ runnerCtx.agent.codeExecutor = new import_built_in_code_executor.BuiltInCodeExecutor();
193
196
  }
194
197
  }
195
198
  const invocationContext = new import_invocation_context.InvocationContext({
196
- artifactService: this.artifactService ? (0, import_session_artifact_service.isSessionArtifactService)(this.artifactService) ? this.artifactService : new import_scoped_artifact_service.ScopedArtifactService(
197
- this.artifactService,
198
- this.appName,
199
+ artifactService: runnerCtx.artifactService ? (0, import_session_artifact_service.isSessionArtifactService)(runnerCtx.artifactService) ? runnerCtx.artifactService : new import_scoped_artifact_service.ScopedArtifactService(
200
+ runnerCtx.artifactService,
201
+ runnerCtx.appName,
199
202
  userId,
200
203
  sessionId
201
204
  ) : void 0,
202
- sessionService: this.sessionService,
203
- memoryService: this.memoryService,
204
- credentialService: this.credentialService,
205
+ sessionService: runnerCtx.sessionService,
206
+ memoryService: runnerCtx.memoryService,
207
+ credentialService: runnerCtx.credentialService,
205
208
  invocationId: (0, import_invocation_context.newInvocationContextId)(),
206
- agent: (0, import_base_agent.isBaseAgent)(this.agent) ? this.agent : void 0,
209
+ agent: (0, import_base_agent.isBaseAgent)(runnerCtx.agent) ? runnerCtx.agent : void 0,
207
210
  session,
208
211
  userContent: newMessage,
209
212
  runConfig,
210
213
  a2aMetadata: runConfig.a2aMetadata,
211
- pluginManager: this.pluginManager,
214
+ pluginManager: runnerCtx.pluginManager,
212
215
  abortSignal: params.abortSignal
213
216
  });
214
- const pluginUserMessage = await this.pluginManager.runOnUserMessageCallback({
217
+ const pluginUserMessage = await runnerCtx.pluginManager.runOnUserMessageCallback({
215
218
  userMessage: newMessage,
216
219
  invocationContext
217
220
  });
@@ -226,7 +229,7 @@ const _Runner = class _Runner {
226
229
  throw new Error("No parts in the newMessage.");
227
230
  }
228
231
  if (runConfig.saveInputBlobsAsArtifacts) {
229
- newMessage = await this.saveArtifacts(
232
+ newMessage = await runnerCtx.saveArtifacts(
230
233
  invocationContext.artifactService,
231
234
  invocationContext.invocationId,
232
235
  newMessage
@@ -235,7 +238,7 @@ const _Runner = class _Runner {
235
238
  return;
236
239
  }
237
240
  }
238
- await this.sessionService.appendEvent({
241
+ await runnerCtx.sessionService.appendEvent({
239
242
  session,
240
243
  event: (0, import_event.createEvent)({
241
244
  invocationId: invocationContext.invocationId,
@@ -250,83 +253,137 @@ const _Runner = class _Runner {
250
253
  return;
251
254
  }
252
255
  }
253
- if ((0, import_base_agent.isBaseAgent)(this.agent)) {
254
- invocationContext.agent = this.determineAgentForResumption(
256
+ if ((0, import_base_agent.isBaseAgent)(runnerCtx.agent)) {
257
+ invocationContext.agent = runnerCtx.determineAgentForResumption(
255
258
  session,
256
- this.agent
259
+ runnerCtx.agent
257
260
  );
258
261
  }
259
262
  if (newMessage) {
260
- const beforeRunCallbackResponse = await this.pluginManager.runBeforeRunCallback({
261
- invocationContext
262
- });
263
- if ((_f = params.abortSignal) == null ? void 0 : _f.aborted) {
264
- return;
265
- }
266
- if (beforeRunCallbackResponse) {
267
- const earlyExitEvent = (0, import_event.createEvent)({
268
- invocationId: invocationContext.invocationId,
269
- author: "model",
270
- content: beforeRunCallbackResponse
271
- });
272
- await this.sessionService.appendEvent({
273
- session,
274
- event: earlyExitEvent
275
- });
276
- if ((_g = params.abortSignal) == null ? void 0 : _g.aborted) {
277
- return;
278
- }
279
- yield earlyExitEvent;
280
- } else {
281
- let abortSealed = false;
282
- const sealAbortedInvocation = /* @__PURE__ */ __name(() => {
283
- abortSealed = true;
284
- return this.synthesizeAbortEvents(invocationContext);
285
- }, "sealAbortedInvocation");
286
- try {
287
- for await (const event of this.runRoot(invocationContext)) {
288
- if ((_h = params.abortSignal) == null ? void 0 : _h.aborted) {
289
- break;
290
- }
291
- const outputEvent = await this.processAndAppendEvent(
292
- invocationContext,
293
- event
294
- );
295
- if ((_i = params.abortSignal) == null ? void 0 : _i.aborted) {
296
- break;
297
- }
298
- yield outputEvent;
299
- }
300
- if ((_j = params.abortSignal) == null ? void 0 : _j.aborted) {
301
- for (const abortEvent of await sealAbortedInvocation()) {
302
- yield abortEvent;
303
- }
304
- return;
305
- }
306
- } finally {
307
- if (((_k = params.abortSignal) == null ? void 0 : _k.aborted) && !abortSealed) {
308
- try {
309
- await sealAbortedInvocation();
310
- } catch (e) {
311
- import_logger.logger.error(
312
- `Failed to seal aborted invocation ${invocationContext.invocationId}.`,
313
- e
314
- );
315
- }
316
- }
317
- }
318
- await this.pluginManager.runAfterRunCallback({ invocationContext });
319
- if ((_l = params.abortSignal) == null ? void 0 : _l.aborted) {
320
- return;
321
- }
322
- }
263
+ yield* runnerCtx.runWithPluginLifecycle(
264
+ invocationContext,
265
+ () => runnerCtx.runAsyncWithPlugins(invocationContext)
266
+ );
323
267
  }
324
268
  }
325
269
  );
326
270
  } finally {
327
- span.end();
328
- const toolsets = (0, import_base_agent.isBaseAgent)(this.agent) ? getAllToolsets(this.agent) : [];
329
- await Promise.allSettled(toolsets.map((t) => t.close()));
271
+ await this.close();
272
+ }
273
+ }
274
+ /**
275
+ * Closes the runner and cleans up all toolsets reachable from the root agent
276
+ * or workflow.
277
+ */
278
+ async close() {
279
+ await cleanupToolsets(collectToolsets(this.agent));
280
+ }
281
+ async *runAsyncWithPlugins(invocationContext) {
282
+ var _a2, _b, _c, _d, _e, _f;
283
+ const beforeRunCallbackResponse = await this.pluginManager.runBeforeRunCallback({
284
+ invocationContext
285
+ });
286
+ if ((_a2 = invocationContext.abortSignal) == null ? void 0 : _a2.aborted) {
287
+ return;
288
+ }
289
+ if (beforeRunCallbackResponse) {
290
+ const earlyExitEvent = (0, import_event.createEvent)({
291
+ invocationId: invocationContext.invocationId,
292
+ author: "model",
293
+ content: beforeRunCallbackResponse
294
+ });
295
+ await this.sessionService.appendEvent({
296
+ session: invocationContext.session,
297
+ event: earlyExitEvent
298
+ });
299
+ if ((_b = invocationContext.abortSignal) == null ? void 0 : _b.aborted) {
300
+ return;
301
+ }
302
+ yield earlyExitEvent;
303
+ } else {
304
+ let abortSealed = false;
305
+ const sealAbortedInvocation = /* @__PURE__ */ __name(() => {
306
+ abortSealed = true;
307
+ return this.synthesizeAbortEvents(invocationContext);
308
+ }, "sealAbortedInvocation");
309
+ try {
310
+ for await (const event of this.runRoot(invocationContext)) {
311
+ if ((_c = invocationContext.abortSignal) == null ? void 0 : _c.aborted) {
312
+ break;
313
+ }
314
+ const outputEvent = await this.processAndAppendEvent(
315
+ invocationContext,
316
+ event
317
+ );
318
+ if ((_d = invocationContext.abortSignal) == null ? void 0 : _d.aborted) {
319
+ break;
320
+ }
321
+ yield outputEvent;
322
+ }
323
+ if ((_e = invocationContext.abortSignal) == null ? void 0 : _e.aborted) {
324
+ for (const abortEvent of await sealAbortedInvocation()) {
325
+ yield abortEvent;
326
+ }
327
+ return;
328
+ }
329
+ } finally {
330
+ if (((_f = invocationContext.abortSignal) == null ? void 0 : _f.aborted) && !abortSealed) {
331
+ try {
332
+ await sealAbortedInvocation();
333
+ } catch (e) {
334
+ import_logger.logger.error(
335
+ `Failed to seal aborted invocation ${invocationContext.invocationId}.`,
336
+ e
337
+ );
338
+ }
339
+ }
340
+ }
341
+ }
342
+ }
343
+ /** Finalizes a started run, including when its consumer closes the iterator. */
344
+ async *runWithPluginLifecycle(invocationContext, execute) {
345
+ let failed = false;
346
+ let completed = false;
347
+ try {
348
+ yield* execute();
349
+ completed = true;
350
+ } catch (error) {
351
+ if (!(0, import_error_utils.isInvocationCancellation)(error, invocationContext.abortSignal)) {
352
+ failed = true;
353
+ await this.notifyRunError(invocationContext, error);
354
+ }
355
+ throw error;
356
+ } finally {
357
+ if (!failed) {
358
+ await this.finishRun(invocationContext, !completed);
359
+ }
360
+ }
361
+ }
362
+ async finishRun(invocationContext, closingEarly) {
363
+ try {
364
+ await this.pluginManager.runAfterRunCallback({ invocationContext });
365
+ } catch (error) {
366
+ await this.notifyRunError(invocationContext, error);
367
+ if (!closingEarly) {
368
+ throw error;
369
+ }
370
+ import_logger.logger.error(
371
+ `afterRunCallback failed while closing invocation ${invocationContext.invocationId}.`,
372
+ error
373
+ );
374
+ }
375
+ }
376
+ async notifyRunError(invocationContext, error) {
377
+ try {
378
+ await this.pluginManager.runOnRunErrorCallback({
379
+ invocationContext,
380
+ error: (0, import_error_utils.toError)(error)
381
+ });
382
+ } catch (callbackError) {
383
+ import_logger.logger.error(
384
+ "Run error notification failed; preserving the original error.",
385
+ callbackError
386
+ );
330
387
  }
331
388
  }
332
389
  /**
@@ -517,6 +574,7 @@ const _Runner = class _Runner {
517
574
  throw new Error("runLive is only supported for agents.");
518
575
  }
519
576
  const agent = this.agent;
577
+ const { sessionId } = params;
520
578
  const runConfig = (0, import_run_config.createRunConfig)(params.runConfig);
521
579
  if (!((_a2 = runConfig.responseModalities) == null ? void 0 : _a2.length)) {
522
580
  runConfig.responseModalities = [import_genai.Modality.AUDIO];
@@ -527,92 +585,92 @@ const _Runner = class _Runner {
527
585
  }
528
586
  (_d = runConfig.inputAudioTranscription) != null ? _d : runConfig.inputAudioTranscription = {};
529
587
  }
530
- const span = import_tracing.tracer.startSpan("invocation");
531
- const ctx = import_api.trace.setSpan(import_api.context.active(), span);
532
- try {
533
- yield* (0, import_tracing.runAsyncGeneratorWithOtelContext)(
534
- ctx,
535
- this,
536
- async function* () {
537
- var _a3, _b2, _c2, _d2;
538
- const session = await this.sessionService.getOrCreateSession({
539
- appName: this.appName,
540
- userId: params.userId,
541
- sessionId: params.sessionId
542
- });
543
- if ((_a3 = params.abortSignal) == null ? void 0 : _a3.aborted) {
544
- return;
545
- }
546
- const invocationContext = new import_invocation_context.InvocationContext({
547
- artifactService: this.artifactService ? (0, import_session_artifact_service.isSessionArtifactService)(this.artifactService) ? this.artifactService : new import_scoped_artifact_service.ScopedArtifactService(
548
- this.artifactService,
549
- this.appName,
550
- params.userId,
551
- params.sessionId
552
- ) : void 0,
553
- sessionService: this.sessionService,
554
- memoryService: this.memoryService,
555
- credentialService: this.credentialService,
556
- invocationId: (0, import_invocation_context.newInvocationContextId)(),
557
- agent,
558
- session,
559
- runConfig,
560
- a2aMetadata: runConfig.a2aMetadata,
561
- pluginManager: this.pluginManager,
562
- liveRequestQueue: params.liveRequestQueue,
563
- abortSignal: params.abortSignal,
564
- liveSessionResumptionHandle: params.liveSessionResumptionHandle
565
- });
566
- invocationContext.agent = this.determineAgentForResumption(
567
- session,
568
- agent
569
- );
570
- const beforeRunCallbackResponse = await this.pluginManager.runBeforeRunCallback({
571
- invocationContext
572
- });
573
- if ((_b2 = params.abortSignal) == null ? void 0 : _b2.aborted) {
574
- return;
575
- }
576
- if (beforeRunCallbackResponse) {
577
- const earlyExitEvent = (0, import_event.createEvent)({
578
- invocationId: invocationContext.invocationId,
579
- author: "model",
580
- content: beforeRunCallbackResponse
581
- });
582
- await this.sessionService.appendEvent({
583
- session,
584
- event: earlyExitEvent
585
- });
586
- yield earlyExitEvent;
587
- return;
588
- }
589
- for await (const event of (0, import_invocation_context.requireAgent)(invocationContext).runLive(
590
- invocationContext
591
- )) {
592
- if ((_c2 = params.abortSignal) == null ? void 0 : _c2.aborted) {
593
- return;
594
- }
595
- const modifiedEvent = await this.pluginManager.runOnEventCallback({
596
- invocationContext,
597
- event
598
- });
599
- if ((_d2 = params.abortSignal) == null ? void 0 : _d2.aborted) {
600
- return;
601
- }
602
- const eventToProcess = modifiedEvent ? withInternalMetadataOf(event, modifiedEvent) : event;
603
- if (!eventToProcess.partial && !isLiveModelMediaEventWithInlineData(eventToProcess)) {
604
- await this.sessionService.appendEvent({
605
- session,
606
- event: eventToProcess
607
- });
608
- }
609
- yield eventToProcess;
610
- }
611
- await this.pluginManager.runAfterRunCallback({ invocationContext });
588
+ const runnerCtx = this;
589
+ yield* (0, import_instrumentation.recordInvocation)(
590
+ { entrypoint: agent, sessionId, runConfig },
591
+ async function* () {
592
+ var _a3;
593
+ const session = await runnerCtx.sessionService.getOrCreateSession({
594
+ appName: runnerCtx.appName,
595
+ userId: params.userId,
596
+ sessionId: params.sessionId
597
+ });
598
+ if ((_a3 = params.abortSignal) == null ? void 0 : _a3.aborted) {
599
+ return;
612
600
  }
613
- );
614
- } finally {
615
- span.end();
601
+ const invocationContext = new import_invocation_context.InvocationContext({
602
+ artifactService: runnerCtx.artifactService ? (0, import_session_artifact_service.isSessionArtifactService)(runnerCtx.artifactService) ? runnerCtx.artifactService : new import_scoped_artifact_service.ScopedArtifactService(
603
+ runnerCtx.artifactService,
604
+ runnerCtx.appName,
605
+ params.userId,
606
+ params.sessionId
607
+ ) : void 0,
608
+ sessionService: runnerCtx.sessionService,
609
+ memoryService: runnerCtx.memoryService,
610
+ credentialService: runnerCtx.credentialService,
611
+ invocationId: (0, import_invocation_context.newInvocationContextId)(),
612
+ agent,
613
+ session,
614
+ runConfig,
615
+ a2aMetadata: runConfig.a2aMetadata,
616
+ pluginManager: runnerCtx.pluginManager,
617
+ liveRequestQueue: params.liveRequestQueue,
618
+ abortSignal: params.abortSignal,
619
+ liveSessionResumptionHandle: params.liveSessionResumptionHandle
620
+ });
621
+ invocationContext.agent = runnerCtx.determineAgentForResumption(
622
+ session,
623
+ agent
624
+ );
625
+ yield* runnerCtx.runWithPluginLifecycle(
626
+ invocationContext,
627
+ () => runnerCtx.runLiveWithPlugins(invocationContext)
628
+ );
629
+ }
630
+ );
631
+ }
632
+ async *runLiveWithPlugins(invocationContext) {
633
+ var _a2, _b, _c;
634
+ const beforeRunCallbackResponse = await this.pluginManager.runBeforeRunCallback({
635
+ invocationContext
636
+ });
637
+ if ((_a2 = invocationContext.abortSignal) == null ? void 0 : _a2.aborted) {
638
+ return;
639
+ }
640
+ if (beforeRunCallbackResponse) {
641
+ const earlyExitEvent = (0, import_event.createEvent)({
642
+ invocationId: invocationContext.invocationId,
643
+ author: "model",
644
+ content: beforeRunCallbackResponse
645
+ });
646
+ await this.sessionService.appendEvent({
647
+ session: invocationContext.session,
648
+ event: earlyExitEvent
649
+ });
650
+ yield earlyExitEvent;
651
+ return;
652
+ }
653
+ for await (const event of (0, import_invocation_context.requireAgent)(invocationContext).runLive(
654
+ invocationContext
655
+ )) {
656
+ if ((_b = invocationContext.abortSignal) == null ? void 0 : _b.aborted) {
657
+ return;
658
+ }
659
+ const modifiedEvent = await this.pluginManager.runOnEventCallback({
660
+ invocationContext,
661
+ event
662
+ });
663
+ if ((_c = invocationContext.abortSignal) == null ? void 0 : _c.aborted) {
664
+ return;
665
+ }
666
+ const eventToProcess = modifiedEvent ? withInternalMetadataOf(event, modifiedEvent) : event;
667
+ if (!eventToProcess.partial && !isLiveModelMediaEventWithInlineData(eventToProcess)) {
668
+ await this.sessionService.appendEvent({
669
+ session: invocationContext.session,
670
+ event: eventToProcess
671
+ });
672
+ }
673
+ yield eventToProcess;
616
674
  }
617
675
  }
618
676
  };
@@ -715,28 +773,87 @@ function findEventByLastFunctionResponseId(events) {
715
773
  return (_a2 = (0, import_functions.findMatchingFunctionCall)(events)) != null ? _a2 : null;
716
774
  }
717
775
  __name(findEventByLastFunctionResponseId, "findEventByLastFunctionResponseId");
718
- function getAllToolsets(agent) {
719
- const toolsets = [];
776
+ function collectToolsets(root) {
777
+ const toolsets = /* @__PURE__ */ new Set();
720
778
  const visited = /* @__PURE__ */ new Set();
721
779
  function traverse(curr) {
722
- if (visited.has(curr)) return;
780
+ if (visited.has(curr)) {
781
+ return;
782
+ }
723
783
  visited.add(curr);
724
784
  if ((0, import_llm_agent.isLlmAgent)(curr)) {
725
785
  for (const tool of curr.tools) {
726
786
  if ((0, import_base_toolset.isBaseToolset)(tool)) {
727
- toolsets.push(tool);
787
+ toolsets.add(tool);
728
788
  }
729
789
  }
730
790
  }
731
- for (const sub of curr.subAgents) {
732
- traverse(sub);
791
+ if ((0, import_base_agent.isBaseAgent)(curr)) {
792
+ for (const sub of curr.subAgents) {
793
+ traverse(sub);
794
+ }
795
+ }
796
+ if ((0, import_workflow.isWorkflow)(curr) && curr.graph) {
797
+ for (const node of curr.graph.nodes) {
798
+ traverse(node);
799
+ }
800
+ }
801
+ if ((0, import_workflow.isParallelWorker)(curr)) {
802
+ traverse(curr.inner);
733
803
  }
734
804
  }
735
805
  __name(traverse, "traverse");
736
- traverse(agent);
806
+ traverse(root);
737
807
  return toolsets;
738
808
  }
739
- __name(getAllToolsets, "getAllToolsets");
809
+ __name(collectToolsets, "collectToolsets");
810
+ function formatToolsetCloseError(err) {
811
+ const formatted = (0, import_error_utils.formatError)(err);
812
+ if (formatted !== "[object Object]") {
813
+ return formatted;
814
+ }
815
+ try {
816
+ return JSON.stringify(err);
817
+ } catch {
818
+ return formatted;
819
+ }
820
+ }
821
+ __name(formatToolsetCloseError, "formatToolsetCloseError");
822
+ async function cleanupToolsets(toolsets) {
823
+ await Promise.allSettled(
824
+ [...toolsets].map(async (toolset) => {
825
+ var _a2;
826
+ const toolsetName = ((_a2 = toolset.constructor) == null ? void 0 : _a2.name) || "BaseToolset";
827
+ let timeoutId;
828
+ try {
829
+ import_logger.logger.debug(`Closing toolset: ${toolsetName}`);
830
+ const result = await Promise.race([
831
+ toolset.close().then(() => void 0),
832
+ new Promise((resolve) => {
833
+ timeoutId = setTimeout(
834
+ () => resolve(TOOLSET_CLEANUP_TIMEOUT_SYMBOL),
835
+ TOOLSET_CLEANUP_TIMEOUT_MS
836
+ );
837
+ })
838
+ ]);
839
+ if (result === TOOLSET_CLEANUP_TIMEOUT_SYMBOL) {
840
+ import_logger.logger.warn(`Toolset ${toolsetName} cleanup timed out`);
841
+ } else {
842
+ import_logger.logger.debug(`Successfully closed toolset: ${toolsetName}`);
843
+ }
844
+ } catch (e) {
845
+ import_logger.logger.error(
846
+ `Error closing toolset ${toolsetName}: ${formatToolsetCloseError(e)}`
847
+ );
848
+ } finally {
849
+ if (timeoutId !== void 0) {
850
+ clearTimeout(timeoutId);
851
+ }
852
+ }
853
+ })
854
+ );
855
+ }
856
+ __name(cleanupToolsets, "cleanupToolsets");
740
857
  function rejectReservedFunctionCalls(newMessage) {
741
858
  const reserved = (0, import_framework_function_calls.reservedFunctionCallName)(newMessage);
742
859
  if (reserved) {
@@ -71,8 +71,8 @@ const _BaseSessionService = class _BaseSessionService {
71
71
  if (event.partial) {
72
72
  return event;
73
73
  }
74
- event = trimTempDeltaState(event);
75
74
  this.updateSessionState({ session, event });
75
+ event = trimTempDeltaState(event);
76
76
  upsertSessionEvent(session, event);
77
77
  return event;
78
78
  }
@@ -86,9 +86,6 @@ const _BaseSessionService = class _BaseSessionService {
86
86
  return;
87
87
  }
88
88
  for (const [key, value] of Object.entries(event.actions.stateDelta)) {
89
- if (key.startsWith(import_state.State.TEMP_PREFIX)) {
90
- continue;
91
- }
92
89
  if (!(0, import_state_write_order.shouldApplyDeltaWrite)(session.state, event.actions.stateDelta, key)) {
93
90
  continue;
94
91
  }