@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.
Files changed (264) hide show
  1. package/dist/cjs/a2a/part_converter_utils.js +210 -0
  2. package/dist/cjs/agents/active_streaming_tool.js +1 -1
  3. package/dist/cjs/agents/base_agent.js +46 -24
  4. package/dist/cjs/agents/base_llm_processor.js +1 -1
  5. package/dist/cjs/agents/callback_context.js +5 -2
  6. package/dist/cjs/agents/content_processor_utils.js +16 -8
  7. package/dist/cjs/agents/functions.js +81 -30
  8. package/dist/cjs/agents/instructions.js +1 -1
  9. package/dist/cjs/agents/invocation_context.js +1 -1
  10. package/dist/cjs/agents/live_request_queue.js +1 -1
  11. package/dist/cjs/agents/llm_agent.js +106 -62
  12. package/dist/cjs/agents/loop_agent.js +3 -2
  13. package/dist/cjs/agents/parallel_agent.js +4 -5
  14. package/dist/cjs/agents/readonly_context.js +13 -1
  15. package/dist/cjs/agents/run_config.js +2 -1
  16. package/dist/cjs/agents/sequential_agent.js +1 -1
  17. package/dist/cjs/agents/transcription_entry.js +1 -1
  18. package/dist/cjs/artifacts/base_artifact_service.js +1 -1
  19. package/dist/cjs/artifacts/file_artifact_service.js +491 -0
  20. package/dist/cjs/artifacts/gcs_artifact_service.js +145 -58
  21. package/dist/cjs/artifacts/in_memory_artifact_service.js +72 -10
  22. package/dist/cjs/artifacts/registry.js +55 -0
  23. package/dist/cjs/auth/auth_credential.js +1 -1
  24. package/dist/cjs/auth/auth_handler.js +4 -2
  25. package/dist/cjs/auth/auth_schemes.js +1 -1
  26. package/dist/cjs/auth/auth_tool.js +1 -1
  27. package/dist/cjs/auth/credential_service/base_credential_service.js +1 -1
  28. package/dist/cjs/auth/credential_service/in_memory_credential_service.js +1 -1
  29. package/dist/cjs/auth/exchanger/base_credential_exchanger.js +1 -1
  30. package/dist/cjs/auth/exchanger/credential_exchanger_registry.js +1 -1
  31. package/dist/cjs/code_executors/base_code_executor.js +4 -2
  32. package/dist/cjs/code_executors/built_in_code_executor.js +8 -4
  33. package/dist/cjs/code_executors/code_execution_utils.js +1 -1
  34. package/dist/cjs/code_executors/code_executor_context.js +6 -6
  35. package/dist/cjs/common.js +18 -1
  36. package/dist/cjs/events/event.js +34 -7
  37. package/dist/cjs/events/event_actions.js +2 -2
  38. package/dist/cjs/events/structured_events.js +105 -0
  39. package/dist/cjs/examples/base_example_provider.js +1 -1
  40. package/dist/cjs/examples/example.js +1 -1
  41. package/dist/cjs/examples/example_util.js +1 -1
  42. package/dist/cjs/index.js +54 -83
  43. package/dist/cjs/index_web.js +1 -1
  44. package/dist/cjs/memory/base_memory_service.js +1 -1
  45. package/dist/cjs/memory/in_memory_memory_service.js +4 -2
  46. package/dist/cjs/memory/memory_entry.js +1 -1
  47. package/dist/cjs/models/apigee_llm.js +182 -0
  48. package/dist/cjs/models/base_llm.js +9 -5
  49. package/dist/cjs/models/base_llm_connection.js +1 -1
  50. package/dist/cjs/models/gemini_llm_connection.js +2 -1
  51. package/dist/cjs/models/google_llm.js +73 -54
  52. package/dist/cjs/models/llm_request.js +1 -1
  53. package/dist/cjs/models/llm_response.js +1 -1
  54. package/dist/cjs/models/registry.js +3 -1
  55. package/dist/cjs/plugins/base_plugin.js +13 -1
  56. package/dist/cjs/plugins/logging_plugin.js +51 -14
  57. package/dist/cjs/plugins/plugin_manager.js +57 -25
  58. package/dist/cjs/plugins/security_plugin.js +2 -2
  59. package/dist/cjs/runner/in_memory_runner.js +1 -1
  60. package/dist/cjs/runner/runner.js +142 -96
  61. package/dist/cjs/sessions/base_session_service.js +53 -3
  62. package/dist/cjs/sessions/database_session_service.js +364 -0
  63. package/dist/cjs/sessions/db/operations.js +114 -0
  64. package/dist/cjs/sessions/db/schema.js +204 -0
  65. package/dist/cjs/sessions/in_memory_session_service.js +60 -34
  66. package/dist/cjs/sessions/registry.js +49 -0
  67. package/dist/cjs/sessions/session.js +1 -1
  68. package/dist/cjs/sessions/state.js +1 -1
  69. package/dist/cjs/telemetry/google_cloud.js +8 -10
  70. package/dist/cjs/telemetry/setup.js +16 -8
  71. package/dist/cjs/telemetry/tracing.js +38 -16
  72. package/dist/cjs/tools/agent_tool.js +9 -5
  73. package/dist/cjs/tools/base_tool.js +5 -3
  74. package/dist/cjs/tools/base_toolset.js +1 -1
  75. package/dist/cjs/tools/forwarding_artifact_service.js +18 -2
  76. package/dist/cjs/tools/function_tool.js +2 -3
  77. package/dist/cjs/tools/google_search_tool.js +2 -3
  78. package/dist/cjs/tools/long_running_tool.js +1 -1
  79. package/dist/cjs/tools/mcp/mcp_session_manager.js +17 -11
  80. package/dist/cjs/tools/mcp/mcp_tool.js +2 -4
  81. package/dist/cjs/tools/mcp/mcp_toolset.js +2 -2
  82. package/dist/cjs/tools/tool_confirmation.js +1 -1
  83. package/dist/cjs/tools/tool_context.js +1 -1
  84. package/dist/cjs/utils/client_labels.js +1 -1
  85. package/dist/cjs/utils/env_aware_utils.js +11 -2
  86. package/dist/cjs/utils/gemini_schema_util.js +10 -5
  87. package/dist/cjs/utils/logger.js +48 -4
  88. package/dist/cjs/utils/model_name.js +1 -1
  89. package/dist/cjs/utils/object_notation_utils.js +78 -0
  90. package/dist/cjs/utils/simple_zod_to_json.js +101 -142
  91. package/dist/cjs/utils/variant_utils.js +3 -9
  92. package/dist/cjs/version.js +2 -2
  93. package/dist/esm/a2a/part_converter_utils.js +171 -0
  94. package/dist/esm/agents/base_agent.js +50 -24
  95. package/dist/esm/agents/callback_context.js +4 -1
  96. package/dist/esm/agents/content_processor_utils.js +25 -9
  97. package/dist/esm/agents/functions.js +84 -29
  98. package/dist/esm/agents/llm_agent.js +110 -62
  99. package/dist/esm/agents/loop_agent.js +2 -1
  100. package/dist/esm/agents/parallel_agent.js +3 -4
  101. package/dist/esm/agents/readonly_context.js +12 -0
  102. package/dist/esm/agents/run_config.js +1 -0
  103. package/dist/esm/artifacts/file_artifact_service.js +451 -0
  104. package/dist/esm/artifacts/gcs_artifact_service.js +144 -57
  105. package/dist/esm/artifacts/in_memory_artifact_service.js +69 -8
  106. package/dist/esm/artifacts/registry.js +28 -0
  107. package/dist/esm/auth/auth_handler.js +3 -1
  108. package/dist/esm/code_executors/base_code_executor.js +3 -1
  109. package/dist/esm/code_executors/built_in_code_executor.js +7 -3
  110. package/dist/esm/code_executors/code_executor_context.js +5 -5
  111. package/dist/esm/common.js +12 -2
  112. package/dist/esm/events/event.js +30 -5
  113. package/dist/esm/events/event_actions.js +1 -1
  114. package/dist/esm/events/structured_events.js +74 -0
  115. package/dist/esm/index.js +18 -88
  116. package/dist/esm/memory/in_memory_memory_service.js +3 -1
  117. package/dist/esm/models/apigee_llm.js +152 -0
  118. package/dist/esm/models/base_llm.js +8 -4
  119. package/dist/esm/models/gemini_llm_connection.js +1 -0
  120. package/dist/esm/models/google_llm.js +75 -53
  121. package/dist/esm/models/registry.js +2 -0
  122. package/dist/esm/plugins/base_plugin.js +12 -0
  123. package/dist/esm/plugins/logging_plugin.js +55 -14
  124. package/dist/esm/plugins/plugin_manager.js +56 -24
  125. package/dist/esm/plugins/security_plugin.js +1 -1
  126. package/dist/esm/runner/runner.js +145 -96
  127. package/dist/esm/sessions/base_session_service.js +49 -1
  128. package/dist/esm/sessions/database_session_service.js +350 -0
  129. package/dist/esm/sessions/db/operations.js +87 -0
  130. package/dist/esm/sessions/db/schema.js +172 -0
  131. package/dist/esm/sessions/in_memory_session_service.js +61 -33
  132. package/dist/esm/sessions/registry.js +25 -0
  133. package/dist/esm/telemetry/google_cloud.js +7 -9
  134. package/dist/esm/telemetry/setup.js +23 -9
  135. package/dist/esm/telemetry/tracing.js +37 -15
  136. package/dist/esm/tools/agent_tool.js +8 -4
  137. package/dist/esm/tools/base_tool.js +4 -2
  138. package/dist/esm/tools/forwarding_artifact_service.js +17 -1
  139. package/dist/esm/tools/function_tool.js +1 -2
  140. package/dist/esm/tools/google_search_tool.js +2 -5
  141. package/dist/esm/tools/long_running_tool.js +3 -1
  142. package/dist/esm/tools/mcp/mcp_session_manager.js +22 -12
  143. package/dist/esm/tools/mcp/mcp_tool.js +1 -3
  144. package/dist/esm/tools/mcp/mcp_toolset.js +1 -1
  145. package/dist/esm/utils/env_aware_utils.js +9 -1
  146. package/dist/esm/utils/gemini_schema_util.js +9 -4
  147. package/dist/esm/utils/logger.js +43 -2
  148. package/dist/esm/utils/object_notation_utils.js +47 -0
  149. package/dist/esm/utils/simple_zod_to_json.js +102 -141
  150. package/dist/esm/utils/variant_utils.js +1 -7
  151. package/dist/esm/version.js +1 -1
  152. package/dist/types/a2a/part_converter_utils.d.ts +47 -0
  153. package/dist/types/agents/base_agent.d.ts +2 -1
  154. package/dist/types/agents/callback_context.d.ts +1 -1
  155. package/dist/types/agents/llm_agent.d.ts +12 -12
  156. package/dist/types/agents/loop_agent.d.ts +1 -1
  157. package/dist/types/agents/parallel_agent.d.ts +1 -1
  158. package/dist/types/agents/readonly_context.d.ts +8 -0
  159. package/dist/types/agents/run_config.d.ts +6 -0
  160. package/dist/types/artifacts/base_artifact_service.d.ts +31 -0
  161. package/dist/types/artifacts/file_artifact_service.d.ts +43 -0
  162. package/dist/types/artifacts/gcs_artifact_service.d.ts +3 -1
  163. package/dist/types/artifacts/in_memory_artifact_service.d.ts +8 -5
  164. package/dist/types/artifacts/registry.d.ts +7 -0
  165. package/dist/types/code_executors/built_in_code_executor.d.ts +1 -1
  166. package/dist/types/code_executors/code_executor_context.d.ts +2 -4
  167. package/dist/types/common.d.ts +13 -3
  168. package/dist/types/events/event.d.ts +15 -1
  169. package/dist/types/events/event_actions.d.ts +1 -1
  170. package/dist/types/events/structured_events.d.ts +106 -0
  171. package/dist/types/index.d.ts +7 -3
  172. package/dist/types/models/apigee_llm.d.ts +59 -0
  173. package/dist/types/models/base_llm_connection.d.ts +1 -1
  174. package/dist/types/models/google_llm.d.ts +5 -2
  175. package/dist/types/models/llm_response.d.ts +1 -1
  176. package/dist/types/plugins/logging_plugin.d.ts +12 -12
  177. package/dist/types/plugins/plugin_manager.d.ts +12 -12
  178. package/dist/types/plugins/security_plugin.d.ts +1 -1
  179. package/dist/types/runner/runner.d.ts +16 -1
  180. package/dist/types/sessions/base_session_service.d.ts +20 -0
  181. package/dist/types/sessions/database_session_service.d.ts +31 -0
  182. package/dist/types/sessions/db/operations.d.ts +29 -0
  183. package/dist/types/sessions/db/schema.d.ts +45 -0
  184. package/dist/types/sessions/in_memory_session_service.d.ts +9 -6
  185. package/dist/types/sessions/registry.d.ts +7 -0
  186. package/dist/types/telemetry/setup.d.ts +1 -1
  187. package/dist/types/telemetry/tracing.d.ts +7 -6
  188. package/dist/types/tools/agent_tool.d.ts +1 -1
  189. package/dist/types/tools/base_tool.d.ts +1 -1
  190. package/dist/types/tools/base_toolset.d.ts +2 -1
  191. package/dist/types/tools/forwarding_artifact_service.d.ts +4 -2
  192. package/dist/types/tools/function_tool.d.ts +4 -3
  193. package/dist/types/tools/google_search_tool.d.ts +3 -3
  194. package/dist/types/tools/mcp/mcp_session_manager.d.ts +10 -3
  195. package/dist/types/tools/mcp/mcp_toolset.d.ts +1 -2
  196. package/dist/types/utils/env_aware_utils.d.ts +7 -0
  197. package/dist/types/utils/gemini_schema_util.d.ts +4 -12
  198. package/dist/types/utils/logger.d.ts +11 -10
  199. package/dist/types/utils/object_notation_utils.d.ts +21 -0
  200. package/dist/types/utils/simple_zod_to_json.d.ts +5 -4
  201. package/dist/types/version.d.ts +1 -1
  202. package/dist/web/a2a/part_converter_utils.js +171 -0
  203. package/dist/web/agents/base_agent.js +96 -35
  204. package/dist/web/agents/callback_context.js +4 -1
  205. package/dist/web/agents/content_processor_utils.js +25 -9
  206. package/dist/web/agents/functions.js +84 -29
  207. package/dist/web/agents/llm_agent.js +166 -83
  208. package/dist/web/agents/loop_agent.js +2 -1
  209. package/dist/web/agents/parallel_agent.js +3 -4
  210. package/dist/web/agents/readonly_context.js +12 -0
  211. package/dist/web/agents/run_config.js +2 -1
  212. package/dist/web/artifacts/file_artifact_service.js +506 -0
  213. package/dist/web/artifacts/gcs_artifact_service.js +139 -54
  214. package/dist/web/artifacts/in_memory_artifact_service.js +69 -8
  215. package/dist/web/artifacts/registry.js +28 -0
  216. package/dist/web/auth/auth_handler.js +3 -1
  217. package/dist/web/code_executors/base_code_executor.js +3 -1
  218. package/dist/web/code_executors/built_in_code_executor.js +7 -3
  219. package/dist/web/code_executors/code_executor_context.js +5 -5
  220. package/dist/web/common.js +12 -2
  221. package/dist/web/events/event.js +30 -5
  222. package/dist/web/events/event_actions.js +1 -1
  223. package/dist/web/events/structured_events.js +74 -0
  224. package/dist/web/index.js +18 -8
  225. package/dist/web/memory/in_memory_memory_service.js +3 -1
  226. package/dist/web/models/apigee_llm.js +219 -0
  227. package/dist/web/models/base_llm.js +8 -4
  228. package/dist/web/models/gemini_llm_connection.js +1 -0
  229. package/dist/web/models/google_llm.js +75 -50
  230. package/dist/web/models/registry.js +2 -0
  231. package/dist/web/plugins/base_plugin.js +12 -0
  232. package/dist/web/plugins/logging_plugin.js +55 -14
  233. package/dist/web/plugins/plugin_manager.js +56 -24
  234. package/dist/web/plugins/security_plugin.js +1 -1
  235. package/dist/web/runner/runner.js +192 -108
  236. package/dist/web/sessions/base_session_service.js +49 -1
  237. package/dist/web/sessions/database_session_service.js +368 -0
  238. package/dist/web/sessions/db/operations.js +87 -0
  239. package/dist/web/sessions/db/schema.js +172 -0
  240. package/dist/web/sessions/in_memory_session_service.js +61 -33
  241. package/dist/web/sessions/registry.js +25 -0
  242. package/dist/web/telemetry/google_cloud.js +7 -9
  243. package/dist/web/telemetry/setup.js +23 -9
  244. package/dist/web/telemetry/tracing.js +37 -15
  245. package/dist/web/tools/agent_tool.js +8 -4
  246. package/dist/web/tools/base_tool.js +4 -2
  247. package/dist/web/tools/forwarding_artifact_service.js +17 -1
  248. package/dist/web/tools/function_tool.js +1 -2
  249. package/dist/web/tools/google_search_tool.js +2 -5
  250. package/dist/web/tools/long_running_tool.js +3 -1
  251. package/dist/web/tools/mcp/mcp_session_manager.js +22 -12
  252. package/dist/web/tools/mcp/mcp_tool.js +1 -3
  253. package/dist/web/tools/mcp/mcp_toolset.js +1 -1
  254. package/dist/web/utils/env_aware_utils.js +9 -1
  255. package/dist/web/utils/gemini_schema_util.js +9 -4
  256. package/dist/web/utils/logger.js +43 -2
  257. package/dist/web/utils/object_notation_utils.js +47 -0
  258. package/dist/web/utils/simple_zod_to_json.js +102 -155
  259. package/dist/web/utils/variant_utils.js +1 -7
  260. package/dist/web/version.js +1 -1
  261. package/package.json +16 -5
  262. package/dist/cjs/index.js.map +0 -7
  263. package/dist/esm/index.js.map +0 -7
  264. package/dist/web/index.js.map +0 -7
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @license
3
- * Copyright 2025 Google LLC
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(getFileName({
45
- ...request,
46
- version
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(JSON.stringify(request.artifact.inlineData.data), {
50
- contentType: request.artifact.inlineData.mimeType
51
- });
52
- return version;
53
- }
54
- if (request.artifact.text) {
55
- await file.save(request.artifact.text, {
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
- throw new Error("Artifact must have either inlineData or text.");
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
- let version = request.version;
64
- if (version === void 0) {
65
- const versions = await this.listVersions(request);
66
- if (versions.length === 0) {
67
- return void 0;
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
- version = Math.max(...versions);
70
- }
71
- const file = this.bucket.file(getFileName({
72
- ...request,
73
- version
74
- }));
75
- const [[metadata], [rawDataBuffer]] = await Promise.all([file.getMetadata(), file.download()]);
76
- if (metadata.contentType === "text/plain") {
77
- return (0, import_genai.createPartFromText)(rawDataBuffer.toString("utf-8"));
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
- for (const file of sessionFiles) {
96
- fileNames.push(file.name.split("/").pop());
97
- }
98
- for (const file of userSessionFiles) {
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(versions.map((version) => {
106
- const file = this.bucket.file(getFileName({
107
- ...request,
108
- version
109
- }));
110
- return file.delete();
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 [files] = await this.bucket.getFiles({ prefix });
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
- versions.push(parseInt(version, 10));
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
- if (filename.startsWith("user:")) {
133
- return `${appName}/${userId}/user/${filename}/${version}`;
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 `${appName}/${userId}/${sessionId}/${filename}/${version}`;
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 2025 Google LLC
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
- this.artifacts[path].push(artifact);
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({ appName, userId, sessionId }) {
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({ appName, userId, sessionId, filename }) {
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({ appName, userId, sessionId, filename }) {
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
- let versions = [];
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 2025 Google LLC
3
+ * Copyright 2026 Google LLC
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @license
3
- * Copyright 2025 Google LLC
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(`Auth Scheme ${authSchemeType} requires both clientId and clientSecret in authCredential.oauth2.`);
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 2025 Google LLC
3
+ * Copyright 2026 Google LLC
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @license
3
- * Copyright 2025 Google LLC
3
+ * Copyright 2026 Google LLC
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @license
3
- * Copyright 2025 Google LLC
3
+ * Copyright 2026 Google LLC
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @license
3
- * Copyright 2025 Google LLC
3
+ * Copyright 2026 Google LLC
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @license
3
- * Copyright 2025 Google LLC
3
+ * Copyright 2026 Google LLC
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @license
3
- * Copyright 2025 Google LLC
3
+ * Copyright 2026 Google LLC
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @license
3
- * Copyright 2025 Google LLC
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("google.adk.baseCodeExecutor");
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 2025 Google LLC
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("google.adk.builtInCodeExecutor");
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(params) {
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(`Gemini code execution tool is not supported for model ${llmRequest.model}`);
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 2025 Google LLC
3
+ * Copyright 2026 Google LLC
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @license
3
- * Copyright 2025 Google LLC
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(CODE_EXECUTION_RESULTS_KEY);
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 executor context from the session state.
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(invocationId) {
191
+ getCodeExecutionContext() {
192
192
  return this.sessionState.get(CONTEXT_KEY) || {};
193
193
  }
194
194
  }