codehere 0.1.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 (159) hide show
  1. package/ARCHITECTURE.md +240 -0
  2. package/CHANGELOG.md +44 -0
  3. package/CONTRIBUTING.md +171 -0
  4. package/LICENSE +22 -0
  5. package/README.md +203 -0
  6. package/dist/ast-parser.d.ts +55 -0
  7. package/dist/ast-parser.d.ts.map +1 -0
  8. package/dist/ast-parser.js +331 -0
  9. package/dist/ast-parser.js.map +1 -0
  10. package/dist/benchmark.d.ts +39 -0
  11. package/dist/benchmark.d.ts.map +1 -0
  12. package/dist/benchmark.js +195 -0
  13. package/dist/benchmark.js.map +1 -0
  14. package/dist/cache.d.ts +45 -0
  15. package/dist/cache.d.ts.map +1 -0
  16. package/dist/cache.js +182 -0
  17. package/dist/cache.js.map +1 -0
  18. package/dist/chat.d.ts +4 -0
  19. package/dist/chat.d.ts.map +1 -0
  20. package/dist/chat.js +132 -0
  21. package/dist/chat.js.map +1 -0
  22. package/dist/code-analysis.d.ts +50 -0
  23. package/dist/code-analysis.d.ts.map +1 -0
  24. package/dist/code-analysis.js +327 -0
  25. package/dist/code-analysis.js.map +1 -0
  26. package/dist/context.d.ts +44 -0
  27. package/dist/context.d.ts.map +1 -0
  28. package/dist/context.js +187 -0
  29. package/dist/context.js.map +1 -0
  30. package/dist/docs.d.ts +21 -0
  31. package/dist/docs.d.ts.map +1 -0
  32. package/dist/docs.js +147 -0
  33. package/dist/docs.js.map +1 -0
  34. package/dist/edit.d.ts +38 -0
  35. package/dist/edit.d.ts.map +1 -0
  36. package/dist/edit.js +594 -0
  37. package/dist/edit.js.map +1 -0
  38. package/dist/embed.d.ts +18 -0
  39. package/dist/embed.d.ts.map +1 -0
  40. package/dist/embed.js +479 -0
  41. package/dist/embed.js.map +1 -0
  42. package/dist/error-handler.d.ts +76 -0
  43. package/dist/error-handler.d.ts.map +1 -0
  44. package/dist/error-handler.js +213 -0
  45. package/dist/error-handler.js.map +1 -0
  46. package/dist/formatter.d.ts +25 -0
  47. package/dist/formatter.d.ts.map +1 -0
  48. package/dist/formatter.js +148 -0
  49. package/dist/formatter.js.map +1 -0
  50. package/dist/git.d.ts +55 -0
  51. package/dist/git.d.ts.map +1 -0
  52. package/dist/git.js +198 -0
  53. package/dist/git.js.map +1 -0
  54. package/dist/index.d.ts +3 -0
  55. package/dist/index.d.ts.map +1 -0
  56. package/dist/index.js +964 -0
  57. package/dist/index.js.map +1 -0
  58. package/dist/intelligent-retrieval.d.ts +41 -0
  59. package/dist/intelligent-retrieval.d.ts.map +1 -0
  60. package/dist/intelligent-retrieval.js +265 -0
  61. package/dist/intelligent-retrieval.js.map +1 -0
  62. package/dist/iterative-refinement.d.ts +31 -0
  63. package/dist/iterative-refinement.d.ts.map +1 -0
  64. package/dist/iterative-refinement.js +172 -0
  65. package/dist/iterative-refinement.js.map +1 -0
  66. package/dist/learning.d.ts +69 -0
  67. package/dist/learning.d.ts.map +1 -0
  68. package/dist/learning.js +233 -0
  69. package/dist/learning.js.map +1 -0
  70. package/dist/log.d.ts +4 -0
  71. package/dist/log.d.ts.map +1 -0
  72. package/dist/log.js +31 -0
  73. package/dist/log.js.map +1 -0
  74. package/dist/migrate.d.ts +33 -0
  75. package/dist/migrate.d.ts.map +1 -0
  76. package/dist/migrate.js +133 -0
  77. package/dist/migrate.js.map +1 -0
  78. package/dist/monitoring.d.ts +75 -0
  79. package/dist/monitoring.d.ts.map +1 -0
  80. package/dist/monitoring.js +248 -0
  81. package/dist/monitoring.js.map +1 -0
  82. package/dist/parallel-processor.d.ts +43 -0
  83. package/dist/parallel-processor.d.ts.map +1 -0
  84. package/dist/parallel-processor.js +308 -0
  85. package/dist/parallel-processor.js.map +1 -0
  86. package/dist/planner.d.ts +47 -0
  87. package/dist/planner.d.ts.map +1 -0
  88. package/dist/planner.js +198 -0
  89. package/dist/planner.js.map +1 -0
  90. package/dist/policy.d.ts +3 -0
  91. package/dist/policy.d.ts.map +1 -0
  92. package/dist/policy.js +26 -0
  93. package/dist/policy.js.map +1 -0
  94. package/dist/query-optimizer.d.ts +32 -0
  95. package/dist/query-optimizer.d.ts.map +1 -0
  96. package/dist/query-optimizer.js +205 -0
  97. package/dist/query-optimizer.js.map +1 -0
  98. package/dist/refactor.d.ts +27 -0
  99. package/dist/refactor.d.ts.map +1 -0
  100. package/dist/refactor.js +118 -0
  101. package/dist/refactor.js.map +1 -0
  102. package/dist/review.d.ts +31 -0
  103. package/dist/review.d.ts.map +1 -0
  104. package/dist/review.js +206 -0
  105. package/dist/review.js.map +1 -0
  106. package/dist/scaffold.d.ts +14 -0
  107. package/dist/scaffold.d.ts.map +1 -0
  108. package/dist/scaffold.js +85 -0
  109. package/dist/scaffold.js.map +1 -0
  110. package/dist/search.d.ts +19 -0
  111. package/dist/search.d.ts.map +1 -0
  112. package/dist/search.js +198 -0
  113. package/dist/search.js.map +1 -0
  114. package/dist/session.d.ts +17 -0
  115. package/dist/session.d.ts.map +1 -0
  116. package/dist/session.js +301 -0
  117. package/dist/session.js.map +1 -0
  118. package/dist/task-verification.d.ts +39 -0
  119. package/dist/task-verification.d.ts.map +1 -0
  120. package/dist/task-verification.js +336 -0
  121. package/dist/task-verification.js.map +1 -0
  122. package/dist/test_cohere.d.ts +2 -0
  123. package/dist/test_cohere.d.ts.map +1 -0
  124. package/dist/test_cohere.js +68 -0
  125. package/dist/test_cohere.js.map +1 -0
  126. package/dist/test_env.d.ts +2 -0
  127. package/dist/test_env.d.ts.map +1 -0
  128. package/dist/test_env.js +24 -0
  129. package/dist/test_env.js.map +1 -0
  130. package/dist/test_retrieval.d.ts +2 -0
  131. package/dist/test_retrieval.d.ts.map +1 -0
  132. package/dist/test_retrieval.js +84 -0
  133. package/dist/test_retrieval.js.map +1 -0
  134. package/dist/testgen.d.ts +24 -0
  135. package/dist/testgen.d.ts.map +1 -0
  136. package/dist/testgen.js +167 -0
  137. package/dist/testgen.js.map +1 -0
  138. package/dist/token-optimizer.d.ts +20 -0
  139. package/dist/token-optimizer.d.ts.map +1 -0
  140. package/dist/token-optimizer.js +277 -0
  141. package/dist/token-optimizer.js.map +1 -0
  142. package/dist/types.d.ts +36 -0
  143. package/dist/types.d.ts.map +1 -0
  144. package/dist/types.js +2 -0
  145. package/dist/types.js.map +1 -0
  146. package/dist/ui.d.ts +54 -0
  147. package/dist/ui.d.ts.map +1 -0
  148. package/dist/ui.js +295 -0
  149. package/dist/ui.js.map +1 -0
  150. package/dist/verify_db.d.ts +2 -0
  151. package/dist/verify_db.d.ts.map +1 -0
  152. package/dist/verify_db.js +52 -0
  153. package/dist/verify_db.js.map +1 -0
  154. package/package.json +71 -0
  155. package/templates/next-page/app/layout.tsx +19 -0
  156. package/templates/next-page/app/page.tsx +10 -0
  157. package/templates/next-page/package.json +22 -0
  158. package/templates/node-api/index.js +57 -0
  159. package/templates/node-api/package.json +13 -0
