@skillsmith/core 0.4.0 → 0.4.1

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 (308) 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/language-detector.d.ts +4 -20
  6. package/dist/src/analysis/language-detector.d.ts.map +1 -1
  7. package/dist/src/analysis/language-detector.js +2 -399
  8. package/dist/src/analysis/language-detector.js.map +1 -1
  9. package/dist/src/analysis/language-detector.patterns.d.ts +17 -0
  10. package/dist/src/analysis/language-detector.patterns.d.ts.map +1 -0
  11. package/dist/src/analysis/language-detector.patterns.js +413 -0
  12. package/dist/src/analysis/language-detector.patterns.js.map +1 -0
  13. package/dist/src/analysis/language-detector.types.d.ts +48 -0
  14. package/dist/src/analysis/language-detector.types.d.ts.map +1 -0
  15. package/dist/src/analysis/language-detector.types.js +6 -0
  16. package/dist/src/analysis/language-detector.types.js.map +1 -0
  17. package/dist/src/analysis/metrics.d.ts +22 -219
  18. package/dist/src/analysis/metrics.d.ts.map +1 -1
  19. package/dist/src/analysis/metrics.implementations.d.ts +39 -0
  20. package/dist/src/analysis/metrics.implementations.d.ts.map +1 -0
  21. package/dist/src/analysis/metrics.implementations.js +114 -0
  22. package/dist/src/analysis/metrics.implementations.js.map +1 -0
  23. package/dist/src/analysis/metrics.js +21 -224
  24. package/dist/src/analysis/metrics.js.map +1 -1
  25. package/dist/src/analysis/metrics.types.d.ts +79 -0
  26. package/dist/src/analysis/metrics.types.d.ts.map +1 -0
  27. package/dist/src/analysis/metrics.types.js +6 -0
  28. package/dist/src/analysis/metrics.types.js.map +1 -0
  29. package/dist/src/analytics/ROIDashboardService.js +4 -2
  30. package/dist/src/analytics/ROIDashboardService.js.map +1 -1
  31. package/dist/src/api/cache.d.ts.map +1 -1
  32. package/dist/src/api/cache.js.map +1 -1
  33. package/dist/src/api/client.d.ts +1 -0
  34. package/dist/src/api/client.d.ts.map +1 -1
  35. package/dist/src/api/client.js +17 -3
  36. package/dist/src/api/client.js.map +1 -1
  37. package/dist/src/api/types.d.ts +1 -1
  38. package/dist/src/api/types.d.ts.map +1 -1
  39. package/dist/src/benchmarks/BenchmarkRunner.d.ts.map +1 -1
  40. package/dist/src/benchmarks/BenchmarkRunner.js +1 -1
  41. package/dist/src/benchmarks/BenchmarkRunner.js.map +1 -1
  42. package/dist/src/billing/BillingService.d.ts +15 -53
  43. package/dist/src/billing/BillingService.d.ts.map +1 -1
  44. package/dist/src/billing/BillingService.helpers.d.ts +15 -0
  45. package/dist/src/billing/BillingService.helpers.d.ts.map +1 -0
  46. package/dist/src/billing/BillingService.helpers.js +45 -0
  47. package/dist/src/billing/BillingService.helpers.js.map +1 -0
  48. package/dist/src/billing/BillingService.js +49 -179
  49. package/dist/src/billing/BillingService.js.map +1 -1
  50. package/dist/src/billing/BillingService.types.d.ts +52 -0
  51. package/dist/src/billing/BillingService.types.d.ts.map +1 -0
  52. package/dist/src/billing/BillingService.types.js +6 -0
  53. package/dist/src/billing/BillingService.types.js.map +1 -0
  54. package/dist/src/billing/StripeClient.d.ts +3 -2
  55. package/dist/src/billing/StripeClient.d.ts.map +1 -1
  56. package/dist/src/billing/StripeClient.js +4 -3
  57. package/dist/src/billing/StripeClient.js.map +1 -1
  58. package/dist/src/billing/StripeWebhookHandler.d.ts +13 -0
  59. package/dist/src/billing/StripeWebhookHandler.d.ts.map +1 -1
  60. package/dist/src/billing/StripeWebhookHandler.js +52 -9
  61. package/dist/src/billing/StripeWebhookHandler.js.map +1 -1
  62. package/dist/src/db/migration.d.ts +129 -0
  63. package/dist/src/db/migration.d.ts.map +1 -0
  64. package/dist/src/db/migration.js +289 -0
  65. package/dist/src/db/migration.js.map +1 -0
  66. package/dist/src/db/schema.d.ts +2 -2
  67. package/dist/src/db/schema.d.ts.map +1 -1
  68. package/dist/src/db/schema.js +23 -1
  69. package/dist/src/db/schema.js.map +1 -1
  70. package/dist/src/embeddings/hnsw-store.d.ts +8 -518
  71. package/dist/src/embeddings/hnsw-store.d.ts.map +1 -1
  72. package/dist/src/embeddings/hnsw-store.helpers.d.ts +83 -0
  73. package/dist/src/embeddings/hnsw-store.helpers.d.ts.map +1 -0
  74. package/dist/src/embeddings/hnsw-store.helpers.js +147 -0
  75. package/dist/src/embeddings/hnsw-store.helpers.js.map +1 -0
  76. package/dist/src/embeddings/hnsw-store.js +66 -517
  77. package/dist/src/embeddings/hnsw-store.js.map +1 -1
  78. package/dist/src/embeddings/hnsw-store.types.d.ts +154 -0
  79. package/dist/src/embeddings/hnsw-store.types.d.ts.map +1 -0
  80. package/dist/src/embeddings/hnsw-store.types.js +26 -0
  81. package/dist/src/embeddings/hnsw-store.types.js.map +1 -0
  82. package/dist/src/errors.d.ts.map +1 -1
  83. package/dist/src/errors.js +1 -1
  84. package/dist/src/errors.js.map +1 -1
  85. package/dist/src/index.d.ts +8 -1
  86. package/dist/src/index.d.ts.map +1 -1
  87. package/dist/src/index.js +18 -0
  88. package/dist/src/index.js.map +1 -1
  89. package/dist/src/indexer/GitHubIndexer.d.ts.map +1 -1
  90. package/dist/src/indexer/GitHubIndexer.js +17 -4
  91. package/dist/src/indexer/GitHubIndexer.js.map +1 -1
  92. package/dist/src/indexer/SwarmIndexer.d.ts.map +1 -1
  93. package/dist/src/indexer/SwarmIndexer.js +1 -1
  94. package/dist/src/indexer/SwarmIndexer.js.map +1 -1
  95. package/dist/src/learning/PatternStore.d.ts +6 -426
  96. package/dist/src/learning/PatternStore.d.ts.map +1 -1
  97. package/dist/src/learning/PatternStore.helpers.d.ts +88 -0
  98. package/dist/src/learning/PatternStore.helpers.d.ts.map +1 -0
  99. package/dist/src/learning/PatternStore.helpers.js +286 -0
  100. package/dist/src/learning/PatternStore.helpers.js.map +1 -0
  101. package/dist/src/learning/PatternStore.js +52 -598
  102. package/dist/src/learning/PatternStore.js.map +1 -1
  103. package/dist/src/learning/PatternStore.queries.d.ts +83 -0
  104. package/dist/src/learning/PatternStore.queries.d.ts.map +1 -0
  105. package/dist/src/learning/PatternStore.queries.js +189 -0
  106. package/dist/src/learning/PatternStore.queries.js.map +1 -0
  107. package/dist/src/learning/PatternStore.types.d.ts +308 -0
  108. package/dist/src/learning/PatternStore.types.d.ts.map +1 -0
  109. package/dist/src/learning/PatternStore.types.js +44 -0
  110. package/dist/src/learning/PatternStore.types.js.map +1 -0
  111. package/dist/src/learning/ReasoningBankIntegration.d.ts +5 -345
  112. package/dist/src/learning/ReasoningBankIntegration.d.ts.map +1 -1
  113. package/dist/src/learning/ReasoningBankIntegration.helpers.d.ts +49 -0
  114. package/dist/src/learning/ReasoningBankIntegration.helpers.d.ts.map +1 -0
  115. package/dist/src/learning/ReasoningBankIntegration.helpers.js +180 -0
  116. package/dist/src/learning/ReasoningBankIntegration.helpers.js.map +1 -0
  117. package/dist/src/learning/ReasoningBankIntegration.js +21 -390
  118. package/dist/src/learning/ReasoningBankIntegration.js.map +1 -1
  119. package/dist/src/learning/ReasoningBankIntegration.types.d.ts +167 -0
  120. package/dist/src/learning/ReasoningBankIntegration.types.d.ts.map +1 -0
  121. package/dist/src/learning/ReasoningBankIntegration.types.js +51 -0
  122. package/dist/src/learning/ReasoningBankIntegration.types.js.map +1 -0
  123. package/dist/src/learning/interfaces.d.ts.map +1 -1
  124. package/dist/src/pipeline/DailyIndexPipeline.js +1 -1
  125. package/dist/src/pipeline/DailyIndexPipeline.js.map +1 -1
  126. package/dist/src/repositories/IndexerRepository.d.ts +1 -0
  127. package/dist/src/repositories/IndexerRepository.d.ts.map +1 -1
  128. package/dist/src/repositories/IndexerRepository.js +6 -0
  129. package/dist/src/repositories/IndexerRepository.js.map +1 -1
  130. package/dist/src/repositories/SkillRepository.d.ts.map +1 -1
  131. package/dist/src/repositories/SkillRepository.js +20 -5
  132. package/dist/src/repositories/SkillRepository.js.map +1 -1
  133. package/dist/src/routing/SONARouter.d.ts +3 -101
  134. package/dist/src/routing/SONARouter.d.ts.map +1 -1
  135. package/dist/src/routing/SONARouter.helpers.d.ts +112 -0
  136. package/dist/src/routing/SONARouter.helpers.d.ts.map +1 -0
  137. package/dist/src/routing/SONARouter.helpers.js +184 -0
  138. package/dist/src/routing/SONARouter.helpers.js.map +1 -0
  139. package/dist/src/routing/SONARouter.js +16 -318
  140. package/dist/src/routing/SONARouter.js.map +1 -1
  141. package/dist/src/scripts/github-import/github-client.js +0 -1
  142. package/dist/src/scripts/github-import/github-client.js.map +1 -1
  143. package/dist/src/scripts/ingest-lenny-skills.d.ts +40 -0
  144. package/dist/src/scripts/ingest-lenny-skills.d.ts.map +1 -0
  145. package/dist/src/scripts/ingest-lenny-skills.js +346 -0
  146. package/dist/src/scripts/ingest-lenny-skills.js.map +1 -0
  147. package/dist/src/scripts/review-lenny-skills.d.ts +25 -0
  148. package/dist/src/scripts/review-lenny-skills.d.ts.map +1 -0
  149. package/dist/src/scripts/review-lenny-skills.js +520 -0
  150. package/dist/src/scripts/review-lenny-skills.js.map +1 -0
  151. package/dist/src/scripts/sync-to-supabase.d.ts +10 -0
  152. package/dist/src/scripts/sync-to-supabase.d.ts.map +1 -0
  153. package/dist/src/scripts/sync-to-supabase.js +93 -0
  154. package/dist/src/scripts/sync-to-supabase.js.map +1 -0
  155. package/dist/src/security/AuditLogger.js +1 -1
  156. package/dist/src/security/AuditLogger.js.map +1 -1
  157. package/dist/src/security/__tests__/pathValidation.test.js.map +1 -1
  158. package/dist/src/security/scanner/SecurityScanner.d.ts +12 -88
  159. package/dist/src/security/scanner/SecurityScanner.d.ts.map +1 -1
  160. package/dist/src/security/scanner/SecurityScanner.formatters.d.ts +49 -0
  161. package/dist/src/security/scanner/SecurityScanner.formatters.d.ts.map +1 -0
  162. package/dist/src/security/scanner/SecurityScanner.formatters.js +139 -0
  163. package/dist/src/security/scanner/SecurityScanner.formatters.js.map +1 -0
  164. package/dist/src/security/scanner/SecurityScanner.helpers.d.ts +40 -0
  165. package/dist/src/security/scanner/SecurityScanner.helpers.d.ts.map +1 -0
  166. package/dist/src/security/scanner/SecurityScanner.helpers.js +142 -0
  167. package/dist/src/security/scanner/SecurityScanner.helpers.js.map +1 -0
  168. package/dist/src/security/scanner/SecurityScanner.js +26 -255
  169. package/dist/src/security/scanner/SecurityScanner.js.map +1 -1
  170. package/dist/src/services/SearchService.d.ts +5 -0
  171. package/dist/src/services/SearchService.d.ts.map +1 -1
  172. package/dist/src/services/SearchService.js +143 -11
  173. package/dist/src/services/SearchService.js.map +1 -1
  174. package/dist/src/services/SkillAnalyzer.d.ts +117 -0
  175. package/dist/src/services/SkillAnalyzer.d.ts.map +1 -0
  176. package/dist/src/services/SkillAnalyzer.js +421 -0
  177. package/dist/src/services/SkillAnalyzer.js.map +1 -0
  178. package/dist/src/services/SkillDecomposer.d.ts +103 -0
  179. package/dist/src/services/SkillDecomposer.d.ts.map +1 -0
  180. package/dist/src/services/SkillDecomposer.js +359 -0
  181. package/dist/src/services/SkillDecomposer.js.map +1 -0
  182. package/dist/src/services/SubagentGenerator.d.ts +68 -0
  183. package/dist/src/services/SubagentGenerator.d.ts.map +1 -0
  184. package/dist/src/services/SubagentGenerator.js +319 -0
  185. package/dist/src/services/SubagentGenerator.js.map +1 -0
  186. package/dist/src/services/TransformationService.d.ts +163 -0
  187. package/dist/src/services/TransformationService.d.ts.map +1 -0
  188. package/dist/src/services/TransformationService.js +291 -0
  189. package/dist/src/services/TransformationService.js.map +1 -0
  190. package/dist/src/services/__tests__/SkillAnalyzer.test.d.ts +6 -0
  191. package/dist/src/services/__tests__/SkillAnalyzer.test.d.ts.map +1 -0
  192. package/dist/src/services/__tests__/SkillAnalyzer.test.js +177 -0
  193. package/dist/src/services/__tests__/SkillAnalyzer.test.js.map +1 -0
  194. package/dist/src/services/__tests__/SkillDecomposer.test.d.ts +6 -0
  195. package/dist/src/services/__tests__/SkillDecomposer.test.d.ts.map +1 -0
  196. package/dist/src/services/__tests__/SkillDecomposer.test.js +235 -0
  197. package/dist/src/services/__tests__/SkillDecomposer.test.js.map +1 -0
  198. package/dist/src/services/__tests__/SubagentGenerator.test.d.ts +6 -0
  199. package/dist/src/services/__tests__/SubagentGenerator.test.d.ts.map +1 -0
  200. package/dist/src/services/__tests__/SubagentGenerator.test.js +174 -0
  201. package/dist/src/services/__tests__/SubagentGenerator.test.js.map +1 -0
  202. package/dist/src/services/__tests__/TransformationService.test.d.ts +6 -0
  203. package/dist/src/services/__tests__/TransformationService.test.d.ts.map +1 -0
  204. package/dist/src/services/__tests__/TransformationService.test.js +242 -0
  205. package/dist/src/services/__tests__/TransformationService.test.js.map +1 -0
  206. package/dist/src/session/SessionContext.js +1 -1
  207. package/dist/src/session/SessionContext.js.map +1 -1
  208. package/dist/src/session/SessionManager.d.ts +3 -67
  209. package/dist/src/session/SessionManager.d.ts.map +1 -1
  210. package/dist/src/session/SessionManager.helpers.d.ts +68 -0
  211. package/dist/src/session/SessionManager.helpers.d.ts.map +1 -0
  212. package/dist/src/session/SessionManager.helpers.js +152 -0
  213. package/dist/src/session/SessionManager.helpers.js.map +1 -0
  214. package/dist/src/session/SessionManager.js +58 -163
  215. package/dist/src/session/SessionManager.js.map +1 -1
  216. package/dist/src/session/SessionManager.types.d.ts +88 -0
  217. package/dist/src/session/SessionManager.types.d.ts.map +1 -0
  218. package/dist/src/session/SessionManager.types.js +27 -0
  219. package/dist/src/session/SessionManager.types.js.map +1 -0
  220. package/dist/src/session/SessionRecovery.d.ts.map +1 -1
  221. package/dist/src/session/SessionRecovery.js +3 -2
  222. package/dist/src/session/SessionRecovery.js.map +1 -1
  223. package/dist/src/sources/RawUrlSourceAdapter.js.map +1 -1
  224. package/dist/src/sources/SourceAdapterRegistry.js +1 -1
  225. package/dist/src/sources/SourceAdapterRegistry.js.map +1 -1
  226. package/dist/src/telemetry/tracer.d.ts.map +1 -1
  227. package/dist/src/telemetry/tracer.js +2 -3
  228. package/dist/src/telemetry/tracer.js.map +1 -1
  229. package/dist/src/testing/MultiLLMProvider.d.ts +17 -293
  230. package/dist/src/testing/MultiLLMProvider.d.ts.map +1 -1
  231. package/dist/src/testing/MultiLLMProvider.helpers.d.ts +54 -0
  232. package/dist/src/testing/MultiLLMProvider.helpers.d.ts.map +1 -0
  233. package/dist/src/testing/MultiLLMProvider.helpers.js +126 -0
  234. package/dist/src/testing/MultiLLMProvider.helpers.js.map +1 -0
  235. package/dist/src/testing/MultiLLMProvider.js +50 -323
  236. package/dist/src/testing/MultiLLMProvider.js.map +1 -1
  237. package/dist/src/testing/MultiLLMProvider.types.d.ts +253 -0
  238. package/dist/src/testing/MultiLLMProvider.types.d.ts.map +1 -0
  239. package/dist/src/testing/MultiLLMProvider.types.js +111 -0
  240. package/dist/src/testing/MultiLLMProvider.types.js.map +1 -0
  241. package/dist/src/triggers/__tests__/TriggerDetector.test.js +1 -1
  242. package/dist/src/triggers/__tests__/TriggerDetector.test.js.map +1 -1
  243. package/dist/src/types/skill.d.ts +29 -0
  244. package/dist/src/types/skill.d.ts.map +1 -1
  245. package/dist/src/types/skill.js +11 -1
  246. package/dist/src/types/skill.js.map +1 -1
  247. package/dist/src/types.d.ts +22 -0
  248. package/dist/src/types.d.ts.map +1 -1
  249. package/dist/src/utils/retry.js +2 -2
  250. package/dist/src/utils/retry.js.map +1 -1
  251. package/dist/src/validation/index.js +2 -2
  252. package/dist/src/validation/index.js.map +1 -1
  253. package/dist/src/webhooks/WebhookHandler.d.ts.map +1 -1
  254. package/dist/src/webhooks/WebhookHandler.js.map +1 -1
  255. package/dist/src/webhooks/WebhookPayload.js +1 -1
  256. package/dist/src/webhooks/WebhookPayload.js.map +1 -1
  257. package/dist/tests/Analytics.integration.test.js +2 -2
  258. package/dist/tests/Analytics.integration.test.js.map +1 -1
  259. package/dist/tests/AnalyticsRepository.test.js +3 -5
  260. package/dist/tests/AnalyticsRepository.test.js.map +1 -1
  261. package/dist/tests/AnalyticsStorage.test.js.map +1 -1
  262. package/dist/tests/ApiPartialResponses.test.d.ts +12 -0
  263. package/dist/tests/ApiPartialResponses.test.d.ts.map +1 -0
  264. package/dist/tests/ApiPartialResponses.test.js +202 -0
  265. package/dist/tests/ApiPartialResponses.test.js.map +1 -0
  266. package/dist/tests/AuditLogger.test.js.map +1 -1
  267. package/dist/tests/BenchmarkRunner.test.js +6 -6
  268. package/dist/tests/BenchmarkRunner.test.js.map +1 -1
  269. package/dist/tests/CacheSecurity.test.js.map +1 -1
  270. package/dist/tests/CodebaseAnalyzer.test.js.map +1 -1
  271. package/dist/tests/DailyIndexPipeline.test.js.map +1 -1
  272. package/dist/tests/EmbeddingService.test.js.map +1 -1
  273. package/dist/tests/GitHubIndexer.test.js +4 -3
  274. package/dist/tests/GitHubIndexer.test.js.map +1 -1
  275. package/dist/tests/MemoryProfiler.test.js +3 -3
  276. package/dist/tests/MemoryProfiler.test.js.map +1 -1
  277. package/dist/tests/QualityScorer.test.js.map +1 -1
  278. package/dist/tests/RateLimiter.test.js.map +1 -1
  279. package/dist/tests/ScraperAdapters.test.js.map +1 -1
  280. package/dist/tests/SecurityScanner.test.js +4 -4
  281. package/dist/tests/SecurityScanner.test.js.map +1 -1
  282. package/dist/tests/SessionManager.security.test.js +1 -1
  283. package/dist/tests/SessionManager.security.test.js.map +1 -1
  284. package/dist/tests/SessionManager.test.js +4 -4
  285. package/dist/tests/SessionManager.test.js.map +1 -1
  286. package/dist/tests/SwarmIndexer.test.js +1 -1
  287. package/dist/tests/SwarmIndexer.test.js.map +1 -1
  288. package/dist/tests/TieredCache.test.js +2 -11
  289. package/dist/tests/TieredCache.test.js.map +1 -1
  290. package/dist/tests/WebhookHandler.test.js.map +1 -1
  291. package/dist/tests/fixtures/api-responses/index.d.ts +119 -0
  292. package/dist/tests/fixtures/api-responses/index.d.ts.map +1 -0
  293. package/dist/tests/fixtures/api-responses/index.js +419 -0
  294. package/dist/tests/fixtures/api-responses/index.js.map +1 -0
  295. package/dist/tests/logger.test.js +1 -1
  296. package/dist/tests/logger.test.js.map +1 -1
  297. package/dist/tests/performance/LargeScalePerformance.test.js +1 -1
  298. package/dist/tests/performance/LargeScalePerformance.test.js.map +1 -1
  299. package/dist/tests/sanitization.test.js.map +1 -1
  300. package/dist/tests/session/SessionManager.helpers.test.d.ts +8 -0
  301. package/dist/tests/session/SessionManager.helpers.test.d.ts.map +1 -0
  302. package/dist/tests/session/SessionManager.helpers.test.js +105 -0
  303. package/dist/tests/session/SessionManager.helpers.test.js.map +1 -0
  304. package/dist/tests/sources.test.js.map +1 -1
  305. package/dist/tests/webhooks/WebhookHandler.idempotency.test.js +1 -1
  306. package/dist/tests/webhooks/WebhookHandler.idempotency.test.js.map +1 -1
  307. package/dist/tests/webhooks/WebhookPayload.security.test.js.map +1 -1
  308. package/package.json +9 -9
