@jafreck/lore 0.3.4 → 0.3.6

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 (409) hide show
  1. package/README.md +53 -31
  2. package/dist/cli.js +113 -17
  3. package/dist/cli.js.map +1 -1
  4. package/dist/{lore-server/db.d.ts → db/read-only.d.ts} +75 -1
  5. package/dist/db/read-only.d.ts.map +1 -0
  6. package/dist/{lore-server/db.js → db/read-only.js} +115 -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} +3 -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/embeddings/embedder.d.ts +114 -0
  27. package/dist/embeddings/embedder.d.ts.map +1 -0
  28. package/dist/embeddings/embedder.js +208 -0
  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 -26
  39. package/dist/index.d.ts.map +1 -1
  40. package/dist/index.js +14 -13
  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 +18 -9
  45. package/dist/indexer/index.js.map +1 -1
  46. package/dist/indexer/pipeline.d.ts +36 -10
  47. package/dist/indexer/pipeline.d.ts.map +1 -1
  48. package/dist/indexer/pipeline.js +12 -6
  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.d.ts +9 -0
  57. package/dist/indexer/stages/embedding.d.ts.map +1 -1
  58. package/dist/indexer/stages/embedding.js +128 -84
  59. package/dist/indexer/stages/embedding.js.map +1 -1
  60. package/dist/indexer/stages/import-resolution.js +1 -1
  61. package/dist/indexer/stages/import-resolution.js.map +1 -1
  62. package/dist/indexer/stages/index.d.ts +2 -0
  63. package/dist/indexer/stages/index.d.ts.map +1 -1
  64. package/dist/indexer/stages/index.js +2 -0
  65. package/dist/indexer/stages/index.js.map +1 -1
  66. package/dist/indexer/stages/lsp-enrichment.d.ts +2 -2
  67. package/dist/indexer/stages/lsp-enrichment.d.ts.map +1 -1
  68. package/dist/indexer/stages/lsp-enrichment.js +131 -6
  69. package/dist/indexer/stages/lsp-enrichment.js.map +1 -1
  70. package/dist/indexer/stages/scip-enrichment.d.ts +43 -0
  71. package/dist/indexer/stages/scip-enrichment.d.ts.map +1 -0
  72. package/dist/indexer/stages/scip-enrichment.js +174 -0
  73. package/dist/indexer/stages/scip-enrichment.js.map +1 -0
  74. package/dist/indexer/stages/scip-source.d.ts +117 -0
  75. package/dist/indexer/stages/scip-source.d.ts.map +1 -0
  76. package/dist/indexer/stages/scip-source.js +922 -0
  77. package/dist/indexer/stages/scip-source.js.map +1 -0
  78. package/dist/indexer/stages/source-index.d.ts +2 -2
  79. package/dist/indexer/stages/source-index.d.ts.map +1 -1
  80. package/dist/indexer/stages/source-index.js +39 -30
  81. package/dist/indexer/stages/source-index.js.map +1 -1
  82. package/dist/lsp/client.d.ts.map +1 -0
  83. package/dist/{indexer/lsp → lsp}/client.js +1 -1
  84. package/dist/lsp/client.js.map +1 -0
  85. package/dist/lsp/config.d.ts.map +1 -0
  86. package/dist/{indexer/lsp → lsp}/config.js +1 -1
  87. package/dist/lsp/config.js.map +1 -0
  88. package/dist/lsp/enrichment.d.ts.map +1 -0
  89. package/dist/lsp/enrichment.js.map +1 -0
  90. package/dist/lsp/registry.d.ts.map +1 -0
  91. package/dist/{indexer/lsp → lsp}/registry.js +1 -1
  92. package/dist/lsp/registry.js.map +1 -0
  93. package/dist/{indexer → parsing}/complexity.d.ts.map +1 -1
  94. package/dist/{indexer → parsing}/complexity.js.map +1 -1
  95. package/dist/{indexer → parsing}/config-parser.d.ts.map +1 -1
  96. package/dist/{indexer → parsing}/config-parser.js.map +1 -1
  97. package/dist/{indexer → parsing}/extractors/bash.d.ts.map +1 -1
  98. package/dist/{indexer → parsing}/extractors/bash.js.map +1 -1
  99. package/dist/{indexer → parsing}/extractors/c.d.ts.map +1 -1
  100. package/dist/{indexer → parsing}/extractors/c.js +4 -4
  101. package/dist/parsing/extractors/c.js.map +1 -0
  102. package/dist/{indexer → parsing}/extractors/cpp.d.ts.map +1 -1
  103. package/dist/{indexer → parsing}/extractors/cpp.js +6 -12
  104. package/dist/parsing/extractors/cpp.js.map +1 -0
  105. package/dist/{indexer → parsing}/extractors/csharp.d.ts.map +1 -1
  106. package/dist/{indexer → parsing}/extractors/csharp.js +1 -6
  107. package/dist/{indexer → parsing}/extractors/csharp.js.map +1 -1
  108. package/dist/{indexer → parsing}/extractors/elixir.d.ts.map +1 -1
  109. package/dist/{indexer → parsing}/extractors/elixir.js +10 -15
  110. package/dist/parsing/extractors/elixir.js.map +1 -0
  111. package/dist/{indexer → parsing}/extractors/elm.d.ts.map +1 -1
  112. package/dist/{indexer → parsing}/extractors/elm.js.map +1 -1
  113. package/dist/{indexer → parsing}/extractors/go.d.ts.map +1 -1
  114. package/dist/{indexer → parsing}/extractors/go.js +0 -1
  115. package/dist/parsing/extractors/go.js.map +1 -0
  116. package/dist/{indexer → parsing}/extractors/haskell.d.ts.map +1 -1
  117. package/dist/{indexer → parsing}/extractors/haskell.js +2 -4
  118. package/dist/parsing/extractors/haskell.js.map +1 -0
  119. package/dist/{indexer → parsing}/extractors/java.d.ts.map +1 -1
  120. package/dist/{indexer → parsing}/extractors/java.js.map +1 -1
  121. package/dist/{indexer → parsing}/extractors/javascript.d.ts.map +1 -1
  122. package/dist/{indexer → parsing}/extractors/javascript.js +23 -3
  123. package/dist/parsing/extractors/javascript.js.map +1 -0
  124. package/dist/{indexer → parsing}/extractors/julia.d.ts.map +1 -1
  125. package/dist/{indexer → parsing}/extractors/julia.js.map +1 -1
  126. package/dist/{indexer → parsing}/extractors/kotlin.d.ts.map +1 -1
  127. package/dist/{indexer → parsing}/extractors/kotlin.js +4 -3
  128. package/dist/{indexer → parsing}/extractors/kotlin.js.map +1 -1
  129. package/dist/{indexer → parsing}/extractors/lua.d.ts.map +1 -1
  130. package/dist/{indexer → parsing}/extractors/lua.js +1 -13
  131. package/dist/parsing/extractors/lua.js.map +1 -0
  132. package/dist/{indexer → parsing}/extractors/objc.d.ts.map +1 -1
  133. package/dist/{indexer → parsing}/extractors/objc.js +4 -6
  134. package/dist/parsing/extractors/objc.js.map +1 -0
  135. package/dist/{indexer → parsing}/extractors/ocaml.d.ts.map +1 -1
  136. package/dist/{indexer → parsing}/extractors/ocaml.js +2 -10
  137. package/dist/parsing/extractors/ocaml.js.map +1 -0
  138. package/dist/{indexer → parsing}/extractors/php.d.ts.map +1 -1
  139. package/dist/{indexer → parsing}/extractors/php.js.map +1 -1
  140. package/dist/{indexer → parsing}/extractors/python.d.ts.map +1 -1
  141. package/dist/{indexer → parsing}/extractors/python.js.map +1 -1
  142. package/dist/{indexer → parsing}/extractors/ruby.d.ts.map +1 -1
  143. package/dist/{indexer → parsing}/extractors/ruby.js.map +1 -1
  144. package/dist/{indexer → parsing}/extractors/rust.d.ts.map +1 -1
  145. package/dist/{indexer → parsing}/extractors/rust.js +1 -1
  146. package/dist/{indexer → parsing}/extractors/rust.js.map +1 -1
  147. package/dist/{indexer → parsing}/extractors/scala.d.ts.map +1 -1
  148. package/dist/{indexer → parsing}/extractors/scala.js.map +1 -1
  149. package/dist/{indexer → parsing}/extractors/swift.d.ts.map +1 -1
  150. package/dist/{indexer → parsing}/extractors/swift.js.map +1 -1
  151. package/dist/{indexer → parsing}/extractors/types.d.ts.map +1 -1
  152. package/dist/{indexer → parsing}/extractors/types.js.map +1 -1
  153. package/dist/{indexer → parsing}/extractors/typescript.d.ts.map +1 -1
  154. package/dist/{indexer → parsing}/extractors/typescript.js +45 -19
  155. package/dist/parsing/extractors/typescript.js.map +1 -0
  156. package/dist/{indexer → parsing}/extractors/zig.d.ts.map +1 -1
  157. package/dist/{indexer → parsing}/extractors/zig.js +0 -4
  158. package/dist/parsing/extractors/zig.js.map +1 -0
  159. package/dist/{indexer → parsing}/parser.d.ts.map +1 -1
  160. package/dist/{indexer → parsing}/parser.js.map +1 -1
  161. package/dist/{indexer → resolution}/call-graph.d.ts +15 -1
  162. package/dist/resolution/call-graph.d.ts.map +1 -0
  163. package/dist/{indexer → resolution}/call-graph.js +34 -0
  164. package/dist/resolution/call-graph.js.map +1 -0
  165. package/dist/resolution/graph-analysis.d.ts +115 -0
  166. package/dist/resolution/graph-analysis.d.ts.map +1 -0
  167. package/dist/resolution/graph-analysis.js +575 -0
  168. package/dist/resolution/graph-analysis.js.map +1 -0
  169. package/dist/{indexer → resolution}/resolution-method.d.ts +3 -1
  170. package/dist/resolution/resolution-method.d.ts.map +1 -0
  171. package/dist/{indexer → resolution}/resolution-method.js +4 -0
  172. package/dist/resolution/resolution-method.js.map +1 -0
  173. package/dist/{indexer → resolution}/resolver.d.ts +1 -1
  174. package/dist/resolution/resolver.d.ts.map +1 -0
  175. package/dist/resolution/resolver.js.map +1 -0
  176. package/dist/runtime.d.ts +6 -3
  177. package/dist/runtime.d.ts.map +1 -1
  178. package/dist/runtime.js +8 -7
  179. package/dist/runtime.js.map +1 -1
  180. package/dist/scip/config.d.ts +32 -0
  181. package/dist/scip/config.d.ts.map +1 -0
  182. package/dist/scip/config.js +96 -0
  183. package/dist/scip/config.js.map +1 -0
  184. package/dist/scip/enrichment.d.ts +56 -0
  185. package/dist/scip/enrichment.d.ts.map +1 -0
  186. package/dist/scip/enrichment.js +258 -0
  187. package/dist/scip/enrichment.js.map +1 -0
  188. package/dist/scip/index-reader.d.ts +100 -0
  189. package/dist/scip/index-reader.d.ts.map +1 -0
  190. package/dist/scip/index-reader.js +225 -0
  191. package/dist/scip/index-reader.js.map +1 -0
  192. package/dist/scip/registry.d.ts +51 -0
  193. package/dist/scip/registry.d.ts.map +1 -0
  194. package/dist/scip/registry.js +131 -0
  195. package/dist/scip/registry.js.map +1 -0
  196. package/dist/scip/scip_pb.d.ts +2118 -0
  197. package/dist/scip/scip_pb.d.ts.map +1 -0
  198. package/dist/scip/scip_pb.js +1534 -0
  199. package/dist/scip/scip_pb.js.map +1 -0
  200. package/dist/{lore-server → server}/server.d.ts +2 -2
  201. package/dist/server/server.d.ts.map +1 -0
  202. package/dist/{lore-server → server}/server.js +9 -19
  203. package/dist/server/server.js.map +1 -0
  204. package/dist/{lore-server → server}/tool-registry.d.ts +2 -2
  205. package/dist/server/tool-registry.d.ts.map +1 -0
  206. package/dist/{lore-server → server}/tool-registry.js +6 -1
  207. package/dist/server/tool-registry.js.map +1 -0
  208. package/dist/{lore-server → server}/tools/annotations.d.ts +2 -2
  209. package/dist/server/tools/annotations.d.ts.map +1 -0
  210. package/dist/{lore-server → server}/tools/annotations.js +1 -1
  211. package/dist/server/tools/annotations.js.map +1 -0
  212. package/dist/{lore-server → server}/tools/architecture.d.ts +1 -1
  213. package/dist/server/tools/architecture.d.ts.map +1 -0
  214. package/dist/server/tools/architecture.js.map +1 -0
  215. package/dist/{lore-server → server}/tools/blame.d.ts +1 -1
  216. package/dist/server/tools/blame.d.ts.map +1 -0
  217. package/dist/{lore-server → server}/tools/blame.js +1 -1
  218. package/dist/server/tools/blame.js.map +1 -0
  219. package/dist/{lore-server → server}/tools/coverage.d.ts +1 -1
  220. package/dist/server/tools/coverage.d.ts.map +1 -0
  221. package/dist/{lore-server → server}/tools/coverage.js +1 -1
  222. package/dist/server/tools/coverage.js.map +1 -0
  223. package/dist/{lore-server → server}/tools/docs.d.ts +3 -3
  224. package/dist/server/tools/docs.d.ts.map +1 -0
  225. package/dist/{lore-server → server}/tools/docs.js +1 -1
  226. package/dist/server/tools/docs.js.map +1 -0
  227. package/dist/server/tools/graph-analysis.d.ts +64 -0
  228. package/dist/server/tools/graph-analysis.d.ts.map +1 -0
  229. package/dist/server/tools/graph-analysis.js +82 -0
  230. package/dist/server/tools/graph-analysis.js.map +1 -0
  231. package/dist/{lore-server → server}/tools/graph.d.ts +25 -3
  232. package/dist/server/tools/graph.d.ts.map +1 -0
  233. package/dist/{lore-server → server}/tools/graph.js +101 -6
  234. package/dist/server/tools/graph.js.map +1 -0
  235. package/dist/{lore-server → server}/tools/history.d.ts +3 -3
  236. package/dist/server/tools/history.d.ts.map +1 -0
  237. package/dist/{lore-server → server}/tools/history.js +1 -1
  238. package/dist/server/tools/history.js.map +1 -0
  239. package/dist/{lore-server → server}/tools/lookup.d.ts +2 -2
  240. package/dist/server/tools/lookup.d.ts.map +1 -0
  241. package/dist/{lore-server → server}/tools/lookup.js +1 -1
  242. package/dist/server/tools/lookup.js.map +1 -0
  243. package/dist/{lore-server → server}/tools/metrics.d.ts +2 -2
  244. package/dist/server/tools/metrics.d.ts.map +1 -0
  245. package/dist/{lore-server → server}/tools/metrics.js +3 -2
  246. package/dist/server/tools/metrics.js.map +1 -0
  247. package/dist/{lore-server → server}/tools/notes.d.ts +1 -1
  248. package/dist/server/tools/notes.d.ts.map +1 -0
  249. package/dist/server/tools/notes.js.map +1 -0
  250. package/dist/{lore-server → server}/tools/routes.d.ts +2 -2
  251. package/dist/server/tools/routes.d.ts.map +1 -0
  252. package/dist/{lore-server → server}/tools/routes.js +1 -1
  253. package/dist/server/tools/routes.js.map +1 -0
  254. package/dist/{lore-server → server}/tools/search.d.ts +2 -2
  255. package/dist/server/tools/search.d.ts.map +1 -0
  256. package/dist/{lore-server → server}/tools/search.js +1 -1
  257. package/dist/server/tools/search.js.map +1 -0
  258. package/dist/{lore-server → server}/tools/snippet.d.ts +1 -1
  259. package/dist/server/tools/snippet.d.ts.map +1 -0
  260. package/dist/{lore-server → server}/tools/snippet.js +1 -1
  261. package/dist/server/tools/snippet.js.map +1 -0
  262. package/dist/{lore-server → server}/tools/test-map.d.ts +1 -1
  263. package/dist/server/tools/test-map.d.ts.map +1 -0
  264. package/dist/{lore-server → server}/tools/test-map.js +1 -1
  265. package/dist/server/tools/test-map.js.map +1 -0
  266. package/dist/server/tools/writeback.d.ts.map +1 -0
  267. package/dist/server/tools/writeback.js.map +1 -0
  268. package/dist/{indexer → testing}/coverage.d.ts +1 -1
  269. package/dist/testing/coverage.d.ts.map +1 -0
  270. package/dist/{indexer → testing}/coverage.js.map +1 -1
  271. package/dist/{indexer → testing}/test-mapper.d.ts +1 -1
  272. package/dist/testing/test-mapper.d.ts.map +1 -0
  273. package/dist/{indexer → testing}/test-mapper.js.map +1 -1
  274. package/package.json +12 -9
  275. package/dist/indexer/call-graph.d.ts.map +0 -1
  276. package/dist/indexer/call-graph.js.map +0 -1
  277. package/dist/indexer/coverage.d.ts.map +0 -1
  278. package/dist/indexer/db.d.ts.map +0 -1
  279. package/dist/indexer/db.js.map +0 -1
  280. package/dist/indexer/docs.d.ts.map +0 -1
  281. package/dist/indexer/docs.js.map +0 -1
  282. package/dist/indexer/embedder.d.ts +0 -66
  283. package/dist/indexer/embedder.d.ts.map +0 -1
  284. package/dist/indexer/embedder.js +0 -85
  285. package/dist/indexer/embedder.js.map +0 -1
  286. package/dist/indexer/extractors/c.js.map +0 -1
  287. package/dist/indexer/extractors/cpp.js.map +0 -1
  288. package/dist/indexer/extractors/elixir.js.map +0 -1
  289. package/dist/indexer/extractors/go.js.map +0 -1
  290. package/dist/indexer/extractors/haskell.js.map +0 -1
  291. package/dist/indexer/extractors/javascript.js.map +0 -1
  292. package/dist/indexer/extractors/lua.js.map +0 -1
  293. package/dist/indexer/extractors/objc.js.map +0 -1
  294. package/dist/indexer/extractors/ocaml.js.map +0 -1
  295. package/dist/indexer/extractors/typescript.js.map +0 -1
  296. package/dist/indexer/extractors/zig.js.map +0 -1
  297. package/dist/indexer/git-history.d.ts.map +0 -1
  298. package/dist/indexer/git-history.js.map +0 -1
  299. package/dist/indexer/git-hooks.d.ts.map +0 -1
  300. package/dist/indexer/git-hooks.js.map +0 -1
  301. package/dist/indexer/lsp/client.d.ts.map +0 -1
  302. package/dist/indexer/lsp/client.js.map +0 -1
  303. package/dist/indexer/lsp/config.d.ts.map +0 -1
  304. package/dist/indexer/lsp/config.js.map +0 -1
  305. package/dist/indexer/lsp/enrichment.d.ts.map +0 -1
  306. package/dist/indexer/lsp/enrichment.js.map +0 -1
  307. package/dist/indexer/lsp/registry.d.ts.map +0 -1
  308. package/dist/indexer/lsp/registry.js.map +0 -1
  309. package/dist/indexer/poller.d.ts.map +0 -1
  310. package/dist/indexer/poller.js.map +0 -1
  311. package/dist/indexer/resolution-method.d.ts.map +0 -1
  312. package/dist/indexer/resolution-method.js.map +0 -1
  313. package/dist/indexer/resolver.d.ts.map +0 -1
  314. package/dist/indexer/resolver.js.map +0 -1
  315. package/dist/indexer/test-mapper.d.ts.map +0 -1
  316. package/dist/indexer/walker.d.ts.map +0 -1
  317. package/dist/indexer/walker.js.map +0 -1
  318. package/dist/indexer/watcher.d.ts.map +0 -1
  319. package/dist/indexer/watcher.js.map +0 -1
  320. package/dist/lore-server/db.d.ts.map +0 -1
  321. package/dist/lore-server/db.js.map +0 -1
  322. package/dist/lore-server/server.d.ts.map +0 -1
  323. package/dist/lore-server/server.js.map +0 -1
  324. package/dist/lore-server/tool-registry.d.ts.map +0 -1
  325. package/dist/lore-server/tool-registry.js.map +0 -1
  326. package/dist/lore-server/tools/annotations.d.ts.map +0 -1
  327. package/dist/lore-server/tools/annotations.js.map +0 -1
  328. package/dist/lore-server/tools/architecture.d.ts.map +0 -1
  329. package/dist/lore-server/tools/architecture.js.map +0 -1
  330. package/dist/lore-server/tools/blame.d.ts.map +0 -1
  331. package/dist/lore-server/tools/blame.js.map +0 -1
  332. package/dist/lore-server/tools/coverage.d.ts.map +0 -1
  333. package/dist/lore-server/tools/coverage.js.map +0 -1
  334. package/dist/lore-server/tools/docs.d.ts.map +0 -1
  335. package/dist/lore-server/tools/docs.js.map +0 -1
  336. package/dist/lore-server/tools/graph.d.ts.map +0 -1
  337. package/dist/lore-server/tools/graph.js.map +0 -1
  338. package/dist/lore-server/tools/history.d.ts.map +0 -1
  339. package/dist/lore-server/tools/history.js.map +0 -1
  340. package/dist/lore-server/tools/lookup.d.ts.map +0 -1
  341. package/dist/lore-server/tools/lookup.js.map +0 -1
  342. package/dist/lore-server/tools/metrics.d.ts.map +0 -1
  343. package/dist/lore-server/tools/metrics.js.map +0 -1
  344. package/dist/lore-server/tools/notes.d.ts.map +0 -1
  345. package/dist/lore-server/tools/notes.js.map +0 -1
  346. package/dist/lore-server/tools/routes.d.ts.map +0 -1
  347. package/dist/lore-server/tools/routes.js.map +0 -1
  348. package/dist/lore-server/tools/search.d.ts.map +0 -1
  349. package/dist/lore-server/tools/search.js.map +0 -1
  350. package/dist/lore-server/tools/snippet.d.ts.map +0 -1
  351. package/dist/lore-server/tools/snippet.js.map +0 -1
  352. package/dist/lore-server/tools/test-map.d.ts.map +0 -1
  353. package/dist/lore-server/tools/test-map.js.map +0 -1
  354. package/dist/lore-server/tools/writeback.d.ts.map +0 -1
  355. package/dist/lore-server/tools/writeback.js.map +0 -1
  356. /package/dist/{indexer → docs}/docs.d.ts +0 -0
  357. /package/dist/{indexer → docs}/docs.js +0 -0
  358. /package/dist/{indexer/lsp → lsp}/client.d.ts +0 -0
  359. /package/dist/{indexer/lsp → lsp}/config.d.ts +0 -0
  360. /package/dist/{indexer/lsp → lsp}/enrichment.d.ts +0 -0
  361. /package/dist/{indexer/lsp → lsp}/enrichment.js +0 -0
  362. /package/dist/{indexer/lsp → lsp}/registry.d.ts +0 -0
  363. /package/dist/{indexer → parsing}/complexity.d.ts +0 -0
  364. /package/dist/{indexer → parsing}/complexity.js +0 -0
  365. /package/dist/{indexer → parsing}/config-parser.d.ts +0 -0
  366. /package/dist/{indexer → parsing}/config-parser.js +0 -0
  367. /package/dist/{indexer → parsing}/extractors/bash.d.ts +0 -0
  368. /package/dist/{indexer → parsing}/extractors/bash.js +0 -0
  369. /package/dist/{indexer → parsing}/extractors/c.d.ts +0 -0
  370. /package/dist/{indexer → parsing}/extractors/cpp.d.ts +0 -0
  371. /package/dist/{indexer → parsing}/extractors/csharp.d.ts +0 -0
  372. /package/dist/{indexer → parsing}/extractors/elixir.d.ts +0 -0
  373. /package/dist/{indexer → parsing}/extractors/elm.d.ts +0 -0
  374. /package/dist/{indexer → parsing}/extractors/elm.js +0 -0
  375. /package/dist/{indexer → parsing}/extractors/go.d.ts +0 -0
  376. /package/dist/{indexer → parsing}/extractors/haskell.d.ts +0 -0
  377. /package/dist/{indexer → parsing}/extractors/java.d.ts +0 -0
  378. /package/dist/{indexer → parsing}/extractors/java.js +0 -0
  379. /package/dist/{indexer → parsing}/extractors/javascript.d.ts +0 -0
  380. /package/dist/{indexer → parsing}/extractors/julia.d.ts +0 -0
  381. /package/dist/{indexer → parsing}/extractors/julia.js +0 -0
  382. /package/dist/{indexer → parsing}/extractors/kotlin.d.ts +0 -0
  383. /package/dist/{indexer → parsing}/extractors/lua.d.ts +0 -0
  384. /package/dist/{indexer → parsing}/extractors/objc.d.ts +0 -0
  385. /package/dist/{indexer → parsing}/extractors/ocaml.d.ts +0 -0
  386. /package/dist/{indexer → parsing}/extractors/php.d.ts +0 -0
  387. /package/dist/{indexer → parsing}/extractors/php.js +0 -0
  388. /package/dist/{indexer → parsing}/extractors/python.d.ts +0 -0
  389. /package/dist/{indexer → parsing}/extractors/python.js +0 -0
  390. /package/dist/{indexer → parsing}/extractors/ruby.d.ts +0 -0
  391. /package/dist/{indexer → parsing}/extractors/ruby.js +0 -0
  392. /package/dist/{indexer → parsing}/extractors/rust.d.ts +0 -0
  393. /package/dist/{indexer → parsing}/extractors/scala.d.ts +0 -0
  394. /package/dist/{indexer → parsing}/extractors/scala.js +0 -0
  395. /package/dist/{indexer → parsing}/extractors/swift.d.ts +0 -0
  396. /package/dist/{indexer → parsing}/extractors/swift.js +0 -0
  397. /package/dist/{indexer → parsing}/extractors/types.d.ts +0 -0
  398. /package/dist/{indexer → parsing}/extractors/types.js +0 -0
  399. /package/dist/{indexer → parsing}/extractors/typescript.d.ts +0 -0
  400. /package/dist/{indexer → parsing}/extractors/zig.d.ts +0 -0
  401. /package/dist/{indexer → parsing}/parser.d.ts +0 -0
  402. /package/dist/{indexer → parsing}/parser.js +0 -0
  403. /package/dist/{indexer → resolution}/resolver.js +0 -0
  404. /package/dist/{lore-server → server}/tools/architecture.js +0 -0
  405. /package/dist/{lore-server → server}/tools/notes.js +0 -0
  406. /package/dist/{lore-server → server}/tools/writeback.d.ts +0 -0
  407. /package/dist/{lore-server → server}/tools/writeback.js +0 -0
  408. /package/dist/{indexer → testing}/coverage.js +0 -0
  409. /package/dist/{indexer → testing}/test-mapper.js +0 -0
