mover-os 4.0.1 → 4.0.3
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.
Potentially problematic release.
This version of mover-os might be problematic. Click here for more details.
- package/install.js +60 -41
- package/package.json +1 -1
package/install.js
CHANGED
|
@@ -1093,6 +1093,21 @@ function preflight() {
|
|
|
1093
1093
|
const plat = process.platform === "win32" ? "Windows" : process.platform === "darwin" ? "macOS" : "Linux";
|
|
1094
1094
|
issues.push({ label: "Platform", status: "ok", detail: plat });
|
|
1095
1095
|
|
|
1096
|
+
// Obsidian — check common install locations
|
|
1097
|
+
let hasObsidian = false;
|
|
1098
|
+
if (process.platform === "darwin") {
|
|
1099
|
+
hasObsidian = fs.existsSync("/Applications/Obsidian.app");
|
|
1100
|
+
} else if (process.platform === "win32") {
|
|
1101
|
+
hasObsidian = fs.existsSync(path.join(os.homedir(), "AppData", "Local", "Obsidian"));
|
|
1102
|
+
} else {
|
|
1103
|
+
hasObsidian = cmdExists("obsidian") || fs.existsSync(path.join(os.homedir(), ".config", "obsidian"));
|
|
1104
|
+
}
|
|
1105
|
+
issues.push({
|
|
1106
|
+
label: "Obsidian",
|
|
1107
|
+
status: hasObsidian ? "ok" : "warn",
|
|
1108
|
+
detail: hasObsidian ? "found" : "not found — get it at obsidian.md",
|
|
1109
|
+
});
|
|
1110
|
+
|
|
1096
1111
|
return issues;
|
|
1097
1112
|
}
|
|
1098
1113
|
|
|
@@ -1239,6 +1254,11 @@ async function main() {
|
|
|
1239
1254
|
_detected: detectedIds.includes(a.id),
|
|
1240
1255
|
}));
|
|
1241
1256
|
|
|
1257
|
+
if (detectedIds.length === 0) {
|
|
1258
|
+
barLn(yellow("No AI agents detected."));
|
|
1259
|
+
barLn(dim("You need at least one to use Mover OS. Recommended: Claude Code (claude.ai/code)"));
|
|
1260
|
+
barLn();
|
|
1261
|
+
}
|
|
1242
1262
|
question(`Select your AI agents${detectedIds.length > 0 ? dim(" (detected agents pre-selected)") : ""}`);
|
|
1243
1263
|
barLn();
|
|
1244
1264
|
|
|
@@ -1280,6 +1300,24 @@ async function main() {
|
|
|
1280
1300
|
let totalSteps = 0;
|
|
1281
1301
|
const sleep = (ms) => new Promise((r) => setTimeout(r, ms));
|
|
1282
1302
|
|
|
1303
|
+
// 0. Legacy cleanup (remove files from older installer versions)
|
|
1304
|
+
const legacyPaths = [
|
|
1305
|
+
path.join(vaultPath, "src"), // hooks used to install here
|
|
1306
|
+
path.join(vaultPath, "SOUL.md"), // old soul file
|
|
1307
|
+
];
|
|
1308
|
+
for (const lp of legacyPaths) {
|
|
1309
|
+
if (fs.existsSync(lp)) {
|
|
1310
|
+
try {
|
|
1311
|
+
const stat = fs.statSync(lp);
|
|
1312
|
+
if (stat.isDirectory()) {
|
|
1313
|
+
fs.rmSync(lp, { recursive: true, force: true });
|
|
1314
|
+
} else {
|
|
1315
|
+
fs.unlinkSync(lp);
|
|
1316
|
+
}
|
|
1317
|
+
} catch {}
|
|
1318
|
+
}
|
|
1319
|
+
}
|
|
1320
|
+
|
|
1283
1321
|
// 1. Vault structure
|
|
1284
1322
|
let sp = spinner("Vault structure");
|
|
1285
1323
|
const dirsCreated = createVaultStructure(vaultPath);
|
|
@@ -1388,49 +1426,30 @@ async function main() {
|
|
|
1388
1426
|
const verb = updateMode ? "updated" : "installed";
|
|
1389
1427
|
outro(`${green("Done.")} Mover OS v${VERSION} ${verb}. ${dim(`${totalSteps} steps in ${elapsed}s`)}`);
|
|
1390
1428
|
|
|
1391
|
-
// How to open the vault in each agent
|
|
1392
|
-
const agentOpen = {
|
|
1393
|
-
"claude-code": { cmd: `cd "${vaultPath}" && claude`, name: "Claude Code" },
|
|
1394
|
-
cursor: { cmd: `Open Cursor → File → Open Folder → select vault`, name: "Cursor" },
|
|
1395
|
-
cline: { cmd: `Open VS Code → File → Open Folder → select vault`, name: "Cline (VS Code)" },
|
|
1396
|
-
codex: { cmd: `cd "${vaultPath}" && codex`, name: "Codex" },
|
|
1397
|
-
windsurf: { cmd: `Open Windsurf → File → Open Folder → select vault`, name: "Windsurf" },
|
|
1398
|
-
openclaw: { cmd: `cd "${vaultPath}" && openclaw`, name: "OpenClaw" },
|
|
1399
|
-
antigravity: { cmd: `cd "${vaultPath}" && gemini`, name: "Antigravity" },
|
|
1400
|
-
"roo-code": { cmd: `Open VS Code → File → Open Folder → select vault`, name: "Roo Code" },
|
|
1401
|
-
copilot: { cmd: `Open VS Code → File → Open Folder → select vault`, name: "Copilot" },
|
|
1402
|
-
amp: { cmd: `cd "${vaultPath}" && amp`, name: "Amp" },
|
|
1403
|
-
aider: { cmd: `cd "${vaultPath}" && aider`, name: "Aider" },
|
|
1404
|
-
};
|
|
1405
|
-
|
|
1406
|
-
const primaryAgent = selectedAgents[0];
|
|
1407
1429
|
const command = updateMode ? "/update" : "/setup";
|
|
1408
|
-
const
|
|
1430
|
+
const agentNames = selectedAgents.map((a) => a.name);
|
|
1409
1431
|
|
|
1410
|
-
|
|
1411
|
-
|
|
1412
|
-
|
|
1413
|
-
|
|
1414
|
-
|
|
1415
|
-
};
|
|
1416
|
-
|
|
1417
|
-
ln(
|
|
1418
|
-
ln(
|
|
1419
|
-
ln(
|
|
1420
|
-
ln(
|
|
1421
|
-
ln(
|
|
1422
|
-
ln(
|
|
1423
|
-
ln(
|
|
1424
|
-
ln(gray(
|
|
1425
|
-
ln(
|
|
1426
|
-
ln(
|
|
1427
|
-
ln(
|
|
1428
|
-
ln(
|
|
1429
|
-
ln(
|
|
1430
|
-
ln(
|
|
1431
|
-
ln(gray(` │${" ".repeat(boxW)}│`));
|
|
1432
|
-
ln(gray(` │`) + pad(` ${dim("/morning → [work] → /log → /analyse-day → /plan-tomorrow")}`, boxW) + gray(`│`));
|
|
1433
|
-
ln(gray(` └${"─".repeat(boxW)}┘`));
|
|
1432
|
+
ln(` ${bold("Next steps")}`);
|
|
1433
|
+
ln();
|
|
1434
|
+
ln(` ${cyan("1")} Open your vault in ${bold("Obsidian")}`);
|
|
1435
|
+
ln(` ${dim("This is where you view and browse your files")}`);
|
|
1436
|
+
ln();
|
|
1437
|
+
ln(` ${cyan("2")} Open the vault folder in your AI agent`);
|
|
1438
|
+
ln(` ${dim("Installed: " + agentNames.join(", "))}`);
|
|
1439
|
+
ln();
|
|
1440
|
+
ln(` ${cyan("3")} Enable the Obsidian theme`);
|
|
1441
|
+
ln(` ${dim("Settings → Appearance → CSS snippets → minimal-theme")}`);
|
|
1442
|
+
ln();
|
|
1443
|
+
ln(` ${cyan("4")} Run ${bold(command)}`);
|
|
1444
|
+
ln(` ${dim(updateMode ? "Syncs your Engine with the latest version" : "Builds your Identity, Strategy, and Goals")}`);
|
|
1445
|
+
ln();
|
|
1446
|
+
ln(gray(" ─────────────────────────────────────"));
|
|
1447
|
+
ln();
|
|
1448
|
+
ln(` ${dim("Obsidian = view your files")}`);
|
|
1449
|
+
ln(` ${dim("Your AI agent = where you work")}`);
|
|
1450
|
+
ln();
|
|
1451
|
+
ln(` ${dim("/morning → [work] → /log")}`);
|
|
1452
|
+
ln(` ${dim("/analyse-day → /plan-tomorrow")}`);
|
|
1434
1453
|
ln();
|
|
1435
1454
|
}
|
|
1436
1455
|
|