veryfront 0.1.61 → 0.1.63

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 (74) hide show
  1. package/esm/cli/templates/manifest.js +37 -37
  2. package/esm/deno.d.ts +3 -0
  3. package/esm/deno.js +6 -3
  4. package/esm/src/agent/composition/composition.d.ts.map +1 -1
  5. package/esm/src/agent/composition/composition.js +13 -3
  6. package/esm/src/agent/factory.d.ts.map +1 -1
  7. package/esm/src/agent/factory.js +3 -3
  8. package/esm/src/agent/middleware/security/validator.d.ts +92 -0
  9. package/esm/src/agent/middleware/security/validator.d.ts.map +1 -0
  10. package/esm/src/agent/middleware/security/validator.js +187 -0
  11. package/esm/src/agent/runtime/index.d.ts +3 -2
  12. package/esm/src/agent/runtime/index.d.ts.map +1 -1
  13. package/esm/src/agent/runtime/index.js +16 -8
  14. package/esm/src/agent/types.d.ts +4 -0
  15. package/esm/src/agent/types.d.ts.map +1 -1
  16. package/esm/src/channels/invoke.d.ts +427 -0
  17. package/esm/src/channels/invoke.d.ts.map +1 -0
  18. package/esm/src/channels/invoke.js +401 -0
  19. package/esm/src/embedding/embedding.d.ts.map +1 -1
  20. package/esm/src/embedding/embedding.js +5 -1
  21. package/esm/src/embedding/rag-store.js +2 -0
  22. package/esm/src/embedding/vector-store.d.ts.map +1 -1
  23. package/esm/src/embedding/vector-store.js +2 -0
  24. package/esm/src/embedding/veryfront-cloud/rag-store.d.ts.map +1 -1
  25. package/esm/src/embedding/veryfront-cloud/rag-store.js +2 -0
  26. package/esm/src/integrations/schema.d.ts +2 -2
  27. package/esm/src/oauth/handlers/init-handler.d.ts +6 -2
  28. package/esm/src/oauth/handlers/init-handler.d.ts.map +1 -1
  29. package/esm/src/oauth/handlers/init-handler.js +8 -2
  30. package/esm/src/platform/compat/opaque-deps.d.ts.map +1 -1
  31. package/esm/src/platform/compat/opaque-deps.js +10 -1
  32. package/esm/src/prompt/factory.d.ts.map +1 -1
  33. package/esm/src/prompt/factory.js +9 -1
  34. package/esm/src/react/components/ai/markdown.d.ts.map +1 -1
  35. package/esm/src/react/components/ai/markdown.js +4 -4
  36. package/esm/src/server/handlers/dev/framework-candidates.generated.d.ts.map +1 -1
  37. package/esm/src/server/handlers/dev/framework-candidates.generated.js +5 -4
  38. package/esm/src/server/handlers/preview/markdown-html-generator.js +1 -1
  39. package/esm/src/server/handlers/request/api/api-handler-wrapper.d.ts.map +1 -1
  40. package/esm/src/server/handlers/request/api/api-handler-wrapper.js +1 -74
  41. package/esm/src/server/handlers/request/api/project-discovery.d.ts +9 -0
  42. package/esm/src/server/handlers/request/api/project-discovery.d.ts.map +1 -0
  43. package/esm/src/server/handlers/request/api/project-discovery.js +74 -0
  44. package/esm/src/server/handlers/request/channel-invoke.handler.d.ts +11 -0
  45. package/esm/src/server/handlers/request/channel-invoke.handler.d.ts.map +1 -0
  46. package/esm/src/server/handlers/request/channel-invoke.handler.js +72 -0
  47. package/esm/src/server/runtime-handler/index.d.ts.map +1 -1
  48. package/esm/src/server/runtime-handler/index.js +2 -0
  49. package/esm/src/transforms/md/compiler/md-compiler.d.ts.map +1 -1
  50. package/esm/src/transforms/md/compiler/md-compiler.js +25 -1
  51. package/package.json +3 -1
  52. package/src/cli/templates/manifest.js +37 -37
  53. package/src/deno.js +6 -3
  54. package/src/src/agent/composition/composition.ts +15 -3
  55. package/src/src/agent/factory.ts +19 -6
  56. package/src/src/agent/middleware/security/validator.ts +288 -0
  57. package/src/src/agent/runtime/index.ts +26 -3
  58. package/src/src/agent/types.ts +4 -0
  59. package/src/src/channels/invoke.ts +521 -0
  60. package/src/src/embedding/embedding.ts +5 -1
  61. package/src/src/embedding/rag-store.ts +1 -0
  62. package/src/src/embedding/vector-store.ts +1 -0
  63. package/src/src/embedding/veryfront-cloud/rag-store.ts +1 -0
  64. package/src/src/oauth/handlers/init-handler.ts +20 -5
  65. package/src/src/platform/compat/opaque-deps.ts +19 -4
  66. package/src/src/prompt/factory.ts +10 -1
  67. package/src/src/react/components/ai/markdown.tsx +5 -4
  68. package/src/src/server/handlers/dev/framework-candidates.generated.ts +5 -4
  69. package/src/src/server/handlers/preview/markdown-html-generator.ts +1 -1
  70. package/src/src/server/handlers/request/api/api-handler-wrapper.ts +1 -85
  71. package/src/src/server/handlers/request/api/project-discovery.ts +86 -0
  72. package/src/src/server/handlers/request/channel-invoke.handler.ts +95 -0
  73. package/src/src/server/runtime-handler/index.ts +2 -0
  74. package/src/src/transforms/md/compiler/md-compiler.ts +27 -1
