@skillsmith/core 0.1.0
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 -0
- package/dist/src/__tests__/errors.test.d.ts +5 -0
- package/dist/src/__tests__/errors.test.d.ts.map +1 -0
- package/dist/src/__tests__/errors.test.js +115 -0
- package/dist/src/__tests__/errors.test.js.map +1 -0
- package/dist/src/activation/ActivationManager.d.ts +141 -0
- package/dist/src/activation/ActivationManager.d.ts.map +1 -0
- package/dist/src/activation/ActivationManager.js +282 -0
- package/dist/src/activation/ActivationManager.js.map +1 -0
- package/dist/src/activation/ZeroConfigActivator.d.ts +126 -0
- package/dist/src/activation/ZeroConfigActivator.d.ts.map +1 -0
- package/dist/src/activation/ZeroConfigActivator.js +259 -0
- package/dist/src/activation/ZeroConfigActivator.js.map +1 -0
- package/dist/src/activation/index.d.ts +8 -0
- package/dist/src/activation/index.d.ts.map +1 -0
- package/dist/src/activation/index.js +8 -0
- package/dist/src/activation/index.js.map +1 -0
- package/dist/src/analysis/CodebaseAnalyzer.d.ts +175 -0
- package/dist/src/analysis/CodebaseAnalyzer.d.ts.map +1 -0
- package/dist/src/analysis/CodebaseAnalyzer.js +495 -0
- package/dist/src/analysis/CodebaseAnalyzer.js.map +1 -0
- package/dist/src/analysis/index.d.ts +10 -0
- package/dist/src/analysis/index.d.ts.map +1 -0
- package/dist/src/analysis/index.js +10 -0
- package/dist/src/analysis/index.js.map +1 -0
- package/dist/src/analytics/AnalyticsRepository.d.ts +97 -0
- package/dist/src/analytics/AnalyticsRepository.d.ts.map +1 -0
- package/dist/src/analytics/AnalyticsRepository.js +376 -0
- package/dist/src/analytics/AnalyticsRepository.js.map +1 -0
- package/dist/src/analytics/ExperimentService.d.ts +70 -0
- package/dist/src/analytics/ExperimentService.d.ts.map +1 -0
- package/dist/src/analytics/ExperimentService.js +251 -0
- package/dist/src/analytics/ExperimentService.js.map +1 -0
- package/dist/src/analytics/ROIDashboardService.d.ts +55 -0
- package/dist/src/analytics/ROIDashboardService.d.ts.map +1 -0
- package/dist/src/analytics/ROIDashboardService.js +304 -0
- package/dist/src/analytics/ROIDashboardService.js.map +1 -0
- package/dist/src/analytics/UsageAnalyticsService.d.ts +55 -0
- package/dist/src/analytics/UsageAnalyticsService.d.ts.map +1 -0
- package/dist/src/analytics/UsageAnalyticsService.js +180 -0
- package/dist/src/analytics/UsageAnalyticsService.js.map +1 -0
- package/dist/src/analytics/anonymizer.d.ts +53 -0
- package/dist/src/analytics/anonymizer.d.ts.map +1 -0
- package/dist/src/analytics/anonymizer.js +107 -0
- package/dist/src/analytics/anonymizer.js.map +1 -0
- package/dist/src/analytics/constants.d.ts +19 -0
- package/dist/src/analytics/constants.d.ts.map +1 -0
- package/dist/src/analytics/constants.js +19 -0
- package/dist/src/analytics/constants.js.map +1 -0
- package/dist/src/analytics/index.d.ts +23 -0
- package/dist/src/analytics/index.d.ts.map +1 -0
- package/dist/src/analytics/index.js +23 -0
- package/dist/src/analytics/index.js.map +1 -0
- package/dist/src/analytics/metrics-aggregator.d.ts +98 -0
- package/dist/src/analytics/metrics-aggregator.d.ts.map +1 -0
- package/dist/src/analytics/metrics-aggregator.js +176 -0
- package/dist/src/analytics/metrics-aggregator.js.map +1 -0
- package/dist/src/analytics/metrics-exporter.d.ts +148 -0
- package/dist/src/analytics/metrics-exporter.d.ts.map +1 -0
- package/dist/src/analytics/metrics-exporter.js +244 -0
- package/dist/src/analytics/metrics-exporter.js.map +1 -0
- package/dist/src/analytics/schema.d.ts +20 -0
- package/dist/src/analytics/schema.d.ts.map +1 -0
- package/dist/src/analytics/schema.js +125 -0
- package/dist/src/analytics/schema.js.map +1 -0
- package/dist/src/analytics/storage.d.ts +76 -0
- package/dist/src/analytics/storage.d.ts.map +1 -0
- package/dist/src/analytics/storage.js +180 -0
- package/dist/src/analytics/storage.js.map +1 -0
- package/dist/src/analytics/types.d.ts +277 -0
- package/dist/src/analytics/types.d.ts.map +1 -0
- package/dist/src/analytics/types.js +10 -0
- package/dist/src/analytics/types.js.map +1 -0
- package/dist/src/analytics/usage-tracker.d.ts +132 -0
- package/dist/src/analytics/usage-tracker.d.ts.map +1 -0
- package/dist/src/analytics/usage-tracker.js +213 -0
- package/dist/src/analytics/usage-tracker.js.map +1 -0
- package/dist/src/benchmarks/BenchmarkRunner.d.ts +258 -0
- package/dist/src/benchmarks/BenchmarkRunner.d.ts.map +1 -0
- package/dist/src/benchmarks/BenchmarkRunner.js +453 -0
- package/dist/src/benchmarks/BenchmarkRunner.js.map +1 -0
- package/dist/src/benchmarks/IndexBenchmark.d.ts +101 -0
- package/dist/src/benchmarks/IndexBenchmark.d.ts.map +1 -0
- package/dist/src/benchmarks/IndexBenchmark.js +314 -0
- package/dist/src/benchmarks/IndexBenchmark.js.map +1 -0
- package/dist/src/benchmarks/MemoryProfiler.d.ts +266 -0
- package/dist/src/benchmarks/MemoryProfiler.d.ts.map +1 -0
- package/dist/src/benchmarks/MemoryProfiler.js +404 -0
- package/dist/src/benchmarks/MemoryProfiler.js.map +1 -0
- package/dist/src/benchmarks/SearchBenchmark.d.ts +71 -0
- package/dist/src/benchmarks/SearchBenchmark.d.ts.map +1 -0
- package/dist/src/benchmarks/SearchBenchmark.js +321 -0
- package/dist/src/benchmarks/SearchBenchmark.js.map +1 -0
- package/dist/src/benchmarks/cacheBenchmark.d.ts +75 -0
- package/dist/src/benchmarks/cacheBenchmark.d.ts.map +1 -0
- package/dist/src/benchmarks/cacheBenchmark.js +325 -0
- package/dist/src/benchmarks/cacheBenchmark.js.map +1 -0
- package/dist/src/benchmarks/cli.d.ts +17 -0
- package/dist/src/benchmarks/cli.d.ts.map +1 -0
- package/dist/src/benchmarks/cli.js +140 -0
- package/dist/src/benchmarks/cli.js.map +1 -0
- package/dist/src/benchmarks/embeddingBenchmark.d.ts +86 -0
- package/dist/src/benchmarks/embeddingBenchmark.d.ts.map +1 -0
- package/dist/src/benchmarks/embeddingBenchmark.js +329 -0
- package/dist/src/benchmarks/embeddingBenchmark.js.map +1 -0
- package/dist/src/benchmarks/index.d.ts +51 -0
- package/dist/src/benchmarks/index.d.ts.map +1 -0
- package/dist/src/benchmarks/index.js +201 -0
- package/dist/src/benchmarks/index.js.map +1 -0
- package/dist/src/benchmarks/stats.d.ts +56 -0
- package/dist/src/benchmarks/stats.d.ts.map +1 -0
- package/dist/src/benchmarks/stats.js +86 -0
- package/dist/src/benchmarks/stats.js.map +1 -0
- package/dist/src/cache/CacheEntry.d.ts +101 -0
- package/dist/src/cache/CacheEntry.d.ts.map +1 -0
- package/dist/src/cache/CacheEntry.js +238 -0
- package/dist/src/cache/CacheEntry.js.map +1 -0
- package/dist/src/cache/CacheManager.d.ts +167 -0
- package/dist/src/cache/CacheManager.d.ts.map +1 -0
- package/dist/src/cache/CacheManager.js +346 -0
- package/dist/src/cache/CacheManager.js.map +1 -0
- package/dist/src/cache/TieredCache.d.ts +97 -0
- package/dist/src/cache/TieredCache.d.ts.map +1 -0
- package/dist/src/cache/TieredCache.js +352 -0
- package/dist/src/cache/TieredCache.js.map +1 -0
- package/dist/src/cache/index.d.ts +63 -0
- package/dist/src/cache/index.d.ts.map +1 -0
- package/dist/src/cache/index.js +91 -0
- package/dist/src/cache/index.js.map +1 -0
- package/dist/src/cache/lru.d.ts +68 -0
- package/dist/src/cache/lru.d.ts.map +1 -0
- package/dist/src/cache/lru.js +105 -0
- package/dist/src/cache/lru.js.map +1 -0
- package/dist/src/cache/sqlite.d.ts +59 -0
- package/dist/src/cache/sqlite.d.ts.map +1 -0
- package/dist/src/cache/sqlite.js +159 -0
- package/dist/src/cache/sqlite.js.map +1 -0
- package/dist/src/db/quarantine-schema.d.ts +81 -0
- package/dist/src/db/quarantine-schema.d.ts.map +1 -0
- package/dist/src/db/quarantine-schema.js +110 -0
- package/dist/src/db/quarantine-schema.js.map +1 -0
- package/dist/src/db/schema.d.ts +65 -0
- package/dist/src/db/schema.d.ts.map +1 -0
- package/dist/src/db/schema.js +318 -0
- package/dist/src/db/schema.js.map +1 -0
- package/dist/src/embeddings/index.d.ts +158 -0
- package/dist/src/embeddings/index.d.ts.map +1 -0
- package/dist/src/embeddings/index.js +397 -0
- package/dist/src/embeddings/index.js.map +1 -0
- package/dist/src/errors/SkillsmithError.d.ts +118 -0
- package/dist/src/errors/SkillsmithError.d.ts.map +1 -0
- package/dist/src/errors/SkillsmithError.js +194 -0
- package/dist/src/errors/SkillsmithError.js.map +1 -0
- package/dist/src/errors/index.d.ts +36 -0
- package/dist/src/errors/index.d.ts.map +1 -0
- package/dist/src/errors/index.js +36 -0
- package/dist/src/errors/index.js.map +1 -0
- package/dist/src/errors.d.ts +72 -0
- package/dist/src/errors.d.ts.map +1 -0
- package/dist/src/errors.js +123 -0
- package/dist/src/errors.js.map +1 -0
- package/dist/src/index.d.ts +56 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +73 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/index.test.d.ts +2 -0
- package/dist/src/index.test.d.ts.map +1 -0
- package/dist/src/index.test.js +35 -0
- package/dist/src/index.test.js.map +1 -0
- package/dist/src/indexer/GitHubIndexer.d.ts +107 -0
- package/dist/src/indexer/GitHubIndexer.d.ts.map +1 -0
- package/dist/src/indexer/GitHubIndexer.js +202 -0
- package/dist/src/indexer/GitHubIndexer.js.map +1 -0
- package/dist/src/indexer/PartitionStrategy.d.ts +115 -0
- package/dist/src/indexer/PartitionStrategy.d.ts.map +1 -0
- package/dist/src/indexer/PartitionStrategy.js +207 -0
- package/dist/src/indexer/PartitionStrategy.js.map +1 -0
- package/dist/src/indexer/SkillParser.d.ts +112 -0
- package/dist/src/indexer/SkillParser.d.ts.map +1 -0
- package/dist/src/indexer/SkillParser.js +281 -0
- package/dist/src/indexer/SkillParser.js.map +1 -0
- package/dist/src/indexer/SwarmIndexer.d.ts +163 -0
- package/dist/src/indexer/SwarmIndexer.d.ts.map +1 -0
- package/dist/src/indexer/SwarmIndexer.js +300 -0
- package/dist/src/indexer/SwarmIndexer.js.map +1 -0
- package/dist/src/indexer/index.d.ts +12 -0
- package/dist/src/indexer/index.d.ts.map +1 -0
- package/dist/src/indexer/index.js +16 -0
- package/dist/src/indexer/index.js.map +1 -0
- package/dist/src/learning/interfaces.d.ts +338 -0
- package/dist/src/learning/interfaces.d.ts.map +1 -0
- package/dist/src/learning/interfaces.js +13 -0
- package/dist/src/learning/interfaces.js.map +1 -0
- package/dist/src/learning/types.d.ts +284 -0
- package/dist/src/learning/types.d.ts.map +1 -0
- package/dist/src/learning/types.js +112 -0
- package/dist/src/learning/types.js.map +1 -0
- package/dist/src/matching/OverlapDetector.d.ts +152 -0
- package/dist/src/matching/OverlapDetector.d.ts.map +1 -0
- package/dist/src/matching/OverlapDetector.js +218 -0
- package/dist/src/matching/OverlapDetector.js.map +1 -0
- package/dist/src/matching/SkillMatcher.d.ts +125 -0
- package/dist/src/matching/SkillMatcher.d.ts.map +1 -0
- package/dist/src/matching/SkillMatcher.js +206 -0
- package/dist/src/matching/SkillMatcher.js.map +1 -0
- package/dist/src/matching/index.d.ts +14 -0
- package/dist/src/matching/index.d.ts.map +1 -0
- package/dist/src/matching/index.js +12 -0
- package/dist/src/matching/index.js.map +1 -0
- package/dist/src/pipeline/DailyIndexPipeline.d.ts +220 -0
- package/dist/src/pipeline/DailyIndexPipeline.d.ts.map +1 -0
- package/dist/src/pipeline/DailyIndexPipeline.js +320 -0
- package/dist/src/pipeline/DailyIndexPipeline.js.map +1 -0
- package/dist/src/pipeline/index.d.ts +9 -0
- package/dist/src/pipeline/index.d.ts.map +1 -0
- package/dist/src/pipeline/index.js +9 -0
- package/dist/src/pipeline/index.js.map +1 -0
- package/dist/src/repositories/CacheRepository.d.ts +60 -0
- package/dist/src/repositories/CacheRepository.d.ts.map +1 -0
- package/dist/src/repositories/CacheRepository.js +148 -0
- package/dist/src/repositories/CacheRepository.js.map +1 -0
- package/dist/src/repositories/IndexerRepository.d.ts +126 -0
- package/dist/src/repositories/IndexerRepository.d.ts.map +1 -0
- package/dist/src/repositories/IndexerRepository.js +270 -0
- package/dist/src/repositories/IndexerRepository.js.map +1 -0
- package/dist/src/repositories/QuarantineRepository.d.ts +255 -0
- package/dist/src/repositories/QuarantineRepository.d.ts.map +1 -0
- package/dist/src/repositories/QuarantineRepository.js +445 -0
- package/dist/src/repositories/QuarantineRepository.js.map +1 -0
- package/dist/src/repositories/SkillRepository.d.ts +78 -0
- package/dist/src/repositories/SkillRepository.d.ts.map +1 -0
- package/dist/src/repositories/SkillRepository.js +208 -0
- package/dist/src/repositories/SkillRepository.js.map +1 -0
- package/dist/src/scoring/QualityScorer.d.ts +188 -0
- package/dist/src/scoring/QualityScorer.d.ts.map +1 -0
- package/dist/src/scoring/QualityScorer.js +342 -0
- package/dist/src/scoring/QualityScorer.js.map +1 -0
- package/dist/src/scoring/index.d.ts +9 -0
- package/dist/src/scoring/index.d.ts.map +1 -0
- package/dist/src/scoring/index.js +9 -0
- package/dist/src/scoring/index.js.map +1 -0
- package/dist/src/scripts/__tests__/scan-imported-skills.test.d.ts +5 -0
- package/dist/src/scripts/__tests__/scan-imported-skills.test.d.ts.map +1 -0
- package/dist/src/scripts/__tests__/scan-imported-skills.test.js +365 -0
- package/dist/src/scripts/__tests__/scan-imported-skills.test.js.map +1 -0
- package/dist/src/scripts/import-github-skills.d.ts +24 -0
- package/dist/src/scripts/import-github-skills.d.ts.map +1 -0
- package/dist/src/scripts/import-github-skills.js +545 -0
- package/dist/src/scripts/import-github-skills.js.map +1 -0
- package/dist/src/scripts/import-to-database.d.ts +60 -0
- package/dist/src/scripts/import-to-database.d.ts.map +1 -0
- package/dist/src/scripts/import-to-database.js +307 -0
- package/dist/src/scripts/import-to-database.js.map +1 -0
- package/dist/src/scripts/scan-imported-skills.d.ts +15 -0
- package/dist/src/scripts/scan-imported-skills.d.ts.map +1 -0
- package/dist/src/scripts/scan-imported-skills.js +405 -0
- package/dist/src/scripts/scan-imported-skills.js.map +1 -0
- package/dist/src/scripts/validate-skills.d.ts +180 -0
- package/dist/src/scripts/validate-skills.d.ts.map +1 -0
- package/dist/src/scripts/validate-skills.js +572 -0
- package/dist/src/scripts/validate-skills.js.map +1 -0
- package/dist/src/search/hybrid.d.ts +85 -0
- package/dist/src/search/hybrid.d.ts.map +1 -0
- package/dist/src/search/hybrid.js +291 -0
- package/dist/src/search/hybrid.js.map +1 -0
- package/dist/src/search/index.d.ts +6 -0
- package/dist/src/search/index.d.ts.map +1 -0
- package/dist/src/search/index.js +5 -0
- package/dist/src/search/index.js.map +1 -0
- package/dist/src/security/AuditLogger.d.ts +197 -0
- package/dist/src/security/AuditLogger.d.ts.map +1 -0
- package/dist/src/security/AuditLogger.js +398 -0
- package/dist/src/security/AuditLogger.js.map +1 -0
- package/dist/src/security/RateLimiter.d.ts +337 -0
- package/dist/src/security/RateLimiter.d.ts.map +1 -0
- package/dist/src/security/RateLimiter.js +782 -0
- package/dist/src/security/RateLimiter.js.map +1 -0
- package/dist/src/security/__tests__/pathValidation.test.d.ts +8 -0
- package/dist/src/security/__tests__/pathValidation.test.d.ts.map +1 -0
- package/dist/src/security/__tests__/pathValidation.test.js +249 -0
- package/dist/src/security/__tests__/pathValidation.test.js.map +1 -0
- package/dist/src/security/index.d.ts +18 -0
- package/dist/src/security/index.d.ts.map +1 -0
- package/dist/src/security/index.js +14 -0
- package/dist/src/security/index.js.map +1 -0
- package/dist/src/security/pathValidation.d.ts +95 -0
- package/dist/src/security/pathValidation.d.ts.map +1 -0
- package/dist/src/security/pathValidation.js +216 -0
- package/dist/src/security/pathValidation.js.map +1 -0
- package/dist/src/security/sanitization.d.ts +123 -0
- package/dist/src/security/sanitization.d.ts.map +1 -0
- package/dist/src/security/sanitization.js +378 -0
- package/dist/src/security/sanitization.js.map +1 -0
- package/dist/src/security/scanner.d.ts +151 -0
- package/dist/src/security/scanner.d.ts.map +1 -0
- package/dist/src/security/scanner.js +599 -0
- package/dist/src/security/scanner.js.map +1 -0
- package/dist/src/services/SearchService.d.ts +88 -0
- package/dist/src/services/SearchService.d.ts.map +1 -0
- package/dist/src/services/SearchService.js +305 -0
- package/dist/src/services/SearchService.js.map +1 -0
- package/dist/src/session/SessionContext.d.ts +116 -0
- package/dist/src/session/SessionContext.d.ts.map +1 -0
- package/dist/src/session/SessionContext.js +134 -0
- package/dist/src/session/SessionContext.js.map +1 -0
- package/dist/src/session/SessionHealthMonitor.d.ts +249 -0
- package/dist/src/session/SessionHealthMonitor.d.ts.map +1 -0
- package/dist/src/session/SessionHealthMonitor.js +302 -0
- package/dist/src/session/SessionHealthMonitor.js.map +1 -0
- package/dist/src/session/SessionManager.d.ts +179 -0
- package/dist/src/session/SessionManager.d.ts.map +1 -0
- package/dist/src/session/SessionManager.js +451 -0
- package/dist/src/session/SessionManager.js.map +1 -0
- package/dist/src/session/SessionRecovery.d.ts +84 -0
- package/dist/src/session/SessionRecovery.d.ts.map +1 -0
- package/dist/src/session/SessionRecovery.js +257 -0
- package/dist/src/session/SessionRecovery.js.map +1 -0
- package/dist/src/session/index.d.ts +40 -0
- package/dist/src/session/index.d.ts.map +1 -0
- package/dist/src/session/index.js +44 -0
- package/dist/src/session/index.js.map +1 -0
- package/dist/src/sources/BaseSourceAdapter.d.ts +144 -0
- package/dist/src/sources/BaseSourceAdapter.d.ts.map +1 -0
- package/dist/src/sources/BaseSourceAdapter.js +287 -0
- package/dist/src/sources/BaseSourceAdapter.js.map +1 -0
- package/dist/src/sources/GitHubSourceAdapter.d.ts +98 -0
- package/dist/src/sources/GitHubSourceAdapter.d.ts.map +1 -0
- package/dist/src/sources/GitHubSourceAdapter.js +269 -0
- package/dist/src/sources/GitHubSourceAdapter.js.map +1 -0
- package/dist/src/sources/GitLabSourceAdapter.d.ts +102 -0
- package/dist/src/sources/GitLabSourceAdapter.d.ts.map +1 -0
- package/dist/src/sources/GitLabSourceAdapter.js +310 -0
- package/dist/src/sources/GitLabSourceAdapter.js.map +1 -0
- package/dist/src/sources/ISourceAdapter.d.ts +110 -0
- package/dist/src/sources/ISourceAdapter.d.ts.map +1 -0
- package/dist/src/sources/ISourceAdapter.js +19 -0
- package/dist/src/sources/ISourceAdapter.js.map +1 -0
- package/dist/src/sources/LocalFilesystemAdapter.d.ts +112 -0
- package/dist/src/sources/LocalFilesystemAdapter.d.ts.map +1 -0
- package/dist/src/sources/LocalFilesystemAdapter.js +340 -0
- package/dist/src/sources/LocalFilesystemAdapter.js.map +1 -0
- package/dist/src/sources/RawUrlSourceAdapter.d.ts +128 -0
- package/dist/src/sources/RawUrlSourceAdapter.d.ts.map +1 -0
- package/dist/src/sources/RawUrlSourceAdapter.js +282 -0
- package/dist/src/sources/RawUrlSourceAdapter.js.map +1 -0
- package/dist/src/sources/SourceAdapterRegistry.d.ts +156 -0
- package/dist/src/sources/SourceAdapterRegistry.d.ts.map +1 -0
- package/dist/src/sources/SourceAdapterRegistry.js +242 -0
- package/dist/src/sources/SourceAdapterRegistry.js.map +1 -0
- package/dist/src/sources/SourceIndexer.d.ts +119 -0
- package/dist/src/sources/SourceIndexer.d.ts.map +1 -0
- package/dist/src/sources/SourceIndexer.js +285 -0
- package/dist/src/sources/SourceIndexer.js.map +1 -0
- package/dist/src/sources/index.d.ts +45 -0
- package/dist/src/sources/index.d.ts.map +1 -0
- package/dist/src/sources/index.js +51 -0
- package/dist/src/sources/index.js.map +1 -0
- package/dist/src/sources/shared.d.ts +125 -0
- package/dist/src/sources/shared.d.ts.map +1 -0
- package/dist/src/sources/shared.js +191 -0
- package/dist/src/sources/shared.js.map +1 -0
- package/dist/src/sources/types.d.ts +204 -0
- package/dist/src/sources/types.d.ts.map +1 -0
- package/dist/src/sources/types.js +6 -0
- package/dist/src/sources/types.js.map +1 -0
- package/dist/src/telemetry/index.d.ts +25 -0
- package/dist/src/telemetry/index.d.ts.map +1 -0
- package/dist/src/telemetry/index.js +32 -0
- package/dist/src/telemetry/index.js.map +1 -0
- package/dist/src/telemetry/metrics.d.ts +171 -0
- package/dist/src/telemetry/metrics.d.ts.map +1 -0
- package/dist/src/telemetry/metrics.js +401 -0
- package/dist/src/telemetry/metrics.js.map +1 -0
- package/dist/src/telemetry/prometheus.d.ts +81 -0
- package/dist/src/telemetry/prometheus.d.ts.map +1 -0
- package/dist/src/telemetry/prometheus.js +252 -0
- package/dist/src/telemetry/prometheus.js.map +1 -0
- package/dist/src/telemetry/tracer.d.ts +151 -0
- package/dist/src/telemetry/tracer.d.ts.map +1 -0
- package/dist/src/telemetry/tracer.js +391 -0
- package/dist/src/telemetry/tracer.js.map +1 -0
- package/dist/src/triggers/ContextScorer.d.ts +118 -0
- package/dist/src/triggers/ContextScorer.d.ts.map +1 -0
- package/dist/src/triggers/ContextScorer.js +265 -0
- package/dist/src/triggers/ContextScorer.js.map +1 -0
- package/dist/src/triggers/TriggerDetector.d.ts +178 -0
- package/dist/src/triggers/TriggerDetector.d.ts.map +1 -0
- package/dist/src/triggers/TriggerDetector.js +390 -0
- package/dist/src/triggers/TriggerDetector.js.map +1 -0
- package/dist/src/triggers/__tests__/ContextScorer.test.d.ts +6 -0
- package/dist/src/triggers/__tests__/ContextScorer.test.d.ts.map +1 -0
- package/dist/src/triggers/__tests__/ContextScorer.test.js +307 -0
- package/dist/src/triggers/__tests__/ContextScorer.test.js.map +1 -0
- package/dist/src/triggers/__tests__/TriggerDetector.test.d.ts +6 -0
- package/dist/src/triggers/__tests__/TriggerDetector.test.d.ts.map +1 -0
- package/dist/src/triggers/__tests__/TriggerDetector.test.js +249 -0
- package/dist/src/triggers/__tests__/TriggerDetector.test.js.map +1 -0
- package/dist/src/triggers/index.d.ts +8 -0
- package/dist/src/triggers/index.d.ts.map +1 -0
- package/dist/src/triggers/index.js +8 -0
- package/dist/src/triggers/index.js.map +1 -0
- package/dist/src/types/skill.d.ts +80 -0
- package/dist/src/types/skill.d.ts.map +1 -0
- package/dist/src/types/skill.js +5 -0
- package/dist/src/types/skill.js.map +1 -0
- package/dist/src/types.d.ts +88 -0
- package/dist/src/types.d.ts.map +1 -0
- package/dist/src/types.js +13 -0
- package/dist/src/types.js.map +1 -0
- package/dist/src/utils/index.d.ts +6 -0
- package/dist/src/utils/index.d.ts.map +1 -0
- package/dist/src/utils/index.js +6 -0
- package/dist/src/utils/index.js.map +1 -0
- package/dist/src/utils/logger.d.ts +172 -0
- package/dist/src/utils/logger.d.ts.map +1 -0
- package/dist/src/utils/logger.js +291 -0
- package/dist/src/utils/logger.js.map +1 -0
- package/dist/src/utils/retry.d.ts +97 -0
- package/dist/src/utils/retry.d.ts.map +1 -0
- package/dist/src/utils/retry.js +267 -0
- package/dist/src/utils/retry.js.map +1 -0
- package/dist/src/validation/index.d.ts +118 -0
- package/dist/src/validation/index.d.ts.map +1 -0
- package/dist/src/validation/index.js +434 -0
- package/dist/src/validation/index.js.map +1 -0
- package/dist/src/webhooks/WebhookHandler.d.ts +117 -0
- package/dist/src/webhooks/WebhookHandler.d.ts.map +1 -0
- package/dist/src/webhooks/WebhookHandler.js +349 -0
- package/dist/src/webhooks/WebhookHandler.js.map +1 -0
- package/dist/src/webhooks/WebhookPayload.d.ts +238 -0
- package/dist/src/webhooks/WebhookPayload.d.ts.map +1 -0
- package/dist/src/webhooks/WebhookPayload.js +244 -0
- package/dist/src/webhooks/WebhookPayload.js.map +1 -0
- package/dist/src/webhooks/WebhookQueue.d.ts +227 -0
- package/dist/src/webhooks/WebhookQueue.d.ts.map +1 -0
- package/dist/src/webhooks/WebhookQueue.js +328 -0
- package/dist/src/webhooks/WebhookQueue.js.map +1 -0
- package/dist/src/webhooks/index.d.ts +12 -0
- package/dist/src/webhooks/index.d.ts.map +1 -0
- package/dist/src/webhooks/index.js +15 -0
- package/dist/src/webhooks/index.js.map +1 -0
- package/dist/tests/Analytics.integration.test.d.ts +7 -0
- package/dist/tests/Analytics.integration.test.d.ts.map +1 -0
- package/dist/tests/Analytics.integration.test.js +367 -0
- package/dist/tests/Analytics.integration.test.js.map +1 -0
- package/dist/tests/AnalyticsRepository.test.d.ts +8 -0
- package/dist/tests/AnalyticsRepository.test.d.ts.map +1 -0
- package/dist/tests/AnalyticsRepository.test.js +399 -0
- package/dist/tests/AnalyticsRepository.test.js.map +1 -0
- package/dist/tests/AnalyticsStorage.test.d.ts +8 -0
- package/dist/tests/AnalyticsStorage.test.d.ts.map +1 -0
- package/dist/tests/AnalyticsStorage.test.js +271 -0
- package/dist/tests/AnalyticsStorage.test.js.map +1 -0
- package/dist/tests/AuditLogger.test.d.ts +8 -0
- package/dist/tests/AuditLogger.test.d.ts.map +1 -0
- package/dist/tests/AuditLogger.test.js +699 -0
- package/dist/tests/AuditLogger.test.js.map +1 -0
- package/dist/tests/BenchmarkRunner.test.d.ts +11 -0
- package/dist/tests/BenchmarkRunner.test.d.ts.map +1 -0
- package/dist/tests/BenchmarkRunner.test.js +641 -0
- package/dist/tests/BenchmarkRunner.test.js.map +1 -0
- package/dist/tests/CacheRepository.test.d.ts +5 -0
- package/dist/tests/CacheRepository.test.d.ts.map +1 -0
- package/dist/tests/CacheRepository.test.js +184 -0
- package/dist/tests/CacheRepository.test.js.map +1 -0
- package/dist/tests/CacheSecurity.test.d.ts +8 -0
- package/dist/tests/CacheSecurity.test.d.ts.map +1 -0
- package/dist/tests/CacheSecurity.test.js +273 -0
- package/dist/tests/CacheSecurity.test.js.map +1 -0
- package/dist/tests/CodebaseAnalyzer.test.d.ts +2 -0
- package/dist/tests/CodebaseAnalyzer.test.d.ts.map +1 -0
- package/dist/tests/CodebaseAnalyzer.test.js +347 -0
- package/dist/tests/CodebaseAnalyzer.test.js.map +1 -0
- package/dist/tests/DailyIndexPipeline.test.d.ts +7 -0
- package/dist/tests/DailyIndexPipeline.test.d.ts.map +1 -0
- package/dist/tests/DailyIndexPipeline.test.js +539 -0
- package/dist/tests/DailyIndexPipeline.test.js.map +1 -0
- package/dist/tests/EmbeddingService.test.d.ts +2 -0
- package/dist/tests/EmbeddingService.test.d.ts.map +1 -0
- package/dist/tests/EmbeddingService.test.js +252 -0
- package/dist/tests/EmbeddingService.test.js.map +1 -0
- package/dist/tests/ExperimentService.test.d.ts +7 -0
- package/dist/tests/ExperimentService.test.d.ts.map +1 -0
- package/dist/tests/ExperimentService.test.js +293 -0
- package/dist/tests/ExperimentService.test.js.map +1 -0
- package/dist/tests/GitHubIndexer.test.d.ts +10 -0
- package/dist/tests/GitHubIndexer.test.d.ts.map +1 -0
- package/dist/tests/GitHubIndexer.test.js +524 -0
- package/dist/tests/GitHubIndexer.test.js.map +1 -0
- package/dist/tests/GitHubSourceAdapter.test.d.ts +5 -0
- package/dist/tests/GitHubSourceAdapter.test.d.ts.map +1 -0
- package/dist/tests/GitHubSourceAdapter.test.js +385 -0
- package/dist/tests/GitHubSourceAdapter.test.js.map +1 -0
- package/dist/tests/MemoryProfiler.test.d.ts +12 -0
- package/dist/tests/MemoryProfiler.test.d.ts.map +1 -0
- package/dist/tests/MemoryProfiler.test.js +402 -0
- package/dist/tests/MemoryProfiler.test.js.map +1 -0
- package/dist/tests/OverlapDetector.test.d.ts +2 -0
- package/dist/tests/OverlapDetector.test.d.ts.map +1 -0
- package/dist/tests/OverlapDetector.test.js +340 -0
- package/dist/tests/OverlapDetector.test.js.map +1 -0
- package/dist/tests/QualityScorer.test.d.ts +7 -0
- package/dist/tests/QualityScorer.test.d.ts.map +1 -0
- package/dist/tests/QualityScorer.test.js +340 -0
- package/dist/tests/QualityScorer.test.js.map +1 -0
- package/dist/tests/QuarantineRepository.test.d.ts +7 -0
- package/dist/tests/QuarantineRepository.test.d.ts.map +1 -0
- package/dist/tests/QuarantineRepository.test.js +582 -0
- package/dist/tests/QuarantineRepository.test.js.map +1 -0
- package/dist/tests/ROIDashboardService.test.d.ts +7 -0
- package/dist/tests/ROIDashboardService.test.d.ts.map +1 -0
- package/dist/tests/ROIDashboardService.test.js +324 -0
- package/dist/tests/ROIDashboardService.test.js.map +1 -0
- package/dist/tests/RateLimiter.test.d.ts +7 -0
- package/dist/tests/RateLimiter.test.d.ts.map +1 -0
- package/dist/tests/RateLimiter.test.js +1017 -0
- package/dist/tests/RateLimiter.test.js.map +1 -0
- package/dist/tests/RawUrlSourceAdapter.security.test.d.ts +7 -0
- package/dist/tests/RawUrlSourceAdapter.security.test.d.ts.map +1 -0
- package/dist/tests/RawUrlSourceAdapter.security.test.js +455 -0
- package/dist/tests/RawUrlSourceAdapter.security.test.js.map +1 -0
- package/dist/tests/ScraperAdapters.test.d.ts +7 -0
- package/dist/tests/ScraperAdapters.test.d.ts.map +1 -0
- package/dist/tests/ScraperAdapters.test.js +748 -0
- package/dist/tests/ScraperAdapters.test.js.map +1 -0
- package/dist/tests/SearchQuality.test.d.ts +8 -0
- package/dist/tests/SearchQuality.test.d.ts.map +1 -0
- package/dist/tests/SearchQuality.test.js +397 -0
- package/dist/tests/SearchQuality.test.js.map +1 -0
- package/dist/tests/SearchService.test.d.ts +5 -0
- package/dist/tests/SearchService.test.d.ts.map +1 -0
- package/dist/tests/SearchService.test.js +218 -0
- package/dist/tests/SearchService.test.js.map +1 -0
- package/dist/tests/SecurityScanner.test.d.ts +6 -0
- package/dist/tests/SecurityScanner.test.d.ts.map +1 -0
- package/dist/tests/SecurityScanner.test.js +449 -0
- package/dist/tests/SecurityScanner.test.js.map +1 -0
- package/dist/tests/SessionHealthMonitor.test.d.ts +5 -0
- package/dist/tests/SessionHealthMonitor.test.d.ts.map +1 -0
- package/dist/tests/SessionHealthMonitor.test.js +449 -0
- package/dist/tests/SessionHealthMonitor.test.js.map +1 -0
- package/dist/tests/SessionManager.security.test.d.ts +10 -0
- package/dist/tests/SessionManager.security.test.d.ts.map +1 -0
- package/dist/tests/SessionManager.security.test.js +395 -0
- package/dist/tests/SessionManager.security.test.js.map +1 -0
- package/dist/tests/SessionManager.test.d.ts +8 -0
- package/dist/tests/SessionManager.test.d.ts.map +1 -0
- package/dist/tests/SessionManager.test.js +446 -0
- package/dist/tests/SessionManager.test.js.map +1 -0
- package/dist/tests/SkillMatcher.test.d.ts +2 -0
- package/dist/tests/SkillMatcher.test.d.ts.map +1 -0
- package/dist/tests/SkillMatcher.test.js +253 -0
- package/dist/tests/SkillMatcher.test.js.map +1 -0
- package/dist/tests/SkillRepository.test.d.ts +5 -0
- package/dist/tests/SkillRepository.test.d.ts.map +1 -0
- package/dist/tests/SkillRepository.test.js +237 -0
- package/dist/tests/SkillRepository.test.js.map +1 -0
- package/dist/tests/SwarmIndexer.test.d.ts +11 -0
- package/dist/tests/SwarmIndexer.test.d.ts.map +1 -0
- package/dist/tests/SwarmIndexer.test.js +374 -0
- package/dist/tests/SwarmIndexer.test.js.map +1 -0
- package/dist/tests/TieredCache.test.d.ts +7 -0
- package/dist/tests/TieredCache.test.d.ts.map +1 -0
- package/dist/tests/TieredCache.test.js +529 -0
- package/dist/tests/TieredCache.test.js.map +1 -0
- package/dist/tests/UsageAnalyticsService.test.d.ts +7 -0
- package/dist/tests/UsageAnalyticsService.test.d.ts.map +1 -0
- package/dist/tests/UsageAnalyticsService.test.js +238 -0
- package/dist/tests/UsageAnalyticsService.test.js.map +1 -0
- package/dist/tests/UsageTracker.test.d.ts +7 -0
- package/dist/tests/UsageTracker.test.d.ts.map +1 -0
- package/dist/tests/UsageTracker.test.js +196 -0
- package/dist/tests/UsageTracker.test.js.map +1 -0
- package/dist/tests/WebhookHandler.test.d.ts +10 -0
- package/dist/tests/WebhookHandler.test.d.ts.map +1 -0
- package/dist/tests/WebhookHandler.test.js +592 -0
- package/dist/tests/WebhookHandler.test.js.map +1 -0
- package/dist/tests/analytics/metrics-aggregator.test.d.ts +11 -0
- package/dist/tests/analytics/metrics-aggregator.test.d.ts.map +1 -0
- package/dist/tests/analytics/metrics-aggregator.test.js +273 -0
- package/dist/tests/analytics/metrics-aggregator.test.js.map +1 -0
- package/dist/tests/analytics/metrics-exporter.test.d.ts +11 -0
- package/dist/tests/analytics/metrics-exporter.test.d.ts.map +1 -0
- package/dist/tests/analytics/metrics-exporter.test.js +371 -0
- package/dist/tests/analytics/metrics-exporter.test.js.map +1 -0
- package/dist/tests/analytics/usage-tracker.test.d.ts +10 -0
- package/dist/tests/analytics/usage-tracker.test.d.ts.map +1 -0
- package/dist/tests/analytics/usage-tracker.test.js +151 -0
- package/dist/tests/analytics/usage-tracker.test.js.map +1 -0
- package/dist/tests/anonymizer.test.d.ts +8 -0
- package/dist/tests/anonymizer.test.d.ts.map +1 -0
- package/dist/tests/anonymizer.test.js +153 -0
- package/dist/tests/anonymizer.test.js.map +1 -0
- package/dist/tests/cache.test.d.ts +6 -0
- package/dist/tests/cache.test.d.ts.map +1 -0
- package/dist/tests/cache.test.js +170 -0
- package/dist/tests/cache.test.js.map +1 -0
- package/dist/tests/e2e/security/security.e2e.test.d.ts +8 -0
- package/dist/tests/e2e/security/security.e2e.test.d.ts.map +1 -0
- package/dist/tests/e2e/security/security.e2e.test.js +448 -0
- package/dist/tests/e2e/security/security.e2e.test.js.map +1 -0
- package/dist/tests/edge-cases/EdgeCases.test.d.ts +13 -0
- package/dist/tests/edge-cases/EdgeCases.test.d.ts.map +1 -0
- package/dist/tests/edge-cases/EdgeCases.test.js +844 -0
- package/dist/tests/edge-cases/EdgeCases.test.js.map +1 -0
- package/dist/tests/import-github-skills.test.d.ts +8 -0
- package/dist/tests/import-github-skills.test.d.ts.map +1 -0
- package/dist/tests/import-github-skills.test.js +390 -0
- package/dist/tests/import-github-skills.test.js.map +1 -0
- package/dist/tests/logger.test.d.ts +2 -0
- package/dist/tests/logger.test.d.ts.map +1 -0
- package/dist/tests/logger.test.js +417 -0
- package/dist/tests/logger.test.js.map +1 -0
- package/dist/tests/performance/LargeScalePerformance.test.d.ts +14 -0
- package/dist/tests/performance/LargeScalePerformance.test.d.ts.map +1 -0
- package/dist/tests/performance/LargeScalePerformance.test.js +558 -0
- package/dist/tests/performance/LargeScalePerformance.test.js.map +1 -0
- package/dist/tests/retry.test.d.ts +7 -0
- package/dist/tests/retry.test.d.ts.map +1 -0
- package/dist/tests/retry.test.js +302 -0
- package/dist/tests/retry.test.js.map +1 -0
- package/dist/tests/sanitization.test.d.ts +8 -0
- package/dist/tests/sanitization.test.d.ts.map +1 -0
- package/dist/tests/sanitization.test.js +413 -0
- package/dist/tests/sanitization.test.js.map +1 -0
- package/dist/tests/schema.test.d.ts +5 -0
- package/dist/tests/schema.test.d.ts.map +1 -0
- package/dist/tests/schema.test.js +167 -0
- package/dist/tests/schema.test.js.map +1 -0
- package/dist/tests/scripts/import-to-database.test.d.ts +11 -0
- package/dist/tests/scripts/import-to-database.test.d.ts.map +1 -0
- package/dist/tests/scripts/import-to-database.test.js +325 -0
- package/dist/tests/scripts/import-to-database.test.js.map +1 -0
- package/dist/tests/security/ContinuousSecurity.test.d.ts +6 -0
- package/dist/tests/security/ContinuousSecurity.test.d.ts.map +1 -0
- package/dist/tests/security/ContinuousSecurity.test.js +595 -0
- package/dist/tests/security/ContinuousSecurity.test.js.map +1 -0
- package/dist/tests/security/ReDoS.test.d.ts +8 -0
- package/dist/tests/security/ReDoS.test.d.ts.map +1 -0
- package/dist/tests/security/ReDoS.test.js +213 -0
- package/dist/tests/security/ReDoS.test.js.map +1 -0
- package/dist/tests/security.test.d.ts +5 -0
- package/dist/tests/security.test.d.ts.map +1 -0
- package/dist/tests/security.test.js +134 -0
- package/dist/tests/security.test.js.map +1 -0
- package/dist/tests/shared.test.d.ts +7 -0
- package/dist/tests/shared.test.d.ts.map +1 -0
- package/dist/tests/shared.test.js +480 -0
- package/dist/tests/shared.test.js.map +1 -0
- package/dist/tests/sources.test.d.ts +5 -0
- package/dist/tests/sources.test.d.ts.map +1 -0
- package/dist/tests/sources.test.js +369 -0
- package/dist/tests/sources.test.js.map +1 -0
- package/dist/tests/stats.test.d.ts +11 -0
- package/dist/tests/stats.test.d.ts.map +1 -0
- package/dist/tests/stats.test.js +124 -0
- package/dist/tests/stats.test.js.map +1 -0
- package/dist/tests/telemetry.test.d.ts +11 -0
- package/dist/tests/telemetry.test.d.ts.map +1 -0
- package/dist/tests/telemetry.test.js +424 -0
- package/dist/tests/telemetry.test.js.map +1 -0
- package/dist/tests/test-utils.d.ts +74 -0
- package/dist/tests/test-utils.d.ts.map +1 -0
- package/dist/tests/test-utils.js +98 -0
- package/dist/tests/test-utils.js.map +1 -0
- package/dist/tests/validate-skills.test.d.ts +5 -0
- package/dist/tests/validate-skills.test.d.ts.map +1 -0
- package/dist/tests/validate-skills.test.js +649 -0
- package/dist/tests/validate-skills.test.js.map +1 -0
- package/dist/tests/validation.test.d.ts +7 -0
- package/dist/tests/validation.test.d.ts.map +1 -0
- package/dist/tests/validation.test.js +495 -0
- package/dist/tests/validation.test.js.map +1 -0
- package/dist/tests/webhooks/WebhookHandler.idempotency.test.d.ts +8 -0
- package/dist/tests/webhooks/WebhookHandler.idempotency.test.d.ts.map +1 -0
- package/dist/tests/webhooks/WebhookHandler.idempotency.test.js +190 -0
- package/dist/tests/webhooks/WebhookHandler.idempotency.test.js.map +1 -0
- package/dist/tests/webhooks/WebhookPayload.security.test.d.ts +8 -0
- package/dist/tests/webhooks/WebhookPayload.security.test.d.ts.map +1 -0
- package/dist/tests/webhooks/WebhookPayload.security.test.js +204 -0
- package/dist/tests/webhooks/WebhookPayload.security.test.js.map +1 -0
- package/dist/vitest.config.d.ts +3 -0
- package/dist/vitest.config.d.ts.map +1 -0
- package/dist/vitest.config.js +13 -0
- package/dist/vitest.config.js.map +1 -0
- package/package.json +77 -0
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Type definitions for Recommendation Learning Loop
|
|
3
|
+
* @module @skillsmith/core/learning/types
|
|
4
|
+
* @see docs/phase4/epic1/recommendation-learning-loop-design.md
|
|
5
|
+
*
|
|
6
|
+
* Epic 1 - Sub-issue 5: Build Recommendation Learning Loop
|
|
7
|
+
* Owner: Data Scientist
|
|
8
|
+
*
|
|
9
|
+
* Provides type-safe interfaces for:
|
|
10
|
+
* - Signal collection (accept/dismiss/usage)
|
|
11
|
+
* - User preference profiles
|
|
12
|
+
* - Learning algorithm configuration
|
|
13
|
+
* - Privacy-preserving storage
|
|
14
|
+
*/
|
|
15
|
+
/**
|
|
16
|
+
* User interaction signal types for recommendation learning
|
|
17
|
+
*/
|
|
18
|
+
export var SignalType;
|
|
19
|
+
(function (SignalType) {
|
|
20
|
+
/** User accepted and installed recommended skill */
|
|
21
|
+
SignalType["ACCEPT"] = "accept";
|
|
22
|
+
/** User explicitly dismissed recommendation */
|
|
23
|
+
SignalType["DISMISS"] = "dismiss";
|
|
24
|
+
/** User actively uses installed skill (daily usage) */
|
|
25
|
+
SignalType["USAGE_DAILY"] = "usage_daily";
|
|
26
|
+
/** User rarely uses installed skill (weekly usage) */
|
|
27
|
+
SignalType["USAGE_WEEKLY"] = "usage_weekly";
|
|
28
|
+
/** Skill installed but never used (30+ days) */
|
|
29
|
+
SignalType["ABANDONED"] = "abandoned";
|
|
30
|
+
/** User uninstalled previously accepted skill */
|
|
31
|
+
SignalType["UNINSTALL"] = "uninstall";
|
|
32
|
+
})(SignalType || (SignalType = {}));
|
|
33
|
+
/**
|
|
34
|
+
* Signal strength weights for learning algorithm
|
|
35
|
+
* Range: [-1.0, 1.0] where:
|
|
36
|
+
* - Positive = user preference signal
|
|
37
|
+
* - Negative = user rejection signal
|
|
38
|
+
*/
|
|
39
|
+
export const SIGNAL_WEIGHTS = {
|
|
40
|
+
[SignalType.ACCEPT]: 0.5,
|
|
41
|
+
[SignalType.DISMISS]: -0.3,
|
|
42
|
+
[SignalType.USAGE_DAILY]: 1.0,
|
|
43
|
+
[SignalType.USAGE_WEEKLY]: 0.3,
|
|
44
|
+
[SignalType.ABANDONED]: -0.7,
|
|
45
|
+
[SignalType.UNINSTALL]: -1.0,
|
|
46
|
+
};
|
|
47
|
+
/**
|
|
48
|
+
* Reason for dismissing a recommendation
|
|
49
|
+
*/
|
|
50
|
+
export var DismissReason;
|
|
51
|
+
(function (DismissReason) {
|
|
52
|
+
/** Not relevant to current work */
|
|
53
|
+
DismissReason["NOT_RELEVANT"] = "not_relevant";
|
|
54
|
+
/** Already have similar functionality */
|
|
55
|
+
DismissReason["DUPLICATE"] = "duplicate";
|
|
56
|
+
/** Don't trust the source */
|
|
57
|
+
DismissReason["TRUST_ISSUE"] = "trust_issue";
|
|
58
|
+
/** Too complex/heavyweight */
|
|
59
|
+
DismissReason["TOO_COMPLEX"] = "too_complex";
|
|
60
|
+
/** No specific reason */
|
|
61
|
+
DismissReason["OTHER"] = "other";
|
|
62
|
+
})(DismissReason || (DismissReason = {}));
|
|
63
|
+
/**
|
|
64
|
+
* Skill category enum (aligned with skill schema)
|
|
65
|
+
*/
|
|
66
|
+
export var SkillCategory;
|
|
67
|
+
(function (SkillCategory) {
|
|
68
|
+
SkillCategory["GIT"] = "git";
|
|
69
|
+
SkillCategory["TESTING"] = "testing";
|
|
70
|
+
SkillCategory["DOCUMENTATION"] = "documentation";
|
|
71
|
+
SkillCategory["DEVOPS"] = "devops";
|
|
72
|
+
SkillCategory["FRONTEND"] = "frontend";
|
|
73
|
+
SkillCategory["BACKEND"] = "backend";
|
|
74
|
+
SkillCategory["DATABASE"] = "database";
|
|
75
|
+
SkillCategory["SECURITY"] = "security";
|
|
76
|
+
SkillCategory["PRODUCTIVITY"] = "productivity";
|
|
77
|
+
SkillCategory["ANALYSIS"] = "analysis";
|
|
78
|
+
})(SkillCategory || (SkillCategory = {}));
|
|
79
|
+
/**
|
|
80
|
+
* Default learning configuration
|
|
81
|
+
*/
|
|
82
|
+
export const DEFAULT_LEARNING_CONFIG = {
|
|
83
|
+
learning_rate: 0.1,
|
|
84
|
+
decay_factor: 0.95,
|
|
85
|
+
min_signals_threshold: 5,
|
|
86
|
+
weight_bounds: {
|
|
87
|
+
min: -2.0,
|
|
88
|
+
max: 2.0,
|
|
89
|
+
},
|
|
90
|
+
signal_retention_days: 90,
|
|
91
|
+
};
|
|
92
|
+
/**
|
|
93
|
+
* Cold start default weights (before personalization)
|
|
94
|
+
* Based on aggregate popularity data
|
|
95
|
+
*/
|
|
96
|
+
export const COLD_START_WEIGHTS = {
|
|
97
|
+
category_weights: {
|
|
98
|
+
[SkillCategory.TESTING]: 0.3,
|
|
99
|
+
[SkillCategory.GIT]: 0.3,
|
|
100
|
+
[SkillCategory.DEVOPS]: 0.2,
|
|
101
|
+
[SkillCategory.DOCUMENTATION]: 0.1,
|
|
102
|
+
[SkillCategory.FRONTEND]: 0.2,
|
|
103
|
+
[SkillCategory.BACKEND]: 0.2,
|
|
104
|
+
},
|
|
105
|
+
trust_tier_weights: {
|
|
106
|
+
verified: 0.2,
|
|
107
|
+
community: 0.0,
|
|
108
|
+
standard: -0.1,
|
|
109
|
+
unverified: -0.3,
|
|
110
|
+
},
|
|
111
|
+
};
|
|
112
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/learning/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH;;GAEG;AACH,MAAM,CAAN,IAAY,UAaX;AAbD,WAAY,UAAU;IACpB,oDAAoD;IACpD,+BAAiB,CAAA;IACjB,+CAA+C;IAC/C,iCAAmB,CAAA;IACnB,uDAAuD;IACvD,yCAA2B,CAAA;IAC3B,sDAAsD;IACtD,2CAA6B,CAAA;IAC7B,gDAAgD;IAChD,qCAAuB,CAAA;IACvB,iDAAiD;IACjD,qCAAuB,CAAA;AACzB,CAAC,EAbW,UAAU,KAAV,UAAU,QAarB;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,cAAc,GAAyC;IAClE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,GAAG;IACxB,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG;IAC1B,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,GAAG;IAC7B,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,GAAG;IAC9B,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG;IAC5B,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG;CACpB,CAAA;AAEV;;GAEG;AACH,MAAM,CAAN,IAAY,aAWX;AAXD,WAAY,aAAa;IACvB,mCAAmC;IACnC,8CAA6B,CAAA;IAC7B,yCAAyC;IACzC,wCAAuB,CAAA;IACvB,6BAA6B;IAC7B,4CAA2B,CAAA;IAC3B,8BAA8B;IAC9B,4CAA2B,CAAA;IAC3B,yBAAyB;IACzB,gCAAe,CAAA;AACjB,CAAC,EAXW,aAAa,KAAb,aAAa,QAWxB;AAED;;GAEG;AACH,MAAM,CAAN,IAAY,aAWX;AAXD,WAAY,aAAa;IACvB,4BAAW,CAAA;IACX,oCAAmB,CAAA;IACnB,gDAA+B,CAAA;IAC/B,kCAAiB,CAAA;IACjB,sCAAqB,CAAA;IACrB,oCAAmB,CAAA;IACnB,sCAAqB,CAAA;IACrB,sCAAqB,CAAA;IACrB,8CAA6B,CAAA;IAC7B,sCAAqB,CAAA;AACvB,CAAC,EAXW,aAAa,KAAb,aAAa,QAWxB;AAgJD;;GAEG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAA6B;IAC/D,aAAa,EAAE,GAAG;IAClB,YAAY,EAAE,IAAI;IAClB,qBAAqB,EAAE,CAAC;IACxB,aAAa,EAAE;QACb,GAAG,EAAE,CAAC,GAAG;QACT,GAAG,EAAE,GAAG;KACT;IACD,qBAAqB,EAAE,EAAE;CACjB,CAAA;AAEV;;;GAGG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAG1B;IACH,gBAAgB,EAAE;QAChB,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,GAAG;QAC5B,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,GAAG;QACxB,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,GAAG;QAC3B,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,GAAG;QAClC,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,GAAG;QAC7B,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,GAAG;KAC7B;IACD,kBAAkB,EAAE;QAClB,QAAQ,EAAE,GAAG;QACb,SAAS,EAAE,GAAG;QACd,QAAQ,EAAE,CAAC,GAAG;QACd,UAAU,EAAE,CAAC,GAAG;KACjB;CACO,CAAA"}
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Trigger phrase overlap detection for skills
|
|
3
|
+
* @module @skillsmith/core/matching/OverlapDetector
|
|
4
|
+
* @see SMI-604: Trigger phrase overlap detection
|
|
5
|
+
*
|
|
6
|
+
* Detects similarity between skill trigger phrases to prevent
|
|
7
|
+
* recommending skills that overlap too much with installed ones.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* const detector = new OverlapDetector({ useFallback: true });
|
|
11
|
+
* const overlap = await detector.detectOverlap(skill1, skill2);
|
|
12
|
+
* if (overlap.overlapScore > 0.8) {
|
|
13
|
+
* console.log('Skills are too similar:', overlap.overlappingPhrases);
|
|
14
|
+
* }
|
|
15
|
+
*/
|
|
16
|
+
import { type EmbeddingServiceOptions } from '../embeddings/index.js';
|
|
17
|
+
/**
|
|
18
|
+
* Skill with trigger phrases for overlap detection
|
|
19
|
+
*/
|
|
20
|
+
export interface TriggerPhraseSkill {
|
|
21
|
+
/** Unique skill identifier */
|
|
22
|
+
id: string;
|
|
23
|
+
/** Skill display name */
|
|
24
|
+
name: string;
|
|
25
|
+
/** Trigger phrases that activate this skill */
|
|
26
|
+
triggerPhrases: string[];
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Result of overlap detection between two skills
|
|
30
|
+
*/
|
|
31
|
+
export interface OverlapResult {
|
|
32
|
+
/** First skill ID */
|
|
33
|
+
skillId1: string;
|
|
34
|
+
/** Second skill ID */
|
|
35
|
+
skillId2: string;
|
|
36
|
+
/** Overall overlap score (0-1) */
|
|
37
|
+
overlapScore: number;
|
|
38
|
+
/** Specific phrases that overlap */
|
|
39
|
+
overlappingPhrases: Array<{
|
|
40
|
+
phrase1: string;
|
|
41
|
+
phrase2: string;
|
|
42
|
+
similarity: number;
|
|
43
|
+
}>;
|
|
44
|
+
/** Whether skills are considered duplicates */
|
|
45
|
+
isDuplicate: boolean;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Result of filtering skills by overlap
|
|
49
|
+
*/
|
|
50
|
+
export interface FilteredSkillsResult {
|
|
51
|
+
/** Skills that passed the overlap filter */
|
|
52
|
+
accepted: TriggerPhraseSkill[];
|
|
53
|
+
/** Skills that were rejected due to overlap */
|
|
54
|
+
rejected: Array<{
|
|
55
|
+
skill: TriggerPhraseSkill;
|
|
56
|
+
overlapsWith: string;
|
|
57
|
+
overlapScore: number;
|
|
58
|
+
}>;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Options for OverlapDetector
|
|
62
|
+
*/
|
|
63
|
+
export interface OverlapDetectorOptions extends EmbeddingServiceOptions {
|
|
64
|
+
/** Similarity threshold for phrase matching (0-1, default 0.75) */
|
|
65
|
+
phraseThreshold?: number;
|
|
66
|
+
/** Overall overlap threshold for skill rejection (0-1, default 0.6) */
|
|
67
|
+
overlapThreshold?: number;
|
|
68
|
+
/** Whether to use exact string matching in addition to semantic (default true) */
|
|
69
|
+
useExactMatch?: boolean;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Detects overlap between skill trigger phrases.
|
|
73
|
+
*
|
|
74
|
+
* Uses semantic similarity to identify skills that respond to
|
|
75
|
+
* similar user inputs, preventing confusing recommendations.
|
|
76
|
+
*
|
|
77
|
+
* @example
|
|
78
|
+
* const detector = new OverlapDetector({ overlapThreshold: 0.7 });
|
|
79
|
+
* const result = await detector.filterByOverlap(candidates, installed);
|
|
80
|
+
* // Use result.accepted for recommendations
|
|
81
|
+
*/
|
|
82
|
+
export declare class OverlapDetector {
|
|
83
|
+
private embeddingService;
|
|
84
|
+
private phraseEmbeddings;
|
|
85
|
+
private readonly phraseThreshold;
|
|
86
|
+
private readonly overlapThreshold;
|
|
87
|
+
private readonly useExactMatch;
|
|
88
|
+
constructor(options?: OverlapDetectorOptions);
|
|
89
|
+
/**
|
|
90
|
+
* Check if detector is using fallback mode
|
|
91
|
+
*/
|
|
92
|
+
isUsingFallback(): boolean;
|
|
93
|
+
/**
|
|
94
|
+
* Detect overlap between two skills.
|
|
95
|
+
*
|
|
96
|
+
* @param skill1 - First skill
|
|
97
|
+
* @param skill2 - Second skill
|
|
98
|
+
* @returns Detailed overlap analysis
|
|
99
|
+
*/
|
|
100
|
+
detectOverlap(skill1: TriggerPhraseSkill, skill2: TriggerPhraseSkill): Promise<OverlapResult>;
|
|
101
|
+
/**
|
|
102
|
+
* Check for exact string match (case-insensitive, normalized)
|
|
103
|
+
*/
|
|
104
|
+
private isExactMatch;
|
|
105
|
+
/**
|
|
106
|
+
* Get or compute embedding for a phrase
|
|
107
|
+
*/
|
|
108
|
+
private getPhraseEmbedding;
|
|
109
|
+
/**
|
|
110
|
+
* Filter candidate skills by overlap with installed skills.
|
|
111
|
+
*
|
|
112
|
+
* Removes candidates that have too much trigger phrase overlap
|
|
113
|
+
* with already installed skills.
|
|
114
|
+
*
|
|
115
|
+
* @param candidates - Skills to consider for recommendation
|
|
116
|
+
* @param installed - Currently installed skills
|
|
117
|
+
* @returns Filtered results with accepted and rejected skills
|
|
118
|
+
*
|
|
119
|
+
* @example
|
|
120
|
+
* const result = await detector.filterByOverlap(candidates, installed);
|
|
121
|
+
* console.log(`Accepted: ${result.accepted.length}`);
|
|
122
|
+
* console.log(`Rejected: ${result.rejected.length}`);
|
|
123
|
+
*/
|
|
124
|
+
filterByOverlap(candidates: TriggerPhraseSkill[], installed: TriggerPhraseSkill[]): Promise<FilteredSkillsResult>;
|
|
125
|
+
/**
|
|
126
|
+
* Find all overlapping skill pairs in a set.
|
|
127
|
+
*
|
|
128
|
+
* Useful for auditing a skill library for potential conflicts.
|
|
129
|
+
*
|
|
130
|
+
* @param skills - Skills to check for overlaps
|
|
131
|
+
* @returns List of overlapping pairs
|
|
132
|
+
*/
|
|
133
|
+
findAllOverlaps(skills: TriggerPhraseSkill[]): Promise<OverlapResult[]>;
|
|
134
|
+
/**
|
|
135
|
+
* Get overlap threshold
|
|
136
|
+
*/
|
|
137
|
+
getOverlapThreshold(): number;
|
|
138
|
+
/**
|
|
139
|
+
* Get phrase similarity threshold
|
|
140
|
+
*/
|
|
141
|
+
getPhraseThreshold(): number;
|
|
142
|
+
/**
|
|
143
|
+
* Clear cached embeddings
|
|
144
|
+
*/
|
|
145
|
+
clear(): void;
|
|
146
|
+
/**
|
|
147
|
+
* Close resources
|
|
148
|
+
*/
|
|
149
|
+
close(): void;
|
|
150
|
+
}
|
|
151
|
+
export default OverlapDetector;
|
|
152
|
+
//# sourceMappingURL=OverlapDetector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OverlapDetector.d.ts","sourceRoot":"","sources":["../../../src/matching/OverlapDetector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAoB,KAAK,uBAAuB,EAAE,MAAM,wBAAwB,CAAA;AAEvF;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,8BAA8B;IAC9B,EAAE,EAAE,MAAM,CAAA;IACV,yBAAyB;IACzB,IAAI,EAAE,MAAM,CAAA;IACZ,+CAA+C;IAC/C,cAAc,EAAE,MAAM,EAAE,CAAA;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,qBAAqB;IACrB,QAAQ,EAAE,MAAM,CAAA;IAChB,sBAAsB;IACtB,QAAQ,EAAE,MAAM,CAAA;IAChB,kCAAkC;IAClC,YAAY,EAAE,MAAM,CAAA;IACpB,oCAAoC;IACpC,kBAAkB,EAAE,KAAK,CAAC;QACxB,OAAO,EAAE,MAAM,CAAA;QACf,OAAO,EAAE,MAAM,CAAA;QACf,UAAU,EAAE,MAAM,CAAA;KACnB,CAAC,CAAA;IACF,+CAA+C;IAC/C,WAAW,EAAE,OAAO,CAAA;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,4CAA4C;IAC5C,QAAQ,EAAE,kBAAkB,EAAE,CAAA;IAC9B,+CAA+C;IAC/C,QAAQ,EAAE,KAAK,CAAC;QACd,KAAK,EAAE,kBAAkB,CAAA;QACzB,YAAY,EAAE,MAAM,CAAA;QACpB,YAAY,EAAE,MAAM,CAAA;KACrB,CAAC,CAAA;CACH;AAED;;GAEG;AACH,MAAM,WAAW,sBAAuB,SAAQ,uBAAuB;IACrE,mEAAmE;IACnE,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,uEAAuE;IACvE,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,kFAAkF;IAClF,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB;AAED;;;;;;;;;;GAUG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,gBAAgB,CAAkB;IAC1C,OAAO,CAAC,gBAAgB,CAAuC;IAC/D,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAQ;IACxC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAQ;IACzC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;gBAE3B,OAAO,GAAE,sBAA2B;IAOhD;;OAEG;IACH,eAAe,IAAI,OAAO;IAI1B;;;;;;OAMG;IACG,aAAa,CACjB,MAAM,EAAE,kBAAkB,EAC1B,MAAM,EAAE,kBAAkB,GACzB,OAAO,CAAC,aAAa,CAAC;IA0DzB;;OAEG;IACH,OAAO,CAAC,YAAY;IAKpB;;OAEG;YACW,kBAAkB;IAWhC;;;;;;;;;;;;;;OAcG;IACG,eAAe,CACnB,UAAU,EAAE,kBAAkB,EAAE,EAChC,SAAS,EAAE,kBAAkB,EAAE,GAC9B,OAAO,CAAC,oBAAoB,CAAC;IA0ChC;;;;;;;OAOG;IACG,eAAe,CAAC,MAAM,EAAE,kBAAkB,EAAE,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAmB7E;;OAEG;IACH,mBAAmB,IAAI,MAAM;IAI7B;;OAEG;IACH,kBAAkB,IAAI,MAAM;IAI5B;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACH,KAAK,IAAI,IAAI;CAId;AAED,eAAe,eAAe,CAAA"}
|
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Trigger phrase overlap detection for skills
|
|
3
|
+
* @module @skillsmith/core/matching/OverlapDetector
|
|
4
|
+
* @see SMI-604: Trigger phrase overlap detection
|
|
5
|
+
*
|
|
6
|
+
* Detects similarity between skill trigger phrases to prevent
|
|
7
|
+
* recommending skills that overlap too much with installed ones.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* const detector = new OverlapDetector({ useFallback: true });
|
|
11
|
+
* const overlap = await detector.detectOverlap(skill1, skill2);
|
|
12
|
+
* if (overlap.overlapScore > 0.8) {
|
|
13
|
+
* console.log('Skills are too similar:', overlap.overlappingPhrases);
|
|
14
|
+
* }
|
|
15
|
+
*/
|
|
16
|
+
import { EmbeddingService } from '../embeddings/index.js';
|
|
17
|
+
/**
|
|
18
|
+
* Detects overlap between skill trigger phrases.
|
|
19
|
+
*
|
|
20
|
+
* Uses semantic similarity to identify skills that respond to
|
|
21
|
+
* similar user inputs, preventing confusing recommendations.
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* const detector = new OverlapDetector({ overlapThreshold: 0.7 });
|
|
25
|
+
* const result = await detector.filterByOverlap(candidates, installed);
|
|
26
|
+
* // Use result.accepted for recommendations
|
|
27
|
+
*/
|
|
28
|
+
export class OverlapDetector {
|
|
29
|
+
embeddingService;
|
|
30
|
+
phraseEmbeddings = new Map();
|
|
31
|
+
phraseThreshold;
|
|
32
|
+
overlapThreshold;
|
|
33
|
+
useExactMatch;
|
|
34
|
+
constructor(options = {}) {
|
|
35
|
+
this.embeddingService = new EmbeddingService(options);
|
|
36
|
+
this.phraseThreshold = options.phraseThreshold ?? 0.75;
|
|
37
|
+
this.overlapThreshold = options.overlapThreshold ?? 0.6;
|
|
38
|
+
this.useExactMatch = options.useExactMatch ?? true;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Check if detector is using fallback mode
|
|
42
|
+
*/
|
|
43
|
+
isUsingFallback() {
|
|
44
|
+
return this.embeddingService.isUsingFallback();
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Detect overlap between two skills.
|
|
48
|
+
*
|
|
49
|
+
* @param skill1 - First skill
|
|
50
|
+
* @param skill2 - Second skill
|
|
51
|
+
* @returns Detailed overlap analysis
|
|
52
|
+
*/
|
|
53
|
+
async detectOverlap(skill1, skill2) {
|
|
54
|
+
const overlappingPhrases = [];
|
|
55
|
+
// Get embeddings for all phrases
|
|
56
|
+
for (const phrase1 of skill1.triggerPhrases) {
|
|
57
|
+
for (const phrase2 of skill2.triggerPhrases) {
|
|
58
|
+
// Check exact match first
|
|
59
|
+
if (this.useExactMatch && this.isExactMatch(phrase1, phrase2)) {
|
|
60
|
+
overlappingPhrases.push({
|
|
61
|
+
phrase1,
|
|
62
|
+
phrase2,
|
|
63
|
+
similarity: 1.0,
|
|
64
|
+
});
|
|
65
|
+
continue;
|
|
66
|
+
}
|
|
67
|
+
// Check semantic similarity
|
|
68
|
+
const embedding1 = await this.getPhraseEmbedding(phrase1);
|
|
69
|
+
const embedding2 = await this.getPhraseEmbedding(phrase2);
|
|
70
|
+
const similarity = this.embeddingService.cosineSimilarity(embedding1, embedding2);
|
|
71
|
+
if (similarity >= this.phraseThreshold) {
|
|
72
|
+
overlappingPhrases.push({
|
|
73
|
+
phrase1,
|
|
74
|
+
phrase2,
|
|
75
|
+
similarity: Math.round(similarity * 100) / 100,
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
// Calculate overall overlap score based on unique phrases that overlap
|
|
81
|
+
// Count unique phrases from skill1 that have at least one match in skill2
|
|
82
|
+
const overlappingFromSkill1 = new Set(overlappingPhrases.map((p) => p.phrase1));
|
|
83
|
+
const overlappingFromSkill2 = new Set(overlappingPhrases.map((p) => p.phrase2));
|
|
84
|
+
// Calculate the overlap ratio for each skill
|
|
85
|
+
const ratio1 = skill1.triggerPhrases.length > 0
|
|
86
|
+
? overlappingFromSkill1.size / skill1.triggerPhrases.length
|
|
87
|
+
: 0;
|
|
88
|
+
const ratio2 = skill2.triggerPhrases.length > 0
|
|
89
|
+
? overlappingFromSkill2.size / skill2.triggerPhrases.length
|
|
90
|
+
: 0;
|
|
91
|
+
// Use the average of both ratios for a balanced score
|
|
92
|
+
const overlapScore = (ratio1 + ratio2) / 2;
|
|
93
|
+
return {
|
|
94
|
+
skillId1: skill1.id,
|
|
95
|
+
skillId2: skill2.id,
|
|
96
|
+
overlapScore: Math.round(overlapScore * 100) / 100,
|
|
97
|
+
overlappingPhrases,
|
|
98
|
+
isDuplicate: overlapScore >= this.overlapThreshold,
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Check for exact string match (case-insensitive, normalized)
|
|
103
|
+
*/
|
|
104
|
+
isExactMatch(phrase1, phrase2) {
|
|
105
|
+
const normalize = (s) => s.toLowerCase().trim().replace(/\s+/g, ' ');
|
|
106
|
+
return normalize(phrase1) === normalize(phrase2);
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Get or compute embedding for a phrase
|
|
110
|
+
*/
|
|
111
|
+
async getPhraseEmbedding(phrase) {
|
|
112
|
+
const cacheKey = phrase.toLowerCase().trim();
|
|
113
|
+
if (!this.phraseEmbeddings.has(cacheKey)) {
|
|
114
|
+
const embedding = await this.embeddingService.embed(phrase);
|
|
115
|
+
this.phraseEmbeddings.set(cacheKey, embedding);
|
|
116
|
+
}
|
|
117
|
+
return this.phraseEmbeddings.get(cacheKey);
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Filter candidate skills by overlap with installed skills.
|
|
121
|
+
*
|
|
122
|
+
* Removes candidates that have too much trigger phrase overlap
|
|
123
|
+
* with already installed skills.
|
|
124
|
+
*
|
|
125
|
+
* @param candidates - Skills to consider for recommendation
|
|
126
|
+
* @param installed - Currently installed skills
|
|
127
|
+
* @returns Filtered results with accepted and rejected skills
|
|
128
|
+
*
|
|
129
|
+
* @example
|
|
130
|
+
* const result = await detector.filterByOverlap(candidates, installed);
|
|
131
|
+
* console.log(`Accepted: ${result.accepted.length}`);
|
|
132
|
+
* console.log(`Rejected: ${result.rejected.length}`);
|
|
133
|
+
*/
|
|
134
|
+
async filterByOverlap(candidates, installed) {
|
|
135
|
+
const accepted = [];
|
|
136
|
+
const rejected = [];
|
|
137
|
+
for (const candidate of candidates) {
|
|
138
|
+
let highestOverlap = 0;
|
|
139
|
+
let overlapsWith = '';
|
|
140
|
+
// Check overlap with each installed skill
|
|
141
|
+
for (const installedSkill of installed) {
|
|
142
|
+
const overlap = await this.detectOverlap(candidate, installedSkill);
|
|
143
|
+
if (overlap.overlapScore > highestOverlap) {
|
|
144
|
+
highestOverlap = overlap.overlapScore;
|
|
145
|
+
overlapsWith = installedSkill.id;
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
// Also check overlap with already accepted candidates
|
|
149
|
+
for (const acceptedSkill of accepted) {
|
|
150
|
+
const overlap = await this.detectOverlap(candidate, acceptedSkill);
|
|
151
|
+
if (overlap.overlapScore > highestOverlap) {
|
|
152
|
+
highestOverlap = overlap.overlapScore;
|
|
153
|
+
overlapsWith = acceptedSkill.id;
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
if (highestOverlap >= this.overlapThreshold) {
|
|
157
|
+
rejected.push({
|
|
158
|
+
skill: candidate,
|
|
159
|
+
overlapsWith,
|
|
160
|
+
overlapScore: highestOverlap,
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
else {
|
|
164
|
+
accepted.push(candidate);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
return { accepted, rejected };
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Find all overlapping skill pairs in a set.
|
|
171
|
+
*
|
|
172
|
+
* Useful for auditing a skill library for potential conflicts.
|
|
173
|
+
*
|
|
174
|
+
* @param skills - Skills to check for overlaps
|
|
175
|
+
* @returns List of overlapping pairs
|
|
176
|
+
*/
|
|
177
|
+
async findAllOverlaps(skills) {
|
|
178
|
+
const overlaps = [];
|
|
179
|
+
for (let i = 0; i < skills.length; i++) {
|
|
180
|
+
for (let j = i + 1; j < skills.length; j++) {
|
|
181
|
+
const result = await this.detectOverlap(skills[i], skills[j]);
|
|
182
|
+
if (result.overlappingPhrases.length > 0) {
|
|
183
|
+
overlaps.push(result);
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
// Sort by overlap score descending
|
|
188
|
+
overlaps.sort((a, b) => b.overlapScore - a.overlapScore);
|
|
189
|
+
return overlaps;
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Get overlap threshold
|
|
193
|
+
*/
|
|
194
|
+
getOverlapThreshold() {
|
|
195
|
+
return this.overlapThreshold;
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* Get phrase similarity threshold
|
|
199
|
+
*/
|
|
200
|
+
getPhraseThreshold() {
|
|
201
|
+
return this.phraseThreshold;
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Clear cached embeddings
|
|
205
|
+
*/
|
|
206
|
+
clear() {
|
|
207
|
+
this.phraseEmbeddings.clear();
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Close resources
|
|
211
|
+
*/
|
|
212
|
+
close() {
|
|
213
|
+
this.embeddingService.close();
|
|
214
|
+
this.clear();
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
export default OverlapDetector;
|
|
218
|
+
//# sourceMappingURL=OverlapDetector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OverlapDetector.js","sourceRoot":"","sources":["../../../src/matching/OverlapDetector.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Semantic skill matching using embeddings
|
|
3
|
+
* @module @skillsmith/core/matching/SkillMatcher
|
|
4
|
+
* @see SMI-602: Implement recommend_skills MCP tool
|
|
5
|
+
*
|
|
6
|
+
* Provides semantic similarity matching between skills using
|
|
7
|
+
* the EmbeddingService for vector-based comparisons.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* const matcher = new SkillMatcher({ useFallback: true });
|
|
11
|
+
* const matches = await matcher.findSimilarSkills('react testing', skills, 5);
|
|
12
|
+
*/
|
|
13
|
+
import { type EmbeddingServiceOptions } from '../embeddings/index.js';
|
|
14
|
+
/**
|
|
15
|
+
* Skill data for matching
|
|
16
|
+
*/
|
|
17
|
+
export interface MatchableSkill {
|
|
18
|
+
/** Unique skill identifier */
|
|
19
|
+
id: string;
|
|
20
|
+
/** Skill display name */
|
|
21
|
+
name: string;
|
|
22
|
+
/** Skill description */
|
|
23
|
+
description: string;
|
|
24
|
+
/** Optional trigger phrases for overlap detection */
|
|
25
|
+
triggerPhrases?: string[];
|
|
26
|
+
/** Optional keywords for keyword-based fallback */
|
|
27
|
+
keywords?: string[];
|
|
28
|
+
/** Optional quality score (0-100) */
|
|
29
|
+
qualityScore?: number;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Result of a skill match
|
|
33
|
+
*/
|
|
34
|
+
export interface SkillMatchResult {
|
|
35
|
+
/** Matched skill */
|
|
36
|
+
skill: MatchableSkill;
|
|
37
|
+
/** Semantic similarity score (0-1) */
|
|
38
|
+
similarityScore: number;
|
|
39
|
+
/** Why this skill matched */
|
|
40
|
+
matchReason: string;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Options for SkillMatcher
|
|
44
|
+
*/
|
|
45
|
+
export interface SkillMatcherOptions extends EmbeddingServiceOptions {
|
|
46
|
+
/** Minimum similarity threshold (0-1, default 0.3) */
|
|
47
|
+
minSimilarity?: number;
|
|
48
|
+
/** Quality score weight (0-1, default 0.3) */
|
|
49
|
+
qualityWeight?: number;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Semantic skill matcher using embeddings.
|
|
53
|
+
*
|
|
54
|
+
* Finds skills similar to a query using vector similarity,
|
|
55
|
+
* with optional quality score boosting.
|
|
56
|
+
*
|
|
57
|
+
* @example
|
|
58
|
+
* const matcher = new SkillMatcher({ useFallback: true });
|
|
59
|
+
* await matcher.initialize(skills);
|
|
60
|
+
* const results = await matcher.findSimilarSkills('react testing', skills);
|
|
61
|
+
*/
|
|
62
|
+
export declare class SkillMatcher {
|
|
63
|
+
private embeddingService;
|
|
64
|
+
private skillEmbeddings;
|
|
65
|
+
private initialized;
|
|
66
|
+
private readonly minSimilarity;
|
|
67
|
+
private readonly qualityWeight;
|
|
68
|
+
constructor(options?: SkillMatcherOptions);
|
|
69
|
+
/**
|
|
70
|
+
* Check if matcher is using fallback mode
|
|
71
|
+
*/
|
|
72
|
+
isUsingFallback(): boolean;
|
|
73
|
+
/**
|
|
74
|
+
* Initialize skill embeddings for a set of skills.
|
|
75
|
+
* Call this before matching for best performance.
|
|
76
|
+
*/
|
|
77
|
+
initialize(skills: MatchableSkill[]): Promise<void>;
|
|
78
|
+
/**
|
|
79
|
+
* Convert skill to text for embedding
|
|
80
|
+
*/
|
|
81
|
+
private skillToText;
|
|
82
|
+
/**
|
|
83
|
+
* Find skills similar to a query string.
|
|
84
|
+
*
|
|
85
|
+
* @param query - Search query or context description
|
|
86
|
+
* @param skills - Pool of skills to search
|
|
87
|
+
* @param limit - Maximum results to return
|
|
88
|
+
* @returns Ranked list of matching skills
|
|
89
|
+
*
|
|
90
|
+
* @example
|
|
91
|
+
* const matches = await matcher.findSimilarSkills(
|
|
92
|
+
* 'React TypeScript frontend testing',
|
|
93
|
+
* availableSkills,
|
|
94
|
+
* 5
|
|
95
|
+
* );
|
|
96
|
+
*/
|
|
97
|
+
findSimilarSkills(query: string, skills: MatchableSkill[], limit?: number): Promise<SkillMatchResult[]>;
|
|
98
|
+
/**
|
|
99
|
+
* Find skills similar to a set of installed skills.
|
|
100
|
+
*
|
|
101
|
+
* @param installedSkills - Currently installed skills
|
|
102
|
+
* @param candidateSkills - Pool of skills to recommend from
|
|
103
|
+
* @param limit - Maximum results
|
|
104
|
+
* @returns Ranked list of recommended skills
|
|
105
|
+
*/
|
|
106
|
+
findComplementarySkills(installedSkills: MatchableSkill[], candidateSkills: MatchableSkill[], limit?: number): Promise<SkillMatchResult[]>;
|
|
107
|
+
/**
|
|
108
|
+
* Generate a human-readable match reason
|
|
109
|
+
*/
|
|
110
|
+
private generateMatchReason;
|
|
111
|
+
/**
|
|
112
|
+
* Get embedding dimension
|
|
113
|
+
*/
|
|
114
|
+
getEmbeddingDimension(): number;
|
|
115
|
+
/**
|
|
116
|
+
* Clear cached embeddings
|
|
117
|
+
*/
|
|
118
|
+
clear(): void;
|
|
119
|
+
/**
|
|
120
|
+
* Close resources
|
|
121
|
+
*/
|
|
122
|
+
close(): void;
|
|
123
|
+
}
|
|
124
|
+
export default SkillMatcher;
|
|
125
|
+
//# sourceMappingURL=SkillMatcher.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SkillMatcher.d.ts","sourceRoot":"","sources":["../../../src/matching/SkillMatcher.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAoB,KAAK,uBAAuB,EAAE,MAAM,wBAAwB,CAAA;AAEvF;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,8BAA8B;IAC9B,EAAE,EAAE,MAAM,CAAA;IACV,yBAAyB;IACzB,IAAI,EAAE,MAAM,CAAA;IACZ,wBAAwB;IACxB,WAAW,EAAE,MAAM,CAAA;IACnB,qDAAqD;IACrD,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;IACzB,mDAAmD;IACnD,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;IACnB,qCAAqC;IACrC,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,oBAAoB;IACpB,KAAK,EAAE,cAAc,CAAA;IACrB,sCAAsC;IACtC,eAAe,EAAE,MAAM,CAAA;IACvB,6BAA6B;IAC7B,WAAW,EAAE,MAAM,CAAA;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAoB,SAAQ,uBAAuB;IAClE,sDAAsD;IACtD,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,8CAA8C;IAC9C,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB;AAED;;;;;;;;;;GAUG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,gBAAgB,CAAkB;IAC1C,OAAO,CAAC,eAAe,CAAuC;IAC9D,OAAO,CAAC,WAAW,CAAQ;IAC3B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAQ;IACtC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAQ;gBAE1B,OAAO,GAAE,mBAAwB;IAM7C;;OAEG;IACH,eAAe,IAAI,OAAO;IAI1B;;;OAGG;IACG,UAAU,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAezD;;OAEG;IACH,OAAO,CAAC,WAAW;IAcnB;;;;;;;;;;;;;;OAcG;IACG,iBAAiB,CACrB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,cAAc,EAAE,EACxB,KAAK,GAAE,MAAW,GACjB,OAAO,CAAC,gBAAgB,EAAE,CAAC;IA6C9B;;;;;;;OAOG;IACG,uBAAuB,CAC3B,eAAe,EAAE,cAAc,EAAE,EACjC,eAAe,EAAE,cAAc,EAAE,EACjC,KAAK,GAAE,MAAW,GACjB,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAwB9B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAyC3B;;OAEG;IACH,qBAAqB,IAAI,MAAM;IAI/B;;OAEG;IACH,KAAK,IAAI,IAAI;IAKb;;OAEG;IACH,KAAK,IAAI,IAAI;CAId;AAED,eAAe,YAAY,CAAA"}
|