@google/adk 0.3.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (265) hide show
  1. package/dist/cjs/a2a/a2a_event.js +290 -0
  2. package/dist/cjs/a2a/event_converter_utils.js +201 -0
  3. package/dist/cjs/a2a/executor_context.js +53 -0
  4. package/dist/cjs/a2a/metadata_converter_utils.js +125 -0
  5. package/dist/cjs/a2a/part_converter_utils.js +212 -0
  6. package/dist/cjs/agents/active_streaming_tool.js +1 -1
  7. package/dist/cjs/agents/base_agent.js +6 -6
  8. package/dist/cjs/agents/content_processor_utils.js +1 -1
  9. package/dist/cjs/{tools/tool_context.js → agents/context.js} +71 -16
  10. package/dist/cjs/agents/functions.js +4 -3
  11. package/dist/cjs/agents/instructions.js +1 -1
  12. package/dist/cjs/agents/invocation_context.js +1 -1
  13. package/dist/cjs/agents/live_request_queue.js +1 -1
  14. package/dist/cjs/agents/llm_agent.js +76 -711
  15. package/dist/cjs/agents/loop_agent.js +1 -1
  16. package/dist/cjs/agents/parallel_agent.js +1 -1
  17. package/dist/cjs/agents/processors/agent_transfer_llm_request_processor.js +132 -0
  18. package/dist/cjs/agents/{base_llm_processor.js → processors/base_llm_processor.js} +1 -1
  19. package/dist/cjs/agents/processors/basic_llm_request_processor.js +68 -0
  20. package/dist/cjs/agents/processors/code_execution_request_processor.js +389 -0
  21. package/dist/cjs/agents/processors/content_request_processor.js +66 -0
  22. package/dist/cjs/agents/processors/identity_llm_request_processor.js +54 -0
  23. package/dist/cjs/agents/processors/instructions_llm_request_processor.js +85 -0
  24. package/dist/cjs/agents/processors/request_confirmation_llm_request_processor.js +165 -0
  25. package/dist/cjs/agents/readonly_context.js +13 -1
  26. package/dist/cjs/agents/run_config.js +2 -1
  27. package/dist/cjs/agents/sequential_agent.js +1 -1
  28. package/dist/cjs/agents/transcription_entry.js +1 -1
  29. package/dist/cjs/artifacts/base_artifact_service.js +1 -1
  30. package/dist/cjs/artifacts/file_artifact_service.js +491 -0
  31. package/dist/cjs/artifacts/gcs_artifact_service.js +127 -48
  32. package/dist/cjs/artifacts/in_memory_artifact_service.js +54 -6
  33. package/dist/cjs/artifacts/registry.js +55 -0
  34. package/dist/cjs/auth/auth_credential.js +1 -1
  35. package/dist/cjs/auth/auth_handler.js +1 -1
  36. package/dist/cjs/auth/auth_schemes.js +1 -1
  37. package/dist/cjs/auth/auth_tool.js +1 -1
  38. package/dist/cjs/auth/credential_service/base_credential_service.js +1 -1
  39. package/dist/cjs/auth/credential_service/in_memory_credential_service.js +1 -1
  40. package/dist/cjs/auth/exchanger/base_credential_exchanger.js +1 -1
  41. package/dist/cjs/auth/exchanger/credential_exchanger_registry.js +1 -1
  42. package/dist/cjs/code_executors/base_code_executor.js +1 -1
  43. package/dist/cjs/code_executors/built_in_code_executor.js +1 -1
  44. package/dist/cjs/code_executors/code_execution_utils.js +1 -1
  45. package/dist/cjs/code_executors/code_executor_context.js +1 -1
  46. package/dist/cjs/common.js +25 -8
  47. package/dist/cjs/events/event.js +33 -4
  48. package/dist/cjs/events/event_actions.js +2 -2
  49. package/dist/cjs/events/structured_events.js +105 -0
  50. package/dist/cjs/examples/base_example_provider.js +1 -1
  51. package/dist/cjs/examples/example.js +1 -1
  52. package/dist/cjs/examples/example_util.js +1 -1
  53. package/dist/cjs/index.js +24 -17
  54. package/dist/cjs/index.js.map +4 -4
  55. package/dist/cjs/index_web.js +1 -1
  56. package/dist/cjs/memory/base_memory_service.js +1 -1
  57. package/dist/cjs/memory/in_memory_memory_service.js +1 -1
  58. package/dist/cjs/memory/memory_entry.js +1 -1
  59. package/dist/cjs/models/apigee_llm.js +182 -0
  60. package/dist/cjs/models/base_llm.js +1 -1
  61. package/dist/cjs/models/base_llm_connection.js +1 -1
  62. package/dist/cjs/models/gemini_llm_connection.js +1 -1
  63. package/dist/cjs/models/google_llm.js +70 -51
  64. package/dist/cjs/models/llm_request.js +1 -1
  65. package/dist/cjs/models/llm_response.js +3 -1
  66. package/dist/cjs/models/registry.js +3 -1
  67. package/dist/cjs/plugins/base_plugin.js +2 -2
  68. package/dist/cjs/plugins/logging_plugin.js +1 -1
  69. package/dist/cjs/plugins/plugin_manager.js +1 -1
  70. package/dist/cjs/plugins/security_plugin.js +1 -1
  71. package/dist/cjs/runner/in_memory_runner.js +1 -1
  72. package/dist/cjs/runner/runner.js +33 -2
  73. package/dist/cjs/sessions/base_session_service.js +53 -3
  74. package/dist/cjs/sessions/database_session_service.js +367 -0
  75. package/dist/cjs/sessions/db/operations.js +126 -0
  76. package/dist/cjs/sessions/db/schema.js +204 -0
  77. package/dist/cjs/sessions/in_memory_session_service.js +24 -22
  78. package/dist/cjs/sessions/registry.js +49 -0
  79. package/dist/cjs/sessions/session.js +1 -1
  80. package/dist/cjs/sessions/state.js +1 -1
  81. package/dist/cjs/telemetry/google_cloud.js +1 -1
  82. package/dist/cjs/telemetry/setup.js +1 -1
  83. package/dist/cjs/telemetry/tracing.js +1 -1
  84. package/dist/cjs/tools/agent_tool.js +1 -1
  85. package/dist/cjs/tools/base_tool.js +4 -1
  86. package/dist/cjs/tools/base_toolset.js +14 -4
  87. package/dist/cjs/tools/exit_loop_tool.js +63 -0
  88. package/dist/cjs/tools/forwarding_artifact_service.js +17 -1
  89. package/dist/cjs/tools/function_tool.js +1 -1
  90. package/dist/cjs/tools/google_search_tool.js +1 -1
  91. package/dist/cjs/tools/long_running_tool.js +1 -1
  92. package/dist/cjs/tools/mcp/mcp_session_manager.js +1 -1
  93. package/dist/cjs/tools/mcp/mcp_tool.js +1 -1
  94. package/dist/cjs/tools/mcp/mcp_toolset.js +10 -6
  95. package/dist/cjs/tools/tool_confirmation.js +1 -1
  96. package/dist/cjs/utils/client_labels.js +1 -1
  97. package/dist/cjs/utils/env_aware_utils.js +10 -1
  98. package/dist/cjs/utils/gemini_schema_util.js +1 -1
  99. package/dist/cjs/utils/logger.js +62 -55
  100. package/dist/cjs/utils/model_name.js +1 -1
  101. package/dist/cjs/utils/object_notation_utils.js +78 -0
  102. package/dist/cjs/utils/simple_zod_to_json.js +1 -1
  103. package/dist/cjs/utils/variant_utils.js +3 -9
  104. package/dist/cjs/version.js +2 -2
  105. package/dist/esm/a2a/a2a_event.js +243 -0
  106. package/dist/esm/a2a/event_converter_utils.js +187 -0
  107. package/dist/esm/a2a/executor_context.js +23 -0
  108. package/dist/esm/a2a/metadata_converter_utils.js +90 -0
  109. package/dist/esm/a2a/part_converter_utils.js +175 -0
  110. package/dist/esm/agents/base_agent.js +5 -5
  111. package/dist/esm/{tools/tool_context.js → agents/context.js} +66 -11
  112. package/dist/esm/agents/functions.js +3 -2
  113. package/dist/esm/agents/llm_agent.js +69 -720
  114. package/dist/esm/agents/processors/agent_transfer_llm_request_processor.js +101 -0
  115. package/dist/esm/agents/processors/basic_llm_request_processor.js +37 -0
  116. package/dist/esm/agents/processors/code_execution_request_processor.js +363 -0
  117. package/dist/esm/agents/processors/content_request_processor.js +38 -0
  118. package/dist/esm/agents/processors/identity_llm_request_processor.js +23 -0
  119. package/dist/esm/agents/processors/instructions_llm_request_processor.js +54 -0
  120. package/dist/esm/agents/processors/request_confirmation_llm_request_processor.js +140 -0
  121. package/dist/esm/agents/readonly_context.js +12 -0
  122. package/dist/esm/agents/run_config.js +1 -0
  123. package/dist/esm/artifacts/file_artifact_service.js +451 -0
  124. package/dist/esm/artifacts/gcs_artifact_service.js +126 -47
  125. package/dist/esm/artifacts/in_memory_artifact_service.js +51 -4
  126. package/dist/esm/artifacts/registry.js +28 -0
  127. package/dist/esm/common.js +20 -10
  128. package/dist/esm/events/event.js +29 -2
  129. package/dist/esm/events/event_actions.js +1 -1
  130. package/dist/esm/events/structured_events.js +74 -0
  131. package/dist/esm/index.js +24 -17
  132. package/dist/esm/index.js.map +4 -4
  133. package/dist/esm/models/apigee_llm.js +152 -0
  134. package/dist/esm/models/google_llm.js +67 -49
  135. package/dist/esm/models/llm_response.js +2 -0
  136. package/dist/esm/models/registry.js +2 -0
  137. package/dist/esm/plugins/base_plugin.js +1 -1
  138. package/dist/esm/runner/runner.js +32 -1
  139. package/dist/esm/sessions/base_session_service.js +49 -1
  140. package/dist/esm/sessions/database_session_service.js +353 -0
  141. package/dist/esm/sessions/db/operations.js +111 -0
  142. package/dist/esm/sessions/db/schema.js +172 -0
  143. package/dist/esm/sessions/in_memory_session_service.js +23 -21
  144. package/dist/esm/sessions/registry.js +25 -0
  145. package/dist/esm/tools/base_tool.js +3 -0
  146. package/dist/esm/tools/base_toolset.js +11 -2
  147. package/dist/esm/tools/exit_loop_tool.js +32 -0
  148. package/dist/esm/tools/forwarding_artifact_service.js +16 -0
  149. package/dist/esm/tools/mcp/mcp_toolset.js +9 -5
  150. package/dist/esm/utils/env_aware_utils.js +8 -0
  151. package/dist/esm/utils/logger.js +51 -54
  152. package/dist/esm/utils/object_notation_utils.js +47 -0
  153. package/dist/esm/utils/variant_utils.js +1 -7
  154. package/dist/esm/version.js +1 -1
  155. package/dist/types/a2a/a2a_event.d.ts +122 -0
  156. package/dist/types/a2a/event_converter_utils.d.ts +20 -0
  157. package/dist/types/a2a/executor_context.d.ts +33 -0
  158. package/dist/types/a2a/metadata_converter_utils.d.ts +62 -0
  159. package/dist/types/a2a/part_converter_utils.d.ts +48 -0
  160. package/dist/types/agents/base_agent.d.ts +2 -2
  161. package/dist/types/{tools/tool_context.d.ts → agents/context.d.ts} +43 -8
  162. package/dist/types/agents/llm_agent.d.ts +19 -42
  163. package/dist/types/agents/processors/agent_transfer_llm_request_processor.d.ts +18 -0
  164. package/dist/types/agents/{base_llm_processor.d.ts → processors/base_llm_processor.d.ts} +4 -4
  165. package/dist/types/agents/processors/basic_llm_request_processor.d.ts +13 -0
  166. package/dist/types/agents/processors/code_execution_request_processor.d.ts +34 -0
  167. package/dist/types/agents/processors/content_request_processor.d.ts +13 -0
  168. package/dist/types/agents/processors/identity_llm_request_processor.d.ts +13 -0
  169. package/dist/types/agents/processors/instructions_llm_request_processor.d.ts +16 -0
  170. package/dist/types/agents/processors/request_confirmation_llm_request_processor.d.ts +13 -0
  171. package/dist/types/agents/readonly_context.d.ts +8 -0
  172. package/dist/types/agents/run_config.d.ts +6 -0
  173. package/dist/types/artifacts/base_artifact_service.d.ts +31 -0
  174. package/dist/types/artifacts/file_artifact_service.d.ts +43 -0
  175. package/dist/types/artifacts/gcs_artifact_service.d.ts +3 -1
  176. package/dist/types/artifacts/in_memory_artifact_service.d.ts +5 -2
  177. package/dist/types/artifacts/registry.d.ts +7 -0
  178. package/dist/types/auth/credential_service/base_credential_service.d.ts +3 -3
  179. package/dist/types/auth/credential_service/in_memory_credential_service.d.ts +3 -3
  180. package/dist/types/common.d.ts +15 -6
  181. package/dist/types/events/event.d.ts +15 -1
  182. package/dist/types/events/event_actions.d.ts +1 -1
  183. package/dist/types/events/structured_events.d.ts +106 -0
  184. package/dist/types/index.d.ts +5 -1
  185. package/dist/types/models/apigee_llm.d.ts +59 -0
  186. package/dist/types/models/google_llm.d.ts +5 -2
  187. package/dist/types/models/llm_response.d.ts +5 -1
  188. package/dist/types/plugins/base_plugin.d.ts +12 -13
  189. package/dist/types/plugins/logging_plugin.d.ts +9 -10
  190. package/dist/types/plugins/plugin_manager.d.ts +9 -10
  191. package/dist/types/plugins/security_plugin.d.ts +2 -2
  192. package/dist/types/runner/runner.d.ts +15 -0
  193. package/dist/types/sessions/base_session_service.d.ts +20 -0
  194. package/dist/types/sessions/database_session_service.d.ts +32 -0
  195. package/dist/types/sessions/db/operations.d.ts +29 -0
  196. package/dist/types/sessions/db/schema.d.ts +45 -0
  197. package/dist/types/sessions/in_memory_session_service.d.ts +4 -1
  198. package/dist/types/sessions/registry.d.ts +7 -0
  199. package/dist/types/tools/base_tool.d.ts +3 -3
  200. package/dist/types/tools/base_toolset.d.ts +12 -3
  201. package/dist/types/tools/exit_loop_tool.d.ts +24 -0
  202. package/dist/types/tools/forwarding_artifact_service.d.ts +5 -3
  203. package/dist/types/tools/function_tool.d.ts +2 -2
  204. package/dist/types/tools/mcp/mcp_toolset.d.ts +1 -1
  205. package/dist/types/utils/env_aware_utils.d.ts +7 -0
  206. package/dist/types/utils/logger.d.ts +5 -9
  207. package/dist/types/utils/object_notation_utils.d.ts +21 -0
  208. package/dist/types/version.d.ts +1 -1
  209. package/dist/web/a2a/a2a_event.js +243 -0
  210. package/dist/web/a2a/event_converter_utils.js +201 -0
  211. package/dist/web/a2a/executor_context.js +23 -0
  212. package/dist/web/a2a/metadata_converter_utils.js +107 -0
  213. package/dist/web/a2a/part_converter_utils.js +175 -0
  214. package/dist/web/agents/base_agent.js +5 -5
  215. package/dist/web/{tools/tool_context.js → agents/context.js} +66 -11
  216. package/dist/web/agents/functions.js +3 -2
  217. package/dist/web/agents/llm_agent.js +90 -717
  218. package/dist/web/agents/processors/agent_transfer_llm_request_processor.js +100 -0
  219. package/dist/web/agents/processors/basic_llm_request_processor.js +71 -0
  220. package/dist/web/agents/processors/code_execution_request_processor.js +365 -0
  221. package/dist/web/agents/processors/content_request_processor.js +56 -0
  222. package/dist/web/agents/processors/identity_llm_request_processor.js +41 -0
  223. package/dist/web/agents/processors/instructions_llm_request_processor.js +72 -0
  224. package/dist/web/agents/processors/request_confirmation_llm_request_processor.js +158 -0
  225. package/dist/web/agents/readonly_context.js +12 -0
  226. package/dist/web/agents/run_config.js +2 -1
  227. package/dist/web/artifacts/file_artifact_service.js +506 -0
  228. package/dist/web/artifacts/gcs_artifact_service.js +123 -46
  229. package/dist/web/artifacts/in_memory_artifact_service.js +51 -4
  230. package/dist/web/artifacts/registry.js +28 -0
  231. package/dist/web/common.js +20 -10
  232. package/dist/web/events/event.js +29 -2
  233. package/dist/web/events/event_actions.js +1 -1
  234. package/dist/web/events/structured_events.js +74 -0
  235. package/dist/web/index.js +7 -2
  236. package/dist/web/index.js.map +4 -4
  237. package/dist/web/models/apigee_llm.js +219 -0
  238. package/dist/web/models/google_llm.js +67 -46
  239. package/dist/web/models/llm_response.js +2 -0
  240. package/dist/web/models/registry.js +2 -0
  241. package/dist/web/plugins/base_plugin.js +1 -1
  242. package/dist/web/runner/runner.js +34 -1
  243. package/dist/web/sessions/base_session_service.js +49 -1
  244. package/dist/web/sessions/database_session_service.js +371 -0
  245. package/dist/web/sessions/db/operations.js +111 -0
  246. package/dist/web/sessions/db/schema.js +172 -0
  247. package/dist/web/sessions/in_memory_session_service.js +23 -21
  248. package/dist/web/sessions/registry.js +25 -0
  249. package/dist/web/tools/base_tool.js +3 -0
  250. package/dist/web/tools/base_toolset.js +11 -2
  251. package/dist/web/tools/exit_loop_tool.js +32 -0
  252. package/dist/web/tools/forwarding_artifact_service.js +16 -0
  253. package/dist/web/tools/mcp/mcp_toolset.js +27 -5
  254. package/dist/web/utils/env_aware_utils.js +8 -0
  255. package/dist/web/utils/logger.js +51 -54
  256. package/dist/web/utils/object_notation_utils.js +47 -0
  257. package/dist/web/utils/variant_utils.js +1 -7
  258. package/dist/web/version.js +1 -1
  259. package/package.json +13 -3
  260. package/dist/cjs/agents/callback_context.js +0 -101
  261. package/dist/esm/agents/callback_context.js +0 -71
  262. package/dist/types/agents/callback_context.d.ts +0 -42
  263. package/dist/web/agents/callback_context.js +0 -71
  264. /package/dist/esm/agents/{base_llm_processor.js → processors/base_llm_processor.js} +0 -0
  265. /package/dist/web/agents/{base_llm_processor.js → processors/base_llm_processor.js} +0 -0
