monty-autonomous-fullstack-dev-multillm 1.0.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 (186) hide show
  1. package/LICENSE +81 -0
  2. package/README.md +608 -0
  3. package/bin/cli.js +448 -0
  4. package/dist/agents/coding.d.ts +15 -0
  5. package/dist/agents/coding.d.ts.map +1 -0
  6. package/dist/agents/coding.js +189 -0
  7. package/dist/agents/coding.js.map +1 -0
  8. package/dist/agents/initializer.d.ts +15 -0
  9. package/dist/agents/initializer.d.ts.map +1 -0
  10. package/dist/agents/initializer.js +87 -0
  11. package/dist/agents/initializer.js.map +1 -0
  12. package/dist/agents/prompts/arbitrator.md +143 -0
  13. package/dist/agents/prompts/coding.md +247 -0
  14. package/dist/agents/prompts/initializer.md +98 -0
  15. package/dist/config/agent-config.d.ts +103 -0
  16. package/dist/config/agent-config.d.ts.map +1 -0
  17. package/dist/config/agent-config.js +138 -0
  18. package/dist/config/agent-config.js.map +1 -0
  19. package/dist/config/auth-config.d.ts +152 -0
  20. package/dist/config/auth-config.d.ts.map +1 -0
  21. package/dist/config/auth-config.js +139 -0
  22. package/dist/config/auth-config.js.map +1 -0
  23. package/dist/config/mcp-config.d.ts +109 -0
  24. package/dist/config/mcp-config.d.ts.map +1 -0
  25. package/dist/config/mcp-config.js +234 -0
  26. package/dist/config/mcp-config.js.map +1 -0
  27. package/dist/config/provider-config.d.ts +139 -0
  28. package/dist/config/provider-config.d.ts.map +1 -0
  29. package/dist/config/provider-config.js +344 -0
  30. package/dist/config/provider-config.js.map +1 -0
  31. package/dist/config/subagents-config.d.ts +85 -0
  32. package/dist/config/subagents-config.d.ts.map +1 -0
  33. package/dist/config/subagents-config.js +430 -0
  34. package/dist/config/subagents-config.js.map +1 -0
  35. package/dist/index.d.ts +14 -0
  36. package/dist/index.d.ts.map +1 -0
  37. package/dist/index.js +385 -0
  38. package/dist/index.js.map +1 -0
  39. package/dist/orchestrator/arbitrator.d.ts +93 -0
  40. package/dist/orchestrator/arbitrator.d.ts.map +1 -0
  41. package/dist/orchestrator/arbitrator.js +330 -0
  42. package/dist/orchestrator/arbitrator.js.map +1 -0
  43. package/dist/orchestrator/index.d.ts +113 -0
  44. package/dist/orchestrator/index.d.ts.map +1 -0
  45. package/dist/orchestrator/index.js +217 -0
  46. package/dist/orchestrator/index.js.map +1 -0
  47. package/dist/orchestrator/review-coordinator.d.ts +143 -0
  48. package/dist/orchestrator/review-coordinator.d.ts.map +1 -0
  49. package/dist/orchestrator/review-coordinator.js +401 -0
  50. package/dist/orchestrator/review-coordinator.js.map +1 -0
  51. package/dist/orchestrator/task-classifier.d.ts +87 -0
  52. package/dist/orchestrator/task-classifier.d.ts.map +1 -0
  53. package/dist/orchestrator/task-classifier.js +250 -0
  54. package/dist/orchestrator/task-classifier.js.map +1 -0
  55. package/dist/providers/anthropic-provider.d.ts +64 -0
  56. package/dist/providers/anthropic-provider.d.ts.map +1 -0
  57. package/dist/providers/anthropic-provider.js +264 -0
  58. package/dist/providers/anthropic-provider.js.map +1 -0
  59. package/dist/providers/base-provider.d.ts +219 -0
  60. package/dist/providers/base-provider.d.ts.map +1 -0
  61. package/dist/providers/base-provider.js +143 -0
  62. package/dist/providers/base-provider.js.map +1 -0
  63. package/dist/providers/cursor-provider.d.ts +82 -0
  64. package/dist/providers/cursor-provider.d.ts.map +1 -0
  65. package/dist/providers/cursor-provider.js +321 -0
  66. package/dist/providers/cursor-provider.js.map +1 -0
  67. package/dist/providers/google-provider.d.ts +75 -0
  68. package/dist/providers/google-provider.d.ts.map +1 -0
  69. package/dist/providers/google-provider.js +274 -0
  70. package/dist/providers/google-provider.js.map +1 -0
  71. package/dist/providers/index.d.ts +92 -0
  72. package/dist/providers/index.d.ts.map +1 -0
  73. package/dist/providers/index.js +233 -0
  74. package/dist/providers/index.js.map +1 -0
  75. package/dist/providers/openai-provider.d.ts +83 -0
  76. package/dist/providers/openai-provider.d.ts.map +1 -0
  77. package/dist/providers/openai-provider.js +295 -0
  78. package/dist/providers/openai-provider.js.map +1 -0
  79. package/dist/templates/feature_list.template.json +66 -0
  80. package/dist/templates/progress.template.txt +51 -0
  81. package/dist/utils/auth-manager.d.ts +121 -0
  82. package/dist/utils/auth-manager.d.ts.map +1 -0
  83. package/dist/utils/auth-manager.js +560 -0
  84. package/dist/utils/auth-manager.js.map +1 -0
  85. package/dist/utils/budget-enforcer.d.ts +181 -0
  86. package/dist/utils/budget-enforcer.d.ts.map +1 -0
  87. package/dist/utils/budget-enforcer.js +386 -0
  88. package/dist/utils/budget-enforcer.js.map +1 -0
  89. package/dist/utils/chatgpt-detector.d.ts +51 -0
  90. package/dist/utils/chatgpt-detector.d.ts.map +1 -0
  91. package/dist/utils/chatgpt-detector.js +274 -0
  92. package/dist/utils/chatgpt-detector.js.map +1 -0
  93. package/dist/utils/claude-code-detector.d.ts +39 -0
  94. package/dist/utils/claude-code-detector.d.ts.map +1 -0
  95. package/dist/utils/claude-code-detector.js +153 -0
  96. package/dist/utils/claude-code-detector.js.map +1 -0
  97. package/dist/utils/code-quality.d.ts +58 -0
  98. package/dist/utils/code-quality.d.ts.map +1 -0
  99. package/dist/utils/code-quality.js +258 -0
  100. package/dist/utils/code-quality.js.map +1 -0
  101. package/dist/utils/context-primer.d.ts +50 -0
  102. package/dist/utils/context-primer.d.ts.map +1 -0
  103. package/dist/utils/context-primer.js +429 -0
  104. package/dist/utils/context-primer.js.map +1 -0
  105. package/dist/utils/dependency-management.d.ts +40 -0
  106. package/dist/utils/dependency-management.d.ts.map +1 -0
  107. package/dist/utils/dependency-management.js +123 -0
  108. package/dist/utils/dependency-management.js.map +1 -0
  109. package/dist/utils/environment-validation.d.ts +33 -0
  110. package/dist/utils/environment-validation.d.ts.map +1 -0
  111. package/dist/utils/environment-validation.js +136 -0
  112. package/dist/utils/environment-validation.js.map +1 -0
  113. package/dist/utils/error-recovery.d.ts +60 -0
  114. package/dist/utils/error-recovery.d.ts.map +1 -0
  115. package/dist/utils/error-recovery.js +183 -0
  116. package/dist/utils/error-recovery.js.map +1 -0
  117. package/dist/utils/feature-list.d.ts +102 -0
  118. package/dist/utils/feature-list.d.ts.map +1 -0
  119. package/dist/utils/feature-list.js +191 -0
  120. package/dist/utils/feature-list.js.map +1 -0
  121. package/dist/utils/gemini-detector.d.ts +65 -0
  122. package/dist/utils/gemini-detector.d.ts.map +1 -0
  123. package/dist/utils/gemini-detector.js +340 -0
  124. package/dist/utils/gemini-detector.js.map +1 -0
  125. package/dist/utils/git-utils.d.ts +48 -0
  126. package/dist/utils/git-utils.d.ts.map +1 -0
  127. package/dist/utils/git-utils.js +110 -0
  128. package/dist/utils/git-utils.js.map +1 -0
  129. package/dist/utils/health-check.d.ts +32 -0
  130. package/dist/utils/health-check.d.ts.map +1 -0
  131. package/dist/utils/health-check.js +152 -0
  132. package/dist/utils/health-check.js.map +1 -0
  133. package/dist/utils/hooks-manager.d.ts +154 -0
  134. package/dist/utils/hooks-manager.d.ts.map +1 -0
  135. package/dist/utils/hooks-manager.js +359 -0
  136. package/dist/utils/hooks-manager.js.map +1 -0
  137. package/dist/utils/multi-auth-manager.d.ts +144 -0
  138. package/dist/utils/multi-auth-manager.d.ts.map +1 -0
  139. package/dist/utils/multi-auth-manager.js +588 -0
  140. package/dist/utils/multi-auth-manager.js.map +1 -0
  141. package/dist/utils/progress.d.ts +49 -0
  142. package/dist/utils/progress.d.ts.map +1 -0
  143. package/dist/utils/progress.js +209 -0
  144. package/dist/utils/progress.js.map +1 -0
  145. package/dist/utils/project-detection.d.ts +40 -0
  146. package/dist/utils/project-detection.d.ts.map +1 -0
  147. package/dist/utils/project-detection.js +230 -0
  148. package/dist/utils/project-detection.js.map +1 -0
  149. package/dist/utils/session-manager.d.ts +119 -0
  150. package/dist/utils/session-manager.d.ts.map +1 -0
  151. package/dist/utils/session-manager.js +389 -0
  152. package/dist/utils/session-manager.js.map +1 -0
  153. package/dist/utils/skills-manager.d.ts +113 -0
  154. package/dist/utils/skills-manager.d.ts.map +1 -0
  155. package/dist/utils/skills-manager.js +332 -0
  156. package/dist/utils/skills-manager.js.map +1 -0
  157. package/dist/utils/structured-output.d.ts +117 -0
  158. package/dist/utils/structured-output.d.ts.map +1 -0
  159. package/dist/utils/structured-output.js +191 -0
  160. package/dist/utils/structured-output.js.map +1 -0
  161. package/dist/utils/subagent-manager.d.ts +143 -0
  162. package/dist/utils/subagent-manager.d.ts.map +1 -0
  163. package/dist/utils/subagent-manager.js +326 -0
  164. package/dist/utils/subagent-manager.js.map +1 -0
  165. package/dist/utils/supabase-setup.d.ts +50 -0
  166. package/dist/utils/supabase-setup.d.ts.map +1 -0
  167. package/dist/utils/supabase-setup.js +151 -0
  168. package/dist/utils/supabase-setup.js.map +1 -0
  169. package/dist/utils/token-refresh.d.ts +21 -0
  170. package/dist/utils/token-refresh.d.ts.map +1 -0
  171. package/dist/utils/token-refresh.js +77 -0
  172. package/dist/utils/token-refresh.js.map +1 -0
  173. package/dist/utils/tos-warning.d.ts +115 -0
  174. package/dist/utils/tos-warning.d.ts.map +1 -0
  175. package/dist/utils/tos-warning.js +304 -0
  176. package/dist/utils/tos-warning.js.map +1 -0
  177. package/dist/utils/usage-monitor.d.ts +156 -0
  178. package/dist/utils/usage-monitor.d.ts.map +1 -0
  179. package/dist/utils/usage-monitor.js +296 -0
  180. package/dist/utils/usage-monitor.js.map +1 -0
  181. package/package.json +105 -0
  182. package/scripts/init.ps1 +73 -0
  183. package/scripts/init.sh +86 -0
  184. package/scripts/test-auth.sh +90 -0
  185. package/templates/feature_list.template.json +66 -0
  186. package/templates/progress.template.txt +51 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/orchestrator/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,143 @@
