@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
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import {createRequire as topLevelCreateRequire} from 'module';
|
|
2
2
|
const require = topLevelCreateRequire(import.meta.url);
|
|
3
3
|
var __defProp = Object.defineProperty;
|
|
4
|
+
var __defProps = Object.defineProperties;
|
|
5
|
+
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
4
6
|
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
5
7
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
8
|
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
@@ -20,6 +22,8 @@ var __spreadValues = (a, b) => {
|
|
|
20
22
|
}
|
|
21
23
|
return a;
|
|
22
24
|
};
|
|
25
|
+
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
26
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
23
27
|
var __await = function(promise, isYieldStar) {
|
|
24
28
|
this[0] = promise;
|
|
25
29
|
this[1] = isYieldStar;
|
|
@@ -71,7 +75,12 @@ var __forAwait = (obj, it, method) => (it = obj[__knownSymbol("asyncIterator")])
|
|
|
71
75
|
*/
|
|
72
76
|
var _a, _b;
|
|
73
77
|
import { context, trace } from "@opentelemetry/api";
|
|
78
|
+
import { FinishTaskTool } from "../tools/finish_task_tool.js";
|
|
74
79
|
import { FunctionTool } from "../tools/function_tool.js";
|
|
80
|
+
import { AsyncQueue } from "../utils/async_queue.js";
|
|
81
|
+
import { isBaseNode } from "../workflow/base_node.js";
|
|
82
|
+
import { NodeTool } from "../workflow/nodes/node_tool.js";
|
|
83
|
+
import { runLlmAgentAsNode } from "../workflow/run_llm_agent_as_node.js";
|
|
75
84
|
import {
|
|
76
85
|
createEvent,
|
|
77
86
|
createNewEventId,
|
|
@@ -84,12 +93,14 @@ import { isBaseLlm } from "../models/base_llm.js";
|
|
|
84
93
|
import { LLMRegistry } from "../models/registry.js";
|
|
85
94
|
import { isBaseTool } from "../tools/base_tool.js";
|
|
86
95
|
import { logger } from "../utils/logger.js";
|
|
96
|
+
import { canUseOutputSchemaWithTools } from "../utils/output_schema_utils.js";
|
|
87
97
|
import { Context } from "./context.js";
|
|
88
98
|
import {
|
|
89
99
|
runAsyncGeneratorWithOtelContext,
|
|
90
100
|
traceCallLlm,
|
|
91
101
|
tracer
|
|
92
102
|
} from "../telemetry/tracing.js";
|
|
103
|
+
import { parseWithSchema } from "../utils/schema.js";
|
|
93
104
|
import { isZodObject, zodObjectToSchema } from "../utils/simple_zod_to_json.js";
|
|
94
105
|
import { BaseAgent } from "./base_agent.js";
|
|
95
106
|
import {
|
|
@@ -99,6 +110,7 @@ import {
|
|
|
99
110
|
handleFunctionCallsAsync
|
|
100
111
|
} from "./functions.js";
|
|
101
112
|
import { AUTH_PREPROCESSOR } from "../auth/auth_preprocessor.js";
|
|
113
|
+
import { requireAgent } from "./invocation_context.js";
|
|
102
114
|
import { AGENT_TRANSFER_LLM_REQUEST_PROCESSOR } from "./processors/agent_transfer_llm_request_processor.js";
|
|
103
115
|
import { BASIC_LLM_REQUEST_PROCESSOR } from "./processors/basic_llm_request_processor.js";
|
|
104
116
|
import { CODE_EXECUTION_REQUEST_PROCESSOR } from "./processors/code_execution_request_processor.js";
|
|
@@ -108,48 +120,112 @@ import { IDENTITY_LLM_REQUEST_PROCESSOR } from "./processors/identity_llm_reques
|
|
|
108
120
|
import { INSTRUCTIONS_LLM_REQUEST_PROCESSOR } from "./processors/instructions_llm_request_processor.js";
|
|
109
121
|
import { INTERACTIONS_REQUEST_PROCESSOR } from "./processors/interactions_request_processor.js";
|
|
110
122
|
import { REQUEST_CONFIRMATION_LLM_REQUEST_PROCESSOR } from "./processors/request_confirmation_llm_request_processor.js";
|
|
123
|
+
import { REQUEST_INPUT_LLM_REQUEST_PROCESSOR } from "./processors/request_input_llm_request_processor.js";
|
|
111
124
|
import { TOOL_FILTER_REQUEST_PROCESSOR } from "./processors/tool_filter_request_processor.js";
|
|
112
125
|
import { ReadonlyContext } from "./readonly_context.js";
|
|
113
126
|
import { StreamingMode } from "./run_config.js";
|
|
127
|
+
const MAX_LIVE_RECONNECT_ATTEMPTS = 5;
|
|
128
|
+
const TRANSFER_AGENT_DELAY_MS = 1e3;
|
|
129
|
+
const _LiveReconnectSignal = class _LiveReconnectSignal extends Error {
|
|
130
|
+
constructor(reason) {
|
|
131
|
+
super("live reconnect requested: ".concat(reason));
|
|
132
|
+
this.reason = reason;
|
|
133
|
+
this.name = "LiveReconnectSignal";
|
|
134
|
+
}
|
|
135
|
+
};
|
|
136
|
+
__name(_LiveReconnectSignal, "LiveReconnectSignal");
|
|
137
|
+
let LiveReconnectSignal = _LiveReconnectSignal;
|
|
138
|
+
function isRecoverableLiveError(err) {
|
|
139
|
+
var _a2;
|
|
140
|
+
if (err instanceof LiveReconnectSignal) return true;
|
|
141
|
+
if (!(err instanceof Error)) return false;
|
|
142
|
+
const code = err.code;
|
|
143
|
+
if (code === 1006 || code === 1011 || code === 1012) {
|
|
144
|
+
return true;
|
|
145
|
+
}
|
|
146
|
+
const message = (_a2 = err.message) != null ? _a2 : "";
|
|
147
|
+
return /ConnectionClosed|connection closed|ECONNRESET|socket hang up/i.test(
|
|
148
|
+
message
|
|
149
|
+
);
|
|
150
|
+
}
|
|
151
|
+
__name(isRecoverableLiveError, "isRecoverableLiveError");
|
|
152
|
+
function sleep(ms) {
|
|
153
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
154
|
+
}
|
|
155
|
+
__name(sleep, "sleep");
|
|
156
|
+
const LIVE_KEYS = [
|
|
157
|
+
"responseModalities",
|
|
158
|
+
"speechConfig",
|
|
159
|
+
"outputAudioTranscription",
|
|
160
|
+
"inputAudioTranscription",
|
|
161
|
+
"realtimeInputConfig",
|
|
162
|
+
"contextWindowCompression",
|
|
163
|
+
"proactivity",
|
|
164
|
+
"enableAffectiveDialog"
|
|
165
|
+
];
|
|
166
|
+
function applyLiveRunConfig(runConfig, llmRequest) {
|
|
167
|
+
var _a2;
|
|
168
|
+
if (!runConfig) return;
|
|
169
|
+
const liveConfig = (_a2 = llmRequest.liveConnectConfig) != null ? _a2 : llmRequest.liveConnectConfig = {};
|
|
170
|
+
for (const k of LIVE_KEYS) {
|
|
171
|
+
if (runConfig[k] !== void 0) {
|
|
172
|
+
liveConfig[k] = runConfig[k];
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
__name(applyLiveRunConfig, "applyLiveRunConfig");
|
|
114
177
|
const ADK_AGENT_NAME_LABEL_KEY = "adk_agent_name";
|
|
115
178
|
async function convertToolUnionToTools(toolUnion, context2) {
|
|
116
179
|
if (isBaseTool(toolUnion)) {
|
|
117
180
|
return [toolUnion];
|
|
118
181
|
}
|
|
182
|
+
if (isBaseNode(toolUnion)) {
|
|
183
|
+
return [new NodeTool(toolUnion)];
|
|
184
|
+
}
|
|
119
185
|
return await toolUnion.getTools(context2);
|
|
120
186
|
}
|
|
187
|
+
__name(convertToolUnionToTools, "convertToolUnionToTools");
|
|
121
188
|
const LLM_AGENT_SIGNATURE_SYMBOL = Symbol.for("google.adk.llmAgent");
|
|
122
189
|
function isLlmAgent(obj) {
|
|
123
190
|
return typeof obj === "object" && obj !== null && LLM_AGENT_SIGNATURE_SYMBOL in obj && obj[LLM_AGENT_SIGNATURE_SYMBOL] === true;
|
|
124
191
|
}
|
|
125
|
-
|
|
192
|
+
__name(isLlmAgent, "isLlmAgent");
|
|
193
|
+
const _LlmAgent = class _LlmAgent extends (_b = BaseAgent, _a = LLM_AGENT_SIGNATURE_SYMBOL, _b) {
|
|
126
194
|
constructor(config) {
|
|
127
|
-
var _a2, _b2, _c, _d, _e, _f, _g, _h, _i;
|
|
128
|
-
super(config)
|
|
195
|
+
var _a2, _b2, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l;
|
|
196
|
+
super(__spreadProps(__spreadValues({}, config), {
|
|
197
|
+
rerunOnResume: (_a2 = config.rerunOnResume) != null ? _a2 : true,
|
|
198
|
+
waitForOutput: (_b2 = config.waitForOutput) != null ? _b2 : config.mode === "task"
|
|
199
|
+
}));
|
|
129
200
|
/** A unique symbol to identify ADK LLM agent class. */
|
|
130
201
|
this[_a] = true;
|
|
131
202
|
this.model = config.model;
|
|
132
|
-
this.instruction = (
|
|
133
|
-
this.globalInstruction = (
|
|
134
|
-
this.tools = (
|
|
203
|
+
this.instruction = (_c = config.instruction) != null ? _c : "";
|
|
204
|
+
this.globalInstruction = (_d = config.globalInstruction) != null ? _d : "";
|
|
205
|
+
this.tools = (_e = config.tools) != null ? _e : [];
|
|
135
206
|
this.generateContentConfig = config.generateContentConfig;
|
|
136
|
-
this.disallowTransferToParent = (
|
|
137
|
-
this.disallowTransferToPeers = (
|
|
138
|
-
this.includeContents = (
|
|
207
|
+
this.disallowTransferToParent = (_f = config.disallowTransferToParent) != null ? _f : false;
|
|
208
|
+
this.disallowTransferToPeers = (_g = config.disallowTransferToPeers) != null ? _g : false;
|
|
209
|
+
this.includeContents = (_h = config.includeContents) != null ? _h : "default";
|
|
210
|
+
this.includeContentsExplicit = config.includeContents !== void 0;
|
|
211
|
+
this.inputSchemaSource = config.inputSchema;
|
|
212
|
+
this.outputSchemaSource = config.outputSchema;
|
|
139
213
|
this.inputSchema = isZodObject(config.inputSchema) ? zodObjectToSchema(config.inputSchema) : config.inputSchema;
|
|
140
214
|
this.outputSchema = isZodObject(config.outputSchema) ? zodObjectToSchema(config.outputSchema) : config.outputSchema;
|
|
215
|
+
this.mode = config.mode;
|
|
141
216
|
this.outputKey = config.outputKey;
|
|
142
217
|
this.beforeModelCallback = config.beforeModelCallback;
|
|
143
218
|
this.afterModelCallback = config.afterModelCallback;
|
|
144
219
|
this.beforeToolCallback = config.beforeToolCallback;
|
|
145
220
|
this.afterToolCallback = config.afterToolCallback;
|
|
146
221
|
this.codeExecutor = config.codeExecutor;
|
|
147
|
-
this.requestProcessors = (
|
|
222
|
+
this.requestProcessors = (_i = config.requestProcessors) != null ? _i : [
|
|
148
223
|
BASIC_LLM_REQUEST_PROCESSOR,
|
|
149
224
|
AUTH_PREPROCESSOR,
|
|
150
225
|
IDENTITY_LLM_REQUEST_PROCESSOR,
|
|
151
226
|
INSTRUCTIONS_LLM_REQUEST_PROCESSOR,
|
|
152
227
|
REQUEST_CONFIRMATION_LLM_REQUEST_PROCESSOR,
|
|
228
|
+
REQUEST_INPUT_LLM_REQUEST_PROCESSOR,
|
|
153
229
|
CONTENT_REQUEST_PROCESSOR,
|
|
154
230
|
INTERACTIONS_REQUEST_PROCESSOR,
|
|
155
231
|
CODE_EXECUTION_REQUEST_PROCESSOR,
|
|
@@ -171,8 +247,8 @@ class LlmAgent extends (_b = BaseAgent, _a = LLM_AGENT_SIGNATURE_SYMBOL, _b) {
|
|
|
171
247
|
);
|
|
172
248
|
}
|
|
173
249
|
}
|
|
174
|
-
this.responseProcessors = (
|
|
175
|
-
const agentTransferDisabled = this.disallowTransferToParent && this.disallowTransferToPeers && !((
|
|
250
|
+
this.responseProcessors = (_j = config.responseProcessors) != null ? _j : [];
|
|
251
|
+
const agentTransferDisabled = this.disallowTransferToParent && this.disallowTransferToPeers && !((_k = this.subAgents) == null ? void 0 : _k.length);
|
|
176
252
|
if (!agentTransferDisabled) {
|
|
177
253
|
this.requestProcessors.push(AGENT_TRANSFER_LLM_REQUEST_PROCESSOR);
|
|
178
254
|
}
|
|
@@ -194,13 +270,14 @@ class LlmAgent extends (_b = BaseAgent, _a = LLM_AGENT_SIGNATURE_SYMBOL, _b) {
|
|
|
194
270
|
this.generateContentConfig = {};
|
|
195
271
|
}
|
|
196
272
|
if (this.outputSchema) {
|
|
197
|
-
|
|
273
|
+
const transferRequested = config.disallowTransferToParent === false || config.disallowTransferToPeers === false || !!((_l = this.subAgents) == null ? void 0 : _l.length);
|
|
274
|
+
if (transferRequested) {
|
|
198
275
|
logger.warn(
|
|
199
276
|
"Invalid config for agent ".concat(this.name, ": outputSchema cannot co-exist with agent transfer configurations. Setting disallowTransferToParent=true, disallowTransferToPeers=true")
|
|
200
277
|
);
|
|
201
|
-
this.disallowTransferToParent = true;
|
|
202
|
-
this.disallowTransferToPeers = true;
|
|
203
278
|
}
|
|
279
|
+
this.disallowTransferToParent = true;
|
|
280
|
+
this.disallowTransferToPeers = true;
|
|
204
281
|
}
|
|
205
282
|
}
|
|
206
283
|
/**
|
|
@@ -224,6 +301,16 @@ class LlmAgent extends (_b = BaseAgent, _a = LLM_AGENT_SIGNATURE_SYMBOL, _b) {
|
|
|
224
301
|
}
|
|
225
302
|
throw new Error("No model found for ".concat(this.name, "."));
|
|
226
303
|
}
|
|
304
|
+
/**
|
|
305
|
+
* The `finish_task` tool for this agent (task mode). Lazily created and cached
|
|
306
|
+
* so its declaration (derived from `outputSchema`) is stable across turns.
|
|
307
|
+
*/
|
|
308
|
+
get finishTaskTool() {
|
|
309
|
+
if (!this._finishTaskTool) {
|
|
310
|
+
this._finishTaskTool = new FinishTaskTool(this.outputSchema);
|
|
311
|
+
}
|
|
312
|
+
return this._finishTaskTool;
|
|
313
|
+
}
|
|
227
314
|
/**
|
|
228
315
|
* The resolved instruction field to construct instruction for this
|
|
229
316
|
* agent.
|
|
@@ -296,7 +383,7 @@ class LlmAgent extends (_b = BaseAgent, _a = LLM_AGENT_SIGNATURE_SYMBOL, _b) {
|
|
|
296
383
|
* This method is only for use by Agent Development Kit.
|
|
297
384
|
*/
|
|
298
385
|
get canonicalBeforeModelCallbacks() {
|
|
299
|
-
return
|
|
386
|
+
return _LlmAgent.normalizeCallbackArray(this.beforeModelCallback);
|
|
300
387
|
}
|
|
301
388
|
/**
|
|
302
389
|
* The resolved afterModelCallback field as a list of
|
|
@@ -305,7 +392,7 @@ class LlmAgent extends (_b = BaseAgent, _a = LLM_AGENT_SIGNATURE_SYMBOL, _b) {
|
|
|
305
392
|
* This method is only for use by Agent Development Kit.
|
|
306
393
|
*/
|
|
307
394
|
get canonicalAfterModelCallbacks() {
|
|
308
|
-
return
|
|
395
|
+
return _LlmAgent.normalizeCallbackArray(this.afterModelCallback);
|
|
309
396
|
}
|
|
310
397
|
/**
|
|
311
398
|
* The resolved beforeToolCallback field as a list of
|
|
@@ -314,7 +401,7 @@ class LlmAgent extends (_b = BaseAgent, _a = LLM_AGENT_SIGNATURE_SYMBOL, _b) {
|
|
|
314
401
|
* This method is only for use by Agent Development Kit.
|
|
315
402
|
*/
|
|
316
403
|
get canonicalBeforeToolCallbacks() {
|
|
317
|
-
return
|
|
404
|
+
return _LlmAgent.normalizeCallbackArray(this.beforeToolCallback);
|
|
318
405
|
}
|
|
319
406
|
/**
|
|
320
407
|
* The resolved afterToolCallback field as a list of AfterToolCallback.
|
|
@@ -322,7 +409,7 @@ class LlmAgent extends (_b = BaseAgent, _a = LLM_AGENT_SIGNATURE_SYMBOL, _b) {
|
|
|
322
409
|
* This method is only for use by Agent Development Kit.
|
|
323
410
|
*/
|
|
324
411
|
get canonicalAfterToolCallbacks() {
|
|
325
|
-
return
|
|
412
|
+
return _LlmAgent.normalizeCallbackArray(this.afterToolCallback);
|
|
326
413
|
}
|
|
327
414
|
/**
|
|
328
415
|
* Saves the agent's final response to the session state if configured.
|
|
@@ -365,14 +452,55 @@ class LlmAgent extends (_b = BaseAgent, _a = LLM_AGENT_SIGNATURE_SYMBOL, _b) {
|
|
|
365
452
|
if (!resultStr.trim()) {
|
|
366
453
|
return;
|
|
367
454
|
}
|
|
455
|
+
let parsed;
|
|
368
456
|
try {
|
|
369
|
-
|
|
457
|
+
parsed = JSON.parse(resultStr);
|
|
370
458
|
} catch (e) {
|
|
371
459
|
logger.error("Error parsing output for agent ".concat(this.name), e);
|
|
460
|
+
event.actions.stateDelta[this.outputKey] = resultStr;
|
|
461
|
+
return;
|
|
462
|
+
}
|
|
463
|
+
try {
|
|
464
|
+
result = this.validateOutput(parsed);
|
|
465
|
+
} catch (e) {
|
|
466
|
+
logger.error(
|
|
467
|
+
"Output for agent ".concat(this.name, " does not satisfy its output schema"),
|
|
468
|
+
e
|
|
469
|
+
);
|
|
470
|
+
result = parsed;
|
|
372
471
|
}
|
|
373
472
|
}
|
|
374
473
|
event.actions.stateDelta[this.outputKey] = result;
|
|
375
474
|
}
|
|
475
|
+
/**
|
|
476
|
+
* Validates a value against this agent's output schema, in whichever dialect
|
|
477
|
+
* it was declared, and returns the parsed value.
|
|
478
|
+
*
|
|
479
|
+
* Prefers the schema as supplied ({@link outputSchemaSource}) over the genai
|
|
480
|
+
* form derived from it, since the conversion drops constraints Zod can
|
|
481
|
+
* express and genai cannot.
|
|
482
|
+
*
|
|
483
|
+
* @throws if the value does not satisfy the schema.
|
|
484
|
+
*/
|
|
485
|
+
validateOutput(value) {
|
|
486
|
+
var _a2;
|
|
487
|
+
return parseWithSchema((_a2 = this.outputSchemaSource) != null ? _a2 : this.outputSchema, value);
|
|
488
|
+
}
|
|
489
|
+
/**
|
|
490
|
+
* Runs this agent as a workflow node.
|
|
491
|
+
*
|
|
492
|
+
* Where {@link BaseAgent.runImpl} delegates straight to `runAsync`, an
|
|
493
|
+
* `LlmAgent` has a node input to inject into the conversation, instruction
|
|
494
|
+
* placeholders to resolve against it, a reply to promote to node output, and
|
|
495
|
+
* — in `task` mode — a `finish_task` round-trip to drive. All of that lives
|
|
496
|
+
* in `runLlmAgentAsNode`, mirroring adk-python's `LlmAgent._run_impl`
|
|
497
|
+
* delegating to `run_llm_agent_as_node`.
|
|
498
|
+
*/
|
|
499
|
+
runImpl(ctx, nodeInput) {
|
|
500
|
+
return __asyncGenerator(this, null, function* () {
|
|
501
|
+
yield* __yieldStar(runLlmAgentAsNode(this, ctx, nodeInput));
|
|
502
|
+
});
|
|
503
|
+
}
|
|
376
504
|
runAsyncImpl(context2) {
|
|
377
505
|
return __asyncGenerator(this, null, function* () {
|
|
378
506
|
var _a2, _b2;
|
|
@@ -460,11 +588,423 @@ class LlmAgent extends (_b = BaseAgent, _a = LLM_AGENT_SIGNATURE_SYMBOL, _b) {
|
|
|
460
588
|
* times. Subsequent reconnects skip `sendHistory` because the server
|
|
461
589
|
* already holds the conversation state associated with the handle.
|
|
462
590
|
*/
|
|
463
|
-
|
|
464
|
-
runLiveFlow(_invocationContext) {
|
|
591
|
+
runLiveFlow(invocationContext) {
|
|
465
592
|
return __asyncGenerator(this, null, function* () {
|
|
466
|
-
|
|
467
|
-
|
|
593
|
+
var _a2, _b2, _c, _d;
|
|
594
|
+
if (!invocationContext.liveRequestQueue) {
|
|
595
|
+
throw new Error("liveRequestQueue is required for LlmAgent.runLiveFlow.");
|
|
596
|
+
}
|
|
597
|
+
const llmRequest = {
|
|
598
|
+
contents: [],
|
|
599
|
+
toolsDict: {},
|
|
600
|
+
liveConnectConfig: {}
|
|
601
|
+
};
|
|
602
|
+
try {
|
|
603
|
+
for (var iter = __forAwait(this.runLivePreprocess(
|
|
604
|
+
invocationContext,
|
|
605
|
+
llmRequest
|
|
606
|
+
)), more, temp, error; more = !(temp = yield new __await(iter.next())).done; more = false) {
|
|
607
|
+
const event = temp.value;
|
|
608
|
+
yield event;
|
|
609
|
+
}
|
|
610
|
+
} catch (temp) {
|
|
611
|
+
error = [temp];
|
|
612
|
+
} finally {
|
|
613
|
+
try {
|
|
614
|
+
more && (temp = iter.return) && (yield new __await(temp.call(iter)));
|
|
615
|
+
} finally {
|
|
616
|
+
if (error)
|
|
617
|
+
throw error[0];
|
|
618
|
+
}
|
|
619
|
+
}
|
|
620
|
+
if (invocationContext.endInvocation || ((_a2 = invocationContext.abortSignal) == null ? void 0 : _a2.aborted)) {
|
|
621
|
+
return;
|
|
622
|
+
}
|
|
623
|
+
applyLiveRunConfig(invocationContext.runConfig, llmRequest);
|
|
624
|
+
const llm = this.canonicalModel;
|
|
625
|
+
let reconnectAttempts = 0;
|
|
626
|
+
while (true) {
|
|
627
|
+
if ((_b2 = invocationContext.abortSignal) == null ? void 0 : _b2.aborted) {
|
|
628
|
+
return;
|
|
629
|
+
}
|
|
630
|
+
const handle = invocationContext.liveSessionResumptionHandle;
|
|
631
|
+
if (handle) {
|
|
632
|
+
(_c = llmRequest.liveConnectConfig) != null ? _c : llmRequest.liveConnectConfig = {};
|
|
633
|
+
llmRequest.liveConnectConfig.sessionResumption = {
|
|
634
|
+
handle,
|
|
635
|
+
transparent: true
|
|
636
|
+
};
|
|
637
|
+
}
|
|
638
|
+
let connection;
|
|
639
|
+
try {
|
|
640
|
+
connection = yield new __await(llm.connect(llmRequest));
|
|
641
|
+
} catch (err) {
|
|
642
|
+
if (isRecoverableLiveError(err) && invocationContext.liveSessionResumptionHandle) {
|
|
643
|
+
reconnectAttempts += 1;
|
|
644
|
+
if (reconnectAttempts > MAX_LIVE_RECONNECT_ATTEMPTS) {
|
|
645
|
+
logger.error(
|
|
646
|
+
"Max live reconnection attempts reached (".concat(reconnectAttempts, ")."),
|
|
647
|
+
err
|
|
648
|
+
);
|
|
649
|
+
throw err;
|
|
650
|
+
}
|
|
651
|
+
logger.info(
|
|
652
|
+
"Live connect failed (attempt ".concat(reconnectAttempts, "); retrying with session handle."),
|
|
653
|
+
err
|
|
654
|
+
);
|
|
655
|
+
continue;
|
|
656
|
+
}
|
|
657
|
+
throw err;
|
|
658
|
+
}
|
|
659
|
+
if (llmRequest.contents.length > 0 && !invocationContext.liveSessionResumptionHandle) {
|
|
660
|
+
yield new __await(connection.sendHistory(llmRequest.contents));
|
|
661
|
+
}
|
|
662
|
+
let sendError;
|
|
663
|
+
const sendAbort = new AbortController();
|
|
664
|
+
const combinedAbort = invocationContext.abortSignal ? AbortSignal.any([invocationContext.abortSignal, sendAbort.signal]) : sendAbort.signal;
|
|
665
|
+
const sendTask = this.runSendLoop(
|
|
666
|
+
connection,
|
|
667
|
+
invocationContext.liveRequestQueue,
|
|
668
|
+
combinedAbort,
|
|
669
|
+
invocationContext.abortSignal
|
|
670
|
+
);
|
|
671
|
+
sendTask.catch((error2) => {
|
|
672
|
+
logger.error("Error in live send loop:", error2);
|
|
673
|
+
sendError = error2;
|
|
674
|
+
sendAbort.abort(error2);
|
|
675
|
+
connection.close().catch((err) => {
|
|
676
|
+
logger.warn("Error closing connection after send loop failure:", err);
|
|
677
|
+
});
|
|
678
|
+
});
|
|
679
|
+
let reconnect = false;
|
|
680
|
+
try {
|
|
681
|
+
yield* __yieldStar(this.runReceiveLoop(
|
|
682
|
+
invocationContext,
|
|
683
|
+
connection,
|
|
684
|
+
llmRequest,
|
|
685
|
+
sendAbort
|
|
686
|
+
));
|
|
687
|
+
} catch (err) {
|
|
688
|
+
const canReconnect = !!invocationContext.liveSessionResumptionHandle && (err instanceof LiveReconnectSignal || isRecoverableLiveError(err));
|
|
689
|
+
if (canReconnect) {
|
|
690
|
+
reconnect = true;
|
|
691
|
+
logger.info(
|
|
692
|
+
"Live connection closed; will reconnect with session handle.",
|
|
693
|
+
err
|
|
694
|
+
);
|
|
695
|
+
} else {
|
|
696
|
+
yield new __await(this.teardownLiveConnection(sendAbort, connection, sendTask));
|
|
697
|
+
throw err;
|
|
698
|
+
}
|
|
699
|
+
}
|
|
700
|
+
yield new __await(this.teardownLiveConnection(sendAbort, connection, sendTask));
|
|
701
|
+
if ((_d = invocationContext.abortSignal) == null ? void 0 : _d.aborted) {
|
|
702
|
+
return;
|
|
703
|
+
}
|
|
704
|
+
if (sendError) {
|
|
705
|
+
throw sendError;
|
|
706
|
+
}
|
|
707
|
+
if (!reconnect) {
|
|
708
|
+
return;
|
|
709
|
+
}
|
|
710
|
+
reconnectAttempts += 1;
|
|
711
|
+
if (reconnectAttempts > MAX_LIVE_RECONNECT_ATTEMPTS) {
|
|
712
|
+
throw new Error(
|
|
713
|
+
"Max live reconnection attempts reached (".concat(reconnectAttempts, ").")
|
|
714
|
+
);
|
|
715
|
+
}
|
|
716
|
+
}
|
|
717
|
+
});
|
|
718
|
+
}
|
|
719
|
+
runLivePreprocess(invocationContext, llmRequest) {
|
|
720
|
+
return __asyncGenerator(this, null, function* () {
|
|
721
|
+
var _a2, _b2;
|
|
722
|
+
for (const processor of this.requestProcessors) {
|
|
723
|
+
try {
|
|
724
|
+
for (var iter = __forAwait(processor.runAsync(
|
|
725
|
+
invocationContext,
|
|
726
|
+
llmRequest
|
|
727
|
+
)), more, temp, error; more = !(temp = yield new __await(iter.next())).done; more = false) {
|
|
728
|
+
const event = temp.value;
|
|
729
|
+
if ((_a2 = invocationContext.abortSignal) == null ? void 0 : _a2.aborted) {
|
|
730
|
+
return;
|
|
731
|
+
}
|
|
732
|
+
yield event;
|
|
733
|
+
}
|
|
734
|
+
} catch (temp) {
|
|
735
|
+
error = [temp];
|
|
736
|
+
} finally {
|
|
737
|
+
try {
|
|
738
|
+
more && (temp = iter.return) && (yield new __await(temp.call(iter)));
|
|
739
|
+
} finally {
|
|
740
|
+
if (error)
|
|
741
|
+
throw error[0];
|
|
742
|
+
}
|
|
743
|
+
}
|
|
744
|
+
}
|
|
745
|
+
for (const toolUnion of this.tools) {
|
|
746
|
+
const toolContext = new Context({ invocationContext });
|
|
747
|
+
const tools = (yield new __await(convertToolUnionToTools(
|
|
748
|
+
toolUnion,
|
|
749
|
+
new ReadonlyContext(invocationContext)
|
|
750
|
+
))).filter(
|
|
751
|
+
(tool) => !llmRequest.allowedTools || llmRequest.allowedTools.includes(tool.name)
|
|
752
|
+
);
|
|
753
|
+
for (const tool of tools) {
|
|
754
|
+
yield new __await(tool.processLlmRequest({ toolContext, llmRequest }));
|
|
755
|
+
if ((_b2 = invocationContext.abortSignal) == null ? void 0 : _b2.aborted) {
|
|
756
|
+
return;
|
|
757
|
+
}
|
|
758
|
+
}
|
|
759
|
+
}
|
|
760
|
+
});
|
|
761
|
+
}
|
|
762
|
+
async runSendLoop(connection, liveRequestQueue, sendAbortSignal, invocationAbortSignal) {
|
|
763
|
+
while (true) {
|
|
764
|
+
if ((sendAbortSignal == null ? void 0 : sendAbortSignal.aborted) || (invocationAbortSignal == null ? void 0 : invocationAbortSignal.aborted)) {
|
|
765
|
+
return;
|
|
766
|
+
}
|
|
767
|
+
let liveRequest;
|
|
768
|
+
try {
|
|
769
|
+
liveRequest = await liveRequestQueue.get(sendAbortSignal);
|
|
770
|
+
} catch (error) {
|
|
771
|
+
if ((sendAbortSignal == null ? void 0 : sendAbortSignal.aborted) || (invocationAbortSignal == null ? void 0 : invocationAbortSignal.aborted)) {
|
|
772
|
+
return;
|
|
773
|
+
}
|
|
774
|
+
throw error;
|
|
775
|
+
}
|
|
776
|
+
try {
|
|
777
|
+
await this.dispatchLiveRequest(connection, liveRequest);
|
|
778
|
+
} catch (error) {
|
|
779
|
+
if ((sendAbortSignal == null ? void 0 : sendAbortSignal.aborted) || (invocationAbortSignal == null ? void 0 : invocationAbortSignal.aborted)) {
|
|
780
|
+
logger.debug("Send failed after teardown:", error);
|
|
781
|
+
return;
|
|
782
|
+
}
|
|
783
|
+
logger.error("Error dispatching live request to model:", error);
|
|
784
|
+
throw error;
|
|
785
|
+
}
|
|
786
|
+
await Promise.resolve();
|
|
787
|
+
if (liveRequest.close) {
|
|
788
|
+
return;
|
|
789
|
+
}
|
|
790
|
+
}
|
|
791
|
+
}
|
|
792
|
+
async dispatchLiveRequest(connection, liveRequest) {
|
|
793
|
+
var _a2, _b2;
|
|
794
|
+
if (liveRequest.close) {
|
|
795
|
+
await connection.close();
|
|
796
|
+
return;
|
|
797
|
+
}
|
|
798
|
+
if (liveRequest.activityStart) {
|
|
799
|
+
await ((_a2 = connection.sendActivityStart) == null ? void 0 : _a2.call(connection));
|
|
800
|
+
return;
|
|
801
|
+
}
|
|
802
|
+
if (liveRequest.activityEnd) {
|
|
803
|
+
await ((_b2 = connection.sendActivityEnd) == null ? void 0 : _b2.call(connection));
|
|
804
|
+
return;
|
|
805
|
+
}
|
|
806
|
+
if (liveRequest.blob) {
|
|
807
|
+
await connection.sendRealtime(liveRequest.blob);
|
|
808
|
+
return;
|
|
809
|
+
}
|
|
810
|
+
if (liveRequest.content) {
|
|
811
|
+
await connection.sendContent(liveRequest.content);
|
|
812
|
+
}
|
|
813
|
+
}
|
|
814
|
+
/**
|
|
815
|
+
* Tears down a live attempt: stops the send loop, closes the connection
|
|
816
|
+
* (swallowing close errors), and waits for the send task to settle. Used
|
|
817
|
+
* before reconnecting or propagating an error.
|
|
818
|
+
*/
|
|
819
|
+
async teardownLiveConnection(sendAbort, connection, sendTask) {
|
|
820
|
+
sendAbort.abort();
|
|
821
|
+
try {
|
|
822
|
+
await connection.close();
|
|
823
|
+
} catch (error) {
|
|
824
|
+
logger.warn("Error closing live connection:", error);
|
|
825
|
+
}
|
|
826
|
+
await sendTask.catch(() => void 0);
|
|
827
|
+
}
|
|
828
|
+
runReceiveLoop(invocationContext, connection, llmRequest, sendAbort) {
|
|
829
|
+
return __asyncGenerator(this, null, function* () {
|
|
830
|
+
var _a2, _b2, _c, _d;
|
|
831
|
+
try {
|
|
832
|
+
for (var iter3 = __forAwait(connection.receive()), more3, temp3, error3; more3 = !(temp3 = yield new __await(iter3.next())).done; more3 = false) {
|
|
833
|
+
const llmResponse = temp3.value;
|
|
834
|
+
if ((_a2 = invocationContext.abortSignal) == null ? void 0 : _a2.aborted) {
|
|
835
|
+
return;
|
|
836
|
+
}
|
|
837
|
+
if (sendAbort.signal.aborted) {
|
|
838
|
+
return;
|
|
839
|
+
}
|
|
840
|
+
if ((_b2 = llmResponse.liveSessionResumptionUpdate) == null ? void 0 : _b2.newHandle) {
|
|
841
|
+
invocationContext.liveSessionResumptionHandle = llmResponse.liveSessionResumptionUpdate.newHandle;
|
|
842
|
+
}
|
|
843
|
+
if (llmResponse.goAway) {
|
|
844
|
+
logger.info("Received goAway from live server; triggering reconnect.");
|
|
845
|
+
throw new LiveReconnectSignal("goAway");
|
|
846
|
+
}
|
|
847
|
+
const author = llmResponse.inputTranscription || ((_c = llmResponse.content) == null ? void 0 : _c.role) === "user" ? "user" : this.name;
|
|
848
|
+
const modelResponseEvent = createEvent({
|
|
849
|
+
invocationId: invocationContext.invocationId,
|
|
850
|
+
author,
|
|
851
|
+
branch: invocationContext.branch
|
|
852
|
+
});
|
|
853
|
+
try {
|
|
854
|
+
for (var iter2 = __forAwait(this.postprocessLive(
|
|
855
|
+
invocationContext,
|
|
856
|
+
llmRequest,
|
|
857
|
+
llmResponse,
|
|
858
|
+
modelResponseEvent
|
|
859
|
+
)), more2, temp2, error2; more2 = !(temp2 = yield new __await(iter2.next())).done; more2 = false) {
|
|
860
|
+
const event = temp2.value;
|
|
861
|
+
yield event;
|
|
862
|
+
if (event.content && getFunctionResponses(event).length > 0) {
|
|
863
|
+
yield new __await(connection.sendContent(event.content));
|
|
864
|
+
}
|
|
865
|
+
const taskCompleted = getFunctionResponses(event).some(
|
|
866
|
+
(r) => r.name === "task_completed"
|
|
867
|
+
);
|
|
868
|
+
if (taskCompleted) {
|
|
869
|
+
yield new __await(sleep(TRANSFER_AGENT_DELAY_MS));
|
|
870
|
+
return;
|
|
871
|
+
}
|
|
872
|
+
const transferTo = (_d = event.actions) == null ? void 0 : _d.transferToAgent;
|
|
873
|
+
if (transferTo) {
|
|
874
|
+
yield new __await(sleep(TRANSFER_AGENT_DELAY_MS));
|
|
875
|
+
sendAbort.abort();
|
|
876
|
+
yield new __await(connection.close());
|
|
877
|
+
const agent = requireAgent(invocationContext);
|
|
878
|
+
const subAgent = agent.rootAgent.findAgent(transferTo);
|
|
879
|
+
if (subAgent) {
|
|
880
|
+
const previousAgent = invocationContext.agent;
|
|
881
|
+
invocationContext.agent = subAgent;
|
|
882
|
+
const previousHandle = invocationContext.liveSessionResumptionHandle;
|
|
883
|
+
invocationContext.liveSessionResumptionHandle = void 0;
|
|
884
|
+
try {
|
|
885
|
+
try {
|
|
886
|
+
for (var iter = __forAwait(subAgent.runLive(
|
|
887
|
+
invocationContext
|
|
888
|
+
)), more, temp, error; more = !(temp = yield new __await(iter.next())).done; more = false) {
|
|
889
|
+
const subEvent = temp.value;
|
|
890
|
+
yield subEvent;
|
|
891
|
+
}
|
|
892
|
+
} catch (temp) {
|
|
893
|
+
error = [temp];
|
|
894
|
+
} finally {
|
|
895
|
+
try {
|
|
896
|
+
more && (temp = iter.return) && (yield new __await(temp.call(iter)));
|
|
897
|
+
} finally {
|
|
898
|
+
if (error)
|
|
899
|
+
throw error[0];
|
|
900
|
+
}
|
|
901
|
+
}
|
|
902
|
+
} finally {
|
|
903
|
+
invocationContext.agent = previousAgent;
|
|
904
|
+
invocationContext.liveSessionResumptionHandle = previousHandle;
|
|
905
|
+
}
|
|
906
|
+
}
|
|
907
|
+
return;
|
|
908
|
+
}
|
|
909
|
+
}
|
|
910
|
+
} catch (temp2) {
|
|
911
|
+
error2 = [temp2];
|
|
912
|
+
} finally {
|
|
913
|
+
try {
|
|
914
|
+
more2 && (temp2 = iter2.return) && (yield new __await(temp2.call(iter2)));
|
|
915
|
+
} finally {
|
|
916
|
+
if (error2)
|
|
917
|
+
throw error2[0];
|
|
918
|
+
}
|
|
919
|
+
}
|
|
920
|
+
}
|
|
921
|
+
} catch (temp3) {
|
|
922
|
+
error3 = [temp3];
|
|
923
|
+
} finally {
|
|
924
|
+
try {
|
|
925
|
+
more3 && (temp3 = iter3.return) && (yield new __await(temp3.call(iter3)));
|
|
926
|
+
} finally {
|
|
927
|
+
if (error3)
|
|
928
|
+
throw error3[0];
|
|
929
|
+
}
|
|
930
|
+
}
|
|
931
|
+
});
|
|
932
|
+
}
|
|
933
|
+
postprocessLive(invocationContext, llmRequest, llmResponse, modelResponseEvent) {
|
|
934
|
+
return __asyncGenerator(this, null, function* () {
|
|
935
|
+
for (const processor of this.responseProcessors) {
|
|
936
|
+
try {
|
|
937
|
+
for (var iter = __forAwait(processor.runAsync(
|
|
938
|
+
invocationContext,
|
|
939
|
+
llmResponse
|
|
940
|
+
)), more, temp, error; more = !(temp = yield new __await(iter.next())).done; more = false) {
|
|
941
|
+
const event = temp.value;
|
|
942
|
+
yield event;
|
|
943
|
+
}
|
|
944
|
+
} catch (temp) {
|
|
945
|
+
error = [temp];
|
|
946
|
+
} finally {
|
|
947
|
+
try {
|
|
948
|
+
more && (temp = iter.return) && (yield new __await(temp.call(iter)));
|
|
949
|
+
} finally {
|
|
950
|
+
if (error)
|
|
951
|
+
throw error[0];
|
|
952
|
+
}
|
|
953
|
+
}
|
|
954
|
+
}
|
|
955
|
+
if (!llmResponse.content && !llmResponse.errorCode && !llmResponse.interrupted && !llmResponse.turnComplete && !llmResponse.inputTranscription && !llmResponse.outputTranscription && !llmResponse.usageMetadata && !llmResponse.liveSessionResumptionUpdate) {
|
|
956
|
+
return;
|
|
957
|
+
}
|
|
958
|
+
if (llmResponse.liveSessionResumptionUpdate) {
|
|
959
|
+
yield createEvent(__spreadProps(__spreadValues({}, modelResponseEvent), {
|
|
960
|
+
liveSessionResumptionUpdate: llmResponse.liveSessionResumptionUpdate
|
|
961
|
+
}));
|
|
962
|
+
return;
|
|
963
|
+
}
|
|
964
|
+
if (llmResponse.inputTranscription) {
|
|
965
|
+
yield createEvent(__spreadProps(__spreadValues({}, modelResponseEvent), {
|
|
966
|
+
inputTranscription: llmResponse.inputTranscription,
|
|
967
|
+
partial: llmResponse.partial
|
|
968
|
+
}));
|
|
969
|
+
return;
|
|
970
|
+
}
|
|
971
|
+
if (llmResponse.outputTranscription) {
|
|
972
|
+
yield createEvent(__spreadProps(__spreadValues({}, modelResponseEvent), {
|
|
973
|
+
outputTranscription: llmResponse.outputTranscription,
|
|
974
|
+
partial: llmResponse.partial
|
|
975
|
+
}));
|
|
976
|
+
return;
|
|
977
|
+
}
|
|
978
|
+
const mergedEvent = createEvent(__spreadValues(__spreadValues({}, modelResponseEvent), llmResponse));
|
|
979
|
+
const functionCalls = getFunctionCalls(mergedEvent);
|
|
980
|
+
if (mergedEvent.content && functionCalls.length) {
|
|
981
|
+
populateClientFunctionCallId(mergedEvent);
|
|
982
|
+
mergedEvent.longRunningToolIds = Array.from(
|
|
983
|
+
getLongRunningFunctionCalls(functionCalls, llmRequest.toolsDict)
|
|
984
|
+
);
|
|
985
|
+
}
|
|
986
|
+
yield mergedEvent;
|
|
987
|
+
if (!functionCalls.length) {
|
|
988
|
+
return;
|
|
989
|
+
}
|
|
990
|
+
const functionResponseEvent = yield new __await(handleFunctionCallsAsync({
|
|
991
|
+
invocationContext,
|
|
992
|
+
functionCallEvent: mergedEvent,
|
|
993
|
+
toolsDict: llmRequest.toolsDict,
|
|
994
|
+
beforeToolCallbacks: this.canonicalBeforeToolCallbacks,
|
|
995
|
+
afterToolCallbacks: this.canonicalAfterToolCallbacks
|
|
996
|
+
}));
|
|
997
|
+
if (!functionResponseEvent) {
|
|
998
|
+
return;
|
|
999
|
+
}
|
|
1000
|
+
const authEvent = generateAuthEvent(
|
|
1001
|
+
invocationContext,
|
|
1002
|
+
functionResponseEvent
|
|
1003
|
+
);
|
|
1004
|
+
if (authEvent) {
|
|
1005
|
+
yield authEvent;
|
|
1006
|
+
}
|
|
1007
|
+
yield functionResponseEvent;
|
|
468
1008
|
});
|
|
469
1009
|
}
|
|
470
1010
|
runOneStepAsync(invocationContext) {
|
|
@@ -499,22 +1039,32 @@ class LlmAgent extends (_b = BaseAgent, _a = LLM_AGENT_SIGNATURE_SYMBOL, _b) {
|
|
|
499
1039
|
}
|
|
500
1040
|
}
|
|
501
1041
|
const allTools = [...this.tools];
|
|
502
|
-
if (this.
|
|
1042
|
+
if (this.mode === "task") {
|
|
1043
|
+
allTools.push(this.finishTaskTool);
|
|
1044
|
+
} else if (this.outputSchema && allTools.length > 0 && !canUseOutputSchemaWithTools(this.canonicalModel.model)) {
|
|
503
1045
|
const setModelResponseTool = new FunctionTool({
|
|
504
1046
|
name: "set_model_response",
|
|
505
1047
|
description: "Call this tool to submit your final response conforming to the output schema. Use this tool only when you have collected all the information and are ready to return the final answer.",
|
|
506
1048
|
parameters: this.outputSchema,
|
|
507
|
-
execute: async (args, toolContext) => {
|
|
1049
|
+
execute: /* @__PURE__ */ __name(async (args, toolContext) => {
|
|
508
1050
|
if (toolContext) {
|
|
509
1051
|
toolContext.actions.skipSummarization = true;
|
|
510
1052
|
}
|
|
511
1053
|
return JSON.stringify(args);
|
|
512
|
-
}
|
|
1054
|
+
}, "execute")
|
|
513
1055
|
});
|
|
514
1056
|
allTools.push(setModelResponseTool);
|
|
515
1057
|
}
|
|
1058
|
+
const modelResponseEvent = createEvent({
|
|
1059
|
+
invocationId: invocationContext.invocationId,
|
|
1060
|
+
author: this.name,
|
|
1061
|
+
branch: invocationContext.branch
|
|
1062
|
+
});
|
|
516
1063
|
for (const toolUnion of allTools) {
|
|
517
|
-
const toolContext = new Context({
|
|
1064
|
+
const toolContext = new Context({
|
|
1065
|
+
invocationContext,
|
|
1066
|
+
eventActions: modelResponseEvent.actions
|
|
1067
|
+
});
|
|
518
1068
|
const tools = (yield new __await(convertToolUnionToTools(
|
|
519
1069
|
toolUnion,
|
|
520
1070
|
new ReadonlyContext(invocationContext)
|
|
@@ -531,11 +1081,6 @@ class LlmAgent extends (_b = BaseAgent, _a = LLM_AGENT_SIGNATURE_SYMBOL, _b) {
|
|
|
531
1081
|
if (invocationContext.endInvocation || ((_c = invocationContext.abortSignal) == null ? void 0 : _c.aborted)) {
|
|
532
1082
|
return;
|
|
533
1083
|
}
|
|
534
|
-
const modelResponseEvent = createEvent({
|
|
535
|
-
invocationId: invocationContext.invocationId,
|
|
536
|
-
author: this.name,
|
|
537
|
-
branch: invocationContext.branch
|
|
538
|
-
});
|
|
539
1084
|
const span = tracer.startSpan("call_llm");
|
|
540
1085
|
const ctx = trace.setSpan(context.active(), span);
|
|
541
1086
|
yield* __yieldStar(runAsyncGeneratorWithOtelContext(
|
|
@@ -543,7 +1088,7 @@ class LlmAgent extends (_b = BaseAgent, _a = LLM_AGENT_SIGNATURE_SYMBOL, _b) {
|
|
|
543
1088
|
this,
|
|
544
1089
|
function() {
|
|
545
1090
|
return __asyncGenerator(this, null, function* () {
|
|
546
|
-
const responsesGenerator = function() {
|
|
1091
|
+
const responsesGenerator = /* @__PURE__ */ __name(function() {
|
|
547
1092
|
return __asyncGenerator(this, null, function* () {
|
|
548
1093
|
var _a3, _b3;
|
|
549
1094
|
try {
|
|
@@ -593,7 +1138,7 @@ class LlmAgent extends (_b = BaseAgent, _a = LLM_AGENT_SIGNATURE_SYMBOL, _b) {
|
|
|
593
1138
|
}
|
|
594
1139
|
}
|
|
595
1140
|
});
|
|
596
|
-
};
|
|
1141
|
+
}, "responsesGenerator");
|
|
597
1142
|
yield* __yieldStar(this.runAndHandleError(
|
|
598
1143
|
responsesGenerator.call(this),
|
|
599
1144
|
invocationContext,
|
|
@@ -632,7 +1177,8 @@ class LlmAgent extends (_b = BaseAgent, _a = LLM_AGENT_SIGNATURE_SYMBOL, _b) {
|
|
|
632
1177
|
}
|
|
633
1178
|
}
|
|
634
1179
|
}
|
|
635
|
-
|
|
1180
|
+
const isUsageOnlyReport = !llmResponse.content && !!llmResponse.usageMetadata;
|
|
1181
|
+
if ((!llmResponse.content || ((_b2 = llmResponse.content.parts) == null ? void 0 : _b2.length) === 0) && !llmResponse.errorCode && !llmResponse.interrupted && !isUsageOnlyReport) {
|
|
636
1182
|
return;
|
|
637
1183
|
}
|
|
638
1184
|
const mergedEvent = createEvent(__spreadValues(__spreadValues({}, modelResponseEvent), llmResponse));
|
|
@@ -660,13 +1206,44 @@ class LlmAgent extends (_b = BaseAgent, _a = LLM_AGENT_SIGNATURE_SYMBOL, _b) {
|
|
|
660
1206
|
invocationContext.endInvocation = true;
|
|
661
1207
|
return;
|
|
662
1208
|
}
|
|
663
|
-
const
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
1209
|
+
const eventQueue = new AsyncQueue();
|
|
1210
|
+
invocationContext.eventQueue = eventQueue;
|
|
1211
|
+
const toolTask = (async () => {
|
|
1212
|
+
try {
|
|
1213
|
+
const event = await handleFunctionCallsAsync({
|
|
1214
|
+
invocationContext,
|
|
1215
|
+
functionCallEvent: mergedEvent,
|
|
1216
|
+
toolsDict: llmRequest.toolsDict,
|
|
1217
|
+
beforeToolCallbacks: this.canonicalBeforeToolCallbacks,
|
|
1218
|
+
afterToolCallbacks: this.canonicalAfterToolCallbacks
|
|
1219
|
+
});
|
|
1220
|
+
return { event };
|
|
1221
|
+
} catch (error4) {
|
|
1222
|
+
return { event: null, error: error4 };
|
|
1223
|
+
} finally {
|
|
1224
|
+
eventQueue.close();
|
|
1225
|
+
}
|
|
1226
|
+
})();
|
|
1227
|
+
try {
|
|
1228
|
+
for (var iter2 = __forAwait(eventQueue), more2, temp2, error2; more2 = !(temp2 = yield new __await(iter2.next())).done; more2 = false) {
|
|
1229
|
+
const queuedEvent = temp2.value;
|
|
1230
|
+
yield queuedEvent;
|
|
1231
|
+
}
|
|
1232
|
+
} catch (temp2) {
|
|
1233
|
+
error2 = [temp2];
|
|
1234
|
+
} finally {
|
|
1235
|
+
try {
|
|
1236
|
+
more2 && (temp2 = iter2.return) && (yield new __await(temp2.call(iter2)));
|
|
1237
|
+
} finally {
|
|
1238
|
+
if (error2)
|
|
1239
|
+
throw error2[0];
|
|
1240
|
+
}
|
|
1241
|
+
}
|
|
1242
|
+
const { event: functionResponseEvent, error: toolError } = yield new __await(toolTask);
|
|
1243
|
+
invocationContext.eventQueue = void 0;
|
|
1244
|
+
if (toolError) {
|
|
1245
|
+
throw toolError;
|
|
1246
|
+
}
|
|
670
1247
|
if (!functionResponseEvent || ((_e = invocationContext.abortSignal) == null ? void 0 : _e.aborted)) {
|
|
671
1248
|
return;
|
|
672
1249
|
}
|
|
@@ -692,21 +1269,21 @@ class LlmAgent extends (_b = BaseAgent, _a = LLM_AGENT_SIGNATURE_SYMBOL, _b) {
|
|
|
692
1269
|
if (nextAgentName) {
|
|
693
1270
|
const nextAgent = this.getAgentByName(invocationContext, nextAgentName);
|
|
694
1271
|
try {
|
|
695
|
-
for (var
|
|
696
|
-
const event =
|
|
1272
|
+
for (var iter3 = __forAwait(nextAgent.runAsync(invocationContext)), more3, temp3, error3; more3 = !(temp3 = yield new __await(iter3.next())).done; more3 = false) {
|
|
1273
|
+
const event = temp3.value;
|
|
697
1274
|
if ((_f = invocationContext.abortSignal) == null ? void 0 : _f.aborted) {
|
|
698
1275
|
return;
|
|
699
1276
|
}
|
|
700
1277
|
yield event;
|
|
701
1278
|
}
|
|
702
|
-
} catch (
|
|
703
|
-
|
|
1279
|
+
} catch (temp3) {
|
|
1280
|
+
error3 = [temp3];
|
|
704
1281
|
} finally {
|
|
705
1282
|
try {
|
|
706
|
-
|
|
1283
|
+
more3 && (temp3 = iter3.return) && (yield new __await(temp3.call(iter3)));
|
|
707
1284
|
} finally {
|
|
708
|
-
if (
|
|
709
|
-
throw
|
|
1285
|
+
if (error3)
|
|
1286
|
+
throw error3[0];
|
|
710
1287
|
}
|
|
711
1288
|
}
|
|
712
1289
|
}
|
|
@@ -725,7 +1302,7 @@ class LlmAgent extends (_b = BaseAgent, _a = LLM_AGENT_SIGNATURE_SYMBOL, _b) {
|
|
|
725
1302
|
* @throws Error if the agent is not found.
|
|
726
1303
|
*/
|
|
727
1304
|
getAgentByName(invocationContext, agentName) {
|
|
728
|
-
const rootAgent = invocationContext.
|
|
1305
|
+
const rootAgent = requireAgent(invocationContext).rootAgent;
|
|
729
1306
|
const agentToRun = rootAgent.findAgent(agentName);
|
|
730
1307
|
if (!agentToRun) {
|
|
731
1308
|
throw new Error("Agent ".concat(agentName, " not found in the agent tree."));
|
|
@@ -928,7 +1505,9 @@ class LlmAgent extends (_b = BaseAgent, _a = LLM_AGENT_SIGNATURE_SYMBOL, _b) {
|
|
|
928
1505
|
// TODO - b/425992518: omitted Py LlmAgent features.
|
|
929
1506
|
// - code_executor
|
|
930
1507
|
// - configurable agents by yaml config
|
|
931
|
-
}
|
|
1508
|
+
};
|
|
1509
|
+
__name(_LlmAgent, "LlmAgent");
|
|
1510
|
+
let LlmAgent = _LlmAgent;
|
|
932
1511
|
export {
|
|
933
1512
|
LlmAgent,
|
|
934
1513
|
isLlmAgent
|