agentshield 0.0.4 → 0.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 +27 -7
- package/dist/backup.d.ts +26 -0
- package/dist/backup.js +86 -11
- package/dist/backup.js.map +1 -1
- package/dist/cli.js +66 -20
- package/dist/cli.js.map +1 -1
- package/dist/config.js +2 -0
- package/dist/config.js.map +1 -1
- package/dist/hardlink.d.ts +96 -0
- package/dist/hardlink.js +317 -0
- package/dist/hardlink.js.map +1 -0
- package/dist/watcher.d.ts +1 -0
- package/dist/watcher.js +18 -0
- package/dist/watcher.js.map +1 -1
- package/package.json +5 -3
package/README.md
CHANGED
|
@@ -6,9 +6,11 @@ English | [中文](./README_CN.md)
|
|
|
6
6
|
|
|
7
7
|
A workspace history version management tool that protects your workspace from unintended AI Agent modifications.
|
|
8
8
|
|
|
9
|
+

|
|
10
|
+
|
|
9
11
|
## ✨ Features
|
|
10
12
|
|
|
11
|
-
- **⚡ Zero-Copy Backups** - Uses hardlinks for instant, space-efficient backups
|
|
13
|
+
- **⚡ Zero-Copy Backups** - Uses hardlinks for instant, space-efficient backups
|
|
12
14
|
- **🕵️ Real-time Protection** - Watches your workspace and automatically backs up files before changes
|
|
13
15
|
- **📦 Smart Exclusions** - Automatically ignores `.git`, `node_modules`, build artifacts, etc.
|
|
14
16
|
- **🔒 Atomic Exec Mode** - Snapshot entire workspace before running agent commands
|
|
@@ -16,13 +18,25 @@ A workspace history version management tool that protects your workspace from un
|
|
|
16
18
|
|
|
17
19
|
## 🚀 Installation
|
|
18
20
|
|
|
19
|
-
###
|
|
21
|
+
### Desktop Version
|
|
22
|
+
|
|
23
|
+
Download the corresponding platform installation package from the [Releases](https://github.com/tomsun28/agentshield/releases) page and extract it to install (supports Windows, macOS, Linux).
|
|
24
|
+
|
|
25
|
+
- `shield_desktop_darwin_arm64.dmg` (macOS arm64)
|
|
26
|
+
- `shield_desktop_darwin_x64.dmg` (macOS x64)
|
|
27
|
+
- `shield_desktop_linux_arm64.tar.gz` (Linux arm64)
|
|
28
|
+
- `shield_desktop_linux_x64.tar.gz` (Linux x64)
|
|
29
|
+
- `shield_desktop_win_x64.exe` (Windows x64)
|
|
30
|
+
|
|
31
|
+
### CLI Version
|
|
32
|
+
|
|
33
|
+
**Via npm installation**
|
|
20
34
|
|
|
21
35
|
```bash
|
|
22
36
|
npm install -g agentshield
|
|
23
37
|
```
|
|
24
38
|
|
|
25
|
-
|
|
39
|
+
**Via binary installation**
|
|
26
40
|
|
|
27
41
|
```bash
|
|
28
42
|
curl -fsSL https://github.com/tomsun28/agentshield/raw/main/install.sh | bash
|
|
@@ -30,6 +44,12 @@ curl -fsSL https://github.com/tomsun28/agentshield/raw/main/install.sh | bash
|
|
|
30
44
|
|
|
31
45
|
Or download the executable binary for your platform from the [Releases](https://github.com/tomsun28/agentshield/releases) page (supports Windows, macOS, Linux).
|
|
32
46
|
|
|
47
|
+
- `shield_cli_darwin_arm64` (macOS arm64)
|
|
48
|
+
- `shield_cli_darwin_x64` (macOS x64)
|
|
49
|
+
- `shield_cli_linux_arm64` (Linux arm64)
|
|
50
|
+
- `shield_cli_linux_x64` (Linux x64)
|
|
51
|
+
- `shield_cli_win_x64.exe` (Windows x64)
|
|
52
|
+
|
|
33
53
|
## 📖 Usage
|
|
34
54
|
|
|
35
55
|
|
|
@@ -50,7 +70,7 @@ shield watch
|
|
|
50
70
|
# Watch specific directory (foreground)
|
|
51
71
|
shield watch ./my-project
|
|
52
72
|
|
|
53
|
-
# Stop background
|
|
73
|
+
# Stop background process
|
|
54
74
|
shield stop
|
|
55
75
|
shield stop ./my-project
|
|
56
76
|
|
|
@@ -61,11 +81,11 @@ shield status
|
|
|
61
81
|
### Restore Files
|
|
62
82
|
|
|
63
83
|
```bash
|
|
64
|
-
# List all
|
|
84
|
+
# List all changes and snapshot points
|
|
65
85
|
shield list
|
|
66
86
|
|
|
67
|
-
# Restore a specific snapshot by ID
|
|
68
|
-
shield restore
|
|
87
|
+
# Restore a specific snapshot by ID or timestamp
|
|
88
|
+
shield restore <id>
|
|
69
89
|
```
|
|
70
90
|
|
|
71
91
|
### Status and Cleanup
|
package/dist/backup.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { ShieldConfig } from "./config.js";
|
|
2
|
+
import { BackupMethod, BackupStats } from "./hardlink.js";
|
|
2
3
|
export type FileEventType = "change" | "delete" | "rename" | "create";
|
|
3
4
|
export interface SnapshotFile {
|
|
4
5
|
path: string;
|
|
@@ -6,6 +7,7 @@ export interface SnapshotFile {
|
|
|
6
7
|
size: number;
|
|
7
8
|
eventType: FileEventType;
|
|
8
9
|
renamedTo?: string;
|
|
10
|
+
backupMethod?: BackupMethod;
|
|
9
11
|
}
|
|
10
12
|
export interface Snapshot {
|
|
11
13
|
id: string;
|
|
@@ -69,6 +71,7 @@ export declare class BackupManager {
|
|
|
69
71
|
restored: number;
|
|
70
72
|
failed: number;
|
|
71
73
|
deleted: number;
|
|
74
|
+
skipped: number;
|
|
72
75
|
};
|
|
73
76
|
/**
|
|
74
77
|
* Restore to snapshot at specified timestamp
|
|
@@ -77,6 +80,7 @@ export declare class BackupManager {
|
|
|
77
80
|
restored: number;
|
|
78
81
|
failed: number;
|
|
79
82
|
deleted: number;
|
|
83
|
+
skipped: number;
|
|
80
84
|
};
|
|
81
85
|
/**
|
|
82
86
|
* Restore single file to latest backup
|
|
@@ -98,4 +102,26 @@ export declare class BackupManager {
|
|
|
98
102
|
totalSize: number;
|
|
99
103
|
uniqueFiles: number;
|
|
100
104
|
};
|
|
105
|
+
/**
|
|
106
|
+
* Get hardlink backup statistics
|
|
107
|
+
*/
|
|
108
|
+
getHardlinkStats(): BackupStats;
|
|
109
|
+
/**
|
|
110
|
+
* Reset hardlink backup statistics
|
|
111
|
+
*/
|
|
112
|
+
resetHardlinkStats(): void;
|
|
113
|
+
/**
|
|
114
|
+
* Get extended stats including hardlink information
|
|
115
|
+
*/
|
|
116
|
+
getExtendedStats(): {
|
|
117
|
+
snapshots: number;
|
|
118
|
+
totalFiles: number;
|
|
119
|
+
totalSize: number;
|
|
120
|
+
uniqueFiles: number;
|
|
121
|
+
hardlinkBackups: number;
|
|
122
|
+
copyBackups: number;
|
|
123
|
+
hardlinkSavedBytes: number;
|
|
124
|
+
};
|
|
101
125
|
}
|
|
126
|
+
export type { BackupMethod, BackupStats } from "./hardlink.js";
|
|
127
|
+
export { getBackupStats, resetBackupStats, isHardlinked, getHardlinkCount, clearHardlinkCache } from "./hardlink.js";
|
package/dist/backup.js
CHANGED
|
@@ -2,6 +2,7 @@ import { existsSync, mkdirSync, copyFileSync, statSync, readFileSync, writeFileS
|
|
|
2
2
|
import { join, dirname } from "path";
|
|
3
3
|
import { getSnapshotsDir, getIndexPath } from "./config.js";
|
|
4
4
|
import { matchesPattern, removeEmptyDirs } from "./utils.js";
|
|
5
|
+
import { smartBackup, recordBackupResult, getBackupStats, resetBackupStats } from "./hardlink.js";
|
|
5
6
|
export class BackupManager {
|
|
6
7
|
constructor(config) {
|
|
7
8
|
this.config = config;
|
|
@@ -70,23 +71,49 @@ export class BackupManager {
|
|
|
70
71
|
try {
|
|
71
72
|
mkdirSync(dirname(backupPath), { recursive: true });
|
|
72
73
|
let fileSize = 0;
|
|
74
|
+
let backupMethod = "copy";
|
|
75
|
+
const sourcePath = join(this.config.workspace, relativePath);
|
|
73
76
|
if (eventType === "delete" || eventType === "rename") {
|
|
74
|
-
// Delete or rename:
|
|
75
|
-
if
|
|
76
|
-
|
|
77
|
-
|
|
77
|
+
// Delete or rename: Try hardlink first, fallback to content backup
|
|
78
|
+
// For rename, pass the new path so we can create hardlink from there if original is gone
|
|
79
|
+
const renamedToFullPath = renamedTo ? join(this.config.workspace, renamedTo) : undefined;
|
|
80
|
+
const result = smartBackup(sourcePath, backupPath, eventType, content, renamedToFullPath);
|
|
81
|
+
if (result.success) {
|
|
82
|
+
backupMethod = result.method;
|
|
83
|
+
// Get file size: try source first, then renamedTo path, then content length
|
|
84
|
+
if (existsSync(sourcePath)) {
|
|
85
|
+
fileSize = statSync(sourcePath).size;
|
|
86
|
+
}
|
|
87
|
+
else if (renamedToFullPath && existsSync(renamedToFullPath)) {
|
|
88
|
+
fileSize = statSync(renamedToFullPath).size;
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
fileSize = content?.length || 0;
|
|
92
|
+
}
|
|
93
|
+
recordBackupResult(result, fileSize);
|
|
94
|
+
}
|
|
95
|
+
else {
|
|
96
|
+
console.error(`Backup failed for ${relativePath}: ${result.error}`);
|
|
97
|
+
continue;
|
|
78
98
|
}
|
|
79
99
|
}
|
|
80
100
|
else if (eventType === "change") {
|
|
81
|
-
// Modify:
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
101
|
+
// Modify: Must use content backup (hardlink would be affected by modification)
|
|
102
|
+
const result = smartBackup(sourcePath, backupPath, "change", content);
|
|
103
|
+
if (result.success) {
|
|
104
|
+
backupMethod = result.method;
|
|
105
|
+
fileSize = content?.length || 0;
|
|
106
|
+
recordBackupResult(result, fileSize);
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
console.error(`Backup failed for ${relativePath}: ${result.error}`);
|
|
110
|
+
continue;
|
|
85
111
|
}
|
|
86
112
|
}
|
|
87
113
|
else if (eventType === "create") {
|
|
88
114
|
// New file: No need to save content, just record path
|
|
89
115
|
fileSize = 0;
|
|
116
|
+
backupMethod = "copy"; // No actual backup for create
|
|
90
117
|
}
|
|
91
118
|
snapshotFiles.push({
|
|
92
119
|
path: relativePath,
|
|
@@ -94,6 +121,7 @@ export class BackupManager {
|
|
|
94
121
|
size: fileSize,
|
|
95
122
|
eventType,
|
|
96
123
|
renamedTo,
|
|
124
|
+
backupMethod,
|
|
97
125
|
});
|
|
98
126
|
}
|
|
99
127
|
catch (err) {
|
|
@@ -174,11 +202,12 @@ export class BackupManager {
|
|
|
174
202
|
const snapshot = this.getSnapshotById(snapshotId);
|
|
175
203
|
if (!snapshot) {
|
|
176
204
|
console.error(`Snapshot not found: ${snapshotId}`);
|
|
177
|
-
return { restored: 0, failed: 0, deleted: 0 };
|
|
205
|
+
return { restored: 0, failed: 0, deleted: 0, skipped: 0 };
|
|
178
206
|
}
|
|
179
207
|
let restored = 0;
|
|
180
208
|
let failed = 0;
|
|
181
209
|
let deleted = 0;
|
|
210
|
+
let skipped = 0;
|
|
182
211
|
for (const file of snapshot.files || []) {
|
|
183
212
|
const backupFullPath = join(this.snapshotsDir, file.backupPath);
|
|
184
213
|
const targetPath = join(this.config.workspace, file.path);
|
|
@@ -224,6 +253,12 @@ export class BackupManager {
|
|
|
224
253
|
copyFileSync(backupFullPath, targetPath);
|
|
225
254
|
restored++;
|
|
226
255
|
}
|
|
256
|
+
else if (file.size === 0) {
|
|
257
|
+
// No backup content means the file was new when the snapshot was taken
|
|
258
|
+
// (first change detected, no previous content to restore)
|
|
259
|
+
// Skip gracefully - the file state before this snapshot is "did not exist"
|
|
260
|
+
skipped++;
|
|
261
|
+
}
|
|
227
262
|
else {
|
|
228
263
|
failed++;
|
|
229
264
|
}
|
|
@@ -234,7 +269,7 @@ export class BackupManager {
|
|
|
234
269
|
failed++;
|
|
235
270
|
}
|
|
236
271
|
}
|
|
237
|
-
return { restored, failed, deleted };
|
|
272
|
+
return { restored, failed, deleted, skipped };
|
|
238
273
|
}
|
|
239
274
|
/**
|
|
240
275
|
* Restore to snapshot at specified timestamp
|
|
@@ -243,7 +278,7 @@ export class BackupManager {
|
|
|
243
278
|
const snapshot = this.getSnapshotByTimestamp(timestamp);
|
|
244
279
|
if (!snapshot) {
|
|
245
280
|
console.error(`No snapshot found at timestamp: ${timestamp}`);
|
|
246
|
-
return { restored: 0, failed: 0, deleted: 0 };
|
|
281
|
+
return { restored: 0, failed: 0, deleted: 0, skipped: 0 };
|
|
247
282
|
}
|
|
248
283
|
return this.restoreSnapshot(snapshot.id);
|
|
249
284
|
}
|
|
@@ -329,5 +364,45 @@ export class BackupManager {
|
|
|
329
364
|
uniqueFiles: uniqueFiles.size,
|
|
330
365
|
};
|
|
331
366
|
}
|
|
367
|
+
/**
|
|
368
|
+
* Get hardlink backup statistics
|
|
369
|
+
*/
|
|
370
|
+
getHardlinkStats() {
|
|
371
|
+
return getBackupStats();
|
|
372
|
+
}
|
|
373
|
+
/**
|
|
374
|
+
* Reset hardlink backup statistics
|
|
375
|
+
*/
|
|
376
|
+
resetHardlinkStats() {
|
|
377
|
+
resetBackupStats();
|
|
378
|
+
}
|
|
379
|
+
/**
|
|
380
|
+
* Get extended stats including hardlink information
|
|
381
|
+
*/
|
|
382
|
+
getExtendedStats() {
|
|
383
|
+
const basicStats = this.getStats();
|
|
384
|
+
const hardlinkStats = this.getHardlinkStats();
|
|
385
|
+
// Count backup methods from snapshot files
|
|
386
|
+
let hardlinkBackups = 0;
|
|
387
|
+
let copyBackups = 0;
|
|
388
|
+
for (const snapshot of this.index.snapshots || []) {
|
|
389
|
+
for (const file of snapshot.files || []) {
|
|
390
|
+
if (file.backupMethod === "hardlink") {
|
|
391
|
+
hardlinkBackups++;
|
|
392
|
+
}
|
|
393
|
+
else if (file.eventType !== "create") {
|
|
394
|
+
// create events don't have actual backups
|
|
395
|
+
copyBackups++;
|
|
396
|
+
}
|
|
397
|
+
}
|
|
398
|
+
}
|
|
399
|
+
return {
|
|
400
|
+
...basicStats,
|
|
401
|
+
hardlinkBackups,
|
|
402
|
+
copyBackups,
|
|
403
|
+
hardlinkSavedBytes: hardlinkStats.hardlinkSavedBytes,
|
|
404
|
+
};
|
|
405
|
+
}
|
|
332
406
|
}
|
|
407
|
+
export { getBackupStats, resetBackupStats, isHardlinked, getHardlinkCount, clearHardlinkCache } from "./hardlink.js";
|
|
333
408
|
//# sourceMappingURL=backup.js.map
|
package/dist/backup.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"backup.js","sourceRoot":"","sources":["../src/backup.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"backup.js","sourceRoot":"","sources":["../src/backup.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.js
CHANGED
|
@@ -5,6 +5,7 @@ import { getDefaultConfig } from "./config.js";
|
|
|
5
5
|
import { BackupManager } from "./backup.js";
|
|
6
6
|
import { ShieldWatcher } from "./watcher.js";
|
|
7
7
|
import { formatBytes, formatTimeAgo } from "./utils.js";
|
|
8
|
+
const SHIELD_VERSION = "0.0.5";
|
|
8
9
|
function parseArgs(args) {
|
|
9
10
|
const result = {
|
|
10
11
|
command: args[0] || "help",
|
|
@@ -41,6 +42,7 @@ Commands:
|
|
|
41
42
|
restore Restore files from a snapshot
|
|
42
43
|
clean [--days=N] Remove snapshots older than N days (default: 7)
|
|
43
44
|
status Show statistics
|
|
45
|
+
version Show version information
|
|
44
46
|
help Show this help message
|
|
45
47
|
|
|
46
48
|
Restore Options:
|
|
@@ -62,6 +64,7 @@ Examples:
|
|
|
62
64
|
shield restore --file=src/index.ts
|
|
63
65
|
shield clean --days=3
|
|
64
66
|
shield status
|
|
67
|
+
shield version
|
|
65
68
|
`);
|
|
66
69
|
}
|
|
67
70
|
export async function runCli(argv) {
|
|
@@ -88,12 +91,20 @@ export async function runCli(argv) {
|
|
|
88
91
|
case "status":
|
|
89
92
|
await cmdStatus(options);
|
|
90
93
|
break;
|
|
94
|
+
case "version":
|
|
95
|
+
case "-v":
|
|
96
|
+
case "--version":
|
|
97
|
+
await cmdVersion();
|
|
98
|
+
break;
|
|
91
99
|
case "help":
|
|
92
100
|
default:
|
|
93
101
|
printHelp();
|
|
94
102
|
break;
|
|
95
103
|
}
|
|
96
104
|
}
|
|
105
|
+
async function cmdVersion() {
|
|
106
|
+
console.log(`Shield v${SHIELD_VERSION}`);
|
|
107
|
+
}
|
|
97
108
|
async function getConfig(options) {
|
|
98
109
|
const pathArg = options.flags["path"] || options.args[0] || ".";
|
|
99
110
|
const workspace = resolve(pathArg);
|
|
@@ -108,13 +119,18 @@ async function cmdWatch(options) {
|
|
|
108
119
|
const isDaemon = options.flags["daemon"] === true;
|
|
109
120
|
const logFilePath = options.flags["log-file"];
|
|
110
121
|
const log = createLogger(logFilePath);
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
122
|
+
// Always check for existing process, even in daemon mode
|
|
123
|
+
const existingPid = checkExistingProcess(config);
|
|
124
|
+
if (existingPid !== null && existingPid !== process.pid) {
|
|
125
|
+
log(`❌ Shield is already running in this workspace (PID: ${existingPid})`);
|
|
126
|
+
log(` Use 'shield stop' to stop it first, or 'shield status' to check.`);
|
|
127
|
+
process.exit(1);
|
|
128
|
+
}
|
|
129
|
+
// In daemon mode, ensure we write our PID (parent may have written child PID already,
|
|
130
|
+
// but we verify it matches)
|
|
131
|
+
if (isDaemon) {
|
|
132
|
+
const pidFile = getPidFilePath(config);
|
|
133
|
+
writeFileSync(pidFile, process.pid.toString());
|
|
118
134
|
}
|
|
119
135
|
const backupManager = new BackupManager(config);
|
|
120
136
|
const watcher = new ShieldWatcher(config, backupManager, log);
|
|
@@ -152,6 +168,7 @@ async function cmdRestore(options) {
|
|
|
152
168
|
console.log("No snapshots available");
|
|
153
169
|
return;
|
|
154
170
|
}
|
|
171
|
+
let exitCode = 0;
|
|
155
172
|
try {
|
|
156
173
|
writeFileSync(restoreLockPath, `${Date.now()}`);
|
|
157
174
|
// Restore by positional argument (snapshot ID or timestamp)
|
|
@@ -161,16 +178,26 @@ async function cmdRestore(options) {
|
|
|
161
178
|
// Restore by snapshot ID
|
|
162
179
|
console.log(`🔄 Restoring snapshot: ${idArg}...`);
|
|
163
180
|
const result = backupManager.restoreSnapshot(idArg);
|
|
164
|
-
if (result.restored > 0 || result.deleted > 0) {
|
|
165
|
-
|
|
181
|
+
if (result.restored > 0 || result.deleted > 0 || result.skipped > 0) {
|
|
182
|
+
const parts = [];
|
|
183
|
+
if (result.restored > 0)
|
|
184
|
+
parts.push(`restored ${result.restored}`);
|
|
185
|
+
if (result.deleted > 0)
|
|
186
|
+
parts.push(`removed ${result.deleted} new`);
|
|
187
|
+
if (result.skipped > 0)
|
|
188
|
+
parts.push(`skipped ${result.skipped} (no backup needed)`);
|
|
189
|
+
console.log(`✓ ${parts.join(", ")} file(s)`);
|
|
190
|
+
if (result.failed > 0) {
|
|
191
|
+
console.log(`⚠️ ${result.failed} file(s) failed to restore`);
|
|
192
|
+
}
|
|
166
193
|
}
|
|
167
194
|
else if (result.failed > 0) {
|
|
168
195
|
console.log(`✗ Failed to restore: ${result.failed} files`);
|
|
169
|
-
|
|
196
|
+
exitCode = 1;
|
|
170
197
|
}
|
|
171
198
|
else {
|
|
172
199
|
console.log(`✗ Snapshot not found: ${idArg}`);
|
|
173
|
-
|
|
200
|
+
exitCode = 1;
|
|
174
201
|
}
|
|
175
202
|
}
|
|
176
203
|
else {
|
|
@@ -179,16 +206,32 @@ async function cmdRestore(options) {
|
|
|
179
206
|
if (isNaN(timestamp)) {
|
|
180
207
|
console.error(`Error: Invalid snapshot ID or timestamp: ${idArg}`);
|
|
181
208
|
console.error(` Expected: snap_XXXXX (snapshot ID) or XXXXX (timestamp)`);
|
|
182
|
-
|
|
183
|
-
}
|
|
184
|
-
console.log(`🔄 Restoring snapshot at ${new Date(timestamp).toISOString()}...`);
|
|
185
|
-
const result = backupManager.restoreToSnapshot(timestamp);
|
|
186
|
-
if (result.restored > 0 || result.deleted > 0) {
|
|
187
|
-
console.log(`✓ Restored ${result.restored} files, removed ${result.deleted} new files`);
|
|
209
|
+
exitCode = 1;
|
|
188
210
|
}
|
|
189
211
|
else {
|
|
190
|
-
console.log(
|
|
191
|
-
|
|
212
|
+
console.log(`🔄 Restoring snapshot at ${new Date(timestamp).toISOString()}...`);
|
|
213
|
+
const result = backupManager.restoreToSnapshot(timestamp);
|
|
214
|
+
if (result.restored > 0 || result.deleted > 0 || result.skipped > 0) {
|
|
215
|
+
const parts = [];
|
|
216
|
+
if (result.restored > 0)
|
|
217
|
+
parts.push(`restored ${result.restored}`);
|
|
218
|
+
if (result.deleted > 0)
|
|
219
|
+
parts.push(`removed ${result.deleted} new`);
|
|
220
|
+
if (result.skipped > 0)
|
|
221
|
+
parts.push(`skipped ${result.skipped} (no backup needed)`);
|
|
222
|
+
console.log(`✓ ${parts.join(", ")} file(s)`);
|
|
223
|
+
if (result.failed > 0) {
|
|
224
|
+
console.log(`⚠️ ${result.failed} file(s) failed to restore`);
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
else if (result.failed > 0) {
|
|
228
|
+
console.log(`✗ Failed to restore: ${result.failed} files`);
|
|
229
|
+
exitCode = 1;
|
|
230
|
+
}
|
|
231
|
+
else {
|
|
232
|
+
console.log(`✗ No snapshot found at timestamp: ${timestamp}`);
|
|
233
|
+
exitCode = 1;
|
|
234
|
+
}
|
|
192
235
|
}
|
|
193
236
|
}
|
|
194
237
|
return;
|
|
@@ -202,7 +245,7 @@ async function cmdRestore(options) {
|
|
|
202
245
|
}
|
|
203
246
|
else {
|
|
204
247
|
console.log(`✗ Failed to restore: ${fileFlag}`);
|
|
205
|
-
|
|
248
|
+
exitCode = 1;
|
|
206
249
|
}
|
|
207
250
|
return;
|
|
208
251
|
}
|
|
@@ -243,6 +286,9 @@ async function cmdRestore(options) {
|
|
|
243
286
|
catch {
|
|
244
287
|
// ignore
|
|
245
288
|
}
|
|
289
|
+
if (exitCode !== 0) {
|
|
290
|
+
process.exit(exitCode);
|
|
291
|
+
}
|
|
246
292
|
}
|
|
247
293
|
}
|
|
248
294
|
async function cmdList(options) {
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/config.js
CHANGED
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAS9C,MAAM,CAAC,MAAM,kBAAkB,GAAG,SAAS,CAAC;AAC5C,MAAM,CAAC,MAAM,aAAa,GAAG,WAAW,CAAC;AACzC,MAAM,CAAC,MAAM,UAAU,GAAG,YAAY,CAAC;AAEvC,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,OAAO;IACP,UAAU;IACV,cAAc;IACd,iBAAiB;IACjB,SAAS;IACT,aAAa;IACb,cAAc;IACd,UAAU;IACV,UAAU;IACV,UAAU;IACV,WAAW;IACX,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,WAAW;IACX,UAAU;IACV,YAAY;IACZ,UAAU;IACV,UAAU;IACV,OAAO;IACP,cAAc;IACd,gBAAgB;IAChB,mBAAmB;IACnB,UAAU;IACV,SAAS;IACT,YAAY;IACZ,UAAU;IACV,aAAa;IACb,aAAa;IACb,gBAAgB;IAChB,0BAA0B;IAC1B,+BAA+B;IAC/B,iCAAiC;IACjC,oBAAoB;IACpB,sBAAsB;CACvB,CAAC;AAEF,MAAM,UAAU,gBAAgB,CAAC,SAAiB;IAChD,MAAM,eAAe,GAAG,CAAC,GAAG,wBAAwB,CAAC,CAAC;IAEtD,yDAAyD;IACzD,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;IACpD,IAAI,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QAC9B,IAAI,CAAC;YACH,MAAM,gBAAgB,GAAG,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;YAC9D,MAAM,iBAAiB,GAAG,gBAAgB;iBACvC,KAAK,CAAC,IAAI,CAAC;iBACX,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;iBACxB,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,kCAAkC;YAEpF,eAAe,CAAC,IAAI,CAAC,GAAG,iBAAiB,CAAC,CAAC;QAC7C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,iCAAiC,EAAE,KAAK,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;IAED,OAAO;QACL,SAAS,EAAE,SAAS;QACpB,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,kBAAkB,CAAC;QAC7C,eAAe,EAAE,eAAe;QAChC,gBAAgB,EAAE,CAAC;KACpB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,MAAoB;IAClD,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,MAAoB;IAC/C,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;AAC3C,CAAC"}
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAS9C,MAAM,CAAC,MAAM,kBAAkB,GAAG,SAAS,CAAC;AAC5C,MAAM,CAAC,MAAM,aAAa,GAAG,WAAW,CAAC;AACzC,MAAM,CAAC,MAAM,UAAU,GAAG,YAAY,CAAC;AAEvC,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,OAAO;IACP,UAAU;IACV,cAAc;IACd,iBAAiB;IACjB,SAAS;IACT,aAAa;IACb,cAAc;IACd,UAAU;IACV,UAAU;IACV,UAAU;IACV,WAAW;IACX,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,WAAW;IACX,UAAU;IACV,YAAY;IACZ,UAAU;IACV,UAAU;IACV,OAAO;IACP,cAAc;IACd,gBAAgB;IAChB,mBAAmB;IACnB,UAAU;IACV,SAAS;IACT,YAAY;IACZ,UAAU;IACV,aAAa;IACb,cAAc;IACd,aAAa;IACb,aAAa;IACb,gBAAgB;IAChB,0BAA0B;IAC1B,+BAA+B;IAC/B,iCAAiC;IACjC,oBAAoB;IACpB,sBAAsB;CACvB,CAAC;AAEF,MAAM,UAAU,gBAAgB,CAAC,SAAiB;IAChD,MAAM,eAAe,GAAG,CAAC,GAAG,wBAAwB,CAAC,CAAC;IAEtD,yDAAyD;IACzD,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;IACpD,IAAI,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QAC9B,IAAI,CAAC;YACH,MAAM,gBAAgB,GAAG,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;YAC9D,MAAM,iBAAiB,GAAG,gBAAgB;iBACvC,KAAK,CAAC,IAAI,CAAC;iBACX,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;iBACxB,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,kCAAkC;YAEpF,eAAe,CAAC,IAAI,CAAC,GAAG,iBAAiB,CAAC,CAAC;QAC7C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,iCAAiC,EAAE,KAAK,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;IAED,OAAO;QACL,SAAS,EAAE,SAAS;QACpB,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,kBAAkB,CAAC;QAC7C,eAAe,EAAE,eAAe;QAChC,gBAAgB,EAAE,CAAC;KACpB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,MAAoB;IAClD,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,MAAoB;IAC/C,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;AAC3C,CAAC"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hardlink backup utility with cross-platform support
|
|
3
|
+
*
|
|
4
|
+
* Hardlink vs Copy strategy:
|
|
5
|
+
* - DELETE: Use hardlink (original will be deleted, hardlink preserves content)
|
|
6
|
+
* - RENAME: Use hardlink (similar to delete)
|
|
7
|
+
* - CHANGE: Must copy first (modifications would affect hardlink)
|
|
8
|
+
* - CREATE: No backup needed (file didn't exist before)
|
|
9
|
+
*
|
|
10
|
+
* Fallback to copy when:
|
|
11
|
+
* - Cross-filesystem (different mount points)
|
|
12
|
+
* - Windows without proper permissions
|
|
13
|
+
* - Any hardlink failure
|
|
14
|
+
*/
|
|
15
|
+
export type BackupMethod = "hardlink" | "copy";
|
|
16
|
+
export interface BackupResult {
|
|
17
|
+
success: boolean;
|
|
18
|
+
method: BackupMethod;
|
|
19
|
+
error?: string;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Check if the current platform supports hardlinks
|
|
23
|
+
*/
|
|
24
|
+
export declare function platformSupportsHardlinks(): boolean;
|
|
25
|
+
/**
|
|
26
|
+
* Check if two paths are on the same filesystem/device
|
|
27
|
+
*/
|
|
28
|
+
export declare function isSameDevice(path1: string, path2: string): boolean;
|
|
29
|
+
/**
|
|
30
|
+
* Check if hardlinks work for a given device
|
|
31
|
+
* Results are cached per device ID
|
|
32
|
+
*/
|
|
33
|
+
export declare function canCreateHardlink(sourcePath: string): boolean;
|
|
34
|
+
/**
|
|
35
|
+
* Cache hardlink capability result for a device
|
|
36
|
+
*/
|
|
37
|
+
export declare function cacheHardlinkCapability(deviceId: number, canHardlink: boolean): void;
|
|
38
|
+
/**
|
|
39
|
+
* Get device ID for a path
|
|
40
|
+
*/
|
|
41
|
+
export declare function getDeviceId(filePath: string): number | null;
|
|
42
|
+
/**
|
|
43
|
+
* Create a hardlink backup of a file
|
|
44
|
+
* Falls back to copy if hardlink fails
|
|
45
|
+
*
|
|
46
|
+
* @param sourcePath - Original file path (the file to backup)
|
|
47
|
+
* @param targetPath - Backup destination path
|
|
48
|
+
* @returns BackupResult with success status and method used
|
|
49
|
+
*/
|
|
50
|
+
export declare function createHardlinkBackup(sourcePath: string, targetPath: string): BackupResult;
|
|
51
|
+
/**
|
|
52
|
+
* Backup file content from a Buffer
|
|
53
|
+
* This is used for CHANGE events where we have the old content in memory
|
|
54
|
+
* (Content-based backup - always uses write, not hardlink)
|
|
55
|
+
*/
|
|
56
|
+
export declare function backupFromBuffer(content: Buffer, targetPath: string): BackupResult;
|
|
57
|
+
/**
|
|
58
|
+
* Smart backup that chooses the best method based on event type
|
|
59
|
+
*
|
|
60
|
+
* Strategy:
|
|
61
|
+
* - DELETE/RENAME: Try hardlink first (file will be removed from original location)
|
|
62
|
+
* - CHANGE: If content buffer provided, write from buffer; otherwise copy
|
|
63
|
+
* - CREATE: No backup needed (return success with no action)
|
|
64
|
+
*
|
|
65
|
+
* @param sourcePath - Original file path
|
|
66
|
+
* @param targetPath - Backup destination path
|
|
67
|
+
* @param eventType - Type of file event
|
|
68
|
+
* @param content - Optional content buffer (for CHANGE events with pre-read content)
|
|
69
|
+
* @param renamedTo - Optional new path for rename events (to create hardlink from new location)
|
|
70
|
+
*/
|
|
71
|
+
export declare function smartBackup(sourcePath: string, targetPath: string, eventType: "delete" | "rename" | "change" | "create", content?: Buffer, renamedTo?: string): BackupResult;
|
|
72
|
+
/**
|
|
73
|
+
* Get backup statistics
|
|
74
|
+
*/
|
|
75
|
+
export interface BackupStats {
|
|
76
|
+
hardlinks: number;
|
|
77
|
+
copies: number;
|
|
78
|
+
failures: number;
|
|
79
|
+
hardlinkSavedBytes: number;
|
|
80
|
+
}
|
|
81
|
+
export declare function recordBackupResult(result: BackupResult, fileSize: number): void;
|
|
82
|
+
export declare function getBackupStats(): BackupStats;
|
|
83
|
+
export declare function resetBackupStats(): void;
|
|
84
|
+
/**
|
|
85
|
+
* Check if a file is a hardlink (has more than 1 link)
|
|
86
|
+
*/
|
|
87
|
+
export declare function isHardlinked(filePath: string): boolean;
|
|
88
|
+
/**
|
|
89
|
+
* Get the number of hardlinks for a file
|
|
90
|
+
*/
|
|
91
|
+
export declare function getHardlinkCount(filePath: string): number;
|
|
92
|
+
/**
|
|
93
|
+
* Clear the hardlink capability cache
|
|
94
|
+
* Useful for testing or when mount points change
|
|
95
|
+
*/
|
|
96
|
+
export declare function clearHardlinkCache(): void;
|
package/dist/hardlink.js
ADDED
|
@@ -0,0 +1,317 @@
|
|
|
1
|
+
import { linkSync, copyFileSync, statSync, existsSync, readFileSync, writeFileSync, mkdirSync, } from "fs";
|
|
2
|
+
import { dirname } from "path";
|
|
3
|
+
import { platform } from "os";
|
|
4
|
+
// Cache for hardlink capability check per device
|
|
5
|
+
const hardlinkCapabilityCache = new Map();
|
|
6
|
+
/**
|
|
7
|
+
* Check if the current platform supports hardlinks
|
|
8
|
+
*/
|
|
9
|
+
export function platformSupportsHardlinks() {
|
|
10
|
+
// All major platforms support hardlinks, but Windows has restrictions
|
|
11
|
+
return true;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Check if two paths are on the same filesystem/device
|
|
15
|
+
*/
|
|
16
|
+
export function isSameDevice(path1, path2) {
|
|
17
|
+
try {
|
|
18
|
+
const stat1 = statSync(path1);
|
|
19
|
+
const stat2 = statSync(path2);
|
|
20
|
+
return stat1.dev === stat2.dev;
|
|
21
|
+
}
|
|
22
|
+
catch {
|
|
23
|
+
return false;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Check if hardlinks work for a given device
|
|
28
|
+
* Results are cached per device ID
|
|
29
|
+
*/
|
|
30
|
+
export function canCreateHardlink(sourcePath) {
|
|
31
|
+
try {
|
|
32
|
+
const stat = statSync(sourcePath);
|
|
33
|
+
// Check cache first
|
|
34
|
+
if (hardlinkCapabilityCache.has(stat.dev)) {
|
|
35
|
+
return hardlinkCapabilityCache.get(stat.dev);
|
|
36
|
+
}
|
|
37
|
+
// For Windows, we'll try and cache the result
|
|
38
|
+
// For Unix-like systems, hardlinks should work if on same device
|
|
39
|
+
if (platform() === "win32") {
|
|
40
|
+
// On Windows, we'll determine this on first actual attempt
|
|
41
|
+
// and cache the result
|
|
42
|
+
return true; // Assume true, will fallback if fails
|
|
43
|
+
}
|
|
44
|
+
// Unix-like systems: hardlinks work for regular files on same device
|
|
45
|
+
return stat.isFile();
|
|
46
|
+
}
|
|
47
|
+
catch {
|
|
48
|
+
return false;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Cache hardlink capability result for a device
|
|
53
|
+
*/
|
|
54
|
+
export function cacheHardlinkCapability(deviceId, canHardlink) {
|
|
55
|
+
hardlinkCapabilityCache.set(deviceId, canHardlink);
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Get device ID for a path
|
|
59
|
+
*/
|
|
60
|
+
export function getDeviceId(filePath) {
|
|
61
|
+
try {
|
|
62
|
+
return statSync(filePath).dev;
|
|
63
|
+
}
|
|
64
|
+
catch {
|
|
65
|
+
return null;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Create a hardlink backup of a file
|
|
70
|
+
* Falls back to copy if hardlink fails
|
|
71
|
+
*
|
|
72
|
+
* @param sourcePath - Original file path (the file to backup)
|
|
73
|
+
* @param targetPath - Backup destination path
|
|
74
|
+
* @returns BackupResult with success status and method used
|
|
75
|
+
*/
|
|
76
|
+
export function createHardlinkBackup(sourcePath, targetPath) {
|
|
77
|
+
if (!existsSync(sourcePath)) {
|
|
78
|
+
return {
|
|
79
|
+
success: false,
|
|
80
|
+
method: "copy",
|
|
81
|
+
error: `Source file does not exist: ${sourcePath}`,
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
// Ensure target directory exists
|
|
85
|
+
const targetDir = dirname(targetPath);
|
|
86
|
+
if (!existsSync(targetDir)) {
|
|
87
|
+
mkdirSync(targetDir, { recursive: true });
|
|
88
|
+
}
|
|
89
|
+
// Check if source and target are on same device
|
|
90
|
+
const sourceDevice = getDeviceId(sourcePath);
|
|
91
|
+
const targetDirDevice = getDeviceId(targetDir);
|
|
92
|
+
if (sourceDevice !== null && targetDirDevice !== null && sourceDevice !== targetDirDevice) {
|
|
93
|
+
// Different devices, must use copy
|
|
94
|
+
return copyFallback(sourcePath, targetPath, "Cross-device link not permitted");
|
|
95
|
+
}
|
|
96
|
+
// Check cached capability
|
|
97
|
+
if (sourceDevice !== null && hardlinkCapabilityCache.has(sourceDevice)) {
|
|
98
|
+
if (!hardlinkCapabilityCache.get(sourceDevice)) {
|
|
99
|
+
return copyFallback(sourcePath, targetPath, "Hardlinks not supported (cached)");
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
// Try to create hardlink
|
|
103
|
+
try {
|
|
104
|
+
linkSync(sourcePath, targetPath);
|
|
105
|
+
// Cache success for this device
|
|
106
|
+
if (sourceDevice !== null) {
|
|
107
|
+
cacheHardlinkCapability(sourceDevice, true);
|
|
108
|
+
}
|
|
109
|
+
return {
|
|
110
|
+
success: true,
|
|
111
|
+
method: "hardlink",
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
catch (err) {
|
|
115
|
+
const error = err;
|
|
116
|
+
// Cache failure for this device on Windows
|
|
117
|
+
if (platform() === "win32" && sourceDevice !== null) {
|
|
118
|
+
// EPERM or EXDEV indicate hardlinks won't work
|
|
119
|
+
if (error.code === "EPERM" || error.code === "EXDEV" || error.code === "ENOTSUP") {
|
|
120
|
+
cacheHardlinkCapability(sourceDevice, false);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
// Fallback to copy
|
|
124
|
+
return copyFallback(sourcePath, targetPath, error.message);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Fallback to file copy when hardlink fails
|
|
129
|
+
*/
|
|
130
|
+
function copyFallback(sourcePath, targetPath, reason) {
|
|
131
|
+
try {
|
|
132
|
+
copyFileSync(sourcePath, targetPath);
|
|
133
|
+
return {
|
|
134
|
+
success: true,
|
|
135
|
+
method: "copy",
|
|
136
|
+
error: `Hardlink fallback: ${reason}`,
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
catch (copyErr) {
|
|
140
|
+
const error = copyErr;
|
|
141
|
+
return {
|
|
142
|
+
success: false,
|
|
143
|
+
method: "copy",
|
|
144
|
+
error: `Copy also failed: ${error.message}`,
|
|
145
|
+
};
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Backup file content from a Buffer
|
|
150
|
+
* This is used for CHANGE events where we have the old content in memory
|
|
151
|
+
* (Content-based backup - always uses write, not hardlink)
|
|
152
|
+
*/
|
|
153
|
+
export function backupFromBuffer(content, targetPath) {
|
|
154
|
+
try {
|
|
155
|
+
const targetDir = dirname(targetPath);
|
|
156
|
+
if (!existsSync(targetDir)) {
|
|
157
|
+
mkdirSync(targetDir, { recursive: true });
|
|
158
|
+
}
|
|
159
|
+
writeFileSync(targetPath, content);
|
|
160
|
+
return {
|
|
161
|
+
success: true,
|
|
162
|
+
method: "copy", // It's a write from buffer, semantically a copy
|
|
163
|
+
};
|
|
164
|
+
}
|
|
165
|
+
catch (err) {
|
|
166
|
+
const error = err;
|
|
167
|
+
return {
|
|
168
|
+
success: false,
|
|
169
|
+
method: "copy",
|
|
170
|
+
error: error.message,
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Smart backup that chooses the best method based on event type
|
|
176
|
+
*
|
|
177
|
+
* Strategy:
|
|
178
|
+
* - DELETE/RENAME: Try hardlink first (file will be removed from original location)
|
|
179
|
+
* - CHANGE: If content buffer provided, write from buffer; otherwise copy
|
|
180
|
+
* - CREATE: No backup needed (return success with no action)
|
|
181
|
+
*
|
|
182
|
+
* @param sourcePath - Original file path
|
|
183
|
+
* @param targetPath - Backup destination path
|
|
184
|
+
* @param eventType - Type of file event
|
|
185
|
+
* @param content - Optional content buffer (for CHANGE events with pre-read content)
|
|
186
|
+
* @param renamedTo - Optional new path for rename events (to create hardlink from new location)
|
|
187
|
+
*/
|
|
188
|
+
export function smartBackup(sourcePath, targetPath, eventType, content, renamedTo) {
|
|
189
|
+
switch (eventType) {
|
|
190
|
+
case "create":
|
|
191
|
+
// No backup needed for newly created files
|
|
192
|
+
return {
|
|
193
|
+
success: true,
|
|
194
|
+
method: "hardlink",
|
|
195
|
+
};
|
|
196
|
+
case "delete":
|
|
197
|
+
case "rename":
|
|
198
|
+
// For delete/rename, we want to preserve the file content
|
|
199
|
+
// Hardlink is ideal here since the original will be removed
|
|
200
|
+
if (existsSync(sourcePath)) {
|
|
201
|
+
return createHardlinkBackup(sourcePath, targetPath);
|
|
202
|
+
}
|
|
203
|
+
else if (eventType === "rename" && renamedTo && existsSync(renamedTo)) {
|
|
204
|
+
// For rename: original path gone, but new path has the same content
|
|
205
|
+
// Create hardlink from the new location
|
|
206
|
+
return createHardlinkBackup(renamedTo, targetPath);
|
|
207
|
+
}
|
|
208
|
+
else if (content) {
|
|
209
|
+
// File already removed, use provided content
|
|
210
|
+
return backupFromBuffer(content, targetPath);
|
|
211
|
+
}
|
|
212
|
+
else {
|
|
213
|
+
return {
|
|
214
|
+
success: false,
|
|
215
|
+
method: "copy",
|
|
216
|
+
error: "Source file does not exist and no content provided",
|
|
217
|
+
};
|
|
218
|
+
}
|
|
219
|
+
case "change":
|
|
220
|
+
// For change events, we have the old content in memory
|
|
221
|
+
// We must write it to backup (not hardlink, since file is being modified)
|
|
222
|
+
if (content) {
|
|
223
|
+
return backupFromBuffer(content, targetPath);
|
|
224
|
+
}
|
|
225
|
+
else if (existsSync(sourcePath)) {
|
|
226
|
+
// No pre-read content, read current file (which may already be modified)
|
|
227
|
+
// This is a fallback - ideally content should be provided
|
|
228
|
+
try {
|
|
229
|
+
const fileContent = readFileSync(sourcePath);
|
|
230
|
+
return backupFromBuffer(fileContent, targetPath);
|
|
231
|
+
}
|
|
232
|
+
catch (err) {
|
|
233
|
+
return {
|
|
234
|
+
success: false,
|
|
235
|
+
method: "copy",
|
|
236
|
+
error: `Failed to read file for backup: ${err.message}`,
|
|
237
|
+
};
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
else {
|
|
241
|
+
return {
|
|
242
|
+
success: false,
|
|
243
|
+
method: "copy",
|
|
244
|
+
error: "No content to backup for change event",
|
|
245
|
+
};
|
|
246
|
+
}
|
|
247
|
+
default:
|
|
248
|
+
return {
|
|
249
|
+
success: false,
|
|
250
|
+
method: "copy",
|
|
251
|
+
error: `Unknown event type: ${eventType}`,
|
|
252
|
+
};
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
let backupStats = {
|
|
256
|
+
hardlinks: 0,
|
|
257
|
+
copies: 0,
|
|
258
|
+
failures: 0,
|
|
259
|
+
hardlinkSavedBytes: 0,
|
|
260
|
+
};
|
|
261
|
+
export function recordBackupResult(result, fileSize) {
|
|
262
|
+
if (result.success) {
|
|
263
|
+
if (result.method === "hardlink") {
|
|
264
|
+
backupStats.hardlinks++;
|
|
265
|
+
backupStats.hardlinkSavedBytes += fileSize;
|
|
266
|
+
}
|
|
267
|
+
else {
|
|
268
|
+
backupStats.copies++;
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
else {
|
|
272
|
+
backupStats.failures++;
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
export function getBackupStats() {
|
|
276
|
+
return { ...backupStats };
|
|
277
|
+
}
|
|
278
|
+
export function resetBackupStats() {
|
|
279
|
+
backupStats = {
|
|
280
|
+
hardlinks: 0,
|
|
281
|
+
copies: 0,
|
|
282
|
+
failures: 0,
|
|
283
|
+
hardlinkSavedBytes: 0,
|
|
284
|
+
};
|
|
285
|
+
}
|
|
286
|
+
/**
|
|
287
|
+
* Check if a file is a hardlink (has more than 1 link)
|
|
288
|
+
*/
|
|
289
|
+
export function isHardlinked(filePath) {
|
|
290
|
+
try {
|
|
291
|
+
const stat = statSync(filePath);
|
|
292
|
+
return stat.nlink > 1;
|
|
293
|
+
}
|
|
294
|
+
catch {
|
|
295
|
+
return false;
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
/**
|
|
299
|
+
* Get the number of hardlinks for a file
|
|
300
|
+
*/
|
|
301
|
+
export function getHardlinkCount(filePath) {
|
|
302
|
+
try {
|
|
303
|
+
const stat = statSync(filePath);
|
|
304
|
+
return stat.nlink;
|
|
305
|
+
}
|
|
306
|
+
catch {
|
|
307
|
+
return 0;
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
/**
|
|
311
|
+
* Clear the hardlink capability cache
|
|
312
|
+
* Useful for testing or when mount points change
|
|
313
|
+
*/
|
|
314
|
+
export function clearHardlinkCache() {
|
|
315
|
+
hardlinkCapabilityCache.clear();
|
|
316
|
+
}
|
|
317
|
+
//# sourceMappingURL=hardlink.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hardlink.js","sourceRoot":"","sources":["../src/hardlink.ts"],"names":[],"mappings":"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"}
|
package/dist/watcher.d.ts
CHANGED
|
@@ -12,6 +12,7 @@ export declare class ShieldWatcher {
|
|
|
12
12
|
private trackedFiles;
|
|
13
13
|
private pendingRenames;
|
|
14
14
|
private restoreLockPath;
|
|
15
|
+
private recentlyRenamed;
|
|
15
16
|
private pendingChanges;
|
|
16
17
|
private batchTimeout;
|
|
17
18
|
constructor(config: ShieldConfig, backupManager: BackupManager, log?: LogFn);
|
package/dist/watcher.js
CHANGED
|
@@ -9,6 +9,8 @@ export class ShieldWatcher {
|
|
|
9
9
|
this.batchMs = 2000; // batch collect change time window
|
|
10
10
|
this.trackedFiles = new Map();
|
|
11
11
|
this.pendingRenames = new Map();
|
|
12
|
+
// Track recently renamed files to prevent duplicate change events
|
|
13
|
+
this.recentlyRenamed = new Set();
|
|
12
14
|
// snapshot batch process
|
|
13
15
|
this.pendingChanges = new Map();
|
|
14
16
|
this.batchTimeout = null;
|
|
@@ -135,6 +137,10 @@ export class ShieldWatcher {
|
|
|
135
137
|
}, 500);
|
|
136
138
|
}
|
|
137
139
|
handlePotentialRename(newPath) {
|
|
140
|
+
// Skip if this file was just renamed to (prevents duplicate events)
|
|
141
|
+
if (this.recentlyRenamed.has(newPath)) {
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
138
144
|
for (const [oldPath, pending] of this.pendingRenames.entries()) {
|
|
139
145
|
if (oldPath !== newPath) {
|
|
140
146
|
this.pendingRenames.delete(oldPath);
|
|
@@ -146,6 +152,11 @@ export class ShieldWatcher {
|
|
|
146
152
|
content: pending.content,
|
|
147
153
|
renamedTo: newPath,
|
|
148
154
|
});
|
|
155
|
+
// Mark as recently renamed to prevent duplicate change events
|
|
156
|
+
this.recentlyRenamed.add(newPath);
|
|
157
|
+
setTimeout(() => {
|
|
158
|
+
this.recentlyRenamed.delete(newPath);
|
|
159
|
+
}, this.debounceMs + 500);
|
|
149
160
|
this.trackFile(newPath);
|
|
150
161
|
return;
|
|
151
162
|
}
|
|
@@ -153,6 +164,10 @@ export class ShieldWatcher {
|
|
|
153
164
|
this.handleFileChange(newPath, "change");
|
|
154
165
|
}
|
|
155
166
|
handleFileChange(relativePath, eventType) {
|
|
167
|
+
// Skip if this file was just renamed to (prevents duplicate events)
|
|
168
|
+
if (this.recentlyRenamed.has(relativePath)) {
|
|
169
|
+
return;
|
|
170
|
+
}
|
|
156
171
|
// Get content before change for backup
|
|
157
172
|
const tracked = this.trackedFiles.get(relativePath);
|
|
158
173
|
const content = tracked?.content;
|
|
@@ -228,6 +243,9 @@ export class ShieldWatcher {
|
|
|
228
243
|
clearTimeout(this.batchTimeout);
|
|
229
244
|
this.batchTimeout = null;
|
|
230
245
|
}
|
|
246
|
+
// Clean up state
|
|
247
|
+
this.recentlyRenamed.clear();
|
|
248
|
+
this.pendingRenames.clear();
|
|
231
249
|
this.log("Shield stopped");
|
|
232
250
|
}
|
|
233
251
|
}
|
package/dist/watcher.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"watcher.js","sourceRoot":"","sources":["../src/watcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAa,UAAU,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAChE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAG5B,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAiBzC,MAAM,OAAO,aAAa;
|
|
1
|
+
{"version":3,"file":"watcher.js","sourceRoot":"","sources":["../src/watcher.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "agentshield",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.5",
|
|
4
4
|
"description": "Instant file protection for AI agent operations - hardlink-based zero-copy backup system",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -65,8 +65,10 @@
|
|
|
65
65
|
"build:bin:linux-amd64": "bun build --compile --target=bun-linux-x64 ./src/index.ts --outfile shield",
|
|
66
66
|
"build:bin:linux-arm64": "bun build --compile --target=bun-linux-arm64 ./src/index.ts --outfile shield",
|
|
67
67
|
"build:bin:windows": "bun build --compile --target=bun-windows-x64 ./src/index.ts --outfile shield.exe",
|
|
68
|
-
"build:bin:all": "bash scripts/
|
|
68
|
+
"build:bin:all": "bash scripts/package_cli.sh",
|
|
69
69
|
"lint": "eslint src --ext .ts",
|
|
70
|
-
"lint:fix": "eslint src --ext .ts --fix"
|
|
70
|
+
"lint:fix": "eslint src --ext .ts --fix",
|
|
71
|
+
"test": "bun test",
|
|
72
|
+
"test:hardlink": "bun test src/hardlink.test.ts"
|
|
71
73
|
}
|
|
72
74
|
}
|