@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,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2026 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import type { BaseNode } from './base_node.js';
|
|
7
|
+
import type { NodeContext, NodeResult } from './node_context.js';
|
|
8
|
+
import { NodeState } from './node_state.js';
|
|
9
|
+
/**
|
|
10
|
+
* Options for scheduling a dynamic node via {@link ScheduleDynamicNode}.
|
|
11
|
+
*/
|
|
12
|
+
export interface ScheduleDynamicNodeOptions {
|
|
13
|
+
/** Deterministic tracking name; defaults to `node.name`. */
|
|
14
|
+
nodeName?: string;
|
|
15
|
+
/** Unique id for this specific execution (used for path/dedup keys). */
|
|
16
|
+
runId: string;
|
|
17
|
+
/** If true, the child's output replaces the caller's output. */
|
|
18
|
+
useAsOutput?: boolean;
|
|
19
|
+
/** If true, run the child in an isolated sub-branch. */
|
|
20
|
+
useSubBranch?: boolean;
|
|
21
|
+
/** Explicit branch override. */
|
|
22
|
+
overrideBranch?: string;
|
|
23
|
+
/** Explicit isolation-scope override. */
|
|
24
|
+
overrideIsolationScope?: string;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Protocol for scheduling a dynamically-invoked node (via `ctx.runNode()`).
|
|
28
|
+
*
|
|
29
|
+
* Implementations handle fresh execution, deduplication of concurrent calls,
|
|
30
|
+
* and (Phase 5) resumption from session events. Ported from
|
|
31
|
+
* `google/adk-python` `workflow/_schedule_dynamic_node.py`.
|
|
32
|
+
*/
|
|
33
|
+
export interface ScheduleDynamicNode {
|
|
34
|
+
schedule(ctx: NodeContext, node: BaseNode, input: unknown, options: ScheduleDynamicNodeOptions): Promise<NodeContext | NodeResult>;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Combines state, output, and the running task for a single dynamic node
|
|
38
|
+
* execution.
|
|
39
|
+
*/
|
|
40
|
+
export interface DynamicNodeRun {
|
|
41
|
+
state: NodeState;
|
|
42
|
+
output?: unknown;
|
|
43
|
+
task?: Promise<NodeContext>;
|
|
44
|
+
transferToAgent?: string;
|
|
45
|
+
/**
|
|
46
|
+
* The result of a run that completed without executing its body, kept so a
|
|
47
|
+
* repeat call for the same path hands back the same result. Runs that did
|
|
48
|
+
* execute are deduplicated by `task` instead.
|
|
49
|
+
*/
|
|
50
|
+
result?: NodeResult;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* State for tracking dynamic nodes scheduled via `ctx.runNode()`.
|
|
54
|
+
*
|
|
55
|
+
* Ported (Phase 4 subset) from `google/adk-python`
|
|
56
|
+
* `workflow/_dynamic_node_scheduler.py::DynamicNodeState`. Replay/rehydration
|
|
57
|
+
* fields are added in Phase 5.
|
|
58
|
+
*/
|
|
59
|
+
export declare class DynamicNodeState {
|
|
60
|
+
/** Dynamic node runs keyed by unique node path (e.g. `wf/node_a@1`). */
|
|
61
|
+
readonly runs: Map<string, DynamicNodeRun>;
|
|
62
|
+
/** Union of unresolved interrupt ids across dynamic child nodes. */
|
|
63
|
+
readonly interruptIds: Set<string>;
|
|
64
|
+
/** All in-flight dynamic node tasks. */
|
|
65
|
+
getDynamicTasks(): Array<Promise<NodeContext>>;
|
|
66
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2026 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* A buffered trigger for a downstream node.
|
|
8
|
+
*
|
|
9
|
+
* Ported from `google/adk-python` `workflow/_trigger.py`. Unlike the previous
|
|
10
|
+
* TypeScript `Trigger` (a route-matching predicate), this is a plain data record
|
|
11
|
+
* describing *how* a target node should be invoked when its turn comes.
|
|
12
|
+
*/
|
|
13
|
+
export interface Trigger {
|
|
14
|
+
/** The input to pass to the triggered node. */
|
|
15
|
+
input?: unknown;
|
|
16
|
+
/** Whether this trigger should run the node in an isolated sub-branch. */
|
|
17
|
+
useSubBranch?: boolean;
|
|
18
|
+
/** The branch inherited from the predecessor node. */
|
|
19
|
+
branch?: string;
|
|
20
|
+
/** Scope tag explicitly propagated to this trigger. */
|
|
21
|
+
isolationScope?: string;
|
|
22
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2026 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { Edge, EdgeItem } from '../graph.js';
|
|
7
|
+
/** Parses a list of edge items into a flat list of {@link Edge} objects. */
|
|
8
|
+
export declare function parseEdgeItems(edgeItems: EdgeItem[]): Edge[];
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2026 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Validates workflow graphs and computes terminal nodes.
|
|
8
|
+
*
|
|
9
|
+
* Ported from `google/adk-python` `workflow/utils/_graph_validation.py`.
|
|
10
|
+
* The Phase 3 static-schema check and the Phase 7 chat-agent wiring check are
|
|
11
|
+
* intentionally deferred to their respective phases.
|
|
12
|
+
*/
|
|
13
|
+
import { BaseNode } from '../base_node.js';
|
|
14
|
+
import { Edge } from '../graph.js';
|
|
15
|
+
/**
|
|
16
|
+
* Validates the workflow graph and returns the set of terminal node names.
|
|
17
|
+
*/
|
|
18
|
+
export declare function validateGraph(nodes: BaseNode[], edges: Edge[]): Set<string>;
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2026 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Utilities for Human-in-the-Loop (HITL) workflows.
|
|
8
|
+
*
|
|
9
|
+
* Ported (subset) from `google/adk-python`
|
|
10
|
+
* `workflow/utils/_workflow_hitl_utils.py`.
|
|
11
|
+
*/
|
|
12
|
+
import { Part } from '@google/genai';
|
|
13
|
+
import { AuthConfig } from '../../auth/auth_tool.js';
|
|
14
|
+
import { Event } from '../../events/event.js';
|
|
15
|
+
import { State } from '../../sessions/state.js';
|
|
16
|
+
import { RequestInput } from '../request_input.js';
|
|
17
|
+
export { REQUEST_CREDENTIAL_FUNCTION_CALL_NAME, REQUEST_INPUT_FUNCTION_CALL_NAME, } from '../../agents/functions.js';
|
|
18
|
+
/**
|
|
19
|
+
* Creates an interrupt {@link Event} from a {@link RequestInput}. The event
|
|
20
|
+
* carries an `adk_request_input` function call and marks the interrupt id as a
|
|
21
|
+
* long-running tool id.
|
|
22
|
+
*/
|
|
23
|
+
export declare function createRequestInputEvent(requestInput: RequestInput): Event;
|
|
24
|
+
/**
|
|
25
|
+
* Collects the `responseSchema` each pending interrupt declared, keyed by
|
|
26
|
+
* interrupt id, as the JSON Schema recorded on its `adk_request_input` call.
|
|
27
|
+
*
|
|
28
|
+
* The original {@link RequestInput} is long gone by the time a reply arrives —
|
|
29
|
+
* a node with `rerunOnResume: false` never runs its body again — so the
|
|
30
|
+
* serialized copy on the event is the only surviving record of the contract.
|
|
31
|
+
*/
|
|
32
|
+
export declare function responseSchemasByInterruptId(events: Event[]): Map<string, unknown>;
|
|
33
|
+
/**
|
|
34
|
+
* Checks a *structured* reply against the `responseSchema` its interrupt
|
|
35
|
+
* declared, and describes the mismatch when there is one. Returns `undefined`
|
|
36
|
+
* when the reply is acceptable.
|
|
37
|
+
*
|
|
38
|
+
* Reporting rather than throwing is what lets a caller be loud about the reply
|
|
39
|
+
* that just arrived and quiet about the same reply on every later replay: a
|
|
40
|
+
* rejected reply stays in the session forever, so a checker that threw on
|
|
41
|
+
* sight would end the session rather than the turn.
|
|
42
|
+
*
|
|
43
|
+
* Only structured replies are checked. A plain-text reply is routed to every
|
|
44
|
+
* pending interrupt as-is (the interactive CLI and the dev UI both rely on
|
|
45
|
+
* that), and holding free text to an object schema would break it.
|
|
46
|
+
*
|
|
47
|
+
* A reply that unwraps to a bare scalar counts as plain text and is exempt for
|
|
48
|
+
* the same reason: `{result: <text>}` is the envelope a client sends when it
|
|
49
|
+
* has only a chat box to offer, so checking it would reject the very answer
|
|
50
|
+
* the plain-text path accepts.
|
|
51
|
+
*
|
|
52
|
+
* What remains checked is the case this exists for: a reply in the wrong
|
|
53
|
+
* *shape*. A client that wraps its answer as `{response: x}` instead of
|
|
54
|
+
* `{result: x}` gets the whole envelope delivered as the node's input, which
|
|
55
|
+
* typically surfaces far downstream as a stringified `[object Object]`.
|
|
56
|
+
*/
|
|
57
|
+
export declare function interruptResponseMismatch(interruptId: string, value: unknown, jsonSchema: unknown): string | undefined;
|
|
58
|
+
/** Returns whether an event contains a `request_input` function call. */
|
|
59
|
+
export declare function hasRequestInputFunctionCall(event: Event): boolean;
|
|
60
|
+
/** Returns whether an event contains an `adk_request_credential` function call. */
|
|
61
|
+
export declare function hasAuthRequestFunctionCall(event: Event): boolean;
|
|
62
|
+
/** Extracts interrupt ids from `request_input` function calls in an event. */
|
|
63
|
+
export declare function getRequestInputInterruptIds(event: Event): string[];
|
|
64
|
+
/**
|
|
65
|
+
* Creates a `FunctionResponse` part answering a `request_input` interrupt,
|
|
66
|
+
* suitable for appending to a session as the user's resume response.
|
|
67
|
+
*/
|
|
68
|
+
export declare function createRequestInputResponse(interruptId: string, response: Record<string, unknown>): Part;
|
|
69
|
+
/** Whether a credential for the given auth config already exists in state. */
|
|
70
|
+
export declare function hasAuthCredential(authConfig: AuthConfig, state: State): boolean;
|
|
71
|
+
/**
|
|
72
|
+
* Creates an event requesting user authentication credentials
|
|
73
|
+
* (`adk_request_credential`), marking the interrupt id as a long-running tool.
|
|
74
|
+
*
|
|
75
|
+
* Ported from `google/adk-python` `create_auth_request_event`.
|
|
76
|
+
*/
|
|
77
|
+
export declare function createAuthRequestEvent(authConfig: AuthConfig, interruptId: string): Event;
|
|
78
|
+
/** Parameters for {@link processAuthResume}. */
|
|
79
|
+
export interface ProcessAuthResumeParams {
|
|
80
|
+
/** The resume response: a full {@link AuthConfig} or a plain value. */
|
|
81
|
+
responseData: unknown;
|
|
82
|
+
/** The auth config the credential is being stored for. */
|
|
83
|
+
authConfig: AuthConfig;
|
|
84
|
+
/** The session state to store the credential in. */
|
|
85
|
+
state: State;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Stores credentials from an auth resume response into session state. Accepts a
|
|
89
|
+
* full {@link AuthConfig} (web UI flow) or a plain value (e.g. an API key
|
|
90
|
+
* string), mirroring `google/adk-python` `process_auth_resume`.
|
|
91
|
+
*/
|
|
92
|
+
export declare function processAuthResume({ responseData, authConfig, state, }: ProcessAuthResumeParams): Promise<void>;
|
|
@@ -0,0 +1,132 @@
|
|
|
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 { RouteValue } from '../graph.js';
|
|
8
|
+
import type { NodeContext, NodeResult } from '../node_context.js';
|
|
9
|
+
/** Reconstructed state for a single node, keyed by node name. */
|
|
10
|
+
export interface RehydratedNode {
|
|
11
|
+
/** The node's cached output from a prior run, if it produced one. */
|
|
12
|
+
output?: unknown;
|
|
13
|
+
/** The route(s) the node emitted, if any (array = multi-route). */
|
|
14
|
+
route?: RouteValue | RouteValue[];
|
|
15
|
+
/** The branch the node ran on. */
|
|
16
|
+
branch?: string;
|
|
17
|
+
/** The input the node was invoked with (captured when it interrupted). */
|
|
18
|
+
input?: unknown;
|
|
19
|
+
/** Interrupt ids the node raised. */
|
|
20
|
+
interruptIds: Set<string>;
|
|
21
|
+
/** Resolved interrupt responses, keyed by interrupt id. */
|
|
22
|
+
resolvedResponses: Map<string, unknown>;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Narrows session events to the workflow run still in progress, dropping every
|
|
26
|
+
* earlier run that already finished.
|
|
27
|
+
*
|
|
28
|
+
* Rehydration exists to resume a run that paused, so it must not see a run that
|
|
29
|
+
* already completed: the finished nodes' cached outputs would be fast-forwarded
|
|
30
|
+
* into the new run, and the workflow would replay its previous answer instead
|
|
31
|
+
* of acting on the new input.
|
|
32
|
+
*
|
|
33
|
+
* `google/adk-python` scopes this by invocation id, because there a resumed
|
|
34
|
+
* invocation keeps its id. The TypeScript runner mints a fresh invocation id
|
|
35
|
+
* for every turn (`Runner.runAsync`), so a run that spans a pause covers
|
|
36
|
+
* several invocations and an id filter would discard the very outputs resume
|
|
37
|
+
* needs. Runs are delimited by pausing instead:
|
|
38
|
+
*
|
|
39
|
+
* - An invocation that raised an interrupt ended paused, so it belongs to the
|
|
40
|
+
* run still in progress.
|
|
41
|
+
* - An invocation that emitted node events without raising one ran to
|
|
42
|
+
* completion; it is the boundary, and it and everything before it are
|
|
43
|
+
* dropped.
|
|
44
|
+
*
|
|
45
|
+
* The current invocation is always kept: it is in progress by definition, and
|
|
46
|
+
* it carries the user function responses that resolve the pending interrupts.
|
|
47
|
+
*/
|
|
48
|
+
export declare function eventsForCurrentRun(events: Event[], currentInvocationId: string): Event[];
|
|
49
|
+
/**
|
|
50
|
+
* Scans session events and reconstructs per-node state (outputs, routes, raised
|
|
51
|
+
* interrupts, and resolved interrupt responses).
|
|
52
|
+
*
|
|
53
|
+
* When `parentPath` is given, reconstruction is scoped to that path's DIRECT
|
|
54
|
+
* children (keyed by child name), so nested workflows whose nodes share a name
|
|
55
|
+
* do not collide on resume. When omitted, nodes are keyed by their path leaf
|
|
56
|
+
* (utility mode, robust to author rewrite).
|
|
57
|
+
*/
|
|
58
|
+
export declare function reconstructNodeStates(events: Event[], parentPath?: string): Map<string, RehydratedNode>;
|
|
59
|
+
/**
|
|
60
|
+
* Like {@link reconstructNodeStates} but keyed by the full node path
|
|
61
|
+
* (`wf.node@runId`), so distinct dynamic (`ctx.runNode`) iterations are tracked
|
|
62
|
+
* separately for per-run resume/dedup.
|
|
63
|
+
*/
|
|
64
|
+
export declare function reconstructNodeStatesByPath(events: Event[]): Map<string, RehydratedNode>;
|
|
65
|
+
/**
|
|
66
|
+
* Every interrupt raised in `events` that now has an accepted reply, as
|
|
67
|
+
* interrupt id -> value.
|
|
68
|
+
*
|
|
69
|
+
* Flat and unscoped, unlike {@link reconstructNodeStates}: interrupt ids are
|
|
70
|
+
* unique, and a reply has to reach whoever raised it however deep that sits. A
|
|
71
|
+
* dynamic (`ctx.runNode`) child or a nested workflow's leaf is keyed out of the
|
|
72
|
+
* per-parent view, so a scoped map silently drops its answer and the run pauses
|
|
73
|
+
* on the same question forever.
|
|
74
|
+
*
|
|
75
|
+
* A reply that does not match the schema its interrupt declared resolves
|
|
76
|
+
* nothing. It throws while it is the turn being processed, so the client hears
|
|
77
|
+
* about it once, and is skipped on every replay after that (see
|
|
78
|
+
* {@link interruptResponseMismatch}).
|
|
79
|
+
*/
|
|
80
|
+
export declare function resolvedInterruptResponses(events: Event[]): Map<string, unknown>;
|
|
81
|
+
/**
|
|
82
|
+
* Reconstructs each node's prior runs in order, rather than merging them into
|
|
83
|
+
* one record per node.
|
|
84
|
+
*
|
|
85
|
+
* A node the graph routes back to runs more than once, and a pause can fall
|
|
86
|
+
* between two of its runs — the revise loop in the request-input samples pauses
|
|
87
|
+
* on `request_human_review@1`, resumes, and pauses again on `@2`. Merged into a
|
|
88
|
+
* single record those two runs are indistinguishable, and the resumed turn
|
|
89
|
+
* replays the first run's answer forever. `google/adk-python` avoids this by
|
|
90
|
+
* keying its recovered executions on `name@run_id`; TypeScript node paths carry
|
|
91
|
+
* no run id for static graph nodes, so the runs are recovered positionally
|
|
92
|
+
* instead: the Nth activation in the resumed turn matches the Nth prior run.
|
|
93
|
+
*
|
|
94
|
+
* A run is closed once it has produced an output, a route, or an interrupt, so
|
|
95
|
+
* the next event for that node opens the next run. Events a run emits before
|
|
96
|
+
* that (messages, state deltas) accumulate into the run in progress.
|
|
97
|
+
*/
|
|
98
|
+
export declare function reconstructNodeRuns(events: Event[], parentPath?: string): Map<string, RehydratedNode[]>;
|
|
99
|
+
/**
|
|
100
|
+
* Whether a rehydrated node can be fast-forwarded on resume: it produced a
|
|
101
|
+
* result — an output or a route — and all of its raised interrupts have been
|
|
102
|
+
* resolved.
|
|
103
|
+
*/
|
|
104
|
+
export declare function isFastForwardable(node: RehydratedNode): boolean;
|
|
105
|
+
/**
|
|
106
|
+
* Builds the completion result for a fast-forwarded (cached) node on resume.
|
|
107
|
+
* The node's body is not re-run and its events are NOT re-emitted (they already
|
|
108
|
+
* exist in the session), so this returns a bare {@link NodeResult} rather than a
|
|
109
|
+
* live {@link NodeContext} — the honest type for "cached output, no behaviour".
|
|
110
|
+
*/
|
|
111
|
+
export declare function makeFastForwardResult(parent: NodeContext, prior: RehydratedNode): NodeResult;
|
|
112
|
+
/** Extracts the node name (leaf, without run id) from a dotted node path. */
|
|
113
|
+
export declare function nodeNameFromPath(path: string): string;
|
|
114
|
+
/**
|
|
115
|
+
* Unwraps a `{result: value}` FunctionResponse envelope to the bare value.
|
|
116
|
+
*
|
|
117
|
+
* A string value is JSON-parsed when it parses, because the envelope does not
|
|
118
|
+
* say whether the text is structured: a client answering a `RequestInput` that
|
|
119
|
+
* declared a `responseSchema` sends the object as text (the web frontend wraps
|
|
120
|
+
* whatever the user submitted as `{result: text}`), and the node expects the
|
|
121
|
+
* object back. Text that is not JSON — "approve", "shorter" — is returned
|
|
122
|
+
* as-is. That is parity with Python's `_unwrap_response`.
|
|
123
|
+
*
|
|
124
|
+
* `responseSchema`, when the interrupt declared one, decides whether parsing
|
|
125
|
+
* applies at all. Parsing text the schema asked for as text is destructive
|
|
126
|
+
* rather than helpful: an answer of "42" to a `z.string()` interrupt reached
|
|
127
|
+
* the node as the number 42 and crashed it on the first string method, and
|
|
128
|
+
* every JSON literal did the same — "true", "null", "1e3". So a schema that
|
|
129
|
+
* accepts a string keeps the text verbatim, and only a schema that cannot
|
|
130
|
+
* (an object, an array, a number) still parses.
|
|
131
|
+
*/
|
|
132
|
+
export declare function unwrapResponse(response: unknown, responseSchema?: unknown): unknown;
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2026 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Utility functions for retrying nodes in a workflow.
|
|
8
|
+
*
|
|
9
|
+
* Ported from `google/adk-python` `workflow/utils/_retry_utils.py`.
|
|
10
|
+
*/
|
|
11
|
+
import { NodeState } from '../node_state.js';
|
|
12
|
+
import { PreparedRetryConfig } from '../retry_config.js';
|
|
13
|
+
/**
|
|
14
|
+
* Resolves every runtime name a thrown value can be matched by: its class name,
|
|
15
|
+
* as Python's `type(exception).__name__` gives, and any `name` assigned on top
|
|
16
|
+
* of it. A subclass that never sets `this.name` inherits `'Error'`, so the two
|
|
17
|
+
* disagree exactly when matching on one alone would miss.
|
|
18
|
+
*/
|
|
19
|
+
export declare function errorNames(error: unknown): string[];
|
|
20
|
+
/**
|
|
21
|
+
* Resolves the most specific runtime name of a thrown value, for reporting.
|
|
22
|
+
* Mirrors Python's `type(exception).__name__`, preferring an assigned `name`
|
|
23
|
+
* only when the class name carries nothing more than `Error`.
|
|
24
|
+
*/
|
|
25
|
+
export declare function errorName(error: unknown): string;
|
|
26
|
+
/** Parameters for {@link shouldRetryNode}. */
|
|
27
|
+
export interface ShouldRetryNodeParams {
|
|
28
|
+
/** The error thrown by the node. */
|
|
29
|
+
error: unknown;
|
|
30
|
+
/** The node's prepared (normalized) retry configuration. */
|
|
31
|
+
retryConfig: PreparedRetryConfig;
|
|
32
|
+
/** The current node state (its `attemptCount` is 1-based). */
|
|
33
|
+
nodeState: NodeState;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Checks if a failed node should be retried based on its retry config.
|
|
37
|
+
*/
|
|
38
|
+
export declare function shouldRetryNode({ error, retryConfig, nodeState, }: ShouldRetryNodeParams): boolean;
|
|
39
|
+
/** Parameters for {@link getRetryDelaySeconds}. */
|
|
40
|
+
export interface GetRetryDelaySecondsParams {
|
|
41
|
+
/** The node's prepared (normalized) retry configuration. */
|
|
42
|
+
retryConfig: PreparedRetryConfig;
|
|
43
|
+
/**
|
|
44
|
+
* The current node state (its `attemptCount` is the 1-based attempt number
|
|
45
|
+
* that just failed).
|
|
46
|
+
*/
|
|
47
|
+
nodeState: NodeState;
|
|
48
|
+
/** Injectable uniform RNG in [0, 1) for deterministic testing. */
|
|
49
|
+
randomFn?: () => number;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Calculates the delay, in seconds, before retrying a node.
|
|
53
|
+
*/
|
|
54
|
+
export declare function getRetryDelaySeconds({ retryConfig, nodeState, randomFn, }: GetRetryDelaySecondsParams): number;
|
|
@@ -0,0 +1,76 @@
|
|
|
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 { SchemaLike } from '../../utils/schema.js';
|
|
8
|
+
import { BaseNode } from '../base_node.js';
|
|
9
|
+
import { NodeLike } from '../graph.js';
|
|
10
|
+
import { RetryConfig } from '../retry_config.js';
|
|
11
|
+
/**
|
|
12
|
+
* Property overrides applied when building a node from a {@link NodeLike}.
|
|
13
|
+
*/
|
|
14
|
+
export interface BuildNodeOptions {
|
|
15
|
+
name?: string;
|
|
16
|
+
description?: string;
|
|
17
|
+
rerunOnResume?: boolean;
|
|
18
|
+
retryConfig?: RetryConfig;
|
|
19
|
+
timeout?: number;
|
|
20
|
+
inputSchema?: SchemaLike;
|
|
21
|
+
outputSchema?: SchemaLike;
|
|
22
|
+
stateSchema?: SchemaLike;
|
|
23
|
+
authConfig?: AuthConfig;
|
|
24
|
+
/** Runs the node's subtree in an isolated conversation scope. */
|
|
25
|
+
isolationScope?: string | true;
|
|
26
|
+
/** If true, wrap the built node in a parallel worker. */
|
|
27
|
+
parallelWorker?: boolean;
|
|
28
|
+
/** Concurrency limit for the parallel worker (requires `parallelWorker`). */
|
|
29
|
+
maxParallelWorkers?: number;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Converts a matched {@link NodeLike} value into a concrete {@link BaseNode}.
|
|
33
|
+
*
|
|
34
|
+
* Builders are wired into the static {@link NODE_BUILDERS} list (in
|
|
35
|
+
* `node_builders.ts`) and consulted by {@link buildNode} / {@link isNodeLike} in
|
|
36
|
+
* order — first match wins. Keeping them in one explicit list (rather than a
|
|
37
|
+
* runtime registry) means no global mutable state and no import-order side
|
|
38
|
+
* effects: `node_builders.ts` imports the concrete node modules, and the engine
|
|
39
|
+
* core imports that one list.
|
|
40
|
+
*/
|
|
41
|
+
export interface NodeBuilder {
|
|
42
|
+
/** Returns whether this builder can convert `value` into a node. */
|
|
43
|
+
match(value: unknown): boolean;
|
|
44
|
+
/** Builds a node from a value this builder previously matched. */
|
|
45
|
+
build(value: NodeLike, options: BuildNodeOptions): BaseNode;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Wraps an already-built node in a parallel worker. Provided by the
|
|
49
|
+
* `parallel_worker` node module via {@link PARALLEL_WORKER_FACTORY}.
|
|
50
|
+
*
|
|
51
|
+
* `retryConfig`/`timeout` are intentionally not forwarded to the wrapper: they
|
|
52
|
+
* apply to the inner node (per item), so the two levels don't compose.
|
|
53
|
+
*/
|
|
54
|
+
export type ParallelWorkerFactory = (inner: BaseNode, options: {
|
|
55
|
+
maxParallelWorkers?: number;
|
|
56
|
+
}) => BaseNode;
|
|
57
|
+
/**
|
|
58
|
+
* Returns whether a value is a plain object literal (a `RoutingMap`) rather than
|
|
59
|
+
* a class instance such as a node/tool/agent.
|
|
60
|
+
*/
|
|
61
|
+
export declare function isPlainObject(value: unknown): boolean;
|
|
62
|
+
/**
|
|
63
|
+
* Returns whether a value can be converted into a workflow node via
|
|
64
|
+
* {@link buildNode}: the `'START'` sentinel, an existing {@link BaseNode}, or a
|
|
65
|
+
* value matched by a registered {@link NodeBuilder}.
|
|
66
|
+
*/
|
|
67
|
+
export declare function isNodeLike(value: unknown): value is NodeLike;
|
|
68
|
+
/**
|
|
69
|
+
* Converts a {@link NodeLike} into a concrete {@link BaseNode}.
|
|
70
|
+
*
|
|
71
|
+
* Handles the `'START'` sentinel and existing {@link BaseNode} instances
|
|
72
|
+
* directly — an agent is one, so it goes into the graph as itself; every other
|
|
73
|
+
* value is delegated to the registered {@link NodeBuilder}s (function →
|
|
74
|
+
* `FunctionNode`, tool → `ToolNode`).
|
|
75
|
+
*/
|
|
76
|
+
export declare function buildNode(nodeLike: NodeLike, options?: BuildNodeOptions): BaseNode;
|
|
@@ -0,0 +1,115 @@
|
|
|
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, BaseNodeConfig } from './base_node.js';
|
|
8
|
+
import { EdgeItem, Graph } from './graph.js';
|
|
9
|
+
import { NodeContext } from './node_context.js';
|
|
10
|
+
/**
|
|
11
|
+
* A unique symbol branding {@link Workflow} instances.
|
|
12
|
+
*
|
|
13
|
+
* `isWorkflow` matches on this brand rather than `instanceof` so a workflow
|
|
14
|
+
* built by another copy of adk-js in the same runtime is still recognised —
|
|
15
|
+
* mirroring the `Symbol.for('google.adk.*')` brands used across ADK.
|
|
16
|
+
*/
|
|
17
|
+
declare const WORKFLOW_SIGNATURE_SYMBOL: unique symbol;
|
|
18
|
+
/**
|
|
19
|
+
* An imperative workflow entry point. Receives the workflow's node context and
|
|
20
|
+
* input, drives execution via `ctx.runNode(...)`, and returns the workflow
|
|
21
|
+
* output. Mutually exclusive with `edges`.
|
|
22
|
+
*/
|
|
23
|
+
export type DynamicEntry = (ctx: NodeContext, input: unknown) => unknown | Promise<unknown>;
|
|
24
|
+
/**
|
|
25
|
+
* Configuration for a {@link Workflow}.
|
|
26
|
+
*
|
|
27
|
+
* A workflow is driven either by a static `edges` graph or by an imperative
|
|
28
|
+
* `dynamicEntry` function — exactly one is required, and the two are mutually
|
|
29
|
+
* exclusive. The type is a discriminated union so that constraint is enforced at
|
|
30
|
+
* compile time (the runtime constructor keeps the equivalent throws for JS
|
|
31
|
+
* callers).
|
|
32
|
+
*/
|
|
33
|
+
export type WorkflowConfig = BaseNodeConfig & {
|
|
34
|
+
/**
|
|
35
|
+
* Maximum number of graph-scheduled nodes running in parallel. `undefined`
|
|
36
|
+
* means unlimited; must be a positive integer otherwise. Does not throttle
|
|
37
|
+
* dynamic (`ctx.runNode`) children.
|
|
38
|
+
*/
|
|
39
|
+
maxConcurrency?: number;
|
|
40
|
+
} & ({
|
|
41
|
+
/** Edge definitions used to build the workflow graph. */
|
|
42
|
+
edges: EdgeItem[];
|
|
43
|
+
dynamicEntry?: never;
|
|
44
|
+
} | {
|
|
45
|
+
/**
|
|
46
|
+
* An imperative entry function driving execution via `ctx.runNode(...)`.
|
|
47
|
+
* Mutually exclusive with `edges`.
|
|
48
|
+
*/
|
|
49
|
+
dynamicEntry: DynamicEntry;
|
|
50
|
+
edges?: never;
|
|
51
|
+
});
|
|
52
|
+
/**
|
|
53
|
+
* A graph-based workflow node. `runImpl()` IS the orchestration loop:
|
|
54
|
+
* SETUP (seed START triggers) → LOOP (schedule ready nodes, handle
|
|
55
|
+
* completions) → FINALIZE (collect the terminal output).
|
|
56
|
+
*
|
|
57
|
+
* Ported (Phase 2 subset) from `google/adk-python` `workflow/_workflow.py`.
|
|
58
|
+
* Replay/checkpointing, dynamic scheduling, and task/chat isolation scopes are
|
|
59
|
+
* added in later phases; hook points are marked with TODO(phase-N).
|
|
60
|
+
*/
|
|
61
|
+
export declare class Workflow extends BaseNode {
|
|
62
|
+
/** Brand identifying this object as a {@link Workflow} (see `isWorkflow`). */
|
|
63
|
+
readonly [WORKFLOW_SIGNATURE_SYMBOL] = true;
|
|
64
|
+
readonly graph?: Graph;
|
|
65
|
+
readonly dynamicEntry?: DynamicEntry;
|
|
66
|
+
readonly maxConcurrency?: number;
|
|
67
|
+
constructor(config: WorkflowConfig);
|
|
68
|
+
protected runImpl(ctx: NodeContext, nodeInput: unknown): AsyncGenerator<Event, void, void>;
|
|
69
|
+
/**
|
|
70
|
+
* The orchestration body, wrapped by {@link runImpl} so its workflow-scoped
|
|
71
|
+
* abort controller is always disposed.
|
|
72
|
+
*/
|
|
73
|
+
private orchestrate;
|
|
74
|
+
/**
|
|
75
|
+
* Runs an imperative `dynamicEntry` workflow. The entry drives execution via
|
|
76
|
+
* `ctx.runNode(...)` (routed through the scheduler) and returns the output.
|
|
77
|
+
*/
|
|
78
|
+
private runDynamicEntry;
|
|
79
|
+
/**
|
|
80
|
+
* Merges resolved interrupt responses from prior session events into
|
|
81
|
+
* `ctx.resumeInputs`, so waiting nodes (which read `ctx.resumeInputs[id]`)
|
|
82
|
+
* resume with the user's response. Shared by child contexts via propagation.
|
|
83
|
+
*
|
|
84
|
+
* Taken from the events rather than from `rehydrated`, because that view is
|
|
85
|
+
* scoped to this workflow's direct children: an interrupt raised deeper — by
|
|
86
|
+
* a `ctx.runNode` child, or inside a nested workflow — is keyed out of it,
|
|
87
|
+
* and its answer would never reach the node waiting on it.
|
|
88
|
+
*/
|
|
89
|
+
private applyResumeInputs;
|
|
90
|
+
private seedStartTriggers;
|
|
91
|
+
private runLoop;
|
|
92
|
+
private reportNodeError;
|
|
93
|
+
private scheduleReadyNodes;
|
|
94
|
+
private atConcurrencyLimit;
|
|
95
|
+
private prepareNodeStateForStarting;
|
|
96
|
+
private startNodeTask;
|
|
97
|
+
private handleCompletion;
|
|
98
|
+
private bufferDownstreamTriggers;
|
|
99
|
+
private collectRemainingInterrupts;
|
|
100
|
+
private finalize;
|
|
101
|
+
private pushTrigger;
|
|
102
|
+
private popTrigger;
|
|
103
|
+
private getStaticNode;
|
|
104
|
+
private cleanupPending;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Type guard for {@link Workflow}.
|
|
108
|
+
*
|
|
109
|
+
* Matches on the `google.adk.workflow.workflow` brand rather than `instanceof`
|
|
110
|
+
* so it stays correct across package copies — two copies of adk-js in one
|
|
111
|
+
* runtime would fail an `instanceof` check between them. Named rather than
|
|
112
|
+
* `{@link}`ed because the brand itself is internal, and this guard is public.
|
|
113
|
+
*/
|
|
114
|
+
export declare function isWorkflow(value: unknown): value is Workflow;
|
|
115
|
+
export {};
|