@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.
Files changed (56) hide show
  1. package/README.md +135 -0
  2. package/dist/SKILL.md +31 -0
  3. package/dist/cli/doctor.d.ts +19 -0
  4. package/dist/cli/doctor.js +92 -0
  5. package/dist/cli/doctor.js.map +1 -0
  6. package/dist/embed/cache.d.ts +51 -0
  7. package/dist/embed/cache.js +163 -0
  8. package/dist/embed/cache.js.map +1 -0
  9. package/dist/embed/hybrid.d.ts +43 -0
  10. package/dist/embed/hybrid.js +106 -0
  11. package/dist/embed/hybrid.js.map +1 -0
  12. package/dist/embed/provider.d.ts +34 -0
  13. package/dist/embed/provider.js +32 -0
  14. package/dist/embed/provider.js.map +1 -0
  15. package/dist/embed/providers/http.d.ts +35 -0
  16. package/dist/embed/providers/http.js +93 -0
  17. package/dist/embed/providers/http.js.map +1 -0
  18. package/dist/embed/providers/voyage.d.ts +32 -0
  19. package/dist/embed/providers/voyage.js +93 -0
  20. package/dist/embed/providers/voyage.js.map +1 -0
  21. package/dist/index.js +61 -9
  22. package/dist/index.js.map +1 -1
  23. package/dist/profile/impact.d.ts +43 -0
  24. package/dist/profile/impact.js +112 -0
  25. package/dist/profile/impact.js.map +1 -0
  26. package/dist/search/bm25f.d.ts +31 -0
  27. package/dist/search/bm25f.js +151 -0
  28. package/dist/search/bm25f.js.map +1 -0
  29. package/dist/store/GraphStore.d.ts +14 -0
  30. package/dist/store/GraphStore.js.map +1 -1
  31. package/dist/store/JsonlGraphStore.d.ts +2 -1
  32. package/dist/store/JsonlGraphStore.js +25 -0
  33. package/dist/store/JsonlGraphStore.js.map +1 -1
  34. package/dist/store/Neo4jGraphStore.d.ts +2 -1
  35. package/dist/store/Neo4jGraphStore.js +18 -0
  36. package/dist/store/Neo4jGraphStore.js.map +1 -1
  37. package/dist/store/UnconfiguredStore.d.ts +2 -1
  38. package/dist/store/UnconfiguredStore.js +3 -0
  39. package/dist/store/UnconfiguredStore.js.map +1 -1
  40. package/dist/temporal/gitlog.d.ts +65 -0
  41. package/dist/temporal/gitlog.js +254 -0
  42. package/dist/temporal/gitlog.js.map +1 -0
  43. package/dist/temporal/temporal.d.ts +22 -0
  44. package/dist/temporal/temporal.js +185 -0
  45. package/dist/temporal/temporal.js.map +1 -0
  46. package/dist/tools/impact.d.ts +11 -0
  47. package/dist/tools/impact.js +63 -0
  48. package/dist/tools/impact.js.map +1 -0
  49. package/dist/tools/semanticFind.d.ts +37 -0
  50. package/dist/tools/semanticFind.js +155 -0
  51. package/dist/tools/semanticFind.js.map +1 -0
  52. package/dist/tools/temporalContext.d.ts +12 -0
  53. package/dist/tools/temporalContext.js +55 -0
  54. package/dist/tools/temporalContext.js.map +1 -0
  55. package/package.json +1 -1
  56. 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":"AAEA;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
+ {"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":"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"}
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
  }
@@ -26,6 +26,9 @@ export class UnconfiguredStore {
26
26
  async federatedRepoIds() {
27
27
  throw new Error(MSG);
28
28
  }
29
+ async searchCorpus(_repoIds) {
30
+ return [];
31
+ }
29
32
  async runRead() {
30
33
  throw new Error(MSG);
31
34
  }
@@ -1 +1 @@
1
- {"version":3,"file":"UnconfiguredStore.js","sourceRoot":"","sources":["../../src/store/UnconfiguredStore.ts"],"names":[],"mappings":"AAQA,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,OAAO;QACX,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;IACvB,CAAC;IACD,KAAK,CAAC,KAAK;QACT,mBAAmB;IACrB,CAAC;CACF"}
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;