@google/adk 1.6.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 (781) hide show
  1. package/dist/cjs/a2a/a2a_event.js +18 -0
  2. package/dist/cjs/a2a/a2a_remote_agent.js +5 -2
  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 -10
  8. package/dist/cjs/a2a/auth.js +3 -0
  9. package/dist/cjs/a2a/event_converter_utils.js +10 -0
  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 +38 -16
  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 +535 -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 +6 -3
  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 +9 -4
  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 +5 -2
  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 +9 -2
  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 +5 -2
  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 +8 -2
  72. package/dist/cjs/common.js +106 -1
  73. package/dist/cjs/context/agent_controlled_context_compactor.js +5 -2
  74. package/dist/cjs/context/anchored_context_compactor.js +5 -2
  75. package/dist/cjs/context/compaction_utils.js +3 -0
  76. package/dist/cjs/context/summarizers/llm_summarizer.js +5 -2
  77. package/dist/cjs/context/token_based_context_compactor.js +9 -3
  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 -25
  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 +8 -2
  94. package/dist/cjs/memory/vertex_ai_memory_bank_service.js +17 -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 +39 -5
  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 +208 -18
  111. package/dist/cjs/sessions/base_session_service.js +13 -2
  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 +22 -14
  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 +110 -15
  121. package/dist/cjs/skills/gcp_skill_registry.js +2 -0
  122. package/dist/cjs/skills/loader.js +22 -10
  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 +3 -2
  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 +36 -8
  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 +6 -4
  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 +2 -0
  176. package/dist/cjs/utils/deprecated.js +68 -0
  177. package/dist/cjs/utils/env_aware_utils.js +41 -0
  178. package/dist/cjs/utils/error_utils.js +8 -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 +7 -2
  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 +2 -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 +3 -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 +6 -2
  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 -15
  238. package/dist/esm/a2a/auth.js +4 -0
  239. package/dist/esm/a2a/event_converter_utils.js +11 -0
  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 +42 -13
  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 +536 -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 +7 -3
  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 +10 -4
  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 +6 -2
  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 +10 -2
  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 +6 -2
  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 +9 -2
  302. package/dist/esm/common.js +109 -4
  303. package/dist/esm/context/agent_controlled_context_compactor.js +6 -2
  304. package/dist/esm/context/anchored_context_compactor.js +6 -2
  305. package/dist/esm/context/compaction_utils.js +4 -0
  306. package/dist/esm/context/summarizers/llm_summarizer.js +6 -2
  307. package/dist/esm/context/token_based_context_compactor.js +10 -3
  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 -15
  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 +9 -2
  324. package/dist/esm/memory/vertex_ai_memory_bank_service.js +18 -2
  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 +39 -5
  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 +215 -20
  341. package/dist/esm/sessions/base_session_service.js +14 -2
  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 +23 -14
  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 +110 -15
  351. package/dist/esm/skills/gcp_skill_registry.js +2 -0
  352. package/dist/esm/skills/loader.js +23 -10
  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 +4 -2
  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 +45 -9
  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 +7 -4
  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 +3 -0
  406. package/dist/esm/utils/deprecated.js +40 -0
  407. package/dist/esm/utils/env_aware_utils.js +41 -0
  408. package/dist/esm/utils/error_utils.js +9 -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 +8 -2
  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 +3 -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 +5 -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/event_processor_utils.d.ts +17 -2
  464. package/dist/types/a2a/index.d.ts +18 -0
  465. package/dist/types/agents/base_agent.d.ts +37 -9
  466. package/dist/types/agents/framework_function_calls.d.ts +26 -0
  467. package/dist/types/agents/functions.d.ts +1 -2
  468. package/dist/types/agents/invocation_context.d.ts +95 -3
  469. package/dist/types/agents/live_request_queue.d.ts +7 -1
  470. package/dist/types/agents/llm_agent.d.ts +77 -1
  471. package/dist/types/agents/loop_agent.d.ts +5 -0
  472. package/dist/types/agents/parallel_agent.d.ts +5 -0
  473. package/dist/types/agents/processors/content_processor_utils.d.ts +3 -2
  474. package/dist/types/agents/processors/identity_llm_request_processor.d.ts +4 -1
  475. package/dist/types/agents/processors/request_input_llm_request_processor.d.ts +21 -0
  476. package/dist/types/agents/run_config.d.ts +57 -2
  477. package/dist/types/agents/sequential_agent.d.ts +5 -0
  478. package/dist/types/agents/user_input_request.d.ts +71 -0
  479. package/dist/types/apps/app.d.ts +8 -3
  480. package/dist/types/artifacts/gcs_artifact_service.d.ts +9 -2
  481. package/dist/types/auth/credential_response_binding.d.ts +24 -0
  482. package/dist/types/common.d.ts +18 -8
  483. package/dist/types/environment/base_environment.d.ts +101 -0
  484. package/dist/types/environment/local_environment.d.ts +72 -0
  485. package/dist/types/events/event.d.ts +94 -1
  486. package/dist/types/events/event_actions.d.ts +10 -0
  487. package/dist/types/index.d.ts +5 -13
  488. package/dist/types/models/apigee_llm.d.ts +4 -4
  489. package/dist/types/models/google_llm.d.ts +2 -1
  490. package/dist/types/plugins/base_plugin.d.ts +35 -0
  491. package/dist/types/plugins/plugin_manager.d.ts +20 -0
  492. package/dist/types/plugins/security_plugin.d.ts +4 -2
  493. package/dist/types/runner/in_memory_runner.d.ts +2 -2
  494. package/dist/types/runner/runner.d.ts +59 -3
  495. package/dist/types/sessions/base_session_service.d.ts +2 -2
  496. package/dist/types/sessions/state.d.ts +34 -1
  497. package/dist/types/sessions/state_write_order.d.ts +39 -0
  498. package/dist/types/telemetry/tracing.d.ts +15 -0
  499. package/dist/types/tools/base_tool.d.ts +15 -0
  500. package/dist/types/tools/finish_task_tool.d.ts +47 -0
  501. package/dist/types/tools/function_tool.d.ts +46 -1
  502. package/dist/types/tools/mcp/index.d.ts +13 -0
  503. package/dist/types/tools/mcp/mcp_session_manager.d.ts +3 -3
  504. package/dist/types/tools/mcp/mcp_tool.d.ts +1 -1
  505. package/dist/types/tools/mcp/mcp_toolset.d.ts +1 -1
  506. package/dist/types/tools/request_input_tool.d.ts +6 -1
  507. package/dist/types/tools/skill/skill_toolset.d.ts +26 -0
  508. package/dist/types/tools/tool_confirmation.d.ts +47 -0
  509. package/dist/types/utils/async_queue.d.ts +34 -2
  510. package/dist/types/utils/deprecated.d.ts +21 -0
  511. package/dist/types/utils/env_aware_utils.d.ts +16 -0
  512. package/dist/types/utils/file_utils.d.ts +10 -2
  513. package/dist/types/utils/genai_schema_to_json.d.ts +25 -0
  514. package/dist/types/utils/optional_peer.d.ts +36 -0
  515. package/dist/types/utils/redact_uri.d.ts +28 -0
  516. package/dist/types/utils/schema.d.ts +73 -0
  517. package/dist/types/utils/simple_zod_to_json.d.ts +8 -0
  518. package/dist/types/utils/vertex_ai_utils.d.ts +4 -0
  519. package/dist/types/version.d.ts +1 -1
  520. package/dist/types/workflow/base_node.d.ts +142 -0
  521. package/dist/types/workflow/branch_path.d.ts +40 -0
  522. package/dist/types/workflow/dynamic_node_scheduler.d.ts +64 -0
  523. package/dist/types/workflow/errors.d.ts +132 -0
  524. package/dist/types/workflow/graph.d.ts +127 -0
  525. package/dist/types/workflow/index.d.ts +46 -0
  526. package/dist/types/workflow/node.d.ts +48 -0
  527. package/dist/types/workflow/node_builders.d.ts +25 -0
  528. package/dist/types/workflow/node_context.d.ts +208 -0
  529. package/dist/types/workflow/node_error_event.d.ts +18 -0
  530. package/dist/types/workflow/node_runner.d.ts +82 -0
  531. package/dist/types/workflow/node_state.d.ts +47 -0
  532. package/dist/types/workflow/node_status.d.ts +28 -0
  533. package/dist/types/workflow/nodes/function_node.d.ts +78 -0
  534. package/dist/types/workflow/nodes/join_node.d.ts +24 -0
  535. package/dist/types/workflow/nodes/node_tool.d.ts +53 -0
  536. package/dist/types/workflow/nodes/parallel_worker.d.ts +55 -0
  537. package/dist/types/workflow/nodes/tool_node.d.ts +34 -0
  538. package/dist/types/workflow/request_input.d.ts +73 -0
  539. package/dist/types/workflow/retry_config.d.ts +84 -0
  540. package/dist/types/workflow/run_llm_agent_as_node.d.ts +28 -0
  541. package/dist/types/workflow/run_node_as_invocation.d.ts +72 -0
  542. package/dist/types/workflow/schedule_dynamic_node.d.ts +66 -0
  543. package/dist/types/workflow/trigger.d.ts +22 -0
  544. package/dist/types/workflow/utils/graph_parser.d.ts +8 -0
  545. package/dist/types/workflow/utils/graph_validation.d.ts +18 -0
  546. package/dist/types/workflow/utils/hitl_utils.d.ts +92 -0
  547. package/dist/types/workflow/utils/rehydration_utils.d.ts +132 -0
  548. package/dist/types/workflow/utils/retry_utils.d.ts +54 -0
  549. package/dist/types/workflow/utils/workflow_graph_utils.d.ts +76 -0
  550. package/dist/types/workflow/workflow.d.ts +115 -0
  551. package/dist/web/a2a/a2a_event.js +19 -0
  552. package/dist/web/a2a/a2a_remote_agent.js +6 -2
  553. package/dist/web/a2a/a2a_remote_agent_run_processor.js +8 -3
  554. package/dist/web/a2a/a2a_remote_agent_utils.js +10 -2
  555. package/dist/web/a2a/agent_card.js +34 -3
  556. package/dist/web/a2a/agent_executor.js +45 -17
  557. package/dist/web/a2a/agent_to_a2a.js +44 -15
  558. package/dist/web/a2a/auth.js +4 -0
  559. package/dist/web/a2a/event_converter_utils.js +10 -0
  560. package/dist/web/a2a/event_processor_utils.js +73 -34
  561. package/dist/web/a2a/executor_context.js +3 -0
  562. package/dist/web/a2a/index.js +20 -0
  563. package/dist/web/a2a/metadata_converter_utils.js +5 -0
  564. package/dist/web/a2a/part_converter_utils.js +13 -0
  565. package/dist/web/agents/active_streaming_tool.js +6 -2
  566. package/dist/web/agents/base_agent.js +48 -9
  567. package/dist/web/agents/context.js +6 -2
  568. package/dist/web/agents/framework_function_calls.js +34 -0
  569. package/dist/web/agents/functions.js +42 -13
  570. package/dist/web/agents/instructions.js +52 -12
  571. package/dist/web/agents/invocation_context.js +56 -7
  572. package/dist/web/agents/live_request_queue.js +30 -5
  573. package/dist/web/agents/llm_agent.js +630 -52
  574. package/dist/web/agents/loop_agent.js +21 -2
  575. package/dist/web/agents/parallel_agent.js +23 -2
  576. package/dist/web/agents/processors/agent_transfer_llm_request_processor.js +8 -4
  577. package/dist/web/agents/processors/base_llm_processor.js +10 -4
  578. package/dist/web/agents/processors/basic_llm_request_processor.js +6 -3
  579. package/dist/web/agents/processors/code_execution_request_processor.js +19 -5
  580. package/dist/web/agents/processors/content_processor_utils.js +87 -16
  581. package/dist/web/agents/processors/content_request_processor.js +10 -4
  582. package/dist/web/agents/processors/context_compactor_request_processor.js +6 -2
  583. package/dist/web/agents/processors/identity_llm_request_processor.js +13 -4
  584. package/dist/web/agents/processors/instructions_llm_request_processor.js +6 -2
  585. package/dist/web/agents/processors/interactions_request_processor.js +6 -2
  586. package/dist/web/agents/processors/request_confirmation_llm_request_processor.js +329 -104
  587. package/dist/web/agents/processors/request_input_llm_request_processor.js +228 -0
  588. package/dist/web/agents/processors/tool_filter_request_processor.js +6 -2
  589. package/dist/web/agents/readonly_context.js +8 -3
  590. package/dist/web/agents/routed_agent.js +6 -14
  591. package/dist/web/agents/run_config.js +12 -0
  592. package/dist/web/agents/sequential_agent.js +22 -3
  593. package/dist/web/agents/user_input_request.js +135 -0
  594. package/dist/web/apps/app.js +14 -11
  595. package/dist/web/apps/resumability_config.js +2 -0
  596. package/dist/web/artifacts/file_artifact_service.js +22 -2
  597. package/dist/web/artifacts/gcs_artifact_service.js +56 -11
  598. package/dist/web/artifacts/in_memory_artifact_service.js +10 -2
  599. package/dist/web/artifacts/registry.js +7 -1
  600. package/dist/web/artifacts/scoped_artifact_service.js +5 -2
  601. package/dist/web/auth/auth_handler.js +5 -2
  602. package/dist/web/auth/auth_preprocessor.js +50 -41
  603. package/dist/web/auth/auth_provider_registry.js +6 -2
  604. package/dist/web/auth/auth_schemes.js +3 -0
  605. package/dist/web/auth/credential_response_binding.js +91 -0
  606. package/dist/web/auth/credential_service/in_memory_credential_service.js +6 -2
  607. package/dist/web/auth/credential_service/session_state_credential_service.js +6 -2
  608. package/dist/web/auth/exchanger/base_credential_exchanger.js +6 -2
  609. package/dist/web/auth/exchanger/credential_exchanger_registry.js +6 -2
  610. package/dist/web/auth/oauth2/oauth2_credential_exchanger.js +8 -2
  611. package/dist/web/auth/oauth2/oauth2_credential_refresher.js +5 -2
  612. package/dist/web/auth/oauth2/oauth2_discovery.js +8 -2
  613. package/dist/web/auth/oauth2/oauth2_utils.js +7 -0
  614. package/dist/web/auth/refresher/base_credential_refresher.js +6 -2
  615. package/dist/web/auth/refresher/credential_refresher_registry.js +6 -2
  616. package/dist/web/code_executors/agent_engine_sandbox_code_executor.js +3 -0
  617. package/dist/web/code_executors/base_code_executor.js +7 -2
  618. package/dist/web/code_executors/built_in_code_executor.js +7 -2
  619. package/dist/web/code_executors/code_execution_utils.js +7 -0
  620. package/dist/web/code_executors/code_executor_context.js +6 -2
  621. package/dist/web/code_executors/unsafe_local_code_executor.js +9 -2
  622. package/dist/web/common.js +109 -4
  623. package/dist/web/context/agent_controlled_context_compactor.js +6 -2
  624. package/dist/web/context/anchored_context_compactor.js +5 -2
  625. package/dist/web/context/compaction_utils.js +4 -0
  626. package/dist/web/context/summarizers/llm_summarizer.js +6 -2
  627. package/dist/web/context/token_based_context_compactor.js +10 -3
  628. package/dist/web/context/trajectory_thought_pruning_compactor.js +6 -2
  629. package/dist/web/context/truncating_context_compactor.js +6 -2
  630. package/dist/web/environment/base_environment.js +71 -0
  631. package/dist/web/environment/local_environment.js +165 -0
  632. package/dist/web/events/compacted_event.js +4 -0
  633. package/dist/web/events/event.js +37 -3
  634. package/dist/web/events/event_actions.js +5 -0
  635. package/dist/web/events/structured_events.js +3 -0
  636. package/dist/web/examples/base_example_provider.js +7 -2
  637. package/dist/web/examples/example_util.js +4 -0
  638. package/dist/web/features/feature_registry.js +8 -0
  639. package/dist/web/index.js +4 -15
  640. package/dist/web/integrations/agent_registry/agent_registry.js +8 -4
  641. package/dist/web/integrations/agent_registry/agent_registry_mcp_toolset.js +5 -2
  642. package/dist/web/integrations/agent_registry/helpers.js +4 -0
  643. package/dist/web/memory/in_memory_memory_service.js +9 -2
  644. package/dist/web/memory/vertex_ai_memory_bank_service.js +17 -2
  645. package/dist/web/models/apigee_llm.js +9 -3
  646. package/dist/web/models/base_llm.js +8 -3
  647. package/dist/web/models/gemini_llm_connection.js +6 -2
  648. package/dist/web/models/google_llm.js +25 -13
  649. package/dist/web/models/interactions_utils.js +17 -0
  650. package/dist/web/models/llm_request.js +5 -0
  651. package/dist/web/models/llm_response.js +3 -0
  652. package/dist/web/models/registry.js +7 -2
  653. package/dist/web/models/routed_llm.js +4 -14
  654. package/dist/web/plugins/base_plugin.js +39 -5
  655. package/dist/web/plugins/global_instruction_plugin.js +6 -2
  656. package/dist/web/plugins/logging_plugin.js +14 -8
  657. package/dist/web/plugins/plugin_manager.js +38 -2
  658. package/dist/web/plugins/security_plugin.js +14 -6
  659. package/dist/web/runner/in_memory_runner.js +6 -2
  660. package/dist/web/runner/runner.js +232 -20
  661. package/dist/web/sessions/base_session_service.js +14 -2
  662. package/dist/web/sessions/database_session_service.js +6 -2
  663. package/dist/web/sessions/db/operations.js +34 -6
  664. package/dist/web/sessions/db/schema.js +16 -8
  665. package/dist/web/sessions/in_memory_session_service.js +23 -14
  666. package/dist/web/sessions/registry.js +5 -1
  667. package/dist/web/sessions/session.js +3 -0
  668. package/dist/web/sessions/state.js +77 -7
  669. package/dist/web/sessions/state_write_order.js +74 -0
  670. package/dist/web/sessions/vertex_ai_session_service.js +118 -15
  671. package/dist/web/skills/gcp_skill_registry.js +2 -0
  672. package/dist/web/skills/loader.js +22 -10
  673. package/dist/web/skills/prompt.js +4 -0
  674. package/dist/web/telemetry/google_cloud.js +54 -9
  675. package/dist/web/telemetry/setup.js +6 -0
  676. package/dist/web/telemetry/tracing.js +77 -7
  677. package/dist/web/tools/agent_tool.js +7 -2
  678. package/dist/web/tools/base_tool.js +25 -2
  679. package/dist/web/tools/base_toolset.js +7 -2
  680. package/dist/web/tools/consolidate_context_tool.js +6 -2
  681. package/dist/web/tools/enterprise_web_search_tool.js +7 -2
  682. package/dist/web/tools/example_tool.js +6 -2
  683. package/dist/web/tools/exit_loop_tool.js +6 -2
  684. package/dist/web/tools/finish_task_tool.js +92 -0
  685. package/dist/web/tools/forwarding_artifact_service.js +6 -2
  686. package/dist/web/tools/function_tool.js +74 -8
  687. package/dist/web/tools/get_user_choice_tool.js +4 -2
  688. package/dist/web/tools/google_maps_grounding_tool.js +7 -2
  689. package/dist/web/tools/google_search_tool.js +6 -2
  690. package/dist/web/tools/load_artifacts_tool.js +9 -2
  691. package/dist/web/tools/load_memory_tool.js +6 -2
  692. package/dist/web/tools/load_web_page.js +22 -1
  693. package/dist/web/tools/long_running_tool.js +5 -2
  694. package/dist/web/tools/mcp/index.js +11 -0
  695. package/dist/web/tools/mcp/load_mcp_resource_tool.js +6 -2
  696. package/dist/web/tools/mcp/mcp_session_manager.js +45 -9
  697. package/dist/web/tools/mcp/mcp_tool.js +6 -2
  698. package/dist/web/tools/mcp/mcp_toolset.js +5 -2
  699. package/dist/web/tools/openapi_tool/auth/auth_helpers.js +5 -0
  700. package/dist/web/tools/openapi_tool/auth/credential_exchangers/auto_auth_credential_exchanger.js +2 -0
  701. package/dist/web/tools/openapi_tool/auth/credential_exchangers/service_account_exchanger.js +2 -0
  702. package/dist/web/tools/openapi_tool/openapi_spec_parser/openapi_spec_parser.js +30 -9
  703. package/dist/web/tools/openapi_tool/openapi_spec_parser/operation_parser.js +2 -0
  704. package/dist/web/tools/openapi_tool/openapi_spec_parser/tool_auth_handler.js +6 -2
  705. package/dist/web/tools/openapi_tool/openapi_toolset.js +2 -0
  706. package/dist/web/tools/openapi_tool/rest_api_tool.js +23 -5
  707. package/dist/web/tools/preload_memory_tool.js +6 -2
  708. package/dist/web/tools/request_input_tool.js +7 -4
  709. package/dist/web/tools/skill/list_skills_tool.js +2 -0
  710. package/dist/web/tools/skill/load_skill_resource_tool.js +2 -0
  711. package/dist/web/tools/skill/load_skill_tool.js +4 -1
  712. package/dist/web/tools/skill/run_skill_inline_script_tool.js +26 -2
  713. package/dist/web/tools/skill/run_skill_script_tool.js +28 -2
  714. package/dist/web/tools/skill/search_skills_tool.js +2 -0
  715. package/dist/web/tools/skill/skill_toolset.js +25 -0
  716. package/dist/web/tools/tool_confirmation.js +24 -2
  717. package/dist/web/tools/url_context_tool.js +6 -2
  718. package/dist/web/tools/vertex_ai_search_tool.js +6 -2
  719. package/dist/web/tools/vertex_rag_retrieval_tool.js +6 -2
  720. package/dist/web/utils/async_hooks_shim.js +6 -2
  721. package/dist/web/utils/async_queue.js +46 -18
  722. package/dist/web/utils/branch_trie.js +3 -0
  723. package/dist/web/utils/case_utils.js +3 -0
  724. package/dist/web/utils/client_labels.js +6 -0
  725. package/dist/web/utils/crypto_shim.js +3 -0
  726. package/dist/web/utils/deprecated.js +40 -0
  727. package/dist/web/utils/env_aware_utils.js +41 -0
  728. package/dist/web/utils/error_utils.js +9 -0
  729. package/dist/web/utils/experimental.js +10 -2
  730. package/dist/web/utils/failover_utils.js +4 -0
  731. package/dist/web/utils/file_extension_utils.js +4 -0
  732. package/dist/web/utils/file_utils.js +7 -2
  733. package/dist/web/utils/gemini_schema_util.js +6 -2
  734. package/dist/web/utils/genai_schema_to_json.js +80 -0
  735. package/dist/web/utils/live_connection_utils.js +5 -2
  736. package/dist/web/utils/logger.js +14 -4
  737. package/dist/web/utils/model_name.js +9 -0
  738. package/dist/web/utils/object_notation_utils.js +8 -3
  739. package/dist/web/utils/optional_peer.js +38 -0
  740. package/dist/web/utils/output_schema_utils.js +3 -0
  741. package/dist/web/utils/partial_copy.js +3 -0
  742. package/dist/web/utils/redact_uri.js +39 -0
  743. package/dist/web/utils/schema.js +167 -0
  744. package/dist/web/utils/simple_zod_to_json.js +15 -4
  745. package/dist/web/utils/streaming_utils.js +14 -6
  746. package/dist/web/utils/task.js +8 -4
  747. package/dist/web/utils/variant_utils.js +5 -2
  748. package/dist/web/utils/vertex_ai_utils.js +5 -2
  749. package/dist/web/version.js +1 -1
  750. package/dist/web/workflow/base_node.js +215 -0
  751. package/dist/web/workflow/branch_path.js +77 -0
  752. package/dist/web/workflow/dynamic_node_scheduler.js +202 -0
  753. package/dist/web/workflow/errors.js +140 -0
  754. package/dist/web/workflow/graph.js +127 -0
  755. package/dist/web/workflow/index.js +80 -0
  756. package/dist/web/workflow/node.js +87 -0
  757. package/dist/web/workflow/node_builders.js +40 -0
  758. package/dist/web/workflow/node_context.js +236 -0
  759. package/dist/web/workflow/node_error_event.js +86 -0
  760. package/dist/web/workflow/node_runner.js +481 -0
  761. package/dist/web/workflow/node_state.js +43 -0
  762. package/dist/web/workflow/node_status.js +20 -0
  763. package/dist/web/workflow/nodes/function_node.js +221 -0
  764. package/dist/web/workflow/nodes/join_node.js +47 -0
  765. package/dist/web/workflow/nodes/node_tool.js +131 -0
  766. package/dist/web/workflow/nodes/parallel_worker.js +120 -0
  767. package/dist/web/workflow/nodes/tool_node.js +126 -0
  768. package/dist/web/workflow/request_input.js +36 -0
  769. package/dist/web/workflow/retry_config.js +43 -0
  770. package/dist/web/workflow/run_llm_agent_as_node.js +266 -0
  771. package/dist/web/workflow/run_node_as_invocation.js +170 -0
  772. package/dist/web/workflow/schedule_dynamic_node.js +26 -0
  773. package/dist/web/workflow/trigger.js +7 -0
  774. package/dist/web/workflow/utils/graph_parser.js +188 -0
  775. package/dist/web/workflow/utils/graph_validation.js +189 -0
  776. package/dist/web/workflow/utils/hitl_utils.js +239 -0
  777. package/dist/web/workflow/utils/rehydration_utils.js +342 -0
  778. package/dist/web/workflow/utils/retry_utils.js +82 -0
  779. package/dist/web/workflow/utils/workflow_graph_utils.js +115 -0
  780. package/dist/web/workflow/workflow.js +529 -0
  781. 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,
