@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,227 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ /**
7
+ * Represents the secret token value for HTTP authentication, like user name,
8
+ * password, oauth token, etc.
9
+ */
10
+ export interface HttpCredentials {
11
+ username?: string;
12
+ password?: string;
13
+ token?: string;
14
+ }
15
+ /**
16
+ * The credentials and metadata for HTTP authentication.
17
+ */
18
+ export interface HttpAuth {
19
+ /**
20
+ * The name of the HTTP Authorization scheme to be used in the Authorization
21
+ * header as defined in RFC7235. The values used SHOULD be registered in the
22
+ * IANA Authentication Scheme registry.
23
+ * Examples: 'basic', 'bearer'
24
+ */
25
+ scheme: string;
26
+ credentials: HttpCredentials;
27
+ }
28
+ /**
29
+ * Represents credential value and its metadata for a OAuth2 credential.
30
+ */
31
+ export interface OAuth2Auth {
32
+ clientId?: string;
33
+ clientSecret?: string;
34
+ /**
35
+ * tool or adk can generate the authUri with the state info thus client can
36
+ * verify the state
37
+ */
38
+ authUri?: string;
39
+ state?: string;
40
+ /**
41
+ * tool or adk can decide the redirect_uri if they don't want client to decide
42
+ */
43
+ redirectUri?: string;
44
+ authResponseUri?: string;
45
+ authCode?: string;
46
+ accessToken?: string;
47
+ refreshToken?: string;
48
+ expiresAt?: number;
49
+ expiresIn?: number;
50
+ }
51
+ /**
52
+ * Represents Google Service Account configuration.
53
+ * @example
54
+ * config = {
55
+ * type: "service_account",
56
+ * projectId: "your_project_id",
57
+ * privateKeyId: "your_private_key_id",
58
+ * privateKey: "-----BEGIN PRIVATE KEY-----...",
59
+ * clientEmail: "...@....iam.gserviceaccount.com",
60
+ * clientId: "your_client_id",
61
+ * authUri: "https://accounts.google.com/o/oauth2/auth",
62
+ * tokenUri: "https://oauth2.googleapis.com/token",
63
+ * authProviderX509CertUrl: "https://www.googleapis.com/oauth2/v1/certs",
64
+ * clientX509CertUrl: "https://www.googleapis.com/robot/v1/metadata/x509/...",
65
+ * universeDomain: "googleapis.com",
66
+ * }
67
+ */
68
+ export interface ServiceAccountCredential {
69
+ /**
70
+ * The type should be 'service_account'.
71
+ */
72
+ type: 'service_account';
73
+ /**
74
+ * The project ID of the Google Cloud project.
75
+ */
76
+ projectId: string;
77
+ /**
78
+ * The ID of the private key.
79
+ */
80
+ privateKeyId: string;
81
+ /**
82
+ * The private key value.
83
+ */
84
+ privateKey: string;
85
+ /**
86
+ * The client email.
87
+ */
88
+ clientEmail: string;
89
+ /**
90
+ * The client ID.
91
+ */
92
+ clientId: string;
93
+ /**
94
+ * The authorization URI.
95
+ */
96
+ authUri: string;
97
+ /**
98
+ * The token URI.
99
+ */
100
+ tokenUri: string;
101
+ /**
102
+ * URL for auth provider's X.509 cert.
103
+ */
104
+ authProviderX509CertUrl: string;
105
+ /**
106
+ * URL for the client's X.509 cert.
107
+ */
108
+ clientX509CertUrl: string;
109
+ /**
110
+ * The universe domain.
111
+ */
112
+ universeDomain: string;
113
+ }
114
+ /**
115
+ * Represents Google Service Account configuration.
116
+ */
117
+ export interface ServiceAccount {
118
+ serviceAccountCredential?: ServiceAccountCredential;
119
+ scopes?: string[];
120
+ useDefaultCredential?: boolean;
121
+ }
122
+ export declare enum AuthCredentialTypes {
123
+ /**
124
+ * API Key credential:
125
+ * @see {@link https://swagger.io/docs/specification/v3_0/authentication/api-keys/}
126
+ */
127
+ API_KEY = "apiKey",
128
+ /**
129
+ * Credentials for HTTP Auth schemes:
130
+ * @see {@link https://www.iana.org/assignments/http-authschemes/http-auth-schemes.xhtml}
131
+ */
132
+ HTTP = "http",
133
+ /**
134
+ * OAuth2 credentials:
135
+ * @see {@link https://swagger.io/docs/specification/v3_0/authentication/oauth2/}
136
+ */
137
+ OAUTH2 = "oauth2",
138
+ /**
139
+ * Open ID Connect credentials:
140
+ * @see {@link https://swagger.io/docs/specification/v3_0/authentication/openid-connect-discovery/}
141
+ */
142
+ OPEN_ID_CONNECT = "openIdConnect",
143
+ /**
144
+ * Service Account credentials:
145
+ * @see {@link https://cloud.google.com/iam/docs/service-account-creds}
146
+ */
147
+ SERVICE_ACCOUNT = "serviceAccount"
148
+ }
149
+ /**
150
+ * Data class representing an authentication credential.
151
+ *
152
+ * To exchange for the actual credential, please use
153
+ * CredentialExchanger.exchangeCredential().
154
+ *
155
+ * @example
156
+ * // API Key Auth
157
+ * const authCredential: AuthCredential = {
158
+ * authType: AuthCredentialTypes.API_KEY,
159
+ * apiKey: "your_api_key",
160
+ * };
161
+ *
162
+ * @example
163
+ * // HTTP Auth
164
+ * const authCredential: AuthCredential = {
165
+ * authType: AuthCredentialTypes.HTTP,
166
+ * http: {
167
+ * scheme: "basic",
168
+ * credentials: {
169
+ * username: "user",
170
+ * password: "password",
171
+ * },
172
+ * }
173
+ * }
174
+ *
175
+ * @example
176
+ * // OAuth2 Bearer Token in HTTP Header
177
+ * const authCredential: AuthCredential = {
178
+ * authType: AuthCredentialTypes.HTTP,
179
+ * http: {
180
+ * scheme: "bearer",
181
+ * credentials: {
182
+ * token: "your_access_token",
183
+ * },
184
+ * }
185
+ * }
186
+ *
187
+ * @example
188
+ * // OAuth2 Auth with Authorization Code Flow
189
+ * const authCredential: AuthCredential = {
190
+ * authType: AuthCredentialTypes.OAUTH2,
191
+ * oauth2: {
192
+ * clientId: "your_client_id",
193
+ * clientSecret: "your_client_secret",
194
+ * }
195
+ * }
196
+ *
197
+ * @example:
198
+ * // Open ID Connect Auth
199
+ * const authCredential: AuthCredential = {
200
+ * authType: AuthCredentialTypes.OPEN_ID_CONNECT,
201
+ * oauth2: {
202
+ * clientId: "1234",
203
+ * clientSecret: "secret",
204
+ * redirectUri: "https://example.com",
205
+ * scopes: ["scope1", "scope2"],
206
+ * }
207
+ * }
208
+ *
209
+ * @example:
210
+ * // Auth with resource reference
211
+ * const authCredential: AuthCredential = {
212
+ * authType: AuthCredentialTypes.API_KEY,
213
+ * resourceRef: "projects/1234/locations/us-central1/resources/resource1"
214
+ * }
215
+ */
216
+ export interface AuthCredential {
217
+ authType: AuthCredentialTypes;
218
+ /**
219
+ * Resource reference for the credential.
220
+ * This will be supported in the future.
221
+ */
222
+ resourceRef?: string;
223
+ apiKey?: string;
224
+ http?: HttpAuth;
225
+ serviceAccount?: ServiceAccount;
226
+ oauth2?: OAuth2Auth;
227
+ }
@@ -0,0 +1,27 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { State } from '../sessions/state.js';
7
+ import { AuthCredential } from './auth_credential.js';
8
+ import { AuthConfig } from './auth_tool.js';
9
+ /**
10
+ * A handler that handles the auth flow in Agent Development Kit to help
11
+ * orchestrates the credential request and response flow (e.g. OAuth flow)
12
+ * This class should only be used by Agent Development Kit.
13
+ */
14
+ export declare class AuthHandler {
15
+ private readonly authConfig;
16
+ constructor(authConfig: AuthConfig);
17
+ getAuthResponse(state: State): AuthCredential | undefined;
18
+ generateAuthRequest(): AuthConfig;
19
+ /**
20
+ * Generates an response containing the auth uri for user to sign in.
21
+ *
22
+ * @return An AuthCredential object containing the auth URI and state.
23
+ * @throws Error: If the authorization endpoint is not configured in the
24
+ * auth scheme.
25
+ */
26
+ generateAuthUri(): AuthCredential | undefined;
27
+ }
@@ -0,0 +1,36 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { OpenAPIV3 } from 'openapi-types';
7
+ type Oauth2Flow = OpenAPIV3.OAuth2SecurityScheme['flows'];
8
+ export interface OpenIdConnectWithConfig extends OpenAPIV3
9
+ .OpenIdSecurityScheme {
10
+ authorizationEndpoint: string;
11
+ tokenEndpoint: string;
12
+ userinfoEndpoint?: string;
13
+ revocationEndpoint?: string;
14
+ tokenEndpointAuthMethodsSupported?: string[];
15
+ grantTypesSupported?: string[];
16
+ scopes?: string[];
17
+ }
18
+ /**
19
+ * AuthSchemes contains SecuritySchemes from OpenAPI 3.0 and an extra flattened
20
+ * OpenIdConnectWithConfig.
21
+ */
22
+ export type AuthScheme = OpenAPIV3.SecuritySchemeObject | OpenIdConnectWithConfig;
23
+ /**
24
+ * Represents the OAuth2 flow (or grant type).
25
+ */
26
+ export declare enum OAuthGrantType {
27
+ CLIENT_CREDENTIALS = "client_credentials",
28
+ AUTHORIZATION_CODE = "authorization_code",
29
+ IMPLICIT = "implicit",
30
+ PASSWORD = "password"
31
+ }
32
+ /**
33
+ * Converts an OAuthFlows object to a OAuthGrantType.
34
+ */
35
+ export declare function getOAuthGrantTypeFromFlow(flow: Oauth2Flow): OAuthGrantType | undefined;
36
+ export {};
@@ -0,0 +1,51 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { AuthCredential } from './auth_credential.js';
7
+ import { AuthScheme } from './auth_schemes.js';
8
+ /**
9
+ * The auth config sent by tool asking client to collect auth credentials and
10
+ * adk and client will help to fill in the response.
11
+ */
12
+ export interface AuthConfig {
13
+ /**
14
+ * The auth scheme used to collect credentials
15
+ */
16
+ authScheme: AuthScheme;
17
+ /**
18
+ * The raw auth credential used to collect credentials. The raw auth
19
+ * credentials are used in some auth scheme that needs to exchange auth
20
+ * credentials. e.g. OAuth2 and OIDC. For other auth scheme, it could be
21
+ * undefined.
22
+ */
23
+ rawAuthCredential?: AuthCredential;
24
+ /**
25
+ * The exchanged auth credential used to collect credentials. adk and client
26
+ * will work together to fill it. For those auth scheme that doesn't need to
27
+ * exchange auth credentials, e.g. API key, service account etc. It's filled
28
+ * by client directly. For those auth scheme that need to exchange auth
29
+ * credentials, e.g. OAuth2 and OIDC, it's first filled by adk. If the raw
30
+ * credentials passed by tool only has client id and client credential, adk
31
+ * will help to generate the corresponding authorization uri and state and
32
+ * store the processed credential in this field. If the raw credentials passed
33
+ * by tool already has authorization uri, state, etc. then it's copied to this
34
+ * field. Client will use this field to guide the user through the OAuth2 flow
35
+ * and fill auth response in this field
36
+ */
37
+ exchangedAuthCredential?: AuthCredential;
38
+ /**
39
+ * A user specified key used to load and save this credential in a credential
40
+ * service.
41
+ */
42
+ credentialKey: string;
43
+ }
44
+ /**
45
+ * The arguments for the special long running function tool that is used to
46
+ * request end user credentials.
47
+ */
48
+ export interface AuthToolArguments {
49
+ functionCallId: string;
50
+ authConfig: AuthConfig;
51
+ }
@@ -0,0 +1,27 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { ToolContext } from '../../tools/tool_context.js';
7
+ import { AuthCredential } from '../auth_credential.js';
8
+ import { AuthConfig } from '../auth_tool.js';
9
+ /**
10
+ * Abstract class for Service that loads / saves tool credentials from / to the
11
+ * backend credential store.
12
+ */
13
+ export interface BaseCredentialService {
14
+ /**
15
+ * Loads the credential by auth config and current tool context from the
16
+ * backend credential store.
17
+ *
18
+ * @param authConfig The auth config which contains the auth scheme and auth
19
+ * credential information. auth_config.get_credential_key will be used to
20
+ * build the key to load the credential.
21
+ * @param toolContext The context of the current invocation when the tool is
22
+ * trying to load the credential.
23
+ * @return A promise that resolves to the credential saved in the store.
24
+ */
25
+ loadCredential(authConfig: AuthConfig, toolContext: ToolContext): Promise<AuthCredential | undefined>;
26
+ saveCredential(authConfig: AuthConfig, toolContext: ToolContext): Promise<void>;
27
+ }
@@ -0,0 +1,19 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { ToolContext } from '../../tools/tool_context.js';
7
+ import { AuthCredential } from '../auth_credential.js';
8
+ import { AuthConfig } from '../auth_tool.js';
9
+ import { BaseCredentialService } from './base_credential_service.js';
10
+ /**
11
+ * @experimental (Experimental, subject to change) Class for in memory
12
+ * implementation of credential service
13
+ */
14
+ export declare class InMemoryCredentialService implements BaseCredentialService {
15
+ private readonly credentials;
16
+ loadCredential(authConfig: AuthConfig, toolContext: ToolContext): Promise<AuthCredential | undefined>;
17
+ saveCredential(authConfig: AuthConfig, toolContext: ToolContext): Promise<void>;
18
+ private getBucketForCurrentContext;
19
+ }
@@ -0,0 +1,60 @@
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 { CodeExecutionInput, CodeExecutionResult } from './code_execution_utils.js';
8
+ /**
9
+ * The parameters for executing code.
10
+ * */
11
+ export interface ExecuteCodeParams {
12
+ /** The invocation context of the code execution. */
13
+ invocationContext: InvocationContext;
14
+ /** The input of the code execution. */
15
+ codeExecutionInput: CodeExecutionInput;
16
+ }
17
+ /**
18
+ * The code executor allows the agent to execute code blocks from model
19
+ * responses and incorporate the execution results into the final response.
20
+ */
21
+ export declare abstract class BaseCodeExecutor {
22
+ /**
23
+ * If true, extract and process data files from the model request
24
+ * and attach them to the code executor.
25
+ *
26
+ * Supported data file MimeTypes are [text/csv].
27
+ * Default to false.
28
+ */
29
+ optimizeDataFile: boolean;
30
+ /**
31
+ * Whether the code executor is stateful. Default to false.
32
+ */
33
+ stateful: boolean;
34
+ /**
35
+ * The number of attempts to retry on consecutive code execution errors.
36
+ * Default to 2.
37
+ */
38
+ errorRetryAttempts: number;
39
+ /**
40
+ * The list of the enclosing delimiters to identify the code blocks.
41
+ * For example, the delimiter('```python\\n', '\\n```') can be used to
42
+ * identify code blocks with the following format::
43
+ *
44
+ * ```python
45
+ * print("hello")
46
+ * ```
47
+ */
48
+ codeBlockDelimiters: Array<[string, string]>;
49
+ /**
50
+ * The delimiters to format the code execution result.
51
+ */
52
+ executionResultDelimiters: [string, string];
53
+ /**
54
+ * Executes code and return the code execution result.
55
+ *
56
+ * @param params The parameters for executing code.
57
+ * @return The result of the code execution.
58
+ */
59
+ abstract executeCode(params: ExecuteCodeParams): Promise<CodeExecutionResult>;
60
+ }
@@ -0,0 +1,13 @@
1
+ import { LlmRequest } from '../models/llm_request.js';
2
+ import { BaseCodeExecutor, ExecuteCodeParams } from './base_code_executor.js';
3
+ import { CodeExecutionResult } from './code_execution_utils.js';
4
+ /**
5
+ * A code executor that uses the Model's built-in code executor.
6
+ *
7
+ * Currently only supports Gemini 2.0+ models, but will be expanded to
8
+ * other models.
9
+ */
10
+ export declare class BuiltInCodeExecutor extends BaseCodeExecutor {
11
+ executeCode(params: ExecuteCodeParams): Promise<CodeExecutionResult>;
12
+ processLlmRequest(llmRequest: LlmRequest): void;
13
+ }
@@ -0,0 +1,99 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { Content, Part } from '@google/genai';
7
+ /**
8
+ * A structure that contains a file name and its content
9
+ */
10
+ export interface File {
11
+ /**
12
+ * The name of the file with file extension(e.g., ' file.csv')
13
+ * */
14
+ name: string;
15
+ /**
16
+ * The base64 - encoded bytes of the file content.
17
+ * */
18
+ content: string;
19
+ /**
20
+ * The mime type of the file (e.g., ' image / png')
21
+ * */
22
+ mimeType: string;
23
+ }
24
+ /**
25
+ * A structure that contains the input of code execution.
26
+ * */
27
+ export interface CodeExecutionInput {
28
+ /**
29
+ * The code to execute.
30
+ * */
31
+ code: string;
32
+ /**
33
+ * The input files available to the code.
34
+ * */
35
+ inputFiles: File[];
36
+ /**
37
+ * The execution ID for the stateful code execution.
38
+ * */
39
+ executionId?: string;
40
+ }
41
+ /**
42
+ * A structure that contains the result of code execution.
43
+ * */
44
+ export interface CodeExecutionResult {
45
+ /**
46
+ * The standard output of the code execution.
47
+ * */
48
+ stdout: string;
49
+ /**
50
+ * The standard error of the code execution.
51
+ * */
52
+ stderr: string;
53
+ /**
54
+ * The output files from the code execution.
55
+ * */
56
+ outputFiles: File[];
57
+ }
58
+ /**
59
+ * Gets the file content as a base64-encoded bytes.
60
+ *
61
+ * @param data The file content bytes.
62
+ * @return The file content as a base64-encoded bytes.
63
+ */
64
+ export declare function getEncodedFileContent(data: string): string;
65
+ /**
66
+ * Extracts the first code block from the content and truncate everything after
67
+ * it.
68
+ *
69
+ * @param content The mutable content to extract the code from.
70
+ * @param codeBlockDelimiters The list of the enclosing delimiters to identify
71
+ * the code blocks.
72
+ * @return The first code block if found, otherwise None.
73
+ */
74
+ export declare function extractCodeAndTruncateContent(content: Content, codeBlockDelimiters: Array<[string, string]>): string;
75
+ /**
76
+ * Builds an executable code part with code string.
77
+ *
78
+ * @param code The code string.
79
+ * @return The constructed executable code part.
80
+ */
81
+ export declare function buildExecutableCodePart(code: string): Part;
82
+ /**
83
+ * Builds the code execution result part from the code execution result.
84
+ *
85
+ * @param codeExecutionResult The code execution result.
86
+ * @return The code execution result part.
87
+ */
88
+ export declare function buildCodeExecutionResultPart(codeExecutionResult: CodeExecutionResult): Part;
89
+ /**
90
+ * Converts the code execution parts to text parts in a Content.
91
+ *
92
+ * @param content The mutable content to convert the code execution parts to
93
+ * text parts.
94
+ * @param codeBlockDelimiter The delimiter to format the code block.
95
+ * @param executionResultDelimiters The delimiter to format the code execution
96
+ * result.
97
+ * @return The converted content.
98
+ */
99
+ export declare function convertCodeExecutionParts(content: Content, codeBlockDelimiter: [string, string], executionResultDelimiters: [string, string]): void;
@@ -0,0 +1,92 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { State } from '../sessions/state.js';
7
+ import { File } from './code_execution_utils.js';
8
+ /**
9
+ * The parameters for updating the code execution result.
10
+ * */
11
+ export interface UpdateCodeExecutionResultParams {
12
+ invocationId: string;
13
+ code: string;
14
+ resultStdout: string;
15
+ resultStderr: string;
16
+ }
17
+ /**
18
+ * The persistent context used to configure the code executor.
19
+ */
20
+ export declare class CodeExecutorContext {
21
+ private readonly sessionState;
22
+ private readonly context;
23
+ constructor(sessionState: State);
24
+ /**
25
+ * Gets the state delta to update in the persistent session state.
26
+ * @return The state delta to update in the persistent session state.
27
+ */
28
+ getStateDelta(): Record<string, unknown>;
29
+ /**
30
+ * Gets the execution ID for the code executor.
31
+ * @return The execution ID for the code executor.
32
+ */
33
+ getExecutionId(): string | undefined;
34
+ /**
35
+ * Sets the execution ID for the code executor.
36
+ * @param executionId The execution ID to set.
37
+ */
38
+ setExecutionId(executionId: string): void;
39
+ /**
40
+ * Gets the processed file names from the session state.
41
+ * @return A list of processed file names in the code executor context.
42
+ */
43
+ getProcessedFileNames(): string[];
44
+ /**
45
+ * Adds the processed file names to the session state.
46
+ * @param fileNames The file names to add to the session state.
47
+ */
48
+ addProcessedFileNames(fileNames: string[]): void;
49
+ /**
50
+ * Gets the input files from the session state.
51
+ * @return A list of input files in the code executor context.
52
+ */
53
+ getInputFiles(): File[];
54
+ /**
55
+ * Adds the input files to the session state.
56
+ * @param inputFiles The input files to add to the session state.
57
+ */
58
+ addInputFiles(inputFiles: File[]): void;
59
+ clearInputFiles(): void;
60
+ /**
61
+ * Gets the error count from the session state.
62
+ * @param invocationId The invocation ID to get the error count for.
63
+ * @return The error count for the given invocation ID.
64
+ */
65
+ getErrorCount(invocationId: string): number;
66
+ /**
67
+ * Increments the error count from the session state.
68
+ * @param invocationId The invocation ID to increment the error count for.
69
+ */
70
+ incrementErrorCount(invocationId: string): void;
71
+ /**
72
+ * Resets the error count from the session state.
73
+ * @param invocationId The invocation ID to reset the error count for.
74
+ */
75
+ resetErrorCount(invocationId: string): void;
76
+ /**
77
+ * Updates the code execution result.
78
+ * @param invocationId The invocation ID to update the code execution result
79
+ * for.
80
+ * @param code The code to execute.
81
+ * @param resultStdout The standard output of the code execution.
82
+ * @param resultStderr The standard error of the code execution.
83
+ */
84
+ updateCodeExecutionResult({ invocationId, code, resultStdout, resultStderr, }: UpdateCodeExecutionResultParams): void;
85
+ /**
86
+ * Gets the code executor context from the session state.
87
+ * @param invocationId The session state to get the code executor context
88
+ * from.
89
+ * @return The code execution context for the given invocation ID.
90
+ */
91
+ getCodeExecutionContext(invocationId: string): Record<string, unknown>;
92
+ }