@sprinterai/runtime 0.3.0 → 0.5.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 (385) hide show
  1. package/LICENSE +21 -0
  2. package/dist/adapters/a2a-adapter.d.ts +37 -9
  3. package/dist/adapters/a2a-adapter.d.ts.map +1 -1
  4. package/dist/adapters/a2a-adapter.js +132 -9
  5. package/dist/adapters/a2a-adapter.js.map +1 -1
  6. package/dist/adapters/a2a-adapter.test.d.ts +2 -0
  7. package/dist/adapters/a2a-adapter.test.d.ts.map +1 -0
  8. package/dist/adapters/a2a-adapter.test.js +295 -0
  9. package/dist/adapters/a2a-adapter.test.js.map +1 -0
  10. package/dist/adapters/http-agent-adapter.d.ts +19 -9
  11. package/dist/adapters/http-agent-adapter.d.ts.map +1 -1
  12. package/dist/adapters/http-agent-adapter.js +55 -9
  13. package/dist/adapters/http-agent-adapter.js.map +1 -1
  14. package/dist/adapters/http-agent-adapter.test.d.ts +2 -0
  15. package/dist/adapters/http-agent-adapter.test.d.ts.map +1 -0
  16. package/dist/adapters/http-agent-adapter.test.js +164 -0
  17. package/dist/adapters/http-agent-adapter.test.js.map +1 -0
  18. package/dist/adapters/index.d.ts +8 -8
  19. package/dist/adapters/index.d.ts.map +1 -1
  20. package/dist/adapters/index.js +4 -4
  21. package/dist/adapters/index.js.map +1 -1
  22. package/dist/adapters/mcp-adapter.d.ts +29 -9
  23. package/dist/adapters/mcp-adapter.d.ts.map +1 -1
  24. package/dist/adapters/mcp-adapter.js +43 -8
  25. package/dist/adapters/mcp-adapter.js.map +1 -1
  26. package/dist/adapters/mcp-adapter.test.d.ts +2 -0
  27. package/dist/adapters/mcp-adapter.test.d.ts.map +1 -0
  28. package/dist/adapters/mcp-adapter.test.js +118 -0
  29. package/dist/adapters/mcp-adapter.test.js.map +1 -0
  30. package/dist/adapters/openclaw-adapter.d.ts +34 -8
  31. package/dist/adapters/openclaw-adapter.d.ts.map +1 -1
  32. package/dist/adapters/openclaw-adapter.js +38 -8
  33. package/dist/adapters/openclaw-adapter.js.map +1 -1
  34. package/dist/adapters/openclaw-adapter.test.d.ts +2 -0
  35. package/dist/adapters/openclaw-adapter.test.d.ts.map +1 -0
  36. package/dist/adapters/openclaw-adapter.test.js +77 -0
  37. package/dist/adapters/openclaw-adapter.test.js.map +1 -0
  38. package/dist/agent/agent-registry.test.js +1 -1
  39. package/dist/agent/agent-resolver.d.ts +8 -2
  40. package/dist/agent/agent-resolver.d.ts.map +1 -1
  41. package/dist/agent/agent-resolver.js +7 -1
  42. package/dist/agent/agent-resolver.js.map +1 -1
  43. package/dist/agent/agent-resolver.test.js +21 -3
  44. package/dist/agent/agent-resolver.test.js.map +1 -1
  45. package/dist/agent/delegate.test.js +1 -1
  46. package/dist/agent/execute-agent.d.ts +32 -8
  47. package/dist/agent/execute-agent.d.ts.map +1 -1
  48. package/dist/agent/execute-agent.js +40 -3
  49. package/dist/agent/execute-agent.js.map +1 -1
  50. package/dist/agent/index.d.ts +9 -9
  51. package/dist/agent/index.d.ts.map +1 -1
  52. package/dist/agent/index.js +5 -5
  53. package/dist/agent/index.js.map +1 -1
  54. package/dist/agent/prompt-builder.test.js +1 -1
  55. package/dist/approval/approval-manager.d.ts +19 -0
  56. package/dist/approval/approval-manager.d.ts.map +1 -0
  57. package/dist/approval/approval-manager.js +36 -0
  58. package/dist/approval/approval-manager.js.map +1 -0
  59. package/dist/approval/approval-manager.test.d.ts +2 -0
  60. package/dist/approval/approval-manager.test.d.ts.map +1 -0
  61. package/dist/approval/approval-manager.test.js +239 -0
  62. package/dist/approval/approval-manager.test.js.map +1 -0
  63. package/dist/approval/index.d.ts +3 -0
  64. package/dist/approval/index.d.ts.map +1 -0
  65. package/dist/approval/index.js +2 -0
  66. package/dist/approval/index.js.map +1 -0
  67. package/dist/chat/chat-handler.d.ts +14 -7
  68. package/dist/chat/chat-handler.d.ts.map +1 -1
  69. package/dist/chat/chat-handler.js +56 -11
  70. package/dist/chat/chat-handler.js.map +1 -1
  71. package/dist/chat/chat-handler.test.js +100 -11
  72. package/dist/chat/chat-handler.test.js.map +1 -1
  73. package/dist/chat/index.d.ts +3 -3
  74. package/dist/chat/index.js +2 -2
  75. package/dist/chat/message-utils.d.ts +15 -7
  76. package/dist/chat/message-utils.d.ts.map +1 -1
  77. package/dist/chat/message-utils.js +94 -22
  78. package/dist/chat/message-utils.js.map +1 -1
  79. package/dist/chat/message-utils.test.js +71 -1
  80. package/dist/chat/message-utils.test.js.map +1 -1
  81. package/dist/document/chunk-generator.d.ts +6 -0
  82. package/dist/document/chunk-generator.d.ts.map +1 -0
  83. package/dist/document/chunk-generator.js +107 -0
  84. package/dist/document/chunk-generator.js.map +1 -0
  85. package/dist/document/chunk-generator.test.d.ts +2 -0
  86. package/dist/document/chunk-generator.test.d.ts.map +1 -0
  87. package/dist/document/chunk-generator.test.js +166 -0
  88. package/dist/document/chunk-generator.test.js.map +1 -0
  89. package/dist/document/document-processor.d.ts +27 -0
  90. package/dist/document/document-processor.d.ts.map +1 -0
  91. package/dist/document/document-processor.js +44 -0
  92. package/dist/document/document-processor.js.map +1 -0
  93. package/dist/document/document-processor.test.d.ts +2 -0
  94. package/dist/document/document-processor.test.d.ts.map +1 -0
  95. package/dist/document/document-processor.test.js +197 -0
  96. package/dist/document/document-processor.test.js.map +1 -0
  97. package/dist/document/index.d.ts +5 -0
  98. package/dist/document/index.d.ts.map +1 -0
  99. package/dist/document/index.js +4 -0
  100. package/dist/document/index.js.map +1 -0
  101. package/dist/document/parsers/index.d.ts +2 -0
  102. package/dist/document/parsers/index.d.ts.map +1 -0
  103. package/dist/document/parsers/index.js +2 -0
  104. package/dist/document/parsers/index.js.map +1 -0
  105. package/dist/document/parsers/text-parser.d.ts +4 -0
  106. package/dist/document/parsers/text-parser.d.ts.map +1 -0
  107. package/dist/document/parsers/text-parser.js +23 -0
  108. package/dist/document/parsers/text-parser.js.map +1 -0
  109. package/dist/document/parsers/text-parser.test.d.ts +2 -0
  110. package/dist/document/parsers/text-parser.test.d.ts.map +1 -0
  111. package/dist/document/parsers/text-parser.test.js +64 -0
  112. package/dist/document/parsers/text-parser.test.js.map +1 -0
  113. package/dist/eval/eval-runner.test.js +2 -2
  114. package/dist/eval/index.d.ts +3 -3
  115. package/dist/eval/index.js +2 -2
  116. package/dist/eval/scorers.test.js +1 -1
  117. package/dist/events/event-bus.d.ts +12 -0
  118. package/dist/events/event-bus.d.ts.map +1 -0
  119. package/dist/events/event-bus.js +77 -0
  120. package/dist/events/event-bus.js.map +1 -0
  121. package/dist/events/event-bus.test.d.ts +2 -0
  122. package/dist/events/event-bus.test.d.ts.map +1 -0
  123. package/dist/events/event-bus.test.js +155 -0
  124. package/dist/events/event-bus.test.js.map +1 -0
  125. package/dist/events/index.d.ts +2 -0
  126. package/dist/events/index.d.ts.map +1 -0
  127. package/dist/events/index.js +2 -0
  128. package/dist/events/index.js.map +1 -0
  129. package/dist/guardrail/guardrail-pipeline.test.js +1 -1
  130. package/dist/guardrail/index.d.ts +2 -2
  131. package/dist/guardrail/index.js +1 -1
  132. package/dist/index.d.ts +81 -45
  133. package/dist/index.d.ts.map +1 -1
  134. package/dist/index.js +55 -27
  135. package/dist/index.js.map +1 -1
  136. package/dist/jobs/in-memory-job-queue.d.ts +20 -0
  137. package/dist/jobs/in-memory-job-queue.d.ts.map +1 -0
  138. package/dist/jobs/in-memory-job-queue.js +120 -0
  139. package/dist/jobs/in-memory-job-queue.js.map +1 -0
  140. package/dist/jobs/in-memory-job-queue.test.d.ts +2 -0
  141. package/dist/jobs/in-memory-job-queue.test.d.ts.map +1 -0
  142. package/dist/jobs/in-memory-job-queue.test.js +146 -0
  143. package/dist/jobs/in-memory-job-queue.test.js.map +1 -0
  144. package/dist/jobs/index.d.ts +4 -0
  145. package/dist/jobs/index.d.ts.map +1 -0
  146. package/dist/jobs/index.js +3 -0
  147. package/dist/jobs/index.js.map +1 -0
  148. package/dist/jobs/job-runner.d.ts +42 -0
  149. package/dist/jobs/job-runner.d.ts.map +1 -0
  150. package/dist/jobs/job-runner.js +119 -0
  151. package/dist/jobs/job-runner.js.map +1 -0
  152. package/dist/jobs/job-runner.test.d.ts +2 -0
  153. package/dist/jobs/job-runner.test.d.ts.map +1 -0
  154. package/dist/jobs/job-runner.test.js +190 -0
  155. package/dist/jobs/job-runner.test.js.map +1 -0
  156. package/dist/memory/index.d.ts +3 -3
  157. package/dist/memory/index.js +2 -2
  158. package/dist/memory/memory-prompt.d.ts +1 -1
  159. package/dist/module/create-runtime.d.ts +21 -6
  160. package/dist/module/create-runtime.d.ts.map +1 -1
  161. package/dist/module/create-runtime.js +7 -7
  162. package/dist/module/create-runtime.js.map +1 -1
  163. package/dist/module/create-runtime.test.js +8 -8
  164. package/dist/module/index.d.ts +5 -4
  165. package/dist/module/index.d.ts.map +1 -1
  166. package/dist/module/index.js +3 -2
  167. package/dist/module/index.js.map +1 -1
  168. package/dist/module/map-supabase-stores.d.ts +33 -0
  169. package/dist/module/map-supabase-stores.d.ts.map +1 -0
  170. package/dist/module/map-supabase-stores.js +28 -0
  171. package/dist/module/map-supabase-stores.js.map +1 -0
  172. package/dist/module/module-loader.d.ts +9 -1
  173. package/dist/module/module-loader.d.ts.map +1 -1
  174. package/dist/module/module-loader.js +40 -1
  175. package/dist/module/module-loader.js.map +1 -1
  176. package/dist/module/module-loader.test.js +38 -1
  177. package/dist/module/module-loader.test.js.map +1 -1
  178. package/dist/notification/digest-scheduler.d.ts +18 -0
  179. package/dist/notification/digest-scheduler.d.ts.map +1 -0
  180. package/dist/notification/digest-scheduler.js +44 -0
  181. package/dist/notification/digest-scheduler.js.map +1 -0
  182. package/dist/notification/digest-scheduler.test.d.ts +2 -0
  183. package/dist/notification/digest-scheduler.test.d.ts.map +1 -0
  184. package/dist/notification/digest-scheduler.test.js +306 -0
  185. package/dist/notification/digest-scheduler.test.js.map +1 -0
  186. package/dist/notification/index.d.ts +5 -0
  187. package/dist/notification/index.d.ts.map +1 -0
  188. package/dist/notification/index.js +3 -0
  189. package/dist/notification/index.js.map +1 -0
  190. package/dist/notification/notification-engine.d.ts +20 -0
  191. package/dist/notification/notification-engine.d.ts.map +1 -0
  192. package/dist/notification/notification-engine.js +78 -0
  193. package/dist/notification/notification-engine.js.map +1 -0
  194. package/dist/notification/notification-engine.test.d.ts +2 -0
  195. package/dist/notification/notification-engine.test.d.ts.map +1 -0
  196. package/dist/notification/notification-engine.test.js +364 -0
  197. package/dist/notification/notification-engine.test.js.map +1 -0
  198. package/dist/providers/index.d.ts +5 -0
  199. package/dist/providers/index.d.ts.map +1 -0
  200. package/dist/providers/index.js +3 -0
  201. package/dist/providers/index.js.map +1 -0
  202. package/dist/providers/model-resolver.d.ts +93 -0
  203. package/dist/providers/model-resolver.d.ts.map +1 -0
  204. package/dist/providers/model-resolver.js +152 -0
  205. package/dist/providers/model-resolver.js.map +1 -0
  206. package/dist/providers/model-resolver.test.d.ts +2 -0
  207. package/dist/providers/model-resolver.test.d.ts.map +1 -0
  208. package/dist/providers/model-resolver.test.js +199 -0
  209. package/dist/providers/model-resolver.test.js.map +1 -0
  210. package/dist/providers/noop-providers.d.ts +6 -0
  211. package/dist/providers/noop-providers.d.ts.map +1 -0
  212. package/dist/providers/noop-providers.js +15 -0
  213. package/dist/providers/noop-providers.js.map +1 -0
  214. package/dist/providers/noop-providers.test.d.ts +2 -0
  215. package/dist/providers/noop-providers.test.d.ts.map +1 -0
  216. package/dist/providers/noop-providers.test.js +63 -0
  217. package/dist/providers/noop-providers.test.js.map +1 -0
  218. package/dist/providers/provider-interfaces.d.ts +65 -0
  219. package/dist/providers/provider-interfaces.d.ts.map +1 -0
  220. package/dist/providers/provider-interfaces.js +2 -0
  221. package/dist/providers/provider-interfaces.js.map +1 -0
  222. package/dist/realtime/index.d.ts +3 -0
  223. package/dist/realtime/index.d.ts.map +1 -0
  224. package/dist/realtime/index.js +2 -0
  225. package/dist/realtime/index.js.map +1 -0
  226. package/dist/realtime/realtime-manager.d.ts +20 -0
  227. package/dist/realtime/realtime-manager.d.ts.map +1 -0
  228. package/dist/realtime/realtime-manager.js +110 -0
  229. package/dist/realtime/realtime-manager.js.map +1 -0
  230. package/dist/realtime/realtime-manager.test.d.ts +2 -0
  231. package/dist/realtime/realtime-manager.test.d.ts.map +1 -0
  232. package/dist/realtime/realtime-manager.test.js +273 -0
  233. package/dist/realtime/realtime-manager.test.js.map +1 -0
  234. package/dist/scoring/compute-score.test.js +1 -1
  235. package/dist/scoring/index.d.ts +2 -2
  236. package/dist/scoring/index.js +1 -1
  237. package/dist/search/cosine-similarity.d.ts +8 -0
  238. package/dist/search/cosine-similarity.d.ts.map +1 -0
  239. package/dist/search/cosine-similarity.js +28 -0
  240. package/dist/search/cosine-similarity.js.map +1 -0
  241. package/dist/search/cosine-similarity.test.d.ts +2 -0
  242. package/dist/search/cosine-similarity.test.d.ts.map +1 -0
  243. package/dist/search/cosine-similarity.test.js +49 -0
  244. package/dist/search/cosine-similarity.test.js.map +1 -0
  245. package/dist/search/hybrid-search.d.ts +47 -0
  246. package/dist/search/hybrid-search.d.ts.map +1 -0
  247. package/dist/search/hybrid-search.js +111 -0
  248. package/dist/search/hybrid-search.js.map +1 -0
  249. package/dist/search/hybrid-search.test.d.ts +2 -0
  250. package/dist/search/hybrid-search.test.d.ts.map +1 -0
  251. package/dist/search/hybrid-search.test.js +238 -0
  252. package/dist/search/hybrid-search.test.js.map +1 -0
  253. package/dist/search/in-memory-search.d.ts +17 -0
  254. package/dist/search/in-memory-search.d.ts.map +1 -0
  255. package/dist/search/in-memory-search.js +59 -0
  256. package/dist/search/in-memory-search.js.map +1 -0
  257. package/dist/search/in-memory-search.test.d.ts +2 -0
  258. package/dist/search/in-memory-search.test.d.ts.map +1 -0
  259. package/dist/search/in-memory-search.test.js +169 -0
  260. package/dist/search/in-memory-search.test.js.map +1 -0
  261. package/dist/search/index.d.ts +6 -0
  262. package/dist/search/index.d.ts.map +1 -0
  263. package/dist/search/index.js +4 -0
  264. package/dist/search/index.js.map +1 -0
  265. package/dist/testing/in-memory-agent-store.d.ts +5 -1
  266. package/dist/testing/in-memory-agent-store.d.ts.map +1 -1
  267. package/dist/testing/in-memory-agent-store.js +19 -0
  268. package/dist/testing/in-memory-agent-store.js.map +1 -1
  269. package/dist/testing/in-memory-agent-store.test.js +1 -1
  270. package/dist/testing/in-memory-chat-store.d.ts.map +1 -1
  271. package/dist/testing/in-memory-chat-store.js +2 -1
  272. package/dist/testing/in-memory-chat-store.js.map +1 -1
  273. package/dist/testing/in-memory-entity-store.d.ts +5 -1
  274. package/dist/testing/in-memory-entity-store.d.ts.map +1 -1
  275. package/dist/testing/in-memory-entity-store.js +69 -4
  276. package/dist/testing/in-memory-entity-store.js.map +1 -1
  277. package/dist/testing/in-memory-entity-store.test.js +1 -1
  278. package/dist/testing/in-memory-memory-store.d.ts +3 -1
  279. package/dist/testing/in-memory-memory-store.d.ts.map +1 -1
  280. package/dist/testing/in-memory-memory-store.js +20 -0
  281. package/dist/testing/in-memory-memory-store.js.map +1 -1
  282. package/dist/testing/in-memory-tool-store.d.ts +13 -2
  283. package/dist/testing/in-memory-tool-store.d.ts.map +1 -1
  284. package/dist/testing/in-memory-tool-store.js +51 -0
  285. package/dist/testing/in-memory-tool-store.js.map +1 -1
  286. package/dist/testing/index.d.ts +7 -7
  287. package/dist/testing/index.js +7 -7
  288. package/dist/tool/ai-bridge.d.ts +1 -0
  289. package/dist/tool/ai-bridge.d.ts.map +1 -1
  290. package/dist/tool/ai-bridge.js +1 -0
  291. package/dist/tool/ai-bridge.js.map +1 -1
  292. package/dist/tool/ai-bridge.test.js +1 -1
  293. package/dist/tool/catalog.d.ts +19 -0
  294. package/dist/tool/catalog.d.ts.map +1 -0
  295. package/dist/tool/catalog.js +88 -0
  296. package/dist/tool/catalog.js.map +1 -0
  297. package/dist/tool/catalog.test.d.ts +2 -0
  298. package/dist/tool/catalog.test.d.ts.map +1 -0
  299. package/dist/tool/catalog.test.js +129 -0
  300. package/dist/tool/catalog.test.js.map +1 -0
  301. package/dist/tool/entity-tools-factory.test.js +2 -2
  302. package/dist/tool/execute-registered-tool.d.ts +17 -0
  303. package/dist/tool/execute-registered-tool.d.ts.map +1 -0
  304. package/dist/tool/execute-registered-tool.js +24 -0
  305. package/dist/tool/execute-registered-tool.js.map +1 -0
  306. package/dist/tool/execute-registered-tool.test.d.ts +2 -0
  307. package/dist/tool/execute-registered-tool.test.d.ts.map +1 -0
  308. package/dist/tool/execute-registered-tool.test.js +73 -0
  309. package/dist/tool/execute-registered-tool.test.js.map +1 -0
  310. package/dist/tool/index.d.ts +11 -7
  311. package/dist/tool/index.d.ts.map +1 -1
  312. package/dist/tool/index.js +7 -5
  313. package/dist/tool/index.js.map +1 -1
  314. package/dist/tool/resolve-tools.d.ts +3 -1
  315. package/dist/tool/resolve-tools.d.ts.map +1 -1
  316. package/dist/tool/resolve-tools.js +1 -1
  317. package/dist/tool/resolve-tools.js.map +1 -1
  318. package/dist/tool/resolve-tools.test.js +1 -1
  319. package/dist/tool/tool-executor.d.ts +3 -2
  320. package/dist/tool/tool-executor.d.ts.map +1 -1
  321. package/dist/tool/tool-executor.js +4 -2
  322. package/dist/tool/tool-executor.js.map +1 -1
  323. package/dist/tool/tool-executor.test.js +2 -2
  324. package/dist/tool/tool-registry.test.js +1 -1
  325. package/dist/tool/zod-to-json-schema.d.ts +7 -0
  326. package/dist/tool/zod-to-json-schema.d.ts.map +1 -0
  327. package/dist/tool/zod-to-json-schema.js +12 -0
  328. package/dist/tool/zod-to-json-schema.js.map +1 -0
  329. package/dist/tool/zod-to-json-schema.test.d.ts +2 -0
  330. package/dist/tool/zod-to-json-schema.test.d.ts.map +1 -0
  331. package/dist/tool/zod-to-json-schema.test.js +127 -0
  332. package/dist/tool/zod-to-json-schema.test.js.map +1 -0
  333. package/dist/webhook/index.d.ts +4 -0
  334. package/dist/webhook/index.d.ts.map +1 -0
  335. package/dist/webhook/index.js +3 -0
  336. package/dist/webhook/index.js.map +1 -0
  337. package/dist/webhook/webhook-delivery.d.ts +12 -0
  338. package/dist/webhook/webhook-delivery.d.ts.map +1 -0
  339. package/dist/webhook/webhook-delivery.js +102 -0
  340. package/dist/webhook/webhook-delivery.js.map +1 -0
  341. package/dist/webhook/webhook-delivery.test.d.ts +2 -0
  342. package/dist/webhook/webhook-delivery.test.d.ts.map +1 -0
  343. package/dist/webhook/webhook-delivery.test.js +284 -0
  344. package/dist/webhook/webhook-delivery.test.js.map +1 -0
  345. package/dist/webhook/webhook-signer.d.ts +14 -0
  346. package/dist/webhook/webhook-signer.d.ts.map +1 -0
  347. package/dist/webhook/webhook-signer.js +31 -0
  348. package/dist/webhook/webhook-signer.js.map +1 -0
  349. package/dist/webhook/webhook-signer.test.d.ts +2 -0
  350. package/dist/webhook/webhook-signer.test.d.ts.map +1 -0
  351. package/dist/webhook/webhook-signer.test.js +74 -0
  352. package/dist/webhook/webhook-signer.test.js.map +1 -0
  353. package/dist/workflow/compile.js +4 -1
  354. package/dist/workflow/compile.js.map +1 -1
  355. package/dist/workflow/compile.test.js +1 -1
  356. package/dist/workflow/evaluate-nodes.d.ts +24 -0
  357. package/dist/workflow/evaluate-nodes.d.ts.map +1 -0
  358. package/dist/workflow/evaluate-nodes.js +126 -0
  359. package/dist/workflow/evaluate-nodes.js.map +1 -0
  360. package/dist/workflow/evaluate-nodes.test.d.ts +2 -0
  361. package/dist/workflow/evaluate-nodes.test.d.ts.map +1 -0
  362. package/dist/workflow/evaluate-nodes.test.js +363 -0
  363. package/dist/workflow/evaluate-nodes.test.js.map +1 -0
  364. package/dist/workflow/index.d.ts +8 -3
  365. package/dist/workflow/index.d.ts.map +1 -1
  366. package/dist/workflow/index.js +4 -2
  367. package/dist/workflow/index.js.map +1 -1
  368. package/dist/workflow/node-executor.d.ts +40 -0
  369. package/dist/workflow/node-executor.d.ts.map +1 -0
  370. package/dist/workflow/node-executor.js +2 -0
  371. package/dist/workflow/node-executor.js.map +1 -0
  372. package/dist/workflow/node-executor.test.d.ts +2 -0
  373. package/dist/workflow/node-executor.test.d.ts.map +1 -0
  374. package/dist/workflow/node-executor.test.js +91 -0
  375. package/dist/workflow/node-executor.test.js.map +1 -0
  376. package/dist/workflow/status.test.js +1 -1
  377. package/dist/workflow/workflow-runner.d.ts +57 -0
  378. package/dist/workflow/workflow-runner.d.ts.map +1 -0
  379. package/dist/workflow/workflow-runner.js +263 -0
  380. package/dist/workflow/workflow-runner.js.map +1 -0
  381. package/dist/workflow/workflow-runner.test.d.ts +2 -0
  382. package/dist/workflow/workflow-runner.test.d.ts.map +1 -0
  383. package/dist/workflow/workflow-runner.test.js +657 -0
  384. package/dist/workflow/workflow-runner.test.js.map +1 -0
  385. package/package.json +19 -14
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Sprinter AI
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -1,24 +1,52 @@
1
+ import type { DiscoveredAgent } from '@sprinterai/core';
1
2
  /** Configuration for an A2A (Agent-to-Agent) connection. */
