@codeledger/repo 0.6.1 → 0.6.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/dist/index.d.ts CHANGED
@@ -4,6 +4,8 @@ export { analyzeChurn } from './churn.js';
4
4
  export { buildTestMap } from './test-map.js';
5
5
  export { buildRepoIndex } from './indexer.js';
6
6
  export type { IndexerOptions } from './indexer.js';
7
+ export { buildTemporalCoCommitIndex } from './temporal.js';
8
+ export type { TemporalIndexOptions } from './temporal.js';
7
9
  export { detectLanguage, languageFamily, extensionFamily, resolutionExtensions, indexFileNames } from './lang.js';
8
10
  export type { LanguageFamily } from './lang.js';
9
11
  export { sha256File } from './hash.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,eAAe,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAClH,YAAY,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,0BAA0B,EAAE,MAAM,eAAe,CAAC;AAC3D,YAAY,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,eAAe,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAClH,YAAY,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC"}
package/dist/index.js CHANGED
@@ -3,6 +3,7 @@ export { buildDepGraph } from './dep-graph.js';
3
3
  export { analyzeChurn } from './churn.js';
4
4
  export { buildTestMap } from './test-map.js';
5
5
  export { buildRepoIndex } from './indexer.js';
6
+ export { buildTemporalCoCommitIndex } from './temporal.js';
6
7
  export { detectLanguage, languageFamily, extensionFamily, resolutionExtensions, indexFileNames } from './lang.js';
7
8
  export { sha256File } from './hash.js';
