cmp-standards 2.8.1 → 3.1.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 (119) hide show
  1. package/dist/analytics/CrossProjectAnalytics.d.ts +128 -0
  2. package/dist/analytics/CrossProjectAnalytics.d.ts.map +1 -0
  3. package/dist/analytics/CrossProjectAnalytics.js +434 -0
  4. package/dist/analytics/CrossProjectAnalytics.js.map +1 -0
  5. package/dist/analytics/index.d.ts +1 -0
  6. package/dist/analytics/index.d.ts.map +1 -1
  7. package/dist/analytics/index.js +2 -0
  8. package/dist/analytics/index.js.map +1 -1
  9. package/dist/cache/EmbeddingCache.d.ts +6 -4
  10. package/dist/cache/EmbeddingCache.d.ts.map +1 -1
  11. package/dist/cache/EmbeddingCache.js +28 -17
  12. package/dist/cache/EmbeddingCache.js.map +1 -1
  13. package/dist/cli/index.js +658 -141
  14. package/dist/cli/index.js.map +1 -1
  15. package/dist/cli/ui.d.ts +134 -0
  16. package/dist/cli/ui.d.ts.map +1 -0
  17. package/dist/cli/ui.js +311 -0
  18. package/dist/cli/ui.js.map +1 -0
  19. package/dist/dashboard/tokens.d.ts +228 -0
  20. package/dist/dashboard/tokens.d.ts.map +1 -0
  21. package/dist/dashboard/tokens.js +450 -0
  22. package/dist/dashboard/tokens.js.map +1 -0
  23. package/dist/dashboard/ui.d.ts +3 -0
  24. package/dist/dashboard/ui.d.ts.map +1 -1
  25. package/dist/dashboard/ui.js +95 -61
  26. package/dist/dashboard/ui.js.map +1 -1
  27. package/dist/db/cloud.d.ts +11 -0
  28. package/dist/db/cloud.d.ts.map +1 -1
  29. package/dist/db/cloud.js +49 -1
  30. package/dist/db/cloud.js.map +1 -1
  31. package/dist/db/migrations.d.ts +1 -0
  32. package/dist/db/migrations.d.ts.map +1 -1
  33. package/dist/db/migrations.js +109 -0
  34. package/dist/db/migrations.js.map +1 -1
  35. package/dist/db/turso-client.d.ts.map +1 -1
  36. package/dist/db/turso-client.js +3 -0
  37. package/dist/db/turso-client.js.map +1 -1
  38. package/dist/events/EventBus.d.ts +21 -0
  39. package/dist/events/EventBus.d.ts.map +1 -1
  40. package/dist/events/EventBus.js +81 -30
  41. package/dist/events/EventBus.js.map +1 -1
  42. package/dist/events/index.d.ts +1 -1
  43. package/dist/events/index.d.ts.map +1 -1
  44. package/dist/events/index.js +1 -1
  45. package/dist/events/index.js.map +1 -1
  46. package/dist/hooks/index.d.ts +1 -0
  47. package/dist/hooks/index.d.ts.map +1 -1
  48. package/dist/hooks/index.js +2 -0
  49. package/dist/hooks/index.js.map +1 -1
  50. package/dist/hooks/startup-verify.d.ts +31 -0
  51. package/dist/hooks/startup-verify.d.ts.map +1 -0
  52. package/dist/hooks/startup-verify.js +360 -0
  53. package/dist/hooks/startup-verify.js.map +1 -0
  54. package/dist/plugins/PluginManager.d.ts +160 -0
  55. package/dist/plugins/PluginManager.d.ts.map +1 -0
  56. package/dist/plugins/PluginManager.js +417 -0
  57. package/dist/plugins/PluginManager.js.map +1 -0
  58. package/dist/plugins/index.d.ts +7 -0
  59. package/dist/plugins/index.d.ts.map +1 -0
  60. package/dist/plugins/index.js +7 -0
  61. package/dist/plugins/index.js.map +1 -0
  62. package/dist/schema/expert-types.d.ts +2 -2
  63. package/dist/services/AuditLog.d.ts +205 -0
  64. package/dist/services/AuditLog.d.ts.map +1 -0
  65. package/dist/services/AuditLog.js +352 -0
  66. package/dist/services/AuditLog.js.map +1 -0
  67. package/dist/services/FeedbackCollector.d.ts +8 -0
  68. package/dist/services/FeedbackCollector.d.ts.map +1 -1
  69. package/dist/services/FeedbackCollector.js +19 -2
  70. package/dist/services/FeedbackCollector.js.map +1 -1
  71. package/dist/services/GitIntegration.d.ts +140 -0
  72. package/dist/services/GitIntegration.d.ts.map +1 -0
  73. package/dist/services/GitIntegration.js +423 -0
  74. package/dist/services/GitIntegration.js.map +1 -0
  75. package/dist/services/HookVerifier.d.ts +95 -0
  76. package/dist/services/HookVerifier.d.ts.map +1 -0
  77. package/dist/services/HookVerifier.js +493 -0
  78. package/dist/services/HookVerifier.js.map +1 -0
  79. package/dist/services/MemoryRelationshipService.d.ts +187 -0
  80. package/dist/services/MemoryRelationshipService.d.ts.map +1 -0
  81. package/dist/services/MemoryRelationshipService.js +375 -0
  82. package/dist/services/MemoryRelationshipService.js.map +1 -0
  83. package/dist/services/MemoryVersioning.d.ts +108 -0
  84. package/dist/services/MemoryVersioning.d.ts.map +1 -0
  85. package/dist/services/MemoryVersioning.js +281 -0
  86. package/dist/services/MemoryVersioning.js.map +1 -0
  87. package/dist/services/context-injector.d.ts +8 -0
  88. package/dist/services/context-injector.d.ts.map +1 -1
  89. package/dist/services/context-injector.js +19 -2
  90. package/dist/services/context-injector.js.map +1 -1
  91. package/dist/services/index.d.ts +5 -0
  92. package/dist/services/index.d.ts.map +1 -1
  93. package/dist/services/index.js +7 -0
  94. package/dist/services/index.js.map +1 -1
  95. package/dist/services/memory-router.d.ts +8 -0
  96. package/dist/services/memory-router.d.ts.map +1 -1
  97. package/dist/services/memory-router.js +19 -2
  98. package/dist/services/memory-router.js.map +1 -1
  99. package/dist/services/pattern-tracker.d.ts +13 -0
  100. package/dist/services/pattern-tracker.d.ts.map +1 -1
  101. package/dist/services/pattern-tracker.js +33 -3
  102. package/dist/services/pattern-tracker.js.map +1 -1
  103. package/dist/services/semantic-search.d.ts +12 -0
  104. package/dist/services/semantic-search.d.ts.map +1 -1
  105. package/dist/services/semantic-search.js +93 -17
  106. package/dist/services/semantic-search.js.map +1 -1
  107. package/dist/testing/index.d.ts +148 -0
  108. package/dist/testing/index.d.ts.map +1 -0
  109. package/dist/testing/index.js +370 -0
  110. package/dist/testing/index.js.map +1 -0
  111. package/dist/types/index.d.ts +1 -0
  112. package/dist/types/index.d.ts.map +1 -1
  113. package/dist/types/index.js +1 -0
  114. package/dist/types/index.js.map +1 -1
  115. package/dist/utils/resilience.d.ts +256 -0
  116. package/dist/utils/resilience.d.ts.map +1 -0
  117. package/dist/utils/resilience.js +499 -0
  118. package/dist/utils/resilience.js.map +1 -0
  119. package/package.json +12 -1
