vexp-cli 2.1.6 → 2.2.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.
@@ -156,9 +156,16 @@ const AGENT_DETECTORS = [
156
156
  {
157
157
  agent: "Kilo Code",
158
158
  detectPath: ".kilocode",
159
- configFile: ".kilocode/rules.md",
159
+ // Current Kilo Code (kilo.ai) uses `.kilo/` + `kilo.jsonc`; keep `.kilocode`
160
+ // for older installs. Any one marker counts as detected.
161
+ detectPaths: [".kilo", "kilo.jsonc", "kilo.json"],
162
+ // Rules: a `.kilocode/rules/` DIRECTORY is auto-included for backward
163
+ // compatibility; a bare `.kilocode/rules.md` file is NOT (the old target,
164
+ // which silently never loaded). Write into the directory instead.
165
+ configFile: ".kilocode/rules/vexp.md",
160
166
  templateName: "generic",
161
- mcpConfigFile: ".kilocode/mcp.json",
167
+ // MCP is NOT a separate .kilocode/mcp.json anymore — it lives under the
168
+ // `mcp` key in kilo.jsonc. Handled by configureKiloMcp() below.
162
169
  },
163
170
  {
164
171
  agent: "Kiro",
@@ -323,6 +330,13 @@ export function configureAgents(workspaceRoot, binaryPath, version, agentFilter,
323
330
  mcpConfigs.push(".zed/settings.json");
324
331
  }
325
332
  }
333
+ // Kilo Code: MCP lives under the `mcp` key in kilo.jsonc (root or .kilo/),
334
+ // not a separate mcp.json (that file is no longer read).
335
+ if (detector.agent === "Kilo Code") {
336
+ const wrote = configureKiloMcp(workspaceRoot, binaryPath, mcpServerPath);
337
+ if (wrote)
338
+ mcpConfigs.push(wrote);
339
+ }
326
340
  results.push({
327
341
  agent: detector.agent,
328
342
  configFile: detector.configFile,
@@ -909,6 +923,51 @@ export function writeVsCodeMcpConfig(p, binaryPath, mcpServerPath, workspaceRoot
909
923
  /**
910
924
  * Write context_servers in .zed/settings.json for Zed.
911
925
  */
926
+ /**
927
+ * Kilo Code MCP setup. Current Kilo Code (kilo.ai) reads MCP servers from the
928
+ * top-level `mcp` key inside `kilo.jsonc` — NOT a separate `.kilocode/mcp.json`
929
+ * (that path is no longer read). The config file is `.kilo/kilo.jsonc`
930
+ * (preferred) or `kilo.jsonc` at the project root; `.kilo/` wins if both exist,
931
+ * so we merge into whichever is present and create the clean `.kilo/` location
932
+ * on a fresh setup. Kilo's local-server shape is `{type:"local", command:[…],
933
+ * enabled:true}`. Other `mcp` entries (and other top-level keys) are preserved;
934
+ * an existing file is backed up before rewrite. Returns the workspace-relative
935
+ * path written, or null on a no-op / unparseable file.
936
+ */
937
+ export function configureKiloMcp(workspaceRoot, binaryPath, mcpServerPath) {
938
+ const dotKilo = path.join(workspaceRoot, ".kilo", "kilo.jsonc");
939
+ const rootKilo = path.join(workspaceRoot, "kilo.jsonc");
940
+ const target = fs.existsSync(dotKilo)
941
+ ? dotKilo
942
+ : fs.existsSync(rootKilo)
943
+ ? rootKilo
944
+ : dotKilo; // fresh setup → the recommended cleaner location
945
+ const read = readJsonConfigSafe(target);
946
+ if (!read.ok) {
947
+ warnUnparseable(target);
948
+ return null;
949
+ }
950
+ const cfg = read.data;
951
+ const useNode = mcpServerPath && fs.existsSync(mcpServerPath);
952
+ const command = useNode ? ["node", mcpServerPath] : [binaryPath, "mcp"];
953
+ const env = { VEXP_WORKSPACE: workspaceRoot };
954
+ const mcp = cfg.mcp ?? {};
955
+ const prev = mcp["vexp"];
956
+ const identical = prev?.["type"] === "local" &&
957
+ prev?.["enabled"] === true &&
958
+ Array.isArray(prev?.["command"]) &&
959
+ JSON.stringify(prev["command"]) === JSON.stringify(command) &&
960
+ JSON.stringify(prev["env"]) === JSON.stringify(env);
961
+ if (identical)
962
+ return null;
963
+ mcp["vexp"] = { type: "local", command, env, enabled: true };
964
+ cfg.mcp = mcp;
965
+ fs.mkdirSync(path.dirname(target), { recursive: true });
966
+ if (read.existed)
967
+ backupConfig(target);
968
+ fs.writeFileSync(target, JSON.stringify(cfg, null, 2), "utf-8");
969
+ return path.relative(workspaceRoot, target);
970
+ }
912
971
  export function writeZedMcpConfig(p, binaryPath, mcpServerPath, workspaceRoot) {
913
972
  const read = readJsonConfigSafe(p);
914
973
  if (!read.ok) {
@@ -1197,6 +1256,9 @@ Only use Read when you need exact raw content to edit a specific line.
1197
1256
  - **Session Memory**: auto-captures observations; memories auto-surfaced in results
1198
1257
  - **LSP Bridge**: VS Code captures type-resolved call edges
1199
1258
  - **Change Coupling**: co-changed files included as related context
1259
+ - **Query tips**: include real identifiers (ClassName, function_name) or file paths
1260
+ in the task for precise matches - pure natural-language phrasing falls back to
1261
+ text ranking and is less reliable
1200
1262
 
1201
1263
  ### Advanced Parameters
1202
1264
  - \`preset: "debug"\` - forces debug mode (capsule+tests+impact+memory)
@@ -1238,7 +1300,8 @@ vexp returns pre-indexed, graph-ranked context in a single call.
1238
1300
  rather than letting them search the codebase independently
1239
1301
 
1240
1302
  ### Tips
1241
- - Natural language queries work well - vexp uses hybrid search (keyword + semantic + graph)
1303
+ - Include real identifiers (class/function names) or file paths in the task - literal
1304
+ matches rank best; pure natural-language phrasing falls back to text ranking
1242
1305
  - Add \`include_tests: true\` when debugging
1243
1306
  - Use \`preset: "refactor"\` for deep impact analysis
1244
1307
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vexp-cli",
3
- "version": "2.1.6",
3
+ "version": "2.2.0",
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.1.6",
104
- "@vexp/core-linux-arm64": "2.1.6",
105
- "@vexp/core-darwin-x64": "2.1.6",
106
- "@vexp/core-darwin-arm64": "2.1.6",
107
- "@vexp/core-win32-x64": "2.1.6"
103
+ "@vexp/core-linux-x64": "2.2.0",
104
+ "@vexp/core-linux-arm64": "2.2.0",
105
+ "@vexp/core-darwin-x64": "2.2.0",
106
+ "@vexp/core-darwin-arm64": "2.2.0",
107
+ "@vexp/core-win32-x64": "2.2.0"
108
108
  }
109
109
  }