2
3
  export interface A2AAdapterConfig {
3
4
  /** The A2A endpoint URL. */
4
5
  endpointUrl: string;
5
6
  /** Authentication token. */
6
7
  authToken?: string;
7
- /** Agent card metadata if known. */
8
+ /** Agent card metadata if already known (skips discovery). */
8
9
  agentCard?: {
9
10
  name: string;
10
11
  description: string;
11
12
  skills: string[];
12
13
  };
14
+ /** Request timeout in milliseconds (default: 60000). */
15
+ timeoutMs?: number;
13
16
  }
17
+ /** Input for sending a task to an A2A agent. */
18
+ export interface A2ATaskInput {
19
+ /** The message text to send. */
20
+ message: string;
21
+ /** Optional session ID for multi-turn conversations. */
22
+ sessionId?: string;
23
+ /** Optional context/metadata to include. */
24
+ context?: Record<string, unknown>;
25
+ }
26
+ /** Result from an A2A task execution. */
27
+ export interface A2ATaskResult {
28
+ /** Task ID assigned by the remote agent. */
29
+ taskId: string;
30
+ /** Current task status. */
31
+ status: 'completed' | 'failed' | 'pending' | 'working';
32
+ /** Task output artifacts. */
33
+ output?: unknown;
34
+ /** Error message if failed. */
35
+ error?: string;
36
+ }
37
+ /** Callable A2A agent endpoint. */
38
+ export interface A2AAgentEndpoint {
39
+ /** Discovered agent metadata. */
40
+ agentCard: DiscoveredAgent;
41
+ /** Send a task/message to the remote agent. */
42
+ sendTask(input: A2ATaskInput): Promise<A2ATaskResult>;
43
+ }
44
+ /**
45
+ * Discover an A2A agent's capabilities via the well-known agent card endpoint.
46
+ */
47
+ export declare function discoverA2AAgent(config: A2AAdapterConfig): Promise<DiscoveredAgent>;
14
48
  /**
15
- * Adapter for A2A protocol connections.
16
- *
17
- * A2A enables cross-platform agent communication using a standard protocol.
18
- * This adapter wraps an A2A endpoint as a callable agent.
19
- *
20
- * Note: A2A support requires the @google/a2a-sdk or compatible library.
21
- * Throws if not configured.
49
+ * Create an A2A agent endpoint. Discovers the agent card and returns a callable interface.
22
50
  */
