@paean-ai/adk 0.2.13 → 0.2.15

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/index.js +11 -11
  2. package/dist/cjs/index.js.map +3 -3
  3. package/dist/esm/index.js +11 -11
  4. package/dist/esm/index.js.map +3 -3
  5. package/dist/types/agents/llm_agent.d.ts +4 -0
  6. package/dist/web/index.js +1 -1
  7. package/dist/web/index.js.map +3 -3
  8. package/package.json +3 -3
  9. package/dist/cjs/agents/active_streaming_tool.js +0 -44
  10. package/dist/cjs/agents/base_agent.js +0 -245
  11. package/dist/cjs/agents/base_llm_processor.js +0 -44
  12. package/dist/cjs/agents/callback_context.js +0 -98
  13. package/dist/cjs/agents/content_processor_utils.js +0 -346
  14. package/dist/cjs/agents/functions.js +0 -385
  15. package/dist/cjs/agents/instructions.js +0 -110
  16. package/dist/cjs/agents/invocation_context.js +0 -107
  17. package/dist/cjs/agents/live_request_queue.js +0 -136
  18. package/dist/cjs/agents/llm_agent.js +0 -1212
  19. package/dist/cjs/agents/loop_agent.js +0 -68
  20. package/dist/cjs/agents/parallel_agent.js +0 -78
  21. package/dist/cjs/agents/readonly_context.js +0 -68
  22. package/dist/cjs/agents/run_config.js +0 -70
  23. package/dist/cjs/agents/sequential_agent.js +0 -84
  24. package/dist/cjs/agents/transcription_entry.js +0 -27
  25. package/dist/cjs/artifacts/base_artifact_service.js +0 -27
  26. package/dist/cjs/artifacts/gcs_artifact_service.js +0 -140
  27. package/dist/cjs/artifacts/in_memory_artifact_service.js +0 -119
  28. package/dist/cjs/auth/auth_credential.js +0 -46
  29. package/dist/cjs/auth/auth_handler.js +0 -92
  30. package/dist/cjs/auth/auth_schemes.js +0 -62
  31. package/dist/cjs/auth/auth_tool.js +0 -27
  32. package/dist/cjs/auth/credential_service/base_credential_service.js +0 -27
  33. package/dist/cjs/auth/credential_service/in_memory_credential_service.js +0 -63
  34. package/dist/cjs/auth/exchanger/base_credential_exchanger.js +0 -40
  35. package/dist/cjs/auth/exchanger/credential_exchanger_registry.js +0 -59
  36. package/dist/cjs/code_executors/base_code_executor.js +0 -76
  37. package/dist/cjs/code_executors/built_in_code_executor.js +0 -58
  38. package/dist/cjs/code_executors/code_execution_utils.js +0 -142
  39. package/dist/cjs/code_executors/code_executor_context.js +0 -198
  40. package/dist/cjs/common.js +0 -181
  41. package/dist/cjs/events/event.js +0 -119
  42. package/dist/cjs/events/event_actions.js +0 -83
  43. package/dist/cjs/examples/base_example_provider.js +0 -40
  44. package/dist/cjs/examples/example.js +0 -27
  45. package/dist/cjs/examples/example_util.js +0 -107
  46. package/dist/cjs/index_web.js +0 -33
  47. package/dist/cjs/memory/base_memory_service.js +0 -27
  48. package/dist/cjs/memory/in_memory_memory_service.js +0 -97
  49. package/dist/cjs/memory/memory_entry.js +0 -27
  50. package/dist/cjs/models/base_llm.js +0 -95
  51. package/dist/cjs/models/base_llm_connection.js +0 -27
  52. package/dist/cjs/models/gemini_llm_connection.js +0 -132
  53. package/dist/cjs/models/google_llm.js +0 -559
  54. package/dist/cjs/models/llm_request.js +0 -82
  55. package/dist/cjs/models/llm_response.js +0 -71
  56. package/dist/cjs/models/registry.js +0 -121
  57. package/dist/cjs/plugins/base_plugin.js +0 -236
  58. package/dist/cjs/plugins/logging_plugin.js +0 -222
  59. package/dist/cjs/plugins/plugin_manager.js +0 -239
  60. package/dist/cjs/plugins/security_plugin.js +0 -153
  61. package/dist/cjs/runner/in_memory_runner.js +0 -58
  62. package/dist/cjs/runner/runner.js +0 -277
  63. package/dist/cjs/sessions/base_session_service.js +0 -71
  64. package/dist/cjs/sessions/in_memory_session_service.js +0 -184
  65. package/dist/cjs/sessions/session.js +0 -48
  66. package/dist/cjs/sessions/state.js +0 -101
  67. package/dist/cjs/telemetry/google_cloud.js +0 -85
  68. package/dist/cjs/telemetry/setup.js +0 -97
  69. package/dist/cjs/telemetry/tracing.js +0 -231
  70. package/dist/cjs/tools/agent_tool.js +0 -134
  71. package/dist/cjs/tools/base_tool.js +0 -107
  72. package/dist/cjs/tools/base_toolset.js +0 -76
  73. package/dist/cjs/tools/forwarding_artifact_service.js +0 -71
  74. package/dist/cjs/tools/function_tool.js +0 -101
  75. package/dist/cjs/tools/google_search_tool.js +0 -76
  76. package/dist/cjs/tools/long_running_tool.js +0 -63
  77. package/dist/cjs/tools/mcp/mcp_session_manager.js +0 -65
  78. package/dist/cjs/tools/mcp/mcp_tool.js +0 -65
  79. package/dist/cjs/tools/mcp/mcp_toolset.js +0 -61
  80. package/dist/cjs/tools/tool_confirmation.js +0 -49
  81. package/dist/cjs/tools/tool_context.js +0 -129
  82. package/dist/cjs/utils/client_labels.js +0 -56
  83. package/dist/cjs/utils/deep_clone.js +0 -44
  84. package/dist/cjs/utils/env_aware_utils.js +0 -83
  85. package/dist/cjs/utils/gemini_schema_util.js +0 -88
  86. package/dist/cjs/utils/logger.js +0 -121
  87. package/dist/cjs/utils/model_name.js +0 -76
  88. package/dist/cjs/utils/simple_zod_to_json.js +0 -191
  89. package/dist/cjs/utils/variant_utils.js +0 -55
  90. package/dist/cjs/version.js +0 -39
  91. package/dist/esm/agents/active_streaming_tool.js +0 -14
  92. package/dist/esm/agents/base_agent.js +0 -214
  93. package/dist/esm/agents/base_llm_processor.js +0 -13
  94. package/dist/esm/agents/callback_context.js +0 -68
  95. package/dist/esm/agents/content_processor_utils.js +0 -315
  96. package/dist/esm/agents/functions.js +0 -344
  97. package/dist/esm/agents/instructions.js +0 -80
  98. package/dist/esm/agents/invocation_context.js +0 -76
  99. package/dist/esm/agents/live_request_queue.js +0 -106
  100. package/dist/esm/agents/llm_agent.js +0 -1180
  101. package/dist/esm/agents/loop_agent.js +0 -38
  102. package/dist/esm/agents/parallel_agent.js +0 -48
  103. package/dist/esm/agents/readonly_context.js +0 -38
  104. package/dist/esm/agents/run_config.js +0 -39
  105. package/dist/esm/agents/sequential_agent.js +0 -54
  106. package/dist/esm/agents/transcription_entry.js +0 -5
  107. package/dist/esm/artifacts/base_artifact_service.js +0 -5
  108. package/dist/esm/artifacts/gcs_artifact_service.js +0 -110
  109. package/dist/esm/artifacts/in_memory_artifact_service.js +0 -89
  110. package/dist/esm/auth/auth_credential.js +0 -16
  111. package/dist/esm/auth/auth_handler.js +0 -62
  112. package/dist/esm/auth/auth_schemes.js +0 -31
  113. package/dist/esm/auth/auth_tool.js +0 -5
  114. package/dist/esm/auth/credential_service/base_credential_service.js +0 -5
  115. package/dist/esm/auth/credential_service/in_memory_credential_service.js +0 -33
  116. package/dist/esm/auth/exchanger/base_credential_exchanger.js +0 -10
  117. package/dist/esm/auth/exchanger/credential_exchanger_registry.js +0 -29
  118. package/dist/esm/code_executors/base_code_executor.js +0 -46
  119. package/dist/esm/code_executors/built_in_code_executor.js +0 -28
  120. package/dist/esm/code_executors/code_execution_utils.js +0 -108
  121. package/dist/esm/code_executors/code_executor_context.js +0 -168
  122. package/dist/esm/common.js +0 -98
  123. package/dist/esm/events/event.js +0 -83
  124. package/dist/esm/events/event_actions.js +0 -52
  125. package/dist/esm/examples/base_example_provider.js +0 -10
  126. package/dist/esm/examples/example.js +0 -5
  127. package/dist/esm/examples/example_util.js +0 -76
  128. package/dist/esm/index_web.js +0 -6
  129. package/dist/esm/memory/base_memory_service.js +0 -5
  130. package/dist/esm/memory/in_memory_memory_service.js +0 -67
  131. package/dist/esm/memory/memory_entry.js +0 -5
  132. package/dist/esm/models/base_llm.js +0 -64
  133. package/dist/esm/models/base_llm_connection.js +0 -5
  134. package/dist/esm/models/gemini_llm_connection.js +0 -102
  135. package/dist/esm/models/google_llm.js +0 -533
  136. package/dist/esm/models/llm_request.js +0 -50
  137. package/dist/esm/models/llm_response.js +0 -41
  138. package/dist/esm/models/registry.js +0 -91
  139. package/dist/esm/plugins/base_plugin.js +0 -206
  140. package/dist/esm/plugins/logging_plugin.js +0 -192
  141. package/dist/esm/plugins/plugin_manager.js +0 -209
  142. package/dist/esm/plugins/security_plugin.js +0 -119
  143. package/dist/esm/runner/in_memory_runner.js +0 -28
  144. package/dist/esm/runner/runner.js +0 -247
  145. package/dist/esm/sessions/base_session_service.js +0 -41
  146. package/dist/esm/sessions/in_memory_session_service.js +0 -154
  147. package/dist/esm/sessions/session.js +0 -18
  148. package/dist/esm/sessions/state.js +0 -71
  149. package/dist/esm/telemetry/google_cloud.js +0 -54
  150. package/dist/esm/telemetry/setup.js +0 -67
  151. package/dist/esm/telemetry/tracing.js +0 -195
  152. package/dist/esm/tools/agent_tool.js +0 -104
  153. package/dist/esm/tools/base_tool.js +0 -77
  154. package/dist/esm/tools/base_toolset.js +0 -46
  155. package/dist/esm/tools/forwarding_artifact_service.js +0 -41
  156. package/dist/esm/tools/function_tool.js +0 -71
  157. package/dist/esm/tools/google_search_tool.js +0 -46
  158. package/dist/esm/tools/long_running_tool.js +0 -33
  159. package/dist/esm/tools/mcp/mcp_session_manager.js +0 -35
  160. package/dist/esm/tools/mcp/mcp_tool.js +0 -35
  161. package/dist/esm/tools/mcp/mcp_toolset.js +0 -31
  162. package/dist/esm/tools/tool_confirmation.js +0 -19
  163. package/dist/esm/tools/tool_context.js +0 -99
  164. package/dist/esm/utils/client_labels.js +0 -26
  165. package/dist/esm/utils/deep_clone.js +0 -14
  166. package/dist/esm/utils/env_aware_utils.js +0 -49
  167. package/dist/esm/utils/gemini_schema_util.js +0 -58
  168. package/dist/esm/utils/logger.js +0 -89
  169. package/dist/esm/utils/model_name.js +0 -41
  170. package/dist/esm/utils/simple_zod_to_json.js +0 -160
  171. package/dist/esm/utils/variant_utils.js +0 -24
  172. package/dist/esm/version.js +0 -9
  173. package/dist/web/agents/active_streaming_tool.js +0 -14
  174. package/dist/web/agents/base_agent.js +0 -265
  175. package/dist/web/agents/base_llm_processor.js +0 -13
  176. package/dist/web/agents/callback_context.js +0 -68
  177. package/dist/web/agents/content_processor_utils.js +0 -315
  178. package/dist/web/agents/functions.js +0 -344
  179. package/dist/web/agents/instructions.js +0 -80
  180. package/dist/web/agents/invocation_context.js +0 -76
  181. package/dist/web/agents/live_request_queue.js +0 -124
  182. package/dist/web/agents/llm_agent.js +0 -1310
  183. package/dist/web/agents/loop_agent.js +0 -71
  184. package/dist/web/agents/parallel_agent.js +0 -83
  185. package/dist/web/agents/readonly_context.js +0 -38
  186. package/dist/web/agents/run_config.js +0 -54
  187. package/dist/web/agents/sequential_agent.js +0 -99
  188. package/dist/web/agents/transcription_entry.js +0 -5
  189. package/dist/web/artifacts/base_artifact_service.js +0 -5
  190. package/dist/web/artifacts/gcs_artifact_service.js +0 -126
  191. package/dist/web/artifacts/in_memory_artifact_service.js +0 -89
  192. package/dist/web/auth/auth_credential.js +0 -16
  193. package/dist/web/auth/auth_handler.js +0 -62
  194. package/dist/web/auth/auth_schemes.js +0 -31
  195. package/dist/web/auth/auth_tool.js +0 -5
  196. package/dist/web/auth/credential_service/base_credential_service.js +0 -5
  197. package/dist/web/auth/credential_service/in_memory_credential_service.js +0 -33
  198. package/dist/web/auth/exchanger/base_credential_exchanger.js +0 -10
  199. package/dist/web/auth/exchanger/credential_exchanger_registry.js +0 -29
  200. package/dist/web/code_executors/base_code_executor.js +0 -46
  201. package/dist/web/code_executors/built_in_code_executor.js +0 -28
  202. package/dist/web/code_executors/code_execution_utils.js +0 -105
  203. package/dist/web/code_executors/code_executor_context.js +0 -168
  204. package/dist/web/common.js +0 -98
  205. package/dist/web/events/event.js +0 -101
  206. package/dist/web/events/event_actions.js +0 -67
  207. package/dist/web/examples/base_example_provider.js +0 -10
  208. package/dist/web/examples/example.js +0 -5
  209. package/dist/web/examples/example_util.js +0 -75
  210. package/dist/web/index_web.js +0 -6
  211. package/dist/web/memory/base_memory_service.js +0 -5
  212. package/dist/web/memory/in_memory_memory_service.js +0 -67
  213. package/dist/web/memory/memory_entry.js +0 -5
  214. package/dist/web/models/base_llm.js +0 -64
  215. package/dist/web/models/base_llm_connection.js +0 -5
  216. package/dist/web/models/gemini_llm_connection.js +0 -120
  217. package/dist/web/models/google_llm.js +0 -574
  218. package/dist/web/models/llm_request.js +0 -50
  219. package/dist/web/models/llm_response.js +0 -41
  220. package/dist/web/models/registry.js +0 -91
  221. package/dist/web/plugins/base_plugin.js +0 -206
  222. package/dist/web/plugins/logging_plugin.js +0 -192
  223. package/dist/web/plugins/plugin_manager.js +0 -209
  224. package/dist/web/plugins/security_plugin.js +0 -119
  225. package/dist/web/runner/in_memory_runner.js +0 -28
  226. package/dist/web/runner/runner.js +0 -278
  227. package/dist/web/sessions/base_session_service.js +0 -41
  228. package/dist/web/sessions/in_memory_session_service.js +0 -154
  229. package/dist/web/sessions/session.js +0 -18
  230. package/dist/web/sessions/state.js +0 -87
  231. package/dist/web/telemetry/google_cloud.js +0 -54
  232. package/dist/web/telemetry/setup.js +0 -67
  233. package/dist/web/telemetry/tracing.js +0 -210
  234. package/dist/web/tools/agent_tool.js +0 -118
  235. package/dist/web/tools/base_tool.js +0 -77
  236. package/dist/web/tools/base_toolset.js +0 -46
  237. package/dist/web/tools/forwarding_artifact_service.js +0 -41
  238. package/dist/web/tools/function_tool.js +0 -71
  239. package/dist/web/tools/google_search_tool.js +0 -46
  240. package/dist/web/tools/long_running_tool.js +0 -50
  241. package/dist/web/tools/mcp/mcp_session_manager.js +0 -35
  242. package/dist/web/tools/mcp/mcp_tool.js +0 -35
  243. package/dist/web/tools/mcp/mcp_toolset.js +0 -31
  244. package/dist/web/tools/tool_confirmation.js +0 -19
  245. package/dist/web/tools/tool_context.js +0 -99
  246. package/dist/web/utils/client_labels.js +0 -26
  247. package/dist/web/utils/deep_clone.js +0 -14
  248. package/dist/web/utils/env_aware_utils.js +0 -49
  249. package/dist/web/utils/gemini_schema_util.js +0 -58
  250. package/dist/web/utils/logger.js +0 -89
  251. package/dist/web/utils/model_name.js +0 -41
  252. package/dist/web/utils/simple_zod_to_json.js +0 -174
  253. package/dist/web/utils/variant_utils.js +0 -24
  254. package/dist/web/version.js +0 -9
