@optave/codegraph 3.9.1 → 3.9.3

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 (148) hide show
  1. package/README.md +95 -14
  2. package/dist/ast-analysis/engine.d.ts.map +1 -1
  3. package/dist/ast-analysis/engine.js +64 -0
  4. package/dist/ast-analysis/engine.js.map +1 -1
  5. package/dist/cli/commands/batch.d.ts.map +1 -1
  6. package/dist/cli/commands/batch.js +5 -17
  7. package/dist/cli/commands/batch.js.map +1 -1
  8. package/dist/cli/commands/structure.d.ts.map +1 -1
  9. package/dist/cli/commands/structure.js +18 -1
  10. package/dist/cli/commands/structure.js.map +1 -1
  11. package/dist/db/connection.d.ts +2 -0
  12. package/dist/db/connection.d.ts.map +1 -1
  13. package/dist/db/connection.js +2 -2
  14. package/dist/db/connection.js.map +1 -1
  15. package/dist/db/index.d.ts +1 -1
  16. package/dist/db/index.d.ts.map +1 -1
  17. package/dist/db/index.js +1 -1
  18. package/dist/db/index.js.map +1 -1
  19. package/dist/domain/analysis/context.d.ts.map +1 -1
  20. package/dist/domain/analysis/context.js +5 -15
  21. package/dist/domain/analysis/context.js.map +1 -1
  22. package/dist/domain/analysis/dependencies.d.ts +5 -5
  23. package/dist/domain/analysis/dependencies.d.ts.map +1 -1
  24. package/dist/domain/analysis/dependencies.js +6 -16
  25. package/dist/domain/analysis/dependencies.js.map +1 -1
  26. package/dist/domain/analysis/diff-impact.d.ts +12 -0
  27. package/dist/domain/analysis/diff-impact.d.ts.map +1 -1
  28. package/dist/domain/analysis/diff-impact.js +20 -1
  29. package/dist/domain/analysis/diff-impact.js.map +1 -1
  30. package/dist/domain/analysis/fn-impact.js +2 -2
  31. package/dist/domain/analysis/fn-impact.js.map +1 -1
  32. package/dist/domain/analysis/implementations.d.ts.map +1 -1
  33. package/dist/domain/analysis/implementations.js +3 -13
  34. package/dist/domain/analysis/implementations.js.map +1 -1
  35. package/dist/domain/graph/builder/context.d.ts +4 -0
  36. package/dist/domain/graph/builder/context.d.ts.map +1 -1
  37. package/dist/domain/graph/builder/context.js +4 -0
  38. package/dist/domain/graph/builder/context.js.map +1 -1
  39. package/dist/domain/graph/builder/native-db-proxy.d.ts +24 -0
  40. package/dist/domain/graph/builder/native-db-proxy.d.ts.map +1 -0
  41. package/dist/domain/graph/builder/native-db-proxy.js +91 -0
  42. package/dist/domain/graph/builder/native-db-proxy.js.map +1 -0
  43. package/dist/domain/graph/builder/pipeline.d.ts.map +1 -1
  44. package/dist/domain/graph/builder/pipeline.js +148 -79
  45. package/dist/domain/graph/builder/pipeline.js.map +1 -1
  46. package/dist/domain/graph/builder/stages/build-edges.d.ts.map +1 -1
  47. package/dist/domain/graph/builder/stages/build-edges.js +15 -2
  48. package/dist/domain/graph/builder/stages/build-edges.js.map +1 -1
  49. package/dist/domain/graph/builder/stages/build-structure.js +2 -2
  50. package/dist/domain/graph/builder/stages/build-structure.js.map +1 -1
  51. package/dist/domain/graph/builder/stages/detect-changes.d.ts.map +1 -1
  52. package/dist/domain/graph/builder/stages/detect-changes.js +6 -28
  53. package/dist/domain/graph/builder/stages/detect-changes.js.map +1 -1
  54. package/dist/domain/graph/builder/stages/finalize.js +1 -1
  55. package/dist/domain/graph/builder/stages/finalize.js.map +1 -1
  56. package/dist/domain/graph/builder/stages/insert-nodes.d.ts.map +1 -1
  57. package/dist/domain/graph/builder/stages/insert-nodes.js +16 -12
  58. package/dist/domain/graph/builder/stages/insert-nodes.js.map +1 -1
  59. package/dist/domain/graph/builder/stages/resolve-imports.d.ts.map +1 -1
  60. package/dist/domain/graph/builder/stages/resolve-imports.js +2 -3
  61. package/dist/domain/graph/builder/stages/resolve-imports.js.map +1 -1
  62. package/dist/domain/parser.d.ts.map +1 -1
  63. package/dist/domain/parser.js +11 -4
  64. package/dist/domain/parser.js.map +1 -1
  65. package/dist/domain/queries.d.ts +1 -1
  66. package/dist/domain/queries.d.ts.map +1 -1
  67. package/dist/domain/queries.js +1 -1
  68. package/dist/domain/queries.js.map +1 -1
  69. package/dist/features/ast.js +2 -2
  70. package/dist/features/ast.js.map +1 -1
  71. package/dist/features/audit.d.ts.map +1 -1
  72. package/dist/features/audit.js +3 -2
  73. package/dist/features/audit.js.map +1 -1
  74. package/dist/features/boundaries.d.ts.map +1 -1
  75. package/dist/features/boundaries.js +3 -5
  76. package/dist/features/boundaries.js.map +1 -1
  77. package/dist/features/branch-compare.d.ts.map +1 -1
  78. package/dist/features/branch-compare.js +2 -1
  79. package/dist/features/branch-compare.js.map +1 -1
  80. package/dist/features/cfg.d.ts +1 -1
  81. package/dist/features/cfg.d.ts.map +1 -1
  82. package/dist/features/cfg.js +52 -6
  83. package/dist/features/cfg.js.map +1 -1
  84. package/dist/features/complexity.d.ts.map +1 -1
  85. package/dist/features/complexity.js +7 -0
  86. package/dist/features/complexity.js.map +1 -1
  87. package/dist/features/flow.d.ts.map +1 -1
  88. package/dist/features/flow.js +2 -1
  89. package/dist/features/flow.js.map +1 -1
  90. package/dist/features/manifesto.d.ts.map +1 -1
  91. package/dist/features/manifesto.js +15 -1
  92. package/dist/features/manifesto.js.map +1 -1
  93. package/dist/infrastructure/config.d.ts +1 -0
  94. package/dist/infrastructure/config.d.ts.map +1 -1
  95. package/dist/infrastructure/config.js +1 -0
  96. package/dist/infrastructure/config.js.map +1 -1
  97. package/dist/infrastructure/update-check.d.ts +1 -1
  98. package/dist/infrastructure/update-check.js +3 -3
  99. package/dist/infrastructure/update-check.js.map +1 -1
  100. package/dist/presentation/batch.d.ts.map +1 -1
  101. package/dist/presentation/batch.js +1 -0
  102. package/dist/presentation/batch.js.map +1 -1
  103. package/dist/presentation/structure.d.ts +1 -1
  104. package/dist/presentation/structure.d.ts.map +1 -1
  105. package/dist/presentation/structure.js +1 -1
  106. package/dist/presentation/structure.js.map +1 -1
  107. package/dist/shared/normalize.d.ts +12 -0
  108. package/dist/shared/normalize.d.ts.map +1 -1
  109. package/dist/shared/normalize.js +4 -0
  110. package/dist/shared/normalize.js.map +1 -1
  111. package/dist/types.d.ts +2 -0
  112. package/dist/types.d.ts.map +1 -1
  113. package/package.json +7 -7
  114. package/src/ast-analysis/engine.ts +83 -0
  115. package/src/cli/commands/batch.ts +5 -26
  116. package/src/cli/commands/structure.ts +21 -1
  117. package/src/db/connection.ts +2 -2
  118. package/src/db/index.ts +2 -0
  119. package/src/domain/analysis/context.ts +5 -15
  120. package/src/domain/analysis/dependencies.ts +6 -16
  121. package/src/domain/analysis/diff-impact.ts +28 -1
  122. package/src/domain/analysis/fn-impact.ts +2 -2
  123. package/src/domain/analysis/implementations.ts +3 -13
  124. package/src/domain/graph/builder/context.ts +4 -0
  125. package/src/domain/graph/builder/native-db-proxy.ts +104 -0
  126. package/src/domain/graph/builder/pipeline.ts +171 -84
  127. package/src/domain/graph/builder/stages/build-edges.ts +15 -2
  128. package/src/domain/graph/builder/stages/build-structure.ts +2 -2
  129. package/src/domain/graph/builder/stages/detect-changes.ts +11 -33
  130. package/src/domain/graph/builder/stages/finalize.ts +1 -1
  131. package/src/domain/graph/builder/stages/insert-nodes.ts +17 -14
  132. package/src/domain/graph/builder/stages/resolve-imports.ts +2 -3
  133. package/src/domain/parser.ts +12 -4
  134. package/src/domain/queries.ts +1 -1
  135. package/src/features/ast.ts +2 -2
  136. package/src/features/audit.ts +3 -2
  137. package/src/features/boundaries.ts +3 -5
  138. package/src/features/branch-compare.ts +2 -3
  139. package/src/features/cfg.ts +51 -6
  140. package/src/features/complexity.ts +7 -0
  141. package/src/features/flow.ts +2 -1
  142. package/src/features/manifesto.ts +15 -1
  143. package/src/infrastructure/config.ts +1 -0
  144. package/src/infrastructure/update-check.ts +3 -3
  145. package/src/presentation/batch.ts +1 -0
  146. package/src/presentation/structure.ts +2 -2
  147. package/src/shared/normalize.ts +10 -0
  148. package/src/types.ts +2 -0