23
- export declare function createA2AAgent(_config: A2AAdapterConfig): Promise<never>;
51
+ export declare function createA2AAgent(config: A2AAdapterConfig): Promise<A2AAgentEndpoint>;
24
52
  //# sourceMappingURL=a2a-adapter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"a2a-adapter.d.ts","sourceRoot":"","sources":["../../src/adapters/a2a-adapter.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,MAAM,WAAW,gBAAgB;IAC/B,4BAA4B;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,4BAA4B;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oCAAoC;IACpC,SAAS,CAAC,EAAE;QACV,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,MAAM,EAAE,MAAM,EAAE,CAAC;KAClB,CAAC;CACH;AAED;;;;;;;;GAQG;AACH,wBAAsB,cAAc,CAClC,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,KAAK,CAAC,CAIhB"}
1
+ {"version":3,"file":"a2a-adapter.d.ts","sourceRoot":"","sources":["../../src/adapters/a2a-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAExD,4DAA4D;AAC5D,MAAM,WAAW,gBAAgB;IAC/B,4BAA4B;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,4BAA4B;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8DAA8D;IAC9D,SAAS,CAAC,EAAE;QACV,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,MAAM,EAAE,MAAM,EAAE,CAAC;KAClB,CAAC;IACF,wDAAwD;IACxD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,gDAAgD;AAChD,MAAM,WAAW,YAAY;IAC3B,gCAAgC;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,wDAAwD;IACxD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4CAA4C;IAC5C,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,yCAAyC;AACzC,MAAM,WAAW,aAAa;IAC5B,4CAA4C;IAC5C,MAAM,EAAE,MAAM,CAAC;IACf,2BAA2B;IAC3B,MAAM,EAAE,WAAW,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC;IACvD,6BAA6B;IAC7B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,+BAA+B;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,mCAAmC;AACnC,MAAM,WAAW,gBAAgB;IAC/B,iCAAiC;IACjC,SAAS,EAAE,eAAe,CAAC;IAC3B,+CAA+C;IAC/C,QAAQ,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;CACvD;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC,CA8CzF;AAOD;;GAEG;AACH,wBAAsB,cAAc,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CA2FxF"}
@@ -1,13 +1,136 @@
1
1
  /**
2
- * Adapter for A2A protocol connections.
3
- *
4
- * A2A enables cross-platform agent communication using a standard protocol.
5
- * This adapter wraps an A2A endpoint as a callable agent.
6
- *
7
- * Note: A2A support requires the @google/a2a-sdk or compatible library.
8
- * Throws if not configured.
2
+ * Discover an A2A agent's capabilities via the well-known agent card endpoint.
9
3
  */
10
- export async function createA2AAgent(_config) {
11
- throw new Error("A2A adapter not configured. Install an A2A client library and provide it to the adapter.");
4
+ export async function discoverA2AAgent(config) {
5
+ if (config.agentCard) {
6
+ return {
7
+ externalAgentId: config.endpointUrl,
8
+ name: config.agentCard.name,
9
+ description: config.agentCard.description,
10
+ metadata: { skills: config.agentCard.skills },
11
+ alreadyImported: false,
12
+ };
13
+ }
14
+ try {
15
+ const baseUrl = new URL(config.endpointUrl);
16
+ const cardUrl = `${baseUrl.origin}/.well-known/agent.json`;
17
+ const headers = {};
18
+ if (config.authToken) {
19
+ headers['Authorization'] = `Bearer ${config.authToken}`;
20
+ }
21
+ const response = await fetch(cardUrl, { headers });
22
+ if (!response.ok) {
23
+ return {
24
+ externalAgentId: config.endpointUrl,
25
+ name: 'Unknown Agent',
26
+ description: 'Agent card not available',
27
+ alreadyImported: false,
28
+ };
29
+ }
30
+ const raw = await response.json();
31
+ const card = typeof raw === 'object' && raw !== null ? raw : {};
32
+ return {
33
+ externalAgentId: card.url ?? config.endpointUrl,
34
+ name: card.name ?? 'Unknown',
35
+ description: card.description ?? '',
36
+ metadata: card,
37
+ alreadyImported: false,
38
+ };
39
+ }
40
+ catch {
41
+ return {
42
+ externalAgentId: config.endpointUrl,
43
+ name: 'Unknown Agent',
44
+ description: 'Agent card discovery failed',
45
+ alreadyImported: false,
46
+ };
47
+ }
48
+ }
49
+ /** Generate a unique request ID for JSON-RPC calls. */
50
+ function generateRequestId() {
51
+ return `a2a-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;
52
+ }
53
+ /**
54
+ * Create an A2A agent endpoint. Discovers the agent card and returns a callable interface.
55
+ */
56
+ export async function createA2AAgent(config) {
57
+ const agentCard = await discoverA2AAgent(config);
58
+ const timeoutMs = config.timeoutMs ?? 60_000;
59
+ return {
60
+ agentCard,
61
+ async sendTask(input) {
62
+ const controller = new AbortController();
63
+ const timeoutId = setTimeout(() => controller.abort(), timeoutMs);
64
+ try {
65
+ const headers = {
66
+ 'Content-Type': 'application/json',
67
+ Accept: 'application/json',
68
+ };
69
+ if (config.authToken) {
70
+ headers['Authorization'] = `Bearer ${config.authToken}`;
71
+ }
72
+ const response = await fetch(config.endpointUrl, {
73
+ method: 'POST',
74
+ headers,
75
+ // AbortController.signal type varies across Node.js/DOM environments
76
+ signal: controller.signal,
77
+ body: JSON.stringify({
78
+ jsonrpc: '2.0',
79
+ method: 'tasks/send',
80
+ params: {
81
+ message: {
82
+ role: 'user',
83
+ parts: [{ type: 'text', text: input.message }],
84
+ },
85
+ ...(input.sessionId ? { sessionId: input.sessionId } : {}),
86
+ ...(input.context ? { metadata: input.context } : {}),
87
+ },
88
+ id: generateRequestId(),
89
+ }),
90
+ });
91
+ if (!response.ok) {
92
+ return {
93
+ taskId: '',
94
+ status: 'failed',
95
+ error: `A2A request failed with HTTP ${response.status}`,
96
+ };
97
+ }
98
+ const contentType = response.headers.get('content-type') ?? '';
99
+ if (!contentType.includes('application/json')) {
100
+ return {
101
+ taskId: '',
102
+ status: 'failed',
103
+ error: `Unexpected content-type from A2A endpoint: ${contentType}`,
104
+ };
105
+ }
106
+ const raw = await response.json();
107
+ const result = typeof raw === 'object' && raw !== null ? raw : {};
108
+ if (result.error) {
109
+ const err = typeof result.error === 'object' && result.error !== null
110
+ ? result.error
111
+ : {};
112
+ return {
113
+ taskId: '',
114
+ status: 'failed',
115
+ error: err.message ?? 'Unknown A2A error',
116
+ };
117
+ }
118
+ const taskResult = typeof result.result === 'object' && result.result !== null
119
+ ? result.result
120
+ : undefined;
121
+ const status = typeof taskResult?.status === 'object' && taskResult?.status !== null
122
+ ? taskResult.status
123
+ : undefined;
124
+ return {
125
+ taskId: taskResult?.id ?? '',
126
+ status: (status?.state ?? 'pending'),
127
+ output: taskResult?.artifacts,
128
+ };
129
+ }
130
+ finally {
131
+ clearTimeout(timeoutId);
132
+ }
133
+ },
134
+ };
12
135
  }
13
136
  //# sourceMappingURL=a2a-adapter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"a2a-adapter.js","sourceRoot":"","sources":["../../src/adapters/a2a-adapter.ts"],"names":[],"mappings":"AAcA;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,OAAyB;IAEzB,MAAM,IAAI,KAAK,CACb,0FAA0F,CAC3F,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"a2a-adapter.js","sourceRoot":"","sources":["../../src/adapters/a2a-adapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=a2a-adapter.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"a2a-adapter.test.d.ts","sourceRoot":"","sources":["../../src/adapters/a2a-adapter.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,295 @@
1
+ import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
2
+ import { createA2AAgent, discoverA2AAgent } from './a2a-adapter.js';
3
+ /** Create a minimal mock Response compatible with the adapter's usage. */
4
+ function mockFetchResponse(body, options) {
5
+ const status = options?.status ?? 200;
6
+ const contentType = options?.contentType ?? 'application/json';
7
+ const headers = new Headers({ 'content-type': contentType });
8
+ return vi.fn().mockResolvedValue({
9
+ ok: status >= 200 && status < 300,
10
+ status,
11
+ headers,
12
+ json: () => Promise.resolve(body),
13
+ text: () => Promise.resolve(typeof body === 'string' ? body : JSON.stringify(body)),
14
+ });
15
+ }
16
+ describe('discoverA2AAgent', () => {
17
+ afterEach(() => {
18
+ vi.restoreAllMocks();
19
+ });
20
+ it('returns agent card from pre-supplied config (no fetch needed)', async () => {
21
+ const mockFetch = mockFetchResponse({});
22
+ vi.stubGlobal('fetch', mockFetch);
23
+ const config = {
24
+ endpointUrl: 'https://agent.example.com/a2a',
25
+ agentCard: {
26
+ name: 'Test Agent',
27
+ description: 'A test agent',
28
+ skills: ['search', 'summarize'],
29
+ },
30
+ };
31
+ const result = await discoverA2AAgent(config);
32
+ expect(result.name).toBe('Test Agent');
33
+ expect(result.description).toBe('A test agent');
34
+ expect(result.externalAgentId).toBe('https://agent.example.com/a2a');
35
+ expect(result.metadata).toEqual({ skills: ['search', 'summarize'] });
36
+ expect(result.alreadyImported).toBe(false);
37
+ // fetch should NOT be called when agentCard is pre-supplied
38
+ expect(mockFetch).not.toHaveBeenCalled();
39
+ });
40
+ it('discovers agent via .well-known/agent.json endpoint', async () => {
41
+ const cardResponse = {
42
+ url: 'https://agent.example.com/endpoint',
43
+ name: 'Remote Agent',
44
+ description: 'A remote agent',
45
+ version: '1.0',
46
+ };
47
+ const mockFetch = mockFetchResponse(cardResponse);
48
+ vi.stubGlobal('fetch', mockFetch);
49
+ const result = await discoverA2AAgent({
50
+ endpointUrl: 'https://agent.example.com/a2a',
51
+ });
52
+ expect(result.name).toBe('Remote Agent');
53
+ expect(result.description).toBe('A remote agent');
54
+ expect(result.externalAgentId).toBe('https://agent.example.com/endpoint');
55
+ expect(result.metadata).toEqual(cardResponse);
56
+ expect(mockFetch).toHaveBeenCalledOnce();
57
+ const [url] = mockFetch.mock.calls[0];
58
+ expect(url).toBe('https://agent.example.com/.well-known/agent.json');
59
+ });
60
+ it('returns fallback on non-ok response from .well-known endpoint', async () => {
61
+ const mockFetch = mockFetchResponse({}, { status: 404 });
62
+ vi.stubGlobal('fetch', mockFetch);
63
+ const result = await discoverA2AAgent({
64
+ endpointUrl: 'https://agent.example.com/a2a',
65
+ });
66
+ expect(result.name).toBe('Unknown Agent');
67
+ expect(result.description).toBe('Agent card not available');
68
+ expect(result.externalAgentId).toBe('https://agent.example.com/a2a');
69
+ });
70
+ it('returns fallback on network error', async () => {
71
+ vi.stubGlobal('fetch', vi.fn().mockRejectedValue(new Error('Network unreachable')));
72
+ const result = await discoverA2AAgent({
73
+ endpointUrl: 'https://agent.example.com/a2a',
74
+ });
75
+ expect(result.name).toBe('Unknown Agent');
76
+ expect(result.description).toBe('Agent card discovery failed');
77
+ expect(result.externalAgentId).toBe('https://agent.example.com/a2a');
78
+ });
79
+ it('handles non-object JSON response (null)', async () => {
80
+ const mockFetch = mockFetchResponse(null);
81
+ vi.stubGlobal('fetch', mockFetch);
82
+ const result = await discoverA2AAgent({
83
+ endpointUrl: 'https://agent.example.com/a2a',
84
+ });
85
+ // null is not an object, so the guard falls back to empty object
86
+ expect(result.name).toBe('Unknown');
87
+ expect(result.description).toBe('');
88
+ expect(result.externalAgentId).toBe('https://agent.example.com/a2a');
89
+ });
90
+ it('handles non-object JSON response (array)', async () => {
91
+ const mockFetch = mockFetchResponse(['not', 'an', 'object']);
92
+ vi.stubGlobal('fetch', mockFetch);
93
+ const result = await discoverA2AAgent({
94
+ endpointUrl: 'https://agent.example.com/a2a',
95
+ });
96
+ // Arrays pass typeof === 'object' and !== null check, so are treated as Record
97
+ // With no .name or .description properties, defaults kick in
98
+ expect(result.name).toBe('Unknown');
99
+ expect(result.description).toBe('');
100
+ });
101
+ it('includes auth token in discovery request headers', async () => {
102
+ const mockFetch = mockFetchResponse({ name: 'Secure Agent' });
103
+ vi.stubGlobal('fetch', mockFetch);
104
+ await discoverA2AAgent({
105
+ endpointUrl: 'https://agent.example.com/a2a',
106
+ authToken: 'secret-token',
107
+ });
108
+ const [, options] = mockFetch.mock.calls[0];
109
+ const headers = options.headers;
110
+ expect(headers['Authorization']).toBe('Bearer secret-token');
111
+ });
112
+ });
113
+ describe('createA2AAgent', () => {
114
+ beforeEach(() => {
115
+ vi.useFakeTimers();
116
+ });
117
+ afterEach(() => {
118
+ vi.restoreAllMocks();
119
+ vi.useRealTimers();
120
+ });
121
+ it('returns endpoint with discovered agent card', async () => {
122
+ const mockFetch = mockFetchResponse({});
123
+ vi.stubGlobal('fetch', mockFetch);
124
+ const agent = await createA2AAgent({
125
+ endpointUrl: 'https://agent.example.com/a2a',
126
+ agentCard: {
127
+ name: 'My Agent',
128
+ description: 'Does things',
129
+ skills: ['chat'],
130
+ },
131
+ });
132
+ expect(agent.agentCard.name).toBe('My Agent');
133
+ expect(agent.agentCard.description).toBe('Does things');
134
+ expect(typeof agent.sendTask).toBe('function');
135
+ });
136
+ });
137
+ describe('sendTask', () => {
138
+ beforeEach(() => {
139
+ vi.useFakeTimers();
140
+ });
141
+ afterEach(() => {
142
+ vi.restoreAllMocks();
143
+ vi.useRealTimers();
144
+ });
145
+ /** Helper: create an A2A agent with pre-supplied card and custom fetch mock for sendTask. */
146
+ async function createAgentWithMock(taskFetch, config) {
147
+ // First call is for discovery (skipped via agentCard), second is for sendTask
148
+ vi.stubGlobal('fetch', taskFetch);
149
+ return createA2AAgent({
150
+ endpointUrl: 'https://agent.example.com/a2a',
151
+ agentCard: { name: 'Test', description: 'Test agent', skills: [] },
152
+ ...config,
153
+ });
154
+ }
155
+ it('formats JSON-RPC 2.0 correctly', async () => {
156
+ const rpcResponse = {
157
+ jsonrpc: '2.0',
158
+ result: {
159
+ id: 'task-1',
160
+ status: { state: 'completed' },
161
+ artifacts: [{ text: 'result' }],
162
+ },
163
+ id: 'req-1',
164
+ };
165
+ const mockFetch = mockFetchResponse(rpcResponse);
166
+ const agent = await createAgentWithMock(mockFetch);
167
+ await agent.sendTask({ message: 'Hello', sessionId: 'sess-1', context: { key: 'val' } });
168
+ const [url, options] = mockFetch.mock.calls[0];
169
+ expect(url).toBe('https://agent.example.com/a2a');
170
+ expect(options.method).toBe('POST');
171
+ const body = JSON.parse(options.body);
172
+ expect(body.jsonrpc).toBe('2.0');
173
+ expect(body.method).toBe('tasks/send');
174
+ expect(typeof body.id).toBe('string');
175
+ const params = body.params;
176
+ const message = params.message;
177
+ expect(message.role).toBe('user');
178
+ expect(message.parts).toEqual([{ type: 'text', text: 'Hello' }]);
179
+ expect(params.sessionId).toBe('sess-1');
180
+ expect(params.metadata).toEqual({ key: 'val' });
181
+ });
182
+ it('omits sessionId and metadata when not provided', async () => {
183
+ const rpcResponse = {
184
+ jsonrpc: '2.0',
185
+ result: { id: 'task-2', status: { state: 'completed' } },
186
+ id: 'req-2',
187
+ };
188
+ const mockFetch = mockFetchResponse(rpcResponse);
189
+ const agent = await createAgentWithMock(mockFetch);
190
+ await agent.sendTask({ message: 'Just a message' });
191
+ const body = JSON.parse(mockFetch.mock.calls[0][1].body);
192
+ const params = body.params;
193
+ expect(params.sessionId).toBeUndefined();
194
+ expect(params.metadata).toBeUndefined();
195
+ });
196
+ it('returns structured error on non-ok HTTP response', async () => {
197
+ const mockFetch = mockFetchResponse('Server Error', { status: 500 });
198
+ const agent = await createAgentWithMock(mockFetch);
199
+ const result = await agent.sendTask({ message: 'test' });
200
+ expect(result.taskId).toBe('');
201
+ expect(result.status).toBe('failed');
202
+ expect(result.error).toBe('A2A request failed with HTTP 500');
203
+ });
204
+ it('returns structured error on non-JSON content-type', async () => {
205
+ const mockFetch = mockFetchResponse('not json', { contentType: 'text/html' });
206
+ const agent = await createAgentWithMock(mockFetch);
207
+ const result = await agent.sendTask({ message: 'test' });
208
+ expect(result.taskId).toBe('');
209
+ expect(result.status).toBe('failed');
210
+ expect(result.error).toContain('Unexpected content-type');
211
+ expect(result.error).toContain('text/html');
212
+ });
213
+ it('handles JSON-RPC error response', async () => {
214
+ const rpcError = {
215
+ jsonrpc: '2.0',
216
+ error: { code: -32600, message: 'Invalid request' },
217
+ id: 'req-3',
218
+ };
219
+ const mockFetch = mockFetchResponse(rpcError);
220
+ const agent = await createAgentWithMock(mockFetch);
221
+ const result = await agent.sendTask({ message: 'bad request' });
222
+ expect(result.taskId).toBe('');
223
+ expect(result.status).toBe('failed');
224
+ expect(result.error).toBe('Invalid request');
225
+ });
226
+ it('handles JSON-RPC error with non-object error field', async () => {
227
+ const rpcError = {
228
+ jsonrpc: '2.0',
229
+ error: 'something went wrong',
230
+ id: 'req-4',
231
+ };
232
+ const mockFetch = mockFetchResponse(rpcError);
233
+ const agent = await createAgentWithMock(mockFetch);
234
+ const result = await agent.sendTask({ message: 'test' });
235
+ expect(result.status).toBe('failed');
236
+ expect(result.error).toBe('Unknown A2A error');
237
+ });
238
+ it('handles malformed JSON-RPC result (null/undefined fields)', async () => {
239
+ // result is missing id, status, artifacts
240
+ const rpcResponse = {
241
+ jsonrpc: '2.0',
242
+ result: {},
243
+ id: 'req-5',
244
+ };
245
+ const mockFetch = mockFetchResponse(rpcResponse);
246
+ const agent = await createAgentWithMock(mockFetch);
247
+ const result = await agent.sendTask({ message: 'test' });
248
+ expect(result.taskId).toBe('');
249
+ expect(result.status).toBe('pending');
250
+ expect(result.output).toBeUndefined();
251
+ });
252
+ it('handles null result field gracefully', async () => {
253
+ const rpcResponse = {
254
+ jsonrpc: '2.0',
255
+ result: null,
256
+ id: 'req-6',
257
+ };
258
+ const mockFetch = mockFetchResponse(rpcResponse);
259
+ const agent = await createAgentWithMock(mockFetch);
260
+ const result = await agent.sendTask({ message: 'test' });
261
+ // null result -> taskResult is undefined, so defaults apply
262
+ expect(result.taskId).toBe('');
263
+ expect(result.status).toBe('pending');
264
+ });
265
+ it('includes auth token in sendTask request headers', async () => {
266
+ const rpcResponse = {
267
+ jsonrpc: '2.0',
268
+ result: { id: 'task-x', status: { state: 'completed' } },
269
+ };
270
+ const mockFetch = mockFetchResponse(rpcResponse);
271
+ const agent = await createAgentWithMock(mockFetch, { authToken: 'bearer-token' });
272
+ await agent.sendTask({ message: 'test' });
273
+ const [, options] = mockFetch.mock.calls[0];
274
+ const headers = options.headers;
275
+ expect(headers['Authorization']).toBe('Bearer bearer-token');
276
+ });
277
+ it('returns completed task with artifacts', async () => {
278
+ const artifacts = [{ type: 'text', text: 'Generated content' }];
279
+ const rpcResponse = {
280
+ jsonrpc: '2.0',
281
+ result: {
282
+ id: 'task-42',
283
+ status: { state: 'completed' },
284
+ artifacts,
285
+ },
286
+ };
287
+ const mockFetch = mockFetchResponse(rpcResponse);
288
+ const agent = await createAgentWithMock(mockFetch);
289
+ const result = await agent.sendTask({ message: 'generate something' });
290
+ expect(result.taskId).toBe('task-42');
291
+ expect(result.status).toBe('completed');
292
+ expect(result.output).toEqual(artifacts);
293
+ });
294
+ });
295
+ //# sourceMappingURL=a2a-adapter.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"a2a-adapter.test.js","sourceRoot":"","sources":["../../src/adapters/a2a-adapter.test.ts"],"names":[],"mappings":"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"}
@@ -3,20 +3,30 @@ export interface HTTPAgentAdapterConfig {
3
3
  /** The HTTP endpoint URL. */
4
4
  endpointUrl: string;
5
5
  /** HTTP method (default: POST). */
6
- method?: "GET" | "POST";
6
+ method?: 'GET' | 'POST';
7
7
  /** Custom headers. */
8
8
  headers?: Record<string, string>;
9
9
  /** Authentication token (added as Bearer token). */
10
10
  authToken?: string;
11
+ /** Request timeout in milliseconds (default: 30000). */
12
+ timeoutMs?: number;
13
+ }
14
+ /** Response from an HTTP agent endpoint. */
15
+ export interface HTTPAgentResponse {
16
+ status: number;
17
+ data: unknown;
18
+ headers: Record<string, string>;
19
+ }
20
+ /** Callable HTTP agent endpoint. */
21
+ export interface HTTPAgentEndpoint {
22
+ /** Send a message/payload to the agent and receive a response. */
23
+ send(input: Record<string, unknown>): Promise<HTTPAgentResponse>;
24
+ /** The endpoint configuration. */
25
+ readonly config: HTTPAgentAdapterConfig;
11
26
  }
12
27
  /**
13
- * Adapter for generic HTTP agent endpoints.
14
- *
15
- * Wraps any HTTP endpoint that accepts JSON and returns JSON
16
- * as a callable agent interface.
17
- *
18
- * Note: This is a stub. Implement with your preferred HTTP client.
19
- * Throws if not configured.
28
+ * Create a callable HTTP agent endpoint.
29
+ * Wraps any HTTP endpoint that accepts/returns JSON as a callable agent interface.
20
30
  */
21
- export declare function createHTTPAgent(_config: HTTPAgentAdapterConfig): Promise<never>;
31
+ export declare function createHTTPAgent(config: HTTPAgentAdapterConfig): HTTPAgentEndpoint;
22
32
  //# sourceMappingURL=http-agent-adapter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"http-agent-adapter.d.ts","sourceRoot":"","sources":["../../src/adapters/http-agent-adapter.ts"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,MAAM,WAAW,sBAAsB;IACrC,6BAA6B;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,mCAAmC;IACnC,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;IACxB,sBAAsB;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,oDAAoD;IACpD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;GAQG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,KAAK,CAAC,CAIhB"}
1
+ {"version":3,"file":"http-agent-adapter.d.ts","sourceRoot":"","sources":["../../src/adapters/http-agent-adapter.ts"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,MAAM,WAAW,sBAAsB;IACrC,6BAA6B;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,mCAAmC;IACnC,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;IACxB,sBAAsB;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,oDAAoD;IACpD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wDAAwD;IACxD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,4CAA4C;AAC5C,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC;AAED,oCAAoC;AACpC,MAAM,WAAW,iBAAiB;IAChC,kEAAkE;IAClE,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACjE,kCAAkC;IAClC,QAAQ,CAAC,MAAM,EAAE,sBAAsB,CAAC;CACzC;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,sBAAsB,GAAG,iBAAiB,CA8DjF"}