@@ -0,0 +1,499 @@
1
+ /**
2
+ * Resilience Utilities
3
+ *
4
+ * Provides fault-tolerant patterns for network operations:
5
+ * - Retry with exponential backoff
6
+ * - Timeout protection
7
+ * - Circuit breaker pattern
8
+ * - Rate limiting helpers
9
+ *
10
+ * @version 2.9.1
11
+ */
12
+ export class RetryableError extends Error {
13
+ retryAfter;
14
+ constructor(message, retryAfter) {
15
+ super(message);
16
+ this.retryAfter = retryAfter;
17
+ this.name = 'RetryableError';
18
+ }
19
+ }
20
+ export class TimeoutError extends Error {
21
+ constructor(message = 'Operation timed out') {
22
+ super(message);
23
+ this.name = 'TimeoutError';
24
+ }
25
+ }
26
+ export class CircuitOpenError extends Error {
27
+ resetAt;
28
+ constructor(message = 'Circuit breaker is open', resetAt) {
29
+ super(message);
30
+ this.resetAt = resetAt;
31
+ this.name = 'CircuitOpenError';
32
+ }
33
+ }
34
+ // =============================================================================
35
+ // Retry with Exponential Backoff
36
+ // =============================================================================
37
+ const DEFAULT_RETRY_OPTIONS = {
38
+ maxRetries: 3,
39
+ baseDelay: 1000,
40
+ maxDelay: 30000,
41
+ backoffMultiplier: 2,
42
+ jitter: 0.1,
43
+ };
44
+ /**
45
+ * Calculate delay with exponential backoff and jitter
46
+ */
47
+ function calculateDelay(attempt, options) {
48
+ const exponentialDelay = options.baseDelay * Math.pow(options.backoffMultiplier, attempt - 1);
49
+ const cappedDelay = Math.min(exponentialDelay, options.maxDelay);
50
+ // Add jitter to prevent thundering herd
51
+ const jitterRange = cappedDelay * options.jitter;
52
+ const jitter = Math.random() * jitterRange * 2 - jitterRange;
53
+ return Math.max(0, Math.round(cappedDelay + jitter));
54
+ }
55
+ /**
56
+ * Execute operation with retry logic and exponential backoff
57
+ *
58
+ * @example
59
+ * ```typescript
60
+ * const result = await withRetry(
61
+ * () => fetch('https://api.example.com/data'),
62
+ * { maxRetries: 3, baseDelay: 1000 }
63
+ * )
64
+ * ```
65
+ */
66
+ export async function withRetry(operation, options) {
67
+ const opts = { ...DEFAULT_RETRY_OPTIONS, ...options };
68
+ let lastError;
69
+ for (let attempt = 1; attempt <= opts.maxRetries + 1; attempt++) {
70
+ try {
71
+ return await operation();
72
+ }
73
+ catch (error) {
74
+ lastError = error;
75
+ // Check if we should retry
76
+ const isRetryable = opts.isRetryable?.(error) ?? true;
77
+ const isLastAttempt = attempt > opts.maxRetries;
78
+ if (!isRetryable || isLastAttempt) {
79
+ throw error;
80
+ }
81
+ // Calculate delay
82
+ let delay;
83
+ if (error instanceof RetryableError && error.retryAfter) {
84
+ delay = error.retryAfter;
85
+ }
86
+ else {
87
+ delay = calculateDelay(attempt, opts);
88
+ }
89
+ // Notify callback
90
+ opts.onRetry?.(attempt, error, delay);
91
+ // Wait before retry
92
+ await new Promise(resolve => setTimeout(resolve, delay));
93
+ }
94
+ }
95
+ throw lastError;
96
+ }
97
+ /**
98
+ * Check if an HTTP status code is retryable
99
+ */
100
+ export function isRetryableHttpStatus(status) {
101
+ return (status === 408 || // Request Timeout
102
+ status === 429 || // Too Many Requests
103
+ status === 500 || // Internal Server Error
104
+ status === 502 || // Bad Gateway
105
+ status === 503 || // Service Unavailable
106
+ status === 504 // Gateway Timeout
107
+ );
108
+ }
109
+ /**
110
+ * Check if an error is a network/transient error
111
+ */
112
+ export function isTransientError(error) {
113
+ if (error instanceof RetryableError)
114
+ return true;
115
+ if (error instanceof Error) {
116
+ const message = error.message.toLowerCase();
117
+ return (message.includes('econnreset') ||
118
+ message.includes('econnrefused') ||
119
+ message.includes('etimedout') ||
120
+ message.includes('enotfound') ||
121
+ message.includes('network') ||
122
+ message.includes('timeout') ||
123
+ message.includes('rate limit') ||
124
+ message.includes('too many requests'));
125
+ }
126
+ return false;
127
+ }
128
+ // =============================================================================
129
+ // Timeout Protection
130
+ // =============================================================================
131
+ /**
132
+ * Execute operation with timeout protection
133
+ *
134
+ * @example
135
+ * ```typescript
136
+ * const result = await withTimeout(
137
+ * fetch('https://api.example.com/data'),
138
+ * { timeoutMs: 5000, fallback: null }
139
+ * )
140
+ * ```
141
+ */
142
+ export async function withTimeout(promise, options) {
143
+ const { timeoutMs, fallback, message, onTimeout } = options;
144
+ let timeoutId;
145
+ const timeoutPromise = new Promise((_, reject) => {
146
+ timeoutId = setTimeout(() => {
147
+ onTimeout?.();
148
+ if (fallback !== undefined) {
149
+ // Don't reject, resolve with fallback
150
+ }
151
+ else {
152
+ reject(new TimeoutError(message ?? `Operation timed out after ${timeoutMs}ms`));
153
+ }
154
+ }, timeoutMs);
155
+ });
156
+ // If fallback provided, return it on timeout instead of rejecting
157
+ if (fallback !== undefined) {
158
+ const fallbackPromise = new Promise(resolve => {
159
+ setTimeout(() => {
160
+ onTimeout?.();
161
+ resolve(fallback);
162
+ }, timeoutMs);
163
+ });
164
+ try {
165
+ const result = await Promise.race([promise, fallbackPromise]);
166
+ clearTimeout(timeoutId);
167
+ return result;
168
+ }
169
+ catch (error) {
170
+ clearTimeout(timeoutId);
171
+ throw error;
172
+ }
173
+ }
174
+ try {
175
+ const result = await Promise.race([promise, timeoutPromise]);
176
+ clearTimeout(timeoutId);
177
+ return result;
178
+ }
179
+ catch (error) {
180
+ clearTimeout(timeoutId);
181
+ throw error;
182
+ }
183
+ }
184
+ /**
185
+ * Create an AbortController with automatic timeout
186
+ */
187
+ export function createTimeoutController(timeoutMs) {
188
+ const controller = new AbortController();
189
+ const timeoutId = setTimeout(() => controller.abort(), timeoutMs);
190
+ return {
191
+ controller,
192
+ cleanup: () => clearTimeout(timeoutId),
193
+ };
194
+ }
195
+ // =============================================================================
196
+ // Circuit Breaker Pattern
197
+ // =============================================================================
198
+ const DEFAULT_CIRCUIT_OPTIONS = {
199
+ failureThreshold: 5,
200
+ resetTimeout: 30000,
201
+ successThreshold: 2,
202
+ };
203
+ /**
204
+ * Circuit Breaker for protecting against cascade failures
205
+ *
206
+ * @example
207
+ * ```typescript
208
+ * const breaker = new CircuitBreaker({ failureThreshold: 5 })
209
+ *
210
+ * try {
211
+ * const result = await breaker.execute(() => riskyOperation())
212
+ * } catch (error) {
213
+ * if (error instanceof CircuitOpenError) {
214
+ * // Circuit is open, use fallback
215
+ * }
216
+ * }
217
+ * ```
218
+ */
219
+ export class CircuitBreaker {
220
+ state = 'closed';
221
+ failures = 0;
222
+ successes = 0;
223
+ lastFailureTime = 0;
224
+ options;
225
+ constructor(options) {
226
+ this.options = { ...DEFAULT_CIRCUIT_OPTIONS, ...options };
227
+ }
228
+ /**
229
+ * Get current circuit state
230
+ */
231
+ getState() {
232
+ return this.state;
233
+ }
234
+ /**
235
+ * Get circuit statistics
236
+ */
237
+ getStats() {
238
+ return {
239
+ state: this.state,
240
+ failures: this.failures,
241
+ successes: this.successes,
242
+ lastFailureTime: this.lastFailureTime,
243
+ };
244
+ }
245
+ /**
246
+ * Execute operation through circuit breaker
247
+ */
248
+ async execute(operation) {
249
+ // Check if circuit should transition from open to half-open
250
+ if (this.state === 'open') {
251
+ const timeSinceFailure = Date.now() - this.lastFailureTime;
252
+ if (timeSinceFailure >= this.options.resetTimeout) {
253
+ this.transitionTo('half-open');
254
+ }
255
+ else {
256
+ throw new CircuitOpenError(`Circuit breaker is open. Retry after ${this.options.resetTimeout - timeSinceFailure}ms`, this.lastFailureTime + this.options.resetTimeout);
257
+ }
258
+ }
259
+ try {
260
+ const result = await operation();
261
+ this.onSuccess();
262
+ return result;
263
+ }
264
+ catch (error) {
265
+ this.onFailure();
266
+ throw error;
267
+ }
268
+ }
269
+ /**
270
+ * Record successful operation
271
+ */
272
+ onSuccess() {
273
+ this.failures = 0;
274
+ if (this.state === 'half-open') {
275
+ this.successes++;
276
+ if (this.successes >= this.options.successThreshold) {
277
+ this.transitionTo('closed');
278
+ }
279
+ }
280
+ }
281
+ /**
282
+ * Record failed operation
283
+ */
284
+ onFailure() {
285
+ this.failures++;
286
+ this.lastFailureTime = Date.now();
287
+ this.successes = 0;
288
+ if (this.state === 'half-open') {
289
+ this.transitionTo('open');
290
+ }
291
+ else if (this.state === 'closed' && this.failures >= this.options.failureThreshold) {
292
+ this.transitionTo('open');
293
+ }
294
+ }
295
+ /**
296
+ * Transition to new state
297
+ */
298
+ transitionTo(newState) {
299
+ if (this.state !== newState) {
300
+ this.state = newState;
301
+ this.options.onStateChange?.(newState);
302
+ if (newState === 'closed') {
303
+ this.failures = 0;
304
+ this.successes = 0;
305
+ }
306
+ else if (newState === 'half-open') {
307
+ this.successes = 0;
308
+ }
309
+ }
310
+ }
311
+ /**
312
+ * Manually reset the circuit breaker
313
+ */
314
+ reset() {
315
+ this.transitionTo('closed');
316
+ }
317
+ /**
318
+ * Manually trip the circuit breaker
319
+ */
320
+ trip() {
321
+ this.lastFailureTime = Date.now();
322
+ this.transitionTo('open');
323
+ }
324
+ }
325
+ // =============================================================================
326
+ // Combined Utilities
327
+ // =============================================================================
328
+ /**
329
+ * Execute operation with retry, timeout, and circuit breaker
330
+ *
331
+ * @example
332
+ * ```typescript
333
+ * const breaker = new CircuitBreaker()
334
+ *
335
+ * const result = await withResilience(
336
+ * () => fetch('https://api.example.com/data'),
337
+ * {
338
+ * retry: { maxRetries: 3 },
339
+ * timeout: { timeoutMs: 5000 },
340
+ * circuitBreaker: breaker
341
+ * }
342
+ * )
343
+ * ```
344
+ */
345
+ export async function withResilience(operation, options) {
346
+ const { retry, timeout, circuitBreaker } = options;
347
+ // Wrap with timeout if specified
348
+ const timedOperation = timeout
349
+ ? () => withTimeout(operation(), timeout)
350
+ : operation;
351
+ // Wrap with retry if specified
352
+ const retriedOperation = retry
353
+ ? () => withRetry(timedOperation, retry)
354
+ : timedOperation;
355
+ // Wrap with circuit breaker if specified
356
+ if (circuitBreaker) {
357
+ return circuitBreaker.execute(retriedOperation);
358
+ }
359
+ return retriedOperation();
360
+ }
361
+ // =============================================================================
362
+ // Mutex for Singleton Initialization
363
+ // =============================================================================
364
+ /**
365
+ * Simple mutex for protecting async initialization
366
+ *
367
+ * @example
368
+ * ```typescript
369
+ * const initMutex = new AsyncMutex()
370
+ * let instance: Client | null = null
371
+ *
372
+ * async function getInstance() {
373
+ * if (instance) return instance
374
+ * return initMutex.runExclusive(async () => {
375
+ * if (instance) return instance // Double-check after acquiring lock
376
+ * instance = await createClient()
377
+ * return instance
378
+ * })
379
+ * }
380
+ * ```
381
+ */
382
+ export class AsyncMutex {
383
+ locked = false;
384
+ queue = [];
385
+ /**
386
+ * Check if mutex is currently locked
387
+ */
388
+ isLocked() {
389
+ return this.locked;
390
+ }
391
+ /**
392
+ * Acquire the mutex lock
393
+ */
394
+ async acquire() {
395
+ if (!this.locked) {
396
+ this.locked = true;
397
+ return;
398
+ }
399
+ return new Promise(resolve => {
400
+ this.queue.push(resolve);
401
+ });
402
+ }
403
+ /**
404
+ * Release the mutex lock
405
+ */
406
+ release() {
407
+ const next = this.queue.shift();
408
+ if (next) {
409
+ next();
410
+ }
411
+ else {
412
+ this.locked = false;
413
+ }
414
+ }
415
+ /**
416
+ * Run operation exclusively (acquires and releases automatically)
417
+ */
418
+ async runExclusive(operation) {
419
+ await this.acquire();
420
+ try {
421
+ return await operation();
422
+ }
423
+ finally {
424
+ this.release();
425
+ }
426
+ }
427
+ }
428
+ // =============================================================================
429
+ // Safe Cache Operations
430
+ // =============================================================================
431
+ /**
432
+ * Execute cache operation safely (returns null on error instead of throwing)
433
+ */
434
+ export async function safeCacheGet(operation, context) {
435
+ try {
436
+ return await operation();
437
+ }
438
+ catch (error) {
439
+ console.warn(`[SafeCache] Get failed${context ? ` for ${context}` : ''}:`, error);
440
+ return null;
441
+ }
442
+ }
443
+ /**
444
+ * Execute cache set operation safely (returns success boolean)
445
+ */
446
+ export async function safeCacheSet(operation, context) {
447
+ try {
448
+ await operation();
449
+ return true;
450
+ }
451
+ catch (error) {
452
+ console.warn(`[SafeCache] Set failed${context ? ` for ${context}` : ''}:`, error);
453
+ return false;
454
+ }
455
+ }
456
+ /**
457
+ * Process items in batches with individual error handling
458
+ *
459
+ * @example
460
+ * ```typescript
461
+ * const result = await processBatch(
462
+ * items,
463
+ * async (item) => await processItem(item),
464
+ * { chunkSize: 10, concurrency: 5 }
465
+ * )
466
+ * console.log(`Processed ${result.succeeded.length}/${result.total}`)
467
+ * ```
468
+ */
469
+ export async function processBatch(items, processor, options) {
470
+ const { chunkSize = 10, delayBetweenChunks = 0, onProgress } = options ?? {};
471
+ const succeeded = [];
472
+ const failed = [];
473
+ let processed = 0;
474
+ for (let i = 0; i < items.length; i += chunkSize) {
475
+ const chunk = items.slice(i, i + chunkSize);
476
+ const results = await Promise.allSettled(chunk.map((item, idx) => processor(item, i + idx)));
477
+ for (let j = 0; j < results.length; j++) {
478
+ const result = results[j];
479
+ processed++;
480
+ if (result.status === 'fulfilled') {
481
+ succeeded.push(result.value);
482
+ }
483
+ else {
484
+ failed.push({ item: chunk[j], error: result.reason });
485
+ }
486
+ onProgress?.(processed, items.length);
487
+ }
488
+ if (delayBetweenChunks > 0 && i + chunkSize < items.length) {
489
+ await new Promise(resolve => setTimeout(resolve, delayBetweenChunks));
490
+ }
491
+ }
492
+ return {
493
+ succeeded,
494
+ failed,
495
+ total: items.length,
496
+ successRate: items.length > 0 ? succeeded.length / items.length : 1,
497
+ };
498
+ }
499
+ //# sourceMappingURL=resilience.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resilience.js","sourceRoot":"","sources":["../../src/utils/resilience.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AA+CH,MAAM,OAAO,cAAe,SAAQ,KAAK;IAGrB;IAFlB,YACE,OAAe,EACC,UAAmB;QAEnC,KAAK,CAAC,OAAO,CAAC,CAAA;QAFE,eAAU,GAAV,UAAU,CAAS;QAGnC,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAA;IAC9B,CAAC;CACF;AAED,MAAM,OAAO,YAAa,SAAQ,KAAK;IACrC,YAAY,UAAkB,qBAAqB;QACjD,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,IAAI,GAAG,cAAc,CAAA;IAC5B,CAAC;CACF;AAED,MAAM,OAAO,gBAAiB,SAAQ,KAAK;IAGvB;IAFlB,YACE,UAAkB,yBAAyB,EAC3B,OAAgB;QAEhC,KAAK,CAAC,OAAO,CAAC,CAAA;QAFE,YAAO,GAAP,OAAO,CAAS;QAGhC,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAA;IAChC,CAAC;CACF;AAED,gFAAgF;AAChF,iCAAiC;AACjC,gFAAgF;AAEhF,MAAM,qBAAqB,GAAiB;IAC1C,UAAU,EAAE,CAAC;IACb,SAAS,EAAE,IAAI;IACf,QAAQ,EAAE,KAAK;IACf,iBAAiB,EAAE,CAAC;IACpB,MAAM,EAAE,GAAG;CACZ,CAAA;AAED;;GAEG;AACH,SAAS,cAAc,CAAC,OAAe,EAAE,OAAqB;IAC5D,MAAM,gBAAgB,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,iBAAiB,EAAE,OAAO,GAAG,CAAC,CAAC,CAAA;IAC7F,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAA;IAEhE,wCAAwC;IACxC,MAAM,WAAW,GAAG,WAAW,GAAG,OAAO,CAAC,MAAM,CAAA;IAChD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,WAAW,GAAG,CAAC,GAAG,WAAW,CAAA;IAE5D,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,MAAM,CAAC,CAAC,CAAA;AACtD,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,SAA2B,EAC3B,OAA+B;IAE/B,MAAM,IAAI,GAAiB,EAAE,GAAG,qBAAqB,EAAE,GAAG,OAAO,EAAE,CAAA;IAEnE,IAAI,SAAkB,CAAA;IAEtB,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,IAAI,CAAC,UAAU,GAAG,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC;QAChE,IAAI,CAAC;YACH,OAAO,MAAM,SAAS,EAAE,CAAA;QAC1B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,SAAS,GAAG,KAAK,CAAA;YAEjB,2BAA2B;YAC3B,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,IAAI,IAAI,CAAA;YACrD,MAAM,aAAa,GAAG,OAAO,GAAG,IAAI,CAAC,UAAU,CAAA;YAE/C,IAAI,CAAC,WAAW,IAAI,aAAa,EAAE,CAAC;gBAClC,MAAM,KAAK,CAAA;YACb,CAAC;YAED,kBAAkB;YAClB,IAAI,KAAa,CAAA;YACjB,IAAI,KAAK,YAAY,cAAc,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;gBACxD,KAAK,GAAG,KAAK,CAAC,UAAU,CAAA;YAC1B,CAAC;iBAAM,CAAC;gBACN,KAAK,GAAG,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;YACvC,CAAC;YAED,kBAAkB;YAClB,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,CAAA;YAErC,oBAAoB;YACpB,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAA;QAC1D,CAAC;IACH,CAAC;IAED,MAAM,SAAS,CAAA;AACjB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAAc;IAClD,OAAO,CACL,MAAM,KAAK,GAAG,IAAI,kBAAkB;QACpC,MAAM,KAAK,GAAG,IAAI,oBAAoB;QACtC,MAAM,KAAK,GAAG,IAAI,wBAAwB;QAC1C,MAAM,KAAK,GAAG,IAAI,cAAc;QAChC,MAAM,KAAK,GAAG,IAAI,sBAAsB;QACxC,MAAM,KAAK,GAAG,CAAC,kBAAkB;KAClC,CAAA;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAc;IAC7C,IAAI,KAAK,YAAY,cAAc;QAAE,OAAO,IAAI,CAAA;IAEhD,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,CAAA;QAC3C,OAAO,CACL,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC;YAC9B,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC;YAChC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC;YAC7B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC;YAC7B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;YAC3B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;YAC3B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC;YAC9B,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CACtC,CAAA;IACH,CAAC;IAED,OAAO,KAAK,CAAA;AACd,CAAC;AAED,gFAAgF;AAChF,qBAAqB;AACrB,gFAAgF;AAEhF;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,OAAmB,EACnB,OAA0B;IAE1B,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,OAAO,CAAA;IAE3D,IAAI,SAAwC,CAAA;IAE5C,MAAM,cAAc,GAAG,IAAI,OAAO,CAAI,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE;QAClD,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE;YAC1B,SAAS,EAAE,EAAE,CAAA;YACb,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;gBAC3B,sCAAsC;YACxC,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,IAAI,YAAY,CAAC,OAAO,IAAI,6BAA6B,SAAS,IAAI,CAAC,CAAC,CAAA;YACjF,CAAC;QACH,CAAC,EAAE,SAAS,CAAC,CAAA;IACf,CAAC,CAAC,CAAA;IAEF,kEAAkE;IAClE,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,MAAM,eAAe,GAAG,IAAI,OAAO,CAAI,OAAO,CAAC,EAAE;YAC/C,UAAU,CAAC,GAAG,EAAE;gBACd,SAAS,EAAE,EAAE,CAAA;gBACb,OAAO,CAAC,QAAQ,CAAC,CAAA;YACnB,CAAC,EAAE,SAAS,CAAC,CAAA;QACf,CAAC,CAAC,CAAA;QAEF,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC,CAAA;YAC7D,YAAY,CAAC,SAAU,CAAC,CAAA;YACxB,OAAO,MAAM,CAAA;QACf,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,YAAY,CAAC,SAAU,CAAC,CAAA;YACxB,MAAM,KAAK,CAAA;QACb,CAAC;IACH,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC,CAAA;QAC5D,YAAY,CAAC,SAAU,CAAC,CAAA;QACxB,OAAO,MAAM,CAAA;IACf,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,YAAY,CAAC,SAAU,CAAC,CAAA;QACxB,MAAM,KAAK,CAAA;IACb,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,uBAAuB,CAAC,SAAiB;IAIvD,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAA;IACxC,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,SAAS,CAAC,CAAA;IAEjE,OAAO;QACL,UAAU;QACV,OAAO,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC;KACvC,CAAA;AACH,CAAC;AAED,gFAAgF;AAChF,0BAA0B;AAC1B,gFAAgF;AAEhF,MAAM,uBAAuB,GAA0B;IACrD,gBAAgB,EAAE,CAAC;IACnB,YAAY,EAAE,KAAK;IACnB,gBAAgB,EAAE,CAAC;CACpB,CAAA;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,OAAO,cAAc;IACjB,KAAK,GAAiB,QAAQ,CAAA;IAC9B,QAAQ,GAAG,CAAC,CAAA;IACZ,SAAS,GAAG,CAAC,CAAA;IACb,eAAe,GAAG,CAAC,CAAA;IACnB,OAAO,CAAuB;IAEtC,YAAY,OAAwC;QAClD,IAAI,CAAC,OAAO,GAAG,EAAE,GAAG,uBAAuB,EAAE,GAAG,OAAO,EAAE,CAAA;IAC3D,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,OAAO,IAAI,CAAC,KAAK,CAAA;IACnB,CAAC;IAED;;OAEG;IACH,QAAQ;QAMN,OAAO;YACL,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,eAAe,EAAE,IAAI,CAAC,eAAe;SACtC,CAAA;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO,CAAI,SAA2B;QAC1C,4DAA4D;QAC5D,IAAI,IAAI,CAAC,KAAK,KAAK,MAAM,EAAE,CAAC;YAC1B,MAAM,gBAAgB,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,eAAe,CAAA;YAC1D,IAAI,gBAAgB,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;gBAClD,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAA;YAChC,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,gBAAgB,CACxB,wCAAwC,IAAI,CAAC,OAAO,CAAC,YAAY,GAAG,gBAAgB,IAAI,EACxF,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CACjD,CAAA;YACH,CAAC;QACH,CAAC;QAED,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,SAAS,EAAE,CAAA;YAChC,IAAI,CAAC,SAAS,EAAE,CAAA;YAChB,OAAO,MAAM,CAAA;QACf,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,SAAS,EAAE,CAAA;YAChB,MAAM,KAAK,CAAA;QACb,CAAC;IACH,CAAC;IAED;;OAEG;IACK,SAAS;QACf,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAA;QAEjB,IAAI,IAAI,CAAC,KAAK,KAAK,WAAW,EAAE,CAAC;YAC/B,IAAI,CAAC,SAAS,EAAE,CAAA;YAChB,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC;gBACpD,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAA;YAC7B,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACK,SAAS;QACf,IAAI,CAAC,QAAQ,EAAE,CAAA;QACf,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QACjC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAA;QAElB,IAAI,IAAI,CAAC,KAAK,KAAK,WAAW,EAAE,CAAC;YAC/B,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAA;QAC3B,CAAC;aAAM,IAAI,IAAI,CAAC,KAAK,KAAK,QAAQ,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC;YACrF,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAA;QAC3B,CAAC;IACH,CAAC;IAED;;OAEG;IACK,YAAY,CAAC,QAAsB;QACzC,IAAI,IAAI,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC5B,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAA;YACrB,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,QAAQ,CAAC,CAAA;YAEtC,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;gBAC1B,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAA;gBACjB,IAAI,CAAC,SAAS,GAAG,CAAC,CAAA;YACpB,CAAC;iBAAM,IAAI,QAAQ,KAAK,WAAW,EAAE,CAAC;gBACpC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAA;YACpB,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAA;IAC7B,CAAC;IAED;;OAEG;IACH,IAAI;QACF,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QACjC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAA;IAC3B,CAAC;CACF;AAED,gFAAgF;AAChF,qBAAqB;AACrB,gFAAgF;AAEhF;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,SAA2B,EAC3B,OAIC;IAED,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,GAAG,OAAO,CAAA;IAElD,iCAAiC;IACjC,MAAM,cAAc,GAAG,OAAO;QAC5B,CAAC,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,SAAS,EAAE,EAAE,OAAO,CAAC;QACzC,CAAC,CAAC,SAAS,CAAA;IAEb,+BAA+B;IAC/B,MAAM,gBAAgB,GAAG,KAAK;QAC5B,CAAC,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,cAAc,EAAE,KAAK,CAAC;QACxC,CAAC,CAAC,cAAc,CAAA;IAElB,yCAAyC;IACzC,IAAI,cAAc,EAAE,CAAC;QACnB,OAAO,cAAc,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAA;IACjD,CAAC;IAED,OAAO,gBAAgB,EAAE,CAAA;AAC3B,CAAC;AAED,gFAAgF;AAChF,qCAAqC;AACrC,gFAAgF;AAEhF;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,OAAO,UAAU;IACb,MAAM,GAAG,KAAK,CAAA;IACd,KAAK,GAAsB,EAAE,CAAA;IAErC;;OAEG;IACH,QAAQ;QACN,OAAO,IAAI,CAAC,MAAM,CAAA;IACpB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO;QACX,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAA;YAClB,OAAM;QACR,CAAC;QAED,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;YAC3B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAC1B,CAAC,CAAC,CAAA;IACJ,CAAC;IAED;;OAEG;IACH,OAAO;QACL,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAA;QAC/B,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,EAAE,CAAA;QACR,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,MAAM,GAAG,KAAK,CAAA;QACrB,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY,CAAI,SAA2B;QAC/C,MAAM,IAAI,CAAC,OAAO,EAAE,CAAA;QACpB,IAAI,CAAC;YACH,OAAO,MAAM,SAAS,EAAE,CAAA;QAC1B,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,OAAO,EAAE,CAAA;QAChB,CAAC;IACH,CAAC;CACF;AAED,gFAAgF;AAChF,wBAAwB;AACxB,gFAAgF;AAEhF;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,SAAkC,EAClC,OAAgB;IAEhB,IAAI,CAAC;QACH,OAAO,MAAM,SAAS,EAAE,CAAA;IAC1B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,yBAAyB,OAAO,CAAC,CAAC,CAAC,QAAQ,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,CAAA;QACjF,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,SAA8B,EAC9B,OAAgB;IAEhB,IAAI,CAAC;QACH,MAAM,SAAS,EAAE,CAAA;QACjB,OAAO,IAAI,CAAA;IACb,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,yBAAyB,OAAO,CAAC,CAAC,CAAC,QAAQ,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,CAAA;QACjF,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC;AAaD;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,KAAU,EACV,SAAiD,EACjD,OAKC;IAED,MAAM,EAAE,SAAS,GAAG,EAAE,EAAE,kBAAkB,GAAG,CAAC,EAAE,UAAU,EAAE,GAAG,OAAO,IAAI,EAAE,CAAA;IAE5E,MAAM,SAAS,GAAQ,EAAE,CAAA;IACzB,MAAM,MAAM,GAA6C,EAAE,CAAA;IAC3D,IAAI,SAAS,GAAG,CAAC,CAAA;IAEjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,SAAS,EAAE,CAAC;QACjD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,CAAA;QAE3C,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CACtC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CACnD,CAAA;QAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACxC,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;YACzB,SAAS,EAAE,CAAA;YAEX,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;gBAClC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YAC9B,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAA;YACvD,CAAC;YAED,UAAU,EAAE,CAAC,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;QACvC,CAAC;QAED,IAAI,kBAAkB,GAAG,CAAC,IAAI,CAAC,GAAG,SAAS,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;YAC3D,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC,CAAA;QACvE,CAAC;IACH,CAAC;IAED,OAAO;QACL,SAAS;QACT,MAAM;QACN,KAAK,EAAE,KAAK,CAAC,MAAM;QACnB,WAAW,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;KACpE,CAAA;AACH,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cmp-standards",
3
- "version": "2.8.1",
3
+ "version": "3.1.0",
4
4
  "type": "module",
