cmp-standards 2.7.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 (114) 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/cli/index.js +0 -0
  11. package/dist/db/turso-client.js +11 -11
  12. package/dist/eslint/rules/no-async-useeffect.js +6 -6
  13. package/dist/events/EventBus.d.ts +87 -0
  14. package/dist/events/EventBus.d.ts.map +1 -0
  15. package/dist/events/EventBus.js +200 -0
  16. package/dist/events/EventBus.js.map +1 -0
  17. package/dist/events/index.d.ts +7 -0
  18. package/dist/events/index.d.ts.map +1 -0
  19. package/dist/events/index.js +9 -0
  20. package/dist/events/index.js.map +1 -0
  21. package/dist/events/types.d.ts +989 -0
  22. package/dist/events/types.d.ts.map +1 -0
  23. package/dist/events/types.js +136 -0
  24. package/dist/events/types.js.map +1 -0
  25. package/dist/experts/ConsensusEngine.d.ts +57 -0
  26. package/dist/experts/ConsensusEngine.d.ts.map +1 -0
  27. package/dist/experts/ConsensusEngine.js +146 -0
  28. package/dist/experts/ConsensusEngine.js.map +1 -0
  29. package/dist/experts/ExpertPanelService.d.ts +84 -0
  30. package/dist/experts/ExpertPanelService.d.ts.map +1 -0
  31. package/dist/experts/ExpertPanelService.js +204 -0
  32. package/dist/experts/ExpertPanelService.js.map +1 -0
  33. package/dist/experts/ExpertRouter.d.ts +68 -0
  34. package/dist/experts/ExpertRouter.d.ts.map +1 -0
  35. package/dist/experts/ExpertRouter.js +374 -0
  36. package/dist/experts/ExpertRouter.js.map +1 -0
  37. package/dist/experts/VoteCollector.d.ts +58 -0
  38. package/dist/experts/VoteCollector.d.ts.map +1 -0
  39. package/dist/experts/VoteCollector.js +146 -0
  40. package/dist/experts/VoteCollector.js.map +1 -0
  41. package/dist/experts/index.d.ts +9 -0
  42. package/dist/experts/index.d.ts.map +1 -0
  43. package/dist/experts/index.js +13 -0
  44. package/dist/experts/index.js.map +1 -0
  45. package/dist/hooks/cloud-pre-tool-use.js +20 -20
  46. package/dist/hooks/expert-review.d.ts +74 -0
  47. package/dist/hooks/expert-review.d.ts.map +1 -0
  48. package/dist/hooks/expert-review.js +220 -0
  49. package/dist/hooks/expert-review.js.map +1 -0
  50. package/dist/hooks/index.d.ts +1 -0
  51. package/dist/hooks/index.d.ts.map +1 -1
  52. package/dist/hooks/index.js +2 -0
  53. package/dist/hooks/index.js.map +1 -1
  54. package/dist/index.d.ts +13 -0
  55. package/dist/index.d.ts.map +1 -1
  56. package/dist/index.js +22 -0
  57. package/dist/index.js.map +1 -1
  58. package/dist/performance/Debouncer.d.ts +91 -0
  59. package/dist/performance/Debouncer.d.ts.map +1 -0
  60. package/dist/performance/Debouncer.js +198 -0
  61. package/dist/performance/Debouncer.js.map +1 -0
  62. package/dist/performance/MemoryDecay.d.ts +82 -0
  63. package/dist/performance/MemoryDecay.d.ts.map +1 -0
  64. package/dist/performance/MemoryDecay.js +153 -0
  65. package/dist/performance/MemoryDecay.js.map +1 -0
  66. package/dist/performance/index.d.ts +7 -0
  67. package/dist/performance/index.d.ts.map +1 -0
  68. package/dist/performance/index.js +9 -0
  69. package/dist/performance/index.js.map +1 -0
  70. package/dist/schema/expert-types.d.ts +395 -0
  71. package/dist/schema/expert-types.d.ts.map +1 -0
  72. package/dist/schema/expert-types.js +250 -0
  73. package/dist/schema/expert-types.js.map +1 -0
  74. package/dist/services/ContextGenerator.js +7 -7
  75. package/dist/services/ProjectScaffold.js +76 -76
  76. package/dist/services/memory-router.js +35 -35
  77. package/dist/services/pattern-tracker.js +90 -90
  78. package/dist/services/semantic-search.js +2 -2
  79. package/package.json +105 -104
  80. package/standards/README.md +50 -50
  81. package/standards/experts/expert-routing.md +215 -215
  82. package/standards/general/code-quality.md +86 -86
  83. package/standards/general/memory-usage.md +205 -205
  84. package/standards/general/sync-workflow.md +235 -235
  85. package/standards/general/workflow.md +82 -82
  86. package/standards/hooks/mandatory-tracking.md +446 -446
  87. package/standards/infrastructure/cloud-database.md +287 -287
  88. package/standards/mcp/server-design.md +243 -243
  89. package/standards/mcp/tool-patterns.md +354 -354
  90. package/standards/skills/skill-structure.md +286 -286
  91. package/standards/skills/workflow-design.md +323 -323
  92. package/standards/tools/tool-design.md +297 -297
  93. package/templates/agents/architecture-expert.md +61 -61
  94. package/templates/agents/database-expert.md +62 -62
  95. package/templates/agents/documentation-expert.md +57 -57
  96. package/templates/agents/memory-expert.md +88 -88
  97. package/templates/agents/performance-expert.md +61 -61
  98. package/templates/agents/security-expert.md +59 -59
  99. package/templates/agents/ux-expert.md +63 -63
  100. package/templates/agents/worker.md +75 -75
  101. package/templates/ai-skills/SKILL_TEMPLATE.md +55 -55
  102. package/templates/claude-settings.json +72 -72
  103. package/templates/commands/experts.md +138 -138
  104. package/templates/hooks/README.md +158 -158
  105. package/templates/hooks/project.config.json.template +77 -77
  106. package/templates/hooks/settings.local.json.template +57 -57
  107. package/templates/memory-config.json +56 -56
  108. package/templates/memory-config.schema.json +212 -212
  109. package/templates/settings.json +58 -58
  110. package/templates/skills/continue.md +205 -205
  111. package/templates/workflows/business-improvement.md +264 -264
  112. package/templates/workflows/expert-review.md +153 -153
  113. package/templates/workflows/internal-app.md +245 -245
  114. 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"}