pushwork 1.0.3 → 1.0.5
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/README.md +8 -1
- package/bench/filesystem.bench.ts +78 -0
- package/bench/hashing.bench.ts +60 -0
- package/bench/move-detection.bench.ts +130 -0
- package/bench/runner.ts +49 -0
- package/dist/cli/commands.d.ts +15 -25
- package/dist/cli/commands.d.ts.map +1 -1
- package/dist/cli/commands.js +409 -519
- package/dist/cli/commands.js.map +1 -1
- package/dist/cli/output.d.ts +75 -0
- package/dist/cli/output.d.ts.map +1 -0
- package/dist/cli/output.js +182 -0
- package/dist/cli/output.js.map +1 -0
- package/dist/cli.js +119 -51
- package/dist/cli.js.map +1 -1
- package/dist/config/remote-manager.d.ts +65 -0
- package/dist/config/remote-manager.d.ts.map +1 -0
- package/dist/config/remote-manager.js +243 -0
- package/dist/config/remote-manager.js.map +1 -0
- package/dist/core/change-detection.d.ts +8 -0
- package/dist/core/change-detection.d.ts.map +1 -1
- package/dist/core/change-detection.js +63 -0
- package/dist/core/change-detection.js.map +1 -1
- package/dist/core/move-detection.d.ts +9 -48
- package/dist/core/move-detection.d.ts.map +1 -1
- package/dist/core/move-detection.js +53 -135
- package/dist/core/move-detection.js.map +1 -1
- package/dist/core/sync-engine.d.ts.map +1 -1
- package/dist/core/sync-engine.js +17 -85
- package/dist/core/sync-engine.js.map +1 -1
- package/dist/types/config.d.ts +45 -5
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/documents.d.ts +0 -1
- package/dist/types/documents.d.ts.map +1 -1
- package/dist/types/snapshot.d.ts +3 -0
- package/dist/types/snapshot.d.ts.map +1 -1
- package/dist/types/snapshot.js.map +1 -1
- package/dist/utils/fs.d.ts.map +1 -1
- package/dist/utils/fs.js +9 -33
- package/dist/utils/fs.js.map +1 -1
- package/dist/utils/index.d.ts +0 -1
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +0 -1
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/repo-factory.d.ts.map +1 -1
- package/dist/utils/repo-factory.js +18 -9
- package/dist/utils/repo-factory.js.map +1 -1
- package/dist/utils/string-similarity.d.ts +14 -0
- package/dist/utils/string-similarity.d.ts.map +1 -0
- package/dist/utils/string-similarity.js +43 -0
- package/dist/utils/string-similarity.js.map +1 -0
- package/package.json +10 -5
- package/src/cli/commands.ts +520 -697
- package/src/cli/output.ts +244 -0
- package/src/cli.ts +182 -73
- package/src/core/change-detection.ts +95 -0
- package/src/core/move-detection.ts +69 -177
- package/src/core/sync-engine.ts +17 -105
- package/src/types/config.ts +50 -7
- package/src/types/documents.ts +0 -1
- package/src/types/snapshot.ts +1 -0
- package/src/utils/fs.ts +9 -33
- package/src/utils/index.ts +0 -1
- package/src/utils/repo-factory.ts +21 -8
- package/src/utils/string-similarity.ts +54 -0
- package/src/utils/content-similarity.ts +0 -194
- package/test/unit/content-similarity.test.ts +0 -236
|
@@ -137,6 +137,27 @@ class ChangeDetector {
|
|
|
137
137
|
async detectRemoteChanges(snapshot) {
|
|
138
138
|
const changes = [];
|
|
139
139
|
for (const [relativePath, snapshotEntry] of snapshot.files.entries()) {
|
|
140
|
+
// CRITICAL FIX: Check if file still exists in remote directory listing
|
|
141
|
+
// Files can be removed from the directory without their document heads changing
|
|
142
|
+
const stillExistsInDirectory = await this.fileExistsInRemoteDirectory(snapshot.rootDirectoryUrl, relativePath);
|
|
143
|
+
if (!stillExistsInDirectory) {
|
|
144
|
+
// File was removed from remote directory listing
|
|
145
|
+
const localContent = await this.getLocalContent(relativePath);
|
|
146
|
+
// Only report as deleted if local file still exists
|
|
147
|
+
// (if local file is also deleted, detectLocalChanges handles it)
|
|
148
|
+
if (localContent !== null) {
|
|
149
|
+
changes.push({
|
|
150
|
+
path: relativePath,
|
|
151
|
+
changeType: types_1.ChangeType.REMOTE_ONLY,
|
|
152
|
+
fileType: types_1.FileType.TEXT,
|
|
153
|
+
localContent,
|
|
154
|
+
remoteContent: null, // File deleted remotely
|
|
155
|
+
localHead: snapshotEntry.head,
|
|
156
|
+
remoteHead: snapshotEntry.head,
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
continue;
|
|
160
|
+
}
|
|
140
161
|
const currentRemoteHead = await this.getCurrentRemoteHead(snapshotEntry.url);
|
|
141
162
|
if (!A.equals(currentRemoteHead, snapshotEntry.head)) {
|
|
142
163
|
// Remote document has changed
|
|
@@ -383,6 +404,48 @@ class ChangeDetector {
|
|
|
383
404
|
return types_1.ChangeType.BOTH_CHANGED;
|
|
384
405
|
}
|
|
385
406
|
}
|
|
407
|
+
/**
|
|
408
|
+
* Check if a file exists in the remote directory hierarchy
|
|
409
|
+
*/
|
|
410
|
+
async fileExistsInRemoteDirectory(rootDirectoryUrl, filePath) {
|
|
411
|
+
if (!rootDirectoryUrl)
|
|
412
|
+
return false;
|
|
413
|
+
const entry = await this.findFileInDirectoryHierarchy(rootDirectoryUrl, filePath);
|
|
414
|
+
return entry !== null;
|
|
415
|
+
}
|
|
416
|
+
/**
|
|
417
|
+
* Find a file in the directory hierarchy by path
|
|
418
|
+
*/
|
|
419
|
+
async findFileInDirectoryHierarchy(directoryUrl, filePath) {
|
|
420
|
+
try {
|
|
421
|
+
const pathParts = filePath.split("/");
|
|
422
|
+
let currentDirUrl = directoryUrl;
|
|
423
|
+
// Navigate through directories to find the parent directory
|
|
424
|
+
for (let i = 0; i < pathParts.length - 1; i++) {
|
|
425
|
+
const dirName = pathParts[i];
|
|
426
|
+
const dirHandle = await this.repo.find(currentDirUrl);
|
|
427
|
+
const dirDoc = await dirHandle.doc();
|
|
428
|
+
if (!dirDoc)
|
|
429
|
+
return null;
|
|
430
|
+
const subDirEntry = dirDoc.docs.find((entry) => entry.name === dirName && entry.type === "folder");
|
|
431
|
+
if (!subDirEntry)
|
|
432
|
+
return null;
|
|
433
|
+
currentDirUrl = subDirEntry.url;
|
|
434
|
+
}
|
|
435
|
+
// Now look for the file in the final directory
|
|
436
|
+
const fileName = pathParts[pathParts.length - 1];
|
|
437
|
+
const finalDirHandle = await this.repo.find(currentDirUrl);
|
|
438
|
+
const finalDirDoc = await finalDirHandle.doc();
|
|
439
|
+
if (!finalDirDoc)
|
|
440
|
+
return null;
|
|
441
|
+
const fileEntry = finalDirDoc.docs.find((entry) => entry.name === fileName && entry.type === "file");
|
|
442
|
+
return fileEntry || null;
|
|
443
|
+
}
|
|
444
|
+
catch (error) {
|
|
445
|
+
console.warn(`Failed to find file ${filePath} in directory hierarchy: ${error}`);
|
|
446
|
+
return null;
|
|
447
|
+
}
|
|
448
|
+
}
|
|
386
449
|
}
|
|
387
450
|
exports.ChangeDetector = ChangeDetector;
|
|
388
451
|
//# sourceMappingURL=change-detection.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"change-detection.js","sourceRoot":"","sources":["../../src/core/change-detection.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"change-detection.js","sourceRoot":"","sources":["../../src/core/change-detection.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import { SyncSnapshot, MoveCandidate } from "../types";
|
|
2
2
|
import { DetectedChange } from "./change-detection";
|
|
3
3
|
/**
|
|
4
|
-
*
|
|
4
|
+
* Simplified move detection engine
|
|
5
5
|
*/
|
|
6
6
|
export declare class MoveDetector {
|
|
7
|
-
private static readonly
|
|
8
|
-
private static readonly PROMPT_THRESHOLD;
|
|
7
|
+
private static readonly MOVE_THRESHOLD;
|
|
9
8
|
/**
|
|
10
9
|
* Detect file moves by analyzing deleted and created files
|
|
11
10
|
*/
|
|
@@ -14,59 +13,21 @@ export declare class MoveDetector {
|
|
|
14
13
|
remainingChanges: DetectedChange[];
|
|
15
14
|
}>;
|
|
16
15
|
/**
|
|
17
|
-
*
|
|
16
|
+
* Calculate similarity between two content pieces
|
|
17
|
+
* Optimized for speed while maintaining accuracy
|
|
18
18
|
*/
|
|
19
|
-
private
|
|
19
|
+
private calculateSimilarity;
|
|
20
20
|
/**
|
|
21
|
-
*
|
|
21
|
+
* Get representative samples from content (beginning, middle, end)
|
|
22
22
|
*/
|
|
23
|
-
|
|
24
|
-
autoMoves: MoveCandidate[];
|
|
25
|
-
promptMoves: MoveCandidate[];
|
|
26
|
-
lowConfidenceMoves: MoveCandidate[];
|
|
27
|
-
};
|
|
23
|
+
private getSamples;
|
|
28
24
|
/**
|
|
29
|
-
*
|
|
25
|
+
* Convert buffer to string (for text comparison)
|
|
30
26
|
*/
|
|
31
|
-
|
|
32
|
-
validMoves: MoveCandidate[];
|
|
33
|
-
conflicts: Array<{
|
|
34
|
-
moves: MoveCandidate[];
|
|
35
|
-
reason: string;
|
|
36
|
-
}>;
|
|
37
|
-
};
|
|
38
|
-
/**
|
|
39
|
-
* Apply move detection heuristics
|
|
40
|
-
*/
|
|
41
|
-
applyHeuristics(moves: MoveCandidate[]): MoveCandidate[];
|
|
42
|
-
/**
|
|
43
|
-
* Get directory path from file path
|
|
44
|
-
*/
|
|
45
|
-
private getDirectoryPath;
|
|
46
|
-
/**
|
|
47
|
-
* Get file extension from file path
|
|
48
|
-
*/
|
|
49
|
-
private getFileExtension;
|
|
50
|
-
/**
|
|
51
|
-
* Check if a move should be auto-applied
|
|
52
|
-
*/
|
|
53
|
-
shouldAutoApply(move: MoveCandidate): boolean;
|
|
54
|
-
/**
|
|
55
|
-
* Check if a move should prompt the user
|
|
56
|
-
*/
|
|
57
|
-
shouldPromptUser(move: MoveCandidate): boolean;
|
|
27
|
+
private bufferToString;
|
|
58
28
|
/**
|
|
59
29
|
* Format move for display
|
|
60
30
|
*/
|
|
61
31
|
formatMove(move: MoveCandidate): string;
|
|
62
|
-
/**
|
|
63
|
-
* Calculate move statistics
|
|
64
|
-
*/
|
|
65
|
-
calculateStats(moves: MoveCandidate[]): {
|
|
66
|
-
total: number;
|
|
67
|
-
auto: number;
|
|
68
|
-
prompt: number;
|
|
69
|
-
averageSimilarity: number;
|
|
70
|
-
};
|
|
71
32
|
}
|
|
72
33
|
//# sourceMappingURL=move-detection.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"move-detection.d.ts","sourceRoot":"","sources":["../../src/core/move-detection.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"move-detection.d.ts","sourceRoot":"","sources":["../../src/core/move-detection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAqB,MAAM,UAAU,CAAC;AAG1E,OAAO,EAAE,cAAc,EAAc,MAAM,oBAAoB,CAAC;AAEhE;;GAEG;AACH,qBAAa,YAAY;IAEvB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAO;IAE7C;;OAEG;IACG,WAAW,CACf,OAAO,EAAE,cAAc,EAAE,EACzB,QAAQ,EAAE,YAAY,EACtB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC;QAAE,KAAK,EAAE,aAAa,EAAE,CAAC;QAAC,gBAAgB,EAAE,cAAc,EAAE,CAAA;KAAE,CAAC;IAkE1E;;;OAGG;YACW,mBAAmB;IA0CjC;;OAEG;IACH,OAAO,CAAC,UAAU;IAkBlB;;OAEG;IACH,OAAO,CAAC,cAAc;IAItB;;OAEG;IACH,UAAU,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM;CAIxC"}
|
|
@@ -2,16 +2,16 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.MoveDetector = void 0;
|
|
4
4
|
const utils_1 = require("../utils");
|
|
5
|
+
const string_similarity_1 = require("../utils/string-similarity");
|
|
5
6
|
const change_detection_1 = require("./change-detection");
|
|
6
7
|
/**
|
|
7
|
-
*
|
|
8
|
+
* Simplified move detection engine
|
|
8
9
|
*/
|
|
9
10
|
class MoveDetector {
|
|
10
11
|
/**
|
|
11
12
|
* Detect file moves by analyzing deleted and created files
|
|
12
13
|
*/
|
|
13
14
|
async detectMoves(changes, snapshot, rootPath) {
|
|
14
|
-
// Separate deletions and creations
|
|
15
15
|
const deletedFiles = changes.filter((c) => !c.localContent && c.changeType === change_detection_1.ChangeType.LOCAL_ONLY);
|
|
16
16
|
const createdFiles = changes.filter((c) => c.localContent &&
|
|
17
17
|
c.changeType === change_detection_1.ChangeType.LOCAL_ONLY &&
|
|
@@ -24,163 +24,91 @@ class MoveDetector {
|
|
|
24
24
|
const usedDeletions = new Set();
|
|
25
25
|
// Find potential moves by comparing content
|
|
26
26
|
for (const deletedFile of deletedFiles) {
|
|
27
|
-
const deletedContent =
|
|
28
|
-
// CRITICAL: Check for null explicitly, not falsy values
|
|
29
|
-
// Empty strings "" are valid file content!
|
|
27
|
+
const deletedContent = deletedFile.remoteContent;
|
|
30
28
|
if (deletedContent === null)
|
|
31
29
|
continue;
|
|
32
30
|
let bestMatch = null;
|
|
33
31
|
for (const createdFile of createdFiles) {
|
|
34
32
|
if (usedCreations.has(createdFile.path))
|
|
35
33
|
continue;
|
|
36
|
-
// CRITICAL: Check for null explicitly, not falsy values
|
|
37
|
-
// Empty strings "" are valid file content!
|
|
38
34
|
if (createdFile.localContent === null)
|
|
39
35
|
continue;
|
|
40
|
-
const similarity = await
|
|
41
|
-
if (similarity >= MoveDetector.
|
|
36
|
+
const similarity = await this.calculateSimilarity(deletedContent, createdFile.localContent, deletedFile.path);
|
|
37
|
+
if (similarity >= MoveDetector.MOVE_THRESHOLD) {
|
|
42
38
|
if (!bestMatch || similarity > bestMatch.similarity) {
|
|
43
39
|
bestMatch = { file: createdFile, similarity };
|
|
44
40
|
}
|
|
45
41
|
}
|
|
46
42
|
}
|
|
47
43
|
if (bestMatch) {
|
|
48
|
-
|
|
49
|
-
// Always report the potential move (for logging/prompting)
|
|
44
|
+
// If we detected a move above threshold, we apply it
|
|
50
45
|
moves.push({
|
|
51
46
|
fromPath: deletedFile.path,
|
|
52
47
|
toPath: bestMatch.file.path,
|
|
53
48
|
similarity: bestMatch.similarity,
|
|
54
|
-
confidence,
|
|
55
|
-
// Capture new content (may include modifications)
|
|
56
49
|
newContent: bestMatch.file.localContent || undefined,
|
|
57
50
|
});
|
|
58
|
-
//
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
if (bestMatch.similarity >= MoveDetector.AUTO_THRESHOLD) {
|
|
62
|
-
usedCreations.add(bestMatch.file.path);
|
|
63
|
-
usedDeletions.add(deletedFile.path);
|
|
64
|
-
}
|
|
51
|
+
// Consume the deletion and creation (move replaces both)
|
|
52
|
+
usedCreations.add(bestMatch.file.path);
|
|
53
|
+
usedDeletions.add(deletedFile.path);
|
|
65
54
|
}
|
|
66
55
|
}
|
|
67
|
-
// Filter out changes that are part of moves
|
|
68
56
|
const remainingChanges = changes.filter((change) => !usedCreations.has(change.path) && !usedDeletions.has(change.path));
|
|
69
57
|
return { moves, remainingChanges };
|
|
70
58
|
}
|
|
71
59
|
/**
|
|
72
|
-
*
|
|
73
|
-
|
|
74
|
-
async getDeletedFileContent(deletedFile, snapshot) {
|
|
75
|
-
const snapshotEntry = snapshot.files.get(deletedFile.path);
|
|
76
|
-
if (!snapshotEntry)
|
|
77
|
-
return null;
|
|
78
|
-
// Return remote content if available, otherwise null
|
|
79
|
-
return deletedFile.remoteContent || null;
|
|
80
|
-
}
|
|
81
|
-
/**
|
|
82
|
-
* Group moves by confidence level
|
|
60
|
+
* Calculate similarity between two content pieces
|
|
61
|
+
* Optimized for speed while maintaining accuracy
|
|
83
62
|
*/
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
const
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
63
|
+
async calculateSimilarity(content1, content2, path) {
|
|
64
|
+
if (content1 === content2)
|
|
65
|
+
return 1.0;
|
|
66
|
+
// Early exit: size difference too large
|
|
67
|
+
const size1 = typeof content1 === "string" ? content1.length : content1.length;
|
|
68
|
+
const size2 = typeof content2 === "string" ? content2.length : content2.length;
|
|
69
|
+
const sizeDiff = Math.abs(size1 - size2) / Math.max(size1, size2);
|
|
70
|
+
if (sizeDiff > 0.5)
|
|
71
|
+
return 0.0;
|
|
72
|
+
// Binary files: hash mismatch = not a move
|
|
73
|
+
const isText = await (0, utils_1.isTextFile)(path);
|
|
74
|
+
if (!isText)
|
|
75
|
+
return 0.0;
|
|
76
|
+
// Text files: use string similarity
|
|
77
|
+
const str1 = typeof content1 === "string" ? content1 : this.bufferToString(content1);
|
|
78
|
+
const str2 = typeof content2 === "string" ? content2 : this.bufferToString(content2);
|
|
79
|
+
// For small files (<4KB), compare full content
|
|
80
|
+
if (size1 < 4096 && size2 < 4096) {
|
|
81
|
+
return (0, string_similarity_1.stringSimilarity)(str1, str2);
|
|
103
82
|
}
|
|
104
|
-
//
|
|
105
|
-
const
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
sourceMap.get(move.fromPath).push(move);
|
|
111
|
-
}
|
|
112
|
-
for (const move of moves) {
|
|
113
|
-
const destinationConflicts = destinationMap.get(move.toPath);
|
|
114
|
-
const sourceConflicts = sourceMap.get(move.fromPath);
|
|
115
|
-
if (destinationConflicts.length > 1) {
|
|
116
|
-
conflicts.push({
|
|
117
|
-
moves: destinationConflicts,
|
|
118
|
-
reason: `Multiple files moving to ${move.toPath}`,
|
|
119
|
-
});
|
|
120
|
-
}
|
|
121
|
-
else if (sourceConflicts.length > 1) {
|
|
122
|
-
conflicts.push({
|
|
123
|
-
moves: sourceConflicts,
|
|
124
|
-
reason: `File ${move.fromPath} has multiple potential destinations`,
|
|
125
|
-
});
|
|
126
|
-
}
|
|
127
|
-
else {
|
|
128
|
-
validMoves.push(move);
|
|
129
|
-
}
|
|
83
|
+
// For large files, sample 3 locations
|
|
84
|
+
const samples1 = this.getSamples(str1);
|
|
85
|
+
const samples2 = this.getSamples(str2);
|
|
86
|
+
let totalSimilarity = 0;
|
|
87
|
+
for (let i = 0; i < Math.min(samples1.length, samples2.length); i++) {
|
|
88
|
+
totalSimilarity += (0, string_similarity_1.stringSimilarity)(samples1[i], samples2[i]);
|
|
130
89
|
}
|
|
131
|
-
return
|
|
90
|
+
return totalSimilarity / Math.min(samples1.length, samples2.length);
|
|
132
91
|
}
|
|
133
92
|
/**
|
|
134
|
-
*
|
|
93
|
+
* Get representative samples from content (beginning, middle, end)
|
|
135
94
|
*/
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
const toDir = this.getDirectoryPath(move.toPath);
|
|
142
|
-
if (fromDir === toDir && move.similarity < 0.9) {
|
|
143
|
-
return false;
|
|
144
|
-
}
|
|
145
|
-
// Filter out moves with very different file extensions unless similarity is perfect
|
|
146
|
-
const fromExt = this.getFileExtension(move.fromPath);
|
|
147
|
-
const toExt = this.getFileExtension(move.toPath);
|
|
148
|
-
if (fromExt !== toExt && move.similarity < 1.0) {
|
|
149
|
-
return false;
|
|
150
|
-
}
|
|
151
|
-
return true;
|
|
152
|
-
})
|
|
153
|
-
.sort((a, b) => b.similarity - a.similarity); // Sort by similarity descending
|
|
154
|
-
}
|
|
155
|
-
/**
|
|
156
|
-
* Get directory path from file path
|
|
157
|
-
*/
|
|
158
|
-
getDirectoryPath(filePath) {
|
|
159
|
-
const lastSlash = filePath.lastIndexOf("/");
|
|
160
|
-
return lastSlash >= 0 ? filePath.substring(0, lastSlash) : "";
|
|
161
|
-
}
|
|
162
|
-
/**
|
|
163
|
-
* Get file extension from file path
|
|
164
|
-
*/
|
|
165
|
-
getFileExtension(filePath) {
|
|
166
|
-
const lastDot = filePath.lastIndexOf(".");
|
|
167
|
-
const lastSlash = filePath.lastIndexOf("/");
|
|
168
|
-
if (lastDot > lastSlash && lastDot >= 0) {
|
|
169
|
-
return filePath.substring(lastDot + 1).toLowerCase();
|
|
95
|
+
getSamples(str) {
|
|
96
|
+
const CHUNK_SIZE = 1024;
|
|
97
|
+
const length = str.length;
|
|
98
|
+
if (length <= CHUNK_SIZE) {
|
|
99
|
+
return [str];
|
|
170
100
|
}
|
|
171
|
-
return
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
shouldAutoApply(move) {
|
|
177
|
-
return move.confidence === "auto";
|
|
101
|
+
return [
|
|
102
|
+
str.slice(0, CHUNK_SIZE), // Beginning
|
|
103
|
+
str.slice(Math.floor(length / 2) - Math.floor(CHUNK_SIZE / 2), Math.floor(length / 2) + Math.floor(CHUNK_SIZE / 2)), // Middle
|
|
104
|
+
str.slice(-CHUNK_SIZE), // End
|
|
105
|
+
];
|
|
178
106
|
}
|
|
179
107
|
/**
|
|
180
|
-
*
|
|
108
|
+
* Convert buffer to string (for text comparison)
|
|
181
109
|
*/
|
|
182
|
-
|
|
183
|
-
return
|
|
110
|
+
bufferToString(buffer) {
|
|
111
|
+
return new TextDecoder().decode(buffer);
|
|
184
112
|
}
|
|
185
113
|
/**
|
|
186
114
|
* Format move for display
|
|
@@ -189,18 +117,8 @@ class MoveDetector {
|
|
|
189
117
|
const percentage = Math.round(move.similarity * 100);
|
|
190
118
|
return `${move.fromPath} → ${move.toPath} (${percentage}% similar)`;
|
|
191
119
|
}
|
|
192
|
-
/**
|
|
193
|
-
* Calculate move statistics
|
|
194
|
-
*/
|
|
195
|
-
calculateStats(moves) {
|
|
196
|
-
const total = moves.length;
|
|
197
|
-
const auto = moves.filter((m) => m.confidence === "auto").length;
|
|
198
|
-
const prompt = moves.filter((m) => m.confidence === "prompt").length;
|
|
199
|
-
const averageSimilarity = total > 0 ? moves.reduce((sum, m) => sum + m.similarity, 0) / total : 0;
|
|
200
|
-
return { total, auto, prompt, averageSimilarity };
|
|
201
|
-
}
|
|
202
120
|
}
|
|
203
121
|
exports.MoveDetector = MoveDetector;
|
|
204
|
-
|
|
205
|
-
MoveDetector.
|
|
122
|
+
// Single threshold: either it's a move or it's not
|
|
123
|
+
MoveDetector.MOVE_THRESHOLD = 0.7;
|
|
206
124
|
//# sourceMappingURL=move-detection.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"move-detection.js","sourceRoot":"","sources":["../../src/core/move-detection.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"move-detection.js","sourceRoot":"","sources":["../../src/core/move-detection.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync-engine.d.ts","sourceRoot":"","sources":["../../src/core/sync-engine.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sync-engine.d.ts","sourceRoot":"","sources":["../../src/core/sync-engine.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,IAAI,EAIL,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACL,YAAY,EACZ,UAAU,EAQV,aAAa,EACd,MAAM,UAAU,CAAC;AAgBlB,OAAO,EAAkB,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAGpE;;GAEG;AACH,qBAAa,UAAU;IASnB,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,QAAQ;IATlB,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,kBAAkB,CAAiB;IAC3C,OAAO,CAAC,eAAe,CAA4B;IACnD,OAAO,CAAC,mBAAmB,CAAC,CAAS;gBAG3B,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,MAAM,EACxB,eAAe,GAAE,MAAM,EAAO,EAC9B,kBAAkB,GAAE,OAAc,EAClC,mBAAmB,CAAC,EAAE,MAAM;IAS9B;;;;OAIG;IACH,OAAO,CAAC,aAAa;IAKrB;;OAEG;IACG,mBAAmB,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAS3D;;OAEG;IACG,WAAW,CAAC,MAAM,UAAQ,GAAG,OAAO,CAAC,UAAU,CAAC;IAuEtD;;OAEG;IACG,IAAI,CAAC,MAAM,UAAQ,GAAG,OAAO,CAAC,UAAU,CAAC;IAgN/C;;OAEG;YACW,gBAAgB;IAqD9B;;OAEG;YACW,iBAAiB;IAwC/B;;OAEG;YACW,wBAAwB;IA4DtC;;OAEG;YACW,wBAAwB;IA8DtC;;OAEG;YACW,iBAAiB;IAyF/B;;OAEG;YACW,gBAAgB;IAsC9B;;OAEG;YACW,gBAAgB;IA+D9B;;OAEG;YACW,gBAAgB;IA4B9B;;OAEG;YACW,kBAAkB;IAgEhC;;;OAGG;YACW,uBAAuB;IAqIrC;;OAEG;YACW,uBAAuB;IAkFrC;;OAEG;YACW,4BAA4B;IAkD1C;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAS/B;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC;QACzB,QAAQ,EAAE,YAAY,GAAG,IAAI,CAAC;QAC9B,UAAU,EAAE,OAAO,CAAC;QACpB,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,EAAE,IAAI,GAAG,IAAI,CAAC;KACvB,CAAC;IAsBF;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC;QAC9B,OAAO,EAAE,cAAc,EAAE,CAAC;QAC1B,KAAK,EAAE,aAAa,EAAE,CAAC;QACvB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IAsBF;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAiD7B;;OAEG;YACW,kBAAkB;CA8CjC"}
|