@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
@@ -0,0 +1,82 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { BaseNode } from './base_node.js';
7
+ import { NodeContext } from './node_context.js';
8
+ import { NodeState } from './node_state.js';
9
+ /**
10
+ * Options controlling a single `ctx.runNode(...)` execution.
11
+ */
12
+ export interface RunNodeOptions {
13
+ /** Deterministic tracking name; defaults to `node.name`. */
14
+ nodeName?: string;
15
+ /**
16
+ * Unique id for this specific run. Defaults to a per-node sequence — "1",
17
+ * "2", "3" in call order — which is what a resume matches checkpoints on.
18
+ *
19
+ * Supply one only when position is not stable but identity is (a reorderable
20
+ * collection: key it off the item's own id). Give it a non-numeric character
21
+ * so it cannot collide with the automatic sequence: an all-digit id is
22
+ * refused for any node ADK also numbers automatically in the same context,
23
+ * whichever call comes first.
24
+ */
25
+ runId?: string;
26
+ /** If true, the child's output replaces the caller's output. */
27
+ useAsOutput?: boolean;
28
+ /** If true, run the child in an isolated sub-branch. */
29
+ useSubBranch?: boolean;
30
+ /** Explicit branch, overriding the default/sub-branch computation. */
31
+ overrideBranch?: string;
32
+ /** Explicit isolation scope, overriding inheritance from the parent. */
33
+ overrideIsolationScope?: string;
34
+ /**
35
+ * Explicit node path for the child (used by the dynamic scheduler to embed
36
+ * the run id, e.g. `wf.node@1`, so distinct runs are distinguishable on
37
+ * resume). Defaults to `${parent.nodePath}.${nodeName}`.
38
+ */
39
+ overrideNodePath?: string;
40
+ }
41
+ /** Parameters for {@link executeChildNode}. */
42
+ export interface ExecuteChildNodeParams {
43
+ /** The context requesting the child run. */
44
+ parent: NodeContext;
45
+ /** The node to execute. */
46
+ node: BaseNode;
47
+ /** The input passed to the node. */
48
+ input: unknown;
49
+ /** Options controlling this run. */
50
+ options?: RunNodeOptions;
51
+ /**
52
+ * Engine-supplied cancellation signal that overrides the parent invocation's
53
+ * for this child (used by a Workflow to cancel in-flight siblings when a node
54
+ * fails). Defaults to the parent invocation's abort signal.
55
+ */
56
+ abortSignal?: AbortSignal;
57
+ nodeState?: NodeState;
58
+ /**
59
+ * Resume responses this run may consume, overriding the parent's. The
60
+ * workflow loop passes an empty map for a run that is not the one recovered
61
+ * from the previous turn, so a node re-triggered later in a resumed turn
62
+ * starts clean instead of re-reading a response it already answered.
63
+ */
64
+ resumeInputs?: Record<string, unknown>;
65
+ }
66
+ /**
67
+ * Executes a child node on behalf of `parent.runNode(...)`.
68
+ *
69
+ * Responsibilities (Phase 1 scope): create the child {@link NodeContext},
70
+ * drive `node.run()`, enrich each emitted event (author, node path, branch,
71
+ * isolation scope), track the child's `output`/`route`, apply the per-node
72
+ * `timeout`, and retry on failure per `retryConfig`. Returns the child context.
73
+ *
74
+ * Retry semantics: each attempt starts with the child's per-attempt state
75
+ * cleared (output, route, interrupt ids, and `actions.stateDelta`). Events are
76
+ * the exception — they stream out through the shared channel as they are
77
+ * produced and cannot be retracted, so a node that emits some events and then
78
+ * fails will re-emit them when the attempt is retried. Nodes that must not
79
+ * duplicate observable events across retries should emit only after their
80
+ * fallible work has succeeded.
81
+ */
82
+ export declare function executeChildNode(params: ExecuteChildNodeParams): Promise<NodeContext>;
@@ -0,0 +1,47 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { NodeStatus } from './node_status.js';
7
+ /**
8
+ * State of a node in the workflow.
9
+ *
10
+ * Ported from `google/adk-python` `workflow/_node_state.py`. Note that the
11
+ * node's *output* is intentionally NOT stored here — it is carried on emitted
12
+ * events / the node Context, not on the persisted node state.
13
+ */
14
+ export interface NodeState {
15
+ /** The run status of the node. */
16
+ status: NodeStatus;
17
+ /** The input provided to the node. */
18
+ input?: unknown;
19
+ /** The attempt count for this node run (1-based). */
20
+ attemptCount: number;
21
+ /** The interrupt ids that are pending to be resolved. */
22
+ interrupts: string[];
23
+ /** The responses for resuming the node, keyed by interrupt id. */
24
+ resumeInputs: Record<string, unknown>;
25
+ /**
26
+ * Sequential counter incremented each time the node gets a fresh run.
27
+ *
28
+ * Preserving this count independently of `runId` prevents path collisions if
29
+ * a node switches between custom string IDs and auto-generated numeric IDs.
30
+ */
31
+ runCounter: number;
32
+ /** The run ID of this node run. */
33
+ runId?: string;
34
+ /**
35
+ * The run ID of the parent node which dynamically scheduled this node run.
36
+ */
37
+ parentRunId?: string;
38
+ }
39
+ /**
40
+ * Creates a {@link NodeState} with Python-aligned defaults, overlaying any
41
+ * provided partial values.
42
+ */
43
+ export declare function createNodeState(partial?: Partial<NodeState>): NodeState;
44
+ /**
45
+ * Type guard for a {@link NodeState}-shaped object.
46
+ */
47
+ export declare function isNodeState(obj: unknown): obj is NodeState;
@@ -0,0 +1,28 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ /**
7
+ * The status of a node in the workflow graph.
8
+ *
9
+ * Numeric values are aligned with `google/adk-python`
10
+ * `workflow/_node_status.py` so that persisted node state is portable across
11
+ * the Python and TypeScript runtimes.
12
+ */
13
+ export declare enum NodeStatus {
14
+ /** The node is not ready to be executed. */
15
+ INACTIVE = 0,
16
+ /** The node is ready to be executed. */
17
+ PENDING = 1,
18
+ /** The node is being executed. */
19
+ RUNNING = 2,
20
+ /** The node has been executed successfully. */
21
+ COMPLETED = 3,
22
+ /** The node is waiting (e.g. for a user response or re-trigger). */
23
+ WAITING = 4,
24
+ /** The node has failed. */
25
+ FAILED = 5,
26
+ /** The node has been cancelled. */
27
+ CANCELLED = 6
28
+ }
@@ -0,0 +1,78 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { AuthConfig } from '../../auth/auth_tool.js';
7
+ import { Event } from '../../events/event.js';
8
+ import { BaseNode, BaseNodeConfig } from '../base_node.js';
9
+ import { NodeContext } from '../node_context.js';
10
+ /**
11
+ * A value a {@link FunctionNodeHandler} may return or yield.
12
+ */
13
+ export type FunctionNodeResult<TOutput> = TOutput | Event | null | undefined | void;
14
+ /**
15
+ * The handler wrapped by a {@link FunctionNode}.
16
+ *
17
+ * Unlike Python's `FunctionNode` (which binds named parameters from `ctx.state`
18
+ * or `node_input` via runtime signature introspection), the TypeScript form
19
+ * uses the idiomatic explicit `(ctx, input)` signature. Read `ctx.state`
20
+ * directly for state-bound values. It may return a value/`Event`, a Promise, or
21
+ * a (sync/async) generator of those.
22
+ */
23
+ export type FunctionNodeHandler<TInput = unknown, TOutput = unknown> = (ctx: NodeContext, input: TInput) => FunctionNodeResult<TOutput> | Promise<FunctionNodeResult<TOutput>> | Generator<FunctionNodeResult<TOutput>, void, unknown> | AsyncGenerator<FunctionNodeResult<TOutput>, void, unknown>;
24
+ /**
25
+ * Options for a {@link FunctionNode}.
26
+ */
27
+ export interface FunctionNodeConfig extends Partial<Omit<BaseNodeConfig, 'name'>> {
28
+ /**
29
+ * If set, the framework requests user authentication before running (Phase 5
30
+ * enables the auth gate; stored here now for API parity).
31
+ */
32
+ authConfig?: AuthConfig;
33
+ }
34
+ /**
35
+ * A node that wraps a plain function, async function, or (sync/async) generator.
36
+ *
37
+ * Ported (TS-idiomatic subset) from `google/adk-python` `_function_node.py`.
38
+ * Return-value handling:
39
+ * - `Event` → emitted as-is (output validated against `outputSchema`)
40
+ * - genai `Content` → emitted as the event content
41
+ * - `null`/`undefined` → skipped (unless there are pending state deltas)
42
+ * - anything else → emitted as `Event(output=value)`
43
+ * State written via `ctx.state` during execution is attached to emitted events.
44
+ */
45
+ export declare class FunctionNode<TInput = unknown, TOutput = unknown> extends BaseNode<TInput, TOutput> {
46
+ readonly authConfig?: AuthConfig;
47
+ private readonly handler;
48
+ /** Per-run shadow of the state entries already attached to an emitted event. */
49
+ private readonly attachedStateByCtx;
50
+ constructor(name: string, handler: FunctionNodeHandler<TInput, TOutput>, config?: FunctionNodeConfig);
51
+ protected runImpl(ctx: NodeContext, input: TInput): AsyncGenerator<Event | TOutput | unknown, void, void>;
52
+ /**
53
+ * Ensures a credential for `authConfig` is available. Returns an
54
+ * `adk_request_credential` interrupt event if the credential must be
55
+ * requested from the user, or `undefined` if the node may proceed.
56
+ *
57
+ * On resume, a credential provided via `ctx.resumeInputs[credentialKey]` is
58
+ * stored into state before re-checking.
59
+ */
60
+ private runAuthGate;
61
+ /**
62
+ * Returns the state-delta entries written since the last event was emitted
63
+ * for this run (new keys or changed values). A multi-event handler would
64
+ * otherwise re-emit the whole growing delta on every event.
65
+ *
66
+ * `ctx.actions.stateDelta` can't be drained — `NodeContext` builds its
67
+ * `State` over it — so we track what has already been attached in a shadow
68
+ * map keyed by the run's context (GC'd with the context).
69
+ */
70
+ private pendingStateDelta;
71
+ /**
72
+ * Writes an emitted event's state delta into the node's own state view, and
73
+ * records it as already attached so {@link pendingStateDelta} does not emit a
74
+ * second event carrying the same keys.
75
+ */
76
+ private applyEmittedState;
77
+ protected toEvent(ctx: NodeContext, data: unknown): Event | null;
78
+ }
@@ -0,0 +1,24 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { Event } from '../../events/event.js';
7
+ import { BaseNode } from '../base_node.js';
8
+ import { NodeContext } from '../node_context.js';
9
+ /**
10
+ * A fan-in barrier node: via {@link requiresAllPredecessors} the engine holds it
11
+ * until ALL of its predecessors complete, then runs it with their aggregated
12
+ * outputs as input.
13
+ *
14
+ * This node emits that input unchanged — the engine supplies the
15
+ * predecessor-name → output map; the join just passes it through as its output.
16
+ * The barrier itself is enforced by the orchestrator (which reads
17
+ * `requiresAllPredecessors`) and lands in a later part.
18
+ *
19
+ * Ported from `google/adk-python` `workflow/_join_node.py`.
20
+ */
21
+ export declare class JoinNode extends BaseNode {
22
+ get requiresAllPredecessors(): boolean;
23
+ protected runImpl(ctx: NodeContext, input: unknown): AsyncGenerator<Event, void, void>;
24
+ }
@@ -0,0 +1,53 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { FunctionDeclaration } from '@google/genai';
7
+ import { BaseTool, RunAsyncToolRequest } from '../../tools/base_tool.js';
8
+ import { BaseNode } from '../base_node.js';
9
+ /**
10
+ * A unique symbol branding {@link NodeTool} instances (see `isNodeTool`).
11
+ */
12
+ declare const NODE_TOOL_SIGNATURE_SYMBOL: unique symbol;
13
+ /**
14
+ * A tool that executes a {@link BaseNode} (e.g. a `Workflow` or a function node)
15
+ * on behalf of an `LlmAgent`. This is the inverse of {@link ToolNode} (which
16
+ * exposes a tool as a workflow node): here a node/workflow is exposed to a model
17
+ * as a callable tool.
18
+ *
19
+ * The wrapped node MUST declare an `inputSchema` (the tool's parameter schema is
20
+ * derived from it). When the model calls the tool, the node runs with a
21
+ * {@link NodeContext} bridged from the tool's agent context (sharing the
22
+ * invocation, session, and state); the node's structured output becomes the
23
+ * tool result.
24
+ *
25
+ * Ported from `google/adk-python` `tools/_node_tool.py::NodeTool`.
26
+ *
27
+ * The tool is marked long-running so a node that pauses for input
28
+ * (`RequestInput`) does not force a synthetic empty response.
29
+ */
30
+ export declare class NodeTool extends BaseTool {
31
+ /** Brand identifying this object as a {@link NodeTool} (see `isNodeTool`). */
32
+ readonly [NODE_TOOL_SIGNATURE_SYMBOL] = true;
33
+ readonly node: BaseNode;
34
+ constructor(node: BaseNode, name?: string, description?: string);
35
+ _getDeclaration(): FunctionDeclaration;
36
+ /** Whether the node's input schema is a (Zod) object rather than a scalar. */
37
+ private get inputIsObject();
38
+ runAsync({ args, toolContext, }: RunAsyncToolRequest): Promise<unknown>;
39
+ /**
40
+ * Runs the wrapped node with a {@link NodeContext} bridged from the agent's
41
+ * tool context. Node events are streamed into the invocation's event queue so
42
+ * intermediate/interrupt events surface to the agent (and a paused node can be
43
+ * resumed). Requires being invoked from an `LlmAgent` tool-call step, which is
44
+ * what provides that queue and the function-call id.
45
+ */
46
+ private runNode;
47
+ }
48
+ /**
49
+ * Type guard for {@link NodeTool}. Matches on the brand rather than `instanceof`
50
+ * so it stays correct across package copies (mirrors `isBaseTool`).
51
+ */
52
+ export declare function isNodeTool(value: unknown): value is NodeTool;
53
+ export {};
@@ -0,0 +1,55 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { BaseNode } from '../base_node.js';
7
+ import { RunnableNode } from '../graph.js';
8
+ import { NodeContext } from '../node_context.js';
9
+ /** Options for a {@link ParallelWorker}. */
10
+ export interface ParallelWorkerConfig {
11
+ /**
12
+ * Maximum number of items processed concurrently. Defaults to
13
+ * `DEFAULT_MAX_PARALLEL_WORKERS` (8); pass `Infinity` for unbounded.
14
+ */
15
+ maxParallelWorkers?: number;
16
+ }
17
+ /**
18
+ * A node that runs a wrapped node once per item of a list input, preserving
19
+ * order, bounded by `maxParallelWorkers`, and stopping on the first error.
20
+ *
21
+ * Ported from `google/adk-python` `workflow/_parallel_worker.py`. A non-list
22
+ * input is treated as a single-element list. Each item runs via
23
+ * `ctx.runNode(inner, item, {useSubBranch: true})`; the node's output is the
24
+ * ordered list of the children's outputs.
25
+ *
26
+ * The wrapped value is anything an edge accepts — an agent, a tool, a plain
27
+ * function, or an already-built node — and is built the same way, so
28
+ * `new ParallelWorker(myAgent)` works without `node(myAgent)`. It is built when
29
+ * the worker is constructed, not per item, so every item runs the one inner
30
+ * node — which is also where the worker's own name comes from.
31
+ *
32
+ * Notes:
33
+ * - **retry/timeout live on the inner node.** `retryConfig`/`timeout` passed to
34
+ * `buildNode` apply to the wrapped node (per item); the ParallelWorker itself
35
+ * carries neither, so the two levels don't compose. Wrapping the value
36
+ * yourself — `new ParallelWorker(node(myAgent, {timeout: 5}))` — is how those
37
+ * options are set.
38
+ * - **All-or-nothing.** If any item throws, the first error is rethrown and the
39
+ * already-computed sibling outputs are discarded. Make individual items
40
+ * failure-tolerant if partial results matter.
41
+ * - **An item that interrupts pauses the whole worker.** It has no output to
42
+ * contribute, so the worker stops claiming items, emits no list, and raises
43
+ * the child's interrupt ids as its own. Once they are answered the worker
44
+ * re-runs from the top (`rerunOnResume`), and items that already completed
45
+ * are fast-forwarded by their run id rather than executed again.
46
+ * - **Cancellation stops scheduling only.** On abort/timeout the loop stops
47
+ * claiming new items, but items already in flight run to completion —
48
+ * `ctx.runNode` has no way to forward a signal into a child run.
49
+ */
50
+ export declare class ParallelWorker extends BaseNode {
51
+ readonly maxParallelWorkers?: number;
52
+ private readonly inner;
53
+ constructor(inner: RunnableNode, config?: ParallelWorkerConfig);
54
+ protected runImpl(ctx: NodeContext, input: unknown): AsyncGenerator<unknown, void, void>;
55
+ }
@@ -0,0 +1,34 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { Event } from '../../events/event.js';
7
+ import { BaseTool } from '../../tools/base_tool.js';
8
+ import { BaseNode, BaseNodeConfig } from '../base_node.js';
9
+ import { NodeContext } from '../node_context.js';
10
+ /** Options for a {@link ToolNode}. */
11
+ export interface ToolNodeConfig extends Partial<Omit<BaseNodeConfig, 'name'>> {
12
+ /** Optional name override; defaults to the tool's name. */
13
+ name?: string;
14
+ }
15
+ /**
16
+ * A node that wraps an ADK {@link BaseTool} and invokes it with the node input
17
+ * as its arguments.
18
+ *
19
+ * Ported from `google/adk-python` `workflow/_tool_node.py`. The node input is
20
+ * coerced to a tool-args object: genai `Content` → its text; a JSON string →
21
+ * parsed object; `null`/empty → `{}`.
22
+ *
23
+ * The tool runs through the canonical execution path
24
+ * ({@link handleFunctionCallList}), so the plugin `before`/`after`/`onError`
25
+ * tool callbacks, the confirmation gate, telemetry, and everything the tool
26
+ * writes to its context (`stateDelta`, `artifactDelta`, requested credentials /
27
+ * confirmations, …) all apply — exactly as when the same tool is called from an
28
+ * LLM agent. The emitted event carries a canonical `functionResponse` part.
29
+ */
30
+ export declare class ToolNode extends BaseNode {
31
+ readonly tool: BaseTool;
32
+ constructor(tool: BaseTool, config?: ToolNodeConfig);
33
+ protected runImpl(ctx: NodeContext, input: unknown): AsyncGenerator<Event, void, void>;
34
+ }
@@ -0,0 +1,73 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import type { SchemaLike } from '../utils/schema.js';
7
+ /**
8
+ * A unique symbol branding {@link RequestInput} instances.
9
+ *
10
+ * {@link isRequestInput} matches on this brand rather than `instanceof` so a
11
+ * request built by another copy of adk-js in the same runtime is still
12
+ * recognised (an `instanceof` check fails across package copies). This matters
13
+ * because the guard gates the HITL interrupt path in `BaseNode.run`: a missed
14
+ * match would silently stringify the request into a text part instead of
15
+ * pausing the workflow. Mirrors the `Symbol.for('google.adk.*')` brands used
16
+ * across ADK.
17
+ */
18
+ declare const REQUEST_INPUT_SIGNATURE_SYMBOL: unique symbol;
19
+ /** Parameters for constructing a {@link RequestInput}. */
20
+ export interface RequestInputParams {
21
+ /** The interrupt id (usually a function-call id). Auto-generated if omitted. */
22
+ interruptId?: string;
23
+ /** Custom payload provided for resuming. */
24
+ payload?: unknown;
25
+ /** A message to display to the user when requesting input. */
26
+ message?: string;
27
+ /**
28
+ * The expected shape of the reply (Zod v3/v4 or genai `Schema`).
29
+ *
30
+ * It tells a client what to collect — the dev UI renders a form from it —
31
+ * and a *structured* reply is checked against it on resume. Nothing coerces
32
+ * a human's answer into the shape: a plain-text reply is routed to the
33
+ * interrupt as-is and is not checked, so put an agent node after the pause
34
+ * if you need free text normalized.
35
+ */
36
+ responseSchema?: SchemaLike;
37
+ }
38
+ /**
39
+ * A request for input from the user, yielded/returned by a node to pause a
40
+ * workflow (Human-in-the-Loop). The framework converts it to an interrupt
41
+ * event; the workflow surfaces the interrupt id to the caller, which later
42
+ * resumes by providing `resumeInputs[interruptId]`.
43
+ *
44
+ * A client answers in one of two ways:
45
+ *
46
+ * - **Plain text.** A text turn is routed to every pending interrupt as-is.
47
+ * This is what the interactive CLI sends, and the dev UI whenever it has no
48
+ * schema to build a form from.
49
+ * - **A `functionResponse`** named `adk_request_input`, carrying the interrupt
50
+ * id. Wrap a bare value as `{result: <value>}` — that envelope is unwrapped
51
+ * for you, and what it holds counts as plain text. Any other object is
52
+ * delivered to the node unchanged, so it must already match
53
+ * {@link RequestInputParams.responseSchema} when one is set.
54
+ *
55
+ * Ported from `google/adk-python` `events/request_input.py`.
56
+ */
57
+ export declare class RequestInput {
58
+ /** Brand identifying this object as a {@link RequestInput} (see {@link isRequestInput}). */
59
+ readonly [REQUEST_INPUT_SIGNATURE_SYMBOL] = true;
60
+ readonly interruptId: string;
61
+ readonly payload?: unknown;
62
+ readonly message?: string;
63
+ readonly responseSchema?: SchemaLike;
64
+ constructor(params?: RequestInputParams);
65
+ }
66
+ /**
67
+ * Type guard for {@link RequestInput}.
68
+ *
69
+ * Matches on the `REQUEST_INPUT_SIGNATURE_SYMBOL` brand rather than
70
+ * `instanceof` so it stays correct across package copies (see the brand's doc).
71
+ */
72
+ export declare function isRequestInput(value: unknown): value is RequestInput;
73
+ export {};
@@ -0,0 +1,84 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ /**
7
+ * An error constructor usable in {@link RetryConfig.exceptions}.
8
+ */
9
+ export type ErrorClass = new (...args: never[]) => Error;
10
+ /**
11
+ * Configuration for retrying a node.
12
+ *
13
+ * Ported from `google/adk-python` `workflow/_retry_config.py`. Delays are
14
+ * expressed in **seconds** (fractions allowed) to match the Python semantics
15
+ * and keep configuration portable across runtimes. Unset fields fall back to
16
+ * the documented defaults inside the retry utilities.
17
+ */
18
+ export interface RetryConfig {
19
+ /**
20
+ * Maximum number of attempts, including the original request. If 0 or 1, it
21
+ * means no retries. If not specified, defaults to 5.
22
+ */
23
+ maxAttempts?: number;
24
+ /**
25
+ * Initial delay before the first retry, in seconds. If not specified,
26
+ * defaults to 1.0 second.
27
+ */
28
+ initialDelay?: number;
29
+ /**
30
+ * Maximum delay between retries, in seconds. If not specified, defaults to
31
+ * 60.0 seconds.
32
+ */
33
+ maxDelay?: number;
34
+ /**
35
+ * Multiplier by which the delay increases after each attempt. If not
36
+ * specified, defaults to 2.0.
37
+ */
38
+ backoffFactor?: number;
39
+ /**
40
+ * Randomness factor for the delay. If not specified, defaults to 1.0. Use 0.0
41
+ * to remove randomness.
42
+ */
43
+ jitter?: number;
44
+ /**
45
+ * Exceptions to retry on. Accepts error class names as strings (e.g.
46
+ * `['TypeError']`) or error classes directly (e.g. `[TypeError]`).
47
+ * `undefined`/`null` means retry on all errors.
48
+ */
49
+ exceptions?: Array<string | ErrorClass> | null;
50
+ }
51
+ /**
52
+ * Normalizes the `exceptions` field of a {@link RetryConfig} to a list of error
53
+ * class name strings, mirroring Python's `field_validator`.
54
+ *
55
+ * @returns The list of class-name strings, or `undefined` to mean "retry on all
56
+ * errors".
57
+ */
58
+ export declare function normalizeRetryExceptions(exceptions?: Array<string | ErrorClass> | null): string[] | undefined;
59
+ /**
60
+ * A {@link RetryConfig} whose `exceptions` filter has been normalized to error
61
+ * class-name strings once, up front.
62
+ *
63
+ * Produced by {@link prepareRetryConfig} when a node accepts its config, so the
64
+ * retry hot path neither re-normalizes on every failure nor throws on a
65
+ * malformed config from inside the retry loop.
66
+ */
67
+ export interface PreparedRetryConfig {
68
+ readonly maxAttempts?: number;
69
+ readonly initialDelay?: number;
70
+ readonly maxDelay?: number;
71
+ readonly backoffFactor?: number;
72
+ readonly jitter?: number;
73
+ /** Normalized exception names; `undefined` means retry on all errors. */
74
+ readonly exceptions?: readonly string[];
75
+ }
76
+ /**
77
+ * Validates and normalizes a {@link RetryConfig} once, at config-acceptance
78
+ * time (i.e. when a node is constructed).
79
+ *
80
+ * Throws if `exceptions` contains a malformed entry, surfacing the
81
+ * misconfiguration at construction rather than masking a node's real error from
82
+ * inside the retry path.
83
+ */
84
+ export declare function prepareRetryConfig(config: RetryConfig): PreparedRetryConfig;
@@ -0,0 +1,28 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { LlmAgent } from '../agents/llm_agent.js';
7
+ import { Event } from '../events/event.js';
8
+ import { NodeContext } from './node_context.js';
9
+ /**
10
+ * Runs an {@link LlmAgent} as a workflow node: the node input is appended as a
11
+ * user turn, the agent runs, and its reply becomes the node output.
12
+ *
13
+ * `LlmAgent.runImpl` is the only caller. It is a free function rather than a
14
+ * wrapper node because an agent is already a `BaseNode` — putting a second node
15
+ * around it meant the graph held something that was not the agent the caller
16
+ * passed in, and the agent's own node configuration (`timeout`, `rerunOnResume`,
17
+ * …) was dropped on the floor. adk-python makes the same split: no wrapper
18
+ * class, and `LlmAgent._run_impl` delegating to `run_llm_agent_as_node` in
19
+ * `workflow/_llm_agent_wrapper.py`.
20
+ *
21
+ * Only `LlmAgent` needs this. Any other agent run as a node keeps
22
+ * `BaseAgent.runImpl`, which is plain delegation to `runAsync` — an agent whose
23
+ * input is its conversation has nothing to inject and no model text to promote.
24
+ *
25
+ * `single_turn` and `task` modes are ported; `chat` mode (task delegation via
26
+ * `FinishTaskTool`, isolation scopes) is not yet supported.
27
+ */
28
+ export declare function runLlmAgentAsNode(agent: LlmAgent, ctx: NodeContext, nodeInput: unknown): AsyncGenerator<Event, void, void>;
@@ -0,0 +1,72 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { BaseAgent } from '../agents/base_agent.js';
7
+ import { InvocationContext } from '../agents/invocation_context.js';
8
+ import { Event } from '../events/event.js';
9
+ import { BaseNode } from './base_node.js';
10
+ import type { RunnableNode } from './graph.js';
11
+ import { Workflow } from './workflow.js';
12
+ /**
13
+ * What can be run as the root of an invocation: an agent, or a `Workflow` the
14
+ * runner drives as a node. See {@link isRunnableRoot}.
15
+ */
16
+ export type RunnableRoot = BaseAgent | Workflow;
17
+ /** Options for {@link runNodeAsInvocation}. */
18
+ export interface RunNodeAsInvocationOptions {
19
+ /**
20
+ * Author for the event announcing the node's output, when one is needed.
21
+ * Defaults to the node's own name.
22
+ */
23
+ author?: string;
24
+ }
25
+ /**
26
+ * Runs a node as a whole invocation, turning it into a stream of events.
27
+ *
28
+ * This is the seam between the two execution shapes ADK has. A node is driven
29
+ * by pushing events into a channel while something else drains it; a caller of
30
+ * an invocation expects to pull events out of a generator. Bridging them means
31
+ * three things: give the node a root {@link NodeContext} to run in, derive its
32
+ * input from the user's message, and pump the channel.
33
+ *
34
+ * adk-python does the same work in `Runner._run_node_async`, over
35
+ * `ic._event_queue` rather than a local queue. It lives as a free function
36
+ * rather than a method because the runner is not its only caller: anything that
37
+ * has to run a node as a whole invocation goes through here.
38
+ */
39
+ export declare function runNodeAsInvocation(node: BaseNode, ic: InvocationContext, options?: RunNodeAsInvocationOptions): AsyncGenerator<Event, void, void>;
40
+ /**
41
+ * Whether a value is already a root, and so is worth handing to
42
+ * {@link asRunnableRoot}.
43
+ *
44
+ * An agent always is. A `Workflow` is because the runner drives it as a node
45
+ * rather than running it through `runAsync`.
46
+ *
47
+ * Used where a root is *discovered* rather than passed — the agent loader
48
+ * sifting a module's exports — so a workflow export is found the same way an
49
+ * agent export is.
50
+ *
51
+ * Deliberately narrower than what {@link asRunnableRoot} accepts: a passed root
52
+ * is a statement of intent, while a discovered one is a guess, and every module
53
+ * exports functions that are not meant to be the app.
54
+ */
55
+ export declare function isRunnableRoot(value: unknown): value is RunnableRoot;
56
+ /**
57
+ * Normalizes whatever was handed in as a root into a {@link RunnableRoot}.
58
+ *
59
+ * An agent and a workflow are both roots already and pass through as
60
+ * themselves. Anything else node-like — a tool, a plain function, an
61
+ * already-built node — becomes the single node of a one-node workflow, exactly
62
+ * what `edges: [['START', value]]` spells by hand, so `{agent: node}` and
63
+ * `{agent: new Workflow({edges: [['START', node]]})}` are the same request
64
+ * spelled two ways.
65
+ *
66
+ * The value is built before it reaches the graph parser, which would build it
67
+ * anyway, because the built node is what carries the name and description the
68
+ * wrapping workflow takes.
69
+ *
70
+ * @throws if `root` is not something an edge would accept.
71
+ */
72
+ export declare function asRunnableRoot(root: RunnableNode): RunnableRoot;