@artinet/sdk 0.5.16 → 0.5.18

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 (175) hide show
  1. package/README.md +108 -58
  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 +126 -0
  5. package/dist/browser/client/a2a-client.js +221 -0
  6. package/dist/browser/client/index.d.ts +1 -0
  7. package/dist/browser/client/index.js +1 -0
  8. package/dist/browser/services/a2a/helpers/message-builder.d.ts +12 -0
  9. package/dist/browser/services/a2a/helpers/message-builder.js +61 -0
  10. package/dist/browser/transport/rpc/parser.d.ts +15 -0
  11. package/dist/browser/transport/rpc/parser.js +48 -0
  12. package/dist/browser/transport/rpc/rpc-client.d.ts +80 -0
  13. package/dist/browser/transport/rpc/rpc-client.js +189 -0
  14. package/dist/browser/transport/streaming/event-stream.d.ts +25 -0
  15. package/dist/browser/transport/streaming/event-stream.js +99 -0
  16. package/dist/browser/types/ext.d.ts +13 -0
  17. package/dist/browser/types/ext.js +10 -0
  18. package/dist/browser/types/index.d.ts +4 -0
  19. package/dist/browser/types/index.js +4 -0
  20. package/dist/browser/types/interfaces/client.d.ts +135 -0
  21. package/dist/browser/types/interfaces/client.js +5 -0
  22. package/dist/browser/types/interfaces/index.d.ts +3 -0
  23. package/dist/browser/types/interfaces/index.js +3 -0
  24. package/dist/browser/types/interfaces/services/a2a/builder.d.ts +37 -0
  25. package/dist/browser/types/interfaces/services/a2a/builder.js +5 -0
  26. package/dist/browser/types/interfaces/services/a2a/context.d.ts +162 -0
  27. package/dist/browser/types/interfaces/services/a2a/context.js +5 -0
  28. package/dist/browser/types/interfaces/services/a2a/engine.d.ts +7 -0
  29. package/dist/browser/types/interfaces/services/a2a/engine.js +5 -0
  30. package/dist/browser/types/interfaces/services/a2a/index.d.ts +5 -0
  31. package/dist/browser/types/interfaces/services/a2a/index.js +5 -0
  32. package/dist/browser/types/interfaces/services/a2a/legacy.d.ts +93 -0
  33. package/dist/browser/types/interfaces/services/a2a/legacy.js +5 -0
  34. package/dist/browser/types/interfaces/services/a2a/service.d.ts +413 -0
  35. package/dist/browser/types/interfaces/services/a2a/service.js +5 -0
  36. package/dist/browser/types/interfaces/services/core/context/command.d.ts +25 -0
  37. package/dist/browser/types/interfaces/services/core/context/command.js +5 -0
  38. package/dist/browser/types/interfaces/services/core/context/context.d.ts +207 -0
  39. package/dist/browser/types/interfaces/services/core/context/context.js +5 -0
  40. package/dist/browser/types/interfaces/services/core/context/index.d.ts +3 -0
  41. package/dist/browser/types/interfaces/services/core/context/index.js +3 -0
  42. package/dist/browser/types/interfaces/services/core/context/types.d.ts +11 -0
  43. package/dist/browser/types/interfaces/services/core/context/types.js +5 -0
  44. package/dist/browser/types/interfaces/services/core/execution/engine.d.ts +106 -0
  45. package/dist/browser/types/interfaces/services/core/execution/engine.js +5 -0
  46. package/dist/browser/types/interfaces/services/core/execution/environment.d.ts +11 -0
  47. package/dist/browser/types/interfaces/services/core/execution/environment.js +5 -0
  48. package/dist/browser/types/interfaces/services/core/execution/execute.d.ts +7 -0
  49. package/dist/browser/types/interfaces/services/core/execution/execute.js +5 -0
  50. package/dist/browser/types/interfaces/services/core/execution/index.d.ts +3 -0
  51. package/dist/browser/types/interfaces/services/core/execution/index.js +3 -0
  52. package/dist/browser/types/interfaces/services/core/index.d.ts +4 -0
  53. package/dist/browser/types/interfaces/services/core/index.js +4 -0
  54. package/dist/browser/types/interfaces/services/core/managers/cancellation.d.ts +9 -0
  55. package/dist/browser/types/interfaces/services/core/managers/cancellation.js +5 -0
  56. package/dist/browser/types/interfaces/services/core/managers/connection.d.ts +9 -0
  57. package/dist/browser/types/interfaces/services/core/managers/connection.js +5 -0
  58. package/dist/browser/types/interfaces/services/core/managers/context.d.ts +17 -0
  59. package/dist/browser/types/interfaces/services/core/managers/context.js +5 -0
  60. package/dist/browser/types/interfaces/services/core/managers/event.d.ts +328 -0
  61. package/dist/browser/types/interfaces/services/core/managers/event.js +5 -0
  62. package/dist/browser/types/interfaces/services/core/managers/index.d.ts +6 -0
  63. package/dist/browser/types/interfaces/services/core/managers/index.js +6 -0
  64. package/dist/browser/types/interfaces/services/core/managers/stream.d.ts +217 -0
  65. package/dist/browser/types/interfaces/services/core/managers/stream.js +5 -0
  66. package/dist/browser/types/interfaces/services/core/managers/task.d.ts +9 -0
  67. package/dist/browser/types/interfaces/services/core/managers/task.js +1 -0
  68. package/dist/browser/types/interfaces/services/core/service.d.ts +115 -0
  69. package/dist/browser/types/interfaces/services/core/service.js +5 -0
  70. package/dist/browser/types/interfaces/services/index.d.ts +4 -0
  71. package/dist/browser/types/interfaces/services/index.js +4 -0
  72. package/dist/browser/types/interfaces/services/mcp/index.d.ts +1 -0
  73. package/dist/browser/types/interfaces/services/mcp/index.js +1 -0
  74. package/dist/browser/types/interfaces/services/mcp/service.d.ts +49 -0
  75. package/dist/browser/types/interfaces/services/mcp/service.js +5 -0
  76. package/dist/browser/types/interfaces/services/protocol.d.ts +33 -0
  77. package/dist/browser/types/interfaces/services/protocol.js +34 -0
  78. package/dist/browser/types/interfaces/storage.d.ts +8 -0
  79. package/dist/browser/types/interfaces/storage.js +5 -0
  80. package/dist/browser/types/schemas/a2a/agent.d.ts +2583 -0
  81. package/dist/browser/types/schemas/a2a/agent.js +323 -0
  82. package/dist/browser/types/schemas/a2a/auth.d.ts +908 -0
  83. package/dist/browser/types/schemas/a2a/auth.js +283 -0
  84. package/dist/browser/types/schemas/a2a/error.d.ts +396 -0
  85. package/dist/browser/types/schemas/a2a/error.js +163 -0
  86. package/dist/browser/types/schemas/a2a/index.d.ts +11 -0
  87. package/dist/browser/types/schemas/a2a/index.js +11 -0
  88. package/dist/browser/types/schemas/a2a/kind.d.ts +11 -0
  89. package/dist/browser/types/schemas/a2a/kind.js +20 -0
  90. package/dist/browser/types/schemas/a2a/message.d.ts +10343 -0
  91. package/dist/browser/types/schemas/a2a/message.js +130 -0
  92. package/dist/browser/types/schemas/a2a/notification.d.ts +1517 -0
  93. package/dist/browser/types/schemas/a2a/notification.js +203 -0
  94. package/dist/browser/types/schemas/a2a/parameters.d.ts +956 -0
  95. package/dist/browser/types/schemas/a2a/parameters.js +241 -0
  96. package/dist/browser/types/schemas/a2a/protocol.d.ts +14363 -0
  97. package/dist/browser/types/schemas/a2a/protocol.js +59 -0
  98. package/dist/browser/types/schemas/a2a/rpc.d.ts +182 -0
  99. package/dist/browser/types/schemas/a2a/rpc.js +126 -0
  100. package/dist/browser/types/schemas/a2a/task.d.ts +5886 -0
  101. package/dist/browser/types/schemas/a2a/task.js +134 -0
  102. package/dist/browser/types/schemas/a2a/transport.d.ts +31 -0
  103. package/dist/browser/types/schemas/a2a/transport.js +28 -0
  104. package/dist/browser/types/schemas/index.d.ts +1 -0
  105. package/dist/browser/types/schemas/index.js +1 -0
  106. package/dist/browser/types/utils/index.d.ts +1 -0
  107. package/dist/browser/types/utils/index.js +1 -0
  108. package/dist/browser/types/utils/transform.d.ts +64 -0
  109. package/dist/browser/types/utils/transform.js +35 -0
  110. package/dist/browser/utils/common/constants.d.ts +11 -0
  111. package/dist/browser/utils/common/constants.js +38 -0
  112. package/dist/browser/utils/common/errors.d.ts +24 -0
  113. package/dist/browser/utils/common/errors.js +42 -0
  114. package/dist/browser/utils/common/utils.d.ts +9 -0
  115. package/dist/browser/utils/common/utils.js +11 -0
  116. package/dist/browser/utils/logging/index.d.ts +2 -0
  117. package/dist/browser/utils/logging/index.js +2 -0
  118. package/dist/browser/utils/logging/log.d.ts +33 -0
  119. package/dist/browser/utils/logging/log.js +75 -0
  120. package/dist/browser/utils/logging/logger.d.ts +18 -0
  121. package/dist/browser/utils/logging/logger.js +18 -0
  122. package/dist/client/a2a-client.d.ts +2 -1
  123. package/dist/client/a2a-client.js +13 -4
  124. package/dist/server/express/errors.js +1 -1
  125. package/dist/server/express/middeware.d.ts +2 -2
  126. package/dist/server/express/middeware.js +26 -6
  127. package/dist/server/express/server.d.ts +26 -25
  128. package/dist/server/express/server.js +32 -6
  129. package/dist/services/a2a/factory/builder.d.ts +24 -24
  130. package/dist/services/a2a/factory/builder.js +6 -1
  131. package/dist/services/a2a/factory/service.js +2 -1
  132. package/dist/services/a2a/helpers/agentcard-builder.d.ts +7 -0
  133. package/dist/services/a2a/helpers/agentcard-builder.js +23 -0
  134. package/dist/services/a2a/helpers/history.d.ts +2 -0
  135. package/dist/services/a2a/helpers/history.js +3 -0
  136. package/dist/services/a2a/helpers/index.d.ts +3 -0
  137. package/dist/services/a2a/helpers/index.js +3 -0
  138. package/dist/services/a2a/methods/get-task.d.ts +46 -46
  139. package/dist/services/a2a/methods/get-task.js +2 -0
  140. package/dist/services/a2a/methods/send-message.js +18 -1
  141. package/dist/services/a2a/service.d.ts +154 -153
  142. package/dist/services/a2a/service.js +20 -6
  143. package/dist/services/mcp/service.js +0 -1
  144. package/dist/transport/rpc/parser.js +2 -2
  145. package/dist/transport/rpc/rpc-client.js +2 -2
  146. package/dist/transport/trpc/a2a/factory/router.d.ts +1084 -1084
  147. package/dist/transport/trpc/a2a/routes/info.d.ts +36 -36
  148. package/dist/transport/trpc/a2a/routes/message/route.d.ts +225 -225
  149. package/dist/transport/trpc/a2a/routes/tasks/route.d.ts +257 -257
  150. package/dist/transport/trpc/a2a/trpc.d.ts +120 -120
  151. package/dist/types/interfaces/services/a2a/service.d.ts +6 -1
  152. package/dist/types/schemas/a2a/agent.d.ts +818 -818
  153. package/dist/types/schemas/a2a/agent.js +1 -23
  154. package/dist/types/schemas/a2a/auth.d.ts +197 -197
  155. package/dist/types/schemas/a2a/auth.js +4 -19
  156. package/dist/types/schemas/a2a/error.d.ts +24 -24
  157. package/dist/types/schemas/a2a/message.d.ts +4499 -4499
  158. package/dist/types/schemas/a2a/message.js +2 -10
  159. package/dist/types/schemas/a2a/notification.d.ts +403 -403
  160. package/dist/types/schemas/a2a/notification.js +3 -7
  161. package/dist/types/schemas/a2a/parameters.d.ts +264 -264
  162. package/dist/types/schemas/a2a/parameters.js +1 -14
  163. package/dist/types/schemas/a2a/protocol.d.ts +5988 -5988
  164. package/dist/types/schemas/a2a/rpc.d.ts +20 -20
  165. package/dist/types/schemas/a2a/rpc.js +0 -5
  166. package/dist/types/schemas/a2a/task.d.ts +2513 -2513
  167. package/dist/types/schemas/a2a/task.js +10 -11
  168. package/dist/utils/common/constants.js +1 -1
  169. package/dist/utils/common/errors.d.ts +2 -1
  170. package/dist/utils/common/errors.js +2 -1
  171. package/dist/utils/common/schema-validation.d.ts +2 -0
  172. package/dist/utils/common/schema-validation.js +12 -0
  173. package/dist/utils/index.d.ts +1 -0
  174. package/dist/utils/index.js +1 -0
  175. package/package.json +20 -17
