@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.
Files changed (38) 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 -7
  12. package/dist/src/pipeline/index.d.ts.map +1 -1
  13. package/dist/src/pipeline/index.js +266 -96
  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 -276
  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/src/pipeline/workers/worker-pool.d.ts.map +1 -1
  34. package/dist/src/pipeline/workers/worker-pool.js +106 -4
  35. package/dist/src/pipeline/workers/worker-pool.js.map +1 -1
  36. package/dist/tsconfig.build.tsbuildinfo +1 -1
  37. package/dist/tsconfig.tsbuildinfo +1 -1
  38. 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
- 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
98
117
  .select({
99
- kind: nodesTable['kind'],
100
- filePath: nodesTable['filePath'],
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 rows = raw;
106
- if (rows.length === 0) {
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
- // Count distinct file nodes (filePath !== null)
117
- const fileRows = rows.filter((r) => r.kind === 'file' && r.filePath !== null);
118
- const fileCount = new Set(fileRows.map((row) => row.filePath)).size;
119
- // Find most recent indexedAt
120
- let lastIndexedAt = null;
121
- for (const row of rows) {
122
- if (row.indexedAt && (!lastIndexedAt || row.indexedAt > lastIndexedAt)) {
123
- lastIndexedAt = row.indexedAt;
124
- }
125
- }
126
- // Count relations
127
- const relRows = await db.select({ id: relationsTable['id'] }).from(tables.nexusRelations);
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
- for (const [relPath, contentHash] of filePathMap) {
137
- const absPath = relPath.startsWith('/') ? relPath : `${repoPath}/${relPath}`;
138
- try {
139
- const currentHash = createHash('sha256')
140
- .update(await fs.readFile(absPath))
141
- .digest('hex');
142
- 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
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: rows.length,
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
- // Incremental mode detects whether a complete replacement is needed.
267
- 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 = [];
268
305
  if (isIncremental) {
269
- process.stderr.write('[nexus] Incremental mode: computing changed files...\n');
270
306
  const readableDb = db;
271
- const indexedMtimes = await getIndexedFileHashes(projectId, readableDb, tables);
272
- // If no files indexed yet, run full parse
273
- if (indexedMtimes.size > 0) {
274
- // Content fingerprints detect edits even when size and timestamps are preserved.
275
- const changedPaths = new Set();
276
- for (const file of files) {
277
- if (!file.contentHash || indexedMtimes.get(file.path) !== file.contentHash) {
278
- changedPaths.add(file.path);
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
- // Find deleted files (in DB but not in current filesystem)
282
- const currentFileSet = new Set(files.map((f) => f.path));
283
- for (const indexedPath of indexedMtimes.keys()) {
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
- process.stderr.write(`[nexus] Incremental: ${changedPaths.size} changed/new/deleted files (${indexedMtimes.size} previously indexed)\n`);
289
- if (changedPaths.size === 0) {
290
- process.stderr.write('[nexus] Incremental: no source fingerprint changes; returning existing graph statistics.\n');
291
- // Return stats from existing index (no writes needed)
292
- const existingNodeCount = (await readableDb.select().from(tables.nexusNodes)).length;
293
- const existingRelationCount = (await readableDb.select().from(tables.nexusRelations))
294
- .length;
295
- return {
296
- nodeCount: existingNodeCount,
297
- relationCount: existingRelationCount,
298
- fileCount: files.length,
299
- durationMs: Date.now() - startTime,
300
- extendsCount: 0,
301
- implementsCount: 0,
302
- callsTier1Count: 0,
303
- callsTier2aCount: 0,
304
- callsTier3Count: 0,
305
- hasMethodCount: 0,
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(isIncremental ? filesToParse : files, graph);
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
- // Phase 3: Parse loop — extract symbols, imports, heritage, calls
351
- // A changed incremental index also parses every file.
352
- // Heritage + call resolution runs on the full in-memory graph so
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 { 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, {
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
- throw new Error(`Index generation failed for ${failed.length} file(s); previous graph retained: ${failed.map((report) => `${report.path}: ${report.reason}`).join('; ')}`);
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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"}