@@ -0,0 +1,91 @@
1
+ /**
2
+ * NativeDbProxy — wraps a NativeDatabase (rusqlite via napi-rs) to satisfy the
3
+ * BetterSqlite3Database interface. When the native addon is available, the
4
+ * build pipeline uses this proxy as `ctx.db` so that every stage operates on a
5
+ * single rusqlite connection — no dual-connection WAL corruption, no
6
+ * open/close/reopen dance.
7
+ *
8
+ * When native is unavailable, the pipeline falls back to real better-sqlite3.
9
+ */
10
+ /** Sanitize params for napi-rs: better-sqlite3 treats `undefined` as NULL,
11
+ * but serde_json cannot represent `undefined`. Replace with `null`. */
12
+ function sanitize(params) {
13
+ return params.map((p) => (p === undefined ? null : p));
14
+ }
15
+ export class NativeDbProxy {
16
+ #ndb;
17
+ /** Advisory lock path — set by the pipeline so closeDb() can release it. */
18
+ __lockPath;
19
+ constructor(nativeDb) {
20
+ this.#ndb = nativeDb;
21
+ }
22
+ prepare(sql) {
23
+ const ndb = this.#ndb;
24
+ // Only INSERT statements need last_insert_rowid — skip the extra napi
25
+ // call for UPDATE/DELETE/other DML to halve per-statement overhead.
26
+ const isInsert = sql.trimStart().substring(0, 6).toUpperCase() === 'INSERT';
27
+ const stmt = {
28
+ all(...params) {
29
+ return ndb.queryAll(sql, sanitize(params));
30
+ },
31
+ get(...params) {
32
+ return (ndb.queryGet(sql, sanitize(params)) ?? undefined);
33
+ },
34
+ run(...params) {
35
+ ndb.queryAll(sql, sanitize(params));
36
+ if (isInsert) {
37
+ const row = ndb.queryGet('SELECT last_insert_rowid() AS rid', []);
38
+ return { changes: 0, lastInsertRowid: row?.rid ?? 0 };
39
+ }
40
+ return { changes: 0, lastInsertRowid: 0 };
41
+ },
42
+ iterate() {
43
+ throw new Error('iterate() is not supported via NativeDbProxy');
44
+ },
45
+ raw() {
46
+ return stmt; // no-op — .raw() is not used in the build pipeline
47
+ },
48
+ };
49
+ return stmt;
50
+ }
51
+ exec(sql) {
52
+ this.#ndb.exec(sql);
53
+ return this;
54
+ }
55
+ pragma(sql) {
56
+ return this.#ndb.pragma(sql);
57
+ }
58
+ close() {
59
+ // No-op: the pipeline manages the NativeDatabase lifecycle directly.
60
+ // closeDbPair() calls nativeDb.close() separately.
61
+ }
62
+ get open() {
63
+ return this.#ndb.isOpen;
64
+ }
65
+ get name() {
66
+ return this.#ndb.dbPath;
67
+ }
68
+ transaction(fn) {
69
+ const ndb = this.#ndb;
70
+ return ((...args) => {
71
+ // NOTE: nested transactions (savepoints) are not supported — ensure callers
72
+ // do not invoke a transaction() wrapper from within an existing transaction.
73
+ ndb.exec('BEGIN');
74
+ try {
75
+ const result = fn(...args);
76
+ ndb.exec('COMMIT');
77
+ return result;
78
+ }
79
+ catch (e) {
80
+ try {
81
+ ndb.exec('ROLLBACK');
82
+ }
83
+ catch {
84
+ // Ignore rollback errors — the original error is more important
85
+ }
86
+ throw e;
87
+ }
88
+ });
89
+ }
90
+ }
91
+ //# sourceMappingURL=native-db-proxy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"native-db-proxy.js","sourceRoot":"","sources":["../../../../src/domain/graph/builder/native-db-proxy.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../../../src/domain/graph/builder/pipeline.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAA+B,MAAM,mBAAmB,CAAC;AA0qBlG;;;;GAIG;AACH,wBAAsB,UAAU,CAC9B,OAAO,EAAE,MAAM,EACf,IAAI,GAAE,cAAmB,GACxB,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,CAiClC"}
1
+ {"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../../../src/domain/graph/builder/pipeline.ts"],"names":[],"mappings":"AAyBA,OAAO,KAAK,EAEV,cAAc,EACd,WAAW,EAGZ,MAAM,mBAAmB,CAAC;AAwvB3B;;;;GAIG;AACH,wBAAsB,UAAU,CAC9B,OAAO,EAAE,MAAM,EACf,IAAI,GAAE,cAAmB,GACxB,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,CAiClC"}
@@ -4,9 +4,10 @@
4
4
  * This is the heart of the builder refactor (ROADMAP 3.9): the monolithic buildGraph()
