@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,21 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { FunctionDeclaration } from '@google/genai';
7
+ import { BaseTool, RunAsyncToolRequest, ToolProcessLlmRequest } from './base_tool.js';
8
+ /**
9
+ * A tool that loads the artifacts and adds them to the session.
10
+ */
11
+ export declare class LoadArtifactsTool extends BaseTool {
12
+ constructor();
13
+ _getDeclaration(): FunctionDeclaration | undefined;
14
+ runAsync({ args }: RunAsyncToolRequest): Promise<unknown>;
15
+ processLlmRequest(request: ToolProcessLlmRequest): Promise<void>;
16
+ private appendArtifactsToLlmRequest;
17
+ }
18
+ /**
19
+ * A global instance of {@link LoadArtifactsTool}.
20
+ */
21
+ export declare const LOAD_ARTIFACTS: LoadArtifactsTool;
@@ -0,0 +1,22 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { FunctionDeclaration } from '@google/genai';
7
+ import { BaseTool, RunAsyncToolRequest, ToolProcessLlmRequest } from './base_tool.js';
8
+ /**
9
+ * A tool that loads the memory for the current user.
10
+ *
11
+ * NOTE: Currently this tool only uses text part from the memory.
12
+ */
13
+ export declare class LoadMemoryTool extends BaseTool {
14
+ constructor();
15
+ _getDeclaration(): FunctionDeclaration | undefined;
16
+ runAsync({ args, toolContext, }: RunAsyncToolRequest): Promise<unknown>;
17
+ processLlmRequest(request: ToolProcessLlmRequest): Promise<void>;
18
+ }
19
+ /**
20
+ * A global instance of {@link LoadMemoryTool}.
21
+ */
22
+ export declare const LOAD_MEMORY: LoadMemoryTool;
@@ -32,7 +32,7 @@ import { MCPConnectionParams } from './mcp_session_manager.js';
32
32
  */
33
33
  export declare class MCPToolset extends BaseToolset {
34
34
  private readonly mcpSessionManager;
35
- constructor(connectionParams: MCPConnectionParams, toolFilter?: ToolPredicate | string[]);
35
+ constructor(connectionParams: MCPConnectionParams, toolFilter?: ToolPredicate | string[], prefix?: string);
36
36
  getTools(): Promise<BaseTool[]>;
37
37
  close(): Promise<void>;
38
38
  }
@@ -0,0 +1,23 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { BaseTool, RunAsyncToolRequest, ToolProcessLlmRequest } from './base_tool.js';
7
+ /**
8
+ * A tool that preloads the memory for the current user.
9
+ *
10
+ * This tool will be automatically executed for each llm_request, and it won't be
11
+ * called by the model.
12
+ *
13
+ * NOTE: Currently this tool only uses text part from the memory.
14
+ */
15
+ export declare class PreloadMemoryTool extends BaseTool {
16
+ constructor();
17
+ runAsync({ args, toolContext, }: RunAsyncToolRequest): Promise<unknown>;
18
+ processLlmRequest(request: ToolProcessLlmRequest): Promise<void>;
19
+ }
20
+ /**
21
+ * A global instance of {@link PreloadMemoryTool}.
22
+ */
23
+ export declare const PRELOAD_MEMORY: PreloadMemoryTool;
@@ -1,8 +1,3 @@
1
- /**
2
- * @license
3
- * Copyright 2025 Google LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
1
  /** Log levels for the logger. */