@@ -3,6 +3,7 @@
3
3
  * SPDX-License-Identifier: Apache-2.0
4
4
  */
5
5
  import { createContext } from "../factory/context.js";
6
+ import { getLatestHistory } from "../helpers/index.js";
6
7
  export async function sendMessage(input, params) {
7
8
  const { service, engine, contextManager, signal } = params;
8
9
  const contextId = input.message.contextId;
@@ -13,7 +14,23 @@ export async function sendMessage(input, params) {
13
14
  context.events.on("error", () => {
14
15
  context.events.onComplete();
15
16
  });
17
+ if (input.configuration?.blocking === false) {
18
+ const result = await Promise.race([
19
+ service.execute(engine, context).then(() => {
20
+ const state = context.events.getState();
21
+ return state.task ?? state;
22
+ }),
23
+ new Promise((resolve) => {
24
+ context.events.on("start", (_, state) => {
25
+ resolve(state.task ?? state);
26
+ });
27
+ }),
28
+ ]);
29
+ return result;
30
+ }
16
31
  await service.execute(engine, context);
17
32
  const state = context.events.getState();
18
- return state.task ?? state;
33
+ const task = state.task ?? state;
34
+ task.history = getLatestHistory(task, input.configuration?.historyLength);
35
+ return task;
19
36
  }
@@ -12,7 +12,8 @@ export declare class A2AService implements A2AServiceInterface {
12
12
  private contexts;
13
13
  private methods;
14
14
  readonly eventOverrides: EventManagerOptions<Command, State, Update> | undefined;
15
- constructor(agentCard: AgentCard, engine: A2AEngine, contexts: ContextManagerInterface<Command, State, Update>, connections: ConnectionManagerInterface, cancellations: CancellationManagerInterface, tasks: TaskManagerInterface<TaskAndHistory>, methods: MethodOptions, eventOverrides?: EventManagerOptions<Command, State, Update>);
15
+ private enforceParamValidation;
16
+ constructor(agentCard: AgentCard, engine: A2AEngine, contexts: ContextManagerInterface<Command, State, Update>, connections: ConnectionManagerInterface, cancellations: CancellationManagerInterface, tasks: TaskManagerInterface<TaskAndHistory>, methods: MethodOptions, eventOverrides?: EventManagerOptions<Command, State, Update>, enforceParamValidation?: boolean);
16
17
  execute(engine: A2AEngine, context: CoreContext<Command, State, Update>): Promise<void>;
17
18
  stop(): Promise<void>;
18
19
  addConnection(id: string): void;
@@ -32,101 +33,101 @@ export declare class A2AService implements A2AServiceInterface {
32
33
  parts: ({
33
34
  file: {
34
35
  bytes: string;
35
- name?: string | null | undefined;
36
- mimeType?: string | null | undefined;
37
- uri?: null | undefined;
36
+ name?: string | undefined;
37
+ mimeType?: string | undefined;
38
+ uri?: undefined;
38
39
  } | {
39
40
  uri: string;
40
- name?: string | null | undefined;
41
- bytes?: null | undefined;
42
- mimeType?: string | null | undefined;
41
+ name?: string | undefined;
42
+ bytes?: undefined;
43
+ mimeType?: string | undefined;
43
44
  };
44
45
  kind: "file";
45
- metadata?: Record<string, unknown> | null | undefined;
46
+ metadata?: Record<string, unknown> | undefined;
46
47
  } | {
47
48
  text: string;
48
49
  kind: "text";
49
- metadata?: Record<string, unknown> | null | undefined;
50
+ metadata?: Record<string, unknown> | undefined;
50
51
  } | {
51
52
  data: Record<string, unknown>;
52
53
  kind: "data";
53
- metadata?: Record<string, unknown> | null | undefined;
54
+ metadata?: Record<string, unknown> | undefined;
54
55
  })[];
55
56
  messageId: string;
56
- metadata?: Record<string, unknown> | null | undefined;
57
- extensions?: string[] | null | undefined;
58
- referenceTaskIds?: string[] | null | undefined;
59
- taskId?: string | null | undefined;
60
- contextId?: string | null | undefined;
61
- } | null | undefined;
62
- timestamp?: string | null | undefined;
57
+ metadata?: Record<string, unknown> | undefined;
58
+ extensions?: string[] | undefined;
59
+ referenceTaskIds?: string[] | undefined;
60
+ taskId?: string | undefined;
61
+ contextId?: string | undefined;
62
+ } | undefined;
63
+ timestamp?: string | undefined;
63
64
  };
