@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
@@ -11,6 +11,8 @@ import { Event } from '../events/event.js';
11
11
  import { LlmRequest } from '../models/llm_request.js';
12
12
  import { LlmResponse } from '../models/llm_response.js';
13
13
  import { BaseTool } from '../tools/base_tool.js';
14
+ import type { BaseNode } from '../workflow/base_node.js';
15
+ import type { NodeContext } from '../workflow/node_context.js';
14
16
  /**
15
17
  * Trigger for context compaction.
16
18
  */
@@ -204,6 +206,39 @@ export declare abstract class BasePlugin {
204
206
  agent: BaseAgent;
205
207
  callbackContext: Context;
206
208
  }): Promise<Content | undefined>;
209
+ /**
210
+ * Callback executed before a workflow node runs.
211
+ *
212
+ * @param params.node The node that is about to run.
213
+ * @param params.nodeContext The node's execution context.
214
+ * @param params.input The input the node is about to receive.
215
+ * @returns An optional value. If anything other than `undefined` is returned,
216
+ * the node's body is skipped and the returned value becomes its output,
217
+ * which is how a plugin implements a node-level cache or a stub.
218
+ * Returning `undefined` lets the node run normally.
219
+ */
220
+ beforeNodeCallback(params: {
221
+ node: BaseNode;
222
+ nodeContext: NodeContext;
223
+ input: unknown;
224
+ }): Promise<unknown>;
225
+ /**
226
+ * Callback executed after a workflow node has run.
227
+ *
228
+ * Not called for a node whose body was skipped by `beforeNodeCallback`, and
229
+ * not called when the node throws.
230
+ *
231
+ * @param params.node The node that has just run.
232
+ * @param params.nodeContext The node's execution context.
233
+ * @param params.output The output the node produced.
234
+ * @returns An optional value replacing the node's output. Returning
235
+ * `undefined` keeps the original.
236
+ */
237
+ afterNodeCallback(params: {
238
+ node: BaseNode;
239
+ nodeContext: NodeContext;
240
+ output: unknown;
241
+ }): Promise<unknown>;
207
242
  /**
208
243
  * Callback executed before a request is sent to the model.
209
244
  *
@@ -11,6 +11,8 @@ import { Event } from '../events/event.js';
11
11
  import { LlmRequest } from '../models/llm_request.js';
12
12
  import { LlmResponse } from '../models/llm_response.js';
13
13
  import { BaseTool } from '../tools/base_tool.js';
14
+ import type { BaseNode } from '../workflow/base_node.js';
15
+ import type { NodeContext } from '../workflow/node_context.js';
14
16
  import { BasePlugin, ContextCompactionTrigger } from './base_plugin.js';
15
17
  /**
16
18
  * Manages the registration and execution of plugins.
@@ -28,6 +30,8 @@ import { BasePlugin, ContextCompactionTrigger } from './base_plugin.js';
28
30
  */