@@ -27,6 +34,7 @@ import {
27
34
  traceCallLlm,
28
35
  tracer
29
36
  } from "../telemetry/tracing.js";
37
+ import { parseWithSchema } from "../utils/schema.js";
30
38
  import { isZodObject, zodObjectToSchema } from "../utils/simple_zod_to_json.js";
31
39
  import { BaseAgent } from "./base_agent.js";
32
40
  import {
@@ -36,6 +44,7 @@ import {
36
44
  handleFunctionCallsAsync
37
45
  } from "./functions.js";
38
46
  import { AUTH_PREPROCESSOR } from "../auth/auth_preprocessor.js";
47
+ import { requireAgent } from "./invocation_context.js";
39
48
  import { AGENT_TRANSFER_LLM_REQUEST_PROCESSOR } from "./processors/agent_transfer_llm_request_processor.js";
40
49
  import { BASIC_LLM_REQUEST_PROCESSOR } from "./processors/basic_llm_request_processor.js";
41
50
  import { CODE_EXECUTION_REQUEST_PROCESSOR } from "./processors/code_execution_request_processor.js";
@@ -45,48 +54,113 @@ import { IDENTITY_LLM_REQUEST_PROCESSOR } from "./processors/identity_llm_reques
45
54
  import { INSTRUCTIONS_LLM_REQUEST_PROCESSOR } from "./processors/instructions_llm_request_processor.js";
46
55
  import { INTERACTIONS_REQUEST_PROCESSOR } from "./processors/interactions_request_processor.js";
47
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";
48
58
  import { TOOL_FILTER_REQUEST_PROCESSOR } from "./processors/tool_filter_request_processor.js";
49
59
  import { ReadonlyContext } from "./readonly_context.js";
50
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");
51
111
  const ADK_AGENT_NAME_LABEL_KEY = "adk_agent_name";
52
112
  async function convertToolUnionToTools(toolUnion, context2) {
53
113
  if (isBaseTool(toolUnion)) {
54
114
  return [toolUnion];
55
115
  }
116
+ if (isBaseNode(toolUnion)) {
117
+ return [new NodeTool(toolUnion)];
118
+ }
56
119
  return await toolUnion.getTools(context2);
57
120
  }
121
+ __name(convertToolUnionToTools, "convertToolUnionToTools");
58
122
  const LLM_AGENT_SIGNATURE_SYMBOL = Symbol.for("google.adk.llmAgent");
59
123
  function isLlmAgent(obj) {
60
124
  return typeof obj === "object" && obj !== null && LLM_AGENT_SIGNATURE_SYMBOL in obj && obj[LLM_AGENT_SIGNATURE_SYMBOL] === true;
61
125
  }
62
- 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) {
63
128
  constructor(config) {
64
- var _a2, _b2, _c, _d, _e, _f, _g, _h, _i;
65
- 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
+ });
66
135
  /** A unique symbol to identify ADK LLM agent class. */
