@google/adk 2.3.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 +399 -0
- package/dist/cjs/agents/base_agent.js +127 -68
- package/dist/cjs/agents/functions.js +64 -59
- package/dist/cjs/agents/instructions.js +8 -6
- package/dist/cjs/agents/invocation_context.js +2 -2
- package/dist/cjs/agents/llm_agent.js +124 -101
- package/dist/cjs/agents/processors/basic_llm_request_processor.js +1 -1
- package/dist/cjs/agents/processors/code_execution_request_processor.js +8 -0
- package/dist/cjs/agents/processors/content_processor_utils.js +72 -17
- package/dist/cjs/agents/processors/content_request_processor.js +51 -2
- 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 +13 -3
- 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 +134 -15
- package/dist/cjs/cli/utils/path_validation.js +83 -0
- package/dist/cjs/code_executors/container_code_executor.js +171 -38
- package/dist/cjs/code_executors/unsafe_local_code_executor.js +6 -1
- package/dist/cjs/common.js +59 -32
- package/dist/cjs/context/compaction_utils.js +19 -0
- package/dist/cjs/errors/input_validation_error.js +3 -2
- package/dist/cjs/events/event.js +7 -3
- package/dist/cjs/features/feature_registry.js +5 -0
- package/dist/cjs/index.js +34 -12
- 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 +54 -40
- 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 +15 -12
- package/dist/cjs/sessions/database_session_service.js +232 -38
- 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/stale_session_error.js +59 -0
- package/dist/cjs/sessions/vertex_ai_session_service.js +11 -3
- package/dist/cjs/skills/loader.js +76 -41
- 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 -6
- package/dist/cjs/tools/agent_tool.js +9 -1
- package/dist/cjs/tools/apihub_tool/apihub_toolset.js +18 -23
- package/dist/cjs/tools/application_integration_tool/application_integration_toolset.js +109 -43
- package/dist/cjs/tools/application_integration_tool/clients/connections_client.js +222 -114
- package/dist/cjs/tools/application_integration_tool/clients/integration_client.js +34 -14
- package/dist/cjs/tools/application_integration_tool/integration_connector_tool.js +175 -0
- 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_tool.js +4 -1
- package/dist/cjs/tools/google_api_tool/google_api_toolset.js +174 -0
- package/dist/cjs/tools/google_api_tool/google_api_toolsets.js +124 -0
- package/dist/cjs/tools/google_api_tool/googleapi_to_openapi_converter.js +5 -3
- package/dist/cjs/tools/google_api_tool/index.js +20 -23
- package/dist/cjs/tools/load_artifacts_tool.js +27 -11
- package/dist/cjs/tools/load_memory_tool.js +14 -15
- 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 +19 -20
- package/dist/cjs/tools/openapi_tool/auth/auth_helpers.js +30 -29
- package/dist/cjs/tools/openapi_tool/auth/credential_exchangers/oauth2_exchanger.js +4 -4
- package/dist/cjs/tools/openapi_tool/openapi_spec_parser/openapi_spec_parser.js +20 -6
- package/dist/cjs/tools/openapi_tool/openapi_spec_parser/operation_parser.js +17 -6
- package/dist/cjs/tools/openapi_tool/openapi_toolset.js +7 -13
- package/dist/cjs/tools/openapi_tool/rest_api_tool.js +57 -10
- 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 +193 -0
- package/dist/cjs/tools/webmcp/webmcp_toolset.js +1 -14
- package/dist/cjs/utils/async_queue.js +37 -3
- package/dist/cjs/utils/client_labels.js +17 -2
- 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 +11 -10
- package/dist/cjs/utils/gemini_schema_util.js +145 -14
- package/dist/cjs/utils/id_provider.js +63 -0
- package/dist/cjs/utils/logger_node.js +4 -0
- package/dist/cjs/utils/model_name.js +15 -0
- package/dist/cjs/utils/output_schema_utils.js +5 -2
- package/dist/cjs/utils/simple_zod_to_json.js +13 -31
- package/dist/cjs/utils/ssrf_guard.js +46 -16
- package/dist/cjs/utils/task.js +1 -1
- 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 +382 -0
- package/dist/esm/agents/base_agent.js +127 -72
- package/dist/esm/agents/functions.js +69 -63
- package/dist/esm/agents/instructions.js +8 -6
- package/dist/esm/agents/invocation_context.js +2 -2
- package/dist/esm/agents/llm_agent.js +130 -106
- package/dist/esm/agents/processors/basic_llm_request_processor.js +1 -1
- package/dist/esm/agents/processors/code_execution_request_processor.js +8 -0
- package/dist/esm/agents/processors/content_processor_utils.js +72 -17
- package/dist/esm/agents/processors/content_request_processor.js +51 -2
- 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 +13 -3
- 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 +132 -13
- package/dist/esm/cli/utils/path_validation.js +45 -0
- package/dist/esm/code_executors/container_code_executor.js +171 -38
- package/dist/esm/code_executors/unsafe_local_code_executor.js +6 -1
- package/dist/esm/common.js +59 -19
- package/dist/esm/context/compaction_utils.js +19 -0
- package/dist/esm/errors/input_validation_error.js +3 -2
- package/dist/esm/events/event.js +7 -3
- package/dist/esm/features/feature_registry.js +5 -0
- package/dist/esm/index.js +36 -10
- 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 +54 -40
- 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 +13 -11
- package/dist/esm/sessions/database_session_service.js +231 -38
- 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/stale_session_error.js +31 -0
- package/dist/esm/sessions/vertex_ai_session_service.js +11 -3
- package/dist/esm/skills/loader.js +76 -41
- 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/apihub_tool/apihub_toolset.js +17 -22
- package/dist/esm/tools/application_integration_tool/application_integration_toolset.js +114 -44
- package/dist/esm/tools/application_integration_tool/clients/connections_client.js +226 -115
- package/dist/esm/tools/application_integration_tool/clients/integration_client.js +34 -14
- package/dist/esm/tools/application_integration_tool/integration_connector_tool.js +149 -0
- 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_tool.js +4 -1
- package/dist/esm/tools/google_api_tool/google_api_toolset.js +147 -0
- package/dist/esm/tools/google_api_tool/google_api_toolsets.js +94 -0
- package/dist/esm/tools/google_api_tool/googleapi_to_openapi_converter.js +5 -3
- package/dist/esm/tools/google_api_tool/index.js +18 -20
- package/dist/esm/tools/load_artifacts_tool.js +25 -10
- package/dist/esm/tools/load_memory_tool.js +14 -15
- 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 +19 -20
- package/dist/esm/tools/openapi_tool/auth/auth_helpers.js +27 -26
- package/dist/esm/tools/openapi_tool/auth/credential_exchangers/oauth2_exchanger.js +4 -4
- package/dist/esm/tools/openapi_tool/openapi_spec_parser/openapi_spec_parser.js +20 -6
- package/dist/esm/tools/openapi_tool/openapi_spec_parser/operation_parser.js +17 -6
- package/dist/esm/tools/openapi_tool/openapi_toolset.js +6 -12
- package/dist/esm/tools/openapi_tool/rest_api_tool.js +57 -10
- 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 +167 -0
- package/dist/esm/tools/webmcp/webmcp_toolset.js +1 -14
- package/dist/esm/utils/async_queue.js +37 -3
- package/dist/esm/utils/client_labels.js +17 -2
- 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 +11 -10
- package/dist/esm/utils/gemini_schema_util.js +144 -14
- package/dist/esm/utils/id_provider.js +33 -0
- package/dist/esm/utils/logger_node.js +4 -0
- package/dist/esm/utils/model_name.js +14 -0
- package/dist/esm/utils/output_schema_utils.js +5 -2
- package/dist/esm/utils/simple_zod_to_json.js +13 -31
- package/dist/esm/utils/ssrf_guard.js +55 -15
- package/dist/esm/utils/task.js +1 -1
- 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 +155 -0
- package/dist/types/agents/base_agent.d.ts +14 -0
- package/dist/types/agents/llm_agent.d.ts +5 -1
- package/dist/types/agents/processors/content_processor_utils.d.ts +12 -10
- package/dist/types/agents/processors/nl_planning_processor.d.ts +2 -1
- 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 +20 -3
- package/dist/types/cli/utils/path_validation.d.ts +30 -0
- package/dist/types/code_executors/container_code_executor.d.ts +62 -9
- package/dist/types/common.d.ts +21 -18
- package/dist/types/context/compaction_utils.d.ts +13 -1
- package/dist/types/errors/input_validation_error.d.ts +2 -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 +11 -6
- package/dist/types/plugins/base_plugin.d.ts +50 -31
- 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 +5 -2
- package/dist/types/sessions/database_session_service.d.ts +17 -1
- package/dist/types/sessions/db/operations.d.ts +2 -1
- package/dist/types/sessions/db/schema.d.ts +5 -3
- package/dist/types/sessions/stale_session_error.d.ts +21 -0
- package/dist/types/skills/loader.d.ts +3 -2
- 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/apihub_tool/apihub_toolset.d.ts +14 -21
- package/dist/types/tools/application_integration_tool/application_integration_toolset.d.ts +32 -9
- package/dist/types/tools/application_integration_tool/clients/connections_client.d.ts +35 -12
- package/dist/types/tools/application_integration_tool/clients/integration_client.d.ts +3 -3
- package/dist/types/tools/application_integration_tool/integration_connector_tool.d.ts +70 -0
- package/dist/types/tools/base_toolset.d.ts +7 -6
- 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_tool.d.ts +10 -3
- package/dist/types/tools/google_api_tool/google_api_toolset.d.ts +57 -0
- package/dist/types/tools/google_api_tool/google_api_toolsets.d.ts +48 -0
- package/dist/types/tools/google_api_tool/googleapi_to_openapi_converter.d.ts +5 -4
- package/dist/types/tools/google_api_tool/index.d.ts +4 -5
- package/dist/types/tools/load_artifacts_tool.d.ts +18 -1
- package/dist/types/tools/load_memory_tool.d.ts +32 -4
- 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/openapi_spec_parser.d.ts +12 -0
- package/dist/types/tools/openapi_tool/openapi_spec_parser/operation_parser.d.ts +15 -3
- package/dist/types/tools/openapi_tool/openapi_toolset.d.ts +5 -0
- package/dist/types/tools/openapi_tool/rest_api_tool.d.ts +10 -0
- package/dist/types/tools/toolbox_toolset.d.ts +154 -0
- package/dist/types/utils/async_queue.d.ts +14 -0
- package/dist/types/utils/client_labels.d.ts +2 -1
- 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 +29 -0
- package/dist/types/utils/id_provider.d.ts +43 -0
- package/dist/types/utils/model_name.d.ts +8 -0
- package/dist/types/utils/output_schema_utils.d.ts +3 -2
- package/dist/types/utils/simple_zod_to_json.d.ts +1 -2
- 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 +94 -88
- package/dist/web/index_web.js.map +4 -4
- package/package.json +43 -38
- package/dist/cjs/agents/remote_agent.js +0 -187
- package/dist/cjs/telemetry/google_cloud.js +0 -116
- package/dist/cjs/telemetry/tracing.js +0 -350
- package/dist/cjs/tools/crewai_tool.js +0 -132
- package/dist/cjs/tools/google_api_tool/google_api_tool_set.js +0 -226
- package/dist/cjs/tools/google_api_tool/google_api_tool_sets.js +0 -58
- package/dist/cjs/tools/langchain_tool.js +0 -172
- package/dist/cjs/tools/toolbox_tool.js +0 -108
- package/dist/esm/agents/remote_agent.js +0 -164
- package/dist/esm/telemetry/google_cloud.js +0 -99
- package/dist/esm/telemetry/setup.js +0 -89
- package/dist/esm/telemetry/tracing.js +0 -315
- package/dist/esm/tools/crewai_tool.js +0 -107
- package/dist/esm/tools/google_api_tool/google_api_tool_set.js +0 -188
- package/dist/esm/tools/google_api_tool/google_api_tool_sets.js +0 -24
- package/dist/esm/tools/langchain_tool.js +0 -148
- package/dist/esm/tools/toolbox_tool.js +0 -80
- package/dist/types/agents/remote_agent.d.ts +0 -68
- package/dist/types/telemetry/google_cloud.d.ts +0 -9
- package/dist/types/telemetry/tracing.d.ts +0 -129
- package/dist/types/tools/crewai_tool.d.ts +0 -85
- package/dist/types/tools/google_api_tool/google_api_tool_set.d.ts +0 -78
- package/dist/types/tools/google_api_tool/google_api_tool_sets.d.ts +0 -33
- package/dist/types/tools/langchain_tool.d.ts +0 -103
- package/dist/types/tools/toolbox_tool.d.ts +0 -73
|
@@ -0,0 +1,84 @@
|
|
|
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 cleanup_exports = {};
|
|
27
|
+
__export(cleanup_exports, {
|
|
28
|
+
RUNNER_CLEANUP_TIMEOUT_MS: () => RUNNER_CLEANUP_TIMEOUT_MS,
|
|
29
|
+
closeRunners: () => closeRunners
|
|
30
|
+
});
|
|
31
|
+
module.exports = __toCommonJS(cleanup_exports);
|
|
32
|
+
var import_error_utils = require("../../utils/error_utils.js");
|
|
33
|
+
var import_logger = require("../../utils/logger.js");
|
|
34
|
+
/**
|
|
35
|
+
* @license
|
|
36
|
+
* Copyright 2026 Google LLC
|
|
37
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
38
|
+
*/
|
|
39
|
+
const RUNNER_CLEANUP_TIMEOUT_MS = 3e4;
|
|
40
|
+
const RUNNER_CLEANUP_TIMEOUT_SYMBOL = /* @__PURE__ */ Symbol(
|
|
41
|
+
"google.adk.cli.runnerCleanupTimeout"
|
|
42
|
+
);
|
|
43
|
+
async function closeRunners(runners) {
|
|
44
|
+
if (runners.length === 0) {
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
let pendingCount = runners.length;
|
|
48
|
+
const tasks = runners.map(async (runner) => {
|
|
49
|
+
try {
|
|
50
|
+
await runner.close();
|
|
51
|
+
} catch (e) {
|
|
52
|
+
import_logger.logger.error(
|
|
53
|
+
`Error closing runner ${runner.appName}: ${(0, import_error_utils.getErrorMessage)(e)}`
|
|
54
|
+
);
|
|
55
|
+
} finally {
|
|
56
|
+
pendingCount -= 1;
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
let timeoutId;
|
|
60
|
+
try {
|
|
61
|
+
const result = await Promise.race([
|
|
62
|
+
Promise.allSettled(tasks).then(() => void 0),
|
|
63
|
+
new Promise((resolve) => {
|
|
64
|
+
timeoutId = setTimeout(
|
|
65
|
+
() => resolve(RUNNER_CLEANUP_TIMEOUT_SYMBOL),
|
|
66
|
+
RUNNER_CLEANUP_TIMEOUT_MS
|
|
67
|
+
);
|
|
68
|
+
})
|
|
69
|
+
]);
|
|
70
|
+
if (result === RUNNER_CLEANUP_TIMEOUT_SYMBOL && pendingCount > 0) {
|
|
71
|
+
import_logger.logger.warn(`${pendingCount} runner close tasks didn't complete in time`);
|
|
72
|
+
}
|
|
73
|
+
} finally {
|
|
74
|
+
if (timeoutId !== void 0) {
|
|
75
|
+
clearTimeout(timeoutId);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
__name(closeRunners, "closeRunners");
|
|
80
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
81
|
+
0 && (module.exports = {
|
|
82
|
+
RUNNER_CLEANUP_TIMEOUT_MS,
|
|
83
|
+
closeRunners
|
|
84
|
+
});
|
|
@@ -41,7 +41,9 @@ __export(envs_exports, {
|
|
|
41
41
|
module.exports = __toCommonJS(envs_exports);
|
|
42
42
|
var fs = __toESM(require("node:fs"), 1);
|
|
43
43
|
var path = __toESM(require("node:path"), 1);
|
|
44
|
+
var import_input_validation_error = require("../../errors/input_validation_error.js");
|
|
44
45
|
var import_logger = require("../../utils/logger.js");
|
|
46
|
+
var import_path_validation = require("./path_validation.js");
|
|
45
47
|
/**
|
|
46
48
|
* @license
|
|
47
49
|
* Copyright 2026 Google LLC
|
|
@@ -92,8 +94,37 @@ function parseAndLoadDotenv(content) {
|
|
|
92
94
|
}
|
|
93
95
|
}
|
|
94
96
|
__name(parseAndLoadDotenv, "parseAndLoadDotenv");
|
|
95
|
-
function loadDotenvForAgent(agentName, agentParentFolder
|
|
96
|
-
|
|
97
|
+
function loadDotenvForAgent(agentName, agentParentFolder, filename = ".env") {
|
|
98
|
+
(0, import_path_validation.validatePathSegment)(filename, "filename");
|
|
99
|
+
if (typeof agentName !== "string" || !agentName) {
|
|
100
|
+
throw new import_input_validation_error.InputValidationError("agentName must not be empty.");
|
|
101
|
+
}
|
|
102
|
+
if (agentName.includes("\0")) {
|
|
103
|
+
throw new import_input_validation_error.InputValidationError("agentName must not contain null bytes.");
|
|
104
|
+
}
|
|
105
|
+
let startingFolder;
|
|
106
|
+
if (agentParentFolder !== void 0) {
|
|
107
|
+
if (typeof agentParentFolder !== "string" || !agentParentFolder || agentParentFolder.includes("\0")) {
|
|
108
|
+
throw new import_input_validation_error.InputValidationError(
|
|
109
|
+
"agentParentFolder must be a valid non-empty path."
|
|
110
|
+
);
|
|
111
|
+
}
|
|
112
|
+
(0, import_path_validation.validatePathSegment)(agentName, "agentName");
|
|
113
|
+
const baseDir = path.resolve(agentParentFolder);
|
|
114
|
+
startingFolder = path.resolve(baseDir, agentName);
|
|
115
|
+
if (!(0, import_path_validation.isStrictlyInside)(baseDir, startingFolder)) {
|
|
116
|
+
throw new import_input_validation_error.InputValidationError(
|
|
117
|
+
`agentName '${agentName}' resolves outside agentParentFolder.`
|
|
118
|
+
);
|
|
119
|
+
}
|
|
120
|
+
} else {
|
|
121
|
+
if (agentName === "." || agentName.split(/[\\/]+/).includes("..")) {
|
|
122
|
+
throw new import_input_validation_error.InputValidationError(
|
|
123
|
+
`agentName '${agentName}' must not contain traversal segments.`
|
|
124
|
+
);
|
|
125
|
+
}
|
|
126
|
+
startingFolder = path.resolve(".", agentName);
|
|
127
|
+
}
|
|
97
128
|
if (fs.existsSync(startingFolder) && fs.statSync(startingFolder).isFile()) {
|
|
98
129
|
startingFolder = path.dirname(startingFolder);
|
|
99
130
|
}
|
|
@@ -26,6 +26,7 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
26
26
|
var evals_exports = {};
|
|
27
27
|
__export(evals_exports, {
|
|
28
28
|
convertSessionToEvalFormat: () => convertSessionToEvalFormat,
|
|
29
|
+
convertSessionToEvalInvocations: () => convertSessionToEvalInvocations,
|
|
29
30
|
createEmptyState: () => createEmptyState
|
|
30
31
|
});
|
|
31
32
|
module.exports = __toCommonJS(evals_exports);
|
|
@@ -36,20 +37,22 @@ var import_llm_agent = require("../../agents/llm_agent.js");
|
|
|
36
37
|
* SPDX-License-Identifier: Apache-2.0
|
|
37
38
|
*/
|
|
38
39
|
function convertSessionToEvalFormat(session) {
|
|
39
|
-
var _a, _b, _c;
|
|
40
|
+
var _a, _b, _c, _d;
|
|
40
41
|
const events = session && session.events ? session.events : [];
|
|
41
42
|
const evalCases = [];
|
|
42
43
|
let i = 0;
|
|
43
44
|
while (i < events.length) {
|
|
44
45
|
const event = events[i];
|
|
45
46
|
if (event.author === "user") {
|
|
47
|
+
if (!event.content || !event.content.parts || event.content.parts.length === 0) {
|
|
48
|
+
i += 1;
|
|
49
|
+
continue;
|
|
50
|
+
}
|
|
46
51
|
let userQuery = "";
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
break;
|
|
52
|
-
}
|
|
52
|
+
for (const part of event.content.parts) {
|
|
53
|
+
if (part.text) {
|
|
54
|
+
userQuery = part.text;
|
|
55
|
+
break;
|
|
53
56
|
}
|
|
54
57
|
}
|
|
55
58
|
const expectedToolUse = [];
|
|
@@ -63,6 +66,7 @@ function convertSessionToEvalFormat(session) {
|
|
|
63
66
|
}
|
|
64
67
|
if (subsequentEvent.content && subsequentEvent.content.parts) {
|
|
65
68
|
let hasToolAction = false;
|
|
69
|
+
const textParts = [];
|
|
66
70
|
for (const part of subsequentEvent.content.parts) {
|
|
67
71
|
if (part.functionCall) {
|
|
68
72
|
expectedToolUse.push({
|
|
@@ -72,13 +76,20 @@ function convertSessionToEvalFormat(session) {
|
|
|
72
76
|
hasToolAction = true;
|
|
73
77
|
} else if (part.functionResponse) {
|
|
74
78
|
hasToolAction = true;
|
|
79
|
+
} else if (part.text) {
|
|
80
|
+
textParts.push(part);
|
|
75
81
|
}
|
|
76
82
|
}
|
|
77
|
-
if (!hasToolAction) {
|
|
83
|
+
if (!hasToolAction && textParts.length > 0) {
|
|
78
84
|
expectedIntermediateAgentResponses.push([
|
|
79
85
|
(_c = subsequentEvent.author) != null ? _c : "",
|
|
80
86
|
subsequentEvent.content.parts
|
|
81
87
|
]);
|
|
88
|
+
} else if (hasToolAction && textParts.length > 0) {
|
|
89
|
+
expectedIntermediateAgentResponses.push([
|
|
90
|
+
(_d = subsequentEvent.author) != null ? _d : "",
|
|
91
|
+
textParts
|
|
92
|
+
]);
|
|
82
93
|
}
|
|
83
94
|
}
|
|
84
95
|
j += 1;
|
|
@@ -107,6 +118,61 @@ function convertSessionToEvalFormat(session) {
|
|
|
107
118
|
return evalCases;
|
|
108
119
|
}
|
|
109
120
|
__name(convertSessionToEvalFormat, "convertSessionToEvalFormat");
|
|
121
|
+
function convertSessionToEvalInvocations(session) {
|
|
122
|
+
const invocations = [];
|
|
123
|
+
const events = session && session.events ? session.events : [];
|
|
124
|
+
for (let i = 0; i < events.length; i++) {
|
|
125
|
+
const event = events[i];
|
|
126
|
+
if (event.author !== "user") {
|
|
127
|
+
continue;
|
|
128
|
+
}
|
|
129
|
+
if (!event.content || !event.content.parts || event.content.parts.length === 0) {
|
|
130
|
+
continue;
|
|
131
|
+
}
|
|
132
|
+
const userContent = event.content;
|
|
133
|
+
const invocationId = event.invocationId || void 0;
|
|
134
|
+
const creationTimestamp = event.timestamp !== void 0 ? event.timestamp / 1e3 : void 0;
|
|
135
|
+
const toolUses = [];
|
|
136
|
+
const intermediateResponses = [];
|
|
137
|
+
for (let j = i + 1; j < events.length; j++) {
|
|
138
|
+
const subsequentEvent = events[j];
|
|
139
|
+
const eventAuthor = subsequentEvent.author || "agent";
|
|
140
|
+
if (eventAuthor === "user") {
|
|
141
|
+
break;
|
|
142
|
+
}
|
|
143
|
+
if (!subsequentEvent.content || !subsequentEvent.content.parts || subsequentEvent.content.parts.length === 0) {
|
|
144
|
+
continue;
|
|
145
|
+
}
|
|
146
|
+
const intermediateResponseParts = [];
|
|
147
|
+
for (const subsequentPart of subsequentEvent.content.parts) {
|
|
148
|
+
if (subsequentPart.functionCall) {
|
|
149
|
+
toolUses.push(subsequentPart.functionCall);
|
|
150
|
+
} else if (subsequentPart.text) {
|
|
151
|
+
intermediateResponseParts.push(subsequentPart);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
if (intermediateResponseParts.length > 0) {
|
|
155
|
+
intermediateResponses.push([eventAuthor, intermediateResponseParts]);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
const finalResponse = intermediateResponses.length > 0 ? {
|
|
159
|
+
parts: intermediateResponses[intermediateResponses.length - 1][1],
|
|
160
|
+
role: "model"
|
|
161
|
+
} : void 0;
|
|
162
|
+
invocations.push({
|
|
163
|
+
...invocationId !== void 0 ? { invocationId } : {},
|
|
164
|
+
userContent,
|
|
165
|
+
...finalResponse !== void 0 ? { finalResponse } : {},
|
|
166
|
+
intermediateData: {
|
|
167
|
+
toolUses,
|
|
168
|
+
intermediateResponses: intermediateResponses.length > 0 ? intermediateResponses.slice(0, -1) : []
|
|
169
|
+
},
|
|
170
|
+
...creationTimestamp !== void 0 ? { creationTimestamp } : {}
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
return invocations;
|
|
174
|
+
}
|
|
175
|
+
__name(convertSessionToEvalInvocations, "convertSessionToEvalInvocations");
|
|
110
176
|
function populateEmptyState(agent, allState) {
|
|
111
177
|
for (const subAgent of agent.subAgents) {
|
|
112
178
|
populateEmptyState(subAgent, allState);
|
|
@@ -133,5 +199,6 @@ __name(createEmptyState, "createEmptyState");
|
|
|
133
199
|
// Annotate the CommonJS export names for ESM import in node:
|
|
134
200
|
0 && (module.exports = {
|
|
135
201
|
convertSessionToEvalFormat,
|
|
202
|
+
convertSessionToEvalInvocations,
|
|
136
203
|
createEmptyState
|
|
137
204
|
});
|
|
@@ -36,8 +36,8 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
36
36
|
var logs_exports = {};
|
|
37
37
|
__export(logs_exports, {
|
|
38
38
|
LOGGING_FORMAT: () => LOGGING_FORMAT,
|
|
39
|
-
|
|
40
|
-
|
|
39
|
+
logToTmpFolder: () => logToTmpFolder,
|
|
40
|
+
setupAdkLogger: () => setupAdkLogger
|
|
41
41
|
});
|
|
42
42
|
module.exports = __toCommonJS(logs_exports);
|
|
43
43
|
var fs = __toESM(require("node:fs"), 1);
|
|
@@ -51,6 +51,7 @@ var import_logger = require("../../utils/logger.js");
|
|
|
51
51
|
* SPDX-License-Identifier: Apache-2.0
|
|
52
52
|
*/
|
|
53
53
|
const LOGGING_FORMAT = "%(asctime)s - %(levelname)s - %(filename)s:%(lineno)d - %(message)s";
|
|
54
|
+
const MAX_LOG_FILE_SUFFIX = 1e3;
|
|
54
55
|
const LOG_LEVEL_NAMES = {
|
|
55
56
|
[import_logger.LogLevel.DEBUG]: "DEBUG",
|
|
56
57
|
[import_logger.LogLevel.INFO]: "INFO",
|
|
@@ -62,6 +63,109 @@ function formatDateTimestamp(date) {
|
|
|
62
63
|
return `${date.getFullYear()}${pad(date.getMonth() + 1)}${pad(date.getDate())}_${pad(date.getHours())}${pad(date.getMinutes())}${pad(date.getSeconds())}`;
|
|
63
64
|
}
|
|
64
65
|
__name(formatDateTimestamp, "formatDateTimestamp");
|
|
66
|
+
function hasErrorCode(e, code) {
|
|
67
|
+
return typeof e === "object" && e !== null && "code" in e && e.code === code;
|
|
68
|
+
}
|
|
69
|
+
__name(hasErrorCode, "hasErrorCode");
|
|
70
|
+
let activeLogFile;
|
|
71
|
+
let exitListenerRegistered = false;
|
|
72
|
+
function closeActiveLogFile() {
|
|
73
|
+
if (!activeLogFile) {
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
const { fd } = activeLogFile;
|
|
77
|
+
activeLogFile = void 0;
|
|
78
|
+
try {
|
|
79
|
+
fs.closeSync(fd);
|
|
80
|
+
} catch {
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
__name(closeActiveLogFile, "closeActiveLogFile");
|
|
84
|
+
function getUid() {
|
|
85
|
+
return typeof process.getuid === "function" ? process.getuid() : void 0;
|
|
86
|
+
}
|
|
87
|
+
__name(getUid, "getUid");
|
|
88
|
+
function isSymlinkOrNonDirectory(dir) {
|
|
89
|
+
try {
|
|
90
|
+
const stat = fs.lstatSync(dir);
|
|
91
|
+
return stat.isSymbolicLink() || !stat.isDirectory();
|
|
92
|
+
} catch {
|
|
93
|
+
return false;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
__name(isSymlinkOrNonDirectory, "isSymlinkOrNonDirectory");
|
|
97
|
+
function preparePrivateDirectory(dir) {
|
|
98
|
+
try {
|
|
99
|
+
fs.mkdirSync(dir, { recursive: true, mode: 448 });
|
|
100
|
+
} catch (e) {
|
|
101
|
+
if (!isSymlinkOrNonDirectory(dir)) {
|
|
102
|
+
throw e;
|
|
103
|
+
}
|
|
104
|
+
return false;
|
|
105
|
+
}
|
|
106
|
+
const stat = fs.lstatSync(dir);
|
|
107
|
+
if (stat.isSymbolicLink() || !stat.isDirectory()) {
|
|
108
|
+
return false;
|
|
109
|
+
}
|
|
110
|
+
const uid = getUid();
|
|
111
|
+
if (uid === void 0) {
|
|
112
|
+
return true;
|
|
113
|
+
}
|
|
114
|
+
if (stat.uid !== uid) {
|
|
115
|
+
return false;
|
|
116
|
+
}
|
|
117
|
+
fs.chmodSync(dir, 448);
|
|
118
|
+
if ((fs.lstatSync(dir).mode & 63) !== 0) {
|
|
119
|
+
throw new Error(
|
|
120
|
+
`Log directory ${dir} is accessible by other users after chmod 0o700.`
|
|
121
|
+
);
|
|
122
|
+
}
|
|
123
|
+
return true;
|
|
124
|
+
}
|
|
125
|
+
__name(preparePrivateDirectory, "preparePrivateDirectory");
|
|
126
|
+
function resolveLogDir(subFolder) {
|
|
127
|
+
const logDir = path.join(os.tmpdir(), subFolder);
|
|
128
|
+
if (preparePrivateDirectory(logDir)) {
|
|
129
|
+
return logDir;
|
|
130
|
+
}
|
|
131
|
+
const uid = getUid();
|
|
132
|
+
if (uid === void 0) {
|
|
133
|
+
throw new Error(`Log directory ${logDir} is not a directory.`);
|
|
134
|
+
}
|
|
135
|
+
const userLogDir = path.join(os.tmpdir(), `${subFolder}_${uid}`);
|
|
136
|
+
if (preparePrivateDirectory(userLogDir)) {
|
|
137
|
+
return userLogDir;
|
|
138
|
+
}
|
|
139
|
+
throw new Error(
|
|
140
|
+
`Log directories ${logDir} and ${userLogDir} are not directories owned by the current user.`
|
|
141
|
+
);
|
|
142
|
+
}
|
|
143
|
+
__name(resolveLogDir, "resolveLogDir");
|
|
144
|
+
function createExclusiveLogFile({
|
|
145
|
+
logDir,
|
|
146
|
+
logFilePrefix,
|
|
147
|
+
logFileTimestamp
|
|
148
|
+
}) {
|
|
149
|
+
for (let counter = 0; counter <= MAX_LOG_FILE_SUFFIX; counter++) {
|
|
150
|
+
const suffix = counter === 0 ? "" : `_${counter}`;
|
|
151
|
+
const candidate = path.join(
|
|
152
|
+
logDir,
|
|
153
|
+
`${logFilePrefix}.${logFileTimestamp}${suffix}.log`
|
|
154
|
+
);
|
|
155
|
+
try {
|
|
156
|
+
const fd = fs.openSync(candidate, "ax", 384);
|
|
157
|
+
return { logFilepath: candidate, fd };
|
|
158
|
+
} catch (e) {
|
|
159
|
+
if (!hasErrorCode(e, "EEXIST")) {
|
|
160
|
+
throw e;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
throw new Error(
|
|
165
|
+
`Failed to create a unique log file in ${logDir} for ${logFilePrefix}.${logFileTimestamp}`
|
|
166
|
+
);
|
|
167
|
+
}
|
|
168
|
+
__name(createExclusiveLogFile, "createExclusiveLogFile");
|
|
65
169
|
function formatLogLine(level, messages) {
|
|
66
170
|
var _a;
|
|
67
171
|
const iso = (/* @__PURE__ */ new Date()).toISOString();
|
|
@@ -99,7 +203,8 @@ function createWriterLogger(initialLevel, writeLine) {
|
|
|
99
203
|
};
|
|
100
204
|
}
|
|
101
205
|
__name(createWriterLogger, "createWriterLogger");
|
|
102
|
-
function
|
|
206
|
+
function setupAdkLogger(level = import_logger.LogLevel.INFO) {
|
|
207
|
+
closeActiveLogFile();
|
|
103
208
|
(0, import_logger.setLogLevel)(level);
|
|
104
209
|
(0, import_logger.setLogger)(
|
|
105
210
|
createWriterLogger(level, (line) => {
|
|
@@ -108,23 +213,35 @@ function logToStderr(level = import_logger.LogLevel.INFO) {
|
|
|
108
213
|
})
|
|
109
214
|
);
|
|
110
215
|
}
|
|
111
|
-
__name(
|
|
216
|
+
__name(setupAdkLogger, "setupAdkLogger");
|
|
112
217
|
function logToTmpFolder(options = {}) {
|
|
218
|
+
var _a;
|
|
113
219
|
const {
|
|
114
220
|
level = import_logger.LogLevel.INFO,
|
|
115
221
|
subFolder = "agents_log",
|
|
116
|
-
logFilePrefix = "agent"
|
|
117
|
-
logFileTimestamp = formatDateTimestamp(/* @__PURE__ */ new Date())
|
|
222
|
+
logFilePrefix = "agent"
|
|
118
223
|
} = options;
|
|
119
|
-
const
|
|
120
|
-
|
|
121
|
-
const
|
|
122
|
-
|
|
123
|
-
|
|
224
|
+
const logFileTimestamp = (_a = options.logFileTimestamp) != null ? _a : `${formatDateTimestamp(/* @__PURE__ */ new Date())}_${process.pid}`;
|
|
225
|
+
const logDir = resolveLogDir(subFolder);
|
|
226
|
+
const logFile = createExclusiveLogFile({
|
|
227
|
+
logDir,
|
|
228
|
+
logFilePrefix,
|
|
229
|
+
logFileTimestamp
|
|
230
|
+
});
|
|
231
|
+
const { logFilepath } = logFile;
|
|
232
|
+
closeActiveLogFile();
|
|
233
|
+
activeLogFile = logFile;
|
|
234
|
+
if (!exitListenerRegistered) {
|
|
235
|
+
process.on("exit", closeActiveLogFile);
|
|
236
|
+
exitListenerRegistered = true;
|
|
237
|
+
}
|
|
124
238
|
(0, import_logger.setLogLevel)(level);
|
|
125
239
|
const fileLogger = createWriterLogger(level, (line) => {
|
|
126
|
-
|
|
127
|
-
|
|
240
|
+
if (activeLogFile !== logFile) {
|
|
241
|
+
return;
|
|
242
|
+
}
|
|
243
|
+
fs.writeSync(logFile.fd, `${line}
|
|
244
|
+
`, null, "utf-8");
|
|
128
245
|
});
|
|
129
246
|
(0, import_logger.setLogger)(fileLogger);
|
|
130
247
|
const latestLogLink = path.join(logDir, `${logFilePrefix}.latest.log`);
|
|
@@ -139,12 +256,14 @@ function logToTmpFolder(options = {}) {
|
|
|
139
256
|
fileLogger.warn(`Failed to create symlink to latest log: ${String(e)}`);
|
|
140
257
|
}
|
|
141
258
|
fileLogger.info(`Log setup complete: ${logFilepath}`);
|
|
259
|
+
process.stderr.write(`Log setup complete: ${logFilepath}
|
|
260
|
+
`);
|
|
142
261
|
return logFilepath;
|
|
143
262
|
}
|
|
144
263
|
__name(logToTmpFolder, "logToTmpFolder");
|
|
145
264
|
// Annotate the CommonJS export names for ESM import in node:
|
|
146
265
|
0 && (module.exports = {
|
|
147
266
|
LOGGING_FORMAT,
|
|
148
|
-
|
|
149
|
-
|
|
267
|
+
logToTmpFolder,
|
|
268
|
+
setupAdkLogger
|
|
150
269
|
});
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2026 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
"use strict";
|
|
8
|
+
var __create = Object.create;
|
|
9
|
+
var __defProp = Object.defineProperty;
|
|
10
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
11
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
12
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
13
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
14
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
15
|
+
var __export = (target, all) => {
|
|
16
|
+
for (var name in all)
|
|
17
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
18
|
+
};
|
|
19
|
+
var __copyProps = (to, from, except, desc) => {
|
|
20
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
21
|
+
for (let key of __getOwnPropNames(from))
|
|
22
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
23
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
24
|
+
}
|
|
25
|
+
return to;
|
|
26
|
+
};
|
|
27
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
28
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
29
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
30
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
31
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
32
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
33
|
+
mod
|
|
34
|
+
));
|
|
35
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
36
|
+
var path_validation_exports = {};
|
|
37
|
+
__export(path_validation_exports, {
|
|
38
|
+
isStrictlyInside: () => isStrictlyInside,
|
|
39
|
+
validatePathSegment: () => validatePathSegment
|
|
40
|
+
});
|
|
41
|
+
module.exports = __toCommonJS(path_validation_exports);
|
|
42
|
+
var path = __toESM(require("node:path"), 1);
|
|
43
|
+
var import_input_validation_error = require("../../errors/input_validation_error.js");
|
|
44
|
+
/**
|
|
45
|
+
* @license
|
|
46
|
+
* Copyright 2026 Google LLC
|
|
47
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
48
|
+
*/
|
|
49
|
+
const WINDOWS_DRIVE_RE = /^[A-Za-z]:/;
|
|
50
|
+
function validatePathSegment(value, fieldName) {
|
|
51
|
+
if (typeof value !== "string" || !value) {
|
|
52
|
+
throw new import_input_validation_error.InputValidationError(`${fieldName} must not be empty.`);
|
|
53
|
+
}
|
|
54
|
+
if (value.includes("\0")) {
|
|
55
|
+
throw new import_input_validation_error.InputValidationError(`${fieldName} must not contain null bytes.`);
|
|
56
|
+
}
|
|
57
|
+
if (value.includes("/") || value.includes("\\")) {
|
|
58
|
+
throw new import_input_validation_error.InputValidationError(
|
|
59
|
+
`${fieldName} '${value}' must not contain path separators.`
|
|
60
|
+
);
|
|
61
|
+
}
|
|
62
|
+
if (WINDOWS_DRIVE_RE.test(value)) {
|
|
63
|
+
throw new import_input_validation_error.InputValidationError(
|
|
64
|
+
`${fieldName} '${value}' must not be drive-qualified.`
|
|
65
|
+
);
|
|
66
|
+
}
|
|
67
|
+
if (value === "." || value === "..") {
|
|
68
|
+
throw new import_input_validation_error.InputValidationError(
|
|
69
|
+
`${fieldName} '${value}' must not contain traversal segments.`
|
|
70
|
+
);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
__name(validatePathSegment, "validatePathSegment");
|
|
74
|
+
function isStrictlyInside(baseDir, target) {
|
|
75
|
+
const rel = path.relative(baseDir, target);
|
|
76
|
+
return rel !== "" && rel !== ".." && !rel.startsWith(`..${path.sep}`) && !path.isAbsolute(rel);
|
|
77
|
+
}
|
|
78
|
+
__name(isStrictlyInside, "isStrictlyInside");
|
|
79
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
80
|
+
0 && (module.exports = {
|
|
81
|
+
isStrictlyInside,
|
|
82
|
+
validatePathSegment
|
|
83
|
+
});
|