universal-agent-memory 0.1.5 → 0.2.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 (67) hide show
  1. package/dist/bin/cli.js +207 -0
  2. package/dist/bin/cli.js.map +1 -1
  3. package/dist/cli/agent.d.ts +20 -0
  4. package/dist/cli/agent.d.ts.map +1 -0
  5. package/dist/cli/agent.js +388 -0
  6. package/dist/cli/agent.js.map +1 -0
  7. package/dist/cli/coord.d.ts +7 -0
  8. package/dist/cli/coord.d.ts.map +1 -0
  9. package/dist/cli/coord.js +145 -0
  10. package/dist/cli/coord.js.map +1 -0
  11. package/dist/cli/deploy.d.ts +19 -0
  12. package/dist/cli/deploy.d.ts.map +1 -0
  13. package/dist/cli/deploy.js +267 -0
  14. package/dist/cli/deploy.js.map +1 -0
  15. package/dist/cli/task.d.ts +33 -0
  16. package/dist/cli/task.d.ts.map +1 -0
  17. package/dist/cli/task.js +570 -0
  18. package/dist/cli/task.js.map +1 -0
  19. package/dist/coordination/database.d.ts +13 -0
  20. package/dist/coordination/database.d.ts.map +1 -0
  21. package/dist/coordination/database.js +131 -0
  22. package/dist/coordination/database.js.map +1 -0
  23. package/dist/coordination/deploy-batcher.d.ts +38 -0
  24. package/dist/coordination/deploy-batcher.d.ts.map +1 -0
  25. package/dist/coordination/deploy-batcher.js +401 -0
  26. package/dist/coordination/deploy-batcher.js.map +1 -0
  27. package/dist/coordination/index.d.ts +4 -0
  28. package/dist/coordination/index.d.ts.map +1 -0
  29. package/dist/coordination/index.js +4 -0
  30. package/dist/coordination/index.js.map +1 -0
  31. package/dist/coordination/service.d.ts +79 -0
  32. package/dist/coordination/service.d.ts.map +1 -0
  33. package/dist/coordination/service.js +591 -0
  34. package/dist/coordination/service.js.map +1 -0
  35. package/dist/index.d.ts +2 -0
  36. package/dist/index.d.ts.map +1 -1
  37. package/dist/index.js +2 -0
  38. package/dist/index.js.map +1 -1
  39. package/dist/tasks/coordination.d.ts +74 -0
  40. package/dist/tasks/coordination.d.ts.map +1 -0
  41. package/dist/tasks/coordination.js +237 -0
  42. package/dist/tasks/coordination.js.map +1 -0
  43. package/dist/tasks/database.d.ts +14 -0
  44. package/dist/tasks/database.d.ts.map +1 -0
  45. package/dist/tasks/database.js +128 -0
  46. package/dist/tasks/database.js.map +1 -0
  47. package/dist/tasks/index.d.ts +5 -0
  48. package/dist/tasks/index.d.ts.map +1 -0
  49. package/dist/tasks/index.js +5 -0
  50. package/dist/tasks/index.js.map +1 -0
  51. package/dist/tasks/service.d.ts +39 -0
  52. package/dist/tasks/service.d.ts.map +1 -0
  53. package/dist/tasks/service.js +582 -0
  54. package/dist/tasks/service.js.map +1 -0
  55. package/dist/tasks/types.d.ts +224 -0
  56. package/dist/tasks/types.d.ts.map +1 -0
  57. package/dist/tasks/types.js +64 -0
  58. package/dist/tasks/types.js.map +1 -0
  59. package/dist/types/coordination.d.ts +240 -0
  60. package/dist/types/coordination.d.ts.map +1 -0
  61. package/dist/types/coordination.js +43 -0
  62. package/dist/types/coordination.js.map +1 -0
  63. package/dist/types/index.d.ts +1 -0
  64. package/dist/types/index.d.ts.map +1 -1
  65. package/dist/types/index.js +1 -0
  66. package/dist/types/index.js.map +1 -1
  67. package/package.json +1 -1
