@reposkein/mcp 0.1.3 → 0.1.5
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/README.md +2 -2
- package/binary-digests.json +6 -0
- package/dist/cli/init.d.ts +10 -3
- package/dist/cli/init.js +30 -7
- package/dist/cli/init.js.map +1 -1
- package/dist/embed/cache.d.ts +17 -2
- package/dist/embed/cache.js +33 -5
- package/dist/embed/cache.js.map +1 -1
- package/dist/embed/providers/http.d.ts +1 -0
- package/dist/embed/providers/http.js +24 -5
- package/dist/embed/providers/http.js.map +1 -1
- package/dist/embed/providers/voyage.d.ts +3 -0
- package/dist/embed/providers/voyage.js +36 -9
- package/dist/embed/providers/voyage.js.map +1 -1
- package/dist/index.js +11 -2
- package/dist/index.js.map +1 -1
- package/dist/indexer/fetchBinary.d.ts +20 -3
- package/dist/indexer/fetchBinary.js +93 -12
- package/dist/indexer/fetchBinary.js.map +1 -1
- package/dist/indexer/runIndexer.js +33 -4
- package/dist/indexer/runIndexer.js.map +1 -1
- package/dist/profile/impact.d.ts +6 -2
- package/dist/profile/impact.js +12 -6
- package/dist/profile/impact.js.map +1 -1
- package/dist/store/JsonlGraphStore.js +6 -4
- package/dist/store/JsonlGraphStore.js.map +1 -1
- package/dist/store/jsonlGraph.js +42 -0
- package/dist/store/jsonlGraph.js.map +1 -1
- package/dist/temporal/gitlog.js +11 -6
- package/dist/temporal/gitlog.js.map +1 -1
- package/dist/temporal/temporal.js +39 -5
- package/dist/temporal/temporal.js.map +1 -1
- package/dist/tools/semanticFind.js +7 -3
- package/dist/tools/semanticFind.js.map +1 -1
- package/package.json +4 -3
|
@@ -14,19 +14,33 @@ import { execFile as execFileCb } from "node:child_process";
|
|
|
14
14
|
import { promisify } from "node:util";
|
|
15
15
|
import { existsSync, readFileSync, writeFileSync, renameSync, mkdirSync, readdirSync, unlinkSync, statSync, } from "node:fs";
|
|
16
16
|
import { join } from "node:path";
|
|
17
|
+
import { randomBytes } from "node:crypto";
|
|
17
18
|
import { parseGitLog, computeTemporal } from "./gitlog.js";
|
|
18
19
|
const execFile = promisify(execFileCb);
|
|
19
20
|
/** Max cache files to keep per repo (prune oldest when exceeded). */
|
|
20
21
|
const MAX_CACHE_FILES = 3;
|
|
22
|
+
/**
|
|
23
|
+
* Cache version tag. Bump whenever the algorithm or output shape changes so
|
|
24
|
+
* stale cache files produced by an old version are automatically invalidated.
|
|
25
|
+
* Format: "v<N>" — stored in the cached payload under the key `_cache_version`.
|
|
26
|
+
*/
|
|
27
|
+
const CACHE_VERSION = "v1";
|
|
21
28
|
/** Window defaults (also used for cache key). */
|
|
22
29
|
const WINDOW_MONTHS = 12;
|
|
23
30
|
const MAX_COMMITS = 1000;
|
|
24
31
|
const COMMIT_SIZE_CAP = 50;
|
|
25
32
|
const MIN_SUPPORT = 3;
|
|
26
33
|
// ── git helpers ──────────────────────────────────────────────────────────────
|
|
34
|
+
/** Error thrown by Node when the child output exceeds maxBuffer. */
|
|
35
|
+
const MAX_BUFFER_EXCEEDED = "ERR_CHILD_PROCESS_STDIO_MAX_BUFFER_SIZE";
|
|
27
36
|
async function gitExec(args, cwd) {
|
|
28
37
|
try {
|
|
29
|
-
const { stdout } = await execFile("git", args, {
|
|
38
|
+
const { stdout } = await execFile("git", args, {
|
|
39
|
+
cwd,
|
|
40
|
+
maxBuffer: 64 * 1024 * 1024,
|
|
41
|
+
timeout: 20000,
|
|
42
|
+
killSignal: "SIGKILL",
|
|
43
|
+
});
|
|
30
44
|
return { stdout, ok: true };
|
|
31
45
|
}
|
|
32
46
|
catch (err) {
|
|
@@ -34,6 +48,9 @@ async function gitExec(args, cwd) {
|
|
|
34
48
|
if (e.code === "ENOENT") {
|
|
35
49
|
return { stdout: "", ok: false, error: "git executable not found in PATH" };
|
|
36
50
|
}
|
|
51
|
+
if (e.code === MAX_BUFFER_EXCEEDED) {
|
|
52
|
+
return { stdout: "", ok: false, maxBufferExceeded: true, error: "maxBuffer exceeded" };
|
|
53
|
+
}
|
|
37
54
|
// git exits non-zero for "not a git repo" etc.
|
|
38
55
|
const msg = e.stderr ?? e.message ?? String(err);
|
|
39
56
|
return { stdout: e.stdout ?? "", ok: false, error: msg.trim() };
|
|
@@ -73,18 +90,32 @@ function readCache(path) {
|
|
|
73
90
|
return null;
|
|
74
91
|
try {
|
|
75
92
|
const text = readFileSync(path, "utf8");
|
|
76
|
-
|
|
93
|
+
const parsed = JSON.parse(text);
|
|
94
|
+
// Invalidate if the cache was written by an older version of the algorithm
|
|
95
|
+
if (parsed["_cache_version"] !== CACHE_VERSION)
|
|
96
|
+
return null;
|
|
97
|
+
// Strip the internal version tag before returning to callers
|
|
98
|
+
const { _cache_version: _cv, ...stats } = parsed;
|
|
99
|
+
void _cv;
|
|
100
|
+
return stats;
|
|
77
101
|
}
|
|
78
102
|
catch {
|
|
79
103
|
return null;
|
|
80
104
|
}
|
|
81
105
|
}
|
|
82
|
-
/**
|
|
106
|
+
/**
|
|
107
|
+
* Atomic write via a unique temp name → rename (no concurrent clobber).
|
|
108
|
+
* The temp name includes PID + random suffix to avoid collisions when multiple
|
|
109
|
+
* processes write concurrently. Best-effort: write failure must not break the tool.
|
|
110
|
+
*/
|
|
83
111
|
function writeCache(path, stats) {
|
|
84
|
-
const
|
|
112
|
+
const rand = randomBytes(4).toString("hex");
|
|
113
|
+
const tmp = `${path}.tmp-${process.pid}-${rand}`;
|
|
85
114
|
try {
|
|
86
115
|
mkdirSync(join(path, ".."), { recursive: true });
|
|
87
|
-
|
|
116
|
+
// Embed version tag so future reads can detect stale caches
|
|
117
|
+
const payload = { ...stats, _cache_version: CACHE_VERSION };
|
|
118
|
+
writeFileSync(tmp, JSON.stringify(payload));
|
|
88
119
|
renameSync(tmp, path);
|
|
89
120
|
}
|
|
90
121
|
catch {
|
|
@@ -150,6 +181,9 @@ export async function getTemporal(repoPath) {
|
|
|
150
181
|
];
|
|
151
182
|
const logResult = await gitExec(logArgs, repoPath);
|
|
152
183
|
if (!logResult.ok) {
|
|
184
|
+
if (logResult.maxBufferExceeded) {
|
|
185
|
+
return { unavailable: "history too large for the temporal window" };
|
|
186
|
+
}
|
|
153
187
|
return { unavailable: `git log failed: ${logResult.error ?? "unknown error"}` };
|
|
154
188
|
}
|
|
155
189
|
const raw = logResult.stdout;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"temporal.js","sourceRoot":"","sources":["../../src/temporal/temporal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EACL,UAAU,EACV,YAAY,EACZ,aAAa,EACb,UAAU,EACV,SAAS,EACT,WAAW,EACX,UAAU,EACV,QAAQ,GACT,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,eAAe,EAAsB,MAAM,aAAa,CAAC;AAE/E,MAAM,QAAQ,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC;AAIvC,qEAAqE;AACrE,MAAM,eAAe,GAAG,CAAC,CAAC;AAE1B,iDAAiD;AACjD,MAAM,aAAa,GAAG,EAAE,CAAC;AACzB,MAAM,WAAW,GAAG,IAAI,CAAC;AACzB,MAAM,eAAe,GAAG,EAAE,CAAC;AAC3B,MAAM,WAAW,GAAG,CAAC,CAAC;AAEtB,gFAAgF;AAEhF,KAAK,UAAU,OAAO,CACpB,IAAc,EACd,GAAW;IAEX,IAAI,CAAC;QACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"temporal.js","sourceRoot":"","sources":["../../src/temporal/temporal.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,6 +21,7 @@ import { rankCorpus } from "../search/bm25f.js";
|
|
|
21
21
|
import { providerFromEnv } from "../embed/provider.js";
|
|
22
22
|
import { embedCorpus } from "../embed/cache.js";
|
|
23
23
|
import { cosineRank, rrf } from "../embed/hybrid.js";
|
|
24
|
+
import { neutralizeSummary } from "../guard/summaryValidation.js";
|
|
24
25
|
const DEFAULT_LIMIT = 10;
|
|
25
26
|
const MAX_LIMIT = 25;
|
|
26
27
|
/**
|
|
@@ -128,9 +129,12 @@ export function makeSemanticFind(store, repoId, repoPath = ".", providerOverride
|
|
|
128
129
|
if (via !== undefined) {
|
|
129
130
|
result["via"] = via;
|
|
130
131
|
}
|
|
131
|
-
// Include summary only when present (keeps payload lean; absence is informative)
|
|
132
|
-
|
|
133
|
-
|
|
132
|
+
// Include summary only when present (keeps payload lean; absence is informative).
|
|
133
|
+
// Neutralize on the READ path to close the injection bypass: summaries from
|
|
134
|
+
// git-pulled nodes.jsonl or hand-edited files never passed the write guard.
|
|
135
|
+
const neutralized = neutralizeSummary(node.summary || null);
|
|
136
|
+
if (neutralized) {
|
|
137
|
+
result["summary"] = neutralized;
|
|
134
138
|
}
|
|
135
139
|
return result;
|
|
136
140
|
}).filter(Boolean);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"semanticFind.js","sourceRoot":"","sources":["../../src/tools/semanticFind.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAGH,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGhD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,GAAG,EAAgB,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"semanticFind.js","sourceRoot":"","sources":["../../src/tools/semanticFind.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@reposkein/mcp",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.5",
|
|
4
4
|
"description": "Deterministic code-graph (GraphRAG) MCP server — give your AI agent callers/callees, change-impact, and semantic search over your repo instead of grep. 7 languages, zero-infra, git-native.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"mcp",
|
|
@@ -39,7 +39,8 @@
|
|
|
39
39
|
"files": [
|
|
40
40
|
"dist",
|
|
41
41
|
"scripts",
|
|
42
|
-
"bin"
|
|
42
|
+
"bin",
|
|
43
|
+
"binary-digests.json"
|
|
43
44
|
],
|
|
44
45
|
"scripts": {
|
|
45
46
|
"build": "tsc",
|
|
@@ -57,7 +58,7 @@
|
|
|
57
58
|
},
|
|
58
59
|
"devDependencies": {
|
|
59
60
|
"typescript": "^5.7.0",
|
|
60
|
-
"vitest": "^
|
|
61
|
+
"vitest": "^4.1.9",
|
|
61
62
|
"@types/node": "^24.0.0",
|
|
62
63
|
"tsx": "^4.0.0"
|
|
63
64
|
}
|