@artinet/sdk 0.5.17 → 0.6.0-preview.1

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 (316) hide show
  1. package/README.md +51 -557
  2. package/dist/browser/browser.d.ts +9 -0
  3. package/dist/browser/browser.js +10 -0
  4. package/dist/browser/client/a2a-client.d.ts +127 -0
  5. package/dist/browser/client/a2a-client.js +233 -0
  6. package/dist/browser/client/index.d.ts +1 -0
  7. package/dist/browser/client/index.js +1 -0
  8. package/dist/browser/config/index.d.ts +158 -0
  9. package/dist/browser/config/index.js +155 -0
  10. package/dist/browser/config/observability.d.ts +119 -0
  11. package/dist/browser/config/observability.js +35 -0
  12. package/dist/browser/services/a2a/helpers/message-builder.d.ts +17 -0
  13. package/dist/browser/services/a2a/helpers/message-builder.js +66 -0
  14. package/dist/browser/transport/rpc/parser.d.ts +15 -0
  15. package/dist/browser/transport/rpc/parser.js +48 -0
  16. package/dist/browser/transport/rpc/rpc-client.d.ts +80 -0
  17. package/dist/browser/transport/rpc/rpc-client.js +189 -0
  18. package/dist/browser/transport/streaming/event-stream.d.ts +25 -0
  19. package/dist/browser/transport/streaming/event-stream.js +100 -0
  20. package/dist/browser/types/a2a/a2a.d.ts +378 -0
  21. package/dist/browser/types/a2a/a2a.js +14 -0
  22. package/dist/browser/types/a2a/builder.d.ts +43 -0
  23. package/dist/browser/types/a2a/index.d.ts +3 -0
  24. package/dist/browser/types/a2a/index.js +2 -0
  25. package/dist/{types/interfaces → browser/types}/client.d.ts +25 -27
  26. package/dist/browser/types/core/core.d.ts +31 -0
  27. package/dist/browser/types/core/index.d.ts +1 -0
  28. package/dist/browser/types/core/index.js +1 -0
  29. package/dist/{types/interfaces/services → browser/types}/index.d.ts +3 -0
  30. package/dist/{types/interfaces/services → browser/types}/index.js +3 -0
  31. package/dist/browser/types/mcp/index.d.ts +1 -0
  32. package/dist/browser/types/mcp/index.js +1 -0
  33. package/dist/{types/interfaces/services/mcp/service.d.ts → browser/types/mcp/mcp.d.ts} +4 -3
  34. package/dist/browser/types/mcp/mcp.js +5 -0
  35. package/dist/browser/types/storage.d.ts +21 -0
  36. package/dist/browser/types/utils/index.d.ts +1 -0
  37. package/dist/browser/types/utils/index.js +1 -0
  38. package/dist/browser/types/utils/transform.d.ts +64 -0
  39. package/dist/browser/types/utils/transform.js +35 -0
  40. package/dist/browser/utils/common/constants.d.ts +11 -0
  41. package/dist/browser/utils/common/constants.js +38 -0
  42. package/dist/browser/utils/common/errors.d.ts +24 -0
  43. package/dist/browser/utils/common/errors.js +42 -0
  44. package/dist/browser/utils/common/utils.d.ts +32 -0
  45. package/dist/browser/utils/common/utils.js +43 -0
  46. package/dist/client/a2a-client.d.ts +21 -19
  47. package/dist/client/a2a-client.js +30 -9
  48. package/dist/config/default.d.ts +50 -0
  49. package/dist/config/default.js +62 -0
  50. package/dist/config/index.d.ts +158 -0
  51. package/dist/config/index.js +155 -0
  52. package/dist/config/observability.d.ts +119 -0
  53. package/dist/config/observability.js +35 -0
  54. package/dist/extensions/otel.d.ts +98 -0
  55. package/dist/extensions/otel.js +190 -0
  56. package/dist/extensions/pino.d.ts +44 -0
  57. package/dist/extensions/pino.js +107 -0
  58. package/dist/extensions/winston.d.ts +47 -0
  59. package/dist/extensions/winston.js +114 -0
  60. package/dist/index.d.ts +2 -0
  61. package/dist/index.js +2 -0
  62. package/dist/server/express/errors.js +3 -3
  63. package/dist/server/express/middeware.d.ts +2 -2
  64. package/dist/server/express/middeware.js +36 -9
  65. package/dist/server/express/server.d.ts +9 -55
  66. package/dist/server/express/server.js +51 -32
  67. package/dist/services/a2a/execute.d.ts +6 -0
  68. package/dist/services/a2a/execute.js +25 -0
  69. package/dist/services/a2a/factory/builder.d.ts +21 -80
  70. package/dist/services/a2a/factory/builder.js +23 -13
  71. package/dist/services/a2a/factory/context.d.ts +15 -128
  72. package/dist/services/a2a/factory/context.js +31 -136
  73. package/dist/services/a2a/factory/handler.d.ts +6 -0
  74. package/dist/services/a2a/factory/{method.js → handler.js} +2 -2
  75. package/dist/services/a2a/factory/index.d.ts +1 -2
  76. package/dist/services/a2a/factory/index.js +1 -2
  77. package/dist/services/a2a/factory/service.d.ts +20 -7
  78. package/dist/services/a2a/factory/service.js +4 -4
  79. package/dist/services/a2a/factory/state-machine.d.ts +11 -0
  80. package/dist/services/a2a/factory/state-machine.js +66 -0
  81. package/dist/services/a2a/{state/update → handlers}/artifact.d.ts +4 -4
  82. package/dist/services/a2a/handlers/cancel-task.d.ts +11 -0
  83. package/dist/services/a2a/handlers/cancel-task.js +33 -0
  84. package/dist/services/a2a/handlers/get-task.d.ts +11 -0
  85. package/dist/services/a2a/handlers/get-task.js +13 -0
  86. package/dist/services/a2a/handlers/resubscribe-task.d.ts +11 -0
  87. package/dist/services/a2a/handlers/resubscribe-task.js +56 -0
  88. package/dist/services/a2a/handlers/send-message.d.ts +11 -0
  89. package/dist/services/a2a/handlers/send-message.js +35 -0
  90. package/dist/services/a2a/handlers/stream-message.d.ts +11 -0
  91. package/dist/services/a2a/handlers/stream-message.js +19 -0
  92. package/dist/services/a2a/handlers/update.d.ts +17 -0
  93. package/dist/services/a2a/handlers/update.js +114 -0
  94. package/dist/services/a2a/helpers/agentcard-builder.d.ts +9 -5
  95. package/dist/services/a2a/helpers/agentcard-builder.js +5 -0
  96. package/dist/services/a2a/helpers/content.d.ts +2 -2
  97. package/dist/services/a2a/helpers/content.js +4 -0
  98. package/dist/services/a2a/helpers/history.d.ts +6 -0
  99. package/dist/services/a2a/helpers/history.js +7 -0
  100. package/dist/services/a2a/helpers/index.d.ts +3 -1
  101. package/dist/services/a2a/helpers/index.js +3 -1
  102. package/dist/services/a2a/helpers/message-builder.d.ts +13 -8
  103. package/dist/services/a2a/helpers/message-builder.js +5 -0
  104. package/dist/services/a2a/helpers/part.d.ts +9 -9
  105. package/dist/services/a2a/helpers/references.d.ts +6 -0
  106. package/dist/services/a2a/helpers/references.js +22 -0
  107. package/dist/services/a2a/index.d.ts +9 -5
  108. package/dist/services/a2a/index.js +8 -5
  109. package/dist/services/a2a/managers.d.ts +23 -0
  110. package/dist/services/a2a/managers.js +95 -0
  111. package/dist/services/a2a/messenger.d.ts +35 -0
  112. package/dist/services/{core/managers/command.js → a2a/messenger.js} +27 -31
  113. package/dist/services/a2a/service.d.ts +41 -371
  114. package/dist/services/a2a/service.js +239 -70
  115. package/dist/services/a2a/state-machine.d.ts +18 -0
  116. package/dist/services/a2a/state-machine.js +76 -0
  117. package/dist/services/a2a/streams.d.ts +22 -0
  118. package/dist/services/a2a/streams.js +98 -0
  119. package/dist/services/core/index.d.ts +1 -2
  120. package/dist/services/core/index.js +1 -2
  121. package/dist/services/core/manager.d.ts +15 -0
  122. package/dist/services/core/manager.js +42 -0
  123. package/dist/services/mcp/service.d.ts +11 -15
  124. package/dist/services/mcp/service.js +16 -16
  125. package/dist/transport/index.d.ts +0 -1
  126. package/dist/transport/index.js +1 -1
  127. package/dist/transport/rpc/parser.d.ts +2 -2
  128. package/dist/transport/rpc/parser.js +7 -7
  129. package/dist/transport/rpc/rpc-client.d.ts +5 -5
  130. package/dist/transport/rpc/rpc-client.js +7 -7
  131. package/dist/transport/streaming/event-stream.d.ts +3 -3
  132. package/dist/transport/streaming/event-stream.js +11 -10
  133. package/dist/transport/trpc/a2a/factory/router.d.ts +479 -871
  134. package/dist/transport/trpc/a2a/factory/router.js +2 -2
  135. package/dist/transport/trpc/a2a/routes/info.d.ts +108 -8
  136. package/dist/transport/trpc/a2a/routes/info.js +6 -2
  137. package/dist/transport/trpc/a2a/routes/message/route.d.ts +113 -162
  138. package/dist/transport/trpc/a2a/routes/message/route.js +7 -13
  139. package/dist/transport/trpc/a2a/routes/tasks/route.d.ts +114 -212
  140. package/dist/transport/trpc/a2a/routes/tasks/route.js +16 -19
  141. package/dist/transport/trpc/a2a/trpc.d.ts +9 -253
  142. package/dist/types/a2a/a2a.d.ts +378 -0
  143. package/dist/types/a2a/a2a.js +14 -0
  144. package/dist/types/a2a/builder.d.ts +43 -0
  145. package/dist/types/a2a/index.d.ts +3 -0
  146. package/dist/types/a2a/index.js +2 -0
  147. package/dist/types/client.d.ts +133 -0
  148. package/dist/types/core/core.d.ts +31 -0
  149. package/dist/types/core/core.js +1 -0
  150. package/dist/types/core/index.d.ts +1 -0
  151. package/dist/types/core/index.js +1 -0
  152. package/dist/types/index.d.ts +6 -3
  153. package/dist/types/index.js +6 -3
  154. package/dist/types/mcp/index.d.ts +1 -0
  155. package/dist/types/mcp/index.js +1 -0
  156. package/dist/types/mcp/mcp.d.ts +50 -0
  157. package/dist/types/mcp/mcp.js +5 -0
  158. package/dist/types/protocol.d.ts +33 -0
  159. package/dist/types/protocol.js +34 -0
  160. package/dist/types/storage.d.ts +21 -0
  161. package/dist/utils/common/constants.d.ts +7 -7
  162. package/dist/utils/common/constants.js +10 -10
  163. package/dist/utils/common/errors.d.ts +18 -17
  164. package/dist/utils/common/errors.js +14 -13
  165. package/dist/utils/common/parse.d.ts +7 -0
  166. package/dist/utils/common/parse.js +14 -0
  167. package/dist/utils/common/schema-validation.d.ts +2 -0
  168. package/dist/utils/common/schema-validation.js +12 -0
  169. package/dist/utils/common/utils.d.ts +23 -0
  170. package/dist/utils/common/utils.js +32 -0
  171. package/dist/utils/common/zAsyncIterable-v3.d.ts +1 -1
  172. package/dist/utils/common/zAsyncIterable-v3.js +2 -1
  173. package/dist/utils/index.d.ts +3 -3
  174. package/dist/utils/index.js +3 -3
  175. package/dist/utils/storage/file.d.ts +8 -17
  176. package/dist/utils/storage/file.js +44 -73
  177. package/package.json +86 -23
  178. package/dist/services/a2a/factory/event.d.ts +0 -58
  179. package/dist/services/a2a/factory/event.js +0 -177
  180. package/dist/services/a2a/factory/method.d.ts +0 -6
  181. package/dist/services/a2a/managers/cancellation.d.ts +0 -11
  182. package/dist/services/a2a/managers/cancellation.js +0 -16
  183. package/dist/services/a2a/managers/connection.d.ts +0 -11
  184. package/dist/services/a2a/managers/connection.js +0 -16
  185. package/dist/services/a2a/managers/context.d.ts +0 -11
  186. package/dist/services/a2a/managers/context.js +0 -16
  187. package/dist/services/a2a/managers/index.d.ts +0 -5
  188. package/dist/services/a2a/managers/index.js +0 -5
  189. package/dist/services/a2a/managers/task.d.ts +0 -11
  190. package/dist/services/a2a/managers/task.js +0 -16
  191. package/dist/services/a2a/methods/cancel-task.d.ts +0 -7
  192. package/dist/services/a2a/methods/cancel-task.js +0 -43
  193. package/dist/services/a2a/methods/get-task.d.ts +0 -112
  194. package/dist/services/a2a/methods/get-task.js +0 -14
  195. package/dist/services/a2a/methods/resubscribe-task.d.ts +0 -7
  196. package/dist/services/a2a/methods/resubscribe-task.js +0 -80
  197. package/dist/services/a2a/methods/send-message.d.ts +0 -7
  198. package/dist/services/a2a/methods/send-message.js +0 -19
  199. package/dist/services/a2a/methods/stream-message.d.ts +0 -8
  200. package/dist/services/a2a/methods/stream-message.js +0 -21
  201. package/dist/services/a2a/state/index.d.ts +0 -3
  202. package/dist/services/a2a/state/index.js +0 -3
  203. package/dist/services/a2a/state/load.d.ts +0 -14
  204. package/dist/services/a2a/state/load.js +0 -71
  205. package/dist/services/a2a/state/process.d.ts +0 -7
  206. package/dist/services/a2a/state/process.js +0 -13
  207. package/dist/services/a2a/state/update/index.d.ts +0 -2
  208. package/dist/services/a2a/state/update/index.js +0 -2
  209. package/dist/services/a2a/state/update/update.d.ts +0 -23
  210. package/dist/services/a2a/state/update/update.js +0 -123
  211. package/dist/services/core/execution/execute.d.ts +0 -6
  212. package/dist/services/core/execution/execute.js +0 -25
  213. package/dist/services/core/execution/index.d.ts +0 -1
  214. package/dist/services/core/execution/index.js +0 -1
  215. package/dist/services/core/managers/command.d.ts +0 -39
  216. package/dist/services/core/managers/event.d.ts +0 -18
  217. package/dist/services/core/managers/event.js +0 -56
  218. package/dist/services/core/managers/index.d.ts +0 -3
  219. package/dist/services/core/managers/index.js +0 -3
  220. package/dist/services/core/managers/stream.d.ts +0 -20
  221. package/dist/services/core/managers/stream.js +0 -77
  222. package/dist/types/ext.d.ts +0 -13
  223. package/dist/types/ext.js +0 -10
  224. package/dist/types/interfaces/index.d.ts +0 -3
  225. package/dist/types/interfaces/index.js +0 -3
  226. package/dist/types/interfaces/services/a2a/builder.d.ts +0 -37
  227. package/dist/types/interfaces/services/a2a/context.d.ts +0 -162
  228. package/dist/types/interfaces/services/a2a/engine.d.ts +0 -7
  229. package/dist/types/interfaces/services/a2a/index.d.ts +0 -5
  230. package/dist/types/interfaces/services/a2a/index.js +0 -5
  231. package/dist/types/interfaces/services/a2a/legacy.d.ts +0 -93
  232. package/dist/types/interfaces/services/a2a/service.d.ts +0 -409
  233. package/dist/types/interfaces/services/a2a/service.js +0 -5
  234. package/dist/types/interfaces/services/core/context/command.d.ts +0 -25
  235. package/dist/types/interfaces/services/core/context/command.js +0 -5
  236. package/dist/types/interfaces/services/core/context/context.d.ts +0 -207
  237. package/dist/types/interfaces/services/core/context/context.js +0 -5
  238. package/dist/types/interfaces/services/core/context/index.d.ts +0 -3
  239. package/dist/types/interfaces/services/core/context/index.js +0 -3
  240. package/dist/types/interfaces/services/core/context/types.d.ts +0 -11
  241. package/dist/types/interfaces/services/core/context/types.js +0 -5
  242. package/dist/types/interfaces/services/core/execution/engine.d.ts +0 -106
  243. package/dist/types/interfaces/services/core/execution/engine.js +0 -5
  244. package/dist/types/interfaces/services/core/execution/environment.d.ts +0 -11
  245. package/dist/types/interfaces/services/core/execution/environment.js +0 -5
  246. package/dist/types/interfaces/services/core/execution/execute.d.ts +0 -7
  247. package/dist/types/interfaces/services/core/execution/execute.js +0 -5
  248. package/dist/types/interfaces/services/core/execution/index.d.ts +0 -3
  249. package/dist/types/interfaces/services/core/execution/index.js +0 -3
  250. package/dist/types/interfaces/services/core/index.d.ts +0 -4
  251. package/dist/types/interfaces/services/core/index.js +0 -4
  252. package/dist/types/interfaces/services/core/managers/cancellation.d.ts +0 -9
  253. package/dist/types/interfaces/services/core/managers/cancellation.js +0 -5
  254. package/dist/types/interfaces/services/core/managers/connection.d.ts +0 -9
  255. package/dist/types/interfaces/services/core/managers/connection.js +0 -5
  256. package/dist/types/interfaces/services/core/managers/context.d.ts +0 -17
  257. package/dist/types/interfaces/services/core/managers/context.js +0 -5
  258. package/dist/types/interfaces/services/core/managers/event.d.ts +0 -328
  259. package/dist/types/interfaces/services/core/managers/event.js +0 -5
  260. package/dist/types/interfaces/services/core/managers/index.d.ts +0 -6
  261. package/dist/types/interfaces/services/core/managers/index.js +0 -6
  262. package/dist/types/interfaces/services/core/managers/stream.d.ts +0 -217
  263. package/dist/types/interfaces/services/core/managers/stream.js +0 -5
  264. package/dist/types/interfaces/services/core/managers/task.d.ts +0 -9
  265. package/dist/types/interfaces/services/core/service.d.ts +0 -115
  266. package/dist/types/interfaces/services/core/service.js +0 -5
  267. package/dist/types/interfaces/services/mcp/index.d.ts +0 -1
  268. package/dist/types/interfaces/services/mcp/index.js +0 -1
  269. package/dist/types/interfaces/services/mcp/service.js +0 -5
  270. package/dist/types/interfaces/storage.d.ts +0 -8
  271. package/dist/types/schemas/a2a/agent.d.ts +0 -2583
  272. package/dist/types/schemas/a2a/agent.js +0 -323
  273. package/dist/types/schemas/a2a/auth.d.ts +0 -908
  274. package/dist/types/schemas/a2a/auth.js +0 -283
  275. package/dist/types/schemas/a2a/error.d.ts +0 -396
  276. package/dist/types/schemas/a2a/error.js +0 -163
  277. package/dist/types/schemas/a2a/index.d.ts +0 -11
  278. package/dist/types/schemas/a2a/index.js +0 -11
  279. package/dist/types/schemas/a2a/kind.d.ts +0 -11
  280. package/dist/types/schemas/a2a/kind.js +0 -20
  281. package/dist/types/schemas/a2a/message.d.ts +0 -10343
  282. package/dist/types/schemas/a2a/message.js +0 -130
  283. package/dist/types/schemas/a2a/notification.d.ts +0 -1517
  284. package/dist/types/schemas/a2a/notification.js +0 -203
  285. package/dist/types/schemas/a2a/parameters.d.ts +0 -956
  286. package/dist/types/schemas/a2a/parameters.js +0 -241
  287. package/dist/types/schemas/a2a/protocol.d.ts +0 -14363
  288. package/dist/types/schemas/a2a/protocol.js +0 -59
  289. package/dist/types/schemas/a2a/rpc.d.ts +0 -182
  290. package/dist/types/schemas/a2a/rpc.js +0 -126
  291. package/dist/types/schemas/a2a/task.d.ts +0 -5886
  292. package/dist/types/schemas/a2a/task.js +0 -134
  293. package/dist/types/schemas/a2a/transport.d.ts +0 -31
  294. package/dist/types/schemas/a2a/transport.js +0 -28
  295. package/dist/types/schemas/index.d.ts +0 -1
  296. package/dist/types/schemas/index.js +0 -1
  297. package/dist/utils/logging/index.d.ts +0 -2
  298. package/dist/utils/logging/index.js +0 -2
  299. package/dist/utils/logging/log.d.ts +0 -33
  300. package/dist/utils/logging/log.js +0 -75
  301. package/dist/utils/logging/logger.d.ts +0 -18
  302. package/dist/utils/logging/logger.js +0 -18
  303. package/dist/utils/storage/memory.d.ts +0 -25
  304. package/dist/utils/storage/memory.js +0 -47
  305. /package/dist/{types/interfaces/services → browser/types}/a2a/builder.js +0 -0
  306. /package/dist/{types/interfaces → browser/types}/client.js +0 -0
  307. /package/dist/{types/interfaces/services/core/managers/task.js → browser/types/core/core.js} +0 -0
  308. /package/dist/{types/interfaces/services → browser/types}/protocol.d.ts +0 -0
  309. /package/dist/{types/interfaces/services → browser/types}/protocol.js +0 -0
  310. /package/dist/{types/interfaces → browser/types}/storage.js +0 -0
  311. /package/dist/services/a2a/{state/update → handlers}/artifact.js +0 -0
  312. /package/dist/services/a2a/{methods → handlers}/index.d.ts +0 -0
  313. /package/dist/services/a2a/{methods → handlers}/index.js +0 -0
  314. /package/dist/types/{interfaces/services/a2a/context.js → a2a/builder.js} +0 -0
  315. /package/dist/types/{interfaces/services/a2a/engine.js → client.js} +0 -0
  316. /package/dist/types/{interfaces/services/a2a/legacy.js → storage.js} +0 -0
