@google/adk 0.1.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 (311) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +9 -0
  3. package/dist/cjs/agents/active_streaming_tool.js +44 -0
  4. package/dist/cjs/agents/base_agent.js +245 -0
  5. package/dist/cjs/agents/base_llm_processor.js +44 -0
  6. package/dist/cjs/agents/callback_context.js +98 -0
  7. package/dist/cjs/agents/content_processor_utils.js +299 -0
  8. package/dist/cjs/agents/functions.js +394 -0
  9. package/dist/cjs/agents/instructions.js +110 -0
  10. package/dist/cjs/agents/invocation_context.js +109 -0
  11. package/dist/cjs/agents/live_request_queue.js +136 -0
  12. package/dist/cjs/agents/llm_agent.js +859 -0
  13. package/dist/cjs/agents/loop_agent.js +68 -0
  14. package/dist/cjs/agents/parallel_agent.js +78 -0
  15. package/dist/cjs/agents/readonly_context.js +68 -0
  16. package/dist/cjs/agents/run_config.js +74 -0
  17. package/dist/cjs/agents/sequential_agent.js +84 -0
  18. package/dist/cjs/agents/transcription_entry.js +27 -0
  19. package/dist/cjs/artifacts/base_artifact_service.js +27 -0
  20. package/dist/cjs/artifacts/in_memory_artifact_service.js +119 -0
  21. package/dist/cjs/auth/auth_credential.js +46 -0
  22. package/dist/cjs/auth/auth_handler.js +92 -0
  23. package/dist/cjs/auth/auth_schemes.js +62 -0
  24. package/dist/cjs/auth/auth_tool.js +27 -0
  25. package/dist/cjs/auth/credential_service/base_credential_service.js +27 -0
  26. package/dist/cjs/auth/credential_service/in_memory_credential_service.js +63 -0
  27. package/dist/cjs/code_executors/base_code_executor.js +76 -0
  28. package/dist/cjs/code_executors/built_in_code_executor.js +58 -0
  29. package/dist/cjs/code_executors/code_execution_utils.js +142 -0
  30. package/dist/cjs/code_executors/code_executor_context.js +198 -0
  31. package/dist/cjs/common.js +161 -0
  32. package/dist/cjs/events/event.js +107 -0
  33. package/dist/cjs/events/event_actions.js +83 -0
  34. package/dist/cjs/examples/base_example_provider.js +40 -0
  35. package/dist/cjs/examples/example.js +27 -0
  36. package/dist/cjs/examples/example_util.js +107 -0
  37. package/dist/cjs/index.js +40 -0
  38. package/dist/cjs/index.js.map +7 -0
  39. package/dist/cjs/index_web.js +33 -0
  40. package/dist/cjs/memory/base_memory_service.js +27 -0
  41. package/dist/cjs/memory/in_memory_memory_service.js +97 -0
  42. package/dist/cjs/memory/memory_entry.js +27 -0
  43. package/dist/cjs/models/base_llm.js +77 -0
  44. package/dist/cjs/models/base_llm_connection.js +27 -0
  45. package/dist/cjs/models/gemini_llm_connection.js +132 -0
  46. package/dist/cjs/models/google_llm.js +321 -0
  47. package/dist/cjs/models/llm_request.js +82 -0
  48. package/dist/cjs/models/llm_response.js +71 -0
  49. package/dist/cjs/models/registry.js +121 -0
  50. package/dist/cjs/package.json +1 -0
  51. package/dist/cjs/plugins/base_plugin.js +236 -0
  52. package/dist/cjs/plugins/logging_plugin.js +222 -0
  53. package/dist/cjs/plugins/plugin_manager.js +239 -0
  54. package/dist/cjs/plugins/security_plugin.js +153 -0
  55. package/dist/cjs/runner/in_memory_runner.js +58 -0
  56. package/dist/cjs/runner/runner.js +276 -0
  57. package/dist/cjs/sessions/base_session_service.js +71 -0
  58. package/dist/cjs/sessions/in_memory_session_service.js +184 -0
  59. package/dist/cjs/sessions/session.js +48 -0
  60. package/dist/cjs/sessions/state.js +101 -0
  61. package/dist/cjs/tools/agent_tool.js +134 -0
  62. package/dist/cjs/tools/base_tool.js +107 -0
  63. package/dist/cjs/tools/base_toolset.js +76 -0
  64. package/dist/cjs/tools/forwarding_artifact_service.js +71 -0
  65. package/dist/cjs/tools/function_tool.js +101 -0
  66. package/dist/cjs/tools/google_search_tool.js +76 -0
  67. package/dist/cjs/tools/long_running_tool.js +63 -0
  68. package/dist/cjs/tools/mcp/mcp_session_manager.js +65 -0
  69. package/dist/cjs/tools/mcp/mcp_tool.js +65 -0
  70. package/dist/cjs/tools/mcp/mcp_toolset.js +61 -0
  71. package/dist/cjs/tools/tool_confirmation.js +49 -0
  72. package/dist/cjs/tools/tool_context.js +129 -0
  73. package/dist/cjs/utils/deep_clone.js +44 -0
  74. package/dist/cjs/utils/env_aware_utils.js +83 -0
  75. package/dist/cjs/utils/gemini_schema_util.js +88 -0
  76. package/dist/cjs/utils/logger.js +121 -0
  77. package/dist/cjs/utils/model_name.js +64 -0
  78. package/dist/cjs/utils/simple_zod_to_json.js +191 -0
  79. package/dist/cjs/utils/variant_utils.js +55 -0
  80. package/dist/cjs/version.js +39 -0
  81. package/dist/esm/agents/active_streaming_tool.js +14 -0
  82. package/dist/esm/agents/base_agent.js +214 -0
  83. package/dist/esm/agents/base_llm_processor.js +13 -0
  84. package/dist/esm/agents/callback_context.js +68 -0
  85. package/dist/esm/agents/content_processor_utils.js +268 -0
  86. package/dist/esm/agents/functions.js +353 -0
  87. package/dist/esm/agents/instructions.js +80 -0
  88. package/dist/esm/agents/invocation_context.js +78 -0
  89. package/dist/esm/agents/live_request_queue.js +106 -0
  90. package/dist/esm/agents/llm_agent.js +828 -0
  91. package/dist/esm/agents/loop_agent.js +38 -0
  92. package/dist/esm/agents/parallel_agent.js +48 -0
  93. package/dist/esm/agents/readonly_context.js +38 -0
  94. package/dist/esm/agents/run_config.js +43 -0
  95. package/dist/esm/agents/sequential_agent.js +54 -0
  96. package/dist/esm/agents/transcription_entry.js +5 -0
  97. package/dist/esm/artifacts/base_artifact_service.js +5 -0
  98. package/dist/esm/artifacts/in_memory_artifact_service.js +89 -0
  99. package/dist/esm/auth/auth_credential.js +16 -0
  100. package/dist/esm/auth/auth_handler.js +62 -0
  101. package/dist/esm/auth/auth_schemes.js +31 -0
  102. package/dist/esm/auth/auth_tool.js +5 -0
  103. package/dist/esm/auth/credential_service/base_credential_service.js +5 -0
  104. package/dist/esm/auth/credential_service/in_memory_credential_service.js +33 -0
  105. package/dist/esm/code_executors/base_code_executor.js +46 -0
  106. package/dist/esm/code_executors/built_in_code_executor.js +28 -0
  107. package/dist/esm/code_executors/code_execution_utils.js +108 -0
  108. package/dist/esm/code_executors/code_executor_context.js +168 -0
  109. package/dist/esm/common.js +85 -0
  110. package/dist/esm/events/event.js +72 -0
  111. package/dist/esm/events/event_actions.js +52 -0
  112. package/dist/esm/examples/base_example_provider.js +10 -0
  113. package/dist/esm/examples/example.js +5 -0
  114. package/dist/esm/examples/example_util.js +76 -0
  115. package/dist/esm/index.js +40 -0
  116. package/dist/esm/index.js.map +7 -0
  117. package/dist/esm/index_web.js +6 -0
  118. package/dist/esm/memory/base_memory_service.js +5 -0
  119. package/dist/esm/memory/in_memory_memory_service.js +67 -0
  120. package/dist/esm/memory/memory_entry.js +5 -0
  121. package/dist/esm/models/base_llm.js +47 -0
  122. package/dist/esm/models/base_llm_connection.js +5 -0
  123. package/dist/esm/models/gemini_llm_connection.js +102 -0
  124. package/dist/esm/models/google_llm.js +291 -0
  125. package/dist/esm/models/llm_request.js +50 -0
  126. package/dist/esm/models/llm_response.js +41 -0
  127. package/dist/esm/models/registry.js +91 -0
  128. package/dist/esm/plugins/base_plugin.js +206 -0
  129. package/dist/esm/plugins/logging_plugin.js +192 -0
  130. package/dist/esm/plugins/plugin_manager.js +209 -0
  131. package/dist/esm/plugins/security_plugin.js +119 -0
  132. package/dist/esm/runner/in_memory_runner.js +28 -0
  133. package/dist/esm/runner/runner.js +246 -0
  134. package/dist/esm/sessions/base_session_service.js +41 -0
  135. package/dist/esm/sessions/in_memory_session_service.js +154 -0
  136. package/dist/esm/sessions/session.js +18 -0
  137. package/dist/esm/sessions/state.js +71 -0
  138. package/dist/esm/tools/agent_tool.js +104 -0
  139. package/dist/esm/tools/base_tool.js +77 -0
  140. package/dist/esm/tools/base_toolset.js +46 -0
  141. package/dist/esm/tools/forwarding_artifact_service.js +41 -0
  142. package/dist/esm/tools/function_tool.js +71 -0
  143. package/dist/esm/tools/google_search_tool.js +46 -0
  144. package/dist/esm/tools/long_running_tool.js +33 -0
  145. package/dist/esm/tools/mcp/mcp_session_manager.js +35 -0
  146. package/dist/esm/tools/mcp/mcp_tool.js +35 -0
  147. package/dist/esm/tools/mcp/mcp_toolset.js +31 -0
  148. package/dist/esm/tools/tool_confirmation.js +19 -0
  149. package/dist/esm/tools/tool_context.js +99 -0
  150. package/dist/esm/utils/deep_clone.js +14 -0
  151. package/dist/esm/utils/env_aware_utils.js +49 -0
  152. package/dist/esm/utils/gemini_schema_util.js +58 -0
  153. package/dist/esm/utils/logger.js +89 -0
  154. package/dist/esm/utils/model_name.js +31 -0
  155. package/dist/esm/utils/simple_zod_to_json.js +160 -0
  156. package/dist/esm/utils/variant_utils.js +24 -0
  157. package/dist/esm/version.js +9 -0
  158. package/dist/types/agents/active_streaming_tool.d.ts +29 -0
  159. package/dist/types/agents/base_agent.d.ts +167 -0
  160. package/dist/types/agents/base_llm_processor.d.ts +27 -0
  161. package/dist/types/agents/callback_context.d.ts +42 -0
  162. package/dist/types/agents/content_processor_utils.d.ts +36 -0
  163. package/dist/types/agents/functions.d.ts +90 -0
  164. package/dist/types/agents/instructions.d.ts +32 -0
  165. package/dist/types/agents/invocation_context.d.ts +155 -0
  166. package/dist/types/agents/live_request_queue.d.ts +67 -0
  167. package/dist/types/agents/llm_agent.d.ts +333 -0
  168. package/dist/types/agents/loop_agent.d.ts +31 -0
  169. package/dist/types/agents/parallel_agent.d.ts +21 -0
  170. package/dist/types/agents/readonly_context.d.ts +31 -0
  171. package/dist/types/agents/run_config.d.ts +76 -0
  172. package/dist/types/agents/sequential_agent.d.ts +26 -0
  173. package/dist/types/agents/transcription_entry.d.ts +17 -0
  174. package/dist/types/artifacts/base_artifact_service.d.ts +127 -0
  175. package/dist/types/artifacts/in_memory_artifact_service.d.ts +18 -0
  176. package/dist/types/auth/auth_credential.d.ts +227 -0
  177. package/dist/types/auth/auth_handler.d.ts +27 -0
  178. package/dist/types/auth/auth_schemes.d.ts +36 -0
  179. package/dist/types/auth/auth_tool.d.ts +51 -0
  180. package/dist/types/auth/credential_service/base_credential_service.d.ts +27 -0
  181. package/dist/types/auth/credential_service/in_memory_credential_service.d.ts +19 -0
  182. package/dist/types/code_executors/base_code_executor.d.ts +60 -0
  183. package/dist/types/code_executors/built_in_code_executor.d.ts +13 -0
  184. package/dist/types/code_executors/code_execution_utils.d.ts +99 -0
  185. package/dist/types/code_executors/code_executor_context.d.ts +92 -0
  186. package/dist/types/common.d.ts +51 -0
  187. package/dist/types/events/event.d.ts +81 -0
  188. package/dist/types/events/event_actions.d.ts +74 -0
  189. package/dist/types/examples/base_example_provider.d.ts +20 -0
  190. package/dist/types/examples/example.d.ts +19 -0
  191. package/dist/types/examples/example_util.d.ts +13 -0
  192. package/dist/types/index.d.ts +9 -0
  193. package/dist/types/index_web.d.ts +6 -0
  194. package/dist/types/memory/base_memory_service.d.ts +47 -0
  195. package/dist/types/memory/in_memory_memory_service.d.ts +18 -0
  196. package/dist/types/memory/memory_entry.d.ts +24 -0
  197. package/dist/types/models/base_llm.d.ts +46 -0
  198. package/dist/types/models/base_llm_connection.d.ts +51 -0
  199. package/dist/types/models/gemini_llm_connection.d.ts +54 -0
  200. package/dist/types/models/google_llm.d.ts +88 -0
  201. package/dist/types/models/llm_request.d.ts +49 -0
  202. package/dist/types/models/llm_response.d.ts +79 -0
  203. package/dist/types/models/registry.d.ts +45 -0
  204. package/dist/types/plugins/base_plugin.d.ts +310 -0
  205. package/dist/types/plugins/logging_plugin.d.ts +104 -0
  206. package/dist/types/plugins/plugin_manager.d.ts +155 -0
  207. package/dist/types/plugins/security_plugin.d.ts +60 -0
  208. package/dist/types/runner/in_memory_runner.d.ts +15 -0
  209. package/dist/types/runner/runner.d.ts +80 -0
  210. package/dist/types/sessions/base_session_service.d.ts +129 -0
  211. package/dist/types/sessions/in_memory_session_service.d.ts +32 -0
  212. package/dist/types/sessions/session.d.ts +46 -0
  213. package/dist/types/sessions/state.d.ts +57 -0
  214. package/dist/types/tools/agent_tool.d.ts +37 -0
  215. package/dist/types/tools/base_tool.d.ts +84 -0
  216. package/dist/types/tools/base_toolset.d.ts +64 -0
  217. package/dist/types/tools/forwarding_artifact_service.d.ts +21 -0
  218. package/dist/types/tools/function_tool.d.ts +48 -0
  219. package/dist/types/tools/google_search_tool.d.ts +18 -0
  220. package/dist/types/tools/long_running_tool.d.ts +18 -0
  221. package/dist/types/tools/mcp/mcp_session_manager.d.ts +57 -0
  222. package/dist/types/tools/mcp/mcp_tool.d.ts +30 -0
  223. package/dist/types/tools/mcp/mcp_toolset.d.ts +39 -0
  224. package/dist/types/tools/tool_confirmation.d.ts +25 -0
  225. package/dist/types/tools/tool_context.d.ts +63 -0
  226. package/dist/types/utils/deep_clone.d.ts +1 -0
  227. package/dist/types/utils/env_aware_utils.d.ts +31 -0
  228. package/dist/types/utils/gemini_schema_util.d.ts +23 -0
  229. package/dist/types/utils/logger.d.ts +41 -0
  230. package/dist/types/utils/model_name.d.ts +34 -0
  231. package/dist/types/utils/simple_zod_to_json.d.ts +12 -0
  232. package/dist/types/utils/variant_utils.d.ts +24 -0
  233. package/dist/types/version.d.ts +6 -0
  234. package/dist/web/agents/active_streaming_tool.js +14 -0
  235. package/dist/web/agents/base_agent.js +265 -0
  236. package/dist/web/agents/base_llm_processor.js +13 -0
  237. package/dist/web/agents/callback_context.js +68 -0
  238. package/dist/web/agents/content_processor_utils.js +268 -0
  239. package/dist/web/agents/functions.js +353 -0
  240. package/dist/web/agents/instructions.js +80 -0
  241. package/dist/web/agents/invocation_context.js +78 -0
  242. package/dist/web/agents/live_request_queue.js +124 -0
  243. package/dist/web/agents/llm_agent.js +973 -0
  244. package/dist/web/agents/loop_agent.js +71 -0
  245. package/dist/web/agents/parallel_agent.js +83 -0
  246. package/dist/web/agents/readonly_context.js +38 -0
  247. package/dist/web/agents/run_config.js +43 -0
  248. package/dist/web/agents/sequential_agent.js +99 -0
  249. package/dist/web/agents/transcription_entry.js +5 -0
  250. package/dist/web/artifacts/base_artifact_service.js +5 -0
  251. package/dist/web/artifacts/in_memory_artifact_service.js +89 -0
  252. package/dist/web/auth/auth_credential.js +16 -0
  253. package/dist/web/auth/auth_handler.js +62 -0
  254. package/dist/web/auth/auth_schemes.js +31 -0
  255. package/dist/web/auth/auth_tool.js +5 -0
  256. package/dist/web/auth/credential_service/base_credential_service.js +5 -0
  257. package/dist/web/auth/credential_service/in_memory_credential_service.js +33 -0
  258. package/dist/web/code_executors/base_code_executor.js +46 -0
  259. package/dist/web/code_executors/built_in_code_executor.js +28 -0
  260. package/dist/web/code_executors/code_execution_utils.js +105 -0
  261. package/dist/web/code_executors/code_executor_context.js +168 -0
  262. package/dist/web/common.js +85 -0
  263. package/dist/web/events/event.js +90 -0
  264. package/dist/web/events/event_actions.js +67 -0
  265. package/dist/web/examples/base_example_provider.js +10 -0
  266. package/dist/web/examples/example.js +5 -0
  267. package/dist/web/examples/example_util.js +75 -0
  268. package/dist/web/index.js +13 -0
  269. package/dist/web/index.js.map +7 -0
  270. package/dist/web/index_web.js +6 -0
  271. package/dist/web/memory/base_memory_service.js +5 -0
  272. package/dist/web/memory/in_memory_memory_service.js +67 -0
  273. package/dist/web/memory/memory_entry.js +5 -0
  274. package/dist/web/models/base_llm.js +47 -0
  275. package/dist/web/models/base_llm_connection.js +5 -0
  276. package/dist/web/models/gemini_llm_connection.js +120 -0
  277. package/dist/web/models/google_llm.js +332 -0
  278. package/dist/web/models/llm_request.js +50 -0
  279. package/dist/web/models/llm_response.js +41 -0
  280. package/dist/web/models/registry.js +91 -0
  281. package/dist/web/plugins/base_plugin.js +206 -0
  282. package/dist/web/plugins/logging_plugin.js +192 -0
  283. package/dist/web/plugins/plugin_manager.js +209 -0
  284. package/dist/web/plugins/security_plugin.js +119 -0
  285. package/dist/web/runner/in_memory_runner.js +28 -0
  286. package/dist/web/runner/runner.js +277 -0
  287. package/dist/web/sessions/base_session_service.js +41 -0
  288. package/dist/web/sessions/in_memory_session_service.js +154 -0
  289. package/dist/web/sessions/session.js +18 -0
  290. package/dist/web/sessions/state.js +87 -0
  291. package/dist/web/tools/agent_tool.js +118 -0
  292. package/dist/web/tools/base_tool.js +77 -0
  293. package/dist/web/tools/base_toolset.js +46 -0
  294. package/dist/web/tools/forwarding_artifact_service.js +41 -0
  295. package/dist/web/tools/function_tool.js +71 -0
  296. package/dist/web/tools/google_search_tool.js +46 -0
  297. package/dist/web/tools/long_running_tool.js +50 -0
  298. package/dist/web/tools/mcp/mcp_session_manager.js +35 -0
  299. package/dist/web/tools/mcp/mcp_tool.js +35 -0
  300. package/dist/web/tools/mcp/mcp_toolset.js +31 -0
  301. package/dist/web/tools/tool_confirmation.js +19 -0
  302. package/dist/web/tools/tool_context.js +99 -0
  303. package/dist/web/utils/deep_clone.js +14 -0
  304. package/dist/web/utils/env_aware_utils.js +49 -0
  305. package/dist/web/utils/gemini_schema_util.js +58 -0
  306. package/dist/web/utils/logger.js +89 -0
  307. package/dist/web/utils/model_name.js +31 -0
  308. package/dist/web/utils/simple_zod_to_json.js +174 -0
  309. package/dist/web/utils/variant_utils.js +24 -0
  310. package/dist/web/version.js +9 -0
  311. package/package.json +61 -0
