@optave/codegraph 3.10.0 → 3.11.1

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 (312) hide show
  1. package/README.md +40 -33
  2. package/dist/ast-analysis/engine.d.ts.map +1 -1
  3. package/dist/ast-analysis/engine.js +91 -60
  4. package/dist/ast-analysis/engine.js.map +1 -1
  5. package/dist/ast-analysis/rules/index.d.ts.map +1 -1
  6. package/dist/ast-analysis/rules/index.js +77 -0
  7. package/dist/ast-analysis/rules/index.js.map +1 -1
  8. package/dist/ast-analysis/visitor-utils.d.ts +3 -0
  9. package/dist/ast-analysis/visitor-utils.d.ts.map +1 -1
  10. package/dist/ast-analysis/visitor-utils.js +83 -49
  11. package/dist/ast-analysis/visitor-utils.js.map +1 -1
  12. package/dist/ast-analysis/visitors/ast-store-visitor.d.ts.map +1 -1
  13. package/dist/ast-analysis/visitors/ast-store-visitor.js +78 -62
  14. package/dist/ast-analysis/visitors/ast-store-visitor.js.map +1 -1
  15. package/dist/ast-analysis/visitors/dataflow-visitor.d.ts.map +1 -1
  16. package/dist/ast-analysis/visitors/dataflow-visitor.js +61 -42
  17. package/dist/ast-analysis/visitors/dataflow-visitor.js.map +1 -1
  18. package/dist/cli/commands/audit.js +1 -1
  19. package/dist/cli/commands/audit.js.map +1 -1
  20. package/dist/cli/commands/build.d.ts.map +1 -1
  21. package/dist/cli/commands/build.js +2 -0
  22. package/dist/cli/commands/build.js.map +1 -1
  23. package/dist/cli/commands/check.js +1 -1
  24. package/dist/cli/commands/check.js.map +1 -1
  25. package/dist/cli/commands/children.js +1 -1
  26. package/dist/cli/commands/children.js.map +1 -1
  27. package/dist/cli/commands/diff-impact.js +1 -1
  28. package/dist/cli/commands/diff-impact.js.map +1 -1
  29. package/dist/cli/commands/embed.d.ts.map +1 -1
  30. package/dist/cli/commands/embed.js +49 -4
  31. package/dist/cli/commands/embed.js.map +1 -1
  32. package/dist/cli/commands/roles.js +1 -1
  33. package/dist/cli/commands/roles.js.map +1 -1
  34. package/dist/cli/commands/structure.js +1 -1
  35. package/dist/cli/commands/structure.js.map +1 -1
  36. package/dist/cli/shared/options.js +1 -1
  37. package/dist/cli/shared/options.js.map +1 -1
  38. package/dist/db/connection.d.ts.map +1 -1
  39. package/dist/db/connection.js +8 -0
  40. package/dist/db/connection.js.map +1 -1
  41. package/dist/domain/analysis/dependencies.d.ts.map +1 -1
  42. package/dist/domain/analysis/dependencies.js +106 -80
  43. package/dist/domain/analysis/dependencies.js.map +1 -1
  44. package/dist/domain/analysis/fn-impact.d.ts.map +1 -1
  45. package/dist/domain/analysis/fn-impact.js +77 -52
  46. package/dist/domain/analysis/fn-impact.js.map +1 -1
  47. package/dist/domain/analysis/module-map.d.ts.map +1 -1
  48. package/dist/domain/analysis/module-map.js +132 -121
  49. package/dist/domain/analysis/module-map.js.map +1 -1
  50. package/dist/domain/graph/builder/helpers.d.ts +4 -4
  51. package/dist/domain/graph/builder/helpers.d.ts.map +1 -1
  52. package/dist/domain/graph/builder/helpers.js +47 -33
  53. package/dist/domain/graph/builder/helpers.js.map +1 -1
  54. package/dist/domain/graph/builder/incremental.d.ts +6 -6
  55. package/dist/domain/graph/builder/incremental.d.ts.map +1 -1
  56. package/dist/domain/graph/builder/incremental.js +148 -99
  57. package/dist/domain/graph/builder/incremental.js.map +1 -1
  58. package/dist/domain/graph/builder/pipeline.d.ts +1 -0
  59. package/dist/domain/graph/builder/pipeline.d.ts.map +1 -1
  60. package/dist/domain/graph/builder/pipeline.js +23 -637
  61. package/dist/domain/graph/builder/pipeline.js.map +1 -1
  62. package/dist/domain/graph/builder/stages/build-edges.d.ts.map +1 -1
  63. package/dist/domain/graph/builder/stages/build-edges.js +141 -98
  64. package/dist/domain/graph/builder/stages/build-edges.js.map +1 -1
  65. package/dist/domain/graph/builder/stages/build-structure.d.ts.map +1 -1
  66. package/dist/domain/graph/builder/stages/build-structure.js +82 -65
  67. package/dist/domain/graph/builder/stages/build-structure.js.map +1 -1
  68. package/dist/domain/graph/builder/stages/detect-changes.d.ts.map +1 -1
  69. package/dist/domain/graph/builder/stages/detect-changes.js +84 -56
  70. package/dist/domain/graph/builder/stages/detect-changes.js.map +1 -1
  71. package/dist/domain/graph/builder/stages/finalize.d.ts.map +1 -1
  72. package/dist/domain/graph/builder/stages/finalize.js +60 -51
  73. package/dist/domain/graph/builder/stages/finalize.js.map +1 -1
  74. package/dist/domain/graph/builder/stages/insert-nodes.d.ts +8 -6
  75. package/dist/domain/graph/builder/stages/insert-nodes.d.ts.map +1 -1
  76. package/dist/domain/graph/builder/stages/insert-nodes.js +107 -122
  77. package/dist/domain/graph/builder/stages/insert-nodes.js.map +1 -1
  78. package/dist/domain/graph/builder/stages/native-db-lifecycle.d.ts +14 -0
  79. package/dist/domain/graph/builder/stages/native-db-lifecycle.d.ts.map +1 -0
  80. package/dist/domain/graph/builder/stages/native-db-lifecycle.js +77 -0
  81. package/dist/domain/graph/builder/stages/native-db-lifecycle.js.map +1 -0
  82. package/dist/domain/graph/builder/stages/native-orchestrator.d.ts +62 -0
  83. package/dist/domain/graph/builder/stages/native-orchestrator.d.ts.map +1 -0
  84. package/dist/domain/graph/builder/stages/native-orchestrator.js +747 -0
  85. package/dist/domain/graph/builder/stages/native-orchestrator.js.map +1 -0
  86. package/dist/domain/graph/builder/stages/resolve-imports.d.ts.map +1 -1
  87. package/dist/domain/graph/builder/stages/resolve-imports.js +73 -22
  88. package/dist/domain/graph/builder/stages/resolve-imports.js.map +1 -1
  89. package/dist/domain/graph/cycles.d.ts +6 -4
  90. package/dist/domain/graph/cycles.d.ts.map +1 -1
  91. package/dist/domain/graph/cycles.js +50 -55
  92. package/dist/domain/graph/cycles.js.map +1 -1
  93. package/dist/domain/graph/journal.d.ts.map +1 -1
  94. package/dist/domain/graph/journal.js +89 -70
  95. package/dist/domain/graph/journal.js.map +1 -1
  96. package/dist/domain/graph/watcher.d.ts.map +1 -1
  97. package/dist/domain/graph/watcher.js +28 -20
  98. package/dist/domain/graph/watcher.js.map +1 -1
  99. package/dist/domain/parser.d.ts +12 -23
  100. package/dist/domain/parser.d.ts.map +1 -1
  101. package/dist/domain/parser.js +153 -80
  102. package/dist/domain/parser.js.map +1 -1
  103. package/dist/domain/search/generator.d.ts +3 -1
  104. package/dist/domain/search/generator.d.ts.map +1 -1
  105. package/dist/domain/search/generator.js +68 -45
  106. package/dist/domain/search/generator.js.map +1 -1
  107. package/dist/domain/search/models.d.ts +18 -0
  108. package/dist/domain/search/models.d.ts.map +1 -1
  109. package/dist/domain/search/models.js +72 -4
  110. package/dist/domain/search/models.js.map +1 -1
  111. package/dist/domain/search/search/hybrid.d.ts.map +1 -1
  112. package/dist/domain/search/search/hybrid.js +49 -40
  113. package/dist/domain/search/search/hybrid.js.map +1 -1
  114. package/dist/domain/search/search/semantic.d.ts.map +1 -1
  115. package/dist/domain/search/search/semantic.js +69 -49
  116. package/dist/domain/search/search/semantic.js.map +1 -1
  117. package/dist/domain/wasm-worker-entry.js +209 -137
  118. package/dist/domain/wasm-worker-entry.js.map +1 -1
  119. package/dist/extractors/c.js +25 -6
  120. package/dist/extractors/c.js.map +1 -1
  121. package/dist/extractors/cpp.js +47 -6
  122. package/dist/extractors/cpp.js.map +1 -1
  123. package/dist/extractors/cuda.js +90 -14
  124. package/dist/extractors/cuda.js.map +1 -1
  125. package/dist/extractors/elixir.js +108 -4
  126. package/dist/extractors/elixir.js.map +1 -1
  127. package/dist/extractors/erlang.js +56 -20
  128. package/dist/extractors/erlang.js.map +1 -1
  129. package/dist/extractors/fsharp.d.ts +7 -0
  130. package/dist/extractors/fsharp.d.ts.map +1 -1
  131. package/dist/extractors/fsharp.js +94 -0
  132. package/dist/extractors/fsharp.js.map +1 -1
  133. package/dist/extractors/gleam.d.ts.map +1 -1
  134. package/dist/extractors/gleam.js +29 -33
  135. package/dist/extractors/gleam.js.map +1 -1
  136. package/dist/extractors/groovy.js +41 -1
  137. package/dist/extractors/groovy.js.map +1 -1
  138. package/dist/extractors/haskell.js +48 -4
  139. package/dist/extractors/haskell.js.map +1 -1
  140. package/dist/extractors/helpers.d.ts +79 -1
  141. package/dist/extractors/helpers.d.ts.map +1 -1
  142. package/dist/extractors/helpers.js +137 -0
  143. package/dist/extractors/helpers.js.map +1 -1
  144. package/dist/extractors/java.d.ts.map +1 -1
  145. package/dist/extractors/java.js +37 -49
  146. package/dist/extractors/java.js.map +1 -1
  147. package/dist/extractors/javascript.d.ts.map +1 -1
  148. package/dist/extractors/javascript.js +44 -44
  149. package/dist/extractors/javascript.js.map +1 -1
  150. package/dist/extractors/julia.js +198 -74
  151. package/dist/extractors/julia.js.map +1 -1
  152. package/dist/extractors/kotlin.js +4 -0
  153. package/dist/extractors/kotlin.js.map +1 -1
  154. package/dist/extractors/objc.js +184 -47
  155. package/dist/extractors/objc.js.map +1 -1
  156. package/dist/extractors/python.js +7 -4
  157. package/dist/extractors/python.js.map +1 -1
  158. package/dist/extractors/r.d.ts.map +1 -1
  159. package/dist/extractors/r.js +103 -87
  160. package/dist/extractors/r.js.map +1 -1
  161. package/dist/extractors/scala.d.ts.map +1 -1
  162. package/dist/extractors/scala.js +18 -32
  163. package/dist/extractors/scala.js.map +1 -1
  164. package/dist/extractors/solidity.d.ts.map +1 -1
  165. package/dist/extractors/solidity.js +55 -69
  166. package/dist/extractors/solidity.js.map +1 -1
  167. package/dist/extractors/verilog.js +80 -15
  168. package/dist/extractors/verilog.js.map +1 -1
  169. package/dist/features/boundaries.d.ts.map +1 -1
  170. package/dist/features/boundaries.js +49 -39
  171. package/dist/features/boundaries.js.map +1 -1
  172. package/dist/features/cfg.d.ts.map +1 -1
  173. package/dist/features/cfg.js +90 -63
  174. package/dist/features/cfg.js.map +1 -1
  175. package/dist/features/check.d.ts.map +1 -1
  176. package/dist/features/check.js +43 -34
  177. package/dist/features/check.js.map +1 -1
  178. package/dist/features/cochange.d.ts.map +1 -1
  179. package/dist/features/cochange.js +68 -56
  180. package/dist/features/cochange.js.map +1 -1
  181. package/dist/features/complexity.d.ts.map +1 -1
  182. package/dist/features/complexity.js +105 -75
  183. package/dist/features/complexity.js.map +1 -1
  184. package/dist/features/dataflow.d.ts.map +1 -1
  185. package/dist/features/dataflow.js +37 -29
  186. package/dist/features/dataflow.js.map +1 -1
  187. package/dist/features/flow.d.ts.map +1 -1
  188. package/dist/features/flow.js +31 -22
  189. package/dist/features/flow.js.map +1 -1
  190. package/dist/features/graph-enrichment.d.ts.map +1 -1
  191. package/dist/features/graph-enrichment.js +77 -70
  192. package/dist/features/graph-enrichment.js.map +1 -1
  193. package/dist/features/owners.d.ts +17 -26
  194. package/dist/features/owners.d.ts.map +1 -1
  195. package/dist/features/owners.js +120 -109
  196. package/dist/features/owners.js.map +1 -1
  197. package/dist/features/sequence.d.ts.map +1 -1
  198. package/dist/features/sequence.js +59 -54
  199. package/dist/features/sequence.js.map +1 -1
  200. package/dist/features/structure-query.d.ts.map +1 -1
  201. package/dist/features/structure-query.js +60 -60
  202. package/dist/features/structure-query.js.map +1 -1
  203. package/dist/features/structure.js +28 -36
  204. package/dist/features/structure.js.map +1 -1
  205. package/dist/graph/algorithms/leiden/optimiser.d.ts.map +1 -1
  206. package/dist/graph/algorithms/leiden/optimiser.js +100 -69
  207. package/dist/graph/algorithms/leiden/optimiser.js.map +1 -1
  208. package/dist/graph/classifiers/roles.d.ts.map +1 -1
  209. package/dist/graph/classifiers/roles.js +63 -59
  210. package/dist/graph/classifiers/roles.js.map +1 -1
  211. package/dist/infrastructure/config.d.ts +1 -1
  212. package/dist/infrastructure/config.d.ts.map +1 -1
  213. package/dist/infrastructure/config.js +1 -1
  214. package/dist/infrastructure/config.js.map +1 -1
  215. package/dist/mcp/tool-registry.d.ts.map +1 -1
  216. package/dist/mcp/tool-registry.js +4 -0
  217. package/dist/mcp/tool-registry.js.map +1 -1
  218. package/dist/mcp/tools/semantic-search.d.ts +1 -0
  219. package/dist/mcp/tools/semantic-search.d.ts.map +1 -1
  220. package/dist/mcp/tools/semantic-search.js +1 -0
  221. package/dist/mcp/tools/semantic-search.js.map +1 -1
  222. package/dist/presentation/cfg.d.ts.map +1 -1
  223. package/dist/presentation/cfg.js +44 -29
  224. package/dist/presentation/cfg.js.map +1 -1
  225. package/dist/presentation/flow.d.ts.map +1 -1
  226. package/dist/presentation/flow.js +58 -38
  227. package/dist/presentation/flow.js.map +1 -1
  228. package/dist/types.d.ts +16 -2
  229. package/dist/types.d.ts.map +1 -1
  230. package/grammars/tree-sitter-erlang.wasm +0 -0
  231. package/grammars/tree-sitter-fsharp.wasm +0 -0
  232. package/grammars/tree-sitter-fsharp_signature.wasm +0 -0
  233. package/grammars/tree-sitter-gleam.wasm +0 -0
  234. package/package.json +10 -10
  235. package/src/ast-analysis/engine.ts +145 -61
  236. package/src/ast-analysis/rules/index.ts +87 -0
  237. package/src/ast-analysis/visitor-utils.ts +86 -46
  238. package/src/ast-analysis/visitors/ast-store-visitor.ts +104 -69
  239. package/src/ast-analysis/visitors/dataflow-visitor.ts +86 -47
  240. package/src/cli/commands/audit.ts +1 -1
  241. package/src/cli/commands/build.ts +2 -0
  242. package/src/cli/commands/check.ts +1 -1
  243. package/src/cli/commands/children.ts +1 -1
  244. package/src/cli/commands/diff-impact.ts +1 -1
  245. package/src/cli/commands/embed.ts +54 -4
  246. package/src/cli/commands/roles.ts +1 -1
  247. package/src/cli/commands/structure.ts +1 -1
  248. package/src/cli/shared/options.ts +1 -1
  249. package/src/db/connection.ts +8 -0
  250. package/src/domain/analysis/dependencies.ts +166 -85
  251. package/src/domain/analysis/fn-impact.ts +120 -50
  252. package/src/domain/analysis/module-map.ts +175 -140
  253. package/src/domain/graph/builder/helpers.ts +85 -76
  254. package/src/domain/graph/builder/incremental.ts +223 -131
  255. package/src/domain/graph/builder/pipeline.ts +32 -785
  256. package/src/domain/graph/builder/stages/build-edges.ts +207 -142
  257. package/src/domain/graph/builder/stages/build-structure.ts +115 -82
  258. package/src/domain/graph/builder/stages/detect-changes.ts +107 -64
  259. package/src/domain/graph/builder/stages/finalize.ts +72 -70
  260. package/src/domain/graph/builder/stages/insert-nodes.ts +154 -120
  261. package/src/domain/graph/builder/stages/native-db-lifecycle.ts +74 -0
  262. package/src/domain/graph/builder/stages/native-orchestrator.ts +942 -0
  263. package/src/domain/graph/builder/stages/resolve-imports.ts +79 -25
  264. package/src/domain/graph/cycles.ts +51 -49
  265. package/src/domain/graph/journal.ts +84 -69
  266. package/src/domain/graph/watcher.ts +29 -25
  267. package/src/domain/parser.ts +170 -67
  268. package/src/domain/search/generator.ts +132 -74
  269. package/src/domain/search/models.ts +75 -4
  270. package/src/domain/search/search/hybrid.ts +53 -42
  271. package/src/domain/search/search/semantic.ts +105 -65
  272. package/src/domain/wasm-worker-entry.ts +243 -153
  273. package/src/extractors/c.ts +27 -8
  274. package/src/extractors/cpp.ts +50 -8
  275. package/src/extractors/cuda.ts +90 -16
  276. package/src/extractors/elixir.ts +103 -4
  277. package/src/extractors/erlang.ts +63 -20
  278. package/src/extractors/fsharp.ts +104 -0
  279. package/src/extractors/gleam.ts +40 -39
  280. package/src/extractors/groovy.ts +45 -1
  281. package/src/extractors/haskell.ts +45 -4
  282. package/src/extractors/helpers.ts +205 -1
  283. package/src/extractors/java.ts +42 -45
  284. package/src/extractors/javascript.ts +44 -43
  285. package/src/extractors/julia.ts +191 -77
  286. package/src/extractors/kotlin.ts +4 -0
  287. package/src/extractors/objc.ts +171 -47
  288. package/src/extractors/python.ts +5 -3
  289. package/src/extractors/r.ts +104 -82
  290. package/src/extractors/scala.ts +24 -36
  291. package/src/extractors/solidity.ts +59 -78
  292. package/src/extractors/verilog.ts +83 -15
  293. package/src/features/boundaries.ts +64 -46
  294. package/src/features/cfg.ts +145 -74
  295. package/src/features/check.ts +60 -43
  296. package/src/features/cochange.ts +95 -72
  297. package/src/features/complexity.ts +134 -79
  298. package/src/features/dataflow.ts +57 -34
  299. package/src/features/flow.ts +48 -24
  300. package/src/features/graph-enrichment.ts +105 -70
  301. package/src/features/owners.ts +186 -146
  302. package/src/features/sequence.ts +99 -69
  303. package/src/features/structure-query.ts +94 -79
  304. package/src/features/structure.ts +56 -56
  305. package/src/graph/algorithms/leiden/optimiser.ts +142 -87
  306. package/src/graph/classifiers/roles.ts +64 -54
  307. package/src/infrastructure/config.ts +1 -1
  308. package/src/mcp/tool-registry.ts +5 -0
  309. package/src/mcp/tools/semantic-search.ts +2 -0
  310. package/src/presentation/cfg.ts +48 -32
  311. package/src/presentation/flow.ts +100 -52
  312. package/src/types.ts +16 -1
