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,336 @@
1
+ /**
2
+ * Task Completion Verification System
3
+ * Verify code compiles, runs, meets requirements, rollback on failure
4
+ */
5
+ import { readFileSync, writeFileSync, existsSync } from 'fs';
6
+ import { join, dirname } from 'path';
7
+ import { execSync } from 'child_process';
8
+ import { applyUnifiedDiff } from './edit.js';
9
+ /**
10
+ * Verify task completion
11
+ */
12
+ export async function verifyTask(context) {
13
+ const result = {
14
+ success: false,
15
+ compiled: false,
16
+ testsPassed: false,
17
+ requirementsMet: false,
18
+ errors: [],
19
+ warnings: [],
20
+ rollbackRequired: false,
21
+ };
22
+ // Step 1: Check if code compiles
23
+ const compileResult = await verifyCompilation(context);
24
+ result.compiled = compileResult.success;
25
+ result.errors.push(...compileResult.errors);
26
+ result.warnings.push(...compileResult.warnings);
27
+ if (!result.compiled) {
28
+ result.rollbackRequired = true;
29
+ return result;
30
+ }
31
+ // Step 2: Check if tests pass
32
+ const testResult = await verifyTests(context);
33
+ result.testsPassed = testResult.success;
34
+ result.errors.push(...testResult.errors);
35
+ result.warnings.push(...testResult.warnings);
36
+ // Step 3: Check if requirements are met
37
+ if (context.requirements && context.requirements.length > 0) {
38
+ const reqResult = await verifyRequirements(context);
39
+ result.requirementsMet = reqResult.success;
40
+ result.errors.push(...reqResult.errors);
41
+ result.warnings.push(...reqResult.warnings);
42
+ }
43
+ else {
44
+ result.requirementsMet = true; // No requirements specified
45
+ }
46
+ // Overall success
47
+ result.success = result.compiled &&
48
+ (result.testsPassed || !testResult.ran) && // Tests optional if not run
49
+ result.requirementsMet;
50
+ if (!result.success) {
51
+ result.rollbackRequired = true;
52
+ }
53
+ return result;
54
+ }
55
+ /**
56
+ * Verify code compiles
57
+ */
58
+ async function verifyCompilation(context) {
59
+ const errors = [];
60
+ const warnings = [];
61
+ try {
62
+ const ext = context.filepath.split('.').pop()?.toLowerCase();
63
+ if (ext === 'ts' || ext === 'tsx') {
64
+ // TypeScript compilation check
65
+ const result = checkTypeScript(context.filepath);
66
+ if (!result.success) {
67
+ errors.push(...result.errors);
68
+ warnings.push(...result.warnings);
69
+ return { success: false, errors, warnings };
70
+ }
71
+ }
72
+ else if (ext === 'js' || ext === 'jsx') {
73
+ // JavaScript syntax check
74
+ const result = checkJavaScript(context.filepath);
75
+ if (!result.success) {
76
+ errors.push(...result.errors);
77
+ warnings.push(...result.warnings);
78
+ return { success: false, errors, warnings };
79
+ }
80
+ }
81
+ return { success: true, errors, warnings };
82
+ }
83
+ catch (error) {
84
+ errors.push(`Compilation check failed: ${error instanceof Error ? error.message : String(error)}`);
85
+ return { success: false, errors, warnings };
86
+ }
87
+ }
88
+ /**
89
+ * Check TypeScript compilation
90
+ */
91
+ function checkTypeScript(filepath) {
92
+ const errors = [];
93
+ const warnings = [];
94
+ try {
95
+ // Try to run tsc --noEmit on the file
96
+ const dir = dirname(filepath);
97
+ const result = execSync(`npx tsc --noEmit --skipLibCheck "${filepath}" 2>&1`, { cwd: dir, encoding: 'utf-8', stdio: 'pipe' });
98
+ // If there's output, there are errors
99
+ if (result.trim().length > 0) {
100
+ const lines = result.split('\n');
101
+ for (const line of lines) {
102
+ if (line.includes('error TS')) {
103
+ errors.push(line);
104
+ }
105
+ else if (line.includes('warning TS')) {
106
+ warnings.push(line);
107
+ }
108
+ }
109
+ }
110
+ return {
111
+ success: errors.length === 0,
112
+ errors,
113
+ warnings,
114
+ };
115
+ }
116
+ catch (error) {
117
+ // execSync throws on non-zero exit
118
+ const output = error.stdout || error.stderr || error.message || '';
119
+ const lines = output.split('\n');
120
+ for (const line of lines) {
121
+ if (line.includes('error TS')) {
122
+ errors.push(line);
123
+ }
124
+ else if (line.includes('warning TS')) {
125
+ warnings.push(line);
126
+ }
127
+ }
128
+ return {
129
+ success: false,
130
+ errors: errors.length > 0 ? errors : [output],
131
+ warnings,
132
+ };
133
+ }
134
+ }
135
+ /**
136
+ * Check JavaScript syntax
137
+ */
138
+ function checkJavaScript(filepath) {
139
+ const errors = [];
140
+ const warnings = [];
141
+ try {
142
+ // Try to parse with node
143
+ const content = readFileSync(filepath, 'utf-8');
144
+ // Basic syntax check: try to parse
145
+ try {
146
+ // Use eval in a safe way to check syntax (just parsing, not execution)
147
+ new Function(content);
148
+ }
149
+ catch (parseError) {
150
+ errors.push(`Syntax error: ${parseError instanceof Error ? parseError.message : String(parseError)}`);
151
+ return { success: false, errors, warnings };
152
+ }
153
+ return { success: true, errors, warnings };
154
+ }
155
+ catch (error) {
156
+ errors.push(`JavaScript check failed: ${error instanceof Error ? error.message : String(error)}`);
157
+ return { success: false, errors, warnings };
158
+ }
159
+ }
160
+ /**
161
+ * Verify tests pass
162
+ */
163
+ async function verifyTests(context) {
164
+ const errors = [];
165
+ const warnings = [];
166
+ try {
167
+ // Look for test files
168
+ const testFiles = findTestFiles(context.filepath);
169
+ if (testFiles.length === 0) {
170
+ return { success: true, ran: false, errors, warnings }; // No tests to run
171
+ }
172
+ // Try to run tests
173
+ const dir = dirname(context.filepath);
174
+ let testCommand = '';
175
+ // Detect test framework
176
+ if (existsSync(join(dir, 'package.json'))) {
177
+ const packageJson = JSON.parse(readFileSync(join(dir, 'package.json'), 'utf-8'));
178
+ const scripts = packageJson.scripts || {};
179
+ if (scripts.test) {
180
+ testCommand = scripts.test;
181
+ }
182
+ else if (scripts['test:unit']) {
183
+ testCommand = scripts['test:unit'];
184
+ }
185
+ }
186
+ if (!testCommand) {
187
+ // Try common test commands
188
+ if (existsSync(join(dir, 'jest.config.js')) || existsSync(join(dir, 'jest.config.ts'))) {
189
+ testCommand = 'npx jest';
190
+ }
191
+ else if (existsSync(join(dir, 'vitest.config.ts'))) {
192
+ testCommand = 'npx vitest run';
193
+ }
194
+ else {
195
+ return { success: true, ran: false, errors, warnings }; // Can't determine test framework
196
+ }
197
+ }
198
+ try {
199
+ const result = execSync(testCommand, {
200
+ cwd: dir,
201
+ encoding: 'utf-8',
202
+ stdio: 'pipe',
203
+ timeout: 30000, // 30 second timeout
204
+ });
205
+ // Check if tests passed (look for "PASS" or "✓" in output)
206
+ const passed = result.includes('PASS') ||
207
+ result.includes('✓') ||
208
+ (result.includes('passed') && !result.includes('failed'));
209
+ if (!passed) {
210
+ errors.push('Tests failed');
211
+ errors.push(result);
212
+ }
213
+ return {
214
+ success: passed,
215
+ ran: true,
216
+ errors,
217
+ warnings,
218
+ };
219
+ }
220
+ catch (error) {
221
+ const output = error.stdout || error.stderr || error.message || '';
222
+ errors.push(`Test execution failed: ${output}`);
223
+ return { success: false, ran: true, errors, warnings };
224
+ }
225
+ }
226
+ catch (error) {
227
+ warnings.push(`Could not verify tests: ${error instanceof Error ? error.message : String(error)}`);
228
+ return { success: true, ran: false, errors, warnings }; // Don't fail if we can't run tests
229
+ }
230
+ }
231
+ /**
232
+ * Find test files for a given file
233
+ */
234
+ function findTestFiles(filepath) {
235
+ const dir = dirname(filepath);
236
+ const basename = filepath.split('/').pop()?.replace(/\.[^.]+$/, '') || '';
237
+ const testPatterns = [
238
+ `${basename}.test.ts`,
239
+ `${basename}.test.js`,
240
+ `${basename}.spec.ts`,
241
+ `${basename}.spec.js`,
242
+ `__tests__/${basename}.ts`,
243
+ `__tests__/${basename}.js`,
244
+ ];
245
+ const testFiles = [];
246
+ for (const pattern of testPatterns) {
247
+ const testPath = join(dir, pattern);
248
+ if (existsSync(testPath)) {
249
+ testFiles.push(testPath);
250
+ }
251
+ }
252
+ return testFiles;
253
+ }
254
+ /**
255
+ * Verify requirements are met
256
+ */
257
+ async function verifyRequirements(context) {
258
+ const errors = [];
259
+ const warnings = [];
260
+ if (!context.requirements || context.requirements.length === 0) {
261
+ return { success: true, errors, warnings };
262
+ }
263
+ const content = context.modifiedContent.toLowerCase();
264
+ for (const requirement of context.requirements) {
265
+ const reqLower = requirement.toLowerCase();
266
+ // Simple keyword matching (can be enhanced with AI)
267
+ const keywords = reqLower.split(/\s+/).filter(w => w.length > 3);
268
+ const matches = keywords.filter(kw => content.includes(kw));
269
+ if (matches.length < keywords.length * 0.5) {
270
+ // Less than 50% of keywords found
271
+ warnings.push(`Requirement may not be met: ${requirement}`);
272
+ }
273
+ }
274
+ return {
275
+ success: warnings.length === 0,
276
+ errors,
277
+ warnings,
278
+ };
279
+ }
280
+ /**
281
+ * Rollback changes
282
+ */
283
+ export function rollbackChanges(context) {
284
+ try {
285
+ writeFileSync(context.filepath, context.originalContent, 'utf-8');
286
+ }
287
+ catch (error) {
288
+ throw new Error(`Failed to rollback: ${error instanceof Error ? error.message : String(error)}`);
289
+ }
290
+ }
291
+ /**
292
+ * Apply changes with verification and rollback on failure
293
+ */
294
+ export async function applyWithVerification(filepath, diff, instruction, requirements) {
295
+ // Read original content
296
+ const originalContent = readFileSync(filepath, 'utf-8');
297
+ // Apply diff
298
+ const modifiedContent = applyUnifiedDiff(originalContent, diff);
299
+ // Create context
300
+ const context = {
301
+ filepath,
302
+ originalContent,
303
+ modifiedContent,
304
+ diff,
305
+ instruction,
306
+ requirements,
307
+ };
308
+ // Write modified content temporarily
309
+ writeFileSync(filepath, modifiedContent, 'utf-8');
310
+ try {
311
+ // Verify
312
+ const result = await verifyTask(context);
313
+ if (!result.success || result.rollbackRequired) {
314
+ // Rollback
315
+ rollbackChanges(context);
316
+ return {
317
+ success: false,
318
+ verified: false,
319
+ result,
320
+ rolledBack: true,
321
+ };
322
+ }
323
+ return {
324
+ success: true,
325
+ verified: true,
326
+ result,
327
+ rolledBack: false,
328
+ };
329
+ }
330
+ catch (error) {
331
+ // Rollback on error
332
+ rollbackChanges(context);
333
+ throw error;
334
+ }
335
+ }
336
+ //# sourceMappingURL=task-verification.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-verification.js","sourceRoot":"","sources":["../src/task-verification.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=test_cohere.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test_cohere.d.ts","sourceRoot":"","sources":["../src/test_cohere.ts"],"names":[],"mappings":""}
@@ -0,0 +1,68 @@
1
+ import { config } from 'dotenv';
2
+ import { join, dirname } from 'path';
3
+ import { fileURLToPath } from 'url';
4
+ import { CohereClient } from 'cohere-ai';
5
+ // Load environment variables
6
+ try {
7
+ const __filename = fileURLToPath(import.meta.url);
8
+ const __dirname = dirname(__filename);
9
+ const agentDir = join(__dirname, '..');
10
+ config({ path: join(agentDir, '.env') });
11
+ }
12
+ catch {
13
+ // Fallback to current directory
14
+ }
15
+ config(); // Also try current directory
16
+ async function testCohere() {
17
+ const apiKey = process.env.COHERE_API_KEY;
18
+ if (!apiKey) {
19
+ console.error('❌ COHERE_API_KEY not found in environment');
20
+ console.error('Please create .env file with: COHERE_API_KEY=your_key');
21
+ process.exit(1);
22
+ }
23
+ console.log('✓ COHERE_API_KEY found');
24
+ console.log('Testing Cohere connectivity...\n');
25
+ const cohere = new CohereClient({
26
+ token: apiKey,
27
+ });
28
+ try {
29
+ console.log('Calling cohere.embed(["hello world"])...');
30
+ const response = await cohere.embed({
31
+ texts: ['hello world'],
32
+ model: 'embed-english-v3.0',
33
+ inputType: 'search_document',
34
+ });
35
+ const embeddings = Array.isArray(response.embeddings)
36
+ ? response.embeddings
37
+ : response.embeddings.embeddings || [];
38
+ const embedding = embeddings[0];
39
+ if (!embedding) {
40
+ console.error('❌ No embedding returned');
41
+ process.exit(1);
42
+ }
43
+ console.log('✓ Embedding successful!');
44
+ console.log(` Shape: [${embedding.length}]`);
45
+ console.log(` First 5 values: [${embedding.slice(0, 5).join(', ')}...]`);
46
+ console.log(` Min: ${Math.min(...embedding).toFixed(4)}`);
47
+ console.log(` Max: ${Math.max(...embedding).toFixed(4)}`);
48
+ console.log(` Mean: ${(embedding.reduce((a, b) => a + b, 0) / embedding.length).toFixed(4)}`);
49
+ }
50
+ catch (error) {
51
+ console.error('❌ Cohere API error:');
52
+ if (error instanceof Error) {
53
+ console.error(` ${error.message}`);
54
+ if ('status' in error) {
55
+ console.error(` Status: ${error.status}`);
56
+ }
57
+ if ('body' in error) {
58
+ console.error(` Body: ${JSON.stringify(error.body, null, 2)}`);
59
+ }
60
+ }
61
+ else {
62
+ console.error(` ${String(error)}`);
63
+ }
64
+ process.exit(1);
65
+ }
66
+ }
67
+ testCohere();
68
+ //# sourceMappingURL=test_cohere.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test_cohere.js","sourceRoot":"","sources":["../src/test_cohere.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=test_env.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test_env.d.ts","sourceRoot":"","sources":["../src/test_env.ts"],"names":[],"mappings":""}
@@ -0,0 +1,24 @@
1
+ import { config } from 'dotenv';
2
+ import { join, dirname } from 'path';
3
+ import { fileURLToPath } from 'url';
4
+ // Load environment variables
5
+ try {
6
+ const __filename = fileURLToPath(import.meta.url);
7
+ const __dirname = dirname(__filename);
8
+ const agentDir = join(__dirname, '..');
9
+ config({ path: join(agentDir, '.env') });
10
+ }
11
+ catch {
12
+ // Fallback to current directory
13
+ }
14
+ config(); // Also try current directory
15
+ console.log('Environment check:');
16
+ console.log('COHERE_API_KEY exists:', !!process.env.COHERE_API_KEY);
17
+ console.log('COHERE_API_KEY length:', process.env.COHERE_API_KEY?.length || 0);
18
+ if (process.env.COHERE_API_KEY) {
19
+ console.log('COHERE_API_KEY prefix:', process.env.COHERE_API_KEY.substring(0, 10) + '...');
20
+ }
21
+ else {
22
+ console.log('⚠️ COHERE_API_KEY not found! Please create .env file with COHERE_API_KEY=your_key');
23
+ }
24
+ //# sourceMappingURL=test_env.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test_env.js","sourceRoot":"","sources":["../src/test_env.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAEpC,6BAA6B;AAC7B,IAAI,CAAC;IACH,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,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;AAC3C,CAAC;AAAC,MAAM,CAAC;IACP,gCAAgC;AAClC,CAAC;AACD,MAAM,EAAE,CAAC,CAAC,6BAA6B;AAEvC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;AAClC,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;AACpE,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,MAAM,IAAI,CAAC,CAAC,CAAC;AAC/E,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC;IAC/B,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC;AAC7F,CAAC;KAAM,CAAC;IACN,OAAO,CAAC,GAAG,CAAC,oFAAoF,CAAC,CAAC;AACpG,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=test_retrieval.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test_retrieval.d.ts","sourceRoot":"","sources":["../src/test_retrieval.ts"],"names":[],"mappings":""}
@@ -0,0 +1,84 @@
1
+ import initSqlJs from 'sql.js';
2
+ import { readFileSync, existsSync } from 'fs';
3
+ import { join } from 'path';
4
+ import { searchSimilar } from './search.js';
5
+ const DB_PATH = join(process.cwd(), 'agent', 'data', 'embeddings.sqlite');
6
+ async function testRetrieval() {
7
+ console.log('Testing retrieval system...\n');
8
+ // Test 1: Verify database structure
9
+ if (!existsSync(DB_PATH)) {
10
+ console.error('❌ Database file not found');
11
+ process.exit(1);
12
+ }
13
+ const SQL = await initSqlJs();
14
+ const buffer = readFileSync(DB_PATH);
15
+ const db = new SQL.Database(buffer);
16
+ // Count chunks
17
+ const countStmt = db.prepare('SELECT COUNT(*) as count FROM embeddings');
18
+ countStmt.step();
19
+ const totalChunks = countStmt.getAsObject().count;
20
+ countStmt.free();
21
+ // Count files
22
+ const filesStmt = db.prepare('SELECT COUNT(DISTINCT filepath) as count FROM embeddings');
23
+ filesStmt.step();
24
+ const totalFiles = filesStmt.getAsObject().count;
25
+ filesStmt.free();
26
+ // Check embedding vector consistency
27
+ const sampleStmt = db.prepare('SELECT embedding FROM embeddings LIMIT 10');
28
+ let validEmbeddings = 0;
29
+ let invalidEmbeddings = 0;
30
+ const embeddingLengths = [];
31
+ while (sampleStmt.step()) {
32
+ const row = sampleStmt.getAsObject();
33
+ try {
34
+ const embedding = JSON.parse(row.embedding);
35
+ if (Array.isArray(embedding) && embedding.length > 0) {
36
+ validEmbeddings++;
37
+ embeddingLengths.push(embedding.length);
38
+ }
39
+ else {
40
+ invalidEmbeddings++;
41
+ }
42
+ }
43
+ catch (e) {
44
+ invalidEmbeddings++;
45
+ }
46
+ }
47
+ sampleStmt.free();
48
+ db.close();
49
+ console.log('Database Verification:');
50
+ console.log(` ✓ Total chunks: ${totalChunks}`);
51
+ console.log(` ✓ Total files: ${totalFiles}`);
52
+ console.log(` ✓ Valid embeddings: ${validEmbeddings}/10 samples`);
53
+ console.log(` ✓ Invalid embeddings: ${invalidEmbeddings}`);
54
+ if (embeddingLengths.length > 0) {
55
+ const uniqueLengths = [...new Set(embeddingLengths)];
56
+ console.log(` ✓ Embedding vector lengths: ${uniqueLengths.join(', ')}`);
57
+ }
58
+ // Test 2: Test retrieval
59
+ console.log('\nTesting retrieval...');
60
+ try {
61
+ const results = await searchSimilar('test function', 5);
62
+ console.log(` ✓ Retrieved ${results.length} chunks`);
63
+ if (results.length === 0) {
64
+ console.error(' ❌ No chunks retrieved!');
65
+ process.exit(1);
66
+ }
67
+ console.log(' ✓ Chunks retrieved:');
68
+ results.forEach((r, i) => {
69
+ console.log(` ${i + 1}. ${r.filepath} (score: ${r.score.toFixed(4)})`);
70
+ });
71
+ // Verify all chunks have content
72
+ const hasContent = results.every(r => r.content && r.content.length > 0);
73
+ const hasFilepath = results.every(r => r.filepath && r.filepath.length > 0);
74
+ console.log(` ✓ All chunks have content: ${hasContent}`);
75
+ console.log(` ✓ All chunks have filepath: ${hasFilepath}`);
76
+ }
77
+ catch (error) {
78
+ console.error(' ❌ Retrieval failed:', error);
79
+ process.exit(1);
80
+ }
81
+ console.log('\n✅ All retrieval tests passed!');
82
+ }
83
+ testRetrieval();
84
+ //# sourceMappingURL=test_retrieval.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test_retrieval.js","sourceRoot":"","sources":["../src/test_retrieval.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Test Generation System
3
+ * Generate comprehensive tests for code
4
+ */
5
+ /**
6
+ * Generate tests for a file
7
+ */
8
+ export declare function generateTests(filepath: string, options?: {
9
+ framework?: string;
10
+ coverage?: 'unit' | 'integration' | 'both';
11
+ }): Promise<string>;
12
+ /**
13
+ * Generate test file path
14
+ */
15
+ export declare function getTestFilePath(filepath: string, framework?: string): string;
16
+ /**
17
+ * Save generated tests to file
18
+ */
19
+ export declare function saveTests(filepath: string, testContent: string): void;
20
+ /**
21
+ * Improve existing tests
22
+ */
23
+ export declare function improveTests(testFilepath: string): Promise<string>;
24
+ //# sourceMappingURL=testgen.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"testgen.d.ts","sourceRoot":"","sources":["../src/testgen.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH;;GAEG;AACH,wBAAsB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAE;IAC7D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,GAAG,aAAa,GAAG,MAAM,CAAC;CACvC,GAAG,OAAO,CAAC,MAAM,CAAC,CAkDvB;AAmCD;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAc5E;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAUrE;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAwDxE"}