5
5
  * is decomposed into independently testable stages that communicate via PipelineContext.
6
6
  */
7
+ import fs from 'node:fs';
7
8
  import path from 'node:path';
8
9
  import { performance } from 'node:perf_hooks';
9
- import { closeDbPair, getBuildMeta, initSchema, MIGRATIONS, openDb, setBuildMeta, } from '../../../db/index.js';
10
+ import { acquireAdvisoryLock, closeDbPair, getBuildMeta, initSchema, MIGRATIONS, openDb, releaseAdvisoryLock, setBuildMeta, } from '../../../db/index.js';
10
11
  import { detectWorkspaces, loadConfig } from '../../../infrastructure/config.js';
11
12
  import { debug, info, warn } from '../../../infrastructure/logger.js';
12
13
  import { loadNative } from '../../../infrastructure/native.js';
@@ -17,6 +18,7 @@ import { getActiveEngine } from '../../parser.js';
17
18
  import { setWorkspaces } from '../resolve.js';
18
19
  import { PipelineContext } from './context.js';
19
20
  import { loadPathAliases } from './helpers.js';
21
+ import { NativeDbProxy } from './native-db-proxy.js';
20
22
  import { buildEdges } from './stages/build-edges.js';
21
23
  import { buildStructure } from './stages/build-structure.js';
