@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
package/README.md CHANGED
@@ -1,3 +1,3 @@
1
1
  # @google/adk
2
2
 
3
- Please see README for adk-js at https://github.com/google/adk-js
3
+ Please see README for adk-js at https://github.com/google/adk-js
@@ -0,0 +1,317 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+
7
+ "use strict";
8
+ var __defProp = Object.defineProperty;
9
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
10
+ var __getOwnPropNames = Object.getOwnPropertyNames;
11
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
12
+ var __export = (target, all) => {
13
+ for (var name in all)
14
+ __defProp(target, name, { get: all[name], enumerable: true });
15
+ };
16
+ var __copyProps = (to, from, except, desc) => {
17
+ if (from && typeof from === "object" || typeof from === "function") {
18
+ for (let key of __getOwnPropNames(from))
19
+ if (!__hasOwnProp.call(to, key) && key !== except)
20
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
21
+ }
22
+ return to;
23
+ };
24
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
25
+ var a2a_event_exports = {};
26
+ __export(a2a_event_exports, {
27
+ MessageRole: () => MessageRole,
28
+ TaskState: () => TaskState,
29
+ createInputMissingErrorEvent: () => createInputMissingErrorEvent,
30
+ createTask: () => createTask,
31
+ createTaskArtifactUpdateEvent: () => createTaskArtifactUpdateEvent,
32
+ createTaskCompletedEvent: () => createTaskCompletedEvent,
33
+ createTaskFailedEvent: () => createTaskFailedEvent,
34
+ createTaskInputRequiredEvent: () => createTaskInputRequiredEvent,
35
+ createTaskSubmittedEvent: () => createTaskSubmittedEvent,
36
+ createTaskWorkingEvent: () => createTaskWorkingEvent,
37
+ getEventMetadata: () => getEventMetadata,
38
+ getFailedTaskStatusUpdateEventError: () => getFailedTaskStatusUpdateEventError,
39
+ isFailedTaskStatusUpdateEvent: () => isFailedTaskStatusUpdateEvent,
40
+ isInputRequiredTaskStatusUpdateEvent: () => isInputRequiredTaskStatusUpdateEvent,
41
+ isMessage: () => isMessage,
42
+ isTask: () => isTask,
43
+ isTaskArtifactUpdateEvent: () => isTaskArtifactUpdateEvent,
44
+ isTaskStatusUpdateEvent: () => isTaskStatusUpdateEvent,
45
+ isTerminalTaskStatusUpdateEvent: () => isTerminalTaskStatusUpdateEvent
46
+ });
47
+ module.exports = __toCommonJS(a2a_event_exports);
48
+ var import_env_aware_utils = require("../utils/env_aware_utils.js");
49
+ /**
50
+ * @license
51
+ * Copyright 2026 Google LLC
52
+ * SPDX-License-Identifier: Apache-2.0
53
+ */
54
+ var MessageRole = /* @__PURE__ */ ((MessageRole2) => {
55
+ MessageRole2["USER"] = "user";
56
+ MessageRole2["AGENT"] = "agent";
57
+ return MessageRole2;
58
+ })(MessageRole || {});
59
+ var TaskState = /* @__PURE__ */ ((TaskState2) => {
60
+ TaskState2["SUBMITTED"] = "submitted";
61
+ TaskState2["WORKING"] = "working";
62
+ TaskState2["COMPLETED"] = "completed";
63
+ TaskState2["FAILED"] = "failed";
64
+ TaskState2["CANCELED"] = "canceled";
65
+ TaskState2["REJECTED"] = "rejected";
66
+ TaskState2["INPUT_REQUIRED"] = "input-required";
67
+ return TaskState2;
68
+ })(TaskState || {});
69
+ function isTaskStatusUpdateEvent(event) {
70
+ return (event == null ? void 0 : event.kind) === "status-update";
71
+ }
72
+ function isTaskArtifactUpdateEvent(event) {
73
+ return (event == null ? void 0 : event.kind) === "artifact-update";
74
+ }
75
+ function isMessage(event) {
76
+ return (event == null ? void 0 : event.kind) === "message";
77
+ }
78
+ function isTask(event) {
79
+ return (event == null ? void 0 : event.kind) === "task";
80
+ }
81
+ function getEventMetadata(event) {
82
+ if (isTaskArtifactUpdateEvent(event)) {
83
+ return event.artifact.metadata || {};
84
+ }
85
+ if (isTaskStatusUpdateEvent(event) || isTask(event) || isMessage(event)) {
86
+ return event.metadata || {};
87
+ }
88
+ return {};
89
+ }
90
+ function isFailedTaskStatusUpdateEvent(event) {
91
+ return (isTaskStatusUpdateEvent(event) || isTask(event)) && event.status.state === "failed" /* FAILED */;
92
+ }
93
+ function isTerminalTaskStatusUpdateEvent(event) {
94
+ return (isTaskStatusUpdateEvent(event) || isTask(event)) && [
95
+ "completed" /* COMPLETED */,
96
+ "failed" /* FAILED */,
97
+ "canceled" /* CANCELED */,
98
+ "rejected" /* REJECTED */
99
+ ].includes(event.status.state);
100
+ }
101
+ function isInputRequiredTaskStatusUpdateEvent(event) {
102
+ return (isTaskStatusUpdateEvent(event) || isTask(event)) && event.status.state === "input-required" /* INPUT_REQUIRED */;
103
+ }
104
+ function getFailedTaskStatusUpdateEventError(event) {
105
+ var _a;
106
+ if (!isFailedTaskStatusUpdateEvent(event)) {
107
+ return void 0;
108
+ }
109
+ const parts = ((_a = event.status.message) == null ? void 0 : _a.parts) || [];
110
+ if (parts.length === 0) {
111
+ return void 0;
112
+ }
113
+ if (parts[0].kind !== "text") {
114
+ return void 0;
115
+ }
116
+ return parts[0].text;
117
+ }
118
+ function createTaskSubmittedEvent({
119
+ taskId,
120
+ contextId,
121
+ message,
122
+ metadata
123
+ }) {
124
+ return {
125
+ kind: "status-update",
126
+ taskId,
127
+ contextId,
128
+ final: false,
129
+ status: {
130
+ state: "submitted" /* SUBMITTED */,
131
+ message,
132
+ timestamp: (/* @__PURE__ */ new Date()).toISOString()
133
+ },
134
+ metadata
135
+ };
136
+ }
137
+ function createTask({
138
+ contextId,
139
+ message,
140
+ taskId,
141
+ metadata
142
+ }) {
143
+ return {
144
+ kind: "task",
145
+ id: taskId || (0, import_env_aware_utils.randomUUID)(),
146
+ contextId,
147
+ history: [message],
148
+ status: {
149
+ state: "submitted" /* SUBMITTED */,
150
+ timestamp: (/* @__PURE__ */ new Date()).toISOString()
151
+ },
152
+ metadata
153
+ };
154
+ }
155
+ function createTaskWorkingEvent({
156
+ taskId,
157
+ contextId,
158
+ message,
159
+ metadata
160
+ }) {
161
+ return {
162
+ kind: "status-update",
163
+ taskId,
164
+ contextId,
165
+ final: false,
166
+ status: {
167
+ state: "working" /* WORKING */,
168
+ message,
169
+ timestamp: (/* @__PURE__ */ new Date()).toISOString()
170
+ },
171
+ metadata
172
+ };
173
+ }
174
+ function createTaskCompletedEvent({
175
+ taskId,
176
+ contextId,
177
+ metadata
178
+ }) {
179
+ return {
180
+ kind: "status-update",
181
+ taskId,
182
+ contextId,
183
+ final: true,
184
+ status: {
185
+ state: "completed" /* COMPLETED */,
186
+ timestamp: (/* @__PURE__ */ new Date()).toISOString()
187
+ },
188
+ metadata
189
+ };
190
+ }
191
+ function createTaskArtifactUpdateEvent({
192
+ taskId,
193
+ contextId,
194
+ artifactId,
195
+ parts = [],
196
+ metadata,
197
+ append,
198
+ lastChunk
199
+ }) {
200
+ return {
201
+ kind: "artifact-update",
202
+ taskId,
203
+ contextId,
204
+ append,
205
+ lastChunk,
206
+ artifact: {
207
+ artifactId: artifactId || (0, import_env_aware_utils.randomUUID)(),
208
+ parts
209
+ },
210
+ metadata
211
+ };
212
+ }
213
+ function createTaskFailedEvent({
214
+ taskId,
215
+ contextId,
216
+ error,
217
+ metadata
218
+ }) {
219
+ return {
220
+ kind: "status-update",
221
+ taskId,
222
+ contextId,
223
+ final: true,
224
+ status: {
225
+ state: "failed" /* FAILED */,
226
+ message: {
227
+ kind: "message",
228
+ messageId: (0, import_env_aware_utils.randomUUID)(),
229
+ role: "agent",
230
+ taskId,
231
+ contextId,
232
+ parts: [
233
+ {
234
+ kind: "text",
235
+ text: error.message
236
+ }
237
+ ]
238
+ },
239
+ timestamp: (/* @__PURE__ */ new Date()).toISOString()
240
+ },
241
+ metadata
242
+ };
243
+ }
244
+ function createTaskInputRequiredEvent({
245
+ taskId,
246
+ contextId,
247
+ parts,
248
+ metadata
249
+ }) {
250
+ return {
251
+ kind: "status-update",
252
+ taskId,
253
+ contextId,
254
+ final: true,
255
+ status: {
256
+ state: "input-required" /* INPUT_REQUIRED */,
257
+ message: {
258
+ kind: "message",
259
+ messageId: (0, import_env_aware_utils.randomUUID)(),
260
+ role: "agent",
261
+ taskId,
262
+ contextId,
263
+ parts
264
+ },
265
+ timestamp: (/* @__PURE__ */ new Date()).toISOString()
266
+ },
267
+ metadata
268
+ };
269
+ }
270
+ function createInputMissingErrorEvent({
271
+ taskId,
272
+ contextId,
273
+ parts,
274
+ metadata
275
+ }) {
276
+ return {
277
+ kind: "status-update",
278
+ taskId,
279
+ contextId,
280
+ final: true,
281
+ status: {
282
+ state: "input-required" /* INPUT_REQUIRED */,
283
+ message: {
284
+ kind: "message",
285
+ messageId: (0, import_env_aware_utils.randomUUID)(),
286
+ role: "agent",
287
+ taskId,
288
+ contextId,
289
+ parts
290
+ },
291
+ timestamp: (/* @__PURE__ */ new Date()).toISOString()
292
+ },
293
+ metadata
294
+ };
295
+ }
296
+ // Annotate the CommonJS export names for ESM import in node:
297
+ 0 && (module.exports = {
298
+ MessageRole,
299
+ TaskState,
300
+ createInputMissingErrorEvent,
301
+ createTask,
302
+ createTaskArtifactUpdateEvent,
303
+ createTaskCompletedEvent,
304
+ createTaskFailedEvent,
305
+ createTaskInputRequiredEvent,
306
+ createTaskSubmittedEvent,
307
+ createTaskWorkingEvent,
308
+ getEventMetadata,
309
+ getFailedTaskStatusUpdateEventError,
310
+ isFailedTaskStatusUpdateEvent,
311
+ isInputRequiredTaskStatusUpdateEvent,
312
+ isMessage,
313
+ isTask,
314
+ isTaskArtifactUpdateEvent,
315
+ isTaskStatusUpdateEvent,
316
+ isTerminalTaskStatusUpdateEvent
317
+ });
@@ -0,0 +1,174 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+
7
+ "use strict";
8
+ var __defProp = Object.defineProperty;
9
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
10
+ var __getOwnPropNames = Object.getOwnPropertyNames;
11
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
12
+ var __export = (target, all) => {
13
+ for (var name in all)
14
+ __defProp(target, name, { get: all[name], enumerable: true });
15
+ };
16
+ var __copyProps = (to, from, except, desc) => {
17
+ if (from && typeof from === "object" || typeof from === "function") {
18
+ for (let key of __getOwnPropNames(from))
19
+ if (!__hasOwnProp.call(to, key) && key !== except)
20
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
21
+ }
22
+ return to;
23
+ };
24
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
25
+ var a2a_remote_agent_exports = {};
26
+ __export(a2a_remote_agent_exports, {
27
+ AGENT_CARD_PATH: () => import_sdk.AGENT_CARD_PATH,
28
+ RemoteA2AAgent: () => RemoteA2AAgent
29
+ });
30
+ module.exports = __toCommonJS(a2a_remote_agent_exports);
31
+ var import_sdk = require("@a2a-js/sdk");
32
+ var import_client = require("@a2a-js/sdk/client");
33
+ var import_base_agent = require("../agents/base_agent.js");
34
+ var import_event = require("../events/event.js");
35
+ var import_env_aware_utils = require("../utils/env_aware_utils.js");
36
+ var import_logger = require("../utils/logger.js");
37
+ var import_a2a_event = require("./a2a_event.js");
38
+ var import_a2a_remote_agent_run_processor = require("./a2a_remote_agent_run_processor.js");
39
+ var import_a2a_remote_agent_utils = require("./a2a_remote_agent_utils.js");
40
+ var import_agent_card = require("./agent_card.js");
41
+ var import_event_converter_utils = require("./event_converter_utils.js");
42
+ var import_metadata_converter_utils = require("./metadata_converter_utils.js");
43
+ var import_part_converter_utils = require("./part_converter_utils.js");
44
+ /**
45
+ * @license
46
+ * Copyright 2026 Google LLC
47
+ * SPDX-License-Identifier: Apache-2.0
48
+ */
49
+ class RemoteA2AAgent extends import_base_agent.BaseAgent {
50
+ constructor(a2aConfig) {
51
+ super(a2aConfig);
52
+ this.a2aConfig = a2aConfig;
53
+ this.isInitialized = false;
54
+ if (!a2aConfig.agentCard) {
55
+ throw new Error("AgentCard must be provided");
56
+ }
57
+ }
58
+ async init() {
59
+ if (this.isInitialized) {
60
+ return;
61
+ }
62
+ this.card = await (0, import_agent_card.resolveAgentCard)(this.a2aConfig.agentCard);
63
+ const factory = this.a2aConfig.clientFactory || new import_client.ClientFactory();
64
+ this.client = await factory.createFromAgentCard(this.card);
65
+ this.isInitialized = true;
66
+ }
67
+ async *runAsyncImpl(context) {
68
+ var _a, _b;
69
+ await this.init();
70
+ try {
71
+ const events = context.session.events;
72
+ if (events.length === 0) {
73
+ throw new Error("No events in session to send");
74
+ }
75
+ const userFnCall = (0, import_a2a_remote_agent_utils.getUserFunctionCallAt)(
76
+ context.session,
77
+ events.length - 1
78
+ );
79
+ let parts;
80
+ let taskId = void 0;
81
+ let contextId = void 0;
82
+ if (userFnCall) {
83
+ const event = userFnCall.response;
84
+ parts = (0, import_part_converter_utils.toA2AParts)(
85
+ ((_a = event.content) == null ? void 0 : _a.parts) || [],
86
+ event.longRunningToolIds
87
+ );
88
+ taskId = userFnCall.taskId;
89
+ contextId = userFnCall.contextId;
90
+ } else {
91
+ const missing = (0, import_a2a_remote_agent_utils.toMissingRemoteSessionParts)(context, context.session);
92
+ parts = missing.parts;
93
+ contextId = missing.contextId;
94
+ }
95
+ const message = {
96
+ kind: "message",
97
+ messageId: (0, import_env_aware_utils.randomUUID)(),
98
+ role: import_a2a_event.MessageRole.USER,
99
+ parts,
100
+ metadata: {
101
+ ...(0, import_metadata_converter_utils.getA2ASessionMetadata)({
102
+ appName: context.session.appName,
103
+ userId: context.session.userId,
104
+ sessionId: context.session.id
105
+ })
106
+ }
107
+ };
108
+ if (taskId) message.taskId = taskId;
109
+ if (contextId) message.contextId = contextId;
110
+ const params = {
111
+ message,
112
+ configuration: this.a2aConfig.messageSendConfig
113
+ };
114
+ const processor = new import_a2a_remote_agent_run_processor.A2ARemoteAgentRunProcessor(params);
115
+ if (this.a2aConfig.beforeRequestCallbacks) {
116
+ for (const callback of this.a2aConfig.beforeRequestCallbacks) {
117
+ await callback(context, params);
118
+ }
119
+ }
120
+ const useStreaming = ((_b = this.card.capabilities) == null ? void 0 : _b.streaming) !== false;
121
+ if (useStreaming) {
122
+ for await (const chunk of this.client.sendMessageStream(params)) {
123
+ if (this.a2aConfig.afterRequestCallbacks) {
124
+ for (const callback of this.a2aConfig.afterRequestCallbacks) {
125
+ await callback(context, chunk);
126
+ }
127
+ }
128
+ const adkEvent = (0, import_event_converter_utils.toAdkEvent)(chunk, context.invocationId, this.name);
129
+ if (!adkEvent) {
130
+ continue;
131
+ }
132
+ processor.updateCustomMetadata(adkEvent, chunk);
133
+ const eventsToEmit = processor.aggregatePartial(
134
+ context,
135
+ chunk,
136
+ adkEvent
137
+ );
138
+ for (const ev of eventsToEmit) {
139
+ yield ev;
140
+ }
141
+ }
142
+ } else {
143
+ const result = await this.client.sendMessage(params);
144
+ if (this.a2aConfig.afterRequestCallbacks) {
145
+ for (const callback of this.a2aConfig.afterRequestCallbacks) {
146
+ await callback(context, result);
147
+ }
148
+ }
149
+ const adkEvent = (0, import_event_converter_utils.toAdkEvent)(result, context.invocationId, this.name);
150
+ if (adkEvent) {
151
+ processor.updateCustomMetadata(adkEvent, result);
152
+ yield adkEvent;
153
+ }
154
+ }
155
+ } catch (e) {
156
+ const error = e;
157
+ import_logger.logger.error(`A2ARemoteAgent ${this.name} failed:`, error);
158
+ yield (0, import_event.createEvent)({
159
+ author: this.name,
160
+ invocationId: context.invocationId,
161
+ errorMessage: error.message,
162
+ turnComplete: true
163
+ });
164
+ }
165
+ }
166
+ runLiveImpl(_context) {
167
+ throw new Error("Live mode is not supported in A2ARemoteAgent yet.");
168
+ }
169
+ }
170
+ // Annotate the CommonJS export names for ESM import in node:
171
+ 0 && (module.exports = {
172
+ AGENT_CARD_PATH,
173
+ RemoteA2AAgent
174
+ });
@@ -0,0 +1,198 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+
7
+ "use strict";
8
+ var __defProp = Object.defineProperty;
9
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
10
+ var __getOwnPropNames = Object.getOwnPropertyNames;
11
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
12
+ var __export = (target, all) => {
13
+ for (var name in all)
14
+ __defProp(target, name, { get: all[name], enumerable: true });
15
+ };
16
+ var __copyProps = (to, from, except, desc) => {
17
+ if (from && typeof from === "object" || typeof from === "function") {
18
+ for (let key of __getOwnPropNames(from))
19
+ if (!__hasOwnProp.call(to, key) && key !== except)
20
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
21
+ }
22
+ return to;
23
+ };
24
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
25
+ var a2a_remote_agent_run_processor_exports = {};
26
+ __export(a2a_remote_agent_run_processor_exports, {
27
+ A2ARemoteAgentRunProcessor: () => A2ARemoteAgentRunProcessor
28
+ });
29
+ module.exports = __toCommonJS(a2a_remote_agent_run_processor_exports);
30
+ var import_genai = require("@google/genai");
31
+ var import_event = require("../events/event.js");
32
+ var import_a2a_event = require("./a2a_event.js");
33
+ var import_metadata_converter_utils = require("./metadata_converter_utils.js");
34
+ /**
35
+ * @license
36
+ * Copyright 2026 Google LLC
37
+ * SPDX-License-Identifier: Apache-2.0
38
+ */
39
+ class A2ARemoteAgentRunProcessor {
40
+ constructor(request) {
41
+ this.request = request;
42
+ this.aggregations = /* @__PURE__ */ new Map();
43
+ this.aggregationOrder = [];
44
+ }
45
+ /**
46
+ * aggregatePartial stores contents of partial events to emit them with the terminal event.
47
+ * It can return multiple events to emit instead of just the provided one.
48
+ */
49
+ aggregatePartial(context, a2aEvent, adkEvent) {
50
+ const metadata = (0, import_a2a_event.getEventMetadata)(a2aEvent);
51
+ if (metadata[import_metadata_converter_utils.A2AMetadataKeys.PARTIAL]) {
52
+ return [adkEvent];
53
+ }
54
+ if ((0, import_a2a_event.isTaskStatusUpdateEvent)(a2aEvent) && a2aEvent.final) {
55
+ const events = [];
56
+ for (const aid of this.aggregationOrder) {
57
+ const agg = this.aggregations.get(aid);
58
+ if (agg) {
59
+ events.push(this.buildNonPartialAggregation(context, agg));
60
+ }
61
+ }
62
+ this.aggregations.clear();
63
+ this.aggregationOrder = [];
64
+ return [...events, adkEvent];
65
+ }
66
+ if ((0, import_a2a_event.isTask)(a2aEvent)) {
67
+ this.aggregations.clear();
68
+ this.aggregationOrder = [];
69
+ return [adkEvent];
70
+ }
71
+ if (!(0, import_a2a_event.isTaskArtifactUpdateEvent)(a2aEvent)) {
72
+ return [adkEvent];
73
+ }
74
+ const artifactId = a2aEvent.artifact.artifactId;
75
+ if (!a2aEvent.append) {
76
+ this.removeAggregation(artifactId);
77
+ if (a2aEvent.lastChunk) {
78
+ adkEvent.partial = false;
79
+ return [adkEvent];
80
+ }
81
+ }
82
+ let aggregation = this.aggregations.get(artifactId);
83
+ if (!aggregation) {
84
+ aggregation = {
85
+ aggregatedText: "",
86
+ aggregatedThoughts: "",
87
+ parts: []
88
+ };
89
+ this.aggregations.set(artifactId, aggregation);
90
+ this.aggregationOrder.push(artifactId);
91
+ } else {
92
+ this.aggregationOrder = this.aggregationOrder.filter(
93
+ (id) => id !== artifactId
94
+ );
95
+ this.aggregationOrder.push(artifactId);
96
+ }
97
+ this.updateAggregation(aggregation, adkEvent);
98
+ if (!a2aEvent.lastChunk) {
99
+ return [adkEvent];
100
+ }
101
+ this.removeAggregation(artifactId);
102
+ return [adkEvent, this.buildNonPartialAggregation(context, aggregation)];
103
+ }
104
+ removeAggregation(artifactId) {
105
+ this.aggregations.delete(artifactId);
106
+ this.aggregationOrder = this.aggregationOrder.filter(
107
+ (id) => id !== artifactId
108
+ );
109
+ }
110
+ updateAggregation(agg, event) {
111
+ var _a;
112
+ const parts = ((_a = event.content) == null ? void 0 : _a.parts) || [];
113
+ for (const part of parts) {
114
+ if (part.text && part.text !== "") {
115
+ if (part.thought) {
116
+ agg.aggregatedThoughts += part.text;
117
+ } else {
118
+ agg.aggregatedText += part.text;
119
+ }
120
+ } else {
121
+ this.promoteTextBlocksToParts(agg);
122
+ agg.parts.push(part);
123
+ }
124
+ }
125
+ if (event.citationMetadata) {
126
+ if (!agg.citations) {
127
+ agg.citations = { citations: [] };
128
+ }
129
+ if (!agg.citations.citations) {
130
+ agg.citations.citations = [];
131
+ }
132
+ agg.citations.citations.push(...event.citationMetadata.citations || []);
133
+ }
134
+ if (event.customMetadata) {
135
+ if (!agg.customMeta) {
136
+ agg.customMeta = {};
137
+ }
138
+ Object.assign(agg.customMeta, event.customMetadata);
139
+ }
140
+ if (event.groundingMetadata) {
141
+ agg.grounding = event.groundingMetadata;
142
+ }
143
+ if (event.usageMetadata) {
144
+ agg.usage = event.usageMetadata;
145
+ }
146
+ }
147
+ buildNonPartialAggregation(context, agg) {
148
+ this.promoteTextBlocksToParts(agg);
149
+ const result = (0, import_event.createEvent)({
150
+ author: context.agent.name,
151
+ invocationId: context.invocationId,
152
+ content: agg.parts.length > 0 ? (0, import_genai.createModelContent)([...agg.parts]) : void 0,
153
+ customMetadata: agg.customMeta,
154
+ groundingMetadata: agg.grounding,
155
+ citationMetadata: agg.citations,
156
+ usageMetadata: agg.usage,
157
+ turnComplete: false,
158
+ partial: false
159
+ });
160
+ return result;
161
+ }
162
+ promoteTextBlocksToParts(agg) {
163
+ if (agg.aggregatedThoughts !== "") {
164
+ agg.parts.push({ thought: true, text: agg.aggregatedThoughts });
165
+ agg.aggregatedThoughts = "";
166
+ }
167
+ if (agg.aggregatedText !== "") {
168
+ agg.parts.push({ text: agg.aggregatedText });
169
+ agg.aggregatedText = "";
170
+ }
171
+ }
172
+ /**
173
+ * Adds request and response metadata to the event.
174
+ */
175
+ updateCustomMetadata(event, response) {
176
+ const toAdd = {};
177
+ if (this.request && event.turnComplete) {
178
+ toAdd["request"] = this.request;
179
+ }
180
+ if (response) {
181
+ toAdd["response"] = response;
182
+ }
183
+ if (Object.keys(toAdd).length === 0) {
184
+ return;
185
+ }
186
+ if (!event.customMetadata) {
187
+ event.customMetadata = {};
188
+ }
189
+ for (const [k, v] of Object.entries(toAdd)) {
190
+ if (v === void 0 || v === null) continue;
191
+ event.customMetadata[`a2a:${k}`] = v;
192
+ }
193
+ }
194
+ }
195
+ // Annotate the CommonJS export names for ESM import in node:
196
+ 0 && (module.exports = {
197
+ A2ARemoteAgentRunProcessor
198
+ });