29
31
  export declare class PluginManager {
30
32
  private readonly plugins;
33
+ /** Whether any plugin is registered. */
34
+ get hasPlugins(): boolean;
31
35
  /**
32
36
  * Initializes the plugin service.
33
37
  *
@@ -103,6 +107,22 @@ export declare class PluginManager {
103
107
  agent: BaseAgent;
104
108
  callbackContext: Context;
105
109
  }): Promise<Content | undefined>;
110
+ /**
111
+ * Runs the `beforeNodeCallback` for all plugins.
112
+ */
113
+ runBeforeNodeCallback({ node, nodeContext, input, }: {
114
+ node: BaseNode;
115
+ nodeContext: NodeContext;
116
+ input: unknown;
117
+ }): Promise<unknown>;
118
+ /**
119
+ * Runs the `afterNodeCallback` for all plugins.
120
+ */
121
+ runAfterNodeCallback({ node, nodeContext, output, }: {
122
+ node: BaseNode;
123
+ nodeContext: NodeContext;
124
+ output: unknown;
125
+ }): Promise<unknown>;
106
126
  /**
107
127
  * Runs the `beforeToolSelection` for all plugins.
108
128
  */
@@ -5,10 +5,11 @@
5
5
  */
6
6
  import { FunctionCall } from '@google/genai';
7
7
  import { Context } from '../agents/context.js';
8
+ import { REQUEST_CONFIRMATION_FUNCTION_CALL_NAME } from '../agents/functions.js';
8
9
  import { Event } from '../events/event.js';
9
10
  import { BasePlugin } from '../plugins/base_plugin.js';
10
11
  import { BaseTool } from '../tools/base_tool.js';
11
- export declare const REQUEST_CONFIRMATION_FUNCTION_CALL_NAME = "adk_request_confirmation";
12
+ export { REQUEST_CONFIRMATION_FUNCTION_CALL_NAME };
12
13
  /**
13
14
  * The outcome of a policy check.
14
15
  */
@@ -46,9 +47,10 @@ export declare class InMemoryPolicyEngine implements BasePolicyEngine {
46
47
  /**
47
48
  * Always returns {@link PolicyOutcome.ALLOW} for every tool call.
48
49
  *
50
+ * @param _context - The tool and its arguments; ignored.
49
51
  * @returns A promise resolving to an ALLOW result.
50
52
  */
51
- evaluate(): Promise<PolicyCheckResult>;
53
+ evaluate(_context: ToolCallPolicyContext): Promise<PolicyCheckResult>;
52
54
  }
53
55
  /**
54
56
  * Security Plugin for running Orcas agents.
@@ -3,10 +3,10 @@
3
3
  * Copyright 2025 Google LLC
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- import { BaseAgent } from '../agents/base_agent.js';
7
6
  import { App } from '../apps/app.js';
8
7
  import { ResumabilityConfig } from '../apps/resumability_config.js';
9
8
  import { BasePlugin } from '../plugins/base_plugin.js';
9
+ import { RunnableRoot } from '../workflow/run_node_as_invocation.js';
10
10
  import { Runner } from './runner.js';
11
11
  /**
12
12
  * A {@link Runner} pre-configured with in-memory services.
@@ -40,7 +40,7 @@ export declare class InMemoryRunner extends Runner {
40
40
  */
41
41
  constructor(params: {
42
42
  app?: App;
43
- agent?: BaseAgent;
43
+ agent?: RunnableRoot;
44
44
  appName?: string;
45
45
  plugins?: BasePlugin[];
46
46
  resumabilityConfig?: ResumabilityConfig;
@@ -5,6 +5,7 @@
5
5
  */
6
6
  import { Content } from '@google/genai';
7
7
  import { BaseAgent } from '../agents/base_agent.js';
8
+ import { LiveRequestQueue } from '../agents/live_request_queue.js';
8
9
  import { RunConfig } from '../agents/run_config.js';
9
10
  import { App } from '../apps/app.js';
10
11
  import { ResumabilityConfig } from '../apps/resumability_config.js';
@@ -16,6 +17,8 @@ import { BasePlugin } from '../plugins/base_plugin.js';
16
17
  import { PluginManager } from '../plugins/plugin_manager.js';
17
18
  import { BaseSessionService } from '../sessions/base_session_service.js';
18
19
  import { Session } from '../sessions/session.js';
20
+ import type { RunnableNode } from '../workflow/graph.js';
21
+ import { RunnableRoot } from '../workflow/run_node_as_invocation.js';
19
22
  /**
20
23
  * The configuration parameters for the Runner.
21
24
  */
@@ -29,9 +32,15 @@ export interface RunnerConfig {
29
32
  */
30
33
  appName?: string;
31
34
  /**
32
- * The agent to run. Required if `app` is not provided.
35
+ * The agent or workflow to run. Required if `app` is not provided.
36
+ *
37
+ * A bare node — a `Workflow`, most usefully — is accepted as the root and
38
+ * driven directly, so a graph does not have to be wrapped by hand to be run.
39
+ * The accepted set is the one an edge takes: any other node-like value
40
+ * becomes the single node of a one-node workflow. Mirrors adk-python, whose
41
+ * `Runner.agent` is typed `BaseNode`.
33
42
  */
34
- agent?: BaseAgent;
43
+ agent?: RunnableNode;
35
44
  /**
36
45
  * An optional list of plugins to apply globally across all agents.
37
46
  */
@@ -96,7 +105,11 @@ export declare function isRunner(obj: unknown): obj is Runner;
96
105
  export declare class Runner {
97
106
  readonly [RUNNER_SIGNATURE_SYMBOL] = true;
98
107
  readonly appName: string;
99
- readonly agent: BaseAgent;
108
+ /**
109
+ * The root being run: an agent, or a bare node (a `Workflow`) that the
110
+ * runner drives directly.
111
+ */
112
+ readonly agent: RunnableRoot;
100
113
  readonly pluginManager: PluginManager;
101
114
  readonly artifactService?: BaseArtifactService;
102
115
  readonly sessionService: BaseSessionService;
@@ -145,6 +158,19 @@ export declare class Runner {
145
158
  abortSignal?: AbortSignal;
146
159
  customMetadata?: Record<string, unknown>;
147
160
  }): AsyncGenerator<Event, void, undefined>;
161
+ /**
162
+ * Runs whatever this runner was given as its root.
163
+ *
164
+ * An agent is run through `runAsync`, as always. A bare node — a `Workflow`
165
+ * handed to the runner directly — is driven by {@link runNodeAsInvocation}.
166
+ *
167
+ * Only the execution differs. Everything around it (the run callbacks, event
168
+ * persistence, cancellation) is shared, so the node path cannot drift from
169
+ * the agent path on the things that are not about execution. adk-python has
170
+ * two separate loops here and a TODO noting its node one lacks tracing and
171
+ * plugins; there is nothing to lack if there is only one loop.
172
+ */
173
+ private runRoot;
148
174
  /**
149
175
  * Saves artifacts from the message parts and replaces the inline data with
150
176
  * a file name placeholder and optional file reference.
@@ -171,6 +197,36 @@ export declare class Runner {
171
197
  * @returns True if the agent can transfer, False otherwise.
172
198
  */
173
199
  private isRoutableLlmAgent;
200
+ /**
201
+ * Runs the agent in the live (bidirectional streaming) mode.
202
+ *
203
+ * Model media events that carry raw inline bytes (audio, video, or image)
204
+ * are yielded but not appended to the session to avoid persisting large
205
+ * blobs; events with `fileData` references and most other live events
206
+ * (transcriptions, tool calls, usage) are persisted as in `runAsync`.
207
+ *
208
+ * This feature is **experimental** and its API may change.
209
+ *
210
+ * @param params.userId The user ID of the session.
211
+ * @param params.sessionId The session ID of the session.
212
+ * @param params.liveRequestQueue The queue used to feed the live model.
213
+ * @param params.runConfig The run config for the agent.
214
+ * @param params.abortSignal Optional signal to abort the live run.
215
+ * @param params.liveSessionResumptionHandle Optional session resumption
216
+ * handle observed from a prior `runLive` cycle on the same conversation.
217
+ * When set, the agent's live flow opens the connection with
218
+ * `liveConnectConfig.sessionResumption.handle` so the server restores its
219
+ * state instead of relying on client-side history replay.
220
+ * @yields The events generated by the agent.
221
+ */
222
+ runLive(params: {
223
+ userId: string;
224
+ sessionId: string;
225
+ liveRequestQueue: LiveRequestQueue;
226
+ runConfig?: RunConfig;
227
+ abortSignal?: AbortSignal;
228
+ liveSessionResumptionHandle?: string;
229
+ }): AsyncGenerator<Event, void, undefined>;
174
230
  }
175
231
  /**
176
232
  * Determines the next agent to run to continue the session. This is primarily
@@ -40,8 +40,8 @@ export interface GetSessionRequest extends CompositeSessionKey {
40
40
  export interface ListSessionsRequest {
41
41
  /** The name of the application. */
42
42
  appName: string;
43
- /** The ID of the user. */
44
- userId: string;
43
+ /** The ID of the user. Sessions of every user are listed if omitted. */
44
+ userId?: string;
45
45
  /** Maximum number of sessions to return. */
46
46
  limit?: number;
47
47
  /** Zero-based index of the first session to return. Ignored if `page` is set. */
@@ -3,6 +3,13 @@
3
3
  * Copyright 2025 Google LLC
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
+ import { SchemaLike } from '../utils/schema.js';
7
+ /** Raised when a state mutation violates the declared state schema. */
8
+ export declare class StateSchemaError extends TypeError {
9
+ constructor(message: string);
10
+ }
11
+ /** Type guard for {@link StateSchemaError}. */
12
+ export declare function isStateSchemaError(e: unknown): e is StateSchemaError;
6
13
  /**
7
14
  * A state mapping that maintains the current value and the pending-commit
8
15
  * delta.
@@ -12,6 +19,11 @@ export declare class State {
12
19
  private value;
13
20
  /** The delta change to the current value that hasn't been committed. */
14
21
  private delta;
22
+ /**
23
+ * Declares the keys this state may hold and their types. When set, every
24
+ * mutation is checked against it; prefixed keys are exempt.
25
+ */
26
+ readonly schema?: SchemaLike | undefined;
15
27
  static readonly APP_PREFIX = "app:";
16
28
  static readonly USER_PREFIX = "user:";
17
29
  static readonly TEMP_PREFIX = "temp:";
@@ -19,7 +31,28 @@ export declare class State {
19
31
  /** The current value of the state. */
20
32
  value?: Record<string, unknown>,
21
33
  /** The delta change to the current value that hasn't been committed. */
22
- delta?: Record<string, unknown>);
34
+ delta?: Record<string, unknown>,
35
+ /**
36
+ * Declares the keys this state may hold and their types. When set, every
37
+ * mutation is checked against it; prefixed keys are exempt.
38
+ */
39
+ schema?: SchemaLike | undefined);
40
+ /**
41
+ * Checks a whole delta against {@link schema}, for writes that reach the
42
+ * session without passing through this object — a node emitting an event
43
+ * that carries its own `stateDelta`.
44
+ */
45
+ validateDelta(delta: Record<string, unknown>): void;
46
+ /**
47
+ * Checks one key/value pair against {@link schema}, throwing
48
+ * {@link StateSchemaError} when the key is undeclared or its value does not
49
+ * match the declared type.
50
+ *
51
+ * Prefixed keys (`app:`, `user:`, `temp:`, or any other namespace) belong to
52
+ * a scope wider than this state and are never validated — the same carve-out
53
+ * adk-python makes.
54
+ */
55
+ private validate;
23
56
  /**
24
57
  * Returns the value of the state dict for the given key.
25
58
  *
@@ -0,0 +1,39 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ /**
7
+ * Records a direct write of `key` into `state`, and — when the same write is
8
+ * being recorded in `delta` for later commit — stamps it there too, so the
9
+ * commit can tell whether it has since been superseded.
10
+ */
11
+ export declare function recordStateWrite(state: object, delta: object | undefined, key: string): void;
12
+ /**
13
+ * Copies the stamp `delta` holds for `key` onto `state`, for a writer that
14
+ * mirrors one logical write into more than one state object (a workflow node
15
+ * writes through to `session.state` as well as to its own view). Both objects
16
+ * then carry the same stamp, so neither can roll the other back.
17
+ */
18
+ export declare function adoptDeltaStamp(state: object, delta: object, key: string): void;
19
+ /**
20
+ * Whether committing `key` from `delta` into `state` should go ahead, recording
21
+ * the write when it should.
22
+ *
23
+ * Returns false only when the delta entry is stamped and a newer write to that
24
+ * key has already landed — the rollback this module exists to prevent.
25
+ */
26
+ export declare function shouldApplyDeltaWrite(state: object, delta: object, key: string): boolean;
27
+ /**
28
+ * Carries the stamp for one key from one delta object to another.
29
+ *
30
+ * A delta is copied several times between the write and the commit — a node
31
+ * drains its pending entries into a fresh map, `createEventActions` copies that
32
+ * into the event, `trimTempDeltaState` rebuilds it again — and each copy is a
33
+ * new object, so the stamps have to be carried with it. An entry that arrives
34
+ * at the commit unstamped is applied unconditionally, which is the old
35
+ * behaviour, so a missed hop degrades rather than breaks.
36
+ */
37
+ export declare function carryDeltaStamp(from: object, to: object, key: string): void;
38
+ /** {@link carryDeltaStamp} for every key `from` carries a stamp for. */
39
+ export declare function carryDeltaStamps(from: object, to: object): void;
@@ -44,6 +44,21 @@ export interface TraceAgentInvocationParams {
44
44
  * `server.*` attributes are not set pending confirmation from aabmass.
45
45
  */
46
46
  export declare function traceAgentInvocation({ agent, invocationContext, }: TraceAgentInvocationParams): void;
47
+ export interface TraceWorkflowInvocationParams {
48
+ workflowName: string;
49
+ nodePath: string;
50
+ sessionId: string;
51
+ }
52
+ export declare function traceWorkflowInvocation({ workflowName, nodePath, sessionId, }: TraceWorkflowInvocationParams): void;
53
+ export type NodeExecutionStatus = 'completed' | 'waiting' | 'failed';
54
+ export interface TraceNodeExecutionParams {
55
+ nodePath: string;
56
+ runId: string;
57
+ attempt: number;
58
+ status: NodeExecutionStatus;
59
+ interruptCount: number;
60
+ }
61
+ export declare function traceNodeExecution({ nodePath, runId, attempt, status, interruptCount, }: TraceNodeExecutionParams): void;
47
62
  export interface TraceToolCallParams {
48
63
  tool: BaseTool;
49
64
  args: Record<string, unknown>;
@@ -80,6 +80,21 @@ export declare abstract class BaseTool {
80
80
  * @return A promise that resolves to the tool response.
81
81
  */
82
82
  abstract runAsync(request: RunAsyncToolRequest): Promise<unknown>;
83
+ /**
84
+ * Whether this tool needs a human to approve `args` before it runs.
85
+ *
86
+ * The gate itself lives in the tool that owns it (see `FunctionTool`), but
87
+ * the resume path has to ask the same question a turn later, to check that an
88
+ * approval it is about to honour belongs to a tool that gates at all. A tool
89
+ * that never gates returns false here, which is the safe default: an approval
90
+ * naming it is meaningless and gets rejected rather than executed. Mirrors
91
+ * Python's `BaseTool.check_require_confirmation`.
92
+ *
93
+ * @param _args The arguments the tool would run with.
94
+ * @param _toolContext The context of the call, when there is one.
95
+ * @return Whether the call requires confirmation.
96
+ */
97
+ checkRequireConfirmation(_args: Record<string, unknown>, _toolContext?: Context): Promise<boolean>;
83
98
  /**
84
99
  * Processes the outgoing LLM request for this tool.
85
100
  *
@@ -0,0 +1,47 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { FunctionDeclaration, Schema } from '@google/genai';
7
+ import { BaseTool, RunAsyncToolRequest, ToolProcessLlmRequest } from './base_tool.js';
8
+ /** The name of the finish_task tool. */
9
+ export declare const FINISH_TASK_TOOL_NAME = "finish_task";
10
+ /**
11
+ * The result returned by {@link FinishTaskTool.runAsync} when validation passes.
12
+ * The task-mode wrapper uses this to distinguish a successful completion from a
13
+ * validation-error retry signal.
14
+ */
15
+ export declare const FINISH_TASK_SUCCESS_RESULT = "Task completed.";
16
+ /**
17
+ * Tool for signaling that a task-mode {@link LlmAgent} has completed its task.
18
+ *
19
+ * The tool's parameters mirror the agent's `outputSchema` (or a default single
20
+ * `result` string). The task-mode wrapper sniffs the `finish_task` function call
21
+ * and, on a successful function response, promotes the call's arguments to the
22
+ * node's output.
23
+ *
24
+ * Ported from `google/adk-python`
25
+ * `agents/llm/task/_finish_task_tool.py::FinishTaskTool`.
26
+ */
27
+ export declare class FinishTaskTool extends BaseTool {
28
+ /** The schema describing the expected task output. */
29
+ private readonly outputSchema;
30
+ /**
31
+ * When the output schema is a non-object (primitive/array), the value is
32
+ * wrapped under this key (the GenAI API requires object-typed parameters).
33
+ * `undefined` for object schemas (the value lives at the top level of args).
34
+ */
35
+ readonly wrapperKey?: string;
36
+ constructor(outputSchema?: Schema);
37
+ _getDeclaration(): FunctionDeclaration;
38
+ processLlmRequest(request: ToolProcessLlmRequest): Promise<void>;
39
+ /**
40
+ * Extracts the task output from a `finish_task` call's arguments, applying the
41
+ * wrapper-key unwrapping when the schema is a non-object.
42
+ */
43
+ extractOutput(args: Record<string, unknown>): unknown;
44
+ runAsync({ args }: RunAsyncToolRequest): Promise<unknown>;
45
+ /** Returns any `required` keys the schema declares that are absent. */
46
+ private missingRequiredKeys;
47
+ }
@@ -20,7 +20,13 @@ export type ToolExecuteArgument<TParameters extends ToolInputParameters> = TPara
20
20
  /**
21
21
  * The signature of the user-provided function executed by a {@link FunctionTool}.
22
22
  */
23
- export type ToolExecuteFunction<TParameters extends ToolInputParameters> = (input: ToolExecuteArgument<TParameters>, tool_context?: Context) => Promise<unknown> | unknown;
23
+ export type ToolExecuteFunction<TParameters extends ToolInputParameters> = (input: ToolExecuteArgument<TParameters>, toolContext?: Context) => Promise<unknown> | unknown;
24
+ /**
25
+ * Whether a {@link FunctionTool} requires user confirmation before it runs: a
26
+ * boolean, or a predicate over the (validated) call arguments and tool context.
27
+ * See {@link ToolOptions.requireConfirmation}.
28
+ */
29
+ export type RequireConfirmation<TParameters extends ToolInputParameters> = boolean | ((input: ToolExecuteArgument<TParameters>, toolContext?: Context) => boolean | Promise<boolean>);
24
30
  /**
25
31
  * The configuration options for creating a function-based tool.
26
32
  * The `name`, `description` and `parameters` fields are used to generate the
@@ -35,6 +41,24 @@ export type ToolOptions<TParameters extends ToolInputParameters> = {
35
41
  parameters?: TParameters;
36
42
  execute: ToolExecuteFunction<TParameters>;
37
43
  isLongRunning?: boolean;
44
+ /**
45
+ * Whether this tool requires user confirmation before it runs. A boolean, or
46
+ * a predicate over the (validated) call arguments and tool context returning
47
+ * a boolean.
48
+ *
49
+ * The HITL gate is enforced when the tool is invoked through an `LlmAgent`
50
+ * turn: `agents/functions.ts` surfaces an `adk_request_confirmation`
51
+ * interrupt from the tool's `requestedToolConfirmations`, and the tool only
52
+ * executes once the user approves (via the
53
+ * `RequestConfirmationLlmRequestProcessor`).
54
+ *
55
+ * NOTE: a workflow `ToolNode` does not yet route through that path, so a
56
+ * `requireConfirmation` tool used directly as a node does not pause — it
57
+ * returns the "requires confirmation" error as its node output. Approval for
58
+ * workflow nodes is not wired up. Mirrors Python's
59
+ * `FunctionTool(require_confirmation=...)`.
60
+ */
61
+ requireConfirmation?: RequireConfirmation<TParameters>;
38
62
  };
39
63
  /**
40
64
  * A unique symbol to identify ADK agent classes.
@@ -60,6 +84,7 @@ export declare class FunctionTool<TParameters extends ToolInputParameters = unde
60
84
  readonly [FUNCTION_TOOL_SIGNATURE_SYMBOL] = true;
61
85
  private readonly execute;
62
86
  private readonly parameters?;
87
+ private readonly requireConfirmation;
63
88
  /**
64
89
  * The constructor acts as the user-friendly factory.
65
90
  * @param options The configuration for the tool.
@@ -78,5 +103,25 @@ export declare class FunctionTool<TParameters extends ToolInputParameters = unde
78
103
  * @returns A promise resolving to the function's return value.
79
104
  */
80
105
  runAsync(req: RunAsyncToolRequest): Promise<unknown>;
106
+ /**
107
+ * Whether this call is gated on human approval — the static flag, or the
108
+ * predicate evaluated against the validated arguments.
109
+ *
110
+ * @param args The arguments the tool would run with.
111
+ * @param toolContext The context of the call, when there is one.
112
+ * @return Whether the call requires confirmation.
113
+ */
114
+ checkRequireConfirmation(args: Record<string, unknown>, toolContext?: Context): Promise<boolean>;
115
+ /** Parses `args` against the parameter schema, when one is declared. */
116
+ private validateArgs;
117
+ /** Resolves `requireConfirmation`, which may be a flag or a predicate. */
118
+ private evaluateRequireConfirmation;
119
+ /**
120
+ * Evaluates the confirmation gate. Returns `undefined` if the tool may
121
+ * proceed; otherwise returns the function response payload to surface instead
122
+ * of running (a request-for-confirmation on the first pass, or a rejection
123
+ * once the user declined).
124
+ */
125
+ private checkConfirmation;
81
126
  }
82
127
  export {};
@@ -0,0 +1,13 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ /**
7
+ * `@google/adk/tools/mcp` subpath: the MCP tools only, without the full ADK
8
+ * barrel. Also re-exported from `@google/adk`.
9
+ */
10
+ export * from './load_mcp_resource_tool.js';
11
+ export * from './mcp_session_manager.js';
12
+ export * from './mcp_tool.js';
13
+ export * from './mcp_toolset.js';
@@ -3,9 +3,9 @@
3
3
  * Copyright 2025 Google LLC
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- import { Client } from '@modelcontextprotocol/sdk/client/index.js';
7
- import { StdioServerParameters } from '@modelcontextprotocol/sdk/client/stdio.js';
8
- import { StreamableHTTPClientTransportOptions } from '@modelcontextprotocol/sdk/client/streamableHttp.js';
6
+ import type { Client } from '@modelcontextprotocol/sdk/client/index.js';
7
+ import type { StdioServerParameters } from '@modelcontextprotocol/sdk/client/stdio.js';
8
+ import type { StreamableHTTPClientTransportOptions } from '@modelcontextprotocol/sdk/client/streamableHttp.js';
9
9
  /**
10
10
  * Defines the parameters for establishing a connection to an MCP server using
11
11
  * standard input/output (stdio). This is typically used for running MCP servers
@@ -4,7 +4,7 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
  import { FunctionDeclaration } from '@google/genai';
7
- import { Tool } from '@modelcontextprotocol/sdk/types.js';
7
+ import type { Tool } from '@modelcontextprotocol/sdk/types.js';
8
8
  import { BaseTool, RunAsyncToolRequest } from '../base_tool.js';
9
9
  import { MCPSessionManager } from './mcp_session_manager.js';
10
10
  /**
@@ -3,7 +3,7 @@
3
3
  * Copyright 2025 Google LLC
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- import { BlobResourceContents, Resource, TextResourceContents } from '@modelcontextprotocol/sdk/types.js';
6
+ import type { BlobResourceContents, Resource, TextResourceContents } from '@modelcontextprotocol/sdk/types.js';
7
7
  import { ReadonlyContext } from '../../agents/readonly_context.js';
8
8
  import { BaseTool } from '../base_tool.js';
9
9
  import { BaseToolset, ToolPredicate } from '../base_toolset.js';
@@ -8,8 +8,13 @@ import { LongRunningFunctionTool } from './long_running_tool.js';
8
8
  /**
9
9
  * A long-running tool that presents a custom message to the user and awaits
10
10
  * unstructured or structured input.
11
+ *
12
+ * `response_schema` is spelled the way a workflow's `RequestInput` spells it on
13
+ * the wire (`RESPONSE_SCHEMA_ARG` in `workflow/utils/hitl_utils`), so a client
14
+ * reads one key whichever way the pause was raised — the dev UI builds its
15
+ * reply form from it either way.
11
16
  */
12
17
  export declare const requestInputTool: LongRunningFunctionTool<z.ZodObject<{
13
18
  message: z.ZodString;
14
- responseSchema: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
19
+ response_schema: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
15
20
  }, z.core.$strip>>;
@@ -17,8 +17,10 @@ export declare class SkillToolset extends BaseToolset {
17
17
  additionalTools: Array<BaseTool | BaseToolset>;
18
18
  codeExecutor?: BaseCodeExecutor;
19
19
  registry?: SkillRegistry;
20
+ private readonly scriptOutputDir?;
20
21
  private toolCache;
21
22
  private fetchedSkillCache;
23
+ private tempOutputDir?;
22
24
  constructor(skills: Record<string, Skill> | Skill[], options?: {
23
25
  codeExecutor?: BaseCodeExecutor;
24
26
  additionalTools?: Array<BaseTool | BaseToolset>;
@@ -32,10 +34,34 @@ export declare class SkillToolset extends BaseToolset {
32
34
  * confirmation.
33
35
  */
34
36
  allowInlineScripts?: boolean;
37
+ /**
38
+ * Directory that files produced by `run_skill_script` /
39
+ * `run_skill_inline_script` are written into. Output file names come from
40
+ * the executed script, so this must be a directory dedicated to
41
+ * throwaway script output — never the application's working directory or
42
+ * a source tree.
43
+ *
44
+ * Defaults to a private, randomly named directory created under the OS
45
+ * temp dir on first use. Nothing removes that directory: `close()` runs
46
+ * once per invocation on a toolset instance that concurrent invocations
47
+ * share (see `Runner`), so it cannot tell whose output is still in use.
48
+ * Set this to own the location and the lifetime of the output.
49
+ */
50
+ scriptOutputDir?: string;
35
51
  });
36
52
  getTools(context?: ReadonlyContext): Promise<BaseTool[]>;
37
53
  close(): Promise<void>;
38
54
  getSkill(name: string): Skill | undefined;
55
+ /**
56
+ * Resolves the directory that script output files are materialized into.
57
+ *
58
+ * Script output file names are attacker-influenced (a prompt-injected skill
59
+ * controls what its script writes), so they must never be resolved against
60
+ * the host application's working directory. When no `scriptOutputDir` was
61
+ * configured this hands back a private temp directory instead, created once
62
+ * and reused for the lifetime of the toolset.
63
+ */
64
+ getScriptOutputDir(): Promise<string>;
39
65
  getOrFetchSkill(name: string, invocationId?: string): Promise<Skill | undefined>;
40
66
  processLlmRequest(toolContext: Context, llmRequest: LlmRequest): Promise<void>;
41
67
  private resolveAdditionalTools;