@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,71 @@
1
+ var __knownSymbol = (name, symbol) => (symbol = Symbol[name]) ? symbol : Symbol.for("Symbol." + name);
2
+ var __await = function(promise, isYieldStar) {
3
+ this[0] = promise;
4
+ this[1] = isYieldStar;
5
+ };
6
+ var __asyncGenerator = (__this, __arguments, generator) => {
7
+ var resume = (k, v, yes, no) => {
8
+ try {
9
+ var x = generator[k](v), isAwait = (v = x.value) instanceof __await, done = x.done;
10
+ Promise.resolve(isAwait ? v[0] : v).then((y) => isAwait ? resume(k === "return" ? k : "next", v[1] ? { done: y.done, value: y.value } : y, yes, no) : yes({ value: y, done })).catch((e) => resume("throw", e, yes, no));
11
+ } catch (e) {
12
+ no(e);
13
+ }
14
+ }, method = (k) => it[k] = (x) => new Promise((yes, no) => resume(k, x, yes, no)), it = {};
15
+ return generator = generator.apply(__this, __arguments), it[__knownSymbol("asyncIterator")] = () => it, method("next"), method("throw"), method("return"), it;
16
+ };
17
+ var __forAwait = (obj, it, method) => (it = obj[__knownSymbol("asyncIterator")]) ? it.call(obj) : (obj = obj[__knownSymbol("iterator")](), it = {}, method = (key, fn) => (fn = obj[key]) && (it[key] = (arg) => new Promise((yes, no, done) => (arg = fn.call(obj, arg), done = arg.done, Promise.resolve(arg.value).then((value) => yes({ value, done }), no)))), method("next"), method("return"), it);
18
+ /**
19
+ * @license
20
+ * Copyright 2025 Google LLC
21
+ * SPDX-License-Identifier: Apache-2.0
22
+ */
23
+ import { BaseAgent } from "./base_agent.js";
24
+ class LoopAgent extends BaseAgent {
25
+ constructor(config) {
26
+ var _a;
27
+ super(config);
28
+ this.maxIterations = (_a = config.maxIterations) != null ? _a : Number.MAX_SAFE_INTEGER;
29
+ }
30
+ runAsyncImpl(context) {
31
+ return __asyncGenerator(this, null, function* () {
32
+ let iteration = 0;
33
+ while (iteration < this.maxIterations) {
34
+ for (const subAgent of this.subAgents) {
35
+ let shouldExit = false;
36
+ try {
37
+ for (var iter = __forAwait(subAgent.runAsync(context)), more, temp, error; more = !(temp = yield new __await(iter.next())).done; more = false) {
38
+ const event = temp.value;
39
+ yield event;
40
+ if (event.actions.escalate) {
41
+ shouldExit = true;
42
+ }
43
+ }
44
+ } catch (temp) {
45
+ error = [temp];
46
+ } finally {
47
+ try {
48
+ more && (temp = iter.return) && (yield new __await(temp.call(iter)));
49
+ } finally {
50
+ if (error)
51
+ throw error[0];
52
+ }
53
+ }
54
+ if (shouldExit) {
55
+ return;
56
+ }
57
+ }
58
+ iteration++;
59
+ }
60
+ return;
61
+ });
62
+ }
63
+ runLiveImpl(context) {
64
+ return __asyncGenerator(this, null, function* () {
65
+ throw new Error("This is not supported yet for LoopAgent.");
66
+ });
67
+ }
68
+ }
69
+ export {
70
+ LoopAgent
71
+ };
@@ -0,0 +1,83 @@
1
+ var __knownSymbol = (name, symbol) => (symbol = Symbol[name]) ? symbol : Symbol.for("Symbol." + name);
2
+ var __await = function(promise, isYieldStar) {
3
+ this[0] = promise;
4
+ this[1] = isYieldStar;
5
+ };
6
+ var __asyncGenerator = (__this, __arguments, generator) => {
7
+ var resume = (k, v, yes, no) => {
8
+ try {
9
+ var x = generator[k](v), isAwait = (v = x.value) instanceof __await, done = x.done;
10
+ Promise.resolve(isAwait ? v[0] : v).then((y) => isAwait ? resume(k === "return" ? k : "next", v[1] ? { done: y.done, value: y.value } : y, yes, no) : yes({ value: y, done })).catch((e) => resume("throw", e, yes, no));
11
+ } catch (e) {
12
+ no(e);
13
+ }
14
+ }, method = (k) => it[k] = (x) => new Promise((yes, no) => resume(k, x, yes, no)), it = {};
15
+ return generator = generator.apply(__this, __arguments), it[__knownSymbol("asyncIterator")] = () => it, method("next"), method("throw"), method("return"), it;
16
+ };
17
+ var __forAwait = (obj, it, method) => (it = obj[__knownSymbol("asyncIterator")]) ? it.call(obj) : (obj = obj[__knownSymbol("iterator")](), it = {}, method = (key, fn) => (fn = obj[key]) && (it[key] = (arg) => new Promise((yes, no, done) => (arg = fn.call(obj, arg), done = arg.done, Promise.resolve(arg.value).then((value) => yes({ value, done }), no)))), method("next"), method("return"), it);
18
+ /**
19
+ * @license
20
+ * Copyright 2025 Google LLC
21
+ * SPDX-License-Identifier: Apache-2.0
22
+ */
23
+ import { BaseAgent } from "./base_agent.js";
24
+ import { InvocationContext } from "./invocation_context.js";
25
+ class ParallelAgent extends BaseAgent {
26
+ runAsyncImpl(context) {
27
+ return __asyncGenerator(this, null, function* () {
28
+ const agentRuns = this.subAgents.map(
29
+ (subAgent) => subAgent.runAsync(
30
+ createBranchCtxForSubAgent(this, subAgent, context)
31
+ )
32
+ );
33
+ try {
34
+ for (var iter = __forAwait(mergeAgentRuns(agentRuns)), more, temp, error; more = !(temp = yield new __await(iter.next())).done; more = false) {
35
+ const event = temp.value;
36
+ yield event;
37
+ }
38
+ } catch (temp) {
39
+ error = [temp];
40
+ } finally {
41
+ try {
42
+ more && (temp = iter.return) && (yield new __await(temp.call(iter)));
43
+ } finally {
44
+ if (error)
45
+ throw error[0];
46
+ }
47
+ }
48
+ });
49
+ }
50
+ runLiveImpl(context) {
51
+ return __asyncGenerator(this, null, function* () {
52
+ throw new Error("This is not supported yet for ParallelAgent.");
53
+ });
54
+ }
55
+ }
56
+ function createBranchCtxForSubAgent(agent, subAgent, originalContext) {
57
+ const invocationContext = new InvocationContext(originalContext);
58
+ const branchSuffix = "".concat(agent.name, ".").concat(subAgent.name);
59
+ invocationContext.branch = invocationContext.branch ? "".concat(invocationContext.branch, ".").concat(branchSuffix) : branchSuffix;
60
+ return invocationContext;
61
+ }
62
+ function mergeAgentRuns(agentRuns) {
63
+ return __asyncGenerator(this, null, function* () {
64
+ const pendingPromises = /* @__PURE__ */ new Map();
65
+ for (const [index, generator] of agentRuns.entries()) {
66
+ const promise = generator.next().then((result) => ({ result, index }));
67
+ pendingPromises.set(index, promise);
68
+ }
69
+ while (pendingPromises.size > 0) {
70
+ const { result, index } = yield new __await(Promise.race(pendingPromises.values()));
71
+ if (result.done) {
72
+ pendingPromises.delete(index);
73
+ continue;
74
+ }
75
+ yield result.value;
76
+ const nextPromise = agentRuns[index].next().then((result2) => ({ result: result2, index }));
77
+ pendingPromises.set(index, nextPromise);
78
+ }
79
+ });
80
+ }
81
+ export {
82
+ ParallelAgent
83
+ };
@@ -0,0 +1,38 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { State } from "../sessions/state.js";
7
+ class ReadonlyContext {
8
+ constructor(invocationContext) {
9
+ this.invocationContext = invocationContext;
10
+ }
11
+ /**
12
+ * The user content that started this invocation.
13
+ */
14
+ get userContent() {
15
+ return this.invocationContext.userContent;
16
+ }
17
+ /**
18
+ * The current invocation id.
19
+ */
20
+ get invocationId() {
21
+ return this.invocationContext.invocationId;
22
+ }
23
+ /**
24
+ * The current agent name.
25
+ */
26
+ get agentName() {
27
+ return this.invocationContext.agent.name;
28
+ }
29
+ /**
30
+ * The state of the current session.
31
+ */
32
+ get state() {
33
+ return new State(this.invocationContext.session.state, {});
34
+ }
35
+ }
36
+ export {
37
+ ReadonlyContext
38
+ };
@@ -0,0 +1,54 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
3
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
4
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
5
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
6
+ var __spreadValues = (a, b) => {
7
+ for (var prop in b || (b = {}))
8
+ if (__hasOwnProp.call(b, prop))
9
+ __defNormalProp(a, prop, b[prop]);
10
+ if (__getOwnPropSymbols)
11
+ for (var prop of __getOwnPropSymbols(b)) {
12
+ if (__propIsEnum.call(b, prop))
13
+ __defNormalProp(a, prop, b[prop]);
14
+ }
15
+ return a;
16
+ };
17
+ /**
18
+ * @license
19
+ * Copyright 2025 Google LLC
20
+ * SPDX-License-Identifier: Apache-2.0
21
+ */
22
+ import { logger } from "../utils/logger.js";
23
+ var StreamingMode = /* @__PURE__ */ ((StreamingMode2) => {
24
+ StreamingMode2["NONE"] = "none";
25
+ StreamingMode2["SSE"] = "sse";
26
+ StreamingMode2["BIDI"] = "bidi";
27
+ return StreamingMode2;
28
+ })(StreamingMode || {});
29
+ function createRunConfig(params = {}) {
30
+ return __spreadValues({
31
+ saveInputBlobsAsArtifacts: false,
32
+ supportCfc: false,
33
+ enableAffectiveDialog: false,
34
+ streamingMode: "none" /* NONE */,
35
+ maxLlmCalls: validateMaxLlmCalls(params.maxLlmCalls || 500)
36
+ }, params);
37
+ }
38
+ function validateMaxLlmCalls(value) {
39
+ if (value > Number.MAX_SAFE_INTEGER) {
40
+ throw new Error(
41
+ "maxLlmCalls should be less than ".concat(Number.MAX_SAFE_INTEGER, ".")
42
+ );
43
+ }
44
+ if (value <= 0) {
45
+ logger.warn(
46
+ "maxLlmCalls is less than or equal to 0. This will result in no enforcement on total number of llm calls that will be made for a run. This may not be ideal, as this could result in a never ending communication between the model and the agent in certain cases."
47
+ );
48
+ }
49
+ return value;
50
+ }
51
+ export {
52
+ StreamingMode,
53
+ createRunConfig
54
+ };
@@ -0,0 +1,99 @@
1
+ var __knownSymbol = (name, symbol) => (symbol = Symbol[name]) ? symbol : Symbol.for("Symbol." + name);
2
+ var __await = function(promise, isYieldStar) {
3
+ this[0] = promise;
4
+ this[1] = isYieldStar;
5
+ };
6
+ var __asyncGenerator = (__this, __arguments, generator) => {
7
+ var resume = (k, v, yes, no) => {
8
+ try {
9
+ var x = generator[k](v), isAwait = (v = x.value) instanceof __await, done = x.done;
10
+ Promise.resolve(isAwait ? v[0] : v).then((y) => isAwait ? resume(k === "return" ? k : "next", v[1] ? { done: y.done, value: y.value } : y, yes, no) : yes({ value: y, done })).catch((e) => resume("throw", e, yes, no));
11
+ } catch (e) {
12
+ no(e);
13
+ }
14
+ }, method = (k) => it[k] = (x) => new Promise((yes, no) => resume(k, x, yes, no)), it = {};
15
+ return generator = generator.apply(__this, __arguments), it[__knownSymbol("asyncIterator")] = () => it, method("next"), method("throw"), method("return"), it;
16
+ };
17
+ var __forAwait = (obj, it, method) => (it = obj[__knownSymbol("asyncIterator")]) ? it.call(obj) : (obj = obj[__knownSymbol("iterator")](), it = {}, method = (key, fn) => (fn = obj[key]) && (it[key] = (arg) => new Promise((yes, no, done) => (arg = fn.call(obj, arg), done = arg.done, Promise.resolve(arg.value).then((value) => yes({ value, done }), no)))), method("next"), method("return"), it);
18
+ /**
19
+ * @license
20
+ * Copyright 2025 Google LLC
21
+ * SPDX-License-Identifier: Apache-2.0
22
+ */
23
+ import { FunctionTool } from "../tools/function_tool.js";
24
+ import { BaseAgent } from "./base_agent.js";
25
+ import { LlmAgent } from "./llm_agent.js";
26
+ import { ReadonlyContext } from "./readonly_context.js";
27
+ const TASK_COMPLETED_TOOL_NAME = "task_completed";
28
+ class SequentialAgent extends BaseAgent {
29
+ runAsyncImpl(context) {
30
+ return __asyncGenerator(this, null, function* () {
31
+ for (const subAgent of this.subAgents) {
32
+ try {
33
+ for (var iter = __forAwait(subAgent.runAsync(context)), more, temp, error; more = !(temp = yield new __await(iter.next())).done; more = false) {
34
+ const event = temp.value;
35
+ yield event;
36
+ }
37
+ } catch (temp) {
38
+ error = [temp];
39
+ } finally {
40
+ try {
41
+ more && (temp = iter.return) && (yield new __await(temp.call(iter)));
42
+ } finally {
43
+ if (error)
44
+ throw error[0];
45
+ }
46
+ }
47
+ }
48
+ });
49
+ }
50
+ /**
51
+ * Implementation for live SequentialAgent.
52
+ *
53
+ * Compared to the non-live case, live agents process a continuous stream of
54
+ * audio or video, so there is no way to tell if it's finished and should pass
55
+ * to the next agent or not. So we introduce a task_completed() function so
56
+ * the model can call this function to signal that it's finished the task and
57
+ * we can move on to the next agent.
58
+ *
59
+ * @param context: The invocation context of the agent.
60
+ */
61
+ runLiveImpl(context) {
62
+ return __asyncGenerator(this, null, function* () {
63
+ for (const subAgent of this.subAgents) {
64
+ if (subAgent instanceof LlmAgent) {
65
+ const agentTools = yield new __await(subAgent.canonicalTools(new ReadonlyContext(context)));
66
+ const taskCompletedToolAlreadyAdded = agentTools.some((tool) => tool.name === TASK_COMPLETED_TOOL_NAME);
67
+ if (!taskCompletedToolAlreadyAdded) {
68
+ subAgent.tools.push(new FunctionTool({
69
+ name: TASK_COMPLETED_TOOL_NAME,
70
+ description: "Signals that the model has successfully completed the user's question or task.",
71
+ execute: () => "Task completion signaled."
72
+ }));
73
+ subAgent.instruction += "If you finished the user's request according to its description, call the ".concat(TASK_COMPLETED_TOOL_NAME, " function to exit so the next agents can take over. When calling this function, do not generate any text other than the function call.");
74
+ }
75
+ }
76
+ }
77
+ for (const subAgent of this.subAgents) {
78
+ try {
79
+ for (var iter = __forAwait(subAgent.runLive(context)), more, temp, error; more = !(temp = yield new __await(iter.next())).done; more = false) {
80
+ const event = temp.value;
81
+ yield event;
82
+ }
83
+ } catch (temp) {
84
+ error = [temp];
85
+ } finally {
86
+ try {
87
+ more && (temp = iter.return) && (yield new __await(temp.call(iter)));
88
+ } finally {
89
+ if (error)
90
+ throw error[0];
91
+ }
92
+ }
93
+ }
94
+ });
95
+ }
96
+ }
97
+ export {
98
+ SequentialAgent
99
+ };
@@ -0,0 +1,5 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
@@ -0,0 +1,5 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
@@ -0,0 +1,126 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __defProps = Object.defineProperties;
3
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
4
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
7
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
8
+ var __spreadValues = (a, b) => {
9
+ for (var prop in b || (b = {}))
10
+ if (__hasOwnProp.call(b, prop))
11
+ __defNormalProp(a, prop, b[prop]);
12
+ if (__getOwnPropSymbols)
13
+ for (var prop of __getOwnPropSymbols(b)) {
14
+ if (__propIsEnum.call(b, prop))
15
+ __defNormalProp(a, prop, b[prop]);
16
+ }
17
+ return a;
18
+ };
19
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
20
+ /**
21
+ * @license
22
+ * Copyright 2025 Google LLC
23
+ * SPDX-License-Identifier: Apache-2.0
24
+ */
25
+ import { Storage } from "@google-cloud/storage";
26
+ import { createPartFromBase64, createPartFromText } from "@google/genai";
27
+ class GcsArtifactService {
28
+ constructor(bucket) {
29
+ this.bucket = new Storage().bucket(bucket);
30
+ }
31
+ async saveArtifact(request) {
32
+ const versions = await this.listVersions(request);
33
+ const version = versions.length > 0 ? Math.max(...versions) + 1 : 0;
34
+ const file = this.bucket.file(getFileName(__spreadProps(__spreadValues({}, request), {
35
+ version
36
+ })));
37
+ if (request.artifact.inlineData) {
38
+ await file.save(JSON.stringify(request.artifact.inlineData.data), {
39
+ contentType: request.artifact.inlineData.mimeType
40
+ });
41
+ return version;
42
+ }
43
+ if (request.artifact.text) {
44
+ await file.save(request.artifact.text, {
45
+ contentType: "text/plain"
46
+ });
47
+ return version;
48
+ }
49
+ throw new Error("Artifact must have either inlineData or text.");
50
+ }
51
+ async loadArtifact(request) {
52
+ let version = request.version;
53
+ if (version === void 0) {
54
+ const versions = await this.listVersions(request);
55
+ if (versions.length === 0) {
56
+ return void 0;
57
+ }
58
+ version = Math.max(...versions);
59
+ }
60
+ const file = this.bucket.file(getFileName(__spreadProps(__spreadValues({}, request), {
61
+ version
62
+ })));
63
+ const [[metadata], [rawDataBuffer]] = await Promise.all([file.getMetadata(), file.download()]);
64
+ if (metadata.contentType === "text/plain") {
65
+ return createPartFromText(rawDataBuffer.toString("utf-8"));
66
+ }
67
+ return createPartFromBase64(
68
+ rawDataBuffer.toString("base64"),
69
+ metadata.contentType
70
+ );
71
+ }
72
+ async listArtifactKeys(request) {
73
+ const fileNames = [];
74
+ const sessionPrefix = "".concat(request.appName, "/").concat(request.userId, "/").concat(request.sessionId, "/");
75
+ const usernamePrefix = "".concat(request.appName, "/").concat(request.userId, "/user/");
76
+ const [
77
+ [sessionFiles],
78
+ [userSessionFiles]
79
+ ] = await Promise.all([
80
+ this.bucket.getFiles({ prefix: sessionPrefix }),
81
+ this.bucket.getFiles({ prefix: usernamePrefix })
82
+ ]);
83
+ for (const file of sessionFiles) {
84
+ fileNames.push(file.name.split("/").pop());
85
+ }
86
+ for (const file of userSessionFiles) {
87
+ fileNames.push(file.name.split("/").pop());
88
+ }
89
+ return fileNames.sort((a, b) => a.localeCompare(b));
90
+ }
91
+ async deleteArtifact(request) {
92
+ const versions = await this.listVersions(request);
93
+ await Promise.all(versions.map((version) => {
94
+ const file = this.bucket.file(getFileName(__spreadProps(__spreadValues({}, request), {
95
+ version
96
+ })));
97
+ return file.delete();
98
+ }));
99
+ return;
100
+ }
101
+ async listVersions(request) {
102
+ const prefix = getFileName(request);
103
+ const [files] = await this.bucket.getFiles({ prefix });
104
+ const versions = [];
105
+ for (const file of files) {
106
+ const version = file.name.split("/").pop();
107
+ versions.push(parseInt(version, 10));
108
+ }
109
+ return versions;
110
+ }
111
+ }
112
+ function getFileName({
113
+ appName,
114
+ userId,
115
+ sessionId,
116
+ filename,
117
+ version
118
+ }) {
119
+ if (filename.startsWith("user:")) {
120
+ return "".concat(appName, "/").concat(userId, "/user/").concat(filename, "/").concat(version);
121
+ }
122
+ return "".concat(appName, "/").concat(userId, "/").concat(sessionId, "/").concat(filename, "/").concat(version);
123
+ }
124
+ export {
125
+ GcsArtifactService
126
+ };
@@ -0,0 +1,89 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ class InMemoryArtifactService {
7
+ constructor() {
8
+ this.artifacts = {};
9
+ }
10
+ saveArtifact({
11
+ appName,
12
+ userId,
13
+ sessionId,
14
+ filename,
15
+ artifact
16
+ }) {
17
+ const path = artifactPath(appName, userId, sessionId, filename);
18
+ if (!this.artifacts[path]) {
19
+ this.artifacts[path] = [];
20
+ }
21
+ const version = this.artifacts[path].length;
22
+ this.artifacts[path].push(artifact);
23
+ return Promise.resolve(version);
24
+ }
25
+ loadArtifact({
26
+ appName,
27
+ userId,
28
+ sessionId,
29
+ filename,
30
+ version
31
+ }) {
32
+ const path = artifactPath(appName, userId, sessionId, filename);
33
+ const versions = this.artifacts[path];
34
+ if (!versions) {
35
+ return Promise.resolve(void 0);
36
+ }
37
+ if (version === void 0) {
38
+ version = versions.length - 1;
39
+ }
40
+ return Promise.resolve(versions[version]);
41
+ }
42
+ listArtifactKeys({ appName, userId, sessionId }) {
43
+ const sessionPrefix = "".concat(appName, "/").concat(userId, "/").concat(sessionId, "/");
44
+ const usernamespacePrefix = "".concat(appName, "/").concat(userId, "/user/");
45
+ const filenames = [];
46
+ for (const path in this.artifacts) {
47
+ if (path.startsWith(sessionPrefix)) {
48
+ const filename = path.replace(sessionPrefix, "");
49
+ filenames.push(filename);
50
+ } else if (path.startsWith(usernamespacePrefix)) {
51
+ const filename = path.replace(usernamespacePrefix, "");
52
+ filenames.push(filename);
53
+ }
54
+ }
55
+ return Promise.resolve(filenames.sort());
56
+ }
57
+ deleteArtifact({ appName, userId, sessionId, filename }) {
58
+ const path = artifactPath(appName, userId, sessionId, filename);
59
+ if (!this.artifacts[path]) {
60
+ return Promise.resolve();
61
+ }
62
+ delete this.artifacts[path];
63
+ return Promise.resolve();
64
+ }
65
+ listVersions({ appName, userId, sessionId, filename }) {
66
+ const path = artifactPath(appName, userId, sessionId, filename);
67
+ const artifacts = this.artifacts[path];
68
+ if (!artifacts) {
69
+ return Promise.resolve([]);
70
+ }
71
+ let versions = [];
72
+ for (let i = 0; i < artifacts.length; i++) {
73
+ versions.push(i);
74
+ }
75
+ return Promise.resolve(versions);
76
+ }
77
+ }
78
+ function artifactPath(appName, userId, sessionId, filename) {
79
+ if (fileHasUserNamespace(filename)) {
80
+ return "".concat(appName, "/").concat(userId, "/user/").concat(filename);
81
+ }
82
+ return "".concat(appName, "/").concat(userId, "/").concat(sessionId, "/").concat(filename);
83
+ }
84
+ function fileHasUserNamespace(filename) {
85
+ return filename.startsWith("user:");
86
+ }
87
+ export {
88
+ InMemoryArtifactService
89
+ };
@@ -0,0 +1,16 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ var AuthCredentialTypes = /* @__PURE__ */ ((AuthCredentialTypes2) => {
7
+ AuthCredentialTypes2["API_KEY"] = "apiKey";
8
+ AuthCredentialTypes2["HTTP"] = "http";
9
+ AuthCredentialTypes2["OAUTH2"] = "oauth2";
10
+ AuthCredentialTypes2["OPEN_ID_CONNECT"] = "openIdConnect";
11
+ AuthCredentialTypes2["SERVICE_ACCOUNT"] = "serviceAccount";
12
+ return AuthCredentialTypes2;
13
+ })(AuthCredentialTypes || {});
14
+ export {
15
+ AuthCredentialTypes
16
+ };
@@ -0,0 +1,62 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ class AuthHandler {
7
+ constructor(authConfig) {
8
+ this.authConfig = authConfig;
9
+ }
10
+ getAuthResponse(state) {
11
+ const credentialKey = "temp:" + this.authConfig.credentialKey;
12
+ return state.get(credentialKey);
13
+ }
14
+ generateAuthRequest() {
15
+ var _a, _b;
16
+ const authSchemeType = this.authConfig.authScheme.type;
17
+ if (!["oauth2", "openIdConnect"].includes(authSchemeType)) {
18
+ return this.authConfig;
19
+ }
20
+ if ((_b = (_a = this.authConfig.exchangedAuthCredential) == null ? void 0 : _a.oauth2) == null ? void 0 : _b.authUri) {
21
+ return this.authConfig;
22
+ }
23
+ if (!this.authConfig.rawAuthCredential) {
24
+ throw new Error("Auth Scheme ".concat(authSchemeType, " requires authCredential."));
25
+ }
26
+ if (!this.authConfig.rawAuthCredential.oauth2) {
27
+ throw new Error(
28
+ "Auth Scheme ".concat(authSchemeType, " requires oauth2 in authCredential.")
29
+ );
30
+ }
31
+ if (this.authConfig.rawAuthCredential.oauth2.authUri) {
32
+ return {
33
+ credentialKey: this.authConfig.credentialKey,
34
+ authScheme: this.authConfig.authScheme,
35
+ rawAuthCredential: this.authConfig.rawAuthCredential,
36
+ exchangedAuthCredential: this.authConfig.rawAuthCredential
37
+ };
38
+ }
39
+ if (!this.authConfig.rawAuthCredential.oauth2.clientId || !this.authConfig.rawAuthCredential.oauth2.clientSecret) {
40
+ throw new Error("Auth Scheme ".concat(authSchemeType, " requires both clientId and clientSecret in authCredential.oauth2."));
41
+ }
42
+ return {
43
+ credentialKey: this.authConfig.credentialKey,
44
+ authScheme: this.authConfig.authScheme,
45
+ rawAuthCredential: this.authConfig.rawAuthCredential,
46
+ exchangedAuthCredential: this.generateAuthUri()
47
+ };
48
+ }
49
+ /**
50
+ * Generates an response containing the auth uri for user to sign in.
51
+ *
52
+ * @return An AuthCredential object containing the auth URI and state.
53
+ * @throws Error: If the authorization endpoint is not configured in the
54
+ * auth scheme.
55
+ */
56
+ generateAuthUri() {
57
+ return this.authConfig.rawAuthCredential;
58
+ }
59
+ }
60
+ export {
61
+ AuthHandler
62
+ };
@@ -0,0 +1,31 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ var OAuthGrantType = /* @__PURE__ */ ((OAuthGrantType2) => {
7
+ OAuthGrantType2["CLIENT_CREDENTIALS"] = "client_credentials";
8
+ OAuthGrantType2["AUTHORIZATION_CODE"] = "authorization_code";
9
+ OAuthGrantType2["IMPLICIT"] = "implicit";
10
+ OAuthGrantType2["PASSWORD"] = "password";
11
+ return OAuthGrantType2;
12
+ })(OAuthGrantType || {});
13
+ function getOAuthGrantTypeFromFlow(flow) {
14
+ if (flow.clientCredentials) {
15
+ return "client_credentials" /* CLIENT_CREDENTIALS */;
16
+ }
17
+ if (flow.authorizationCode) {
18
+ return "authorization_code" /* AUTHORIZATION_CODE */;
19
+ }
20
+ if (flow.implicit) {
21
+ return "implicit" /* IMPLICIT */;
22
+ }
23
+ if (flow.password) {
24
+ return "password" /* PASSWORD */;
25
+ }
26
+ return void 0;
27
+ }
28
+ export {
29
+ OAuthGrantType,
30
+ getOAuthGrantTypeFromFlow
31
+ };