@@ -0,0 +1,99 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { CallbackContext } from "../agents/callback_context.js";
7
+ import { AuthHandler } from "../auth/auth_handler.js";
8
+ import { ToolConfirmation } from "../tools/tool_confirmation.js";
9
+ class ToolContext extends CallbackContext {
10
+ /**
11
+ * @param params.invocationContext The invocation context of the tool.
12
+ * @param params.eventActions The event actions of the current tool call.
13
+ * @param params.functionCallId The function call id of the current tool call.
14
+ * This id was returned in the function call event from LLM to identify a
15
+ * function call. If LLM didn't return this id, ADK will assign one to it.
16
+ * This id is used to map function call response to the original function
17
+ * call.
18
+ * @param params.toolConfirmation The tool confirmation of the current tool
19
+ * call.
20
+ */
21
+ constructor({
22
+ invocationContext,
23
+ eventActions,
24
+ functionCallId,
25
+ toolConfirmation
26
+ }) {
27
+ super({ invocationContext, eventActions });
28
+ this.functionCallId = functionCallId;
29
+ this.toolConfirmation = toolConfirmation;
30
+ }
31
+ get actions() {
32
+ return this.eventActions;
33
+ }
34
+ requestCredential(authConfig) {
35
+ if (!this.functionCallId) {
36
+ throw new Error("functionCallId is not set.");
37
+ }
38
+ const authHandler = new AuthHandler(authConfig);
39
+ this.eventActions.requestedAuthConfigs[this.functionCallId] = authHandler.generateAuthRequest();
40
+ }
41
+ /**
42
+ * Gets the auth credential for the given auth config.
43
+ *
44
+ * @param authConfig The auth config to get the auth credential for.
45
+ * @return The auth credential for the given auth config.
46
+ */
47
+ getAuthResponse(authConfig) {
48
+ const authHandler = new AuthHandler(authConfig);
49
+ return authHandler.getAuthResponse(this.state);
50
+ }
51
+ /**
52
+ * Lists the filenames of the artifacts attached to the current session.
53
+ *
54
+ * @return A promise that resolves to a list of artifact filenames.
55
+ */
56
+ listArtifacts() {
57
+ if (!this.invocationContext.artifactService) {
58
+ throw new Error("Artifact service is not initialized.");
59
+ }
60
+ return this.invocationContext.artifactService.listArtifactKeys({
61
+ appName: this.invocationContext.session.appName,
62
+ userId: this.invocationContext.session.userId,
63
+ sessionId: this.invocationContext.session.id
64
+ });
65
+ }
66
+ /**
67
+ * Searches the memory of the current user.
68
+ *
69
+ * @param query The query to search memory for.
70
+ * @return A promise that resolves to SearchMemoryResponse containing the
71
+ * matching memories.
72
+ */
73
+ searchMemory(query) {
74
+ if (!this.invocationContext.memoryService) {
75
+ throw new Error("Memory service is not initialized.");
76
+ }
77
+ return this.invocationContext.memoryService.searchMemory({
78
+ appName: this.invocationContext.session.appName,
79
+ userId: this.invocationContext.session.userId,
80
+ query
81
+ });
82
+ }
83
+ /**
84
+ * Requests confirmation for the current tool call.
85
+ */
86
+ requestConfirmation({ hint, payload }) {
87
+ if (!this.functionCallId) {
88
+ throw new Error("functionCallId is not set.");
89
+ }
90
+ this.eventActions.requestedToolConfirmations[this.functionCallId] = new ToolConfirmation({
91
+ hint,
92
+ confirmed: false,
93
+ payload
94
+ });
95
+ }
96
+ }
97
+ export {
98
+ ToolContext
99
+ };
@@ -0,0 +1,14 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ function deepClone(obj) {
7
+ if (obj === void 0) {
8
+ return void 0;
9
+ }
10
+ return JSON.parse(JSON.stringify(obj));
11
+ }
12
+ export {
13
+ deepClone
14
+ };
@@ -0,0 +1,49 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ function isBrowser() {
7
+ return typeof window !== "undefined";
8
+ }
9
+ const UUID_MASK = "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx";
10
+ function randomUUID() {
11
+ let uuid = "";
12
+ for (let i = 0; i < UUID_MASK.length; i++) {
13
+ const randomValue = Math.random() * 16 | 0;
14
+ if (UUID_MASK[i] === "x") {
15
+ uuid += randomValue.toString(16);
16
+ } else if (UUID_MASK[i] === "y") {
17
+ uuid += (randomValue & 3 | 8).toString(16);
18
+ } else {
19
+ uuid += UUID_MASK[i];
20
+ }
21
+ }
22
+ return uuid;
23
+ }
24
+ function base64Encode(data) {
25
+ if (isBrowser()) {
26
+ return window.btoa(data);
27
+ }
28
+ return Buffer.from(data).toString("base64");
29
+ }
30
+ function base64Decode(data) {
31
+ if (isBrowser()) {
32
+ return window.atob(data);
33
+ }
34
+ return Buffer.from(data, "base64").toString();
35
+ }
36
+ function isBase64Encoded(data) {
37
+ try {
38
+ return base64Encode(base64Decode(data)) === data;
39
+ } catch (e) {
40
+ return false;
41
+ }
42
+ }
43
+ export {
44
+ base64Decode,
45
+ base64Encode,
46
+ isBase64Encoded,
47
+ isBrowser,
48
+ randomUUID
49
+ };
@@ -0,0 +1,58 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { Type } from "@google/genai";
7
+ import { z } from "zod";
8
+ const MCPToolSchema = z.object({
9
+ type: z.literal("object"),
10
+ properties: z.record(z.unknown()).optional(),
11
+ required: z.string().array().optional()
12
+ });
13
+ function toGeminiType(mcpType) {
14
+ switch (mcpType.toLowerCase()) {
15
+ case "text":
16
+ case "string":
17
+ return Type.STRING;
18
+ case "number":
19
+ return Type.NUMBER;
20
+ case "boolean":
21
+ return Type.BOOLEAN;
22
+ case "integer":
23
+ return Type.INTEGER;
24
+ case "array":
25
+ return Type.ARRAY;
26
+ case "object":
27
+ return Type.OBJECT;
28
+ default:
29
+ return Type.TYPE_UNSPECIFIED;
30
+ }
31
+ }
32
+ function toGeminiSchema(mcpSchema) {
33
+ if (!mcpSchema) {
34
+ return void 0;
35
+ }
36
+ function recursiveConvert(mcp) {
37
+ const geminiType = toGeminiType(mcp.type);
38
+ const geminiSchema = { type: geminiType, description: mcp.description };
39
+ if (geminiType === Type.OBJECT) {
40
+ geminiSchema.properties = {};
41
+ if (mcp.properties) {
42
+ for (const name in mcp.properties) {
43
+ geminiSchema.properties[name] = recursiveConvert(mcp.properties[name]);
44
+ }
45
+ }
46
+ geminiSchema.required = mcp.required;
47
+ } else if (geminiType === Type.ARRAY) {
48
+ if (mcp.items) {
49
+ geminiSchema.items = recursiveConvert(mcp.items);
50
+ }
51
+ }
52
+ return geminiSchema;
53
+ }
54
+ return recursiveConvert(mcpSchema);
55
+ }
56
+ export {
57
+ toGeminiSchema
58
+ };
@@ -0,0 +1,89 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ var LogLevel = /* @__PURE__ */ ((LogLevel2) => {
7
+ LogLevel2[LogLevel2["DEBUG"] = 0] = "DEBUG";
8
+ LogLevel2[LogLevel2["INFO"] = 1] = "INFO";
9
+ LogLevel2[LogLevel2["WARN"] = 2] = "WARN";
10
+ LogLevel2[LogLevel2["ERROR"] = 3] = "ERROR";
11
+ return LogLevel2;
12
+ })(LogLevel || {});
13
+ let logLevel = 1 /* INFO */;
14
+ function setLogLevel(level) {
15
+ logLevel = level;
16
+ }
17
+ class SimpleLogger {
18
+ log(level, ...args) {
19
+ if (level < logLevel) {
20
+ return;
21
+ }
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
+ }
38
+ }
39
+ debug(...args) {
40
+ if (logLevel > 0 /* DEBUG */) {
41
+ return;
42
+ }
43
+ console.debug(getColoredPrefix(0 /* DEBUG */), ...args);
44
+ }
45
+ info(...args) {
46
+ if (logLevel > 1 /* INFO */) {
47
+ return;
48
+ }
49
+ console.info(getColoredPrefix(1 /* INFO */), ...args);
50
+ }
51
+ warn(...args) {
52
+ if (logLevel > 2 /* WARN */) {
53
+ return;
54
+ }
55
+ console.warn(getColoredPrefix(2 /* WARN */), ...args);
56
+ }
57
+ error(...args) {
58
+ if (logLevel > 3 /* ERROR */) {
59
+ return;
60
+ }
61
+ console.error(getColoredPrefix(3 /* ERROR */), ...args);
62
+ }
63
+ }
64
+ const LOG_LEVEL_STR = {
65
+ [0 /* DEBUG */]: "DEBUG",
66
+ [1 /* INFO */]: "INFO",
67
+ [2 /* WARN */]: "WARN",
68
+ [3 /* ERROR */]: "ERROR"
69
+ };
70
+ const CONSOLE_COLOR_MAP = {
71
+ [0 /* DEBUG */]: "\x1B[34m",
72
+ // Blue
73
+ [1 /* INFO */]: "\x1B[32m",
74
+ // Green
75
+ [2 /* WARN */]: "\x1B[33m",
76
+ // Yellow
77
+ [3 /* ERROR */]: "\x1B[31m"
78
+ // Red
79
+ };
80
+ const RESET_COLOR = "\x1B[0m";
81
+ function getColoredPrefix(level) {
82
+ return "".concat(CONSOLE_COLOR_MAP[level], "[ADK ").concat(LOG_LEVEL_STR[level], "]:").concat(RESET_COLOR);
83
+ }
84
+ const logger = new SimpleLogger();
85
+ export {
86
+ LogLevel,
87
+ logger,
88
+ setLogLevel
89
+ };
@@ -0,0 +1,31 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ const MODEL_NAME_PATTERN = "^projects/[^/]+/locations/[^/]+/publishers/[^/]+/models/(.+)$";
7
+ function extractModelName(modelString) {
8
+ const match = modelString.match(MODEL_NAME_PATTERN);
9
+ if (match) {
10
+ return match[1];
11
+ }
12
+ return modelString;
13
+ }
14
+ function isGeminiModel(modelString) {
15
+ const modelName = extractModelName(modelString);
16
+ return modelName.startsWith("gemini-");
17
+ }
18
+ function isGemini1Model(modelString) {
19
+ const modelName = extractModelName(modelString);
20
+ return modelName.startsWith("gemini-1");
21
+ }
22
+ function isGemini2Model(modelString) {
23
+ const modelName = extractModelName(modelString);
24
+ return modelName.startsWith("gemini-2");
25
+ }
26
+ export {
27
+ extractModelName,
28
+ isGemini1Model,
29
+ isGemini2Model,
30
+ isGeminiModel
31
+ };
@@ -0,0 +1,174 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
3
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
4
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
5
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
6
+ var __spreadValues = (a, b) => {
7
+ for (var prop in b || (b = {}))
8
+ if (__hasOwnProp.call(b, prop))
9
+ __defNormalProp(a, prop, b[prop]);
10
+ if (__getOwnPropSymbols)
11
+ for (var prop of __getOwnPropSymbols(b)) {
12
+ if (__propIsEnum.call(b, prop))
13
+ __defNormalProp(a, prop, b[prop]);
14
+ }
15
+ return a;
16
+ };
17
+ /**
18
+ * @license
19
+ * Copyright 2025 Google LLC
20
+ * SPDX-License-Identifier: Apache-2.0
21
+ */
22
+ import { Type } from "@google/genai";
23
+ import { z } from "zod";
24
+ function isZodObject(obj) {
25
+ var _a;
26
+ return obj !== null && typeof obj === "object" && ((_a = obj._def) == null ? void 0 : _a.typeName) === "ZodObject";
27
+ }
28
+ function parseZodType(zodType) {
29
+ const def = zodType._def;
30
+ if (!def) {
31
+ return {};
32
+ }
33
+ const description = def.description;
34
+ const result = {};
35
+ if (description) result.description = description;
36
+ const returnResult = (result2) => {
37
+ if (result2.description === void 0) {
38
+ delete result2.description;
39
+ }
40
+ return result2;
41
+ };
42
+ switch (def.typeName) {
43
+ case z.ZodFirstPartyTypeKind.ZodString:
44
+ result.type = Type.STRING;
45
+ for (const check of def.checks || []) {
46
+ if (check.kind === "min")
47
+ result.minLength = check.value.toString();
48
+ else if (check.kind === "max")
49
+ result.maxLength = check.value.toString();
50
+ else if (check.kind === "email")
51
+ result.format = "email";
52
+ else if (check.kind === "uuid")
53
+ result.format = "uuid";
54
+ else if (check.kind === "url")
55
+ result.format = "uri";
56
+ else if (check.kind === "regex")
57
+ result.pattern = check.regex.source;
58
+ }
59
+ return returnResult(result);
60
+ case z.ZodFirstPartyTypeKind.ZodNumber:
61
+ result.type = Type.NUMBER;
62
+ for (const check of def.checks || []) {
63
+ if (check.kind === "min")
64
+ result.minimum = check.value;
65
+ else if (check.kind === "max")
66
+ result.maximum = check.value;
67
+ else if (check.kind === "int")
68
+ result.type = Type.INTEGER;
69
+ }
70
+ return returnResult(result);
71
+ case z.ZodFirstPartyTypeKind.ZodBoolean:
72
+ result.type = Type.BOOLEAN;
73
+ return returnResult(result);
74
+ case z.ZodFirstPartyTypeKind.ZodArray:
75
+ result.type = Type.ARRAY;
76
+ result.items = parseZodType(def.type);
77
+ if (def.minLength) result.minItems = def.minLength.value.toString();
78
+ if (def.maxLength) result.maxItems = def.maxLength.value.toString();
79
+ return returnResult(result);
80
+ case z.ZodFirstPartyTypeKind.ZodObject: {
81
+ const nestedSchema = zodObjectToSchema(zodType);
82
+ return nestedSchema;
83
+ }
84
+ case z.ZodFirstPartyTypeKind.ZodLiteral:
85
+ const literalType = typeof def.value;
86
+ result.enum = [def.value.toString()];
87
+ if (literalType === "string") {
88
+ result.type = Type.STRING;
89
+ } else if (literalType === "number") {
90
+ result.type = Type.NUMBER;
91
+ } else if (literalType === "boolean") {
92
+ result.type = Type.BOOLEAN;
93
+ } else if (def.value === null) {
94
+ result.type = Type.NULL;
95
+ } else {
96
+ throw new Error("Unsupported ZodLiteral value type: ".concat(literalType));
97
+ }
98
+ return returnResult(result);
99
+ case z.ZodFirstPartyTypeKind.ZodEnum:
100
+ result.type = Type.STRING;
101
+ result.enum = def.values;
102
+ return returnResult(result);
103
+ case z.ZodFirstPartyTypeKind.ZodNativeEnum:
104
+ result.type = Type.STRING;
105
+ result.enum = Object.values(def.values);
106
+ return returnResult(result);
107
+ case z.ZodFirstPartyTypeKind.ZodUnion:
108
+ result.anyOf = def.options.map(parseZodType);
109
+ return returnResult(result);
110
+ case z.ZodFirstPartyTypeKind.ZodOptional:
111
+ return parseZodType(def.innerType);
112
+ case z.ZodFirstPartyTypeKind.ZodNullable:
113
+ const nullableInner = parseZodType(def.innerType);
114
+ return nullableInner ? returnResult(__spreadValues({
115
+ anyOf: [nullableInner, { type: Type.NULL }]
116
+ }, description && { description })) : returnResult(__spreadValues({ type: Type.NULL }, description && { description }));
117
+ case z.ZodFirstPartyTypeKind.ZodDefault:
118
+ const defaultInner = parseZodType(def.innerType);
119
+ if (defaultInner) defaultInner.default = def.defaultValue();
120
+ return defaultInner;
121
+ case z.ZodFirstPartyTypeKind.ZodBranded:
122
+ return parseZodType(def.type);
123
+ case z.ZodFirstPartyTypeKind.ZodReadonly:
124
+ return parseZodType(def.innerType);
125
+ case z.ZodFirstPartyTypeKind.ZodNull:
126
+ result.type = Type.NULL;
127
+ return returnResult(result);
128
+ case z.ZodFirstPartyTypeKind.ZodAny:
129
+ case z.ZodFirstPartyTypeKind.ZodUnknown:
130
+ return returnResult(__spreadValues({}, description && { description }));
131
+ default:
132
+ throw new Error("Unsupported Zod type: ".concat(def.typeName));
133
+ }
134
+ }
135
+ function zodObjectToSchema(schema) {
136
+ if (schema._def.typeName !== z.ZodFirstPartyTypeKind.ZodObject) {
137
+ throw new Error("Expected a ZodObject");
138
+ }
139
+ const shape = schema.shape;
140
+ const properties = {};
141
+ const required = [];
142
+ for (const key in shape) {
143
+ const fieldSchema = shape[key];
144
+ const parsedField = parseZodType(fieldSchema);
145
+ if (parsedField) {
146
+ properties[key] = parsedField;
147
+ }
148
+ let currentSchema = fieldSchema;
149
+ let isOptional = false;
150
+ while (currentSchema._def.typeName === z.ZodFirstPartyTypeKind.ZodOptional || currentSchema._def.typeName === z.ZodFirstPartyTypeKind.ZodDefault) {
151
+ isOptional = true;
152
+ currentSchema = currentSchema._def.innerType;
153
+ }
154
+ if (!isOptional) {
155
+ required.push(key);
156
+ }
157
+ }
158
+ const catchall = schema._def.catchall;
159
+ let additionalProperties = false;
160
+ if (catchall && catchall._def.typeName !== z.ZodFirstPartyTypeKind.ZodNever) {
161
+ additionalProperties = parseZodType(catchall) || true;
162
+ } else {
163
+ additionalProperties = schema._def.unknownKeys === "passthrough";
164
+ }
165
+ return __spreadValues({
166
+ type: Type.OBJECT,
167
+ properties,
168
+ required: required.length > 0 ? required : []
169
+ }, schema._def.description ? { description: schema._def.description } : {});
170
+ }
171
+ export {
172
+ isZodObject,
173
+ zodObjectToSchema
174
+ };
@@ -0,0 +1,24 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ var GoogleLLMVariant = /* @__PURE__ */ ((GoogleLLMVariant2) => {
7
+ GoogleLLMVariant2["VERTEX_AI"] = "VERTEX_AI";
8
+ GoogleLLMVariant2["GEMINI_API"] = "GEMINI_API";
9
+ return GoogleLLMVariant2;
10
+ })(GoogleLLMVariant || {});
11
+ function getGoogleLlmVariant() {
12
+ return getBooleanEnvVar("GOOGLE_GENAI_USE_VERTEXAI") ? "VERTEX_AI" /* VERTEX_AI */ : "GEMINI_API" /* GEMINI_API */;
13
+ }
14
+ function getBooleanEnvVar(envVar) {
15
+ if (!process.env) {
16
+ return false;
17
+ }
18
+ const envVarValue = (process.env[envVar] || "").toLowerCase();
19
+ return ["true", "1"].includes(envVar.toLowerCase());
20
+ }
21
+ export {
22
+ GoogleLLMVariant,
23
+ getGoogleLlmVariant
24
+ };
@@ -0,0 +1,9 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ const version = "0.1.0";
7
+ export {
8
+ version
9
+ };
package/package.json ADDED
@@ -0,0 +1,61 @@
1
+ {
2
+ "name": "@google/adk",
3
+ "version": "0.1.0",
4
+ "description": "Google ADK JS",
5
+ "author": "Google",
6
+ "license": "Apache-2.0",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "https://github.com/google/adk-js"
10
+ },
11
+ "files": [
12
+ "package.json",
13
+ "README.md",
14
+ "LICENSE",
15
+ "dist"
16
+ ],
17
+ "type": "module",
18
+ "typings": "./dist/types/index.d.ts",
19
+ "main": "./dist/cjs/index.js",
20
+ "module": "./dist/esm/index.js",
21
+ "browser": "./dist/web/index_web.js",
22
+ "exports": {
23
+ ".": {
24
+ "types": "./dist/types/index.d.ts",
25
+ "import": "./dist/esm/index.js",
26
+ "require": "./dist/cjs/index.js",
27
+ "default": "./dist/esm/index.js"
28
+ }
29
+ },
30
+ "scripts": {
31
+ "clean": "rm -rf dist",
32
+ "clean:all": "npm run clean && rm -rf node_modules",
33
+ "build": "tsc --emitDeclarationOnly && node ./build.js",
34
+ "build:bundle": "tsc --emitDeclarationOnly && node ./build.js --bundle",
35
+ "build:watch": "concurrently \"tsc --noEmit --watch --preserveWatchOutput\" \"node ./build.js --watch\"",
36
+ "test": "vitest",
37
+ "lint": "eslint 'src/**/*.ts'",
38
+ "format": "prettier --write 'src/**/*.ts'",
39
+ "prepublishOnly": "npm run build:bundle"
40
+ },
41
+ "devDependencies": {
42
+ "@types/node": "^20.12.7",
43
+ "@typescript-eslint/eslint-plugin": "^7.7.1",
44
+ "@typescript-eslint/parser": "^7.7.1",
45
+ "concurrently": "^9.2.1",
46
+ "esbuild": "^0.25.9",
47
+ "eslint-config-prettier": "^9.1.0",
48
+ "eslint": "^8.57.0",
49
+ "openapi-types": "^12.1.3",
50
+ "prettier": "^3.2.5",
51
+ "tslib": "^2.6.2",
52
+ "typescript": "^5.9.2",
53
+ "vitest": "^3.2.4"
54
+ },
55
+ "peerDependencies": {
56
+ "@google/genai": "1.14.0",
57
+ "@modelcontextprotocol/sdk": "1.17.5",
58
+ "@opentelemetry/api": "1.9.0",
59
+ "zod": "3.25.76"
60
+ }
61
+ }