@@ -6,7 +6,7 @@
6
6
  * `IndexBuilder.update()` with the affected paths.
7
7
  */
8
8
  import * as fs from 'node:fs';
9
- import { IndexBuilder } from './index.js';
9
+ import { IndexBuilder } from '../indexer/index.js';
10
10
  // ─── FileWatcher ──────────────────────────────────────────────────────────────
11
11
  /**
12
12
  * Watches a directory tree for file changes and triggers incremental index
@@ -28,11 +28,17 @@ export class FileWatcher {
28
28
  history;
29
29
  indexDependencies;
30
30
  lsp;
31
+ scip;
32
+ scipQuietPeriodMs;
31
33
  embedder;
32
34
  watcher = null;
33
35
  pendingPaths = new Set();
34
36
  debounceTimer = null;
35
37
  flushRunning = false;
38
+ /** Paths changed since the last SCIP-enabled update. */
39
+ pathsSinceLastScip = new Set();
40
+ /** Timer for the deferred SCIP update. */
41
+ scipTimer = null;
36
42
  constructor(dbPath, walkerConfig, options = {}) {
37
43
  this.dbPath = dbPath;
38
44
  this.walkerConfig = walkerConfig;
@@ -41,6 +47,8 @@ export class FileWatcher {
41
47
  this.history = options.history ?? false;
42
48
  this.indexDependencies = options.indexDependencies ?? false;
43
49
  this.lsp = options.lsp;
50
+ this.scip = options.scip;
51
+ this.scipQuietPeriodMs = options.scipQuietPeriodMs ?? 10_000;
44
52
  this.embedder = options.embedder;
45
53
  }
46
54
  /** Begin watching `walkerConfig.rootDir` recursively for file changes. */
@@ -76,6 +84,10 @@ export class FileWatcher {
76
84
  clearTimeout(this.debounceTimer);
77
85
  this.debounceTimer = null;
78
86
  }
87
+ if (this.scipTimer !== null) {
88
+ clearTimeout(this.scipTimer);
89
+ this.scipTimer = null;
90
+ }
79
91
  if (this.watcher) {
80
92
  this.watcher.close();
81
93
  this.watcher = null;
@@ -98,10 +110,15 @@ export class FileWatcher {
98
110
  this.pendingPaths.clear();
99
111
  if (paths.length === 0)
100
112
  return;
113
+ // Determine whether to include SCIP in this update cycle.
114
+ // When a quiet-period is configured, immediate flushes run tree-sitter
115
+ // only (scip: null); SCIP re-indexing is deferred to scheduleScipFlush().
116
+ const useScip = this.scip && this.scipQuietPeriodMs === 0;
101
117
  const builder = new IndexBuilder(this.dbPath, this.walkerConfig, this.embedder, {
102
118
  history: this.history,
103
119
  ...(this.indexDependencies && { indexDependencies: true }),
104
120
  ...(this.lsp && { lsp: this.lsp }),
121
+ ...(useScip && { scip: this.scip }),
105
122
  });
106
123
  let errorCount = 0;
107
124
  try {
@@ -118,6 +135,13 @@ export class FileWatcher {
118
135
  files: paths.length,
119
136
  errors: errorCount,
120
137
  }) + '\n');
138
+ // If SCIP is configured with throttling, accumulate paths and
139
+ // schedule a deferred SCIP-enabled update after the quiet period.
140
+ if (this.scip && this.scipQuietPeriodMs > 0) {
141
+ for (const p of paths)
142
+ this.pathsSinceLastScip.add(p);
143
+ this.scheduleScipFlush();
144
+ }
121
145
  }
122
146
  finally {
123
147
  this.flushRunning = false;
@@ -126,5 +150,42 @@ export class FileWatcher {
126
150
  }
127
151
  }
128
152
  }
