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 @@
1
+ {"version":3,"file":"ExpertPanelService.js","sourceRoot":"","sources":["../../src/experts/ExpertPanelService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,68 @@
1
+ /**
2
+ * @file ExpertRouter - Routes tasks to appropriate experts
3
+ * @description Intelligent routing based on file types, domains, and criticality
4
+ */
5
+ import { z } from 'zod';
6
+ export declare const ExpertIdSchema: z.ZodEnum<["security-expert", "performance-expert", "architecture-expert", "database-expert", "ux-expert", "memory-expert", "documentation-expert"]>;
7
+ export type ExpertId = z.infer<typeof ExpertIdSchema>;
8
+ export interface ExpertDefinition {
9
+ id: ExpertId;
10
+ name: string;
11
+ description: string;
12
+ /** File patterns this expert should review */
13
+ filePatterns: RegExp[];
14
+ /** Keywords in file content that trigger this expert */
15
+ keywords: string[];
16
+ /** Domains this expert covers */
17
+ domains: string[];
18
+ /** Whether this expert should always be included for critical code */
19
+ requiredForCritical: boolean;
20
+ /** Priority (higher = more important) */
21
+ priority: number;
22
+ }
23
+ export declare const EXPERTS: Record<ExpertId, ExpertDefinition>;
24
+ export type Criticality = 'critical' | 'normal';
25
+ export interface CriticalityResult {
26
+ level: Criticality;
27
+ reasons: string[];
28
+ }
29
+ export declare function detectCriticality(files: string[], content?: string): CriticalityResult;
30
+ export interface ExpertSelection {
31
+ expertId: ExpertId;
32
+ expert: ExpertDefinition;
33
+ score: number;
34
+ reasons: string[];
35
+ }
36
+ export interface RoutingContext {
37
+ files: string[];
38
+ content?: string;
39
+ domain?: string;
40
+ criticality?: Criticality;
41
+ }
42
+ export interface RoutingResult {
43
+ criticality: CriticalityResult;
44
+ selectedExperts: ExpertSelection[];
45
+ threshold: 'UNANIMITY' | 'MAJORITY';
46
+ }
47
+ export declare class ExpertRouter {
48
+ private experts;
49
+ constructor();
50
+ /**
51
+ * Route a task to the appropriate experts
52
+ */
53
+ route(context: RoutingContext): RoutingResult;
54
+ /**
55
+ * Score how relevant an expert is for the given context
56
+ */
57
+ private scoreExpert;
58
+ /**
59
+ * Get expert by ID
60
+ */
61
+ getExpert(id: ExpertId): ExpertDefinition | undefined;
62
+ /**
63
+ * Get all experts
64
+ */
65
+ getAllExperts(): ExpertDefinition[];
66
+ }
67
+ export declare function getExpertRouter(): ExpertRouter;
68
+ //# sourceMappingURL=ExpertRouter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExpertRouter.d.ts","sourceRoot":"","sources":["../../src/experts/ExpertRouter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAMvB,eAAO,MAAM,cAAc,sJAQzB,CAAA;AAEF,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAA;AAErD,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,QAAQ,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,8CAA8C;IAC9C,YAAY,EAAE,MAAM,EAAE,CAAA;IACtB,wDAAwD;IACxD,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,iCAAiC;IACjC,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,sEAAsE;IACtE,mBAAmB,EAAE,OAAO,CAAA;IAC5B,yCAAyC;IACzC,QAAQ,EAAE,MAAM,CAAA;CACjB;AAMD,eAAO,MAAM,OAAO,EAAE,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAoNtD,CAAA;AAMD,MAAM,MAAM,WAAW,GAAG,UAAU,GAAG,QAAQ,CAAA;AAE/C,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,WAAW,CAAA;IAClB,OAAO,EAAE,MAAM,EAAE,CAAA;CAClB;AAcD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,iBAAiB,CAuBtF;AAMD,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,QAAQ,CAAA;IAClB,MAAM,EAAE,gBAAgB,CAAA;IACxB,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,EAAE,CAAA;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,WAAW,CAAC,EAAE,WAAW,CAAA;CAC1B;AAED,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,iBAAiB,CAAA;IAC9B,eAAe,EAAE,eAAe,EAAE,CAAA;IAClC,SAAS,EAAE,WAAW,GAAG,UAAU,CAAA;CACpC;AAMD,qBAAa,YAAY;IACvB,OAAO,CAAC,OAAO,CAAiC;;IAQhD;;OAEG;IACH,KAAK,CAAC,OAAO,EAAE,cAAc,GAAG,aAAa;IA8C7C;;OAEG;IACH,OAAO,CAAC,WAAW;IAkDnB;;OAEG;IACH,SAAS,CAAC,EAAE,EAAE,QAAQ,GAAG,gBAAgB,GAAG,SAAS;IAIrD;;OAEG;IACH,aAAa,IAAI,gBAAgB,EAAE;CAGpC;AAQD,wBAAgB,eAAe,IAAI,YAAY,CAK9C"}
@@ -0,0 +1,374 @@
1
+ /**
2
+ * @file ExpertRouter - Routes tasks to appropriate experts
3
+ * @description Intelligent routing based on file types, domains, and criticality
4
+ */
5
+ import { z } from 'zod';
6
+ // =============================================================================
7
+ // Expert Definitions
8
+ // =============================================================================
9
+ export const ExpertIdSchema = z.enum([
10
+ 'security-expert',
11
+ 'performance-expert',
12
+ 'architecture-expert',
13
+ 'database-expert',
14
+ 'ux-expert',
15
+ 'memory-expert',
16
+ 'documentation-expert',
17
+ ]);
18
+ // =============================================================================
19
+ // Expert Registry
20
+ // =============================================================================
21
+ export const EXPERTS = {
22
+ 'security-expert': {
23
+ id: 'security-expert',
24
+ name: 'Security Expert',
25
+ description: 'Reviews code for security vulnerabilities',
26
+ filePatterns: [
27
+ /auth/i,
28
+ /login/i,
29
+ /password/i,
30
+ /token/i,
31
+ /session/i,
32
+ /crypto/i,
33
+ /encrypt/i,
34
+ /secret/i,
35
+ /api.*key/i,
36
+ ],
37
+ keywords: [
38
+ 'authentication',
39
+ 'authorization',
40
+ 'jwt',
41
+ 'oauth',
42
+ 'password',
43
+ 'credential',
44
+ 'sql',
45
+ 'injection',
46
+ 'xss',
47
+ 'csrf',
48
+ 'sanitize',
49
+ 'validate',
50
+ 'bcrypt',
51
+ 'hash',
52
+ ],
53
+ domains: ['auth', 'security', 'api'],
54
+ requiredForCritical: true,
55
+ priority: 100,
56
+ },
57
+ 'performance-expert': {
58
+ id: 'performance-expert',
59
+ name: 'Performance Expert',
60
+ description: 'Reviews code for performance issues',
61
+ filePatterns: [
62
+ /query/i,
63
+ /cache/i,
64
+ /worker/i,
65
+ /batch/i,
66
+ /stream/i,
67
+ /buffer/i,
68
+ ],
69
+ keywords: [
70
+ 'n+1',
71
+ 'waterfall',
72
+ 'lazy',
73
+ 'eager',
74
+ 'cache',
75
+ 'memo',
76
+ 'debounce',
77
+ 'throttle',
78
+ 'batch',
79
+ 'parallel',
80
+ 'concurrent',
81
+ 'async',
82
+ 'await',
83
+ 'promise.all',
84
+ ],
85
+ domains: ['database', 'api', 'cache', 'services'],
86
+ requiredForCritical: false,
87
+ priority: 80,
88
+ },
89
+ 'architecture-expert': {
90
+ id: 'architecture-expert',
91
+ name: 'Architecture Expert',
92
+ description: 'Reviews code structure and design patterns',
93
+ filePatterns: [
94
+ /index\.(ts|tsx|js|jsx)$/i,
95
+ /types?\.(ts|d\.ts)$/i,
96
+ /schema/i,
97
+ /router/i,
98
+ /service/i,
99
+ /factory/i,
100
+ ],
101
+ keywords: [
102
+ 'interface',
103
+ 'type',
104
+ 'generic',
105
+ 'abstract',
106
+ 'extends',
107
+ 'implements',
108
+ 'export',
109
+ 'import',
110
+ 'module',
111
+ 'namespace',
112
+ 'solid',
113
+ 'dry',
114
+ 'kiss',
115
+ ],
116
+ domains: ['architecture', 'types', 'schema'],
117
+ requiredForCritical: true,
118
+ priority: 90,
119
+ },
120
+ 'database-expert': {
121
+ id: 'database-expert',
122
+ name: 'Database Expert',
123
+ description: 'Reviews database queries and migrations',
124
+ filePatterns: [
125
+ /schema/i,
126
+ /migration/i,
127
+ /query/i,
128
+ /model/i,
129
+ /drizzle/i,
130
+ /prisma/i,
131
+ /database/i,
132
+ /db/i,
133
+ ],
134
+ keywords: [
135
+ 'select',
136
+ 'insert',
137
+ 'update',
138
+ 'delete',
139
+ 'join',
140
+ 'index',
141
+ 'foreign key',
142
+ 'migration',
143
+ 'transaction',
144
+ 'rollback',
145
+ 'constraint',
146
+ 'mysql',
147
+ 'postgres',
148
+ 'sqlite',
149
+ 'turso',
150
+ ],
151
+ domains: ['database', 'schema', 'migrations'],
152
+ requiredForCritical: true,
153
+ priority: 85,
154
+ },
155
+ 'ux-expert': {
156
+ id: 'ux-expert',
157
+ name: 'UX Expert',
158
+ description: 'Reviews UI/UX and accessibility',
159
+ filePatterns: [
160
+ /component/i,
161
+ /page/i,
162
+ /layout/i,
163
+ /\.tsx$/i,
164
+ /\.jsx$/i,
165
+ /button/i,
166
+ /form/i,
167
+ /modal/i,
168
+ ],
169
+ keywords: [
170
+ 'aria',
171
+ 'role',
172
+ 'accessibility',
173
+ 'a11y',
174
+ 'responsive',
175
+ 'mobile',
176
+ 'tablet',
177
+ 'desktop',
178
+ 'color',
179
+ 'font',
180
+ 'spacing',
181
+ 'animation',
182
+ 'transition',
183
+ ],
184
+ domains: ['ui', 'components', 'pages'],
185
+ requiredForCritical: false,
186
+ priority: 60,
187
+ },
188
+ 'memory-expert': {
189
+ id: 'memory-expert',
190
+ name: 'Memory Expert',
191
+ description: 'Pattern detection and auto-improvement',
192
+ filePatterns: [/.*/], // Reviews everything for patterns
193
+ keywords: [
194
+ 'pattern',
195
+ 'repeated',
196
+ 'refactor',
197
+ 'duplicate',
198
+ 'similar',
199
+ ],
200
+ domains: ['all'],
201
+ requiredForCritical: false,
202
+ priority: 50,
203
+ },
204
+ 'documentation-expert': {
205
+ id: 'documentation-expert',
206
+ name: 'Documentation Expert',
207
+ description: 'Reviews documentation and comments',
208
+ filePatterns: [
209
+ /readme/i,
210
+ /\.md$/i,
211
+ /docs?/i,
212
+ /jsdoc/i,
213
+ ],
214
+ keywords: [
215
+ 'jsdoc',
216
+ 'comment',
217
+ 'readme',
218
+ 'documentation',
219
+ 'example',
220
+ 'usage',
221
+ 'api',
222
+ ],
223
+ domains: ['docs', 'readme'],
224
+ requiredForCritical: false,
225
+ priority: 40,
226
+ },
227
+ };
228
+ const CRITICAL_PATTERNS = [
229
+ { pattern: /auth/i, reason: 'Authentication code' },
230
+ { pattern: /login|signin|signup/i, reason: 'Login/signup flow' },
231
+ { pattern: /password|credential/i, reason: 'Credential handling' },
232
+ { pattern: /payment|billing|invoice|stripe|paypal/i, reason: 'Payment processing' },
233
+ { pattern: /schema.*migration|db.*push/i, reason: 'Database schema change' },
234
+ { pattern: /admin|superuser|root/i, reason: 'Admin functionality' },
235
+ { pattern: /secret|key|token/i, reason: 'Secret/key management' },
236
+ { pattern: /delete.*user|remove.*account/i, reason: 'User deletion' },
237
+ { pattern: /encrypt|decrypt|hash/i, reason: 'Cryptography' },
238
+ ];
239
+ export function detectCriticality(files, content) {
240
+ const reasons = [];
241
+ for (const file of files) {
242
+ for (const { pattern, reason } of CRITICAL_PATTERNS) {
243
+ if (pattern.test(file)) {
244
+ reasons.push(`${reason} (${file})`);
245
+ }
246
+ }
247
+ }
248
+ if (content) {
249
+ for (const { pattern, reason } of CRITICAL_PATTERNS) {
250
+ if (pattern.test(content)) {
251
+ reasons.push(reason);
252
+ }
253
+ }
254
+ }
255
+ return {
256
+ level: reasons.length > 0 ? 'critical' : 'normal',
257
+ reasons: [...new Set(reasons)], // Deduplicate
258
+ };
259
+ }
260
+ // =============================================================================
261
+ // ExpertRouter Implementation
262
+ // =============================================================================
263
+ export class ExpertRouter {
264
+ experts;
265
+ constructor() {
266
+ this.experts = new Map(Object.entries(EXPERTS));
267
+ }
268
+ /**
269
+ * Route a task to the appropriate experts
270
+ */
271
+ route(context) {
272
+ // Detect criticality
273
+ const criticality = detectCriticality(context.files, context.content);
274
+ // Score each expert
275
+ const selections = [];
276
+ for (const [id, expert] of this.experts) {
277
+ const { score, reasons } = this.scoreExpert(expert, context, criticality);
278
+ if (score > 0) {
279
+ selections.push({ expertId: id, expert, score, reasons });
280
+ }
281
+ }
282
+ // Sort by score (descending)
283
+ selections.sort((a, b) => b.score - a.score);
284
+ // For critical code, include all required experts
285
+ if (criticality.level === 'critical') {
286
+ for (const [id, expert] of this.experts) {
287
+ if (expert.requiredForCritical) {
288
+ const exists = selections.some(s => s.expertId === id);
289
+ if (!exists) {
290
+ selections.push({
291
+ expertId: id,
292
+ expert,
293
+ score: expert.priority,
294
+ reasons: ['Required for critical code'],
295
+ });
296
+ }
297
+ }
298
+ }
299
+ }
300
+ // Limit to top experts (max 5 for normal, all required for critical)
301
+ const maxExperts = criticality.level === 'critical' ? 6 : 4;
302
+ const selectedExperts = selections.slice(0, maxExperts);
303
+ return {
304
+ criticality,
305
+ selectedExperts,
306
+ threshold: criticality.level === 'critical' ? 'UNANIMITY' : 'MAJORITY',
307
+ };
308
+ }
309
+ /**
310
+ * Score how relevant an expert is for the given context
311
+ */
312
+ scoreExpert(expert, context, criticality) {
313
+ let score = 0;
314
+ const reasons = [];
315
+ // Check file patterns
316
+ for (const file of context.files) {
317
+ for (const pattern of expert.filePatterns) {
318
+ if (pattern.test(file)) {
319
+ score += 20;
320
+ reasons.push(`File pattern match: ${file}`);
321
+ break; // Only count once per file
322
+ }
323
+ }
324
+ }
325
+ // Check content keywords
326
+ if (context.content) {
327
+ const contentLower = context.content.toLowerCase();
328
+ for (const keyword of expert.keywords) {
329
+ if (contentLower.includes(keyword.toLowerCase())) {
330
+ score += 10;
331
+ reasons.push(`Keyword match: ${keyword}`);
332
+ }
333
+ }
334
+ }
335
+ // Check domain match
336
+ if (context.domain) {
337
+ if (expert.domains.includes(context.domain) || expert.domains.includes('all')) {
338
+ score += 30;
339
+ reasons.push(`Domain match: ${context.domain}`);
340
+ }
341
+ }
342
+ // Boost for critical code if required
343
+ if (criticality.level === 'critical' && expert.requiredForCritical) {
344
+ score += 50;
345
+ reasons.push('Required for critical code');
346
+ }
347
+ // Add base priority
348
+ score += expert.priority / 10;
349
+ return { score, reasons };
350
+ }
351
+ /**
352
+ * Get expert by ID
353
+ */
354
+ getExpert(id) {
355
+ return this.experts.get(id);
356
+ }
357
+ /**
358
+ * Get all experts
359
+ */
360
+ getAllExperts() {
361
+ return Array.from(this.experts.values());
362
+ }
363
+ }
364
+ // =============================================================================
365
+ // Singleton Instance
366
+ // =============================================================================
367
+ let globalRouter = null;
368
+ export function getExpertRouter() {
369
+ if (!globalRouter) {
370
+ globalRouter = new ExpertRouter();
371
+ }
372
+ return globalRouter;
373
+ }
374
+ //# sourceMappingURL=ExpertRouter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExpertRouter.js","sourceRoot":"","sources":["../../src/experts/ExpertRouter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * @file VoteCollector - Collects and aggregates expert votes
3
+ * @description Manages vote collection with timeout and progress tracking
4
+ */
5
+ import { ExpertVote, ExpertIssue } from '../schema/expert-types.js';
6
+ import { ExpertId, ExpertSelection } from './ExpertRouter.js';
7
+ import { VoteRecord } from './ConsensusEngine.js';
8
+ export interface ExpertVoteResult {
9
+ expertId: ExpertId;
10
+ vote: ExpertVote;
11
+ confidence: number;
12
+ reasoning: string;
13
+ issues: ExpertIssue[];
14
+ durationMs: number;
15
+ decisionId: string;
16
+ }
17
+ export interface VoteCollectionResult {
18
+ taskId: string;
19
+ votes: ExpertVoteResult[];
20
+ completed: number;
21
+ failed: number;
22
+ timedOut: number;
23
+ totalDurationMs: number;
24
+ }
25
+ export interface VoteCollectorConfig {
26
+ /** Timeout for each expert vote in ms */
27
+ voteTimeout: number;
28
+ /** Enable debug logging */
29
+ debug: boolean;
30
+ }
31
+ export type ExpertVoteProvider = (expertId: ExpertId, taskId: string, context: ExpertReviewContext) => Promise<ExpertVoteResult>;
32
+ export interface ExpertReviewContext {
33
+ files: string[];
34
+ content?: string;
35
+ diff?: string;
36
+ domain?: string;
37
+ }
38
+ export declare class VoteCollector {
39
+ private config;
40
+ private eventBus;
41
+ constructor(config?: Partial<VoteCollectorConfig>);
42
+ /**
43
+ * Collect votes from all selected experts in parallel
44
+ */
45
+ collectVotes(taskId: string, experts: ExpertSelection[], context: ExpertReviewContext, voteProvider: ExpertVoteProvider): Promise<VoteCollectionResult>;
46
+ /**
47
+ * Collect a single vote with timeout protection
48
+ */
49
+ private collectSingleVote;
50
+ /**
51
+ * Convert vote results to VoteRecords for ConsensusEngine
52
+ */
53
+ toVoteRecords(results: ExpertVoteResult[]): VoteRecord[];
54
+ }
55
+ export declare function createMockVoteProvider(votes: Record<ExpertId, ExpertVoteResult>): ExpertVoteProvider;
56
+ export declare function getVoteCollector(config?: Partial<VoteCollectorConfig>): VoteCollector;
57
+ export declare function resetVoteCollector(): void;
58
+ //# sourceMappingURL=VoteCollector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VoteCollector.d.ts","sourceRoot":"","sources":["../../src/experts/VoteCollector.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAA;AACnE,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAC7D,OAAO,EAAE,UAAU,EAAsB,MAAM,sBAAsB,CAAA;AAQrE,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,QAAQ,CAAA;IAClB,IAAI,EAAE,UAAU,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,WAAW,EAAE,CAAA;IACrB,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,gBAAgB,EAAE,CAAA;IACzB,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,eAAe,EAAE,MAAM,CAAA;CACxB;AAED,MAAM,WAAW,mBAAmB;IAClC,yCAAyC;IACzC,WAAW,EAAE,MAAM,CAAA;IACnB,2BAA2B;IAC3B,KAAK,EAAE,OAAO,CAAA;CACf;AAWD,MAAM,MAAM,kBAAkB,GAAG,CAC/B,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,mBAAmB,KACzB,OAAO,CAAC,gBAAgB,CAAC,CAAA;AAE9B,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAMD,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,QAAQ,CAAU;gBAEd,MAAM,GAAE,OAAO,CAAC,mBAAmB,CAAM;IAKrD;;OAEG;IACG,YAAY,CAChB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,eAAe,EAAE,EAC1B,OAAO,EAAE,mBAAmB,EAC5B,YAAY,EAAE,kBAAkB,GAC/B,OAAO,CAAC,oBAAoB,CAAC;IA4EhC;;OAEG;YACW,iBAAiB;IAuB/B;;OAEG;IACH,aAAa,CAAC,OAAO,EAAE,gBAAgB,EAAE,GAAG,UAAU,EAAE;CAQzD;AAMD,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC,GACxC,kBAAkB,CAWpB;AAQD,wBAAgB,gBAAgB,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,GAAG,aAAa,CAKrF;AAED,wBAAgB,kBAAkB,IAAI,IAAI,CAEzC"}