@@ -0,0 +1,69 @@
1
+ /**
2
+ * Self-Correction & Learning System
3
+ * Learn from errors and improve over time
4
+ */
5
+ import type { ErrorContext } from './error-handler.js';
6
+ export interface ErrorPattern {
7
+ pattern: string;
8
+ category: string;
9
+ count: number;
10
+ lastSeen: string;
11
+ solutions: string[];
12
+ }
13
+ export interface LearningData {
14
+ errorPatterns: ErrorPattern[];
15
+ successfulOperations: string[];
16
+ performanceMetrics: {
17
+ operation: string;
18
+ avgTime: number;
19
+ successRate: number;
20
+ lastOptimized: string;
21
+ }[];
22
+ corrections: Array<{
23
+ error: string;
24
+ correction: string;
25
+ timestamp: string;
26
+ success: boolean;
27
+ }>;
28
+ }
29
+ /**
30
+ * Load learning data
31
+ */
32
+ export declare function loadLearningData(): LearningData;
33
+ /**
34
+ * Save learning data
35
+ */
36
+ export declare function saveLearningData(data: LearningData): void;
37
+ /**
38
+ * Record an error for learning
39
+ */
40
+ export declare function recordError(error: ErrorContext): void;
41
+ /**
42
+ * Record successful operation
43
+ */
44
+ export declare function recordSuccess(operation: string): void;
45
+ /**
46
+ * Get correction strategy for an error
47
+ */
48
+ export declare function getCorrectionStrategy(error: ErrorContext): string | null;
49
+ /**
50
+ * Record a correction attempt
51
+ */
52
+ export declare function recordCorrection(error: string, correction: string, success: boolean): void;
53
+ /**
54
+ * Update performance metrics
55
+ */
56
+ export declare function updatePerformanceMetrics(operation: string, time: number, success: boolean): void;
57
+ /**
58
+ * Get performance insights
59
+ */
60
+ export declare function getPerformanceInsights(): {
61
+ slowOperations: string[];
62
+ unreliableOperations: string[];
63
+ recommendations: string[];
64
+ };
65
+ /**
66
+ * Format learning insights for display
67
+ */
68
+ export declare function formatLearningInsights(): string;
69
+ //# sourceMappingURL=learning.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"learning.d.ts","sourceRoot":"","sources":["../src/learning.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,aAAa,EAAE,YAAY,EAAE,CAAC;IAC9B,oBAAoB,EAAE,MAAM,EAAE,CAAC;IAC/B,kBAAkB,EAAE;QAClB,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,EAAE,MAAM,CAAC;QACpB,aAAa,EAAE,MAAM,CAAC;KACvB,EAAE,CAAC;IACJ,WAAW,EAAE,KAAK,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,OAAO,CAAC;KAClB,CAAC,CAAC;CACJ;AAUD;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,YAAY,CAuB/C;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI,CAWzD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CA6BrD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAYrD;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,GAAG,IAAI,CAyBxE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CAiC1F;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CAqBhG;AAED;;GAEG;AACH,wBAAgB,sBAAsB,IAAI;IACxC,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,oBAAoB,EAAE,MAAM,EAAE,CAAC;IAC/B,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B,CAmCA;AAED;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,MAAM,CAmC/C"}
@@ -0,0 +1,233 @@
1
+ /**
2
+ * Self-Correction & Learning System
3
+ * Learn from errors and improve over time
4
+ */
5
+ import { readFileSync, writeFileSync, existsSync } from 'fs';
6
+ import { join, dirname } from 'path';
7
+ import { fileURLToPath } from 'url';
8
+ // Learning data file path
9
+ function getLearningDataPath() {
10
+ const __filename = fileURLToPath(import.meta.url);
11
+ const __dirname = dirname(__filename);
12
+ const agentDir = join(__dirname, '..');
13
+ return join(agentDir, 'data', 'learning.json');
14
+ }
15
+ /**
16
+ * Load learning data
17
+ */
18
+ export function loadLearningData() {
19
+ const dataPath = getLearningDataPath();
20
+ if (!existsSync(dataPath)) {
21
+ return {
22
+ errorPatterns: [],
23
+ successfulOperations: [],
24
+ performanceMetrics: [],
25
+ corrections: [],
26
+ };
27
+ }
28
+ try {
29
+ const content = readFileSync(dataPath, 'utf-8');
30
+ return JSON.parse(content);
31
+ }
32
+ catch (error) {
33
+ return {
34
+ errorPatterns: [],
35
+ successfulOperations: [],
36
+ performanceMetrics: [],
37
+ corrections: [],
38
+ };
39
+ }
40
+ }
41
+ /**
42
+ * Save learning data
43
+ */
44
+ export function saveLearningData(data) {
45
+ const dataPath = getLearningDataPath();
46
+ const dataDir = dirname(dataPath);
47
+ // Ensure directory exists
48
+ if (!existsSync(dataDir)) {
49
+ const { mkdirSync } = require('fs');
50
+ mkdirSync(dataDir, { recursive: true });
51
+ }
52
+ writeFileSync(dataPath, JSON.stringify(data, null, 2), 'utf-8');
53
+ }
54
+ /**
55
+ * Record an error for learning
56
+ */
57
+ export function recordError(error) {
58
+ const data = loadLearningData();
59
+ const errorMessage = error.originalError.message.toLowerCase();
60
+ // Find or create error pattern
61
+ let pattern = data.errorPatterns.find(p => errorMessage.includes(p.pattern.toLowerCase()) ||
62
+ p.pattern.toLowerCase().includes(errorMessage));
63
+ if (!pattern) {
64
+ // Extract key words from error
65
+ const words = errorMessage.split(/\s+/).filter(w => w.length > 4);
66
+ const keyPattern = words.slice(0, 3).join(' ');
67
+ pattern = {
68
+ pattern: keyPattern,
69
+ category: error.errorType,
70
+ count: 0,
71
+ lastSeen: new Date().toISOString(),
72
+ solutions: [],
73
+ };
74
+ data.errorPatterns.push(pattern);
75
+ }
76
+ pattern.count++;
77
+ pattern.lastSeen = new Date().toISOString();
78
+ saveLearningData(data);
79
+ }
80
+ /**
81
+ * Record successful operation
82
+ */
83
+ export function recordSuccess(operation) {
84
+ const data = loadLearningData();
85
+ if (!data.successfulOperations.includes(operation)) {
86
+ data.successfulOperations.push(operation);
87
+ // Keep only last 100
88
+ if (data.successfulOperations.length > 100) {
89
+ data.successfulOperations.shift();
90
+ }
91
+ }
92
+ saveLearningData(data);
93
+ }
94
+ /**
95
+ * Get correction strategy for an error
96
+ */
97
+ export function getCorrectionStrategy(error) {
98
+ const data = loadLearningData();
99
+ const errorMessage = error.originalError.message.toLowerCase();
100
+ // Find matching pattern
101
+ const pattern = data.errorPatterns.find(p => errorMessage.includes(p.pattern.toLowerCase()) ||
102
+ p.pattern.toLowerCase().includes(errorMessage));
103
+ if (pattern && pattern.solutions.length > 0) {
104
+ // Return most recent successful solution
105
+ return pattern.solutions[pattern.solutions.length - 1];
106
+ }
107
+ // Check corrections history
108
+ const similarCorrection = data.corrections
109
+ .filter(c => c.success)
110
+ .find(c => errorMessage.includes(c.error.toLowerCase()) || c.error.toLowerCase().includes(errorMessage));
111
+ if (similarCorrection) {
112
+ return similarCorrection.correction;
113
+ }
114
+ return null;
115
+ }
116
+ /**
117
+ * Record a correction attempt
118
+ */
119
+ export function recordCorrection(error, correction, success) {
120
+ const data = loadLearningData();
121
+ data.corrections.push({
122
+ error,
123
+ correction,
124
+ timestamp: new Date().toISOString(),
125
+ success,
126
+ });
127
+ // Keep only last 50 corrections
128
+ if (data.corrections.length > 50) {
129
+ data.corrections.shift();
130
+ }
131
+ // If successful, add to pattern solutions
132
+ if (success) {
133
+ const errorLower = error.toLowerCase();
134
+ const pattern = data.errorPatterns.find(p => errorLower.includes(p.pattern.toLowerCase()) ||
135
+ p.pattern.toLowerCase().includes(errorLower));
136
+ if (pattern && !pattern.solutions.includes(correction)) {
137
+ pattern.solutions.push(correction);
138
+ // Keep only last 5 solutions per pattern
139
+ if (pattern.solutions.length > 5) {
140
+ pattern.solutions.shift();
141
+ }
142
+ }
143
+ }
144
+ saveLearningData(data);
145
+ }
146
+ /**
147
+ * Update performance metrics
148
+ */
149
+ export function updatePerformanceMetrics(operation, time, success) {
150
+ const data = loadLearningData();
151
+ let metric = data.performanceMetrics.find(m => m.operation === operation);
152
+ if (!metric) {
153
+ metric = {
154
+ operation,
155
+ avgTime: time,
156
+ successRate: success ? 1.0 : 0.0,
157
+ lastOptimized: new Date().toISOString(),
158
+ };
159
+ data.performanceMetrics.push(metric);
160
+ }
161
+ else {
162
+ // Update running average
163
+ metric.avgTime = (metric.avgTime * 0.9) + (time * 0.1);
164
+ metric.successRate = (metric.successRate * 0.9) + (success ? 1.0 : 0.0);
165
+ metric.lastOptimized = new Date().toISOString();
166
+ }
167
+ saveLearningData(data);
168
+ }
169
+ /**
170
+ * Get performance insights
171
+ */
172
+ export function getPerformanceInsights() {
173
+ const data = loadLearningData();
174
+ const slowOperations = data.performanceMetrics
175
+ .filter(m => m.avgTime > 5000) // > 5 seconds
176
+ .map(m => m.operation);
177
+ const unreliableOperations = data.performanceMetrics
178
+ .filter(m => m.successRate < 0.8) // < 80% success rate
179
+ .map(m => m.operation);
180
+ const recommendations = [];
181
+ if (slowOperations.length > 0) {
182
+ recommendations.push(`Consider optimizing: ${slowOperations.join(', ')}`);
183
+ }
184
+ if (unreliableOperations.length > 0) {
185
+ recommendations.push(`Improve reliability: ${unreliableOperations.join(', ')}`);
186
+ }
187
+ const frequentErrors = data.errorPatterns
188
+ .filter(p => p.count > 5)
189
+ .sort((a, b) => b.count - a.count)
190
+ .slice(0, 3);
191
+ if (frequentErrors.length > 0) {
192
+ recommendations.push(`Address frequent errors: ${frequentErrors.map(e => e.pattern).join(', ')}`);
193
+ }
194
+ return {
195
+ slowOperations,
196
+ unreliableOperations,
197
+ recommendations,
198
+ };
199
+ }
200
+ /**
201
+ * Format learning insights for display
202
+ */
203
+ export function formatLearningInsights() {
204
+ const data = loadLearningData();
205
+ const insights = getPerformanceInsights();
206
+ let output = 'Learning Insights\n';
207
+ output += '────────────────────────────────────────────────────\n\n';
208
+ if (data.errorPatterns.length > 0) {
209
+ output += 'Error Patterns:\n';
210
+ const topErrors = data.errorPatterns
211
+ .sort((a, b) => b.count - a.count)
212
+ .slice(0, 5);
213
+ for (const pattern of topErrors) {
214
+ output += ` • ${pattern.pattern} (${pattern.count} times)\n`;
215
+ if (pattern.solutions.length > 0) {
216
+ output += ` Solutions: ${pattern.solutions.length} known\n`;
217
+ }
218
+ }
219
+ output += '\n';
220
+ }
221
+ if (insights.recommendations.length > 0) {
222
+ output += 'Recommendations:\n';
223
+ for (const rec of insights.recommendations) {
224
+ output += ` • ${rec}\n`;
225
+ }
226
+ output += '\n';
227
+ }
228
+ if (data.successfulOperations.length > 0) {
229
+ output += `Successful Operations: ${data.successfulOperations.length}\n`;
230
+ }
231
+ return output;
232
+ }
233
+ //# sourceMappingURL=learning.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"learning.js","sourceRoot":"","sources":["../src/learning.ts"],"names":[],"mappings":"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"}
package/dist/log.d.ts ADDED
@@ -0,0 +1,4 @@
1
+ import type { LogEntry } from './types.js';
2
+ export declare function initLogFile(): void;
3
+ export declare function logEntry(entry: LogEntry): void;
4
+ //# sourceMappingURL=log.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log.d.ts","sourceRoot":"","sources":["../src/log.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAiB3C,wBAAgB,WAAW,IAAI,IAAI,CASlC;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI,CAG9C"}
package/dist/log.js ADDED
@@ -0,0 +1,31 @@
1
+ import { writeFileSync, appendFileSync, existsSync, mkdirSync } from 'fs';
2
+ import { join, dirname } from 'path';
3
+ import { fileURLToPath } from 'url';
4
+ // Log file path: use agent/data if in agent directory, otherwise use current directory
5
+ function getLogPath() {
6
+ const __filename = fileURLToPath(import.meta.url);
7
+ const __dirname = dirname(__filename);
8
+ const agentDir = join(__dirname, '..');
9
+ // Check if we're in the agent directory structure
10
+ if (existsSync(join(agentDir, 'package.json'))) {
11
+ return join(agentDir, 'data', 'logs.jsonl');
12
+ }
13
+ // Otherwise use current directory
14
+ return join(process.cwd(), 'agent', 'data', 'logs.jsonl');
15
+ }
16
+ const LOG_FILE = getLogPath();
17
+ export function initLogFile() {
18
+ const logDir = join(process.cwd(), 'agent', 'data');
19
+ if (!existsSync(logDir)) {
20
+ mkdirSync(logDir, { recursive: true });
21
+ }
22
+ // Create empty log file if it doesn't exist
23
+ if (!existsSync(LOG_FILE)) {
24
+ writeFileSync(LOG_FILE, '');
25
+ }
26
+ }
27
+ export function logEntry(entry) {
28
+ const jsonLine = JSON.stringify(entry) + '\n';
29
+ appendFileSync(LOG_FILE, jsonLine, 'utf-8');
30
+ }
31
+ //# sourceMappingURL=log.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log.js","sourceRoot":"","sources":["../src/log.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAC1E,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAGpC,uFAAuF;AACvF,SAAS,UAAU;IACjB,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IACvC,kDAAkD;IAClD,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC;QAC/C,OAAO,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;IAC9C,CAAC;IACD,kCAAkC;IAClC,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;AAC5D,CAAC;AAED,MAAM,QAAQ,GAAG,UAAU,EAAE,CAAC;AAE9B,MAAM,UAAU,WAAW;IACzB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IACpD,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QACxB,SAAS,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzC,CAAC;IACD,4CAA4C;IAC5C,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1B,aAAa,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IAC9B,CAAC;AACH,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,KAAe;IACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;IAC9C,cAAc,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AAC9C,CAAC"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Migration Assistant
3
+ * Help with framework upgrades and API migrations
4
+ */
5
+ export interface MigrationPlan {
6
+ from: string;
7
+ to: string;
8
+ files: string[];
9
+ steps: Array<{
10
+ step: number;
11
+ description: string;
12
+ files: string[];
13
+ risk: 'low' | 'medium' | 'high';
14
+ }>;
15
+ estimatedTime: string;
16
+ }
17
+ /**
18
+ * Plan a framework migration
19
+ */
20
+ export declare function planMigration(from: string, to: string, files?: string[]): Promise<MigrationPlan>;
21
+ /**
22
+ * Generate migration code for a file
23
+ */
24
+ export declare function generateMigration(filepath: string, from: string, to: string): Promise<{
25
+ original: string;
26
+ migrated: string;
27
+ changes: string[];
28
+ }>;
29
+ /**
30
+ * Format migration plan for display
31
+ */
32
+ export declare function formatMigrationPlan(plan: MigrationPlan): string;
33
+ //# sourceMappingURL=migrate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../src/migrate.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,KAAK,EAAE,KAAK,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,KAAK,EAAE,MAAM,EAAE,CAAC;QAChB,IAAI,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;KACjC,CAAC,CAAC;IACH,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,EACV,KAAK,CAAC,EAAE,MAAM,EAAE,GACf,OAAO,CAAC,aAAa,CAAC,CA+DxB;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,GACT,OAAO,CAAC;IACT,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB,CAAC,CAuDD;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,CAoB/D"}
@@ -0,0 +1,133 @@
1
+ /**
2
+ * Migration Assistant
3
+ * Help with framework upgrades and API migrations
4
+ */
5
+ import { readFileSync, existsSync } from 'fs';
6
+ import { join } from 'path';
7
+ import { chatWithContext } from './chat.js';
8
+ import { getEnhancedContext } from './context.js';
9
+ /**
10
+ * Plan a framework migration
11
+ */
12
+ export async function planMigration(from, to, files) {
13
+ // Get context about the codebase
14
+ const context = await getEnhancedContext(`Migrate from ${from} to ${to}`, {
15
+ primaryChunks: 20,
16
+ includeRelationships: true,
17
+ });
18
+ // Identify files that need migration
19
+ const filesToMigrate = files || context.primaryChunks.map(c => c.filepath);
20
+ // Create migration steps
21
+ const steps = [
22
+ {
23
+ step: 1,
24
+ description: `Update dependencies from ${from} to ${to}`,
25
+ files: ['package.json', 'requirements.txt', 'pom.xml'].filter(f => filesToMigrate.some(ft => ft.includes(f))),
26
+ risk: 'low',
27
+ },
28
+ {
29
+ step: 2,
30
+ description: `Update import statements from ${from} to ${to}`,
31
+ files: filesToMigrate.filter(f => f.endsWith('.ts') || f.endsWith('.js') || f.endsWith('.py')),
32
+ risk: 'medium',
33
+ },
34
+ {
35
+ step: 3,
36
+ description: `Update API calls and method signatures`,
37
+ files: filesToMigrate,
38
+ risk: 'high',
39
+ },
40
+ {
41
+ step: 4,
42
+ description: `Update configuration files`,
43
+ files: filesToMigrate.filter(f => f.includes('config') || f.includes('settings') || f.includes('.env')),
44
+ risk: 'medium',
45
+ },
46
+ {
47
+ step: 5,
48
+ description: `Run tests and fix breaking changes`,
49
+ files: [],
50
+ risk: 'high',
51
+ },
52
+ ];
53
+ // Estimate time based on file count
54
+ const fileCount = filesToMigrate.length;
55
+ const estimatedHours = Math.ceil(fileCount / 10) * 2; // 2 hours per 10 files
56
+ const estimatedTime = `${estimatedHours} hour(s)`;
57
+ return {
58
+ from,
59
+ to,
60
+ files: filesToMigrate,
61
+ steps,
62
+ estimatedTime,
63
+ };
64
+ }
65
+ /**
66
+ * Generate migration code for a file
67
+ */
68
+ export async function generateMigration(filepath, from, to) {
69
+ const fullPath = join(process.cwd(), filepath);
70
+ if (!existsSync(fullPath)) {
71
+ throw new Error(`File not found: ${filepath}`);
72
+ }
73
+ const original = readFileSync(fullPath, 'utf-8');
74
+ // Get context
75
+ const context = await getEnhancedContext(`Migrate ${filepath} from ${from} to ${to}`, {
76
+ primaryChunks: 15,
77
+ includeRelationships: true,
78
+ });
79
+ // Create migration prompt
80
+ const migrationPrompt = `Migrate this code from ${from} to ${from}:
81
+
82
+ File: ${filepath}
83
+ Original code:
84
+ \`\`\`
85
+ ${original}
86
+ \`\`\`
87
+
88
+ Provide the migrated code with ${to} syntax and explain the key changes.`;
89
+ const contextResults = [{
90
+ filepath,
91
+ content: original,
92
+ score: 1.0,
93
+ }, ...context.primaryChunks];
94
+ const migratedResponse = await chatWithContext(migrationPrompt, contextResults);
95
+ // Extract code from response
96
+ const codeMatch = migratedResponse.match(/```[\s\S]*?```/);
97
+ const migrated = codeMatch
98
+ ? codeMatch[0].replace(/```\w*\n?/g, '').replace(/```/g, '').trim()
99
+ : migratedResponse;
100
+ // Extract changes
101
+ const changes = [];
102
+ const changeMatches = migratedResponse.match(/(?:change|update|replace)[^\.]+\./gi);
103
+ if (changeMatches) {
104
+ changes.push(...changeMatches.slice(0, 5));
105
+ }
106
+ return {
107
+ original,
108
+ migrated,
109
+ changes,
110
+ };
111
+ }
112
+ /**
113
+ * Format migration plan for display
114
+ */
115
+ export function formatMigrationPlan(plan) {
116
+ let output = `Migration Plan: ${plan.from} → ${plan.to}\n`;
117
+ output += `Files to migrate: ${plan.files.length}\n`;
118
+ output += `Estimated time: ${plan.estimatedTime}\n\n`;
119
+ output += 'Steps:\n';
120
+ for (const step of plan.steps) {
121
+ const riskIcon = {
122
+ low: '✓',
123
+ medium: '⚠',
124
+ high: '✗',
125
+ }[step.risk];
126
+ output += ` ${riskIcon} Step ${step.step}: ${step.description}\n`;
127
+ if (step.files.length > 0) {
128
+ output += ` Files: ${step.files.length}\n`;
129
+ }
130
+ }
131
+ return output;
132
+ }
133
+ //# sourceMappingURL=migrate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrate.js","sourceRoot":"","sources":["../src/migrate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,75 @@
1
+ /**
2
+ * Enterprise Monitoring & Health Check System
3
+ * Ensures 24/7 operation visibility
4
+ */
5
+ export interface HealthStatus {
6
+ status: 'healthy' | 'degraded' | 'unhealthy';
7
+ timestamp: string;
8
+ checks: {
9
+ database: {
10
+ status: 'ok' | 'error';
11
+ message: string;
12
+ };
13
+ api: {
14
+ status: 'ok' | 'error' | 'circuit_open';
15
+ message: string;
16
+ };
17
+ filesystem: {
18
+ status: 'ok' | 'error';
19
+ message: string;
20
+ };
21
+ memory: {
22
+ status: 'ok' | 'warning';
23
+ message: string;
24
+ usage?: number;
25
+ };
26
+ };
27
+ }
28
+ export interface Metrics {
29
+ operations: {
30
+ total: number;
31
+ successful: number;
32
+ failed: number;
33
+ retries: number;
34
+ };
35
+ performance: {
36
+ avgResponseTime: number;
37
+ avgRetryTime: number;
38
+ apiCalls: number;
39
+ cacheHits: number;
40
+ };
41
+ errors: {
42
+ byType: Record<string, number>;
43
+ recent: Array<{
44
+ timestamp: string;
45
+ type: string;
46
+ message: string;
47
+ }>;
48
+ };
49
+ }
50
+ declare class MetricsCollector {
51
+ private operations;
52
+ private performance;
53
+ private errors;
54
+ recordOperation(success: boolean, responseTime?: number, retries?: number): void;
55
+ recordApiCall(): void;
56
+ recordCacheHit(): void;
57
+ recordError(type: string, message: string): void;
58
+ getMetrics(): Metrics;
59
+ reset(): void;
60
+ }
61
+ export declare const metricsCollector: MetricsCollector;
62
+ /**
63
+ * Perform health check
64
+ */
65
+ export declare function performHealthCheck(): HealthStatus;
66
+ /**
67
+ * Get current metrics
68
+ */
69
+ export declare function getMetrics(): Metrics;
70
+ /**
71
+ * Format health status for display
72
+ */
73
+ export declare function formatHealthStatus(health: HealthStatus): string;
74
+ export {};
75
+ //# sourceMappingURL=monitoring.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"monitoring.d.ts","sourceRoot":"","sources":["../src/monitoring.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,SAAS,GAAG,UAAU,GAAG,WAAW,CAAC;IAC7C,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE;QACN,QAAQ,EAAE;YAAE,MAAM,EAAE,IAAI,GAAG,OAAO,CAAC;YAAC,OAAO,EAAE,MAAM,CAAA;SAAE,CAAC;QACtD,GAAG,EAAE;YAAE,MAAM,EAAE,IAAI,GAAG,OAAO,GAAG,cAAc,CAAC;YAAC,OAAO,EAAE,MAAM,CAAA;SAAE,CAAC;QAClE,UAAU,EAAE;YAAE,MAAM,EAAE,IAAI,GAAG,OAAO,CAAC;YAAC,OAAO,EAAE,MAAM,CAAA;SAAE,CAAC;QACxD,MAAM,EAAE;YAAE,MAAM,EAAE,IAAI,GAAG,SAAS,CAAC;YAAC,OAAO,EAAE,MAAM,CAAC;YAAC,KAAK,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;KACvE,CAAC;CACH;AAED,MAAM,WAAW,OAAO;IACtB,UAAU,EAAE;QACV,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,EAAE,MAAM,CAAC;QACnB,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,WAAW,EAAE;QACX,eAAe,EAAE,MAAM,CAAC;QACxB,YAAY,EAAE,MAAM,CAAC;QACrB,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,MAAM,EAAE;QACN,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC/B,MAAM,EAAE,KAAK,CAAC;YAAE,SAAS,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KACrE,CAAC;CACH;AAED,cAAM,gBAAgB;IACpB,OAAO,CAAC,UAAU,CAKhB;IAEF,OAAO,CAAC,WAAW,CAKjB;IAEF,OAAO,CAAC,MAAM,CAGZ;IAEF,eAAe,CAAC,OAAO,EAAE,OAAO,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI;IAmBhF,aAAa,IAAI,IAAI;IAIrB,cAAc,IAAI,IAAI;IAItB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAahD,UAAU,IAAI,OAAO;IAwBrB,KAAK,IAAI,IAAI;CAKd;AAED,eAAO,MAAM,gBAAgB,kBAAyB,CAAC;AAkHvD;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,YAAY,CA2BjD;AAED;;GAEG;AACH,wBAAgB,UAAU,IAAI,OAAO,CAEpC;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAsB/D"}