@@ -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,6 +40,9 @@ 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
48
  const file = this.bucket.file(
@@ -47,62 +51,69 @@ class GcsArtifactService {
47
51
  version
48
52
  })
49
53
  );
54
+ const metadata = request.customMetadata || {};
50
55
  if (request.artifact.inlineData) {
51
- await file.save(JSON.stringify(request.artifact.inlineData.data), {
52
- contentType: request.artifact.inlineData.mimeType
53
- });
54
- return version;
55
- }
56
- if (request.artifact.text) {
57
- await file.save(request.artifact.text, {
58
- contentType: "text/plain"
59
- });
56
+ await file.save(
57
+ Buffer.from(request.artifact.inlineData.data || "", "base64"),
58
+ {
59
+ contentType: request.artifact.inlineData.mimeType,
60
+ metadata
61
+ }
62
+ );
60
63
  return version;
61
64
  }
62
- 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;
63
70
  }
64
71
  async loadArtifact(request) {
65
- let version = request.version;
66
- if (version === void 0) {
67
- const versions = await this.listVersions(request);
68
- if (versions.length === 0) {
69
- 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);
70
80
  }
71
- version = Math.max(...versions);
72
- }
73
- const file = this.bucket.file(
74
- getFileName({
75
- ...request,
76
- version
77
- })
78
- );
79
- const [[metadata], [rawDataBuffer]] = await Promise.all([
80
- file.getMetadata(),
81
- file.download()
82
- ]);
83
- if (metadata.contentType === "text/plain") {
84
- 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;
85
104
  }