@@ -116,61 +116,56 @@ function persistBuildMetadata(ctx, nodeCount, actualEdgeCount, buildNow) {
116
116
  warn(`Failed to write build metadata: ${err.message}`);
117
117
  }
118
118
  }
119
- /**
120
- * Run advisory checks on full builds: orphaned embeddings, stale embeddings,
121
- * and unused exports. Informational only does not affect correctness.
122
- */
123
- function runAdvisoryChecks(ctx, hasEmbeddings, buildNow) {
124
- // Batched native path: single napi call for all 3 advisory checks
125
- if (ctx.engineName === 'native' && ctx.nativeDb?.runAdvisoryChecks) {
126
- const result = ctx.nativeDb.runAdvisoryChecks(hasEmbeddings);
127
- if (result.orphanedEmbeddings > 0) {
128
- warn(`${result.orphanedEmbeddings} embeddings are orphaned (nodes changed). Run "codegraph embed" to refresh.`);
129
- }
130
- if (result.embedBuiltAt) {
131
- const embedTime = new Date(result.embedBuiltAt).getTime();
132
- if (!Number.isNaN(embedTime) && embedTime < buildNow.getTime()) {
133
- warn('Embeddings were built before the last graph rebuild. Run "codegraph embed" to update.');
134
- }
135
- }
136
- if (result.unusedExports > 0) {
137
- warn(`${result.unusedExports} exported symbol${result.unusedExports > 1 ? 's have' : ' has'} zero cross-file consumers. Run "codegraph exports <file> --unused" to inspect.`);
138
- }
139
- return;
119
+ /** Format the "X exports have zero consumers" warning, with correct plural agreement. */
120
+ function unusedExportsMessage(count) {
121
+ return `${count} exported symbol${count > 1 ? 's have' : ' has'} zero cross-file consumers. Run "codegraph exports <file> --unused" to inspect.`;
122
+ }
123
+ /** Run all three advisory checks via the batched native FFI. */
124
+ function runAdvisoryChecksNative(ctx, hasEmbeddings, buildNow) {
125
+ const result = ctx.nativeDb.runAdvisoryChecks(hasEmbeddings);
126
+ if (result.orphanedEmbeddings > 0) {
127
+ warn(`${result.orphanedEmbeddings} embeddings are orphaned (nodes changed). Run "codegraph embed" to refresh.`);
140
128
  }
141
- const { db } = ctx;
142
- // Orphaned embeddings warning
143
- if (hasEmbeddings) {
144
- try {
145
- const orphaned = db
146
- .prepare('SELECT COUNT(*) as c FROM embeddings WHERE node_id NOT IN (SELECT id FROM nodes)')
147
- .get().c;
148
- if (orphaned > 0) {
149
- warn(`${orphaned} embeddings are orphaned (nodes changed). Run "codegraph embed" to refresh.`);
150
- }
151
- }
152
- catch {
153
- /* ignore - embeddings table may have been dropped */
129
+ if (result.embedBuiltAt) {
130
+ const embedTime = new Date(result.embedBuiltAt).getTime();
131
+ if (!Number.isNaN(embedTime) && embedTime < buildNow.getTime()) {
132
+ warn('Embeddings were built before the last graph rebuild. Run "codegraph embed" to update.');
154
133
  }
155
134
  }
156
- // Stale embeddings warning (built before current graph rebuild)
157
- if (hasEmbeddings) {
158
- try {
159
- const embedBuiltAt = db.prepare("SELECT value FROM embedding_meta WHERE key = 'built_at'").get()?.value;
160
- if (embedBuiltAt) {
161
- const embedTime = new Date(embedBuiltAt).getTime();
162
- if (!Number.isNaN(embedTime) && embedTime < buildNow.getTime()) {
163
- warn('Embeddings were built before the last graph rebuild. Run "codegraph embed" to update.');
164
- }
165
- }
135
+ if (result.unusedExports > 0) {
136
+ warn(unusedExportsMessage(result.unusedExports));
137
+ }
138
+ }
139
+ function checkOrphanedEmbeddings(ctx) {
140
+ try {
141
+ const orphaned = ctx.db
142
+ .prepare('SELECT COUNT(*) as c FROM embeddings WHERE node_id NOT IN (SELECT id FROM nodes)')
143
+ .get().c;
144
+ if (orphaned > 0) {
145
+ warn(`${orphaned} embeddings are orphaned (nodes changed). Run "codegraph embed" to refresh.`);
166
146
  }
167
- catch {
168
- /* ignore - embedding_meta table may not exist */
147
+ }
148
+ catch {
149
+ /* ignore - embeddings table may have been dropped */
150
+ }
151
+ }
152
+ function checkStaleEmbeddings(ctx, buildNow) {
153
+ try {
154
+ const embedBuiltAt = ctx.db.prepare("SELECT value FROM embedding_meta WHERE key = 'built_at'").get()?.value;
155
+ if (!embedBuiltAt)
156
+ return;
157
+ const embedTime = new Date(embedBuiltAt).getTime();
158
+ if (!Number.isNaN(embedTime) && embedTime < buildNow.getTime()) {
159
+ warn('Embeddings were built before the last graph rebuild. Run "codegraph embed" to update.');
169
160
  }
170
161
  }
171
- // Unused exports warning
162
+ catch {
163
+ /* ignore - embedding_meta table may not exist */
164
+ }
165
+ }
166
+ function checkUnusedExports(ctx) {
172
167
  try {
173
- const unusedCount = db
168
+ const unusedCount = ctx.db
174
169
  .prepare(`SELECT COUNT(*) as c FROM nodes
175
170
  WHERE exported = 1 AND kind != 'file'
176
171
  AND id NOT IN (
@@ -180,14 +175,28 @@ function runAdvisoryChecks(ctx, hasEmbeddings, buildNow) {
180
175
  WHERE e.kind = 'calls' AND caller.file != target.file
181
176
  )`)
182
177
  .get().c;
183
- if (unusedCount > 0) {
184
- warn(`${unusedCount} exported symbol${unusedCount > 1 ? 's have' : ' has'} zero cross-file consumers. Run "codegraph exports <file> --unused" to inspect.`);
185
- }
178
+ if (unusedCount > 0)
179
+ warn(unusedExportsMessage(unusedCount));
186
180
  }
187
181
  catch {
188
182
  /* exported column may not exist on older DBs */
189
183
  }
190
184
  }
185
+ /**
186
+ * Run advisory checks on full builds: orphaned embeddings, stale embeddings,
187
+ * and unused exports. Informational only — does not affect correctness.
188
+ */
189
+ function runAdvisoryChecks(ctx, hasEmbeddings, buildNow) {
190
+ if (ctx.engineName === 'native' && ctx.nativeDb?.runAdvisoryChecks) {
191
+ runAdvisoryChecksNative(ctx, hasEmbeddings, buildNow);
192
+ return;
193
+ }
194
+ if (hasEmbeddings) {
195
+ checkOrphanedEmbeddings(ctx);
196
+ checkStaleEmbeddings(ctx, buildNow);
197
+ }
198
+ checkUnusedExports(ctx);
199
+ }
191
200
  export async function finalize(ctx) {
192
201
  const { allSymbols, rootDir, isFullBuild, hasEmbeddings, opts } = ctx;
193
202
  const t0 = performance.now();
@@ -1 +1 @@
1
- {"version":3,"file":"finalize.js","sourceRoot":"","sources":["../../../../../src/domain/graph/builder/stages/finalize.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"finalize.js","sourceRoot":"","sources":["../../../../../src/domain/graph/builder/stages/finalize.ts"],"names":[],"mappings":"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"}
@@ -12,6 +12,13 @@ interface PrecomputedFileData {
12
12
  } | null;
13
13
  _reverseDepOnly?: boolean;
14
14
  }
15
+ /** A single file_hashes row. */
16
+ interface FileHashRecord {
17
+ file: string;
18
+ hash: string;
19
+ mtime: number;
20
+ size: number;
21
+ }
15
22
  /**
16
23
  * Build file hash entries for every collected file, including those that
17
24
  * produced zero symbols (empty files, parsers that silently no-op'd, or
@@ -22,12 +29,7 @@ interface PrecomputedFileData {
22
29
  *
23
30
  * Exported for unit testing.
24
31
  */
25
- export declare function buildFileHashes(filesToParse: FileToParse[], precomputedData: Map<string, PrecomputedFileData>, metadataUpdates: MetadataUpdate[], rootDir: string): Array<{
26
- file: string;
27
- hash: string;
28
- mtime: number;
29
- size: number;
30
- }>;
32
+ export declare function buildFileHashes(filesToParse: FileToParse[], precomputedData: Map<string, PrecomputedFileData>, metadataUpdates: MetadataUpdate[], rootDir: string): FileHashRecord[];
31
33
  export declare function insertNodes(ctx: PipelineContext): Promise<void>;
32
34
  export {};
33
35
  //# sourceMappingURL=insert-nodes.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"insert-nodes.d.ts","sourceRoot":"","sources":["../../../../../src/domain/graph/builder/stages/insert-nodes.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAGV,WAAW,EACX,cAAc,EAEf,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AASrD,yEAAyE;AACzE,UAAU,mBAAmB;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAC9C,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAsDD;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAC7B,YAAY,EAAE,WAAW,EAAE,EAC3B,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,EACjD,eAAe,EAAE,cAAc,EAAE,EACjC,OAAO,EAAE,MAAM,GACd,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAmDpE;AA+OD,wBAAsB,WAAW,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAuDrE"}
1
+ {"version":3,"file":"insert-nodes.d.ts","sourceRoot":"","sources":["../../../../../src/domain/graph/builder/stages/insert-nodes.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAGV,WAAW,EACX,cAAc,EAEf,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AASrD,yEAAyE;AACzE,UAAU,mBAAmB;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAC9C,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAsDD,gCAAgC;AAChC,UAAU,cAAc;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd;AAuFD;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAC7B,YAAY,EAAE,WAAW,EAAE,EAC3B,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,EACjD,eAAe,EAAE,cAAc,EAAE,EACjC,OAAO,EAAE,MAAM,GACd,cAAc,EAAE,CAUlB;AA6ND,wBAAsB,WAAW,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAuDrE"}
@@ -44,18 +44,51 @@ function marshalSymbolBatches(allSymbols) {
44
44
  }
45
45
  return batches;
46
46
  }
47
+ /** Resolve the (hash, mtime, size) tuple for a relPath, reading from disk if needed. */
48
+ function resolveHashFromPrecomputed(relPath, precomputed, rootDir, caller) {
49
+ if (precomputed.hash) {
50
+ let mtime;
51
+ let size;
52
+ if (precomputed.stat) {
53
+ mtime = precomputed.stat.mtime;
54
+ size = precomputed.stat.size;
55
+ }
56
+ else {
57
+ const rawStat = fileStat(path.join(rootDir, relPath));
58
+ mtime = rawStat ? rawStat.mtime : 0;
59
+ size = rawStat ? rawStat.size : 0;
60
+ }
61
+ return { file: relPath, hash: precomputed.hash, mtime, size };
62
+ }
63
+ const absPath = path.join(rootDir, relPath);
64
+ let code;
65
+ try {
66
+ code = readFileSafe(absPath);
67
+ }
68
+ catch (e) {
69
+ debug(`${caller}: readFileSafe failed for ${relPath}: ${toErrorMessage(e)}`);
70
+ code = null;
71
+ }
72
+ if (code === null)
73
+ return null;
74
+ const stat = fileStat(absPath);
75
+ return {
76
+ file: relPath,
77
+ hash: fileHash(code),
78
+ mtime: stat ? stat.mtime : 0,
79
+ size: stat ? stat.size : 0,
80
+ };
81
+ }
47
82
  /**
48
- * Build file hash entries for every collected file, including those that
49
- * produced zero symbols (empty files, parsers that silently no-op'd, or
50
- * optional-language extensions whose grammar wasn't installed). Iterating the
51
- * symbol map instead would skip such files and leave them missing from
52
- * `file_hashes`, which permanently breaks the JS-side fast-skip pre-flight on
53
- * any subsequent no-op rebuild (#1068).
83
+ * Walk every collected file once and yield a `FileHashRecord` for it, plus one
84
+ * record per metadata-only update. Shared by `buildFileHashes` (native path)
85
+ * and `updateFileHashes` (JS fallback) so the iteration and hash-resolution
86
+ * logic stays in one place.
54
87
  *
55
- * Exported for unit testing.
88
+ * Files marked `_reverseDepOnly` are skipped — their hashes are already
89
+ * correct in the DB.
56
90
  */
57
- export function buildFileHashes(filesToParse, precomputedData, metadataUpdates, rootDir) {
58
- const fileHashes = [];
91
+ function* iterFileHashRecords(filesToParse, precomputedData, metadataUpdates, rootDir, caller) {
59
92
  const seen = new Set();
60
93
  for (const item of filesToParse) {
61
94
  const relPath = item.relPath ?? normalizePath(path.relative(rootDir, item.file));
@@ -63,48 +96,36 @@ export function buildFileHashes(filesToParse, precomputedData, metadataUpdates,
63
96
  continue;
64
97
  seen.add(relPath);
65
98
  const precomputed = precomputedData.get(relPath);
66
- if (precomputed?._reverseDepOnly) {
67
- continue; // file unchanged, hash already correct
68
- }
69
- if (precomputed?.hash) {
70
- let mtime;
71
- let size;
72
- if (precomputed.stat) {
73
- mtime = precomputed.stat.mtime;
74
- size = precomputed.stat.size;
75
- }
76
- else {
77
- const rawStat = fileStat(path.join(rootDir, relPath));
78
- mtime = rawStat ? rawStat.mtime : 0;
79
- size = rawStat ? rawStat.size : 0;
80
- }
81
- fileHashes.push({ file: relPath, hash: precomputed.hash, mtime, size });
82
- }
83
- else {
84
- const absPath = path.join(rootDir, relPath);
85
- let code;
86
- try {
87
- code = readFileSafe(absPath);
88
- }
89
- catch (e) {
90
- debug(`buildFileHashes: readFileSafe failed for ${relPath}: ${toErrorMessage(e)}`);
91
- code = null;
92
- }
93
- if (code !== null) {
94
- const stat = fileStat(absPath);
95
- const mtime = stat ? stat.mtime : 0;
96
- const size = stat ? stat.size : 0;
97
- fileHashes.push({ file: relPath, hash: fileHash(code), mtime, size });
98
- }
99
- }
99
+ if (precomputed?._reverseDepOnly)
100
+ continue;
101
+ const record = resolveHashFromPrecomputed(relPath, precomputed ?? {}, rootDir, caller);
102
+ if (record)
103
+ yield record;
100
104
  }
101
- // Also include metadata-only updates (self-heal mtime/size without re-parse)
105
+ // Metadata-only updates (self-heal mtime/size without re-parse)
102
106
  for (const item of metadataUpdates) {
103
- const mtime = item.stat ? item.stat.mtime : 0;
104
- const size = item.stat ? item.stat.size : 0;
105
- fileHashes.push({ file: item.relPath, hash: item.hash, mtime, size });
107
+ yield {
108
+ file: item.relPath,
109
+ hash: item.hash,
110
+ mtime: item.stat ? item.stat.mtime : 0,
111
+ size: item.stat ? item.stat.size : 0,
112
+ };
106
113
  }
107
- return fileHashes;
114
+ }
115
+ /**
116
+ * Build file hash entries for every collected file, including those that
117
+ * produced zero symbols (empty files, parsers that silently no-op'd, or
118
+ * optional-language extensions whose grammar wasn't installed). Iterating the
119
+ * symbol map instead would skip such files and leave them missing from
120
+ * `file_hashes`, which permanently breaks the JS-side fast-skip pre-flight on
121
+ * any subsequent no-op rebuild (#1068).
122
+ *
123
+ * Exported for unit testing.
124
+ */
125
+ export function buildFileHashes(filesToParse, precomputedData, metadataUpdates, rootDir) {
126
+ return [
127
+ ...iterFileHashRecords(filesToParse, precomputedData, metadataUpdates, rootDir, 'buildFileHashes'),
128
+ ];
108
129
  }
109
130
  // ── Native fast-path ─────────────────────────────────────────────────
110
131
  function tryNativeInsert(ctx) {
@@ -193,29 +214,30 @@ function insertDefinitionsAndExports(db, allSymbols) {
193
214
  }
194
215
  }
195
216
  // ── JS fallback: Phase 2+3 ──────────────────────────────────────────
196
- function insertChildrenAndEdges(db, allSymbols) {
197
- const childRows = [];
198
- const edgeRows = [];
217
+ /** Build the in-memory `name|kind|line` → node-id map for a single file. */
218
+ function loadFileNodeIdMap(db, relPath) {
219
+ const map = new Map();
220
+ for (const row of bulkNodeIdsByFile(db, relPath)) {
221
+ map.set(`${row.name}|${row.kind}|${row.line}`, row.id);
222
+ }
223
+ return map;
224
+ }
225
+ /**
226
+ * First pass: for every file, emit file→def containment edges and collect
227
+ * the child-node insertion rows.
228
+ */
229
+ function collectChildRowsAndFileEdges(db, allSymbols, childRows, edgeRows) {
199
230
  for (const [relPath, symbols] of allSymbols) {
200
- // First pass: collect file→def edges and child rows
201
- const nodeIdMap = new Map();
202
- for (const row of bulkNodeIdsByFile(db, relPath)) {
203
- nodeIdMap.set(`${row.name}|${row.kind}|${row.line}`, row.id);
204
- }
231
+ const nodeIdMap = loadFileNodeIdMap(db, relPath);
205
232
  const fileId = nodeIdMap.get(`${relPath}|file|0`);
206
233
  for (const def of symbols.definitions) {
207
234
  const defId = nodeIdMap.get(`${def.name}|${def.kind}|${def.line}`);
208
- // Containment edge: file -> definition
209
235
  if (fileId && defId) {
210
236
  edgeRows.push([fileId, defId, 'contains', 1.0, 0]);
211
237
  }
212
- if (!def.children?.length)
213
- continue;
214
- if (!defId)
238
+ if (!def.children?.length || !defId)
215
239
  continue;
216
240
  for (const child of def.children) {
217
- // Child node
218
- const qualifiedName = `${def.name}.${child.name}`;
219
241
  childRows.push([
220
242
  child.name,
221
243
  child.kind,
@@ -223,21 +245,21 @@ function insertChildrenAndEdges(db, allSymbols) {
223
245
  child.line,
224
246
  child.endLine || null,
225
247
  defId,
226
- qualifiedName,
248
+ `${def.name}.${child.name}`,
227
249
  def.name,
228
250
  child.visibility || null,
229
251
  ]);
230
252
  }
231
253
  }
232
254
  }
233
- // Insert children first (so they exist for edge lookup)
234
- batchInsertNodes(db, childRows);
235
- // Now re-fetch IDs to include newly-inserted children, then add child edges
255
+ }
256
+ /**
257
+ * Second pass (after child nodes have been inserted): emit def→child
258
+ * containment edges and child→def `parameter_of` edges.
259
+ */
260
+ function collectChildEdges(db, allSymbols, edgeRows) {
236
261
  for (const [relPath, symbols] of allSymbols) {
237
- const nodeIdMap = new Map();
238
- for (const row of bulkNodeIdsByFile(db, relPath)) {
239
- nodeIdMap.set(`${row.name}|${row.kind}|${row.line}`, row.id);
240
- }
262
+ const nodeIdMap = loadFileNodeIdMap(db, relPath);
241
263
  for (const def of symbols.definitions) {
242
264
  if (!def.children?.length)
243
265
  continue;
@@ -246,15 +268,23 @@ function insertChildrenAndEdges(db, allSymbols) {
246
268
  continue;
247
269
  for (const child of def.children) {
248
270
  const childId = nodeIdMap.get(`${child.name}|${child.kind}|${child.line}`);
249
- if (childId) {
250
- edgeRows.push([defId, childId, 'contains', 1.0, 0]);
251
- if (child.kind === 'parameter') {
252
- edgeRows.push([childId, defId, 'parameter_of', 1.0, 0]);
253
- }
271
+ if (!childId)
272
+ continue;
273
+ edgeRows.push([defId, childId, 'contains', 1.0, 0]);
274
+ if (child.kind === 'parameter') {
275
+ edgeRows.push([childId, defId, 'parameter_of', 1.0, 0]);
254
276
  }
255
277
  }
256
278
  }
257
279
  }
280
+ }
281
+ function insertChildrenAndEdges(db, allSymbols) {
282
+ const childRows = [];
283
+ const edgeRows = [];
284
+ collectChildRowsAndFileEdges(db, allSymbols, childRows, edgeRows);
285
+ // Insert children first (so they exist for edge lookup)
286
+ batchInsertNodes(db, childRows);
287
+ collectChildEdges(db, allSymbols, edgeRows);
258
288
  batchInsertEdges(db, edgeRows);
259
289
  }
260
290
  // ── JS fallback: Phase 4 ────────────────────────────────────────────
@@ -264,53 +294,8 @@ function updateFileHashes(_db, filesToParse, precomputedData, metadataUpdates, r
264
294
  // Iterate every collected file (#1068): files that produced zero symbols
265
295
  // (empty, parser no-op, or grammar-missing optional language) still need a
266
296
  // hash row, otherwise the next no-op rebuild's fast-skip pre-flight rejects.
267
- const seen = new Set();
268
- for (const item of filesToParse) {
269
- const relPath = item.relPath ?? normalizePath(path.relative(rootDir, item.file));
270
- if (seen.has(relPath))
271
- continue;
272
- seen.add(relPath);
273
- const precomputed = precomputedData.get(relPath);
274
- if (precomputed?._reverseDepOnly) {
275
- // no-op: file unchanged, hash already correct
276
- }
277
- else if (precomputed?.hash) {
278
- let mtime;
279
- let size;
280
- if (precomputed.stat) {
281
- mtime = precomputed.stat.mtime;
282
- size = precomputed.stat.size;
283
- }
284
- else {
285
- const rawStat = fileStat(path.join(rootDir, relPath));
286
- mtime = rawStat ? rawStat.mtime : 0;
287
- size = rawStat ? rawStat.size : 0;
288
- }
289
- upsertHash.run(relPath, precomputed.hash, mtime, size);
290
- }
291
- else {
292
- const absPath = path.join(rootDir, relPath);
293
- let code;
294
- try {
295
- code = readFileSafe(absPath);
296
- }
297
- catch (e) {
298
- debug(`updateFileHashes: readFileSafe failed for ${relPath}: ${toErrorMessage(e)}`);
299
- code = null;
300
- }
301
- if (code !== null) {
302
- const stat = fileStat(absPath);
303
- const mtime = stat ? stat.mtime : 0;
304
- const size = stat ? stat.size : 0;
305
- upsertHash.run(relPath, fileHash(code), mtime, size);
306
- }
307
- }
308
- }
309
- // Also update metadata-only entries (self-heal mtime/size without re-parse)
310
- for (const item of metadataUpdates) {
311
- const mtime = item.stat ? item.stat.mtime : 0;
312
- const size = item.stat ? item.stat.size : 0;
313
- upsertHash.run(item.relPath, item.hash, mtime, size);
297
+ for (const record of iterFileHashRecords(filesToParse, precomputedData, metadataUpdates, rootDir, 'updateFileHashes')) {
298
+ upsertHash.run(record.file, record.hash, record.mtime, record.size);
314
299
  }
315
300
  }
316
301
  // ── Main entry point ────────────────────────────────────────────────
@@ -1 +1 @@
1
- {"version":3,"file":"insert-nodes.js","sourceRoot":"","sources":["../../../../../src/domain/graph/builder/stages/insert-nodes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"insert-nodes.js","sourceRoot":"","sources":["../../../../../src/domain/graph/builder/stages/insert-nodes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,KAAK,EAAE,MAAM,sCAAsC,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAS9D,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,QAAQ,EACR,QAAQ,EACR,YAAY,GACb,MAAM,eAAe,CAAC;AAkCvB,mFAAmF;AACnF,SAAS,oBAAoB,CAAC,UAAwC;IACpE,MAAM,OAAO,GAAuB,EAAE,CAAC;IACvC,KAAK,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,UAAU,EAAE,CAAC;QAC5C,OAAO,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,OAAO;YACb,WAAW,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;gBAC7C,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI,SAAS;gBACjC,UAAU,EAAE,GAAG,CAAC,UAAU,IAAI,SAAS;gBACvC,QAAQ,EAAE,CAAC,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBACzC,IAAI,EAAE,CAAC,CAAC,IAAI;oBACZ,IAAI,EAAE,CAAC,CAAC,IAAI;oBACZ,IAAI,EAAE,CAAC,CAAC,IAAI;oBACZ,OAAO,EAAE,CAAC,CAAC,OAAO,IAAI,SAAS;oBAC/B,UAAU,EAAE,CAAC,CAAC,UAAU,IAAI,SAAS;iBACtC,CAAC,CAAC;aACJ,CAAC,CAAC;YACH,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;gBACrC,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,IAAI,EAAE,GAAG,CAAC,IAAI;aACf,CAAC,CAAC;SACJ,CAAC,CAAC;IACL,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAUD,wFAAwF;AACxF,SAAS,0BAA0B,CACjC,OAAe,EACf,WAAgC,EAChC,OAAe,EACf,MAAc;IAEd,IAAI,WAAW,CAAC,IAAI,EAAE,CAAC;QACrB,IAAI,KAAa,CAAC;QAClB,IAAI,IAAY,CAAC;QACjB,IAAI,WAAW,CAAC,IAAI,EAAE,CAAC;YACrB,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;YAC/B,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;QAC/B,CAAC;aAAM,CAAC;YACN,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;YACtD,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YACpC,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACpC,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IAChE,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC5C,IAAI,IAAmB,CAAC;IACxB,IAAI,CAAC;QACH,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,KAAK,CAAC,GAAG,MAAM,6BAA6B,OAAO,KAAK,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC7E,IAAI,GAAG,IAAI,CAAC;IACd,CAAC;IACD,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAC/B,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC/B,OAAO;QACL,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC;QACpB,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC5B,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KAC3B,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,QAAQ,CAAC,CAAC,mBAAmB,CAC3B,YAA2B,EAC3B,eAAiD,EACjD,eAAiC,EACjC,OAAe,EACf,MAAc;IAEd,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAE/B,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;QAChC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACjF,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;YAAE,SAAS;QAChC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAElB,MAAM,WAAW,GAAG,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACjD,IAAI,WAAW,EAAE,eAAe;YAAE,SAAS;QAE3C,MAAM,MAAM,GAAG,0BAA0B,CACvC,OAAO,EACP,WAAW,IAAK,EAA0B,EAC1C,OAAO,EACP,MAAM,CACP,CAAC;QACF,IAAI,MAAM;YAAE,MAAM,MAAM,CAAC;IAC3B,CAAC;IAED,gEAAgE;IAChE,KAAK,MAAM,IAAI,IAAI,eAAe,EAAE,CAAC;QACnC,MAAM;YACJ,IAAI,EAAE,IAAI,CAAC,OAAO;YAClB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACtC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SACrC,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,eAAe,CAC7B,YAA2B,EAC3B,eAAiD,EACjD,eAAiC,EACjC,OAAe;IAEf,OAAO;QACL,GAAG,mBAAmB,CACpB,YAAY,EACZ,eAAe,EACf,eAAe,EACf,OAAO,EACP,iBAAiB,CAClB;KACF,CAAC;AACJ,CAAC;AAED,wEAAwE;AAExE,SAAS,eAAe,CAAC,GAAoB;IAC3C,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,eAAe;QAAE,OAAO,KAAK,CAAC;IAEjD,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,eAAe,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC;IAE5E,MAAM,OAAO,GAAG,oBAAoB,CAAC,UAAU,CAAC,CAAC;IAEjD,MAAM,eAAe,GAAG,IAAI,GAAG,EAA+B,CAAC;IAC/D,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;QAChC,IAAI,IAAI,CAAC,OAAO;YAAE,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,IAA2B,CAAC,CAAC;IACnF,CAAC;IACD,MAAM,UAAU,GAAG,eAAe,CAAC,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,OAAO,CAAC,CAAC;IAE5F,6EAA6E;IAC7E,wEAAwE;IACxE,yDAAyD;IACzD,IAAI,MAAe,CAAC;IACpB,IAAI,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACzB,MAAM,GAAG,GAAG,CAAC,QAAS,CAAC,eAAe,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;IACvE,CAAC;SAAM,CAAC;QACN,IAAI,CAAC;YACH,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC;gBACX,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,0BAA0B,CAAC,CAAC;YAC5C,CAAC;YACD,MAAM,GAAG,GAAG,CAAC,QAAS,CAAC,eAAe,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;QACvE,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC;gBACH,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,iCAAiC,CAAC,CAAC;YACxD,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,KAAK,CACH,4EAA4E,cAAc,CAAC,CAAC,CAAC,EAAE,CAChG,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,uEAAuE;AAEvE,SAAS,2BAA2B,CAClC,EAAyB,EACzB,UAAwC;IAExC,MAAM,UAAU,GAAgB,EAAE,CAAC;IACnC,MAAM,UAAU,GAAgB,EAAE,CAAC;IACnC,KAAK,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,UAAU,EAAE,CAAC;QAC5C,UAAU,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;QAC7E,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;YACtC,MAAM,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;YACzC,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAC/D,UAAU,CAAC,IAAI,CAAC;gBACd,GAAG,CAAC,IAAI;gBACR,GAAG,CAAC,IAAI;gBACR,OAAO;gBACP,GAAG,CAAC,IAAI;gBACR,GAAG,CAAC,OAAO,IAAI,IAAI;gBACnB,IAAI;gBACJ,GAAG,CAAC,IAAI;gBACR,KAAK;gBACL,GAAG,CAAC,UAAU,IAAI,IAAI;aACvB,CAAC,CAAC;QACL,CAAC;QACD,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YAClC,UAAU,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;YAC3F,UAAU,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC;IACD,gBAAgB,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;IAEjC,6EAA6E;IAC7E,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,MAAM,YAAY,GAAG,GAAG,CAAC;QACzB,MAAM,eAAe,GAAG,IAAI,GAAG,EAA2B,CAAC;QAC3D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,IAAI,YAAY,EAAE,CAAC;YACzD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,YAAY,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;YAC1D,MAAM,SAAS,GAAG,GAAG,GAAG,CAAC,CAAC;YAC1B,IAAI,UAAU,GAAG,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAChD,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAC3B,EAAE,MAAM,EAAE,SAAS,EAAE,EACrB,GAAG,EAAE,CAAC,mDAAmD,CAC1D,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACf,UAAU,GAAG,EAAE,CAAC,OAAO,CAAC,uCAAuC,UAAU,EAAE,CAAC,CAAC;gBAC7E,eAAe,CAAC,GAAG,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;YAC7C,CAAC;YACD,MAAM,IAAI,GAAc,EAAE,CAAC;YAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC7B,MAAM,CAAC,GAAG,UAAU,CAAC,CAAC,CAAc,CAAC;gBACrC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACpC,CAAC;YACD,UAAU,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;AACH,CAAC;AAED,uEAAuE;AAEvE,4EAA4E;AAC5E,SAAS,iBAAiB,CAAC,EAAyB,EAAE,OAAe;IACnE,MAAM,GAAG,GAAG,IAAI,GAAG,EAAkB,CAAC;IACtC,KAAK,MAAM,GAAG,IAAI,iBAAiB,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,CAAC;QACjD,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;IACzD,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;GAGG;AACH,SAAS,4BAA4B,CACnC,EAAyB,EACzB,UAAwC,EACxC,SAAsB,EACtB,QAAqB;IAErB,KAAK,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,UAAU,EAAE,CAAC;QAC5C,MAAM,SAAS,GAAG,iBAAiB,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QACjD,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,OAAO,SAAS,CAAC,CAAC;QAElD,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;YACtC,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;YAEnE,IAAI,MAAM,IAAI,KAAK,EAAE,CAAC;gBACpB,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;YACrD,CAAC;YACD,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC,KAAK;gBAAE,SAAS;YAE9C,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;gBACjC,SAAS,CAAC,IAAI,CAAC;oBACb,KAAK,CAAC,IAAI;oBACV,KAAK,CAAC,IAAI;oBACV,OAAO;oBACP,KAAK,CAAC,IAAI;oBACV,KAAK,CAAC,OAAO,IAAI,IAAI;oBACrB,KAAK;oBACL,GAAG,GAAG,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,EAAE;oBAC3B,GAAG,CAAC,IAAI;oBACR,KAAK,CAAC,UAAU,IAAI,IAAI;iBACzB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAS,iBAAiB,CACxB,EAAyB,EACzB,UAAwC,EACxC,QAAqB;IAErB,KAAK,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,UAAU,EAAE,CAAC;QAC5C,MAAM,SAAS,GAAG,iBAAiB,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QACjD,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;YACtC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM;gBAAE,SAAS;YACpC,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;YACnE,IAAI,CAAC,KAAK;gBAAE,SAAS;YACrB,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;gBACjC,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;gBAC3E,IAAI,CAAC,OAAO;oBAAE,SAAS;gBACvB,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;gBACpD,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;oBAC/B,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC1D,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,sBAAsB,CAC7B,EAAyB,EACzB,UAAwC;IAExC,MAAM,SAAS,GAAgB,EAAE,CAAC;IAClC,MAAM,QAAQ,GAAgB,EAAE,CAAC;IAEjC,4BAA4B,CAAC,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IAElE,wDAAwD;IACxD,gBAAgB,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;IAEhC,iBAAiB,CAAC,EAAE,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;IAC5C,gBAAgB,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;AACjC,CAAC;AAED,uEAAuE;AAEvE,SAAS,gBAAgB,CACvB,GAA0B,EAC1B,YAA2B,EAC3B,eAAiD,EACjD,eAAiC,EACjC,OAAe,EACf,UAAkC;IAElC,IAAI,CAAC,UAAU;QAAE,OAAO;IAExB,yEAAyE;IACzE,2EAA2E;IAC3E,6EAA6E;IAC7E,KAAK,MAAM,MAAM,IAAI,mBAAmB,CACtC,YAAY,EACZ,eAAe,EACf,eAAe,EACf,OAAO,EACP,kBAAkB,CACnB,EAAE,CAAC;QACF,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;IACtE,CAAC;AACH,CAAC;AAED,uEAAuE;AAEvE,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,GAAoB;IACpD,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,eAAe,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC;IAE5E,mEAAmE;IACnE,KAAK,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,UAAU,EAAE,CAAC;QAC5C,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACxC,CAAC;IAED,MAAM,EAAE,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;IAE7B,oEAAoE;IACpE,IAAI,GAAG,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;QAChC,IAAI,CAAC;YACH,IAAI,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC;gBACzB,GAAG,CAAC,MAAM,CAAC,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;gBAC7C,8DAA8D;gBAC9D,OAAO;YACT,CAAC;QACH,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,KAAK,CAAC,0DAA0D,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACvF,CAAC;IACH,CAAC;IAED,cAAc;IACd,MAAM,eAAe,GAAG,IAAI,GAAG,EAA+B,CAAC;IAC/D,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;QAChC,IAAI,IAAI,CAAC,OAAO;YAAE,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,IAA2B,CAAC,CAAC;IACnF,CAAC;IAED,IAAI,UAAkC,CAAC;IACvC,IAAI,CAAC;QACH,UAAU,GAAG,GAAG,CAAC,EAAE,CAAC,OAAO,CACzB,kFAAkF,CACnF,CAAC;IACJ,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,KAAK,CAAC,kEAAkE,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC7F,UAAU,GAAG,IAAI,CAAC;IACpB,CAAC;IAED,MAAM,SAAS,GAAG,GAAG,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE;QACxC,2BAA2B,CAAC,GAAG,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;QAChD,sBAAsB,CAAC,GAAG,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;QAC3C,gBAAgB,CAAC,GAAG,CAAC,EAAE,EAAE,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;IAChG,CAAC,CAAC,CAAC;IAEH,SAAS,EAAE,CAAC;IACZ,GAAG,CAAC,MAAM,CAAC,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;IAE7C,+BAA+B;IAC/B,IAAI,UAAU,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrC,MAAM,UAAU,GAAG,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,wCAAwC,CAAC,CAAC;QAC5E,KAAK,MAAM,OAAO,IAAI,OAAO,EAAE,CAAC;YAC9B,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -0,0 +1,14 @@
1
+ import type { PipelineContext } from '../context.js';
2
+ /** Checkpoint WAL through rusqlite and close the native connection. */
3
+ export declare function closeNativeDb(ctx: PipelineContext, label: string): void;
4
+ /** Try to reopen the native connection for a given pipeline phase. */
5
+ export declare function reopenNativeDb(ctx: PipelineContext, label: string): void;
6
+ /** Close nativeDb and clear stale references in engineOpts. */
7
+ export declare function suspendNativeDb(ctx: PipelineContext, label: string): void;
8
+ /**
9
+ * After native writes, reopen the JS db connection to get a fresh page cache.
10
+ * Rusqlite WAL truncation invalidates better-sqlite3's internal WAL index,
11
+ * causing SQLITE_CORRUPT on the next read (#715, #736).
12
+ */
13
+ export declare function refreshJsDb(ctx: PipelineContext): void;
14
+ //# sourceMappingURL=native-db-lifecycle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"native-db-lifecycle.d.ts","sourceRoot":"","sources":["../../../../../src/domain/graph/builder/stages/native-db-lifecycle.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAErD,uEAAuE;AACvE,wBAAgB,aAAa,CAAC,GAAG,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAavE;AAED,sEAAsE;AACtE,wBAAgB,cAAc,CAAC,GAAG,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAUxE;AAED,+DAA+D;AAC/D,wBAAgB,eAAe,CAAC,GAAG,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAKzE;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,eAAe,GAAG,IAAI,CAOtD"}