@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
@@ -7,10 +7,14 @@ import { cloneDeep } from "lodash-es";
7
7
  import { randomUUID } from "../utils/env_aware_utils.js";
8
8
  import { logger } from "../utils/logger.js";
9
9
  import {
10
- BaseSessionService
10
+ BaseSessionService,
11
+ mergeStates
11
12
  } from "./base_session_service.js";
12
13
  import { createSession } from "./session.js";
13
14
  import { State } from "./state.js";
15
+ function isInMemoryConnectionString(uri) {
16
+ return uri === "memory://";
17
+ }
14
18
  class InMemorySessionService extends BaseSessionService {
15
19
  constructor() {
16
20
  super(...arguments);
@@ -28,12 +32,13 @@ class InMemorySessionService extends BaseSessionService {
28
32
  */
29
33
  this.appState = {};
30
34
  }
31
- createSession({
35
+ async createSession({
32
36
  appName,
33
37
  userId,
34
38
  state,
35
39
  sessionId
36
40
  }) {
41
+ var _a;
37
42
  const session = createSession({
38
43
  id: sessionId || randomUUID(),
39
44
  appName,
@@ -49,16 +54,21 @@ class InMemorySessionService extends BaseSessionService {
49
54
  this.sessions[appName][userId] = {};
50
55
  }
51
56
  this.sessions[appName][userId][session.id] = session;
52
- return Promise.resolve(
53
- this.mergeState(appName, userId, cloneDeep(session))
57
+ const copiedSession = cloneDeep(session);
58
+ copiedSession.state = mergeStates(
59
+ this.appState[appName],
60
+ (_a = this.userState[appName]) == null ? void 0 : _a[userId],
61
+ copiedSession.state
54
62
  );
63
+ return copiedSession;
55
64
  }
56
- getSession({
65
+ async getSession({
57
66
  appName,
58
67
  userId,
59
68
  sessionId,
60
69
  config
61
70
  }) {
71
+ var _a;
62
72
  if (!this.sessions[appName] || !this.sessions[appName][userId] || !this.sessions[appName][userId][sessionId]) {
63
73
  return Promise.resolve(void 0);
64
74
  }
@@ -83,7 +93,12 @@ class InMemorySessionService extends BaseSessionService {
83
93
  }
84
94
  }
85
95
  }
86
- return Promise.resolve(this.mergeState(appName, userId, copiedSession));
96
+ copiedSession.state = mergeStates(
97
+ this.appState[appName],
98
+ (_a = this.userState[appName]) == null ? void 0 : _a[userId],
99
+ copiedSession.state
100
+ );
101
+ return copiedSession;
87
102
  }
88
103
  listSessions({
89
104
  appName,
@@ -160,21 +175,8 @@ class InMemorySessionService extends BaseSessionService {
160
175
  storageSession.lastUpdateTime = event.timestamp;
161
176
  return event;
162
177
  }
163
- mergeState(appName, userId, copiedSession) {
164
- if (this.appState[appName]) {
165
- for (const key of Object.keys(this.appState[appName])) {
166
- copiedSession.state[State.APP_PREFIX + key] = this.appState[appName][key];
167
- }
168
- }
169
- if (!this.userState[appName] || !this.userState[appName][userId]) {
170
- return copiedSession;
171
- }
172
- for (const key of Object.keys(this.userState[appName][userId])) {
173
- copiedSession.state[State.USER_PREFIX + key] = this.userState[appName][userId][key];
174
- }
175
- return copiedSession;
176
- }
177
178
  }
178
179
  export {
179
- InMemorySessionService
180
+ InMemorySessionService,
181
+ isInMemoryConnectionString
180
182
  };
@@ -0,0 +1,25 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import {
7
+ DatabaseSessionService,
8
+ isDatabaseConnectionString
9
+ } from "./database_session_service.js";
10
+ import {
11
+ InMemorySessionService,
12
+ isInMemoryConnectionString
13
+ } from "./in_memory_session_service.js";
14
+ function getSessionServiceFromUri(uri) {
15
+ if (isInMemoryConnectionString(uri)) {
16
+ return new InMemorySessionService();
17
+ }
18
+ if (isDatabaseConnectionString(uri)) {
19
+ return new DatabaseSessionService(uri);
20
+ }
21
+ throw new Error("Unsupported session service URI: ".concat(uri));
22
+ }
23
+ export {
24
+ getSessionServiceFromUri
25
+ };
@@ -54,6 +54,9 @@ class BaseTool {
54
54
  if (!functionDeclaration) {
55
55
  return;
56
56
  }
57
+ if (this.name in llmRequest.toolsDict) {
58
+ throw new Error("Duplicate tool name: ".concat(this.name));
59
+ }
57
60
  llmRequest.toolsDict[this.name] = this;
58
61
  const tool = findToolWithFunctionDeclarations(llmRequest);
59
62
  if (tool) {
@@ -3,9 +3,17 @@
3
3
  * Copyright 2025 Google LLC
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
+ var _a;
7
+ const BASE_TOOLSET_SIGNATURE_SYMBOL = Symbol.for("google.adk.baseToolset");
8
+ function isBaseToolset(obj) {
9
+ return typeof obj === "object" && obj !== null && BASE_TOOLSET_SIGNATURE_SYMBOL in obj && obj[BASE_TOOLSET_SIGNATURE_SYMBOL] === true;
10
+ }
11
+ _a = BASE_TOOLSET_SIGNATURE_SYMBOL;
6
12
  class BaseToolset {
7
- constructor(toolFilter) {
13
+ constructor(toolFilter, prefix) {
8
14
  this.toolFilter = toolFilter;
15
+ this.prefix = prefix;
16
+ this[_a] = true;
9
17
  }
10
18
  /**
11
19
  * Returns whether the tool should be exposed to LLM.
@@ -42,5 +50,6 @@ class BaseToolset {
42
50
  }
43
51
  }
44
52
  export {
45
- BaseToolset
53
+ BaseToolset,
54
+ isBaseToolset
46
55
  };
@@ -0,0 +1,32 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { BaseTool } from "./base_tool.js";
7
+ class ExitLoopTool extends BaseTool {
8
+ constructor() {
9
+ super({
10
+ name: "exit_loop",
11
+ description: "Exits the loop.\n\nCall this function only when you are instructed to do so."
12
+ });
13
+ }
14
+ _getDeclaration() {
15
+ return {
16
+ name: this.name,
17
+ description: this.description
18
+ };
19
+ }
20
+ async runAsync({
21
+ toolContext
22
+ }) {
23
+ toolContext.actions.escalate = true;
24
+ toolContext.actions.skipSummarization = true;
25
+ return "";
26
+ }
27
+ }
28
+ const EXIT_LOOP = new ExitLoopTool();
29
+ export {
30
+ EXIT_LOOP,
31
+ ExitLoopTool
32
+ };
@@ -35,6 +35,22 @@ class ForwardingArtifactService {
35
35
  request
36
36
  );
37
37
  }
38
+ listArtifactVersions(request) {
39
+ if (!this.toolContext.invocationContext.artifactService) {
40
+ throw new Error("Artifact service is not initialized.");
41
+ }
42
+ return this.toolContext.invocationContext.artifactService.listArtifactVersions(
43
+ request
44
+ );
45
+ }
46
+ getArtifactVersion(request) {
47
+ if (!this.toolContext.invocationContext.artifactService) {
48
+ throw new Error("Artifact service is not initialized.");
49
+ }
50
+ return this.toolContext.invocationContext.artifactService.getArtifactVersion(
51
+ request
52
+ );
53
+ }
38
54
  }
39
55
  export {
40
56
  ForwardingArtifactService
@@ -1,3 +1,22 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __defProps = Object.defineProperties;
3
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
4
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
7
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
8
+ var __spreadValues = (a, b) => {
9
+ for (var prop in b || (b = {}))
10
+ if (__hasOwnProp.call(b, prop))
11
+ __defNormalProp(a, prop, b[prop]);
12
+ if (__getOwnPropSymbols)
13
+ for (var prop of __getOwnPropSymbols(b)) {
14
+ if (__propIsEnum.call(b, prop))
15
+ __defNormalProp(a, prop, b[prop]);
16
+ }
17
+ return a;
18
+ };
19
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
1
20
  /**
2
21
  * @license
3
22
  * Copyright 2025 Google LLC
@@ -8,8 +27,8 @@ import { BaseToolset } from "../base_toolset.js";
8
27
  import { MCPSessionManager } from "./mcp_session_manager.js";
9
28
  import { MCPTool } from "./mcp_tool.js";
10
29
  class MCPToolset extends BaseToolset {
11
- constructor(connectionParams, toolFilter = []) {
12
- super(toolFilter);
30
+ constructor(connectionParams, toolFilter = [], prefix) {
31
+ super(toolFilter, prefix);
13
32
  this.mcpSessionManager = new MCPSessionManager(connectionParams);
14
33
  }
15
34
  async getTools() {
@@ -19,9 +38,12 @@ class MCPToolset extends BaseToolset {
19
38
  for (const tool of listResult.tools) {
20
39
  logger.debug("tool: ".concat(tool.name));
21
40
  }
22
- return listResult.tools.map(
23
- (tool) => new MCPTool(tool, this.mcpSessionManager)
24
- );
41
+ return listResult.tools.map((tool) => {
42
+ const toolWithPrefix = __spreadProps(__spreadValues({}, tool), {
43
+ name: this.prefix ? "".concat(this.prefix, "_").concat(tool.name) : tool.name
44
+ });
45
+ return new MCPTool(toolWithPrefix, this.mcpSessionManager);
46
+ });
25
47
  }
26
48
  async close() {
27
49
  }
@@ -40,9 +40,17 @@ function isBase64Encoded(data) {
40
40
  return false;
41
41
  }
42
42
  }
43
+ function getBooleanEnvVar(envVar) {
44
+ if (!process.env) {
45
+ return false;
46
+ }
47
+ const envVarValue = (process.env[envVar] || "").toLowerCase();
48
+ return ["true", "1"].includes(envVarValue);
49
+ }
43
50
  export {
44
51
  base64Decode,
45
52
  base64Encode,
53
+ getBooleanEnvVar,
46
54
  isBase64Encoded,
47
55
  isBrowser,
48
56
  randomUUID
@@ -3,6 +3,7 @@
3
3
  * Copyright 2025 Google LLC
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
+ import * as winston from "winston";
6
7
  var LogLevel = /* @__PURE__ */ ((LogLevel2) => {
7
8
  LogLevel2[LogLevel2["DEBUG"] = 0] = "DEBUG";
8
9
  LogLevel2[LogLevel2["INFO"] = 1] = "INFO";
@@ -10,58 +11,68 @@ var LogLevel = /* @__PURE__ */ ((LogLevel2) => {
10
11
  LogLevel2[LogLevel2["ERROR"] = 3] = "ERROR";
11
12
  return LogLevel2;
12
13
  })(LogLevel || {});
13
- let logLevel = 1 /* INFO */;
14
- function setLogLevel(level) {
15
- logLevel = level;
16
- }
17
14
  class SimpleLogger {
18
- log(level, ...args) {
19
- if (level < logLevel) {
15
+ constructor() {
16
+ this.logLevel = 1 /* INFO */;
17
+ this.logger = winston.createLogger({
18
+ levels: {
19
+ "debug": 0 /* DEBUG */,
20
+ "info": 1 /* INFO */,
21
+ "warn": 2 /* WARN */,
22
+ "error": 3 /* ERROR */
23
+ },
24
+ format: winston.format.combine(
25
+ winston.format.label({ label: "ADK" }),
26
+ winston.format((info) => {
27
+ info.level = info.level.toUpperCase();
28
+ return info;
29
+ })(),
30
+ winston.format.colorize(),
31
+ winston.format.timestamp(),
32
+ winston.format.printf((info) => {
33
+ return "".concat(info.level, ": [").concat(info.label, "] ").concat(info.timestamp, " ").concat(info.message);
34
+ })
35
+ ),
36
+ transports: [new winston.transports.Console()]
37
+ });
38
+ }
39
+ setLogLevel(level) {
40
+ this.logLevel = level;
41
+ }
42
+ log(level, ...messages) {
43
+ if (this.logLevel > level) {
20
44
  return;
21
45
  }
22
- switch (level) {
23
- case 0 /* DEBUG */:
24
- this.debug(...args);
25
- break;
26
- case 1 /* INFO */:
27
- this.info(...args);
28
- break;
29
- case 2 /* WARN */:
30
- this.warn(...args);
31
- break;
32
- case 3 /* ERROR */:
33
- this.error(...args);
34
- break;
35
- default:
36
- throw new Error("Unsupported log level: ".concat(level));
37
- }
46
+ this.logger.log(level.toString(), messages.join(" "));
38
47
  }
39
- debug(...args) {
40
- if (logLevel > 0 /* DEBUG */) {
48
+ debug(...messages) {
49
+ if (this.logLevel > 0 /* DEBUG */) {
41
50
  return;
42
51
  }
43
- console.debug(getColoredPrefix(0 /* DEBUG */), ...args);
52
+ this.logger.debug(messages.join(" "));
44
53
  }
45
- info(...args) {
46
- if (logLevel > 1 /* INFO */) {
54
+ info(...messages) {
55
+ if (this.logLevel > 1 /* INFO */) {
47
56
  return;
48
57
  }
49
- console.info(getColoredPrefix(1 /* INFO */), ...args);
58
+ this.logger.info(messages.join(" "));
50
59
  }
51
- warn(...args) {
52
- if (logLevel > 2 /* WARN */) {
60
+ warn(...messages) {
61
+ if (this.logLevel > 2 /* WARN */) {
53
62
  return;
54
63
  }
55
- console.warn(getColoredPrefix(2 /* WARN */), ...args);
64
+ this.logger.warn(messages.join(" "));
56
65
  }
57
- error(...args) {
58
- if (logLevel > 3 /* ERROR */) {
66
+ error(...messages) {
67
+ if (this.logLevel > 3 /* ERROR */) {
59
68
  return;
60
69
  }
61
- console.error(getColoredPrefix(3 /* ERROR */), ...args);
70
+ this.logger.error(messages.join(" "));
62
71
  }
63
72
  }
64
73
  class NoOpLogger {
74
+ setLogLevel(_level) {
75
+ }
65
76
  log(_level, ..._args) {
66
77
  }
67
78
  debug(..._args) {
@@ -73,26 +84,6 @@ class NoOpLogger {
73
84
  error(..._args) {
74
85
  }
75
86
  }
76
- const LOG_LEVEL_STR = {
77
- [0 /* DEBUG */]: "DEBUG",
78
- [1 /* INFO */]: "INFO",
79
- [2 /* WARN */]: "WARN",
80
- [3 /* ERROR */]: "ERROR"
81
- };
82
- const CONSOLE_COLOR_MAP = {
83
- [0 /* DEBUG */]: "\x1B[34m",
84
- // Blue
85
- [1 /* INFO */]: "\x1B[32m",
86
- // Green
87
- [2 /* WARN */]: "\x1B[33m",
88
- // Yellow
89
- [3 /* ERROR */]: "\x1B[31m"
90
- // Red
91
- };
92
- const RESET_COLOR = "\x1B[0m";
93
- function getColoredPrefix(level) {
94
- return "".concat(CONSOLE_COLOR_MAP[level], "[ADK ").concat(LOG_LEVEL_STR[level], "]:").concat(RESET_COLOR);
95
- }
96
87
  let currentLogger = new SimpleLogger();
97
88
  function setLogger(customLogger) {
98
89
  currentLogger = customLogger != null ? customLogger : new NoOpLogger();
@@ -103,7 +94,13 @@ function getLogger() {
103
94
  function resetLogger() {
104
95
  currentLogger = new SimpleLogger();
105
96
  }
97
+ function setLogLevel(level) {
98
+ logger.setLogLevel(level);
99
+ }
106
100
  const logger = {
101
+ setLogLevel(level) {
102
+ currentLogger.setLogLevel(level);
103
+ },
107
104
  log(level, ...args) {
108
105
  currentLogger.log(level, ...args);
109
106
  },
@@ -0,0 +1,47 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ function toCamelCase(obj, preserveKeys = []) {
7
+ return toNotation(obj, toCamelCaseKey, "", preserveKeys);
8
+ }
9
+ function toSnakeCase(obj, preserveKeys = []) {
10
+ return toNotation(obj, toSnakeCaseKey, "", preserveKeys);
11
+ }
12
+ const toCamelCaseKey = (key) => key.replace(
13
+ /_([a-z])/g,
14
+ (_match, letter) => letter.toUpperCase()
15
+ );
16
+ const toSnakeCaseKey = (key) => key.replace(/[A-Z]/g, (g) => "_" + g.toLowerCase());
17
+ function toNotation(obj, converter, parentKey = "", preserveKeys = []) {
18
+ if (Array.isArray(obj)) {
19
+ return obj.map(
20
+ (item) => toNotation(item, converter, parentKey, preserveKeys)
21
+ );
22
+ }
23
+ if (typeof obj === "object" && obj !== null) {
24
+ const source = obj;
25
+ const result = {};
26
+ for (const key of Object.keys(source)) {
27
+ const convertedKey = converter(key);
28
+ const fullPath = parentKey !== "" ? parentKey + "." + key : key;
29
+ if (preserveKeys.includes(fullPath)) {
30
+ result[convertedKey] = source[key];
31
+ } else {
32
+ result[convertedKey] = toNotation(
33
+ source[key],
34
+ converter,
35
+ fullPath,
36
+ preserveKeys
37
+ );
38
+ }
39
+ }
40
+ return result;
41
+ }
42
+ return obj;
43
+ }
44
+ export {
45
+ toCamelCase,
46
+ toSnakeCase
47
+ };
@@ -3,6 +3,7 @@
3
3
  * Copyright 2025 Google LLC
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
+ import { getBooleanEnvVar } from "./env_aware_utils.js";
6
7
  var GoogleLLMVariant = /* @__PURE__ */ ((GoogleLLMVariant2) => {
7
8
  GoogleLLMVariant2["VERTEX_AI"] = "VERTEX_AI";
8
9
  GoogleLLMVariant2["GEMINI_API"] = "GEMINI_API";
@@ -11,13 +12,6 @@ var GoogleLLMVariant = /* @__PURE__ */ ((GoogleLLMVariant2) => {
11
12
  function getGoogleLlmVariant() {
12
13
  return getBooleanEnvVar("GOOGLE_GENAI_USE_VERTEXAI") ? "VERTEX_AI" /* VERTEX_AI */ : "GEMINI_API" /* GEMINI_API */;
13
14
  }
14
- function getBooleanEnvVar(envVar) {
15
- if (!process.env) {
16
- return false;
17
- }
18
- const envVarValue = (process.env[envVar] || "").toLowerCase();
19
- return ["true", "1"].includes(envVarValue);
20
- }
21
15
  export {
22
16
  GoogleLLMVariant,
23
17
  getGoogleLlmVariant
@@ -3,7 +3,7 @@
3
3
  * Copyright 2025 Google LLC
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- const version = "0.3.0";
6
+ const version = "0.5.0";
7
7
  export {
8
8
  version
9
9
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@google/adk",
3
- "version": "0.3.0",
3
+ "version": "0.5.0",
4
4
  "description": "Google ADK JS",
5
5
  "author": "Google",
6
6
  "license": "Apache-2.0",
@@ -40,8 +40,12 @@
40
40
  "prepublishOnly": "npm run build:bundle"
41
41
  },
42
42
  "dependencies": {
43
+ "@a2a-js/sdk": "^0.3.10",
44
+ "winston": "^3.19.0",
43
45
  "@google/genai": "^1.37.0",
44
- "@modelcontextprotocol/sdk": "^1.24.0",
46
+ "@mikro-orm/core": "^6.6.6",
47
+ "@mikro-orm/reflection": "^6.6.6",
48
+ "@modelcontextprotocol/sdk": "^1.26.0",
45
49
  "google-auth-library": "^10.3.0",
46
50
  "lodash-es": "^4.17.23",
47
51
  "zod": "^4.2.1",
@@ -49,12 +53,18 @@
49
53
  },
50
54
  "devDependencies": {
51
55
  "@types/lodash-es": "^4.17.12",
52
- "openapi-types": "^12.1.3"
56
+ "openapi-types": "^12.1.3",
57
+ "@mikro-orm/sqlite": "^6.6.6"
53
58
  },
54
59
  "peerDependencies": {
55
60
  "@google-cloud/opentelemetry-cloud-monitoring-exporter": "^0.21.0",
56
61
  "@google-cloud/opentelemetry-cloud-trace-exporter": "^3.0.0",
57
62
  "@google-cloud/storage": "^7.17.1",
63
+ "@mikro-orm/mariadb": "^6.6.6",
64
+ "@mikro-orm/mssql": "^6.6.6",
65
+ "@mikro-orm/mysql": "^6.6.6",
66
+ "@mikro-orm/postgresql": "^6.6.6",
67
+ "@mikro-orm/sqlite": "^6.6.6",
58
68
  "@opentelemetry/api": "1.9.0",
59
69
  "@opentelemetry/api-logs": "^0.205.0",
60
70
  "@opentelemetry/exporter-logs-otlp-http": "^0.205.0",
@@ -1,101 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2025 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 callback_context_exports = {};
26
- __export(callback_context_exports, {
27
- CallbackContext: () => CallbackContext
28
- });
29
- module.exports = __toCommonJS(callback_context_exports);
30
- var import_event_actions = require("../events/event_actions.js");
31
- var import_state = require("../sessions/state.js");
32
- var import_readonly_context = require("./readonly_context.js");
33
- /**
34
- * @license
35
- * Copyright 2025 Google LLC
36
- * SPDX-License-Identifier: Apache-2.0
37
- */
38
- class CallbackContext extends import_readonly_context.ReadonlyContext {
39
- constructor({
40
- invocationContext,
41
- eventActions
42
- }) {
43
- super(invocationContext);
44
- this.eventActions = eventActions || (0, import_event_actions.createEventActions)();
45
- this._state = new import_state.State(
46
- invocationContext.session.state,
47
- this.eventActions.stateDelta
48
- );
49
- }
50
- /**
51
- * The delta-aware state of the current session.
52
- */
53
- get state() {
54
- return this._state;
55
- }
56
- /**
57
- * Loads an artifact attached to the current session.
58
- *
59
- * @param filename The filename of the artifact.
60
- * @param version The version of the artifact. If not provided, the latest
61
- * version will be used.
62
- * @return A promise that resolves to the loaded artifact.
63
- */
64
- loadArtifact(filename, version) {
65
- if (!this.invocationContext.artifactService) {
66
- throw new Error("Artifact service is not initialized.");
67
- }
68
- return this.invocationContext.artifactService.loadArtifact({
69
- appName: this.invocationContext.appName,
70
- userId: this.invocationContext.userId,
71
- sessionId: this.invocationContext.session.id,
72
- filename,
73
- version
74
- });
75
- }
76
- /**
77
- * Saves an artifact attached to the current session.
78
- *
79
- * @param filename The filename of the artifact.
80
- * @param artifact The artifact to save.
81
- * @return A promise that resolves to the version of the saved artifact.
82
- */
83
- async saveArtifact(filename, artifact) {
84
- if (!this.invocationContext.artifactService) {
85
- throw new Error("Artifact service is not initialized.");
86
- }
87
- const version = await this.invocationContext.artifactService.saveArtifact({
88
- appName: this.invocationContext.appName,
89
- userId: this.invocationContext.userId,
90
- sessionId: this.invocationContext.session.id,
91
- filename,
92
- artifact
93
- });
94
- this.eventActions.artifactDelta[filename] = version;
95
- return version;
96
- }
97
- }
98
- // Annotate the CommonJS export names for ESM import in node:
99
- 0 && (module.exports = {
100
- CallbackContext
101
- });