153
+ /**
154
+ * Schedule (or reschedule) a SCIP-enabled update after the quiet period.
155
+ *
156
+ * Every call resets the timer so that SCIP only runs once editing stops
157
+ * for `scipQuietPeriodMs` milliseconds.
158
+ */
159
+ scheduleScipFlush() {
160
+ if (this.scipTimer !== null) {
161
+ clearTimeout(this.scipTimer);
162
+ }
163
+ this.scipTimer = setTimeout(() => this.scipFlush(), this.scipQuietPeriodMs);
164
+ }
165
+ async scipFlush() {
166
+ this.scipTimer = null;
167
+ const paths = [...this.pathsSinceLastScip];
168
+ this.pathsSinceLastScip.clear();
169
+ if (paths.length === 0)
170
+ return;
171
+ const builder = new IndexBuilder(this.dbPath, this.walkerConfig, this.embedder, {
172
+ history: this.history,
173
+ ...(this.indexDependencies && { indexDependencies: true }),
174
+ ...(this.lsp && { lsp: this.lsp }),
175
+ scip: this.scip,
176
+ });
177
+ try {
178
+ await builder.update(paths);
179
+ }
180
+ catch (err) {
181
+ process.stderr.write(JSON.stringify({ level: 'error', source: 'FileWatcher', message: String(err) }) + '\n');
182
+ }
183
+ process.stderr.write(JSON.stringify({
184
+ level: 'info',
185
+ source: 'FileWatcher',
186
+ message: 'scip refresh cycle complete',
187
+ files: paths.length,
188
+ }) + '\n');
189
+ }
129
190
  }
