@jafreck/lore 0.3.5 → 0.3.7

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 (401) hide show
  1. package/README.md +51 -58
  2. package/dist/cli.js +76 -22
  3. package/dist/cli.js.map +1 -1
  4. package/dist/{lore-server/db.d.ts → db/read-only.d.ts} +1 -1
  5. package/dist/db/read-only.d.ts.map +1 -0
  6. package/dist/{lore-server/db.js → db/read-only.js} +1 -1
  7. package/dist/db/read-only.js.map +1 -0
  8. package/dist/{indexer/db.d.ts → db/schema.d.ts} +1 -1
  9. package/dist/db/schema.d.ts.map +1 -0
  10. package/dist/{indexer/db.js → db/schema.js} +10 -3
  11. package/dist/db/schema.js.map +1 -0
  12. package/dist/{indexer → discovery}/poller.d.ts +27 -2
  13. package/dist/discovery/poller.d.ts.map +1 -0
  14. package/dist/{indexer → discovery}/poller.js +60 -1
  15. package/dist/discovery/poller.js.map +1 -0
  16. package/dist/{indexer → discovery}/walker.d.ts +1 -1
  17. package/dist/discovery/walker.d.ts.map +1 -0
  18. package/dist/{indexer → discovery}/walker.js +1 -1
  19. package/dist/discovery/walker.js.map +1 -0
  20. package/dist/{indexer → discovery}/watcher.d.ts +27 -2
  21. package/dist/discovery/watcher.d.ts.map +1 -0
  22. package/dist/{indexer → discovery}/watcher.js +62 -1
  23. package/dist/discovery/watcher.js.map +1 -0
  24. package/dist/docs/docs.d.ts.map +1 -0
  25. package/dist/docs/docs.js.map +1 -0
  26. package/dist/{indexer → embeddings}/embedder.d.ts +12 -8
  27. package/dist/embeddings/embedder.d.ts.map +1 -0
  28. package/dist/{indexer → embeddings}/embedder.js +35 -19
  29. package/dist/embeddings/embedder.js.map +1 -0
  30. package/dist/{indexer/git-history.d.ts → git/history.d.ts} +2 -2
  31. package/dist/git/history.d.ts.map +1 -0
  32. package/dist/{indexer/git-history.js → git/history.js} +2 -2
  33. package/dist/git/history.js.map +1 -0
  34. package/dist/{indexer/git-hooks.d.ts → git/hooks.d.ts} +2 -1
  35. package/dist/git/hooks.d.ts.map +1 -0
  36. package/dist/{indexer/git-hooks.js → git/hooks.js} +5 -4
  37. package/dist/git/hooks.js.map +1 -0
  38. package/dist/index.d.ts +29 -28
  39. package/dist/index.d.ts.map +1 -1
  40. package/dist/index.js +14 -14
  41. package/dist/index.js.map +1 -1
  42. package/dist/indexer/index.d.ts +9 -6
  43. package/dist/indexer/index.d.ts.map +1 -1
  44. package/dist/indexer/index.js +58 -17
  45. package/dist/indexer/index.js.map +1 -1
  46. package/dist/indexer/pipeline.d.ts +58 -20
  47. package/dist/indexer/pipeline.d.ts.map +1 -1
  48. package/dist/indexer/pipeline.js +53 -26
  49. package/dist/indexer/pipeline.js.map +1 -1
  50. package/dist/indexer/stages/dependency-api.js +4 -4
  51. package/dist/indexer/stages/dependency-api.js.map +1 -1
  52. package/dist/indexer/stages/docs-index.d.ts +2 -2
  53. package/dist/indexer/stages/docs-index.d.ts.map +1 -1
  54. package/dist/indexer/stages/docs-index.js +2 -2
  55. package/dist/indexer/stages/docs-index.js.map +1 -1
  56. package/dist/indexer/stages/embedding.js +2 -2
  57. package/dist/indexer/stages/embedding.js.map +1 -1
  58. package/dist/indexer/stages/import-resolution.js +1 -1
  59. package/dist/indexer/stages/import-resolution.js.map +1 -1
  60. package/dist/indexer/stages/index.d.ts +2 -0
  61. package/dist/indexer/stages/index.d.ts.map +1 -1
  62. package/dist/indexer/stages/index.js +2 -0
  63. package/dist/indexer/stages/index.js.map +1 -1
  64. package/dist/indexer/stages/lsp-enrichment.d.ts +3 -3
  65. package/dist/indexer/stages/lsp-enrichment.d.ts.map +1 -1
  66. package/dist/indexer/stages/lsp-enrichment.js +147 -18
  67. package/dist/indexer/stages/lsp-enrichment.js.map +1 -1
  68. package/dist/indexer/stages/scip-enrichment.d.ts +43 -0
  69. package/dist/indexer/stages/scip-enrichment.d.ts.map +1 -0
  70. package/dist/indexer/stages/scip-enrichment.js +172 -0
  71. package/dist/indexer/stages/scip-enrichment.js.map +1 -0
  72. package/dist/indexer/stages/scip-source.d.ts +117 -0
  73. package/dist/indexer/stages/scip-source.d.ts.map +1 -0
  74. package/dist/indexer/stages/scip-source.js +924 -0
  75. package/dist/indexer/stages/scip-source.js.map +1 -0
  76. package/dist/indexer/stages/source-index.d.ts +3 -3
  77. package/dist/indexer/stages/source-index.d.ts.map +1 -1
  78. package/dist/indexer/stages/source-index.js +126 -46
  79. package/dist/indexer/stages/source-index.js.map +1 -1
  80. package/dist/lsp/client.d.ts.map +1 -0
  81. package/dist/{indexer/lsp → lsp}/client.js +1 -1
  82. package/dist/lsp/client.js.map +1 -0
  83. package/dist/lsp/config.d.ts.map +1 -0
  84. package/dist/{indexer/lsp → lsp}/config.js +1 -1
  85. package/dist/lsp/config.js.map +1 -0
  86. package/dist/lsp/enrichment.d.ts.map +1 -0
  87. package/dist/lsp/enrichment.js.map +1 -0
  88. package/dist/lsp/registry.d.ts.map +1 -0
  89. package/dist/{indexer/lsp → lsp}/registry.js +1 -1
  90. package/dist/lsp/registry.js.map +1 -0
  91. package/dist/{indexer → parsing}/complexity.d.ts.map +1 -1
  92. package/dist/{indexer → parsing}/complexity.js.map +1 -1
  93. package/dist/{indexer → parsing}/config-parser.d.ts.map +1 -1
  94. package/dist/{indexer → parsing}/config-parser.js.map +1 -1
  95. package/dist/{indexer → parsing}/extractors/bash.d.ts.map +1 -1
  96. package/dist/{indexer → parsing}/extractors/bash.js.map +1 -1
  97. package/dist/{indexer → parsing}/extractors/c.d.ts.map +1 -1
  98. package/dist/{indexer → parsing}/extractors/c.js +4 -4
  99. package/dist/parsing/extractors/c.js.map +1 -0
  100. package/dist/{indexer → parsing}/extractors/cpp.d.ts.map +1 -1
  101. package/dist/{indexer → parsing}/extractors/cpp.js +6 -12
  102. package/dist/parsing/extractors/cpp.js.map +1 -0
  103. package/dist/{indexer → parsing}/extractors/csharp.d.ts.map +1 -1
  104. package/dist/{indexer → parsing}/extractors/csharp.js +1 -6
  105. package/dist/{indexer → parsing}/extractors/csharp.js.map +1 -1
  106. package/dist/{indexer → parsing}/extractors/elixir.d.ts.map +1 -1
  107. package/dist/{indexer → parsing}/extractors/elixir.js +10 -15
  108. package/dist/parsing/extractors/elixir.js.map +1 -0
  109. package/dist/{indexer → parsing}/extractors/elm.d.ts.map +1 -1
  110. package/dist/{indexer → parsing}/extractors/elm.js.map +1 -1
  111. package/dist/{indexer → parsing}/extractors/go.d.ts.map +1 -1
  112. package/dist/{indexer → parsing}/extractors/go.js +0 -1
  113. package/dist/parsing/extractors/go.js.map +1 -0
  114. package/dist/{indexer → parsing}/extractors/haskell.d.ts.map +1 -1
  115. package/dist/{indexer → parsing}/extractors/haskell.js +2 -4
  116. package/dist/parsing/extractors/haskell.js.map +1 -0
  117. package/dist/{indexer → parsing}/extractors/java.d.ts.map +1 -1
  118. package/dist/{indexer → parsing}/extractors/java.js.map +1 -1
  119. package/dist/{indexer → parsing}/extractors/javascript.d.ts.map +1 -1
  120. package/dist/{indexer → parsing}/extractors/javascript.js +23 -3
  121. package/dist/parsing/extractors/javascript.js.map +1 -0
  122. package/dist/{indexer → parsing}/extractors/julia.d.ts.map +1 -1
  123. package/dist/{indexer → parsing}/extractors/julia.js.map +1 -1
  124. package/dist/{indexer → parsing}/extractors/kotlin.d.ts.map +1 -1
  125. package/dist/{indexer → parsing}/extractors/kotlin.js +4 -3
  126. package/dist/{indexer → parsing}/extractors/kotlin.js.map +1 -1
  127. package/dist/{indexer → parsing}/extractors/lua.d.ts.map +1 -1
  128. package/dist/{indexer → parsing}/extractors/lua.js +1 -13
  129. package/dist/parsing/extractors/lua.js.map +1 -0
  130. package/dist/{indexer → parsing}/extractors/objc.d.ts.map +1 -1
  131. package/dist/{indexer → parsing}/extractors/objc.js +4 -6
  132. package/dist/parsing/extractors/objc.js.map +1 -0
  133. package/dist/{indexer → parsing}/extractors/ocaml.d.ts.map +1 -1
  134. package/dist/{indexer → parsing}/extractors/ocaml.js +2 -10
  135. package/dist/parsing/extractors/ocaml.js.map +1 -0
  136. package/dist/{indexer → parsing}/extractors/php.d.ts.map +1 -1
  137. package/dist/{indexer → parsing}/extractors/php.js.map +1 -1
  138. package/dist/{indexer → parsing}/extractors/python.d.ts.map +1 -1
  139. package/dist/{indexer → parsing}/extractors/python.js.map +1 -1
  140. package/dist/{indexer → parsing}/extractors/ruby.d.ts.map +1 -1
  141. package/dist/{indexer → parsing}/extractors/ruby.js.map +1 -1
  142. package/dist/{indexer → parsing}/extractors/rust.d.ts.map +1 -1
  143. package/dist/{indexer → parsing}/extractors/rust.js +1 -1
  144. package/dist/{indexer → parsing}/extractors/rust.js.map +1 -1
  145. package/dist/{indexer → parsing}/extractors/scala.d.ts.map +1 -1
  146. package/dist/{indexer → parsing}/extractors/scala.js.map +1 -1
  147. package/dist/{indexer → parsing}/extractors/swift.d.ts.map +1 -1
  148. package/dist/{indexer → parsing}/extractors/swift.js.map +1 -1
  149. package/dist/{indexer → parsing}/extractors/types.d.ts.map +1 -1
  150. package/dist/{indexer → parsing}/extractors/types.js.map +1 -1
  151. package/dist/{indexer → parsing}/extractors/typescript.d.ts.map +1 -1
  152. package/dist/{indexer → parsing}/extractors/typescript.js +61 -19
  153. package/dist/parsing/extractors/typescript.js.map +1 -0
  154. package/dist/{indexer → parsing}/extractors/zig.d.ts.map +1 -1
  155. package/dist/{indexer → parsing}/extractors/zig.js +0 -4
  156. package/dist/parsing/extractors/zig.js.map +1 -0
  157. package/dist/{indexer → parsing}/parser.d.ts.map +1 -1
  158. package/dist/{indexer → parsing}/parser.js.map +1 -1
  159. package/dist/{indexer → resolution}/call-graph.d.ts +15 -1
  160. package/dist/resolution/call-graph.d.ts.map +1 -0
  161. package/dist/{indexer → resolution}/call-graph.js +34 -0
  162. package/dist/resolution/call-graph.js.map +1 -0
  163. package/dist/{indexer → resolution}/graph-analysis.d.ts +1 -1
  164. package/dist/resolution/graph-analysis.d.ts.map +1 -0
  165. package/dist/resolution/graph-analysis.js.map +1 -0
  166. package/dist/{indexer → resolution}/resolution-method.d.ts +3 -1
  167. package/dist/resolution/resolution-method.d.ts.map +1 -0
  168. package/dist/{indexer → resolution}/resolution-method.js +4 -0
  169. package/dist/resolution/resolution-method.js.map +1 -0
  170. package/dist/{indexer → resolution}/resolver.d.ts +7 -1
  171. package/dist/resolution/resolver.d.ts.map +1 -0
  172. package/dist/{indexer → resolution}/resolver.js +21 -0
  173. package/dist/resolution/resolver.js.map +1 -0
  174. package/dist/runtime.d.ts +6 -3
  175. package/dist/runtime.d.ts.map +1 -1
  176. package/dist/runtime.js +5 -3
  177. package/dist/runtime.js.map +1 -1
  178. package/dist/scip/config.d.ts +32 -0
  179. package/dist/scip/config.d.ts.map +1 -0
  180. package/dist/scip/config.js +96 -0
  181. package/dist/scip/config.js.map +1 -0
  182. package/dist/scip/enrichment.d.ts +56 -0
  183. package/dist/scip/enrichment.d.ts.map +1 -0
  184. package/dist/scip/enrichment.js +258 -0
  185. package/dist/scip/enrichment.js.map +1 -0
  186. package/dist/scip/index-reader.d.ts +100 -0
  187. package/dist/scip/index-reader.d.ts.map +1 -0
  188. package/dist/scip/index-reader.js +225 -0
  189. package/dist/scip/index-reader.js.map +1 -0
  190. package/dist/scip/registry.d.ts +51 -0
  191. package/dist/scip/registry.d.ts.map +1 -0
  192. package/dist/scip/registry.js +131 -0
  193. package/dist/scip/registry.js.map +1 -0
  194. package/dist/scip/scip_pb.d.ts +2118 -0
  195. package/dist/scip/scip_pb.d.ts.map +1 -0
  196. package/dist/scip/scip_pb.js +1534 -0
  197. package/dist/scip/scip_pb.js.map +1 -0
  198. package/dist/{lore-server → server}/server.d.ts +3 -4
  199. package/dist/server/server.d.ts.map +1 -0
  200. package/dist/{lore-server → server}/server.js +4 -13
  201. package/dist/server/server.js.map +1 -0
  202. package/dist/{lore-server → server}/tool-registry.d.ts +2 -2
  203. package/dist/server/tool-registry.d.ts.map +1 -0
  204. package/dist/{lore-server → server}/tool-registry.js +1 -26
  205. package/dist/server/tool-registry.js.map +1 -0
  206. package/dist/{lore-server → server}/tools/blame.d.ts +1 -1
  207. package/dist/server/tools/blame.d.ts.map +1 -0
  208. package/dist/{lore-server → server}/tools/blame.js +1 -1
  209. package/dist/server/tools/blame.js.map +1 -0
  210. package/dist/{lore-server → server}/tools/docs.d.ts +3 -3
  211. package/dist/server/tools/docs.d.ts.map +1 -0
  212. package/dist/{lore-server → server}/tools/docs.js +1 -1
  213. package/dist/server/tools/docs.js.map +1 -0
  214. package/dist/{lore-server → server}/tools/graph.d.ts +32 -6
  215. package/dist/server/tools/graph.d.ts.map +1 -0
  216. package/dist/{lore-server → server}/tools/graph.js +115 -90
  217. package/dist/server/tools/graph.js.map +1 -0
  218. package/dist/{lore-server → server}/tools/history.d.ts +3 -3
  219. package/dist/server/tools/history.d.ts.map +1 -0
  220. package/dist/{lore-server → server}/tools/history.js +1 -1
  221. package/dist/server/tools/history.js.map +1 -0
  222. package/dist/{lore-server → server}/tools/lookup.d.ts +2 -2
  223. package/dist/server/tools/lookup.d.ts.map +1 -0
  224. package/dist/{lore-server → server}/tools/lookup.js +1 -1
  225. package/dist/server/tools/lookup.js.map +1 -0
  226. package/dist/server/tools/metrics.d.ts +48 -0
  227. package/dist/server/tools/metrics.d.ts.map +1 -0
  228. package/dist/server/tools/metrics.js +44 -0
  229. package/dist/server/tools/metrics.js.map +1 -0
  230. package/dist/{lore-server → server}/tools/notes.d.ts +1 -1
  231. package/dist/server/tools/notes.d.ts.map +1 -0
  232. package/dist/server/tools/notes.js.map +1 -0
  233. package/dist/{lore-server → server}/tools/routes.d.ts +2 -2
  234. package/dist/server/tools/routes.d.ts.map +1 -0
  235. package/dist/{lore-server → server}/tools/routes.js +1 -1
  236. package/dist/server/tools/routes.js.map +1 -0
  237. package/dist/{lore-server → server}/tools/search.d.ts +2 -2
  238. package/dist/server/tools/search.d.ts.map +1 -0
  239. package/dist/{lore-server → server}/tools/search.js +1 -1
  240. package/dist/server/tools/search.js.map +1 -0
  241. package/dist/{lore-server → server}/tools/snippet.d.ts +1 -1
  242. package/dist/server/tools/snippet.d.ts.map +1 -0
  243. package/dist/{lore-server → server}/tools/snippet.js +1 -1
  244. package/dist/server/tools/snippet.js.map +1 -0
  245. package/dist/{lore-server → server}/tools/test-map.d.ts +1 -1
  246. package/dist/server/tools/test-map.d.ts.map +1 -0
  247. package/dist/{lore-server → server}/tools/test-map.js +1 -1
  248. package/dist/server/tools/test-map.js.map +1 -0
  249. package/dist/{indexer → testing}/coverage.d.ts +1 -1
  250. package/dist/testing/coverage.d.ts.map +1 -0
  251. package/dist/{indexer → testing}/coverage.js.map +1 -1
  252. package/dist/{indexer → testing}/test-mapper.d.ts +1 -1
  253. package/dist/testing/test-mapper.d.ts.map +1 -0
  254. package/dist/{indexer → testing}/test-mapper.js.map +1 -1
  255. package/package.json +12 -9
  256. package/dist/indexer/call-graph.d.ts.map +0 -1
  257. package/dist/indexer/call-graph.js.map +0 -1
  258. package/dist/indexer/coverage.d.ts.map +0 -1
  259. package/dist/indexer/db.d.ts.map +0 -1
  260. package/dist/indexer/db.js.map +0 -1
  261. package/dist/indexer/docs.d.ts.map +0 -1
  262. package/dist/indexer/docs.js.map +0 -1
  263. package/dist/indexer/embedder.d.ts.map +0 -1
  264. package/dist/indexer/embedder.js.map +0 -1
  265. package/dist/indexer/extractors/c.js.map +0 -1
  266. package/dist/indexer/extractors/cpp.js.map +0 -1
  267. package/dist/indexer/extractors/elixir.js.map +0 -1
  268. package/dist/indexer/extractors/go.js.map +0 -1
  269. package/dist/indexer/extractors/haskell.js.map +0 -1
  270. package/dist/indexer/extractors/javascript.js.map +0 -1
  271. package/dist/indexer/extractors/lua.js.map +0 -1
  272. package/dist/indexer/extractors/objc.js.map +0 -1
  273. package/dist/indexer/extractors/ocaml.js.map +0 -1
  274. package/dist/indexer/extractors/typescript.js.map +0 -1
  275. package/dist/indexer/extractors/zig.js.map +0 -1
  276. package/dist/indexer/git-history.d.ts.map +0 -1
  277. package/dist/indexer/git-history.js.map +0 -1
  278. package/dist/indexer/git-hooks.d.ts.map +0 -1
  279. package/dist/indexer/git-hooks.js.map +0 -1
  280. package/dist/indexer/graph-analysis.d.ts.map +0 -1
  281. package/dist/indexer/graph-analysis.js.map +0 -1
  282. package/dist/indexer/lsp/client.d.ts.map +0 -1
  283. package/dist/indexer/lsp/client.js.map +0 -1
  284. package/dist/indexer/lsp/config.d.ts.map +0 -1
  285. package/dist/indexer/lsp/config.js.map +0 -1
  286. package/dist/indexer/lsp/enrichment.d.ts.map +0 -1
  287. package/dist/indexer/lsp/enrichment.js.map +0 -1
  288. package/dist/indexer/lsp/registry.d.ts.map +0 -1
  289. package/dist/indexer/lsp/registry.js.map +0 -1
  290. package/dist/indexer/poller.d.ts.map +0 -1
  291. package/dist/indexer/poller.js.map +0 -1
  292. package/dist/indexer/resolution-method.d.ts.map +0 -1
  293. package/dist/indexer/resolution-method.js.map +0 -1
  294. package/dist/indexer/resolver.d.ts.map +0 -1
  295. package/dist/indexer/resolver.js.map +0 -1
  296. package/dist/indexer/test-mapper.d.ts.map +0 -1
  297. package/dist/indexer/walker.d.ts.map +0 -1
  298. package/dist/indexer/walker.js.map +0 -1
  299. package/dist/indexer/watcher.d.ts.map +0 -1
  300. package/dist/indexer/watcher.js.map +0 -1
  301. package/dist/lore-server/db.d.ts.map +0 -1
  302. package/dist/lore-server/db.js.map +0 -1
  303. package/dist/lore-server/server.d.ts.map +0 -1
  304. package/dist/lore-server/server.js.map +0 -1
  305. package/dist/lore-server/tool-registry.d.ts.map +0 -1
  306. package/dist/lore-server/tool-registry.js.map +0 -1
  307. package/dist/lore-server/tools/annotations.d.ts +0 -40
  308. package/dist/lore-server/tools/annotations.d.ts.map +0 -1
  309. package/dist/lore-server/tools/annotations.js +0 -35
  310. package/dist/lore-server/tools/annotations.js.map +0 -1
  311. package/dist/lore-server/tools/architecture.d.ts +0 -67
  312. package/dist/lore-server/tools/architecture.d.ts.map +0 -1
  313. package/dist/lore-server/tools/architecture.js +0 -209
  314. package/dist/lore-server/tools/architecture.js.map +0 -1
  315. package/dist/lore-server/tools/blame.d.ts.map +0 -1
  316. package/dist/lore-server/tools/blame.js.map +0 -1
  317. package/dist/lore-server/tools/coverage.d.ts +0 -67
  318. package/dist/lore-server/tools/coverage.d.ts.map +0 -1
  319. package/dist/lore-server/tools/coverage.js +0 -74
  320. package/dist/lore-server/tools/coverage.js.map +0 -1
  321. package/dist/lore-server/tools/docs.d.ts.map +0 -1
  322. package/dist/lore-server/tools/docs.js.map +0 -1
  323. package/dist/lore-server/tools/graph-analysis.d.ts +0 -64
  324. package/dist/lore-server/tools/graph-analysis.d.ts.map +0 -1
  325. package/dist/lore-server/tools/graph-analysis.js +0 -82
  326. package/dist/lore-server/tools/graph-analysis.js.map +0 -1
  327. package/dist/lore-server/tools/graph.d.ts.map +0 -1
  328. package/dist/lore-server/tools/graph.js.map +0 -1
  329. package/dist/lore-server/tools/history.d.ts.map +0 -1
  330. package/dist/lore-server/tools/history.js.map +0 -1
  331. package/dist/lore-server/tools/lookup.d.ts.map +0 -1
  332. package/dist/lore-server/tools/lookup.js.map +0 -1
  333. package/dist/lore-server/tools/metrics.d.ts +0 -73
  334. package/dist/lore-server/tools/metrics.d.ts.map +0 -1
  335. package/dist/lore-server/tools/metrics.js +0 -79
  336. package/dist/lore-server/tools/metrics.js.map +0 -1
  337. package/dist/lore-server/tools/notes.d.ts.map +0 -1
  338. package/dist/lore-server/tools/notes.js.map +0 -1
  339. package/dist/lore-server/tools/routes.d.ts.map +0 -1
  340. package/dist/lore-server/tools/routes.js.map +0 -1
  341. package/dist/lore-server/tools/search.d.ts.map +0 -1
  342. package/dist/lore-server/tools/search.js.map +0 -1
  343. package/dist/lore-server/tools/snippet.d.ts.map +0 -1
  344. package/dist/lore-server/tools/snippet.js.map +0 -1
  345. package/dist/lore-server/tools/test-map.d.ts.map +0 -1
  346. package/dist/lore-server/tools/test-map.js.map +0 -1
  347. package/dist/lore-server/tools/writeback.d.ts +0 -49
  348. package/dist/lore-server/tools/writeback.d.ts.map +0 -1
  349. package/dist/lore-server/tools/writeback.js +0 -68
  350. package/dist/lore-server/tools/writeback.js.map +0 -1
  351. /package/dist/{indexer → docs}/docs.d.ts +0 -0
  352. /package/dist/{indexer → docs}/docs.js +0 -0
  353. /package/dist/{indexer/lsp → lsp}/client.d.ts +0 -0
  354. /package/dist/{indexer/lsp → lsp}/config.d.ts +0 -0
  355. /package/dist/{indexer/lsp → lsp}/enrichment.d.ts +0 -0
  356. /package/dist/{indexer/lsp → lsp}/enrichment.js +0 -0
  357. /package/dist/{indexer/lsp → lsp}/registry.d.ts +0 -0
  358. /package/dist/{indexer → parsing}/complexity.d.ts +0 -0
  359. /package/dist/{indexer → parsing}/complexity.js +0 -0
  360. /package/dist/{indexer → parsing}/config-parser.d.ts +0 -0
  361. /package/dist/{indexer → parsing}/config-parser.js +0 -0
  362. /package/dist/{indexer → parsing}/extractors/bash.d.ts +0 -0
  363. /package/dist/{indexer → parsing}/extractors/bash.js +0 -0
  364. /package/dist/{indexer → parsing}/extractors/c.d.ts +0 -0
  365. /package/dist/{indexer → parsing}/extractors/cpp.d.ts +0 -0
  366. /package/dist/{indexer → parsing}/extractors/csharp.d.ts +0 -0
  367. /package/dist/{indexer → parsing}/extractors/elixir.d.ts +0 -0
  368. /package/dist/{indexer → parsing}/extractors/elm.d.ts +0 -0
  369. /package/dist/{indexer → parsing}/extractors/elm.js +0 -0
  370. /package/dist/{indexer → parsing}/extractors/go.d.ts +0 -0
  371. /package/dist/{indexer → parsing}/extractors/haskell.d.ts +0 -0
  372. /package/dist/{indexer → parsing}/extractors/java.d.ts +0 -0
  373. /package/dist/{indexer → parsing}/extractors/java.js +0 -0
  374. /package/dist/{indexer → parsing}/extractors/javascript.d.ts +0 -0
  375. /package/dist/{indexer → parsing}/extractors/julia.d.ts +0 -0
  376. /package/dist/{indexer → parsing}/extractors/julia.js +0 -0
  377. /package/dist/{indexer → parsing}/extractors/kotlin.d.ts +0 -0
  378. /package/dist/{indexer → parsing}/extractors/lua.d.ts +0 -0
  379. /package/dist/{indexer → parsing}/extractors/objc.d.ts +0 -0
  380. /package/dist/{indexer → parsing}/extractors/ocaml.d.ts +0 -0
  381. /package/dist/{indexer → parsing}/extractors/php.d.ts +0 -0
  382. /package/dist/{indexer → parsing}/extractors/php.js +0 -0
  383. /package/dist/{indexer → parsing}/extractors/python.d.ts +0 -0
  384. /package/dist/{indexer → parsing}/extractors/python.js +0 -0
  385. /package/dist/{indexer → parsing}/extractors/ruby.d.ts +0 -0
  386. /package/dist/{indexer → parsing}/extractors/ruby.js +0 -0
  387. /package/dist/{indexer → parsing}/extractors/rust.d.ts +0 -0
  388. /package/dist/{indexer → parsing}/extractors/scala.d.ts +0 -0
  389. /package/dist/{indexer → parsing}/extractors/scala.js +0 -0
  390. /package/dist/{indexer → parsing}/extractors/swift.d.ts +0 -0
  391. /package/dist/{indexer → parsing}/extractors/swift.js +0 -0
  392. /package/dist/{indexer → parsing}/extractors/types.d.ts +0 -0
  393. /package/dist/{indexer → parsing}/extractors/types.js +0 -0
  394. /package/dist/{indexer → parsing}/extractors/typescript.d.ts +0 -0
  395. /package/dist/{indexer → parsing}/extractors/zig.d.ts +0 -0
  396. /package/dist/{indexer → parsing}/parser.d.ts +0 -0
  397. /package/dist/{indexer → parsing}/parser.js +0 -0
  398. /package/dist/{indexer → resolution}/graph-analysis.js +0 -0
  399. /package/dist/{lore-server → server}/tools/notes.js +0 -0
  400. /package/dist/{indexer → testing}/coverage.js +0 -0
  401. /package/dist/{indexer → testing}/test-mapper.js +0 -0
