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.
- package/ARCHITECTURE.md +240 -0
- package/CHANGELOG.md +44 -0
- package/CONTRIBUTING.md +171 -0
- package/LICENSE +22 -0
- package/README.md +203 -0
- package/dist/ast-parser.d.ts +55 -0
- package/dist/ast-parser.d.ts.map +1 -0
- package/dist/ast-parser.js +331 -0
- package/dist/ast-parser.js.map +1 -0
- package/dist/benchmark.d.ts +39 -0
- package/dist/benchmark.d.ts.map +1 -0
- package/dist/benchmark.js +195 -0
- package/dist/benchmark.js.map +1 -0
- package/dist/cache.d.ts +45 -0
- package/dist/cache.d.ts.map +1 -0
- package/dist/cache.js +182 -0
- package/dist/cache.js.map +1 -0
- package/dist/chat.d.ts +4 -0
- package/dist/chat.d.ts.map +1 -0
- package/dist/chat.js +132 -0
- package/dist/chat.js.map +1 -0
- package/dist/code-analysis.d.ts +50 -0
- package/dist/code-analysis.d.ts.map +1 -0
- package/dist/code-analysis.js +327 -0
- package/dist/code-analysis.js.map +1 -0
- package/dist/context.d.ts +44 -0
- package/dist/context.d.ts.map +1 -0
- package/dist/context.js +187 -0
- package/dist/context.js.map +1 -0
- package/dist/docs.d.ts +21 -0
- package/dist/docs.d.ts.map +1 -0
- package/dist/docs.js +147 -0
- package/dist/docs.js.map +1 -0
- package/dist/edit.d.ts +38 -0
- package/dist/edit.d.ts.map +1 -0
- package/dist/edit.js +594 -0
- package/dist/edit.js.map +1 -0
- package/dist/embed.d.ts +18 -0
- package/dist/embed.d.ts.map +1 -0
- package/dist/embed.js +479 -0
- package/dist/embed.js.map +1 -0
- package/dist/error-handler.d.ts +76 -0
- package/dist/error-handler.d.ts.map +1 -0
- package/dist/error-handler.js +213 -0
- package/dist/error-handler.js.map +1 -0
- package/dist/formatter.d.ts +25 -0
- package/dist/formatter.d.ts.map +1 -0
- package/dist/formatter.js +148 -0
- package/dist/formatter.js.map +1 -0
- package/dist/git.d.ts +55 -0
- package/dist/git.d.ts.map +1 -0
- package/dist/git.js +198 -0
- package/dist/git.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +964 -0
- package/dist/index.js.map +1 -0
- package/dist/intelligent-retrieval.d.ts +41 -0
- package/dist/intelligent-retrieval.d.ts.map +1 -0
- package/dist/intelligent-retrieval.js +265 -0
- package/dist/intelligent-retrieval.js.map +1 -0
- package/dist/iterative-refinement.d.ts +31 -0
- package/dist/iterative-refinement.d.ts.map +1 -0
- package/dist/iterative-refinement.js +172 -0
- package/dist/iterative-refinement.js.map +1 -0
- package/dist/learning.d.ts +69 -0
- package/dist/learning.d.ts.map +1 -0
- package/dist/learning.js +233 -0
- package/dist/learning.js.map +1 -0
- package/dist/log.d.ts +4 -0
- package/dist/log.d.ts.map +1 -0
- package/dist/log.js +31 -0
- package/dist/log.js.map +1 -0
- package/dist/migrate.d.ts +33 -0
- package/dist/migrate.d.ts.map +1 -0
- package/dist/migrate.js +133 -0
- package/dist/migrate.js.map +1 -0
- package/dist/monitoring.d.ts +75 -0
- package/dist/monitoring.d.ts.map +1 -0
- package/dist/monitoring.js +248 -0
- package/dist/monitoring.js.map +1 -0
- package/dist/parallel-processor.d.ts +43 -0
- package/dist/parallel-processor.d.ts.map +1 -0
- package/dist/parallel-processor.js +308 -0
- package/dist/parallel-processor.js.map +1 -0
- package/dist/planner.d.ts +47 -0
- package/dist/planner.d.ts.map +1 -0
- package/dist/planner.js +198 -0
- package/dist/planner.js.map +1 -0
- package/dist/policy.d.ts +3 -0
- package/dist/policy.d.ts.map +1 -0
- package/dist/policy.js +26 -0
- package/dist/policy.js.map +1 -0
- package/dist/query-optimizer.d.ts +32 -0
- package/dist/query-optimizer.d.ts.map +1 -0
- package/dist/query-optimizer.js +205 -0
- package/dist/query-optimizer.js.map +1 -0
- package/dist/refactor.d.ts +27 -0
- package/dist/refactor.d.ts.map +1 -0
- package/dist/refactor.js +118 -0
- package/dist/refactor.js.map +1 -0
- package/dist/review.d.ts +31 -0
- package/dist/review.d.ts.map +1 -0
- package/dist/review.js +206 -0
- package/dist/review.js.map +1 -0
- package/dist/scaffold.d.ts +14 -0
- package/dist/scaffold.d.ts.map +1 -0
- package/dist/scaffold.js +85 -0
- package/dist/scaffold.js.map +1 -0
- package/dist/search.d.ts +19 -0
- package/dist/search.d.ts.map +1 -0
- package/dist/search.js +198 -0
- package/dist/search.js.map +1 -0
- package/dist/session.d.ts +17 -0
- package/dist/session.d.ts.map +1 -0
- package/dist/session.js +301 -0
- package/dist/session.js.map +1 -0
- package/dist/task-verification.d.ts +39 -0
- package/dist/task-verification.d.ts.map +1 -0
- package/dist/task-verification.js +336 -0
- package/dist/task-verification.js.map +1 -0
- package/dist/test_cohere.d.ts +2 -0
- package/dist/test_cohere.d.ts.map +1 -0
- package/dist/test_cohere.js +68 -0
- package/dist/test_cohere.js.map +1 -0
- package/dist/test_env.d.ts +2 -0
- package/dist/test_env.d.ts.map +1 -0
- package/dist/test_env.js +24 -0
- package/dist/test_env.js.map +1 -0
- package/dist/test_retrieval.d.ts +2 -0
- package/dist/test_retrieval.d.ts.map +1 -0
- package/dist/test_retrieval.js +84 -0
- package/dist/test_retrieval.js.map +1 -0
- package/dist/testgen.d.ts +24 -0
- package/dist/testgen.d.ts.map +1 -0
- package/dist/testgen.js +167 -0
- package/dist/testgen.js.map +1 -0
- package/dist/token-optimizer.d.ts +20 -0
- package/dist/token-optimizer.d.ts.map +1 -0
- package/dist/token-optimizer.js +277 -0
- package/dist/token-optimizer.js.map +1 -0
- package/dist/types.d.ts +36 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/ui.d.ts +54 -0
- package/dist/ui.d.ts.map +1 -0
- package/dist/ui.js +295 -0
- package/dist/ui.js.map +1 -0
- package/dist/verify_db.d.ts +2 -0
- package/dist/verify_db.d.ts.map +1 -0
- package/dist/verify_db.js +52 -0
- package/dist/verify_db.js.map +1 -0
- package/package.json +71 -0
- package/templates/next-page/app/layout.tsx +19 -0
- package/templates/next-page/app/page.tsx +10 -0
- package/templates/next-page/package.json +22 -0
- package/templates/node-api/index.js +57 -0
- package/templates/node-api/package.json +13 -0
package/dist/edit.js
ADDED
|
@@ -0,0 +1,594 @@
|
|
|
1
|
+
import { readFileSync, writeFileSync, existsSync, unlinkSync } from 'fs';
|
|
2
|
+
import { join } from 'path';
|
|
3
|
+
import { execSync } from 'child_process';
|
|
4
|
+
import { applyPatch, parsePatch } from 'diff';
|
|
5
|
+
import { generateDiff } from './chat.js';
|
|
6
|
+
import { checkPolicy } from './policy.js';
|
|
7
|
+
import { refineTask } from './iterative-refinement.js';
|
|
8
|
+
import { updateFileEmbeddings } from './embed.js';
|
|
9
|
+
export function parseDiffStats(diffText) {
|
|
10
|
+
const lines = diffText.split('\n');
|
|
11
|
+
let linesAdded = 0;
|
|
12
|
+
let linesRemoved = 0;
|
|
13
|
+
let filesChanged = 0;
|
|
14
|
+
let currentFile = '';
|
|
15
|
+
for (const line of lines) {
|
|
16
|
+
if (line.startsWith('---')) {
|
|
17
|
+
const fileMatch = line.match(/^---\s+(.+)$/);
|
|
18
|
+
if (fileMatch && fileMatch[1] !== '/dev/null') {
|
|
19
|
+
const file = fileMatch[1].replace(/^a\//, '');
|
|
20
|
+
if (file !== currentFile) {
|
|
21
|
+
filesChanged++;
|
|
22
|
+
currentFile = file;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
else if (line.startsWith('+++')) {
|
|
27
|
+
const fileMatch = line.match(/^\+\+\+\s+(.+)$/);
|
|
28
|
+
if (fileMatch && fileMatch[1] !== '/dev/null') {
|
|
29
|
+
const file = fileMatch[1].replace(/^b\//, '');
|
|
30
|
+
if (file !== currentFile) {
|
|
31
|
+
filesChanged++;
|
|
32
|
+
currentFile = file;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
else if (line.startsWith('+') && !line.startsWith('+++')) {
|
|
37
|
+
linesAdded++;
|
|
38
|
+
}
|
|
39
|
+
else if (line.startsWith('-') && !line.startsWith('---')) {
|
|
40
|
+
linesRemoved++;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
return { linesAdded, linesRemoved, filesChanged };
|
|
44
|
+
}
|
|
45
|
+
export function applyUnifiedDiff(originalContent, diffText) {
|
|
46
|
+
try {
|
|
47
|
+
// Use the diff package's applyPatch function for reliable patch application
|
|
48
|
+
const patches = parsePatch(diffText);
|
|
49
|
+
if (!patches || patches.length === 0) {
|
|
50
|
+
// Fallback to original content if no valid patches
|
|
51
|
+
console.warn('No patches parsed from diff');
|
|
52
|
+
return originalContent;
|
|
53
|
+
}
|
|
54
|
+
// Apply all patches
|
|
55
|
+
let result = originalContent;
|
|
56
|
+
for (let i = 0; i < patches.length; i++) {
|
|
57
|
+
const patch = patches[i];
|
|
58
|
+
const applied = applyPatch(result, patch);
|
|
59
|
+
if (applied === false) {
|
|
60
|
+
// Patch application failed - try manual as fallback
|
|
61
|
+
console.warn(`Patch ${i} failed to apply, using manual fallback`);
|
|
62
|
+
const manualResult = applyUnifiedDiffManual(result, diffText);
|
|
63
|
+
// If manual also fails, return original
|
|
64
|
+
if (manualResult === result) {
|
|
65
|
+
console.warn('Manual diff application also failed, returning original content');
|
|
66
|
+
return originalContent;
|
|
67
|
+
}
|
|
68
|
+
result = manualResult;
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
result = Array.isArray(applied) ? applied.join('\n') : String(applied);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
// Post-process to fix duplicate module.exports
|
|
75
|
+
return fixDuplicateExports(result);
|
|
76
|
+
}
|
|
77
|
+
catch (error) {
|
|
78
|
+
// If patch application fails, try manual application
|
|
79
|
+
console.warn(`Patch application error: ${error instanceof Error ? error.message : String(error)}`);
|
|
80
|
+
return applyUnifiedDiffManual(originalContent, diffText);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Manual diff application as fallback when applyPatch fails
|
|
85
|
+
* More lenient parsing to handle AI-generated diffs
|
|
86
|
+
*/
|
|
87
|
+
function applyUnifiedDiffManual(originalContent, diffText) {
|
|
88
|
+
// If diff is empty or invalid, return original
|
|
89
|
+
if (!diffText || !diffText.trim()) {
|
|
90
|
+
return originalContent;
|
|
91
|
+
}
|
|
92
|
+
const diffLines = diffText.split('\n');
|
|
93
|
+
const originalLines = originalContent.split('\n');
|
|
94
|
+
const result = [];
|
|
95
|
+
let originalIndex = 0;
|
|
96
|
+
let i = 0;
|
|
97
|
+
// Skip header lines (---, +++)
|
|
98
|
+
while (i < diffLines.length && (diffLines[i].startsWith('---') || diffLines[i].startsWith('+++'))) {
|
|
99
|
+
i++;
|
|
100
|
+
}
|
|
101
|
+
// Find first hunk
|
|
102
|
+
while (i < diffLines.length && !diffLines[i].startsWith('@@')) {
|
|
103
|
+
i++;
|
|
104
|
+
}
|
|
105
|
+
if (i >= diffLines.length) {
|
|
106
|
+
// No hunks found, return original
|
|
107
|
+
return originalContent;
|
|
108
|
+
}
|
|
109
|
+
while (i < diffLines.length) {
|
|
110
|
+
const line = diffLines[i];
|
|
111
|
+
if (line.startsWith('@@')) {
|
|
112
|
+
const match = line.match(/^@@\s+-(\d+)(?:,(\d+))?\s+\+(\d+)(?:,(\d+))?\s+@@/);
|
|
113
|
+
if (match) {
|
|
114
|
+
const oldStart = parseInt(match[1], 10) - 1; // Convert to 0-based
|
|
115
|
+
// Add lines before this hunk
|
|
116
|
+
while (originalIndex < oldStart && originalIndex < originalLines.length) {
|
|
117
|
+
result.push(originalLines[originalIndex]);
|
|
118
|
+
originalIndex++;
|
|
119
|
+
}
|
|
120
|
+
i++; // Move past hunk header
|
|
121
|
+
// Process hunk lines
|
|
122
|
+
while (i < diffLines.length) {
|
|
123
|
+
const hunkLine = diffLines[i];
|
|
124
|
+
// Check for next hunk
|
|
125
|
+
if (hunkLine.startsWith('@@')) {
|
|
126
|
+
break;
|
|
127
|
+
}
|
|
128
|
+
// Skip empty lines
|
|
129
|
+
if (hunkLine.trim() === '') {
|
|
130
|
+
i++;
|
|
131
|
+
continue;
|
|
132
|
+
}
|
|
133
|
+
if (hunkLine.startsWith('+') && !hunkLine.startsWith('+++')) {
|
|
134
|
+
// Added line
|
|
135
|
+
result.push(hunkLine.substring(1));
|
|
136
|
+
i++;
|
|
137
|
+
}
|
|
138
|
+
else if (hunkLine.startsWith('-') && !hunkLine.startsWith('---')) {
|
|
139
|
+
// Removed line - skip in original
|
|
140
|
+
originalIndex++;
|
|
141
|
+
i++;
|
|
142
|
+
}
|
|
143
|
+
else if (hunkLine.startsWith(' ')) {
|
|
144
|
+
// Context line - keep from original
|
|
145
|
+
if (originalIndex < originalLines.length) {
|
|
146
|
+
result.push(originalLines[originalIndex]);
|
|
147
|
+
}
|
|
148
|
+
originalIndex++;
|
|
149
|
+
i++;
|
|
150
|
+
}
|
|
151
|
+
else {
|
|
152
|
+
// Unknown line type - skip
|
|
153
|
+
i++;
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
else {
|
|
158
|
+
i++;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
else {
|
|
162
|
+
i++;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
// Add remaining original lines
|
|
166
|
+
while (originalIndex < originalLines.length) {
|
|
167
|
+
result.push(originalLines[originalIndex]);
|
|
168
|
+
originalIndex++;
|
|
169
|
+
}
|
|
170
|
+
const appliedContent = result.join('\n');
|
|
171
|
+
// Only apply post-processing if content actually changed
|
|
172
|
+
if (appliedContent === originalContent) {
|
|
173
|
+
return originalContent;
|
|
174
|
+
}
|
|
175
|
+
return fixDuplicateExports(appliedContent);
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Validate JavaScript/TypeScript syntax
|
|
179
|
+
*/
|
|
180
|
+
async function validateSyntax(content, ext, filepath) {
|
|
181
|
+
if (ext === 'js' || ext === 'jsx') {
|
|
182
|
+
// Use node --check for reliable syntax validation
|
|
183
|
+
try {
|
|
184
|
+
// Write to temp file and check
|
|
185
|
+
const tempFile = filepath + '.tmp';
|
|
186
|
+
writeFileSync(tempFile, content, 'utf-8');
|
|
187
|
+
try {
|
|
188
|
+
execSync(`node --check "${tempFile}"`, { stdio: 'pipe' });
|
|
189
|
+
// Clean up temp file
|
|
190
|
+
if (existsSync(tempFile)) {
|
|
191
|
+
unlinkSync(tempFile);
|
|
192
|
+
}
|
|
193
|
+
return { valid: true };
|
|
194
|
+
}
|
|
195
|
+
catch (error) {
|
|
196
|
+
// Clean up temp file
|
|
197
|
+
if (existsSync(tempFile)) {
|
|
198
|
+
unlinkSync(tempFile);
|
|
199
|
+
}
|
|
200
|
+
const errorMsg = error.stderr?.toString() || error.message || 'Unknown syntax error';
|
|
201
|
+
return { valid: false, error: errorMsg };
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
catch (error) {
|
|
205
|
+
// Fallback to Function constructor if node check fails
|
|
206
|
+
try {
|
|
207
|
+
new Function(content);
|
|
208
|
+
return { valid: true };
|
|
209
|
+
}
|
|
210
|
+
catch (syntaxError) {
|
|
211
|
+
return {
|
|
212
|
+
valid: false,
|
|
213
|
+
error: syntaxError instanceof Error ? syntaxError.message : String(syntaxError),
|
|
214
|
+
};
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
// For TypeScript, use tsc --noEmit
|
|
219
|
+
if (ext === 'ts' || ext === 'tsx') {
|
|
220
|
+
try {
|
|
221
|
+
// Write to temp file and check
|
|
222
|
+
const tempFile = filepath + '.tmp';
|
|
223
|
+
writeFileSync(tempFile, content, 'utf-8');
|
|
224
|
+
try {
|
|
225
|
+
// Try to find tsc in node_modules or use npx
|
|
226
|
+
execSync(`npx tsc --noEmit --skipLibCheck "${tempFile}" 2>&1`, { stdio: 'pipe' });
|
|
227
|
+
// Clean up temp file
|
|
228
|
+
if (existsSync(tempFile)) {
|
|
229
|
+
unlinkSync(tempFile);
|
|
230
|
+
}
|
|
231
|
+
return { valid: true };
|
|
232
|
+
}
|
|
233
|
+
catch (error) {
|
|
234
|
+
// Clean up temp file
|
|
235
|
+
if (existsSync(tempFile)) {
|
|
236
|
+
unlinkSync(tempFile);
|
|
237
|
+
}
|
|
238
|
+
const errorMsg = error.stderr?.toString() || error.stdout?.toString() || error.message || 'Unknown TypeScript error';
|
|
239
|
+
// If tsc is not found, that's okay - just skip validation
|
|
240
|
+
if (errorMsg.includes('command not found') || errorMsg.includes('Cannot find module')) {
|
|
241
|
+
return { valid: true }; // Skip if tsc not available
|
|
242
|
+
}
|
|
243
|
+
return { valid: false, error: errorMsg };
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
catch (error) {
|
|
247
|
+
// If tsc check fails entirely, skip validation
|
|
248
|
+
return { valid: true };
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
return { valid: true };
|
|
252
|
+
}
|
|
253
|
+
/**
|
|
254
|
+
* Fix duplicate module.exports lines and update exports when functions are renamed
|
|
255
|
+
*/
|
|
256
|
+
function fixDuplicateExports(content) {
|
|
257
|
+
const lines = content.split('\n');
|
|
258
|
+
const moduleExportsLines = [];
|
|
259
|
+
// Find all module.exports lines
|
|
260
|
+
for (let i = 0; i < lines.length; i++) {
|
|
261
|
+
const line = lines[i].trim();
|
|
262
|
+
if (line.startsWith('module.exports') && (line.includes('=') || line.includes('{'))) {
|
|
263
|
+
moduleExportsLines.push(i);
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
// If we have duplicates, use the LAST one (most recent/newest)
|
|
267
|
+
if (moduleExportsLines.length > 1) {
|
|
268
|
+
// Get the last export line (this is the new/correct one)
|
|
269
|
+
const lastExportIdx = moduleExportsLines[moduleExportsLines.length - 1];
|
|
270
|
+
const lastExportLine = lines[lastExportIdx];
|
|
271
|
+
// Remove all duplicate lines (including the last one, we'll re-add it)
|
|
272
|
+
for (let i = moduleExportsLines.length - 1; i >= 0; i--) {
|
|
273
|
+
lines.splice(moduleExportsLines[i], 1);
|
|
274
|
+
}
|
|
275
|
+
// Insert the last export line at the position where the last duplicate was
|
|
276
|
+
// (usually at end of file)
|
|
277
|
+
const insertPos = lastExportIdx - (moduleExportsLines.length - 1); // Adjust for removed lines
|
|
278
|
+
lines.splice(insertPos, 0, lastExportLine);
|
|
279
|
+
}
|
|
280
|
+
// Now fix exports: find function definitions and update exports to match
|
|
281
|
+
const contentFixed = lines.join('\n');
|
|
282
|
+
return updateExportsForRenamedFunctions(contentFixed);
|
|
283
|
+
}
|
|
284
|
+
/**
|
|
285
|
+
* Update module.exports when functions are renamed
|
|
286
|
+
* Detects function renames and updates exports accordingly
|
|
287
|
+
*/
|
|
288
|
+
function updateExportsForRenamedFunctions(content) {
|
|
289
|
+
const lines = content.split('\n');
|
|
290
|
+
// Find all function definitions
|
|
291
|
+
const functionDefs = new Map(); // name -> line number
|
|
292
|
+
for (let i = 0; i < lines.length; i++) {
|
|
293
|
+
const line = lines[i];
|
|
294
|
+
// Match: function functionName(...) {
|
|
295
|
+
const funcMatch = line.match(/function\s+(\w+)\s*\(/);
|
|
296
|
+
if (funcMatch) {
|
|
297
|
+
functionDefs.set(funcMatch[1], i);
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
// Find module.exports line
|
|
301
|
+
for (let i = 0; i < lines.length; i++) {
|
|
302
|
+
const line = lines[i];
|
|
303
|
+
if (line.trim().startsWith('module.exports') && line.includes('{')) {
|
|
304
|
+
// Extract exported names
|
|
305
|
+
const exportMatch = line.match(/module\.exports\s*=\s*\{([^}]+)\}/);
|
|
306
|
+
if (exportMatch) {
|
|
307
|
+
const exportedNames = exportMatch[1].split(',').map(n => n.trim()).filter(n => n);
|
|
308
|
+
// Check if any exported name doesn't exist as a function
|
|
309
|
+
const missingFunctions = [];
|
|
310
|
+
const validExports = [];
|
|
311
|
+
for (const exportName of exportedNames) {
|
|
312
|
+
if (functionDefs.has(exportName)) {
|
|
313
|
+
validExports.push(exportName);
|
|
314
|
+
}
|
|
315
|
+
else {
|
|
316
|
+
missingFunctions.push(exportName);
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
// If we have missing functions, try to find renamed versions
|
|
320
|
+
// This is a heuristic: if a function was renamed, the old name might still be in exports
|
|
321
|
+
if (missingFunctions.length > 0 && validExports.length > 0) {
|
|
322
|
+
// Check if there are functions that aren't exported but should be
|
|
323
|
+
const allFunctionNames = Array.from(functionDefs.keys());
|
|
324
|
+
const missingFromExports = allFunctionNames.filter(name => !exportedNames.includes(name));
|
|
325
|
+
// If we have exactly one missing function and one missing export, likely a rename
|
|
326
|
+
if (missingFunctions.length === 1 && missingFromExports.length === 1) {
|
|
327
|
+
// Replace old name with new name in exports
|
|
328
|
+
const oldName = missingFunctions[0];
|
|
329
|
+
const newName = missingFromExports[0];
|
|
330
|
+
const newExports = exportedNames.map(name => name === oldName ? newName : name);
|
|
331
|
+
lines[i] = line.replace(/\{([^}]+)\}/, `{ ${newExports.join(', ')} }`);
|
|
332
|
+
}
|
|
333
|
+
else {
|
|
334
|
+
// Just remove missing functions from exports
|
|
335
|
+
lines[i] = line.replace(/\{([^}]+)\}/, `{ ${validExports.join(', ')} }`);
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
break; // Only process first module.exports
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
return lines.join('\n');
|
|
343
|
+
}
|
|
344
|
+
/**
|
|
345
|
+
* Generate and validate diff without applying (for dry-run)
|
|
346
|
+
*/
|
|
347
|
+
export async function generateEditDryRun(filepath, instruction) {
|
|
348
|
+
const fullPath = join(process.cwd(), filepath);
|
|
349
|
+
if (!existsSync(fullPath)) {
|
|
350
|
+
return {
|
|
351
|
+
success: false,
|
|
352
|
+
error: `File not found: ${filepath}`,
|
|
353
|
+
};
|
|
354
|
+
}
|
|
355
|
+
const originalContent = readFileSync(fullPath, 'utf-8');
|
|
356
|
+
// Generate diff
|
|
357
|
+
const diffText = await generateDiff(originalContent, instruction, filepath);
|
|
358
|
+
if (!diffText || diffText.trim().length === 0) {
|
|
359
|
+
return {
|
|
360
|
+
success: false,
|
|
361
|
+
error: 'No diff generated',
|
|
362
|
+
};
|
|
363
|
+
}
|
|
364
|
+
// Parse diff stats
|
|
365
|
+
const diffStats = parseDiffStats(diffText);
|
|
366
|
+
// Check policy
|
|
367
|
+
const policyResult = checkPolicy(filepath, diffStats);
|
|
368
|
+
if (!policyResult.allowed) {
|
|
369
|
+
return {
|
|
370
|
+
success: false,
|
|
371
|
+
diffText,
|
|
372
|
+
policyResult,
|
|
373
|
+
diffStats,
|
|
374
|
+
error: policyResult.reason,
|
|
375
|
+
};
|
|
376
|
+
}
|
|
377
|
+
// Apply diff to get new content (but don't write)
|
|
378
|
+
try {
|
|
379
|
+
const newContent = applyUnifiedDiff(originalContent, diffText);
|
|
380
|
+
// Check if content actually changed
|
|
381
|
+
if (newContent === originalContent) {
|
|
382
|
+
return {
|
|
383
|
+
success: false,
|
|
384
|
+
diffText,
|
|
385
|
+
diffStats,
|
|
386
|
+
policyResult,
|
|
387
|
+
error: 'Diff application resulted in no changes. The generated diff may be invalid or incompatible.',
|
|
388
|
+
};
|
|
389
|
+
}
|
|
390
|
+
// Validate syntax (for JS/TS files)
|
|
391
|
+
const ext = filepath.split('.').pop()?.toLowerCase();
|
|
392
|
+
let syntaxValid = true;
|
|
393
|
+
if (ext === 'js' || ext === 'jsx' || ext === 'ts' || ext === 'tsx') {
|
|
394
|
+
const syntaxCheck = await validateSyntax(newContent, ext, fullPath);
|
|
395
|
+
syntaxValid = syntaxCheck.valid;
|
|
396
|
+
if (!syntaxValid) {
|
|
397
|
+
return {
|
|
398
|
+
success: false,
|
|
399
|
+
diffText,
|
|
400
|
+
diffStats,
|
|
401
|
+
policyResult,
|
|
402
|
+
newContent,
|
|
403
|
+
syntaxValid: false,
|
|
404
|
+
error: `Syntax error in generated code: ${syntaxCheck.error}`,
|
|
405
|
+
};
|
|
406
|
+
}
|
|
407
|
+
}
|
|
408
|
+
return {
|
|
409
|
+
success: true,
|
|
410
|
+
diffText,
|
|
411
|
+
diffStats,
|
|
412
|
+
policyResult,
|
|
413
|
+
newContent,
|
|
414
|
+
syntaxValid: true,
|
|
415
|
+
};
|
|
416
|
+
}
|
|
417
|
+
catch (error) {
|
|
418
|
+
return {
|
|
419
|
+
success: false,
|
|
420
|
+
diffText,
|
|
421
|
+
diffStats,
|
|
422
|
+
policyResult,
|
|
423
|
+
error: `Failed to apply diff: ${error instanceof Error ? error.message : String(error)}`,
|
|
424
|
+
};
|
|
425
|
+
}
|
|
426
|
+
}
|
|
427
|
+
/**
|
|
428
|
+
* Legacy function - kept for backward compatibility
|
|
429
|
+
* Use generateAndApplyEditWithVerification() for new code
|
|
430
|
+
*/
|
|
431
|
+
export async function generateAndApplyEdit(filepath, instruction) {
|
|
432
|
+
const fullPath = join(process.cwd(), filepath);
|
|
433
|
+
if (!existsSync(fullPath)) {
|
|
434
|
+
return {
|
|
435
|
+
success: false,
|
|
436
|
+
error: `File not found: ${filepath}`,
|
|
437
|
+
};
|
|
438
|
+
}
|
|
439
|
+
const originalContent = readFileSync(fullPath, 'utf-8');
|
|
440
|
+
// Generate diff
|
|
441
|
+
const diffText = await generateDiff(originalContent, instruction, filepath);
|
|
442
|
+
if (!diffText || diffText.trim().length === 0) {
|
|
443
|
+
return {
|
|
444
|
+
success: false,
|
|
445
|
+
error: 'No diff generated',
|
|
446
|
+
};
|
|
447
|
+
}
|
|
448
|
+
// Parse diff stats
|
|
449
|
+
const diffStats = parseDiffStats(diffText);
|
|
450
|
+
// Check policy
|
|
451
|
+
const policyResult = checkPolicy(filepath, diffStats);
|
|
452
|
+
if (!policyResult.allowed) {
|
|
453
|
+
return {
|
|
454
|
+
success: false,
|
|
455
|
+
policyResult,
|
|
456
|
+
diffStats,
|
|
457
|
+
error: policyResult.reason,
|
|
458
|
+
};
|
|
459
|
+
}
|
|
460
|
+
// Apply diff
|
|
461
|
+
try {
|
|
462
|
+
const newContent = applyUnifiedDiff(originalContent, diffText);
|
|
463
|
+
// Check if content actually changed
|
|
464
|
+
if (newContent === originalContent) {
|
|
465
|
+
return {
|
|
466
|
+
success: false,
|
|
467
|
+
diffStats,
|
|
468
|
+
policyResult,
|
|
469
|
+
error: 'Diff application resulted in no changes. The generated diff may be invalid or incompatible.',
|
|
470
|
+
};
|
|
471
|
+
}
|
|
472
|
+
// CRITICAL: Validate syntax BEFORE writing (for JS/TS files)
|
|
473
|
+
// Never write broken files to disk under any condition
|
|
474
|
+
const ext = filepath.split('.').pop()?.toLowerCase();
|
|
475
|
+
if (ext === 'js' || ext === 'jsx' || ext === 'ts' || ext === 'tsx') {
|
|
476
|
+
const syntaxCheck = await validateSyntax(newContent, ext, fullPath);
|
|
477
|
+
if (!syntaxCheck.valid) {
|
|
478
|
+
// Syntax invalid - DO NOT WRITE, return error immediately
|
|
479
|
+
return {
|
|
480
|
+
success: false,
|
|
481
|
+
diffStats,
|
|
482
|
+
policyResult,
|
|
483
|
+
error: `Syntax validation failed. File NOT modified. Error: ${syntaxCheck.error}`,
|
|
484
|
+
};
|
|
485
|
+
}
|
|
486
|
+
}
|
|
487
|
+
// Only write if syntax is valid (or not JS/TS)
|
|
488
|
+
writeFileSync(fullPath, newContent, 'utf-8');
|
|
489
|
+
// Update embeddings for this file (async, don't wait)
|
|
490
|
+
updateFileEmbeddings(filepath).catch(() => {
|
|
491
|
+
// Silently fail - embedding update is optional
|
|
492
|
+
});
|
|
493
|
+
return {
|
|
494
|
+
success: true,
|
|
495
|
+
diffStats,
|
|
496
|
+
policyResult,
|
|
497
|
+
};
|
|
498
|
+
}
|
|
499
|
+
catch (error) {
|
|
500
|
+
return {
|
|
501
|
+
success: false,
|
|
502
|
+
diffStats,
|
|
503
|
+
policyResult,
|
|
504
|
+
error: `Failed to apply diff: ${error instanceof Error ? error.message : String(error)}`,
|
|
505
|
+
};
|
|
506
|
+
}
|
|
507
|
+
}
|
|
508
|
+
/**
|
|
509
|
+
* NEW: Generate and apply edit with verification and iterative refinement
|
|
510
|
+
*/
|
|
511
|
+
export async function generateAndApplyEditWithVerification(filepath, instruction, requirements) {
|
|
512
|
+
const fullPath = join(process.cwd(), filepath);
|
|
513
|
+
if (!existsSync(fullPath)) {
|
|
514
|
+
return {
|
|
515
|
+
success: false,
|
|
516
|
+
verified: false,
|
|
517
|
+
iterations: 0,
|
|
518
|
+
error: `File not found: ${filepath}`,
|
|
519
|
+
};
|
|
520
|
+
}
|
|
521
|
+
try {
|
|
522
|
+
// Read original content BEFORE modification
|
|
523
|
+
const originalContent = readFileSync(fullPath, 'utf-8');
|
|
524
|
+
// Use iterative refinement with verification
|
|
525
|
+
const refinementResult = await refineTask(fullPath, instruction, requirements, 3);
|
|
526
|
+
if (!refinementResult.success) {
|
|
527
|
+
// Rollback on failure
|
|
528
|
+
writeFileSync(fullPath, originalContent, 'utf-8');
|
|
529
|
+
return {
|
|
530
|
+
success: false,
|
|
531
|
+
verified: false,
|
|
532
|
+
iterations: refinementResult.iterations,
|
|
533
|
+
error: `Task failed after ${refinementResult.iterations} iterations`,
|
|
534
|
+
verificationErrors: refinementResult.finalResult.errors,
|
|
535
|
+
};
|
|
536
|
+
}
|
|
537
|
+
// Read final content and calculate actual diff stats
|
|
538
|
+
const finalContent = readFileSync(fullPath, 'utf-8');
|
|
539
|
+
// Calculate diff stats manually (more reliable than generating diff)
|
|
540
|
+
const originalLines = originalContent.split('\n');
|
|
541
|
+
const finalLines = finalContent.split('\n');
|
|
542
|
+
let linesAdded = 0;
|
|
543
|
+
let linesRemoved = 0;
|
|
544
|
+
// Simple line-by-line comparison
|
|
545
|
+
const maxLen = Math.max(originalLines.length, finalLines.length);
|
|
546
|
+
for (let i = 0; i < maxLen; i++) {
|
|
547
|
+
if (i >= originalLines.length) {
|
|
548
|
+
linesAdded++;
|
|
549
|
+
}
|
|
550
|
+
else if (i >= finalLines.length) {
|
|
551
|
+
linesRemoved++;
|
|
552
|
+
}
|
|
553
|
+
else if (originalLines[i] !== finalLines[i]) {
|
|
554
|
+
// Changed line - count as removed + added
|
|
555
|
+
linesRemoved++;
|
|
556
|
+
linesAdded++;
|
|
557
|
+
}
|
|
558
|
+
}
|
|
559
|
+
const diffStats = {
|
|
560
|
+
linesAdded,
|
|
561
|
+
linesRemoved,
|
|
562
|
+
filesChanged: 1,
|
|
563
|
+
};
|
|
564
|
+
// Check policy
|
|
565
|
+
const policyResult = checkPolicy(filepath, diffStats);
|
|
566
|
+
return {
|
|
567
|
+
success: true,
|
|
568
|
+
verified: refinementResult.finalResult.success,
|
|
569
|
+
iterations: refinementResult.iterations,
|
|
570
|
+
diffStats,
|
|
571
|
+
policyResult,
|
|
572
|
+
verificationErrors: refinementResult.finalResult.errors.length > 0 ? refinementResult.finalResult.errors : undefined,
|
|
573
|
+
};
|
|
574
|
+
}
|
|
575
|
+
catch (error) {
|
|
576
|
+
// Rollback on error
|
|
577
|
+
if (existsSync(fullPath)) {
|
|
578
|
+
try {
|
|
579
|
+
const originalContent = readFileSync(fullPath, 'utf-8');
|
|
580
|
+
// Try to restore if we have backup (refinement should have kept original)
|
|
581
|
+
}
|
|
582
|
+
catch {
|
|
583
|
+
// Ignore rollback errors
|
|
584
|
+
}
|
|
585
|
+
}
|
|
586
|
+
return {
|
|
587
|
+
success: false,
|
|
588
|
+
verified: false,
|
|
589
|
+
iterations: 0,
|
|
590
|
+
error: `Error during verification: ${error instanceof Error ? error.message : String(error)}`,
|
|
591
|
+
};
|
|
592
|
+
}
|
|
593
|
+
}
|
|
594
|
+
//# sourceMappingURL=edit.js.map
|
package/dist/edit.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"edit.js","sourceRoot":"","sources":["../src/edit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AACzE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAEvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAElD,MAAM,UAAU,cAAc,CAAC,QAAgB;IAC7C,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACnC,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,IAAI,WAAW,GAAG,EAAE,CAAC;IAErB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3B,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;YAC7C,IAAI,SAAS,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,WAAW,EAAE,CAAC;gBAC9C,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;gBAC9C,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;oBACzB,YAAY,EAAE,CAAC;oBACf,WAAW,GAAG,IAAI,CAAC;gBACrB,CAAC;YACH,CAAC;QACH,CAAC;aAAM,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;YAClC,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;YAChD,IAAI,SAAS,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,WAAW,EAAE,CAAC;gBAC9C,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;gBAC9C,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;oBACzB,YAAY,EAAE,CAAC;oBACf,WAAW,GAAG,IAAI,CAAC;gBACrB,CAAC;YACH,CAAC;QACH,CAAC;aAAM,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3D,UAAU,EAAE,CAAC;QACf,CAAC;aAAM,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3D,YAAY,EAAE,CAAC;QACjB,CAAC;IACH,CAAC;IAED,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY,EAAE,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,eAAuB,EAAE,QAAgB;IACxE,IAAI,CAAC;QACH,4EAA4E;QAC5E,MAAM,OAAO,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;QAErC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACrC,mDAAmD;YACnD,OAAO,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;YAC5C,OAAO,eAAe,CAAC;QACzB,CAAC;QAED,oBAAoB;QACpB,IAAI,MAAM,GAAG,eAAe,CAAC;QAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACxC,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YACzB,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YAC1C,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC;gBACtB,oDAAoD;gBACpD,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,yCAAyC,CAAC,CAAC;gBAClE,MAAM,YAAY,GAAG,sBAAsB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;gBAC9D,wCAAwC;gBACxC,IAAI,YAAY,KAAK,MAAM,EAAE,CAAC;oBAC5B,OAAO,CAAC,IAAI,CAAC,iEAAiE,CAAC,CAAC;oBAChF,OAAO,eAAe,CAAC;gBACzB,CAAC;gBACD,MAAM,GAAG,YAAY,CAAC;YACxB,CAAC;iBAAM,CAAC;gBACN,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACzE,CAAC;QACH,CAAC;QAED,+CAA+C;QAC/C,OAAO,mBAAmB,CAAC,MAAM,CAAC,CAAC;IACrC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,qDAAqD;QACrD,OAAO,CAAC,IAAI,CAAC,4BAA4B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACnG,OAAO,sBAAsB,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;IAC3D,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAS,sBAAsB,CAAC,eAAuB,EAAE,QAAgB;IACvE,+CAA+C;IAC/C,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC;QAClC,OAAO,eAAe,CAAC;IACzB,CAAC;IAED,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACvC,MAAM,aAAa,GAAG,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAClD,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,IAAI,aAAa,GAAG,CAAC,CAAC;IACtB,IAAI,CAAC,GAAG,CAAC,CAAC;IAEV,+BAA+B;IAC/B,OAAO,CAAC,GAAG,SAAS,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QAClG,CAAC,EAAE,CAAC;IACN,CAAC;IAED,kBAAkB;IAClB,OAAO,CAAC,GAAG,SAAS,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9D,CAAC,EAAE,CAAC;IACN,CAAC;IAED,IAAI,CAAC,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC;QAC1B,kCAAkC;QAClC,OAAO,eAAe,CAAC;IACzB,CAAC;IAED,OAAO,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC;QAC5B,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;QAE1B,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,mDAAmD,CAAC,CAAC;YAC9E,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,qBAAqB;gBAElE,6BAA6B;gBAC7B,OAAO,aAAa,GAAG,QAAQ,IAAI,aAAa,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC;oBACxE,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,CAAC;oBAC1C,aAAa,EAAE,CAAC;gBAClB,CAAC;gBAED,CAAC,EAAE,CAAC,CAAC,wBAAwB;gBAE7B,qBAAqB;gBACrB,OAAO,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC;oBAC5B,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;oBAE9B,sBAAsB;oBACtB,IAAI,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;wBAC9B,MAAM;oBACR,CAAC;oBAED,mBAAmB;oBACnB,IAAI,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;wBAC3B,CAAC,EAAE,CAAC;wBACJ,SAAS;oBACX,CAAC;oBAED,IAAI,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;wBAC5D,aAAa;wBACb,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;wBACnC,CAAC,EAAE,CAAC;oBACN,CAAC;yBAAM,IAAI,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;wBACnE,kCAAkC;wBAClC,aAAa,EAAE,CAAC;wBAChB,CAAC,EAAE,CAAC;oBACN,CAAC;yBAAM,IAAI,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;wBACpC,oCAAoC;wBACpC,IAAI,aAAa,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC;4BACzC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,CAAC;wBAC5C,CAAC;wBACD,aAAa,EAAE,CAAC;wBAChB,CAAC,EAAE,CAAC;oBACN,CAAC;yBAAM,CAAC;wBACN,2BAA2B;wBAC3B,CAAC,EAAE,CAAC;oBACN,CAAC;gBACH,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,CAAC,EAAE,CAAC;YACN,CAAC;QACH,CAAC;aAAM,CAAC;YACN,CAAC,EAAE,CAAC;QACN,CAAC;IACH,CAAC;IAED,+BAA+B;IAC/B,OAAO,aAAa,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC;QAC5C,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,CAAC;QAC1C,aAAa,EAAE,CAAC;IAClB,CAAC;IAED,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEzC,yDAAyD;IACzD,IAAI,cAAc,KAAK,eAAe,EAAE,CAAC;QACvC,OAAO,eAAe,CAAC;IACzB,CAAC;IAED,OAAO,mBAAmB,CAAC,cAAc,CAAC,CAAC;AAC7C,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,cAAc,CAC3B,OAAe,EACf,GAAW,EACX,QAAgB;IAEhB,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,KAAK,EAAE,CAAC;QAClC,kDAAkD;QAClD,IAAI,CAAC;YACH,+BAA+B;YAC/B,MAAM,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC;YACnC,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;YAC1C,IAAI,CAAC;gBACH,QAAQ,CAAC,iBAAiB,QAAQ,GAAG,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;gBAC1D,qBAAqB;gBACrB,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;oBACzB,UAAU,CAAC,QAAQ,CAAC,CAAC;gBACvB,CAAC;gBACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;YACzB,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBACpB,qBAAqB;gBACrB,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;oBACzB,UAAU,CAAC,QAAQ,CAAC,CAAC;gBACvB,CAAC;gBACD,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,KAAK,CAAC,OAAO,IAAI,sBAAsB,CAAC;gBACrF,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;YAC3C,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,uDAAuD;YACvD,IAAI,CAAC;gBACH,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC;gBACtB,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;YACzB,CAAC;YAAC,OAAO,WAAW,EAAE,CAAC;gBACrB,OAAO;oBACL,KAAK,EAAE,KAAK;oBACZ,KAAK,EAAE,WAAW,YAAY,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC;iBAChF,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED,mCAAmC;IACnC,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,KAAK,EAAE,CAAC;QAClC,IAAI,CAAC;YACH,+BAA+B;YAC/B,MAAM,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC;YACnC,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;YAC1C,IAAI,CAAC;gBACH,6CAA6C;gBAC7C,QAAQ,CAAC,oCAAoC,QAAQ,QAAQ,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;gBAClF,qBAAqB;gBACrB,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;oBACzB,UAAU,CAAC,QAAQ,CAAC,CAAC;gBACvB,CAAC;gBACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;YACzB,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBACpB,qBAAqB;gBACrB,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;oBACzB,UAAU,CAAC,QAAQ,CAAC,CAAC;gBACvB,CAAC;gBACD,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,KAAK,CAAC,OAAO,IAAI,0BAA0B,CAAC;gBACrH,0DAA0D;gBAC1D,IAAI,QAAQ,CAAC,QAAQ,CAAC,mBAAmB,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,CAAC;oBACtF,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,4BAA4B;gBACtD,CAAC;gBACD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;YAC3C,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,+CAA+C;YAC/C,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;QACzB,CAAC;IACH,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AACzB,CAAC;AAED;;GAEG;AACH,SAAS,mBAAmB,CAAC,OAAe;IAC1C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAClC,MAAM,kBAAkB,GAAa,EAAE,CAAC;IAExC,gCAAgC;IAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC7B,IAAI,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YACpF,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;IAED,+DAA+D;IAC/D,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClC,yDAAyD;QACzD,MAAM,aAAa,GAAG,kBAAkB,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACxE,MAAM,cAAc,GAAG,KAAK,CAAC,aAAa,CAAC,CAAC;QAE5C,uEAAuE;QACvE,KAAK,IAAI,CAAC,GAAG,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YACxD,KAAK,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACzC,CAAC;QAED,2EAA2E;QAC3E,2BAA2B;QAC3B,MAAM,SAAS,GAAG,aAAa,GAAG,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,2BAA2B;QAC9F,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,EAAE,cAAc,CAAC,CAAC;IAC7C,CAAC;IAED,yEAAyE;IACzE,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtC,OAAO,gCAAgC,CAAC,YAAY,CAAC,CAAC;AACxD,CAAC;AAED;;;GAGG;AACH,SAAS,gCAAgC,CAAC,OAAe;IACvD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAElC,gCAAgC;IAChC,MAAM,YAAY,GAAG,IAAI,GAAG,EAAkB,CAAC,CAAC,sBAAsB;IACtE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACtB,sCAAsC;QACtC,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;QACtD,IAAI,SAAS,EAAE,CAAC;YACd,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;IAED,2BAA2B;IAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACnE,yBAAyB;YACzB,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;YACpE,IAAI,WAAW,EAAE,CAAC;gBAChB,MAAM,aAAa,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;gBAElF,yDAAyD;gBACzD,MAAM,gBAAgB,GAAa,EAAE,CAAC;gBACtC,MAAM,YAAY,GAAa,EAAE,CAAC;gBAElC,KAAK,MAAM,UAAU,IAAI,aAAa,EAAE,CAAC;oBACvC,IAAI,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;wBACjC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;oBAChC,CAAC;yBAAM,CAAC;wBACN,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;oBACpC,CAAC;gBACH,CAAC;gBAED,6DAA6D;gBAC7D,yFAAyF;gBACzF,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC3D,kEAAkE;oBAClE,MAAM,gBAAgB,GAAG,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC;oBACzD,MAAM,kBAAkB,GAAG,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;oBAE1F,kFAAkF;oBAClF,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,IAAI,kBAAkB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;wBACrE,4CAA4C;wBAC5C,MAAM,OAAO,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;wBACpC,MAAM,OAAO,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC;wBACtC,MAAM,UAAU,GAAG,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;wBAChF,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CACrB,aAAa,EACb,KAAK,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAC/B,CAAC;oBACJ,CAAC;yBAAM,CAAC;wBACN,6CAA6C;wBAC7C,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CACrB,aAAa,EACb,KAAK,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CACjC,CAAC;oBACJ,CAAC;gBACH,CAAC;YACH,CAAC;YACD,MAAM,CAAC,oCAAoC;QAC7C,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,QAAgB,EAChB,WAAmB;IAUnB,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAC;IAE/C,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1B,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,mBAAmB,QAAQ,EAAE;SACrC,CAAC;IACJ,CAAC;IAED,MAAM,eAAe,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAExD,gBAAgB;IAChB,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,eAAe,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;IAE5E,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9C,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,mBAAmB;SAC3B,CAAC;IACJ,CAAC;IAED,mBAAmB;IACnB,MAAM,SAAS,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;IAE3C,eAAe;IACf,MAAM,YAAY,GAAG,WAAW,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAEtD,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;QAC1B,OAAO;YACL,OAAO,EAAE,KAAK;YACd,QAAQ;YACR,YAAY;YACZ,SAAS;YACT,KAAK,EAAE,YAAY,CAAC,MAAM;SAC3B,CAAC;IACJ,CAAC;IAED,kDAAkD;IAClD,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,gBAAgB,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;QAE/D,oCAAoC;QACpC,IAAI,UAAU,KAAK,eAAe,EAAE,CAAC;YACnC,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,QAAQ;gBACR,SAAS;gBACT,YAAY;gBACZ,KAAK,EAAE,6FAA6F;aACrG,CAAC;QACJ,CAAC;QAED,oCAAoC;QACpC,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,WAAW,EAAE,CAAC;QACrD,IAAI,WAAW,GAAG,IAAI,CAAC;QACvB,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,KAAK,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,KAAK,EAAE,CAAC;YACnE,MAAM,WAAW,GAAG,MAAM,cAAc,CAAC,UAAU,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;YACpE,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC;YAChC,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,QAAQ;oBACR,SAAS;oBACT,YAAY;oBACZ,UAAU;oBACV,WAAW,EAAE,KAAK;oBAClB,KAAK,EAAE,mCAAmC,WAAW,CAAC,KAAK,EAAE;iBAC9D,CAAC;YACJ,CAAC;QACH,CAAC;QAED,OAAO;YACL,OAAO,EAAE,IAAI;YACb,QAAQ;YACR,SAAS;YACT,YAAY;YACZ,UAAU;YACV,WAAW,EAAE,IAAI;SAClB,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,OAAO,EAAE,KAAK;YACd,QAAQ;YACR,SAAS;YACT,YAAY;YACZ,KAAK,EAAE,yBAAyB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;SACzF,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,QAAgB,EAChB,WAAmB;IAEnB,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAC;IAE/C,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1B,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,mBAAmB,QAAQ,EAAE;SACrC,CAAC;IACJ,CAAC;IAED,MAAM,eAAe,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAExD,gBAAgB;IAChB,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,eAAe,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;IAE5E,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9C,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,mBAAmB;SAC3B,CAAC;IACJ,CAAC;IAED,mBAAmB;IACnB,MAAM,SAAS,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;IAE3C,eAAe;IACf,MAAM,YAAY,GAAG,WAAW,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAEtD,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;QAC1B,OAAO;YACL,OAAO,EAAE,KAAK;YACd,YAAY;YACZ,SAAS;YACT,KAAK,EAAE,YAAY,CAAC,MAAM;SAC3B,CAAC;IACJ,CAAC;IAED,aAAa;IACb,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,gBAAgB,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;QAE/D,oCAAoC;QACpC,IAAI,UAAU,KAAK,eAAe,EAAE,CAAC;YACnC,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,SAAS;gBACT,YAAY;gBACZ,KAAK,EAAE,6FAA6F;aACrG,CAAC;QACJ,CAAC;QAED,6DAA6D;QAC7D,uDAAuD;QACvD,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,WAAW,EAAE,CAAC;QACrD,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,KAAK,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,KAAK,EAAE,CAAC;YACnE,MAAM,WAAW,GAAG,MAAM,cAAc,CAAC,UAAU,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;YACpE,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;gBACvB,0DAA0D;gBAC1D,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,SAAS;oBACT,YAAY;oBACZ,KAAK,EAAE,uDAAuD,WAAW,CAAC,KAAK,EAAE;iBAClF,CAAC;YACJ,CAAC;QACH,CAAC;QAED,+CAA+C;QAC/C,aAAa,CAAC,QAAQ,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;QAE7C,sDAAsD;QACtD,oBAAoB,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;YACxC,+CAA+C;QACjD,CAAC,CAAC,CAAC;QAEH,OAAO;YACL,OAAO,EAAE,IAAI;YACb,SAAS;YACT,YAAY;SACb,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,OAAO,EAAE,KAAK;YACd,SAAS;YACT,YAAY;YACZ,KAAK,EAAE,yBAAyB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;SACzF,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,oCAAoC,CACxD,QAAgB,EAChB,WAAmB,EACnB,YAAuB;IAUvB,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAC;IAE/C,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1B,OAAO;YACL,OAAO,EAAE,KAAK;YACd,QAAQ,EAAE,KAAK;YACf,UAAU,EAAE,CAAC;YACb,KAAK,EAAE,mBAAmB,QAAQ,EAAE;SACrC,CAAC;IACJ,CAAC;IAED,IAAI,CAAC;QAEL,4CAA4C;QAC5C,MAAM,eAAe,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAExD,6CAA6C;QAC7C,MAAM,gBAAgB,GAAG,MAAM,UAAU,CAAC,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC;QAElF,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC;YAC9B,sBAAsB;YACtB,aAAa,CAAC,QAAQ,EAAE,eAAe,EAAE,OAAO,CAAC,CAAC;YAClD,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,QAAQ,EAAE,KAAK;gBACf,UAAU,EAAE,gBAAgB,CAAC,UAAU;gBACvC,KAAK,EAAE,qBAAqB,gBAAgB,CAAC,UAAU,aAAa;gBACpE,kBAAkB,EAAE,gBAAgB,CAAC,WAAW,CAAC,MAAM;aACxD,CAAC;QACJ,CAAC;QAED,qDAAqD;QACrD,MAAM,YAAY,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAErD,qEAAqE;QACrE,MAAM,aAAa,GAAG,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAClD,MAAM,UAAU,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,UAAU,GAAG,CAAC,CAAC;QACnB,IAAI,YAAY,GAAG,CAAC,CAAC;QAErB,iCAAiC;QACjC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;QACjE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAChC,IAAI,CAAC,IAAI,aAAa,CAAC,MAAM,EAAE,CAAC;gBAC9B,UAAU,EAAE,CAAC;YACf,CAAC;iBAAM,IAAI,CAAC,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;gBAClC,YAAY,EAAE,CAAC;YACjB,CAAC;iBAAM,IAAI,aAAa,CAAC,CAAC,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC9C,0CAA0C;gBAC1C,YAAY,EAAE,CAAC;gBACf,UAAU,EAAE,CAAC;YACf,CAAC;QACH,CAAC;QAED,MAAM,SAAS,GAAc;YAC3B,UAAU;YACV,YAAY;YACZ,YAAY,EAAE,CAAC;SAChB,CAAC;QAEF,eAAe;QACf,MAAM,YAAY,GAAG,WAAW,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QAEpD,OAAO;YACL,OAAO,EAAE,IAAI;YACb,QAAQ,EAAE,gBAAgB,CAAC,WAAW,CAAC,OAAO;YAC9C,UAAU,EAAE,gBAAgB,CAAC,UAAU;YACvC,SAAS;YACT,YAAY;YACZ,kBAAkB,EAAE,gBAAgB,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;SACrH,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,oBAAoB;QACpB,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YACzB,IAAI,CAAC;gBACH,MAAM,eAAe,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;gBACxD,0EAA0E;YAC5E,CAAC;YAAC,MAAM,CAAC;gBACP,yBAAyB;YAC3B,CAAC;QACH,CAAC;QACD,OAAO;YACL,OAAO,EAAE,KAAK;YACd,QAAQ,EAAE,KAAK;YACf,UAAU,EAAE,CAAC;YACb,KAAK,EAAE,8BAA8B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;SAC9F,CAAC;IACJ,CAAC;AACH,CAAC"}
|
package/dist/embed.d.ts
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export declare function indexRepository(repoPath?: string): Promise<void>;
|
|
2
|
+
/**
|
|
3
|
+
* NEW: Parallel indexing with caching
|
|
4
|
+
*/
|
|
5
|
+
export declare function indexRepositoryParallel(repoPath?: string, options?: {
|
|
6
|
+
useCache?: boolean;
|
|
7
|
+
maxConcurrency?: number;
|
|
8
|
+
}): Promise<{
|
|
9
|
+
indexed: number;
|
|
10
|
+
cached: number;
|
|
11
|
+
totalChunks: number;
|
|
12
|
+
timeMs: number;
|
|
13
|
+
}>;
|
|
14
|
+
/**
|
|
15
|
+
* Update embeddings for a single file (after edit)
|
|
16
|
+
*/
|
|
17
|
+
export declare function updateFileEmbeddings(filepath: string): Promise<void>;
|
|
18
|
+
//# sourceMappingURL=embed.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"embed.d.ts","sourceRoot":"","sources":["../src/embed.ts"],"names":[],"mappings":"AA+LA,wBAAsB,eAAe,CAAC,QAAQ,GAAE,MAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CAwQrF;AAED;;GAEG;AACH,wBAAsB,uBAAuB,CAC3C,QAAQ,CAAC,EAAE,MAAM,EACjB,OAAO,GAAE;IACP,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;CACpB,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,CAkCD;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA2E1E"}
|