@paean-ai/adk 0.2.19 → 0.2.20

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 (254) hide show
  1. package/dist/cjs/agents/active_streaming_tool.js +44 -0
  2. package/dist/cjs/agents/base_agent.js +245 -0
  3. package/dist/cjs/agents/base_llm_processor.js +44 -0
  4. package/dist/cjs/agents/callback_context.js +98 -0
  5. package/dist/cjs/agents/content_processor_utils.js +311 -0
  6. package/dist/cjs/agents/functions.js +425 -0
  7. package/dist/cjs/agents/instructions.js +110 -0
  8. package/dist/cjs/agents/invocation_context.js +107 -0
  9. package/dist/cjs/agents/live_request_queue.js +136 -0
  10. package/dist/cjs/agents/llm_agent.js +1257 -0
  11. package/dist/cjs/agents/loop_agent.js +68 -0
  12. package/dist/cjs/agents/parallel_agent.js +78 -0
  13. package/dist/cjs/agents/readonly_context.js +68 -0
  14. package/dist/cjs/agents/run_config.js +70 -0
  15. package/dist/cjs/agents/sequential_agent.js +84 -0
  16. package/dist/cjs/agents/transcription_entry.js +27 -0
  17. package/dist/cjs/artifacts/base_artifact_service.js +27 -0
  18. package/dist/cjs/artifacts/gcs_artifact_service.js +140 -0
  19. package/dist/cjs/artifacts/in_memory_artifact_service.js +119 -0
  20. package/dist/cjs/auth/auth_credential.js +46 -0
  21. package/dist/cjs/auth/auth_handler.js +92 -0
  22. package/dist/cjs/auth/auth_schemes.js +62 -0
  23. package/dist/cjs/auth/auth_tool.js +27 -0
  24. package/dist/cjs/auth/credential_service/base_credential_service.js +27 -0
  25. package/dist/cjs/auth/credential_service/in_memory_credential_service.js +63 -0
  26. package/dist/cjs/auth/exchanger/base_credential_exchanger.js +40 -0
  27. package/dist/cjs/auth/exchanger/credential_exchanger_registry.js +59 -0
  28. package/dist/cjs/code_executors/base_code_executor.js +76 -0
  29. package/dist/cjs/code_executors/built_in_code_executor.js +58 -0
  30. package/dist/cjs/code_executors/code_execution_utils.js +142 -0
  31. package/dist/cjs/code_executors/code_executor_context.js +198 -0
  32. package/dist/cjs/common.js +181 -0
  33. package/dist/cjs/events/event.js +119 -0
  34. package/dist/cjs/events/event_actions.js +83 -0
  35. package/dist/cjs/examples/base_example_provider.js +40 -0
  36. package/dist/cjs/examples/example.js +27 -0
  37. package/dist/cjs/examples/example_util.js +107 -0
  38. package/dist/cjs/index.js +12 -12
  39. package/dist/cjs/index.js.map +3 -3
  40. package/dist/cjs/index_web.js +33 -0
  41. package/dist/cjs/memory/base_memory_service.js +27 -0
  42. package/dist/cjs/memory/in_memory_memory_service.js +97 -0
  43. package/dist/cjs/memory/memory_entry.js +27 -0
  44. package/dist/cjs/models/base_llm.js +95 -0
  45. package/dist/cjs/models/base_llm_connection.js +27 -0
  46. package/dist/cjs/models/gemini_llm_connection.js +132 -0
  47. package/dist/cjs/models/google_llm.js +472 -0
  48. package/dist/cjs/models/llm_request.js +82 -0
  49. package/dist/cjs/models/llm_response.js +71 -0
  50. package/dist/cjs/models/registry.js +121 -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 +277 -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/telemetry/google_cloud.js +85 -0
  62. package/dist/cjs/telemetry/setup.js +97 -0
  63. package/dist/cjs/telemetry/tracing.js +231 -0
  64. package/dist/cjs/tools/agent_tool.js +134 -0
  65. package/dist/cjs/tools/base_tool.js +107 -0
  66. package/dist/cjs/tools/base_toolset.js +76 -0
  67. package/dist/cjs/tools/forwarding_artifact_service.js +71 -0
  68. package/dist/cjs/tools/function_tool.js +101 -0
  69. package/dist/cjs/tools/google_search_tool.js +77 -0
  70. package/dist/cjs/tools/long_running_tool.js +63 -0
  71. package/dist/cjs/tools/mcp/mcp_session_manager.js +65 -0
  72. package/dist/cjs/tools/mcp/mcp_tool.js +65 -0
  73. package/dist/cjs/tools/mcp/mcp_toolset.js +61 -0
  74. package/dist/cjs/tools/tool_confirmation.js +49 -0
  75. package/dist/cjs/tools/tool_context.js +129 -0
  76. package/dist/cjs/utils/client_labels.js +56 -0
  77. package/dist/cjs/utils/deep_clone.js +44 -0
  78. package/dist/cjs/utils/env_aware_utils.js +83 -0
  79. package/dist/cjs/utils/gemini_schema_util.js +88 -0
  80. package/dist/cjs/utils/logger.js +121 -0
  81. package/dist/cjs/utils/model_name.js +76 -0
  82. package/dist/cjs/utils/simple_zod_to_json.js +191 -0
  83. package/dist/cjs/utils/variant_utils.js +55 -0
  84. package/dist/cjs/version.js +39 -0
  85. package/dist/esm/agents/active_streaming_tool.js +14 -0
  86. package/dist/esm/agents/base_agent.js +214 -0
  87. package/dist/esm/agents/base_llm_processor.js +13 -0
  88. package/dist/esm/agents/callback_context.js +68 -0
  89. package/dist/esm/agents/content_processor_utils.js +280 -0
  90. package/dist/esm/agents/functions.js +384 -0
  91. package/dist/esm/agents/instructions.js +80 -0
  92. package/dist/esm/agents/invocation_context.js +76 -0
  93. package/dist/esm/agents/live_request_queue.js +106 -0
  94. package/dist/esm/agents/llm_agent.js +1225 -0
  95. package/dist/esm/agents/loop_agent.js +38 -0
  96. package/dist/esm/agents/parallel_agent.js +48 -0
  97. package/dist/esm/agents/readonly_context.js +38 -0
  98. package/dist/esm/agents/run_config.js +39 -0
  99. package/dist/esm/agents/sequential_agent.js +54 -0
  100. package/dist/esm/agents/transcription_entry.js +5 -0
  101. package/dist/esm/artifacts/base_artifact_service.js +5 -0
  102. package/dist/esm/artifacts/gcs_artifact_service.js +110 -0
  103. package/dist/esm/artifacts/in_memory_artifact_service.js +89 -0
  104. package/dist/esm/auth/auth_credential.js +16 -0
  105. package/dist/esm/auth/auth_handler.js +62 -0
  106. package/dist/esm/auth/auth_schemes.js +31 -0
  107. package/dist/esm/auth/auth_tool.js +5 -0
  108. package/dist/esm/auth/credential_service/base_credential_service.js +5 -0
  109. package/dist/esm/auth/credential_service/in_memory_credential_service.js +33 -0
  110. package/dist/esm/auth/exchanger/base_credential_exchanger.js +10 -0
  111. package/dist/esm/auth/exchanger/credential_exchanger_registry.js +29 -0
  112. package/dist/esm/code_executors/base_code_executor.js +46 -0
  113. package/dist/esm/code_executors/built_in_code_executor.js +28 -0
  114. package/dist/esm/code_executors/code_execution_utils.js +108 -0
  115. package/dist/esm/code_executors/code_executor_context.js +168 -0
  116. package/dist/esm/common.js +98 -0
  117. package/dist/esm/events/event.js +83 -0
  118. package/dist/esm/events/event_actions.js +52 -0
  119. package/dist/esm/examples/base_example_provider.js +10 -0
  120. package/dist/esm/examples/example.js +5 -0
  121. package/dist/esm/examples/example_util.js +76 -0
  122. package/dist/esm/index.js +12 -12
  123. package/dist/esm/index.js.map +3 -3
  124. package/dist/esm/index_web.js +6 -0
  125. package/dist/esm/memory/base_memory_service.js +5 -0
  126. package/dist/esm/memory/in_memory_memory_service.js +67 -0
  127. package/dist/esm/memory/memory_entry.js +5 -0
  128. package/dist/esm/models/base_llm.js +64 -0
  129. package/dist/esm/models/base_llm_connection.js +5 -0
  130. package/dist/esm/models/gemini_llm_connection.js +102 -0
  131. package/dist/esm/models/google_llm.js +446 -0
  132. package/dist/esm/models/llm_request.js +50 -0
  133. package/dist/esm/models/llm_response.js +41 -0
  134. package/dist/esm/models/registry.js +91 -0
  135. package/dist/esm/plugins/base_plugin.js +206 -0
  136. package/dist/esm/plugins/logging_plugin.js +192 -0
  137. package/dist/esm/plugins/plugin_manager.js +209 -0
  138. package/dist/esm/plugins/security_plugin.js +119 -0
  139. package/dist/esm/runner/in_memory_runner.js +28 -0
  140. package/dist/esm/runner/runner.js +247 -0
  141. package/dist/esm/sessions/base_session_service.js +41 -0
  142. package/dist/esm/sessions/in_memory_session_service.js +154 -0
  143. package/dist/esm/sessions/session.js +18 -0
  144. package/dist/esm/sessions/state.js +71 -0
  145. package/dist/esm/telemetry/google_cloud.js +54 -0
  146. package/dist/esm/telemetry/setup.js +67 -0
  147. package/dist/esm/telemetry/tracing.js +195 -0
  148. package/dist/esm/tools/agent_tool.js +104 -0
  149. package/dist/esm/tools/base_tool.js +77 -0
  150. package/dist/esm/tools/base_toolset.js +46 -0
  151. package/dist/esm/tools/forwarding_artifact_service.js +41 -0
  152. package/dist/esm/tools/function_tool.js +71 -0
  153. package/dist/esm/tools/google_search_tool.js +47 -0
  154. package/dist/esm/tools/long_running_tool.js +33 -0
  155. package/dist/esm/tools/mcp/mcp_session_manager.js +35 -0
  156. package/dist/esm/tools/mcp/mcp_tool.js +35 -0
  157. package/dist/esm/tools/mcp/mcp_toolset.js +31 -0
  158. package/dist/esm/tools/tool_confirmation.js +19 -0
  159. package/dist/esm/tools/tool_context.js +99 -0
  160. package/dist/esm/utils/client_labels.js +26 -0
  161. package/dist/esm/utils/deep_clone.js +14 -0
  162. package/dist/esm/utils/env_aware_utils.js +49 -0
  163. package/dist/esm/utils/gemini_schema_util.js +58 -0
  164. package/dist/esm/utils/logger.js +89 -0
  165. package/dist/esm/utils/model_name.js +41 -0
  166. package/dist/esm/utils/simple_zod_to_json.js +160 -0
  167. package/dist/esm/utils/variant_utils.js +24 -0
  168. package/dist/esm/version.js +9 -0
  169. package/dist/types/models/google_llm.d.ts +0 -7
  170. package/dist/web/agents/active_streaming_tool.js +14 -0
  171. package/dist/web/agents/base_agent.js +265 -0
  172. package/dist/web/agents/base_llm_processor.js +13 -0
  173. package/dist/web/agents/callback_context.js +68 -0
  174. package/dist/web/agents/content_processor_utils.js +280 -0
  175. package/dist/web/agents/functions.js +384 -0
  176. package/dist/web/agents/instructions.js +80 -0
  177. package/dist/web/agents/invocation_context.js +76 -0
  178. package/dist/web/agents/live_request_queue.js +124 -0
  179. package/dist/web/agents/llm_agent.js +1355 -0
  180. package/dist/web/agents/loop_agent.js +71 -0
  181. package/dist/web/agents/parallel_agent.js +83 -0
  182. package/dist/web/agents/readonly_context.js +38 -0
  183. package/dist/web/agents/run_config.js +54 -0
  184. package/dist/web/agents/sequential_agent.js +99 -0
  185. package/dist/web/agents/transcription_entry.js +5 -0
  186. package/dist/web/artifacts/base_artifact_service.js +5 -0
  187. package/dist/web/artifacts/gcs_artifact_service.js +126 -0
  188. package/dist/web/artifacts/in_memory_artifact_service.js +89 -0
  189. package/dist/web/auth/auth_credential.js +16 -0
  190. package/dist/web/auth/auth_handler.js +62 -0
  191. package/dist/web/auth/auth_schemes.js +31 -0
  192. package/dist/web/auth/auth_tool.js +5 -0
  193. package/dist/web/auth/credential_service/base_credential_service.js +5 -0
  194. package/dist/web/auth/credential_service/in_memory_credential_service.js +33 -0
  195. package/dist/web/auth/exchanger/base_credential_exchanger.js +10 -0
  196. package/dist/web/auth/exchanger/credential_exchanger_registry.js +29 -0
  197. package/dist/web/code_executors/base_code_executor.js +46 -0
  198. package/dist/web/code_executors/built_in_code_executor.js +28 -0
  199. package/dist/web/code_executors/code_execution_utils.js +105 -0
  200. package/dist/web/code_executors/code_executor_context.js +168 -0
  201. package/dist/web/common.js +98 -0
  202. package/dist/web/events/event.js +101 -0
  203. package/dist/web/events/event_actions.js +67 -0
  204. package/dist/web/examples/base_example_provider.js +10 -0
  205. package/dist/web/examples/example.js +5 -0
  206. package/dist/web/examples/example_util.js +75 -0
  207. package/dist/web/index.js +1 -1
  208. package/dist/web/index.js.map +3 -3
  209. package/dist/web/index_web.js +6 -0
  210. package/dist/web/memory/base_memory_service.js +5 -0
  211. package/dist/web/memory/in_memory_memory_service.js +67 -0
  212. package/dist/web/memory/memory_entry.js +5 -0
  213. package/dist/web/models/base_llm.js +64 -0
  214. package/dist/web/models/base_llm_connection.js +5 -0
  215. package/dist/web/models/gemini_llm_connection.js +120 -0
  216. package/dist/web/models/google_llm.js +487 -0
  217. package/dist/web/models/llm_request.js +50 -0
  218. package/dist/web/models/llm_response.js +41 -0
  219. package/dist/web/models/registry.js +91 -0
  220. package/dist/web/plugins/base_plugin.js +206 -0
  221. package/dist/web/plugins/logging_plugin.js +192 -0
  222. package/dist/web/plugins/plugin_manager.js +209 -0
  223. package/dist/web/plugins/security_plugin.js +119 -0
  224. package/dist/web/runner/in_memory_runner.js +28 -0
  225. package/dist/web/runner/runner.js +278 -0
  226. package/dist/web/sessions/base_session_service.js +41 -0
  227. package/dist/web/sessions/in_memory_session_service.js +154 -0
  228. package/dist/web/sessions/session.js +18 -0
  229. package/dist/web/sessions/state.js +87 -0
  230. package/dist/web/telemetry/google_cloud.js +54 -0
  231. package/dist/web/telemetry/setup.js +67 -0
  232. package/dist/web/telemetry/tracing.js +210 -0
  233. package/dist/web/tools/agent_tool.js +118 -0
  234. package/dist/web/tools/base_tool.js +77 -0
  235. package/dist/web/tools/base_toolset.js +46 -0
  236. package/dist/web/tools/forwarding_artifact_service.js +41 -0
  237. package/dist/web/tools/function_tool.js +71 -0
  238. package/dist/web/tools/google_search_tool.js +47 -0
  239. package/dist/web/tools/long_running_tool.js +50 -0
  240. package/dist/web/tools/mcp/mcp_session_manager.js +35 -0
  241. package/dist/web/tools/mcp/mcp_tool.js +35 -0
  242. package/dist/web/tools/mcp/mcp_toolset.js +31 -0
  243. package/dist/web/tools/tool_confirmation.js +19 -0
  244. package/dist/web/tools/tool_context.js +99 -0
  245. package/dist/web/utils/client_labels.js +26 -0
  246. package/dist/web/utils/deep_clone.js +14 -0
  247. package/dist/web/utils/env_aware_utils.js +49 -0
  248. package/dist/web/utils/gemini_schema_util.js +58 -0
  249. package/dist/web/utils/logger.js +89 -0
  250. package/dist/web/utils/model_name.js +41 -0
  251. package/dist/web/utils/simple_zod_to_json.js +174 -0
  252. package/dist/web/utils/variant_utils.js +24 -0
  253. package/dist/web/version.js +9 -0
  254. package/package.json +1 -1