86
- return (0, import_genai.createPartFromBase64)(
87
- rawDataBuffer.toString("base64"),
88
- metadata.contentType
89
- );
90
105
  }
91
106
  async listArtifactKeys(request) {
92
- const fileNames = [];
93
107
  const sessionPrefix = `${request.appName}/${request.userId}/${request.sessionId}/`;
94
108
  const usernamePrefix = `${request.appName}/${request.userId}/user/`;
95
109
  const [[sessionFiles], [userSessionFiles]] = await Promise.all([
96
110
  this.bucket.getFiles({ prefix: sessionPrefix }),
97
111
  this.bucket.getFiles({ prefix: usernamePrefix })
98
112
  ]);
99
- for (const file of sessionFiles) {
100
- fileNames.push(file.name.split("/").pop());
101
- }
102
- for (const file of userSessionFiles) {
103
- fileNames.push(file.name.split("/").pop());
104
- }
105
- 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));
106
117
  }
107
118
  async deleteArtifact(request) {
108
119
  const versions = await this.listVersions(request);
@@ -121,13 +132,62 @@ class GcsArtifactService {
121
132
  }
122
133
  async listVersions(request) {
123
134
  const prefix = getFileName(request);
124
- const [files] = await this.bucket.getFiles({ prefix });
135
+ const searchPrefix = prefix + "/";
136
+ const [files] = await this.bucket.getFiles({ prefix: searchPrefix });
125
137
  const versions = [];
126
138
  for (const file of files) {
127
139
  const version = file.name.split("/").pop();
128
- 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;
129
190
  }
130
- return versions;
131
191
  }
132
192
  }