67
136
  this[_a] = true;
68
137
  this.model = config.model;
69
- this.instruction = (_a2 = config.instruction) != null ? _a2 : "";
70
- this.globalInstruction = (_b2 = config.globalInstruction) != null ? _b2 : "";
71
- 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 : [];
72
141
  this.generateContentConfig = config.generateContentConfig;
73
- this.disallowTransferToParent = (_d = config.disallowTransferToParent) != null ? _d : false;
74
- this.disallowTransferToPeers = (_e = config.disallowTransferToPeers) != null ? _e : false;
75
- 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;
76
148
  this.inputSchema = isZodObject(config.inputSchema) ? zodObjectToSchema(config.inputSchema) : config.inputSchema;
77
149
  this.outputSchema = isZodObject(config.outputSchema) ? zodObjectToSchema(config.outputSchema) : config.outputSchema;
150
+ this.mode = config.mode;
78
151
  this.outputKey = config.outputKey;
79
152
  this.beforeModelCallback = config.beforeModelCallback;
80
153
  this.afterModelCallback = config.afterModelCallback;
81
154
  this.beforeToolCallback = config.beforeToolCallback;
82
155
  this.afterToolCallback = config.afterToolCallback;
83
156
  this.codeExecutor = config.codeExecutor;
84
- this.requestProcessors = (_g = config.requestProcessors) != null ? _g : [
157
+ this.requestProcessors = (_i = config.requestProcessors) != null ? _i : [
85
158
  BASIC_LLM_REQUEST_PROCESSOR,
86
159
  AUTH_PREPROCESSOR,
87
160
  IDENTITY_LLM_REQUEST_PROCESSOR,
88
161
  INSTRUCTIONS_LLM_REQUEST_PROCESSOR,
89
162
  REQUEST_CONFIRMATION_LLM_REQUEST_PROCESSOR,
163
+ REQUEST_INPUT_LLM_REQUEST_PROCESSOR,
90
164
  CONTENT_REQUEST_PROCESSOR,
91
165
  INTERACTIONS_REQUEST_PROCESSOR,
92
166
  CODE_EXECUTION_REQUEST_PROCESSOR,
@@ -108,8 +182,8 @@ class LlmAgent extends (_b = BaseAgent, _a = LLM_AGENT_SIGNATURE_SYMBOL, _b) {
108
182
  );
109
183
  }
110
184
  }
