@skillsmith/core 0.4.0 → 0.4.2

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 (612) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/src/analysis/CodebaseAnalyzer.d.ts.map +1 -1
  3. package/dist/src/analysis/CodebaseAnalyzer.js.map +1 -1
  4. package/dist/src/analysis/adapters/__tests__/python.test.js.map +1 -1
  5. package/dist/src/analysis/adapters/java-parsers.d.ts +64 -0
  6. package/dist/src/analysis/adapters/java-parsers.d.ts.map +1 -0
  7. package/dist/src/analysis/adapters/java-parsers.js +114 -0
  8. package/dist/src/analysis/adapters/java-parsers.js.map +1 -0
  9. package/dist/src/analysis/adapters/java.d.ts +1 -51
  10. package/dist/src/analysis/adapters/java.d.ts.map +1 -1
  11. package/dist/src/analysis/adapters/java.js +94 -205
  12. package/dist/src/analysis/adapters/java.js.map +1 -1
  13. package/dist/src/analysis/adapters/python-frameworks.d.ts +21 -0
  14. package/dist/src/analysis/adapters/python-frameworks.d.ts.map +1 -0
  15. package/dist/src/analysis/adapters/python-frameworks.js +86 -0
  16. package/dist/src/analysis/adapters/python-frameworks.js.map +1 -0
  17. package/dist/src/analysis/adapters/python.d.ts +0 -50
  18. package/dist/src/analysis/adapters/python.d.ts.map +1 -1
  19. package/dist/src/analysis/adapters/python.js +5 -120
  20. package/dist/src/analysis/adapters/python.js.map +1 -1
  21. package/dist/src/analysis/adapters/rust-parsers.d.ts +33 -0
  22. package/dist/src/analysis/adapters/rust-parsers.d.ts.map +1 -0
  23. package/dist/src/analysis/adapters/rust-parsers.js +94 -0
  24. package/dist/src/analysis/adapters/rust-parsers.js.map +1 -0
  25. package/dist/src/analysis/adapters/rust.d.ts +1 -43
  26. package/dist/src/analysis/adapters/rust.d.ts.map +1 -1
  27. package/dist/src/analysis/adapters/rust.js +74 -173
  28. package/dist/src/analysis/adapters/rust.js.map +1 -1
  29. package/dist/src/analysis/language-detector.d.ts +4 -20
  30. package/dist/src/analysis/language-detector.d.ts.map +1 -1
  31. package/dist/src/analysis/language-detector.js +2 -399
  32. package/dist/src/analysis/language-detector.js.map +1 -1
  33. package/dist/src/analysis/language-detector.patterns.d.ts +17 -0
  34. package/dist/src/analysis/language-detector.patterns.d.ts.map +1 -0
  35. package/dist/src/analysis/language-detector.patterns.js +413 -0
  36. package/dist/src/analysis/language-detector.patterns.js.map +1 -0
  37. package/dist/src/analysis/language-detector.types.d.ts +48 -0
  38. package/dist/src/analysis/language-detector.types.d.ts.map +1 -0
  39. package/dist/src/analysis/language-detector.types.js +6 -0
  40. package/dist/src/analysis/language-detector.types.js.map +1 -0
  41. package/dist/src/analysis/metrics.d.ts +22 -219
  42. package/dist/src/analysis/metrics.d.ts.map +1 -1
  43. package/dist/src/analysis/metrics.implementations.d.ts +39 -0
  44. package/dist/src/analysis/metrics.implementations.d.ts.map +1 -0
  45. package/dist/src/analysis/metrics.implementations.js +114 -0
  46. package/dist/src/analysis/metrics.implementations.js.map +1 -0
  47. package/dist/src/analysis/metrics.js +21 -224
  48. package/dist/src/analysis/metrics.js.map +1 -1
  49. package/dist/src/analysis/metrics.types.d.ts +79 -0
  50. package/dist/src/analysis/metrics.types.d.ts.map +1 -0
  51. package/dist/src/analysis/metrics.types.js +6 -0
  52. package/dist/src/analysis/metrics.types.js.map +1 -0
  53. package/dist/src/analysis/worker-pool.d.ts +25 -52
  54. package/dist/src/analysis/worker-pool.d.ts.map +1 -1
  55. package/dist/src/analysis/worker-pool.js +29 -181
  56. package/dist/src/analysis/worker-pool.js.map +1 -1
  57. package/dist/src/analysis/worker-types.d.ts +64 -0
  58. package/dist/src/analysis/worker-types.d.ts.map +1 -0
  59. package/dist/src/analysis/worker-types.js +11 -0
  60. package/dist/src/analysis/worker-types.js.map +1 -0
  61. package/dist/src/analysis/worker-utils.d.ts +49 -0
  62. package/dist/src/analysis/worker-utils.d.ts.map +1 -0
  63. package/dist/src/analysis/worker-utils.js +206 -0
  64. package/dist/src/analysis/worker-utils.js.map +1 -0
  65. package/dist/src/analytics/AnalyticsRepository.d.ts +1 -5
  66. package/dist/src/analytics/AnalyticsRepository.d.ts.map +1 -1
  67. package/dist/src/analytics/AnalyticsRepository.helpers.d.ts +28 -0
  68. package/dist/src/analytics/AnalyticsRepository.helpers.d.ts.map +1 -0
  69. package/dist/src/analytics/AnalyticsRepository.helpers.js +90 -0
  70. package/dist/src/analytics/AnalyticsRepository.helpers.js.map +1 -0
  71. package/dist/src/analytics/AnalyticsRepository.js +16 -129
  72. package/dist/src/analytics/AnalyticsRepository.js.map +1 -1
  73. package/dist/src/analytics/AnalyticsRepository.types.d.ts +82 -0
  74. package/dist/src/analytics/AnalyticsRepository.types.d.ts.map +1 -0
  75. package/dist/src/analytics/AnalyticsRepository.types.js +8 -0
  76. package/dist/src/analytics/AnalyticsRepository.types.js.map +1 -0
  77. package/dist/src/analytics/ROIDashboardService.js +4 -2
  78. package/dist/src/analytics/ROIDashboardService.js.map +1 -1
  79. package/dist/src/api/cache.d.ts.map +1 -1
  80. package/dist/src/api/cache.js.map +1 -1
  81. package/dist/src/api/client.d.ts +6 -121
  82. package/dist/src/api/client.d.ts.map +1 -1
  83. package/dist/src/api/client.js +29 -129
  84. package/dist/src/api/client.js.map +1 -1
  85. package/dist/src/api/schemas.d.ts +122 -0
  86. package/dist/src/api/schemas.d.ts.map +1 -0
  87. package/dist/src/api/schemas.js +71 -0
  88. package/dist/src/api/schemas.js.map +1 -0
  89. package/dist/src/api/types.d.ts +1 -1
  90. package/dist/src/api/types.d.ts.map +1 -1
  91. package/dist/src/api/utils.d.ts +35 -0
  92. package/dist/src/api/utils.d.ts.map +1 -0
  93. package/dist/src/api/utils.js +86 -0
  94. package/dist/src/api/utils.js.map +1 -0
  95. package/dist/src/benchmarks/BenchmarkRunner.d.ts.map +1 -1
  96. package/dist/src/benchmarks/BenchmarkRunner.js +1 -1
  97. package/dist/src/benchmarks/BenchmarkRunner.js.map +1 -1
  98. package/dist/src/billing/BillingService.d.ts +15 -53
  99. package/dist/src/billing/BillingService.d.ts.map +1 -1
  100. package/dist/src/billing/BillingService.helpers.d.ts +15 -0
  101. package/dist/src/billing/BillingService.helpers.d.ts.map +1 -0
  102. package/dist/src/billing/BillingService.helpers.js +45 -0
  103. package/dist/src/billing/BillingService.helpers.js.map +1 -0
  104. package/dist/src/billing/BillingService.js +49 -179
  105. package/dist/src/billing/BillingService.js.map +1 -1
  106. package/dist/src/billing/BillingService.types.d.ts +52 -0
  107. package/dist/src/billing/BillingService.types.d.ts.map +1 -0
  108. package/dist/src/billing/BillingService.types.js +6 -0
  109. package/dist/src/billing/BillingService.types.js.map +1 -0
  110. package/dist/src/billing/GDPRComplianceService.d.ts +2 -97
  111. package/dist/src/billing/GDPRComplianceService.d.ts.map +1 -1
  112. package/dist/src/billing/GDPRComplianceService.js.map +1 -1
  113. package/dist/src/billing/StripeClient.d.ts +6 -64
  114. package/dist/src/billing/StripeClient.d.ts.map +1 -1
  115. package/dist/src/billing/StripeClient.js +14 -71
  116. package/dist/src/billing/StripeClient.js.map +1 -1
  117. package/dist/src/billing/StripeReconciliationJob.d.ts +2 -47
  118. package/dist/src/billing/StripeReconciliationJob.d.ts.map +1 -1
  119. package/dist/src/billing/StripeReconciliationJob.js +1 -41
  120. package/dist/src/billing/StripeReconciliationJob.js.map +1 -1
  121. package/dist/src/billing/StripeWebhookHandler.d.ts +3 -46
  122. package/dist/src/billing/StripeWebhookHandler.d.ts.map +1 -1
  123. package/dist/src/billing/StripeWebhookHandler.js +14 -261
  124. package/dist/src/billing/StripeWebhookHandler.js.map +1 -1
  125. package/dist/src/billing/gdpr-types.d.ts +103 -0
  126. package/dist/src/billing/gdpr-types.d.ts.map +1 -0
  127. package/dist/src/billing/gdpr-types.js +7 -0
  128. package/dist/src/billing/gdpr-types.js.map +1 -0
  129. package/dist/src/billing/reconciliation-helpers.d.ts +16 -0
  130. package/dist/src/billing/reconciliation-helpers.d.ts.map +1 -0
  131. package/dist/src/billing/reconciliation-helpers.js +53 -0
  132. package/dist/src/billing/reconciliation-helpers.js.map +1 -0
  133. package/dist/src/billing/reconciliation-types.d.ts +71 -0
  134. package/dist/src/billing/reconciliation-types.d.ts.map +1 -0
  135. package/dist/src/billing/reconciliation-types.js +7 -0
  136. package/dist/src/billing/reconciliation-types.js.map +1 -0
  137. package/dist/src/billing/stripe-client-types.d.ts +45 -0
  138. package/dist/src/billing/stripe-client-types.d.ts.map +1 -0
  139. package/dist/src/billing/stripe-client-types.js +7 -0
  140. package/dist/src/billing/stripe-client-types.js.map +1 -0
  141. package/dist/src/billing/stripe-helpers.d.ts +17 -0
  142. package/dist/src/billing/stripe-helpers.d.ts.map +1 -0
  143. package/dist/src/billing/stripe-helpers.js +50 -0
  144. package/dist/src/billing/stripe-helpers.js.map +1 -0
  145. package/dist/src/billing/webhook-handlers.d.ts +56 -0
  146. package/dist/src/billing/webhook-handlers.d.ts.map +1 -0
  147. package/dist/src/billing/webhook-handlers.js +303 -0
  148. package/dist/src/billing/webhook-handlers.js.map +1 -0
  149. package/dist/src/billing/webhook-types.d.ts +42 -0
  150. package/dist/src/billing/webhook-types.d.ts.map +1 -0
  151. package/dist/src/billing/webhook-types.js +7 -0
  152. package/dist/src/billing/webhook-types.js.map +1 -0
  153. package/dist/src/config/index.d.ts +118 -0
  154. package/dist/src/config/index.d.ts.map +1 -0
  155. package/dist/src/config/index.js +172 -0
  156. package/dist/src/config/index.js.map +1 -0
  157. package/dist/src/db/migration-types.d.ts +101 -0
  158. package/dist/src/db/migration-types.d.ts.map +1 -0
  159. package/dist/src/db/migration-types.js +6 -0
  160. package/dist/src/db/migration-types.js.map +1 -0
  161. package/dist/src/db/migration.d.ts +32 -0
  162. package/dist/src/db/migration.d.ts.map +1 -0
  163. package/dist/src/db/migration.js +239 -0
  164. package/dist/src/db/migration.js.map +1 -0
  165. package/dist/src/db/schema.d.ts +2 -2
  166. package/dist/src/db/schema.d.ts.map +1 -1
  167. package/dist/src/db/schema.js +23 -1
  168. package/dist/src/db/schema.js.map +1 -1
  169. package/dist/src/embeddings/embedding-types.d.ts +44 -0
  170. package/dist/src/embeddings/embedding-types.d.ts.map +1 -0
  171. package/dist/src/embeddings/embedding-types.js +6 -0
  172. package/dist/src/embeddings/embedding-types.js.map +1 -0
  173. package/dist/src/embeddings/embedding-utils.d.ts +42 -0
  174. package/dist/src/embeddings/embedding-utils.d.ts.map +1 -0
  175. package/dist/src/embeddings/embedding-utils.js +121 -0
  176. package/dist/src/embeddings/embedding-utils.js.map +1 -0
  177. package/dist/src/embeddings/hnsw-store.d.ts +8 -518
  178. package/dist/src/embeddings/hnsw-store.d.ts.map +1 -1
  179. package/dist/src/embeddings/hnsw-store.helpers.d.ts +83 -0
  180. package/dist/src/embeddings/hnsw-store.helpers.d.ts.map +1 -0
  181. package/dist/src/embeddings/hnsw-store.helpers.js +147 -0
  182. package/dist/src/embeddings/hnsw-store.helpers.js.map +1 -0
  183. package/dist/src/embeddings/hnsw-store.js +66 -517
  184. package/dist/src/embeddings/hnsw-store.js.map +1 -1
  185. package/dist/src/embeddings/hnsw-store.types.d.ts +154 -0
  186. package/dist/src/embeddings/hnsw-store.types.d.ts.map +1 -0
  187. package/dist/src/embeddings/hnsw-store.types.js +26 -0
  188. package/dist/src/embeddings/hnsw-store.types.js.map +1 -0
  189. package/dist/src/embeddings/index.d.ts +36 -112
  190. package/dist/src/embeddings/index.d.ts.map +1 -1
  191. package/dist/src/embeddings/index.js +37 -210
  192. package/dist/src/embeddings/index.js.map +1 -1
  193. package/dist/src/errors.d.ts.map +1 -1
  194. package/dist/src/errors.js +1 -1
  195. package/dist/src/errors.js.map +1 -1
  196. package/dist/src/exports/repositories.d.ts +18 -0
  197. package/dist/src/exports/repositories.d.ts.map +1 -0
  198. package/dist/src/exports/repositories.js +30 -0
  199. package/dist/src/exports/repositories.js.map +1 -0
  200. package/dist/src/exports/services.d.ts +30 -0
  201. package/dist/src/exports/services.d.ts.map +1 -0
  202. package/dist/src/exports/services.js +70 -0
  203. package/dist/src/exports/services.js.map +1 -0
  204. package/dist/src/exports/types.d.ts +21 -0
  205. package/dist/src/exports/types.d.ts.map +1 -0
  206. package/dist/src/exports/types.js +12 -0
  207. package/dist/src/exports/types.js.map +1 -0
  208. package/dist/src/index.d.ts +10 -47
  209. package/dist/src/index.d.ts.map +1 -1
  210. package/dist/src/index.js +31 -48
  211. package/dist/src/index.js.map +1 -1
  212. package/dist/src/indexer/GitHubIndexer.d.ts.map +1 -1
  213. package/dist/src/indexer/GitHubIndexer.js +17 -4
  214. package/dist/src/indexer/GitHubIndexer.js.map +1 -1
  215. package/dist/src/indexer/SwarmIndexer.d.ts.map +1 -1
  216. package/dist/src/indexer/SwarmIndexer.js +1 -1
  217. package/dist/src/indexer/SwarmIndexer.js.map +1 -1
  218. package/dist/src/learning/PatternStore.d.ts +6 -426
  219. package/dist/src/learning/PatternStore.d.ts.map +1 -1
  220. package/dist/src/learning/PatternStore.helpers.d.ts +88 -0
  221. package/dist/src/learning/PatternStore.helpers.d.ts.map +1 -0
  222. package/dist/src/learning/PatternStore.helpers.js +286 -0
  223. package/dist/src/learning/PatternStore.helpers.js.map +1 -0
  224. package/dist/src/learning/PatternStore.js +52 -598
  225. package/dist/src/learning/PatternStore.js.map +1 -1
  226. package/dist/src/learning/PatternStore.queries.d.ts +83 -0
  227. package/dist/src/learning/PatternStore.queries.d.ts.map +1 -0
  228. package/dist/src/learning/PatternStore.queries.js +189 -0
  229. package/dist/src/learning/PatternStore.queries.js.map +1 -0
  230. package/dist/src/learning/PatternStore.types.d.ts +308 -0
  231. package/dist/src/learning/PatternStore.types.d.ts.map +1 -0
  232. package/dist/src/learning/PatternStore.types.js +44 -0
  233. package/dist/src/learning/PatternStore.types.js.map +1 -0
  234. package/dist/src/learning/ReasoningBankIntegration.d.ts +5 -345
  235. package/dist/src/learning/ReasoningBankIntegration.d.ts.map +1 -1
  236. package/dist/src/learning/ReasoningBankIntegration.helpers.d.ts +49 -0
  237. package/dist/src/learning/ReasoningBankIntegration.helpers.d.ts.map +1 -0
  238. package/dist/src/learning/ReasoningBankIntegration.helpers.js +180 -0
  239. package/dist/src/learning/ReasoningBankIntegration.helpers.js.map +1 -0
  240. package/dist/src/learning/ReasoningBankIntegration.js +21 -390
  241. package/dist/src/learning/ReasoningBankIntegration.js.map +1 -1
  242. package/dist/src/learning/ReasoningBankIntegration.types.d.ts +167 -0
  243. package/dist/src/learning/ReasoningBankIntegration.types.d.ts.map +1 -0
  244. package/dist/src/learning/ReasoningBankIntegration.types.js +51 -0
  245. package/dist/src/learning/ReasoningBankIntegration.types.js.map +1 -0
  246. package/dist/src/learning/interfaces.d.ts.map +1 -1
  247. package/dist/src/pipeline/DailyIndexPipeline.d.ts +4 -176
  248. package/dist/src/pipeline/DailyIndexPipeline.d.ts.map +1 -1
  249. package/dist/src/pipeline/DailyIndexPipeline.js +9 -83
  250. package/dist/src/pipeline/DailyIndexPipeline.js.map +1 -1
  251. package/dist/src/pipeline/pipeline-types.d.ts +132 -0
  252. package/dist/src/pipeline/pipeline-types.d.ts.map +1 -0
  253. package/dist/src/pipeline/pipeline-types.js +6 -0
  254. package/dist/src/pipeline/pipeline-types.js.map +1 -0
  255. package/dist/src/repositories/IndexerRepository.d.ts +1 -0
  256. package/dist/src/repositories/IndexerRepository.d.ts.map +1 -1
  257. package/dist/src/repositories/IndexerRepository.js +6 -0
  258. package/dist/src/repositories/IndexerRepository.js.map +1 -1
  259. package/dist/src/repositories/SkillRepository.d.ts.map +1 -1
  260. package/dist/src/repositories/SkillRepository.js +20 -5
  261. package/dist/src/repositories/SkillRepository.js.map +1 -1
  262. package/dist/src/routing/SONARouter.d.ts +3 -101
  263. package/dist/src/routing/SONARouter.d.ts.map +1 -1
  264. package/dist/src/routing/SONARouter.helpers.d.ts +112 -0
  265. package/dist/src/routing/SONARouter.helpers.d.ts.map +1 -0
  266. package/dist/src/routing/SONARouter.helpers.js +184 -0
  267. package/dist/src/routing/SONARouter.helpers.js.map +1 -0
  268. package/dist/src/routing/SONARouter.js +16 -318
  269. package/dist/src/routing/SONARouter.js.map +1 -1
  270. package/dist/src/routing/expert-types.d.ts +109 -0
  271. package/dist/src/routing/expert-types.d.ts.map +1 -0
  272. package/dist/src/routing/expert-types.js +162 -0
  273. package/dist/src/routing/expert-types.js.map +1 -0
  274. package/dist/src/routing/request-types.d.ts +113 -0
  275. package/dist/src/routing/request-types.d.ts.map +1 -0
  276. package/dist/src/routing/request-types.js +9 -0
  277. package/dist/src/routing/request-types.js.map +1 -0
  278. package/dist/src/routing/types.d.ts +5 -207
  279. package/dist/src/routing/types.d.ts.map +1 -1
  280. package/dist/src/routing/types.js +3 -153
  281. package/dist/src/routing/types.js.map +1 -1
  282. package/dist/src/scripts/github-import/github-auth.d.ts +17 -0
  283. package/dist/src/scripts/github-import/github-auth.d.ts.map +1 -0
  284. package/dist/src/scripts/github-import/github-auth.js +201 -0
  285. package/dist/src/scripts/github-import/github-auth.js.map +1 -0
  286. package/dist/src/scripts/github-import/github-client.d.ts +5 -5
  287. package/dist/src/scripts/github-import/github-client.d.ts.map +1 -1
  288. package/dist/src/scripts/github-import/github-client.js +5 -204
  289. package/dist/src/scripts/github-import/github-client.js.map +1 -1
  290. package/dist/src/scripts/ingest-lenny-skills.d.ts +40 -0
  291. package/dist/src/scripts/ingest-lenny-skills.d.ts.map +1 -0
  292. package/dist/src/scripts/ingest-lenny-skills.js +346 -0
  293. package/dist/src/scripts/ingest-lenny-skills.js.map +1 -0
  294. package/dist/src/scripts/merge-skills.d.ts +5 -27
  295. package/dist/src/scripts/merge-skills.d.ts.map +1 -1
  296. package/dist/src/scripts/merge-skills.js +4 -144
  297. package/dist/src/scripts/merge-skills.js.map +1 -1
  298. package/dist/src/scripts/merge-types.d.ts +72 -0
  299. package/dist/src/scripts/merge-types.d.ts.map +1 -0
  300. package/dist/src/scripts/merge-types.js +7 -0
  301. package/dist/src/scripts/merge-types.js.map +1 -0
  302. package/dist/src/scripts/merge-utils.d.ts +23 -0
  303. package/dist/src/scripts/merge-utils.d.ts.map +1 -0
  304. package/dist/src/scripts/merge-utils.js +150 -0
  305. package/dist/src/scripts/merge-utils.js.map +1 -0
  306. package/dist/src/scripts/review-categories.d.ts +41 -0
  307. package/dist/src/scripts/review-categories.d.ts.map +1 -0
  308. package/dist/src/scripts/review-categories.js +316 -0
  309. package/dist/src/scripts/review-categories.js.map +1 -0
  310. package/dist/src/scripts/review-lenny-skills.d.ts +26 -0
  311. package/dist/src/scripts/review-lenny-skills.d.ts.map +1 -0
  312. package/dist/src/scripts/review-lenny-skills.js +215 -0
  313. package/dist/src/scripts/review-lenny-skills.js.map +1 -0
  314. package/dist/src/scripts/sync-to-supabase.d.ts +10 -0
  315. package/dist/src/scripts/sync-to-supabase.d.ts.map +1 -0
  316. package/dist/src/scripts/sync-to-supabase.js +93 -0
  317. package/dist/src/scripts/sync-to-supabase.js.map +1 -0
  318. package/dist/src/security/AuditLogger.d.ts +4 -75
  319. package/dist/src/security/AuditLogger.d.ts.map +1 -1
  320. package/dist/src/security/AuditLogger.js +3 -12
  321. package/dist/src/security/AuditLogger.js.map +1 -1
  322. package/dist/src/security/__tests__/pathValidation.test.js.map +1 -1
  323. package/dist/src/security/audit-types.d.ts +96 -0
  324. package/dist/src/security/audit-types.d.ts.map +1 -0
  325. package/dist/src/security/audit-types.js +15 -0
  326. package/dist/src/security/audit-types.js.map +1 -0
  327. package/dist/src/security/sanitization.d.ts +1 -85
  328. package/dist/src/security/sanitization.d.ts.map +1 -1
  329. package/dist/src/security/sanitization.js +2 -133
  330. package/dist/src/security/sanitization.js.map +1 -1
  331. package/dist/src/security/scanner/SecurityScanner.d.ts +12 -88
  332. package/dist/src/security/scanner/SecurityScanner.d.ts.map +1 -1
  333. package/dist/src/security/scanner/SecurityScanner.formatters.d.ts +49 -0
  334. package/dist/src/security/scanner/SecurityScanner.formatters.d.ts.map +1 -0
  335. package/dist/src/security/scanner/SecurityScanner.formatters.js +139 -0
  336. package/dist/src/security/scanner/SecurityScanner.formatters.js.map +1 -0
  337. package/dist/src/security/scanner/SecurityScanner.helpers.d.ts +40 -0
  338. package/dist/src/security/scanner/SecurityScanner.helpers.d.ts.map +1 -0
  339. package/dist/src/security/scanner/SecurityScanner.helpers.js +142 -0
  340. package/dist/src/security/scanner/SecurityScanner.helpers.js.map +1 -0
  341. package/dist/src/security/scanner/SecurityScanner.js +26 -255
  342. package/dist/src/security/scanner/SecurityScanner.js.map +1 -1
  343. package/dist/src/security/stripe-validators.d.ts +92 -0
  344. package/dist/src/security/stripe-validators.d.ts.map +1 -0
  345. package/dist/src/security/stripe-validators.js +139 -0
  346. package/dist/src/security/stripe-validators.js.map +1 -0
  347. package/dist/src/services/SearchService.d.ts +5 -29
  348. package/dist/src/services/SearchService.d.ts.map +1 -1
  349. package/dist/src/services/SearchService.helpers.d.ts +42 -0
  350. package/dist/src/services/SearchService.helpers.d.ts.map +1 -0
  351. package/dist/src/services/SearchService.helpers.js +128 -0
  352. package/dist/src/services/SearchService.helpers.js.map +1 -0
  353. package/dist/src/services/SearchService.js +142 -128
  354. package/dist/src/services/SearchService.js.map +1 -1
  355. package/dist/src/services/SearchService.types.d.ts +53 -0
  356. package/dist/src/services/SearchService.types.d.ts.map +1 -0
  357. package/dist/src/services/SearchService.types.js +7 -0
  358. package/dist/src/services/SearchService.types.js.map +1 -0
  359. package/dist/src/services/SkillAnalyzer.d.ts +37 -0
  360. package/dist/src/services/SkillAnalyzer.d.ts.map +1 -0
  361. package/dist/src/services/SkillAnalyzer.helpers.d.ts +103 -0
  362. package/dist/src/services/SkillAnalyzer.helpers.d.ts.map +1 -0
  363. package/dist/src/services/SkillAnalyzer.helpers.js +237 -0
  364. package/dist/src/services/SkillAnalyzer.helpers.js.map +1 -0
  365. package/dist/src/services/SkillAnalyzer.js +270 -0
  366. package/dist/src/services/SkillAnalyzer.js.map +1 -0
  367. package/dist/src/services/SkillAnalyzer.types.d.ts +110 -0
  368. package/dist/src/services/SkillAnalyzer.types.d.ts.map +1 -0
  369. package/dist/src/services/SkillAnalyzer.types.js +9 -0
  370. package/dist/src/services/SkillAnalyzer.types.js.map +1 -0
  371. package/dist/src/services/SkillDecomposer.d.ts +37 -0
  372. package/dist/src/services/SkillDecomposer.d.ts.map +1 -0
  373. package/dist/src/services/SkillDecomposer.helpers.d.ts +75 -0
  374. package/dist/src/services/SkillDecomposer.helpers.d.ts.map +1 -0
  375. package/dist/src/services/SkillDecomposer.helpers.js +277 -0
  376. package/dist/src/services/SkillDecomposer.helpers.js.map +1 -0
  377. package/dist/src/services/SkillDecomposer.js +116 -0
  378. package/dist/src/services/SkillDecomposer.js.map +1 -0
  379. package/dist/src/services/SkillDecomposer.types.d.ts +104 -0
  380. package/dist/src/services/SkillDecomposer.types.d.ts.map +1 -0
  381. package/dist/src/services/SkillDecomposer.types.js +9 -0
  382. package/dist/src/services/SkillDecomposer.types.js.map +1 -0
  383. package/dist/src/services/SubagentGenerator.d.ts +77 -0
  384. package/dist/src/services/SubagentGenerator.d.ts.map +1 -0
  385. package/dist/src/services/SubagentGenerator.js +352 -0
  386. package/dist/src/services/SubagentGenerator.js.map +1 -0
  387. package/dist/src/services/TaskRunner.d.ts +227 -0
  388. package/dist/src/services/TaskRunner.d.ts.map +1 -0
  389. package/dist/src/services/TaskRunner.js +423 -0
  390. package/dist/src/services/TaskRunner.js.map +1 -0
  391. package/dist/src/services/TransformationService.d.ts +167 -0
  392. package/dist/src/services/TransformationService.d.ts.map +1 -0
  393. package/dist/src/services/TransformationService.js +315 -0
  394. package/dist/src/services/TransformationService.js.map +1 -0
  395. package/dist/src/services/__tests__/SkillAnalyzer.test.d.ts +6 -0
  396. package/dist/src/services/__tests__/SkillAnalyzer.test.d.ts.map +1 -0
  397. package/dist/src/services/__tests__/SkillAnalyzer.test.js +177 -0
  398. package/dist/src/services/__tests__/SkillAnalyzer.test.js.map +1 -0
  399. package/dist/src/services/__tests__/SkillDecomposer.test.d.ts +6 -0
  400. package/dist/src/services/__tests__/SkillDecomposer.test.d.ts.map +1 -0
  401. package/dist/src/services/__tests__/SkillDecomposer.test.js +235 -0
  402. package/dist/src/services/__tests__/SkillDecomposer.test.js.map +1 -0
  403. package/dist/src/services/__tests__/SubagentGenerator.test.d.ts +6 -0
  404. package/dist/src/services/__tests__/SubagentGenerator.test.d.ts.map +1 -0
  405. package/dist/src/services/__tests__/SubagentGenerator.test.js +174 -0
  406. package/dist/src/services/__tests__/SubagentGenerator.test.js.map +1 -0
  407. package/dist/src/services/__tests__/TaskRunner.test.d.ts +7 -0
  408. package/dist/src/services/__tests__/TaskRunner.test.d.ts.map +1 -0
  409. package/dist/src/services/__tests__/TaskRunner.test.js +316 -0
  410. package/dist/src/services/__tests__/TaskRunner.test.js.map +1 -0
  411. package/dist/src/services/__tests__/TransformationService.test.d.ts +6 -0
  412. package/dist/src/services/__tests__/TransformationService.test.d.ts.map +1 -0
  413. package/dist/src/services/__tests__/TransformationService.test.js +244 -0
  414. package/dist/src/services/__tests__/TransformationService.test.js.map +1 -0
  415. package/dist/src/session/SessionContext.js +1 -1
  416. package/dist/src/session/SessionContext.js.map +1 -1
  417. package/dist/src/session/SessionManager.d.ts +3 -67
  418. package/dist/src/session/SessionManager.d.ts.map +1 -1
  419. package/dist/src/session/SessionManager.helpers.d.ts +68 -0
  420. package/dist/src/session/SessionManager.helpers.d.ts.map +1 -0
  421. package/dist/src/session/SessionManager.helpers.js +152 -0
  422. package/dist/src/session/SessionManager.helpers.js.map +1 -0
  423. package/dist/src/session/SessionManager.js +58 -163
  424. package/dist/src/session/SessionManager.js.map +1 -1
  425. package/dist/src/session/SessionManager.types.d.ts +88 -0
  426. package/dist/src/session/SessionManager.types.d.ts.map +1 -0
  427. package/dist/src/session/SessionManager.types.js +27 -0
  428. package/dist/src/session/SessionManager.types.js.map +1 -0
  429. package/dist/src/session/SessionRecovery.d.ts.map +1 -1
  430. package/dist/src/session/SessionRecovery.js +3 -2
  431. package/dist/src/session/SessionRecovery.js.map +1 -1
  432. package/dist/src/sources/RawUrlSourceAdapter.js.map +1 -1
  433. package/dist/src/sources/SourceAdapterRegistry.js +1 -1
  434. package/dist/src/sources/SourceAdapterRegistry.js.map +1 -1
  435. package/dist/src/telemetry/metric-helpers.d.ts +47 -0
  436. package/dist/src/telemetry/metric-helpers.d.ts.map +1 -0
  437. package/dist/src/telemetry/metric-helpers.js +96 -0
  438. package/dist/src/telemetry/metric-helpers.js.map +1 -0
  439. package/dist/src/telemetry/metric-types.d.ts +73 -0
  440. package/dist/src/telemetry/metric-types.d.ts.map +1 -0
  441. package/dist/src/telemetry/metric-types.js +9 -0
  442. package/dist/src/telemetry/metric-types.js.map +1 -0
  443. package/dist/src/telemetry/metrics.d.ts +8 -119
  444. package/dist/src/telemetry/metrics.d.ts.map +1 -1
  445. package/dist/src/telemetry/metrics.js +20 -193
  446. package/dist/src/telemetry/metrics.js.map +1 -1
  447. package/dist/src/telemetry/span-utils.d.ts +30 -0
  448. package/dist/src/telemetry/span-utils.d.ts.map +1 -0
  449. package/dist/src/telemetry/span-utils.js +62 -0
  450. package/dist/src/telemetry/span-utils.js.map +1 -0
  451. package/dist/src/telemetry/tracer-types.d.ts +91 -0
  452. package/dist/src/telemetry/tracer-types.d.ts.map +1 -0
  453. package/dist/src/telemetry/tracer-types.js +6 -0
  454. package/dist/src/telemetry/tracer-types.js.map +1 -0
  455. package/dist/src/telemetry/tracer.d.ts +5 -122
  456. package/dist/src/telemetry/tracer.d.ts.map +1 -1
  457. package/dist/src/telemetry/tracer.js +24 -170
  458. package/dist/src/telemetry/tracer.js.map +1 -1
  459. package/dist/src/testing/MultiLLMProvider.d.ts +17 -293
  460. package/dist/src/testing/MultiLLMProvider.d.ts.map +1 -1
  461. package/dist/src/testing/MultiLLMProvider.helpers.d.ts +54 -0
  462. package/dist/src/testing/MultiLLMProvider.helpers.d.ts.map +1 -0
  463. package/dist/src/testing/MultiLLMProvider.helpers.js +126 -0
  464. package/dist/src/testing/MultiLLMProvider.helpers.js.map +1 -0
  465. package/dist/src/testing/MultiLLMProvider.js +50 -323
  466. package/dist/src/testing/MultiLLMProvider.js.map +1 -1
  467. package/dist/src/testing/MultiLLMProvider.types.d.ts +253 -0
  468. package/dist/src/testing/MultiLLMProvider.types.d.ts.map +1 -0
  469. package/dist/src/testing/MultiLLMProvider.types.js +111 -0
  470. package/dist/src/testing/MultiLLMProvider.types.js.map +1 -0
  471. package/dist/src/triggers/TriggerDetector.d.ts +6 -142
  472. package/dist/src/triggers/TriggerDetector.d.ts.map +1 -1
  473. package/dist/src/triggers/TriggerDetector.js +15 -247
  474. package/dist/src/triggers/TriggerDetector.js.map +1 -1
  475. package/dist/src/triggers/__tests__/TriggerDetector.test.js +1 -1
  476. package/dist/src/triggers/__tests__/TriggerDetector.test.js.map +1 -1
  477. package/dist/src/triggers/trigger-constants.d.ts +22 -0
  478. package/dist/src/triggers/trigger-constants.d.ts.map +1 -0
  479. package/dist/src/triggers/trigger-constants.js +185 -0
  480. package/dist/src/triggers/trigger-constants.js.map +1 -0
  481. package/dist/src/triggers/trigger-types.d.ts +90 -0
  482. package/dist/src/triggers/trigger-types.d.ts.map +1 -0
  483. package/dist/src/triggers/trigger-types.js +6 -0
  484. package/dist/src/triggers/trigger-types.js.map +1 -0
  485. package/dist/src/types/skill.d.ts +33 -1
  486. package/dist/src/types/skill.d.ts.map +1 -1
  487. package/dist/src/types/skill.js +11 -1
  488. package/dist/src/types/skill.js.map +1 -1
  489. package/dist/src/types.d.ts +28 -2
  490. package/dist/src/types.d.ts.map +1 -1
  491. package/dist/src/types.js +1 -0
  492. package/dist/src/types.js.map +1 -1
  493. package/dist/src/utils/retry.js +2 -2
  494. package/dist/src/utils/retry.js.map +1 -1
  495. package/dist/src/validation/index.d.ts +5 -105
  496. package/dist/src/validation/index.d.ts.map +1 -1
  497. package/dist/src/validation/index.js +9 -421
  498. package/dist/src/validation/index.js.map +1 -1
  499. package/dist/src/validation/input-validators.d.ts +68 -0
  500. package/dist/src/validation/input-validators.d.ts.map +1 -0
  501. package/dist/src/validation/input-validators.js +126 -0
  502. package/dist/src/validation/input-validators.js.map +1 -0
  503. package/dist/src/validation/path-validators.d.ts +23 -0
  504. package/dist/src/validation/path-validators.d.ts.map +1 -0
  505. package/dist/src/validation/path-validators.js +47 -0
  506. package/dist/src/validation/path-validators.js.map +1 -0
  507. package/dist/src/validation/url-validators.d.ts +55 -0
  508. package/dist/src/validation/url-validators.d.ts.map +1 -0
  509. package/dist/src/validation/url-validators.js +267 -0
  510. package/dist/src/validation/url-validators.js.map +1 -0
  511. package/dist/src/validation/validation-error.d.ts +14 -0
  512. package/dist/src/validation/validation-error.d.ts.map +1 -0
  513. package/dist/src/validation/validation-error.js +19 -0
  514. package/dist/src/validation/validation-error.js.map +1 -0
  515. package/dist/src/webhooks/WebhookHandler.d.ts.map +1 -1
  516. package/dist/src/webhooks/WebhookHandler.js.map +1 -1
  517. package/dist/src/webhooks/WebhookPayload.d.ts +4 -215
  518. package/dist/src/webhooks/WebhookPayload.d.ts.map +1 -1
  519. package/dist/src/webhooks/WebhookPayload.js +1 -122
  520. package/dist/src/webhooks/WebhookPayload.js.map +1 -1
  521. package/dist/src/webhooks/WebhookQueue.d.ts +2 -140
  522. package/dist/src/webhooks/WebhookQueue.d.ts.map +1 -1
  523. package/dist/src/webhooks/WebhookQueue.js +4 -11
  524. package/dist/src/webhooks/WebhookQueue.js.map +1 -1
  525. package/dist/src/webhooks/WebhookQueue.types.d.ts +149 -0
  526. package/dist/src/webhooks/WebhookQueue.types.d.ts.map +1 -0
  527. package/dist/src/webhooks/WebhookQueue.types.js +10 -0
  528. package/dist/src/webhooks/WebhookQueue.types.js.map +1 -0
  529. package/dist/src/webhooks/WebhookQueue.utils.d.ts +44 -0
  530. package/dist/src/webhooks/WebhookQueue.utils.d.ts.map +1 -0
  531. package/dist/src/webhooks/WebhookQueue.utils.js +58 -0
  532. package/dist/src/webhooks/WebhookQueue.utils.js.map +1 -0
  533. package/dist/src/webhooks/webhook-schemas.d.ts +213 -0
  534. package/dist/src/webhooks/webhook-schemas.d.ts.map +1 -0
  535. package/dist/src/webhooks/webhook-schemas.js +132 -0
  536. package/dist/src/webhooks/webhook-schemas.js.map +1 -0
  537. package/dist/src/webhooks/webhook-types.d.ts +222 -0
  538. package/dist/src/webhooks/webhook-types.d.ts.map +1 -0
  539. package/dist/src/webhooks/webhook-types.js +10 -0
  540. package/dist/src/webhooks/webhook-types.js.map +1 -0
  541. package/dist/tests/Analytics.integration.test.js +2 -2
  542. package/dist/tests/Analytics.integration.test.js.map +1 -1
  543. package/dist/tests/AnalyticsRepository.test.js +3 -5
  544. package/dist/tests/AnalyticsRepository.test.js.map +1 -1
  545. package/dist/tests/AnalyticsStorage.test.js.map +1 -1
  546. package/dist/tests/ApiPartialResponses.test.d.ts +12 -0
  547. package/dist/tests/ApiPartialResponses.test.d.ts.map +1 -0
  548. package/dist/tests/ApiPartialResponses.test.js +202 -0
  549. package/dist/tests/ApiPartialResponses.test.js.map +1 -0
  550. package/dist/tests/AuditLogger.test.js.map +1 -1
  551. package/dist/tests/BenchmarkRunner.test.js +6 -6
  552. package/dist/tests/BenchmarkRunner.test.js.map +1 -1
  553. package/dist/tests/CacheSecurity.test.js.map +1 -1
  554. package/dist/tests/CodebaseAnalyzer.test.js.map +1 -1
  555. package/dist/tests/DailyIndexPipeline.test.js.map +1 -1
  556. package/dist/tests/EmbeddingService.test.js.map +1 -1
  557. package/dist/tests/GitHubIndexer.test.js +4 -3
  558. package/dist/tests/GitHubIndexer.test.js.map +1 -1
  559. package/dist/tests/MemoryProfiler.test.js +3 -3
  560. package/dist/tests/MemoryProfiler.test.js.map +1 -1
  561. package/dist/tests/QualityScorer.test.js.map +1 -1
  562. package/dist/tests/RateLimiter.test.js.map +1 -1
  563. package/dist/tests/ScraperAdapters.test.js.map +1 -1
  564. package/dist/tests/SecurityScanner.test.js +4 -4
  565. package/dist/tests/SecurityScanner.test.js.map +1 -1
  566. package/dist/tests/SessionManager.security.test.js +1 -1
  567. package/dist/tests/SessionManager.security.test.js.map +1 -1
  568. package/dist/tests/SessionManager.test.js +4 -4
  569. package/dist/tests/SessionManager.test.js.map +1 -1
  570. package/dist/tests/SwarmIndexer.test.js +1 -1
  571. package/dist/tests/SwarmIndexer.test.js.map +1 -1
  572. package/dist/tests/TieredCache.test.js +2 -11
  573. package/dist/tests/TieredCache.test.js.map +1 -1
  574. package/dist/tests/WebhookHandler.test.js.map +1 -1
  575. package/dist/tests/fixtures/api-responses/index.d.ts +119 -0
  576. package/dist/tests/fixtures/api-responses/index.d.ts.map +1 -0
  577. package/dist/tests/fixtures/api-responses/index.js +419 -0
  578. package/dist/tests/fixtures/api-responses/index.js.map +1 -0
  579. package/dist/tests/integration/neural/neural-fixtures.d.ts +19 -0
  580. package/dist/tests/integration/neural/neural-fixtures.d.ts.map +1 -0
  581. package/dist/tests/integration/neural/neural-fixtures.js +49 -0
  582. package/dist/tests/integration/neural/neural-fixtures.js.map +1 -0
  583. package/dist/tests/integration/neural/neural-mocks-privacy.d.ts +78 -0
  584. package/dist/tests/integration/neural/neural-mocks-privacy.d.ts.map +1 -0
  585. package/dist/tests/integration/neural/neural-mocks-privacy.js +146 -0
  586. package/dist/tests/integration/neural/neural-mocks-privacy.js.map +1 -0
  587. package/dist/tests/integration/neural/neural-mocks.d.ts +90 -0
  588. package/dist/tests/integration/neural/neural-mocks.d.ts.map +1 -0
  589. package/dist/tests/integration/neural/neural-mocks.js +288 -0
  590. package/dist/tests/integration/neural/neural-mocks.js.map +1 -0
  591. package/dist/tests/integration/neural/neural-test-utils.d.ts +27 -0
  592. package/dist/tests/integration/neural/neural-test-utils.d.ts.map +1 -0
  593. package/dist/tests/integration/neural/neural-test-utils.js +35 -0
  594. package/dist/tests/integration/neural/neural-test-utils.js.map +1 -0
  595. package/dist/tests/integration/neural/setup.d.ts +6 -165
  596. package/dist/tests/integration/neural/setup.d.ts.map +1 -1
  597. package/dist/tests/integration/neural/setup.js +9 -477
  598. package/dist/tests/integration/neural/setup.js.map +1 -1
  599. package/dist/tests/logger.test.js +1 -1
  600. package/dist/tests/logger.test.js.map +1 -1
  601. package/dist/tests/performance/LargeScalePerformance.test.js +1 -1
  602. package/dist/tests/performance/LargeScalePerformance.test.js.map +1 -1
  603. package/dist/tests/sanitization.test.js.map +1 -1
  604. package/dist/tests/session/SessionManager.helpers.test.d.ts +8 -0
  605. package/dist/tests/session/SessionManager.helpers.test.d.ts.map +1 -0
  606. package/dist/tests/session/SessionManager.helpers.test.js +105 -0
  607. package/dist/tests/session/SessionManager.helpers.test.js.map +1 -0
  608. package/dist/tests/sources.test.js.map +1 -1
  609. package/dist/tests/webhooks/WebhookHandler.idempotency.test.js +1 -1
  610. package/dist/tests/webhooks/WebhookHandler.idempotency.test.js.map +1 -1
  611. package/dist/tests/webhooks/WebhookPayload.security.test.js.map +1 -1
  612. package/package.json +11 -11
