@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
|
@@ -248,13 +248,23 @@ function traceSendData({
|
|
|
248
248
|
);
|
|
249
249
|
}
|
|
250
250
|
__name(traceSendData, "traceSendData");
|
|
251
|
+
function redactHttpOptions(httpOptions) {
|
|
252
|
+
const redacted = { ...httpOptions };
|
|
253
|
+
delete redacted.headers;
|
|
254
|
+
delete redacted.extraBody;
|
|
255
|
+
return redacted;
|
|
256
|
+
}
|
|
257
|
+
__name(redactHttpOptions, "redactHttpOptions");
|
|
251
258
|
function buildLlmRequestForTrace(llmRequest) {
|
|
252
259
|
const result = {
|
|
253
260
|
model: llmRequest.model,
|
|
254
261
|
contents: []
|
|
255
262
|
};
|
|
256
263
|
if (llmRequest.config) {
|
|
257
|
-
const { responseSchema, ...cleanConfig } = llmRequest.config;
|
|
264
|
+
const { responseSchema: _responseSchema, ...cleanConfig } = llmRequest.config;
|
|
265
|
+
if (cleanConfig.httpOptions) {
|
|
266
|
+
cleanConfig.httpOptions = redactHttpOptions(cleanConfig.httpOptions);
|
|
267
|
+
}
|
|
258
268
|
result.config = cleanConfig;
|
|
259
269
|
}
|
|
260
270
|
result.contents = llmRequest.contents.map((content) => {
|
|
@@ -44,7 +44,7 @@ var import_forwarding_artifact_service = require("./forwarding_artifact_service.
|
|
|
44
44
|
* SPDX-License-Identifier: Apache-2.0
|
|
45
45
|
*/
|
|
46
46
|
var _a, _b;
|
|
47
|
-
const AGENT_TOOL_SIGNATURE_SYMBOL = Symbol.for("google.adk.agentTool");
|
|
47
|
+
const AGENT_TOOL_SIGNATURE_SYMBOL = /* @__PURE__ */ Symbol.for("google.adk.agentTool");
|
|
48
48
|
function isAgentTool(obj) {
|
|
49
49
|
return typeof obj === "object" && obj !== null && AGENT_TOOL_SIGNATURE_SYMBOL in obj && obj[AGENT_TOOL_SIGNATURE_SYMBOL] === true;
|
|
50
50
|
}
|
|
@@ -67,8 +67,7 @@ const _AgentTool = class _AgentTool extends (_b = import_base_tool.BaseTool, _a
|
|
|
67
67
|
name: this.name,
|
|
68
68
|
description: this.description,
|
|
69
69
|
// TODO(b/425992518): We should not use the agent's input schema as is.
|
|
70
|
-
// It should be validated and possibly transformed.
|
|
71
|
-
// logic to one we have in Python ADK.
|
|
70
|
+
// It should be validated and possibly transformed first.
|
|
72
71
|
parameters: this.agent.inputSchema
|
|
73
72
|
};
|
|
74
73
|
} else {
|
|
@@ -102,8 +101,8 @@ const _AgentTool = class _AgentTool extends (_b = import_base_tool.BaseTool, _a
|
|
|
102
101
|
role: "user",
|
|
103
102
|
parts: [
|
|
104
103
|
{
|
|
105
|
-
// TODO(b/425992518):
|
|
106
|
-
//
|
|
104
|
+
// TODO(b/425992518): Args should be validated against the agent's
|
|
105
|
+
// input schema before being forwarded.
|
|
107
106
|
text: hasInputSchema ? JSON.stringify(args) : args["request"]
|
|
108
107
|
}
|
|
109
108
|
]
|
|
@@ -26,7 +26,9 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
26
26
|
var base_tool_exports = {};
|
|
27
27
|
__export(base_tool_exports, {
|
|
28
28
|
BaseTool: () => BaseTool,
|
|
29
|
-
|
|
29
|
+
IN_MODEL_TOOL_SYMBOL: () => IN_MODEL_TOOL_SYMBOL,
|
|
30
|
+
isBaseTool: () => isBaseTool,
|
|
31
|
+
isInModelTool: () => isInModelTool
|
|
30
32
|
});
|
|
31
33
|
module.exports = __toCommonJS(base_tool_exports);
|
|
32
34
|
var import_variant_utils = require("../utils/variant_utils.js");
|
|
@@ -36,7 +38,12 @@ var import_variant_utils = require("../utils/variant_utils.js");
|
|
|
36
38
|
* SPDX-License-Identifier: Apache-2.0
|
|
37
39
|
*/
|
|
38
40
|
var _a;
|
|
39
|
-
const BASE_TOOL_SIGNATURE_SYMBOL = Symbol.for("google.adk.baseTool");
|
|
41
|
+
const BASE_TOOL_SIGNATURE_SYMBOL = /* @__PURE__ */ Symbol.for("google.adk.baseTool");
|
|
42
|
+
const IN_MODEL_TOOL_SYMBOL = /* @__PURE__ */ Symbol.for("google.adk.inModelTool");
|
|
43
|
+
function isInModelTool(tool) {
|
|
44
|
+
return typeof tool === "object" && tool !== null && tool[IN_MODEL_TOOL_SYMBOL] === true;
|
|
45
|
+
}
|
|
46
|
+
__name(isInModelTool, "isInModelTool");
|
|
40
47
|
function isBaseTool(obj) {
|
|
41
48
|
return typeof obj === "object" && obj !== null && BASE_TOOL_SIGNATURE_SYMBOL in obj && obj[BASE_TOOL_SIGNATURE_SYMBOL] === true;
|
|
42
49
|
}
|
|
@@ -103,7 +110,8 @@ const _BaseTool = class _BaseTool {
|
|
|
103
110
|
if (!functionDeclaration) {
|
|
104
111
|
return;
|
|
105
112
|
}
|
|
106
|
-
|
|
113
|
+
const registered = Object.hasOwn(llmRequest.toolsDict, this.name) ? llmRequest.toolsDict[this.name] : void 0;
|
|
114
|
+
if (registered && !isInModelTool(registered)) {
|
|
107
115
|
throw new Error(`Duplicate tool name: ${this.name}`);
|
|
108
116
|
}
|
|
109
117
|
llmRequest.toolsDict[this.name] = this;
|
|
@@ -140,5 +148,7 @@ __name(findToolWithFunctionDeclarations, "findToolWithFunctionDeclarations");
|
|
|
140
148
|
// Annotate the CommonJS export names for ESM import in node:
|
|
141
149
|
0 && (module.exports = {
|
|
142
150
|
BaseTool,
|
|
143
|
-
|
|
151
|
+
IN_MODEL_TOOL_SYMBOL,
|
|
152
|
+
isBaseTool,
|
|
153
|
+
isInModelTool
|
|
144
154
|
});
|
|
@@ -35,7 +35,7 @@ module.exports = __toCommonJS(base_toolset_exports);
|
|
|
35
35
|
* SPDX-License-Identifier: Apache-2.0
|
|
36
36
|
*/
|
|
37
37
|
var _a;
|
|
38
|
-
const BASE_TOOLSET_SIGNATURE_SYMBOL = Symbol.for("google.adk.baseToolset");
|
|
38
|
+
const BASE_TOOLSET_SIGNATURE_SYMBOL = /* @__PURE__ */ Symbol.for("google.adk.baseToolset");
|
|
39
39
|
function isBaseToolset(obj) {
|
|
40
40
|
return typeof obj === "object" && obj !== null && BASE_TOOLSET_SIGNATURE_SYMBOL in obj && obj[BASE_TOOLSET_SIGNATURE_SYMBOL] === true;
|
|
41
41
|
}
|
|
@@ -75,10 +75,10 @@ const _BaseToolset = class _BaseToolset {
|
|
|
75
75
|
* process the llm request. e.g. ComputerUseToolset can add computer use
|
|
76
76
|
* tool to the llm request.
|
|
77
77
|
*
|
|
78
|
-
* @param
|
|
79
|
-
* @param
|
|
78
|
+
* @param _toolContext The context of the tool.
|
|
79
|
+
* @param _llmRequest The outgoing LLM request, mutable this method.
|
|
80
80
|
*/
|
|
81
|
-
async processLlmRequest(
|
|
81
|
+
async processLlmRequest(_toolContext, _llmRequest) {
|
|
82
82
|
}
|
|
83
83
|
};
|
|
84
84
|
__name(_BaseToolset, "BaseToolset");
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2026 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
"use strict";
|
|
8
|
+
var __defProp = Object.defineProperty;
|
|
9
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
10
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
11
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
12
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
13
|
+
var __export = (target, all) => {
|
|
14
|
+
for (var name in all)
|
|
15
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
16
|
+
};
|
|
17
|
+
var __copyProps = (to, from, except, desc) => {
|
|
18
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
19
|
+
for (let key of __getOwnPropNames(from))
|
|
20
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
21
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
22
|
+
}
|
|
23
|
+
return to;
|
|
24
|
+
};
|
|
25
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
26
|
+
var built_in_tool_exports = {};
|
|
27
|
+
__export(built_in_tool_exports, {
|
|
28
|
+
BuiltInTool: () => BuiltInTool
|
|
29
|
+
});
|
|
30
|
+
module.exports = __toCommonJS(built_in_tool_exports);
|
|
31
|
+
var import_logger = require("../utils/logger.js");
|
|
32
|
+
var import_base_tool = require("./base_tool.js");
|
|
33
|
+
/**
|
|
34
|
+
* @license
|
|
35
|
+
* Copyright 2025 Google LLC
|
|
36
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
37
|
+
*/
|
|
38
|
+
var _a, _b;
|
|
39
|
+
const _BuiltInTool = class _BuiltInTool extends (_b = import_base_tool.BaseTool, _a = import_base_tool.IN_MODEL_TOOL_SYMBOL, _b) {
|
|
40
|
+
constructor() {
|
|
41
|
+
super(...arguments);
|
|
42
|
+
/** Marks this tool as one the model runs itself. */
|
|
43
|
+
this[_a] = true;
|
|
44
|
+
}
|
|
45
|
+
async processLlmRequest(request) {
|
|
46
|
+
if (this._getDeclaration()) {
|
|
47
|
+
throw new Error(
|
|
48
|
+
`${this.name} extends BuiltInTool but returns a function declaration. A tool the model runs itself cannot declare a callable function; extend BaseTool instead.`
|
|
49
|
+
);
|
|
50
|
+
}
|
|
51
|
+
await this.applyBuiltInConfig(request);
|
|
52
|
+
if (!Object.hasOwn(request.llmRequest.toolsDict, this.name)) {
|
|
53
|
+
request.llmRequest.toolsDict[this.name] = this;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Answers a function call the model should not have made. The tool is
|
|
58
|
+
* already configured on the request and its results arrive as grounding
|
|
59
|
+
* metadata, so the model is told to use those rather than call again.
|
|
60
|
+
*/
|
|
61
|
+
async runAsync() {
|
|
62
|
+
import_logger.logger.warn(
|
|
63
|
+
`${this.name} runs inside the model but was called as a function; answering with guidance instead of executing anything.`
|
|
64
|
+
);
|
|
65
|
+
return {
|
|
66
|
+
error: `${this.name} runs inside the model and cannot be called as a function. It is already enabled on this request and its results arrive as grounding metadata; answer from those instead of calling it.`
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
};
|
|
70
|
+
__name(_BuiltInTool, "BuiltInTool");
|
|
71
|
+
let BuiltInTool = _BuiltInTool;
|
|
72
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
73
|
+
0 && (module.exports = {
|
|
74
|
+
BuiltInTool
|
|
75
|
+
});
|
|
@@ -31,7 +31,7 @@ __export(enterprise_web_search_tool_exports, {
|
|
|
31
31
|
});
|
|
32
32
|
module.exports = __toCommonJS(enterprise_web_search_tool_exports);
|
|
33
33
|
var import_model_name = require("../utils/model_name.js");
|
|
34
|
-
var
|
|
34
|
+
var import_built_in_tool = require("./built_in_tool.js");
|
|
35
35
|
/**
|
|
36
36
|
* @license
|
|
37
37
|
* Copyright 2026 Google LLC
|
|
@@ -58,17 +58,14 @@ function applyEnterpriseWebSearch(llmRequest) {
|
|
|
58
58
|
);
|
|
59
59
|
}
|
|
60
60
|
__name(applyEnterpriseWebSearch, "applyEnterpriseWebSearch");
|
|
61
|
-
const _EnterpriseWebSearchTool = class _EnterpriseWebSearchTool extends
|
|
61
|
+
const _EnterpriseWebSearchTool = class _EnterpriseWebSearchTool extends import_built_in_tool.BuiltInTool {
|
|
62
62
|
constructor() {
|
|
63
63
|
super({
|
|
64
64
|
name: "enterprise_web_search",
|
|
65
65
|
description: "Enterprise Web Search Tool"
|
|
66
66
|
});
|
|
67
67
|
}
|
|
68
|
-
|
|
69
|
-
return Promise.resolve();
|
|
70
|
-
}
|
|
71
|
-
async processLlmRequest({
|
|
68
|
+
async applyBuiltInConfig({
|
|
72
69
|
llmRequest
|
|
73
70
|
}) {
|
|
74
71
|
applyEnterpriseWebSearch(llmRequest);
|
|
@@ -33,10 +33,18 @@ module.exports = __toCommonJS(forwarding_artifact_service_exports);
|
|
|
33
33
|
* Copyright 2025 Google LLC
|
|
34
34
|
* SPDX-License-Identifier: Apache-2.0
|
|
35
35
|
*/
|
|
36
|
+
var _a;
|
|
37
|
+
const SESSION_ARTIFACT_SERVICE_SIGNATURE_SYMBOL = /* @__PURE__ */ Symbol.for(
|
|
38
|
+
"google.adk.sessionArtifactService"
|
|
39
|
+
);
|
|
40
|
+
_a = SESSION_ARTIFACT_SERVICE_SIGNATURE_SYMBOL;
|
|
36
41
|
const _ForwardingArtifactService = class _ForwardingArtifactService {
|
|
37
42
|
constructor(toolContext) {
|
|
38
43
|
this.toolContext = toolContext;
|
|
39
|
-
|
|
44
|
+
/**
|
|
45
|
+
* Brands this class as a session-scoped artifact service.
|
|
46
|
+
*/
|
|
47
|
+
this[_a] = true;
|
|
40
48
|
}
|
|
41
49
|
async saveArtifact(request) {
|
|
42
50
|
return this.toolContext.saveArtifact(request.filename, request.artifact);
|
|
@@ -44,30 +52,27 @@ const _ForwardingArtifactService = class _ForwardingArtifactService {
|
|
|
44
52
|
async loadArtifact(request) {
|
|
45
53
|
return this.toolContext.loadArtifact(request.filename, request.version);
|
|
46
54
|
}
|
|
47
|
-
async listArtifactKeys(
|
|
55
|
+
async listArtifactKeys() {
|
|
48
56
|
return this.toolContext.listArtifacts();
|
|
49
57
|
}
|
|
50
58
|
getArtifactService() {
|
|
51
|
-
const service = this.invocationContext.artifactService;
|
|
59
|
+
const service = this.toolContext.invocationContext.artifactService;
|
|
52
60
|
if (!service) {
|
|
53
61
|
throw new Error("Artifact service is not initialized.");
|
|
54
62
|
}
|
|
55
63
|
return service;
|
|
56
64
|
}
|
|
57
|
-
async deleteArtifact(
|
|
58
|
-
return this.getArtifactService().deleteArtifact(
|
|
65
|
+
async deleteArtifact(filename) {
|
|
66
|
+
return this.getArtifactService().deleteArtifact(filename);
|
|
59
67
|
}
|
|
60
|
-
async listVersions(
|
|
61
|
-
return this.getArtifactService().listVersions(
|
|
68
|
+
async listVersions(filename) {
|
|
69
|
+
return this.getArtifactService().listVersions(filename);
|
|
62
70
|
}
|
|
63
|
-
async listArtifactVersions(
|
|
64
|
-
return this.getArtifactService().listArtifactVersions(
|
|
71
|
+
async listArtifactVersions(filename) {
|
|
72
|
+
return this.getArtifactService().listArtifactVersions(filename);
|
|
65
73
|
}
|
|
66
74
|
async getArtifactVersion(request) {
|
|
67
|
-
return this.getArtifactService().getArtifactVersion(
|
|
68
|
-
filename: request.filename,
|
|
69
|
-
version: request.version
|
|
70
|
-
});
|
|
75
|
+
return this.getArtifactService().getArtifactVersion(request);
|
|
71
76
|
}
|
|
72
77
|
};
|
|
73
78
|
__name(_ForwardingArtifactService, "ForwardingArtifactService");
|
|
@@ -48,7 +48,7 @@ function toSchema(parameters) {
|
|
|
48
48
|
return parameters;
|
|
49
49
|
}
|
|
50
50
|
__name(toSchema, "toSchema");
|
|
51
|
-
const FUNCTION_TOOL_SIGNATURE_SYMBOL = Symbol.for("google.adk.functionTool");
|
|
51
|
+
const FUNCTION_TOOL_SIGNATURE_SYMBOL = /* @__PURE__ */ Symbol.for("google.adk.functionTool");
|
|
52
52
|
function isFunctionTool(obj) {
|
|
53
53
|
return typeof obj === "object" && obj !== null && FUNCTION_TOOL_SIGNATURE_SYMBOL in obj && obj[FUNCTION_TOOL_SIGNATURE_SYMBOL] === true;
|
|
54
54
|
}
|
|
@@ -89,11 +89,14 @@ const _FunctionTool = class _FunctionTool extends (_b = import_base_tool.BaseToo
|
|
|
89
89
|
};
|
|
90
90
|
}
|
|
91
91
|
/**
|
|
92
|
-
*
|
|
93
|
-
*
|
|
92
|
+
* Invokes the user-defined `execute` function with the model-provided
|
|
93
|
+
* arguments, after parsing them when `parameters` is a Zod object schema.
|
|
94
|
+
* Any other `parameters` value is passed through unchecked.
|
|
94
95
|
*
|
|
95
96
|
* @param req The tool request containing arguments and tool context.
|
|
96
97
|
* @returns A promise resolving to the function's return value.
|
|
98
|
+
* @throws {Error} Wrapped as `Error in tool '<name>': …` when a Zod
|
|
99
|
+
* `parameters` schema rejects the arguments or `execute` throws.
|
|
97
100
|
*/
|
|
98
101
|
async runAsync(req) {
|
|
99
102
|
try {
|
|
@@ -31,7 +31,7 @@ __export(google_maps_grounding_tool_exports, {
|
|
|
31
31
|
});
|
|
32
32
|
module.exports = __toCommonJS(google_maps_grounding_tool_exports);
|
|
33
33
|
var import_model_name = require("../utils/model_name.js");
|
|
34
|
-
var
|
|
34
|
+
var import_built_in_tool = require("./built_in_tool.js");
|
|
35
35
|
/**
|
|
36
36
|
* @license
|
|
37
37
|
* Copyright 2026 Google LLC
|
|
@@ -60,14 +60,11 @@ function applyGoogleMapsGrounding(llmRequest) {
|
|
|
60
60
|
);
|
|
61
61
|
}
|
|
62
62
|
__name(applyGoogleMapsGrounding, "applyGoogleMapsGrounding");
|
|
63
|
-
const _GoogleMapsGroundingTool = class _GoogleMapsGroundingTool extends
|
|
63
|
+
const _GoogleMapsGroundingTool = class _GoogleMapsGroundingTool extends import_built_in_tool.BuiltInTool {
|
|
64
64
|
constructor() {
|
|
65
65
|
super({ name: "google_maps", description: "Google Maps Grounding Tool" });
|
|
66
66
|
}
|
|
67
|
-
|
|
68
|
-
return Promise.resolve();
|
|
69
|
-
}
|
|
70
|
-
async processLlmRequest({
|
|
67
|
+
async applyBuiltInConfig({
|
|
71
68
|
llmRequest
|
|
72
69
|
}) {
|
|
73
70
|
applyGoogleMapsGrounding(llmRequest);
|
|
@@ -30,20 +30,17 @@ __export(google_search_tool_exports, {
|
|
|
30
30
|
});
|
|
31
31
|
module.exports = __toCommonJS(google_search_tool_exports);
|
|
32
32
|
var import_model_name = require("../utils/model_name.js");
|
|
33
|
-
var
|
|
33
|
+
var import_built_in_tool = require("./built_in_tool.js");
|
|
34
34
|
/**
|
|
35
35
|
* @license
|
|
36
36
|
* Copyright 2025 Google LLC
|
|
37
37
|
* SPDX-License-Identifier: Apache-2.0
|
|
38
38
|
*/
|
|
39
|
-
const _GoogleSearchTool = class _GoogleSearchTool extends
|
|
39
|
+
const _GoogleSearchTool = class _GoogleSearchTool extends import_built_in_tool.BuiltInTool {
|
|
40
40
|
constructor() {
|
|
41
41
|
super({ name: "google_search", description: "Google Search Tool" });
|
|
42
42
|
}
|
|
43
|
-
|
|
44
|
-
return Promise.resolve();
|
|
45
|
-
}
|
|
46
|
-
async processLlmRequest({
|
|
43
|
+
async applyBuiltInConfig({
|
|
47
44
|
llmRequest
|
|
48
45
|
}) {
|
|
49
46
|
if (!llmRequest.model) {
|
|
@@ -38,7 +38,6 @@ var import_base_tool = require("./base_tool.js");
|
|
|
38
38
|
* Copyright 2026 Google LLC
|
|
39
39
|
* SPDX-License-Identifier: Apache-2.0
|
|
40
40
|
*/
|
|
41
|
-
const logger = (0, import_logger.getLogger)();
|
|
42
41
|
const GEMINI_SUPPORTED_INLINE_MIME_PREFIXES = ["image/", "audio/", "video/"];
|
|
43
42
|
const GEMINI_SUPPORTED_INLINE_MIME_TYPES = /* @__PURE__ */ new Set(["application/pdf"]);
|
|
44
43
|
const TEXT_LIKE_MIME_TYPES = /* @__PURE__ */ new Set([
|
|
@@ -135,6 +134,7 @@ NOTE: Call when you need access to artifacts (for example, uploads saved by the
|
|
|
135
134
|
);
|
|
136
135
|
}
|
|
137
136
|
async appendArtifactsToLlmRequest(toolContext, llmRequest) {
|
|
137
|
+
var _a, _b;
|
|
138
138
|
if (!toolContext.invocationContext.artifactService) {
|
|
139
139
|
return;
|
|
140
140
|
}
|
|
@@ -155,33 +155,57 @@ NOTE: Call when you need access to artifacts (for example, uploads saved by the
|
|
|
155
155
|
artifacts.`
|
|
156
156
|
]);
|
|
157
157
|
const contents = llmRequest.contents;
|
|
158
|
-
if (contents
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
158
|
+
if (!contents || contents.length === 0) {
|
|
159
|
+
return;
|
|
160
|
+
}
|
|
161
|
+
let startIndex = 0;
|
|
162
|
+
for (let i = contents.length - 1; i >= 0; i--) {
|
|
163
|
+
const content = contents[i];
|
|
164
|
+
const hasFunctionResponse = (_a = content.parts) == null ? void 0 : _a.some(
|
|
165
|
+
(part) => part.functionResponse !== void 0
|
|
166
|
+
);
|
|
167
|
+
const hasFunctionCall = (_b = content.parts) == null ? void 0 : _b.some(
|
|
168
|
+
(part) => part.functionCall !== void 0
|
|
169
|
+
);
|
|
170
|
+
if (content.role === "model" && !hasFunctionCall || content.role === "user" && !hasFunctionResponse) {
|
|
171
|
+
startIndex = i;
|
|
172
|
+
break;
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
const namesToLoad = [];
|
|
176
|
+
for (let i = startIndex; i < contents.length; i++) {
|
|
177
|
+
const content = contents[i];
|
|
178
|
+
if (content.role === "user" && content.parts) {
|
|
179
|
+
for (const part of content.parts) {
|
|
180
|
+
const functionResponse = part.functionResponse;
|
|
181
|
+
if (functionResponse && functionResponse.name === this.name) {
|
|
182
|
+
const response = functionResponse.response || {};
|
|
183
|
+
const artifactNames2 = response["artifact_names"] || [];
|
|
184
|
+
for (const name of artifactNames2) {
|
|
185
|
+
if (name && !namesToLoad.includes(name)) {
|
|
186
|
+
namesToLoad.push(name);
|
|
187
|
+
}
|
|
175
188
|
}
|
|
176
|
-
const artifactPart = asSafePartForLlm(artifact, artifactName);
|
|
177
|
-
llmRequest.contents.push({
|
|
178
|
-
role: "user",
|
|
179
|
-
parts: [{ text: `Artifact ${artifactName} is:` }, artifactPart]
|
|
180
|
-
});
|
|
181
189
|
}
|
|
182
190
|
}
|
|
183
191
|
}
|
|
184
192
|
}
|
|
193
|
+
for (const artifactName of namesToLoad) {
|
|
194
|
+
let artifact = await toolContext.loadArtifact(artifactName);
|
|
195
|
+
if (!artifact && !artifactName.startsWith("user:")) {
|
|
196
|
+
const prefixedName = `user:${artifactName}`;
|
|
197
|
+
artifact = await toolContext.loadArtifact(prefixedName);
|
|
198
|
+
}
|
|
199
|
+
if (!artifact) {
|
|
200
|
+
import_logger.logger.warn(`Artifact "${artifactName}" not found, skipping`);
|
|
201
|
+
continue;
|
|
202
|
+
}
|
|
203
|
+
const artifactPart = asSafePartForLlm(artifact, artifactName);
|
|
204
|
+
llmRequest.contents.push({
|
|
205
|
+
role: "user",
|
|
206
|
+
parts: [{ text: `Artifact ${artifactName} is:` }, artifactPart]
|
|
207
|
+
});
|
|
208
|
+
}
|
|
185
209
|
}
|
|
186
210
|
};
|
|
187
211
|
__name(_LoadArtifactsTool, "LoadArtifactsTool");
|
|
@@ -29,199 +29,33 @@ __export(load_web_page_exports, {
|
|
|
29
29
|
loadWebPage: () => loadWebPage
|
|
30
30
|
});
|
|
31
31
|
module.exports = __toCommonJS(load_web_page_exports);
|
|
32
|
-
var import_promises = require("node:dns/promises");
|
|
33
|
-
var import_node_net = require("node:net");
|
|
34
32
|
var import_zod = require("zod");
|
|
33
|
+
var import_ssrf_guard = require("../utils/ssrf_guard.js");
|
|
35
34
|
var import_function_tool = require("./function_tool.js");
|
|
36
35
|
/**
|
|
37
36
|
* @license
|
|
38
37
|
* Copyright 2026 Google LLC
|
|
39
38
|
* SPDX-License-Identifier: Apache-2.0
|
|
40
39
|
*/
|
|
41
|
-
const ALLOWED_SCHEMES = /* @__PURE__ */ new Set(["http:", "https:"]);
|
|
42
40
|
const DEFAULT_TIMEOUT_MS = 3e4;
|
|
43
|
-
const BLOCKED_IPV4_CIDRS = [
|
|
44
|
-
"0.0.0.0/8",
|
|
45
|
-
// "this host on this network"
|
|
46
|
-
"10.0.0.0/8",
|
|
47
|
-
// private
|
|
48
|
-
"100.64.0.0/10",
|
|
49
|
-
// shared address space / CGNAT
|
|
50
|
-
"127.0.0.0/8",
|
|
51
|
-
// loopback
|
|
52
|
-
"169.254.0.0/16",
|
|
53
|
-
// link-local (includes GCP metadata 169.254.169.254)
|
|
54
|
-
"172.16.0.0/12",
|
|
55
|
-
// private
|
|
56
|
-
"192.0.0.0/24",
|
|
57
|
-
// IETF protocol assignments
|
|
58
|
-
"192.0.2.0/24",
|
|
59
|
-
// TEST-NET-1 (documentation)
|
|
60
|
-
"192.88.99.0/24",
|
|
61
|
-
// 6to4 relay anycast (deprecated)
|
|
62
|
-
"192.168.0.0/16",
|
|
63
|
-
// private
|
|
64
|
-
"198.18.0.0/15",
|
|
65
|
-
// benchmarking
|
|
66
|
-
"198.51.100.0/24",
|
|
67
|
-
// TEST-NET-2 (documentation)
|
|
68
|
-
"203.0.113.0/24",
|
|
69
|
-
// TEST-NET-3 (documentation)
|
|
70
|
-
"224.0.0.0/4",
|
|
71
|
-
// multicast
|
|
72
|
-
"240.0.0.0/4"
|
|
73
|
-
// reserved / future use (includes 255.255.255.255)
|
|
74
|
-
].map(parseIpv4Cidr);
|
|
75
|
-
const BLOCKED_IPV6_CIDRS = [
|
|
76
|
-
"::/128",
|
|
77
|
-
// unspecified
|
|
78
|
-
"::1/128",
|
|
79
|
-
// loopback
|
|
80
|
-
"64:ff9b:1::/48",
|
|
81
|
-
// local NAT64
|
|
82
|
-
"100::/64",
|
|
83
|
-
// discard-only
|
|
84
|
-
"2001:db8::/32",
|
|
85
|
-
// documentation
|
|
86
|
-
"fc00::/7",
|
|
87
|
-
// unique-local (ULA, private)
|
|
88
|
-
"fe80::/10",
|
|
89
|
-
// link-local
|
|
90
|
-
"ff00::/8"
|
|
91
|
-
// multicast
|
|
92
|
-
].map(parseIpv6Cidr);
|
|
93
41
|
function failedToFetchMessage(url) {
|
|
94
42
|
return `Failed to fetch url: ${url}`;
|
|
95
43
|
}
|
|
96
44
|
__name(failedToFetchMessage, "failedToFetchMessage");
|
|
97
|
-
function isBlockedHostname(hostname) {
|
|
98
|
-
const normalized = hostname.replace(/\.+$/, "").toLowerCase();
|
|
99
|
-
return normalized === "localhost" || normalized.endsWith(".localhost");
|
|
100
|
-
}
|
|
101
|
-
__name(isBlockedHostname, "isBlockedHostname");
|
|
102
|
-
function normalizeHost(hostname) {
|
|
103
|
-
return hostname.startsWith("[") ? hostname.slice(1, -1) : hostname;
|
|
104
|
-
}
|
|
105
|
-
__name(normalizeHost, "normalizeHost");
|
|
106
|
-
function parseIpv4(address) {
|
|
107
|
-
const match = /^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/.exec(address);
|
|
108
|
-
if (!match) {
|
|
109
|
-
return null;
|
|
110
|
-
}
|
|
111
|
-
const octets = match.slice(1).map(Number);
|
|
112
|
-
if (octets.some((octet) => octet > 255)) {
|
|
113
|
-
return null;
|
|
114
|
-
}
|
|
115
|
-
return octets;
|
|
116
|
-
}
|
|
117
|
-
__name(parseIpv4, "parseIpv4");
|
|
118
|
-
function parseIpv6(address) {
|
|
119
|
-
if ((0, import_node_net.isIP)(address) !== 6) {
|
|
120
|
-
return null;
|
|
121
|
-
}
|
|
122
|
-
const [head, tail] = address.split("::");
|
|
123
|
-
const highGroups = head ? expandHextets(head) : [];
|
|
124
|
-
const lowGroups = tail ? expandHextets(tail) : [];
|
|
125
|
-
const compressed = address.includes("::") ? new Array(8 - highGroups.length - lowGroups.length).fill(0) : [];
|
|
126
|
-
return [...highGroups, ...compressed, ...lowGroups];
|
|
127
|
-
}
|
|
128
|
-
__name(parseIpv6, "parseIpv6");
|
|
129
|
-
function expandHextets(fragment) {
|
|
130
|
-
const hextets = [];
|
|
131
|
-
for (const group of fragment.split(":")) {
|
|
132
|
-
if (group.includes(".")) {
|
|
133
|
-
const octets = parseIpv4(group);
|
|
134
|
-
hextets.push(octets[0] << 8 | octets[1], octets[2] << 8 | octets[3]);
|
|
135
|
-
} else {
|
|
136
|
-
hextets.push(parseInt(group, 16));
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
return hextets;
|
|
140
|
-
}
|
|
141
|
-
__name(expandHextets, "expandHextets");
|
|
142
|
-
function ipv4ToInt(octets) {
|
|
143
|
-
return (octets[0] << 24 | octets[1] << 16 | octets[2] << 8 | octets[3]) >>> 0;
|
|
144
|
-
}
|
|
145
|
-
__name(ipv4ToInt, "ipv4ToInt");
|
|
146
|
-
function hextetsToBigInt(hextets) {
|
|
147
|
-
let value = 0n;
|
|
148
|
-
for (const hextet of hextets) {
|
|
149
|
-
value = value << 16n | BigInt(hextet);
|
|
150
|
-
}
|
|
151
|
-
return value;
|
|
152
|
-
}
|
|
153
|
-
__name(hextetsToBigInt, "hextetsToBigInt");
|
|
154
|
-
function parseIpv4Cidr(cidr) {
|
|
155
|
-
const [address, prefix] = cidr.split("/");
|
|
156
|
-
const mask = 4294967295 << 32 - Number(prefix) >>> 0;
|
|
157
|
-
return { base: (ipv4ToInt(parseIpv4(address)) & mask) >>> 0, mask };
|
|
158
|
-
}
|
|
159
|
-
__name(parseIpv4Cidr, "parseIpv4Cidr");
|
|
160
|
-
function parseIpv6Cidr(cidr) {
|
|
161
|
-
const [address, prefix] = cidr.split("/");
|
|
162
|
-
return { base: hextetsToBigInt(parseIpv6(address)), prefix: Number(prefix) };
|
|
163
|
-
}
|
|
164
|
-
__name(parseIpv6Cidr, "parseIpv6Cidr");
|
|
165
|
-
function isBlockedIpv4(octets) {
|
|
166
|
-
const value = ipv4ToInt(octets);
|
|
167
|
-
return BLOCKED_IPV4_CIDRS.some(
|
|
168
|
-
({ base, mask }) => (value & mask) >>> 0 === base
|
|
169
|
-
);
|
|
170
|
-
}
|
|
171
|
-
__name(isBlockedIpv4, "isBlockedIpv4");
|
|
172
|
-
function isBlockedIpv6(hextets) {
|
|
173
|
-
const value = hextetsToBigInt(hextets);
|
|
174
|
-
if (value >> 32n === 0xffffn) {
|
|
175
|
-
return isBlockedIpv4([
|
|
176
|
-
Number(value >> 24n & 0xffn),
|
|
177
|
-
Number(value >> 16n & 0xffn),
|
|
178
|
-
Number(value >> 8n & 0xffn),
|
|
179
|
-
Number(value & 0xffn)
|
|
180
|
-
]);
|
|
181
|
-
}
|
|
182
|
-
return BLOCKED_IPV6_CIDRS.some(
|
|
183
|
-
({ base, prefix }) => value >> BigInt(128 - prefix) === base >> BigInt(128 - prefix)
|
|
184
|
-
);
|
|
185
|
-
}
|
|
186
|
-
__name(isBlockedIpv6, "isBlockedIpv6");
|
|
187
|
-
function isBlockedAddress(address) {
|
|
188
|
-
const octets = parseIpv4(address);
|
|
189
|
-
if (octets) {
|
|
190
|
-
return isBlockedIpv4(octets);
|
|
191
|
-
}
|
|
192
|
-
const hextets = parseIpv6(address);
|
|
193
|
-
if (hextets) {
|
|
194
|
-
return isBlockedIpv6(hextets);
|
|
195
|
-
}
|
|
196
|
-
return true;
|
|
197
|
-
}
|
|
198
|
-
__name(isBlockedAddress, "isBlockedAddress");
|
|
199
|
-
async function resolveHostAddresses(hostname) {
|
|
200
|
-
if ((0, import_node_net.isIP)(hostname) !== 0) {
|
|
201
|
-
return [hostname];
|
|
202
|
-
}
|
|
203
|
-
const records = await (0, import_promises.lookup)(hostname, { all: true });
|
|
204
|
-
const addresses = [...new Set(records.map((record) => record.address))];
|
|
205
|
-
if (addresses.length === 0) {
|
|
206
|
-
throw new Error(`Unable to resolve host: ${hostname}`);
|
|
207
|
-
}
|
|
208
|
-
return addresses;
|
|
209
|
-
}
|
|
210
|
-
__name(resolveHostAddresses, "resolveHostAddresses");
|
|
211
45
|
function assertUrlAllowed(url) {
|
|
212
46
|
const parsed = new URL(url);
|
|
213
|
-
if (!
|
|
47
|
+
if (!(0, import_ssrf_guard.isHttpUrl)(parsed)) {
|
|
214
48
|
throw new Error(`Unsupported url scheme: ${url}`);
|
|
215
49
|
}
|
|
216
|
-
if (
|
|
50
|
+
if ((0, import_ssrf_guard.isLocalhostHostname)(parsed.hostname)) {
|
|
217
51
|
throw new Error(`Blocked host: ${parsed.hostname}`);
|
|
218
52
|
}
|
|
219
53
|
return parsed;
|
|
220
54
|
}
|
|
221
55
|
__name(assertUrlAllowed, "assertUrlAllowed");
|
|
222
56
|
async function validateResolvedAddresses(hostname) {
|
|
223
|
-
const addresses = await resolveHostAddresses(hostname);
|
|
224
|
-
if (addresses.some(
|
|
57
|
+
const addresses = await (0, import_ssrf_guard.resolveHostAddresses)(hostname);
|
|
58
|
+
if (addresses.some(import_ssrf_guard.isNonGlobalAddress)) {
|
|
225
59
|
throw new Error(`Blocked host: ${hostname}`);
|
|
226
60
|
}
|
|
227
61
|
}
|
|
@@ -241,7 +75,7 @@ async function loadWebPage(url, options) {
|
|
|
241
75
|
const timeoutMs = (_a = options == null ? void 0 : options.timeoutMs) != null ? _a : DEFAULT_TIMEOUT_MS;
|
|
242
76
|
try {
|
|
243
77
|
const parsed = assertUrlAllowed(url);
|
|
244
|
-
await validateResolvedAddresses(normalizeHost(parsed.hostname));
|
|
78
|
+
await validateResolvedAddresses((0, import_ssrf_guard.normalizeHost)(parsed.hostname));
|
|
245
79
|
const response = await fetch(url, {
|
|
246
80
|
redirect: "manual",
|
|
247
81
|
signal: AbortSignal.timeout(timeoutMs)
|