beeai-framework 0.1.17 → 0.1.19

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 (225) hide show
  1. package/dist/adapters/a2a/agents/agent.cjs +296 -0
  2. package/dist/adapters/a2a/agents/agent.cjs.map +1 -0
  3. package/dist/adapters/a2a/agents/agent.d.cts +55 -0
  4. package/dist/adapters/a2a/agents/agent.d.ts +55 -0
  5. package/dist/adapters/a2a/agents/agent.js +294 -0
  6. package/dist/adapters/a2a/agents/agent.js.map +1 -0
  7. package/dist/adapters/a2a/agents/events.cjs +4 -0
  8. package/dist/adapters/a2a/agents/events.cjs.map +1 -0
  9. package/dist/adapters/a2a/agents/events.d.cts +23 -0
  10. package/dist/adapters/a2a/agents/events.d.ts +23 -0
  11. package/dist/adapters/a2a/agents/events.js +3 -0
  12. package/dist/adapters/a2a/agents/events.js.map +1 -0
  13. package/dist/adapters/a2a/agents/types.cjs +4 -0
  14. package/dist/adapters/a2a/agents/types.cjs.map +1 -0
  15. package/dist/adapters/a2a/agents/types.d.cts +45 -0
  16. package/dist/adapters/a2a/agents/types.d.ts +45 -0
  17. package/dist/adapters/a2a/agents/types.js +3 -0
  18. package/dist/adapters/a2a/agents/types.js.map +1 -0
  19. package/dist/adapters/a2a/agents/utils.cjs +41 -0
  20. package/dist/adapters/a2a/agents/utils.cjs.map +1 -0
  21. package/dist/adapters/a2a/agents/utils.d.cts +15 -0
  22. package/dist/adapters/a2a/agents/utils.d.ts +15 -0
  23. package/dist/adapters/a2a/agents/utils.js +39 -0
  24. package/dist/adapters/a2a/agents/utils.js.map +1 -0
  25. package/dist/adapters/a2a/serve/agent_executor.cjs +233 -0
  26. package/dist/adapters/a2a/serve/agent_executor.cjs.map +1 -0
  27. package/dist/adapters/a2a/serve/agent_executor.d.cts +55 -0
  28. package/dist/adapters/a2a/serve/agent_executor.d.ts +55 -0
  29. package/dist/adapters/a2a/serve/agent_executor.js +229 -0
  30. package/dist/adapters/a2a/serve/agent_executor.js.map +1 -0
  31. package/dist/adapters/a2a/serve/server.cjs +112 -0
  32. package/dist/adapters/a2a/serve/server.cjs.map +1 -0
  33. package/dist/adapters/a2a/serve/server.d.cts +56 -0
  34. package/dist/adapters/a2a/serve/server.d.ts +56 -0
  35. package/dist/adapters/a2a/serve/server.js +105 -0
  36. package/dist/adapters/a2a/serve/server.js.map +1 -0
  37. package/dist/adapters/acp/agents/agent.d.cts +2 -2
  38. package/dist/adapters/acp/agents/agent.d.ts +2 -2
  39. package/dist/adapters/acp/agents/events.d.cts +1 -1
  40. package/dist/adapters/acp/agents/events.d.ts +1 -1
  41. package/dist/adapters/amazon-bedrock/backend/chat.d.cts +2 -2
  42. package/dist/adapters/amazon-bedrock/backend/chat.d.ts +2 -2
  43. package/dist/adapters/amazon-bedrock/backend/embedding.d.cts +2 -2
  44. package/dist/adapters/amazon-bedrock/backend/embedding.d.ts +2 -2
  45. package/dist/adapters/anthropic/backend/chat.d.cts +2 -2
  46. package/dist/adapters/anthropic/backend/chat.d.ts +2 -2
  47. package/dist/adapters/anthropic/backend/embedding.d.cts +2 -2
  48. package/dist/adapters/anthropic/backend/embedding.d.ts +2 -2
  49. package/dist/adapters/azure-openai/backend/chat.d.cts +2 -2
  50. package/dist/adapters/azure-openai/backend/chat.d.ts +2 -2
  51. package/dist/adapters/azure-openai/backend/embedding.d.cts +2 -2
  52. package/dist/adapters/azure-openai/backend/embedding.d.ts +2 -2
  53. package/dist/adapters/beeai_platform/agents/agent.d.cts +2 -2
  54. package/dist/adapters/beeai_platform/agents/agent.d.ts +2 -2
  55. package/dist/adapters/beeai_platform/agents/events.d.cts +1 -1
  56. package/dist/adapters/beeai_platform/agents/events.d.ts +1 -1
  57. package/dist/adapters/dummy/backend/chat.d.cts +2 -2
  58. package/dist/adapters/dummy/backend/chat.d.ts +2 -2
  59. package/dist/adapters/dummy/backend/embedding.d.cts +2 -2
  60. package/dist/adapters/dummy/backend/embedding.d.ts +2 -2
  61. package/dist/adapters/google-vertex/backend/chat.d.cts +2 -2
  62. package/dist/adapters/google-vertex/backend/chat.d.ts +2 -2
  63. package/dist/adapters/google-vertex/backend/embedding.d.cts +2 -2
  64. package/dist/adapters/google-vertex/backend/embedding.d.ts +2 -2
  65. package/dist/adapters/groq/backend/chat.d.cts +2 -2
  66. package/dist/adapters/groq/backend/chat.d.ts +2 -2
  67. package/dist/adapters/groq/backend/embedding.d.cts +2 -2
  68. package/dist/adapters/groq/backend/embedding.d.ts +2 -2
  69. package/dist/adapters/langchain/backend/chat.d.cts +2 -2
  70. package/dist/adapters/langchain/backend/chat.d.ts +2 -2
  71. package/dist/adapters/langchain/backend/embedding.d.cts +2 -2
  72. package/dist/adapters/langchain/backend/embedding.d.ts +2 -2
  73. package/dist/adapters/langchain/tools.d.cts +1 -1
  74. package/dist/adapters/langchain/tools.d.ts +1 -1
  75. package/dist/adapters/mcp/serve/http_server.cjs +5 -1
  76. package/dist/adapters/mcp/serve/http_server.cjs.map +1 -1
  77. package/dist/adapters/mcp/serve/http_server.js +5 -1
  78. package/dist/adapters/mcp/serve/http_server.js.map +1 -1
  79. package/dist/adapters/mcp/serve/server.cjs +1 -1
  80. package/dist/adapters/mcp/serve/server.cjs.map +1 -1
  81. package/dist/adapters/mcp/serve/server.d.cts +2 -2
  82. package/dist/adapters/mcp/serve/server.d.ts +2 -2
  83. package/dist/adapters/mcp/serve/server.js +1 -1
  84. package/dist/adapters/mcp/serve/server.js.map +1 -1
  85. package/dist/adapters/ollama/backend/chat.d.cts +2 -2
  86. package/dist/adapters/ollama/backend/chat.d.ts +2 -2
  87. package/dist/adapters/ollama/backend/embedding.d.cts +2 -2
  88. package/dist/adapters/ollama/backend/embedding.d.ts +2 -2
  89. package/dist/adapters/openai/backend/chat.d.cts +2 -2
  90. package/dist/adapters/openai/backend/chat.d.ts +2 -2
  91. package/dist/adapters/openai/backend/embedding.d.cts +2 -2
  92. package/dist/adapters/openai/backend/embedding.d.ts +2 -2
  93. package/dist/adapters/vercel/backend/chat.d.cts +2 -2
  94. package/dist/adapters/vercel/backend/chat.d.ts +2 -2
  95. package/dist/adapters/vercel/backend/embedding.d.cts +2 -2
  96. package/dist/adapters/vercel/backend/embedding.d.ts +2 -2
  97. package/dist/adapters/watsonx/backend/chat.d.cts +2 -2
  98. package/dist/adapters/watsonx/backend/chat.d.ts +2 -2
  99. package/dist/adapters/watsonx/backend/embedding.d.cts +2 -2
  100. package/dist/adapters/watsonx/backend/embedding.d.ts +2 -2
  101. package/dist/adapters/xai/backend/chat.d.cts +2 -2
  102. package/dist/adapters/xai/backend/chat.d.ts +2 -2
  103. package/dist/{agent-CUzHyTQd.d.ts → agent-7NzfPC6d.d.ts} +3 -3
  104. package/dist/{agent-Cqh2zuKJ.d.cts → agent-B6pOfx0K.d.cts} +3 -3
  105. package/dist/agents/base.d.cts +2 -2
  106. package/dist/agents/base.d.ts +2 -2
  107. package/dist/agents/experimental/replan/agent.d.cts +3 -3
  108. package/dist/agents/experimental/replan/agent.d.ts +3 -3
  109. package/dist/agents/experimental/replan/prompts.d.cts +1 -1
  110. package/dist/agents/experimental/replan/prompts.d.ts +1 -1
  111. package/dist/agents/experimental/streamlit/agent.d.cts +3 -3
  112. package/dist/agents/experimental/streamlit/agent.d.ts +3 -3
  113. package/dist/agents/react/agent.d.cts +4 -4
  114. package/dist/agents/react/agent.d.ts +4 -4
  115. package/dist/agents/react/prompts.d.cts +1 -1
  116. package/dist/agents/react/prompts.d.ts +1 -1
  117. package/dist/agents/react/runners/base.d.cts +4 -4
  118. package/dist/agents/react/runners/base.d.ts +4 -4
  119. package/dist/agents/react/runners/deep-think/prompts.d.cts +1 -1
  120. package/dist/agents/react/runners/deep-think/prompts.d.ts +1 -1
  121. package/dist/agents/react/runners/deep-think/runner.d.cts +5 -5
  122. package/dist/agents/react/runners/deep-think/runner.d.ts +5 -5
  123. package/dist/agents/react/runners/default/runner.d.cts +5 -5
  124. package/dist/agents/react/runners/default/runner.d.ts +5 -5
  125. package/dist/agents/react/runners/granite/prompts.d.cts +1 -1
  126. package/dist/agents/react/runners/granite/prompts.d.ts +1 -1
  127. package/dist/agents/react/runners/granite/runner.d.cts +5 -5
  128. package/dist/agents/react/runners/granite/runner.d.ts +5 -5
  129. package/dist/agents/react/types.d.cts +2 -2
  130. package/dist/agents/react/types.d.ts +2 -2
  131. package/dist/agents/toolCalling/agent.d.cts +3 -3
  132. package/dist/agents/toolCalling/agent.d.ts +3 -3
  133. package/dist/agents/toolCalling/types.d.cts +1 -1
  134. package/dist/agents/toolCalling/types.d.ts +1 -1
  135. package/dist/agents/types.d.cts +2 -2
  136. package/dist/agents/types.d.ts +2 -2
  137. package/dist/backend/backend.d.cts +2 -2
  138. package/dist/backend/backend.d.ts +2 -2
  139. package/dist/backend/chat.d.cts +2 -2
  140. package/dist/backend/chat.d.ts +2 -2
  141. package/dist/backend/core.d.cts +2 -2
  142. package/dist/backend/core.d.ts +2 -2
  143. package/dist/backend/embedding.d.cts +2 -2
  144. package/dist/backend/embedding.d.ts +2 -2
  145. package/dist/backend/message.cjs.map +1 -1
  146. package/dist/backend/message.d.cts +1 -1
  147. package/dist/backend/message.d.ts +1 -1
  148. package/dist/backend/message.js.map +1 -1
  149. package/dist/backend/utils.d.cts +2 -2
  150. package/dist/backend/utils.d.ts +2 -2
  151. package/dist/{base-BrMAtrc_.d.ts → base-Bguef5Dg.d.ts} +2 -2
  152. package/dist/{base-Bc-Xv1jG.d.cts → base-C1hO5EJe.d.cts} +2 -2
  153. package/dist/{chat-W9j8T6UU.d.ts → chat-BBoOSvzm.d.ts} +1 -1
  154. package/dist/{chat-CR4yfOR9.d.cts → chat-BZ55YQab.d.cts} +1 -1
  155. package/dist/context.d.cts +1 -1
  156. package/dist/context.d.ts +1 -1
  157. package/dist/emitter/emitter.d.cts +1 -1
  158. package/dist/emitter/emitter.d.ts +1 -1
  159. package/dist/emitter/types.d.cts +1 -1
  160. package/dist/emitter/types.d.ts +1 -1
  161. package/dist/index.d.cts +3 -3
  162. package/dist/index.d.ts +3 -3
  163. package/dist/internals/fetcher.d.cts +1 -1
  164. package/dist/internals/fetcher.d.ts +1 -1
  165. package/dist/memory/summarizeMemory.d.cts +2 -2
  166. package/dist/memory/summarizeMemory.d.ts +2 -2
  167. package/dist/parsers/linePrefix.d.cts +1 -1
  168. package/dist/parsers/linePrefix.d.ts +1 -1
  169. package/dist/serve/server.cjs +12 -5
  170. package/dist/serve/server.cjs.map +1 -1
  171. package/dist/serve/server.d.cts +4 -3
  172. package/dist/serve/server.d.ts +4 -3
  173. package/dist/serve/server.js +12 -5
  174. package/dist/serve/server.js.map +1 -1
  175. package/dist/tools/arxiv.d.cts +1 -1
  176. package/dist/tools/arxiv.d.ts +1 -1
  177. package/dist/tools/base.d.cts +1 -1
  178. package/dist/tools/base.d.ts +1 -1
  179. package/dist/tools/calculator.d.cts +1 -1
  180. package/dist/tools/calculator.d.ts +1 -1
  181. package/dist/tools/custom.d.cts +2 -2
  182. package/dist/tools/custom.d.ts +2 -2
  183. package/dist/tools/database/elasticsearch.d.cts +1 -1
  184. package/dist/tools/database/elasticsearch.d.ts +1 -1
  185. package/dist/tools/database/milvus.d.cts +1 -1
  186. package/dist/tools/database/milvus.d.ts +1 -1
  187. package/dist/tools/database/qdrant.d.cts +1 -1
  188. package/dist/tools/database/qdrant.d.ts +1 -1
  189. package/dist/tools/database/sql.d.cts +1 -1
  190. package/dist/tools/database/sql.d.ts +1 -1
  191. package/dist/tools/llm.d.cts +2 -2
  192. package/dist/tools/llm.d.ts +2 -2
  193. package/dist/tools/mcp.d.cts +1 -1
  194. package/dist/tools/mcp.d.ts +1 -1
  195. package/dist/tools/openapi.d.cts +1 -1
  196. package/dist/tools/openapi.d.ts +1 -1
  197. package/dist/tools/python/output.d.cts +1 -1
  198. package/dist/tools/python/output.d.ts +1 -1
  199. package/dist/tools/python/python.d.cts +2 -2
  200. package/dist/tools/python/python.d.ts +2 -2
  201. package/dist/tools/search/base.d.cts +1 -1
  202. package/dist/tools/search/base.d.ts +1 -1
  203. package/dist/tools/search/duckDuckGoSearch.d.cts +1 -1
  204. package/dist/tools/search/duckDuckGoSearch.d.ts +1 -1
  205. package/dist/tools/search/googleSearch.d.cts +1 -1
  206. package/dist/tools/search/googleSearch.d.ts +1 -1
  207. package/dist/tools/search/searXNGSearch.d.cts +1 -1
  208. package/dist/tools/search/searXNGSearch.d.ts +1 -1
  209. package/dist/tools/search/wikipedia.d.cts +1 -1
  210. package/dist/tools/search/wikipedia.d.ts +1 -1
  211. package/dist/tools/similarity.d.cts +1 -1
  212. package/dist/tools/similarity.d.ts +1 -1
  213. package/dist/tools/weather/openMeteo.d.cts +1 -1
  214. package/dist/tools/weather/openMeteo.d.ts +1 -1
  215. package/dist/tools/web/webCrawler.d.cts +1 -1
  216. package/dist/tools/web/webCrawler.d.ts +1 -1
  217. package/dist/version.cjs +1 -1
  218. package/dist/version.js +1 -1
  219. package/dist/workflows/agent.d.cts +3 -3
  220. package/dist/workflows/agent.d.ts +3 -3
  221. package/dist/workflows/workflow.d.cts +1 -1
  222. package/dist/workflows/workflow.d.ts +1 -1
  223. package/package.json +7 -2
  224. package/dist/{emitter-C9nwGLt6.d.ts → emitter-BqpLJQVb.d.ts} +1 -1
  225. package/dist/{emitter-DWEsd-ud.d.cts → emitter-pJzHC_AM.d.cts} +1 -1
