@kodrunhq/claudefy 1.5.3 → 1.6.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/dist/backup-manager/backup-manager.d.ts +8 -0
- package/dist/backup-manager/backup-manager.js +39 -1
- package/dist/backup-manager/backup-manager.js.map +1 -1
- package/dist/claude-json-sync/claude-json-sync.js +6 -6
- package/dist/claude-json-sync/claude-json-sync.js.map +1 -1
- package/dist/cli.js +37 -4
- package/dist/cli.js.map +1 -1
- package/dist/commands/diff.js +2 -11
- package/dist/commands/diff.js.map +1 -1
- package/dist/commands/doctor.js +8 -2
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/init.js +1 -1
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/join.js +1 -1
- package/dist/commands/join.js.map +1 -1
- package/dist/commands/pull.d.ts +6 -0
- package/dist/commands/pull.js +123 -66
- package/dist/commands/pull.js.map +1 -1
- package/dist/commands/push.d.ts +1 -0
- package/dist/commands/push.js +79 -64
- package/dist/commands/push.js.map +1 -1
- package/dist/commands/rotate-passphrase.js +40 -30
- package/dist/commands/rotate-passphrase.js.map +1 -1
- package/dist/config/config-manager.d.ts +1 -0
- package/dist/config/config-manager.js +69 -5
- package/dist/config/config-manager.js.map +1 -1
- package/dist/diff-utils/diff-utils.d.ts +5 -0
- package/dist/diff-utils/diff-utils.js +13 -0
- package/dist/diff-utils/diff-utils.js.map +1 -1
- package/dist/encryptor/encryptor.d.ts +2 -2
- package/dist/encryptor/encryptor.js +19 -10
- package/dist/encryptor/encryptor.js.map +1 -1
- package/dist/encryptor/line-encryptor.js +2 -2
- package/dist/encryptor/line-encryptor.js.map +1 -1
- package/dist/encryptor/passphrase.js +12 -4
- package/dist/encryptor/passphrase.js.map +1 -1
- package/dist/git-adapter/git-adapter.d.ts +2 -0
- package/dist/git-adapter/git-adapter.js +13 -5
- package/dist/git-adapter/git-adapter.js.map +1 -1
- package/dist/hook-manager/hook-manager.js +12 -1
- package/dist/hook-manager/hook-manager.js.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/lockfile/lockfile.d.ts +3 -1
- package/dist/lockfile/lockfile.js +29 -14
- package/dist/lockfile/lockfile.js.map +1 -1
- package/dist/logger.js +14 -1
- package/dist/logger.js.map +1 -1
- package/dist/machine-registry/machine-registry.d.ts +6 -0
- package/dist/machine-registry/machine-registry.js +26 -18
- package/dist/machine-registry/machine-registry.js.map +1 -1
- package/dist/merger/merger.js +2 -1
- package/dist/merger/merger.js.map +1 -1
- package/dist/output.d.ts +6 -0
- package/dist/output.js +23 -0
- package/dist/output.js.map +1 -1
- package/dist/secret-scanner/scanner.js +15 -2
- package/dist/secret-scanner/scanner.js.map +1 -1
- package/dist/sync-filter/sync-filter.js +19 -10
- package/dist/sync-filter/sync-filter.js.map +1 -1
- package/dist/types.d.ts +8 -0
- package/dist/types.js +5 -0
- package/dist/types.js.map +1 -0
- package/dist/update-check.js +4 -4
- package/dist/update-check.js.map +1 -1
- package/package.json +1 -1
- package/dist/commands/logs.d.ts +0 -9
- package/dist/commands/logs.js +0 -32
- package/dist/commands/logs.js.map +0 -1
- package/dist/lockfile.d.ts +0 -22
- package/dist/lockfile.js +0 -119
- package/dist/lockfile.js.map +0 -1
package/dist/commands/pull.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { cp, mkdir, readdir, readFile, rename, rm, writeFile } from "node:fs/promises";
|
|
2
2
|
import { join, relative, resolve } from "node:path";
|
|
3
3
|
import { existsSync } from "node:fs";
|
|
4
|
-
import chalk from "chalk";
|
|
5
4
|
import { simpleGit } from "simple-git";
|
|
6
5
|
import { ConfigManager } from "../config/config-manager.js";
|
|
7
6
|
import { GitAdapter } from "../git-adapter/git-adapter.js";
|
|
@@ -13,6 +12,16 @@ import { output } from "../output.js";
|
|
|
13
12
|
import { STORE_CONFIG_DIR, STORE_UNKNOWN_DIR } from "../config/defaults.js";
|
|
14
13
|
import { Lockfile } from "../lockfile/lockfile.js";
|
|
15
14
|
import { ClaudeJsonSync } from "../claude-json-sync/claude-json-sync.js";
|
|
15
|
+
// Keys stripped from ALL settings.json files (top-level and per-project) during pull.
|
|
16
|
+
// Per CLAUDE.md spec: prevent remote code injection via hooks/mcpServers/env/permissions.
|
|
17
|
+
const DANGEROUS_KEYS = [
|
|
18
|
+
"hooks",
|
|
19
|
+
"mcpServers",
|
|
20
|
+
"env",
|
|
21
|
+
"permissions",
|
|
22
|
+
"allowedTools",
|
|
23
|
+
"apiKeyHelper",
|
|
24
|
+
];
|
|
16
25
|
export class PullCommand {
|
|
17
26
|
homeDir;
|
|
18
27
|
claudeDir;
|
|
@@ -68,62 +77,7 @@ export class PullCommand {
|
|
|
68
77
|
const resolvedClaudeDir = resolve(this.claudeDir);
|
|
69
78
|
// Dry-run: show what would be pulled without modifying anything
|
|
70
79
|
if (options.dryRun) {
|
|
71
|
-
|
|
72
|
-
const { computeDiff } = await import("../diff-utils/diff-utils.js");
|
|
73
|
-
const { cp, rm: rmTmp, mkdir: mkTmp } = await import("node:fs/promises");
|
|
74
|
-
const tmpStore = join(claudefyDir, ".dryrun-store-tmp");
|
|
75
|
-
const tmpLocal = join(claudefyDir, ".dryrun-local-tmp");
|
|
76
|
-
if (existsSync(tmpStore))
|
|
77
|
-
await rmTmp(tmpStore, { recursive: true, force: true });
|
|
78
|
-
if (existsSync(tmpLocal))
|
|
79
|
-
await rmTmp(tmpLocal, { recursive: true, force: true });
|
|
80
|
-
await mkTmp(tmpStore, { recursive: true });
|
|
81
|
-
await mkTmp(tmpLocal, { recursive: true });
|
|
82
|
-
try {
|
|
83
|
-
// Copy store config, stripping .age extensions
|
|
84
|
-
if (existsSync(storeConfigDir)) {
|
|
85
|
-
await cp(storeConfigDir, tmpStore, { recursive: true });
|
|
86
|
-
await this.stripAgeExtensionsForDryRun(tmpStore);
|
|
87
|
-
}
|
|
88
|
-
// Copy allowlisted local files
|
|
89
|
-
if (existsSync(this.claudeDir)) {
|
|
90
|
-
const syncFilterConfig = await this.configManager.getSyncFilter();
|
|
91
|
-
const { SyncFilter } = await import("../sync-filter/sync-filter.js");
|
|
92
|
-
const syncFilter = new SyncFilter(syncFilterConfig);
|
|
93
|
-
const classification = await syncFilter.classify(this.claudeDir);
|
|
94
|
-
const filteredAllowlist = options.only
|
|
95
|
-
? classification.allowlist.filter((i) => i.name === options.only)
|
|
96
|
-
: classification.allowlist;
|
|
97
|
-
for (const item of filteredAllowlist) {
|
|
98
|
-
const src = join(this.claudeDir, item.name);
|
|
99
|
-
if (existsSync(src))
|
|
100
|
-
await cp(src, join(tmpLocal, item.name), { recursive: true });
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
const diff = await computeDiff(tmpStore, tmpLocal);
|
|
104
|
-
if (!diff.hasChanges) {
|
|
105
|
-
if (!options.quiet)
|
|
106
|
-
output.info("Dry run: no pull changes detected.");
|
|
107
|
-
}
|
|
108
|
-
else {
|
|
109
|
-
if (!options.quiet) {
|
|
110
|
-
output.heading("Dry run — pull would change:");
|
|
111
|
-
for (const f of diff.added)
|
|
112
|
-
console.log(chalk.green(` Added: ${f}`));
|
|
113
|
-
for (const f of diff.modified)
|
|
114
|
-
console.log(chalk.yellow(` Modified: ${f}`));
|
|
115
|
-
for (const f of diff.deleted)
|
|
116
|
-
console.log(chalk.red(` Deleted: ${f}`));
|
|
117
|
-
}
|
|
118
|
-
process.exitCode = 1;
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
finally {
|
|
122
|
-
if (existsSync(tmpStore))
|
|
123
|
-
await rmTmp(tmpStore, { recursive: true, force: true });
|
|
124
|
-
if (existsSync(tmpLocal))
|
|
125
|
-
await rmTmp(tmpLocal, { recursive: true, force: true });
|
|
126
|
-
}
|
|
80
|
+
await this.executePullDryRun(options, storePath, claudefyDir, result);
|
|
127
81
|
return result;
|
|
128
82
|
}
|
|
129
83
|
// 2. Check for override marker (check on main branch where overrides are written)
|
|
@@ -279,6 +233,8 @@ export class PullCommand {
|
|
|
279
233
|
}
|
|
280
234
|
}
|
|
281
235
|
}
|
|
236
|
+
// Security: strip DANGEROUS_KEYS from all project-level settings.json files
|
|
237
|
+
await this.stripDangerousKeysFromProjects(projectsDir);
|
|
282
238
|
if (interruptedSignal)
|
|
283
239
|
break;
|
|
284
240
|
// 7. Merge and copy to ~/.claude
|
|
@@ -297,14 +253,6 @@ export class PullCommand {
|
|
|
297
253
|
});
|
|
298
254
|
}
|
|
299
255
|
// Security: strip keys that can execute code or modify permissions
|
|
300
|
-
const DANGEROUS_KEYS = [
|
|
301
|
-
"hooks",
|
|
302
|
-
"mcpServers",
|
|
303
|
-
"env",
|
|
304
|
-
"permissions",
|
|
305
|
-
"allowedTools",
|
|
306
|
-
"apiKeyHelper",
|
|
307
|
-
];
|
|
308
256
|
if (remoteSettings && typeof remoteSettings === "object") {
|
|
309
257
|
for (const key of DANGEROUS_KEYS) {
|
|
310
258
|
if (key in remoteSettings) {
|
|
@@ -338,6 +286,8 @@ export class PullCommand {
|
|
|
338
286
|
for (const entry of entries) {
|
|
339
287
|
if (entry.name === "settings.json")
|
|
340
288
|
continue; // Already handled
|
|
289
|
+
if (entry.name === "claude-json-sync.json")
|
|
290
|
+
continue; // Internal store artifact
|
|
341
291
|
if (options.only && entry.name !== options.only)
|
|
342
292
|
continue;
|
|
343
293
|
// Security: skip symlinks to prevent path traversal attacks
|
|
@@ -444,7 +394,14 @@ export class PullCommand {
|
|
|
444
394
|
// Use git show to read .override from main without switching branches
|
|
445
395
|
const content = await git.show(["main:.override"]);
|
|
446
396
|
const marker = JSON.parse(content);
|
|
447
|
-
|
|
397
|
+
if (marker !== null &&
|
|
398
|
+
typeof marker === "object" &&
|
|
399
|
+
typeof marker["machine"] === "string" &&
|
|
400
|
+
typeof marker["timestamp"] === "string") {
|
|
401
|
+
const m = marker;
|
|
402
|
+
return { machine: m["machine"], timestamp: m["timestamp"] };
|
|
403
|
+
}
|
|
404
|
+
return null;
|
|
448
405
|
}
|
|
449
406
|
catch {
|
|
450
407
|
return null;
|
|
@@ -486,6 +443,69 @@ export class PullCommand {
|
|
|
486
443
|
}
|
|
487
444
|
}
|
|
488
445
|
}
|
|
446
|
+
async executePullDryRun(options, storePath, claudefyDir, result) {
|
|
447
|
+
const storeConfigDir = join(storePath, STORE_CONFIG_DIR);
|
|
448
|
+
const storeUnknownDir = join(storePath, STORE_UNKNOWN_DIR);
|
|
449
|
+
const { computeDiff, printDiffLines } = await import("../diff-utils/diff-utils.js");
|
|
450
|
+
const tmpStore = join(claudefyDir, ".dryrun-store-tmp");
|
|
451
|
+
const tmpLocal = join(claudefyDir, ".dryrun-local-tmp");
|
|
452
|
+
if (existsSync(tmpStore))
|
|
453
|
+
await rm(tmpStore, { recursive: true, force: true });
|
|
454
|
+
if (existsSync(tmpLocal))
|
|
455
|
+
await rm(tmpLocal, { recursive: true, force: true });
|
|
456
|
+
await mkdir(tmpStore, { recursive: true });
|
|
457
|
+
await mkdir(tmpLocal, { recursive: true });
|
|
458
|
+
try {
|
|
459
|
+
// Copy store config, stripping .age extensions
|
|
460
|
+
if (existsSync(storeConfigDir)) {
|
|
461
|
+
await cp(storeConfigDir, tmpStore, { recursive: true });
|
|
462
|
+
await this.stripAgeExtensionsForDryRun(tmpStore);
|
|
463
|
+
}
|
|
464
|
+
// Also include unknown items — copy at root level to match real pull behavior
|
|
465
|
+
// (real pull writes unknown items to ~/.claude/<name>, not ~/.claude/unknown/<name>)
|
|
466
|
+
if (existsSync(storeUnknownDir)) {
|
|
467
|
+
const unknownEntries = await readdir(storeUnknownDir, { withFileTypes: true });
|
|
468
|
+
for (const entry of unknownEntries) {
|
|
469
|
+
const src = join(storeUnknownDir, entry.name);
|
|
470
|
+
await cp(src, join(tmpStore, entry.name), { recursive: true });
|
|
471
|
+
}
|
|
472
|
+
}
|
|
473
|
+
// Copy allowlisted local files
|
|
474
|
+
if (existsSync(this.claudeDir)) {
|
|
475
|
+
const syncFilterConfig = await this.configManager.getSyncFilter();
|
|
476
|
+
const { SyncFilter } = await import("../sync-filter/sync-filter.js");
|
|
477
|
+
const syncFilter = new SyncFilter(syncFilterConfig);
|
|
478
|
+
const classification = await syncFilter.classify(this.claudeDir);
|
|
479
|
+
const filteredAllowlist = options.only
|
|
480
|
+
? classification.allowlist.filter((i) => i.name === options.only)
|
|
481
|
+
: classification.allowlist;
|
|
482
|
+
for (const item of filteredAllowlist) {
|
|
483
|
+
const src = join(this.claudeDir, item.name);
|
|
484
|
+
if (existsSync(src))
|
|
485
|
+
await cp(src, join(tmpLocal, item.name), { recursive: true });
|
|
486
|
+
}
|
|
487
|
+
}
|
|
488
|
+
const diff = await computeDiff(tmpStore, tmpLocal);
|
|
489
|
+
if (!diff.hasChanges) {
|
|
490
|
+
if (!options.quiet)
|
|
491
|
+
output.info("Dry run: no pull changes detected.");
|
|
492
|
+
}
|
|
493
|
+
else {
|
|
494
|
+
if (!options.quiet) {
|
|
495
|
+
output.heading("Dry run — pull would change:");
|
|
496
|
+
printDiffLines(diff);
|
|
497
|
+
}
|
|
498
|
+
process.exitCode = 1;
|
|
499
|
+
}
|
|
500
|
+
void result; // result is returned by the caller
|
|
501
|
+
}
|
|
502
|
+
finally {
|
|
503
|
+
if (existsSync(tmpStore))
|
|
504
|
+
await rm(tmpStore, { recursive: true, force: true });
|
|
505
|
+
if (existsSync(tmpLocal))
|
|
506
|
+
await rm(tmpLocal, { recursive: true, force: true });
|
|
507
|
+
}
|
|
508
|
+
}
|
|
489
509
|
async stripAgeExtensionsForDryRun(dir) {
|
|
490
510
|
if (!existsSync(dir))
|
|
491
511
|
return;
|
|
@@ -503,5 +523,42 @@ export class PullCommand {
|
|
|
503
523
|
}
|
|
504
524
|
}
|
|
505
525
|
}
|
|
526
|
+
/**
|
|
527
|
+
* Recursively strip DANGEROUS_KEYS from settings.json files inside projects/ subdirectories.
|
|
528
|
+
* This prevents per-project settings from injecting hooks/mcpServers from a remote attacker.
|
|
529
|
+
*/
|
|
530
|
+
async stripDangerousKeysFromProjects(projectsDir) {
|
|
531
|
+
if (!existsSync(projectsDir))
|
|
532
|
+
return;
|
|
533
|
+
const projectDirs = await readdir(projectsDir, { withFileTypes: true });
|
|
534
|
+
for (const entry of projectDirs) {
|
|
535
|
+
if (!entry.isDirectory())
|
|
536
|
+
continue;
|
|
537
|
+
const settingsPath = join(projectsDir, entry.name, "settings.json");
|
|
538
|
+
if (!existsSync(settingsPath))
|
|
539
|
+
continue;
|
|
540
|
+
let parsed;
|
|
541
|
+
try {
|
|
542
|
+
parsed = JSON.parse(await readFile(settingsPath, "utf-8"));
|
|
543
|
+
}
|
|
544
|
+
catch {
|
|
545
|
+
continue; // Malformed JSON — skip silently
|
|
546
|
+
}
|
|
547
|
+
// Only strip keys from plain objects — skip arrays, strings, numbers, null
|
|
548
|
+
if (parsed === null || typeof parsed !== "object" || Array.isArray(parsed))
|
|
549
|
+
continue;
|
|
550
|
+
const settings = parsed;
|
|
551
|
+
let changed = false;
|
|
552
|
+
for (const key of DANGEROUS_KEYS) {
|
|
553
|
+
if (key in settings) {
|
|
554
|
+
delete settings[key];
|
|
555
|
+
changed = true;
|
|
556
|
+
}
|
|
557
|
+
}
|
|
558
|
+
if (changed) {
|
|
559
|
+
await writeFile(settingsPath, JSON.stringify(settings, null, 2));
|
|
560
|
+
}
|
|
561
|
+
}
|
|
562
|
+
}
|
|
506
563
|
}
|
|
507
564
|
//# sourceMappingURL=pull.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pull.js","sourceRoot":"","sources":["../../src/commands/pull.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pull.js","sourceRoot":"","sources":["../../src/commands/pull.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/push.d.ts
CHANGED
package/dist/commands/push.js
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import { lstat, mkdir, readdir, readFile, rm, writeFile } from "node:fs/promises";
|
|
1
|
+
import { cp, lstat, mkdir, readdir, readFile, rm, writeFile } from "node:fs/promises";
|
|
2
2
|
import { createHash } from "node:crypto";
|
|
3
3
|
import { join, relative, resolve, sep } from "node:path";
|
|
4
4
|
import { existsSync } from "node:fs";
|
|
5
5
|
import { hostname, platform } from "node:os";
|
|
6
|
-
import chalk from "chalk";
|
|
7
6
|
import { ConfigManager } from "../config/config-manager.js";
|
|
8
7
|
import { SyncFilter } from "../sync-filter/sync-filter.js";
|
|
9
8
|
import { GitAdapter } from "../git-adapter/git-adapter.js";
|
|
@@ -18,6 +17,12 @@ import { Lockfile } from "../lockfile/lockfile.js";
|
|
|
18
17
|
// Subdirectories within allowlisted items that should not be synced.
|
|
19
18
|
// These contain downloaded third-party content that can be re-fetched.
|
|
20
19
|
const SYNC_SKIP_DIRS = new Set(["plugins/cache", "plugins/marketplaces"]);
|
|
20
|
+
const NORMALIZERS = {
|
|
21
|
+
"settings.json": "settings",
|
|
22
|
+
"history.jsonl": "jsonl",
|
|
23
|
+
"plugins/installed_plugins.json": "plugins",
|
|
24
|
+
"plugins/known_marketplaces.json": "plugins",
|
|
25
|
+
};
|
|
21
26
|
export class PushCommand {
|
|
22
27
|
homeDir;
|
|
23
28
|
claudeDir;
|
|
@@ -58,6 +63,13 @@ export class PushCommand {
|
|
|
58
63
|
output.warn("Encryption is enabled in config but --skip-encryption flag is set.\n" +
|
|
59
64
|
" Files will be pushed/pulled WITHOUT encryption. Use only for testing.");
|
|
60
65
|
}
|
|
66
|
+
// Warn when skipping secret scan in reactive encryption mode — secrets will not be encrypted
|
|
67
|
+
if (options.skipSecretScan &&
|
|
68
|
+
config.encryption.enabled &&
|
|
69
|
+
(config.encryption.mode === "reactive" || config.encryption.mode == null)) {
|
|
70
|
+
output.warn("WARNING: --skip-secret-scan is set while encryption.mode is reactive.\n" +
|
|
71
|
+
" Secret detection drives reactive encryption — files with secrets will NOT be encrypted.");
|
|
72
|
+
}
|
|
61
73
|
const syncFilterConfig = await this.configManager.getSyncFilter();
|
|
62
74
|
const syncFilter = new SyncFilter(syncFilterConfig);
|
|
63
75
|
// 1. Classify ~/.claude contents
|
|
@@ -108,56 +120,7 @@ export class PushCommand {
|
|
|
108
120
|
const unknownDir = join(storePath, STORE_UNKNOWN_DIR);
|
|
109
121
|
// Dry-run: show what would be pushed without modifying anything
|
|
110
122
|
if (options.dryRun) {
|
|
111
|
-
|
|
112
|
-
const { cp, rm: rmTmp, mkdir: mkTmp } = await import("node:fs/promises");
|
|
113
|
-
const tmpLocalConfig = join(this.homeDir, ".claudefy", ".dryrun-config-tmp");
|
|
114
|
-
const tmpLocalUnknown = join(this.homeDir, ".claudefy", ".dryrun-unknown-tmp");
|
|
115
|
-
if (existsSync(tmpLocalConfig))
|
|
116
|
-
await rmTmp(tmpLocalConfig, { recursive: true, force: true });
|
|
117
|
-
if (existsSync(tmpLocalUnknown))
|
|
118
|
-
await rmTmp(tmpLocalUnknown, { recursive: true, force: true });
|
|
119
|
-
await mkTmp(tmpLocalConfig, { recursive: true });
|
|
120
|
-
await mkTmp(tmpLocalUnknown, { recursive: true });
|
|
121
|
-
try {
|
|
122
|
-
for (const item of classification.allowlist) {
|
|
123
|
-
const src = join(this.claudeDir, item.name);
|
|
124
|
-
if (existsSync(src))
|
|
125
|
-
await cp(src, join(tmpLocalConfig, item.name), { recursive: true });
|
|
126
|
-
}
|
|
127
|
-
for (const item of classification.unknown) {
|
|
128
|
-
const src = join(this.claudeDir, item.name);
|
|
129
|
-
if (existsSync(src))
|
|
130
|
-
await cp(src, join(tmpLocalUnknown, item.name), { recursive: true });
|
|
131
|
-
}
|
|
132
|
-
const configDiff = await computeDiff(tmpLocalConfig, configDir);
|
|
133
|
-
const unknownDiff = await computeDiff(tmpLocalUnknown, unknownDir);
|
|
134
|
-
const hasChanges = configDiff.hasChanges || unknownDiff.hasChanges;
|
|
135
|
-
if (!hasChanges) {
|
|
136
|
-
if (!options.quiet)
|
|
137
|
-
output.info("Dry run: no push changes detected.");
|
|
138
|
-
}
|
|
139
|
-
else {
|
|
140
|
-
if (!options.quiet) {
|
|
141
|
-
output.heading("Dry run — push would change:");
|
|
142
|
-
const allAdded = [...configDiff.added, ...unknownDiff.added];
|
|
143
|
-
const allModified = [...configDiff.modified, ...unknownDiff.modified];
|
|
144
|
-
const allDeleted = [...configDiff.deleted, ...unknownDiff.deleted];
|
|
145
|
-
for (const f of allAdded)
|
|
146
|
-
console.log(chalk.green(` Added: ${f}`));
|
|
147
|
-
for (const f of allModified)
|
|
148
|
-
console.log(chalk.yellow(` Modified: ${f}`));
|
|
149
|
-
for (const f of allDeleted)
|
|
150
|
-
console.log(chalk.red(` Deleted: ${f}`));
|
|
151
|
-
}
|
|
152
|
-
process.exitCode = 1;
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
finally {
|
|
156
|
-
if (existsSync(tmpLocalConfig))
|
|
157
|
-
await rmTmp(tmpLocalConfig, { recursive: true, force: true });
|
|
158
|
-
if (existsSync(tmpLocalUnknown))
|
|
159
|
-
await rmTmp(tmpLocalUnknown, { recursive: true, force: true });
|
|
160
|
-
}
|
|
123
|
+
await this.executePushDryRun(options, classification, configDir, unknownDir);
|
|
161
124
|
return;
|
|
162
125
|
}
|
|
163
126
|
// 3. Build path mapper
|
|
@@ -247,6 +210,7 @@ export class PushCommand {
|
|
|
247
210
|
throw new Error("Encryption is required but no passphrase found. Set CLAUDEFY_PASSPHRASE or ensure your passphrase is stored in your OS keychain (configured during 'claudefy init' or 'claudefy join').");
|
|
248
211
|
}
|
|
249
212
|
const encryptor = new Encryptor(options.passphrase, config.backend.url);
|
|
213
|
+
let encryptedCount = 0;
|
|
250
214
|
for (const filePath of filesToEncrypt) {
|
|
251
215
|
if (existsSync(filePath) && !filePath.endsWith(".age")) {
|
|
252
216
|
const ad = (filePath.startsWith(configDir)
|
|
@@ -256,10 +220,11 @@ export class PushCommand {
|
|
|
256
220
|
.join("/");
|
|
257
221
|
await encryptor.encryptFile(filePath, filePath + ".age", ad);
|
|
258
222
|
await rm(filePath);
|
|
223
|
+
encryptedCount++;
|
|
259
224
|
}
|
|
260
225
|
}
|
|
261
226
|
if (!options.quiet) {
|
|
262
|
-
output.info(`Encrypted ${
|
|
227
|
+
output.info(`Encrypted ${encryptedCount} file(s).`);
|
|
263
228
|
}
|
|
264
229
|
}
|
|
265
230
|
// 8. Conditional manifest update
|
|
@@ -270,15 +235,17 @@ export class PushCommand {
|
|
|
270
235
|
const commitResult = await gitAdapter.commitAndPush(`sync: push from ${config.machineId}`, config.machineId);
|
|
271
236
|
await log?.log("info", "push", `Encrypted ${filesToEncrypt.size} file(s)`);
|
|
272
237
|
if (commitResult.committed && !commitResult.pushed) {
|
|
273
|
-
|
|
238
|
+
const detail = commitResult.pushError ? ` (${commitResult.pushError})` : "";
|
|
239
|
+
await log?.log("warn", "push", `Changes committed locally but push to remote failed${detail}`);
|
|
274
240
|
if (!options.quiet) {
|
|
275
|
-
output.warn(
|
|
241
|
+
output.warn(`Changes were committed locally, but pushing to the remote failed${detail}. Retry with 'claudefy push'.`);
|
|
276
242
|
}
|
|
277
243
|
}
|
|
278
244
|
if (commitResult.pushed && !commitResult.mergedToMain) {
|
|
279
|
-
|
|
245
|
+
const detail = commitResult.mergeError ? ` (${commitResult.mergeError})` : "";
|
|
246
|
+
await log?.log("warn", "push", `Pushed but merge to main failed — may need conflict resolution${detail}`);
|
|
280
247
|
if (!options.quiet) {
|
|
281
|
-
output.warn(
|
|
248
|
+
output.warn(`Unable to merge machine branch into main. You may need to resolve conflicts${detail}.`);
|
|
282
249
|
}
|
|
283
250
|
}
|
|
284
251
|
await log?.log("info", "push", `Push complete. committed=${commitResult.committed} pushed=${commitResult.pushed}`);
|
|
@@ -313,12 +280,11 @@ export class PushCommand {
|
|
|
313
280
|
return hashes;
|
|
314
281
|
}
|
|
315
282
|
needsNormalization(itemName) {
|
|
316
|
-
return
|
|
317
|
-
itemName === "plugins/installed_plugins.json" ||
|
|
318
|
-
itemName === "plugins/known_marketplaces.json");
|
|
283
|
+
return Object.prototype.hasOwnProperty.call(NORMALIZERS, itemName);
|
|
319
284
|
}
|
|
320
285
|
normalizeContent(itemName, text, pathMapper) {
|
|
321
|
-
|
|
286
|
+
const normalizerType = NORMALIZERS[itemName];
|
|
287
|
+
if (normalizerType === "settings") {
|
|
322
288
|
let parsed;
|
|
323
289
|
try {
|
|
324
290
|
parsed = JSON.parse(text);
|
|
@@ -329,8 +295,7 @@ export class PushCommand {
|
|
|
329
295
|
const normalized = pathMapper.normalizeSettingsPaths(parsed, this.claudeDir);
|
|
330
296
|
return JSON.stringify(normalized, null, 2);
|
|
331
297
|
}
|
|
332
|
-
if (
|
|
333
|
-
itemName === "plugins/known_marketplaces.json") {
|
|
298
|
+
if (normalizerType === "plugins") {
|
|
334
299
|
let parsed;
|
|
335
300
|
try {
|
|
336
301
|
parsed = JSON.parse(text);
|
|
@@ -341,7 +306,7 @@ export class PushCommand {
|
|
|
341
306
|
const normalized = pathMapper.normalizePluginPaths(parsed, this.claudeDir);
|
|
342
307
|
return JSON.stringify(normalized, null, 2);
|
|
343
308
|
}
|
|
344
|
-
if (
|
|
309
|
+
if (normalizerType === "jsonl") {
|
|
345
310
|
return (text
|
|
346
311
|
.split("\n")
|
|
347
312
|
.filter(Boolean)
|
|
@@ -484,5 +449,55 @@ export class PushCommand {
|
|
|
484
449
|
}
|
|
485
450
|
}
|
|
486
451
|
}
|
|
452
|
+
async executePushDryRun(options, classification, configDir, unknownDir) {
|
|
453
|
+
const { computeDiff, printDiffLines } = await import("../diff-utils/diff-utils.js");
|
|
454
|
+
const claudefyDir = join(this.homeDir, ".claudefy");
|
|
455
|
+
const tmpLocalConfig = join(claudefyDir, ".dryrun-config-tmp");
|
|
456
|
+
const tmpLocalUnknown = join(claudefyDir, ".dryrun-unknown-tmp");
|
|
457
|
+
if (existsSync(tmpLocalConfig))
|
|
458
|
+
await rm(tmpLocalConfig, { recursive: true, force: true });
|
|
459
|
+
if (existsSync(tmpLocalUnknown))
|
|
460
|
+
await rm(tmpLocalUnknown, { recursive: true, force: true });
|
|
461
|
+
await mkdir(tmpLocalConfig, { recursive: true });
|
|
462
|
+
await mkdir(tmpLocalUnknown, { recursive: true });
|
|
463
|
+
try {
|
|
464
|
+
for (const item of classification.allowlist) {
|
|
465
|
+
const src = join(this.claudeDir, item.name);
|
|
466
|
+
if (existsSync(src))
|
|
467
|
+
await cp(src, join(tmpLocalConfig, item.name), { recursive: true });
|
|
468
|
+
}
|
|
469
|
+
for (const item of classification.unknown) {
|
|
470
|
+
const src = join(this.claudeDir, item.name);
|
|
471
|
+
if (existsSync(src))
|
|
472
|
+
await cp(src, join(tmpLocalUnknown, item.name), { recursive: true });
|
|
473
|
+
}
|
|
474
|
+
const configDiff = await computeDiff(tmpLocalConfig, configDir);
|
|
475
|
+
const unknownDiff = await computeDiff(tmpLocalUnknown, unknownDir);
|
|
476
|
+
const hasChanges = configDiff.hasChanges || unknownDiff.hasChanges;
|
|
477
|
+
if (!hasChanges) {
|
|
478
|
+
if (!options.quiet)
|
|
479
|
+
output.info("Dry run: no push changes detected.");
|
|
480
|
+
}
|
|
481
|
+
else {
|
|
482
|
+
if (!options.quiet) {
|
|
483
|
+
output.heading("Dry run — push would change:");
|
|
484
|
+
const combined = {
|
|
485
|
+
added: [...configDiff.added, ...unknownDiff.added],
|
|
486
|
+
modified: [...configDiff.modified, ...unknownDiff.modified],
|
|
487
|
+
deleted: [...configDiff.deleted, ...unknownDiff.deleted],
|
|
488
|
+
hasChanges: true,
|
|
489
|
+
};
|
|
490
|
+
printDiffLines(combined);
|
|
491
|
+
}
|
|
492
|
+
process.exitCode = 1;
|
|
493
|
+
}
|
|
494
|
+
}
|
|
495
|
+
finally {
|
|
496
|
+
if (existsSync(tmpLocalConfig))
|
|
497
|
+
await rm(tmpLocalConfig, { recursive: true, force: true });
|
|
498
|
+
if (existsSync(tmpLocalUnknown))
|
|
499
|
+
await rm(tmpLocalUnknown, { recursive: true, force: true });
|
|
500
|
+
}
|
|
501
|
+
}
|
|
487
502
|
}
|
|
488
503
|
//# sourceMappingURL=push.js.map
|