@ap3x/a2a 1.0.0 → 2.1.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 (50) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +27 -0
  3. package/dist/backend.d.ts +89 -0
  4. package/dist/backend.d.ts.map +1 -0
  5. package/dist/bindings/grpc.d.ts +121 -0
  6. package/dist/bindings/grpc.d.ts.map +1 -0
  7. package/dist/bindings/jsonrpc.d.ts +135 -0
  8. package/dist/bindings/jsonrpc.d.ts.map +1 -0
  9. package/dist/bindings/rest.d.ts +75 -0
  10. package/dist/bindings/rest.d.ts.map +1 -0
  11. package/dist/chunk-PYM7LV6R.js +1590 -0
  12. package/dist/client.d.ts +116 -0
  13. package/dist/client.d.ts.map +1 -0
  14. package/dist/executor.d.ts +91 -0
  15. package/dist/executor.d.ts.map +1 -0
  16. package/dist/grpc-5DAU6EYQ.js +591 -0
  17. package/dist/index.d.ts +9 -0
  18. package/dist/index.d.ts.map +1 -0
  19. package/dist/index.js +454 -0
  20. package/dist/model.d.ts +480 -0
  21. package/dist/model.d.ts.map +1 -0
  22. package/dist/server.d.ts +60 -0
  23. package/dist/server.d.ts.map +1 -0
  24. package/dist/task-store.d.ts +61 -0
  25. package/dist/task-store.d.ts.map +1 -0
  26. package/package.json +26 -15
  27. package/proto/a2a.proto +813 -0
  28. package/proto/google/api/annotations.proto +6 -0
  29. package/proto/google/api/client.proto +4 -0
  30. package/proto/google/api/field_behavior.proto +4 -0
  31. package/src/__tests__/a2a-auth-expired.test.ts +0 -84
  32. package/src/__tests__/a2a.test.ts +0 -87
  33. package/src/__tests__/handler-sendsubscribe-error.test.ts +0 -32
  34. package/src/__tests__/sendsubscribe-rejected-promise.test.ts +0 -89
  35. package/src/__tests__/server-apikey-warning.test.ts +0 -71
  36. package/src/__tests__/server-body-limit.test.ts +0 -54
  37. package/src/__tests__/server-security-headers.test.ts +0 -112
  38. package/src/__tests__/server-timing-safe-auth.test.ts +0 -45
  39. package/src/__tests__/sse-handler-error-propagation.test.ts +0 -69
  40. package/src/card/generator.ts +0 -18
  41. package/src/client/index.ts +0 -172
  42. package/src/errors.ts +0 -21
  43. package/src/index.ts +0 -15
  44. package/src/server/handler.ts +0 -90
  45. package/src/server/index.ts +0 -208
  46. package/src/server/sse.ts +0 -49
  47. package/src/swarm/a2a-agent.ts +0 -34
  48. package/src/types.ts +0 -50
  49. package/tsconfig.json +0 -20
  50. package/vitest.config.ts +0 -4
