@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,132 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2026 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Errors raised by the workflow framework.
|
|
8
|
+
*
|
|
9
|
+
* Ported from `google/adk-python` `workflow/_errors.py`.
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* Internal: raised when a dynamic node interrupts (HITL).
|
|
13
|
+
*
|
|
14
|
+
* Used exclusively by `ctx.runNode()` to signal that the dynamic child has
|
|
15
|
+
* unresolved interrupt IDs. The parent's NodeRunner catches this and reads the
|
|
16
|
+
* interrupt IDs from the parent's ctx (set by `ctx.runNode()` before throwing).
|
|
17
|
+
*
|
|
18
|
+
* Internal to the framework — not part of the public API.
|
|
19
|
+
*/
|
|
20
|
+
export declare class NodeInterruptedError extends Error {
|
|
21
|
+
constructor(message?: string);
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Type guard for {@link NodeInterruptedError}.
|
|
25
|
+
*
|
|
26
|
+
* Matches on `name` rather than `instanceof <subclass>` so it stays correct when
|
|
27
|
+
* errors cross a package boundary (two copies of adk-js in one runtime would
|
|
28
|
+
* fail an `instanceof` check between them).
|
|
29
|
+
*/
|
|
30
|
+
export declare function isNodeInterruptedError(e: unknown): e is NodeInterruptedError;
|
|
31
|
+
/**
|
|
32
|
+
* Raised when a node exceeds its configured timeout.
|
|
33
|
+
*
|
|
34
|
+
* This is a regular `Error` (retryable) so a timed-out node can be retried via
|
|
35
|
+
* `retryConfig`.
|
|
36
|
+
*/
|
|
37
|
+
export declare class NodeTimeoutError extends Error {
|
|
38
|
+
readonly nodeName: string;
|
|
39
|
+
readonly timeout: number;
|
|
40
|
+
/**
|
|
41
|
+
* @param options.nodeName The name of the node that timed out.
|
|
42
|
+
* @param options.timeout The timeout, in seconds, that was exceeded.
|
|
43
|
+
*/
|
|
44
|
+
constructor(options: {
|
|
45
|
+
nodeName: string;
|
|
46
|
+
timeout: number;
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
/** Type guard for {@link NodeTimeoutError} (name-based; see above). */
|
|
50
|
+
export declare function isNodeTimeoutError(e: unknown): e is NodeTimeoutError;
|
|
51
|
+
/**
|
|
52
|
+
* Raised when a dynamic node fails.
|
|
53
|
+
*
|
|
54
|
+
* Caught by the parent node's NodeRunner to propagate the error.
|
|
55
|
+
* Internal to the framework — not part of the public API.
|
|
56
|
+
*/
|
|
57
|
+
export declare class DynamicNodeFailError extends Error {
|
|
58
|
+
readonly error: Error;
|
|
59
|
+
readonly errorNodePath: string;
|
|
60
|
+
/**
|
|
61
|
+
* @param options.message Human-readable failure message.
|
|
62
|
+
* @param options.error The underlying error thrown by the dynamic node.
|
|
63
|
+
* @param options.errorNodePath The node path where the failure occurred.
|
|
64
|
+
*/
|
|
65
|
+
constructor(options: {
|
|
66
|
+
message: string;
|
|
67
|
+
error: Error;
|
|
68
|
+
errorNodePath: string;
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
/** Type guard for {@link DynamicNodeFailError} (name-based; see above). */
|
|
72
|
+
export declare function isDynamicNodeFailError(e: unknown): e is DynamicNodeFailError;
|
|
73
|
+
/**
|
|
74
|
+
* Raised when a node reported a failure by emitting an error event instead of
|
|
75
|
+
* throwing, and produced nothing.
|
|
76
|
+
*
|
|
77
|
+
* A regular `Error`, so `retryConfig` can retry it via
|
|
78
|
+
* `exceptions: ['NodeReportedError']`; `code` carries the reported error code.
|
|
79
|
+
*/
|
|
80
|
+
export declare class NodeReportedError extends Error {
|
|
81
|
+
readonly code: string;
|
|
82
|
+
readonly nodeName: string;
|
|
83
|
+
/**
|
|
84
|
+
* @param options.nodeName The node that reported the error.
|
|
85
|
+
* @param options.errorCode The code carried on the reported event.
|
|
86
|
+
* @param options.errorMessage The message carried on the reported event.
|
|
87
|
+
*/
|
|
88
|
+
constructor(options: {
|
|
89
|
+
nodeName: string;
|
|
90
|
+
errorCode?: string;
|
|
91
|
+
errorMessage?: string;
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
/** Type guard for {@link NodeReportedError} (name-based; see above). */
|
|
95
|
+
export declare function isNodeReportedError(e: unknown): e is NodeReportedError;
|
|
96
|
+
/**
|
|
97
|
+
* Raised when the invocation is aborted (e.g. its abort signal fires) while the
|
|
98
|
+
* engine is waiting — currently during a node's retry backoff delay.
|
|
99
|
+
*
|
|
100
|
+
* Distinct from a node's own failure so a caller can tell "the invocation was
|
|
101
|
+
* cancelled" apart from "the node threw".
|
|
102
|
+
*/
|
|
103
|
+
export declare class InvocationAbortedError extends Error {
|
|
104
|
+
constructor(message?: string);
|
|
105
|
+
}
|
|
106
|
+
/** Type guard for {@link InvocationAbortedError} (name-based; see above). */
|
|
107
|
+
export declare function isInvocationAbortedError(e: unknown): e is InvocationAbortedError;
|
|
108
|
+
/**
|
|
109
|
+
* Raised when a node's input or output fails its declared schema.
|
|
110
|
+
*
|
|
111
|
+
* The underlying validation error (a `ZodError`, typically) carries the field
|
|
112
|
+
* path but not the node it came from, which leaves a failure in a large graph
|
|
113
|
+
* effectively unattributed. This wrapper names the node and which side of it
|
|
114
|
+
* failed, and keeps the original error on `cause` for the full detail.
|
|
115
|
+
*/
|
|
116
|
+
export declare class NodeSchemaValidationError extends Error {
|
|
117
|
+
readonly nodeName: string;
|
|
118
|
+
/** Which side of the node failed: its `inputSchema` or its `outputSchema`. */
|
|
119
|
+
readonly direction: 'input' | 'output';
|
|
120
|
+
/**
|
|
121
|
+
* @param options.nodeName The name of the node that failed validation.
|
|
122
|
+
* @param options.direction Whether the input or the output failed.
|
|
123
|
+
* @param options.cause The underlying validation error.
|
|
124
|
+
*/
|
|
125
|
+
constructor(options: {
|
|
126
|
+
nodeName: string;
|
|
127
|
+
direction: 'input' | 'output';
|
|
128
|
+
cause: unknown;
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
/** Type guard for {@link NodeSchemaValidationError} (name-based; see above). */
|
|
132
|
+
export declare function isNodeSchemaValidationError(e: unknown): e is NodeSchemaValidationError;
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2026 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import type { BaseAgent } from '../agents/base_agent.js';
|
|
7
|
+
import { BaseTool } from '../tools/base_tool.js';
|
|
8
|
+
import { BaseNode } from './base_node.js';
|
|
9
|
+
/**
|
|
10
|
+
* A unique symbol branding {@link Edge} instances.
|
|
11
|
+
*
|
|
12
|
+
* `isEdge` matches on this brand rather than `instanceof` so an edge built
|
|
13
|
+
* by another copy of adk-js in the same runtime is still recognised (an
|
|
14
|
+
* `instanceof` check fails across package copies) — mirroring the
|
|
15
|
+
* `Symbol.for('google.adk.*')` brands used across ADK.
|
|
16
|
+
*/
|
|
17
|
+
declare const EDGE_SIGNATURE_SYMBOL: unique symbol;
|
|
18
|
+
/** Valid routing values used in conditional graph edges. */
|
|
19
|
+
export type RouteValue = boolean | number | string;
|
|
20
|
+
/** The fallback route key used when no specific route matches. */
|
|
21
|
+
export declare const DEFAULT_ROUTE = "__DEFAULT__";
|
|
22
|
+
/**
|
|
23
|
+
* Any value that can be converted to a workflow node: a node, a tool, a plain
|
|
24
|
+
* function, or the `'START'` sentinel literal. (Agent wrapping is added in
|
|
25
|
+
* Phase 3 via `build_node`.)
|
|
26
|
+
*/
|
|
27
|
+
export type NodeLike = BaseNode | BaseAgent | BaseTool | ((...args: never[]) => unknown) | 'START';
|
|
28
|
+
/**
|
|
29
|
+
* What `ctx.runNode()` accepts: everything an edge accepts except the `'START'`
|
|
30
|
+
* sentinel, which marks a graph entry point rather than something runnable.
|
|
31
|
+
*/
|
|
32
|
+
export type RunnableNode = Exclude<NodeLike, 'START'>;
|
|
33
|
+
/**
|
|
34
|
+
* A mapping from route values to destination node(s). A value may be a single
|
|
35
|
+
* node or an array of nodes (fan-out).
|
|
36
|
+
*
|
|
37
|
+
* @example
|
|
38
|
+
* {question: answerNode, statement: commentNode}
|
|
39
|
+
* {retry: [nodeA, nodeB]} // fan-out: both triggered
|
|
40
|
+
*
|
|
41
|
+
* @remarks
|
|
42
|
+
* JavaScript object keys are always strings, so a numeric key (`{2: node}`) and
|
|
43
|
+
* a boolean key (`{true: node}`) are reconstructed to their typed
|
|
44
|
+
* {@link RouteValue} (`2`, `true`) when parsed — mirroring Python dict keys.
|
|
45
|
+
* Because of this, routes are matched **by string value**
|
|
46
|
+
* ({@link Graph.getNextPendingNodes} compares `String(route)` on both sides), so
|
|
47
|
+
* a node emitting `2` and one emitting `'2'` both fire a `{2: node}` edge. The
|
|
48
|
+
* flip side is that a numeric/boolean-looking route and its string spelling
|
|
49
|
+
* cannot be distinguished in a routing map; use distinct, non-ambiguous route
|
|
50
|
+
* keys when that matters.
|
|
51
|
+
*/
|
|
52
|
+
export type RoutingMap = Record<string | number, NodeLike | readonly NodeLike[]>;
|
|
53
|
+
/** An element within a workflow chain. */
|
|
54
|
+
export type ChainElement = NodeLike | readonly NodeLike[] | RoutingMap;
|
|
55
|
+
/**
|
|
56
|
+
* An item that can be parsed into workflow edges: an explicit {@link Edge}, or a
|
|
57
|
+
* chain expressed as an array of {@link ChainElement}s (e.g.
|
|
58
|
+
* `['START', nodeA, nodeB]`).
|
|
59
|
+
*/
|
|
60
|
+
export type EdgeItem = Edge | ChainElement[];
|
|
61
|
+
/**
|
|
62
|
+
* A directed edge in the workflow graph.
|
|
63
|
+
*
|
|
64
|
+
* Mirrors `google/adk-python` `workflow/_graph.py::Edge`.
|
|
65
|
+
*/
|
|
66
|
+
export declare class Edge {
|
|
67
|
+
readonly fromNode: BaseNode;
|
|
68
|
+
readonly toNode: BaseNode;
|
|
69
|
+
/**
|
|
70
|
+
* The route(s) this edge is associated with. `null` means unconditional
|
|
71
|
+
* (always triggered). A single value or a list; the edge fires when the
|
|
72
|
+
* emitted route matches any listed value.
|
|
73
|
+
*/
|
|
74
|
+
readonly route: RouteValue | RouteValue[] | null;
|
|
75
|
+
/** Brand identifying this object as an {@link Edge} (see `isEdge`). */
|
|
76
|
+
readonly [EDGE_SIGNATURE_SYMBOL] = true;
|
|
77
|
+
constructor(fromNode: BaseNode, toNode: BaseNode,
|
|
78
|
+
/**
|
|
79
|
+
* The route(s) this edge is associated with. `null` means unconditional
|
|
80
|
+
* (always triggered). A single value or a list; the edge fires when the
|
|
81
|
+
* emitted route matches any listed value.
|
|
82
|
+
*/
|
|
83
|
+
route?: RouteValue | RouteValue[] | null);
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Type guard for {@link Edge}.
|
|
87
|
+
*
|
|
88
|
+
* Matches on the {@link EDGE_SIGNATURE_SYMBOL} brand rather than `instanceof` so
|
|
89
|
+
* it stays correct across package copies (see the brand's doc).
|
|
90
|
+
*/
|
|
91
|
+
export declare function isEdge(value: unknown): value is Edge;
|
|
92
|
+
/**
|
|
93
|
+
* A compiled workflow graph. Nodes are inferred (deduped by identity) from the
|
|
94
|
+
* edges.
|
|
95
|
+
*
|
|
96
|
+
* Mirrors `google/adk-python` `workflow/_graph.py::Graph`.
|
|
97
|
+
*/
|
|
98
|
+
export declare class Graph {
|
|
99
|
+
readonly nodes: BaseNode[];
|
|
100
|
+
readonly edges: Edge[];
|
|
101
|
+
private _terminalNodeNames;
|
|
102
|
+
constructor(edges: Edge[]);
|
|
103
|
+
/** Terminal node names (no outgoing edges); populated by {@link validate}. */
|
|
104
|
+
get terminalNodeNames(): ReadonlySet<string>;
|
|
105
|
+
/**
|
|
106
|
+
* Determines the next nodes to transition to PENDING based on the route(s)
|
|
107
|
+
* emitted by a completed node. Ported from Python `get_next_pending_nodes`.
|
|
108
|
+
*
|
|
109
|
+
* Logs at debug when the node emitted a route, has conditional outgoing
|
|
110
|
+
* edges, and none of them (nor a `DEFAULT_ROUTE` edge) matched — the branch
|
|
111
|
+
* stops there, which is easy to mistake for a bug. Behaviour is unchanged.
|
|
112
|
+
*/
|
|
113
|
+
getNextPendingNodes(nodeName: string, routesToMatch: RouteValue | RouteValue[] | null | undefined): string[];
|
|
114
|
+
/** Validates the graph and computes terminal node names. */
|
|
115
|
+
validate(): void;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Builds, validates, and returns a {@link Graph} from a list of edge items.
|
|
119
|
+
*
|
|
120
|
+
* Validation runs here (not opt-in) so structural problems a graph can only
|
|
121
|
+
* have at build time — unreachable nodes, duplicate names/edges, routed edges
|
|
122
|
+
* from START, unconditional cycles — fail loudly at construction rather than
|
|
123
|
+
* surfacing as silent mis-routing at run time. It also populates the graph's
|
|
124
|
+
* {@link Graph.terminalNodeNames}, which is otherwise empty.
|
|
125
|
+
*/
|
|
126
|
+
export declare function createGraphFromEdgeItems(edgeItems: EdgeItem[]): Graph;
|
|
127
|
+
export {};
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2026 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* The new ADK workflow module (parity port of `google/adk-python`
|
|
8
|
+
* `google/adk/workflow`). Public surface mirrors Python's `__all__`, plus the
|
|
9
|
+
* TypeScript-specific helpers and the types needed to use the
|
|
10
|
+
* API from TypeScript.
|
|
11
|
+
*/
|
|
12
|
+
export { asRunnableRoot, isRunnableRoot, runNodeAsInvocation, } from './run_node_as_invocation.js';
|
|
13
|
+
export type { RunNodeAsInvocationOptions, RunnableRoot, } from './run_node_as_invocation.js';
|
|
14
|
+
export { Workflow, isWorkflow } from './workflow.js';
|
|
15
|
+
export type { DynamicEntry, WorkflowConfig } from './workflow.js';
|
|
16
|
+
export { BaseNode, START } from './base_node.js';
|
|
17
|
+
export type { BaseNodeConfig } from './base_node.js';
|
|
18
|
+
export { WorkflowNode, node } from './node.js';
|
|
19
|
+
export type { NodeOptions } from './node.js';
|
|
20
|
+
export { FunctionNode } from './nodes/function_node.js';
|
|
21
|
+
export type { FunctionNodeConfig, FunctionNodeHandler, FunctionNodeResult, } from './nodes/function_node.js';
|
|
22
|
+
export { JoinNode } from './nodes/join_node.js';
|
|
23
|
+
export { NodeTool } from './nodes/node_tool.js';
|
|
24
|
+
export { ParallelWorker } from './nodes/parallel_worker.js';
|
|
25
|
+
export type { ParallelWorkerConfig } from './nodes/parallel_worker.js';
|
|
26
|
+
export { ToolNode } from './nodes/tool_node.js';
|
|
27
|
+
export type { ToolNodeConfig } from './nodes/tool_node.js';
|
|
28
|
+
export type { BuildNodeOptions } from './utils/workflow_graph_utils.js';
|
|
29
|
+
export { DEFAULT_ROUTE, Edge, Graph } from './graph.js';
|
|
30
|
+
export type { ChainElement, EdgeItem, NodeLike, RouteValue, RoutingMap, RunnableNode, } from './graph.js';
|
|
31
|
+
export { BranchPath, commonPrefixOf, createSubBranch } from './branch_path.js';
|
|
32
|
+
export { NodeContext } from './node_context.js';
|
|
33
|
+
export type { NodeContextOptions, NodeResult } from './node_context.js';
|
|
34
|
+
export type { RunNodeOptions } from './node_runner.js';
|
|
35
|
+
export { createNodeState, isNodeState } from './node_state.js';
|
|
36
|
+
export type { NodeState } from './node_state.js';
|
|
37
|
+
export { NodeStatus } from './node_status.js';
|
|
38
|
+
export type { ScheduleDynamicNode, ScheduleDynamicNodeOptions, } from './schedule_dynamic_node.js';
|
|
39
|
+
export { RequestInput, isRequestInput } from './request_input.js';
|
|
40
|
+
export type { RequestInputParams } from './request_input.js';
|
|
41
|
+
export { REQUEST_CREDENTIAL_FUNCTION_CALL_NAME, REQUEST_INPUT_FUNCTION_CALL_NAME, } from './utils/hitl_utils.js';
|
|
42
|
+
export { normalizeRetryExceptions, prepareRetryConfig } from './retry_config.js';
|
|
43
|
+
export type { ErrorClass, PreparedRetryConfig, RetryConfig, } from './retry_config.js';
|
|
44
|
+
export { NodeReportedError, NodeSchemaValidationError, NodeTimeoutError, isNodeReportedError, isNodeSchemaValidationError, isNodeTimeoutError, } from './errors.js';
|
|
45
|
+
export { createNodeErrorEvent, isNodeErrorEvent } from './node_error_event.js';
|
|
46
|
+
export type { CreateNodeErrorEventParams, NodeErrorEvent, } from './node_error_event.js';
|
|
@@ -0,0 +1,48 @@
|
|
|
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 { NodeLike } from './graph.js';
|
|
9
|
+
import { NodeContext } from './node_context.js';
|
|
10
|
+
import { BuildNodeOptions } from './utils/workflow_graph_utils.js';
|
|
11
|
+
/** Options accepted by {@link node}. */
|
|
12
|
+
export type NodeOptions = BuildNodeOptions;
|
|
13
|
+
/**
|
|
14
|
+
* Wraps a {@link NodeLike} (function, tool, agent, or existing node) into a
|
|
15
|
+
* {@link BaseNode}, optionally overriding its properties.
|
|
16
|
+
*
|
|
17
|
+
* The TypeScript form is a plain function (there is no `@node` decorator form,
|
|
18
|
+
* unlike Python). Examples:
|
|
19
|
+
*
|
|
20
|
+
* ```ts
|
|
21
|
+
* const a = node(myFunction, {name: 'classify'});
|
|
22
|
+
* const b = node(myTool);
|
|
23
|
+
* ```
|
|
24
|
+
*
|
|
25
|
+
* Ported from `google/adk-python` `workflow/_node.py::node`.
|
|
26
|
+
*/
|
|
27
|
+
export declare function node(nodeLike: NodeLike, options?: NodeOptions): BaseNode;
|
|
28
|
+
/**
|
|
29
|
+
* A base class designed for subclassing. Implement {@link runNodeImpl} to
|
|
30
|
+
* provide node logic; subclasses inherit the schema/retry/timeout machinery of
|
|
31
|
+
* {@link BaseNode}.
|
|
32
|
+
*
|
|
33
|
+
* Named `WorkflowNode` (not `Node`) to read consistently with `Workflow` and
|
|
34
|
+
* `WorkflowConfig`, and to avoid shadowing the DOM / `@types/node` `Node`
|
|
35
|
+
* global in the flat `@google/adk` namespace. The `node()` factory remains the
|
|
36
|
+
* ergonomic way to wrap a function/tool/agent.
|
|
37
|
+
*
|
|
38
|
+
* Mirrors `google/adk-python` `workflow/_node.py::Node`. The `parallel_worker`
|
|
39
|
+
* capability is added in Phase 6.
|
|
40
|
+
*/
|
|
41
|
+
export declare abstract class WorkflowNode<TInput = unknown, TOutput = unknown> extends BaseNode<TInput, TOutput> {
|
|
42
|
+
/**
|
|
43
|
+
* Implement node execution logic here. May yield `Event`s, raw values, or
|
|
44
|
+
* `null` (normalized by {@link BaseNode.run}).
|
|
45
|
+
*/
|
|
46
|
+
protected abstract runNodeImpl(ctx: NodeContext, input: TInput): AsyncGenerator<Event | TOutput | unknown, void, void>;
|
|
47
|
+
protected runImpl(ctx: NodeContext, input: TInput): AsyncGenerator<Event | TOutput | unknown, void, void>;
|
|
48
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2026 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import type { NodeBuilder, ParallelWorkerFactory } from './utils/workflow_graph_utils.js';
|
|
7
|
+
/**
|
|
8
|
+
* The built-in node builders, consulted in order by `buildNode` / `isNodeLike`
|
|
9
|
+
* to turn a bare function or tool into the right `BaseNode`.
|
|
10
|
+
*
|
|
11
|
+
* There is no agent builder: an agent is already a `BaseNode` and goes into a
|
|
12
|
+
* graph as itself. What used to be built here — an `LLMAgentWrapper` around it
|
|
13
|
+
* — now lives on the agent, as `LlmAgent.runImpl`.
|
|
14
|
+
*
|
|
15
|
+
* This is a single, explicit, statically-imported list — node-type modules are
|
|
16
|
+
* wired in here rather than self-registering at import time, so there is no
|
|
17
|
+
* global mutable registry and no import-order side effects. Order is the match
|
|
18
|
+
* precedence (first match wins). Each node-type part adds its builder here.
|
|
19
|
+
*/
|
|
20
|
+
export declare const NODE_BUILDERS: readonly NodeBuilder[];
|
|
21
|
+
/**
|
|
22
|
+
* Wraps an already-built node in a parallel worker, used by the engine for
|
|
23
|
+
* `buildNode(..., {parallelWorker: true})`.
|
|
24
|
+
*/
|
|
25
|
+
export declare const PARALLEL_WORKER_FACTORY: ParallelWorkerFactory | undefined;
|
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2026 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { InvocationContext } from '../agents/invocation_context.js';
|
|
7
|
+
import { Event } from '../events/event.js';
|
|
8
|
+
import { EventActions } from '../events/event_actions.js';
|
|
9
|
+
import { State } from '../sessions/state.js';
|
|
10
|
+
import { AsyncQueue } from '../utils/async_queue.js';
|
|
11
|
+
import type { SchemaLike } from '../utils/schema.js';
|
|
12
|
+
import type { RouteValue, RunnableNode } from './graph.js';
|
|
13
|
+
import { RunNodeOptions } from './node_runner.js';
|
|
14
|
+
import type { ScheduleDynamicNode } from './schedule_dynamic_node.js';
|
|
15
|
+
/**
|
|
16
|
+
* The result of running a node: the fields a caller (and the engine's
|
|
17
|
+
* completion handling) reads off a finished run — its `output`, emitted
|
|
18
|
+
* `route`, the `branch` it ran on, and any raised interrupt ids.
|
|
19
|
+
*
|
|
20
|
+
* A node that actually executes returns its full {@link NodeContext} (which
|
|
21
|
+
* satisfies this shape). A node that is *fast-forwarded* on resume (its output
|
|
22
|
+
* was cached in a prior turn, so its body is not re-run) returns a bare
|
|
23
|
+
* `NodeResult` with no live context behaviour — so callers of `ctx.runNode()`
|
|
24
|
+
* should treat the result as a `NodeResult` and read only these fields.
|
|
25
|
+
*/
|
|
26
|
+
export interface NodeResult {
|
|
27
|
+
/** The structured output the node produced (if any). */
|
|
28
|
+
output: unknown;
|
|
29
|
+
/** The route key(s) the node emitted, if any (array = multi-route). */
|
|
30
|
+
route?: RouteValue | RouteValue[];
|
|
31
|
+
/** The branch the node ran on. */
|
|
32
|
+
branch?: string;
|
|
33
|
+
/** Interrupt ids the node is blocked on (empty when it completed). */
|
|
34
|
+
interruptIds: string[];
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Options for constructing a {@link NodeContext}.
|
|
38
|
+
*/
|
|
39
|
+
export interface NodeContextOptions {
|
|
40
|
+
invocationContext: InvocationContext;
|
|
41
|
+
channel: AsyncQueue<Event>;
|
|
42
|
+
/** Dotted node path of the owning node (empty string for the root). */
|
|
43
|
+
nodePath: string;
|
|
44
|
+
/** Deterministic run id of the owning node. */
|
|
45
|
+
runId: string;
|
|
46
|
+
/** Responses for resuming interrupted child nodes, keyed by interrupt id. */
|
|
47
|
+
resumeInputs?: Record<string, unknown>;
|
|
48
|
+
/** Scope tag isolating this node's events from peer scopes. */
|
|
49
|
+
isolationScope?: string;
|
|
50
|
+
/** Accumulator for event actions (state delta, etc). */
|
|
51
|
+
actions?: EventActions;
|
|
52
|
+
/**
|
|
53
|
+
* Declares the keys this node may write to `ctx.state` and their types.
|
|
54
|
+
* Resolved by the runner: the node's own schema, or the parent's.
|
|
55
|
+
*/
|
|
56
|
+
stateSchema?: SchemaLike;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* The execution context for a workflow node — the TypeScript analogue of
|
|
60
|
+
* `google/adk-python` `agents/context.py::Context` (the workflow flavour).
|
|
61
|
+
*
|
|
62
|
+
* It exposes `ctx.runNode(...)` for programmatic child execution, `ctx.state`
|
|
63
|
+
* for delta-aware session state, `ctx.emit(...)` to stream an event, and the
|
|
64
|
+
* mutable `output`/`route`/`interruptIds` a node sets while running.
|
|
65
|
+
*/
|
|
66
|
+
export declare class NodeContext {
|
|
67
|
+
readonly invocationContext: InvocationContext;
|
|
68
|
+
readonly channel: AsyncQueue<Event>;
|
|
69
|
+
readonly nodePath: string;
|
|
70
|
+
readonly runId: string;
|
|
71
|
+
/**
|
|
72
|
+
* Node paths whose output this node's output also becomes: its parent's if
|
|
73
|
+
* the parent ran it with `useAsOutput`, plus whatever the parent was standing
|
|
74
|
+
* in for. Stamped onto every output event as `nodeInfo.outputFor`, so a
|
|
75
|
+
* resumed run can tell that an ancestor already has a result.
|
|
76
|
+
*/
|
|
77
|
+
outputForAncestors: readonly string[];
|
|
78
|
+
/**
|
|
79
|
+
* Whether this node handed its output to a child run with `useAsOutput`.
|
|
80
|
+
*
|
|
81
|
+
* The child already emitted that value as its own result, so an event from
|
|
82
|
+
* this node repeating it would put the same text in the stream twice. The
|
|
83
|
+
* node still reports the output — only the duplicate event is suppressed.
|
|
84
|
+
*/
|
|
85
|
+
outputDelegated: boolean;
|
|
86
|
+
readonly actions: EventActions;
|
|
87
|
+
resumeInputs: Record<string, unknown>;
|
|
88
|
+
isolationScope?: string;
|
|
89
|
+
/** The structured output produced by the node during its run. */
|
|
90
|
+
output: unknown;
|
|
91
|
+
/** The route key(s) emitted by the node, if any (array = multi-route). */
|
|
92
|
+
route?: RouteValue | RouteValue[];
|
|
93
|
+
/** Interrupt ids the node is currently blocked on (HITL). */
|
|
94
|
+
interruptIds: string[];
|
|
95
|
+
/**
|
|
96
|
+
* The failure a node reported by emitting an error event rather than by
|
|
97
|
+
* throwing. Read back at the end of the attempt; cleared per attempt.
|
|
98
|
+
*/
|
|
99
|
+
reportedError?: {
|
|
100
|
+
errorCode?: string;
|
|
101
|
+
errorMessage?: string;
|
|
102
|
+
};
|
|
103
|
+
/**
|
|
104
|
+
* Abort signal for the current node run, set by the engine while the node is
|
|
105
|
+
* executing under a deadline or an external cancellation signal — i.e. when
|
|
106
|
+
* the node declares a `timeout`, when the invocation itself can be aborted, or
|
|
107
|
+
* when it runs inside a Workflow (whose signal fires if a sibling fails).
|
|
108
|
+
* Cooperative node bodies can observe `ctx.abortSignal` to wind down their own
|
|
109
|
+
* in-flight work (e.g. pass it to a model/tool call); the engine also stops
|
|
110
|
+
* consuming the node's events once it fires, so nothing is pushed past
|
|
111
|
+
* cancellation. A fired `timeout` surfaces as a `NodeTimeoutError`; an external
|
|
112
|
+
* abort stops the node without raising.
|
|
113
|
+
*/
|
|
114
|
+
abortSignal?: AbortSignal;
|
|
115
|
+
/**
|
|
116
|
+
* The dynamic-node scheduler for this subtree. When set, `ctx.runNode()`
|
|
117
|
+
* routes through it (dedup/resume/fresh); otherwise it runs the child
|
|
118
|
+
* directly. Propagated to child contexts by the node runner; a nested
|
|
119
|
+
* Workflow overrides it with its own scheduler.
|
|
120
|
+
*/
|
|
121
|
+
scheduler?: ScheduleDynamicNode;
|
|
122
|
+
/** The current attempt number (1-based) for the running node (see retry). */
|
|
123
|
+
attemptCount: number;
|
|
124
|
+
/**
|
|
125
|
+
* The state schema in force for this node, inherited by its children unless
|
|
126
|
+
* they declare their own.
|
|
127
|
+
*/
|
|
128
|
+
readonly stateSchema?: SchemaLike;
|
|
129
|
+
private readonly _state;
|
|
130
|
+
private readonly dynamicRunCounters;
|
|
131
|
+
/** Run ids this context handed out automatically, per node name. */
|
|
132
|
+
private readonly autoRunIds;
|
|
133
|
+
/**
|
|
134
|
+
* Caller-supplied run ids shaped like an automatic one (all digits), per node
|
|
135
|
+
* name — the set {@link assertNoNumericCustomRunIds} refuses to auto-number
|
|
136
|
+
* around.
|
|
137
|
+
*/
|
|
138
|
+
private readonly numericCustomRunIds;
|
|
139
|
+
constructor(opts: NodeContextOptions);
|
|
140
|
+
/** Delta-aware session state; writes accumulate in `actions.stateDelta`. */
|
|
141
|
+
get state(): State;
|
|
142
|
+
/** The branch of the owning invocation context. */
|
|
143
|
+
get branch(): string | undefined;
|
|
144
|
+
/** The current invocation id. */
|
|
145
|
+
get invocationId(): string;
|
|
146
|
+
/** The current session. */
|
|
147
|
+
get session(): import("../common.js").Session;
|
|
148
|
+
/**
|
|
149
|
+
* The invocation context to run a nested agent against.
|
|
150
|
+
*
|
|
151
|
+
* The single place where "what a node sees" is translated into "what an
|
|
152
|
+
* agent sees", so an agent run as a node (`BaseAgent.runImpl`) and one run
|
|
153
|
+
* directly go through the same seam.
|
|
154
|
+
*
|
|
155
|
+
* It hands back the node's own invocation context unchanged, and that is the
|
|
156
|
+
* intended behaviour rather than a placeholder.
|
|
157
|
+
*
|
|
158
|
+
* adk-python's counterpart (`agents/context.py` `get_invocation_context`) is
|
|
159
|
+
* documented as returning "a copy with the proxy session", which reads as
|
|
160
|
+
* though the agent is handed a different view of state. It is not: that
|
|
161
|
+
* `Context.session` returns `self._invocation_context.session`, so the copy
|
|
162
|
+
* substitutes the same object, and `Context._state` is built directly over
|
|
163
|
+
* `session.state`. A Python agent run as a node reads session state exactly
|
|
164
|
+
* as a TypeScript one does.
|
|
165
|
+
*
|
|
166
|
+
* The other thing that copy carries — the isolation scope — is already
|
|
167
|
+
* applied by the time this runs: the node runner builds the child invocation
|
|
168
|
+
* context with the node's scope, so it is present on the object returned.
|
|
169
|
+
*
|
|
170
|
+
* That leaves the node's own `state`, which is this node's pending delta over
|
|
171
|
+
* `session.state` — the same thing an agent reads, so the two cannot
|
|
172
|
+
* disagree. The agent-node cases in
|
|
173
|
+
* `core/test/workflow/state_consistency_test.ts` pin that.
|
|
174
|
+
*/
|
|
175
|
+
getInvocationContext(): InvocationContext;
|
|
176
|
+
/** Streams a single event out through the workflow's event channel. */
|
|
177
|
+
emit(event: Event): void;
|
|
178
|
+
/**
|
|
179
|
+
* Runs a child node programmatically, streaming its events through the same
|
|
180
|
+
* channel and resolving to the child's result — a full {@link NodeContext}
|
|
181
|
+
* for a node that actually ran, or a bare {@link NodeResult} for one that was
|
|
182
|
+
* fast-forwarded from cached output on resume. Either way the caller can read
|
|
183
|
+
* `output`, `route`, `branch`, and `interruptIds`; only a `NodeContext`
|
|
184
|
+
* offers live behaviour (`emit`, `state`, nested `runNode`).
|
|
185
|
+
*
|
|
186
|
+
* When a dynamic-node {@link scheduler} is set (inside a Workflow subtree),
|
|
187
|
+
* the call routes through it for dedup/resume; otherwise the child runs
|
|
188
|
+
* directly.
|
|
189
|
+
*
|
|
190
|
+
* Takes anything an edge takes — an agent, a tool, a plain function, or an
|
|
191
|
+
* already-built node — and wraps it the same way the graph does, so
|
|
192
|
+
* `ctx.runNode(myAgent, input)` works without `node(myAgent)`. Wrap it
|
|
193
|
+
* yourself when you need the options `node()` carries, such as a schema or a
|
|
194
|
+
* name that differs from the value's own.
|
|
195
|
+
*/
|
|
196
|
+
runNode(nodeLike: RunnableNode, input?: unknown, options?: RunNodeOptions): Promise<NodeContext | NodeResult>;
|
|
197
|
+
/**
|
|
198
|
+
* Runs a child through the scheduler, raising {@link NodeInterruptedError}
|
|
199
|
+
* when it comes back waiting on an unanswered interrupt.
|
|
200
|
+
*
|
|
201
|
+
* The caller's body must not continue past a child that stopped to ask the
|
|
202
|
+
* user: everything after the call would run on a missing answer, and would
|
|
203
|
+
* run again when the turn resumes. The scheduler has already copied the
|
|
204
|
+
* child's interrupt ids onto this context by the time it returns, so the
|
|
205
|
+
* runner that catches the throw records this node as waiting.
|
|
206
|
+
*/
|
|
207
|
+
private scheduleAndUnwind;
|
|
208
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2026 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { CreateEventParams, Event } from '../events/event.js';
|
|
7
|
+
export interface NodeErrorEvent extends Event {
|
|
8
|
+
readonly isNodeError: true;
|
|
9
|
+
errorType: string;
|
|
10
|
+
attemptCount: number;
|
|
11
|
+
}
|
|
12
|
+
export interface CreateNodeErrorEventParams extends CreateEventParams {
|
|
13
|
+
error: unknown;
|
|
14
|
+
attemptCount?: number;
|
|
15
|
+
}
|
|
16
|
+
export declare function isNodeErrorEvent(event: Event): event is NodeErrorEvent;
|
|
17
|
+
export declare function claimNodeErrorReport(error: unknown, invocationId: string): boolean;
|
|
18
|
+
export declare function createNodeErrorEvent(params: CreateNodeErrorEventParams): NodeErrorEvent;
|