pushwork 1.0.4 → 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 +116 -50
- 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 -62
- 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 +178 -72
- package/src/core/change-detection.ts +95 -0
- package/src/core/move-detection.ts +69 -177
- package/src/core/sync-engine.ts +17 -78
- 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":"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;
|
|
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"}
|