@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.
- package/dist/.tsbuildinfo +1 -1
- package/dist/src/analysis/CodebaseAnalyzer.d.ts.map +1 -1
- package/dist/src/analysis/CodebaseAnalyzer.js.map +1 -1
- package/dist/src/analysis/adapters/__tests__/python.test.js.map +1 -1
- package/dist/src/analysis/language-detector.d.ts +4 -20
- package/dist/src/analysis/language-detector.d.ts.map +1 -1
- package/dist/src/analysis/language-detector.js +2 -399
- package/dist/src/analysis/language-detector.js.map +1 -1
- package/dist/src/analysis/language-detector.patterns.d.ts +17 -0
- package/dist/src/analysis/language-detector.patterns.d.ts.map +1 -0
- package/dist/src/analysis/language-detector.patterns.js +413 -0
- package/dist/src/analysis/language-detector.patterns.js.map +1 -0
- package/dist/src/analysis/language-detector.types.d.ts +48 -0
- package/dist/src/analysis/language-detector.types.d.ts.map +1 -0
- package/dist/src/analysis/language-detector.types.js +6 -0
- package/dist/src/analysis/language-detector.types.js.map +1 -0
- package/dist/src/analysis/metrics.d.ts +22 -219
- package/dist/src/analysis/metrics.d.ts.map +1 -1
- package/dist/src/analysis/metrics.implementations.d.ts +39 -0
- package/dist/src/analysis/metrics.implementations.d.ts.map +1 -0
- package/dist/src/analysis/metrics.implementations.js +114 -0
- package/dist/src/analysis/metrics.implementations.js.map +1 -0
- package/dist/src/analysis/metrics.js +21 -224
- package/dist/src/analysis/metrics.js.map +1 -1
- package/dist/src/analysis/metrics.types.d.ts +79 -0
- package/dist/src/analysis/metrics.types.d.ts.map +1 -0
- package/dist/src/analysis/metrics.types.js +6 -0
- package/dist/src/analysis/metrics.types.js.map +1 -0
- package/dist/src/analytics/ROIDashboardService.js +4 -2
- package/dist/src/analytics/ROIDashboardService.js.map +1 -1
- package/dist/src/api/cache.d.ts.map +1 -1
- package/dist/src/api/cache.js.map +1 -1
- package/dist/src/api/client.d.ts +1 -0
- package/dist/src/api/client.d.ts.map +1 -1
- package/dist/src/api/client.js +17 -3
- package/dist/src/api/client.js.map +1 -1
- package/dist/src/api/types.d.ts +1 -1
- package/dist/src/api/types.d.ts.map +1 -1
- package/dist/src/benchmarks/BenchmarkRunner.d.ts.map +1 -1
- package/dist/src/benchmarks/BenchmarkRunner.js +1 -1
- package/dist/src/benchmarks/BenchmarkRunner.js.map +1 -1
- package/dist/src/billing/BillingService.d.ts +15 -53
- package/dist/src/billing/BillingService.d.ts.map +1 -1
- package/dist/src/billing/BillingService.helpers.d.ts +15 -0
- package/dist/src/billing/BillingService.helpers.d.ts.map +1 -0
- package/dist/src/billing/BillingService.helpers.js +45 -0
- package/dist/src/billing/BillingService.helpers.js.map +1 -0
- package/dist/src/billing/BillingService.js +49 -179
- package/dist/src/billing/BillingService.js.map +1 -1
- package/dist/src/billing/BillingService.types.d.ts +52 -0
- package/dist/src/billing/BillingService.types.d.ts.map +1 -0
- package/dist/src/billing/BillingService.types.js +6 -0
- package/dist/src/billing/BillingService.types.js.map +1 -0
- package/dist/src/billing/StripeClient.d.ts +3 -2
- package/dist/src/billing/StripeClient.d.ts.map +1 -1
- package/dist/src/billing/StripeClient.js +4 -3
- package/dist/src/billing/StripeClient.js.map +1 -1
- package/dist/src/billing/StripeWebhookHandler.d.ts +13 -0
- package/dist/src/billing/StripeWebhookHandler.d.ts.map +1 -1
- package/dist/src/billing/StripeWebhookHandler.js +52 -9
- package/dist/src/billing/StripeWebhookHandler.js.map +1 -1
- package/dist/src/db/migration.d.ts +129 -0
- package/dist/src/db/migration.d.ts.map +1 -0
- package/dist/src/db/migration.js +289 -0
- package/dist/src/db/migration.js.map +1 -0
- package/dist/src/db/schema.d.ts +2 -2
- package/dist/src/db/schema.d.ts.map +1 -1
- package/dist/src/db/schema.js +23 -1
- package/dist/src/db/schema.js.map +1 -1
- package/dist/src/embeddings/hnsw-store.d.ts +8 -518
- package/dist/src/embeddings/hnsw-store.d.ts.map +1 -1
- package/dist/src/embeddings/hnsw-store.helpers.d.ts +83 -0
- package/dist/src/embeddings/hnsw-store.helpers.d.ts.map +1 -0
- package/dist/src/embeddings/hnsw-store.helpers.js +147 -0
- package/dist/src/embeddings/hnsw-store.helpers.js.map +1 -0
- package/dist/src/embeddings/hnsw-store.js +66 -517
- package/dist/src/embeddings/hnsw-store.js.map +1 -1
- package/dist/src/embeddings/hnsw-store.types.d.ts +154 -0
- package/dist/src/embeddings/hnsw-store.types.d.ts.map +1 -0
- package/dist/src/embeddings/hnsw-store.types.js +26 -0
- package/dist/src/embeddings/hnsw-store.types.js.map +1 -0
- package/dist/src/errors.d.ts.map +1 -1
- package/dist/src/errors.js +1 -1
- package/dist/src/errors.js.map +1 -1
- package/dist/src/index.d.ts +8 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +18 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/indexer/GitHubIndexer.d.ts.map +1 -1
- package/dist/src/indexer/GitHubIndexer.js +17 -4
- package/dist/src/indexer/GitHubIndexer.js.map +1 -1
- package/dist/src/indexer/SwarmIndexer.d.ts.map +1 -1
- package/dist/src/indexer/SwarmIndexer.js +1 -1
- package/dist/src/indexer/SwarmIndexer.js.map +1 -1
- package/dist/src/learning/PatternStore.d.ts +6 -426
- package/dist/src/learning/PatternStore.d.ts.map +1 -1
- package/dist/src/learning/PatternStore.helpers.d.ts +88 -0
- package/dist/src/learning/PatternStore.helpers.d.ts.map +1 -0
- package/dist/src/learning/PatternStore.helpers.js +286 -0
- package/dist/src/learning/PatternStore.helpers.js.map +1 -0
- package/dist/src/learning/PatternStore.js +52 -598
- package/dist/src/learning/PatternStore.js.map +1 -1
- package/dist/src/learning/PatternStore.queries.d.ts +83 -0
- package/dist/src/learning/PatternStore.queries.d.ts.map +1 -0
- package/dist/src/learning/PatternStore.queries.js +189 -0
- package/dist/src/learning/PatternStore.queries.js.map +1 -0
- package/dist/src/learning/PatternStore.types.d.ts +308 -0
- package/dist/src/learning/PatternStore.types.d.ts.map +1 -0
- package/dist/src/learning/PatternStore.types.js +44 -0
- package/dist/src/learning/PatternStore.types.js.map +1 -0
- package/dist/src/learning/ReasoningBankIntegration.d.ts +5 -345
- package/dist/src/learning/ReasoningBankIntegration.d.ts.map +1 -1
- package/dist/src/learning/ReasoningBankIntegration.helpers.d.ts +49 -0
- package/dist/src/learning/ReasoningBankIntegration.helpers.d.ts.map +1 -0
- package/dist/src/learning/ReasoningBankIntegration.helpers.js +180 -0
- package/dist/src/learning/ReasoningBankIntegration.helpers.js.map +1 -0
- package/dist/src/learning/ReasoningBankIntegration.js +21 -390
- package/dist/src/learning/ReasoningBankIntegration.js.map +1 -1
- package/dist/src/learning/ReasoningBankIntegration.types.d.ts +167 -0
- package/dist/src/learning/ReasoningBankIntegration.types.d.ts.map +1 -0
- package/dist/src/learning/ReasoningBankIntegration.types.js +51 -0
- package/dist/src/learning/ReasoningBankIntegration.types.js.map +1 -0
- package/dist/src/learning/interfaces.d.ts.map +1 -1
- package/dist/src/pipeline/DailyIndexPipeline.js +1 -1
- package/dist/src/pipeline/DailyIndexPipeline.js.map +1 -1
- package/dist/src/repositories/IndexerRepository.d.ts +1 -0
- package/dist/src/repositories/IndexerRepository.d.ts.map +1 -1
- package/dist/src/repositories/IndexerRepository.js +6 -0
- package/dist/src/repositories/IndexerRepository.js.map +1 -1
- package/dist/src/repositories/SkillRepository.d.ts.map +1 -1
- package/dist/src/repositories/SkillRepository.js +20 -5
- package/dist/src/repositories/SkillRepository.js.map +1 -1
- package/dist/src/routing/SONARouter.d.ts +3 -101
- package/dist/src/routing/SONARouter.d.ts.map +1 -1
- package/dist/src/routing/SONARouter.helpers.d.ts +112 -0
- package/dist/src/routing/SONARouter.helpers.d.ts.map +1 -0
- package/dist/src/routing/SONARouter.helpers.js +184 -0
- package/dist/src/routing/SONARouter.helpers.js.map +1 -0
- package/dist/src/routing/SONARouter.js +16 -318
- package/dist/src/routing/SONARouter.js.map +1 -1
- package/dist/src/scripts/github-import/github-client.js +0 -1
- package/dist/src/scripts/github-import/github-client.js.map +1 -1
- package/dist/src/scripts/ingest-lenny-skills.d.ts +40 -0
- package/dist/src/scripts/ingest-lenny-skills.d.ts.map +1 -0
- package/dist/src/scripts/ingest-lenny-skills.js +346 -0
- package/dist/src/scripts/ingest-lenny-skills.js.map +1 -0
- package/dist/src/scripts/review-lenny-skills.d.ts +25 -0
- package/dist/src/scripts/review-lenny-skills.d.ts.map +1 -0
- package/dist/src/scripts/review-lenny-skills.js +520 -0
- package/dist/src/scripts/review-lenny-skills.js.map +1 -0
- package/dist/src/scripts/sync-to-supabase.d.ts +10 -0
- package/dist/src/scripts/sync-to-supabase.d.ts.map +1 -0
- package/dist/src/scripts/sync-to-supabase.js +93 -0
- package/dist/src/scripts/sync-to-supabase.js.map +1 -0
- package/dist/src/security/AuditLogger.js +1 -1
- package/dist/src/security/AuditLogger.js.map +1 -1
- package/dist/src/security/__tests__/pathValidation.test.js.map +1 -1
- package/dist/src/security/scanner/SecurityScanner.d.ts +12 -88
- package/dist/src/security/scanner/SecurityScanner.d.ts.map +1 -1
- package/dist/src/security/scanner/SecurityScanner.formatters.d.ts +49 -0
- package/dist/src/security/scanner/SecurityScanner.formatters.d.ts.map +1 -0
- package/dist/src/security/scanner/SecurityScanner.formatters.js +139 -0
- package/dist/src/security/scanner/SecurityScanner.formatters.js.map +1 -0
- package/dist/src/security/scanner/SecurityScanner.helpers.d.ts +40 -0
- package/dist/src/security/scanner/SecurityScanner.helpers.d.ts.map +1 -0
- package/dist/src/security/scanner/SecurityScanner.helpers.js +142 -0
- package/dist/src/security/scanner/SecurityScanner.helpers.js.map +1 -0
- package/dist/src/security/scanner/SecurityScanner.js +26 -255
- package/dist/src/security/scanner/SecurityScanner.js.map +1 -1
- package/dist/src/services/SearchService.d.ts +5 -0
- package/dist/src/services/SearchService.d.ts.map +1 -1
- package/dist/src/services/SearchService.js +143 -11
- package/dist/src/services/SearchService.js.map +1 -1
- package/dist/src/services/SkillAnalyzer.d.ts +117 -0
- package/dist/src/services/SkillAnalyzer.d.ts.map +1 -0
- package/dist/src/services/SkillAnalyzer.js +421 -0
- package/dist/src/services/SkillAnalyzer.js.map +1 -0
- package/dist/src/services/SkillDecomposer.d.ts +103 -0
- package/dist/src/services/SkillDecomposer.d.ts.map +1 -0
- package/dist/src/services/SkillDecomposer.js +359 -0
- package/dist/src/services/SkillDecomposer.js.map +1 -0
- package/dist/src/services/SubagentGenerator.d.ts +68 -0
- package/dist/src/services/SubagentGenerator.d.ts.map +1 -0
- package/dist/src/services/SubagentGenerator.js +319 -0
- package/dist/src/services/SubagentGenerator.js.map +1 -0
- package/dist/src/services/TransformationService.d.ts +163 -0
- package/dist/src/services/TransformationService.d.ts.map +1 -0
- package/dist/src/services/TransformationService.js +291 -0
- package/dist/src/services/TransformationService.js.map +1 -0
- package/dist/src/services/__tests__/SkillAnalyzer.test.d.ts +6 -0
- package/dist/src/services/__tests__/SkillAnalyzer.test.d.ts.map +1 -0
- package/dist/src/services/__tests__/SkillAnalyzer.test.js +177 -0
- package/dist/src/services/__tests__/SkillAnalyzer.test.js.map +1 -0
- package/dist/src/services/__tests__/SkillDecomposer.test.d.ts +6 -0
- package/dist/src/services/__tests__/SkillDecomposer.test.d.ts.map +1 -0
- package/dist/src/services/__tests__/SkillDecomposer.test.js +235 -0
- package/dist/src/services/__tests__/SkillDecomposer.test.js.map +1 -0
- package/dist/src/services/__tests__/SubagentGenerator.test.d.ts +6 -0
- package/dist/src/services/__tests__/SubagentGenerator.test.d.ts.map +1 -0
- package/dist/src/services/__tests__/SubagentGenerator.test.js +174 -0
- package/dist/src/services/__tests__/SubagentGenerator.test.js.map +1 -0
- package/dist/src/services/__tests__/TransformationService.test.d.ts +6 -0
- package/dist/src/services/__tests__/TransformationService.test.d.ts.map +1 -0
- package/dist/src/services/__tests__/TransformationService.test.js +242 -0
- package/dist/src/services/__tests__/TransformationService.test.js.map +1 -0
- package/dist/src/session/SessionContext.js +1 -1
- package/dist/src/session/SessionContext.js.map +1 -1
- package/dist/src/session/SessionManager.d.ts +3 -67
- package/dist/src/session/SessionManager.d.ts.map +1 -1
- package/dist/src/session/SessionManager.helpers.d.ts +68 -0
- package/dist/src/session/SessionManager.helpers.d.ts.map +1 -0
- package/dist/src/session/SessionManager.helpers.js +152 -0
- package/dist/src/session/SessionManager.helpers.js.map +1 -0
- package/dist/src/session/SessionManager.js +58 -163
- package/dist/src/session/SessionManager.js.map +1 -1
- package/dist/src/session/SessionManager.types.d.ts +88 -0
- package/dist/src/session/SessionManager.types.d.ts.map +1 -0
- package/dist/src/session/SessionManager.types.js +27 -0
- package/dist/src/session/SessionManager.types.js.map +1 -0
- package/dist/src/session/SessionRecovery.d.ts.map +1 -1
- package/dist/src/session/SessionRecovery.js +3 -2
- package/dist/src/session/SessionRecovery.js.map +1 -1
- package/dist/src/sources/RawUrlSourceAdapter.js.map +1 -1
- package/dist/src/sources/SourceAdapterRegistry.js +1 -1
- package/dist/src/sources/SourceAdapterRegistry.js.map +1 -1
- package/dist/src/telemetry/tracer.d.ts.map +1 -1
- package/dist/src/telemetry/tracer.js +2 -3
- package/dist/src/telemetry/tracer.js.map +1 -1
- package/dist/src/testing/MultiLLMProvider.d.ts +17 -293
- package/dist/src/testing/MultiLLMProvider.d.ts.map +1 -1
- package/dist/src/testing/MultiLLMProvider.helpers.d.ts +54 -0
- package/dist/src/testing/MultiLLMProvider.helpers.d.ts.map +1 -0
- package/dist/src/testing/MultiLLMProvider.helpers.js +126 -0
- package/dist/src/testing/MultiLLMProvider.helpers.js.map +1 -0
- package/dist/src/testing/MultiLLMProvider.js +50 -323
- package/dist/src/testing/MultiLLMProvider.js.map +1 -1
- package/dist/src/testing/MultiLLMProvider.types.d.ts +253 -0
- package/dist/src/testing/MultiLLMProvider.types.d.ts.map +1 -0
- package/dist/src/testing/MultiLLMProvider.types.js +111 -0
- package/dist/src/testing/MultiLLMProvider.types.js.map +1 -0
- package/dist/src/triggers/__tests__/TriggerDetector.test.js +1 -1
- package/dist/src/triggers/__tests__/TriggerDetector.test.js.map +1 -1
- package/dist/src/types/skill.d.ts +29 -0
- package/dist/src/types/skill.d.ts.map +1 -1
- package/dist/src/types/skill.js +11 -1
- package/dist/src/types/skill.js.map +1 -1
- package/dist/src/types.d.ts +22 -0
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/utils/retry.js +2 -2
- package/dist/src/utils/retry.js.map +1 -1
- package/dist/src/validation/index.js +2 -2
- package/dist/src/validation/index.js.map +1 -1
- package/dist/src/webhooks/WebhookHandler.d.ts.map +1 -1
- package/dist/src/webhooks/WebhookHandler.js.map +1 -1
- package/dist/src/webhooks/WebhookPayload.js +1 -1
- package/dist/src/webhooks/WebhookPayload.js.map +1 -1
- package/dist/tests/Analytics.integration.test.js +2 -2
- package/dist/tests/Analytics.integration.test.js.map +1 -1
- package/dist/tests/AnalyticsRepository.test.js +3 -5
- package/dist/tests/AnalyticsRepository.test.js.map +1 -1
- package/dist/tests/AnalyticsStorage.test.js.map +1 -1
- package/dist/tests/ApiPartialResponses.test.d.ts +12 -0
- package/dist/tests/ApiPartialResponses.test.d.ts.map +1 -0
- package/dist/tests/ApiPartialResponses.test.js +202 -0
- package/dist/tests/ApiPartialResponses.test.js.map +1 -0
- package/dist/tests/AuditLogger.test.js.map +1 -1
- package/dist/tests/BenchmarkRunner.test.js +6 -6
- package/dist/tests/BenchmarkRunner.test.js.map +1 -1
- package/dist/tests/CacheSecurity.test.js.map +1 -1
- package/dist/tests/CodebaseAnalyzer.test.js.map +1 -1
- package/dist/tests/DailyIndexPipeline.test.js.map +1 -1
- package/dist/tests/EmbeddingService.test.js.map +1 -1
- package/dist/tests/GitHubIndexer.test.js +4 -3
- package/dist/tests/GitHubIndexer.test.js.map +1 -1
- package/dist/tests/MemoryProfiler.test.js +3 -3
- package/dist/tests/MemoryProfiler.test.js.map +1 -1
- package/dist/tests/QualityScorer.test.js.map +1 -1
- package/dist/tests/RateLimiter.test.js.map +1 -1
- package/dist/tests/ScraperAdapters.test.js.map +1 -1
- package/dist/tests/SecurityScanner.test.js +4 -4
- package/dist/tests/SecurityScanner.test.js.map +1 -1
- package/dist/tests/SessionManager.security.test.js +1 -1
- package/dist/tests/SessionManager.security.test.js.map +1 -1
- package/dist/tests/SessionManager.test.js +4 -4
- package/dist/tests/SessionManager.test.js.map +1 -1
- package/dist/tests/SwarmIndexer.test.js +1 -1
- package/dist/tests/SwarmIndexer.test.js.map +1 -1
- package/dist/tests/TieredCache.test.js +2 -11
- package/dist/tests/TieredCache.test.js.map +1 -1
- package/dist/tests/WebhookHandler.test.js.map +1 -1
- package/dist/tests/fixtures/api-responses/index.d.ts +119 -0
- package/dist/tests/fixtures/api-responses/index.d.ts.map +1 -0
- package/dist/tests/fixtures/api-responses/index.js +419 -0
- package/dist/tests/fixtures/api-responses/index.js.map +1 -0
- package/dist/tests/logger.test.js +1 -1
- package/dist/tests/logger.test.js.map +1 -1
- package/dist/tests/performance/LargeScalePerformance.test.js +1 -1
- package/dist/tests/performance/LargeScalePerformance.test.js.map +1 -1
- package/dist/tests/sanitization.test.js.map +1 -1
- package/dist/tests/session/SessionManager.helpers.test.d.ts +8 -0
- package/dist/tests/session/SessionManager.helpers.test.d.ts.map +1 -0
- package/dist/tests/session/SessionManager.helpers.test.js +105 -0
- package/dist/tests/session/SessionManager.helpers.test.js.map +1 -0
- package/dist/tests/sources.test.js.map +1 -1
- package/dist/tests/webhooks/WebhookHandler.idempotency.test.js +1 -1
- package/dist/tests/webhooks/WebhookHandler.idempotency.test.js.map +1 -1
- package/dist/tests/webhooks/WebhookPayload.security.test.js.map +1 -1
- 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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"}
|