@@ -1,568 +1,58 @@
1
1
  /**
2
2
  * SMI-1519: HNSW Embedding Store
3
3
  *
4
- * High-performance vector storage using HNSW (Hierarchical Navigable Small World)
5
- * index for fast approximate nearest neighbor (ANN) search.
6
- *
7
- * Features:
8
- * - O(log n) similarity search vs O(n) brute-force (150x faster)
9
- * - SQLite for metadata persistence (skill_id, text, created_at)
10
- * - Graceful fallback to brute-force if HNSW unavailable
11
- * - Compatible with existing EmbeddingService interface
12
- * - Uses claude-flow V3 VectorDB API with automatic fallback
13
- *
14
- * Enable via environment variable: SKILLSMITH_USE_HNSW=true
4
+ * High-performance vector storage using HNSW index for fast ANN search.
5
+ * Uses claude-flow V3 VectorDB API with automatic fallback to brute-force.
15
6
  *
7
+ * Enable via: SKILLSMITH_USE_HNSW=true
16
8
  * @see ADR-009: Embedding Service Fallback Strategy
17
9
  */
18
10
  import type { SimilarityResult } from './index.js';
19
- /**
20
- * Type definitions for hnswlib-node (not published on DefinitelyTyped)
21
- * These are minimal declarations for the parts we use.
22
- *
23
- * @see https://github.com/yoshoku/hnswlib-node
24
- */
25
- export interface HierarchicalNSW {
26
- initIndex(maxElements: number, m?: number, efConstruction?: number): void;
27
- loadIndex(path: string, allowReplaceDeleted?: boolean): void;
28
- saveIndex(path: string): void;
29
- addPoint(point: number[] | Float32Array, label: number, replaceDeleted?: boolean): void;
30
- markDelete(label: number): void;
31
- searchKnn(query: number[] | Float32Array, k: number, filter?: (label: number) => boolean): HNSWSearchResult;
32
- getMaxElements(): number;
33
- getCurrentCount(): number;
34
- getEfSearch(): number;
35
- setEfSearch(ef: number): void;
36
- getIdsList(): number[];
37
- }
38
- /**
39
- * Result from HNSW k-nearest neighbor search
40
- */
41
- export interface HNSWSearchResult {
42
- /** Labels (IDs) of the nearest neighbors */
43
- neighbors: number[];
44
- /** Distances to each neighbor (lower = closer) */
45
- distances: number[];
46
- }
47
- /**
48
- * Constructor type for HierarchicalNSW
49
- */
50
- export interface HierarchicalNSWConstructor {
51
- new (space: 'cosine' | 'l2' | 'ip', dim: number): HierarchicalNSW;
52
- }
53
- /**
54
- * HNSW algorithm parameters for tuning search quality vs speed.
55
- *
56
- * @see https://github.com/nmslib/hnswlib/blob/master/ALGO_PARAMS.md
57
- */
58
- export interface HNSWConfig {
59
- /**
60
- * Number of bidirectional links per node (M parameter).
61
- * Higher values = better recall but more memory/slower builds.
62
- *
63
- * - 8-16: Fast, lower memory, suitable for <100k vectors
64
- * - 16-32: Balanced, good for 100k-1M vectors
65
- * - 32-64: High recall, suitable for >1M vectors or high accuracy needs
66
- *
67
- * @default 16
68
- */
69
- m: number;
70
- /**
71
- * Size of dynamic candidate list during index construction.
72
- * Higher values = better index quality but slower builds.
73
- *
74
- * - 100-200: Fast builds, acceptable quality
75
- * - 200-400: Balanced
76
- * - 400-500: High quality, slower builds
77
- *
78
- * @default 200
79
- */
80
- efConstruction: number;
81
- /**
82
- * Size of dynamic candidate list during search.
83
- * Higher values = better recall but slower search.
84
- *
85
- * - 10-50: Fast search, may miss some neighbors
86
- * - 50-100: Balanced
87
- * - 100-200: High recall, slower search
88
- *
89
- * Must be >= topK for accurate results.
90
- *
91
- * @default 100
92
- */
93
- efSearch: number;
94
- /**
95
- * Vector dimensionality. Must match embedding model output.
96
- * - 384 for all-MiniLM-L6-v2
97
- * - 768 for all-mpnet-base-v2
98
- *
99
- * @default 384
100
- */
101
- dimensions: number;
102
- }
103
- /**
104
- * Options for HNSWEmbeddingStore initialization
105
- */
106
- export interface HNSWEmbeddingStoreOptions {
107
- /**
108
- * Path to SQLite database for metadata storage.
109
- * If not provided, uses in-memory database.
110
- */
111
- dbPath?: string;
112
- /**
113
- * Path to HNSW index file for persistence.
114
- * If not provided, index is built fresh on each startup.
115
- */
116
- indexPath?: string;
117
- /**
118
- * HNSW algorithm configuration.
119
- * Uses sensible defaults if not provided.
120
- */
121
- hnswConfig?: Partial<HNSWConfig>;
122
- /**
123
- * Maximum number of elements the index can hold.
124
- * Index will reject inserts once limit is reached.
125
- *
126
- * @default 100000
127
- */
128
- maxElements?: number;
129
- /**
130
- * Distance metric for similarity calculation.
131
- * - 'cosine': Cosine similarity (default, best for normalized embeddings)
132
- * - 'l2': Euclidean distance
133
- * - 'ip': Inner product
134
- *
135
- * @default 'cosine'
136
- */
137
- distanceMetric?: 'cosine' | 'l2' | 'ip';
138
- /**
139
- * Force fallback to brute-force search (for testing or compatibility).
140
- * If not specified, checks SKILLSMITH_USE_HNSW env var.
141
- *
142
- * When true, uses HNSW. When false, falls back to brute-force.
143
- *
144
- * @default undefined (auto-detect from environment)
145
- */
146
- useHNSW?: boolean;
147
- /**
148
- * Enable automatic index persistence.
149
- * When true, saves index to indexPath after each insert.
150
- * When false, must call saveIndex() manually.
151
- *
152
- * @default false
153
- */
154
- autoSave?: boolean;
155
- }
156
- /**
157
- * Statistics about the HNSW index
158
- */
159
- export interface HNSWIndexStats {
160
- /** Number of vectors currently stored */
161
- vectorCount: number;
162
- /** Maximum capacity of the index */
163
- maxCapacity: number;
164
- /** Utilization percentage (vectorCount / maxCapacity * 100) */
165
- utilizationPercent: number;
166
- /** Current M parameter */
167
- m: number;
168
- /** Current efConstruction parameter */
169
- efConstruction: number;
170
- /** Current efSearch parameter */
171
- efSearch: number;
172
- /** Vector dimensionality */
173
- dimensions: number;
174
- /** Approximate memory usage in bytes */
175
- memoryUsageBytes: number;
176
- /** Whether using HNSW (true) or brute-force fallback (false) */
177
- isHNSWEnabled: boolean;
178
- /** Path to index file (if persistent) */
179
- indexPath?: string;
180
- }
181
- /**
182
- * Result of a batch insert operation
183
- */
184
- export interface BatchInsertResult {
185
- /** Number of vectors successfully inserted */
186
- inserted: number;
187
- /** Number of vectors that were updates (already existed) */
188
- updated: number;
189
- /** Number of vectors that failed to insert */
190
- failed: number;
191
- /** Skill IDs that failed with their error messages */
192
- errors: Array<{
193
- skillId: string;
194
- error: string;
195
- }>;
196
- /** Total time taken in milliseconds */
197
- durationMs: number;
198
- }
199
- /**
200
- * Interface for embedding storage with similarity search.
201
- * Implemented by both HNSWEmbeddingStore and EmbeddingService for compatibility.
202
- */
203
- export interface IEmbeddingStore {
204
- /**
205
- * Store an embedding with its metadata.
206
- *
207
- * @param skillId - Unique identifier for the skill
208
- * @param embedding - Vector embedding (Float32Array)
209
- * @param text - Original text that was embedded
210
- */
211
- storeEmbedding(skillId: string, embedding: Float32Array, text: string): void;
212
- /**
213
- * Retrieve a stored embedding by skill ID.
214
- *
215
- * @param skillId - Unique identifier for the skill
216
- * @returns The embedding if found, null otherwise
217
- */
218
- getEmbedding(skillId: string): Float32Array | null;
219
- /**
220
- * Get all stored embeddings.
221
- *
222
- * @returns Map of skill IDs to their embeddings
223
- */
224
- getAllEmbeddings(): Map<string, Float32Array>;
225
- /**
226
- * Find most similar embeddings to a query vector.
227
- *
228
- * @param queryEmbedding - Query vector to find neighbors for
229
- * @param topK - Number of results to return (default: 10)
230
- * @returns Array of skill IDs with similarity scores, sorted descending
231
- */
232
- findSimilar(queryEmbedding: Float32Array, topK?: number): SimilarityResult[];
233
- /**
234
- * Compute cosine similarity between two embeddings.
235
- *
236
- * @param a - First embedding
237
- * @param b - Second embedding
238
- * @returns Similarity score between -1 and 1
239
- */
240
- cosineSimilarity(a: Float32Array, b: Float32Array): number;
241
- /**
242
- * Check if running in fallback (brute-force) mode.
243
- *
244
- * @returns true if using brute-force, false if using HNSW
245
- */
246
- isUsingFallback(): boolean;
247
- /**
248
- * Close database connections and release resources.
249
- */
250
- close(): void;
251
- }
252
- /**
253
- * Default HNSW configuration optimized for skill embeddings.
254
- * Tuned for ~10k-100k skills with balanced speed/recall.
255
- */
256
- export declare const DEFAULT_HNSW_CONFIG: HNSWConfig;
257
- /**
258
- * HNSW configuration presets for different use cases
259
- */
260
- export declare const HNSW_PRESETS: {
261
- /** Fast search, lower memory, suitable for <10k vectors */
262
- readonly small: {
263
- m: number;
264
- efConstruction: number;
265
- efSearch: number;
266
- dimensions: number;
267
- };
268
- /** Balanced performance, suitable for 10k-100k vectors */
269
- readonly medium: {
270
- m: number;
271
- efConstruction: number;
272
- efSearch: number;
273
- dimensions: number;
274
- };
275
- /** High recall, suitable for 100k-1M vectors */
276
- readonly large: {
277
- m: number;
278
- efConstruction: number;
279
- efSearch: number;
280
- dimensions: number;
281
- };
282
- /** Maximum recall, suitable for >1M vectors or critical accuracy */
283
- readonly xlarge: {
284
- m: number;
285
- efConstruction: number;
286
- efSearch: number;
287
- dimensions: number;
288
- };
289
- };
11
+ export type { HierarchicalNSW, HNSWSearchResult, HierarchicalNSWConstructor, HNSWConfig, HNSWEmbeddingStoreOptions, HNSWIndexStats, BatchInsertResult, IEmbeddingStore, } from './hnsw-store.types.js';
12
+ export { DEFAULT_HNSW_CONFIG, HNSW_PRESETS } from './hnsw-store.types.js';
13
+ export { createHNSWStore, isHNSWAvailable, loadHNSWLib } from './hnsw-store.helpers.js';
14
+ import type { HNSWConfig, HNSWEmbeddingStoreOptions, HNSWIndexStats, BatchInsertResult, IEmbeddingStore } from './hnsw-store.types.js';
290
15
  /**
291
16
  * High-performance embedding storage using HNSW index.
292
- *
293
- * Provides O(log n) approximate nearest neighbor search while maintaining
294
- * compatibility with the existing EmbeddingService interface.
295
- *
296
- * @example
297
- * ```typescript
298
- * // Basic usage
299
- * const store = new HNSWEmbeddingStore({
300
- * dbPath: './embeddings.db',
301
- * indexPath: './embeddings.hnsw',
302
- * });
303
- *
304
- * // Store embeddings
305
- * store.storeEmbedding('skill-1', embedding1, 'Jest testing framework helper');
306
- * store.storeEmbedding('skill-2', embedding2, 'Vitest testing utilities');
307
- *
308
- * // Find similar
309
- * const results = store.findSimilar(queryEmbedding, 10);
310
- * // [{ skillId: 'skill-1', score: 0.95 }, { skillId: 'skill-2', score: 0.87 }, ...]
311
- *
312
- * // Clean up
313
- * store.close();
314
- * ```
315
- *
316
- * @example
317
- * ```typescript
318
- * // With custom HNSW config for large dataset
319
- * const store = new HNSWEmbeddingStore({
320
- * dbPath: './embeddings.db',
321
- * indexPath: './embeddings.hnsw',
322
- * hnswConfig: HNSW_PRESETS.large,
323
- * maxElements: 500000,
324
- * });
325
- * ```
17
+ * Provides O(log n) approximate nearest neighbor search with SQLite persistence.
326
18
  */
