@kodrunhq/claudefy 1.1.3 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +46 -4
- package/dist/backup-manager/backup-manager.d.ts +1 -0
- package/dist/backup-manager/backup-manager.js +9 -1
- package/dist/backup-manager/backup-manager.js.map +1 -1
- package/dist/cli.js +16 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/init.js +1 -0
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/join.js +9 -5
- package/dist/commands/join.js.map +1 -1
- package/dist/commands/override.js +1 -0
- package/dist/commands/override.js.map +1 -1
- package/dist/commands/pull.d.ts +6 -0
- package/dist/commands/pull.js +197 -141
- package/dist/commands/pull.js.map +1 -1
- package/dist/commands/push.d.ts +8 -0
- package/dist/commands/push.js +200 -76
- package/dist/commands/push.js.map +1 -1
- package/dist/commands/restore.d.ts +12 -0
- package/dist/commands/restore.js +71 -0
- package/dist/commands/restore.js.map +1 -0
- package/dist/encryptor/encryptor.d.ts +10 -5
- package/dist/encryptor/encryptor.js +50 -31
- package/dist/encryptor/encryptor.js.map +1 -1
- package/dist/encryptor/file-encryptor.d.ts +8 -0
- package/dist/encryptor/file-encryptor.js +32 -0
- package/dist/encryptor/file-encryptor.js.map +1 -0
- package/dist/encryptor/key-derivation.d.ts +2 -0
- package/dist/encryptor/key-derivation.js +20 -0
- package/dist/encryptor/key-derivation.js.map +1 -0
- package/dist/encryptor/line-encryptor.d.ts +10 -0
- package/dist/encryptor/line-encryptor.js +43 -0
- package/dist/encryptor/line-encryptor.js.map +1 -0
- package/dist/git-adapter/git-adapter.d.ts +11 -1
- package/dist/git-adapter/git-adapter.js +117 -3
- package/dist/git-adapter/git-adapter.js.map +1 -1
- package/dist/index.js +5 -3
- package/dist/index.js.map +1 -1
- package/dist/machine-registry/machine-registry.d.ts +1 -0
- package/dist/machine-registry/machine-registry.js +21 -0
- package/dist/machine-registry/machine-registry.js.map +1 -1
- package/dist/merger/merger.d.ts +1 -7
- package/dist/merger/merger.js +17 -6
- package/dist/merger/merger.js.map +1 -1
- package/dist/path-mapper/path-mapper.d.ts +1 -1
- package/dist/path-mapper/path-mapper.js +19 -8
- package/dist/path-mapper/path-mapper.js.map +1 -1
- package/dist/secret-scanner/scanner.js +8 -0
- package/dist/secret-scanner/scanner.js.map +1 -1
- package/dist/update-check.d.ts +5 -0
- package/dist/update-check.js +83 -0
- package/dist/update-check.js.map +1 -0
- package/package.json +4 -4
package/dist/commands/push.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { lstat, mkdir, readdir, readFile, rm, writeFile } from "node:fs/promises";
|
|
2
|
+
import { createHash } from "node:crypto";
|
|
3
|
+
import { join, relative, resolve, sep } from "node:path";
|
|
3
4
|
import { existsSync } from "node:fs";
|
|
4
5
|
import { hostname, platform } from "node:os";
|
|
5
6
|
import { ConfigManager } from "../config/config-manager.js";
|
|
@@ -35,93 +36,51 @@ export class PushCommand {
|
|
|
35
36
|
`${classification.unknown.length} ${unknownLabel}, ` +
|
|
36
37
|
`${classification.denylist.length} denied`);
|
|
37
38
|
}
|
|
38
|
-
// 2. Initialize git adapter
|
|
39
|
+
// 2. Initialize git adapter + per-machine branch
|
|
39
40
|
const gitAdapter = new GitAdapter(join(this.homeDir, ".claudefy"));
|
|
40
41
|
await gitAdapter.initStore(config.backend.url);
|
|
42
|
+
await gitAdapter.ensureMachineBranch(config.machineId);
|
|
41
43
|
try {
|
|
42
|
-
await gitAdapter.
|
|
44
|
+
await gitAdapter.pullAndMergeMain();
|
|
43
45
|
}
|
|
44
46
|
catch {
|
|
45
|
-
|
|
47
|
+
if (!options.quiet) {
|
|
48
|
+
output.info("Warning: Unable to pull latest changes from remote; proceeding with local state only.");
|
|
49
|
+
}
|
|
46
50
|
}
|
|
47
51
|
const storePath = gitAdapter.getStorePath();
|
|
48
52
|
const configDir = join(storePath, "config");
|
|
49
53
|
const unknownDir = join(storePath, "unknown");
|
|
50
|
-
// 3.
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
54
|
+
// 3. Build path mapper
|
|
55
|
+
const links = await this.configManager.getLinks();
|
|
56
|
+
const pathMapper = new PathMapper(links);
|
|
57
|
+
// 4. Hash existing store files
|
|
58
|
+
const configHashes = await this.collectStoreHashes(configDir);
|
|
59
|
+
const unknownHashes = await this.collectStoreHashes(unknownDir);
|
|
60
|
+
// 5. Incremental sync — write only changed files
|
|
61
|
+
const changedFiles = [];
|
|
57
62
|
await mkdir(configDir, { recursive: true });
|
|
58
63
|
await mkdir(unknownDir, { recursive: true });
|
|
59
|
-
//
|
|
64
|
+
// Track which top-level items are being synced for deletion detection
|
|
65
|
+
const syncedConfigItems = [];
|
|
66
|
+
const syncedUnknownItems = [];
|
|
60
67
|
for (const item of classification.allowlist) {
|
|
68
|
+
syncedConfigItems.push(item.name);
|
|
61
69
|
const src = join(this.claudeDir, item.name);
|
|
62
|
-
|
|
63
|
-
await cp(src, dest, { recursive: true });
|
|
70
|
+
await this.syncItem(src, configDir, item.name, configHashes, changedFiles, pathMapper);
|
|
64
71
|
}
|
|
65
|
-
// 5. Copy unknown items
|
|
66
72
|
for (const item of classification.unknown) {
|
|
73
|
+
syncedUnknownItems.push(item.name);
|
|
67
74
|
const src = join(this.claudeDir, item.name);
|
|
68
|
-
|
|
69
|
-
await cp(src, dest, { recursive: true });
|
|
70
|
-
}
|
|
71
|
-
// 6. Normalize paths in known files
|
|
72
|
-
const links = await this.configManager.getLinks();
|
|
73
|
-
const pathMapper = new PathMapper(links);
|
|
74
|
-
// settings.json
|
|
75
|
-
const settingsPath = join(configDir, "settings.json");
|
|
76
|
-
if (existsSync(settingsPath)) {
|
|
77
|
-
const settings = JSON.parse(await readFile(settingsPath, "utf-8"));
|
|
78
|
-
const normalized = pathMapper.normalizeSettingsPaths(settings, this.claudeDir);
|
|
79
|
-
await writeFile(settingsPath, JSON.stringify(normalized, null, 2));
|
|
80
|
-
}
|
|
81
|
-
// installed_plugins.json
|
|
82
|
-
const pluginsJsonPath = join(configDir, "plugins", "installed_plugins.json");
|
|
83
|
-
if (existsSync(pluginsJsonPath)) {
|
|
84
|
-
const plugins = JSON.parse(await readFile(pluginsJsonPath, "utf-8"));
|
|
85
|
-
const normalized = pathMapper.normalizePluginPaths(plugins, this.claudeDir);
|
|
86
|
-
await writeFile(pluginsJsonPath, JSON.stringify(normalized, null, 2));
|
|
87
|
-
}
|
|
88
|
-
// known_marketplaces.json
|
|
89
|
-
const marketplacesPath = join(configDir, "plugins", "known_marketplaces.json");
|
|
90
|
-
if (existsSync(marketplacesPath)) {
|
|
91
|
-
const mp = JSON.parse(await readFile(marketplacesPath, "utf-8"));
|
|
92
|
-
const normalized = pathMapper.normalizePluginPaths(mp, this.claudeDir);
|
|
93
|
-
await writeFile(marketplacesPath, JSON.stringify(normalized, null, 2));
|
|
94
|
-
}
|
|
95
|
-
// history.jsonl
|
|
96
|
-
const historyPath = join(configDir, "history.jsonl");
|
|
97
|
-
if (existsSync(historyPath)) {
|
|
98
|
-
const content = await readFile(historyPath, "utf-8");
|
|
99
|
-
const normalized = content
|
|
100
|
-
.split("\n")
|
|
101
|
-
.filter(Boolean)
|
|
102
|
-
.map((line) => pathMapper.normalizeJsonlLine(line))
|
|
103
|
-
.join("\n") + "\n";
|
|
104
|
-
await writeFile(historyPath, normalized);
|
|
105
|
-
}
|
|
106
|
-
// projects/ directory renaming
|
|
107
|
-
const projectsDir = join(configDir, "projects");
|
|
108
|
-
if (existsSync(projectsDir)) {
|
|
109
|
-
const projectDirs = await readdir(projectsDir);
|
|
110
|
-
for (const dirName of projectDirs) {
|
|
111
|
-
const canonicalId = pathMapper.normalizeDirName(dirName);
|
|
112
|
-
if (canonicalId) {
|
|
113
|
-
await rename(join(projectsDir, dirName), join(projectsDir, canonicalId));
|
|
114
|
-
}
|
|
115
|
-
}
|
|
75
|
+
await this.syncItem(src, unknownDir, item.name, unknownHashes, changedFiles, null);
|
|
116
76
|
}
|
|
77
|
+
// 6. Detect deletions — remove store entries not present in source
|
|
78
|
+
await this.removeDeleted(configDir, syncedConfigItems);
|
|
79
|
+
await this.removeDeleted(unknownDir, syncedUnknownItems);
|
|
117
80
|
// 7. Scan for secrets and encrypt files that contain them
|
|
118
|
-
if (!options.skipSecretScan) {
|
|
81
|
+
if (!options.skipSecretScan && changedFiles.length > 0) {
|
|
119
82
|
const scanner = new SecretScanner();
|
|
120
|
-
const
|
|
121
|
-
...(await this.collectFiles(configDir)),
|
|
122
|
-
...(await this.collectFiles(unknownDir)),
|
|
123
|
-
];
|
|
124
|
-
const findings = await scanner.scanFiles(allFiles);
|
|
83
|
+
const findings = await scanner.scanFiles(changedFiles);
|
|
125
84
|
if (findings.length > 0) {
|
|
126
85
|
if (!config.encryption.enabled || options.skipEncryption) {
|
|
127
86
|
const details = findings.map((f) => ` ${f.file}:${f.line} [${f.pattern}]`).join("\n");
|
|
@@ -134,7 +93,12 @@ export class PushCommand {
|
|
|
134
93
|
const filesToEncrypt = new Set(findings.map((f) => f.file));
|
|
135
94
|
for (const filePath of filesToEncrypt) {
|
|
136
95
|
if (existsSync(filePath) && !filePath.endsWith(".age")) {
|
|
137
|
-
|
|
96
|
+
const ad = (filePath.startsWith(configDir)
|
|
97
|
+
? relative(configDir, filePath)
|
|
98
|
+
: relative(unknownDir, filePath))
|
|
99
|
+
.split(sep)
|
|
100
|
+
.join("/");
|
|
101
|
+
await encryptor.encryptFile(filePath, filePath + ".age", ad);
|
|
138
102
|
await rm(filePath);
|
|
139
103
|
}
|
|
140
104
|
}
|
|
@@ -143,15 +107,175 @@ export class PushCommand {
|
|
|
143
107
|
}
|
|
144
108
|
}
|
|
145
109
|
}
|
|
146
|
-
//
|
|
110
|
+
// 8. Conditional manifest update
|
|
111
|
+
const hasRealChanges = !(await gitAdapter.isClean());
|
|
147
112
|
const registry = new MachineRegistry(join(storePath, "manifest.json"));
|
|
148
|
-
await registry.
|
|
149
|
-
//
|
|
150
|
-
await gitAdapter.commitAndPush(`sync: push from ${config.machineId}
|
|
113
|
+
await registry.conditionalRegister(config.machineId, hostname(), platform(), hasRealChanges);
|
|
114
|
+
// 9. Commit and push with branch support
|
|
115
|
+
const commitResult = await gitAdapter.commitAndPush(`sync: push from ${config.machineId}`, config.machineId);
|
|
151
116
|
if (!options.quiet) {
|
|
117
|
+
if (commitResult.committed && !commitResult.pushed) {
|
|
118
|
+
output.warn("Changes were committed locally, but pushing to the remote failed. Retry with 'claudefy push'.");
|
|
119
|
+
}
|
|
120
|
+
if (commitResult.pushed && !commitResult.mergedToMain) {
|
|
121
|
+
output.warn("Unable to merge machine branch into main. You may need to resolve conflicts.");
|
|
122
|
+
}
|
|
152
123
|
output.success("Push complete.");
|
|
153
124
|
}
|
|
154
125
|
}
|
|
126
|
+
async hashFile(filePath) {
|
|
127
|
+
const content = await readFile(filePath);
|
|
128
|
+
return createHash("sha256").update(content).digest("hex");
|
|
129
|
+
}
|
|
130
|
+
async hashContent(content) {
|
|
131
|
+
return createHash("sha256").update(content).digest("hex");
|
|
132
|
+
}
|
|
133
|
+
async collectStoreHashes(dirPath, prefix = "") {
|
|
134
|
+
const hashes = new Map();
|
|
135
|
+
if (!existsSync(dirPath))
|
|
136
|
+
return hashes;
|
|
137
|
+
const entries = await readdir(dirPath, { withFileTypes: true });
|
|
138
|
+
for (const entry of entries) {
|
|
139
|
+
const relPath = prefix ? `${prefix}/${entry.name}` : entry.name;
|
|
140
|
+
const fullPath = join(dirPath, entry.name);
|
|
141
|
+
if (entry.isDirectory()) {
|
|
142
|
+
const sub = await this.collectStoreHashes(fullPath, relPath);
|
|
143
|
+
for (const [k, v] of sub)
|
|
144
|
+
hashes.set(k, v);
|
|
145
|
+
}
|
|
146
|
+
else if (!entry.isSymbolicLink()) {
|
|
147
|
+
hashes.set(relPath, await this.hashFile(fullPath));
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
return hashes;
|
|
151
|
+
}
|
|
152
|
+
needsNormalization(itemName) {
|
|
153
|
+
return ["settings.json", "history.jsonl"].includes(itemName) || itemName.startsWith("plugins/");
|
|
154
|
+
}
|
|
155
|
+
normalizeContent(itemName, text, pathMapper) {
|
|
156
|
+
if (itemName === "settings.json") {
|
|
157
|
+
const parsed = JSON.parse(text);
|
|
158
|
+
const normalized = pathMapper.normalizeSettingsPaths(parsed, this.claudeDir);
|
|
159
|
+
return JSON.stringify(normalized, null, 2);
|
|
160
|
+
}
|
|
161
|
+
if (itemName === "plugins/installed_plugins.json" ||
|
|
162
|
+
itemName === "plugins/known_marketplaces.json") {
|
|
163
|
+
const parsed = JSON.parse(text);
|
|
164
|
+
const normalized = pathMapper.normalizePluginPaths(parsed, this.claudeDir);
|
|
165
|
+
return JSON.stringify(normalized, null, 2);
|
|
166
|
+
}
|
|
167
|
+
if (itemName === "history.jsonl") {
|
|
168
|
+
return (text
|
|
169
|
+
.split("\n")
|
|
170
|
+
.filter(Boolean)
|
|
171
|
+
.map((line) => pathMapper.normalizeJsonlLine(line))
|
|
172
|
+
.join("\n") + "\n");
|
|
173
|
+
}
|
|
174
|
+
return text;
|
|
175
|
+
}
|
|
176
|
+
async syncItem(srcPath, destBaseDir, itemName, storeHashes, changedFiles, pathMapper) {
|
|
177
|
+
const srcStat = await lstat(srcPath);
|
|
178
|
+
if (srcStat.isSymbolicLink())
|
|
179
|
+
return;
|
|
180
|
+
if (srcStat.isFile()) {
|
|
181
|
+
let content;
|
|
182
|
+
if (pathMapper && this.needsNormalization(itemName)) {
|
|
183
|
+
const text = await readFile(srcPath, "utf-8");
|
|
184
|
+
content = Buffer.from(this.normalizeContent(itemName, text, pathMapper));
|
|
185
|
+
}
|
|
186
|
+
else {
|
|
187
|
+
content = await readFile(srcPath);
|
|
188
|
+
}
|
|
189
|
+
const hash = await this.hashContent(content);
|
|
190
|
+
const storeHash = storeHashes.get(itemName);
|
|
191
|
+
if (hash !== storeHash) {
|
|
192
|
+
const destPath = join(destBaseDir, itemName);
|
|
193
|
+
const parentDir = join(destPath, "..");
|
|
194
|
+
await mkdir(parentDir, { recursive: true });
|
|
195
|
+
await writeFile(destPath, content);
|
|
196
|
+
changedFiles.push(destPath);
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
else if (srcStat.isDirectory()) {
|
|
200
|
+
await this.syncDirectory(srcPath, destBaseDir, itemName, storeHashes, changedFiles, pathMapper);
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
async syncDirectory(srcDir, destBaseDir, itemName, storeHashes, changedFiles, pathMapper) {
|
|
204
|
+
const destDir = join(destBaseDir, itemName);
|
|
205
|
+
await mkdir(destDir, { recursive: true });
|
|
206
|
+
const entries = await readdir(srcDir, { withFileTypes: true });
|
|
207
|
+
// Track children for deletion detection within this directory
|
|
208
|
+
const childNames = [];
|
|
209
|
+
for (const entry of entries) {
|
|
210
|
+
if (entry.isSymbolicLink())
|
|
211
|
+
continue;
|
|
212
|
+
const srcPath = join(srcDir, entry.name);
|
|
213
|
+
if (entry.isDirectory()) {
|
|
214
|
+
// Handle projects/ directory renaming
|
|
215
|
+
if (itemName === "projects" && pathMapper) {
|
|
216
|
+
const canonicalName = pathMapper.normalizeDirName(entry.name);
|
|
217
|
+
if (canonicalName) {
|
|
218
|
+
// Path traversal check
|
|
219
|
+
const destPath = resolve(join(destDir, canonicalName));
|
|
220
|
+
const rel = relative(resolve(destDir), destPath);
|
|
221
|
+
if (rel.startsWith("..") || resolve(destPath) === resolve(destDir)) {
|
|
222
|
+
continue;
|
|
223
|
+
}
|
|
224
|
+
const canonicalChildName = `${itemName}/${canonicalName}`;
|
|
225
|
+
childNames.push(canonicalName);
|
|
226
|
+
await this.syncDirectory(srcPath, destBaseDir, canonicalChildName, storeHashes, changedFiles, pathMapper);
|
|
227
|
+
continue;
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
childNames.push(entry.name);
|
|
231
|
+
const childName = `${itemName}/${entry.name}`;
|
|
232
|
+
await this.syncDirectory(srcPath, destBaseDir, childName, storeHashes, changedFiles, pathMapper);
|
|
233
|
+
}
|
|
234
|
+
else {
|
|
235
|
+
childNames.push(entry.name);
|
|
236
|
+
const childName = `${itemName}/${entry.name}`;
|
|
237
|
+
let content;
|
|
238
|
+
if (pathMapper && this.needsNormalization(childName)) {
|
|
239
|
+
const text = await readFile(srcPath, "utf-8");
|
|
240
|
+
content = Buffer.from(this.normalizeContent(childName, text, pathMapper));
|
|
241
|
+
}
|
|
242
|
+
else {
|
|
243
|
+
content = await readFile(srcPath);
|
|
244
|
+
}
|
|
245
|
+
const hash = await this.hashContent(content);
|
|
246
|
+
const storeHash = storeHashes.get(childName);
|
|
247
|
+
if (hash !== storeHash) {
|
|
248
|
+
const destPath = join(destBaseDir, childName);
|
|
249
|
+
await mkdir(join(destPath, ".."), { recursive: true });
|
|
250
|
+
await writeFile(destPath, content);
|
|
251
|
+
changedFiles.push(destPath);
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
// Remove files/dirs in the store directory that no longer exist in source
|
|
256
|
+
if (existsSync(destDir)) {
|
|
257
|
+
const storeEntries = await readdir(destDir);
|
|
258
|
+
const childSet = new Set(childNames);
|
|
259
|
+
for (const storeEntry of storeEntries) {
|
|
260
|
+
const baseName = storeEntry.endsWith(".age") ? storeEntry.slice(0, -4) : storeEntry;
|
|
261
|
+
if (!childSet.has(baseName) && !childSet.has(storeEntry)) {
|
|
262
|
+
await rm(join(destDir, storeEntry), { recursive: true });
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
async removeDeleted(storeDir, currentItems) {
|
|
268
|
+
if (!existsSync(storeDir))
|
|
269
|
+
return;
|
|
270
|
+
const entries = await readdir(storeDir);
|
|
271
|
+
const currentSet = new Set(currentItems);
|
|
272
|
+
for (const entry of entries) {
|
|
273
|
+
const baseName = entry.endsWith(".age") ? entry.slice(0, -4) : entry;
|
|
274
|
+
if (!currentSet.has(baseName) && !currentSet.has(entry)) {
|
|
275
|
+
await rm(join(storeDir, entry), { recursive: true });
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
}
|
|
155
279
|
async collectFiles(dirPath) {
|
|
156
280
|
if (!existsSync(dirPath))
|
|
157
281
|
return [];
|
|
@@ -162,7 +286,7 @@ export class PushCommand {
|
|
|
162
286
|
if (entry.isDirectory()) {
|
|
163
287
|
results.push(...(await this.collectFiles(fullPath)));
|
|
164
288
|
}
|
|
165
|
-
else {
|
|
289
|
+
else if (!entry.isSymbolicLink()) {
|
|
166
290
|
results.push(fullPath);
|
|
167
291
|
}
|
|
168
292
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"push.js","sourceRoot":"","sources":["../../src/commands/push.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"push.js","sourceRoot":"","sources":["../../src/commands/push.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export interface RestoreOptions {
|
|
2
|
+
quiet: boolean;
|
|
3
|
+
}
|
|
4
|
+
export declare class RestoreCommand {
|
|
5
|
+
private homeDir;
|
|
6
|
+
private claudeDir;
|
|
7
|
+
private backupManager;
|
|
8
|
+
constructor(homeDir: string);
|
|
9
|
+
listAvailableBackups(): Promise<string[]>;
|
|
10
|
+
restoreByName(backupName: string, options: RestoreOptions): Promise<void>;
|
|
11
|
+
executeInteractive(options: RestoreOptions): Promise<void>;
|
|
12
|
+
}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { cp, rm } from "node:fs/promises";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
import { existsSync } from "node:fs";
|
|
4
|
+
import { createInterface } from "node:readline";
|
|
5
|
+
import { BackupManager } from "../backup-manager/backup-manager.js";
|
|
6
|
+
import { output } from "../output.js";
|
|
7
|
+
export class RestoreCommand {
|
|
8
|
+
homeDir;
|
|
9
|
+
claudeDir;
|
|
10
|
+
backupManager;
|
|
11
|
+
constructor(homeDir) {
|
|
12
|
+
this.homeDir = homeDir;
|
|
13
|
+
this.claudeDir = join(homeDir, ".claude");
|
|
14
|
+
this.backupManager = new BackupManager(join(homeDir, ".claudefy"));
|
|
15
|
+
}
|
|
16
|
+
async listAvailableBackups() {
|
|
17
|
+
return this.backupManager.listBackups();
|
|
18
|
+
}
|
|
19
|
+
async restoreByName(backupName, options) {
|
|
20
|
+
const backupPath = this.backupManager.getBackupPath(backupName);
|
|
21
|
+
if (!existsSync(backupPath)) {
|
|
22
|
+
throw new Error(`Backup not found: ${backupName}`);
|
|
23
|
+
}
|
|
24
|
+
if (existsSync(this.claudeDir)) {
|
|
25
|
+
const safetyPath = await this.backupManager.createBackup(this.claudeDir, "pre-restore");
|
|
26
|
+
if (!options.quiet) {
|
|
27
|
+
output.info(`Safety backup created at: ${safetyPath}`);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
if (existsSync(this.claudeDir)) {
|
|
31
|
+
await rm(this.claudeDir, { recursive: true, force: true });
|
|
32
|
+
}
|
|
33
|
+
await cp(backupPath, this.claudeDir, { recursive: true });
|
|
34
|
+
if (!options.quiet) {
|
|
35
|
+
output.success(`Restored from backup: ${backupName}`);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
async executeInteractive(options) {
|
|
39
|
+
const backups = await this.listAvailableBackups();
|
|
40
|
+
if (backups.length === 0) {
|
|
41
|
+
output.info("No backups available.");
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
console.log("\nAvailable backups:\n");
|
|
45
|
+
for (let i = 0; i < backups.length; i++) {
|
|
46
|
+
console.log(` ${i + 1}. ${backups[i]}`);
|
|
47
|
+
}
|
|
48
|
+
console.log();
|
|
49
|
+
const rl = createInterface({ input: process.stdin, output: process.stdout });
|
|
50
|
+
const ask = (question) => new Promise((resolve) => rl.question(question, resolve));
|
|
51
|
+
try {
|
|
52
|
+
const indexStr = await ask("Enter backup number to restore: ");
|
|
53
|
+
const index = parseInt(indexStr, 10) - 1;
|
|
54
|
+
if (isNaN(index) || index < 0 || index >= backups.length) {
|
|
55
|
+
output.error("Invalid selection.");
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
const selected = backups[index];
|
|
59
|
+
const confirm = await ask(`This will replace ~/.claude with backup "${selected}". Continue? (y/N) `);
|
|
60
|
+
if (confirm.toLowerCase() !== "y") {
|
|
61
|
+
output.info("Restore cancelled.");
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
await this.restoreByName(selected, options);
|
|
65
|
+
}
|
|
66
|
+
finally {
|
|
67
|
+
rl.close();
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=restore.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"restore.js","sourceRoot":"","sources":["../../src/commands/restore.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,15 @@
|
|
|
1
1
|
export declare class Encryptor {
|
|
2
|
-
private
|
|
2
|
+
private lineEncryptor;
|
|
3
|
+
private fileEncryptor;
|
|
3
4
|
constructor(passphrase: string);
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
private isJsonlFile;
|
|
6
|
+
private isOriginallyJsonl;
|
|
7
|
+
encryptFile(inputPath: string, outputPath: string, ad: string): Promise<void>;
|
|
8
|
+
decryptFile(inputPath: string, outputPath: string, ad: string): Promise<void>;
|
|
9
|
+
encryptString(input: string, ad: string): Promise<string>;
|
|
10
|
+
decryptString(encrypted: string, ad: string): Promise<string>;
|
|
8
11
|
encryptDirectory(dirPath: string): Promise<void>;
|
|
12
|
+
private _encryptDirRecursive;
|
|
9
13
|
decryptDirectory(dirPath: string): Promise<void>;
|
|
14
|
+
private _decryptDirRecursive;
|
|
10
15
|
}
|
|
@@ -1,65 +1,84 @@
|
|
|
1
|
-
import { Encrypter, Decrypter } from "age-encryption";
|
|
2
1
|
import { readFile, readdir, rm, writeFile } from "node:fs/promises";
|
|
3
|
-
import { join } from "node:path";
|
|
2
|
+
import { join, relative, sep } from "node:path";
|
|
3
|
+
import { LineEncryptor } from "./line-encryptor.js";
|
|
4
|
+
import { FileEncryptor } from "./file-encryptor.js";
|
|
4
5
|
export class Encryptor {
|
|
5
|
-
|
|
6
|
+
lineEncryptor;
|
|
7
|
+
fileEncryptor;
|
|
6
8
|
constructor(passphrase) {
|
|
7
|
-
this.
|
|
9
|
+
this.lineEncryptor = new LineEncryptor(passphrase);
|
|
10
|
+
this.fileEncryptor = new FileEncryptor(passphrase);
|
|
8
11
|
}
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
const e = new Encrypter();
|
|
12
|
-
e.setPassphrase(this.passphrase);
|
|
13
|
-
const encrypted = await e.encrypt(data);
|
|
14
|
-
await writeFile(outputPath, encrypted);
|
|
12
|
+
isJsonlFile(filePath) {
|
|
13
|
+
return filePath.endsWith(".jsonl");
|
|
15
14
|
}
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
const d = new Decrypter();
|
|
19
|
-
d.addPassphrase(this.passphrase);
|
|
20
|
-
const decrypted = await d.decrypt(data, "uint8array");
|
|
21
|
-
await writeFile(outputPath, decrypted);
|
|
15
|
+
isOriginallyJsonl(agePath) {
|
|
16
|
+
return agePath.endsWith(".jsonl.age");
|
|
22
17
|
}
|
|
23
|
-
async
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
18
|
+
async encryptFile(inputPath, outputPath, ad) {
|
|
19
|
+
if (this.isJsonlFile(inputPath)) {
|
|
20
|
+
const content = await readFile(inputPath, "utf-8");
|
|
21
|
+
const encrypted = this.lineEncryptor.encryptFileContent(content, ad);
|
|
22
|
+
await writeFile(outputPath, encrypted);
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
const data = await readFile(inputPath);
|
|
26
|
+
const encrypted = this.fileEncryptor.encrypt(new Uint8Array(data), ad);
|
|
27
|
+
await writeFile(outputPath, encrypted);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
async decryptFile(inputPath, outputPath, ad) {
|
|
31
|
+
const content = await readFile(inputPath, "utf-8");
|
|
32
|
+
if (this.isOriginallyJsonl(inputPath)) {
|
|
33
|
+
const decrypted = this.lineEncryptor.decryptFileContent(content, ad);
|
|
34
|
+
await writeFile(outputPath, decrypted);
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
const decrypted = this.fileEncryptor.decrypt(content, ad);
|
|
38
|
+
await writeFile(outputPath, decrypted);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
async encryptString(input, ad) {
|
|
42
|
+
return this.fileEncryptor.encryptString(input, ad);
|
|
28
43
|
}
|
|
29
|
-
async decryptString(
|
|
30
|
-
|
|
31
|
-
const d = new Decrypter();
|
|
32
|
-
d.addPassphrase(this.passphrase);
|
|
33
|
-
const decrypted = await d.decrypt(data, "uint8array");
|
|
34
|
-
return new TextDecoder().decode(decrypted);
|
|
44
|
+
async decryptString(encrypted, ad) {
|
|
45
|
+
return this.fileEncryptor.decryptString(encrypted, ad);
|
|
35
46
|
}
|
|
36
47
|
async encryptDirectory(dirPath) {
|
|
48
|
+
await this._encryptDirRecursive(dirPath, dirPath);
|
|
49
|
+
}
|
|
50
|
+
async _encryptDirRecursive(dirPath, rootPath) {
|
|
37
51
|
const entries = await readdir(dirPath, { withFileTypes: true });
|
|
38
52
|
for (const entry of entries) {
|
|
39
53
|
if (entry.isSymbolicLink())
|
|
40
54
|
continue;
|
|
41
55
|
const fullPath = join(dirPath, entry.name);
|
|
42
56
|
if (entry.isDirectory()) {
|
|
43
|
-
await this.
|
|
57
|
+
await this._encryptDirRecursive(fullPath, rootPath);
|
|
44
58
|
}
|
|
45
59
|
else if (!entry.name.endsWith(".age")) {
|
|
46
|
-
|
|
60
|
+
const ad = relative(rootPath, fullPath).split(sep).join("/");
|
|
61
|
+
await this.encryptFile(fullPath, fullPath + ".age", ad);
|
|
47
62
|
await rm(fullPath);
|
|
48
63
|
}
|
|
49
64
|
}
|
|
50
65
|
}
|
|
51
66
|
async decryptDirectory(dirPath) {
|
|
67
|
+
await this._decryptDirRecursive(dirPath, dirPath);
|
|
68
|
+
}
|
|
69
|
+
async _decryptDirRecursive(dirPath, rootPath) {
|
|
52
70
|
const entries = await readdir(dirPath, { withFileTypes: true });
|
|
53
71
|
for (const entry of entries) {
|
|
54
72
|
if (entry.isSymbolicLink())
|
|
55
73
|
continue;
|
|
56
74
|
const fullPath = join(dirPath, entry.name);
|
|
57
75
|
if (entry.isDirectory()) {
|
|
58
|
-
await this.
|
|
76
|
+
await this._decryptDirRecursive(fullPath, rootPath);
|
|
59
77
|
}
|
|
60
78
|
else if (entry.name.endsWith(".age")) {
|
|
61
79
|
const outputPath = fullPath.replace(/\.age$/, "");
|
|
62
|
-
|
|
80
|
+
const ad = relative(rootPath, outputPath).split(sep).join("/");
|
|
81
|
+
await this.decryptFile(fullPath, outputPath, ad);
|
|
63
82
|
await rm(fullPath);
|
|
64
83
|
}
|
|
65
84
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"encryptor.js","sourceRoot":"","sources":["../../src/encryptor/encryptor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"encryptor.js","sourceRoot":"","sources":["../../src/encryptor/encryptor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACpE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,MAAM,OAAO,SAAS;IACZ,aAAa,CAAgB;IAC7B,aAAa,CAAgB;IAErC,YAAY,UAAkB;QAC5B,IAAI,CAAC,aAAa,GAAG,IAAI,aAAa,CAAC,UAAU,CAAC,CAAC;QACnD,IAAI,CAAC,aAAa,GAAG,IAAI,aAAa,CAAC,UAAU,CAAC,CAAC;IACrD,CAAC;IAEO,WAAW,CAAC,QAAgB;QAClC,OAAO,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACrC,CAAC;IAEO,iBAAiB,CAAC,OAAe;QACvC,OAAO,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IACxC,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,SAAiB,EAAE,UAAkB,EAAE,EAAU;QACjE,IAAI,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC;YAChC,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YACnD,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YACrE,MAAM,SAAS,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QACzC,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,SAAS,CAAC,CAAC;YACvC,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;YACvE,MAAM,SAAS,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,SAAiB,EAAE,UAAkB,EAAE,EAAU;QACjE,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACnD,IAAI,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,EAAE,CAAC;YACtC,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YACrE,MAAM,SAAS,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QACzC,CAAC;aAAM,CAAC;YACN,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YAC1D,MAAM,SAAS,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,KAAa,EAAE,EAAU;QAC3C,OAAO,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACrD,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,SAAiB,EAAE,EAAU;QAC/C,OAAO,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IACzD,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,OAAe;QACpC,MAAM,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACpD,CAAC;IAEO,KAAK,CAAC,oBAAoB,CAAC,OAAe,EAAE,QAAgB;QAClE,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QAChE,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,IAAI,KAAK,CAAC,cAAc,EAAE;gBAAE,SAAS;YACrC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YAC3C,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;gBACxB,MAAM,IAAI,CAAC,oBAAoB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YACtD,CAAC;iBAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;gBACxC,MAAM,EAAE,GAAG,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAC7D,MAAM,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,EAAE,EAAE,CAAC,CAAC;gBACxD,MAAM,EAAE,CAAC,QAAQ,CAAC,CAAC;YACrB,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,OAAe;QACpC,MAAM,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACpD,CAAC;IAEO,KAAK,CAAC,oBAAoB,CAAC,OAAe,EAAE,QAAgB;QAClE,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QAChE,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,IAAI,KAAK,CAAC,cAAc,EAAE;gBAAE,SAAS;YACrC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YAC3C,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;gBACxB,MAAM,IAAI,CAAC,oBAAoB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YACtD,CAAC;iBAAM,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;gBACvC,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;gBAClD,MAAM,EAAE,GAAG,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAC/D,MAAM,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC;gBACjD,MAAM,EAAE,CAAC,QAAQ,CAAC,CAAC;YACrB,CAAC;QACH,CAAC;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare class FileEncryptor {
|
|
2
|
+
private key;
|
|
3
|
+
constructor(passphrase: string);
|
|
4
|
+
encrypt(data: Uint8Array, ad: string): string;
|
|
5
|
+
decrypt(encoded: string, ad: string): Uint8Array;
|
|
6
|
+
encryptString(text: string, ad: string): string;
|
|
7
|
+
decryptString(encoded: string, ad: string): string;
|
|
8
|
+
}
|