@google/adk 0.2.5 → 0.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/part_converter_utils.js +210 -0
- package/dist/cjs/agents/active_streaming_tool.js +1 -1
- package/dist/cjs/agents/base_agent.js +46 -24
- package/dist/cjs/agents/base_llm_processor.js +1 -1
- package/dist/cjs/agents/callback_context.js +5 -2
- package/dist/cjs/agents/content_processor_utils.js +16 -8
- package/dist/cjs/agents/functions.js +81 -30
- package/dist/cjs/agents/instructions.js +1 -1
- package/dist/cjs/agents/invocation_context.js +1 -1
- package/dist/cjs/agents/live_request_queue.js +1 -1
- package/dist/cjs/agents/llm_agent.js +106 -62
- package/dist/cjs/agents/loop_agent.js +3 -2
- package/dist/cjs/agents/parallel_agent.js +4 -5
- package/dist/cjs/agents/readonly_context.js +13 -1
- package/dist/cjs/agents/run_config.js +2 -1
- package/dist/cjs/agents/sequential_agent.js +1 -1
- package/dist/cjs/agents/transcription_entry.js +1 -1
- package/dist/cjs/artifacts/base_artifact_service.js +1 -1
- package/dist/cjs/artifacts/file_artifact_service.js +491 -0
- package/dist/cjs/artifacts/gcs_artifact_service.js +145 -58
- package/dist/cjs/artifacts/in_memory_artifact_service.js +72 -10
- package/dist/cjs/artifacts/registry.js +55 -0
- package/dist/cjs/auth/auth_credential.js +1 -1
- package/dist/cjs/auth/auth_handler.js +4 -2
- package/dist/cjs/auth/auth_schemes.js +1 -1
- package/dist/cjs/auth/auth_tool.js +1 -1
- package/dist/cjs/auth/credential_service/base_credential_service.js +1 -1
- package/dist/cjs/auth/credential_service/in_memory_credential_service.js +1 -1
- package/dist/cjs/auth/exchanger/base_credential_exchanger.js +1 -1
- package/dist/cjs/auth/exchanger/credential_exchanger_registry.js +1 -1
- package/dist/cjs/code_executors/base_code_executor.js +4 -2
- package/dist/cjs/code_executors/built_in_code_executor.js +8 -4
- package/dist/cjs/code_executors/code_execution_utils.js +1 -1
- package/dist/cjs/code_executors/code_executor_context.js +6 -6
- package/dist/cjs/common.js +18 -1
- package/dist/cjs/events/event.js +34 -7
- package/dist/cjs/events/event_actions.js +2 -2
- package/dist/cjs/events/structured_events.js +105 -0
- package/dist/cjs/examples/base_example_provider.js +1 -1
- package/dist/cjs/examples/example.js +1 -1
- package/dist/cjs/examples/example_util.js +1 -1
- package/dist/cjs/index.js +54 -83
- package/dist/cjs/index_web.js +1 -1
- package/dist/cjs/memory/base_memory_service.js +1 -1
- package/dist/cjs/memory/in_memory_memory_service.js +4 -2
- package/dist/cjs/memory/memory_entry.js +1 -1
- package/dist/cjs/models/apigee_llm.js +182 -0
- package/dist/cjs/models/base_llm.js +9 -5
- package/dist/cjs/models/base_llm_connection.js +1 -1
- package/dist/cjs/models/gemini_llm_connection.js +2 -1
- package/dist/cjs/models/google_llm.js +73 -54
- package/dist/cjs/models/llm_request.js +1 -1
- package/dist/cjs/models/llm_response.js +1 -1
- package/dist/cjs/models/registry.js +3 -1
- package/dist/cjs/plugins/base_plugin.js +13 -1
- package/dist/cjs/plugins/logging_plugin.js +51 -14
- package/dist/cjs/plugins/plugin_manager.js +57 -25
- package/dist/cjs/plugins/security_plugin.js +2 -2
- package/dist/cjs/runner/in_memory_runner.js +1 -1
- package/dist/cjs/runner/runner.js +142 -96
- package/dist/cjs/sessions/base_session_service.js +53 -3
- package/dist/cjs/sessions/database_session_service.js +364 -0
- package/dist/cjs/sessions/db/operations.js +114 -0
- package/dist/cjs/sessions/db/schema.js +204 -0
- package/dist/cjs/sessions/in_memory_session_service.js +60 -34
- package/dist/cjs/sessions/registry.js +49 -0
- package/dist/cjs/sessions/session.js +1 -1
- package/dist/cjs/sessions/state.js +1 -1
- package/dist/cjs/telemetry/google_cloud.js +8 -10
- package/dist/cjs/telemetry/setup.js +16 -8
- package/dist/cjs/telemetry/tracing.js +38 -16
- package/dist/cjs/tools/agent_tool.js +9 -5
- package/dist/cjs/tools/base_tool.js +5 -3
- package/dist/cjs/tools/base_toolset.js +1 -1
- package/dist/cjs/tools/forwarding_artifact_service.js +18 -2
- package/dist/cjs/tools/function_tool.js +2 -3
- package/dist/cjs/tools/google_search_tool.js +2 -3
- package/dist/cjs/tools/long_running_tool.js +1 -1
- package/dist/cjs/tools/mcp/mcp_session_manager.js +17 -11
- package/dist/cjs/tools/mcp/mcp_tool.js +2 -4
- package/dist/cjs/tools/mcp/mcp_toolset.js +2 -2
- package/dist/cjs/tools/tool_confirmation.js +1 -1
- package/dist/cjs/tools/tool_context.js +1 -1
- package/dist/cjs/utils/client_labels.js +1 -1
- package/dist/cjs/utils/env_aware_utils.js +11 -2
- package/dist/cjs/utils/gemini_schema_util.js +10 -5
- package/dist/cjs/utils/logger.js +48 -4
- package/dist/cjs/utils/model_name.js +1 -1
- package/dist/cjs/utils/object_notation_utils.js +78 -0
- package/dist/cjs/utils/simple_zod_to_json.js +101 -142
- package/dist/cjs/utils/variant_utils.js +3 -9
- package/dist/cjs/version.js +2 -2
- package/dist/esm/a2a/part_converter_utils.js +171 -0
- package/dist/esm/agents/base_agent.js +50 -24
- package/dist/esm/agents/callback_context.js +4 -1
- package/dist/esm/agents/content_processor_utils.js +25 -9
- package/dist/esm/agents/functions.js +84 -29
- package/dist/esm/agents/llm_agent.js +110 -62
- package/dist/esm/agents/loop_agent.js +2 -1
- package/dist/esm/agents/parallel_agent.js +3 -4
- package/dist/esm/agents/readonly_context.js +12 -0
- package/dist/esm/agents/run_config.js +1 -0
- package/dist/esm/artifacts/file_artifact_service.js +451 -0
- package/dist/esm/artifacts/gcs_artifact_service.js +144 -57
- package/dist/esm/artifacts/in_memory_artifact_service.js +69 -8
- package/dist/esm/artifacts/registry.js +28 -0
- package/dist/esm/auth/auth_handler.js +3 -1
- package/dist/esm/code_executors/base_code_executor.js +3 -1
- package/dist/esm/code_executors/built_in_code_executor.js +7 -3
- package/dist/esm/code_executors/code_executor_context.js +5 -5
- package/dist/esm/common.js +12 -2
- package/dist/esm/events/event.js +30 -5
- package/dist/esm/events/event_actions.js +1 -1
- package/dist/esm/events/structured_events.js +74 -0
- package/dist/esm/index.js +18 -88
- package/dist/esm/memory/in_memory_memory_service.js +3 -1
- package/dist/esm/models/apigee_llm.js +152 -0
- package/dist/esm/models/base_llm.js +8 -4
- package/dist/esm/models/gemini_llm_connection.js +1 -0
- package/dist/esm/models/google_llm.js +75 -53
- package/dist/esm/models/registry.js +2 -0
- package/dist/esm/plugins/base_plugin.js +12 -0
- package/dist/esm/plugins/logging_plugin.js +55 -14
- package/dist/esm/plugins/plugin_manager.js +56 -24
- package/dist/esm/plugins/security_plugin.js +1 -1
- package/dist/esm/runner/runner.js +145 -96
- package/dist/esm/sessions/base_session_service.js +49 -1
- package/dist/esm/sessions/database_session_service.js +350 -0
- package/dist/esm/sessions/db/operations.js +87 -0
- package/dist/esm/sessions/db/schema.js +172 -0
- package/dist/esm/sessions/in_memory_session_service.js +61 -33
- package/dist/esm/sessions/registry.js +25 -0
- package/dist/esm/telemetry/google_cloud.js +7 -9
- package/dist/esm/telemetry/setup.js +23 -9
- package/dist/esm/telemetry/tracing.js +37 -15
- package/dist/esm/tools/agent_tool.js +8 -4
- package/dist/esm/tools/base_tool.js +4 -2
- package/dist/esm/tools/forwarding_artifact_service.js +17 -1
- package/dist/esm/tools/function_tool.js +1 -2
- package/dist/esm/tools/google_search_tool.js +2 -5
- package/dist/esm/tools/long_running_tool.js +3 -1
- package/dist/esm/tools/mcp/mcp_session_manager.js +22 -12
- package/dist/esm/tools/mcp/mcp_tool.js +1 -3
- package/dist/esm/tools/mcp/mcp_toolset.js +1 -1
- package/dist/esm/utils/env_aware_utils.js +9 -1
- package/dist/esm/utils/gemini_schema_util.js +9 -4
- package/dist/esm/utils/logger.js +43 -2
- package/dist/esm/utils/object_notation_utils.js +47 -0
- package/dist/esm/utils/simple_zod_to_json.js +102 -141
- package/dist/esm/utils/variant_utils.js +1 -7
- package/dist/esm/version.js +1 -1
- package/dist/types/a2a/part_converter_utils.d.ts +47 -0
- package/dist/types/agents/base_agent.d.ts +2 -1
- package/dist/types/agents/callback_context.d.ts +1 -1
- package/dist/types/agents/llm_agent.d.ts +12 -12
- package/dist/types/agents/loop_agent.d.ts +1 -1
- package/dist/types/agents/parallel_agent.d.ts +1 -1
- package/dist/types/agents/readonly_context.d.ts +8 -0
- package/dist/types/agents/run_config.d.ts +6 -0
- package/dist/types/artifacts/base_artifact_service.d.ts +31 -0
- package/dist/types/artifacts/file_artifact_service.d.ts +43 -0
- package/dist/types/artifacts/gcs_artifact_service.d.ts +3 -1
- package/dist/types/artifacts/in_memory_artifact_service.d.ts +8 -5
- package/dist/types/artifacts/registry.d.ts +7 -0
- package/dist/types/code_executors/built_in_code_executor.d.ts +1 -1
- package/dist/types/code_executors/code_executor_context.d.ts +2 -4
- package/dist/types/common.d.ts +13 -3
- package/dist/types/events/event.d.ts +15 -1
- package/dist/types/events/event_actions.d.ts +1 -1
- package/dist/types/events/structured_events.d.ts +106 -0
- package/dist/types/index.d.ts +7 -3
- package/dist/types/models/apigee_llm.d.ts +59 -0
- package/dist/types/models/base_llm_connection.d.ts +1 -1
- package/dist/types/models/google_llm.d.ts +5 -2
- package/dist/types/models/llm_response.d.ts +1 -1
- package/dist/types/plugins/logging_plugin.d.ts +12 -12
- package/dist/types/plugins/plugin_manager.d.ts +12 -12
- package/dist/types/plugins/security_plugin.d.ts +1 -1
- package/dist/types/runner/runner.d.ts +16 -1
- package/dist/types/sessions/base_session_service.d.ts +20 -0
- package/dist/types/sessions/database_session_service.d.ts +31 -0
- package/dist/types/sessions/db/operations.d.ts +29 -0
- package/dist/types/sessions/db/schema.d.ts +45 -0
- package/dist/types/sessions/in_memory_session_service.d.ts +9 -6
- package/dist/types/sessions/registry.d.ts +7 -0
- package/dist/types/telemetry/setup.d.ts +1 -1
- package/dist/types/telemetry/tracing.d.ts +7 -6
- package/dist/types/tools/agent_tool.d.ts +1 -1
- package/dist/types/tools/base_tool.d.ts +1 -1
- package/dist/types/tools/base_toolset.d.ts +2 -1
- package/dist/types/tools/forwarding_artifact_service.d.ts +4 -2
- package/dist/types/tools/function_tool.d.ts +4 -3
- package/dist/types/tools/google_search_tool.d.ts +3 -3
- package/dist/types/tools/mcp/mcp_session_manager.d.ts +10 -3
- package/dist/types/tools/mcp/mcp_toolset.d.ts +1 -2
- package/dist/types/utils/env_aware_utils.d.ts +7 -0
- package/dist/types/utils/gemini_schema_util.d.ts +4 -12
- package/dist/types/utils/logger.d.ts +11 -10
- package/dist/types/utils/object_notation_utils.d.ts +21 -0
- package/dist/types/utils/simple_zod_to_json.d.ts +5 -4
- package/dist/types/version.d.ts +1 -1
- package/dist/web/a2a/part_converter_utils.js +171 -0
- package/dist/web/agents/base_agent.js +96 -35
- package/dist/web/agents/callback_context.js +4 -1
- package/dist/web/agents/content_processor_utils.js +25 -9
- package/dist/web/agents/functions.js +84 -29
- package/dist/web/agents/llm_agent.js +166 -83
- package/dist/web/agents/loop_agent.js +2 -1
- package/dist/web/agents/parallel_agent.js +3 -4
- package/dist/web/agents/readonly_context.js +12 -0
- package/dist/web/agents/run_config.js +2 -1
- package/dist/web/artifacts/file_artifact_service.js +506 -0
- package/dist/web/artifacts/gcs_artifact_service.js +139 -54
- package/dist/web/artifacts/in_memory_artifact_service.js +69 -8
- package/dist/web/artifacts/registry.js +28 -0
- package/dist/web/auth/auth_handler.js +3 -1
- package/dist/web/code_executors/base_code_executor.js +3 -1
- package/dist/web/code_executors/built_in_code_executor.js +7 -3
- package/dist/web/code_executors/code_executor_context.js +5 -5
- package/dist/web/common.js +12 -2
- package/dist/web/events/event.js +30 -5
- package/dist/web/events/event_actions.js +1 -1
- package/dist/web/events/structured_events.js +74 -0
- package/dist/web/index.js +18 -8
- package/dist/web/memory/in_memory_memory_service.js +3 -1
- package/dist/web/models/apigee_llm.js +219 -0
- package/dist/web/models/base_llm.js +8 -4
- package/dist/web/models/gemini_llm_connection.js +1 -0
- package/dist/web/models/google_llm.js +75 -50
- package/dist/web/models/registry.js +2 -0
- package/dist/web/plugins/base_plugin.js +12 -0
- package/dist/web/plugins/logging_plugin.js +55 -14
- package/dist/web/plugins/plugin_manager.js +56 -24
- package/dist/web/plugins/security_plugin.js +1 -1
- package/dist/web/runner/runner.js +192 -108
- package/dist/web/sessions/base_session_service.js +49 -1
- package/dist/web/sessions/database_session_service.js +368 -0
- package/dist/web/sessions/db/operations.js +87 -0
- package/dist/web/sessions/db/schema.js +172 -0
- package/dist/web/sessions/in_memory_session_service.js +61 -33
- package/dist/web/sessions/registry.js +25 -0
- package/dist/web/telemetry/google_cloud.js +7 -9
- package/dist/web/telemetry/setup.js +23 -9
- package/dist/web/telemetry/tracing.js +37 -15
- package/dist/web/tools/agent_tool.js +8 -4
- package/dist/web/tools/base_tool.js +4 -2
- package/dist/web/tools/forwarding_artifact_service.js +17 -1
- package/dist/web/tools/function_tool.js +1 -2
- package/dist/web/tools/google_search_tool.js +2 -5
- package/dist/web/tools/long_running_tool.js +3 -1
- package/dist/web/tools/mcp/mcp_session_manager.js +22 -12
- package/dist/web/tools/mcp/mcp_tool.js +1 -3
- package/dist/web/tools/mcp/mcp_toolset.js +1 -1
- package/dist/web/utils/env_aware_utils.js +9 -1
- package/dist/web/utils/gemini_schema_util.js +9 -4
- package/dist/web/utils/logger.js +43 -2
- package/dist/web/utils/object_notation_utils.js +47 -0
- package/dist/web/utils/simple_zod_to_json.js +102 -155
- package/dist/web/utils/variant_utils.js +1 -7
- package/dist/web/version.js +1 -1
- package/package.json +16 -5
- package/dist/cjs/index.js.map +0 -7
- package/dist/esm/index.js.map +0 -7
- package/dist/web/index.js.map +0 -7
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @license
|
|
3
|
-
* Copyright
|
|
3
|
+
* Copyright 2026 Google LLC
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
@@ -29,6 +29,7 @@ __export(gcs_artifact_service_exports, {
|
|
|
29
29
|
module.exports = __toCommonJS(gcs_artifact_service_exports);
|
|
30
30
|
var import_storage = require("@google-cloud/storage");
|
|
31
31
|
var import_genai = require("@google/genai");
|
|
32
|
+
var import_logger = require("../utils/logger.js");
|
|
32
33
|
/**
|
|
33
34
|
* @license
|
|
34
35
|
* Copyright 2025 Google LLC
|
|
@@ -39,87 +40,154 @@ class GcsArtifactService {
|
|
|
39
40
|
this.bucket = new import_storage.Storage().bucket(bucket);
|
|
40
41
|
}
|
|
41
42
|
async saveArtifact(request) {
|
|
43
|
+
if (!request.artifact.inlineData && !request.artifact.text) {
|
|
44
|
+
throw new Error("Artifact must have either inlineData or text content.");
|
|
45
|
+
}
|
|
42
46
|
const versions = await this.listVersions(request);
|
|
43
47
|
const version = versions.length > 0 ? Math.max(...versions) + 1 : 0;
|
|
44
|
-
const file = this.bucket.file(
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
+
const file = this.bucket.file(
|
|
49
|
+
getFileName({
|
|
50
|
+
...request,
|
|
51
|
+
version
|
|
52
|
+
})
|
|
53
|
+
);
|
|
54
|
+
const metadata = request.customMetadata || {};
|
|
48
55
|
if (request.artifact.inlineData) {
|
|
49
|
-
await file.save(
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
contentType: "text/plain"
|
|
57
|
-
});
|
|
56
|
+
await file.save(
|
|
57
|
+
Buffer.from(request.artifact.inlineData.data || "", "base64"),
|
|
58
|
+
{
|
|
59
|
+
contentType: request.artifact.inlineData.mimeType,
|
|
60
|
+
metadata
|
|
61
|
+
}
|
|
62
|
+
);
|
|
58
63
|
return version;
|
|
59
64
|
}
|
|
60
|
-
|
|
65
|
+
await file.save(request.artifact.text, {
|
|
66
|
+
contentType: "text/plain",
|
|
67
|
+
metadata
|
|
68
|
+
});
|
|
69
|
+
return version;
|
|
61
70
|
}
|
|
62
71
|
async loadArtifact(request) {
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
72
|
+
try {
|
|
73
|
+
let version = request.version;
|
|
74
|
+
if (version === void 0) {
|
|
75
|
+
const versions = await this.listVersions(request);
|
|
76
|
+
if (versions.length === 0) {
|
|
77
|
+
return void 0;
|
|
78
|
+
}
|
|
79
|
+
version = Math.max(...versions);
|
|
68
80
|
}
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
81
|
+
const file = this.bucket.file(
|
|
82
|
+
getFileName({
|
|
83
|
+
...request,
|
|
84
|
+
version
|
|
85
|
+
})
|
|
86
|
+
);
|
|
87
|
+
const [[metadata], [rawDataBuffer]] = await Promise.all([
|
|
88
|
+
file.getMetadata(),
|
|
89
|
+
file.download()
|
|
90
|
+
]);
|
|
91
|
+
if (metadata.contentType === "text/plain") {
|
|
92
|
+
return (0, import_genai.createPartFromText)(rawDataBuffer.toString("utf-8"));
|
|
93
|
+
}
|
|
94
|
+
return (0, import_genai.createPartFromBase64)(
|
|
95
|
+
rawDataBuffer.toString("base64"),
|
|
96
|
+
metadata.contentType
|
|
97
|
+
);
|
|
98
|
+
} catch (e) {
|
|
99
|
+
import_logger.logger.warn(
|
|
100
|
+
`[GcsArtifactService] loadArtifact: Failed to load artifact ${request.filename}`,
|
|
101
|
+
e
|
|
102
|
+
);
|
|
103
|
+
return void 0;
|
|
78
104
|
}
|
|
79
|
-
return (0, import_genai.createPartFromBase64)(
|
|
80
|
-
rawDataBuffer.toString("base64"),
|
|
81
|
-
metadata.contentType
|
|
82
|
-
);
|
|
83
105
|
}
|
|
84
106
|
async listArtifactKeys(request) {
|
|
85
|
-
const fileNames = [];
|
|
86
107
|
const sessionPrefix = `${request.appName}/${request.userId}/${request.sessionId}/`;
|
|
87
108
|
const usernamePrefix = `${request.appName}/${request.userId}/user/`;
|
|
88
|
-
const [
|
|
89
|
-
[sessionFiles],
|
|
90
|
-
[userSessionFiles]
|
|
91
|
-
] = await Promise.all([
|
|
109
|
+
const [[sessionFiles], [userSessionFiles]] = await Promise.all([
|
|
92
110
|
this.bucket.getFiles({ prefix: sessionPrefix }),
|
|
93
111
|
this.bucket.getFiles({ prefix: usernamePrefix })
|
|
94
112
|
]);
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
fileNames.push(file.name.split("/").pop());
|
|
100
|
-
}
|
|
101
|
-
return fileNames.sort((a, b) => a.localeCompare(b));
|
|
113
|
+
return [
|
|
114
|
+
...extractArtifactKeys(sessionFiles, sessionPrefix),
|
|
115
|
+
...extractArtifactKeys(userSessionFiles, usernamePrefix, "user:")
|
|
116
|
+
].sort((a, b) => a.localeCompare(b));
|
|
102
117
|
}
|
|
103
118
|
async deleteArtifact(request) {
|
|
104
119
|
const versions = await this.listVersions(request);
|
|
105
|
-
await Promise.all(
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
120
|
+
await Promise.all(
|
|
121
|
+
versions.map((version) => {
|
|
122
|
+
const file = this.bucket.file(
|
|
123
|
+
getFileName({
|
|
124
|
+
...request,
|
|
125
|
+
version
|
|
126
|
+
})
|
|
127
|
+
);
|
|
128
|
+
return file.delete();
|
|
129
|
+
})
|
|
130
|
+
);
|
|
112
131
|
return;
|
|
113
132
|
}
|
|
114
133
|
async listVersions(request) {
|
|
115
134
|
const prefix = getFileName(request);
|
|
116
|
-
const
|
|
135
|
+
const searchPrefix = prefix + "/";
|
|
136
|
+
const [files] = await this.bucket.getFiles({ prefix: searchPrefix });
|
|
117
137
|
const versions = [];
|
|
118
138
|
for (const file of files) {
|
|
119
139
|
const version = file.name.split("/").pop();
|
|
120
|
-
|
|
140
|
+
const v = parseInt(version, 10);
|
|
141
|
+
if (!isNaN(v)) {
|
|
142
|
+
versions.push(v);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
return versions.sort((a, b) => a - b);
|
|
146
|
+
}
|
|
147
|
+
async listArtifactVersions(request) {
|
|
148
|
+
const versions = await this.listVersions(request);
|
|
149
|
+
const artifactVersions = [];
|
|
150
|
+
for (const version of versions) {
|
|
151
|
+
const artifactVersion = await this.getArtifactVersion({
|
|
152
|
+
...request,
|
|
153
|
+
version
|
|
154
|
+
});
|
|
155
|
+
if (artifactVersion) {
|
|
156
|
+
artifactVersions.push(artifactVersion);
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
return artifactVersions;
|
|
160
|
+
}
|
|
161
|
+
async getArtifactVersion(request) {
|
|
162
|
+
try {
|
|
163
|
+
let version = request.version;
|
|
164
|
+
if (version === void 0) {
|
|
165
|
+
const versions = await this.listVersions(request);
|
|
166
|
+
if (versions.length === 0) {
|
|
167
|
+
return void 0;
|
|
168
|
+
}
|
|
169
|
+
version = Math.max(...versions);
|
|
170
|
+
}
|
|
171
|
+
const file = this.bucket.file(
|
|
172
|
+
getFileName({
|
|
173
|
+
...request,
|
|
174
|
+
version
|
|
175
|
+
})
|
|
176
|
+
);
|
|
177
|
+
const [metadata] = await file.getMetadata();
|
|
178
|
+
return {
|
|
179
|
+
version,
|
|
180
|
+
mimeType: metadata.contentType,
|
|
181
|
+
customMetadata: metadata.metadata,
|
|
182
|
+
canonicalUri: file.publicUrl()
|
|
183
|
+
};
|
|
184
|
+
} catch (e) {
|
|
185
|
+
import_logger.logger.warn(
|
|
186
|
+
`[GcsArtifactService] getArtifactVersion: Failed to get artifact version for userId: ${request.userId} sessionId: ${request.sessionId} filename: ${request.filename} version: ${request.version}`,
|
|
187
|
+
e
|
|
188
|
+
);
|
|
189
|
+
return void 0;
|
|
121
190
|
}
|
|
122
|
-
return versions;
|
|
123
191
|
}
|
|
124
192
|
}
|
|
125
193
|
function getFileName({
|
|
@@ -129,10 +197,29 @@ function getFileName({
|
|
|
129
197
|
filename,
|
|
130
198
|
version
|
|
131
199
|
}) {
|
|
132
|
-
|
|
133
|
-
|
|
200
|
+
const isUser = filename.startsWith("user:");
|
|
201
|
+
const cleanFilename = isUser ? filename.substring(5) : filename;
|
|
202
|
+
const prefix = isUser ? `${appName}/${userId}/user/${cleanFilename}` : `${appName}/${userId}/${sessionId}/${cleanFilename}`;
|
|
203
|
+
return version !== void 0 ? `${prefix}/${version}` : prefix;
|
|
204
|
+
}
|
|
205
|
+
function extractArtifactKeys(files, fileNamePrefix, keyPrefix = "") {
|
|
206
|
+
const keys = /* @__PURE__ */ new Set();
|
|
207
|
+
for (const file of files) {
|
|
208
|
+
if (!file.name.startsWith(fileNamePrefix)) {
|
|
209
|
+
continue;
|
|
210
|
+
}
|
|
211
|
+
const relative = file.name.substring(fileNamePrefix.length);
|
|
212
|
+
const name = getFileNameFromPath(relative);
|
|
213
|
+
keys.add(`${keyPrefix}${name}`);
|
|
214
|
+
}
|
|
215
|
+
return [...keys];
|
|
216
|
+
}
|
|
217
|
+
function getFileNameFromPath(filePath) {
|
|
218
|
+
const parts = filePath.split("/");
|
|
219
|
+
if (parts.length < 2) {
|
|
220
|
+
return filePath;
|
|
134
221
|
}
|
|
135
|
-
return
|
|
222
|
+
return parts.slice(0, -1).join("/");
|
|
136
223
|
}
|
|
137
224
|
// Annotate the CommonJS export names for ESM import in node:
|
|
138
225
|
0 && (module.exports = {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @license
|
|
3
|
-
* Copyright
|
|
3
|
+
* Copyright 2026 Google LLC
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
@@ -24,7 +24,8 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
24
24
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
25
25
|
var in_memory_artifact_service_exports = {};
|
|
26
26
|
__export(in_memory_artifact_service_exports, {
|
|
27
|
-
InMemoryArtifactService: () => InMemoryArtifactService
|
|
27
|
+
InMemoryArtifactService: () => InMemoryArtifactService,
|
|
28
|
+
isInMemoryConnectionString: () => isInMemoryConnectionString
|
|
28
29
|
});
|
|
29
30
|
module.exports = __toCommonJS(in_memory_artifact_service_exports);
|
|
30
31
|
/**
|
|
@@ -32,6 +33,9 @@ module.exports = __toCommonJS(in_memory_artifact_service_exports);
|
|
|
32
33
|
* Copyright 2025 Google LLC
|
|
33
34
|
* SPDX-License-Identifier: Apache-2.0
|
|
34
35
|
*/
|
|
36
|
+
function isInMemoryConnectionString(uri) {
|
|
37
|
+
return uri === "memory://";
|
|
38
|
+
}
|
|
35
39
|
class InMemoryArtifactService {
|
|
36
40
|
constructor() {
|
|
37
41
|
this.artifacts = {};
|
|
@@ -41,14 +45,24 @@ class InMemoryArtifactService {
|
|
|
41
45
|
userId,
|
|
42
46
|
sessionId,
|
|
43
47
|
filename,
|
|
44
|
-
artifact
|
|
48
|
+
artifact,
|
|
49
|
+
customMetadata
|
|
45
50
|
}) {
|
|
51
|
+
if (!artifact.inlineData && !artifact.text) {
|
|
52
|
+
return Promise.reject(
|
|
53
|
+
new Error("Artifact must have either inlineData or text content.")
|
|
54
|
+
);
|
|
55
|
+
}
|
|
46
56
|
const path = artifactPath(appName, userId, sessionId, filename);
|
|
47
57
|
if (!this.artifacts[path]) {
|
|
48
58
|
this.artifacts[path] = [];
|
|
49
59
|
}
|
|
50
60
|
const version = this.artifacts[path].length;
|
|
51
|
-
|
|
61
|
+
const metadata = {
|
|
62
|
+
version,
|
|
63
|
+
customMetadata
|
|
64
|
+
};
|
|
65
|
+
this.artifacts[path].push({ part: artifact, metadata });
|
|
52
66
|
return Promise.resolve(version);
|
|
53
67
|
}
|
|
54
68
|
loadArtifact({
|
|
@@ -66,9 +80,13 @@ class InMemoryArtifactService {
|
|
|
66
80
|
if (version === void 0) {
|
|
67
81
|
version = versions.length - 1;
|
|
68
82
|
}
|
|
69
|
-
return Promise.resolve(versions[version]);
|
|
83
|
+
return Promise.resolve(versions[version].part);
|
|
70
84
|
}
|
|
71
|
-
listArtifactKeys({
|
|
85
|
+
listArtifactKeys({
|
|
86
|
+
appName,
|
|
87
|
+
userId,
|
|
88
|
+
sessionId
|
|
89
|
+
}) {
|
|
72
90
|
const sessionPrefix = `${appName}/${userId}/${sessionId}/`;
|
|
73
91
|
const usernamespacePrefix = `${appName}/${userId}/user/`;
|
|
74
92
|
const filenames = [];
|
|
@@ -83,7 +101,12 @@ class InMemoryArtifactService {
|
|
|
83
101
|
}
|
|
84
102
|
return Promise.resolve(filenames.sort());
|
|
85
103
|
}
|
|
86
|
-
deleteArtifact({
|
|
104
|
+
deleteArtifact({
|
|
105
|
+
appName,
|
|
106
|
+
userId,
|
|
107
|
+
sessionId,
|
|
108
|
+
filename
|
|
109
|
+
}) {
|
|
87
110
|
const path = artifactPath(appName, userId, sessionId, filename);
|
|
88
111
|
if (!this.artifacts[path]) {
|
|
89
112
|
return Promise.resolve();
|
|
@@ -91,18 +114,56 @@ class InMemoryArtifactService {
|
|
|
91
114
|
delete this.artifacts[path];
|
|
92
115
|
return Promise.resolve();
|
|
93
116
|
}
|
|
94
|
-
listVersions({
|
|
117
|
+
listVersions({
|
|
118
|
+
appName,
|
|
119
|
+
userId,
|
|
120
|
+
sessionId,
|
|
121
|
+
filename
|
|
122
|
+
}) {
|
|
95
123
|
const path = artifactPath(appName, userId, sessionId, filename);
|
|
96
124
|
const artifacts = this.artifacts[path];
|
|
97
125
|
if (!artifacts) {
|
|
98
126
|
return Promise.resolve([]);
|
|
99
127
|
}
|
|
100
|
-
|
|
128
|
+
const versions = [];
|
|
101
129
|
for (let i = 0; i < artifacts.length; i++) {
|
|
102
130
|
versions.push(i);
|
|
103
131
|
}
|
|
104
132
|
return Promise.resolve(versions);
|
|
105
133
|
}
|
|
134
|
+
listArtifactVersions({
|
|
135
|
+
appName,
|
|
136
|
+
userId,
|
|
137
|
+
sessionId,
|
|
138
|
+
filename
|
|
139
|
+
}) {
|
|
140
|
+
const path = artifactPath(appName, userId, sessionId, filename);
|
|
141
|
+
const artifacts = this.artifacts[path];
|
|
142
|
+
if (!artifacts) {
|
|
143
|
+
return Promise.resolve([]);
|
|
144
|
+
}
|
|
145
|
+
return Promise.resolve(artifacts.map((a) => a.metadata));
|
|
146
|
+
}
|
|
147
|
+
getArtifactVersion({
|
|
148
|
+
appName,
|
|
149
|
+
userId,
|
|
150
|
+
sessionId,
|
|
151
|
+
filename,
|
|
152
|
+
version
|
|
153
|
+
}) {
|
|
154
|
+
const path = artifactPath(appName, userId, sessionId, filename);
|
|
155
|
+
const versions = this.artifacts[path];
|
|
156
|
+
if (!versions) {
|
|
157
|
+
return Promise.resolve(void 0);
|
|
158
|
+
}
|
|
159
|
+
if (version === void 0) {
|
|
160
|
+
version = versions.length - 1;
|
|
161
|
+
}
|
|
162
|
+
if (versions[version]) {
|
|
163
|
+
return Promise.resolve(versions[version].metadata);
|
|
164
|
+
}
|
|
165
|
+
return Promise.resolve(void 0);
|
|
166
|
+
}
|
|
106
167
|
}
|
|
107
168
|
function artifactPath(appName, userId, sessionId, filename) {
|
|
108
169
|
if (fileHasUserNamespace(filename)) {
|
|
@@ -115,5 +176,6 @@ function fileHasUserNamespace(filename) {
|
|
|
115
176
|
}
|
|
116
177
|
// Annotate the CommonJS export names for ESM import in node:
|
|
117
178
|
0 && (module.exports = {
|
|
118
|
-
InMemoryArtifactService
|
|
179
|
+
InMemoryArtifactService,
|
|
180
|
+
isInMemoryConnectionString
|
|
119
181
|
});
|
|
@@ -0,0 +1,55 @@
|
|
|
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 __export = (target, all) => {
|
|
13
|
+
for (var name in all)
|
|
14
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
15
|
+
};
|
|
16
|
+
var __copyProps = (to, from, except, desc) => {
|
|
17
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
18
|
+
for (let key of __getOwnPropNames(from))
|
|
19
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
20
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
21
|
+
}
|
|
22
|
+
return to;
|
|
23
|
+
};
|
|
24
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
25
|
+
var registry_exports = {};
|
|
26
|
+
__export(registry_exports, {
|
|
27
|
+
getArtifactServiceFromUri: () => getArtifactServiceFromUri
|
|
28
|
+
});
|
|
29
|
+
module.exports = __toCommonJS(registry_exports);
|
|
30
|
+
var import_file_artifact_service = require("./file_artifact_service.js");
|
|
31
|
+
var import_gcs_artifact_service = require("./gcs_artifact_service.js");
|
|
32
|
+
var import_in_memory_artifact_service = require("./in_memory_artifact_service.js");
|
|
33
|
+
/**
|
|
34
|
+
* @license
|
|
35
|
+
* Copyright 2026 Google LLC
|
|
36
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
37
|
+
*/
|
|
38
|
+
function getArtifactServiceFromUri(uri) {
|
|
39
|
+
if ((0, import_in_memory_artifact_service.isInMemoryConnectionString)(uri)) {
|
|
40
|
+
return new import_in_memory_artifact_service.InMemoryArtifactService();
|
|
41
|
+
}
|
|
42
|
+
if (uri.startsWith("gs://")) {
|
|
43
|
+
const bucket = uri.split("://")[1];
|
|
44
|
+
return new import_gcs_artifact_service.GcsArtifactService(bucket);
|
|
45
|
+
}
|
|
46
|
+
if (uri.startsWith("file://")) {
|
|
47
|
+
const rootDir = uri.split("://")[1];
|
|
48
|
+
return new import_file_artifact_service.FileArtifactService(rootDir);
|
|
49
|
+
}
|
|
50
|
+
throw new Error(`Unsupported artifact service URI: ${uri}`);
|
|
51
|
+
}
|
|
52
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
53
|
+
0 && (module.exports = {
|
|
54
|
+
getArtifactServiceFromUri
|
|
55
|
+
});
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @license
|
|
3
|
-
* Copyright
|
|
3
|
+
* Copyright 2026 Google LLC
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
@@ -66,7 +66,9 @@ class AuthHandler {
|
|
|
66
66
|
};
|
|
67
67
|
}
|
|
68
68
|
if (!this.authConfig.rawAuthCredential.oauth2.clientId || !this.authConfig.rawAuthCredential.oauth2.clientSecret) {
|
|
69
|
-
throw new Error(
|
|
69
|
+
throw new Error(
|
|
70
|
+
`Auth Scheme ${authSchemeType} requires both clientId and clientSecret in authCredential.oauth2.`
|
|
71
|
+
);
|
|
70
72
|
}
|
|
71
73
|
return {
|
|
72
74
|
credentialKey: this.authConfig.credentialKey,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @license
|
|
3
|
-
* Copyright
|
|
3
|
+
* Copyright 2026 Google LLC
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
@@ -34,7 +34,9 @@ module.exports = __toCommonJS(base_code_executor_exports);
|
|
|
34
34
|
* SPDX-License-Identifier: Apache-2.0
|
|
35
35
|
*/
|
|
36
36
|
var _a;
|
|
37
|
-
const BASE_CODE_EXECUTOR_SIGNATURE_SYMBOL = Symbol.for(
|
|
37
|
+
const BASE_CODE_EXECUTOR_SIGNATURE_SYMBOL = Symbol.for(
|
|
38
|
+
"google.adk.baseCodeExecutor"
|
|
39
|
+
);
|
|
38
40
|
function isBaseCodeExecutor(obj) {
|
|
39
41
|
return typeof obj === "object" && obj !== null && BASE_CODE_EXECUTOR_SIGNATURE_SYMBOL in obj && obj[BASE_CODE_EXECUTOR_SIGNATURE_SYMBOL] === true;
|
|
40
42
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @license
|
|
3
|
-
* Copyright
|
|
3
|
+
* Copyright 2026 Google LLC
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
@@ -36,7 +36,9 @@ var import_base_code_executor = require("./base_code_executor.js");
|
|
|
36
36
|
* SPDX-License-Identifier: Apache-2.0
|
|
37
37
|
*/
|
|
38
38
|
var _a, _b;
|
|
39
|
-
const BUILT_IN_CODE_EXECUTOR_SIGNATURE_SYMBOL = Symbol.for(
|
|
39
|
+
const BUILT_IN_CODE_EXECUTOR_SIGNATURE_SYMBOL = Symbol.for(
|
|
40
|
+
"google.adk.builtInCodeExecutor"
|
|
41
|
+
);
|
|
40
42
|
function isBuiltInCodeExecutor(obj) {
|
|
41
43
|
return typeof obj === "object" && obj !== null && BUILT_IN_CODE_EXECUTOR_SIGNATURE_SYMBOL in obj && obj[BUILT_IN_CODE_EXECUTOR_SIGNATURE_SYMBOL] === true;
|
|
42
44
|
}
|
|
@@ -46,7 +48,7 @@ class BuiltInCodeExecutor extends (_b = import_base_code_executor.BaseCodeExecut
|
|
|
46
48
|
/** A unique symbol to identify BuiltInCodeExecutor class. */
|
|
47
49
|
this[_a] = true;
|
|
48
50
|
}
|
|
49
|
-
executeCode(
|
|
51
|
+
executeCode(_params) {
|
|
50
52
|
return Promise.resolve({
|
|
51
53
|
stdout: "",
|
|
52
54
|
stderr: "",
|
|
@@ -60,7 +62,9 @@ class BuiltInCodeExecutor extends (_b = import_base_code_executor.BaseCodeExecut
|
|
|
60
62
|
llmRequest.config.tools.push({ codeExecution: {} });
|
|
61
63
|
return;
|
|
62
64
|
}
|
|
63
|
-
throw new Error(
|
|
65
|
+
throw new Error(
|
|
66
|
+
`Gemini code execution tool is not supported for model ${llmRequest.model}`
|
|
67
|
+
);
|
|
64
68
|
}
|
|
65
69
|
}
|
|
66
70
|
// Annotate the CommonJS export names for ESM import in node:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @license
|
|
3
|
-
* Copyright
|
|
3
|
+
* Copyright 2026 Google LLC
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
@@ -171,7 +171,9 @@ class CodeExecutorContext {
|
|
|
171
171
|
if (!(CODE_EXECUTION_RESULTS_KEY in this.sessionState)) {
|
|
172
172
|
this.sessionState.set(CODE_EXECUTION_RESULTS_KEY, {});
|
|
173
173
|
}
|
|
174
|
-
const codeExecutionResults = this.sessionState.get(
|
|
174
|
+
const codeExecutionResults = this.sessionState.get(
|
|
175
|
+
CODE_EXECUTION_RESULTS_KEY
|
|
176
|
+
);
|
|
175
177
|
if (!(invocationId in codeExecutionResults)) {
|
|
176
178
|
codeExecutionResults[invocationId] = [];
|
|
177
179
|
}
|
|
@@ -183,12 +185,10 @@ class CodeExecutorContext {
|
|
|
183
185
|
});
|
|
184
186
|
}
|
|
185
187
|
/**
|
|
186
|
-
* Gets the code
|
|
187
|
-
* @param invocationId The session state to get the code executor context
|
|
188
|
-
* from.
|
|
188
|
+
* Gets the code execution context from the session state.
|
|
189
189
|
* @return The code execution context for the given invocation ID.
|
|
190
190
|
*/
|
|
191
|
-
getCodeExecutionContext(
|
|
191
|
+
getCodeExecutionContext() {
|
|
192
192
|
return this.sessionState.get(CONTEXT_KEY) || {};
|
|
193
193
|
}
|
|
194
194
|
}
|