@lzehrung/codegraph 2.1.2 → 2.2.0

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 +2 -2
  2. package/codegraph-skill/codegraph/SKILL.md +21 -2
  3. package/dist/agent/explore.d.ts.map +1 -1
  4. package/dist/agent/explore.js +6 -1
  5. package/dist/agent/explore.js.map +1 -1
  6. package/dist/agent/handles.d.ts.map +1 -1
  7. package/dist/agent/handles.js +2 -8
  8. package/dist/agent/handles.js.map +1 -1
  9. package/dist/agent/orient.js +0 -16
  10. package/dist/agent/orient.js.map +1 -1
  11. package/dist/agent/query-index/store.d.ts +2 -0
  12. package/dist/agent/query-index/store.d.ts.map +1 -1
  13. package/dist/agent/query-index/store.js +4 -0
  14. package/dist/agent/query-index/store.js.map +1 -1
  15. package/dist/agent/session.js +3 -3
  16. package/dist/agent/session.js.map +1 -1
  17. package/dist/bin/cli.js +7303 -5659
  18. package/dist/bin/queryIndexWorker.js +357 -54
  19. package/dist/chunking/chunkSplit.js +0 -15
  20. package/dist/chunking/chunkSplit.js.map +1 -1
  21. package/dist/cli/commandCatalog.d.ts.map +1 -1
  22. package/dist/cli/commandCatalog.js +1 -0
  23. package/dist/cli/commandCatalog.js.map +1 -1
  24. package/dist/cli/commandTable.d.ts.map +1 -1
  25. package/dist/cli/commandTable.js +17 -0
  26. package/dist/cli/commandTable.js.map +1 -1
  27. package/dist/cli/compileCache.d.ts +5 -0
  28. package/dist/cli/compileCache.d.ts.map +1 -1
  29. package/dist/cli/compileCache.js +18 -0
  30. package/dist/cli/compileCache.js.map +1 -1
  31. package/dist/cli/context.d.ts.map +1 -1
  32. package/dist/cli/context.js +0 -1
  33. package/dist/cli/context.js.map +1 -1
  34. package/dist/cli/help.d.ts +2 -1
  35. package/dist/cli/help.d.ts.map +1 -1
  36. package/dist/cli/help.js +23 -2
  37. package/dist/cli/help.js.map +1 -1
  38. package/dist/cli/indexPolicy.d.ts.map +1 -1
  39. package/dist/cli/indexPolicy.js +1 -0
  40. package/dist/cli/indexPolicy.js.map +1 -1
  41. package/dist/cli/inspect.d.ts.map +1 -1
  42. package/dist/cli/inspect.js +5 -2
  43. package/dist/cli/inspect.js.map +1 -1
  44. package/dist/cli/options.d.ts +1 -1
  45. package/dist/cli/options.d.ts.map +1 -1
  46. package/dist/cli/options.js +31 -1
  47. package/dist/cli/options.js.map +1 -1
  48. package/dist/cli/server.d.ts +59 -0
  49. package/dist/cli/server.d.ts.map +1 -0
  50. package/dist/cli/server.js +906 -0
  51. package/dist/cli/server.js.map +1 -0
  52. package/dist/cli.d.ts +1 -1
  53. package/dist/cli.d.ts.map +1 -1
  54. package/dist/cli.js +1 -0
  55. package/dist/cli.js.map +1 -1
  56. package/dist/documentLinks.d.ts.map +1 -1
  57. package/dist/documentLinks.js +0 -1
  58. package/dist/documentLinks.js.map +1 -1
  59. package/dist/drift/snapshot.js +1 -1
  60. package/dist/drift/snapshot.js.map +1 -1
  61. package/dist/duplicates/scoring.d.ts.map +1 -1
  62. package/dist/duplicates/scoring.js.map +1 -1
  63. package/dist/duplicates/unitCache.d.ts.map +1 -1
  64. package/dist/duplicates/unitCache.js +1 -1
  65. package/dist/duplicates/unitCache.js.map +1 -1
  66. package/dist/duplicates/units.d.ts.map +1 -1
  67. package/dist/duplicates/units.js +2 -3
  68. package/dist/duplicates/units.js.map +1 -1
  69. package/dist/duplicates.d.ts.map +1 -1
  70. package/dist/duplicates.js +0 -6
  71. package/dist/duplicates.js.map +1 -1
  72. package/dist/graph-edge-collector.d.ts +0 -2
  73. package/dist/graph-edge-collector.d.ts.map +1 -1
  74. package/dist/graph-edge-collector.js +2 -4
  75. package/dist/graph-edge-collector.js.map +1 -1
  76. package/dist/graphs/edgeResolution.d.ts.map +1 -1
  77. package/dist/graphs/specifiers.d.ts +1 -1
  78. package/dist/graphs/specifiers.d.ts.map +1 -1
  79. package/dist/graphs/specifiers.js +1 -1
  80. package/dist/graphs/specifiers.js.map +1 -1
  81. package/dist/graphs/symbol-graph-detailed.d.ts.map +1 -1
  82. package/dist/graphs/symbol-graph-detailed.js +0 -1
  83. package/dist/graphs/symbol-graph-detailed.js.map +1 -1
  84. package/dist/index.d.ts +1 -1
  85. package/dist/index.d.ts.map +1 -1
  86. package/dist/index.js.map +1 -1
  87. package/dist/indexer/build-cache/module-cache.d.ts.map +1 -1
  88. package/dist/indexer/build-cache/module-cache.js +1 -1
  89. package/dist/indexer/build-cache/module-cache.js.map +1 -1
  90. package/dist/indexer/build-cache/options.d.ts.map +1 -1
  91. package/dist/indexer/build-cache/options.js +0 -2
  92. package/dist/indexer/build-cache/options.js.map +1 -1
  93. package/dist/indexer/build-cache/project-snapshot.d.ts +9 -1
  94. package/dist/indexer/build-cache/project-snapshot.d.ts.map +1 -1
  95. package/dist/indexer/build-cache/project-snapshot.js +1 -5
  96. package/dist/indexer/build-cache/project-snapshot.js.map +1 -1
  97. package/dist/indexer/build-index.d.ts.map +1 -1
  98. package/dist/indexer/build-index.js +59 -44
  99. package/dist/indexer/build-index.js.map +1 -1
  100. package/dist/indexer/build-workers.d.ts +29 -2
  101. package/dist/indexer/build-workers.d.ts.map +1 -1
  102. package/dist/indexer/build-workers.js +54 -3
  103. package/dist/indexer/build-workers.js.map +1 -1
  104. package/dist/indexer/call-hierarchy.d.ts.map +1 -1
  105. package/dist/indexer/imports.d.ts +0 -3
  106. package/dist/indexer/imports.d.ts.map +1 -1
  107. package/dist/indexer/imports.js +1 -1
  108. package/dist/indexer/imports.js.map +1 -1
  109. package/dist/indexer/locals-and-exports.d.ts +2 -2
  110. package/dist/indexer/locals-and-exports.d.ts.map +1 -1
  111. package/dist/indexer/locals-and-exports.js +2 -3
  112. package/dist/indexer/locals-and-exports.js.map +1 -1
  113. package/dist/indexer/navigation-local.d.ts +2 -2
  114. package/dist/indexer/navigation-local.d.ts.map +1 -1
  115. package/dist/indexer/navigation-local.js +2 -2
  116. package/dist/indexer/navigation-local.js.map +1 -1
  117. package/dist/indexer/navigation-references.d.ts +1 -2
  118. package/dist/indexer/navigation-references.d.ts.map +1 -1
  119. package/dist/indexer/navigation-references.js +1 -1
  120. package/dist/indexer/navigation-references.js.map +1 -1
  121. package/dist/indexer/navigation.d.ts.map +1 -1
  122. package/dist/indexer/navigation.js +2 -4
  123. package/dist/indexer/navigation.js.map +1 -1
  124. package/dist/indexer/parse-context.d.ts +1 -4
  125. package/dist/indexer/parse-context.d.ts.map +1 -1
  126. package/dist/indexer/parse-context.js +11 -6
  127. package/dist/indexer/parse-context.js.map +1 -1
  128. package/dist/indexer/scope.d.ts +2 -2
  129. package/dist/indexer/scope.d.ts.map +1 -1
  130. package/dist/indexer/scope.js +1 -1
  131. package/dist/indexer/scope.js.map +1 -1
  132. package/dist/indexer.d.ts +3 -6
  133. package/dist/indexer.d.ts.map +1 -1
  134. package/dist/indexer.js +5 -8
  135. package/dist/indexer.js.map +1 -1
  136. package/dist/installer/registry.js +1 -27
  137. package/dist/installer/registry.js.map +1 -1
  138. package/dist/languages/definitions/c.d.ts.map +1 -1
  139. package/dist/languages/definitions/c.js +0 -1
  140. package/dist/languages/definitions/c.js.map +1 -1
  141. package/dist/languages/definitions/cFamily.d.ts +0 -1
  142. package/dist/languages/definitions/cFamily.d.ts.map +1 -1
  143. package/dist/languages/definitions/cFamily.js +0 -2
  144. package/dist/languages/definitions/cFamily.js.map +1 -1
  145. package/dist/languages/definitions/cpp.d.ts.map +1 -1
  146. package/dist/languages/definitions/cpp.js +0 -1
  147. package/dist/languages/definitions/cpp.js.map +1 -1
  148. package/dist/languages/definitions/csharp.d.ts.map +1 -1
  149. package/dist/languages/definitions/csharp.js +0 -2
  150. package/dist/languages/definitions/csharp.js.map +1 -1
  151. package/dist/languages/definitions/css.d.ts.map +1 -1
  152. package/dist/languages/definitions/css.js +0 -2
  153. package/dist/languages/definitions/css.js.map +1 -1
  154. package/dist/languages/definitions/go.d.ts.map +1 -1
  155. package/dist/languages/definitions/go.js +0 -2
  156. package/dist/languages/definitions/go.js.map +1 -1
  157. package/dist/languages/definitions/html.d.ts.map +1 -1
  158. package/dist/languages/definitions/html.js +0 -2
  159. package/dist/languages/definitions/html.js.map +1 -1
  160. package/dist/languages/definitions/htmlStub.d.ts.map +1 -1
  161. package/dist/languages/definitions/htmlStub.js +0 -2
  162. package/dist/languages/definitions/htmlStub.js.map +1 -1
  163. package/dist/languages/definitions/java.d.ts.map +1 -1
  164. package/dist/languages/definitions/java.js +0 -2
  165. package/dist/languages/definitions/java.js.map +1 -1
  166. package/dist/languages/definitions/javascript.d.ts.map +1 -1
  167. package/dist/languages/definitions/javascript.js +0 -2
  168. package/dist/languages/definitions/javascript.js.map +1 -1
  169. package/dist/languages/definitions/kotlin.d.ts.map +1 -1
  170. package/dist/languages/definitions/kotlin.js +0 -2
  171. package/dist/languages/definitions/kotlin.js.map +1 -1
  172. package/dist/languages/definitions/less.d.ts.map +1 -1
  173. package/dist/languages/definitions/less.js +0 -2
  174. package/dist/languages/definitions/less.js.map +1 -1
  175. package/dist/languages/definitions/php.d.ts.map +1 -1
  176. package/dist/languages/definitions/php.js +0 -2
  177. package/dist/languages/definitions/php.js.map +1 -1
  178. package/dist/languages/definitions/python.d.ts.map +1 -1
  179. package/dist/languages/definitions/python.js +0 -2
  180. package/dist/languages/definitions/python.js.map +1 -1
  181. package/dist/languages/definitions/ruby.d.ts.map +1 -1
  182. package/dist/languages/definitions/ruby.js +0 -2
  183. package/dist/languages/definitions/ruby.js.map +1 -1
  184. package/dist/languages/definitions/rust.d.ts.map +1 -1
  185. package/dist/languages/definitions/rust.js +0 -2
  186. package/dist/languages/definitions/rust.js.map +1 -1
  187. package/dist/languages/definitions/scss.d.ts.map +1 -1
  188. package/dist/languages/definitions/scss.js +0 -2
  189. package/dist/languages/definitions/scss.js.map +1 -1
  190. package/dist/languages/definitions/sql.d.ts.map +1 -1
  191. package/dist/languages/definitions/sql.js +0 -2
  192. package/dist/languages/definitions/sql.js.map +1 -1
  193. package/dist/languages/definitions/svelte.d.ts.map +1 -1
  194. package/dist/languages/definitions/svelte.js +0 -2
  195. package/dist/languages/definitions/svelte.js.map +1 -1
  196. package/dist/languages/definitions/swift.d.ts.map +1 -1
  197. package/dist/languages/definitions/swift.js +0 -2
  198. package/dist/languages/definitions/swift.js.map +1 -1
  199. package/dist/languages/definitions/typescript.d.ts.map +1 -1
  200. package/dist/languages/definitions/typescript.js +0 -3
  201. package/dist/languages/definitions/typescript.js.map +1 -1
  202. package/dist/languages/definitions/vue.d.ts.map +1 -1
  203. package/dist/languages/definitions/vue.js +0 -2
  204. package/dist/languages/definitions/vue.js.map +1 -1
  205. package/dist/languages/definitions/zig.d.ts.map +1 -1
  206. package/dist/languages/definitions/zig.js +0 -2
  207. package/dist/languages/definitions/zig.js.map +1 -1
  208. package/dist/languages/filePrep.d.ts +0 -2
  209. package/dist/languages/filePrep.d.ts.map +1 -1
  210. package/dist/languages/filePrep.js +0 -1
  211. package/dist/languages/filePrep.js.map +1 -1
  212. package/dist/languages/types.d.ts +19 -5
  213. package/dist/languages/types.d.ts.map +1 -1
  214. package/dist/languages.d.ts +1 -3
  215. package/dist/languages.d.ts.map +1 -1
  216. package/dist/languages.js +0 -7
  217. package/dist/languages.js.map +1 -1
  218. package/dist/lifecycle/manifest.d.ts.map +1 -1
  219. package/dist/lifecycle/manifest.js +21 -4
  220. package/dist/lifecycle/manifest.js.map +1 -1
  221. package/dist/mcp/handlers.d.ts +275 -0
  222. package/dist/mcp/handlers.d.ts.map +1 -0
  223. package/dist/mcp/handlers.js +657 -0
  224. package/dist/mcp/handlers.js.map +1 -0
  225. package/dist/mcp/httpTransport.d.ts +14 -0
  226. package/dist/mcp/httpTransport.d.ts.map +1 -0
  227. package/dist/mcp/httpTransport.js +185 -0
  228. package/dist/mcp/httpTransport.js.map +1 -0
  229. package/dist/mcp/legacySessions.d.ts +38 -0
  230. package/dist/mcp/legacySessions.d.ts.map +1 -0
  231. package/dist/mcp/legacySessions.js +264 -0
  232. package/dist/mcp/legacySessions.js.map +1 -0
  233. package/dist/mcp/lifecycleHealth.d.ts +12 -0
  234. package/dist/mcp/lifecycleHealth.d.ts.map +1 -0
  235. package/dist/mcp/lifecycleHealth.js +37 -0
  236. package/dist/mcp/lifecycleHealth.js.map +1 -0
  237. package/dist/mcp/protocol.d.ts +35 -0
  238. package/dist/mcp/protocol.d.ts.map +1 -0
  239. package/dist/mcp/protocol.js +577 -0
  240. package/dist/mcp/protocol.js.map +1 -0
  241. package/dist/mcp/server.d.ts +9 -306
  242. package/dist/mcp/server.d.ts.map +1 -1
  243. package/dist/mcp/server.js +13 -1609
  244. package/dist/mcp/server.js.map +1 -1
  245. package/dist/native/bindingLoader.d.ts +27 -0
  246. package/dist/native/bindingLoader.d.ts.map +1 -1
  247. package/dist/native/bindingLoader.js +18 -1
  248. package/dist/native/bindingLoader.js.map +1 -1
  249. package/dist/native/contracts.d.ts +59 -12
  250. package/dist/native/contracts.d.ts.map +1 -1
  251. package/dist/native/execution.d.ts +10 -1
  252. package/dist/native/execution.d.ts.map +1 -1
  253. package/dist/native/execution.js +59 -3
  254. package/dist/native/execution.js.map +1 -1
  255. package/dist/native/projectedTree.d.ts +20 -5
  256. package/dist/native/projectedTree.d.ts.map +1 -1
  257. package/dist/native/projectedTree.js +100 -48
  258. package/dist/native/projectedTree.js.map +1 -1
  259. package/dist/native/runtime.d.ts +47 -1
  260. package/dist/native/runtime.d.ts.map +1 -1
  261. package/dist/native/runtime.js +151 -8
  262. package/dist/native/runtime.js.map +1 -1
  263. package/dist/native/runtimeCache.d.ts +92 -0
  264. package/dist/native/runtimeCache.d.ts.map +1 -1
  265. package/dist/native/runtimeCache.js +443 -13
  266. package/dist/native/runtimeCache.js.map +1 -1
  267. package/dist/native/treeShape.d.ts +21 -0
  268. package/dist/native/treeShape.d.ts.map +1 -0
  269. package/dist/native/treeShape.js +28 -0
  270. package/dist/native/treeShape.js.map +1 -0
  271. package/dist/native/treeSitterNative.d.ts +3 -3
  272. package/dist/native/treeSitterNative.d.ts.map +1 -1
  273. package/dist/native/treeSitterNative.js +2 -2
  274. package/dist/native/treeSitterNative.js.map +1 -1
  275. package/dist/presets.d.ts +7 -1
  276. package/dist/presets.d.ts.map +1 -1
  277. package/dist/presets.js +4 -0
  278. package/dist/presets.js.map +1 -1
  279. package/dist/review/deleted.js +2 -2
  280. package/dist/review/deleted.js.map +1 -1
  281. package/dist/review.js.map +1 -1
  282. package/dist/sql/extractFacts.d.ts.map +1 -1
  283. package/dist/sql/extractFacts.js +1 -1
  284. package/dist/sql/extractFacts.js.map +1 -1
  285. package/dist/util/lazySymbols.js +1 -1
  286. package/dist/util/lazySymbols.js.map +1 -1
  287. package/dist/util/resolution/jvm.js +1 -1
  288. package/dist/util/resolution/jvm.js.map +1 -1
  289. package/dist/util/resolution/php.d.ts.map +1 -1
  290. package/dist/util/resolution/php.js +0 -1
  291. package/dist/util/resolution/php.js.map +1 -1
  292. package/dist/util/resolution.d.ts.map +1 -1
  293. package/dist/util/resolution.js +5 -5
  294. package/dist/util/resolution.js.map +1 -1
  295. package/dist/worker/nativeExtractWorker.d.ts +10 -4
  296. package/dist/worker/nativeExtractWorker.d.ts.map +1 -1
  297. package/dist/worker/nativeExtractWorker.js +55 -3
  298. package/dist/worker/nativeExtractWorker.js.map +1 -1
  299. package/dist/worker/nativeWorkerPool.d.ts +4 -0
  300. package/dist/worker/nativeWorkerPool.d.ts.map +1 -1
  301. package/dist/worker/nativeWorkerPool.js +6 -1
  302. package/dist/worker/nativeWorkerPool.js.map +1 -1
  303. package/docs/mcp.md +16 -2
  304. package/package.json +3 -3
  305. package/dist/languages/definitions/loadLanguage.d.ts +0 -2
  306. package/dist/languages/definitions/loadLanguage.d.ts.map +0 -1
  307. package/dist/languages/definitions/loadLanguage.js +0 -2
  308. package/dist/languages/definitions/loadLanguage.js.map +0 -1
  309. package/dist/parserBackend.d.ts +0 -57
  310. package/dist/parserBackend.d.ts.map +0 -1
  311. package/dist/parserBackend.js +0 -33
  312. package/dist/parserBackend.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"projectedTree.d.ts","sourceRoot":"","sources":["../../src/native/projectedTree.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC7F,OAAO,EAIL,KAAK,oBAAoB,EAC1B,MAAM,gBAAgB,CAAC;AAExB,MAAM,MAAM,iBAAiB,GAAG;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,qBAAa,mBAAmB;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAmC;IAC7D,2FAA2F;IAC3F,QAAQ,CAAC,YAAY,EAAE,oBAAoB,CAAC;IAC5C,QAAQ,CAAC,QAAQ,EAAE,mBAAmB,CAAC;gBAE3B,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB;IAclD,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,mBAAmB,GAAG,SAAS;IAIrD,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAI7C,gBAAgB,CAAC,KAAK,EAAE,WAAW,GAAG,iBAAiB;CAGxD;AAED,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAsB;IAC3C,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAmB;gBAE3B,IAAI,EAAE,mBAAmB,EAAE,GAAG,EAAE,gBAAgB;IAK5D,IAAI,EAAE,IAAI,MAAM,CAEf;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,IAAI,aAAa,IAAI,iBAAiB,CAErC;IAED,IAAI,WAAW,IAAI,iBAAiB,CAEnC;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,MAAM,IAAI,mBAAmB,GAAG,IAAI,CAGvC;IAED,IAAI,aAAa,IAAI,mBAAmB,EAAE,CAKzC;IAED,IAAI,oBAAoB,IAAI,mBAAmB,GAAG,IAAI,CAOrD;IAED,IAAI,eAAe,IAAI,mBAAmB,GAAG,IAAI,CAUhD;IAED,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,mBAAmB,GAAG,IAAI;IAMhD,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,mBAAmB,GAAG,IAAI;IAMhE,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,mBAAmB;IAS7E,qBAAqB,CAAC,KAAK,EAAE,iBAAiB,EAAE,GAAG,EAAE,iBAAiB,GAAG,mBAAmB;CAQ7F"}