8
9
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,eAAe,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAElH,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,OAAO,EAAE,0BAA0B,EAAE,MAAM,eAAe,CAAC;AAE3D,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,eAAe,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAElH,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"indexer.d.ts","sourceRoot":"","sources":["../src/indexer.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAM/D,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,UAAU,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;wEACoE;IACpE,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;CACpC;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,cAAc,GAAG,SAAS,CA6D9D"}
1
+ {"version":3,"file":"indexer.d.ts","sourceRoot":"","sources":["../src/indexer.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAO/D,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,UAAU,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;wEACoE;IACpE,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;CACpC;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,cAAc,GAAG,SAAS,CAqE9D"}
package/dist/indexer.js CHANGED
@@ -4,6 +4,7 @@ import { scanFiles } from './scanner.js';
4
4
  import { buildDepGraph } from './dep-graph.js';
5
5
  import { analyzeChurn } from './churn.js';
6
6
  import { buildTestMap } from './test-map.js';
7
+ import { buildTemporalCoCommitIndex } from './temporal.js';
7
8
  export function buildRepoIndex(opts) {
8
9
  const { root, repoConfig, outputPath, churnDays = 90, log = console.log.bind(console) } = opts;
9
10
  // Content cache: scanner reads each file once, dep-graph and test-map
@@ -27,7 +28,13 @@ export function buildRepoIndex(opts) {
27
28
  const testMap = buildTestMap(root, files, contentCache);
28
29
  const testCount = files.filter((f) => f.is_test).length;
29
30
  log(` Mapped ${testMap.length} test↔source pairs (${testCount} test files)`);
30
- // Step 5: Detect languages
31
+ // Step 5: Build temporal co-commit index
32
+ log(' Building temporal co-commit index...');
33
+ const temporalResult = buildTemporalCoCommitIndex({ root, windowCommits: churnDays >= 180 ? 1000 : 500 });
34
+ const edgeCount = Object.values(temporalResult.adjacency)
35
+ .reduce((sum, edges) => sum + edges.length, 0);
36
+ log(` Built temporal index: ${Object.keys(temporalResult.adjacency).length} files, ${edgeCount} edges`);
37
+ // Step 6: Detect languages
31
38
  const langCounts = new Map();
32
39
  for (const f of files) {
33
40
  langCounts.set(f.language, (langCounts.get(f.language) ?? 0) + 1);
@@ -44,6 +51,7 @@ export function buildRepoIndex(opts) {
44
51
  dep_graph: depGraph,
45
52
  churn,
46
53
  test_map: testMap,
54
+ temporal_co_commit: temporalResult,
47
55
  };
48
56
  // Write to disk
49
57
  const outputDir = dirname(outputPath);
@@ -1 +1 @@
1
- {"version":3,"file":"indexer.js","sourceRoot":"","sources":["../src/indexer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"indexer.js","sourceRoot":"","sources":["../src/indexer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import type { TemporalIndexMeta, CoCommitEdge } from '@codeledger/types';
2
+ export interface TemporalIndexOptions {
3
+ root: string;
4
+ /** Max commits to scan. Default: 1000. */
5
+ windowCommits?: number;
6
+ /** Skip commits touching more files than this. Default: 200. */
7
+ maxFilesPerCommit?: number;
8
+ /** Drop edges with co-commit count below this. Default: 3. */
9
+ minCoCommitCount?: number;
10
+ /** Keep at most this many neighbors per file. Default: 64. */
11
+ maxNeighborsPerFile?: number;
12
+ /** Only track adjacency for files touched in >= this many commits. Default: 2. */
13
+ churnFloor?: number;
14
+ /** Path prefixes to always exclude. */
15
+ ignorePrefixes?: string[];
16
+ }
17
+ export declare function buildTemporalCoCommitIndex(opts: TemporalIndexOptions): {
18
+ meta: TemporalIndexMeta;
19
+ adjacency: Record<string, CoCommitEdge[]>;
20
+ };
21
+ //# sourceMappingURL=temporal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"temporal.d.ts","sourceRoot":"","sources":["../src/temporal.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEzE,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,0CAA0C;IAC1C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gEAAgE;IAChE,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,8DAA8D;IAC9D,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,8DAA8D;IAC9D,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,kFAAkF;IAClF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,uCAAuC;IACvC,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B;AA0ED,wBAAgB,0BAA0B,CACxC,IAAI,EAAE,oBAAoB,GACzB;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC,CAAA;CAAE,CA2MxE"}
@@ -0,0 +1,224 @@
1
+ import { execSync } from 'node:child_process';
2
+ const DEFAULT_IGNORE_PREFIXES = [
3
+ 'node_modules/', '.git/', 'dist/', 'build/', '.codeledger/',
4
+ ];
5
+ const DEFAULT_IGNORE_FILENAMES = [
6
+ 'pnpm-lock.yaml', 'package-lock.json', 'yarn.lock',
7
+ 'go.sum', 'Cargo.lock', 'poetry.lock', 'Gemfile.lock',
8
+ ];
9
+ /** Pair key for two file paths (order-independent). */
10
+ function pairKey(a, b) {
11
+ return a < b ? `${a}\0${b}` : `${b}\0${a}`;
12
+ }
13
+ function shouldIgnoreFile(filePath, prefixes) {
14
+ const basename = filePath.includes('/')
15
+ ? filePath.slice(filePath.lastIndexOf('/') + 1)
16
+ : filePath;
17
+ if (DEFAULT_IGNORE_FILENAMES.includes(basename))
18
+ return true;
19
+ for (const prefix of prefixes) {
20
+ if (filePath.startsWith(prefix))
21
+ return true;
22
+ }
23
+ return false;
24
+ }
25
+ function parseGitLog(raw, ignorePrefixes) {
26
+ const commits = [];
27
+ let current;
28
+ for (const line of raw.split('\n')) {
29
+ const trimmed = line.trim();
30
+ if (trimmed.startsWith('COMMIT ')) {
31
+ // Flush previous commit
32
+ if (current) {
33
+ commits.push(current);
34
+ }
35
+ const parts = trimmed.split(' ');
36
+ const sha = parts[1] ?? '';
37
+ const ts = Number(parts[2] ?? '0');
38
+ current = { sha, timestamp: ts, files: [] };
39
+ continue;
40
+ }
41
+ if (!trimmed || !current)
42
+ continue;
43
+ // Skip files matching ignore rules
44
+ if (shouldIgnoreFile(trimmed, ignorePrefixes))
45
+ continue;
46
+ current.files.push(trimmed);
47
+ }
48
+ // Flush last commit
49
+ if (current) {
50
+ commits.push(current);
51
+ }
52
+ return commits;
53
+ }
54
+ export function buildTemporalCoCommitIndex(opts) {
55
+ const { root, windowCommits = 1000, maxFilesPerCommit = 200, minCoCommitCount = 3, maxNeighborsPerFile = 64, churnFloor = 2, ignorePrefixes = [], } = opts;
56
+ const allPrefixes = [...DEFAULT_IGNORE_PREFIXES, ...ignorePrefixes];
57
+ // Validate windowCommits to prevent shell injection
58
+ const safeWindow = Math.floor(Math.abs(windowCommits));
59
+ if (!Number.isFinite(safeWindow) || safeWindow <= 0 || safeWindow > 100_000) {
60
+ throw new Error(`Invalid windowCommits value: ${windowCommits} (must be 1–100000)`);
61
+ }
62
+ const emptyResult = {
63
+ meta: {
64
+ git_head: '',
65
+ window_commits: safeWindow,
66
+ max_files_per_commit: maxFilesPerCommit,
67
+ min_co_commit_count: minCoCommitCount,
68
+ max_neighbors_per_file: maxNeighborsPerFile,
69
+ churn_floor: churnFloor,
70
+ built_at_unix: Math.floor(Date.now() / 1000),
71
+ },
72
+ adjacency: {},
73
+ };
74
+ // Step 1: Run git log
75
+ let gitLog;
76
+ try {
77
+ gitLog = execSync(`git log --name-only --no-merges -n ${String(safeWindow)} --pretty=format:"COMMIT %H %ct"`, { cwd: root, encoding: 'utf-8', maxBuffer: 50 * 1024 * 1024 });
78
+ }
79
+ catch {
80
+ // Not a git repo or git not available
81
+ return emptyResult;
82
+ }
83
+ // Step 2: Parse into commits
84
+ const commits = parseGitLog(gitLog, allPrefixes);
85
+ // Step 3: Build co-commit counts
86
+ // Per-file: churn count + last-touched timestamp
87
+ // Per-pair: co-commit count + last co-commit timestamp + accumulated commit sizes
88
+ const fileChurn = new Map();
89
+ const pairData = new Map();
90
+ for (const commit of commits) {
91
+ // Deduplicate files within the commit
92
+ const uniqueFiles = [...new Set(commit.files)];
93
+ // Skip oversized commits
94
+ if (uniqueFiles.length > maxFilesPerCommit)
95
+ continue;
96
+ const commitSize = uniqueFiles.length;
97
+ // Update per-file churn
98
+ for (const f of uniqueFiles) {
99
+ const existing = fileChurn.get(f);
100
+ if (!existing) {
101
+ fileChurn.set(f, { count: 1, lastTimestamp: commit.timestamp });
102
+ }
103
+ else {
104
+ existing.count++;
105
+ if (commit.timestamp > existing.lastTimestamp) {
106
+ existing.lastTimestamp = commit.timestamp;
107
+ }
108
+ }
109
+ }
110
+ // Update co-commit pairs
111
+ for (let i = 0; i < uniqueFiles.length; i++) {
112
+ for (let j = i + 1; j < uniqueFiles.length; j++) {
113
+ const a = uniqueFiles[i];
114
+ const b = uniqueFiles[j];
115
+ const key = pairKey(a, b);
116
+ const existing = pairData.get(key);
117
+ if (!existing) {
118
+ pairData.set(key, {
119
+ count: 1,
120
+ lastTimestamp: commit.timestamp,
121
+ totalCommitSize: commitSize,
122
+ fileA: a < b ? a : b,
123
+ fileB: a < b ? b : a,
124
+ });
125
+ }
126
+ else {
127
+ existing.count++;
128
+ if (commit.timestamp > existing.lastTimestamp) {
129
+ existing.lastTimestamp = commit.timestamp;
130
+ }
131
+ existing.totalCommitSize += commitSize;
132
+ }
133
+ }
134
+ }
135
+ }
136
+ // Step 4: Get git HEAD
137
+ let gitHead = '';
138
+ try {
139
+ gitHead = execSync('git rev-parse HEAD', {
140
+ cwd: root,
141
+ encoding: 'utf-8',
142
+ maxBuffer: 1024 * 1024,
143
+ }).trim();
144
+ }
145
+ catch {
146
+ // Ignore — HEAD will be empty string
147
+ }
148
+ // Step 5: Prune and build adjacency
149
+ // - Drop files below churnFloor
150
+ // - Drop edges below minCoCommitCount
151
+ // - Sort edges by (count desc, last desc, path asc), cap at maxNeighborsPerFile
152
+ const qualifiedFiles = new Set();
153
+ for (const [path, info] of fileChurn) {
154
+ if (info.count >= churnFloor) {
155
+ qualifiedFiles.add(path);
156
+ }
157
+ }
158
+ // Build raw adjacency lists (only for qualified files)
159
+ const rawAdjacency = new Map();
160
+ for (const pair of pairData.values()) {
161
+ // Both files must meet churn floor
162
+ if (!qualifiedFiles.has(pair.fileA) || !qualifiedFiles.has(pair.fileB))
163
+ continue;
164
+ // Edge must meet minimum co-commit count
165
+ if (pair.count < minCoCommitCount)
166
+ continue;
167
+ const avgCommitFiles = Math.round((pair.totalCommitSize / pair.count) * 100) / 100;
168
+ // Add edge in both directions
169
+ const edgeForA = {
170
+ other_path: pair.fileB,
171
+ co_commit_count: pair.count,
172
+ last_co_commit_unix: pair.lastTimestamp,
173
+ avg_commit_files: avgCommitFiles,
174
+ };
175
+ const edgeForB = {
176
+ other_path: pair.fileA,
177
+ co_commit_count: pair.count,
178
+ last_co_commit_unix: pair.lastTimestamp,
179
+ avg_commit_files: avgCommitFiles,
180
+ };
181
+ const listA = rawAdjacency.get(pair.fileA);
182
+ if (listA) {
183
+ listA.push(edgeForA);
184
+ }
185
+ else {
186
+ rawAdjacency.set(pair.fileA, [edgeForA]);
187
+ }
188
+ const listB = rawAdjacency.get(pair.fileB);
189
+ if (listB) {
190
+ listB.push(edgeForB);
191
+ }
192
+ else {
193
+ rawAdjacency.set(pair.fileB, [edgeForB]);
194
+ }
195
+ }
196
+ // Sort and cap each adjacency list
197
+ const adjacency = {};
198
+ for (const [filePath, edges] of rawAdjacency) {
199
+ edges.sort((a, b) => {
200
+ // count descending
201
+ if (b.co_commit_count !== a.co_commit_count) {
202
+ return b.co_commit_count - a.co_commit_count;
203
+ }
204
+ // last co-commit descending
205
+ if (b.last_co_commit_unix !== a.last_co_commit_unix) {
206
+ return b.last_co_commit_unix - a.last_co_commit_unix;
207
+ }
208
+ // path ascending
209
+ return a.other_path.localeCompare(b.other_path);
210
+ });
211
+ adjacency[filePath] = edges.slice(0, maxNeighborsPerFile);
212
+ }
213
+ const meta = {
214
+ git_head: gitHead,
215
+ window_commits: safeWindow,
216
+ max_files_per_commit: maxFilesPerCommit,
217
+ min_co_commit_count: minCoCommitCount,
218
+ max_neighbors_per_file: maxNeighborsPerFile,
219
+ churn_floor: churnFloor,
220
+ built_at_unix: Math.floor(Date.now() / 1000),
221
+ };
222
+ return { meta, adjacency };
223
+ }
224
+ //# sourceMappingURL=temporal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"temporal.js","sourceRoot":"","sources":["../src/temporal.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@codeledger/repo",
3
- "version": "0.6.1",
3
+ "version": "0.6.2",
4
4
  "type": "module",
5
5
  "description": "Repository scanning and indexing for CodeLedger",
6
6
  "license": "MIT",
@@ -24,7 +24,7 @@
24
24
  }
25
25
  },
26
26
  "dependencies": {
27
- "@codeledger/types": "0.6.1"
27
+ "@codeledger/types": "0.6.2"
28
28
  },
29
29
  "devDependencies": {
30
30
  "typescript": "^5.4.0"