vexp-cli 2.6.0 → 2.6.2
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/cli.js +14 -3
- package/dist/doctor.js +45 -0
- package/package.json +6 -6
package/dist/cli.js
CHANGED
|
@@ -649,6 +649,8 @@ program
|
|
|
649
649
|
spinner1.fail(`Binary not found: ${err}`);
|
|
650
650
|
process.exit(1);
|
|
651
651
|
}
|
|
652
|
+
// Set once the agents are known: only editor-hosted ones need a restart.
|
|
653
|
+
let editorHosted = false;
|
|
652
654
|
const isPersonal = !!opts.personal;
|
|
653
655
|
if (isPersonal) {
|
|
654
656
|
console.log(chalk.cyan(" Personal mode: skipping agent configs and git hooks\n"));
|
|
@@ -763,6 +765,13 @@ program
|
|
|
763
765
|
const mcpServerPath = getMcpServerPath();
|
|
764
766
|
const result = configureSelectedAgents(workspaceRoot, binaryPath, version, selectedNames, mcpServerPath);
|
|
765
767
|
spinner4.succeed("Agent configurations written");
|
|
768
|
+
// Only editor-hosted agents need the host restarted. Telling a
|
|
769
|
+
// Codex-only or Claude-Code-only user to restart VS Code invites
|
|
770
|
+
// exactly the question we keep getting: "do I need VS Code for
|
|
771
|
+
// this?" (AppSumo, 2026-08). The answer is no, and the summary
|
|
772
|
+
// should not imply otherwise.
|
|
773
|
+
const TERMINAL_AGENTS = new Set(["Claude Code", "Codex", "Opencode"]);
|
|
774
|
+
editorHosted = result.agents.some((a) => !TERMINAL_AGENTS.has(a.agent));
|
|
766
775
|
console.log("");
|
|
767
776
|
for (const agent of result.agents) {
|
|
768
777
|
const icon = agent.action === "skipped" ? "○" : "●";
|
|
@@ -867,9 +876,11 @@ program
|
|
|
867
876
|
console.log("The vexp daemon is running and ready to serve context.");
|
|
868
877
|
}
|
|
869
878
|
console.log("");
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
879
|
+
if (editorHosted) {
|
|
880
|
+
console.log(chalk.yellow("⚠ If your editor is open, restart it to load the new agent configurations."));
|
|
881
|
+
console.log(chalk.dim(" (VS Code and its forks: Ctrl+Shift+P → \"Developer: Reload Window\")"));
|
|
882
|
+
console.log("");
|
|
883
|
+
}
|
|
873
884
|
});
|
|
874
885
|
// ────────────────────────────────────────────────────
|
|
875
886
|
// Command: setup-agents (interactive checkbox select)
|
package/dist/doctor.js
CHANGED
|
@@ -412,6 +412,51 @@ export async function runDoctor() {
|
|
|
412
412
|
// setup skipped them silently the whole layer was inert while every other
|
|
413
413
|
// check reported healthy — a third-party evaluation lost two days to
|
|
414
414
|
// exactly that (2026-08). Presence is not enough: run them.
|
|
415
|
+
// Git hooks are how the index refreshes on commit/merge/checkout. Git obeys
|
|
416
|
+
// core.hooksPath exclusively, so with it set our hooks sit in .git/hooks and
|
|
417
|
+
// never run, while every surface reports them installed (field report).
|
|
418
|
+
console.log(chalk.bold("\nGit hooks (index refresh)"));
|
|
419
|
+
{
|
|
420
|
+
const hooksPath = (() => {
|
|
421
|
+
const r = spawnSync("git", ["config", "--get", "core.hooksPath"], {
|
|
422
|
+
cwd: ws.root,
|
|
423
|
+
encoding: "utf-8",
|
|
424
|
+
timeout: 5000,
|
|
425
|
+
});
|
|
426
|
+
const v = String(r.stdout ?? "").trim();
|
|
427
|
+
return r.status === 0 && v ? v : null;
|
|
428
|
+
})();
|
|
429
|
+
const ours = path.join(ws.root, ".git", "hooks");
|
|
430
|
+
const installed = ["pre-commit", "post-merge", "post-checkout"].filter((h) => {
|
|
431
|
+
try {
|
|
432
|
+
return fs.readFileSync(path.join(ours, h), "utf-8").includes("vexp");
|
|
433
|
+
}
|
|
434
|
+
catch {
|
|
435
|
+
return false;
|
|
436
|
+
}
|
|
437
|
+
});
|
|
438
|
+
if (!hooksPath) {
|
|
439
|
+
if (installed.length === 3)
|
|
440
|
+
line(OK, "vexp hooks present in .git/hooks and git will run them");
|
|
441
|
+
else if (installed.length === 0)
|
|
442
|
+
line(OK, "no vexp git hooks (index refreshes on demand)");
|
|
443
|
+
else
|
|
444
|
+
line(WARN, `only ${installed.length}/3 vexp git hooks present — re-run 'vexp hooks install'`);
|
|
445
|
+
}
|
|
446
|
+
else {
|
|
447
|
+
const resolved = path.isAbsolute(hooksPath) ? hooksPath : path.join(ws.root, hooksPath);
|
|
448
|
+
const sameDir = path.resolve(resolved) === path.resolve(ours);
|
|
449
|
+
if (sameDir) {
|
|
450
|
+
line(OK, `core.hooksPath points at .git/hooks (${installed.length}/3 vexp hooks present)`);
|
|
451
|
+
}
|
|
452
|
+
else if (installed.length > 0) {
|
|
453
|
+
line(BAD, `core.hooksPath = ${resolved} — git runs hooks ONLY from there, so the ${installed.length} vexp hook(s) in .git/hooks NEVER run and the index does not refresh on commit/merge/checkout. Add 'vexp index --finalize || true' to ${path.join(resolved, "pre-commit")}, or 'git config --unset core.hooksPath' for this repo.`);
|
|
454
|
+
}
|
|
455
|
+
else {
|
|
456
|
+
line(OK, `core.hooksPath = ${resolved} (no vexp git hooks installed here)`);
|
|
457
|
+
}
|
|
458
|
+
}
|
|
459
|
+
}
|
|
415
460
|
console.log(chalk.bold("\nClaude Code orientation hooks (.claude/settings.json)"));
|
|
416
461
|
{
|
|
417
462
|
const sPath = path.join(ws.root, ".claude", "settings.json");
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "vexp-cli",
|
|
3
|
-
"version": "2.6.
|
|
3
|
+
"version": "2.6.2",
|
|
4
4
|
"description": "Local-first context engine for AI coding agents. Pre-indexes your codebase into a dependency graph and feeds any MCP agent only the code that matters — 87% fewer tokens per call. New in 2.5: mechanical work verification and a PII/secret scanner. Works with Claude Code, Cursor, Codex, Copilot, Windsurf, Cline, Aider and 14 agents. Your code never leaves your machine.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -105,10 +105,10 @@
|
|
|
105
105
|
},
|
|
106
106
|
"homepage": "https://vexp.dev",
|
|
107
107
|
"optionalDependencies": {
|
|
108
|
-
"@vexp/core-linux-x64": "2.6.
|
|
109
|
-
"@vexp/core-linux-arm64": "2.6.
|
|
110
|
-
"@vexp/core-darwin-x64": "2.6.
|
|
111
|
-
"@vexp/core-darwin-arm64": "2.6.
|
|
112
|
-
"@vexp/core-win32-x64": "2.6.
|
|
108
|
+
"@vexp/core-linux-x64": "2.6.2",
|
|
109
|
+
"@vexp/core-linux-arm64": "2.6.2",
|
|
110
|
+
"@vexp/core-darwin-x64": "2.6.2",
|
|
111
|
+
"@vexp/core-darwin-arm64": "2.6.2",
|
|
112
|
+
"@vexp/core-win32-x64": "2.6.2"
|
|
113
113
|
}
|
|
114
114
|
}
|