baseguard 1.0.0 → 1.0.2

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 (156) hide show
  1. package/.baseguardrc.example.json +64 -0
  2. package/.eslintrc.json +1 -1
  3. package/CHANGELOG.md +196 -0
  4. package/DEPLOYMENT.md +625 -0
  5. package/DEPLOYMENT_CHECKLIST.md +239 -0
  6. package/DEPLOYMENT_SUMMARY_v1.0.2.md +202 -0
  7. package/QUICK_START.md +134 -0
  8. package/README.md +447 -52
  9. package/RELEASE_NOTES_v1.0.2.md +434 -0
  10. package/bin/base.js +155 -36
  11. package/dist/ai/agentkit-orchestrator.d.ts +116 -0
  12. package/dist/ai/agentkit-orchestrator.d.ts.map +1 -0
  13. package/dist/ai/agentkit-orchestrator.js +417 -0
  14. package/dist/ai/agentkit-orchestrator.js.map +1 -0
  15. package/dist/ai/gemini-code-fixer.d.ts +85 -0
  16. package/dist/ai/gemini-code-fixer.d.ts.map +1 -0
  17. package/dist/ai/gemini-code-fixer.js +452 -0
  18. package/dist/ai/gemini-code-fixer.js.map +1 -0
  19. package/dist/ai/jules-implementer.d.ts +5 -4
  20. package/dist/ai/jules-implementer.d.ts.map +1 -1
  21. package/dist/ai/jules-implementer.js +6 -5
  22. package/dist/ai/jules-implementer.js.map +1 -1
  23. package/dist/ai/unified-code-fixer.d.ts +69 -0
  24. package/dist/ai/unified-code-fixer.d.ts.map +1 -0
  25. package/dist/ai/unified-code-fixer.js +289 -0
  26. package/dist/ai/unified-code-fixer.js.map +1 -0
  27. package/dist/commands/check.d.ts +3 -1
  28. package/dist/commands/check.d.ts.map +1 -1
  29. package/dist/commands/check.js +166 -34
  30. package/dist/commands/check.js.map +1 -1
  31. package/dist/commands/config.d.ts +4 -0
  32. package/dist/commands/config.d.ts.map +1 -1
  33. package/dist/commands/config.js +183 -0
  34. package/dist/commands/config.js.map +1 -1
  35. package/dist/commands/fix.d.ts.map +1 -1
  36. package/dist/commands/fix.js +89 -91
  37. package/dist/commands/fix.js.map +1 -1
  38. package/dist/commands/index.d.ts +1 -0
  39. package/dist/commands/index.d.ts.map +1 -1
  40. package/dist/commands/index.js +1 -0
  41. package/dist/commands/index.js.map +1 -1
  42. package/dist/commands/init.d.ts.map +1 -1
  43. package/dist/commands/init.js +16 -2
  44. package/dist/commands/init.js.map +1 -1
  45. package/dist/commands/status.d.ts +14 -0
  46. package/dist/commands/status.d.ts.map +1 -0
  47. package/dist/commands/status.js +254 -0
  48. package/dist/commands/status.js.map +1 -0
  49. package/dist/core/baseguard.d.ts +47 -5
  50. package/dist/core/baseguard.d.ts.map +1 -1
  51. package/dist/core/baseguard.js +506 -52
  52. package/dist/core/baseguard.js.map +1 -1
  53. package/dist/core/cache-manager.d.ts.map +1 -1
  54. package/dist/core/cache-manager.js +3 -1
  55. package/dist/core/cache-manager.js.map +1 -1
  56. package/dist/core/configuration-recovery.d.ts +116 -0
  57. package/dist/core/configuration-recovery.d.ts.map +1 -0
  58. package/dist/core/configuration-recovery.js +552 -0
  59. package/dist/core/configuration-recovery.js.map +1 -0
  60. package/dist/core/configuration.d.ts +4 -0
  61. package/dist/core/configuration.d.ts.map +1 -1
  62. package/dist/core/configuration.js +35 -0
  63. package/dist/core/configuration.js.map +1 -1
  64. package/dist/core/debug-logger.d.ts +181 -0
  65. package/dist/core/debug-logger.d.ts.map +1 -0
  66. package/dist/core/debug-logger.js +479 -0
  67. package/dist/core/debug-logger.js.map +1 -0
  68. package/dist/core/file-processor.d.ts.map +1 -1
  69. package/dist/core/file-processor.js +8 -2
  70. package/dist/core/file-processor.js.map +1 -1
  71. package/dist/core/graceful-degradation-manager.d.ts +123 -0
  72. package/dist/core/graceful-degradation-manager.d.ts.map +1 -0
  73. package/dist/core/graceful-degradation-manager.js +512 -0
  74. package/dist/core/graceful-degradation-manager.js.map +1 -0
  75. package/dist/core/index.d.ts +4 -0
  76. package/dist/core/index.d.ts.map +1 -1
  77. package/dist/core/index.js +4 -0
  78. package/dist/core/index.js.map +1 -1
  79. package/dist/core/logger.d.ts +1 -0
  80. package/dist/core/logger.d.ts.map +1 -0
  81. package/dist/core/logger.js +2 -0
  82. package/dist/core/logger.js.map +1 -0
  83. package/dist/core/memory-manager.d.ts +84 -0
  84. package/dist/core/memory-manager.d.ts.map +1 -1
  85. package/dist/core/memory-manager.js +236 -1
  86. package/dist/core/memory-manager.js.map +1 -1
  87. package/dist/core/startup-optimizer.d.ts +12 -0
  88. package/dist/core/startup-optimizer.d.ts.map +1 -1
  89. package/dist/core/startup-optimizer.js +60 -0
  90. package/dist/core/startup-optimizer.js.map +1 -1
  91. package/dist/core/system-error-handler.d.ts +65 -0
  92. package/dist/core/system-error-handler.d.ts.map +1 -0
  93. package/dist/core/system-error-handler.js +646 -0
  94. package/dist/core/system-error-handler.js.map +1 -0
  95. package/dist/git/github-manager.d.ts +5 -16
  96. package/dist/git/github-manager.d.ts.map +1 -1
  97. package/dist/git/github-manager.js +6 -61
  98. package/dist/git/github-manager.js.map +1 -1
  99. package/dist/parsers/react-parser-optimized.d.ts +16 -0
  100. package/dist/parsers/react-parser-optimized.d.ts.map +1 -0
  101. package/dist/parsers/react-parser-optimized.js +147 -0
  102. package/dist/parsers/react-parser-optimized.js.map +1 -0
  103. package/dist/parsers/react-parser.d.ts.map +1 -1
  104. package/dist/parsers/react-parser.js +17 -15
  105. package/dist/parsers/react-parser.js.map +1 -1
  106. package/dist/parsers/svelte-parser.d.ts.map +1 -1
  107. package/dist/parsers/svelte-parser.js +7 -3
  108. package/dist/parsers/svelte-parser.js.map +1 -1
  109. package/dist/parsers/vanilla-parser.d.ts.map +1 -1
  110. package/dist/parsers/vanilla-parser.js +7 -3
  111. package/dist/parsers/vanilla-parser.js.map +1 -1
  112. package/dist/parsers/vue-parser.d.ts +18 -0
  113. package/dist/parsers/vue-parser.d.ts.map +1 -1
  114. package/dist/parsers/vue-parser.js +387 -1
  115. package/dist/parsers/vue-parser.js.map +1 -1
  116. package/dist/types/index.d.ts +4 -0
  117. package/dist/types/index.d.ts.map +1 -1
  118. package/dist/ui/help.js +1 -1
  119. package/dist/ui/help.js.map +1 -1
  120. package/dist/ui/prompts.d.ts +7 -4
  121. package/dist/ui/prompts.d.ts.map +1 -1
  122. package/dist/ui/prompts.js +48 -55
  123. package/dist/ui/prompts.js.map +1 -1
  124. package/package.json +30 -5
  125. package/src/ai/__tests__/gemini-analyzer.test.ts +2 -2
  126. package/src/ai/agentkit-orchestrator.ts +534 -0
  127. package/src/ai/gemini-code-fixer.ts +540 -0
  128. package/src/ai/jules-implementer.ts +6 -5
  129. package/src/ai/unified-code-fixer.ts +347 -0
  130. package/src/commands/config.ts +218 -0
  131. package/src/commands/fix.ts +98 -94
  132. package/src/commands/index.ts +2 -1
  133. package/src/commands/init.ts +16 -2
  134. package/src/commands/status.ts +307 -0
  135. package/src/core/baseguard.ts +36 -22
  136. package/src/core/cache-manager.ts +4 -2
  137. package/src/core/configuration-recovery.ts +3 -6
  138. package/src/core/configuration.ts +37 -0
  139. package/src/core/debug-logger.ts +2 -2
  140. package/src/core/file-processor.ts +10 -3
  141. package/src/core/index.ts +5 -1
  142. package/src/core/memory-manager.ts +4 -3
  143. package/src/core/startup-optimizer.ts +70 -0
  144. package/src/core/system-error-handler.ts +9 -5
  145. package/src/git/github-manager.ts +11 -79
  146. package/src/parsers/react-parser.ts +2 -2
  147. package/src/parsers/svelte-parser.ts +13 -9
  148. package/src/parsers/vanilla-parser.ts +18 -14
  149. package/src/parsers/vue-parser.ts +20 -14
  150. package/src/types/index.ts +4 -0
  151. package/src/ui/help.ts +1 -1
  152. package/src/ui/prompts.ts +54 -61
  153. package/test-build.js +41 -0
  154. package/tests/e2e/git-integration.e2e.test.ts +1 -1
  155. package/tsconfig.json +0 -1
  156. package/vitest.config.ts +4 -2