@@ -3,68 +3,22 @@
3
3
  * SPDX-License-Identifier: Apache-2.0
4
4
  */
5
5
  import express from "express";
6
- import { Agent, FactoryParams as CreateAgentParams } from "../../types/index.js";
6
+ import { A2A } from "../../types/index.js";
7
+ import { Agent } from "../../services/a2a/index.js";
8
+ import { ServiceParams as CreateAgentParams } from "../../services/index.js";
7
9
  import { CorsOptions } from "cors";
8
10
  export interface ServerParams {
9
11
  app?: express.Express;
10
12
  corsOptions?: CorsOptions;
11
13
  basePath?: string;
12
- }
13
- export declare function createAgentServer(params: ServerParams & {
14
+ extendedAgentCard?: A2A.AgentCard;
14
15
  agent: Agent | CreateAgentParams;
15
16
  agentCardPath?: string;
16
17
  register?: boolean;
17
- }): {
18
- app: import("express-serve-static-core").Express;
19
- agent: Agent<{
20
- message: {
21
- role: "user" | "agent";
22
- kind: "message";
23
- parts: ({
24
- file: {
25
- bytes: string;
26
- name?: string | undefined;
27
- mimeType?: string | undefined;
28
- uri?: undefined;
29
- } | {
30
- uri: string;
31
- name?: string | undefined;
32
- bytes?: undefined;
33
- mimeType?: string | undefined;
34
- };
35
- kind: "file";
36
- metadata?: Record<string, unknown> | undefined;
37
- } | {
38
- text: string;
39
- kind: "text";
40
- metadata?: Record<string, unknown> | undefined;
41
- } | {
42
- data: Record<string, unknown>;
43
- kind: "data";
44
- metadata?: Record<string, unknown> | undefined;
45
- })[];
46
- messageId: string;
47
- metadata?: Record<string, unknown> | undefined;
48
- extensions?: string[] | undefined;
49
- referenceTaskIds?: string[] | undefined;
50
- taskId?: string | undefined;
51
- contextId?: string | undefined;
52
- };
53
- metadata?: Record<string, unknown> | undefined;
54
- configuration?: {
55
- historyLength?: number | undefined;
56
- pushNotificationConfig?: {
57
- url: string;
58
- id?: string | undefined;
59
- token?: string | undefined;
60
- authentication?: {
61
- schemes: string[];
62
- credentials?: string | undefined;
63
- } | undefined;
64
- } | undefined;
65
- acceptedOutputModes?: string[] | undefined;
66
- blocking?: boolean | undefined;
67
- } | undefined;
68
- }, import("../../types/index.js").TaskAndHistory, import("../../types/index.js").UpdateEvent>;
18
+ }
19
+ export declare function rpcParser(req: express.Request, res: express.Response, next: express.NextFunction): void;
20
+ export declare function createAgentServer({ app, basePath, agentCardPath, agent, corsOptions, extendedAgentCard, }: ServerParams): {
21
+ app: express.Express;
22
+ agent: Agent;
69
23
  };