64
65
  kind: "task";
65
66
  contextId: string;
66
- metadata?: Record<string, unknown> | null | undefined;
67
+ metadata?: Record<string, unknown> | undefined;
67
68
  history?: {
68
69
  role: "user" | "agent";
69
70
  kind: "message";
70
71
  parts: ({
71
72
  file: {
72
73
  bytes: string;
73
- name?: string | null | undefined;
74
- mimeType?: string | null | undefined;
75
- uri?: null | undefined;
74
+ name?: string | undefined;
75
+ mimeType?: string | undefined;
76
+ uri?: undefined;
76
77
  } | {
77
78
  uri: string;
78
- name?: string | null | undefined;
79
- bytes?: null | undefined;
80
- mimeType?: string | null | undefined;
79
+ name?: string | undefined;
80
+ bytes?: undefined;
81
+ mimeType?: string | undefined;
81
82
  };
82
83
  kind: "file";
83
- metadata?: Record<string, unknown> | null | undefined;
84
+ metadata?: Record<string, unknown> | undefined;
84
85
  } | {
85
86
  text: string;
86
87
  kind: "text";
87
- metadata?: Record<string, unknown> | null | undefined;
88
+ metadata?: Record<string, unknown> | undefined;
88
89
  } | {
89
90
  data: Record<string, unknown>;
90
91
  kind: "data";
91
- metadata?: Record<string, unknown> | null | undefined;
92
+ metadata?: Record<string, unknown> | undefined;
92
93
  })[];
93
94
  messageId: string;
94
- metadata?: Record<string, unknown> | null | undefined;
95
- extensions?: string[] | null | undefined;
96
- referenceTaskIds?: string[] | null | undefined;
97
- taskId?: string | null | undefined;
98
- contextId?: string | null | undefined;
99
- }[] | null | undefined;
95
+ metadata?: Record<string, unknown> | undefined;
96
+ extensions?: string[] | undefined;
97
+ referenceTaskIds?: string[] | undefined;
98
+ taskId?: string | undefined;
99
+ contextId?: string | undefined;
100
+ }[] | undefined;
100
101
  artifacts?: {
101
102
  artifactId: string;
102
103
  parts: ({
103
104
  file: {
104
105
  bytes: string;
105
- name?: string | null | undefined;
106
- mimeType?: string | null | undefined;
107
- uri?: null | undefined;
106
+ name?: string | undefined;
107
+ mimeType?: string | undefined;
108
+ uri?: undefined;
108
109
  } | {
109
110
  uri: string;
110
- name?: string | null | undefined;
111
- bytes?: null | undefined;
112
- mimeType?: string | null | undefined;
111
+ name?: string | undefined;
112
+ bytes?: undefined;
113
+ mimeType?: string | undefined;
113
114
  };
114
115
  kind: "file";
115
- metadata?: Record<string, unknown> | null | undefined;
116
+ metadata?: Record<string, unknown> | undefined;
116
117
  } | {
117
118
  text: string;
118
119
  kind: "text";
119
- metadata?: Record<string, unknown> | null | undefined;
120
+ metadata?: Record<string, unknown> | undefined;
120
121
  } | {
121
122
  data: Record<string, unknown>;
122
123
  kind: "data";
123
- metadata?: Record<string, unknown> | null | undefined;
124
+ metadata?: Record<string, unknown> | undefined;
124
125
  })[];
125
- name?: string | null | undefined;
126
- metadata?: Record<string, unknown> | null | undefined;
127
- description?: string | null | undefined;
128
- extension?: string[] | null | undefined;
129
- }[] | null | undefined;
126
+ name?: string | undefined;
127
+ metadata?: Record<string, unknown> | undefined;
128
+ description?: string | undefined;
129
+ extension?: string[] | undefined;
130
+ }[] | undefined;
130
131
  }>;
