@liendev/core 0.19.5

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 (298) hide show
  1. package/README.md +336 -0
  2. package/dist/config/loader.d.ts +12 -0
  3. package/dist/config/loader.d.ts.map +1 -0
  4. package/dist/config/loader.js +46 -0
  5. package/dist/config/loader.js.map +1 -0
  6. package/dist/config/merge.d.ts +20 -0
  7. package/dist/config/merge.d.ts.map +1 -0
  8. package/dist/config/merge.js +71 -0
  9. package/dist/config/merge.js.map +1 -0
  10. package/dist/config/migration-manager.d.ts +46 -0
  11. package/dist/config/migration-manager.d.ts.map +1 -0
  12. package/dist/config/migration-manager.js +119 -0
  13. package/dist/config/migration-manager.js.map +1 -0
  14. package/dist/config/migration.d.ts +20 -0
  15. package/dist/config/migration.d.ts.map +1 -0
  16. package/dist/config/migration.js +155 -0
  17. package/dist/config/migration.js.map +1 -0
  18. package/dist/config/schema.d.ts +101 -0
  19. package/dist/config/schema.d.ts.map +1 -0
  20. package/dist/config/schema.js +58 -0
  21. package/dist/config/schema.js.map +1 -0
  22. package/dist/config/service.d.ts +122 -0
  23. package/dist/config/service.d.ts.map +1 -0
  24. package/dist/config/service.js +477 -0
  25. package/dist/config/service.js.map +1 -0
  26. package/dist/constants.d.ts +20 -0
  27. package/dist/constants.d.ts.map +1 -0
  28. package/dist/constants.js +43 -0
  29. package/dist/constants.js.map +1 -0
  30. package/dist/embeddings/cache.d.ts +45 -0
  31. package/dist/embeddings/cache.d.ts.map +1 -0
  32. package/dist/embeddings/cache.js +109 -0
  33. package/dist/embeddings/cache.js.map +1 -0
  34. package/dist/embeddings/local.d.ts +10 -0
  35. package/dist/embeddings/local.d.ts.map +1 -0
  36. package/dist/embeddings/local.js +63 -0
  37. package/dist/embeddings/local.js.map +1 -0
  38. package/dist/embeddings/types.d.ts +9 -0
  39. package/dist/embeddings/types.d.ts.map +1 -0
  40. package/dist/embeddings/types.js +5 -0
  41. package/dist/embeddings/types.js.map +1 -0
  42. package/dist/errors/codes.d.ts +18 -0
  43. package/dist/errors/codes.d.ts.map +1 -0
  44. package/dist/errors/codes.js +25 -0
  45. package/dist/errors/codes.js.map +1 -0
  46. package/dist/errors/index.d.ts +85 -0
  47. package/dist/errors/index.d.ts.map +1 -0
  48. package/dist/errors/index.js +134 -0
  49. package/dist/errors/index.js.map +1 -0
  50. package/dist/frameworks/detector-service.d.ts +59 -0
  51. package/dist/frameworks/detector-service.d.ts.map +1 -0
  52. package/dist/frameworks/detector-service.js +219 -0
  53. package/dist/frameworks/detector-service.js.map +1 -0
  54. package/dist/frameworks/laravel/config.d.ts +6 -0
  55. package/dist/frameworks/laravel/config.d.ts.map +1 -0
  56. package/dist/frameworks/laravel/config.js +68 -0
  57. package/dist/frameworks/laravel/config.js.map +1 -0
  58. package/dist/frameworks/laravel/detector.d.ts +6 -0
  59. package/dist/frameworks/laravel/detector.d.ts.map +1 -0
  60. package/dist/frameworks/laravel/detector.js +96 -0
  61. package/dist/frameworks/laravel/detector.js.map +1 -0
  62. package/dist/frameworks/nodejs/config.d.ts +6 -0
  63. package/dist/frameworks/nodejs/config.d.ts.map +1 -0
  64. package/dist/frameworks/nodejs/config.js +57 -0
  65. package/dist/frameworks/nodejs/config.js.map +1 -0
  66. package/dist/frameworks/nodejs/detector.d.ts +6 -0
  67. package/dist/frameworks/nodejs/detector.d.ts.map +1 -0
  68. package/dist/frameworks/nodejs/detector.js +77 -0
  69. package/dist/frameworks/nodejs/detector.js.map +1 -0
  70. package/dist/frameworks/php/config.d.ts +6 -0
  71. package/dist/frameworks/php/config.d.ts.map +1 -0
  72. package/dist/frameworks/php/config.js +53 -0
  73. package/dist/frameworks/php/config.js.map +1 -0
  74. package/dist/frameworks/php/detector.d.ts +7 -0
  75. package/dist/frameworks/php/detector.d.ts.map +1 -0
  76. package/dist/frameworks/php/detector.js +101 -0
  77. package/dist/frameworks/php/detector.js.map +1 -0
  78. package/dist/frameworks/registry.d.ts +20 -0
  79. package/dist/frameworks/registry.d.ts.map +1 -0
  80. package/dist/frameworks/registry.js +38 -0
  81. package/dist/frameworks/registry.js.map +1 -0
  82. package/dist/frameworks/shopify/config.d.ts +6 -0
  83. package/dist/frameworks/shopify/config.d.ts.map +1 -0
  84. package/dist/frameworks/shopify/config.js +50 -0
  85. package/dist/frameworks/shopify/config.js.map +1 -0
  86. package/dist/frameworks/shopify/detector.d.ts +6 -0
  87. package/dist/frameworks/shopify/detector.d.ts.map +1 -0
  88. package/dist/frameworks/shopify/detector.js +103 -0
  89. package/dist/frameworks/shopify/detector.js.map +1 -0
  90. package/dist/frameworks/types.d.ts +51 -0
  91. package/dist/frameworks/types.d.ts.map +1 -0
  92. package/dist/frameworks/types.js +21 -0
  93. package/dist/frameworks/types.js.map +1 -0
  94. package/dist/git/tracker.d.ts +56 -0
  95. package/dist/git/tracker.d.ts.map +1 -0
  96. package/dist/git/tracker.js +189 -0
  97. package/dist/git/tracker.js.map +1 -0
  98. package/dist/git/utils.d.ts +60 -0
  99. package/dist/git/utils.d.ts.map +1 -0
  100. package/dist/git/utils.js +152 -0
  101. package/dist/git/utils.js.map +1 -0
  102. package/dist/index.d.ts +77 -0
  103. package/dist/index.d.ts.map +1 -0
  104. package/dist/index.js +95 -0
  105. package/dist/index.js.map +1 -0
  106. package/dist/indexer/ast/chunker.d.ts +28 -0
  107. package/dist/indexer/ast/chunker.d.ts.map +1 -0
  108. package/dist/indexer/ast/chunker.js +268 -0
  109. package/dist/indexer/ast/chunker.js.map +1 -0
  110. package/dist/indexer/ast/complexity/cognitive.d.ts +16 -0
  111. package/dist/indexer/ast/complexity/cognitive.d.ts.map +1 -0
  112. package/dist/indexer/ast/complexity/cognitive.js +106 -0
  113. package/dist/indexer/ast/complexity/cognitive.js.map +1 -0
  114. package/dist/indexer/ast/complexity/cyclomatic.d.ts +12 -0
  115. package/dist/indexer/ast/complexity/cyclomatic.d.ts.map +1 -0
  116. package/dist/indexer/ast/complexity/cyclomatic.js +61 -0
  117. package/dist/indexer/ast/complexity/cyclomatic.js.map +1 -0
  118. package/dist/indexer/ast/complexity/halstead.d.ts +55 -0
  119. package/dist/indexer/ast/complexity/halstead.d.ts.map +1 -0
  120. package/dist/indexer/ast/complexity/halstead.js +290 -0
  121. package/dist/indexer/ast/complexity/halstead.js.map +1 -0
  122. package/dist/indexer/ast/complexity/index.d.ts +13 -0
  123. package/dist/indexer/ast/complexity/index.d.ts.map +1 -0
  124. package/dist/indexer/ast/complexity/index.js +12 -0
  125. package/dist/indexer/ast/complexity/index.js.map +1 -0
  126. package/dist/indexer/ast/parser.d.ts +27 -0
  127. package/dist/indexer/ast/parser.d.ts.map +1 -0
  128. package/dist/indexer/ast/parser.js +103 -0
  129. package/dist/indexer/ast/parser.js.map +1 -0
  130. package/dist/indexer/ast/symbols.d.ts +17 -0
  131. package/dist/indexer/ast/symbols.d.ts.map +1 -0
  132. package/dist/indexer/ast/symbols.js +265 -0
  133. package/dist/indexer/ast/symbols.js.map +1 -0
  134. package/dist/indexer/ast/traversers/index.d.ts +19 -0
  135. package/dist/indexer/ast/traversers/index.d.ts.map +1 -0
  136. package/dist/indexer/ast/traversers/index.js +42 -0
  137. package/dist/indexer/ast/traversers/index.js.map +1 -0
  138. package/dist/indexer/ast/traversers/php.d.ts +21 -0
  139. package/dist/indexer/ast/traversers/php.d.ts.map +1 -0
  140. package/dist/indexer/ast/traversers/php.js +67 -0
  141. package/dist/indexer/ast/traversers/php.js.map +1 -0
  142. package/dist/indexer/ast/traversers/python.d.ts +28 -0
  143. package/dist/indexer/ast/traversers/python.d.ts.map +1 -0
  144. package/dist/indexer/ast/traversers/python.js +67 -0
  145. package/dist/indexer/ast/traversers/python.js.map +1 -0
  146. package/dist/indexer/ast/traversers/types.d.ts +98 -0
  147. package/dist/indexer/ast/traversers/types.d.ts.map +1 -0
  148. package/dist/indexer/ast/traversers/types.js +2 -0
  149. package/dist/indexer/ast/traversers/types.js.map +1 -0
  150. package/dist/indexer/ast/traversers/typescript.d.ts +29 -0
  151. package/dist/indexer/ast/traversers/typescript.d.ts.map +1 -0
  152. package/dist/indexer/ast/traversers/typescript.js +88 -0
  153. package/dist/indexer/ast/traversers/typescript.js.map +1 -0
  154. package/dist/indexer/ast/types.d.ts +59 -0
  155. package/dist/indexer/ast/types.d.ts.map +1 -0
  156. package/dist/indexer/ast/types.js +2 -0
  157. package/dist/indexer/ast/types.js.map +1 -0
  158. package/dist/indexer/change-detector.d.ts +17 -0
  159. package/dist/indexer/change-detector.d.ts.map +1 -0
  160. package/dist/indexer/change-detector.js +207 -0
  161. package/dist/indexer/change-detector.js.map +1 -0
  162. package/dist/indexer/chunk-batch-processor.d.ts +103 -0
  163. package/dist/indexer/chunk-batch-processor.d.ts.map +1 -0
  164. package/dist/indexer/chunk-batch-processor.js +179 -0
  165. package/dist/indexer/chunk-batch-processor.js.map +1 -0
  166. package/dist/indexer/chunker.d.ts +10 -0
  167. package/dist/indexer/chunker.d.ts.map +1 -0
  168. package/dist/indexer/chunker.js +96 -0
  169. package/dist/indexer/chunker.js.map +1 -0
  170. package/dist/indexer/dependency-analyzer.d.ts +60 -0
  171. package/dist/indexer/dependency-analyzer.d.ts.map +1 -0
  172. package/dist/indexer/dependency-analyzer.js +261 -0
  173. package/dist/indexer/dependency-analyzer.js.map +1 -0
  174. package/dist/indexer/incremental.d.ts +47 -0
  175. package/dist/indexer/incremental.d.ts.map +1 -0
  176. package/dist/indexer/incremental.js +284 -0
  177. package/dist/indexer/incremental.js.map +1 -0
  178. package/dist/indexer/index.d.ts +80 -0
  179. package/dist/indexer/index.d.ts.map +1 -0
  180. package/dist/indexer/index.js +364 -0
  181. package/dist/indexer/index.js.map +1 -0
  182. package/dist/indexer/json-template-chunker.d.ts +9 -0
  183. package/dist/indexer/json-template-chunker.d.ts.map +1 -0
  184. package/dist/indexer/json-template-chunker.js +83 -0
  185. package/dist/indexer/json-template-chunker.js.map +1 -0
  186. package/dist/indexer/liquid-chunker.d.ts +13 -0
  187. package/dist/indexer/liquid-chunker.d.ts.map +1 -0
  188. package/dist/indexer/liquid-chunker.js +272 -0
  189. package/dist/indexer/liquid-chunker.js.map +1 -0
  190. package/dist/indexer/manifest.d.ts +122 -0
  191. package/dist/indexer/manifest.d.ts.map +1 -0
  192. package/dist/indexer/manifest.js +262 -0
  193. package/dist/indexer/manifest.js.map +1 -0
  194. package/dist/indexer/progress-tracker.d.ts +35 -0
  195. package/dist/indexer/progress-tracker.d.ts.map +1 -0
  196. package/dist/indexer/progress-tracker.js +33 -0
  197. package/dist/indexer/progress-tracker.js.map +1 -0
  198. package/dist/indexer/scanner.d.ts +16 -0
  199. package/dist/indexer/scanner.d.ts.map +1 -0
  200. package/dist/indexer/scanner.js +159 -0
  201. package/dist/indexer/scanner.js.map +1 -0
  202. package/dist/indexer/symbol-extractor.d.ts +18 -0
  203. package/dist/indexer/symbol-extractor.d.ts.map +1 -0
  204. package/dist/indexer/symbol-extractor.js +351 -0
  205. package/dist/indexer/symbol-extractor.js.map +1 -0
  206. package/dist/indexer/types.d.ts +34 -0
  207. package/dist/indexer/types.d.ts.map +1 -0
  208. package/dist/indexer/types.js +2 -0
  209. package/dist/indexer/types.js.map +1 -0
  210. package/dist/insights/complexity-analyzer.d.ts +82 -0
  211. package/dist/insights/complexity-analyzer.d.ts.map +1 -0
  212. package/dist/insights/complexity-analyzer.js +356 -0
  213. package/dist/insights/complexity-analyzer.js.map +1 -0
  214. package/dist/insights/formatters/index.d.ts +11 -0
  215. package/dist/insights/formatters/index.d.ts.map +1 -0
  216. package/dist/insights/formatters/index.js +20 -0
  217. package/dist/insights/formatters/index.js.map +1 -0
  218. package/dist/insights/formatters/json.d.ts +7 -0
  219. package/dist/insights/formatters/json.d.ts.map +1 -0
  220. package/dist/insights/formatters/json.js +14 -0
  221. package/dist/insights/formatters/json.js.map +1 -0
  222. package/dist/insights/formatters/sarif.d.ts +6 -0
  223. package/dist/insights/formatters/sarif.d.ts.map +1 -0
  224. package/dist/insights/formatters/sarif.js +113 -0
  225. package/dist/insights/formatters/sarif.js.map +1 -0
  226. package/dist/insights/formatters/text.d.ts +6 -0
  227. package/dist/insights/formatters/text.d.ts.map +1 -0
  228. package/dist/insights/formatters/text.js +154 -0
  229. package/dist/insights/formatters/text.js.map +1 -0
  230. package/dist/insights/types.d.ts +73 -0
  231. package/dist/insights/types.d.ts.map +1 -0
  232. package/dist/insights/types.js +9 -0
  233. package/dist/insights/types.js.map +1 -0
  234. package/dist/types/index.d.ts +14 -0
  235. package/dist/types/index.d.ts.map +1 -0
  236. package/dist/types/index.js +8 -0
  237. package/dist/types/index.js.map +1 -0
  238. package/dist/utils/path-matching.d.ts +69 -0
  239. package/dist/utils/path-matching.d.ts.map +1 -0
  240. package/dist/utils/path-matching.js +123 -0
  241. package/dist/utils/path-matching.js.map +1 -0
  242. package/dist/utils/result.d.ts +65 -0
  243. package/dist/utils/result.d.ts.map +1 -0
  244. package/dist/utils/result.js +67 -0
  245. package/dist/utils/result.js.map +1 -0
  246. package/dist/utils/version.d.ts +22 -0
  247. package/dist/utils/version.d.ts.map +1 -0
  248. package/dist/utils/version.js +28 -0
  249. package/dist/utils/version.js.map +1 -0
  250. package/dist/vectordb/batch-insert.d.ts +14 -0
  251. package/dist/vectordb/batch-insert.d.ts.map +1 -0
  252. package/dist/vectordb/batch-insert.js +185 -0
  253. package/dist/vectordb/batch-insert.js.map +1 -0
  254. package/dist/vectordb/boosting/composer.d.ts +51 -0
  255. package/dist/vectordb/boosting/composer.d.ts.map +1 -0
  256. package/dist/vectordb/boosting/composer.js +65 -0
  257. package/dist/vectordb/boosting/composer.js.map +1 -0
  258. package/dist/vectordb/boosting/index.d.ts +22 -0
  259. package/dist/vectordb/boosting/index.d.ts.map +1 -0
  260. package/dist/vectordb/boosting/index.js +22 -0
  261. package/dist/vectordb/boosting/index.js.map +1 -0
  262. package/dist/vectordb/boosting/strategies.d.ts +40 -0
  263. package/dist/vectordb/boosting/strategies.d.ts.map +1 -0
  264. package/dist/vectordb/boosting/strategies.js +174 -0
  265. package/dist/vectordb/boosting/strategies.js.map +1 -0
  266. package/dist/vectordb/boosting/types.d.ts +20 -0
  267. package/dist/vectordb/boosting/types.d.ts.map +1 -0
  268. package/dist/vectordb/boosting/types.js +2 -0
  269. package/dist/vectordb/boosting/types.js.map +1 -0
  270. package/dist/vectordb/intent-classifier.d.ts +99 -0
  271. package/dist/vectordb/intent-classifier.d.ts.map +1 -0
  272. package/dist/vectordb/intent-classifier.js +193 -0
  273. package/dist/vectordb/intent-classifier.js.map +1 -0
  274. package/dist/vectordb/lancedb.d.ts +45 -0
  275. package/dist/vectordb/lancedb.d.ts.map +1 -0
  276. package/dist/vectordb/lancedb.js +203 -0
  277. package/dist/vectordb/lancedb.js.map +1 -0
  278. package/dist/vectordb/maintenance.d.ts +18 -0
  279. package/dist/vectordb/maintenance.d.ts.map +1 -0
  280. package/dist/vectordb/maintenance.js +87 -0
  281. package/dist/vectordb/maintenance.js.map +1 -0
  282. package/dist/vectordb/query.d.ts +34 -0
  283. package/dist/vectordb/query.d.ts.map +1 -0
  284. package/dist/vectordb/query.js +303 -0
  285. package/dist/vectordb/query.js.map +1 -0
  286. package/dist/vectordb/relevance.d.ts +15 -0
  287. package/dist/vectordb/relevance.d.ts.map +1 -0
  288. package/dist/vectordb/relevance.js +19 -0
  289. package/dist/vectordb/relevance.js.map +1 -0
  290. package/dist/vectordb/types.d.ts +29 -0
  291. package/dist/vectordb/types.d.ts.map +1 -0
  292. package/dist/vectordb/types.js +2 -0
  293. package/dist/vectordb/types.js.map +1 -0
  294. package/dist/vectordb/version.d.ts +16 -0
  295. package/dist/vectordb/version.d.ts.map +1 -0
  296. package/dist/vectordb/version.js +40 -0
  297. package/dist/vectordb/version.js.map +1 -0
  298. package/package.json +66 -0
