@google/adk 0.4.0 → 0.6.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 (221) hide show
  1. package/README.md +1 -1
  2. package/dist/cjs/a2a/a2a_event.js +317 -0
  3. package/dist/cjs/a2a/a2a_remote_agent.js +174 -0
  4. package/dist/cjs/a2a/a2a_remote_agent_run_processor.js +198 -0
  5. package/dist/cjs/a2a/a2a_remote_agent_utils.js +165 -0
  6. package/dist/cjs/a2a/agent_card.js +380 -0
  7. package/dist/cjs/a2a/agent_executor.js +221 -0
  8. package/dist/cjs/a2a/agent_to_a2a.js +115 -0
  9. package/dist/cjs/a2a/event_converter_utils.js +201 -0
  10. package/dist/cjs/a2a/event_processor_utils.js +180 -0
  11. package/dist/cjs/a2a/executor_context.js +53 -0
  12. package/dist/cjs/a2a/metadata_converter_utils.js +126 -0
  13. package/dist/cjs/a2a/part_converter_utils.js +47 -34
  14. package/dist/cjs/agents/base_agent.js +3 -3
  15. package/dist/cjs/{tools/tool_context.js → agents/context.js} +70 -15
  16. package/dist/cjs/agents/functions.js +2 -2
  17. package/dist/cjs/agents/llm_agent.js +38 -674
  18. package/dist/cjs/agents/processors/agent_transfer_llm_request_processor.js +132 -0
  19. package/dist/cjs/agents/processors/basic_llm_request_processor.js +68 -0
  20. package/dist/cjs/agents/processors/code_execution_request_processor.js +389 -0
  21. package/dist/cjs/agents/{content_processor_utils.js → processors/content_processor_utils.js} +21 -2
  22. package/dist/cjs/agents/processors/content_request_processor.js +87 -0
  23. package/dist/cjs/agents/processors/context_compactor_request_processor.js +61 -0
  24. package/dist/cjs/agents/processors/identity_llm_request_processor.js +54 -0
  25. package/dist/cjs/agents/processors/instructions_llm_request_processor.js +85 -0
  26. package/dist/cjs/agents/processors/request_confirmation_llm_request_processor.js +165 -0
  27. package/dist/cjs/artifacts/file_artifact_service.js +35 -4
  28. package/dist/cjs/common.js +48 -7
  29. package/dist/cjs/context/base_context_compactor.js +27 -0
  30. package/dist/cjs/context/summarizers/base_summarizer.js +27 -0
  31. package/dist/cjs/context/summarizers/llm_summarizer.js +93 -0
  32. package/dist/cjs/context/token_based_context_compactor.js +135 -0
  33. package/dist/cjs/context/truncating_context_compactor.js +58 -0
  34. package/dist/cjs/events/compacted_event.js +53 -0
  35. package/dist/cjs/index.js +113 -53
  36. package/dist/cjs/index.js.map +7 -0
  37. package/dist/cjs/memory/in_memory_memory_service.js +1 -1
  38. package/dist/cjs/models/llm_response.js +2 -0
  39. package/dist/cjs/plugins/base_plugin.js +1 -1
  40. package/dist/cjs/runner/runner.js +20 -11
  41. package/dist/cjs/sessions/database_session_service.js +4 -1
  42. package/dist/cjs/sessions/db/operations.js +25 -23
  43. package/dist/cjs/sessions/state.js +2 -2
  44. package/dist/cjs/tools/agent_tool.js +6 -5
  45. package/dist/cjs/tools/base_tool.js +3 -0
  46. package/dist/cjs/tools/base_toolset.js +13 -3
  47. package/dist/cjs/tools/exit_loop_tool.js +63 -0
  48. package/dist/cjs/tools/load_artifacts_tool.js +188 -0
  49. package/dist/cjs/tools/load_memory_tool.js +107 -0
  50. package/dist/cjs/tools/mcp/mcp_toolset.js +9 -5
  51. package/dist/cjs/tools/preload_memory_tool.js +109 -0
  52. package/dist/cjs/utils/logger.js +62 -54
  53. package/dist/cjs/version.js +1 -1
  54. package/dist/esm/a2a/a2a_event.js +269 -0
  55. package/dist/esm/a2a/a2a_remote_agent.js +148 -0
  56. package/dist/esm/a2a/a2a_remote_agent_run_processor.js +175 -0
  57. package/dist/esm/a2a/a2a_remote_agent_utils.js +131 -0
  58. package/dist/esm/a2a/agent_card.js +340 -0
  59. package/dist/esm/a2a/agent_executor.js +202 -0
  60. package/dist/esm/a2a/agent_to_a2a.js +80 -0
  61. package/dist/esm/a2a/event_converter_utils.js +187 -0
  62. package/dist/esm/a2a/event_processor_utils.js +159 -0
  63. package/dist/esm/a2a/executor_context.js +23 -0
  64. package/dist/esm/a2a/metadata_converter_utils.js +91 -0
  65. package/dist/esm/a2a/part_converter_utils.js +49 -34
  66. package/dist/esm/agents/base_agent.js +3 -3
  67. package/dist/{web/tools/tool_context.js → esm/agents/context.js} +66 -11
  68. package/dist/esm/agents/functions.js +2 -2
  69. package/dist/esm/agents/llm_agent.js +31 -683
  70. package/dist/esm/agents/processors/agent_transfer_llm_request_processor.js +101 -0
  71. package/dist/esm/agents/processors/basic_llm_request_processor.js +37 -0
  72. package/dist/esm/agents/processors/code_execution_request_processor.js +363 -0
  73. package/dist/esm/agents/{content_processor_utils.js → processors/content_processor_utils.js} +23 -2
  74. package/dist/esm/agents/processors/content_request_processor.js +59 -0
  75. package/dist/esm/agents/processors/context_compactor_request_processor.js +31 -0
  76. package/dist/esm/agents/processors/identity_llm_request_processor.js +23 -0
  77. package/dist/esm/agents/processors/instructions_llm_request_processor.js +54 -0
  78. package/dist/esm/agents/processors/request_confirmation_llm_request_processor.js +140 -0
  79. package/dist/esm/artifacts/file_artifact_service.js +30 -3
  80. package/dist/esm/common.js +44 -10
  81. package/dist/esm/context/base_context_compactor.js +5 -0
  82. package/dist/esm/context/summarizers/base_summarizer.js +5 -0
  83. package/dist/esm/context/summarizers/llm_summarizer.js +65 -0
  84. package/dist/esm/context/token_based_context_compactor.js +105 -0
  85. package/dist/esm/context/truncating_context_compactor.js +28 -0
  86. package/dist/esm/events/compacted_event.js +22 -0
  87. package/dist/esm/index.js +119 -18
  88. package/dist/esm/index.js.map +7 -0
  89. package/dist/esm/memory/in_memory_memory_service.js +1 -1
  90. package/dist/esm/models/llm_response.js +2 -0
  91. package/dist/esm/plugins/base_plugin.js +1 -1
  92. package/dist/esm/runner/runner.js +18 -10
  93. package/dist/esm/sessions/database_session_service.js +4 -1
  94. package/dist/esm/sessions/db/operations.js +32 -18
  95. package/dist/esm/sessions/state.js +2 -2
  96. package/dist/esm/tools/agent_tool.js +6 -5
  97. package/dist/esm/tools/base_tool.js +3 -0
  98. package/dist/esm/tools/base_toolset.js +11 -2
  99. package/dist/esm/tools/exit_loop_tool.js +32 -0
  100. package/dist/esm/tools/load_artifacts_tool.js +159 -0
  101. package/dist/esm/tools/load_memory_tool.js +78 -0
  102. package/dist/esm/tools/mcp/mcp_toolset.js +9 -5
  103. package/dist/esm/tools/preload_memory_tool.js +80 -0
  104. package/dist/esm/utils/logger.js +52 -54
  105. package/dist/esm/version.js +1 -1
  106. package/dist/types/a2a/a2a_event.d.ts +139 -0
  107. package/dist/types/a2a/a2a_remote_agent.d.ts +63 -0
  108. package/dist/types/a2a/a2a_remote_agent_run_processor.d.ts +31 -0
  109. package/dist/types/a2a/a2a_remote_agent_utils.d.ts +38 -0
  110. package/dist/types/a2a/agent_card.d.ts +23 -0
  111. package/dist/types/a2a/agent_executor.d.ts +52 -0
  112. package/dist/types/a2a/agent_to_a2a.d.ts +45 -0
  113. package/dist/types/a2a/event_converter_utils.d.ts +20 -0
  114. package/dist/types/a2a/event_processor_utils.d.ts +24 -0
  115. package/dist/types/a2a/executor_context.d.ts +33 -0
  116. package/dist/types/a2a/metadata_converter_utils.d.ts +63 -0
  117. package/dist/types/a2a/part_converter_utils.d.ts +4 -3
  118. package/dist/types/agents/base_agent.d.ts +2 -2
  119. package/dist/types/{tools/tool_context.d.ts → agents/context.d.ts} +43 -8
  120. package/dist/types/agents/llm_agent.d.ts +14 -31
  121. package/dist/types/agents/loop_agent.d.ts +1 -1
  122. package/dist/types/agents/processors/agent_transfer_llm_request_processor.d.ts +18 -0
  123. package/dist/types/agents/{base_llm_processor.d.ts → processors/base_llm_processor.d.ts} +4 -4
  124. package/dist/types/agents/processors/basic_llm_request_processor.d.ts +13 -0
  125. package/dist/types/agents/processors/code_execution_request_processor.d.ts +34 -0
  126. package/dist/types/agents/{content_processor_utils.d.ts → processors/content_processor_utils.d.ts} +1 -1
  127. package/dist/types/agents/processors/content_request_processor.d.ts +13 -0
  128. package/dist/types/agents/processors/context_compactor_request_processor.d.ts +22 -0
  129. package/dist/types/agents/processors/identity_llm_request_processor.d.ts +13 -0
  130. package/dist/types/agents/processors/instructions_llm_request_processor.d.ts +16 -0
  131. package/dist/types/agents/processors/request_confirmation_llm_request_processor.d.ts +13 -0
  132. package/dist/types/artifacts/file_artifact_service.d.ts +4 -0
  133. package/dist/types/auth/credential_service/base_credential_service.d.ts +3 -3
  134. package/dist/types/auth/credential_service/in_memory_credential_service.d.ts +3 -3
  135. package/dist/types/common.d.ts +20 -5
  136. package/dist/types/context/base_context_compactor.d.ts +24 -0
  137. package/dist/types/context/summarizers/base_summarizer.d.ts +19 -0
  138. package/dist/types/context/summarizers/llm_summarizer.d.ts +23 -0
  139. package/dist/types/context/token_based_context_compactor.d.ts +33 -0
  140. package/dist/types/context/truncating_context_compactor.d.ts +24 -0
  141. package/dist/types/events/compacted_event.d.ts +33 -0
  142. package/dist/types/index.d.ts +8 -0
  143. package/dist/types/models/llm_response.d.ts +5 -1
  144. package/dist/types/plugins/base_plugin.d.ts +12 -13
  145. package/dist/types/plugins/logging_plugin.d.ts +9 -10
  146. package/dist/types/plugins/plugin_manager.d.ts +9 -10
  147. package/dist/types/plugins/security_plugin.d.ts +2 -2
  148. package/dist/types/runner/runner.d.ts +13 -0
  149. package/dist/types/sessions/database_session_service.d.ts +2 -1
  150. package/dist/types/sessions/db/operations.d.ts +3 -4
  151. package/dist/types/tools/base_tool.d.ts +3 -3
  152. package/dist/types/tools/base_toolset.d.ts +12 -3
  153. package/dist/types/tools/exit_loop_tool.d.ts +24 -0
  154. package/dist/types/tools/forwarding_artifact_service.d.ts +2 -2
  155. package/dist/types/tools/function_tool.d.ts +2 -2
  156. package/dist/types/tools/load_artifacts_tool.d.ts +21 -0
  157. package/dist/types/tools/load_memory_tool.d.ts +22 -0
  158. package/dist/types/tools/mcp/mcp_toolset.d.ts +1 -1
  159. package/dist/types/tools/preload_memory_tool.d.ts +23 -0
  160. package/dist/types/utils/logger.d.ts +5 -9
  161. package/dist/types/version.d.ts +1 -1
  162. package/dist/web/a2a/a2a_event.js +269 -0
  163. package/dist/web/a2a/a2a_remote_agent.js +193 -0
  164. package/dist/web/a2a/a2a_remote_agent_run_processor.js +175 -0
  165. package/dist/web/a2a/a2a_remote_agent_utils.js +131 -0
  166. package/dist/web/a2a/agent_card.js +340 -0
  167. package/dist/web/a2a/agent_executor.js +216 -0
  168. package/dist/web/a2a/agent_to_a2a.js +80 -0
  169. package/dist/web/a2a/event_converter_utils.js +201 -0
  170. package/dist/web/a2a/event_processor_utils.js +168 -0
  171. package/dist/web/a2a/executor_context.js +23 -0
  172. package/dist/web/a2a/metadata_converter_utils.js +108 -0
  173. package/dist/web/a2a/part_converter_utils.js +49 -34
  174. package/dist/web/agents/base_agent.js +3 -3
  175. package/dist/{esm/tools/tool_context.js → web/agents/context.js} +66 -11
  176. package/dist/web/agents/functions.js +2 -2
  177. package/dist/web/agents/llm_agent.js +31 -661
  178. package/dist/web/agents/processors/agent_transfer_llm_request_processor.js +100 -0
  179. package/dist/web/agents/processors/basic_llm_request_processor.js +71 -0
  180. package/dist/web/agents/processors/code_execution_request_processor.js +365 -0
  181. package/dist/web/agents/{content_processor_utils.js → processors/content_processor_utils.js} +22 -2
  182. package/dist/web/agents/processors/content_request_processor.js +77 -0
  183. package/dist/web/agents/processors/context_compactor_request_processor.js +49 -0
  184. package/dist/web/agents/processors/identity_llm_request_processor.js +41 -0
  185. package/dist/web/agents/processors/instructions_llm_request_processor.js +72 -0
  186. package/dist/web/agents/processors/request_confirmation_llm_request_processor.js +158 -0
  187. package/dist/web/artifacts/file_artifact_service.js +30 -3
  188. package/dist/web/common.js +44 -10
  189. package/dist/web/context/base_context_compactor.js +5 -0
  190. package/dist/web/context/summarizers/base_summarizer.js +5 -0
  191. package/dist/web/context/summarizers/llm_summarizer.js +74 -0
  192. package/dist/web/context/token_based_context_compactor.js +105 -0
  193. package/dist/web/context/truncating_context_compactor.js +28 -0
  194. package/dist/web/events/compacted_event.js +40 -0
  195. package/dist/web/index.js +13 -18
  196. package/dist/web/index.js.map +7 -0
  197. package/dist/web/memory/in_memory_memory_service.js +1 -1
  198. package/dist/web/models/llm_response.js +2 -0
  199. package/dist/web/plugins/base_plugin.js +1 -1
  200. package/dist/web/runner/runner.js +18 -10
  201. package/dist/web/sessions/database_session_service.js +4 -1
  202. package/dist/web/sessions/db/operations.js +32 -18
  203. package/dist/web/sessions/state.js +2 -2
  204. package/dist/web/tools/agent_tool.js +6 -5
  205. package/dist/web/tools/base_tool.js +3 -0
  206. package/dist/web/tools/base_toolset.js +11 -2
  207. package/dist/web/tools/exit_loop_tool.js +32 -0
  208. package/dist/web/tools/load_artifacts_tool.js +150 -0
  209. package/dist/web/tools/load_memory_tool.js +77 -0
  210. package/dist/web/tools/mcp/mcp_toolset.js +27 -5
  211. package/dist/web/tools/preload_memory_tool.js +75 -0
  212. package/dist/web/utils/logger.js +52 -54
  213. package/dist/web/version.js +1 -1
  214. package/package.json +7 -4
  215. package/dist/cjs/agents/callback_context.js +0 -101
  216. package/dist/esm/agents/callback_context.js +0 -71
  217. package/dist/types/agents/callback_context.d.ts +0 -42
  218. package/dist/web/agents/callback_context.js +0 -71
  219. /package/dist/cjs/agents/{base_llm_processor.js → processors/base_llm_processor.js} +0 -0
  220. /package/dist/esm/agents/{base_llm_processor.js → processors/base_llm_processor.js} +0 -0
  221. /package/dist/web/agents/{base_llm_processor.js → processors/base_llm_processor.js} +0 -0