131
132
  cancelTask(input: TaskIdParams): Promise<{
132
133
  id: string;
@@ -138,101 +139,101 @@ export declare class A2AService implements A2AServiceInterface {
138
139
  parts: ({
139
140
  file: {
140
141
  bytes: string;
141
- name?: string | null | undefined;
142
- mimeType?: string | null | undefined;
143
- uri?: null | undefined;
142
+ name?: string | undefined;
143
+ mimeType?: string | undefined;
144
+ uri?: undefined;
144
145
  } | {
145
146
  uri: string;
146
- name?: string | null | undefined;
147
- bytes?: null | undefined;
148
- mimeType?: string | null | undefined;
147
+ name?: string | undefined;
148
+ bytes?: undefined;
149
+ mimeType?: string | undefined;
149
150
  };
150
151
  kind: "file";
151
- metadata?: Record<string, unknown> | null | undefined;
152
+ metadata?: Record<string, unknown> | undefined;
152
153
  } | {
153
154
  text: string;
154
155
  kind: "text";
155
- metadata?: Record<string, unknown> | null | undefined;
156
+ metadata?: Record<string, unknown> | undefined;
156
157
  } | {
157
158
  data: Record<string, unknown>;
158
159
  kind: "data";
159
- metadata?: Record<string, unknown> | null | undefined;
160
+ metadata?: Record<string, unknown> | undefined;
160
161
  })[];
161
162
  messageId: string;
162
- metadata?: Record<string, unknown> | null | undefined;
163
- extensions?: string[] | null | undefined;
164
- referenceTaskIds?: string[] | null | undefined;
165
- taskId?: string | null | undefined;
166
- contextId?: string | null | undefined;
167
- } | null | undefined;
168
- timestamp?: string | null | undefined;
163
+ metadata?: Record<string, unknown> | undefined;
164
+ extensions?: string[] | undefined;
165
+ referenceTaskIds?: string[] | undefined;
166
+ taskId?: string | undefined;
167
+ contextId?: string | undefined;
168
+ } | undefined;
169
+ timestamp?: string | undefined;
169
170
  };
