@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/update-check.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update-check.js","sourceRoot":"","sources":["../src/update-check.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC,MAAM,CAAC,MAAM,UAAU,GAAG,mBAAmB,CAAC;AAC9C,MAAM,iBAAiB,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,WAAW;AAC1D,MAAM,YAAY,GAAG,sDAAsD,CAAC;AAC5E,MAAM,gBAAgB,GAAG,IAAI,CAAC;AAO9B,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,WAAmB;IACnD,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;IAChD,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;QAAE,OAAO,IAAI,CAAC;IACxC,IAAI,CAAC;QACH,MAAM,IAAI,GAAc,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;QACvE,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,GAAG,iBAAiB,CAAC;IACzD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,WAAmB,EAAE,aAAqB;IACzE,MAAM,KAAK,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9C,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;IAChD,MAAM,IAAI,GAAc,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,CAAC;IACjE,MAAM,SAAS,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;AACnD,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,WAAmB;IACjD,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;IAChD,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;QAAE,OAAO,IAAI,CAAC;IACxC,IAAI,CAAC;QACH,MAAM,IAAI,GAAc,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;QACvE,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,MAAc,EAAE,OAAe;IACrD,MAAM,YAAY,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;IACzD,MAAM,
|
|
1
|
+
{"version":3,"file":"update-check.js","sourceRoot":"","sources":["../src/update-check.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/dist/commands/logs.d.ts
DELETED
package/dist/commands/logs.js
DELETED
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import { join } from "node:path";
|
|
2
|
-
import { ConfigManager } from "../config/config-manager.js";
|
|
3
|
-
import { GitAdapter } from "../git-adapter/git-adapter.js";
|
|
4
|
-
import { output } from "../output.js";
|
|
5
|
-
export class LogsCommand {
|
|
6
|
-
homeDir;
|
|
7
|
-
constructor(homeDir) {
|
|
8
|
-
this.homeDir = homeDir;
|
|
9
|
-
}
|
|
10
|
-
async execute(options) {
|
|
11
|
-
const configManager = new ConfigManager(this.homeDir);
|
|
12
|
-
const config = await configManager.load();
|
|
13
|
-
const gitAdapter = new GitAdapter(join(this.homeDir, ".claudefy"));
|
|
14
|
-
await gitAdapter.initStore(config.backend.url);
|
|
15
|
-
const { simpleGit } = await import("simple-git");
|
|
16
|
-
const git = simpleGit(gitAdapter.getStorePath());
|
|
17
|
-
const log = await git.log({ maxCount: options.count ?? 10 });
|
|
18
|
-
if (log.all.length === 0) {
|
|
19
|
-
if (!options.quiet)
|
|
20
|
-
output.info("No sync history found.");
|
|
21
|
-
return;
|
|
22
|
-
}
|
|
23
|
-
if (!options.quiet) {
|
|
24
|
-
output.heading("Recent sync operations");
|
|
25
|
-
for (const entry of log.all) {
|
|
26
|
-
const date = new Date(entry.date).toISOString().replace("T", " ").slice(0, 16);
|
|
27
|
-
output.info(`${date} ${entry.message}`);
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
//# sourceMappingURL=logs.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"logs.js","sourceRoot":"","sources":["../../src/commands/logs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAOtC,MAAM,OAAO,WAAW;IACL,OAAO,CAAS;IAEjC,YAAY,OAAe;QACzB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,OAAoB;QAChC,MAAM,aAAa,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACtD,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,IAAI,EAAE,CAAC;QAC1C,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC;QACnE,MAAM,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAE/C,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC;QACjD,MAAM,GAAG,GAAG,SAAS,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC,CAAC;QACjD,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,KAAK,IAAI,EAAE,EAAE,CAAC,CAAC;QAE7D,IAAI,GAAG,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,IAAI,CAAC,OAAO,CAAC,KAAK;gBAAE,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;YAC1D,OAAO;QACT,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YACnB,MAAM,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC;YACzC,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC;gBAC5B,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC/E,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YAC3C,CAAC;QACH,CAAC;IACH,CAAC;CACF"}
|
package/dist/lockfile.d.ts
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
export interface LockfileOptions {
|
|
2
|
-
retries?: number;
|
|
3
|
-
retryDelayMs?: number;
|
|
4
|
-
maxAgeMs?: number;
|
|
5
|
-
}
|
|
6
|
-
export declare class Lockfile {
|
|
7
|
-
private readonly path;
|
|
8
|
-
private readonly retries;
|
|
9
|
-
private readonly retryDelayMs;
|
|
10
|
-
private readonly maxAgeMs;
|
|
11
|
-
private readonly operation;
|
|
12
|
-
constructor(path: string, options?: LockfileOptions & {
|
|
13
|
-
operation?: string;
|
|
14
|
-
});
|
|
15
|
-
acquire(): Promise<boolean>;
|
|
16
|
-
release(): Promise<void>;
|
|
17
|
-
private tryAcquire;
|
|
18
|
-
private writeLock;
|
|
19
|
-
private readLock;
|
|
20
|
-
private isProcessAlive;
|
|
21
|
-
private delay;
|
|
22
|
-
}
|
package/dist/lockfile.js
DELETED
|
@@ -1,119 +0,0 @@
|
|
|
1
|
-
import { mkdir, readFile, rm, writeFile } from "node:fs/promises";
|
|
2
|
-
import { dirname } from "node:path";
|
|
3
|
-
import { existsSync } from "node:fs";
|
|
4
|
-
export class Lockfile {
|
|
5
|
-
path;
|
|
6
|
-
retries;
|
|
7
|
-
retryDelayMs;
|
|
8
|
-
maxAgeMs;
|
|
9
|
-
operation;
|
|
10
|
-
constructor(path, options = {}) {
|
|
11
|
-
this.path = path;
|
|
12
|
-
this.retries = options.retries ?? 3;
|
|
13
|
-
this.retryDelayMs = options.retryDelayMs ?? 1000;
|
|
14
|
-
this.maxAgeMs = options.maxAgeMs ?? 120_000; // 2 minutes
|
|
15
|
-
this.operation = options.operation ?? "unknown";
|
|
16
|
-
}
|
|
17
|
-
async acquire() {
|
|
18
|
-
for (let attempt = 0; attempt <= this.retries; attempt++) {
|
|
19
|
-
if (attempt > 0) {
|
|
20
|
-
await this.delay(this.retryDelayMs);
|
|
21
|
-
}
|
|
22
|
-
if (await this.tryAcquire()) {
|
|
23
|
-
return true;
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
return false;
|
|
27
|
-
}
|
|
28
|
-
async release() {
|
|
29
|
-
try {
|
|
30
|
-
await rm(this.path, { force: true });
|
|
31
|
-
}
|
|
32
|
-
catch {
|
|
33
|
-
// Best effort — stale lock will expire via maxAgeMs
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
async tryAcquire() {
|
|
37
|
-
if (!existsSync(this.path)) {
|
|
38
|
-
return this.writeLock();
|
|
39
|
-
}
|
|
40
|
-
// Lock exists — check if stale
|
|
41
|
-
const existing = await this.readLock();
|
|
42
|
-
if (!existing) {
|
|
43
|
-
// Corrupted lockfile (unparseable JSON), overwrite
|
|
44
|
-
await this.release();
|
|
45
|
-
return this.writeLock();
|
|
46
|
-
}
|
|
47
|
-
// Check age
|
|
48
|
-
const age = Date.now() - new Date(existing.timestamp).getTime();
|
|
49
|
-
if (age > this.maxAgeMs) {
|
|
50
|
-
await this.release();
|
|
51
|
-
return this.writeLock();
|
|
52
|
-
}
|
|
53
|
-
// Check if PID is alive
|
|
54
|
-
if (!this.isProcessAlive(existing.pid)) {
|
|
55
|
-
await this.release();
|
|
56
|
-
return this.writeLock();
|
|
57
|
-
}
|
|
58
|
-
// Lock is held by a live, recent process
|
|
59
|
-
return false;
|
|
60
|
-
}
|
|
61
|
-
async writeLock() {
|
|
62
|
-
await mkdir(dirname(this.path), { recursive: true, mode: 0o700 });
|
|
63
|
-
const data = {
|
|
64
|
-
pid: process.pid,
|
|
65
|
-
timestamp: new Date().toISOString(),
|
|
66
|
-
operation: this.operation,
|
|
67
|
-
};
|
|
68
|
-
try {
|
|
69
|
-
await writeFile(this.path, JSON.stringify(data), { flag: "wx", mode: 0o600 });
|
|
70
|
-
return true;
|
|
71
|
-
}
|
|
72
|
-
catch (err) {
|
|
73
|
-
if (err.code === "EEXIST") {
|
|
74
|
-
return false;
|
|
75
|
-
}
|
|
76
|
-
throw err; // Disk full, permissions, etc. must surface
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
async readLock() {
|
|
80
|
-
try {
|
|
81
|
-
const content = await readFile(this.path, "utf-8");
|
|
82
|
-
return JSON.parse(content);
|
|
83
|
-
}
|
|
84
|
-
catch (err) {
|
|
85
|
-
if (err instanceof SyntaxError) {
|
|
86
|
-
return null; // Corrupted JSON
|
|
87
|
-
}
|
|
88
|
-
if (err.code === "ENOENT") {
|
|
89
|
-
return null; // Lockfile deleted between existsSync() and readFile()
|
|
90
|
-
}
|
|
91
|
-
// I/O errors (EACCES, EMFILE, etc.) — treat as "lock exists, can't read"
|
|
92
|
-
// so we don't steal it. Return a synthetic entry with current PID to prevent overwrite.
|
|
93
|
-
return { pid: process.pid, timestamp: new Date().toISOString(), operation: "unknown" };
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
isProcessAlive(pid) {
|
|
97
|
-
// pid=0 signals the process group; pid<0 signals a group or all processes.
|
|
98
|
-
// Neither represents a real process that owns a lock.
|
|
99
|
-
if (!Number.isInteger(pid) || pid <= 0 || pid > 4194304) {
|
|
100
|
-
return false;
|
|
101
|
-
}
|
|
102
|
-
try {
|
|
103
|
-
process.kill(pid, 0);
|
|
104
|
-
return true;
|
|
105
|
-
}
|
|
106
|
-
catch (err) {
|
|
107
|
-
// EPERM means the process exists but belongs to another user
|
|
108
|
-
if (err.code === "EPERM") {
|
|
109
|
-
return true;
|
|
110
|
-
}
|
|
111
|
-
// ESRCH means process doesn't exist
|
|
112
|
-
return false;
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
delay(ms) {
|
|
116
|
-
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
//# sourceMappingURL=lockfile.js.map
|
package/dist/lockfile.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"lockfile.js","sourceRoot":"","sources":["../src/lockfile.ts"],"names":[],"mappings":"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"}
|