111
- this.responseProcessors = (_h = config.responseProcessors) != null ? _h : [];
112
- 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);
113
187
  if (!agentTransferDisabled) {
114
188
  this.requestProcessors.push(AGENT_TRANSFER_LLM_REQUEST_PROCESSOR);
115
189
  }
@@ -131,13 +205,14 @@ class LlmAgent extends (_b = BaseAgent, _a = LLM_AGENT_SIGNATURE_SYMBOL, _b) {
131
205
  this.generateContentConfig = {};
132
206
  }
133
207
  if (this.outputSchema) {
134
- 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) {
135
210
  logger.warn(
136
211
  `Invalid config for agent ${this.name}: outputSchema cannot co-exist with agent transfer configurations. Setting disallowTransferToParent=true, disallowTransferToPeers=true`
137
212
  );
138
- this.disallowTransferToParent = true;
139
- this.disallowTransferToPeers = true;
140
213
  }
214
+ this.disallowTransferToParent = true;
215
+ this.disallowTransferToPeers = true;
141
216
  }
142
217
  }
143
218
  /**
@@ -161,6 +236,16 @@ class LlmAgent extends (_b = BaseAgent, _a = LLM_AGENT_SIGNATURE_SYMBOL, _b) {
161
236
  }
162
237
  throw new Error(`No model found for ${this.name}.`);
163
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
+ }
164
249
  /**
165
250
  * The resolved instruction field to construct instruction for this
166
251
  * agent.
@@ -233,7 +318,7 @@ class LlmAgent extends (_b = BaseAgent, _a = LLM_AGENT_SIGNATURE_SYMBOL, _b) {
233
318
  * This method is only for use by Agent Development Kit.
234
319
  */