170
171
  kind: "task";
171
172
  contextId: string;
172
- metadata?: Record<string, unknown> | null | undefined;
173
+ metadata?: Record<string, unknown> | undefined;
173
174
  history?: {
174
175
  role: "user" | "agent";
175
176
  kind: "message";
176
177
  parts: ({
177
178
  file: {
178
179
  bytes: string;
179
- name?: string | null | undefined;
180
- mimeType?: string | null | undefined;
181
- uri?: null | undefined;
180
+ name?: string | undefined;
181
+ mimeType?: string | undefined;
182
+ uri?: undefined;
182
183
  } | {
183
184
  uri: string;
184
- name?: string | null | undefined;
185
- bytes?: null | undefined;
186
- mimeType?: string | null | undefined;
185
+ name?: string | undefined;
186
+ bytes?: undefined;
187
+ mimeType?: string | undefined;
187
188
  };
188
189
  kind: "file";
189
- metadata?: Record<string, unknown> | null | undefined;
190
+ metadata?: Record<string, unknown> | undefined;
190
191
  } | {
191
192
  text: string;
192
193
  kind: "text";
193
- metadata?: Record<string, unknown> | null | undefined;
194
+ metadata?: Record<string, unknown> | undefined;
194
195
  } | {
195
196
  data: Record<string, unknown>;
196
197
  kind: "data";
197
- metadata?: Record<string, unknown> | null | undefined;
198
+ metadata?: Record<string, unknown> | undefined;
198
199
  })[];
199
200
  messageId: string;
200
- metadata?: Record<string, unknown> | null | undefined;
201
- extensions?: string[] | null | undefined;
202
- referenceTaskIds?: string[] | null | undefined;
203
- taskId?: string | null | undefined;
204
- contextId?: string | null | undefined;
205
- }[] | null | undefined;
201
+ metadata?: Record<string, unknown> | undefined;
202
+ extensions?: string[] | undefined;
203
+ referenceTaskIds?: string[] | undefined;
204
+ taskId?: string | undefined;
205
+ contextId?: string | undefined;
206
+ }[] | undefined;
206
207
  artifacts?: {
207
208
  artifactId: string;
208
209
  parts: ({
209
210
  file: {
210
211
  bytes: string;
211
- name?: string | null | undefined;
212
- mimeType?: string | null | undefined;
213
- uri?: null | undefined;
212
+ name?: string | undefined;
213
+ mimeType?: string | undefined;
214
+ uri?: undefined;
214
215
  } | {
215
216
  uri: string;
216
- name?: string | null | undefined;
217
- bytes?: null | undefined;
218
- mimeType?: string | null | undefined;
217
+ name?: string | undefined;
218
+ bytes?: undefined;
219
+ mimeType?: string | undefined;
219
220
  };
220
221
  kind: "file";
221
- metadata?: Record<string, unknown> | null | undefined;
222
+ metadata?: Record<string, unknown> | undefined;
222
223
  } | {
223
224
  text: string;
224
225
  kind: "text";
225
- metadata?: Record<string, unknown> | null | undefined;
226
+ metadata?: Record<string, unknown> | undefined;
226
227
  } | {
227
228
  data: Record<string, unknown>;
228
229
  kind: "data";
229
- metadata?: Record<string, unknown> | null | undefined;
230
+ metadata?: Record<string, unknown> | undefined;
230
231
  })[];
231
- name?: string | null | undefined;
232
- metadata?: Record<string, unknown> | null | undefined;
233
- description?: string | null | undefined;
234
- extension?: string[] | null | undefined;
235
- }[] | null | undefined;
232
+ name?: string | undefined;
233
+ metadata?: Record<string, unknown> | undefined;
234
+ description?: string | undefined;
235
+ extension?: string[] | undefined;
236
+ }[] | undefined;
236
237
  }>;
