@reposkein/mcp 0.1.0 → 0.1.2
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 +135 -0
- package/dist/SKILL.md +31 -0
- package/dist/cli/doctor.d.ts +19 -0
- package/dist/cli/doctor.js +92 -0
- package/dist/cli/doctor.js.map +1 -0
- package/dist/embed/cache.d.ts +51 -0
- package/dist/embed/cache.js +163 -0
- package/dist/embed/cache.js.map +1 -0
- package/dist/embed/hybrid.d.ts +43 -0
- package/dist/embed/hybrid.js +106 -0
- package/dist/embed/hybrid.js.map +1 -0
- package/dist/embed/provider.d.ts +34 -0
- package/dist/embed/provider.js +32 -0
- package/dist/embed/provider.js.map +1 -0
- package/dist/embed/providers/http.d.ts +35 -0
- package/dist/embed/providers/http.js +93 -0
- package/dist/embed/providers/http.js.map +1 -0
- package/dist/embed/providers/voyage.d.ts +32 -0
- package/dist/embed/providers/voyage.js +93 -0
- package/dist/embed/providers/voyage.js.map +1 -0
- package/dist/index.js +61 -9
- package/dist/index.js.map +1 -1
- package/dist/profile/impact.d.ts +43 -0
- package/dist/profile/impact.js +112 -0
- package/dist/profile/impact.js.map +1 -0
- package/dist/search/bm25f.d.ts +31 -0
- package/dist/search/bm25f.js +151 -0
- package/dist/search/bm25f.js.map +1 -0
- package/dist/store/GraphStore.d.ts +14 -0
- package/dist/store/GraphStore.js.map +1 -1
- package/dist/store/JsonlGraphStore.d.ts +2 -1
- package/dist/store/JsonlGraphStore.js +25 -0
- package/dist/store/JsonlGraphStore.js.map +1 -1
- package/dist/store/Neo4jGraphStore.d.ts +2 -1
- package/dist/store/Neo4jGraphStore.js +18 -0
- package/dist/store/Neo4jGraphStore.js.map +1 -1
- package/dist/store/UnconfiguredStore.d.ts +2 -1
- package/dist/store/UnconfiguredStore.js +3 -0
- package/dist/store/UnconfiguredStore.js.map +1 -1
- package/dist/temporal/gitlog.d.ts +65 -0
- package/dist/temporal/gitlog.js +254 -0
- package/dist/temporal/gitlog.js.map +1 -0
- package/dist/temporal/temporal.d.ts +22 -0
- package/dist/temporal/temporal.js +185 -0
- package/dist/temporal/temporal.js.map +1 -0
- package/dist/tools/impact.d.ts +11 -0
- package/dist/tools/impact.js +63 -0
- package/dist/tools/impact.js.map +1 -0
- package/dist/tools/semanticFind.d.ts +37 -0
- package/dist/tools/semanticFind.js +155 -0
- package/dist/tools/semanticFind.js.map +1 -0
- package/dist/tools/temporalContext.d.ts +12 -0
- package/dist/tools/temporalContext.js +55 -0
- package/dist/tools/temporalContext.js.map +1 -0
- package/package.json +1 -1
- package/scripts/bundle-skill.mjs +1 -1
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Mirrors the Rust indexer's `role_for` test classification (classify.rs).
|
|
3
|
+
* A file is a test file if:
|
|
4
|
+
* - any lowercased path segment equals "test" or "tests", or ends with ".tests"
|
|
5
|
+
* - the lowercased basename starts with "test_"
|
|
6
|
+
* - the basename contains "_test.", ".test.", ".spec.", or ".tests."
|
|
7
|
+
* - the original (case-preserving) basename ends with "Test.<ext>", "Tests.<ext>"
|
|
8
|
+
*
|
|
9
|
+
* "contest_results.py" → false (basename "contest_results.py" doesn't start with "test_").
|
|
10
|
+
*/
|
|
11
|
+
export function isTestPath(filePath) {
|
|
12
|
+
const p = filePath.toLowerCase();
|
|
13
|
+
const basename = p.includes("/") ? p.slice(p.lastIndexOf("/") + 1) : p;
|
|
14
|
+
const origBasename = filePath.includes("/")
|
|
15
|
+
? filePath.slice(filePath.lastIndexOf("/") + 1)
|
|
16
|
+
: filePath;
|
|
17
|
+
// Any path segment == "test" | "tests", or ends with ".tests"
|
|
18
|
+
const inTestDir = p.split("/").some((seg) => seg === "test" || seg === "tests" || seg.endsWith(".tests"));
|
|
19
|
+
if (inTestDir)
|
|
20
|
+
return true;
|
|
21
|
+
// Basename test_ prefix
|
|
22
|
+
if (basename.startsWith("test_"))
|
|
23
|
+
return true;
|
|
24
|
+
// Basename contains _test., .test., .spec., .tests.
|
|
25
|
+
if (basename.includes("_test.") ||
|
|
26
|
+
basename.includes(".test.") ||
|
|
27
|
+
basename.includes(".spec.") ||
|
|
28
|
+
basename.includes(".tests.")) {
|
|
29
|
+
return true;
|
|
30
|
+
}
|
|
31
|
+
// Case-sensitive: original basename ends with Test.<ext> or Tests.<ext>
|
|
32
|
+
// e.g. FooTest.java, FooTests.java, FooTests.cs
|
|
33
|
+
// Match any extension: "Test." followed by word chars, or "Tests." followed by word chars
|
|
34
|
+
if (/Test\.\w+$/.test(origBasename) || /Tests\.\w+$/.test(origBasename)) {
|
|
35
|
+
return true;
|
|
36
|
+
}
|
|
37
|
+
return false;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* BFS over callers to bounded depth with a maxNodes cap.
|
|
41
|
+
* NeighborRow does not carry file_path, so we fetch it via store.getNode().
|
|
42
|
+
* Deterministic ordering: depth asc, then node_id asc.
|
|
43
|
+
*/
|
|
44
|
+
export async function computeImpact(store, repoIds, targetId, targetQN, targetFile, opts) {
|
|
45
|
+
const { depth: maxDepth, maxNodes } = opts;
|
|
46
|
+
// visited: node_id → { qualifiedName, filePath, depth }
|
|
47
|
+
const visited = new Map();
|
|
48
|
+
// frontier: array of node_ids at the current level
|
|
49
|
+
let frontier = [targetId];
|
|
50
|
+
// Mark the target as visited at depth 0 (excluded from output)
|
|
51
|
+
visited.set(targetId, { qualified_name: targetQN, file_path: targetFile, depth: 0 });
|
|
52
|
+
let truncated = false;
|
|
53
|
+
for (let currentDepth = 1; currentDepth <= maxDepth && frontier.length > 0; currentDepth++) {
|
|
54
|
+
const nextFrontier = [];
|
|
55
|
+
// Collect all callers for all frontier nodes at this depth
|
|
56
|
+
// Use a generous per-node limit; we dedupe globally via visited
|
|
57
|
+
const PER_NODE_LIMIT = Math.max(maxNodes, 1000);
|
|
58
|
+
for (const nodeId of frontier) {
|
|
59
|
+
const callerRows = await store.callers(repoIds, nodeId, PER_NODE_LIMIT);
|
|
60
|
+
for (const row of callerRows) {
|
|
61
|
+
if (visited.has(row.id))
|
|
62
|
+
continue;
|
|
63
|
+
// Fetch file_path via getNode (NeighborRow doesn't carry it)
|
|
64
|
+
const node = await store.getNode(repoIds, row.id);
|
|
65
|
+
const filePath = node?.file_path ?? "";
|
|
66
|
+
const qualifiedName = node?.qualified_name ?? row.name;
|
|
67
|
+
visited.set(row.id, { qualified_name: qualifiedName, file_path: filePath, depth: currentDepth });
|
|
68
|
+
nextFrontier.push(row.id);
|
|
69
|
+
// Check maxNodes cap (excluding the target at depth 0)
|
|
70
|
+
if (visited.size - 1 >= maxNodes) {
|
|
71
|
+
truncated = true;
|
|
72
|
+
break;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
if (truncated)
|
|
76
|
+
break;
|
|
77
|
+
}
|
|
78
|
+
if (truncated)
|
|
79
|
+
break;
|
|
80
|
+
frontier = nextFrontier;
|
|
81
|
+
}
|
|
82
|
+
// Partition visited (excluding the target) into impacted vs covering_tests
|
|
83
|
+
const allRows = [];
|
|
84
|
+
for (const [nodeId, info] of visited) {
|
|
85
|
+
if (nodeId === targetId)
|
|
86
|
+
continue;
|
|
87
|
+
const isTest = isTestPath(info.file_path);
|
|
88
|
+
allRows.push({
|
|
89
|
+
node_id: nodeId,
|
|
90
|
+
qualified_name: info.qualified_name,
|
|
91
|
+
file_path: info.file_path,
|
|
92
|
+
depth: info.depth,
|
|
93
|
+
is_test: isTest,
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
// Deterministic ordering: depth asc, then node_id asc
|
|
97
|
+
allRows.sort((a, b) => a.depth - b.depth || a.node_id.localeCompare(b.node_id));
|
|
98
|
+
const impacted = allRows.filter((r) => !r.is_test);
|
|
99
|
+
const covering_tests = allRows.filter((r) => r.is_test);
|
|
100
|
+
return {
|
|
101
|
+
target: { node_id: targetId, qualified_name: targetQN, file_path: targetFile },
|
|
102
|
+
depth: maxDepth,
|
|
103
|
+
impacted,
|
|
104
|
+
covering_tests,
|
|
105
|
+
counts: {
|
|
106
|
+
impacted: impacted.length,
|
|
107
|
+
covering_tests: covering_tests.length,
|
|
108
|
+
truncated,
|
|
109
|
+
},
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
//# sourceMappingURL=impact.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"impact.js","sourceRoot":"","sources":["../../src/profile/impact.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Deterministic BM25F lexical scorer for semantic_find.
|
|
3
|
+
*
|
|
4
|
+
* Architecture (design §3):
|
|
5
|
+
* - Tokenize by splitting on non-alphanumeric boundaries AND camelCase/PascalCase.
|
|
6
|
+
* - ASCII-lowercase, drop length-1 tokens. No stemming/stopwords.
|
|
7
|
+
* - Per-field weights: { qualified_name:10, name:8, summary:4, signature:2, file_path:1 }
|
|
8
|
+
* - BM25F with k1=1.2, b=0.75, IDF computed over whole corpus.
|
|
9
|
+
* - Deterministic: fixed iteration order, scores rounded to 6 decimal places,
|
|
10
|
+
* ties broken by node_id ascending.
|
|
11
|
+
* - Pure function: no clock, no random, no I/O.
|
|
12
|
+
*/
|
|
13
|
+
import type { CorpusNode } from "../store/GraphStore.js";
|
|
14
|
+
export interface Scored {
|
|
15
|
+
node: CorpusNode;
|
|
16
|
+
score: number;
|
|
17
|
+
matched: string[];
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Tokenize a string by:
|
|
21
|
+
* 1. Split on non-alphanumeric characters.
|
|
22
|
+
* 2. Split camelCase / PascalCase runs (lower→upper boundary, acronym+word boundary).
|
|
23
|
+
* 3. ASCII-lowercase.
|
|
24
|
+
* 4. Drop tokens of length ≤ 1.
|
|
25
|
+
*/
|
|
26
|
+
export declare function tokenize(s: string): string[];
|
|
27
|
+
/**
|
|
28
|
+
* Rank corpus nodes by BM25F for the given query, returning up to limit results.
|
|
29
|
+
* Deterministic: identical corpus + query → identical ranking.
|
|
30
|
+
*/
|
|
31
|
+
export declare function rankCorpus(corpus: CorpusNode[], query: string, limit: number): Scored[];
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Deterministic BM25F lexical scorer for semantic_find.
|
|
3
|
+
*
|
|
4
|
+
* Architecture (design §3):
|
|
5
|
+
* - Tokenize by splitting on non-alphanumeric boundaries AND camelCase/PascalCase.
|
|
6
|
+
* - ASCII-lowercase, drop length-1 tokens. No stemming/stopwords.
|
|
7
|
+
* - Per-field weights: { qualified_name:10, name:8, summary:4, signature:2, file_path:1 }
|
|
8
|
+
* - BM25F with k1=1.2, b=0.75, IDF computed over whole corpus.
|
|
9
|
+
* - Deterministic: fixed iteration order, scores rounded to 6 decimal places,
|
|
10
|
+
* ties broken by node_id ascending.
|
|
11
|
+
* - Pure function: no clock, no random, no I/O.
|
|
12
|
+
*/
|
|
13
|
+
// Field weights (design §3.2)
|
|
14
|
+
const WEIGHTS = {
|
|
15
|
+
qualified_name: 10,
|
|
16
|
+
name: 8,
|
|
17
|
+
summary: 4,
|
|
18
|
+
signature: 2,
|
|
19
|
+
file_path: 1,
|
|
20
|
+
};
|
|
21
|
+
// Field names in fixed iteration order (for deterministic FP accumulation)
|
|
22
|
+
const FIELDS = ["qualified_name", "name", "summary", "signature", "file_path"];
|
|
23
|
+
const K1 = 1.2;
|
|
24
|
+
const B = 0.75;
|
|
25
|
+
const SCORE_PRECISION = 1e6; // round to 6 decimal places
|
|
26
|
+
/**
|
|
27
|
+
* Tokenize a string by:
|
|
28
|
+
* 1. Split on non-alphanumeric characters.
|
|
29
|
+
* 2. Split camelCase / PascalCase runs (lower→upper boundary, acronym+word boundary).
|
|
30
|
+
* 3. ASCII-lowercase.
|
|
31
|
+
* 4. Drop tokens of length ≤ 1.
|
|
32
|
+
*/
|
|
33
|
+
export function tokenize(s) {
|
|
34
|
+
// First split on non-alphanumeric boundaries (/, ., _, -, whitespace, #, (, ), <, >, :, etc.)
|
|
35
|
+
const parts = s.split(/[^a-zA-Z0-9]+/);
|
|
36
|
+
const tokens = [];
|
|
37
|
+
for (const part of parts) {
|
|
38
|
+
if (part.length === 0)
|
|
39
|
+
continue;
|
|
40
|
+
// Split camelCase/PascalCase:
|
|
41
|
+
// - Insert split before an uppercase letter that follows a lowercase letter: e.g. getUserById → get|User|By|Id
|
|
42
|
+
// - Insert split before an uppercase letter followed by lowercase when preceded by uppercase: e.g. HTTPServer → HTTP|Server
|
|
43
|
+
const subparts = part
|
|
44
|
+
.replace(/([a-z])([A-Z])/g, "$1\0$2")
|
|
45
|
+
.replace(/([A-Z]+)([A-Z][a-z])/g, "$1\0$2")
|
|
46
|
+
.split("\0");
|
|
47
|
+
for (const sp of subparts) {
|
|
48
|
+
const lower = sp.toLowerCase();
|
|
49
|
+
if (lower.length > 1) {
|
|
50
|
+
tokens.push(lower);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
return tokens;
|
|
55
|
+
}
|
|
56
|
+
/** Build token multiset for a field value. */
|
|
57
|
+
function fieldTokens(value) {
|
|
58
|
+
return tokenize(value);
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Rank corpus nodes by BM25F for the given query, returning up to limit results.
|
|
62
|
+
* Deterministic: identical corpus + query → identical ranking.
|
|
63
|
+
*/
|
|
64
|
+
export function rankCorpus(corpus, query, limit) {
|
|
65
|
+
if (corpus.length === 0 || !query.trim())
|
|
66
|
+
return [];
|
|
67
|
+
// 1. Tokenize query
|
|
68
|
+
const queryTokens = tokenize(query);
|
|
69
|
+
if (queryTokens.length === 0)
|
|
70
|
+
return [];
|
|
71
|
+
const uniqueQueryTokens = [...new Set(queryTokens)];
|
|
72
|
+
// 2. Build per-node documents in id-sorted order (corpus is already sorted by store)
|
|
73
|
+
const docs = corpus.map((node) => {
|
|
74
|
+
const fields = {};
|
|
75
|
+
const fieldLengths = {};
|
|
76
|
+
for (const f of FIELDS) {
|
|
77
|
+
const value = node[f] ?? "";
|
|
78
|
+
const toks = fieldTokens(value);
|
|
79
|
+
fields[f] = toks;
|
|
80
|
+
fieldLengths[f] = toks.length;
|
|
81
|
+
}
|
|
82
|
+
return { node, fields, fieldLengths };
|
|
83
|
+
});
|
|
84
|
+
// 3. Compute average field lengths across corpus
|
|
85
|
+
const avgFieldLen = {};
|
|
86
|
+
for (const f of FIELDS) {
|
|
87
|
+
const total = docs.reduce((sum, d) => sum + d.fieldLengths[f], 0);
|
|
88
|
+
avgFieldLen[f] = docs.length > 0 ? total / docs.length : 1;
|
|
89
|
+
}
|
|
90
|
+
// 4. Build inverted index: token → set of doc indices (for IDF)
|
|
91
|
+
const dfMap = new Map();
|
|
92
|
+
for (const qt of uniqueQueryTokens) {
|
|
93
|
+
let df = 0;
|
|
94
|
+
for (const doc of docs) {
|
|
95
|
+
// Check if token appears in any field of this doc
|
|
96
|
+
let found = false;
|
|
97
|
+
for (const f of FIELDS) {
|
|
98
|
+
if (doc.fields[f].includes(qt)) {
|
|
99
|
+
found = true;
|
|
100
|
+
break;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
if (found)
|
|
104
|
+
df++;
|
|
105
|
+
}
|
|
106
|
+
dfMap.set(qt, df);
|
|
107
|
+
}
|
|
108
|
+
const N = docs.length;
|
|
109
|
+
// 5. Score each document
|
|
110
|
+
const scored = [];
|
|
111
|
+
for (const doc of docs) {
|
|
112
|
+
let totalScore = 0;
|
|
113
|
+
const matchedTokens = new Set();
|
|
114
|
+
for (const qt of uniqueQueryTokens) {
|
|
115
|
+
const df = dfMap.get(qt) ?? 0;
|
|
116
|
+
if (df === 0)
|
|
117
|
+
continue;
|
|
118
|
+
// IDF: ln(1 + (N - df + 0.5) / (df + 0.5)) — always positive for df < N
|
|
119
|
+
const idf = Math.log(1 + (N - df + 0.5) / (df + 0.5));
|
|
120
|
+
// Weighted TF across fields (BM25F-style)
|
|
121
|
+
let weightedTf = 0;
|
|
122
|
+
for (const f of FIELDS) {
|
|
123
|
+
const toks = doc.fields[f];
|
|
124
|
+
const tf = toks.filter((t) => t === qt).length;
|
|
125
|
+
if (tf === 0)
|
|
126
|
+
continue;
|
|
127
|
+
matchedTokens.add(qt);
|
|
128
|
+
const fieldLen = doc.fieldLengths[f];
|
|
129
|
+
const avgLen = avgFieldLen[f] > 0 ? avgFieldLen[f] : 1;
|
|
130
|
+
// BM25 saturation with length normalization
|
|
131
|
+
const saturated = (tf * (K1 + 1)) / (tf + K1 * (1 - B + B * (fieldLen / avgLen)));
|
|
132
|
+
weightedTf += WEIGHTS[f] * saturated;
|
|
133
|
+
}
|
|
134
|
+
totalScore += idf * weightedTf;
|
|
135
|
+
}
|
|
136
|
+
if (totalScore > 0) {
|
|
137
|
+
// Round to fixed precision to prevent cross-platform FP jitter from reordering ties
|
|
138
|
+
const roundedScore = Math.round(totalScore * SCORE_PRECISION) / SCORE_PRECISION;
|
|
139
|
+
scored.push({ node: doc.node, score: roundedScore, matched: [...matchedTokens].sort() });
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
// 6. Sort: descending score, tie-break ascending node_id
|
|
143
|
+
scored.sort((a, b) => {
|
|
144
|
+
const diff = b.score - a.score;
|
|
145
|
+
if (diff !== 0)
|
|
146
|
+
return diff;
|
|
147
|
+
return a.node.id < b.node.id ? -1 : a.node.id > b.node.id ? 1 : 0;
|
|
148
|
+
});
|
|
149
|
+
return scored.slice(0, limit);
|
|
150
|
+
}
|
|
151
|
+
//# sourceMappingURL=bm25f.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bm25f.js","sourceRoot":"","sources":["../../src/search/bm25f.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,15 @@
|
|
|
1
1
|
import type { TargetRow } from "../profile/types.js";
|
|
2
|
+
/** A node eligible for BM25F lexical search (Function/Class/Interface/Enum). */
|
|
3
|
+
export interface CorpusNode {
|
|
4
|
+
id: string;
|
|
5
|
+
kind: string;
|
|
6
|
+
name: string;
|
|
7
|
+
qualified_name: string;
|
|
8
|
+
signature: string;
|
|
9
|
+
summary: string;
|
|
10
|
+
file_path: string;
|
|
11
|
+
repo_id: string;
|
|
12
|
+
}
|
|
2
13
|
/** Thrown by stores that cannot execute raw Cypher (e.g. the JSONL store).
|
|
3
14
|
* read_cypher surfaces the message to the agent. */
|
|
4
15
|
export declare class CypherUnsupportedError extends Error {
|
|
@@ -53,6 +64,9 @@ export interface GraphStore {
|
|
|
53
64
|
writeSummary(repoId: string, id: string, fields: SummaryFields): Promise<WriteSummaryResult>;
|
|
54
65
|
/** Transitively federated repo_ids (NOT including repoId itself). */
|
|
55
66
|
federatedRepoIds(repoId: string): Promise<string[]>;
|
|
67
|
+
/** Function/Class/Interface/Enum corpus nodes for all repoIds, sorted by id.
|
|
68
|
+
* Used by the shared BM25F scorer for semantic_find. */
|
|
69
|
+
searchCorpus(repoIds: string[]): Promise<CorpusNode[]>;
|
|
56
70
|
/** Raw read-only Cypher (read_cypher tool only). Stores without a Cypher
|
|
57
71
|
* engine throw CypherUnsupportedError. */
|
|
58
72
|
runRead(query: string, params?: Record<string, unknown>, opts?: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GraphStore.js","sourceRoot":"","sources":["../../src/store/GraphStore.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"GraphStore.js","sourceRoot":"","sources":["../../src/store/GraphStore.ts"],"names":[],"mappings":"AAcA;qDACqD;AACrD,MAAM,OAAO,sBAAuB,SAAQ,KAAK;IAC/C,YACE,OAAO,GAAG,yFAAyF;QAEnG,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC;IACvC,CAAC;CACF"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type GraphStore, type NeighborRow, type SummaryFields, type WriteSummaryResult } from "./GraphStore.js";
|
|
1
|
+
import { type CorpusNode, type GraphStore, type NeighborRow, type SummaryFields, type WriteSummaryResult } from "./GraphStore.js";
|
|
2
2
|
import type { TargetRow } from "../profile/types.js";
|
|
3
3
|
/** A GraphStore over a repo's committed .reposkein JSONL. In single-repo mode
|
|
4
4
|
* it loads only the root; in federated mode it also loads nested children
|
|
@@ -32,6 +32,7 @@ export declare class JsonlGraphStore implements GraphStore {
|
|
|
32
32
|
calleesAt2Hops(repoIds: string[], id: string, limit: number): Promise<NeighborRow[]>;
|
|
33
33
|
writeSummary(repoId: string, id: string, fields: SummaryFields): Promise<WriteSummaryResult>;
|
|
34
34
|
federatedRepoIds(repoId: string): Promise<string[]>;
|
|
35
|
+
searchCorpus(repoIds: string[]): Promise<CorpusNode[]>;
|
|
35
36
|
runRead(): Promise<Record<string, unknown>[]>;
|
|
36
37
|
close(): Promise<void>;
|
|
37
38
|
}
|
|
@@ -265,6 +265,31 @@ export class JsonlGraphStore {
|
|
|
265
265
|
}
|
|
266
266
|
return ids;
|
|
267
267
|
}
|
|
268
|
+
async searchCorpus(repoIds) {
|
|
269
|
+
this.ensureFresh();
|
|
270
|
+
const CORPUS_LABELS = new Set(["Function", "Class", "Interface", "Enum"]);
|
|
271
|
+
const rows = [];
|
|
272
|
+
for (const n of this.graph.nodes) {
|
|
273
|
+
if (!repoIds.includes(n.repoId))
|
|
274
|
+
continue;
|
|
275
|
+
const kind = n.labels.find((l) => CORPUS_LABELS.has(l));
|
|
276
|
+
if (!kind)
|
|
277
|
+
continue;
|
|
278
|
+
const name = str(n.props.name) ?? "";
|
|
279
|
+
rows.push({
|
|
280
|
+
id: n.id,
|
|
281
|
+
kind,
|
|
282
|
+
name,
|
|
283
|
+
qualified_name: str(n.props.qualified_name) ?? name,
|
|
284
|
+
signature: str(n.props.signature) ?? "",
|
|
285
|
+
summary: str(n.props.semantic_summary) ?? "",
|
|
286
|
+
file_path: str(n.props.file_path) ?? "",
|
|
287
|
+
repo_id: n.repoId,
|
|
288
|
+
});
|
|
289
|
+
}
|
|
290
|
+
rows.sort((a, b) => (a.id < b.id ? -1 : a.id > b.id ? 1 : 0));
|
|
291
|
+
return rows;
|
|
292
|
+
}
|
|
268
293
|
async runRead() {
|
|
269
294
|
throw new CypherUnsupportedError();
|
|
270
295
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"JsonlGraphStore.js","sourceRoot":"","sources":["../../src/store/JsonlGraphStore.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"JsonlGraphStore.js","sourceRoot":"","sources":["../../src/store/JsonlGraphStore.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { GraphStore, NeighborRow, SummaryFields, WriteSummaryResult } from "./GraphStore.js";
|
|
1
|
+
import type { CorpusNode, GraphStore, NeighborRow, SummaryFields, WriteSummaryResult } from "./GraphStore.js";
|
|
2
2
|
import type { TargetRow } from "../profile/types.js";
|
|
3
3
|
export declare class Neo4jGraphStore implements GraphStore {
|
|
4
4
|
private driver;
|
|
@@ -16,6 +16,7 @@ export declare class Neo4jGraphStore implements GraphStore {
|
|
|
16
16
|
callees(repoIds: string[], id: string, limit: number): Promise<NeighborRow[]>;
|
|
17
17
|
calleesAt2Hops(repoIds: string[], id: string, limit: number): Promise<NeighborRow[]>;
|
|
18
18
|
writeSummary(repoId: string, id: string, fields: SummaryFields): Promise<WriteSummaryResult>;
|
|
19
|
+
searchCorpus(repoIds: string[]): Promise<CorpusNode[]>;
|
|
19
20
|
federatedRepoIds(repoId: string): Promise<string[]>;
|
|
20
21
|
runRead(query: string, params?: Record<string, unknown>, opts?: {
|
|
21
22
|
timeoutMs?: number;
|
|
@@ -104,6 +104,24 @@ export class Neo4jGraphStore {
|
|
|
104
104
|
"n.summary_model=$m, n.summary_at=$at, n.summary_by=$by", { id, repo: repoId, s: fields.summary, m: fields.model, at: fields.at, by: fields.by });
|
|
105
105
|
return { kind: "ok", stale_replaced };
|
|
106
106
|
}
|
|
107
|
+
async searchCorpus(repoIds) {
|
|
108
|
+
const rows = await this.runRead(`MATCH (n:Rs) WHERE (n:Function OR n:Class OR n:Interface OR n:Enum) AND n.repo_id IN $repo_ids
|
|
109
|
+
RETURN n.id AS id, [l IN labels(n) WHERE l <> 'Rs' AND l IN ['Function','Class','Interface','Enum']][0] AS kind,
|
|
110
|
+
n.name AS name, n.qualified_name AS qualified_name,
|
|
111
|
+
coalesce(n.signature, '') AS signature, coalesce(n.semantic_summary, '') AS summary,
|
|
112
|
+
n.file_path AS file_path, n.repo_id AS repo_id
|
|
113
|
+
ORDER BY n.id`, { repo_ids: repoIds });
|
|
114
|
+
return rows.map((r) => ({
|
|
115
|
+
id: r.id,
|
|
116
|
+
kind: r.kind ?? "Function",
|
|
117
|
+
name: r.name ?? "",
|
|
118
|
+
qualified_name: r.qualified_name ?? r.name ?? "",
|
|
119
|
+
signature: r.signature ?? "",
|
|
120
|
+
summary: r.summary ?? "",
|
|
121
|
+
file_path: r.file_path ?? "",
|
|
122
|
+
repo_id: r.repo_id ?? "",
|
|
123
|
+
}));
|
|
124
|
+
}
|
|
107
125
|
async federatedRepoIds(repoId) {
|
|
108
126
|
const rows = await this.runRead("MATCH (r:Repository {repo_id: $repo_id, root_path: '.'})-[:FEDERATES_TO*1..8]->(x:Repository) " +
|
|
109
127
|
"WHERE x.federated_repo_id IS NOT NULL RETURN DISTINCT x.federated_repo_id AS id", { repo_id: repoId }, { timeoutMs: 5000 });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Neo4jGraphStore.js","sourceRoot":"","sources":["../../src/store/Neo4jGraphStore.ts"],"names":[],"mappings":"AAAA,OAAO,KAAsB,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"Neo4jGraphStore.js","sourceRoot":"","sources":["../../src/store/Neo4jGraphStore.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { GraphStore, NeighborRow, SummaryFields, WriteSummaryResult } from "./GraphStore.js";
|
|
1
|
+
import type { CorpusNode, GraphStore, NeighborRow, SummaryFields, WriteSummaryResult } from "./GraphStore.js";
|
|
2
2
|
import type { TargetRow } from "../profile/types.js";
|
|
3
3
|
/** A no-op store used when NEO4J_PASSWORD is absent.
|
|
4
4
|
* All operations reject with an instructive error. */
|
|
@@ -11,6 +11,7 @@ export declare class UnconfiguredStore implements GraphStore {
|
|
|
11
11
|
calleesAt2Hops(): Promise<NeighborRow[]>;
|
|
12
12
|
writeSummary(_repoId: string, _id: string, _fields: SummaryFields): Promise<WriteSummaryResult>;
|
|
13
13
|
federatedRepoIds(): Promise<string[]>;
|
|
14
|
+
searchCorpus(_repoIds: string[]): Promise<CorpusNode[]>;
|
|
14
15
|
runRead(): Promise<Record<string, unknown>[]>;
|
|
15
16
|
close(): Promise<void>;
|
|
16
17
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UnconfiguredStore.js","sourceRoot":"","sources":["../../src/store/UnconfiguredStore.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"UnconfiguredStore.js","sourceRoot":"","sources":["../../src/store/UnconfiguredStore.ts"],"names":[],"mappings":"AASA,MAAM,GAAG,GACP,kFAAkF,CAAC;AAErF;uDACuD;AACvD,MAAM,OAAO,iBAAiB;IAC5B,KAAK,CAAC,OAAO,CAAC,QAAkB,EAAE,GAAW;QAC3C,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;IACvB,CAAC;IACD,KAAK,CAAC,oBAAoB;QACxB,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;IACvB,CAAC;IACD,KAAK,CAAC,aAAa;QACjB,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;IACvB,CAAC;IACD,KAAK,CAAC,OAAO;QACX,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;IACvB,CAAC;IACD,KAAK,CAAC,OAAO;QACX,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;IACvB,CAAC;IACD,KAAK,CAAC,cAAc;QAClB,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;IACvB,CAAC;IACD,KAAK,CAAC,YAAY,CAChB,OAAe,EACf,GAAW,EACX,OAAsB;QAEtB,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;IACvB,CAAC;IACD,KAAK,CAAC,gBAAgB;QACpB,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;IACvB,CAAC;IACD,KAAK,CAAC,YAAY,CAAC,QAAkB;QACnC,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,KAAK,CAAC,OAAO;QACX,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;IACvB,CAAC;IACD,KAAK,CAAC,KAAK;QACT,mBAAmB;IACrB,CAAC;CACF"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Git-log mining: co-change, churn, and ownership signals.
|
|
3
|
+
*
|
|
4
|
+
* One `git log --no-merges --name-status -z --date=short` pass yields all three
|
|
5
|
+
* signals. Rename chains are reconstructed from R records so a file's history
|
|
6
|
+
* follows it across moves. Bulk commits (>K files) are excluded from co-change
|
|
7
|
+
* counting but still counted for churn. Min-support floor drops one-off pairs.
|
|
8
|
+
*
|
|
9
|
+
* All output ordering is by explicit sort keys — never Map iteration order.
|
|
10
|
+
*/
|
|
11
|
+
export interface CommitRecord {
|
|
12
|
+
sha: string;
|
|
13
|
+
date: string;
|
|
14
|
+
author_name: string;
|
|
15
|
+
author_email: string;
|
|
16
|
+
files: string[];
|
|
17
|
+
}
|
|
18
|
+
export interface TemporalStats {
|
|
19
|
+
head_sha: string;
|
|
20
|
+
shallow: boolean;
|
|
21
|
+
files: Record<string, {
|
|
22
|
+
change_count: number;
|
|
23
|
+
last_changed: string;
|
|
24
|
+
authors: {
|
|
25
|
+
name: string;
|
|
26
|
+
commits: number;
|
|
27
|
+
}[];
|
|
28
|
+
}>;
|
|
29
|
+
cochange: Record<string, {
|
|
30
|
+
path: string;
|
|
31
|
+
support: number;
|
|
32
|
+
confidence: number;
|
|
33
|
+
}[]>;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Parse output of:
|
|
37
|
+
* git log --no-merges --name-status -z --date=short
|
|
38
|
+
* --format='%x00%H%x1f%ad%x1f%aN%x1f%aE'
|
|
39
|
+
*
|
|
40
|
+
* The `-z` flag makes git NUL-terminate each path in the name-status block.
|
|
41
|
+
* We split on NUL to get tokens, then detect the commit header lines
|
|
42
|
+
* (which start with NUL %H %ad %aN %aE joined by FS=\x1f).
|
|
43
|
+
*
|
|
44
|
+
* Rename records arrive as e.g. `R100\toldpath\0newpath\0`.
|
|
45
|
+
* With -z, git emits: <status>\0<path1>\0 and for renames <status>\0<path1>\0<path2>\0.
|
|
46
|
+
*
|
|
47
|
+
* Actual git -z --name-status output format (tested):
|
|
48
|
+
* \0<sha>\x1f<date>\x1f<name>\x1f<email>\n\n<status>\0<path>\0...<status>\0<old>\0<new>\0
|
|
49
|
+
* The commit separator is "\n\n" before the header NUL. We split entire output
|
|
50
|
+
* on the pattern "\x00\x00" (double NUL that appears between commits in -z mode)
|
|
51
|
+
* combined with the leading-NUL header.
|
|
52
|
+
*
|
|
53
|
+
* Strategy: split on NUL → walk tokens; whenever we see a token matching
|
|
54
|
+
* /^\x00<sha>\x1f.../ we start a new commit header; otherwise collect
|
|
55
|
+
* name-status entries.
|
|
56
|
+
*/
|
|
57
|
+
export declare function parseGitLog(raw: string): CommitRecord[];
|
|
58
|
+
export declare function computeTemporal(commits: CommitRecord[], opts: {
|
|
59
|
+
headSha: string;
|
|
60
|
+
shallow: boolean;
|
|
61
|
+
maxFilesPerCommit?: number;
|
|
62
|
+
minSupport?: number;
|
|
63
|
+
topCoChanged?: number;
|
|
64
|
+
topAuthors?: number;
|
|
65
|
+
}): TemporalStats;
|