235
320
  get canonicalBeforeModelCallbacks() {
236
- return LlmAgent.normalizeCallbackArray(this.beforeModelCallback);
321
+ return _LlmAgent.normalizeCallbackArray(this.beforeModelCallback);
237
322
  }
238
323
  /**
239
324
  * The resolved afterModelCallback field as a list of
@@ -242,7 +327,7 @@ class LlmAgent extends (_b = BaseAgent, _a = LLM_AGENT_SIGNATURE_SYMBOL, _b) {
242
327
  * This method is only for use by Agent Development Kit.
243
328
  */
244
329
  get canonicalAfterModelCallbacks() {
245
- return LlmAgent.normalizeCallbackArray(this.afterModelCallback);
330
+ return _LlmAgent.normalizeCallbackArray(this.afterModelCallback);
246
331
  }
247
332
  /**
248
333
  * The resolved beforeToolCallback field as a list of
@@ -251,7 +336,7 @@ class LlmAgent extends (_b = BaseAgent, _a = LLM_AGENT_SIGNATURE_SYMBOL, _b) {
251
336
  * This method is only for use by Agent Development Kit.
252
337
  */
253
338
  get canonicalBeforeToolCallbacks() {
254
- return LlmAgent.normalizeCallbackArray(this.beforeToolCallback);
339
+ return _LlmAgent.normalizeCallbackArray(this.beforeToolCallback);
255
340
  }