237
238
  sendMessage(message: MessageSendParams | string, params?: Partial<Omit<MethodParams, "service" | "contextManager">>): Promise<{
238
239
  role: "user" | "agent";
@@ -240,32 +241,32 @@ export declare class A2AService implements A2AServiceInterface {
240
241
  parts: ({
241
242
  file: {
242
243
  bytes: string;
243
- name?: string | null | undefined;
244
- mimeType?: string | null | undefined;
245
- uri?: null | undefined;
244
+ name?: string | undefined;
245
+ mimeType?: string | undefined;
246
+ uri?: undefined;
246
247
  } | {
247
248
  uri: string;
248
- name?: string | null | undefined;
249
- bytes?: null | undefined;
250
- mimeType?: string | null | undefined;
249
+ name?: string | undefined;
250
+ bytes?: undefined;
251
+ mimeType?: string | undefined;
251
252
  };
252
253
  kind: "file";
253
- metadata?: Record<string, unknown> | null | undefined;
254
+ metadata?: Record<string, unknown> | undefined;
254
255
  } | {
255
256
  text: string;
256
257
  kind: "text";
257
- metadata?: Record<string, unknown> | null | undefined;
258
+ metadata?: Record<string, unknown> | undefined;
258
259
  } | {
259
260
  data: Record<string, unknown>;
260
261
  kind: "data";
261
- metadata?: Record<string, unknown> | null | undefined;
262
+ metadata?: Record<string, unknown> | undefined;
262
263
  })[];
263
264
  messageId: string;
264
- metadata?: Record<string, unknown> | null | undefined;
265
- extensions?: string[] | null | undefined;
266
- referenceTaskIds?: string[] | null | undefined;
267
- taskId?: string | null | undefined;
268
- contextId?: string | null | undefined;
265
+ metadata?: Record<string, unknown> | undefined;
266
+ extensions?: string[] | undefined;
267
+ referenceTaskIds?: string[] | undefined;
268
+ taskId?: string | undefined;
269
+ contextId?: string | undefined;
269
270
  } | {
270
271
  id: string;
271
272
  status: {
@@ -276,101 +277,101 @@ export declare class A2AService implements A2AServiceInterface {
276
277
  parts: ({
277
278
  file: {
278
279
  bytes: string;
279
- name?: string | null | undefined;
280
- mimeType?: string | null | undefined;
281
- uri?: null | undefined;
280
+ name?: string | undefined;
281
+ mimeType?: string | undefined;
282
+ uri?: undefined;
282
283
  } | {
283
284
  uri: string;
284
- name?: string | null | undefined;
285
- bytes?: null | undefined;
286
- mimeType?: string | null | undefined;
285
+ name?: string | undefined;
286
+ bytes?: undefined;
287
+ mimeType?: string | undefined;
287
288
  };
288
289
  kind: "file";
289
- metadata?: Record<string, unknown> | null | undefined;
290
+ metadata?: Record<string, unknown> | undefined;
290
291
  } | {
291
292
  text: string;
292
293
  kind: "text";
293
- metadata?: Record<string, unknown> | null | undefined;
294
+ metadata?: Record<string, unknown> | undefined;
294
295
  } | {
295
296
  data: Record<string, unknown>;
296
297
  kind: "data";
297
- metadata?: Record<string, unknown> | null | undefined;
298
+ metadata?: Record<string, unknown> | undefined;
298
299
  })[];
299
300
  messageId: string;
300
- metadata?: Record<string, unknown> | null | undefined;
301
- extensions?: string[] | null | undefined;
302
- referenceTaskIds?: string[] | null | undefined;
303
- taskId?: string | null | undefined;
304
- contextId?: string | null | undefined;
305
- } | null | undefined;
306
- timestamp?: string | null | undefined;
301
+ metadata?: Record<string, unknown> | undefined;
302
+ extensions?: string[] | undefined;
303
+ referenceTaskIds?: string[] | undefined;
304
+ taskId?: string | undefined;
305
+ contextId?: string | undefined;
306
+ } | undefined;
307
+ timestamp?: string | undefined;
307
308
  };
308
309
  kind: "task";
309
310
  contextId: string;
310
- metadata?: Record<string, unknown> | null | undefined;
311
+ metadata?: Record<string, unknown> | undefined;
311
312
  history?: {
312
313
  role: "user" | "agent";
313
314
  kind: "message";
314
315
  parts: ({
315
316
  file: {
316
317
  bytes: string;
317
- name?: string | null | undefined;
318
- mimeType?: string | null | undefined;
319
- uri?: null | undefined;
318
+ name?: string | undefined;
319
+ mimeType?: string | undefined;
320
+ uri?: undefined;
320
321
  } | {
321
322
  uri: string;
322
- name?: string | null | undefined;
323
- bytes?: null | undefined;
324
- mimeType?: string | null | undefined;
323
+ name?: string | undefined;
324
+ bytes?: undefined;
325
+ mimeType?: string | undefined;
325
326
  };
326
327
  kind: "file";
327
- metadata?: Record<string, unknown> | null | undefined;
328
+ metadata?: Record<string, unknown> | undefined;
328
329
  } | {
329
330
  text: string;
330
331
  kind: "text";
331
- metadata?: Record<string, unknown> | null | undefined;
332
+ metadata?: Record<string, unknown> | undefined;
332
333
  } | {
333
334
  data: Record<string, unknown>;
334
335
  kind: "data";
335
- metadata?: Record<string, unknown> | null | undefined;
336
+ metadata?: Record<string, unknown> | undefined;
336
337
  })[];
337
338
  messageId: string;
338
- metadata?: Record<string, unknown> | null | undefined;
339
- extensions?: string[] | null | undefined;
340
- referenceTaskIds?: string[] | null | undefined;
341
- taskId?: string | null | undefined;
342
- contextId?: string | null | undefined;
343
- }[] | null | undefined;
339
+ metadata?: Record<string, unknown> | undefined;
340
+ extensions?: string[] | undefined;
341
+ referenceTaskIds?: string[] | undefined;
342
+ taskId?: string | undefined;
343
+ contextId?: string | undefined;
344
+ }[] | undefined;
344
345
  artifacts?: {
345
346
  artifactId: string;
346
347
  parts: ({
347
348
  file: {
348
349
  bytes: string;
349
- name?: string | null | undefined;
350
- mimeType?: string | null | undefined;
351
- uri?: null | undefined;
350
+ name?: string | undefined;
351
+ mimeType?: string | undefined;
352
+ uri?: undefined;
352
353
  } | {
353
354
  uri: string;
354
- name?: string | null | undefined;
355
- bytes?: null | undefined;
356
- mimeType?: string | null | undefined;
355
+ name?: string | undefined;
356
+ bytes?: undefined;
357
+ mimeType?: string | undefined;
357
358
  };
358
359
  kind: "file";
359
- metadata?: Record<string, unknown> | null | undefined;
360
+ metadata?: Record<string, unknown> | undefined;
360
361
  } | {
361
362
  text: string;
362
363
  kind: "text";
363
- metadata?: Record<string, unknown> | null | undefined;
364
+ metadata?: Record<string, unknown> | undefined;
364
365
  } | {
365
366
  data: Record<string, unknown>;
366
367
  kind: "data";
367
- metadata?: Record<string, unknown> | null | undefined;
368
+ metadata?: Record<string, unknown> | undefined;
368
369
  })[];
369
- name?: string | null | undefined;
370
- metadata?: Record<string, unknown> | null | undefined;
371
- description?: string | null | undefined;
372
- extension?: string[] | null | undefined;
373
- }[] | null | undefined;
370
+ name?: string | undefined;
371
+ metadata?: Record<string, unknown> | undefined;
372
+ description?: string | undefined;
373
+ extension?: string[] | undefined;
374
+ }[] | undefined;
374
375
  }>;
