digital-workers 2.1.3 → 2.4.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.
- package/.turbo/turbo-build.log +1 -1
- package/CHANGELOG.md +17 -0
- package/README.md +2 -0
- package/dist/actions.d.ts.map +1 -1
- package/dist/actions.js +33 -21
- package/dist/actions.js.map +1 -1
- package/dist/agent-comms.d.ts.map +1 -1
- package/dist/agent-comms.js +36 -25
- package/dist/agent-comms.js.map +1 -1
- package/dist/approve.d.ts +40 -8
- package/dist/approve.d.ts.map +1 -1
- package/dist/approve.js +86 -20
- package/dist/approve.js.map +1 -1
- package/dist/ask.d.ts +38 -7
- package/dist/ask.d.ts.map +1 -1
- package/dist/ask.js +85 -25
- package/dist/ask.js.map +1 -1
- package/dist/browse.d.ts +223 -0
- package/dist/browse.d.ts.map +1 -0
- package/dist/browse.js +392 -0
- package/dist/browse.js.map +1 -0
- package/dist/capability-tiers.js +3 -3
- package/dist/capability-tiers.js.map +1 -1
- package/dist/cascade-context.d.ts +28 -28
- package/dist/client.d.ts +162 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +64 -0
- package/dist/client.js.map +1 -0
- package/dist/decide.d.ts +42 -6
- package/dist/decide.d.ts.map +1 -1
- package/dist/decide.js +54 -11
- package/dist/decide.js.map +1 -1
- package/dist/do.d.ts +36 -7
- package/dist/do.d.ts.map +1 -1
- package/dist/do.js +82 -39
- package/dist/do.js.map +1 -1
- package/dist/error-escalation.d.ts.map +1 -1
- package/dist/error-escalation.js +38 -38
- package/dist/error-escalation.js.map +1 -1
- package/dist/generate.d.ts +48 -7
- package/dist/generate.d.ts.map +1 -1
- package/dist/generate.js +49 -8
- package/dist/generate.js.map +1 -1
- package/dist/goals.d.ts +10 -9
- package/dist/goals.d.ts.map +1 -1
- package/dist/goals.js +30 -24
- package/dist/goals.js.map +1 -1
- package/dist/image.d.ts +189 -0
- package/dist/image.d.ts.map +1 -0
- package/dist/image.js +528 -0
- package/dist/image.js.map +1 -0
- package/dist/index.d.ts +49 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +58 -2
- package/dist/index.js.map +1 -1
- package/dist/is.d.ts +45 -10
- package/dist/is.d.ts.map +1 -1
- package/dist/is.js +56 -21
- package/dist/is.js.map +1 -1
- package/dist/kpis.d.ts +24 -15
- package/dist/kpis.d.ts.map +1 -1
- package/dist/kpis.js +16 -14
- package/dist/kpis.js.map +1 -1
- package/dist/load-balancing.d.ts.map +1 -1
- package/dist/load-balancing.js +124 -38
- package/dist/load-balancing.js.map +1 -1
- package/dist/logger.d.ts +76 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +39 -0
- package/dist/logger.js.map +1 -0
- package/dist/notify.d.ts +38 -9
- package/dist/notify.d.ts.map +1 -1
- package/dist/notify.js +72 -17
- package/dist/notify.js.map +1 -1
- package/dist/role.d.ts +5 -4
- package/dist/role.d.ts.map +1 -1
- package/dist/role.js +13 -10
- package/dist/role.js.map +1 -1
- package/dist/runtime.d.ts +310 -0
- package/dist/runtime.d.ts.map +1 -0
- package/dist/runtime.js +510 -0
- package/dist/runtime.js.map +1 -0
- package/dist/team.d.ts +11 -6
- package/dist/team.d.ts.map +1 -1
- package/dist/team.js +22 -15
- package/dist/team.js.map +1 -1
- package/dist/transports/email.d.ts +318 -0
- package/dist/transports/email.d.ts.map +1 -0
- package/dist/transports/email.js +779 -0
- package/dist/transports/email.js.map +1 -0
- package/dist/transports/slack.d.ts +515 -0
- package/dist/transports/slack.d.ts.map +1 -0
- package/dist/transports/slack.js +844 -0
- package/dist/transports/slack.js.map +1 -0
- package/dist/transports.d.ts.map +1 -1
- package/dist/transports.js +44 -25
- package/dist/transports.js.map +1 -1
- package/dist/types.d.ts +141 -19
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +5 -0
- package/dist/types.js.map +1 -1
- package/dist/utils/id.d.ts +19 -0
- package/dist/utils/id.d.ts.map +1 -0
- package/dist/utils/id.js +21 -0
- package/dist/utils/id.js.map +1 -0
- package/dist/video.d.ts +203 -0
- package/dist/video.d.ts.map +1 -0
- package/dist/video.js +528 -0
- package/dist/video.js.map +1 -0
- package/dist/worker.d.ts +343 -0
- package/dist/worker.d.ts.map +1 -0
- package/dist/worker.js +698 -0
- package/dist/worker.js.map +1 -0
- package/package.json +32 -14
- package/src/actions.ts +39 -30
- package/src/agent-comms.ts +54 -92
- package/src/approve.ts +91 -20
- package/src/ask.ts +99 -25
- package/src/browse.ts +627 -0
- package/src/capability-tiers.ts +5 -5
- package/src/client.ts +221 -0
- package/src/decide.ts +81 -35
- package/src/do.ts +98 -52
- package/src/error-escalation.ts +55 -67
- package/src/generate.ts +52 -18
- package/src/goals.ts +36 -27
- package/src/image.ts +816 -0
- package/src/index.ts +187 -2
- package/src/is.ts +59 -25
- package/src/kpis.ts +41 -36
- package/src/load-balancing.ts +132 -46
- package/src/logger.ts +93 -0
- package/src/notify.ts +78 -17
- package/src/role.ts +30 -20
- package/src/runtime.ts +796 -0
- package/src/team.ts +24 -19
- package/src/transports/email.ts +1160 -0
- package/src/transports/slack.ts +1320 -0
- package/src/transports.ts +58 -43
- package/src/types.ts +174 -46
- package/src/utils/id.ts +21 -0
- package/src/video.ts +906 -0
- package/src/worker.ts +1007 -0
- package/test/approve.test.ts +305 -0
- package/test/ask.test.ts +274 -0
- package/test/browse.test.ts +361 -0
- package/test/decide.test.ts +252 -0
- package/test/do.test.ts +144 -0
- package/test/error-logging.test.ts +357 -0
- package/test/generate.test.ts +319 -0
- package/test/image.test.ts +398 -0
- package/test/is.test.ts +287 -0
- package/test/load-balancing-safety.test.ts +404 -0
- package/test/notify.test.ts +434 -0
- package/test/primitives.test.ts +320 -0
- package/test/runtime-integration.test.ts +892 -0
- package/test/transports/crypto.test.ts +230 -0
- package/test/transports/email.test.ts +866 -0
- package/test/transports/id-generation.test.ts +91 -0
- package/test/transports/slack.test.ts +760 -0
- package/test/type-safety.test.ts +834 -0
- package/test/types.test.ts +60 -2
- package/test/video.test.ts +530 -0
- package/test/worker.test.ts +1433 -0
- package/tsconfig.json +4 -1
- package/vitest.config.ts +42 -0
- package/wrangler.jsonc +36 -0
- package/LICENSE +0 -21
- package/src/actions.js +0 -436
- package/src/approve.js +0 -234
- package/src/ask.js +0 -226
- package/src/decide.js +0 -244
- package/src/do.js +0 -227
- package/src/generate.js +0 -298
- package/src/goals.js +0 -205
- package/src/index.js +0 -68
- package/src/is.js +0 -317
- package/src/kpis.js +0 -270
- package/src/notify.js +0 -219
- package/src/role.js +0 -110
- package/src/team.js +0 -130
- package/src/transports.js +0 -357
- package/src/types.js +0 -71
|
@@ -0,0 +1,310 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Runtime Integration for Human Request Processing
|
|
3
|
+
*
|
|
4
|
+
* Connects transport adapters (Slack, Email, etc.) to a request store and
|
|
5
|
+
* provides orchestration for approval workflows, questions, and notifications.
|
|
6
|
+
*
|
|
7
|
+
* The HumanRequestProcessor is the central coordinator that:
|
|
8
|
+
* - Sends requests via configured transports
|
|
9
|
+
* - Tracks request state in a store
|
|
10
|
+
* - Handles webhook callbacks from transports
|
|
11
|
+
* - Notifies when requests complete or timeout
|
|
12
|
+
*
|
|
13
|
+
* @packageDocumentation
|
|
14
|
+
*/
|
|
15
|
+
import type { Transport } from './transports.js';
|
|
16
|
+
import type { WorkerRef } from './types.js';
|
|
17
|
+
import type { SlackTransport } from './transports/slack.js';
|
|
18
|
+
import type { EmailTransport } from './transports/email.js';
|
|
19
|
+
/**
|
|
20
|
+
* Status of a human request
|
|
21
|
+
*/
|
|
22
|
+
export type RequestStatus = 'pending' | 'completed' | 'expired' | 'cancelled' | 'failed';
|
|
23
|
+
/**
|
|
24
|
+
* Type of human request
|
|
25
|
+
*/
|
|
26
|
+
export type RequestType = 'approval' | 'question' | 'notification';
|
|
27
|
+
/**
|
|
28
|
+
* Result of a completed request
|
|
29
|
+
*/
|
|
30
|
+
export interface RequestResult {
|
|
31
|
+
/** Whether the request was approved (for approval type) */
|
|
32
|
+
approved?: boolean;
|
|
33
|
+
/** Answer to a question (for question type) */
|
|
34
|
+
answer?: unknown;
|
|
35
|
+
/** Who responded to the request */
|
|
36
|
+
respondedBy?: WorkerRef;
|
|
37
|
+
/** When the response was received */
|
|
38
|
+
respondedAt?: Date;
|
|
39
|
+
/** Additional notes from the responder */
|
|
40
|
+
notes?: string;
|
|
41
|
+
/** The channel used for the response */
|
|
42
|
+
via?: Transport;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* A human request tracked by the runtime
|
|
46
|
+
*/
|
|
47
|
+
export interface HumanRequest {
|
|
48
|
+
/** Unique request identifier */
|
|
49
|
+
id: string;
|
|
50
|
+
/** Type of request */
|
|
51
|
+
type: RequestType;
|
|
52
|
+
/** Target for the request (channel, email, etc.) */
|
|
53
|
+
target: string;
|
|
54
|
+
/** Request content/message */
|
|
55
|
+
content: string;
|
|
56
|
+
/** Current status */
|
|
57
|
+
status: RequestStatus;
|
|
58
|
+
/** Transport used to send the request */
|
|
59
|
+
transport: Transport;
|
|
60
|
+
/** External message ID from the transport */
|
|
61
|
+
externalId?: string;
|
|
62
|
+
/** Who initiated the request */
|
|
63
|
+
requestedBy?: WorkerRef;
|
|
64
|
+
/** Additional context for the request */
|
|
65
|
+
context?: Record<string, unknown>;
|
|
66
|
+
/** Channel to notify requestor of result */
|
|
67
|
+
notifyChannel?: string;
|
|
68
|
+
/** When the request was created */
|
|
69
|
+
createdAt: Date;
|
|
70
|
+
/** When the request was completed */
|
|
71
|
+
completedAt?: Date;
|
|
72
|
+
/** When the request expires */
|
|
73
|
+
expiresAt?: Date;
|
|
74
|
+
/** Result of the request (when completed) */
|
|
75
|
+
result?: RequestResult;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Data for creating a new request
|
|
79
|
+
*/
|
|
80
|
+
export interface CreateRequestData {
|
|
81
|
+
type: RequestType;
|
|
82
|
+
target: string;
|
|
83
|
+
content: string;
|
|
84
|
+
transport: Transport;
|
|
85
|
+
requestedBy?: WorkerRef;
|
|
86
|
+
context?: Record<string, unknown>;
|
|
87
|
+
notifyChannel?: string;
|
|
88
|
+
expiresAt?: Date;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Data for updating a request
|
|
92
|
+
*/
|
|
93
|
+
export interface UpdateRequestData {
|
|
94
|
+
status?: RequestStatus;
|
|
95
|
+
externalId?: string;
|
|
96
|
+
result?: RequestResult;
|
|
97
|
+
completedAt?: Date;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Store interface for persisting human requests
|
|
101
|
+
*/
|
|
102
|
+
export interface HumanRequestStore {
|
|
103
|
+
/** Create a new request */
|
|
104
|
+
create(data: CreateRequestData): Promise<HumanRequest>;
|
|
105
|
+
/** Get a request by ID */
|
|
106
|
+
get(id: string): Promise<HumanRequest | undefined>;
|
|
107
|
+
/** Update a request */
|
|
108
|
+
update(id: string, data: UpdateRequestData): Promise<HumanRequest | undefined>;
|
|
109
|
+
/** Find a request by external ID (transport message ID) */
|
|
110
|
+
findByExternalId(externalId: string): Promise<HumanRequest | undefined>;
|
|
111
|
+
/** List all pending requests */
|
|
112
|
+
listPending(): Promise<HumanRequest[]>;
|
|
113
|
+
/** List expired requests that need processing */
|
|
114
|
+
listExpired(): Promise<HumanRequest[]>;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* In-memory implementation of HumanRequestStore
|
|
118
|
+
*
|
|
119
|
+
* Suitable for development and testing. For production, implement
|
|
120
|
+
* a store backed by Durable Objects, KV, or a database.
|
|
121
|
+
*/
|
|
122
|
+
export declare class InMemoryRequestStore implements HumanRequestStore {
|
|
123
|
+
private requests;
|
|
124
|
+
private externalIdIndex;
|
|
125
|
+
private counter;
|
|
126
|
+
private generateId;
|
|
127
|
+
create(data: CreateRequestData): Promise<HumanRequest>;
|
|
128
|
+
get(id: string): Promise<HumanRequest | undefined>;
|
|
129
|
+
update(id: string, data: UpdateRequestData): Promise<HumanRequest | undefined>;
|
|
130
|
+
findByExternalId(externalId: string): Promise<HumanRequest | undefined>;
|
|
131
|
+
listPending(): Promise<HumanRequest[]>;
|
|
132
|
+
listExpired(): Promise<HumanRequest[]>;
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Supported transport adapters
|
|
136
|
+
*/
|
|
137
|
+
export interface TransportAdapters {
|
|
138
|
+
slack?: SlackTransport;
|
|
139
|
+
email?: EmailTransport;
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Result of submitting a request
|
|
143
|
+
*/
|
|
144
|
+
export interface SubmitResult {
|
|
145
|
+
success: boolean;
|
|
146
|
+
requestId?: string;
|
|
147
|
+
externalId?: string;
|
|
148
|
+
error?: string;
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Data for submitting a new request
|
|
152
|
+
*/
|
|
153
|
+
export interface SubmitRequestData {
|
|
154
|
+
type: RequestType;
|
|
155
|
+
target: string;
|
|
156
|
+
content: string;
|
|
157
|
+
transport: Transport;
|
|
158
|
+
context?: Record<string, unknown>;
|
|
159
|
+
requestedBy?: WorkerRef;
|
|
160
|
+
notifyChannel?: string;
|
|
161
|
+
timeout?: number;
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Webhook payload for processing responses
|
|
165
|
+
*/
|
|
166
|
+
export interface WebhookPayload {
|
|
167
|
+
type: 'approval_response' | 'question_response' | 'email_reply';
|
|
168
|
+
requestId: string;
|
|
169
|
+
approved?: boolean;
|
|
170
|
+
answer?: unknown;
|
|
171
|
+
respondedBy?: WorkerRef;
|
|
172
|
+
notes?: string;
|
|
173
|
+
from?: string;
|
|
174
|
+
content?: string;
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Result of processing a webhook
|
|
178
|
+
*/
|
|
179
|
+
export interface WebhookResult {
|
|
180
|
+
success: boolean;
|
|
181
|
+
requestId?: string;
|
|
182
|
+
error?: string;
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* Callback data when a request completes
|
|
186
|
+
*/
|
|
187
|
+
export interface CompleteCallbackData {
|
|
188
|
+
requestId: string;
|
|
189
|
+
request: HumanRequest;
|
|
190
|
+
result: RequestResult;
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Callback data when a request times out
|
|
194
|
+
*/
|
|
195
|
+
export interface TimeoutCallbackData {
|
|
196
|
+
requestId: string;
|
|
197
|
+
request: HumanRequest;
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Result of cancelling a request
|
|
201
|
+
*/
|
|
202
|
+
export interface CancelResult {
|
|
203
|
+
success: boolean;
|
|
204
|
+
error?: string;
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* Configuration for HumanRequestProcessor
|
|
208
|
+
*/
|
|
209
|
+
export interface ProcessorConfig {
|
|
210
|
+
/** Request store for persistence */
|
|
211
|
+
store: HumanRequestStore;
|
|
212
|
+
/** Transport adapters */
|
|
213
|
+
transports: TransportAdapters;
|
|
214
|
+
/** Callback when a request completes */
|
|
215
|
+
onComplete?: (data: CompleteCallbackData) => void | Promise<void>;
|
|
216
|
+
/** Callback when a request times out */
|
|
217
|
+
onTimeout?: (data: TimeoutCallbackData) => void | Promise<void>;
|
|
218
|
+
/** Whether to notify requestor of results */
|
|
219
|
+
notifyRequestor?: boolean;
|
|
220
|
+
/** Interval for checking expired requests (ms) */
|
|
221
|
+
checkIntervalMs?: number;
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* Human Request Processor
|
|
225
|
+
*
|
|
226
|
+
* Coordinates between transport adapters and the request store to
|
|
227
|
+
* handle approval workflows, questions, and notifications.
|
|
228
|
+
*
|
|
229
|
+
* @example
|
|
230
|
+
* ```ts
|
|
231
|
+
* const processor = createHumanRequestProcessor({
|
|
232
|
+
* store: new InMemoryRequestStore(),
|
|
233
|
+
* transports: {
|
|
234
|
+
* slack: createSlackTransport({ botToken, signingSecret }),
|
|
235
|
+
* email: createEmailTransport({ apiKey }),
|
|
236
|
+
* },
|
|
237
|
+
* onComplete: (data) => {
|
|
238
|
+
* console.log(`Request ${data.requestId} completed:`, data.result)
|
|
239
|
+
* },
|
|
240
|
+
* })
|
|
241
|
+
*
|
|
242
|
+
* // Submit a request
|
|
243
|
+
* const result = await processor.submitRequest({
|
|
244
|
+
* type: 'approval',
|
|
245
|
+
* target: '#approvals',
|
|
246
|
+
* content: 'Approve deployment?',
|
|
247
|
+
* transport: 'slack',
|
|
248
|
+
* })
|
|
249
|
+
*
|
|
250
|
+
* // Handle webhook when user responds
|
|
251
|
+
* await processor.handleWebhook('slack', {
|
|
252
|
+
* type: 'approval_response',
|
|
253
|
+
* requestId: result.requestId,
|
|
254
|
+
* approved: true,
|
|
255
|
+
* })
|
|
256
|
+
* ```
|
|
257
|
+
*/
|
|
258
|
+
export declare class HumanRequestProcessor {
|
|
259
|
+
private store;
|
|
260
|
+
private transports;
|
|
261
|
+
private onCompleteCallback;
|
|
262
|
+
private onTimeoutCallback;
|
|
263
|
+
private notifyRequestor;
|
|
264
|
+
private checkIntervalMs;
|
|
265
|
+
private timeoutChecker;
|
|
266
|
+
private destroyed;
|
|
267
|
+
constructor(config: ProcessorConfig);
|
|
268
|
+
/**
|
|
269
|
+
* Submit a new human request via the specified transport
|
|
270
|
+
*/
|
|
271
|
+
submitRequest(data: SubmitRequestData): Promise<SubmitResult>;
|
|
272
|
+
/**
|
|
273
|
+
* Handle a webhook callback from a transport
|
|
274
|
+
*/
|
|
275
|
+
handleWebhook(transport: Transport, payload: WebhookPayload): Promise<WebhookResult>;
|
|
276
|
+
/**
|
|
277
|
+
* Get a request by ID
|
|
278
|
+
*/
|
|
279
|
+
getRequest(requestId: string): Promise<HumanRequest | undefined>;
|
|
280
|
+
/**
|
|
281
|
+
* Cancel a pending request
|
|
282
|
+
*/
|
|
283
|
+
cancelRequest(requestId: string): Promise<CancelResult>;
|
|
284
|
+
/**
|
|
285
|
+
* Stop the processor and clean up resources
|
|
286
|
+
*/
|
|
287
|
+
destroy(): void;
|
|
288
|
+
private getTransport;
|
|
289
|
+
private sendViaTransport;
|
|
290
|
+
private parseEmailApproval;
|
|
291
|
+
private notifyRequestorOfResult;
|
|
292
|
+
private startTimeoutChecker;
|
|
293
|
+
}
|
|
294
|
+
/**
|
|
295
|
+
* Create a HumanRequestProcessor instance
|
|
296
|
+
*
|
|
297
|
+
* @example
|
|
298
|
+
* ```ts
|
|
299
|
+
* const processor = createHumanRequestProcessor({
|
|
300
|
+
* store: new InMemoryRequestStore(),
|
|
301
|
+
* transports: {
|
|
302
|
+
* slack: createSlackTransport({ botToken, signingSecret }),
|
|
303
|
+
* },
|
|
304
|
+
* onComplete: (data) => console.log('Completed:', data),
|
|
305
|
+
* onTimeout: (data) => console.log('Timed out:', data),
|
|
306
|
+
* })
|
|
307
|
+
* ```
|
|
308
|
+
*/
|
|
309
|
+
export declare function createHumanRequestProcessor(config: ProcessorConfig): HumanRequestProcessor;
|
|
310
|
+
//# sourceMappingURL=runtime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAkB,MAAM,iBAAiB,CAAA;AAChE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAC3C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAC3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAM3D;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,WAAW,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAA;AAExF;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,UAAU,GAAG,UAAU,GAAG,cAAc,CAAA;AAElE;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,+CAA+C;IAC/C,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,mCAAmC;IACnC,WAAW,CAAC,EAAE,SAAS,CAAA;IACvB,qCAAqC;IACrC,WAAW,CAAC,EAAE,IAAI,CAAA;IAClB,0CAA0C;IAC1C,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,wCAAwC;IACxC,GAAG,CAAC,EAAE,SAAS,CAAA;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,gCAAgC;IAChC,EAAE,EAAE,MAAM,CAAA;IACV,sBAAsB;IACtB,IAAI,EAAE,WAAW,CAAA;IACjB,oDAAoD;IACpD,MAAM,EAAE,MAAM,CAAA;IACd,8BAA8B;IAC9B,OAAO,EAAE,MAAM,CAAA;IACf,qBAAqB;IACrB,MAAM,EAAE,aAAa,CAAA;IACrB,yCAAyC;IACzC,SAAS,EAAE,SAAS,CAAA;IACpB,6CAA6C;IAC7C,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,gCAAgC;IAChC,WAAW,CAAC,EAAE,SAAS,CAAA;IACvB,yCAAyC;IACzC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACjC,4CAA4C;IAC5C,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,mCAAmC;IACnC,SAAS,EAAE,IAAI,CAAA;IACf,qCAAqC;IACrC,WAAW,CAAC,EAAE,IAAI,CAAA;IAClB,+BAA+B;IAC/B,SAAS,CAAC,EAAE,IAAI,CAAA;IAChB,6CAA6C;IAC7C,MAAM,CAAC,EAAE,aAAa,CAAA;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,WAAW,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,SAAS,CAAA;IACpB,WAAW,CAAC,EAAE,SAAS,CAAA;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACjC,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,SAAS,CAAC,EAAE,IAAI,CAAA;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,MAAM,CAAC,EAAE,aAAa,CAAA;IACtB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,MAAM,CAAC,EAAE,aAAa,CAAA;IACtB,WAAW,CAAC,EAAE,IAAI,CAAA;CACnB;AAMD;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,2BAA2B;IAC3B,MAAM,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,YAAY,CAAC,CAAA;IACtD,0BAA0B;IAC1B,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC,CAAA;IAClD,uBAAuB;IACvB,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC,CAAA;IAC9E,2DAA2D;IAC3D,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC,CAAA;IACvE,gCAAgC;IAChC,WAAW,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC,CAAA;IACtC,iDAAiD;IACjD,WAAW,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC,CAAA;CACvC;AAMD;;;;;GAKG;AACH,qBAAa,oBAAqB,YAAW,iBAAiB;IAC5D,OAAO,CAAC,QAAQ,CAAkC;IAClD,OAAO,CAAC,eAAe,CAA4B;IACnD,OAAO,CAAC,OAAO,CAAI;IAEnB,OAAO,CAAC,UAAU;IAKZ,MAAM,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,YAAY,CAAC;IA6BtD,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC;IAIlD,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC;IA+B9E,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC;IAQvE,WAAW,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IAUtC,WAAW,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;CAU7C;AAMD;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,EAAE,cAAc,CAAA;IACtB,KAAK,CAAC,EAAE,cAAc,CAAA;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,WAAW,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,SAAS,CAAA;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACjC,WAAW,CAAC,EAAE,SAAS,CAAA;IACvB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,mBAAmB,GAAG,mBAAmB,GAAG,aAAa,CAAA;IAC/D,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,WAAW,CAAC,EAAE,SAAS,CAAA;IACvB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,YAAY,CAAA;IACrB,MAAM,EAAE,aAAa,CAAA;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,YAAY,CAAA;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,oCAAoC;IACpC,KAAK,EAAE,iBAAiB,CAAA;IACxB,yBAAyB;IACzB,UAAU,EAAE,iBAAiB,CAAA;IAC7B,wCAAwC;IACxC,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,oBAAoB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACjE,wCAAwC;IACxC,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,mBAAmB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC/D,6CAA6C;IAC7C,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,kDAAkD;IAClD,eAAe,CAAC,EAAE,MAAM,CAAA;CACzB;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,qBAAa,qBAAqB;IAChC,OAAO,CAAC,KAAK,CAAmB;IAChC,OAAO,CAAC,UAAU,CAAmB;IACrC,OAAO,CAAC,kBAAkB,CAA+D;IACzF,OAAO,CAAC,iBAAiB,CAA8D;IACvF,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,eAAe,CAAQ;IAC/B,OAAO,CAAC,cAAc,CAA8C;IACpE,OAAO,CAAC,SAAS,CAAQ;gBAEb,MAAM,EAAE,eAAe;IAcnC;;OAEG;IACG,aAAa,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,YAAY,CAAC;IAmFnE;;OAEG;IACG,aAAa,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;IAyF1F;;OAEG;IACG,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC;IAItE;;OAEG;IACG,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAwB7D;;OAEG;IACH,OAAO,IAAI,IAAI;IAYf,OAAO,CAAC,YAAY;YAWN,gBAAgB;IAyD9B,OAAO,CAAC,kBAAkB;YAaZ,uBAAuB;IAoBrC,OAAO,CAAC,mBAAmB;CAiC5B;AAMD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,eAAe,GAAG,qBAAqB,CAE1F"}
|