@cleocode/nexus 2026.9.16 → 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.
Files changed (35) hide show
  1. package/dist/src/pipeline/community-processor.d.ts.map +1 -1
  2. package/dist/src/pipeline/community-processor.js +21 -0
  3. package/dist/src/pipeline/community-processor.js.map +1 -1
  4. package/dist/src/pipeline/extractors/typescript-extractor.d.ts.map +1 -1
  5. package/dist/src/pipeline/extractors/typescript-extractor.js +7 -1
  6. package/dist/src/pipeline/extractors/typescript-extractor.js.map +1 -1
  7. package/dist/src/pipeline/filesystem-walker.d.ts +25 -1
  8. package/dist/src/pipeline/filesystem-walker.d.ts.map +1 -1
  9. package/dist/src/pipeline/filesystem-walker.js +16 -4
  10. package/dist/src/pipeline/filesystem-walker.js.map +1 -1
  11. package/dist/src/pipeline/index.d.ts +52 -15
  12. package/dist/src/pipeline/index.d.ts.map +1 -1
  13. package/dist/src/pipeline/index.js +242 -103
  14. package/dist/src/pipeline/index.js.map +1 -1
  15. package/dist/src/pipeline/parse-cache.d.ts +72 -0
  16. package/dist/src/pipeline/parse-cache.d.ts.map +1 -0
  17. package/dist/src/pipeline/parse-cache.js +158 -0
  18. package/dist/src/pipeline/parse-cache.js.map +1 -0
  19. package/dist/src/pipeline/parse-loop.d.ts +31 -21
  20. package/dist/src/pipeline/parse-loop.d.ts.map +1 -1
  21. package/dist/src/pipeline/parse-loop.js +186 -285
  22. package/dist/src/pipeline/parse-loop.js.map +1 -1
  23. package/dist/src/pipeline/process-processor.d.ts.map +1 -1
  24. package/dist/src/pipeline/process-processor.js +4 -0
  25. package/dist/src/pipeline/process-processor.js.map +1 -1
  26. package/dist/src/pipeline/processors/access-processor.d.ts.map +1 -1
  27. package/dist/src/pipeline/processors/access-processor.js +14 -2
  28. package/dist/src/pipeline/processors/access-processor.js.map +1 -1
  29. package/dist/src/pipeline/workers/parse-worker.d.ts +10 -15
  30. package/dist/src/pipeline/workers/parse-worker.d.ts.map +1 -1
  31. package/dist/src/pipeline/workers/parse-worker.js +12 -12
  32. package/dist/src/pipeline/workers/parse-worker.js.map +1 -1
  33. package/dist/tsconfig.build.tsbuildinfo +1 -1
  34. package/dist/tsconfig.tsbuildinfo +1 -1
  35. 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
- const raw = await db
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
- kind: nodesTable['kind'],
108
- filePath: nodesTable['filePath'],
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 rows = raw;
114
- if (rows.length === 0) {
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
- // Count distinct file nodes (filePath !== null)
125
- const fileRows = rows.filter((r) => r.kind === 'file' && r.filePath !== null);
126
- const fileCount = new Set(fileRows.map((row) => row.filePath)).size;
127
- // Find most recent indexedAt
128
- let lastIndexedAt = null;
129
- for (const row of rows) {
130
- if (row.indexedAt && (!lastIndexedAt || row.indexedAt > lastIndexedAt)) {
131
- lastIndexedAt = row.indexedAt;
132
- }
133
- }
134
- // Count relations
135
- const relRows = await db.select({ id: relationsTable['id'] }).from(tables.nexusRelations);
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
- for (const [relPath, contentHash] of filePathMap) {
145
- const absPath = relPath.startsWith('/') ? relPath : `${repoPath}/${relPath}`;
146
- try {
147
- const currentHash = createHash('sha256')
148
- .update(await fs.readFile(absPath))
149
- .digest('hex');
150
- if (!contentHash || currentHash !== contentHash)
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: rows.length,
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
- // Incremental mode detects whether a complete replacement is needed.
275
- const filesToParse = files;
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 indexedMtimes = await getIndexedFileHashes(projectId, readableDb, tables);
280
- // If no files indexed yet, run full parse
281
- if (indexedMtimes.size > 0) {
282
- // Content fingerprints detect edits even when size and timestamps are preserved.
283
- const changedPaths = new Set();
284
- for (const file of files) {
285
- if (!file.contentHash || indexedMtimes.get(file.path) !== file.contentHash) {
286
- changedPaths.add(file.path);
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
- // Find deleted files (in DB but not in current filesystem)
290
- const currentFileSet = new Set(files.map((f) => f.path));
291
- for (const indexedPath of indexedMtimes.keys()) {
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
- process.stderr.write(`[nexus] Incremental: ${changedPaths.size} changed/new/deleted files (${indexedMtimes.size} previously indexed)\n`);
297
- if (changedPaths.size === 0) {
298
- process.stderr.write('[nexus] Incremental: no source fingerprint changes; returning existing graph statistics.\n');
299
- // Return stats from existing index (no writes needed)
300
- const existingNodeCount = (await readableDb.select().from(tables.nexusNodes)).length;
301
- const existingRelationCount = (await readableDb.select().from(tables.nexusRelations))
302
- .length;
303
- return {
304
- nodeCount: existingNodeCount,
305
- relationCount: existingRelationCount,
306
- fileCount: files.length,
307
- durationMs: Date.now() - startTime,
308
- extendsCount: 0,
309
- implementsCount: 0,
310
- callsTier1Count: 0,
311
- callsTier2aCount: 0,
312
- callsTier3Count: 0,
313
- hasMethodCount: 0,
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(isIncremental ? filesToParse : files, graph);
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
- // Phase 3: Parse loop — extract symbols, imports, heritage, calls
359
- // A changed incremental index also parses every file.
360
- // Heritage + call resolution runs on the full in-memory graph so
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 { allHeritage, allCalls, allAccesses, barrelMap } = await runParseLoop(filesToParse, graph, symbolTable, importCtx, repoPath, {
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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"}