@google/adk 0.2.4 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (191) hide show
  1. package/dist/cjs/agents/base_agent.js +52 -24
  2. package/dist/cjs/agents/callback_context.js +4 -1
  3. package/dist/cjs/agents/content_processor_utils.js +15 -7
  4. package/dist/cjs/agents/functions.js +79 -29
  5. package/dist/cjs/agents/invocation_context.js +3 -1
  6. package/dist/cjs/agents/llm_agent.js +188 -108
  7. package/dist/cjs/agents/loop_agent.js +18 -6
  8. package/dist/cjs/agents/parallel_agent.js +20 -7
  9. package/dist/cjs/agents/readonly_context.js +4 -1
  10. package/dist/cjs/agents/sequential_agent.js +34 -12
  11. package/dist/cjs/artifacts/gcs_artifact_service.js +28 -20
  12. package/dist/cjs/artifacts/in_memory_artifact_service.js +18 -4
  13. package/dist/cjs/auth/auth_handler.js +3 -1
  14. package/dist/cjs/code_executors/base_code_executor.js +14 -2
  15. package/dist/cjs/code_executors/built_in_code_executor.js +21 -5
  16. package/dist/cjs/code_executors/code_executor_context.js +5 -5
  17. package/dist/cjs/common.js +45 -0
  18. package/dist/cjs/events/event.js +1 -3
  19. package/dist/cjs/examples/base_example_provider.js +18 -2
  20. package/dist/cjs/examples/example_util.js +1 -1
  21. package/dist/cjs/index.js +19 -19
  22. package/dist/cjs/index.js.map +4 -4
  23. package/dist/cjs/memory/in_memory_memory_service.js +3 -1
  24. package/dist/cjs/models/base_llm.js +8 -4
  25. package/dist/cjs/models/gemini_llm_connection.js +1 -0
  26. package/dist/cjs/models/google_llm.js +3 -3
  27. package/dist/cjs/plugins/base_plugin.js +71 -49
  28. package/dist/cjs/plugins/logging_plugin.js +50 -13
  29. package/dist/cjs/plugins/plugin_manager.js +56 -24
  30. package/dist/cjs/plugins/security_plugin.js +5 -2
  31. package/dist/cjs/runner/runner.js +126 -101
  32. package/dist/cjs/sessions/in_memory_session_service.js +38 -14
  33. package/dist/cjs/telemetry/google_cloud.js +7 -9
  34. package/dist/cjs/telemetry/setup.js +15 -7
  35. package/dist/cjs/telemetry/tracing.js +37 -15
  36. package/dist/cjs/tools/agent_tool.js +26 -13
  37. package/dist/cjs/tools/base_tool.js +19 -7
  38. package/dist/cjs/tools/forwarding_artifact_service.js +1 -1
  39. package/dist/cjs/tools/function_tool.js +15 -7
  40. package/dist/cjs/tools/google_search_tool.js +8 -4
  41. package/dist/cjs/tools/mcp/mcp_session_manager.js +16 -10
  42. package/dist/cjs/tools/mcp/mcp_tool.js +1 -3
  43. package/dist/cjs/tools/mcp/mcp_toolset.js +1 -1
  44. package/dist/cjs/tools/tool_context.js +4 -9
  45. package/dist/cjs/utils/env_aware_utils.js +1 -1
  46. package/dist/cjs/utils/gemini_schema_util.js +10 -4
  47. package/dist/cjs/utils/logger.js +47 -3
  48. package/dist/cjs/utils/simple_zod_to_json.js +100 -141
  49. package/dist/cjs/utils/variant_utils.js +1 -1
  50. package/dist/cjs/version.js +1 -1
  51. package/dist/esm/agents/base_agent.js +57 -25
  52. package/dist/esm/agents/callback_context.js +4 -1
  53. package/dist/esm/agents/content_processor_utils.js +25 -9
  54. package/dist/esm/agents/functions.js +83 -29
  55. package/dist/esm/agents/invocation_context.js +3 -1
  56. package/dist/esm/agents/llm_agent.js +228 -116
  57. package/dist/esm/agents/loop_agent.js +16 -5
  58. package/dist/esm/agents/parallel_agent.js +18 -6
  59. package/dist/esm/agents/readonly_context.js +4 -1
  60. package/dist/esm/agents/sequential_agent.js +33 -12
  61. package/dist/esm/artifacts/gcs_artifact_service.js +28 -20
  62. package/dist/esm/artifacts/in_memory_artifact_service.js +18 -4
  63. package/dist/esm/auth/auth_handler.js +3 -1
  64. package/dist/esm/code_executors/base_code_executor.js +12 -1
  65. package/dist/esm/code_executors/built_in_code_executor.js +19 -4
  66. package/dist/esm/code_executors/code_executor_context.js +5 -5
  67. package/dist/esm/common.js +56 -11
  68. package/dist/esm/events/event.js +1 -3
  69. package/dist/esm/examples/base_example_provider.js +16 -1
  70. package/dist/esm/examples/example_util.js +4 -2
  71. package/dist/esm/index.js +19 -19
  72. package/dist/esm/index.js.map +4 -4
  73. package/dist/esm/memory/in_memory_memory_service.js +3 -1
  74. package/dist/esm/models/base_llm.js +8 -4
  75. package/dist/esm/models/gemini_llm_connection.js +1 -0
  76. package/dist/esm/models/google_llm.js +8 -4
  77. package/dist/esm/plugins/base_plugin.js +71 -49
  78. package/dist/esm/plugins/logging_plugin.js +55 -14
  79. package/dist/esm/plugins/plugin_manager.js +56 -24
  80. package/dist/esm/plugins/security_plugin.js +5 -2
  81. package/dist/esm/runner/runner.js +139 -105
  82. package/dist/esm/sessions/in_memory_session_service.js +41 -15
  83. package/dist/esm/telemetry/google_cloud.js +7 -9
  84. package/dist/esm/telemetry/setup.js +23 -9
  85. package/dist/esm/telemetry/tracing.js +37 -15
  86. package/dist/esm/tools/agent_tool.js +25 -13
  87. package/dist/esm/tools/base_tool.js +17 -6
  88. package/dist/esm/tools/forwarding_artifact_service.js +1 -1
  89. package/dist/esm/tools/function_tool.js +13 -8
  90. package/dist/esm/tools/google_search_tool.js +6 -3
  91. package/dist/esm/tools/long_running_tool.js +3 -1
  92. package/dist/esm/tools/mcp/mcp_session_manager.js +22 -12
  93. package/dist/esm/tools/mcp/mcp_tool.js +1 -3
  94. package/dist/esm/tools/mcp/mcp_toolset.js +1 -1
  95. package/dist/esm/tools/tool_context.js +4 -9
  96. package/dist/esm/utils/env_aware_utils.js +1 -1
  97. package/dist/esm/utils/gemini_schema_util.js +10 -4
  98. package/dist/esm/utils/logger.js +43 -2
  99. package/dist/esm/utils/simple_zod_to_json.js +102 -141
  100. package/dist/esm/utils/variant_utils.js +1 -1
  101. package/dist/esm/version.js +1 -1
  102. package/dist/types/agents/base_agent.d.ts +16 -4
  103. package/dist/types/agents/callback_context.d.ts +1 -1
  104. package/dist/types/agents/invocation_context.d.ts +4 -2
  105. package/dist/types/agents/llm_agent.d.ts +43 -31
  106. package/dist/types/agents/loop_agent.d.ts +17 -1
  107. package/dist/types/agents/parallel_agent.d.ts +17 -1
  108. package/dist/types/agents/sequential_agent.d.ts +17 -1
  109. package/dist/types/artifacts/in_memory_artifact_service.d.ts +3 -3
  110. package/dist/types/auth/auth_schemes.d.ts +5 -2
  111. package/dist/types/code_executors/base_code_executor.d.ts +14 -0
  112. package/dist/types/code_executors/built_in_code_executor.d.ts +20 -1
  113. package/dist/types/code_executors/code_executor_context.d.ts +2 -4
  114. package/dist/types/common.d.ts +40 -15
  115. package/dist/types/examples/base_example_provider.d.ts +16 -0
  116. package/dist/types/index.d.ts +3 -3
  117. package/dist/types/models/base_llm_connection.d.ts +1 -1
  118. package/dist/types/models/llm_response.d.ts +1 -1
  119. package/dist/types/plugins/base_plugin.d.ts +50 -40
  120. package/dist/types/plugins/logging_plugin.d.ts +12 -12
  121. package/dist/types/plugins/plugin_manager.d.ts +12 -12
  122. package/dist/types/plugins/security_plugin.d.ts +1 -1
  123. package/dist/types/runner/runner.d.ts +18 -10
  124. package/dist/types/sessions/in_memory_session_service.d.ts +5 -5
  125. package/dist/types/telemetry/setup.d.ts +1 -1
  126. package/dist/types/telemetry/tracing.d.ts +7 -6
  127. package/dist/types/tools/agent_tool.d.ts +15 -1
  128. package/dist/types/tools/base_tool.d.ts +15 -1
  129. package/dist/types/tools/base_toolset.d.ts +2 -1
  130. package/dist/types/tools/forwarding_artifact_service.d.ts +2 -2
  131. package/dist/types/tools/function_tool.d.ts +18 -4
  132. package/dist/types/tools/google_search_tool.d.ts +5 -6
  133. package/dist/types/tools/mcp/mcp_session_manager.d.ts +10 -3
  134. package/dist/types/tools/mcp/mcp_toolset.d.ts +1 -2
  135. package/dist/types/tools/tool_context.d.ts +1 -1
  136. package/dist/types/utils/gemini_schema_util.d.ts +4 -12
  137. package/dist/types/utils/logger.d.ts +11 -10
  138. package/dist/types/utils/simple_zod_to_json.d.ts +5 -4
  139. package/dist/types/version.d.ts +1 -1
  140. package/dist/web/agents/base_agent.js +103 -36
  141. package/dist/web/agents/callback_context.js +4 -1
  142. package/dist/web/agents/content_processor_utils.js +25 -9
  143. package/dist/web/agents/functions.js +83 -29
  144. package/dist/web/agents/invocation_context.js +3 -1
  145. package/dist/web/agents/llm_agent.js +282 -137
  146. package/dist/web/agents/loop_agent.js +16 -5
  147. package/dist/web/agents/parallel_agent.js +18 -6
  148. package/dist/web/agents/readonly_context.js +4 -1
  149. package/dist/web/agents/sequential_agent.js +33 -12
  150. package/dist/web/artifacts/gcs_artifact_service.js +25 -17
  151. package/dist/web/artifacts/in_memory_artifact_service.js +18 -4
  152. package/dist/web/auth/auth_handler.js +3 -1
  153. package/dist/web/code_executors/base_code_executor.js +12 -1
  154. package/dist/web/code_executors/built_in_code_executor.js +19 -4
  155. package/dist/web/code_executors/code_executor_context.js +5 -5
  156. package/dist/web/common.js +56 -11
  157. package/dist/web/events/event.js +1 -3
  158. package/dist/web/examples/base_example_provider.js +16 -1
  159. package/dist/web/examples/example_util.js +4 -2
  160. package/dist/web/index.js +1 -1
  161. package/dist/web/index.js.map +4 -4
  162. package/dist/web/memory/in_memory_memory_service.js +3 -1
  163. package/dist/web/models/base_llm.js +8 -4
  164. package/dist/web/models/gemini_llm_connection.js +1 -0
  165. package/dist/web/models/google_llm.js +8 -4
  166. package/dist/web/plugins/base_plugin.js +71 -49
  167. package/dist/web/plugins/logging_plugin.js +55 -14
  168. package/dist/web/plugins/plugin_manager.js +56 -24
  169. package/dist/web/plugins/security_plugin.js +5 -2
  170. package/dist/web/runner/runner.js +186 -119
  171. package/dist/web/sessions/in_memory_session_service.js +41 -15
  172. package/dist/web/telemetry/google_cloud.js +7 -9
  173. package/dist/web/telemetry/setup.js +23 -9
  174. package/dist/web/telemetry/tracing.js +37 -15
  175. package/dist/web/tools/agent_tool.js +25 -13
  176. package/dist/web/tools/base_tool.js +17 -6
  177. package/dist/web/tools/forwarding_artifact_service.js +1 -1
  178. package/dist/web/tools/function_tool.js +13 -8
  179. package/dist/web/tools/google_search_tool.js +6 -3
  180. package/dist/web/tools/long_running_tool.js +3 -1
  181. package/dist/web/tools/mcp/mcp_session_manager.js +22 -12
  182. package/dist/web/tools/mcp/mcp_tool.js +1 -3
  183. package/dist/web/tools/mcp/mcp_toolset.js +1 -1
  184. package/dist/web/tools/tool_context.js +4 -9
  185. package/dist/web/utils/env_aware_utils.js +1 -1
  186. package/dist/web/utils/gemini_schema_util.js +10 -4
  187. package/dist/web/utils/logger.js +43 -2
  188. package/dist/web/utils/simple_zod_to_json.js +102 -155
  189. package/dist/web/utils/variant_utils.js +1 -1
  190. package/dist/web/version.js +1 -1
  191. package/package.json +5 -3