22
24
  // Pipeline stages
@@ -33,28 +35,11 @@ function initializeEngine(ctx) {
33
35
  engine: ctx.opts.engine || 'auto',
34
36
  dataflow: ctx.opts.dataflow !== false,
35
37
  ast: ctx.opts.ast !== false,
36
- nativeDb: ctx.nativeDb,
37
- // WAL checkpoint callbacks for dual-connection WAL guard (#696, #715).
38
- // Feature modules (ast, cfg, complexity, dataflow) receive `db` as a
39
- // parameter and cannot tolerate close/reopen (stale reference). Instead,
40
- // checkpoint the WAL so native writes start with a clean slate.
41
- // After native writes, resumeJsDb checkpoints through rusqlite so
42
- // better-sqlite3 never reads WAL frames from a different SQLite library.
43
- suspendJsDb: ctx.nativeDb
44
- ? () => {
45
- ctx.db.pragma('wal_checkpoint(TRUNCATE)');
46
- }
47
- : undefined,
48
- resumeJsDb: ctx.nativeDb
49
- ? () => {
50
- try {
51
- ctx.nativeDb?.exec('PRAGMA wal_checkpoint(TRUNCATE)');
52
- }
53
- catch (e) {
54
- debug(`resumeJsDb: WAL checkpoint failed (nativeDb may already be closed): ${toErrorMessage(e)}`);
55
- }
56
- }
57
- : undefined,
38
+ // nativeDb and WAL callbacks are set later when NativeDatabase is opened
39
+ // (deferred to skip overhead on no-op rebuilds).
40
+ nativeDb: undefined,
41
+ suspendJsDb: undefined,
42
+ resumeJsDb: undefined,
58
43
  };
59
44
  const { name: engineName, version: engineVersion } = getActiveEngine(ctx.engineOpts);
60
45
  ctx.engineName = engineName;
