@reposkein/mcp 0.7.0 → 0.9.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/README.md +1 -0
- package/binary-digests.json +4 -4
- package/dist/SKILL.md +22 -0
- package/dist/cli/doctor.d.ts +2 -2
- package/dist/cli/doctor.js +8 -4
- package/dist/cli/doctor.js.map +1 -1
- package/dist/cli/doctorFreshness.d.ts +6 -0
- package/dist/cli/doctorFreshness.js +23 -0
- package/dist/cli/doctorFreshness.js.map +1 -1
- package/dist/cli/migrate.d.ts +26 -0
- package/dist/cli/migrate.js +208 -0
- package/dist/cli/migrate.js.map +1 -0
- package/dist/embed/batch.d.ts +47 -0
- package/dist/embed/batch.js +92 -0
- package/dist/embed/batch.js.map +1 -0
- package/dist/embed/cache.d.ts +22 -48
- package/dist/embed/cache.js +44 -164
- package/dist/embed/cache.js.map +1 -1
- package/dist/embed/corpusVectors.d.ts +20 -0
- package/dist/embed/corpusVectors.js +60 -0
- package/dist/embed/corpusVectors.js.map +1 -0
- package/dist/embed/provider.d.ts +21 -2
- package/dist/embed/provider.js.map +1 -1
- package/dist/embed/providers/http.d.ts +3 -2
- package/dist/embed/providers/http.js +14 -1
- package/dist/embed/providers/http.js.map +1 -1
- package/dist/embed/providers/voyage.d.ts +3 -2
- package/dist/embed/providers/voyage.js +50 -54
- package/dist/embed/providers/voyage.js.map +1 -1
- package/dist/embed/vectorStore.d.ts +89 -0
- package/dist/embed/vectorStore.js +267 -0
- package/dist/embed/vectorStore.js.map +1 -0
- package/dist/guard/caps.d.ts +3 -0
- package/dist/guard/caps.js +4 -1
- package/dist/guard/caps.js.map +1 -1
- package/dist/index.js +16 -1
- package/dist/index.js.map +1 -1
- package/dist/search/bm25f.d.ts +17 -1
- package/dist/search/bm25f.js +89 -53
- package/dist/search/bm25f.js.map +1 -1
- package/dist/store/GraphStore.d.ts +6 -1
- package/dist/store/JsonlGraphStore.d.ts +47 -10
- package/dist/store/JsonlGraphStore.js +129 -50
- package/dist/store/JsonlGraphStore.js.map +1 -1
- package/dist/store/Neo4jGraphStore.d.ts +11 -0
- package/dist/store/Neo4jGraphStore.js +29 -2
- package/dist/store/Neo4jGraphStore.js.map +1 -1
- package/dist/store/instrumentTool.d.ts +9 -1
- package/dist/store/instrumentTool.js +33 -2
- package/dist/store/instrumentTool.js.map +1 -1
- package/dist/store/jsonlGraph.d.ts +22 -0
- package/dist/store/jsonlGraph.js +75 -18
- package/dist/store/jsonlGraph.js.map +1 -1
- package/dist/store/jsonlLines.d.ts +21 -0
- package/dist/store/jsonlLines.js +64 -0
- package/dist/store/jsonlLines.js.map +1 -0
- package/dist/store/repoSession.d.ts +19 -0
- package/dist/store/repoSession.js +25 -0
- package/dist/store/repoSession.js.map +1 -1
- package/dist/store/trackedGraph.d.ts +14 -0
- package/dist/store/trackedGraph.js +39 -0
- package/dist/store/trackedGraph.js.map +1 -0
- package/dist/tools/readCypher.js +9 -2
- package/dist/tools/readCypher.js.map +1 -1
- package/dist/tools/semanticFind.js +9 -6
- package/dist/tools/semanticFind.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { existsSync, readFileSync } from "node:fs";
|
|
2
2
|
import { basename, join } from "node:path";
|
|
3
3
|
import { resolveRepoPath, walkUp, walkDown } from "./resolveRepoPath.js";
|
|
4
|
+
import { trackedGraphFiles, trackedGraphWarning } from "./trackedGraph.js";
|
|
4
5
|
function countLines(text) {
|
|
5
6
|
let n = 0;
|
|
6
7
|
for (const line of text.split("\n"))
|
|
@@ -41,11 +42,13 @@ function cheapCounts(path) {
|
|
|
41
42
|
}
|
|
42
43
|
export function describeRepo(path) {
|
|
43
44
|
const repo_id = readMetaRepoId(path);
|
|
45
|
+
const tracked = trackedGraphFiles(path).length > 0;
|
|
44
46
|
return {
|
|
45
47
|
path,
|
|
46
48
|
...(repo_id ? { repo_id } : {}),
|
|
47
49
|
name: repo_id ?? basename(path),
|
|
48
50
|
...cheapCounts(path),
|
|
51
|
+
...(tracked ? { graph_tracked: true } : {}),
|
|
49
52
|
};
|
|
50
53
|
}
|
|
51
54
|
/** Every repo `list_repos` should report. Deliberately broader than
|
|
@@ -77,6 +80,9 @@ export class RepoSession {
|
|
|
77
80
|
cwd;
|
|
78
81
|
envRepoPath;
|
|
79
82
|
selectedPath;
|
|
83
|
+
/** Repo paths whose tracked-graph state this session has already probed —
|
|
84
|
+
* warned or clean, either way we never probe (or repeat) again. */
|
|
85
|
+
graphWarned = new Set();
|
|
80
86
|
constructor(opts) {
|
|
81
87
|
this.cwd = opts.cwd;
|
|
82
88
|
this.envRepoPath = opts.envRepoPath;
|
|
@@ -87,6 +93,25 @@ export class RepoSession {
|
|
|
87
93
|
return { repoPath: this.selectedPath, source: "explicit" };
|
|
88
94
|
return resolveRepoPath({ cwd: this.cwd, envRepoPath: this.envRepoPath });
|
|
89
95
|
}
|
|
96
|
+
/** One-shot, once per repo per session: the tracked-graph warning for the
|
|
97
|
+
* currently resolved repo, or undefined (clean repo, no repo, or already
|
|
98
|
+
* taken). The instrumentation layer (instrumentTool.ts) appends it to the
|
|
99
|
+
* first successful tool result — repeating it every call would spend the
|
|
100
|
+
* context this feature exists to protect (REP-35).
|
|
101
|
+
*
|
|
102
|
+
* `resolvedPath` is an optional override: `instrumentTool.ts` already
|
|
103
|
+
* computes the call's resolution once via its ALS-memoized
|
|
104
|
+
* `cachedResolve()` (see its "single resolution per call" invariant) and
|
|
105
|
+
* passes that in, so this never triggers a second, unmemoized
|
|
106
|
+
* `resolve()` walk for the same tool call. Omit it (as a standalone
|
|
107
|
+
* caller would) to resolve directly. */
|
|
108
|
+
takeTrackedGraphWarning(resolvedPath) {
|
|
109
|
+
const path = resolvedPath ?? this.resolve().repoPath;
|
|
110
|
+
if (!path || this.graphWarned.has(path))
|
|
111
|
+
return undefined;
|
|
112
|
+
this.graphWarned.add(path);
|
|
113
|
+
return trackedGraphWarning(path);
|
|
114
|
+
}
|
|
90
115
|
/** Every candidate repo for this session — see `discoverRepoPaths`. Each
|
|
91
116
|
* entry is flagged `selected` for whichever one `resolve()` currently
|
|
92
117
|
* returns, so an agent can see the effect of a prior `select_repo` call. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repoSession.js","sourceRoot":"","sources":["../../src/store/repoSession.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,QAAQ,EAAuB,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"repoSession.js","sourceRoot":"","sources":["../../src/store/repoSession.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/** The derived graph files that must never be tracked (repo-relative). */
|
|
2
|
+
export declare const GRAPH_FILES: readonly [".reposkein/nodes.jsonl", ".reposkein/edges.jsonl"];
|
|
3
|
+
/** Repo-relative paths of the derived graph files git currently TRACKS at
|
|
4
|
+
* `repoPath` — `[]` when untracked, or when there is no git repo at all.
|
|
5
|
+
* Pre-0.2.7 adopters committed these; a tracked pair reached 7.2MB (~1.9×
|
|
6
|
+
* a 1M-token context window) in the wild, so every surface that can steer
|
|
7
|
+
* an agent (doctor, migrate, the MCP session warning) keys off this one
|
|
8
|
+
* probe. */
|
|
9
|
+
export declare function trackedGraphFiles(repoPath: string): string[];
|
|
10
|
+
/** Agent-facing warning for a repo whose derived graph is tracked, or
|
|
11
|
+
* undefined when it isn't. One string, reused verbatim by doctor's detail,
|
|
12
|
+
* the MCP once-per-session warning, and `list_repos` — the copy names both
|
|
13
|
+
* the permanent fix and the interim escape hatch. */
|
|
14
|
+
export declare function trackedGraphWarning(repoPath: string): string | undefined;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { execFileSync } from "node:child_process";
|
|
2
|
+
/** The derived graph files that must never be tracked (repo-relative). */
|
|
3
|
+
export const GRAPH_FILES = [".reposkein/nodes.jsonl", ".reposkein/edges.jsonl"];
|
|
4
|
+
/** Repo-relative paths of the derived graph files git currently TRACKS at
|
|
5
|
+
* `repoPath` — `[]` when untracked, or when there is no git repo at all.
|
|
6
|
+
* Pre-0.2.7 adopters committed these; a tracked pair reached 7.2MB (~1.9×
|
|
7
|
+
* a 1M-token context window) in the wild, so every surface that can steer
|
|
8
|
+
* an agent (doctor, migrate, the MCP session warning) keys off this one
|
|
9
|
+
* probe. */
|
|
10
|
+
export function trackedGraphFiles(repoPath) {
|
|
11
|
+
try {
|
|
12
|
+
const out = execFileSync("git", ["-C", repoPath, "ls-files", "--", ...GRAPH_FILES], {
|
|
13
|
+
encoding: "utf8",
|
|
14
|
+
stdio: ["ignore", "pipe", "ignore"],
|
|
15
|
+
});
|
|
16
|
+
return out
|
|
17
|
+
.split("\n")
|
|
18
|
+
.map((l) => l.trim())
|
|
19
|
+
.filter(Boolean);
|
|
20
|
+
}
|
|
21
|
+
catch {
|
|
22
|
+
return []; // no git / not a work tree → nothing can be tracked
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
/** Agent-facing warning for a repo whose derived graph is tracked, or
|
|
26
|
+
* undefined when it isn't. One string, reused verbatim by doctor's detail,
|
|
27
|
+
* the MCP once-per-session warning, and `list_repos` — the copy names both
|
|
28
|
+
* the permanent fix and the interim escape hatch. */
|
|
29
|
+
export function trackedGraphWarning(repoPath) {
|
|
30
|
+
const tracked = trackedGraphFiles(repoPath);
|
|
31
|
+
if (tracked.length === 0)
|
|
32
|
+
return undefined;
|
|
33
|
+
return (`⚠ ${tracked.join(" + ")} are TRACKED in git at ${repoPath}. A bare \`git diff\`, ` +
|
|
34
|
+
"`git show`, `git status -v`, or `gh pr diff` there can pull megabytes of machine-" +
|
|
35
|
+
"generated JSONL into a context window and exhaust it. Permanent fix: run " +
|
|
36
|
+
`\`reposkein-mcp migrate ${repoPath}\` and commit the staged untracking. Until then, ` +
|
|
37
|
+
"always scope diffs, e.g. `git diff -- . ':(exclude).reposkein'`.");
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=trackedGraph.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trackedGraph.js","sourceRoot":"","sources":["../../src/store/trackedGraph.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,0EAA0E;AAC1E,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,wBAAwB,EAAE,wBAAwB,CAAU,CAAC;AAEzF;;;;;aAKa;AACb,MAAM,UAAU,iBAAiB,CAAC,QAAgB;IAChD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,YAAY,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,WAAW,CAAC,EAAE;YAClF,QAAQ,EAAE,MAAM;YAChB,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC;SACpC,CAAC,CAAC;QACH,OAAO,GAAG;aACP,KAAK,CAAC,IAAI,CAAC;aACX,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;aACpB,MAAM,CAAC,OAAO,CAAC,CAAC;IACrB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC,CAAC,oDAAoD;IACjE,CAAC;AACH,CAAC;AAED;;;sDAGsD;AACtD,MAAM,UAAU,mBAAmB,CAAC,QAAgB;IAClD,MAAM,OAAO,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IAC5C,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAC3C,OAAO,CACL,KAAK,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,0BAA0B,QAAQ,yBAAyB;QACnF,mFAAmF;QACnF,2EAA2E;QAC3E,2BAA2B,QAAQ,mDAAmD;QACtF,kEAAkE,CACnE,CAAC;AACJ,CAAC"}
|
package/dist/tools/readCypher.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { assertReadOnly } from "../guard/readonly.js";
|
|
2
|
-
import { applyCaps } from "../guard/caps.js";
|
|
2
|
+
import { applyCaps, MAX_ROWS } from "../guard/caps.js";
|
|
3
3
|
import { federationIds } from "../store/federation.js";
|
|
4
4
|
/** Builds the read_cypher handler bound to a store and (optional) repo scope. */
|
|
5
5
|
export function makeReadCypher(store, repoId) {
|
|
@@ -20,7 +20,14 @@ export function makeReadCypher(store, repoId) {
|
|
|
20
20
|
merged.repo_ids = args.federated ? await federationIds(store, repoId) : [repoId];
|
|
21
21
|
}
|
|
22
22
|
try {
|
|
23
|
-
|
|
23
|
+
// Ask for one row past the cap rather than for everything: the store
|
|
24
|
+
// stops streaming there, so a broad query never materialises the whole
|
|
25
|
+
// database just to have 200 rows kept. applyCaps still decides the
|
|
26
|
+
// final shape (and the byte cap).
|
|
27
|
+
const rows = await store.runRead(query, merged, {
|
|
28
|
+
timeoutMs: 10_000,
|
|
29
|
+
maxRows: MAX_ROWS,
|
|
30
|
+
});
|
|
24
31
|
const { rows: capped, truncated } = applyCaps(rows);
|
|
25
32
|
return {
|
|
26
33
|
content: [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"readCypher.js","sourceRoot":"","sources":["../../src/tools/readCypher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"readCypher.js","sourceRoot":"","sources":["../../src/tools/readCypher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEvD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAcvD,iFAAiF;AACjF,MAAM,UAAU,cAAc,CAAC,KAAiB,EAAE,MAAe;IAC/D,OAAO,KAAK,EAAE,IAAoB,EAAuB,EAAE;QACzD,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;QAC/B,IAAI,CAAC;YACH,cAAc,CAAC,KAAK,CAAC,CAAC;QACxB,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAG,CAAW,CAAC,OAAO,EAAE,CAAC;gBACvD,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;QACD,MAAM,MAAM,GAA4B,EAAE,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,CAAC;QAC9D,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC;YACxB,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QACnF,CAAC;QACD,IAAI,CAAC;YACH,qEAAqE;YACrE,uEAAuE;YACvE,mEAAmE;YACnE,kCAAkC;YAClC,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE;gBAC9C,SAAS,EAAE,MAAM;gBACjB,OAAO,EAAE,QAAQ;aAClB,CAAC,CAAC;YACH,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;YACpD,OAAO;gBACL,OAAO,EAAE;oBACP,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,EAAE;iBACpE;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,mEAAmE;YACnE,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAG,CAAW,CAAC,OAAO,EAAE,CAAC;gBACvD,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -20,8 +20,8 @@ import { federationIds } from "../store/federation.js";
|
|
|
20
20
|
import { loadDecisions } from "../store/decisions.js";
|
|
21
21
|
import { rankCorpus } from "../search/bm25f.js";
|
|
22
22
|
import { providerFromEnv } from "../embed/provider.js";
|
|
23
|
-
import {
|
|
24
|
-
import {
|
|
23
|
+
import { ensureCorpusVectors } from "../embed/corpusVectors.js";
|
|
24
|
+
import { rrf } from "../embed/hybrid.js";
|
|
25
25
|
import { neutralizeSummary } from "../guard/summaryValidation.js";
|
|
26
26
|
const DEFAULT_LIMIT = 10;
|
|
27
27
|
const MAX_LIMIT = 25;
|
|
@@ -102,11 +102,14 @@ export function makeSemanticFind(store, repoId, repoPath = ".", providerOverride
|
|
|
102
102
|
if (provider !== null) {
|
|
103
103
|
// Attempt hybrid embedding path — catch all errors → fallback to lexical
|
|
104
104
|
try {
|
|
105
|
-
const
|
|
106
|
-
const queryVecs = await provider.
|
|
105
|
+
const vectors = await ensureCorpusVectors(provider, repoPath, corpus);
|
|
106
|
+
const queryVecs = await provider.embedBatch([query], "query");
|
|
107
107
|
const queryVec = queryVecs[0];
|
|
108
|
-
if (queryVec &&
|
|
109
|
-
|
|
108
|
+
if (queryVec && vectors.size > 0) {
|
|
109
|
+
// Ranking happens inside the store: it allocates the k results,
|
|
110
|
+
// not one scored object per corpus node. Restricted to the corpus
|
|
111
|
+
// actually in play, since `kind` may have filtered it.
|
|
112
|
+
const cosineRanked = vectors.topK(queryVec, MAX_LIMIT * 5, new Set(corpus.map((n) => n.id)));
|
|
110
113
|
// Build RankedItem arrays for RRF
|
|
111
114
|
const lexicalItems = lexicalRanked.map((r) => ({ id: r.node.id, score: r.score }));
|
|
112
115
|
const cosineItems = cosineRanked;
|
|
@@ -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,aAAa,EAA4C,MAAM,uBAAuB,CAAC;AAChG,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGhD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"semanticFind.js","sourceRoot":"","sources":["../../src/tools/semanticFind.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED