@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
|
@@ -36,13 +36,18 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
36
36
|
var database_session_service_exports = {};
|
|
37
37
|
__export(database_session_service_exports, {
|
|
38
38
|
DatabaseSessionService: () => DatabaseSessionService,
|
|
39
|
-
|
|
39
|
+
StaleSessionError: () => import_stale_session_error2.StaleSessionError,
|
|
40
|
+
isDatabaseConnectionString: () => isDatabaseConnectionString,
|
|
41
|
+
isStaleSessionError: () => import_stale_session_error2.isStaleSessionError
|
|
40
42
|
});
|
|
41
43
|
module.exports = __toCommonJS(database_session_service_exports);
|
|
42
|
-
var
|
|
44
|
+
var import_id_provider = require("../utils/id_provider.js");
|
|
45
|
+
var import_logger = require("../utils/logger.js");
|
|
43
46
|
var import_base_session_service = require("./base_session_service.js");
|
|
44
47
|
var import_session = require("./session.js");
|
|
48
|
+
var import_stale_session_error = require("./stale_session_error.js");
|
|
45
49
|
var import_state = require("./state.js");
|
|
50
|
+
var import_stale_session_error2 = require("./stale_session_error.js");
|
|
46
51
|
/**
|
|
47
52
|
* @license
|
|
48
53
|
* Copyright 2026 Google LLC
|
|
@@ -79,6 +84,84 @@ async function importMikroOrm() {
|
|
|
79
84
|
} = operations);
|
|
80
85
|
}
|
|
81
86
|
__name(importMikroOrm, "importMikroOrm");
|
|
87
|
+
const STORAGE_UPDATE_MARKER_SYMBOL = /* @__PURE__ */ Symbol.for(
|
|
88
|
+
"google.adk.session.storageUpdateMarker"
|
|
89
|
+
);
|
|
90
|
+
function setStorageRevisionMarker(session, revision) {
|
|
91
|
+
Object.defineProperty(session, STORAGE_UPDATE_MARKER_SYMBOL, {
|
|
92
|
+
value: revision,
|
|
93
|
+
writable: true,
|
|
94
|
+
configurable: true,
|
|
95
|
+
enumerable: false
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
__name(setStorageRevisionMarker, "setStorageRevisionMarker");
|
|
99
|
+
function getStorageRevisionMarker(session) {
|
|
100
|
+
return session[STORAGE_UPDATE_MARKER_SYMBOL];
|
|
101
|
+
}
|
|
102
|
+
__name(getStorageRevisionMarker, "getStorageRevisionMarker");
|
|
103
|
+
const MAX_IN_QUERY_IDS = 500;
|
|
104
|
+
async function sessionMatchesStorageRevision(txEm, session, eventsComplete, totalEventCount) {
|
|
105
|
+
const sessionWhere = {
|
|
106
|
+
appName: session.appName,
|
|
107
|
+
userId: session.userId,
|
|
108
|
+
sessionId: session.id
|
|
109
|
+
};
|
|
110
|
+
const latestStorageEvent = await txEm.findOne(StorageEvent, sessionWhere, {
|
|
111
|
+
orderBy: { timestamp: "DESC", id: "DESC" }
|
|
112
|
+
});
|
|
113
|
+
if (session.events.length === 0) {
|
|
114
|
+
if (latestStorageEvent !== null) {
|
|
115
|
+
return false;
|
|
116
|
+
}
|
|
117
|
+
if (totalEventCount !== void 0 && totalEventCount !== 0) {
|
|
118
|
+
return false;
|
|
119
|
+
}
|
|
120
|
+
return true;
|
|
121
|
+
}
|
|
122
|
+
if ((latestStorageEvent == null ? void 0 : latestStorageEvent.id) !== session.events[session.events.length - 1].id) {
|
|
123
|
+
return false;
|
|
124
|
+
}
|
|
125
|
+
if (totalEventCount !== void 0) {
|
|
126
|
+
const totalStored = await txEm.count(StorageEvent, sessionWhere);
|
|
127
|
+
if (totalStored !== totalEventCount) {
|
|
128
|
+
return false;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
const knownIds = session.events.map((e) => e.id);
|
|
132
|
+
if (knownIds.length <= MAX_IN_QUERY_IDS) {
|
|
133
|
+
const unknownEventWhere = {
|
|
134
|
+
...sessionWhere,
|
|
135
|
+
id: { $nin: knownIds }
|
|
136
|
+
};
|
|
137
|
+
if (!eventsComplete) {
|
|
138
|
+
unknownEventWhere.timestamp = {
|
|
139
|
+
$gte: new Date(session.events[0].timestamp)
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
return await txEm.count(StorageEvent, unknownEventWhere) === 0;
|
|
143
|
+
}
|
|
144
|
+
const filter = { ...sessionWhere };
|
|
145
|
+
if (!eventsComplete) {
|
|
146
|
+
filter.timestamp = { $gte: new Date(session.events[0].timestamp) };
|
|
147
|
+
}
|
|
148
|
+
const storedEvents = await txEm.find(StorageEvent, filter, {
|
|
149
|
+
fields: ["id"]
|
|
150
|
+
});
|
|
151
|
+
const knownSet = new Set(knownIds);
|
|
152
|
+
for (const stored of storedEvents) {
|
|
153
|
+
if (!knownSet.has(stored.id)) {
|
|
154
|
+
return false;
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
return true;
|
|
158
|
+
}
|
|
159
|
+
__name(sessionMatchesStorageRevision, "sessionMatchesStorageRevision");
|
|
160
|
+
function formatDateTime(dateOrEpochMs) {
|
|
161
|
+
const date = typeof dateOrEpochMs === "number" ? new Date(dateOrEpochMs) : dateOrEpochMs;
|
|
162
|
+
return date.toISOString().replace("T", " ").replace("Z", "");
|
|
163
|
+
}
|
|
164
|
+
__name(formatDateTime, "formatDateTime");
|
|
82
165
|
function isDatabaseConnectionString(uri) {
|
|
83
166
|
if (!uri) {
|
|
84
167
|
return false;
|
|
@@ -87,16 +170,31 @@ function isDatabaseConnectionString(uri) {
|
|
|
87
170
|
}
|
|
88
171
|
__name(isDatabaseConnectionString, "isDatabaseConnectionString");
|
|
89
172
|
const _DatabaseSessionService = class _DatabaseSessionService extends import_base_session_service.BaseSessionService {
|
|
90
|
-
constructor(connectionStringOrOptions) {
|
|
173
|
+
constructor(connectionStringOrOptions, options) {
|
|
174
|
+
var _a;
|
|
91
175
|
super();
|
|
92
176
|
this.initialized = false;
|
|
93
177
|
if (typeof connectionStringOrOptions === "string") {
|
|
94
178
|
this.connectionString = connectionStringOrOptions;
|
|
179
|
+
if (options) {
|
|
180
|
+
const { staleSession, ...mikroOptions } = options;
|
|
181
|
+
this.options = mikroOptions;
|
|
182
|
+
this.staleSession = staleSession != null ? staleSession : "reject";
|
|
183
|
+
} else {
|
|
184
|
+
this.staleSession = "reject";
|
|
185
|
+
}
|
|
95
186
|
} else {
|
|
96
|
-
|
|
187
|
+
const { staleSession: firstStaleSession, ...firstMikroOptions } = connectionStringOrOptions;
|
|
188
|
+
const { staleSession: secondStaleSession, ...secondMikroOptions } = options != null ? options : {};
|
|
189
|
+
const mergedMikroOptions = {
|
|
190
|
+
...firstMikroOptions,
|
|
191
|
+
...secondMikroOptions
|
|
192
|
+
};
|
|
193
|
+
if (!mergedMikroOptions.driver) {
|
|
97
194
|
throw new Error("Driver is required when passing options object.");
|
|
98
195
|
}
|
|
99
|
-
this.options =
|
|
196
|
+
this.options = mergedMikroOptions;
|
|
197
|
+
this.staleSession = (_a = secondStaleSession != null ? secondStaleSession : firstStaleSession) != null ? _a : "reject";
|
|
100
198
|
}
|
|
101
199
|
}
|
|
102
200
|
async init() {
|
|
@@ -104,7 +202,11 @@ const _DatabaseSessionService = class _DatabaseSessionService extends import_bas
|
|
|
104
202
|
return;
|
|
105
203
|
}
|
|
106
204
|
await loadMikroOrm();
|
|
107
|
-
const options = this.connectionString ?
|
|
205
|
+
const options = this.connectionString ? {
|
|
206
|
+
...await getConnectionOptionsFromUri(this.connectionString),
|
|
207
|
+
...this.options,
|
|
208
|
+
entities: ENTITIES
|
|
209
|
+
} : { ...this.options, entities: ENTITIES };
|
|
108
210
|
this.options = options;
|
|
109
211
|
this.orm = await MikroORM.init(options);
|
|
110
212
|
await ensureDatabaseCreated(this.orm);
|
|
@@ -119,7 +221,7 @@ const _DatabaseSessionService = class _DatabaseSessionService extends import_bas
|
|
|
119
221
|
}) {
|
|
120
222
|
await this.init();
|
|
121
223
|
const em = this.orm.em.fork();
|
|
122
|
-
const id = sessionId || (0,
|
|
224
|
+
const id = sessionId || (0, import_id_provider.newId)();
|
|
123
225
|
const now = /* @__PURE__ */ new Date();
|
|
124
226
|
const existing = await em.findOne(StorageSession, {
|
|
125
227
|
id,
|
|
@@ -182,14 +284,22 @@ const _DatabaseSessionService = class _DatabaseSessionService extends import_bas
|
|
|
182
284
|
userStateModel.state,
|
|
183
285
|
sessionState
|
|
184
286
|
);
|
|
185
|
-
|
|
287
|
+
const session = (0, import_session.createSession)({
|
|
186
288
|
id,
|
|
187
289
|
appName,
|
|
188
290
|
userId,
|
|
189
291
|
state: mergedState,
|
|
190
292
|
events: [],
|
|
191
|
-
lastUpdateTime: storageSession.
|
|
293
|
+
lastUpdateTime: storageSession.updateTime.getTime()
|
|
294
|
+
});
|
|
295
|
+
setStorageRevisionMarker(session, {
|
|
296
|
+
marker: storageSession.updateTime.toISOString(),
|
|
297
|
+
recordedLastUpdateTime: session.lastUpdateTime,
|
|
298
|
+
unverifiedWrite: true,
|
|
299
|
+
eventsComplete: true,
|
|
300
|
+
totalEventCount: 0
|
|
192
301
|
});
|
|
302
|
+
return session;
|
|
193
303
|
}
|
|
194
304
|
async getSession({
|
|
195
305
|
appName,
|
|
@@ -230,7 +340,7 @@ const _DatabaseSessionService = class _DatabaseSessionService extends import_bas
|
|
|
230
340
|
(userStateModel == null ? void 0 : userStateModel.state) || {},
|
|
231
341
|
storageSession.state
|
|
232
342
|
);
|
|
233
|
-
|
|
343
|
+
const session = (0, import_session.createSession)({
|
|
234
344
|
id: sessionId,
|
|
235
345
|
appName,
|
|
236
346
|
userId,
|
|
@@ -238,6 +348,16 @@ const _DatabaseSessionService = class _DatabaseSessionService extends import_bas
|
|
|
238
348
|
events: storageEvents.map((se) => se.eventData),
|
|
239
349
|
lastUpdateTime: storageSession.updateTime.getTime()
|
|
240
350
|
});
|
|
351
|
+
const eventsComplete = (config == null ? void 0 : config.numRecentEvents) === void 0 && (config == null ? void 0 : config.afterTimestamp) === void 0;
|
|
352
|
+
const totalEventCount = eventsComplete ? session.events.length : await em.count(StorageEvent, { appName, userId, sessionId });
|
|
353
|
+
setStorageRevisionMarker(session, {
|
|
354
|
+
marker: storageSession.updateTime.toISOString(),
|
|
355
|
+
recordedLastUpdateTime: session.lastUpdateTime,
|
|
356
|
+
unverifiedWrite: false,
|
|
357
|
+
eventsComplete,
|
|
358
|
+
totalEventCount
|
|
359
|
+
});
|
|
360
|
+
return session;
|
|
241
361
|
}
|
|
242
362
|
async listSessions({
|
|
243
363
|
appName,
|
|
@@ -250,7 +370,7 @@ const _DatabaseSessionService = class _DatabaseSessionService extends import_bas
|
|
|
250
370
|
await this.init();
|
|
251
371
|
const em = this.orm.em.fork();
|
|
252
372
|
const where = { appName };
|
|
253
|
-
if (userId) {
|
|
373
|
+
if (userId !== void 0) {
|
|
254
374
|
where.userId = userId;
|
|
255
375
|
}
|
|
256
376
|
const orderBy = order === "asc" ? { updateTime: "ASC", id: "ASC" } : order === "desc" ? { updateTime: "DESC", id: "ASC" } : void 0;
|
|
@@ -299,7 +419,7 @@ const _DatabaseSessionService = class _DatabaseSessionService extends import_bas
|
|
|
299
419
|
const appStateModel = await em.findOne(StorageAppState, { appName });
|
|
300
420
|
const appState = (appStateModel == null ? void 0 : appStateModel.state) || {};
|
|
301
421
|
const userStateMap = {};
|
|
302
|
-
if (userId) {
|
|
422
|
+
if (userId !== void 0) {
|
|
303
423
|
const u = await em.findOne(StorageUserState, { appName, userId });
|
|
304
424
|
if (u) userStateMap[userId] = u.state;
|
|
305
425
|
} else {
|
|
@@ -311,7 +431,7 @@ const _DatabaseSessionService = class _DatabaseSessionService extends import_bas
|
|
|
311
431
|
const sessions = storageSessions.map((ss) => {
|
|
312
432
|
const uState = userStateMap[ss.userId] || {};
|
|
313
433
|
const merged = (0, import_base_session_service.mergeStates)(appState, uState, ss.state);
|
|
314
|
-
|
|
434
|
+
const session = (0, import_session.createSession)({
|
|
315
435
|
id: ss.id,
|
|
316
436
|
appName: ss.appName,
|
|
317
437
|
userId: ss.userId,
|
|
@@ -319,6 +439,13 @@ const _DatabaseSessionService = class _DatabaseSessionService extends import_bas
|
|
|
319
439
|
events: [],
|
|
320
440
|
lastUpdateTime: ss.updateTime.getTime()
|
|
321
441
|
});
|
|
442
|
+
setStorageRevisionMarker(session, {
|
|
443
|
+
marker: ss.updateTime.toISOString(),
|
|
444
|
+
recordedLastUpdateTime: session.lastUpdateTime,
|
|
445
|
+
unverifiedWrite: false,
|
|
446
|
+
eventsComplete: false
|
|
447
|
+
});
|
|
448
|
+
return session;
|
|
322
449
|
});
|
|
323
450
|
return { sessions, ...paginationMeta };
|
|
324
451
|
}
|
|
@@ -336,12 +463,15 @@ const _DatabaseSessionService = class _DatabaseSessionService extends import_bas
|
|
|
336
463
|
session,
|
|
337
464
|
event
|
|
338
465
|
}) {
|
|
466
|
+
var _a, _b;
|
|
339
467
|
await this.init();
|
|
340
468
|
const em = this.orm.em.fork();
|
|
341
469
|
if (event.partial) {
|
|
342
470
|
return event;
|
|
343
471
|
}
|
|
472
|
+
const stateDelta = (_b = (_a = event.actions) == null ? void 0 : _a.stateDelta) != null ? _b : {};
|
|
344
473
|
const trimmedEvent = (0, import_base_session_service.trimTempDeltaState)(event);
|
|
474
|
+
let sessionWasStale = false;
|
|
345
475
|
await em.transactional(async (txEm) => {
|
|
346
476
|
const storageSession = await txEm.findOne(
|
|
347
477
|
StorageSession,
|
|
@@ -355,6 +485,40 @@ const _DatabaseSessionService = class _DatabaseSessionService extends import_bas
|
|
|
355
485
|
if (!storageSession) {
|
|
356
486
|
throw new Error(`Session ${session.id} not found for appendEvent`);
|
|
357
487
|
}
|
|
488
|
+
const storageUpdateTime = storageSession.updateTime.getTime();
|
|
489
|
+
const storageUpdateMarker = storageSession.updateTime.toISOString();
|
|
490
|
+
const rev = getStorageRevisionMarker(session);
|
|
491
|
+
const callerMutatedLastUpdateTime = rev !== void 0 && rev.recordedLastUpdateTime !== session.lastUpdateTime;
|
|
492
|
+
let isStale = false;
|
|
493
|
+
if (rev !== void 0 && !callerMutatedLastUpdateTime) {
|
|
494
|
+
if (rev.marker === storageUpdateMarker) {
|
|
495
|
+
session.lastUpdateTime = storageUpdateTime;
|
|
496
|
+
} else if (rev.unverifiedWrite && storageUpdateTime % 1e3 === 0 && Math.abs(storageUpdateTime - rev.recordedLastUpdateTime) < 1e3 && await sessionMatchesStorageRevision(
|
|
497
|
+
txEm,
|
|
498
|
+
session,
|
|
499
|
+
rev.eventsComplete,
|
|
500
|
+
rev.totalEventCount
|
|
501
|
+
)) {
|
|
502
|
+
session.lastUpdateTime = storageUpdateTime;
|
|
503
|
+
} else {
|
|
504
|
+
isStale = true;
|
|
505
|
+
}
|
|
506
|
+
} else if (rev !== void 0) {
|
|
507
|
+
isStale = storageUpdateTime > session.lastUpdateTime;
|
|
508
|
+
} else if (storageUpdateTime > session.lastUpdateTime) {
|
|
509
|
+
if (await sessionMatchesStorageRevision(txEm, session, false)) {
|
|
510
|
+
session.lastUpdateTime = storageUpdateTime;
|
|
511
|
+
} else {
|
|
512
|
+
isStale = true;
|
|
513
|
+
}
|
|
514
|
+
}
|
|
515
|
+
if (isStale) {
|
|
516
|
+
if (this.staleSession === "reject") {
|
|
517
|
+
const message = storageUpdateTime > session.lastUpdateTime ? `The last_update_time provided in the session object ${formatDateTime(session.lastUpdateTime)} is earlier than the update_time in the storage_session ${formatDateTime(storageSession.updateTime)}. Please check if it is a stale session.` : `The session object with last_update_time ${formatDateTime(session.lastUpdateTime)} does not match the storage_session revision with update_time ${formatDateTime(storageSession.updateTime)}. Please check if it is a stale session.`;
|
|
518
|
+
throw new import_stale_session_error.StaleSessionError(message);
|
|
519
|
+
}
|
|
520
|
+
sessionWasStale = true;
|
|
521
|
+
}
|
|
358
522
|
let appStateModel = await txEm.findOne(StorageAppState, {
|
|
359
523
|
appName: session.appName
|
|
360
524
|
});
|
|
@@ -378,24 +542,6 @@ const _DatabaseSessionService = class _DatabaseSessionService extends import_bas
|
|
|
378
542
|
});
|
|
379
543
|
txEm.persist(userStateModel);
|
|
380
544
|
}
|
|
381
|
-
if (storageSession.updateTime.getTime() > session.lastUpdateTime) {
|
|
382
|
-
const events = await txEm.find(
|
|
383
|
-
StorageEvent,
|
|
384
|
-
{
|
|
385
|
-
appName: session.appName,
|
|
386
|
-
userId: session.userId,
|
|
387
|
-
sessionId: session.id
|
|
388
|
-
},
|
|
389
|
-
{ orderBy: { timestamp: "ASC" } }
|
|
390
|
-
);
|
|
391
|
-
const mergedState = (0, import_base_session_service.mergeStates)(
|
|
392
|
-
appStateModel.state,
|
|
393
|
-
userStateModel.state,
|
|
394
|
-
storageSession.state
|
|
395
|
-
);
|
|
396
|
-
session.state = mergedState;
|
|
397
|
-
session.events = events.map((e) => e.eventData);
|
|
398
|
-
}
|
|
399
545
|
if (event.actions && event.actions.stateDelta) {
|
|
400
546
|
const appDelta = {};
|
|
401
547
|
const userDelta = {};
|
|
@@ -448,15 +594,61 @@ const _DatabaseSessionService = class _DatabaseSessionService extends import_bas
|
|
|
448
594
|
userStateModel.state,
|
|
449
595
|
storageSession.state
|
|
450
596
|
);
|
|
451
|
-
session.state
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
597
|
+
for (const source of [session.state, stateDelta]) {
|
|
598
|
+
for (const [key, value] of Object.entries(source)) {
|
|
599
|
+
if (key.startsWith(import_state.State.TEMP_PREFIX)) {
|
|
600
|
+
newMergedState[key] = value;
|
|
601
|
+
}
|
|
602
|
+
}
|
|
457
603
|
}
|
|
604
|
+
session.state = newMergedState;
|
|
605
|
+
const isNewEvent = !existingStorageEvent;
|
|
606
|
+
(0, import_base_session_service.upsertSessionEvent)(session, event);
|
|
458
607
|
session.lastUpdateTime = storageSession.updateTime.getTime();
|
|
608
|
+
let nextTotalEventCount;
|
|
609
|
+
if (!callerMutatedLastUpdateTime && !isStale) {
|
|
610
|
+
if ((rev == null ? void 0 : rev.totalEventCount) !== void 0) {
|
|
611
|
+
nextTotalEventCount = rev.totalEventCount + (isNewEvent ? 1 : 0);
|
|
612
|
+
} else if ((rev == null ? void 0 : rev.eventsComplete) === true) {
|
|
613
|
+
nextTotalEventCount = session.events.length;
|
|
614
|
+
}
|
|
615
|
+
}
|
|
616
|
+
setStorageRevisionMarker(session, {
|
|
617
|
+
marker: storageSession.updateTime.toISOString(),
|
|
618
|
+
recordedLastUpdateTime: session.lastUpdateTime,
|
|
619
|
+
unverifiedWrite: true,
|
|
620
|
+
eventsComplete: !callerMutatedLastUpdateTime && (rev == null ? void 0 : rev.eventsComplete) === true && !isStale,
|
|
621
|
+
totalEventCount: nextTotalEventCount
|
|
622
|
+
});
|
|
459
623
|
});
|
|
624
|
+
if (sessionWasStale) {
|
|
625
|
+
try {
|
|
626
|
+
const storageEvents = await em.find(
|
|
627
|
+
StorageEvent,
|
|
628
|
+
{
|
|
629
|
+
appName: session.appName,
|
|
630
|
+
userId: session.userId,
|
|
631
|
+
sessionId: session.id
|
|
632
|
+
},
|
|
633
|
+
{ orderBy: { timestamp: "ASC" } }
|
|
634
|
+
);
|
|
635
|
+
session.events = storageEvents.map((se) => se.eventData);
|
|
636
|
+
(0, import_base_session_service.upsertSessionEvent)(session, event);
|
|
637
|
+
const lastRev = getStorageRevisionMarker(session);
|
|
638
|
+
if (lastRev) {
|
|
639
|
+
setStorageRevisionMarker(session, {
|
|
640
|
+
...lastRev,
|
|
641
|
+
eventsComplete: true,
|
|
642
|
+
totalEventCount: session.events.length
|
|
643
|
+
});
|
|
644
|
+
}
|
|
645
|
+
} catch (e) {
|
|
646
|
+
const message = e instanceof Error ? e.message : String(e);
|
|
647
|
+
import_logger.logger.warn(
|
|
648
|
+
`Failed to reload events for stale session ${session.id} after appendEvent; the event was persisted but session.events may be missing concurrent appends: ${message}`
|
|
649
|
+
);
|
|
650
|
+
}
|
|
651
|
+
}
|
|
460
652
|
return event;
|
|
461
653
|
}
|
|
462
654
|
};
|
|
@@ -465,5 +657,7 @@ let DatabaseSessionService = _DatabaseSessionService;
|
|
|
465
657
|
// Annotate the CommonJS export names for ESM import in node:
|
|
466
658
|
0 && (module.exports = {
|
|
467
659
|
DatabaseSessionService,
|
|
468
|
-
|
|
660
|
+
StaleSessionError,
|
|
661
|
+
isDatabaseConnectionString,
|
|
662
|
+
isStaleSessionError
|
|
469
663
|
});
|
|
@@ -312,8 +312,77 @@ async function getConnectionOptionsFromUri(uri) {
|
|
|
312
312
|
}
|
|
313
313
|
__name(getConnectionOptionsFromUri, "getConnectionOptionsFromUri");
|
|
314
314
|
async function ensureDatabaseCreated(orm) {
|
|
315
|
+
var _a;
|
|
315
316
|
await orm.schema.ensureDatabase();
|
|
316
|
-
|
|
317
|
+
const entityMetadata = [...orm.getMetadata().getAll().values()].filter(
|
|
318
|
+
(meta) => !meta.embeddable && !meta.virtual && !meta.view
|
|
319
|
+
);
|
|
320
|
+
if (entityMetadata.length === 0) {
|
|
321
|
+
return;
|
|
322
|
+
}
|
|
323
|
+
const platform = orm.driver.getPlatform();
|
|
324
|
+
const schemaHelper = platform.getSchemaHelper();
|
|
325
|
+
if (typeof (schemaHelper == null ? void 0 : schemaHelper.getAllTables) !== "function") {
|
|
326
|
+
await orm.schema.create();
|
|
327
|
+
return;
|
|
328
|
+
}
|
|
329
|
+
const connection = orm.driver.getConnection();
|
|
330
|
+
const defaultSchema = platform.getDefaultSchemaName();
|
|
331
|
+
const configSchema = orm.config.get("schema");
|
|
332
|
+
const dbName = orm.config.get("dbName");
|
|
333
|
+
const isCurrentSchema = /* @__PURE__ */ __name((schemaName) => !schemaName || schemaName === defaultSchema || defaultSchema === void 0 && schemaName === dbName, "isCurrentSchema");
|
|
334
|
+
const tableKey = /* @__PURE__ */ __name((tableName, schemaName) => {
|
|
335
|
+
const schemaPart = !schemaName || isCurrentSchema(schemaName) ? "" : schemaName;
|
|
336
|
+
return `${schemaPart}.${tableName}`.toLowerCase();
|
|
337
|
+
}, "tableKey");
|
|
338
|
+
const listedTables = await schemaHelper.getAllTables(connection);
|
|
339
|
+
const listedTableKeys = new Set(
|
|
340
|
+
listedTables.map((table) => tableKey(table.table_name, table.schema_name))
|
|
341
|
+
);
|
|
342
|
+
const seenTableKeys = /* @__PURE__ */ new Set();
|
|
343
|
+
const existingTableNames = [];
|
|
344
|
+
let missingCount = 0;
|
|
345
|
+
for (const meta of entityMetadata) {
|
|
346
|
+
const schemaName = (_a = meta.schema) != null ? _a : configSchema;
|
|
347
|
+
const key = tableKey(meta.tableName, schemaName);
|
|
348
|
+
if (seenTableKeys.has(key)) {
|
|
349
|
+
continue;
|
|
350
|
+
}
|
|
351
|
+
seenTableKeys.add(key);
|
|
352
|
+
let exists = listedTableKeys.has(key);
|
|
353
|
+
if (!exists && defaultSchema === void 0 && !isCurrentSchema(schemaName) && typeof schemaHelper.tableExists === "function") {
|
|
354
|
+
exists = await schemaHelper.tableExists(
|
|
355
|
+
connection,
|
|
356
|
+
meta.tableName,
|
|
357
|
+
schemaName
|
|
358
|
+
);
|
|
359
|
+
}
|
|
360
|
+
if (exists) {
|
|
361
|
+
existingTableNames.push(
|
|
362
|
+
schemaName && schemaName !== defaultSchema ? `${schemaName}.${meta.tableName}` : meta.tableName
|
|
363
|
+
);
|
|
364
|
+
} else {
|
|
365
|
+
missingCount++;
|
|
366
|
+
}
|
|
367
|
+
}
|
|
368
|
+
if (missingCount === 0) {
|
|
369
|
+
return;
|
|
370
|
+
}
|
|
371
|
+
if (existingTableNames.length === 0) {
|
|
372
|
+
await orm.schema.create();
|
|
373
|
+
return;
|
|
374
|
+
}
|
|
375
|
+
const schemaGenConfig = orm.config.get("schemaGenerator");
|
|
376
|
+
const previousSkipTables = schemaGenConfig.skipTables;
|
|
377
|
+
schemaGenConfig.skipTables = [
|
|
378
|
+
...previousSkipTables != null ? previousSkipTables : [],
|
|
379
|
+
...existingTableNames
|
|
380
|
+
];
|
|
381
|
+
try {
|
|
382
|
+
await orm.schema.create();
|
|
383
|
+
} finally {
|
|
384
|
+
schemaGenConfig.skipTables = previousSkipTables;
|
|
385
|
+
}
|
|
317
386
|
}
|
|
318
387
|
__name(ensureDatabaseCreated, "ensureDatabaseCreated");
|
|
319
388
|
async function validateDatabaseSchemaVersion(orm) {
|
|
@@ -98,6 +98,7 @@ const storageAppStateSchema = new import_core.EntitySchema({
|
|
|
98
98
|
state: { type: "json" },
|
|
99
99
|
updateTime: {
|
|
100
100
|
type: "datetime",
|
|
101
|
+
length: EVENT_TIMESTAMP_PRECISION,
|
|
101
102
|
fieldName: "update_time",
|
|
102
103
|
onCreate: /* @__PURE__ */ __name(() => /* @__PURE__ */ new Date(), "onCreate"),
|
|
103
104
|
onUpdate: /* @__PURE__ */ __name(() => /* @__PURE__ */ new Date(), "onUpdate")
|
|
@@ -121,6 +122,7 @@ const storageUserStateSchema = new import_core.EntitySchema({
|
|
|
121
122
|
state: { type: "json" },
|
|
122
123
|
updateTime: {
|
|
123
124
|
type: "datetime",
|
|
125
|
+
length: EVENT_TIMESTAMP_PRECISION,
|
|
124
126
|
fieldName: "update_time",
|
|
125
127
|
onCreate: /* @__PURE__ */ __name(() => /* @__PURE__ */ new Date(), "onCreate"),
|
|
126
128
|
onUpdate: /* @__PURE__ */ __name(() => /* @__PURE__ */ new Date(), "onUpdate")
|
|
@@ -146,11 +148,13 @@ const storageSessionSchema = new import_core.EntitySchema({
|
|
|
146
148
|
state: { type: "json" },
|
|
147
149
|
createTime: {
|
|
148
150
|
type: "datetime",
|
|
151
|
+
length: EVENT_TIMESTAMP_PRECISION,
|
|
149
152
|
fieldName: "create_time",
|
|
150
153
|
onCreate: /* @__PURE__ */ __name(() => /* @__PURE__ */ new Date(), "onCreate")
|
|
151
154
|
},
|
|
152
155
|
updateTime: {
|
|
153
156
|
type: "datetime",
|
|
157
|
+
length: EVENT_TIMESTAMP_PRECISION,
|
|
154
158
|
fieldName: "update_time",
|
|
155
159
|
onCreate: /* @__PURE__ */ __name(() => /* @__PURE__ */ new Date(), "onCreate")
|
|
156
160
|
}
|
|
@@ -30,7 +30,7 @@ __export(in_memory_session_service_exports, {
|
|
|
30
30
|
});
|
|
31
31
|
module.exports = __toCommonJS(in_memory_session_service_exports);
|
|
32
32
|
var import_lodash_es = require("lodash-es");
|
|
33
|
-
var
|
|
33
|
+
var import_id_provider = require("../utils/id_provider.js");
|
|
34
34
|
var import_logger = require("../utils/logger.js");
|
|
35
35
|
var import_base_session_service = require("./base_session_service.js");
|
|
36
36
|
var import_session = require("./session.js");
|
|
@@ -72,7 +72,7 @@ const _InMemorySessionService = class _InMemorySessionService extends import_bas
|
|
|
72
72
|
const session = (0, import_session.createSession)({
|
|
73
73
|
// Surrounding whitespace is dropped so that a later lookup by the bare
|
|
74
74
|
// id finds the session, and a blank id gets a generated one.
|
|
75
|
-
id: (sessionId == null ? void 0 : sessionId.trim()) || (0,
|
|
75
|
+
id: (sessionId == null ? void 0 : sessionId.trim()) || (0, import_id_provider.newId)(),
|
|
76
76
|
appName,
|
|
77
77
|
userId,
|
|
78
78
|
state: filteredState,
|
|
@@ -0,0 +1,59 @@
|
|
|
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 stale_session_error_exports = {};
|
|
27
|
+
__export(stale_session_error_exports, {
|
|
28
|
+
StaleSessionError: () => StaleSessionError,
|
|
29
|
+
isStaleSessionError: () => isStaleSessionError
|
|
30
|
+
});
|
|
31
|
+
module.exports = __toCommonJS(stale_session_error_exports);
|
|
32
|
+
/**
|
|
33
|
+
* @license
|
|
34
|
+
* Copyright 2026 Google LLC
|
|
35
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
36
|
+
*/
|
|
37
|
+
var _a, _b;
|
|
38
|
+
const STALE_SESSION_ERROR_SIGNATURE_SYMBOL = /* @__PURE__ */ Symbol.for(
|
|
39
|
+
"google.adk.staleSessionError"
|
|
40
|
+
);
|
|
41
|
+
const _StaleSessionError = class _StaleSessionError extends (_b = Error, _a = STALE_SESSION_ERROR_SIGNATURE_SYMBOL, _b) {
|
|
42
|
+
constructor(message) {
|
|
43
|
+
super(message);
|
|
44
|
+
this[_a] = true;
|
|
45
|
+
this.name = "StaleSessionError";
|
|
46
|
+
Object.setPrototypeOf(this, _StaleSessionError.prototype);
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
__name(_StaleSessionError, "StaleSessionError");
|
|
50
|
+
let StaleSessionError = _StaleSessionError;
|
|
51
|
+
function isStaleSessionError(obj) {
|
|
52
|
+
return typeof obj === "object" && obj !== null && (STALE_SESSION_ERROR_SIGNATURE_SYMBOL in obj || obj instanceof Error && obj.name === "StaleSessionError");
|
|
53
|
+
}
|
|
54
|
+
__name(isStaleSessionError, "isStaleSessionError");
|
|
55
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
56
|
+
0 && (module.exports = {
|
|
57
|
+
StaleSessionError,
|
|
58
|
+
isStaleSessionError
|
|
59
|
+
});
|
|
@@ -41,6 +41,7 @@ module.exports = __toCommonJS(vertex_ai_session_service_exports);
|
|
|
41
41
|
var import_vertexai = require("@google-cloud/vertexai");
|
|
42
42
|
var import_compacted_event = require("../events/compacted_event.js");
|
|
43
43
|
var import_experimental = require("../utils/experimental.js");
|
|
44
|
+
var import_error_utils = require("../utils/error_utils.js");
|
|
44
45
|
var import_logger = require("../utils/logger.js");
|
|
45
46
|
var import_vertex_ai_utils = require("../utils/vertex_ai_utils.js");
|
|
46
47
|
var import_partial_copy = require("../utils/partial_copy.js");
|
|
@@ -335,9 +336,16 @@ let VertexAiSessionService = class extends import_base_session_service.BaseSessi
|
|
|
335
336
|
if (!session) {
|
|
336
337
|
return;
|
|
337
338
|
}
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
339
|
+
try {
|
|
340
|
+
await this.sessions.delete({
|
|
341
|
+
name: `reasoningEngines/${reasoningEngineId}/sessions/${sessionId}`
|
|
342
|
+
});
|
|
343
|
+
} catch (error) {
|
|
344
|
+
import_logger.logger.error(
|
|
345
|
+
`Error deleting session ${sessionId}: ${(0, import_error_utils.formatError)(error)}`
|
|
346
|
+
);
|
|
347
|
+
throw error;
|
|
348
|
+
}
|
|
341
349
|
}
|
|
342
350
|
async appendEvent({
|
|
343
351
|
session,
|