@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.
- package/dist/cjs/a2a/a2a_event.js +18 -0
- package/dist/cjs/a2a/a2a_remote_agent.js +5 -2
- package/dist/cjs/a2a/a2a_remote_agent_run_processor.js +7 -3
- package/dist/cjs/a2a/a2a_remote_agent_utils.js +9 -2
- package/dist/cjs/a2a/agent_card.js +33 -3
- package/dist/cjs/a2a/agent_executor.js +25 -16
- package/dist/cjs/a2a/agent_to_a2a.js +22 -10
- package/dist/cjs/a2a/auth.js +3 -0
- package/dist/cjs/a2a/event_converter_utils.js +10 -0
- package/dist/cjs/a2a/event_processor_utils.js +71 -35
- package/dist/cjs/a2a/executor_context.js +2 -0
- package/dist/cjs/a2a/index.js +53 -0
- package/dist/cjs/a2a/metadata_converter_utils.js +5 -0
- package/dist/cjs/a2a/part_converter_utils.js +12 -0
- package/dist/cjs/agents/active_streaming_tool.js +5 -2
- package/dist/cjs/agents/base_agent.js +46 -9
- package/dist/cjs/agents/context.js +5 -2
- package/dist/cjs/agents/framework_function_calls.js +64 -0
- package/dist/cjs/agents/functions.js +38 -16
- package/dist/cjs/agents/instructions.js +51 -12
- package/dist/cjs/agents/invocation_context.js +42 -8
- package/dist/cjs/agents/live_request_queue.js +29 -5
- package/dist/cjs/agents/llm_agent.js +535 -45
- package/dist/cjs/agents/loop_agent.js +19 -2
- package/dist/cjs/agents/parallel_agent.js +21 -2
- package/dist/cjs/agents/processors/agent_transfer_llm_request_processor.js +7 -4
- package/dist/cjs/agents/processors/base_llm_processor.js +9 -4
- package/dist/cjs/agents/processors/basic_llm_request_processor.js +6 -3
- package/dist/cjs/agents/processors/code_execution_request_processor.js +18 -5
- package/dist/cjs/agents/processors/content_processor_utils.js +85 -15
- package/dist/cjs/agents/processors/content_request_processor.js +9 -4
- package/dist/cjs/agents/processors/context_compactor_request_processor.js +5 -2
- package/dist/cjs/agents/processors/identity_llm_request_processor.js +12 -4
- package/dist/cjs/agents/processors/instructions_llm_request_processor.js +5 -2
- package/dist/cjs/agents/processors/interactions_request_processor.js +5 -2
- package/dist/cjs/agents/processors/request_confirmation_llm_request_processor.js +313 -92
- package/dist/cjs/agents/processors/request_input_llm_request_processor.js +218 -0
- package/dist/cjs/agents/processors/tool_filter_request_processor.js +5 -2
- package/dist/cjs/agents/readonly_context.js +7 -3
- package/dist/cjs/agents/routed_agent.js +6 -13
- package/dist/cjs/agents/run_config.js +12 -0
- package/dist/cjs/agents/sequential_agent.js +20 -3
- package/dist/cjs/agents/user_input_request.js +145 -0
- package/dist/cjs/apps/app.js +11 -11
- package/dist/cjs/apps/resumability_config.js +2 -0
- package/dist/cjs/artifacts/file_artifact_service.js +21 -2
- package/dist/cjs/artifacts/gcs_artifact_service.js +46 -11
- package/dist/cjs/artifacts/in_memory_artifact_service.js +9 -2
- package/dist/cjs/artifacts/registry.js +6 -1
- package/dist/cjs/artifacts/scoped_artifact_service.js +5 -2
- package/dist/cjs/auth/auth_handler.js +5 -2
- package/dist/cjs/auth/auth_preprocessor.js +48 -40
- package/dist/cjs/auth/auth_provider_registry.js +5 -2
- package/dist/cjs/auth/auth_schemes.js +2 -0
- package/dist/cjs/auth/credential_response_binding.js +101 -0
- package/dist/cjs/auth/credential_service/in_memory_credential_service.js +5 -2
- package/dist/cjs/auth/credential_service/session_state_credential_service.js +5 -2
- package/dist/cjs/auth/exchanger/base_credential_exchanger.js +5 -2
- package/dist/cjs/auth/exchanger/credential_exchanger_registry.js +5 -2
- package/dist/cjs/auth/oauth2/oauth2_credential_exchanger.js +8 -2
- package/dist/cjs/auth/oauth2/oauth2_credential_refresher.js +5 -2
- package/dist/cjs/auth/oauth2/oauth2_discovery.js +7 -2
- package/dist/cjs/auth/oauth2/oauth2_utils.js +6 -0
- package/dist/cjs/auth/refresher/base_credential_refresher.js +5 -2
- package/dist/cjs/auth/refresher/credential_refresher_registry.js +5 -2
- package/dist/cjs/code_executors/agent_engine_sandbox_code_executor.js +3 -0
- package/dist/cjs/code_executors/base_code_executor.js +6 -2
- package/dist/cjs/code_executors/built_in_code_executor.js +6 -2
- package/dist/cjs/code_executors/code_execution_utils.js +6 -0
- package/dist/cjs/code_executors/code_executor_context.js +5 -2
- package/dist/cjs/code_executors/unsafe_local_code_executor.js +8 -2
- package/dist/cjs/common.js +106 -1
- package/dist/cjs/context/agent_controlled_context_compactor.js +5 -2
- package/dist/cjs/context/anchored_context_compactor.js +5 -2
- package/dist/cjs/context/compaction_utils.js +3 -0
- package/dist/cjs/context/summarizers/llm_summarizer.js +5 -2
- package/dist/cjs/context/token_based_context_compactor.js +9 -3
- package/dist/cjs/context/trajectory_thought_pruning_compactor.js +5 -2
- package/dist/cjs/context/truncating_context_compactor.js +5 -2
- package/dist/cjs/environment/base_environment.js +97 -0
- package/dist/cjs/environment/local_environment.js +186 -0
- package/dist/cjs/events/compacted_event.js +4 -0
- package/dist/cjs/events/event.js +38 -3
- package/dist/cjs/events/event_actions.js +5 -0
- package/dist/cjs/events/structured_events.js +2 -0
- package/dist/cjs/examples/base_example_provider.js +6 -2
- package/dist/cjs/examples/example_util.js +3 -0
- package/dist/cjs/features/feature_registry.js +7 -0
- package/dist/cjs/index.js +7 -25
- package/dist/cjs/integrations/agent_registry/agent_registry.js +7 -4
- package/dist/cjs/integrations/agent_registry/agent_registry_mcp_toolset.js +7 -4
- package/dist/cjs/integrations/agent_registry/helpers.js +3 -0
- package/dist/cjs/memory/in_memory_memory_service.js +8 -2
- package/dist/cjs/memory/vertex_ai_memory_bank_service.js +17 -2
- package/dist/cjs/models/apigee_llm.js +9 -3
- package/dist/cjs/models/base_llm.js +7 -3
- package/dist/cjs/models/gemini_llm_connection.js +5 -2
- package/dist/cjs/models/google_llm.js +24 -12
- package/dist/cjs/models/interactions_utils.js +16 -0
- package/dist/cjs/models/llm_request.js +4 -0
- package/dist/cjs/models/llm_response.js +2 -0
- package/dist/cjs/models/registry.js +6 -2
- package/dist/cjs/models/routed_llm.js +4 -13
- package/dist/cjs/plugins/base_plugin.js +39 -5
- package/dist/cjs/plugins/global_instruction_plugin.js +5 -2
- package/dist/cjs/plugins/logging_plugin.js +13 -8
- package/dist/cjs/plugins/plugin_manager.js +37 -2
- package/dist/cjs/plugins/security_plugin.js +15 -8
- package/dist/cjs/runner/in_memory_runner.js +5 -2
- package/dist/cjs/runner/runner.js +208 -18
- package/dist/cjs/sessions/base_session_service.js +13 -2
- package/dist/cjs/sessions/database_session_service.js +6 -2
- package/dist/cjs/sessions/db/operations.js +34 -6
- package/dist/cjs/sessions/db/schema.js +16 -8
- package/dist/cjs/sessions/in_memory_session_service.js +22 -14
- package/dist/cjs/sessions/registry.js +4 -1
- package/dist/cjs/sessions/session.js +2 -0
- package/dist/cjs/sessions/state.js +80 -8
- package/dist/cjs/sessions/state_write_order.js +105 -0
- package/dist/cjs/sessions/vertex_ai_session_service.js +110 -15
- package/dist/cjs/skills/gcp_skill_registry.js +2 -0
- package/dist/cjs/skills/loader.js +22 -10
- package/dist/cjs/skills/prompt.js +3 -0
- package/dist/cjs/telemetry/google_cloud.js +42 -9
- package/dist/cjs/telemetry/setup.js +5 -0
- package/dist/cjs/telemetry/tracing.js +60 -4
- package/dist/cjs/tools/agent_tool.js +6 -2
- package/dist/cjs/tools/base_tool.js +24 -2
- package/dist/cjs/tools/base_toolset.js +6 -2
- package/dist/cjs/tools/consolidate_context_tool.js +5 -2
- package/dist/cjs/tools/enterprise_web_search_tool.js +6 -2
- package/dist/cjs/tools/example_tool.js +5 -2
- package/dist/cjs/tools/exit_loop_tool.js +5 -2
- package/dist/cjs/tools/finish_task_tool.js +119 -0
- package/dist/cjs/tools/forwarding_artifact_service.js +5 -2
- package/dist/cjs/tools/function_tool.js +73 -8
- package/dist/cjs/tools/get_user_choice_tool.js +3 -2
- package/dist/cjs/tools/google_maps_grounding_tool.js +6 -2
- package/dist/cjs/tools/google_search_tool.js +5 -2
- package/dist/cjs/tools/load_artifacts_tool.js +8 -2
- package/dist/cjs/tools/load_memory_tool.js +5 -2
- package/dist/cjs/tools/load_web_page.js +21 -1
- package/dist/cjs/tools/long_running_tool.js +5 -2
- package/dist/cjs/tools/mcp/index.js +39 -0
- package/dist/cjs/tools/mcp/load_mcp_resource_tool.js +5 -2
- package/dist/cjs/tools/mcp/mcp_session_manager.js +36 -8
- package/dist/cjs/tools/mcp/mcp_tool.js +5 -2
- package/dist/cjs/tools/mcp/mcp_toolset.js +5 -2
- package/dist/cjs/tools/openapi_tool/auth/auth_helpers.js +4 -0
- package/dist/cjs/tools/openapi_tool/auth/credential_exchangers/auto_auth_credential_exchanger.js +2 -0
- package/dist/cjs/tools/openapi_tool/auth/credential_exchangers/service_account_exchanger.js +2 -0
- package/dist/cjs/tools/openapi_tool/openapi_spec_parser/openapi_spec_parser.js +30 -9
- package/dist/cjs/tools/openapi_tool/openapi_spec_parser/operation_parser.js +2 -0
- package/dist/cjs/tools/openapi_tool/openapi_spec_parser/tool_auth_handler.js +6 -2
- package/dist/cjs/tools/openapi_tool/openapi_toolset.js +2 -0
- package/dist/cjs/tools/openapi_tool/rest_api_tool.js +23 -5
- package/dist/cjs/tools/preload_memory_tool.js +5 -2
- package/dist/cjs/tools/request_input_tool.js +6 -4
- package/dist/cjs/tools/skill/list_skills_tool.js +2 -0
- package/dist/cjs/tools/skill/load_skill_resource_tool.js +2 -0
- package/dist/cjs/tools/skill/load_skill_tool.js +4 -1
- package/dist/cjs/tools/skill/run_skill_inline_script_tool.js +8 -2
- package/dist/cjs/tools/skill/run_skill_script_tool.js +10 -2
- package/dist/cjs/tools/skill/search_skills_tool.js +2 -0
- package/dist/cjs/tools/skill/skill_toolset.js +35 -0
- package/dist/cjs/tools/tool_confirmation.js +26 -3
- package/dist/cjs/tools/url_context_tool.js +5 -2
- package/dist/cjs/tools/vertex_ai_search_tool.js +5 -2
- package/dist/cjs/tools/vertex_rag_retrieval_tool.js +5 -2
- package/dist/cjs/utils/async_hooks_shim.js +5 -2
- package/dist/cjs/utils/async_queue.js +45 -18
- package/dist/cjs/utils/branch_trie.js +2 -0
- package/dist/cjs/utils/case_utils.js +2 -0
- package/dist/cjs/utils/client_labels.js +5 -0
- package/dist/cjs/utils/crypto_shim.js +2 -0
- package/dist/cjs/utils/deprecated.js +68 -0
- package/dist/cjs/utils/env_aware_utils.js +41 -0
- package/dist/cjs/utils/error_utils.js +8 -0
- package/dist/cjs/utils/experimental.js +9 -2
- package/dist/cjs/utils/failover_utils.js +3 -0
- package/dist/cjs/utils/file_extension_utils.js +3 -0
- package/dist/cjs/utils/file_utils.js +7 -2
- package/dist/cjs/utils/gemini_schema_util.js +6 -2
- package/dist/cjs/utils/genai_schema_to_json.js +107 -0
- package/dist/cjs/utils/live_connection_utils.js +5 -2
- package/dist/cjs/utils/logger.js +13 -4
- package/dist/cjs/utils/model_name.js +8 -0
- package/dist/cjs/utils/object_notation_utils.js +7 -3
- package/dist/cjs/utils/optional_peer.js +68 -0
- package/dist/cjs/utils/output_schema_utils.js +2 -0
- package/dist/cjs/utils/partial_copy.js +2 -0
- package/dist/cjs/utils/redact_uri.js +66 -0
- package/dist/cjs/utils/schema.js +178 -0
- package/dist/cjs/utils/simple_zod_to_json.js +17 -4
- package/dist/cjs/utils/streaming_utils.js +14 -6
- package/dist/cjs/utils/task.js +7 -4
- package/dist/cjs/utils/variant_utils.js +3 -1
- package/dist/cjs/utils/vertex_ai_utils.js +3 -1
- package/dist/cjs/version.js +1 -1
- package/dist/cjs/workflow/base_node.js +211 -0
- package/dist/cjs/workflow/branch_path.js +108 -0
- package/dist/cjs/workflow/dynamic_node_scheduler.js +220 -0
- package/dist/cjs/workflow/errors.js +178 -0
- package/dist/cjs/workflow/graph.js +158 -0
- package/dist/cjs/workflow/index.js +131 -0
- package/dist/cjs/workflow/node.js +65 -0
- package/dist/cjs/workflow/node_builders.js +68 -0
- package/dist/cjs/workflow/node_context.js +246 -0
- package/dist/cjs/workflow/node_error_event.js +86 -0
- package/dist/cjs/workflow/node_runner.js +459 -0
- package/dist/cjs/workflow/node_state.js +57 -0
- package/dist/cjs/workflow/node_status.js +48 -0
- package/dist/cjs/workflow/nodes/function_node.js +195 -0
- package/dist/cjs/workflow/nodes/join_node.js +56 -0
- package/dist/cjs/workflow/nodes/node_tool.js +156 -0
- package/dist/cjs/workflow/nodes/parallel_worker.js +129 -0
- package/dist/cjs/workflow/nodes/tool_node.js +117 -0
- package/dist/cjs/workflow/request_input.js +64 -0
- package/dist/cjs/workflow/retry_config.js +71 -0
- package/dist/cjs/workflow/run_llm_agent_as_node.js +192 -0
- package/dist/cjs/workflow/run_node_as_invocation.js +165 -0
- package/dist/cjs/workflow/schedule_dynamic_node.js +53 -0
- package/dist/cjs/workflow/trigger.js +27 -0
- package/dist/cjs/workflow/utils/graph_parser.js +212 -0
- package/dist/cjs/workflow/utils/graph_validation.js +216 -0
- package/dist/cjs/workflow/utils/hitl_utils.js +252 -0
- package/dist/cjs/workflow/utils/rehydration_utils.js +373 -0
- package/dist/cjs/workflow/utils/retry_utils.js +112 -0
- package/dist/cjs/workflow/utils/workflow_graph_utils.js +144 -0
- package/dist/cjs/workflow/workflow.js +509 -0
- package/dist/esm/a2a/a2a_event.js +19 -0
- package/dist/esm/a2a/a2a_remote_agent.js +6 -2
- package/dist/esm/a2a/a2a_remote_agent_run_processor.js +8 -3
- package/dist/esm/a2a/a2a_remote_agent_utils.js +10 -2
- package/dist/esm/a2a/agent_card.js +34 -3
- package/dist/esm/a2a/agent_executor.js +27 -17
- package/dist/esm/a2a/agent_to_a2a.js +44 -15
- package/dist/esm/a2a/auth.js +4 -0
- package/dist/esm/a2a/event_converter_utils.js +11 -0
- package/dist/esm/a2a/event_processor_utils.js +74 -34
- package/dist/esm/a2a/executor_context.js +3 -0
- package/dist/esm/a2a/index.js +20 -0
- package/dist/esm/a2a/metadata_converter_utils.js +6 -0
- package/dist/esm/a2a/part_converter_utils.js +13 -0
- package/dist/esm/agents/active_streaming_tool.js +6 -2
- package/dist/esm/agents/base_agent.js +47 -9
- package/dist/esm/agents/context.js +6 -2
- package/dist/esm/agents/framework_function_calls.js +34 -0
- package/dist/esm/agents/functions.js +42 -13
- package/dist/esm/agents/instructions.js +52 -12
- package/dist/esm/agents/invocation_context.js +41 -7
- package/dist/esm/agents/live_request_queue.js +30 -5
- package/dist/esm/agents/llm_agent.js +536 -45
- package/dist/esm/agents/loop_agent.js +21 -2
- package/dist/esm/agents/parallel_agent.js +23 -2
- package/dist/esm/agents/processors/agent_transfer_llm_request_processor.js +8 -4
- package/dist/esm/agents/processors/base_llm_processor.js +10 -4
- package/dist/esm/agents/processors/basic_llm_request_processor.js +7 -3
- package/dist/esm/agents/processors/code_execution_request_processor.js +19 -5
- package/dist/esm/agents/processors/content_processor_utils.js +88 -16
- package/dist/esm/agents/processors/content_request_processor.js +10 -4
- package/dist/esm/agents/processors/context_compactor_request_processor.js +6 -2
- package/dist/esm/agents/processors/identity_llm_request_processor.js +13 -4
- package/dist/esm/agents/processors/instructions_llm_request_processor.js +6 -2
- package/dist/esm/agents/processors/interactions_request_processor.js +6 -2
- package/dist/esm/agents/processors/request_confirmation_llm_request_processor.js +318 -93
- package/dist/esm/agents/processors/request_input_llm_request_processor.js +197 -0
- package/dist/esm/agents/processors/tool_filter_request_processor.js +6 -2
- package/dist/esm/agents/readonly_context.js +8 -3
- package/dist/esm/agents/routed_agent.js +6 -14
- package/dist/esm/agents/run_config.js +13 -0
- package/dist/esm/agents/sequential_agent.js +22 -3
- package/dist/esm/agents/user_input_request.js +120 -0
- package/dist/esm/apps/app.js +14 -11
- package/dist/esm/apps/resumability_config.js +3 -0
- package/dist/esm/artifacts/file_artifact_service.js +22 -2
- package/dist/esm/artifacts/gcs_artifact_service.js +58 -11
- package/dist/esm/artifacts/in_memory_artifact_service.js +10 -2
- package/dist/esm/artifacts/registry.js +7 -1
- package/dist/esm/artifacts/scoped_artifact_service.js +6 -2
- package/dist/esm/auth/auth_handler.js +6 -2
- package/dist/esm/auth/auth_preprocessor.js +50 -41
- package/dist/esm/auth/auth_provider_registry.js +6 -2
- package/dist/esm/auth/auth_schemes.js +3 -0
- package/dist/esm/auth/credential_response_binding.js +74 -0
- package/dist/esm/auth/credential_service/in_memory_credential_service.js +6 -2
- package/dist/esm/auth/credential_service/session_state_credential_service.js +6 -2
- package/dist/esm/auth/exchanger/base_credential_exchanger.js +6 -2
- package/dist/esm/auth/exchanger/credential_exchanger_registry.js +6 -2
- package/dist/esm/auth/oauth2/oauth2_credential_exchanger.js +9 -2
- package/dist/esm/auth/oauth2/oauth2_credential_refresher.js +6 -2
- package/dist/esm/auth/oauth2/oauth2_discovery.js +8 -2
- package/dist/esm/auth/oauth2/oauth2_utils.js +7 -0
- package/dist/esm/auth/refresher/base_credential_refresher.js +6 -2
- package/dist/esm/auth/refresher/credential_refresher_registry.js +6 -2
- package/dist/esm/code_executors/agent_engine_sandbox_code_executor.js +3 -0
- package/dist/esm/code_executors/base_code_executor.js +7 -2
- package/dist/esm/code_executors/built_in_code_executor.js +7 -2
- package/dist/esm/code_executors/code_execution_utils.js +7 -0
- package/dist/esm/code_executors/code_executor_context.js +6 -2
- package/dist/esm/code_executors/unsafe_local_code_executor.js +9 -2
- package/dist/esm/common.js +109 -4
- package/dist/esm/context/agent_controlled_context_compactor.js +6 -2
- package/dist/esm/context/anchored_context_compactor.js +6 -2
- package/dist/esm/context/compaction_utils.js +4 -0
- package/dist/esm/context/summarizers/llm_summarizer.js +6 -2
- package/dist/esm/context/token_based_context_compactor.js +10 -3
- package/dist/esm/context/trajectory_thought_pruning_compactor.js +6 -2
- package/dist/esm/context/truncating_context_compactor.js +6 -2
- package/dist/esm/environment/base_environment.js +71 -0
- package/dist/esm/environment/local_environment.js +150 -0
- package/dist/esm/events/compacted_event.js +5 -0
- package/dist/esm/events/event.js +38 -3
- package/dist/esm/events/event_actions.js +6 -0
- package/dist/esm/events/structured_events.js +3 -0
- package/dist/esm/examples/base_example_provider.js +7 -2
- package/dist/esm/examples/example_util.js +4 -0
- package/dist/esm/features/feature_registry.js +8 -0
- package/dist/esm/index.js +4 -15
- package/dist/esm/integrations/agent_registry/agent_registry.js +8 -4
- package/dist/esm/integrations/agent_registry/agent_registry_mcp_toolset.js +6 -2
- package/dist/esm/integrations/agent_registry/helpers.js +4 -0
- package/dist/esm/memory/in_memory_memory_service.js +9 -2
- package/dist/esm/memory/vertex_ai_memory_bank_service.js +18 -2
- package/dist/esm/models/apigee_llm.js +10 -3
- package/dist/esm/models/base_llm.js +8 -3
- package/dist/esm/models/gemini_llm_connection.js +6 -2
- package/dist/esm/models/google_llm.js +26 -13
- package/dist/esm/models/interactions_utils.js +17 -0
- package/dist/esm/models/llm_request.js +5 -0
- package/dist/esm/models/llm_response.js +3 -0
- package/dist/esm/models/registry.js +7 -2
- package/dist/esm/models/routed_llm.js +4 -14
- package/dist/esm/plugins/base_plugin.js +39 -5
- package/dist/esm/plugins/global_instruction_plugin.js +6 -2
- package/dist/esm/plugins/logging_plugin.js +14 -8
- package/dist/esm/plugins/plugin_manager.js +38 -2
- package/dist/esm/plugins/security_plugin.js +14 -6
- package/dist/esm/runner/in_memory_runner.js +6 -2
- package/dist/esm/runner/runner.js +215 -20
- package/dist/esm/sessions/base_session_service.js +14 -2
- package/dist/esm/sessions/database_session_service.js +7 -2
- package/dist/esm/sessions/db/operations.js +34 -6
- package/dist/esm/sessions/db/schema.js +16 -8
- package/dist/esm/sessions/in_memory_session_service.js +23 -14
- package/dist/esm/sessions/registry.js +5 -1
- package/dist/esm/sessions/session.js +3 -0
- package/dist/esm/sessions/state.js +78 -7
- package/dist/esm/sessions/state_write_order.js +74 -0
- package/dist/esm/sessions/vertex_ai_session_service.js +110 -15
- package/dist/esm/skills/gcp_skill_registry.js +2 -0
- package/dist/esm/skills/loader.js +23 -10
- package/dist/esm/skills/prompt.js +4 -0
- package/dist/esm/telemetry/google_cloud.js +54 -9
- package/dist/esm/telemetry/setup.js +6 -0
- package/dist/esm/telemetry/tracing.js +59 -4
- package/dist/esm/tools/agent_tool.js +7 -2
- package/dist/esm/tools/base_tool.js +25 -2
- package/dist/esm/tools/base_toolset.js +7 -2
- package/dist/esm/tools/consolidate_context_tool.js +6 -2
- package/dist/esm/tools/enterprise_web_search_tool.js +7 -2
- package/dist/esm/tools/example_tool.js +6 -2
- package/dist/esm/tools/exit_loop_tool.js +6 -2
- package/dist/esm/tools/finish_task_tool.js +92 -0
- package/dist/esm/tools/forwarding_artifact_service.js +6 -2
- package/dist/esm/tools/function_tool.js +74 -8
- package/dist/esm/tools/get_user_choice_tool.js +4 -2
- package/dist/esm/tools/google_maps_grounding_tool.js +7 -2
- package/dist/esm/tools/google_search_tool.js +6 -2
- package/dist/esm/tools/load_artifacts_tool.js +9 -2
- package/dist/esm/tools/load_memory_tool.js +6 -2
- package/dist/esm/tools/load_web_page.js +22 -1
- package/dist/esm/tools/long_running_tool.js +6 -2
- package/dist/esm/tools/mcp/index.js +11 -0
- package/dist/esm/tools/mcp/load_mcp_resource_tool.js +6 -2
- package/dist/esm/tools/mcp/mcp_session_manager.js +45 -9
- package/dist/esm/tools/mcp/mcp_tool.js +6 -2
- package/dist/esm/tools/mcp/mcp_toolset.js +6 -2
- package/dist/esm/tools/openapi_tool/auth/auth_helpers.js +5 -0
- package/dist/esm/tools/openapi_tool/auth/credential_exchangers/auto_auth_credential_exchanger.js +2 -0
- package/dist/esm/tools/openapi_tool/auth/credential_exchangers/service_account_exchanger.js +2 -0
- package/dist/esm/tools/openapi_tool/openapi_spec_parser/openapi_spec_parser.js +30 -9
- package/dist/esm/tools/openapi_tool/openapi_spec_parser/operation_parser.js +2 -0
- package/dist/esm/tools/openapi_tool/openapi_spec_parser/tool_auth_handler.js +6 -2
- package/dist/esm/tools/openapi_tool/openapi_toolset.js +2 -0
- package/dist/esm/tools/openapi_tool/rest_api_tool.js +23 -5
- package/dist/esm/tools/preload_memory_tool.js +6 -2
- package/dist/esm/tools/request_input_tool.js +7 -4
- package/dist/esm/tools/skill/list_skills_tool.js +2 -0
- package/dist/esm/tools/skill/load_skill_resource_tool.js +2 -0
- package/dist/esm/tools/skill/load_skill_tool.js +4 -1
- package/dist/esm/tools/skill/run_skill_inline_script_tool.js +8 -2
- package/dist/esm/tools/skill/run_skill_script_tool.js +10 -2
- package/dist/esm/tools/skill/search_skills_tool.js +2 -0
- package/dist/esm/tools/skill/skill_toolset.js +25 -0
- package/dist/esm/tools/tool_confirmation.js +24 -2
- package/dist/esm/tools/url_context_tool.js +6 -2
- package/dist/esm/tools/vertex_ai_search_tool.js +6 -2
- package/dist/esm/tools/vertex_rag_retrieval_tool.js +6 -2
- package/dist/esm/utils/async_hooks_shim.js +6 -2
- package/dist/esm/utils/async_queue.js +46 -18
- package/dist/esm/utils/branch_trie.js +3 -0
- package/dist/esm/utils/case_utils.js +3 -0
- package/dist/esm/utils/client_labels.js +6 -0
- package/dist/esm/utils/crypto_shim.js +3 -0
- package/dist/esm/utils/deprecated.js +40 -0
- package/dist/esm/utils/env_aware_utils.js +41 -0
- package/dist/esm/utils/error_utils.js +9 -0
- package/dist/esm/utils/experimental.js +10 -2
- package/dist/esm/utils/failover_utils.js +4 -0
- package/dist/esm/utils/file_extension_utils.js +4 -0
- package/dist/esm/utils/file_utils.js +8 -2
- package/dist/esm/utils/gemini_schema_util.js +7 -2
- package/dist/esm/utils/genai_schema_to_json.js +80 -0
- package/dist/esm/utils/live_connection_utils.js +6 -2
- package/dist/esm/utils/logger.js +14 -4
- package/dist/esm/utils/model_name.js +9 -0
- package/dist/esm/utils/object_notation_utils.js +8 -3
- package/dist/esm/utils/optional_peer.js +41 -0
- package/dist/esm/utils/output_schema_utils.js +3 -0
- package/dist/esm/utils/partial_copy.js +3 -0
- package/dist/esm/utils/redact_uri.js +39 -0
- package/dist/esm/utils/schema.js +152 -0
- package/dist/esm/utils/simple_zod_to_json.js +15 -4
- package/dist/esm/utils/streaming_utils.js +15 -6
- package/dist/esm/utils/task.js +8 -4
- package/dist/esm/utils/variant_utils.js +5 -2
- package/dist/esm/utils/vertex_ai_utils.js +5 -2
- package/dist/esm/version.js +1 -1
- package/dist/esm/workflow/base_node.js +182 -0
- package/dist/esm/workflow/branch_path.js +77 -0
- package/dist/esm/workflow/dynamic_node_scheduler.js +202 -0
- package/dist/esm/workflow/errors.js +140 -0
- package/dist/esm/workflow/graph.js +127 -0
- package/dist/esm/workflow/index.js +80 -0
- package/dist/esm/workflow/node.js +38 -0
- package/dist/esm/workflow/node_builders.js +40 -0
- package/dist/esm/workflow/node_context.js +219 -0
- package/dist/esm/workflow/node_error_event.js +57 -0
- package/dist/esm/workflow/node_runner.js +439 -0
- package/dist/esm/workflow/node_state.js +29 -0
- package/dist/esm/workflow/node_status.js +20 -0
- package/dist/esm/workflow/nodes/function_node.js +172 -0
- package/dist/esm/workflow/nodes/join_node.js +29 -0
- package/dist/esm/workflow/nodes/node_tool.js +131 -0
- package/dist/esm/workflow/nodes/parallel_worker.js +102 -0
- package/dist/esm/workflow/nodes/tool_node.js +90 -0
- package/dist/esm/workflow/request_input.js +36 -0
- package/dist/esm/workflow/retry_config.js +43 -0
- package/dist/esm/workflow/run_llm_agent_as_node.js +172 -0
- package/dist/esm/workflow/run_node_as_invocation.js +139 -0
- package/dist/esm/workflow/schedule_dynamic_node.js +26 -0
- package/dist/esm/workflow/trigger.js +7 -0
- package/dist/esm/workflow/utils/graph_parser.js +188 -0
- package/dist/esm/workflow/utils/graph_validation.js +189 -0
- package/dist/esm/workflow/utils/hitl_utils.js +222 -0
- package/dist/esm/workflow/utils/rehydration_utils.js +342 -0
- package/dist/esm/workflow/utils/retry_utils.js +82 -0
- package/dist/esm/workflow/utils/workflow_graph_utils.js +115 -0
- package/dist/esm/workflow/workflow.js +493 -0
- package/dist/types/a2a/agent_card.d.ts +3 -3
- package/dist/types/a2a/agent_to_a2a.d.ts +4 -4
- package/dist/types/a2a/event_processor_utils.d.ts +17 -2
- package/dist/types/a2a/index.d.ts +18 -0
- package/dist/types/agents/base_agent.d.ts +37 -9
- package/dist/types/agents/framework_function_calls.d.ts +26 -0
- package/dist/types/agents/functions.d.ts +1 -2
- package/dist/types/agents/invocation_context.d.ts +95 -3
- package/dist/types/agents/live_request_queue.d.ts +7 -1
- package/dist/types/agents/llm_agent.d.ts +77 -1
- package/dist/types/agents/loop_agent.d.ts +5 -0
- package/dist/types/agents/parallel_agent.d.ts +5 -0
- package/dist/types/agents/processors/content_processor_utils.d.ts +3 -2
- package/dist/types/agents/processors/identity_llm_request_processor.d.ts +4 -1
- package/dist/types/agents/processors/request_input_llm_request_processor.d.ts +21 -0
- package/dist/types/agents/run_config.d.ts +57 -2
- package/dist/types/agents/sequential_agent.d.ts +5 -0
- package/dist/types/agents/user_input_request.d.ts +71 -0
- package/dist/types/apps/app.d.ts +8 -3
- package/dist/types/artifacts/gcs_artifact_service.d.ts +9 -2
- package/dist/types/auth/credential_response_binding.d.ts +24 -0
- package/dist/types/common.d.ts +18 -8
- package/dist/types/environment/base_environment.d.ts +101 -0
- package/dist/types/environment/local_environment.d.ts +72 -0
- package/dist/types/events/event.d.ts +94 -1
- package/dist/types/events/event_actions.d.ts +10 -0
- package/dist/types/index.d.ts +5 -13
- package/dist/types/models/apigee_llm.d.ts +4 -4
- package/dist/types/models/google_llm.d.ts +2 -1
- package/dist/types/plugins/base_plugin.d.ts +35 -0
- package/dist/types/plugins/plugin_manager.d.ts +20 -0
- package/dist/types/plugins/security_plugin.d.ts +4 -2
- package/dist/types/runner/in_memory_runner.d.ts +2 -2
- package/dist/types/runner/runner.d.ts +59 -3
- package/dist/types/sessions/base_session_service.d.ts +2 -2
- package/dist/types/sessions/state.d.ts +34 -1
- package/dist/types/sessions/state_write_order.d.ts +39 -0
- package/dist/types/telemetry/tracing.d.ts +15 -0
- package/dist/types/tools/base_tool.d.ts +15 -0
- package/dist/types/tools/finish_task_tool.d.ts +47 -0
- package/dist/types/tools/function_tool.d.ts +46 -1
- package/dist/types/tools/mcp/index.d.ts +13 -0
- package/dist/types/tools/mcp/mcp_session_manager.d.ts +3 -3
- package/dist/types/tools/mcp/mcp_tool.d.ts +1 -1
- package/dist/types/tools/mcp/mcp_toolset.d.ts +1 -1
- package/dist/types/tools/request_input_tool.d.ts +6 -1
- package/dist/types/tools/skill/skill_toolset.d.ts +26 -0
- package/dist/types/tools/tool_confirmation.d.ts +47 -0
- package/dist/types/utils/async_queue.d.ts +34 -2
- package/dist/types/utils/deprecated.d.ts +21 -0
- package/dist/types/utils/env_aware_utils.d.ts +16 -0
- package/dist/types/utils/file_utils.d.ts +10 -2
- package/dist/types/utils/genai_schema_to_json.d.ts +25 -0
- package/dist/types/utils/optional_peer.d.ts +36 -0
- package/dist/types/utils/redact_uri.d.ts +28 -0
- package/dist/types/utils/schema.d.ts +73 -0
- package/dist/types/utils/simple_zod_to_json.d.ts +8 -0
- package/dist/types/utils/vertex_ai_utils.d.ts +4 -0
- package/dist/types/version.d.ts +1 -1
- package/dist/types/workflow/base_node.d.ts +142 -0
- package/dist/types/workflow/branch_path.d.ts +40 -0
- package/dist/types/workflow/dynamic_node_scheduler.d.ts +64 -0
- package/dist/types/workflow/errors.d.ts +132 -0
- package/dist/types/workflow/graph.d.ts +127 -0
- package/dist/types/workflow/index.d.ts +46 -0
- package/dist/types/workflow/node.d.ts +48 -0
- package/dist/types/workflow/node_builders.d.ts +25 -0
- package/dist/types/workflow/node_context.d.ts +208 -0
- package/dist/types/workflow/node_error_event.d.ts +18 -0
- package/dist/types/workflow/node_runner.d.ts +82 -0
- package/dist/types/workflow/node_state.d.ts +47 -0
- package/dist/types/workflow/node_status.d.ts +28 -0
- package/dist/types/workflow/nodes/function_node.d.ts +78 -0
- package/dist/types/workflow/nodes/join_node.d.ts +24 -0
- package/dist/types/workflow/nodes/node_tool.d.ts +53 -0
- package/dist/types/workflow/nodes/parallel_worker.d.ts +55 -0
- package/dist/types/workflow/nodes/tool_node.d.ts +34 -0
- package/dist/types/workflow/request_input.d.ts +73 -0
- package/dist/types/workflow/retry_config.d.ts +84 -0
- package/dist/types/workflow/run_llm_agent_as_node.d.ts +28 -0
- package/dist/types/workflow/run_node_as_invocation.d.ts +72 -0
- package/dist/types/workflow/schedule_dynamic_node.d.ts +66 -0
- package/dist/types/workflow/trigger.d.ts +22 -0
- package/dist/types/workflow/utils/graph_parser.d.ts +8 -0
- package/dist/types/workflow/utils/graph_validation.d.ts +18 -0
- package/dist/types/workflow/utils/hitl_utils.d.ts +92 -0
- package/dist/types/workflow/utils/rehydration_utils.d.ts +132 -0
- package/dist/types/workflow/utils/retry_utils.d.ts +54 -0
- package/dist/types/workflow/utils/workflow_graph_utils.d.ts +76 -0
- package/dist/types/workflow/workflow.d.ts +115 -0
- package/dist/web/a2a/a2a_event.js +19 -0
- package/dist/web/a2a/a2a_remote_agent.js +6 -2
- package/dist/web/a2a/a2a_remote_agent_run_processor.js +8 -3
- package/dist/web/a2a/a2a_remote_agent_utils.js +10 -2
- package/dist/web/a2a/agent_card.js +34 -3
- package/dist/web/a2a/agent_executor.js +45 -17
- package/dist/web/a2a/agent_to_a2a.js +44 -15
- package/dist/web/a2a/auth.js +4 -0
- package/dist/web/a2a/event_converter_utils.js +10 -0
- package/dist/web/a2a/event_processor_utils.js +73 -34
- package/dist/web/a2a/executor_context.js +3 -0
- package/dist/web/a2a/index.js +20 -0
- package/dist/web/a2a/metadata_converter_utils.js +5 -0
- package/dist/web/a2a/part_converter_utils.js +13 -0
- package/dist/web/agents/active_streaming_tool.js +6 -2
- package/dist/web/agents/base_agent.js +48 -9
- package/dist/web/agents/context.js +6 -2
- package/dist/web/agents/framework_function_calls.js +34 -0
- package/dist/web/agents/functions.js +42 -13
- package/dist/web/agents/instructions.js +52 -12
- package/dist/web/agents/invocation_context.js +56 -7
- package/dist/web/agents/live_request_queue.js +30 -5
- package/dist/web/agents/llm_agent.js +630 -52
- package/dist/web/agents/loop_agent.js +21 -2
- package/dist/web/agents/parallel_agent.js +23 -2
- package/dist/web/agents/processors/agent_transfer_llm_request_processor.js +8 -4
- package/dist/web/agents/processors/base_llm_processor.js +10 -4
- package/dist/web/agents/processors/basic_llm_request_processor.js +6 -3
- package/dist/web/agents/processors/code_execution_request_processor.js +19 -5
- package/dist/web/agents/processors/content_processor_utils.js +87 -16
- package/dist/web/agents/processors/content_request_processor.js +10 -4
- package/dist/web/agents/processors/context_compactor_request_processor.js +6 -2
- package/dist/web/agents/processors/identity_llm_request_processor.js +13 -4
- package/dist/web/agents/processors/instructions_llm_request_processor.js +6 -2
- package/dist/web/agents/processors/interactions_request_processor.js +6 -2
- package/dist/web/agents/processors/request_confirmation_llm_request_processor.js +329 -104
- package/dist/web/agents/processors/request_input_llm_request_processor.js +228 -0
- package/dist/web/agents/processors/tool_filter_request_processor.js +6 -2
- package/dist/web/agents/readonly_context.js +8 -3
- package/dist/web/agents/routed_agent.js +6 -14
- package/dist/web/agents/run_config.js +12 -0
- package/dist/web/agents/sequential_agent.js +22 -3
- package/dist/web/agents/user_input_request.js +135 -0
- package/dist/web/apps/app.js +14 -11
- package/dist/web/apps/resumability_config.js +2 -0
- package/dist/web/artifacts/file_artifact_service.js +22 -2
- package/dist/web/artifacts/gcs_artifact_service.js +56 -11
- package/dist/web/artifacts/in_memory_artifact_service.js +10 -2
- package/dist/web/artifacts/registry.js +7 -1
- package/dist/web/artifacts/scoped_artifact_service.js +5 -2
- package/dist/web/auth/auth_handler.js +5 -2
- package/dist/web/auth/auth_preprocessor.js +50 -41
- package/dist/web/auth/auth_provider_registry.js +6 -2
- package/dist/web/auth/auth_schemes.js +3 -0
- package/dist/web/auth/credential_response_binding.js +91 -0
- package/dist/web/auth/credential_service/in_memory_credential_service.js +6 -2
- package/dist/web/auth/credential_service/session_state_credential_service.js +6 -2
- package/dist/web/auth/exchanger/base_credential_exchanger.js +6 -2
- package/dist/web/auth/exchanger/credential_exchanger_registry.js +6 -2
- package/dist/web/auth/oauth2/oauth2_credential_exchanger.js +8 -2
- package/dist/web/auth/oauth2/oauth2_credential_refresher.js +5 -2
- package/dist/web/auth/oauth2/oauth2_discovery.js +8 -2
- package/dist/web/auth/oauth2/oauth2_utils.js +7 -0
- package/dist/web/auth/refresher/base_credential_refresher.js +6 -2
- package/dist/web/auth/refresher/credential_refresher_registry.js +6 -2
- package/dist/web/code_executors/agent_engine_sandbox_code_executor.js +3 -0
- package/dist/web/code_executors/base_code_executor.js +7 -2
- package/dist/web/code_executors/built_in_code_executor.js +7 -2
- package/dist/web/code_executors/code_execution_utils.js +7 -0
- package/dist/web/code_executors/code_executor_context.js +6 -2
- package/dist/web/code_executors/unsafe_local_code_executor.js +9 -2
- package/dist/web/common.js +109 -4
- package/dist/web/context/agent_controlled_context_compactor.js +6 -2
- package/dist/web/context/anchored_context_compactor.js +5 -2
- package/dist/web/context/compaction_utils.js +4 -0
- package/dist/web/context/summarizers/llm_summarizer.js +6 -2
- package/dist/web/context/token_based_context_compactor.js +10 -3
- package/dist/web/context/trajectory_thought_pruning_compactor.js +6 -2
- package/dist/web/context/truncating_context_compactor.js +6 -2
- package/dist/web/environment/base_environment.js +71 -0
- package/dist/web/environment/local_environment.js +165 -0
- package/dist/web/events/compacted_event.js +4 -0
- package/dist/web/events/event.js +37 -3
- package/dist/web/events/event_actions.js +5 -0
- package/dist/web/events/structured_events.js +3 -0
- package/dist/web/examples/base_example_provider.js +7 -2
- package/dist/web/examples/example_util.js +4 -0
- package/dist/web/features/feature_registry.js +8 -0
- package/dist/web/index.js +4 -15
- package/dist/web/integrations/agent_registry/agent_registry.js +8 -4
- package/dist/web/integrations/agent_registry/agent_registry_mcp_toolset.js +5 -2
- package/dist/web/integrations/agent_registry/helpers.js +4 -0
- package/dist/web/memory/in_memory_memory_service.js +9 -2
- package/dist/web/memory/vertex_ai_memory_bank_service.js +17 -2
- package/dist/web/models/apigee_llm.js +9 -3
- package/dist/web/models/base_llm.js +8 -3
- package/dist/web/models/gemini_llm_connection.js +6 -2
- package/dist/web/models/google_llm.js +25 -13
- package/dist/web/models/interactions_utils.js +17 -0
- package/dist/web/models/llm_request.js +5 -0
- package/dist/web/models/llm_response.js +3 -0
- package/dist/web/models/registry.js +7 -2
- package/dist/web/models/routed_llm.js +4 -14
- package/dist/web/plugins/base_plugin.js +39 -5
- package/dist/web/plugins/global_instruction_plugin.js +6 -2
- package/dist/web/plugins/logging_plugin.js +14 -8
- package/dist/web/plugins/plugin_manager.js +38 -2
- package/dist/web/plugins/security_plugin.js +14 -6
- package/dist/web/runner/in_memory_runner.js +6 -2
- package/dist/web/runner/runner.js +232 -20
- package/dist/web/sessions/base_session_service.js +14 -2
- package/dist/web/sessions/database_session_service.js +6 -2
- package/dist/web/sessions/db/operations.js +34 -6
- package/dist/web/sessions/db/schema.js +16 -8
- package/dist/web/sessions/in_memory_session_service.js +23 -14
- package/dist/web/sessions/registry.js +5 -1
- package/dist/web/sessions/session.js +3 -0
- package/dist/web/sessions/state.js +77 -7
- package/dist/web/sessions/state_write_order.js +74 -0
- package/dist/web/sessions/vertex_ai_session_service.js +118 -15
- package/dist/web/skills/gcp_skill_registry.js +2 -0
- package/dist/web/skills/loader.js +22 -10
- package/dist/web/skills/prompt.js +4 -0
- package/dist/web/telemetry/google_cloud.js +54 -9
- package/dist/web/telemetry/setup.js +6 -0
- package/dist/web/telemetry/tracing.js +77 -7
- package/dist/web/tools/agent_tool.js +7 -2
- package/dist/web/tools/base_tool.js +25 -2
- package/dist/web/tools/base_toolset.js +7 -2
- package/dist/web/tools/consolidate_context_tool.js +6 -2
- package/dist/web/tools/enterprise_web_search_tool.js +7 -2
- package/dist/web/tools/example_tool.js +6 -2
- package/dist/web/tools/exit_loop_tool.js +6 -2
- package/dist/web/tools/finish_task_tool.js +92 -0
- package/dist/web/tools/forwarding_artifact_service.js +6 -2
- package/dist/web/tools/function_tool.js +74 -8
- package/dist/web/tools/get_user_choice_tool.js +4 -2
- package/dist/web/tools/google_maps_grounding_tool.js +7 -2
- package/dist/web/tools/google_search_tool.js +6 -2
- package/dist/web/tools/load_artifacts_tool.js +9 -2
- package/dist/web/tools/load_memory_tool.js +6 -2
- package/dist/web/tools/load_web_page.js +22 -1
- package/dist/web/tools/long_running_tool.js +5 -2
- package/dist/web/tools/mcp/index.js +11 -0
- package/dist/web/tools/mcp/load_mcp_resource_tool.js +6 -2
- package/dist/web/tools/mcp/mcp_session_manager.js +45 -9
- package/dist/web/tools/mcp/mcp_tool.js +6 -2
- package/dist/web/tools/mcp/mcp_toolset.js +5 -2
- package/dist/web/tools/openapi_tool/auth/auth_helpers.js +5 -0
- package/dist/web/tools/openapi_tool/auth/credential_exchangers/auto_auth_credential_exchanger.js +2 -0
- package/dist/web/tools/openapi_tool/auth/credential_exchangers/service_account_exchanger.js +2 -0
- package/dist/web/tools/openapi_tool/openapi_spec_parser/openapi_spec_parser.js +30 -9
- package/dist/web/tools/openapi_tool/openapi_spec_parser/operation_parser.js +2 -0
- package/dist/web/tools/openapi_tool/openapi_spec_parser/tool_auth_handler.js +6 -2
- package/dist/web/tools/openapi_tool/openapi_toolset.js +2 -0
- package/dist/web/tools/openapi_tool/rest_api_tool.js +23 -5
- package/dist/web/tools/preload_memory_tool.js +6 -2
- package/dist/web/tools/request_input_tool.js +7 -4
- package/dist/web/tools/skill/list_skills_tool.js +2 -0
- package/dist/web/tools/skill/load_skill_resource_tool.js +2 -0
- package/dist/web/tools/skill/load_skill_tool.js +4 -1
- package/dist/web/tools/skill/run_skill_inline_script_tool.js +26 -2
- package/dist/web/tools/skill/run_skill_script_tool.js +28 -2
- package/dist/web/tools/skill/search_skills_tool.js +2 -0
- package/dist/web/tools/skill/skill_toolset.js +25 -0
- package/dist/web/tools/tool_confirmation.js +24 -2
- package/dist/web/tools/url_context_tool.js +6 -2
- package/dist/web/tools/vertex_ai_search_tool.js +6 -2
- package/dist/web/tools/vertex_rag_retrieval_tool.js +6 -2
- package/dist/web/utils/async_hooks_shim.js +6 -2
- package/dist/web/utils/async_queue.js +46 -18
- package/dist/web/utils/branch_trie.js +3 -0
- package/dist/web/utils/case_utils.js +3 -0
- package/dist/web/utils/client_labels.js +6 -0
- package/dist/web/utils/crypto_shim.js +3 -0
- package/dist/web/utils/deprecated.js +40 -0
- package/dist/web/utils/env_aware_utils.js +41 -0
- package/dist/web/utils/error_utils.js +9 -0
- package/dist/web/utils/experimental.js +10 -2
- package/dist/web/utils/failover_utils.js +4 -0
- package/dist/web/utils/file_extension_utils.js +4 -0
- package/dist/web/utils/file_utils.js +7 -2
- package/dist/web/utils/gemini_schema_util.js +6 -2
- package/dist/web/utils/genai_schema_to_json.js +80 -0
- package/dist/web/utils/live_connection_utils.js +5 -2
- package/dist/web/utils/logger.js +14 -4
- package/dist/web/utils/model_name.js +9 -0
- package/dist/web/utils/object_notation_utils.js +8 -3
- package/dist/web/utils/optional_peer.js +38 -0
- package/dist/web/utils/output_schema_utils.js +3 -0
- package/dist/web/utils/partial_copy.js +3 -0
- package/dist/web/utils/redact_uri.js +39 -0
- package/dist/web/utils/schema.js +167 -0
- package/dist/web/utils/simple_zod_to_json.js +15 -4
- package/dist/web/utils/streaming_utils.js +14 -6
- package/dist/web/utils/task.js +8 -4
- package/dist/web/utils/variant_utils.js +5 -2
- package/dist/web/utils/vertex_ai_utils.js +5 -2
- package/dist/web/version.js +1 -1
- package/dist/web/workflow/base_node.js +215 -0
- package/dist/web/workflow/branch_path.js +77 -0
- package/dist/web/workflow/dynamic_node_scheduler.js +202 -0
- package/dist/web/workflow/errors.js +140 -0
- package/dist/web/workflow/graph.js +127 -0
- package/dist/web/workflow/index.js +80 -0
- package/dist/web/workflow/node.js +87 -0
- package/dist/web/workflow/node_builders.js +40 -0
- package/dist/web/workflow/node_context.js +236 -0
- package/dist/web/workflow/node_error_event.js +86 -0
- package/dist/web/workflow/node_runner.js +481 -0
- package/dist/web/workflow/node_state.js +43 -0
- package/dist/web/workflow/node_status.js +20 -0
- package/dist/web/workflow/nodes/function_node.js +221 -0
- package/dist/web/workflow/nodes/join_node.js +47 -0
- package/dist/web/workflow/nodes/node_tool.js +131 -0
- package/dist/web/workflow/nodes/parallel_worker.js +120 -0
- package/dist/web/workflow/nodes/tool_node.js +126 -0
- package/dist/web/workflow/request_input.js +36 -0
- package/dist/web/workflow/retry_config.js +43 -0
- package/dist/web/workflow/run_llm_agent_as_node.js +266 -0
- package/dist/web/workflow/run_node_as_invocation.js +170 -0
- package/dist/web/workflow/schedule_dynamic_node.js +26 -0
- package/dist/web/workflow/trigger.js +7 -0
- package/dist/web/workflow/utils/graph_parser.js +188 -0
- package/dist/web/workflow/utils/graph_validation.js +189 -0
- package/dist/web/workflow/utils/hitl_utils.js +239 -0
- package/dist/web/workflow/utils/rehydration_utils.js +342 -0
- package/dist/web/workflow/utils/retry_utils.js +82 -0
- package/dist/web/workflow/utils/workflow_graph_utils.js +115 -0
- package/dist/web/workflow/workflow.js +529 -0
- 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;
|