256
341
  /**
257
342
  * The resolved afterToolCallback field as a list of AfterToolCallback.
@@ -259,7 +344,7 @@ class LlmAgent extends (_b = BaseAgent, _a = LLM_AGENT_SIGNATURE_SYMBOL, _b) {
259
344
  * This method is only for use by Agent Development Kit.
260
345
  */
261
346
  get canonicalAfterToolCallbacks() {
262
- return LlmAgent.normalizeCallbackArray(this.afterToolCallback);
347
+ return _LlmAgent.normalizeCallbackArray(this.afterToolCallback);
263
348
  }
264
349
  /**
265
350
  * Saves the agent's final response to the session state if configured.
@@ -302,14 +387,53 @@ class LlmAgent extends (_b = BaseAgent, _a = LLM_AGENT_SIGNATURE_SYMBOL, _b) {
302
387
  if (!resultStr.trim()) {
303
388
  return;
304
389
  }
390
+ let parsed;
305
391
  try {
306
- result = JSON.parse(resultStr);
392
+ parsed = JSON.parse(resultStr);
307
393
  } catch (e) {
308
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;
309
406
  }
310
407
  }
311
408
  event.actions.stateDelta[this.outputKey] = result;
312
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
+ }
313
437
  async *runAsyncImpl(context2) {
314
438
  var _a2, _b2;
315
439
  while (true) {
@@ -369,10 +493,350 @@ class LlmAgent extends (_b = BaseAgent, _a = LLM_AGENT_SIGNATURE_SYMBOL, _b) {
369
493
  * times. Subsequent reconnects skip `sendHistory` because the server
370
494
  * already holds the conversation state associated with the handle.
371
495
  */
