@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
@@ -0,0 +1,100 @@
1
+ /**
2
+ * @module indexer/scip/index-reader
3
+ *
4
+ * Parses a SCIP index (protobuf binary) into in-memory lookup structures
5
+ * that the enrichment coordinator can query by file + position.
6
+ *
7
+ * Uses the official SCIP protobuf schema (vendored `scip_pb.ts`) with
8
+ * `@bufbuild/protobuf` for decoding — no manual wire-format parsing.
9
+ *
10
+ * ## SCIP data model (relevant subset)
11
+ *
12
+ * - `Index.documents[]` — per-file occurrences and symbol definitions
13
+ * - `Index.external_symbols[]` — hover docs for symbols from other packages
14
+ * - `Occurrence.range` — `[startLine, startChar, endChar]` (3-elem) or
15
+ * `[startLine, startChar, endLine, endChar]` (4-elem), 0-based
16
+ * - `Occurrence.symbol_roles` — bitset; bit 0 = Definition
17
+ * - `SymbolInformation.documentation` — markdown hover text
18
+ * - `SymbolInformation.signature_documentation` — structured signature
19
+ */
20
+ import { type Document as ScipDocument, type SymbolInformation as ScipSymbolInformation } from './scip_pb.js';
21
+ export interface ScipDefinitionLocation {
22
+ /** Absolute path to the file containing the definition. */
23
+ filePath: string;
24
+ /** 0-based line number. */
25
+ line: number;
26
+ /** 0-based character offset. */
27
+ character: number;
28
+ }
29
+ export interface ScipSymbolInfo {
30
+ symbol: string;
31
+ documentation: string[];
32
+ displayName: string;
33
+ signatureText: string | null;
34
+ }
35
+ export interface ScipOccurrenceRecord {
36
+ startLine: number;
37
+ startCharacter: number;
38
+ endLine: number;
39
+ endCharacter: number;
40
+ symbol: string;
41
+ isDefinition: boolean;
42
+ }
43
+ /**
44
+ * In-memory SCIP index optimised for enrichment lookups.
45
+ *
46
+ * Given a file path + position, returns the definition location and
47
+ * type signature for the symbol at that position.
48
+ */
49
+ export declare class ScipIndexData {
50
+ private readonly projectRoot;
51
+ /** symbol → definition location */
52
+ private readonly definitions;
53
+ /** symbol → metadata (docs, display name, signature) */
54
+ private readonly symbolInfo;
55
+ /** absolute file path → sorted occurrences */
56
+ private readonly fileOccurrences;
57
+ /** Set of languages present in this index */
58
+ readonly languages: Set<string>;
59
+ constructor(projectRoot: string);
60
+ addDocument(doc: ScipDocument): void;
61
+ addExternalSymbol(sym: ScipSymbolInformation): void;
62
+ /**
63
+ * Look up the occurrence at (or nearest to) the given position in a file.
64
+ */
65
+ findOccurrence(filePath: string, line: number, character: number): ScipOccurrenceRecord | null;
66
+ /**
67
+ * Resolve a SCIP symbol string to its definition location.
68
+ */
69
+ getDefinition(symbol: string): ScipDefinitionLocation | null;
70
+ /**
71
+ * Get symbol metadata (documentation, signature).
72
+ */
73
+ getSymbolInfo(symbol: string): ScipSymbolInfo | null;
74
+ /** Number of indexed files. */
75
+ get fileCount(): number;
76
+ /** Number of unique symbols with known definition locations. */
77
+ get definitionCount(): number;
78
+ }
79
+ /**
80
+ * Parse a SCIP protobuf index from raw bytes.
81
+ *
82
+ * @param buffer The raw protobuf bytes (e.g. `fs.readFileSync(path)`).
83
+ * @param projectRoot Absolute path to the project root. Document
84
+ * `relative_path` values are resolved against this.
85
+ * @returns Populated `ScipIndexData` ready for enrichment queries.
86
+ */
87
+ export declare function parseScipIndex(buffer: Uint8Array, projectRoot: string): ScipIndexData;
88
+ /**
89
+ * Extract a human-readable type signature from SCIP symbol documentation.
90
+ *
91
+ * Strips markdown code fences and extracts the first meaningful line,
92
+ * similar to how the LSP enrichment extracts hover text.
93
+ */
94
+ export declare function extractSignatureFromDocs(info: ScipSymbolInfo): string | null;
95
+ /**
96
+ * Extract a return type from a type signature string.
97
+ * Reuses the same heuristics as LSP enrichment.
98
+ */
99
+ export declare function extractReturnType(signature: string | null): string | null;
100
+ //# sourceMappingURL=index-reader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-reader.d.ts","sourceRoot":"","sources":["../../src/scip/index-reader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAIH,OAAO,EAIL,KAAK,QAAQ,IAAI,YAAY,EAE7B,KAAK,iBAAiB,IAAI,qBAAqB,EAChD,MAAM,cAAc,CAAC;AAItB,MAAM,WAAW,sBAAsB;IACrC,2DAA2D;IAC3D,QAAQ,EAAE,MAAM,CAAC;IACjB,2BAA2B;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,gCAAgC;IAChC,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,OAAO,CAAC;CACvB;AAED;;;;;GAKG;AACH,qBAAa,aAAa;IAUZ,OAAO,CAAC,QAAQ,CAAC,WAAW;IATxC,mCAAmC;IACnC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA6C;IACzE,wDAAwD;IACxD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAqC;IAChE,8CAA8C;IAC9C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA6C;IAC7E,6CAA6C;IAC7C,QAAQ,CAAC,SAAS,cAAqB;gBAEV,WAAW,EAAE,MAAM;IAEhD,WAAW,CAAC,GAAG,EAAE,YAAY,GAAG,IAAI;IA0CpC,iBAAiB,CAAC,GAAG,EAAE,qBAAqB,GAAG,IAAI;IAMnD;;OAEG;IACH,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,oBAAoB,GAAG,IAAI;IAmC9F;;OAEG;IACH,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,sBAAsB,GAAG,IAAI;IAI5D;;OAEG;IACH,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI;IAIpD,+BAA+B;IAC/B,IAAI,SAAS,IAAI,MAAM,CAAsC;IAE7D,gEAAgE;IAChE,IAAI,eAAe,IAAI,MAAM,CAAkC;CAChE;AAeD;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,GAAG,aAAa,CAYrF;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM,GAAG,IAAI,CAqB5E;AAWD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAgBzE"}
@@ -0,0 +1,225 @@
1
+ /**
2
+ * @module indexer/scip/index-reader
3
+ *
4
+ * Parses a SCIP index (protobuf binary) into in-memory lookup structures
5
+ * that the enrichment coordinator can query by file + position.
6
+ *
7
+ * Uses the official SCIP protobuf schema (vendored `scip_pb.ts`) with
8
+ * `@bufbuild/protobuf` for decoding — no manual wire-format parsing.
9
+ *
10
+ * ## SCIP data model (relevant subset)
11
+ *
12
+ * - `Index.documents[]` — per-file occurrences and symbol definitions
13
+ * - `Index.external_symbols[]` — hover docs for symbols from other packages
14
+ * - `Occurrence.range` — `[startLine, startChar, endChar]` (3-elem) or
15
+ * `[startLine, startChar, endLine, endChar]` (4-elem), 0-based
16
+ * - `Occurrence.symbol_roles` — bitset; bit 0 = Definition
17
+ * - `SymbolInformation.documentation` — markdown hover text
18
+ * - `SymbolInformation.signature_documentation` — structured signature
19
+ */
20
+ import { resolve } from 'node:path';
21
+ import { fromBinary } from '@bufbuild/protobuf';
22
+ import { IndexSchema, SymbolRole, } from './scip_pb.js';
23
+ /**
24
+ * In-memory SCIP index optimised for enrichment lookups.
25
+ *
26
+ * Given a file path + position, returns the definition location and
27
+ * type signature for the symbol at that position.
28
+ */
29
+ export class ScipIndexData {
30
+ projectRoot;
31
+ /** symbol → definition location */
32
+ definitions = new Map();
33
+ /** symbol → metadata (docs, display name, signature) */
34
+ symbolInfo = new Map();
35
+ /** absolute file path → sorted occurrences */
36
+ fileOccurrences = new Map();
37
+ /** Set of languages present in this index */
38
+ languages = new Set();
39
+ constructor(projectRoot) {
40
+ this.projectRoot = projectRoot;
41
+ }
42
+ addDocument(doc) {
43
+ const absPath = resolve(this.projectRoot, doc.relativePath);
44
+ if (doc.language)
45
+ this.languages.add(doc.language.toLowerCase());
46
+ const records = [];
47
+ for (const occ of doc.occurrences) {
48
+ const range = occ.range;
49
+ if (range.length < 3)
50
+ continue;
51
+ const startLine = range[0];
52
+ const startChar = range[1];
53
+ const endLine = range.length >= 4 ? range[2] : startLine;
54
+ const endChar = range.length >= 4 ? range[3] : range[2];
55
+ const isDefinition = (occ.symbolRoles & SymbolRole.Definition) !== 0;
56
+ records.push({
57
+ startLine,
58
+ startCharacter: startChar,
59
+ endLine,
60
+ endCharacter: endChar,
61
+ symbol: occ.symbol,
62
+ isDefinition,
63
+ });
64
+ // Register definition locations.
65
+ if (isDefinition && occ.symbol && !occ.symbol.startsWith('local ')) {
66
+ if (!this.definitions.has(occ.symbol)) {
67
+ this.definitions.set(occ.symbol, { filePath: absPath, line: startLine, character: startChar });
68
+ }
69
+ }
70
+ }
71
+ // Sort by (startLine, startCharacter) for binary search.
72
+ records.sort((a, b) => a.startLine - b.startLine || a.startCharacter - b.startCharacter);
73
+ this.fileOccurrences.set(absPath, records);
74
+ // Index symbol info from document-level symbols.
75
+ for (const sym of doc.symbols) {
76
+ if (sym.symbol) {
77
+ this.symbolInfo.set(sym.symbol, toScipSymbolInfo(sym));
78
+ }
79
+ }
80
+ }
81
+ addExternalSymbol(sym) {
82
+ if (sym.symbol) {
83
+ this.symbolInfo.set(sym.symbol, toScipSymbolInfo(sym));
84
+ }
85
+ }
86
+ /**
87
+ * Look up the occurrence at (or nearest to) the given position in a file.
88
+ */
89
+ findOccurrence(filePath, line, character) {
90
+ const occs = this.fileOccurrences.get(filePath);
91
+ if (!occs || occs.length === 0)
92
+ return null;
93
+ // Binary search for the first occurrence on this line.
94
+ let lo = 0;
95
+ let hi = occs.length;
96
+ while (lo < hi) {
97
+ const mid = (lo + hi) >>> 1;
98
+ if (occs[mid].startLine < line)
99
+ lo = mid + 1;
100
+ else
101
+ hi = mid;
102
+ }
103
+ // Scan forward through occurrences on this line to find the best match.
104
+ let best = null;
105
+ let bestDistance = Infinity;
106
+ for (let i = lo; i < occs.length && occs[i].startLine === line; i++) {
107
+ const occ = occs[i];
108
+ // Exact containment: character is within the occurrence range.
109
+ if (character >= occ.startCharacter && (occ.endLine > line || character <= occ.endCharacter)) {
110
+ return occ;
111
+ }
112
+ // Nearest on the same line.
113
+ const dist = Math.abs(occ.startCharacter - character);
114
+ if (dist < bestDistance) {
115
+ bestDistance = dist;
116
+ best = occ;
117
+ }
118
+ }
119
+ // Allow a nearby match (within 5 characters) on the same line.
120
+ return bestDistance <= 5 ? best : null;
121
+ }
122
+ /**
123
+ * Resolve a SCIP symbol string to its definition location.
124
+ */
125
+ getDefinition(symbol) {
126
+ return this.definitions.get(symbol) ?? null;
127
+ }
128
+ /**
129
+ * Get symbol metadata (documentation, signature).
130
+ */
131
+ getSymbolInfo(symbol) {
132
+ return this.symbolInfo.get(symbol) ?? null;
133
+ }
134
+ /** Number of indexed files. */
135
+ get fileCount() { return this.fileOccurrences.size; }
136
+ /** Number of unique symbols with known definition locations. */
137
+ get definitionCount() { return this.definitions.size; }
138
+ }
139
+ // ─── Protobuf → internal type conversion ──────────────────────────────────────
140
+ function toScipSymbolInfo(sym) {
141
+ return {
142
+ symbol: sym.symbol,
143
+ documentation: [...sym.documentation],
144
+ displayName: sym.displayName,
145
+ signatureText: sym.signatureDocumentation?.text || null,
146
+ };
147
+ }
148
+ // ─── Public API ───────────────────────────────────────────────────────────────
149
+ /**
150
+ * Parse a SCIP protobuf index from raw bytes.
151
+ *
152
+ * @param buffer The raw protobuf bytes (e.g. `fs.readFileSync(path)`).
153
+ * @param projectRoot Absolute path to the project root. Document
154
+ * `relative_path` values are resolved against this.
155
+ * @returns Populated `ScipIndexData` ready for enrichment queries.
156
+ */
157
+ export function parseScipIndex(buffer, projectRoot) {
158
+ const decoded = fromBinary(IndexSchema, buffer);
159
+ const index = new ScipIndexData(projectRoot);
160
+ for (const doc of decoded.documents) {
161
+ index.addDocument(doc);
162
+ }
163
+ for (const sym of decoded.externalSymbols) {
164
+ index.addExternalSymbol(sym);
165
+ }
166
+ return index;
167
+ }
168
+ /**
169
+ * Extract a human-readable type signature from SCIP symbol documentation.
170
+ *
171
+ * Strips markdown code fences and extracts the first meaningful line,
172
+ * similar to how the LSP enrichment extracts hover text.
173
+ */
174
+ export function extractSignatureFromDocs(info) {
175
+ // Prefer signature_documentation text.
176
+ if (info.signatureText) {
177
+ const cleaned = info.signatureText
178
+ .replace(/```[a-z0-9_+-]*\n/giu, '')
179
+ .replace(/```/gu, '')
180
+ .trim();
181
+ return cleaned || null;
182
+ }
183
+ // Fall back to first documentation entry that looks like a signature.
184
+ for (const doc of info.documentation) {
185
+ const cleaned = doc
186
+ .replace(/```[a-z0-9_+-]*\n/giu, '')
187
+ .replace(/```/gu, '')
188
+ .trim();
189
+ if (cleaned && looksLikeSignature(cleaned)) {
190
+ return cleaned;
191
+ }
192
+ }
193
+ return null;
194
+ }
195
+ /** Heuristic: does this text look like a code signature? */
196
+ function looksLikeSignature(text) {
197
+ const firstLine = text.split('\n')[0] ?? '';
198
+ return /(?:function|def|fn|func|class|interface|type|const|let|var|pub|export|public|private|protected)\s/u.test(firstLine)
199
+ || /\(.*\)/u.test(firstLine)
200
+ || /:\s*\w/u.test(firstLine)
201
+ || /->\s*\w/u.test(firstLine);
202
+ }
203
+ /**
204
+ * Extract a return type from a type signature string.
205
+ * Reuses the same heuristics as LSP enrichment.
206
+ */
207
+ export function extractReturnType(signature) {
208
+ if (!signature)
209
+ return null;
210
+ const lines = signature.split('\n').map((l) => l.trim()).filter(Boolean);
211
+ if (lines.length === 0)
212
+ return null;
213
+ const firstLine = lines[0];
214
+ const functionStyle = firstLine.match(/\)\s*:\s*([^={]+)$/u);
215
+ if (functionStyle?.[1])
216
+ return functionStyle[1].trim();
217
+ const arrowStyle = firstLine.match(/->\s*([^={]+)$/u);
218
+ if (arrowStyle?.[1])
219
+ return arrowStyle[1].trim();
220
+ const colonStyle = firstLine.match(/:\s*([^={]+)$/u);
221
+ if (colonStyle?.[1])
222
+ return colonStyle[1].trim();
223
+ return null;
224
+ }
225
+ //# sourceMappingURL=index-reader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-reader.js","sourceRoot":"","sources":["../../src/scip/index-reader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * @module indexer/scip/registry
3
+ *
4
+ * Maps Lore language names to SCIP indexer commands.
5
+ *
6
+ * Each entry describes how to invoke the SCIP indexer for a given language,
7
+ * including the command, arguments, and the output file name. Not every
8
+ * language Lore supports has a SCIP indexer — those without one fall back
9
+ * to LSP enrichment (and ultimately to tree-sitter-only resolution).
10
+ */
11
+ export interface ScipIndexerCommand {
12
+ /** Executable name (resolved on PATH). */
13
+ command: string;
14
+ /**
15
+ * Arguments template. The placeholder `{output}` is replaced with the
16
+ * desired output file path at invocation time.
17
+ */
18
+ args: string[];
19
+ /** Working-directory relative to the project root (default: project root). */
20
+ cwd?: string;
21
+ }
22
+ export interface ResolvedScipIndexerCommand extends ScipIndexerCommand {
23
+ language: string;
24
+ available: boolean;
25
+ resolvedPath: string | null;
26
+ }
27
+ export type ScipIndexerRegistry = Record<string, ScipIndexerCommand>;
28
+ export type ScipIndexerRegistryOverrides = Partial<Record<string, Partial<ScipIndexerCommand>>>;
29
+ /**
30
+ * Languages with known, actively-maintained SCIP indexers.
31
+ *
32
+ * | Language group | Indexer |
33
+ * |-------------------------|---------------------|
34
+ * | TypeScript, JavaScript | scip-typescript |
35
+ * | Python | scip-python |
36
+ * | Java, Scala, Kotlin | scip-java |
37
+ * | Rust | rust-analyzer scip |
38
+ * | C, C++ | scip-clang |
39
+ * | C# | scip-dotnet |
40
+ * | Ruby | scip-ruby |
41
+ * | PHP | scip-php |
42
+ * | Go | scip-go |
43
+ * | Dart | scip-dart |
44
+ */
45
+ export declare const DEFAULT_SCIP_INDEXER_REGISTRY: ScipIndexerRegistry;
46
+ /** Set of languages that have a SCIP indexer in the default registry. */
47
+ export declare const SCIP_SUPPORTED_LANGUAGES: Set<string>;
48
+ export declare function getDefaultScipIndexerRegistry(): ScipIndexerRegistry;
49
+ export declare function mergeScipIndexerRegistry(overrides?: ScipIndexerRegistryOverrides): ScipIndexerRegistry;
50
+ export declare function resolveScipIndexerRegistry(registry?: ScipIndexerRegistry, env?: NodeJS.ProcessEnv): Record<string, ResolvedScipIndexerCommand>;
51
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/scip/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAOH,MAAM,WAAW,kBAAkB;IACjC,0CAA0C;IAC1C,OAAO,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,8EAA8E;IAC9E,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,0BAA2B,SAAQ,kBAAkB;IACpE,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED,MAAM,MAAM,mBAAmB,GAAG,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;AACrE,MAAM,MAAM,4BAA4B,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;AAIhG;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,6BAA6B,EAAE,mBAe3C,CAAC;AAEF,yEAAyE;AACzE,eAAO,MAAM,wBAAwB,aAAsD,CAAC;AAI5F,wBAAgB,6BAA6B,IAAI,mBAAmB,CAMnE;AAED,wBAAgB,wBAAwB,CAAC,SAAS,GAAE,4BAAiC,GAAG,mBAAmB,CAmB1G;AAED,wBAAgB,0BAA0B,CACxC,QAAQ,GAAE,mBAAmD,EAC7D,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,MAAM,CAAC,MAAM,EAAE,0BAA0B,CAAC,CAqB5C"}
@@ -0,0 +1,131 @@
1
+ /**
2
+ * @module indexer/scip/registry
3
+ *
4
+ * Maps Lore language names to SCIP indexer commands.
5
+ *
6
+ * Each entry describes how to invoke the SCIP indexer for a given language,
7
+ * including the command, arguments, and the output file name. Not every
8
+ * language Lore supports has a SCIP indexer — those without one fall back
9
+ * to LSP enrichment (and ultimately to tree-sitter-only resolution).
10
+ */
11
+ import { accessSync, constants } from 'node:fs';
12
+ import { delimiter, isAbsolute, join } from 'node:path';
13
+ // ─── Default registry ─────────────────────────────────────────────────────────
14
+ /**
15
+ * Languages with known, actively-maintained SCIP indexers.
16
+ *
17
+ * | Language group | Indexer |
18
+ * |-------------------------|---------------------|
19
+ * | TypeScript, JavaScript | scip-typescript |
20
+ * | Python | scip-python |
21
+ * | Java, Scala, Kotlin | scip-java |
22
+ * | Rust | rust-analyzer scip |
23
+ * | C, C++ | scip-clang |
24
+ * | C# | scip-dotnet |
25
+ * | Ruby | scip-ruby |
26
+ * | PHP | scip-php |
27
+ * | Go | scip-go |
28
+ * | Dart | scip-dart |
29
+ */
30
+ export const DEFAULT_SCIP_INDEXER_REGISTRY = {
31
+ typescript: { command: 'scip-typescript', args: ['index', '--output', '{output}'] },
32
+ javascript: { command: 'scip-typescript', args: ['index', '--infer-tsconfig', '--output', '{output}'] },
33
+ python: { command: 'scip-python', args: ['index', '.', '--project-name', 'project', '--output', '{output}'] },
34
+ java: { command: 'scip-java', args: ['index', '--output', '{output}'] },
35
+ scala: { command: 'scip-java', args: ['index', '--output', '{output}'] },
36
+ kotlin: { command: 'scip-java', args: ['index', '--output', '{output}'] },
37
+ rust: { command: 'rust-analyzer', args: ['scip', '.'] },
38
+ c: { command: 'scip-clang', args: ['--index-output-path={output}'] },
39
+ cpp: { command: 'scip-clang', args: ['--index-output-path={output}'] },
40
+ csharp: { command: 'scip-dotnet', args: ['index', '.', '--output', '{output}'] },
41
+ ruby: { command: 'scip-ruby', args: ['--output', '{output}'] },
42
+ php: { command: 'scip-php', args: ['index', '--output', '{output}'] },
43
+ go: { command: 'scip-go', args: [] },
44
+ dart: { command: 'scip-dart', args: ['index', '--output', '{output}'] },
45
+ };
46
+ /** Set of languages that have a SCIP indexer in the default registry. */
47
+ export const SCIP_SUPPORTED_LANGUAGES = new Set(Object.keys(DEFAULT_SCIP_INDEXER_REGISTRY));
48
+ // ─── Registry helpers ─────────────────────────────────────────────────────────
49
+ export function getDefaultScipIndexerRegistry() {
50
+ const cloned = {};
51
+ for (const [lang, cmd] of Object.entries(DEFAULT_SCIP_INDEXER_REGISTRY)) {
52
+ cloned[lang] = { command: cmd.command, args: [...cmd.args], ...(cmd.cwd && { cwd: cmd.cwd }) };
53
+ }
54
+ return cloned;
55
+ }
56
+ export function mergeScipIndexerRegistry(overrides = {}) {
57
+ const merged = getDefaultScipIndexerRegistry();
58
+ for (const [lang, override] of Object.entries(overrides)) {
59
+ if (!override)
60
+ continue;
61
+ const base = merged[lang];
62
+ if (base) {
63
+ merged[lang] = {
64
+ command: override.command ?? base.command,
65
+ args: override.args ?? base.args,
66
+ ...(override.cwd !== undefined ? { cwd: override.cwd } : base.cwd ? { cwd: base.cwd } : {}),
67
+ };
68
+ }
69
+ else {
70
+ // Allow adding indexers for languages not in the default registry.
71
+ if (override.command && override.args) {
72
+ merged[lang] = { command: override.command, args: override.args, ...(override.cwd && { cwd: override.cwd }) };
73
+ }
74
+ }
75
+ }
76
+ return merged;
77
+ }
78
+ export function resolveScipIndexerRegistry(registry = DEFAULT_SCIP_INDEXER_REGISTRY, env = process.env) {
79
+ const resolved = {};
80
+ // Deduplicate commands that share the same executable (e.g., scip-java for java/scala/kotlin).
81
+ const resolveCache = new Map();
82
+ for (const [lang, cmd] of Object.entries(registry)) {
83
+ let resolvedPath = resolveCache.get(cmd.command);
84
+ if (resolvedPath === undefined) {
85
+ resolvedPath = resolveExecutableOnPath(cmd.command, env);
86
+ resolveCache.set(cmd.command, resolvedPath);
87
+ }
88
+ resolved[lang] = {
89
+ language: lang,
90
+ command: cmd.command,
91
+ args: [...cmd.args],
92
+ ...(cmd.cwd && { cwd: cmd.cwd }),
93
+ available: resolvedPath !== null,
94
+ resolvedPath,
95
+ };
96
+ }
97
+ return resolved;
98
+ }
99
+ // ─── PATH resolution (shared with LSP registry pattern) ──────────────────────
100
+ function resolveExecutableOnPath(command, env = process.env) {
101
+ if (!command.trim())
102
+ return null;
103
+ if (command.includes('/') || command.includes('\\') || isAbsolute(command)) {
104
+ return isExecutable(command) ? command : null;
105
+ }
106
+ const pathValue = env.PATH ?? '';
107
+ if (!pathValue)
108
+ return null;
109
+ const pathEntries = pathValue.split(delimiter).filter((e) => e.length > 0);
110
+ const extensions = process.platform === 'win32'
111
+ ? (env.PATHEXT ?? '.EXE;.CMD;.BAT;.COM').split(';').filter((e) => e.length > 0)
112
+ : [''];
113
+ for (const entry of pathEntries) {
114
+ for (const ext of extensions) {
115
+ const candidate = join(entry, process.platform === 'win32' ? `${command}${ext}` : command);
116
+ if (isExecutable(candidate))
117
+ return candidate;
118
+ }
119
+ }
120
+ return null;
121
+ }
122
+ function isExecutable(filePath) {
123
+ try {
124
+ accessSync(filePath, process.platform === 'win32' ? constants.F_OK : constants.X_OK);
125
+ return true;
126
+ }
127
+ catch {
128
+ return false;
129
+ }
130
+ }
131
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/scip/registry.ts"],"names":[],"mappings":"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"}