@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,36 @@
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
+ /**
9
+ * Get the contents for the LLM request.
10
+ *
11
+ * @param events: A list of all session events.
12
+ * @param agentName: The name of the agent.
13
+ * @param currentBranch: The current branch of the agent.
14
+ *
15
+ * @returns A list of processed contents.
16
+ */
17
+ export declare function getContents(events: Event[], agentName: string, currentBranch?: string): Content[];
18
+ /**
19
+ * Get contents for the current turn only (no conversation history).
20
+ *
21
+ * When include_contents='none', we want to include:
22
+ * - The current user input
23
+ * - Tool calls and responses from the current turn
24
+ * But exclude conversation history from previous turns.
25
+ *
26
+ * In multi-agent scenarios, the "current turn" for an agent starts from an
27
+ * actual user or from another agent.
28
+ *
29
+ * @param events: A list of all session events.
30
+ * @param agentName: The name of the agent.
31
+ * @param currentBranch: The current branch of the agent.
32
+ *
33
+ * @returns A list of contents for the current turn only, preserving context
34
+ * needed for proper tool execution while excluding conversation history.
35
+ */
36
+ export declare function getCurrentTurnContents(events: Event[], agentName: string, currentBranch?: string): Content[];
@@ -0,0 +1,90 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { Content, FunctionCall } from '@google/genai';
7
+ import { InvocationContext } from '../agents/invocation_context.js';
8
+ import { Event } from '../events/event.js';
9
+ import { BaseTool } from '../tools/base_tool.js';
10
+ import { ToolConfirmation } from '../tools/tool_confirmation.js';
11
+ import { SingleAfterToolCallback, SingleBeforeToolCallback } from './llm_agent.js';
12
+ export declare const REQUEST_EUC_FUNCTION_CALL_NAME = "adk_request_credential";
13
+ export declare const REQUEST_CONFIRMATION_FUNCTION_CALL_NAME = "adk_request_confirmation";
14
+ export declare const functionsExportedForTestingOnly: {
15
+ handleFunctionCallList: typeof handleFunctionCallList;
16
+ };
17
+ export declare function generateClientFunctionCallId(): string;
18
+ /**
19
+ * Populates client-side function call IDs.
20
+ *
21
+ * It iterates through all function calls in the event and assigns a
22
+ * unique client-side ID to each one that doesn't already have an ID.
23
+ */
24
+ export declare function populateClientFunctionCallId(modelResponseEvent: Event): void;
25
+ /**
26
+ * Removes the client-generated function call IDs from a given content object.
27
+ *
28
+ * When sending content back to the server, these IDs are
29
+ * specific to the client-side and should not be included in requests to the
30
+ * model.
31
+ */
32
+ export declare function removeClientFunctionCallId(content: Content): void;
33
+ /**
34
+ * Returns a set of function call ids of the long running tools.
35
+ */
36
+ export declare function getLongRunningFunctionCalls(functionCalls: FunctionCall[], toolsDict: Record<string, BaseTool>): Set<string>;
37
+ /**
38
+ * Generates an authentication event.
39
+ *
40
+ * It iterates through requested auth configurations in a function response
41
+ * event and creates a new function call for each.
42
+ */
43
+ export declare function generateAuthEvent(invocationContext: InvocationContext, functionResponseEvent: Event): Event | undefined;
44
+ /**
45
+ * Generates a request confirmation event from a function response event.
46
+ */
47
+ export declare function generateRequestConfirmationEvent({ invocationContext, functionCallEvent, functionResponseEvent, }: {
48
+ invocationContext: InvocationContext;
49
+ functionCallEvent: Event;
50
+ functionResponseEvent: Event;
51
+ }): Event | undefined;
52
+ /**
53
+ * Handles function calls.
54
+ * Runtime behavior to pay attention to:
55
+ * - Iterate through each function call in the `functionCallEvent`:
56
+ * - Execute before tool callbacks !!if a callback provides a response, short
57
+ * circuit the rest.
58
+ * - Execute the tool.
59
+ * - Execute after tool callbacks !!if a callback provides a response, short
60
+ * circuit the rest.
61
+ * - If the tool is long-running and the response is null, continue. !!state
62
+ * - Merge all function response events into a single event.
63
+ */
64
+ export declare function handleFunctionCallsAsync({ invocationContext, functionCallEvent, toolsDict, beforeToolCallbacks, afterToolCallbacks, filters, toolConfirmationDict, }: {
65
+ invocationContext: InvocationContext;
66
+ functionCallEvent: Event;
67
+ toolsDict: Record<string, BaseTool>;
68
+ beforeToolCallbacks: SingleBeforeToolCallback[];
69
+ afterToolCallbacks: SingleAfterToolCallback[];
70
+ filters?: Set<string>;
71
+ toolConfirmationDict?: Record<string, ToolConfirmation>;
72
+ }): Promise<Event | null>;
73
+ /**
74
+ * The underlying implementation of handleFunctionCalls, but takes a list of
75
+ * function calls instead of an event.
76
+ * This is also used by llm_agent execution flow in preprocessing.
77
+ */
78
+ export declare function handleFunctionCallList({ invocationContext, functionCalls, toolsDict, beforeToolCallbacks, afterToolCallbacks, filters, toolConfirmationDict, }: {
79
+ invocationContext: InvocationContext;
80
+ functionCalls: FunctionCall[];
81
+ toolsDict: Record<string, BaseTool>;
82
+ beforeToolCallbacks: SingleBeforeToolCallback[];
83
+ afterToolCallbacks: SingleAfterToolCallback[];
84
+ filters?: Set<string>;
85
+ toolConfirmationDict?: Record<string, ToolConfirmation>;
86
+ }): Promise<Event | null>;
87
+ /**
88
+ * Merges a list of function response events into a single event.
89
+ */
90
+ export declare function mergeParallelFunctionResponseEvents(functionResponseEvents: Event[]): Event;
@@ -0,0 +1,32 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { ReadonlyContext } from './readonly_context.js';
7
+ /**
8
+ * Populates values in the instruction template, e.g. state, artifact, etc.
9
+ *
10
+ * ```
11
+ * async function buildInstruction(
12
+ * readonlyContext: ReadonlyContext,
13
+ * ): Promise<string> {
14
+ * return await injectSessionState(
15
+ * 'You can inject a state variable like {var_name} or an artifact ' +
16
+ * '{artifact.file_name} into the instruction template.',
17
+ * readonlyContext,
18
+ * );
19
+ * }
20
+ *
21
+ * const agent = new LlmAgent({
22
+ * model: 'gemini-1.5-flash',
23
+ * name: 'agent',
24
+ * instruction: buildInstruction,
25
+ * });
26
+ * ```
27
+ *
28
+ * @param template The instruction template.
29
+ * @param readonlyContext The read-only context
30
+ * @returns The instruction template with values populated.
31
+ */
32
+ export declare function injectSessionState(template: string, readonlyContext: ReadonlyContext): Promise<string>;
@@ -0,0 +1,155 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { Content } from '@google/genai';
7
+ import { BaseArtifactService } from '../artifacts/base_artifact_service.js';
8
+ import { BaseCredentialService } from '../auth/credential_service/base_credential_service.js';
9
+ import { BaseMemoryService } from '../memory/base_memory_service.js';
10
+ import { PluginManager } from '../plugins/plugin_manager.js';
11
+ import { BaseSessionService } from '../sessions/base_session_service.js';
12
+ import { Session } from '../sessions/session.js';
13
+ import { ActiveStreamingTool } from './active_streaming_tool.js';
14
+ import { BaseAgent } from './base_agent.js';
15
+ import { LiveRequestQueue } from './live_request_queue.js';
16
+ import { RunConfig } from './run_config.js';
17
+ import { TranscriptionEntry } from './transcription_entry.js';
18
+ interface InvocationContextParams {
19
+ artifactService?: BaseArtifactService;
20
+ sessionService?: BaseSessionService;
21
+ memoryService?: BaseMemoryService;
22
+ credentialService?: BaseCredentialService;
23
+ invocationId: string;
24
+ branch?: string;
25
+ agent: BaseAgent;
26
+ userContent?: Content;
27
+ session: Session;
28
+ endInvocation?: boolean;
29
+ transcriptionCache?: TranscriptionEntry[];
30
+ runConfig?: RunConfig;
31
+ liveRequestQueue?: LiveRequestQueue;
32
+ activeStreamingTools?: Record<string, ActiveStreamingTool>;
33
+ pluginManager: PluginManager;
34
+ }
35
+ /**
36
+ * An invocation context represents the data of a single invocation of an agent.
37
+ *
38
+ * An invocation:
39
+ * 1. Starts with a user message and ends with a final response.
40
+ * 2. Can contain one or multiple agent calls.
41
+ * 3. Is handled by runner.runAsync().
42
+ *
43
+ * An invocation runs an agent until it does not request to transfer to
44
+ * another agent.
45
+ *
46
+ * An agent call:
47
+ * 1. Is handled by agent.runAsync().
48
+ * 2. Ends when agent.runAsync() ends.
49
+ *
50
+ * An LLM agent call is an agent with a BaseLLMFlow.
51
+ * An LLM agent call can contain one or multiple steps.
52
+ *
53
+ * An LLM agent runs steps in a loop until:
54
+ * 1. A final response is generated.
55
+ * 2. The agent transfers to another agent.
56
+ * 3. The end_invocation is set to true by any callbacks or tools.
57
+ *
58
+ * A step:
59
+ * 1. Calls the LLM only once and yields its response.
60
+ * 2. Calls the tools and yields their responses if requested.
61
+ *
62
+ * The summarization of the function response is considered another step, since
63
+ * it is another llm call.
64
+ * A step ends when it's done calling llm and tools, or if the end_invocation
65
+ * is set to true at any time.
66
+ *
67
+ * ```
68
+ * ┌─────────────────────── invocation ──────────────────────────┐
69
+ * ┌──────────── llm_agent_call_1 ────────────┐ ┌─ agent_call_2 ─┐
70
+ * ┌──── step_1 ────────┐ ┌───── step_2 ──────┐
71
+ * [call_llm] [call_tool] [call_llm] [transfer]
72
+ * ```
73
+ */
74
+ export declare class InvocationContext {
75
+ readonly artifactService?: BaseArtifactService;
76
+ readonly sessionService?: BaseSessionService;
77
+ readonly memoryService?: BaseMemoryService;
78
+ readonly credentialService?: BaseCredentialService;
79
+ /**
80
+ * The id of this invocation context.
81
+ */
82
+ readonly invocationId: string;
83
+ /**
84
+ * The branch of the invocation context.
85
+ *
86
+ * The format is like agent_1.agent_2.agent_3, where agent_1 is the parent of
87
+ * agent_2, and agent_2 is the parent of agent_3.
88
+ *
89
+ * Branch is used when multiple sub-agents shouldn't see their peer agents'
90
+ * conversation history.
91
+ */
92
+ branch?: string;
93
+ /**
94
+ * The current agent of this invocation context.
95
+ */
96
+ agent: BaseAgent;
97
+ /**
98
+ * The user content that started this invocation.
99
+ */
100
+ readonly userContent?: Content;
101
+ /**
102
+ * The current session of this invocation context.
103
+ */
104
+ readonly session: Session;
105
+ /**
106
+ * Whether to end this invocation.
107
+ * Set to True in callbacks or tools to terminate this invocation.
108
+ */
109
+ endInvocation: boolean;
110
+ /**
111
+ * Caches necessary, data audio or contents, that are needed by transcription.
112
+ */
113
+ transcriptionCache?: TranscriptionEntry[];
114
+ /**
115
+ * Configurations for live agents under this invocation.
116
+ */
117
+ runConfig?: RunConfig;
118
+ /**
119
+ * A container to keep track of different kinds of costs incurred as a part of
120
+ * this invocation.
121
+ */
122
+ private readonly invocationCostManager;
123
+ /**
124
+ * The queue to receive live requests.
125
+ */
126
+ liveRequestQueue?: LiveRequestQueue;
127
+ /**
128
+ * The running streaming tools of this invocation.
129
+ */
130
+ activeStreamingTools?: Record<string, ActiveStreamingTool>;
131
+ /**
132
+ * The manager for keeping track of plugins in this invocation.
133
+ */
134
+ pluginManager: PluginManager;
135
+ /**
136
+ * @param params The parameters for creating an invocation context.
137
+ */
138
+ constructor(params: InvocationContextParams);
139
+ /**
140
+ * The app name of the current session.
141
+ */
142
+ get appName(): string;
143
+ /**
144
+ * The user ID of the current session.
145
+ */
146
+ get userId(): string;
147
+ /**
148
+ * Tracks number of llm calls made.
149
+ *
150
+ * @throws If number of llm calls made exceed the set threshold.
151
+ */
152
+ incrementLlmCallCount(): void;
153
+ }
154
+ export declare function newInvocationContextId(): string;
155
+ export {};
@@ -0,0 +1,67 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { ActivityEnd, ActivityStart, Blob, Content } from '@google/genai';
7
+ /**
8
+ * Request sent to live agents.
9
+ */
10
+ export interface LiveRequest {
11
+ /** If set, send the content to the model in turn-by-turn mode. */
12
+ content?: Content;
13
+ /** If set, send the blob to the model in realtime mode. */
14
+ blob?: Blob;
15
+ /** If set, signal the start of user activity to the model. */
16
+ activityStart?: ActivityStart;
17
+ /** If set, signal the end of user activity to the model. */
18
+ activityEnd?: ActivityEnd;
19
+ /** If set, close the queue. */
20
+ close?: boolean;
21
+ }
22
+ /**
23
+ * Queue used to send LiveRequest in a live (bidirectional streaming) way.
24
+ */
25
+ export declare class LiveRequestQueue {
26
+ private readonly queue;
27
+ private readonly resolveFnFifoQueue;
28
+ private isClosed;
29
+ /**
30
+ * Adds a request to the queue. If there is a pending `get()` call, it
31
+ * will be resolved with the given request.
32
+ * @param req The request to send.
33
+ */
34
+ send(req: LiveRequest): void;
35
+ /**
36
+ * Retrieves a request from the queue. If the queue is empty, it will
37
+ * wait until a request is available.
38
+ * @returns A promise that resolves with the next available request.
39
+ */
40
+ get(): Promise<LiveRequest>;
41
+ /**
42
+ * Sends a close signal to the queue.
43
+ */
44
+ close(): void;
45
+ /**
46
+ * Sends a content object to the queue.
47
+ * @param content The content to send.
48
+ */
49
+ sendContent(content: Content): void;
50
+ /**
51
+ * Sends a blob to the model in realtime mode.
52
+ * @param blob The blob to send.
53
+ */
54
+ sendRealtime(blob: Blob): void;
55
+ /**
56
+ * Sends an activity start signal to mark the beginning of user input.
57
+ */
58
+ sendActivityStart(): void;
59
+ /**
60
+ * Sends an activity end signal to mark the end of user input.
61
+ */
62
+ sendActivityEnd(): void;
63
+ /**
64
+ * Implements the async iterator protocol.
65
+ */
66
+ [Symbol.asyncIterator](): AsyncGenerator<LiveRequest, void, undefined>;
67
+ }