couchloop-eq-mcp 1.1.4 → 1.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 (87) hide show
  1. package/README.md +40 -38
  2. package/dist/clients/shrinkChatClient.d.ts +10 -10
  3. package/dist/index.js +81 -6
  4. package/dist/index.js.map +1 -1
  5. package/dist/server/http-mcp.d.ts.map +1 -1
  6. package/dist/server/http-mcp.js +17 -3
  7. package/dist/server/http-mcp.js.map +1 -1
  8. package/dist/server/sse.js +1 -1
  9. package/dist/tools/check-versions.d.ts +4 -4
  10. package/dist/tools/checkpoint.d.ts +2 -19
  11. package/dist/tools/checkpoint.d.ts.map +1 -1
  12. package/dist/tools/checkpoint.js +68 -2
  13. package/dist/tools/checkpoint.js.map +1 -1
  14. package/dist/tools/comprehensive-code-review.d.ts +78 -0
  15. package/dist/tools/comprehensive-code-review.d.ts.map +1 -0
  16. package/dist/tools/comprehensive-code-review.js +177 -0
  17. package/dist/tools/comprehensive-code-review.js.map +1 -0
  18. package/dist/tools/comprehensive-package-audit.d.ts +75 -0
  19. package/dist/tools/comprehensive-package-audit.d.ts.map +1 -0
  20. package/dist/tools/comprehensive-package-audit.js +151 -0
  21. package/dist/tools/comprehensive-package-audit.js.map +1 -0
  22. package/dist/tools/detect-build-context.d.ts +59 -0
  23. package/dist/tools/detect-build-context.d.ts.map +1 -0
  24. package/dist/tools/detect-build-context.js +80 -0
  25. package/dist/tools/detect-build-context.js.map +1 -0
  26. package/dist/tools/generate-upgrade-report.d.ts +85 -0
  27. package/dist/tools/generate-upgrade-report.d.ts.map +1 -0
  28. package/dist/tools/generate-upgrade-report.js +102 -0
  29. package/dist/tools/generate-upgrade-report.js.map +1 -0
  30. package/dist/tools/index-full.d.ts +1355 -0
  31. package/dist/tools/index-full.d.ts.map +1 -0
  32. package/dist/tools/index-full.js +611 -0
  33. package/dist/tools/index-full.js.map +1 -0
  34. package/dist/tools/index.d.ts +27 -1018
  35. package/dist/tools/index.d.ts.map +1 -1
  36. package/dist/tools/index.js +29 -554
  37. package/dist/tools/index.js.map +1 -1
  38. package/dist/tools/insight.d.ts +31 -12
  39. package/dist/tools/insight.d.ts.map +1 -1
  40. package/dist/tools/insight.js +2 -1
  41. package/dist/tools/insight.js.map +1 -1
  42. package/dist/tools/intent-router.d.ts +142 -0
  43. package/dist/tools/intent-router.d.ts.map +1 -0
  44. package/dist/tools/intent-router.js +453 -0
  45. package/dist/tools/intent-router.js.map +1 -0
  46. package/dist/tools/prevent-ai-errors.d.ts +85 -0
  47. package/dist/tools/prevent-ai-errors.d.ts.map +1 -0
  48. package/dist/tools/prevent-ai-errors.js +97 -0
  49. package/dist/tools/prevent-ai-errors.js.map +1 -0
  50. package/dist/tools/primary-tools.d.ts +615 -0
  51. package/dist/tools/primary-tools.d.ts.map +1 -0
  52. package/dist/tools/primary-tools.js +355 -0
  53. package/dist/tools/primary-tools.js.map +1 -0
  54. package/dist/tools/protect-files.d.ts +1 -1
  55. package/dist/tools/sendMessage.d.ts.map +1 -1
  56. package/dist/tools/sendMessage.js +17 -152
  57. package/dist/tools/sendMessage.js.map +1 -1
  58. package/dist/tools/session.d.ts +1 -1
  59. package/dist/tools/smart-context.d.ts +66 -0
  60. package/dist/tools/smart-context.d.ts.map +1 -0
  61. package/dist/tools/smart-context.js +167 -0
  62. package/dist/tools/smart-context.js.map +1 -0
  63. package/dist/tools/status.d.ts +118 -0
  64. package/dist/tools/status.d.ts.map +1 -0
  65. package/dist/tools/status.js +366 -0
  66. package/dist/tools/status.js.map +1 -0
  67. package/dist/tools/verify.d.ts +126 -0
  68. package/dist/tools/verify.d.ts.map +1 -0
  69. package/dist/tools/verify.js +308 -0
  70. package/dist/tools/verify.js.map +1 -0
  71. package/dist/types/checkpoint.d.ts +26 -1
  72. package/dist/types/checkpoint.d.ts.map +1 -1
  73. package/dist/types/checkpoint.js +17 -0
  74. package/dist/types/checkpoint.js.map +1 -1
  75. package/dist/types/insight.d.ts +2 -2
  76. package/dist/types/journey.d.ts +18 -18
  77. package/dist/types/session.d.ts +2 -2
  78. package/dist/utils/sanitize.d.ts +24 -0
  79. package/dist/utils/sanitize.d.ts.map +1 -0
  80. package/dist/utils/sanitize.js +117 -0
  81. package/dist/utils/sanitize.js.map +1 -0
  82. package/dist/workflows/engine.d.ts +2 -1
  83. package/dist/workflows/engine.d.ts.map +1 -1
  84. package/dist/workflows/engine.js +7 -1
  85. package/dist/workflows/engine.js.map +1 -1
  86. package/dist/workflows/index.d.ts +3 -3
  87. package/package.json +1 -1