@@ -0,0 +1,65 @@
1
+ /**
2
+ * Result type for explicit error handling.
3
+ *
4
+ * Provides a type-safe alternative to throwing exceptions, making error
5
+ * handling explicit in function signatures.
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * function divide(a: number, b: number): Result<number, string> {
10
+ * if (b === 0) {
11
+ * return Err('Division by zero');
12
+ * }
13
+ * return Ok(a / b);
14
+ * }
15
+ *
16
+ * const result = divide(10, 2);
17
+ * if (isOk(result)) {
18
+ * console.log(result.value); // 5
19
+ * } else {
20
+ * console.error(result.error);
21
+ * }
22
+ * ```
23
+ */
24
+ /**
25
+ * Result type representing either success (Ok) or failure (Err)
26
+ */
27
+ export type Result<T, E = Error> = {
28
+ ok: true;
29
+ value: T;
30
+ } | {
31
+ ok: false;
32
+ error: E;
33
+ };
34
+ /**
35
+ * Creates a successful Result containing a value
36
+ */
37
+ export declare function Ok<T>(value: T): Result<T, never>;
38
+ /**
39
+ * Creates a failed Result containing an error
40
+ */
41
+ export declare function Err<E>(error: E): Result<never, E>;
42
+ /**
43
+ * Type guard to check if a Result is Ok
44
+ */
45
+ export declare function isOk<T, E>(result: Result<T, E>): result is {
46
+ ok: true;
47
+ value: T;
48
+ };
49
+ /**
50
+ * Type guard to check if a Result is Err
51
+ */
52
+ export declare function isErr<T, E>(result: Result<T, E>): result is {
53
+ ok: false;
54
+ error: E;
55
+ };
56
+ /**
57
+ * Unwraps a Result, throwing if it's an error
58
+ * @throws {E} The error if Result is Err
59
+ */
60
+ export declare function unwrap<T, E>(result: Result<T, E>): T;
61
+ /**
62
+ * Unwraps a Result or returns a default value if it's an error
63
+ */
64
+ export declare function unwrapOr<T, E>(result: Result<T, E>, defaultValue: T): T;
65
+ //# sourceMappingURL=result.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"result.d.ts","sourceRoot":"","sources":["../../src/utils/result.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH;;GAEG;AACH,MAAM,MAAM,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,IAC3B;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,CAAC,CAAA;CAAE,GACtB;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,CAAC,CAAA;CAAE,CAAC;AAE5B;;GAEG;AACH,wBAAgB,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,CAEhD;AAED;;GAEG;AACH,wBAAgB,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAEjD;AAED;;GAEG;AACH,wBAAgB,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,IAAI;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,CAAC,CAAA;CAAE,CAEjF;AAED;;GAEG;AACH,wBAAgB,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,IAAI;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,CAAC,CAAA;CAAE,CAEnF;AAED;;;GAGG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAKpD;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,GAAG,CAAC,CAKvE"}
@@ -0,0 +1,67 @@
1
+ /**
2
+ * Result type for explicit error handling.
3
+ *
4
+ * Provides a type-safe alternative to throwing exceptions, making error
5
+ * handling explicit in function signatures.
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * function divide(a: number, b: number): Result<number, string> {
10
+ * if (b === 0) {
11
+ * return Err('Division by zero');
12
+ * }
13
+ * return Ok(a / b);
14
+ * }
15
+ *
16
+ * const result = divide(10, 2);
17
+ * if (isOk(result)) {
18
+ * console.log(result.value); // 5
19
+ * } else {
20
+ * console.error(result.error);
21
+ * }
22
+ * ```
23
+ */
24
+ /**
25
+ * Creates a successful Result containing a value
26
+ */
27
+ export function Ok(value) {
28
+ return { ok: true, value };
29
+ }
30
+ /**
31
+ * Creates a failed Result containing an error
32
+ */
33
+ export function Err(error) {
34
+ return { ok: false, error };
35
+ }
36
+ /**
37
+ * Type guard to check if a Result is Ok
38
+ */
39
+ export function isOk(result) {
40
+ return result.ok;
41
+ }
42
+ /**
43
+ * Type guard to check if a Result is Err
44
+ */
45
+ export function isErr(result) {
46
+ return !result.ok;
47
+ }
48
+ /**
49
+ * Unwraps a Result, throwing if it's an error
50
+ * @throws {E} The error if Result is Err
51
+ */
52
+ export function unwrap(result) {
53
+ if (isOk(result)) {
54
+ return result.value;
55
+ }
56
+ throw result.error;
57
+ }
58
+ /**
59
+ * Unwraps a Result or returns a default value if it's an error
60
+ */
61
+ export function unwrapOr(result, defaultValue) {
62
+ if (isOk(result)) {
63
+ return result.value;
64
+ }
65
+ return defaultValue;
66
+ }
67
+ //# sourceMappingURL=result.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"result.js","sourceRoot":"","sources":["../../src/utils/result.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AASH;;GAEG;AACH,MAAM,UAAU,EAAE,CAAI,KAAQ;IAC5B,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AAC7B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,GAAG,CAAI,KAAQ;IAC7B,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AAC9B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,IAAI,CAAO,MAAoB;IAC7C,OAAO,MAAM,CAAC,EAAE,CAAC;AACnB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,KAAK,CAAO,MAAoB;IAC9C,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;AACpB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,MAAM,CAAO,MAAoB;IAC/C,IAAI,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QACjB,OAAO,MAAM,CAAC,KAAK,CAAC;IACtB,CAAC;IACD,MAAM,MAAM,CAAC,KAAK,CAAC;AACrB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,QAAQ,CAAO,MAAoB,EAAE,YAAe;IAClE,IAAI,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QACjB,OAAO,MAAM,CAAC,KAAK,CAAC;IACtB,CAAC;IACD,OAAO,YAAY,CAAC;AACtB,CAAC"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Version utilities for @liendev/core
3
+ *
4
+ * Core package has its own version. When CLI uses core,
5
+ * it can override this with its own package version.
6
+ */
7
+ /**
8
+ * Get the current package version
9
+ */
10
+ export declare function getPackageVersion(): string;
11
+ /**
12
+ * Set the package version (used by CLI to override with its version)
13
+ */
14
+ export declare function setPackageVersion(version: string): void;
15
+ /**
16
+ * Get the full package info (for compatibility)
17
+ */
18
+ export declare function getPackageInfo(): {
19
+ version: string;
20
+ name: string;
21
+ };
22
+ //# sourceMappingURL=version.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/utils/version.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAEvD;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAElE"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Version utilities for @liendev/core
3
+ *
4
+ * Core package has its own version. When CLI uses core,
5
+ * it can override this with its own package version.
6
+ */
7
+ // Default version for core
8
+ // In a real build, this would be injected or read from package.json
9
+ let coreVersion = '0.1.0';
10
+ /**
11
+ * Get the current package version
12
+ */
13
+ export function getPackageVersion() {
14
+ return coreVersion;
15
+ }
16
+ /**
17
+ * Set the package version (used by CLI to override with its version)
18
+ */
19
+ export function setPackageVersion(version) {
20
+ coreVersion = version;
21
+ }
22
+ /**
23
+ * Get the full package info (for compatibility)
24
+ */
25
+ export function getPackageInfo() {
26
+ return { version: coreVersion, name: '@liendev/core' };
27
+ }
28
+ //# sourceMappingURL=version.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/utils/version.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,2BAA2B;AAC3B,oEAAoE;AACpE,IAAI,WAAW,GAAG,OAAO,CAAC;AAE1B;;GAEG;AACH,MAAM,UAAU,iBAAiB;IAC/B,OAAO,WAAW,CAAC;AACrB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAAe;IAC/C,WAAW,GAAG,OAAO,CAAC;AACxB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc;IAC5B,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC;AACzD,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { ChunkMetadata } from '../indexer/types.js';
2
+ type LanceDBConnection = any;
3
+ type LanceDBTable = any;
4
+ /**
5
+ * Insert a batch of vectors into the database
6
+ *
7
+ * @returns The table instance after insertion, or null only when:
8
+ * - vectors.length === 0 AND table === null (no-op case)
9
+ * For non-empty batches, always returns a valid table or throws.
10
+ * @throws {DatabaseError} If database not initialized or insertion fails
11
+ */
12
+ export declare function insertBatch(db: LanceDBConnection, table: LanceDBTable | null, tableName: string, vectors: Float32Array[], metadatas: ChunkMetadata[], contents: string[]): Promise<LanceDBTable | null>;
13
+ export {};
14
+ //# sourceMappingURL=batch-insert.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"batch-insert.d.ts","sourceRoot":"","sources":["../../src/vectordb/batch-insert.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAOpD,KAAK,iBAAiB,GAAG,GAAG,CAAC;AAC7B,KAAK,YAAY,GAAG,GAAG,CAAC;AAiHxB;;;;;;;GAOG;AACH,wBAAsB,WAAW,CAC/B,EAAE,EAAE,iBAAiB,EACrB,KAAK,EAAE,YAAY,GAAG,IAAI,EAC1B,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,YAAY,EAAE,EACvB,SAAS,EAAE,aAAa,EAAE,EAC1B,QAAQ,EAAE,MAAM,EAAE,GACjB,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAmC9B"}
@@ -0,0 +1,185 @@
1
+ import { DatabaseError } from '../errors/index.js';
2
+ import { VECTOR_DB_MAX_BATCH_SIZE, VECTOR_DB_MIN_BATCH_SIZE } from '../constants.js';
3
+ /**
4
+ * Transform a chunk's data into a database record.
5
+ * Handles missing/empty metadata by providing defaults for Arrow type inference.
6
+ */
7
+ function transformChunkToRecord(vector, content, metadata) {
8
+ return {
9
+ vector: Array.from(vector),
10
+ content,
11
+ file: metadata.file,
12
+ startLine: metadata.startLine,
13
+ endLine: metadata.endLine,
14
+ type: metadata.type,
15
+ language: metadata.language,
16
+ // Ensure arrays have at least empty string for Arrow type inference
17
+ functionNames: getNonEmptyArray(metadata.symbols?.functions),
18
+ classNames: getNonEmptyArray(metadata.symbols?.classes),
19
+ interfaceNames: getNonEmptyArray(metadata.symbols?.interfaces),
20
+ // AST-derived metadata (v0.13.0)
21
+ symbolName: metadata.symbolName || '',
22
+ symbolType: metadata.symbolType || '',
23
+ parentClass: metadata.parentClass || '',
24
+ complexity: metadata.complexity || 0,
25
+ cognitiveComplexity: metadata.cognitiveComplexity || 0,
26
+ parameters: getNonEmptyArray(metadata.parameters),
27
+ signature: metadata.signature || '',
28
+ imports: getNonEmptyArray(metadata.imports),
29
+ // Halstead metrics (v0.19.0)
30
+ halsteadVolume: metadata.halsteadVolume || 0,
31
+ halsteadDifficulty: metadata.halsteadDifficulty || 0,
32
+ halsteadEffort: metadata.halsteadEffort || 0,
33
+ halsteadBugs: metadata.halsteadBugs || 0,
34
+ };
35
+ }
36
+ /**
37
+ * Returns the array if non-empty, otherwise returns [''] for Arrow type inference
38
+ */
39
+ function getNonEmptyArray(arr) {
40
+ return arr && arr.length > 0 ? arr : [''];
41
+ }
42
+ /**
43
+ * Split a batch in half for retry logic
44
+ */
45
+ function splitBatchInHalf(batch) {
46
+ const half = Math.floor(batch.vectors.length / 2);
47
+ return [
48
+ {
49
+ vectors: batch.vectors.slice(0, half),
50
+ metadatas: batch.metadatas.slice(0, half),
51
+ contents: batch.contents.slice(0, half),
52
+ },
53
+ {
54
+ vectors: batch.vectors.slice(half),
55
+ metadatas: batch.metadatas.slice(half),
56
+ contents: batch.contents.slice(half),
57
+ },
58
+ ];
59
+ }
60
+ /**
61
+ * Transform all chunks in a batch to database records
62
+ */
63
+ function transformBatchToRecords(batch) {
64
+ return batch.vectors.map((vector, i) => transformChunkToRecord(vector, batch.contents[i], batch.metadatas[i]));
65
+ }
66
+ /**
67
+ * Insert a batch of vectors into the database
68
+ *
69
+ * @returns The table instance after insertion, or null only when:
70
+ * - vectors.length === 0 AND table === null (no-op case)
71
+ * For non-empty batches, always returns a valid table or throws.
72
+ * @throws {DatabaseError} If database not initialized or insertion fails
73
+ */
74
+ export async function insertBatch(db, table, tableName, vectors, metadatas, contents) {
75
+ if (!db) {
76
+ throw new DatabaseError('Vector database not initialized');
77
+ }
78
+ if (vectors.length !== metadatas.length || vectors.length !== contents.length) {
79
+ throw new DatabaseError('Vectors, metadatas, and contents arrays must have the same length', {
80
+ vectorsLength: vectors.length,
81
+ metadatasLength: metadatas.length,
82
+ contentsLength: contents.length,
83
+ });
84
+ }
85
+ // Handle empty batch gracefully - return table as-is (could be null)
86
+ if (vectors.length === 0) {
87
+ return table;
88
+ }
89
+ // Split large batches into smaller chunks
90
+ if (vectors.length > VECTOR_DB_MAX_BATCH_SIZE) {
91
+ let currentTable = table;
92
+ for (let i = 0; i < vectors.length; i += VECTOR_DB_MAX_BATCH_SIZE) {
93
+ const batchVectors = vectors.slice(i, Math.min(i + VECTOR_DB_MAX_BATCH_SIZE, vectors.length));
94
+ const batchMetadata = metadatas.slice(i, Math.min(i + VECTOR_DB_MAX_BATCH_SIZE, vectors.length));
95
+ const batchContents = contents.slice(i, Math.min(i + VECTOR_DB_MAX_BATCH_SIZE, vectors.length));
96
+ currentTable = await insertBatchInternal(db, currentTable, tableName, batchVectors, batchMetadata, batchContents);
97
+ }
98
+ if (!currentTable) {
99
+ throw new DatabaseError('Failed to create table during batch insert');
100
+ }
101
+ return currentTable;
102
+ }
103
+ else {
104
+ return insertBatchInternal(db, table, tableName, vectors, metadatas, contents);
105
+ }
106
+ }
107
+ /**
108
+ * Internal method to insert a single batch with iterative retry logic.
109
+ * Uses a queue-based approach to handle batch splitting on failure.
110
+ *
111
+ * @returns Always returns a valid LanceDBTable or throws DatabaseError
112
+ */
113
+ async function insertBatchInternal(db, table, tableName, vectors, metadatas, contents) {
114
+ const queue = [{ vectors, metadatas, contents }];
115
+ const failedBatches = [];
116
+ let currentTable = table;
117
+ let lastError;
118
+ while (queue.length > 0) {
119
+ const batch = queue.shift();
120
+ const insertResult = await tryInsertBatch(db, currentTable, tableName, batch);
121
+ if (insertResult.success) {
122
+ currentTable = insertResult.table;
123
+ }
124
+ else {
125
+ lastError = insertResult.error;
126
+ handleBatchFailure(batch, queue, failedBatches);
127
+ }
128
+ }
129
+ throwIfBatchesFailed(failedBatches, lastError);
130
+ if (!currentTable) {
131
+ throw new DatabaseError('Failed to create table during batch insert');
132
+ }
133
+ return currentTable;
134
+ }
135
+ /**
136
+ * Attempt to insert a batch of records into the database.
137
+ * Errors are captured and returned (not thrown) to support retry logic.
138
+ */
139
+ async function tryInsertBatch(db, currentTable, tableName, batch) {
140
+ try {
141
+ const records = transformBatchToRecords(batch);
142
+ if (!currentTable) {
143
+ const newTable = await db.createTable(tableName, records);
144
+ return { success: true, table: newTable };
145
+ }
146
+ else {
147
+ await currentTable.add(records);
148
+ return { success: true, table: currentTable };
149
+ }
150
+ }
151
+ catch (error) {
152
+ // Error is captured for retry logic - will be included in final error if all retries fail
153
+ return { success: false, table: currentTable, error: error };
154
+ }
155
+ }
156
+ /**
157
+ * Handle a failed batch insertion by either splitting and retrying or marking as failed
158
+ */
159
+ function handleBatchFailure(batch, queue, failedBatches) {
160
+ if (batch.vectors.length > VECTOR_DB_MIN_BATCH_SIZE) {
161
+ // Split and retry
162
+ const [firstHalf, secondHalf] = splitBatchInHalf(batch);
163
+ queue.push(firstHalf, secondHalf);
164
+ }
165
+ else {
166
+ // Can't split further, mark as failed
167
+ failedBatches.push(batch);
168
+ }
169
+ }
170
+ /**
171
+ * Throw an error if any batches failed after all retry attempts.
172
+ * Includes the last error encountered for debugging.
173
+ */
174
+ function throwIfBatchesFailed(failedBatches, lastError) {
175
+ if (failedBatches.length === 0)
176
+ return;
177
+ const totalFailed = failedBatches.reduce((sum, batch) => sum + batch.vectors.length, 0);
178
+ throw new DatabaseError(`Failed to insert ${totalFailed} record(s) after retry attempts`, {
179
+ failedBatches: failedBatches.length,
180
+ totalRecords: totalFailed,
181
+ sampleFile: failedBatches[0].metadatas[0].file,
182
+ lastError: lastError?.message,
183
+ });
184
+ }
185
+ //# sourceMappingURL=batch-insert.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"batch-insert.js","sourceRoot":"","sources":["../../src/vectordb/batch-insert.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ import type { BoostingStrategy } from './types.js';
2
+ /**
3
+ * Composes multiple boosting strategies into a single pipeline.
4
+ *
5
+ * Strategies are applied sequentially, with each strategy
6
+ * receiving the output of the previous strategy as input.
7
+ *
8
+ * @example
9
+ * ```typescript
10
+ * const composer = new BoostingComposer()
11
+ * .addStrategy(new PathBoostingStrategy())
12
+ * .addStrategy(new FilenameBoostingStrategy())
13
+ * .addStrategy(new FileTypeBoostingStrategy(intent));
14
+ *
15
+ * const boostedScore = composer.apply(query, filepath, baseScore);
16
+ * ```
17
+ */
18
+ export declare class BoostingComposer {
19
+ private strategies;
20
+ /**
21
+ * Add a boosting strategy to the pipeline.
22
+ * Strategies are applied in the order they are added.
23
+ *
24
+ * @param strategy - The strategy to add
25
+ * @returns This composer for chaining
26
+ */
27
+ addStrategy(strategy: BoostingStrategy): this;
28
+ /**
29
+ * Apply all strategies to a base score.
30
+ *
31
+ * @param query - The search query
32
+ * @param filepath - The file path being scored
33
+ * @param baseScore - The initial score from vector similarity
34
+ * @returns The final boosted score after all strategies
35
+ */
36
+ apply(query: string, filepath: string, baseScore: number): number;
37
+ /**
38
+ * Get the names of all strategies in this composer.
39
+ * Useful for debugging and logging.
40
+ */
41
+ getStrategyNames(): string[];
42
+ /**
43
+ * Get the number of strategies in this composer.
44
+ */
45
+ getStrategyCount(): number;
46
+ /**
47
+ * Clear all strategies from this composer.
48
+ */
49
+ clear(): void;
50
+ }
51
+ //# sourceMappingURL=composer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"composer.d.ts","sourceRoot":"","sources":["../../../src/vectordb/boosting/composer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEnD;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,UAAU,CAA0B;IAE5C;;;;;;OAMG;IACH,WAAW,CAAC,QAAQ,EAAE,gBAAgB,GAAG,IAAI;IAK7C;;;;;;;OAOG;IACH,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM;IAUjE;;;OAGG;IACH,gBAAgB,IAAI,MAAM,EAAE;IAI5B;;OAEG;IACH,gBAAgB,IAAI,MAAM;IAI1B;;OAEG;IACH,KAAK,IAAI,IAAI;CAGd"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * Composes multiple boosting strategies into a single pipeline.
3
+ *
4
+ * Strategies are applied sequentially, with each strategy
5
+ * receiving the output of the previous strategy as input.
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * const composer = new BoostingComposer()
10
+ * .addStrategy(new PathBoostingStrategy())
11
+ * .addStrategy(new FilenameBoostingStrategy())
12
+ * .addStrategy(new FileTypeBoostingStrategy(intent));
13
+ *
14
+ * const boostedScore = composer.apply(query, filepath, baseScore);
15
+ * ```
16
+ */
17
+ export class BoostingComposer {
18
+ strategies = [];
19
+ /**
20
+ * Add a boosting strategy to the pipeline.
21
+ * Strategies are applied in the order they are added.
22
+ *
23
+ * @param strategy - The strategy to add
24
+ * @returns This composer for chaining
25
+ */
26
+ addStrategy(strategy) {
27
+ this.strategies.push(strategy);
28
+ return this;
29
+ }
30
+ /**
31
+ * Apply all strategies to a base score.
32
+ *
33
+ * @param query - The search query
34
+ * @param filepath - The file path being scored
35
+ * @param baseScore - The initial score from vector similarity
36
+ * @returns The final boosted score after all strategies
37
+ */
38
+ apply(query, filepath, baseScore) {
39
+ let score = baseScore;
40
+ for (const strategy of this.strategies) {
41
+ score = strategy.apply(query, filepath, score);
42
+ }
43
+ return score;
44
+ }
45
+ /**
46
+ * Get the names of all strategies in this composer.
47
+ * Useful for debugging and logging.
48
+ */
49
+ getStrategyNames() {
50
+ return this.strategies.map(s => s.name);
51
+ }
52
+ /**
53
+ * Get the number of strategies in this composer.
54
+ */
55
+ getStrategyCount() {
56
+ return this.strategies.length;
57
+ }
58
+ /**
59
+ * Clear all strategies from this composer.
60
+ */
61
+ clear() {
62
+ this.strategies = [];
63
+ }
64
+ }
65
+ //# sourceMappingURL=composer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"composer.js","sourceRoot":"","sources":["../../../src/vectordb/boosting/composer.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;GAeG;AACH,MAAM,OAAO,gBAAgB;IACnB,UAAU,GAAuB,EAAE,CAAC;IAE5C;;;;;;OAMG;IACH,WAAW,CAAC,QAA0B;QACpC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC/B,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,KAAa,EAAE,QAAgB,EAAE,SAAiB;QACtD,IAAI,KAAK,GAAG,SAAS,CAAC;QAEtB,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACvC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;QACjD,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;OAGG;IACH,gBAAgB;QACd,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;IAED;;OAEG;IACH,gBAAgB;QACd,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;IACvB,CAAC;CACF"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Composable boosting strategies for semantic search relevance.
3
+ *
4
+ * This module provides a strategy pattern implementation for applying
5
+ * relevance boosting to search results. Strategies can be composed
6
+ * together to create complex boosting pipelines.
7
+ *
8
+ * @example
9
+ * ```typescript
10
+ * import { BoostingComposer, PathBoostingStrategy, FilenameBoostingStrategy } from './boosting';
11
+ *
12
+ * const composer = new BoostingComposer()
13
+ * .addStrategy(new PathBoostingStrategy())
14
+ * .addStrategy(new FilenameBoostingStrategy());
15
+ *
16
+ * const boostedScore = composer.apply(query, filepath, baseScore);
17
+ * ```
18
+ */
19
+ export * from './types.js';
20
+ export * from './strategies.js';
21
+ export * from './composer.js';
22
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/vectordb/boosting/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Composable boosting strategies for semantic search relevance.
3
+ *
4
+ * This module provides a strategy pattern implementation for applying
5
+ * relevance boosting to search results. Strategies can be composed
6
+ * together to create complex boosting pipelines.
7
+ *
8
+ * @example
9
+ * ```typescript
10
+ * import { BoostingComposer, PathBoostingStrategy, FilenameBoostingStrategy } from './boosting';
11
+ *
12
+ * const composer = new BoostingComposer()
13
+ * .addStrategy(new PathBoostingStrategy())
14
+ * .addStrategy(new FilenameBoostingStrategy());
15
+ *
16
+ * const boostedScore = composer.apply(query, filepath, baseScore);
17
+ * ```
18
+ */
19
+ export * from './types.js';
20
+ export * from './strategies.js';
21
+ export * from './composer.js';
22
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/vectordb/boosting/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC"}
@@ -0,0 +1,40 @@
1
+ import type { BoostingStrategy } from './types.js';
2
+ import { QueryIntent } from '../intent-classifier.js';
3
+ /**
4
+ * Boosting Strategies
5
+ */
6
+ /**
7
+ * Boosts relevance based on path segment matching.
8
+ * Files with query tokens in their path are boosted.
9
+ */
10
+ export declare class PathBoostingStrategy implements BoostingStrategy {
11
+ name: string;
12
+ apply(query: string, filepath: string, baseScore: number): number;
13
+ }
14
+ /**
15
+ * Boosts relevance based on filename matching.
16
+ * Files with query tokens in their filename are strongly boosted.
17
+ */
18
+ export declare class FilenameBoostingStrategy implements BoostingStrategy {
19
+ name: string;
20
+ apply(query: string, filepath: string, baseScore: number): number;
21
+ }
22
+ /**
23
+ * Boosts relevance based on file type and query intent.
24
+ * Different file types are boosted for different query intents.
25
+ *
26
+ * Note: This strategy focuses on file-type-specific boosting (test files,
27
+ * documentation files, utility files, etc.). Path and filename boosting
28
+ * are handled separately by PathBoostingStrategy and FilenameBoostingStrategy
29
+ * in the BoostingComposer to avoid double-boosting.
30
+ */
31
+ export declare class FileTypeBoostingStrategy implements BoostingStrategy {
32
+ private intent;
33
+ name: string;
34
+ constructor(intent: QueryIntent);
35
+ apply(query: string, filepath: string, baseScore: number): number;
36
+ private applyLocationBoosting;
37
+ private applyConceptualBoosting;
38
+ private applyImplementationBoosting;
39
+ }
40
+ //# sourceMappingURL=strategies.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"strategies.d.ts","sourceRoot":"","sources":["../../../src/vectordb/boosting/strategies.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEnD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAiFtD;;GAEG;AAEH;;;GAGG;AACH,qBAAa,oBAAqB,YAAW,gBAAgB;IAC3D,IAAI,SAAmB;IAEvB,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM;CAelE;AAED;;;GAGG;AACH,qBAAa,wBAAyB,YAAW,gBAAgB;IAC/D,IAAI,SAAuB;IAE3B,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM;CAkBlE;AAED;;;;;;;;GAQG;AACH,qBAAa,wBAAyB,YAAW,gBAAgB;IAGnD,OAAO,CAAC,MAAM;IAF1B,IAAI,SAAe;gBAEC,MAAM,EAAE,WAAW;IAEvC,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM;IAgBjE,OAAO,CAAC,qBAAqB;IAa7B,OAAO,CAAC,uBAAuB;IA2B/B,OAAO,CAAC,2BAA2B;CAYpC"}