133
193
  function getFileName({
@@ -137,10 +197,29 @@ function getFileName({
137
197
  filename,
138
198
  version
139
199
  }) {
140
- if (filename.startsWith("user:")) {
141
- 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;
142
221
  }
143
- return `${appName}/${userId}/${sessionId}/${filename}/${version}`;
222
+ return parts.slice(0, -1).join("/");
144
223
  }
145
224
  // Annotate the CommonJS export names for ESM import in node:
146
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,7 +80,7 @@ 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
85
  listArtifactKeys({
72
86
  appName,
@@ -117,6 +131,39 @@ class InMemoryArtifactService {
117
131
  }
118
132
  return Promise.resolve(versions);
119
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
+ }
120
167
  }
121
168
  function artifactPath(appName, userId, sessionId, filename) {
122
169
  if (fileHasUserNamespace(filename)) {
@@ -129,5 +176,6 @@ function fileHasUserNamespace(filename) {
129
176
  }
130
177
  // Annotate the CommonJS export names for ESM import in node:
131
178
  0 && (module.exports = {
132
- InMemoryArtifactService
179
+ InMemoryArtifactService,
180
+ isInMemoryConnectionString
133
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
 
@@ -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
 
@@ -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
 
@@ -27,6 +27,7 @@ var common_exports = {};
27
27
  __export(common_exports, {
28
28
  ActiveStreamingTool: () => import_active_streaming_tool.ActiveStreamingTool,
29
29
  AgentTool: () => import_agent_tool.AgentTool,
30
+ ApigeeLlm: () => import_apigee_llm.ApigeeLlm,
30
31
  AuthCredentialTypes: () => import_auth_credential.AuthCredentialTypes,
31
32
  BaseAgent: () => import_base_agent.BaseAgent,
32
33
  BaseCodeExecutor: () => import_base_code_executor.BaseCodeExecutor,
@@ -35,10 +36,14 @@ __export(common_exports, {
35
36
  BaseLlmRequestProcessor: () => import_base_llm_processor.BaseLlmRequestProcessor,
36
37
  BaseLlmResponseProcessor: () => import_base_llm_processor.BaseLlmResponseProcessor,
37
38
  BasePlugin: () => import_base_plugin.BasePlugin,
39
+ BaseSessionService: () => import_base_session_service.BaseSessionService,
38
40
  BaseTool: () => import_base_tool.BaseTool,
39
41
  BaseToolset: () => import_base_toolset.BaseToolset,
40
42
  BuiltInCodeExecutor: () => import_built_in_code_executor.BuiltInCodeExecutor,
41
- CallbackContext: () => import_callback_context.CallbackContext,
43
+ Context: () => import_context.Context,
44
+ EXIT_LOOP: () => import_exit_loop_tool.EXIT_LOOP,
45
+ EventType: () => import_structured_events.EventType,
46
+ ExitLoopTool: () => import_exit_loop_tool.ExitLoopTool,
42
47
  FunctionTool: () => import_function_tool.FunctionTool,
43
48
  GOOGLE_SEARCH: () => import_google_search_tool.GOOGLE_SEARCH,
44
49
  Gemini: () => import_google_llm.Gemini,
@@ -68,11 +73,11 @@ __export(common_exports, {
68
73
  State: () => import_state.State,
69
74
  StreamingMode: () => import_run_config.StreamingMode,
70
75
  ToolConfirmation: () => import_tool_confirmation.ToolConfirmation,
71
- ToolContext: () => import_tool_context.ToolContext,
72
76
  createEvent: () => import_event.createEvent,
73
77
  createEventActions: () => import_event_actions.createEventActions,
74
78
  createSession: () => import_session.createSession,
75
79
  functionsExportedForTestingOnly: () => import_functions.functionsExportedForTestingOnly,
80
+ geminiInitParams: () => import_google_llm.geminiInitParams,
76
81
  getAskUserConfirmationFunctionCalls: () => import_security_plugin.getAskUserConfirmationFunctionCalls,
77
82
  getFunctionCalls: () => import_event.getFunctionCalls,
78
83
  getFunctionResponses: () => import_event.getFunctionResponses,
@@ -83,6 +88,7 @@ __export(common_exports, {
83
88
  isBaseExampleProvider: () => import_base_example_provider.isBaseExampleProvider,
84
89
  isBaseLlm: () => import_base_llm.isBaseLlm,
85
90
  isBaseTool: () => import_base_tool.isBaseTool,
91
+ isBaseToolset: () => import_base_toolset.isBaseToolset,
86
92
  isFinalResponse: () => import_event.isFinalResponse,
87
93
  isFunctionTool: () => import_function_tool.isFunctionTool,
88
94
  isGemini2OrAbove: () => import_model_name.isGemini2OrAbove,
@@ -93,20 +99,21 @@ __export(common_exports, {
93
99
  setLogLevel: () => import_logger.setLogLevel,
94
100
  setLogger: () => import_logger.setLogger,
95
101
  stringifyContent: () => import_event.stringifyContent,
102
+ toStructuredEvents: () => import_structured_events.toStructuredEvents,
96
103
  version: () => import_version.version,
97
104
  zodObjectToSchema: () => import_simple_zod_to_json.zodObjectToSchema
98
105
  });
99
106
  module.exports = __toCommonJS(common_exports);
100
107
  var import_active_streaming_tool = require("./agents/active_streaming_tool.js");
101
108
  var import_base_agent = require("./agents/base_agent.js");
102
- var import_base_llm_processor = require("./agents/base_llm_processor.js");
103
- var import_callback_context = require("./agents/callback_context.js");
109
+ var import_context = require("./agents/context.js");
104
110
  var import_functions = require("./agents/functions.js");
105
111
  var import_invocation_context = require("./agents/invocation_context.js");
106
112
  var import_live_request_queue = require("./agents/live_request_queue.js");
107
113
  var import_llm_agent = require("./agents/llm_agent.js");
108
114
  var import_loop_agent = require("./agents/loop_agent.js");
109
115
  var import_parallel_agent = require("./agents/parallel_agent.js");
116
+ var import_base_llm_processor = require("./agents/processors/base_llm_processor.js");
110
117
  var import_readonly_context = require("./agents/readonly_context.js");
111
118
  var import_run_config = require("./agents/run_config.js");
112
119
  var import_sequential_agent = require("./agents/sequential_agent.js");
@@ -116,8 +123,10 @@ var import_base_code_executor = require("./code_executors/base_code_executor.js"
116
123
  var import_built_in_code_executor = require("./code_executors/built_in_code_executor.js");
117
124
  var import_event = require("./events/event.js");
118
125
  var import_event_actions = require("./events/event_actions.js");
126
+ var import_structured_events = require("./events/structured_events.js");
119
127
  var import_base_example_provider = require("./examples/base_example_provider.js");
120
128
  var import_in_memory_memory_service = require("./memory/in_memory_memory_service.js");
129
+ var import_apigee_llm = require("./models/apigee_llm.js");
121
130
  var import_base_llm = require("./models/base_llm.js");
122
131
  var import_google_llm = require("./models/google_llm.js");
123
132
  var import_registry = require("./models/registry.js");
@@ -127,17 +136,18 @@ var import_plugin_manager = require("./plugins/plugin_manager.js");
127
136
  var import_security_plugin = require("./plugins/security_plugin.js");
128
137
  var import_in_memory_runner = require("./runner/in_memory_runner.js");
129
138
  var import_runner = require("./runner/runner.js");
139
+ var import_base_session_service = require("./sessions/base_session_service.js");
130
140
  var import_in_memory_session_service = require("./sessions/in_memory_session_service.js");
131
141
  var import_session = require("./sessions/session.js");
132
142
  var import_state = require("./sessions/state.js");
133
143
  var import_agent_tool = require("./tools/agent_tool.js");
134
144
  var import_base_tool = require("./tools/base_tool.js");
135
145
  var import_base_toolset = require("./tools/base_toolset.js");
146
+ var import_exit_loop_tool = require("./tools/exit_loop_tool.js");
136
147
  var import_function_tool = require("./tools/function_tool.js");
137
148
  var import_google_search_tool = require("./tools/google_search_tool.js");
138
149
  var import_long_running_tool = require("./tools/long_running_tool.js");
139
150
  var import_tool_confirmation = require("./tools/tool_confirmation.js");
140
- var import_tool_context = require("./tools/tool_context.js");
141
151
  var import_logger = require("./utils/logger.js");
142
152
  var import_model_name = require("./utils/model_name.js");
143
153
  var import_simple_zod_to_json = require("./utils/simple_zod_to_json.js");
@@ -156,6 +166,7 @@ __reExport(common_exports, require("./tools/base_tool.js"), module.exports);
156
166
  0 && (module.exports = {
157
167
  ActiveStreamingTool,
158
168
  AgentTool,
169
+ ApigeeLlm,
159
170
  AuthCredentialTypes,
160
171
  BaseAgent,
161
172
  BaseCodeExecutor,
@@ -164,10 +175,14 @@ __reExport(common_exports, require("./tools/base_tool.js"), module.exports);
164
175
  BaseLlmRequestProcessor,
165
176
  BaseLlmResponseProcessor,
166
177
  BasePlugin,
178
+ BaseSessionService,
167
179
  BaseTool,
168
180
  BaseToolset,
169
181
  BuiltInCodeExecutor,
170
- CallbackContext,
182
+ Context,
183
+ EXIT_LOOP,
184
+ EventType,
185
+ ExitLoopTool,
171
186
  FunctionTool,
172
187
  GOOGLE_SEARCH,
173
188
  Gemini,
@@ -197,11 +212,11 @@ __reExport(common_exports, require("./tools/base_tool.js"), module.exports);
197
212
  State,
198
213
  StreamingMode,
199
214
  ToolConfirmation,
200
- ToolContext,
201
215
  createEvent,
202
216
  createEventActions,
203
217
  createSession,
204
218
  functionsExportedForTestingOnly,
219
+ geminiInitParams,
205
220
  getAskUserConfirmationFunctionCalls,
206
221
  getFunctionCalls,
207
222
  getFunctionResponses,
@@ -212,6 +227,7 @@ __reExport(common_exports, require("./tools/base_tool.js"), module.exports);
212
227
  isBaseExampleProvider,
213
228
  isBaseLlm,
214
229
  isBaseTool,
230
+ isBaseToolset,
215
231
  isFinalResponse,
216
232
  isFunctionTool,
217
233
  isGemini2OrAbove,
@@ -222,6 +238,7 @@ __reExport(common_exports, require("./tools/base_tool.js"), module.exports);
222
238
  setLogLevel,
223
239
  setLogger,
224
240
  stringifyContent,
241
+ toStructuredEvents,
225
242
  version,
226
243
  zodObjectToSchema,
227
244
  ...require("./artifacts/base_artifact_service.js"),