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,248 @@
1
+ /**
2
+ * Enterprise Monitoring & Health Check System
3
+ * Ensures 24/7 operation visibility
4
+ */
5
+ import { existsSync, readFileSync } from 'fs';
6
+ import { join, dirname } from 'path';
7
+ import { fileURLToPath } from 'url';
8
+ import { cohereCircuitBreaker } from './error-handler.js';
9
+ class MetricsCollector {
10
+ operations = {
11
+ total: 0,
12
+ successful: 0,
13
+ failed: 0,
14
+ retries: 0,
15
+ };
16
+ performance = {
17
+ responseTimes: [],
18
+ retryTimes: [],
19
+ apiCalls: 0,
20
+ cacheHits: 0,
21
+ };
22
+ errors = {
23
+ byType: {},
24
+ recent: [],
25
+ };
26
+ recordOperation(success, responseTime, retries) {
27
+ this.operations.total++;
28
+ if (success) {
29
+ this.operations.successful++;
30
+ }
31
+ else {
32
+ this.operations.failed++;
33
+ }
34
+ if (retries) {
35
+ this.operations.retries += retries;
36
+ }
37
+ if (responseTime) {
38
+ this.performance.responseTimes.push(responseTime);
39
+ // Keep only last 1000 measurements
40
+ if (this.performance.responseTimes.length > 1000) {
41
+ this.performance.responseTimes.shift();
42
+ }
43
+ }
44
+ }
45
+ recordApiCall() {
46
+ this.performance.apiCalls++;
47
+ }
48
+ recordCacheHit() {
49
+ this.performance.cacheHits++;
50
+ }
51
+ recordError(type, message) {
52
+ this.errors.byType[type] = (this.errors.byType[type] || 0) + 1;
53
+ this.errors.recent.push({
54
+ timestamp: new Date().toISOString(),
55
+ type,
56
+ message,
57
+ });
58
+ // Keep only last 100 errors
59
+ if (this.errors.recent.length > 100) {
60
+ this.errors.recent.shift();
61
+ }
62
+ }
63
+ getMetrics() {
64
+ const avgResponseTime = this.performance.responseTimes.length > 0
65
+ ? this.performance.responseTimes.reduce((a, b) => a + b, 0) / this.performance.responseTimes.length
66
+ : 0;
67
+ const avgRetryTime = this.performance.retryTimes.length > 0
68
+ ? this.performance.retryTimes.reduce((a, b) => a + b, 0) / this.performance.retryTimes.length
69
+ : 0;
70
+ return {
71
+ operations: { ...this.operations },
72
+ performance: {
73
+ avgResponseTime,
74
+ avgRetryTime,
75
+ apiCalls: this.performance.apiCalls,
76
+ cacheHits: this.performance.cacheHits,
77
+ },
78
+ errors: {
79
+ byType: { ...this.errors.byType },
80
+ recent: [...this.errors.recent],
81
+ },
82
+ };
83
+ }
84
+ reset() {
85
+ this.operations = { total: 0, successful: 0, failed: 0, retries: 0 };
86
+ this.performance = { responseTimes: [], retryTimes: [], apiCalls: 0, cacheHits: 0 };
87
+ this.errors = { byType: {}, recent: [] };
88
+ }
89
+ }
90
+ export const metricsCollector = new MetricsCollector();
91
+ /**
92
+ * Check database health
93
+ */
94
+ function checkDatabase() {
95
+ try {
96
+ const __filename = fileURLToPath(import.meta.url);
97
+ const __dirname = dirname(__filename);
98
+ const agentDir = join(__dirname, '..');
99
+ const dbPath = join(agentDir, 'data', 'embeddings.sqlite');
100
+ if (!existsSync(dbPath)) {
101
+ return { status: 'error', message: 'Database file not found' };
102
+ }
103
+ // Try to read database
104
+ const buffer = readFileSync(dbPath);
105
+ if (buffer.length === 0) {
106
+ return { status: 'error', message: 'Database file is empty' };
107
+ }
108
+ return { status: 'ok', message: 'Database accessible' };
109
+ }
110
+ catch (error) {
111
+ return {
112
+ status: 'error',
113
+ message: `Database check failed: ${error instanceof Error ? error.message : String(error)}`,
114
+ };
115
+ }
116
+ }
117
+ /**
118
+ * Check API health
119
+ */
120
+ function checkApi() {
121
+ const circuitState = cohereCircuitBreaker.getState();
122
+ if (circuitState === 'OPEN') {
123
+ return { status: 'circuit_open', message: 'API circuit breaker is OPEN - too many failures' };
124
+ }
125
+ if (circuitState === 'HALF_OPEN') {
126
+ return { status: 'error', message: 'API circuit breaker is HALF_OPEN - recovering' };
127
+ }
128
+ // Check if API key is configured
129
+ if (!process.env.COHERE_API_KEY) {
130
+ return { status: 'error', message: 'COHERE_API_KEY not configured' };
131
+ }
132
+ return { status: 'ok', message: 'API accessible' };
133
+ }
134
+ /**
135
+ * Check filesystem health
136
+ */
137
+ function checkFilesystem() {
138
+ try {
139
+ const __filename = fileURLToPath(import.meta.url);
140
+ const __dirname = dirname(__filename);
141
+ const agentDir = join(__dirname, '..');
142
+ const dataDir = join(agentDir, 'data');
143
+ // Check if data directory exists or can be created
144
+ if (!existsSync(dataDir)) {
145
+ // Try to create it
146
+ try {
147
+ const { mkdirSync } = require('fs');
148
+ mkdirSync(dataDir, { recursive: true });
149
+ }
150
+ catch {
151
+ return { status: 'error', message: 'Cannot create data directory' };
152
+ }
153
+ }
154
+ return { status: 'ok', message: 'Filesystem accessible' };
155
+ }
156
+ catch (error) {
157
+ return {
158
+ status: 'error',
159
+ message: `Filesystem check failed: ${error instanceof Error ? error.message : String(error)}`,
160
+ };
161
+ }
162
+ }
163
+ /**
164
+ * Check memory usage
165
+ */
166
+ function checkMemory() {
167
+ try {
168
+ const usage = process.memoryUsage();
169
+ const heapUsedMB = usage.heapUsed / 1024 / 1024;
170
+ const heapTotalMB = usage.heapTotal / 1024 / 1024;
171
+ const usagePercent = (heapUsedMB / heapTotalMB) * 100;
172
+ if (usagePercent > 90) {
173
+ return {
174
+ status: 'warning',
175
+ message: `High memory usage: ${usagePercent.toFixed(1)}%`,
176
+ usage: usagePercent,
177
+ };
178
+ }
179
+ return {
180
+ status: 'ok',
181
+ message: `Memory usage: ${usagePercent.toFixed(1)}%`,
182
+ usage: usagePercent,
183
+ };
184
+ }
185
+ catch (error) {
186
+ return {
187
+ status: 'ok',
188
+ message: 'Memory check unavailable',
189
+ };
190
+ }
191
+ }
192
+ /**
193
+ * Perform health check
194
+ */
195
+ export function performHealthCheck() {
196
+ const dbCheck = checkDatabase();
197
+ const apiCheck = checkApi();
198
+ const fsCheck = checkFilesystem();
199
+ const memCheck = checkMemory();
200
+ const checks = {
201
+ database: dbCheck,
202
+ api: apiCheck,
203
+ filesystem: fsCheck,
204
+ memory: memCheck,
205
+ };
206
+ // Determine overall status
207
+ let status = 'healthy';
208
+ if (dbCheck.status === 'error' || apiCheck.status === 'circuit_open' || fsCheck.status === 'error') {
209
+ status = 'unhealthy';
210
+ }
211
+ else if (apiCheck.status === 'error' || memCheck.status === 'warning') {
212
+ status = 'degraded';
213
+ }
214
+ return {
215
+ status,
216
+ timestamp: new Date().toISOString(),
217
+ checks,
218
+ };
219
+ }
220
+ /**
221
+ * Get current metrics
222
+ */
223
+ export function getMetrics() {
224
+ return metricsCollector.getMetrics();
225
+ }
226
+ /**
227
+ * Format health status for display
228
+ */
229
+ export function formatHealthStatus(health) {
230
+ const statusIcon = {
231
+ healthy: '✓',
232
+ degraded: '⚠',
233
+ unhealthy: '✗',
234
+ }[health.status];
235
+ const statusColor = {
236
+ healthy: 'green',
237
+ degraded: 'yellow',
238
+ unhealthy: 'red',
239
+ }[health.status];
240
+ let output = `${statusIcon} System Status: ${health.status.toUpperCase()}\n\n`;
241
+ output += 'Component Checks:\n';
242
+ for (const [component, check] of Object.entries(health.checks)) {
243
+ const icon = check.status === 'ok' ? '✓' : check.status === 'warning' ? '⚠' : '✗';
244
+ output += ` ${icon} ${component}: ${check.message}\n`;
245
+ }
246
+ return output;
247
+ }
248
+ //# sourceMappingURL=monitoring.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"monitoring.js","sourceRoot":"","sources":["../src/monitoring.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Parallel Processing & Caching System
3
+ * 10-100x faster through parallelization and smart caching
4
+ */
5
+ /**
6
+ * Parallel indexing with caching
7
+ */
8
+ export declare function indexParallel(files: string[], options?: {
9
+ maxConcurrency?: number;
10
+ useCache?: boolean;
11
+ cacheDir?: string;
12
+ }): Promise<{
13
+ indexed: number;
14
+ cached: number;
15
+ totalChunks: number;
16
+ timeMs: number;
17
+ }>;
18
+ /**
19
+ * Incremental update: only process changed files
20
+ */
21
+ export declare function updateIndexIncremental(baseDir: string, options?: {
22
+ cacheDir?: string;
23
+ watchMode?: boolean;
24
+ }): Promise<{
25
+ updated: number;
26
+ unchanged: number;
27
+ totalChunks: number;
28
+ }>;
29
+ /**
30
+ * Clear cache
31
+ */
32
+ export declare function clearCache(cacheDir?: string): void;
33
+ /**
34
+ * Get cache statistics
35
+ */
36
+ export declare function getCacheStats(cacheDir?: string): {
37
+ totalFiles: number;
38
+ totalChunks: number;
39
+ totalSize: number;
40
+ oldestEntry: number;
41
+ newestEntry: number;
42
+ };
43
+ //# sourceMappingURL=parallel-processor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parallel-processor.d.ts","sourceRoot":"","sources":["../src/parallel-processor.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA4BH;;GAEG;AACH,wBAAsB,aAAa,CACjC,KAAK,EAAE,MAAM,EAAE,EACf,OAAO,GAAE;IACP,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACd,GACL,OAAO,CAAC;IACT,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,CA4CD;AA+FD;;GAEG;AACH,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,MAAM,EACf,OAAO,GAAE;IACP,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;CAChB,GACL,OAAO,CAAC;IACT,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC,CAoCD;AAmCD;;GAEG;AACH,wBAAgB,UAAU,CAAC,QAAQ,GAAE,MAA0B,GAAG,IAAI,CAmBrE;AAsDD;;GAEG;AACH,wBAAgB,aAAa,CAAC,QAAQ,GAAE,MAA0B,GAAG;IACnE,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;CACrB,CA4CA"}
@@ -0,0 +1,308 @@
1
+ /**
2
+ * Parallel Processing & Caching System
3
+ * 10-100x faster through parallelization and smart caching
4
+ */
5
+ import { readFileSync, writeFileSync, existsSync, statSync, readdirSync, mkdirSync, rmSync, unlinkSync } from 'fs';
6
+ import { join } from 'path';
7
+ import { CohereClient } from 'cohere-ai';
8
+ import { config } from 'dotenv';
9
+ import { encoding_for_model } from 'tiktoken';
10
+ // Load .env
11
+ config();
12
+ const cohere = new CohereClient({
13
+ token: process.env.COHERE_API_KEY || '',
14
+ });
15
+ const enc = encoding_for_model('gpt-3.5-turbo');
16
+ const CHUNK_SIZE = 300;
17
+ const OVERLAP = 50;
18
+ /**
19
+ * Parallel indexing with caching
20
+ */
21
+ export async function indexParallel(files, options = {}) {
22
+ const { maxConcurrency = 5, useCache = true, cacheDir = '.codehere-cache' } = options;
23
+ const startTime = Date.now();
24
+ let indexed = 0;
25
+ let cached = 0;
26
+ let totalChunks = 0;
27
+ // Create cache directory
28
+ if (useCache && !existsSync(cacheDir)) {
29
+ mkdirSync(cacheDir, { recursive: true });
30
+ }
31
+ // Process files in parallel batches
32
+ const batches = [];
33
+ for (let i = 0; i < files.length; i += maxConcurrency) {
34
+ batches.push(files.slice(i, i + maxConcurrency));
35
+ }
36
+ for (const batch of batches) {
37
+ const results = await Promise.allSettled(batch.map(file => processFileWithCache(file, useCache, cacheDir)));
38
+ for (const result of results) {
39
+ if (result.status === 'fulfilled') {
40
+ if (result.value.cached) {
41
+ cached++;
42
+ }
43
+ else {
44
+ indexed++;
45
+ }
46
+ totalChunks += result.value.chunks;
47
+ }
48
+ }
49
+ }
50
+ const timeMs = Date.now() - startTime;
51
+ return {
52
+ indexed,
53
+ cached,
54
+ totalChunks,
55
+ timeMs,
56
+ };
57
+ }
58
+ /**
59
+ * Process file with caching
60
+ */
61
+ async function processFileWithCache(filepath, useCache, cacheDir) {
62
+ if (!useCache) {
63
+ // Process without cache
64
+ const content = readFileSync(filepath, 'utf-8');
65
+ const chunks = chunkTextLocal(content, CHUNK_SIZE, OVERLAP);
66
+ // Embed chunks (this is the slow part)
67
+ for (const chunk of chunks) {
68
+ await embedTextLocal(chunk);
69
+ }
70
+ return { cached: false, chunks: chunks.length };
71
+ }
72
+ // Check cache
73
+ const cacheKey = getCacheKey(filepath);
74
+ const cachePath = join(cacheDir, cacheKey);
75
+ if (existsSync(cachePath)) {
76
+ const cacheEntry = JSON.parse(readFileSync(cachePath, 'utf-8'));
77
+ // Check if file hasn't changed
78
+ const fileHash = getFileHash(filepath);
79
+ if (cacheEntry.hash === fileHash) {
80
+ // Cache hit - return cached chunks
81
+ return { cached: true, chunks: cacheEntry.chunks.length };
82
+ }
83
+ }
84
+ // Cache miss or stale - process file
85
+ const content = readFileSync(filepath, 'utf-8');
86
+ const chunks = chunkTextLocal(content, CHUNK_SIZE, OVERLAP); // Defined below
87
+ const fileHash = getFileHash(filepath);
88
+ // Embed chunks (with rate limiting)
89
+ const embeddings = [];
90
+ for (let i = 0; i < chunks.length; i++) {
91
+ const chunk = chunks[i];
92
+ // Rate limit: delay between chunks
93
+ if (i > 0) {
94
+ await new Promise(resolve => setTimeout(resolve, 2000)); // 2 second delay
95
+ }
96
+ const embedding = await embedTextLocal(chunk);
97
+ embeddings[i] = embedding;
98
+ }
99
+ // Save to cache
100
+ const cacheEntry = {
101
+ filepath,
102
+ hash: fileHash,
103
+ chunks: chunks.map((content, i) => ({
104
+ content,
105
+ embedding: embeddings[i],
106
+ })),
107
+ timestamp: Date.now(),
108
+ };
109
+ writeFileSync(cachePath, JSON.stringify(cacheEntry, null, 2), 'utf-8');
110
+ return { cached: false, chunks: chunks.length };
111
+ }
112
+ /**
113
+ * Get cache key from filepath
114
+ */
115
+ function getCacheKey(filepath) {
116
+ // Create a safe filename from filepath
117
+ return filepath.replace(/[^a-zA-Z0-9]/g, '_') + '.json';
118
+ }
119
+ /**
120
+ * Get file hash (simple: use mtime + size)
121
+ */
122
+ function getFileHash(filepath) {
123
+ try {
124
+ const stat = statSync(filepath);
125
+ return `${stat.mtimeMs}-${stat.size}`;
126
+ }
127
+ catch {
128
+ return 'unknown';
129
+ }
130
+ }
131
+ /**
132
+ * Incremental update: only process changed files
133
+ */
134
+ export async function updateIndexIncremental(baseDir, options = {}) {
135
+ const { cacheDir = '.codehere-cache', watchMode = false } = options;
136
+ // Find all code files
137
+ const files = findCodeFiles(baseDir);
138
+ let updated = 0;
139
+ let unchanged = 0;
140
+ let totalChunks = 0;
141
+ for (const filepath of files) {
142
+ const cacheKey = getCacheKey(filepath);
143
+ const cachePath = join(cacheDir, cacheKey);
144
+ if (existsSync(cachePath)) {
145
+ const cacheEntry = JSON.parse(readFileSync(cachePath, 'utf-8'));
146
+ const fileHash = getFileHash(filepath);
147
+ if (cacheEntry.hash === fileHash) {
148
+ // File unchanged
149
+ unchanged++;
150
+ totalChunks += cacheEntry.chunks.length;
151
+ continue;
152
+ }
153
+ }
154
+ // File changed or new - process it
155
+ const result = await processFileWithCache(filepath, true, cacheDir);
156
+ updated++;
157
+ totalChunks += result.chunks;
158
+ }
159
+ return {
160
+ updated,
161
+ unchanged,
162
+ totalChunks,
163
+ };
164
+ }
165
+ /**
166
+ * Find code files recursively
167
+ */
168
+ function findCodeFiles(dir) {
169
+ const files = [];
170
+ try {
171
+ const entries = readdirSync(dir, { withFileTypes: true });
172
+ for (const entry of entries) {
173
+ const fullPath = join(dir, entry.name);
174
+ // Skip node_modules, .git, etc.
175
+ if (entry.name.startsWith('.') || entry.name === 'node_modules' || entry.name === 'dist' || entry.name === 'build') {
176
+ continue;
177
+ }
178
+ if (entry.isDirectory()) {
179
+ files.push(...findCodeFiles(fullPath));
180
+ }
181
+ else if (entry.isFile()) {
182
+ const ext = entry.name.split('.').pop()?.toLowerCase();
183
+ if (ext && ['ts', 'tsx', 'js', 'jsx'].includes(ext)) {
184
+ files.push(fullPath);
185
+ }
186
+ }
187
+ }
188
+ }
189
+ catch {
190
+ // Skip directories we can't read
191
+ }
192
+ return files;
193
+ }
194
+ /**
195
+ * Clear cache
196
+ */
197
+ export function clearCache(cacheDir = '.codehere-cache') {
198
+ if (!existsSync(cacheDir)) {
199
+ return;
200
+ }
201
+ try {
202
+ rmSync(cacheDir, { recursive: true, force: true });
203
+ }
204
+ catch {
205
+ // Fallback: delete files individually
206
+ const files = readdirSync(cacheDir);
207
+ for (const file of files) {
208
+ const filePath = join(cacheDir, file);
209
+ try {
210
+ unlinkSync(filePath);
211
+ }
212
+ catch {
213
+ // Skip files we can't delete
214
+ }
215
+ }
216
+ }
217
+ }
218
+ /**
219
+ * Chunk text locally (duplicate from embed.ts for independence)
220
+ */
221
+ function chunkTextLocal(text, targetTokens, overlap) {
222
+ const tokens = enc.encode(text);
223
+ const chunks = [];
224
+ if (tokens.length <= targetTokens) {
225
+ return [text];
226
+ }
227
+ let start = 0;
228
+ while (start < tokens.length) {
229
+ const end = Math.min(start + targetTokens, tokens.length);
230
+ const chunkTokens = tokens.slice(start, end);
231
+ const decoded = enc.decode(chunkTokens);
232
+ const chunkText = typeof decoded === 'string' ? decoded : new TextDecoder().decode(decoded);
233
+ chunks.push(chunkText);
234
+ if (end >= tokens.length)
235
+ break;
236
+ start = end - overlap;
237
+ }
238
+ return chunks;
239
+ }
240
+ /**
241
+ * Embed text locally (duplicate from embed.ts for independence)
242
+ */
243
+ async function embedTextLocal(text, retries = 3) {
244
+ for (let attempt = 0; attempt < retries; attempt++) {
245
+ try {
246
+ const response = await cohere.embed({
247
+ texts: [text],
248
+ model: 'embed-english-v3.0',
249
+ inputType: 'search_document',
250
+ });
251
+ const embeddings = Array.isArray(response.embeddings)
252
+ ? response.embeddings
253
+ : response.embeddings.embeddings || [];
254
+ return embeddings[0] || [];
255
+ }
256
+ catch (error) {
257
+ if (attempt === retries - 1)
258
+ throw error;
259
+ await new Promise(resolve => setTimeout(resolve, Math.pow(2, attempt) * 1000));
260
+ }
261
+ }
262
+ throw new Error('Failed to embed text after retries');
263
+ }
264
+ /**
265
+ * Get cache statistics
266
+ */
267
+ export function getCacheStats(cacheDir = '.codehere-cache') {
268
+ if (!existsSync(cacheDir)) {
269
+ return {
270
+ totalFiles: 0,
271
+ totalChunks: 0,
272
+ totalSize: 0,
273
+ oldestEntry: 0,
274
+ newestEntry: 0,
275
+ };
276
+ }
277
+ const files = readdirSync(cacheDir).filter(f => f.endsWith('.json'));
278
+ let totalChunks = 0;
279
+ let totalSize = 0;
280
+ let oldestEntry = Date.now();
281
+ let newestEntry = 0;
282
+ for (const file of files) {
283
+ try {
284
+ const cachePath = join(cacheDir, file);
285
+ const stat = statSync(cachePath);
286
+ totalSize += stat.size;
287
+ const cacheEntry = JSON.parse(readFileSync(cachePath, 'utf-8'));
288
+ totalChunks += cacheEntry.chunks.length;
289
+ if (cacheEntry.timestamp < oldestEntry) {
290
+ oldestEntry = cacheEntry.timestamp;
291
+ }
292
+ if (cacheEntry.timestamp > newestEntry) {
293
+ newestEntry = cacheEntry.timestamp;
294
+ }
295
+ }
296
+ catch {
297
+ // Skip invalid cache entries
298
+ }
299
+ }
300
+ return {
301
+ totalFiles: files.length,
302
+ totalChunks,
303
+ totalSize,
304
+ oldestEntry,
305
+ newestEntry,
306
+ };
307
+ }
308
+ //# sourceMappingURL=parallel-processor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parallel-processor.js","sourceRoot":"","sources":["../src/parallel-processor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Intelligent Planning & Execution System
3
+ * Agentic behavior for complex multi-step tasks
4
+ */
5
+ export interface Task {
6
+ id: string;
7
+ description: string;
8
+ type: 'search' | 'edit' | 'refactor' | 'review' | 'analyze';
9
+ dependencies: string[];
10
+ status: 'pending' | 'in_progress' | 'completed' | 'failed';
11
+ result?: any;
12
+ error?: string;
13
+ }
14
+ export interface Plan {
15
+ tasks: Task[];
16
+ estimatedSteps: number;
17
+ dependencies: Map<string, string[]>;
18
+ }
19
+ /**
20
+ * Decompose complex instruction into actionable tasks
21
+ */
22
+ export declare function planTask(instruction: string, context?: {
23
+ files?: string[];
24
+ pattern?: string;
25
+ query?: string;
26
+ }): Promise<Plan>;
27
+ /**
28
+ * Execute a plan step by step
29
+ */
30
+ export declare function executePlan(plan: Plan, context: {
31
+ instruction: string;
32
+ files?: string[];
33
+ pattern?: string;
34
+ }): Promise<{
35
+ success: boolean;
36
+ completedTasks: number;
37
+ results: Map<string, any>;
38
+ errors: Array<{
39
+ task: string;
40
+ error: string;
41
+ }>;
42
+ }>;
43
+ /**
44
+ * Format plan for display
45
+ */
46
+ export declare function formatPlan(plan: Plan): string;
47
+ //# sourceMappingURL=planner.d.ts.map