digital-tasks 2.3.0 → 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.
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Task Queue - In-memory task queue implementation
3
+ *
4
+ * Provides task queuing, assignment, and execution management.
5
+ *
6
+ * @packageDocumentation
7
+ */
8
+ import type { TaskQueue, TaskQueueOptions } from './types.js';
9
+ /**
10
+ * Global task queue instance
11
+ */
12
+ export declare const taskQueue: TaskQueue;
13
+ /**
14
+ * Create a new task queue instance
15
+ */
16
+ export declare function createTaskQueue(options?: TaskQueueOptions): TaskQueue;
17
+ //# sourceMappingURL=queue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../src/queue.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAEV,SAAS,EACT,gBAAgB,EASjB,MAAM,YAAY,CAAA;AAgbnB;;GAEG;AACH,eAAO,MAAM,SAAS,EAAE,SAAmC,CAAA;AAE3D;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,CAAC,EAAE,gBAAgB,GAAG,SAAS,CAErE"}
package/dist/queue.js ADDED
@@ -0,0 +1,386 @@
1
+ /**
2
+ * Task Queue - In-memory task queue implementation
3
+ *
4
+ * Provides task queuing, assignment, and execution management.
5
+ *
6
+ * @packageDocumentation
7
+ */
8
+ /**
9
+ * Priority values for sorting
10
+ */
11
+ const priorityOrder = {
12
+ critical: 5,
13
+ urgent: 4,
14
+ high: 3,
15
+ normal: 2,
16
+ low: 1,
17
+ };
18
+ /**
19
+ * In-memory task queue implementation
20
+ */
21
+ class InMemoryTaskQueue {
22
+ tasks = new Map();
23
+ options;
24
+ constructor(options = {}) {
25
+ this.options = {
26
+ name: 'default',
27
+ concurrency: 10,
28
+ defaultTimeout: 5 * 60 * 1000, // 5 minutes
29
+ persistent: false,
30
+ ...options,
31
+ };
32
+ }
33
+ async add(task) {
34
+ // Read the underlying Tool, tolerating the legacy `function` alias.
35
+ const tool = task.tool ?? task.function;
36
+ // Add created event
37
+ const event = {
38
+ id: `evt_${Date.now()}`,
39
+ type: 'created',
40
+ timestamp: new Date(),
41
+ message: `Task created: ${tool?.name ?? task.id}`,
42
+ };
43
+ const taskWithEvent = {
44
+ ...task,
45
+ events: [...(task.events || []), event],
46
+ };
47
+ this.tasks.set(task.id, taskWithEvent);
48
+ }
49
+ async get(id) {
50
+ return this.tasks.get(id);
51
+ }
52
+ async update(id, options) {
53
+ const task = this.tasks.get(id);
54
+ if (!task)
55
+ return undefined;
56
+ const events = [...(task.events || [])];
57
+ // Add event if provided
58
+ if (options.event) {
59
+ events.push({
60
+ ...options.event,
61
+ id: `evt_${Date.now()}`,
62
+ timestamp: new Date(),
63
+ });
64
+ }
65
+ // Add status change event
66
+ if (options.status && options.status !== task.status) {
67
+ events.push({
68
+ id: `evt_${Date.now()}_status`,
69
+ type: options.status === 'completed'
70
+ ? 'completed'
71
+ : options.status === 'failed'
72
+ ? 'failed'
73
+ : options.status === 'in_progress'
74
+ ? 'started'
75
+ : options.status === 'blocked'
76
+ ? 'blocked'
77
+ : 'progress',
78
+ timestamp: new Date(),
79
+ message: `Status changed from ${task.status} to ${options.status}`,
80
+ });
81
+ }
82
+ // Build progress update if provided
83
+ let progressUpdate = task.progress;
84
+ if (options.progress) {
85
+ progressUpdate = {
86
+ percent: options.progress.percent ?? task.progress?.percent ?? 0,
87
+ updatedAt: new Date(),
88
+ };
89
+ const step = options.progress.step ?? task.progress?.step;
90
+ if (step !== undefined) {
91
+ progressUpdate.step = step;
92
+ }
93
+ const totalSteps = options.progress.totalSteps ?? task.progress?.totalSteps;
94
+ if (totalSteps !== undefined) {
95
+ progressUpdate.totalSteps = totalSteps;
96
+ }
97
+ const currentStep = options.progress.currentStep ?? task.progress?.currentStep;
98
+ if (currentStep !== undefined) {
99
+ progressUpdate.currentStep = currentStep;
100
+ }
101
+ const estTime = options.progress.estimatedTimeRemaining ?? task.progress?.estimatedTimeRemaining;
102
+ if (estTime !== undefined) {
103
+ progressUpdate.estimatedTimeRemaining = estTime;
104
+ }
105
+ }
106
+ const updated = {
107
+ ...task,
108
+ ...(options.status && { status: options.status }),
109
+ ...(options.priority && { priority: options.priority }),
110
+ ...(options.assignment && { assignment: options.assignment }),
111
+ ...(progressUpdate && { progress: progressUpdate }),
112
+ ...(options.metadata && {
113
+ metadata: { ...task.metadata, ...options.metadata },
114
+ }),
115
+ events,
116
+ };
117
+ this.tasks.set(id, updated);
118
+ return updated;
119
+ }
120
+ async remove(id) {
121
+ return this.tasks.delete(id);
122
+ }
123
+ async query(options) {
124
+ let results = Array.from(this.tasks.values());
125
+ // Filter by status
126
+ if (options.status) {
127
+ const statuses = Array.isArray(options.status) ? options.status : [options.status];
128
+ results = results.filter((t) => statuses.includes(t.status));
129
+ }
130
+ // Filter by priority
131
+ if (options.priority) {
132
+ const priorities = Array.isArray(options.priority) ? options.priority : [options.priority];
133
+ results = results.filter((t) => priorities.includes(t.priority));
134
+ }
135
+ // Filter by function type (reads `tool` with fallback to legacy `function`)
136
+ if (options.functionType) {
137
+ results = results.filter((t) => (t.tool ?? t.function)?.type === options.functionType);
138
+ }
139
+ // Filter by assigned worker
140
+ if (options.assignedTo) {
141
+ results = results.filter((t) => t.assignment?.worker.id === options.assignedTo);
142
+ }
143
+ // Filter by tags
144
+ if (options.tags && options.tags.length > 0) {
145
+ results = results.filter((t) => t.tags && options.tags.some((tag) => t.tags.includes(tag)));
146
+ }
147
+ // Filter by project
148
+ if (options.projectId) {
149
+ results = results.filter((t) => t.projectId === options.projectId);
150
+ }
151
+ // Filter by parent
152
+ if (options.parentId) {
153
+ results = results.filter((t) => t.parentId === options.parentId);
154
+ }
155
+ // Text search (reads `tool` with fallback to legacy `function`)
156
+ if (options.search) {
157
+ const search = options.search.toLowerCase();
158
+ results = results.filter((t) => {
159
+ const tool = t.tool ?? t.function;
160
+ if (!tool)
161
+ return false;
162
+ return (tool.name.toLowerCase().includes(search) ||
163
+ tool.description?.toLowerCase().includes(search));
164
+ });
165
+ }
166
+ // Sort
167
+ if (options.sortBy) {
168
+ results.sort((a, b) => {
169
+ let aVal;
170
+ let bVal;
171
+ switch (options.sortBy) {
172
+ case 'createdAt':
173
+ aVal = a.createdAt.getTime();
174
+ bVal = b.createdAt.getTime();
175
+ break;
176
+ case 'priority':
177
+ aVal = priorityOrder[a.priority];
178
+ bVal = priorityOrder[b.priority];
179
+ break;
180
+ case 'deadline':
181
+ aVal = a.deadline?.getTime() || Infinity;
182
+ bVal = b.deadline?.getTime() || Infinity;
183
+ break;
184
+ case 'status':
185
+ aVal = a.status.charCodeAt(0);
186
+ bVal = b.status.charCodeAt(0);
187
+ break;
188
+ default:
189
+ return 0;
190
+ }
191
+ return options.sortOrder === 'desc' ? bVal - aVal : aVal - bVal;
192
+ });
193
+ }
194
+ // Pagination
195
+ const offset = options.offset ?? 0;
196
+ const limit = options.limit ?? results.length;
197
+ results = results.slice(offset, offset + limit);
198
+ return results;
199
+ }
200
+ async getNextForWorker(worker) {
201
+ // Get queued tasks sorted by priority, then by deadline
202
+ const queuedTasks = await this.query({
203
+ status: ['pending', 'queued'],
204
+ sortBy: 'priority',
205
+ sortOrder: 'desc',
206
+ });
207
+ // Find first task the worker can handle
208
+ for (const task of queuedTasks) {
209
+ // Check if worker type is allowed
210
+ if (task.allowedWorkers &&
211
+ !task.allowedWorkers.includes(worker.type) &&
212
+ !task.allowedWorkers.includes('any')) {
213
+ continue;
214
+ }
215
+ // Note: Could check worker skills against task requirements in the future
216
+ // Check if task is scheduled for later
217
+ if (task.scheduledFor && task.scheduledFor > new Date()) {
218
+ continue;
219
+ }
220
+ // Check dependencies
221
+ if (task.dependencies && task.dependencies.length > 0) {
222
+ const unblockedDeps = task.dependencies.filter((d) => d.type === 'blocked_by' && !d.satisfied);
223
+ if (unblockedDeps.length > 0) {
224
+ continue;
225
+ }
226
+ }
227
+ return task;
228
+ }
229
+ return undefined;
230
+ }
231
+ async claim(taskId, worker) {
232
+ const task = await this.get(taskId);
233
+ if (!task)
234
+ return false;
235
+ // Check if already assigned
236
+ if (task.assignment) {
237
+ return false;
238
+ }
239
+ // Update task with assignment
240
+ await this.update(taskId, {
241
+ status: 'assigned',
242
+ assignment: {
243
+ worker,
244
+ assignedAt: new Date(),
245
+ },
246
+ event: {
247
+ type: 'assigned',
248
+ actor: worker,
249
+ message: `Assigned to ${worker.name || worker.id}`,
250
+ },
251
+ });
252
+ return true;
253
+ }
254
+ async complete(taskId, output) {
255
+ const task = await this.get(taskId);
256
+ if (!task)
257
+ return;
258
+ const event = {
259
+ type: 'completed',
260
+ message: 'Task completed successfully',
261
+ data: { output },
262
+ };
263
+ if (task.assignment?.worker !== undefined) {
264
+ event.actor = task.assignment.worker;
265
+ }
266
+ await this.update(taskId, {
267
+ status: 'completed',
268
+ event,
269
+ });
270
+ // Update task output separately since it's not in UpdateTaskOptions
271
+ const updated = await this.get(taskId);
272
+ if (updated) {
273
+ this.tasks.set(taskId, {
274
+ ...updated,
275
+ output: {
276
+ value: output,
277
+ producedAt: new Date(),
278
+ },
279
+ completedAt: new Date(),
280
+ });
281
+ }
282
+ // Satisfy dependencies in other tasks
283
+ for (const [, otherTask] of this.tasks) {
284
+ if (otherTask.dependencies) {
285
+ const hasDep = otherTask.dependencies.find((d) => d.taskId === taskId && d.type === 'blocked_by');
286
+ if (hasDep) {
287
+ const updatedDeps = otherTask.dependencies.map((d) => d.taskId === taskId ? { ...d, satisfied: true } : d);
288
+ this.tasks.set(otherTask.id, {
289
+ ...otherTask,
290
+ dependencies: updatedDeps,
291
+ });
292
+ // Unblock if all dependencies satisfied
293
+ const allSatisfied = updatedDeps
294
+ .filter((d) => d.type === 'blocked_by')
295
+ .every((d) => d.satisfied);
296
+ if (allSatisfied && otherTask.status === 'blocked') {
297
+ await this.update(otherTask.id, {
298
+ status: 'queued',
299
+ event: {
300
+ type: 'unblocked',
301
+ message: 'All dependencies satisfied',
302
+ },
303
+ });
304
+ }
305
+ }
306
+ }
307
+ }
308
+ }
309
+ async fail(taskId, error) {
310
+ const task = await this.get(taskId);
311
+ if (!task)
312
+ return;
313
+ const event = {
314
+ type: 'failed',
315
+ message: `Task failed: ${error}`,
316
+ data: { error },
317
+ };
318
+ if (task.assignment?.worker !== undefined) {
319
+ event.actor = task.assignment.worker;
320
+ }
321
+ await this.update(taskId, {
322
+ status: 'failed',
323
+ event,
324
+ });
325
+ }
326
+ async stats() {
327
+ const tasks = Array.from(this.tasks.values());
328
+ const byStatus = {
329
+ pending: 0,
330
+ queued: 0,
331
+ assigned: 0,
332
+ in_progress: 0,
333
+ blocked: 0,
334
+ review: 0,
335
+ completed: 0,
336
+ failed: 0,
337
+ cancelled: 0,
338
+ };
339
+ const byPriority = {
340
+ low: 0,
341
+ normal: 0,
342
+ high: 0,
343
+ urgent: 0,
344
+ critical: 0,
345
+ };
346
+ let totalWaitTime = 0;
347
+ let waitTimeCount = 0;
348
+ let totalCompletionTime = 0;
349
+ let completionTimeCount = 0;
350
+ for (const task of tasks) {
351
+ byStatus[task.status]++;
352
+ byPriority[task.priority]++;
353
+ if (task.startedAt && task.createdAt) {
354
+ totalWaitTime += task.startedAt.getTime() - task.createdAt.getTime();
355
+ waitTimeCount++;
356
+ }
357
+ if (task.completedAt && task.startedAt) {
358
+ totalCompletionTime += task.completedAt.getTime() - task.startedAt.getTime();
359
+ completionTimeCount++;
360
+ }
361
+ }
362
+ const stats = {
363
+ total: tasks.length,
364
+ byStatus,
365
+ byPriority,
366
+ };
367
+ if (waitTimeCount > 0) {
368
+ stats.avgWaitTime = totalWaitTime / waitTimeCount;
369
+ }
370
+ if (completionTimeCount > 0) {
371
+ stats.avgCompletionTime = totalCompletionTime / completionTimeCount;
372
+ }
373
+ return stats;
374
+ }
375
+ }
376
+ /**
377
+ * Global task queue instance
378
+ */
379
+ export const taskQueue = new InMemoryTaskQueue();
380
+ /**
381
+ * Create a new task queue instance
382
+ */
383
+ export function createTaskQueue(options) {
384
+ return new InMemoryTaskQueue(options);
385
+ }
386
+ //# sourceMappingURL=queue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queue.js","sourceRoot":"","sources":["../src/queue.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAgBH;;GAEG;AACH,MAAM,aAAa,GAAiC;IAClD,QAAQ,EAAE,CAAC;IACX,MAAM,EAAE,CAAC;IACT,IAAI,EAAE,CAAC;IACP,MAAM,EAAE,CAAC;IACT,GAAG,EAAE,CAAC;CACP,CAAA;AAED;;GAEG;AACH,MAAM,iBAAiB;IACb,KAAK,GAAyB,IAAI,GAAG,EAAE,CAAA;IACvC,OAAO,CAAkB;IAEjC,YAAY,UAA4B,EAAE;QACxC,IAAI,CAAC,OAAO,GAAG;YACb,IAAI,EAAE,SAAS;YACf,WAAW,EAAE,EAAE;YACf,cAAc,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE,YAAY;YAC3C,UAAU,EAAE,KAAK;YACjB,GAAG,OAAO;SACX,CAAA;IACH,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,IAAa;QACrB,oEAAoE;QACpE,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAA;QACvC,oBAAoB;QACpB,MAAM,KAAK,GAAc;YACvB,EAAE,EAAE,OAAO,IAAI,CAAC,GAAG,EAAE,EAAE;YACvB,IAAI,EAAE,SAAS;YACf,SAAS,EAAE,IAAI,IAAI,EAAE;YACrB,OAAO,EAAE,iBAAiB,IAAI,EAAE,IAAI,IAAI,IAAI,CAAC,EAAE,EAAE;SAClD,CAAA;QAED,MAAM,aAAa,GAAG;YACpB,GAAG,IAAI;YACP,MAAM,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC;SACxC,CAAA;QAED,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,aAAa,CAAC,CAAA;IACxC,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,EAAU;QAClB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IAC3B,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,EAAU,EAAE,OAA0B;QACjD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QAC/B,IAAI,CAAC,IAAI;YAAE,OAAO,SAAS,CAAA;QAE3B,MAAM,MAAM,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,CAAA;QAEvC,wBAAwB;QACxB,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,MAAM,CAAC,IAAI,CAAC;gBACV,GAAG,OAAO,CAAC,KAAK;gBAChB,EAAE,EAAE,OAAO,IAAI,CAAC,GAAG,EAAE,EAAE;gBACvB,SAAS,EAAE,IAAI,IAAI,EAAE;aACtB,CAAC,CAAA;QACJ,CAAC;QAED,0BAA0B;QAC1B,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC;YACrD,MAAM,CAAC,IAAI,CAAC;gBACV,EAAE,EAAE,OAAO,IAAI,CAAC,GAAG,EAAE,SAAS;gBAC9B,IAAI,EACF,OAAO,CAAC,MAAM,KAAK,WAAW;oBAC5B,CAAC,CAAC,WAAW;oBACb,CAAC,CAAC,OAAO,CAAC,MAAM,KAAK,QAAQ;wBAC7B,CAAC,CAAC,QAAQ;wBACV,CAAC,CAAC,OAAO,CAAC,MAAM,KAAK,aAAa;4BAClC,CAAC,CAAC,SAAS;4BACX,CAAC,CAAC,OAAO,CAAC,MAAM,KAAK,SAAS;gCAC9B,CAAC,CAAC,SAAS;gCACX,CAAC,CAAC,UAAU;gBAChB,SAAS,EAAE,IAAI,IAAI,EAAE;gBACrB,OAAO,EAAE,uBAAuB,IAAI,CAAC,MAAM,OAAO,OAAO,CAAC,MAAM,EAAE;aACnE,CAAC,CAAA;QACJ,CAAC;QAED,oCAAoC;QACpC,IAAI,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAA;QAClC,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YACrB,cAAc,GAAG;gBACf,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,OAAO,IAAI,CAAC;gBAChE,SAAS,EAAE,IAAI,IAAI,EAAE;aACtB,CAAA;YACD,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAA;YACzD,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;gBACvB,cAAc,CAAC,IAAI,GAAG,IAAI,CAAA;YAC5B,CAAC;YACD,MAAM,UAAU,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,IAAI,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAA;YAC3E,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;gBAC7B,cAAc,CAAC,UAAU,GAAG,UAAU,CAAA;YACxC,CAAC;YACD,MAAM,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,WAAW,IAAI,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAA;YAC9E,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;gBAC9B,cAAc,CAAC,WAAW,GAAG,WAAW,CAAA;YAC1C,CAAC;YACD,MAAM,OAAO,GACX,OAAO,CAAC,QAAQ,CAAC,sBAAsB,IAAI,IAAI,CAAC,QAAQ,EAAE,sBAAsB,CAAA;YAClF,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;gBAC1B,cAAc,CAAC,sBAAsB,GAAG,OAAO,CAAA;YACjD,CAAC;QACH,CAAC;QAED,MAAM,OAAO,GAAY;YACvB,GAAG,IAAI;YACP,GAAG,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;YACjD,GAAG,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC;YACvD,GAAG,CAAC,OAAO,CAAC,UAAU,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC;YAC7D,GAAG,CAAC,cAAc,IAAI,EAAE,QAAQ,EAAE,cAAc,EAAE,CAAC;YACnD,GAAG,CAAC,OAAO,CAAC,QAAQ,IAAI;gBACtB,QAAQ,EAAE,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,OAAO,CAAC,QAAQ,EAAE;aACpD,CAAC;YACF,MAAM;SACP,CAAA;QAED,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,CAAA;QAC3B,OAAO,OAAO,CAAA;IAChB,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,EAAU;QACrB,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;IAC9B,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,OAAkB;QAC5B,IAAI,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAA;QAE7C,mBAAmB;QACnB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;YAClF,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAA;QAC9D,CAAC;QAED,qBAAqB;QACrB,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YACrB,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;YAC1F,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAA;QAClE,CAAC;QAED,4EAA4E;QAC5E,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;YACzB,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,IAAI,KAAK,OAAO,CAAC,YAAY,CAAC,CAAA;QACxF,CAAC;QAED,4BAA4B;QAC5B,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;YACvB,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,MAAM,CAAC,EAAE,KAAK,OAAO,CAAC,UAAU,CAAC,CAAA;QACjF,CAAC;QAED,iBAAiB;QACjB,IAAI,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5C,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,OAAO,CAAC,IAAK,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,IAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;QAC/F,CAAC;QAED,oBAAoB;QACpB,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;YACtB,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,OAAO,CAAC,SAAS,CAAC,CAAA;QACpE,CAAC;QAED,mBAAmB;QACnB,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YACrB,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAA;QAClE,CAAC;QAED,gEAAgE;QAChE,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,CAAA;YAC3C,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;gBAC7B,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,QAAQ,CAAA;gBACjC,IAAI,CAAC,IAAI;oBAAE,OAAO,KAAK,CAAA;gBACvB,OAAO,CACL,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC;oBACxC,IAAI,CAAC,WAAW,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CACjD,CAAA;YACH,CAAC,CAAC,CAAA;QACJ,CAAC;QAED,OAAO;QACP,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;gBACpB,IAAI,IAAY,CAAA;gBAChB,IAAI,IAAY,CAAA;gBAEhB,QAAQ,OAAO,CAAC,MAAM,EAAE,CAAC;oBACvB,KAAK,WAAW;wBACd,IAAI,GAAG,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,CAAA;wBAC5B,IAAI,GAAG,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,CAAA;wBAC5B,MAAK;oBACP,KAAK,UAAU;wBACb,IAAI,GAAG,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAA;wBAChC,IAAI,GAAG,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAA;wBAChC,MAAK;oBACP,KAAK,UAAU;wBACb,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,QAAQ,CAAA;wBACxC,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,QAAQ,CAAA;wBACxC,MAAK;oBACP,KAAK,QAAQ;wBACX,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;wBAC7B,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;wBAC7B,MAAK;oBACP;wBACE,OAAO,CAAC,CAAA;gBACZ,CAAC;gBAED,OAAO,OAAO,CAAC,SAAS,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAA;YACjE,CAAC,CAAC,CAAA;QACJ,CAAC;QAED,aAAa;QACb,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC,CAAA;QAClC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,MAAM,CAAA;QAC7C,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC,CAAA;QAE/C,OAAO,OAAO,CAAA;IAChB,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,MAAiB;QACtC,wDAAwD;QACxD,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC;YACnC,MAAM,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC;YAC7B,MAAM,EAAE,UAAU;YAClB,SAAS,EAAE,MAAM;SAClB,CAAC,CAAA;QAEF,wCAAwC;QACxC,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;YAC/B,kCAAkC;YAClC,IACE,IAAI,CAAC,cAAc;gBACnB,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC;gBAC1C,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,EACpC,CAAC;gBACD,SAAQ;YACV,CAAC;YAED,0EAA0E;YAE1E,uCAAuC;YACvC,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,IAAI,EAAE,EAAE,CAAC;gBACxD,SAAQ;YACV,CAAC;YAED,qBAAqB;YACrB,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACtD,MAAM,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAC5C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,IAAI,CAAC,CAAC,CAAC,SAAS,CAC/C,CAAA;gBACD,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC7B,SAAQ;gBACV,CAAC;YACH,CAAC;YAED,OAAO,IAAI,CAAA;QACb,CAAC;QAED,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,MAAc,EAAE,MAAiB;QAC3C,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QACnC,IAAI,CAAC,IAAI;YAAE,OAAO,KAAK,CAAA;QAEvB,4BAA4B;QAC5B,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,OAAO,KAAK,CAAA;QACd,CAAC;QAED,8BAA8B;QAC9B,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;YACxB,MAAM,EAAE,UAAU;YAClB,UAAU,EAAE;gBACV,MAAM;gBACN,UAAU,EAAE,IAAI,IAAI,EAAE;aACvB;YACD,KAAK,EAAE;gBACL,IAAI,EAAE,UAAU;gBAChB,KAAK,EAAE,MAAM;gBACb,OAAO,EAAE,eAAe,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,EAAE,EAAE;aACnD;SACF,CAAC,CAAA;QAEF,OAAO,IAAI,CAAA;IACb,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,MAAc,EAAE,MAAe;QAC5C,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QACnC,IAAI,CAAC,IAAI;YAAE,OAAM;QAEjB,MAAM,KAAK,GAAwC;YACjD,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,6BAA6B;YACtC,IAAI,EAAE,EAAE,MAAM,EAAE;SACjB,CAAA;QACD,IAAI,IAAI,CAAC,UAAU,EAAE,MAAM,KAAK,SAAS,EAAE,CAAC;YAC1C,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAA;QACtC,CAAC;QACD,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;YACxB,MAAM,EAAE,WAAW;YACnB,KAAK;SACN,CAAC,CAAA;QAEF,oEAAoE;QACpE,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QACtC,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE;gBACrB,GAAG,OAAO;gBACV,MAAM,EAAE;oBACN,KAAK,EAAE,MAAM;oBACb,UAAU,EAAE,IAAI,IAAI,EAAE;iBACvB;gBACD,WAAW,EAAE,IAAI,IAAI,EAAE;aACxB,CAAC,CAAA;QACJ,CAAC;QAED,sCAAsC;QACtC,KAAK,MAAM,CAAC,EAAE,SAAS,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACvC,IAAI,SAAS,CAAC,YAAY,EAAE,CAAC;gBAC3B,MAAM,MAAM,GAAG,SAAS,CAAC,YAAY,CAAC,IAAI,CACxC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,IAAI,CAAC,CAAC,IAAI,KAAK,YAAY,CACtD,CAAA;gBACD,IAAI,MAAM,EAAE,CAAC;oBACX,MAAM,WAAW,GAAG,SAAS,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACnD,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CACpD,CAAA;oBACD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,EAAE;wBAC3B,GAAG,SAAS;wBACZ,YAAY,EAAE,WAAW;qBAC1B,CAAC,CAAA;oBAEF,wCAAwC;oBACxC,MAAM,YAAY,GAAG,WAAW;yBAC7B,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC;yBACtC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;oBAC5B,IAAI,YAAY,IAAI,SAAS,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;wBACnD,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,EAAE;4BAC9B,MAAM,EAAE,QAAQ;4BAChB,KAAK,EAAE;gCACL,IAAI,EAAE,WAAW;gCACjB,OAAO,EAAE,4BAA4B;6BACtC;yBACF,CAAC,CAAA;oBACJ,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,MAAc,EAAE,KAAa;QACtC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QACnC,IAAI,CAAC,IAAI;YAAE,OAAM;QAEjB,MAAM,KAAK,GAAwC;YACjD,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,gBAAgB,KAAK,EAAE;YAChC,IAAI,EAAE,EAAE,KAAK,EAAE;SAChB,CAAA;QACD,IAAI,IAAI,CAAC,UAAU,EAAE,MAAM,KAAK,SAAS,EAAE,CAAC;YAC1C,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAA;QACtC,CAAC;QACD,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;YACxB,MAAM,EAAE,QAAQ;YAChB,KAAK;SACN,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,KAAK;QACT,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAA;QAE7C,MAAM,QAAQ,GAA+B;YAC3C,OAAO,EAAE,CAAC;YACV,MAAM,EAAE,CAAC;YACT,QAAQ,EAAE,CAAC;YACX,WAAW,EAAE,CAAC;YACd,OAAO,EAAE,CAAC;YACV,MAAM,EAAE,CAAC;YACT,SAAS,EAAE,CAAC;YACZ,MAAM,EAAE,CAAC;YACT,SAAS,EAAE,CAAC;SACb,CAAA;QAED,MAAM,UAAU,GAAiC;YAC/C,GAAG,EAAE,CAAC;YACN,MAAM,EAAE,CAAC;YACT,IAAI,EAAE,CAAC;YACP,MAAM,EAAE,CAAC;YACT,QAAQ,EAAE,CAAC;SACZ,CAAA;QAED,IAAI,aAAa,GAAG,CAAC,CAAA;QACrB,IAAI,aAAa,GAAG,CAAC,CAAA;QACrB,IAAI,mBAAmB,GAAG,CAAC,CAAA;QAC3B,IAAI,mBAAmB,GAAG,CAAC,CAAA;QAE3B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAA;YACvB,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAA;YAE3B,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;gBACrC,aAAa,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAA;gBACpE,aAAa,EAAE,CAAA;YACjB,CAAC;YAED,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;gBACvC,mBAAmB,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAA;gBAC5E,mBAAmB,EAAE,CAAA;YACvB,CAAC;QACH,CAAC;QAED,MAAM,KAAK,GAAmB;YAC5B,KAAK,EAAE,KAAK,CAAC,MAAM;YACnB,QAAQ;YACR,UAAU;SACX,CAAA;QACD,IAAI,aAAa,GAAG,CAAC,EAAE,CAAC;YACtB,KAAK,CAAC,WAAW,GAAG,aAAa,GAAG,aAAa,CAAA;QACnD,CAAC;QACD,IAAI,mBAAmB,GAAG,CAAC,EAAE,CAAC;YAC5B,KAAK,CAAC,iBAAiB,GAAG,mBAAmB,GAAG,mBAAmB,CAAA;QACrE,CAAC;QACD,OAAO,KAAK,CAAA;IACd,CAAC;CACF;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,SAAS,GAAc,IAAI,iBAAiB,EAAE,CAAA;AAE3D;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,OAA0B;IACxD,OAAO,IAAI,iBAAiB,CAAC,OAAO,CAAC,CAAA;AACvC,CAAC"}
package/dist/task.d.ts ADDED
@@ -0,0 +1,69 @@
1
+ /**
2
+ * Task - Core task creation and management functions
3
+ *
4
+ * @packageDocumentation
5
+ */
6
+ import type { Task, AnyTask, CreateTaskOptions, WorkerRef, TaskResult } from './types.js';
7
+ /**
8
+ * Create a new task from a function definition
9
+ *
10
+ * @example
11
+ * ```ts
12
+ * const task = await createTask({
13
+ * tool: {
14
+ * type: 'generative',
15
+ * name: 'summarize',
16
+ * args: { text: 'The text to summarize' },
17
+ * output: 'string',
18
+ * promptTemplate: 'Summarize: {{text}}',
19
+ * },
20
+ * input: { text: 'Long article content...' },
21
+ * priority: 'high',
22
+ * })
23
+ * ```
24
+ */
25
+ export declare function createTask<TInput = unknown, TOutput = unknown>(options: CreateTaskOptions<TInput, TOutput>): Promise<Task<TInput, TOutput>>;
26
+ /**
27
+ * Get a task by ID
28
+ */
29
+ export declare function getTask(id: string): Promise<AnyTask | undefined>;
30
+ /**
31
+ * Start working on a task
32
+ */
33
+ export declare function startTask(taskId: string, worker: WorkerRef): Promise<AnyTask | undefined>;
34
+ /**
35
+ * Update task progress
36
+ */
37
+ export declare function updateProgress(taskId: string, percent: number, step?: string): Promise<AnyTask | undefined>;
38
+ /**
39
+ * Complete a task with output
40
+ */
41
+ export declare function completeTask<TOutput>(taskId: string, output: TOutput): Promise<TaskResult<TOutput>>;
42
+ /**
43
+ * Fail a task with error
44
+ */
45
+ export declare function failTask(taskId: string, error: string | Error): Promise<TaskResult>;
46
+ /**
47
+ * Cancel a task
48
+ */
49
+ export declare function cancelTask(taskId: string, reason?: string): Promise<boolean>;
50
+ /**
51
+ * Add a comment to a task
52
+ */
53
+ export declare function addComment(taskId: string, comment: string, author?: WorkerRef): Promise<AnyTask | undefined>;
54
+ /**
55
+ * Create a subtask
56
+ */
57
+ export declare function createSubtask<TInput = unknown, TOutput = unknown>(parentTaskId: string, options: Omit<CreateTaskOptions<TInput, TOutput>, 'parentId'>): Promise<Task<TInput, TOutput>>;
58
+ /**
59
+ * Get subtasks of a task
60
+ */
61
+ export declare function getSubtasks(parentTaskId: string): Promise<AnyTask[]>;
62
+ /**
63
+ * Wait for a task to complete
64
+ */
65
+ export declare function waitForTask(taskId: string, options?: {
66
+ timeout?: number;
67
+ pollInterval?: number;
68
+ }): Promise<TaskResult>;
69
+ //# sourceMappingURL=task.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task.d.ts","sourceRoot":"","sources":["../src/task.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,IAAI,EACJ,OAAO,EACP,iBAAiB,EACjB,SAAS,EACT,UAAU,EAGX,MAAM,YAAY,CAAA;AAUnB;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,UAAU,CAAC,MAAM,GAAG,OAAO,EAAE,OAAO,GAAG,OAAO,EAClE,OAAO,EAAE,iBAAiB,CAAC,MAAM,EAAE,OAAO,CAAC,GAC1C,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAqHhC;AAED;;GAEG;AACH,wBAAsB,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC,CAEtE;AAED;;GAEG;AACH,wBAAsB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC,CAmB/F;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC,CAgB9B;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,OAAO,EACxC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,OAAO,GACd,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CA8B9B;AAED;;GAEG;AACH,wBAAsB,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,KAAK,GAAG,OAAO,CAAC,UAAU,CAAC,CAoCzF;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAalF;AAED;;GAEG;AACH,wBAAsB,UAAU,CAC9B,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,SAAS,GACjB,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC,CAS9B;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,MAAM,GAAG,OAAO,EAAE,OAAO,GAAG,OAAO,EACrE,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,CAAC,GAC5D,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAKhC;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAE1E;AAED;;GAEG;AACH,wBAAsB,WAAW,CAC/B,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,GACpD,OAAO,CAAC,UAAU,CAAC,CAqFrB"}