@@ -67,10 +52,10 @@ function checkEngineSchemaMismatch(ctx) {
67
52
  ctx.forceFullRebuild = false;
68
53
  if (!ctx.incremental)
69
54
  return;
70
- // Route metadata reads through NativeDatabase only when using the native engine,
71
- // to avoid dual-SQLite WAL conflicts (rusqlite + better-sqlite3 on same file).
72
- const useNativeDb = ctx.engineName === 'native' && !!ctx.nativeDb;
73
- const meta = (key) => useNativeDb ? ctx.nativeDb.getBuildMeta(key) : getBuildMeta(ctx.db, key);
55
+ // NativeDatabase is deferred until after change detection, so always use
56
+ // better-sqlite3 for metadata reads here. Reads are safe WAL conflicts
57
+ // only arise from concurrent writes.
58
+ const meta = (key) => getBuildMeta(ctx.db, key);
74
59
  const prevEngine = meta('engine');
75
60
  if (prevEngine && prevEngine !== ctx.engineName) {
76
61
  info(`Engine changed (${prevEngine} → ${ctx.engineName}), promoting to full rebuild.`);
@@ -107,36 +92,44 @@ function loadAliases(ctx) {
107
92
  function setupPipeline(ctx) {
108
93
  ctx.rootDir = path.resolve(ctx.rootDir);
109
94
  ctx.dbPath = path.join(ctx.rootDir, '.codegraph', 'graph.db');
110
- ctx.db = openDb(ctx.dbPath);
111
- // Use NativeDatabase for schema init when native engine is available (Phase 6.13).
112
- // better-sqlite3 (ctx.db) is still always opened — needed for queries and stages
113
- // that haven't been migrated to rusqlite yet.
114
- // Skip native DB entirely when user explicitly requested --engine wasm.
95
+ // Detect whether native engine is available.
115
96
  const enginePref = ctx.opts.engine || 'auto';
116
97
  const native = enginePref !== 'wasm' ? loadNative() : null;
117
- if (native?.NativeDatabase) {
98
+ ctx.nativeAvailable = !!native?.NativeDatabase;
99
+ // When native is available, use a NativeDbProxy backed by a single rusqlite
100
+ // connection. This eliminates the dual-connection WAL corruption problem.
101
+ // The Rust orchestrator handles the full pipeline; the proxy is used for any
102
+ // JS post-processing (e.g. structure fallback on large builds).
103
+ if (ctx.nativeAvailable && native?.NativeDatabase) {
118
104
  try {
105
+ const dir = path.dirname(ctx.dbPath);
106
+ if (!fs.existsSync(dir))
107
+ fs.mkdirSync(dir, { recursive: true });
108
+ acquireAdvisoryLock(ctx.dbPath);
119
109
  ctx.nativeDb = native.NativeDatabase.openReadWrite(ctx.dbPath);
120
110
  ctx.nativeDb.initSchema();
121
- // Checkpoint WAL through rusqlite so better-sqlite3 sees a clean DB
122
- // with no cross-library WAL frames (#715, #717).
123
- ctx.nativeDb.exec('PRAGMA wal_checkpoint(TRUNCATE)');
111
+ const proxy = new NativeDbProxy(ctx.nativeDb);
112
+ proxy.__lockPath = `${ctx.dbPath}.lock`;
113
+ ctx.db = proxy;
114
+ ctx.nativeFirstProxy = true;
124
115
  }
125
116
  catch (err) {
126
- warn(`NativeDatabase setup failed, falling back to JS: ${toErrorMessage(err)}`);
117
+ warn(`NativeDatabase setup failed, falling back to better-sqlite3: ${toErrorMessage(err)}`);
127
118
  try {
128
119
  ctx.nativeDb?.close();
129
120
  }
130
- catch (e) {
131
- debug(`setupNativeDb: close failed during fallback: ${toErrorMessage(e)}`);
121
+ catch {
122
+ /* ignore */
132
123
  }
133
124
  ctx.nativeDb = undefined;
125
+ ctx.nativeFirstProxy = false;
126
+ releaseAdvisoryLock(`${ctx.dbPath}.lock`);
127
+ ctx.db = openDb(ctx.dbPath);
128
+ initSchema(ctx.db);
134
129
  }
135
- // Always run JS initSchema so better-sqlite3 sees the schema —
136
- // nativeDb is closed during pipeline stages and reopened for analyses.
137
- initSchema(ctx.db);
138
130
  }
139
131
  else {
132
+ ctx.db = openDb(ctx.dbPath);
140
133
  initSchema(ctx.db);
141
134
  }
142
135
  ctx.config = loadConfig(ctx.rootDir);
@@ -230,11 +223,12 @@ function refreshJsDb(ctx) {
230
223
  // ── Native orchestrator helpers ───────────────────────────────────────
231
224
  /** Determine whether the native orchestrator should be skipped. Returns a reason string, or null if it should run. */
232
225
  function shouldSkipNativeOrchestrator(ctx) {
233
- if (process.env.CODEGRAPH_FORCE_JS_PIPELINE === '1')
234
- return 'CODEGRAPH_FORCE_JS_PIPELINE=1';
235
226
  if (ctx.forceFullRebuild)
236
227
  return 'forceFullRebuild';
237
- const orchestratorBuggy = !!ctx.engineVersion && semverCompare(ctx.engineVersion, '3.10.0') < 0;
228
+ // v3.9.0 addon had buggy incremental purge (wrong SQL on analysis tables,
229
+ // scoped removal over-detection). Fixed in v3.9.1 by PR #865. Gate on
230
+ // < 3.9.1 so v3.9.1+ uses the fast Rust orchestrator path.
231
+ const orchestratorBuggy = !!ctx.engineVersion && semverCompare(ctx.engineVersion, '3.9.1') < 0;
238
232
  if (orchestratorBuggy)
239
233
  return `buggy addon ${ctx.engineVersion}`;
240
234
  if (ctx.engineName !== 'native')
@@ -366,7 +360,11 @@ async function runPostNativeStructure(ctx, allFileSymbols, isFullBuild, changedF
366
360
  }
367
361
  return performance.now() - structureStart;
368
362
  }
369
- /** Run AST/complexity/CFG/dataflow analysis after native orchestrator. */
363
+ /**
364
+ * JS fallback for AST/complexity/CFG/dataflow analysis after native orchestrator.
365
+ * Used when the Rust addon doesn't include analysis persistence (older addon
366
+ * version) or when analysis failed on the Rust side.
367
+ */
370
368
  async function runPostNativeAnalysis(ctx, allFileSymbols, changedFiles) {
371
369
  const timing = { astMs: 0, complexityMs: 0, cfgMs: 0, dataflowMs: 0 };
372
370
  // Scope analysis fileSymbols to changed files only
@@ -396,8 +394,16 @@ async function runPostNativeAnalysis(ctx, allFileSymbols, changedFiles) {
396
394
  ctx.engineOpts.nativeDb = undefined;
397
395
  }
398
396
  }
397
+ // Flush JS WAL pages once so Rust can see them, then no-op callbacks.
398
+ // Previously each feature called wal_checkpoint(TRUNCATE) individually
399
+ // (~68ms each × 3-4 features). One FULL checkpoint suffices.
400
+ if (ctx.nativeDb && ctx.engineOpts) {
401
+ ctx.db.pragma('wal_checkpoint(FULL)');
402
+ ctx.engineOpts.suspendJsDb = () => { };
403
+ ctx.engineOpts.resumeJsDb = () => { };
404
+ }
399
405
  try {
400
- const { runAnalyses: runAnalysesFn } = await import('../../../ast-analysis/engine.js');
406
+ const { runAnalyses: runAnalysesFn } = (await import('../../../ast-analysis/engine.js'));
401
407
  const result = await runAnalysesFn(ctx.db, analysisFileSymbols, ctx.rootDir, ctx.opts, ctx.engineOpts);
402
408
  timing.astMs = result.astMs ?? 0;
403
409
  timing.complexityMs = result.complexityMs ?? 0;
@@ -407,7 +413,9 @@ async function runPostNativeAnalysis(ctx, allFileSymbols, changedFiles) {
407
413
  catch (err) {
408
414
  warn(`Analysis phases failed after native build: ${toErrorMessage(err)}`);
409
415
  }
410
- // Close nativeDb after analyses
416
+ // Close nativeDb after analyses — TRUNCATE checkpoint flushes all Rust
417
+ // WAL writes so JS and external readers can see them. Runs once after
418
+ // all analysis features complete (not per-feature).
411
419
  if (ctx.nativeDb) {
412
420
  try {
413
421
  ctx.nativeDb.exec('PRAGMA wal_checkpoint(TRUNCATE)');
@@ -422,8 +430,11 @@ async function runPostNativeAnalysis(ctx, allFileSymbols, changedFiles) {
422
430
  /* ignore close errors */
423
431
  }
424
432
  ctx.nativeDb = undefined;
425
- if (ctx.engineOpts)
433
+ if (ctx.engineOpts) {
426
434
  ctx.engineOpts.nativeDb = undefined;
435
+ ctx.engineOpts.suspendJsDb = undefined;
436
+ ctx.engineOpts.resumeJsDb = undefined;
437
+ }
427
438
  }
428
439
  return timing;
429
440
  }
@@ -453,6 +464,28 @@ async function tryNativeOrchestrator(ctx) {
453
464
  debug(`Skipping native orchestrator: ${skipReason}`);
454
465
  return undefined;
455
466
  }
467
+ // In native-first mode, nativeDb is already open from setupPipeline.
468
+ // Otherwise, open it on demand (deferred to skip overhead on no-op rebuilds).
469
+ if (!ctx.nativeDb && ctx.nativeAvailable) {
470
+ const native = loadNative();
471
+ if (native?.NativeDatabase) {
472
+ try {
473
+ ctx.nativeDb = native.NativeDatabase.openReadWrite(ctx.dbPath);
474
+ ctx.nativeDb.initSchema();
475
+ ctx.nativeDb.exec('PRAGMA wal_checkpoint(TRUNCATE)');
476
+ }
477
+ catch (err) {
478
+ warn(`NativeDatabase setup failed, falling back to JS: ${toErrorMessage(err)}`);
479
+ try {
480
+ ctx.nativeDb?.close();
481
+ }
482
+ catch (e) {
483
+ debug(`tryNativeOrchestrator: close failed during fallback: ${toErrorMessage(e)}`);
484
+ }
485
+ ctx.nativeDb = undefined;
486
+ }
487
+ }
488
+ }
456
489
  if (!ctx.nativeDb?.buildGraph)
457
490
  return undefined;
458
491
  const resultJson = ctx.nativeDb.buildGraph(ctx.rootDir, JSON.stringify(ctx.config), JSON.stringify(ctx.aliases), JSON.stringify(ctx.opts));
@@ -481,30 +514,42 @@ async function tryNativeOrchestrator(ctx) {
481
514
  });
482
515
  info(`Native build orchestrator completed: ${result.nodeCount ?? 0} nodes, ${result.edgeCount ?? 0} edges, ${result.fileCount ?? 0} files`);
483
516
  // ── Post-native structure + analysis ──────────────────────────────
484
- let analysisTiming = { astMs: 0, complexityMs: 0, cfgMs: 0, dataflowMs: 0 };
517
+ let analysisTiming = {
518
+ astMs: +(p.astMs ?? 0),
519
+ complexityMs: +(p.complexityMs ?? 0),
520
+ cfgMs: +(p.cfgMs ?? 0),
521
+ dataflowMs: +(p.dataflowMs ?? 0),
522
+ };
485
523
  let structurePatchMs = 0;
486
- const needsAnalysis = ctx.opts.ast !== false ||
487
- ctx.opts.complexity !== false ||
488
- ctx.opts.cfg !== false ||
489
- ctx.opts.dataflow !== false;
490
524
  // Skip JS structure when the Rust pipeline's small-incremental fast path
491
525
  // already handled it. For full builds and large incrementals where Rust
492
526
  // skipped structure, we must run the JS fallback.
493
527
  const needsStructure = !result.structureHandled;
494
- if (needsAnalysis || needsStructure) {
495
- if (!handoffWalAfterNativeBuild(ctx)) {
528
+ // When the Rust addon doesn't include analysis persistence (older addon
529
+ // version or analysis failed), fall back to JS-side analysis.
530
+ const needsAnalysisFallback = !result.analysisComplete &&
531
+ (ctx.opts.ast !== false ||
532
+ ctx.opts.complexity !== false ||
533
+ ctx.opts.cfg !== false ||
534
+ ctx.opts.dataflow !== false);
535
+ if (needsStructure || needsAnalysisFallback) {
536
+ // When analysis fallback is needed, handoff to better-sqlite3 — the
537
+ // analysis engine uses the suspend/resume WAL pattern that requires a
538
+ // real better-sqlite3 connection, not the NativeDbProxy.
539
+ if (needsAnalysisFallback && ctx.nativeFirstProxy) {
540
+ closeNativeDb(ctx, 'pre-analysis-fallback');
541
+ ctx.db = openDb(ctx.dbPath);
542
+ ctx.nativeFirstProxy = false;
543
+ }
544
+ else if (!ctx.nativeFirstProxy && !handoffWalAfterNativeBuild(ctx)) {
496
545
  // DB reopen failed — return partial result
497
546
  return formatNativeTimingResult(p, 0, analysisTiming);
498
547
  }
499
- // When structure was handled by Rust, we only need changed files for
500
- // analysis — no need to load the entire graph from DB. When structure
501
- // was NOT handled, we need all files to build the complete directory tree.
502
- const scopeFiles = needsStructure ? undefined : result.changedFiles;
503
- const fileSymbols = reconstructFileSymbolsFromDb(ctx, scopeFiles);
548
+ const fileSymbols = reconstructFileSymbolsFromDb(ctx);
504
549
  if (needsStructure) {
505
550
  structurePatchMs = await runPostNativeStructure(ctx, fileSymbols, !!result.isFullBuild, result.structureScope ?? result.changedFiles);
506
551
  }
507
- if (needsAnalysis) {
552
+ if (needsAnalysisFallback) {
508
553
  analysisTiming = await runPostNativeAnalysis(ctx, fileSymbols, result.changedFiles);
509
554
  }
510
555
  }
@@ -513,24 +558,33 @@ async function tryNativeOrchestrator(ctx) {
513
558
  }
514
559
  // ── Pipeline stages execution ───────────────────────────────────────────
515
560
  async function runPipelineStages(ctx) {
516
- // Prevent dual-connection WAL corruption during pipeline stages: when both
517
- // better-sqlite3 (ctx.db) and rusqlite (ctx.nativeDb) are open to the same
518
- // WAL-mode file, native writes corrupt the DB. Close nativeDb so stages
519
- // use JS fallback paths. Reopened before runAnalyses for feature modules
520
- // that use suspendJsDb/resumeJsDb WAL checkpoint pattern (#696).
521
- const hadNativeDb = !!ctx.nativeDb;
561
+ // ── WASM / fallback dual-connection mode ─────────────────────────────
562
+ // NativeDatabase is deferred not opened during setup. collectFiles and
563
+ // detectChanges only need better-sqlite3. If no files changed, we exit
564
+ // early without ever opening the native connection, saving ~5ms.
565
+ // If nativeDb was opened by tryNativeOrchestrator (which fell through),
566
+ // suspend it now to avoid dual-connection WAL corruption during stages.
522
567
  if (ctx.db && ctx.nativeDb) {
523
568
  suspendNativeDb(ctx, 'pre-collect');
569
+ // When nativeFirstProxy is true, ctx.db is a NativeDbProxy wrapping the
570
+ // now-closed NativeDatabase. Replace it with a real better-sqlite3
571
+ // connection so the JS pipeline stages can operate normally.
572
+ if (ctx.nativeFirstProxy) {
573
+ ctx.db = openDb(ctx.dbPath);
574
+ ctx.nativeFirstProxy = false;
575
+ }
524
576
  }
525
577
  await collectFiles(ctx);
526
578
  await detectChanges(ctx);
527
579
  if (ctx.earlyExit)
528
580
  return;
529
581
  await parseFiles(ctx);
530
- // Temporarily reopen nativeDb for insertNodes it uses the WAL checkpoint
531
- // guard internally (same pattern as feature modules). Closed again before
532
- // resolveImports/buildEdges which don't yet have the guard (#709).
533
- if (hadNativeDb && ctx.engineName === 'native') {
582
+ // For small incremental builds (≤smallFilesThreshold files), skip the nativeDb open/close
583
+ // cycle for insertNodes the WAL checkpoint + connection churn (~5-10ms)
584
+ // exceeds the napi bulk-insert savings on a handful of files. The JS
585
+ // fallback path inside insertNodes handles this case efficiently.
586
+ const smallIncremental = !ctx.isFullBuild && ctx.allSymbols.size <= ctx.config.build.smallFilesThreshold;
587
+ if (ctx.nativeAvailable && ctx.engineName === 'native' && !smallIncremental) {
534
588
  reopenNativeDb(ctx, 'insertNodes');
535
589
  }
536
590
  await insertNodes(ctx);
@@ -542,23 +596,38 @@ async function runPipelineStages(ctx) {
542
596
  await resolveImports(ctx);
543
597
  await buildEdges(ctx);
544
598
  await buildStructure(ctx);
545
- // Reopen nativeDb for feature modules (ast, cfg, complexity, dataflow)
546
- // which use suspendJsDb/resumeJsDb WAL checkpoint before native writes.
547
- if (hadNativeDb) {
599
+ // Reopen nativeDb for feature modules (ast, cfg, complexity, dataflow).
600
+ // Skip for small incremental builds same rationale as insertNodes above.
601
+ //
602
+ // Perf: do ONE upfront FULL checkpoint to flush JS WAL pages so Rust
603
+ // can see the latest rows, then make suspendJsDb/resumeJsDb no-ops.
604
+ // Previously each feature called wal_checkpoint(TRUNCATE) individually
605
+ // (~68ms each × 3-4 features = ~200-270ms overhead on incremental builds).
606
+ if (ctx.nativeAvailable && !smallIncremental) {
548
607
  reopenNativeDb(ctx, 'analyses');
549
608
  if (ctx.nativeDb && ctx.engineOpts) {
609
+ ctx.db.pragma('wal_checkpoint(FULL)');
550
610
  ctx.engineOpts.nativeDb = ctx.nativeDb;
611
+ ctx.engineOpts.suspendJsDb = () => { };
612
+ ctx.engineOpts.resumeJsDb = () => { };
551
613
  }
552
614
  if (!ctx.nativeDb && ctx.engineOpts) {
553
615
  ctx.engineOpts.nativeDb = undefined;
616
+ ctx.engineOpts.suspendJsDb = undefined;
617
+ ctx.engineOpts.resumeJsDb = undefined;
554
618
  }
555
619
  }
556
620
  await runAnalyses(ctx);
557
- // Keep nativeDb open through finalize so persistBuildMetadata, advisory
558
- // checks, and count queries use the native path. closeDbPair inside
559
- // finalize handles both connections. Refresh the JS db so it has a
560
- // valid page cache in case finalize falls back to JS paths (#751).
621
+ // Flush Rust WAL writes (AST, complexity, CFG, dataflow) so the JS
622
+ // connection and any post-build readers can see them. One TRUNCATE
623
+ // here replaces the N per-feature resumeJsDb checkpoints (#checkpoint-opt).
561
624
  if (ctx.nativeDb) {
625
+ try {
626
+ ctx.nativeDb.exec('PRAGMA wal_checkpoint(TRUNCATE)');
627
+ }
628
+ catch (e) {
629
+ debug(`post-analyses WAL checkpoint failed: ${toErrorMessage(e)}`);
630
+ }
562
631
  refreshJsDb(ctx);
563
632
  }
564
633
  await finalize(ctx);
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../../../src/domain/graph/builder/pipeline.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../../../src/domain/graph/builder/pipeline.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"build-edges.d.ts","sourceRoot":"","sources":["../../../../../src/domain/graph/builder/stages/build-edges.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAguBrD,wBAAsB,UAAU,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CA0FpE"}
1
+ {"version":3,"file":"build-edges.d.ts","sourceRoot":"","sources":["../../../../../src/domain/graph/builder/stages/build-edges.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AA6uBrD,wBAAsB,UAAU,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CA0FpE"}
@@ -208,7 +208,7 @@ function buildCallEdgesNative(ctx, getNodeIdStmt, allEdgeRows, allNodes, native)
208
208
  if (!fileNodeRow)
209
209
  continue;
210
210
  const importedNames = buildImportedNamesForNative(ctx, relPath, symbols, rootDir);
211
- const typeMap = symbols.typeMap instanceof Map
211
+ const typeMapRaw = symbols.typeMap instanceof Map
212
212
  ? [...symbols.typeMap.entries()].map(([name, entry]) => ({
213
213
  name,
214
214
  typeName: typeof entry === 'string' ? entry : entry.type,
@@ -217,6 +217,19 @@ function buildCallEdgesNative(ctx, getNodeIdStmt, allEdgeRows, allNodes, native)
217
217
  : Array.isArray(symbols.typeMap)
218
218
  ? symbols.typeMap
219
219
  : [];
220
+ // Deduplicate: keep highest-confidence entry per name (first-wins on tie),
221
+ // matching JS setTypeMapEntry semantics. The Map branch is already
222
+ // deduped by setTypeMapEntry — this loop is only needed for the Array
223
+ // branch (pre-rebuilt native addon) but runs unconditionally as
224
+ // belt-and-suspenders since it's a cheap O(n) pass.
225
+ const typeMapDedup = new Map();
226
+ for (const entry of typeMapRaw) {
227
+ const existing = typeMapDedup.get(entry.name);
228
+ if (!existing || entry.confidence > existing.confidence) {
229
+ typeMapDedup.set(entry.name, entry);
230
+ }
231
+ }
232
+ const typeMap = [...typeMapDedup.values()];
220
233
  nativeFiles.push({
221
234
  file: relPath,
222
235
  fileNodeId: fileNodeRow.id,
@@ -461,7 +474,7 @@ function loadNodes(ctx) {
461
474
  const { db, fileSymbols, isFullBuild, batchResolved } = ctx;
462
475
  const nodeKindFilter = `kind IN ('function','method','class','interface','struct','type','module','enum','trait','record','constant')`;
463
476
  // Gate: only scope for small incremental on large codebases
464
- if (!isFullBuild && fileSymbols.size <= 5) {
477
+ if (!isFullBuild && fileSymbols.size <= ctx.config.build.smallFilesThreshold) {
465
478
  const existingFileCount = db.prepare("SELECT COUNT(*) as c FROM nodes WHERE kind = 'file'").get().c;
466
479
  if (existingFileCount > 20) {
467
480
  // Collect relevant files: changed files + their import targets