@cleocode/nexus 2026.9.15 → 2026.9.17
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/src/pipeline/community-processor.d.ts.map +1 -1
- package/dist/src/pipeline/community-processor.js +21 -0
- package/dist/src/pipeline/community-processor.js.map +1 -1
- package/dist/src/pipeline/extractors/typescript-extractor.d.ts.map +1 -1
- package/dist/src/pipeline/extractors/typescript-extractor.js +7 -1
- package/dist/src/pipeline/extractors/typescript-extractor.js.map +1 -1
- package/dist/src/pipeline/filesystem-walker.d.ts +25 -1
- package/dist/src/pipeline/filesystem-walker.d.ts.map +1 -1
- package/dist/src/pipeline/filesystem-walker.js +16 -4
- package/dist/src/pipeline/filesystem-walker.js.map +1 -1
- package/dist/src/pipeline/index.d.ts +52 -7
- package/dist/src/pipeline/index.d.ts.map +1 -1
- package/dist/src/pipeline/index.js +266 -96
- package/dist/src/pipeline/index.js.map +1 -1
- package/dist/src/pipeline/parse-cache.d.ts +72 -0
- package/dist/src/pipeline/parse-cache.d.ts.map +1 -0
- package/dist/src/pipeline/parse-cache.js +158 -0
- package/dist/src/pipeline/parse-cache.js.map +1 -0
- package/dist/src/pipeline/parse-loop.d.ts +31 -21
- package/dist/src/pipeline/parse-loop.d.ts.map +1 -1
- package/dist/src/pipeline/parse-loop.js +186 -276
- package/dist/src/pipeline/parse-loop.js.map +1 -1
- package/dist/src/pipeline/process-processor.d.ts.map +1 -1
- package/dist/src/pipeline/process-processor.js +4 -0
- package/dist/src/pipeline/process-processor.js.map +1 -1
- package/dist/src/pipeline/processors/access-processor.d.ts.map +1 -1
- package/dist/src/pipeline/processors/access-processor.js +14 -2
- package/dist/src/pipeline/processors/access-processor.js.map +1 -1
- package/dist/src/pipeline/workers/parse-worker.d.ts +10 -15
- package/dist/src/pipeline/workers/parse-worker.d.ts.map +1 -1
- package/dist/src/pipeline/workers/parse-worker.js +12 -12
- package/dist/src/pipeline/workers/parse-worker.js.map +1 -1
- package/dist/src/pipeline/workers/worker-pool.d.ts.map +1 -1
- package/dist/src/pipeline/workers/worker-pool.js +106 -4
- package/dist/src/pipeline/workers/worker-pool.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +2 -2
|
@@ -50,6 +50,7 @@ export { buildHeritageMap, processHeritage } from './heritage-processor.js';
|
|
|
50
50
|
export { buildBarrelExportMap, buildImportResolutionContext, isFileInPackageDir, loadTsconfigPaths, loadWorkspacePackages, processExtractedImports, resolveBarrelBinding, resolveTypescriptImport, WILDCARD_EXPORT_KEY_PREFIX, } from './import-processor.js';
|
|
51
51
|
export { createKnowledgeGraph } from './knowledge-graph.js';
|
|
52
52
|
export { detectLanguageFromPath, isIndexableFile } from './language-detection.js';
|
|
53
|
+
export { computeExtractorFingerprint, decodeParseCacheEntry, encodeParseCacheEntry, } from './parse-cache.js';
|
|
53
54
|
export { runParseLoop } from './parse-loop.js';
|
|
54
55
|
export { detectProcesses } from './process-processor.js';
|
|
55
56
|
export { extractAccesses, resolveAccesses } from './processors/access-processor.js';
|
|
@@ -67,14 +68,25 @@ import { walkRepositoryPaths } from './filesystem-walker.js';
|
|
|
67
68
|
import { buildHeritageMap, processHeritage } from './heritage-processor.js';
|
|
68
69
|
import { buildImportResolutionContext, loadTsconfigPaths, loadWorkspacePackages, } from './import-processor.js';
|
|
69
70
|
import { createKnowledgeGraph } from './knowledge-graph.js';
|
|
71
|
+
import { computeExtractorFingerprint, decodeParseCacheEntry, encodeParseCacheEntry, } from './parse-cache.js';
|
|
70
72
|
import { runParseLoop } from './parse-loop.js';
|
|
71
73
|
import { detectProcesses } from './process-processor.js';
|
|
72
74
|
import { resolveAccesses } from './processors/access-processor.js';
|
|
73
75
|
import { createResolutionContext } from './resolution-context.js';
|
|
74
76
|
import { processStructure } from './structure-processor.js';
|
|
77
|
+
/** Default share of changed files above which an incremental run rebuilds fully. */
|
|
78
|
+
export const DEFAULT_MAX_INCREMENTAL_CHANGE_RATIO = 0.3;
|
|
75
79
|
// ---------------------------------------------------------------------------
|
|
76
80
|
// getIndexStats
|
|
77
81
|
// ---------------------------------------------------------------------------
|
|
82
|
+
/**
|
|
83
|
+
* Share of a repository that may fail to parse before a generation is refused.
|
|
84
|
+
*
|
|
85
|
+
* Below it the unparsed files are recorded and reported and the rest is
|
|
86
|
+
* published; above it the generation would misrepresent the codebase, so the
|
|
87
|
+
* previous graph is retained instead (T12313).
|
|
88
|
+
*/
|
|
89
|
+
export const UNPARSED_FILE_REFUSAL_RATIO = 0.1;
|
|
78
90
|
/**
|
|
79
91
|
* Return freshness statistics for the code intelligence index of a project.
|
|
80
92
|
*
|
|
@@ -86,24 +98,29 @@ import { processStructure } from './structure-processor.js';
|
|
|
86
98
|
* @param repoPath - Absolute path to the repository root (used for mtime checks)
|
|
87
99
|
* @param db - Drizzle database instance
|
|
88
100
|
* @param tables - Drizzle table references
|
|
101
|
+
* @param options - `staleScan: false` skips re-hashing every indexed file and
|
|
102
|
+
* reports `staleFileCount: -1`; for callers with a cheaper freshness answer (T12348).
|
|
103
|
+
* @returns Counts, last indexed time and stale-file count.
|
|
89
104
|
*/
|
|
90
|
-
export async function getIndexStats(_projectId, repoPath, db, tables) {
|
|
105
|
+
export async function getIndexStats(_projectId, repoPath, db, tables, options = {}) {
|
|
91
106
|
// Column accessors — DrizzleTableRef declares string-indexed Column properties
|
|
92
107
|
// so eq() / db.select() can take them directly without per-call casts (T9767).
|
|
93
108
|
const nodesTable = tables.nexusNodes;
|
|
94
109
|
const relationsTable = tables.nexusRelations;
|
|
95
110
|
// ADR-090 · T11648: the graph tables are PROJECT-scoped (one project per
|
|
96
111
|
// `cleo.db`), so these queries no longer filter by `project_id`.
|
|
97
|
-
|
|
112
|
+
//
|
|
113
|
+
// T12348: aggregates in SQL. Loading all 89k node rows and 185k relation
|
|
114
|
+
// ids into JS to count them dominated `cleo nexus status`. `NULLIF` keeps
|
|
115
|
+
// the previous rule that an empty `indexedAt` never wins.
|
|
116
|
+
const [totals] = (await db
|
|
98
117
|
.select({
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
indexedAt: nodesTable['indexedAt'],
|
|
102
|
-
contentHash: sql `json_extract(${nodesTable['metaJson']}, '$.contentHash')`,
|
|
118
|
+
nodeCount: sql `count(*)`,
|
|
119
|
+
lastIndexedAt: sql `max(nullif(${nodesTable['indexedAt']}, ''))`,
|
|
103
120
|
})
|
|
104
|
-
.from(tables.nexusNodes);
|
|
105
|
-
const
|
|
106
|
-
if (
|
|
121
|
+
.from(tables.nexusNodes));
|
|
122
|
+
const nodeCount = Number(totals?.nodeCount ?? 0);
|
|
123
|
+
if (nodeCount === 0) {
|
|
107
124
|
return {
|
|
108
125
|
indexed: false,
|
|
109
126
|
nodeCount: 0,
|
|
@@ -113,46 +130,50 @@ export async function getIndexStats(_projectId, repoPath, db, tables) {
|
|
|
113
130
|
staleFileCount: -1,
|
|
114
131
|
};
|
|
115
132
|
}
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
const relationCount = relRows.length;
|
|
129
|
-
// Check stale files — compare filesystem mtime against indexedAt
|
|
130
|
-
let staleFileCount = 0;
|
|
133
|
+
const [relations] = (await db
|
|
134
|
+
.select({ relationCount: sql `count(*)` })
|
|
135
|
+
.from(relationsTable));
|
|
136
|
+
const relationCount = Number(relations?.relationCount ?? 0);
|
|
137
|
+
// Distinct file nodes (filePath !== null), with the hash each was indexed at.
|
|
138
|
+
const fileRows = (await db
|
|
139
|
+
.select({
|
|
140
|
+
filePath: nodesTable['filePath'],
|
|
141
|
+
contentHash: sql `json_extract(${nodesTable['metaJson']}, '$.contentHash')`,
|
|
142
|
+
})
|
|
143
|
+
.from(tables.nexusNodes)
|
|
144
|
+
.where(sql `${nodesTable['kind']} = 'file' AND ${nodesTable['filePath']} IS NOT NULL`));
|
|
131
145
|
const filePathMap = new Map();
|
|
132
146
|
for (const row of fileRows) {
|
|
133
147
|
if (row.filePath)
|
|
134
148
|
filePathMap.set(row.filePath, row.contentHash ?? '');
|
|
135
149
|
}
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
150
|
+
const fileCount = filePathMap.size;
|
|
151
|
+
// Check stale files — re-hash every indexed file. A caller that already has
|
|
152
|
+
// a cheaper freshness answer (the file manifest, T12316) skips this and
|
|
153
|
+
// receives -1, the existing "not assessed" value.
|
|
154
|
+
let staleFileCount = options.staleScan === false ? -1 : 0;
|
|
155
|
+
if (options.staleScan !== false) {
|
|
156
|
+
for (const [relPath, contentHash] of filePathMap) {
|
|
157
|
+
const absPath = relPath.startsWith('/') ? relPath : `${repoPath}/${relPath}`;
|
|
158
|
+
try {
|
|
159
|
+
const currentHash = createHash('sha256')
|
|
160
|
+
.update(await fs.readFile(absPath))
|
|
161
|
+
.digest('hex');
|
|
162
|
+
if (!contentHash || currentHash !== contentHash)
|
|
163
|
+
staleFileCount++;
|
|
164
|
+
}
|
|
165
|
+
catch {
|
|
166
|
+
// File deleted — counts as stale
|
|
143
167
|
staleFileCount++;
|
|
144
|
-
|
|
145
|
-
catch {
|
|
146
|
-
// File deleted — counts as stale
|
|
147
|
-
staleFileCount++;
|
|
168
|
+
}
|
|
148
169
|
}
|
|
149
170
|
}
|
|
150
171
|
return {
|
|
151
172
|
indexed: true,
|
|
152
|
-
nodeCount
|
|
173
|
+
nodeCount,
|
|
153
174
|
relationCount,
|
|
154
175
|
fileCount,
|
|
155
|
-
lastIndexedAt,
|
|
176
|
+
lastIndexedAt: totals?.lastIndexedAt ?? null,
|
|
156
177
|
staleFileCount,
|
|
157
178
|
};
|
|
158
179
|
}
|
|
@@ -253,6 +274,13 @@ function retainAnalyzedReferences(graph, calls, accesses) {
|
|
|
253
274
|
export async function runPipeline(repoPath, projectId, db, tables, onProgress, options) {
|
|
254
275
|
options?.parserLimits?.signal?.throwIfAborted();
|
|
255
276
|
const startTime = Date.now();
|
|
277
|
+
const phaseMs = {};
|
|
278
|
+
let phaseStart = startTime;
|
|
279
|
+
const endPhase = (name) => {
|
|
280
|
+
const now = Date.now();
|
|
281
|
+
phaseMs[name] = (phaseMs[name] ?? 0) + (now - phaseStart);
|
|
282
|
+
phaseStart = now;
|
|
283
|
+
};
|
|
256
284
|
const publicationGeneration = randomUUID();
|
|
257
285
|
const sourceRoots = options?.sourceRoots ? structuredClone(options.sourceRoots) : undefined;
|
|
258
286
|
const isIncremental = options?.incremental === true;
|
|
@@ -263,67 +291,135 @@ export async function runPipeline(repoPath, projectId, db, tables, onProgress, o
|
|
|
263
291
|
const files = await walkRepositoryPaths(repoPath, onProgress, (report) => reports.set(report.path, report), options?.includedRepositories);
|
|
264
292
|
const scannedFiles = new Map(files.map((file) => [file.path, file]));
|
|
265
293
|
process.stderr.write(`[nexus] Found ${files.length} files\n`);
|
|
266
|
-
|
|
267
|
-
|
|
294
|
+
endPhase('scan');
|
|
295
|
+
// Mode decision (T12315). Extraction is reused only where it is provably what
|
|
296
|
+
// re-parsing would produce; everything downstream of extraction always reruns.
|
|
297
|
+
const fingerprint = options?.publishGraph ? computeExtractorFingerprint() : null;
|
|
298
|
+
let mode = 'full';
|
|
299
|
+
let reason = options?.fullReason ?? 'full rebuild requested';
|
|
300
|
+
let changedFiles = 0;
|
|
301
|
+
let addedFiles = 0;
|
|
302
|
+
let deletedFiles = 0;
|
|
303
|
+
const reusedExtractions = new Map();
|
|
304
|
+
let cachedPaths = [];
|
|
268
305
|
if (isIncremental) {
|
|
269
|
-
process.stderr.write('[nexus] Incremental mode: computing changed files...\n');
|
|
270
306
|
const readableDb = db;
|
|
271
|
-
const
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
307
|
+
const indexedHashes = await getIndexedFileHashes(projectId, readableDb, tables);
|
|
308
|
+
for (const file of files) {
|
|
309
|
+
const previous = indexedHashes.get(file.path);
|
|
310
|
+
if (previous === undefined)
|
|
311
|
+
addedFiles++;
|
|
312
|
+
else if (!file.contentHash || previous !== file.contentHash)
|
|
313
|
+
changedFiles++;
|
|
314
|
+
}
|
|
315
|
+
const current = new Set(files.map((file) => file.path));
|
|
316
|
+
for (const indexedPath of indexedHashes.keys()) {
|
|
317
|
+
if (!current.has(indexedPath))
|
|
318
|
+
deletedFiles++;
|
|
319
|
+
}
|
|
320
|
+
const differing = changedFiles + addedFiles + deletedFiles;
|
|
321
|
+
const denominator = Math.max(1, indexedHashes.size, files.length);
|
|
322
|
+
const maxRatio = options?.maxIncrementalChangeRatio ?? DEFAULT_MAX_INCREMENTAL_CHANGE_RATIO;
|
|
323
|
+
const currentBuild = fingerprint !== null && options?.publishedFingerprint === fingerprint;
|
|
324
|
+
if (indexedHashes.size === 0) {
|
|
325
|
+
reason = 'no previous index to reuse';
|
|
326
|
+
}
|
|
327
|
+
else if (differing === 0 && !currentBuild) {
|
|
328
|
+
reason = fingerprint
|
|
329
|
+
? 'no source changed, but the published generation was produced by a different extractor build'
|
|
330
|
+
: 'no source changed, but the extractor build could not be fingerprinted to prove the published generation current';
|
|
331
|
+
}
|
|
332
|
+
else if (differing === 0) {
|
|
333
|
+
process.stderr.write('[nexus] Incremental: no source fingerprint changes; returning existing graph statistics.\n');
|
|
334
|
+
// Return stats from existing index (no writes needed)
|
|
335
|
+
const existingNodeCount = (await readableDb.select().from(tables.nexusNodes)).length;
|
|
336
|
+
const existingRelationCount = (await readableDb.select().from(tables.nexusRelations)).length;
|
|
337
|
+
endPhase('compare');
|
|
338
|
+
return {
|
|
339
|
+
nodeCount: existingNodeCount,
|
|
340
|
+
relationCount: existingRelationCount,
|
|
341
|
+
fileCount: files.length,
|
|
342
|
+
durationMs: Date.now() - startTime,
|
|
343
|
+
extendsCount: 0,
|
|
344
|
+
implementsCount: 0,
|
|
345
|
+
callsTier1Count: 0,
|
|
346
|
+
callsTier2aCount: 0,
|
|
347
|
+
callsTier3Count: 0,
|
|
348
|
+
hasMethodCount: 0,
|
|
349
|
+
hasPropertyCount: 0,
|
|
350
|
+
accessesTier1Count: 0,
|
|
351
|
+
accessesTier3Count: 0,
|
|
352
|
+
communityCount: 0,
|
|
353
|
+
communityModularity: 0,
|
|
354
|
+
processCount: 0,
|
|
355
|
+
crossCommunityProcessCount: 0,
|
|
356
|
+
summary: {
|
|
357
|
+
mode: 'unchanged',
|
|
358
|
+
reason: `all ${files.length} files match the published generation`,
|
|
359
|
+
changedFiles: 0,
|
|
360
|
+
addedFiles: 0,
|
|
361
|
+
deletedFiles: 0,
|
|
362
|
+
parsedFiles: 0,
|
|
363
|
+
reusedFiles: 0,
|
|
364
|
+
resolvedFiles: 0,
|
|
365
|
+
phaseMs,
|
|
366
|
+
},
|
|
367
|
+
};
|
|
368
|
+
}
|
|
369
|
+
else if (differing / denominator > maxRatio) {
|
|
370
|
+
reason =
|
|
371
|
+
`${differing} of ${denominator} files differ from the published generation ` +
|
|
372
|
+
`(${Math.round((differing / denominator) * 100)}%), above the ` +
|
|
373
|
+
`${Math.round(maxRatio * 100)}% incremental threshold`;
|
|
374
|
+
}
|
|
375
|
+
else if (!fingerprint) {
|
|
376
|
+
reason = options?.publishGraph
|
|
377
|
+
? 'the extractor build could not be fingerprinted, so no cached extraction is provably current'
|
|
378
|
+
: 'no atomic publisher was supplied, so no parse cache is maintained';
|
|
379
|
+
}
|
|
380
|
+
else if (!options?.loadParseCache) {
|
|
381
|
+
reason = 'the caller supplied no parse cache';
|
|
382
|
+
}
|
|
383
|
+
else {
|
|
384
|
+
endPhase('compare');
|
|
385
|
+
const entries = await options.loadParseCache();
|
|
386
|
+
endPhase('cacheRead');
|
|
387
|
+
cachedPaths = entries.map((entry) => entry.path);
|
|
388
|
+
const matching = entries.filter((entry) => entry.fingerprint === fingerprint);
|
|
389
|
+
if (entries.length === 0) {
|
|
390
|
+
reason = 'no parse cache was committed with the previous generation';
|
|
280
391
|
}
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
if (!currentFileSet.has(indexedPath)) {
|
|
285
|
-
changedPaths.add(indexedPath);
|
|
286
|
-
}
|
|
392
|
+
else if (matching.length === 0) {
|
|
393
|
+
reason =
|
|
394
|
+
'the extractor build changed since the cached parse, so no cached extraction is current';
|
|
287
395
|
}
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
hasPropertyCount: 0,
|
|
307
|
-
accessesTier1Count: 0,
|
|
308
|
-
accessesTier3Count: 0,
|
|
309
|
-
communityCount: 0,
|
|
310
|
-
communityModularity: 0,
|
|
311
|
-
processCount: 0,
|
|
312
|
-
crossCommunityProcessCount: 0,
|
|
313
|
-
};
|
|
396
|
+
else {
|
|
397
|
+
for (const entry of matching) {
|
|
398
|
+
const scanned = scannedFiles.get(entry.path);
|
|
399
|
+
if (!scanned?.contentHash || scanned.contentHash !== entry.contentHash)
|
|
400
|
+
continue;
|
|
401
|
+
try {
|
|
402
|
+
reusedExtractions.set(entry.path, decodeParseCacheEntry(entry, publicationGeneration));
|
|
403
|
+
}
|
|
404
|
+
catch (error) {
|
|
405
|
+
// An undecodable entry is re-parsed, never trusted.
|
|
406
|
+
process.stderr.write(`[nexus] Incremental: cached extraction for ${entry.path} is unreadable (${error instanceof Error ? error.message : String(error)}); re-parsing it.\n`);
|
|
407
|
+
}
|
|
408
|
+
}
|
|
409
|
+
endPhase('cacheDecode');
|
|
410
|
+
mode = 'incremental';
|
|
411
|
+
reason =
|
|
412
|
+
`${changedFiles} changed, ${addedFiles} added, ${deletedFiles} deleted of ` +
|
|
413
|
+
`${indexedHashes.size} previously indexed files`;
|
|
314
414
|
}
|
|
315
|
-
// Cross-file resolution needs the complete symbol table. Rebuild a staged
|
|
316
|
-
// generation when anything changed; never delete from the usable index here.
|
|
317
|
-
process.stderr.write('[nexus] Incremental: rebuilding changed generation in staging\n');
|
|
318
|
-
}
|
|
319
|
-
else {
|
|
320
|
-
process.stderr.write('[nexus] Incremental: no existing index — running full parse\n');
|
|
321
415
|
}
|
|
416
|
+
process.stderr.write(`[nexus] ${mode === 'incremental' ? 'Incremental' : 'Full rebuild'}: ${reason}\n`);
|
|
417
|
+
endPhase('compare');
|
|
322
418
|
}
|
|
323
419
|
// Phase 2: Build File + Folder nodes with CONTAINS edges
|
|
324
420
|
// Include all files so the replacement graph has complete structure.
|
|
325
421
|
process.stderr.write('[nexus] Phase 2: Building file structure...\n');
|
|
326
|
-
processStructure(
|
|
422
|
+
processStructure(files, graph);
|
|
327
423
|
// Phase 3a: Build import resolution context (suffix index + tsconfig aliases)
|
|
328
424
|
// Built once here and reused across all files in the repository so the
|
|
329
425
|
// suffix index (~O(files × path_depth)) is not rebuilt per file.
|
|
@@ -336,7 +432,6 @@ export async function runPipeline(repoPath, projectId, db, tables, onProgress, o
|
|
|
336
432
|
const resolutionCtx = createResolutionContext();
|
|
337
433
|
const symbolTable = resolutionCtx.symbols;
|
|
338
434
|
const namedImportMap = resolutionCtx.namedImportMap;
|
|
339
|
-
// Use all files for import context so cross-file resolution works in incremental mode.
|
|
340
435
|
const importCtx = buildImportResolutionContext(files.map((f) => f.path));
|
|
341
436
|
const tsconfigPaths = await loadTsconfigPaths(repoPath);
|
|
342
437
|
if (tsconfigPaths) {
|
|
@@ -347,18 +442,26 @@ export async function runPipeline(repoPath, projectId, db, tables, onProgress, o
|
|
|
347
442
|
if (workspacePackageMap.size > 0) {
|
|
348
443
|
process.stderr.write(`[nexus] Loaded workspace packages: ${workspacePackageMap.size} entries\n`);
|
|
349
444
|
}
|
|
350
|
-
|
|
351
|
-
//
|
|
352
|
-
//
|
|
353
|
-
// cross-file call edges across the changed/unchanged boundary are preserved.
|
|
445
|
+
endPhase('structure');
|
|
446
|
+
// Phase 3: Parse loop — extract symbols, imports, heritage, calls, then
|
|
447
|
+
// resolve imports and barrels over the MERGED extraction of every file.
|
|
354
448
|
process.stderr.write('[nexus] Phase 3: Parsing files...\n');
|
|
355
|
-
const
|
|
449
|
+
const cacheUpserts = [];
|
|
450
|
+
const { allHeritage, allCalls, allAccesses, barrelMap, parsedFileCount, reusedFileCount } = await runParseLoop(files, graph, symbolTable, importCtx, repoPath, {
|
|
356
451
|
tsconfigPaths,
|
|
357
452
|
namedImportMap,
|
|
358
453
|
publicationGeneration,
|
|
359
454
|
onProgress,
|
|
360
455
|
parserLimits: options?.parserLimits,
|
|
361
456
|
parserExecution: options?.parserExecution,
|
|
457
|
+
reusedExtractions,
|
|
458
|
+
onFileExtracted: fingerprint
|
|
459
|
+
? (file) => {
|
|
460
|
+
const contentHash = scannedFiles.get(file.path)?.contentHash;
|
|
461
|
+
if (contentHash)
|
|
462
|
+
cacheUpserts.push(encodeParseCacheEntry(file, contentHash, fingerprint, publicationGeneration));
|
|
463
|
+
}
|
|
464
|
+
: undefined,
|
|
362
465
|
onFileReport: (report) => {
|
|
363
466
|
const file = scannedFiles.get(report.path);
|
|
364
467
|
reports.set(report.path, {
|
|
@@ -369,6 +472,10 @@ export async function runPipeline(repoPath, projectId, db, tables, onProgress, o
|
|
|
369
472
|
});
|
|
370
473
|
},
|
|
371
474
|
});
|
|
475
|
+
if (mode === 'incremental') {
|
|
476
|
+
process.stderr.write(`[nexus] Incremental: parsed ${parsedFileCount} file(s), reused ${reusedFileCount} cached extraction(s); resolving all ${parsedFileCount + reusedFileCount} against the merged symbol table\n`);
|
|
477
|
+
}
|
|
478
|
+
endPhase('parse');
|
|
372
479
|
// Phase 3c: Heritage resolution — emit EXTENDS + IMPLEMENTS edges
|
|
373
480
|
// Uses resolutionCtx (fully populated after parse loop) for parent type lookup.
|
|
374
481
|
process.stderr.write('[nexus] Phase 3c: Resolving heritage...\n');
|
|
@@ -397,21 +504,47 @@ export async function runPipeline(repoPath, projectId, db, tables, onProgress, o
|
|
|
397
504
|
if (referenceReports.length > 0) {
|
|
398
505
|
process.stderr.write(`[nexus] Reference limitations: ${referenceReports.length} unresolved or unmodeled static sites retained with available evidence.\n`);
|
|
399
506
|
}
|
|
507
|
+
endPhase('resolve');
|
|
400
508
|
// Phase 5: Community detection (Louvain)
|
|
401
509
|
process.stderr.write('[nexus] Phase 5: Detecting communities...\n');
|
|
402
510
|
const communityResult = await detectCommunities(graph);
|
|
403
511
|
process.stderr.write(`[nexus] Communities: ${communityResult.stats.totalCommunities} detected, modularity=${communityResult.stats.modularity.toFixed(3)}, nodes=${communityResult.stats.nodesProcessed}\n`);
|
|
512
|
+
endPhase('communities');
|
|
404
513
|
// Phase 6: Process (execution flow) detection
|
|
405
514
|
process.stderr.write('[nexus] Phase 6: Detecting execution flows...\n');
|
|
406
515
|
const processResult = await detectProcesses(graph, communityResult.memberships);
|
|
407
516
|
process.stderr.write(`[nexus] Processes: ${processResult.stats.totalProcesses} flows, cross-community=${processResult.stats.crossCommunityCount}, avg-steps=${processResult.stats.avgStepCount}\n`);
|
|
517
|
+
endPhase('flows');
|
|
408
518
|
// Flush all nodes and relations to Drizzle
|
|
409
519
|
process.stderr.write('[nexus] Flushing to database...\n');
|
|
410
520
|
options?.parserLimits?.signal?.throwIfAborted();
|
|
411
521
|
if (options?.publishGraph) {
|
|
522
|
+
// T12313: refusing the whole generation over individual unparseable files
|
|
523
|
+
// meant a repository containing ANY of them could never be indexed at all.
|
|
524
|
+
// Measured on a 3 499-file project: two files the parser rejected — both
|
|
525
|
+
// of which `tsc` accepts as syntactically valid — discarded every other
|
|
526
|
+
// file's symbols and left the caller with no index and no way forward.
|
|
527
|
+
//
|
|
528
|
+
// An index missing two files is far more useful than no index, PROVIDED
|
|
529
|
+
// the gap is stated rather than implied. The generation is published with
|
|
530
|
+
// the unparsed files recorded and reported; silence about a gap is the
|
|
531
|
+
// failure this project keeps fixing, and a loud refusal is its mirror
|
|
532
|
+
// image rather than its remedy.
|
|
412
533
|
const failed = [...reports.values()].filter((report) => report.status === 'failed');
|
|
413
534
|
if (failed.length > 0) {
|
|
414
|
-
|
|
535
|
+
const ratio = failed.length / Math.max(1, reports.size);
|
|
536
|
+
// A systemic failure differs in kind from a few awkward files: if most of
|
|
537
|
+
// the repository will not parse, the generation would misrepresent it.
|
|
538
|
+
if (ratio > UNPARSED_FILE_REFUSAL_RATIO) {
|
|
539
|
+
throw new Error(`Index generation failed for ${failed.length} of ${reports.size} file(s) — more than ` +
|
|
540
|
+
`${Math.round(UNPARSED_FILE_REFUSAL_RATIO * 100)}% of the repository, so the ` +
|
|
541
|
+
`generation would misrepresent it and the previous graph is retained: ${failed
|
|
542
|
+
.map((report) => `${report.path}: ${report.reason}`)
|
|
543
|
+
.join('; ')}`);
|
|
544
|
+
}
|
|
545
|
+
process.stderr.write(`[nexus] ${failed.length} of ${reports.size} file(s) could not be parsed and are ABSENT ` +
|
|
546
|
+
`from this index; every other file was indexed. Symbols defined in them will not be ` +
|
|
547
|
+
`found:\n${failed.map((report) => ` ${report.path}: ${report.reason}`).join('\n')}\n`);
|
|
415
548
|
}
|
|
416
549
|
// Refuse a generation built from files edited, removed, or renamed while
|
|
417
550
|
// parsing. Its timestamp must never make mixed source revisions look fresh.
|
|
@@ -434,6 +567,7 @@ export async function runPipeline(repoPath, projectId, db, tables, onProgress, o
|
|
|
434
567
|
if (changedPaths.length > 0) {
|
|
435
568
|
throw new Error(`Source files changed during indexing; previous graph retained: ${changedPaths.slice(0, 20).join(', ')}${changedPaths.length > 20 ? ` (and ${changedPaths.length - 20} more)` : ''}`);
|
|
436
569
|
}
|
|
570
|
+
endPhase('verify');
|
|
437
571
|
const publication = graph.preparePublication();
|
|
438
572
|
publication.generation = publicationGeneration;
|
|
439
573
|
publication.assessment = {
|
|
@@ -446,14 +580,16 @@ export async function runPipeline(repoPath, projectId, db, tables, onProgress, o
|
|
|
446
580
|
assessedAt: new Date(startTime).toISOString(),
|
|
447
581
|
files: [...reports.values()],
|
|
448
582
|
};
|
|
583
|
+
publication.parseCache = buildParseCacheUpdate(fingerprint, mode, cacheUpserts, reusedExtractions, cachedPaths);
|
|
449
584
|
options.parserLimits?.signal?.throwIfAborted();
|
|
450
585
|
await options.publishGraph(publication);
|
|
451
586
|
}
|
|
452
587
|
else {
|
|
453
588
|
await graph.flush(projectId, db, tables);
|
|
454
589
|
}
|
|
590
|
+
endPhase('publish');
|
|
455
591
|
const durationMs = Date.now() - startTime;
|
|
456
|
-
process.stderr.write(`[nexus] Pipeline complete: ${graph.nodes.size} nodes, ${graph.relations.length} relations in ${durationMs}ms\n`);
|
|
592
|
+
process.stderr.write(`[nexus] Pipeline complete: ${graph.nodes.size} nodes, ${graph.relations.length} relations in ${durationMs}ms (${mode})\n`);
|
|
457
593
|
return {
|
|
458
594
|
nodeCount: graph.nodes.size,
|
|
459
595
|
relationCount: graph.relations.length,
|
|
@@ -474,6 +610,40 @@ export async function runPipeline(repoPath, projectId, db, tables, onProgress, o
|
|
|
474
610
|
communityModularity: communityResult.stats.modularity,
|
|
475
611
|
processCount: processResult.stats.totalProcesses,
|
|
476
612
|
crossCommunityProcessCount: processResult.stats.crossCommunityCount,
|
|
613
|
+
summary: {
|
|
614
|
+
mode,
|
|
615
|
+
reason,
|
|
616
|
+
changedFiles,
|
|
617
|
+
addedFiles,
|
|
618
|
+
deletedFiles,
|
|
619
|
+
parsedFiles: parsedFileCount,
|
|
620
|
+
reusedFiles: reusedFileCount,
|
|
621
|
+
resolvedFiles: parsedFileCount + reusedFileCount,
|
|
622
|
+
phaseMs,
|
|
623
|
+
},
|
|
624
|
+
};
|
|
625
|
+
}
|
|
626
|
+
/**
|
|
627
|
+
* Derive the parse-cache mutation to commit with a generation.
|
|
628
|
+
*
|
|
629
|
+
* A full rebuild replaces the cache wholesale. An incremental run upserts what
|
|
630
|
+
* it parsed and deletes every previously cached path it neither reused nor
|
|
631
|
+
* re-parsed successfully (deleted files, files that now fail, entries from an
|
|
632
|
+
* older extractor build), so the committed cache describes exactly this
|
|
633
|
+
* generation's successfully extracted files.
|
|
634
|
+
*/
|
|
635
|
+
function buildParseCacheUpdate(fingerprint, mode, upserts, reused, cachedPaths) {
|
|
636
|
+
// Without a fingerprint nothing can be proven current; clear rather than keep.
|
|
637
|
+
if (!fingerprint)
|
|
638
|
+
return { fingerprint: '', reset: true, upserts: [], deletePaths: [] };
|
|
639
|
+
if (mode === 'full')
|
|
640
|
+
return { fingerprint, reset: true, upserts, deletePaths: [] };
|
|
641
|
+
const written = new Set(upserts.map((entry) => entry.path));
|
|
642
|
+
return {
|
|
643
|
+
fingerprint,
|
|
644
|
+
reset: false,
|
|
645
|
+
upserts,
|
|
646
|
+
deletePaths: cachedPaths.filter((path) => !reused.has(path) && !written.has(path)),
|
|
477
647
|
};
|
|
478
648
|
}
|
|
479
649
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/pipeline/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/pipeline/index.ts"],"names":[],"mappings":"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"}
|