@artinet/sdk 0.5.3 → 0.5.4

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 (220) hide show
  1. package/CHANGELOG.md +20 -1
  2. package/README.md +57 -88
  3. package/dist/client/a2a-client.js +25 -7
  4. package/dist/client/a2a-client.js.map +1 -1
  5. package/dist/server/a2a-server.js +51 -241
  6. package/dist/server/a2a-server.js.map +1 -1
  7. package/dist/server/interfaces/params.js.map +1 -1
  8. package/dist/server/interfaces/store.js +16 -0
  9. package/dist/server/interfaces/store.js.map +1 -1
  10. package/dist/server/lib/express-server.js +211 -2
  11. package/dist/server/lib/express-server.js.map +1 -1
  12. package/dist/server/lib/middleware/a2a-methods.js +61 -24
  13. package/dist/server/lib/middleware/a2a-methods.js.map +1 -1
  14. package/dist/server/lib/middleware/factory.js +6 -6
  15. package/dist/server/lib/middleware/factory.js.map +1 -1
  16. package/dist/server/lib/state.js +44 -72
  17. package/dist/server/lib/state.js.map +1 -1
  18. package/dist/server/lib/storage/memory.js.map +1 -1
  19. package/dist/server/lib/update/base.js +109 -0
  20. package/dist/server/lib/update/base.js.map +1 -0
  21. package/dist/services/a2a/index.js +3 -0
  22. package/dist/services/a2a/index.js.map +1 -0
  23. package/dist/services/a2a/repository.js +160 -0
  24. package/dist/services/a2a/repository.js.map +1 -0
  25. package/dist/services/a2a/service.js +247 -0
  26. package/dist/services/a2a/service.js.map +1 -0
  27. package/dist/services/index.js +2 -0
  28. package/dist/services/index.js.map +1 -0
  29. package/dist/services/manager.js +61 -0
  30. package/dist/services/manager.js.map +1 -0
  31. package/dist/services/mcp/index.js +2 -0
  32. package/dist/services/mcp/index.js.map +1 -0
  33. package/dist/services/mcp/service.js +75 -0
  34. package/dist/services/mcp/service.js.map +1 -0
  35. package/dist/transport/rpc/parser.js +2 -1
  36. package/dist/transport/rpc/parser.js.map +1 -1
  37. package/dist/transport/rpc/rpc-client.js.map +1 -1
  38. package/dist/transport/streaming/stream.js +19 -36
  39. package/dist/transport/streaming/stream.js.map +1 -1
  40. package/dist/types/client/a2a-client.d.ts +21 -7
  41. package/dist/types/client/a2a-client.d.ts.map +1 -1
  42. package/dist/types/express.js +2 -0
  43. package/dist/types/express.js.map +1 -0
  44. package/dist/types/extended-schema.js +1 -1
  45. package/dist/types/extended-schema.js.map +1 -1
  46. package/dist/types/index.js +2 -1
  47. package/dist/types/index.js.map +1 -1
  48. package/dist/types/schemas/a2a/auth/auth.js +2 -0
  49. package/dist/types/schemas/a2a/auth/auth.js.map +1 -0
  50. package/dist/types/schemas/a2a/auth/base.js +2 -0
  51. package/dist/types/schemas/a2a/auth/base.js.map +1 -0
  52. package/dist/types/schemas/a2a/auth/index.js +4 -0
  53. package/dist/types/schemas/a2a/auth/index.js.map +1 -0
  54. package/dist/types/schemas/a2a/auth/oauth.js +2 -0
  55. package/dist/types/schemas/a2a/auth/oauth.js.map +1 -0
  56. package/dist/types/schemas/a2a/error.js +45 -0
  57. package/dist/types/schemas/a2a/error.js.map +1 -0
  58. package/dist/types/schemas/a2a/index.js +8 -0
  59. package/dist/types/schemas/a2a/index.js.map +1 -0
  60. package/dist/types/schemas/a2a/message.js +2 -0
  61. package/dist/types/schemas/a2a/message.js.map +1 -0
  62. package/dist/types/schemas/a2a/notification.js +2 -0
  63. package/dist/types/schemas/a2a/notification.js.map +1 -0
  64. package/dist/types/schemas/a2a/parameters.js +2 -0
  65. package/dist/types/schemas/a2a/parameters.js.map +1 -0
  66. package/dist/types/schemas/a2a/ref.js +25 -0
  67. package/dist/types/schemas/a2a/ref.js.map +1 -0
  68. package/dist/types/schemas/a2a/rpc.js +2 -0
  69. package/dist/types/schemas/a2a/rpc.js.map +1 -0
  70. package/dist/types/schemas/a2a/task.js +16 -0
  71. package/dist/types/schemas/a2a/task.js.map +1 -0
  72. package/dist/types/schemas/index.js +2 -0
  73. package/dist/types/schemas/index.js.map +1 -0
  74. package/dist/types/server/a2a-server.d.ts +9 -20
  75. package/dist/types/server/a2a-server.d.ts.map +1 -1
  76. package/dist/types/server/interfaces/params.d.ts +11 -11
  77. package/dist/types/server/interfaces/params.d.ts.map +1 -1
  78. package/dist/types/server/interfaces/server.d.ts +4 -4
  79. package/dist/types/server/interfaces/server.d.ts.map +1 -1
  80. package/dist/types/server/interfaces/store.d.ts +6 -1
  81. package/dist/types/server/interfaces/store.d.ts.map +1 -1
  82. package/dist/types/server/lib/express-server.d.ts +49 -1
  83. package/dist/types/server/lib/express-server.d.ts.map +1 -1
  84. package/dist/types/server/lib/middleware/a2a-methods.d.ts.map +1 -1
  85. package/dist/types/server/lib/middleware/factory.d.ts +2 -2
  86. package/dist/types/server/lib/middleware/factory.d.ts.map +1 -1
  87. package/dist/types/server/lib/state.d.ts +7 -15
  88. package/dist/types/server/lib/state.d.ts.map +1 -1
  89. package/dist/types/server/lib/storage/memory.d.ts.map +1 -1
  90. package/dist/types/server/lib/update/base.d.ts +21 -0
  91. package/dist/types/server/lib/update/base.d.ts.map +1 -0
  92. package/dist/types/services/a2a/index.d.ts +3 -0
  93. package/dist/types/services/a2a/index.d.ts.map +1 -0
  94. package/dist/types/services/a2a/repository.d.ts +77 -0
  95. package/dist/types/services/a2a/repository.d.ts.map +1 -0
  96. package/dist/types/services/a2a/repository.js +2 -0
  97. package/dist/types/services/a2a/repository.js.map +1 -0
  98. package/dist/types/services/a2a/service.d.ts +45 -0
  99. package/dist/types/services/a2a/service.d.ts.map +1 -0
  100. package/dist/types/services/a2a/service.js +2 -0
  101. package/dist/types/services/a2a/service.js.map +1 -0
  102. package/dist/types/services/context.js +29 -0
  103. package/dist/types/services/context.js.map +1 -0
  104. package/dist/types/services/dispatcher.js +33 -0
  105. package/dist/types/services/dispatcher.js.map +1 -0
  106. package/dist/types/services/index.d.ts +2 -0
  107. package/dist/types/services/index.d.ts.map +1 -0
  108. package/dist/types/services/index.js +9 -0
  109. package/dist/types/services/index.js.map +1 -0
  110. package/dist/types/services/manager.d.ts +44 -0
  111. package/dist/types/services/manager.d.ts.map +1 -0
  112. package/dist/types/services/manager.js +2 -0
  113. package/dist/types/services/manager.js.map +1 -0
  114. package/dist/types/services/mcp/index.d.ts +2 -0
  115. package/dist/types/services/mcp/index.d.ts.map +1 -0
  116. package/dist/types/services/mcp/service.d.ts +30 -0
  117. package/dist/types/services/mcp/service.d.ts.map +1 -0
  118. package/dist/types/services/mcp/service.js +8 -0
  119. package/dist/types/services/mcp/service.js.map +1 -0
  120. package/dist/types/services/protocol.js +31 -0
  121. package/dist/types/services/protocol.js.map +1 -0
  122. package/dist/types/services/service.js +2 -0
  123. package/dist/types/services/service.js.map +1 -0
  124. package/dist/types/transform.js +35 -0
  125. package/dist/types/transform.js.map +1 -0
  126. package/dist/types/transport/rpc/parser.d.ts.map +1 -1
  127. package/dist/types/transport/rpc/rpc-client.d.ts.map +1 -1
  128. package/dist/types/transport/streaming/stream.d.ts +6 -5
  129. package/dist/types/transport/streaming/stream.d.ts.map +1 -1
  130. package/dist/types/types/client.d.ts +26 -9
  131. package/dist/types/types/client.d.ts.map +1 -1
  132. package/dist/types/types/express.d.ts +66 -0
  133. package/dist/types/types/express.d.ts.map +1 -0
  134. package/dist/types/types/extended-schema.d.ts +88 -33
  135. package/dist/types/types/extended-schema.d.ts.map +1 -1
  136. package/dist/types/types/index.d.ts +2 -1
  137. package/dist/types/types/index.d.ts.map +1 -1
  138. package/dist/types/types/proxy.d.ts +4 -5
  139. package/dist/types/types/proxy.d.ts.map +1 -1
  140. package/dist/types/types/schemas/a2a/auth/auth.d.ts +80 -0
  141. package/dist/types/types/schemas/a2a/auth/auth.d.ts.map +1 -0
  142. package/dist/types/types/schemas/a2a/auth/base.d.ts +16 -0
  143. package/dist/types/types/schemas/a2a/auth/base.d.ts.map +1 -0
  144. package/dist/types/types/schemas/a2a/auth/index.d.ts +4 -0
  145. package/dist/types/types/schemas/a2a/auth/index.d.ts.map +1 -0
  146. package/dist/types/types/schemas/a2a/auth/oauth.d.ts +124 -0
  147. package/dist/types/types/schemas/a2a/auth/oauth.d.ts.map +1 -0
  148. package/dist/types/types/schemas/a2a/error.d.ts +75 -0
  149. package/dist/types/types/schemas/a2a/error.d.ts.map +1 -0
  150. package/dist/types/types/schemas/a2a/index.d.ts +220 -0
  151. package/dist/types/types/schemas/a2a/index.d.ts.map +1 -0
  152. package/dist/types/types/schemas/a2a/message.d.ts +90 -0
  153. package/dist/types/types/schemas/a2a/message.d.ts.map +1 -0
  154. package/dist/types/types/schemas/a2a/notification.d.ts +87 -0
  155. package/dist/types/types/schemas/a2a/notification.d.ts.map +1 -0
  156. package/dist/types/types/schemas/a2a/parameters.d.ts +188 -0
  157. package/dist/types/types/schemas/a2a/parameters.d.ts.map +1 -0
  158. package/dist/types/types/schemas/a2a/ref.d.ts +2057 -0
  159. package/dist/types/types/schemas/a2a/ref.d.ts.map +1 -0
  160. package/dist/types/types/schemas/a2a/rpc.d.ts +104 -0
  161. package/dist/types/types/schemas/a2a/rpc.d.ts.map +1 -0
  162. package/dist/types/types/schemas/a2a/task.d.ts +252 -0
  163. package/dist/types/types/schemas/a2a/task.d.ts.map +1 -0
  164. package/dist/types/types/schemas/index.d.ts +2 -0
  165. package/dist/types/types/schemas/index.d.ts.map +1 -0
  166. package/dist/types/types/services/a2a/repository.d.ts +85 -0
  167. package/dist/types/types/services/a2a/repository.d.ts.map +1 -0
  168. package/dist/types/types/services/a2a/service.d.ts +29 -0
  169. package/dist/types/types/services/a2a/service.d.ts.map +1 -0
  170. package/dist/types/types/services/context.d.ts +167 -0
  171. package/dist/types/types/services/context.d.ts.map +1 -0
  172. package/dist/types/types/services/dispatcher.d.ts +20 -0
  173. package/dist/types/types/services/dispatcher.d.ts.map +1 -0
  174. package/dist/types/types/services/index.d.ts +9 -0
  175. package/dist/types/types/services/index.d.ts.map +1 -0
  176. package/dist/types/types/services/manager.d.ts +42 -0
  177. package/dist/types/types/services/manager.d.ts.map +1 -0
  178. package/dist/types/types/services/mcp/service.d.ts +57 -0
  179. package/dist/types/types/services/mcp/service.d.ts.map +1 -0
  180. package/dist/types/types/services/protocol.d.ts +30 -0
  181. package/dist/types/types/services/protocol.d.ts.map +1 -0
  182. package/dist/types/types/services/service.d.ts +35 -0
  183. package/dist/types/types/services/service.d.ts.map +1 -0
  184. package/dist/types/types/transform.d.ts +61 -0
  185. package/dist/types/types/transform.d.ts.map +1 -0
  186. package/dist/types/utils/api/register.d.ts.map +1 -1
  187. package/dist/types/utils/common/constants.d.ts +4 -4
  188. package/dist/types/utils/common/constants.d.ts.map +1 -1
  189. package/dist/types/utils/common/errors.d.ts +19 -15
  190. package/dist/types/utils/common/errors.d.ts.map +1 -1
  191. package/dist/types/utils/common/utils.d.ts +2 -13
  192. package/dist/types/utils/common/utils.d.ts.map +1 -1
  193. package/dist/types/utils/deployment/task-wrapper.d.ts +5 -6
  194. package/dist/types/utils/deployment/task-wrapper.d.ts.map +1 -1
  195. package/dist/types/utils/deployment/test-deployment.d.ts +2 -2
  196. package/dist/types/utils/deployment/test-deployment.d.ts.map +1 -1
  197. package/dist/types/utils/logging/log.d.ts.map +1 -1
  198. package/dist/utils/api/register.js +1 -3
  199. package/dist/utils/api/register.js.map +1 -1
  200. package/dist/utils/common/constants.js +37 -24
  201. package/dist/utils/common/constants.js.map +1 -1
  202. package/dist/utils/common/errors.js +20 -9
  203. package/dist/utils/common/errors.js.map +1 -1
  204. package/dist/utils/common/utils.js +5 -27
  205. package/dist/utils/common/utils.js.map +1 -1
  206. package/dist/utils/deployment/agents.js.map +1 -1
  207. package/dist/utils/deployment/task-wrapper.js +3 -3
  208. package/dist/utils/deployment/task-wrapper.js.map +1 -1
  209. package/dist/utils/deployment/test-deployment.js +3 -4
  210. package/dist/utils/deployment/test-deployment.js.map +1 -1
  211. package/dist/utils/logging/log.js.map +1 -1
  212. package/package.json +9 -5
  213. package/dist/types/context.js +0 -2
  214. package/dist/types/context.js.map +0 -1
  215. package/dist/types/schema.js +0 -23
  216. package/dist/types/schema.js.map +0 -1
  217. package/dist/types/types/context.d.ts +0 -41
  218. package/dist/types/types/context.d.ts.map +0 -1
  219. package/dist/types/types/schema.d.ts +0 -694
  220. package/dist/types/types/schema.d.ts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"memory.js","sourceRoot":"","sources":["../../../../src/server/lib/storage/memory.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAEzD;;;GAGG;AACH,MAAM,OAAO,iBAAiB;IACpB,KAAK,GAAgC,IAAI,GAAG,EAAE,CAAC;IAEvD;;;;OAIG;IACH,KAAK,CAAC,IAAI,CAAC,MAAc;QACvB,QAAQ,CAAC,mBAAmB,EAAE,iBAAiB,MAAM,EAAE,CAAC,CAAC;QACzD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAErC,6CAA6C;QAC7C,OAAO,KAAK;YACV,CAAC,CAAC;gBACE,IAAI,EAAE,EAAE,GAAG,KAAK,CAAC,IAAI,EAAE;gBACvB,OAAO,EAAE,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC;aAC5B;YACH,CAAC,CAAC,IAAI,CAAC;IACX,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,IAAI,CAAC,IAAoB;QAC7B,QAAQ,CAAC,mBAAmB,EAAE,gBAAgB,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QAE9D,qEAAqE;QACrE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE;YAC3B,IAAI,EAAE,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE;YACtB,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;SAC3B,CAAC,CAAC;IACL,CAAC;CACF"}