@@ -1,38 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2025 Google LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
- import { BaseAgent } from "./base_agent.js";
7
- class LoopAgent extends BaseAgent {
8
- constructor(config) {
9
- var _a;
10
- super(config);
11
- this.maxIterations = (_a = config.maxIterations) != null ? _a : Number.MAX_SAFE_INTEGER;
12
- }
13
- async *runAsyncImpl(context) {
14
- let iteration = 0;
15
- while (iteration < this.maxIterations) {
16
- for (const subAgent of this.subAgents) {
17
- let shouldExit = false;
18
- for await (const event of subAgent.runAsync(context)) {
19
- yield event;
20
- if (event.actions.escalate) {
21
- shouldExit = true;
22
- }
23
- }
24
- if (shouldExit) {
25
- return;
26
- }
27
- }
28
- iteration++;
29
- }
30
- return;
31
- }
32
- async *runLiveImpl(context) {
33
- throw new Error("This is not supported yet for LoopAgent.");
34
- }
35
- }
36
- export {
37
- LoopAgent
38
- };
@@ -1,48 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2025 Google LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
- import { BaseAgent } from "./base_agent.js";
7
- import { InvocationContext } from "./invocation_context.js";
8
- class ParallelAgent extends BaseAgent {
9
- async *runAsyncImpl(context) {
10
- const agentRuns = this.subAgents.map(
11
- (subAgent) => subAgent.runAsync(
12
- createBranchCtxForSubAgent(this, subAgent, context)
13
- )
14
- );
15
- for await (const event of mergeAgentRuns(agentRuns)) {
16
- yield event;
17
- }
18
- }
19
- async *runLiveImpl(context) {
20
- throw new Error("This is not supported yet for ParallelAgent.");
21
- }
22
- }
23
- function createBranchCtxForSubAgent(agent, subAgent, originalContext) {
24
- const invocationContext = new InvocationContext(originalContext);
25
- const branchSuffix = `${agent.name}.${subAgent.name}`;
26
- invocationContext.branch = invocationContext.branch ? `${invocationContext.branch}.${branchSuffix}` : branchSuffix;
27
- return invocationContext;
28
- }
29
- async function* mergeAgentRuns(agentRuns) {
30
- const pendingPromises = /* @__PURE__ */ new Map();
31
- for (const [index, generator] of agentRuns.entries()) {
32
- const promise = generator.next().then((result) => ({ result, index }));
33
- pendingPromises.set(index, promise);
34
- }
35
- while (pendingPromises.size > 0) {
36
- const { result, index } = await Promise.race(pendingPromises.values());
37
- if (result.done) {
38
- pendingPromises.delete(index);
39
- continue;
40
- }
41
- yield result.value;
42
- const nextPromise = agentRuns[index].next().then((result2) => ({ result: result2, index }));
43
- pendingPromises.set(index, nextPromise);
44
- }
45
- }
46
- export {
47
- ParallelAgent
48
- };
@@ -1,38 +0,0 @@
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
- };
@@ -1,39 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2025 Google LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
- import { logger } from "../utils/logger.js";
7
- var StreamingMode = /* @__PURE__ */ ((StreamingMode2) => {
8
- StreamingMode2["NONE"] = "none";
9
- StreamingMode2["SSE"] = "sse";
10
- StreamingMode2["BIDI"] = "bidi";
11
- return StreamingMode2;
12
- })(StreamingMode || {});
13
- function createRunConfig(params = {}) {
14
- return {
15
- saveInputBlobsAsArtifacts: false,
16
- supportCfc: false,
17
- enableAffectiveDialog: false,
18
- streamingMode: "none" /* NONE */,
19
- maxLlmCalls: validateMaxLlmCalls(params.maxLlmCalls || 500),
20
- ...params
21
- };
22
- }
23
- function validateMaxLlmCalls(value) {
24
- if (value > Number.MAX_SAFE_INTEGER) {
25
- throw new Error(
26
- `maxLlmCalls should be less than ${Number.MAX_SAFE_INTEGER}.`
27
- );
28
- }
29
- if (value <= 0) {
30
- logger.warn(
31
- "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."
32
- );
33
- }
34
- return value;
35
- }
36
- export {
37
- StreamingMode,
38
- createRunConfig
39
- };
@@ -1,54 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2025 Google LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
- import { FunctionTool } from "../tools/function_tool.js";
7
- import { BaseAgent } from "./base_agent.js";
8
- import { LlmAgent } from "./llm_agent.js";
9
- import { ReadonlyContext } from "./readonly_context.js";
10
- const TASK_COMPLETED_TOOL_NAME = "task_completed";
11
- class SequentialAgent extends BaseAgent {
12
- async *runAsyncImpl(context) {
13
- for (const subAgent of this.subAgents) {
14
- for await (const event of subAgent.runAsync(context)) {
15
- yield event;
16
- }
17
- }
18
- }
19
- /**
20
- * Implementation for live SequentialAgent.
21
- *
22
- * Compared to the non-live case, live agents process a continuous stream of
23
- * audio or video, so there is no way to tell if it's finished and should pass
24
- * to the next agent or not. So we introduce a task_completed() function so
25
- * the model can call this function to signal that it's finished the task and
26
- * we can move on to the next agent.
27
- *
28
- * @param context: The invocation context of the agent.
29
- */
30
- async *runLiveImpl(context) {
31
- for (const subAgent of this.subAgents) {
32
- if (subAgent instanceof LlmAgent) {
33
- const agentTools = await subAgent.canonicalTools(new ReadonlyContext(context));
34
- const taskCompletedToolAlreadyAdded = agentTools.some((tool) => tool.name === TASK_COMPLETED_TOOL_NAME);
35
- if (!taskCompletedToolAlreadyAdded) {
36
- subAgent.tools.push(new FunctionTool({
37
- name: TASK_COMPLETED_TOOL_NAME,
38
- description: `Signals that the model has successfully completed the user's question or task.`,
39
- execute: () => "Task completion signaled."
40
- }));
41
- subAgent.instruction += `If you finished the user's request according to its description, call the ${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.`;
42
- }
43
- }
44
- }
45
- for (const subAgent of this.subAgents) {
46
- for await (const event of subAgent.runLive(context)) {
47
- yield event;
48
- }
49
- }
50
- }
51
- }
52
- export {
53
- SequentialAgent
54
- };
@@ -1,5 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2025 Google LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
@@ -1,5 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2025 Google LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
@@ -1,110 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2025 Google LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
- import { Storage } from "@google-cloud/storage";
7
- import { createPartFromBase64, createPartFromText } from "@google/genai";
8
- class GcsArtifactService {
9
- constructor(bucket) {
10
- this.bucket = new Storage().bucket(bucket);
11
- }
12
- async saveArtifact(request) {
13
- const versions = await this.listVersions(request);
14
- const version = versions.length > 0 ? Math.max(...versions) + 1 : 0;
15
- const file = this.bucket.file(getFileName({
16
- ...request,
17
- version
18
- }));
19
- if (request.artifact.inlineData) {
20
- await file.save(JSON.stringify(request.artifact.inlineData.data), {
21
- contentType: request.artifact.inlineData.mimeType
22
- });
23
- return version;
24
- }
25
- if (request.artifact.text) {
26
- await file.save(request.artifact.text, {
27
- contentType: "text/plain"
28
- });
29
- return version;
30
- }
31
- throw new Error("Artifact must have either inlineData or text.");
32
- }
33
- async loadArtifact(request) {
34
- let version = request.version;
35
- if (version === void 0) {
36
- const versions = await this.listVersions(request);
37
- if (versions.length === 0) {
38
- return void 0;
39
- }
40
- version = Math.max(...versions);
41
- }
42
- const file = this.bucket.file(getFileName({
43
- ...request,
44
- version
45
- }));
46
- const [[metadata], [rawDataBuffer]] = await Promise.all([file.getMetadata(), file.download()]);
47
- if (metadata.contentType === "text/plain") {
48
- return createPartFromText(rawDataBuffer.toString("utf-8"));
49
- }
50
- return createPartFromBase64(
51
- rawDataBuffer.toString("base64"),
52
- metadata.contentType
53
- );
54
- }
55
- async listArtifactKeys(request) {
56
- const fileNames = [];
57
- const sessionPrefix = `${request.appName}/${request.userId}/${request.sessionId}/`;
58
- const usernamePrefix = `${request.appName}/${request.userId}/user/`;
59
- const [
60
- [sessionFiles],
61
- [userSessionFiles]
62
- ] = await Promise.all([
63
- this.bucket.getFiles({ prefix: sessionPrefix }),
64
- this.bucket.getFiles({ prefix: usernamePrefix })
65
- ]);
66
- for (const file of sessionFiles) {
67
- fileNames.push(file.name.split("/").pop());
68
- }
69
- for (const file of userSessionFiles) {
70
- fileNames.push(file.name.split("/").pop());
71
- }
72
- return fileNames.sort((a, b) => a.localeCompare(b));
73
- }
74
- async deleteArtifact(request) {
75
- const versions = await this.listVersions(request);
76
- await Promise.all(versions.map((version) => {
77
- const file = this.bucket.file(getFileName({
78
- ...request,
79
- version
80
- }));
81
- return file.delete();
82
- }));
83
- return;
84
- }
85
- async listVersions(request) {
86
- const prefix = getFileName(request);
87
- const [files] = await this.bucket.getFiles({ prefix });
88
- const versions = [];
89
- for (const file of files) {
90
- const version = file.name.split("/").pop();
91
- versions.push(parseInt(version, 10));
92
- }
93
- return versions;
94
- }
95
- }
96
- function getFileName({
97
- appName,
98
- userId,
99
- sessionId,
100
- filename,
101
- version
102
- }) {
103
- if (filename.startsWith("user:")) {
104
- return `${appName}/${userId}/user/${filename}/${version}`;
105
- }
106
- return `${appName}/${userId}/${sessionId}/${filename}/${version}`;
107
- }
108
- export {
109
- GcsArtifactService
110
- };
@@ -1,89 +0,0 @@
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 = `${appName}/${userId}/${sessionId}/`;
44
- const usernamespacePrefix = `${appName}/${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 `${appName}/${userId}/user/${filename}`;
81
- }
82
- return `${appName}/${userId}/${sessionId}/${filename}`;
83
- }
84
- function fileHasUserNamespace(filename) {
85
- return filename.startsWith("user:");
86
- }
87
- export {
88
- InMemoryArtifactService
89
- };
@@ -1,16 +0,0 @@
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
- };
@@ -1,62 +0,0 @@
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 ${authSchemeType} requires authCredential.`);
25
- }
26
- if (!this.authConfig.rawAuthCredential.oauth2) {
27
- throw new Error(
28
- `Auth Scheme ${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 ${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
- };
@@ -1,31 +0,0 @@
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
- };
@@ -1,5 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2025 Google LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
@@ -1,5 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2025 Google LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
@@ -1,33 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2025 Google LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
- class InMemoryCredentialService {
7
- constructor() {
8
- this.credentials = {};
9
- }
10
- loadCredential(authConfig, toolContext) {
11
- const credentialBucket = this.getBucketForCurrentContext(toolContext);
12
- return Promise.resolve(credentialBucket[authConfig.credentialKey]);
13
- }
14
- async saveCredential(authConfig, toolContext) {
15
- const credentialBucket = this.getBucketForCurrentContext(toolContext);
16
- if (authConfig.exchangedAuthCredential) {
17
- credentialBucket[authConfig.credentialKey] = authConfig.exchangedAuthCredential;
18
- }
19
- }
20
- getBucketForCurrentContext(toolContext) {
21
- const { appName, userId } = toolContext.invocationContext.session;
22
- if (!this.credentials[appName]) {
23
- this.credentials[appName] = {};
24
- }
25
- if (!this.credentials[appName][userId]) {
26
- this.credentials[appName][userId] = {};
27
- }
28
- return this.credentials[appName][userId];
29
- }
30
- }
31
- export {
32
- InMemoryCredentialService
33
- };
@@ -1,10 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2025 Google LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
- class CredentialExchangeError extends Error {
7
- }
8
- export {
9
- CredentialExchangeError
10
- };
@@ -1,29 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2025 Google LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
- class CredentialExchangerRegistry {
7
- constructor() {
8
- this.exchangers = {};
9
- }
10
- /**
11
- * Register an exchanger instance for a credential type.
12
- * @param credentialType - The credential type to register for.
13
- * @param exchangerInstance - The exchanger instance to register.
14
- */
15
- register(credentialType, exchangerInstance) {
16
- this.exchangers[credentialType] = exchangerInstance;
17
- }
18
- /**
19
- * Get the exchanger instance for a credential type.
20
- * @param credentialType - The credential type to get exchanger for.
21
- * @returns The exchanger instance if registered, undefined otherwise.
22
- */
23
- getExchanger(credentialType) {
24
- return this.exchangers[credentialType];
25
- }
26
- }
27
- export {
28
- CredentialExchangerRegistry
29
- };
@@ -1,46 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2025 Google LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
- class BaseCodeExecutor {
7
- constructor() {
8
- /**
9
- * If true, extract and process data files from the model request
10
- * and attach them to the code executor.
11
- *
12
- * Supported data file MimeTypes are [text/csv].
13
- * Default to false.
14
- */
15
- this.optimizeDataFile = false;
16
- /**
17
- * Whether the code executor is stateful. Default to false.
18
- */
19
- this.stateful = false;
20
- /**
21
- * The number of attempts to retry on consecutive code execution errors.
22
- * Default to 2.
23
- */
24
- this.errorRetryAttempts = 2;
25
- /**
26
- * The list of the enclosing delimiters to identify the code blocks.
27
- * For example, the delimiter('```python\\n', '\\n```') can be used to
28
- * identify code blocks with the following format::
29
- *
30
- * ```python
31
- * print("hello")
32
- * ```
33
- */
34
- this.codeBlockDelimiters = [
35
- ["```tool_code\n", "\n```"],
36
- ["```python\n", "\n```"]
37
- ];
38
- /**
39
- * The delimiters to format the code execution result.
40
- */
41
- this.executionResultDelimiters = ["```tool_output\n", "\n```"];
42
- }
43
- }
44
- export {
45
- BaseCodeExecutor
46
- };