@google/adk 2.2.1 → 2.4.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 +4 -1
- package/dist/cjs/a2a/agent_card.js +102 -26
- package/dist/cjs/a2a/agent_to_a2a.js +1 -1
- package/dist/cjs/agents/agent_engine_client.js +172 -0
- package/dist/cjs/agents/base_agent.js +20 -4
- package/dist/cjs/agents/functions.js +227 -25
- package/dist/cjs/agents/instructions.js +6 -2
- package/dist/cjs/agents/invocation_context.js +26 -4
- package/dist/cjs/agents/langgraph_agent.js +152 -0
- package/dist/cjs/agents/llm_agent.js +194 -107
- package/dist/cjs/agents/processors/basic_llm_request_processor.js +1 -1
- package/dist/cjs/agents/processors/code_execution_request_processor.js +18 -6
- package/dist/cjs/agents/processors/content_processor_utils.js +38 -10
- package/dist/cjs/agents/processors/content_request_processor.js +34 -2
- package/dist/cjs/agents/processors/instructions_llm_request_processor.js +1 -1
- package/dist/cjs/agents/processors/nl_planning_processor.js +12 -3
- package/dist/cjs/artifacts/in_memory_artifact_service.js +14 -0
- package/dist/cjs/auth/auth_handler.js +37 -5
- package/dist/cjs/auth/auth_schemes.js +9 -0
- package/dist/cjs/cli/cli_eval.js +532 -0
- package/dist/cjs/cli/utils/envs.js +116 -0
- package/dist/cjs/cli/utils/evals.js +137 -0
- package/dist/cjs/cli/utils/logs.js +150 -0
- package/dist/cjs/code_executors/agent_engine_sandbox_code_executor.js +7 -2
- package/dist/cjs/code_executors/code_execution_utils.js +48 -16
- package/dist/cjs/code_executors/code_executor_context.js +6 -2
- package/dist/cjs/code_executors/container_code_executor.js +27 -16
- package/dist/cjs/code_executors/unsafe_local_code_executor.js +6 -1
- package/dist/cjs/common.js +61 -0
- package/dist/cjs/context/summarizers/llm_summarizer.js +12 -10
- package/dist/cjs/context/token_based_context_compactor.js +2 -1
- package/dist/cjs/errors/input_validation_error.js +3 -2
- package/dist/cjs/events/event.js +4 -2
- package/dist/cjs/examples/example_util.js +23 -2
- package/dist/cjs/flows/llm_flows/audio_transcriber.js +170 -0
- package/dist/cjs/index.js +104 -1
- package/dist/cjs/integrations/agent_registry/helpers.js +1 -1
- package/dist/cjs/models/gemini_llm_connection.js +16 -8
- package/dist/cjs/models/google_llm.js +13 -16
- package/dist/cjs/models/llm_response.js +9 -1
- package/dist/cjs/models/registry.js +1 -1
- package/dist/cjs/models/routed_llm.js +9 -8
- package/dist/cjs/planners/plan_re_act_planner.js +1 -1
- package/dist/cjs/plugins/base_plugin.js +13 -23
- package/dist/cjs/runner/in_memory_runner.js +6 -11
- package/dist/cjs/runner/runner.js +105 -33
- package/dist/cjs/sessions/base_session_service.js +14 -8
- package/dist/cjs/sessions/database_session_service.js +50 -28
- package/dist/cjs/sessions/db/operations.js +1 -1
- package/dist/cjs/sessions/in_memory_session_service.js +3 -1
- package/dist/cjs/sessions/stale_session_error.js +59 -0
- package/dist/cjs/sessions/state.js +8 -4
- package/dist/cjs/sessions/vertex_ai_session_service.js +34 -15
- package/dist/cjs/skills/loader.js +52 -18
- package/dist/cjs/telemetry/setup.js +0 -1
- package/dist/cjs/telemetry/tracing.js +147 -73
- package/dist/cjs/tools/agent_tool.js +44 -0
- package/dist/cjs/tools/apihub_tool/apihub_toolset.js +137 -0
- package/dist/cjs/tools/apihub_tool/clients/apihub_client.js +272 -0
- package/dist/cjs/tools/apihub_tool/clients/secret_client.js +148 -0
- package/dist/cjs/tools/apihub_tool/clients/service_account.js +48 -0
- package/dist/cjs/tools/application_integration_tool/application_integration_toolset.js +263 -0
- package/dist/cjs/tools/application_integration_tool/clients/cloud_request.js +133 -0
- package/dist/cjs/tools/application_integration_tool/clients/connections_client.js +671 -0
- package/dist/cjs/tools/application_integration_tool/clients/integration_client.js +223 -0
- package/dist/cjs/tools/application_integration_tool/integration_connector_tool.js +184 -0
- package/dist/cjs/tools/example_tool.js +10 -0
- package/dist/cjs/tools/function_tool.js +319 -0
- package/dist/cjs/tools/google_api_tool/google_api_tool.js +100 -0
- package/dist/cjs/tools/google_api_tool/google_api_toolset.js +173 -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 +440 -0
- package/dist/cjs/tools/google_api_tool/index.js +61 -0
- package/dist/cjs/tools/load_artifacts_tool.js +12 -6
- package/dist/cjs/tools/load_memory_tool.js +12 -10
- package/dist/cjs/tools/mcp/index.js +12 -0
- package/dist/cjs/tools/mcp/mcp_session_manager.js +25 -0
- package/dist/cjs/tools/mcp/mcp_toolset.js +1 -14
- package/dist/cjs/tools/openapi_tool/auth/auth_helpers.js +1 -2
- package/dist/cjs/tools/openapi_tool/auth/credential_exchangers/auto_auth_credential_exchanger.js +46 -2
- package/dist/cjs/tools/openapi_tool/auth/credential_exchangers/oauth2_exchanger.js +4 -3
- package/dist/cjs/tools/openapi_tool/auth/credential_exchangers/service_account_exchanger.js +94 -10
- 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_spec_parser/tool_auth_handler.js +14 -2
- package/dist/cjs/tools/openapi_tool/openapi_toolset.js +7 -13
- package/dist/cjs/tools/openapi_tool/rest_api_tool.js +17 -1
- package/dist/cjs/tools/retrieval/base_retrieval_tool.js +18 -3
- package/dist/cjs/tools/toolbox_toolset.js +174 -0
- package/dist/cjs/tools/webmcp/webmcp_toolset.js +1 -14
- package/dist/cjs/utils/client_labels.js +19 -2
- package/dist/cjs/utils/env_aware_utils.js +6 -8
- package/dist/cjs/utils/error_utils.js +11 -11
- package/dist/cjs/utils/failover_utils.js +1 -1
- package/dist/cjs/utils/file_extension_utils.js +11 -0
- package/dist/cjs/utils/file_utils.js +2 -24
- package/dist/cjs/utils/gemini_schema_util.js +28 -7
- package/dist/cjs/utils/json_utils.js +49 -0
- package/dist/cjs/utils/live_connection_utils.js +4 -5
- package/dist/cjs/utils/logger_node.js +11 -1
- package/dist/cjs/utils/object_notation_utils.js +6 -3
- package/dist/cjs/utils/output_schema_utils.js +5 -2
- package/dist/cjs/utils/streaming_utils.js +12 -12
- package/dist/cjs/utils/task.js +1 -1
- package/dist/cjs/version.js +1 -1
- package/dist/esm/a2a/a2a_remote_agent.js +4 -1
- package/dist/esm/a2a/agent_card.js +103 -27
- package/dist/esm/a2a/agent_to_a2a.js +5 -2
- package/dist/esm/agents/agent_engine_client.js +144 -0
- package/dist/esm/agents/base_agent.js +20 -4
- package/dist/esm/agents/functions.js +226 -25
- package/dist/esm/agents/instructions.js +6 -2
- package/dist/esm/agents/invocation_context.js +24 -4
- package/dist/esm/agents/langgraph_agent.js +123 -0
- package/dist/esm/agents/llm_agent.js +204 -110
- package/dist/esm/agents/processors/basic_llm_request_processor.js +1 -1
- package/dist/esm/agents/processors/code_execution_request_processor.js +21 -8
- package/dist/esm/agents/processors/content_processor_utils.js +38 -10
- package/dist/esm/agents/processors/content_request_processor.js +34 -2
- package/dist/esm/agents/processors/instructions_llm_request_processor.js +1 -1
- package/dist/esm/agents/processors/nl_planning_processor.js +12 -3
- package/dist/esm/artifacts/in_memory_artifact_service.js +14 -0
- package/dist/esm/auth/auth_handler.js +37 -5
- package/dist/esm/auth/auth_schemes.js +8 -0
- package/dist/esm/cli/cli_eval.js +510 -0
- package/dist/esm/cli/utils/envs.js +78 -0
- package/dist/esm/cli/utils/evals.js +109 -0
- package/dist/esm/cli/utils/logs.js +111 -0
- package/dist/esm/code_executors/agent_engine_sandbox_code_executor.js +7 -2
- package/dist/esm/code_executors/code_execution_utils.js +46 -16
- package/dist/esm/code_executors/code_executor_context.js +5 -2
- package/dist/esm/code_executors/container_code_executor.js +27 -16
- package/dist/esm/code_executors/unsafe_local_code_executor.js +6 -1
- package/dist/esm/common.js +65 -4
- package/dist/esm/context/summarizers/llm_summarizer.js +12 -10
- package/dist/esm/context/token_based_context_compactor.js +2 -1
- package/dist/esm/errors/input_validation_error.js +3 -2
- package/dist/esm/events/event.js +4 -2
- package/dist/esm/examples/example_util.js +21 -1
- package/dist/esm/flows/llm_flows/audio_transcriber.js +142 -0
- package/dist/esm/index.js +114 -2
- package/dist/esm/integrations/agent_registry/helpers.js +1 -1
- package/dist/esm/models/gemini_llm_connection.js +16 -8
- package/dist/esm/models/google_llm.js +14 -17
- package/dist/esm/models/llm_response.js +9 -1
- package/dist/esm/models/registry.js +1 -1
- package/dist/esm/models/routed_llm.js +9 -8
- package/dist/esm/planners/plan_re_act_planner.js +1 -1
- package/dist/esm/plugins/base_plugin.js +13 -23
- package/dist/esm/runner/in_memory_runner.js +6 -11
- package/dist/esm/runner/runner.js +105 -33
- package/dist/esm/sessions/base_session_service.js +12 -7
- package/dist/esm/sessions/database_session_service.js +49 -28
- package/dist/esm/sessions/db/operations.js +1 -1
- package/dist/esm/sessions/in_memory_session_service.js +3 -1
- package/dist/esm/sessions/stale_session_error.js +31 -0
- package/dist/esm/sessions/state.js +8 -4
- package/dist/esm/sessions/vertex_ai_session_service.js +34 -15
- package/dist/esm/skills/loader.js +51 -17
- package/dist/esm/telemetry/setup.js +1 -2
- package/dist/esm/telemetry/tracing.js +151 -74
- package/dist/esm/tools/agent_tool.js +44 -0
- package/dist/esm/tools/apihub_tool/apihub_toolset.js +101 -0
- package/dist/esm/tools/apihub_tool/clients/apihub_client.js +244 -0
- package/dist/esm/tools/apihub_tool/clients/secret_client.js +132 -0
- package/dist/esm/tools/apihub_tool/clients/service_account.js +21 -0
- package/dist/esm/tools/application_integration_tool/application_integration_toolset.js +245 -0
- package/dist/esm/tools/application_integration_tool/clients/cloud_request.js +103 -0
- package/dist/esm/tools/application_integration_tool/clients/connections_client.js +629 -0
- package/dist/esm/tools/application_integration_tool/clients/integration_client.js +219 -0
- package/dist/esm/tools/application_integration_tool/integration_connector_tool.js +158 -0
- package/dist/esm/tools/example_tool.js +13 -1
- package/dist/esm/tools/function_tool.js +316 -0
- package/dist/esm/tools/google_api_tool/google_api_tool.js +73 -0
- package/dist/esm/tools/google_api_tool/google_api_toolset.js +146 -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 +393 -0
- package/dist/esm/tools/google_api_tool/index.js +31 -0
- package/dist/esm/tools/load_artifacts_tool.js +10 -5
- package/dist/esm/tools/load_memory_tool.js +12 -10
- package/dist/esm/tools/mcp/index.js +6 -0
- package/dist/esm/tools/mcp/mcp_session_manager.js +25 -0
- package/dist/esm/tools/mcp/mcp_toolset.js +1 -14
- package/dist/esm/tools/openapi_tool/auth/auth_helpers.js +1 -2
- package/dist/esm/tools/openapi_tool/auth/credential_exchangers/auto_auth_credential_exchanger.js +50 -3
- package/dist/esm/tools/openapi_tool/auth/credential_exchangers/oauth2_exchanger.js +4 -3
- package/dist/esm/tools/openapi_tool/auth/credential_exchangers/service_account_exchanger.js +94 -10
- 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_spec_parser/tool_auth_handler.js +15 -2
- package/dist/esm/tools/openapi_tool/openapi_toolset.js +6 -12
- package/dist/esm/tools/openapi_tool/rest_api_tool.js +17 -1
- package/dist/esm/tools/retrieval/base_retrieval_tool.js +16 -2
- package/dist/esm/tools/toolbox_toolset.js +148 -0
- package/dist/esm/tools/webmcp/webmcp_toolset.js +1 -14
- package/dist/esm/utils/client_labels.js +19 -2
- package/dist/esm/utils/env_aware_utils.js +6 -8
- package/dist/esm/utils/error_utils.js +9 -10
- package/dist/esm/utils/failover_utils.js +1 -1
- package/dist/esm/utils/file_extension_utils.js +11 -0
- package/dist/esm/utils/file_utils.js +2 -23
- package/dist/esm/utils/gemini_schema_util.js +27 -7
- package/dist/esm/utils/json_utils.js +21 -0
- package/dist/esm/utils/live_connection_utils.js +4 -5
- package/dist/esm/utils/logger_node.js +11 -1
- package/dist/esm/utils/object_notation_utils.js +4 -2
- package/dist/esm/utils/output_schema_utils.js +5 -2
- package/dist/esm/utils/streaming_utils.js +11 -11
- package/dist/esm/utils/task.js +1 -1
- package/dist/esm/version.js +1 -1
- package/dist/types/a2a/a2a_remote_agent.d.ts +9 -0
- package/dist/types/a2a/agent_card.d.ts +44 -1
- package/dist/types/a2a/agent_to_a2a.d.ts +9 -0
- package/dist/types/a2a/index.d.ts +1 -0
- package/dist/types/agents/agent_engine_client.d.ts +37 -0
- package/dist/types/agents/base_agent.d.ts +12 -0
- package/dist/types/agents/functions.d.ts +33 -1
- package/dist/types/agents/invocation_context.d.ts +20 -1
- package/dist/types/agents/langgraph_agent.d.ts +153 -0
- package/dist/types/agents/llm_agent.d.ts +5 -1
- package/dist/types/agents/processors/content_processor_utils.d.ts +4 -2
- package/dist/types/agents/processors/nl_planning_processor.d.ts +2 -1
- package/dist/types/auth/auth_handler.d.ts +28 -1
- package/dist/types/auth/auth_schemes.d.ts +13 -0
- package/dist/types/cli/cli_eval.d.ts +173 -0
- package/dist/types/cli/utils/envs.d.ts +23 -0
- package/dist/types/cli/utils/evals.d.ts +47 -0
- package/dist/types/cli/utils/logs.d.ts +38 -0
- package/dist/types/code_executors/code_execution_utils.d.ts +39 -0
- package/dist/types/code_executors/code_executor_context.d.ts +1 -0
- package/dist/types/code_executors/container_code_executor.d.ts +17 -5
- package/dist/types/common.d.ts +24 -5
- package/dist/types/errors/input_validation_error.d.ts +2 -1
- package/dist/types/events/event.d.ts +4 -0
- package/dist/types/examples/example_util.d.ts +17 -0
- package/dist/types/flows/llm_flows/audio_transcriber.d.ts +85 -0
- package/dist/types/index.d.ts +19 -2
- package/dist/types/models/gemini_llm_connection.d.ts +6 -7
- package/dist/types/models/routed_llm.d.ts +1 -1
- package/dist/types/plugins/base_plugin.d.ts +0 -10
- package/dist/types/runner/in_memory_runner.d.ts +2 -1
- package/dist/types/runner/runner.d.ts +34 -0
- package/dist/types/sessions/base_session_service.d.ts +5 -0
- package/dist/types/sessions/database_session_service.d.ts +17 -1
- package/dist/types/sessions/stale_session_error.d.ts +21 -0
- package/dist/types/sessions/state.d.ts +5 -1
- package/dist/types/sessions/vertex_ai_session_service.d.ts +8 -0
- package/dist/types/skills/loader.d.ts +3 -2
- package/dist/types/skills/skill.d.ts +1 -1
- package/dist/types/telemetry/tracing.d.ts +20 -4
- package/dist/types/tools/apihub_tool/apihub_toolset.d.ts +115 -0
- package/dist/types/tools/apihub_tool/clients/apihub_client.d.ts +142 -0
- package/dist/types/tools/apihub_tool/clients/secret_client.d.ts +55 -0
- package/dist/types/tools/apihub_tool/clients/service_account.d.ts +11 -0
- package/dist/types/tools/application_integration_tool/application_integration_toolset.d.ts +109 -0
- package/dist/types/tools/application_integration_tool/clients/cloud_request.d.ts +53 -0
- package/dist/types/tools/application_integration_tool/clients/connections_client.d.ts +229 -0
- package/dist/types/tools/application_integration_tool/clients/integration_client.d.ts +72 -0
- package/dist/types/tools/application_integration_tool/integration_connector_tool.d.ts +70 -0
- package/dist/types/tools/base_toolset.d.ts +6 -5
- package/dist/types/tools/example_tool.d.ts +10 -0
- package/dist/types/tools/function_tool.d.ts +32 -0
- package/dist/types/tools/google_api_tool/google_api_tool.d.ts +37 -0
- package/dist/types/tools/google_api_tool/google_api_toolset.d.ts +55 -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 +165 -0
- package/dist/types/tools/google_api_tool/index.d.ts +10 -0
- package/dist/types/tools/load_artifacts_tool.d.ts +14 -1
- package/dist/types/tools/load_memory_tool.d.ts +23 -1
- package/dist/types/tools/mcp/index.d.ts +3 -0
- package/dist/types/tools/mcp/mcp_session_manager.d.ts +34 -1
- package/dist/types/tools/mcp/mcp_toolset.d.ts +15 -0
- package/dist/types/tools/openapi_tool/auth/auth_helpers.d.ts +19 -0
- package/dist/types/tools/openapi_tool/auth/credential_exchangers/auto_auth_credential_exchanger.d.ts +18 -1
- 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 +8 -0
- package/dist/types/tools/openapi_tool/openapi_spec_parser/tool_auth_handler.d.ts +2 -1
- 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/retrieval/base_retrieval_tool.d.ts +15 -0
- package/dist/types/tools/toolbox_toolset.d.ts +159 -0
- package/dist/types/utils/client_labels.d.ts +2 -1
- package/dist/types/utils/env_aware_utils.d.ts +18 -2
- package/dist/types/utils/error_utils.d.ts +7 -0
- package/dist/types/utils/file_utils.d.ts +6 -1
- package/dist/types/utils/gemini_schema_util.d.ts +9 -2
- package/dist/types/utils/json_utils.d.ts +11 -0
- package/dist/types/utils/object_notation_utils.d.ts +7 -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/streaming_utils.d.ts +11 -4
- package/dist/types/version.d.ts +1 -1
- package/dist/web/index_web.js +117 -110
- package/dist/web/index_web.js.map +4 -4
- package/package.json +38 -26
- package/dist/cjs/models/gemini_continuation.js +0 -232
- package/dist/esm/models/gemini_continuation.js +0 -205
- package/dist/types/models/gemini_continuation.d.ts +0 -59
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import {createRequire as topLevelCreateRequire} from 'module';
|
|
2
|
+
const require = topLevelCreateRequire(import.meta.url);
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
5
|
+
/**
|
|
6
|
+
* @license
|
|
7
|
+
* Copyright 2026 Google LLC
|
|
8
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
9
|
+
*/
|
|
10
|
+
import * as fs from "node:fs";
|
|
11
|
+
import * as os from "node:os";
|
|
12
|
+
import * as path from "node:path";
|
|
13
|
+
import * as util from "node:util";
|
|
14
|
+
import { LogLevel, setLogger, setLogLevel } from "../../utils/logger.js";
|
|
15
|
+
const LOGGING_FORMAT = "%(asctime)s - %(levelname)s - %(filename)s:%(lineno)d - %(message)s";
|
|
16
|
+
const LOG_LEVEL_NAMES = {
|
|
17
|
+
[LogLevel.DEBUG]: "DEBUG",
|
|
18
|
+
[LogLevel.INFO]: "INFO",
|
|
19
|
+
[LogLevel.WARN]: "WARNING",
|
|
20
|
+
[LogLevel.ERROR]: "ERROR"
|
|
21
|
+
};
|
|
22
|
+
function formatDateTimestamp(date) {
|
|
23
|
+
const pad = /* @__PURE__ */ __name((n) => String(n).padStart(2, "0"), "pad");
|
|
24
|
+
return `${date.getFullYear()}${pad(date.getMonth() + 1)}${pad(date.getDate())}_${pad(date.getHours())}${pad(date.getMinutes())}${pad(date.getSeconds())}`;
|
|
25
|
+
}
|
|
26
|
+
__name(formatDateTimestamp, "formatDateTimestamp");
|
|
27
|
+
function formatLogLine(level, messages) {
|
|
28
|
+
var _a;
|
|
29
|
+
const iso = (/* @__PURE__ */ new Date()).toISOString();
|
|
30
|
+
const levelName = (_a = LOG_LEVEL_NAMES[level]) != null ? _a : "INFO";
|
|
31
|
+
const formattedMessage = messages.map((m) => typeof m === "string" ? m : util.inspect(m, { depth: null })).join(" ");
|
|
32
|
+
return `${iso} - ${levelName} - ${formattedMessage}`;
|
|
33
|
+
}
|
|
34
|
+
__name(formatLogLine, "formatLogLine");
|
|
35
|
+
function createWriterLogger(initialLevel, writeLine) {
|
|
36
|
+
let currentLevel = initialLevel;
|
|
37
|
+
const logAt = /* @__PURE__ */ __name((targetLevel, messages) => {
|
|
38
|
+
if (currentLevel <= targetLevel) {
|
|
39
|
+
writeLine(formatLogLine(targetLevel, messages));
|
|
40
|
+
}
|
|
41
|
+
}, "logAt");
|
|
42
|
+
return {
|
|
43
|
+
setLogLevel(level) {
|
|
44
|
+
currentLevel = level;
|
|
45
|
+
},
|
|
46
|
+
log(level, ...messages) {
|
|
47
|
+
logAt(level, messages);
|
|
48
|
+
},
|
|
49
|
+
debug(...messages) {
|
|
50
|
+
logAt(LogLevel.DEBUG, messages);
|
|
51
|
+
},
|
|
52
|
+
info(...messages) {
|
|
53
|
+
logAt(LogLevel.INFO, messages);
|
|
54
|
+
},
|
|
55
|
+
warn(...messages) {
|
|
56
|
+
logAt(LogLevel.WARN, messages);
|
|
57
|
+
},
|
|
58
|
+
error(...messages) {
|
|
59
|
+
logAt(LogLevel.ERROR, messages);
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
__name(createWriterLogger, "createWriterLogger");
|
|
64
|
+
function setupAdkLogger(level = LogLevel.INFO) {
|
|
65
|
+
setLogLevel(level);
|
|
66
|
+
setLogger(
|
|
67
|
+
createWriterLogger(level, (line) => {
|
|
68
|
+
process.stderr.write(`${line}
|
|
69
|
+
`);
|
|
70
|
+
})
|
|
71
|
+
);
|
|
72
|
+
}
|
|
73
|
+
__name(setupAdkLogger, "setupAdkLogger");
|
|
74
|
+
function logToTmpFolder(options = {}) {
|
|
75
|
+
const {
|
|
76
|
+
level = LogLevel.INFO,
|
|
77
|
+
subFolder = "agents_log",
|
|
78
|
+
logFilePrefix = "agent",
|
|
79
|
+
logFileTimestamp = formatDateTimestamp(/* @__PURE__ */ new Date())
|
|
80
|
+
} = options;
|
|
81
|
+
const logDir = path.join(os.tmpdir(), subFolder);
|
|
82
|
+
fs.mkdirSync(logDir, { recursive: true });
|
|
83
|
+
const logFilename = `${logFilePrefix}.${logFileTimestamp}.log`;
|
|
84
|
+
const logFilepath = path.join(logDir, logFilename);
|
|
85
|
+
fs.writeFileSync(logFilepath, "", "utf-8");
|
|
86
|
+
setLogLevel(level);
|
|
87
|
+
const fileLogger = createWriterLogger(level, (line) => {
|
|
88
|
+
fs.appendFileSync(logFilepath, `${line}
|
|
89
|
+
`, "utf-8");
|
|
90
|
+
});
|
|
91
|
+
setLogger(fileLogger);
|
|
92
|
+
const latestLogLink = path.join(logDir, `${logFilePrefix}.latest.log`);
|
|
93
|
+
try {
|
|
94
|
+
try {
|
|
95
|
+
fs.lstatSync(latestLogLink);
|
|
96
|
+
fs.unlinkSync(latestLogLink);
|
|
97
|
+
} catch {
|
|
98
|
+
}
|
|
99
|
+
fs.symlinkSync(logFilepath, latestLogLink);
|
|
100
|
+
} catch (e) {
|
|
101
|
+
fileLogger.warn(`Failed to create symlink to latest log: ${String(e)}`);
|
|
102
|
+
}
|
|
103
|
+
fileLogger.info(`Log setup complete: ${logFilepath}`);
|
|
104
|
+
return logFilepath;
|
|
105
|
+
}
|
|
106
|
+
__name(logToTmpFolder, "logToTmpFolder");
|
|
107
|
+
export {
|
|
108
|
+
LOGGING_FORMAT,
|
|
109
|
+
logToTmpFolder,
|
|
110
|
+
setupAdkLogger
|
|
111
|
+
};
|
|
@@ -27,6 +27,7 @@ import { BaseCodeExecutor } from "./base_code_executor.js";
|
|
|
27
27
|
import {
|
|
28
28
|
CodeExecutionLanguage
|
|
29
29
|
} from "./code_execution_utils.js";
|
|
30
|
+
import { CONTEXT_KEY } from "./code_executor_context.js";
|
|
30
31
|
const DEFAULT_MAX_ATTEMPTS = 180;
|
|
31
32
|
const DEFAULT_SANDBOX_TTL = "31536000s";
|
|
32
33
|
const DEFAULT_SANDBOX_DISPLAY_NAME = "default_sandbox";
|
|
@@ -208,12 +209,14 @@ let AgentEngineSandboxCodeExecutor = class extends BaseCodeExecutor {
|
|
|
208
209
|
return this.agentEngineCreationPromise;
|
|
209
210
|
}
|
|
210
211
|
async getOrCreateSandbox(invocationContext, agentEngineName, language) {
|
|
211
|
-
var _a, _b;
|
|
212
|
+
var _a, _b, _c, _d, _e;
|
|
212
213
|
if (this.sandboxResourceName) {
|
|
213
214
|
return this.sandboxResourceName;
|
|
214
215
|
}
|
|
215
216
|
const stateKey = `sandbox_name_${language.toLowerCase()}`;
|
|
216
|
-
|
|
217
|
+
const state = (_a = invocationContext.session) == null ? void 0 : _a.state;
|
|
218
|
+
const codeExecutionContext = state == null ? void 0 : state[CONTEXT_KEY];
|
|
219
|
+
let sandboxName = (_b = state == null ? void 0 : state[stateKey]) != null ? _b : codeExecutionContext == null ? void 0 : codeExecutionContext[stateKey];
|
|
217
220
|
let createNewSandbox = false;
|
|
218
221
|
if (!sandboxName) {
|
|
219
222
|
createNewSandbox = true;
|
|
@@ -270,6 +273,8 @@ let AgentEngineSandboxCodeExecutor = class extends BaseCodeExecutor {
|
|
|
270
273
|
invocationContext.session.state = {};
|
|
271
274
|
}
|
|
272
275
|
invocationContext.session.state[stateKey] = sandboxName;
|
|
276
|
+
const context = (_e = (_c = invocationContext.session.state)[_d = CONTEXT_KEY]) != null ? _e : _c[_d] = {};
|
|
277
|
+
context[stateKey] = sandboxName;
|
|
273
278
|
}
|
|
274
279
|
}
|
|
275
280
|
return sandboxName;
|
|
@@ -29,33 +29,62 @@ function getEncodedFileContent(data) {
|
|
|
29
29
|
return isBase64Encoded(data) ? data : base64Encode(data);
|
|
30
30
|
}
|
|
31
31
|
__name(getEncodedFileContent, "getEncodedFileContent");
|
|
32
|
+
const FENCE_TAG_LANGUAGE_MAP = {
|
|
33
|
+
tool_code: "python" /* PYTHON */,
|
|
34
|
+
python: "python" /* PYTHON */,
|
|
35
|
+
py: "python" /* PYTHON */,
|
|
36
|
+
javascript: "javascript" /* JAVASCRIPT */,
|
|
37
|
+
js: "javascript" /* JAVASCRIPT */,
|
|
38
|
+
typescript: "typescript" /* TYPESCRIPT */,
|
|
39
|
+
ts: "typescript" /* TYPESCRIPT */,
|
|
40
|
+
bash: "shell" /* SHELL */,
|
|
41
|
+
sh: "shell" /* SHELL */,
|
|
42
|
+
shell: "shell" /* SHELL */
|
|
43
|
+
};
|
|
44
|
+
const NO_CODE_BLOCK = Object.freeze({
|
|
45
|
+
code: "",
|
|
46
|
+
language: "unspecified" /* UNSPECIFIED */
|
|
47
|
+
});
|
|
48
|
+
function getCodeBlockLanguage(leadingDelimiter) {
|
|
49
|
+
var _a;
|
|
50
|
+
const tag = leadingDelimiter.trim().replace(/^`+/, "").toLowerCase();
|
|
51
|
+
return (_a = FENCE_TAG_LANGUAGE_MAP[tag]) != null ? _a : "unspecified" /* UNSPECIFIED */;
|
|
52
|
+
}
|
|
53
|
+
__name(getCodeBlockLanguage, "getCodeBlockLanguage");
|
|
32
54
|
function extractCodeAndTruncateContent(content, codeBlockDelimiters) {
|
|
55
|
+
return extractCodeBlockAndTruncateContent(content, codeBlockDelimiters).code;
|
|
56
|
+
}
|
|
57
|
+
__name(extractCodeAndTruncateContent, "extractCodeAndTruncateContent");
|
|
58
|
+
function extractCodeBlockAndTruncateContent(content, codeBlockDelimiters) {
|
|
33
59
|
var _a;
|
|
34
60
|
if (!((_a = content.parts) == null ? void 0 : _a.length)) {
|
|
35
|
-
return
|
|
61
|
+
return { ...NO_CODE_BLOCK };
|
|
36
62
|
}
|
|
37
63
|
for (let i = 0; i < content.parts.length; i++) {
|
|
38
64
|
const part = content.parts[i];
|
|
39
65
|
if (part.executableCode && (i === content.parts.length - 1 || !content.parts[i + 1].codeExecutionResult)) {
|
|
40
66
|
content.parts = content.parts.slice(0, i + 1);
|
|
41
|
-
return
|
|
67
|
+
return {
|
|
68
|
+
code: part.executableCode.code || "",
|
|
69
|
+
language: "python" /* PYTHON */
|
|
70
|
+
};
|
|
42
71
|
}
|
|
43
72
|
}
|
|
44
73
|
const textParts = content.parts.filter((part) => part.text);
|
|
45
74
|
if (!textParts.length) {
|
|
46
|
-
return
|
|
75
|
+
return { ...NO_CODE_BLOCK };
|
|
47
76
|
}
|
|
48
77
|
const firstTextPart = cloneDeep(textParts[0]);
|
|
49
78
|
const responseText = textParts.map((part) => part.text).join("\n");
|
|
50
79
|
const leadingDelimiterPattern = codeBlockDelimiters.map((d) => d[0]).join("|");
|
|
51
80
|
const trailingDelimiterPattern = codeBlockDelimiters.map((d) => d[1]).join("|");
|
|
52
81
|
const match = new RegExp(
|
|
53
|
-
`(?<prefix>.*?)(
|
|
82
|
+
`(?<prefix>.*?)(?<leading>${leadingDelimiterPattern})(?<codeStr>.*?)(${trailingDelimiterPattern})(?<suffix>.*?)$`,
|
|
54
83
|
"s"
|
|
55
84
|
).exec(responseText);
|
|
56
|
-
const { prefix, codeStr } = (match == null ? void 0 : match.groups) || {};
|
|
85
|
+
const { prefix, leading, codeStr } = (match == null ? void 0 : match.groups) || {};
|
|
57
86
|
if (!codeStr) {
|
|
58
|
-
return
|
|
87
|
+
return { ...NO_CODE_BLOCK };
|
|
59
88
|
}
|
|
60
89
|
content.parts = [];
|
|
61
90
|
if (prefix) {
|
|
@@ -63,12 +92,11 @@ function extractCodeAndTruncateContent(content, codeBlockDelimiters) {
|
|
|
63
92
|
content.parts.push(firstTextPart);
|
|
64
93
|
}
|
|
65
94
|
content.parts.push(buildExecutableCodePart(codeStr));
|
|
66
|
-
return codeStr;
|
|
95
|
+
return { code: codeStr, language: getCodeBlockLanguage(leading != null ? leading : "") };
|
|
67
96
|
}
|
|
68
|
-
__name(
|
|
97
|
+
__name(extractCodeBlockAndTruncateContent, "extractCodeBlockAndTruncateContent");
|
|
69
98
|
function buildExecutableCodePart(code) {
|
|
70
99
|
return {
|
|
71
|
-
text: code,
|
|
72
100
|
executableCode: {
|
|
73
101
|
code,
|
|
74
102
|
language: Language.PYTHON
|
|
@@ -79,28 +107,28 @@ __name(buildExecutableCodePart, "buildExecutableCodePart");
|
|
|
79
107
|
function buildCodeExecutionResultPart(codeExecutionResult) {
|
|
80
108
|
if (codeExecutionResult.stderr) {
|
|
81
109
|
return {
|
|
82
|
-
text: codeExecutionResult.stderr,
|
|
83
110
|
codeExecutionResult: {
|
|
84
|
-
outcome: Outcome.OUTCOME_FAILED
|
|
111
|
+
outcome: Outcome.OUTCOME_FAILED,
|
|
112
|
+
output: codeExecutionResult.stderr
|
|
85
113
|
}
|
|
86
114
|
};
|
|
87
115
|
}
|
|
88
116
|
const finalResult = [];
|
|
89
|
-
if (codeExecutionResult.stdout || !codeExecutionResult.outputFiles) {
|
|
117
|
+
if (codeExecutionResult.stdout || !codeExecutionResult.outputFiles.length) {
|
|
90
118
|
finalResult.push(`Code execution result:
|
|
91
119
|
${codeExecutionResult.stdout}
|
|
92
120
|
`);
|
|
93
121
|
}
|
|
94
|
-
if (codeExecutionResult.outputFiles) {
|
|
122
|
+
if (codeExecutionResult.outputFiles.length) {
|
|
95
123
|
finalResult.push(
|
|
96
124
|
`Saved artifacts:
|
|
97
|
-
` + codeExecutionResult.outputFiles.map((f) => f.name).join(",
|
|
125
|
+
` + codeExecutionResult.outputFiles.map((f) => `\`${f.name}\``).join(",")
|
|
98
126
|
);
|
|
99
127
|
}
|
|
100
128
|
return {
|
|
101
|
-
text: finalResult.join("\n\n"),
|
|
102
129
|
codeExecutionResult: {
|
|
103
|
-
outcome: Outcome.OUTCOME_OK
|
|
130
|
+
outcome: Outcome.OUTCOME_OK,
|
|
131
|
+
output: finalResult.join("\n\n")
|
|
104
132
|
}
|
|
105
133
|
};
|
|
106
134
|
}
|
|
@@ -130,5 +158,7 @@ export {
|
|
|
130
158
|
buildExecutableCodePart,
|
|
131
159
|
convertCodeExecutionParts,
|
|
132
160
|
extractCodeAndTruncateContent,
|
|
161
|
+
extractCodeBlockAndTruncateContent,
|
|
162
|
+
getCodeBlockLanguage,
|
|
133
163
|
getEncodedFileContent
|
|
134
164
|
};
|
|
@@ -17,8 +17,10 @@ const CODE_EXECUTION_RESULTS_KEY = "_code_execution_results";
|
|
|
17
17
|
const _CodeExecutorContext = class _CodeExecutorContext {
|
|
18
18
|
constructor(sessionState) {
|
|
19
19
|
this.sessionState = sessionState;
|
|
20
|
-
|
|
21
|
-
|
|
20
|
+
if (!sessionState.has(CONTEXT_KEY)) {
|
|
21
|
+
sessionState.set(CONTEXT_KEY, {});
|
|
22
|
+
}
|
|
23
|
+
this.context = sessionState.get(CONTEXT_KEY);
|
|
22
24
|
this.sessionState = sessionState;
|
|
23
25
|
}
|
|
24
26
|
/**
|
|
@@ -170,5 +172,6 @@ const _CodeExecutorContext = class _CodeExecutorContext {
|
|
|
170
172
|
__name(_CodeExecutorContext, "CodeExecutorContext");
|
|
171
173
|
let CodeExecutorContext = _CodeExecutorContext;
|
|
172
174
|
export {
|
|
175
|
+
CONTEXT_KEY,
|
|
173
176
|
CodeExecutorContext
|
|
174
177
|
};
|
|
@@ -40,6 +40,8 @@ let ContainerCodeExecutor = class extends BaseCodeExecutor {
|
|
|
40
40
|
constructor(options = {}) {
|
|
41
41
|
var _a, _b, _c;
|
|
42
42
|
super();
|
|
43
|
+
this.containers = /* @__PURE__ */ new Map();
|
|
44
|
+
this.initPromises = /* @__PURE__ */ new Map();
|
|
43
45
|
if (!options.image && !options.dockerPath) {
|
|
44
46
|
throw new Error(
|
|
45
47
|
"Either image or dockerPath must be set for ContainerCodeExecutor."
|
|
@@ -69,8 +71,9 @@ let ContainerCodeExecutor = class extends BaseCodeExecutor {
|
|
|
69
71
|
`Unsupported language for ContainerCodeExecutor: ${language}. Supported: ${Object.keys(LANGUAGE_RUNTIME_COMMAND_MAP).join(", ")}.`
|
|
70
72
|
);
|
|
71
73
|
}
|
|
72
|
-
|
|
73
|
-
const
|
|
74
|
+
const key = sessionKey(params.invocationContext);
|
|
75
|
+
const container = await this.ensureContainer(key);
|
|
76
|
+
const { stdout, stderr, exitCode } = await container.execute(
|
|
74
77
|
[...TIMEOUT_COMMAND, String(this.timeoutSeconds), ...command, code],
|
|
75
78
|
this.timeoutSeconds
|
|
76
79
|
);
|
|
@@ -102,32 +105,35 @@ ${message}` : message;
|
|
|
102
105
|
return stderr;
|
|
103
106
|
}
|
|
104
107
|
/**
|
|
105
|
-
* Stops and removes
|
|
106
|
-
* started; provided for deterministic teardown in tests and app
|
|
108
|
+
* Stops and removes every session's container. Safe to call when none has
|
|
109
|
+
* been started; provided for deterministic teardown in tests and app
|
|
110
|
+
* shutdown.
|
|
107
111
|
*/
|
|
108
112
|
async close() {
|
|
109
|
-
const
|
|
110
|
-
this.
|
|
111
|
-
this.
|
|
112
|
-
await (container
|
|
113
|
+
const containers = [...this.containers.values()];
|
|
114
|
+
this.containers.clear();
|
|
115
|
+
this.initPromises.clear();
|
|
116
|
+
await Promise.all(containers.map((container) => container.stop()));
|
|
113
117
|
}
|
|
114
|
-
/** Lazily builds/starts the container exactly once. */
|
|
115
|
-
ensureContainer() {
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
118
|
+
/** Lazily builds/starts the given session's container exactly once. */
|
|
119
|
+
ensureContainer(key) {
|
|
120
|
+
let initPromise = this.initPromises.get(key);
|
|
121
|
+
if (!initPromise) {
|
|
122
|
+
initPromise = this.initContainer(key).catch((error) => {
|
|
123
|
+
this.initPromises.delete(key);
|
|
119
124
|
throw error;
|
|
120
125
|
});
|
|
126
|
+
this.initPromises.set(key, initPromise);
|
|
121
127
|
}
|
|
122
|
-
return this.
|
|
128
|
+
return initPromise.then(() => this.containers.get(key));
|
|
123
129
|
}
|
|
124
|
-
async initContainer() {
|
|
130
|
+
async initContainer(key) {
|
|
125
131
|
const container = new DockerContainer(this.containerOptions);
|
|
126
132
|
if (this.dockerPath) {
|
|
127
133
|
await container.build(this.dockerPath);
|
|
128
134
|
}
|
|
129
135
|
await container.start();
|
|
130
|
-
this.
|
|
136
|
+
this.containers.set(key, container);
|
|
131
137
|
const { exitCode } = await container.execute(
|
|
132
138
|
["which", "python3"],
|
|
133
139
|
this.timeoutSeconds
|
|
@@ -141,6 +147,11 @@ __name(ContainerCodeExecutor, "ContainerCodeExecutor");
|
|
|
141
147
|
ContainerCodeExecutor = __decorateClass([
|
|
142
148
|
experimental
|
|
143
149
|
], ContainerCodeExecutor);
|
|
150
|
+
function sessionKey(invocationContext) {
|
|
151
|
+
const session = invocationContext.session;
|
|
152
|
+
return JSON.stringify([session.appName, session.userId, session.id]);
|
|
153
|
+
}
|
|
154
|
+
__name(sessionKey, "sessionKey");
|
|
144
155
|
function defineFrozenFalse(target, key) {
|
|
145
156
|
Object.defineProperty(target, key, {
|
|
146
157
|
value: false,
|
|
@@ -216,7 +216,12 @@ Code execution timed out after ${this.timeoutSeconds} seconds.`;
|
|
|
216
216
|
};
|
|
217
217
|
} finally {
|
|
218
218
|
if (tempDir) {
|
|
219
|
-
await fs.rm(tempDir, {
|
|
219
|
+
await fs.rm(tempDir, {
|
|
220
|
+
recursive: true,
|
|
221
|
+
force: true,
|
|
222
|
+
maxRetries: 10,
|
|
223
|
+
retryDelay: 500
|
|
224
|
+
});
|
|
220
225
|
}
|
|
221
226
|
}
|
|
222
227
|
}
|
package/dist/esm/common.js
CHANGED
|
@@ -15,9 +15,20 @@ import {
|
|
|
15
15
|
findEventByFunctionCallId,
|
|
16
16
|
findMatchingFunctionCall,
|
|
17
17
|
functionsExportedForTestingOnly,
|
|
18
|
+
handleFunctionCallsLive,
|
|
18
19
|
isToolNotFound
|
|
19
20
|
} from "./agents/functions.js";
|
|
20
|
-
import {
|
|
21
|
+
import {
|
|
22
|
+
InvocationContext,
|
|
23
|
+
LlmCallsLimitExceededError,
|
|
24
|
+
isLlmCallsLimitExceededError,
|
|
25
|
+
requireAgent
|
|
26
|
+
} from "./agents/invocation_context.js";
|
|
27
|
+
import {
|
|
28
|
+
LangGraphAgent,
|
|
29
|
+
getLastHumanMessages,
|
|
30
|
+
isLangGraphAgent
|
|
31
|
+
} from "./agents/langgraph_agent.js";
|
|
21
32
|
import { LiveRequestQueue } from "./agents/live_request_queue.js";
|
|
22
33
|
import { LlmAgent, LlmAgent as LlmAgent2, isLlmAgent } from "./agents/llm_agent.js";
|
|
23
34
|
import { LoopAgent, isLoopAgent } from "./agents/loop_agent.js";
|
|
@@ -27,6 +38,7 @@ import {
|
|
|
27
38
|
BaseLlmRequestProcessor,
|
|
28
39
|
BaseLlmResponseProcessor
|
|
29
40
|
} from "./agents/processors/base_llm_processor.js";
|
|
41
|
+
import { CodeExecutionResponseProcessor } from "./agents/processors/code_execution_request_processor.js";
|
|
30
42
|
import {
|
|
31
43
|
CONTENT_REQUEST_PROCESSOR,
|
|
32
44
|
ContentRequestProcessor
|
|
@@ -38,7 +50,7 @@ import {
|
|
|
38
50
|
} from "./agents/processors/interactions_request_processor.js";
|
|
39
51
|
import { ReadonlyContext } from "./agents/readonly_context.js";
|
|
40
52
|
import { RoutedAgent, isRoutedAgent } from "./agents/routed_agent.js";
|
|
41
|
-
import { StreamingMode } from "./agents/run_config.js";
|
|
53
|
+
import { StreamingMode, createRunConfig } from "./agents/run_config.js";
|
|
42
54
|
import { SequentialAgent, isSequentialAgent } from "./agents/sequential_agent.js";
|
|
43
55
|
import {
|
|
44
56
|
getPendingUserInputRequests,
|
|
@@ -53,7 +65,11 @@ import { AuthCredentialTypes, isAuthCredential } from "./auth/auth_credential.js
|
|
|
53
65
|
import { AuthHandler } from "./auth/auth_handler.js";
|
|
54
66
|
import { AUTH_PREPROCESSOR, AuthPreprocessor } from "./auth/auth_preprocessor.js";
|
|
55
67
|
import { AuthProviderRegistry } from "./auth/auth_provider_registry.js";
|
|
56
|
-
import {
|
|
68
|
+
import {
|
|
69
|
+
AuthSchemeType,
|
|
70
|
+
OAuthGrantType,
|
|
71
|
+
getOAuthGrantTypeFromFlow
|
|
72
|
+
} from "./auth/auth_schemes.js";
|
|
57
73
|
import { InMemoryCredentialService } from "./auth/credential_service/in_memory_credential_service.js";
|
|
58
74
|
import { SessionStateCredentialService } from "./auth/credential_service/session_state_credential_service.js";
|
|
59
75
|
import { CredentialExchangeError } from "./auth/exchanger/base_credential_exchanger.js";
|
|
@@ -118,6 +134,8 @@ import {
|
|
|
118
134
|
stripAdkIdentityPreamble
|
|
119
135
|
} from "./models/chrome_prompt_llm.js";
|
|
120
136
|
import { Gemini, geminiInitParams } from "./models/google_llm.js";
|
|
137
|
+
import { appendInstructions } from "./models/llm_request.js";
|
|
138
|
+
import { createLlmResponse } from "./models/llm_response.js";
|
|
121
139
|
import { LLMRegistry } from "./models/registry.js";
|
|
122
140
|
import { RoutedLlm } from "./models/routed_llm.js";
|
|
123
141
|
import { BasePlanner, isBasePlanner } from "./planners/base_planner.js";
|
|
@@ -219,6 +237,8 @@ import {
|
|
|
219
237
|
import { AsyncQueue } from "./utils/async_queue.js";
|
|
220
238
|
import { renameReservedKeywords, toSnakeCaseName } from "./utils/case_utils.js";
|
|
221
239
|
import { getClientLabels, runWithClientLabel } from "./utils/client_labels.js";
|
|
240
|
+
import { toGeminiSchema } from "./utils/gemini_schema_util.js";
|
|
241
|
+
import { genaiSchemaToJsonSchema } from "./utils/genai_schema_to_json.js";
|
|
222
242
|
import {
|
|
223
243
|
LogLevel,
|
|
224
244
|
getLogger,
|
|
@@ -233,7 +253,12 @@ import {
|
|
|
233
253
|
isGemini3xFlashLive,
|
|
234
254
|
isGemini3xLive
|
|
235
255
|
} from "./utils/model_name.js";
|
|
236
|
-
import {
|
|
256
|
+
import { toJsonSchema } from "./utils/schema.js";
|
|
257
|
+
import {
|
|
258
|
+
isZodObject,
|
|
259
|
+
isZodSchema,
|
|
260
|
+
zodObjectToSchema
|
|
261
|
+
} from "./utils/simple_zod_to_json.js";
|
|
237
262
|
import { Task } from "./utils/task.js";
|
|
238
263
|
import { GoogleLLMVariant } from "./utils/variant_utils.js";
|
|
239
264
|
import { version } from "./version.js";
|
|
@@ -288,6 +313,17 @@ export * from "./features/feature_registry.js";
|
|
|
288
313
|
export * from "./memory/base_memory_service.js";
|
|
289
314
|
export * from "./sessions/base_session_service.js";
|
|
290
315
|
export * from "./tools/base_tool.js";
|
|
316
|
+
import {
|
|
317
|
+
convertSessionToEvalFormat,
|
|
318
|
+
createEmptyState
|
|
319
|
+
} from "./cli/utils/evals.js";
|
|
320
|
+
import {
|
|
321
|
+
buildFunctionDeclarationForLangchain,
|
|
322
|
+
buildFunctionDeclarationForParamsForCrewai,
|
|
323
|
+
buildFunctionDeclarationUtil
|
|
324
|
+
} from "./tools/function_tool.js";
|
|
325
|
+
import { isBaseRetrievalTool } from "./tools/retrieval/base_retrieval_tool.js";
|
|
326
|
+
import { ToolboxToolset, isToolboxToolset } from "./tools/toolbox_toolset.js";
|
|
291
327
|
export {
|
|
292
328
|
ADK_HANDLE_MODEL_ERROR_TOOL_NAME,
|
|
293
329
|
AUTH_PREPROCESSOR,
|
|
@@ -305,6 +341,7 @@ export {
|
|
|
305
341
|
AuthHandler,
|
|
306
342
|
AuthPreprocessor,
|
|
307
343
|
AuthProviderRegistry,
|
|
344
|
+
AuthSchemeType,
|
|
308
345
|
BaseAgent,
|
|
309
346
|
BaseCodeExecutor,
|
|
310
347
|
BaseEnvironment,
|
|
@@ -328,6 +365,7 @@ export {
|
|
|
328
365
|
ChromeBuiltInLlm,
|
|
329
366
|
ChromeModelUnavailableError,
|
|
330
367
|
CodeExecutionLanguage,
|
|
368
|
+
CodeExecutionResponseProcessor,
|
|
331
369
|
ConsolidateContextTool,
|
|
332
370
|
ContentRequestProcessor,
|
|
333
371
|
Context,
|
|
@@ -375,10 +413,12 @@ export {
|
|
|
375
413
|
LLMRegistry,
|
|
376
414
|
LOAD_ARTIFACTS,
|
|
377
415
|
LOAD_MEMORY,
|
|
416
|
+
LangGraphAgent,
|
|
378
417
|
ListSkillsTool,
|
|
379
418
|
LiveRequestQueue,
|
|
380
419
|
LlamaIndexRetrieval,
|
|
381
420
|
LlmAgent2 as LlmAgent,
|
|
421
|
+
LlmCallsLimitExceededError,
|
|
382
422
|
LlmSummarizer,
|
|
383
423
|
LoadArtifactsTool,
|
|
384
424
|
LoadMemoryTool,
|
|
@@ -437,6 +477,7 @@ export {
|
|
|
437
477
|
ToolErrorType,
|
|
438
478
|
ToolExecutionError,
|
|
439
479
|
ToolNode,
|
|
480
|
+
ToolboxToolset,
|
|
440
481
|
TrackingScope,
|
|
441
482
|
TrajectoryThoughtPruningCompactor,
|
|
442
483
|
TruncatingContextCompactor,
|
|
@@ -449,13 +490,21 @@ export {
|
|
|
449
490
|
WebMCPToolset,
|
|
450
491
|
Workflow,
|
|
451
492
|
WorkflowNode,
|
|
493
|
+
appendInstructions,
|
|
452
494
|
asRunnableRoot,
|
|
495
|
+
buildFunctionDeclarationForLangchain,
|
|
496
|
+
buildFunctionDeclarationForParamsForCrewai,
|
|
497
|
+
buildFunctionDeclarationUtil,
|
|
453
498
|
commonPrefixOf,
|
|
499
|
+
convertSessionToEvalFormat,
|
|
500
|
+
createEmptyState,
|
|
454
501
|
createEvent,
|
|
455
502
|
createEventActions,
|
|
503
|
+
createLlmResponse,
|
|
456
504
|
createNodeErrorEvent,
|
|
457
505
|
createNodeState,
|
|
458
506
|
createResumabilityConfig,
|
|
507
|
+
createRunConfig,
|
|
459
508
|
createSession,
|
|
460
509
|
createSubBranch,
|
|
461
510
|
determineAgentForResumption,
|
|
@@ -464,16 +513,20 @@ export {
|
|
|
464
513
|
findMatchingFunctionCall,
|
|
465
514
|
functionsExportedForTestingOnly,
|
|
466
515
|
geminiInitParams,
|
|
516
|
+
genaiSchemaToJsonSchema,
|
|
467
517
|
generateClientFunctionCallId,
|
|
468
518
|
getAskUserConfirmationFunctionCalls,
|
|
469
519
|
getClientLabels,
|
|
470
520
|
getFunctionCalls,
|
|
471
521
|
getFunctionResponses,
|
|
522
|
+
getLastHumanMessages,
|
|
472
523
|
getLogger,
|
|
473
524
|
getModelContext,
|
|
525
|
+
getOAuthGrantTypeFromFlow,
|
|
474
526
|
getPendingUserInputRequests,
|
|
475
527
|
getUserChoiceTool,
|
|
476
528
|
getUserInputRequests,
|
|
529
|
+
handleFunctionCallsLive,
|
|
477
530
|
hasThoughts,
|
|
478
531
|
hasTrailingCodeExecutionResult,
|
|
479
532
|
isAgentTool,
|
|
@@ -483,6 +536,7 @@ export {
|
|
|
483
536
|
isBaseExampleProvider,
|
|
484
537
|
isBaseLlm,
|
|
485
538
|
isBasePlanner,
|
|
539
|
+
isBaseRetrievalTool,
|
|
486
540
|
isBaseTool,
|
|
487
541
|
isBaseToolset,
|
|
488
542
|
isBuiltInPlanner,
|
|
@@ -494,7 +548,9 @@ export {
|
|
|
494
548
|
isGemini3xFlashLive,
|
|
495
549
|
isGemini3xLive,
|
|
496
550
|
isIntentMismatchError,
|
|
551
|
+
isLangGraphAgent,
|
|
497
552
|
isLlmAgent,
|
|
553
|
+
isLlmCallsLimitExceededError,
|
|
498
554
|
isLoopAgent,
|
|
499
555
|
isNodeErrorEvent,
|
|
500
556
|
isNodeReportedError,
|
|
@@ -512,8 +568,11 @@ export {
|
|
|
512
568
|
isSessionArtifactService,
|
|
513
569
|
isStateSchemaError,
|
|
514
570
|
isToolNotFound,
|
|
571
|
+
isToolboxToolset,
|
|
515
572
|
isWebMCPSupported,
|
|
516
573
|
isWorkflow,
|
|
574
|
+
isZodObject,
|
|
575
|
+
isZodSchema,
|
|
517
576
|
logger,
|
|
518
577
|
markRestored,
|
|
519
578
|
node,
|
|
@@ -535,6 +594,8 @@ export {
|
|
|
535
594
|
setLogger,
|
|
536
595
|
stringifyContent,
|
|
537
596
|
stripAdkIdentityPreamble,
|
|
597
|
+
toGeminiSchema,
|
|
598
|
+
toJsonSchema,
|
|
538
599
|
toSnakeCaseName,
|
|
539
600
|
toStructuredEvents,
|
|
540
601
|
validateAppName,
|
|
@@ -29,7 +29,7 @@ const _LlmSummarizer = class _LlmSummarizer {
|
|
|
29
29
|
* @throws {Error} If `events` is empty or the LLM returns no content.
|
|
30
30
|
*/
|
|
31
31
|
async summarize(events) {
|
|
32
|
-
var _a, _b
|
|
32
|
+
var _a, _b;
|
|
33
33
|
if (events.length === 0) {
|
|
34
34
|
throw new Error("Cannot summarize an empty list of events.");
|
|
35
35
|
}
|
|
@@ -51,18 +51,20 @@ ${formattedEvents}`;
|
|
|
51
51
|
toolsDict: {},
|
|
52
52
|
liveConnectConfig: {}
|
|
53
53
|
};
|
|
54
|
-
const responseGen = this.llm.generateContentAsync(request, false);
|
|
55
54
|
let compactedContent = "";
|
|
56
|
-
const
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
55
|
+
for await (const response of this.llm.generateContentAsync(
|
|
56
|
+
request,
|
|
57
|
+
false
|
|
58
|
+
)) {
|
|
59
|
+
for (const part of (_b = (_a = response.content) == null ? void 0 : _a.parts) != null ? _b : []) {
|
|
60
|
+
if (part.text && !part.thought) {
|
|
61
|
+
compactedContent += part.text;
|
|
62
|
+
}
|
|
64
63
|
}
|
|
65
64
|
}
|
|
65
|
+
if (!compactedContent) {
|
|
66
|
+
throw new Error("LLM failed to return a valid summary.");
|
|
67
|
+
}
|
|
66
68
|
return createCompactedEvent({
|
|
67
69
|
author: "system",
|
|
68
70
|
content: {
|
|
@@ -86,7 +86,8 @@ let TokenBasedContextCompactor = _TokenBasedContextCompactor;
|
|
|
86
86
|
function latestPromptTokenCount(activeEvents, invocationContext) {
|
|
87
87
|
var _a;
|
|
88
88
|
for (let i = activeEvents.length - 1; i >= 0; i--) {
|
|
89
|
-
const
|
|
89
|
+
const usage = activeEvents[i].usageMetadata;
|
|
90
|
+
const count = (_a = usage == null ? void 0 : usage.initialPromptTokenCount) != null ? _a : usage == null ? void 0 : usage.promptTokenCount;
|
|
90
91
|
if (count !== void 0) {
|
|
91
92
|
return count;
|
|
92
93
|
}
|
|
@@ -10,9 +10,10 @@ var __name = (target, value) => __defProp(target, "name", { value, configurable:
|
|
|
10
10
|
const _InputValidationError = class _InputValidationError extends Error {
|
|
11
11
|
/**
|
|
12
12
|
* @param message A message describing why the input is invalid.
|
|
13
|
+
* @param options Standard error options, e.g. `{cause}`.
|
|
13
14
|
*/
|
|
14
|
-
constructor(message = "Invalid input.") {
|
|
15
|
-
super(message);
|
|
15
|
+
constructor(message = "Invalid input.", options) {
|
|
16
|
+
super(message, options);
|
|
16
17
|
this.name = "InputValidationError";
|
|
17
18
|
}
|
|
18
19
|
};
|