1
+ {"version":3,"file":"memory.js","sourceRoot":"","sources":["../../../../src/server/lib/storage/memory.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAEzD;;;GAGG;AACH,MAAM,OAAO,iBAAiB;IACpB,KAAK,GAAgC,IAAI,GAAG,EAAE,CAAC;IAEvD;;;;OAIG;IACH,KAAK,CAAC,IAAI,CAAC,MAAc;QACvB,QAAQ,CAAC,mBAAmB,EAAE,iBAAiB,MAAM,EAAE,CAAC,CAAC;QACzD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAErC,6CAA6C;QAC7C,OAAO,KAAK;YACV,CAAC,CAAC;gBACE,IAAI,EAAE,EAAE,GAAG,KAAK,CAAC,IAAI,EAAE;gBACvB,OAAO,EAAE,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC;aAC5B;YACH,CAAC,CAAC,IAAI,CAAC;IACX,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,IAAI,CAAC,IAAoB;QAC7B,QAAQ,CAAC,mBAAmB,EAAE,gBAAgB,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QAC9D,qEAAqE;QACrE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE;YAC3B,IAAI,EAAE,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE;YACtB,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;SAC3B,CAAC,CAAC;IACL,CAAC;CACF"}
@@ -0,0 +1,109 @@
1
+ import { getCurrentTimestamp } from "../../../utils/common/utils.js";
2
+ import { logError } from "../../../utils/logging/log.js";
3
+ import { processArtifactUpdate } from "../state.js";
4
+ export var UpdateKind;
5
+ (function (UpdateKind) {
6
+ UpdateKind["Message"] = "message";
7
+ UpdateKind["Task"] = "task";
8
+ UpdateKind["StatusUpdate"] = "status-update";
9
+ UpdateKind["ArtifactUpdate"] = "artifact-update";
10
+ })(UpdateKind || (UpdateKind = {}));
11
+ const isMessageInHistory = (task, message) => {
12
+ return task.history?.find((msg) => msg.messageId === message.messageId);
13
+ };
14
+ const updateHistory = (current, updateMessage) => {
15
+ if (!isMessageInHistory(current.task, updateMessage)) {
16
+ current.history = [...(current.history ?? []), updateMessage];
17
+ current.task.history = [...(current.task.history ?? []), updateMessage];
18
+ }
19
+ };
20
+ export const updateMessage = async (props) => {
21
+ const { context, update } = props;
22
+ if (!update || update.kind !== UpdateKind.Message) {
23
+ logError("updateMessage", "Invalid update", update);
24
+ return false;
25
+ }
26
+ context.latestUserMessage = update;
27
+ return true;
28
+ };
29
+ export const updateTask = async (props) => {
30
+ const { context, current, update } = props;
31
+ if (!update || update.kind !== UpdateKind.Task) {
32
+ logError("updateTask", "Invalid update kind", update);
33
+ return false;
34
+ }
35
+ current.task = { ...current.task, ...update };
36
+ if (context.latestUserMessage &&
37
+ !isMessageInHistory(current.task, context.latestUserMessage)) {
38
+ current.task.history = [
39
+ context.latestUserMessage,
40
+ ...(current.task.history ?? []),
41
+ ];
42
+ current.history = [context.latestUserMessage, ...(current.history ?? [])];
43
+ }
44
+ return true;
45
+ };
46
+ export const updateTaskStatusUpdate = async (props) => {
47
+ const { current, update } = props;
48
+ if (!update || update.kind !== UpdateKind.StatusUpdate) {
49
+ logError("updateTaskStatusUpdate", "Invalid update kind", update);
50
+ return false;
51
+ }
52
+ if (current.task.id === update.taskId) {
53
+ current.task.status = update.status;
54
+ current.task.status.timestamp = getCurrentTimestamp();
55
+ if (update.status.message) {
56
+ updateHistory(current, update.status.message);
57
+ }
58
+ return true;
59
+ }
60
+ logError("updateTaskStatusUpdate", "Invalid task id", update);
61
+ return false;
62
+ };
63
+ export const updateTaskArtifactUpdate = async (props) => {
64
+ const { current, update } = props;
65
+ if (!update || update.kind !== UpdateKind.ArtifactUpdate) {
66
+ logError("updateTaskArtifactUpdate", "Invalid update kind", update);
67
+ return false;
68
+ }
69
+ if (current.task.id === update.taskId) {
70
+ current.task.artifacts = processArtifactUpdate(update.append ?? false, current.task.artifacts ?? [], update.artifact);
71
+ }
72
+ return true;
73
+ };
74
+ export const update = async (props) => {
75
+ const { context, current, update } = props;
76
+ if (!update || !update.kind) {
77
+ logError("update", "Invalid update", update);
78
+ return false;
79
+ }
80
+ switch (update.kind) {
81
+ case UpdateKind.Message:
82
+ return updateMessage({
83
+ context,
84
+ current,
85
+ update: update,
86
+ });
87
+ case UpdateKind.Task:
88
+ return updateTask({
89
+ context,
90
+ current,
91
+ update: update,
92
+ });
93
+ case UpdateKind.StatusUpdate:
94
+ return updateTaskStatusUpdate({
95
+ context,
96
+ current,
97
+ update: update,
98
+ });
99
+ case UpdateKind.ArtifactUpdate:
100
+ return updateTaskArtifactUpdate({
101
+ context,
102
+ current,
103
+ update: update,
104
+ });
105
+ default:
106
+ return false;
107
+ }
108
+ };
109
+ //# sourceMappingURL=base.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../../../../src/server/lib/update/base.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export * from "./repository.js";
2
+ export * from "./service.js";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/a2a/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC"}
@@ -0,0 +1,160 @@
1
+ import { CANCEL_UPDATE } from "../../utils/index.js";
2
+ import { processUpdate } from "../../server/lib/state.js";
3
+ import { sendSSEEvent } from "../../transport/streaming/stream.js";
4
+ import { logDebug } from "../../utils/logging/log.js";
5
+ import { InMemoryTaskStore } from "../../server/lib/storage/memory.js";
6
+ import { v4 as uuidv4 } from "uuid";
7
+ /**
8
+ * @description The A2ARepository class.
9
+ */
10
+ export class A2ARepository {
11
+ taskStore;
12
+ _activeCancellations;
13
+ _activeStreams;
14
+ card;
15
+ constructor(params) {
16
+ this.taskStore = params.taskStore ?? new InMemoryTaskStore();
17
+ this.card = params.card;
18
+ this._activeCancellations = new Set();
19
+ this._activeStreams = new Map();
20
+ }
21
+ /**
22
+ * @description Gets the agent card.
23
+ * @returns {AgentCard} The agent card.
24
+ */
25
+ getCard() {
26
+ return this.card;
27
+ }
28
+ /**
29
+ * @description Gets the active streams.
30
+ * @returns {Map<string, Response[]>} The active streams.
31
+ */
32
+ get activeStreams() {
33
+ return this._activeStreams;
34
+ }
35
+ /**
36
+ * @description Gets the active cancellations.
37
+ * @returns {Set<string>} The active cancellations.
38
+ */
39
+ get activeCancellations() {
40
+ return this._activeCancellations;
41
+ }
42
+ /**
43
+ * @description Gets the task store.
44
+ * @returns {TaskStore} The task store.
45
+ */
46
+ getTaskStore() {
47
+ return this.taskStore;
48
+ }
49
+ /**
50
+ * Creates a TaskContext object for a task handler.
51
+ * @param task The task
52
+ * @param userMessage The user message
53
+ * @param history The message history
54
+ * @returns A TaskContext object
55
+ */
56
+ createTaskContext(task, userMessage, history, configuration) {
57
+ return {
58
+ contextId: task.contextId ?? userMessage.contextId ?? uuidv4(),
59
+ task,
60
+ userMessage,
61
+ history,
62
+ configuration,
63
+ isCancelled: () => this._activeCancellations.has(task.id),
64
+ };
65
+ }
66
+ /**
67
+ * Handles task cancellation
68
+ * @param data Task and history data
69
+ * @param res Response object
70
+ */
71
+ async onCancel(context, data, res) {
72
+ const cancelUpdate = CANCEL_UPDATE(data.task.id, context.contextId);
73
+ const currentData = await processUpdate(this.taskStore, {
74
+ context: context,
75
+ current: data,
76
+ update: cancelUpdate,
77
+ });
78
+ // Send the canceled status
79
+ sendSSEEvent(res, currentData.task.id, cancelUpdate);
80
+ this.closeStreamsForTask(currentData.task.id);
81
+ }
82
+ /**
83
+ * Adds a response stream to the tracking map for a task.
84
+ * @param taskId The task ID
85
+ * @param res The response stream
86
+ */
87
+ addStreamForTask(taskId, res) {
88
+ if (!this._activeStreams.has(taskId)) {
89
+ this._activeStreams.set(taskId, []);
90
+ }
91
+ logDebug("A2AServer", "Adding stream for task", {
92
+ taskId,
93
+ activeStreams: this._activeStreams,
94
+ });
95
+ this._activeStreams.get(taskId)?.push(res);
96
+ }
97
+ /**
98
+ * Removes a response stream from the tracking map for a task.
99
+ * @param taskId The task ID
100
+ * @param res The response stream
101
+ */
102
+ removeStreamForTask(taskId, res) {
103
+ const streams = this._activeStreams.get(taskId);
104
+ if (streams) {
105
+ const index = streams.indexOf(res);
106
+ if (index !== -1) {
107
+ streams.splice(index, 1);
108
+ if (streams.length === 0) {
109
+ logDebug("A2AServer", "Removing stream for task", {
110
+ taskId,
111
+ activeStreams: this._activeStreams,
112
+ });
113
+ this._activeStreams.delete(taskId);
114
+ }
115
+ }
116
+ }
117
+ }
118
+ /**
119
+ * Closes any active streams for a task.
120
+ * @param taskId The task ID
121
+ */
122
+ closeStreamsForTask(taskId) {
123
+ const streams = this._activeStreams.get(taskId);
124
+ if (streams) {
125
+ // Send close event to all streams
126
+ for (const stream of streams) {
127
+ if (stream.writable) {
128
+ stream.write("event: close\ndata: {}\n\n");
129
+ stream.end();
130
+ }
131
+ }
132
+ this._activeStreams.delete(taskId);
133
+ }
134
+ }
135
+ /**
136
+ * Handles cleanup when a task stream ends
137
+ * @param taskId The task ID
138
+ * @param res Response object
139
+ */
140
+ async onEnd(taskId, res) {
141
+ this._activeCancellations.delete(taskId);
142
+ this.removeStreamForTask(taskId, res);
143
+ }
144
+ /**
145
+ * Destroys the repository.
146
+ */
147
+ async destroy() {
148
+ this._activeStreams.forEach((streams, taskId) => {
149
+ if (streams.length > 0) {
150
+ logDebug("A2ARepository", "Closing streams for task during stop", {
151
+ taskId,
152
+ });
153
+ this.closeStreamsForTask(taskId);
154
+ }
155
+ });
156
+ this._activeStreams.clear();
157
+ this._activeCancellations.clear();
158
+ }
159
+ }
160
+ //# sourceMappingURL=repository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repository.js","sourceRoot":"","sources":["../../../src/services/a2a/repository.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,247 @@
1
+ import { defaultCancelTaskMethod, createJSONRPCMethod, defaultGetTaskPushNotificationMethod, defaultSetTaskPushNotificationMethod, defaultGetTaskMethod, defaultSendTaskMethod, } from "../../server/index.js";
2
+ import { TaskState, } from "../../types/index.js";
3
+ import { Protocol } from "../../types/services/protocol.js";
4
+ import { loadState, processUpdate } from "../../server/lib/state.js";
5
+ import { FINAL_STATES, getCurrentTimestamp, INVALID_PARAMS, INVALID_REQUEST, logError, METHOD_NOT_FOUND, TASK_NOT_FOUND, validateSendMessageParams, WORKING_UPDATE, } from "../../utils/index.js";
6
+ import { processTaskStream } from "../../transport/streaming/stream.js";
7
+ import { sendSSEEvent, setupSseStream } from "../../index.js";
8
+ import { A2ARepository } from "./repository.js";
9
+ export class A2AService {
10
+ name = "a2a";
11
+ protocol = Protocol.A2A;
12
+ engine;
13
+ state;
14
+ constructor(options) {
15
+ this.engine = options.engine;
16
+ this.state = new A2ARepository(options);
17
+ }
18
+ /**
19
+ * Handles the message/stream method.
20
+ * @param req The SendTaskRequest object
21
+ * @param res The Express Response object
22
+ */
23
+ async handleSendStreamingMessage(req, res) {
24
+ validateSendMessageParams(req.params);
25
+ const { message, metadata } = req.params;
26
+ if (!message.taskId) {
27
+ throw INVALID_PARAMS("Missing task ID");
28
+ }
29
+ const taskId = message.taskId;
30
+ let contextId = message.contextId ?? "unknown";
31
+ const executionContext = {
32
+ id: taskId,
33
+ protocol: Protocol.A2A,
34
+ getRequestParams: () => req.params,
35
+ isCancelled: () => this.state.activeCancellations.has(taskId),
36
+ };
37
+ // Set up SSE stream with initial status
38
+ setupSseStream(res, taskId, {
39
+ taskId: taskId,
40
+ contextId: contextId,
41
+ kind: "status-update",
42
+ status: {
43
+ state: TaskState.Submitted,
44
+ timestamp: getCurrentTimestamp(),
45
+ },
46
+ final: false,
47
+ }, this.state.addStreamForTask.bind(this.state));
48
+ // Load or create task
49
+ let currentData = await loadState(this.state.getTaskStore(), message, metadata, taskId, contextId);
50
+ // Create task context
51
+ const context = this.state.createTaskContext(currentData.task, message, currentData.history);
52
+ contextId = currentData.task.contextId || contextId;
53
+ const workingUpdate = WORKING_UPDATE(taskId, contextId);
54
+ currentData = await processUpdate(this.state.getTaskStore(), {
55
+ context: context,
56
+ current: currentData,
57
+ update: workingUpdate,
58
+ });
59
+ // Send the working status
60
+ sendSSEEvent(res, currentData.task.id, workingUpdate);
61
+ // Process the task using the shared method
62
+ await processTaskStream(context, this.state.getTaskStore(), this.engine, res, taskId, currentData, this.state.onCancel.bind(this.state), this.state.onEnd.bind(this.state), executionContext);
63
+ }
64
+ /**
65
+ * Handles the tasks/resubscribe method.
66
+ * @param req The TaskResubscriptionRequest object
67
+ * @param res The Express Response object
68
+ */
69
+ async handleTaskResubscribe(req, res) {
70
+ const { id: taskId } = req.params;
71
+ if (!taskId) {
72
+ logError("A2AService", "Task ID is required", req);
73
+ throw INVALID_PARAMS("Missing task ID");
74
+ }
75
+ const executionContext = {
76
+ id: taskId,
77
+ protocol: Protocol.A2A,
78
+ getRequestParams: () => req.params,
79
+ isCancelled: () => this.state.activeCancellations.has(taskId),
80
+ };
81
+ // Try to load the task
82
+ const data = await this.state.getTaskStore().load(taskId);
83
+ if (!data) {
84
+ throw TASK_NOT_FOUND("Task Id: " + taskId);
85
+ }
86
+ // Set up SSE stream with current task status
87
+ setupSseStream(res, taskId, {
88
+ taskId: taskId,
89
+ contextId: data.task.contextId || "unknown",
90
+ kind: "status-update",
91
+ status: data.task.status,
92
+ final: false,
93
+ metadata: data.task.metadata,
94
+ }, this.state.addStreamForTask.bind(this.state));
95
+ // Check if task is in final state
96
+ if (FINAL_STATES.includes(data.task.status.state)) {
97
+ // If the task is already complete, send all artifacts and close
98
+ if (data.task.artifacts && data.task.artifacts.length > 0) {
99
+ for (const artifact of data.task.artifacts) {
100
+ const response = {
101
+ taskId: taskId,
102
+ contextId: data.task.contextId || "unknown",
103
+ kind: "artifact-update",
104
+ artifact,
105
+ lastChunk: true,
106
+ metadata: data.task.metadata,
107
+ };
108
+ sendSSEEvent(res, taskId, response);
109
+ }
110
+ }
111
+ // Remove from tracking and close
112
+ this.state.removeStreamForTask(taskId, res);
113
+ res.write("event: close\ndata: {}\n\n");
114
+ res.end();
115
+ return;
116
+ }
117
+ // For non-final states, create context and continue processing
118
+ // We need to use the last user message as the current message
119
+ const lastUserMessage = data.history
120
+ .filter((msg) => msg.role === "user")
121
+ .pop();
122
+ if (!lastUserMessage) {
123
+ throw INVALID_REQUEST("No user message found");
124
+ }
125
+ const context = this.state.createTaskContext(data.task, lastUserMessage, data.history);
126
+ // Continue processing the task using the shared method
127
+ await processTaskStream(context, this.state.getTaskStore(), this.engine, res, taskId, data, this.state.onCancel.bind(this.state), this.state.onEnd.bind(this.state), executionContext);
128
+ }
129
+ /**
130
+ * Executes a method on the A2A service.
131
+ * @param executionContext The execution context.
132
+ * @param engine The agent engine.
133
+ */
134
+ async execute({ executionContext, engine, }) {
135
+ if (!executionContext.requestContext) {
136
+ throw INVALID_REQUEST({
137
+ message: "Invalid request",
138
+ data: {
139
+ method: "unknown",
140
+ params: executionContext.getRequestParams(),
141
+ },
142
+ });
143
+ }
144
+ if (!executionContext.requestContext?.method) {
145
+ throw METHOD_NOT_FOUND({ method: "unknown" });
146
+ }
147
+ //todo better callback sanitization
148
+ let closeConnection = false;
149
+ const callback = (error, result) => {
150
+ const responseHandler = executionContext.requestContext?.response;
151
+ if (error) {
152
+ responseHandler.status(200);
153
+ responseHandler.send({
154
+ jsonrpc: "2.0",
155
+ id: executionContext.id,
156
+ error: error,
157
+ });
158
+ closeConnection = true;
159
+ }
160
+ else {
161
+ responseHandler.status(200);
162
+ responseHandler.send({
163
+ jsonrpc: "2.0",
164
+ id: executionContext.id,
165
+ result,
166
+ });
167
+ }
168
+ if (closeConnection) {
169
+ responseHandler.end();
170
+ }
171
+ };
172
+ switch (executionContext.requestContext?.method) {
173
+ case "message/send":
174
+ case "tasks/get":
175
+ case "tasks/cancel":
176
+ case "tasks/pushNotificationConfig/set":
177
+ case "tasks/pushNotificationConfig/get":
178
+ closeConnection = true;
179
+ return await A2AService.dispatchMethod(executionContext.requestContext.method, executionContext.requestContext.params, callback, {
180
+ taskStore: this.state.getTaskStore(),
181
+ card: this.state.getCard(),
182
+ taskHandler: engine,
183
+ activeCancellations: this.state.activeCancellations,
184
+ createTaskContext: this.state.createTaskContext.bind(this.state),
185
+ closeStreamsForTask: this.state.closeStreamsForTask.bind(this.state),
186
+ }).catch((error) => {
187
+ logError("A2AService", `Error dispatching method: ${executionContext.requestContext?.method}`, error);
188
+ closeConnection = true;
189
+ callback(error, null);
190
+ });
191
+ case "message/stream":
192
+ {
193
+ //todo make the following functions leverage callback
194
+ const params = executionContext.requestContext.request
195
+ .body;
196
+ return await this.handleSendStreamingMessage(params, executionContext.requestContext.response).catch((error) => {
197
+ logError("A2AService", `Error dispatching method: ${executionContext.requestContext?.method}`, error);
198
+ closeConnection = true;
199
+ callback(error, null);
200
+ });
201
+ }
202
+ break;
203
+ case "tasks/resubscribe":
204
+ {
205
+ const params = executionContext.requestContext.request
206
+ .body;
207
+ return await this.handleTaskResubscribe(params, executionContext.requestContext.response).catch((error) => {
208
+ logError("A2AService", `Error dispatching method: ${executionContext.requestContext?.method}`, error);
209
+ closeConnection = true;
210
+ callback(error, null);
211
+ });
212
+ }
213
+ break;
214
+ default:
215
+ logError("A2AService", `Unknown method: ${executionContext.requestContext?.method}`, null);
216
+ callback(METHOD_NOT_FOUND({ method: executionContext.requestContext?.method }), null);
217
+ break;
218
+ }
219
+ }
220
+ async stop() {
221
+ await this.state.destroy();
222
+ }
223
+ /**
224
+ * Dispatches a method to the A2A service.
225
+ * @param method The method to dispatch.
226
+ * @param params The parameters to dispatch.
227
+ * @param callback The callback to dispatch.
228
+ * @param deps The dependencies to dispatch.
229
+ */
230
+ static async dispatchMethod(method, params, callback, deps) {
231
+ switch (method) {
232
+ case "message/send":
233
+ return await createJSONRPCMethod(deps, defaultSendTaskMethod, method)(params, callback);
234
+ case "tasks/get":
235
+ return await createJSONRPCMethod(deps, defaultGetTaskMethod, method)(params, callback);
236
+ case "tasks/cancel":
237
+ return await createJSONRPCMethod(deps, defaultCancelTaskMethod, method)(params, callback);
238
+ case "tasks/pushNotificationConfig/set":
239
+ return await createJSONRPCMethod(deps, defaultSetTaskPushNotificationMethod, method)(params, callback);
240
+ case "tasks/pushNotificationConfig/get":
241
+ return await createJSONRPCMethod(deps, defaultGetTaskPushNotificationMethod, method)(params, callback);
242
+ default:
243
+ throw new Error(`Unknown method: ${method}`);
244
+ }
245
+ }
246
+ }
247
+ //# sourceMappingURL=service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.js","sourceRoot":"","sources":["../../../src/services/a2a/service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":""}
@@ -0,0 +1,61 @@
1
+ import { ServiceDispatcher } from "../types/services/dispatcher.js";
2
+ import { v4 as uuidv4 } from "uuid";
3
+ /**
4
+ * @description The service manager class.
5
+ */
6
+ export class ServiceManager extends ServiceDispatcher {
7
+ /**
8
+ * @description The agent card.
9
+ * @type {AgentCard}
10
+ */
11
+ card;
12
+ /**
13
+ * @description The constructor.
14
+ * @param {ManagerOptions} params The service manager params.
15
+ */
16
+ constructor(params) {
17
+ super(params);
18
+ this.card = params.card;
19
+ }
20
+ /**
21
+ * @description Creates a request context.
22
+ * @param {T} req The request.
23
+ * @returns {T} The request context.
24
+ */
25
+ createRequestContext(req) {
26
+ if (!req.protocol || !req.method || !req.params) {
27
+ throw new Error("Invalid request parameters");
28
+ }
29
+ const context = {
30
+ ...req,
31
+ id: req.id ?? uuidv4(),
32
+ protocol: req.protocol,
33
+ method: req.method,
34
+ params: req.params,
35
+ };
36
+ return context;
37
+ }
38
+ /**
39
+ * @description Gets the agent card.
40
+ * @returns {AgentCard} The agent card.
41
+ */
42
+ getCard() {
43
+ return this.card;
44
+ }
45
+ /**
46
+ * @description Gets a service by protocol.
47
+ * @param {Protocol} protocol The protocol.
48
+ * @returns {Service} The service.
49
+ */
50
+ getService(protocol) {
51
+ return this.services[protocol];
52
+ }
53
+ /**
54
+ * @description Stops the manager.
55
+ * @returns {Promise<void>} The promise.
56
+ */
57
+ async destroy() {
58
+ await Promise.all(Object.values(this.services).map((service) => service.stop()));
59
+ }
60
+ }
61
+ //# sourceMappingURL=manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/services/manager.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAGpE,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,MAAM,CAAC;AAGpC;;GAEG;AACH,MAAM,OAAO,cACX,SAAQ,iBAAiB;IAGzB;;;OAGG;IACM,IAAI,CAAY;IACzB;;;OAGG;IACH,YAAY,MAAsB;QAChC,KAAK,CAAC,MAAM,CAAC,CAAC;QACd,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;IAC1B,CAAC;IAED;;;;OAIG;IACH,oBAAoB,CAAiC,GAAM;QACzD,IAAI,CAAC,GAAG,CAAC,QAAQ,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;YAChD,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAChD,CAAC;QACD,MAAM,OAAO,GAAM;YACjB,GAAG,GAAG;YACN,EAAE,EAAE,GAAG,CAAC,EAAE,IAAI,MAAM,EAAE;YACtB,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,MAAM,EAAE,GAAG,CAAC,MAAM;SACd,CAAC;QACP,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;OAGG;IACH,OAAO;QACL,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED;;;;OAIG;IACH,UAAU,CAAC,QAAkB;QAC3B,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACjC,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,OAAO;QACX,MAAM,OAAO,CAAC,GAAG,CACf,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAC9D,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,2 @@
1
+ export * from "./service.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/mcp/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC"}