@@ -0,0 +1,570 @@
1
+ import chalk from 'chalk';
2
+ import ora from 'ora';
3
+ import { TaskService } from '../tasks/service.js';
4
+ import { TaskCoordinator } from '../tasks/coordination.js';
5
+ import { CoordinationService } from '../coordination/service.js';
6
+ import { STATUS_ICONS, TYPE_ICONS, PRIORITY_LABELS } from '../tasks/types.js';
7
+ export async function taskCommand(action, options = {}) {
8
+ const service = new TaskService();
9
+ switch (action) {
10
+ case 'create':
11
+ await createTask(service, options);
12
+ break;
13
+ case 'list':
14
+ await listTasks(service, options);
15
+ break;
16
+ case 'show':
17
+ await showTask(service, options);
18
+ break;
19
+ case 'update':
20
+ await updateTask(service, options);
21
+ break;
22
+ case 'close':
23
+ await closeTask(service, options);
24
+ break;
25
+ case 'delete':
26
+ await deleteTask(service, options);
27
+ break;
28
+ case 'ready':
29
+ await showReady(service, options);
30
+ break;
31
+ case 'blocked':
32
+ await showBlocked(service, options);
33
+ break;
34
+ case 'dep':
35
+ await addDependency(service, options);
36
+ break;
37
+ case 'undep':
38
+ await removeDependency(service, options);
39
+ break;
40
+ case 'claim':
41
+ await claimTask(service, options);
42
+ break;
43
+ case 'release':
44
+ await releaseTask(service, options);
45
+ break;
46
+ case 'stats':
47
+ await showStats(service, options);
48
+ break;
49
+ case 'sync':
50
+ await syncTasks(service, options);
51
+ break;
52
+ case 'compact':
53
+ await compactTasks(service, options);
54
+ break;
55
+ }
56
+ }
57
+ async function createTask(service, options) {
58
+ if (!options.title) {
59
+ console.error(chalk.red('Error: --title is required'));
60
+ process.exit(1);
61
+ }
62
+ const spinner = ora('Creating task...').start();
63
+ try {
64
+ const input = {
65
+ title: options.title,
66
+ description: options.description,
67
+ type: options.type || 'task',
68
+ priority: options.priority ? parseInt(options.priority, 10) : 2,
69
+ labels: options.labels ? options.labels.split(',').map(l => l.trim()) : [],
70
+ parentId: options.parent,
71
+ notes: options.notes,
72
+ };
73
+ const task = service.create(input);
74
+ spinner.succeed(`Task created: ${task.id}`);
75
+ console.log('');
76
+ console.log(` ${TYPE_ICONS[task.type]} ${chalk.bold(task.title)}`);
77
+ console.log(` ID: ${chalk.cyan(task.id)}`);
78
+ console.log(` Type: ${task.type}`);
79
+ console.log(` Priority: ${PRIORITY_LABELS[task.priority]}`);
80
+ if (task.labels.length > 0) {
81
+ console.log(` Labels: ${task.labels.join(', ')}`);
82
+ }
83
+ if (task.parentId) {
84
+ console.log(` Parent: ${task.parentId}`);
85
+ }
86
+ if (options.json) {
87
+ console.log(JSON.stringify(task, null, 2));
88
+ }
89
+ }
90
+ catch (error) {
91
+ spinner.fail('Failed to create task');
92
+ console.error(chalk.red(error instanceof Error ? error.message : String(error)));
93
+ process.exit(1);
94
+ }
95
+ }
96
+ async function listTasks(service, options) {
97
+ const filter = {};
98
+ if (options.filterStatus) {
99
+ filter.status = options.filterStatus.split(',');
100
+ }
101
+ if (options.filterType) {
102
+ filter.type = options.filterType.split(',');
103
+ }
104
+ if (options.filterPriority) {
105
+ filter.priority = options.filterPriority.split(',').map(p => parseInt(p, 10));
106
+ }
107
+ if (options.filterAssignee) {
108
+ filter.assignee = options.filterAssignee;
109
+ }
110
+ if (options.filterLabels) {
111
+ filter.labels = options.filterLabels.split(',').map(l => l.trim());
112
+ }
113
+ if (options.search) {
114
+ filter.search = options.search;
115
+ }
116
+ if (options.showBlocked) {
117
+ filter.isBlocked = true;
118
+ }
119
+ if (options.showReady) {
120
+ filter.isReady = true;
121
+ }
122
+ const tasks = service.list(filter);
123
+ if (options.json) {
124
+ console.log(JSON.stringify(tasks, null, 2));
125
+ return;
126
+ }
127
+ if (tasks.length === 0) {
128
+ console.log(chalk.dim('No tasks found'));
129
+ return;
130
+ }
131
+ console.log(chalk.bold(`\nTasks (${tasks.length})\n`));
132
+ for (const task of tasks) {
133
+ const statusIcon = STATUS_ICONS[task.status];
134
+ const typeIcon = TYPE_ICONS[task.type];
135
+ const priorityColor = getPriorityColor(task.priority);
136
+ console.log(` ${statusIcon} ${priorityColor(`P${task.priority}`)} ${typeIcon} ` +
137
+ `${chalk.cyan(task.id)} ${task.title}`);
138
+ if (options.verbose) {
139
+ if (task.assignee) {
140
+ console.log(chalk.dim(` Assignee: ${task.assignee}`));
141
+ }
142
+ if (task.labels.length > 0) {
143
+ console.log(chalk.dim(` Labels: ${task.labels.join(', ')}`));
144
+ }
145
+ }
146
+ }
147
+ console.log('');
148
+ }
149
+ async function showTask(service, options) {
150
+ if (!options.id) {
151
+ console.error(chalk.red('Error: --id is required'));
152
+ process.exit(1);
153
+ }
154
+ const task = service.getWithRelations(options.id);
155
+ if (!task) {
156
+ console.error(chalk.red(`Task not found: ${options.id}`));
157
+ process.exit(1);
158
+ }
159
+ if (options.json) {
160
+ console.log(JSON.stringify(task, null, 2));
161
+ return;
162
+ }
163
+ const statusIcon = STATUS_ICONS[task.status];
164
+ const typeIcon = TYPE_ICONS[task.type];
165
+ const priorityColor = getPriorityColor(task.priority);
166
+ console.log('');
167
+ console.log(`${statusIcon} ${priorityColor(`P${task.priority}`)} ${typeIcon} ${chalk.bold(task.title)}`);
168
+ console.log(chalk.dim('─'.repeat(60)));
169
+ console.log(`ID: ${chalk.cyan(task.id)}`);
170
+ console.log(`Status: ${task.status}${task.isBlocked ? chalk.red(' (BLOCKED)') : ''}${task.isReady ? chalk.green(' (READY)') : ''}`);
171
+ console.log(`Type: ${task.type}`);
172
+ console.log(`Priority: ${PRIORITY_LABELS[task.priority]}`);
173
+ if (task.assignee) {
174
+ console.log(`Assignee: ${task.assignee}`);
175
+ }
176
+ if (task.worktreeBranch) {
177
+ console.log(`Worktree: ${task.worktreeBranch}`);
178
+ }
179
+ if (task.labels.length > 0) {
180
+ console.log(`Labels: ${task.labels.join(', ')}`);
181
+ }
182
+ if (task.parentId) {
183
+ console.log(`Parent: ${task.parentId}`);
184
+ }
185
+ if (task.description) {
186
+ console.log('');
187
+ console.log(chalk.bold('Description:'));
188
+ console.log(task.description);
189
+ }
190
+ if (task.notes) {
191
+ console.log('');
192
+ console.log(chalk.bold('Notes:'));
193
+ console.log(task.notes);
194
+ }
195
+ // Dependencies
196
+ if (task.blockedBy.length > 0) {
197
+ console.log('');
198
+ console.log(chalk.bold('Blocked by:'));
199
+ for (const blockerId of task.blockedBy) {
200
+ const blocker = service.get(blockerId);
201
+ if (blocker) {
202
+ const blockerStatus = STATUS_ICONS[blocker.status];
203
+ const done = blocker.status === 'done' || blocker.status === 'wont_do';
204
+ console.log(` ${blockerStatus} ${done ? chalk.dim(blockerId) : chalk.red(blockerId)}: ${blocker.title}`);
205
+ }
206
+ }
207
+ }
208
+ if (task.blocks.length > 0) {
209
+ console.log('');
210
+ console.log(chalk.bold('Blocks:'));
211
+ for (const blocksId of task.blocks) {
212
+ const blocked = service.get(blocksId);
213
+ if (blocked) {
214
+ console.log(` ${chalk.yellow(blocksId)}: ${blocked.title}`);
215
+ }
216
+ }
217
+ }
218
+ if (task.children.length > 0) {
219
+ console.log('');
220
+ console.log(chalk.bold('Children:'));
221
+ for (const childId of task.children) {
222
+ const child = service.get(childId);
223
+ if (child) {
224
+ const childStatus = STATUS_ICONS[child.status];
225
+ console.log(` ${childStatus} ${chalk.cyan(childId)}: ${child.title}`);
226
+ }
227
+ }
228
+ }
229
+ // Timestamps
230
+ console.log('');
231
+ console.log(chalk.dim(`Created: ${task.createdAt}`));
232
+ console.log(chalk.dim(`Updated: ${task.updatedAt}`));
233
+ if (task.closedAt) {
234
+ console.log(chalk.dim(`Closed: ${task.closedAt}`));
235
+ if (task.closedReason) {
236
+ console.log(chalk.dim(`Reason: ${task.closedReason}`));
237
+ }
238
+ }
239
+ // History
240
+ if (options.verbose) {
241
+ const history = service.getHistory(task.id);
242
+ if (history.length > 0) {
243
+ console.log('');
244
+ console.log(chalk.bold('History:'));
245
+ for (const entry of history.slice(0, 10)) {
246
+ console.log(chalk.dim(` ${entry.changedAt}: ${entry.field} changed`));
247
+ }
248
+ }
249
+ }
250
+ console.log('');
251
+ }
252
+ async function updateTask(service, options) {
253
+ if (!options.id) {
254
+ console.error(chalk.red('Error: --id is required'));
255
+ process.exit(1);
256
+ }
257
+ const input = {};
258
+ if (options.title)
259
+ input.title = options.title;
260
+ if (options.description)
261
+ input.description = options.description;
262
+ if (options.type)
263
+ input.type = options.type;
264
+ if (options.status)
265
+ input.status = options.status;
266
+ if (options.priority)
267
+ input.priority = parseInt(options.priority, 10);
268
+ if (options.assignee)
269
+ input.assignee = options.assignee === 'none' ? undefined : options.assignee;
270
+ if (options.worktree)
271
+ input.worktreeBranch = options.worktree === 'none' ? undefined : options.worktree;
272
+ if (options.labels)
273
+ input.labels = options.labels.split(',').map(l => l.trim());
274
+ if (options.notes)
275
+ input.notes = options.notes;
276
+ if (Object.keys(input).length === 0) {
277
+ console.error(chalk.red('Error: No updates specified'));
278
+ process.exit(1);
279
+ }
280
+ const spinner = ora('Updating task...').start();
281
+ try {
282
+ const task = service.update(options.id, input);
283
+ if (!task) {
284
+ spinner.fail(`Task not found: ${options.id}`);
285
+ process.exit(1);
286
+ }
287
+ spinner.succeed(`Task updated: ${task.id}`);
288
+ console.log(` ${STATUS_ICONS[task.status]} ${task.title}`);
289
+ }
290
+ catch (error) {
291
+ spinner.fail('Failed to update task');
292
+ console.error(chalk.red(error instanceof Error ? error.message : String(error)));
293
+ process.exit(1);
294
+ }
295
+ }
296
+ async function closeTask(service, options) {
297
+ if (!options.id) {
298
+ console.error(chalk.red('Error: --id is required'));
299
+ process.exit(1);
300
+ }
301
+ const spinner = ora('Closing task...').start();
302
+ try {
303
+ const task = service.close(options.id, options.reason);
304
+ if (!task) {
305
+ spinner.fail(`Task not found: ${options.id}`);
306
+ process.exit(1);
307
+ }
308
+ spinner.succeed(`Task closed: ${task.id}`);
309
+ console.log(` ${STATUS_ICONS.done} ${task.title}`);
310
+ if (options.reason) {
311
+ console.log(chalk.dim(` Reason: ${options.reason}`));
312
+ }
313
+ }
314
+ catch (error) {
315
+ spinner.fail('Failed to close task');
316
+ console.error(chalk.red(error instanceof Error ? error.message : String(error)));
317
+ process.exit(1);
318
+ }
319
+ }
320
+ async function deleteTask(service, options) {
321
+ if (!options.id) {
322
+ console.error(chalk.red('Error: --id is required'));
323
+ process.exit(1);
324
+ }
325
+ const spinner = ora('Deleting task...').start();
326
+ try {
327
+ const success = service.delete(options.id);
328
+ if (!success) {
329
+ spinner.fail(`Task not found: ${options.id}`);
330
+ process.exit(1);
331
+ }
332
+ spinner.succeed(`Task deleted: ${options.id}`);
333
+ }
334
+ catch (error) {
335
+ spinner.fail('Failed to delete task');
336
+ console.error(chalk.red(error instanceof Error ? error.message : String(error)));
337
+ process.exit(1);
338
+ }
339
+ }
340
+ async function showReady(service, options) {
341
+ const tasks = service.ready();
342
+ if (options.json) {
343
+ console.log(JSON.stringify(tasks, null, 2));
344
+ return;
345
+ }
346
+ if (tasks.length === 0) {
347
+ console.log(chalk.dim('No ready tasks'));
348
+ return;
349
+ }
350
+ console.log(chalk.bold.green(`\n✓ Ready Tasks (${tasks.length})\n`));
351
+ for (const task of tasks) {
352
+ const priorityColor = getPriorityColor(task.priority);
353
+ const typeIcon = TYPE_ICONS[task.type];
354
+ console.log(` ${priorityColor(`P${task.priority}`)} ${typeIcon} ` +
355
+ `${chalk.cyan(task.id)} ${task.title}`);
356
+ if (task.blocks.length > 0) {
357
+ console.log(chalk.dim(` Unblocks: ${task.blocks.length} task(s)`));
358
+ }
359
+ }
360
+ console.log('');
361
+ }
362
+ async function showBlocked(service, options) {
363
+ const tasks = service.blocked();
364
+ if (options.json) {
365
+ console.log(JSON.stringify(tasks, null, 2));
366
+ return;
367
+ }
368
+ if (tasks.length === 0) {
369
+ console.log(chalk.dim('No blocked tasks'));
370
+ return;
371
+ }
372
+ console.log(chalk.bold.red(`\n❄ Blocked Tasks (${tasks.length})\n`));
373
+ for (const task of tasks) {
374
+ const priorityColor = getPriorityColor(task.priority);
375
+ const typeIcon = TYPE_ICONS[task.type];
376
+ console.log(` ${priorityColor(`P${task.priority}`)} ${typeIcon} ` +
377
+ `${chalk.cyan(task.id)} ${task.title}`);
378
+ console.log(chalk.red(` Blocked by: ${task.blockedBy.join(', ')}`));
379
+ }
380
+ console.log('');
381
+ }
382
+ async function addDependency(service, options) {
383
+ if (!options.from || !options.to) {
384
+ console.error(chalk.red('Error: --from and --to are required'));
385
+ process.exit(1);
386
+ }
387
+ const depType = (options.depType || 'blocks');
388
+ const spinner = ora(`Adding ${depType} dependency...`).start();
389
+ try {
390
+ const dep = service.addDependency(options.from, options.to, depType);
391
+ if (!dep) {
392
+ spinner.fail('Failed to add dependency (invalid tasks or would create cycle)');
393
+ process.exit(1);
394
+ }
395
+ spinner.succeed(`Dependency added: ${options.from} ${depType} ${options.to}`);
396
+ }
397
+ catch (error) {
398
+ spinner.fail('Failed to add dependency');
399
+ console.error(chalk.red(error instanceof Error ? error.message : String(error)));
400
+ process.exit(1);
401
+ }
402
+ }
403
+ async function removeDependency(service, options) {
404
+ if (!options.from || !options.to) {
405
+ console.error(chalk.red('Error: --from and --to are required'));
406
+ process.exit(1);
407
+ }
408
+ const success = service.removeDependency(options.from, options.to);
409
+ if (success) {
410
+ console.log(chalk.green(`Dependency removed: ${options.from} → ${options.to}`));
411
+ }
412
+ else {
413
+ console.log(chalk.yellow('Dependency not found'));
414
+ }
415
+ }
416
+ async function claimTask(service, options) {
417
+ if (!options.id) {
418
+ console.error(chalk.red('Error: --id is required'));
419
+ process.exit(1);
420
+ }
421
+ const spinner = ora('Claiming task...').start();
422
+ try {
423
+ // Get or create agent ID
424
+ const coordService = new CoordinationService();
425
+ const agentId = coordService.register('task-claimer', ['tasks']);
426
+ const coordinator = new TaskCoordinator({
427
+ taskService: service,
428
+ coordinationService: coordService,
429
+ agentId,
430
+ agentName: 'task-claimer',
431
+ worktreeBranch: options.branch,
432
+ });
433
+ const result = await coordinator.claim(options.id, options.branch);
434
+ if (!result) {
435
+ spinner.fail(`Task not found: ${options.id}`);
436
+ process.exit(1);
437
+ }
438
+ spinner.succeed(`Task claimed: ${options.id}`);
439
+ console.log(` ${STATUS_ICONS.in_progress} ${result.task.title}`);
440
+ console.log(` Worktree: ${result.worktreeBranch}`);
441
+ if (result.overlaps.length > 0) {
442
+ console.log(chalk.yellow('\n ⚠️ Overlapping work detected:'));
443
+ for (const overlap of result.overlaps) {
444
+ console.log(chalk.yellow(` ${overlap.conflictRisk}: ${overlap.suggestion}`));
445
+ }
446
+ }
447
+ }
448
+ catch (error) {
449
+ spinner.fail('Failed to claim task');
450
+ console.error(chalk.red(error instanceof Error ? error.message : String(error)));
451
+ process.exit(1);
452
+ }
453
+ }
454
+ async function releaseTask(service, options) {
455
+ if (!options.id) {
456
+ console.error(chalk.red('Error: --id is required'));
457
+ process.exit(1);
458
+ }
459
+ const spinner = ora('Releasing task...').start();
460
+ try {
461
+ const coordService = new CoordinationService();
462
+ const agentId = coordService.register('task-releaser', ['tasks']);
463
+ const coordinator = new TaskCoordinator({
464
+ taskService: service,
465
+ coordinationService: coordService,
466
+ agentId,
467
+ agentName: 'task-releaser',
468
+ });
469
+ const result = await coordinator.release(options.id, options.reason);
470
+ if (!result) {
471
+ spinner.fail(`Task not found: ${options.id}`);
472
+ process.exit(1);
473
+ }
474
+ spinner.succeed(`Task released: ${options.id}`);
475
+ console.log(` ${STATUS_ICONS.done} ${result.task.title}`);
476
+ }
477
+ catch (error) {
478
+ spinner.fail('Failed to release task');
479
+ console.error(chalk.red(error instanceof Error ? error.message : String(error)));
480
+ process.exit(1);
481
+ }
482
+ }
483
+ async function showStats(service, options) {
484
+ const stats = service.getStats();
485
+ if (options.json) {
486
+ console.log(JSON.stringify(stats, null, 2));
487
+ return;
488
+ }
489
+ console.log(chalk.bold('\n📊 Task Statistics\n'));
490
+ console.log(` Total: ${chalk.bold(stats.total)}`);
491
+ console.log(` Ready: ${chalk.green(stats.ready)}`);
492
+ console.log(` Blocked: ${chalk.red(stats.blocked)}`);
493
+ console.log('');
494
+ console.log(chalk.bold(' By Status:'));
495
+ console.log(` ${STATUS_ICONS.open} Open: ${stats.byStatus.open}`);
496
+ console.log(` ${STATUS_ICONS.in_progress} In Progress: ${stats.byStatus.in_progress}`);
497
+ console.log(` ${STATUS_ICONS.blocked} Blocked: ${stats.byStatus.blocked}`);
498
+ console.log(` ${STATUS_ICONS.done} Done: ${stats.byStatus.done}`);
499
+ console.log(` ${STATUS_ICONS.wont_do} Won't Do: ${stats.byStatus.wont_do}`);
500
+ console.log('');
501
+ console.log(chalk.bold(' By Priority:'));
502
+ for (let p = 0; p <= 4; p++) {
503
+ const count = stats.byPriority[p];
504
+ const color = getPriorityColor(p);
505
+ console.log(` ${color(`P${p}`)}: ${count}`);
506
+ }
507
+ console.log('');
508
+ console.log(chalk.bold(' By Type:'));
509
+ for (const [type, count] of Object.entries(stats.byType)) {
510
+ if (count > 0) {
511
+ console.log(` ${TYPE_ICONS[type]} ${type}: ${count}`);
512
+ }
513
+ }
514
+ console.log('');
515
+ }
516
+ async function syncTasks(service, _options) {
517
+ const spinner = ora('Syncing tasks...').start();
518
+ try {
519
+ // Import from JSONL first
520
+ const imported = service.importFromJSONL();
521
+ // Then export current state
522
+ service.saveToJSONL();
523
+ spinner.succeed('Tasks synced');
524
+ if (imported > 0) {
525
+ console.log(chalk.dim(` Imported ${imported} task(s) from JSONL`));
526
+ }
527
+ console.log(chalk.dim(' Exported current state to JSONL'));
528
+ }
529
+ catch (error) {
530
+ spinner.fail('Failed to sync tasks');
531
+ console.error(chalk.red(error instanceof Error ? error.message : String(error)));
532
+ process.exit(1);
533
+ }
534
+ }
535
+ async function compactTasks(service, options) {
536
+ const days = options.days ? parseInt(options.days, 10) : 90;
537
+ const spinner = ora(`Compacting tasks older than ${days} days...`).start();
538
+ try {
539
+ const summary = service.compact(days);
540
+ if (!summary) {
541
+ spinner.info('No tasks to compact');
542
+ return;
543
+ }
544
+ spinner.succeed(`Compacted ${summary.originalIds.length} task(s)`);
545
+ console.log(chalk.dim(` Period: ${summary.closedPeriod}`));
546
+ console.log(chalk.dim(` Summary: ${summary.summary}`));
547
+ }
548
+ catch (error) {
549
+ spinner.fail('Failed to compact tasks');
550
+ console.error(chalk.red(error instanceof Error ? error.message : String(error)));
551
+ process.exit(1);
552
+ }
553
+ }
554
+ function getPriorityColor(priority) {
555
+ switch (priority) {
556
+ case 0:
557
+ return chalk.red;
558
+ case 1:
559
+ return chalk.yellow;
560
+ case 2:
561
+ return chalk.blue;
562
+ case 3:
563
+ return chalk.dim;
564
+ case 4:
565
+ return chalk.dim;
566
+ default:
567
+ return chalk.white;
568
+ }
569
+ }
570
+ //# sourceMappingURL=task.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task.js","sourceRoot":"","sources":["../../src/cli/task.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAUjE,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAgE9E,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,MAAkB,EAAE,UAAuB,EAAE;IAC7E,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;IAElC,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,QAAQ;YACX,MAAM,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACnC,MAAM;QACR,KAAK,MAAM;YACT,MAAM,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAClC,MAAM;QACR,KAAK,MAAM;YACT,MAAM,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACjC,MAAM;QACR,KAAK,QAAQ;YACX,MAAM,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACnC,MAAM;QACR,KAAK,OAAO;YACV,MAAM,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAClC,MAAM;QACR,KAAK,QAAQ;YACX,MAAM,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACnC,MAAM;QACR,KAAK,OAAO;YACV,MAAM,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAClC,MAAM;QACR,KAAK,SAAS;YACZ,MAAM,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACpC,MAAM;QACR,KAAK,KAAK;YACR,MAAM,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACtC,MAAM;QACR,KAAK,OAAO;YACV,MAAM,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACzC,MAAM;QACR,KAAK,OAAO;YACV,MAAM,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAClC,MAAM;QACR,KAAK,SAAS;YACZ,MAAM,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACpC,MAAM;QACR,KAAK,OAAO;YACV,MAAM,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAClC,MAAM;QACR,KAAK,MAAM;YACT,MAAM,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAClC,MAAM;QACR,KAAK,SAAS;YACZ,MAAM,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACrC,MAAM;IACV,CAAC;AACH,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,OAAoB,EAAE,OAAoB;IAClE,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACnB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC,CAAC;QACvD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,OAAO,GAAG,GAAG,CAAC,kBAAkB,CAAC,CAAC,KAAK,EAAE,CAAC;IAEhD,IAAI,CAAC;QACH,MAAM,KAAK,GAAoB;YAC7B,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,IAAI,EAAG,OAAO,CAAC,IAAiB,IAAI,MAAM;YAC1C,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAiB,CAAC,CAAC,CAAC,CAAC;YAC/E,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE;YAC1E,QAAQ,EAAE,OAAO,CAAC,MAAM;YACxB,KAAK,EAAE,OAAO,CAAC,KAAK;SACrB,CAAC;QAEF,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACnC,OAAO,CAAC,OAAO,CAAC,iBAAiB,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QAE5C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,KAAK,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACpE,OAAO,CAAC,GAAG,CAAC,SAAS,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAC5C,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QACpC,OAAO,CAAC,GAAG,CAAC,eAAe,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC7D,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACrD,CAAC;QACD,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC5C,CAAC;QAED,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QACtC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACjF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,SAAS,CAAC,OAAoB,EAAE,OAAoB;IACjE,MAAM,MAAM,GAAe,EAAE,CAAC;IAE9B,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;QACzB,MAAM,CAAC,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAiB,CAAC;IAClE,CAAC;IACD,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;QACvB,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAe,CAAC;IAC5D,CAAC;IACD,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;QAC3B,MAAM,CAAC,QAAQ,GAAG,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAmB,CAAC;IAClG,CAAC;IACD,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;QAC3B,MAAM,CAAC,QAAQ,GAAG,OAAO,CAAC,cAAc,CAAC;IAC3C,CAAC;IACD,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;QACzB,MAAM,CAAC,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IACrE,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,MAAM,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IACjC,CAAC;IACD,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;QACxB,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC;IAC1B,CAAC;IACD,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QACtB,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;IACxB,CAAC;IAED,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAEnC,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC5C,OAAO;IACT,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC;QACzC,OAAO;IACT,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC;IAEvD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,UAAU,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC7C,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvC,MAAM,aAAa,GAAG,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAEtD,OAAO,CAAC,GAAG,CACT,KAAK,UAAU,IAAI,aAAa,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,QAAQ,GAAG;YACpE,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,CACvC,CAAC;QAEF,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACpB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAClB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,iBAAiB,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;YAC3D,CAAC;YACD,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC3B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,eAAe,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YAClE,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC;AAED,KAAK,UAAU,QAAQ,CAAC,OAAoB,EAAE,OAAoB;IAChE,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;QAChB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC,CAAC;QACpD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,IAAI,GAAG,OAAO,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAClD,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,mBAAmB,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QAC1D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC3C,OAAO;IACT,CAAC;IAED,MAAM,UAAU,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC7C,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvC,MAAM,aAAa,GAAG,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAEtD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,GAAG,UAAU,IAAI,aAAa,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,QAAQ,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACzG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACvC,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAC1C,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACpI,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IAClC,OAAO,CAAC,GAAG,CAAC,aAAa,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAE3D,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClB,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC5C,CAAC;IACD,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;QACxB,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;IAClD,CAAC;IACD,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACnD,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClB,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC1C,CAAC;IAED,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;QACrB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;QACxC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAChC,CAAC;IAED,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;QAClC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC;IAED,eAAe;IACf,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;QACvC,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACvC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACvC,IAAI,OAAO,EAAE,CAAC;gBACZ,MAAM,aAAa,GAAG,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;gBACnD,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,KAAK,MAAM,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC;gBACvE,OAAO,CAAC,GAAG,CAAC,KAAK,aAAa,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;YAC5G,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;QACnC,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACnC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACtC,IAAI,OAAO,EAAE,CAAC;gBACZ,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;YAC/D,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;QACrC,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACpC,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACnC,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,WAAW,GAAG,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBAC/C,OAAO,CAAC,GAAG,CAAC,KAAK,WAAW,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;YACzE,CAAC;QACH,CAAC;IACH,CAAC;IAED,aAAa;IACb,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;IACrD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;IACrD,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QACnD,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;IAED,UAAU;IACV,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC5C,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;YACpC,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;gBACzC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,SAAS,KAAK,KAAK,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC;YACzE,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,OAAoB,EAAE,OAAoB;IAClE,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;QAChB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC,CAAC;QACpD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,KAAK,GAAoB,EAAE,CAAC;IAElC,IAAI,OAAO,CAAC,KAAK;QAAE,KAAK,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;IAC/C,IAAI,OAAO,CAAC,WAAW;QAAE,KAAK,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IACjE,IAAI,OAAO,CAAC,IAAI;QAAE,KAAK,CAAC,IAAI,GAAG,OAAO,CAAC,IAAgB,CAAC;IACxD,IAAI,OAAO,CAAC,MAAM;QAAE,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC,MAAoB,CAAC;IAChE,IAAI,OAAO,CAAC,QAAQ;QAAE,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAiB,CAAC;IACtF,IAAI,OAAO,CAAC,QAAQ;QAAE,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;IAClG,IAAI,OAAO,CAAC,QAAQ;QAAE,KAAK,CAAC,cAAc,GAAG,OAAO,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;IACxG,IAAI,OAAO,CAAC,MAAM;QAAE,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAChF,IAAI,OAAO,CAAC,KAAK;QAAE,KAAK,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;IAE/C,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC,CAAC;QACxD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,OAAO,GAAG,GAAG,CAAC,kBAAkB,CAAC,CAAC,KAAK,EAAE,CAAC;IAEhD,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QAC/C,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,CAAC,IAAI,CAAC,mBAAmB,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;YAC9C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,OAAO,CAAC,OAAO,CAAC,iBAAiB,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QAC5C,OAAO,CAAC,GAAG,CAAC,KAAK,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;IAC9D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QACtC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACjF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,SAAS,CAAC,OAAoB,EAAE,OAAoB;IACjE,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;QAChB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC,CAAC;QACpD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,OAAO,GAAG,GAAG,CAAC,iBAAiB,CAAC,CAAC,KAAK,EAAE,CAAC;IAE/C,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QACvD,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,CAAC,IAAI,CAAC,mBAAmB,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;YAC9C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,OAAO,CAAC,OAAO,CAAC,gBAAgB,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QAC3C,OAAO,CAAC,GAAG,CAAC,KAAK,YAAY,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QACpD,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QACrC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACjF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,OAAoB,EAAE,OAAoB;IAClE,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;QAChB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC,CAAC;QACpD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,OAAO,GAAG,GAAG,CAAC,kBAAkB,CAAC,CAAC,KAAK,EAAE,CAAC;IAEhD,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC3C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CAAC,mBAAmB,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;YAC9C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,OAAO,CAAC,OAAO,CAAC,iBAAiB,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;IACjD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QACtC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACjF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,SAAS,CAAC,OAAoB,EAAE,OAAoB;IACjE,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAE9B,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC5C,OAAO;IACT,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC;QACzC,OAAO;IACT,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,oBAAoB,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC;IAErE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,aAAa,GAAG,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACtD,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEvC,OAAO,CAAC,GAAG,CACT,KAAK,aAAa,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,QAAQ,GAAG;YACtD,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,CACvC,CAAC;QAEF,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,iBAAiB,IAAI,CAAC,MAAM,CAAC,MAAM,UAAU,CAAC,CAAC,CAAC;QACxE,CAAC;IACH,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,OAAoB,EAAE,OAAoB;IACnE,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAEhC,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC5C,OAAO;IACT,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC;QAC3C,OAAO;IACT,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,sBAAsB,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC;IAErE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,aAAa,GAAG,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACtD,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEvC,OAAO,CAAC,GAAG,CACT,KAAK,aAAa,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,QAAQ,GAAG;YACtD,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,CACvC,CAAC;QAEF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,mBAAmB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IACzE,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,OAAoB,EAAE,OAAoB;IACrE,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;QACjC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC,CAAC;QAChE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,OAAO,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,QAAQ,CAAmB,CAAC;IAChE,MAAM,OAAO,GAAG,GAAG,CAAC,UAAU,OAAO,gBAAgB,CAAC,CAAC,KAAK,EAAE,CAAC;IAE/D,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QACrE,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,OAAO,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAC;YAC/E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,OAAO,CAAC,OAAO,CAAC,qBAAqB,OAAO,CAAC,IAAI,IAAI,OAAO,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;IAChF,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QACzC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACjF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,OAAoB,EAAE,OAAoB;IACxE,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;QACjC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC,CAAC;QAChE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,OAAO,GAAG,OAAO,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;IACnE,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,uBAAuB,OAAO,CAAC,IAAI,MAAM,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IAClF,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC,CAAC;IACpD,CAAC;AACH,CAAC;AAED,KAAK,UAAU,SAAS,CAAC,OAAoB,EAAE,OAAoB;IACjE,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;QAChB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC,CAAC;QACpD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,OAAO,GAAG,GAAG,CAAC,kBAAkB,CAAC,CAAC,KAAK,EAAE,CAAC;IAEhD,IAAI,CAAC;QACH,yBAAyB;QACzB,MAAM,YAAY,GAAG,IAAI,mBAAmB,EAAE,CAAC;QAC/C,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;QAEjE,MAAM,WAAW,GAAG,IAAI,eAAe,CAAC;YACtC,WAAW,EAAE,OAAO;YACpB,mBAAmB,EAAE,YAAY;YACjC,OAAO;YACP,SAAS,EAAE,cAAc;YACzB,cAAc,EAAE,OAAO,CAAC,MAAM;SAC/B,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QACnE,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,CAAC,IAAI,CAAC,mBAAmB,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;YAC9C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,OAAO,CAAC,OAAO,CAAC,iBAAiB,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;QAC/C,OAAO,CAAC,GAAG,CAAC,KAAK,YAAY,CAAC,WAAW,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QAClE,OAAO,CAAC,GAAG,CAAC,eAAe,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC;QAEpD,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,oCAAoC,CAAC,CAAC,CAAC;YAChE,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;gBACtC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,OAAO,CAAC,YAAY,KAAK,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;YAClF,CAAC;QACH,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QACrC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACjF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,OAAoB,EAAE,OAAoB;IACnE,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;QAChB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC,CAAC;QACpD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,OAAO,GAAG,GAAG,CAAC,mBAAmB,CAAC,CAAC,KAAK,EAAE,CAAC;IAEjD,IAAI,CAAC;QACH,MAAM,YAAY,GAAG,IAAI,mBAAmB,EAAE,CAAC;QAC/C,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,CAAC,eAAe,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;QAElE,MAAM,WAAW,GAAG,IAAI,eAAe,CAAC;YACtC,WAAW,EAAE,OAAO;YACpB,mBAAmB,EAAE,YAAY;YACjC,OAAO;YACP,SAAS,EAAE,eAAe;SAC3B,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QACrE,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,CAAC,IAAI,CAAC,mBAAmB,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;YAC9C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,OAAO,CAAC,OAAO,CAAC,kBAAkB,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;QAChD,OAAO,CAAC,GAAG,CAAC,KAAK,YAAY,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;IAC7D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;QACvC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACjF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,SAAS,CAAC,OAAoB,EAAE,OAAoB;IACjE,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAEjC,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC5C,OAAO;IACT,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC;IAElD,OAAO,CAAC,GAAG,CAAC,YAAY,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACnD,OAAO,CAAC,GAAG,CAAC,YAAY,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACpD,OAAO,CAAC,GAAG,CAAC,cAAc,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACtD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;IACxC,OAAO,CAAC,GAAG,CAAC,OAAO,YAAY,CAAC,IAAI,UAAU,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IACrE,OAAO,CAAC,GAAG,CAAC,OAAO,YAAY,CAAC,WAAW,iBAAiB,KAAK,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;IAC1F,OAAO,CAAC,GAAG,CAAC,OAAO,YAAY,CAAC,OAAO,aAAa,KAAK,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;IAC9E,OAAO,CAAC,GAAG,CAAC,OAAO,YAAY,CAAC,IAAI,UAAU,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IACrE,OAAO,CAAC,GAAG,CAAC,OAAO,YAAY,CAAC,OAAO,cAAc,KAAK,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;IAC/E,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAC1C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,CAAiB,CAAC,CAAC;QAClD,MAAM,KAAK,GAAG,gBAAgB,CAAC,CAAiB,CAAC,CAAC;QAClD,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,KAAK,EAAE,CAAC,CAAC;IACjD,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;IACtC,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;QACzD,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,OAAO,UAAU,CAAC,IAAgB,CAAC,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC,CAAC;QACvE,CAAC;IACH,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC;AAED,KAAK,UAAU,SAAS,CAAC,OAAoB,EAAE,QAAqB;IAClE,MAAM,OAAO,GAAG,GAAG,CAAC,kBAAkB,CAAC,CAAC,KAAK,EAAE,CAAC;IAEhD,IAAI,CAAC;QACH,0BAA0B;QAC1B,MAAM,QAAQ,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;QAE3C,4BAA4B;QAC5B,OAAO,CAAC,WAAW,EAAE,CAAC;QAEtB,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QAChC,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,cAAc,QAAQ,qBAAqB,CAAC,CAAC,CAAC;QACtE,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC,CAAC;IAC9D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QACrC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACjF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,OAAoB,EAAE,OAAoB;IACpE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5D,MAAM,OAAO,GAAG,GAAG,CAAC,+BAA+B,IAAI,UAAU,CAAC,CAAC,KAAK,EAAE,CAAC;IAE3E,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;YACpC,OAAO;QACT,CAAC;QAED,OAAO,CAAC,OAAO,CAAC,aAAa,OAAO,CAAC,WAAW,CAAC,MAAM,UAAU,CAAC,CAAC;QACnE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;QAC5D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,cAAc,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAC1D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;QACxC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACjF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,QAAsB;IAC9C,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,CAAC;YACJ,OAAO,KAAK,CAAC,GAAG,CAAC;QACnB,KAAK,CAAC;YACJ,OAAO,KAAK,CAAC,MAAM,CAAC;QACtB,KAAK,CAAC;YACJ,OAAO,KAAK,CAAC,IAAI,CAAC;QACpB,KAAK,CAAC;YACJ,OAAO,KAAK,CAAC,GAAG,CAAC;QACnB,KAAK,CAAC;YACJ,OAAO,KAAK,CAAC,GAAG,CAAC;QACnB;YACE,OAAO,KAAK,CAAC,KAAK,CAAC;IACvB,CAAC;AACH,CAAC"}
@@ -0,0 +1,13 @@
1
+ import Database from 'better-sqlite3';
2
+ export declare class CoordinationDatabase {
3
+ private db;
4
+ private static instance;
5
+ private constructor();
6
+ static getInstance(dbPath: string): CoordinationDatabase;
7
+ static resetInstance(): void;
8
+ getDatabase(): Database.Database;
9
+ private initSchema;
10
+ close(): void;
11
+ }
12
+ export declare function getDefaultCoordinationDbPath(): string;
13
+ //# sourceMappingURL=database.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../src/coordination/database.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAItC,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,EAAE,CAAoB;IAC9B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAqC;IAE5D,OAAO;IAUP,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,oBAAoB;IAOxD,MAAM,CAAC,aAAa,IAAI,IAAI;IAO5B,WAAW,IAAI,QAAQ,CAAC,QAAQ;IAIhC,OAAO,CAAC,UAAU;IA+FlB,KAAK,IAAI,IAAI;CAGd;AAED,wBAAgB,4BAA4B,IAAI,MAAM,CAErD"}