327
19
  export declare class HNSWEmbeddingStore implements IEmbeddingStore {
328
- /** SQLite database for metadata */
329
20
  private db;
330
- /** HNSW index instance (from hnswlib-node) */
331
21
  private index;
332
- /** Whether HNSW is enabled (false = brute-force fallback) */
333
22
  private readonly hnswEnabled;
334
- /** Merged HNSW configuration */
335
23
  private readonly config;
336
- /** Maximum index capacity */
337
24
  private readonly maxElements;
338
- /** Path to HNSW index file */
339
25
  private readonly indexPath;
340
- /** Distance metric */
341
26
  private readonly distanceMetric;
342
- /** Auto-save flag */
343
27
  private readonly autoSave;
344
- /** Map of skill IDs to internal HNSW labels (for reverse lookup) */
345
28
  private skillIdToLabel;
346
- /** Map of HNSW labels to skill IDs */
347
29
  private labelToSkillId;
348
- /** Next available label for HNSW insertion */
349
30
  private nextLabel;
350
- /**
351
- * Create a new HNSWEmbeddingStore instance.
352
- *
353
- * @param options - Configuration options
354
- *
355
- * @example
356
- * ```typescript
357
- * // Default configuration (auto-detects HNSW availability)
358
- * const store = new HNSWEmbeddingStore();
359
- *
360
- * // With persistence
361
- * const store = new HNSWEmbeddingStore({
362
- * dbPath: './embeddings.db',
363
- * indexPath: './embeddings.hnsw',
364
- * });
365
- *
366
- * // Force brute-force fallback
367
- * const store = new HNSWEmbeddingStore({ useHNSW: false });
368
- * ```
369
- */
370
- /** V3 VectorDB instance (if initialized) */
371
31
  private vectorDB;
372
- /** Promise for async initialization */
373
32
  private initPromise;
374
33
  constructor(options?: HNSWEmbeddingStoreOptions);
375
- /**
376
- * Ensure the store is fully initialized.
377
- * Call this before operations that require the HNSW index.
378
- */
379
34
  ensureInitialized(): Promise<void>;
380
- /**
381
- * Store an embedding with its metadata.
382
- *
383
- * Inserts the vector into both HNSW index (for fast search) and
384
- * SQLite (for metadata persistence).
385
- *
386
- * @param skillId - Unique identifier for the skill
387
- * @param embedding - Vector embedding (must match configured dimensions)
388
- * @param text - Original text that was embedded
389
- * @throws Error if embedding dimensions don't match configuration
390
- */
391
35
  storeEmbedding(skillId: string, embedding: Float32Array, text: string): void;
392
- /**
393
- * Retrieve a stored embedding by skill ID.
394
- *
395
- * @param skillId - Unique identifier for the skill
396
- * @returns The embedding if found, null otherwise
397
- */
398
36
  getEmbedding(skillId: string): Float32Array | null;
399
- /**
400
- * Get all stored embeddings.
401
- *
402
- * Note: For large datasets, consider using findSimilar() instead
403
- * to avoid loading all vectors into memory.
404
- *
405
- * @returns Map of skill IDs to their embeddings
406
- */
407
37
  getAllEmbeddings(): Map<string, Float32Array>;
408
- /**
409
- * Find most similar embeddings to a query vector.
410
- *
411
- * Uses HNSW for O(log n) approximate search when available,
412
- * falls back to O(n) brute-force cosine similarity otherwise.
413
- *
414
- * @param queryEmbedding - Query vector (must match configured dimensions)
415
- * @param topK - Number of results to return (default: 10)
416
- * @returns Array of skill IDs with similarity scores, sorted descending
417
- */
418
38
  findSimilar(queryEmbedding: Float32Array, topK?: number): SimilarityResult[];
419
- /**
420
- * Async version of findSimilar for backends that require async search.
421
- *
422
- * @param queryEmbedding - Query vector (must match configured dimensions)
423
- * @param topK - Number of results to return (default: 10)
424
- * @returns Promise resolving to array of skill IDs with similarity scores
425
- */
426
39
  findSimilarAsync(queryEmbedding: Float32Array, topK?: number): Promise<SimilarityResult[]>;
427
- /**
428
- * Compute cosine similarity between two embeddings.
429
- *
430
- * @param a - First embedding
431
- * @param b - Second embedding
432
- * @returns Similarity score between -1 and 1
433
- * @throws Error if embeddings have different dimensions
434
- */
435
40
  cosineSimilarity(a: Float32Array, b: Float32Array): number;
436
- /**
437
- * Check if running in fallback (brute-force) mode.
438
- *
439
- * @returns true if using brute-force, false if using HNSW
440
- */
441
41
  isUsingFallback(): boolean;
442
- /**
443
- * Close database connections and release resources.
444
- *
445
- * Saves HNSW index to disk if indexPath was configured.
446
- * Safe to call multiple times.
447
- */
448
42
  close(): void;
449
- /**
450
- * Get statistics about the HNSW index.
451
- *
452
- * @returns Index statistics including capacity, utilization, and config
453
- */
454
43
  getStats(): HNSWIndexStats;
455
- /**
456
- * Batch insert multiple embeddings efficiently.
457
- *
458
- * More efficient than calling storeEmbedding() in a loop
459
- * due to batched SQLite transactions and HNSW insertions.
460
- *
461
- * @param embeddings - Array of embeddings to insert
462
- * @returns Batch operation result with counts and timing
463
- */
464
44
  batchInsert(embeddings: Array<{
465
45
  skillId: string;
466
46
  embedding: Float32Array;
467
47
  text: string;
468
48
  }>): BatchInsertResult;
469
- /**
470
- * Remove an embedding from the store.
471
- *
472
- * Note: HNSW does not support true deletion. The vector is marked
473
- * as deleted and excluded from search results, but memory is not
474
- * reclaimed until the index is rebuilt.
475
- *
476
- * @param skillId - Unique identifier for the skill to remove
477
- * @returns true if removed, false if not found
478
- */
479
49
  removeEmbedding(skillId: string): boolean;
480
- /**
481
- * Save the HNSW index to disk.
482
- *
483
- * Note: V3 VectorDB manages its own persistence, so this is a no-op
484
- * unless using hnswlib-node directly.
485
- *
486
- * @throws Error if indexPath was not configured
487
- */
488
50
  saveIndex(): void;
489
- /**
490
- * Load the HNSW index from disk.
491
- *
492
- * Note: V3 VectorDB manages its own persistence, so this is a no-op
493
- * unless using hnswlib-node directly.
494
- *
495
- * @throws Error if indexPath was not configured or file doesn't exist
496
- */
497
51
  loadIndex(): void;
498
- /**
499
- * Rebuild the HNSW index from SQLite data.
500
- *
501
- * Useful after many deletions to reclaim memory, or to apply
502
- * new HNSW configuration parameters.
503
- *
504
- * @param newConfig - Optional new HNSW configuration
505
- */
506
52
  rebuildIndex(newConfig?: Partial<HNSWConfig>): Promise<void>;
507
- /**
508
- * Update efSearch parameter at runtime.
509
- *
510
- * Note: V3 VectorDB does not expose efSearch tuning directly.
511
- * This method is provided for API compatibility.
512
- *
513
- * @param efSearch - New efSearch value (must be > 0)
514
- */
515
53
  setEfSearch(efSearch: number): void;
516
- /**
517
- * Determine whether to use HNSW based on explicit option or environment.
518
- */
519
- private shouldUseHNSW;
520
- /**
521
- * Initialize SQLite database and create tables.
522
- */
523
54
  private initDatabase;
524
- /**
525
- * Initialize HNSW index using V3 VectorDB API.
526
- * Falls back gracefully if V3 is unavailable.
527
- */
528
55
  private initHNSWIndex;
529
- /**
530
- * Convert HNSW distance to similarity score.
531
- * HNSW returns distances, we need similarities (higher = more similar).
532
- */
533
56
  private distanceToSimilarity;
534
57
  }
535
- /**
536
- * Create an HNSWEmbeddingStore with a preset configuration.
537
- *
538
- * @param preset - Preset name ('small', 'medium', 'large', 'xlarge')
539
- * @param options - Additional options (merged with preset)
540
- * @returns Configured HNSWEmbeddingStore instance
541
- *
542
- * @example
543
- * ```typescript
544
- * const store = createHNSWStore('large', {
545
- * dbPath: './embeddings.db',
546
- * indexPath: './embeddings.hnsw',
547
- * });
548
- * ```
549
- */
550
- export declare function createHNSWStore(preset: keyof typeof HNSW_PRESETS, options?: Omit<HNSWEmbeddingStoreOptions, 'hnswConfig'>): HNSWEmbeddingStore;
551
- /**
552
- * Check if hnswlib-node is available.
553
- *
554
- * Useful for conditional logic or graceful degradation.
555
- *
556
- * @returns true if hnswlib-node can be loaded
557
- */
558
- export declare function isHNSWAvailable(): Promise<boolean>;
559
- /**
560
- * Dynamically load hnswlib-node module.
561
- *
562
- * @returns The HierarchicalNSW constructor, or null if unavailable
563
- * @internal
564
- */
565
- export declare function loadHNSWLib(): Promise<{
566
- HierarchicalNSW: HierarchicalNSWConstructor;
567
- } | null>;
568
58
  //# sourceMappingURL=hnsw-store.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"hnsw-store.d.ts","sourceRoot":"","sources":["../../../src/embeddings/hnsw-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hnsw-store.d.ts","sourceRoot":"","sources":["../../../src/embeddings/hnsw-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAMlD,YAAY,EACV,eAAe,EACf,gBAAgB,EAChB,0BAA0B,EAC1B,UAAU,EACV,yBAAyB,EACzB,cAAc,EACd,iBAAiB,EACjB,eAAe,GAChB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAGzE,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAGvF,OAAO,KAAK,EACV,UAAU,EACV,yBAAyB,EACzB,cAAc,EACd,iBAAiB,EACjB,eAAe,EAEhB,MAAM,uBAAuB,CAAA;AAI9B;;;GAGG;AACH,qBAAa,kBAAmB,YAAW,eAAe;IACxD,OAAO,CAAC,EAAE,CAA4B;IACtC,OAAO,CAAC,KAAK,CAA+B;IAC5C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAY;IACnC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAQ;IACpC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAoB;IAC9C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAwB;IACvD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,cAAc,CAAiC;IACvD,OAAO,CAAC,cAAc,CAAiC;IACvD,OAAO,CAAC,SAAS,CAAI;IACrB,OAAO,CAAC,QAAQ,CAAwB;IACxC,OAAO,CAAC,WAAW,CAA6B;gBAEpC,OAAO,GAAE,yBAA8B;IAkB7C,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAIxC,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAsB5E,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI;IAalD,gBAAgB,IAAI,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC;IAiB7C,WAAW,CAAC,cAAc,EAAE,YAAY,EAAE,IAAI,GAAE,MAAW,GAAG,gBAAgB,EAAE;IA0B1E,gBAAgB,CACpB,cAAc,EAAE,YAAY,EAC5B,IAAI,GAAE,MAAW,GAChB,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAgB9B,gBAAgB,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,GAAG,MAAM;IAgB1D,eAAe,IAAI,OAAO;IAI1B,KAAK,IAAI,IAAI;IAOb,QAAQ,IAAI,cAAc;IA4B1B,WAAW,CACT,UAAU,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,YAAY,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,GAC5E,iBAAiB;IAqDpB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAmBzC,SAAS,IAAI,IAAI;IAKjB,SAAS,IAAI,IAAI;IAKX,YAAY,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAwBlE,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAOnC,OAAO,CAAC,YAAY;YAcN,aAAa;IAsC3B,OAAO,CAAC,oBAAoB;CAI7B"}
