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.
- package/dist/agent-config.js +66 -3
- package/package.json +6 -6
package/dist/agent-config.js
CHANGED
|
@@ -156,9 +156,16 @@ const AGENT_DETECTORS = [
|
|
|
156
156
|
{
|
|
157
157
|
agent: "Kilo Code",
|
|
158
158
|
detectPath: ".kilocode",
|
|
159
|
-
|
|
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
|
-
|
|
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
|
-
-
|
|
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.
|
|
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.
|
|
104
|
-
"@vexp/core-linux-arm64": "2.
|
|
105
|
-
"@vexp/core-darwin-x64": "2.
|
|
106
|
-
"@vexp/core-darwin-arm64": "2.
|
|
107
|
-
"@vexp/core-win32-x64": "2.
|
|
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
|
}
|