130
191
  //# sourceMappingURL=watcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"watcher.js","sourceRoot":"","sources":["../../src/discovery/watcher.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docs.d.ts","sourceRoot":"","sources":["../../src/docs/docs.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,YAAY,GACpB,QAAQ,GACR,KAAK,GACL,cAAc,GACd,QAAQ,GACR,OAAO,GACP,WAAW,GACX,WAAW,GACX,MAAM,CAAC;AAEX,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,YAAY,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,eAAe,EAAE,CAAC;IAC5B,MAAM,EAAE,aAAa,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,aAAa;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB;AAaD,eAAO,MAAM,sBAAsB,UAAmC,CAAC;AAEvE,eAAO,MAAM,yBAAyB,UAOrC,CAAC;AAKF,wBAAsB,0BAA0B,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC,CA2C1G;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,YAAY,CA4BhE;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAU5E;AAED,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,eAAe,EAAE,CAqC1F;AAED,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,eAAe,EAAE,GAC1B,aAAa,EAAE,CAwCjB;AAED,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,IAAI,CAAC,iBAAiB,EAAE,MAAM,GAAG,MAAM,CAAC,GAAG,MAAM,GAAG,IAAI,CAkBlG;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAEzE"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docs.js","sourceRoot":"","sources":["../../src/docs/docs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,114 @@
