@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,391 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SMI-739: OpenTelemetry Tracer Setup
|
|
3
|
+
* SMI-755: Graceful fallback when OpenTelemetry unavailable
|
|
4
|
+
*
|
|
5
|
+
* Provides distributed tracing for Skillsmith operations:
|
|
6
|
+
* - MCP tool calls
|
|
7
|
+
* - Database queries
|
|
8
|
+
* - Cache operations
|
|
9
|
+
* - External API calls
|
|
10
|
+
*
|
|
11
|
+
* Configuration:
|
|
12
|
+
* - OTEL_EXPORTER_OTLP_ENDPOINT: OTLP endpoint for trace export
|
|
13
|
+
* - OTEL_SERVICE_NAME: Service name (default: skillsmith)
|
|
14
|
+
* - SKILLSMITH_TELEMETRY_ENABLED: Master switch for all telemetry (default: auto)
|
|
15
|
+
* - SKILLSMITH_TRACING_ENABLED: Enable/disable tracing (default: true if endpoint set)
|
|
16
|
+
*
|
|
17
|
+
* Graceful Fallback:
|
|
18
|
+
* - If OpenTelemetry packages are not installed, uses NoOp implementations
|
|
19
|
+
* - Logs warning on fallback (unless SKILLSMITH_TELEMETRY_ENABLED=false)
|
|
20
|
+
* - All tracing APIs remain functional (just don't record)
|
|
21
|
+
*/
|
|
22
|
+
// Lazy import to avoid loading OTEL if not needed
|
|
23
|
+
// SMI-755: Use 'unknown' types to avoid compile-time dependency on OTEL packages
|
|
24
|
+
let api = null;
|
|
25
|
+
let sdk = null;
|
|
26
|
+
let resources = null;
|
|
27
|
+
let semanticConventions = null;
|
|
28
|
+
function getApi() {
|
|
29
|
+
return api;
|
|
30
|
+
}
|
|
31
|
+
function getSdk() {
|
|
32
|
+
return sdk;
|
|
33
|
+
}
|
|
34
|
+
function getResources() {
|
|
35
|
+
return resources;
|
|
36
|
+
}
|
|
37
|
+
function getSemanticConventions() {
|
|
38
|
+
return semanticConventions;
|
|
39
|
+
}
|
|
40
|
+
/** Whether OpenTelemetry packages are available */
|
|
41
|
+
let otelAvailable = null;
|
|
42
|
+
/**
|
|
43
|
+
* Dynamic import helper that bypasses TypeScript type checking (SMI-755)
|
|
44
|
+
* This allows the code to compile even when @opentelemetry packages aren't installed
|
|
45
|
+
*/
|
|
46
|
+
async function dynamicImport(moduleName) {
|
|
47
|
+
try {
|
|
48
|
+
// Use Function constructor to bypass TypeScript's static analysis
|
|
49
|
+
const importFn = new Function('m', 'return import(m)');
|
|
50
|
+
return await importFn(moduleName);
|
|
51
|
+
}
|
|
52
|
+
catch {
|
|
53
|
+
return null;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Check if OpenTelemetry is available (SMI-755)
|
|
58
|
+
*/
|
|
59
|
+
async function checkOTelAvailability() {
|
|
60
|
+
if (otelAvailable !== null)
|
|
61
|
+
return otelAvailable;
|
|
62
|
+
const result = await dynamicImport('@opentelemetry/api');
|
|
63
|
+
otelAvailable = result !== null;
|
|
64
|
+
return otelAvailable;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* No-op span wrapper for when tracing is disabled
|
|
68
|
+
*/
|
|
69
|
+
class NoOpSpanWrapper {
|
|
70
|
+
setAttributes(_attributes) { }
|
|
71
|
+
setStatus(_code, _message) { }
|
|
72
|
+
recordException(_error) { }
|
|
73
|
+
addEvent(_name, _attributes) { }
|
|
74
|
+
end() { }
|
|
75
|
+
getSpan() {
|
|
76
|
+
return null;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Active span wrapper with real OTEL span
|
|
81
|
+
*/
|
|
82
|
+
class ActiveSpanWrapper {
|
|
83
|
+
span;
|
|
84
|
+
constructor(span) {
|
|
85
|
+
this.span = span;
|
|
86
|
+
}
|
|
87
|
+
setAttributes(attributes) {
|
|
88
|
+
// Filter out undefined values
|
|
89
|
+
const filtered = {};
|
|
90
|
+
for (const [key, value] of Object.entries(attributes)) {
|
|
91
|
+
if (value !== undefined) {
|
|
92
|
+
filtered[key] = value;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
this.span.setAttributes(filtered);
|
|
96
|
+
}
|
|
97
|
+
setStatus(code, message) {
|
|
98
|
+
const statusCode = code === 'ok' ? 1 : 2; // SpanStatusCode.OK = 1, ERROR = 2
|
|
99
|
+
this.span.setStatus({ code: statusCode, message });
|
|
100
|
+
}
|
|
101
|
+
recordException(error) {
|
|
102
|
+
this.span.recordException(error);
|
|
103
|
+
}
|
|
104
|
+
addEvent(name, attributes) {
|
|
105
|
+
// Filter out undefined values
|
|
106
|
+
const filtered = {};
|
|
107
|
+
if (attributes) {
|
|
108
|
+
for (const [key, value] of Object.entries(attributes)) {
|
|
109
|
+
if (value !== undefined) {
|
|
110
|
+
filtered[key] = value;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
this.span.addEvent(name, filtered);
|
|
115
|
+
}
|
|
116
|
+
end() {
|
|
117
|
+
this.span.end();
|
|
118
|
+
}
|
|
119
|
+
getSpan() {
|
|
120
|
+
return this.span;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Skillsmith Tracer - Wrapper for OpenTelemetry tracing
|
|
125
|
+
*/
|
|
126
|
+
export class SkillsmithTracer {
|
|
127
|
+
tracer = null;
|
|
128
|
+
initialized = false;
|
|
129
|
+
enabled = false;
|
|
130
|
+
config;
|
|
131
|
+
sdkInstance = null;
|
|
132
|
+
constructor(config = {}) {
|
|
133
|
+
this.config = {
|
|
134
|
+
serviceName: config.serviceName ?? process.env.OTEL_SERVICE_NAME ?? 'skillsmith',
|
|
135
|
+
endpoint: config.endpoint ?? process.env.OTEL_EXPORTER_OTLP_ENDPOINT ?? '',
|
|
136
|
+
autoInstrument: config.autoInstrument ?? true,
|
|
137
|
+
consoleExport: config.consoleExport ?? false,
|
|
138
|
+
sampleRate: config.sampleRate ?? 1.0,
|
|
139
|
+
};
|
|
140
|
+
// SMI-755: Check master telemetry switch first
|
|
141
|
+
const telemetryDisabled = process.env.SKILLSMITH_TELEMETRY_ENABLED === 'false';
|
|
142
|
+
if (telemetryDisabled) {
|
|
143
|
+
this.enabled = false;
|
|
144
|
+
return;
|
|
145
|
+
}
|
|
146
|
+
// Check if tracing should be enabled
|
|
147
|
+
const explicitlyEnabled = process.env.SKILLSMITH_TRACING_ENABLED === 'true';
|
|
148
|
+
const explicitlyDisabled = process.env.SKILLSMITH_TRACING_ENABLED === 'false';
|
|
149
|
+
if (explicitlyDisabled) {
|
|
150
|
+
this.enabled = false;
|
|
151
|
+
}
|
|
152
|
+
else if (explicitlyEnabled || this.config.endpoint || this.config.consoleExport) {
|
|
153
|
+
this.enabled = true;
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Initialize the tracer
|
|
158
|
+
* Must be called before creating spans
|
|
159
|
+
*/
|
|
160
|
+
async initialize() {
|
|
161
|
+
if (this.initialized)
|
|
162
|
+
return;
|
|
163
|
+
if (!this.enabled) {
|
|
164
|
+
this.initialized = true;
|
|
165
|
+
return;
|
|
166
|
+
}
|
|
167
|
+
// SMI-755: Check if OpenTelemetry is available before attempting to load
|
|
168
|
+
const isAvailable = await checkOTelAvailability();
|
|
169
|
+
if (!isAvailable) {
|
|
170
|
+
console.warn('[Skillsmith Telemetry] OpenTelemetry packages not installed. ' +
|
|
171
|
+
'Tracing disabled. Install @opentelemetry/api and related packages to enable.');
|
|
172
|
+
this.enabled = false;
|
|
173
|
+
this.initialized = true;
|
|
174
|
+
return;
|
|
175
|
+
}
|
|
176
|
+
try {
|
|
177
|
+
// SMI-755: Lazy load OTEL modules with error handling
|
|
178
|
+
// Use dynamicImport to bypass TypeScript type checking
|
|
179
|
+
api = await dynamicImport('@opentelemetry/api');
|
|
180
|
+
sdk = await dynamicImport('@opentelemetry/sdk-node');
|
|
181
|
+
resources = await dynamicImport('@opentelemetry/resources');
|
|
182
|
+
semanticConventions = await dynamicImport('@opentelemetry/semantic-conventions');
|
|
183
|
+
// If any core module failed to load, disable tracing
|
|
184
|
+
if (!api || !sdk || !resources || !semanticConventions) {
|
|
185
|
+
console.warn('[Skillsmith Telemetry] Some OpenTelemetry packages missing. Tracing disabled.');
|
|
186
|
+
this.enabled = false;
|
|
187
|
+
this.initialized = true;
|
|
188
|
+
return;
|
|
189
|
+
}
|
|
190
|
+
// Get typed accessors
|
|
191
|
+
const otelApi = getApi();
|
|
192
|
+
const otelSdk = getSdk();
|
|
193
|
+
const otelResources = getResources();
|
|
194
|
+
const otelSemConv = getSemanticConventions();
|
|
195
|
+
if (!otelApi || !otelSdk || !otelResources || !otelSemConv) {
|
|
196
|
+
this.enabled = false;
|
|
197
|
+
this.initialized = true;
|
|
198
|
+
return;
|
|
199
|
+
}
|
|
200
|
+
// Build SDK configuration
|
|
201
|
+
const sdkConfig = {};
|
|
202
|
+
// Create resource with service info
|
|
203
|
+
const Resource = otelResources.Resource;
|
|
204
|
+
sdkConfig.resource = new Resource({
|
|
205
|
+
[otelSemConv['ATTR_SERVICE_NAME'] ?? 'service.name']: this.config.serviceName,
|
|
206
|
+
[otelSemConv['ATTR_SERVICE_VERSION'] ?? 'service.version']: '0.1.0',
|
|
207
|
+
});
|
|
208
|
+
// Add auto-instrumentation if enabled
|
|
209
|
+
if (this.config.autoInstrument) {
|
|
210
|
+
try {
|
|
211
|
+
const autoInst = (await dynamicImport('@opentelemetry/auto-instrumentations-node'));
|
|
212
|
+
if (autoInst?.getNodeAutoInstrumentations) {
|
|
213
|
+
sdkConfig.instrumentations = [
|
|
214
|
+
autoInst.getNodeAutoInstrumentations({
|
|
215
|
+
// Customize instrumentations
|
|
216
|
+
'@opentelemetry/instrumentation-fs': { enabled: false },
|
|
217
|
+
'@opentelemetry/instrumentation-dns': { enabled: false },
|
|
218
|
+
'@opentelemetry/instrumentation-net': { enabled: false },
|
|
219
|
+
}),
|
|
220
|
+
];
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
catch {
|
|
224
|
+
// Auto-instrumentation optional, continue without it
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
// Initialize SDK
|
|
228
|
+
const NodeSDK = otelSdk.NodeSDK;
|
|
229
|
+
this.sdkInstance = new NodeSDK(sdkConfig);
|
|
230
|
+
await this.sdkInstance.start();
|
|
231
|
+
// Get tracer
|
|
232
|
+
this.tracer = otelApi.trace.getTracer(this.config.serviceName, '0.1.0');
|
|
233
|
+
this.initialized = true;
|
|
234
|
+
}
|
|
235
|
+
catch (error) {
|
|
236
|
+
// SMI-755: Graceful fallback - disable tracing on error
|
|
237
|
+
console.warn('[Skillsmith Telemetry] Failed to initialize OpenTelemetry tracing:', error);
|
|
238
|
+
this.enabled = false;
|
|
239
|
+
this.initialized = true;
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
/**
|
|
243
|
+
* Check if tracing is enabled
|
|
244
|
+
*/
|
|
245
|
+
isEnabled() {
|
|
246
|
+
return this.enabled && this.initialized;
|
|
247
|
+
}
|
|
248
|
+
/**
|
|
249
|
+
* Start a new span
|
|
250
|
+
*
|
|
251
|
+
* @param name - Span name (e.g., 'mcp.tool.search', 'db.query')
|
|
252
|
+
* @param options - Span options
|
|
253
|
+
* @returns SpanWrapper for manipulating the span
|
|
254
|
+
*/
|
|
255
|
+
startSpan(name, options) {
|
|
256
|
+
if (!this.isEnabled() || !this.tracer) {
|
|
257
|
+
return new NoOpSpanWrapper();
|
|
258
|
+
}
|
|
259
|
+
const span = this.tracer.startSpan(name, options);
|
|
260
|
+
return new ActiveSpanWrapper(span);
|
|
261
|
+
}
|
|
262
|
+
/**
|
|
263
|
+
* Execute a function within a span context
|
|
264
|
+
*
|
|
265
|
+
* @param name - Span name
|
|
266
|
+
* @param fn - Function to execute
|
|
267
|
+
* @param options - Span options
|
|
268
|
+
* @returns Result of the function
|
|
269
|
+
*/
|
|
270
|
+
async withSpan(name, fn, options) {
|
|
271
|
+
const spanWrapper = this.startSpan(name, options);
|
|
272
|
+
try {
|
|
273
|
+
const result = await fn(spanWrapper);
|
|
274
|
+
spanWrapper.setStatus('ok');
|
|
275
|
+
return result;
|
|
276
|
+
}
|
|
277
|
+
catch (error) {
|
|
278
|
+
if (error instanceof Error) {
|
|
279
|
+
spanWrapper.recordException(error);
|
|
280
|
+
}
|
|
281
|
+
spanWrapper.setStatus('error', error instanceof Error ? error.message : 'Unknown error');
|
|
282
|
+
throw error;
|
|
283
|
+
}
|
|
284
|
+
finally {
|
|
285
|
+
spanWrapper.end();
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
/**
|
|
289
|
+
* Execute a synchronous function within a span context
|
|
290
|
+
*/
|
|
291
|
+
withSpanSync(name, fn, options) {
|
|
292
|
+
const spanWrapper = this.startSpan(name, options);
|
|
293
|
+
try {
|
|
294
|
+
const result = fn(spanWrapper);
|
|
295
|
+
spanWrapper.setStatus('ok');
|
|
296
|
+
return result;
|
|
297
|
+
}
|
|
298
|
+
catch (error) {
|
|
299
|
+
if (error instanceof Error) {
|
|
300
|
+
spanWrapper.recordException(error);
|
|
301
|
+
}
|
|
302
|
+
spanWrapper.setStatus('error', error instanceof Error ? error.message : 'Unknown error');
|
|
303
|
+
throw error;
|
|
304
|
+
}
|
|
305
|
+
finally {
|
|
306
|
+
spanWrapper.end();
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
/**
|
|
310
|
+
* Get the current active span (if any)
|
|
311
|
+
*/
|
|
312
|
+
getCurrentSpan() {
|
|
313
|
+
const otelApi = getApi();
|
|
314
|
+
if (!otelApi) {
|
|
315
|
+
return new NoOpSpanWrapper();
|
|
316
|
+
}
|
|
317
|
+
const span = otelApi.trace.getActiveSpan();
|
|
318
|
+
if (!span) {
|
|
319
|
+
return new NoOpSpanWrapper();
|
|
320
|
+
}
|
|
321
|
+
return new ActiveSpanWrapper(span);
|
|
322
|
+
}
|
|
323
|
+
/**
|
|
324
|
+
* Shutdown the tracer and flush pending spans
|
|
325
|
+
*/
|
|
326
|
+
async shutdown() {
|
|
327
|
+
if (this.sdkInstance) {
|
|
328
|
+
await this.sdkInstance.shutdown();
|
|
329
|
+
this.sdkInstance = null;
|
|
330
|
+
}
|
|
331
|
+
this.tracer = null;
|
|
332
|
+
this.initialized = false;
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
// Default tracer instance
|
|
336
|
+
let defaultTracer = null;
|
|
337
|
+
/**
|
|
338
|
+
* Get the default tracer instance
|
|
339
|
+
*/
|
|
340
|
+
export function getTracer() {
|
|
341
|
+
if (!defaultTracer) {
|
|
342
|
+
defaultTracer = new SkillsmithTracer();
|
|
343
|
+
}
|
|
344
|
+
return defaultTracer;
|
|
345
|
+
}
|
|
346
|
+
/**
|
|
347
|
+
* Initialize the default tracer
|
|
348
|
+
* Should be called at application startup
|
|
349
|
+
*/
|
|
350
|
+
export async function initializeTracing(config) {
|
|
351
|
+
if (defaultTracer) {
|
|
352
|
+
await defaultTracer.shutdown();
|
|
353
|
+
}
|
|
354
|
+
defaultTracer = new SkillsmithTracer(config);
|
|
355
|
+
await defaultTracer.initialize();
|
|
356
|
+
return defaultTracer;
|
|
357
|
+
}
|
|
358
|
+
/**
|
|
359
|
+
* Shutdown the default tracer
|
|
360
|
+
* Should be called at application shutdown
|
|
361
|
+
*/
|
|
362
|
+
export async function shutdownTracing() {
|
|
363
|
+
if (defaultTracer) {
|
|
364
|
+
await defaultTracer.shutdown();
|
|
365
|
+
defaultTracer = null;
|
|
366
|
+
}
|
|
367
|
+
}
|
|
368
|
+
/**
|
|
369
|
+
* Decorator for tracing async methods
|
|
370
|
+
*/
|
|
371
|
+
export function traced(spanName) {
|
|
372
|
+
return function (target, propertyKey, descriptor) {
|
|
373
|
+
const originalMethod = descriptor.value;
|
|
374
|
+
if (!originalMethod)
|
|
375
|
+
return descriptor;
|
|
376
|
+
descriptor.value = async function (...args) {
|
|
377
|
+
const tracer = getTracer();
|
|
378
|
+
const name = spanName ?? `${target.constructor.name}.${propertyKey}`;
|
|
379
|
+
const boundMethod = originalMethod.bind(this);
|
|
380
|
+
return tracer.withSpan(name, async (span) => {
|
|
381
|
+
span.setAttributes({
|
|
382
|
+
'code.function': propertyKey,
|
|
383
|
+
'code.namespace': target.constructor.name,
|
|
384
|
+
});
|
|
385
|
+
return boundMethod(...args);
|
|
386
|
+
});
|
|
387
|
+
};
|
|
388
|
+
return descriptor;
|
|
389
|
+
};
|
|
390
|
+
}
|
|
391
|
+
//# sourceMappingURL=tracer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tracer.js","sourceRoot":"","sources":["../../../src/telemetry/tracer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Context Scoring System for ranking skill suggestion relevance
|
|
3
|
+
* @module @skillsmith/core/triggers/ContextScorer
|
|
4
|
+
* @see Phase 4: Trigger System Architecture
|
|
5
|
+
*
|
|
6
|
+
* Scores the relevance of skill suggestions based on:
|
|
7
|
+
* - Number and type of triggers fired
|
|
8
|
+
* - Confidence levels of triggers
|
|
9
|
+
* - Recency of trigger events
|
|
10
|
+
* - User feedback history
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* const scorer = new ContextScorer();
|
|
14
|
+
* const score = scorer.scoreContext(triggers, codebaseContext);
|
|
15
|
+
* if (score.score >= 0.6) {
|
|
16
|
+
* // High relevance - suggest skills
|
|
17
|
+
* }
|
|
18
|
+
*/
|
|
19
|
+
import type { DetectedTrigger } from './TriggerDetector.js';
|
|
20
|
+
import type { CodebaseContext } from '../analysis/CodebaseAnalyzer.js';
|
|
21
|
+
/**
|
|
22
|
+
* Context score result
|
|
23
|
+
*/
|
|
24
|
+
export interface ContextScore {
|
|
25
|
+
/** Overall relevance score (0-1) */
|
|
26
|
+
score: number;
|
|
27
|
+
/** Confidence in the suggestion (0-1) */
|
|
28
|
+
confidence: number;
|
|
29
|
+
/** Which triggers contributed to the score */
|
|
30
|
+
triggers: string[];
|
|
31
|
+
/** Human-readable explanation */
|
|
32
|
+
reason: string;
|
|
33
|
+
/** Recommended skill categories */
|
|
34
|
+
recommendedCategories: string[];
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Weights for different trigger types in context scoring
|
|
38
|
+
*/
|
|
39
|
+
export interface ContextScoringWeights {
|
|
40
|
+
/** Weight for file pattern triggers (default: 0.4) */
|
|
41
|
+
fileWeight: number;
|
|
42
|
+
/** Weight for command triggers (default: 0.3) */
|
|
43
|
+
commandWeight: number;
|
|
44
|
+
/** Weight for error triggers (default: 0.2) */
|
|
45
|
+
errorWeight: number;
|
|
46
|
+
/** Weight for project structure triggers (default: 0.3) */
|
|
47
|
+
projectWeight: number;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Options for context scoring
|
|
51
|
+
*/
|
|
52
|
+
export interface ContextScorerOptions {
|
|
53
|
+
/** Custom weights for trigger types */
|
|
54
|
+
weights?: Partial<ContextScoringWeights>;
|
|
55
|
+
/** Boost score for multiple triggers (default: true) */
|
|
56
|
+
multiTriggerBoost?: boolean;
|
|
57
|
+
/** Boost multiplier for multiple triggers (default: 1.2) */
|
|
58
|
+
multiTriggerMultiplier?: number;
|
|
59
|
+
/** Enable debug logging */
|
|
60
|
+
debug?: boolean;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* ContextScorer - Scores skill suggestion relevance
|
|
64
|
+
*
|
|
65
|
+
* Uses a weighted scoring algorithm to determine how relevant
|
|
66
|
+
* skill suggestions would be based on detected triggers.
|
|
67
|
+
*/
|
|
68
|
+
export declare class ContextScorer {
|
|
69
|
+
private readonly weights;
|
|
70
|
+
private readonly multiTriggerBoost;
|
|
71
|
+
private readonly multiTriggerMultiplier;
|
|
72
|
+
private readonly debug;
|
|
73
|
+
constructor(options?: ContextScorerOptions);
|
|
74
|
+
/**
|
|
75
|
+
* Score the context based on detected triggers
|
|
76
|
+
*
|
|
77
|
+
* @param triggers - Detected triggers from TriggerDetector
|
|
78
|
+
* @param codebaseContext - Optional codebase analysis
|
|
79
|
+
* @returns Context score with recommendations
|
|
80
|
+
*/
|
|
81
|
+
scoreContext(triggers: DetectedTrigger[], codebaseContext?: CodebaseContext | null): ContextScore;
|
|
82
|
+
/**
|
|
83
|
+
* Group triggers by type
|
|
84
|
+
*/
|
|
85
|
+
private groupTriggersByType;
|
|
86
|
+
/**
|
|
87
|
+
* Calculate score for a specific trigger type
|
|
88
|
+
*/
|
|
89
|
+
private calculateTypeScore;
|
|
90
|
+
/**
|
|
91
|
+
* Calculate confidence in the suggestion
|
|
92
|
+
*/
|
|
93
|
+
private calculateConfidence;
|
|
94
|
+
/**
|
|
95
|
+
* Extract recommended skill categories from triggers
|
|
96
|
+
*/
|
|
97
|
+
private extractRecommendedCategories;
|
|
98
|
+
/**
|
|
99
|
+
* Generate human-readable reason for the score
|
|
100
|
+
*/
|
|
101
|
+
private generateReason;
|
|
102
|
+
/**
|
|
103
|
+
* Determine if score meets threshold for suggestion
|
|
104
|
+
*
|
|
105
|
+
* @param score - Context score result
|
|
106
|
+
* @returns Whether to suggest skills
|
|
107
|
+
*/
|
|
108
|
+
shouldSuggest(score: ContextScore): boolean;
|
|
109
|
+
/**
|
|
110
|
+
* Get suggestion urgency level
|
|
111
|
+
*
|
|
112
|
+
* @param score - Context score result
|
|
113
|
+
* @returns Urgency level
|
|
114
|
+
*/
|
|
115
|
+
getUrgency(score: ContextScore): 'high' | 'medium' | 'low';
|
|
116
|
+
}
|
|
117
|
+
export default ContextScorer;
|
|
118
|
+
//# sourceMappingURL=ContextScorer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ContextScorer.d.ts","sourceRoot":"","sources":["../../../src/triggers/ContextScorer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAC3D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAA;AAKtE;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,oCAAoC;IACpC,KAAK,EAAE,MAAM,CAAA;IACb,yCAAyC;IACzC,UAAU,EAAE,MAAM,CAAA;IAClB,8CAA8C;IAC9C,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,iCAAiC;IACjC,MAAM,EAAE,MAAM,CAAA;IACd,mCAAmC;IACnC,qBAAqB,EAAE,MAAM,EAAE,CAAA;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,sDAAsD;IACtD,UAAU,EAAE,MAAM,CAAA;IAClB,iDAAiD;IACjD,aAAa,EAAE,MAAM,CAAA;IACrB,+CAA+C;IAC/C,WAAW,EAAE,MAAM,CAAA;IACnB,2DAA2D;IAC3D,aAAa,EAAE,MAAM,CAAA;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,uCAAuC;IACvC,OAAO,CAAC,EAAE,OAAO,CAAC,qBAAqB,CAAC,CAAA;IACxC,wDAAwD;IACxD,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,4DAA4D;IAC5D,sBAAsB,CAAC,EAAE,MAAM,CAAA;IAC/B,2BAA2B;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB;AAYD;;;;;GAKG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAuB;IAC/C,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAQ;IAC/C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;gBAEnB,OAAO,GAAE,oBAAyB;IAkB9C;;;;;;OAMG;IACH,YAAY,CACV,QAAQ,EAAE,eAAe,EAAE,EAC3B,eAAe,CAAC,EAAE,eAAe,GAAG,IAAI,GACvC,YAAY;IA6Ff;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAoB3B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAY1B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAiB3B;;OAEG;IACH,OAAO,CAAC,4BAA4B;IAYpC;;OAEG;IACH,OAAO,CAAC,cAAc;IAkDtB;;;;;OAKG;IACH,aAAa,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO;IAe3C;;;;;OAKG;IACH,UAAU,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK;CAS3D;AAED,eAAe,aAAa,CAAA"}
|