@stupidloud/codegraph 0.7.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 (340) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +482 -0
  3. package/dist/bin/codegraph.d.ts +21 -0
  4. package/dist/bin/codegraph.d.ts.map +1 -0
  5. package/dist/bin/codegraph.js +1296 -0
  6. package/dist/bin/codegraph.js.map +1 -0
  7. package/dist/bin/node-version-check.d.ts +17 -0
  8. package/dist/bin/node-version-check.d.ts.map +1 -0
  9. package/dist/bin/node-version-check.js +39 -0
  10. package/dist/bin/node-version-check.js.map +1 -0
  11. package/dist/bin/uninstall.d.ts +14 -0
  12. package/dist/bin/uninstall.d.ts.map +1 -0
  13. package/dist/bin/uninstall.js +148 -0
  14. package/dist/bin/uninstall.js.map +1 -0
  15. package/dist/config.d.ts +51 -0
  16. package/dist/config.d.ts.map +1 -0
  17. package/dist/config.js +342 -0
  18. package/dist/config.js.map +1 -0
  19. package/dist/context/formatter.d.ts +30 -0
  20. package/dist/context/formatter.d.ts.map +1 -0
  21. package/dist/context/formatter.js +244 -0
  22. package/dist/context/formatter.js.map +1 -0
  23. package/dist/context/index.d.ts +99 -0
  24. package/dist/context/index.d.ts.map +1 -0
  25. package/dist/context/index.js +1075 -0
  26. package/dist/context/index.js.map +1 -0
  27. package/dist/db/index.d.ts +72 -0
  28. package/dist/db/index.d.ts.map +1 -0
  29. package/dist/db/index.js +200 -0
  30. package/dist/db/index.js.map +1 -0
  31. package/dist/db/migrations.d.ts +44 -0
  32. package/dist/db/migrations.d.ts.map +1 -0
  33. package/dist/db/migrations.js +160 -0
  34. package/dist/db/migrations.js.map +1 -0
  35. package/dist/db/queries.d.ts +253 -0
  36. package/dist/db/queries.d.ts.map +1 -0
  37. package/dist/db/queries.js +1202 -0
  38. package/dist/db/queries.js.map +1 -0
  39. package/dist/db/schema.sql +169 -0
  40. package/dist/db/sqlite-adapter.d.ts +52 -0
  41. package/dist/db/sqlite-adapter.d.ts.map +1 -0
  42. package/dist/db/sqlite-adapter.js +237 -0
  43. package/dist/db/sqlite-adapter.js.map +1 -0
  44. package/dist/directory.d.ts +57 -0
  45. package/dist/directory.d.ts.map +1 -0
  46. package/dist/directory.js +264 -0
  47. package/dist/directory.js.map +1 -0
  48. package/dist/errors.d.ts +136 -0
  49. package/dist/errors.d.ts.map +1 -0
  50. package/dist/errors.js +219 -0
  51. package/dist/errors.js.map +1 -0
  52. package/dist/extraction/dfm-extractor.d.ts +31 -0
  53. package/dist/extraction/dfm-extractor.d.ts.map +1 -0
  54. package/dist/extraction/dfm-extractor.js +151 -0
  55. package/dist/extraction/dfm-extractor.js.map +1 -0
  56. package/dist/extraction/grammars.d.ts +78 -0
  57. package/dist/extraction/grammars.d.ts.map +1 -0
  58. package/dist/extraction/grammars.js +322 -0
  59. package/dist/extraction/grammars.js.map +1 -0
  60. package/dist/extraction/index.d.ts +130 -0
  61. package/dist/extraction/index.d.ts.map +1 -0
  62. package/dist/extraction/index.js +1279 -0
  63. package/dist/extraction/index.js.map +1 -0
  64. package/dist/extraction/languages/c-cpp.d.ts +4 -0
  65. package/dist/extraction/languages/c-cpp.d.ts.map +1 -0
  66. package/dist/extraction/languages/c-cpp.js +126 -0
  67. package/dist/extraction/languages/c-cpp.js.map +1 -0
  68. package/dist/extraction/languages/csharp.d.ts +3 -0
  69. package/dist/extraction/languages/csharp.d.ts.map +1 -0
  70. package/dist/extraction/languages/csharp.js +72 -0
  71. package/dist/extraction/languages/csharp.js.map +1 -0
  72. package/dist/extraction/languages/dart.d.ts +3 -0
  73. package/dist/extraction/languages/dart.d.ts.map +1 -0
  74. package/dist/extraction/languages/dart.js +192 -0
  75. package/dist/extraction/languages/dart.js.map +1 -0
  76. package/dist/extraction/languages/go.d.ts +3 -0
  77. package/dist/extraction/languages/go.d.ts.map +1 -0
  78. package/dist/extraction/languages/go.js +58 -0
  79. package/dist/extraction/languages/go.js.map +1 -0
  80. package/dist/extraction/languages/index.d.ts +10 -0
  81. package/dist/extraction/languages/index.d.ts.map +1 -0
  82. package/dist/extraction/languages/index.js +45 -0
  83. package/dist/extraction/languages/index.js.map +1 -0
  84. package/dist/extraction/languages/java.d.ts +3 -0
  85. package/dist/extraction/languages/java.d.ts.map +1 -0
  86. package/dist/extraction/languages/java.js +64 -0
  87. package/dist/extraction/languages/java.js.map +1 -0
  88. package/dist/extraction/languages/javascript.d.ts +3 -0
  89. package/dist/extraction/languages/javascript.d.ts.map +1 -0
  90. package/dist/extraction/languages/javascript.js +90 -0
  91. package/dist/extraction/languages/javascript.js.map +1 -0
  92. package/dist/extraction/languages/kotlin.d.ts +3 -0
  93. package/dist/extraction/languages/kotlin.d.ts.map +1 -0
  94. package/dist/extraction/languages/kotlin.js +253 -0
  95. package/dist/extraction/languages/kotlin.js.map +1 -0
  96. package/dist/extraction/languages/pascal.d.ts +3 -0
  97. package/dist/extraction/languages/pascal.d.ts.map +1 -0
  98. package/dist/extraction/languages/pascal.js +66 -0
  99. package/dist/extraction/languages/pascal.js.map +1 -0
  100. package/dist/extraction/languages/php.d.ts +3 -0
  101. package/dist/extraction/languages/php.d.ts.map +1 -0
  102. package/dist/extraction/languages/php.js +107 -0
  103. package/dist/extraction/languages/php.js.map +1 -0
  104. package/dist/extraction/languages/python.d.ts +3 -0
  105. package/dist/extraction/languages/python.d.ts.map +1 -0
  106. package/dist/extraction/languages/python.js +56 -0
  107. package/dist/extraction/languages/python.js.map +1 -0
  108. package/dist/extraction/languages/ruby.d.ts +3 -0
  109. package/dist/extraction/languages/ruby.d.ts.map +1 -0
  110. package/dist/extraction/languages/ruby.js +114 -0
  111. package/dist/extraction/languages/ruby.js.map +1 -0
  112. package/dist/extraction/languages/rust.d.ts +3 -0
  113. package/dist/extraction/languages/rust.d.ts.map +1 -0
  114. package/dist/extraction/languages/rust.js +109 -0
  115. package/dist/extraction/languages/rust.js.map +1 -0
  116. package/dist/extraction/languages/scala.d.ts +3 -0
  117. package/dist/extraction/languages/scala.d.ts.map +1 -0
  118. package/dist/extraction/languages/scala.js +139 -0
  119. package/dist/extraction/languages/scala.js.map +1 -0
  120. package/dist/extraction/languages/swift.d.ts +3 -0
  121. package/dist/extraction/languages/swift.d.ts.map +1 -0
  122. package/dist/extraction/languages/swift.js +91 -0
  123. package/dist/extraction/languages/swift.js.map +1 -0
  124. package/dist/extraction/languages/typescript.d.ts +3 -0
  125. package/dist/extraction/languages/typescript.d.ts.map +1 -0
  126. package/dist/extraction/languages/typescript.js +129 -0
  127. package/dist/extraction/languages/typescript.js.map +1 -0
  128. package/dist/extraction/liquid-extractor.d.ts +52 -0
  129. package/dist/extraction/liquid-extractor.d.ts.map +1 -0
  130. package/dist/extraction/liquid-extractor.js +313 -0
  131. package/dist/extraction/liquid-extractor.js.map +1 -0
  132. package/dist/extraction/parse-worker.d.ts +8 -0
  133. package/dist/extraction/parse-worker.d.ts.map +1 -0
  134. package/dist/extraction/parse-worker.js +94 -0
  135. package/dist/extraction/parse-worker.js.map +1 -0
  136. package/dist/extraction/svelte-extractor.d.ts +56 -0
  137. package/dist/extraction/svelte-extractor.d.ts.map +1 -0
  138. package/dist/extraction/svelte-extractor.js +272 -0
  139. package/dist/extraction/svelte-extractor.js.map +1 -0
  140. package/dist/extraction/tree-sitter-helpers.d.ts +28 -0
  141. package/dist/extraction/tree-sitter-helpers.d.ts.map +1 -0
  142. package/dist/extraction/tree-sitter-helpers.js +103 -0
  143. package/dist/extraction/tree-sitter-helpers.js.map +1 -0
  144. package/dist/extraction/tree-sitter-types.d.ts +179 -0
  145. package/dist/extraction/tree-sitter-types.d.ts.map +1 -0
  146. package/dist/extraction/tree-sitter-types.js +10 -0
  147. package/dist/extraction/tree-sitter-types.js.map +1 -0
  148. package/dist/extraction/tree-sitter.d.ts +233 -0
  149. package/dist/extraction/tree-sitter.d.ts.map +1 -0
  150. package/dist/extraction/tree-sitter.js +2393 -0
  151. package/dist/extraction/tree-sitter.js.map +1 -0
  152. package/dist/extraction/vue-extractor.d.ts +36 -0
  153. package/dist/extraction/vue-extractor.d.ts.map +1 -0
  154. package/dist/extraction/vue-extractor.js +163 -0
  155. package/dist/extraction/vue-extractor.js.map +1 -0
  156. package/dist/extraction/wasm/tree-sitter-pascal.wasm +0 -0
  157. package/dist/extraction/wasm/tree-sitter-scala.wasm +0 -0
  158. package/dist/graph/index.d.ts +8 -0
  159. package/dist/graph/index.d.ts.map +1 -0
  160. package/dist/graph/index.js +13 -0
  161. package/dist/graph/index.js.map +1 -0
  162. package/dist/graph/queries.d.ts +106 -0
  163. package/dist/graph/queries.d.ts.map +1 -0
  164. package/dist/graph/queries.js +366 -0
  165. package/dist/graph/queries.js.map +1 -0
  166. package/dist/graph/traversal.d.ts +127 -0
  167. package/dist/graph/traversal.d.ts.map +1 -0
  168. package/dist/graph/traversal.js +493 -0
  169. package/dist/graph/traversal.js.map +1 -0
  170. package/dist/index.d.ts +504 -0
  171. package/dist/index.d.ts.map +1 -0
  172. package/dist/index.js +982 -0
  173. package/dist/index.js.map +1 -0
  174. package/dist/installer/claude-md-template.d.ts +10 -0
  175. package/dist/installer/claude-md-template.d.ts.map +1 -0
  176. package/dist/installer/claude-md-template.js +46 -0
  177. package/dist/installer/claude-md-template.js.map +1 -0
  178. package/dist/installer/config-writer.d.ts +36 -0
  179. package/dist/installer/config-writer.d.ts.map +1 -0
  180. package/dist/installer/config-writer.js +304 -0
  181. package/dist/installer/config-writer.js.map +1 -0
  182. package/dist/installer/index.d.ts +12 -0
  183. package/dist/installer/index.d.ts.map +1 -0
  184. package/dist/installer/index.js +201 -0
  185. package/dist/installer/index.js.map +1 -0
  186. package/dist/mcp/index.d.ts +82 -0
  187. package/dist/mcp/index.d.ts.map +1 -0
  188. package/dist/mcp/index.js +330 -0
  189. package/dist/mcp/index.js.map +1 -0
  190. package/dist/mcp/server-instructions.d.ts +19 -0
  191. package/dist/mcp/server-instructions.d.ts.map +1 -0
  192. package/dist/mcp/server-instructions.js +59 -0
  193. package/dist/mcp/server-instructions.js.map +1 -0
  194. package/dist/mcp/tools.d.ts +187 -0
  195. package/dist/mcp/tools.d.ts.map +1 -0
  196. package/dist/mcp/tools.js +1250 -0
  197. package/dist/mcp/tools.js.map +1 -0
  198. package/dist/mcp/transport.d.ts +89 -0
  199. package/dist/mcp/transport.d.ts.map +1 -0
  200. package/dist/mcp/transport.js +170 -0
  201. package/dist/mcp/transport.js.map +1 -0
  202. package/dist/resolution/frameworks/cargo-workspace.d.ts +18 -0
  203. package/dist/resolution/frameworks/cargo-workspace.d.ts.map +1 -0
  204. package/dist/resolution/frameworks/cargo-workspace.js +225 -0
  205. package/dist/resolution/frameworks/cargo-workspace.js.map +1 -0
  206. package/dist/resolution/frameworks/csharp.d.ts +8 -0
  207. package/dist/resolution/frameworks/csharp.d.ts.map +1 -0
  208. package/dist/resolution/frameworks/csharp.js +213 -0
  209. package/dist/resolution/frameworks/csharp.js.map +1 -0
  210. package/dist/resolution/frameworks/express.d.ts +8 -0
  211. package/dist/resolution/frameworks/express.d.ts.map +1 -0
  212. package/dist/resolution/frameworks/express.js +225 -0
  213. package/dist/resolution/frameworks/express.js.map +1 -0
  214. package/dist/resolution/frameworks/go.d.ts +8 -0
  215. package/dist/resolution/frameworks/go.d.ts.map +1 -0
  216. package/dist/resolution/frameworks/go.js +158 -0
  217. package/dist/resolution/frameworks/go.js.map +1 -0
  218. package/dist/resolution/frameworks/index.d.ts +41 -0
  219. package/dist/resolution/frameworks/index.d.ts.map +1 -0
  220. package/dist/resolution/frameworks/index.js +129 -0
  221. package/dist/resolution/frameworks/index.js.map +1 -0
  222. package/dist/resolution/frameworks/java.d.ts +8 -0
  223. package/dist/resolution/frameworks/java.d.ts.map +1 -0
  224. package/dist/resolution/frameworks/java.js +177 -0
  225. package/dist/resolution/frameworks/java.js.map +1 -0
  226. package/dist/resolution/frameworks/laravel.d.ts +13 -0
  227. package/dist/resolution/frameworks/laravel.d.ts.map +1 -0
  228. package/dist/resolution/frameworks/laravel.js +248 -0
  229. package/dist/resolution/frameworks/laravel.js.map +1 -0
  230. package/dist/resolution/frameworks/python.d.ts +10 -0
  231. package/dist/resolution/frameworks/python.d.ts.map +1 -0
  232. package/dist/resolution/frameworks/python.js +278 -0
  233. package/dist/resolution/frameworks/python.js.map +1 -0
  234. package/dist/resolution/frameworks/react.d.ts +8 -0
  235. package/dist/resolution/frameworks/react.d.ts.map +1 -0
  236. package/dist/resolution/frameworks/react.js +272 -0
  237. package/dist/resolution/frameworks/react.js.map +1 -0
  238. package/dist/resolution/frameworks/ruby.d.ts +8 -0
  239. package/dist/resolution/frameworks/ruby.d.ts.map +1 -0
  240. package/dist/resolution/frameworks/ruby.js +198 -0
  241. package/dist/resolution/frameworks/ruby.js.map +1 -0
  242. package/dist/resolution/frameworks/rust.d.ts +8 -0
  243. package/dist/resolution/frameworks/rust.d.ts.map +1 -0
  244. package/dist/resolution/frameworks/rust.js +207 -0
  245. package/dist/resolution/frameworks/rust.js.map +1 -0
  246. package/dist/resolution/frameworks/svelte.d.ts +9 -0
  247. package/dist/resolution/frameworks/svelte.d.ts.map +1 -0
  248. package/dist/resolution/frameworks/svelte.js +249 -0
  249. package/dist/resolution/frameworks/svelte.js.map +1 -0
  250. package/dist/resolution/frameworks/swift.d.ts +10 -0
  251. package/dist/resolution/frameworks/swift.d.ts.map +1 -0
  252. package/dist/resolution/frameworks/swift.js +376 -0
  253. package/dist/resolution/frameworks/swift.js.map +1 -0
  254. package/dist/resolution/frameworks/vue.d.ts +9 -0
  255. package/dist/resolution/frameworks/vue.d.ts.map +1 -0
  256. package/dist/resolution/frameworks/vue.js +306 -0
  257. package/dist/resolution/frameworks/vue.js.map +1 -0
  258. package/dist/resolution/import-resolver.d.ts +40 -0
  259. package/dist/resolution/import-resolver.d.ts.map +1 -0
  260. package/dist/resolution/import-resolver.js +663 -0
  261. package/dist/resolution/import-resolver.js.map +1 -0
  262. package/dist/resolution/index.d.ts +106 -0
  263. package/dist/resolution/index.d.ts.map +1 -0
  264. package/dist/resolution/index.js +709 -0
  265. package/dist/resolution/index.js.map +1 -0
  266. package/dist/resolution/name-matcher.d.ts +32 -0
  267. package/dist/resolution/name-matcher.d.ts.map +1 -0
  268. package/dist/resolution/name-matcher.js +384 -0
  269. package/dist/resolution/name-matcher.js.map +1 -0
  270. package/dist/resolution/path-aliases.d.ts +68 -0
  271. package/dist/resolution/path-aliases.d.ts.map +1 -0
  272. package/dist/resolution/path-aliases.js +238 -0
  273. package/dist/resolution/path-aliases.js.map +1 -0
  274. package/dist/resolution/strip-comments.d.ts +27 -0
  275. package/dist/resolution/strip-comments.d.ts.map +1 -0
  276. package/dist/resolution/strip-comments.js +441 -0
  277. package/dist/resolution/strip-comments.js.map +1 -0
  278. package/dist/resolution/types.d.ts +172 -0
  279. package/dist/resolution/types.d.ts.map +1 -0
  280. package/dist/resolution/types.js +8 -0
  281. package/dist/resolution/types.js.map +1 -0
  282. package/dist/search/query-parser.d.ts +57 -0
  283. package/dist/search/query-parser.d.ts.map +1 -0
  284. package/dist/search/query-parser.js +177 -0
  285. package/dist/search/query-parser.js.map +1 -0
  286. package/dist/search/query-utils.d.ts +53 -0
  287. package/dist/search/query-utils.d.ts.map +1 -0
  288. package/dist/search/query-utils.js +347 -0
  289. package/dist/search/query-utils.js.map +1 -0
  290. package/dist/sync/index.d.ts +13 -0
  291. package/dist/sync/index.d.ts.map +1 -0
  292. package/dist/sync/index.js +17 -0
  293. package/dist/sync/index.js.map +1 -0
  294. package/dist/sync/watcher.d.ts +81 -0
  295. package/dist/sync/watcher.d.ts.map +1 -0
  296. package/dist/sync/watcher.js +184 -0
  297. package/dist/sync/watcher.js.map +1 -0
  298. package/dist/types.d.ts +438 -0
  299. package/dist/types.d.ts.map +1 -0
  300. package/dist/types.js +263 -0
  301. package/dist/types.js.map +1 -0
  302. package/dist/ui/shimmer-progress.d.ts +11 -0
  303. package/dist/ui/shimmer-progress.d.ts.map +1 -0
  304. package/dist/ui/shimmer-progress.js +90 -0
  305. package/dist/ui/shimmer-progress.js.map +1 -0
  306. package/dist/ui/shimmer-worker.d.ts +2 -0
  307. package/dist/ui/shimmer-worker.d.ts.map +1 -0
  308. package/dist/ui/shimmer-worker.js +112 -0
  309. package/dist/ui/shimmer-worker.js.map +1 -0
  310. package/dist/ui/types.d.ts +17 -0
  311. package/dist/ui/types.d.ts.map +1 -0
  312. package/dist/ui/types.js +3 -0
  313. package/dist/ui/types.js.map +1 -0
  314. package/dist/utils.d.ts +205 -0
  315. package/dist/utils.d.ts.map +1 -0
  316. package/dist/utils.js +549 -0
  317. package/dist/utils.js.map +1 -0
  318. package/dist/vectors/embedder.d.ts +121 -0
  319. package/dist/vectors/embedder.d.ts.map +1 -0
  320. package/dist/vectors/embedder.js +237 -0
  321. package/dist/vectors/embedder.js.map +1 -0
  322. package/dist/vectors/index.d.ts +9 -0
  323. package/dist/vectors/index.d.ts.map +1 -0
  324. package/dist/vectors/index.js +20 -0
  325. package/dist/vectors/index.js.map +1 -0
  326. package/dist/vectors/manager.d.ts +124 -0
  327. package/dist/vectors/manager.d.ts.map +1 -0
  328. package/dist/vectors/manager.js +322 -0
  329. package/dist/vectors/manager.js.map +1 -0
  330. package/dist/vectors/search.d.ts +143 -0
  331. package/dist/vectors/search.d.ts.map +1 -0
  332. package/dist/vectors/search.js +460 -0
  333. package/dist/vectors/search.js.map +1 -0
  334. package/dist/visualizer/public/index.html +1994 -0
  335. package/dist/visualizer/server.d.ts +46 -0
  336. package/dist/visualizer/server.d.ts.map +1 -0
  337. package/dist/visualizer/server.js +491 -0
  338. package/dist/visualizer/server.js.map +1 -0
  339. package/package.json +60 -0
  340. package/scripts/patch-tree-sitter-dart.js +112 -0
