@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,282 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Raw URL Source Adapter (SMI-591)
|
|
3
|
+
*
|
|
4
|
+
* Fetches skills from arbitrary HTTP/HTTPS URLs.
|
|
5
|
+
* Useful for custom registries or standalone skill files.
|
|
6
|
+
*/
|
|
7
|
+
import { BaseSourceAdapter } from './BaseSourceAdapter.js';
|
|
8
|
+
import { createHash } from 'crypto';
|
|
9
|
+
import { createLogger } from '../utils/logger.js';
|
|
10
|
+
import { validateUrl } from '../validation/index.js';
|
|
11
|
+
import { ApiError, wrapError } from '../errors/SkillsmithError.js';
|
|
12
|
+
const log = createLogger('RawUrlAdapter');
|
|
13
|
+
/**
|
|
14
|
+
* Raw URL Source Adapter
|
|
15
|
+
*
|
|
16
|
+
* Fetches skill files from arbitrary HTTP/HTTPS URLs.
|
|
17
|
+
* Can work with:
|
|
18
|
+
* - A predefined list of skill URLs
|
|
19
|
+
* - A JSON registry file containing skill entries
|
|
20
|
+
* - Direct URL locations
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* ```typescript
|
|
24
|
+
* const adapter = new RawUrlSourceAdapter({
|
|
25
|
+
* id: 'custom-registry',
|
|
26
|
+
* name: 'Custom Registry',
|
|
27
|
+
* type: 'raw-url',
|
|
28
|
+
* baseUrl: 'https://example.com',
|
|
29
|
+
* enabled: true,
|
|
30
|
+
* skillUrls: [
|
|
31
|
+
* { id: '1', name: 'My Skill', url: 'https://example.com/skill.md' }
|
|
32
|
+
* ]
|
|
33
|
+
* })
|
|
34
|
+
*
|
|
35
|
+
* await adapter.initialize()
|
|
36
|
+
* const content = await adapter.fetchSkillContent({
|
|
37
|
+
* owner: 'example.com',
|
|
38
|
+
* repo: 'my-skill',
|
|
39
|
+
* path: 'https://example.com/skill.md'
|
|
40
|
+
* })
|
|
41
|
+
* ```
|
|
42
|
+
*/
|
|
43
|
+
export class RawUrlSourceAdapter extends BaseSourceAdapter {
|
|
44
|
+
skillUrls = [];
|
|
45
|
+
timeout;
|
|
46
|
+
constructor(config) {
|
|
47
|
+
super(config);
|
|
48
|
+
this.skillUrls = config.skillUrls ?? [];
|
|
49
|
+
this.timeout = config.timeout ?? 30000;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Initialize adapter - load registry if configured
|
|
53
|
+
*/
|
|
54
|
+
async doInitialize() {
|
|
55
|
+
const config = this.config;
|
|
56
|
+
if (config.registryUrl) {
|
|
57
|
+
await this.loadRegistry(config.registryUrl);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Load skill entries from a remote JSON registry
|
|
62
|
+
*/
|
|
63
|
+
async loadRegistry(registryUrl) {
|
|
64
|
+
try {
|
|
65
|
+
validateUrl(registryUrl);
|
|
66
|
+
const response = await this.fetchWithTimeout(registryUrl);
|
|
67
|
+
if (!response.ok) {
|
|
68
|
+
throw new ApiError(`Failed to load registry: ${response.status}`, {
|
|
69
|
+
statusCode: response.status,
|
|
70
|
+
url: registryUrl,
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
const data = (await response.json());
|
|
74
|
+
if (data.skills && Array.isArray(data.skills)) {
|
|
75
|
+
this.skillUrls = [...this.skillUrls, ...data.skills];
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
catch (error) {
|
|
79
|
+
// Registry load is optional - log but don't fail (SMI-881: preserve error context)
|
|
80
|
+
const wrappedError = wrapError(error, `Failed to load registry from ${registryUrl}`);
|
|
81
|
+
log.warn(wrappedError.message);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Check if the source is reachable
|
|
86
|
+
*/
|
|
87
|
+
async doHealthCheck() {
|
|
88
|
+
// Try to reach the base URL
|
|
89
|
+
try {
|
|
90
|
+
validateUrl(this.config.baseUrl);
|
|
91
|
+
const response = await this.fetchWithTimeout(this.config.baseUrl, { method: 'HEAD' });
|
|
92
|
+
return {
|
|
93
|
+
healthy: response.ok || response.status === 405, // 405 = Method Not Allowed is ok for HEAD
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
catch {
|
|
97
|
+
return {
|
|
98
|
+
healthy: false,
|
|
99
|
+
error: 'Base URL unreachable',
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Search for skills in the configured registry
|
|
105
|
+
*/
|
|
106
|
+
async search(options = {}) {
|
|
107
|
+
await this.waitForRateLimit();
|
|
108
|
+
let filtered = [...this.skillUrls];
|
|
109
|
+
// Filter by query (search in name, description, tags)
|
|
110
|
+
if (options.query) {
|
|
111
|
+
const query = options.query.toLowerCase();
|
|
112
|
+
filtered = filtered.filter((entry) => entry.name.toLowerCase().includes(query) ||
|
|
113
|
+
entry.description?.toLowerCase().includes(query) ||
|
|
114
|
+
entry.tags?.some((tag) => tag.toLowerCase().includes(query)));
|
|
115
|
+
}
|
|
116
|
+
// Filter by topics (match against tags)
|
|
117
|
+
if (options.topics?.length) {
|
|
118
|
+
filtered = filtered.filter((entry) => options.topics.some((topic) => entry.tags?.includes(topic)));
|
|
119
|
+
}
|
|
120
|
+
// Apply limit
|
|
121
|
+
const limit = options.limit ?? 100;
|
|
122
|
+
const limitedResults = filtered.slice(0, limit);
|
|
123
|
+
// Convert to SourceRepository format
|
|
124
|
+
const repositories = limitedResults.map((entry) => this.entryToRepository(entry));
|
|
125
|
+
return {
|
|
126
|
+
repositories,
|
|
127
|
+
totalCount: filtered.length,
|
|
128
|
+
hasMore: filtered.length > limit,
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Get repository (skill entry) by location
|
|
133
|
+
*/
|
|
134
|
+
async getRepository(location) {
|
|
135
|
+
await this.waitForRateLimit();
|
|
136
|
+
// Find by URL or ID
|
|
137
|
+
const url = location.path ?? `${this.config.baseUrl}/${location.owner}/${location.repo}`;
|
|
138
|
+
const entry = this.skillUrls.find((e) => e.url === url || e.id === location.repo);
|
|
139
|
+
if (entry) {
|
|
140
|
+
return this.entryToRepository(entry);
|
|
141
|
+
}
|
|
142
|
+
// Create a synthetic entry for the URL
|
|
143
|
+
return {
|
|
144
|
+
id: this.generateId(url),
|
|
145
|
+
name: location.repo ?? 'Unknown Skill',
|
|
146
|
+
url,
|
|
147
|
+
description: null,
|
|
148
|
+
owner: location.owner ?? new URL(url).hostname,
|
|
149
|
+
defaultBranch: 'main',
|
|
150
|
+
stars: 0,
|
|
151
|
+
forks: 0,
|
|
152
|
+
topics: [],
|
|
153
|
+
updatedAt: new Date().toISOString(),
|
|
154
|
+
createdAt: new Date().toISOString(),
|
|
155
|
+
license: null,
|
|
156
|
+
metadata: { sourceType: 'raw-url' },
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Fetch skill content from a URL
|
|
161
|
+
*/
|
|
162
|
+
async fetchSkillContent(location) {
|
|
163
|
+
// Determine the URL to fetch
|
|
164
|
+
let url;
|
|
165
|
+
if (location.path?.startsWith('http')) {
|
|
166
|
+
url = location.path;
|
|
167
|
+
}
|
|
168
|
+
else {
|
|
169
|
+
// Try to find in registry
|
|
170
|
+
const entry = this.skillUrls.find((e) => e.id === location.repo || e.name === location.repo);
|
|
171
|
+
if (entry) {
|
|
172
|
+
url = entry.url;
|
|
173
|
+
}
|
|
174
|
+
else {
|
|
175
|
+
// Construct URL from base
|
|
176
|
+
url = `${this.config.baseUrl}/${location.owner}/${location.repo}/SKILL.md`;
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
// Validate URL to prevent SSRF attacks (SMI-721, SMI-726, SMI-729)
|
|
180
|
+
validateUrl(url);
|
|
181
|
+
// Note: Rate limiting is handled by fetchWithTimeout -> fetchWithRateLimit
|
|
182
|
+
const response = await this.fetchWithTimeout(url);
|
|
183
|
+
if (!response.ok) {
|
|
184
|
+
throw new ApiError(`Failed to fetch skill content: ${response.status}`, {
|
|
185
|
+
statusCode: response.status,
|
|
186
|
+
url,
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
const rawContent = await response.text();
|
|
190
|
+
const sha = this.generateSha(rawContent);
|
|
191
|
+
return {
|
|
192
|
+
rawContent,
|
|
193
|
+
sha,
|
|
194
|
+
location,
|
|
195
|
+
filePath: new URL(url).pathname,
|
|
196
|
+
encoding: 'utf-8',
|
|
197
|
+
};
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Add a skill URL to the registry
|
|
201
|
+
*/
|
|
202
|
+
addSkillUrl(entry) {
|
|
203
|
+
this.skillUrls.push(entry);
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Remove a skill URL from the registry
|
|
207
|
+
*/
|
|
208
|
+
removeSkillUrl(id) {
|
|
209
|
+
const index = this.skillUrls.findIndex((e) => e.id === id);
|
|
210
|
+
if (index >= 0) {
|
|
211
|
+
this.skillUrls.splice(index, 1);
|
|
212
|
+
return true;
|
|
213
|
+
}
|
|
214
|
+
return false;
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Get all registered skill URLs
|
|
218
|
+
*/
|
|
219
|
+
getSkillUrls() {
|
|
220
|
+
return [...this.skillUrls];
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* Convert a registry entry to SourceRepository
|
|
224
|
+
*/
|
|
225
|
+
entryToRepository(entry) {
|
|
226
|
+
const urlObj = new URL(entry.url);
|
|
227
|
+
return {
|
|
228
|
+
id: entry.id,
|
|
229
|
+
name: entry.name,
|
|
230
|
+
url: entry.url,
|
|
231
|
+
description: entry.description ?? null,
|
|
232
|
+
owner: entry.author ?? urlObj.hostname,
|
|
233
|
+
defaultBranch: 'main',
|
|
234
|
+
stars: 0,
|
|
235
|
+
forks: 0,
|
|
236
|
+
topics: entry.tags ?? [],
|
|
237
|
+
updatedAt: new Date().toISOString(),
|
|
238
|
+
createdAt: new Date().toISOString(),
|
|
239
|
+
license: null,
|
|
240
|
+
metadata: { sourceType: 'raw-url' },
|
|
241
|
+
};
|
|
242
|
+
}
|
|
243
|
+
/**
|
|
244
|
+
* Fetch with timeout
|
|
245
|
+
*/
|
|
246
|
+
async fetchWithTimeout(url, options) {
|
|
247
|
+
const controller = new AbortController();
|
|
248
|
+
const timeoutId = setTimeout(() => controller.abort(), this.timeout);
|
|
249
|
+
try {
|
|
250
|
+
const response = await this.fetchWithRateLimit(url, {
|
|
251
|
+
...options,
|
|
252
|
+
signal: controller.signal,
|
|
253
|
+
});
|
|
254
|
+
return response;
|
|
255
|
+
}
|
|
256
|
+
finally {
|
|
257
|
+
clearTimeout(timeoutId);
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
/**
|
|
261
|
+
* Generate a deterministic ID from a URL
|
|
262
|
+
*/
|
|
263
|
+
generateId(url) {
|
|
264
|
+
return createHash('sha256').update(url).digest('hex').slice(0, 16);
|
|
265
|
+
}
|
|
266
|
+
/**
|
|
267
|
+
* Generate SHA hash for content
|
|
268
|
+
*/
|
|
269
|
+
generateSha(content) {
|
|
270
|
+
return createHash('sha256').update(content).digest('hex');
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
/**
|
|
274
|
+
* Factory function for creating Raw URL adapters
|
|
275
|
+
*/
|
|
276
|
+
export function createRawUrlAdapter(config) {
|
|
277
|
+
return new RawUrlSourceAdapter({
|
|
278
|
+
...config,
|
|
279
|
+
type: 'raw-url',
|
|
280
|
+
});
|
|
281
|
+
}
|
|
282
|
+
//# sourceMappingURL=RawUrlSourceAdapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RawUrlSourceAdapter.js","sourceRoot":"","sources":["../../../src/sources/RawUrlSourceAdapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Source Adapter Registry
|
|
3
|
+
* Manages registration and lifecycle of source adapters
|
|
4
|
+
*/
|
|
5
|
+
import type { ISourceAdapter } from './ISourceAdapter.js';
|
|
6
|
+
import type { SourceConfig, SourceHealth, SourceType } from './types.js';
|
|
7
|
+
/**
|
|
8
|
+
* Factory function type for creating source adapters
|
|
9
|
+
*/
|
|
10
|
+
export type SourceAdapterFactory = (config: SourceConfig) => ISourceAdapter;
|
|
11
|
+
/**
|
|
12
|
+
* Registry for managing source adapters
|
|
13
|
+
*
|
|
14
|
+
* Features:
|
|
15
|
+
* - Register adapter factories by type
|
|
16
|
+
* - Create adapter instances from configuration
|
|
17
|
+
* - Manage adapter lifecycle (initialize, dispose)
|
|
18
|
+
* - Query adapters by type or ID
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* ```typescript
|
|
22
|
+
* const registry = new SourceAdapterRegistry()
|
|
23
|
+
*
|
|
24
|
+
* // Register factory for GitHub adapters
|
|
25
|
+
* registry.registerFactory('github', (config) => new GitHubSourceAdapter(config))
|
|
26
|
+
*
|
|
27
|
+
* // Create an adapter instance
|
|
28
|
+
* const adapter = await registry.create({
|
|
29
|
+
* id: 'github-main',
|
|
30
|
+
* name: 'GitHub Main',
|
|
31
|
+
* type: 'github',
|
|
32
|
+
* baseUrl: 'https://api.github.com',
|
|
33
|
+
* enabled: true
|
|
34
|
+
* })
|
|
35
|
+
*
|
|
36
|
+
* // Use the adapter
|
|
37
|
+
* const results = await adapter.search({ topics: ['claude-skill'] })
|
|
38
|
+
* ```
|
|
39
|
+
*/
|
|
40
|
+
export declare class SourceAdapterRegistry {
|
|
41
|
+
private factories;
|
|
42
|
+
private adapters;
|
|
43
|
+
/**
|
|
44
|
+
* Register a factory for creating adapters of a specific type
|
|
45
|
+
*
|
|
46
|
+
* @param type - Source type identifier
|
|
47
|
+
* @param factory - Factory function to create adapters
|
|
48
|
+
*/
|
|
49
|
+
registerFactory(type: SourceType | string, factory: SourceAdapterFactory): void;
|
|
50
|
+
/**
|
|
51
|
+
* Unregister a factory
|
|
52
|
+
*
|
|
53
|
+
* @param type - Source type to unregister
|
|
54
|
+
*/
|
|
55
|
+
unregisterFactory(type: SourceType | string): void;
|
|
56
|
+
/**
|
|
57
|
+
* Check if a factory is registered for a type
|
|
58
|
+
*
|
|
59
|
+
* @param type - Source type to check
|
|
60
|
+
*/
|
|
61
|
+
hasFactory(type: SourceType | string): boolean;
|
|
62
|
+
/**
|
|
63
|
+
* Get all registered factory types
|
|
64
|
+
*/
|
|
65
|
+
getRegisteredTypes(): string[];
|
|
66
|
+
/**
|
|
67
|
+
* Create and register an adapter instance
|
|
68
|
+
*
|
|
69
|
+
* @param config - Adapter configuration
|
|
70
|
+
* @param autoInitialize - Whether to initialize immediately (default: true)
|
|
71
|
+
* @returns The created adapter
|
|
72
|
+
*/
|
|
73
|
+
create(config: SourceConfig, autoInitialize?: boolean): Promise<ISourceAdapter>;
|
|
74
|
+
/**
|
|
75
|
+
* Get an adapter by ID
|
|
76
|
+
*
|
|
77
|
+
* @param id - Adapter ID
|
|
78
|
+
* @returns The adapter, or undefined if not found
|
|
79
|
+
*/
|
|
80
|
+
get(id: string): ISourceAdapter | undefined;
|
|
81
|
+
/**
|
|
82
|
+
* Get an adapter by ID, throwing if not found
|
|
83
|
+
*
|
|
84
|
+
* @param id - Adapter ID
|
|
85
|
+
* @returns The adapter
|
|
86
|
+
* @throws Error if adapter not found
|
|
87
|
+
*/
|
|
88
|
+
getOrThrow(id: string): ISourceAdapter;
|
|
89
|
+
/**
|
|
90
|
+
* Get all adapters of a specific type
|
|
91
|
+
*
|
|
92
|
+
* @param type - Source type to filter by
|
|
93
|
+
* @returns Array of matching adapters
|
|
94
|
+
*/
|
|
95
|
+
getByType(type: SourceType | string): ISourceAdapter[];
|
|
96
|
+
/**
|
|
97
|
+
* Get all enabled adapters
|
|
98
|
+
*/
|
|
99
|
+
getEnabled(): ISourceAdapter[];
|
|
100
|
+
/**
|
|
101
|
+
* Get all registered adapters
|
|
102
|
+
*/
|
|
103
|
+
getAll(): ISourceAdapter[];
|
|
104
|
+
/**
|
|
105
|
+
* Check if an adapter exists
|
|
106
|
+
*
|
|
107
|
+
* @param id - Adapter ID to check
|
|
108
|
+
*/
|
|
109
|
+
has(id: string): boolean;
|
|
110
|
+
/**
|
|
111
|
+
* Initialize an adapter if not already initialized
|
|
112
|
+
*
|
|
113
|
+
* @param id - Adapter ID
|
|
114
|
+
*/
|
|
115
|
+
initialize(id: string): Promise<void>;
|
|
116
|
+
/**
|
|
117
|
+
* Initialize all registered adapters
|
|
118
|
+
*/
|
|
119
|
+
initializeAll(): Promise<void>;
|
|
120
|
+
/**
|
|
121
|
+
* Remove and dispose an adapter
|
|
122
|
+
*
|
|
123
|
+
* @param id - Adapter ID to remove
|
|
124
|
+
*/
|
|
125
|
+
remove(id: string): Promise<void>;
|
|
126
|
+
/**
|
|
127
|
+
* Remove and dispose all adapters
|
|
128
|
+
*/
|
|
129
|
+
removeAll(): Promise<void>;
|
|
130
|
+
/**
|
|
131
|
+
* Check health of all enabled adapters
|
|
132
|
+
*
|
|
133
|
+
* @returns Map of adapter ID to health status
|
|
134
|
+
*/
|
|
135
|
+
checkHealthAll(): Promise<Map<string, SourceHealth>>;
|
|
136
|
+
/**
|
|
137
|
+
* Get registry statistics
|
|
138
|
+
*/
|
|
139
|
+
getStats(): RegistryStats;
|
|
140
|
+
private countByType;
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Registry statistics
|
|
144
|
+
*/
|
|
145
|
+
export interface RegistryStats {
|
|
146
|
+
totalFactories: number;
|
|
147
|
+
totalAdapters: number;
|
|
148
|
+
enabledAdapters: number;
|
|
149
|
+
initializedAdapters: number;
|
|
150
|
+
adaptersByType: Record<string, number>;
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Default global registry instance
|
|
154
|
+
*/
|
|
155
|
+
export declare const defaultRegistry: SourceAdapterRegistry;
|
|
156
|
+
//# sourceMappingURL=SourceAdapterRegistry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SourceAdapterRegistry.d.ts","sourceRoot":"","sources":["../../../src/sources/SourceAdapterRegistry.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACzD,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAExE;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG,CAAC,MAAM,EAAE,YAAY,KAAK,cAAc,CAAA;AAW3E;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,qBAAa,qBAAqB;IAChC,OAAO,CAAC,SAAS,CAAuD;IACxE,OAAO,CAAC,QAAQ,CAAmC;IAEnD;;;;;OAKG;IACH,eAAe,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,EAAE,OAAO,EAAE,oBAAoB,GAAG,IAAI;IAO/E;;;;OAIG;IACH,iBAAiB,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,GAAG,IAAI;IAIlD;;;;OAIG;IACH,UAAU,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,GAAG,OAAO;IAI9C;;OAEG;IACH,kBAAkB,IAAI,MAAM,EAAE;IAI9B;;;;;;OAMG;IACG,MAAM,CAAC,MAAM,EAAE,YAAY,EAAE,cAAc,UAAO,GAAG,OAAO,CAAC,cAAc,CAAC;IA2BlF;;;;;OAKG;IACH,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;IAI3C;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,cAAc;IAQtC;;;;;OAKG;IACH,SAAS,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,GAAG,cAAc,EAAE;IAMtD;;OAEG;IACH,UAAU,IAAI,cAAc,EAAE;IAM9B;;OAEG;IACH,MAAM,IAAI,cAAc,EAAE;IAI1B;;;;OAIG;IACH,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAIxB;;;;OAIG;IACG,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAY3C;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAUpC;;;;OAIG;IACG,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQvC;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAMhC;;;;OAIG;IACG,cAAc,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAY1D;;OAEG;IACH,QAAQ,IAAI,aAAa;IAWzB,OAAO,CAAC,WAAW;CAQpB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,cAAc,EAAE,MAAM,CAAA;IACtB,aAAa,EAAE,MAAM,CAAA;IACrB,eAAe,EAAE,MAAM,CAAA;IACvB,mBAAmB,EAAE,MAAM,CAAA;IAC3B,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACvC;AAED;;GAEG;AACH,eAAO,MAAM,eAAe,uBAA8B,CAAA"}
|
|
@@ -0,0 +1,242 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Source Adapter Registry
|
|
3
|
+
* Manages registration and lifecycle of source adapters
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Registry for managing source adapters
|
|
7
|
+
*
|
|
8
|
+
* Features:
|
|
9
|
+
* - Register adapter factories by type
|
|
10
|
+
* - Create adapter instances from configuration
|
|
11
|
+
* - Manage adapter lifecycle (initialize, dispose)
|
|
12
|
+
* - Query adapters by type or ID
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```typescript
|
|
16
|
+
* const registry = new SourceAdapterRegistry()
|
|
17
|
+
*
|
|
18
|
+
* // Register factory for GitHub adapters
|
|
19
|
+
* registry.registerFactory('github', (config) => new GitHubSourceAdapter(config))
|
|
20
|
+
*
|
|
21
|
+
* // Create an adapter instance
|
|
22
|
+
* const adapter = await registry.create({
|
|
23
|
+
* id: 'github-main',
|
|
24
|
+
* name: 'GitHub Main',
|
|
25
|
+
* type: 'github',
|
|
26
|
+
* baseUrl: 'https://api.github.com',
|
|
27
|
+
* enabled: true
|
|
28
|
+
* })
|
|
29
|
+
*
|
|
30
|
+
* // Use the adapter
|
|
31
|
+
* const results = await adapter.search({ topics: ['claude-skill'] })
|
|
32
|
+
* ```
|
|
33
|
+
*/
|
|
34
|
+
export class SourceAdapterRegistry {
|
|
35
|
+
factories = new Map();
|
|
36
|
+
adapters = new Map();
|
|
37
|
+
/**
|
|
38
|
+
* Register a factory for creating adapters of a specific type
|
|
39
|
+
*
|
|
40
|
+
* @param type - Source type identifier
|
|
41
|
+
* @param factory - Factory function to create adapters
|
|
42
|
+
*/
|
|
43
|
+
registerFactory(type, factory) {
|
|
44
|
+
if (this.factories.has(type)) {
|
|
45
|
+
throw new Error(`Factory already registered for type: ${type}`);
|
|
46
|
+
}
|
|
47
|
+
this.factories.set(type, factory);
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Unregister a factory
|
|
51
|
+
*
|
|
52
|
+
* @param type - Source type to unregister
|
|
53
|
+
*/
|
|
54
|
+
unregisterFactory(type) {
|
|
55
|
+
this.factories.delete(type);
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Check if a factory is registered for a type
|
|
59
|
+
*
|
|
60
|
+
* @param type - Source type to check
|
|
61
|
+
*/
|
|
62
|
+
hasFactory(type) {
|
|
63
|
+
return this.factories.has(type);
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Get all registered factory types
|
|
67
|
+
*/
|
|
68
|
+
getRegisteredTypes() {
|
|
69
|
+
return Array.from(this.factories.keys());
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Create and register an adapter instance
|
|
73
|
+
*
|
|
74
|
+
* @param config - Adapter configuration
|
|
75
|
+
* @param autoInitialize - Whether to initialize immediately (default: true)
|
|
76
|
+
* @returns The created adapter
|
|
77
|
+
*/
|
|
78
|
+
async create(config, autoInitialize = true) {
|
|
79
|
+
if (this.adapters.has(config.id)) {
|
|
80
|
+
throw new Error(`Adapter already exists with id: ${config.id}`);
|
|
81
|
+
}
|
|
82
|
+
const factory = this.factories.get(config.type);
|
|
83
|
+
if (!factory) {
|
|
84
|
+
throw new Error(`No factory registered for type: ${config.type}`);
|
|
85
|
+
}
|
|
86
|
+
const adapter = factory(config);
|
|
87
|
+
const entry = {
|
|
88
|
+
adapter,
|
|
89
|
+
factory,
|
|
90
|
+
initialized: false,
|
|
91
|
+
};
|
|
92
|
+
this.adapters.set(config.id, entry);
|
|
93
|
+
if (autoInitialize) {
|
|
94
|
+
await adapter.initialize();
|
|
95
|
+
entry.initialized = true;
|
|
96
|
+
}
|
|
97
|
+
return adapter;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Get an adapter by ID
|
|
101
|
+
*
|
|
102
|
+
* @param id - Adapter ID
|
|
103
|
+
* @returns The adapter, or undefined if not found
|
|
104
|
+
*/
|
|
105
|
+
get(id) {
|
|
106
|
+
return this.adapters.get(id)?.adapter;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Get an adapter by ID, throwing if not found
|
|
110
|
+
*
|
|
111
|
+
* @param id - Adapter ID
|
|
112
|
+
* @returns The adapter
|
|
113
|
+
* @throws Error if adapter not found
|
|
114
|
+
*/
|
|
115
|
+
getOrThrow(id) {
|
|
116
|
+
const adapter = this.get(id);
|
|
117
|
+
if (!adapter) {
|
|
118
|
+
throw new Error(`Adapter not found: ${id}`);
|
|
119
|
+
}
|
|
120
|
+
return adapter;
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Get all adapters of a specific type
|
|
124
|
+
*
|
|
125
|
+
* @param type - Source type to filter by
|
|
126
|
+
* @returns Array of matching adapters
|
|
127
|
+
*/
|
|
128
|
+
getByType(type) {
|
|
129
|
+
return Array.from(this.adapters.values())
|
|
130
|
+
.filter((entry) => entry.adapter.type === type)
|
|
131
|
+
.map((entry) => entry.adapter);
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Get all enabled adapters
|
|
135
|
+
*/
|
|
136
|
+
getEnabled() {
|
|
137
|
+
return Array.from(this.adapters.values())
|
|
138
|
+
.filter((entry) => entry.adapter.config.enabled)
|
|
139
|
+
.map((entry) => entry.adapter);
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Get all registered adapters
|
|
143
|
+
*/
|
|
144
|
+
getAll() {
|
|
145
|
+
return Array.from(this.adapters.values()).map((entry) => entry.adapter);
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Check if an adapter exists
|
|
149
|
+
*
|
|
150
|
+
* @param id - Adapter ID to check
|
|
151
|
+
*/
|
|
152
|
+
has(id) {
|
|
153
|
+
return this.adapters.has(id);
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Initialize an adapter if not already initialized
|
|
157
|
+
*
|
|
158
|
+
* @param id - Adapter ID
|
|
159
|
+
*/
|
|
160
|
+
async initialize(id) {
|
|
161
|
+
const entry = this.adapters.get(id);
|
|
162
|
+
if (!entry) {
|
|
163
|
+
throw new Error(`Adapter not found: ${id}`);
|
|
164
|
+
}
|
|
165
|
+
if (!entry.initialized) {
|
|
166
|
+
await entry.adapter.initialize();
|
|
167
|
+
entry.initialized = true;
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Initialize all registered adapters
|
|
172
|
+
*/
|
|
173
|
+
async initializeAll() {
|
|
174
|
+
const promises = Array.from(this.adapters.entries()).map(async ([id, entry]) => {
|
|
175
|
+
if (!entry.initialized) {
|
|
176
|
+
await entry.adapter.initialize();
|
|
177
|
+
entry.initialized = true;
|
|
178
|
+
}
|
|
179
|
+
});
|
|
180
|
+
await Promise.all(promises);
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Remove and dispose an adapter
|
|
184
|
+
*
|
|
185
|
+
* @param id - Adapter ID to remove
|
|
186
|
+
*/
|
|
187
|
+
async remove(id) {
|
|
188
|
+
const entry = this.adapters.get(id);
|
|
189
|
+
if (entry) {
|
|
190
|
+
await entry.adapter.dispose();
|
|
191
|
+
this.adapters.delete(id);
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Remove and dispose all adapters
|
|
196
|
+
*/
|
|
197
|
+
async removeAll() {
|
|
198
|
+
const promises = Array.from(this.adapters.values()).map((entry) => entry.adapter.dispose());
|
|
199
|
+
await Promise.all(promises);
|
|
200
|
+
this.adapters.clear();
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Check health of all enabled adapters
|
|
204
|
+
*
|
|
205
|
+
* @returns Map of adapter ID to health status
|
|
206
|
+
*/
|
|
207
|
+
async checkHealthAll() {
|
|
208
|
+
const results = new Map();
|
|
209
|
+
const promises = this.getEnabled().map(async (adapter) => {
|
|
210
|
+
const health = await adapter.checkHealth();
|
|
211
|
+
results.set(adapter.id, health);
|
|
212
|
+
});
|
|
213
|
+
await Promise.all(promises);
|
|
214
|
+
return results;
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Get registry statistics
|
|
218
|
+
*/
|
|
219
|
+
getStats() {
|
|
220
|
+
const adapters = Array.from(this.adapters.values());
|
|
221
|
+
return {
|
|
222
|
+
totalFactories: this.factories.size,
|
|
223
|
+
totalAdapters: adapters.length,
|
|
224
|
+
enabledAdapters: adapters.filter((e) => e.adapter.config.enabled).length,
|
|
225
|
+
initializedAdapters: adapters.filter((e) => e.initialized).length,
|
|
226
|
+
adaptersByType: this.countByType(),
|
|
227
|
+
};
|
|
228
|
+
}
|
|
229
|
+
countByType() {
|
|
230
|
+
const counts = {};
|
|
231
|
+
for (const entry of this.adapters.values()) {
|
|
232
|
+
const type = entry.adapter.type;
|
|
233
|
+
counts[type] = (counts[type] ?? 0) + 1;
|
|
234
|
+
}
|
|
235
|
+
return counts;
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
/**
|
|
239
|
+
* Default global registry instance
|
|
240
|
+
*/
|
|
241
|
+
export const defaultRegistry = new SourceAdapterRegistry();
|
|
242
|
+
//# sourceMappingURL=SourceAdapterRegistry.js.map
|