@@ -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"}
@@ -0,0 +1,147 @@
1
+ /**
2
+ * HNSW Embedding Store Helper Functions
3
+ * @module @skillsmith/core/embeddings/hnsw-store.helpers
4
+ */
5
+ import { HNSW_PRESETS } from './hnsw-store.types.js';
6
+ import { HNSWEmbeddingStore } from './hnsw-store.js';
7
+ // ============================================================================
8
+ // Factory Functions
9
+ // ============================================================================
10
+ /**
11
+ * Create an HNSWEmbeddingStore with a preset configuration.
12
+ *
13
+ * @param preset - Preset name ('small', 'medium', 'large', 'xlarge')
14
+ * @param options - Additional options (merged with preset)
15
+ * @returns Configured HNSWEmbeddingStore instance
16
+ *
17
+ * @example
18
+ * ```typescript
19
+ * const store = createHNSWStore('large', {
20
+ * dbPath: './embeddings.db',
21
+ * indexPath: './embeddings.hnsw',
22
+ * });
23
+ * ```
24
+ */
25
+ export function createHNSWStore(preset, options = {}) {
26
+ return new HNSWEmbeddingStore({
27
+ ...options,
28
+ hnswConfig: HNSW_PRESETS[preset],
29
+ });
30
+ }
31
+ /**
32
+ * Check if hnswlib-node is available.
33
+ * Useful for conditional logic or graceful degradation.
34
+ *
35
+ * @returns true if hnswlib-node can be loaded
36
+ */
37
+ export async function isHNSWAvailable() {
38
+ try {
39
+ await Function('return import("hnswlib-node")')();
40
+ return true;
41
+ }
42
+ catch {
43
+ return false;
44
+ }
45
+ }
46
+ /**
47
+ * Dynamically load hnswlib-node module.
48
+ *
49
+ * @returns The HierarchicalNSW constructor, or null if unavailable
50
+ * @internal
51
+ */
52
+ export async function loadHNSWLib() {
53
+ try {
54
+ const mod = await Function('return import("hnswlib-node")')();
55
+ return mod;
56
+ }
57
+ catch {
58
+ return null;
59
+ }
60
+ }
61
+ // ============================================================================
62
+ // Utility Functions
63
+ // ============================================================================
64
+ /**
65
+ * Compute cosine similarity between two embeddings.
66
+ * Standalone version for use outside of HNSWEmbeddingStore.
67
+ *
68
+ * @param a - First embedding
69
+ * @param b - Second embedding
70
+ * @returns Similarity score between -1 and 1
71
+ */
72
+ export function computeCosineSimilarity(a, b) {
73
+ if (a.length !== b.length) {
74
+ throw new Error(`Embedding dimension mismatch: ${a.length} vs ${b.length}`);
75
+ }
76
+ let dotProduct = 0;
77
+ let normA = 0;
78
+ let normB = 0;
79
+ for (let i = 0; i < a.length; i++) {
80
+ dotProduct += a[i] * b[i];
81
+ normA += a[i] * a[i];
82
+ normB += b[i] * b[i];
83
+ }
84
+ if (normA === 0 || normB === 0)
85
+ return 0;
86
+ return dotProduct / (Math.sqrt(normA) * Math.sqrt(normB));
87
+ }
88
+ /**
89
+ * Convert HNSW distance to similarity score.
90
+ * HNSW returns distances, we need similarities (higher = more similar).
91
+ *
92
+ * @param distance - Distance value from HNSW
93
+ * @param metric - Distance metric used
94
+ * @returns Similarity score
95
+ */
96
+ export function distanceToSimilarity(distance, metric = 'cosine') {
97
+ if (metric === 'cosine') {
98
+ // For cosine space, HNSW returns 1 - cosine_similarity
99
+ return 1 - distance;
100
+ }
101
+ // For L2/IP, need different conversion
102
+ return 1 / (1 + distance);
103
+ }
104
+ /**
105
+ * Estimate memory usage for an HNSW index.
106
+ *
107
+ * @param vectorCount - Number of vectors
108
+ * @param dimensions - Vector dimensionality
109
+ * @param m - HNSW M parameter
110
+ * @returns Estimated memory usage in bytes
111
+ */
112
+ export function estimateMemoryUsage(vectorCount, dimensions, m) {
113
+ // HNSW uses ~(4 * dimensions + M * 4 * 2) bytes per vector
114
+ const bytesPerVector = 4 * dimensions + m * 8;
115
+ return vectorCount * bytesPerVector;
116
+ }
117
+ /**
118
+ * Validate embedding dimensions.
119
+ *
120
+ * @param embedding - Embedding to validate
121
+ * @param expectedDimensions - Expected dimension count
122
+ * @param context - Context for error message (default: 'Query')
123
+ * @throws Error if dimensions don't match
124
+ */
125
+ export function validateDimensions(embedding, expectedDimensions, context = 'Query') {
126
+ if (embedding.length !== expectedDimensions) {
127
+ throw new Error(`${context} dimension mismatch: got ${embedding.length}, expected ${expectedDimensions}`);
128
+ }
129
+ }
130
+ /**
131
+ * Determine whether to use HNSW based on explicit option or environment.
132
+ *
133
+ * @param explicit - Explicit useHNSW option (if provided)
134
+ * @returns Whether to enable HNSW
135
+ */
136
+ export function shouldUseHNSW(explicit) {
137
+ if (explicit !== undefined) {
138
+ return explicit;
139
+ }
140
+ const envValue = process.env.SKILLSMITH_USE_HNSW;
141
+ if (envValue !== undefined) {
142
+ return envValue === 'true' || envValue === '1';
143
+ }
144
+ // Default to false for backward compatibility
145
+ return false;
146
+ }
147
+ //# sourceMappingURL=hnsw-store.helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hnsw-store.helpers.js","sourceRoot":"","sources":["../../../src/embeddings/hnsw-store.helpers.ts"],"names":[],"mappings":"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"}