@@ -0,0 +1,615 @@
1
+ /**
2
+ * MCP Tools - Public API
3
+ *
4
+ * This module exports only the PRIMARY tools that users should see.
5
+ * All granular tools are internal engines used by these primary tools.
6
+ *
7
+ * PUBLIC TOOLS (8):
8
+ * 0. couchloop - Intent router (discoverability layer for loose commands)
9
+ * 1. verify - Pre-delivery verification (catches AI hallucinations, validates packages)
10
+ * 2. status - Dashboard (session progress, history, context, protection)
11
+ * 3. conversation - Therapeutic AI conversation with governance
12
+ * 4. code_review - Complete code analysis (security, quality, AI errors)
13
+ * 5. package_audit - Complete dependency audit (validation, versions, upgrades)
14
+ * 6. remember - Smart context capture (checkpoints, insights, decisions)
15
+ * 7. protect - File protection and safety features
16
+ */
17
+ import { handleComprehensiveCodeReview } from './comprehensive-code-review.js';
18
+ import { handleComprehensivePackageAudit } from './comprehensive-package-audit.js';
19
+ import { handleSmartContext } from './smart-context.js';
20
+ export declare function setupTools(): Promise<({
21
+ definition: {
22
+ name: string;
23
+ description: string;
24
+ annotations: {
25
+ readOnlyHint: boolean;
26
+ destructiveHint: boolean;
27
+ openWorldHint: boolean;
28
+ };
29
+ inputSchema: {
30
+ type: string;
31
+ properties: {
32
+ intent: {
33
+ type: string;
34
+ description: string;
35
+ };
36
+ context: {
37
+ type: string;
38
+ description: string;
39
+ };
40
+ session_id: {
41
+ type: string;
42
+ description: string;
43
+ };
44
+ };
45
+ required: string[];
46
+ };
47
+ };
48
+ handler: (args: Record<string, unknown>) => Promise<{
49
+ error: string;
50
+ hint: string;
51
+ routed_to?: undefined;
52
+ message?: undefined;
53
+ tools?: undefined;
54
+ examples?: undefined;
55
+ classification?: undefined;
56
+ registeredTools?: undefined;
57
+ action?: undefined;
58
+ confidence?: undefined;
59
+ result?: undefined;
60
+ args_passed?: undefined;
61
+ } | {
62
+ routed_to: string;
63
+ message: string;
64
+ tools: {
65
+ couchloop: string;
66
+ verify: string;
67
+ status: string;
68
+ conversation: string;
69
+ brainstorm: string;
70
+ remember: string;
71
+ code_review: string;
72
+ package_audit: string;
73
+ protect: string;
74
+ };
75
+ examples: string[];
76
+ hint: string;
77
+ error?: undefined;
78
+ classification?: undefined;
79
+ registeredTools?: undefined;
80
+ action?: undefined;
81
+ confidence?: undefined;
82
+ result?: undefined;
83
+ args_passed?: undefined;
84
+ } | {
85
+ error: string;
86
+ classification: import("./intent-router.js").ClassificationResult;
87
+ registeredTools: string[];
88
+ hint?: undefined;
89
+ routed_to?: undefined;
90
+ message?: undefined;
91
+ tools?: undefined;
92
+ examples?: undefined;
93
+ action?: undefined;
94
+ confidence?: undefined;
95
+ result?: undefined;
96
+ args_passed?: undefined;
97
+ } | {
98
+ routed_to: string;
99
+ message: string;
100
+ hint: string;
101
+ error?: undefined;
102
+ tools?: undefined;
103
+ examples?: undefined;
104
+ classification?: undefined;
105
+ registeredTools?: undefined;
106
+ action?: undefined;
107
+ confidence?: undefined;
108
+ result?: undefined;
109
+ args_passed?: undefined;
110
+ } | {
111
+ routed_to: string;
112
+ action: string | undefined;
113
+ confidence: number;
114
+ result: unknown;
115
+ error?: undefined;
116
+ hint?: undefined;
117
+ message?: undefined;
118
+ tools?: undefined;
119
+ examples?: undefined;
120
+ classification?: undefined;
121
+ registeredTools?: undefined;
122
+ args_passed?: undefined;
123
+ } | {
124
+ routed_to: string;
125
+ error: string;
126
+ classification: import("./intent-router.js").ClassificationResult;
127
+ args_passed: Record<string, unknown>;
128
+ hint?: undefined;
129
+ message?: undefined;
130
+ tools?: undefined;
131
+ examples?: undefined;
132
+ registeredTools?: undefined;
133
+ action?: undefined;
134
+ confidence?: undefined;
135
+ result?: undefined;
136
+ }>;
137
+ } | {
138
+ definition: {
139
+ name: string;
140
+ description: string;
141
+ annotations: {
142
+ readOnlyHint: boolean;
143
+ destructiveHint: boolean;
144
+ openWorldHint: boolean;
145
+ };
146
+ inputSchema: {
147
+ type: string;
148
+ properties: {
149
+ type: {
150
+ type: string;
151
+ enum: string[];
152
+ description: string;
153
+ };
154
+ content: {
155
+ type: string;
156
+ description: string;
157
+ };
158
+ language: {
159
+ type: string;
160
+ description: string;
161
+ };
162
+ registry: {
163
+ type: string;
164
+ enum: string[];
165
+ description: string;
166
+ };
167
+ context: {
168
+ type: string;
169
+ description: string;
170
+ };
171
+ };
172
+ required: string[];
173
+ };
174
+ };
175
+ handler: typeof import("./verify.js").handleVerify;
176
+ } | {
177
+ definition: {
178
+ name: string;
179
+ description: string;
180
+ annotations: {
181
+ readOnlyHint: boolean;
182
+ destructiveHint: boolean;
183
+ openWorldHint: boolean;
184
+ };
185
+ inputSchema: {
186
+ type: string;
187
+ properties: {
188
+ check: {
189
+ type: string;
190
+ enum: string[];
191
+ description: string;
192
+ };
193
+ session_id: {
194
+ type: string;
195
+ description: string;
196
+ };
197
+ };
198
+ required: string[];
199
+ };
200
+ };
201
+ handler: typeof import("./status.js").handleStatus;
202
+ } | {
203
+ definition: {
204
+ name: string;
205
+ description: string;
206
+ annotations: {
207
+ readOnlyHint: boolean;
208
+ destructiveHint: boolean;
209
+ openWorldHint: boolean;
210
+ };
211
+ inputSchema: {
212
+ type: string;
213
+ properties: {
214
+ message: {
215
+ type: string;
216
+ description: string;
217
+ };
218
+ action: {
219
+ type: string;
220
+ enum: string[];
221
+ description: string;
222
+ };
223
+ journey: {
224
+ type: string;
225
+ description: string;
226
+ };
227
+ session_id: {
228
+ type: string;
229
+ description: string;
230
+ };
231
+ };
232
+ required: string[];
233
+ };
234
+ };
235
+ handler: (args: Record<string, unknown>) => Promise<unknown>;
236
+ } | {
237
+ definition: {
238
+ name: string;
239
+ description: string;
240
+ annotations: {
241
+ readOnlyHint: boolean;
242
+ destructiveHint: boolean;
243
+ openWorldHint: boolean;
244
+ };
245
+ inputSchema: {
246
+ type: string;
247
+ properties: {
248
+ code: {
249
+ type: string;
250
+ description: string;
251
+ };
252
+ language: {
253
+ type: string;
254
+ description: string;
255
+ };
256
+ auto_fix: {
257
+ type: string;
258
+ description: string;
259
+ };
260
+ };
261
+ required: string[];
262
+ };
263
+ };
264
+ handler: typeof handleComprehensiveCodeReview;
265
+ } | {
266
+ definition: {
267
+ name: string;
268
+ description: string;
269
+ annotations: {
270
+ readOnlyHint: boolean;
271
+ destructiveHint: boolean;
272
+ openWorldHint: boolean;
273
+ };
274
+ inputSchema: {
275
+ type: string;
276
+ properties: {
277
+ packages: {
278
+ type: string;
279
+ items: {
280
+ type: string;
281
+ };
282
+ description: string;
283
+ };
284
+ registry: {
285
+ type: string;
286
+ enum: string[];
287
+ description: string;
288
+ };
289
+ };
290
+ required: string[];
291
+ };
292
+ };
293
+ handler: typeof handleComprehensivePackageAudit;
294
+ } | {
295
+ definition: {
296
+ name: string;
297
+ description: string;
298
+ annotations: {
299
+ readOnlyHint: boolean;
300
+ destructiveHint: boolean;
301
+ openWorldHint: boolean;
302
+ };
303
+ inputSchema: {
304
+ type: string;
305
+ properties: {
306
+ content: {
307
+ type: string;
308
+ description: string;
309
+ };
310
+ type: {
311
+ type: string;
312
+ enum: string[];
313
+ description: string;
314
+ };
315
+ tags: {
316
+ type: string;
317
+ items: {
318
+ type: string;
319
+ };
320
+ description: string;
321
+ };
322
+ action: {
323
+ type: string;
324
+ enum: string[];
325
+ description: string;
326
+ };
327
+ session_id: {
328
+ type: string;
329
+ description: string;
330
+ };
331
+ };
332
+ required: string[];
333
+ };
334
+ };
335
+ handler: (args: Record<string, unknown>) => Promise<{
336
+ error: string;
337
+ details?: any;
338
+ } | {
339
+ insights: {
340
+ content: string;
341
+ id: string;
342
+ createdAt: Date;
343
+ tags: string[];
344
+ userId: string;
345
+ sessionId: string | null;
346
+ }[];
347
+ count: number;
348
+ } | {
349
+ success: boolean;
350
+ type: "conversation" | "checkpoint" | "pattern" | "insight" | "decision" | "requirement" | "constraint";
351
+ message: string;
352
+ error?: undefined;
353
+ } | {
354
+ success: boolean;
355
+ error: string;
356
+ type?: undefined;
357
+ message?: undefined;
358
+ } | {
359
+ checkpoints: {
360
+ error: string;
361
+ details?: any;
362
+ } | {
363
+ session_id: string;
364
+ session_created: boolean;
365
+ checkpoints: {
366
+ id: string;
367
+ createdAt: Date;
368
+ sessionId: string;
369
+ stepId: string;
370
+ key: string;
371
+ value: unknown;
372
+ }[];
373
+ count: number;
374
+ };
375
+ insights: {
376
+ error: string;
377
+ details?: any;
378
+ } | {
379
+ insights: {
380
+ content: string;
381
+ id: string;
382
+ createdAt: Date;
383
+ tags: string[];
384
+ userId: string;
385
+ sessionId: string | null;
386
+ }[];
387
+ count: number;
388
+ };
389
+ user_context: {
390
+ error: string;
391
+ details?: any;
392
+ } | {
393
+ user: {
394
+ preferences: {
395
+ timezone?: string;
396
+ preferredJourneyLength?: "short" | "medium" | "long";
397
+ } | null;
398
+ id: string;
399
+ externalId: string;
400
+ isTestAccount: boolean;
401
+ createdAt: Date;
402
+ updatedAt: Date;
403
+ } | undefined;
404
+ recent_insights: never[];
405
+ recent_sessions: never[];
406
+ active_session: null;
407
+ } | {
408
+ user: {
409
+ id: string;
410
+ preferences: {
411
+ timezone?: string;
412
+ preferredJourneyLength?: "short" | "medium" | "long";
413
+ } | null;
414
+ created_at: Date;
415
+ };
416
+ recent_insights: {
417
+ content: string;
418
+ id: string;
419
+ createdAt: Date;
420
+ tags: string[];
421
+ userId: string;
422
+ sessionId: string | null;
423
+ }[];
424
+ recent_sessions: import("./insight.js").RecentSession[];
425
+ active_session: {
426
+ status: "active" | "paused" | "completed" | "abandoned";
427
+ id: string;
428
+ updatedAt: Date;
429
+ userId: string;
430
+ journeyId: string | null;
431
+ currentStep: number;
432
+ startedAt: Date;
433
+ lastActiveAt: Date;
434
+ completedAt: Date | null;
435
+ metadata: unknown;
436
+ threadId: string | null;
437
+ lastSyncedAt: Date | null;
438
+ } | undefined;
439
+ };
440
+ }>;
441
+ } | {
442
+ definition: {
443
+ name: string;
444
+ description: string;
445
+ annotations: {
446
+ readOnlyHint: boolean;
447
+ destructiveHint: boolean;
448
+ openWorldHint: boolean;
449
+ };
450
+ inputSchema: {
451
+ type: string;
452
+ properties: {
453
+ action: {
454
+ type: string;
455
+ enum: string[];
456
+ description: string;
457
+ };
458
+ path: {
459
+ type: string;
460
+ description: string;
461
+ };
462
+ operation: {
463
+ type: string;
464
+ enum: string[];
465
+ description: string;
466
+ };
467
+ backup_id: {
468
+ type: string;
469
+ description: string;
470
+ };
471
+ };
472
+ required: string[];
473
+ };
474
+ };
475
+ handler: (args: Record<string, unknown>) => Promise<{
476
+ error: string;
477
+ details?: any;
478
+ } | {
479
+ success: boolean;
480
+ operation_id: string;
481
+ allowed: boolean;
482
+ message: string;
483
+ violations: import("../types/file-protection.js").ProtectionViolation[];
484
+ recommendation: string;
485
+ action_required: string;
486
+ requires_approval?: undefined;
487
+ severity?: undefined;
488
+ suggested_backup?: undefined;
489
+ reason?: undefined;
490
+ status?: undefined;
491
+ operation_details?: undefined;
492
+ next_steps?: undefined;
493
+ safety_measures?: undefined;
494
+ error?: undefined;
495
+ details?: undefined;
496
+ } | {
497
+ success: boolean;
498
+ operation_id: string;
499
+ allowed: boolean;
500
+ requires_approval: boolean;
501
+ message: string;
502
+ violations: import("../types/file-protection.js").ProtectionViolation[];
503
+ severity: "medium" | "low" | "high" | "critical";
504
+ recommendation: string;
505
+ suggested_backup: string;
506
+ action_required?: undefined;
507
+ reason?: undefined;
508
+ status?: undefined;
509
+ operation_details?: undefined;
510
+ next_steps?: undefined;
511
+ safety_measures?: undefined;
512
+ error?: undefined;
513
+ details?: undefined;
514
+ } | {
515
+ success: boolean;
516
+ operation_id: string;
517
+ message: string;
518
+ reason: string;
519
+ allowed?: undefined;
520
+ violations?: undefined;
521
+ recommendation?: undefined;
522
+ action_required?: undefined;
523
+ requires_approval?: undefined;
524
+ severity?: undefined;
525
+ suggested_backup?: undefined;
526
+ status?: undefined;
527
+ operation_details?: undefined;
528
+ next_steps?: undefined;
529
+ safety_measures?: undefined;
530
+ error?: undefined;
531
+ details?: undefined;
532
+ } | {
533
+ success: boolean;
534
+ operation_id: string;
535
+ allowed: boolean;
536
+ status: string;
537
+ message: string;
538
+ operation_details: {
539
+ type: "delete" | "overwrite" | "move";
540
+ path: string;
541
+ target_path: string | null;
542
+ backup_path: string | null;
543
+ };
544
+ next_steps: string[];
545
+ safety_measures: {
546
+ backup_created: boolean;
547
+ backup_location: string;
548
+ rollback_available: boolean;
549
+ operation_logged: boolean;
550
+ };
551
+ violations?: undefined;
552
+ recommendation?: undefined;
553
+ action_required?: undefined;
554
+ requires_approval?: undefined;
555
+ severity?: undefined;
556
+ suggested_backup?: undefined;
557
+ reason?: undefined;
558
+ error?: undefined;
559
+ details?: undefined;
560
+ } | {
561
+ success: boolean;
562
+ protection_status: {
563
+ code_freeze_mode: boolean;
564
+ protected_patterns: string[];
565
+ forbidden_paths: string[];
566
+ critical_system_files: string[];
567
+ };
568
+ backup_stats: {
569
+ total_backups: number;
570
+ total_size_mb: number;
571
+ oldest_backup: Date | undefined;
572
+ newest_backup: Date | undefined;
573
+ disk_usage_percent: number;
574
+ };
575
+ protection_report: {
576
+ code_freeze_enabled: boolean;
577
+ operations_logged: number;
578
+ protected_items_count: number;
579
+ recent_violations_count: number;
580
+ };
581
+ } | {
582
+ success: boolean;
583
+ backup_count: number;
584
+ backups: {
585
+ id: string;
586
+ original_path: string;
587
+ backup_path: string;
588
+ timestamp: Date;
589
+ file_size_kb: number;
590
+ operation: "delete" | "overwrite" | "move";
591
+ reason: string | null;
592
+ }[];
593
+ } | {
594
+ success: boolean;
595
+ message: string;
596
+ backup_id: any;
597
+ restored_path?: undefined;
598
+ backup_path?: undefined;
599
+ timestamp?: undefined;
600
+ } | {
601
+ success: boolean;
602
+ message: string;
603
+ restored_path: string;
604
+ backup_id: any;
605
+ backup_path: string;
606
+ timestamp: Date;
607
+ } | {
608
+ success: boolean;
609
+ message: string;
610
+ status: string;
611
+ effect: string;
612
+ }>;
613
+ })[]>;
614
+ export { handleComprehensiveCodeReview, handleComprehensivePackageAudit, handleSmartContext, };
615
+ //# sourceMappingURL=primary-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"primary-tools.d.ts","sourceRoot":"","sources":["../../src/tools/primary-tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAMH,OAAO,EAAE,6BAA6B,EAAE,MAAM,gCAAgC,CAAC;AAC/E,OAAO,EAAE,+BAA+B,EAAE,MAAM,kCAAkC,CAAC;AACnF,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAwUxD,wBAAsB,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oBA7OR,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oBA0IvB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oBAgEvB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MA0D9C;AAGD,OAAO,EACL,6BAA6B,EAC7B,+BAA+B,EAC/B,kBAAkB,GACnB,CAAC"}