@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,60 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { FunctionCall } from '@google/genai';
7
+ import { Event } from '../events/event.js';
8
+ import { BasePlugin } from '../plugins/base_plugin.js';
9
+ import { BaseTool } from '../tools/base_tool.js';
10
+ import { ToolContext } from '../tools/tool_context.js';
11
+ export declare const REQUEST_CONFIRMATION_FUNCTION_CALL_NAME = "adk_request_confirmation";
12
+ /**
13
+ * The outcome of a policy check.
14
+ */
15
+ export declare enum PolicyOutcome {
16
+ DENY = "DENY",
17
+ CONFIRM = "CONFIRM",
18
+ ALLOW = "ALLOW"
19
+ }
20
+ export interface PolicyCheckResult {
21
+ outcome: string;
22
+ reason?: string;
23
+ }
24
+ export interface ToolCallPolicyContext {
25
+ tool: BaseTool;
26
+ toolArgs: Record<string, unknown>;
27
+ }
28
+ export interface BasePolicyEngine {
29
+ evaluate(context: ToolCallPolicyContext): Promise<PolicyCheckResult>;
30
+ }
31
+ export declare class InMemoryPolicyEngine implements BasePolicyEngine {
32
+ evaluate(context: ToolCallPolicyContext): Promise<PolicyCheckResult>;
33
+ }
34
+ /**
35
+ * Security Plugin for running Orcas agents.
36
+ */
37
+ export declare class SecurityPlugin extends BasePlugin {
38
+ private readonly policyEngine;
39
+ constructor(params?: {
40
+ policyEngine?: BasePolicyEngine;
41
+ });
42
+ beforeToolCallback({ tool, toolArgs, toolContext, }: {
43
+ tool: BaseTool;
44
+ toolArgs: {
45
+ [key: string]: unknown;
46
+ };
47
+ toolContext: ToolContext;
48
+ }): Promise<{
49
+ [key: string]: unknown;
50
+ } | undefined>;
51
+ private getToolCallCheckState;
52
+ private setToolCallCheckState;
53
+ private checkToolCallPolicy;
54
+ }
55
+ /**
56
+ * Gets the ask user confirmation function calls from the event.
57
+ * @param event The event to get the function calls from.
58
+ * @returns The ask user confirmation function calls.
59
+ */
60
+ export declare function getAskUserConfirmationFunctionCalls(event: Event): FunctionCall[];
@@ -0,0 +1,15 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { BaseAgent } from '../agents/base_agent.js';
7
+ import { BasePlugin } from '../plugins/base_plugin.js';
8
+ import { Runner } from './runner.js';
9
+ export declare class InMemoryRunner extends Runner {
10
+ constructor({ agent, appName, plugins, }: {
11
+ agent: BaseAgent;
12
+ appName?: string;
13
+ plugins?: BasePlugin[];
14
+ });
15
+ }
@@ -0,0 +1,80 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { Content } from '@google/genai';
7
+ import { BaseAgent } from '../agents/base_agent.js';
8
+ import { RunConfig } from '../agents/run_config.js';
9
+ import { BaseArtifactService } from '../artifacts/base_artifact_service.js';
10
+ import { BaseCredentialService } from '../auth/credential_service/base_credential_service.js';
11
+ import { Event } from '../events/event.js';
12
+ import { BaseMemoryService } from '../memory/base_memory_service.js';
13
+ import { BasePlugin } from '../plugins/base_plugin.js';
14
+ import { PluginManager } from '../plugins/plugin_manager.js';
15
+ import { BaseSessionService } from '../sessions/base_session_service.js';
16
+ interface RunnerInput {
17
+ appName: string;
18
+ agent: BaseAgent;
19
+ plugins?: BasePlugin[];
20
+ artifactService?: BaseArtifactService;
21
+ sessionService: BaseSessionService;
22
+ memoryService?: BaseMemoryService;
23
+ credentialService?: BaseCredentialService;
24
+ }
25
+ export declare class Runner {
26
+ readonly appName: string;
27
+ readonly agent: BaseAgent;
28
+ readonly pluginManager: PluginManager;
29
+ readonly artifactService?: BaseArtifactService;
30
+ readonly sessionService: BaseSessionService;
31
+ readonly memoryService?: BaseMemoryService;
32
+ readonly credentialService?: BaseCredentialService;
33
+ constructor(input: RunnerInput);
34
+ /**
35
+ * Runs the agent with the given message, and returns an async generator of
36
+ * events.
37
+ *
38
+ * @param userId The user ID of the session.
39
+ * @param sessionId The session ID of the session.
40
+ * @param newMessage A new message to append to the session.
41
+ * @param stateDelta An optional state delta to apply to the session.
42
+ * @param runConfig The run config for the agent.
43
+ * @yields The events generated by the agent.
44
+ */
45
+ runAsync({ userId, sessionId, newMessage, stateDelta, runConfig, }: {
46
+ userId: string;
47
+ sessionId: string;
48
+ newMessage: Content;
49
+ stateDelta?: Record<string, any>;
50
+ runConfig?: RunConfig;
51
+ }): AsyncGenerator<Event, void, undefined>;
52
+ /**
53
+ * Saves artifacts from the message parts and replaces the inline data with
54
+ * a file name placeholder.
55
+ *
56
+ * @param invocationId The current invocation ID.
57
+ * @param userId The user ID of the session.
58
+ * @param sessionId The session ID of the session.
59
+ * @param message The message containing parts to process.
60
+ */
61
+ private saveArtifacts;
62
+ /**
63
+ * Determines the next agent to run to continue the session. This is primarily
64
+ * used for session resumption.
65
+ */
66
+ private determineAgentForResumption;
67
+ /**
68
+ * Whether the agent to run can transfer to any other agent in the agent tree.
69
+ *
70
+ * An agent is transferable if:
71
+ * - It is an instance of `LlmAgent`.
72
+ * - All its ancestors are also transferable (i.e., they have
73
+ * `disallowTransferToParent` set to false).
74
+ *
75
+ * @param agentToRun The agent to check for transferability.
76
+ * @returns True if the agent can transfer, False otherwise.
77
+ */
78
+ private isRoutableLlmAgent;
79
+ }
80
+ export {};
@@ -0,0 +1,129 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { Event } from '../events/event.js';
7
+ import { Session } from './session.js';
8
+ /**
9
+ * The configuration of getting a session.
10
+ */
11
+ export interface GetSessionConfig {
12
+ /** The number of recent events to retrieve. */
13
+ numRecentEvents?: number;
14
+ /** Retrieve events after this timestamp. */
15
+ afterTimestamp?: number;
16
+ }
17
+ /**
18
+ * The parameters for `createSession`.
19
+ */
20
+ export interface CreateSessionRequest {
21
+ /** The name of the application. */
22
+ appName: string;
23
+ /** The ID of the user. */
24
+ userId: string;
25
+ /** The initial state of the session. */
26
+ state?: Record<string, unknown>;
27
+ /** The ID of the session. A new ID will be generated if not provided. */
28
+ sessionId?: string;
29
+ }
30
+ /**
31
+ * The parameters for `getSession`.
32
+ */
33
+ export interface GetSessionRequest {
34
+ /** The name of the application. */
35
+ appName: string;
36
+ /** The ID of the user. */
37
+ userId: string;
38
+ /** The ID of the session. */
39
+ sessionId: string;
40
+ /** The configurations for getting the session. */
41
+ config?: GetSessionConfig;
42
+ }
43
+ /**
44
+ * The parameters for `listSessions`.
45
+ */
46
+ export interface ListSessionsRequest {
47
+ /** The name of the application. */
48
+ appName: string;
49
+ /** The ID of the user. */
50
+ userId: string;
51
+ }
52
+ /**
53
+ * The parameters for `deleteSession`.
54
+ */
55
+ export interface DeleteSessionRequest {
56
+ /** The name of the application. */
57
+ appName: string;
58
+ /** The ID of the user. */
59
+ userId: string;
60
+ /** The ID of the session. */
61
+ sessionId: string;
62
+ }
63
+ /**
64
+ * The parameters for `appendEvent`.
65
+ */
66
+ export interface AppendEventRequest {
67
+ /** The session to append the event to. */
68
+ session: Session;
69
+ /** The event to append. */
70
+ event: Event;
71
+ }
72
+ /**
73
+ * The response of listing sessions.
74
+ *
75
+ * The events and states are not set within each Session object.
76
+ */
77
+ export interface ListSessionsResponse {
78
+ /** A list of sessions. */
79
+ sessions: Session[];
80
+ }
81
+ /**
82
+ * Base class for session services.
83
+ *
84
+ * The service provides a set of methods for managing sessions and events.
85
+ */
86
+ export declare abstract class BaseSessionService {
87
+ /**
88
+ * Creates a new session.
89
+ *
90
+ * @param request The request to create a session.
91
+ * @return A promise that resolves to the newly created session instance.
92
+ */
93
+ abstract createSession(request: CreateSessionRequest): Promise<Session>;
94
+ /**
95
+ * Gets a session.
96
+ *
97
+ * @param request The request to get a session.
98
+ * @return A promise that resolves to the session instance or undefined if not
99
+ * found.
100
+ */
101
+ abstract getSession(request: GetSessionRequest): Promise<Session | undefined>;
102
+ /**
103
+ * Lists sessions for a user.
104
+ *
105
+ * @param request The request to list sessions.
106
+ * @return A promise that resolves to a list of sessions for the user.
107
+ */
108
+ abstract listSessions(request: ListSessionsRequest): Promise<ListSessionsResponse>;
109
+ /**
110
+ * Deletes a session.
111
+ *
112
+ * @param request The request to delete a session.
113
+ * @return A promise that resolves when the session is deleted.
114
+ */
115
+ abstract deleteSession(request: DeleteSessionRequest): Promise<void>;
116
+ /**
117
+ * Appends an event to a session.
118
+ *
119
+ * @param request The request to append an event.
120
+ * @return A promise that resolves to the event that was appended.
121
+ */
122
+ appendEvent({ session, event }: AppendEventRequest): Promise<Event>;
123
+ /**
124
+ * Updates the session state based on the event.
125
+ *
126
+ * @param request The request to update the session state.
127
+ */
128
+ private updateSessionState;
129
+ }
@@ -0,0 +1,32 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { Event } from '../events/event.js';
7
+ import { AppendEventRequest, BaseSessionService, CreateSessionRequest, DeleteSessionRequest, GetSessionRequest, ListSessionsRequest, ListSessionsResponse } from './base_session_service.js';
8
+ import { Session } from './session.js';
9
+ /**
10
+ * An in-memory implementation of the session service.
11
+ */
12
+ export declare class InMemorySessionService extends BaseSessionService {
13
+ /**
14
+ * A map from app name to a map from user ID to a map from session ID to
15
+ * session.
16
+ */
17
+ private sessions;
18
+ /**
19
+ * A map from app name to a map from user ID to a map from key to the value.
20
+ */
21
+ private userState;
22
+ /**
23
+ * A map from app name to a map from key to the value.
24
+ */
25
+ private appState;
26
+ createSession({ appName, userId, state, sessionId }: CreateSessionRequest): Promise<Session>;
27
+ getSession({ appName, userId, sessionId, config }: GetSessionRequest): Promise<Session | undefined>;
28
+ listSessions({ appName, userId }: ListSessionsRequest): Promise<ListSessionsResponse>;
29
+ deleteSession({ appName, userId, sessionId }: DeleteSessionRequest): Promise<void>;
30
+ appendEvent({ session, event }: AppendEventRequest): Promise<Event>;
31
+ private mergeState;
32
+ }
@@ -0,0 +1,46 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { Event } from '../events/event.js';
7
+ /**
8
+ * Represents a session in a conversation between agents and users.
9
+ */
10
+ export interface Session {
11
+ /**
12
+ * The unique identifier of the session.
13
+ */
14
+ id: string;
15
+ /**
16
+ * The name of the app.
17
+ */
18
+ appName: string;
19
+ /**
20
+ * The id of the user.
21
+ */
22
+ userId: string;
23
+ /**
24
+ * The state of the session.
25
+ */
26
+ state: Record<string, unknown>;
27
+ /**
28
+ * The events of the session, e.g. user input, model response, function
29
+ * call/response, etc.
30
+ */
31
+ events: Event[];
32
+ /**
33
+ * The last update time of the session.
34
+ */
35
+ lastUpdateTime: number;
36
+ }
37
+ /**
38
+ * Creates a session from a partial session.
39
+ *
40
+ * @param params The partial session to create the session from.
41
+ * @returns The session.
42
+ */
43
+ export declare function createSession(params: Partial<Session> & {
44
+ id: string;
45
+ appName: string;
46
+ }): Session;
@@ -0,0 +1,57 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ /**
7
+ * A state mapping that maintains the current value and the pending-commit
8
+ * delta.
9
+ */
10
+ export declare class State {
11
+ /** The current value of the state. */
12
+ private value;
13
+ /** The delta change to the current value that hasn't been committed. */
14
+ private delta;
15
+ static readonly APP_PREFIX = "app:";
16
+ static readonly USER_PREFIX = "user:";
17
+ static readonly TEMP_PREFIX = "temp:";
18
+ constructor(
19
+ /** The current value of the state. */
20
+ value: Record<string, unknown>,
21
+ /** The delta change to the current value that hasn't been committed. */
22
+ delta: Record<string, unknown>);
23
+ /**
24
+ * Returns the value of the state dict for the given key.
25
+ *
26
+ * @param key The key to get the value for.
27
+ * @param defaultValue The default value to return if the key is not found.
28
+ * @return The value of the state for the given key, or the default value if
29
+ * not found.
30
+ */
31
+ get<T>(key: string, defaultValue?: T): T | undefined;
32
+ /**
33
+ * Sets the value of the state dict for the given key.
34
+ *
35
+ * @param key The key to set the value for.
36
+ * @param value The value to set.
37
+ */
38
+ set(key: string, value: unknown): void;
39
+ /**
40
+ * Whether the state has pending delta.
41
+ */
42
+ has(key: string): boolean;
43
+ /**
44
+ * Whether the state has pending delta.
45
+ */
46
+ hasDelta(): boolean;
47
+ /**
48
+ * Updates the state dict with the given delta.
49
+ *
50
+ * @param delta The delta to update the state with.
51
+ */
52
+ update(delta: Record<string, unknown>): void;
53
+ /**
54
+ * Returns the state as a plain JSON object.
55
+ */
56
+ toRecord(): Record<string, unknown>;
57
+ }
@@ -0,0 +1,37 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { FunctionDeclaration } from '@google/genai';
7
+ import { BaseAgent } from '../agents/base_agent.js';
8
+ import { BaseTool, RunAsyncToolRequest } from './base_tool.js';
9
+ /**
10
+ * The configuration of the agent tool.
11
+ */
12
+ export interface AgentToolConfig {
13
+ /**
14
+ * The reference to the agent instance.
15
+ */
16
+ agent: BaseAgent;
17
+ /**
18
+ * Whether to skip summarization of the agent output.
19
+ */
20
+ skipSummarization?: boolean;
21
+ }
22
+ /**
23
+ * A tool that wraps an agent.
24
+ *
25
+ * This tool allows an agent to be called as a tool within a larger
26
+ * application. The agent's input schema is used to define the tool's input
27
+ * parameters, and the agent's output is returned as the tool's result.
28
+ *
29
+ * @param config: The configuration of the agent tool.
30
+ */
31
+ export declare class AgentTool extends BaseTool {
32
+ private readonly agent;
33
+ private readonly skipSummarization;
34
+ constructor(config: AgentToolConfig);
35
+ _getDeclaration(): FunctionDeclaration;
36
+ runAsync({ args, toolContext }: RunAsyncToolRequest): Promise<unknown>;
37
+ }
@@ -0,0 +1,84 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { FunctionDeclaration } from '@google/genai';
7
+ import { LlmRequest } from '../models/llm_request.js';
8
+ import { ToolContext } from './tool_context.js';
9
+ /**
10
+ * The parameters for `runAsync`.
11
+ */
12
+ export interface RunAsyncToolRequest {
13
+ args: Record<string, unknown>;
14
+ toolContext: ToolContext;
15
+ }
16
+ /**
17
+ * The parameters for `processLlmRequest`.
18
+ */
19
+ export interface ToolProcessLlmRequest {
20
+ toolContext: ToolContext;
21
+ llmRequest: LlmRequest;
22
+ }
23
+ /**
24
+ * Parameters for the BaseTool constructor.
25
+ */
26
+ export interface BaseToolParams {
27
+ name: string;
28
+ description: string;
29
+ isLongRunning?: boolean;
30
+ }
31
+ /**
32
+ * The base class for all tools.
33
+ */
34
+ export declare abstract class BaseTool {
35
+ readonly name: string;
36
+ readonly description: string;
37
+ readonly isLongRunning: boolean;
38
+ /**
39
+ * Base constructor for a tool.
40
+ *
41
+ * @param params The parameters for `BaseTool`.
42
+ */
43
+ constructor(params: BaseToolParams);
44
+ /**
45
+ * Gets the OpenAPI specification of this tool in the form of a
46
+ * FunctionDeclaration.
47
+ *
48
+ * NOTE
49
+ * - Required if subclass uses the default implementation of
50
+ * `processLlmRequest` to add function declaration to LLM request.
51
+ * - Otherwise, can be skipped, e.g. for a built-in GoogleSearch tool for
52
+ * Gemini.
53
+ *
54
+ * @return The FunctionDeclaration of this tool, or undefined if it doesn't
55
+ * need to be added to LlmRequest.config.
56
+ */
57
+ _getDeclaration(): FunctionDeclaration | undefined;
58
+ /**
59
+ * Runs the tool with the given arguments and context.
60
+ *
61
+ * NOTE
62
+ * - Required if this tool needs to run at the client side.
63
+ * - Otherwise, can be skipped, e.g. for a built-in GoogleSearch tool for
64
+ * Gemini.
65
+ *
66
+ * @param request The request to run the tool.
67
+ * @return A promise that resolves to the tool response.
68
+ */
69
+ abstract runAsync(request: RunAsyncToolRequest): Promise<unknown>;
70
+ /**
71
+ * Processes the outgoing LLM request for this tool.
72
+ *
73
+ * Use cases:
74
+ * - Most common use case is adding this tool to the LLM request.
75
+ * - Some tools may just preprocess the LLM request before it's sent out.
76
+ *
77
+ * @param request The request to process the LLM request.
78
+ */
79
+ processLlmRequest({ toolContext, llmRequest }: ToolProcessLlmRequest): Promise<void>;
80
+ /**
81
+ * The Google API LLM variant to use.
82
+ */
83
+ get apiVariant(): import("../utils/variant_utils.js").GoogleLLMVariant;
84
+ }
@@ -0,0 +1,64 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { ReadonlyContext } from '../agents/readonly_context.js';
7
+ import { LlmRequest } from '../models/llm_request.js';
8
+ import { BaseTool } from './base_tool.js';
9
+ import { ToolContext } from './tool_context.js';
10
+ /**
11
+ * Function to decide whether a tool should be exposed to LLM. Toolset
12
+ * implementer could consider whether to accept such instance in the toolset's
13
+ * constructor and apply the predicate in getTools method.
14
+ */
15
+ export type ToolPredicate = (tool: BaseTool, readonlyContext: ReadonlyContext) => boolean;
16
+ /**
17
+ * Base class for toolset.
18
+ *
19
+ * A toolset is a collection of tools that can be used by an agent.
20
+ */
21
+ export declare abstract class BaseToolset {
22
+ readonly toolFilter: ToolPredicate | string[];
23
+ constructor(toolFilter: ToolPredicate | string[]);
24
+ /**
25
+ * Returns the tools that should be exposed to LLM.
26
+ *
27
+ * @param context Context used to filter tools available to the agent. If
28
+ * not defined, all tools in the toolset are returned.
29
+ * @return A Promise that resolves to the list of tools.
30
+ */
31
+ abstract getTools(context?: ReadonlyContext): Promise<BaseTool[]>;
32
+ /**
33
+ * Closes the toolset.
34
+ *
35
+ * NOTE: This method is invoked, for example, at the end of an agent server's
36
+ * lifecycle or when the toolset is no longer needed. Implementations
37
+ * should ensure that any open connections, files, or other managed
38
+ * resources are properly released to prevent leaks.
39
+ *
40
+ * @return A Promise that resolves when the toolset is closed.
41
+ */
42
+ abstract close(): Promise<void>;
43
+ /**
44
+ * Returns whether the tool should be exposed to LLM.
45
+ *
46
+ * @param tool The tool to check.
47
+ * @param context Context used to filter tools available to the agent.
48
+ * @return Whether the tool should be exposed to LLM.
49
+ */
50
+ protected isToolSelected(tool: BaseTool, context: ReadonlyContext): boolean;
51
+ /**
52
+ * Processes the outgoing LLM request for this toolset. This method will be
53
+ * called before each tool processes the llm request.
54
+ *
55
+ * Use cases:
56
+ * - Instead of let each tool process the llm request, we can let the toolset
57
+ * process the llm request. e.g. ComputerUseToolset can add computer use
58
+ * tool to the llm request.
59
+ *
60
+ * @param toolContext The context of the tool.
61
+ * @param llmRequest The outgoing LLM request, mutable this method.
62
+ */
63
+ processLlmRequest(toolContext: ToolContext, llmRequest: LlmRequest): Promise<void>;
64
+ }
@@ -0,0 +1,21 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { Part } from '@google/genai';
7
+ import { BaseArtifactService, DeleteArtifactRequest, ListArtifactKeysRequest, ListVersionsRequest, LoadArtifactRequest, SaveArtifactRequest } from '../artifacts/base_artifact_service.js';
8
+ import { ToolContext } from './tool_context.js';
9
+ /**
10
+ * Artifact service that forwards to the parent tool context.
11
+ */
12
+ export declare class ForwardingArtifactService implements BaseArtifactService {
13
+ private readonly toolContext;
14
+ private readonly invocationContext;
15
+ constructor(toolContext: ToolContext);
16
+ saveArtifact(request: SaveArtifactRequest): Promise<number>;
17
+ loadArtifact(request: LoadArtifactRequest): Promise<Part | undefined>;
18
+ listArtifactKeys(request: ListArtifactKeysRequest): Promise<string[]>;
19
+ deleteArtifact(request: DeleteArtifactRequest): Promise<void>;
20
+ listVersions(request: ListVersionsRequest): Promise<number[]>;
21
+ }
@@ -0,0 +1,48 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { FunctionDeclaration, Schema } from '@google/genai';
7
+ import { type infer as zInfer, ZodObject } from 'zod';
8
+ import { BaseTool, RunAsyncToolRequest } from './base_tool.js';
9
+ import { ToolContext } from './tool_context.js';
10
+ /**
11
+ * Input parameters of the function tool.
12
+ */
13
+ export type ToolInputParameters = undefined | ZodObject<any> | Schema;
14
+ export type ToolExecuteArgument<TParameters extends ToolInputParameters> = TParameters extends ZodObject<any> ? zInfer<TParameters> : TParameters extends Schema ? unknown : string;
15
+ type ToolExecuteFunction<TParameters extends ToolInputParameters> = (input: ToolExecuteArgument<TParameters>, tool_context?: ToolContext) => Promise<unknown> | unknown;
16
+ /**
17
+ * The configuration options for creating a function-based tool.
18
+ * The `name`, `description` and `parameters` fields are used to generate the
19
+ * tool definition that is passed to the LLM prompt.
20
+ *
21
+ * Note: Unlike Python's ADK, JSDoc on the `execute` function is ignored
22
+ * for tool definition generation.
23
+ */
24
+ export type ToolOptions<TParameters extends ToolInputParameters> = {
25
+ name?: string;
26
+ description: string;
27
+ parameters?: TParameters;
28
+ execute: ToolExecuteFunction<TParameters>;
29
+ isLongRunning?: boolean;
30
+ };
31
+ export declare class FunctionTool<TParameters extends ToolInputParameters = undefined> extends BaseTool {
32
+ private readonly execute;
33
+ private readonly parameters?;
34
+ /**
35
+ * The constructor acts as the user-friendly factory.
36
+ * @param options The configuration for the tool.
37
+ */
38
+ constructor(options: ToolOptions<TParameters>);
39
+ /**
40
+ * Provide a schema for the function.
41
+ */
42
+ _getDeclaration(): FunctionDeclaration;
43
+ /**
44
+ * Logic for running the tool.
45
+ */
46
+ runAsync(req: RunAsyncToolRequest): Promise<unknown>;
47
+ }
48
+ export {};