cmp-standards 2.6.0 → 2.8.0-alpha

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 (129) hide show
  1. package/README.md +633 -633
  2. package/dist/cache/EmbeddingCache.d.ts +109 -0
  3. package/dist/cache/EmbeddingCache.d.ts.map +1 -0
  4. package/dist/cache/EmbeddingCache.js +239 -0
  5. package/dist/cache/EmbeddingCache.js.map +1 -0
  6. package/dist/cache/index.d.ts +6 -0
  7. package/dist/cache/index.d.ts.map +1 -0
  8. package/dist/cache/index.js +6 -0
  9. package/dist/cache/index.js.map +1 -0
  10. package/dist/db/turso-client.js +11 -11
  11. package/dist/eslint/rules/no-async-useeffect.js +6 -6
  12. package/dist/events/EventBus.d.ts +87 -0
  13. package/dist/events/EventBus.d.ts.map +1 -0
  14. package/dist/events/EventBus.js +200 -0
  15. package/dist/events/EventBus.js.map +1 -0
  16. package/dist/events/index.d.ts +7 -0
  17. package/dist/events/index.d.ts.map +1 -0
  18. package/dist/events/index.js +9 -0
  19. package/dist/events/index.js.map +1 -0
  20. package/dist/events/types.d.ts +989 -0
  21. package/dist/events/types.d.ts.map +1 -0
  22. package/dist/events/types.js +136 -0
  23. package/dist/events/types.js.map +1 -0
  24. package/dist/experts/ConsensusEngine.d.ts +57 -0
  25. package/dist/experts/ConsensusEngine.d.ts.map +1 -0
  26. package/dist/experts/ConsensusEngine.js +146 -0
  27. package/dist/experts/ConsensusEngine.js.map +1 -0
  28. package/dist/experts/ExpertPanelService.d.ts +84 -0
  29. package/dist/experts/ExpertPanelService.d.ts.map +1 -0
  30. package/dist/experts/ExpertPanelService.js +204 -0
  31. package/dist/experts/ExpertPanelService.js.map +1 -0
  32. package/dist/experts/ExpertRouter.d.ts +68 -0
  33. package/dist/experts/ExpertRouter.d.ts.map +1 -0
  34. package/dist/experts/ExpertRouter.js +374 -0
  35. package/dist/experts/ExpertRouter.js.map +1 -0
  36. package/dist/experts/VoteCollector.d.ts +58 -0
  37. package/dist/experts/VoteCollector.d.ts.map +1 -0
  38. package/dist/experts/VoteCollector.js +146 -0
  39. package/dist/experts/VoteCollector.js.map +1 -0
  40. package/dist/experts/index.d.ts +9 -0
  41. package/dist/experts/index.d.ts.map +1 -0
  42. package/dist/experts/index.js +13 -0
  43. package/dist/experts/index.js.map +1 -0
  44. package/dist/hooks/cloud-pre-tool-use.js +20 -20
  45. package/dist/hooks/expert-review.d.ts +74 -0
  46. package/dist/hooks/expert-review.d.ts.map +1 -0
  47. package/dist/hooks/expert-review.js +220 -0
  48. package/dist/hooks/expert-review.js.map +1 -0
  49. package/dist/hooks/index.d.ts +1 -0
  50. package/dist/hooks/index.d.ts.map +1 -1
  51. package/dist/hooks/index.js +2 -0
  52. package/dist/hooks/index.js.map +1 -1
  53. package/dist/index.d.ts +13 -0
  54. package/dist/index.d.ts.map +1 -1
  55. package/dist/index.js +22 -0
  56. package/dist/index.js.map +1 -1
  57. package/dist/performance/Debouncer.d.ts +91 -0
  58. package/dist/performance/Debouncer.d.ts.map +1 -0
  59. package/dist/performance/Debouncer.js +198 -0
  60. package/dist/performance/Debouncer.js.map +1 -0
  61. package/dist/performance/MemoryDecay.d.ts +82 -0
  62. package/dist/performance/MemoryDecay.d.ts.map +1 -0
  63. package/dist/performance/MemoryDecay.js +153 -0
  64. package/dist/performance/MemoryDecay.js.map +1 -0
  65. package/dist/performance/index.d.ts +7 -0
  66. package/dist/performance/index.d.ts.map +1 -0
  67. package/dist/performance/index.js +9 -0
  68. package/dist/performance/index.js.map +1 -0
  69. package/dist/schema/expert-types.d.ts +395 -0
  70. package/dist/schema/expert-types.d.ts.map +1 -0
  71. package/dist/schema/expert-types.js +250 -0
  72. package/dist/schema/expert-types.js.map +1 -0
  73. package/dist/schema/plans.d.ts +16 -16
  74. package/dist/schema/tracking.d.ts +90 -90
  75. package/dist/services/ContextGenerator.js +7 -7
  76. package/dist/services/ProjectScaffold.js +76 -76
  77. package/dist/services/context-injector.d.ts +6 -0
  78. package/dist/services/context-injector.d.ts.map +1 -1
  79. package/dist/services/context-injector.js +43 -3
  80. package/dist/services/context-injector.js.map +1 -1
  81. package/dist/services/memory-router.d.ts +25 -1
  82. package/dist/services/memory-router.d.ts.map +1 -1
  83. package/dist/services/memory-router.js +176 -32
  84. package/dist/services/memory-router.js.map +1 -1
  85. package/dist/services/pattern-tracker.d.ts +5 -1
  86. package/dist/services/pattern-tracker.d.ts.map +1 -1
  87. package/dist/services/pattern-tracker.js +114 -36
  88. package/dist/services/pattern-tracker.js.map +1 -1
  89. package/dist/services/semantic-search.js +2 -2
  90. package/dist/types/index.d.ts +329 -4
  91. package/dist/types/index.d.ts.map +1 -1
  92. package/dist/types/index.js +186 -9
  93. package/dist/types/index.js.map +1 -1
  94. package/package.json +105 -100
  95. package/standards/README.md +50 -50
  96. package/standards/experts/expert-routing.md +215 -215
  97. package/standards/general/code-quality.md +86 -86
  98. package/standards/general/memory-usage.md +205 -205
  99. package/standards/general/sync-workflow.md +235 -235
  100. package/standards/general/workflow.md +82 -82
  101. package/standards/hooks/mandatory-tracking.md +446 -446
  102. package/standards/infrastructure/cloud-database.md +287 -287
  103. package/standards/mcp/server-design.md +243 -243
  104. package/standards/mcp/tool-patterns.md +354 -354
  105. package/standards/skills/skill-structure.md +286 -286
  106. package/standards/skills/workflow-design.md +323 -323
  107. package/standards/tools/tool-design.md +297 -297
  108. package/templates/agents/architecture-expert.md +61 -61
  109. package/templates/agents/database-expert.md +62 -62
  110. package/templates/agents/documentation-expert.md +57 -57
  111. package/templates/agents/memory-expert.md +88 -88
  112. package/templates/agents/performance-expert.md +61 -61
  113. package/templates/agents/security-expert.md +59 -59
  114. package/templates/agents/ux-expert.md +63 -63
  115. package/templates/agents/worker.md +75 -75
  116. package/templates/ai-skills/SKILL_TEMPLATE.md +55 -55
  117. package/templates/claude-settings.json +72 -72
  118. package/templates/commands/experts.md +138 -138
  119. package/templates/hooks/README.md +158 -158
  120. package/templates/hooks/project.config.json.template +77 -77
  121. package/templates/hooks/settings.local.json.template +57 -57
  122. package/templates/memory-config.json +56 -56
  123. package/templates/memory-config.schema.json +212 -212
  124. package/templates/settings.json +58 -58
  125. package/templates/skills/continue.md +205 -205
  126. package/templates/workflows/business-improvement.md +264 -264
  127. package/templates/workflows/expert-review.md +153 -153
  128. package/templates/workflows/internal-app.md +245 -245
  129. package/templates/workflows/sync-docs.md +187 -187