@@ -24,7 +24,8 @@ var __copyProps = (to, from, except, desc) => {
24
24
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
25
25
  var loop_agent_exports = {};
26
26
  __export(loop_agent_exports, {
27
- LoopAgent: () => LoopAgent
27
+ LoopAgent: () => LoopAgent,
28
+ isLoopAgent: () => isLoopAgent
28
29
  });
29
30
  module.exports = __toCommonJS(loop_agent_exports);
30
31
  var import_base_agent = require("./base_agent.js");
@@ -33,11 +34,20 @@ var import_base_agent = require("./base_agent.js");
33
34
  * Copyright 2025 Google LLC
34
35
  * SPDX-License-Identifier: Apache-2.0
35
36
  */
36
- class LoopAgent extends import_base_agent.BaseAgent {
37
+ var _a, _b;
38
+ const LOOP_AGENT_SIGNATURE_SYMBOL = Symbol.for("google.adk.loopAgent");
39
+ function isLoopAgent(obj) {
40
+ return typeof obj === "object" && obj !== null && LOOP_AGENT_SIGNATURE_SYMBOL in obj && obj[LOOP_AGENT_SIGNATURE_SYMBOL] === true;
41
+ }
42
+ class LoopAgent extends (_b = import_base_agent.BaseAgent, _a = LOOP_AGENT_SIGNATURE_SYMBOL, _b) {
37
43
  constructor(config) {
38
- var _a;
44
+ var _a2;
39
45
  super(config);
40
- this.maxIterations = (_a = config.maxIterations) != null ? _a : Number.MAX_SAFE_INTEGER;
46
+ /**
47
+ * A unique symbol to identify ADK loop agent class.
48
+ */
49
+ this[_a] = true;
50
+ this.maxIterations = (_a2 = config.maxIterations) != null ? _a2 : Number.MAX_SAFE_INTEGER;
41
51
  }
42
52
  async *runAsyncImpl(context) {
43
53
  let iteration = 0;
@@ -58,11 +68,13 @@ class LoopAgent extends import_base_agent.BaseAgent {
58
68
  }
59
69
  return;
60
70
  }
61
- async *runLiveImpl(context) {
71
+ // eslint-disable-next-line require-yield
72
+ async *runLiveImpl(_context) {
62
73
  throw new Error("This is not supported yet for LoopAgent.");
63
74
  }
64
75
  }
65
76
  // Annotate the CommonJS export names for ESM import in node:
66
77
  0 && (module.exports = {
67
- LoopAgent
78
+ LoopAgent,
79
+ isLoopAgent
68
80
  });
@@ -24,7 +24,8 @@ var __copyProps = (to, from, except, desc) => {
24
24
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
25
25
  var parallel_agent_exports = {};
26
26
  __export(parallel_agent_exports, {
27
- ParallelAgent: () => ParallelAgent
27
+ ParallelAgent: () => ParallelAgent,
28
+ isParallelAgent: () => isParallelAgent
28
29
  });
29
30
  module.exports = __toCommonJS(parallel_agent_exports);
30
31
  var import_base_agent = require("./base_agent.js");
@@ -34,18 +35,29 @@ var import_invocation_context = require("./invocation_context.js");
34
35
  * Copyright 2025 Google LLC
35
36
  * SPDX-License-Identifier: Apache-2.0
36
37
  */
37
- class ParallelAgent extends import_base_agent.BaseAgent {
38
+ var _a, _b;
39
+ const PARALLEL_AGENT_SIGNATURE_SYMBOL = Symbol.for("google.adk.parallelAgent");
40
+ function isParallelAgent(obj) {
41
+ return typeof obj === "object" && obj !== null && PARALLEL_AGENT_SIGNATURE_SYMBOL in obj && obj[PARALLEL_AGENT_SIGNATURE_SYMBOL] === true;
42
+ }
43
+ class ParallelAgent extends (_b = import_base_agent.BaseAgent, _a = PARALLEL_AGENT_SIGNATURE_SYMBOL, _b) {
44
+ constructor() {
45
+ super(...arguments);
46
+ /**
47
+ * A unique symbol to identify ADK parallel agent class.
48
+ */
49
+ this[_a] = true;
50
+ }
38
51
  async *runAsyncImpl(context) {
39
52
  const agentRuns = this.subAgents.map(
40
- (subAgent) => subAgent.runAsync(
41
- createBranchCtxForSubAgent(this, subAgent, context)
42
- )
53
+ (subAgent) => subAgent.runAsync(createBranchCtxForSubAgent(this, subAgent, context))
43
54
  );
44
55
  for await (const event of mergeAgentRuns(agentRuns)) {
45
56
  yield event;
46
57
  }
47
58
  }
48
- async *runLiveImpl(context) {
59
+ // eslint-disable-next-line require-yield
60
+ async *runLiveImpl(_context) {
49
61
  throw new Error("This is not supported yet for ParallelAgent.");
50
62
  }
51
63
  }
@@ -74,5 +86,6 @@ async function* mergeAgentRuns(agentRuns) {
74
86
  }
75
87
  // Annotate the CommonJS export names for ESM import in node:
76
88
  0 && (module.exports = {
77
- ParallelAgent
89
+ ParallelAgent,
90
+ isParallelAgent
78
91
  });
@@ -59,7 +59,10 @@ class ReadonlyContext {
59
59
  * The state of the current session.
60
60
  */
61
61
  get state() {
62
- return new import_state.State(this.invocationContext.session.state, {});
62
+ return new import_state.State(
63
+ this.invocationContext.session.state,
64
+ {}
65
+ );
63
66
  }
64
67
  }
65
68
  // Annotate the CommonJS export names for ESM import in node:
@@ -24,7 +24,8 @@ var __copyProps = (to, from, except, desc) => {
24
24
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
25
25
  var sequential_agent_exports = {};
26
26
  __export(sequential_agent_exports, {
27
- SequentialAgent: () => SequentialAgent
27
+ SequentialAgent: () => SequentialAgent,
28
+ isSequentialAgent: () => isSequentialAgent
28
29
  });
29
30
  module.exports = __toCommonJS(sequential_agent_exports);
30
31
  var import_function_tool = require("../tools/function_tool.js");
@@ -36,8 +37,22 @@ var import_readonly_context = require("./readonly_context.js");
36
37
  * Copyright 2025 Google LLC
37
38
  * SPDX-License-Identifier: Apache-2.0
38
39
  */
40
+ var _a, _b;
39
41
  const TASK_COMPLETED_TOOL_NAME = "task_completed";
40
- class SequentialAgent extends import_base_agent.BaseAgent {
42
+ const SEQUENTIAL_AGENT_SIGNATURE_SYMBOL = Symbol.for(
43
+ "google.adk.sequentialAgent"
44
+ );
45
+ function isSequentialAgent(obj) {
46
+ return typeof obj === "object" && obj !== null && SEQUENTIAL_AGENT_SIGNATURE_SYMBOL in obj && obj[SEQUENTIAL_AGENT_SIGNATURE_SYMBOL] === true;
47
+ }
48
+ class SequentialAgent extends (_b = import_base_agent.BaseAgent, _a = SEQUENTIAL_AGENT_SIGNATURE_SYMBOL, _b) {
49
+ constructor() {
50
+ super(...arguments);
51
+ /**
52
+ * A unique symbol to identify ADK sequential agent class.
53
+ */
54
+ this[_a] = true;
55
+ }
41
56
  async *runAsyncImpl(context) {
42
57
  for (const subAgent of this.subAgents) {
43
58
  for await (const event of subAgent.runAsync(context)) {
@@ -54,19 +69,25 @@ class SequentialAgent extends import_base_agent.BaseAgent {
54
69
  * the model can call this function to signal that it's finished the task and
55
70
  * we can move on to the next agent.
56
71
  *
57
- * @param context: The invocation context of the agent.
72
+ * @param context The invocation context of the agent.
58
73
  */
59
74
  async *runLiveImpl(context) {
60
75
  for (const subAgent of this.subAgents) {
61
- if (subAgent instanceof import_llm_agent.LlmAgent) {
62
- const agentTools = await subAgent.canonicalTools(new import_readonly_context.ReadonlyContext(context));
63
- const taskCompletedToolAlreadyAdded = agentTools.some((tool) => tool.name === TASK_COMPLETED_TOOL_NAME);
76
+ if ((0, import_llm_agent.isLlmAgent)(subAgent)) {
77
+ const agentTools = await subAgent.canonicalTools(
78
+ new import_readonly_context.ReadonlyContext(context)
79
+ );
80
+ const taskCompletedToolAlreadyAdded = agentTools.some(
81
+ (tool) => tool.name === TASK_COMPLETED_TOOL_NAME
82
+ );
64
83
  if (!taskCompletedToolAlreadyAdded) {
65
- subAgent.tools.push(new import_function_tool.FunctionTool({
66
- name: TASK_COMPLETED_TOOL_NAME,
67
- description: `Signals that the model has successfully completed the user's question or task.`,
68
- execute: () => "Task completion signaled."
69
- }));
84
+ subAgent.tools.push(
85
+ new import_function_tool.FunctionTool({
86
+ name: TASK_COMPLETED_TOOL_NAME,
87
+ description: `Signals that the model has successfully completed the user's question or task.`,
88
+ execute: () => "Task completion signaled."
89
+ })
90
+ );
70
91
  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.`;
71
92
  }
72
93
  }
@@ -80,5 +101,6 @@ class SequentialAgent extends import_base_agent.BaseAgent {
80
101
  }
81
102
  // Annotate the CommonJS export names for ESM import in node:
82
103
  0 && (module.exports = {
83
- SequentialAgent
104
+ SequentialAgent,
105
+ isSequentialAgent
84
106
  });
@@ -41,10 +41,12 @@ class GcsArtifactService {
41
41
  async saveArtifact(request) {
42
42
  const versions = await this.listVersions(request);
43
43
  const version = versions.length > 0 ? Math.max(...versions) + 1 : 0;
44
- const file = this.bucket.file(getFileName({
45
- ...request,
46
- version
47
- }));
44
+ const file = this.bucket.file(
45
+ getFileName({
46
+ ...request,
47
+ version
48
+ })
49
+ );
48
50
  if (request.artifact.inlineData) {
49
51
  await file.save(JSON.stringify(request.artifact.inlineData.data), {
50
52
  contentType: request.artifact.inlineData.mimeType
@@ -68,11 +70,16 @@ class GcsArtifactService {
68
70
  }
69
71
  version = Math.max(...versions);
70
72
  }
71
- const file = this.bucket.file(getFileName({
72
- ...request,
73
- version
74
- }));
75
- const [[metadata], [rawDataBuffer]] = await Promise.all([file.getMetadata(), file.download()]);
73
+ const file = this.bucket.file(
74
+ getFileName({
75
+ ...request,
76
+ version
77
+ })
78
+ );
79
+ const [[metadata], [rawDataBuffer]] = await Promise.all([
80
+ file.getMetadata(),
81
+ file.download()
82
+ ]);
76
83
  if (metadata.contentType === "text/plain") {
77
84
  return (0, import_genai.createPartFromText)(rawDataBuffer.toString("utf-8"));
78
85
  }
@@ -85,10 +92,7 @@ class GcsArtifactService {
85
92
  const fileNames = [];
86
93
  const sessionPrefix = `${request.appName}/${request.userId}/${request.sessionId}/`;
87
94
  const usernamePrefix = `${request.appName}/${request.userId}/user/`;
88
- const [
89
- [sessionFiles],
90
- [userSessionFiles]
91
- ] = await Promise.all([
95
+ const [[sessionFiles], [userSessionFiles]] = await Promise.all([
92
96
  this.bucket.getFiles({ prefix: sessionPrefix }),
93
97
  this.bucket.getFiles({ prefix: usernamePrefix })
94
98
  ]);
@@ -102,13 +106,17 @@ class GcsArtifactService {
102
106
  }
103
107
  async deleteArtifact(request) {
104
108
  const versions = await this.listVersions(request);
105
- await Promise.all(versions.map((version) => {
106
- const file = this.bucket.file(getFileName({
107
- ...request,
108
- version
109
- }));
110
- return file.delete();
111
- }));
109
+ await Promise.all(
110
+ versions.map((version) => {
111
+ const file = this.bucket.file(
112
+ getFileName({
113
+ ...request,
114
+ version
115
+ })
116
+ );
117
+ return file.delete();
118
+ })
119
+ );
112
120
  return;
113
121
  }
114
122
  async listVersions(request) {
@@ -68,7 +68,11 @@ class InMemoryArtifactService {
68
68
  }
69
69
  return Promise.resolve(versions[version]);
70
70
  }
71
- listArtifactKeys({ appName, userId, sessionId }) {
71
+ listArtifactKeys({
72
+ appName,
73
+ userId,
74
+ sessionId
75
+ }) {
72
76
  const sessionPrefix = `${appName}/${userId}/${sessionId}/`;
73
77
  const usernamespacePrefix = `${appName}/${userId}/user/`;
74
78
  const filenames = [];
@@ -83,7 +87,12 @@ class InMemoryArtifactService {
83
87
  }
84
88
  return Promise.resolve(filenames.sort());
85
89
  }
86
- deleteArtifact({ appName, userId, sessionId, filename }) {
90
+ deleteArtifact({
91
+ appName,
92
+ userId,
93
+ sessionId,
94
+ filename
95
+ }) {
87
96
  const path = artifactPath(appName, userId, sessionId, filename);
88
97
  if (!this.artifacts[path]) {
89
98
  return Promise.resolve();
@@ -91,13 +100,18 @@ class InMemoryArtifactService {
91
100
  delete this.artifacts[path];
92
101
  return Promise.resolve();
93
102
  }
94
- listVersions({ appName, userId, sessionId, filename }) {
103
+ listVersions({
104
+ appName,
105
+ userId,
106
+ sessionId,
107
+ filename
108
+ }) {
95
109
  const path = artifactPath(appName, userId, sessionId, filename);
96
110
  const artifacts = this.artifacts[path];
97
111
  if (!artifacts) {
98
112
  return Promise.resolve([]);
99
113
  }
100
- let versions = [];
114
+ const versions = [];
101
115
  for (let i = 0; i < artifacts.length; i++) {
102
116
  versions.push(i);
103
117
  }
@@ -66,7 +66,9 @@ class AuthHandler {
66
66
  };
67
67
  }
68
68
  if (!this.authConfig.rawAuthCredential.oauth2.clientId || !this.authConfig.rawAuthCredential.oauth2.clientSecret) {
69
- throw new Error(`Auth Scheme ${authSchemeType} requires both clientId and clientSecret in authCredential.oauth2.`);
69
+ throw new Error(
70
+ `Auth Scheme ${authSchemeType} requires both clientId and clientSecret in authCredential.oauth2.`
71
+ );
70
72
  }
71
73
  return {
72
74
  credentialKey: this.authConfig.credentialKey,
@@ -24,7 +24,8 @@ var __copyProps = (to, from, except, desc) => {
24
24
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
25
25
  var base_code_executor_exports = {};
26
26
  __export(base_code_executor_exports, {
27
- BaseCodeExecutor: () => BaseCodeExecutor
27
+ BaseCodeExecutor: () => BaseCodeExecutor,
28
+ isBaseCodeExecutor: () => isBaseCodeExecutor
28
29
  });
29
30
  module.exports = __toCommonJS(base_code_executor_exports);
30
31
  /**
@@ -32,8 +33,18 @@ module.exports = __toCommonJS(base_code_executor_exports);
32
33
  * Copyright 2025 Google LLC
33
34
  * SPDX-License-Identifier: Apache-2.0
34
35
  */
36
+ var _a;
37
+ const BASE_CODE_EXECUTOR_SIGNATURE_SYMBOL = Symbol.for(
38
+ "google.adk.baseCodeExecutor"
39
+ );
40
+ function isBaseCodeExecutor(obj) {
41
+ return typeof obj === "object" && obj !== null && BASE_CODE_EXECUTOR_SIGNATURE_SYMBOL in obj && obj[BASE_CODE_EXECUTOR_SIGNATURE_SYMBOL] === true;
42
+ }
43
+ _a = BASE_CODE_EXECUTOR_SIGNATURE_SYMBOL;
35
44
  class BaseCodeExecutor {
36
45
  constructor() {
46
+ /** A unique symbol to identify BaseCodeExecutor class. */
47
+ this[_a] = true;
37
48
  /**
38
49
  * If true, extract and process data files from the model request
39
50
  * and attach them to the code executor.
@@ -72,5 +83,6 @@ class BaseCodeExecutor {
72
83
  }
73
84
  // Annotate the CommonJS export names for ESM import in node:
74
85
  0 && (module.exports = {
75
- BaseCodeExecutor
86
+ BaseCodeExecutor,
87
+ isBaseCodeExecutor
76
88
  });
@@ -24,7 +24,8 @@ var __copyProps = (to, from, except, desc) => {
24
24
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
25
25
  var built_in_code_executor_exports = {};
26
26
  __export(built_in_code_executor_exports, {
27
- BuiltInCodeExecutor: () => BuiltInCodeExecutor
27
+ BuiltInCodeExecutor: () => BuiltInCodeExecutor,
28
+ isBuiltInCodeExecutor: () => isBuiltInCodeExecutor
28
29
  });
29
30
  module.exports = __toCommonJS(built_in_code_executor_exports);
30
31
  var import_model_name = require("../utils/model_name.js");
@@ -34,8 +35,20 @@ var import_base_code_executor = require("./base_code_executor.js");
34
35
  * Copyright 2025 Google LLC
35
36
  * SPDX-License-Identifier: Apache-2.0
36
37
  */
37
- class BuiltInCodeExecutor extends import_base_code_executor.BaseCodeExecutor {
38
- executeCode(params) {
38
+ var _a, _b;
39
+ const BUILT_IN_CODE_EXECUTOR_SIGNATURE_SYMBOL = Symbol.for(
40
+ "google.adk.builtInCodeExecutor"
41
+ );
42
+ function isBuiltInCodeExecutor(obj) {
43
+ return typeof obj === "object" && obj !== null && BUILT_IN_CODE_EXECUTOR_SIGNATURE_SYMBOL in obj && obj[BUILT_IN_CODE_EXECUTOR_SIGNATURE_SYMBOL] === true;
44
+ }
45
+ class BuiltInCodeExecutor extends (_b = import_base_code_executor.BaseCodeExecutor, _a = BUILT_IN_CODE_EXECUTOR_SIGNATURE_SYMBOL, _b) {
46
+ constructor() {
47
+ super(...arguments);
48
+ /** A unique symbol to identify BuiltInCodeExecutor class. */
49
+ this[_a] = true;
50
+ }
51
+ executeCode(_params) {
39
52
  return Promise.resolve({
40
53
  stdout: "",
41
54
  stderr: "",
@@ -49,10 +62,13 @@ class BuiltInCodeExecutor extends import_base_code_executor.BaseCodeExecutor {
49
62
  llmRequest.config.tools.push({ codeExecution: {} });
50
63
  return;
51
64
  }
52
- throw new Error(`Gemini code execution tool is not supported for model ${llmRequest.model}`);
65
+ throw new Error(
66
+ `Gemini code execution tool is not supported for model ${llmRequest.model}`
67
+ );
53
68
  }
54
69
  }
55
70
  // Annotate the CommonJS export names for ESM import in node:
56
71
  0 && (module.exports = {
57
- BuiltInCodeExecutor
72
+ BuiltInCodeExecutor,
73
+ isBuiltInCodeExecutor
58
74
  });
@@ -171,7 +171,9 @@ class CodeExecutorContext {
171
171
  if (!(CODE_EXECUTION_RESULTS_KEY in this.sessionState)) {
172
172
  this.sessionState.set(CODE_EXECUTION_RESULTS_KEY, {});
173
173
  }
174
- const codeExecutionResults = this.sessionState.get(CODE_EXECUTION_RESULTS_KEY);
174
+ const codeExecutionResults = this.sessionState.get(
175
+ CODE_EXECUTION_RESULTS_KEY
176
+ );
175
177
  if (!(invocationId in codeExecutionResults)) {
176
178
  codeExecutionResults[invocationId] = [];
177
179
  }
@@ -183,12 +185,10 @@ class CodeExecutorContext {
183
185
  });
184
186
  }
185
187
  /**
186
- * Gets the code executor context from the session state.
187
- * @param invocationId The session state to get the code executor context
188
- * from.
188
+ * Gets the code execution context from the session state.
189
189
  * @return The code execution context for the given invocation ID.
190
190
  */
191
- getCodeExecutionContext(invocationId) {
191
+ getCodeExecutionContext() {
192
192
  return this.sessionState.get(CONTEXT_KEY) || {};
193
193
  }
194
194
  }
@@ -25,9 +25,15 @@ var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "defau
25
25
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
26
26
  var common_exports = {};
27
27
  __export(common_exports, {
28
+ ActiveStreamingTool: () => import_active_streaming_tool.ActiveStreamingTool,
28
29
  AgentTool: () => import_agent_tool.AgentTool,
30
+ AuthCredentialTypes: () => import_auth_credential.AuthCredentialTypes,
29
31
  BaseAgent: () => import_base_agent.BaseAgent,
32
+ BaseCodeExecutor: () => import_base_code_executor.BaseCodeExecutor,
33
+ BaseExampleProvider: () => import_base_example_provider.BaseExampleProvider,
30
34
  BaseLlm: () => import_base_llm.BaseLlm,
35
+ BaseLlmRequestProcessor: () => import_base_llm_processor.BaseLlmRequestProcessor,
36
+ BaseLlmResponseProcessor: () => import_base_llm_processor.BaseLlmResponseProcessor,
31
37
  BasePlugin: () => import_base_plugin.BasePlugin,
32
38
  BaseTool: () => import_base_tool.BaseTool,
33
39
  BaseToolset: () => import_base_toolset.BaseToolset,
@@ -36,6 +42,8 @@ __export(common_exports, {
36
42
  FunctionTool: () => import_function_tool.FunctionTool,
37
43
  GOOGLE_SEARCH: () => import_google_search_tool.GOOGLE_SEARCH,
38
44
  Gemini: () => import_google_llm.Gemini,
45
+ GoogleLLMVariant: () => import_variant_utils.GoogleLLMVariant,
46
+ GoogleSearchTool: () => import_google_search_tool.GoogleSearchTool,
39
47
  InMemoryArtifactService: () => import_in_memory_artifact_service.InMemoryArtifactService,
40
48
  InMemoryMemoryService: () => import_in_memory_memory_service.InMemoryMemoryService,
41
49
  InMemoryPolicyEngine: () => import_security_plugin.InMemoryPolicyEngine,
@@ -53,6 +61,7 @@ __export(common_exports, {
53
61
  PluginManager: () => import_plugin_manager.PluginManager,
54
62
  PolicyOutcome: () => import_security_plugin.PolicyOutcome,
55
63
  REQUEST_CONFIRMATION_FUNCTION_CALL_NAME: () => import_security_plugin.REQUEST_CONFIRMATION_FUNCTION_CALL_NAME,
64
+ ReadonlyContext: () => import_readonly_context.ReadonlyContext,
56
65
  Runner: () => import_runner.Runner,
57
66
  SecurityPlugin: () => import_security_plugin.SecurityPlugin,
58
67
  SequentialAgent: () => import_sequential_agent.SequentialAgent,
@@ -67,18 +76,30 @@ __export(common_exports, {
67
76
  getAskUserConfirmationFunctionCalls: () => import_security_plugin.getAskUserConfirmationFunctionCalls,
68
77
  getFunctionCalls: () => import_event.getFunctionCalls,
69
78
  getFunctionResponses: () => import_event.getFunctionResponses,
79
+ getLogger: () => import_logger.getLogger,
70
80
  hasTrailingCodeExecutionResult: () => import_event.hasTrailingCodeExecutionResult,
81
+ isAgentTool: () => import_agent_tool.isAgentTool,
71
82
  isBaseAgent: () => import_base_agent.isBaseAgent,
83
+ isBaseExampleProvider: () => import_base_example_provider.isBaseExampleProvider,
72
84
  isBaseLlm: () => import_base_llm.isBaseLlm,
85
+ isBaseTool: () => import_base_tool.isBaseTool,
73
86
  isFinalResponse: () => import_event.isFinalResponse,
87
+ isFunctionTool: () => import_function_tool.isFunctionTool,
74
88
  isGemini2OrAbove: () => import_model_name.isGemini2OrAbove,
89
+ isLlmAgent: () => import_llm_agent.isLlmAgent,
90
+ isLoopAgent: () => import_loop_agent.isLoopAgent,
91
+ isParallelAgent: () => import_parallel_agent.isParallelAgent,
92
+ isSequentialAgent: () => import_sequential_agent.isSequentialAgent,
75
93
  setLogLevel: () => import_logger.setLogLevel,
94
+ setLogger: () => import_logger.setLogger,
76
95
  stringifyContent: () => import_event.stringifyContent,
77
96
  version: () => import_version.version,
78
97
  zodObjectToSchema: () => import_simple_zod_to_json.zodObjectToSchema
79
98
  });
80
99
  module.exports = __toCommonJS(common_exports);
100
+ var import_active_streaming_tool = require("./agents/active_streaming_tool.js");
81
101
  var import_base_agent = require("./agents/base_agent.js");
102
+ var import_base_llm_processor = require("./agents/base_llm_processor.js");
82
103
  var import_callback_context = require("./agents/callback_context.js");
83
104
  var import_functions = require("./agents/functions.js");
84
105
  var import_invocation_context = require("./agents/invocation_context.js");
@@ -86,12 +107,16 @@ var import_live_request_queue = require("./agents/live_request_queue.js");
86
107
  var import_llm_agent = require("./agents/llm_agent.js");
87
108
  var import_loop_agent = require("./agents/loop_agent.js");
88
109
  var import_parallel_agent = require("./agents/parallel_agent.js");
110
+ var import_readonly_context = require("./agents/readonly_context.js");
89
111
  var import_run_config = require("./agents/run_config.js");
90
112
  var import_sequential_agent = require("./agents/sequential_agent.js");
91
113
  var import_in_memory_artifact_service = require("./artifacts/in_memory_artifact_service.js");
114
+ var import_auth_credential = require("./auth/auth_credential.js");
115
+ var import_base_code_executor = require("./code_executors/base_code_executor.js");
92
116
  var import_built_in_code_executor = require("./code_executors/built_in_code_executor.js");
93
117
  var import_event = require("./events/event.js");
94
118
  var import_event_actions = require("./events/event_actions.js");
119
+ var import_base_example_provider = require("./examples/base_example_provider.js");
95
120
  var import_in_memory_memory_service = require("./memory/in_memory_memory_service.js");
96
121
  var import_base_llm = require("./models/base_llm.js");
97
122
  var import_google_llm = require("./models/google_llm.js");
@@ -116,6 +141,7 @@ var import_tool_context = require("./tools/tool_context.js");
116
141
  var import_logger = require("./utils/logger.js");
117
142
  var import_model_name = require("./utils/model_name.js");
118
143
  var import_simple_zod_to_json = require("./utils/simple_zod_to_json.js");
144
+ var import_variant_utils = require("./utils/variant_utils.js");
119
145
  var import_version = require("./version.js");
120
146
  __reExport(common_exports, require("./artifacts/base_artifact_service.js"), module.exports);
121
147
  __reExport(common_exports, require("./memory/base_memory_service.js"), module.exports);
@@ -128,9 +154,15 @@ __reExport(common_exports, require("./tools/base_tool.js"), module.exports);
128
154
  */
129
155
  // Annotate the CommonJS export names for ESM import in node:
130
156
  0 && (module.exports = {
157
+ ActiveStreamingTool,
131
158
  AgentTool,
159
+ AuthCredentialTypes,
132
160
  BaseAgent,
161
+ BaseCodeExecutor,
162
+ BaseExampleProvider,
133
163
  BaseLlm,
164
+ BaseLlmRequestProcessor,
165
+ BaseLlmResponseProcessor,
134
166
  BasePlugin,
135
167
  BaseTool,
136
168
  BaseToolset,
@@ -139,6 +171,8 @@ __reExport(common_exports, require("./tools/base_tool.js"), module.exports);
139
171
  FunctionTool,
140
172
  GOOGLE_SEARCH,
141
173
  Gemini,
174
+ GoogleLLMVariant,
175
+ GoogleSearchTool,
142
176
  InMemoryArtifactService,
143
177
  InMemoryMemoryService,
144
178
  InMemoryPolicyEngine,
@@ -156,6 +190,7 @@ __reExport(common_exports, require("./tools/base_tool.js"), module.exports);
156
190
  PluginManager,
157
191
  PolicyOutcome,
158
192
  REQUEST_CONFIRMATION_FUNCTION_CALL_NAME,
193
+ ReadonlyContext,
159
194
  Runner,
160
195
  SecurityPlugin,
161
196
  SequentialAgent,
@@ -170,12 +205,22 @@ __reExport(common_exports, require("./tools/base_tool.js"), module.exports);
170
205
  getAskUserConfirmationFunctionCalls,
171
206
  getFunctionCalls,
172
207
  getFunctionResponses,
208
+ getLogger,
173
209
  hasTrailingCodeExecutionResult,
210
+ isAgentTool,
174
211
  isBaseAgent,
212
+ isBaseExampleProvider,
175
213
  isBaseLlm,
214
+ isBaseTool,
176
215
  isFinalResponse,
216
+ isFunctionTool,
177
217
  isGemini2OrAbove,
218
+ isLlmAgent,
219
+ isLoopAgent,
220
+ isParallelAgent,
221
+ isSequentialAgent,
178
222
  setLogLevel,
223
+ setLogger,
179
224
  stringifyContent,
180
225
  version,
181
226
  zodObjectToSchema,
@@ -101,9 +101,7 @@ const ASCII_LETTERS_AND_NUMBERS = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRS
101
101
  function createNewEventId() {
102
102
  let id = "";
103
103
  for (let i = 0; i < 8; i++) {
104
- id += ASCII_LETTERS_AND_NUMBERS[Math.floor(
105
- Math.random() * ASCII_LETTERS_AND_NUMBERS.length
106
- )];
104
+ id += ASCII_LETTERS_AND_NUMBERS[Math.floor(Math.random() * ASCII_LETTERS_AND_NUMBERS.length)];
107
105
  }
108
106
  return id;
109
107
  }
@@ -24,7 +24,8 @@ var __copyProps = (to, from, except, desc) => {
24
24
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
25
25
  var base_example_provider_exports = {};
26
26
  __export(base_example_provider_exports, {
27
- BaseExampleProvider: () => BaseExampleProvider
27
+ BaseExampleProvider: () => BaseExampleProvider,
28
+ isBaseExampleProvider: () => isBaseExampleProvider
28
29
  });
29
30
  module.exports = __toCommonJS(base_example_provider_exports);
30
31
  /**
@@ -32,9 +33,24 @@ module.exports = __toCommonJS(base_example_provider_exports);
32
33
  * Copyright 2025 Google LLC
33
34
  * SPDX-License-Identifier: Apache-2.0
34
35
  */
36
+ var _a;
37
+ const BASE_EXAMPLE_PROVIDER_SIGNATURE_SYMBOL = Symbol.for(
38
+ "google.adk.baseExampleProvider"
39
+ );
40
+ function isBaseExampleProvider(obj) {
41
+ return typeof obj === "object" && obj !== null && BASE_EXAMPLE_PROVIDER_SIGNATURE_SYMBOL in obj && obj[BASE_EXAMPLE_PROVIDER_SIGNATURE_SYMBOL] === true;
42
+ }
43
+ _a = BASE_EXAMPLE_PROVIDER_SIGNATURE_SYMBOL;
35
44
  class BaseExampleProvider {
45
+ constructor() {
46
+ /**
47
+ * A unique symbol to identify ADK example provider classes.
48
+ */
49
+ this[_a] = true;
50
+ }
36
51
  }
37
52
  // Annotate the CommonJS export names for ESM import in node:
38
53
  0 && (module.exports = {
39
- BaseExampleProvider
54
+ BaseExampleProvider,
55
+ isBaseExampleProvider
40
56
  });
@@ -95,7 +95,7 @@ function buildExampleSi(examples, query, model) {
95
95
  if (Array.isArray(examples)) {
96
96
  return convertExamplesToText(examples, model);
97
97
  }
98
- if (examples instanceof import_base_example_provider.BaseExampleProvider) {
98
+ if ((0, import_base_example_provider.isBaseExampleProvider)(examples)) {
99
99
  return convertExamplesToText(examples.getExamples(query), model);
100
100
  }
101
101
  throw new Error("Invalid example configuration");