@google/adk 2.0.0 → 2.1.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 +0 -29
- package/dist/cjs/a2a/a2a_remote_agent.js +8 -5
- package/dist/cjs/a2a/a2a_remote_agent_utils.js +104 -2
- package/dist/cjs/a2a/agent_card.js +58 -6
- package/dist/cjs/a2a/agent_executor.js +10 -3
- package/dist/cjs/a2a/agent_to_a2a.js +6 -1
- package/dist/cjs/a2a/event_processor_utils.js +1 -1
- package/dist/cjs/a2a/executor_context.js +4 -2
- package/dist/cjs/a2a/index.js +4 -0
- package/dist/cjs/a2a/request_metadata.js +94 -0
- package/dist/cjs/agents/base_agent.js +9 -8
- package/dist/cjs/agents/context.js +7 -0
- package/dist/cjs/agents/functions.js +150 -47
- package/dist/cjs/agents/invocation_context.js +1 -0
- package/dist/cjs/agents/llm_agent.js +6 -5
- package/dist/cjs/agents/loop_agent.js +1 -1
- package/dist/cjs/agents/parallel_agent.js +1 -1
- package/dist/cjs/agents/processors/agent_transfer_llm_request_processor.js +26 -5
- package/dist/cjs/agents/processors/code_execution_request_processor.js +2 -2
- package/dist/cjs/agents/processors/content_processor_utils.js +5 -5
- package/dist/cjs/agents/processors/content_request_processor.js +4 -1
- package/dist/cjs/agents/processors/request_confirmation_llm_request_processor.js +19 -12
- package/dist/cjs/agents/processors/request_input_llm_request_processor.js +3 -7
- package/dist/cjs/agents/readonly_context.js +6 -0
- package/dist/cjs/agents/routed_agent.js +1 -1
- package/dist/cjs/agents/sequential_agent.js +1 -1
- package/dist/cjs/apps/app.js +1 -1
- package/dist/cjs/artifacts/file_artifact_service.js +1 -2
- package/dist/cjs/artifacts/scoped_artifact_service.js +9 -0
- package/dist/cjs/artifacts/session_artifact_service.js +19 -0
- package/dist/cjs/auth/auth_handler.js +44 -8
- package/dist/cjs/auth/oauth2/oauth2_credential_refresher.js +1 -1
- package/dist/cjs/auth/oauth2/oauth2_utils.js +17 -2
- package/dist/cjs/code_executors/base_code_executor.js +1 -1
- package/dist/cjs/code_executors/built_in_code_executor.js +1 -1
- package/dist/cjs/code_executors/code_execution_utils.js +2 -2
- package/dist/cjs/code_executors/container_code_executor.js +186 -0
- package/dist/cjs/code_executors/docker_container.js +282 -0
- package/dist/cjs/code_executors/unsafe_local_code_executor.js +11 -6
- package/dist/cjs/common.js +74 -45
- package/dist/cjs/context/agent_controlled_context_compactor.js +10 -5
- package/dist/cjs/context/anchored_context_compactor.js +41 -18
- package/dist/cjs/context/compaction_utils.js +15 -6
- package/dist/cjs/context/token_based_context_compactor.js +10 -2
- package/dist/cjs/context/trajectory_thought_pruning_compactor.js +17 -10
- package/dist/cjs/context/truncating_context_compactor.js +17 -5
- package/dist/cjs/errors/already_exists_error.js +50 -0
- package/dist/cjs/errors/input_validation_error.js +50 -0
- package/dist/cjs/errors/not_found_error.js +50 -0
- package/dist/cjs/errors/session_not_found_error.js +50 -0
- package/dist/cjs/errors/tool_execution_error.js +68 -0
- package/dist/cjs/events/event.js +1 -1
- package/dist/cjs/events/event_actions.js +7 -0
- package/dist/cjs/examples/base_example_provider.js +1 -1
- package/dist/cjs/index.js +47 -0
- package/dist/cjs/index_web.js +2 -0
- package/dist/cjs/integrations/agent_registry/agent_registry.js +3 -2
- package/dist/cjs/memory/rag_memory_transcript.js +136 -0
- package/dist/cjs/memory/vertex_ai_memory_bank_service.js +2 -2
- package/dist/cjs/memory/vertex_ai_rag_api.js +120 -0
- package/dist/cjs/memory/vertex_ai_rag_memory_service.js +228 -0
- package/dist/cjs/models/apigee_llm.js +1 -1
- package/dist/cjs/models/base_llm.js +1 -1
- package/dist/cjs/models/chrome_prompt_llm.js +304 -0
- package/dist/cjs/models/chrome_prompt_utils.js +229 -0
- package/dist/cjs/models/google_llm.js +9 -4
- package/dist/cjs/models/interactions_utils.js +2 -3
- package/dist/cjs/models/registry.js +2 -0
- package/dist/cjs/plugins/_reflect_retry_utils.js +142 -0
- package/dist/cjs/plugins/reflect_retry_model_plugin.js +274 -0
- package/dist/cjs/plugins/reflect_retry_tool_plugin.js +276 -0
- package/dist/cjs/runner/runner.js +29 -26
- package/dist/cjs/sessions/database_session_service.js +78 -43
- package/dist/cjs/sessions/db/operations.js +229 -22
- package/dist/cjs/sessions/db/schema.js +113 -159
- package/dist/cjs/sessions/registry.js +5 -1
- package/dist/cjs/sessions/vertex_ai_session_service.js +2 -2
- package/dist/cjs/telemetry/setup.js +1 -1
- package/dist/cjs/telemetry/tracing.js +11 -1
- package/dist/cjs/tools/agent_tool.js +4 -5
- package/dist/cjs/tools/base_tool.js +14 -4
- package/dist/cjs/tools/base_toolset.js +4 -4
- package/dist/cjs/tools/built_in_tool.js +75 -0
- package/dist/cjs/tools/enterprise_web_search_tool.js +3 -6
- package/dist/cjs/tools/forwarding_artifact_service.js +18 -13
- package/dist/cjs/tools/function_tool.js +6 -3
- package/dist/cjs/tools/google_maps_grounding_tool.js +3 -6
- package/dist/cjs/tools/google_search_tool.js +3 -6
- package/dist/cjs/tools/load_artifacts_tool.js +47 -23
- package/dist/cjs/tools/load_web_page.js +6 -172
- package/dist/cjs/tools/mcp/load_mcp_resource_tool.js +34 -5
- package/dist/cjs/tools/openapi_tool/auth/auth_helpers.js +11 -2
- package/dist/cjs/tools/openapi_tool/openapi_spec_parser/operation_parser.js +1 -1
- package/dist/cjs/tools/openapi_tool/rest_api_tool.js +16 -18
- package/dist/cjs/tools/preload_memory_tool.js +1 -1
- package/dist/cjs/tools/resume_inputs.js +27 -0
- package/dist/cjs/tools/retrieval/base_retrieval_tool.js +60 -0
- package/dist/cjs/tools/retrieval/files_retrieval.js +95 -0
- package/dist/cjs/tools/retrieval/llama_index_retrieval.js +57 -0
- package/dist/cjs/tools/url_context_tool.js +3 -6
- package/dist/cjs/tools/vertex_ai_search_tool.js +4 -8
- package/dist/cjs/tools/vertex_rag_retrieval_tool.js +3 -10
- package/dist/cjs/utils/crypto_shim.js +16 -0
- package/dist/cjs/utils/gemini_schema_util.js +0 -6
- package/dist/cjs/utils/logger.js +15 -50
- package/dist/cjs/utils/logger_browser.js +86 -0
- package/dist/cjs/utils/logger_node.js +119 -0
- package/dist/cjs/utils/redact_inline_data.js +46 -0
- package/dist/cjs/utils/redact_uri.js +15 -1
- package/dist/cjs/utils/schema.js +1 -1
- package/dist/cjs/utils/ssrf_guard.js +262 -0
- package/dist/cjs/version.js +1 -1
- package/dist/cjs/workflow/base_node.js +1 -1
- package/dist/cjs/workflow/graph.js +1 -1
- package/dist/cjs/workflow/nodes/node_tool.js +2 -11
- package/dist/cjs/workflow/request_input.js +1 -1
- package/dist/cjs/workflow/run_llm_agent_as_node.js +1 -1
- package/dist/cjs/workflow/workflow.js +1 -1
- package/dist/esm/a2a/a2a_event.js +0 -28
- package/dist/esm/a2a/a2a_remote_agent.js +10 -5
- package/dist/esm/a2a/a2a_remote_agent_utils.js +102 -2
- package/dist/esm/a2a/agent_card.js +63 -6
- package/dist/esm/a2a/agent_executor.js +10 -3
- package/dist/esm/a2a/agent_to_a2a.js +8 -2
- package/dist/esm/a2a/event_processor_utils.js +1 -2
- package/dist/esm/a2a/executor_context.js +4 -2
- package/dist/esm/a2a/index.js +7 -1
- package/dist/esm/a2a/request_metadata.js +68 -0
- package/dist/esm/agents/base_agent.js +9 -8
- package/dist/esm/agents/context.js +7 -0
- package/dist/esm/agents/functions.js +152 -48
- package/dist/esm/agents/invocation_context.js +1 -0
- package/dist/esm/agents/llm_agent.js +6 -5
- package/dist/esm/agents/loop_agent.js +1 -1
- package/dist/esm/agents/parallel_agent.js +1 -1
- package/dist/esm/agents/processors/agent_transfer_llm_request_processor.js +26 -5
- package/dist/esm/agents/processors/code_execution_request_processor.js +2 -2
- package/dist/esm/agents/processors/content_processor_utils.js +5 -5
- package/dist/esm/agents/processors/content_request_processor.js +4 -1
- package/dist/esm/agents/processors/request_confirmation_llm_request_processor.js +19 -12
- package/dist/esm/agents/processors/request_input_llm_request_processor.js +3 -7
- package/dist/esm/agents/readonly_context.js +6 -0
- package/dist/esm/agents/routed_agent.js +1 -1
- package/dist/esm/agents/sequential_agent.js +1 -1
- package/dist/esm/apps/app.js +1 -1
- package/dist/esm/artifacts/file_artifact_service.js +1 -2
- package/dist/esm/artifacts/scoped_artifact_service.js +9 -0
- package/dist/esm/artifacts/session_artifact_service.js +12 -0
- package/dist/esm/auth/auth_handler.js +47 -8
- package/dist/esm/auth/oauth2/oauth2_credential_refresher.js +1 -1
- package/dist/esm/auth/oauth2/oauth2_utils.js +15 -2
- package/dist/esm/code_executors/base_code_executor.js +1 -1
- package/dist/esm/code_executors/built_in_code_executor.js +1 -1
- package/dist/esm/code_executors/code_execution_utils.js +2 -2
- package/dist/esm/code_executors/container_code_executor.js +155 -0
- package/dist/esm/code_executors/docker_container.js +265 -0
- package/dist/esm/code_executors/unsafe_local_code_executor.js +11 -6
- package/dist/esm/common.js +73 -38
- package/dist/esm/context/agent_controlled_context_compactor.js +10 -5
- package/dist/esm/context/anchored_context_compactor.js +45 -19
- package/dist/esm/context/compaction_utils.js +13 -5
- package/dist/esm/context/token_based_context_compactor.js +10 -2
- package/dist/esm/context/trajectory_thought_pruning_compactor.js +17 -10
- package/dist/esm/context/truncating_context_compactor.js +17 -5
- package/dist/esm/errors/already_exists_error.js +23 -0
- package/dist/esm/errors/input_validation_error.js +23 -0
- package/dist/{web/auth/refresher/base_credential_refresher.js → esm/errors/not_found_error.js} +9 -6
- package/dist/esm/errors/session_not_found_error.js +23 -0
- package/dist/esm/errors/tool_execution_error.js +40 -0
- package/dist/esm/events/event.js +1 -1
- package/dist/esm/events/event_actions.js +6 -0
- package/dist/esm/examples/base_example_provider.js +1 -1
- package/dist/esm/index.js +37 -0
- package/dist/esm/index_web.js +2 -0
- package/dist/esm/integrations/agent_registry/agent_registry.js +3 -2
- package/dist/esm/memory/rag_memory_transcript.js +106 -0
- package/dist/esm/memory/vertex_ai_memory_bank_service.js +2 -2
- package/dist/esm/memory/vertex_ai_rag_api.js +93 -0
- package/dist/esm/memory/vertex_ai_rag_memory_service.js +208 -0
- package/dist/esm/models/apigee_llm.js +1 -1
- package/dist/esm/models/base_llm.js +1 -1
- package/dist/esm/models/chrome_prompt_llm.js +285 -0
- package/dist/esm/models/chrome_prompt_utils.js +192 -0
- package/dist/esm/models/google_llm.js +9 -4
- package/dist/esm/models/interactions_utils.js +2 -3
- package/dist/esm/models/registry.js +2 -0
- package/dist/esm/plugins/_reflect_retry_utils.js +111 -0
- package/dist/esm/plugins/reflect_retry_model_plugin.js +250 -0
- package/dist/esm/plugins/reflect_retry_tool_plugin.js +254 -0
- package/dist/esm/runner/runner.js +35 -27
- package/dist/esm/sessions/database_session_service.js +58 -25
- package/dist/esm/sessions/db/operations.js +229 -22
- package/dist/esm/sessions/db/schema.js +111 -160
- package/dist/esm/sessions/registry.js +5 -1
- package/dist/esm/sessions/vertex_ai_session_service.js +1 -1
- package/dist/esm/telemetry/setup.js +1 -1
- package/dist/esm/telemetry/tracing.js +11 -1
- package/dist/esm/tools/agent_tool.js +4 -5
- package/dist/esm/tools/base_tool.js +11 -3
- package/dist/esm/tools/base_toolset.js +4 -4
- package/dist/esm/tools/built_in_tool.js +51 -0
- package/dist/esm/tools/enterprise_web_search_tool.js +3 -6
- package/dist/esm/tools/forwarding_artifact_service.js +18 -13
- package/dist/esm/tools/function_tool.js +6 -3
- package/dist/esm/tools/google_maps_grounding_tool.js +3 -6
- package/dist/esm/tools/google_search_tool.js +3 -6
- package/dist/esm/tools/load_artifacts_tool.js +48 -24
- package/dist/esm/tools/load_web_page.js +10 -170
- package/dist/esm/tools/mcp/load_mcp_resource_tool.js +34 -5
- package/dist/esm/tools/openapi_tool/auth/auth_helpers.js +13 -2
- package/dist/esm/tools/openapi_tool/openapi_spec_parser/operation_parser.js +1 -1
- package/dist/esm/tools/openapi_tool/rest_api_tool.js +16 -18
- package/dist/esm/tools/preload_memory_tool.js +1 -1
- package/dist/esm/tools/retrieval/base_retrieval_tool.js +33 -0
- package/dist/esm/tools/retrieval/files_retrieval.js +81 -0
- package/dist/esm/tools/retrieval/llama_index_retrieval.js +30 -0
- package/dist/esm/tools/url_context_tool.js +3 -6
- package/dist/esm/tools/vertex_ai_search_tool.js +4 -8
- package/dist/esm/tools/vertex_rag_retrieval_tool.js +3 -10
- package/dist/esm/utils/crypto_shim.js +14 -0
- package/dist/esm/utils/gemini_schema_util.js +0 -6
- package/dist/esm/utils/logger.js +14 -40
- package/dist/esm/utils/logger_browser.js +58 -0
- package/dist/esm/utils/logger_node.js +81 -0
- package/dist/esm/utils/redact_inline_data.js +19 -0
- package/dist/esm/utils/redact_uri.js +15 -1
- package/dist/esm/utils/schema.js +1 -1
- package/dist/{web/tools/load_web_page.js → esm/utils/ssrf_guard.js} +95 -107
- package/dist/esm/version.js +1 -1
- package/dist/esm/workflow/base_node.js +1 -1
- package/dist/esm/workflow/graph.js +1 -1
- package/dist/esm/workflow/nodes/node_tool.js +2 -11
- package/dist/esm/workflow/request_input.js +1 -1
- package/dist/esm/workflow/run_llm_agent_as_node.js +1 -1
- package/dist/esm/workflow/workflow.js +1 -1
- package/dist/types/a2a/a2a_event.d.ts +7 -10
- package/dist/types/a2a/a2a_remote_agent.d.ts +5 -0
- package/dist/types/a2a/a2a_remote_agent_utils.d.ts +25 -0
- package/dist/types/a2a/agent_card.d.ts +9 -0
- package/dist/types/a2a/agent_executor.d.ts +1 -1
- package/dist/types/a2a/agent_to_a2a.d.ts +2 -0
- package/dist/types/a2a/auth.d.ts +5 -1
- package/dist/types/a2a/executor_context.d.ts +7 -1
- package/dist/types/a2a/index.d.ts +1 -1
- package/dist/types/a2a/request_metadata.d.ts +22 -0
- package/dist/types/agents/base_agent.d.ts +19 -16
- package/dist/types/agents/context.d.ts +8 -0
- package/dist/types/agents/functions.d.ts +72 -6
- package/dist/types/agents/invocation_context.d.ts +11 -3
- package/dist/types/agents/llm_agent.d.ts +9 -7
- package/dist/types/agents/processors/agent_transfer_llm_request_processor.d.ts +16 -1
- package/dist/types/agents/readonly_context.d.ts +4 -0
- package/dist/types/agents/run_config.d.ts +21 -8
- package/dist/types/artifacts/scoped_artifact_service.d.ts +13 -0
- package/dist/types/artifacts/session_artifact_service.d.ts +8 -1
- package/dist/types/auth/auth_credential.d.ts +13 -8
- package/dist/types/auth/auth_handler.d.ts +12 -1
- package/dist/types/auth/oauth2/oauth2_credential_refresher.d.ts +1 -1
- package/dist/types/auth/oauth2/oauth2_utils.d.ts +9 -0
- package/dist/types/auth/refresher/base_credential_refresher.d.ts +1 -1
- package/dist/types/code_executors/code_execution_utils.d.ts +1 -1
- package/dist/types/code_executors/container_code_executor.d.ts +89 -0
- package/dist/types/code_executors/docker_container.d.ts +79 -0
- package/dist/types/common.d.ts +22 -20
- package/dist/types/context/compaction_utils.d.ts +9 -1
- package/dist/types/errors/already_exists_error.d.ts +14 -0
- package/dist/types/errors/input_validation_error.d.ts +14 -0
- package/dist/types/errors/not_found_error.d.ts +14 -0
- package/dist/types/errors/session_not_found_error.d.ts +14 -0
- package/dist/types/errors/tool_execution_error.d.ts +36 -0
- package/dist/types/events/event_actions.d.ts +13 -0
- package/dist/types/index.d.ts +22 -1
- package/dist/types/memory/rag_memory_transcript.d.ts +55 -0
- package/dist/types/memory/vertex_ai_rag_api.d.ts +89 -0
- package/dist/types/memory/vertex_ai_rag_memory_service.d.ts +68 -0
- package/dist/types/models/chrome_prompt_llm.d.ts +210 -0
- package/dist/types/models/chrome_prompt_utils.d.ts +68 -0
- package/dist/types/models/google_llm.d.ts +8 -3
- package/dist/types/models/registry.d.ts +3 -2
- package/dist/types/plugins/_reflect_retry_utils.d.ts +72 -0
- package/dist/types/plugins/base_plugin.d.ts +12 -10
- package/dist/types/plugins/logging_plugin.d.ts +3 -2
- package/dist/types/plugins/reflect_retry_model_plugin.d.ts +132 -0
- package/dist/types/plugins/reflect_retry_tool_plugin.d.ts +187 -0
- package/dist/types/runner/runner.d.ts +7 -8
- package/dist/types/sessions/database_session_service.d.ts +1 -1
- package/dist/types/sessions/db/operations.d.ts +13 -1
- package/dist/types/sessions/db/schema.d.ts +23 -9
- package/dist/types/tools/base_tool.d.ts +11 -0
- package/dist/types/tools/base_toolset.d.ts +3 -4
- package/dist/types/tools/built_in_tool.d.ts +41 -0
- package/dist/types/tools/enterprise_web_search_tool.d.ts +4 -4
- package/dist/types/tools/forwarding_artifact_service.d.ts +23 -10
- package/dist/types/tools/function_tool.d.ts +42 -9
- package/dist/types/tools/google_maps_grounding_tool.d.ts +4 -4
- package/dist/types/tools/google_search_tool.d.ts +4 -4
- package/dist/types/tools/long_running_tool.d.ts +1 -1
- package/dist/types/tools/mcp/mcp_toolset.d.ts +11 -10
- package/dist/types/tools/openapi_tool/auth/auth_helpers.d.ts +5 -0
- package/dist/types/tools/openapi_tool/auth/credential_exchangers/auto_auth_credential_exchanger.d.ts +0 -1
- package/dist/types/tools/openapi_tool/auth/credential_exchangers/service_account_exchanger.d.ts +0 -1
- package/dist/types/tools/preload_memory_tool.d.ts +1 -1
- package/dist/types/tools/resume_inputs.d.ts +25 -0
- package/dist/types/tools/retrieval/base_retrieval_tool.d.ts +21 -0
- package/dist/types/tools/retrieval/files_retrieval.d.ts +50 -0
- package/dist/types/tools/retrieval/llama_index_retrieval.d.ts +62 -0
- package/dist/types/tools/url_context_tool.d.ts +4 -4
- package/dist/types/tools/vertex_ai_search_tool.d.ts +4 -4
- package/dist/types/tools/vertex_rag_retrieval_tool.d.ts +13 -12
- package/dist/types/utils/crypto_shim.d.ts +16 -0
- package/dist/types/utils/gemini_schema_util.d.ts +5 -7
- package/dist/types/utils/logger.d.ts +23 -1
- package/dist/types/utils/logger_browser.d.ts +28 -0
- package/dist/types/utils/logger_node.d.ts +20 -0
- package/dist/types/utils/output_schema_utils.d.ts +3 -3
- package/dist/types/utils/redact_inline_data.d.ts +16 -0
- package/dist/types/utils/redact_uri.d.ts +12 -8
- package/dist/types/utils/ssrf_guard.d.ts +32 -0
- package/dist/types/version.d.ts +1 -1
- package/dist/web/index_web.js +304 -3
- package/dist/web/index_web.js.map +7 -0
- package/package.json +17 -14
- package/dist/web/a2a/a2a_event.js +0 -290
- package/dist/web/a2a/a2a_remote_agent.js +0 -200
- package/dist/web/a2a/a2a_remote_agent_run_processor.js +0 -189
- package/dist/web/a2a/a2a_remote_agent_utils.js +0 -141
- package/dist/web/a2a/agent_card.js +0 -373
- package/dist/web/a2a/agent_executor.js +0 -246
- package/dist/web/a2a/agent_to_a2a.js +0 -126
- package/dist/web/a2a/auth.js +0 -41
- package/dist/web/a2a/event_converter_utils.js +0 -242
- package/dist/web/a2a/event_processor_utils.js +0 -209
- package/dist/web/a2a/executor_context.js +0 -28
- package/dist/web/a2a/index.js +0 -20
- package/dist/web/a2a/metadata_converter_utils.js +0 -115
- package/dist/web/a2a/part_converter_utils.js +0 -201
- package/dist/web/agents/active_streaming_tool.js +0 -25
- package/dist/web/agents/base_agent.js +0 -462
- package/dist/web/agents/context.js +0 -146
- package/dist/web/agents/framework_function_calls.js +0 -34
- package/dist/web/agents/functions.js +0 -462
- package/dist/web/agents/instructions.js +0 -188
- package/dist/web/agents/invocation_context.js +0 -126
- package/dist/web/agents/live_request_queue.js +0 -151
- package/dist/web/agents/llm_agent.js +0 -1514
- package/dist/web/agents/loop_agent.js +0 -131
- package/dist/web/agents/parallel_agent.js +0 -122
- package/dist/web/agents/processors/agent_transfer_llm_request_processor.js +0 -113
- package/dist/web/agents/processors/base_llm_processor.js +0 -21
- package/dist/web/agents/processors/basic_llm_request_processor.js +0 -84
- package/dist/web/agents/processors/code_execution_request_processor.js +0 -381
- package/dist/web/agents/processors/content_processor_utils.js +0 -432
- package/dist/web/agents/processors/content_request_processor.js +0 -73
- package/dist/web/agents/processors/context_compactor_request_processor.js +0 -78
- package/dist/web/agents/processors/identity_llm_request_processor.js +0 -59
- package/dist/web/agents/processors/instructions_llm_request_processor.js +0 -85
- package/dist/web/agents/processors/interactions_request_processor.js +0 -56
- package/dist/web/agents/processors/request_confirmation_llm_request_processor.js +0 -393
- package/dist/web/agents/processors/request_input_llm_request_processor.js +0 -228
- package/dist/web/agents/processors/tool_filter_request_processor.js +0 -72
- package/dist/web/agents/readonly_context.js +0 -60
- package/dist/web/agents/routed_agent.js +0 -161
- package/dist/web/agents/run_config.js +0 -74
- package/dist/web/agents/sequential_agent.js +0 -141
- package/dist/web/agents/transcription_entry.js +0 -7
- package/dist/web/agents/user_input_request.js +0 -135
- package/dist/web/apps/app.js +0 -52
- package/dist/web/apps/resumability_config.js +0 -33
- package/dist/web/artifacts/base_artifact_service.js +0 -7
- package/dist/web/artifacts/file_artifact_service.js +0 -568
- package/dist/web/artifacts/gcs_artifact_service.js +0 -298
- package/dist/web/artifacts/in_memory_artifact_service.js +0 -172
- package/dist/web/artifacts/registry.js +0 -36
- package/dist/web/artifacts/scoped_artifact_service.js +0 -89
- package/dist/web/auth/auth_credential.js +0 -18
- package/dist/web/auth/auth_handler.js +0 -151
- package/dist/web/auth/auth_preprocessor.js +0 -184
- package/dist/web/auth/auth_provider_registry.js +0 -37
- package/dist/web/auth/auth_schemes.js +0 -36
- package/dist/web/auth/auth_tool.js +0 -7
- package/dist/web/auth/base_auth_provider.js +0 -7
- package/dist/web/auth/credential_response_binding.js +0 -91
- package/dist/web/auth/credential_service/base_credential_service.js +0 -7
- package/dist/web/auth/credential_service/in_memory_credential_service.js +0 -50
- package/dist/web/auth/credential_service/session_state_credential_service.js +0 -27
- package/dist/web/auth/exchanger/base_credential_exchanger.js +0 -16
- package/dist/web/auth/exchanger/credential_exchanger_registry.js +0 -35
- package/dist/web/auth/oauth2/oauth2_credential_exchanger.js +0 -194
- package/dist/web/auth/oauth2/oauth2_credential_refresher.js +0 -105
- package/dist/web/auth/oauth2/oauth2_discovery.js +0 -196
- package/dist/web/auth/oauth2/oauth2_utils.js +0 -105
- package/dist/web/auth/refresher/credential_refresher_registry.js +0 -44
- package/dist/web/code_executors/agent_engine_sandbox_code_executor.js +0 -284
- package/dist/web/code_executors/base_code_executor.js +0 -68
- package/dist/web/code_executors/built_in_code_executor.js +0 -50
- package/dist/web/code_executors/code_execution_utils.js +0 -131
- package/dist/web/code_executors/code_executor_context.js +0 -174
- package/dist/web/code_executors/unsafe_local_code_executor.js +0 -221
- package/dist/web/common.js +0 -452
- package/dist/web/context/agent_controlled_context_compactor.js +0 -76
- package/dist/web/context/anchored_context_compactor.js +0 -120
- package/dist/web/context/base_context_compactor.js +0 -7
- package/dist/web/context/compaction_utils.js +0 -42
- package/dist/web/context/summarizers/base_summarizer.js +0 -7
- package/dist/web/context/summarizers/llm_summarizer.js +0 -91
- package/dist/web/context/token_based_context_compactor.js +0 -118
- package/dist/web/context/trajectory_thought_pruning_compactor.js +0 -47
- package/dist/web/context/truncating_context_compactor.js +0 -34
- package/dist/web/environment/base_environment.js +0 -71
- package/dist/web/environment/local_environment.js +0 -165
- package/dist/web/events/compacted_event.js +0 -51
- package/dist/web/events/event.js +0 -208
- package/dist/web/events/event_actions.js +0 -74
- package/dist/web/events/structured_events.js +0 -79
- package/dist/web/examples/base_example_provider.js +0 -32
- package/dist/web/examples/example.js +0 -7
- package/dist/web/examples/example_util.js +0 -83
- package/dist/web/features/feature_registry.js +0 -115
- package/dist/web/index.js +0 -57
- package/dist/web/integrations/agent_registry/agent_registry.js +0 -337
- package/dist/web/integrations/agent_registry/agent_registry_mcp_toolset.js +0 -120
- package/dist/web/integrations/agent_registry/helpers.js +0 -32
- package/dist/web/integrations/agent_registry/types.js +0 -20
- package/dist/web/memory/base_memory_service.js +0 -7
- package/dist/web/memory/in_memory_memory_service.js +0 -89
- package/dist/web/memory/memory_entry.js +0 -7
- package/dist/web/memory/vertex_ai_memory_bank_service.js +0 -496
- package/dist/web/models/apigee_llm.js +0 -227
- package/dist/web/models/base_llm.js +0 -78
- package/dist/web/models/base_llm_connection.js +0 -7
- package/dist/web/models/gemini_llm_connection.js +0 -183
- package/dist/web/models/google_llm.js +0 -396
- package/dist/web/models/interactions_utils.js +0 -745
- package/dist/web/models/llm_request.js +0 -57
- package/dist/web/models/llm_response.js +0 -48
- package/dist/web/models/registry.js +0 -100
- package/dist/web/models/routed_llm.js +0 -112
- package/dist/web/plugins/base_plugin.js +0 -305
- package/dist/web/plugins/global_instruction_plugin.js +0 -71
- package/dist/web/plugins/logging_plugin.js +0 -241
- package/dist/web/plugins/plugin_manager.js +0 -318
- package/dist/web/plugins/security_plugin.js +0 -148
- package/dist/web/runner/in_memory_runner.js +0 -50
- package/dist/web/runner/runner.js +0 -747
- package/dist/web/sessions/base_session_service.js +0 -123
- package/dist/web/sessions/database_session_service.js +0 -440
- package/dist/web/sessions/db/operations.js +0 -124
- package/dist/web/sessions/db/schema.js +0 -216
- package/dist/web/sessions/in_memory_session_service.js +0 -251
- package/dist/web/sessions/registry.js +0 -38
- package/dist/web/sessions/session.js +0 -23
- package/dist/web/sessions/state.js +0 -159
- package/dist/web/sessions/state_write_order.js +0 -74
- package/dist/web/sessions/vertex_ai_session_service.js +0 -546
- package/dist/web/skills/gcp_skill_registry.js +0 -80
- package/dist/web/skills/loader.js +0 -372
- package/dist/web/skills/prompt.js +0 -34
- package/dist/web/skills/skill.js +0 -67
- package/dist/web/skills/skill_registry.js +0 -7
- package/dist/web/telemetry/google_cloud.js +0 -99
- package/dist/web/telemetry/setup.js +0 -89
- package/dist/web/telemetry/tracing.js +0 -304
- package/dist/web/tools/agent_tool.js +0 -150
- package/dist/web/tools/base_tool.js +0 -116
- package/dist/web/tools/base_toolset.js +0 -62
- package/dist/web/tools/consolidate_context_tool.js +0 -55
- package/dist/web/tools/enterprise_web_search_tool.js +0 -60
- package/dist/web/tools/example_tool.js +0 -46
- package/dist/web/tools/exit_loop_tool.js +0 -47
- package/dist/web/tools/finish_task_tool.js +0 -92
- package/dist/web/tools/forwarding_artifact_service.js +0 -51
- package/dist/web/tools/function_tool.js +0 -151
- package/dist/web/tools/get_user_choice_tool.js +0 -27
- package/dist/web/tools/google_maps_grounding_tool.js +0 -59
- package/dist/web/tools/google_search_tool.js +0 -55
- package/dist/web/tools/load_artifacts_tool.js +0 -159
- package/dist/web/tools/load_memory_tool.js +0 -83
- package/dist/web/tools/long_running_tool.js +0 -58
- package/dist/web/tools/mcp/index.js +0 -11
- package/dist/web/tools/mcp/load_mcp_resource_tool.js +0 -111
- package/dist/web/tools/mcp/mcp_session_manager.js +0 -114
- package/dist/web/tools/mcp/mcp_tool.js +0 -47
- package/dist/web/tools/mcp/mcp_toolset.js +0 -144
- package/dist/web/tools/openapi_tool/auth/auth_helpers.js +0 -53
- package/dist/web/tools/openapi_tool/auth/credential_exchangers/auto_auth_credential_exchanger.js +0 -62
- package/dist/web/tools/openapi_tool/auth/credential_exchangers/service_account_exchanger.js +0 -113
- package/dist/web/tools/openapi_tool/openapi_spec_parser/openapi_spec_parser.js +0 -242
- package/dist/web/tools/openapi_tool/openapi_spec_parser/operation_parser.js +0 -200
- package/dist/web/tools/openapi_tool/openapi_spec_parser/tool_auth_handler.js +0 -98
- package/dist/web/tools/openapi_tool/openapi_toolset.js +0 -99
- package/dist/web/tools/openapi_tool/rest_api_tool.js +0 -247
- package/dist/web/tools/preload_memory_tool.js +0 -81
- package/dist/web/tools/request_input_tool.js +0 -29
- package/dist/web/tools/skill/list_skills_tool.js +0 -52
- package/dist/web/tools/skill/load_skill_resource_tool.js +0 -192
- package/dist/web/tools/skill/load_skill_tool.js +0 -96
- package/dist/web/tools/skill/run_skill_inline_script_tool.js +0 -191
- package/dist/web/tools/skill/run_skill_script_tool.js +0 -227
- package/dist/web/tools/skill/search_skills_tool.js +0 -84
- package/dist/web/tools/skill/skill_toolset.js +0 -185
- package/dist/web/tools/tool_confirmation.js +0 -43
- package/dist/web/tools/url_context_tool.js +0 -48
- package/dist/web/tools/vertex_ai_search_tool.js +0 -107
- package/dist/web/tools/vertex_rag_retrieval_tool.js +0 -40
- package/dist/web/utils/async_hooks_shim.js +0 -28
- package/dist/web/utils/async_queue.js +0 -88
- package/dist/web/utils/branch_trie.js +0 -16
- package/dist/web/utils/case_utils.js +0 -28
- package/dist/web/utils/client_labels.js +0 -70
- package/dist/web/utils/crypto_shim.js +0 -18
- package/dist/web/utils/deprecated.js +0 -40
- package/dist/web/utils/env_aware_utils.js +0 -115
- package/dist/web/utils/error_utils.js +0 -101
- package/dist/web/utils/experimental.js +0 -54
- package/dist/web/utils/failover_utils.js +0 -100
- package/dist/web/utils/file_extension_utils.js +0 -55
- package/dist/web/utils/file_utils.js +0 -108
- package/dist/web/utils/gemini_schema_util.js +0 -177
- package/dist/web/utils/genai_schema_to_json.js +0 -80
- package/dist/web/utils/live_connection_utils.js +0 -257
- package/dist/web/utils/logger.js +0 -140
- package/dist/web/utils/model_name.js +0 -75
- package/dist/web/utils/object_notation_utils.js +0 -54
- package/dist/web/utils/optional_peer.js +0 -38
- package/dist/web/utils/output_schema_utils.js +0 -18
- package/dist/web/utils/partial_copy.js +0 -26
- package/dist/web/utils/redact_uri.js +0 -39
- package/dist/web/utils/schema.js +0 -167
- package/dist/web/utils/simple_zod_to_json.js +0 -134
- package/dist/web/utils/streaming_utils.js +0 -438
- package/dist/web/utils/task.js +0 -38
- package/dist/web/utils/variant_utils.js +0 -23
- package/dist/web/utils/vertex_ai_utils.js +0 -27
- package/dist/web/version.js +0 -11
- package/dist/web/workflow/base_node.js +0 -215
- package/dist/web/workflow/branch_path.js +0 -77
- package/dist/web/workflow/dynamic_node_scheduler.js +0 -202
- package/dist/web/workflow/errors.js +0 -140
- package/dist/web/workflow/graph.js +0 -127
- package/dist/web/workflow/index.js +0 -80
- package/dist/web/workflow/node.js +0 -87
- package/dist/web/workflow/node_builders.js +0 -40
- package/dist/web/workflow/node_context.js +0 -236
- package/dist/web/workflow/node_error_event.js +0 -86
- package/dist/web/workflow/node_runner.js +0 -481
- package/dist/web/workflow/node_state.js +0 -43
- package/dist/web/workflow/node_status.js +0 -20
- package/dist/web/workflow/nodes/function_node.js +0 -221
- package/dist/web/workflow/nodes/join_node.js +0 -47
- package/dist/web/workflow/nodes/node_tool.js +0 -131
- package/dist/web/workflow/nodes/parallel_worker.js +0 -120
- package/dist/web/workflow/nodes/tool_node.js +0 -126
- package/dist/web/workflow/request_input.js +0 -36
- package/dist/web/workflow/retry_config.js +0 -43
- package/dist/web/workflow/run_llm_agent_as_node.js +0 -266
- package/dist/web/workflow/run_node_as_invocation.js +0 -170
- package/dist/web/workflow/schedule_dynamic_node.js +0 -26
- package/dist/web/workflow/trigger.js +0 -7
- package/dist/web/workflow/utils/graph_parser.js +0 -188
- package/dist/web/workflow/utils/graph_validation.js +0 -189
- package/dist/web/workflow/utils/hitl_utils.js +0 -239
- package/dist/web/workflow/utils/rehydration_utils.js +0 -342
- package/dist/web/workflow/utils/retry_utils.js +0 -82
- package/dist/web/workflow/utils/workflow_graph_utils.js +0 -115
- package/dist/web/workflow/workflow.js +0 -529
- /package/dist/{web/artifacts/session_artifact_service.js → esm/tools/resume_inputs.js} +0 -0
|
@@ -1,1514 +0,0 @@
|
|
|
1
|
-
import {createRequire as topLevelCreateRequire} from 'module';
|
|
2
|
-
const require = topLevelCreateRequire(import.meta.url);
|
|
3
|
-
var __defProp = Object.defineProperty;
|
|
4
|
-
var __defProps = Object.defineProperties;
|
|
5
|
-
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
6
|
-
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
7
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
-
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
9
|
-
var __knownSymbol = (name, symbol) => (symbol = Symbol[name]) ? symbol : Symbol.for("Symbol." + name);
|
|
10
|
-
var __typeError = (msg) => {
|
|
11
|
-
throw TypeError(msg);
|
|
12
|
-
};
|
|
13
|
-
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
14
|
-
var __spreadValues = (a, b) => {
|
|
15
|
-
for (var prop in b || (b = {}))
|
|
16
|
-
if (__hasOwnProp.call(b, prop))
|
|
17
|
-
__defNormalProp(a, prop, b[prop]);
|
|
18
|
-
if (__getOwnPropSymbols)
|
|
19
|
-
for (var prop of __getOwnPropSymbols(b)) {
|
|
20
|
-
if (__propIsEnum.call(b, prop))
|
|
21
|
-
__defNormalProp(a, prop, b[prop]);
|
|
22
|
-
}
|
|
23
|
-
return a;
|
|
24
|
-
};
|
|
25
|
-
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
26
|
-
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
27
|
-
var __await = function(promise, isYieldStar) {
|
|
28
|
-
this[0] = promise;
|
|
29
|
-
this[1] = isYieldStar;
|
|
30
|
-
};
|
|
31
|
-
var __asyncGenerator = (__this, __arguments, generator) => {
|
|
32
|
-
var resume = (k, v, yes, no) => {
|
|
33
|
-
try {
|
|
34
|
-
var x = generator[k](v), isAwait = (v = x.value) instanceof __await, done = x.done;
|
|
35
|
-
Promise.resolve(isAwait ? v[0] : v).then((y) => isAwait ? resume(k === "return" ? k : "next", v[1] ? { done: y.done, value: y.value } : y, yes, no) : yes({ value: y, done })).catch((e) => resume("throw", e, yes, no));
|
|
36
|
-
} catch (e) {
|
|
37
|
-
no(e);
|
|
38
|
-
}
|
|
39
|
-
}, method = (k) => it[k] = (x) => new Promise((yes, no) => resume(k, x, yes, no)), it = {};
|
|
40
|
-
return generator = generator.apply(__this, __arguments), it[__knownSymbol("asyncIterator")] = () => it, method("next"), method("throw"), method("return"), it;
|
|
41
|
-
};
|
|
42
|
-
var __yieldStar = (value) => {
|
|
43
|
-
var obj = value[__knownSymbol("asyncIterator")], isAwait = false, method, it = {};
|
|
44
|
-
if (obj == null) {
|
|
45
|
-
obj = value[__knownSymbol("iterator")]();
|
|
46
|
-
method = (k) => it[k] = (x) => obj[k](x);
|
|
47
|
-
} else {
|
|
48
|
-
obj = obj.call(value);
|
|
49
|
-
method = (k) => it[k] = (v) => {
|
|
50
|
-
if (isAwait) {
|
|
51
|
-
isAwait = false;
|
|
52
|
-
if (k === "throw") throw v;
|
|
53
|
-
return v;
|
|
54
|
-
}
|
|
55
|
-
isAwait = true;
|
|
56
|
-
return {
|
|
57
|
-
done: false,
|
|
58
|
-
value: new __await(new Promise((resolve) => {
|
|
59
|
-
var x = obj[k](v);
|
|
60
|
-
if (!(x instanceof Object)) __typeError("Object expected");
|
|
61
|
-
resolve(x);
|
|
62
|
-
}), 1)
|
|
63
|
-
};
|
|
64
|
-
};
|
|
65
|
-
}
|
|
66
|
-
return it[__knownSymbol("iterator")] = () => it, method("next"), "throw" in obj ? method("throw") : it.throw = (x) => {
|
|
67
|
-
throw x;
|
|
68
|
-
}, "return" in obj && method("return"), it;
|
|
69
|
-
};
|
|
70
|
-
var __forAwait = (obj, it, method) => (it = obj[__knownSymbol("asyncIterator")]) ? it.call(obj) : (obj = obj[__knownSymbol("iterator")](), it = {}, method = (key, fn) => (fn = obj[key]) && (it[key] = (arg) => new Promise((yes, no, done) => (arg = fn.call(obj, arg), done = arg.done, Promise.resolve(arg.value).then((value) => yes({ value, done }), no)))), method("next"), method("return"), it);
|
|
71
|
-
/**
|
|
72
|
-
* @license
|
|
73
|
-
* Copyright 2025 Google LLC
|
|
74
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
75
|
-
*/
|
|
76
|
-
var _a, _b;
|
|
77
|
-
import { context, trace } from "@opentelemetry/api";
|
|
78
|
-
import { FinishTaskTool } from "../tools/finish_task_tool.js";
|
|
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";
|
|
84
|
-
import {
|
|
85
|
-
createEvent,
|
|
86
|
-
createNewEventId,
|
|
87
|
-
getFunctionCalls,
|
|
88
|
-
getFunctionResponses,
|
|
89
|
-
isFinalResponse,
|
|
90
|
-
populateClientFunctionCallId
|
|
91
|
-
} from "../events/event.js";
|
|
92
|
-
import { isBaseLlm } from "../models/base_llm.js";
|
|
93
|
-
import { LLMRegistry } from "../models/registry.js";
|
|
94
|
-
import { isBaseTool } from "../tools/base_tool.js";
|
|
95
|
-
import { logger } from "../utils/logger.js";
|
|
96
|
-
import { canUseOutputSchemaWithTools } from "../utils/output_schema_utils.js";
|
|
97
|
-
import { Context } from "./context.js";
|
|
98
|
-
import {
|
|
99
|
-
runAsyncGeneratorWithOtelContext,
|
|
100
|
-
traceCallLlm,
|
|
101
|
-
tracer
|
|
102
|
-
} from "../telemetry/tracing.js";
|
|
103
|
-
import { parseWithSchema } from "../utils/schema.js";
|
|
104
|
-
import { isZodObject, zodObjectToSchema } from "../utils/simple_zod_to_json.js";
|
|
105
|
-
import { BaseAgent } from "./base_agent.js";
|
|
106
|
-
import {
|
|
107
|
-
generateAuthEvent,
|
|
108
|
-
generateRequestConfirmationEvent,
|
|
109
|
-
getLongRunningFunctionCalls,
|
|
110
|
-
handleFunctionCallsAsync
|
|
111
|
-
} from "./functions.js";
|
|
112
|
-
import { AUTH_PREPROCESSOR } from "../auth/auth_preprocessor.js";
|
|
113
|
-
import { requireAgent } from "./invocation_context.js";
|
|
114
|
-
import { AGENT_TRANSFER_LLM_REQUEST_PROCESSOR } from "./processors/agent_transfer_llm_request_processor.js";
|
|
115
|
-
import { BASIC_LLM_REQUEST_PROCESSOR } from "./processors/basic_llm_request_processor.js";
|
|
116
|
-
import { CODE_EXECUTION_REQUEST_PROCESSOR } from "./processors/code_execution_request_processor.js";
|
|
117
|
-
import { CONTENT_REQUEST_PROCESSOR } from "./processors/content_request_processor.js";
|
|
118
|
-
import { ContextCompactorRequestProcessor } from "./processors/context_compactor_request_processor.js";
|
|
119
|
-
import { IDENTITY_LLM_REQUEST_PROCESSOR } from "./processors/identity_llm_request_processor.js";
|
|
120
|
-
import { INSTRUCTIONS_LLM_REQUEST_PROCESSOR } from "./processors/instructions_llm_request_processor.js";
|
|
121
|
-
import { INTERACTIONS_REQUEST_PROCESSOR } from "./processors/interactions_request_processor.js";
|
|
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";
|
|
124
|
-
import { TOOL_FILTER_REQUEST_PROCESSOR } from "./processors/tool_filter_request_processor.js";
|
|
125
|
-
import { ReadonlyContext } from "./readonly_context.js";
|
|
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");
|
|
177
|
-
const ADK_AGENT_NAME_LABEL_KEY = "adk_agent_name";
|
|
178
|
-
async function convertToolUnionToTools(toolUnion, context2) {
|
|
179
|
-
if (isBaseTool(toolUnion)) {
|
|
180
|
-
return [toolUnion];
|
|
181
|
-
}
|
|
182
|
-
if (isBaseNode(toolUnion)) {
|
|
183
|
-
return [new NodeTool(toolUnion)];
|
|
184
|
-
}
|
|
185
|
-
return await toolUnion.getTools(context2);
|
|
186
|
-
}
|
|
187
|
-
__name(convertToolUnionToTools, "convertToolUnionToTools");
|
|
188
|
-
const LLM_AGENT_SIGNATURE_SYMBOL = Symbol.for("google.adk.llmAgent");
|
|
189
|
-
function isLlmAgent(obj) {
|
|
190
|
-
return typeof obj === "object" && obj !== null && LLM_AGENT_SIGNATURE_SYMBOL in obj && obj[LLM_AGENT_SIGNATURE_SYMBOL] === true;
|
|
191
|
-
}
|
|
192
|
-
__name(isLlmAgent, "isLlmAgent");
|
|
193
|
-
const _LlmAgent = class _LlmAgent extends (_b = BaseAgent, _a = LLM_AGENT_SIGNATURE_SYMBOL, _b) {
|
|
194
|
-
constructor(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
|
-
}));
|
|
200
|
-
/** A unique symbol to identify ADK LLM agent class. */
|
|
201
|
-
this[_a] = true;
|
|
202
|
-
this.model = config.model;
|
|
203
|
-
this.instruction = (_c = config.instruction) != null ? _c : "";
|
|
204
|
-
this.globalInstruction = (_d = config.globalInstruction) != null ? _d : "";
|
|
205
|
-
this.tools = (_e = config.tools) != null ? _e : [];
|
|
206
|
-
this.generateContentConfig = config.generateContentConfig;
|
|
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;
|
|
213
|
-
this.inputSchema = isZodObject(config.inputSchema) ? zodObjectToSchema(config.inputSchema) : config.inputSchema;
|
|
214
|
-
this.outputSchema = isZodObject(config.outputSchema) ? zodObjectToSchema(config.outputSchema) : config.outputSchema;
|
|
215
|
-
this.mode = config.mode;
|
|
216
|
-
this.outputKey = config.outputKey;
|
|
217
|
-
this.beforeModelCallback = config.beforeModelCallback;
|
|
218
|
-
this.afterModelCallback = config.afterModelCallback;
|
|
219
|
-
this.beforeToolCallback = config.beforeToolCallback;
|
|
220
|
-
this.afterToolCallback = config.afterToolCallback;
|
|
221
|
-
this.codeExecutor = config.codeExecutor;
|
|
222
|
-
this.requestProcessors = (_i = config.requestProcessors) != null ? _i : [
|
|
223
|
-
BASIC_LLM_REQUEST_PROCESSOR,
|
|
224
|
-
AUTH_PREPROCESSOR,
|
|
225
|
-
IDENTITY_LLM_REQUEST_PROCESSOR,
|
|
226
|
-
INSTRUCTIONS_LLM_REQUEST_PROCESSOR,
|
|
227
|
-
REQUEST_CONFIRMATION_LLM_REQUEST_PROCESSOR,
|
|
228
|
-
REQUEST_INPUT_LLM_REQUEST_PROCESSOR,
|
|
229
|
-
CONTENT_REQUEST_PROCESSOR,
|
|
230
|
-
INTERACTIONS_REQUEST_PROCESSOR,
|
|
231
|
-
CODE_EXECUTION_REQUEST_PROCESSOR,
|
|
232
|
-
TOOL_FILTER_REQUEST_PROCESSOR
|
|
233
|
-
];
|
|
234
|
-
if (!config.requestProcessors && config.contextCompactors && config.contextCompactors.length > 0) {
|
|
235
|
-
const contentIndex = this.requestProcessors.indexOf(
|
|
236
|
-
CONTENT_REQUEST_PROCESSOR
|
|
237
|
-
);
|
|
238
|
-
if (contentIndex !== -1) {
|
|
239
|
-
this.requestProcessors.splice(
|
|
240
|
-
contentIndex,
|
|
241
|
-
0,
|
|
242
|
-
new ContextCompactorRequestProcessor(config.contextCompactors)
|
|
243
|
-
);
|
|
244
|
-
} else {
|
|
245
|
-
this.requestProcessors.push(
|
|
246
|
-
new ContextCompactorRequestProcessor(config.contextCompactors)
|
|
247
|
-
);
|
|
248
|
-
}
|
|
249
|
-
}
|
|
250
|
-
this.responseProcessors = (_j = config.responseProcessors) != null ? _j : [];
|
|
251
|
-
const agentTransferDisabled = this.disallowTransferToParent && this.disallowTransferToPeers && !((_k = this.subAgents) == null ? void 0 : _k.length);
|
|
252
|
-
if (!agentTransferDisabled) {
|
|
253
|
-
this.requestProcessors.push(AGENT_TRANSFER_LLM_REQUEST_PROCESSOR);
|
|
254
|
-
}
|
|
255
|
-
if (config.generateContentConfig) {
|
|
256
|
-
if (config.generateContentConfig.tools) {
|
|
257
|
-
throw new Error("All tools must be set via LlmAgent.tools.");
|
|
258
|
-
}
|
|
259
|
-
if (config.generateContentConfig.systemInstruction) {
|
|
260
|
-
throw new Error(
|
|
261
|
-
"System instruction must be set via LlmAgent.instruction."
|
|
262
|
-
);
|
|
263
|
-
}
|
|
264
|
-
if (config.generateContentConfig.responseSchema) {
|
|
265
|
-
throw new Error(
|
|
266
|
-
"Response schema must be set via LlmAgent.output_schema."
|
|
267
|
-
);
|
|
268
|
-
}
|
|
269
|
-
} else {
|
|
270
|
-
this.generateContentConfig = {};
|
|
271
|
-
}
|
|
272
|
-
if (this.outputSchema) {
|
|
273
|
-
const transferRequested = config.disallowTransferToParent === false || config.disallowTransferToPeers === false || !!((_l = this.subAgents) == null ? void 0 : _l.length);
|
|
274
|
-
if (transferRequested) {
|
|
275
|
-
logger.warn(
|
|
276
|
-
"Invalid config for agent ".concat(this.name, ": outputSchema cannot co-exist with agent transfer configurations. Setting disallowTransferToParent=true, disallowTransferToPeers=true")
|
|
277
|
-
);
|
|
278
|
-
}
|
|
279
|
-
this.disallowTransferToParent = true;
|
|
280
|
-
this.disallowTransferToPeers = true;
|
|
281
|
-
}
|
|
282
|
-
}
|
|
283
|
-
/**
|
|
284
|
-
* The resolved BaseLlm instance.
|
|
285
|
-
*
|
|
286
|
-
* When not set, the agent will inherit the model from its ancestor.
|
|
287
|
-
*/
|
|
288
|
-
get canonicalModel() {
|
|
289
|
-
if (isBaseLlm(this.model)) {
|
|
290
|
-
return this.model;
|
|
291
|
-
}
|
|
292
|
-
if (typeof this.model === "string" && this.model) {
|
|
293
|
-
return LLMRegistry.newLlm(this.model);
|
|
294
|
-
}
|
|
295
|
-
let ancestorAgent = this.parentAgent;
|
|
296
|
-
while (ancestorAgent) {
|
|
297
|
-
if (isLlmAgent(ancestorAgent)) {
|
|
298
|
-
return ancestorAgent.canonicalModel;
|
|
299
|
-
}
|
|
300
|
-
ancestorAgent = ancestorAgent.parentAgent;
|
|
301
|
-
}
|
|
302
|
-
throw new Error("No model found for ".concat(this.name, "."));
|
|
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
|
-
}
|
|
314
|
-
/**
|
|
315
|
-
* The resolved instruction field to construct instruction for this
|
|
316
|
-
* agent.
|
|
317
|
-
*
|
|
318
|
-
* This method is only for use by Agent Development Kit.
|
|
319
|
-
* @param context The context to retrieve the session state.
|
|
320
|
-
* @returns The resolved instruction field.
|
|
321
|
-
*/
|
|
322
|
-
async canonicalInstruction(context2) {
|
|
323
|
-
if (typeof this.instruction === "string") {
|
|
324
|
-
return { instruction: this.instruction, requireStateInjection: true };
|
|
325
|
-
}
|
|
326
|
-
return {
|
|
327
|
-
instruction: await this.instruction(context2),
|
|
328
|
-
requireStateInjection: false
|
|
329
|
-
};
|
|
330
|
-
}
|
|
331
|
-
/**
|
|
332
|
-
* The resolved globalInstruction field to construct global instruction.
|
|
333
|
-
*
|
|
334
|
-
* This method is only for use by Agent Development Kit.
|
|
335
|
-
* @param context The context to retrieve the session state.
|
|
336
|
-
* @returns The resolved globalInstruction field.
|
|
337
|
-
* @deprecated Use GlobalInstructionPlugin instead.
|
|
338
|
-
*/
|
|
339
|
-
async canonicalGlobalInstruction(context2) {
|
|
340
|
-
if (typeof this.globalInstruction === "string") {
|
|
341
|
-
return {
|
|
342
|
-
instruction: this.globalInstruction,
|
|
343
|
-
requireStateInjection: true
|
|
344
|
-
};
|
|
345
|
-
}
|
|
346
|
-
return {
|
|
347
|
-
instruction: await this.globalInstruction(context2),
|
|
348
|
-
requireStateInjection: false
|
|
349
|
-
};
|
|
350
|
-
}
|
|
351
|
-
/**
|
|
352
|
-
* The resolved tools field as a list of BaseTool based on the context.
|
|
353
|
-
*
|
|
354
|
-
* This method is only for use by Agent Development Kit.
|
|
355
|
-
*/
|
|
356
|
-
async canonicalTools(context2) {
|
|
357
|
-
const resolvedTools = [];
|
|
358
|
-
for (const toolUnion of this.tools) {
|
|
359
|
-
const tools = await convertToolUnionToTools(toolUnion, context2);
|
|
360
|
-
resolvedTools.push(...tools);
|
|
361
|
-
}
|
|
362
|
-
return resolvedTools;
|
|
363
|
-
}
|
|
364
|
-
/**
|
|
365
|
-
* Normalizes a callback or an array of callbacks into an array of callbacks.
|
|
366
|
-
*
|
|
367
|
-
* @param callback The callback or an array of callbacks.
|
|
368
|
-
* @returns An array of callbacks.
|
|
369
|
-
*/
|
|
370
|
-
static normalizeCallbackArray(callback) {
|
|
371
|
-
if (!callback) {
|
|
372
|
-
return [];
|
|
373
|
-
}
|
|
374
|
-
if (Array.isArray(callback)) {
|
|
375
|
-
return callback;
|
|
376
|
-
}
|
|
377
|
-
return [callback];
|
|
378
|
-
}
|
|
379
|
-
/**
|
|
380
|
-
* The resolved beforeModelCallback field as a list of
|
|
381
|
-
* SingleBeforeModelCallback.
|
|
382
|
-
*
|
|
383
|
-
* This method is only for use by Agent Development Kit.
|
|
384
|
-
*/
|
|
385
|
-
get canonicalBeforeModelCallbacks() {
|
|
386
|
-
return _LlmAgent.normalizeCallbackArray(this.beforeModelCallback);
|
|
387
|
-
}
|
|
388
|
-
/**
|
|
389
|
-
* The resolved afterModelCallback field as a list of
|
|
390
|
-
* SingleAfterModelCallback.
|
|
391
|
-
*
|
|
392
|
-
* This method is only for use by Agent Development Kit.
|
|
393
|
-
*/
|
|
394
|
-
get canonicalAfterModelCallbacks() {
|
|
395
|
-
return _LlmAgent.normalizeCallbackArray(this.afterModelCallback);
|
|
396
|
-
}
|
|
397
|
-
/**
|
|
398
|
-
* The resolved beforeToolCallback field as a list of
|
|
399
|
-
* BeforeToolCallback.
|
|
400
|
-
*
|
|
401
|
-
* This method is only for use by Agent Development Kit.
|
|
402
|
-
*/
|
|
403
|
-
get canonicalBeforeToolCallbacks() {
|
|
404
|
-
return _LlmAgent.normalizeCallbackArray(this.beforeToolCallback);
|
|
405
|
-
}
|
|
406
|
-
/**
|
|
407
|
-
* The resolved afterToolCallback field as a list of AfterToolCallback.
|
|
408
|
-
*
|
|
409
|
-
* This method is only for use by Agent Development Kit.
|
|
410
|
-
*/
|
|
411
|
-
get canonicalAfterToolCallbacks() {
|
|
412
|
-
return _LlmAgent.normalizeCallbackArray(this.afterToolCallback);
|
|
413
|
-
}
|
|
414
|
-
/**
|
|
415
|
-
* Saves the agent's final response to the session state if configured.
|
|
416
|
-
*
|
|
417
|
-
* It extracts the text content from the final response event, optionally
|
|
418
|
-
* parses it as JSON based on the output schema, and stores the result in the
|
|
419
|
-
* session state using the specified output key.
|
|
420
|
-
*
|
|
421
|
-
* @param event The event to process.
|
|
422
|
-
*/
|
|
423
|
-
maybeSaveOutputToState(event) {
|
|
424
|
-
var _a2, _b2;
|
|
425
|
-
if (event.author !== this.name) {
|
|
426
|
-
logger.debug(
|
|
427
|
-
"Skipping output save for agent ".concat(this.name, ": event authored by ").concat(event.author)
|
|
428
|
-
);
|
|
429
|
-
return;
|
|
430
|
-
}
|
|
431
|
-
if (!this.outputKey) {
|
|
432
|
-
logger.debug(
|
|
433
|
-
"Skipping output save for agent ".concat(this.name, ": outputKey is not set")
|
|
434
|
-
);
|
|
435
|
-
return;
|
|
436
|
-
}
|
|
437
|
-
if (!isFinalResponse(event)) {
|
|
438
|
-
logger.debug(
|
|
439
|
-
"Skipping output save for agent ".concat(this.name, ": event is not a final response")
|
|
440
|
-
);
|
|
441
|
-
return;
|
|
442
|
-
}
|
|
443
|
-
if (!((_b2 = (_a2 = event.content) == null ? void 0 : _a2.parts) == null ? void 0 : _b2.length)) {
|
|
444
|
-
logger.debug(
|
|
445
|
-
"Skipping output save for agent ".concat(this.name, ": event content is empty")
|
|
446
|
-
);
|
|
447
|
-
return;
|
|
448
|
-
}
|
|
449
|
-
const resultStr = event.content.parts.map((part) => part.text ? part.text : "").join("");
|
|
450
|
-
let result = resultStr;
|
|
451
|
-
if (this.outputSchema) {
|
|
452
|
-
if (!resultStr.trim()) {
|
|
453
|
-
return;
|
|
454
|
-
}
|
|
455
|
-
let parsed;
|
|
456
|
-
try {
|
|
457
|
-
parsed = JSON.parse(resultStr);
|
|
458
|
-
} catch (e) {
|
|
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;
|
|
471
|
-
}
|
|
472
|
-
}
|
|
473
|
-
event.actions.stateDelta[this.outputKey] = result;
|
|
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
|
-
}
|
|
504
|
-
runAsyncImpl(context2) {
|
|
505
|
-
return __asyncGenerator(this, null, function* () {
|
|
506
|
-
var _a2, _b2;
|
|
507
|
-
while (true) {
|
|
508
|
-
let lastEvent = void 0;
|
|
509
|
-
let stepHadToolCalls = false;
|
|
510
|
-
try {
|
|
511
|
-
for (var iter = __forAwait(this.runOneStepAsync(context2)), more, temp, error; more = !(temp = yield new __await(iter.next())).done; more = false) {
|
|
512
|
-
const event = temp.value;
|
|
513
|
-
if ((_a2 = context2.abortSignal) == null ? void 0 : _a2.aborted) {
|
|
514
|
-
return;
|
|
515
|
-
}
|
|
516
|
-
lastEvent = event;
|
|
517
|
-
if (getFunctionCalls(event).length > 0 || getFunctionResponses(event).length > 0) {
|
|
518
|
-
stepHadToolCalls = true;
|
|
519
|
-
}
|
|
520
|
-
this.maybeSaveOutputToState(event);
|
|
521
|
-
yield event;
|
|
522
|
-
}
|
|
523
|
-
} catch (temp) {
|
|
524
|
-
error = [temp];
|
|
525
|
-
} finally {
|
|
526
|
-
try {
|
|
527
|
-
more && (temp = iter.return) && (yield new __await(temp.call(iter)));
|
|
528
|
-
} finally {
|
|
529
|
-
if (error)
|
|
530
|
-
throw error[0];
|
|
531
|
-
}
|
|
532
|
-
}
|
|
533
|
-
if (!lastEvent) {
|
|
534
|
-
break;
|
|
535
|
-
}
|
|
536
|
-
const isEmptyMetadataEvent = lastEvent.author === this.name && !lastEvent.partial && (!((_b2 = lastEvent.content) == null ? void 0 : _b2.parts) || lastEvent.content.parts.length === 0);
|
|
537
|
-
if (isFinalResponse(lastEvent) && !(isEmptyMetadataEvent && stepHadToolCalls)) {
|
|
538
|
-
break;
|
|
539
|
-
}
|
|
540
|
-
if (lastEvent.partial) {
|
|
541
|
-
logger.warn("The last event is partial, which is not expected.");
|
|
542
|
-
break;
|
|
543
|
-
}
|
|
544
|
-
}
|
|
545
|
-
});
|
|
546
|
-
}
|
|
547
|
-
runLiveImpl(context2) {
|
|
548
|
-
return __asyncGenerator(this, null, function* () {
|
|
549
|
-
var _a2;
|
|
550
|
-
try {
|
|
551
|
-
for (var iter = __forAwait(this.runLiveFlow(context2)), more, temp, error; more = !(temp = yield new __await(iter.next())).done; more = false) {
|
|
552
|
-
const event = temp.value;
|
|
553
|
-
if ((_a2 = context2.abortSignal) == null ? void 0 : _a2.aborted) {
|
|
554
|
-
return;
|
|
555
|
-
}
|
|
556
|
-
this.maybeSaveOutputToState(event);
|
|
557
|
-
yield event;
|
|
558
|
-
}
|
|
559
|
-
} catch (temp) {
|
|
560
|
-
error = [temp];
|
|
561
|
-
} finally {
|
|
562
|
-
try {
|
|
563
|
-
more && (temp = iter.return) && (yield new __await(temp.call(iter)));
|
|
564
|
-
} finally {
|
|
565
|
-
if (error)
|
|
566
|
-
throw error[0];
|
|
567
|
-
}
|
|
568
|
-
}
|
|
569
|
-
if (context2.endInvocation) {
|
|
570
|
-
return;
|
|
571
|
-
}
|
|
572
|
-
});
|
|
573
|
-
}
|
|
574
|
-
// --------------------------------------------------------------------------
|
|
575
|
-
// #START LlmFlow Logic
|
|
576
|
-
// --------------------------------------------------------------------------
|
|
577
|
-
/**
|
|
578
|
-
* Runs the bidirectional (live) flow for this agent.
|
|
579
|
-
*
|
|
580
|
-
* Establishes a live connection to the model, drains the invocation's
|
|
581
|
-
* `liveRequestQueue` into the connection on a parallel task, and yields
|
|
582
|
-
* events derived from server messages until the queue closes, the model
|
|
583
|
-
* finishes, or an agent transfer occurs.
|
|
584
|
-
*
|
|
585
|
-
* If the live connection drops (network failure, server `goAway`) and a
|
|
586
|
-
* session resumption handle has been observed, the flow transparently
|
|
587
|
-
* reconnects using that handle up to {@link MAX_LIVE_RECONNECT_ATTEMPTS}
|
|
588
|
-
* times. Subsequent reconnects skip `sendHistory` because the server
|
|
589
|
-
* already holds the conversation state associated with the handle.
|
|
590
|
-
*/
|
|
591
|
-
runLiveFlow(invocationContext) {
|
|
592
|
-
return __asyncGenerator(this, null, function* () {
|
|
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;
|
|
1008
|
-
});
|
|
1009
|
-
}
|
|
1010
|
-
runOneStepAsync(invocationContext) {
|
|
1011
|
-
return __asyncGenerator(this, null, function* () {
|
|
1012
|
-
var _a2, _b2, _c;
|
|
1013
|
-
const llmRequest = {
|
|
1014
|
-
contents: [],
|
|
1015
|
-
toolsDict: {},
|
|
1016
|
-
liveConnectConfig: {}
|
|
1017
|
-
};
|
|
1018
|
-
for (const processor of this.requestProcessors) {
|
|
1019
|
-
try {
|
|
1020
|
-
for (var iter = __forAwait(processor.runAsync(
|
|
1021
|
-
invocationContext,
|
|
1022
|
-
llmRequest
|
|
1023
|
-
)), more, temp, error; more = !(temp = yield new __await(iter.next())).done; more = false) {
|
|
1024
|
-
const event = temp.value;
|
|
1025
|
-
if ((_a2 = invocationContext.abortSignal) == null ? void 0 : _a2.aborted) {
|
|
1026
|
-
return;
|
|
1027
|
-
}
|
|
1028
|
-
yield event;
|
|
1029
|
-
}
|
|
1030
|
-
} catch (temp) {
|
|
1031
|
-
error = [temp];
|
|
1032
|
-
} finally {
|
|
1033
|
-
try {
|
|
1034
|
-
more && (temp = iter.return) && (yield new __await(temp.call(iter)));
|
|
1035
|
-
} finally {
|
|
1036
|
-
if (error)
|
|
1037
|
-
throw error[0];
|
|
1038
|
-
}
|
|
1039
|
-
}
|
|
1040
|
-
}
|
|
1041
|
-
const allTools = [...this.tools];
|
|
1042
|
-
if (this.mode === "task") {
|
|
1043
|
-
allTools.push(this.finishTaskTool);
|
|
1044
|
-
} else if (this.outputSchema && allTools.length > 0 && !canUseOutputSchemaWithTools(this.canonicalModel.model)) {
|
|
1045
|
-
const setModelResponseTool = new FunctionTool({
|
|
1046
|
-
name: "set_model_response",
|
|
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.",
|
|
1048
|
-
parameters: this.outputSchema,
|
|
1049
|
-
execute: /* @__PURE__ */ __name(async (args, toolContext) => {
|
|
1050
|
-
if (toolContext) {
|
|
1051
|
-
toolContext.actions.skipSummarization = true;
|
|
1052
|
-
}
|
|
1053
|
-
return JSON.stringify(args);
|
|
1054
|
-
}, "execute")
|
|
1055
|
-
});
|
|
1056
|
-
allTools.push(setModelResponseTool);
|
|
1057
|
-
}
|
|
1058
|
-
const modelResponseEvent = createEvent({
|
|
1059
|
-
invocationId: invocationContext.invocationId,
|
|
1060
|
-
author: this.name,
|
|
1061
|
-
branch: invocationContext.branch
|
|
1062
|
-
});
|
|
1063
|
-
for (const toolUnion of allTools) {
|
|
1064
|
-
const toolContext = new Context({
|
|
1065
|
-
invocationContext,
|
|
1066
|
-
eventActions: modelResponseEvent.actions
|
|
1067
|
-
});
|
|
1068
|
-
const tools = (yield new __await(convertToolUnionToTools(
|
|
1069
|
-
toolUnion,
|
|
1070
|
-
new ReadonlyContext(invocationContext)
|
|
1071
|
-
))).filter((tool) => {
|
|
1072
|
-
return !llmRequest.allowedTools || llmRequest.allowedTools.includes(tool.name) || tool.name === "set_model_response";
|
|
1073
|
-
});
|
|
1074
|
-
for (const tool of tools) {
|
|
1075
|
-
yield new __await(tool.processLlmRequest({ toolContext, llmRequest }));
|
|
1076
|
-
if ((_b2 = invocationContext.abortSignal) == null ? void 0 : _b2.aborted) {
|
|
1077
|
-
return;
|
|
1078
|
-
}
|
|
1079
|
-
}
|
|
1080
|
-
}
|
|
1081
|
-
if (invocationContext.endInvocation || ((_c = invocationContext.abortSignal) == null ? void 0 : _c.aborted)) {
|
|
1082
|
-
return;
|
|
1083
|
-
}
|
|
1084
|
-
const span = tracer.startSpan("call_llm");
|
|
1085
|
-
const ctx = trace.setSpan(context.active(), span);
|
|
1086
|
-
yield* __yieldStar(runAsyncGeneratorWithOtelContext(
|
|
1087
|
-
ctx,
|
|
1088
|
-
this,
|
|
1089
|
-
function() {
|
|
1090
|
-
return __asyncGenerator(this, null, function* () {
|
|
1091
|
-
const responsesGenerator = /* @__PURE__ */ __name(function() {
|
|
1092
|
-
return __asyncGenerator(this, null, function* () {
|
|
1093
|
-
var _a3, _b3;
|
|
1094
|
-
try {
|
|
1095
|
-
for (var iter3 = __forAwait(this.callLlmAsync(
|
|
1096
|
-
invocationContext,
|
|
1097
|
-
llmRequest,
|
|
1098
|
-
modelResponseEvent
|
|
1099
|
-
)), more3, temp3, error3; more3 = !(temp3 = yield new __await(iter3.next())).done; more3 = false) {
|
|
1100
|
-
const llmResponse = temp3.value;
|
|
1101
|
-
if ((_a3 = invocationContext.abortSignal) == null ? void 0 : _a3.aborted) {
|
|
1102
|
-
return;
|
|
1103
|
-
}
|
|
1104
|
-
try {
|
|
1105
|
-
for (var iter2 = __forAwait(this.postprocess(
|
|
1106
|
-
invocationContext,
|
|
1107
|
-
llmRequest,
|
|
1108
|
-
llmResponse,
|
|
1109
|
-
modelResponseEvent
|
|
1110
|
-
)), more2, temp2, error2; more2 = !(temp2 = yield new __await(iter2.next())).done; more2 = false) {
|
|
1111
|
-
const event = temp2.value;
|
|
1112
|
-
if ((_b3 = invocationContext.abortSignal) == null ? void 0 : _b3.aborted) {
|
|
1113
|
-
return;
|
|
1114
|
-
}
|
|
1115
|
-
modelResponseEvent.id = createNewEventId();
|
|
1116
|
-
modelResponseEvent.timestamp = (/* @__PURE__ */ new Date()).getTime();
|
|
1117
|
-
yield event;
|
|
1118
|
-
}
|
|
1119
|
-
} catch (temp2) {
|
|
1120
|
-
error2 = [temp2];
|
|
1121
|
-
} finally {
|
|
1122
|
-
try {
|
|
1123
|
-
more2 && (temp2 = iter2.return) && (yield new __await(temp2.call(iter2)));
|
|
1124
|
-
} finally {
|
|
1125
|
-
if (error2)
|
|
1126
|
-
throw error2[0];
|
|
1127
|
-
}
|
|
1128
|
-
}
|
|
1129
|
-
}
|
|
1130
|
-
} catch (temp3) {
|
|
1131
|
-
error3 = [temp3];
|
|
1132
|
-
} finally {
|
|
1133
|
-
try {
|
|
1134
|
-
more3 && (temp3 = iter3.return) && (yield new __await(temp3.call(iter3)));
|
|
1135
|
-
} finally {
|
|
1136
|
-
if (error3)
|
|
1137
|
-
throw error3[0];
|
|
1138
|
-
}
|
|
1139
|
-
}
|
|
1140
|
-
});
|
|
1141
|
-
}, "responsesGenerator");
|
|
1142
|
-
yield* __yieldStar(this.runAndHandleError(
|
|
1143
|
-
responsesGenerator.call(this),
|
|
1144
|
-
invocationContext,
|
|
1145
|
-
llmRequest,
|
|
1146
|
-
modelResponseEvent
|
|
1147
|
-
));
|
|
1148
|
-
});
|
|
1149
|
-
}
|
|
1150
|
-
));
|
|
1151
|
-
span.end();
|
|
1152
|
-
});
|
|
1153
|
-
}
|
|
1154
|
-
postprocess(invocationContext, llmRequest, llmResponse, modelResponseEvent) {
|
|
1155
|
-
return __asyncGenerator(this, null, function* () {
|
|
1156
|
-
var _a2, _b2, _c, _d, _e, _f;
|
|
1157
|
-
for (const processor of this.responseProcessors) {
|
|
1158
|
-
try {
|
|
1159
|
-
for (var iter = __forAwait(processor.runAsync(
|
|
1160
|
-
invocationContext,
|
|
1161
|
-
llmResponse
|
|
1162
|
-
)), more, temp, error; more = !(temp = yield new __await(iter.next())).done; more = false) {
|
|
1163
|
-
const event = temp.value;
|
|
1164
|
-
if ((_a2 = invocationContext.abortSignal) == null ? void 0 : _a2.aborted) {
|
|
1165
|
-
return;
|
|
1166
|
-
}
|
|
1167
|
-
yield event;
|
|
1168
|
-
}
|
|
1169
|
-
} catch (temp) {
|
|
1170
|
-
error = [temp];
|
|
1171
|
-
} finally {
|
|
1172
|
-
try {
|
|
1173
|
-
more && (temp = iter.return) && (yield new __await(temp.call(iter)));
|
|
1174
|
-
} finally {
|
|
1175
|
-
if (error)
|
|
1176
|
-
throw error[0];
|
|
1177
|
-
}
|
|
1178
|
-
}
|
|
1179
|
-
}
|
|
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) {
|
|
1182
|
-
return;
|
|
1183
|
-
}
|
|
1184
|
-
const mergedEvent = createEvent(__spreadValues(__spreadValues({}, modelResponseEvent), llmResponse));
|
|
1185
|
-
if (mergedEvent.content) {
|
|
1186
|
-
const functionCalls = getFunctionCalls(mergedEvent);
|
|
1187
|
-
const setModelResponseCall = functionCalls.find(
|
|
1188
|
-
(call) => call.name === "set_model_response"
|
|
1189
|
-
);
|
|
1190
|
-
if (setModelResponseCall) {
|
|
1191
|
-
const args = setModelResponseCall.args;
|
|
1192
|
-
mergedEvent.content.parts = [{ text: JSON.stringify(args) }];
|
|
1193
|
-
mergedEvent.actions.skipSummarization = true;
|
|
1194
|
-
} else if (functionCalls && functionCalls.length) {
|
|
1195
|
-
populateClientFunctionCallId(mergedEvent);
|
|
1196
|
-
mergedEvent.longRunningToolIds = Array.from(
|
|
1197
|
-
getLongRunningFunctionCalls(functionCalls, llmRequest.toolsDict)
|
|
1198
|
-
);
|
|
1199
|
-
}
|
|
1200
|
-
}
|
|
1201
|
-
yield mergedEvent;
|
|
1202
|
-
if (!((_c = getFunctionCalls(mergedEvent)) == null ? void 0 : _c.length)) {
|
|
1203
|
-
return;
|
|
1204
|
-
}
|
|
1205
|
-
if ((_d = invocationContext.runConfig) == null ? void 0 : _d.pauseOnToolCalls) {
|
|
1206
|
-
invocationContext.endInvocation = true;
|
|
1207
|
-
return;
|
|
1208
|
-
}
|
|
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
|
-
}
|
|
1247
|
-
if (!functionResponseEvent || ((_e = invocationContext.abortSignal) == null ? void 0 : _e.aborted)) {
|
|
1248
|
-
return;
|
|
1249
|
-
}
|
|
1250
|
-
const authEvent = generateAuthEvent(
|
|
1251
|
-
invocationContext,
|
|
1252
|
-
functionResponseEvent
|
|
1253
|
-
);
|
|
1254
|
-
if (authEvent) {
|
|
1255
|
-
yield authEvent;
|
|
1256
|
-
}
|
|
1257
|
-
const toolConfirmationEvent = generateRequestConfirmationEvent({
|
|
1258
|
-
invocationContext,
|
|
1259
|
-
functionCallEvent: mergedEvent,
|
|
1260
|
-
functionResponseEvent
|
|
1261
|
-
});
|
|
1262
|
-
if (toolConfirmationEvent) {
|
|
1263
|
-
yield toolConfirmationEvent;
|
|
1264
|
-
invocationContext.endInvocation = true;
|
|
1265
|
-
return;
|
|
1266
|
-
}
|
|
1267
|
-
yield functionResponseEvent;
|
|
1268
|
-
const nextAgentName = functionResponseEvent.actions.transferToAgent;
|
|
1269
|
-
if (nextAgentName) {
|
|
1270
|
-
const nextAgent = this.getAgentByName(invocationContext, nextAgentName);
|
|
1271
|
-
try {
|
|
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;
|
|
1274
|
-
if ((_f = invocationContext.abortSignal) == null ? void 0 : _f.aborted) {
|
|
1275
|
-
return;
|
|
1276
|
-
}
|
|
1277
|
-
yield event;
|
|
1278
|
-
}
|
|
1279
|
-
} catch (temp3) {
|
|
1280
|
-
error3 = [temp3];
|
|
1281
|
-
} finally {
|
|
1282
|
-
try {
|
|
1283
|
-
more3 && (temp3 = iter3.return) && (yield new __await(temp3.call(iter3)));
|
|
1284
|
-
} finally {
|
|
1285
|
-
if (error3)
|
|
1286
|
-
throw error3[0];
|
|
1287
|
-
}
|
|
1288
|
-
}
|
|
1289
|
-
}
|
|
1290
|
-
});
|
|
1291
|
-
}
|
|
1292
|
-
/**
|
|
1293
|
-
* Retrieves an agent from the agent tree by its name.
|
|
1294
|
-
*
|
|
1295
|
-
* Performing a depth-first search to locate the agent with the given name.
|
|
1296
|
-
* - Starts searching from the root agent of the current invocation context.
|
|
1297
|
-
* - Traverses down the agent tree to find the specified agent.
|
|
1298
|
-
*
|
|
1299
|
-
* @param invocationContext The current invocation context.
|
|
1300
|
-
* @param agentName The name of the agent to retrieve.
|
|
1301
|
-
* @returns The agent with the given name.
|
|
1302
|
-
* @throws Error if the agent is not found.
|
|
1303
|
-
*/
|
|
1304
|
-
getAgentByName(invocationContext, agentName) {
|
|
1305
|
-
const rootAgent = requireAgent(invocationContext).rootAgent;
|
|
1306
|
-
const agentToRun = rootAgent.findAgent(agentName);
|
|
1307
|
-
if (!agentToRun) {
|
|
1308
|
-
throw new Error("Agent ".concat(agentName, " not found in the agent tree."));
|
|
1309
|
-
}
|
|
1310
|
-
return agentToRun;
|
|
1311
|
-
}
|
|
1312
|
-
callLlmAsync(invocationContext, llmRequest, modelResponseEvent) {
|
|
1313
|
-
return __asyncGenerator(this, null, function* () {
|
|
1314
|
-
var _a2, _b2, _c, _d, _e, _f, _g, _h;
|
|
1315
|
-
const beforeModelResponse = yield new __await(this.handleBeforeModelCallback(
|
|
1316
|
-
invocationContext,
|
|
1317
|
-
llmRequest,
|
|
1318
|
-
modelResponseEvent
|
|
1319
|
-
));
|
|
1320
|
-
if ((_a2 = invocationContext.abortSignal) == null ? void 0 : _a2.aborted) {
|
|
1321
|
-
return;
|
|
1322
|
-
}
|
|
1323
|
-
if (beforeModelResponse) {
|
|
1324
|
-
yield beforeModelResponse;
|
|
1325
|
-
return;
|
|
1326
|
-
}
|
|
1327
|
-
(_b2 = llmRequest.config) != null ? _b2 : llmRequest.config = {};
|
|
1328
|
-
(_d = (_c = llmRequest.config).labels) != null ? _d : _c.labels = {};
|
|
1329
|
-
if (!llmRequest.config.labels[ADK_AGENT_NAME_LABEL_KEY]) {
|
|
1330
|
-
llmRequest.config.labels[ADK_AGENT_NAME_LABEL_KEY] = this.name;
|
|
1331
|
-
}
|
|
1332
|
-
const llm = this.canonicalModel;
|
|
1333
|
-
if ((_e = invocationContext.runConfig) == null ? void 0 : _e.supportCfc) {
|
|
1334
|
-
throw new Error("CFC is not yet supported in callLlmAsync");
|
|
1335
|
-
} else {
|
|
1336
|
-
invocationContext.incrementLlmCallCount();
|
|
1337
|
-
const responsesGenerator = llm.generateContentAsync(
|
|
1338
|
-
llmRequest,
|
|
1339
|
-
/* stream= */
|
|
1340
|
-
((_f = invocationContext.runConfig) == null ? void 0 : _f.streamingMode) === StreamingMode.SSE,
|
|
1341
|
-
invocationContext.abortSignal
|
|
1342
|
-
);
|
|
1343
|
-
try {
|
|
1344
|
-
for (var iter = __forAwait(responsesGenerator), more, temp, error; more = !(temp = yield new __await(iter.next())).done; more = false) {
|
|
1345
|
-
const llmResponse = temp.value;
|
|
1346
|
-
traceCallLlm({
|
|
1347
|
-
invocationContext,
|
|
1348
|
-
eventId: modelResponseEvent.id,
|
|
1349
|
-
llmRequest,
|
|
1350
|
-
llmResponse
|
|
1351
|
-
});
|
|
1352
|
-
if ((_g = invocationContext.abortSignal) == null ? void 0 : _g.aborted) {
|
|
1353
|
-
return;
|
|
1354
|
-
}
|
|
1355
|
-
const alteredLlmResponse = yield new __await(this.handleAfterModelCallback(
|
|
1356
|
-
invocationContext,
|
|
1357
|
-
llmResponse,
|
|
1358
|
-
modelResponseEvent
|
|
1359
|
-
));
|
|
1360
|
-
if ((_h = invocationContext.abortSignal) == null ? void 0 : _h.aborted) {
|
|
1361
|
-
return;
|
|
1362
|
-
}
|
|
1363
|
-
yield alteredLlmResponse != null ? alteredLlmResponse : llmResponse;
|
|
1364
|
-
}
|
|
1365
|
-
} catch (temp) {
|
|
1366
|
-
error = [temp];
|
|
1367
|
-
} finally {
|
|
1368
|
-
try {
|
|
1369
|
-
more && (temp = iter.return) && (yield new __await(temp.call(iter)));
|
|
1370
|
-
} finally {
|
|
1371
|
-
if (error)
|
|
1372
|
-
throw error[0];
|
|
1373
|
-
}
|
|
1374
|
-
}
|
|
1375
|
-
}
|
|
1376
|
-
});
|
|
1377
|
-
}
|
|
1378
|
-
async handleBeforeModelCallback(invocationContext, llmRequest, modelResponseEvent) {
|
|
1379
|
-
var _a2, _b2;
|
|
1380
|
-
const callbackContext = new Context({
|
|
1381
|
-
invocationContext,
|
|
1382
|
-
eventActions: modelResponseEvent.actions
|
|
1383
|
-
});
|
|
1384
|
-
const beforeModelCallbackResponse = await invocationContext.pluginManager.runBeforeModelCallback({
|
|
1385
|
-
callbackContext,
|
|
1386
|
-
llmRequest
|
|
1387
|
-
});
|
|
1388
|
-
if ((_a2 = invocationContext.abortSignal) == null ? void 0 : _a2.aborted) {
|
|
1389
|
-
return;
|
|
1390
|
-
}
|
|
1391
|
-
if (beforeModelCallbackResponse) {
|
|
1392
|
-
return beforeModelCallbackResponse;
|
|
1393
|
-
}
|
|
1394
|
-
for (const callback of this.canonicalBeforeModelCallbacks) {
|
|
1395
|
-
const callbackResponse = await callback({
|
|
1396
|
-
context: callbackContext,
|
|
1397
|
-
request: llmRequest
|
|
1398
|
-
});
|
|
1399
|
-
if ((_b2 = invocationContext.abortSignal) == null ? void 0 : _b2.aborted) {
|
|
1400
|
-
return;
|
|
1401
|
-
}
|
|
1402
|
-
if (callbackResponse) {
|
|
1403
|
-
return callbackResponse;
|
|
1404
|
-
}
|
|
1405
|
-
}
|
|
1406
|
-
return void 0;
|
|
1407
|
-
}
|
|
1408
|
-
async handleAfterModelCallback(invocationContext, llmResponse, modelResponseEvent) {
|
|
1409
|
-
var _a2;
|
|
1410
|
-
const callbackContext = new Context({
|
|
1411
|
-
invocationContext,
|
|
1412
|
-
eventActions: modelResponseEvent.actions
|
|
1413
|
-
});
|
|
1414
|
-
const afterModelCallbackResponse = await invocationContext.pluginManager.runAfterModelCallback({
|
|
1415
|
-
callbackContext,
|
|
1416
|
-
llmResponse
|
|
1417
|
-
});
|
|
1418
|
-
if (afterModelCallbackResponse) {
|
|
1419
|
-
return afterModelCallbackResponse;
|
|
1420
|
-
}
|
|
1421
|
-
for (const callback of this.canonicalAfterModelCallbacks) {
|
|
1422
|
-
const callbackResponse = await callback({
|
|
1423
|
-
context: callbackContext,
|
|
1424
|
-
response: llmResponse
|
|
1425
|
-
});
|
|
1426
|
-
if ((_a2 = invocationContext.abortSignal) == null ? void 0 : _a2.aborted) {
|
|
1427
|
-
return;
|
|
1428
|
-
}
|
|
1429
|
-
if (callbackResponse) {
|
|
1430
|
-
return callbackResponse;
|
|
1431
|
-
}
|
|
1432
|
-
}
|
|
1433
|
-
return void 0;
|
|
1434
|
-
}
|
|
1435
|
-
runAndHandleError(responseGenerator, invocationContext, llmRequest, modelResponseEvent) {
|
|
1436
|
-
return __asyncGenerator(this, null, function* () {
|
|
1437
|
-
var _a2;
|
|
1438
|
-
try {
|
|
1439
|
-
try {
|
|
1440
|
-
for (var iter = __forAwait(responseGenerator), more, temp, error; more = !(temp = yield new __await(iter.next())).done; more = false) {
|
|
1441
|
-
const response = temp.value;
|
|
1442
|
-
if ((_a2 = invocationContext.abortSignal) == null ? void 0 : _a2.aborted) {
|
|
1443
|
-
return;
|
|
1444
|
-
}
|
|
1445
|
-
yield response;
|
|
1446
|
-
}
|
|
1447
|
-
} catch (temp) {
|
|
1448
|
-
error = [temp];
|
|
1449
|
-
} finally {
|
|
1450
|
-
try {
|
|
1451
|
-
more && (temp = iter.return) && (yield new __await(temp.call(iter)));
|
|
1452
|
-
} finally {
|
|
1453
|
-
if (error)
|
|
1454
|
-
throw error[0];
|
|
1455
|
-
}
|
|
1456
|
-
}
|
|
1457
|
-
} catch (modelError) {
|
|
1458
|
-
const callbackContext = new Context({
|
|
1459
|
-
invocationContext,
|
|
1460
|
-
eventActions: modelResponseEvent.actions
|
|
1461
|
-
});
|
|
1462
|
-
if (modelError instanceof Error) {
|
|
1463
|
-
const onModelErrorCallbackResponse = yield new __await(invocationContext.pluginManager.runOnModelErrorCallback({
|
|
1464
|
-
callbackContext,
|
|
1465
|
-
llmRequest,
|
|
1466
|
-
error: modelError
|
|
1467
|
-
}));
|
|
1468
|
-
if (onModelErrorCallbackResponse) {
|
|
1469
|
-
yield onModelErrorCallbackResponse;
|
|
1470
|
-
} else {
|
|
1471
|
-
let errorCode = "UNKNOWN_ERROR";
|
|
1472
|
-
let errorMessage = modelError.message;
|
|
1473
|
-
try {
|
|
1474
|
-
const errorResponse = JSON.parse(modelError.message);
|
|
1475
|
-
if (errorResponse == null ? void 0 : errorResponse.error) {
|
|
1476
|
-
errorCode = String(errorResponse.error.code || "UNKNOWN_ERROR");
|
|
1477
|
-
errorMessage = errorResponse.error.message || errorMessage;
|
|
1478
|
-
}
|
|
1479
|
-
} catch (e) {
|
|
1480
|
-
}
|
|
1481
|
-
if (modelResponseEvent.actions) {
|
|
1482
|
-
yield createEvent({
|
|
1483
|
-
invocationId: invocationContext.invocationId,
|
|
1484
|
-
author: this.name,
|
|
1485
|
-
errorCode,
|
|
1486
|
-
errorMessage
|
|
1487
|
-
});
|
|
1488
|
-
} else {
|
|
1489
|
-
yield {
|
|
1490
|
-
errorCode,
|
|
1491
|
-
errorMessage
|
|
1492
|
-
};
|
|
1493
|
-
}
|
|
1494
|
-
}
|
|
1495
|
-
} else {
|
|
1496
|
-
logger.error("Unknown error during response generation", modelError);
|
|
1497
|
-
throw modelError;
|
|
1498
|
-
}
|
|
1499
|
-
}
|
|
1500
|
-
});
|
|
1501
|
-
}
|
|
1502
|
-
// --------------------------------------------------------------------------
|
|
1503
|
-
// #END LlmFlow Logic
|
|
1504
|
-
// --------------------------------------------------------------------------
|
|
1505
|
-
// TODO - b/425992518: omitted Py LlmAgent features.
|
|
1506
|
-
// - code_executor
|
|
1507
|
-
// - configurable agents by yaml config
|
|
1508
|
-
};
|
|
1509
|
-
__name(_LlmAgent, "LlmAgent");
|
|
1510
|
-
let LlmAgent = _LlmAgent;
|
|
1511
|
-
export {
|
|
1512
|
-
LlmAgent,
|
|
1513
|
-
isLlmAgent
|
|
1514
|
-
};
|