@google/adk 2.4.0 → 2.5.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_remote_agent.js +17 -2
- package/dist/cjs/a2a/a2a_remote_agent_utils.js +8 -4
- package/dist/cjs/a2a/agent_card.js +5 -81
- package/dist/cjs/a2a/agent_to_a2a.js +7 -0
- package/dist/cjs/a2a/event_converter_utils.js +10 -3
- package/dist/cjs/agents/agent_engine_client.js +282 -55
- package/dist/cjs/agents/base_agent.js +111 -68
- package/dist/cjs/agents/functions.js +62 -85
- package/dist/cjs/agents/instructions.js +7 -6
- package/dist/cjs/agents/invocation_context.js +2 -2
- package/dist/cjs/agents/llm_agent.js +105 -95
- package/dist/cjs/agents/processors/content_processor_utils.js +42 -15
- package/dist/cjs/agents/processors/content_request_processor.js +28 -11
- package/dist/cjs/agents/processors/context_compactor_request_processor.js +5 -1
- package/dist/cjs/agents/processors/instructions_llm_request_processor.js +1 -1
- package/dist/cjs/agents/processors/nl_planning_processor.js +2 -1
- package/dist/cjs/artifacts/file_artifact_service.js +1 -1
- package/dist/cjs/cli/cli_eval.js +884 -17
- package/dist/cjs/cli/utils/cleanup.js +84 -0
- package/dist/cjs/cli/utils/envs.js +33 -2
- package/dist/cjs/cli/utils/evals.js +75 -8
- package/dist/cjs/cli/utils/logs.js +128 -9
- package/dist/cjs/cli/utils/path_validation.js +83 -0
- package/dist/cjs/code_executors/container_code_executor.js +158 -36
- package/dist/cjs/common.js +50 -12
- package/dist/cjs/context/compaction_utils.js +19 -0
- package/dist/cjs/events/event.js +7 -3
- package/dist/cjs/features/feature_registry.js +5 -0
- package/dist/cjs/index.js +29 -14
- package/dist/cjs/models/google_llm.js +33 -2
- package/dist/cjs/models/interactions_utils.js +3 -0
- package/dist/cjs/plugins/base_plugin.js +45 -21
- package/dist/cjs/plugins/plugin_manager.js +27 -0
- package/dist/cjs/runner/runner.js +306 -189
- package/dist/cjs/sessions/base_session_service.js +1 -4
- package/dist/cjs/sessions/database_session_service.js +191 -19
- package/dist/cjs/sessions/db/operations.js +70 -1
- package/dist/cjs/sessions/db/schema.js +4 -0
- package/dist/cjs/sessions/in_memory_session_service.js +2 -2
- package/dist/cjs/sessions/vertex_ai_session_service.js +11 -3
- package/dist/cjs/skills/loader.js +29 -28
- package/dist/cjs/telemetry/api/instrumentation.js +632 -0
- package/dist/cjs/telemetry/api/internal/common/accumulators.js +169 -0
- package/dist/cjs/telemetry/api/internal/common/attributes.js +131 -0
- package/dist/cjs/telemetry/api/internal/common/config.js +159 -0
- package/dist/cjs/telemetry/api/internal/common/error.js +98 -0
- package/dist/cjs/telemetry/api/internal/common/finish_reason.js +63 -0
- package/dist/cjs/telemetry/api/internal/common/genai_messages.js +217 -0
- package/dist/cjs/telemetry/api/internal/common/http_exchange.js +169 -0
- package/dist/cjs/telemetry/api/internal/common/provider_name.js +87 -0
- package/dist/cjs/telemetry/api/internal/common/redaction.js +148 -0
- package/dist/cjs/telemetry/api/internal/common/serialization.js +58 -0
- package/dist/cjs/telemetry/api/internal/common/token_usage.js +118 -0
- package/dist/cjs/telemetry/api/internal/logs/inference.js +50 -0
- package/dist/cjs/telemetry/api/internal/logs/logger.js +46 -0
- package/dist/cjs/telemetry/api/internal/logs/mcp.js +141 -0
- package/dist/cjs/telemetry/api/internal/metrics/agent.js +128 -0
- package/dist/cjs/telemetry/api/internal/metrics/inference_start_hook.js +56 -0
- package/dist/cjs/telemetry/api/internal/metrics/meters.js +189 -0
- package/dist/cjs/telemetry/api/internal/metrics/tool.js +147 -0
- package/dist/cjs/telemetry/api/internal/metrics/workflow.js +132 -0
- package/dist/cjs/telemetry/api/internal/trace/agent.js +52 -0
- package/dist/cjs/telemetry/api/internal/trace/compaction.js +78 -0
- package/dist/cjs/telemetry/api/internal/trace/inference.js +132 -0
- package/dist/cjs/telemetry/api/internal/trace/live.js +52 -0
- package/dist/cjs/telemetry/api/internal/trace/node.js +73 -0
- package/dist/cjs/telemetry/api/internal/trace/propagation.js +67 -0
- package/dist/cjs/telemetry/api/internal/trace/tool.js +122 -0
- package/dist/cjs/telemetry/api/internal/trace/tracer.js +77 -0
- package/dist/cjs/telemetry/api/internal/trace/workflow.js +77 -0
- package/dist/cjs/telemetry/export/agent_engine.js +90 -0
- package/dist/cjs/telemetry/export/agent_runtime.js +73 -0
- package/dist/cjs/telemetry/export/google_cloud.js +763 -0
- package/dist/cjs/telemetry/export/request_driven_metric_reader.js +303 -0
- package/dist/cjs/telemetry/{setup.js → export/setup.js} +72 -5
- package/dist/cjs/tools/agent_tool.js +9 -1
- package/dist/cjs/tools/application_integration_tool/application_integration_toolset.js +22 -34
- package/dist/cjs/tools/application_integration_tool/clients/connections_client.js +60 -20
- package/dist/cjs/tools/application_integration_tool/clients/integration_client.js +26 -10
- package/dist/cjs/tools/application_integration_tool/integration_connector_tool.js +14 -23
- package/dist/cjs/tools/base_toolset.js +1 -1
- package/dist/cjs/tools/computer_use/base_computer.js +125 -0
- package/dist/cjs/tools/computer_use/computer_use_actions.js +502 -0
- package/dist/cjs/tools/computer_use/computer_use_tool.js +244 -0
- package/dist/cjs/tools/computer_use/computer_use_toolset.js +360 -0
- package/dist/cjs/tools/function_tool.js +15 -5
- package/dist/cjs/tools/google_api_tool/google_api_toolset.js +3 -2
- package/dist/cjs/tools/google_api_tool/googleapi_to_openapi_converter.js +3 -1
- package/dist/cjs/tools/load_artifacts_tool.js +15 -5
- package/dist/cjs/tools/load_memory_tool.js +2 -5
- package/dist/cjs/tools/mcp/mcp_session_manager.js +23 -3
- package/dist/cjs/tools/mcp/mcp_tool.js +7 -3
- package/dist/cjs/tools/mcp/mcp_toolset.js +18 -6
- package/dist/cjs/tools/openapi_tool/auth/auth_helpers.js +30 -29
- package/dist/cjs/tools/openapi_tool/auth/credential_exchangers/oauth2_exchanger.js +2 -2
- package/dist/cjs/tools/openapi_tool/rest_api_tool.js +45 -14
- package/dist/cjs/tools/skill/load_skill_resource_tool.js +7 -0
- package/dist/cjs/tools/skill/load_skill_tool.js +3 -0
- package/dist/cjs/tools/skill/run_skill_script_tool.js +12 -2
- package/dist/cjs/tools/toolbox_toolset.js +47 -28
- package/dist/cjs/utils/async_queue.js +37 -3
- package/dist/cjs/utils/client_labels.js +9 -11
- package/dist/cjs/utils/env_aware_utils.js +13 -7
- package/dist/cjs/utils/error_utils.js +40 -2
- package/dist/cjs/utils/failover_utils.js +10 -9
- package/dist/cjs/utils/gemini_schema_util.js +125 -12
- package/dist/cjs/utils/id_provider.js +63 -0
- package/dist/cjs/utils/model_name.js +15 -0
- package/dist/cjs/utils/simple_zod_to_json.js +13 -31
- package/dist/cjs/utils/ssrf_guard.js +46 -16
- package/dist/cjs/version.js +1 -1
- package/dist/cjs/workflow/index.js +2 -0
- package/dist/cjs/workflow/node_runner.js +24 -80
- package/dist/cjs/workflow/nodes/parallel_worker.js +18 -7
- package/dist/cjs/workflow/run_llm_agent_as_node.js +19 -14
- package/dist/cjs/workflow/utils/retry_utils.js +2 -2
- package/dist/cjs/workflow/workflow.js +12 -12
- package/dist/esm/a2a/a2a_remote_agent.js +23 -3
- package/dist/esm/a2a/a2a_remote_agent_utils.js +8 -4
- package/dist/esm/a2a/agent_card.js +5 -83
- package/dist/esm/a2a/agent_to_a2a.js +7 -0
- package/dist/esm/a2a/event_converter_utils.js +10 -3
- package/dist/esm/agents/agent_engine_client.js +293 -55
- package/dist/esm/agents/base_agent.js +111 -72
- package/dist/esm/agents/functions.js +67 -89
- package/dist/esm/agents/instructions.js +7 -6
- package/dist/esm/agents/invocation_context.js +2 -2
- package/dist/esm/agents/llm_agent.js +111 -100
- package/dist/esm/agents/processors/content_processor_utils.js +42 -15
- package/dist/esm/agents/processors/content_request_processor.js +28 -11
- package/dist/esm/agents/processors/context_compactor_request_processor.js +5 -1
- package/dist/esm/agents/processors/instructions_llm_request_processor.js +1 -1
- package/dist/esm/agents/processors/nl_planning_processor.js +2 -1
- package/dist/esm/artifacts/file_artifact_service.js +1 -1
- package/dist/esm/cli/cli_eval.js +880 -17
- package/dist/esm/cli/utils/cleanup.js +56 -0
- package/dist/esm/cli/utils/envs.js +33 -2
- package/dist/esm/cli/utils/evals.js +74 -8
- package/dist/esm/cli/utils/logs.js +128 -9
- package/dist/esm/cli/utils/path_validation.js +45 -0
- package/dist/esm/code_executors/container_code_executor.js +158 -36
- package/dist/esm/common.js +49 -6
- package/dist/esm/context/compaction_utils.js +19 -0
- package/dist/esm/events/event.js +7 -3
- package/dist/esm/features/feature_registry.js +5 -0
- package/dist/esm/index.js +27 -15
- package/dist/esm/models/google_llm.js +33 -2
- package/dist/esm/models/interactions_utils.js +3 -0
- package/dist/esm/plugins/base_plugin.js +45 -21
- package/dist/esm/plugins/plugin_manager.js +27 -0
- package/dist/esm/runner/runner.js +310 -192
- package/dist/esm/sessions/base_session_service.js +1 -4
- package/dist/esm/sessions/database_session_service.js +191 -19
- package/dist/esm/sessions/db/operations.js +70 -1
- package/dist/esm/sessions/db/schema.js +4 -0
- package/dist/esm/sessions/in_memory_session_service.js +2 -2
- package/dist/esm/sessions/vertex_ai_session_service.js +11 -3
- package/dist/esm/skills/loader.js +29 -28
- package/dist/esm/telemetry/api/instrumentation.js +655 -0
- package/dist/esm/telemetry/api/internal/common/accumulators.js +139 -0
- package/dist/esm/telemetry/api/internal/common/attributes.js +94 -0
- package/dist/esm/telemetry/api/internal/common/config.js +128 -0
- package/dist/esm/telemetry/api/internal/common/error.js +69 -0
- package/dist/esm/telemetry/api/internal/common/finish_reason.js +35 -0
- package/dist/esm/telemetry/api/internal/common/genai_messages.js +188 -0
- package/dist/esm/telemetry/api/internal/common/http_exchange.js +142 -0
- package/dist/esm/telemetry/api/internal/common/provider_name.js +59 -0
- package/dist/esm/telemetry/api/internal/common/redaction.js +121 -0
- package/dist/esm/telemetry/api/internal/common/serialization.js +30 -0
- package/dist/esm/telemetry/api/internal/common/token_usage.js +85 -0
- package/dist/esm/telemetry/api/internal/logs/inference.js +23 -0
- package/dist/esm/telemetry/api/internal/logs/logger.js +19 -0
- package/dist/esm/telemetry/api/internal/logs/mcp.js +113 -0
- package/dist/esm/telemetry/api/internal/metrics/agent.js +107 -0
- package/dist/esm/telemetry/api/internal/metrics/inference_start_hook.js +29 -0
- package/dist/esm/telemetry/api/internal/metrics/meters.js +165 -0
- package/dist/esm/telemetry/api/internal/metrics/tool.js +119 -0
- package/dist/esm/telemetry/api/internal/metrics/workflow.js +112 -0
- package/dist/esm/telemetry/api/internal/trace/agent.js +25 -0
- package/dist/esm/telemetry/api/internal/trace/compaction.js +50 -0
- package/dist/esm/telemetry/api/internal/trace/inference.js +107 -0
- package/dist/esm/telemetry/api/internal/trace/live.js +28 -0
- package/dist/esm/telemetry/api/internal/trace/node.js +44 -0
- package/dist/esm/telemetry/api/internal/trace/propagation.js +39 -0
- package/dist/esm/telemetry/api/internal/trace/tool.js +96 -0
- package/dist/esm/telemetry/api/internal/trace/tracer.js +52 -0
- package/dist/esm/telemetry/api/internal/trace/workflow.js +54 -0
- package/dist/esm/telemetry/export/agent_engine.js +67 -0
- package/dist/esm/telemetry/export/agent_runtime.js +46 -0
- package/dist/esm/telemetry/export/google_cloud.js +733 -0
- package/dist/esm/telemetry/export/request_driven_metric_reader.js +276 -0
- package/dist/esm/telemetry/export/setup.js +160 -0
- package/dist/esm/tools/agent_tool.js +9 -1
- package/dist/esm/tools/application_integration_tool/application_integration_toolset.js +23 -35
- package/dist/esm/tools/application_integration_tool/clients/connections_client.js +64 -21
- package/dist/esm/tools/application_integration_tool/clients/integration_client.js +26 -10
- package/dist/esm/tools/application_integration_tool/integration_connector_tool.js +14 -23
- package/dist/esm/tools/base_toolset.js +1 -1
- package/dist/esm/tools/computer_use/base_computer.js +99 -0
- package/dist/esm/tools/computer_use/computer_use_actions.js +477 -0
- package/dist/esm/tools/computer_use/computer_use_tool.js +217 -0
- package/dist/esm/tools/computer_use/computer_use_toolset.js +344 -0
- package/dist/esm/tools/function_tool.js +15 -5
- package/dist/esm/tools/google_api_tool/google_api_toolset.js +3 -2
- package/dist/esm/tools/google_api_tool/googleapi_to_openapi_converter.js +3 -1
- package/dist/esm/tools/load_artifacts_tool.js +15 -5
- package/dist/esm/tools/load_memory_tool.js +2 -5
- package/dist/esm/tools/mcp/mcp_session_manager.js +23 -3
- package/dist/esm/tools/mcp/mcp_tool.js +7 -3
- package/dist/esm/tools/mcp/mcp_toolset.js +18 -6
- package/dist/esm/tools/openapi_tool/auth/auth_helpers.js +27 -26
- package/dist/esm/tools/openapi_tool/auth/credential_exchangers/oauth2_exchanger.js +2 -2
- package/dist/esm/tools/openapi_tool/rest_api_tool.js +45 -14
- package/dist/esm/tools/skill/load_skill_resource_tool.js +7 -0
- package/dist/esm/tools/skill/load_skill_tool.js +3 -0
- package/dist/esm/tools/skill/run_skill_script_tool.js +12 -2
- package/dist/esm/tools/toolbox_toolset.js +47 -28
- package/dist/esm/utils/async_queue.js +37 -3
- package/dist/esm/utils/client_labels.js +9 -11
- package/dist/esm/utils/env_aware_utils.js +12 -7
- package/dist/esm/utils/error_utils.js +37 -1
- package/dist/esm/utils/failover_utils.js +10 -9
- package/dist/esm/utils/gemini_schema_util.js +124 -11
- package/dist/esm/utils/id_provider.js +33 -0
- package/dist/esm/utils/model_name.js +14 -0
- package/dist/esm/utils/simple_zod_to_json.js +13 -31
- package/dist/esm/utils/ssrf_guard.js +55 -15
- package/dist/esm/version.js +1 -1
- package/dist/esm/workflow/index.js +2 -1
- package/dist/esm/workflow/node_runner.js +26 -80
- package/dist/esm/workflow/nodes/parallel_worker.js +16 -6
- package/dist/esm/workflow/run_llm_agent_as_node.js +19 -14
- package/dist/esm/workflow/utils/retry_utils.js +2 -2
- package/dist/esm/workflow/workflow.js +12 -12
- package/dist/types/a2a/a2a_remote_agent.d.ts +6 -0
- package/dist/types/a2a/a2a_remote_agent_utils.d.ts +3 -2
- package/dist/types/agents/agent_engine_client.d.ts +121 -3
- package/dist/types/agents/base_agent.d.ts +2 -0
- package/dist/types/agents/processors/content_processor_utils.d.ts +9 -9
- package/dist/types/agents/run_config.d.ts +14 -0
- package/dist/types/cli/cli_eval.d.ts +172 -9
- package/dist/types/cli/utils/cleanup.d.ts +18 -0
- package/dist/types/cli/utils/envs.d.ts +13 -3
- package/dist/types/cli/utils/evals.d.ts +64 -1
- package/dist/types/cli/utils/logs.d.ts +19 -2
- package/dist/types/cli/utils/path_validation.d.ts +30 -0
- package/dist/types/code_executors/container_code_executor.d.ts +49 -8
- package/dist/types/common.d.ts +16 -9
- package/dist/types/context/compaction_utils.d.ts +13 -1
- package/dist/types/events/event.d.ts +3 -0
- package/dist/types/features/feature_registry.d.ts +1 -0
- package/dist/types/index.d.ts +9 -6
- package/dist/types/plugins/base_plugin.d.ts +50 -21
- package/dist/types/plugins/plugin_manager.d.ts +13 -0
- package/dist/types/runner/runner.d.ts +11 -0
- package/dist/types/sessions/base_session_service.d.ts +0 -2
- package/dist/types/sessions/db/operations.d.ts +2 -1
- package/dist/types/sessions/db/schema.d.ts +5 -3
- package/dist/types/telemetry/api/instrumentation.d.ts +259 -0
- package/dist/types/telemetry/api/internal/common/accumulators.d.ts +91 -0
- package/dist/types/telemetry/api/internal/common/attributes.d.ts +90 -0
- package/dist/types/telemetry/api/internal/common/config.d.ts +61 -0
- package/dist/types/telemetry/api/internal/common/error.d.ts +29 -0
- package/dist/types/telemetry/api/internal/common/finish_reason.d.ts +18 -0
- package/dist/types/telemetry/api/internal/common/genai_messages.d.ts +26 -0
- package/dist/types/telemetry/api/internal/common/http_exchange.d.ts +50 -0
- package/dist/types/telemetry/api/internal/common/provider_name.d.ts +16 -0
- package/dist/types/telemetry/api/internal/common/redaction.d.ts +14 -0
- package/dist/types/telemetry/api/internal/common/serialization.d.ts +18 -0
- package/dist/types/telemetry/api/internal/common/token_usage.d.ts +47 -0
- package/dist/types/telemetry/api/internal/logs/inference.d.ts +15 -0
- package/dist/types/telemetry/api/internal/logs/logger.d.ts +13 -0
- package/dist/types/telemetry/api/internal/logs/mcp.d.ts +31 -0
- package/dist/types/telemetry/api/internal/metrics/agent.d.ts +28 -0
- package/dist/types/telemetry/api/internal/metrics/inference_start_hook.d.ts +12 -0
- package/dist/types/telemetry/api/internal/metrics/meters.d.ts +57 -0
- package/dist/types/telemetry/api/internal/metrics/tool.d.ts +44 -0
- package/dist/types/telemetry/api/internal/metrics/workflow.d.ts +32 -0
- package/dist/types/telemetry/api/internal/trace/agent.d.ts +14 -0
- package/dist/types/telemetry/api/internal/trace/compaction.d.ts +20 -0
- package/dist/types/telemetry/api/internal/trace/inference.d.ts +31 -0
- package/dist/types/telemetry/api/internal/trace/live.d.ts +21 -0
- package/dist/types/telemetry/api/internal/trace/node.d.ts +22 -0
- package/dist/types/telemetry/api/internal/trace/propagation.d.ts +22 -0
- package/dist/types/telemetry/api/internal/trace/tool.d.ts +57 -0
- package/dist/types/telemetry/api/internal/trace/tracer.d.ts +31 -0
- package/dist/types/telemetry/api/internal/trace/workflow.d.ts +21 -0
- package/dist/types/telemetry/export/agent_engine.d.ts +23 -0
- package/dist/types/telemetry/export/agent_runtime.d.ts +40 -0
- package/dist/types/telemetry/export/google_cloud.d.ts +189 -0
- package/dist/types/telemetry/export/request_driven_metric_reader.d.ts +144 -0
- package/dist/types/telemetry/{setup.d.ts → export/setup.d.ts} +3 -0
- package/dist/types/tools/agent_tool.d.ts +1 -1
- package/dist/types/tools/application_integration_tool/clients/connections_client.d.ts +13 -4
- package/dist/types/tools/base_toolset.d.ts +1 -1
- package/dist/types/tools/computer_use/base_computer.d.ts +281 -0
- package/dist/types/tools/computer_use/computer_use_actions.d.ts +53 -0
- package/dist/types/tools/computer_use/computer_use_tool.d.ts +108 -0
- package/dist/types/tools/computer_use/computer_use_toolset.d.ts +132 -0
- package/dist/types/tools/google_api_tool/google_api_toolset.d.ts +2 -0
- package/dist/types/tools/load_artifacts_tool.d.ts +5 -1
- package/dist/types/tools/load_memory_tool.d.ts +13 -7
- package/dist/types/tools/mcp/mcp_session_manager.d.ts +16 -0
- package/dist/types/tools/openapi_tool/auth/auth_helpers.d.ts +8 -8
- package/dist/types/tools/openapi_tool/openapi_spec_parser/operation_parser.d.ts +7 -3
- package/dist/types/tools/toolbox_toolset.d.ts +15 -20
- package/dist/types/utils/async_queue.d.ts +14 -0
- package/dist/types/utils/env_aware_utils.d.ts +11 -0
- package/dist/types/utils/error_utils.d.ts +4 -0
- package/dist/types/utils/gemini_schema_util.d.ts +27 -6
- package/dist/types/utils/id_provider.d.ts +43 -0
- package/dist/types/utils/model_name.d.ts +8 -0
- package/dist/types/utils/ssrf_guard.d.ts +2 -0
- package/dist/types/version.d.ts +1 -1
- package/dist/types/workflow/index.d.ts +1 -1
- package/dist/types/workflow/nodes/parallel_worker.d.ts +8 -1
- package/dist/web/index_web.js +86 -88
- package/dist/web/index_web.js.map +4 -4
- package/package.json +13 -15
- package/dist/cjs/telemetry/google_cloud.js +0 -116
- package/dist/cjs/telemetry/tracing.js +0 -393
- package/dist/esm/telemetry/google_cloud.js +0 -99
- package/dist/esm/telemetry/setup.js +0 -88
- package/dist/esm/telemetry/tracing.js +0 -361
- package/dist/types/telemetry/google_cloud.d.ts +0 -9
- package/dist/types/telemetry/tracing.d.ts +0 -143
|
@@ -63,26 +63,43 @@ function isToolOptionsObject(value) {
|
|
|
63
63
|
return typeof value === "object" && value !== null && "execute" in value && typeof value.execute === "function";
|
|
64
64
|
}
|
|
65
65
|
__name(isToolOptionsObject, "isToolOptionsObject");
|
|
66
|
+
function wrapPrefixedBaseTool(rawTool, name) {
|
|
67
|
+
return new Proxy(rawTool, {
|
|
68
|
+
get(target, prop, receiver) {
|
|
69
|
+
if (prop === "name") {
|
|
70
|
+
return name;
|
|
71
|
+
}
|
|
72
|
+
if (prop === "_getDeclaration") {
|
|
73
|
+
return () => {
|
|
74
|
+
const declaration = target._getDeclaration();
|
|
75
|
+
return declaration ? { ...declaration, name } : void 0;
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
const value = Reflect.get(target, prop, receiver);
|
|
79
|
+
return typeof value === "function" ? value.bind(target) : value;
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
__name(wrapPrefixedBaseTool, "wrapPrefixedBaseTool");
|
|
66
84
|
function wrapLoadedTool(rawTool, prefix) {
|
|
67
85
|
var _a2;
|
|
68
86
|
if ((0, import_base_tool.isBaseTool)(rawTool)) {
|
|
69
|
-
|
|
87
|
+
const name = prefix ? `${prefix}_${rawTool.name}` : rawTool.name;
|
|
88
|
+
if (name === rawTool.name) {
|
|
70
89
|
return rawTool;
|
|
71
90
|
}
|
|
72
|
-
return
|
|
73
|
-
Object.create(Object.getPrototypeOf(rawTool)),
|
|
74
|
-
rawTool,
|
|
75
|
-
{ name: `${prefix}_${rawTool.name}` }
|
|
76
|
-
);
|
|
91
|
+
return wrapPrefixedBaseTool(rawTool, name);
|
|
77
92
|
}
|
|
78
93
|
if (typeof rawTool === "function") {
|
|
79
94
|
const fn = rawTool;
|
|
80
|
-
const baseName = fn.name || "toolbox_tool";
|
|
95
|
+
const baseName = typeof fn.getName === "function" ? fn.getName() : fn.toolName || (fn.name && fn.name !== "callable" ? fn.name : void 0) || "toolbox_tool";
|
|
81
96
|
const name = prefix ? `${prefix}_${baseName}` : baseName;
|
|
82
|
-
const description = (_a2 = fn.description) != null ? _a2 : "";
|
|
97
|
+
const description = typeof fn.getDescription === "function" ? fn.getDescription() : (_a2 = fn.description) != null ? _a2 : "";
|
|
98
|
+
const parameters = typeof fn.getParamSchema === "function" ? fn.getParamSchema() : fn.parameters;
|
|
83
99
|
return new import_function_tool.FunctionTool({
|
|
84
100
|
name,
|
|
85
101
|
description,
|
|
102
|
+
parameters,
|
|
86
103
|
execute: fn
|
|
87
104
|
});
|
|
88
105
|
}
|
|
@@ -103,53 +120,55 @@ function wrapLoadedTool(rawTool, prefix) {
|
|
|
103
120
|
__name(wrapLoadedTool, "wrapLoadedTool");
|
|
104
121
|
const _ToolboxToolset = class _ToolboxToolset extends (_b = import_base_toolset.BaseToolset, _a = TOOLBOX_TOOLSET_SIGNATURE_SYMBOL, _b) {
|
|
105
122
|
constructor(serverUrlOrOptions, extraOptions) {
|
|
106
|
-
var _a2, _b2, _c, _d;
|
|
123
|
+
var _a2, _b2, _c, _d, _e;
|
|
107
124
|
const options = typeof serverUrlOrOptions === "string" ? { serverUrl: serverUrlOrOptions, ...extraOptions } : serverUrlOrOptions;
|
|
125
|
+
const normalizedServerUrl = (_a2 = options.serverUrl) == null ? void 0 : _a2.trim();
|
|
126
|
+
if (!options.client && !normalizedServerUrl) {
|
|
127
|
+
throw new Error("Either client or a non-empty serverUrl is required.");
|
|
128
|
+
}
|
|
108
129
|
if ((!options.toolNames || options.toolNames.length === 0) && !options.toolsetName) {
|
|
109
130
|
throw new Error("toolNames and toolsetName cannot both be undefined.");
|
|
110
131
|
}
|
|
111
|
-
super((
|
|
132
|
+
super((_b2 = options.toolFilter) != null ? _b2 : [], options.prefix);
|
|
112
133
|
/** A unique symbol to identify ADK ToolboxToolset class. */
|
|
113
134
|
this[_a] = true;
|
|
114
135
|
this.serverUrl = options.serverUrl;
|
|
115
136
|
this.toolsetName = options.toolsetName;
|
|
116
137
|
this.toolNames = options.toolNames;
|
|
117
|
-
this.authTokenGetters = (
|
|
118
|
-
this.boundParams = (
|
|
119
|
-
this.toolboxClient = (
|
|
138
|
+
this.authTokenGetters = (_c = options.authTokenGetters) != null ? _c : {};
|
|
139
|
+
this.boundParams = (_d = options.boundParams) != null ? _d : {};
|
|
140
|
+
this.toolboxClient = (_e = options.client) != null ? _e : createUnconfiguredToolboxToolsetClient(normalizedServerUrl != null ? normalizedServerUrl : "");
|
|
120
141
|
}
|
|
121
142
|
/**
|
|
122
143
|
* Loads the configured toolset and/or individual tools from the Toolbox
|
|
123
144
|
* client and returns the selected {@link BaseTool} instances.
|
|
124
145
|
*/
|
|
125
146
|
async getTools(context) {
|
|
126
|
-
var _a2, _b2
|
|
127
|
-
const loadOptions = {
|
|
128
|
-
authTokenGetters: this.authTokenGetters,
|
|
129
|
-
boundParams: this.boundParams
|
|
130
|
-
};
|
|
147
|
+
var _a2, _b2;
|
|
131
148
|
const tools = [];
|
|
132
149
|
if (this.toolsetName) {
|
|
133
|
-
const loader = (
|
|
150
|
+
const loader = (_a2 = this.toolboxClient.loadToolset) == null ? void 0 : _a2.bind(this.toolboxClient);
|
|
134
151
|
if (!loader) {
|
|
135
|
-
throw new Error(
|
|
136
|
-
"ToolboxClient does not implement loadToolset or load_toolset."
|
|
137
|
-
);
|
|
152
|
+
throw new Error("ToolboxClient does not implement loadToolset.");
|
|
138
153
|
}
|
|
139
|
-
const loadedToolset = await loader(
|
|
154
|
+
const loadedToolset = await loader(
|
|
155
|
+
this.toolsetName,
|
|
156
|
+
this.authTokenGetters,
|
|
157
|
+
this.boundParams
|
|
158
|
+
);
|
|
140
159
|
for (const rawTool of loadedToolset) {
|
|
141
160
|
tools.push(wrapLoadedTool(rawTool, this.prefix));
|
|
142
161
|
}
|
|
143
162
|
}
|
|
144
163
|
if (this.toolNames && this.toolNames.length > 0) {
|
|
145
|
-
const loader = (
|
|
164
|
+
const loader = (_b2 = this.toolboxClient.loadTool) == null ? void 0 : _b2.bind(this.toolboxClient);
|
|
146
165
|
if (!loader) {
|
|
147
|
-
throw new Error(
|
|
148
|
-
"ToolboxClient does not implement loadTool or load_tool."
|
|
149
|
-
);
|
|
166
|
+
throw new Error("ToolboxClient does not implement loadTool.");
|
|
150
167
|
}
|
|
151
168
|
const loadedSingleTools = await Promise.all(
|
|
152
|
-
this.toolNames.map(
|
|
169
|
+
this.toolNames.map(
|
|
170
|
+
(toolName) => loader(toolName, this.authTokenGetters, this.boundParams)
|
|
171
|
+
)
|
|
153
172
|
);
|
|
154
173
|
for (const rawTool of loadedSingleTools) {
|
|
155
174
|
tools.push(wrapLoadedTool(rawTool, this.prefix));
|
|
@@ -52,14 +52,43 @@ const _AsyncQueue = class _AsyncQueue {
|
|
|
52
52
|
* immediately; otherwise the value is buffered. No-op once closed/failed.
|
|
53
53
|
*/
|
|
54
54
|
push(value) {
|
|
55
|
-
|
|
55
|
+
this.enqueue(value);
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Enqueues a value like {@link push}, and resolves once the consumer has
|
|
59
|
+
* finished with it: when it asks for the next item, or when the queue closes
|
|
60
|
+
* or fails. Resolves at once if the queue is already closed.
|
|
61
|
+
*/
|
|
62
|
+
pushAndWait(value) {
|
|
63
|
+
return new Promise((resolve) => this.enqueue(value, resolve));
|
|
64
|
+
}
|
|
65
|
+
enqueue(value, ack) {
|
|
66
|
+
if (this.closed) {
|
|
67
|
+
ack == null ? void 0 : ack();
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
56
70
|
const resolver = this.resolvers.shift();
|
|
57
71
|
if (resolver) {
|
|
72
|
+
this.deliveredAck = ack;
|
|
58
73
|
resolver.resolve({ value, done: false });
|
|
59
74
|
} else {
|
|
60
|
-
this.queue.push(value);
|
|
75
|
+
this.queue.push({ value, ack });
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
/** Releases every producer still waiting in {@link pushAndWait}. */
|
|
79
|
+
releaseAll() {
|
|
80
|
+
var _a;
|
|
81
|
+
this.releaseDelivered();
|
|
82
|
+
for (const item of this.queue) {
|
|
83
|
+
(_a = item.ack) == null ? void 0 : _a.call(item);
|
|
84
|
+
item.ack = void 0;
|
|
61
85
|
}
|
|
62
86
|
}
|
|
87
|
+
releaseDelivered() {
|
|
88
|
+
const ack = this.deliveredAck;
|
|
89
|
+
this.deliveredAck = void 0;
|
|
90
|
+
ack == null ? void 0 : ack();
|
|
91
|
+
}
|
|
63
92
|
/**
|
|
64
93
|
* Signals that production failed. Buffered items are still delivered first;
|
|
65
94
|
* once the buffer drains, the consumer's next `next()` rejects with `error`.
|
|
@@ -69,6 +98,7 @@ const _AsyncQueue = class _AsyncQueue {
|
|
|
69
98
|
if (this.failure) return;
|
|
70
99
|
this.failure = { error };
|
|
71
100
|
this.closed = true;
|
|
101
|
+
this.releaseAll();
|
|
72
102
|
while (this.resolvers.length > 0) {
|
|
73
103
|
this.resolvers.shift().reject(error);
|
|
74
104
|
}
|
|
@@ -84,6 +114,7 @@ const _AsyncQueue = class _AsyncQueue {
|
|
|
84
114
|
close() {
|
|
85
115
|
if (this.closed) return;
|
|
86
116
|
this.closed = true;
|
|
117
|
+
this.releaseAll();
|
|
87
118
|
while (this.resolvers.length > 0) {
|
|
88
119
|
this.resolvers.shift().resolve({ value: void 0, done: true });
|
|
89
120
|
}
|
|
@@ -91,8 +122,11 @@ const _AsyncQueue = class _AsyncQueue {
|
|
|
91
122
|
[Symbol.asyncIterator]() {
|
|
92
123
|
return {
|
|
93
124
|
next: /* @__PURE__ */ __name(() => {
|
|
125
|
+
this.releaseDelivered();
|
|
94
126
|
if (this.queue.length > 0) {
|
|
95
|
-
|
|
127
|
+
const item = this.queue.shift();
|
|
128
|
+
this.deliveredAck = item.ack;
|
|
129
|
+
return Promise.resolve({ value: item.value, done: false });
|
|
96
130
|
}
|
|
97
131
|
if (this.failure) {
|
|
98
132
|
return Promise.reject(this.failure.error);
|
|
@@ -146,19 +146,17 @@ function mergeTrackingHeaders(headers) {
|
|
|
146
146
|
otherHeaders.append(name, value);
|
|
147
147
|
}
|
|
148
148
|
}
|
|
149
|
-
const
|
|
149
|
+
const mergedEntries = /* @__PURE__ */ new Map();
|
|
150
150
|
otherHeaders.forEach((value, name) => {
|
|
151
|
-
|
|
151
|
+
var _a2;
|
|
152
|
+
const key = (_a2 = originalNames.get(name)) != null ? _a2 : name;
|
|
153
|
+
const existing = mergedEntries.get(key);
|
|
154
|
+
mergedEntries.set(
|
|
155
|
+
key,
|
|
156
|
+
existing !== void 0 ? `${existing}, ${value}` : value
|
|
157
|
+
);
|
|
152
158
|
});
|
|
153
|
-
const merged = Object.fromEntries(
|
|
154
|
-
normalizedEntries.map(([name, value]) => {
|
|
155
|
-
var _a2;
|
|
156
|
-
return [
|
|
157
|
-
(_a2 = originalNames.get(name)) != null ? _a2 : name,
|
|
158
|
-
value
|
|
159
|
-
];
|
|
160
|
-
})
|
|
161
|
-
);
|
|
159
|
+
const merged = Object.fromEntries(mergedEntries);
|
|
162
160
|
for (const [name, trackingValue] of Object.entries(getTrackingHeaders())) {
|
|
163
161
|
const tokens = trackingValue.split(" ");
|
|
164
162
|
for (const value of (_b = callerValues.get(name)) != null ? _b : []) {
|
|
@@ -28,6 +28,7 @@ __export(env_aware_utils_exports, {
|
|
|
28
28
|
base64Decode: () => base64Decode,
|
|
29
29
|
base64Encode: () => base64Encode,
|
|
30
30
|
getBooleanEnvVar: () => getBooleanEnvVar,
|
|
31
|
+
getEnvVar: () => getEnvVar,
|
|
31
32
|
isBase64Encoded: () => isBase64Encoded,
|
|
32
33
|
isBrowser: () => isBrowser,
|
|
33
34
|
isEnterpriseModeEnabled: () => isEnterpriseModeEnabled,
|
|
@@ -97,11 +98,16 @@ function isBase64Encoded(data) {
|
|
|
97
98
|
}
|
|
98
99
|
}
|
|
99
100
|
__name(isBase64Encoded, "isBase64Encoded");
|
|
100
|
-
function
|
|
101
|
-
|
|
102
|
-
|
|
101
|
+
function getEnvVar(envVar) {
|
|
102
|
+
var _a;
|
|
103
|
+
if (typeof process === "undefined") {
|
|
104
|
+
return void 0;
|
|
103
105
|
}
|
|
104
|
-
|
|
106
|
+
return (_a = process.env) == null ? void 0 : _a[envVar];
|
|
107
|
+
}
|
|
108
|
+
__name(getEnvVar, "getEnvVar");
|
|
109
|
+
function getBooleanEnvVar(envVar) {
|
|
110
|
+
const envVarValue = (getEnvVar(envVar) || "").toLowerCase();
|
|
105
111
|
return ["true", "1"].includes(envVarValue);
|
|
106
112
|
}
|
|
107
113
|
__name(getBooleanEnvVar, "getBooleanEnvVar");
|
|
@@ -115,9 +121,8 @@ function warnDeprecatedEnterpriseModeEnvVar(message) {
|
|
|
115
121
|
}
|
|
116
122
|
__name(warnDeprecatedEnterpriseModeEnvVar, "warnDeprecatedEnterpriseModeEnvVar");
|
|
117
123
|
function isEnterpriseModeEnabled() {
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
if (((_b = process.env) == null ? void 0 : _b[ENTERPRISE_MODE_ENV_VAR]) !== void 0) {
|
|
124
|
+
const deprecatedIsSet = getEnvVar(DEPRECATED_ENTERPRISE_MODE_ENV_VAR) !== void 0;
|
|
125
|
+
if (getEnvVar(ENTERPRISE_MODE_ENV_VAR) !== void 0) {
|
|
121
126
|
if (deprecatedIsSet) {
|
|
122
127
|
warnDeprecatedEnterpriseModeEnvVar(
|
|
123
128
|
`${DEPRECATED_ENTERPRISE_MODE_ENV_VAR} is set but ignored because ${ENTERPRISE_MODE_ENV_VAR} takes precedence. ${DEPRECATED_ENTERPRISE_MODE_ENV_VAR} is deprecated, please use ${ENTERPRISE_MODE_ENV_VAR} instead.`
|
|
@@ -139,6 +144,7 @@ __name(isEnterpriseModeEnabled, "isEnterpriseModeEnabled");
|
|
|
139
144
|
base64Decode,
|
|
140
145
|
base64Encode,
|
|
141
146
|
getBooleanEnvVar,
|
|
147
|
+
getEnvVar,
|
|
142
148
|
isBase64Encoded,
|
|
143
149
|
isBrowser,
|
|
144
150
|
isEnterpriseModeEnabled,
|
|
@@ -26,7 +26,9 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
26
26
|
var error_utils_exports = {};
|
|
27
27
|
__export(error_utils_exports, {
|
|
28
28
|
formatError: () => formatError,
|
|
29
|
-
getErrorMessage: () => getErrorMessage
|
|
29
|
+
getErrorMessage: () => getErrorMessage,
|
|
30
|
+
isInvocationCancellation: () => isInvocationCancellation,
|
|
31
|
+
toError: () => toError
|
|
30
32
|
});
|
|
31
33
|
module.exports = __toCommonJS(error_utils_exports);
|
|
32
34
|
/**
|
|
@@ -43,6 +45,40 @@ function asRecord(value) {
|
|
|
43
45
|
return value !== null && typeof value === "object" ? value : void 0;
|
|
44
46
|
}
|
|
45
47
|
__name(asRecord, "asRecord");
|
|
48
|
+
function toError(error) {
|
|
49
|
+
return error instanceof Error ? error : new Error("Execution threw a non-Error value.", { cause: error });
|
|
50
|
+
}
|
|
51
|
+
__name(toError, "toError");
|
|
52
|
+
function isInvocationCancellation(error, signal) {
|
|
53
|
+
if (!(signal == null ? void 0 : signal.aborted)) {
|
|
54
|
+
return false;
|
|
55
|
+
}
|
|
56
|
+
const seen = /* @__PURE__ */ new Set();
|
|
57
|
+
for (let depth = 0; depth < 32 && !seen.has(error); depth++) {
|
|
58
|
+
if (Object.is(error, signal.reason)) {
|
|
59
|
+
return true;
|
|
60
|
+
}
|
|
61
|
+
seen.add(error);
|
|
62
|
+
const record = asRecord(error);
|
|
63
|
+
if (!record) {
|
|
64
|
+
return false;
|
|
65
|
+
}
|
|
66
|
+
try {
|
|
67
|
+
const name = record["name"];
|
|
68
|
+
if (name === "AbortError" || name === "InvocationAbortedError") {
|
|
69
|
+
return true;
|
|
70
|
+
}
|
|
71
|
+
if (!("cause" in record)) {
|
|
72
|
+
return false;
|
|
73
|
+
}
|
|
74
|
+
error = record["cause"];
|
|
75
|
+
} catch {
|
|
76
|
+
return false;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
return false;
|
|
80
|
+
}
|
|
81
|
+
__name(isInvocationCancellation, "isInvocationCancellation");
|
|
46
82
|
function firstString(...values) {
|
|
47
83
|
for (const value of values) {
|
|
48
84
|
if (typeof value === "string") {
|
|
@@ -124,5 +160,7 @@ __name(formatError, "formatError");
|
|
|
124
160
|
// Annotate the CommonJS export names for ESM import in node:
|
|
125
161
|
0 && (module.exports = {
|
|
126
162
|
formatError,
|
|
127
|
-
getErrorMessage
|
|
163
|
+
getErrorMessage,
|
|
164
|
+
isInvocationCancellation,
|
|
165
|
+
toError
|
|
128
166
|
});
|
|
@@ -41,10 +41,7 @@ async function* runWithRouting(items, context, router, runFn) {
|
|
|
41
41
|
}
|
|
42
42
|
let selectedKey = initialKey;
|
|
43
43
|
import_logger.logger.debug(`Router selected initial key: ${selectedKey}`);
|
|
44
|
-
let selectedItem = items
|
|
45
|
-
if (!selectedItem) {
|
|
46
|
-
throw new Error(`Item not found for key: ${selectedKey}`);
|
|
47
|
-
}
|
|
44
|
+
let selectedItem = getSelectedItem(items, selectedKey);
|
|
48
45
|
const triedKeys = /* @__PURE__ */ new Set([selectedKey]);
|
|
49
46
|
while (true) {
|
|
50
47
|
let firstYielded = false;
|
|
@@ -74,10 +71,7 @@ async function* runWithRouting(items, context, router, runFn) {
|
|
|
74
71
|
throw error;
|
|
75
72
|
}
|
|
76
73
|
selectedKey = nextKey;
|
|
77
|
-
selectedItem = items
|
|
78
|
-
if (!selectedItem) {
|
|
79
|
-
throw new Error(`Item not found for key: ${selectedKey}`);
|
|
80
|
-
}
|
|
74
|
+
selectedItem = getSelectedItem(items, selectedKey);
|
|
81
75
|
triedKeys.add(selectedKey);
|
|
82
76
|
} else {
|
|
83
77
|
throw error;
|
|
@@ -86,8 +80,15 @@ async function* runWithRouting(items, context, router, runFn) {
|
|
|
86
80
|
}
|
|
87
81
|
}
|
|
88
82
|
__name(runWithRouting, "runWithRouting");
|
|
83
|
+
function getSelectedItem(items, key) {
|
|
84
|
+
if (!Object.hasOwn(items, key) || items[key] === void 0) {
|
|
85
|
+
throw new Error(`Item not found for key: ${key}`);
|
|
86
|
+
}
|
|
87
|
+
return items[key];
|
|
88
|
+
}
|
|
89
|
+
__name(getSelectedItem, "getSelectedItem");
|
|
89
90
|
function isAsyncGenerator(obj) {
|
|
90
|
-
return typeof obj === "object" && typeof obj[Symbol.asyncIterator] === "function";
|
|
91
|
+
return typeof obj === "object" && obj !== null && typeof obj[Symbol.asyncIterator] === "function";
|
|
91
92
|
}
|
|
92
93
|
__name(isAsyncGenerator, "isAsyncGenerator");
|
|
93
94
|
// Annotate the CommonJS export names for ESM import in node:
|
|
@@ -25,7 +25,7 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
25
25
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
26
26
|
var gemini_schema_util_exports = {};
|
|
27
27
|
__export(gemini_schema_util_exports, {
|
|
28
|
-
|
|
28
|
+
copySchemaConstraints: () => copySchemaConstraints,
|
|
29
29
|
openApiSchemaToGeminiSchema: () => openApiSchemaToGeminiSchema,
|
|
30
30
|
toGeminiSchema: () => toGeminiSchema
|
|
31
31
|
});
|
|
@@ -67,6 +67,66 @@ const getTypeFromArrayItem = /* @__PURE__ */ __name((mcpType) => {
|
|
|
67
67
|
}
|
|
68
68
|
return (_b = (_a = mcpType == null ? void 0 : mcpType.type) == null ? void 0 : _a.toLowerCase) == null ? void 0 : _b.call(_a);
|
|
69
69
|
}, "getTypeFromArrayItem");
|
|
70
|
+
const STRINGIFIED_CONSTRAINT_FIELDS = [
|
|
71
|
+
"maxItems",
|
|
72
|
+
"maxLength",
|
|
73
|
+
"maxProperties",
|
|
74
|
+
"minItems",
|
|
75
|
+
"minLength",
|
|
76
|
+
"minProperties"
|
|
77
|
+
];
|
|
78
|
+
const NUMERIC_CONSTRAINT_FIELDS = ["maximum", "minimum"];
|
|
79
|
+
const PATTERN_REDUNDANT_FORMATS = /* @__PURE__ */ new Set([
|
|
80
|
+
"email",
|
|
81
|
+
"uuid"
|
|
82
|
+
]);
|
|
83
|
+
const GEMINI_INTEGER_NUMBER_FORMATS = /* @__PURE__ */ new Set([
|
|
84
|
+
"int32",
|
|
85
|
+
"int64"
|
|
86
|
+
]);
|
|
87
|
+
const GEMINI_STRING_FORMATS = /* @__PURE__ */ new Set([
|
|
88
|
+
"date-time",
|
|
89
|
+
"enum"
|
|
90
|
+
]);
|
|
91
|
+
function keepsGeminiFormat(type, format) {
|
|
92
|
+
if (typeof type !== "string" || typeof format !== "string") {
|
|
93
|
+
return false;
|
|
94
|
+
}
|
|
95
|
+
if (type === "integer" || type === "number") {
|
|
96
|
+
return GEMINI_INTEGER_NUMBER_FORMATS.has(format);
|
|
97
|
+
}
|
|
98
|
+
if (type === "string") {
|
|
99
|
+
return GEMINI_STRING_FORMATS.has(format);
|
|
100
|
+
}
|
|
101
|
+
return false;
|
|
102
|
+
}
|
|
103
|
+
__name(keepsGeminiFormat, "keepsGeminiFormat");
|
|
104
|
+
function copySchemaConstraints(source, target) {
|
|
105
|
+
for (const field of STRINGIFIED_CONSTRAINT_FIELDS) {
|
|
106
|
+
const value = source[field];
|
|
107
|
+
if (typeof value === "number" || typeof value === "string") {
|
|
108
|
+
target[field] = String(value);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
for (const field of NUMERIC_CONSTRAINT_FIELDS) {
|
|
112
|
+
const value = source[field];
|
|
113
|
+
if (typeof value === "number") {
|
|
114
|
+
target[field] = value;
|
|
115
|
+
} else if (typeof value === "string" && value.trim() !== "" && !Number.isNaN(Number(value))) {
|
|
116
|
+
target[field] = Number(value);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
const pattern = source["pattern"];
|
|
120
|
+
const format = source["format"];
|
|
121
|
+
if (typeof pattern === "string") {
|
|
122
|
+
if (typeof format === "string" && PATTERN_REDUNDANT_FORMATS.has(format)) {
|
|
123
|
+
delete target["pattern"];
|
|
124
|
+
} else {
|
|
125
|
+
target["pattern"] = pattern;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
__name(copySchemaConstraints, "copySchemaConstraints");
|
|
70
130
|
function toGeminiSchema(mcpSchema) {
|
|
71
131
|
if (!mcpSchema) {
|
|
72
132
|
return void 0;
|
|
@@ -111,6 +171,7 @@ function toGeminiSchema(mcpSchema) {
|
|
|
111
171
|
mcp = { ...rest, anyOf: anyOfItems };
|
|
112
172
|
}
|
|
113
173
|
}
|
|
174
|
+
const declaredType = mcp.type;
|
|
114
175
|
if (!mcp.type) {
|
|
115
176
|
if (mcp.properties || mcp.$ref) {
|
|
116
177
|
mcp.type = "object";
|
|
@@ -147,6 +208,9 @@ function toGeminiSchema(mcpSchema) {
|
|
|
147
208
|
if (mcp.description) {
|
|
148
209
|
geminiSchema.description = mcp.description;
|
|
149
210
|
}
|
|
211
|
+
if (keepsGeminiFormat(declaredType, mcp.format)) {
|
|
212
|
+
geminiSchema.format = mcp.format;
|
|
213
|
+
}
|
|
150
214
|
if (mcp.enum) {
|
|
151
215
|
geminiSchema.enum = mcp.enum.filter((v) => v != null).map(String);
|
|
152
216
|
}
|
|
@@ -170,6 +234,10 @@ function toGeminiSchema(mcpSchema) {
|
|
|
170
234
|
geminiSchema.items = recursiveConvert(mcp.items);
|
|
171
235
|
}
|
|
172
236
|
}
|
|
237
|
+
copySchemaConstraints(
|
|
238
|
+
mcp,
|
|
239
|
+
geminiSchema
|
|
240
|
+
);
|
|
173
241
|
return geminiSchema;
|
|
174
242
|
}
|
|
175
243
|
__name(recursiveConvert, "recursiveConvert");
|
|
@@ -202,8 +270,7 @@ const GEMINI_SCHEMA_FIELDS = /* @__PURE__ */ new Set([
|
|
|
202
270
|
]);
|
|
203
271
|
const GEMINI_REJECTED_SCHEMA_FIELDS = /* @__PURE__ */ new Set([
|
|
204
272
|
"title",
|
|
205
|
-
"default"
|
|
206
|
-
"format"
|
|
273
|
+
"default"
|
|
207
274
|
]);
|
|
208
275
|
function toGeminiSchemaField(key) {
|
|
209
276
|
return (0, import_case_utils.toSnakeCaseName)(key).replace(
|
|
@@ -248,42 +315,88 @@ function convertSchemaField(field, value) {
|
|
|
248
315
|
if (field === "items" && isPlainObject(value)) {
|
|
249
316
|
return openApiSchemaToGeminiSchema(value);
|
|
250
317
|
}
|
|
251
|
-
if (field === "anyOf" && Array.isArray(value)) {
|
|
252
|
-
return value.map((item) => openApiSchemaToGeminiSchema(item));
|
|
253
|
-
}
|
|
254
318
|
return value;
|
|
255
319
|
}
|
|
256
320
|
__name(convertSchemaField, "convertSchemaField");
|
|
321
|
+
function isNullSchema(value) {
|
|
322
|
+
return isPlainObject(value) && value["type"] === "null";
|
|
323
|
+
}
|
|
324
|
+
__name(isNullSchema, "isNullSchema");
|
|
325
|
+
function takeUnionBranches(schema) {
|
|
326
|
+
let branches;
|
|
327
|
+
for (const [key, value] of Object.entries(schema)) {
|
|
328
|
+
const field = toGeminiSchemaField(key);
|
|
329
|
+
if (field !== "anyOf" && field !== "oneOf") {
|
|
330
|
+
continue;
|
|
331
|
+
}
|
|
332
|
+
delete schema[key];
|
|
333
|
+
if (Array.isArray(value)) {
|
|
334
|
+
branches = [...branches != null ? branches : [], ...value];
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
return branches;
|
|
338
|
+
}
|
|
339
|
+
__name(takeUnionBranches, "takeUnionBranches");
|
|
257
340
|
function openApiSchemaToGeminiSchema(openApiSchema) {
|
|
258
341
|
if (openApiSchema === void 0 || openApiSchema === null) {
|
|
259
342
|
return void 0;
|
|
260
343
|
}
|
|
261
344
|
if (!isPlainObject(openApiSchema)) {
|
|
262
|
-
throw new TypeError("
|
|
345
|
+
throw new TypeError("openApiSchema must be a plain object");
|
|
263
346
|
}
|
|
264
347
|
const source = { ...openApiSchema };
|
|
265
|
-
|
|
348
|
+
let unionNullable = false;
|
|
349
|
+
let anyOf;
|
|
350
|
+
const branches = takeUnionBranches(source);
|
|
351
|
+
if (branches) {
|
|
352
|
+
const nonNullBranches = branches.filter((branch) => !isNullSchema(branch));
|
|
353
|
+
unionNullable = nonNullBranches.length !== branches.length;
|
|
354
|
+
if (nonNullBranches.length === 1 && isPlainObject(nonNullBranches[0])) {
|
|
355
|
+
const merged = openApiSchemaToGeminiSchema({
|
|
356
|
+
...nonNullBranches[0],
|
|
357
|
+
...source
|
|
358
|
+
});
|
|
359
|
+
if (unionNullable) {
|
|
360
|
+
merged.nullable = true;
|
|
361
|
+
}
|
|
362
|
+
return merged;
|
|
363
|
+
} else if (nonNullBranches.length > 0) {
|
|
364
|
+
anyOf = nonNullBranches.map(
|
|
365
|
+
(branch) => openApiSchemaToGeminiSchema(branch)
|
|
366
|
+
);
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
const [schemaType, typeNullable] = normalizeJsonSchemaType(source["type"]);
|
|
266
370
|
source["type"] = schemaType;
|
|
267
|
-
if (
|
|
371
|
+
if (typeNullable || unionNullable) {
|
|
268
372
|
source["nullable"] = true;
|
|
269
373
|
}
|
|
270
|
-
if (!source["type"]) {
|
|
374
|
+
if (!source["type"] && !anyOf) {
|
|
271
375
|
source["type"] = "object";
|
|
272
376
|
}
|
|
273
377
|
const converted = {};
|
|
274
378
|
for (const [key, value] of Object.entries(source)) {
|
|
275
379
|
const field = toGeminiSchemaField(key);
|
|
276
|
-
if (!GEMINI_SCHEMA_FIELDS.has(field) || GEMINI_REJECTED_SCHEMA_FIELDS.has(field)) {
|
|
380
|
+
if (value === void 0 || !GEMINI_SCHEMA_FIELDS.has(field) || GEMINI_REJECTED_SCHEMA_FIELDS.has(field)) {
|
|
381
|
+
continue;
|
|
382
|
+
}
|
|
383
|
+
if (field === "format") {
|
|
384
|
+
if (keepsGeminiFormat(schemaType, value)) {
|
|
385
|
+
converted[field] = value;
|
|
386
|
+
}
|
|
277
387
|
continue;
|
|
278
388
|
}
|
|
279
389
|
converted[field] = convertSchemaField(field, value);
|
|
280
390
|
}
|
|
391
|
+
if (anyOf) {
|
|
392
|
+
converted["anyOf"] = anyOf;
|
|
393
|
+
}
|
|
281
394
|
return converted;
|
|
282
395
|
}
|
|
283
396
|
__name(openApiSchemaToGeminiSchema, "openApiSchemaToGeminiSchema");
|
|
284
397
|
// Annotate the CommonJS export names for ESM import in node:
|
|
285
398
|
0 && (module.exports = {
|
|
286
|
-
|
|
399
|
+
copySchemaConstraints,
|
|
287
400
|
openApiSchemaToGeminiSchema,
|
|
288
401
|
toGeminiSchema
|
|
289
402
|
});
|
|
@@ -0,0 +1,63 @@
|
|
|
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 id_provider_exports = {};
|
|
27
|
+
__export(id_provider_exports, {
|
|
28
|
+
newId: () => newId,
|
|
29
|
+
newIdOr: () => newIdOr,
|
|
30
|
+
resetIdProvider: () => resetIdProvider,
|
|
31
|
+
setIdProvider: () => setIdProvider
|
|
32
|
+
});
|
|
33
|
+
module.exports = __toCommonJS(id_provider_exports);
|
|
34
|
+
var import_env_aware_utils = require("./env_aware_utils.js");
|
|
35
|
+
/**
|
|
36
|
+
* @license
|
|
37
|
+
* Copyright 2026 Google LLC
|
|
38
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
39
|
+
*/
|
|
40
|
+
let idProvider;
|
|
41
|
+
function setIdProvider(provider) {
|
|
42
|
+
idProvider = provider;
|
|
43
|
+
}
|
|
44
|
+
__name(setIdProvider, "setIdProvider");
|
|
45
|
+
function resetIdProvider() {
|
|
46
|
+
idProvider = void 0;
|
|
47
|
+
}
|
|
48
|
+
__name(resetIdProvider, "resetIdProvider");
|
|
49
|
+
function newId() {
|
|
50
|
+
return newIdOr(import_env_aware_utils.randomUUID);
|
|
51
|
+
}
|
|
52
|
+
__name(newId, "newId");
|
|
53
|
+
function newIdOr(fallback) {
|
|
54
|
+
return idProvider ? idProvider() : fallback();
|
|
55
|
+
}
|
|
56
|
+
__name(newIdOr, "newIdOr");
|
|
57
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
58
|
+
0 && (module.exports = {
|
|
59
|
+
newId,
|
|
60
|
+
newIdOr,
|
|
61
|
+
resetIdProvider,
|
|
62
|
+
setIdProvider
|
|
63
|
+
});
|