@@ -0,0 +1,239 @@
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 plugin_manager_exports = {};
26
+ __export(plugin_manager_exports, {
27
+ PluginManager: () => PluginManager
28
+ });
29
+ module.exports = __toCommonJS(plugin_manager_exports);
30
+ var import_logger = require("../utils/logger.js");
31
+ /**
32
+ * @license
33
+ * Copyright 2025 Google LLC
34
+ * SPDX-License-Identifier: Apache-2.0
35
+ */
36
+ class PluginManager {
37
+ /**
38
+ * Initializes the plugin service.
39
+ *
40
+ * @param plugins An optional list of plugins to register upon
41
+ * initialization.
42
+ */
43
+ constructor(plugins) {
44
+ this.plugins = /* @__PURE__ */ new Set();
45
+ if (plugins) {
46
+ for (const plugin of plugins) {
47
+ this.registerPlugin(plugin);
48
+ }
49
+ }
50
+ }
51
+ /**
52
+ * Registers a new plugin.
53
+ *
54
+ * @param plugin The plugin instance to register.
55
+ * @throws If the same exact plugin or a plugin with the same name is already
56
+ * registered.
57
+ */
58
+ registerPlugin(plugin) {
59
+ if (this.plugins.has(plugin)) {
60
+ throw new Error(`Plugin '${plugin.name}' already registered.`);
61
+ }
62
+ if (Array.from(this.plugins).some((p) => p.name === plugin.name)) {
63
+ throw new Error(`Plugin with name '${plugin.name}' already registered.`);
64
+ }
65
+ this.plugins.add(plugin);
66
+ import_logger.logger.info(`Plugin '${plugin.name}' registered.`);
67
+ }
68
+ /**
69
+ * Retrieves a registered plugin by its name.
70
+ *
71
+ * @param pluginName The name of the plugin to retrieve.
72
+ * @returns The plugin instance if found, otherwise `undefined`.
73
+ */
74
+ getPlugin(pluginName) {
75
+ return Array.from(this.plugins).find((p) => p.name === pluginName);
76
+ }
77
+ /**
78
+ * Runs the same callback for all plugins. This is a utility method to reduce
79
+ * duplication below.
80
+ *
81
+ * @param plugins The set of plugins to run
82
+ * @param callback A closure containing the callback method to run on each
83
+ * plugin
84
+ * @param callbackName The name of the function being called in the closure
85
+ * above. Used for logging purposes.
86
+ * @returns A promise containing the plugin method result. Must be casted to
87
+ * the proper type for the plugin method.
88
+ */
89
+ async runCallbacks(plugins, callback, callbackName) {
90
+ for (const plugin of plugins) {
91
+ try {
92
+ const result = await callback(plugin);
93
+ if (result !== void 0) {
94
+ import_logger.logger.debug(
95
+ `Plugin '${plugin.name}' returned a value for callback '${callbackName}', exiting early.`
96
+ );
97
+ return result;
98
+ }
99
+ } catch (e) {
100
+ const errorMessage = `Error in plugin '${plugin.name}' during '${callbackName}' callback: ${e}`;
101
+ import_logger.logger.error(errorMessage);
102
+ throw new Error(errorMessage);
103
+ }
104
+ }
105
+ return void 0;
106
+ }
107
+ /**
108
+ * Runs the `onUserMessageCallback` for all plugins.
109
+ */
110
+ async runOnUserMessageCallback({ userMessage, invocationContext }) {
111
+ return await this.runCallbacks(
112
+ this.plugins,
113
+ (plugin) => plugin.onUserMessageCallback(
114
+ { userMessage, invocationContext }
115
+ ),
116
+ "onUserMessageCallback"
117
+ );
118
+ }
119
+ /**
120
+ * Runs the `beforeRunCallback` for all plugins.
121
+ */
122
+ async runBeforeRunCallback({ invocationContext }) {
123
+ return await this.runCallbacks(
124
+ this.plugins,
125
+ (plugin) => plugin.beforeRunCallback({ invocationContext }),
126
+ "beforeRunCallback"
127
+ );
128
+ }
129
+ /**
130
+ * Runs the `afterRunCallback` for all plugins.
131
+ */
132
+ async runAfterRunCallback({ invocationContext }) {
133
+ await this.runCallbacks(
134
+ this.plugins,
135
+ (plugin) => plugin.afterRunCallback({ invocationContext }),
136
+ "afterRunCallback"
137
+ );
138
+ }
139
+ /**
140
+ * Runs the `onEventCallback` for all plugins.
141
+ */
142
+ async runOnEventCallback({ invocationContext, event }) {
143
+ return await this.runCallbacks(
144
+ this.plugins,
145
+ (plugin) => plugin.onEventCallback({ invocationContext, event }),
146
+ "onEventCallback"
147
+ );
148
+ }
149
+ /**
150
+ * Runs the `beforeAgentCallback` for all plugins.
151
+ */
152
+ async runBeforeAgentCallback({ agent, callbackContext }) {
153
+ return await this.runCallbacks(
154
+ this.plugins,
155
+ (plugin) => plugin.beforeAgentCallback({ agent, callbackContext }),
156
+ "beforeAgentCallback"
157
+ );
158
+ }
159
+ /**
160
+ * Runs the `afterAgentCallback` for all plugins.
161
+ */
162
+ async runAfterAgentCallback({ agent, callbackContext }) {
163
+ return await this.runCallbacks(
164
+ this.plugins,
165
+ (plugin) => plugin.afterAgentCallback({ agent, callbackContext }),
166
+ "afterAgentCallback"
167
+ );
168
+ }
169
+ /**
170
+ * Runs the `beforeToolCallback` for all plugins.
171
+ */
172
+ async runBeforeToolCallback({ tool, toolArgs, toolContext }) {
173
+ return await this.runCallbacks(
174
+ this.plugins,
175
+ (plugin) => plugin.beforeToolCallback({ tool, toolArgs, toolContext }),
176
+ "beforeToolCallback"
177
+ );
178
+ }
179
+ /**
180
+ * Runs the `afterToolCallback` for all plugins.
181
+ */
182
+ async runAfterToolCallback({ tool, toolArgs, toolContext, result }) {
183
+ return await this.runCallbacks(
184
+ this.plugins,
185
+ (plugin) => plugin.afterToolCallback(
186
+ { tool, toolArgs, toolContext, result }
187
+ ),
188
+ "afterToolCallback"
189
+ );
190
+ }
191
+ /**
192
+ * Runs the `onModelErrorCallback` for all plugins.
193
+ */
194
+ async runOnModelErrorCallback({ callbackContext, llmRequest, error }) {
195
+ return await this.runCallbacks(
196
+ this.plugins,
197
+ (plugin) => plugin.onModelErrorCallback(
198
+ { callbackContext, llmRequest, error }
199
+ ),
200
+ "onModelErrorCallback"
201
+ );
202
+ }
203
+ /**
204
+ * Runs the `beforeModelCallback` for all plugins.
205
+ */
206
+ async runBeforeModelCallback({ callbackContext, llmRequest }) {
207
+ return await this.runCallbacks(
208
+ this.plugins,
209
+ (plugin) => plugin.beforeModelCallback({ callbackContext, llmRequest }),
210
+ "beforeModelCallback"
211
+ );
212
+ }
213
+ /**
214
+ * Runs the `afterModelCallback` for all plugins.
215
+ */
216
+ async runAfterModelCallback({ callbackContext, llmResponse }) {
217
+ return await this.runCallbacks(
218
+ this.plugins,
219
+ (plugin) => plugin.afterModelCallback({ callbackContext, llmResponse }),
220
+ "afterModelCallback"
221
+ );
222
+ }
223
+ /**
224
+ * Runs the `onToolErrorCallback` for all plugins.
225
+ */
226
+ async runOnToolErrorCallback({ tool, toolArgs, toolContext, error }) {
227
+ return await this.runCallbacks(
228
+ this.plugins,
229
+ (plugin) => plugin.onToolErrorCallback(
230
+ { tool, toolArgs, toolContext, error }
231
+ ),
232
+ "onToolErrorCallback"
233
+ );
234
+ }
235
+ }
236
+ // Annotate the CommonJS export names for ESM import in node:
237
+ 0 && (module.exports = {
238
+ PluginManager
239
+ });
@@ -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
+ });