@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,153 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+
7
+ "use strict";
8
+ var __defProp = Object.defineProperty;
9
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
10
+ var __getOwnPropNames = Object.getOwnPropertyNames;
11
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
12
+ var __export = (target, all) => {
13
+ for (var name in all)
14
+ __defProp(target, name, { get: all[name], enumerable: true });
15
+ };
16
+ var __copyProps = (to, from, except, desc) => {
17
+ if (from && typeof from === "object" || typeof from === "function") {
18
+ for (let key of __getOwnPropNames(from))
19
+ if (!__hasOwnProp.call(to, key) && key !== except)
20
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
21
+ }
22
+ return to;
23
+ };
24
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
25
+ var security_plugin_exports = {};
26
+ __export(security_plugin_exports, {
27
+ InMemoryPolicyEngine: () => InMemoryPolicyEngine,
28
+ PolicyOutcome: () => PolicyOutcome,
29
+ REQUEST_CONFIRMATION_FUNCTION_CALL_NAME: () => REQUEST_CONFIRMATION_FUNCTION_CALL_NAME,
30
+ SecurityPlugin: () => SecurityPlugin,
31
+ getAskUserConfirmationFunctionCalls: () => getAskUserConfirmationFunctionCalls
32
+ });
33
+ module.exports = __toCommonJS(security_plugin_exports);
34
+ var import_base_plugin = require("../plugins/base_plugin.js");
35
+ /**
36
+ * @license
37
+ * Copyright 2025 Google LLC
38
+ * SPDX-License-Identifier: Apache-2.0
39
+ */
40
+ const REQUEST_CONFIRMATION_FUNCTION_CALL_NAME = "adk_request_confirmation";
41
+ const TOOL_CALL_SECURITY_CHECK_STATES = "orcas_tool_call_security_check_states";
42
+ const INTERMEDIATE_REQUIRE_TOOL_CALL_CONFIRMATION_ERROR = "This tool call needs external confirmation before completion.";
43
+ var PolicyOutcome = /* @__PURE__ */ ((PolicyOutcome2) => {
44
+ PolicyOutcome2["DENY"] = "DENY";
45
+ PolicyOutcome2["CONFIRM"] = "CONFIRM";
46
+ PolicyOutcome2["ALLOW"] = "ALLOW";
47
+ return PolicyOutcome2;
48
+ })(PolicyOutcome || {});
49
+ class InMemoryPolicyEngine {
50
+ async evaluate(context) {
51
+ return Promise.resolve({
52
+ outcome: "ALLOW" /* ALLOW */,
53
+ reason: "For prototyping purpose, all tool calls are allowed."
54
+ });
55
+ }
56
+ }
57
+ class SecurityPlugin extends import_base_plugin.BasePlugin {
58
+ constructor(params) {
59
+ var _a;
60
+ super("security_plugin");
61
+ this.policyEngine = (_a = params == null ? void 0 : params.policyEngine) != null ? _a : new InMemoryPolicyEngine();
62
+ }
63
+ async beforeToolCallback({
64
+ tool,
65
+ toolArgs,
66
+ toolContext
67
+ }) {
68
+ const toolCallCheckState = this.getToolCallCheckState(toolContext);
69
+ if (!toolCallCheckState) {
70
+ return this.checkToolCallPolicy({
71
+ tool,
72
+ toolArgs,
73
+ toolContext
74
+ });
75
+ }
76
+ if (toolCallCheckState !== "CONFIRM" /* CONFIRM */) {
77
+ return;
78
+ }
79
+ if (!toolContext.toolConfirmation) {
80
+ return { partial: INTERMEDIATE_REQUIRE_TOOL_CALL_CONFIRMATION_ERROR };
81
+ }
82
+ this.setToolCallCheckState(toolContext, toolContext.toolConfirmation);
83
+ if (!toolContext.toolConfirmation.confirmed) {
84
+ return {
85
+ error: "Tool call rejected from confirmation flow."
86
+ };
87
+ }
88
+ toolContext.toolConfirmation = void 0;
89
+ return;
90
+ }
91
+ getToolCallCheckState(toolContext) {
92
+ var _a;
93
+ const { functionCallId } = toolContext;
94
+ if (!functionCallId) {
95
+ return;
96
+ }
97
+ const toolCallStates = (_a = toolContext.state.get(TOOL_CALL_SECURITY_CHECK_STATES)) != null ? _a : {};
98
+ return toolCallStates[functionCallId];
99
+ }
100
+ setToolCallCheckState(toolContext, state) {
101
+ var _a;
102
+ const { functionCallId } = toolContext;
103
+ if (!functionCallId) {
104
+ return;
105
+ }
106
+ const toolCallStates = (_a = toolContext.state.get(TOOL_CALL_SECURITY_CHECK_STATES)) != null ? _a : {};
107
+ toolCallStates[functionCallId] = state;
108
+ toolContext.state.set(TOOL_CALL_SECURITY_CHECK_STATES, toolCallStates);
109
+ }
110
+ async checkToolCallPolicy({
111
+ tool,
112
+ toolArgs,
113
+ toolContext
114
+ }) {
115
+ const policyCheckResult = await this.policyEngine.evaluate({ tool, toolArgs });
116
+ this.setToolCallCheckState(toolContext, policyCheckResult.outcome);
117
+ switch (policyCheckResult.outcome) {
118
+ case "DENY" /* DENY */:
119
+ return {
120
+ error: `This tool call is rejected by policy engine. Reason: ${policyCheckResult.reason}`
121
+ };
122
+ case "CONFIRM" /* CONFIRM */:
123
+ toolContext.requestConfirmation({
124
+ hint: `Policy engine requires confirmation calling tool: ${tool.name}. Reason: ${policyCheckResult.reason}`
125
+ });
126
+ return { partial: INTERMEDIATE_REQUIRE_TOOL_CALL_CONFIRMATION_ERROR };
127
+ case "ALLOW" /* ALLOW */:
128
+ return;
129
+ default:
130
+ return;
131
+ }
132
+ }
133
+ }
134
+ function getAskUserConfirmationFunctionCalls(event) {
135
+ if (!event.content || !event.content.parts) {
136
+ return [];
137
+ }
138
+ const results = [];
139
+ for (const part of event.content.parts) {
140
+ if (part && part.functionCall && part.functionCall.name === REQUEST_CONFIRMATION_FUNCTION_CALL_NAME) {
141
+ results.push(part.functionCall);
142
+ }
143
+ }
144
+ return results;
145
+ }
146
+ // Annotate the CommonJS export names for ESM import in node:
147
+ 0 && (module.exports = {
148
+ InMemoryPolicyEngine,
149
+ PolicyOutcome,
150
+ REQUEST_CONFIRMATION_FUNCTION_CALL_NAME,
151
+ SecurityPlugin,
152
+ getAskUserConfirmationFunctionCalls
153
+ });
@@ -0,0 +1,58 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+
7
+ "use strict";
8
+ var __defProp = Object.defineProperty;
9
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
10
+ var __getOwnPropNames = Object.getOwnPropertyNames;
11
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
12
+ var __export = (target, all) => {
13
+ for (var name in all)
14
+ __defProp(target, name, { get: all[name], enumerable: true });
15
+ };
16
+ var __copyProps = (to, from, except, desc) => {
17
+ if (from && typeof from === "object" || typeof from === "function") {
18
+ for (let key of __getOwnPropNames(from))
19
+ if (!__hasOwnProp.call(to, key) && key !== except)
20
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
21
+ }
22
+ return to;
23
+ };
24
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
25
+ var in_memory_runner_exports = {};
26
+ __export(in_memory_runner_exports, {
27
+ InMemoryRunner: () => InMemoryRunner
28
+ });
29
+ module.exports = __toCommonJS(in_memory_runner_exports);
30
+ var import_in_memory_artifact_service = require("../artifacts/in_memory_artifact_service.js");
31
+ var import_in_memory_memory_service = require("../memory/in_memory_memory_service.js");
32
+ var import_in_memory_session_service = require("../sessions/in_memory_session_service.js");
33
+ var import_runner = require("./runner.js");
34
+ /**
35
+ * @license
36
+ * Copyright 2025 Google LLC
37
+ * SPDX-License-Identifier: Apache-2.0
38
+ */
39
+ class InMemoryRunner extends import_runner.Runner {
40
+ constructor({
41
+ agent,
42
+ appName = "InMemoryRunner",
43
+ plugins = []
44
+ }) {
45
+ super({
46
+ appName,
47
+ agent,
48
+ plugins,
49
+ artifactService: new import_in_memory_artifact_service.InMemoryArtifactService(),
50
+ sessionService: new import_in_memory_session_service.InMemorySessionService(),
51
+ memoryService: new import_in_memory_memory_service.InMemoryMemoryService()
52
+ });
53
+ }
54
+ }
55
+ // Annotate the CommonJS export names for ESM import in node:
56
+ 0 && (module.exports = {
57
+ InMemoryRunner
58
+ });
@@ -0,0 +1,276 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+
7
+ "use strict";
8
+ var __defProp = Object.defineProperty;
9
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
10
+ var __getOwnPropNames = Object.getOwnPropertyNames;
11
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
12
+ var __export = (target, all) => {
13
+ for (var name in all)
14
+ __defProp(target, name, { get: all[name], enumerable: true });
15
+ };
16
+ var __copyProps = (to, from, except, desc) => {
17
+ if (from && typeof from === "object" || typeof from === "function") {
18
+ for (let key of __getOwnPropNames(from))
19
+ if (!__hasOwnProp.call(to, key) && key !== except)
20
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
21
+ }
22
+ return to;
23
+ };
24
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
25
+ var runner_exports = {};
26
+ __export(runner_exports, {
27
+ Runner: () => Runner
28
+ });
29
+ module.exports = __toCommonJS(runner_exports);
30
+ var import_genai = require("@google/genai");
31
+ var import_api = require("@opentelemetry/api");
32
+ var import_invocation_context = require("../agents/invocation_context.js");
33
+ var import_llm_agent = require("../agents/llm_agent.js");
34
+ var import_run_config = require("../agents/run_config.js");
35
+ var import_event = require("../events/event.js");
36
+ var import_event_actions = require("../events/event_actions.js");
37
+ var import_plugin_manager = require("../plugins/plugin_manager.js");
38
+ var import_logger = require("../utils/logger.js");
39
+ /**
40
+ * @license
41
+ * Copyright 2025 Google LLC
42
+ * SPDX-License-Identifier: Apache-2.0
43
+ */
44
+ class Runner {
45
+ constructor(input) {
46
+ var _a;
47
+ this.appName = input.appName;
48
+ this.agent = input.agent;
49
+ this.pluginManager = new import_plugin_manager.PluginManager((_a = input.plugins) != null ? _a : []);
50
+ this.artifactService = input.artifactService;
51
+ this.sessionService = input.sessionService;
52
+ this.memoryService = input.memoryService;
53
+ this.credentialService = input.credentialService;
54
+ }
55
+ /**
56
+ * Runs the agent with the given message, and returns an async generator of
57
+ * events.
58
+ *
59
+ * @param userId The user ID of the session.
60
+ * @param sessionId The session ID of the session.
61
+ * @param newMessage A new message to append to the session.
62
+ * @param stateDelta An optional state delta to apply to the session.
63
+ * @param runConfig The run config for the agent.
64
+ * @yields The events generated by the agent.
65
+ */
66
+ // TODO - b/425992518: user, sessionId, and runConfig can be internalized.
67
+ async *runAsync({
68
+ userId,
69
+ sessionId,
70
+ newMessage,
71
+ stateDelta,
72
+ runConfig = new import_run_config.RunConfig()
73
+ }) {
74
+ var _a;
75
+ const span = import_api.trace.getTracer("gcp.vertex.agent").startSpan("invocation");
76
+ try {
77
+ const session = await this.sessionService.getSession({ appName: this.appName, userId, sessionId });
78
+ if (!session) {
79
+ throw new Error(`Session not found: ${sessionId}`);
80
+ }
81
+ if (runConfig.supportCfc && this.agent instanceof import_llm_agent.LlmAgent) {
82
+ const modelName = this.agent.canonicalModel.model;
83
+ if (!modelName.startsWith("gemini-2")) {
84
+ throw new Error(`CFC is not supported for model: ${modelName} in agent: ${this.agent.name}`);
85
+ }
86
+ }
87
+ const invocationContext = new import_invocation_context.InvocationContext({
88
+ artifactService: this.artifactService,
89
+ sessionService: this.sessionService,
90
+ memoryService: this.memoryService,
91
+ credentialService: this.credentialService,
92
+ invocationId: (0, import_invocation_context.newInvocationContextId)(),
93
+ agent: this.agent,
94
+ session,
95
+ userContent: newMessage,
96
+ runConfig,
97
+ pluginManager: this.pluginManager
98
+ });
99
+ const pluginUserMessage = await this.pluginManager.runOnUserMessageCallback({
100
+ userMessage: newMessage,
101
+ invocationContext
102
+ });
103
+ if (pluginUserMessage) {
104
+ newMessage = pluginUserMessage;
105
+ }
106
+ if (newMessage) {
107
+ if (!((_a = newMessage.parts) == null ? void 0 : _a.length)) {
108
+ throw new Error("No parts in the new_message.");
109
+ }
110
+ if (runConfig.saveInputBlobsAsArtifacts) {
111
+ await this.saveArtifacts(
112
+ invocationContext.invocationId,
113
+ session.userId,
114
+ session.id,
115
+ newMessage
116
+ );
117
+ }
118
+ await this.sessionService.appendEvent({
119
+ session,
120
+ event: (0, import_event.createEvent)({
121
+ invocationId: invocationContext.invocationId,
122
+ author: "user",
123
+ actions: stateDelta ? (0, import_event_actions.createEventActions)({ stateDelta }) : void 0,
124
+ content: newMessage
125
+ })
126
+ });
127
+ }
128
+ invocationContext.agent = this.determineAgentForResumption(session, this.agent);
129
+ const beforeRunCallbackResponse = await this.pluginManager.runBeforeRunCallback({ invocationContext });
130
+ if (beforeRunCallbackResponse) {
131
+ const earlyExitEvent = (0, import_event.createEvent)({
132
+ invocationId: invocationContext.invocationId,
133
+ author: "model",
134
+ content: beforeRunCallbackResponse
135
+ });
136
+ await this.sessionService.appendEvent({ session, event: earlyExitEvent });
137
+ yield earlyExitEvent;
138
+ } else {
139
+ for await (const event of invocationContext.agent.runAsync(
140
+ invocationContext
141
+ )) {
142
+ if (!event.partial) {
143
+ await this.sessionService.appendEvent({ session, event });
144
+ }
145
+ const modifiedEvent = await this.pluginManager.runOnEventCallback(
146
+ { invocationContext, event }
147
+ );
148
+ if (modifiedEvent) {
149
+ yield modifiedEvent;
150
+ } else {
151
+ yield event;
152
+ }
153
+ }
154
+ }
155
+ await this.pluginManager.runAfterRunCallback({ invocationContext });
156
+ } finally {
157
+ span.end();
158
+ }
159
+ }
160
+ /**
161
+ * Saves artifacts from the message parts and replaces the inline data with
162
+ * a file name placeholder.
163
+ *
164
+ * @param invocationId The current invocation ID.
165
+ * @param userId The user ID of the session.
166
+ * @param sessionId The session ID of the session.
167
+ * @param message The message containing parts to process.
168
+ */
169
+ async saveArtifacts(invocationId, userId, sessionId, message) {
170
+ var _a;
171
+ if (!this.artifactService || !((_a = message.parts) == null ? void 0 : _a.length)) {
172
+ return;
173
+ }
174
+ for (let i = 0; i < message.parts.length; i++) {
175
+ const part = message.parts[i];
176
+ if (!part.inlineData) {
177
+ continue;
178
+ }
179
+ const fileName = `artifact_${invocationId}_${i}`;
180
+ await this.artifactService.saveArtifact({
181
+ appName: this.appName,
182
+ userId,
183
+ sessionId,
184
+ filename: fileName,
185
+ artifact: part
186
+ });
187
+ message.parts[i] = (0, import_genai.createPartFromText)(
188
+ `Uploaded file: ${fileName}. It is saved into artifacts`
189
+ );
190
+ }
191
+ }
192
+ /**
193
+ * Determines the next agent to run to continue the session. This is primarily
194
+ * used for session resumption.
195
+ */
196
+ // TODO - b/425992518: This is where LRO integration should happen.
197
+ // Needs clean up before we can generalize it.
198
+ determineAgentForResumption(session, rootAgent) {
199
+ const event = findEventByLastFunctionResponseId(session.events);
200
+ if (event && event.author) {
201
+ return rootAgent.findAgent(event.author) || rootAgent;
202
+ }
203
+ for (let i = session.events.length - 1; i >= 0; i--) {
204
+ import_logger.logger.info("event: ", JSON.stringify(session.events[i]));
205
+ const event2 = session.events[i];
206
+ if (event2.author === "user" || !event2.author) {
207
+ continue;
208
+ }
209
+ if (event2.author === rootAgent.name) {
210
+ return rootAgent;
211
+ }
212
+ const agent = rootAgent.findSubAgent(event2.author);
213
+ if (!agent) {
214
+ import_logger.logger.warn(`Event from an unknown agent: ${event2.author}, event id: ${event2.id}`);
215
+ continue;
216
+ }
217
+ if (this.isRoutableLlmAgent(agent)) {
218
+ return agent;
219
+ }
220
+ }
221
+ return rootAgent;
222
+ }
223
+ /**
224
+ * Whether the agent to run can transfer to any other agent in the agent tree.
225
+ *
226
+ * An agent is transferable if:
227
+ * - It is an instance of `LlmAgent`.
228
+ * - All its ancestors are also transferable (i.e., they have
229
+ * `disallowTransferToParent` set to false).
230
+ *
231
+ * @param agentToRun The agent to check for transferability.
232
+ * @returns True if the agent can transfer, False otherwise.
233
+ */
234
+ isRoutableLlmAgent(agentToRun) {
235
+ let agent = agentToRun;
236
+ while (agent) {
237
+ if (!(agent instanceof import_llm_agent.LlmAgent)) {
238
+ return false;
239
+ }
240
+ if (agent.disallowTransferToParent) {
241
+ return false;
242
+ }
243
+ agent = agent.parentAgent;
244
+ }
245
+ return true;
246
+ }
247
+ // TODO - b/425992518: Implement runLive and related methods.
248
+ }
249
+ function findEventByLastFunctionResponseId(events) {
250
+ var _a, _b, _c, _d;
251
+ if (!events.length) {
252
+ return null;
253
+ }
254
+ const lastEvent = events[events.length - 1];
255
+ const functionCallId = (_d = (_c = (_b = (_a = lastEvent.content) == null ? void 0 : _a.parts) == null ? void 0 : _b.find((part) => part.functionResponse)) == null ? void 0 : _c.functionResponse) == null ? void 0 : _d.id;
256
+ if (!functionCallId) {
257
+ return null;
258
+ }
259
+ for (let i = events.length - 2; i >= 0; i--) {
260
+ const event = events[i];
261
+ const functionCalls = (0, import_event.getFunctionCalls)(event);
262
+ if (!functionCalls) {
263
+ continue;
264
+ }
265
+ for (const functionCall of functionCalls) {
266
+ if (functionCall.id === functionCallId) {
267
+ return event;
268
+ }
269
+ }
270
+ }
271
+ return null;
272
+ }
273
+ // Annotate the CommonJS export names for ESM import in node:
274
+ 0 && (module.exports = {
275
+ Runner
276
+ });
@@ -0,0 +1,71 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+
7
+ "use strict";
8
+ var __defProp = Object.defineProperty;
9
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
10
+ var __getOwnPropNames = Object.getOwnPropertyNames;
11
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
12
+ var __export = (target, all) => {
13
+ for (var name in all)
14
+ __defProp(target, name, { get: all[name], enumerable: true });
15
+ };
16
+ var __copyProps = (to, from, except, desc) => {
17
+ if (from && typeof from === "object" || typeof from === "function") {
18
+ for (let key of __getOwnPropNames(from))
19
+ if (!__hasOwnProp.call(to, key) && key !== except)
20
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
21
+ }
22
+ return to;
23
+ };
24
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
25
+ var base_session_service_exports = {};
26
+ __export(base_session_service_exports, {
27
+ BaseSessionService: () => BaseSessionService
28
+ });
29
+ module.exports = __toCommonJS(base_session_service_exports);
30
+ var import_state = require("./state.js");
31
+ /**
32
+ * @license
33
+ * Copyright 2025 Google LLC
34
+ * SPDX-License-Identifier: Apache-2.0
35
+ */
36
+ class BaseSessionService {
37
+ /**
38
+ * Appends an event to a session.
39
+ *
40
+ * @param request The request to append an event.
41
+ * @return A promise that resolves to the event that was appended.
42
+ */
43
+ async appendEvent({ session, event }) {
44
+ if (event.partial) {
45
+ return event;
46
+ }
47
+ this.updateSessionState({ session, event });
48
+ session.events.push(event);
49
+ return event;
50
+ }
51
+ /**
52
+ * Updates the session state based on the event.
53
+ *
54
+ * @param request The request to update the session state.
55
+ */
56
+ updateSessionState({ session, event }) {
57
+ if (!event.actions || !event.actions.stateDelta) {
58
+ return;
59
+ }
60
+ for (const [key, value] of Object.entries(event.actions.stateDelta)) {
61
+ if (key.startsWith(import_state.State.TEMP_PREFIX)) {
62
+ continue;
63
+ }
64
+ session.state[key] = value;
65
+ }
66
+ }
67
+ }
68
+ // Annotate the CommonJS export names for ESM import in node:
69
+ 0 && (module.exports = {
70
+ BaseSessionService
71
+ });