@google/adk 1.5.0 → 2.0.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 (796) hide show
  1. package/dist/cjs/a2a/a2a_event.js +18 -0
  2. package/dist/cjs/a2a/a2a_remote_agent.js +17 -4
  3. package/dist/cjs/a2a/a2a_remote_agent_run_processor.js +7 -3
  4. package/dist/cjs/a2a/a2a_remote_agent_utils.js +9 -2
  5. package/dist/cjs/a2a/agent_card.js +33 -3
  6. package/dist/cjs/a2a/agent_executor.js +25 -16
  7. package/dist/cjs/a2a/agent_to_a2a.js +22 -11
  8. package/dist/cjs/a2a/auth.js +68 -0
  9. package/dist/cjs/a2a/event_converter_utils.js +50 -15
  10. package/dist/cjs/a2a/event_processor_utils.js +71 -35
  11. package/dist/cjs/a2a/executor_context.js +2 -0
  12. package/dist/cjs/a2a/index.js +53 -0
  13. package/dist/cjs/a2a/metadata_converter_utils.js +5 -0
  14. package/dist/cjs/a2a/part_converter_utils.js +12 -0
  15. package/dist/cjs/agents/active_streaming_tool.js +5 -2
  16. package/dist/cjs/agents/base_agent.js +46 -9
  17. package/dist/cjs/agents/context.js +5 -2
  18. package/dist/cjs/agents/framework_function_calls.js +64 -0
  19. package/dist/cjs/agents/functions.js +58 -23
  20. package/dist/cjs/agents/instructions.js +51 -12
  21. package/dist/cjs/agents/invocation_context.js +42 -8
  22. package/dist/cjs/agents/live_request_queue.js +29 -5
  23. package/dist/cjs/agents/llm_agent.js +536 -45
  24. package/dist/cjs/agents/loop_agent.js +19 -2
  25. package/dist/cjs/agents/parallel_agent.js +21 -2
  26. package/dist/cjs/agents/processors/agent_transfer_llm_request_processor.js +7 -4
  27. package/dist/cjs/agents/processors/base_llm_processor.js +9 -4
  28. package/dist/cjs/agents/processors/basic_llm_request_processor.js +8 -4
  29. package/dist/cjs/agents/processors/code_execution_request_processor.js +18 -5
  30. package/dist/cjs/agents/processors/content_processor_utils.js +85 -15
  31. package/dist/cjs/agents/processors/content_request_processor.js +11 -25
  32. package/dist/cjs/agents/processors/context_compactor_request_processor.js +5 -2
  33. package/dist/cjs/agents/processors/identity_llm_request_processor.js +12 -4
  34. package/dist/cjs/agents/processors/instructions_llm_request_processor.js +8 -3
  35. package/dist/cjs/agents/processors/interactions_request_processor.js +5 -2
  36. package/dist/cjs/agents/processors/request_confirmation_llm_request_processor.js +313 -92
  37. package/dist/cjs/agents/processors/request_input_llm_request_processor.js +218 -0
  38. package/dist/cjs/agents/processors/tool_filter_request_processor.js +5 -2
  39. package/dist/cjs/agents/readonly_context.js +7 -3
  40. package/dist/cjs/agents/routed_agent.js +6 -13
  41. package/dist/cjs/agents/run_config.js +12 -0
  42. package/dist/cjs/agents/sequential_agent.js +20 -3
  43. package/dist/cjs/agents/user_input_request.js +145 -0
  44. package/dist/cjs/apps/app.js +11 -11
  45. package/dist/cjs/apps/resumability_config.js +2 -0
  46. package/dist/cjs/artifacts/file_artifact_service.js +21 -2
  47. package/dist/cjs/artifacts/gcs_artifact_service.js +46 -11
  48. package/dist/cjs/artifacts/in_memory_artifact_service.js +19 -11
  49. package/dist/cjs/artifacts/registry.js +6 -1
  50. package/dist/cjs/artifacts/scoped_artifact_service.js +5 -2
  51. package/dist/cjs/auth/auth_handler.js +5 -2
  52. package/dist/cjs/auth/auth_preprocessor.js +48 -40
  53. package/dist/cjs/auth/auth_provider_registry.js +5 -2
  54. package/dist/cjs/auth/auth_schemes.js +2 -0
  55. package/dist/cjs/auth/credential_response_binding.js +101 -0
  56. package/dist/cjs/auth/credential_service/in_memory_credential_service.js +19 -5
  57. package/dist/cjs/auth/credential_service/session_state_credential_service.js +5 -2
  58. package/dist/cjs/auth/exchanger/base_credential_exchanger.js +5 -2
  59. package/dist/cjs/auth/exchanger/credential_exchanger_registry.js +5 -2
  60. package/dist/cjs/auth/oauth2/oauth2_credential_exchanger.js +8 -2
  61. package/dist/cjs/auth/oauth2/oauth2_credential_refresher.js +5 -2
  62. package/dist/cjs/auth/oauth2/oauth2_discovery.js +7 -2
  63. package/dist/cjs/auth/oauth2/oauth2_utils.js +6 -0
  64. package/dist/cjs/auth/refresher/base_credential_refresher.js +5 -2
  65. package/dist/cjs/auth/refresher/credential_refresher_registry.js +5 -2
  66. package/dist/cjs/code_executors/agent_engine_sandbox_code_executor.js +3 -0
  67. package/dist/cjs/code_executors/base_code_executor.js +6 -2
  68. package/dist/cjs/code_executors/built_in_code_executor.js +6 -2
  69. package/dist/cjs/code_executors/code_execution_utils.js +6 -0
  70. package/dist/cjs/code_executors/code_executor_context.js +5 -2
  71. package/dist/cjs/code_executors/unsafe_local_code_executor.js +31 -14
  72. package/dist/cjs/common.js +112 -1
  73. package/dist/cjs/context/agent_controlled_context_compactor.js +7 -13
  74. package/dist/cjs/context/anchored_context_compactor.js +5 -2
  75. package/dist/cjs/context/compaction_utils.js +17 -2
  76. package/dist/cjs/context/summarizers/llm_summarizer.js +5 -2
  77. package/dist/cjs/context/token_based_context_compactor.js +11 -23
  78. package/dist/cjs/context/trajectory_thought_pruning_compactor.js +5 -2
  79. package/dist/cjs/context/truncating_context_compactor.js +5 -2
  80. package/dist/cjs/environment/base_environment.js +97 -0
  81. package/dist/cjs/environment/local_environment.js +186 -0
  82. package/dist/cjs/events/compacted_event.js +4 -0
  83. package/dist/cjs/events/event.js +38 -3
  84. package/dist/cjs/events/event_actions.js +5 -0
  85. package/dist/cjs/events/structured_events.js +2 -0
  86. package/dist/cjs/examples/base_example_provider.js +6 -2
  87. package/dist/cjs/examples/example_util.js +3 -0
  88. package/dist/cjs/features/feature_registry.js +7 -0
  89. package/dist/cjs/index.js +7 -22
  90. package/dist/cjs/integrations/agent_registry/agent_registry.js +7 -4
  91. package/dist/cjs/integrations/agent_registry/agent_registry_mcp_toolset.js +7 -4
  92. package/dist/cjs/integrations/agent_registry/helpers.js +3 -0
  93. package/dist/cjs/memory/in_memory_memory_service.js +21 -4
  94. package/dist/cjs/memory/vertex_ai_memory_bank_service.js +20 -2
  95. package/dist/cjs/models/apigee_llm.js +9 -3
  96. package/dist/cjs/models/base_llm.js +7 -3
  97. package/dist/cjs/models/gemini_llm_connection.js +5 -2
  98. package/dist/cjs/models/google_llm.js +24 -12
  99. package/dist/cjs/models/interactions_utils.js +16 -0
  100. package/dist/cjs/models/llm_request.js +4 -0
  101. package/dist/cjs/models/llm_response.js +2 -0
  102. package/dist/cjs/models/registry.js +6 -2
  103. package/dist/cjs/models/routed_llm.js +4 -13
  104. package/dist/cjs/plugins/base_plugin.js +43 -7
  105. package/dist/cjs/plugins/global_instruction_plugin.js +5 -2
  106. package/dist/cjs/plugins/logging_plugin.js +13 -8
  107. package/dist/cjs/plugins/plugin_manager.js +37 -2
  108. package/dist/cjs/plugins/security_plugin.js +15 -8
  109. package/dist/cjs/runner/in_memory_runner.js +5 -2
  110. package/dist/cjs/runner/runner.js +226 -29
  111. package/dist/cjs/sessions/base_session_service.js +21 -5
  112. package/dist/cjs/sessions/database_session_service.js +6 -2
  113. package/dist/cjs/sessions/db/operations.js +34 -6
  114. package/dist/cjs/sessions/db/schema.js +16 -8
  115. package/dist/cjs/sessions/in_memory_session_service.js +30 -22
  116. package/dist/cjs/sessions/registry.js +4 -1
  117. package/dist/cjs/sessions/session.js +2 -0
  118. package/dist/cjs/sessions/state.js +80 -8
  119. package/dist/cjs/sessions/state_write_order.js +105 -0
  120. package/dist/cjs/sessions/vertex_ai_session_service.js +132 -25
  121. package/dist/cjs/skills/gcp_skill_registry.js +2 -0
  122. package/dist/cjs/skills/loader.js +62 -16
  123. package/dist/cjs/skills/prompt.js +3 -0
  124. package/dist/cjs/telemetry/google_cloud.js +42 -9
  125. package/dist/cjs/telemetry/setup.js +5 -0
  126. package/dist/cjs/telemetry/tracing.js +60 -4
  127. package/dist/cjs/tools/agent_tool.js +6 -2
  128. package/dist/cjs/tools/base_tool.js +24 -2
  129. package/dist/cjs/tools/base_toolset.js +6 -2
  130. package/dist/cjs/tools/consolidate_context_tool.js +5 -2
  131. package/dist/cjs/tools/enterprise_web_search_tool.js +6 -2
  132. package/dist/cjs/tools/example_tool.js +5 -2
  133. package/dist/cjs/tools/exit_loop_tool.js +5 -2
  134. package/dist/cjs/tools/finish_task_tool.js +119 -0
  135. package/dist/cjs/tools/forwarding_artifact_service.js +5 -2
  136. package/dist/cjs/tools/function_tool.js +73 -8
  137. package/dist/cjs/tools/get_user_choice_tool.js +54 -0
  138. package/dist/cjs/tools/google_maps_grounding_tool.js +6 -2
  139. package/dist/cjs/tools/google_search_tool.js +5 -2
  140. package/dist/cjs/tools/load_artifacts_tool.js +8 -2
  141. package/dist/cjs/tools/load_memory_tool.js +5 -2
  142. package/dist/cjs/tools/load_web_page.js +21 -1
  143. package/dist/cjs/tools/long_running_tool.js +5 -2
  144. package/dist/cjs/tools/mcp/index.js +39 -0
  145. package/dist/cjs/tools/mcp/load_mcp_resource_tool.js +5 -2
  146. package/dist/cjs/tools/mcp/mcp_session_manager.js +69 -27
  147. package/dist/cjs/tools/mcp/mcp_tool.js +5 -2
  148. package/dist/cjs/tools/mcp/mcp_toolset.js +5 -2
  149. package/dist/cjs/tools/openapi_tool/auth/auth_helpers.js +4 -0
  150. package/dist/cjs/tools/openapi_tool/auth/credential_exchangers/auto_auth_credential_exchanger.js +2 -0
  151. package/dist/cjs/tools/openapi_tool/auth/credential_exchangers/service_account_exchanger.js +2 -0
  152. package/dist/cjs/tools/openapi_tool/openapi_spec_parser/openapi_spec_parser.js +30 -9
  153. package/dist/cjs/tools/openapi_tool/openapi_spec_parser/operation_parser.js +2 -0
  154. package/dist/cjs/tools/openapi_tool/openapi_spec_parser/tool_auth_handler.js +6 -2
  155. package/dist/cjs/tools/openapi_tool/openapi_toolset.js +2 -0
  156. package/dist/cjs/tools/openapi_tool/rest_api_tool.js +23 -5
  157. package/dist/cjs/tools/preload_memory_tool.js +5 -2
  158. package/dist/cjs/tools/request_input_tool.js +56 -0
  159. package/dist/cjs/tools/skill/list_skills_tool.js +2 -0
  160. package/dist/cjs/tools/skill/load_skill_resource_tool.js +2 -0
  161. package/dist/cjs/tools/skill/load_skill_tool.js +4 -1
  162. package/dist/cjs/tools/skill/run_skill_inline_script_tool.js +8 -2
  163. package/dist/cjs/tools/skill/run_skill_script_tool.js +10 -2
  164. package/dist/cjs/tools/skill/search_skills_tool.js +2 -0
  165. package/dist/cjs/tools/skill/skill_toolset.js +35 -0
  166. package/dist/cjs/tools/tool_confirmation.js +26 -3
  167. package/dist/cjs/tools/url_context_tool.js +5 -2
  168. package/dist/cjs/tools/vertex_ai_search_tool.js +5 -2
  169. package/dist/cjs/tools/vertex_rag_retrieval_tool.js +5 -2
  170. package/dist/cjs/utils/async_hooks_shim.js +5 -2
  171. package/dist/cjs/utils/async_queue.js +45 -18
  172. package/dist/cjs/utils/branch_trie.js +2 -0
  173. package/dist/cjs/utils/case_utils.js +2 -0
  174. package/dist/cjs/utils/client_labels.js +5 -0
  175. package/dist/cjs/utils/crypto_shim.js +45 -0
  176. package/dist/cjs/utils/deprecated.js +68 -0
  177. package/dist/cjs/utils/env_aware_utils.js +56 -13
  178. package/dist/cjs/utils/error_utils.js +128 -0
  179. package/dist/cjs/utils/experimental.js +9 -2
  180. package/dist/cjs/utils/failover_utils.js +3 -0
  181. package/dist/cjs/utils/file_extension_utils.js +3 -0
  182. package/dist/cjs/utils/file_utils.js +12 -4
  183. package/dist/cjs/utils/gemini_schema_util.js +6 -2
  184. package/dist/cjs/utils/genai_schema_to_json.js +107 -0
  185. package/dist/cjs/utils/live_connection_utils.js +5 -2
  186. package/dist/cjs/utils/logger.js +13 -4
  187. package/dist/cjs/utils/model_name.js +8 -0
  188. package/dist/cjs/utils/object_notation_utils.js +7 -3
  189. package/dist/cjs/utils/optional_peer.js +68 -0
  190. package/dist/cjs/utils/output_schema_utils.js +45 -0
  191. package/dist/cjs/utils/partial_copy.js +2 -0
  192. package/dist/cjs/utils/redact_uri.js +66 -0
  193. package/dist/cjs/utils/schema.js +178 -0
  194. package/dist/cjs/utils/simple_zod_to_json.js +17 -4
  195. package/dist/cjs/utils/streaming_utils.js +14 -6
  196. package/dist/cjs/utils/task.js +7 -4
  197. package/dist/cjs/utils/variant_utils.js +3 -1
  198. package/dist/cjs/utils/vertex_ai_utils.js +6 -1
  199. package/dist/cjs/version.js +1 -1
  200. package/dist/cjs/workflow/base_node.js +211 -0
  201. package/dist/cjs/workflow/branch_path.js +108 -0
  202. package/dist/cjs/workflow/dynamic_node_scheduler.js +220 -0
  203. package/dist/cjs/workflow/errors.js +178 -0
  204. package/dist/cjs/workflow/graph.js +158 -0
  205. package/dist/cjs/workflow/index.js +131 -0
  206. package/dist/cjs/workflow/node.js +65 -0
  207. package/dist/cjs/workflow/node_builders.js +68 -0
  208. package/dist/cjs/workflow/node_context.js +246 -0
  209. package/dist/cjs/workflow/node_error_event.js +86 -0
  210. package/dist/cjs/workflow/node_runner.js +459 -0
  211. package/dist/cjs/workflow/node_state.js +57 -0
  212. package/dist/cjs/workflow/node_status.js +48 -0
  213. package/dist/cjs/workflow/nodes/function_node.js +195 -0
  214. package/dist/cjs/workflow/nodes/join_node.js +56 -0
  215. package/dist/cjs/workflow/nodes/node_tool.js +156 -0
  216. package/dist/cjs/workflow/nodes/parallel_worker.js +129 -0
  217. package/dist/cjs/workflow/nodes/tool_node.js +117 -0
  218. package/dist/cjs/workflow/request_input.js +64 -0
  219. package/dist/cjs/workflow/retry_config.js +71 -0
  220. package/dist/cjs/workflow/run_llm_agent_as_node.js +192 -0
  221. package/dist/cjs/workflow/run_node_as_invocation.js +165 -0
  222. package/dist/cjs/workflow/schedule_dynamic_node.js +53 -0
  223. package/dist/cjs/workflow/trigger.js +27 -0
  224. package/dist/cjs/workflow/utils/graph_parser.js +212 -0
  225. package/dist/cjs/workflow/utils/graph_validation.js +216 -0
  226. package/dist/cjs/workflow/utils/hitl_utils.js +252 -0
  227. package/dist/cjs/workflow/utils/rehydration_utils.js +373 -0
  228. package/dist/cjs/workflow/utils/retry_utils.js +112 -0
  229. package/dist/cjs/workflow/utils/workflow_graph_utils.js +144 -0
  230. package/dist/cjs/workflow/workflow.js +509 -0
  231. package/dist/esm/a2a/a2a_event.js +19 -0
  232. package/dist/esm/a2a/a2a_remote_agent.js +18 -4
  233. package/dist/esm/a2a/a2a_remote_agent_run_processor.js +8 -3
  234. package/dist/esm/a2a/a2a_remote_agent_utils.js +10 -2
  235. package/dist/esm/a2a/agent_card.js +34 -3
  236. package/dist/esm/a2a/agent_executor.js +27 -17
  237. package/dist/esm/a2a/agent_to_a2a.js +44 -16
  238. package/dist/esm/a2a/auth.js +41 -0
  239. package/dist/esm/a2a/event_converter_utils.js +51 -15
  240. package/dist/esm/a2a/event_processor_utils.js +74 -34
  241. package/dist/esm/a2a/executor_context.js +3 -0
  242. package/dist/esm/a2a/index.js +20 -0
  243. package/dist/esm/a2a/metadata_converter_utils.js +6 -0
  244. package/dist/esm/a2a/part_converter_utils.js +13 -0
  245. package/dist/esm/agents/active_streaming_tool.js +6 -2
  246. package/dist/esm/agents/base_agent.js +47 -9
  247. package/dist/esm/agents/context.js +6 -2
  248. package/dist/esm/agents/framework_function_calls.js +34 -0
  249. package/dist/esm/agents/functions.js +62 -20
  250. package/dist/esm/agents/instructions.js +52 -12
  251. package/dist/esm/agents/invocation_context.js +41 -7
  252. package/dist/esm/agents/live_request_queue.js +30 -5
  253. package/dist/esm/agents/llm_agent.js +537 -45
  254. package/dist/esm/agents/loop_agent.js +21 -2
  255. package/dist/esm/agents/parallel_agent.js +23 -2
  256. package/dist/esm/agents/processors/agent_transfer_llm_request_processor.js +8 -4
  257. package/dist/esm/agents/processors/base_llm_processor.js +10 -4
  258. package/dist/esm/agents/processors/basic_llm_request_processor.js +9 -4
  259. package/dist/esm/agents/processors/code_execution_request_processor.js +19 -5
  260. package/dist/esm/agents/processors/content_processor_utils.js +88 -16
  261. package/dist/esm/agents/processors/content_request_processor.js +12 -25
  262. package/dist/esm/agents/processors/context_compactor_request_processor.js +6 -2
  263. package/dist/esm/agents/processors/identity_llm_request_processor.js +13 -4
  264. package/dist/esm/agents/processors/instructions_llm_request_processor.js +9 -3
  265. package/dist/esm/agents/processors/interactions_request_processor.js +6 -2
  266. package/dist/esm/agents/processors/request_confirmation_llm_request_processor.js +318 -93
  267. package/dist/esm/agents/processors/request_input_llm_request_processor.js +197 -0
  268. package/dist/esm/agents/processors/tool_filter_request_processor.js +6 -2
  269. package/dist/esm/agents/readonly_context.js +8 -3
  270. package/dist/esm/agents/routed_agent.js +6 -14
  271. package/dist/esm/agents/run_config.js +13 -0
  272. package/dist/esm/agents/sequential_agent.js +22 -3
  273. package/dist/esm/agents/user_input_request.js +120 -0
  274. package/dist/esm/apps/app.js +14 -11
  275. package/dist/esm/apps/resumability_config.js +3 -0
  276. package/dist/esm/artifacts/file_artifact_service.js +22 -2
  277. package/dist/esm/artifacts/gcs_artifact_service.js +58 -11
  278. package/dist/esm/artifacts/in_memory_artifact_service.js +20 -11
  279. package/dist/esm/artifacts/registry.js +7 -1
  280. package/dist/esm/artifacts/scoped_artifact_service.js +6 -2
  281. package/dist/esm/auth/auth_handler.js +6 -2
  282. package/dist/esm/auth/auth_preprocessor.js +50 -41
  283. package/dist/esm/auth/auth_provider_registry.js +6 -2
  284. package/dist/esm/auth/auth_schemes.js +3 -0
  285. package/dist/esm/auth/credential_response_binding.js +74 -0
  286. package/dist/esm/auth/credential_service/in_memory_credential_service.js +20 -5
  287. package/dist/esm/auth/credential_service/session_state_credential_service.js +6 -2
  288. package/dist/esm/auth/exchanger/base_credential_exchanger.js +6 -2
  289. package/dist/esm/auth/exchanger/credential_exchanger_registry.js +6 -2
  290. package/dist/esm/auth/oauth2/oauth2_credential_exchanger.js +9 -2
  291. package/dist/esm/auth/oauth2/oauth2_credential_refresher.js +6 -2
  292. package/dist/esm/auth/oauth2/oauth2_discovery.js +8 -2
  293. package/dist/esm/auth/oauth2/oauth2_utils.js +7 -0
  294. package/dist/esm/auth/refresher/base_credential_refresher.js +6 -2
  295. package/dist/esm/auth/refresher/credential_refresher_registry.js +6 -2
  296. package/dist/esm/code_executors/agent_engine_sandbox_code_executor.js +3 -0
  297. package/dist/esm/code_executors/base_code_executor.js +7 -2
  298. package/dist/esm/code_executors/built_in_code_executor.js +7 -2
  299. package/dist/esm/code_executors/code_execution_utils.js +7 -0
  300. package/dist/esm/code_executors/code_executor_context.js +6 -2
  301. package/dist/esm/code_executors/unsafe_local_code_executor.js +31 -13
  302. package/dist/esm/common.js +113 -4
  303. package/dist/esm/context/agent_controlled_context_compactor.js +8 -13
  304. package/dist/esm/context/anchored_context_compactor.js +6 -2
  305. package/dist/esm/context/compaction_utils.js +16 -1
  306. package/dist/esm/context/summarizers/llm_summarizer.js +6 -2
  307. package/dist/esm/context/token_based_context_compactor.js +16 -24
  308. package/dist/esm/context/trajectory_thought_pruning_compactor.js +6 -2
  309. package/dist/esm/context/truncating_context_compactor.js +6 -2
  310. package/dist/esm/environment/base_environment.js +71 -0
  311. package/dist/esm/environment/local_environment.js +150 -0
  312. package/dist/esm/events/compacted_event.js +5 -0
  313. package/dist/esm/events/event.js +38 -3
  314. package/dist/esm/events/event_actions.js +6 -0
  315. package/dist/esm/events/structured_events.js +3 -0
  316. package/dist/esm/examples/base_example_provider.js +7 -2
  317. package/dist/esm/examples/example_util.js +4 -0
  318. package/dist/esm/features/feature_registry.js +8 -0
  319. package/dist/esm/index.js +4 -13
  320. package/dist/esm/integrations/agent_registry/agent_registry.js +8 -4
  321. package/dist/esm/integrations/agent_registry/agent_registry_mcp_toolset.js +6 -2
  322. package/dist/esm/integrations/agent_registry/helpers.js +4 -0
  323. package/dist/esm/memory/in_memory_memory_service.js +22 -4
  324. package/dist/esm/memory/vertex_ai_memory_bank_service.js +25 -3
  325. package/dist/esm/models/apigee_llm.js +10 -3
  326. package/dist/esm/models/base_llm.js +8 -3
  327. package/dist/esm/models/gemini_llm_connection.js +6 -2
  328. package/dist/esm/models/google_llm.js +26 -13
  329. package/dist/esm/models/interactions_utils.js +17 -0
  330. package/dist/esm/models/llm_request.js +5 -0
  331. package/dist/esm/models/llm_response.js +3 -0
  332. package/dist/esm/models/registry.js +7 -2
  333. package/dist/esm/models/routed_llm.js +4 -14
  334. package/dist/esm/plugins/base_plugin.js +43 -7
  335. package/dist/esm/plugins/global_instruction_plugin.js +6 -2
  336. package/dist/esm/plugins/logging_plugin.js +14 -8
  337. package/dist/esm/plugins/plugin_manager.js +38 -2
  338. package/dist/esm/plugins/security_plugin.js +14 -6
  339. package/dist/esm/runner/in_memory_runner.js +6 -2
  340. package/dist/esm/runner/runner.js +233 -31
  341. package/dist/esm/sessions/base_session_service.js +22 -5
  342. package/dist/esm/sessions/database_session_service.js +7 -2
  343. package/dist/esm/sessions/db/operations.js +34 -6
  344. package/dist/esm/sessions/db/schema.js +16 -8
  345. package/dist/esm/sessions/in_memory_session_service.js +31 -22
  346. package/dist/esm/sessions/registry.js +5 -1
  347. package/dist/esm/sessions/session.js +3 -0
  348. package/dist/esm/sessions/state.js +78 -7
  349. package/dist/esm/sessions/state_write_order.js +74 -0
  350. package/dist/esm/sessions/vertex_ai_session_service.js +136 -26
  351. package/dist/esm/skills/gcp_skill_registry.js +2 -0
  352. package/dist/esm/skills/loader.js +63 -16
  353. package/dist/esm/skills/prompt.js +4 -0
  354. package/dist/esm/telemetry/google_cloud.js +54 -9
  355. package/dist/esm/telemetry/setup.js +6 -0
  356. package/dist/esm/telemetry/tracing.js +59 -4
  357. package/dist/esm/tools/agent_tool.js +7 -2
  358. package/dist/esm/tools/base_tool.js +25 -2
  359. package/dist/esm/tools/base_toolset.js +7 -2
  360. package/dist/esm/tools/consolidate_context_tool.js +6 -2
  361. package/dist/esm/tools/enterprise_web_search_tool.js +7 -2
  362. package/dist/esm/tools/example_tool.js +6 -2
  363. package/dist/esm/tools/exit_loop_tool.js +6 -2
  364. package/dist/esm/tools/finish_task_tool.js +92 -0
  365. package/dist/esm/tools/forwarding_artifact_service.js +6 -2
  366. package/dist/esm/tools/function_tool.js +74 -8
  367. package/dist/esm/tools/get_user_choice_tool.js +27 -0
  368. package/dist/esm/tools/google_maps_grounding_tool.js +7 -2
  369. package/dist/esm/tools/google_search_tool.js +6 -2
  370. package/dist/esm/tools/load_artifacts_tool.js +9 -2
  371. package/dist/esm/tools/load_memory_tool.js +6 -2
  372. package/dist/esm/tools/load_web_page.js +22 -1
  373. package/dist/esm/tools/long_running_tool.js +6 -2
  374. package/dist/esm/tools/mcp/index.js +11 -0
  375. package/dist/esm/tools/mcp/load_mcp_resource_tool.js +6 -2
  376. package/dist/esm/tools/mcp/mcp_session_manager.js +80 -30
  377. package/dist/esm/tools/mcp/mcp_tool.js +6 -2
  378. package/dist/esm/tools/mcp/mcp_toolset.js +6 -2
  379. package/dist/esm/tools/openapi_tool/auth/auth_helpers.js +5 -0
  380. package/dist/esm/tools/openapi_tool/auth/credential_exchangers/auto_auth_credential_exchanger.js +2 -0
  381. package/dist/esm/tools/openapi_tool/auth/credential_exchangers/service_account_exchanger.js +2 -0
  382. package/dist/esm/tools/openapi_tool/openapi_spec_parser/openapi_spec_parser.js +30 -9
  383. package/dist/esm/tools/openapi_tool/openapi_spec_parser/operation_parser.js +2 -0
  384. package/dist/esm/tools/openapi_tool/openapi_spec_parser/tool_auth_handler.js +6 -2
  385. package/dist/esm/tools/openapi_tool/openapi_toolset.js +2 -0
  386. package/dist/esm/tools/openapi_tool/rest_api_tool.js +23 -5
  387. package/dist/esm/tools/preload_memory_tool.js +6 -2
  388. package/dist/esm/tools/request_input_tool.js +29 -0
  389. package/dist/esm/tools/skill/list_skills_tool.js +2 -0
  390. package/dist/esm/tools/skill/load_skill_resource_tool.js +2 -0
  391. package/dist/esm/tools/skill/load_skill_tool.js +4 -1
  392. package/dist/esm/tools/skill/run_skill_inline_script_tool.js +8 -2
  393. package/dist/esm/tools/skill/run_skill_script_tool.js +10 -2
  394. package/dist/esm/tools/skill/search_skills_tool.js +2 -0
  395. package/dist/esm/tools/skill/skill_toolset.js +25 -0
  396. package/dist/esm/tools/tool_confirmation.js +24 -2
  397. package/dist/esm/tools/url_context_tool.js +6 -2
  398. package/dist/esm/tools/vertex_ai_search_tool.js +6 -2
  399. package/dist/esm/tools/vertex_rag_retrieval_tool.js +6 -2
  400. package/dist/esm/utils/async_hooks_shim.js +6 -2
  401. package/dist/esm/utils/async_queue.js +46 -18
  402. package/dist/esm/utils/branch_trie.js +3 -0
  403. package/dist/esm/utils/case_utils.js +3 -0
  404. package/dist/esm/utils/client_labels.js +6 -0
  405. package/dist/esm/utils/crypto_shim.js +18 -0
  406. package/dist/esm/utils/deprecated.js +40 -0
  407. package/dist/esm/utils/env_aware_utils.js +56 -13
  408. package/dist/esm/utils/error_utils.js +101 -0
  409. package/dist/esm/utils/experimental.js +10 -2
  410. package/dist/esm/utils/failover_utils.js +4 -0
  411. package/dist/esm/utils/file_extension_utils.js +4 -0
  412. package/dist/esm/utils/file_utils.js +13 -4
  413. package/dist/esm/utils/gemini_schema_util.js +7 -2
  414. package/dist/esm/utils/genai_schema_to_json.js +80 -0
  415. package/dist/esm/utils/live_connection_utils.js +6 -2
  416. package/dist/esm/utils/logger.js +14 -4
  417. package/dist/esm/utils/model_name.js +9 -0
  418. package/dist/esm/utils/object_notation_utils.js +8 -3
  419. package/dist/esm/utils/optional_peer.js +41 -0
  420. package/dist/esm/utils/output_schema_utils.js +18 -0
  421. package/dist/esm/utils/partial_copy.js +3 -0
  422. package/dist/esm/utils/redact_uri.js +39 -0
  423. package/dist/esm/utils/schema.js +152 -0
  424. package/dist/esm/utils/simple_zod_to_json.js +15 -4
  425. package/dist/esm/utils/streaming_utils.js +15 -6
  426. package/dist/esm/utils/task.js +8 -4
  427. package/dist/esm/utils/variant_utils.js +5 -2
  428. package/dist/esm/utils/vertex_ai_utils.js +7 -2
  429. package/dist/esm/version.js +1 -1
  430. package/dist/esm/workflow/base_node.js +182 -0
  431. package/dist/esm/workflow/branch_path.js +77 -0
  432. package/dist/esm/workflow/dynamic_node_scheduler.js +202 -0
  433. package/dist/esm/workflow/errors.js +140 -0
  434. package/dist/esm/workflow/graph.js +127 -0
  435. package/dist/esm/workflow/index.js +80 -0
  436. package/dist/esm/workflow/node.js +38 -0
  437. package/dist/esm/workflow/node_builders.js +40 -0
  438. package/dist/esm/workflow/node_context.js +219 -0
  439. package/dist/esm/workflow/node_error_event.js +57 -0
  440. package/dist/esm/workflow/node_runner.js +439 -0
  441. package/dist/esm/workflow/node_state.js +29 -0
  442. package/dist/esm/workflow/node_status.js +20 -0
  443. package/dist/esm/workflow/nodes/function_node.js +172 -0
  444. package/dist/esm/workflow/nodes/join_node.js +29 -0
  445. package/dist/esm/workflow/nodes/node_tool.js +131 -0
  446. package/dist/esm/workflow/nodes/parallel_worker.js +102 -0
  447. package/dist/esm/workflow/nodes/tool_node.js +90 -0
  448. package/dist/esm/workflow/request_input.js +36 -0
  449. package/dist/esm/workflow/retry_config.js +43 -0
  450. package/dist/esm/workflow/run_llm_agent_as_node.js +172 -0
  451. package/dist/esm/workflow/run_node_as_invocation.js +139 -0
  452. package/dist/esm/workflow/schedule_dynamic_node.js +26 -0
  453. package/dist/esm/workflow/trigger.js +7 -0
  454. package/dist/esm/workflow/utils/graph_parser.js +188 -0
  455. package/dist/esm/workflow/utils/graph_validation.js +189 -0
  456. package/dist/esm/workflow/utils/hitl_utils.js +222 -0
  457. package/dist/esm/workflow/utils/rehydration_utils.js +342 -0
  458. package/dist/esm/workflow/utils/retry_utils.js +82 -0
  459. package/dist/esm/workflow/utils/workflow_graph_utils.js +115 -0
  460. package/dist/esm/workflow/workflow.js +493 -0
  461. package/dist/types/a2a/agent_card.d.ts +3 -3
  462. package/dist/types/a2a/agent_to_a2a.d.ts +4 -4
  463. package/dist/types/a2a/auth.d.ts +30 -0
  464. package/dist/types/a2a/event_converter_utils.d.ts +4 -1
  465. package/dist/types/a2a/event_processor_utils.d.ts +17 -2
  466. package/dist/types/a2a/index.d.ts +18 -0
  467. package/dist/types/agents/base_agent.d.ts +37 -9
  468. package/dist/types/agents/framework_function_calls.d.ts +26 -0
  469. package/dist/types/agents/functions.d.ts +1 -2
  470. package/dist/types/agents/invocation_context.d.ts +95 -3
  471. package/dist/types/agents/live_request_queue.d.ts +7 -1
  472. package/dist/types/agents/llm_agent.d.ts +77 -1
  473. package/dist/types/agents/loop_agent.d.ts +5 -0
  474. package/dist/types/agents/parallel_agent.d.ts +5 -0
  475. package/dist/types/agents/processors/content_processor_utils.d.ts +3 -2
  476. package/dist/types/agents/processors/identity_llm_request_processor.d.ts +4 -1
  477. package/dist/types/agents/processors/request_input_llm_request_processor.d.ts +21 -0
  478. package/dist/types/agents/run_config.d.ts +57 -2
  479. package/dist/types/agents/sequential_agent.d.ts +5 -0
  480. package/dist/types/agents/user_input_request.d.ts +71 -0
  481. package/dist/types/apps/app.d.ts +8 -3
  482. package/dist/types/artifacts/gcs_artifact_service.d.ts +9 -2
  483. package/dist/types/auth/credential_response_binding.d.ts +24 -0
  484. package/dist/types/auth/credential_service/in_memory_credential_service.d.ts +11 -0
  485. package/dist/types/code_executors/unsafe_local_code_executor.d.ts +5 -1
  486. package/dist/types/common.d.ts +20 -8
  487. package/dist/types/context/agent_controlled_context_compactor.d.ts +0 -1
  488. package/dist/types/context/compaction_utils.d.ts +8 -0
  489. package/dist/types/context/token_based_context_compactor.d.ts +0 -1
  490. package/dist/types/environment/base_environment.d.ts +101 -0
  491. package/dist/types/environment/local_environment.d.ts +72 -0
  492. package/dist/types/events/event.d.ts +94 -1
  493. package/dist/types/events/event_actions.d.ts +10 -0
  494. package/dist/types/index.d.ts +6 -13
  495. package/dist/types/memory/in_memory_memory_service.d.ts +11 -0
  496. package/dist/types/models/apigee_llm.d.ts +4 -4
  497. package/dist/types/models/google_llm.d.ts +2 -1
  498. package/dist/types/plugins/base_plugin.d.ts +39 -2
  499. package/dist/types/plugins/plugin_manager.d.ts +20 -0
  500. package/dist/types/plugins/security_plugin.d.ts +4 -2
  501. package/dist/types/runner/in_memory_runner.d.ts +2 -2
  502. package/dist/types/runner/runner.d.ts +59 -3
  503. package/dist/types/sessions/base_session_service.d.ts +10 -2
  504. package/dist/types/sessions/in_memory_session_service.d.ts +9 -0
  505. package/dist/types/sessions/state.d.ts +34 -1
  506. package/dist/types/sessions/state_write_order.d.ts +39 -0
  507. package/dist/types/sessions/vertex_ai_session_service.d.ts +19 -1
  508. package/dist/types/skills/loader.d.ts +5 -0
  509. package/dist/types/telemetry/tracing.d.ts +15 -0
  510. package/dist/types/tools/base_tool.d.ts +15 -0
  511. package/dist/types/tools/finish_task_tool.d.ts +47 -0
  512. package/dist/types/tools/function_tool.d.ts +46 -1
  513. package/dist/types/tools/get_user_choice_tool.d.ts +14 -0
  514. package/dist/types/tools/mcp/index.d.ts +13 -0
  515. package/dist/types/tools/mcp/mcp_session_manager.d.ts +3 -3
  516. package/dist/types/tools/mcp/mcp_tool.d.ts +1 -1
  517. package/dist/types/tools/mcp/mcp_toolset.d.ts +1 -1
  518. package/dist/types/tools/request_input_tool.d.ts +20 -0
  519. package/dist/types/tools/skill/skill_toolset.d.ts +26 -0
  520. package/dist/types/tools/tool_confirmation.d.ts +47 -0
  521. package/dist/types/utils/async_queue.d.ts +34 -2
  522. package/dist/types/utils/crypto_shim.d.ts +16 -0
  523. package/dist/types/utils/deprecated.d.ts +21 -0
  524. package/dist/types/utils/env_aware_utils.d.ts +39 -0
  525. package/dist/types/utils/error_utils.d.ts +18 -0
  526. package/dist/types/utils/file_utils.d.ts +10 -2
  527. package/dist/types/utils/genai_schema_to_json.d.ts +25 -0
  528. package/dist/types/utils/optional_peer.d.ts +36 -0
  529. package/dist/types/utils/output_schema_utils.d.ts +18 -0
  530. package/dist/types/utils/redact_uri.d.ts +28 -0
  531. package/dist/types/utils/schema.d.ts +73 -0
  532. package/dist/types/utils/simple_zod_to_json.d.ts +8 -0
  533. package/dist/types/utils/vertex_ai_utils.d.ts +5 -0
  534. package/dist/types/version.d.ts +1 -1
  535. package/dist/types/workflow/base_node.d.ts +142 -0
  536. package/dist/types/workflow/branch_path.d.ts +40 -0
  537. package/dist/types/workflow/dynamic_node_scheduler.d.ts +64 -0
  538. package/dist/types/workflow/errors.d.ts +132 -0
  539. package/dist/types/workflow/graph.d.ts +127 -0
  540. package/dist/types/workflow/index.d.ts +46 -0
  541. package/dist/types/workflow/node.d.ts +48 -0
  542. package/dist/types/workflow/node_builders.d.ts +25 -0
  543. package/dist/types/workflow/node_context.d.ts +208 -0
  544. package/dist/types/workflow/node_error_event.d.ts +18 -0
  545. package/dist/types/workflow/node_runner.d.ts +82 -0
  546. package/dist/types/workflow/node_state.d.ts +47 -0
  547. package/dist/types/workflow/node_status.d.ts +28 -0
  548. package/dist/types/workflow/nodes/function_node.d.ts +78 -0
  549. package/dist/types/workflow/nodes/join_node.d.ts +24 -0
  550. package/dist/types/workflow/nodes/node_tool.d.ts +53 -0
  551. package/dist/types/workflow/nodes/parallel_worker.d.ts +55 -0
  552. package/dist/types/workflow/nodes/tool_node.d.ts +34 -0
  553. package/dist/types/workflow/request_input.d.ts +73 -0
  554. package/dist/types/workflow/retry_config.d.ts +84 -0
  555. package/dist/types/workflow/run_llm_agent_as_node.d.ts +28 -0
  556. package/dist/types/workflow/run_node_as_invocation.d.ts +72 -0
  557. package/dist/types/workflow/schedule_dynamic_node.d.ts +66 -0
  558. package/dist/types/workflow/trigger.d.ts +22 -0
  559. package/dist/types/workflow/utils/graph_parser.d.ts +8 -0
  560. package/dist/types/workflow/utils/graph_validation.d.ts +18 -0
  561. package/dist/types/workflow/utils/hitl_utils.d.ts +92 -0
  562. package/dist/types/workflow/utils/rehydration_utils.d.ts +132 -0
  563. package/dist/types/workflow/utils/retry_utils.d.ts +54 -0
  564. package/dist/types/workflow/utils/workflow_graph_utils.d.ts +76 -0
  565. package/dist/types/workflow/workflow.d.ts +115 -0
  566. package/dist/web/a2a/a2a_event.js +19 -0
  567. package/dist/web/a2a/a2a_remote_agent.js +18 -4
  568. package/dist/web/a2a/a2a_remote_agent_run_processor.js +8 -3
  569. package/dist/web/a2a/a2a_remote_agent_utils.js +10 -2
  570. package/dist/web/a2a/agent_card.js +34 -3
  571. package/dist/web/a2a/agent_executor.js +45 -17
  572. package/dist/web/a2a/agent_to_a2a.js +44 -16
  573. package/dist/web/a2a/auth.js +41 -0
  574. package/dist/web/a2a/event_converter_utils.js +50 -15
  575. package/dist/web/a2a/event_processor_utils.js +73 -34
  576. package/dist/web/a2a/executor_context.js +3 -0
  577. package/dist/web/a2a/index.js +20 -0
  578. package/dist/web/a2a/metadata_converter_utils.js +5 -0
  579. package/dist/web/a2a/part_converter_utils.js +13 -0
  580. package/dist/web/agents/active_streaming_tool.js +6 -2
  581. package/dist/web/agents/base_agent.js +48 -9
  582. package/dist/web/agents/context.js +6 -2
  583. package/dist/web/agents/framework_function_calls.js +34 -0
  584. package/dist/web/agents/functions.js +62 -20
  585. package/dist/web/agents/instructions.js +52 -12
  586. package/dist/web/agents/invocation_context.js +56 -7
  587. package/dist/web/agents/live_request_queue.js +30 -5
  588. package/dist/web/agents/llm_agent.js +631 -52
  589. package/dist/web/agents/loop_agent.js +21 -2
  590. package/dist/web/agents/parallel_agent.js +23 -2
  591. package/dist/web/agents/processors/agent_transfer_llm_request_processor.js +8 -4
  592. package/dist/web/agents/processors/base_llm_processor.js +10 -4
  593. package/dist/web/agents/processors/basic_llm_request_processor.js +8 -4
  594. package/dist/web/agents/processors/code_execution_request_processor.js +19 -5
  595. package/dist/web/agents/processors/content_processor_utils.js +87 -16
  596. package/dist/web/agents/processors/content_request_processor.js +12 -25
  597. package/dist/web/agents/processors/context_compactor_request_processor.js +6 -2
  598. package/dist/web/agents/processors/identity_llm_request_processor.js +13 -4
  599. package/dist/web/agents/processors/instructions_llm_request_processor.js +9 -3
  600. package/dist/web/agents/processors/interactions_request_processor.js +6 -2
  601. package/dist/web/agents/processors/request_confirmation_llm_request_processor.js +329 -104
  602. package/dist/web/agents/processors/request_input_llm_request_processor.js +228 -0
  603. package/dist/web/agents/processors/tool_filter_request_processor.js +6 -2
  604. package/dist/web/agents/readonly_context.js +8 -3
  605. package/dist/web/agents/routed_agent.js +6 -14
  606. package/dist/web/agents/run_config.js +12 -0
  607. package/dist/web/agents/sequential_agent.js +22 -3
  608. package/dist/web/agents/user_input_request.js +135 -0
  609. package/dist/web/apps/app.js +14 -11
  610. package/dist/web/apps/resumability_config.js +2 -0
  611. package/dist/web/artifacts/file_artifact_service.js +22 -2
  612. package/dist/web/artifacts/gcs_artifact_service.js +56 -11
  613. package/dist/web/artifacts/in_memory_artifact_service.js +20 -11
  614. package/dist/web/artifacts/registry.js +7 -1
  615. package/dist/web/artifacts/scoped_artifact_service.js +5 -2
  616. package/dist/web/auth/auth_handler.js +5 -2
  617. package/dist/web/auth/auth_preprocessor.js +50 -41
  618. package/dist/web/auth/auth_provider_registry.js +6 -2
  619. package/dist/web/auth/auth_schemes.js +3 -0
  620. package/dist/web/auth/credential_response_binding.js +91 -0
  621. package/dist/web/auth/credential_service/in_memory_credential_service.js +20 -5
  622. package/dist/web/auth/credential_service/session_state_credential_service.js +6 -2
  623. package/dist/web/auth/exchanger/base_credential_exchanger.js +6 -2
  624. package/dist/web/auth/exchanger/credential_exchanger_registry.js +6 -2
  625. package/dist/web/auth/oauth2/oauth2_credential_exchanger.js +8 -2
  626. package/dist/web/auth/oauth2/oauth2_credential_refresher.js +5 -2
  627. package/dist/web/auth/oauth2/oauth2_discovery.js +8 -2
  628. package/dist/web/auth/oauth2/oauth2_utils.js +7 -0
  629. package/dist/web/auth/refresher/base_credential_refresher.js +6 -2
  630. package/dist/web/auth/refresher/credential_refresher_registry.js +6 -2
  631. package/dist/web/code_executors/agent_engine_sandbox_code_executor.js +3 -0
  632. package/dist/web/code_executors/base_code_executor.js +7 -2
  633. package/dist/web/code_executors/built_in_code_executor.js +7 -2
  634. package/dist/web/code_executors/code_execution_utils.js +7 -0
  635. package/dist/web/code_executors/code_executor_context.js +6 -2
  636. package/dist/web/code_executors/unsafe_local_code_executor.js +31 -13
  637. package/dist/web/common.js +113 -4
  638. package/dist/web/context/agent_controlled_context_compactor.js +8 -13
  639. package/dist/web/context/anchored_context_compactor.js +5 -2
  640. package/dist/web/context/compaction_utils.js +16 -1
  641. package/dist/web/context/summarizers/llm_summarizer.js +6 -2
  642. package/dist/web/context/token_based_context_compactor.js +16 -24
  643. package/dist/web/context/trajectory_thought_pruning_compactor.js +6 -2
  644. package/dist/web/context/truncating_context_compactor.js +6 -2
  645. package/dist/web/environment/base_environment.js +71 -0
  646. package/dist/web/environment/local_environment.js +165 -0
  647. package/dist/web/events/compacted_event.js +4 -0
  648. package/dist/web/events/event.js +37 -3
  649. package/dist/web/events/event_actions.js +5 -0
  650. package/dist/web/events/structured_events.js +3 -0
  651. package/dist/web/examples/base_example_provider.js +7 -2
  652. package/dist/web/examples/example_util.js +4 -0
  653. package/dist/web/features/feature_registry.js +8 -0
  654. package/dist/web/index.js +4 -13
  655. package/dist/web/integrations/agent_registry/agent_registry.js +8 -4
  656. package/dist/web/integrations/agent_registry/agent_registry_mcp_toolset.js +5 -2
  657. package/dist/web/integrations/agent_registry/helpers.js +4 -0
  658. package/dist/web/memory/in_memory_memory_service.js +22 -4
  659. package/dist/web/memory/vertex_ai_memory_bank_service.js +24 -3
  660. package/dist/web/models/apigee_llm.js +9 -3
  661. package/dist/web/models/base_llm.js +8 -3
  662. package/dist/web/models/gemini_llm_connection.js +6 -2
  663. package/dist/web/models/google_llm.js +25 -13
  664. package/dist/web/models/interactions_utils.js +17 -0
  665. package/dist/web/models/llm_request.js +5 -0
  666. package/dist/web/models/llm_response.js +3 -0
  667. package/dist/web/models/registry.js +7 -2
  668. package/dist/web/models/routed_llm.js +4 -14
  669. package/dist/web/plugins/base_plugin.js +43 -7
  670. package/dist/web/plugins/global_instruction_plugin.js +6 -2
  671. package/dist/web/plugins/logging_plugin.js +14 -8
  672. package/dist/web/plugins/plugin_manager.js +38 -2
  673. package/dist/web/plugins/security_plugin.js +14 -6
  674. package/dist/web/runner/in_memory_runner.js +6 -2
  675. package/dist/web/runner/runner.js +249 -31
  676. package/dist/web/sessions/base_session_service.js +22 -5
  677. package/dist/web/sessions/database_session_service.js +6 -2
  678. package/dist/web/sessions/db/operations.js +34 -6
  679. package/dist/web/sessions/db/schema.js +16 -8
  680. package/dist/web/sessions/in_memory_session_service.js +31 -22
  681. package/dist/web/sessions/registry.js +5 -1
  682. package/dist/web/sessions/session.js +3 -0
  683. package/dist/web/sessions/state.js +77 -7
  684. package/dist/web/sessions/state_write_order.js +74 -0
  685. package/dist/web/sessions/vertex_ai_session_service.js +142 -26
  686. package/dist/web/skills/gcp_skill_registry.js +2 -0
  687. package/dist/web/skills/loader.js +62 -16
  688. package/dist/web/skills/prompt.js +4 -0
  689. package/dist/web/telemetry/google_cloud.js +54 -9
  690. package/dist/web/telemetry/setup.js +6 -0
  691. package/dist/web/telemetry/tracing.js +77 -7
  692. package/dist/web/tools/agent_tool.js +7 -2
  693. package/dist/web/tools/base_tool.js +25 -2
  694. package/dist/web/tools/base_toolset.js +7 -2
  695. package/dist/web/tools/consolidate_context_tool.js +6 -2
  696. package/dist/web/tools/enterprise_web_search_tool.js +7 -2
  697. package/dist/web/tools/example_tool.js +6 -2
  698. package/dist/web/tools/exit_loop_tool.js +6 -2
  699. package/dist/web/tools/finish_task_tool.js +92 -0
  700. package/dist/web/tools/forwarding_artifact_service.js +6 -2
  701. package/dist/web/tools/function_tool.js +74 -8
  702. package/dist/web/tools/get_user_choice_tool.js +27 -0
  703. package/dist/web/tools/google_maps_grounding_tool.js +7 -2
  704. package/dist/web/tools/google_search_tool.js +6 -2
  705. package/dist/web/tools/load_artifacts_tool.js +9 -2
  706. package/dist/web/tools/load_memory_tool.js +6 -2
  707. package/dist/web/tools/load_web_page.js +22 -1
  708. package/dist/web/tools/long_running_tool.js +5 -2
  709. package/dist/web/tools/mcp/index.js +11 -0
  710. package/dist/web/tools/mcp/load_mcp_resource_tool.js +6 -2
  711. package/dist/web/tools/mcp/mcp_session_manager.js +80 -30
  712. package/dist/web/tools/mcp/mcp_tool.js +6 -2
  713. package/dist/web/tools/mcp/mcp_toolset.js +5 -2
  714. package/dist/web/tools/openapi_tool/auth/auth_helpers.js +5 -0
  715. package/dist/web/tools/openapi_tool/auth/credential_exchangers/auto_auth_credential_exchanger.js +2 -0
  716. package/dist/web/tools/openapi_tool/auth/credential_exchangers/service_account_exchanger.js +2 -0
  717. package/dist/web/tools/openapi_tool/openapi_spec_parser/openapi_spec_parser.js +30 -9
  718. package/dist/web/tools/openapi_tool/openapi_spec_parser/operation_parser.js +2 -0
  719. package/dist/web/tools/openapi_tool/openapi_spec_parser/tool_auth_handler.js +6 -2
  720. package/dist/web/tools/openapi_tool/openapi_toolset.js +2 -0
  721. package/dist/web/tools/openapi_tool/rest_api_tool.js +23 -5
  722. package/dist/web/tools/preload_memory_tool.js +6 -2
  723. package/dist/web/tools/request_input_tool.js +29 -0
  724. package/dist/web/tools/skill/list_skills_tool.js +2 -0
  725. package/dist/web/tools/skill/load_skill_resource_tool.js +2 -0
  726. package/dist/web/tools/skill/load_skill_tool.js +4 -1
  727. package/dist/web/tools/skill/run_skill_inline_script_tool.js +26 -2
  728. package/dist/web/tools/skill/run_skill_script_tool.js +28 -2
  729. package/dist/web/tools/skill/search_skills_tool.js +2 -0
  730. package/dist/web/tools/skill/skill_toolset.js +25 -0
  731. package/dist/web/tools/tool_confirmation.js +24 -2
  732. package/dist/web/tools/url_context_tool.js +6 -2
  733. package/dist/web/tools/vertex_ai_search_tool.js +6 -2
  734. package/dist/web/tools/vertex_rag_retrieval_tool.js +6 -2
  735. package/dist/web/utils/async_hooks_shim.js +6 -2
  736. package/dist/web/utils/async_queue.js +46 -18
  737. package/dist/web/utils/branch_trie.js +3 -0
  738. package/dist/web/utils/case_utils.js +3 -0
  739. package/dist/web/utils/client_labels.js +6 -0
  740. package/dist/web/utils/crypto_shim.js +18 -0
  741. package/dist/web/utils/deprecated.js +40 -0
  742. package/dist/web/utils/env_aware_utils.js +56 -13
  743. package/dist/web/utils/error_utils.js +101 -0
  744. package/dist/web/utils/experimental.js +10 -2
  745. package/dist/web/utils/failover_utils.js +4 -0
  746. package/dist/web/utils/file_extension_utils.js +4 -0
  747. package/dist/web/utils/file_utils.js +12 -4
  748. package/dist/web/utils/gemini_schema_util.js +6 -2
  749. package/dist/web/utils/genai_schema_to_json.js +80 -0
  750. package/dist/web/utils/live_connection_utils.js +5 -2
  751. package/dist/web/utils/logger.js +14 -4
  752. package/dist/web/utils/model_name.js +9 -0
  753. package/dist/web/utils/object_notation_utils.js +8 -3
  754. package/dist/web/utils/optional_peer.js +38 -0
  755. package/dist/web/utils/output_schema_utils.js +18 -0
  756. package/dist/web/utils/partial_copy.js +3 -0
  757. package/dist/web/utils/redact_uri.js +39 -0
  758. package/dist/web/utils/schema.js +167 -0
  759. package/dist/web/utils/simple_zod_to_json.js +15 -4
  760. package/dist/web/utils/streaming_utils.js +14 -6
  761. package/dist/web/utils/task.js +8 -4
  762. package/dist/web/utils/variant_utils.js +5 -2
  763. package/dist/web/utils/vertex_ai_utils.js +7 -2
  764. package/dist/web/version.js +1 -1
  765. package/dist/web/workflow/base_node.js +215 -0
  766. package/dist/web/workflow/branch_path.js +77 -0
  767. package/dist/web/workflow/dynamic_node_scheduler.js +202 -0
  768. package/dist/web/workflow/errors.js +140 -0
  769. package/dist/web/workflow/graph.js +127 -0
  770. package/dist/web/workflow/index.js +80 -0
  771. package/dist/web/workflow/node.js +87 -0
  772. package/dist/web/workflow/node_builders.js +40 -0
  773. package/dist/web/workflow/node_context.js +236 -0
  774. package/dist/web/workflow/node_error_event.js +86 -0
  775. package/dist/web/workflow/node_runner.js +481 -0
  776. package/dist/web/workflow/node_state.js +43 -0
  777. package/dist/web/workflow/node_status.js +20 -0
  778. package/dist/web/workflow/nodes/function_node.js +221 -0
  779. package/dist/web/workflow/nodes/join_node.js +47 -0
  780. package/dist/web/workflow/nodes/node_tool.js +131 -0
  781. package/dist/web/workflow/nodes/parallel_worker.js +120 -0
  782. package/dist/web/workflow/nodes/tool_node.js +126 -0
  783. package/dist/web/workflow/request_input.js +36 -0
  784. package/dist/web/workflow/retry_config.js +43 -0
  785. package/dist/web/workflow/run_llm_agent_as_node.js +266 -0
  786. package/dist/web/workflow/run_node_as_invocation.js +170 -0
  787. package/dist/web/workflow/schedule_dynamic_node.js +26 -0
  788. package/dist/web/workflow/trigger.js +7 -0
  789. package/dist/web/workflow/utils/graph_parser.js +188 -0
  790. package/dist/web/workflow/utils/graph_validation.js +189 -0
  791. package/dist/web/workflow/utils/hitl_utils.js +239 -0
  792. package/dist/web/workflow/utils/rehydration_utils.js +342 -0
  793. package/dist/web/workflow/utils/retry_utils.js +82 -0
  794. package/dist/web/workflow/utils/workflow_graph_utils.js +115 -0
  795. package/dist/web/workflow/workflow.js +529 -0
  796. package/package.json +82 -8
