pushwork 2.0.0-preview.4 → 2.0.0-preview.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.
Files changed (122) hide show
  1. package/dist/branches.d.ts +2 -1
  2. package/dist/branches.d.ts.map +1 -1
  3. package/dist/branches.js +23 -4
  4. package/dist/branches.js.map +1 -1
  5. package/dist/checkpoints.d.ts +41 -0
  6. package/dist/checkpoints.d.ts.map +1 -0
  7. package/dist/checkpoints.js +210 -0
  8. package/dist/checkpoints.js.map +1 -0
  9. package/dist/stash.d.ts +2 -0
  10. package/dist/stash.d.ts.map +1 -1
  11. package/dist/stash.js +1 -0
  12. package/dist/stash.js.map +1 -1
  13. package/package.json +2 -2
  14. package/dist/cli/commands.d.ts +0 -71
  15. package/dist/cli/commands.d.ts.map +0 -1
  16. package/dist/cli/commands.js +0 -794
  17. package/dist/cli/commands.js.map +0 -1
  18. package/dist/cli/index.d.ts +0 -2
  19. package/dist/cli/index.d.ts.map +0 -1
  20. package/dist/cli/index.js +0 -19
  21. package/dist/cli/index.js.map +0 -1
  22. package/dist/commands.d.ts +0 -58
  23. package/dist/commands.d.ts.map +0 -1
  24. package/dist/commands.js +0 -975
  25. package/dist/commands.js.map +0 -1
  26. package/dist/config/index.d.ts +0 -71
  27. package/dist/config/index.d.ts.map +0 -1
  28. package/dist/config/index.js +0 -314
  29. package/dist/config/index.js.map +0 -1
  30. package/dist/core/change-detection.d.ts +0 -80
  31. package/dist/core/change-detection.d.ts.map +0 -1
  32. package/dist/core/change-detection.js +0 -560
  33. package/dist/core/change-detection.js.map +0 -1
  34. package/dist/core/config.d.ts +0 -81
  35. package/dist/core/config.d.ts.map +0 -1
  36. package/dist/core/config.js +0 -304
  37. package/dist/core/config.js.map +0 -1
  38. package/dist/core/index.d.ts +0 -6
  39. package/dist/core/index.d.ts.map +0 -1
  40. package/dist/core/index.js +0 -22
  41. package/dist/core/index.js.map +0 -1
  42. package/dist/core/move-detection.d.ts +0 -34
  43. package/dist/core/move-detection.d.ts.map +0 -1
  44. package/dist/core/move-detection.js +0 -128
  45. package/dist/core/move-detection.js.map +0 -1
  46. package/dist/core/snapshot.d.ts +0 -105
  47. package/dist/core/snapshot.d.ts.map +0 -1
  48. package/dist/core/snapshot.js +0 -254
  49. package/dist/core/snapshot.js.map +0 -1
  50. package/dist/core/sync-engine.d.ts +0 -177
  51. package/dist/core/sync-engine.d.ts.map +0 -1
  52. package/dist/core/sync-engine.js +0 -1471
  53. package/dist/core/sync-engine.js.map +0 -1
  54. package/dist/types/config.d.ts +0 -102
  55. package/dist/types/config.d.ts.map +0 -1
  56. package/dist/types/config.js +0 -10
  57. package/dist/types/config.js.map +0 -1
  58. package/dist/types/documents.d.ts +0 -88
  59. package/dist/types/documents.d.ts.map +0 -1
  60. package/dist/types/documents.js +0 -23
  61. package/dist/types/documents.js.map +0 -1
  62. package/dist/types/index.d.ts +0 -4
  63. package/dist/types/index.d.ts.map +0 -1
  64. package/dist/types/index.js +0 -20
  65. package/dist/types/index.js.map +0 -1
  66. package/dist/types/snapshot.d.ts +0 -64
  67. package/dist/types/snapshot.d.ts.map +0 -1
  68. package/dist/types/snapshot.js +0 -3
  69. package/dist/types/snapshot.js.map +0 -1
  70. package/dist/utils/content-similarity.d.ts +0 -53
  71. package/dist/utils/content-similarity.d.ts.map +0 -1
  72. package/dist/utils/content-similarity.js +0 -155
  73. package/dist/utils/content-similarity.js.map +0 -1
  74. package/dist/utils/content.d.ts +0 -10
  75. package/dist/utils/content.d.ts.map +0 -1
  76. package/dist/utils/content.js +0 -35
  77. package/dist/utils/content.js.map +0 -1
  78. package/dist/utils/directory.d.ts +0 -24
  79. package/dist/utils/directory.d.ts.map +0 -1
  80. package/dist/utils/directory.js +0 -56
  81. package/dist/utils/directory.js.map +0 -1
  82. package/dist/utils/fs.d.ts +0 -74
  83. package/dist/utils/fs.d.ts.map +0 -1
  84. package/dist/utils/fs.js +0 -298
  85. package/dist/utils/fs.js.map +0 -1
  86. package/dist/utils/index.d.ts +0 -5
  87. package/dist/utils/index.d.ts.map +0 -1
  88. package/dist/utils/index.js +0 -21
  89. package/dist/utils/index.js.map +0 -1
  90. package/dist/utils/mime-types.d.ts +0 -13
  91. package/dist/utils/mime-types.d.ts.map +0 -1
  92. package/dist/utils/mime-types.js +0 -247
  93. package/dist/utils/mime-types.js.map +0 -1
  94. package/dist/utils/network-sync.d.ts +0 -30
  95. package/dist/utils/network-sync.d.ts.map +0 -1
  96. package/dist/utils/network-sync.js +0 -391
  97. package/dist/utils/network-sync.js.map +0 -1
  98. package/dist/utils/node-polyfills.d.ts +0 -9
  99. package/dist/utils/node-polyfills.d.ts.map +0 -1
  100. package/dist/utils/node-polyfills.js +0 -9
  101. package/dist/utils/node-polyfills.js.map +0 -1
  102. package/dist/utils/output.d.ts +0 -129
  103. package/dist/utils/output.d.ts.map +0 -1
  104. package/dist/utils/output.js +0 -375
  105. package/dist/utils/output.js.map +0 -1
  106. package/dist/utils/repo-factory.d.ts +0 -15
  107. package/dist/utils/repo-factory.d.ts.map +0 -1
  108. package/dist/utils/repo-factory.js +0 -156
  109. package/dist/utils/repo-factory.js.map +0 -1
  110. package/dist/utils/string-similarity.d.ts +0 -14
  111. package/dist/utils/string-similarity.d.ts.map +0 -1
  112. package/dist/utils/string-similarity.js +0 -43
  113. package/dist/utils/string-similarity.js.map +0 -1
  114. package/dist/utils/text-diff.d.ts +0 -37
  115. package/dist/utils/text-diff.d.ts.map +0 -1
  116. package/dist/utils/text-diff.js +0 -131
  117. package/dist/utils/text-diff.js.map +0 -1
  118. package/dist/utils/trace.d.ts +0 -19
  119. package/dist/utils/trace.d.ts.map +0 -1
  120. package/dist/utils/trace.js +0 -68
  121. package/dist/utils/trace.js.map +0 -1
  122. package/patches/@automerge__automerge-repo@2.6.0-subduction.15.patch +0 -26
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,YAAY,EACZ,eAAe,EAGhB,MAAM,UAAU,CAAC;AAGlB;;GAEG;AACH,qBAAa,aAAa;IAMZ,OAAO,CAAC,UAAU,CAAC;IAL/B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAe;IACxD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAiB;IAExD,MAAM,CAAC,QAAQ,CAAC,UAAU,eAAe;gBAErB,UAAU,CAAC,EAAE,MAAM,YAAA;IAEvC;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAQ3B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAW1B;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAehD;;OAEG;IACG,UAAU,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAYrD;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;IAmB7C;;OAEG;IACG,IAAI,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBlD,OAAO,CAAC,sBAAsB;IAkB9B;;OAEG;IACH,yBAAyB,IAAI,eAAe;IAmB5C;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,eAAe,CAAC;IAkB3C;;;OAGG;IACG,uBAAuB,CAC3B,SAAS,GAAE,OAAO,CAAC,eAAe,CAAM,GACvC,OAAO,CAAC,eAAe,CAAC;IAM3B;;OAEG;IACH,OAAO,CAAC,YAAY;IAyCpB;;OAEG;IACG,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAK1C;;OAEG;IACG,kBAAkB,IAAI,OAAO,CAAC,OAAO,CAAC;IAI5C;;OAEG;IACG,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC;IAK3C;;OAEG;IACG,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAiB7C;;OAEG;IACG,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAsB1D;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,eAAe,GAAG;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE;CAiBxE"}
@@ -1,304 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.ConfigManager = void 0;
37
- const fs = __importStar(require("fs/promises"));
38
- const path = __importStar(require("path"));
39
- const os = __importStar(require("os"));
40
- const types_1 = require("../types");
41
- const utils_1 = require("../utils");
42
- /**
43
- * Configuration manager for pushwork
44
- */
45
- class ConfigManager {
46
- constructor(workingDir) {
47
- this.workingDir = workingDir;
48
- }
49
- /**
50
- * Get global configuration path
51
- */
52
- getGlobalConfigPath() {
53
- return path.join(os.homedir(), ConfigManager.GLOBAL_CONFIG_DIR, ConfigManager.CONFIG_FILENAME);
54
- }
55
- /**
56
- * Get local configuration path
57
- */
58
- getLocalConfigPath() {
59
- if (!this.workingDir) {
60
- throw new Error("Working directory not set for local config");
61
- }
62
- return path.join(this.workingDir, ConfigManager.CONFIG_DIR, ConfigManager.CONFIG_FILENAME);
63
- }
64
- /**
65
- * Load global configuration
66
- */
67
- async loadGlobal() {
68
- try {
69
- const configPath = this.getGlobalConfigPath();
70
- if (!(await (0, utils_1.pathExists)(configPath))) {
71
- return null;
72
- }
73
- const content = await fs.readFile(configPath, "utf8");
74
- return JSON.parse(content);
75
- }
76
- catch (error) {
77
- // Failed to load global config
78
- return null;
79
- }
80
- }
81
- /**
82
- * Save global configuration
83
- */
84
- async saveGlobal(config) {
85
- try {
86
- const configPath = this.getGlobalConfigPath();
87
- await (0, utils_1.ensureDirectoryExists)(path.dirname(configPath));
88
- const content = JSON.stringify(config, null, 2);
89
- await fs.writeFile(configPath, content, "utf8");
90
- }
91
- catch (error) {
92
- throw new Error(`Failed to save global config: ${error}`);
93
- }
94
- }
95
- /**
96
- * Load local/directory configuration
97
- */
98
- async load() {
99
- if (!this.workingDir) {
100
- return null;
101
- }
102
- try {
103
- const configPath = this.getLocalConfigPath();
104
- if (!(await (0, utils_1.pathExists)(configPath))) {
105
- return null;
106
- }
107
- const content = await fs.readFile(configPath, "utf8");
108
- return JSON.parse(content);
109
- }
110
- catch (error) {
111
- // Failed to load local config
112
- return null;
113
- }
114
- }
115
- /**
116
- * Save local/directory configuration
117
- */
118
- async save(config) {
119
- if (!this.workingDir) {
120
- throw new Error("Working directory not set for local config");
121
- }
122
- try {
123
- const configPath = this.getLocalConfigPath();
124
- await (0, utils_1.ensureDirectoryExists)(path.dirname(configPath));
125
- const content = JSON.stringify(config, null, 2);
126
- await fs.writeFile(configPath, content, "utf8");
127
- }
128
- catch (error) {
129
- throw new Error(`Failed to save local config: ${error}`);
130
- }
131
- }
132
- getDefaultGlobalConfig() {
133
- return {
134
- exclude_patterns: [
135
- ".git",
136
- "node_modules",
137
- "*.tmp",
138
- ".DS_Store",
139
- ".pushwork",
140
- ],
141
- artifact_directories: ["dist"],
142
- sync_server: types_1.DEFAULT_SYNC_SERVER,
143
- sync_server_storage_id: types_1.DEFAULT_SYNC_SERVER_STORAGE_ID,
144
- sync: {
145
- move_detection_threshold: 0.7,
146
- },
147
- };
148
- }
149
- /**
150
- * Get default configuration
151
- */
152
- getDefaultDirectoryConfig() {
153
- return {
154
- sync_enabled: true,
155
- sync_server: types_1.DEFAULT_SYNC_SERVER,
156
- sync_server_storage_id: types_1.DEFAULT_SYNC_SERVER_STORAGE_ID,
157
- exclude_patterns: [
158
- ".git",
159
- "node_modules",
160
- "*.tmp",
161
- ".pushwork",
162
- ".DS_Store",
163
- ],
164
- artifact_directories: ["dist"],
165
- sync: {
166
- move_detection_threshold: 0.7,
167
- },
168
- };
169
- }
170
- /**
171
- * Get merged configuration (global + local)
172
- */
173
- async getMerged() {
174
- const globalConfig = await this.loadGlobal();
175
- const localConfig = await this.load();
176
- // Merge configurations: default < global < local
177
- let merged = this.getDefaultDirectoryConfig();
178
- if (globalConfig) {
179
- merged = this.mergeConfigs(merged, globalConfig);
180
- }
181
- if (localConfig) {
182
- merged = this.mergeConfigs(merged, localConfig);
183
- }
184
- return merged;
185
- }
186
- /**
187
- * Initialize with CLI option overrides
188
- * Creates a new config with defaults + CLI overrides and saves it
189
- */
190
- async initializeWithOverrides(overrides = {}) {
191
- const config = this.mergeConfigs(this.getDefaultDirectoryConfig(), overrides);
192
- await this.save(config);
193
- return config;
194
- }
195
- /**
196
- * Merge two configuration objects
197
- */
198
- mergeConfigs(base, override) {
199
- const merged = { ...base };
200
- if ("sync_server" in override && override.sync_server !== undefined) {
201
- merged.sync_server = override.sync_server;
202
- }
203
- if ("sync_server_storage_id" in override &&
204
- override.sync_server_storage_id !== undefined) {
205
- merged.sync_server_storage_id = override.sync_server_storage_id;
206
- }
207
- if ("subduction" in override && override.subduction !== undefined) {
208
- merged.subduction = override.subduction;
209
- }
210
- if ("sync_enabled" in override && override.sync_enabled !== undefined) {
211
- merged.sync_enabled = override.sync_enabled;
212
- }
213
- // Handle GlobalConfig structure
214
- if ("exclude_patterns" in override && override.exclude_patterns) {
215
- merged.exclude_patterns = override.exclude_patterns;
216
- }
217
- if ("artifact_directories" in override && override.artifact_directories) {
218
- merged.artifact_directories = override.artifact_directories;
219
- }
220
- if ("sync" in override && override.sync) {
221
- merged.sync = { ...merged.sync, ...override.sync };
222
- }
223
- return merged;
224
- }
225
- /**
226
- * Create default global configuration
227
- */
228
- async createDefaultGlobal() {
229
- const defaultGlobal = this.getDefaultGlobalConfig();
230
- await this.saveGlobal(defaultGlobal);
231
- }
232
- /**
233
- * Check if global configuration exists
234
- */
235
- async globalConfigExists() {
236
- return await (0, utils_1.pathExists)(this.getGlobalConfigPath());
237
- }
238
- /**
239
- * Check if local configuration exists
240
- */
241
- async localConfigExists() {
242
- if (!this.workingDir)
243
- return false;
244
- return await (0, utils_1.pathExists)(this.getLocalConfigPath());
245
- }
246
- /**
247
- * Get configuration value by path (e.g., 'sync.move_detection_threshold')
248
- */
249
- async getValue(keyPath) {
250
- const config = await this.getMerged();
251
- const keys = keyPath.split(".");
252
- let value = config;
253
- for (const key of keys) {
254
- if (value && typeof value === "object" && key in value) {
255
- value = value[key];
256
- }
257
- else {
258
- return undefined;
259
- }
260
- }
261
- return value;
262
- }
263
- /**
264
- * Set configuration value by path
265
- */
266
- async setValue(keyPath, value) {
267
- const config = (await this.load()) || {};
268
- const keys = keyPath.split(".");
269
- let current = config;
270
- // Navigate to the parent of the target key
271
- for (let i = 0; i < keys.length - 1; i++) {
272
- const key = keys[i];
273
- if (!(key in current) || typeof current[key] !== "object") {
274
- current[key] = {};
275
- }
276
- current = current[key];
277
- }
278
- // Set the value
279
- const finalKey = keys[keys.length - 1];
280
- current[finalKey] = value;
281
- await this.save(config);
282
- }
283
- /**
284
- * Validate configuration
285
- */
286
- validate(config) {
287
- const errors = [];
288
- if (config.sync?.move_detection_threshold !== undefined) {
289
- if (config.sync.move_detection_threshold < 0 ||
290
- config.sync.move_detection_threshold > 1) {
291
- errors.push("move_detection_threshold must be between 0 and 1");
292
- }
293
- }
294
- return {
295
- valid: errors.length === 0,
296
- errors,
297
- };
298
- }
299
- }
300
- exports.ConfigManager = ConfigManager;
301
- ConfigManager.GLOBAL_CONFIG_DIR = ".pushwork";
302
- ConfigManager.CONFIG_FILENAME = "config.json";
303
- ConfigManager.CONFIG_DIR = ".pushwork";
304
- //# sourceMappingURL=config.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"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"}
@@ -1,6 +0,0 @@
1
- export * from "./snapshot";
2
- export * from "./change-detection";
3
- export * from "./move-detection";
4
- export * from "./sync-engine";
5
- export * from "./config";
6
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC"}
@@ -1,22 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./snapshot"), exports);
18
- __exportStar(require("./change-detection"), exports);
19
- __exportStar(require("./move-detection"), exports);
20
- __exportStar(require("./sync-engine"), exports);
21
- __exportStar(require("./config"), exports);
22
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6CAA2B;AAC3B,qDAAmC;AACnC,mDAAiC;AACjC,gDAA8B;AAC9B,2CAAyB"}
@@ -1,34 +0,0 @@
1
- import { SyncSnapshot, MoveCandidate } from "../types";
2
- import { DetectedChange } from "../types";
3
- /**
4
- * Simplified move detection engine
5
- */
6
- export declare class MoveDetector {
7
- private readonly moveThreshold;
8
- constructor(moveThreshold?: number);
9
- /**
10
- * Detect file moves by analyzing deleted and created files
11
- */
12
- detectMoves(changes: DetectedChange[], snapshot: SyncSnapshot): Promise<{
13
- moves: MoveCandidate[];
14
- remainingChanges: DetectedChange[];
15
- }>;
16
- /**
17
- * Calculate similarity between two content pieces
18
- * Optimized for speed while maintaining accuracy
19
- */
20
- private calculateSimilarity;
21
- /**
22
- * Get representative samples from content (beginning, middle, end)
23
- */
24
- private getSamples;
25
- /**
26
- * Convert buffer to string (for text comparison)
27
- */
28
- private bufferToString;
29
- /**
30
- * Format move for display
31
- */
32
- formatMove(move: MoveCandidate): string;
33
- }
34
- //# sourceMappingURL=move-detection.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"move-detection.d.ts","sourceRoot":"","sources":["../../src/core/move-detection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAGvD,OAAO,EAAc,cAAc,EAAE,MAAM,UAAU,CAAC;AAEtD;;GAEG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;gBAE3B,aAAa,GAAE,MAAY;IAIvC;;OAEG;IACG,WAAW,CACf,OAAO,EAAE,cAAc,EAAE,EACzB,QAAQ,EAAE,YAAY,GACrB,OAAO,CAAC;QAAE,KAAK,EAAE,aAAa,EAAE,CAAC;QAAC,gBAAgB,EAAE,cAAc,EAAE,CAAA;KAAE,CAAC;IAkE1E;;;OAGG;YACW,mBAAmB;IA4CjC;;OAEG;IACH,OAAO,CAAC,UAAU;IAkBlB;;OAEG;IACH,OAAO,CAAC,cAAc;IAItB;;OAEG;IACH,UAAU,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM;CAIxC"}
@@ -1,128 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.MoveDetector = void 0;
4
- const utils_1 = require("../utils");
5
- const string_similarity_1 = require("../utils/string-similarity");
6
- const types_1 = require("../types");
7
- /**
8
- * Simplified move detection engine
9
- */
10
- class MoveDetector {
11
- constructor(moveThreshold = 0.7) {
12
- this.moveThreshold = moveThreshold;
13
- }
14
- /**
15
- * Detect file moves by analyzing deleted and created files
16
- */
17
- async detectMoves(changes, snapshot) {
18
- const deletedFiles = changes.filter((c) => !c.localContent && c.changeType === types_1.ChangeType.LOCAL_ONLY);
19
- const createdFiles = changes.filter((c) => c.localContent &&
20
- c.changeType === types_1.ChangeType.LOCAL_ONLY &&
21
- !snapshot.files.has(c.path));
22
- if (deletedFiles.length === 0 || createdFiles.length === 0) {
23
- return { moves: [], remainingChanges: changes };
24
- }
25
- const moves = [];
26
- const usedCreations = new Set();
27
- const usedDeletions = new Set();
28
- // Find potential moves by comparing content
29
- for (const deletedFile of deletedFiles) {
30
- const deletedContent = deletedFile.remoteContent;
31
- if (deletedContent === null)
32
- continue;
33
- let bestMatch = null;
34
- for (const createdFile of createdFiles) {
35
- if (usedCreations.has(createdFile.path))
36
- continue;
37
- if (createdFile.localContent === null)
38
- continue;
39
- const similarity = await this.calculateSimilarity(deletedContent, createdFile.localContent, deletedFile.path);
40
- if (similarity >= this.moveThreshold) {
41
- if (!bestMatch || similarity > bestMatch.similarity) {
42
- bestMatch = { file: createdFile, similarity };
43
- }
44
- }
45
- }
46
- if (bestMatch) {
47
- // If we detected a move above threshold, we apply it
48
- moves.push({
49
- fromPath: deletedFile.path,
50
- toPath: bestMatch.file.path,
51
- similarity: bestMatch.similarity,
52
- newContent: bestMatch.file.localContent || undefined,
53
- });
54
- // Consume the deletion and creation (move replaces both)
55
- usedCreations.add(bestMatch.file.path);
56
- usedDeletions.add(deletedFile.path);
57
- }
58
- }
59
- const remainingChanges = changes.filter((change) => !usedCreations.has(change.path) && !usedDeletions.has(change.path));
60
- return { moves, remainingChanges };
61
- }
62
- /**
63
- * Calculate similarity between two content pieces
64
- * Optimized for speed while maintaining accuracy
65
- */
66
- async calculateSimilarity(content1, content2, path) {
67
- if (content1 === content2)
68
- return 1.0;
69
- // Early exit: size difference too large
70
- const size1 = typeof content1 === "string" ? content1.length : content1.length;
71
- const size2 = typeof content2 === "string" ? content2.length : content2.length;
72
- const maxSize = Math.max(size1, size2);
73
- if (maxSize === 0)
74
- return 1.0;
75
- const sizeDiff = Math.abs(size1 - size2) / maxSize;
76
- if (sizeDiff > 0.5)
77
- return 0.0;
78
- // Binary files: hash mismatch = not a move
79
- const isText = await (0, utils_1.isTextFile)(path);
80
- if (!isText)
81
- return 0.0;
82
- // Text files: use string similarity
83
- const str1 = typeof content1 === "string" ? content1 : this.bufferToString(content1);
84
- const str2 = typeof content2 === "string" ? content2 : this.bufferToString(content2);
85
- // For small files (<4KB), compare full content
86
- if (size1 < 4096 && size2 < 4096) {
87
- return (0, string_similarity_1.stringSimilarity)(str1, str2);
88
- }
89
- // For large files, sample 3 locations
90
- const samples1 = this.getSamples(str1);
91
- const samples2 = this.getSamples(str2);
92
- let totalSimilarity = 0;
93
- for (let i = 0; i < Math.min(samples1.length, samples2.length); i++) {
94
- totalSimilarity += (0, string_similarity_1.stringSimilarity)(samples1[i], samples2[i]);
95
- }
96
- return totalSimilarity / Math.min(samples1.length, samples2.length);
97
- }
98
- /**
99
- * Get representative samples from content (beginning, middle, end)
100
- */
101
- getSamples(str) {
102
- const CHUNK_SIZE = 1024;
103
- const length = str.length;
104
- if (length <= CHUNK_SIZE) {
105
- return [str];
106
- }
107
- return [
108
- str.slice(0, CHUNK_SIZE), // Beginning
109
- str.slice(Math.floor(length / 2) - Math.floor(CHUNK_SIZE / 2), Math.floor(length / 2) + Math.floor(CHUNK_SIZE / 2)), // Middle
110
- str.slice(-CHUNK_SIZE), // End
111
- ];
112
- }
113
- /**
114
- * Convert buffer to string (for text comparison)
115
- */
116
- bufferToString(buffer) {
117
- return new TextDecoder().decode(buffer);
118
- }
119
- /**
120
- * Format move for display
121
- */
122
- formatMove(move) {
123
- const percentage = Math.round(move.similarity * 100);
124
- return `${move.fromPath} → ${move.toPath} (${percentage}% similar)`;
125
- }
126
- }
127
- exports.MoveDetector = MoveDetector;
128
- //# sourceMappingURL=move-detection.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"move-detection.js","sourceRoot":"","sources":["../../src/core/move-detection.ts"],"names":[],"mappings":"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"}
@@ -1,105 +0,0 @@
1
- /**
2
- * pvh TODO: the files & directories could be unified into a single map of entries with a type field
3
- */
4
- import { SyncSnapshot, SnapshotFileEntry, SnapshotDirectoryEntry } from "../types";
5
- /**
6
- * Manages sync snapshots for local state tracking
7
- */
8
- export declare class SnapshotManager {
9
- private rootPath;
10
- private static readonly SNAPSHOT_FILENAME;
11
- private static readonly SYNC_TOOL_DIR;
12
- constructor(rootPath: string);
13
- /**
14
- * Get path to sync tool directory
15
- */
16
- private getSyncToolDir;
17
- /**
18
- * Get path to snapshot file
19
- */
20
- private getSnapshotPath;
21
- /**
22
- * Check if snapshot exists
23
- */
24
- exists(): Promise<boolean>;
25
- /**
26
- * Load snapshot from disk
27
- */
28
- load(): Promise<SyncSnapshot | null>;
29
- /**
30
- * Save snapshot to disk
31
- */
32
- save(snapshot: SyncSnapshot): Promise<void>;
33
- /**
34
- * Create empty snapshot
35
- */
36
- createEmpty(): SyncSnapshot;
37
- /**
38
- * Update file entry in snapshot
39
- */
40
- updateFileEntry(snapshot: SyncSnapshot, relativePath: string, entry: SnapshotFileEntry): void;
41
- /**
42
- * Update directory entry in snapshot
43
- */
44
- updateDirectoryEntry(snapshot: SyncSnapshot, relativePath: string, entry: SnapshotDirectoryEntry): void;
45
- /**
46
- * Remove file entry from snapshot
47
- */
48
- removeFileEntry(snapshot: SyncSnapshot, relativePath: string): void;
49
- /**
50
- * Remove directory entry from snapshot
51
- */
52
- removeDirectoryEntry(snapshot: SyncSnapshot, relativePath: string): void;
53
- /**
54
- * Get all file paths in snapshot
55
- */
56
- getFilePaths(snapshot: SyncSnapshot): string[];
57
- /**
58
- * Get all directory paths in snapshot
59
- */
60
- getDirectoryPaths(snapshot: SyncSnapshot): string[];
61
- /**
62
- * Get file entry by path
63
- */
64
- getFileEntry(snapshot: SyncSnapshot, relativePath: string): SnapshotFileEntry | undefined;
65
- /**
66
- * Get directory entry by path
67
- */
68
- getDirectoryEntry(snapshot: SyncSnapshot, relativePath: string): SnapshotDirectoryEntry | undefined;
69
- /**
70
- * Check if path is tracked in snapshot
71
- */
72
- isTracked(snapshot: SyncSnapshot, relativePath: string): boolean;
73
- /**
74
- * Get snapshot statistics
75
- */
76
- getStats(snapshot: SyncSnapshot): {
77
- files: number;
78
- directories: number;
79
- timestamp: Date;
80
- };
81
- /**
82
- * Validate snapshot integrity
83
- */
84
- validate(snapshot: SyncSnapshot): {
85
- valid: boolean;
86
- errors: string[];
87
- };
88
- /**
89
- * Convert snapshot to serializable format
90
- */
91
- private serializeSnapshot;
92
- /**
93
- * Convert serializable format back to snapshot
94
- */
95
- private deserializeSnapshot;
96
- /**
97
- * Clear all snapshot data
98
- */
99
- clear(snapshot: SyncSnapshot): void;
100
- /**
101
- * Clone snapshot for safe manipulation
102
- */
103
- clone(snapshot: SyncSnapshot): SyncSnapshot;
104
- }
105
- //# sourceMappingURL=snapshot.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"snapshot.d.ts","sourceRoot":"","sources":["../../src/core/snapshot.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EACL,YAAY,EAEZ,iBAAiB,EACjB,sBAAsB,EACvB,MAAM,UAAU,CAAC;AAIlB;;GAEG;AACH,qBAAa,eAAe;IAId,OAAO,CAAC,QAAQ;IAH5B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAmB;IAC5D,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAe;gBAEhC,QAAQ,EAAE,MAAM;IAEpC;;OAEG;IACH,OAAO,CAAC,cAAc;IAItB;;OAEG;IACH,OAAO,CAAC,eAAe;IAIvB;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;IAIhC;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAiB1C;;OAEG;IACG,IAAI,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAajD;;OAEG;IACH,WAAW,IAAI,YAAY;IAU3B;;OAEG;IACH,eAAe,CACb,QAAQ,EAAE,YAAY,EACtB,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,iBAAiB,GACvB,IAAI;IAKP;;OAEG;IACH,oBAAoB,CAClB,QAAQ,EAAE,YAAY,EACtB,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,sBAAsB,GAC5B,IAAI;IAKP;;OAEG;IACH,eAAe,CAAC,QAAQ,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI;IAKnE;;OAEG;IACH,oBAAoB,CAAC,QAAQ,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI;IAKxE;;OAEG;IACH,YAAY,CAAC,QAAQ,EAAE,YAAY,GAAG,MAAM,EAAE;IAI9C;;OAEG;IACH,iBAAiB,CAAC,QAAQ,EAAE,YAAY,GAAG,MAAM,EAAE;IAInD;;OAEG;IACH,YAAY,CACV,QAAQ,EAAE,YAAY,EACtB,YAAY,EAAE,MAAM,GACnB,iBAAiB,GAAG,SAAS;IAIhC;;OAEG;IACH,iBAAiB,CACf,QAAQ,EAAE,YAAY,EACtB,YAAY,EAAE,MAAM,GACnB,sBAAsB,GAAG,SAAS;IAIrC;;OAEG;IACH,SAAS,CAAC,QAAQ,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO;IAMhE;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,YAAY,GAAG;QAChC,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,EAAE,MAAM,CAAC;QACpB,SAAS,EAAE,IAAI,CAAC;KACjB;IAQD;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,YAAY,GAAG;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE;IA8BtE;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAUzB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAY3B;;OAEG;IACH,KAAK,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;IAMnC;;OAEG;IACH,KAAK,CAAC,QAAQ,EAAE,YAAY,GAAG,YAAY;CAS5C"}