@askexenow/exe-os 0.9.39 → 0.9.40
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/bin/cli.js +36 -3
- package/dist/bin/update.js +36 -3
- package/package.json +2 -2
package/dist/bin/cli.js
CHANGED
|
@@ -16246,7 +16246,21 @@ function resolveDataDir2() {
|
|
|
16246
16246
|
if (process.env.EXE_MEM_DIR) return process.env.EXE_MEM_DIR;
|
|
16247
16247
|
return path35.join(os17.homedir(), ".exe-os");
|
|
16248
16248
|
}
|
|
16249
|
-
|
|
16249
|
+
function externalBackupTargets(homeDir) {
|
|
16250
|
+
return [
|
|
16251
|
+
{ name: "claude.json", path: path35.join(homeDir, ".claude.json") },
|
|
16252
|
+
{ name: "claude-settings.json", path: path35.join(homeDir, ".claude", "settings.json") },
|
|
16253
|
+
{ name: "claude-CLAUDE.md", path: path35.join(homeDir, ".claude", "CLAUDE.md") },
|
|
16254
|
+
{ name: "tmux.conf", path: path35.join(homeDir, ".tmux.conf") },
|
|
16255
|
+
{ name: "zshrc", path: path35.join(homeDir, ".zshrc") },
|
|
16256
|
+
{ name: "bashrc", path: path35.join(homeDir, ".bashrc") },
|
|
16257
|
+
{ name: "ghostty-config", path: path35.join(homeDir, ".config", "ghostty", "config") },
|
|
16258
|
+
{ name: "codex-config.toml", path: path35.join(homeDir, ".codex", "config.toml") },
|
|
16259
|
+
{ name: "codex-hooks.json", path: path35.join(homeDir, ".codex", "hooks.json") },
|
|
16260
|
+
{ name: "opencode-config.json", path: path35.join(homeDir, ".config", "opencode", "opencode.json") }
|
|
16261
|
+
];
|
|
16262
|
+
}
|
|
16263
|
+
async function createUpdateBackup(currentVersion, dataDir, homeDir = os17.homedir()) {
|
|
16250
16264
|
const dir = dataDir ?? resolveDataDir2();
|
|
16251
16265
|
const backupDir = path35.join(dir, BACKUP_DIR_NAME);
|
|
16252
16266
|
if (existsSync29(backupDir)) {
|
|
@@ -16274,10 +16288,19 @@ async function createUpdateBackup(currentVersion, dataDir) {
|
|
|
16274
16288
|
backedUpFiles.push(entry.name);
|
|
16275
16289
|
}
|
|
16276
16290
|
}
|
|
16291
|
+
const externalFiles = [];
|
|
16292
|
+
const externalDir = path35.join(backupDir, "external");
|
|
16293
|
+
for (const target of externalBackupTargets(homeDir)) {
|
|
16294
|
+
if (!existsSync29(target.path)) continue;
|
|
16295
|
+
await mkdir7(externalDir, { recursive: true });
|
|
16296
|
+
await copyFile(target.path, path35.join(externalDir, target.name));
|
|
16297
|
+
externalFiles.push(target);
|
|
16298
|
+
}
|
|
16277
16299
|
const manifest = {
|
|
16278
16300
|
version: currentVersion,
|
|
16279
16301
|
timestamp: (/* @__PURE__ */ new Date()).toISOString(),
|
|
16280
|
-
files: backedUpFiles
|
|
16302
|
+
files: backedUpFiles,
|
|
16303
|
+
...externalFiles.length > 0 ? { externalFiles } : {}
|
|
16281
16304
|
};
|
|
16282
16305
|
await writeFile7(
|
|
16283
16306
|
path35.join(backupDir, "manifest.json"),
|
|
@@ -16308,6 +16331,12 @@ async function restoreFromBackup(dataDir) {
|
|
|
16308
16331
|
await copyFile(src, dest);
|
|
16309
16332
|
}
|
|
16310
16333
|
}
|
|
16334
|
+
for (const external of manifest.externalFiles ?? []) {
|
|
16335
|
+
const src = path35.join(backupDir, "external", external.name);
|
|
16336
|
+
if (!existsSync29(src)) continue;
|
|
16337
|
+
await mkdir7(path35.dirname(external.path), { recursive: true });
|
|
16338
|
+
await copyFile(src, external.path);
|
|
16339
|
+
}
|
|
16311
16340
|
return manifest;
|
|
16312
16341
|
}
|
|
16313
16342
|
async function deleteBackup(dataDir) {
|
|
@@ -16325,8 +16354,12 @@ var init_update_backup = __esm({
|
|
|
16325
16354
|
BACKUP_TARGETS = [
|
|
16326
16355
|
{ name: "config.json", type: "file" },
|
|
16327
16356
|
{ name: "exe-employees.json", type: "file" },
|
|
16357
|
+
{ name: "agent-config.json", type: "file" },
|
|
16328
16358
|
{ name: "master.key", type: "file" },
|
|
16329
|
-
{ name: "
|
|
16359
|
+
{ name: "tmux.conf", type: "file" },
|
|
16360
|
+
{ name: "identity", type: "dir" },
|
|
16361
|
+
{ name: "shards", type: "dir" },
|
|
16362
|
+
{ name: "mcp-configs", type: "dir" }
|
|
16330
16363
|
// All .db files (SQLCipher databases) — matched dynamically
|
|
16331
16364
|
];
|
|
16332
16365
|
}
|
package/dist/bin/update.js
CHANGED
|
@@ -615,11 +615,29 @@ function resolveDataDir() {
|
|
|
615
615
|
var BACKUP_TARGETS = [
|
|
616
616
|
{ name: "config.json", type: "file" },
|
|
617
617
|
{ name: "exe-employees.json", type: "file" },
|
|
618
|
+
{ name: "agent-config.json", type: "file" },
|
|
618
619
|
{ name: "master.key", type: "file" },
|
|
619
|
-
{ name: "
|
|
620
|
+
{ name: "tmux.conf", type: "file" },
|
|
621
|
+
{ name: "identity", type: "dir" },
|
|
622
|
+
{ name: "shards", type: "dir" },
|
|
623
|
+
{ name: "mcp-configs", type: "dir" }
|
|
620
624
|
// All .db files (SQLCipher databases) — matched dynamically
|
|
621
625
|
];
|
|
622
|
-
|
|
626
|
+
function externalBackupTargets(homeDir) {
|
|
627
|
+
return [
|
|
628
|
+
{ name: "claude.json", path: path.join(homeDir, ".claude.json") },
|
|
629
|
+
{ name: "claude-settings.json", path: path.join(homeDir, ".claude", "settings.json") },
|
|
630
|
+
{ name: "claude-CLAUDE.md", path: path.join(homeDir, ".claude", "CLAUDE.md") },
|
|
631
|
+
{ name: "tmux.conf", path: path.join(homeDir, ".tmux.conf") },
|
|
632
|
+
{ name: "zshrc", path: path.join(homeDir, ".zshrc") },
|
|
633
|
+
{ name: "bashrc", path: path.join(homeDir, ".bashrc") },
|
|
634
|
+
{ name: "ghostty-config", path: path.join(homeDir, ".config", "ghostty", "config") },
|
|
635
|
+
{ name: "codex-config.toml", path: path.join(homeDir, ".codex", "config.toml") },
|
|
636
|
+
{ name: "codex-hooks.json", path: path.join(homeDir, ".codex", "hooks.json") },
|
|
637
|
+
{ name: "opencode-config.json", path: path.join(homeDir, ".config", "opencode", "opencode.json") }
|
|
638
|
+
];
|
|
639
|
+
}
|
|
640
|
+
async function createUpdateBackup(currentVersion, dataDir, homeDir = os.homedir()) {
|
|
623
641
|
const dir = dataDir ?? resolveDataDir();
|
|
624
642
|
const backupDir = path.join(dir, BACKUP_DIR_NAME);
|
|
625
643
|
if (existsSync(backupDir)) {
|
|
@@ -647,10 +665,19 @@ async function createUpdateBackup(currentVersion, dataDir) {
|
|
|
647
665
|
backedUpFiles.push(entry.name);
|
|
648
666
|
}
|
|
649
667
|
}
|
|
668
|
+
const externalFiles = [];
|
|
669
|
+
const externalDir = path.join(backupDir, "external");
|
|
670
|
+
for (const target of externalBackupTargets(homeDir)) {
|
|
671
|
+
if (!existsSync(target.path)) continue;
|
|
672
|
+
await mkdir(externalDir, { recursive: true });
|
|
673
|
+
await copyFile(target.path, path.join(externalDir, target.name));
|
|
674
|
+
externalFiles.push(target);
|
|
675
|
+
}
|
|
650
676
|
const manifest = {
|
|
651
677
|
version: currentVersion,
|
|
652
678
|
timestamp: (/* @__PURE__ */ new Date()).toISOString(),
|
|
653
|
-
files: backedUpFiles
|
|
679
|
+
files: backedUpFiles,
|
|
680
|
+
...externalFiles.length > 0 ? { externalFiles } : {}
|
|
654
681
|
};
|
|
655
682
|
await writeFile(
|
|
656
683
|
path.join(backupDir, "manifest.json"),
|
|
@@ -681,6 +708,12 @@ async function restoreFromBackup(dataDir) {
|
|
|
681
708
|
await copyFile(src, dest);
|
|
682
709
|
}
|
|
683
710
|
}
|
|
711
|
+
for (const external of manifest.externalFiles ?? []) {
|
|
712
|
+
const src = path.join(backupDir, "external", external.name);
|
|
713
|
+
if (!existsSync(src)) continue;
|
|
714
|
+
await mkdir(path.dirname(external.path), { recursive: true });
|
|
715
|
+
await copyFile(src, external.path);
|
|
716
|
+
}
|
|
684
717
|
return manifest;
|
|
685
718
|
}
|
|
686
719
|
async function deleteBackup(dataDir) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@askexenow/exe-os",
|
|
3
|
-
"version": "0.9.
|
|
3
|
+
"version": "0.9.40",
|
|
4
4
|
"description": "AI employee operating system — persistent memory, task management, and multi-agent coordination for Claude Code.",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE",
|
|
6
6
|
"type": "module",
|
|
@@ -71,7 +71,7 @@
|
|
|
71
71
|
"typecheck": "tsc --noEmit",
|
|
72
72
|
"build": "tsup && mkdir -p dist/assets && cp src/assets/tmux.conf dist/assets/ && cp src/assets/ghostty.conf dist/assets/ && cp src/assets/statusline-command.sh dist/assets/ && cp src/bin/exe-start.sh dist/bin/exe-start.sh",
|
|
73
73
|
"deploy": "node dist/bin/pre-build-guard.js 2>/dev/null; (kill $(cat ~/.exe-os/exed.pid 2>/dev/null) 2>/dev/null; pgrep -f exe-daemon.js | xargs kill 2>/dev/null; true) && tsup && mkdir -p dist/assets && cp src/assets/tmux.conf dist/assets/ && cp src/assets/ghostty.conf dist/assets/ && cp src/assets/statusline-command.sh dist/assets/ && cp src/bin/exe-start.sh dist/bin/exe-start.sh && npm install -g . && node dist/bin/install.js --global && echo '[exe-os] Deploy complete. Run /mcp in active sessions to reconnect.'",
|
|
74
|
-
"postinstall": "node dist/bin/install.js --
|
|
74
|
+
"postinstall": "node dist/bin/install.js --commands-only 2>/dev/null || true",
|
|
75
75
|
"prepublishOnly": "npm run typecheck && npm run build && node dist/bin/customer-readiness.js",
|
|
76
76
|
"test:publish": "npx vitest run --maxWorkers=4 --exclude 'tests/tui/**' --exclude 'tests/lib/tmux-routing.test.ts' --exclude 'tests/lib/intercom-routing.test.ts' --exclude 'tests/gateway/**' --exclude 'tests/installer/setup-wizard.test.ts' --exclude 'tests/mcp/ingest-document.test.ts' --exclude 'tests/lib/hybrid-search.test.ts' --exclude 'tests/lib/worker-gate.test.ts'",
|
|
77
77
|
"benchmark:longmemeval": "npx tsx tests/benchmarks/longmemeval.ts"
|