@cleocode/nexus 2026.9.16 → 2026.9.18
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 +38 -1
- package/dist/src/pipeline/filesystem-walker.d.ts.map +1 -1
- package/dist/src/pipeline/filesystem-walker.js +194 -46
- package/dist/src/pipeline/filesystem-walker.js.map +1 -1
- package/dist/src/pipeline/index.d.ts +52 -15
- package/dist/src/pipeline/index.d.ts.map +1 -1
- package/dist/src/pipeline/index.js +242 -103
- 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 -285
- 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/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,32 +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
|
-
|
|
91
|
-
* Share of a repository that may fail to parse before a generation is refused.
|
|
92
|
-
*
|
|
93
|
-
* Below it the unparsed files are recorded and reported and the rest is
|
|
94
|
-
* published; above it the generation would misrepresent the codebase, so the
|
|
95
|
-
* previous graph is retained instead (T12313).
|
|
96
|
-
*/
|
|
97
|
-
export const UNPARSED_FILE_REFUSAL_RATIO = 0.1;
|
|
98
|
-
export async function getIndexStats(_projectId, repoPath, db, tables) {
|
|
105
|
+
export async function getIndexStats(_projectId, repoPath, db, tables, options = {}) {
|
|
99
106
|
// Column accessors — DrizzleTableRef declares string-indexed Column properties
|
|
100
107
|
// so eq() / db.select() can take them directly without per-call casts (T9767).
|
|
101
108
|
const nodesTable = tables.nexusNodes;
|
|
102
109
|
const relationsTable = tables.nexusRelations;
|
|
103
110
|
// ADR-090 · T11648: the graph tables are PROJECT-scoped (one project per
|
|
104
111
|
// `cleo.db`), so these queries no longer filter by `project_id`.
|
|
105
|
-
|
|
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
|
|
106
117
|
.select({
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
indexedAt: nodesTable['indexedAt'],
|
|
110
|
-
contentHash: sql `json_extract(${nodesTable['metaJson']}, '$.contentHash')`,
|
|
118
|
+
nodeCount: sql `count(*)`,
|
|
119
|
+
lastIndexedAt: sql `max(nullif(${nodesTable['indexedAt']}, ''))`,
|
|
111
120
|
})
|
|
112
|
-
.from(tables.nexusNodes);
|
|
113
|
-
const
|
|
114
|
-
if (
|
|
121
|
+
.from(tables.nexusNodes));
|
|
122
|
+
const nodeCount = Number(totals?.nodeCount ?? 0);
|
|
123
|
+
if (nodeCount === 0) {
|
|
115
124
|
return {
|
|
116
125
|
indexed: false,
|
|
117
126
|
nodeCount: 0,
|
|
@@ -121,46 +130,50 @@ export async function getIndexStats(_projectId, repoPath, db, tables) {
|
|
|
121
130
|
staleFileCount: -1,
|
|
122
131
|
};
|
|
123
132
|
}
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
const relationCount = relRows.length;
|
|
137
|
-
// Check stale files — compare filesystem mtime against indexedAt
|
|
138
|
-
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`));
|
|
139
145
|
const filePathMap = new Map();
|
|
140
146
|
for (const row of fileRows) {
|
|
141
147
|
if (row.filePath)
|
|
142
148
|
filePathMap.set(row.filePath, row.contentHash ?? '');
|
|
143
149
|
}
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
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
|
|
151
167
|
staleFileCount++;
|
|
152
|
-
|
|
153
|
-
catch {
|
|
154
|
-
// File deleted — counts as stale
|
|
155
|
-
staleFileCount++;
|
|
168
|
+
}
|
|
156
169
|
}
|
|
157
170
|
}
|
|
158
171
|
return {
|
|
159
172
|
indexed: true,
|
|
160
|
-
nodeCount
|
|
173
|
+
nodeCount,
|
|
161
174
|
relationCount,
|
|
162
175
|
fileCount,
|
|
163
|
-
lastIndexedAt,
|
|
176
|
+
lastIndexedAt: totals?.lastIndexedAt ?? null,
|
|
164
177
|
staleFileCount,
|
|
165
178
|
};
|
|
166
179
|
}
|
|
@@ -261,6 +274,13 @@ function retainAnalyzedReferences(graph, calls, accesses) {
|
|
|
261
274
|
export async function runPipeline(repoPath, projectId, db, tables, onProgress, options) {
|
|
262
275
|
options?.parserLimits?.signal?.throwIfAborted();
|
|
263
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
|
+
};
|
|
264
284
|
const publicationGeneration = randomUUID();
|
|
265
285
|
const sourceRoots = options?.sourceRoots ? structuredClone(options.sourceRoots) : undefined;
|
|
266
286
|
const isIncremental = options?.incremental === true;
|
|
@@ -271,67 +291,135 @@ export async function runPipeline(repoPath, projectId, db, tables, onProgress, o
|
|
|
271
291
|
const files = await walkRepositoryPaths(repoPath, onProgress, (report) => reports.set(report.path, report), options?.includedRepositories);
|
|
272
292
|
const scannedFiles = new Map(files.map((file) => [file.path, file]));
|
|
273
293
|
process.stderr.write(`[nexus] Found ${files.length} files\n`);
|
|
274
|
-
|
|
275
|
-
|
|
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 = [];
|
|
276
305
|
if (isIncremental) {
|
|
277
|
-
process.stderr.write('[nexus] Incremental mode: computing changed files...\n');
|
|
278
306
|
const readableDb = db;
|
|
279
|
-
const
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
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';
|
|
288
391
|
}
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
if (!currentFileSet.has(indexedPath)) {
|
|
293
|
-
changedPaths.add(indexedPath);
|
|
294
|
-
}
|
|
392
|
+
else if (matching.length === 0) {
|
|
393
|
+
reason =
|
|
394
|
+
'the extractor build changed since the cached parse, so no cached extraction is current';
|
|
295
395
|
}
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
hasPropertyCount: 0,
|
|
315
|
-
accessesTier1Count: 0,
|
|
316
|
-
accessesTier3Count: 0,
|
|
317
|
-
communityCount: 0,
|
|
318
|
-
communityModularity: 0,
|
|
319
|
-
processCount: 0,
|
|
320
|
-
crossCommunityProcessCount: 0,
|
|
321
|
-
};
|
|
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`;
|
|
322
414
|
}
|
|
323
|
-
// Cross-file resolution needs the complete symbol table. Rebuild a staged
|
|
324
|
-
// generation when anything changed; never delete from the usable index here.
|
|
325
|
-
process.stderr.write('[nexus] Incremental: rebuilding changed generation in staging\n');
|
|
326
|
-
}
|
|
327
|
-
else {
|
|
328
|
-
process.stderr.write('[nexus] Incremental: no existing index — running full parse\n');
|
|
329
415
|
}
|
|
416
|
+
process.stderr.write(`[nexus] ${mode === 'incremental' ? 'Incremental' : 'Full rebuild'}: ${reason}\n`);
|
|
417
|
+
endPhase('compare');
|
|
330
418
|
}
|
|
331
419
|
// Phase 2: Build File + Folder nodes with CONTAINS edges
|
|
332
420
|
// Include all files so the replacement graph has complete structure.
|
|
333
421
|
process.stderr.write('[nexus] Phase 2: Building file structure...\n');
|
|
334
|
-
processStructure(
|
|
422
|
+
processStructure(files, graph);
|
|
335
423
|
// Phase 3a: Build import resolution context (suffix index + tsconfig aliases)
|
|
336
424
|
// Built once here and reused across all files in the repository so the
|
|
337
425
|
// suffix index (~O(files × path_depth)) is not rebuilt per file.
|
|
@@ -344,7 +432,6 @@ export async function runPipeline(repoPath, projectId, db, tables, onProgress, o
|
|
|
344
432
|
const resolutionCtx = createResolutionContext();
|
|
345
433
|
const symbolTable = resolutionCtx.symbols;
|
|
346
434
|
const namedImportMap = resolutionCtx.namedImportMap;
|
|
347
|
-
// Use all files for import context so cross-file resolution works in incremental mode.
|
|
348
435
|
const importCtx = buildImportResolutionContext(files.map((f) => f.path));
|
|
349
436
|
const tsconfigPaths = await loadTsconfigPaths(repoPath);
|
|
350
437
|
if (tsconfigPaths) {
|
|
@@ -355,18 +442,26 @@ export async function runPipeline(repoPath, projectId, db, tables, onProgress, o
|
|
|
355
442
|
if (workspacePackageMap.size > 0) {
|
|
356
443
|
process.stderr.write(`[nexus] Loaded workspace packages: ${workspacePackageMap.size} entries\n`);
|
|
357
444
|
}
|
|
358
|
-
|
|
359
|
-
//
|
|
360
|
-
//
|
|
361
|
-
// 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.
|
|
362
448
|
process.stderr.write('[nexus] Phase 3: Parsing files...\n');
|
|
363
|
-
const
|
|
449
|
+
const cacheUpserts = [];
|
|
450
|
+
const { allHeritage, allCalls, allAccesses, barrelMap, parsedFileCount, reusedFileCount } = await runParseLoop(files, graph, symbolTable, importCtx, repoPath, {
|
|
364
451
|
tsconfigPaths,
|
|
365
452
|
namedImportMap,
|
|
366
453
|
publicationGeneration,
|
|
367
454
|
onProgress,
|
|
368
455
|
parserLimits: options?.parserLimits,
|
|
369
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,
|
|
370
465
|
onFileReport: (report) => {
|
|
371
466
|
const file = scannedFiles.get(report.path);
|
|
372
467
|
reports.set(report.path, {
|
|
@@ -377,6 +472,10 @@ export async function runPipeline(repoPath, projectId, db, tables, onProgress, o
|
|
|
377
472
|
});
|
|
378
473
|
},
|
|
379
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');
|
|
380
479
|
// Phase 3c: Heritage resolution — emit EXTENDS + IMPLEMENTS edges
|
|
381
480
|
// Uses resolutionCtx (fully populated after parse loop) for parent type lookup.
|
|
382
481
|
process.stderr.write('[nexus] Phase 3c: Resolving heritage...\n');
|
|
@@ -405,14 +504,17 @@ export async function runPipeline(repoPath, projectId, db, tables, onProgress, o
|
|
|
405
504
|
if (referenceReports.length > 0) {
|
|
406
505
|
process.stderr.write(`[nexus] Reference limitations: ${referenceReports.length} unresolved or unmodeled static sites retained with available evidence.\n`);
|
|
407
506
|
}
|
|
507
|
+
endPhase('resolve');
|
|
408
508
|
// Phase 5: Community detection (Louvain)
|
|
409
509
|
process.stderr.write('[nexus] Phase 5: Detecting communities...\n');
|
|
410
510
|
const communityResult = await detectCommunities(graph);
|
|
411
511
|
process.stderr.write(`[nexus] Communities: ${communityResult.stats.totalCommunities} detected, modularity=${communityResult.stats.modularity.toFixed(3)}, nodes=${communityResult.stats.nodesProcessed}\n`);
|
|
512
|
+
endPhase('communities');
|
|
412
513
|
// Phase 6: Process (execution flow) detection
|
|
413
514
|
process.stderr.write('[nexus] Phase 6: Detecting execution flows...\n');
|
|
414
515
|
const processResult = await detectProcesses(graph, communityResult.memberships);
|
|
415
516
|
process.stderr.write(`[nexus] Processes: ${processResult.stats.totalProcesses} flows, cross-community=${processResult.stats.crossCommunityCount}, avg-steps=${processResult.stats.avgStepCount}\n`);
|
|
517
|
+
endPhase('flows');
|
|
416
518
|
// Flush all nodes and relations to Drizzle
|
|
417
519
|
process.stderr.write('[nexus] Flushing to database...\n');
|
|
418
520
|
options?.parserLimits?.signal?.throwIfAborted();
|
|
@@ -465,6 +567,7 @@ export async function runPipeline(repoPath, projectId, db, tables, onProgress, o
|
|
|
465
567
|
if (changedPaths.length > 0) {
|
|
466
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)` : ''}`);
|
|
467
569
|
}
|
|
570
|
+
endPhase('verify');
|
|
468
571
|
const publication = graph.preparePublication();
|
|
469
572
|
publication.generation = publicationGeneration;
|
|
470
573
|
publication.assessment = {
|
|
@@ -477,14 +580,16 @@ export async function runPipeline(repoPath, projectId, db, tables, onProgress, o
|
|
|
477
580
|
assessedAt: new Date(startTime).toISOString(),
|
|
478
581
|
files: [...reports.values()],
|
|
479
582
|
};
|
|
583
|
+
publication.parseCache = buildParseCacheUpdate(fingerprint, mode, cacheUpserts, reusedExtractions, cachedPaths);
|
|
480
584
|
options.parserLimits?.signal?.throwIfAborted();
|
|
481
585
|
await options.publishGraph(publication);
|
|
482
586
|
}
|
|
483
587
|
else {
|
|
484
588
|
await graph.flush(projectId, db, tables);
|
|
485
589
|
}
|
|
590
|
+
endPhase('publish');
|
|
486
591
|
const durationMs = Date.now() - startTime;
|
|
487
|
-
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`);
|
|
488
593
|
return {
|
|
489
594
|
nodeCount: graph.nodes.size,
|
|
490
595
|
relationCount: graph.relations.length,
|
|
@@ -505,6 +610,40 @@ export async function runPipeline(repoPath, projectId, db, tables, onProgress, o
|
|
|
505
610
|
communityModularity: communityResult.stats.modularity,
|
|
506
611
|
processCount: processResult.stats.totalProcesses,
|
|
507
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)),
|
|
508
647
|
};
|
|
509
648
|
}
|
|
510
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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"}
|