7
2
  export declare enum LogLevel {
8
3
  DEBUG = 0,
@@ -19,11 +14,8 @@ export interface Logger {
19
14
  info(...args: unknown[]): void;
20
15
  warn(...args: unknown[]): void;
21
16
  error(...args: unknown[]): void;
17
+ setLogLevel(level: LogLevel): void;
22
18
  }
23
- /**
24
- * Sets the log level for the logger.
25
- */
26
- export declare function setLogLevel(level: LogLevel): void;
27
19
  /**
28
20
  * Sets a custom logger for ADK, or null to disable logging.
29
21
  */
@@ -36,6 +28,10 @@ export declare function getLogger(): Logger;
36
28
  * Resets the logger to the default SimpleLogger.
37
29
  */
38
30
  export declare function resetLogger(): void;
31
+ /**
32
+ * Sets the log level for the logger.
33
+ */
34
+ export declare function setLogLevel(level: LogLevel): void;
39
35
  /**
40
36
  * The logger instance for ADK.
41
37
  */
@@ -3,4 +3,4 @@
3
3
  * Copyright 2025 Google LLC
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- export declare const version = "0.4.0";
6
+ export declare const version = "0.6.0";
@@ -0,0 +1,269 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { randomUUID } from "../utils/env_aware_utils.js";
7
+ var MessageRole = /* @__PURE__ */ ((MessageRole2) => {
8
+ MessageRole2["USER"] = "user";
9
+ MessageRole2["AGENT"] = "agent";
10
+ return MessageRole2;
11
+ })(MessageRole || {});
12
+ var TaskState = /* @__PURE__ */ ((TaskState2) => {
13
+ TaskState2["SUBMITTED"] = "submitted";
14
+ TaskState2["WORKING"] = "working";
15
+ TaskState2["COMPLETED"] = "completed";
16
+ TaskState2["FAILED"] = "failed";
17
+ TaskState2["CANCELED"] = "canceled";
18
+ TaskState2["REJECTED"] = "rejected";
19
+ TaskState2["INPUT_REQUIRED"] = "input-required";
20
+ return TaskState2;
21
+ })(TaskState || {});
22
+ function isTaskStatusUpdateEvent(event) {
23
+ return (event == null ? void 0 : event.kind) === "status-update";
24
+ }
25
+ function isTaskArtifactUpdateEvent(event) {
26
+ return (event == null ? void 0 : event.kind) === "artifact-update";
27
+ }
28
+ function isMessage(event) {
29
+ return (event == null ? void 0 : event.kind) === "message";
30
+ }
31
+ function isTask(event) {
32
+ return (event == null ? void 0 : event.kind) === "task";
33
+ }
34
+ function getEventMetadata(event) {
35
+ if (isTaskArtifactUpdateEvent(event)) {
36
+ return event.artifact.metadata || {};
37
+ }
38
+ if (isTaskStatusUpdateEvent(event) || isTask(event) || isMessage(event)) {
39
+ return event.metadata || {};
40
+ }
41
+ return {};
42
+ }
43
+ function isFailedTaskStatusUpdateEvent(event) {
44
+ return (isTaskStatusUpdateEvent(event) || isTask(event)) && event.status.state === "failed" /* FAILED */;
45
+ }
46
+ function isTerminalTaskStatusUpdateEvent(event) {
47
+ return (isTaskStatusUpdateEvent(event) || isTask(event)) && [
48
+ "completed" /* COMPLETED */,
49
+ "failed" /* FAILED */,
50
+ "canceled" /* CANCELED */,
51
+ "rejected" /* REJECTED */
52
+ ].includes(event.status.state);
53
+ }
54
+ function isInputRequiredTaskStatusUpdateEvent(event) {
55
+ return (isTaskStatusUpdateEvent(event) || isTask(event)) && event.status.state === "input-required" /* INPUT_REQUIRED */;
56
+ }
57
+ function getFailedTaskStatusUpdateEventError(event) {
58
+ var _a;
59
+ if (!isFailedTaskStatusUpdateEvent(event)) {
60
+ return void 0;
61
+ }
62
+ const parts = ((_a = event.status.message) == null ? void 0 : _a.parts) || [];
63
+ if (parts.length === 0) {
64
+ return void 0;
65
+ }
66
+ if (parts[0].kind !== "text") {
67
+ return void 0;
68
+ }
69
+ return parts[0].text;
70
+ }
71
+ function createTaskSubmittedEvent({
72
+ taskId,
73
+ contextId,
74
+ message,
75
+ metadata
76
+ }) {
77
+ return {
78
+ kind: "status-update",
79
+ taskId,
80
+ contextId,
81
+ final: false,
82
+ status: {
83
+ state: "submitted" /* SUBMITTED */,
84
+ message,
85
+ timestamp: (/* @__PURE__ */ new Date()).toISOString()
86
+ },
87
+ metadata
88
+ };
89
+ }
90
+ function createTask({
91
+ contextId,
92
+ message,
93
+ taskId,
94
+ metadata
95
+ }) {
96
+ return {
97
+ kind: "task",
98
+ id: taskId || randomUUID(),
99
+ contextId,
100
+ history: [message],
101
+ status: {
102
+ state: "submitted" /* SUBMITTED */,
103
+ timestamp: (/* @__PURE__ */ new Date()).toISOString()
104
+ },
105
+ metadata
106
+ };
107
+ }
108
+ function createTaskWorkingEvent({
109
+ taskId,
110
+ contextId,
111
+ message,
112
+ metadata
113
+ }) {
114
+ return {
115
+ kind: "status-update",
116
+ taskId,
117
+ contextId,
118
+ final: false,
119
+ status: {
120
+ state: "working" /* WORKING */,
121
+ message,
122
+ timestamp: (/* @__PURE__ */ new Date()).toISOString()
123
+ },
124
+ metadata
125
+ };
126
+ }
127
+ function createTaskCompletedEvent({
128
+ taskId,
129
+ contextId,
130
+ metadata
131
+ }) {
132
+ return {
133
+ kind: "status-update",
134
+ taskId,
135
+ contextId,
136
+ final: true,
137
+ status: {
138
+ state: "completed" /* COMPLETED */,
139
+ timestamp: (/* @__PURE__ */ new Date()).toISOString()
140
+ },
141
+ metadata
142
+ };
143
+ }
144
+ function createTaskArtifactUpdateEvent({
145
+ taskId,
146
+ contextId,
147
+ artifactId,
148
+ parts = [],
149
+ metadata,
150
+ append,
151
+ lastChunk
152
+ }) {
153
+ return {
154
+ kind: "artifact-update",
155
+ taskId,
156
+ contextId,
157
+ append,
158
+ lastChunk,
159
+ artifact: {
160
+ artifactId: artifactId || randomUUID(),
161
+ parts
162
+ },
163
+ metadata
164
+ };
165
+ }
166
+ function createTaskFailedEvent({
167
+ taskId,
168
+ contextId,
169
+ error,
170
+ metadata
171
+ }) {
172
+ return {
173
+ kind: "status-update",
174
+ taskId,
175
+ contextId,
176
+ final: true,
177
+ status: {
178
+ state: "failed" /* FAILED */,
179
+ message: {
180
+ kind: "message",
181
+ messageId: randomUUID(),
182
+ role: "agent",
183
+ taskId,
184
+ contextId,
185
+ parts: [
186
+ {
187
+ kind: "text",
188
+ text: error.message
189
+ }
190
+ ]
191
+ },
192
+ timestamp: (/* @__PURE__ */ new Date()).toISOString()
193
+ },
194
+ metadata
195
+ };
196
+ }
197
+ function createTaskInputRequiredEvent({
198
+ taskId,
199
+ contextId,
200
+ parts,
201
+ metadata
202
+ }) {
203
+ return {
204
+ kind: "status-update",
205
+ taskId,
206
+ contextId,
207
+ final: true,
208
+ status: {
209
+ state: "input-required" /* INPUT_REQUIRED */,
210
+ message: {
211
+ kind: "message",
212
+ messageId: randomUUID(),
213
+ role: "agent",
214
+ taskId,
215
+ contextId,
216
+ parts
217
+ },
218
+ timestamp: (/* @__PURE__ */ new Date()).toISOString()
219
+ },
220
+ metadata
221
+ };
222
+ }
223
+ function createInputMissingErrorEvent({
224
+ taskId,
225
+ contextId,
226
+ parts,
227
+ metadata
228
+ }) {
229
+ return {
230
+ kind: "status-update",
231
+ taskId,
232
+ contextId,
233
+ final: true,
234
+ status: {
235
+ state: "input-required" /* INPUT_REQUIRED */,
236
+ message: {
237
+ kind: "message",
238
+ messageId: randomUUID(),
239
+ role: "agent",
240
+ taskId,
241
+ contextId,
242
+ parts
243
+ },
244
+ timestamp: (/* @__PURE__ */ new Date()).toISOString()
245
+ },
246
+ metadata
247
+ };
248
+ }
249
+ export {
250
+ MessageRole,
251
+ TaskState,
252
+ createInputMissingErrorEvent,
253
+ createTask,
254
+ createTaskArtifactUpdateEvent,
255
+ createTaskCompletedEvent,
256
+ createTaskFailedEvent,
257
+ createTaskInputRequiredEvent,
258
+ createTaskSubmittedEvent,
259
+ createTaskWorkingEvent,
260
+ getEventMetadata,
261
+ getFailedTaskStatusUpdateEventError,
262
+ isFailedTaskStatusUpdateEvent,
263
+ isInputRequiredTaskStatusUpdateEvent,
264
+ isMessage,
265
+ isTask,
266
+ isTaskArtifactUpdateEvent,
267
+ isTaskStatusUpdateEvent,
268
+ isTerminalTaskStatusUpdateEvent
269
+ };
@@ -0,0 +1,193 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
3
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
4
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
5
+ var __knownSymbol = (name, symbol) => (symbol = Symbol[name]) ? symbol : Symbol.for("Symbol." + name);
6
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
7
+ var __spreadValues = (a, b) => {
8
+ for (var prop in b || (b = {}))
9
+ if (__hasOwnProp.call(b, prop))
10
+ __defNormalProp(a, prop, b[prop]);
11
+ if (__getOwnPropSymbols)
12
+ for (var prop of __getOwnPropSymbols(b)) {
13
+ if (__propIsEnum.call(b, prop))
14
+ __defNormalProp(a, prop, b[prop]);
15
+ }
16
+ return a;
17
+ };
18
+ var __await = function(promise, isYieldStar) {
19
+ this[0] = promise;
20
+ this[1] = isYieldStar;
21
+ };
22
+ var __asyncGenerator = (__this, __arguments, generator) => {
23
+ var resume = (k, v, yes, no) => {
24
+ try {
25
+ var x = generator[k](v), isAwait = (v = x.value) instanceof __await, done = x.done;
26
+ Promise.resolve(isAwait ? v[0] : v).then((y) => isAwait ? resume(k === "return" ? k : "next", v[1] ? { done: y.done, value: y.value } : y, yes, no) : yes({ value: y, done })).catch((e) => resume("throw", e, yes, no));
27
+ } catch (e) {
28
+ no(e);
29
+ }
30
+ }, method = (k) => it[k] = (x) => new Promise((yes, no) => resume(k, x, yes, no)), it = {};
31
+ return generator = generator.apply(__this, __arguments), it[__knownSymbol("asyncIterator")] = () => it, method("next"), method("throw"), method("return"), it;
32
+ };
33
+ var __forAwait = (obj, it, method) => (it = obj[__knownSymbol("asyncIterator")]) ? it.call(obj) : (obj = obj[__knownSymbol("iterator")](), it = {}, method = (key, fn) => (fn = obj[key]) && (it[key] = (arg) => new Promise((yes, no, done) => (arg = fn.call(obj, arg), done = arg.done, Promise.resolve(arg.value).then((value) => yes({ value, done }), no)))), method("next"), method("return"), it);
34
+ /**
35
+ * @license
36
+ * Copyright 2026 Google LLC
37
+ * SPDX-License-Identifier: Apache-2.0
38
+ */
39
+ import {
40
+ AGENT_CARD_PATH
41
+ } from "@a2a-js/sdk";
42
+ import { ClientFactory } from "@a2a-js/sdk/client";
43
+ import { BaseAgent } from "../agents/base_agent.js";
44
+ import { createEvent } from "../events/event.js";
45
+ import { randomUUID } from "../utils/env_aware_utils.js";
46
+ import { logger } from "../utils/logger.js";
47
+ import { MessageRole } from "./a2a_event.js";
48
+ import { A2ARemoteAgentRunProcessor } from "./a2a_remote_agent_run_processor.js";
49
+ import {
50
+ getUserFunctionCallAt,
51
+ toMissingRemoteSessionParts
52
+ } from "./a2a_remote_agent_utils.js";
53
+ import { resolveAgentCard } from "./agent_card.js";
54
+ import { toAdkEvent } from "./event_converter_utils.js";
55
+ import { getA2ASessionMetadata } from "./metadata_converter_utils.js";
56
+ import { toA2AParts } from "./part_converter_utils.js";
57
+ class RemoteA2AAgent extends BaseAgent {
58
+ constructor(a2aConfig) {
59
+ super(a2aConfig);
60
+ this.a2aConfig = a2aConfig;
61
+ this.isInitialized = false;
62
+ if (!a2aConfig.agentCard) {
63
+ throw new Error("AgentCard must be provided");
64
+ }
65
+ }
66
+ async init() {
67
+ if (this.isInitialized) {
68
+ return;
69
+ }
70
+ this.card = await resolveAgentCard(this.a2aConfig.agentCard);
71
+ const factory = this.a2aConfig.clientFactory || new ClientFactory();
72
+ this.client = await factory.createFromAgentCard(this.card);
73
+ this.isInitialized = true;
74
+ }
75
+ runAsyncImpl(context) {
76
+ return __asyncGenerator(this, null, function* () {
77
+ var _a, _b;
78
+ yield new __await(this.init());
79
+ try {
80
+ const events = context.session.events;
81
+ if (events.length === 0) {
82
+ throw new Error("No events in session to send");
83
+ }
84
+ const userFnCall = getUserFunctionCallAt(
85
+ context.session,
86
+ events.length - 1
87
+ );
88
+ let parts;
89
+ let taskId = void 0;
90
+ let contextId = void 0;
91
+ if (userFnCall) {
92
+ const event = userFnCall.response;
93
+ parts = toA2AParts(
94
+ ((_a = event.content) == null ? void 0 : _a.parts) || [],
95
+ event.longRunningToolIds
96
+ );
97
+ taskId = userFnCall.taskId;
98
+ contextId = userFnCall.contextId;
99
+ } else {
100
+ const missing = toMissingRemoteSessionParts(context, context.session);
101
+ parts = missing.parts;
102
+ contextId = missing.contextId;
103
+ }
104
+ const message = {
105
+ kind: "message",
106
+ messageId: randomUUID(),
107
+ role: MessageRole.USER,
108
+ parts,
109
+ metadata: __spreadValues({}, getA2ASessionMetadata({
110
+ appName: context.session.appName,
111
+ userId: context.session.userId,
112
+ sessionId: context.session.id
113
+ }))
114
+ };
115
+ if (taskId) message.taskId = taskId;
116
+ if (contextId) message.contextId = contextId;
117
+ const params = {
118
+ message,
119
+ configuration: this.a2aConfig.messageSendConfig
120
+ };
121
+ const processor = new A2ARemoteAgentRunProcessor(params);
122
+ if (this.a2aConfig.beforeRequestCallbacks) {
123
+ for (const callback of this.a2aConfig.beforeRequestCallbacks) {
124
+ yield new __await(callback(context, params));
125
+ }
126
+ }
127
+ const useStreaming = ((_b = this.card.capabilities) == null ? void 0 : _b.streaming) !== false;
128
+ if (useStreaming) {
129
+ try {
130
+ for (var iter = __forAwait(this.client.sendMessageStream(params)), more, temp, error; more = !(temp = yield new __await(iter.next())).done; more = false) {
131
+ const chunk = temp.value;
132
+ if (this.a2aConfig.afterRequestCallbacks) {
133
+ for (const callback of this.a2aConfig.afterRequestCallbacks) {
134
+ yield new __await(callback(context, chunk));
135
+ }
136
+ }
137
+ const adkEvent = toAdkEvent(chunk, context.invocationId, this.name);
138
+ if (!adkEvent) {
139
+ continue;
140
+ }
141
+ processor.updateCustomMetadata(adkEvent, chunk);
142
+ const eventsToEmit = processor.aggregatePartial(
143
+ context,
144
+ chunk,
145
+ adkEvent
146
+ );
147
+ for (const ev of eventsToEmit) {
148
+ yield ev;
149
+ }
150
+ }
151
+ } catch (temp) {
152
+ error = [temp];
153
+ } finally {
154
+ try {
155
+ more && (temp = iter.return) && (yield new __await(temp.call(iter)));
156
+ } finally {
157
+ if (error)
158
+ throw error[0];
159
+ }
160
+ }
161
+ } else {
162
+ const result = yield new __await(this.client.sendMessage(params));
163
+ if (this.a2aConfig.afterRequestCallbacks) {
164
+ for (const callback of this.a2aConfig.afterRequestCallbacks) {
165
+ yield new __await(callback(context, result));
166
+ }
167
+ }
168
+ const adkEvent = toAdkEvent(result, context.invocationId, this.name);
169
+ if (adkEvent) {
170
+ processor.updateCustomMetadata(adkEvent, result);
171
+ yield adkEvent;
172
+ }
173
+ }
174
+ } catch (e) {
175
+ const error2 = e;
176
+ logger.error("A2ARemoteAgent ".concat(this.name, " failed:"), error2);
177
+ yield createEvent({
178
+ author: this.name,
179
+ invocationId: context.invocationId,
180
+ errorMessage: error2.message,
181
+ turnComplete: true
182
+ });
183
+ }
184
+ });
185
+ }
186
+ runLiveImpl(_context) {
187
+ throw new Error("Live mode is not supported in A2ARemoteAgent yet.");
188
+ }
189
+ }
190
+ export {
191
+ AGENT_CARD_PATH,
192
+ RemoteA2AAgent
193
+ };