372
- // eslint-disable-next-line require-yield
373
- async *runLiveFlow(_invocationContext) {
374
- await Promise.resolve();
375
- 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;
376
840
  }
377
841
  async *runOneStepAsync(invocationContext) {
378
842
  var _a2, _b2, _c;
@@ -393,22 +857,32 @@ class LlmAgent extends (_b = BaseAgent, _a = LLM_AGENT_SIGNATURE_SYMBOL, _b) {
393
857
  }
394
858
  }
395
859
  const allTools = [...this.tools];
396
- if (this.outputSchema && allTools.length > 0 && !canUseOutputSchemaWithTools(this.canonicalModel.model)) {
860
+ if (this.mode === "task") {
861
+ allTools.push(this.finishTaskTool);
862
+ } else if (this.outputSchema && allTools.length > 0 && !canUseOutputSchemaWithTools(this.canonicalModel.model)) {
397
863
  const setModelResponseTool = new FunctionTool({
398
864
  name: "set_model_response",
399
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.",
400
866
  parameters: this.outputSchema,
401
- execute: async (args, toolContext) => {
867
+ execute: /* @__PURE__ */ __name(async (args, toolContext) => {
402
868
  if (toolContext) {
403
869
  toolContext.actions.skipSummarization = true;
404
870
  }
405
871
  return JSON.stringify(args);
406
- }
872
+ }, "execute")
407
873
  });
408
874
  allTools.push(setModelResponseTool);
409
875
  }
876
+ const modelResponseEvent = createEvent({
877
+ invocationId: invocationContext.invocationId,
878
+ author: this.name,
879
+ branch: invocationContext.branch
880
+ });
410
881
  for (const toolUnion of allTools) {
411
- const toolContext = new Context({ invocationContext });
882
+ const toolContext = new Context({
883
+ invocationContext,
884
+ eventActions: modelResponseEvent.actions
885
+ });
412
886
  const tools = (await convertToolUnionToTools(
413
887
  toolUnion,
414
888
  new ReadonlyContext(invocationContext)
@@ -425,18 +899,13 @@ class LlmAgent extends (_b = BaseAgent, _a = LLM_AGENT_SIGNATURE_SYMBOL, _b) {
425
899
  if (invocationContext.endInvocation || ((_c = invocationContext.abortSignal) == null ? void 0 : _c.aborted)) {
426
900
  return;
427
901
  }
428
- const modelResponseEvent = createEvent({
429
- invocationId: invocationContext.invocationId,
430
- author: this.name,
431
- branch: invocationContext.branch
432
- });
433
902
  const span = tracer.startSpan("call_llm");
434
903
  const ctx = trace.setSpan(context.active(), span);
435
904
  yield* runAsyncGeneratorWithOtelContext(
436
905
  ctx,
437
906
  this,
438
907
  async function* () {
439
- const responsesGenerator = async function* () {
908
+ const responsesGenerator = /* @__PURE__ */ __name(async function* () {
440
909
  var _a3, _b3;
441
910
  for await (const llmResponse of this.callLlmAsync(
442
911
  invocationContext,
@@ -460,7 +929,7 @@ class LlmAgent extends (_b = BaseAgent, _a = LLM_AGENT_SIGNATURE_SYMBOL, _b) {
460
929
  yield event;
461
930
  }
462
931
  }
463
- };
932
+ }, "responsesGenerator");
464
933
  yield* this.runAndHandleError(
465
934
  responsesGenerator.call(this),
466
935
  invocationContext,
@@ -484,7 +953,8 @@ class LlmAgent extends (_b = BaseAgent, _a = LLM_AGENT_SIGNATURE_SYMBOL, _b) {
484
953
  yield event;
485
954
  }
486
955
  }
487
- 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) {
488
958
  return;
489
959
  }
490
960
  const mergedEvent = createEvent({
@@ -515,13 +985,32 @@ class LlmAgent extends (_b = BaseAgent, _a = LLM_AGENT_SIGNATURE_SYMBOL, _b) {
515
985
  invocationContext.endInvocation = true;
516
986
  return;
517
987
  }
518
- const functionResponseEvent = await handleFunctionCallsAsync({
519
- invocationContext,
520
- functionCallEvent: mergedEvent,
521
- toolsDict: llmRequest.toolsDict,
522
- beforeToolCallbacks: this.canonicalBeforeToolCallbacks,
523
- afterToolCallbacks: this.canonicalAfterToolCallbacks
524
- });
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
+ }
525
1014
  if (!functionResponseEvent || ((_e = invocationContext.abortSignal) == null ? void 0 : _e.aborted)) {
526
1015
  return;
527
1016
  }
@@ -567,7 +1056,7 @@ class LlmAgent extends (_b = BaseAgent, _a = LLM_AGENT_SIGNATURE_SYMBOL, _b) {
567
1056
  * @throws Error if the agent is not found.
568
1057
  */
569
1058
  getAgentByName(invocationContext, agentName) {
570
- const rootAgent = invocationContext.agent.rootAgent;
1059
+ const rootAgent = requireAgent(invocationContext).rootAgent;
571
1060
  const agentToRun = rootAgent.findAgent(agentName);
572
1061
  if (!agentToRun) {
573
1062
  throw new Error(`Agent ${agentName} not found in the agent tree.`);
@@ -742,7 +1231,9 @@ class LlmAgent extends (_b = BaseAgent, _a = LLM_AGENT_SIGNATURE_SYMBOL, _b) {
742
1231
  // TODO - b/425992518: omitted Py LlmAgent features.
743
1232
  // - code_executor
744
1233
  // - configurable agents by yaml config
745
- }
1234
+ };
1235
+ __name(_LlmAgent, "LlmAgent");
1236
+ let LlmAgent = _LlmAgent;
746
1237
  export {
747
1238
  LlmAgent,
748
1239
  isLlmAgent