@@ -1,5 +1,7 @@
1
1
  import {createRequire as topLevelCreateRequire} from 'module';
2
2
  const require = topLevelCreateRequire(import.meta.url);
3
+ var __defProp = Object.defineProperty;
4
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
5
  /**
4
6
  * @license
5
7
  * Copyright 2025 Google LLC
@@ -7,7 +9,12 @@ const require = topLevelCreateRequire(import.meta.url);
7
9
  */
8
10
  var _a, _b;
9
11
  import { context, trace } from "@opentelemetry/api";
12
+ import { FinishTaskTool } from "../tools/finish_task_tool.js";
10
13
  import { FunctionTool } from "../tools/function_tool.js";
14
+ import { AsyncQueue } from "../utils/async_queue.js";
15
+ import { isBaseNode } from "../workflow/base_node.js";
16
+ import { NodeTool } from "../workflow/nodes/node_tool.js";
17
+ import { runLlmAgentAsNode } from "../workflow/run_llm_agent_as_node.js";
11
18
  import {
12
19
  createEvent,
13
20
  createNewEventId,
@@ -20,12 +27,14 @@ import { isBaseLlm } from "../models/base_llm.js";
20
27
  import { LLMRegistry } from "../models/registry.js";
21
28
  import { isBaseTool } from "../tools/base_tool.js";
22
29
  import { logger } from "../utils/logger.js";
30
+ import { canUseOutputSchemaWithTools } from "../utils/output_schema_utils.js";
23
31
  import { Context } from "./context.js";
24
32
  import {
25
33
  runAsyncGeneratorWithOtelContext,
26
34
  traceCallLlm,
27
35
  tracer
28
36
  } from "../telemetry/tracing.js";
37
+ import { parseWithSchema } from "../utils/schema.js";
29
38
  import { isZodObject, zodObjectToSchema } from "../utils/simple_zod_to_json.js";
30
39
  import { BaseAgent } from "./base_agent.js";
31
40
  import {
@@ -35,6 +44,7 @@ import {
35
44
  handleFunctionCallsAsync
36
45
  } from "./functions.js";
37
46
  import { AUTH_PREPROCESSOR } from "../auth/auth_preprocessor.js";
47
+ import { requireAgent } from "./invocation_context.js";
38
48
  import { AGENT_TRANSFER_LLM_REQUEST_PROCESSOR } from "./processors/agent_transfer_llm_request_processor.js";
39
49
  import { BASIC_LLM_REQUEST_PROCESSOR } from "./processors/basic_llm_request_processor.js";
40
50
  import { CODE_EXECUTION_REQUEST_PROCESSOR } from "./processors/code_execution_request_processor.js";
@@ -44,48 +54,113 @@ import { IDENTITY_LLM_REQUEST_PROCESSOR } from "./processors/identity_llm_reques
44
54
  import { INSTRUCTIONS_LLM_REQUEST_PROCESSOR } from "./processors/instructions_llm_request_processor.js";
45
55
  import { INTERACTIONS_REQUEST_PROCESSOR } from "./processors/interactions_request_processor.js";
46
56
  import { REQUEST_CONFIRMATION_LLM_REQUEST_PROCESSOR } from "./processors/request_confirmation_llm_request_processor.js";
57
+ import { REQUEST_INPUT_LLM_REQUEST_PROCESSOR } from "./processors/request_input_llm_request_processor.js";
47
58
  import { TOOL_FILTER_REQUEST_PROCESSOR } from "./processors/tool_filter_request_processor.js";
48
59
  import { ReadonlyContext } from "./readonly_context.js";
49
60
  import { StreamingMode } from "./run_config.js";
61
+ const MAX_LIVE_RECONNECT_ATTEMPTS = 5;
62
+ const TRANSFER_AGENT_DELAY_MS = 1e3;
63
+ const _LiveReconnectSignal = class _LiveReconnectSignal extends Error {
64
+ constructor(reason) {
65
+ super(`live reconnect requested: ${reason}`);
66
+ this.reason = reason;
67
+ this.name = "LiveReconnectSignal";
68
+ }
69
+ };
70
+ __name(_LiveReconnectSignal, "LiveReconnectSignal");
71
+ let LiveReconnectSignal = _LiveReconnectSignal;
72
+ function isRecoverableLiveError(err) {
73
+ var _a2;
74
+ if (err instanceof LiveReconnectSignal) return true;
75
+ if (!(err instanceof Error)) return false;
76
+ const code = err.code;
77
+ if (code === 1006 || code === 1011 || code === 1012) {
78
+ return true;
79
+ }
80
+ const message = (_a2 = err.message) != null ? _a2 : "";
81
+ return /ConnectionClosed|connection closed|ECONNRESET|socket hang up/i.test(
82
+ message
83
+ );
84
+ }
85
+ __name(isRecoverableLiveError, "isRecoverableLiveError");
86
+ function sleep(ms) {
87
+ return new Promise((resolve) => setTimeout(resolve, ms));
88
+ }
89
+ __name(sleep, "sleep");
90
+ const LIVE_KEYS = [
91
+ "responseModalities",
92
+ "speechConfig",
93
+ "outputAudioTranscription",
94
+ "inputAudioTranscription",
95
+ "realtimeInputConfig",
96
+ "contextWindowCompression",
97
+ "proactivity",
98
+ "enableAffectiveDialog"
99
+ ];
100
+ function applyLiveRunConfig(runConfig, llmRequest) {
101
+ var _a2;
102
+ if (!runConfig) return;
103
+ const liveConfig = (_a2 = llmRequest.liveConnectConfig) != null ? _a2 : llmRequest.liveConnectConfig = {};
104
+ for (const k of LIVE_KEYS) {
105
+ if (runConfig[k] !== void 0) {
106
+ liveConfig[k] = runConfig[k];
107
+ }
108
+ }
109
+ }
110
+ __name(applyLiveRunConfig, "applyLiveRunConfig");
50
111
  const ADK_AGENT_NAME_LABEL_KEY = "adk_agent_name";
51
112
  async function convertToolUnionToTools(toolUnion, context2) {
52
113
  if (isBaseTool(toolUnion)) {
53
114
  return [toolUnion];
54
115
  }
116
+ if (isBaseNode(toolUnion)) {
117
+ return [new NodeTool(toolUnion)];
118
+ }
55
119
  return await toolUnion.getTools(context2);
56
120
  }
121
+ __name(convertToolUnionToTools, "convertToolUnionToTools");
57
122
  const LLM_AGENT_SIGNATURE_SYMBOL = Symbol.for("google.adk.llmAgent");
58
123
  function isLlmAgent(obj) {
59
124
  return typeof obj === "object" && obj !== null && LLM_AGENT_SIGNATURE_SYMBOL in obj && obj[LLM_AGENT_SIGNATURE_SYMBOL] === true;
60
125
  }
61
- class LlmAgent extends (_b = BaseAgent, _a = LLM_AGENT_SIGNATURE_SYMBOL, _b) {
126
+ __name(isLlmAgent, "isLlmAgent");
127
+ const _LlmAgent = class _LlmAgent extends (_b = BaseAgent, _a = LLM_AGENT_SIGNATURE_SYMBOL, _b) {
62
128
  constructor(config) {
63
- var _a2, _b2, _c, _d, _e, _f, _g, _h, _i;
64
- super(config);
129
+ var _a2, _b2, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l;
130
+ super({
131
+ ...config,
132
+ rerunOnResume: (_a2 = config.rerunOnResume) != null ? _a2 : true,
133
+ waitForOutput: (_b2 = config.waitForOutput) != null ? _b2 : config.mode === "task"
134
+ });
65
135
  /** A unique symbol to identify ADK LLM agent class. */
66
136
  this[_a] = true;
67
137
  this.model = config.model;
68
- this.instruction = (_a2 = config.instruction) != null ? _a2 : "";
69
- this.globalInstruction = (_b2 = config.globalInstruction) != null ? _b2 : "";
70
- this.tools = (_c = config.tools) != null ? _c : [];
138
+ this.instruction = (_c = config.instruction) != null ? _c : "";
139
+ this.globalInstruction = (_d = config.globalInstruction) != null ? _d : "";
140
+ this.tools = (_e = config.tools) != null ? _e : [];
71
141
  this.generateContentConfig = config.generateContentConfig;
72
- this.disallowTransferToParent = (_d = config.disallowTransferToParent) != null ? _d : false;
73
- this.disallowTransferToPeers = (_e = config.disallowTransferToPeers) != null ? _e : false;
74
- this.includeContents = (_f = config.includeContents) != null ? _f : "default";
142
+ this.disallowTransferToParent = (_f = config.disallowTransferToParent) != null ? _f : false;
143
+ this.disallowTransferToPeers = (_g = config.disallowTransferToPeers) != null ? _g : false;
144
+ this.includeContents = (_h = config.includeContents) != null ? _h : "default";
145
+ this.includeContentsExplicit = config.includeContents !== void 0;
146
+ this.inputSchemaSource = config.inputSchema;
147
+ this.outputSchemaSource = config.outputSchema;
75
148
  this.inputSchema = isZodObject(config.inputSchema) ? zodObjectToSchema(config.inputSchema) : config.inputSchema;
76
149
  this.outputSchema = isZodObject(config.outputSchema) ? zodObjectToSchema(config.outputSchema) : config.outputSchema;
150
+ this.mode = config.mode;
77
151
  this.outputKey = config.outputKey;
78
152
  this.beforeModelCallback = config.beforeModelCallback;
79
153
  this.afterModelCallback = config.afterModelCallback;
80
154
  this.beforeToolCallback = config.beforeToolCallback;
81
155
  this.afterToolCallback = config.afterToolCallback;
82
156
  this.codeExecutor = config.codeExecutor;
83
- this.requestProcessors = (_g = config.requestProcessors) != null ? _g : [
157
+ this.requestProcessors = (_i = config.requestProcessors) != null ? _i : [
84
158
  BASIC_LLM_REQUEST_PROCESSOR,
85
159
  AUTH_PREPROCESSOR,
86
160
  IDENTITY_LLM_REQUEST_PROCESSOR,
87
161
  INSTRUCTIONS_LLM_REQUEST_PROCESSOR,
88
162
  REQUEST_CONFIRMATION_LLM_REQUEST_PROCESSOR,
163
+ REQUEST_INPUT_LLM_REQUEST_PROCESSOR,
89
164
  CONTENT_REQUEST_PROCESSOR,
90
165
  INTERACTIONS_REQUEST_PROCESSOR,
91
166
  CODE_EXECUTION_REQUEST_PROCESSOR,
@@ -107,8 +182,8 @@ class LlmAgent extends (_b = BaseAgent, _a = LLM_AGENT_SIGNATURE_SYMBOL, _b) {
107
182
  );
108
183
  }
109
184
  }
110
- this.responseProcessors = (_h = config.responseProcessors) != null ? _h : [];
111
- const agentTransferDisabled = this.disallowTransferToParent && this.disallowTransferToPeers && !((_i = this.subAgents) == null ? void 0 : _i.length);
185
+ this.responseProcessors = (_j = config.responseProcessors) != null ? _j : [];
186
+ const agentTransferDisabled = this.disallowTransferToParent && this.disallowTransferToPeers && !((_k = this.subAgents) == null ? void 0 : _k.length);
112
187
  if (!agentTransferDisabled) {
113
188
  this.requestProcessors.push(AGENT_TRANSFER_LLM_REQUEST_PROCESSOR);
114
189
  }
@@ -130,13 +205,14 @@ class LlmAgent extends (_b = BaseAgent, _a = LLM_AGENT_SIGNATURE_SYMBOL, _b) {
130
205
  this.generateContentConfig = {};
131
206
  }
132
207
  if (this.outputSchema) {
133
- if (!this.disallowTransferToParent || !this.disallowTransferToPeers) {
208
+ const transferRequested = config.disallowTransferToParent === false || config.disallowTransferToPeers === false || !!((_l = this.subAgents) == null ? void 0 : _l.length);
209
+ if (transferRequested) {
134
210
  logger.warn(
135
211
  `Invalid config for agent ${this.name}: outputSchema cannot co-exist with agent transfer configurations. Setting disallowTransferToParent=true, disallowTransferToPeers=true`
136
212
  );
137
- this.disallowTransferToParent = true;
138
- this.disallowTransferToPeers = true;
139
213
  }
214
+ this.disallowTransferToParent = true;
215
+ this.disallowTransferToPeers = true;
140
216
  }
141
217
  }
142
218
  /**
@@ -160,6 +236,16 @@ class LlmAgent extends (_b = BaseAgent, _a = LLM_AGENT_SIGNATURE_SYMBOL, _b) {
160
236
  }
161
237
  throw new Error(`No model found for ${this.name}.`);
162
238
  }
239
+ /**
240
+ * The `finish_task` tool for this agent (task mode). Lazily created and cached
241
+ * so its declaration (derived from `outputSchema`) is stable across turns.
242
+ */
243
+ get finishTaskTool() {
244
+ if (!this._finishTaskTool) {
245
+ this._finishTaskTool = new FinishTaskTool(this.outputSchema);
246
+ }
247
+ return this._finishTaskTool;
248
+ }
163
249
  /**
164
250
  * The resolved instruction field to construct instruction for this
165
251
  * agent.
@@ -232,7 +318,7 @@ class LlmAgent extends (_b = BaseAgent, _a = LLM_AGENT_SIGNATURE_SYMBOL, _b) {
232
318
  * This method is only for use by Agent Development Kit.
233
319
  */
234
320
  get canonicalBeforeModelCallbacks() {
235
- return LlmAgent.normalizeCallbackArray(this.beforeModelCallback);
321
+ return _LlmAgent.normalizeCallbackArray(this.beforeModelCallback);
236
322
  }
237
323
  /**
238
324
  * The resolved afterModelCallback field as a list of
@@ -241,7 +327,7 @@ class LlmAgent extends (_b = BaseAgent, _a = LLM_AGENT_SIGNATURE_SYMBOL, _b) {
241
327
  * This method is only for use by Agent Development Kit.
242
328
  */
243
329
  get canonicalAfterModelCallbacks() {
244
- return LlmAgent.normalizeCallbackArray(this.afterModelCallback);
330
+ return _LlmAgent.normalizeCallbackArray(this.afterModelCallback);
245
331
  }
246
332
  /**
247
333
  * The resolved beforeToolCallback field as a list of
@@ -250,7 +336,7 @@ class LlmAgent extends (_b = BaseAgent, _a = LLM_AGENT_SIGNATURE_SYMBOL, _b) {
250
336
  * This method is only for use by Agent Development Kit.
251
337
  */
252
338
  get canonicalBeforeToolCallbacks() {
253
- return LlmAgent.normalizeCallbackArray(this.beforeToolCallback);
339
+ return _LlmAgent.normalizeCallbackArray(this.beforeToolCallback);
254
340
  }
255
341
  /**
256
342
  * The resolved afterToolCallback field as a list of AfterToolCallback.
@@ -258,7 +344,7 @@ class LlmAgent extends (_b = BaseAgent, _a = LLM_AGENT_SIGNATURE_SYMBOL, _b) {
258
344
  * This method is only for use by Agent Development Kit.
259
345
  */
260
346
  get canonicalAfterToolCallbacks() {
261
- return LlmAgent.normalizeCallbackArray(this.afterToolCallback);
347
+ return _LlmAgent.normalizeCallbackArray(this.afterToolCallback);
262
348
  }
263
349
  /**
264
350
  * Saves the agent's final response to the session state if configured.
@@ -301,14 +387,53 @@ class LlmAgent extends (_b = BaseAgent, _a = LLM_AGENT_SIGNATURE_SYMBOL, _b) {
301
387
  if (!resultStr.trim()) {
302
388
  return;
303
389
  }
390
+ let parsed;
304
391
  try {
305
- result = JSON.parse(resultStr);
392
+ parsed = JSON.parse(resultStr);
306
393
  } catch (e) {
307
394
  logger.error(`Error parsing output for agent ${this.name}`, e);
395
+ event.actions.stateDelta[this.outputKey] = resultStr;
396
+ return;
397
+ }
398
+ try {
399
+ result = this.validateOutput(parsed);
400
+ } catch (e) {
401
+ logger.error(
402
+ `Output for agent ${this.name} does not satisfy its output schema`,
403
+ e
404
+ );
405
+ result = parsed;
308
406
  }
309
407
  }
310
408
  event.actions.stateDelta[this.outputKey] = result;
311
409
  }
410
+ /**
411
+ * Validates a value against this agent's output schema, in whichever dialect
412
+ * it was declared, and returns the parsed value.
413
+ *
414
+ * Prefers the schema as supplied ({@link outputSchemaSource}) over the genai
415
+ * form derived from it, since the conversion drops constraints Zod can
416
+ * express and genai cannot.
417
+ *
418
+ * @throws if the value does not satisfy the schema.
419
+ */
420
+ validateOutput(value) {
421
+ var _a2;
422
+ return parseWithSchema((_a2 = this.outputSchemaSource) != null ? _a2 : this.outputSchema, value);
423
+ }
424
+ /**
425
+ * Runs this agent as a workflow node.
426
+ *
427
+ * Where {@link BaseAgent.runImpl} delegates straight to `runAsync`, an
428
+ * `LlmAgent` has a node input to inject into the conversation, instruction
429
+ * placeholders to resolve against it, a reply to promote to node output, and
430
+ * — in `task` mode — a `finish_task` round-trip to drive. All of that lives
431
+ * in `runLlmAgentAsNode`, mirroring adk-python's `LlmAgent._run_impl`
432
+ * delegating to `run_llm_agent_as_node`.
433
+ */
434
+ async *runImpl(ctx, nodeInput) {
435
+ yield* runLlmAgentAsNode(this, ctx, nodeInput);
436
+ }
312
437
  async *runAsyncImpl(context2) {
313
438
  var _a2, _b2;
314
439
  while (true) {
@@ -368,10 +493,350 @@ class LlmAgent extends (_b = BaseAgent, _a = LLM_AGENT_SIGNATURE_SYMBOL, _b) {
368
493
  * times. Subsequent reconnects skip `sendHistory` because the server
369
494
  * already holds the conversation state associated with the handle.
370
495
  */
371
- // eslint-disable-next-line require-yield
372
- async *runLiveFlow(_invocationContext) {
373
- await Promise.resolve();
374
- throw new Error("LlmAgent.runLiveFlow not implemented");
496
+ async *runLiveFlow(invocationContext) {
497
+ var _a2, _b2, _c, _d;
498
+ if (!invocationContext.liveRequestQueue) {
499
+ throw new Error("liveRequestQueue is required for LlmAgent.runLiveFlow.");
500
+ }
501
+ const llmRequest = {
502
+ contents: [],
503
+ toolsDict: {},
504
+ liveConnectConfig: {}
505
+ };
506
+ for await (const event of this.runLivePreprocess(
507
+ invocationContext,
508
+ llmRequest
509
+ )) {
510
+ yield event;
511
+ }
512
+ if (invocationContext.endInvocation || ((_a2 = invocationContext.abortSignal) == null ? void 0 : _a2.aborted)) {
513
+ return;
514
+ }
515
+ applyLiveRunConfig(invocationContext.runConfig, llmRequest);
516
+ const llm = this.canonicalModel;
517
+ let reconnectAttempts = 0;
518
+ while (true) {
519
+ if ((_b2 = invocationContext.abortSignal) == null ? void 0 : _b2.aborted) {
520
+ return;
521
+ }
522
+ const handle = invocationContext.liveSessionResumptionHandle;
523
+ if (handle) {
524
+ (_c = llmRequest.liveConnectConfig) != null ? _c : llmRequest.liveConnectConfig = {};
525
+ llmRequest.liveConnectConfig.sessionResumption = {
526
+ handle,
527
+ transparent: true
528
+ };
529
+ }
530
+ let connection;
531
+ try {
532
+ connection = await llm.connect(llmRequest);
533
+ } catch (err) {
534
+ if (isRecoverableLiveError(err) && invocationContext.liveSessionResumptionHandle) {
535
+ reconnectAttempts += 1;
536
+ if (reconnectAttempts > MAX_LIVE_RECONNECT_ATTEMPTS) {
537
+ logger.error(
538
+ `Max live reconnection attempts reached (${reconnectAttempts}).`,
539
+ err
540
+ );
541
+ throw err;
542
+ }
543
+ logger.info(
544
+ `Live connect failed (attempt ${reconnectAttempts}); retrying with session handle.`,
545
+ err
546
+ );
547
+ continue;
548
+ }
549
+ throw err;
550
+ }
551
+ if (llmRequest.contents.length > 0 && !invocationContext.liveSessionResumptionHandle) {
552
+ await connection.sendHistory(llmRequest.contents);
553
+ }
554
+ let sendError;
555
+ const sendAbort = new AbortController();
556
+ const combinedAbort = invocationContext.abortSignal ? AbortSignal.any([invocationContext.abortSignal, sendAbort.signal]) : sendAbort.signal;
557
+ const sendTask = this.runSendLoop(
558
+ connection,
559
+ invocationContext.liveRequestQueue,
560
+ combinedAbort,
561
+ invocationContext.abortSignal
562
+ );
563
+ sendTask.catch((error) => {
564
+ logger.error("Error in live send loop:", error);
565
+ sendError = error;
566
+ sendAbort.abort(error);
567
+ connection.close().catch((err) => {
568
+ logger.warn("Error closing connection after send loop failure:", err);
569
+ });
570
+ });
571
+ let reconnect = false;
572
+ try {
573
+ yield* this.runReceiveLoop(
574
+ invocationContext,
575
+ connection,
576
+ llmRequest,
577
+ sendAbort
578
+ );
579
+ } catch (err) {
580
+ const canReconnect = !!invocationContext.liveSessionResumptionHandle && (err instanceof LiveReconnectSignal || isRecoverableLiveError(err));
581
+ if (canReconnect) {
582
+ reconnect = true;
583
+ logger.info(
584
+ "Live connection closed; will reconnect with session handle.",
585
+ err
586
+ );
587
+ } else {
588
+ await this.teardownLiveConnection(sendAbort, connection, sendTask);
589
+ throw err;
590
+ }
591
+ }
592
+ await this.teardownLiveConnection(sendAbort, connection, sendTask);
593
+ if ((_d = invocationContext.abortSignal) == null ? void 0 : _d.aborted) {
594
+ return;
595
+ }
596
+ if (sendError) {
597
+ throw sendError;
598
+ }
599
+ if (!reconnect) {
600
+ return;
601
+ }
602
+ reconnectAttempts += 1;
603
+ if (reconnectAttempts > MAX_LIVE_RECONNECT_ATTEMPTS) {
604
+ throw new Error(
605
+ `Max live reconnection attempts reached (${reconnectAttempts}).`
606
+ );
607
+ }
608
+ }
609
+ }
610
+ async *runLivePreprocess(invocationContext, llmRequest) {
611
+ var _a2, _b2;
612
+ for (const processor of this.requestProcessors) {
613
+ for await (const event of processor.runAsync(
614
+ invocationContext,
615
+ llmRequest
616
+ )) {
617
+ if ((_a2 = invocationContext.abortSignal) == null ? void 0 : _a2.aborted) {
618
+ return;
619
+ }
620
+ yield event;
621
+ }
622
+ }
623
+ for (const toolUnion of this.tools) {
624
+ const toolContext = new Context({ invocationContext });
625
+ const tools = (await convertToolUnionToTools(
626
+ toolUnion,
627
+ new ReadonlyContext(invocationContext)
628
+ )).filter(
629
+ (tool) => !llmRequest.allowedTools || llmRequest.allowedTools.includes(tool.name)
630
+ );
631
+ for (const tool of tools) {
632
+ await tool.processLlmRequest({ toolContext, llmRequest });
633
+ if ((_b2 = invocationContext.abortSignal) == null ? void 0 : _b2.aborted) {
634
+ return;
635
+ }
636
+ }
637
+ }
638
+ }
639
+ async runSendLoop(connection, liveRequestQueue, sendAbortSignal, invocationAbortSignal) {
640
+ while (true) {
641
+ if ((sendAbortSignal == null ? void 0 : sendAbortSignal.aborted) || (invocationAbortSignal == null ? void 0 : invocationAbortSignal.aborted)) {
642
+ return;
643
+ }
644
+ let liveRequest;
645
+ try {
646
+ liveRequest = await liveRequestQueue.get(sendAbortSignal);
647
+ } catch (error) {
648
+ if ((sendAbortSignal == null ? void 0 : sendAbortSignal.aborted) || (invocationAbortSignal == null ? void 0 : invocationAbortSignal.aborted)) {
649
+ return;
650
+ }
651
+ throw error;
652
+ }
653
+ try {
654
+ await this.dispatchLiveRequest(connection, liveRequest);
655
+ } catch (error) {
656
+ if ((sendAbortSignal == null ? void 0 : sendAbortSignal.aborted) || (invocationAbortSignal == null ? void 0 : invocationAbortSignal.aborted)) {
657
+ logger.debug("Send failed after teardown:", error);
658
+ return;
659
+ }
660
+ logger.error("Error dispatching live request to model:", error);
661
+ throw error;
662
+ }
663
+ await Promise.resolve();
664
+ if (liveRequest.close) {
665
+ return;
666
+ }
667
+ }
668
+ }
669
+ async dispatchLiveRequest(connection, liveRequest) {
670
+ var _a2, _b2;
671
+ if (liveRequest.close) {
672
+ await connection.close();
673
+ return;
674
+ }
675
+ if (liveRequest.activityStart) {
676
+ await ((_a2 = connection.sendActivityStart) == null ? void 0 : _a2.call(connection));
677
+ return;
678
+ }
679
+ if (liveRequest.activityEnd) {
680
+ await ((_b2 = connection.sendActivityEnd) == null ? void 0 : _b2.call(connection));
681
+ return;
682
+ }
683
+ if (liveRequest.blob) {
684
+ await connection.sendRealtime(liveRequest.blob);
685
+ return;
686
+ }
687
+ if (liveRequest.content) {
688
+ await connection.sendContent(liveRequest.content);
689
+ }
690
+ }
691
+ /**
692
+ * Tears down a live attempt: stops the send loop, closes the connection
693
+ * (swallowing close errors), and waits for the send task to settle. Used
694
+ * before reconnecting or propagating an error.
695
+ */
696
+ async teardownLiveConnection(sendAbort, connection, sendTask) {
697
+ sendAbort.abort();
698
+ try {
699
+ await connection.close();
700
+ } catch (error) {
701
+ logger.warn("Error closing live connection:", error);
702
+ }
703
+ await sendTask.catch(() => void 0);
704
+ }
705
+ async *runReceiveLoop(invocationContext, connection, llmRequest, sendAbort) {
706
+ var _a2, _b2, _c, _d;
707
+ for await (const llmResponse of connection.receive()) {
708
+ if ((_a2 = invocationContext.abortSignal) == null ? void 0 : _a2.aborted) {
709
+ return;
710
+ }
711
+ if (sendAbort.signal.aborted) {
712
+ return;
713
+ }
714
+ if ((_b2 = llmResponse.liveSessionResumptionUpdate) == null ? void 0 : _b2.newHandle) {
715
+ invocationContext.liveSessionResumptionHandle = llmResponse.liveSessionResumptionUpdate.newHandle;
716
+ }
717
+ if (llmResponse.goAway) {
718
+ logger.info("Received goAway from live server; triggering reconnect.");
719
+ throw new LiveReconnectSignal("goAway");
720
+ }
721
+ const author = llmResponse.inputTranscription || ((_c = llmResponse.content) == null ? void 0 : _c.role) === "user" ? "user" : this.name;
722
+ const modelResponseEvent = createEvent({
723
+ invocationId: invocationContext.invocationId,
724
+ author,
725
+ branch: invocationContext.branch
726
+ });
727
+ for await (const event of this.postprocessLive(
728
+ invocationContext,
729
+ llmRequest,
730
+ llmResponse,
731
+ modelResponseEvent
732
+ )) {
733
+ yield event;
734
+ if (event.content && getFunctionResponses(event).length > 0) {
735
+ await connection.sendContent(event.content);
736
+ }
737
+ const taskCompleted = getFunctionResponses(event).some(
738
+ (r) => r.name === "task_completed"
739
+ );
740
+ if (taskCompleted) {
741
+ await sleep(TRANSFER_AGENT_DELAY_MS);
742
+ return;
743
+ }
744
+ const transferTo = (_d = event.actions) == null ? void 0 : _d.transferToAgent;
745
+ if (transferTo) {
746
+ await sleep(TRANSFER_AGENT_DELAY_MS);
747
+ sendAbort.abort();
748
+ await connection.close();
749
+ const agent = requireAgent(invocationContext);
750
+ const subAgent = agent.rootAgent.findAgent(transferTo);
751
+ if (subAgent) {
752
+ const previousAgent = invocationContext.agent;
753
+ invocationContext.agent = subAgent;
754
+ const previousHandle = invocationContext.liveSessionResumptionHandle;
755
+ invocationContext.liveSessionResumptionHandle = void 0;
756
+ try {
757
+ for await (const subEvent of subAgent.runLive(
758
+ invocationContext
759
+ )) {
760
+ yield subEvent;
761
+ }
762
+ } finally {
763
+ invocationContext.agent = previousAgent;
764
+ invocationContext.liveSessionResumptionHandle = previousHandle;
765
+ }
766
+ }
767
+ return;
768
+ }
769
+ }
770
+ }
771
+ }
772
+ async *postprocessLive(invocationContext, llmRequest, llmResponse, modelResponseEvent) {
773
+ for (const processor of this.responseProcessors) {
774
+ for await (const event of processor.runAsync(
775
+ invocationContext,
776
+ llmResponse
777
+ )) {
778
+ yield event;
779
+ }
780
+ }
781
+ if (!llmResponse.content && !llmResponse.errorCode && !llmResponse.interrupted && !llmResponse.turnComplete && !llmResponse.inputTranscription && !llmResponse.outputTranscription && !llmResponse.usageMetadata && !llmResponse.liveSessionResumptionUpdate) {
782
+ return;
783
+ }
784
+ if (llmResponse.liveSessionResumptionUpdate) {
785
+ yield createEvent({
786
+ ...modelResponseEvent,
787
+ liveSessionResumptionUpdate: llmResponse.liveSessionResumptionUpdate
788
+ });
789
+ return;
790
+ }
791
+ if (llmResponse.inputTranscription) {
792
+ yield createEvent({
793
+ ...modelResponseEvent,
794
+ inputTranscription: llmResponse.inputTranscription,
795
+ partial: llmResponse.partial
796
+ });
797
+ return;
798
+ }
799
+ if (llmResponse.outputTranscription) {
800
+ yield createEvent({
801
+ ...modelResponseEvent,
802
+ outputTranscription: llmResponse.outputTranscription,
803
+ partial: llmResponse.partial
804
+ });
805
+ return;
806
+ }
807
+ const mergedEvent = createEvent({
808
+ ...modelResponseEvent,
809
+ ...llmResponse
810
+ });
811
+ const functionCalls = getFunctionCalls(mergedEvent);
812
+ if (mergedEvent.content && functionCalls.length) {
813
+ populateClientFunctionCallId(mergedEvent);
814
+ mergedEvent.longRunningToolIds = Array.from(
815
+ getLongRunningFunctionCalls(functionCalls, llmRequest.toolsDict)
816
+ );
817
+ }
818
+ yield mergedEvent;
819
+ if (!functionCalls.length) {
820
+ return;
821
+ }
822
+ const functionResponseEvent = await handleFunctionCallsAsync({
823
+ invocationContext,
824
+ functionCallEvent: mergedEvent,
825
+ toolsDict: llmRequest.toolsDict,
826
+ beforeToolCallbacks: this.canonicalBeforeToolCallbacks,
827
+ afterToolCallbacks: this.canonicalAfterToolCallbacks
828
+ });
829
+ if (!functionResponseEvent) {
830
+ return;
831
+ }
832
+ const authEvent = generateAuthEvent(
833
+ invocationContext,
834
+ functionResponseEvent
835
+ );
836
+ if (authEvent) {
837
+ yield authEvent;
838
+ }
839
+ yield functionResponseEvent;
375
840
  }
376
841
  async *runOneStepAsync(invocationContext) {
377
842
  var _a2, _b2, _c;
@@ -392,22 +857,32 @@ class LlmAgent extends (_b = BaseAgent, _a = LLM_AGENT_SIGNATURE_SYMBOL, _b) {
392
857
  }
393
858
  }
394
859
  const allTools = [...this.tools];
395
- if (this.outputSchema && allTools.length > 0) {
860
+ if (this.mode === "task") {
861
+ allTools.push(this.finishTaskTool);
862
+ } else if (this.outputSchema && allTools.length > 0 && !canUseOutputSchemaWithTools(this.canonicalModel.model)) {
396
863
  const setModelResponseTool = new FunctionTool({
397
864
  name: "set_model_response",
398
865
  description: "Call this tool to submit your final response conforming to the output schema. Use this tool only when you have collected all the information and are ready to return the final answer.",
399
866
  parameters: this.outputSchema,
400
- execute: async (args, toolContext) => {
867
+ execute: /* @__PURE__ */ __name(async (args, toolContext) => {
401
868
  if (toolContext) {
402
869
  toolContext.actions.skipSummarization = true;
403
870
  }
404
871
  return JSON.stringify(args);
405
- }
872
+ }, "execute")
406
873
  });
407
874
  allTools.push(setModelResponseTool);
408
875
  }
876
+ const modelResponseEvent = createEvent({
877
+ invocationId: invocationContext.invocationId,
878
+ author: this.name,
879
+ branch: invocationContext.branch
880
+ });
409
881
  for (const toolUnion of allTools) {
410
- const toolContext = new Context({ invocationContext });
882
+ const toolContext = new Context({
883
+ invocationContext,
884
+ eventActions: modelResponseEvent.actions
885
+ });
411
886
  const tools = (await convertToolUnionToTools(
412
887
  toolUnion,
413
888
  new ReadonlyContext(invocationContext)
@@ -424,18 +899,13 @@ class LlmAgent extends (_b = BaseAgent, _a = LLM_AGENT_SIGNATURE_SYMBOL, _b) {
424
899
  if (invocationContext.endInvocation || ((_c = invocationContext.abortSignal) == null ? void 0 : _c.aborted)) {
425
900
  return;
426
901
  }
427
- const modelResponseEvent = createEvent({
428
- invocationId: invocationContext.invocationId,
429
- author: this.name,
430
- branch: invocationContext.branch
431
- });
432
902
  const span = tracer.startSpan("call_llm");
433
903
  const ctx = trace.setSpan(context.active(), span);
434
904
  yield* runAsyncGeneratorWithOtelContext(
435
905
  ctx,
436
906
  this,
437
907
  async function* () {
438
- const responsesGenerator = async function* () {
908
+ const responsesGenerator = /* @__PURE__ */ __name(async function* () {
439
909
  var _a3, _b3;
440
910
  for await (const llmResponse of this.callLlmAsync(
441
911
  invocationContext,
@@ -459,7 +929,7 @@ class LlmAgent extends (_b = BaseAgent, _a = LLM_AGENT_SIGNATURE_SYMBOL, _b) {
459
929
  yield event;
460
930
  }
461
931
  }
462
- };
932
+ }, "responsesGenerator");
463
933
  yield* this.runAndHandleError(
464
934
  responsesGenerator.call(this),
465
935
  invocationContext,
@@ -483,7 +953,8 @@ class LlmAgent extends (_b = BaseAgent, _a = LLM_AGENT_SIGNATURE_SYMBOL, _b) {
483
953
  yield event;
484
954
  }
485
955
  }
486
- if ((!llmResponse.content || ((_b2 = llmResponse.content.parts) == null ? void 0 : _b2.length) === 0) && !llmResponse.errorCode && !llmResponse.interrupted) {
956
+ const isUsageOnlyReport = !llmResponse.content && !!llmResponse.usageMetadata;
957
+ if ((!llmResponse.content || ((_b2 = llmResponse.content.parts) == null ? void 0 : _b2.length) === 0) && !llmResponse.errorCode && !llmResponse.interrupted && !isUsageOnlyReport) {
487
958
  return;
488
959
  }
489
960
  const mergedEvent = createEvent({
@@ -514,13 +985,32 @@ class LlmAgent extends (_b = BaseAgent, _a = LLM_AGENT_SIGNATURE_SYMBOL, _b) {
514
985
  invocationContext.endInvocation = true;
515
986
  return;
516
987
  }
517
- const functionResponseEvent = await handleFunctionCallsAsync({
518
- invocationContext,
519
- functionCallEvent: mergedEvent,
520
- toolsDict: llmRequest.toolsDict,
521
- beforeToolCallbacks: this.canonicalBeforeToolCallbacks,
522
- afterToolCallbacks: this.canonicalAfterToolCallbacks
523
- });
988
+ const eventQueue = new AsyncQueue();
989
+ invocationContext.eventQueue = eventQueue;
990
+ const toolTask = (async () => {
991
+ try {
992
+ const event = await handleFunctionCallsAsync({
993
+ invocationContext,
994
+ functionCallEvent: mergedEvent,
995
+ toolsDict: llmRequest.toolsDict,
996
+ beforeToolCallbacks: this.canonicalBeforeToolCallbacks,
997
+ afterToolCallbacks: this.canonicalAfterToolCallbacks
998
+ });
999
+ return { event };
1000
+ } catch (error) {
1001
+ return { event: null, error };
1002
+ } finally {
1003
+ eventQueue.close();
1004
+ }
1005
+ })();
1006
+ for await (const queuedEvent of eventQueue) {
1007
+ yield queuedEvent;
1008
+ }
1009
+ const { event: functionResponseEvent, error: toolError } = await toolTask;
1010
+ invocationContext.eventQueue = void 0;
1011
+ if (toolError) {
1012
+ throw toolError;
1013
+ }
524
1014
  if (!functionResponseEvent || ((_e = invocationContext.abortSignal) == null ? void 0 : _e.aborted)) {
525
1015
  return;
526
1016
  }
@@ -566,7 +1056,7 @@ class LlmAgent extends (_b = BaseAgent, _a = LLM_AGENT_SIGNATURE_SYMBOL, _b) {
566
1056
  * @throws Error if the agent is not found.
567
1057
  */
568
1058
  getAgentByName(invocationContext, agentName) {
569
- const rootAgent = invocationContext.agent.rootAgent;
1059
+ const rootAgent = requireAgent(invocationContext).rootAgent;
570
1060
  const agentToRun = rootAgent.findAgent(agentName);
571
1061
  if (!agentToRun) {
572
1062
  throw new Error(`Agent ${agentName} not found in the agent tree.`);
@@ -741,7 +1231,9 @@ class LlmAgent extends (_b = BaseAgent, _a = LLM_AGENT_SIGNATURE_SYMBOL, _b) {
741
1231
  // TODO - b/425992518: omitted Py LlmAgent features.
742
1232
  // - code_executor
743
1233
  // - configurable agents by yaml config
744
- }
1234
+ };
1235
+ __name(_LlmAgent, "LlmAgent");
1236
+ let LlmAgent = _LlmAgent;
745
1237
  export {
746
1238
  LlmAgent,
747
1239
  isLlmAgent