@@ -0,0 +1,109 @@
1
+ /**
2
+ * @file EmbeddingCache - LRU cache for embeddings in cmp-standards v2.8
3
+ * @description High-performance caching layer to reduce embedding API calls
4
+ *
5
+ * Performance targets:
6
+ * - Cache hit: <10ms (vs 200-500ms API call)
7
+ * - Memory efficient with LRU eviction
8
+ * - Thread-safe for concurrent access
9
+ */
10
+ export interface CacheEntry {
11
+ /** The embedding vector */
12
+ vector: number[];
13
+ /** Expiration timestamp */
14
+ expires: number;
15
+ /** Number of times this entry was accessed */
16
+ hits: number;
17
+ /** When this entry was created */
18
+ createdAt: number;
19
+ /** Last access timestamp */
20
+ lastAccessedAt: number;
21
+ /** Original text (for debugging) */
22
+ textHash: string;
23
+ }
24
+ export interface EmbeddingCacheConfig {
25
+ /** Maximum number of entries in cache */
26
+ maxSize: number;
27
+ /** Time-to-live in milliseconds (default: 24 hours) */
28
+ ttl: number;
29
+ /** Enable debug logging */
30
+ debug: boolean;
31
+ /** Minimum text length to cache (skip very short texts) */
32
+ minTextLength: number;
33
+ }
34
+ export interface CacheStats {
35
+ /** Total number of entries */
36
+ size: number;
37
+ /** Cache hit count */
38
+ hits: number;
39
+ /** Cache miss count */
40
+ misses: number;
41
+ /** Hit rate (0-1) */
42
+ hitRate: number;
43
+ /** Total memory estimate in bytes */
44
+ memoryEstimate: number;
45
+ /** Average entry age in ms */
46
+ avgAge: number;
47
+ }
48
+ export declare class EmbeddingCache {
49
+ private cache;
50
+ private config;
51
+ private stats;
52
+ constructor(config?: Partial<EmbeddingCacheConfig>);
53
+ /**
54
+ * Generate a hash key for the text
55
+ */
56
+ private hash;
57
+ /**
58
+ * Get embedding from cache if available and not expired
59
+ */
60
+ get(text: string): number[] | null;
61
+ /**
62
+ * Store embedding in cache
63
+ */
64
+ set(text: string, vector: number[]): void;
65
+ /**
66
+ * Check if text is cached (without updating access stats)
67
+ */
68
+ has(text: string): boolean;
69
+ /**
70
+ * Evict the least recently used entry
71
+ */
72
+ private evictLRU;
73
+ /**
74
+ * Remove expired entries
75
+ */
76
+ cleanup(): number;
77
+ /**
78
+ * Get cache statistics
79
+ */
80
+ getStats(): CacheStats;
81
+ /**
82
+ * Clear all entries
83
+ */
84
+ clear(): void;
85
+ /**
86
+ * Get current size
87
+ */
88
+ get size(): number;
89
+ /**
90
+ * Get all cached keys (for debugging)
91
+ */
92
+ keys(): string[];
93
+ }
94
+ /**
95
+ * Get or create the global EmbeddingCache instance
96
+ */
97
+ export declare function getEmbeddingCache(config?: Partial<EmbeddingCacheConfig>): EmbeddingCache;
98
+ /**
99
+ * Reset the global cache (useful for testing)
100
+ */
101
+ export declare function resetEmbeddingCache(): void;
102
+ export type EmbeddingProvider = (text: string) => Promise<number[]>;
103
+ /**
104
+ * Create a cached version of an embedding function
105
+ * @param provider The underlying embedding provider
106
+ * @param config Cache configuration
107
+ */
108
+ export declare function createCachedEmbedding(provider: EmbeddingProvider, config?: Partial<EmbeddingCacheConfig>): EmbeddingProvider;
109
+ //# sourceMappingURL=EmbeddingCache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EmbeddingCache.d.ts","sourceRoot":"","sources":["../../src/cache/EmbeddingCache.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAQH,MAAM,WAAW,UAAU;IACzB,2BAA2B;IAC3B,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,2BAA2B;IAC3B,OAAO,EAAE,MAAM,CAAA;IACf,8CAA8C;IAC9C,IAAI,EAAE,MAAM,CAAA;IACZ,kCAAkC;IAClC,SAAS,EAAE,MAAM,CAAA;IACjB,4BAA4B;IAC5B,cAAc,EAAE,MAAM,CAAA;IACtB,oCAAoC;IACpC,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,oBAAoB;IACnC,yCAAyC;IACzC,OAAO,EAAE,MAAM,CAAA;IACf,uDAAuD;IACvD,GAAG,EAAE,MAAM,CAAA;IACX,2BAA2B;IAC3B,KAAK,EAAE,OAAO,CAAA;IACd,2DAA2D;IAC3D,aAAa,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,WAAW,UAAU;IACzB,8BAA8B;IAC9B,IAAI,EAAE,MAAM,CAAA;IACZ,sBAAsB;IACtB,IAAI,EAAE,MAAM,CAAA;IACZ,uBAAuB;IACvB,MAAM,EAAE,MAAM,CAAA;IACd,qBAAqB;IACrB,OAAO,EAAE,MAAM,CAAA;IACf,qCAAqC;IACrC,cAAc,EAAE,MAAM,CAAA;IACtB,8BAA8B;IAC9B,MAAM,EAAE,MAAM,CAAA;CACf;AAiBD,qBAAa,cAAc;IACzB,OAAO,CAAC,KAAK,CAAgC;IAC7C,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,KAAK,CAAyB;gBAE1B,MAAM,GAAE,OAAO,CAAC,oBAAoB,CAAM;IAItD;;OAEG;IACH,OAAO,CAAC,IAAI;IAIZ;;OAEG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI;IAsClC;;OAEG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI;IA6BzC;;OAEG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAiB1B;;OAEG;IACH,OAAO,CAAC,QAAQ;IAsBhB;;OAEG;IACH,OAAO,IAAI,MAAM;IAkBjB;;OAEG;IACH,QAAQ,IAAI,UAAU;IAuBtB;;OAEG;IACH,KAAK,IAAI,IAAI;IAQb;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;OAEG;IACH,IAAI,IAAI,MAAM,EAAE;CAGjB;AAQD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,GAAG,cAAc,CAKxF;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,IAAI,CAK1C;AAMD,MAAM,MAAM,iBAAiB,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;AAEnE;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,iBAAiB,EAC3B,MAAM,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,GACrC,iBAAiB,CAkBnB"}
@@ -0,0 +1,239 @@
1
+ /**
2
+ * @file EmbeddingCache - LRU cache for embeddings in cmp-standards v2.8
3
+ * @description High-performance caching layer to reduce embedding API calls
4
+ *
5
+ * Performance targets:
6
+ * - Cache hit: <10ms (vs 200-500ms API call)
7
+ * - Memory efficient with LRU eviction
8
+ * - Thread-safe for concurrent access
9
+ */
10
+ import { createHash } from 'crypto';
11
+ // =============================================================================
12
+ // Configuration
13
+ // =============================================================================
14
+ const DEFAULT_CONFIG = {
15
+ maxSize: 1000,
16
+ ttl: 24 * 60 * 60 * 1000, // 24 hours
17
+ debug: false,
18
+ minTextLength: 10,
19
+ };
20
+ // =============================================================================
21
+ // EmbeddingCache Implementation
22
+ // =============================================================================
23
+ export class EmbeddingCache {
24
+ cache = new Map();
25
+ config;
26
+ stats = { hits: 0, misses: 0 };
27
+ constructor(config = {}) {
28
+ this.config = { ...DEFAULT_CONFIG, ...config };
29
+ }
30
+ /**
31
+ * Generate a hash key for the text
32
+ */
33
+ hash(text) {
34
+ return createHash('md5').update(text.trim().toLowerCase()).digest('hex');
35
+ }
36
+ /**
37
+ * Get embedding from cache if available and not expired
38
+ */
39
+ get(text) {
40
+ if (text.length < this.config.minTextLength) {
41
+ return null;
42
+ }
43
+ const key = this.hash(text);
44
+ const entry = this.cache.get(key);
45
+ if (!entry) {
46
+ this.stats.misses++;
47
+ if (this.config.debug) {
48
+ console.log(`[EmbeddingCache] MISS: ${key.substring(0, 8)}...`);
49
+ }
50
+ return null;
51
+ }
52
+ // Check expiration
53
+ if (Date.now() > entry.expires) {
54
+ this.cache.delete(key);
55
+ this.stats.misses++;
56
+ if (this.config.debug) {
57
+ console.log(`[EmbeddingCache] EXPIRED: ${key.substring(0, 8)}...`);
58
+ }
59
+ return null;
60
+ }
61
+ // Update access stats
62
+ entry.hits++;
63
+ entry.lastAccessedAt = Date.now();
64
+ this.stats.hits++;
65
+ if (this.config.debug) {
66
+ console.log(`[EmbeddingCache] HIT: ${key.substring(0, 8)}... (${entry.hits} hits)`);
67
+ }
68
+ return entry.vector;
69
+ }
70
+ /**
71
+ * Store embedding in cache
72
+ */
73
+ set(text, vector) {
74
+ if (text.length < this.config.minTextLength) {
75
+ return;
76
+ }
77
+ // Evict if at capacity
78
+ if (this.cache.size >= this.config.maxSize) {
79
+ this.evictLRU();
80
+ }
81
+ const key = this.hash(text);
82
+ const now = Date.now();
83
+ const entry = {
84
+ vector,
85
+ expires: now + this.config.ttl,
86
+ hits: 0,
87
+ createdAt: now,
88
+ lastAccessedAt: now,
89
+ textHash: key,
90
+ };
91
+ this.cache.set(key, entry);
92
+ if (this.config.debug) {
93
+ console.log(`[EmbeddingCache] SET: ${key.substring(0, 8)}... (size: ${this.cache.size})`);
94
+ }
95
+ }
96
+ /**
97
+ * Check if text is cached (without updating access stats)
98
+ */
99
+ has(text) {
100
+ if (text.length < this.config.minTextLength) {
101
+ return false;
102
+ }
103
+ const key = this.hash(text);
104
+ const entry = this.cache.get(key);
105
+ if (!entry)
106
+ return false;
107
+ if (Date.now() > entry.expires) {
108
+ this.cache.delete(key);
109
+ return false;
110
+ }
111
+ return true;
112
+ }
113
+ /**
114
+ * Evict the least recently used entry
115
+ */
116
+ evictLRU() {
117
+ let oldestKey = '';
118
+ let oldestAccess = Infinity;
119
+ for (const [key, entry] of this.cache) {
120
+ // Combine last access time with hit count for eviction decision
121
+ // Lower score = more likely to evict
122
+ const score = entry.lastAccessedAt + (entry.hits * 1000);
123
+ if (score < oldestAccess) {
124
+ oldestAccess = score;
125
+ oldestKey = key;
126
+ }
127
+ }
128
+ if (oldestKey) {
129
+ this.cache.delete(oldestKey);
130
+ if (this.config.debug) {
131
+ console.log(`[EmbeddingCache] EVICT: ${oldestKey.substring(0, 8)}...`);
132
+ }
133
+ }
134
+ }
135
+ /**
136
+ * Remove expired entries
137
+ */
138
+ cleanup() {
139
+ const now = Date.now();
140
+ let removed = 0;
141
+ for (const [key, entry] of this.cache) {
142
+ if (now > entry.expires) {
143
+ this.cache.delete(key);
144
+ removed++;
145
+ }
146
+ }
147
+ if (this.config.debug && removed > 0) {
148
+ console.log(`[EmbeddingCache] CLEANUP: Removed ${removed} expired entries`);
149
+ }
150
+ return removed;
151
+ }
152
+ /**
153
+ * Get cache statistics
154
+ */
155
+ getStats() {
156
+ const now = Date.now();
157
+ let totalAge = 0;
158
+ let memoryEstimate = 0;
159
+ for (const entry of this.cache.values()) {
160
+ totalAge += now - entry.createdAt;
161
+ // Estimate: 4 bytes per float * vector length + overhead
162
+ memoryEstimate += entry.vector.length * 4 + 100;
163
+ }
164
+ const totalRequests = this.stats.hits + this.stats.misses;
165
+ return {
166
+ size: this.cache.size,
167
+ hits: this.stats.hits,
168
+ misses: this.stats.misses,
169
+ hitRate: totalRequests > 0 ? this.stats.hits / totalRequests : 0,
170
+ memoryEstimate,
171
+ avgAge: this.cache.size > 0 ? totalAge / this.cache.size : 0,
172
+ };
173
+ }
174
+ /**
175
+ * Clear all entries
176
+ */
177
+ clear() {
178
+ this.cache.clear();
179
+ this.stats = { hits: 0, misses: 0 };
180
+ if (this.config.debug) {
181
+ console.log('[EmbeddingCache] CLEARED');
182
+ }
183
+ }
184
+ /**
185
+ * Get current size
186
+ */
187
+ get size() {
188
+ return this.cache.size;
189
+ }
190
+ /**
191
+ * Get all cached keys (for debugging)
192
+ */
193
+ keys() {
194
+ return Array.from(this.cache.keys());
195
+ }
196
+ }
197
+ // =============================================================================
198
+ // Singleton Instance
199
+ // =============================================================================
200
+ let globalCache = null;
201
+ /**
202
+ * Get or create the global EmbeddingCache instance
203
+ */
204
+ export function getEmbeddingCache(config) {
205
+ if (!globalCache) {
206
+ globalCache = new EmbeddingCache(config);
207
+ }
208
+ return globalCache;
209
+ }
210
+ /**
211
+ * Reset the global cache (useful for testing)
212
+ */
213
+ export function resetEmbeddingCache() {
214
+ if (globalCache) {
215
+ globalCache.clear();
216
+ }
217
+ globalCache = null;
218
+ }
219
+ /**
220
+ * Create a cached version of an embedding function
221
+ * @param provider The underlying embedding provider
222
+ * @param config Cache configuration
223
+ */
224
+ export function createCachedEmbedding(provider, config) {
225
+ const cache = getEmbeddingCache(config);
226
+ return async (text) => {
227
+ // Try cache first
228
+ const cached = cache.get(text);
229
+ if (cached) {
230
+ return cached;
231
+ }
232
+ // Call provider
233
+ const vector = await provider(text);
234
+ // Cache result
235
+ cache.set(text, vector);
236
+ return vector;
237
+ };
238
+ }
239
+ //# sourceMappingURL=EmbeddingCache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EmbeddingCache.js","sourceRoot":"","sources":["../../src/cache/EmbeddingCache.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * @file Cache Module - cmp-standards v2.8
3
+ * @description High-performance caching for embeddings and other expensive operations
4
+ */
5
+ export { EmbeddingCache, EmbeddingCacheConfig, CacheEntry, CacheStats, getEmbeddingCache, resetEmbeddingCache, createCachedEmbedding, EmbeddingProvider, } from './EmbeddingCache.js';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cache/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,cAAc,EACd,oBAAoB,EACpB,UAAU,EACV,UAAU,EACV,iBAAiB,EACjB,mBAAmB,EACnB,qBAAqB,EACrB,iBAAiB,GAClB,MAAM,qBAAqB,CAAA"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * @file Cache Module - cmp-standards v2.8
3
+ * @description High-performance caching for embeddings and other expensive operations
4
+ */
5
+ export { EmbeddingCache, getEmbeddingCache, resetEmbeddingCache, createCachedEmbedding, } from './EmbeddingCache.js';
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cache/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,cAAc,EAId,iBAAiB,EACjB,mBAAmB,EACnB,qBAAqB,GAEtB,MAAM,qBAAqB,CAAA"}
@@ -60,16 +60,16 @@ export async function setupTursoSchema() {
60
60
  try {
61
61
  const db = getTurso();
62
62
  // Tabla principal de items (similar a DEV_Items en MySQL)
63
- await db.execute(`
64
- CREATE TABLE IF NOT EXISTS items (
65
- id TEXT PRIMARY KEY,
66
- type TEXT NOT NULL,
67
- status TEXT NOT NULL DEFAULT 'pending',
68
- system TEXT NOT NULL,
69
- content TEXT NOT NULL,
70
- created_at TEXT NOT NULL DEFAULT (datetime('now')),
71
- updated_at TEXT NOT NULL DEFAULT (datetime('now'))
72
- )
63
+ await db.execute(`
64
+ CREATE TABLE IF NOT EXISTS items (
65
+ id TEXT PRIMARY KEY,
66
+ type TEXT NOT NULL,
67
+ status TEXT NOT NULL DEFAULT 'pending',
68
+ system TEXT NOT NULL,
69
+ content TEXT NOT NULL,
70
+ created_at TEXT NOT NULL DEFAULT (datetime('now')),
71
+ updated_at TEXT NOT NULL DEFAULT (datetime('now'))
72
+ )
73
73
  `);
74
74
  // Índices para queries comunes
75
75
  await db.execute(`CREATE INDEX IF NOT EXISTS idx_items_type ON items(type)`);
@@ -95,7 +95,7 @@ export async function create(type, system, content, status = 'pending') {
95
95
  const id = ulid();
96
96
  const now = new Date().toISOString();
97
97
  await db.execute({
98
- sql: `INSERT INTO items (id, type, status, system, content, created_at, updated_at)
98
+ sql: `INSERT INTO items (id, type, status, system, content, created_at, updated_at)
99
99
  VALUES (?, ?, ?, ?, ?, ?, ?)`,
100
100
  args: [id, type, status, system, JSON.stringify(content), now, now]
101
101
  });
@@ -14,12 +14,12 @@ const rule = {
14
14
  },
15
15
  messages: {
16
16
  noAsyncUseEffect: 'useEffect callback cannot be async. Create an inner async function and call it.',
17
- suggestion: `
18
- useEffect(() => {
19
- const fetchData = async () => {
20
- // your async code
21
- };
22
- fetchData();
17
+ suggestion: `
18
+ useEffect(() => {
19
+ const fetchData = async () => {
20
+ // your async code
21
+ };
22
+ fetchData();
23
23
  }, []);`,
24
24
  },
25
25
  schema: [],
@@ -0,0 +1,87 @@
1
+ /**
2
+ * @file EventBus - In-memory event bus for cmp-standards v2.8
3
+ * @description Decoupled event-driven architecture for expert panel orchestration
4
+ *
5
+ * Features:
6
+ * - Type-safe event publishing and subscribing
7
+ * - Parallel handler execution with Promise.allSettled
8
+ * - Event history for debugging
9
+ * - Handler timeout protection
10
+ * - Correlation ID tracking for request tracing
11
+ */
12
+ import { Event, EventType, EventHandler } from './types.js';
13
+ export interface EventBusConfig {
14
+ /** Maximum events to keep in history */
15
+ historyLimit: number;
16
+ /** Handler execution timeout in ms */
17
+ handlerTimeout: number;
18
+ /** Enable debug logging */
19
+ debug: boolean;
20
+ }
21
+ export declare class EventBus {
22
+ private handlers;
23
+ private history;
24
+ private config;
25
+ constructor(config?: Partial<EventBusConfig>);
26
+ /**
27
+ * Subscribe to an event type
28
+ * @returns Unsubscribe function
29
+ */
30
+ subscribe<T extends EventType>(eventType: T, handler: EventHandler<Extract<Event, {
31
+ type: T;
32
+ }>>): () => void;
33
+ /**
34
+ * Publish an event to all subscribers
35
+ * Handlers are executed in parallel with timeout protection
36
+ */
37
+ publish<T extends Event>(event: T): Promise<{
38
+ success: boolean;
39
+ handlerResults: PromiseSettledResult<void>[];
40
+ duration: number;
41
+ }>;
42
+ /**
43
+ * Publish and wait for all handlers, throwing on any failure
44
+ */
45
+ publishStrict<T extends Event>(event: T): Promise<void>;
46
+ /**
47
+ * Execute handler with timeout protection
48
+ */
49
+ private executeWithTimeout;
50
+ /**
51
+ * Add event to history with limit enforcement
52
+ */
53
+ private addToHistory;
54
+ /**
55
+ * Get event history, optionally filtered by type
56
+ */
57
+ getHistory(type?: EventType): Event[];
58
+ /**
59
+ * Get events by correlation ID (for request tracing)
60
+ */
61
+ getByCorrelationId(correlationId: string): Event[];
62
+ /**
63
+ * Clear all handlers and history
64
+ */
65
+ clear(): void;
66
+ /**
67
+ * Get handler count for a specific event type
68
+ */
69
+ getHandlerCount(type: EventType): number;
70
+ /**
71
+ * Check if there are any handlers for an event type
72
+ */
73
+ hasHandlers(type: EventType): boolean;
74
+ }
75
+ /**
76
+ * Get or create the global EventBus instance
77
+ */
78
+ export declare function getEventBus(config?: Partial<EventBusConfig>): EventBus;
79
+ /**
80
+ * Reset the global EventBus (useful for testing)
81
+ */
82
+ export declare function resetEventBus(): void;
83
+ /**
84
+ * Create and publish an event in one call
85
+ */
86
+ export declare function emitEvent(eventData: Omit<Event, 'metadata'>, source: string, correlationId?: string): Promise<void>;
87
+ //# sourceMappingURL=EventBus.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EventBus.d.ts","sourceRoot":"","sources":["../../src/events/EventBus.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EACL,KAAK,EACL,SAAS,EACT,YAAY,EAGb,MAAM,YAAY,CAAA;AAMnB,MAAM,WAAW,cAAc;IAC7B,wCAAwC;IACxC,YAAY,EAAE,MAAM,CAAA;IACpB,sCAAsC;IACtC,cAAc,EAAE,MAAM,CAAA;IACtB,2BAA2B;IAC3B,KAAK,EAAE,OAAO,CAAA;CACf;AAYD,qBAAa,QAAQ;IACnB,OAAO,CAAC,QAAQ,CAAsB;IACtC,OAAO,CAAC,OAAO,CAAc;IAC7B,OAAO,CAAC,MAAM,CAAgB;gBAElB,MAAM,GAAE,OAAO,CAAC,cAAc,CAAM;IAIhD;;;OAGG;IACH,SAAS,CAAC,CAAC,SAAS,SAAS,EAC3B,SAAS,EAAE,CAAC,EACZ,OAAO,EAAE,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE;QAAE,IAAI,EAAE,CAAC,CAAA;KAAE,CAAC,CAAC,GACjD,MAAM,IAAI;IAyBb;;;OAGG;IACG,OAAO,CAAC,CAAC,SAAS,KAAK,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC;QAChD,OAAO,EAAE,OAAO,CAAA;QAChB,cAAc,EAAE,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAA;QAC5C,QAAQ,EAAE,MAAM,CAAA;KACjB,CAAC;IA+CF;;OAEG;IACG,aAAa,CAAC,CAAC,SAAS,KAAK,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAe7D;;OAEG;YACW,kBAAkB;IAqBhC;;OAEG;IACH,OAAO,CAAC,YAAY;IAQpB;;OAEG;IACH,UAAU,CAAC,IAAI,CAAC,EAAE,SAAS,GAAG,KAAK,EAAE;IAKrC;;OAEG;IACH,kBAAkB,CAAC,aAAa,EAAE,MAAM,GAAG,KAAK,EAAE;IAMlD;;OAEG;IACH,KAAK,IAAI,IAAI;IAKb;;OAEG;IACH,eAAe,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM;IAIxC;;OAEG;IACH,WAAW,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO;CAGtC;AAQD;;GAEG;AACH,wBAAgB,WAAW,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,QAAQ,CAKtE;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,IAAI,CAKpC;AAMD;;GAEG;AACH,wBAAsB,SAAS,CAC7B,SAAS,EAAE,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC,EAClC,MAAM,EAAE,MAAM,EACd,aAAa,CAAC,EAAE,MAAM,GACrB,OAAO,CAAC,IAAI,CAAC,CAQf"}