@@ -0,0 +1,80 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { appendInstructions } from "../models/llm_request.js";
7
+ import { logger } from "../utils/logger.js";
8
+ import {
9
+ BaseTool
10
+ } from "./base_tool.js";
11
+ class PreloadMemoryTool extends BaseTool {
12
+ constructor() {
13
+ super({
14
+ // Name and description are not used because this tool only
15
+ // changes llm_request.
16
+ name: "preload_memory",
17
+ description: "preload_memory"
18
+ });
19
+ }
20
+ async runAsync({
21
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
22
+ args,
23
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
24
+ toolContext
25
+ }) {
26
+ throw new Error("PreloadMemoryTool should not be called by model");
27
+ }
28
+ async processLlmRequest(request) {
29
+ var _a, _b, _c;
30
+ await super.processLlmRequest(request);
31
+ const userContent = request.toolContext.userContent;
32
+ if (!userContent || !userContent.parts || !((_a = userContent.parts[0]) == null ? void 0 : _a.text)) {
33
+ return;
34
+ }
35
+ const userQuery = userContent.parts[0].text;
36
+ let response;
37
+ try {
38
+ if (!request.toolContext.invocationContext.memoryService) {
39
+ return;
40
+ }
41
+ response = await request.toolContext.searchMemory(userQuery);
42
+ } catch (_) {
43
+ logger.warn(`Failed to preload memory for query: ${userQuery}`);
44
+ return;
45
+ }
46
+ if (!response.memories || response.memories.length === 0) {
47
+ return;
48
+ }
49
+ const memoryTextLines = [];
50
+ for (const memory of response.memories) {
51
+ const timeStr = memory.timestamp ? `Time: ${memory.timestamp}` : "";
52
+ if (timeStr) memoryTextLines.push(timeStr);
53
+ const memoryText = (_c = (_b = memory.content.parts) == null ? void 0 : _b.map((p) => {
54
+ var _a2;
55
+ return (_a2 = p.text) != null ? _a2 : "";
56
+ }).join(" ")) != null ? _c : "";
57
+ if (memoryText) {
58
+ memoryTextLines.push(
59
+ memory.author ? `${memory.author}: ${memoryText}` : memoryText
60
+ );
61
+ }
62
+ }
63
+ if (memoryTextLines.length === 0) {
64
+ return;
65
+ }
66
+ const fullMemoryText = memoryTextLines.join("\n");
67
+ const si = `The following content is from your previous conversations with the user.
68
+ They may be useful for answering the user's current query.
69
+ <PAST_CONVERSATIONS>
70
+ ${fullMemoryText}
71
+ </PAST_CONVERSATIONS>
72
+ `;
73
+ appendInstructions(request.llmRequest, [si]);
74
+ }
75
+ }
76
+ const PRELOAD_MEMORY = new PreloadMemoryTool();
77
+ export {
78
+ PRELOAD_MEMORY,
79
+ PreloadMemoryTool
80
+ };
@@ -3,6 +3,7 @@
3
3
  * Copyright 2025 Google LLC
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
+ import * as winston from "winston";
6
7
  var LogLevel = /* @__PURE__ */ ((LogLevel2) => {
7
8
  LogLevel2[LogLevel2["DEBUG"] = 0] = "DEBUG";
8
9
  LogLevel2[LogLevel2["INFO"] = 1] = "INFO";
@@ -10,58 +11,69 @@ var LogLevel = /* @__PURE__ */ ((LogLevel2) => {
10
11
  LogLevel2[LogLevel2["ERROR"] = 3] = "ERROR";
11
12
  return LogLevel2;
12
13
  })(LogLevel || {});
13
- let logLevel = 1 /* INFO */;
14
- function setLogLevel(level) {
15
- logLevel = level;
16
- }
17
14
  class SimpleLogger {
18
- log(level, ...args) {
19
- if (level < logLevel) {
15
+ constructor() {
16
+ this.logLevel = 1 /* INFO */;
17
+ this.logger = winston.createLogger({
18
+ levels: {
19
+ "debug": 0 /* DEBUG */,
20
+ "info": 1 /* INFO */,
21
+ "warn": 2 /* WARN */,
22
+ "error": 3 /* ERROR */
23
+ },
24
+ level: "error",
25
+ format: winston.format.combine(
26
+ winston.format.label({ label: "ADK" }),
27
+ winston.format((info) => {
28
+ info.level = info.level.toUpperCase();
29
+ return info;
30
+ })(),
31
+ winston.format.colorize(),
32
+ winston.format.timestamp(),
33
+ winston.format.printf((info) => {
34
+ return `${info.level}: [${info.label}] ${info.timestamp} ${info.message}`;
35
+ })
36
+ ),
37
+ transports: [new winston.transports.Console()]
38
+ });
39
+ }
40
+ setLogLevel(level) {
41
+ this.logLevel = level;
42
+ }
43
+ log(level, ...messages) {
44
+ if (this.logLevel > level) {
20
45
  return;
21
46
  }
22
- switch (level) {
23
- case 0 /* DEBUG */:
24
- this.debug(...args);
25
- break;
26
- case 1 /* INFO */:
27
- this.info(...args);
28
- break;
29
- case 2 /* WARN */:
30
- this.warn(...args);
31
- break;
32
- case 3 /* ERROR */:
33
- this.error(...args);
34
- break;
35
- default:
36
- throw new Error(`Unsupported log level: ${level}`);
37
- }
47
+ this.logger.log(level.toString(), messages.join(" "));
38
48
  }
39
- debug(...args) {
40
- if (logLevel > 0 /* DEBUG */) {
49
+ debug(...messages) {
50
+ if (this.logLevel > 0 /* DEBUG */) {
41
51
  return;
42
52
  }
43
- console.debug(getColoredPrefix(0 /* DEBUG */), ...args);
53
+ this.logger.debug(messages.join(" "));
44
54
  }
45
- info(...args) {
46
- if (logLevel > 1 /* INFO */) {
55
+ info(...messages) {
56
+ if (this.logLevel > 1 /* INFO */) {
47
57
  return;
48
58
  }
49
- console.info(getColoredPrefix(1 /* INFO */), ...args);
59
+ this.logger.info(messages.join(" "));
50
60
  }
51
- warn(...args) {
52
- if (logLevel > 2 /* WARN */) {
61
+ warn(...messages) {
62
+ if (this.logLevel > 2 /* WARN */) {
53
63
  return;
54
64
  }
55
- console.warn(getColoredPrefix(2 /* WARN */), ...args);
65
+ this.logger.warn(messages.join(" "));
56
66
  }
57
- error(...args) {
58
- if (logLevel > 3 /* ERROR */) {
67
+ error(...messages) {
68
+ if (this.logLevel > 3 /* ERROR */) {
59
69
  return;
60
70
  }
61
- console.error(getColoredPrefix(3 /* ERROR */), ...args);
71
+ this.logger.error(messages.join(" "));
62
72
  }
63
73
  }
64
74
  class NoOpLogger {
75
+ setLogLevel(_level) {
76
+ }
65
77
  log(_level, ..._args) {
66
78
  }
67
79
  debug(..._args) {
@@ -73,26 +85,6 @@ class NoOpLogger {
73
85
  error(..._args) {
74
86
  }
75
87
  }
76
- const LOG_LEVEL_STR = {
77
- [0 /* DEBUG */]: "DEBUG",
78
- [1 /* INFO */]: "INFO",
79
- [2 /* WARN */]: "WARN",
80
- [3 /* ERROR */]: "ERROR"
81
- };
82
- const CONSOLE_COLOR_MAP = {
83
- [0 /* DEBUG */]: "\x1B[34m",
84
- // Blue
85
- [1 /* INFO */]: "\x1B[32m",
86
- // Green
87
- [2 /* WARN */]: "\x1B[33m",
88
- // Yellow
89
- [3 /* ERROR */]: "\x1B[31m"
90
- // Red
91
- };
92
- const RESET_COLOR = "\x1B[0m";
93
- function getColoredPrefix(level) {
94
- return `${CONSOLE_COLOR_MAP[level]}[ADK ${LOG_LEVEL_STR[level]}]:${RESET_COLOR}`;
95
- }
96
88
  let currentLogger = new SimpleLogger();
97
89
  function setLogger(customLogger) {
98
90
  currentLogger = customLogger != null ? customLogger : new NoOpLogger();
@@ -103,7 +95,13 @@ function getLogger() {
103
95
  function resetLogger() {
104
96
  currentLogger = new SimpleLogger();
105
97
  }
98
+ function setLogLevel(level) {
99
+ logger.setLogLevel(level);
100
+ }
106
101
  const logger = {
102
+ setLogLevel(level) {
103
+ currentLogger.setLogLevel(level);
104
+ },
107
105
  log(level, ...args) {
108
106
  currentLogger.log(level, ...args);
109
107
  },
@@ -3,7 +3,7 @@
3
3
  * Copyright 2025 Google LLC
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- const version = "0.4.0";
6
+ const version = "0.6.0";
7
7
  export {
8
8
  version
9
9
  };
@@ -0,0 +1,139 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { Part as A2APart, Message, Task, TaskArtifactUpdateEvent, TaskStatusUpdateEvent } from '@a2a-js/sdk';
7
+ /**
8
+ * Message roles.
9
+ */
10
+ export declare enum MessageRole {
11
+ USER = "user",
12
+ AGENT = "agent"
13
+ }
14
+ /**
15
+ * Task states.
16
+ */
17
+ export declare enum TaskState {
18
+ SUBMITTED = "submitted",
19
+ WORKING = "working",
20
+ COMPLETED = "completed",
21
+ FAILED = "failed",
22
+ CANCELED = "canceled",
23
+ REJECTED = "rejected",
24
+ INPUT_REQUIRED = "input-required"
25
+ }
26
+ /**
27
+ * A2A event.
28
+ */
29
+ export type A2AEvent = Task | Message | TaskStatusUpdateEvent | TaskArtifactUpdateEvent;
30
+ /**
31
+ * Checks if the event is an A2A TaskStatusUpdateEvent.
32
+ */
33
+ export declare function isTaskStatusUpdateEvent(event: unknown): event is TaskStatusUpdateEvent;
34
+ /**
35
+ * Checks if the event is an A2A TaskArtifactUpdateEvent.
36
+ */
37
+ export declare function isTaskArtifactUpdateEvent(event: unknown): event is TaskArtifactUpdateEvent;
38
+ /**
39
+ * Checks if the event is an A2A Message.
40
+ */
41
+ export declare function isMessage(event: unknown): event is Message;
42
+ /**
43
+ * Checks if the event is an A2A Task.
44
+ */
45
+ export declare function isTask(event: unknown): event is Task;
46
+ /**
47
+ * Gets the metadata from an A2A event.
48
+ */
49
+ export declare function getEventMetadata(event: A2AEvent): Record<string, unknown>;
50
+ /**
51
+ * Checks if the event is a failed task status update event.
52
+ */
53
+ export declare function isFailedTaskStatusUpdateEvent(event: unknown): boolean;
54
+ /**
55
+ * Checks if the event is a terminal task status update event.
56
+ */
57
+ export declare function isTerminalTaskStatusUpdateEvent(event: unknown): boolean;
58
+ /**
59
+ * Checks if the event is an input required task status update event.
60
+ */
61
+ export declare function isInputRequiredTaskStatusUpdateEvent(event: unknown): boolean;
62
+ /**
63
+ * Gets the error message from a failed task status update event.
64
+ */
65
+ export declare function getFailedTaskStatusUpdateEventError(event: TaskStatusUpdateEvent | Task): string | undefined;
66
+ /**
67
+ * Creates a task submitted event.
68
+ */
69
+ export declare function createTaskSubmittedEvent({ taskId, contextId, message, metadata, }: {
70
+ taskId: string;
71
+ contextId: string;
72
+ message: Message;
73
+ metadata?: Record<string, unknown>;
74
+ }): TaskStatusUpdateEvent;
75
+ /**
76
+ * Creates a task with submitted status.
77
+ */
78
+ export declare function createTask({ contextId, message, taskId, metadata, }: {
79
+ taskId: string;
80
+ contextId: string;
81
+ message: Message;
82
+ metadata?: Record<string, unknown>;
83
+ }): Task;
84
+ /**
85
+ * Creates a task working event.
86
+ */
87
+ export declare function createTaskWorkingEvent({ taskId, contextId, message, metadata, }: {
88
+ taskId: string;
89
+ contextId: string;
90
+ message?: Message;
91
+ metadata?: Record<string, unknown>;
92
+ }): TaskStatusUpdateEvent;
93
+ /**
94
+ * Creates a task completed event.
95
+ */
96
+ export declare function createTaskCompletedEvent({ taskId, contextId, metadata, }: {
97
+ taskId: string;
98
+ contextId: string;
99
+ metadata?: Record<string, unknown>;
100
+ }): TaskStatusUpdateEvent;
101
+ /**
102
+ * Creates an artifact update event.
103
+ */
104
+ export declare function createTaskArtifactUpdateEvent({ taskId, contextId, artifactId, parts, metadata, append, lastChunk, }: {
105
+ taskId: string;
106
+ contextId: string;
107
+ artifactId?: string;
108
+ parts?: A2APart[];
109
+ metadata?: Record<string, unknown>;
110
+ append?: boolean;
111
+ lastChunk?: boolean;
112
+ }): TaskArtifactUpdateEvent;
113
+ /**
114
+ * Creates an error message for task execution failure.
115
+ */
116
+ export declare function createTaskFailedEvent({ taskId, contextId, error, metadata, }: {
117
+ taskId: string;
118
+ contextId: string;
119
+ error: Error;
120
+ metadata?: Record<string, unknown>;
121
+ }): TaskStatusUpdateEvent;
122
+ /**
123
+ * Creates an input required event.
124
+ */
125
+ export declare function createTaskInputRequiredEvent({ taskId, contextId, parts, metadata, }: {
126
+ taskId: string;
127
+ contextId: string;
128
+ parts: A2APart[];
129
+ metadata?: Record<string, unknown>;
130
+ }): TaskStatusUpdateEvent;
131
+ /**
132
+ * Creates an error message for missing input for a function call.
133
+ */
134
+ export declare function createInputMissingErrorEvent({ taskId, contextId, parts, metadata, }: {
135
+ parts: A2APart[];
136
+ taskId: string;
137
+ contextId: string;
138
+ metadata?: Record<string, unknown>;
139
+ }): TaskStatusUpdateEvent;
@@ -0,0 +1,63 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { AGENT_CARD_PATH, AgentCard, Message, MessageSendConfiguration, MessageSendParams, Task, TaskArtifactUpdateEvent, TaskStatusUpdateEvent } from '@a2a-js/sdk';
7
+ import { ClientFactory } from '@a2a-js/sdk/client';
8
+ import { BaseAgent, BaseAgentConfig } from '../agents/base_agent.js';
9
+ import { InvocationContext } from '../agents/invocation_context.js';
10
+ import { Event as AdkEvent } from '../events/event.js';
11
+ export { AGENT_CARD_PATH };
12
+ /**
13
+ * Type alias for A2A stream event data.
14
+ */
15
+ export type A2AStreamEventData = Message | Task | TaskStatusUpdateEvent | TaskArtifactUpdateEvent;
16
+ /**
17
+ * Callback called before sending a request to the remote agent.
18
+ * Allows modifying the request parameters.
19
+ */
20
+ export type BeforeA2ARequestCallback = (ctx: InvocationContext, params: MessageSendParams) => Promise<void> | void;
21
+ /**
22
+ * Callback called after receiving a response from the remote agent.
23
+ * Allows inspecting or modifying the response.
24
+ */
25
+ export type AfterA2ARequestCallback = (ctx: InvocationContext, resp: A2AStreamEventData) => Promise<void> | void;
26
+ /**
27
+ * Configuration for the A2ARemoteAgent.
28
+ */
29
+ export interface RemoteA2AAgentConfig extends BaseAgentConfig {
30
+ /**
31
+ * Loaded AgentCard or URL to AgentCard
32
+ */
33
+ agentCard: AgentCard | string;
34
+ /**
35
+ * Optional ClientFactory for creating the A2A Client.
36
+ */
37
+ clientFactory?: ClientFactory;
38
+ /**
39
+ * Optional default configuration for sending messages.
40
+ */
41
+ messageSendConfig?: MessageSendConfiguration;
42
+ /**
43
+ * Callbacks run before the remote request is sent.
44
+ */
45
+ beforeRequestCallbacks?: BeforeA2ARequestCallback[];
46
+ /**
47
+ * Callbacks run after receiving a response chunk or event, before conversion.
48
+ */
49
+ afterRequestCallbacks?: AfterA2ARequestCallback[];
50
+ }
51
+ /**
52
+ * RemoteA2AAgent delegates execution to a remote agent using the A2A protocol.
53
+ */
54
+ export declare class RemoteA2AAgent extends BaseAgent {
55
+ private readonly a2aConfig;
56
+ private client?;
57
+ private card?;
58
+ private isInitialized;
59
+ constructor(a2aConfig: RemoteA2AAgentConfig);
60
+ private init;
61
+ protected runAsyncImpl(context: InvocationContext): AsyncGenerator<AdkEvent, void, void>;
62
+ protected runLiveImpl(_context: InvocationContext): AsyncGenerator<AdkEvent, void, void>;
63
+ }
@@ -0,0 +1,31 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { MessageSendParams } from '@a2a-js/sdk';
7
+ import { InvocationContext } from '../agents/invocation_context.js';
8
+ import { Event as AdkEvent } from '../events/event.js';
9
+ import { A2AEvent } from './a2a_event.js';
10
+ /**
11
+ * Processes streams of A2A events and aggregates partials for emissions.
12
+ */
13
+ export declare class A2ARemoteAgentRunProcessor {
14
+ private readonly request?;
15
+ private aggregations;
16
+ private aggregationOrder;
17
+ constructor(request?: MessageSendParams | undefined);
18
+ /**
19
+ * aggregatePartial stores contents of partial events to emit them with the terminal event.
20
+ * It can return multiple events to emit instead of just the provided one.
21
+ */
22
+ aggregatePartial(context: InvocationContext, a2aEvent: A2AEvent, adkEvent: AdkEvent): AdkEvent[];
23
+ private removeAggregation;
24
+ private updateAggregation;
25
+ private buildNonPartialAggregation;
26
+ private promoteTextBlocksToParts;
27
+ /**
28
+ * Adds request and response metadata to the event.
29
+ */
30
+ updateCustomMetadata(event: AdkEvent, response?: A2AEvent): void;
31
+ }
@@ -0,0 +1,38 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { Part as A2APart } from '@a2a-js/sdk';
7
+ import { InvocationContext } from '../agents/invocation_context.js';
8
+ import { Event as AdkEvent } from '../events/event.js';
9
+ import { Session } from '../sessions/session.js';
10
+ export interface UserFunctionCall {
11
+ response: AdkEvent;
12
+ taskId: string;
13
+ contextId: string;
14
+ }
15
+ /**
16
+ * Returns a UserFunctionCall when the event at index has a FunctionResponse.
17
+ */
18
+ export declare function getUserFunctionCallAt(session: Session, index: number): UserFunctionCall | undefined;
19
+ /**
20
+ * Checks if an event contains a function call with the given ID.
21
+ */
22
+ export declare function isFunctionCallEvent(event: AdkEvent, callId: string): boolean;
23
+ /**
24
+ * Finds the first part with a FunctionResponse and returns the call ID.
25
+ */
26
+ export declare function getFunctionResponseCallId(event: AdkEvent): string | undefined;
27
+ /**
28
+ * Returns content parts for all events not present in the remote session
29
+ * and a2a contextId if found in a remote agent event metadata.
30
+ */
31
+ export declare function toMissingRemoteSessionParts(ctx: InvocationContext, session: Session): {
32
+ parts: A2APart[];
33
+ contextId?: string;
34
+ };
35
+ /**
36
+ * Wraps an agent event as a user message for context.
37
+ */
38
+ export declare function presentAsUserMessage(ctx: InvocationContext, agentEvent: AdkEvent): AdkEvent;
@@ -0,0 +1,23 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { AgentCard, AgentInterface, AgentSkill } from '@a2a-js/sdk';
7
+ import { BaseAgent } from '../agents/base_agent.js';
8
+ /**
9
+ * Resolves the AgentCard from the provided source.
10
+ */
11
+ export declare function resolveAgentCard(agentCard: AgentCard | string): Promise<AgentCard>;
12
+ /**
13
+ * Converts an ADK agent to an A2A AgentCard.
14
+ */
15
+ export declare function getA2AAgentCard(agent: BaseAgent, transports: AgentInterface[]): Promise<AgentCard>;
16
+ /**
17
+ * Builds a list of AgentSkills based on agent descriptions and types.
18
+ * This information can be used in AgentCard to help clients understand agent capabilities.
19
+ *
20
+ * @param agent The agent to build skills for.
21
+ * @returns A promise resolving to a list of AgentSkills.
22
+ */
23
+ export declare function buildAgentSkills(agent: BaseAgent): Promise<AgentSkill[]>;
@@ -0,0 +1,52 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { TaskArtifactUpdateEvent, TaskStatusUpdateEvent } from '@a2a-js/sdk';
7
+ import { AgentExecutor, ExecutionEventBus, RequestContext } from '@a2a-js/sdk/server';
8
+ import { RunConfig } from '../agents/run_config.js';
9
+ import { Event as AdkEvent } from '../events/event.js';
10
+ import { Runner, RunnerConfig } from '../runner/runner.js';
11
+ import { ExecutorContext } from './executor_context.js';
12
+ /**
13
+ * Represents a runner or a configuration for a runner.
14
+ */
15
+ export type RunnerOrRunnerConfig = Runner | RunnerConfig | (() => Runner | RunnerConfig) | (() => Promise<Runner | RunnerConfig>);
16
+ /**
17
+ * Callback called before execution starts.
18
+ */
19
+ export type BeforeExecuteCallback = (reqCtx: RequestContext) => Promise<void>;
20
+ /**
21
+ * Callback called after an ADK event is converted to an A2A event.
22
+ */
23
+ export type AfterEventCallback = (ctx: ExecutorContext, adkEvent: AdkEvent, a2aEvent?: TaskArtifactUpdateEvent) => Promise<void>;
24
+ /**
25
+ * Callback called after execution resolved into a completed or failed task.
26
+ */
27
+ export type AfterExecuteCallback = (ctx: ExecutorContext, finalA2aEvent: TaskStatusUpdateEvent, err?: Error) => Promise<void>;
28
+ /**
29
+ * Configuration for the Executor.
30
+ */
31
+ export interface AgentExecutorConfig {
32
+ runner: RunnerOrRunnerConfig;
33
+ runConfig?: RunConfig;
34
+ beforeExecuteCallback?: BeforeExecuteCallback;
35
+ afterEventCallback?: AfterEventCallback;
36
+ afterExecuteCallback?: AfterExecuteCallback;
37
+ }
38
+ /**
39
+ * AgentExecutor invokes an ADK agent and translates session events to A2A events.
40
+ */
41
+ export declare class A2AAgentExecutor implements AgentExecutor {
42
+ private readonly config;
43
+ private agentPartialArtifactIdsMap;
44
+ constructor(config: AgentExecutorConfig);
45
+ execute(ctx: RequestContext, eventBus: ExecutionEventBus): Promise<void>;
46
+ cancelTask(_taskId: string): Promise<void>;
47
+ private convertAdkEventToA2AEvent;
48
+ /**
49
+ * Writes the final status event to the queue.
50
+ */
51
+ private publishFinalTaskStatus;
52
+ }
@@ -0,0 +1,45 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { AgentCard } from '@a2a-js/sdk';
7
+ import express from 'express';
8
+ import { BaseAgent } from '../agents/base_agent.js';
9
+ import { BaseArtifactService } from '../artifacts/base_artifact_service.js';
10
+ import { BaseMemoryService } from '../memory/base_memory_service.js';
11
+ import { Runner } from '../runner/runner.js';
12
+ import { BaseSessionService } from '../sessions/base_session_service.js';
13
+ /**
14
+ * Options for the `toA2a` function.
15
+ */
16
+ export interface ToA2aOptions {
17
+ /** The host for the A2A RPC URL (default: "localhost") */
18
+ host?: string;
19
+ /** The port for the A2A RPC URL (default: 8000) */
20
+ port?: number;
21
+ /** The protocol for the A2A RPC URL (default: "http") */
22
+ protocol?: string;
23
+ /** The base path for the A2A RPC URL (default: "a2a") */
24
+ basePath?: string;
25
+ /** Optional pre-built AgentCard object or path to agent card JSON */
26
+ agentCard?: AgentCard | string;
27
+ /** Optional pre-built Runner object */
28
+ runner?: Runner;
29
+ /** Optional session service */
30
+ sessionService?: BaseSessionService;
31
+ /** Optional memory service */
32
+ memoryService?: BaseMemoryService;
33
+ /** Optional artifact service */
34
+ artifactService?: BaseArtifactService;
35
+ /** Optional existing express application */
36
+ app?: express.Application;
37
+ }
38
+ /**
39
+ * Converts an ADK agent to an Express application with A2A handlers.
40
+ *
41
+ * @param agent The ADK agent to convert
42
+ * @param options Configuration options
43
+ * @returns An Express application
44
+ */
45
+ export declare function toA2a(agent: BaseAgent, options?: ToA2aOptions): Promise<express.Application>;
@@ -0,0 +1,20 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { Message } from '@a2a-js/sdk';
7
+ import { Event as AdkEvent } from '../events/event.js';
8
+ import { A2AEvent } from './a2a_event.js';
9
+ /**
10
+ * Converts a session Event to an A2A Message.
11
+ */
12
+ export declare function toA2AMessage(event: AdkEvent, { appName, userId, sessionId, }: {
13
+ appName: string;
14
+ userId: string;
15
+ sessionId: string;
16
+ }): Message;
17
+ /**
18
+ * Converts an A2A Event to a Session Event.
19
+ */
20
+ export declare function toAdkEvent(event: A2AEvent, invocationId: string, agentName: string): AdkEvent | undefined;
@@ -0,0 +1,24 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { Task, TaskStatusUpdateEvent } from '@a2a-js/sdk';
7
+ import { Content as GenAIContent } from '@google/genai';
8
+ import { Event as AdkEvent } from '../events/event.js';
9
+ import { ExecutorContext } from './executor_context.js';
10
+ /**
11
+ * Processes a list of ADK events and determines the final task status update event.
12
+ * If any of the ADK events contain an error, a TaskFailedEvent is returned immediately.
13
+ * If there are no errors, it checks for any input required events. If found, it returns a TaskInputRequiredEvent.
14
+ * If there are no input required events, it returns a TaskCompletedEvent.
15
+ *
16
+ * @param adkEvents - The list of ADK events to process.
17
+ * @param context - The executor context containing relevant information for processing the events.
18
+ * @returns A TaskStatusUpdateEvent representing the final status of the task after processing the ADK events.
19
+ */
20
+ export declare function getFinalTaskStatusUpdate(adkEvents: AdkEvent[], context: ExecutorContext): TaskStatusUpdateEvent;
21
+ /**
22
+ * Returns input required task status update events if the provided user request does not contain responses for all function calls in the task status.
23
+ */
24
+ export declare function getTaskInputRequiredEvent(task: Task, genAIContent: GenAIContent): TaskStatusUpdateEvent | undefined;