@@ -0,0 +1,480 @@
1
+ /**
2
+ * Canonical A2A v1.0.0 data model.
3
+ *
4
+ * One TypeBox schema source drives both directions of the wire: servers
5
+ * validate inbound payloads and clients validate responses against these same
6
+ * schemas. All transport bindings (JSON-RPC, REST, gRPC) are mappings of this
7
+ * model — nothing binding-specific lives here.
8
+ */
9
+ import { type Static } from "@sinclair/typebox";
10
+ /** The A2A protocol version this model implements. */
11
+ export declare const A2A_PROTOCOL_VERSION = "1.0.0";
12
+ /**
13
+ * The protocol version advertised on the Agent Card. The deployed reference
14
+ * SDK ecosystem is 0.3.x (slash wire dialect) — the card states what we
15
+ * actually interoperate with, and the SDK client accepts any string here.
16
+ */
17
+ export declare const A2A_CARD_PROTOCOL_VERSION = "0.3.0";
18
+ /** Every task lifecycle state defined by the A2A spec. */
19
+ export declare const TASK_STATES: readonly ["submitted", "working", "input_required", "auth_required", "completed", "failed", "canceled", "rejected"];
20
+ export type TaskState = (typeof TASK_STATES)[number];
21
+ /** States a task can never leave once entered. */
22
+ export declare const TERMINAL_TASK_STATES: ReadonlySet<TaskState>;
23
+ /** Whether `state` is terminal (no further transitions are legal). */
24
+ export declare function isTerminal(state: TaskState): boolean;
25
+ export declare const TaskStateSchema: import("@sinclair/typebox").TUnion<import("@sinclair/typebox").TLiteral<"submitted" | "working" | "input_required" | "auth_required" | "completed" | "failed" | "canceled" | "rejected">[]>;
26
+ /** Canonicalize one task-state spelling; non-aliased values pass through. */
27
+ export declare function normalizeTaskState(state: unknown): unknown;
28
+ /**
29
+ * The wire-parse boundary for task states: recursively canonicalize every
30
+ * `state` field in a value received from a remote peer (Task.status.state,
31
+ * status-update events, list filters) BEFORE schema validation, so both the
32
+ * SDK's hyphenated spellings and our snake_case validate. Opaque payload
33
+ * subtrees (`metadata`, `data`) are carried through untouched.
34
+ */
35
+ export declare function normalizeWireTaskStates(value: unknown): unknown;
36
+ /** Plain text content. */
37
+ export declare const TextPartSchema: import("@sinclair/typebox").TObject<{
38
+ mediaType: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
39
+ metadata: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TUnknown>>;
40
+ kind: import("@sinclair/typebox").TLiteral<"text">;
41
+ text: import("@sinclair/typebox").TString;
42
+ }>;
43
+ /** Structured JSON content. */
44
+ export declare const DataPartSchema: import("@sinclair/typebox").TObject<{
45
+ mediaType: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
46
+ metadata: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TUnknown>>;
47
+ kind: import("@sinclair/typebox").TLiteral<"data">;
48
+ data: import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TUnknown>;
49
+ }>;
50
+ /** Content referenced by URL. */
51
+ export declare const UrlPartSchema: import("@sinclair/typebox").TObject<{
52
+ mediaType: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
53
+ metadata: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TUnknown>>;
54
+ kind: import("@sinclair/typebox").TLiteral<"url">;
55
+ url: import("@sinclair/typebox").TString;
56
+ }>;
57
+ /** Inline binary content, base64-encoded. */
58
+ export declare const RawPartSchema: import("@sinclair/typebox").TObject<{
59
+ mediaType: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
60
+ metadata: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TUnknown>>;
61
+ kind: import("@sinclair/typebox").TLiteral<"raw">;
62
+ data: import("@sinclair/typebox").TString;
63
+ }>;
64
+ /** Discriminated (on `kind`) union of all part shapes. */
65
+ export declare const PartSchema: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
66
+ mediaType: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
67
+ metadata: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TUnknown>>;
68
+ kind: import("@sinclair/typebox").TLiteral<"text">;
69
+ text: import("@sinclair/typebox").TString;
70
+ }>, import("@sinclair/typebox").TObject<{
71
+ mediaType: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
72
+ metadata: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TUnknown>>;
73
+ kind: import("@sinclair/typebox").TLiteral<"data">;
74
+ data: import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TUnknown>;
75
+ }>, import("@sinclair/typebox").TObject<{
76
+ mediaType: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
77
+ metadata: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TUnknown>>;
78
+ kind: import("@sinclair/typebox").TLiteral<"url">;
79
+ url: import("@sinclair/typebox").TString;
80
+ }>, import("@sinclair/typebox").TObject<{
81
+ mediaType: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
82
+ metadata: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TUnknown>>;
83
+ kind: import("@sinclair/typebox").TLiteral<"raw">;
84
+ data: import("@sinclair/typebox").TString;
85
+ }>]>;
86
+ export type TextPart = Static<typeof TextPartSchema>;
87
+ export type DataPart = Static<typeof DataPartSchema>;
88
+ export type UrlPart = Static<typeof UrlPartSchema>;
89
+ export type RawPart = Static<typeof RawPartSchema>;
90
+ export type Part = Static<typeof PartSchema>;
91
+ export declare const MessageSchema: import("@sinclair/typebox").TObject<{
92
+ messageId: import("@sinclair/typebox").TString;
93
+ contextId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
94
+ taskId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
95
+ role: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"user">, import("@sinclair/typebox").TLiteral<"agent">]>;
96
+ parts: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
97
+ mediaType: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
98
+ metadata: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TUnknown>>;
99
+ kind: import("@sinclair/typebox").TLiteral<"text">;
100
+ text: import("@sinclair/typebox").TString;
101
+ }>, import("@sinclair/typebox").TObject<{
102
+ mediaType: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
103
+ metadata: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TUnknown>>;
104
+ kind: import("@sinclair/typebox").TLiteral<"data">;
105
+ data: import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TUnknown>;
106
+ }>, import("@sinclair/typebox").TObject<{
107
+ mediaType: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
108
+ metadata: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TUnknown>>;
109
+ kind: import("@sinclair/typebox").TLiteral<"url">;
110
+ url: import("@sinclair/typebox").TString;
111
+ }>, import("@sinclair/typebox").TObject<{
112
+ mediaType: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
113
+ metadata: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TUnknown>>;
114
+ kind: import("@sinclair/typebox").TLiteral<"raw">;
115
+ data: import("@sinclair/typebox").TString;
116
+ }>]>>;
117
+ metadata: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TUnknown>>;
118
+ }>;
119
+ export type Message = Static<typeof MessageSchema>;
120
+ export declare const TaskStatusSchema: import("@sinclair/typebox").TObject<{
121
+ state: import("@sinclair/typebox").TUnion<import("@sinclair/typebox").TLiteral<"submitted" | "working" | "input_required" | "auth_required" | "completed" | "failed" | "canceled" | "rejected">[]>;
122
+ /** Agent message accompanying the state (final text, error, or a streamed chunk). */
123
+ message: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
124
+ messageId: import("@sinclair/typebox").TString;
125
+ contextId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
126
+ taskId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
127
+ role: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"user">, import("@sinclair/typebox").TLiteral<"agent">]>;
128
+ parts: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
129
+ mediaType: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
130
+ metadata: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TUnknown>>;
131
+ kind: import("@sinclair/typebox").TLiteral<"text">;
132
+ text: import("@sinclair/typebox").TString;
133
+ }>, import("@sinclair/typebox").TObject<{
134
+ mediaType: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
135
+ metadata: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TUnknown>>;
136
+ kind: import("@sinclair/typebox").TLiteral<"data">;
137
+ data: import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TUnknown>;
138
+ }>, import("@sinclair/typebox").TObject<{
139
+ mediaType: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
140
+ metadata: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TUnknown>>;
141
+ kind: import("@sinclair/typebox").TLiteral<"url">;
142
+ url: import("@sinclair/typebox").TString;
143
+ }>, import("@sinclair/typebox").TObject<{
144
+ mediaType: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
145
+ metadata: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TUnknown>>;
146
+ kind: import("@sinclair/typebox").TLiteral<"raw">;
147
+ data: import("@sinclair/typebox").TString;
148
+ }>]>>;
149
+ metadata: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TUnknown>>;
150
+ }>>;
151
+ /** ISO-8601 timestamp of when the state was entered. */
152
+ timestamp: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
153
+ }>;
154
+ export type TaskStatus = Static<typeof TaskStatusSchema>;
155
+ export declare const ArtifactSchema: import("@sinclair/typebox").TObject<{
156
+ artifactId: import("@sinclair/typebox").TString;
157
+ name: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
158
+ description: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
159
+ parts: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
160
+ mediaType: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
161
+ metadata: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TUnknown>>;
162
+ kind: import("@sinclair/typebox").TLiteral<"text">;
163
+ text: import("@sinclair/typebox").TString;
164
+ }>, import("@sinclair/typebox").TObject<{
165
+ mediaType: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
166
+ metadata: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TUnknown>>;
167
+ kind: import("@sinclair/typebox").TLiteral<"data">;
168
+ data: import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TUnknown>;
169
+ }>, import("@sinclair/typebox").TObject<{
170
+ mediaType: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
171
+ metadata: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TUnknown>>;
172
+ kind: import("@sinclair/typebox").TLiteral<"url">;
173
+ url: import("@sinclair/typebox").TString;
174
+ }>, import("@sinclair/typebox").TObject<{
175
+ mediaType: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
176
+ metadata: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TUnknown>>;
177
+ kind: import("@sinclair/typebox").TLiteral<"raw">;
178
+ data: import("@sinclair/typebox").TString;
179
+ }>]>>;
180
+ metadata: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TUnknown>>;
181
+ }>;
182
+ export type Artifact = Static<typeof ArtifactSchema>;
183
+ export declare const TaskSchema: import("@sinclair/typebox").TObject<{
184
+ id: import("@sinclair/typebox").TString;
185
+ contextId: import("@sinclair/typebox").TString;
186
+ status: import("@sinclair/typebox").TObject<{
187
+ state: import("@sinclair/typebox").TUnion<import("@sinclair/typebox").TLiteral<"submitted" | "working" | "input_required" | "auth_required" | "completed" | "failed" | "canceled" | "rejected">[]>;
188
+ /** Agent message accompanying the state (final text, error, or a streamed chunk). */
189
+ message: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
190
+ messageId: import("@sinclair/typebox").TString;
191
+ contextId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
192
+ taskId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
193
+ role: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"user">, import("@sinclair/typebox").TLiteral<"agent">]>;
194
+ parts: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
195
+ mediaType: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
196
+ metadata: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TUnknown>>;
197
+ kind: import("@sinclair/typebox").TLiteral<"text">;
198
+ text: import("@sinclair/typebox").TString;
199
+ }>, import("@sinclair/typebox").TObject<{
200
+ mediaType: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
201
+ metadata: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TUnknown>>;
202
+ kind: import("@sinclair/typebox").TLiteral<"data">;
203
+ data: import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TUnknown>;
204
+ }>, import("@sinclair/typebox").TObject<{
205
+ mediaType: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
206
+ metadata: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TUnknown>>;
207
+ kind: import("@sinclair/typebox").TLiteral<"url">;
208
+ url: import("@sinclair/typebox").TString;
209
+ }>, import("@sinclair/typebox").TObject<{
210
+ mediaType: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
211
+ metadata: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TUnknown>>;
212
+ kind: import("@sinclair/typebox").TLiteral<"raw">;
213
+ data: import("@sinclair/typebox").TString;
214
+ }>]>>;
215
+ metadata: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TUnknown>>;
216
+ }>>;
217
+ /** ISO-8601 timestamp of when the state was entered. */
218
+ timestamp: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
219
+ }>;
220
+ artifacts: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
221
+ artifactId: import("@sinclair/typebox").TString;
222
+ name: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
223
+ description: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
224
+ parts: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
225
+ mediaType: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
226
+ metadata: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TUnknown>>;
227
+ kind: import("@sinclair/typebox").TLiteral<"text">;
228
+ text: import("@sinclair/typebox").TString;
229
+ }>, import("@sinclair/typebox").TObject<{
230
+ mediaType: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
231
+ metadata: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TUnknown>>;
232
+ kind: import("@sinclair/typebox").TLiteral<"data">;
233
+ data: import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TUnknown>;
234
+ }>, import("@sinclair/typebox").TObject<{
235
+ mediaType: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
236
+ metadata: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TUnknown>>;
237
+ kind: import("@sinclair/typebox").TLiteral<"url">;
238
+ url: import("@sinclair/typebox").TString;
239
+ }>, import("@sinclair/typebox").TObject<{
240
+ mediaType: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
241
+ metadata: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TUnknown>>;
242
+ kind: import("@sinclair/typebox").TLiteral<"raw">;
243
+ data: import("@sinclair/typebox").TString;
244
+ }>]>>;
245
+ metadata: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TUnknown>>;
246
+ }>>>;
247
+ history: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
248
+ messageId: import("@sinclair/typebox").TString;
249
+ contextId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
250
+ taskId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
251
+ role: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"user">, import("@sinclair/typebox").TLiteral<"agent">]>;
252
+ parts: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
253
+ mediaType: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
254
+ metadata: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TUnknown>>;
255
+ kind: import("@sinclair/typebox").TLiteral<"text">;
256
+ text: import("@sinclair/typebox").TString;
257
+ }>, import("@sinclair/typebox").TObject<{
258
+ mediaType: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
259
+ metadata: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TUnknown>>;
260
+ kind: import("@sinclair/typebox").TLiteral<"data">;
261
+ data: import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TUnknown>;
262
+ }>, import("@sinclair/typebox").TObject<{
263
+ mediaType: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
264
+ metadata: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TUnknown>>;
265
+ kind: import("@sinclair/typebox").TLiteral<"url">;
266
+ url: import("@sinclair/typebox").TString;
267
+ }>, import("@sinclair/typebox").TObject<{
268
+ mediaType: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
269
+ metadata: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TUnknown>>;
270
+ kind: import("@sinclair/typebox").TLiteral<"raw">;
271
+ data: import("@sinclair/typebox").TString;
272
+ }>]>>;
273
+ metadata: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TUnknown>>;
274
+ }>>>;
275
+ }>;
276
+ export type Task = Static<typeof TaskSchema>;
277
+ export declare const TaskStatusUpdateEventSchema: import("@sinclair/typebox").TObject<{
278
+ kind: import("@sinclair/typebox").TLiteral<"status-update">;
279
+ taskId: import("@sinclair/typebox").TString;
280
+ contextId: import("@sinclair/typebox").TString;
281
+ status: import("@sinclair/typebox").TObject<{
282
+ state: import("@sinclair/typebox").TUnion<import("@sinclair/typebox").TLiteral<"submitted" | "working" | "input_required" | "auth_required" | "completed" | "failed" | "canceled" | "rejected">[]>;
283
+ /** Agent message accompanying the state (final text, error, or a streamed chunk). */
284
+ message: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
285
+ messageId: import("@sinclair/typebox").TString;
286
+ contextId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
287
+ taskId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
288
+ role: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"user">, import("@sinclair/typebox").TLiteral<"agent">]>;
289
+ parts: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
290
+ mediaType: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
291
+ metadata: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TUnknown>>;
292
+ kind: import("@sinclair/typebox").TLiteral<"text">;
293
+ text: import("@sinclair/typebox").TString;
294
+ }>, import("@sinclair/typebox").TObject<{
295
+ mediaType: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
296
+ metadata: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TUnknown>>;
297
+ kind: import("@sinclair/typebox").TLiteral<"data">;
298
+ data: import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TUnknown>;
299
+ }>, import("@sinclair/typebox").TObject<{
300
+ mediaType: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
301
+ metadata: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TUnknown>>;
302
+ kind: import("@sinclair/typebox").TLiteral<"url">;
303
+ url: import("@sinclair/typebox").TString;
304
+ }>, import("@sinclair/typebox").TObject<{
305
+ mediaType: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
306
+ metadata: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TUnknown>>;
307
+ kind: import("@sinclair/typebox").TLiteral<"raw">;
308
+ data: import("@sinclair/typebox").TString;
309
+ }>]>>;
310
+ metadata: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TUnknown>>;
311
+ }>>;
312
+ /** ISO-8601 timestamp of when the state was entered. */
313
+ timestamp: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
314
+ }>;
315
+ /** True exactly when `status.state` is terminal — the stream ends here. */
316
+ final: import("@sinclair/typebox").TBoolean;
317
+ metadata: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TUnknown>>;
318
+ }>;
319
+ export type TaskStatusUpdateEvent = Static<typeof TaskStatusUpdateEventSchema>;
320
+ export declare const TaskArtifactUpdateEventSchema: import("@sinclair/typebox").TObject<{
321
+ kind: import("@sinclair/typebox").TLiteral<"artifact-update">;
322
+ taskId: import("@sinclair/typebox").TString;
323
+ contextId: import("@sinclair/typebox").TString;
324
+ artifact: import("@sinclair/typebox").TObject<{
325
+ artifactId: import("@sinclair/typebox").TString;
326
+ name: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
327
+ description: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
328
+ parts: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
329
+ mediaType: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
330
+ metadata: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TUnknown>>;
331
+ kind: import("@sinclair/typebox").TLiteral<"text">;
332
+ text: import("@sinclair/typebox").TString;
333
+ }>, import("@sinclair/typebox").TObject<{
334
+ mediaType: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
335
+ metadata: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TUnknown>>;
336
+ kind: import("@sinclair/typebox").TLiteral<"data">;
337
+ data: import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TUnknown>;
338
+ }>, import("@sinclair/typebox").TObject<{
339
+ mediaType: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
340
+ metadata: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TUnknown>>;
341
+ kind: import("@sinclair/typebox").TLiteral<"url">;
342
+ url: import("@sinclair/typebox").TString;
343
+ }>, import("@sinclair/typebox").TObject<{
344
+ mediaType: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
345
+ metadata: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TUnknown>>;
346
+ kind: import("@sinclair/typebox").TLiteral<"raw">;
347
+ data: import("@sinclair/typebox").TString;
348
+ }>]>>;
349
+ metadata: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TUnknown>>;
350
+ }>;
351
+ append: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
352
+ lastChunk: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
353
+ metadata: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TUnknown>>;
354
+ }>;
355
+ export type TaskArtifactUpdateEvent = Static<typeof TaskArtifactUpdateEventSchema>;
356
+ export declare const AgentSkillSchema: import("@sinclair/typebox").TObject<{
357
+ name: import("@sinclair/typebox").TString;
358
+ description: import("@sinclair/typebox").TString;
359
+ tags: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
360
+ examples: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
361
+ }>;
362
+ export type AgentSkill = Static<typeof AgentSkillSchema>;
363
+ /** A transport binding the agent serves, per spec transport identifiers. */
364
+ export declare const AgentInterfaceSchema: import("@sinclair/typebox").TObject<{
365
+ transport: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"JSONRPC">, import("@sinclair/typebox").TLiteral<"HTTP+JSON">, import("@sinclair/typebox").TLiteral<"GRPC">]>;
366
+ url: import("@sinclair/typebox").TString;
367
+ }>;
368
+ export type AgentInterface = Static<typeof AgentInterfaceSchema>;
369
+ /** v1 security subset: bearer/API-key over HTTP. OAuth2/mTLS/OIDC deferred. */
370
+ export declare const BearerSecuritySchemeSchema: import("@sinclair/typebox").TObject<{
371
+ type: import("@sinclair/typebox").TLiteral<"http">;
372
+ scheme: import("@sinclair/typebox").TLiteral<"bearer">;
373
+ description: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
374
+ }>;
375
+ export type BearerSecurityScheme = Static<typeof BearerSecuritySchemeSchema>;
376
+ export declare const AgentCapabilitiesSchema: import("@sinclair/typebox").TObject<{
377
+ streaming: import("@sinclair/typebox").TBoolean;
378
+ pushNotifications: import("@sinclair/typebox").TBoolean;
379
+ }>;
380
+ export type AgentCapabilities = Static<typeof AgentCapabilitiesSchema>;
381
+ export declare const AgentProviderSchema: import("@sinclair/typebox").TObject<{
382
+ name: import("@sinclair/typebox").TString;
383
+ url: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
384
+ }>;
385
+ export type AgentProvider = Static<typeof AgentProviderSchema>;
386
+ export declare const AgentCardSchema: import("@sinclair/typebox").TObject<{
387
+ /** AP3X-assigned card id. Optional: reference-SDK cards carry no id. */
388
+ id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
389
+ name: import("@sinclair/typebox").TString;
390
+ description: import("@sinclair/typebox").TString;
391
+ capabilities: import("@sinclair/typebox").TObject<{
392
+ streaming: import("@sinclair/typebox").TBoolean;
393
+ pushNotifications: import("@sinclair/typebox").TBoolean;
394
+ }>;
395
+ skills: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
396
+ name: import("@sinclair/typebox").TString;
397
+ description: import("@sinclair/typebox").TString;
398
+ tags: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
399
+ examples: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
400
+ }>>;
401
+ interfaces: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
402
+ transport: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"JSONRPC">, import("@sinclair/typebox").TLiteral<"HTTP+JSON">, import("@sinclair/typebox").TLiteral<"GRPC">]>;
403
+ url: import("@sinclair/typebox").TString;
404
+ }>>;
405
+ securitySchemes: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TObject<{
406
+ type: import("@sinclair/typebox").TLiteral<"http">;
407
+ scheme: import("@sinclair/typebox").TLiteral<"bearer">;
408
+ description: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
409
+ }>>>;
410
+ provider: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
411
+ name: import("@sinclair/typebox").TString;
412
+ url: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
413
+ }>>;
414
+ /** The preferred endpoint URL (mirrors the first/preferred interface). */
415
+ url: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
416
+ /** Transport served at `url` (e.g. "JSONRPC"). */
417
+ preferredTransport: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
418
+ /** A2A protocol version, e.g. {@link A2A_CARD_PROTOCOL_VERSION}. */
419
+ protocolVersion: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
420
+ /** The agent's own version string. */
421
+ version: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
422
+ defaultInputModes: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
423
+ defaultOutputModes: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
424
+ }>;
425
+ export type AgentCard = Static<typeof AgentCardSchema>;
426
+ /**
427
+ * LIBERAL accept-side card schema — what a REMOTE peer's card must minimally
428
+ * look like to be usable. The reference SDK's card has required fields and
429
+ * extras we don't model (signatures, security, extensions, …); rejecting on
430
+ * those would break interop, so everything here is optional except `name`,
431
+ * and unknown fields pass through. `A2aClient.connect` normalizes a card
432
+ * matching this schema into a full {@link AgentCard}.
433
+ */
434
+ export declare const RemoteAgentInterfaceSchema: import("@sinclair/typebox").TObject<{
435
+ transport: import("@sinclair/typebox").TString;
436
+ url: import("@sinclair/typebox").TString;
437
+ }>;
438
+ export declare const RemoteAgentCardSchema: import("@sinclair/typebox").TObject<{
439
+ name: import("@sinclair/typebox").TString;
440
+ description: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
441
+ id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
442
+ capabilities: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
443
+ streaming: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
444
+ pushNotifications: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
445
+ }>>;
446
+ skills: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TUnknown>>;
447
+ interfaces: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
448
+ transport: import("@sinclair/typebox").TString;
449
+ url: import("@sinclair/typebox").TString;
450
+ }>>>;
451
+ /** Reference-SDK name for extra transport/URL combinations. */
452
+ additionalInterfaces: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
453
+ transport: import("@sinclair/typebox").TString;
454
+ url: import("@sinclair/typebox").TString;
455
+ }>>>;
456
+ url: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
457
+ preferredTransport: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
458
+ securitySchemes: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnknown>;
459
+ provider: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnknown>;
460
+ }>;
461
+ export type RemoteAgentCard = Static<typeof RemoteAgentCardSchema>;
462
+ /**
463
+ * Spec-defined JSON-RPC 2.0 error codes: the standard range plus the
464
+ * A2A-specific `-32000`-block errors.
465
+ */
466
+ export declare const A2A_ERROR_CODES: {
467
+ readonly parseError: -32700;
468
+ readonly invalidRequest: -32600;
469
+ readonly methodNotFound: -32601;
470
+ readonly invalidParams: -32602;
471
+ readonly internalError: -32603;
472
+ readonly taskNotFound: -32001;
473
+ readonly taskNotCancelable: -32002;
474
+ readonly pushNotificationNotSupported: -32003;
475
+ readonly unsupportedOperation: -32004;
476
+ readonly contentTypeNotSupported: -32005;
477
+ readonly invalidAgentResponse: -32006;
478
+ };
479
+ export type A2aErrorCode = (typeof A2A_ERROR_CODES)[keyof typeof A2A_ERROR_CODES];
480
+ //# sourceMappingURL=model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../src/model.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,60 @@
1
+ import { type Server, type ServerResponse } from "node:http";
2
+ import { type AgentBackend } from "@ap3x/agent-core";
3
+ import { A2aExecutor } from "./executor";
4
+ import { type AgentCard, type AgentProvider, type AgentSkill } from "./model";
5
+ /** The spec-mandated, always-unauthenticated Agent Card location. */
6
+ export declare const AGENT_CARD_PATH = "/.well-known/agent-card.json";
7
+ /** A transport binding the server can mount. */
8
+ export type A2aBinding = "jsonrpc" | "rest" | "grpc";
9
+ export interface A2aServerOptions {
10
+ /** Identity half of the Agent Card; capabilities derive from the backend. */
11
+ card: {
12
+ name: string;
13
+ description: string;
14
+ skills?: AgentSkill[];
15
+ provider?: AgentProvider;
16
+ };
17
+ /** Port to bind; 0 (the default) picks an ephemeral port. */
18
+ port?: number;
19
+ /** Host to bind. Default `127.0.0.1`; non-loopback without auth logs a warning. */
20
+ host?: string;
21
+ /** When set, every non-card route requires `Authorization: Bearer <token>`. */
22
+ auth?: {
23
+ bearerToken: string;
24
+ };
25
+ /**
26
+ * Transport bindings to mount. Default `["jsonrpc"]` — identical to the
27
+ * pre-REST behavior. The card's `interfaces` list exactly what is mounted.
28
+ */
29
+ bindings?: A2aBinding[];
30
+ /**
31
+ * Port for the gRPC binding's OWN listener (only used when `bindings`
32
+ * includes `"grpc"`). 0 (the default) picks an ephemeral port.
33
+ */
34
+ grpcPort?: number;
35
+ /** Cap on concurrently running backend tasks. */
36
+ maxConcurrentTasks?: number;
37
+ /** Retain at most this many TERMINAL tasks (default: unbounded). */
38
+ maxRetainedTasks?: number;
39
+ /** Retain at most this many contextId transcripts, LRU-evicted (default: unbounded). */
40
+ maxRetainedContexts?: number;
41
+ /** Injected clock (epoch millis). Defaults to `Date.now` at this I/O edge. */
42
+ now?: () => number;
43
+ }
44
+ /** Constant-time string comparison via fixed-length digests (trust boundary). */
45
+ export declare function constantTimeEqual(a: string, b: string): boolean;
46
+ export declare class A2aServer {
47
+ readonly card: AgentCard;
48
+ /** Base URL of the bound server (ephemeral port resolved). */
49
+ readonly url: string;
50
+ readonly executor: A2aExecutor;
51
+ private readonly httpServer;
52
+ private readonly sseStreams;
53
+ private readonly closeGrpc?;
54
+ constructor(card: AgentCard, url: string, executor: A2aExecutor, httpServer: Server, sseStreams: Set<ServerResponse>, closeGrpc?: () => Promise<void>);
55
+ /** Stop listening and tear down any open SSE streams (+ the gRPC listener). */
56
+ close(): Promise<void>;
57
+ }
58
+ /** Serve `backend` as an A2A agent; resolves once the server is listening. */
59
+ export declare function serveA2a(backend: AgentBackend, options: A2aServerOptions): Promise<A2aServer>;
60
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAQA,OAAO,EAAwB,KAAK,MAAM,EAAE,KAAK,cAAc,EAAgB,MAAM,WAAW,CAAC;AACjG,OAAO,EAAE,KAAK,YAAY,EAAkB,MAAM,kBAAkB,CAAC;AAGrE,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAEL,KAAK,SAAS,EAEd,KAAK,aAAa,EAClB,KAAK,UAAU,EAChB,MAAM,SAAS,CAAC;AAEjB,qEAAqE;AACrE,eAAO,MAAM,eAAe,iCAAiC,CAAC;AAU9D,gDAAgD;AAChD,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;AAErD,MAAM,WAAW,gBAAgB;IAC/B,6EAA6E;IAC7E,IAAI,EAAE;QACJ,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,MAAM,CAAC,EAAE,UAAU,EAAE,CAAC;QACtB,QAAQ,CAAC,EAAE,aAAa,CAAC;KAC1B,CAAC;IACF,6DAA6D;IAC7D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,mFAAmF;IACnF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,+EAA+E;IAC/E,IAAI,CAAC,EAAE;QAAE,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/B;;;OAGG;IACH,QAAQ,CAAC,EAAE,UAAU,EAAE,CAAC;IACxB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iDAAiD;IACjD,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,oEAAoE;IACpE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,wFAAwF;IACxF,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,8EAA8E;IAC9E,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACpB;AAED,iFAAiF;AACjF,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAI/D;AAOD,qBAAa,SAAS;IACpB,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,8DAA8D;IAC9D,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC;IAC/B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAsB;IACjD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAsB;gBAG/C,IAAI,EAAE,SAAS,EACf,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,WAAW,EACrB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,GAAG,CAAC,cAAc,CAAC,EAC/B,SAAS,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC;IAUjC,+EAA+E;IACzE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAS7B;AAED,8EAA8E;AAC9E,wBAAsB,QAAQ,CAC5B,OAAO,EAAE,YAAY,EACrB,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,SAAS,CAAC,CA8KpB"}