5
5
  "description": "Collective Memory Protocol - Persistent memory, cross-project learning, and multi-agent collaboration",
6
6
  "main": "dist/index.js",
@@ -53,6 +53,8 @@
53
53
  "express": "^4.18.2",
54
54
  "glob": "^10.3.10",
55
55
  "gray-matter": "^4.0.3",
56
+ "ora": "^8.0.0",
57
+ "inquirer": "^9.2.0",
56
58
  "mysql2": ">=3.0.0",
57
59
  "open": "^10.0.0",
58
60
  "simple-git": "^3.30.0",
@@ -72,6 +74,7 @@
72
74
  "@types/cors": "^2.8.17",
73
75
  "@types/eslint": "^8.56.0",
74
76
  "@types/express": "^4.17.21",
77
+ "@types/inquirer": "^9.0.7",
75
78
  "@types/node": "^20.11.0",
76
79
  "@typescript-eslint/eslint-plugin": "^6.19.0",
77
80
  "@typescript-eslint/parser": "^6.19.0",
@@ -100,6 +103,14 @@
100
103
  "./eslint": {
101
104
  "import": "./dist/eslint/index.js",
102
105
  "types": "./dist/eslint/index.d.ts"
106
+ },
107
+ "./testing": {
108
+ "import": "./dist/testing/index.js",
109
+ "types": "./dist/testing/index.d.ts"
110
+ },
111
+ "./plugins": {
112
+ "import": "./dist/plugins/index.js",
113
+ "types": "./dist/plugins/index.d.ts"
103
114
  }
104
115
  }
105
116
  }