1
+ /**
2
+ * @module indexer/embedder
3
+ *
4
+ * Provides an `EmbeddingProvider` abstraction for generating dense vector
5
+ * embeddings from text. The primary implementation (`TransformersJsProvider`)
6
+ * uses the `@huggingface/transformers` library to run ONNX models natively
7
+ * in Node.js — no Python or external processes required.
8
+ *
9
+ * The model's embedding dimensionality is auto-detected at startup by
10
+ * embedding a probe sentence and inspecting the output shape.
11
+ */
12
+ export interface EmbeddingProvider {
13
+ /** Embed a batch of texts; returns one float vector per input. */
14
+ embed(texts: string[]): Promise<number[][]>;
15
+ /** Human-readable model identifier. */
16
+ readonly modelName: string;
17
+ /**
18
+ * Dimensionality of the returned vectors.
19
+ * Only valid after `init()` resolves (throws before that).
20
+ */
21
+ readonly dims: number;
22
+ /**
23
+ * Load the model and detect dimensionality.
24
+ * Must be called (and awaited) before the first `embed()` call.
25
+ */
26
+ init(): Promise<void>;
27
+ /** Release the underlying resources. */
28
+ dispose(): Promise<void>;
29
+ }
30
+ export interface StructuralEmbeddingInput {
31
+ name: string;
32
+ signature: string | null;
33
+ resolvedTypeSignature?: string | null;
34
+ resolvedReturnType?: string | null;
35
+ }
36
+ export declare function buildStructuralEmbeddingText(input: StructuralEmbeddingInput): string;
37
+ /** SHA-256 hex hash of an embedding input text (used for skip-unchanged logic). */
38
+ export declare function hashEmbeddingText(text: string): string;
39
+ /**
40
+ * Split `items` into token-budget-aware batches.
41
+ *
42
+ * Each batch stays within `MAX_BATCH_TOKENS` total estimated tokens and
43
+ * `MAX_BATCH_ITEMS` items. An individual item that exceeds the token
44
+ * budget gets its own single-item batch.
45
+ */
46
+ export declare function tokenAwareBatch<T>(items: T[], getText: (item: T) => string): T[][];
47
+ /** ONNX quantization level for model loading. */
48
+ export type OnnxDtype = 'fp32' | 'fp16' | 'q8' | 'q4';
49
+ /**
50
+ * Generates embeddings using `@huggingface/transformers` (Transformers.js).
51
+ * Runs ONNX models natively in Node — zero Python dependency.
52
+ *
53
+ * Auto-detects the best available ONNX execution provider:
54
+ * - `webgpu` when available (Linux/Windows with GPU)
55
+ * - `coreml` on Apple Silicon (macOS arm64)
56
+ * - `cpu` everywhere else (always available)
57
+ *
58
+ * Override via `LORE_EMBED_DEVICE` env var (e.g. `cpu`, `coreml`, `webgpu`).
59
+ * Override quantization via `LORE_EMBED_DTYPE` env var (e.g. `q8`, `q4`, `fp16`).
60
+ *
61
+ * Call `init()` first to download/load the model and detect its embedding
62
+ * dimensionality. The model is kept in memory for the provider's lifetime.
63
+ */
64
+ export declare class TransformersJsProvider implements EmbeddingProvider {
65
+ readonly modelName: string;
66
+ readonly dtype: OnnxDtype;
67
+ private _dims;
68
+ private _device;
69
+ private _pipeline;
70
+ private initialized;
71
+ constructor(modelName: string, dtype?: OnnxDtype);
72
+ /** Embedding dimensionality — available only after `init()`. */
73
+ get dims(): number;
74
+ /** ONNX execution provider selected during init (cpu/coreml/webgpu). */
75
+ get device(): string;
76
+ /**
77
+ * Load the model via Transformers.js and detect embedding dimensionality
78
+ * by running a single probe sentence.
79
+ */
80
+ init(): Promise<void>;
81
+ embed(texts: string[]): Promise<number[][]>;
82
+ dispose(): Promise<void>;
83
+ /**
84
+ * Detect the best available ONNX execution provider.
85
+ * Respects `LORE_EMBED_DEVICE` env var for explicit override.
86
+ */
87
+ private detectDevice;
88
+ }
89
+ /**
90
+ * Wraps a `TransformersJsProvider` with deferred initialisation.
91
+ *
92
+ * The model is only downloaded and loaded on the first call to `embed()` or
93
+ * an explicit `init()`. This allows `lore index` to complete faster when
94
+ * embeddings are configured but the user primarily uses structural search.
95
+ *
96
+ * The MCP server can pass a `LazyEmbeddingProvider` so semantic search
97
+ * triggers model loading on-demand rather than at startup.
98
+ */
99
+ export declare class LazyEmbeddingProvider implements EmbeddingProvider {
100
+ private readonly inner;
101
+ private _initPromise;
102
+ constructor(modelName: string, dtype?: OnnxDtype);
103
+ get modelName(): string;
104
+ get dims(): number;
105
+ init(): Promise<void>;
106
+ embed(texts: string[]): Promise<number[][]>;
107
+ dispose(): Promise<void>;
108
+ }
109
+ /**
110
+ * Default embedding model — `Qwen/Qwen3-Embedding-0.6B` is a compact,
111
+ * 1024-dim model with strong multilingual and code understanding.
112
+ */
113
+ export declare const DEFAULT_EMBEDDING_MODEL = "Qwen/Qwen3-Embedding-0.6B";
114
+ //# sourceMappingURL=embedder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"embedder.d.ts","sourceRoot":"","sources":["../../src/embeddings/embedder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAMH,MAAM,WAAW,iBAAiB;IAChC,kEAAkE;IAClE,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC5C,uCAAuC;IACvC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B;;;OAGG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB,wCAAwC;IACxC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1B;AAED,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,qBAAqB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACpC;AAED,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,wBAAwB,GAAG,MAAM,CASpF;AAED,mFAAmF;AACnF,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEtD;AAyBD;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,GAAG,CAAC,EAAE,EAAE,CAiBlF;AASD,iDAAiD;AACjD,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;AAEtD;;;;;;;;;;;;;;GAcG;AACH,qBAAa,sBAAuB,YAAW,iBAAiB;IAC9D,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;IAC1B,OAAO,CAAC,KAAK,CAAuB;IACpC,OAAO,CAAC,OAAO,CAAuB;IACtC,OAAO,CAAC,SAAS,CAA0C;IAC3D,OAAO,CAAC,WAAW,CAAS;gBAEhB,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,SAAS;IAKhD,gEAAgE;IAChE,IAAI,IAAI,IAAI,MAAM,CAKjB;IAED,wEAAwE;IACxE,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED;;;OAGG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAuBrB,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;IAS3C,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAS9B;;;OAGG;IACH,OAAO,CAAC,YAAY;CAUrB;AAID;;;;;;;;;GASG;AACH,qBAAa,qBAAsB,YAAW,iBAAiB;IAC7D,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAyB;IAC/C,OAAO,CAAC,YAAY,CAA8B;gBAEtC,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,SAAS;IAIhD,IAAI,SAAS,IAAI,MAAM,CAAiC;IAExD,IAAI,IAAI,IAAI,MAAM,CAA4B;IAExC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAOrB,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;IAM3C,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAM/B;AAID;;;GAGG;AACH,eAAO,MAAM,uBAAuB,8BAA8B,CAAC"}
@@ -0,0 +1,208 @@
1
+ /**
2
+ * @module indexer/embedder
3
+ *
4
+ * Provides an `EmbeddingProvider` abstraction for generating dense vector
5
+ * embeddings from text. The primary implementation (`TransformersJsProvider`)
6
+ * uses the `@huggingface/transformers` library to run ONNX models natively
7
+ * in Node.js — no Python or external processes required.
8
+ *
9
+ * The model's embedding dimensionality is auto-detected at startup by
10
+ * embedding a probe sentence and inspecting the output shape.
11
+ */
12
+ import { createHash } from 'node:crypto';
13
+ export function buildStructuralEmbeddingText(input) {
14
+ const parts = [
15
+ input.signature?.trim() ?? '',
16
+ input.resolvedTypeSignature?.trim() ?? '',
17
+ input.resolvedReturnType?.trim() ?? '',
18
+ input.name.trim(),
19
+ ].filter((part) => part.length > 0);
20
+ const uniqueParts = [...new Set(parts)];
21
+ return uniqueParts.join('\n');
22
+ }
23
+ /** SHA-256 hex hash of an embedding input text (used for skip-unchanged logic). */
24
+ export function hashEmbeddingText(text) {
25
+ return createHash('sha256').update(text).digest('hex');
26
+ }
27
+ // ─── Token-aware batching ─────────────────────────────────────────────────────
28
+ /**
29
+ * Approximate token count for a text string.
30
+ * Uses the ~4 chars/token heuristic (reasonable for code/English).
31
+ */
32
+ function estimateTokens(text) {
33
+ return Math.ceil(text.length / 4);
34
+ }
35
+ /**
36
+ * Maximum total tokens per embedding batch. Larger batches amortise
37
+ * call overhead but Transformers.js pads every item to the longest in the
38
+ * batch, so one very long text inflates memory for the whole batch.
39
+ *
40
+ * 32 768 tokens ≈ 128 KB of text — keeps peak memory reasonable while
41
+ * avoiding pathological padding waste.
42
+ */
43
+ const MAX_BATCH_TOKENS = 32_768;
44
+ /** Absolute cap on items per batch (avoids degenerate cases with many tiny texts). */
45
+ const MAX_BATCH_ITEMS = 512;
46
+ /**
47
+ * Split `items` into token-budget-aware batches.
48
+ *
49
+ * Each batch stays within `MAX_BATCH_TOKENS` total estimated tokens and
50
+ * `MAX_BATCH_ITEMS` items. An individual item that exceeds the token
51
+ * budget gets its own single-item batch.
52
+ */
53
+ export function tokenAwareBatch(items, getText) {
54
+ const batches = [];
55
+ let current = [];
56
+ let currentTokens = 0;
57
+ for (const item of items) {
58
+ const tokens = estimateTokens(getText(item));
59
+ if (current.length > 0 && (currentTokens + tokens > MAX_BATCH_TOKENS || current.length >= MAX_BATCH_ITEMS)) {
60
+ batches.push(current);
61
+ current = [];
62
+ currentTokens = 0;
63
+ }
64
+ current.push(item);
65
+ currentTokens += tokens;
66
+ }
67
+ if (current.length > 0)
68
+ batches.push(current);
69
+ return batches;
70
+ }
71
+ /**
72
+ * Generates embeddings using `@huggingface/transformers` (Transformers.js).
73
+ * Runs ONNX models natively in Node — zero Python dependency.
74
+ *
75
+ * Auto-detects the best available ONNX execution provider:
76
+ * - `webgpu` when available (Linux/Windows with GPU)
77
+ * - `coreml` on Apple Silicon (macOS arm64)
78
+ * - `cpu` everywhere else (always available)
79
+ *
80
+ * Override via `LORE_EMBED_DEVICE` env var (e.g. `cpu`, `coreml`, `webgpu`).
81
+ * Override quantization via `LORE_EMBED_DTYPE` env var (e.g. `q8`, `q4`, `fp16`).
82
+ *
83
+ * Call `init()` first to download/load the model and detect its embedding
84
+ * dimensionality. The model is kept in memory for the provider's lifetime.
85
+ */
86
+ export class TransformersJsProvider {
87
+ modelName;
88
+ dtype;
89
+ _dims = null;
90
+ _device = null;
91
+ _pipeline = null;
92
+ initialized = false;
93
+ constructor(modelName, dtype) {
94
+ this.modelName = modelName;
95
+ this.dtype = dtype ?? process.env['LORE_EMBED_DTYPE'] ?? 'fp32';
96
+ }
97
+ /** Embedding dimensionality — available only after `init()`. */
98
+ get dims() {
99
+ if (this._dims === null) {
100
+ throw new Error('EmbeddingProvider not initialised — call init() first');
101
+ }
102
+ return this._dims;
103
+ }
104
+ /** ONNX execution provider selected during init (cpu/coreml/webgpu). */
105
+ get device() {
106
+ return this._device ?? 'unknown';
107
+ }
108
+ /**
109
+ * Load the model via Transformers.js and detect embedding dimensionality
110
+ * by running a single probe sentence.
111
+ */
112
+ async init() {
113
+ if (this.initialized)
114
+ return;
115
+ const device = this.detectDevice();
116
+ this._device = device;
117
+ const { pipeline } = await import('@huggingface/transformers');
118
+ this._pipeline = await pipeline('feature-extraction', this.modelName, {
119
+ device: device,
120
+ ...(this.dtype !== 'fp32' && { dtype: this.dtype }),
121
+ });
122
+ // Probe the model to detect dimensionality.
123
+ const probe = await this._pipeline('dimensionality probe', { pooling: 'mean', normalize: true });
124
+ const probeList = probe.tolist();
125
+ this._dims = probeList[0].length;
126
+ this.initialized = true;
127
+ }
128
+ async embed(texts) {
129
+ if (texts.length === 0)
130
+ return [];
131
+ if (!this.initialized || !this._pipeline) {
132
+ throw new Error('EmbeddingProvider not initialised — call init() first');
133
+ }
134
+ const output = await this._pipeline(texts, { pooling: 'mean', normalize: true });
135
+ return output.tolist();
136
+ }
137
+ async dispose() {
138
+ if (this._pipeline) {
139
+ try {
140
+ await this._pipeline.dispose?.();
141
+ }
142
+ catch { /* best-effort cleanup */ }
143
+ this._pipeline = null;
144
+ }
145
+ }
146
+ /**
147
+ * Detect the best available ONNX execution provider.
148
+ * Respects `LORE_EMBED_DEVICE` env var for explicit override.
149
+ */
150
+ detectDevice() {
151
+ const envDevice = process.env['LORE_EMBED_DEVICE'];
152
+ if (envDevice)
153
+ return envDevice;
154
+ // CoreML is available on Apple Silicon via onnxruntime-node
155
+ if (process.platform === 'darwin' && process.arch === 'arm64') {
156
+ return 'coreml';
157
+ }
158
+ return 'cpu';
159
+ }
160
+ }
161
+ // ─── Lazy embedding provider ──────────────────────────────────────────────────
162
+ /**
163
+ * Wraps a `TransformersJsProvider` with deferred initialisation.
164
+ *
165
+ * The model is only downloaded and loaded on the first call to `embed()` or
166
+ * an explicit `init()`. This allows `lore index` to complete faster when
167
+ * embeddings are configured but the user primarily uses structural search.
168
+ *
169
+ * The MCP server can pass a `LazyEmbeddingProvider` so semantic search
170
+ * triggers model loading on-demand rather than at startup.
171
+ */
172
+ export class LazyEmbeddingProvider {
173
+ inner;
174
+ _initPromise = null;
175
+ constructor(modelName, dtype) {
176
+ this.inner = new TransformersJsProvider(modelName, dtype);
177
+ }
178
+ get modelName() { return this.inner.modelName; }
179
+ get dims() { return this.inner.dims; }
180
+ async init() {
181
+ if (!this._initPromise) {
182
+ this._initPromise = this.inner.init();
183
+ }
184
+ return this._initPromise;
185
+ }
186
+ async embed(texts) {
187
+ if (texts.length === 0)
188
+ return [];
189
+ await this.init();
190
+ return this.inner.embed(texts);
191
+ }
192
+ async dispose() {
193
+ if (this._initPromise) {
194
+ try {
195
+ await this._initPromise;
196
+ }
197
+ catch { /* init may have failed */ }
198
+ }
199
+ return this.inner.dispose();
200
+ }
201
+ }
202
+ // ─── Default model ────────────────────────────────────────────────────────────
203
+ /**
204
+ * Default embedding model — `Qwen/Qwen3-Embedding-0.6B` is a compact,
205
+ * 1024-dim model with strong multilingual and code understanding.
206
+ */
207
+ export const DEFAULT_EMBEDDING_MODEL = 'Qwen/Qwen3-Embedding-0.6B';
208
+ //# sourceMappingURL=embedder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"embedder.js","sourceRoot":"","sources":["../../src/embeddings/embedder.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@
4
4
  * Ingests git commit history into the `commits` and `commit_files` tables