@@ -0,0 +1,322 @@
1
+ "use strict";
2
+ /**
3
+ * Vector Manager
4
+ *
5
+ * High-level manager that coordinates embedding generation and vector search.
6
+ */
7
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
8
+ if (k2 === undefined) k2 = k;
9
+ var desc = Object.getOwnPropertyDescriptor(m, k);
10
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
11
+ desc = { enumerable: true, get: function() { return m[k]; } };
12
+ }
13
+ Object.defineProperty(o, k2, desc);
14
+ }) : (function(o, m, k, k2) {
15
+ if (k2 === undefined) k2 = k;
16
+ o[k2] = m[k];
17
+ }));
18
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
19
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
20
+ }) : function(o, v) {
21
+ o["default"] = v;
22
+ });
23
+ var __importStar = (this && this.__importStar) || (function () {
24
+ var ownKeys = function(o) {
25
+ ownKeys = Object.getOwnPropertyNames || function (o) {
26
+ var ar = [];
27
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
28
+ return ar;
29
+ };
30
+ return ownKeys(o);
31
+ };
32
+ return function (mod) {
33
+ if (mod && mod.__esModule) return mod;
34
+ var result = {};
35
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
36
+ __setModuleDefault(result, mod);
37
+ return result;
38
+ };
39
+ })();
40
+ Object.defineProperty(exports, "__esModule", { value: true });
41
+ exports.VectorManager = void 0;
42
+ exports.createVectorManager = createVectorManager;
43
+ const embedder_1 = require("./embedder");
44
+ const search_1 = require("./search");
45
+ const crypto = __importStar(require("crypto"));
46
+ /**
47
+ * Default node kinds to embed
48
+ */
49
+ const DEFAULT_NODE_KINDS = [
50
+ 'function',
51
+ 'method',
52
+ 'class',
53
+ 'interface',
54
+ 'type_alias',
55
+ 'module',
56
+ 'component',
57
+ ];
58
+ /**
59
+ * Vector Manager
60
+ *
61
+ * Provides high-level interface for semantic search:
62
+ * - Generates embeddings for code nodes
63
+ * - Stores embeddings in the database
64
+ * - Performs semantic similarity search
65
+ */
66
+ class VectorManager {
67
+ embedder;
68
+ searchManager;
69
+ queries;
70
+ nodeKinds;
71
+ batchSize;
72
+ initialized = false;
73
+ constructor(db, queries, options = {}) {
74
+ this.embedder = (0, embedder_1.createEmbedder)(options.embedder);
75
+ this.searchManager = (0, search_1.createVectorSearch)(db, this.embedder.getDimension());
76
+ this.queries = queries;
77
+ this.nodeKinds = options.nodeKinds || DEFAULT_NODE_KINDS;
78
+ this.batchSize = options.batchSize || 32;
79
+ }
80
+ /**
81
+ * Initialize the vector manager
82
+ *
83
+ * Validates embedding configuration and initializes vector search.
84
+ */
85
+ async initialize() {
86
+ if (this.initialized) {
87
+ return;
88
+ }
89
+ // Initialize embedder configuration.
90
+ await this.embedder.initialize();
91
+ // Initialize vector search (loads sqlite-vss if available)
92
+ await this.searchManager.initialize();
93
+ this.initialized = true;
94
+ }
95
+ /**
96
+ * Check if the vector manager is initialized
97
+ */
98
+ isInitialized() {
99
+ return this.initialized;
100
+ }
101
+ /**
102
+ * Generate embeddings for all eligible nodes
103
+ *
104
+ * @param onProgress - Optional progress callback
105
+ * @returns Number of nodes embedded
106
+ */
107
+ async embedAllNodes(onProgress) {
108
+ if (!this.initialized) {
109
+ throw new Error('VectorManager not initialized. Call initialize() first.');
110
+ }
111
+ // Get all nodes that should be embedded
112
+ const nodesToEmbed = [];
113
+ for (const kind of this.nodeKinds) {
114
+ const nodes = this.queries.getNodesByKind(kind);
115
+ nodesToEmbed.push(...nodes);
116
+ }
117
+ // Remove vectors for nodes no longer present, then embed nodes whose text,
118
+ // model, or dimension changed.
119
+ this.searchManager.deleteStaleVectors();
120
+ const model = this.embedder.getModelId();
121
+ const dimension = this.embedder.getDimension();
122
+ const newNodes = nodesToEmbed.filter((node) => {
123
+ const text = embedder_1.TextEmbedder.createNodeText(node);
124
+ return !this.searchManager.hasCurrentVector(node.id, model, dimension, this.hashText(text));
125
+ });
126
+ if (newNodes.length === 0) {
127
+ return 0;
128
+ }
129
+ // Process in batches
130
+ let processed = 0;
131
+ for (let i = 0; i < newNodes.length; i += this.batchSize) {
132
+ const batch = newNodes.slice(i, i + this.batchSize);
133
+ // Create text representations
134
+ const texts = batch.map((node) => embedder_1.TextEmbedder.createNodeText(node));
135
+ // Generate embeddings
136
+ const result = await this.embedder.embedBatch(texts, 'document');
137
+ // Store embeddings
138
+ const entries = [];
139
+ for (let idx = 0; idx < batch.length; idx++) {
140
+ const node = batch[idx];
141
+ const embedding = result.embeddings[idx];
142
+ if (node && embedding) {
143
+ entries.push({ nodeId: node.id, embedding, contentHash: this.hashText(texts[idx]) });
144
+ }
145
+ }
146
+ this.searchManager.storeVectorBatch(entries, model);
147
+ processed += batch.length;
148
+ // Report progress
149
+ if (onProgress) {
150
+ onProgress({
151
+ current: processed,
152
+ total: newNodes.length,
153
+ nodeName: batch[batch.length - 1]?.name,
154
+ });
155
+ }
156
+ }
157
+ return processed;
158
+ }
159
+ /**
160
+ * Generate embedding for a single node
161
+ *
162
+ * @param node - Node to embed
163
+ */
164
+ async embedNode(node) {
165
+ if (!this.initialized) {
166
+ throw new Error('VectorManager not initialized. Call initialize() first.');
167
+ }
168
+ const text = embedder_1.TextEmbedder.createNodeText(node);
169
+ const result = await this.embedder.embed(text);
170
+ this.searchManager.storeVector(node.id, result.embedding, result.model, this.hashText(text));
171
+ }
172
+ /**
173
+ * Semantic search for nodes matching a query
174
+ *
175
+ * @param query - Natural language query
176
+ * @param options - Search options
177
+ * @returns Array of search results with similarity scores
178
+ */
179
+ async search(query, options = {}) {
180
+ if (!this.initialized) {
181
+ throw new Error('VectorManager not initialized. Call initialize() first.');
182
+ }
183
+ const { limit = 10, kinds } = options;
184
+ // Generate query embedding
185
+ const queryResult = await this.embedder.embedQuery(query);
186
+ // Search for similar vectors
187
+ const vectorResults = this.searchManager.search(queryResult.embedding, {
188
+ limit: limit * 2, // Get more results to filter
189
+ minScore: 0.3, // Minimum similarity threshold
190
+ });
191
+ // Get nodes and filter by kind if specified
192
+ const results = [];
193
+ for (const vr of vectorResults) {
194
+ const node = this.queries.getNodeById(vr.nodeId);
195
+ if (!node) {
196
+ continue;
197
+ }
198
+ // Filter by node kind if specified
199
+ if (kinds && kinds.length > 0 && !kinds.includes(node.kind)) {
200
+ continue;
201
+ }
202
+ results.push({
203
+ node,
204
+ score: vr.score,
205
+ });
206
+ if (results.length >= limit) {
207
+ break;
208
+ }
209
+ }
210
+ return results;
211
+ }
212
+ /**
213
+ * Find nodes similar to a given node
214
+ *
215
+ * @param nodeId - ID of the node to find similar nodes for
216
+ * @param options - Search options
217
+ * @returns Array of similar nodes with similarity scores
218
+ */
219
+ async findSimilar(nodeId, options = {}) {
220
+ if (!this.initialized) {
221
+ throw new Error('VectorManager not initialized. Call initialize() first.');
222
+ }
223
+ const { limit = 10, kinds } = options;
224
+ // Get the node's embedding
225
+ let embedding = this.searchManager.getVector(nodeId);
226
+ // If no embedding exists, generate one
227
+ if (!embedding) {
228
+ const node = this.queries.getNodeById(nodeId);
229
+ if (!node) {
230
+ throw new Error(`Node not found: ${nodeId}`);
231
+ }
232
+ await this.embedNode(node);
233
+ embedding = this.searchManager.getVector(nodeId);
234
+ if (!embedding) {
235
+ throw new Error(`Failed to generate embedding for node: ${nodeId}`);
236
+ }
237
+ }
238
+ // Search for similar vectors (excluding the source node)
239
+ const vectorResults = this.searchManager.search(embedding, {
240
+ limit: limit + 1, // Get one extra to exclude the source
241
+ minScore: 0.3,
242
+ });
243
+ // Get nodes and filter
244
+ const results = [];
245
+ for (const vr of vectorResults) {
246
+ // Skip the source node
247
+ if (vr.nodeId === nodeId) {
248
+ continue;
249
+ }
250
+ const node = this.queries.getNodeById(vr.nodeId);
251
+ if (!node) {
252
+ continue;
253
+ }
254
+ // Filter by node kind if specified
255
+ if (kinds && kinds.length > 0 && !kinds.includes(node.kind)) {
256
+ continue;
257
+ }
258
+ results.push({
259
+ node,
260
+ score: vr.score,
261
+ });
262
+ if (results.length >= limit) {
263
+ break;
264
+ }
265
+ }
266
+ return results;
267
+ }
268
+ /**
269
+ * Delete embedding for a node
270
+ *
271
+ * @param nodeId - ID of the node
272
+ */
273
+ deleteNodeEmbedding(nodeId) {
274
+ this.searchManager.deleteVector(nodeId);
275
+ }
276
+ /**
277
+ * Get statistics about vector storage
278
+ */
279
+ getStats() {
280
+ return {
281
+ totalVectors: this.searchManager.getVectorCount(),
282
+ vssEnabled: this.searchManager.isVssEnabled(),
283
+ modelId: this.embedder.getModelId(),
284
+ dimension: this.embedder.getDimension(),
285
+ };
286
+ }
287
+ /**
288
+ * Clear all vectors
289
+ */
290
+ clear() {
291
+ this.searchManager.clear();
292
+ }
293
+ /**
294
+ * Delete vectors for nodes that no longer exist.
295
+ */
296
+ deleteStaleVectors() {
297
+ return this.searchManager.deleteStaleVectors();
298
+ }
299
+ /**
300
+ * Rebuild the VSS index
301
+ */
302
+ rebuildIndex() {
303
+ this.searchManager.rebuildVssIndex();
304
+ }
305
+ /**
306
+ * Release resources
307
+ */
308
+ dispose() {
309
+ this.embedder.dispose();
310
+ }
311
+ hashText(text) {
312
+ return crypto.createHash('sha256').update(text).digest('hex');
313
+ }
314
+ }
315
+ exports.VectorManager = VectorManager;
316
+ /**
317
+ * Create a vector manager
318
+ */
319
+ function createVectorManager(db, queries, options) {
320
+ return new VectorManager(db, queries, options);
321
+ }
322
+ //# sourceMappingURL=manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/vectors/manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,143 @@
1
+ /**
2
+ * Vector Search
3
+ *
4
+ * Provides vector similarity search using sqlite-vss extension.
5
+ * Falls back to brute-force cosine similarity if sqlite-vss is not available.
6
+ */
7
+ import { SqliteDatabase } from '../db/sqlite-adapter';
8
+ import { Node } from '../types';
9
+ /**
10
+ * Options for vector search
11
+ */
12
+ export interface VectorSearchOptions {
13
+ /** Maximum number of results to return */
14
+ limit?: number;
15
+ /** Minimum similarity score (0-1) */
16
+ minScore?: number;
17
+ /** Node kinds to filter results */
18
+ nodeKinds?: Node['kind'][];
19
+ }
20
+ /**
21
+ * Vector Search Manager
22
+ *
23
+ * Handles vector storage and similarity search for semantic code search.
24
+ */
25
+ export declare class VectorSearchManager {
26
+ private db;
27
+ private vssEnabled;
28
+ private embeddingDimension;
29
+ constructor(db: SqliteDatabase, dimension?: number);
30
+ /**
31
+ * Initialize vector search
32
+ *
33
+ * Attempts to load sqlite-vss extension. Falls back to brute-force
34
+ * search if the extension is not available.
35
+ */
36
+ initialize(): Promise<void>;
37
+ /**
38
+ * Load the sqlite-vss extension
39
+ */
40
+ private loadVssExtension;
41
+ /**
42
+ * Create the VSS virtual table for vector search
43
+ */
44
+ private createVssTable;
45
+ /**
46
+ * Ensure the basic vectors table exists (for fallback mode)
47
+ */
48
+ private ensureVectorsTable;
49
+ /**
50
+ * Check if VSS extension is enabled
51
+ */
52
+ isVssEnabled(): boolean;
53
+ /**
54
+ * Store a vector embedding for a node
55
+ *
56
+ * @param nodeId - ID of the node
57
+ * @param embedding - Vector embedding
58
+ * @param model - Model used to generate embedding
59
+ */
60
+ storeVector(nodeId: string, embedding: Float32Array, model: string, contentHash?: string): void;
61
+ /**
62
+ * Store vector in VSS virtual table
63
+ */
64
+ private storeInVss;
65
+ /**
66
+ * Store multiple vectors in a batch
67
+ *
68
+ * @param entries - Array of node IDs and embeddings
69
+ * @param model - Model used to generate embeddings
70
+ */
71
+ storeVectorBatch(entries: Array<{
72
+ nodeId: string;
73
+ embedding: Float32Array;
74
+ contentHash?: string;
75
+ }>, model: string): void;
76
+ /**
77
+ * Get vector for a node
78
+ *
79
+ * @param nodeId - ID of the node
80
+ * @returns Embedding or null if not found
81
+ */
82
+ getVector(nodeId: string): Float32Array | null;
83
+ /**
84
+ * Delete vector for a node
85
+ *
86
+ * @param nodeId - ID of the node
87
+ */
88
+ deleteVector(nodeId: string): void;
89
+ /**
90
+ * Search for similar vectors
91
+ *
92
+ * @param queryEmbedding - Query vector to search for
93
+ * @param options - Search options
94
+ * @returns Array of node IDs with similarity scores
95
+ */
96
+ search(queryEmbedding: Float32Array, options?: VectorSearchOptions): Array<{
97
+ nodeId: string;
98
+ score: number;
99
+ }>;
100
+ /**
101
+ * Search using sqlite-vss KNN search
102
+ */
103
+ private searchWithVss;
104
+ /**
105
+ * Brute-force search using cosine similarity
106
+ */
107
+ private searchBruteForce;
108
+ /**
109
+ * Get count of stored vectors
110
+ */
111
+ getVectorCount(): number;
112
+ /**
113
+ * Check if a node has a vector
114
+ */
115
+ hasVector(nodeId: string): boolean;
116
+ /**
117
+ * Check if a node has a vector matching the current embedded text.
118
+ */
119
+ hasCurrentVector(nodeId: string, model: string, dimension: number, contentHash: string): boolean;
120
+ /**
121
+ * Get all node IDs that have vectors
122
+ */
123
+ getIndexedNodeIds(): string[];
124
+ /**
125
+ * Delete vectors whose node no longer exists.
126
+ */
127
+ deleteStaleVectors(): number;
128
+ /**
129
+ * Clear all vectors
130
+ */
131
+ clear(): void;
132
+ /**
133
+ * Rebuild VSS index from vectors table
134
+ *
135
+ * Useful after bulk operations or if VSS index gets out of sync.
136
+ */
137
+ rebuildVssIndex(): void;
138
+ }
139
+ /**
140
+ * Create a vector search manager
141
+ */
142
+ export declare function createVectorSearch(db: SqliteDatabase, dimension?: number): VectorSearchManager;
143
+ //# sourceMappingURL=search.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/vectors/search.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAGhC;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,0CAA0C;IAC1C,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,qCAAqC;IACrC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,mCAAmC;IACnC,SAAS,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;CAC5B;AAED;;;;GAIG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,EAAE,CAAiB;IAC3B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,kBAAkB,CAAS;gBAEvB,EAAE,EAAE,cAAc,EAAE,SAAS,GAAE,MAA4B;IAKvE;;;;;OAKG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAsBjC;;OAEG;YACW,gBAAgB;IAmB9B;;OAEG;IACH,OAAO,CAAC,cAAc;IA8BtB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IA4B1B;;OAEG;IACH,YAAY,IAAI,OAAO;IAIvB;;;;;;OAMG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,GAAE,MAAW,GAAG,IAAI;IAoBnG;;OAEG;IACH,OAAO,CAAC,UAAU;IAwClB;;;;;OAKG;IACH,gBAAgB,CACd,OAAO,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,YAAY,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,EACjF,KAAK,EAAE,MAAM,GACZ,IAAI;IAuBP;;;;;OAKG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI;IAe9C;;;;OAIG;IACH,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAgBlC;;;;;;OAMG;IACH,MAAM,CACJ,cAAc,EAAE,YAAY,EAC5B,OAAO,GAAE,mBAAwB,GAChC,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAU3C;;OAEG;IACH,OAAO,CAAC,aAAa;IA6CrB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IA+BxB;;OAEG;IACH,cAAc,IAAI,MAAM;IAOxB;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAOlC;;OAEG;IACH,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO;IAWhG;;OAEG;IACH,iBAAiB,IAAI,MAAM,EAAE;IAO7B;;OAEG;IACH,kBAAkB,IAAI,MAAM;IAiB5B;;OAEG;IACH,KAAK,IAAI,IAAI;IASb;;;;OAIG;IACH,eAAe,IAAI,IAAI;CAwBxB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,EAAE,EAAE,cAAc,EAClB,SAAS,CAAC,EAAE,MAAM,GACjB,mBAAmB,CAErB"}