@@ -0,0 +1,83 @@
1
+ /**
2
+ * HNSW Embedding Store Helper Functions
3
+ * @module @skillsmith/core/embeddings/hnsw-store.helpers
4
+ */
5
+ import type { HierarchicalNSWConstructor, HNSWEmbeddingStoreOptions } from './hnsw-store.types.js';
6
+ import { HNSW_PRESETS } from './hnsw-store.types.js';
7
+ import { HNSWEmbeddingStore } from './hnsw-store.js';
8
+ /**
9
+ * Create an HNSWEmbeddingStore with a preset configuration.
10
+ *
11
+ * @param preset - Preset name ('small', 'medium', 'large', 'xlarge')
12
+ * @param options - Additional options (merged with preset)
13
+ * @returns Configured HNSWEmbeddingStore instance
14
+ *
15
+ * @example
16
+ * ```typescript
17
+ * const store = createHNSWStore('large', {
18
+ * dbPath: './embeddings.db',
19
+ * indexPath: './embeddings.hnsw',
20
+ * });
21
+ * ```
22
+ */
23
+ export declare function createHNSWStore(preset: keyof typeof HNSW_PRESETS, options?: Omit<HNSWEmbeddingStoreOptions, 'hnswConfig'>): HNSWEmbeddingStore;
24
+ /**
25
+ * Check if hnswlib-node is available.
26
+ * Useful for conditional logic or graceful degradation.
27
+ *
28
+ * @returns true if hnswlib-node can be loaded
29
+ */
30
+ export declare function isHNSWAvailable(): Promise<boolean>;
31
+ /**
32
+ * Dynamically load hnswlib-node module.
33
+ *
34
+ * @returns The HierarchicalNSW constructor, or null if unavailable
35
+ * @internal
36
+ */
37
+ export declare function loadHNSWLib(): Promise<{
38
+ HierarchicalNSW: HierarchicalNSWConstructor;
39
+ } | null>;
40
+ /**
41
+ * Compute cosine similarity between two embeddings.
42
+ * Standalone version for use outside of HNSWEmbeddingStore.
43
+ *
44
+ * @param a - First embedding
45
+ * @param b - Second embedding
46
+ * @returns Similarity score between -1 and 1
47
+ */
48
+ export declare function computeCosineSimilarity(a: Float32Array, b: Float32Array): number;
49
+ /**
50
+ * Convert HNSW distance to similarity score.
51
+ * HNSW returns distances, we need similarities (higher = more similar).
52
+ *
53
+ * @param distance - Distance value from HNSW
54
+ * @param metric - Distance metric used
55
+ * @returns Similarity score
56
+ */
57
+ export declare function distanceToSimilarity(distance: number, metric?: 'cosine' | 'l2' | 'ip'): number;
58
+ /**
59
+ * Estimate memory usage for an HNSW index.
60
+ *
61
+ * @param vectorCount - Number of vectors
62
+ * @param dimensions - Vector dimensionality
63
+ * @param m - HNSW M parameter
64
+ * @returns Estimated memory usage in bytes
65
+ */
66
+ export declare function estimateMemoryUsage(vectorCount: number, dimensions: number, m: number): number;
67
+ /**
68
+ * Validate embedding dimensions.
69
+ *
70
+ * @param embedding - Embedding to validate
71
+ * @param expectedDimensions - Expected dimension count
72
+ * @param context - Context for error message (default: 'Query')
73
+ * @throws Error if dimensions don't match
74
+ */
75
+ export declare function validateDimensions(embedding: Float32Array, expectedDimensions: number, context?: string): void;
76
+ /**
77
+ * Determine whether to use HNSW based on explicit option or environment.
78
+ *
79
+ * @param explicit - Explicit useHNSW option (if provided)
80
+ * @returns Whether to enable HNSW
81
+ */
82
+ export declare function shouldUseHNSW(explicit?: boolean): boolean;
83
+ //# sourceMappingURL=hnsw-store.helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hnsw-store.helpers.d.ts","sourceRoot":"","sources":["../../../src/embeddings/hnsw-store.helpers.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,0BAA0B,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAA;AAClG,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAMpD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,MAAM,OAAO,YAAY,EACjC,OAAO,GAAE,IAAI,CAAC,yBAAyB,EAAE,YAAY,CAAM,GAC1D,kBAAkB,CAKpB;AAED;;;;;GAKG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,OAAO,CAAC,CAOxD;AAED;;;;;GAKG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC;IAC3C,eAAe,EAAE,0BAA0B,CAAA;CAC5C,GAAG,IAAI,CAAC,CASR;AAMD;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,GAAG,MAAM,CAiBhF;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,MAAM,EAChB,MAAM,GAAE,QAAQ,GAAG,IAAI,GAAG,IAAe,GACxC,MAAM,CAOR;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAI9F;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,YAAY,EACvB,kBAAkB,EAAE,MAAM,EAC1B,OAAO,GAAE,MAAgB,GACxB,IAAI,CAMN;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,QAAQ,CAAC,EAAE,OAAO,GAAG,OAAO,CAYzD"}