5
5
  * using simple-git to read commit metadata and per-file diff stats.
6
6
  */
7
- import { type Database } from './db.js';
7
+ import { type Database } from '../db/schema.js';
8
8
  export interface GitHistoryOptions {
9
9
  depth?: number;
10
10
  all?: boolean;
@@ -20,4 +20,4 @@ export interface GitHistoryOptions {
20
20
  * re-running it on the same repository will not produce duplicates.
21
21
  */
22
22
  export declare function ingestGitHistory(db: Database.Database, repoRoot: string, options?: GitHistoryOptions): Promise<void>;
23
- //# sourceMappingURL=git-history.d.ts.map
23
+ //# sourceMappingURL=history.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"history.d.ts","sourceRoot":"","sources":["../../src/git/history.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAA4B,KAAK,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE1E,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAKD;;;;;;;;;GASG;AACH,wBAAsB,gBAAgB,CACpC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC,IAAI,CAAC,CAkJf"}
@@ -5,7 +5,7 @@
5
5
  * using simple-git to read commit metadata and per-file diff stats.
6
6
  */
7
7
  import { simpleGit } from 'simple-git';
8
- import { getLoreMeta, setLoreMeta } from './db.js';
8
+ import { getLoreMeta, setLoreMeta } from '../db/schema.js';
9
9
  const DEFAULT_ALL = true;
10
10
  const GIT_HISTORY_WATERMARK_KEY = 'git_history_last_ingested_sha';
11
11
  /**
@@ -137,4 +137,4 @@ export async function ingestGitHistory(db, repoRoot, options) {
137
137
  setLoreMeta(db, GIT_HISTORY_WATERMARK_KEY, latestShaInRun);
138
138
  }
139
139
  }
140
- //# sourceMappingURL=git-history.js.map
140
+ //# sourceMappingURL=history.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"history.js","sourceRoot":"","sources":["../../src/git/history.ts"],"names":[],"mappings":"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"}
@@ -9,6 +9,7 @@ export interface InstallGitHooksOptions {
9
9
  dbPath: string;
10
10
  includeHistory?: boolean;
11
11
  lspEnabled?: boolean;
12
+ scipEnabled?: boolean;
12
13
  }
13
14
  /**
14
15
  * Install Lore-refresh git hooks in `.git/hooks` for common lifecycle events.
@@ -17,4 +18,4 @@ export interface InstallGitHooksOptions {
17
18
  export declare function installGitHooks(options: InstallGitHooksOptions): {
18
19
  installed: string[];
19
20
  };
20
- //# sourceMappingURL=git-hooks.d.ts.map
21
+ //# sourceMappingURL=hooks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/git/hooks.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAoCD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,sBAAsB,GAAG;IAAE,SAAS,EAAE,MAAM,EAAE,CAAA;CAAE,CAkDxF"}
@@ -10,7 +10,7 @@ const HOOK_NAMES = ['post-commit', 'post-merge', 'post-checkout', 'post-rewrite'
10
10
  function shellEscapeSingle(value) {
11
11
  return `'${value.replace(/'/g, `'"'"'`)}'`;
12
12
  }
13
- function makeHookScript(rootDir, dbPath, includeHistory, lspEnabled) {
13
+ function makeHookScript(rootDir, dbPath, includeHistory, lspEnabled, scipEnabled) {
14
14
  const cmd = [
15
15
  'npx',
16
16
  '@jafreck/lore',
@@ -20,7 +20,8 @@ function makeHookScript(rootDir, dbPath, includeHistory, lspEnabled) {
20
20
  '--db',
21
21
  shellEscapeSingle(dbPath),
22
22
  ...(includeHistory ? ['--history'] : []),
23
- ...(lspEnabled === true ? ['--lsp'] : lspEnabled === false ? ['--no-lsp'] : []),
23
+ ...(lspEnabled === true ? ['--lsp'] : []),
24
+ ...(scipEnabled === false ? ['--no-scip'] : []),
24
25
  ].join(' ');
25
26
  return [
26
27
  '#!/usr/bin/env sh',
@@ -42,7 +43,7 @@ export function installGitHooks(options) {
42
43
  fs.mkdirSync(hookDir, { recursive: true });
43
44
  const loreBlock = [
44
45
  '# --- lore auto-refresh (start) ---',
45
- makeHookScript(options.rootDir, options.dbPath, options.includeHistory ?? false, options.lspEnabled).trimEnd(),
46
+ makeHookScript(options.rootDir, options.dbPath, options.includeHistory ?? false, options.lspEnabled, options.scipEnabled).trimEnd(),
46
47
  '# --- lore auto-refresh (end) ---',
47
48
  '',
48
49
  ].join('\n');
@@ -72,4 +73,4 @@ export function installGitHooks(options) {
72
73
  }
73
74
  return { installed };
74
75
  }
75
- //# sourceMappingURL=git-hooks.js.map
76
+ //# sourceMappingURL=hooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../src/git/hooks.ts"],"names":[],"mappings":"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"}