@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,141 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Skill Activation Manager for one-click skill installation
|
|
3
|
+
* @module @skillsmith/core/activation/ActivationManager
|
|
4
|
+
* @see Phase 4: Trigger System Architecture - One-Click Activation
|
|
5
|
+
*
|
|
6
|
+
* Provides infrastructure for:
|
|
7
|
+
* - Pre-validation before activation
|
|
8
|
+
* - Background skill prefetching
|
|
9
|
+
* - Hot-reload activation (no restart)
|
|
10
|
+
* - Undo/rollback capability
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* const manager = new ActivationManager();
|
|
14
|
+
* const result = await manager.activateSkill({
|
|
15
|
+
* skill_id: 'anthropic/commit',
|
|
16
|
+
* validate_first: true,
|
|
17
|
+
* hot_reload: true
|
|
18
|
+
* });
|
|
19
|
+
*/
|
|
20
|
+
/**
|
|
21
|
+
* Options for skill activation
|
|
22
|
+
*/
|
|
23
|
+
export interface ActivationOptions {
|
|
24
|
+
/** Skill ID to activate */
|
|
25
|
+
skill_id: string;
|
|
26
|
+
/** Validate skill before activating (default: true) */
|
|
27
|
+
validate_first?: boolean;
|
|
28
|
+
/** Enable hot-reload without restart (default: true) */
|
|
29
|
+
hot_reload?: boolean;
|
|
30
|
+
/** Auto-configure with defaults (default: false) */
|
|
31
|
+
auto_configure?: boolean;
|
|
32
|
+
/** Force reinstall even if already installed */
|
|
33
|
+
force?: boolean;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Result of skill activation
|
|
37
|
+
*/
|
|
38
|
+
export interface ActivationResult {
|
|
39
|
+
/** Whether activation succeeded */
|
|
40
|
+
success: boolean;
|
|
41
|
+
/** Skill ID that was activated */
|
|
42
|
+
skill_id: string;
|
|
43
|
+
/** Time taken to activate (ms) */
|
|
44
|
+
activation_time_ms: number;
|
|
45
|
+
/** Whether Claude restart is required */
|
|
46
|
+
requires_restart: boolean;
|
|
47
|
+
/** Undo token for rollback (if successful) */
|
|
48
|
+
undo_token?: string;
|
|
49
|
+
/** Error message (if failed) */
|
|
50
|
+
error?: string;
|
|
51
|
+
/** Installation path */
|
|
52
|
+
install_path?: string;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Undo snapshot for rollback
|
|
56
|
+
*/
|
|
57
|
+
interface UndoSnapshot {
|
|
58
|
+
/** Unique undo token */
|
|
59
|
+
token: string;
|
|
60
|
+
/** Skill ID */
|
|
61
|
+
skill_id: string;
|
|
62
|
+
/** Installation path */
|
|
63
|
+
install_path: string;
|
|
64
|
+
/** Timestamp of activation */
|
|
65
|
+
activated_at: string;
|
|
66
|
+
/** Previous state (null if new installation) */
|
|
67
|
+
previous_state: {
|
|
68
|
+
existed: boolean;
|
|
69
|
+
backup_path?: string;
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* ActivationManager - Manages skill installation and activation
|
|
74
|
+
*
|
|
75
|
+
* Provides one-click skill activation with validation, prefetching,
|
|
76
|
+
* hot-reload, and rollback capabilities.
|
|
77
|
+
*/
|
|
78
|
+
export declare class ActivationManager {
|
|
79
|
+
private readonly skillsDir;
|
|
80
|
+
private readonly undoSnapshots;
|
|
81
|
+
private readonly prefetchCache;
|
|
82
|
+
constructor(skillsDir?: string);
|
|
83
|
+
/**
|
|
84
|
+
* Activate a skill with optional validation and hot-reload
|
|
85
|
+
*
|
|
86
|
+
* @param options - Activation options
|
|
87
|
+
* @returns Activation result
|
|
88
|
+
*/
|
|
89
|
+
activateSkill(options: ActivationOptions): Promise<ActivationResult>;
|
|
90
|
+
/**
|
|
91
|
+
* Undo a previous activation using undo token
|
|
92
|
+
*
|
|
93
|
+
* @param undoToken - Undo token from activation
|
|
94
|
+
* @returns Whether undo succeeded
|
|
95
|
+
*/
|
|
96
|
+
undo(undoToken: string): Promise<boolean>;
|
|
97
|
+
/**
|
|
98
|
+
* Check if a skill is already installed
|
|
99
|
+
*/
|
|
100
|
+
private isInstalled;
|
|
101
|
+
/**
|
|
102
|
+
* Get installation path for a skill
|
|
103
|
+
*/
|
|
104
|
+
private getInstallPath;
|
|
105
|
+
/**
|
|
106
|
+
* Validate skill before activation
|
|
107
|
+
*/
|
|
108
|
+
private validateSkill;
|
|
109
|
+
/**
|
|
110
|
+
* Prefetch skill metadata and files
|
|
111
|
+
*/
|
|
112
|
+
private prefetchSkill;
|
|
113
|
+
/**
|
|
114
|
+
* Install skill to filesystem
|
|
115
|
+
*/
|
|
116
|
+
private installSkill;
|
|
117
|
+
/**
|
|
118
|
+
* Create backup of existing installation
|
|
119
|
+
*/
|
|
120
|
+
private createBackup;
|
|
121
|
+
/**
|
|
122
|
+
* Hot-reload skill without restarting Claude
|
|
123
|
+
*
|
|
124
|
+
* @returns Whether hot-reload succeeded
|
|
125
|
+
*/
|
|
126
|
+
private hotReload;
|
|
127
|
+
/**
|
|
128
|
+
* Create undo snapshot for rollback
|
|
129
|
+
*/
|
|
130
|
+
private createUndoSnapshot;
|
|
131
|
+
/**
|
|
132
|
+
* Get all undo snapshots
|
|
133
|
+
*/
|
|
134
|
+
getUndoHistory(): UndoSnapshot[];
|
|
135
|
+
/**
|
|
136
|
+
* Clear undo history (e.g., on session end)
|
|
137
|
+
*/
|
|
138
|
+
clearUndoHistory(): void;
|
|
139
|
+
}
|
|
140
|
+
export default ActivationManager;
|
|
141
|
+
//# sourceMappingURL=ActivationManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ActivationManager.d.ts","sourceRoot":"","sources":["../../../src/activation/ActivationManager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AASH;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,2BAA2B;IAC3B,QAAQ,EAAE,MAAM,CAAA;IAChB,uDAAuD;IACvD,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,wDAAwD;IACxD,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,oDAAoD;IACpD,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,gDAAgD;IAChD,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,mCAAmC;IACnC,OAAO,EAAE,OAAO,CAAA;IAChB,kCAAkC;IAClC,QAAQ,EAAE,MAAM,CAAA;IAChB,kCAAkC;IAClC,kBAAkB,EAAE,MAAM,CAAA;IAC1B,yCAAyC;IACzC,gBAAgB,EAAE,OAAO,CAAA;IACzB,8CAA8C;IAC9C,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,gCAAgC;IAChC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,wBAAwB;IACxB,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED;;GAEG;AACH,UAAU,YAAY;IACpB,wBAAwB;IACxB,KAAK,EAAE,MAAM,CAAA;IACb,eAAe;IACf,QAAQ,EAAE,MAAM,CAAA;IAChB,wBAAwB;IACxB,YAAY,EAAE,MAAM,CAAA;IACpB,8BAA8B;IAC9B,YAAY,EAAE,MAAM,CAAA;IACpB,gDAAgD;IAChD,cAAc,EAAE;QACd,OAAO,EAAE,OAAO,CAAA;QAChB,WAAW,CAAC,EAAE,MAAM,CAAA;KACrB,CAAA;CACF;AAcD;;;;;GAKG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAQ;IAClC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAuC;IACrE,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAkC;gBAEpD,SAAS,CAAC,EAAE,MAAM;IAK9B;;;;;OAKG;IACG,aAAa,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAmF1E;;;;;OAKG;IACG,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA4B/C;;OAEG;YACW,WAAW;IAUzB;;OAEG;IACH,OAAO,CAAC,cAAc;IAMtB;;OAEG;YACW,aAAa;IAyB3B;;OAEG;YACW,aAAa;IAY3B;;OAEG;YACW,YAAY;IAiB1B;;OAEG;YACW,YAAY;IAO1B;;;;OAIG;YACW,SAAS;IAiBvB;;OAEG;YACW,kBAAkB;IAuBhC;;OAEG;IACH,cAAc,IAAI,YAAY,EAAE;IAIhC;;OAEG;IACH,gBAAgB,IAAI,IAAI;CAIzB;AAED,eAAe,iBAAiB,CAAA"}
|
|
@@ -0,0 +1,282 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Skill Activation Manager for one-click skill installation
|
|
3
|
+
* @module @skillsmith/core/activation/ActivationManager
|
|
4
|
+
* @see Phase 4: Trigger System Architecture - One-Click Activation
|
|
5
|
+
*
|
|
6
|
+
* Provides infrastructure for:
|
|
7
|
+
* - Pre-validation before activation
|
|
8
|
+
* - Background skill prefetching
|
|
9
|
+
* - Hot-reload activation (no restart)
|
|
10
|
+
* - Undo/rollback capability
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* const manager = new ActivationManager();
|
|
14
|
+
* const result = await manager.activateSkill({
|
|
15
|
+
* skill_id: 'anthropic/commit',
|
|
16
|
+
* validate_first: true,
|
|
17
|
+
* hot_reload: true
|
|
18
|
+
* });
|
|
19
|
+
*/
|
|
20
|
+
import * as fs from 'fs/promises';
|
|
21
|
+
import * as path from 'path';
|
|
22
|
+
import { homedir } from 'os';
|
|
23
|
+
import { createLogger } from '../utils/logger.js';
|
|
24
|
+
const log = createLogger('ActivationManager');
|
|
25
|
+
/**
|
|
26
|
+
* ActivationManager - Manages skill installation and activation
|
|
27
|
+
*
|
|
28
|
+
* Provides one-click skill activation with validation, prefetching,
|
|
29
|
+
* hot-reload, and rollback capabilities.
|
|
30
|
+
*/
|
|
31
|
+
export class ActivationManager {
|
|
32
|
+
skillsDir;
|
|
33
|
+
undoSnapshots = new Map();
|
|
34
|
+
prefetchCache = new Map();
|
|
35
|
+
constructor(skillsDir) {
|
|
36
|
+
this.skillsDir = skillsDir || path.join(homedir(), '.claude', 'skills');
|
|
37
|
+
log.info('ActivationManager initialized', { skillsDir: this.skillsDir });
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Activate a skill with optional validation and hot-reload
|
|
41
|
+
*
|
|
42
|
+
* @param options - Activation options
|
|
43
|
+
* @returns Activation result
|
|
44
|
+
*/
|
|
45
|
+
async activateSkill(options) {
|
|
46
|
+
const startTime = performance.now();
|
|
47
|
+
const { skill_id, validate_first = true, hot_reload = true, force = false } = options;
|
|
48
|
+
log.info('Activating skill', { skill_id, validate_first, hot_reload, force });
|
|
49
|
+
try {
|
|
50
|
+
// 1. Pre-validation
|
|
51
|
+
if (validate_first) {
|
|
52
|
+
const validation = await this.validateSkill(skill_id);
|
|
53
|
+
if (!validation.valid) {
|
|
54
|
+
return {
|
|
55
|
+
success: false,
|
|
56
|
+
skill_id,
|
|
57
|
+
activation_time_ms: 0,
|
|
58
|
+
requires_restart: false,
|
|
59
|
+
error: `Validation failed: ${validation.errors.join(', ')}`,
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
if (validation.warnings.length > 0) {
|
|
63
|
+
log.warn('Skill validation warnings', { skill_id, warnings: validation.warnings });
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
// 2. Check if already installed
|
|
67
|
+
const installPath = this.getInstallPath(skill_id);
|
|
68
|
+
const alreadyInstalled = await this.isInstalled(skill_id);
|
|
69
|
+
if (alreadyInstalled && !force) {
|
|
70
|
+
return {
|
|
71
|
+
success: true,
|
|
72
|
+
skill_id,
|
|
73
|
+
activation_time_ms: Math.round(performance.now() - startTime),
|
|
74
|
+
requires_restart: false,
|
|
75
|
+
install_path: installPath,
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
// 3. Create backup if reinstalling
|
|
79
|
+
if (alreadyInstalled && force) {
|
|
80
|
+
await this.createBackup(skill_id, installPath);
|
|
81
|
+
}
|
|
82
|
+
// 4. Prefetch skill (if not cached)
|
|
83
|
+
await this.prefetchSkill(skill_id);
|
|
84
|
+
// 5. Install skill
|
|
85
|
+
await this.installSkill(skill_id, installPath);
|
|
86
|
+
// 6. Hot-reload (if supported)
|
|
87
|
+
let requiresRestart = true;
|
|
88
|
+
if (hot_reload) {
|
|
89
|
+
const reloaded = await this.hotReload(installPath);
|
|
90
|
+
requiresRestart = !reloaded;
|
|
91
|
+
}
|
|
92
|
+
// 7. Create undo snapshot
|
|
93
|
+
const undoToken = await this.createUndoSnapshot(skill_id, installPath, alreadyInstalled);
|
|
94
|
+
const endTime = performance.now();
|
|
95
|
+
return {
|
|
96
|
+
success: true,
|
|
97
|
+
skill_id,
|
|
98
|
+
activation_time_ms: Math.round(endTime - startTime),
|
|
99
|
+
requires_restart: requiresRestart,
|
|
100
|
+
undo_token: undoToken,
|
|
101
|
+
install_path: installPath,
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
catch (error) {
|
|
105
|
+
log.error('Skill activation failed', error instanceof Error ? error : undefined, { skill_id });
|
|
106
|
+
return {
|
|
107
|
+
success: false,
|
|
108
|
+
skill_id,
|
|
109
|
+
activation_time_ms: Math.round(performance.now() - startTime),
|
|
110
|
+
requires_restart: false,
|
|
111
|
+
error: error instanceof Error ? error.message : 'Unknown error',
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Undo a previous activation using undo token
|
|
117
|
+
*
|
|
118
|
+
* @param undoToken - Undo token from activation
|
|
119
|
+
* @returns Whether undo succeeded
|
|
120
|
+
*/
|
|
121
|
+
async undo(undoToken) {
|
|
122
|
+
const snapshot = this.undoSnapshots.get(undoToken);
|
|
123
|
+
if (!snapshot) {
|
|
124
|
+
log.warn('Undo snapshot not found', { undoToken });
|
|
125
|
+
return false;
|
|
126
|
+
}
|
|
127
|
+
try {
|
|
128
|
+
if (snapshot.previous_state.existed && snapshot.previous_state.backup_path) {
|
|
129
|
+
// Restore from backup
|
|
130
|
+
await fs.rm(snapshot.install_path, { recursive: true, force: true });
|
|
131
|
+
await fs.rename(snapshot.previous_state.backup_path, snapshot.install_path);
|
|
132
|
+
log.info('Restored skill from backup', { skill_id: snapshot.skill_id });
|
|
133
|
+
}
|
|
134
|
+
else {
|
|
135
|
+
// Remove installation
|
|
136
|
+
await fs.rm(snapshot.install_path, { recursive: true, force: true });
|
|
137
|
+
log.info('Removed skill installation', { skill_id: snapshot.skill_id });
|
|
138
|
+
}
|
|
139
|
+
this.undoSnapshots.delete(undoToken);
|
|
140
|
+
return true;
|
|
141
|
+
}
|
|
142
|
+
catch (error) {
|
|
143
|
+
log.error('Undo failed', error instanceof Error ? error : undefined, { undoToken });
|
|
144
|
+
return false;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Check if a skill is already installed
|
|
149
|
+
*/
|
|
150
|
+
async isInstalled(skillId) {
|
|
151
|
+
const installPath = this.getInstallPath(skillId);
|
|
152
|
+
try {
|
|
153
|
+
await fs.access(installPath);
|
|
154
|
+
return true;
|
|
155
|
+
}
|
|
156
|
+
catch {
|
|
157
|
+
return false;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Get installation path for a skill
|
|
162
|
+
*/
|
|
163
|
+
getInstallPath(skillId) {
|
|
164
|
+
// Convert skill ID to directory name (e.g., anthropic/commit -> anthropic-commit)
|
|
165
|
+
const dirName = skillId.replace('/', '-');
|
|
166
|
+
return path.join(this.skillsDir, dirName);
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Validate skill before activation
|
|
170
|
+
*/
|
|
171
|
+
async validateSkill(skillId) {
|
|
172
|
+
const errors = [];
|
|
173
|
+
const warnings = [];
|
|
174
|
+
// Basic ID validation
|
|
175
|
+
if (!skillId || skillId.trim().length === 0) {
|
|
176
|
+
errors.push('Skill ID cannot be empty');
|
|
177
|
+
}
|
|
178
|
+
if (!skillId.includes('/')) {
|
|
179
|
+
errors.push('Skill ID must be in format "author/name"');
|
|
180
|
+
}
|
|
181
|
+
// Check for valid characters
|
|
182
|
+
if (!/^[a-zA-Z0-9_-]+\/[a-zA-Z0-9_-]+$/.test(skillId)) {
|
|
183
|
+
errors.push('Skill ID contains invalid characters');
|
|
184
|
+
}
|
|
185
|
+
// In production, would fetch and validate skill manifest
|
|
186
|
+
// For now, just check basic structure
|
|
187
|
+
const valid = errors.length === 0;
|
|
188
|
+
return { valid, errors, warnings };
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Prefetch skill metadata and files
|
|
192
|
+
*/
|
|
193
|
+
async prefetchSkill(skillId) {
|
|
194
|
+
if (this.prefetchCache.has(skillId)) {
|
|
195
|
+
log.debug('Skill already prefetched', { skillId });
|
|
196
|
+
return;
|
|
197
|
+
}
|
|
198
|
+
// In production, this would download skill files in background
|
|
199
|
+
// For now, just mark as prefetched
|
|
200
|
+
this.prefetchCache.set(skillId, true);
|
|
201
|
+
log.debug('Skill prefetched', { skillId });
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Install skill to filesystem
|
|
205
|
+
*/
|
|
206
|
+
async installSkill(skillId, installPath) {
|
|
207
|
+
// Ensure skills directory exists
|
|
208
|
+
await fs.mkdir(this.skillsDir, { recursive: true });
|
|
209
|
+
// Ensure install directory exists
|
|
210
|
+
await fs.mkdir(installPath, { recursive: true });
|
|
211
|
+
// In production, this would copy skill files from registry/download
|
|
212
|
+
// For now, create a placeholder SKILL.md
|
|
213
|
+
const skillMdPath = path.join(installPath, 'SKILL.md');
|
|
214
|
+
const placeholder = `# ${skillId}\n\nSkill installed via one-click activation.\n`;
|
|
215
|
+
await fs.writeFile(skillMdPath, placeholder, 'utf-8');
|
|
216
|
+
log.info('Skill installed', { skillId, installPath });
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* Create backup of existing installation
|
|
220
|
+
*/
|
|
221
|
+
async createBackup(skillId, installPath) {
|
|
222
|
+
const backupPath = `${installPath}.backup-${Date.now()}`;
|
|
223
|
+
await fs.rename(installPath, backupPath);
|
|
224
|
+
log.info('Created backup', { skillId, backupPath });
|
|
225
|
+
return backupPath;
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* Hot-reload skill without restarting Claude
|
|
229
|
+
*
|
|
230
|
+
* @returns Whether hot-reload succeeded
|
|
231
|
+
*/
|
|
232
|
+
async hotReload(installPath) {
|
|
233
|
+
// In production, this would:
|
|
234
|
+
// 1. Notify Claude to reload skills
|
|
235
|
+
// 2. Re-parse SKILL.md
|
|
236
|
+
// 3. Update skill registry
|
|
237
|
+
//
|
|
238
|
+
// For now, just check if path exists
|
|
239
|
+
try {
|
|
240
|
+
await fs.access(installPath);
|
|
241
|
+
log.info('Hot-reload simulated', { installPath });
|
|
242
|
+
return true;
|
|
243
|
+
}
|
|
244
|
+
catch {
|
|
245
|
+
log.warn('Hot-reload failed', { installPath });
|
|
246
|
+
return false;
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
/**
|
|
250
|
+
* Create undo snapshot for rollback
|
|
251
|
+
*/
|
|
252
|
+
async createUndoSnapshot(skillId, installPath, previouslyInstalled) {
|
|
253
|
+
const token = `undo-${skillId}-${Date.now()}`;
|
|
254
|
+
const snapshot = {
|
|
255
|
+
token,
|
|
256
|
+
skill_id: skillId,
|
|
257
|
+
install_path: installPath,
|
|
258
|
+
activated_at: new Date().toISOString(),
|
|
259
|
+
previous_state: {
|
|
260
|
+
existed: previouslyInstalled,
|
|
261
|
+
},
|
|
262
|
+
};
|
|
263
|
+
this.undoSnapshots.set(token, snapshot);
|
|
264
|
+
log.debug('Created undo snapshot', { token, skillId });
|
|
265
|
+
return token;
|
|
266
|
+
}
|
|
267
|
+
/**
|
|
268
|
+
* Get all undo snapshots
|
|
269
|
+
*/
|
|
270
|
+
getUndoHistory() {
|
|
271
|
+
return Array.from(this.undoSnapshots.values());
|
|
272
|
+
}
|
|
273
|
+
/**
|
|
274
|
+
* Clear undo history (e.g., on session end)
|
|
275
|
+
*/
|
|
276
|
+
clearUndoHistory() {
|
|
277
|
+
this.undoSnapshots.clear();
|
|
278
|
+
log.debug('Cleared undo history');
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
export default ActivationManager;
|
|
282
|
+
//# sourceMappingURL=ActivationManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ActivationManager.js","sourceRoot":"","sources":["../../../src/activation/ActivationManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Zero-Config Skill Activation System
|
|
3
|
+
* @module @skillsmith/core/activation/ZeroConfigActivator
|
|
4
|
+
* @see Phase 4: Trigger System Architecture - Zero-Config Activation
|
|
5
|
+
*
|
|
6
|
+
* Enables activation of skills with configuration requirements by:
|
|
7
|
+
* - Injecting safe default values
|
|
8
|
+
* - Deferring configuration until first use
|
|
9
|
+
* - Providing configuration prompts on demand
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* const activator = new ZeroConfigActivator(manager);
|
|
13
|
+
* const result = await activator.activate('community/api-client');
|
|
14
|
+
* // Skill is activated with defaults, user can configure later
|
|
15
|
+
*/
|
|
16
|
+
import type { ActivationManager, ActivationOptions, ActivationResult } from './ActivationManager.js';
|
|
17
|
+
/**
|
|
18
|
+
* Skill configuration schema
|
|
19
|
+
*/
|
|
20
|
+
export interface SkillConfigSchema {
|
|
21
|
+
/** Configuration is required for this skill */
|
|
22
|
+
config_required: boolean;
|
|
23
|
+
/** Allow deferred configuration */
|
|
24
|
+
config_defer: boolean;
|
|
25
|
+
/** Default configuration values */
|
|
26
|
+
config_defaults?: Record<string, unknown>;
|
|
27
|
+
/** Configuration field definitions */
|
|
28
|
+
config_fields?: ConfigField[];
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Configuration field definition
|
|
32
|
+
*/
|
|
33
|
+
export interface ConfigField {
|
|
34
|
+
/** Field name */
|
|
35
|
+
name: string;
|
|
36
|
+
/** Field type */
|
|
37
|
+
type: 'string' | 'number' | 'boolean' | 'url' | 'secret';
|
|
38
|
+
/** Field description */
|
|
39
|
+
description: string;
|
|
40
|
+
/** Whether field is required */
|
|
41
|
+
required: boolean;
|
|
42
|
+
/** Default value */
|
|
43
|
+
default?: unknown;
|
|
44
|
+
/** Validation pattern (for strings) */
|
|
45
|
+
pattern?: string;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Configuration status
|
|
49
|
+
*/
|
|
50
|
+
export interface ConfigStatus {
|
|
51
|
+
/** Whether skill has required configuration */
|
|
52
|
+
has_config: boolean;
|
|
53
|
+
/** Whether using default values */
|
|
54
|
+
using_defaults: boolean;
|
|
55
|
+
/** Whether user has customized config */
|
|
56
|
+
user_configured: boolean;
|
|
57
|
+
/** Configuration fields */
|
|
58
|
+
fields: ConfigField[];
|
|
59
|
+
/** Missing required fields */
|
|
60
|
+
missing_required: string[];
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Zero-config activation options
|
|
64
|
+
*/
|
|
65
|
+
export interface ZeroConfigOptions extends Omit<ActivationOptions, 'auto_configure' | 'skill_id'> {
|
|
66
|
+
/** Skip configuration entirely (use defaults) */
|
|
67
|
+
skip_config?: boolean;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* ZeroConfigActivator - Activates skills with automatic default configuration
|
|
71
|
+
*
|
|
72
|
+
* Handles skills that require configuration by:
|
|
73
|
+
* 1. Checking if defaults are available
|
|
74
|
+
* 2. Injecting defaults during installation
|
|
75
|
+
* 3. Marking skill as "needs configuration"
|
|
76
|
+
* 4. Providing configure endpoint for customization
|
|
77
|
+
*/
|
|
78
|
+
export declare class ZeroConfigActivator {
|
|
79
|
+
private readonly activationManager;
|
|
80
|
+
constructor(activationManager: ActivationManager);
|
|
81
|
+
/**
|
|
82
|
+
* Activate a skill with zero-config defaults
|
|
83
|
+
*
|
|
84
|
+
* @param skillId - Skill ID to activate
|
|
85
|
+
* @param options - Activation options
|
|
86
|
+
* @returns Activation result with configuration status
|
|
87
|
+
*/
|
|
88
|
+
activate(skillId: string, options?: ZeroConfigOptions): Promise<ActivationResult & {
|
|
89
|
+
config_status?: ConfigStatus;
|
|
90
|
+
}>;
|
|
91
|
+
/**
|
|
92
|
+
* Activate skill with default configuration values
|
|
93
|
+
*/
|
|
94
|
+
private activateWithDefaults;
|
|
95
|
+
/**
|
|
96
|
+
* Inject default configuration into skill directory
|
|
97
|
+
*/
|
|
98
|
+
private injectDefaultConfig;
|
|
99
|
+
/**
|
|
100
|
+
* Get configuration schema for a skill
|
|
101
|
+
*
|
|
102
|
+
* In production, this would fetch from skill registry
|
|
103
|
+
* For now, returns mock schema based on skill ID
|
|
104
|
+
*/
|
|
105
|
+
private getConfigSchema;
|
|
106
|
+
/**
|
|
107
|
+
* Get current configuration status for a skill
|
|
108
|
+
*/
|
|
109
|
+
getConfigStatus(skillId: string, configSchema?: SkillConfigSchema): Promise<ConfigStatus>;
|
|
110
|
+
/**
|
|
111
|
+
* Check if a skill needs configuration
|
|
112
|
+
*
|
|
113
|
+
* @param skillId - Skill ID to check
|
|
114
|
+
* @returns Whether skill needs user configuration
|
|
115
|
+
*/
|
|
116
|
+
needsConfiguration(skillId: string): Promise<boolean>;
|
|
117
|
+
/**
|
|
118
|
+
* Generate configuration prompt for user
|
|
119
|
+
*
|
|
120
|
+
* @param skillId - Skill ID
|
|
121
|
+
* @returns Configuration instructions
|
|
122
|
+
*/
|
|
123
|
+
getConfigurationPrompt(skillId: string): Promise<string>;
|
|
124
|
+
}
|
|
125
|
+
export default ZeroConfigActivator;
|
|
126
|
+
//# sourceMappingURL=ZeroConfigActivator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ZeroConfigActivator.d.ts","sourceRoot":"","sources":["../../../src/activation/ZeroConfigActivator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAKH,OAAO,KAAK,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAIpG;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,+CAA+C;IAC/C,eAAe,EAAE,OAAO,CAAA;IACxB,mCAAmC;IACnC,YAAY,EAAE,OAAO,CAAA;IACrB,mCAAmC;IACnC,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACzC,sCAAsC;IACtC,aAAa,CAAC,EAAE,WAAW,EAAE,CAAA;CAC9B;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,iBAAiB;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,iBAAiB;IACjB,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,KAAK,GAAG,QAAQ,CAAA;IACxD,wBAAwB;IACxB,WAAW,EAAE,MAAM,CAAA;IACnB,gCAAgC;IAChC,QAAQ,EAAE,OAAO,CAAA;IACjB,oBAAoB;IACpB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,uCAAuC;IACvC,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,+CAA+C;IAC/C,UAAU,EAAE,OAAO,CAAA;IACnB,mCAAmC;IACnC,cAAc,EAAE,OAAO,CAAA;IACvB,yCAAyC;IACzC,eAAe,EAAE,OAAO,CAAA;IACxB,2BAA2B;IAC3B,MAAM,EAAE,WAAW,EAAE,CAAA;IACrB,8BAA8B;IAC9B,gBAAgB,EAAE,MAAM,EAAE,CAAA;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,iBAAkB,SAAQ,IAAI,CAAC,iBAAiB,EAAE,gBAAgB,GAAG,UAAU,CAAC;IAC/F,iDAAiD;IACjD,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB;AAED;;;;;;;;GAQG;AACH,qBAAa,mBAAmB;IAClB,OAAO,CAAC,QAAQ,CAAC,iBAAiB;gBAAjB,iBAAiB,EAAE,iBAAiB;IAIjE;;;;;;OAMG;IACG,QAAQ,CACZ,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,gBAAgB,GAAG;QAAE,aAAa,CAAC,EAAE,YAAY,CAAA;KAAE,CAAC;IA0C/D;;OAEG;YACW,oBAAoB;IA8BlC;;OAEG;YACW,mBAAmB;IAoCjC;;;;;OAKG;YACW,eAAe;IAoD7B;;OAEG;IACG,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,YAAY,CAAC;IA6B/F;;;;;OAKG;IACG,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAK3D;;;;;OAKG;IACG,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAiC/D;AAED,eAAe,mBAAmB,CAAA"}
|