@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
@@ -9,6 +9,7 @@ var __defProp = Object.defineProperty;
9
9
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
10
10
  var __getOwnPropNames = Object.getOwnPropertyNames;
11
11
  var __hasOwnProp = Object.prototype.hasOwnProperty;
12
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
12
13
  var __export = (target, all) => {
13
14
  for (var name in all)
14
15
  __defProp(target, name, { get: all[name], enumerable: true });
@@ -29,18 +30,26 @@ __export(llm_agent_exports, {
29
30
  });
30
31
  module.exports = __toCommonJS(llm_agent_exports);
31
32
  var import_api = require("@opentelemetry/api");
33
+ var import_finish_task_tool = require("../tools/finish_task_tool.js");
32
34
  var import_function_tool = require("../tools/function_tool.js");
35
+ var import_async_queue = require("../utils/async_queue.js");
36
+ var import_base_node = require("../workflow/base_node.js");
37
+ var import_node_tool = require("../workflow/nodes/node_tool.js");
38
+ var import_run_llm_agent_as_node = require("../workflow/run_llm_agent_as_node.js");
33
39
  var import_event = require("../events/event.js");
34
40
  var import_base_llm = require("../models/base_llm.js");
35
41
  var import_registry = require("../models/registry.js");
36
42
  var import_base_tool = require("../tools/base_tool.js");
37
43
  var import_logger = require("../utils/logger.js");
44
+ var import_output_schema_utils = require("../utils/output_schema_utils.js");
38
45
  var import_context = require("./context.js");
39
46
  var import_tracing = require("../telemetry/tracing.js");
47
+ var import_schema = require("../utils/schema.js");
40
48
  var import_simple_zod_to_json = require("../utils/simple_zod_to_json.js");
41
49
  var import_base_agent = require("./base_agent.js");
42
50
  var import_functions = require("./functions.js");
43
51
  var import_auth_preprocessor = require("../auth/auth_preprocessor.js");
52
+ var import_invocation_context = require("./invocation_context.js");
44
53
  var import_agent_transfer_llm_request_processor = require("./processors/agent_transfer_llm_request_processor.js");
45
54
  var import_basic_llm_request_processor = require("./processors/basic_llm_request_processor.js");
46
55
  var import_code_execution_request_processor = require("./processors/code_execution_request_processor.js");
@@ -50,6 +59,7 @@ var import_identity_llm_request_processor = require("./processors/identity_llm_r
50
59
  var import_instructions_llm_request_processor = require("./processors/instructions_llm_request_processor.js");
51
60
  var import_interactions_request_processor = require("./processors/interactions_request_processor.js");
52
61
  var import_request_confirmation_llm_request_processor = require("./processors/request_confirmation_llm_request_processor.js");
62
+ var import_request_input_llm_request_processor = require("./processors/request_input_llm_request_processor.js");
53
63
  var import_tool_filter_request_processor = require("./processors/tool_filter_request_processor.js");
54
64
  var import_readonly_context = require("./readonly_context.js");
55
65
  var import_run_config = require("./run_config.js");
@@ -59,45 +69,109 @@ var import_run_config = require("./run_config.js");
59
69
  * SPDX-License-Identifier: Apache-2.0
60
70
  */
61
71
  var _a, _b;
72
+ const MAX_LIVE_RECONNECT_ATTEMPTS = 5;
73
+ const TRANSFER_AGENT_DELAY_MS = 1e3;
74
+ const _LiveReconnectSignal = class _LiveReconnectSignal extends Error {
75
+ constructor(reason) {
76
+ super(`live reconnect requested: ${reason}`);
77
+ this.reason = reason;
78
+ this.name = "LiveReconnectSignal";
79
+ }
80
+ };
81
+ __name(_LiveReconnectSignal, "LiveReconnectSignal");
82
+ let LiveReconnectSignal = _LiveReconnectSignal;
83
+ function isRecoverableLiveError(err) {
84
+ var _a2;
85
+ if (err instanceof LiveReconnectSignal) return true;
86
+ if (!(err instanceof Error)) return false;
87
+ const code = err.code;
88
+ if (code === 1006 || code === 1011 || code === 1012) {
89
+ return true;
90
+ }
91
+ const message = (_a2 = err.message) != null ? _a2 : "";
92
+ return /ConnectionClosed|connection closed|ECONNRESET|socket hang up/i.test(
93
+ message
94
+ );
95
+ }
96
+ __name(isRecoverableLiveError, "isRecoverableLiveError");
97
+ function sleep(ms) {
98
+ return new Promise((resolve) => setTimeout(resolve, ms));
99
+ }
100
+ __name(sleep, "sleep");
101
+ const LIVE_KEYS = [
102
+ "responseModalities",
103
+ "speechConfig",
104
+ "outputAudioTranscription",
105
+ "inputAudioTranscription",
106
+ "realtimeInputConfig",
107
+ "contextWindowCompression",
108
+ "proactivity",
109
+ "enableAffectiveDialog"
110
+ ];
111
+ function applyLiveRunConfig(runConfig, llmRequest) {
112
+ var _a2;
113
+ if (!runConfig) return;
114
+ const liveConfig = (_a2 = llmRequest.liveConnectConfig) != null ? _a2 : llmRequest.liveConnectConfig = {};
115
+ for (const k of LIVE_KEYS) {
116
+ if (runConfig[k] !== void 0) {
117
+ liveConfig[k] = runConfig[k];
118
+ }
119
+ }
120
+ }
121
+ __name(applyLiveRunConfig, "applyLiveRunConfig");
62
122
  const ADK_AGENT_NAME_LABEL_KEY = "adk_agent_name";
63
123
  async function convertToolUnionToTools(toolUnion, context2) {
64
124
  if ((0, import_base_tool.isBaseTool)(toolUnion)) {
65
125
  return [toolUnion];
66
126
  }
127
+ if ((0, import_base_node.isBaseNode)(toolUnion)) {
128
+ return [new import_node_tool.NodeTool(toolUnion)];
129
+ }
67
130
  return await toolUnion.getTools(context2);
68
131
  }
132
+ __name(convertToolUnionToTools, "convertToolUnionToTools");
69
133
  const LLM_AGENT_SIGNATURE_SYMBOL = Symbol.for("google.adk.llmAgent");
70
134
  function isLlmAgent(obj) {
71
135
  return typeof obj === "object" && obj !== null && LLM_AGENT_SIGNATURE_SYMBOL in obj && obj[LLM_AGENT_SIGNATURE_SYMBOL] === true;
72
136
  }
73
- class LlmAgent extends (_b = import_base_agent.BaseAgent, _a = LLM_AGENT_SIGNATURE_SYMBOL, _b) {
137
+ __name(isLlmAgent, "isLlmAgent");
138
+ const _LlmAgent = class _LlmAgent extends (_b = import_base_agent.BaseAgent, _a = LLM_AGENT_SIGNATURE_SYMBOL, _b) {
74
139
  constructor(config) {
75
- var _a2, _b2, _c, _d, _e, _f, _g, _h, _i;
76
- super(config);
140
+ var _a2, _b2, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l;
141
+ super({
142
+ ...config,
143
+ rerunOnResume: (_a2 = config.rerunOnResume) != null ? _a2 : true,
144
+ waitForOutput: (_b2 = config.waitForOutput) != null ? _b2 : config.mode === "task"
145
+ });
77
146
  /** A unique symbol to identify ADK LLM agent class. */
78
147
  this[_a] = true;
79
148
  this.model = config.model;
80
- this.instruction = (_a2 = config.instruction) != null ? _a2 : "";
81
- this.globalInstruction = (_b2 = config.globalInstruction) != null ? _b2 : "";
82
- this.tools = (_c = config.tools) != null ? _c : [];
149
+ this.instruction = (_c = config.instruction) != null ? _c : "";
150
+ this.globalInstruction = (_d = config.globalInstruction) != null ? _d : "";
151
+ this.tools = (_e = config.tools) != null ? _e : [];
83
152
  this.generateContentConfig = config.generateContentConfig;
84
- this.disallowTransferToParent = (_d = config.disallowTransferToParent) != null ? _d : false;
85
- this.disallowTransferToPeers = (_e = config.disallowTransferToPeers) != null ? _e : false;
86
- this.includeContents = (_f = config.includeContents) != null ? _f : "default";
153
+ this.disallowTransferToParent = (_f = config.disallowTransferToParent) != null ? _f : false;
154
+ this.disallowTransferToPeers = (_g = config.disallowTransferToPeers) != null ? _g : false;
155
+ this.includeContents = (_h = config.includeContents) != null ? _h : "default";
156
+ this.includeContentsExplicit = config.includeContents !== void 0;
157
+ this.inputSchemaSource = config.inputSchema;
158
+ this.outputSchemaSource = config.outputSchema;
87
159
  this.inputSchema = (0, import_simple_zod_to_json.isZodObject)(config.inputSchema) ? (0, import_simple_zod_to_json.zodObjectToSchema)(config.inputSchema) : config.inputSchema;
88
160
  this.outputSchema = (0, import_simple_zod_to_json.isZodObject)(config.outputSchema) ? (0, import_simple_zod_to_json.zodObjectToSchema)(config.outputSchema) : config.outputSchema;
161
+ this.mode = config.mode;
89
162
  this.outputKey = config.outputKey;
90
163
  this.beforeModelCallback = config.beforeModelCallback;
91
164
  this.afterModelCallback = config.afterModelCallback;
92
165
  this.beforeToolCallback = config.beforeToolCallback;
93
166
  this.afterToolCallback = config.afterToolCallback;
94
167
  this.codeExecutor = config.codeExecutor;
95
- this.requestProcessors = (_g = config.requestProcessors) != null ? _g : [
168
+ this.requestProcessors = (_i = config.requestProcessors) != null ? _i : [
96
169
  import_basic_llm_request_processor.BASIC_LLM_REQUEST_PROCESSOR,
97
170
  import_auth_preprocessor.AUTH_PREPROCESSOR,
98
171
  import_identity_llm_request_processor.IDENTITY_LLM_REQUEST_PROCESSOR,
99
172
  import_instructions_llm_request_processor.INSTRUCTIONS_LLM_REQUEST_PROCESSOR,
100
173
  import_request_confirmation_llm_request_processor.REQUEST_CONFIRMATION_LLM_REQUEST_PROCESSOR,
174
+ import_request_input_llm_request_processor.REQUEST_INPUT_LLM_REQUEST_PROCESSOR,
101
175
  import_content_request_processor.CONTENT_REQUEST_PROCESSOR,
102
176
  import_interactions_request_processor.INTERACTIONS_REQUEST_PROCESSOR,
103
177
  import_code_execution_request_processor.CODE_EXECUTION_REQUEST_PROCESSOR,
@@ -119,8 +193,8 @@ class LlmAgent extends (_b = import_base_agent.BaseAgent, _a = LLM_AGENT_SIGNATU
119
193
  );
120
194
  }
121
195
  }
122
- this.responseProcessors = (_h = config.responseProcessors) != null ? _h : [];
123
- const agentTransferDisabled = this.disallowTransferToParent && this.disallowTransferToPeers && !((_i = this.subAgents) == null ? void 0 : _i.length);
196
+ this.responseProcessors = (_j = config.responseProcessors) != null ? _j : [];
197
+ const agentTransferDisabled = this.disallowTransferToParent && this.disallowTransferToPeers && !((_k = this.subAgents) == null ? void 0 : _k.length);
124
198
  if (!agentTransferDisabled) {
125
199
  this.requestProcessors.push(import_agent_transfer_llm_request_processor.AGENT_TRANSFER_LLM_REQUEST_PROCESSOR);
126
200
  }
@@ -142,13 +216,14 @@ class LlmAgent extends (_b = import_base_agent.BaseAgent, _a = LLM_AGENT_SIGNATU
142
216
  this.generateContentConfig = {};
143
217
  }
144
218
  if (this.outputSchema) {
145
- if (!this.disallowTransferToParent || !this.disallowTransferToPeers) {
219
+ const transferRequested = config.disallowTransferToParent === false || config.disallowTransferToPeers === false || !!((_l = this.subAgents) == null ? void 0 : _l.length);
220
+ if (transferRequested) {
146
221
  import_logger.logger.warn(
147
222
  `Invalid config for agent ${this.name}: outputSchema cannot co-exist with agent transfer configurations. Setting disallowTransferToParent=true, disallowTransferToPeers=true`
148
223
  );
149
- this.disallowTransferToParent = true;
150
- this.disallowTransferToPeers = true;
151
224
  }
225
+ this.disallowTransferToParent = true;
226
+ this.disallowTransferToPeers = true;
152
227
  }
153
228
  }
154
229
  /**
@@ -172,6 +247,16 @@ class LlmAgent extends (_b = import_base_agent.BaseAgent, _a = LLM_AGENT_SIGNATU
172
247
  }
173
248
  throw new Error(`No model found for ${this.name}.`);
174
249
  }
250
+ /**
251
+ * The `finish_task` tool for this agent (task mode). Lazily created and cached
252
+ * so its declaration (derived from `outputSchema`) is stable across turns.
253
+ */
254
+ get finishTaskTool() {
255
+ if (!this._finishTaskTool) {
256
+ this._finishTaskTool = new import_finish_task_tool.FinishTaskTool(this.outputSchema);
257
+ }
258
+ return this._finishTaskTool;
259
+ }
175
260
  /**
176
261
  * The resolved instruction field to construct instruction for this
177
262
  * agent.
@@ -244,7 +329,7 @@ class LlmAgent extends (_b = import_base_agent.BaseAgent, _a = LLM_AGENT_SIGNATU
244
329
  * This method is only for use by Agent Development Kit.
245
330
  */
246
331
  get canonicalBeforeModelCallbacks() {
247
- return LlmAgent.normalizeCallbackArray(this.beforeModelCallback);
332
+ return _LlmAgent.normalizeCallbackArray(this.beforeModelCallback);
248
333
  }
249
334
  /**
250
335
  * The resolved afterModelCallback field as a list of
@@ -253,7 +338,7 @@ class LlmAgent extends (_b = import_base_agent.BaseAgent, _a = LLM_AGENT_SIGNATU
253
338
  * This method is only for use by Agent Development Kit.
254
339
  */
255
340
  get canonicalAfterModelCallbacks() {
256
- return LlmAgent.normalizeCallbackArray(this.afterModelCallback);
341
+ return _LlmAgent.normalizeCallbackArray(this.afterModelCallback);
257
342
  }
258
343
  /**
259
344
  * The resolved beforeToolCallback field as a list of
@@ -262,7 +347,7 @@ class LlmAgent extends (_b = import_base_agent.BaseAgent, _a = LLM_AGENT_SIGNATU
262
347
  * This method is only for use by Agent Development Kit.
263
348
  */
264
349
  get canonicalBeforeToolCallbacks() {
265
- return LlmAgent.normalizeCallbackArray(this.beforeToolCallback);
350
+ return _LlmAgent.normalizeCallbackArray(this.beforeToolCallback);
266
351
  }
267
352
  /**
268
353
  * The resolved afterToolCallback field as a list of AfterToolCallback.
@@ -270,7 +355,7 @@ class LlmAgent extends (_b = import_base_agent.BaseAgent, _a = LLM_AGENT_SIGNATU
270
355
  * This method is only for use by Agent Development Kit.
271
356
  */
272
357
  get canonicalAfterToolCallbacks() {
273
- return LlmAgent.normalizeCallbackArray(this.afterToolCallback);
358
+ return _LlmAgent.normalizeCallbackArray(this.afterToolCallback);
274
359
  }
275
360
  /**
276
361
  * Saves the agent's final response to the session state if configured.
@@ -313,14 +398,53 @@ class LlmAgent extends (_b = import_base_agent.BaseAgent, _a = LLM_AGENT_SIGNATU
313
398
  if (!resultStr.trim()) {
314
399
  return;
315
400
  }
401
+ let parsed;
316
402
  try {
317
- result = JSON.parse(resultStr);
403
+ parsed = JSON.parse(resultStr);
318
404
  } catch (e) {
319
405
  import_logger.logger.error(`Error parsing output for agent ${this.name}`, e);
406
+ event.actions.stateDelta[this.outputKey] = resultStr;
407
+ return;
408
+ }
409
+ try {
410
+ result = this.validateOutput(parsed);
411
+ } catch (e) {
412
+ import_logger.logger.error(
413
+ `Output for agent ${this.name} does not satisfy its output schema`,
414
+ e
415
+ );
416
+ result = parsed;
320
417
  }
321
418
  }
322
419
  event.actions.stateDelta[this.outputKey] = result;
323
420
  }
421
+ /**
422
+ * Validates a value against this agent's output schema, in whichever dialect
423
+ * it was declared, and returns the parsed value.
424
+ *
425
+ * Prefers the schema as supplied ({@link outputSchemaSource}) over the genai
426
+ * form derived from it, since the conversion drops constraints Zod can
427
+ * express and genai cannot.
428
+ *
429
+ * @throws if the value does not satisfy the schema.
430
+ */
431
+ validateOutput(value) {
432
+ var _a2;
433
+ return (0, import_schema.parseWithSchema)((_a2 = this.outputSchemaSource) != null ? _a2 : this.outputSchema, value);
434
+ }
435
+ /**
436
+ * Runs this agent as a workflow node.
437
+ *
438
+ * Where {@link BaseAgent.runImpl} delegates straight to `runAsync`, an
439
+ * `LlmAgent` has a node input to inject into the conversation, instruction
440
+ * placeholders to resolve against it, a reply to promote to node output, and
441
+ * — in `task` mode — a `finish_task` round-trip to drive. All of that lives
442
+ * in `runLlmAgentAsNode`, mirroring adk-python's `LlmAgent._run_impl`
443
+ * delegating to `run_llm_agent_as_node`.
444
+ */
445
+ async *runImpl(ctx, nodeInput) {
446
+ yield* (0, import_run_llm_agent_as_node.runLlmAgentAsNode)(this, ctx, nodeInput);
447
+ }
324
448
  async *runAsyncImpl(context2) {
325
449
  var _a2, _b2;
326
450
  while (true) {
@@ -380,10 +504,350 @@ class LlmAgent extends (_b = import_base_agent.BaseAgent, _a = LLM_AGENT_SIGNATU
380
504
  * times. Subsequent reconnects skip `sendHistory` because the server
381
505
  * already holds the conversation state associated with the handle.
382
506
  */
383
- // eslint-disable-next-line require-yield
384
- async *runLiveFlow(_invocationContext) {
385
- await Promise.resolve();
386
- throw new Error("LlmAgent.runLiveFlow not implemented");
507
+ async *runLiveFlow(invocationContext) {
508
+ var _a2, _b2, _c, _d;
509
+ if (!invocationContext.liveRequestQueue) {
510
+ throw new Error("liveRequestQueue is required for LlmAgent.runLiveFlow.");
511
+ }
512
+ const llmRequest = {
513
+ contents: [],
514
+ toolsDict: {},
515
+ liveConnectConfig: {}
516
+ };
517
+ for await (const event of this.runLivePreprocess(
518
+ invocationContext,
519
+ llmRequest
520
+ )) {
521
+ yield event;
522
+ }
523
+ if (invocationContext.endInvocation || ((_a2 = invocationContext.abortSignal) == null ? void 0 : _a2.aborted)) {
524
+ return;
525
+ }
526
+ applyLiveRunConfig(invocationContext.runConfig, llmRequest);
527
+ const llm = this.canonicalModel;
528
+ let reconnectAttempts = 0;
529
+ while (true) {
530
+ if ((_b2 = invocationContext.abortSignal) == null ? void 0 : _b2.aborted) {
531
+ return;
532
+ }
533
+ const handle = invocationContext.liveSessionResumptionHandle;
534
+ if (handle) {
535
+ (_c = llmRequest.liveConnectConfig) != null ? _c : llmRequest.liveConnectConfig = {};
536
+ llmRequest.liveConnectConfig.sessionResumption = {
537
+ handle,
538
+ transparent: true
539
+ };
540
+ }
541
+ let connection;
542
+ try {
543
+ connection = await llm.connect(llmRequest);
544
+ } catch (err) {
545
+ if (isRecoverableLiveError(err) && invocationContext.liveSessionResumptionHandle) {
546
+ reconnectAttempts += 1;
547
+ if (reconnectAttempts > MAX_LIVE_RECONNECT_ATTEMPTS) {
548
+ import_logger.logger.error(
549
+ `Max live reconnection attempts reached (${reconnectAttempts}).`,
550
+ err
551
+ );
552
+ throw err;
553
+ }
554
+ import_logger.logger.info(
555
+ `Live connect failed (attempt ${reconnectAttempts}); retrying with session handle.`,
556
+ err
557
+ );
558
+ continue;
559
+ }
560
+ throw err;
561
+ }
562
+ if (llmRequest.contents.length > 0 && !invocationContext.liveSessionResumptionHandle) {
563
+ await connection.sendHistory(llmRequest.contents);
564
+ }
565
+ let sendError;
566
+ const sendAbort = new AbortController();
567
+ const combinedAbort = invocationContext.abortSignal ? AbortSignal.any([invocationContext.abortSignal, sendAbort.signal]) : sendAbort.signal;
568
+ const sendTask = this.runSendLoop(
569
+ connection,
570
+ invocationContext.liveRequestQueue,
571
+ combinedAbort,
572
+ invocationContext.abortSignal
573
+ );
574
+ sendTask.catch((error) => {
575
+ import_logger.logger.error("Error in live send loop:", error);
576
+ sendError = error;
577
+ sendAbort.abort(error);
578
+ connection.close().catch((err) => {
579
+ import_logger.logger.warn("Error closing connection after send loop failure:", err);
580
+ });
581
+ });
582
+ let reconnect = false;
583
+ try {
584
+ yield* this.runReceiveLoop(
585
+ invocationContext,
586
+ connection,
587
+ llmRequest,
588
+ sendAbort
589
+ );
590
+ } catch (err) {
591
+ const canReconnect = !!invocationContext.liveSessionResumptionHandle && (err instanceof LiveReconnectSignal || isRecoverableLiveError(err));
592
+ if (canReconnect) {
593
+ reconnect = true;
594
+ import_logger.logger.info(
595
+ "Live connection closed; will reconnect with session handle.",
596
+ err
597
+ );
598
+ } else {
599
+ await this.teardownLiveConnection(sendAbort, connection, sendTask);
600
+ throw err;
601
+ }
602
+ }
603
+ await this.teardownLiveConnection(sendAbort, connection, sendTask);
604
+ if ((_d = invocationContext.abortSignal) == null ? void 0 : _d.aborted) {
605
+ return;
606
+ }
607
+ if (sendError) {
608
+ throw sendError;
609
+ }
610
+ if (!reconnect) {
611
+ return;
612
+ }
613
+ reconnectAttempts += 1;
614
+ if (reconnectAttempts > MAX_LIVE_RECONNECT_ATTEMPTS) {
615
+ throw new Error(
616
+ `Max live reconnection attempts reached (${reconnectAttempts}).`
617
+ );
618
+ }
619
+ }
620
+ }
621
+ async *runLivePreprocess(invocationContext, llmRequest) {
622
+ var _a2, _b2;
623
+ for (const processor of this.requestProcessors) {
624
+ for await (const event of processor.runAsync(
625
+ invocationContext,
626
+ llmRequest
627
+ )) {
628
+ if ((_a2 = invocationContext.abortSignal) == null ? void 0 : _a2.aborted) {
629
+ return;
630
+ }
631
+ yield event;
632
+ }
633
+ }
634
+ for (const toolUnion of this.tools) {
635
+ const toolContext = new import_context.Context({ invocationContext });
636
+ const tools = (await convertToolUnionToTools(
637
+ toolUnion,
638
+ new import_readonly_context.ReadonlyContext(invocationContext)
639
+ )).filter(
640
+ (tool) => !llmRequest.allowedTools || llmRequest.allowedTools.includes(tool.name)
641
+ );
642
+ for (const tool of tools) {
643
+ await tool.processLlmRequest({ toolContext, llmRequest });
644
+ if ((_b2 = invocationContext.abortSignal) == null ? void 0 : _b2.aborted) {
645
+ return;
646
+ }
647
+ }
648
+ }
649
+ }
650
+ async runSendLoop(connection, liveRequestQueue, sendAbortSignal, invocationAbortSignal) {
651
+ while (true) {
652
+ if ((sendAbortSignal == null ? void 0 : sendAbortSignal.aborted) || (invocationAbortSignal == null ? void 0 : invocationAbortSignal.aborted)) {
653
+ return;
654
+ }
655
+ let liveRequest;
656
+ try {
657
+ liveRequest = await liveRequestQueue.get(sendAbortSignal);
658
+ } catch (error) {
659
+ if ((sendAbortSignal == null ? void 0 : sendAbortSignal.aborted) || (invocationAbortSignal == null ? void 0 : invocationAbortSignal.aborted)) {
660
+ return;
661
+ }
662
+ throw error;
663
+ }
664
+ try {
665
+ await this.dispatchLiveRequest(connection, liveRequest);
666
+ } catch (error) {
667
+ if ((sendAbortSignal == null ? void 0 : sendAbortSignal.aborted) || (invocationAbortSignal == null ? void 0 : invocationAbortSignal.aborted)) {
668
+ import_logger.logger.debug("Send failed after teardown:", error);
669
+ return;
670
+ }
671
+ import_logger.logger.error("Error dispatching live request to model:", error);
672
+ throw error;
673
+ }
674
+ await Promise.resolve();
675
+ if (liveRequest.close) {
676
+ return;
677
+ }
678
+ }
679
+ }
680
+ async dispatchLiveRequest(connection, liveRequest) {
681
+ var _a2, _b2;
682
+ if (liveRequest.close) {
683
+ await connection.close();
684
+ return;
685
+ }
686
+ if (liveRequest.activityStart) {
687
+ await ((_a2 = connection.sendActivityStart) == null ? void 0 : _a2.call(connection));
688
+ return;
689
+ }
690
+ if (liveRequest.activityEnd) {
691
+ await ((_b2 = connection.sendActivityEnd) == null ? void 0 : _b2.call(connection));
692
+ return;
693
+ }
694
+ if (liveRequest.blob) {
695
+ await connection.sendRealtime(liveRequest.blob);
696
+ return;
697
+ }
698
+ if (liveRequest.content) {
699
+ await connection.sendContent(liveRequest.content);
700
+ }
701
+ }
702
+ /**
703
+ * Tears down a live attempt: stops the send loop, closes the connection
704
+ * (swallowing close errors), and waits for the send task to settle. Used
705
+ * before reconnecting or propagating an error.
706
+ */
707
+ async teardownLiveConnection(sendAbort, connection, sendTask) {
708
+ sendAbort.abort();
709
+ try {
710
+ await connection.close();
711
+ } catch (error) {
712
+ import_logger.logger.warn("Error closing live connection:", error);
713
+ }
714
+ await sendTask.catch(() => void 0);
715
+ }
716
+ async *runReceiveLoop(invocationContext, connection, llmRequest, sendAbort) {
717
+ var _a2, _b2, _c, _d;
718
+ for await (const llmResponse of connection.receive()) {
719
+ if ((_a2 = invocationContext.abortSignal) == null ? void 0 : _a2.aborted) {
720
+ return;
721
+ }
722
+ if (sendAbort.signal.aborted) {
723
+ return;
724
+ }
725
+ if ((_b2 = llmResponse.liveSessionResumptionUpdate) == null ? void 0 : _b2.newHandle) {
726
+ invocationContext.liveSessionResumptionHandle = llmResponse.liveSessionResumptionUpdate.newHandle;
727
+ }
728
+ if (llmResponse.goAway) {
729
+ import_logger.logger.info("Received goAway from live server; triggering reconnect.");
730
+ throw new LiveReconnectSignal("goAway");
731
+ }
732
+ const author = llmResponse.inputTranscription || ((_c = llmResponse.content) == null ? void 0 : _c.role) === "user" ? "user" : this.name;
733
+ const modelResponseEvent = (0, import_event.createEvent)({
734
+ invocationId: invocationContext.invocationId,
735
+ author,
736
+ branch: invocationContext.branch
737
+ });
738
+ for await (const event of this.postprocessLive(
739
+ invocationContext,
740
+ llmRequest,
741
+ llmResponse,
742
+ modelResponseEvent
743
+ )) {
744
+ yield event;
745
+ if (event.content && (0, import_event.getFunctionResponses)(event).length > 0) {
746
+ await connection.sendContent(event.content);
747
+ }
748
+ const taskCompleted = (0, import_event.getFunctionResponses)(event).some(
749
+ (r) => r.name === "task_completed"
750
+ );
751
+ if (taskCompleted) {
752
+ await sleep(TRANSFER_AGENT_DELAY_MS);
753
+ return;
754
+ }
755
+ const transferTo = (_d = event.actions) == null ? void 0 : _d.transferToAgent;
756
+ if (transferTo) {
757
+ await sleep(TRANSFER_AGENT_DELAY_MS);
758
+ sendAbort.abort();
759
+ await connection.close();
760
+ const agent = (0, import_invocation_context.requireAgent)(invocationContext);
761
+ const subAgent = agent.rootAgent.findAgent(transferTo);
762
+ if (subAgent) {
763
+ const previousAgent = invocationContext.agent;
764
+ invocationContext.agent = subAgent;
765
+ const previousHandle = invocationContext.liveSessionResumptionHandle;
766
+ invocationContext.liveSessionResumptionHandle = void 0;
767
+ try {
768
+ for await (const subEvent of subAgent.runLive(
769
+ invocationContext
770
+ )) {
771
+ yield subEvent;
772
+ }
773
+ } finally {
774
+ invocationContext.agent = previousAgent;
775
+ invocationContext.liveSessionResumptionHandle = previousHandle;
776
+ }
777
+ }
778
+ return;
779
+ }
780
+ }
781
+ }
782
+ }
783
+ async *postprocessLive(invocationContext, llmRequest, llmResponse, modelResponseEvent) {
784
+ for (const processor of this.responseProcessors) {
785
+ for await (const event of processor.runAsync(
786
+ invocationContext,
787
+ llmResponse
788
+ )) {
789
+ yield event;
790
+ }
791
+ }
792
+ if (!llmResponse.content && !llmResponse.errorCode && !llmResponse.interrupted && !llmResponse.turnComplete && !llmResponse.inputTranscription && !llmResponse.outputTranscription && !llmResponse.usageMetadata && !llmResponse.liveSessionResumptionUpdate) {
793
+ return;
794
+ }
795
+ if (llmResponse.liveSessionResumptionUpdate) {
796
+ yield (0, import_event.createEvent)({
797
+ ...modelResponseEvent,
798
+ liveSessionResumptionUpdate: llmResponse.liveSessionResumptionUpdate
799
+ });
800
+ return;
801
+ }
802
+ if (llmResponse.inputTranscription) {
803
+ yield (0, import_event.createEvent)({
804
+ ...modelResponseEvent,
805
+ inputTranscription: llmResponse.inputTranscription,
806
+ partial: llmResponse.partial
807
+ });
808
+ return;
809
+ }
810
+ if (llmResponse.outputTranscription) {
811
+ yield (0, import_event.createEvent)({
812
+ ...modelResponseEvent,
813
+ outputTranscription: llmResponse.outputTranscription,
814
+ partial: llmResponse.partial
815
+ });
816
+ return;
817
+ }
818
+ const mergedEvent = (0, import_event.createEvent)({
819
+ ...modelResponseEvent,
820
+ ...llmResponse
821
+ });
822
+ const functionCalls = (0, import_event.getFunctionCalls)(mergedEvent);
823
+ if (mergedEvent.content && functionCalls.length) {
824
+ (0, import_event.populateClientFunctionCallId)(mergedEvent);
825
+ mergedEvent.longRunningToolIds = Array.from(
826
+ (0, import_functions.getLongRunningFunctionCalls)(functionCalls, llmRequest.toolsDict)
827
+ );
828
+ }
829
+ yield mergedEvent;
830
+ if (!functionCalls.length) {
831
+ return;
832
+ }
833
+ const functionResponseEvent = await (0, import_functions.handleFunctionCallsAsync)({
834
+ invocationContext,
835
+ functionCallEvent: mergedEvent,
836
+ toolsDict: llmRequest.toolsDict,
837
+ beforeToolCallbacks: this.canonicalBeforeToolCallbacks,
838
+ afterToolCallbacks: this.canonicalAfterToolCallbacks
839
+ });
840
+ if (!functionResponseEvent) {
841
+ return;
842
+ }
843
+ const authEvent = (0, import_functions.generateAuthEvent)(
844
+ invocationContext,
845
+ functionResponseEvent
846
+ );
847
+ if (authEvent) {
848
+ yield authEvent;
849
+ }
850
+ yield functionResponseEvent;
387
851
  }
388
852
  async *runOneStepAsync(invocationContext) {
389
853
  var _a2, _b2, _c;
@@ -404,22 +868,32 @@ class LlmAgent extends (_b = import_base_agent.BaseAgent, _a = LLM_AGENT_SIGNATU
404
868
  }
405
869
  }
406
870
  const allTools = [...this.tools];
407
- if (this.outputSchema && allTools.length > 0) {
871
+ if (this.mode === "task") {
872
+ allTools.push(this.finishTaskTool);
873
+ } else if (this.outputSchema && allTools.length > 0 && !(0, import_output_schema_utils.canUseOutputSchemaWithTools)(this.canonicalModel.model)) {
408
874
  const setModelResponseTool = new import_function_tool.FunctionTool({
409
875
  name: "set_model_response",
410
876
  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.",
411
877
  parameters: this.outputSchema,
412
- execute: async (args, toolContext) => {
878
+ execute: /* @__PURE__ */ __name(async (args, toolContext) => {
413
879
  if (toolContext) {
414
880
  toolContext.actions.skipSummarization = true;
415
881
  }
416
882
  return JSON.stringify(args);
417
- }
883
+ }, "execute")
418
884
  });
419
885
  allTools.push(setModelResponseTool);
420
886
  }
887
+ const modelResponseEvent = (0, import_event.createEvent)({
888
+ invocationId: invocationContext.invocationId,
889
+ author: this.name,
890
+ branch: invocationContext.branch
891
+ });
421
892
  for (const toolUnion of allTools) {
422
- const toolContext = new import_context.Context({ invocationContext });
893
+ const toolContext = new import_context.Context({
894
+ invocationContext,
895
+ eventActions: modelResponseEvent.actions
896
+ });
423
897
  const tools = (await convertToolUnionToTools(
424
898
  toolUnion,
425
899
  new import_readonly_context.ReadonlyContext(invocationContext)
@@ -436,18 +910,13 @@ class LlmAgent extends (_b = import_base_agent.BaseAgent, _a = LLM_AGENT_SIGNATU
436
910
  if (invocationContext.endInvocation || ((_c = invocationContext.abortSignal) == null ? void 0 : _c.aborted)) {
437
911
  return;
438
912
  }
439
- const modelResponseEvent = (0, import_event.createEvent)({
440
- invocationId: invocationContext.invocationId,
441
- author: this.name,
442
- branch: invocationContext.branch
443
- });
444
913
  const span = import_tracing.tracer.startSpan("call_llm");
445
914
  const ctx = import_api.trace.setSpan(import_api.context.active(), span);
446
915
  yield* (0, import_tracing.runAsyncGeneratorWithOtelContext)(
447
916
  ctx,
448
917
  this,
449
918
  async function* () {
450
- const responsesGenerator = async function* () {
919
+ const responsesGenerator = /* @__PURE__ */ __name(async function* () {
451
920
  var _a3, _b3;
452
921
  for await (const llmResponse of this.callLlmAsync(
453
922
  invocationContext,
@@ -471,7 +940,7 @@ class LlmAgent extends (_b = import_base_agent.BaseAgent, _a = LLM_AGENT_SIGNATU
471
940
  yield event;
472
941
  }
473
942
  }
474
- };
943
+ }, "responsesGenerator");
475
944
  yield* this.runAndHandleError(
476
945
  responsesGenerator.call(this),
477
946
  invocationContext,
@@ -495,7 +964,8 @@ class LlmAgent extends (_b = import_base_agent.BaseAgent, _a = LLM_AGENT_SIGNATU
495
964
  yield event;
496
965
  }
497
966
  }
498
- if ((!llmResponse.content || ((_b2 = llmResponse.content.parts) == null ? void 0 : _b2.length) === 0) && !llmResponse.errorCode && !llmResponse.interrupted) {
967
+ const isUsageOnlyReport = !llmResponse.content && !!llmResponse.usageMetadata;
968
+ if ((!llmResponse.content || ((_b2 = llmResponse.content.parts) == null ? void 0 : _b2.length) === 0) && !llmResponse.errorCode && !llmResponse.interrupted && !isUsageOnlyReport) {
499
969
  return;
500
970
  }
501
971
  const mergedEvent = (0, import_event.createEvent)({
@@ -526,13 +996,32 @@ class LlmAgent extends (_b = import_base_agent.BaseAgent, _a = LLM_AGENT_SIGNATU
526
996
  invocationContext.endInvocation = true;
527
997
  return;
528
998
  }
529
- const functionResponseEvent = await (0, import_functions.handleFunctionCallsAsync)({
530
- invocationContext,
531
- functionCallEvent: mergedEvent,
532
- toolsDict: llmRequest.toolsDict,
533
- beforeToolCallbacks: this.canonicalBeforeToolCallbacks,
534
- afterToolCallbacks: this.canonicalAfterToolCallbacks
535
- });
999
+ const eventQueue = new import_async_queue.AsyncQueue();
1000
+ invocationContext.eventQueue = eventQueue;
1001
+ const toolTask = (async () => {
1002
+ try {
1003
+ const event = await (0, import_functions.handleFunctionCallsAsync)({
1004
+ invocationContext,
1005
+ functionCallEvent: mergedEvent,
1006
+ toolsDict: llmRequest.toolsDict,
1007
+ beforeToolCallbacks: this.canonicalBeforeToolCallbacks,
1008
+ afterToolCallbacks: this.canonicalAfterToolCallbacks
1009
+ });
1010
+ return { event };
1011
+ } catch (error) {
1012
+ return { event: null, error };
1013
+ } finally {
1014
+ eventQueue.close();
1015
+ }
1016
+ })();
1017
+ for await (const queuedEvent of eventQueue) {
1018
+ yield queuedEvent;
1019
+ }
1020
+ const { event: functionResponseEvent, error: toolError } = await toolTask;
1021
+ invocationContext.eventQueue = void 0;
1022
+ if (toolError) {
1023
+ throw toolError;
1024
+ }
536
1025
  if (!functionResponseEvent || ((_e = invocationContext.abortSignal) == null ? void 0 : _e.aborted)) {
537
1026
  return;
538
1027
  }
@@ -578,7 +1067,7 @@ class LlmAgent extends (_b = import_base_agent.BaseAgent, _a = LLM_AGENT_SIGNATU
578
1067
  * @throws Error if the agent is not found.
579
1068
  */
580
1069
  getAgentByName(invocationContext, agentName) {
581
- const rootAgent = invocationContext.agent.rootAgent;
1070
+ const rootAgent = (0, import_invocation_context.requireAgent)(invocationContext).rootAgent;
582
1071
  const agentToRun = rootAgent.findAgent(agentName);
583
1072
  if (!agentToRun) {
584
1073
  throw new Error(`Agent ${agentName} not found in the agent tree.`);
@@ -753,7 +1242,9 @@ class LlmAgent extends (_b = import_base_agent.BaseAgent, _a = LLM_AGENT_SIGNATU
753
1242
  // TODO - b/425992518: omitted Py LlmAgent features.
754
1243
  // - code_executor
755
1244
  // - configurable agents by yaml config
756
- }
1245
+ };
1246
+ __name(_LlmAgent, "LlmAgent");
1247
+ let LlmAgent = _LlmAgent;
757
1248
  // Annotate the CommonJS export names for ESM import in node:
758
1249
  0 && (module.exports = {
759
1250
  LlmAgent,