@@ -0,0 +1,116 @@
1
+ /**
2
+ * AgentKit-inspired orchestrator for managing multiple coding agents
3
+ * Based on OpenAI's AgentKit principles for production-ready agent workflows
4
+ */
5
+ import type { Violation, Analysis, Fix } from '../types/index.js';
6
+ export interface AgentCapabilities {
7
+ codeGeneration: boolean;
8
+ fileAnalysis: boolean;
9
+ webSearch: boolean;
10
+ repositoryAccess: boolean;
11
+ realTimeProcessing: boolean;
12
+ autonomousExecution: boolean;
13
+ }
14
+ export interface AgentMetrics {
15
+ successRate: number;
16
+ averageResponseTime: number;
17
+ totalExecutions: number;
18
+ lastUsed: Date;
19
+ reliability: number;
20
+ }
21
+ export interface AgentStatus {
22
+ available: boolean;
23
+ capabilities: AgentCapabilities;
24
+ metrics: AgentMetrics;
25
+ lastError?: string;
26
+ configurationValid: boolean;
27
+ }
28
+ /**
29
+ * AgentKit-inspired orchestrator for intelligent agent selection and workflow optimization
30
+ */
31
+ export declare class AgentKitOrchestrator {
32
+ private geminiAgent;
33
+ private julesAgent;
34
+ private agentMetrics;
35
+ private categoryLogger;
36
+ private geminiApiKey;
37
+ private julesApiKey;
38
+ constructor(geminiApiKey: string | null, julesApiKey: string | null);
39
+ /**
40
+ * Initialize agent metrics tracking
41
+ */
42
+ private initializeMetrics;
43
+ /**
44
+ * Get comprehensive status of all agents
45
+ */
46
+ getAgentStatus(): Promise<Record<string, AgentStatus>>;
47
+ /**
48
+ * Intelligent agent selection based on context and requirements
49
+ */
50
+ selectOptimalAgent(violations: Violation[], context: {
51
+ hasRepository: boolean;
52
+ requiresRealTime: boolean;
53
+ complexityLevel: 'low' | 'medium' | 'high';
54
+ userPreference?: 'gemini' | 'jules';
55
+ }): Promise<{
56
+ primary: 'gemini' | 'jules';
57
+ fallback: 'gemini' | 'jules';
58
+ reasoning: string;
59
+ confidence: number;
60
+ }>;
61
+ /**
62
+ * Execute fixes using the optimal agent with fallback
63
+ */
64
+ executeFixes(violations: Violation[], analyses: Analysis[], options?: {
65
+ auto?: boolean;
66
+ userPreference?: 'gemini' | 'jules';
67
+ requiresRealTime?: boolean;
68
+ }): Promise<{
69
+ fixes: Fix[];
70
+ agentUsed: 'gemini' | 'jules';
71
+ executionTime: number;
72
+ success: boolean;
73
+ error?: string;
74
+ }>;
75
+ /**
76
+ * Execute fixes with a specific agent
77
+ */
78
+ private executeWithAgent;
79
+ /**
80
+ * Assess complexity level of violations
81
+ */
82
+ private assessComplexity;
83
+ /**
84
+ * Update agent performance metrics
85
+ */
86
+ private updateAgentMetrics;
87
+ /**
88
+ * Get performance analytics for all agents
89
+ */
90
+ getPerformanceAnalytics(): {
91
+ gemini: AgentMetrics & {
92
+ recommendation: string;
93
+ };
94
+ jules: AgentMetrics & {
95
+ recommendation: string;
96
+ };
97
+ overall: {
98
+ totalExecutions: number;
99
+ averageSuccessRate: number;
100
+ recommendedPrimary: 'gemini' | 'jules';
101
+ };
102
+ };
103
+ /**
104
+ * Get recommendation for specific agent
105
+ */
106
+ private getAgentRecommendation;
107
+ /**
108
+ * Reset metrics (useful for testing or fresh start)
109
+ */
110
+ resetMetrics(): void;
111
+ /**
112
+ * Export metrics for external analysis
113
+ */
114
+ exportMetrics(): Record<string, AgentMetrics>;
115
+ }
116
+ //# sourceMappingURL=agentkit-orchestrator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agentkit-orchestrator.d.ts","sourceRoot":"","sources":["../../src/ai/agentkit-orchestrator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,417 @@
1
+ /**
2
+ * AgentKit-inspired orchestrator for managing multiple coding agents
3
+ * Based on OpenAI's AgentKit principles for production-ready agent workflows
4
+ */
5
+ import { GeminiCodeFixer } from './gemini-code-fixer.js';
6
+ import { JulesImplementer } from './jules-implementer.js';
7
+ import { logger } from '../core/debug-logger.js';
8
+ import chalk from 'chalk';
9
+ /**
10
+ * AgentKit-inspired orchestrator for intelligent agent selection and workflow optimization
11
+ */
12
+ export class AgentKitOrchestrator {
13
+ geminiAgent = null;
14
+ julesAgent = null;
15
+ agentMetrics;
16
+ categoryLogger;
17
+ geminiApiKey;
18
+ julesApiKey;
19
+ constructor(geminiApiKey, julesApiKey) {
20
+ this.geminiApiKey = geminiApiKey;
21
+ this.julesApiKey = julesApiKey;
22
+ this.agentMetrics = new Map();
23
+ this.categoryLogger = logger.createCategoryLogger('agentkit-orchestrator');
24
+ // Initialize agents if API keys are available
25
+ if (geminiApiKey) {
26
+ this.geminiAgent = new GeminiCodeFixer(geminiApiKey);
27
+ }
28
+ if (julesApiKey) {
29
+ this.julesAgent = new JulesImplementer(julesApiKey);
30
+ }
31
+ // Initialize metrics
32
+ this.initializeMetrics();
33
+ }
34
+ /**
35
+ * Initialize agent metrics tracking
36
+ */
37
+ initializeMetrics() {
38
+ this.agentMetrics.set('gemini', {
39
+ successRate: 0.95,
40
+ averageResponseTime: 2500, // ms
41
+ totalExecutions: 0,
42
+ lastUsed: new Date(),
43
+ reliability: 0.95
44
+ });
45
+ this.agentMetrics.set('jules', {
46
+ successRate: 0.88,
47
+ averageResponseTime: 15000, // ms (async processing)
48
+ totalExecutions: 0,
49
+ lastUsed: new Date(),
50
+ reliability: 0.88
51
+ });
52
+ }
53
+ /**
54
+ * Get comprehensive status of all agents
55
+ */
56
+ async getAgentStatus() {
57
+ const status = {};
58
+ // Check Gemini status
59
+ if (this.geminiAgent) {
60
+ try {
61
+ const testResult = await this.geminiAgent.testConnection();
62
+ status.gemini = {
63
+ available: testResult.success,
64
+ capabilities: {
65
+ codeGeneration: true,
66
+ fileAnalysis: true,
67
+ webSearch: true,
68
+ repositoryAccess: false,
69
+ realTimeProcessing: true,
70
+ autonomousExecution: false
71
+ },
72
+ metrics: this.agentMetrics.get('gemini'),
73
+ configurationValid: testResult.success,
74
+ lastError: testResult.error
75
+ };
76
+ }
77
+ catch (error) {
78
+ status.gemini = {
79
+ available: false,
80
+ capabilities: {
81
+ codeGeneration: false,
82
+ fileAnalysis: false,
83
+ webSearch: false,
84
+ repositoryAccess: false,
85
+ realTimeProcessing: false,
86
+ autonomousExecution: false
87
+ },
88
+ metrics: this.agentMetrics.get('gemini'),
89
+ lastError: error instanceof Error ? error.message : 'Unknown error',
90
+ configurationValid: false
91
+ };
92
+ }
93
+ }
94
+ else {
95
+ status.gemini = {
96
+ available: false,
97
+ capabilities: {
98
+ codeGeneration: false,
99
+ fileAnalysis: false,
100
+ webSearch: false,
101
+ repositoryAccess: false,
102
+ realTimeProcessing: false,
103
+ autonomousExecution: false
104
+ },
105
+ metrics: this.agentMetrics.get('gemini'),
106
+ lastError: 'Gemini API key not configured',
107
+ configurationValid: false
108
+ };
109
+ }
110
+ // Check Jules status
111
+ if (this.julesAgent) {
112
+ try {
113
+ const testResult = await this.julesAgent.testConnection();
114
+ const hasRepository = await this.julesAgent.isRepositoryDetected();
115
+ status.jules = {
116
+ available: testResult.success && hasRepository,
117
+ capabilities: {
118
+ codeGeneration: true,
119
+ fileAnalysis: true,
120
+ webSearch: false,
121
+ repositoryAccess: true,
122
+ realTimeProcessing: false,
123
+ autonomousExecution: true
124
+ },
125
+ metrics: this.agentMetrics.get('jules'),
126
+ configurationValid: testResult.success,
127
+ lastError: testResult.error || (!hasRepository ? 'No GitHub repository detected' : undefined)
128
+ };
129
+ }
130
+ catch (error) {
131
+ status.jules = {
132
+ available: false,
133
+ capabilities: {
134
+ codeGeneration: false,
135
+ fileAnalysis: false,
136
+ webSearch: false,
137
+ repositoryAccess: false,
138
+ realTimeProcessing: false,
139
+ autonomousExecution: false
140
+ },
141
+ metrics: this.agentMetrics.get('jules'),
142
+ lastError: error instanceof Error ? error.message : 'Unknown error',
143
+ configurationValid: false
144
+ };
145
+ }
146
+ }
147
+ else {
148
+ status.jules = {
149
+ available: false,
150
+ capabilities: {
151
+ codeGeneration: false,
152
+ fileAnalysis: false,
153
+ webSearch: false,
154
+ repositoryAccess: false,
155
+ realTimeProcessing: false,
156
+ autonomousExecution: false
157
+ },
158
+ metrics: this.agentMetrics.get('jules'),
159
+ lastError: 'Jules API key not configured',
160
+ configurationValid: false
161
+ };
162
+ }
163
+ return status;
164
+ }
165
+ /**
166
+ * Intelligent agent selection based on context and requirements
167
+ */
168
+ async selectOptimalAgent(violations, context) {
169
+ const agentStatus = await this.getAgentStatus();
170
+ const geminiMetrics = this.agentMetrics.get('gemini');
171
+ const julesMetrics = this.agentMetrics.get('jules');
172
+ // Calculate scores for each agent
173
+ let geminiScore = 0;
174
+ let julesScore = 0;
175
+ // Availability scoring
176
+ if (agentStatus.gemini?.available)
177
+ geminiScore += 30;
178
+ if (agentStatus.jules?.available)
179
+ julesScore += 30;
180
+ // Capability scoring
181
+ if (context.requiresRealTime) {
182
+ geminiScore += 25; // Gemini is real-time
183
+ julesScore += 5; // Jules is async
184
+ }
185
+ if (context.hasRepository) {
186
+ julesScore += 20; // Jules excels with repositories
187
+ geminiScore += 10; // Gemini can work with repos but not optimized
188
+ }
189
+ else {
190
+ geminiScore += 25; // Gemini works with any files
191
+ julesScore += 0; // Jules requires repository
192
+ }
193
+ // Complexity scoring
194
+ switch (context.complexityLevel) {
195
+ case 'low':
196
+ geminiScore += 15; // Gemini is faster for simple fixes
197
+ julesScore += 10;
198
+ break;
199
+ case 'medium':
200
+ geminiScore += 12;
201
+ julesScore += 12;
202
+ break;
203
+ case 'high':
204
+ geminiScore += 8;
205
+ julesScore += 18; // Jules better for complex autonomous work
206
+ break;
207
+ }
208
+ // Reliability scoring
209
+ geminiScore += geminiMetrics.reliability * 10;
210
+ julesScore += julesMetrics.reliability * 10;
211
+ // User preference bonus
212
+ if (context.userPreference === 'gemini')
213
+ geminiScore += 15;
214
+ if (context.userPreference === 'jules')
215
+ julesScore += 15;
216
+ // Determine primary and fallback
217
+ const primary = geminiScore >= julesScore ? 'gemini' : 'jules';
218
+ const fallback = primary === 'gemini' ? 'jules' : 'gemini';
219
+ const confidence = Math.max(geminiScore, julesScore) / 100;
220
+ let reasoning = '';
221
+ if (primary === 'gemini') {
222
+ reasoning = `Gemini selected: ${context.requiresRealTime ? 'real-time processing needed, ' : ''}${!context.hasRepository ? 'works with local files, ' : ''}high reliability (${Math.round(geminiMetrics.reliability * 100)}%)`;
223
+ }
224
+ else {
225
+ reasoning = `Jules selected: ${context.hasRepository ? 'repository context available, ' : ''}${context.complexityLevel === 'high' ? 'complex autonomous work, ' : ''}good for comprehensive fixes`;
226
+ }
227
+ this.categoryLogger.info('Agent selection completed', {
228
+ primary,
229
+ fallback,
230
+ geminiScore,
231
+ julesScore,
232
+ confidence,
233
+ reasoning
234
+ });
235
+ return { primary, fallback, reasoning, confidence };
236
+ }
237
+ /**
238
+ * Execute fixes using the optimal agent with fallback
239
+ */
240
+ async executeFixes(violations, analyses, options = {}) {
241
+ const startTime = Date.now();
242
+ // Determine context
243
+ const hasRepository = this.julesAgent ? await this.julesAgent.isRepositoryDetected() : false;
244
+ const context = {
245
+ hasRepository,
246
+ requiresRealTime: options.requiresRealTime ?? true,
247
+ complexityLevel: this.assessComplexity(violations),
248
+ userPreference: options.userPreference
249
+ };
250
+ // Select optimal agent
251
+ const selection = await this.selectOptimalAgent(violations, context);
252
+ console.log(chalk.cyan(`🤖 Using ${selection.primary} agent (${Math.round(selection.confidence * 100)}% confidence)`));
253
+ console.log(chalk.dim(` Reasoning: ${selection.reasoning}`));
254
+ try {
255
+ // Try primary agent
256
+ const result = await this.executeWithAgent(selection.primary, violations, analyses, options);
257
+ // Update metrics
258
+ this.updateAgentMetrics(selection.primary, true, Date.now() - startTime);
259
+ return {
260
+ ...result,
261
+ agentUsed: selection.primary,
262
+ executionTime: Date.now() - startTime,
263
+ success: true
264
+ };
265
+ }
266
+ catch (primaryError) {
267
+ this.categoryLogger.warn(`Primary agent ${selection.primary} failed`, { error: primaryError });
268
+ // Update metrics for failure
269
+ this.updateAgentMetrics(selection.primary, false, Date.now() - startTime);
270
+ console.log(chalk.yellow(`⚠️ ${selection.primary} failed, trying ${selection.fallback}...`));
271
+ try {
272
+ // Try fallback agent
273
+ const result = await this.executeWithAgent(selection.fallback, violations, analyses, options);
274
+ // Update metrics
275
+ this.updateAgentMetrics(selection.fallback, true, Date.now() - startTime);
276
+ return {
277
+ ...result,
278
+ agentUsed: selection.fallback,
279
+ executionTime: Date.now() - startTime,
280
+ success: true
281
+ };
282
+ }
283
+ catch (fallbackError) {
284
+ this.categoryLogger.error('Both agents failed', {
285
+ primaryError,
286
+ fallbackError
287
+ });
288
+ // Update metrics for failure
289
+ this.updateAgentMetrics(selection.fallback, false, Date.now() - startTime);
290
+ return {
291
+ fixes: [],
292
+ agentUsed: selection.primary,
293
+ executionTime: Date.now() - startTime,
294
+ success: false,
295
+ error: `Both agents failed. Primary (${selection.primary}): ${primaryError instanceof Error ? primaryError.message : 'Unknown error'}. Fallback (${selection.fallback}): ${fallbackError instanceof Error ? fallbackError.message : 'Unknown error'}`
296
+ };
297
+ }
298
+ }
299
+ }
300
+ /**
301
+ * Execute fixes with a specific agent
302
+ */
303
+ async executeWithAgent(agentType, violations, analyses, _options = {}) {
304
+ const fixes = [];
305
+ if (agentType === 'gemini' && this.geminiAgent) {
306
+ // Generate fixes one by one for Gemini
307
+ for (let i = 0; i < violations.length; i++) {
308
+ const violation = violations[i];
309
+ const analysis = analyses[i];
310
+ if (violation && analysis) {
311
+ const fix = await this.geminiAgent.generateFix(violation, analysis);
312
+ fixes.push(fix);
313
+ }
314
+ }
315
+ }
316
+ else if (agentType === 'jules' && this.julesAgent) {
317
+ // Generate fixes one by one for Jules
318
+ for (let i = 0; i < violations.length; i++) {
319
+ const violation = violations[i];
320
+ const analysis = analyses[i];
321
+ if (violation && analysis) {
322
+ const fix = await this.julesAgent.generateFix(violation, analysis);
323
+ fixes.push(fix);
324
+ }
325
+ }
326
+ }
327
+ else {
328
+ throw new Error(`Agent ${agentType} is not available or not configured`);
329
+ }
330
+ return { fixes };
331
+ }
332
+ /**
333
+ * Assess complexity level of violations
334
+ */
335
+ assessComplexity(violations) {
336
+ if (violations.length <= 3)
337
+ return 'low';
338
+ if (violations.length <= 10)
339
+ return 'medium';
340
+ return 'high';
341
+ }
342
+ /**
343
+ * Update agent performance metrics
344
+ */
345
+ updateAgentMetrics(agentType, success, responseTime) {
346
+ const metrics = this.agentMetrics.get(agentType);
347
+ if (!metrics)
348
+ return;
349
+ metrics.totalExecutions++;
350
+ metrics.lastUsed = new Date();
351
+ // Update success rate (exponential moving average)
352
+ const alpha = 0.1;
353
+ metrics.successRate = success
354
+ ? metrics.successRate + alpha * (1 - metrics.successRate)
355
+ : metrics.successRate + alpha * (0 - metrics.successRate);
356
+ // Update average response time (exponential moving average)
357
+ metrics.averageResponseTime = metrics.averageResponseTime + alpha * (responseTime - metrics.averageResponseTime);
358
+ // Update reliability (combination of success rate and consistency)
359
+ metrics.reliability = metrics.successRate * 0.8 + (1 - Math.min(responseTime / 10000, 1)) * 0.2;
360
+ this.agentMetrics.set(agentType, metrics);
361
+ }
362
+ /**
363
+ * Get performance analytics for all agents
364
+ */
365
+ getPerformanceAnalytics() {
366
+ const geminiMetrics = this.agentMetrics.get('gemini');
367
+ const julesMetrics = this.agentMetrics.get('jules');
368
+ const geminiRecommendation = this.getAgentRecommendation('gemini', geminiMetrics);
369
+ const julesRecommendation = this.getAgentRecommendation('jules', julesMetrics);
370
+ const totalExecutions = geminiMetrics.totalExecutions + julesMetrics.totalExecutions;
371
+ const averageSuccessRate = (geminiMetrics.successRate + julesMetrics.successRate) / 2;
372
+ const recommendedPrimary = geminiMetrics.reliability >= julesMetrics.reliability ? 'gemini' : 'jules';
373
+ return {
374
+ gemini: { ...geminiMetrics, recommendation: geminiRecommendation },
375
+ jules: { ...julesMetrics, recommendation: julesRecommendation },
376
+ overall: {
377
+ totalExecutions,
378
+ averageSuccessRate,
379
+ recommendedPrimary
380
+ }
381
+ };
382
+ }
383
+ /**
384
+ * Get recommendation for specific agent
385
+ */
386
+ getAgentRecommendation(agentType, metrics) {
387
+ if (metrics.reliability > 0.9) {
388
+ return `Excellent performance - recommended for ${agentType === 'gemini' ? 'real-time fixes' : 'complex autonomous work'}`;
389
+ }
390
+ else if (metrics.reliability > 0.8) {
391
+ return `Good performance - suitable for most tasks`;
392
+ }
393
+ else if (metrics.reliability > 0.6) {
394
+ return `Moderate performance - consider as fallback option`;
395
+ }
396
+ else {
397
+ return `Poor performance - check configuration and API keys`;
398
+ }
399
+ }
400
+ /**
401
+ * Reset metrics (useful for testing or fresh start)
402
+ */
403
+ resetMetrics() {
404
+ this.initializeMetrics();
405
+ this.categoryLogger.info('Agent metrics reset');
406
+ }
407
+ /**
408
+ * Export metrics for external analysis
409
+ */
410
+ exportMetrics() {
411
+ return {
412
+ gemini: { ...this.agentMetrics.get('gemini') },
413
+ jules: { ...this.agentMetrics.get('jules') }
414
+ };
415
+ }
416
+ }
417
+ //# sourceMappingURL=agentkit-orchestrator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agentkit-orchestrator.js","sourceRoot":"","sources":["../../src/ai/agentkit-orchestrator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,85 @@
1
+ import type { Violation, Analysis, Fix } from '../types/index.js';
2
+ import { ErrorType } from '../core/error-handler.js';
3
+ /**
4
+ * Gemini 2.5 Pro code fixer for local files and repositories
5
+ * Works with any code (GitHub or not, committed or uncommitted)
6
+ */
7
+ export declare class GeminiCodeFixer {
8
+ private apiKey;
9
+ private baseUrl;
10
+ private categoryLogger;
11
+ constructor(apiKey: string);
12
+ /**
13
+ * Generate a fix using Gemini 2.5 Pro with grounding
14
+ */
15
+ generateFix(violation: Violation, analysis: Analysis): Promise<Fix>;
16
+ /**
17
+ * Make API call to Gemini 2.5 Pro with grounding
18
+ */
19
+ private makeApiCall;
20
+ /**
21
+ * Build comprehensive fix prompt for Gemini 2.5 Pro
22
+ */
23
+ private buildFixPrompt;
24
+ /**
25
+ * Read file content with error handling
26
+ */
27
+ private readFileContent;
28
+ /**
29
+ * Get file extension for syntax highlighting
30
+ */
31
+ private getFileExtension;
32
+ /**
33
+ * Parse Gemini's fix response and create Fix object
34
+ */
35
+ private parseFixResponse;
36
+ /**
37
+ * Extract a specific section from the response
38
+ */
39
+ private extractSection;
40
+ /**
41
+ * Clean and validate diff content
42
+ */
43
+ private cleanDiffContent;
44
+ /**
45
+ * Generate preview from diff content
46
+ */
47
+ private generatePreviewFromDiff;
48
+ /**
49
+ * Calculate confidence score based on response quality
50
+ */
51
+ private calculateFixConfidence;
52
+ /**
53
+ * Build comprehensive explanation
54
+ */
55
+ private buildFullExplanation;
56
+ /**
57
+ * Generate basic diff as fallback
58
+ */
59
+ private generateBasicDiff;
60
+ /**
61
+ * Test API connectivity
62
+ */
63
+ testConnection(): Promise<{
64
+ success: boolean;
65
+ error?: string;
66
+ errorType?: ErrorType;
67
+ }>;
68
+ /**
69
+ * Validate API key format
70
+ */
71
+ static validateApiKey(apiKey: string): boolean;
72
+ /**
73
+ * Generate multiple fix options for complex issues
74
+ */
75
+ generateFixOptions(violation: Violation, analysis: Analysis): Promise<Fix[]>;
76
+ /**
77
+ * Generate alternative fix approach
78
+ */
79
+ private generateAlternativeFix;
80
+ /**
81
+ * Build alternative fix prompt with different strategy
82
+ */
83
+ private buildAlternativeFixPrompt;
84
+ }
85
+ //# sourceMappingURL=gemini-code-fixer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gemini-code-fixer.d.ts","sourceRoot":"","sources":["../../src/ai/gemini-code-fixer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAElE,OAAO,EAA0B,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAI7E;;;GAGG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAA4F;IAC3G,OAAO,CAAC,cAAc,CAAiD;gBAE3D,MAAM,EAAE,MAAM;IAK1B;;OAEG;IACG,WAAW,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC;IAoFzE;;OAEG;YACW,WAAW;IAsCzB;;OAEG;IACH,OAAO,CAAC,cAAc;IAsDtB;;OAEG;YACW,eAAe;IAc7B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAoBxB;;OAEG;YACW,gBAAgB;IA0D9B;;OAEG;IACH,OAAO,CAAC,cAAc;IAWtB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAiBxB;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAuB/B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAgB9B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAwB5B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAWzB;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,SAAS,CAAA;KAAE,CAAC;IA2B5F;;OAEG;WACW,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAKrD;;OAEG;IACG,kBAAkB,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IA6BlF;;OAEG;YACW,sBAAsB;IA0BpC;;OAEG;IACH,OAAO,CAAC,yBAAyB;CAWlC"}