1
+ /**
2
+ * Review Coordinator
3
+ * Coordinates multi-agent code reviews across multiple AI providers
4
+ * and manages conflict detection for arbitration.
5
+ *
6
+ * Copyright (c) 2025 Dobeu Tech Solutions LLC
7
+ * Licensed under CC BY-NC 4.0
8
+ */
9
+ import { type ProviderName } from '../config/provider-config.js';
10
+ import { type AgentMessage, type QueryOptions } from '../providers/index.js';
11
+ /**
12
+ * Review finding from a provider
13
+ */
14
+ export interface ReviewFinding {
15
+ id: string;
16
+ file: string;
17
+ line: number;
18
+ type: 'bug' | 'security' | 'performance' | 'style' | 'logic' | 'suggestion';
19
+ severity: 'info' | 'warning' | 'error' | 'critical';
20
+ message: string;
21
+ suggestion?: string;
22
+ code?: string;
23
+ }
24
+ /**
25
+ * Review result from a single provider
26
+ */
27
+ export interface ProviderReview {
28
+ provider: ProviderName;
29
+ findings: ReviewFinding[];
30
+ suggestions: string[];
31
+ overallSeverity: 'pass' | 'minor' | 'major' | 'critical';
32
+ confidence: number;
33
+ executionTime: number;
34
+ rawMessages: AgentMessage[];
35
+ }
36
+ /**
37
+ * Conflict between provider reviews
38
+ */
39
+ export interface ReviewConflict {
40
+ id: string;
41
+ type: 'contradictory' | 'severity_mismatch' | 'missing_finding';
42
+ file?: string;
43
+ line?: number;
44
+ provider1: ProviderName;
45
+ position1: string;
46
+ provider2: ProviderName;
47
+ position2: string;
48
+ description: string;
49
+ }
50
+ /**
51
+ * Coordinated review result
52
+ */
53
+ export interface CoordinatedReviewResult {
54
+ reviews: ProviderReview[];
55
+ conflicts: ReviewConflict[];
56
+ consensusFindings: ReviewFinding[];
57
+ needsArbitration: boolean;
58
+ summary: string;
59
+ }
60
+ /**
61
+ * Review coordinator configuration
62
+ */
63
+ export interface ReviewCoordinatorConfig {
64
+ /** Minimum providers for a valid review */
65
+ minProviders: number;
66
+ /** Run reviews in parallel or sequentially */
67
+ parallel: boolean;
68
+ /** Timeout for each provider review (ms) */
69
+ timeout: number;
70
+ /** Severity threshold for conflicts (findings above this require arbitration) */
71
+ arbitrationSeverityThreshold: 'warning' | 'error' | 'critical';
72
+ }
73
+ /**
74
+ * Review Coordinator
75
+ * Manages multi-agent code reviews
76
+ */
77
+ export declare class ReviewCoordinator {
78
+ private config;
79
+ private enabledProviders;
80
+ constructor(enabledProviders: ProviderName[], config?: Partial<ReviewCoordinatorConfig>);
81
+ /**
82
+ * Execute a coordinated multi-agent review
83
+ */
84
+ coordinateReview(task: string, options: QueryOptions): Promise<CoordinatedReviewResult>;
85
+ /**
86
+ * Get reviews from all providers in parallel
87
+ */
88
+ private getParallelReviews;
89
+ /**
90
+ * Get reviews from all providers sequentially
91
+ */
92
+ private getSequentialReviews;
93
+ /**
94
+ * Get a review from a single provider
95
+ */
96
+ private getProviderReview;
97
+ /**
98
+ * Build a review-specific prompt
99
+ */
100
+ private buildReviewPrompt;
101
+ /**
102
+ * Parse review findings from provider messages
103
+ */
104
+ private parseReviewMessages;
105
+ /**
106
+ * Parse severity string to enum
107
+ */
108
+ private parseSeverity;
109
+ /**
110
+ * Infer finding type from message
111
+ */
112
+ private inferFindingType;
113
+ /**
114
+ * Detect conflicts between reviews
115
+ */
116
+ detectConflicts(reviews: ProviderReview[]): ReviewConflict[];
117
+ /**
118
+ * Find consensus findings across reviews
119
+ */
120
+ findConsensus(reviews: ProviderReview[]): ReviewFinding[];
121
+ /**
122
+ * Determine if conflicts require arbitration
123
+ */
124
+ needsArbitration(conflicts: ReviewConflict[]): boolean;
125
+ /**
126
+ * Generate a summary of the review results
127
+ */
128
+ generateSummary(reviews: ProviderReview[], conflicts: ReviewConflict[], consensus: ReviewFinding[]): string;
129
+ /**
130
+ * Update enabled providers
131
+ */
132
+ setEnabledProviders(providers: ProviderName[]): void;
133
+ /**
134
+ * Get current configuration
135
+ */
136
+ getConfig(): ReviewCoordinatorConfig;
137
+ }
138
+ /**
139
+ * Create a review coordinator instance
140
+ */
141
+ export declare function createReviewCoordinator(enabledProviders: ProviderName[], config?: Partial<ReviewCoordinatorConfig>): ReviewCoordinator;
142
+ export default ReviewCoordinator;
143
+ //# sourceMappingURL=review-coordinator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"review-coordinator.d.ts","sourceRoot":"","sources":["../../src/orchestrator/review-coordinator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,401 @@
1
+ /**
2
+ * Review Coordinator
3
+ * Coordinates multi-agent code reviews across multiple AI providers
4
+ * and manages conflict detection for arbitration.
5
+ *
6
+ * Copyright (c) 2025 Dobeu Tech Solutions LLC
7
+ * Licensed under CC BY-NC 4.0
8
+ */
9
+ import { getProviderConfig, } from '../config/provider-config.js';
10
+ import { getProvider, } from '../providers/index.js';
11
+ /**
12
+ * Default review coordinator config
13
+ */
14
+ const DEFAULT_REVIEW_CONFIG = {
15
+ minProviders: 2,
16
+ parallel: true,
17
+ timeout: 120000,
18
+ arbitrationSeverityThreshold: 'error',
19
+ };
20
+ /**
21
+ * Review Coordinator
22
+ * Manages multi-agent code reviews
23
+ */
24
+ export class ReviewCoordinator {
25
+ config;
26
+ enabledProviders;
27
+ constructor(enabledProviders, config) {
28
+ this.enabledProviders = enabledProviders;
29
+ this.config = { ...DEFAULT_REVIEW_CONFIG, ...config };
30
+ }
31
+ /**
32
+ * Execute a coordinated multi-agent review
33
+ */
34
+ async coordinateReview(task, options) {
35
+ if (this.enabledProviders.length < this.config.minProviders) {
36
+ throw new Error(`Insufficient providers for multi-agent review. ` +
37
+ `Need ${this.config.minProviders}, have ${this.enabledProviders.length}`);
38
+ }
39
+ console.log(`\n📋 Starting Multi-Agent Code Review`);
40
+ console.log(` Providers: ${this.enabledProviders.map(p => getProviderConfig(p).displayName).join(', ')}`);
41
+ // Get reviews from all providers
42
+ const reviews = this.config.parallel
43
+ ? await this.getParallelReviews(task, options)
44
+ : await this.getSequentialReviews(task, options);
45
+ console.log(`\n✓ Received ${reviews.length} reviews`);
46
+ // Detect conflicts
47
+ const conflicts = this.detectConflicts(reviews);
48
+ console.log(` Conflicts detected: ${conflicts.length}`);
49
+ // Find consensus findings
50
+ const consensusFindings = this.findConsensus(reviews);
51
+ console.log(` Consensus findings: ${consensusFindings.length}`);
52
+ // Determine if arbitration is needed
53
+ const needsArbitration = this.needsArbitration(conflicts);
54
+ // Generate summary
55
+ const summary = this.generateSummary(reviews, conflicts, consensusFindings);
56
+ return {
57
+ reviews,
58
+ conflicts,
59
+ consensusFindings,
60
+ needsArbitration,
61
+ summary,
62
+ };
63
+ }
64
+ /**
65
+ * Get reviews from all providers in parallel
66
+ */
67
+ async getParallelReviews(task, options) {
68
+ const reviewPromises = this.enabledProviders.map(provider => this.getProviderReview(provider, task, options));
69
+ const results = await Promise.allSettled(reviewPromises);
70
+ return results
71
+ .filter((r) => r.status === 'fulfilled')
72
+ .map(r => r.value);
73
+ }
74
+ /**
75
+ * Get reviews from all providers sequentially
76
+ */
77
+ async getSequentialReviews(task, options) {
78
+ const reviews = [];
79
+ for (const provider of this.enabledProviders) {
80
+ try {
81
+ const review = await this.getProviderReview(provider, task, options);
82
+ reviews.push(review);
83
+ }
84
+ catch (error) {
85
+ console.warn(`Review from ${provider} failed:`, error);
86
+ }
87
+ }
88
+ return reviews;
89
+ }
90
+ /**
91
+ * Get a review from a single provider
92
+ */
93
+ async getProviderReview(providerName, task, options) {
94
+ const startTime = Date.now();
95
+ const provider = getProvider(providerName);
96
+ console.log(`\n 🔍 Getting review from ${getProviderConfig(providerName).displayName}...`);
97
+ // Build review-specific prompt
98
+ const reviewPrompt = this.buildReviewPrompt(task);
99
+ // Collect messages
100
+ const messages = [];
101
+ for await (const message of provider.query(reviewPrompt, {
102
+ ...options,
103
+ timeout_ms: this.config.timeout,
104
+ })) {
105
+ messages.push(message);
106
+ }
107
+ const executionTime = Date.now() - startTime;
108
+ // Parse findings from messages
109
+ const { findings, suggestions, overallSeverity, confidence } = this.parseReviewMessages(messages, providerName);
110
+ console.log(` Findings: ${findings.length}, Severity: ${overallSeverity}`);
111
+ return {
112
+ provider: providerName,
113
+ findings,
114
+ suggestions,
115
+ overallSeverity,
116
+ confidence,
117
+ executionTime,
118
+ rawMessages: messages,
119
+ };
120
+ }
121
+ /**
122
+ * Build a review-specific prompt
123
+ */
124
+ buildReviewPrompt(task) {
125
+ return `You are performing a code review. ${task}
126
+
127
+ IMPORTANT: Structure your response with clear sections:
128
+
129
+ ## FINDINGS
130
+ For each issue found, format as:
131
+ - [SEVERITY] FILE:LINE - Description
132
+ Suggestion: How to fix
133
+
134
+ Severity levels: INFO, WARNING, ERROR, CRITICAL
135
+
136
+ ## SUGGESTIONS
137
+ General improvement suggestions for the code.
138
+
139
+ ## OVERALL ASSESSMENT
140
+ Rate the code: PASS (no issues), MINOR (small issues), MAJOR (significant issues), CRITICAL (blocking issues)
141
+
142
+ Be thorough but concise. Focus on:
143
+ 1. Security vulnerabilities (OWASP Top 10)
144
+ 2. Logic errors and bugs
145
+ 3. Performance issues
146
+ 4. Code quality and maintainability
147
+ 5. Best practices`;
148
+ }
149
+ /**
150
+ * Parse review findings from provider messages
151
+ */
152
+ parseReviewMessages(messages, provider) {
153
+ const findings = [];
154
+ const suggestions = [];
155
+ let overallSeverity = 'pass';
156
+ let confidence = 0.8;
157
+ // Extract text content
158
+ const textContent = messages
159
+ .flatMap(m => m.content)
160
+ .filter(c => c.type === 'text')
161
+ .map(c => c.text)
162
+ .join('\n');
163
+ // Parse findings using regex patterns
164
+ const findingPattern = /\[(\w+)\]\s+([^:]+):(\d+)\s*-\s*(.+?)(?=\n\[|\n##|$)/gs;
165
+ let match;
166
+ while ((match = findingPattern.exec(textContent)) !== null) {
167
+ const [, severityStr, file, lineStr, message] = match;
168
+ if (severityStr && file && lineStr && message) {
169
+ const severity = this.parseSeverity(severityStr);
170
+ findings.push({
171
+ id: `${provider}_${findings.length + 1}`,
172
+ file: file.trim(),
173
+ line: parseInt(lineStr, 10),
174
+ type: this.inferFindingType(message),
175
+ severity,
176
+ message: message.trim(),
177
+ });
178
+ // Update overall severity
179
+ if (severity === 'critical')
180
+ overallSeverity = 'critical';
181
+ else if (severity === 'error' && overallSeverity !== 'critical')
182
+ overallSeverity = 'major';
183
+ else if (severity === 'warning' && overallSeverity === 'pass')
184
+ overallSeverity = 'minor';
185
+ }
186
+ }
187
+ // Parse overall assessment
188
+ if (textContent.includes('CRITICAL') || textContent.includes('blocking')) {
189
+ overallSeverity = 'critical';
190
+ }
191
+ else if (textContent.includes('MAJOR') || textContent.includes('significant')) {
192
+ if (overallSeverity !== 'critical')
193
+ overallSeverity = 'major';
194
+ }
195
+ else if (textContent.includes('MINOR') || textContent.includes('small issues')) {
196
+ if (overallSeverity === 'pass')
197
+ overallSeverity = 'minor';
198
+ }
199
+ // Parse suggestions
200
+ const suggestionsMatch = textContent.match(/##\s*SUGGESTIONS\s*([\s\S]*?)(?=##|$)/i);
201
+ if (suggestionsMatch?.[1]) {
202
+ const suggestionLines = suggestionsMatch[1].split('\n')
203
+ .filter(line => line.trim().startsWith('-') || line.trim().startsWith('*'))
204
+ .map(line => line.replace(/^[-*]\s*/, '').trim())
205
+ .filter(line => line.length > 0);
206
+ suggestions.push(...suggestionLines);
207
+ }
208
+ return { findings, suggestions, overallSeverity, confidence };
209
+ }
210
+ /**
211
+ * Parse severity string to enum
212
+ */
213
+ parseSeverity(severity) {
214
+ const upper = severity.toUpperCase();
215
+ if (upper === 'CRITICAL')
216
+ return 'critical';
217
+ if (upper === 'ERROR')
218
+ return 'error';
219
+ if (upper === 'WARNING')
220
+ return 'warning';
221
+ return 'info';
222
+ }
223
+ /**
224
+ * Infer finding type from message
225
+ */
226
+ inferFindingType(message) {
227
+ const lower = message.toLowerCase();
228
+ if (lower.includes('security') || lower.includes('vulnerability') || lower.includes('xss') || lower.includes('injection')) {
229
+ return 'security';
230
+ }
231
+ if (lower.includes('performance') || lower.includes('slow') || lower.includes('memory')) {
232
+ return 'performance';
233
+ }
234
+ if (lower.includes('style') || lower.includes('formatting') || lower.includes('naming')) {
235
+ return 'style';
236
+ }
237
+ if (lower.includes('logic') || lower.includes('condition') || lower.includes('branch')) {
238
+ return 'logic';
239
+ }
240
+ if (lower.includes('suggest') || lower.includes('consider') || lower.includes('could')) {
241
+ return 'suggestion';
242
+ }
243
+ return 'bug';
244
+ }
245
+ /**
246
+ * Detect conflicts between reviews
247
+ */
248
+ detectConflicts(reviews) {
249
+ const conflicts = [];
250
+ if (reviews.length < 2)
251
+ return conflicts;
252
+ // Compare findings across providers
253
+ for (let i = 0; i < reviews.length; i++) {
254
+ for (let j = i + 1; j < reviews.length; j++) {
255
+ const review1 = reviews[i];
256
+ const review2 = reviews[j];
257
+ // Check for severity mismatches on same location
258
+ for (const finding1 of review1.findings) {
259
+ const matchingFinding = review2.findings.find(f => f.file === finding1.file && Math.abs(f.line - finding1.line) <= 3);
260
+ if (matchingFinding) {
261
+ // Check severity difference
262
+ const severityOrder = ['info', 'warning', 'error', 'critical'];
263
+ const sev1 = severityOrder.indexOf(finding1.severity);
264
+ const sev2 = severityOrder.indexOf(matchingFinding.severity);
265
+ if (Math.abs(sev1 - sev2) >= 2) {
266
+ conflicts.push({
267
+ id: `conflict_${conflicts.length + 1}`,
268
+ type: 'severity_mismatch',
269
+ file: finding1.file,
270
+ line: finding1.line,
271
+ provider1: review1.provider,
272
+ position1: `${finding1.severity}: ${finding1.message}`,
273
+ provider2: review2.provider,
274
+ position2: `${matchingFinding.severity}: ${matchingFinding.message}`,
275
+ description: `Severity mismatch at ${finding1.file}:${finding1.line}`,
276
+ });
277
+ }
278
+ }
279
+ }
280
+ // Check for overall assessment conflicts
281
+ const assessments = ['pass', 'minor', 'major', 'critical'];
282
+ const assess1 = assessments.indexOf(review1.overallSeverity);
283
+ const assess2 = assessments.indexOf(review2.overallSeverity);
284
+ if (Math.abs(assess1 - assess2) >= 2) {
285
+ conflicts.push({
286
+ id: `conflict_${conflicts.length + 1}`,
287
+ type: 'contradictory',
288
+ provider1: review1.provider,
289
+ position1: `Overall: ${review1.overallSeverity}`,
290
+ provider2: review2.provider,
291
+ position2: `Overall: ${review2.overallSeverity}`,
292
+ description: 'Overall assessment differs significantly',
293
+ });
294
+ }
295
+ }
296
+ }
297
+ return conflicts;
298
+ }
299
+ /**
300
+ * Find consensus findings across reviews
301
+ */
302
+ findConsensus(reviews) {
303
+ if (reviews.length < 2) {
304
+ return reviews[0]?.findings ?? [];
305
+ }
306
+ const consensus = [];
307
+ // Find findings that appear in multiple reviews
308
+ for (const finding of reviews[0].findings) {
309
+ const matches = reviews.slice(1).filter(review => review.findings.some(f => f.file === finding.file &&
310
+ Math.abs(f.line - finding.line) <= 3 &&
311
+ f.type === finding.type));
312
+ // If finding appears in majority of reviews, it's consensus
313
+ if (matches.length >= Math.floor(reviews.length / 2)) {
314
+ consensus.push({
315
+ ...finding,
316
+ id: `consensus_${consensus.length + 1}`,
317
+ });
318
+ }
319
+ }
320
+ return consensus;
321
+ }
322
+ /**
323
+ * Determine if conflicts require arbitration
324
+ */
325
+ needsArbitration(conflicts) {
326
+ if (conflicts.length === 0)
327
+ return false;
328
+ // Any contradictory conflicts require arbitration
329
+ if (conflicts.some(c => c.type === 'contradictory')) {
330
+ return true;
331
+ }
332
+ // Severity mismatches on critical/error items require arbitration
333
+ const severityThreshold = this.config.arbitrationSeverityThreshold;
334
+ const thresholdOrder = ['warning', 'error', 'critical'];
335
+ const thresholdIdx = thresholdOrder.indexOf(severityThreshold);
336
+ return conflicts.some(c => {
337
+ if (c.type !== 'severity_mismatch')
338
+ return false;
339
+ const pos1Severity = c.position1.split(':')[0]?.toLowerCase() ?? '';
340
+ const pos2Severity = c.position2.split(':')[0]?.toLowerCase() ?? '';
341
+ return (thresholdOrder.indexOf(pos1Severity) >= thresholdIdx ||
342
+ thresholdOrder.indexOf(pos2Severity) >= thresholdIdx);
343
+ });
344
+ }
345
+ /**
346
+ * Generate a summary of the review results
347
+ */
348
+ generateSummary(reviews, conflicts, consensus) {
349
+ const lines = [];
350
+ lines.push('═══════════════════════════════════════════════════════════════');
351
+ lines.push(' Multi-Agent Code Review Summary ');
352
+ lines.push('═══════════════════════════════════════════════════════════════\n');
353
+ // Per-provider summary
354
+ lines.push('Provider Reviews:');
355
+ for (const review of reviews) {
356
+ const config = getProviderConfig(review.provider);
357
+ lines.push(` ${config.displayName}:`);
358
+ lines.push(` Findings: ${review.findings.length}`);
359
+ lines.push(` Overall: ${review.overallSeverity.toUpperCase()}`);
360
+ lines.push(` Time: ${Math.round(review.executionTime / 1000)}s`);
361
+ }
362
+ // Consensus findings
363
+ lines.push(`\nConsensus Findings: ${consensus.length}`);
364
+ for (const finding of consensus.slice(0, 5)) {
365
+ lines.push(` [${finding.severity.toUpperCase()}] ${finding.file}:${finding.line}`);
366
+ lines.push(` ${finding.message}`);
367
+ }
368
+ if (consensus.length > 5) {
369
+ lines.push(` ... and ${consensus.length - 5} more`);
370
+ }
371
+ // Conflicts
372
+ if (conflicts.length > 0) {
373
+ lines.push(`\n⚠️ Conflicts Detected: ${conflicts.length}`);
374
+ for (const conflict of conflicts) {
375
+ lines.push(` ${conflict.description}`);
376
+ }
377
+ }
378
+ lines.push('\n═══════════════════════════════════════════════════════════════');
379
+ return lines.join('\n');
380
+ }
381
+ /**
382
+ * Update enabled providers
383
+ */
384
+ setEnabledProviders(providers) {
385
+ this.enabledProviders = providers;
386
+ }
387
+ /**
388
+ * Get current configuration
389
+ */
390
+ getConfig() {
391
+ return { ...this.config };
392
+ }
393
+ }
394
+ /**
395
+ * Create a review coordinator instance
396
+ */
397
+ export function createReviewCoordinator(enabledProviders, config) {
398
+ return new ReviewCoordinator(enabledProviders, config);
399
+ }
400
+ export default ReviewCoordinator;
401
+ //# sourceMappingURL=review-coordinator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"review-coordinator.js","sourceRoot":"","sources":["../../src/orchestrator/review-coordinator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,87 @@
1
+ /**
2
+ * Task Classifier
3
+ * Routes tasks to the most appropriate AI provider based on task type,
4
+ * provider capabilities, and availability.
5
+ *
6
+ * Copyright (c) 2025 Dobeu Tech Solutions LLC
7
+ * Licensed under CC BY-NC 4.0
8
+ */
9
+ import { type ProviderName, type TaskType } from '../config/provider-config.js';
10
+ /**
11
+ * Task classification result
12
+ */
13
+ export interface TaskClassification {
14
+ taskType: TaskType;
15
+ recommendedProvider: ProviderName;
16
+ fallbackProviders: ProviderName[];
17
+ confidence: number;
18
+ reasoning: string;
19
+ requiredCapabilities: string[];
20
+ keywords: string[];
21
+ }
22
+ /**
23
+ * Task context for classification
24
+ */
25
+ export interface TaskContext {
26
+ /** Current feature being worked on */
27
+ currentFeature?: string;
28
+ /** Project type (react, nextjs, etc.) */
29
+ projectType?: string;
30
+ /** Available providers (authenticated) */
31
+ availableProviders?: ProviderName[];
32
+ /** Previous task types in session */
33
+ sessionHistory?: TaskType[];
34
+ /** User preference override */
35
+ preferredProvider?: ProviderName;
36
+ }
37
+ /**
38
+ * Task Classifier
39
+ * Analyzes task descriptions and routes to appropriate providers
40
+ */
41
+ export declare class TaskClassifier {
42
+ private availableProviders;
43
+ private defaultProvider;
44
+ constructor(availableProviders?: ProviderName[]);
45
+ /**
46
+ * Update available providers
47
+ */
48
+ setAvailableProviders(providers: ProviderName[]): void;
49
+ /**
50
+ * Set default provider
51
+ */
52
+ setDefaultProvider(provider: ProviderName): void;
53
+ /**
54
+ * Classify a task and recommend a provider
55
+ */
56
+ classify(task: string, context?: TaskContext): TaskClassification;
57
+ /**
58
+ * Calculate classification confidence (0-1)
59
+ */
60
+ private calculateConfidence;
61
+ /**
62
+ * Get required capabilities for a task type
63
+ */
64
+ private getRequiredCapabilities;
65
+ /**
66
+ * Generate human-readable reasoning for the classification
67
+ */
68
+ private generateReasoning;
69
+ /**
70
+ * Check if a task should trigger multi-agent review
71
+ */
72
+ isMultiAgentTask(taskType: TaskType): boolean;
73
+ /**
74
+ * Get providers suitable for a task type (ordered by preference)
75
+ */
76
+ getProvidersForTask(taskType: TaskType): ProviderName[];
77
+ /**
78
+ * Suggest alternative providers if primary is unavailable
79
+ */
80
+ suggestAlternatives(taskType: TaskType, unavailableProvider: ProviderName): ProviderName[];
81
+ }
82
+ /**
83
+ * Create a task classifier with available providers
84
+ */
85
+ export declare function createTaskClassifier(availableProviders?: ProviderName[]): TaskClassifier;
86
+ export default TaskClassifier;
87
+ //# sourceMappingURL=task-classifier.d.ts.map