vexp-cli 2.2.3 → 2.2.4

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.
@@ -291,8 +291,20 @@ export function configureAgents(workspaceRoot, binaryPath, version, agentFilter,
291
291
  // Write MCP config for agents with mcpConfigFile (project-level JSON)
292
292
  if (detector.mcpConfigFile) {
293
293
  const mcpConfigPath = path.join(workspaceRoot, detector.mcpConfigFile);
294
- const alwaysAllow = detector.agent === "Windsurf" ? VEXP_TOOLS : undefined;
295
- if (writeMcpConfig(mcpConfigPath, binaryPath, alwaysAllow, mcpServerPath, workspaceRoot)) {
294
+ const isKiro = detector.agent === "Kiro";
295
+ // Windsurf and Kiro auto-approve vexp's tools so the agent isn't prompted
296
+ // on every run_pipeline call. Kiro's field is `autoApprove`; others use
297
+ // `alwaysAllow`.
298
+ const alwaysAllow = (detector.agent === "Windsurf" || isKiro) ? VEXP_TOOLS : undefined;
299
+ const approveKey = isKiro ? "autoApprove" : "alwaysAllow";
300
+ // Kiro resolves the MCP `command` via PATH, and a macOS GUI launch has no
301
+ // `node` on PATH — so the `node <mcp-server.cjs>` transport silently fails
302
+ // to start and run_pipeline never appears (the agent then falls back to
303
+ // grep/sed). Point Kiro straight at the vexp binary (`vexp-core mcp`, which
304
+ // reads VEXP_WORKSPACE from env) by withholding mcpServerPath — no `node`
305
+ // needed, an absolute path that always resolves.
306
+ const mcpSrv = isKiro ? undefined : mcpServerPath;
307
+ if (writeMcpConfig(mcpConfigPath, binaryPath, alwaysAllow, mcpSrv, workspaceRoot, approveKey)) {
296
308
  mcpConfigs.push(detector.mcpConfigFile);
297
309
  }
298
310
  }
@@ -529,8 +541,14 @@ export function configureSelectedAgents(workspaceRoot, binaryPath, version, sele
529
541
  }
530
542
  if (detector.mcpConfigFile) {
531
543
  const mcpConfigPath = path.join(workspaceRoot, detector.mcpConfigFile);
532
- const alwaysAllow = detector.agent === "Windsurf" ? VEXP_TOOLS : undefined;
533
- if (writeMcpConfig(mcpConfigPath, binaryPath, alwaysAllow, mcpServerPath, workspaceRoot))
544
+ const isKiro = detector.agent === "Kiro";
545
+ // See configureAgents(): Kiro auto-approves under `autoApprove` and is
546
+ // pointed at the vexp binary (no `node` on macOS GUI PATH) by withholding
547
+ // mcpServerPath.
548
+ const alwaysAllow = (detector.agent === "Windsurf" || isKiro) ? VEXP_TOOLS : undefined;
549
+ const approveKey = isKiro ? "autoApprove" : "alwaysAllow";
550
+ const mcpSrv = isKiro ? undefined : mcpServerPath;
551
+ if (writeMcpConfig(mcpConfigPath, binaryPath, alwaysAllow, mcpSrv, workspaceRoot, approveKey))
534
552
  mcpConfigs.push(detector.mcpConfigFile);
535
553
  }
536
554
  if (detector.agent === "Claude Code") {
@@ -861,7 +879,10 @@ export function configureAntigravityGlobal(binaryPath, mcpServerPath) {
861
879
  }
862
880
  return writeMcpConfig(path.join(cfgDir, "mcp_config.json"), binaryPath, undefined, mcpServerPath, undefined);
863
881
  }
864
- export function writeMcpConfig(mcpConfigPath, binaryPath, alwaysAllow, mcpServerPath, workspaceRoot) {
882
+ export function writeMcpConfig(mcpConfigPath, binaryPath, alwaysAllow, mcpServerPath, workspaceRoot,
883
+ // Key under which the auto-approve tool list is written. Cursor/Windsurf use
884
+ // `alwaysAllow`; Kiro uses `autoApprove` (a `.kiro/settings/mcp.json` field).
885
+ approveKey = "alwaysAllow") {
865
886
  const read = readJsonConfigSafe(mcpConfigPath);
866
887
  if (!read.ok) {
867
888
  warnUnparseable(mcpConfigPath);
@@ -900,7 +921,7 @@ export function writeMcpConfig(mcpConfigPath, binaryPath, alwaysAllow, mcpServer
900
921
  command: targetCmd,
901
922
  args: targetArgs,
902
923
  ...(targetEnv ? { env: targetEnv } : {}),
903
- ...(alwaysAllow && alwaysAllow.length > 0 ? { alwaysAllow } : {}),
924
+ ...(alwaysAllow && alwaysAllow.length > 0 ? { [approveKey]: alwaysAllow } : {}),
904
925
  };
905
926
  existing.mcpServers = servers;
906
927
  fs.mkdirSync(path.dirname(mcpConfigPath), { recursive: true });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vexp-cli",
3
- "version": "2.2.3",
3
+ "version": "2.2.4",
4
4
  "description": "Vexp — Context Engine for AI Coding Agents. Pre-indexes your codebase into a dependency graph and delivers ranked context to any MCP-compatible agent. 58% lower cost per task, 90% fewer tool calls (SWE-bench Verified). Works with Claude Code, Cursor, Copilot, Windsurf, Codex, Cline, Aider, and 12+ agents. Local-first. Your code never leaves your machine.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -100,10 +100,10 @@
100
100
  "node": ">=20.0.0"
101
101
  },
102
102
  "optionalDependencies": {
103
- "@vexp/core-linux-x64": "2.2.3",
104
- "@vexp/core-linux-arm64": "2.2.3",
105
- "@vexp/core-darwin-x64": "2.2.3",
106
- "@vexp/core-darwin-arm64": "2.2.3",
107
- "@vexp/core-win32-x64": "2.2.3"
103
+ "@vexp/core-linux-x64": "2.2.4",
104
+ "@vexp/core-linux-arm64": "2.2.4",
105
+ "@vexp/core-darwin-x64": "2.2.4",
106
+ "@vexp/core-darwin-arm64": "2.2.4",
107
+ "@vexp/core-win32-x64": "2.2.4"
108
108
  }
109
109
  }