@@ -0,0 +1,233 @@
1
+ 'use strict';
2
+
3
+ var uuid = require('uuid');
4
+ var logger_cjs = require('../../../logger/logger.cjs');
5
+ var utils_cjs = require('../agents/utils.cjs');
6
+
7
+ var __defProp = Object.defineProperty;
8
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
9
+ const logger = logger_cjs.Logger.root.child({
10
+ name: "A2A server"
11
+ });
12
+ class BaseA2AAgentExecutor {
13
+ static {
14
+ __name(this, "BaseA2AAgentExecutor");
15
+ }
16
+ agent;
17
+ abortControllers = /* @__PURE__ */ new Map();
18
+ constructor(agent) {
19
+ this.agent = agent;
20
+ }
21
+ async execute(requestContext, eventBus) {
22
+ const userMessage = requestContext.userMessage;
23
+ const existingTask = requestContext.task || {
24
+ kind: "task",
25
+ id: uuid.v4(),
26
+ contextId: userMessage.contextId || uuid.v4(),
27
+ status: {
28
+ state: "submitted",
29
+ timestamp: (/* @__PURE__ */ new Date()).toISOString()
30
+ },
31
+ history: [
32
+ userMessage
33
+ ],
34
+ metadata: userMessage.metadata
35
+ };
36
+ const taskId = existingTask.id;
37
+ const contextId = existingTask.contextId;
38
+ eventBus.publish(existingTask);
39
+ const workingStatusUpdate = {
40
+ kind: "status-update",
41
+ taskId,
42
+ contextId,
43
+ status: {
44
+ state: "working",
45
+ timestamp: (/* @__PURE__ */ new Date()).toISOString()
46
+ },
47
+ final: false
48
+ };
49
+ eventBus.publish(workingStatusUpdate);
50
+ const abortController = new AbortController();
51
+ this.abortControllers.set(taskId, [
52
+ contextId,
53
+ abortController
54
+ ]);
55
+ const agent = await this.agent.clone();
56
+ agent.memory = await agent.memory.clone();
57
+ agent.memory.reset();
58
+ await agent.memory.addMany((existingTask.history || [
59
+ requestContext.userMessage
60
+ ]).map(utils_cjs.convertA2AMessageToFrameworkMessage) || []);
61
+ try {
62
+ const response = await agent.run({}, {
63
+ signal: abortController.signal
64
+ }).observe(async (emitter) => {
65
+ await this.process_events(emitter, requestContext, eventBus);
66
+ });
67
+ const agentMessage = {
68
+ kind: "message",
69
+ role: "agent",
70
+ messageId: uuid.v4(),
71
+ parts: [
72
+ {
73
+ kind: "text",
74
+ text: response.result.text
75
+ }
76
+ ],
77
+ taskId,
78
+ contextId
79
+ };
80
+ if (!existingTask.history) {
81
+ existingTask.history = [];
82
+ }
83
+ existingTask.history.push(agentMessage);
84
+ eventBus.publish(existingTask);
85
+ const finalUpdate = {
86
+ kind: "status-update",
87
+ taskId,
88
+ contextId,
89
+ status: {
90
+ state: "completed",
91
+ message: agentMessage,
92
+ timestamp: (/* @__PURE__ */ new Date()).toISOString()
93
+ },
94
+ final: true
95
+ };
96
+ eventBus.publish(finalUpdate);
97
+ eventBus.finished();
98
+ } catch (error) {
99
+ logger.error("Agent execution error:", {
100
+ error
101
+ });
102
+ const errorMessage = error instanceof Error ? error.message : String(error);
103
+ const errorUpdate = {
104
+ kind: "status-update",
105
+ taskId,
106
+ contextId,
107
+ status: {
108
+ state: "failed",
109
+ message: {
110
+ kind: "message",
111
+ role: "agent",
112
+ messageId: uuid.v4(),
113
+ parts: [
114
+ {
115
+ kind: "text",
116
+ text: `Agent error: ${errorMessage}`
117
+ }
118
+ ],
119
+ taskId,
120
+ contextId
121
+ },
122
+ timestamp: (/* @__PURE__ */ new Date()).toISOString()
123
+ },
124
+ final: true
125
+ };
126
+ eventBus.publish(errorUpdate);
127
+ eventBus.finished();
128
+ }
129
+ }
130
+ async process_events(_emitter, _requestContext, _eventBus) {
131
+ return;
132
+ }
133
+ cancelTask = /* @__PURE__ */ __name(async (taskId, eventBus) => {
134
+ if (this.abortControllers.has(taskId)) {
135
+ const [contextId, abortController] = this.abortControllers.get(taskId);
136
+ const cancelledUpdate = {
137
+ kind: "status-update",
138
+ taskId,
139
+ contextId,
140
+ status: {
141
+ state: "canceled",
142
+ timestamp: (/* @__PURE__ */ new Date()).toISOString()
143
+ },
144
+ final: true
145
+ };
146
+ eventBus.publish(cancelledUpdate);
147
+ abortController.abort();
148
+ }
149
+ }, "cancelTask");
150
+ }
151
+ class ToolCallingAgentExecutor extends BaseA2AAgentExecutor {
152
+ static {
153
+ __name(this, "ToolCallingAgentExecutor");
154
+ }
155
+ async process_events(emitter, requestContext, eventBus) {
156
+ let lastMsg = void 0;
157
+ const processEvent = /* @__PURE__ */ __name(async ({ state }) => {
158
+ const messages = state.memory.messages;
159
+ if (lastMsg === void 0) {
160
+ lastMsg = messages.at(-1);
161
+ }
162
+ const index = lastMsg ? messages.lastIndexOf(lastMsg) : -1;
163
+ for (const message of messages.slice(index + 1)) {
164
+ const update = {
165
+ kind: "status-update",
166
+ taskId: requestContext.taskId,
167
+ contextId: requestContext.contextId,
168
+ status: {
169
+ state: "working",
170
+ message: {
171
+ kind: "message",
172
+ role: "agent",
173
+ messageId: uuid.v4(),
174
+ parts: [
175
+ {
176
+ kind: "text",
177
+ text: JSON.stringify(message.toPlain())
178
+ }
179
+ ],
180
+ taskId: requestContext.taskId,
181
+ contextId: requestContext.contextId
182
+ },
183
+ timestamp: (/* @__PURE__ */ new Date()).toISOString()
184
+ },
185
+ final: false
186
+ };
187
+ eventBus.publish(update);
188
+ lastMsg = message;
189
+ }
190
+ }, "processEvent");
191
+ emitter.on("start", processEvent);
192
+ emitter.on("success", processEvent);
193
+ }
194
+ }
195
+ class ReActAgentExecutor extends BaseA2AAgentExecutor {
196
+ static {
197
+ __name(this, "ReActAgentExecutor");
198
+ }
199
+ async process_events(emitter, requestContext, eventBus) {
200
+ emitter.on("update", async ({ update }) => {
201
+ const updateEvent = {
202
+ kind: "status-update",
203
+ taskId: requestContext.taskId,
204
+ contextId: requestContext.contextId,
205
+ status: {
206
+ state: "working",
207
+ message: {
208
+ kind: "message",
209
+ role: "agent",
210
+ messageId: uuid.v4(),
211
+ parts: [
212
+ {
213
+ kind: "text",
214
+ text: update.value
215
+ }
216
+ ],
217
+ taskId: requestContext.taskId,
218
+ contextId: requestContext.contextId
219
+ },
220
+ timestamp: (/* @__PURE__ */ new Date()).toISOString()
221
+ },
222
+ final: false
223
+ };
224
+ eventBus.publish(updateEvent);
225
+ });
226
+ }
227
+ }
228
+
229
+ exports.BaseA2AAgentExecutor = BaseA2AAgentExecutor;
230
+ exports.ReActAgentExecutor = ReActAgentExecutor;
231
+ exports.ToolCallingAgentExecutor = ToolCallingAgentExecutor;
232
+ //# sourceMappingURL=agent_executor.cjs.map
233
+ //# sourceMappingURL=agent_executor.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/adapters/a2a/serve/agent_executor.ts"],"names":["logger","Logger","root","child","name","BaseA2AAgentExecutor","abortControllers","Map","agent","execute","requestContext","eventBus","userMessage","existingTask","task","kind","id","uuidv4","contextId","status","state","timestamp","Date","toISOString","history","metadata","taskId","publish","workingStatusUpdate","final","abortController","AbortController","set","clone","memory","reset","addMany","map","convertA2AMessageToFrameworkMessage","response","run","signal","observe","emitter","process_events","agentMessage","role","messageId","parts","text","result","push","finalUpdate","message","finished","error","errorMessage","Error","String","errorUpdate","_emitter","_requestContext","_eventBus","cancelTask","has","get","cancelledUpdate","abort","ToolCallingAgentExecutor","lastMsg","undefined","processEvent","messages","at","index","lastIndexOf","slice","update","JSON","stringify","toPlain","on","ReActAgentExecutor","updateEvent","value"],"mappings":"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","file":"agent_executor.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { v4 as uuidv4 } from \"uuid\";\n\nimport { AnyAgent } from \"@/agents/types.js\";\nimport { AgentExecutor, RequestContext, ExecutionEventBus } from \"@a2a-js/sdk/server\";\nimport { Message, TaskStatusUpdateEvent } from \"@a2a-js/sdk\";\nimport { Logger } from \"@/logger/logger.js\";\nimport { convertA2AMessageToFrameworkMessage } from \"@/adapters/a2a/agents/utils.js\";\nimport { Callback, Emitter } from \"@/emitter/emitter.js\";\nimport { ToolCallingAgentCallbacks, ToolCallingAgentRunState } from \"@/agents/toolCalling/types.js\";\nimport { ReActAgentCallbacks } from \"@/agents/react/types.js\";\nimport { Message as FrameworkMessage } from \"@/backend/message.js\";\n\nconst logger = Logger.root.child({\n name: \"A2A server\",\n});\n\nexport abstract class BaseA2AAgentExecutor implements AgentExecutor {\n protected readonly abortControllers = new Map<string, [string, AbortController]>();\n\n constructor(protected agent: AnyAgent) {}\n\n async execute(requestContext: RequestContext, eventBus: ExecutionEventBus): Promise<void> {\n const userMessage = requestContext.userMessage;\n const existingTask = requestContext.task || {\n kind: \"task\",\n id: uuidv4(),\n contextId: userMessage.contextId || uuidv4(),\n status: {\n state: \"submitted\",\n timestamp: new Date().toISOString(),\n },\n history: [userMessage],\n metadata: userMessage.metadata,\n };\n\n const taskId = existingTask.id;\n const contextId = existingTask.contextId;\n\n // Publish initial Task event if it's a new task\n eventBus.publish(existingTask);\n\n // Publish \"working\" status update\n const workingStatusUpdate: TaskStatusUpdateEvent = {\n kind: \"status-update\",\n taskId: taskId,\n contextId: contextId,\n status: {\n state: \"working\",\n timestamp: new Date().toISOString(),\n },\n final: false,\n };\n eventBus.publish(workingStatusUpdate);\n\n const abortController = new AbortController();\n this.abortControllers.set(taskId, [contextId, abortController]);\n\n const agent = await this.agent.clone();\n agent.memory = await agent.memory.clone();\n agent.memory.reset();\n await agent.memory.addMany(\n (existingTask.history || [requestContext.userMessage]).map(\n convertA2AMessageToFrameworkMessage,\n ) || [],\n );\n\n try {\n // run the agent\n const response = await agent\n .run(\n {},\n {\n signal: abortController.signal,\n },\n )\n .observe(async (emitter) => {\n await this.process_events(emitter, requestContext, eventBus);\n });\n\n const agentMessage: Message = {\n kind: \"message\",\n role: \"agent\",\n messageId: uuidv4(),\n parts: [{ kind: \"text\", text: response.result.text }],\n taskId: taskId,\n contextId: contextId,\n };\n\n // Append agent message to task history\n if (!existingTask.history) {\n existingTask.history = [];\n }\n existingTask.history.push(agentMessage);\n eventBus.publish(existingTask);\n\n // Publish completed status update with agent message\n const finalUpdate: TaskStatusUpdateEvent = {\n kind: \"status-update\",\n taskId: taskId,\n contextId: contextId,\n status: {\n state: \"completed\",\n message: agentMessage,\n timestamp: new Date().toISOString(),\n },\n final: true,\n };\n eventBus.publish(finalUpdate);\n\n eventBus.finished();\n } catch (error) {\n logger.error(\"Agent execution error:\", { error });\n const errorMessage = error instanceof Error ? error.message : String(error);\n // Publish failed status update\n const errorUpdate: TaskStatusUpdateEvent = {\n kind: \"status-update\",\n taskId: taskId,\n contextId: contextId,\n status: {\n state: \"failed\",\n message: {\n kind: \"message\",\n role: \"agent\",\n messageId: uuidv4(),\n parts: [{ kind: \"text\", text: `Agent error: ${errorMessage}` }],\n taskId: taskId,\n contextId: contextId,\n },\n timestamp: new Date().toISOString(),\n },\n final: true,\n };\n eventBus.publish(errorUpdate);\n eventBus.finished();\n }\n }\n\n async process_events(\n _emitter: Emitter,\n _requestContext: RequestContext,\n _eventBus: ExecutionEventBus,\n ): Promise<void> {\n return;\n }\n\n public cancelTask = async (taskId: string, eventBus: ExecutionEventBus): Promise<void> => {\n if (this.abortControllers.has(taskId)) {\n const [contextId, abortController] = this.abortControllers.get(taskId)!;\n const cancelledUpdate: TaskStatusUpdateEvent = {\n kind: \"status-update\",\n taskId: taskId,\n contextId: contextId,\n status: {\n state: \"canceled\",\n timestamp: new Date().toISOString(),\n },\n final: true,\n };\n eventBus.publish(cancelledUpdate);\n abortController.abort();\n }\n };\n}\n\nexport class ToolCallingAgentExecutor extends BaseA2AAgentExecutor {\n async process_events(\n emitter: Emitter<ToolCallingAgentCallbacks>,\n requestContext: RequestContext,\n eventBus: ExecutionEventBus,\n ): Promise<void> {\n let lastMsg: FrameworkMessage | undefined = undefined;\n\n const processEvent: Callback<{ state: ToolCallingAgentRunState }> = async ({ state }) => {\n const messages = state.memory.messages;\n if (lastMsg === undefined) {\n lastMsg = messages.at(-1);\n }\n\n const index = lastMsg ? messages.lastIndexOf(lastMsg) : -1;\n for (const message of messages.slice(index + 1)) {\n const update: TaskStatusUpdateEvent = {\n kind: \"status-update\",\n taskId: requestContext.taskId,\n contextId: requestContext.contextId,\n status: {\n state: \"working\",\n message: {\n kind: \"message\",\n role: \"agent\",\n messageId: uuidv4(),\n parts: [{ kind: \"text\", text: JSON.stringify(message.toPlain()) }],\n taskId: requestContext.taskId,\n contextId: requestContext.contextId,\n },\n timestamp: new Date().toISOString(),\n },\n final: false,\n };\n eventBus.publish(update);\n lastMsg = message;\n }\n };\n emitter.on(\"start\", processEvent);\n emitter.on(\"success\", processEvent);\n }\n}\n\nexport class ReActAgentExecutor extends BaseA2AAgentExecutor {\n async process_events(\n emitter: Emitter<ReActAgentCallbacks>,\n requestContext: RequestContext,\n eventBus: ExecutionEventBus,\n ): Promise<void> {\n emitter.on(\"update\", async ({ update }) => {\n const updateEvent: TaskStatusUpdateEvent = {\n kind: \"status-update\",\n taskId: requestContext.taskId,\n contextId: requestContext.contextId,\n status: {\n state: \"working\",\n message: {\n kind: \"message\",\n role: \"agent\",\n messageId: uuidv4(),\n parts: [{ kind: \"text\", text: update.value }],\n taskId: requestContext.taskId,\n contextId: requestContext.contextId,\n },\n timestamp: new Date().toISOString(),\n },\n final: false,\n };\n eventBus.publish(updateEvent);\n });\n }\n}\n"]}
@@ -0,0 +1,55 @@
1
+ import { c as AnyAgent } from '../../../base-C1hO5EJe.cjs';
2
+ import { AgentExecutor, RequestContext, ExecutionEventBus } from '@a2a-js/sdk/server';
3
+ import { E as Emitter } from '../../../emitter-pJzHC_AM.cjs';
4
+ import { ToolCallingAgentCallbacks } from '../../../agents/toolCalling/types.cjs';
5
+ import { ReActAgentCallbacks } from '../../../agents/react/types.cjs';
6
+ import '../../../context.cjs';
7
+ import '../../../internals/serializable.cjs';
8
+ import '../../../internals/types.cjs';
9
+ import '../../../internals/helpers/guards.cjs';
10
+ import '../../../internals/helpers/promise.cjs';
11
+ import '../../../errors.cjs';
12
+ import '../../../memory/base.cjs';
13
+ import '../../../backend/message.cjs';
14
+ import 'ai';
15
+ import '../../../tools/base.cjs';
16
+ import 'ajv';
17
+ import 'promise-based-task';
18
+ import '../../../cache/base.cjs';
19
+ import '../../../internals/helpers/schema.cjs';
20
+ import 'zod';
21
+ import 'zod-to-json-schema';
22
+ import '../../../agents/toolCalling/prompts.cjs';
23
+ import '../../../template.cjs';
24
+ import '../../../agents/react/prompts.cjs';
25
+ import '../../../parsers/linePrefix.cjs';
26
+ import '../../../parsers/field.cjs';
27
+ import '@streamparser/json';
28
+ import 'jsonrepair/stream';
29
+ import '../../../parsers/errors.cjs';
30
+ import '../../../chat-BZ55YQab.cjs';
31
+ import '../../../backend/constants.cjs';
32
+ import '../../../logger/logger.cjs';
33
+ import 'pino';
34
+
35
+ /**
36
+ * Copyright 2025 © BeeAI a Series of LF Projects, LLC
37
+ * SPDX-License-Identifier: Apache-2.0
38
+ */
39
+
40
+ declare abstract class BaseA2AAgentExecutor implements AgentExecutor {
41
+ protected agent: AnyAgent;
42
+ protected readonly abortControllers: Map<string, [string, AbortController]>;
43
+ constructor(agent: AnyAgent);
44
+ execute(requestContext: RequestContext, eventBus: ExecutionEventBus): Promise<void>;
45
+ process_events(_emitter: Emitter, _requestContext: RequestContext, _eventBus: ExecutionEventBus): Promise<void>;
46
+ cancelTask: (taskId: string, eventBus: ExecutionEventBus) => Promise<void>;
47
+ }
48
+ declare class ToolCallingAgentExecutor extends BaseA2AAgentExecutor {
49
+ process_events(emitter: Emitter<ToolCallingAgentCallbacks>, requestContext: RequestContext, eventBus: ExecutionEventBus): Promise<void>;
50
+ }
51
+ declare class ReActAgentExecutor extends BaseA2AAgentExecutor {
52
+ process_events(emitter: Emitter<ReActAgentCallbacks>, requestContext: RequestContext, eventBus: ExecutionEventBus): Promise<void>;
53
+ }
54
+
55
+ export { BaseA2AAgentExecutor, ReActAgentExecutor, ToolCallingAgentExecutor };
@@ -0,0 +1,55 @@
1
+ import { c as AnyAgent } from '../../../base-Bguef5Dg.js';
2
+ import { AgentExecutor, RequestContext, ExecutionEventBus } from '@a2a-js/sdk/server';
3
+ import { E as Emitter } from '../../../emitter-BqpLJQVb.js';
4
+ import { ToolCallingAgentCallbacks } from '../../../agents/toolCalling/types.js';
5
+ import { ReActAgentCallbacks } from '../../../agents/react/types.js';
6
+ import '../../../context.js';
7
+ import '../../../internals/serializable.js';
8
+ import '../../../internals/types.js';
9
+ import '../../../internals/helpers/guards.js';
10
+ import '../../../internals/helpers/promise.js';
11
+ import '../../../errors.js';
12
+ import '../../../memory/base.js';
13
+ import '../../../backend/message.js';
14
+ import 'ai';
15
+ import '../../../tools/base.js';
16
+ import 'ajv';
17
+ import 'promise-based-task';
18
+ import '../../../cache/base.js';
19
+ import '../../../internals/helpers/schema.js';
20
+ import 'zod';
21
+ import 'zod-to-json-schema';
22
+ import '../../../agents/toolCalling/prompts.js';
23
+ import '../../../template.js';
24
+ import '../../../agents/react/prompts.js';
25
+ import '../../../parsers/linePrefix.js';
26
+ import '../../../parsers/field.js';
27
+ import '@streamparser/json';
28
+ import 'jsonrepair/stream';
29
+ import '../../../parsers/errors.js';
30
+ import '../../../chat-BBoOSvzm.js';
31
+ import '../../../backend/constants.js';
32
+ import '../../../logger/logger.js';
33
+ import 'pino';
34
+
35
+ /**
36
+ * Copyright 2025 © BeeAI a Series of LF Projects, LLC
37
+ * SPDX-License-Identifier: Apache-2.0
38
+ */
39
+
40
+ declare abstract class BaseA2AAgentExecutor implements AgentExecutor {
41
+ protected agent: AnyAgent;
42
+ protected readonly abortControllers: Map<string, [string, AbortController]>;
43
+ constructor(agent: AnyAgent);
44
+ execute(requestContext: RequestContext, eventBus: ExecutionEventBus): Promise<void>;
45
+ process_events(_emitter: Emitter, _requestContext: RequestContext, _eventBus: ExecutionEventBus): Promise<void>;
46
+ cancelTask: (taskId: string, eventBus: ExecutionEventBus) => Promise<void>;
47
+ }
48
+ declare class ToolCallingAgentExecutor extends BaseA2AAgentExecutor {
49
+ process_events(emitter: Emitter<ToolCallingAgentCallbacks>, requestContext: RequestContext, eventBus: ExecutionEventBus): Promise<void>;
50
+ }
51
+ declare class ReActAgentExecutor extends BaseA2AAgentExecutor {
52
+ process_events(emitter: Emitter<ReActAgentCallbacks>, requestContext: RequestContext, eventBus: ExecutionEventBus): Promise<void>;
53
+ }
54
+
55
+ export { BaseA2AAgentExecutor, ReActAgentExecutor, ToolCallingAgentExecutor };
@@ -0,0 +1,229 @@
1
+ import { v4 } from 'uuid';
2
+ import { Logger } from '../../../logger/logger.js';
3
+ import { convertA2AMessageToFrameworkMessage } from '../agents/utils.js';
4
+
5
+ var __defProp = Object.defineProperty;
6
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
7
+ const logger = Logger.root.child({
8
+ name: "A2A server"
9
+ });
10
+ class BaseA2AAgentExecutor {
11
+ static {
12
+ __name(this, "BaseA2AAgentExecutor");
13
+ }
14
+ agent;
15
+ abortControllers = /* @__PURE__ */ new Map();
16
+ constructor(agent) {
17
+ this.agent = agent;
18
+ }
19
+ async execute(requestContext, eventBus) {
20
+ const userMessage = requestContext.userMessage;
21
+ const existingTask = requestContext.task || {
22
+ kind: "task",
23
+ id: v4(),
24
+ contextId: userMessage.contextId || v4(),
25
+ status: {
26
+ state: "submitted",
27
+ timestamp: (/* @__PURE__ */ new Date()).toISOString()
28
+ },
29
+ history: [
30
+ userMessage
31
+ ],
32
+ metadata: userMessage.metadata
33
+ };
34
+ const taskId = existingTask.id;
35
+ const contextId = existingTask.contextId;
36
+ eventBus.publish(existingTask);
37
+ const workingStatusUpdate = {
38
+ kind: "status-update",
39
+ taskId,
40
+ contextId,
41
+ status: {
42
+ state: "working",
43
+ timestamp: (/* @__PURE__ */ new Date()).toISOString()
44
+ },
45
+ final: false
46
+ };
47
+ eventBus.publish(workingStatusUpdate);
48
+ const abortController = new AbortController();
49
+ this.abortControllers.set(taskId, [
50
+ contextId,
51
+ abortController
52
+ ]);
53
+ const agent = await this.agent.clone();
54
+ agent.memory = await agent.memory.clone();
55
+ agent.memory.reset();
56
+ await agent.memory.addMany((existingTask.history || [
57
+ requestContext.userMessage
58
+ ]).map(convertA2AMessageToFrameworkMessage) || []);
59
+ try {
60
+ const response = await agent.run({}, {
61
+ signal: abortController.signal
62
+ }).observe(async (emitter) => {
63
+ await this.process_events(emitter, requestContext, eventBus);
64
+ });
65
+ const agentMessage = {
66
+ kind: "message",
67
+ role: "agent",
68
+ messageId: v4(),
69
+ parts: [
70
+ {
71
+ kind: "text",
72
+ text: response.result.text
73
+ }
74
+ ],
75
+ taskId,
76
+ contextId
77
+ };
78
+ if (!existingTask.history) {
79
+ existingTask.history = [];
80
+ }
81
+ existingTask.history.push(agentMessage);
82
+ eventBus.publish(existingTask);
83
+ const finalUpdate = {
84
+ kind: "status-update",
85
+ taskId,
86
+ contextId,
87
+ status: {
88
+ state: "completed",
89
+ message: agentMessage,
90
+ timestamp: (/* @__PURE__ */ new Date()).toISOString()
91
+ },
92
+ final: true
93
+ };
94
+ eventBus.publish(finalUpdate);
95
+ eventBus.finished();
96
+ } catch (error) {
97
+ logger.error("Agent execution error:", {
98
+ error
99
+ });
100
+ const errorMessage = error instanceof Error ? error.message : String(error);
101
+ const errorUpdate = {
102
+ kind: "status-update",
103
+ taskId,
104
+ contextId,
105
+ status: {
106
+ state: "failed",
107
+ message: {
108
+ kind: "message",
109
+ role: "agent",
110
+ messageId: v4(),
111
+ parts: [
112
+ {
113
+ kind: "text",
114
+ text: `Agent error: ${errorMessage}`
115
+ }
116
+ ],
117
+ taskId,
118
+ contextId
119
+ },
120
+ timestamp: (/* @__PURE__ */ new Date()).toISOString()
121
+ },
122
+ final: true
123
+ };
124
+ eventBus.publish(errorUpdate);
125
+ eventBus.finished();
126
+ }
127
+ }
128
+ async process_events(_emitter, _requestContext, _eventBus) {
129
+ return;
130
+ }
131
+ cancelTask = /* @__PURE__ */ __name(async (taskId, eventBus) => {
132
+ if (this.abortControllers.has(taskId)) {
133
+ const [contextId, abortController] = this.abortControllers.get(taskId);
134
+ const cancelledUpdate = {
135
+ kind: "status-update",
136
+ taskId,
137
+ contextId,
138
+ status: {
139
+ state: "canceled",
140
+ timestamp: (/* @__PURE__ */ new Date()).toISOString()
141
+ },
142
+ final: true
143
+ };
144
+ eventBus.publish(cancelledUpdate);
145
+ abortController.abort();
146
+ }
147
+ }, "cancelTask");
148
+ }
149
+ class ToolCallingAgentExecutor extends BaseA2AAgentExecutor {
150
+ static {
151
+ __name(this, "ToolCallingAgentExecutor");
152
+ }
153
+ async process_events(emitter, requestContext, eventBus) {
154
+ let lastMsg = void 0;
155
+ const processEvent = /* @__PURE__ */ __name(async ({ state }) => {
156
+ const messages = state.memory.messages;
157
+ if (lastMsg === void 0) {
158
+ lastMsg = messages.at(-1);
159
+ }
160
+ const index = lastMsg ? messages.lastIndexOf(lastMsg) : -1;
161
+ for (const message of messages.slice(index + 1)) {
162
+ const update = {
163
+ kind: "status-update",
164
+ taskId: requestContext.taskId,
165
+ contextId: requestContext.contextId,
166
+ status: {
167
+ state: "working",
168
+ message: {
169
+ kind: "message",
170
+ role: "agent",
171
+ messageId: v4(),
172
+ parts: [
173
+ {
174
+ kind: "text",
175
+ text: JSON.stringify(message.toPlain())
176
+ }
177
+ ],
178
+ taskId: requestContext.taskId,
179
+ contextId: requestContext.contextId
180
+ },
181
+ timestamp: (/* @__PURE__ */ new Date()).toISOString()
182
+ },
183
+ final: false
184
+ };
185
+ eventBus.publish(update);
186
+ lastMsg = message;
187
+ }
188
+ }, "processEvent");
189
+ emitter.on("start", processEvent);
190
+ emitter.on("success", processEvent);
191
+ }
192
+ }
193
+ class ReActAgentExecutor extends BaseA2AAgentExecutor {
194
+ static {
195
+ __name(this, "ReActAgentExecutor");
196
+ }
197
+ async process_events(emitter, requestContext, eventBus) {
198
+ emitter.on("update", async ({ update }) => {
199
+ const updateEvent = {
200
+ kind: "status-update",
201
+ taskId: requestContext.taskId,
202
+ contextId: requestContext.contextId,
203
+ status: {
204
+ state: "working",
205
+ message: {
206
+ kind: "message",
207
+ role: "agent",
208
+ messageId: v4(),
209
+ parts: [
210
+ {
211
+ kind: "text",
212
+ text: update.value
213
+ }
214
+ ],
215
+ taskId: requestContext.taskId,
216
+ contextId: requestContext.contextId
217
+ },
218
+ timestamp: (/* @__PURE__ */ new Date()).toISOString()
219
+ },
220
+ final: false
221
+ };
222
+ eventBus.publish(updateEvent);
223
+ });
224
+ }
225
+ }
226
+
227
+ export { BaseA2AAgentExecutor, ReActAgentExecutor, ToolCallingAgentExecutor };
228
+ //# sourceMappingURL=agent_executor.js.map
229
+ //# sourceMappingURL=agent_executor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/adapters/a2a/serve/agent_executor.ts"],"names":["logger","Logger","root","child","name","BaseA2AAgentExecutor","abortControllers","Map","agent","execute","requestContext","eventBus","userMessage","existingTask","task","kind","id","uuidv4","contextId","status","state","timestamp","Date","toISOString","history","metadata","taskId","publish","workingStatusUpdate","final","abortController","AbortController","set","clone","memory","reset","addMany","map","convertA2AMessageToFrameworkMessage","response","run","signal","observe","emitter","process_events","agentMessage","role","messageId","parts","text","result","push","finalUpdate","message","finished","error","errorMessage","Error","String","errorUpdate","_emitter","_requestContext","_eventBus","cancelTask","has","get","cancelledUpdate","abort","ToolCallingAgentExecutor","lastMsg","undefined","processEvent","messages","at","index","lastIndexOf","slice","update","JSON","stringify","toPlain","on","ReActAgentExecutor","updateEvent","value"],"mappings":"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","file":"agent_executor.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { v4 as uuidv4 } from \"uuid\";\n\nimport { AnyAgent } from \"@/agents/types.js\";\nimport { AgentExecutor, RequestContext, ExecutionEventBus } from \"@a2a-js/sdk/server\";\nimport { Message, TaskStatusUpdateEvent } from \"@a2a-js/sdk\";\nimport { Logger } from \"@/logger/logger.js\";\nimport { convertA2AMessageToFrameworkMessage } from \"@/adapters/a2a/agents/utils.js\";\nimport { Callback, Emitter } from \"@/emitter/emitter.js\";\nimport { ToolCallingAgentCallbacks, ToolCallingAgentRunState } from \"@/agents/toolCalling/types.js\";\nimport { ReActAgentCallbacks } from \"@/agents/react/types.js\";\nimport { Message as FrameworkMessage } from \"@/backend/message.js\";\n\nconst logger = Logger.root.child({\n name: \"A2A server\",\n});\n\nexport abstract class BaseA2AAgentExecutor implements AgentExecutor {\n protected readonly abortControllers = new Map<string, [string, AbortController]>();\n\n constructor(protected agent: AnyAgent) {}\n\n async execute(requestContext: RequestContext, eventBus: ExecutionEventBus): Promise<void> {\n const userMessage = requestContext.userMessage;\n const existingTask = requestContext.task || {\n kind: \"task\",\n id: uuidv4(),\n contextId: userMessage.contextId || uuidv4(),\n status: {\n state: \"submitted\",\n timestamp: new Date().toISOString(),\n },\n history: [userMessage],\n metadata: userMessage.metadata,\n };\n\n const taskId = existingTask.id;\n const contextId = existingTask.contextId;\n\n // Publish initial Task event if it's a new task\n eventBus.publish(existingTask);\n\n // Publish \"working\" status update\n const workingStatusUpdate: TaskStatusUpdateEvent = {\n kind: \"status-update\",\n taskId: taskId,\n contextId: contextId,\n status: {\n state: \"working\",\n timestamp: new Date().toISOString(),\n },\n final: false,\n };\n eventBus.publish(workingStatusUpdate);\n\n const abortController = new AbortController();\n this.abortControllers.set(taskId, [contextId, abortController]);\n\n const agent = await this.agent.clone();\n agent.memory = await agent.memory.clone();\n agent.memory.reset();\n await agent.memory.addMany(\n (existingTask.history || [requestContext.userMessage]).map(\n convertA2AMessageToFrameworkMessage,\n ) || [],\n );\n\n try {\n // run the agent\n const response = await agent\n .run(\n {},\n {\n signal: abortController.signal,\n },\n )\n .observe(async (emitter) => {\n await this.process_events(emitter, requestContext, eventBus);\n });\n\n const agentMessage: Message = {\n kind: \"message\",\n role: \"agent\",\n messageId: uuidv4(),\n parts: [{ kind: \"text\", text: response.result.text }],\n taskId: taskId,\n contextId: contextId,\n };\n\n // Append agent message to task history\n if (!existingTask.history) {\n existingTask.history = [];\n }\n existingTask.history.push(agentMessage);\n eventBus.publish(existingTask);\n\n // Publish completed status update with agent message\n const finalUpdate: TaskStatusUpdateEvent = {\n kind: \"status-update\",\n taskId: taskId,\n contextId: contextId,\n status: {\n state: \"completed\",\n message: agentMessage,\n timestamp: new Date().toISOString(),\n },\n final: true,\n };\n eventBus.publish(finalUpdate);\n\n eventBus.finished();\n } catch (error) {\n logger.error(\"Agent execution error:\", { error });\n const errorMessage = error instanceof Error ? error.message : String(error);\n // Publish failed status update\n const errorUpdate: TaskStatusUpdateEvent = {\n kind: \"status-update\",\n taskId: taskId,\n contextId: contextId,\n status: {\n state: \"failed\",\n message: {\n kind: \"message\",\n role: \"agent\",\n messageId: uuidv4(),\n parts: [{ kind: \"text\", text: `Agent error: ${errorMessage}` }],\n taskId: taskId,\n contextId: contextId,\n },\n timestamp: new Date().toISOString(),\n },\n final: true,\n };\n eventBus.publish(errorUpdate);\n eventBus.finished();\n }\n }\n\n async process_events(\n _emitter: Emitter,\n _requestContext: RequestContext,\n _eventBus: ExecutionEventBus,\n ): Promise<void> {\n return;\n }\n\n public cancelTask = async (taskId: string, eventBus: ExecutionEventBus): Promise<void> => {\n if (this.abortControllers.has(taskId)) {\n const [contextId, abortController] = this.abortControllers.get(taskId)!;\n const cancelledUpdate: TaskStatusUpdateEvent = {\n kind: \"status-update\",\n taskId: taskId,\n contextId: contextId,\n status: {\n state: \"canceled\",\n timestamp: new Date().toISOString(),\n },\n final: true,\n };\n eventBus.publish(cancelledUpdate);\n abortController.abort();\n }\n };\n}\n\nexport class ToolCallingAgentExecutor extends BaseA2AAgentExecutor {\n async process_events(\n emitter: Emitter<ToolCallingAgentCallbacks>,\n requestContext: RequestContext,\n eventBus: ExecutionEventBus,\n ): Promise<void> {\n let lastMsg: FrameworkMessage | undefined = undefined;\n\n const processEvent: Callback<{ state: ToolCallingAgentRunState }> = async ({ state }) => {\n const messages = state.memory.messages;\n if (lastMsg === undefined) {\n lastMsg = messages.at(-1);\n }\n\n const index = lastMsg ? messages.lastIndexOf(lastMsg) : -1;\n for (const message of messages.slice(index + 1)) {\n const update: TaskStatusUpdateEvent = {\n kind: \"status-update\",\n taskId: requestContext.taskId,\n contextId: requestContext.contextId,\n status: {\n state: \"working\",\n message: {\n kind: \"message\",\n role: \"agent\",\n messageId: uuidv4(),\n parts: [{ kind: \"text\", text: JSON.stringify(message.toPlain()) }],\n taskId: requestContext.taskId,\n contextId: requestContext.contextId,\n },\n timestamp: new Date().toISOString(),\n },\n final: false,\n };\n eventBus.publish(update);\n lastMsg = message;\n }\n };\n emitter.on(\"start\", processEvent);\n emitter.on(\"success\", processEvent);\n }\n}\n\nexport class ReActAgentExecutor extends BaseA2AAgentExecutor {\n async process_events(\n emitter: Emitter<ReActAgentCallbacks>,\n requestContext: RequestContext,\n eventBus: ExecutionEventBus,\n ): Promise<void> {\n emitter.on(\"update\", async ({ update }) => {\n const updateEvent: TaskStatusUpdateEvent = {\n kind: \"status-update\",\n taskId: requestContext.taskId,\n contextId: requestContext.contextId,\n status: {\n state: \"working\",\n message: {\n kind: \"message\",\n role: \"agent\",\n messageId: uuidv4(),\n parts: [{ kind: \"text\", text: update.value }],\n taskId: requestContext.taskId,\n contextId: requestContext.contextId,\n },\n timestamp: new Date().toISOString(),\n },\n final: false,\n };\n eventBus.publish(updateEvent);\n });\n }\n}\n"]}