mcp-code-context 3.5.2 → 3.6.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/CHANGELOG.md +57 -3
- package/HIRE_ME.md +234 -0
- package/INSTRUCTIONS.md +274 -0
- package/README.md +486 -304
- package/SECURITY.md +14 -14
- package/SPONSORS.md +104 -0
- package/dist/src/core/cacheManager.d.ts +44 -0
- package/dist/src/core/cacheManager.js +255 -0
- package/dist/src/core/cacheManager.js.map +1 -0
- package/dist/src/core/engine.d.ts +1 -1
- package/dist/src/core/engine.js +1 -1
- package/dist/src/core/validator.d.ts +1 -1
- package/dist/src/core/validator.js +21 -9
- package/dist/src/core/validator.js.map +1 -1
- package/dist/src/index.d.ts +6 -1
- package/dist/src/index.js +197 -20
- package/dist/src/index.js.map +1 -1
- package/dist/src/operations/compress.d.ts +3 -1
- package/dist/src/operations/compress.js +47 -48
- package/dist/src/operations/compress.js.map +1 -1
- package/dist/src/operations/confirmationStore.d.ts +1 -1
- package/dist/src/operations/confirmationStore.js +1 -1
- package/dist/src/operations/read.d.ts +5 -1
- package/dist/src/operations/read.js +129 -60
- package/dist/src/operations/read.js.map +1 -1
- package/dist/src/operations/write.d.ts +2 -2
- package/dist/src/operations/write.js +83 -59
- package/dist/src/operations/write.js.map +1 -1
- package/dist/src/parsers/base.d.ts +1 -1
- package/dist/src/parsers/base.js +1 -1
- package/dist/src/parsers/dartTreeSitter.d.ts +1 -1
- package/dist/src/parsers/dartTreeSitter.js +1 -1
- package/dist/src/parsers/php.d.ts +1 -1
- package/dist/src/parsers/php.js +1 -1
- package/dist/src/parsers/python.d.ts +1 -1
- package/dist/src/parsers/python.js +1 -1
- package/dist/src/parsers/registry.d.ts +1 -1
- package/dist/src/parsers/registry.js +1 -1
- package/dist/src/parsers/typescript.d.ts +1 -1
- package/dist/src/parsers/typescript.js +1 -1
- package/dist/src/utils/auditLogger.d.ts +1 -1
- package/dist/src/utils/auditLogger.js +3 -2
- package/dist/src/utils/auditLogger.js.map +1 -1
- package/dist/src/utils/backupManager.d.ts +30 -9
- package/dist/src/utils/backupManager.js +75 -33
- package/dist/src/utils/backupManager.js.map +1 -1
- package/dist/src/utils/constants.d.ts +13 -2
- package/dist/src/utils/constants.js +21 -2
- package/dist/src/utils/constants.js.map +1 -1
- package/dist/src/utils/diff.d.ts +37 -7
- package/dist/src/utils/diff.js +91 -101
- package/dist/src/utils/diff.js.map +1 -1
- package/dist/src/utils/fileLock.d.ts +25 -50
- package/dist/src/utils/fileLock.js +66 -100
- package/dist/src/utils/fileLock.js.map +1 -1
- package/dist/src/utils/fileWalker.d.ts +28 -0
- package/dist/src/utils/fileWalker.js +57 -0
- package/dist/src/utils/fileWalker.js.map +1 -0
- package/dist/src/utils/fileWatcher.d.ts +23 -0
- package/dist/src/utils/fileWatcher.js +80 -0
- package/dist/src/utils/fileWatcher.js.map +1 -0
- package/dist/src/utils/fuzzySearch.d.ts +22 -0
- package/dist/src/utils/fuzzySearch.js +36 -0
- package/dist/src/utils/fuzzySearch.js.map +1 -0
- package/dist/src/utils/logger.d.ts +19 -0
- package/dist/src/utils/logger.js +50 -0
- package/dist/src/utils/logger.js.map +1 -0
- package/dist/src/utils/rateLimiter.d.ts +1 -1
- package/dist/src/utils/rateLimiter.js +1 -1
- package/dist/src/utils/safeRegex.d.ts +1 -1
- package/dist/src/utils/safeRegex.js +1 -1
- package/dist/src/utils/searchTools.d.ts +14 -0
- package/dist/src/utils/searchTools.js +94 -0
- package/dist/src/utils/searchTools.js.map +1 -0
- package/dist/src/utils/streaming.d.ts +1 -1
- package/dist/src/utils/streaming.js +1 -1
- package/dist/src/utils/telemetry.d.ts +1 -1
- package/dist/src/utils/telemetry.js +1 -1
- package/llms.txt +5 -5
- package/package.json +44 -11
- package/vitest.config.ts +37 -0
- package/CHANGELOG_v3.2.0.md +0 -196
- package/CHANGELOG_v3.3.0.md +0 -266
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Audit Logger - v3.
|
|
2
|
+
* Audit Logger - v3.6.0
|
|
3
3
|
* Comprehensive audit trail for all operations
|
|
4
4
|
*/
|
|
5
5
|
import * as fs from "node:fs/promises";
|
|
6
6
|
import * as path from "node:path";
|
|
7
|
+
import { LOG_DIR } from './logger.js';
|
|
7
8
|
export class AuditLogger {
|
|
8
9
|
config;
|
|
9
10
|
currentLogFile = null;
|
|
@@ -13,7 +14,7 @@ export class AuditLogger {
|
|
|
13
14
|
_ready = Promise.resolve();
|
|
14
15
|
constructor(config = {}) {
|
|
15
16
|
this.config = {
|
|
16
|
-
logDir: config.logDir ||
|
|
17
|
+
logDir: config.logDir || LOG_DIR,
|
|
17
18
|
maxFileSize: config.maxFileSize || 10 * 1024 * 1024, // 10MB
|
|
18
19
|
maxFiles: config.maxFiles || 10,
|
|
19
20
|
enableConsole: config.enableConsole ?? true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auditLogger.js","sourceRoot":"","sources":["../../../src/utils/auditLogger.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"auditLogger.js","sourceRoot":"","sources":["../../../src/utils/auditLogger.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,17 +1,30 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Backup Manager - v3.
|
|
3
|
-
* Handles rolling backups
|
|
2
|
+
* Backup Manager - v3.6.0
|
|
3
|
+
* Handles rolling backups in OS temp directory
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Manages file backups with automatic rotation.
|
|
7
|
+
* Backups are stored in OS temp directory to prevent hot-reload loops.
|
|
4
8
|
*/
|
|
5
9
|
export declare class BackupManager {
|
|
6
10
|
private static readonly MAX_BACKUPS;
|
|
7
|
-
private static
|
|
11
|
+
private static backupRootCache;
|
|
12
|
+
private static getBackupRoot;
|
|
8
13
|
/**
|
|
9
|
-
* Creates a backup of
|
|
14
|
+
* Creates a backup of a file before modification.
|
|
15
|
+
* Automatically enforces backup limit per file.
|
|
16
|
+
*
|
|
17
|
+
* @param filePath - Absolute path to file to backup
|
|
18
|
+
* @param projectRoot - Project root directory
|
|
10
19
|
*/
|
|
11
20
|
static createBackup(filePath: string, projectRoot: string): Promise<void>;
|
|
12
21
|
/**
|
|
13
|
-
* Restores a file
|
|
14
|
-
*
|
|
22
|
+
* Restores a file from backup.
|
|
23
|
+
*
|
|
24
|
+
* @param filePath - Absolute path to file to restore
|
|
25
|
+
* @param projectRoot - Project root directory
|
|
26
|
+
* @param steps - Number of versions to roll back (default: 1)
|
|
27
|
+
* @returns Result with success status and restored backup name
|
|
15
28
|
*/
|
|
16
29
|
static rollback(filePath: string, projectRoot: string, steps?: number): Promise<{
|
|
17
30
|
success: boolean;
|
|
@@ -19,15 +32,23 @@ export declare class BackupManager {
|
|
|
19
32
|
restoredFrom?: string;
|
|
20
33
|
}>;
|
|
21
34
|
/**
|
|
22
|
-
*
|
|
35
|
+
* Removes all backups for a project.
|
|
36
|
+
*
|
|
37
|
+
* @param projectRoot - Project root directory
|
|
38
|
+
* @returns Result with success status and count of deleted files
|
|
23
39
|
*/
|
|
24
40
|
static clean(projectRoot: string): Promise<{
|
|
25
41
|
success: boolean;
|
|
26
42
|
error?: string;
|
|
27
43
|
deletedCount?: number;
|
|
28
44
|
}>;
|
|
45
|
+
private static enforceBackupLimit;
|
|
29
46
|
/**
|
|
30
|
-
*
|
|
47
|
+
* Lists all available backups for a file.
|
|
48
|
+
*
|
|
49
|
+
* @param filePath - Absolute path to file
|
|
50
|
+
* @param projectRoot - Project root directory
|
|
51
|
+
* @returns Array of backup file paths, sorted newest first
|
|
31
52
|
*/
|
|
32
|
-
|
|
53
|
+
static listBackups(filePath: string, projectRoot: string): Promise<string[]>;
|
|
33
54
|
}
|
|
@@ -1,67 +1,90 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Backup Manager - v3.
|
|
3
|
-
* Handles rolling backups
|
|
2
|
+
* Backup Manager - v3.6.0
|
|
3
|
+
* Handles rolling backups in OS temp directory
|
|
4
4
|
*/
|
|
5
5
|
import * as fs from "node:fs/promises";
|
|
6
6
|
import * as path from "node:path";
|
|
7
7
|
import * as crypto from "node:crypto";
|
|
8
|
+
import { tmpdir } from "os";
|
|
9
|
+
import { existsSync, mkdirSync } from "fs";
|
|
10
|
+
import { MAX_BACKUPS_PER_FILE, HASH_LENGTH } from './constants.js';
|
|
11
|
+
/**
|
|
12
|
+
* Manages file backups with automatic rotation.
|
|
13
|
+
* Backups are stored in OS temp directory to prevent hot-reload loops.
|
|
14
|
+
*/
|
|
8
15
|
export class BackupManager {
|
|
9
|
-
static MAX_BACKUPS =
|
|
10
|
-
static
|
|
16
|
+
static MAX_BACKUPS = MAX_BACKUPS_PER_FILE;
|
|
17
|
+
static backupRootCache = new Map();
|
|
18
|
+
static getBackupRoot(projectRoot) {
|
|
19
|
+
if (this.backupRootCache.has(projectRoot)) {
|
|
20
|
+
return this.backupRootCache.get(projectRoot);
|
|
21
|
+
}
|
|
22
|
+
const projectHash = crypto.createHash('md5')
|
|
23
|
+
.update(projectRoot)
|
|
24
|
+
.digest('hex')
|
|
25
|
+
.substring(0, HASH_LENGTH);
|
|
26
|
+
const backupRoot = path.join(tmpdir(), 'mcp-backups', projectHash);
|
|
27
|
+
if (!existsSync(backupRoot)) {
|
|
28
|
+
mkdirSync(backupRoot, { recursive: true });
|
|
29
|
+
}
|
|
30
|
+
this.backupRootCache.set(projectRoot, backupRoot);
|
|
31
|
+
return backupRoot;
|
|
32
|
+
}
|
|
11
33
|
/**
|
|
12
|
-
* Creates a backup of
|
|
34
|
+
* Creates a backup of a file before modification.
|
|
35
|
+
* Automatically enforces backup limit per file.
|
|
36
|
+
*
|
|
37
|
+
* @param filePath - Absolute path to file to backup
|
|
38
|
+
* @param projectRoot - Project root directory
|
|
13
39
|
*/
|
|
14
40
|
static async createBackup(filePath, projectRoot) {
|
|
15
41
|
try {
|
|
16
|
-
// Check if original file exists before backing up
|
|
17
42
|
await fs.access(filePath);
|
|
18
43
|
}
|
|
19
44
|
catch {
|
|
20
|
-
// File doesn't exist yet (it's a new file), no backup needed
|
|
21
45
|
return;
|
|
22
46
|
}
|
|
23
|
-
const backupDir =
|
|
24
|
-
|
|
25
|
-
|
|
47
|
+
const backupDir = this.getBackupRoot(projectRoot);
|
|
48
|
+
if (!existsSync(backupDir)) {
|
|
49
|
+
mkdirSync(backupDir, { recursive: true });
|
|
50
|
+
}
|
|
26
51
|
const relativePath = path.relative(projectRoot, filePath);
|
|
27
|
-
const safeName = crypto.createHash('md5').update(relativePath).digest('hex').substring(0,
|
|
28
|
-
// Save backup with timestamp
|
|
52
|
+
const safeName = crypto.createHash('md5').update(relativePath).digest('hex').substring(0, HASH_LENGTH) + "_" + path.basename(filePath);
|
|
29
53
|
const timestamp = Date.now();
|
|
30
54
|
const backupFileName = `${safeName}_${timestamp}.bak`;
|
|
31
55
|
const backupFilePath = path.join(backupDir, backupFileName);
|
|
32
|
-
// Copy original file to backup
|
|
33
56
|
await fs.copyFile(filePath, backupFilePath);
|
|
34
|
-
// Enforce rolling backup limit per file
|
|
35
57
|
await this.enforceBackupLimit(backupDir, safeName);
|
|
36
58
|
}
|
|
37
59
|
/**
|
|
38
|
-
* Restores a file
|
|
39
|
-
*
|
|
60
|
+
* Restores a file from backup.
|
|
61
|
+
*
|
|
62
|
+
* @param filePath - Absolute path to file to restore
|
|
63
|
+
* @param projectRoot - Project root directory
|
|
64
|
+
* @param steps - Number of versions to roll back (default: 1)
|
|
65
|
+
* @returns Result with success status and restored backup name
|
|
40
66
|
*/
|
|
41
67
|
static async rollback(filePath, projectRoot, steps = 1) {
|
|
42
68
|
try {
|
|
43
|
-
const backupDir =
|
|
69
|
+
const backupDir = this.getBackupRoot(projectRoot);
|
|
44
70
|
const relativePath = path.relative(projectRoot, filePath);
|
|
45
|
-
const safeName = crypto.createHash('md5').update(relativePath).digest('hex').substring(0,
|
|
71
|
+
const safeName = crypto.createHash('md5').update(relativePath).digest('hex').substring(0, HASH_LENGTH) + "_" + path.basename(filePath);
|
|
46
72
|
let files;
|
|
47
73
|
try {
|
|
48
74
|
files = await fs.readdir(backupDir);
|
|
49
75
|
}
|
|
50
76
|
catch {
|
|
51
|
-
return { success: false, error:
|
|
77
|
+
return { success: false, error: `No backups directory found for project "${projectRoot}"` };
|
|
52
78
|
}
|
|
53
|
-
// Filter backups for this specific file and sort by timestamp descending (newest first)
|
|
54
79
|
const fileBackups = files
|
|
55
80
|
.filter(f => f.startsWith(safeName + "_") && f.endsWith(".bak"))
|
|
56
|
-
.sort((a, b) => b.localeCompare(a));
|
|
81
|
+
.sort((a, b) => b.localeCompare(a));
|
|
57
82
|
if (fileBackups.length === 0) {
|
|
58
|
-
return { success: false, error: `No backups found for file
|
|
83
|
+
return { success: false, error: `No backups found for file "${path.basename(filePath)}" in project "${projectRoot}"` };
|
|
59
84
|
}
|
|
60
|
-
// Determine which backup to restore
|
|
61
85
|
const targetIndex = Math.min(steps - 1, fileBackups.length - 1);
|
|
62
86
|
const targetBackup = fileBackups[targetIndex];
|
|
63
87
|
const backupFilePath = path.join(backupDir, targetBackup);
|
|
64
|
-
// Restore: copy backup back to original location
|
|
65
88
|
await fs.copyFile(backupFilePath, filePath);
|
|
66
89
|
return { success: true, restoredFrom: targetBackup };
|
|
67
90
|
}
|
|
@@ -70,11 +93,14 @@ export class BackupManager {
|
|
|
70
93
|
}
|
|
71
94
|
}
|
|
72
95
|
/**
|
|
73
|
-
*
|
|
96
|
+
* Removes all backups for a project.
|
|
97
|
+
*
|
|
98
|
+
* @param projectRoot - Project root directory
|
|
99
|
+
* @returns Result with success status and count of deleted files
|
|
74
100
|
*/
|
|
75
101
|
static async clean(projectRoot) {
|
|
76
102
|
try {
|
|
77
|
-
const backupDir =
|
|
103
|
+
const backupDir = this.getBackupRoot(projectRoot);
|
|
78
104
|
try {
|
|
79
105
|
const files = await fs.readdir(backupDir);
|
|
80
106
|
let deletedCount = 0;
|
|
@@ -94,7 +120,6 @@ export class BackupManager {
|
|
|
94
120
|
}
|
|
95
121
|
catch (e) {
|
|
96
122
|
if (e.code === 'ENOENT') {
|
|
97
|
-
// Directory doesn't exist
|
|
98
123
|
return { success: true, deletedCount: 0 };
|
|
99
124
|
}
|
|
100
125
|
throw e;
|
|
@@ -104,16 +129,12 @@ export class BackupManager {
|
|
|
104
129
|
return { success: false, error: error instanceof Error ? error.message : String(error) };
|
|
105
130
|
}
|
|
106
131
|
}
|
|
107
|
-
/**
|
|
108
|
-
* Private helper to delete oldest backups if exceeding limit
|
|
109
|
-
*/
|
|
110
132
|
static async enforceBackupLimit(backupDir, safeName) {
|
|
111
133
|
try {
|
|
112
134
|
const files = await fs.readdir(backupDir);
|
|
113
135
|
const fileBackups = files
|
|
114
136
|
.filter(f => f.startsWith(safeName + "_") && f.endsWith(".bak"))
|
|
115
|
-
.sort((a, b) => b.localeCompare(a));
|
|
116
|
-
// If we have more than MAX_BACKUPS, delete the oldest ones
|
|
137
|
+
.sort((a, b) => b.localeCompare(a));
|
|
117
138
|
if (fileBackups.length > this.MAX_BACKUPS) {
|
|
118
139
|
const backupsToDelete = fileBackups.slice(this.MAX_BACKUPS);
|
|
119
140
|
for (const backup of backupsToDelete) {
|
|
@@ -122,9 +143,30 @@ export class BackupManager {
|
|
|
122
143
|
}
|
|
123
144
|
}
|
|
124
145
|
catch (error) {
|
|
125
|
-
// Non-fatal, just logging silently
|
|
126
146
|
console.error(`Failed to enforce backup limits in ${backupDir}`, error);
|
|
127
147
|
}
|
|
128
148
|
}
|
|
149
|
+
/**
|
|
150
|
+
* Lists all available backups for a file.
|
|
151
|
+
*
|
|
152
|
+
* @param filePath - Absolute path to file
|
|
153
|
+
* @param projectRoot - Project root directory
|
|
154
|
+
* @returns Array of backup file paths, sorted newest first
|
|
155
|
+
*/
|
|
156
|
+
static async listBackups(filePath, projectRoot) {
|
|
157
|
+
try {
|
|
158
|
+
const backupDir = this.getBackupRoot(projectRoot);
|
|
159
|
+
const relativePath = path.relative(projectRoot, filePath);
|
|
160
|
+
const safeName = crypto.createHash('md5').update(relativePath).digest('hex').substring(0, HASH_LENGTH) + "_" + path.basename(filePath);
|
|
161
|
+
const files = await fs.readdir(backupDir);
|
|
162
|
+
return files
|
|
163
|
+
.filter(f => f.startsWith(safeName + "_") && f.endsWith(".bak"))
|
|
164
|
+
.map(f => path.join(backupDir, f))
|
|
165
|
+
.sort((a, b) => b.localeCompare(a));
|
|
166
|
+
}
|
|
167
|
+
catch {
|
|
168
|
+
return [];
|
|
169
|
+
}
|
|
170
|
+
}
|
|
129
171
|
}
|
|
130
172
|
//# sourceMappingURL=backupManager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"backupManager.js","sourceRoot":"","sources":["../../../src/utils/backupManager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"backupManager.js","sourceRoot":"","sources":["../../../src/utils/backupManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,23 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Constants - Centralized configuration
|
|
3
|
-
* v3.
|
|
3
|
+
* v3.6.0
|
|
4
4
|
*/
|
|
5
5
|
export declare const EXCLUDE_DIRS: string[];
|
|
6
6
|
export declare const SUPPORTED_EXTENSIONS: string[];
|
|
7
7
|
export declare const MAX_FILES_REPO_MAP = 500;
|
|
8
8
|
export declare const MAX_TOTAL_SIZE_BYTES: number;
|
|
9
9
|
export declare const MAX_FILE_SIZE_BYTES: number;
|
|
10
|
+
export declare const MAX_FILES_SEARCH = 2000;
|
|
10
11
|
export declare const OPERATION_TIMEOUT_MS = 30000;
|
|
11
|
-
export declare const MAX_CONCURRENT_OPS = 100;
|
|
12
12
|
export declare const REGEX_TIMEOUT_MS = 1000;
|
|
13
|
+
export declare const LOCK_TIMEOUT_MS = 30000;
|
|
14
|
+
export declare const LOCK_STALE_MS = 30000;
|
|
15
|
+
export declare const LOCK_RETRY_COUNT = 10;
|
|
16
|
+
export declare const LOCK_RETRY_MIN_MS = 100;
|
|
17
|
+
export declare const LOCK_RETRY_MAX_MS = 1000;
|
|
18
|
+
export declare const LOCK_RETRY_FACTOR = 2;
|
|
19
|
+
export declare const MAX_BACKUPS_PER_FILE = 5;
|
|
20
|
+
export declare const HASH_LENGTH = 8;
|
|
21
|
+
export declare const MAX_CONCURRENT_OPS = 100;
|
|
22
|
+
export declare const DIFF_CONTEXT_LINES = 3;
|
|
23
|
+
export declare const DIFF_MAX_FILE_LINES = 5000;
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Constants - Centralized configuration
|
|
3
|
-
* v3.
|
|
3
|
+
* v3.6.0
|
|
4
4
|
*/
|
|
5
|
+
// Directory exclusions
|
|
5
6
|
export const EXCLUDE_DIRS = [
|
|
6
7
|
"node_modules",
|
|
7
8
|
"dist",
|
|
@@ -12,6 +13,7 @@ export const EXCLUDE_DIRS = [
|
|
|
12
13
|
"coverage",
|
|
13
14
|
".nyc_output",
|
|
14
15
|
];
|
|
16
|
+
// Supported file extensions
|
|
15
17
|
export const SUPPORTED_EXTENSIONS = [
|
|
16
18
|
".ts",
|
|
17
19
|
".tsx",
|
|
@@ -24,10 +26,27 @@ export const SUPPORTED_EXTENSIONS = [
|
|
|
24
26
|
".php",
|
|
25
27
|
".dart",
|
|
26
28
|
];
|
|
29
|
+
// File and size limits
|
|
27
30
|
export const MAX_FILES_REPO_MAP = 500;
|
|
28
31
|
export const MAX_TOTAL_SIZE_BYTES = 50 * 1024 * 1024; // 50MB
|
|
29
32
|
export const MAX_FILE_SIZE_BYTES = 10 * 1024 * 1024; // 10MB
|
|
33
|
+
export const MAX_FILES_SEARCH = 2000;
|
|
34
|
+
// Timeout configurations
|
|
30
35
|
export const OPERATION_TIMEOUT_MS = 30000; // 30s
|
|
31
|
-
export const MAX_CONCURRENT_OPS = 100;
|
|
32
36
|
export const REGEX_TIMEOUT_MS = 1000; // 1s for regex operations
|
|
37
|
+
export const LOCK_TIMEOUT_MS = 30000; // 30s for file locks
|
|
38
|
+
export const LOCK_STALE_MS = 30000; // 30s stale detection
|
|
39
|
+
// Retry configurations
|
|
40
|
+
export const LOCK_RETRY_COUNT = 10;
|
|
41
|
+
export const LOCK_RETRY_MIN_MS = 100;
|
|
42
|
+
export const LOCK_RETRY_MAX_MS = 1000;
|
|
43
|
+
export const LOCK_RETRY_FACTOR = 2;
|
|
44
|
+
// Backup configurations
|
|
45
|
+
export const MAX_BACKUPS_PER_FILE = 5;
|
|
46
|
+
export const HASH_LENGTH = 8;
|
|
47
|
+
// Concurrency limits
|
|
48
|
+
export const MAX_CONCURRENT_OPS = 100;
|
|
49
|
+
// Diff configurations
|
|
50
|
+
export const DIFF_CONTEXT_LINES = 3;
|
|
51
|
+
export const DIFF_MAX_FILE_LINES = 5000;
|
|
33
52
|
//# sourceMappingURL=constants.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/utils/constants.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,cAAc;IACd,MAAM;IACN,OAAO;IACP,MAAM;IACN,QAAQ;IACR,cAAc;IACd,UAAU;IACV,aAAa;CACd,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,KAAK;IACL,MAAM;IACN,KAAK;IACL,MAAM;IACN,MAAM;IACN,MAAM;IACN,KAAK;IACL,MAAM;IACN,MAAM;IACN,OAAO;CACR,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,CAAC;AACtC,MAAM,CAAC,MAAM,oBAAoB,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO;AAC7D,MAAM,CAAC,MAAM,mBAAmB,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO;AAC5D,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,CAAC,CAAC,MAAM;AACjD,MAAM,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/utils/constants.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,uBAAuB;AACvB,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,cAAc;IACd,MAAM;IACN,OAAO;IACP,MAAM;IACN,QAAQ;IACR,cAAc;IACd,UAAU;IACV,aAAa;CACd,CAAC;AAEF,4BAA4B;AAC5B,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,KAAK;IACL,MAAM;IACN,KAAK;IACL,MAAM;IACN,MAAM;IACN,MAAM;IACN,KAAK;IACL,MAAM;IACN,MAAM;IACN,OAAO;CACR,CAAC;AAEF,uBAAuB;AACvB,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,CAAC;AACtC,MAAM,CAAC,MAAM,oBAAoB,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO;AAC7D,MAAM,CAAC,MAAM,mBAAmB,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO;AAC5D,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,CAAC;AAErC,yBAAyB;AACzB,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,CAAC,CAAC,MAAM;AACjD,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,CAAC,CAAC,0BAA0B;AAChE,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,CAAC,CAAC,qBAAqB;AAC3D,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,CAAC,CAAC,sBAAsB;AAE1D,uBAAuB;AACvB,MAAM,CAAC,MAAM,gBAAgB,GAAG,EAAE,CAAC;AACnC,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAG,CAAC;AACrC,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,CAAC;AACtC,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC;AAEnC,wBAAwB;AACxB,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC;AACtC,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAC;AAE7B,qBAAqB;AACrB,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,CAAC;AAEtC,sBAAsB;AACtB,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC;AACpC,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,CAAC"}
|
package/dist/src/utils/diff.d.ts
CHANGED
|
@@ -1,13 +1,43 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Diff
|
|
3
|
-
*
|
|
2
|
+
* Diff Utilities - v3.6.0
|
|
3
|
+
* Uses diff-match-patch for efficient diffing
|
|
4
4
|
*/
|
|
5
|
+
export interface DiffLine {
|
|
6
|
+
type: 'add' | 'remove' | 'context';
|
|
7
|
+
content: string;
|
|
8
|
+
lineNumber?: number;
|
|
9
|
+
}
|
|
5
10
|
/**
|
|
6
|
-
*
|
|
7
|
-
* Falls back to simple diff for
|
|
11
|
+
* Generates a unified diff using Myers algorithm.
|
|
12
|
+
* Falls back to simple diff for files exceeding line limit.
|
|
13
|
+
*
|
|
14
|
+
* @param oldText - Original file content
|
|
15
|
+
* @param newText - Modified file content
|
|
16
|
+
* @returns Unified diff in patch format
|
|
8
17
|
*/
|
|
9
|
-
export declare function generateUnifiedDiff(
|
|
18
|
+
export declare function generateUnifiedDiff(oldText: string, newText: string): string;
|
|
10
19
|
/**
|
|
11
|
-
*
|
|
20
|
+
* Generates a simple diff summary for large files.
|
|
21
|
+
*
|
|
22
|
+
* @param oldText - Original file content
|
|
23
|
+
* @param newText - Modified file content
|
|
24
|
+
* @returns Simple line count summary
|
|
12
25
|
*/
|
|
13
|
-
export declare function generateSimpleDiff(
|
|
26
|
+
export declare function generateSimpleDiff(oldText: string, newText: string): string;
|
|
27
|
+
/**
|
|
28
|
+
* Generates a compact diff showing only changes (no context).
|
|
29
|
+
*
|
|
30
|
+
* @param oldText - Original file content
|
|
31
|
+
* @param newText - Modified file content
|
|
32
|
+
* @returns Compact diff with + and - prefixes
|
|
33
|
+
*/
|
|
34
|
+
export declare function generateCompactDiff(oldText: string, newText: string): string;
|
|
35
|
+
/**
|
|
36
|
+
* Automatically selects compact or full diff based on size.
|
|
37
|
+
*
|
|
38
|
+
* @param oldText - Original file content
|
|
39
|
+
* @param newText - Modified file content
|
|
40
|
+
* @returns Compact diff if full diff exceeds threshold, otherwise full diff
|
|
41
|
+
*/
|
|
42
|
+
export declare function generateSmartDiff(oldText: string, newText: string): string;
|
|
43
|
+
export declare function lcs(lines1: string[], lines2: string[]): string[];
|