@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,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: ${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 `${CONSOLE_COLOR_MAP[level]}[ADK ${LOG_LEVEL_STR[level]}]:${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,160 @@
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
+ function isZodObject(obj) {
9
+ var _a;
10
+ return obj !== null && typeof obj === "object" && ((_a = obj._def) == null ? void 0 : _a.typeName) === "ZodObject";
11
+ }
12
+ function parseZodType(zodType) {
13
+ const def = zodType._def;
14
+ if (!def) {
15
+ return {};
16
+ }
17
+ const description = def.description;
18
+ const result = {};
19
+ if (description) result.description = description;
20
+ const returnResult = (result2) => {
21
+ if (result2.description === void 0) {
22
+ delete result2.description;
23
+ }
24
+ return result2;
25
+ };
26
+ switch (def.typeName) {
27
+ case z.ZodFirstPartyTypeKind.ZodString:
28
+ result.type = Type.STRING;
29
+ for (const check of def.checks || []) {
30
+ if (check.kind === "min")
31
+ result.minLength = check.value.toString();
32
+ else if (check.kind === "max")
33
+ result.maxLength = check.value.toString();
34
+ else if (check.kind === "email")
35
+ result.format = "email";
36
+ else if (check.kind === "uuid")
37
+ result.format = "uuid";
38
+ else if (check.kind === "url")
39
+ result.format = "uri";
40
+ else if (check.kind === "regex")
41
+ result.pattern = check.regex.source;
42
+ }
43
+ return returnResult(result);
44
+ case z.ZodFirstPartyTypeKind.ZodNumber:
45
+ result.type = Type.NUMBER;
46
+ for (const check of def.checks || []) {
47
+ if (check.kind === "min")
48
+ result.minimum = check.value;
49
+ else if (check.kind === "max")
50
+ result.maximum = check.value;
51
+ else if (check.kind === "int")
52
+ result.type = Type.INTEGER;
53
+ }
54
+ return returnResult(result);
55
+ case z.ZodFirstPartyTypeKind.ZodBoolean:
56
+ result.type = Type.BOOLEAN;
57
+ return returnResult(result);
58
+ case z.ZodFirstPartyTypeKind.ZodArray:
59
+ result.type = Type.ARRAY;
60
+ result.items = parseZodType(def.type);
61
+ if (def.minLength) result.minItems = def.minLength.value.toString();
62
+ if (def.maxLength) result.maxItems = def.maxLength.value.toString();
63
+ return returnResult(result);
64
+ case z.ZodFirstPartyTypeKind.ZodObject: {
65
+ const nestedSchema = zodObjectToSchema(zodType);
66
+ return nestedSchema;
67
+ }
68
+ case z.ZodFirstPartyTypeKind.ZodLiteral:
69
+ const literalType = typeof def.value;
70
+ result.enum = [def.value.toString()];
71
+ if (literalType === "string") {
72
+ result.type = Type.STRING;
73
+ } else if (literalType === "number") {
74
+ result.type = Type.NUMBER;
75
+ } else if (literalType === "boolean") {
76
+ result.type = Type.BOOLEAN;
77
+ } else if (def.value === null) {
78
+ result.type = Type.NULL;
79
+ } else {
80
+ throw new Error(`Unsupported ZodLiteral value type: ${literalType}`);
81
+ }
82
+ return returnResult(result);
83
+ case z.ZodFirstPartyTypeKind.ZodEnum:
84
+ result.type = Type.STRING;
85
+ result.enum = def.values;
86
+ return returnResult(result);
87
+ case z.ZodFirstPartyTypeKind.ZodNativeEnum:
88
+ result.type = Type.STRING;
89
+ result.enum = Object.values(def.values);
90
+ return returnResult(result);
91
+ case z.ZodFirstPartyTypeKind.ZodUnion:
92
+ result.anyOf = def.options.map(parseZodType);
93
+ return returnResult(result);
94
+ case z.ZodFirstPartyTypeKind.ZodOptional:
95
+ return parseZodType(def.innerType);
96
+ case z.ZodFirstPartyTypeKind.ZodNullable:
97
+ const nullableInner = parseZodType(def.innerType);
98
+ return nullableInner ? returnResult({
99
+ anyOf: [nullableInner, { type: Type.NULL }],
100
+ ...description && { description }
101
+ }) : returnResult({ type: Type.NULL, ...description && { description } });
102
+ case z.ZodFirstPartyTypeKind.ZodDefault:
103
+ const defaultInner = parseZodType(def.innerType);
104
+ if (defaultInner) defaultInner.default = def.defaultValue();
105
+ return defaultInner;
106
+ case z.ZodFirstPartyTypeKind.ZodBranded:
107
+ return parseZodType(def.type);
108
+ case z.ZodFirstPartyTypeKind.ZodReadonly:
109
+ return parseZodType(def.innerType);
110
+ case z.ZodFirstPartyTypeKind.ZodNull:
111
+ result.type = Type.NULL;
112
+ return returnResult(result);
113
+ case z.ZodFirstPartyTypeKind.ZodAny:
114
+ case z.ZodFirstPartyTypeKind.ZodUnknown:
115
+ return returnResult({ ...description && { description } });
116
+ default:
117
+ throw new Error(`Unsupported Zod type: ${def.typeName}`);
118
+ }
119
+ }
120
+ function zodObjectToSchema(schema) {
121
+ if (schema._def.typeName !== z.ZodFirstPartyTypeKind.ZodObject) {
122
+ throw new Error("Expected a ZodObject");
123
+ }
124
+ const shape = schema.shape;
125
+ const properties = {};
126
+ const required = [];
127
+ for (const key in shape) {
128
+ const fieldSchema = shape[key];
129
+ const parsedField = parseZodType(fieldSchema);
130
+ if (parsedField) {
131
+ properties[key] = parsedField;
132
+ }
133
+ let currentSchema = fieldSchema;
134
+ let isOptional = false;
135
+ while (currentSchema._def.typeName === z.ZodFirstPartyTypeKind.ZodOptional || currentSchema._def.typeName === z.ZodFirstPartyTypeKind.ZodDefault) {
136
+ isOptional = true;
137
+ currentSchema = currentSchema._def.innerType;
138
+ }
139
+ if (!isOptional) {
140
+ required.push(key);
141
+ }
142
+ }
143
+ const catchall = schema._def.catchall;
144
+ let additionalProperties = false;
145
+ if (catchall && catchall._def.typeName !== z.ZodFirstPartyTypeKind.ZodNever) {
146
+ additionalProperties = parseZodType(catchall) || true;
147
+ } else {
148
+ additionalProperties = schema._def.unknownKeys === "passthrough";
149
+ }
150
+ return {
151
+ type: Type.OBJECT,
152
+ properties,
153
+ required: required.length > 0 ? required : [],
154
+ ...schema._def.description ? { description: schema._def.description } : {}
155
+ };
156
+ }
157
+ export {
158
+ isZodObject,
159
+ zodObjectToSchema
160
+ };
@@ -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
+ };
@@ -0,0 +1,29 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { LiveRequestQueue } from './live_request_queue.js';
7
+ /**
8
+ * The parameters for creating an ActiveStreamingTool.
9
+ */
10
+ export interface ActiveStreamingToolParams {
11
+ task?: Promise<void>;
12
+ stream?: LiveRequestQueue;
13
+ }
14
+ /**
15
+ * Manages streaming tool related resources during invocation.
16
+ */
17
+ export declare class ActiveStreamingTool {
18
+ /**
19
+ * The active task of this streaming tool.
20
+ * TODO: Replace 'Promise<void>' with a proper Task type if available in this
21
+ * env.
22
+ */
23
+ task?: Promise<void>;
24
+ /**
25
+ * The active (input) streams of this streaming tool.
26
+ */
27
+ stream?: LiveRequestQueue;
28
+ constructor(params?: ActiveStreamingToolParams);
29
+ }
@@ -0,0 +1,167 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { Content } from '@google/genai';
7
+ import { Event } from '../events/event.js';
8
+ import { CallbackContext } from './callback_context.js';
9
+ import { InvocationContext } from './invocation_context.js';
10
+ type SingleAgentCallback = (context: CallbackContext) => Promise<Content | undefined> | (Content | undefined);
11
+ type BeforeAgentCallback = SingleAgentCallback | SingleAgentCallback[];
12
+ type AfterAgentCallback = SingleAgentCallback | SingleAgentCallback[];
13
+ /**
14
+ * The config of a base agent.
15
+ */
16
+ export interface BaseAgentConfig {
17
+ name: string;
18
+ description?: string;
19
+ parentAgent?: BaseAgent;
20
+ subAgents?: BaseAgent[];
21
+ beforeAgentCallback?: BeforeAgentCallback;
22
+ afterAgentCallback?: AfterAgentCallback;
23
+ }
24
+ /**
25
+ * Base class for all agents in Agent Development Kit.
26
+ */
27
+ export declare abstract class BaseAgent {
28
+ /**
29
+ * The agent's name.
30
+ * Agent name must be a JS identifier and unique within the agent tree.
31
+ * Agent name cannot be "user", since it's reserved for end-user's input.
32
+ */
33
+ readonly name: string;
34
+ /**
35
+ * Description about the agent's capability.
36
+ *
37
+ * The model uses this to determine whether to delegate control to the agent.
38
+ * One-line description is enough and preferred.
39
+ */
40
+ readonly description?: string;
41
+ /**
42
+ * Root agent of this agent.
43
+ */
44
+ readonly rootAgent: BaseAgent;
45
+ /**
46
+ * The parent agent of this agent.
47
+ *
48
+ * Note that an agent can ONLY be added as sub-agent once.
49
+ *
50
+ * If you want to add one agent twice as sub-agent, consider to create two
51
+ * agent instances with identical config, but with different name and add them
52
+ * to the agent tree.
53
+ *
54
+ * The parent agent is the agent that created this agent.
55
+ */
56
+ parentAgent?: BaseAgent;
57
+ /**
58
+ * The sub-agents of this agent.
59
+ */
60
+ readonly subAgents: BaseAgent[];
61
+ /**
62
+ * Callback or list of callbacks to be invoked before the agent run.
63
+ *
64
+ * When a list of callbacks is provided, the callbacks will be called in the
65
+ * order they are listed until a callback does not return undefined.
66
+ *
67
+ * @param callbackContext: MUST be named 'callbackContext' (enforced).
68
+ *
69
+ * @return Content: The content to return to the user. When the content is
70
+ * present, the agent run will be skipped and the provided content will be
71
+ * returned to user.
72
+ */
73
+ readonly beforeAgentCallback: SingleAgentCallback[];
74
+ /**
75
+ * Callback or list of callbacks to be invoked after the agent run.
76
+ *
77
+ * When a list of callbacks is provided, the callbacks will be called in the
78
+ * order they are listed until a callback does not return undefined.
79
+ *
80
+ * @param callbackContext: MUST be named 'callbackContext' (enforced).
81
+ *
82
+ * @return Content: The content to return to the user. When the content is
83
+ * present, the provided content will be used as agent response and
84
+ * appended to event history as agent response.
85
+ */
86
+ readonly afterAgentCallback: SingleAgentCallback[];
87
+ constructor(config: BaseAgentConfig);
88
+ /**
89
+ * Entry method to run an agent via text-based conversation.
90
+ *
91
+ * @param parentContext The invocation context of the parent agent.
92
+ * @yields The events generated by the agent.
93
+ * @returns An AsyncGenerator that yields the events generated by the agent.
94
+ */
95
+ runAsync(parentContext: InvocationContext): AsyncGenerator<Event, void, void>;
96
+ /**
97
+ * Entry method to run an agent via video/audio-based conversation.
98
+ *
99
+ * @param parentContext The invocation context of the parent agent.
100
+ * @yields The events generated by the agent.
101
+ * @returns An AsyncGenerator that yields the events generated by the agent.
102
+ */
103
+ runLive(parentContext: InvocationContext): AsyncGenerator<Event, void, void>;
104
+ /**
105
+ * Core logic to run this agent via text-based conversation.
106
+ *
107
+ * @param context The invocation context of the agent.
108
+ * @yields The events generated by the agent.
109
+ * @returns An AsyncGenerator that yields the events generated by the agent.
110
+ */
111
+ protected abstract runAsyncImpl(context: InvocationContext): AsyncGenerator<Event, void, void>;
112
+ /**
113
+ * Core logic to run this agent via video/audio-based conversation.
114
+ *
115
+ * @param context The invocation context of the agent.
116
+ * @yields The events generated by the agent.
117
+ * @returns An AsyncGenerator that yields the events generated by the agent.
118
+ */
119
+ protected abstract runLiveImpl(context: InvocationContext): AsyncGenerator<Event, void, void>;
120
+ /**
121
+ * Finds the agent with the given name in this agent and its descendants.
122
+ *
123
+ * @param name The name of the agent to find.
124
+ * @return The agent with the given name, or undefined if not found.
125
+ */
126
+ findAgent(name: string): BaseAgent | undefined;
127
+ /**
128
+ * Finds the agent with the given name in this agent's descendants.
129
+ *
130
+ * @param name The name of the agent to find.
131
+ * @return The agent with the given name, or undefined if not found.
132
+ */
133
+ findSubAgent(name: string): BaseAgent | undefined;
134
+ /**
135
+ * Creates an invocation context for this agent.
136
+ *
137
+ * @param parentContext The invocation context of the parent agent.
138
+ * @return The invocation context for this agent.
139
+ */
140
+ protected createInvocationContext(parentContext: InvocationContext): InvocationContext;
141
+ /**
142
+ * Runs the before agent callback if it exists.
143
+ *
144
+ * @param invocationContext The invocation context of the agent.
145
+ * @return The event to return to the user, or undefined if no event is
146
+ * generated.
147
+ */
148
+ protected handleBeforeAgentCallback(invocationContext: InvocationContext): Promise<Event | undefined>;
149
+ /**
150
+ * Runs the after agent callback if it exists.
151
+ *
152
+ * @param invocationContext The invocation context of the agent.
153
+ * @return The event to return to the user, or undefined if no event is
154
+ * generated.
155
+ */
156
+ protected handleAfterAgentCallback(invocationContext: InvocationContext): Promise<Event | undefined>;
157
+ private setParentAgentForSubAgents;
158
+ }
159
+ /**
160
+ * Gets the canonical callback from the given callback.
161
+ *
162
+ * @param callbacks The callback or list of callbacks to get the canonical
163
+ * callback from.
164
+ * @return The canonical callback.
165
+ */
166
+ export declare function getCannonicalCallback<T>(callbacks?: T | T[]): T[];
167
+ export {};
@@ -0,0 +1,27 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { InvocationContext } from '../agents/invocation_context.js';
7
+ import { Event } from '../events/event.js';
8
+ import { LlmRequest } from '../models/llm_request.js';
9
+ import { LlmResponse } from '../models/llm_response.js';
10
+ /**
11
+ * Base class for LLM request processor.
12
+ */
13
+ export declare abstract class BaseLlmRequestProcessor {
14
+ /**
15
+ * Runs the processor.
16
+ */
17
+ abstract runAsync(invocationContext: InvocationContext, llmRequest: LlmRequest): AsyncGenerator<Event, void, void>;
18
+ }
19
+ /**
20
+ * Base class for LLM response processor.
21
+ */
22
+ export declare abstract class BaseLlmResponseProcessor {
23
+ /**
24
+ * Processes the LLM response.
25
+ */
26
+ abstract runAsync(invocationContext: InvocationContext, llmResponse: LlmResponse): AsyncGenerator<Event, void, void>;
27
+ }
@@ -0,0 +1,42 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { Part } from '@google/genai';
7
+ import { EventActions } from '../events/event_actions.js';
8
+ import { State } from '../sessions/state.js';
9
+ import { InvocationContext } from './invocation_context.js';
10
+ import { ReadonlyContext } from './readonly_context.js';
11
+ /**
12
+ * The context of various callbacks within an agent run.
13
+ */
14
+ export declare class CallbackContext extends ReadonlyContext {
15
+ private readonly _state;
16
+ readonly eventActions: EventActions;
17
+ constructor({ invocationContext, eventActions }: {
18
+ invocationContext: InvocationContext;
19
+ eventActions?: EventActions;
20
+ });
21
+ /**
22
+ * The delta-aware state of the current session.
23
+ */
24
+ get state(): State;
25
+ /**
26
+ * Loads an artifact attached to the current session.
27
+ *
28
+ * @param filename The filename of the artifact.
29
+ * @param version The version of the artifact. If not provided, the latest
30
+ * version will be used.
31
+ * @return A promise that resolves to the loaded artifact.
32
+ */
33
+ loadArtifact(filename: string, version?: number): Promise<Part | undefined>;
34
+ /**
35
+ * Saves an artifact attached to the current session.
36
+ *
37
+ * @param filename The filename of the artifact.
38
+ * @param artifact The artifact to save.
39
+ * @return A promise that resolves to the version of the saved artifact.
40
+ */
41
+ saveArtifact(filename: string, artifact: Part): Promise<number>;
42
+ }