1
+ {"version":3,"file":"projectedTree.d.ts","sourceRoot":"","sources":["../../src/native/projectedTree.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC3E,OAAO,EAIL,KAAK,oBAAoB,EAC1B,MAAM,gBAAgB,CAAC;AAExB,MAAM,MAAM,iBAAiB,GAAG;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF;;;;;;;GAOG;AACH,qBAAa,mBAAmB;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,2FAA2F;IAC3F,QAAQ,CAAC,YAAY,EAAE,oBAAoB,CAAC;IAC5C,QAAQ,CAAC,QAAQ,EAAE,mBAAmB,CAAC;IACvC,oEAAoE;IACpE,QAAQ,CAAC,OAAO,EAAE,gBAAgB,CAAC;IAEnC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAyC;IAC/D,OAAO,CAAC,YAAY,CAAkC;gBAE1C,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB;IAYlD,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,mBAAmB,GAAG,SAAS;IASrD,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAI7C,gBAAgB,CAAC,KAAK,EAAE,WAAW,GAAG,iBAAiB;IAIvD,gGAAgG;IAChG,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;CAMnD;AAED,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAsB;IAC3C,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;gBAER,IAAI,EAAE,mBAAmB,EAAE,EAAE,EAAE,MAAM;IAKjD,IAAI,IAAI,IAAI,MAAM,CAGjB;IAED,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,IAAI,aAAa,IAAI,iBAAiB,CAOrC;IAED,IAAI,WAAW,IAAI,iBAAiB,CAOnC;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,MAAM,IAAI,mBAAmB,GAAG,IAAI,CAIvC;IAED,IAAI,aAAa,IAAI,mBAAmB,EAAE,CAGzC;IAED,IAAI,oBAAoB,IAAI,mBAAmB,GAAG,IAAI,CAGrD;IAED,IAAI,eAAe,IAAI,mBAAmB,GAAG,IAAI,CAGhD;IAED,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,mBAAmB,GAAG,IAAI;IAQhD,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,mBAAmB,GAAG,IAAI;IAchE,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,mBAAmB;IAS7E,qBAAqB,CAAC,KAAK,EAAE,iBAAiB,EAAE,GAAG,EAAE,iBAAiB,GAAG,mBAAmB;IAS5F,OAAO,CAAC,OAAO;IAWf,+FAA+F;IAC/F,OAAO,CAAC,UAAU;CAYnB"}
@@ -1,17 +1,26 @@
1
1
  import { buildByteToStringIndexMap, stringIndexForByte, stringPositionForBytePoint, } from "./byteIndex.js";
2
+ /**
3
+ * Reads the native columnar projection (see `NativeSyntaxTree`) through the ordinary
4
+ * `SyntaxNodeLike` node API.
5
+ *
6
+ * Nodes are materialized lazily and memoized by id, so a walk that touches a handful
7
+ * of nodes allocates a handful of wrappers rather than one per node in the file, and
8
+ * repeated lookups of the same id return the same instance.
9
+ */
2
10
  export class ProjectedSyntaxTree {
3
11
  source;
4
- nodesById;
5
12
  /** Shared byte-offset -> UTF-16 string-index map; reuse this instead of rebuilding one. */
6
13
  byteIndexMap;
7
14
  rootNode;
15
+ /** @internal Column storage; read through `ProjectedSyntaxNode`. */
16
+ columns;
17
+ nodes;
18
+ fieldNameIds;
8
19
  constructor(source, tree) {
9
20
  this.source = source;
10
21
  this.byteIndexMap = buildByteToStringIndexMap(source);
11
- this.nodesById = new Map();
12
- for (const node of tree.nodes) {
13
- this.nodesById.set(node.id, new ProjectedSyntaxNode(this, node));
14
- }
22
+ this.columns = tree;
23
+ this.nodes = new Array(tree.nodeCount);
15
24
  const rootNode = this.nodeById(tree.rootId);
16
25
  if (!rootNode) {
17
26
  throw new Error("Projected syntax tree is missing the root node");
@@ -19,7 +28,14 @@ export class ProjectedSyntaxTree {
19
28
  this.rootNode = rootNode;
20
29
  }
21
30
  nodeById(id) {
22
- return this.nodesById.get(id);
31
+ if (id < 0 || id >= this.columns.nodeCount)
32
+ return undefined;
33
+ const existing = this.nodes[id];
34
+ if (existing)
35
+ return existing;
36
+ const created = new ProjectedSyntaxNode(this, id);
37
+ this.nodes[id] = created;
38
+ return created;
23
39
  }
24
40
  stringIndexForByte(byteIndex) {
25
41
  return stringIndexForByte(this.byteIndexMap, byteIndex);
@@ -27,80 +43,89 @@ export class ProjectedSyntaxTree {
27
43
  positionForPoint(point) {
28
44
  return stringPositionForBytePoint(this.byteIndexMap, point);
29
45
  }
46
+ /** @internal Resolve an interned field name, or `undefined` when the grammar never emits it. */
47
+ fieldNameId(fieldName) {
48
+ if (!this.fieldNameIds) {
49
+ this.fieldNameIds = new Map(this.columns.fieldNames.map((name, index) => [name, index]));
50
+ }
51
+ return this.fieldNameIds.get(fieldName);
52
+ }
30
53
  }
31
54
  export class ProjectedSyntaxNode {
32
55
  tree;
33
- raw;
34
- constructor(tree, raw) {
56
+ id;
57
+ constructor(tree, id) {
35
58
  this.tree = tree;
36
- this.raw = raw;
37
- }
38
- get id() {
39
- return this.raw.id;
59
+ this.id = id;
40
60
  }
41
61
  get type() {
42
- return this.raw.nodeType;
62
+ const columns = this.tree.columns;
63
+ return columns.kinds[columns.kindIds[this.id]];
43
64
  }
44
65
  get startIndex() {
45
- return this.tree.stringIndexForByte(this.raw.start.index);
66
+ return this.tree.stringIndexForByte(this.tree.columns.startIndex[this.id]);
46
67
  }
47
68
  get endIndex() {
48
- return this.tree.stringIndexForByte(this.raw.end.index);
69
+ return this.tree.stringIndexForByte(this.tree.columns.endIndex[this.id]);
49
70
  }
50
71
  get startPosition() {
51
- return this.tree.positionForPoint(this.raw.start);
72
+ const columns = this.tree.columns;
73
+ return this.tree.positionForPoint({
74
+ row: columns.startRow[this.id],
75
+ column: columns.startColumn[this.id],
76
+ index: columns.startIndex[this.id],
77
+ });
52
78
  }
53
79
  get endPosition() {
54
- return this.tree.positionForPoint(this.raw.end);
80
+ const columns = this.tree.columns;
81
+ return this.tree.positionForPoint({
82
+ row: columns.endRow[this.id],
83
+ column: columns.endColumn[this.id],
84
+ index: columns.endIndex[this.id],
85
+ });
55
86
  }
56
87
  get text() {
57
88
  return this.tree.source.slice(this.startIndex, this.endIndex);
58
89
  }
59
90
  get parent() {
60
- if (this.raw.parentId < 0)
91
+ const parentId = this.tree.columns.parentIds[this.id];
92
+ if (parentId < 0)
61
93
  return null;
62
- return this.tree.nodeById(this.raw.parentId) ?? null;
94
+ return this.tree.nodeById(parentId) ?? null;
63
95
  }
64
96
  get namedChildren() {
65
- return this.raw.namedChildIds.flatMap((id) => {
66
- const child = this.tree.nodeById(id);
67
- return child ? [child] : [];
68
- });
97
+ const columns = this.tree.columns;
98
+ return this.collect(columns.namedChildIds, columns.namedChildOffsets);
69
99
  }
70
100
  get previousNamedSibling() {
71
- const parent = this.parent;
72
- if (!parent)
73
- return null;
74
- const siblings = parent.namedChildren;
75
- const currentIndex = siblings.findIndex((node) => node.id === this.id);
76
- if (currentIndex <= 0)
77
- return null;
78
- return siblings[currentIndex - 1] ?? null;
101
+ const columns = this.tree.columns;
102
+ return this.previousIn(columns.namedChildIds, columns.namedChildOffsets);
79
103
  }
80
104
  get previousSibling() {
81
- const parent = this.parent;
82
- if (!parent)
83
- return null;
84
- const siblings = parent.raw.childIds.flatMap((id) => {
85
- const sibling = this.tree.nodeById(id);
86
- return sibling ? [sibling] : [];
87
- });
88
- const currentIndex = siblings.findIndex((node) => node.id === this.id);
89
- if (currentIndex <= 0)
90
- return null;
91
- return siblings[currentIndex - 1] ?? null;
105
+ const columns = this.tree.columns;
106
+ return this.previousIn(columns.childIds, columns.childOffsets);
92
107
  }
93
108
  child(index) {
94
- const childId = this.raw.childIds[index];
95
- if (childId === undefined)
109
+ const columns = this.tree.columns;
110
+ const start = columns.childOffsets[this.id];
111
+ const end = columns.childOffsets[this.id + 1];
112
+ if (index < 0 || index >= end - start)
96
113
  return null;
97
- return this.tree.nodeById(childId) ?? null;
114
+ return this.tree.nodeById(columns.childIds[start + index]) ?? null;
98
115
  }
99
116
  childForFieldName(fieldName) {
100
- const childIndex = this.raw.childFieldNames.findIndex((name) => name === fieldName);
101
- if (childIndex < 0)
117
+ const fieldNameId = this.tree.fieldNameId(fieldName);
118
+ if (fieldNameId === undefined)
102
119
  return null;
103
- return this.child(childIndex);
120
+ const columns = this.tree.columns;
121
+ const start = columns.childOffsets[this.id];
122
+ const end = columns.childOffsets[this.id + 1];
123
+ for (let slot = start; slot < end; slot += 1) {
124
+ if (columns.childFieldNameIds[slot] === fieldNameId) {
125
+ return this.tree.nodeById(columns.childIds[slot]) ?? null;
126
+ }
127
+ }
128
+ return null;
104
129
  }
105
130
  descendantForIndex(startIndex, endIndex) {
106
131
  for (const child of this.namedChildren) {
@@ -118,6 +143,33 @@ export class ProjectedSyntaxNode {
118
143
  }
119
144
  return this;
120
145
  }
146
+ collect(ids, offsets) {
147
+ const start = offsets[this.id];
148
+ const end = offsets[this.id + 1];
149
+ const out = [];
150
+ for (let slot = start; slot < end; slot += 1) {
151
+ const node = this.tree.nodeById(ids[slot]);
152
+ if (node)
153
+ out.push(node);
154
+ }
155
+ return out;
156
+ }
157
+ /** Find the previous sibling in the parent's child list without materializing the siblings. */
158
+ previousIn(ids, offsets) {
159
+ const parentId = this.tree.columns.parentIds[this.id];
160
+ if (parentId < 0)
161
+ return null;
162
+ const start = offsets[parentId];
163
+ const end = offsets[parentId + 1];
164
+ for (let slot = start; slot < end; slot += 1) {
165
+ if (ids[slot] !== this.id)
166
+ continue;
167
+ if (slot === start)
168
+ return null;
169
+ return this.tree.nodeById(ids[slot - 1]) ?? null;
170
+ }
171
+ return null;
172
+ }
121
173
  }
122
174
  function comparePosition(left, right) {
123
175
  if (left.row !== right.row) {
@@ -1 +1 @@
1
- {"version":3,"file":"projectedTree.js","sourceRoot":"","sources":["../../src/native/projectedTree.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"projectedTree.js","sourceRoot":"","sources":["../../src/native/projectedTree.ts"],"names":[],"mappings":"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"}
@@ -1,14 +1,60 @@
1
- import type { NativeBindingOrigin, NativeBindingState, NativeRuntimeMode } from "./contracts.js";
1
+ import type { NativeBindingOrigin, NativeBindingState, NativeRuntimeMode, NativeWorkerBindingHandoff } from "./contracts.js";
2
2
  export declare function __resetNativeTreeSitterBindingForTests(): void;
3
3
  export declare function isNativeTreeSitterDisabledByEnv(env?: NodeJS.ProcessEnv): boolean;
4
4
  export declare function normalizeNativeRuntimeMode(mode?: NativeRuntimeMode): NativeRuntimeMode;
5
5
  export declare function loadBinding(): NativeBindingState;
6
6
  export declare function resolveNativeBindingState(mode?: NativeRuntimeMode, env?: NodeJS.ProcessEnv): NativeBindingState;
7
+ /**
8
+ * The binding-derived half of the runtime fingerprint: everything the serializer reads that a
9
+ * full addon load would otherwise be needed to obtain.
10
+ */
11
+ export type NativeRuntimeIdentity = {
12
+ available: boolean;
13
+ supportedLanguageIds: string[];
14
+ origin: NativeBindingOrigin | undefined;
15
+ /** Cache-only deadline; omitted for identities obtained from a loaded binding. */
16
+ cacheIdentityRevalidateAt?: number | undefined;
17
+ };
18
+ /**
19
+ * Takes the binding-derived facts rather than a NativeBindingState, because the cache fast path
20
+ * below reconstructs those facts from a recorded identity and has no binding to hand.
21
+ */
22
+ export declare function serializeNativeRuntimeFingerprint(requestedMode: NativeRuntimeMode, envDisabled: boolean, identity: NativeRuntimeIdentity): string;
23
+ /**
24
+ * Rebuild the binding-derived half of the fingerprint from a recorded cache identity, without
25
+ * mapping the addon.
26
+ *
27
+ * Every caller of getNativeRuntimeFingerprint reaches it to decide whether an on-disk index is
28
+ * still valid, which is why a command that only reads a warm cache used to pay a full native
29
+ * load to prove it did not need one. A recorded identity supplies the two things the load was
30
+ * for - the supported language list and the binding origin - and stores the origin whole, so
31
+ * the string produced here is the same one a load produces.
32
+ *
33
+ * Returns undefined whenever anything is unproven: a workspace checkout (which resolves its own
34
+ * binary and never populates the cache), a platform without the runtime cache, an unresolvable
35
+ * platform package, or no identity record that still matches the files on disk.
36
+ */
37
+ export type CachedRuntimeIdentityOptions = {
38
+ /** Injected in tests; the runtime cache exists only on Windows. */
39
+ platform?: NodeJS.Platform | undefined;
40
+ arch?: string | undefined;
41
+ localPackageRoot?: string | undefined;
42
+ resolveFn?: ((specifier: string) => string) | undefined;
43
+ cacheRoot?: string | undefined;
44
+ now?: number | undefined;
45
+ };
46
+ export declare function resolveCachedRuntimeIdentity(options?: CachedRuntimeIdentityOptions): NativeRuntimeIdentity | undefined;
7
47
  export declare function getNativeRuntimeFingerprint(mode?: NativeRuntimeMode, env?: NodeJS.ProcessEnv): string;
8
48
  export declare function isNativeTreeSitterAvailable(mode?: NativeRuntimeMode): boolean;
9
49
  export declare function getNativeTreeSitterLoadError(mode?: NativeRuntimeMode): unknown;
10
50
  export declare function getNativeBindingOrigin(): NativeBindingOrigin | undefined;
11
51
  export declare function getCurrentNativeBindingOrigin(): NativeBindingOrigin | undefined;
52
+ /**
53
+ * The resolved addon path for a binding this process has already loaded, for handing to worker
54
+ * threads. Undefined unless a load succeeded, so a worker is never pointed at a path that did
55
+ * not work here.
56
+ */
57
+ export declare function getNativeWorkerBindingHandoff(): NativeWorkerBindingHandoff | undefined;
12
58
  export declare function getNativeTreeSitterSupportedLanguageIds(mode?: NativeRuntimeMode): string[];
13
59
  export declare function isNativeRequiredUnavailableError(error: unknown): boolean;
14
60
  export declare function throwIfNativeRequiredUnavailable(mode: NativeRuntimeMode | undefined, state: NativeBindingState): void;
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/native/runtime.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAiB,mBAAmB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAqBhH,wBAAgB,sCAAsC,IAAI,IAAI,CAG7D;AAED,wBAAgB,+BAA+B,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,OAAO,CAO7F;AAED,wBAAgB,0BAA0B,CAAC,IAAI,CAAC,EAAE,iBAAiB,GAAG,iBAAiB,CAEtF;AAED,wBAAgB,WAAW,IAAI,kBAAkB,CAuBhD;AAED,wBAAgB,yBAAyB,CACvC,IAAI,CAAC,EAAE,iBAAiB,EACxB,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,kBAAkB,CAepB;AA+BD,wBAAgB,2BAA2B,CAAC,IAAI,CAAC,EAAE,iBAAiB,EAAE,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CA4BlH;AAED,wBAAgB,2BAA2B,CAAC,IAAI,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAE7E;AAED,wBAAgB,4BAA4B,CAAC,IAAI,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAG9E;AAED,wBAAgB,sBAAsB,IAAI,mBAAmB,GAAG,SAAS,CAExE;AAED,wBAAgB,6BAA6B,IAAI,mBAAmB,GAAG,SAAS,CAE/E;AAED,wBAAgB,uCAAuC,CAAC,IAAI,CAAC,EAAE,iBAAiB,GAAG,MAAM,EAAE,CAG1F;AAED,wBAAgB,gCAAgC,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAExE;AAED,wBAAgB,gCAAgC,CAAC,IAAI,EAAE,iBAAiB,GAAG,SAAS,EAAE,KAAK,EAAE,kBAAkB,GAAG,IAAI,CAIrH;AAED,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,iBAAiB,GAAG,SAAS,GAAG,IAAI,CAIvF;AAED,wBAAgB,gCAAgC,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAGtG"}
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/native/runtime.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAEV,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,EACjB,0BAA0B,EAC3B,MAAM,gBAAgB,CAAC;AAsCxB,wBAAgB,sCAAsC,IAAI,IAAI,CAI7D;AAED,wBAAgB,+BAA+B,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,OAAO,CAO7F;AAED,wBAAgB,0BAA0B,CAAC,IAAI,CAAC,EAAE,iBAAiB,GAAG,iBAAiB,CAEtF;AAED,wBAAgB,WAAW,IAAI,kBAAkB,CA2ChD;AAED,wBAAgB,yBAAyB,CACvC,IAAI,CAAC,EAAE,iBAAiB,EACxB,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,kBAAkB,CAepB;AACD;;;GAGG;AACH,MAAM,MAAM,qBAAqB,GAAG;IAClC,SAAS,EAAE,OAAO,CAAC;IACnB,oBAAoB,EAAE,MAAM,EAAE,CAAC;IAC/B,MAAM,EAAE,mBAAmB,GAAG,SAAS,CAAC;IACxC,kFAAkF;IAClF,yBAAyB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAChD,CAAC;AAqCF;;;GAGG;AACH,wBAAgB,iCAAiC,CAC/C,aAAa,EAAE,iBAAiB,EAChC,WAAW,EAAE,OAAO,EACpB,QAAQ,EAAE,qBAAqB,GAC9B,MAAM,CAuBR;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,4BAA4B,GAAG;IACzC,mEAAmE;IACnE,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,GAAG,SAAS,CAAC;IACvC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,SAAS,CAAC,EAAE,CAAC,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,CAAC,GAAG,SAAS,CAAC;IACxD,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC1B,CAAC;AAEF,wBAAgB,4BAA4B,CAC1C,OAAO,GAAE,4BAAiC,GACzC,qBAAqB,GAAG,SAAS,CA8CnC;AAED,wBAAgB,2BAA2B,CAAC,IAAI,CAAC,EAAE,iBAAiB,EAAE,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAyDlH;AAED,wBAAgB,2BAA2B,CAAC,IAAI,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAE7E;AAED,wBAAgB,4BAA4B,CAAC,IAAI,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAG9E;AAED,wBAAgB,sBAAsB,IAAI,mBAAmB,GAAG,SAAS,CAExE;AAED,wBAAgB,6BAA6B,IAAI,mBAAmB,GAAG,SAAS,CAE/E;AAED;;;;GAIG;AACH,wBAAgB,6BAA6B,IAAI,0BAA0B,GAAG,SAAS,CAKtF;AAED,wBAAgB,uCAAuC,CAAC,IAAI,CAAC,EAAE,iBAAiB,GAAG,MAAM,EAAE,CAG1F;AAED,wBAAgB,gCAAgC,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAExE;AAED,wBAAgB,gCAAgC,CAAC,IAAI,EAAE,iBAAiB,GAAG,SAAS,EAAE,KAAK,EAAE,kBAAkB,GAAG,IAAI,CAIrH;AAED,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,iBAAiB,GAAG,SAAS,GAAG,IAAI,CAIvF;AAED,wBAAgB,gCAAgC,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAGtG"}
@@ -1,17 +1,22 @@
1
+ import fs from "node:fs";
1
2
  import path from "node:path";
2
3
  import { createRequire } from "node:module";
3
4
  import { fileURLToPath } from "node:url";
4
5
  import { stringifyUnknown } from "../util/ast.js";
5
- import { loadNativeBinding } from "./bindingLoader.js";
6
+ import { currentNativeTargetSuffix, findLocalNativeBinary, loadNativeBinding, nativeTargetSuffixFor, readPlatformPackage, } from "./bindingLoader.js";
7
+ import { lookupNativeRuntimeCacheEntry, recordNativeRuntimeCacheIdentity } from "./runtimeCache.js";
6
8
  const require = createRequire(import.meta.url);
7
9
  const localNativePackageRoot = path.resolve(path.dirname(fileURLToPath(import.meta.url)), "../../packages/codegraph-native");
8
10
  const NATIVE_REQUIRED_ERROR_PREFIX = "native tree-sitter required by explicit option but unavailable";
9
11
  let bindingState;
10
12
  let loadedRuntimeFingerprint;
11
13
  const disabledRuntimeFingerprints = new Map();
14
+ const cachedRuntimeFingerprints = new Map();
15
+ const cachedRuntimeIdentityValidations = new WeakMap();
12
16
  export function __resetNativeTreeSitterBindingForTests() {
13
17
  bindingState = undefined;
14
18
  loadedRuntimeFingerprint = undefined;
19
+ cachedRuntimeFingerprints.clear();
15
20
  }
16
21
  export function isNativeTreeSitterDisabledByEnv(env = process.env) {
17
22
  const rawValue = env.CODEGRAPH_DISABLE_NATIVE;
@@ -27,6 +32,7 @@ export function normalizeNativeRuntimeMode(mode) {
27
32
  export function loadBinding() {
28
33
  if (bindingState)
29
34
  return bindingState;
35
+ cachedRuntimeFingerprints.clear();
30
36
  const loaded = loadNativeBinding({
31
37
  packageName: "@lzehrung/codegraph-native",
32
38
  localPackageRoot: localNativePackageRoot,
@@ -34,12 +40,31 @@ export function loadBinding() {
34
40
  resolveFn: require.resolve,
35
41
  });
36
42
  if (loaded.binding) {
43
+ const supportedLanguageIds = new Set(loaded.binding.supportedLanguageIds());
37
44
  bindingState = {
38
45
  loaded: true,
39
46
  binding: loaded.binding,
40
- supportedLanguageIds: new Set(loaded.binding.supportedLanguageIds()),
47
+ supportedLanguageIds,
41
48
  origin: loaded.origin,
42
49
  };
50
+ // Now, and only now, every fact a later process needs to skip this work is known: the files
51
+ // were hashed and verified, the addon loaded, and it reported its languages. Recording only
52
+ // a verified load keeps the re-verification TTL honest - a fast-path hit must not renew it.
53
+ if (loaded.cacheEntry?.verified) {
54
+ recordNativeRuntimeCacheIdentity({
55
+ sourcePath: loaded.cacheEntry.sourcePath,
56
+ loadedPath: loaded.cacheEntry.loadedPath,
57
+ cacheKey: loaded.cacheEntry.cacheKey,
58
+ sha256: loaded.cacheEntry.sha256,
59
+ sourceSize: loaded.cacheEntry.sourceSize,
60
+ sourceMtimeMs: loaded.cacheEntry.sourceMtimeMs,
61
+ cachedSize: loaded.cacheEntry.cachedSize,
62
+ cachedMtimeMs: loaded.cacheEntry.cachedMtimeMs,
63
+ verifiedAt: new Date().toISOString(),
64
+ supportedLanguageIds: Array.from(supportedLanguageIds).sort(),
65
+ origin: loaded.origin,
66
+ });
67
+ }
43
68
  return bindingState;
44
69
  }
45
70
  bindingState = {
@@ -65,14 +90,48 @@ export function resolveNativeBindingState(mode, env = process.env) {
65
90
  }
66
91
  return loadBinding();
67
92
  }
68
- function serializeNativeRuntimeFingerprint(requestedMode, envDisabled, state) {
69
- const supportedLanguageIds = state.loaded ? Array.from(state.supportedLanguageIds).sort() : [];
70
- const origin = state.origin;
93
+ function identityFromState(state) {
94
+ return {
95
+ available: state.loaded,
96
+ supportedLanguageIds: state.loaded ? Array.from(state.supportedLanguageIds).sort() : [],
97
+ origin: state.origin,
98
+ };
99
+ }
100
+ function cacheFingerprintFilesMatch(validation) {
101
+ try {
102
+ const sourcePath = fs.realpathSync.native(validation.sourcePath);
103
+ if (sourcePath !== validation.sourcePath)
104
+ return false;
105
+ const sourceStats = fs.statSync(sourcePath);
106
+ if (!sourceStats.isFile() ||
107
+ sourceStats.size !== validation.sourceSize ||
108
+ sourceStats.mtimeMs !== validation.sourceMtimeMs) {
109
+ return false;
110
+ }
111
+ const loadedPath = fs.realpathSync.native(validation.loadedPath);
112
+ if (loadedPath !== validation.loadedPath)
113
+ return false;
114
+ const cachedStats = fs.lstatSync(loadedPath);
115
+ return (cachedStats.isFile() &&
116
+ !cachedStats.isSymbolicLink() &&
117
+ cachedStats.size === validation.cachedSize &&
118
+ cachedStats.mtimeMs === validation.cachedMtimeMs);
119
+ }
120
+ catch {
121
+ return false;
122
+ }
123
+ }
124
+ /**
125
+ * Takes the binding-derived facts rather than a NativeBindingState, because the cache fast path
126
+ * below reconstructs those facts from a recorded identity and has no binding to hand.
127
+ */
128
+ export function serializeNativeRuntimeFingerprint(requestedMode, envDisabled, identity) {
129
+ const { available, supportedLanguageIds, origin } = identity;
71
130
  return JSON.stringify({
72
131
  version: 1,
73
132
  requestedMode,
74
133
  envDisabled,
75
- available: state.loaded,
134
+ available,
76
135
  supportedLanguageIds,
77
136
  ...(origin
78
137
  ? {
@@ -90,6 +149,52 @@ function serializeNativeRuntimeFingerprint(requestedMode, envDisabled, state) {
90
149
  : {}),
91
150
  });
92
151
  }
152
+ export function resolveCachedRuntimeIdentity(options = {}) {
153
+ // A workspace binary wins in loadNativeBinding, so its fingerprint must not be answered from
154
+ // a cache entry describing the installed package.
155
+ if (findLocalNativeBinary(options.localPackageRoot ?? localNativePackageRoot))
156
+ return undefined;
157
+ if ((options.platform ?? process.platform) !== "win32")
158
+ return undefined;
159
+ // currentNativeTargetSuffix reads the real process; when a platform is injected the suffix has
160
+ // to be derived from it, or a Linux test box would look for its own target under a win32 root.
161
+ const target = options.platform
162
+ ? nativeTargetSuffixFor(options.platform, options.arch ?? process.arch)
163
+ : currentNativeTargetSuffix();
164
+ if (!target)
165
+ return undefined;
166
+ try {
167
+ const platformPackage = readPlatformPackage("@lzehrung/codegraph-native", target, options.resolveFn ?? require.resolve);
168
+ const hit = lookupNativeRuntimeCacheEntry({
169
+ sourcePath: platformPackage.sourcePath,
170
+ packageName: `@lzehrung/codegraph-native-${target}`,
171
+ packageVersion: platformPackage.packageVersion,
172
+ target,
173
+ ...(options.cacheRoot !== undefined ? { cacheRoot: options.cacheRoot } : {}),
174
+ ...(options.now !== undefined ? { now: options.now } : {}),
175
+ });
176
+ if (!hit)
177
+ return undefined;
178
+ const identity = {
179
+ available: true,
180
+ supportedLanguageIds: hit.identity.supportedLanguageIds,
181
+ origin: hit.identity.origin,
182
+ cacheIdentityRevalidateAt: hit.revalidateAt,
183
+ };
184
+ cachedRuntimeIdentityValidations.set(identity, {
185
+ sourcePath: hit.identity.sourcePath,
186
+ sourceSize: hit.identity.sourceSize,
187
+ sourceMtimeMs: hit.identity.sourceMtimeMs,
188
+ loadedPath: hit.identity.loadedPath,
189
+ cachedSize: hit.identity.cachedSize,
190
+ cachedMtimeMs: hit.identity.cachedMtimeMs,
191
+ });
192
+ return identity;
193
+ }
194
+ catch {
195
+ return undefined;
196
+ }
197
+ }
93
198
  export function getNativeRuntimeFingerprint(mode, env = process.env) {
94
199
  const requestedMode = normalizeNativeRuntimeMode(mode);
95
200
  const envDisabled = isNativeTreeSitterDisabledByEnv(env);
@@ -99,17 +204,42 @@ export function getNativeRuntimeFingerprint(mode, env = process.env) {
99
204
  const cached = disabledRuntimeFingerprints.get(key);
100
205
  if (cached)
101
206
  return cached;
102
- const fingerprint = serializeNativeRuntimeFingerprint(requestedMode, envDisabled, resolveNativeBindingState(mode, env));
207
+ const fingerprint = serializeNativeRuntimeFingerprint(requestedMode, envDisabled, identityFromState(resolveNativeBindingState(mode, env)));
103
208
  disabledRuntimeFingerprints.set(key, fingerprint);
104
209
  return fingerprint;
105
210
  }
211
+ // A cached identity is valid only while its current source and cache stats match and its
212
+ // re-verification window has not elapsed. Recheck it on every fingerprint request; the probe
213
+ // stays cheap (one directory read and two stats) and avoids extending stat-only trust.
214
+ if (!bindingState) {
215
+ const cacheKey = `${requestedMode}:${envDisabled}`;
216
+ const now = Date.now();
217
+ const memoized = cachedRuntimeFingerprints.get(cacheKey);
218
+ if (memoized && now < memoized.revalidateAt && cacheFingerprintFilesMatch(memoized.validation)) {
219
+ return memoized.value;
220
+ }
221
+ const cachedIdentity = resolveCachedRuntimeIdentity();
222
+ const validation = cachedIdentity ? cachedRuntimeIdentityValidations.get(cachedIdentity) : undefined;
223
+ if (cachedIdentity?.cacheIdentityRevalidateAt !== undefined &&
224
+ validation &&
225
+ cacheFingerprintFilesMatch(validation)) {
226
+ const value = serializeNativeRuntimeFingerprint(requestedMode, envDisabled, cachedIdentity);
227
+ cachedRuntimeFingerprints.set(cacheKey, {
228
+ value,
229
+ revalidateAt: cachedIdentity.cacheIdentityRevalidateAt,
230
+ validation,
231
+ });
232
+ return value;
233
+ }
234
+ cachedRuntimeFingerprints.delete(cacheKey);
235
+ }
106
236
  const state = loadBinding();
107
237
  if (loadedRuntimeFingerprint?.state === state &&
108
238
  loadedRuntimeFingerprint.requestedMode === requestedMode &&
109
239
  loadedRuntimeFingerprint.envDisabled === envDisabled) {
110
240
  return loadedRuntimeFingerprint.value;
111
241
  }
112
- const value = serializeNativeRuntimeFingerprint(requestedMode, envDisabled, state);
242
+ const value = serializeNativeRuntimeFingerprint(requestedMode, envDisabled, identityFromState(state));
113
243
  loadedRuntimeFingerprint = { state, requestedMode, envDisabled, value };
114
244
  return value;
115
245
  }
@@ -126,6 +256,19 @@ export function getNativeBindingOrigin() {
126
256
  export function getCurrentNativeBindingOrigin() {
127
257
  return bindingState?.origin;
128
258
  }
259
+ /**
260
+ * The resolved addon path for a binding this process has already loaded, for handing to worker
261
+ * threads. Undefined unless a load succeeded, so a worker is never pointed at a path that did
262
+ * not work here.
263
+ */
264
+ export function getNativeWorkerBindingHandoff() {
265
+ if (!bindingState?.loaded)
266
+ return undefined;
267
+ const loadedPath = bindingState.origin.loadedPath;
268
+ if (!loadedPath)
269
+ return undefined;
270
+ return { loadedPath, origin: bindingState.origin };
271
+ }
129
272
  export function getNativeTreeSitterSupportedLanguageIds(mode) {
130
273
  const state = resolveNativeBindingState(mode);
131
274
  return state.loaded ? Array.from(state.supportedLanguageIds).sort() : [];
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/native/runtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/native/runtime.ts"],"names":[],"mappings":"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"}