375
376
  streamMessage(message: MessageSendParams | string, params?: Partial<Omit<MethodParams, "service" | "contextManager">>): AsyncGenerator<import("../../types/index.js").UpdateEvent, void, any>;
376
377
  resubscribe(input: TaskIdParams, params?: Partial<Omit<MethodParams, "service" | "contextManager">>): AsyncGenerator<import("../../types/index.js").UpdateEvent, void, any>;
@@ -2,8 +2,10 @@
2
2
  * Copyright 2025 The Artinet Project
3
3
  * SPDX-License-Identifier: Apache-2.0
4
4
  */
5
+ import { MessageSendParamsSchema, TaskQueryParamsSchema, TaskIdParamsSchema, } from "../../types/index.js";
5
6
  import { coreExecute } from "../core/execution/execute.js";
6
7
  import { createMessageSendParams } from "./helpers/message-builder.js";
8
+ import { validateSchema } from "../../utils/common/schema-validation.js";
7
9
  export class A2AService {
8
10
  agentCard;
9
11
  engine;
@@ -13,7 +15,8 @@ export class A2AService {
13
15
  contexts;
14
16
  methods;
15
17
  eventOverrides;
16
- constructor(agentCard, engine, contexts, connections, cancellations, tasks, methods, eventOverrides) {
18
+ enforceParamValidation = false;
19
+ constructor(agentCard, engine, contexts, connections, cancellations, tasks, methods, eventOverrides, enforceParamValidation = false) {
17
20
  this.engine = engine;
18
21
  this.agentCard = agentCard;
19
22
  this.contexts = contexts;
@@ -22,6 +25,7 @@ export class A2AService {
22
25
  this.tasks = tasks;
23
26
  this.methods = methods;
24
27
  this.eventOverrides = eventOverrides;
28
+ this.enforceParamValidation = enforceParamValidation;
25
29
  }
26
30
  async execute(engine, context) {
27
31
  await coreExecute(engine ?? this.engine, context);
@@ -55,16 +59,22 @@ export class A2AService {
55
59
  await this.tasks.setState(id, data);
56
60
  }
57
61
  async getTask(input) {
58
- return await this.methods.getTask(input, { service: this });
62
+ return await this.methods.getTask(this.enforceParamValidation
63
+ ? await validateSchema(TaskQueryParamsSchema, input)
64
+ : input, { service: this });
59
65
  }
60
66
  async cancelTask(input) {
61
- return await this.methods.cancelTask(input, {
67
+ return await this.methods.cancelTask(this.enforceParamValidation
68
+ ? await validateSchema(TaskIdParamsSchema, input)
69
+ : input, {
62
70
  service: this,
63
71
  contextManager: this.contexts,
64
72
  });
65
73
  }
66
74
  async sendMessage(message, params) {
67
- return await this.methods.sendMessage(createMessageSendParams(message), {
75
+ return await this.methods.sendMessage(this.enforceParamValidation
76
+ ? await validateSchema(MessageSendParamsSchema, message)
77
+ : createMessageSendParams(message), {
68
78
  ...params, //we may include additional params in the future that may not need to be handled by the service
69
79
  service: this,
70
80
  engine: params?.engine ?? this.engine,
@@ -73,7 +83,9 @@ export class A2AService {
73
83
  });
74
84
  }
75
85
  async *streamMessage(message, params) {
76
- yield* this.methods.streamMessage(createMessageSendParams(message), {
86
+ yield* this.methods.streamMessage(this.enforceParamValidation
87
+ ? await validateSchema(MessageSendParamsSchema, message)
88
+ : createMessageSendParams(message), {
77
89
  ...params,
78
90
  service: this,
79
91
  engine: params?.engine ?? this.engine,
@@ -82,7 +94,9 @@ export class A2AService {
82
94
  });
83
95
  }
84
96
  async *resubscribe(input, params) {
85
- yield* this.methods.resubscribe(input, {
97
+ yield* this.methods.resubscribe(this.enforceParamValidation
98
+ ? await validateSchema(TaskIdParamsSchema, input)
99
+ : input, {
86
100
  ...params,
87
101
  service: this,
88
102
  engine: params?.engine ?? this.engine,
@@ -61,7 +61,6 @@ export class BaseMCPService extends McpServer {
61
61
  this.registerResource("agent-card", uri, {
62
62
  title: "Agent Card",
63
63
  description: AgentCardSchema.description,
64
- outputSchema: AgentCardSchema.shape,
65
64
  mimeType: "application/json",
66
65
  }, async (uri) => {
67
66
  return {
@@ -3,8 +3,8 @@
3
3
  * SPDX-License-Identifier: Apache-2.0
4
4
  */
5
5
  import { JSONRPCErrorSchema, } from "../../types/index.js";
6
- import { SystemError, PARSE_ERROR } from "../../utils/index.js";
7
- import { logError } from "../../utils/logging/index.js";
6
+ import { SystemError, PARSE_ERROR } from "../../utils/common/errors.js";
7
+ import { logError } from "../../utils/logging/log.js";
8
8
  /**
9
9
  * Parses a JSON-RPC response string and validates its structure.
10
10
  * If the response contains an error, it is thrown as an A2AError.
@@ -7,9 +7,9 @@
7
7
  * Handles the common pattern of sending JSON-RPC requests and processing responses.
8
8
  */
9
9
  import { v4 as uuidv4 } from "uuid";
10
- import { SystemError, INTERNAL_ERROR, PARSE_ERROR } from "../../utils/index.js";
10
+ import { SystemError, INTERNAL_ERROR, PARSE_ERROR, } from "../../utils/common/errors.js";
11
11
  import { parseResponse } from "./parser.js";
12
- import { logError, logWarn } from "../../utils/logging/index.js";
12
+ import { logError, logWarn } from "../../utils/logging/log.js";
13
13
  /**
14
14
  * Creates a JSON-RPC request body with the specified method and parameters.
15
15
  *, ErrorCodeParseError