package/dist/runtime.d.ts CHANGED
@@ -9,9 +9,10 @@
9
9
  * runtime instance so that startup, shutdown, and resource ownership are
10
10
  * handled in one place.
11
11
  */
12
- import type { EmbeddingProvider } from './indexer/embedder.js';
13
- import type { EffectiveLspSettings } from './indexer/lsp/config.js';
14
- import type { WalkerConfig } from './indexer/walker.js';
12
+ import type { EmbeddingProvider } from './embeddings/embedder.js';
13
+ import type { EffectiveLspSettings } from './lsp/config.js';
14
+ import type { EffectiveScipSettings } from './scip/config.js';
15
+ import type { WalkerConfig } from './discovery/walker.js';
15
16
  import { type LoreLogger } from './logger.js';
16
17
  /** Immutable bag of settings collected from CLI flags / programmatic callers. */
17
18
  export interface RuntimeConfig {
@@ -27,6 +28,8 @@ export interface RuntimeConfig {
27
28
  embeddingModel?: string;
28
29
  /** LSP enrichment policy. `null` = disabled. */
29
30
  lsp: EffectiveLspSettings | null;
31
+ /** SCIP enrichment policy. `null` = disabled. */
32
+ scip: EffectiveScipSettings | null;
30
33
  /** Git history ingestion policy. */
31
34
  history: boolean | {
32
35
  depth?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAa,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AAKzD,iFAAiF;AACjF,MAAM,WAAW,aAAa;IAC5B,mDAAmD;IACnD,MAAM,EAAE,MAAM,CAAC;IACf,mDAAmD;IACnD,OAAO,EAAE,MAAM,CAAC;IAChB,mEAAmE;IACnE,YAAY,EAAE,YAAY,CAAC;IAG3B,+BAA+B;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gEAAgE;IAChE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gDAAgD;IAChD,GAAG,EAAE,oBAAoB,GAAG,IAAI,CAAC;IACjC,oCAAoC;IACpC,OAAO,EAAE,OAAO,GAAG;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;IACrD,8DAA8D;IAC9D,iBAAiB,EAAE,OAAO,CAAC;IAC3B,2DAA2D;IAC3D,aAAa,EAAE,OAAO,CAAC;IACvB,iEAAiE;IACjE,WAAW,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;CACxC;AAID,8DAA8D;AAC9D,MAAM,WAAW,SAAS;IACxB,KAAK,IAAI,IAAI,CAAC;IACd,IAAI,IAAI,IAAI,CAAC;CACd;AAID;;;;;;;;;;GAUG;AACH,qBAAa,WAAW;IACtB,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAC;IAEzB,OAAO,CAAC,SAAS,CAAkC;IACnD,OAAO,CAAC,UAAU,CAA0B;IAC5C,OAAO,CAAC,QAAQ,CAAS;gBAEb,MAAM,EAAE,aAAa,EAAE,MAAM,CAAC,EAAE,UAAU;IAOtD,8EAA8E;IAC9E,IAAI,QAAQ,IAAI,iBAAiB,GAAG,SAAS,CAE5C;IAED,kFAAkF;IAClF,IAAI,SAAS,IAAI,SAAS,GAAG,SAAS,CAErC;IAED,IAAI,OAAO,IAAI,OAAO,CAErB;IAID;;;;OAIG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA6D5B;;;;OAIG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAmB/B;;;;;;;;OAQG;IACH,qBAAqB,IAAI,IAAI;CA0B9B"}
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAa,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AAKzD,iFAAiF;AACjF,MAAM,WAAW,aAAa;IAC5B,mDAAmD;IACnD,MAAM,EAAE,MAAM,CAAC;IACf,mDAAmD;IACnD,OAAO,EAAE,MAAM,CAAC;IAChB,mEAAmE;IACnE,YAAY,EAAE,YAAY,CAAC;IAG3B,+BAA+B;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gEAAgE;IAChE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gDAAgD;IAChD,GAAG,EAAE,oBAAoB,GAAG,IAAI,CAAC;IACjC,iDAAiD;IACjD,IAAI,EAAE,qBAAqB,GAAG,IAAI,CAAC;IACnC,oCAAoC;IACpC,OAAO,EAAE,OAAO,GAAG;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;IACrD,8DAA8D;IAC9D,iBAAiB,EAAE,OAAO,CAAC;IAC3B,2DAA2D;IAC3D,aAAa,EAAE,OAAO,CAAC;IACvB,iEAAiE;IACjE,WAAW,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;CACxC;AAID,8DAA8D;AAC9D,MAAM,WAAW,SAAS;IACxB,KAAK,IAAI,IAAI,CAAC;IACd,IAAI,IAAI,IAAI,CAAC;CACd;AAID;;;;;;;;;;GAUG;AACH,qBAAa,WAAW;IACtB,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAC;IAEzB,OAAO,CAAC,SAAS,CAAkC;IACnD,OAAO,CAAC,UAAU,CAA0B;IAC5C,OAAO,CAAC,QAAQ,CAAS;gBAEb,MAAM,EAAE,aAAa,EAAE,MAAM,CAAC,EAAE,UAAU;IAOtD,8EAA8E;IAC9E,IAAI,QAAQ,IAAI,iBAAiB,GAAG,SAAS,CAE5C;IAED,kFAAkF;IAClF,IAAI,SAAS,IAAI,SAAS,GAAG,SAAS,CAErC;IAED,IAAI,OAAO,IAAI,OAAO,CAErB;IAID;;;;OAIG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA+D5B;;;;OAIG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAmB/B;;;;;;;;OAQG;IACH,qBAAqB,IAAI,IAAI;CA0B9B"}
package/dist/runtime.js CHANGED
@@ -58,7 +58,7 @@ export class LoreRuntime {
58
58
  // ── Embedder ─────────────────────────────────────────────────────────────
59
59
  if (this.config.embeddingModel) {
60
60
  try {
61
- const { LazyEmbeddingProvider } = await import('./indexer/embedder.js');
61
+ const { LazyEmbeddingProvider } = await import('./embeddings/embedder.js');
62
62
  const provider = new LazyEmbeddingProvider(this.config.embeddingModel);
63
63
  this._embedder = provider;
64
64
  this.log.startup('embedding model configured (lazy — loads on first use)', {
@@ -72,11 +72,12 @@ export class LoreRuntime {
72
72
  }
73
73
  // ── Refresher (watch / poll) ─────────────────────────────────────────────
74
74
  if (this.config.refreshMode === 'watch') {
75
- const { FileWatcher } = await import('./indexer/watcher.js');
75
+ const { FileWatcher } = await import('./discovery/watcher.js');
76
76
  const watcher = new FileWatcher(this.config.dbPath, this.config.walkerConfig, {
77
77
  history: this.config.history,
78
78
  indexDependencies: this.config.indexDependencies,
79
79
  lsp: this.config.lsp ?? undefined,
80
+ scip: this.config.scip ?? undefined,
80
81
  embedder: this._embedder ?? undefined,
81
82
  });
82
83
  watcher.start();
@@ -88,11 +89,12 @@ export class LoreRuntime {
88
89
  process.stderr.write(JSON.stringify({ level: 'info', source: 'cli', message: 'watch mode started', rootDir: this.config.rootDir, embeddingEnabled: !!this._embedder }) + '\n');
89
90
  }
90
91
  else if (this.config.refreshMode === 'poll') {
91
- const { FilePoller } = await import('./indexer/poller.js');
92
+ const { FilePoller } = await import('./discovery/poller.js');
92
93
  const poller = new FilePoller(this.config.dbPath, this.config.walkerConfig, {
93
94
  history: this.config.history,
94
95
  indexDependencies: this.config.indexDependencies,
95
96
  lsp: this.config.lsp ?? undefined,
97
+ scip: this.config.scip ?? undefined,
96
98
  embedder: this._embedder ?? undefined,
97
99
  });
98
100
  poller.start();
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * @module indexer/scip/config
3
+ *
4
+ * Configuration for the SCIP enrichment pipeline stage.
5
+ *
6
+ * Settings are loaded from `.lore.config` under the `"scip"` key, with
7
+ * the same layering as LSP config: file settings ← explicit overrides.
8
+ */
9
+ import type { ScipIndexerRegistry, ScipIndexerRegistryOverrides } from './registry.js';
10
+ export declare const DEFAULT_SCIP_ENABLED = true;
11
+ export declare const DEFAULT_SCIP_TIMEOUT_MS = 120000;
12
+ export interface EffectiveScipSettings {
13
+ enabled: boolean;
14
+ /** Per-indexer execution timeout in milliseconds. */
15
+ timeoutMs: number;
16
+ /** Merged indexer registry (defaults + overrides). */
17
+ indexers: ScipIndexerRegistry;
18
+ /**
19
+ * Optional path to a directory containing pre-computed SCIP index files.
20
+ * If set, Lore reads `<dir>/<language>.scip` instead of running indexers.
21
+ */
22
+ indexDir: string | null;
23
+ }
24
+ export interface ScipSettingsOverrides {
25
+ enabled?: boolean;
26
+ timeoutMs?: number;
27
+ indexers?: ScipIndexerRegistryOverrides;
28
+ indexDir?: string;
29
+ }
30
+ export declare function loadScipSettingsFromLoreConfig(rootDir: string): ScipSettingsOverrides;
31
+ export declare function resolveEffectiveScipSettings(configSettings?: ScipSettingsOverrides, explicitOverrides?: ScipSettingsOverrides): EffectiveScipSettings;
32
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/scip/config.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,OAAO,KAAK,EAAE,mBAAmB,EAAE,4BAA4B,EAAE,MAAM,eAAe,CAAC;AAKvF,eAAO,MAAM,oBAAoB,OAAO,CAAC;AACzC,eAAO,MAAM,uBAAuB,SAAU,CAAC;AAE/C,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,qDAAqD;IACrD,SAAS,EAAE,MAAM,CAAC;IAClB,sDAAsD;IACtD,QAAQ,EAAE,mBAAmB,CAAC;IAC9B;;;OAGG;IACH,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,4BAA4B,CAAC;IACxC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AA0BD,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,MAAM,GAAG,qBAAqB,CAmCrF;AAED,wBAAgB,4BAA4B,CAC1C,cAAc,GAAE,qBAA0B,EAC1C,iBAAiB,GAAE,qBAA0B,GAC5C,qBAAqB,CAwBvB"}
@@ -0,0 +1,96 @@
1
+ /**
2
+ * @module indexer/scip/config
3
+ *
4
+ * Configuration for the SCIP enrichment pipeline stage.
5
+ *
6
+ * Settings are loaded from `.lore.config` under the `"scip"` key, with
7
+ * the same layering as LSP config: file settings ← explicit overrides.
8
+ */
9
+ import { existsSync, readFileSync } from 'node:fs';
10
+ import { join } from 'node:path';
11
+ import { z } from 'zod';
12
+ import { mergeScipIndexerRegistry } from './registry.js';
13
+ // ─── Effective settings ───────────────────────────────────────────────────────
14
+ export const DEFAULT_SCIP_ENABLED = true;
15
+ export const DEFAULT_SCIP_TIMEOUT_MS = 120_000; // 2 minutes per indexer run
16
+ // ─── Zod schema for .lore.config → scip section ──────────────────────────────
17
+ const IndexerOverrideSchema = z
18
+ .object({
19
+ command: z.string().trim().min(1).optional(),
20
+ args: z.array(z.string()).optional(),
21
+ cwd: z.string().optional(),
22
+ })
23
+ .strict()
24
+ .refine((v) => v.command !== undefined || v.args !== undefined, {
25
+ message: 'must provide at least one of "command" or "args"',
26
+ });
27
+ const ScipSchema = z
28
+ .object({
29
+ enabled: z.boolean().optional(),
30
+ timeoutMs: z.number().int().positive().optional(),
31
+ indexDir: z.string().optional(),
32
+ indexers: z.record(z.string(), IndexerOverrideSchema).optional(),
33
+ })
34
+ .strict();
35
+ // ─── Config loaders ───────────────────────────────────────────────────────────
36
+ export function loadScipSettingsFromLoreConfig(rootDir) {
37
+ const configPath = join(rootDir, '.lore.config');
38
+ if (!existsSync(configPath))
39
+ return {};
40
+ let parsedConfig;
41
+ try {
42
+ const raw = readFileSync(configPath, 'utf8');
43
+ parsedConfig = JSON.parse(raw);
44
+ }
45
+ catch (error) {
46
+ const message = error instanceof Error ? error.message : String(error);
47
+ throw new Error(`Invalid .lore.config: ${message}`);
48
+ }
49
+ if (!isRecord(parsedConfig)) {
50
+ throw new Error('Invalid .lore.config: root must be a JSON object');
51
+ }
52
+ if (!Object.prototype.hasOwnProperty.call(parsedConfig, 'scip')) {
53
+ return {};
54
+ }
55
+ const parse = ScipSchema.safeParse(parsedConfig.scip);
56
+ if (!parse.success) {
57
+ const issue = parse.error.issues[0];
58
+ throw new Error(`Invalid .lore.config scip settings: ${issue?.path.join('.') ?? 'scip'} ${issue?.message ?? 'invalid value'}`);
59
+ }
60
+ const scip = parse.data;
61
+ return {
62
+ ...(scip.enabled !== undefined && { enabled: scip.enabled }),
63
+ ...(scip.timeoutMs !== undefined && { timeoutMs: scip.timeoutMs }),
64
+ ...(scip.indexDir !== undefined && { indexDir: scip.indexDir }),
65
+ ...(scip.indexers && { indexers: scip.indexers }),
66
+ };
67
+ }
68
+ export function resolveEffectiveScipSettings(configSettings = {}, explicitOverrides = {}) {
69
+ // Merge per-language indexer overrides.
70
+ const configIndexers = configSettings.indexers ?? {};
71
+ const overrideIndexers = explicitOverrides.indexers ?? {};
72
+ const mergedOverrides = { ...configIndexers };
73
+ for (const [lang, override] of Object.entries(overrideIndexers)) {
74
+ const existing = mergedOverrides[lang];
75
+ if (existing && override) {
76
+ mergedOverrides[lang] = {
77
+ command: override.command ?? existing.command,
78
+ args: override.args ?? existing.args,
79
+ ...(override.cwd !== undefined ? { cwd: override.cwd } : existing.cwd ? { cwd: existing.cwd } : {}),
80
+ };
81
+ }
82
+ else {
83
+ mergedOverrides[lang] = override;
84
+ }
85
+ }
86
+ return {
87
+ enabled: explicitOverrides.enabled ?? configSettings.enabled ?? DEFAULT_SCIP_ENABLED,
88
+ timeoutMs: explicitOverrides.timeoutMs ?? configSettings.timeoutMs ?? DEFAULT_SCIP_TIMEOUT_MS,
89
+ indexers: mergeScipIndexerRegistry(mergedOverrides),
90
+ indexDir: explicitOverrides.indexDir ?? configSettings.indexDir ?? null,
91
+ };
92
+ }
93
+ function isRecord(value) {
94
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
95
+ }
96
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/scip/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,56 @@
1
+ /**
2
+ * @module indexer/scip/enrichment
3
+ *
4
+ * `ScipEnrichmentCoordinator` drives the SCIP enrichment workflow:
5
+ *
6
+ * 1. Run SCIP indexers (or read pre-computed index files) for each language.
7
+ * 2. Parse the resulting protobuf indexes into in-memory lookup structures.
8
+ * 3. For a batch of targets (file + position), resolve each to its
9
+ * definition location and type signature using the SCIP data.
10
+ *
11
+ * Returns the same `ResolvedTypeMetadata` shape as the LSP enrichment
12
+ * coordinator, so the enrichment stage and resolution stage are agnostic
13
+ * to the enrichment source.
14
+ */
15
+ import type { ResolvedTypeMetadata } from '../lsp/enrichment.js';
16
+ import type { EffectiveScipSettings } from './config.js';
17
+ export interface ScipEnrichmentTarget {
18
+ line: number;
19
+ character: number;
20
+ }
21
+ export interface ScipEnrichmentRequest {
22
+ filePath: string;
23
+ language: string;
24
+ source: string;
25
+ targets: readonly ScipEnrichmentTarget[];
26
+ }
27
+ export declare class ScipEnrichmentCoordinator {
28
+ private readonly settings;
29
+ private readonly rootDir;
30
+ private readonly resolvedIndexers;
31
+ /** Merged SCIP index data from all indexer runs. */
32
+ private indexData;
33
+ /** Languages for which SCIP indexing succeeded. */
34
+ private readonly enrichedLanguages;
35
+ constructor(settings: EffectiveScipSettings, rootDir: string);
36
+ /**
37
+ * Run SCIP indexers (or load pre-computed indexes) for the given languages.
38
+ * Must be called before `enrich()`.
39
+ *
40
+ * @returns Set of languages for which SCIP data is available.
41
+ */
42
+ start(languages: Iterable<string>): Promise<ReadonlySet<string>>;
43
+ /**
44
+ * Enrich a batch of targets with SCIP-derived metadata.
45
+ *
46
+ * Returns an array parallel to `request.targets` — each entry is either
47
+ * a `ResolvedTypeMetadata` or `null` (no SCIP data for that position).
48
+ */
49
+ enrich(request: ScipEnrichmentRequest): Array<ResolvedTypeMetadata | null>;
50
+ /** Set of languages for which SCIP enrichment data is available. */
51
+ get coveredLanguages(): ReadonlySet<string>;
52
+ dispose(): Promise<void>;
53
+ private readPrecomputedIndex;
54
+ private runIndexer;
55
+ }
56
+ //# sourceMappingURL=enrichment.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enrichment.d.ts","sourceRoot":"","sources":["../../src/scip/enrichment.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAOH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAazD,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,SAAS,oBAAoB,EAAE,CAAC;CAC1C;AAID,qBAAa,yBAAyB;IASlC,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAR3B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA6C;IAC9E,oDAAoD;IACpD,OAAO,CAAC,SAAS,CAA8B;IAC/C,mDAAmD;IACnD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAqB;gBAGpC,QAAQ,EAAE,qBAAqB,EAChD,OAAO,EAAE,MAAM;IAMjB;;;;;OAKG;IACG,KAAK,CAAC,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAgFtE;;;;;OAKG;IACH,MAAM,CAAC,OAAO,EAAE,qBAAqB,GAAG,KAAK,CAAC,oBAAoB,GAAG,IAAI,CAAC;IA0C1E,oEAAoE;IACpE,IAAI,gBAAgB,IAAI,WAAW,CAAC,MAAM,CAAC,CAE1C;IAEK,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAO9B,OAAO,CAAC,oBAAoB;YAiBd,UAAU;CA8DzB"}
@@ -0,0 +1,258 @@
1
+ /**
2
+ * @module indexer/scip/enrichment
3
+ *
4
+ * `ScipEnrichmentCoordinator` drives the SCIP enrichment workflow:
5
+ *
6
+ * 1. Run SCIP indexers (or read pre-computed index files) for each language.
7
+ * 2. Parse the resulting protobuf indexes into in-memory lookup structures.
8
+ * 3. For a batch of targets (file + position), resolve each to its
9
+ * definition location and type signature using the SCIP data.
10
+ *
11
+ * Returns the same `ResolvedTypeMetadata` shape as the LSP enrichment
12
+ * coordinator, so the enrichment stage and resolution stage are agnostic
13
+ * to the enrichment source.
14
+ */
15
+ import { existsSync, readFileSync, unlinkSync } from 'node:fs';
16
+ import { join } from 'node:path';
17
+ import { execFile } from 'node:child_process';
18
+ import { promisify } from 'node:util';
19
+ import { pathToFileURL } from 'node:url';
20
+ import { resolveScipIndexerRegistry, SCIP_SUPPORTED_LANGUAGES } from './registry.js';
21
+ import { parseScipIndex, extractSignatureFromDocs, extractReturnType, } from './index-reader.js';
22
+ import { getLogger } from '../logger.js';
23
+ // ─── Coordinator ──────────────────────────────────────────────────────────────
24
+ export class ScipEnrichmentCoordinator {
25
+ settings;
26
+ rootDir;
27
+ resolvedIndexers;
28
+ /** Merged SCIP index data from all indexer runs. */
29
+ indexData = null;
30
+ /** Languages for which SCIP indexing succeeded. */
31
+ enrichedLanguages = new Set();
32
+ constructor(settings, rootDir) {
33
+ this.settings = settings;
34
+ this.rootDir = rootDir;
35
+ this.resolvedIndexers = resolveScipIndexerRegistry(settings.indexers);
36
+ }
37
+ /**
38
+ * Run SCIP indexers (or load pre-computed indexes) for the given languages.
39
+ * Must be called before `enrich()`.
40
+ *
41
+ * @returns Set of languages for which SCIP data is available.
42
+ */
43
+ async start(languages) {
44
+ if (!this.settings.enabled)
45
+ return this.enrichedLanguages;
46
+ const log = getLogger();
47
+ const uniqueLanguages = new Set(languages);
48
+ // Determine which languages have SCIP coverage.
49
+ const toProcess = new Set();
50
+ for (const lang of uniqueLanguages) {
51
+ if (SCIP_SUPPORTED_LANGUAGES.has(lang)) {
52
+ const resolved = this.resolvedIndexers[lang];
53
+ if (resolved?.available || this.settings.indexDir) {
54
+ toProcess.add(lang);
55
+ }
56
+ }
57
+ }
58
+ if (toProcess.size === 0) {
59
+ log.indexing('scip: no indexers available for requested languages');
60
+ return this.enrichedLanguages;
61
+ }
62
+ // Group languages by shared indexer command to avoid running the same
63
+ // indexer multiple times (e.g., scip-java for java + scala + kotlin).
64
+ const commandGroups = new Map();
65
+ for (const lang of toProcess) {
66
+ const resolved = this.resolvedIndexers[lang];
67
+ const key = resolved ? resolved.command : `indexDir:${lang}`;
68
+ if (!commandGroups.has(key))
69
+ commandGroups.set(key, new Set());
70
+ commandGroups.get(key).add(lang);
71
+ }
72
+ for (const [commandKey, langs] of commandGroups) {
73
+ const representativeLang = langs.values().next().value;
74
+ try {
75
+ let indexBuffer = null;
76
+ if (this.settings.indexDir) {
77
+ // Read pre-computed index from the configured directory.
78
+ indexBuffer = this.readPrecomputedIndex(representativeLang);
79
+ }
80
+ if (!indexBuffer) {
81
+ // Run the SCIP indexer.
82
+ indexBuffer = await this.runIndexer(representativeLang);
83
+ }
84
+ if (indexBuffer) {
85
+ const parsed = parseScipIndex(indexBuffer, this.rootDir);
86
+ // Merge documents and symbols into the combined index.
87
+ for (const lang of langs) {
88
+ this.enrichedLanguages.add(lang);
89
+ }
90
+ // Re-parse and merge (the parsed data is self-contained per ScipIndexData).
91
+ // For a proper merge we need to transfer data. Since our parsing is
92
+ // cheap, just re-assign if single or accumulate:
93
+ if (this.indexData === null) {
94
+ this.indexData = parsed;
95
+ }
96
+ else {
97
+ // Merge by re-parsing into the existing index.
98
+ // This is a design limitation — for now, multiple indexes are
99
+ // handled by re-reading. A future optimisation could merge the
100
+ // ScipIndexData structures directly.
101
+ this.indexData = mergeScipIndexDataPartial(this.indexData, parsed);
102
+ }
103
+ log.indexing(`scip: loaded index for ${[...langs].join(', ')}`, {
104
+ files: parsed.fileCount,
105
+ definitions: parsed.definitionCount,
106
+ });
107
+ }
108
+ }
109
+ catch (error) {
110
+ const msg = error instanceof Error ? error.message : String(error);
111
+ log.indexing(`scip: indexer failed for ${[...langs].join(', ')}: ${msg}`);
112
+ }
113
+ }
114
+ return this.enrichedLanguages;
115
+ }
116
+ /**
117
+ * Enrich a batch of targets with SCIP-derived metadata.
118
+ *
119
+ * Returns an array parallel to `request.targets` — each entry is either
120
+ * a `ResolvedTypeMetadata` or `null` (no SCIP data for that position).
121
+ */
122
+ enrich(request) {
123
+ const empty = request.targets.map(() => null);
124
+ if (!this.indexData || !this.enrichedLanguages.has(request.language)) {
125
+ return empty;
126
+ }
127
+ const results = [];
128
+ for (const target of request.targets) {
129
+ const occ = this.indexData.findOccurrence(request.filePath, target.line, target.character);
130
+ if (!occ || !occ.symbol) {
131
+ results.push(null);
132
+ continue;
133
+ }
134
+ // Resolve definition location.
135
+ const def = this.indexData.getDefinition(occ.symbol);
136
+ const info = this.indexData.getSymbolInfo(occ.symbol);
137
+ // Extract type signature.
138
+ const resolvedTypeSignature = info ? extractSignatureFromDocs(info) : null;
139
+ const resolvedReturnType = extractReturnType(resolvedTypeSignature);
140
+ if (!def && !resolvedTypeSignature) {
141
+ results.push(null);
142
+ continue;
143
+ }
144
+ const definitionUri = def ? pathToFileURL(def.filePath).toString() : null;
145
+ results.push({
146
+ resolvedTypeSignature,
147
+ resolvedReturnType,
148
+ definitionUri,
149
+ definitionPath: def?.filePath ?? null,
150
+ definitionLine: def?.line ?? null,
151
+ definitionCharacter: def?.character ?? null,
152
+ });
153
+ }
154
+ return results;
155
+ }
156
+ /** Set of languages for which SCIP enrichment data is available. */
157
+ get coveredLanguages() {
158
+ return this.enrichedLanguages;
159
+ }
160
+ async dispose() {
161
+ this.indexData = null;
162
+ this.enrichedLanguages.clear();
163
+ }
164
+ // ─── Private helpers ──────────────────────────────────────────────────────
165
+ readPrecomputedIndex(language) {
166
+ if (!this.settings.indexDir)
167
+ return null;
168
+ // Check for language-specific index or generic index.scip.
169
+ const candidates = [
170
+ join(this.rootDir, this.settings.indexDir, `${language}.scip`),
171
+ join(this.rootDir, this.settings.indexDir, 'index.scip'),
172
+ ];
173
+ for (const candidate of candidates) {
174
+ if (existsSync(candidate)) {
175
+ return readFileSync(candidate);
176
+ }
177
+ }
178
+ return null;
179
+ }
180
+ async runIndexer(language) {
181
+ const resolved = this.resolvedIndexers[language];
182
+ if (!resolved?.available)
183
+ return null;
184
+ const log = getLogger();
185
+ const outputPath = join(this.rootDir, `.lore-scip-${language}.scip`);
186
+ // Replace {output} placeholder in args.
187
+ const args = resolved.args.map((arg) => arg.replace(/\{output\}/gu, outputPath));
188
+ const cwd = resolved.cwd ? join(this.rootDir, resolved.cwd) : this.rootDir;
189
+ log.indexing(`scip: running ${resolved.command} for ${language}`);
190
+ const execFileAsync = promisify(execFile);
191
+ try {
192
+ await execFileAsync(resolved.command, args, {
193
+ cwd,
194
+ timeout: this.settings.timeoutMs,
195
+ });
196
+ }
197
+ catch (error) {
198
+ const msg = error instanceof Error ? error.message : String(error);
199
+ log.indexing(`scip: ${resolved.command} failed: ${msg}`);
200
+ // rust-analyzer scip writes to index.scip in cwd, not to {output}.
201
+ // Check if it wrote to the default location.
202
+ const defaultOutput = join(cwd, 'index.scip');
203
+ if (existsSync(defaultOutput) && defaultOutput !== outputPath) {
204
+ try {
205
+ const data = readFileSync(defaultOutput);
206
+ unlinkSync(defaultOutput);
207
+ return data;
208
+ }
209
+ catch {
210
+ // Fall through to return null.
211
+ }
212
+ }
213
+ return null;
214
+ }
215
+ // Read the output.
216
+ // Some indexers write to the specified path; others write to index.scip.
217
+ const candidatePaths = [outputPath, join(cwd, 'index.scip')];
218
+ for (const candidate of candidatePaths) {
219
+ if (existsSync(candidate)) {
220
+ try {
221
+ const data = readFileSync(candidate);
222
+ // Clean up temporary files.
223
+ if (candidate.includes('.lore-scip-')) {
224
+ try {
225
+ unlinkSync(candidate);
226
+ }
227
+ catch { /* best effort */ }
228
+ }
229
+ return data;
230
+ }
231
+ catch {
232
+ continue;
233
+ }
234
+ }
235
+ }
236
+ log.indexing(`scip: ${resolved.command} completed but no index file found`);
237
+ return null;
238
+ }
239
+ }
240
+ // ─── Merge helper ─────────────────────────────────────────────────────────────
241
+ /**
242
+ * Partial merge of two ScipIndexData instances.
243
+ * In practice we re-parse the protobuf bytes, so this is a simple
244
+ * "use the second index" fallback. A full merge would iterate the
245
+ * internal maps, but for the common case (one indexer per run) this
246
+ * is sufficient.
247
+ */
248
+ function mergeScipIndexDataPartial(a, b) {
249
+ // For now, since ScipIndexData doesn't expose its internal maps for
250
+ // iteration, we rely on the coordinator loading indexes sequentially
251
+ // and always use the latest one. A proper merge would require adding
252
+ // a `merge()` method to ScipIndexData.
253
+ //
254
+ // TODO: Implement proper merge across multiple SCIP indexes.
255
+ // For single-language projects (the common case), `b` is sufficient.
256
+ return b;
257
+ }
258
+ //# sourceMappingURL=enrichment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enrichment.js","sourceRoot":"","sources":["../../src/scip/enrichment.ts"],"names":[],"mappings":"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"}