@google/adk 1.5.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 +17 -4
- 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 -11
- package/dist/cjs/a2a/auth.js +68 -0
- package/dist/cjs/a2a/event_converter_utils.js +50 -15
- 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 +58 -23
- 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 +536 -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 +8 -4
- 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 +11 -25
- 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 +8 -3
- 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 +19 -11
- 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 +19 -5
- 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 +31 -14
- package/dist/cjs/common.js +112 -1
- package/dist/cjs/context/agent_controlled_context_compactor.js +7 -13
- package/dist/cjs/context/anchored_context_compactor.js +5 -2
- package/dist/cjs/context/compaction_utils.js +17 -2
- package/dist/cjs/context/summarizers/llm_summarizer.js +5 -2
- package/dist/cjs/context/token_based_context_compactor.js +11 -23
- 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 -22
- 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 +21 -4
- package/dist/cjs/memory/vertex_ai_memory_bank_service.js +20 -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 +43 -7
- 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 +226 -29
- package/dist/cjs/sessions/base_session_service.js +21 -5
- 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 +30 -22
- 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 +132 -25
- package/dist/cjs/skills/gcp_skill_registry.js +2 -0
- package/dist/cjs/skills/loader.js +62 -16
- 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 +54 -0
- 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 +69 -27
- 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 +56 -0
- 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 +45 -0
- package/dist/cjs/utils/deprecated.js +68 -0
- package/dist/cjs/utils/env_aware_utils.js +56 -13
- package/dist/cjs/utils/error_utils.js +128 -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 +12 -4
- 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 +45 -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 +6 -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 +18 -4
- 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 -16
- package/dist/esm/a2a/auth.js +41 -0
- package/dist/esm/a2a/event_converter_utils.js +51 -15
- 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 +62 -20
- 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 +537 -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 +9 -4
- 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 +12 -25
- 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 +9 -3
- 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 +20 -11
- 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 +20 -5
- 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 +31 -13
- package/dist/esm/common.js +113 -4
- package/dist/esm/context/agent_controlled_context_compactor.js +8 -13
- package/dist/esm/context/anchored_context_compactor.js +6 -2
- package/dist/esm/context/compaction_utils.js +16 -1
- package/dist/esm/context/summarizers/llm_summarizer.js +6 -2
- package/dist/esm/context/token_based_context_compactor.js +16 -24
- 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 -13
- 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 +22 -4
- package/dist/esm/memory/vertex_ai_memory_bank_service.js +25 -3
- 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 +43 -7
- 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 +233 -31
- package/dist/esm/sessions/base_session_service.js +22 -5
- 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 +31 -22
- 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 +136 -26
- package/dist/esm/skills/gcp_skill_registry.js +2 -0
- package/dist/esm/skills/loader.js +63 -16
- 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 +27 -0
- 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 +80 -30
- 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 +29 -0
- 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 +18 -0
- package/dist/esm/utils/deprecated.js +40 -0
- package/dist/esm/utils/env_aware_utils.js +56 -13
- package/dist/esm/utils/error_utils.js +101 -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 +13 -4
- 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 +18 -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 +7 -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/auth.d.ts +30 -0
- package/dist/types/a2a/event_converter_utils.d.ts +4 -1
- 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/auth/credential_service/in_memory_credential_service.d.ts +11 -0
- package/dist/types/code_executors/unsafe_local_code_executor.d.ts +5 -1
- package/dist/types/common.d.ts +20 -8
- package/dist/types/context/agent_controlled_context_compactor.d.ts +0 -1
- package/dist/types/context/compaction_utils.d.ts +8 -0
- package/dist/types/context/token_based_context_compactor.d.ts +0 -1
- 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 +6 -13
- package/dist/types/memory/in_memory_memory_service.d.ts +11 -0
- 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 +39 -2
- 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 +10 -2
- package/dist/types/sessions/in_memory_session_service.d.ts +9 -0
- package/dist/types/sessions/state.d.ts +34 -1
- package/dist/types/sessions/state_write_order.d.ts +39 -0
- package/dist/types/sessions/vertex_ai_session_service.d.ts +19 -1
- package/dist/types/skills/loader.d.ts +5 -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/get_user_choice_tool.d.ts +14 -0
- 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 +20 -0
- 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/crypto_shim.d.ts +16 -0
- package/dist/types/utils/deprecated.d.ts +21 -0
- package/dist/types/utils/env_aware_utils.d.ts +39 -0
- package/dist/types/utils/error_utils.d.ts +18 -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/output_schema_utils.d.ts +18 -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 +5 -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 +18 -4
- 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 -16
- package/dist/web/a2a/auth.js +41 -0
- package/dist/web/a2a/event_converter_utils.js +50 -15
- 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 +62 -20
- 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 +631 -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 +8 -4
- 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 +12 -25
- 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 +9 -3
- 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 +20 -11
- 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 +20 -5
- 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 +31 -13
- package/dist/web/common.js +113 -4
- package/dist/web/context/agent_controlled_context_compactor.js +8 -13
- package/dist/web/context/anchored_context_compactor.js +5 -2
- package/dist/web/context/compaction_utils.js +16 -1
- package/dist/web/context/summarizers/llm_summarizer.js +6 -2
- package/dist/web/context/token_based_context_compactor.js +16 -24
- 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 -13
- 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 +22 -4
- package/dist/web/memory/vertex_ai_memory_bank_service.js +24 -3
- 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 +43 -7
- 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 +249 -31
- package/dist/web/sessions/base_session_service.js +22 -5
- 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 +31 -22
- 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 +142 -26
- package/dist/web/skills/gcp_skill_registry.js +2 -0
- package/dist/web/skills/loader.js +62 -16
- 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 +27 -0
- 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 +80 -30
- 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 +29 -0
- 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 +18 -0
- package/dist/web/utils/deprecated.js +40 -0
- package/dist/web/utils/env_aware_utils.js +56 -13
- package/dist/web/utils/error_utils.js +101 -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 +12 -4
- 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 +18 -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 +7 -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,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2026 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import type { SchemaLike } from '../utils/schema.js';
|
|
7
|
+
/**
|
|
8
|
+
* A unique symbol branding {@link RequestInput} instances.
|
|
9
|
+
*
|
|
10
|
+
* {@link isRequestInput} matches on this brand rather than `instanceof` so a
|
|
11
|
+
* request built by another copy of adk-js in the same runtime is still
|
|
12
|
+
* recognised (an `instanceof` check fails across package copies). This matters
|
|
13
|
+
* because the guard gates the HITL interrupt path in `BaseNode.run`: a missed
|
|
14
|
+
* match would silently stringify the request into a text part instead of
|
|
15
|
+
* pausing the workflow. Mirrors the `Symbol.for('google.adk.*')` brands used
|
|
16
|
+
* across ADK.
|
|
17
|
+
*/
|
|
18
|
+
declare const REQUEST_INPUT_SIGNATURE_SYMBOL: unique symbol;
|
|
19
|
+
/** Parameters for constructing a {@link RequestInput}. */
|
|
20
|
+
export interface RequestInputParams {
|
|
21
|
+
/** The interrupt id (usually a function-call id). Auto-generated if omitted. */
|
|
22
|
+
interruptId?: string;
|
|
23
|
+
/** Custom payload provided for resuming. */
|
|
24
|
+
payload?: unknown;
|
|
25
|
+
/** A message to display to the user when requesting input. */
|
|
26
|
+
message?: string;
|
|
27
|
+
/**
|
|
28
|
+
* The expected shape of the reply (Zod v3/v4 or genai `Schema`).
|
|
29
|
+
*
|
|
30
|
+
* It tells a client what to collect — the dev UI renders a form from it —
|
|
31
|
+
* and a *structured* reply is checked against it on resume. Nothing coerces
|
|
32
|
+
* a human's answer into the shape: a plain-text reply is routed to the
|
|
33
|
+
* interrupt as-is and is not checked, so put an agent node after the pause
|
|
34
|
+
* if you need free text normalized.
|
|
35
|
+
*/
|
|
36
|
+
responseSchema?: SchemaLike;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* A request for input from the user, yielded/returned by a node to pause a
|
|
40
|
+
* workflow (Human-in-the-Loop). The framework converts it to an interrupt
|
|
41
|
+
* event; the workflow surfaces the interrupt id to the caller, which later
|
|
42
|
+
* resumes by providing `resumeInputs[interruptId]`.
|
|
43
|
+
*
|
|
44
|
+
* A client answers in one of two ways:
|
|
45
|
+
*
|
|
46
|
+
* - **Plain text.** A text turn is routed to every pending interrupt as-is.
|
|
47
|
+
* This is what the interactive CLI sends, and the dev UI whenever it has no
|
|
48
|
+
* schema to build a form from.
|
|
49
|
+
* - **A `functionResponse`** named `adk_request_input`, carrying the interrupt
|
|
50
|
+
* id. Wrap a bare value as `{result: <value>}` — that envelope is unwrapped
|
|
51
|
+
* for you, and what it holds counts as plain text. Any other object is
|
|
52
|
+
* delivered to the node unchanged, so it must already match
|
|
53
|
+
* {@link RequestInputParams.responseSchema} when one is set.
|
|
54
|
+
*
|
|
55
|
+
* Ported from `google/adk-python` `events/request_input.py`.
|
|
56
|
+
*/
|
|
57
|
+
export declare class RequestInput {
|
|
58
|
+
/** Brand identifying this object as a {@link RequestInput} (see {@link isRequestInput}). */
|
|
59
|
+
readonly [REQUEST_INPUT_SIGNATURE_SYMBOL] = true;
|
|
60
|
+
readonly interruptId: string;
|
|
61
|
+
readonly payload?: unknown;
|
|
62
|
+
readonly message?: string;
|
|
63
|
+
readonly responseSchema?: SchemaLike;
|
|
64
|
+
constructor(params?: RequestInputParams);
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Type guard for {@link RequestInput}.
|
|
68
|
+
*
|
|
69
|
+
* Matches on the `REQUEST_INPUT_SIGNATURE_SYMBOL` brand rather than
|
|
70
|
+
* `instanceof` so it stays correct across package copies (see the brand's doc).
|
|
71
|
+
*/
|
|
72
|
+
export declare function isRequestInput(value: unknown): value is RequestInput;
|
|
73
|
+
export {};
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2026 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* An error constructor usable in {@link RetryConfig.exceptions}.
|
|
8
|
+
*/
|
|
9
|
+
export type ErrorClass = new (...args: never[]) => Error;
|
|
10
|
+
/**
|
|
11
|
+
* Configuration for retrying a node.
|
|
12
|
+
*
|
|
13
|
+
* Ported from `google/adk-python` `workflow/_retry_config.py`. Delays are
|
|
14
|
+
* expressed in **seconds** (fractions allowed) to match the Python semantics
|
|
15
|
+
* and keep configuration portable across runtimes. Unset fields fall back to
|
|
16
|
+
* the documented defaults inside the retry utilities.
|
|
17
|
+
*/
|
|
18
|
+
export interface RetryConfig {
|
|
19
|
+
/**
|
|
20
|
+
* Maximum number of attempts, including the original request. If 0 or 1, it
|
|
21
|
+
* means no retries. If not specified, defaults to 5.
|
|
22
|
+
*/
|
|
23
|
+
maxAttempts?: number;
|
|
24
|
+
/**
|
|
25
|
+
* Initial delay before the first retry, in seconds. If not specified,
|
|
26
|
+
* defaults to 1.0 second.
|
|
27
|
+
*/
|
|
28
|
+
initialDelay?: number;
|
|
29
|
+
/**
|
|
30
|
+
* Maximum delay between retries, in seconds. If not specified, defaults to
|
|
31
|
+
* 60.0 seconds.
|
|
32
|
+
*/
|
|
33
|
+
maxDelay?: number;
|
|
34
|
+
/**
|
|
35
|
+
* Multiplier by which the delay increases after each attempt. If not
|
|
36
|
+
* specified, defaults to 2.0.
|
|
37
|
+
*/
|
|
38
|
+
backoffFactor?: number;
|
|
39
|
+
/**
|
|
40
|
+
* Randomness factor for the delay. If not specified, defaults to 1.0. Use 0.0
|
|
41
|
+
* to remove randomness.
|
|
42
|
+
*/
|
|
43
|
+
jitter?: number;
|
|
44
|
+
/**
|
|
45
|
+
* Exceptions to retry on. Accepts error class names as strings (e.g.
|
|
46
|
+
* `['TypeError']`) or error classes directly (e.g. `[TypeError]`).
|
|
47
|
+
* `undefined`/`null` means retry on all errors.
|
|
48
|
+
*/
|
|
49
|
+
exceptions?: Array<string | ErrorClass> | null;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Normalizes the `exceptions` field of a {@link RetryConfig} to a list of error
|
|
53
|
+
* class name strings, mirroring Python's `field_validator`.
|
|
54
|
+
*
|
|
55
|
+
* @returns The list of class-name strings, or `undefined` to mean "retry on all
|
|
56
|
+
* errors".
|
|
57
|
+
*/
|
|
58
|
+
export declare function normalizeRetryExceptions(exceptions?: Array<string | ErrorClass> | null): string[] | undefined;
|
|
59
|
+
/**
|
|
60
|
+
* A {@link RetryConfig} whose `exceptions` filter has been normalized to error
|
|
61
|
+
* class-name strings once, up front.
|
|
62
|
+
*
|
|
63
|
+
* Produced by {@link prepareRetryConfig} when a node accepts its config, so the
|
|
64
|
+
* retry hot path neither re-normalizes on every failure nor throws on a
|
|
65
|
+
* malformed config from inside the retry loop.
|
|
66
|
+
*/
|
|
67
|
+
export interface PreparedRetryConfig {
|
|
68
|
+
readonly maxAttempts?: number;
|
|
69
|
+
readonly initialDelay?: number;
|
|
70
|
+
readonly maxDelay?: number;
|
|
71
|
+
readonly backoffFactor?: number;
|
|
72
|
+
readonly jitter?: number;
|
|
73
|
+
/** Normalized exception names; `undefined` means retry on all errors. */
|
|
74
|
+
readonly exceptions?: readonly string[];
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Validates and normalizes a {@link RetryConfig} once, at config-acceptance
|
|
78
|
+
* time (i.e. when a node is constructed).
|
|
79
|
+
*
|
|
80
|
+
* Throws if `exceptions` contains a malformed entry, surfacing the
|
|
81
|
+
* misconfiguration at construction rather than masking a node's real error from
|
|
82
|
+
* inside the retry path.
|
|
83
|
+
*/
|
|
84
|
+
export declare function prepareRetryConfig(config: RetryConfig): PreparedRetryConfig;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2026 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { LlmAgent } from '../agents/llm_agent.js';
|
|
7
|
+
import { Event } from '../events/event.js';
|
|
8
|
+
import { NodeContext } from './node_context.js';
|
|
9
|
+
/**
|
|
10
|
+
* Runs an {@link LlmAgent} as a workflow node: the node input is appended as a
|
|
11
|
+
* user turn, the agent runs, and its reply becomes the node output.
|
|
12
|
+
*
|
|
13
|
+
* `LlmAgent.runImpl` is the only caller. It is a free function rather than a
|
|
14
|
+
* wrapper node because an agent is already a `BaseNode` — putting a second node
|
|
15
|
+
* around it meant the graph held something that was not the agent the caller
|
|
16
|
+
* passed in, and the agent's own node configuration (`timeout`, `rerunOnResume`,
|
|
17
|
+
* …) was dropped on the floor. adk-python makes the same split: no wrapper
|
|
18
|
+
* class, and `LlmAgent._run_impl` delegating to `run_llm_agent_as_node` in
|
|
19
|
+
* `workflow/_llm_agent_wrapper.py`.
|
|
20
|
+
*
|
|
21
|
+
* Only `LlmAgent` needs this. Any other agent run as a node keeps
|
|
22
|
+
* `BaseAgent.runImpl`, which is plain delegation to `runAsync` — an agent whose
|
|
23
|
+
* input is its conversation has nothing to inject and no model text to promote.
|
|
24
|
+
*
|
|
25
|
+
* `single_turn` and `task` modes are ported; `chat` mode (task delegation via
|
|
26
|
+
* `FinishTaskTool`, isolation scopes) is not yet supported.
|
|
27
|
+
*/
|
|
28
|
+
export declare function runLlmAgentAsNode(agent: LlmAgent, ctx: NodeContext, nodeInput: unknown): AsyncGenerator<Event, void, void>;
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2026 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { BaseAgent } from '../agents/base_agent.js';
|
|
7
|
+
import { InvocationContext } from '../agents/invocation_context.js';
|
|
8
|
+
import { Event } from '../events/event.js';
|
|
9
|
+
import { BaseNode } from './base_node.js';
|
|
10
|
+
import type { RunnableNode } from './graph.js';
|
|
11
|
+
import { Workflow } from './workflow.js';
|
|
12
|
+
/**
|
|
13
|
+
* What can be run as the root of an invocation: an agent, or a `Workflow` the
|
|
14
|
+
* runner drives as a node. See {@link isRunnableRoot}.
|
|
15
|
+
*/
|
|
16
|
+
export type RunnableRoot = BaseAgent | Workflow;
|
|
17
|
+
/** Options for {@link runNodeAsInvocation}. */
|
|
18
|
+
export interface RunNodeAsInvocationOptions {
|
|
19
|
+
/**
|
|
20
|
+
* Author for the event announcing the node's output, when one is needed.
|
|
21
|
+
* Defaults to the node's own name.
|
|
22
|
+
*/
|
|
23
|
+
author?: string;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Runs a node as a whole invocation, turning it into a stream of events.
|
|
27
|
+
*
|
|
28
|
+
* This is the seam between the two execution shapes ADK has. A node is driven
|
|
29
|
+
* by pushing events into a channel while something else drains it; a caller of
|
|
30
|
+
* an invocation expects to pull events out of a generator. Bridging them means
|
|
31
|
+
* three things: give the node a root {@link NodeContext} to run in, derive its
|
|
32
|
+
* input from the user's message, and pump the channel.
|
|
33
|
+
*
|
|
34
|
+
* adk-python does the same work in `Runner._run_node_async`, over
|
|
35
|
+
* `ic._event_queue` rather than a local queue. It lives as a free function
|
|
36
|
+
* rather than a method because the runner is not its only caller: anything that
|
|
37
|
+
* has to run a node as a whole invocation goes through here.
|
|
38
|
+
*/
|
|
39
|
+
export declare function runNodeAsInvocation(node: BaseNode, ic: InvocationContext, options?: RunNodeAsInvocationOptions): AsyncGenerator<Event, void, void>;
|
|
40
|
+
/**
|
|
41
|
+
* Whether a value is already a root, and so is worth handing to
|
|
42
|
+
* {@link asRunnableRoot}.
|
|
43
|
+
*
|
|
44
|
+
* An agent always is. A `Workflow` is because the runner drives it as a node
|
|
45
|
+
* rather than running it through `runAsync`.
|
|
46
|
+
*
|
|
47
|
+
* Used where a root is *discovered* rather than passed — the agent loader
|
|
48
|
+
* sifting a module's exports — so a workflow export is found the same way an
|
|
49
|
+
* agent export is.
|
|
50
|
+
*
|
|
51
|
+
* Deliberately narrower than what {@link asRunnableRoot} accepts: a passed root
|
|
52
|
+
* is a statement of intent, while a discovered one is a guess, and every module
|
|
53
|
+
* exports functions that are not meant to be the app.
|
|
54
|
+
*/
|
|
55
|
+
export declare function isRunnableRoot(value: unknown): value is RunnableRoot;
|
|
56
|
+
/**
|
|
57
|
+
* Normalizes whatever was handed in as a root into a {@link RunnableRoot}.
|
|
58
|
+
*
|
|
59
|
+
* An agent and a workflow are both roots already and pass through as
|
|
60
|
+
* themselves. Anything else node-like — a tool, a plain function, an
|
|
61
|
+
* already-built node — becomes the single node of a one-node workflow, exactly
|
|
62
|
+
* what `edges: [['START', value]]` spells by hand, so `{agent: node}` and
|
|
63
|
+
* `{agent: new Workflow({edges: [['START', node]]})}` are the same request
|
|
64
|
+
* spelled two ways.
|
|
65
|
+
*
|
|
66
|
+
* The value is built before it reaches the graph parser, which would build it
|
|
67
|
+
* anyway, because the built node is what carries the name and description the
|
|
68
|
+
* wrapping workflow takes.
|
|
69
|
+
*
|
|
70
|
+
* @throws if `root` is not something an edge would accept.
|
|
71
|
+
*/
|
|
72
|
+
export declare function asRunnableRoot(root: RunnableNode): RunnableRoot;
|
|
@@ -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;
|