70
24
  export type ExpressAgentServer = ReturnType<typeof createAgentServer>;
@@ -3,46 +3,65 @@
3
3
  * SPDX-License-Identifier: Apache-2.0
4
4
  */
5
5
  import express from "express";
6
- import { INVALID_REQUEST } from "../../utils/index.js";
7
- import { createAgent } from "../../services/index.js";
6
+ import { INVALID_REQUEST, PARSE_ERROR } from "../../utils/index.js";
7
+ import { createAgent, Service, } from "../../services/index.js";
8
8
  import cors from "cors";
9
9
  import { jsonRPCMiddleware } from "./middeware.js";
10
10
  import { errorHandler } from "./errors.js";
11
- function ensureAgent(agentOrParams) {
12
- if (agentOrParams &&
13
- typeof agentOrParams === "object" &&
14
- "agentCard" in agentOrParams &&
15
- typeof agentOrParams.agentCard === "object" &&
16
- "sendMessage" in agentOrParams &&
17
- typeof agentOrParams.sendMessage === "function" &&
18
- "streamMessage" in agentOrParams &&
19
- typeof agentOrParams.streamMessage === "function" &&
20
- "addConnection" in agentOrParams &&
21
- typeof agentOrParams.addConnection === "function" &&
22
- "removeConnection" in agentOrParams &&
23
- typeof agentOrParams.removeConnection === "function" &&
24
- "getState" in agentOrParams &&
25
- typeof agentOrParams.getState === "function" &&
26
- "setState" in agentOrParams &&
27
- typeof agentOrParams.setState === "function") {
28
- return agentOrParams;
29
- }
30
- else if (agentOrParams &&
11
+ export function rpcParser(req, res, next) {
12
+ express.json()(req, res, (err) => {
13
+ if (!req.body || typeof req.body !== "object") {
14
+ return next(PARSE_ERROR({
15
+ data: { message: "Invalid request body" },
16
+ }));
17
+ }
18
+ if (err) {
19
+ if (err instanceof SyntaxError &&
20
+ "status" in err &&
21
+ err.status === 400 &&
22
+ "body" in err) {
23
+ return next(PARSE_ERROR({
24
+ data: err.message,
25
+ }));
26
+ }
27
+ return next(err);
28
+ }
29
+ next();
30
+ });
31
+ }
32
+ const isParams = (agentOrParams) => {
33
+ return (agentOrParams &&
31
34
  typeof agentOrParams === "object" &&
32
35
  "engine" in agentOrParams &&
33
36
  typeof agentOrParams.engine === "function" &&
34
37
  "agentCard" in agentOrParams &&
35
- typeof agentOrParams.agentCard === "object") {
38
+ typeof agentOrParams.agentCard === "object");
39
+ };
40
+ const ensureAgent = (agentOrParams) => {
41
+ if (agentOrParams instanceof Service) {
42
+ return agentOrParams;
43
+ }
44
+ else if (isParams(agentOrParams)) {
36
45
  return createAgent(agentOrParams);
37
46
  }
38
47
  throw new Error("invalid agent or params");
39
- }
40
- export function createAgentServer(params) {
41
- const { app = express(), basePath = "/", agentCardPath = "/.well-known/agent-card.json", agent, } = params;
48
+ };
49
+ export function createAgentServer({ app = express(), basePath = "/", agentCardPath = "/.well-known/agent-card.json", agent, corsOptions, extendedAgentCard, }) {
42
50
  const agentInstance = ensureAgent(agent);
43
- app.use(express.json());
44
- app.use(cors(params.corsOptions));
45
- app.get(agentCardPath, (_, res) => {
51
+ app.use(cors(corsOptions));
52
+ if (agentCardPath !== "/.well-known/agent-card.json") {
53
+ // mount at the root for compliance with RFC8615 standard
54
+ // todo: align with emerging multi-agent standards
55
+ app.use("/.well-known/agent-card.json", (_, res) => {
56
+ res.json(agentInstance.agentCard);
57
+ });
58
+ }
59
+ app.use(agentCardPath, (_, res) => {
60
+ // mount at the custom path
61
+ res.json(agentInstance.agentCard);
62
+ });
63
+ // mount at the old agent card path for backwards compatibility
64
+ app.use("/.well-known/agent.json", (_, res) => {
46
65
  res.json(agentInstance.agentCard);
47
66
  });
48
67
  /**
@@ -51,10 +70,10 @@ export function createAgentServer(params) {
51
70
  * transport layer.
52
71
  */
53
72
  //a standard express middleware to handle json-rpc requests
54
- app.post(basePath, express.json(), async (req, res, next) => {
73
+ app.post(basePath, rpcParser, async (req, res, next) => {
55
74
  const { jsonrpc } = req.body;
56
75
  if (jsonrpc === "2.0") {
57
- return await jsonRPCMiddleware(agentInstance, req, res, next);
76
+ return await jsonRPCMiddleware(agentInstance, req, res, next, extendedAgentCard);
58
77
  }
59
78
  next(INVALID_REQUEST({ data: { message: "Invalid JSON-RPC request" } }));
60
79
  });
@@ -73,7 +92,7 @@ export function createAgentServer(params) {
73
92
  },
74
93
  })
75
94
  );
76
- * we could also just use trpc directly or any other transport layer
95
+ * we could also use trpc directly or any other transport layer
77
96
  */
78
97
  return { app, agent: agentInstance };
79
98
  }
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Copyright 2025 The Artinet Project
3
+ * SPDX-License-Identifier: Apache-2.0
4
+ */
5
+ import { A2A } from "../../types/index.js";
6
+ export declare const execute: (engine: A2A.Engine, context: A2A.Context) => Promise<void>;
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Copyright 2025 The Artinet Project
3
+ * SPDX-License-Identifier: Apache-2.0
4
+ */
5
+ export const execute = async (engine, context) => {
6
+ try {
7
+ if (context.publisher.onStart) {
8
+ await context.publisher.onStart(context);
9
+ }
10
+ for await (const update of engine(context)) {
11
+ if ((await context.isCancelled()) || context.abortSignal.aborted) {
12
+ await context.publisher.onCancel(update);
13
+ break;
14
+ }
15
+ await context.publisher.onUpdate(update);
16
+ }
17
+ }
18
+ catch (error) {
19
+ await context.publisher.onError(error);
20
+ throw error;
21
+ }
22
+ finally {
23
+ await context.publisher.onComplete();
24
+ }
25
+ };
@@ -10,11 +10,12 @@
10
10
  * workflows with type-safe step composition and automatic execution orchestration.
11
11
  *
12
12
  * @module A2ABuilder
13
- * @version 0.5.7
13
+ * @version 0.6.0-preview
14
14
  * @since 0.5.6
15
15
  * @author The Artinet Project
16
16
  */
17
- import { StepBuilder, Step, StepOutput, StepOutputWithForwardArgs, MessageSendParams, TextPart, DataPart, FilePart, AgentEngine, StepWithKind, FactoryParams } from "../../../types/index.js";
17
+ import { StepBuilder, Step, A2A, StepWithKind, OutputType, BaseArgs, EmptyArgs, OutArgsOf, PartContent } from "../../../types/index.js";
18
+ import { ServiceParams } from "./service.js";
18
19
  /**
19
20
  * Type alias for text-based workflow steps.
20
21
  *
@@ -24,7 +25,7 @@ import { StepBuilder, Step, StepOutput, StepOutputWithForwardArgs, MessageSendPa
24
25
  * decision making.
25
26
  *
26
27
  * @template TCommand - The command type, defaults to MessageSendParams
27
- * @template TPart - The text part type, defaults to TextPart["text"]
28
+ * @template TPart - The text part type, defaults to A2A.TextPart["text"]
28
29
  * @template TInboundArgs - Arguments received from previous step
29
30
  * @template TForwardArgs - Arguments passed to next step
30
31
  * @template TOutput - The output type of the step
@@ -40,7 +41,7 @@ import { StepBuilder, Step, StepOutput, StepOutputWithForwardArgs, MessageSendPa
40
41
  * @public
41
42
  * @since 0.5.6
42
43
  */
43
- export type textStep<TCommand extends MessageSendParams = MessageSendParams, TPart extends TextPart["text"] = TextPart["text"], TInboundArgs extends readonly unknown[] = [], TForwardArgs extends readonly unknown[] = [], TOutput extends StepOutput<TPart> | StepOutputWithForwardArgs<TPart, TForwardArgs> | Array<TPart> | TPart = StepOutput<TPart>> = Step<TCommand, TPart, TInboundArgs, TForwardArgs, TOutput>;
44
+ export type textStep<TInboundArgs extends BaseArgs = EmptyArgs, TForwardArgs extends BaseArgs = EmptyArgs, TOutput extends OutputType<A2A.TextPart["text"], TForwardArgs> = OutputType<A2A.TextPart["text"], TForwardArgs>> = Step<A2A.TextPart["text"], TInboundArgs, TForwardArgs, TOutput>;
44
45
  /**
45
46
  * Type alias for file-based workflow steps.
46
47
  *
@@ -49,7 +50,7 @@ export type textStep<TCommand extends MessageSendParams = MessageSendParams, TPa
49
50
  * file generation, and file-based data operations.
50
51
  *
51
52
  * @template TCommand - The command type, defaults to MessageSendParams
52
- * @template TPart - The file part type, defaults to FilePart["file"]
53
+ * @template TPart - The file part type, defaults to A2A.FilePart["file"]
53
54
  * @template TInboundArgs - Arguments received from previous step
54
55
  * @template TForwardArgs - Arguments passed to next step
55
56
  * @template TOutput - The output type of the step
@@ -69,7 +70,7 @@ export type textStep<TCommand extends MessageSendParams = MessageSendParams, TPa
69
70
  * @public
70
71
  * @since 0.5.6
71
72
  */
72
- export type fileStep<TCommand extends MessageSendParams = MessageSendParams, TPart extends FilePart["file"] = FilePart["file"], TInboundArgs extends readonly unknown[] = [], TForwardArgs extends readonly unknown[] = [], TOutput extends StepOutput<TPart> | StepOutputWithForwardArgs<TPart, TForwardArgs> | Array<TPart> | TPart = StepOutput<TPart>> = Step<TCommand, TPart, TInboundArgs, TForwardArgs, TOutput>;
73
+ export type fileStep<TInboundArgs extends BaseArgs = EmptyArgs, TForwardArgs extends BaseArgs = EmptyArgs, TOutput extends OutputType<A2A.FilePart["file"], TForwardArgs> = OutputType<A2A.FilePart["file"], TForwardArgs>> = Step<A2A.FilePart["file"], TInboundArgs, TForwardArgs, TOutput>;
73
74
  /**
74
75
  * Type alias for data-based workflow steps.
75
76
  *
@@ -78,7 +79,7 @@ export type fileStep<TCommand extends MessageSendParams = MessageSendParams, TPa
78
79
  * and structured data transformations.
79
80
  *
80
81
  * @template TCommand - The command type, defaults to MessageSendParams
81
- * @template TPart - The data part type, defaults to DataPart["data"]
82
+ * @template TPart - The data part type, defaults to A2A.DataPart["data"]
82
83
  * @template TInboundArgs - Arguments received from previous step
83
84
  * @template TForwardArgs - Arguments passed to next step
84
85
  * @template TOutput - The output type of the step
@@ -98,17 +99,7 @@ export type fileStep<TCommand extends MessageSendParams = MessageSendParams, TPa
98
99
  * @public
99
100
  * @since 0.5.6
100
101
  */
101
- export type dataStep<TCommand extends MessageSendParams = MessageSendParams, TPart extends DataPart["data"] = DataPart["data"], TInboundArgs extends readonly unknown[] = [], TForwardArgs extends readonly unknown[] = [], TOutput extends StepOutput<TPart> | StepOutputWithForwardArgs<TPart, TForwardArgs> | Array<TPart> | TPart = StepOutput<TPart>> = Step<TCommand, TPart, TInboundArgs, TForwardArgs, TOutput>;
102
- /**
103
- * Utility type to extract forward arguments from step output.
104
- *
105
- * This helper type extracts the forward arguments type from a step output,
106
- * enabling proper type chaining between workflow steps.
107
- *
108
- * @template O - The output type to extract arguments from
109
- * @internal
110
- */
111
- type OutArgsOf<O> = O extends StepOutputWithForwardArgs<any, infer A> ? A : [];
102
+ export type dataStep<TInboundArgs extends BaseArgs = EmptyArgs, TForwardArgs extends BaseArgs = EmptyArgs, TOutput extends OutputType<A2A.DataPart["data"], TForwardArgs> = OutputType<A2A.DataPart["data"], TForwardArgs>> = Step<A2A.DataPart["data"], TInboundArgs, TForwardArgs, TOutput>;
112
103
  /**
113
104
  * Fluent builder for constructing A2A agent execution engines.
114
105
  *
@@ -137,14 +128,14 @@ type OutArgsOf<O> = O extends StepOutputWithForwardArgs<any, infer A> ? A : [];
137
128
  * @public
138
129
  * @since 0.5.6
139
130
  */
140
- export declare class EngineBuilder<TCommand extends MessageSendParams = MessageSendParams, TInboundArgs extends readonly unknown[] = []> implements StepBuilder<TCommand, TInboundArgs> {
131
+ export declare class EngineBuilder<TInboundArgs extends BaseArgs = EmptyArgs> implements StepBuilder<TInboundArgs> {
141
132
  private steps;
142
133
  /**
143
134
  * Protected constructor to enforce factory method usage.
144
135
  *
145
136
  * @param steps - Initial steps array
146
137
  */
147
- protected constructor(steps?: Array<StepWithKind<TCommand, any, any, any, any, any>>);
138
+ protected constructor(steps?: Array<StepWithKind<any, any, any, any, any>>);
148
139
  /**
149
140
  * Creates a new EngineBuilder instance.
150
141
  *
@@ -157,8 +148,8 @@ export declare class EngineBuilder<TCommand extends MessageSendParams = MessageS
157
148
  * const builder = EngineBuilder.create<MyCommand, [string, number]>();
158
149
  * ```
159
150
  */
160
- static create<TCommand extends MessageSendParams = MessageSendParams, TInboundArgs extends readonly unknown[] = []>(): EngineBuilder<TCommand, TInboundArgs>;
161
- addStep<TPart extends DataPart["data"] | FilePart["file"] | TextPart["text"] = TextPart["text"], TForwardArgs extends readonly unknown[] = [], TOutput extends StepOutput<TPart> | StepOutputWithForwardArgs<TPart, TForwardArgs> | Array<TPart> | TPart = StepOutput<TPart>, TKind extends "text" | "file" | "data" = "text">(step: StepWithKind<TCommand, TPart, TInboundArgs, TForwardArgs, TOutput, TKind>): EngineBuilder<TCommand, OutArgsOf<TOutput>>;
151
+ static create<TInboundArgs extends BaseArgs = EmptyArgs>(): EngineBuilder<TInboundArgs>;
152
+ addStep<TPart extends PartContent = A2A.TextPart["text"], TForwardArgs extends BaseArgs = EmptyArgs, TOutput extends OutputType<TPart, TForwardArgs> = OutputType<TPart, TForwardArgs>, TKind extends "text" | "file" | "data" = "text">(step: StepWithKind<TPart, TInboundArgs, TForwardArgs, TOutput, TKind>): EngineBuilder<OutArgsOf<TOutput>>;
162
153
  /**
163
154
  * Adds a text processing step to the workflow.
164
155
  *
@@ -175,7 +166,7 @@ export declare class EngineBuilder<TCommand extends MessageSendParams = MessageS
175
166
  * });
176
167
  * ```
177
168
  */
178
- text<TPart extends TextPart["text"] = TextPart["text"], TForwardArgs extends readonly unknown[] = [], TOutput extends StepOutput<TPart> | StepOutputWithForwardArgs<TPart, TForwardArgs> | Array<TPart> | TPart = StepOutput<TPart>>(step: textStep<TCommand, TPart, TInboundArgs, TForwardArgs, TOutput>): EngineBuilder<TCommand, OutArgsOf<TOutput>>;
169
+ text<TForwardArgs extends BaseArgs = EmptyArgs, TOutput extends OutputType<A2A.TextPart["text"], TForwardArgs> = OutputType<A2A.TextPart["text"], TForwardArgs>>(step: textStep<TInboundArgs, TForwardArgs, TOutput> | string): EngineBuilder<OutArgsOf<TOutput>>;
179
170
  /**
180
171
  * Adds a file processing step to the workflow.
181
172
  *
@@ -196,7 +187,7 @@ export declare class EngineBuilder<TCommand extends MessageSendParams = MessageS
196
187
  * });
197
188
  * ```
198
189
  */
199
- file<TPart extends FilePart["file"] = FilePart["file"], TForwardArgs extends readonly unknown[] = [], TOutput extends StepOutput<TPart> | StepOutputWithForwardArgs<TPart, TForwardArgs> | Array<TPart> | TPart = StepOutput<TPart>>(step: fileStep<TCommand, TPart, TInboundArgs, TForwardArgs, TOutput>): EngineBuilder<TCommand, OutArgsOf<TOutput>>;
190
+ file<TForwardArgs extends BaseArgs = EmptyArgs, TOutput extends OutputType<A2A.FilePart["file"], TForwardArgs> = OutputType<A2A.FilePart["file"], TForwardArgs>>(step: fileStep<TInboundArgs, TForwardArgs, TOutput>): EngineBuilder<OutArgsOf<TOutput>>;
200
191
  /**
201
192
  * Adds a data processing step to the workflow.
202
193
  *
@@ -216,7 +207,7 @@ export declare class EngineBuilder<TCommand extends MessageSendParams = MessageS
216
207
  * });
217
208
  * ```
218
209
  */
219
- data<TPart extends DataPart["data"] = DataPart["data"], TForwardArgs extends readonly unknown[] = [], TOutput extends StepOutput<TPart> | StepOutputWithForwardArgs<TPart, TForwardArgs> | Array<TPart> | TPart = StepOutput<TPart>>(step: dataStep<TCommand, TPart, TInboundArgs, TForwardArgs, TOutput>): EngineBuilder<TCommand, OutArgsOf<TOutput>>;
210
+ data<TForwardArgs extends BaseArgs = EmptyArgs, TOutput extends OutputType<A2A.DataPart["data"], TForwardArgs> = OutputType<A2A.DataPart["data"], TForwardArgs>>(step: dataStep<TInboundArgs, TForwardArgs, TOutput>): EngineBuilder<OutArgsOf<TOutput>>;
220
211
  /**
221
212
  * Creates a complete A2A agent using the built workflow.
222
213
  *
@@ -234,7 +225,7 @@ export declare class EngineBuilder<TCommand extends MessageSendParams = MessageS
234
225
  * });
235
226
  * ```
236
227
  */
237
- createAgent(params: Omit<FactoryParams, "engine">): import("../service.js").A2AService;
228
+ createAgent(params: Omit<ServiceParams, "engine">): import("../service.js").Service;
238
229
  /**
239
230
  * Creates an agent execution engine from the built workflow.
240
231
  *
@@ -246,7 +237,7 @@ export declare class EngineBuilder<TCommand extends MessageSendParams = MessageS
246
237
  * // Use engine with service execution
247
238
  * ```
248
239
  */
249
- createAgentEngine(): AgentEngine;
240
+ createAgentEngine(): A2A.Engine;
250
241
  /**
251
242
  * Builds the step list for the workflow.
252
243
  *
@@ -258,7 +249,7 @@ export declare class EngineBuilder<TCommand extends MessageSendParams = MessageS
258
249
  * const steps = builder.build();
259
250
  * ```
260
251
  */
261
- build(): StepWithKind<TCommand, any, any, any, any, any>[];
252
+ build(): StepWithKind<any, any, any, any, any>[];
262
253
  }
263
254
  /**
264
255
  * Convenience factory function for creating an agent builder with default parameters.
@@ -275,56 +266,7 @@ export declare class EngineBuilder<TCommand extends MessageSendParams = MessageS
275
266
  * @public
276
267
  * @since 0.5.6
277
268
  */
278
- export declare const AgentBuilder: () => EngineBuilder<{
279
- message: {
280
- role: "user" | "agent";
281
- kind: "message";
282
- parts: ({
283
- file: {
284
- bytes: string;
285
- name?: string | undefined;
286
- mimeType?: string | undefined;
287
- uri?: undefined;
288
- } | {
289
- uri: string;
290
- name?: string | undefined;
291
- bytes?: undefined;
292
- mimeType?: string | undefined;
293
- };
294
- kind: "file";
295
- metadata?: Record<string, unknown> | undefined;
296
- } | {
297
- text: string;
298
- kind: "text";
299
- metadata?: Record<string, unknown> | undefined;
300
- } | {
301
- data: Record<string, unknown>;
302
- kind: "data";
303
- metadata?: Record<string, unknown> | undefined;
304
- })[];
305
- messageId: string;
306
- metadata?: Record<string, unknown> | undefined;
307
- extensions?: string[] | undefined;
308
- referenceTaskIds?: string[] | undefined;
309
- taskId?: string | undefined;
310
- contextId?: string | undefined;
311
- };
312
- metadata?: Record<string, unknown> | undefined;
313
- configuration?: {
314
- historyLength?: number | undefined;
315
- pushNotificationConfig?: {
316
- url: string;
317
- id?: string | undefined;
318
- token?: string | undefined;
319
- authentication?: {
320
- schemes: string[];
321
- credentials?: string | undefined;
322
- } | undefined;
323
- } | undefined;
324
- acceptedOutputModes?: string[] | undefined;
325
- blocking?: boolean | undefined;
326
- } | undefined;
327
- }, []>;
269
+ export declare const AgentBuilder: () => EngineBuilder<EmptyArgs>;
328
270
  /**
329
271
  * Creates an agent execution engine from a list of workflow steps.
330
272
  *
@@ -347,5 +289,4 @@ export declare const AgentBuilder: () => EngineBuilder<{
347
289
  * @public
348
290
  * @since 0.5.6
349
291
  */
350
- export declare function createAgentExecutor(stepsList: StepWithKind[]): AgentEngine;
351
- export {};
292
+ export declare function createAgentExecutor(stepsList: StepWithKind[]): A2A.Engine;
@@ -10,11 +10,11 @@
10
10
  * workflows with type-safe step composition and automatic execution orchestration.
11
11
  *
12
12
  * @module A2ABuilder
13
- * @version 0.5.7
13
+ * @version 0.6.0-preview
14
14
  * @since 0.5.6
15
15
  * @author The Artinet Project
16
16
  */
17
- import { TaskState, } from "../../../types/index.js";
17
+ import { A2A, } from "../../../types/index.js";
18
18
  import { createAgent } from "./service.js";
19
19
  import { v4 as uuidv4 } from "uuid";
20
20
  import { getContent } from "../helpers/content.js";
@@ -76,10 +76,7 @@ export class EngineBuilder {
76
76
  return new EngineBuilder();
77
77
  }
78
78
  addStep(step) {
79
- return new EngineBuilder([
80
- ...this.steps,
81
- step,
82
- ]);
79
+ return new EngineBuilder([...this.steps, step]);
83
80
  }
84
81
  /**
85
82
  * Adds a text processing step to the workflow.
@@ -99,7 +96,7 @@ export class EngineBuilder {
99
96
  */
100
97
  text(step) {
101
98
  return this.addStep({
102
- step: step,
99
+ step: typeof step === "string" ? () => step : step,
103
100
  kind: "text",
104
101
  });
105
102
  }
@@ -285,20 +282,25 @@ const partToMessagePart = (kind, part) => {
285
282
  */
286
283
  export function createAgentExecutor(stepsList) {
287
284
  return async function* (context) {
288
- const content = getContent(context.command.message);
285
+ const content = getContent(context.userMessage);
286
+ let _skipStep = false;
289
287
  const stepArgs = {
290
- command: context.command,
288
+ message: context.messages,
291
289
  context: context,
292
290
  content: content,
293
- args: [],
291
+ skip: () => {
292
+ _skipStep = true;
293
+ return;
294
+ },
294
295
  };
295
296
  const contextId = context.contextId;
296
- const taskId = context.State().task.id;
297
+ const taskId = context.taskId;
297
298
  if (!contextId || !taskId) {
298
299
  throw new Error("Context ID and task ID are required");
299
300
  }
300
301
  const taskStarted = SUBMITTED_UPDATE(taskId, contextId);
301
302
  yield taskStarted;
303
+ let finalState = A2A.TaskState.completed;
302
304
  const finalMessage = {
303
305
  taskId: taskId,
304
306
  contextId: contextId,
@@ -308,7 +310,15 @@ export function createAgentExecutor(stepsList) {
308
310
  parts: [],
309
311
  };
310
312
  for (const step of stepsList) {
313
+ if (await context.isCancelled()) {
314
+ finalState = A2A.TaskState.canceled;
315
+ break;
316
+ }
311
317
  const ret = await step.step({ ...stepArgs });
318
+ if (_skipStep) {
319
+ _skipStep = false;
320
+ continue;
321
+ }
312
322
  let parts = [];
313
323
  if (Array.isArray(ret)) {
314
324
  parts = ret.map((part) => partToMessagePart(step.kind, part));
@@ -320,7 +330,7 @@ export function createAgentExecutor(stepsList) {
320
330
  });
321
331
  yield taskStatusUpdate;
322
332
  }
323
- else if (ret !== null && typeof ret === "object") {
333
+ else if (ret !== null && typeof ret === "object" && "parts" in ret) {
324
334
  parts = Array.isArray(ret.parts)
325
335
  ? ret.parts.map((part) => partToMessagePart(step.kind, part))
326
336
  : [partToMessagePart(step.kind, ret.parts)];
@@ -350,7 +360,7 @@ export function createAgentExecutor(stepsList) {
350
360
  id: taskId,
351
361
  contextId: contextId,
352
362
  status: {
353
- state: TaskState.completed,
363
+ state: finalState,
354
364
  timestamp: new Date().toISOString(),
355
365
  message: finalMessage,
356
366
  },