@@ -0,0 +1,427 @@
1
+ import type { Agent, AgentMessage as Message, AgentResponse } from "../agent/index.js";
2
+ import type { HandlerContext } from "../types/index.js";
3
+ import { z } from "zod";
4
+ export declare const ChannelInvokeRequestSchema: z.ZodObject<{
5
+ dispatchId: z.ZodString;
6
+ conversationId: z.ZodString;
7
+ projectId: z.ZodString;
8
+ agentConfigId: z.ZodString;
9
+ platform: z.ZodLiteral<"slack">;
10
+ inboundMessage: z.ZodObject<{
11
+ text: z.ZodString;
12
+ userId: z.ZodString;
13
+ userName: z.ZodString;
14
+ isDirectMessage: z.ZodBoolean;
15
+ attachments: z.ZodOptional<z.ZodArray<z.ZodObject<{
16
+ id: z.ZodString;
17
+ kind: z.ZodEnum<["image", "file"]>;
18
+ filename: z.ZodOptional<z.ZodString>;
19
+ mediaType: z.ZodOptional<z.ZodString>;
20
+ privateUrl: z.ZodOptional<z.ZodString>;
21
+ }, "strip", z.ZodTypeAny, {
22
+ kind: "file" | "image";
23
+ id: string;
24
+ filename?: string | undefined;
25
+ mediaType?: string | undefined;
26
+ privateUrl?: string | undefined;
27
+ }, {
28
+ kind: "file" | "image";
29
+ id: string;
30
+ filename?: string | undefined;
31
+ mediaType?: string | undefined;
32
+ privateUrl?: string | undefined;
33
+ }>, "many">>;
34
+ }, "strip", z.ZodTypeAny, {
35
+ text: string;
36
+ userId: string;
37
+ userName: string;
38
+ isDirectMessage: boolean;
39
+ attachments?: {
40
+ kind: "file" | "image";
41
+ id: string;
42
+ filename?: string | undefined;
43
+ mediaType?: string | undefined;
44
+ privateUrl?: string | undefined;
45
+ }[] | undefined;
46
+ }, {
47
+ text: string;
48
+ userId: string;
49
+ userName: string;
50
+ isDirectMessage: boolean;
51
+ attachments?: {
52
+ kind: "file" | "image";
53
+ id: string;
54
+ filename?: string | undefined;
55
+ mediaType?: string | undefined;
56
+ privateUrl?: string | undefined;
57
+ }[] | undefined;
58
+ }>;
59
+ conversationHistory: z.ZodArray<z.ZodObject<{
60
+ id: z.ZodString;
61
+ role: z.ZodEnum<["user", "assistant", "system", "tool"]>;
62
+ parts: z.ZodArray<z.ZodObject<{
63
+ type: z.ZodString;
64
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
65
+ type: z.ZodString;
66
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
67
+ type: z.ZodString;
68
+ }, z.ZodTypeAny, "passthrough">>, "many">;
69
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
70
+ createdAt: z.ZodOptional<z.ZodString>;
71
+ }, "strip", z.ZodTypeAny, {
72
+ id: string;
73
+ role: "tool" | "user" | "assistant" | "system";
74
+ parts: z.objectOutputType<{
75
+ type: z.ZodString;
76
+ }, z.ZodTypeAny, "passthrough">[];
77
+ metadata?: Record<string, unknown> | undefined;
78
+ createdAt?: string | undefined;
79
+ }, {
80
+ id: string;
81
+ role: "tool" | "user" | "assistant" | "system";
82
+ parts: z.objectInputType<{
83
+ type: z.ZodString;
84
+ }, z.ZodTypeAny, "passthrough">[];
85
+ metadata?: Record<string, unknown> | undefined;
86
+ createdAt?: string | undefined;
87
+ }>, "many">;
88
+ generation: z.ZodOptional<z.ZodObject<{
89
+ maxResponseTokens: z.ZodOptional<z.ZodNumber>;
90
+ }, "strip", z.ZodTypeAny, {
91
+ maxResponseTokens?: number | undefined;
92
+ }, {
93
+ maxResponseTokens?: number | undefined;
94
+ }>>;
95
+ }, "strip", z.ZodTypeAny, {
96
+ platform: "slack";
97
+ projectId: string;
98
+ dispatchId: string;
99
+ conversationId: string;
100
+ agentConfigId: string;
101
+ inboundMessage: {
102
+ text: string;
103
+ userId: string;
104
+ userName: string;
105
+ isDirectMessage: boolean;
106
+ attachments?: {
107
+ kind: "file" | "image";
108
+ id: string;
109
+ filename?: string | undefined;
110
+ mediaType?: string | undefined;
111
+ privateUrl?: string | undefined;
112
+ }[] | undefined;
113
+ };
114
+ conversationHistory: {
115
+ id: string;
116
+ role: "tool" | "user" | "assistant" | "system";
117
+ parts: z.objectOutputType<{
118
+ type: z.ZodString;
119
+ }, z.ZodTypeAny, "passthrough">[];
120
+ metadata?: Record<string, unknown> | undefined;
121
+ createdAt?: string | undefined;
122
+ }[];
123
+ generation?: {
124
+ maxResponseTokens?: number | undefined;
125
+ } | undefined;
126
+ }, {
127
+ platform: "slack";
128
+ projectId: string;
129
+ dispatchId: string;
130
+ conversationId: string;
131
+ agentConfigId: string;
132
+ inboundMessage: {
133
+ text: string;
134
+ userId: string;
135
+ userName: string;
136
+ isDirectMessage: boolean;
137
+ attachments?: {
138
+ kind: "file" | "image";
139
+ id: string;
140
+ filename?: string | undefined;
141
+ mediaType?: string | undefined;
142
+ privateUrl?: string | undefined;
143
+ }[] | undefined;
144
+ };
145
+ conversationHistory: {
146
+ id: string;
147
+ role: "tool" | "user" | "assistant" | "system";
148
+ parts: z.objectInputType<{
149
+ type: z.ZodString;
150
+ }, z.ZodTypeAny, "passthrough">[];
151
+ metadata?: Record<string, unknown> | undefined;
152
+ createdAt?: string | undefined;
153
+ }[];
154
+ generation?: {
155
+ maxResponseTokens?: number | undefined;
156
+ } | undefined;
157
+ }>;
158
+ export declare const ChannelResponsePartSchema: z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
159
+ type: z.ZodLiteral<"text">;
160
+ text: z.ZodString;
161
+ }, "strip", z.ZodTypeAny, {
162
+ type: "text";
163
+ text: string;
164
+ }, {
165
+ type: "text";
166
+ text: string;
167
+ }>, z.ZodObject<{
168
+ type: z.ZodLiteral<"tool_call">;
169
+ id: z.ZodString;
170
+ name: z.ZodString;
171
+ input: z.ZodRecord<z.ZodString, z.ZodUnknown>;
172
+ state: z.ZodEnum<["streaming", "pending", "completed", "error"]>;
173
+ }, "strip", z.ZodTypeAny, {
174
+ type: "tool_call";
175
+ name: string;
176
+ input: Record<string, unknown>;
177
+ id: string;
178
+ state: "error" | "streaming" | "completed" | "pending";
179
+ }, {
180
+ type: "tool_call";
181
+ name: string;
182
+ input: Record<string, unknown>;
183
+ id: string;
184
+ state: "error" | "streaming" | "completed" | "pending";
185
+ }>, z.ZodObject<{
186
+ type: z.ZodLiteral<"tool_result">;
187
+ tool_call_id: z.ZodString;
188
+ output: z.ZodUnknown;
189
+ is_error: z.ZodOptional<z.ZodBoolean>;
190
+ }, "strip", z.ZodTypeAny, {
191
+ type: "tool_result";
192
+ tool_call_id: string;
193
+ output?: unknown;
194
+ is_error?: boolean | undefined;
195
+ }, {
196
+ type: "tool_result";
197
+ tool_call_id: string;
198
+ output?: unknown;
199
+ is_error?: boolean | undefined;
200
+ }>, z.ZodObject<{
201
+ type: z.ZodLiteral<"reasoning">;
202
+ text: z.ZodString;
203
+ }, "strip", z.ZodTypeAny, {
204
+ type: "reasoning";
205
+ text: string;
206
+ }, {
207
+ type: "reasoning";
208
+ text: string;
209
+ }>, z.ZodObject<{
210
+ type: z.ZodLiteral<"error">;
211
+ code: z.ZodString;
212
+ message: z.ZodString;
213
+ }, "strip", z.ZodTypeAny, {
214
+ type: "error";
215
+ message: string;
216
+ code: string;
217
+ }, {
218
+ type: "error";
219
+ message: string;
220
+ code: string;
221
+ }>]>;
222
+ export declare const ChannelInvokeResponseSchema: z.ZodObject<{
223
+ ignored: z.ZodBoolean;
224
+ responseParts: z.ZodOptional<z.ZodArray<z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
225
+ type: z.ZodLiteral<"text">;
226
+ text: z.ZodString;
227
+ }, "strip", z.ZodTypeAny, {
228
+ type: "text";
229
+ text: string;
230
+ }, {
231
+ type: "text";
232
+ text: string;
233
+ }>, z.ZodObject<{
234
+ type: z.ZodLiteral<"tool_call">;
235
+ id: z.ZodString;
236
+ name: z.ZodString;
237
+ input: z.ZodRecord<z.ZodString, z.ZodUnknown>;
238
+ state: z.ZodEnum<["streaming", "pending", "completed", "error"]>;
239
+ }, "strip", z.ZodTypeAny, {
240
+ type: "tool_call";
241
+ name: string;
242
+ input: Record<string, unknown>;
243
+ id: string;
244
+ state: "error" | "streaming" | "completed" | "pending";
245
+ }, {
246
+ type: "tool_call";
247
+ name: string;
248
+ input: Record<string, unknown>;
249
+ id: string;
250
+ state: "error" | "streaming" | "completed" | "pending";
251
+ }>, z.ZodObject<{
252
+ type: z.ZodLiteral<"tool_result">;
253
+ tool_call_id: z.ZodString;
254
+ output: z.ZodUnknown;
255
+ is_error: z.ZodOptional<z.ZodBoolean>;
256
+ }, "strip", z.ZodTypeAny, {
257
+ type: "tool_result";
258
+ tool_call_id: string;
259
+ output?: unknown;
260
+ is_error?: boolean | undefined;
261
+ }, {
262
+ type: "tool_result";
263
+ tool_call_id: string;
264
+ output?: unknown;
265
+ is_error?: boolean | undefined;
266
+ }>, z.ZodObject<{
267
+ type: z.ZodLiteral<"reasoning">;
268
+ text: z.ZodString;
269
+ }, "strip", z.ZodTypeAny, {
270
+ type: "reasoning";
271
+ text: string;
272
+ }, {
273
+ type: "reasoning";
274
+ text: string;
275
+ }>, z.ZodObject<{
276
+ type: z.ZodLiteral<"error">;
277
+ code: z.ZodString;
278
+ message: z.ZodString;
279
+ }, "strip", z.ZodTypeAny, {
280
+ type: "error";
281
+ message: string;
282
+ code: string;
283
+ }, {
284
+ type: "error";
285
+ message: string;
286
+ code: string;
287
+ }>]>, "many">>;
288
+ tokenUsage: z.ZodOptional<z.ZodObject<{
289
+ inputTokens: z.ZodOptional<z.ZodNumber>;
290
+ outputTokens: z.ZodOptional<z.ZodNumber>;
291
+ totalTokens: z.ZodOptional<z.ZodNumber>;
292
+ }, "strip", z.ZodTypeAny, {
293
+ totalTokens?: number | undefined;
294
+ inputTokens?: number | undefined;
295
+ outputTokens?: number | undefined;
296
+ }, {
297
+ totalTokens?: number | undefined;
298
+ inputTokens?: number | undefined;
299
+ outputTokens?: number | undefined;
300
+ }>>;
301
+ error: z.ZodOptional<z.ZodObject<{
302
+ code: z.ZodEnum<["provider_error", "internal_error"]>;
303
+ retryable: z.ZodBoolean;
304
+ }, "strip", z.ZodTypeAny, {
305
+ code: "provider_error" | "internal_error";
306
+ retryable: boolean;
307
+ }, {
308
+ code: "provider_error" | "internal_error";
309
+ retryable: boolean;
310
+ }>>;
311
+ }, "strip", z.ZodTypeAny, {
312
+ ignored: boolean;
313
+ error?: {
314
+ code: "provider_error" | "internal_error";
315
+ retryable: boolean;
316
+ } | undefined;
317
+ responseParts?: ({
318
+ type: "text";
319
+ text: string;
320
+ } | {
321
+ type: "tool_call";
322
+ name: string;
323
+ input: Record<string, unknown>;
324
+ id: string;
325
+ state: "error" | "streaming" | "completed" | "pending";
326
+ } | {
327
+ type: "tool_result";
328
+ tool_call_id: string;
329
+ output?: unknown;
330
+ is_error?: boolean | undefined;
331
+ } | {
332
+ type: "reasoning";
333
+ text: string;
334
+ } | {
335
+ type: "error";
336
+ message: string;
337
+ code: string;
338
+ })[] | undefined;
339
+ tokenUsage?: {
340
+ totalTokens?: number | undefined;
341
+ inputTokens?: number | undefined;
342
+ outputTokens?: number | undefined;
343
+ } | undefined;
344
+ }, {
345
+ ignored: boolean;
346
+ error?: {
347
+ code: "provider_error" | "internal_error";
348
+ retryable: boolean;
349
+ } | undefined;
350
+ responseParts?: ({
351
+ type: "text";
352
+ text: string;
353
+ } | {
354
+ type: "tool_call";
355
+ name: string;
356
+ input: Record<string, unknown>;
357
+ id: string;
358
+ state: "error" | "streaming" | "completed" | "pending";
359
+ } | {
360
+ type: "tool_result";
361
+ tool_call_id: string;
362
+ output?: unknown;
363
+ is_error?: boolean | undefined;
364
+ } | {
365
+ type: "reasoning";
366
+ text: string;
367
+ } | {
368
+ type: "error";
369
+ message: string;
370
+ code: string;
371
+ })[] | undefined;
372
+ tokenUsage?: {
373
+ totalTokens?: number | undefined;
374
+ inputTokens?: number | undefined;
375
+ outputTokens?: number | undefined;
376
+ } | undefined;
377
+ }>;
378
+ declare const dispatchClaimsSchema: z.ZodObject<{
379
+ iss: z.ZodString;
380
+ aud: z.ZodString;
381
+ sub: z.ZodString;
382
+ project_id: z.ZodString;
383
+ platform: z.ZodString;
384
+ body_sha256: z.ZodString;
385
+ iat: z.ZodNumber;
386
+ exp: z.ZodNumber;
387
+ }, "strip", z.ZodTypeAny, {
388
+ project_id: string;
389
+ platform: string;
390
+ sub: string;
391
+ iss: string;
392
+ aud: string;
393
+ body_sha256: string;
394
+ iat: number;
395
+ exp: number;
396
+ }, {
397
+ project_id: string;
398
+ platform: string;
399
+ sub: string;
400
+ iss: string;
401
+ aud: string;
402
+ body_sha256: string;
403
+ iat: number;
404
+ exp: number;
405
+ }>;
406
+ export type ChannelInvokeRequest = z.infer<typeof ChannelInvokeRequestSchema>;
407
+ export type ChannelInvokeResponse = z.infer<typeof ChannelInvokeResponseSchema>;
408
+ type ChannelResponsePart = z.infer<typeof ChannelResponsePartSchema>;
409
+ type DispatchClaims = z.infer<typeof dispatchClaimsSchema>;
410
+ export interface ChannelInvokeDeps {
411
+ ensureProjectDiscovery: (ctx: HandlerContext) => Promise<void>;
412
+ getAgent: (id: string) => Agent | undefined;
413
+ getAllAgentIds: () => string[];
414
+ }
415
+ export declare const defaultChannelInvokeDeps: ChannelInvokeDeps;
416
+ export declare function verifyDispatchJws(jws: string, body: string, options: {
417
+ audience: string;
418
+ publicKeyPem: string;
419
+ maxAgeSeconds: number;
420
+ expectedProjectId?: string;
421
+ }): Promise<DispatchClaims>;
422
+ export declare function normalizeConversationHistoryForRuntime(messages: ChannelInvokeRequest["conversationHistory"]): Message[];
423
+ export declare function resolveChannelInvokeAgent(agentConfigId: string, deps: Pick<ChannelInvokeDeps, "getAgent" | "getAllAgentIds">): Agent | undefined;
424
+ export declare function buildChannelResponseParts(response: AgentResponse): ChannelResponsePart[];
425
+ export declare function executeChannelInvoke(payload: ChannelInvokeRequest, ctx: HandlerContext, deps: ChannelInvokeDeps): Promise<ChannelInvokeResponse>;
426
+ export {};
427
+ //# sourceMappingURL=invoke.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"invoke.d.ts","sourceRoot":"","sources":["../../../src/src/channels/invoke.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,YAAY,IAAI,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEvF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAGxD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AA8BxB,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiBrC,CAAC;AAiCH,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAMpC,CAAC;AAEH,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAYtC,CAAC;AAQH,QAAA,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;EASxB,CAAC;AAEH,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAC9E,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAEhF,KAAK,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AACrE,KAAK,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAE3D,MAAM,WAAW,iBAAiB;IAChC,sBAAsB,EAAE,CAAC,GAAG,EAAE,cAAc,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/D,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,KAAK,GAAG,SAAS,CAAC;IAC5C,cAAc,EAAE,MAAM,MAAM,EAAE,CAAC;CAChC;AAED,eAAO,MAAM,wBAAwB,EAAE,iBAItC,CAAC;AAyCF,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE;IACP,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B,GACA,OAAO,CAAC,cAAc,CAAC,CA2DzB;AAqCD,wBAAgB,sCAAsC,CACpD,QAAQ,EAAE,oBAAoB,CAAC,qBAAqB,CAAC,GACpD,OAAO,EAAE,CAUX;AAED,wBAAgB,yBAAyB,CACvC,aAAa,EAAE,MAAM,EACrB,IAAI,EAAE,IAAI,CAAC,iBAAiB,EAAE,UAAU,GAAG,gBAAgB,CAAC,GAC3D,KAAK,GAAG,SAAS,CA2BnB;AAsDD,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,aAAa,GAAG,mBAAmB,EAAE,CAiDxF;AAgBD,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,oBAAoB,EAC7B,GAAG,EAAE,cAAc,EACnB,IAAI,EAAE,iBAAiB,GACtB,OAAO,CAAC,qBAAqB,CAAC,CAkEhC"}