@skillsmith/core 0.2.0 → 0.4.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/README.md +235 -4
- package/dist/.tsbuildinfo +1 -1
- package/dist/src/analysis/__tests__/incremental.test.d.ts +13 -0
- package/dist/src/analysis/__tests__/incremental.test.d.ts.map +1 -0
- package/dist/src/analysis/__tests__/incremental.test.js +515 -0
- package/dist/src/analysis/__tests__/incremental.test.js.map +1 -0
- package/dist/src/analysis/__tests__/integration.test.d.ts +14 -0
- package/dist/src/analysis/__tests__/integration.test.d.ts.map +1 -0
- package/dist/src/analysis/__tests__/integration.test.js +1059 -0
- package/dist/src/analysis/__tests__/integration.test.js.map +1 -0
- package/dist/src/analysis/__tests__/metrics.test.d.ts +9 -0
- package/dist/src/analysis/__tests__/metrics.test.d.ts.map +1 -0
- package/dist/src/analysis/__tests__/metrics.test.js +369 -0
- package/dist/src/analysis/__tests__/metrics.test.js.map +1 -0
- package/dist/src/analysis/__tests__/performance.test.d.ts +15 -0
- package/dist/src/analysis/__tests__/performance.test.d.ts.map +1 -0
- package/dist/src/analysis/__tests__/performance.test.js +402 -0
- package/dist/src/analysis/__tests__/performance.test.js.map +1 -0
- package/dist/src/analysis/adapters/__tests__/go.test.d.ts +12 -0
- package/dist/src/analysis/adapters/__tests__/go.test.d.ts.map +1 -0
- package/dist/src/analysis/adapters/__tests__/go.test.js +561 -0
- package/dist/src/analysis/adapters/__tests__/go.test.js.map +1 -0
- package/dist/src/analysis/adapters/__tests__/python.test.d.ts +11 -0
- package/dist/src/analysis/adapters/__tests__/python.test.d.ts.map +1 -0
- package/dist/src/analysis/adapters/__tests__/python.test.js +669 -0
- package/dist/src/analysis/adapters/__tests__/python.test.js.map +1 -0
- package/dist/src/analysis/adapters/__tests__/rust.test.d.ts +12 -0
- package/dist/src/analysis/adapters/__tests__/rust.test.d.ts.map +1 -0
- package/dist/src/analysis/adapters/__tests__/rust.test.js +676 -0
- package/dist/src/analysis/adapters/__tests__/rust.test.js.map +1 -0
- package/dist/src/analysis/adapters/__tests__/typescript.test.d.ts +14 -0
- package/dist/src/analysis/adapters/__tests__/typescript.test.d.ts.map +1 -0
- package/dist/src/analysis/adapters/__tests__/typescript.test.js +381 -0
- package/dist/src/analysis/adapters/__tests__/typescript.test.js.map +1 -0
- package/dist/src/analysis/adapters/base.d.ts +83 -0
- package/dist/src/analysis/adapters/base.d.ts.map +1 -0
- package/dist/src/analysis/adapters/base.js +40 -0
- package/dist/src/analysis/adapters/base.js.map +1 -0
- package/dist/src/analysis/adapters/factory.d.ts +150 -0
- package/dist/src/analysis/adapters/factory.d.ts.map +1 -0
- package/dist/src/analysis/adapters/factory.js +244 -0
- package/dist/src/analysis/adapters/factory.js.map +1 -0
- package/dist/src/analysis/adapters/go.d.ts +131 -0
- package/dist/src/analysis/adapters/go.d.ts.map +1 -0
- package/dist/src/analysis/adapters/go.js +414 -0
- package/dist/src/analysis/adapters/go.js.map +1 -0
- package/dist/src/analysis/adapters/index.d.ts +20 -0
- package/dist/src/analysis/adapters/index.d.ts.map +1 -0
- package/dist/src/analysis/adapters/index.js +23 -0
- package/dist/src/analysis/adapters/index.js.map +1 -0
- package/dist/src/analysis/adapters/java.d.ts +154 -0
- package/dist/src/analysis/adapters/java.d.ts.map +1 -0
- package/dist/src/analysis/adapters/java.js +407 -0
- package/dist/src/analysis/adapters/java.js.map +1 -0
- package/dist/src/analysis/adapters/python.d.ts +165 -0
- package/dist/src/analysis/adapters/python.d.ts.map +1 -0
- package/dist/src/analysis/adapters/python.js +475 -0
- package/dist/src/analysis/adapters/python.js.map +1 -0
- package/dist/src/analysis/adapters/rust.d.ts +116 -0
- package/dist/src/analysis/adapters/rust.d.ts.map +1 -0
- package/dist/src/analysis/adapters/rust.js +476 -0
- package/dist/src/analysis/adapters/rust.js.map +1 -0
- package/dist/src/analysis/adapters/typescript.d.ts +68 -0
- package/dist/src/analysis/adapters/typescript.d.ts.map +1 -0
- package/dist/src/analysis/adapters/typescript.js +79 -0
- package/dist/src/analysis/adapters/typescript.js.map +1 -0
- package/dist/src/analysis/aggregator.d.ts +193 -0
- package/dist/src/analysis/aggregator.d.ts.map +1 -0
- package/dist/src/analysis/aggregator.js +283 -0
- package/dist/src/analysis/aggregator.js.map +1 -0
- package/dist/src/analysis/cache.d.ts +180 -0
- package/dist/src/analysis/cache.d.ts.map +1 -0
- package/dist/src/analysis/cache.js +279 -0
- package/dist/src/analysis/cache.js.map +1 -0
- package/dist/src/analysis/file-streamer.d.ts +136 -0
- package/dist/src/analysis/file-streamer.d.ts.map +1 -0
- package/dist/src/analysis/file-streamer.js +291 -0
- package/dist/src/analysis/file-streamer.js.map +1 -0
- package/dist/src/analysis/incremental-parser.d.ts +186 -0
- package/dist/src/analysis/incremental-parser.d.ts.map +1 -0
- package/dist/src/analysis/incremental-parser.js +291 -0
- package/dist/src/analysis/incremental-parser.js.map +1 -0
- package/dist/src/analysis/incremental.d.ts +186 -0
- package/dist/src/analysis/incremental.d.ts.map +1 -0
- package/dist/src/analysis/incremental.js +247 -0
- package/dist/src/analysis/incremental.js.map +1 -0
- package/dist/src/analysis/index.d.ts +25 -3
- package/dist/src/analysis/index.d.ts.map +1 -1
- package/dist/src/analysis/index.js +45 -3
- package/dist/src/analysis/index.js.map +1 -1
- package/dist/src/analysis/language-detector.d.ts +92 -0
- package/dist/src/analysis/language-detector.d.ts.map +1 -0
- package/dist/src/analysis/language-detector.js +602 -0
- package/dist/src/analysis/language-detector.js.map +1 -0
- package/dist/src/analysis/memory-monitor.d.ts +199 -0
- package/dist/src/analysis/memory-monitor.d.ts.map +1 -0
- package/dist/src/analysis/memory-monitor.js +271 -0
- package/dist/src/analysis/memory-monitor.js.map +1 -0
- package/dist/src/analysis/metrics.d.ts +300 -0
- package/dist/src/analysis/metrics.d.ts.map +1 -0
- package/dist/src/analysis/metrics.js +537 -0
- package/dist/src/analysis/metrics.js.map +1 -0
- package/dist/src/analysis/router.d.ts +264 -0
- package/dist/src/analysis/router.d.ts.map +1 -0
- package/dist/src/analysis/router.js +398 -0
- package/dist/src/analysis/router.js.map +1 -0
- package/dist/src/analysis/tree-cache.d.ts +208 -0
- package/dist/src/analysis/tree-cache.d.ts.map +1 -0
- package/dist/src/analysis/tree-cache.js +288 -0
- package/dist/src/analysis/tree-cache.js.map +1 -0
- package/dist/src/analysis/tree-sitter/manager.d.ts +141 -0
- package/dist/src/analysis/tree-sitter/manager.d.ts.map +1 -0
- package/dist/src/analysis/tree-sitter/manager.js +239 -0
- package/dist/src/analysis/tree-sitter/manager.js.map +1 -0
- package/dist/src/analysis/types.d.ts +71 -6
- package/dist/src/analysis/types.d.ts.map +1 -1
- package/dist/src/analysis/types.js +36 -3
- package/dist/src/analysis/types.js.map +1 -1
- package/dist/src/analysis/worker-pool.d.ts +141 -0
- package/dist/src/analysis/worker-pool.d.ts.map +1 -0
- package/dist/src/analysis/worker-pool.js +418 -0
- package/dist/src/analysis/worker-pool.js.map +1 -0
- package/dist/src/analytics/AnalyticsRepository.d.ts +4 -0
- package/dist/src/analytics/AnalyticsRepository.d.ts.map +1 -1
- package/dist/src/analytics/AnalyticsRepository.js +26 -44
- package/dist/src/analytics/AnalyticsRepository.js.map +1 -1
- package/dist/src/analytics/schema.d.ts +1 -1
- package/dist/src/analytics/schema.d.ts.map +1 -1
- package/dist/src/analytics/schema.js +140 -0
- package/dist/src/analytics/schema.js.map +1 -1
- package/dist/src/api/cache.d.ts +24 -1
- package/dist/src/api/cache.d.ts.map +1 -1
- package/dist/src/api/cache.js +50 -2
- package/dist/src/api/cache.js.map +1 -1
- package/dist/src/api/client.d.ts +140 -6
- package/dist/src/api/client.d.ts.map +1 -1
- package/dist/src/api/client.js +222 -21
- package/dist/src/api/client.js.map +1 -1
- package/dist/src/api/index.d.ts +2 -0
- package/dist/src/api/index.d.ts.map +1 -1
- package/dist/src/api/index.js +7 -0
- package/dist/src/api/index.js.map +1 -1
- package/dist/src/api/types.d.ts +251 -0
- package/dist/src/api/types.d.ts.map +1 -0
- package/dist/src/api/types.js +9 -0
- package/dist/src/api/types.js.map +1 -0
- package/dist/src/benchmarks/memory/MemoryProfiler.d.ts.map +1 -1
- package/dist/src/benchmarks/memory/MemoryProfiler.js.map +1 -1
- package/dist/src/billing/BillingService.d.ts +139 -0
- package/dist/src/billing/BillingService.d.ts.map +1 -0
- package/dist/src/billing/BillingService.js +393 -0
- package/dist/src/billing/BillingService.js.map +1 -0
- package/dist/src/billing/GDPRComplianceService.d.ts +176 -0
- package/dist/src/billing/GDPRComplianceService.d.ts.map +1 -0
- package/dist/src/billing/GDPRComplianceService.js +361 -0
- package/dist/src/billing/GDPRComplianceService.js.map +1 -0
- package/dist/src/billing/StripeClient.d.ts +177 -0
- package/dist/src/billing/StripeClient.d.ts.map +1 -0
- package/dist/src/billing/StripeClient.js +462 -0
- package/dist/src/billing/StripeClient.js.map +1 -0
- package/dist/src/billing/StripeReconciliationJob.d.ts +95 -0
- package/dist/src/billing/StripeReconciliationJob.d.ts.map +1 -0
- package/dist/src/billing/StripeReconciliationJob.js +405 -0
- package/dist/src/billing/StripeReconciliationJob.js.map +1 -0
- package/dist/src/billing/StripeWebhookHandler.d.ts +92 -0
- package/dist/src/billing/StripeWebhookHandler.d.ts.map +1 -0
- package/dist/src/billing/StripeWebhookHandler.js +409 -0
- package/dist/src/billing/StripeWebhookHandler.js.map +1 -0
- package/dist/src/billing/index.d.ts +18 -0
- package/dist/src/billing/index.d.ts.map +1 -0
- package/dist/src/billing/index.js +19 -0
- package/dist/src/billing/index.js.map +1 -0
- package/dist/src/billing/types.d.ts +266 -0
- package/dist/src/billing/types.d.ts.map +1 -0
- package/dist/src/billing/types.js +23 -0
- package/dist/src/billing/types.js.map +1 -0
- package/dist/src/db/schema.d.ts +1 -1
- package/dist/src/db/schema.d.ts.map +1 -1
- package/dist/src/db/schema.js +41 -1
- package/dist/src/db/schema.js.map +1 -1
- package/dist/src/embeddings/hnsw-store.d.ts +568 -0
- package/dist/src/embeddings/hnsw-store.d.ts.map +1 -0
- package/dist/src/embeddings/hnsw-store.js +805 -0
- package/dist/src/embeddings/hnsw-store.js.map +1 -0
- package/dist/src/embeddings/index.d.ts +2 -0
- package/dist/src/embeddings/index.d.ts.map +1 -1
- package/dist/src/embeddings/index.js +2 -0
- package/dist/src/embeddings/index.js.map +1 -1
- package/dist/src/errors.d.ts +1 -0
- package/dist/src/errors.d.ts.map +1 -1
- package/dist/src/errors.js +1 -0
- package/dist/src/errors.js.map +1 -1
- package/dist/src/index.d.ts +5 -3
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +8 -4
- package/dist/src/index.js.map +1 -1
- package/dist/src/learning/PatternStore.d.ts +457 -0
- package/dist/src/learning/PatternStore.d.ts.map +1 -0
- package/dist/src/learning/PatternStore.js +893 -0
- package/dist/src/learning/PatternStore.js.map +1 -0
- package/dist/src/learning/ReasoningBankIntegration.d.ts +403 -0
- package/dist/src/learning/ReasoningBankIntegration.d.ts.map +1 -0
- package/dist/src/learning/ReasoningBankIntegration.js +627 -0
- package/dist/src/learning/ReasoningBankIntegration.js.map +1 -0
- package/dist/src/learning/index.d.ts +15 -0
- package/dist/src/learning/index.d.ts.map +1 -0
- package/dist/src/learning/index.js +15 -0
- package/dist/src/learning/index.js.map +1 -0
- package/dist/src/repositories/IndexerRepository.d.ts.map +1 -1
- package/dist/src/repositories/IndexerRepository.js +1 -0
- package/dist/src/repositories/IndexerRepository.js.map +1 -1
- package/dist/src/repositories/SkillRepository.d.ts.map +1 -1
- package/dist/src/repositories/SkillRepository.js +1 -0
- package/dist/src/repositories/SkillRepository.js.map +1 -1
- package/dist/src/repositories/SyncConfigRepository.d.ts +91 -0
- package/dist/src/repositories/SyncConfigRepository.d.ts.map +1 -0
- package/dist/src/repositories/SyncConfigRepository.js +202 -0
- package/dist/src/repositories/SyncConfigRepository.js.map +1 -0
- package/dist/src/repositories/SyncHistoryRepository.d.ts +104 -0
- package/dist/src/repositories/SyncHistoryRepository.d.ts.map +1 -0
- package/dist/src/repositories/SyncHistoryRepository.js +235 -0
- package/dist/src/repositories/SyncHistoryRepository.js.map +1 -0
- package/dist/src/repositories/quarantine/QuarantineRepository.d.ts.map +1 -1
- package/dist/src/repositories/quarantine/QuarantineRepository.js.map +1 -1
- package/dist/src/repositories/quarantine/query-builder.d.ts.map +1 -1
- package/dist/src/repositories/quarantine/query-builder.js +1 -1
- package/dist/src/repositories/quarantine/query-builder.js.map +1 -1
- package/dist/src/routing/SONARouter.d.ts +154 -0
- package/dist/src/routing/SONARouter.d.ts.map +1 -0
- package/dist/src/routing/SONARouter.js +679 -0
- package/dist/src/routing/SONARouter.js.map +1 -0
- package/dist/src/routing/index.d.ts +9 -0
- package/dist/src/routing/index.d.ts.map +1 -0
- package/dist/src/routing/index.js +10 -0
- package/dist/src/routing/index.js.map +1 -0
- package/dist/src/routing/types.d.ts +331 -0
- package/dist/src/routing/types.d.ts.map +1 -0
- package/dist/src/routing/types.js +203 -0
- package/dist/src/routing/types.js.map +1 -0
- package/dist/src/scripts/__tests__/scan-imported-skills.test.js +8 -3
- package/dist/src/scripts/__tests__/scan-imported-skills.test.js.map +1 -1
- package/dist/src/scripts/github-import/github-client.d.ts +30 -2
- package/dist/src/scripts/github-import/github-client.d.ts.map +1 -1
- package/dist/src/scripts/github-import/github-client.js +293 -4
- package/dist/src/scripts/github-import/github-client.js.map +1 -1
- package/dist/src/scripts/github-import/index.js +3 -10
- package/dist/src/scripts/github-import/index.js.map +1 -1
- package/dist/src/scripts/github-import/types.d.ts +6 -0
- package/dist/src/scripts/github-import/types.d.ts.map +1 -1
- package/dist/src/scripts/github-import/types.js +3 -0
- package/dist/src/scripts/github-import/types.js.map +1 -1
- package/dist/src/scripts/import-github-skills.js +10 -5
- package/dist/src/scripts/import-github-skills.js.map +1 -1
- package/dist/src/scripts/merge-skills.d.ts +56 -0
- package/dist/src/scripts/merge-skills.d.ts.map +1 -0
- package/dist/src/scripts/merge-skills.js +411 -0
- package/dist/src/scripts/merge-skills.js.map +1 -0
- package/dist/src/scripts/skill-scanner/index.d.ts +9 -2
- package/dist/src/scripts/skill-scanner/index.d.ts.map +1 -1
- package/dist/src/scripts/skill-scanner/index.js +98 -7
- package/dist/src/scripts/skill-scanner/index.js.map +1 -1
- package/dist/src/scripts/skill-scanner/logger.d.ts +51 -0
- package/dist/src/scripts/skill-scanner/logger.d.ts.map +1 -1
- package/dist/src/scripts/skill-scanner/logger.js +255 -1
- package/dist/src/scripts/skill-scanner/logger.js.map +1 -1
- package/dist/src/scripts/skill-scanner/reporter.d.ts +1 -1
- package/dist/src/scripts/skill-scanner/reporter.d.ts.map +1 -1
- package/dist/src/scripts/skill-scanner/reporter.js +67 -15
- package/dist/src/scripts/skill-scanner/reporter.js.map +1 -1
- package/dist/src/scripts/skill-scanner/scanner.d.ts +5 -2
- package/dist/src/scripts/skill-scanner/scanner.d.ts.map +1 -1
- package/dist/src/scripts/skill-scanner/scanner.js +156 -39
- package/dist/src/scripts/skill-scanner/scanner.js.map +1 -1
- package/dist/src/scripts/skill-scanner/trust-scorer.d.ts.map +1 -1
- package/dist/src/scripts/skill-scanner/trust-scorer.js.map +1 -1
- package/dist/src/scripts/skill-scanner/types.d.ts +44 -0
- package/dist/src/scripts/skill-scanner/types.d.ts.map +1 -1
- package/dist/src/scripts/validation/index.js +1 -2
- package/dist/src/scripts/validation/index.js.map +1 -1
- package/dist/src/scripts/validation/pipeline.d.ts.map +1 -1
- package/dist/src/scripts/validation/pipeline.js.map +1 -1
- package/dist/src/scripts/validation/types.d.ts +2 -2
- package/dist/src/security/SkillSandbox.d.ts +156 -0
- package/dist/src/security/SkillSandbox.d.ts.map +1 -0
- package/dist/src/security/SkillSandbox.js +303 -0
- package/dist/src/security/SkillSandbox.js.map +1 -0
- package/dist/src/security/index.d.ts +3 -1
- package/dist/src/security/index.d.ts.map +1 -1
- package/dist/src/security/index.js +5 -1
- package/dist/src/security/index.js.map +1 -1
- package/dist/src/security/rate-limiter/presets.d.ts +12 -0
- package/dist/src/security/rate-limiter/presets.d.ts.map +1 -1
- package/dist/src/security/rate-limiter/presets.js +12 -0
- package/dist/src/security/rate-limiter/presets.js.map +1 -1
- package/dist/src/security/sanitization.d.ts +85 -0
- package/dist/src/security/sanitization.d.ts.map +1 -1
- package/dist/src/security/sanitization.js +133 -0
- package/dist/src/security/sanitization.js.map +1 -1
- package/dist/src/security/scanner/SecurityScanner.d.ts +23 -0
- package/dist/src/security/scanner/SecurityScanner.d.ts.map +1 -1
- package/dist/src/security/scanner/SecurityScanner.js +232 -28
- package/dist/src/security/scanner/SecurityScanner.js.map +1 -1
- package/dist/src/security/scanner/patterns.d.ts +13 -0
- package/dist/src/security/scanner/patterns.d.ts.map +1 -1
- package/dist/src/security/scanner/patterns.js +51 -0
- package/dist/src/security/scanner/patterns.js.map +1 -1
- package/dist/src/security/scanner/types.d.ts +13 -1
- package/dist/src/security/scanner/types.d.ts.map +1 -1
- package/dist/src/security/scanner/weights.d.ts.map +1 -1
- package/dist/src/security/scanner/weights.js +1 -0
- package/dist/src/security/scanner/weights.js.map +1 -1
- package/dist/src/services/SearchService.d.ts.map +1 -1
- package/dist/src/services/SearchService.js +1 -0
- package/dist/src/services/SearchService.js.map +1 -1
- package/dist/src/session/SessionHealthMonitor.d.ts +1 -1
- package/dist/src/session/SessionHealthMonitor.d.ts.map +1 -1
- package/dist/src/session/SessionHealthMonitor.js +1 -1
- package/dist/src/session/SessionHealthMonitor.js.map +1 -1
- package/dist/src/session/SessionManager.d.ts +7 -0
- package/dist/src/session/SessionManager.d.ts.map +1 -1
- package/dist/src/session/SessionManager.js +117 -10
- package/dist/src/session/SessionManager.js.map +1 -1
- package/dist/src/sync/BackgroundSyncService.d.ts +90 -0
- package/dist/src/sync/BackgroundSyncService.d.ts.map +1 -0
- package/dist/src/sync/BackgroundSyncService.js +214 -0
- package/dist/src/sync/BackgroundSyncService.js.map +1 -0
- package/dist/src/sync/SyncEngine.d.ts +76 -0
- package/dist/src/sync/SyncEngine.d.ts.map +1 -0
- package/dist/src/sync/SyncEngine.js +292 -0
- package/dist/src/sync/SyncEngine.js.map +1 -0
- package/dist/src/sync/index.d.ts +11 -0
- package/dist/src/sync/index.d.ts.map +1 -0
- package/dist/src/sync/index.js +14 -0
- package/dist/src/sync/index.js.map +1 -0
- package/dist/src/telemetry/index.d.ts +1 -1
- package/dist/src/telemetry/index.d.ts.map +1 -1
- package/dist/src/telemetry/index.js +2 -2
- package/dist/src/telemetry/index.js.map +1 -1
- package/dist/src/telemetry/posthog.d.ts +27 -5
- package/dist/src/telemetry/posthog.d.ts.map +1 -1
- package/dist/src/telemetry/posthog.js +20 -5
- package/dist/src/telemetry/posthog.js.map +1 -1
- package/dist/src/testing/MultiLLMProvider.d.ts +374 -0
- package/dist/src/testing/MultiLLMProvider.d.ts.map +1 -0
- package/dist/src/testing/MultiLLMProvider.js +720 -0
- package/dist/src/testing/MultiLLMProvider.js.map +1 -0
- package/dist/src/testing/index.d.ts +8 -0
- package/dist/src/testing/index.d.ts.map +1 -0
- package/dist/src/testing/index.js +9 -0
- package/dist/src/testing/index.js.map +1 -0
- package/dist/src/types/skill.d.ts +3 -0
- package/dist/src/types/skill.d.ts.map +1 -1
- package/dist/src/types.d.ts +5 -1
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/types.js +2 -2
- package/dist/src/types.js.map +1 -1
- package/dist/tests/SecurityScanner.test.js +337 -1
- package/dist/tests/SecurityScanner.test.js.map +1 -1
- package/dist/tests/adapters-factory.test.d.ts +13 -0
- package/dist/tests/adapters-factory.test.d.ts.map +1 -0
- package/dist/tests/adapters-factory.test.js +308 -0
- package/dist/tests/adapters-factory.test.js.map +1 -0
- package/dist/tests/adapters-java.test.d.ts +13 -0
- package/dist/tests/adapters-java.test.d.ts.map +1 -0
- package/dist/tests/adapters-java.test.js +925 -0
- package/dist/tests/adapters-java.test.js.map +1 -0
- package/dist/tests/api/client.validation.test.d.ts +7 -0
- package/dist/tests/api/client.validation.test.d.ts.map +1 -0
- package/dist/tests/api/client.validation.test.js +183 -0
- package/dist/tests/api/client.validation.test.js.map +1 -0
- package/dist/tests/billing/BillingService.test.d.ts +7 -0
- package/dist/tests/billing/BillingService.test.d.ts.map +1 -0
- package/dist/tests/billing/BillingService.test.js +168 -0
- package/dist/tests/billing/BillingService.test.js.map +1 -0
- package/dist/tests/billing/GDPRCompliance.test.d.ts +7 -0
- package/dist/tests/billing/GDPRCompliance.test.d.ts.map +1 -0
- package/dist/tests/billing/GDPRCompliance.test.js +195 -0
- package/dist/tests/billing/GDPRCompliance.test.js.map +1 -0
- package/dist/tests/billing/StripeReconciliation.test.d.ts +7 -0
- package/dist/tests/billing/StripeReconciliation.test.d.ts.map +1 -0
- package/dist/tests/billing/StripeReconciliation.test.js +266 -0
- package/dist/tests/billing/StripeReconciliation.test.js.map +1 -0
- package/dist/tests/billing/stripe-validators.test.d.ts +7 -0
- package/dist/tests/billing/stripe-validators.test.d.ts.map +1 -0
- package/dist/tests/billing/stripe-validators.test.js +107 -0
- package/dist/tests/billing/stripe-validators.test.js.map +1 -0
- package/dist/tests/embeddings/hnsw-store.test.d.ts +7 -0
- package/dist/tests/embeddings/hnsw-store.test.d.ts.map +1 -0
- package/dist/tests/embeddings/hnsw-store.test.js +295 -0
- package/dist/tests/embeddings/hnsw-store.test.js.map +1 -0
- package/dist/tests/integration/neural/e2e-learning.test.d.ts +17 -0
- package/dist/tests/integration/neural/e2e-learning.test.d.ts.map +1 -0
- package/dist/tests/integration/neural/e2e-learning.test.js +238 -0
- package/dist/tests/integration/neural/e2e-learning.test.js.map +1 -0
- package/dist/tests/integration/neural/helpers.d.ts +132 -0
- package/dist/tests/integration/neural/helpers.d.ts.map +1 -0
- package/dist/tests/integration/neural/helpers.js +287 -0
- package/dist/tests/integration/neural/helpers.js.map +1 -0
- package/dist/tests/integration/neural/personalization.test.d.ts +21 -0
- package/dist/tests/integration/neural/personalization.test.d.ts.map +1 -0
- package/dist/tests/integration/neural/personalization.test.js +304 -0
- package/dist/tests/integration/neural/personalization.test.js.map +1 -0
- package/dist/tests/integration/neural/preference-learner.test.d.ts +23 -0
- package/dist/tests/integration/neural/preference-learner.test.d.ts.map +1 -0
- package/dist/tests/integration/neural/preference-learner.test.js +289 -0
- package/dist/tests/integration/neural/preference-learner.test.js.map +1 -0
- package/dist/tests/integration/neural/privacy.test.d.ts +19 -0
- package/dist/tests/integration/neural/privacy.test.d.ts.map +1 -0
- package/dist/tests/integration/neural/privacy.test.js +249 -0
- package/dist/tests/integration/neural/privacy.test.js.map +1 -0
- package/dist/tests/integration/neural/setup.d.ts +175 -0
- package/dist/tests/integration/neural/setup.d.ts.map +1 -0
- package/dist/tests/integration/neural/setup.js +487 -0
- package/dist/tests/integration/neural/setup.js.map +1 -0
- package/dist/tests/integration/neural/signal-collection.test.d.ts +21 -0
- package/dist/tests/integration/neural/signal-collection.test.d.ts.map +1 -0
- package/dist/tests/integration/neural/signal-collection.test.js +232 -0
- package/dist/tests/integration/neural/signal-collection.test.js.map +1 -0
- package/dist/tests/language-detector.test.d.ts +13 -0
- package/dist/tests/language-detector.test.d.ts.map +1 -0
- package/dist/tests/language-detector.test.js +674 -0
- package/dist/tests/language-detector.test.js.map +1 -0
- package/dist/tests/learning/PatternStore.test.d.ts +8 -0
- package/dist/tests/learning/PatternStore.test.d.ts.map +1 -0
- package/dist/tests/learning/PatternStore.test.js +589 -0
- package/dist/tests/learning/PatternStore.test.js.map +1 -0
- package/dist/tests/learning/ReasoningBankIntegration.test.d.ts +8 -0
- package/dist/tests/learning/ReasoningBankIntegration.test.d.ts.map +1 -0
- package/dist/tests/learning/ReasoningBankIntegration.test.js +269 -0
- package/dist/tests/learning/ReasoningBankIntegration.test.js.map +1 -0
- package/dist/tests/routing/SONARouter.test.d.ts +8 -0
- package/dist/tests/routing/SONARouter.test.d.ts.map +1 -0
- package/dist/tests/routing/SONARouter.test.js +400 -0
- package/dist/tests/routing/SONARouter.test.js.map +1 -0
- package/dist/tests/security/ContinuousSecurity.test.js +10 -12
- package/dist/tests/security/ContinuousSecurity.test.js.map +1 -1
- package/dist/tests/security/SkillSandbox.test.d.ts +8 -0
- package/dist/tests/security/SkillSandbox.test.d.ts.map +1 -0
- package/dist/tests/security/SkillSandbox.test.js +321 -0
- package/dist/tests/security/SkillSandbox.test.js.map +1 -0
- package/dist/tests/sync/SyncConfigRepository.test.d.ts +7 -0
- package/dist/tests/sync/SyncConfigRepository.test.d.ts.map +1 -0
- package/dist/tests/sync/SyncConfigRepository.test.js +154 -0
- package/dist/tests/sync/SyncConfigRepository.test.js.map +1 -0
- package/dist/tests/sync/SyncEngine.test.d.ts +7 -0
- package/dist/tests/sync/SyncEngine.test.d.ts.map +1 -0
- package/dist/tests/sync/SyncEngine.test.js +300 -0
- package/dist/tests/sync/SyncEngine.test.js.map +1 -0
- package/dist/tests/sync/SyncHistoryRepository.test.d.ts +7 -0
- package/dist/tests/sync/SyncHistoryRepository.test.d.ts.map +1 -0
- package/dist/tests/sync/SyncHistoryRepository.test.js +220 -0
- package/dist/tests/sync/SyncHistoryRepository.test.js.map +1 -0
- package/dist/tests/telemetry/posthog.test.d.ts +13 -0
- package/dist/tests/telemetry/posthog.test.d.ts.map +1 -0
- package/dist/tests/telemetry/posthog.test.js +600 -0
- package/dist/tests/telemetry/posthog.test.js.map +1 -0
- package/dist/tests/testing/MultiLLMProvider.test.d.ts +14 -0
- package/dist/tests/testing/MultiLLMProvider.test.d.ts.map +1 -0
- package/dist/tests/testing/MultiLLMProvider.test.js +438 -0
- package/dist/tests/testing/MultiLLMProvider.test.js.map +1 -0
- package/package.json +20 -6
- package/dist/src/security/RateLimiter.d.ts +0 -337
- package/dist/src/security/RateLimiter.d.ts.map +0 -1
- package/dist/src/security/RateLimiter.js +0 -782
- package/dist/src/security/RateLimiter.js.map +0 -1
- package/dist/src/security/scanner.d.ts +0 -151
- package/dist/src/security/scanner.d.ts.map +0 -1
- package/dist/src/security/scanner.js +0 -599
- package/dist/src/security/scanner.js.map +0 -1
|
@@ -1,11 +1,18 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* SMI-864: Security Scanner for Imported Skills
|
|
3
3
|
* SMI-1189: Refactored into modular structure
|
|
4
|
+
* SMI-XXX: Improved output format with progress bars, tables, and JSON support
|
|
4
5
|
*
|
|
5
6
|
* Scans all skills from imported-skills.json for security vulnerabilities
|
|
6
7
|
* and categorizes them by severity level.
|
|
7
8
|
*
|
|
8
|
-
* Usage: npx tsx packages/core/src/scripts/skill-scanner/index.ts [path-to-imported-skills.json]
|
|
9
|
+
* Usage: npx tsx packages/core/src/scripts/skill-scanner/index.ts [options] [path-to-imported-skills.json]
|
|
10
|
+
*
|
|
11
|
+
* Options:
|
|
12
|
+
* --json Output results in JSON format (machine-readable, CI-friendly)
|
|
13
|
+
* --verbose Show detailed output including all findings
|
|
14
|
+
* --quiet Minimal output (only errors and final summary)
|
|
15
|
+
* --help Show this help message
|
|
9
16
|
*
|
|
10
17
|
* Output Files:
|
|
11
18
|
* - data/security-report.json: Full security report with all findings
|
|
@@ -20,19 +27,103 @@ export * from './trust-scorer.js';
|
|
|
20
27
|
export * from './file-scanner.js';
|
|
21
28
|
export * from './logger.js';
|
|
22
29
|
export * from './reporter.js';
|
|
23
|
-
export { scanImportedSkills, DEFAULT_CONFIG } from './scanner.js';
|
|
30
|
+
export { scanImportedSkills, DEFAULT_CONFIG, DEFAULT_CLI_OPTIONS } from './scanner.js';
|
|
31
|
+
/**
|
|
32
|
+
* Parse command line arguments
|
|
33
|
+
*
|
|
34
|
+
* @param args - Command line arguments (process.argv.slice(2))
|
|
35
|
+
* @returns Parsed CLI options and input path
|
|
36
|
+
*/
|
|
37
|
+
function parseArgs(args) {
|
|
38
|
+
const options = {};
|
|
39
|
+
let inputPath = DEFAULT_CONFIG.defaultInput;
|
|
40
|
+
for (const arg of args) {
|
|
41
|
+
if (arg === '--json') {
|
|
42
|
+
options.json = true;
|
|
43
|
+
}
|
|
44
|
+
else if (arg === '--verbose' || arg === '-v') {
|
|
45
|
+
options.verbose = true;
|
|
46
|
+
}
|
|
47
|
+
else if (arg === '--quiet' || arg === '-q') {
|
|
48
|
+
options.quiet = true;
|
|
49
|
+
}
|
|
50
|
+
else if (arg === '--help' || arg === '-h') {
|
|
51
|
+
printHelp();
|
|
52
|
+
process.exit(0);
|
|
53
|
+
}
|
|
54
|
+
else if (!arg.startsWith('-')) {
|
|
55
|
+
inputPath = arg;
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
console.error(`Unknown option: ${arg}`);
|
|
59
|
+
console.error('Use --help for usage information');
|
|
60
|
+
process.exit(1);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
// Validate conflicting options
|
|
64
|
+
if (options.verbose && options.quiet) {
|
|
65
|
+
console.error('Error: --verbose and --quiet cannot be used together');
|
|
66
|
+
process.exit(1);
|
|
67
|
+
}
|
|
68
|
+
return { options, inputPath };
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Print help message
|
|
72
|
+
*/
|
|
73
|
+
function printHelp() {
|
|
74
|
+
console.log(`
|
|
75
|
+
Skillsmith Security Scanner
|
|
76
|
+
|
|
77
|
+
Usage: npx tsx packages/core/src/scripts/scan-imported-skills.ts [options] [input-file]
|
|
78
|
+
|
|
79
|
+
Options:
|
|
80
|
+
--json Output results in JSON format (machine-readable, CI-friendly)
|
|
81
|
+
--verbose Show detailed output including all findings
|
|
82
|
+
--quiet Minimal output (only errors and final summary)
|
|
83
|
+
--help, -h Show this help message
|
|
84
|
+
|
|
85
|
+
Arguments:
|
|
86
|
+
input-file Path to imported-skills.json (default: ./data/imported-skills.json)
|
|
87
|
+
|
|
88
|
+
Examples:
|
|
89
|
+
# Basic scan with human-readable output
|
|
90
|
+
npx tsx packages/core/src/scripts/scan-imported-skills.ts
|
|
91
|
+
|
|
92
|
+
# JSON output for CI pipelines
|
|
93
|
+
npx tsx packages/core/src/scripts/scan-imported-skills.ts --json
|
|
94
|
+
|
|
95
|
+
# Scan specific file
|
|
96
|
+
npx tsx packages/core/src/scripts/scan-imported-skills.ts ./custom-skills.json
|
|
97
|
+
|
|
98
|
+
# JSON output to file
|
|
99
|
+
npx tsx packages/core/src/scripts/scan-imported-skills.ts --json > results.json
|
|
100
|
+
|
|
101
|
+
Output Files:
|
|
102
|
+
- data/security-report.json Full security report with all findings
|
|
103
|
+
- data/quarantine-skills.json Skills with HIGH/CRITICAL findings (blocked)
|
|
104
|
+
- data/safe-skills.json Skills approved for import (passed security scan)
|
|
105
|
+
`);
|
|
106
|
+
}
|
|
24
107
|
/**
|
|
25
108
|
* CLI entry point
|
|
26
109
|
*/
|
|
27
110
|
async function main() {
|
|
28
|
-
|
|
29
|
-
const inputPath =
|
|
111
|
+
const args = process.argv.slice(2);
|
|
112
|
+
const { options, inputPath } = parseArgs(args);
|
|
30
113
|
try {
|
|
31
|
-
await scanImportedSkills(inputPath);
|
|
114
|
+
await scanImportedSkills(inputPath, DEFAULT_CONFIG, options);
|
|
32
115
|
}
|
|
33
116
|
catch (error) {
|
|
34
|
-
|
|
35
|
-
|
|
117
|
+
if (options.json) {
|
|
118
|
+
console.log(JSON.stringify({
|
|
119
|
+
success: false,
|
|
120
|
+
error: error.message,
|
|
121
|
+
}));
|
|
122
|
+
}
|
|
123
|
+
else {
|
|
124
|
+
console.error('Fatal error:', error.message);
|
|
125
|
+
console.error(error.stack);
|
|
126
|
+
}
|
|
36
127
|
process.exit(1);
|
|
37
128
|
}
|
|
38
129
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/scripts/skill-scanner/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/scripts/skill-scanner/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* SMI-1189: Logger
|
|
3
|
+
* SMI-XXX: Improved output format with progress bars and tables
|
|
3
4
|
*
|
|
4
5
|
* Logging utilities for the security scanner.
|
|
5
6
|
*/
|
|
6
7
|
import type { SecurityFinding } from '../../security/index.js';
|
|
8
|
+
import type { SkillScanResult } from './types.js';
|
|
7
9
|
/**
|
|
8
10
|
* Formats a duration in milliseconds to human-readable string
|
|
9
11
|
*
|
|
@@ -56,4 +58,53 @@ export declare function logCompletion(processed: number, total: number): void;
|
|
|
56
58
|
* @param description - Optional description of the file
|
|
57
59
|
*/
|
|
58
60
|
export declare function logFileOutput(filename: string, count: number, description?: string): void;
|
|
61
|
+
/**
|
|
62
|
+
* Log the initial scan summary banner
|
|
63
|
+
*
|
|
64
|
+
* @param skillCount - Total number of skills to scan
|
|
65
|
+
* @param inputPath - Path to input file
|
|
66
|
+
* @param outputDir - Output directory
|
|
67
|
+
*/
|
|
68
|
+
export declare function logScanStart(skillCount: number, inputPath: string, outputDir: string): void;
|
|
69
|
+
/**
|
|
70
|
+
* Create a progress bar string
|
|
71
|
+
*
|
|
72
|
+
* @param current - Current progress value
|
|
73
|
+
* @param total - Total value
|
|
74
|
+
* @param width - Width of the progress bar in characters
|
|
75
|
+
* @returns Progress bar string
|
|
76
|
+
*/
|
|
77
|
+
export declare function createProgressBar(current: number, total: number, width?: number): string;
|
|
78
|
+
/**
|
|
79
|
+
* Log progress with a visual progress bar
|
|
80
|
+
*
|
|
81
|
+
* @param processed - Number of items processed
|
|
82
|
+
* @param total - Total number of items
|
|
83
|
+
* @param inPlace - Whether to update in place (overwrite previous line)
|
|
84
|
+
*/
|
|
85
|
+
export declare function logProgressBar(processed: number, total: number, inPlace?: boolean): void;
|
|
86
|
+
/**
|
|
87
|
+
* Clear the progress line and move to new line
|
|
88
|
+
*/
|
|
89
|
+
export declare function clearProgressLine(): void;
|
|
90
|
+
/**
|
|
91
|
+
* Log a table of quarantined skills
|
|
92
|
+
*
|
|
93
|
+
* @param results - Array of quarantined scan results
|
|
94
|
+
* @param maxRows - Maximum number of rows to display
|
|
95
|
+
*/
|
|
96
|
+
export declare function logQuarantineTable(results: SkillScanResult[], maxRows?: number): void;
|
|
97
|
+
/**
|
|
98
|
+
* Log a summary of safe skills
|
|
99
|
+
*
|
|
100
|
+
* @param results - Array of safe scan results
|
|
101
|
+
* @param maxDisplay - Maximum number to display
|
|
102
|
+
*/
|
|
103
|
+
export declare function logSafeSkillsSummary(results: SkillScanResult[], maxDisplay?: number): void;
|
|
104
|
+
/**
|
|
105
|
+
* Log categorized results by severity
|
|
106
|
+
*
|
|
107
|
+
* @param results - Array of scan results
|
|
108
|
+
*/
|
|
109
|
+
export declare function logCategorizedResults(results: SkillScanResult[]): void;
|
|
59
110
|
//# sourceMappingURL=logger.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../../../src/scripts/skill-scanner/logger.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../../../src/scripts/skill-scanner/logger.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAoB,MAAM,yBAAyB,CAAA;AAChF,OAAO,KAAK,EAAoB,eAAe,EAAE,MAAM,YAAY,CAAA;AA+DnE;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAIjD;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAK7C;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAW1E;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CACzB,QAAQ,EAAE,KAAK,CAAC,eAAe,GAAG;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,EACtD,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,GACZ,IAAI,CAUN;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAElE;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAEpE;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAIzF;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAe3F;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,GAAE,MAAW,GAAG,MAAM,CAS5F;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,OAAc,GAAG,IAAI,CAS9F;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAIxC;AAyBD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,eAAe,EAAE,EAAE,OAAO,GAAE,MAAW,GAAG,IAAI,CAyDzF;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,eAAe,EAAE,EAAE,UAAU,GAAE,MAAU,GAAG,IAAI,CAyB7F;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,eAAe,EAAE,GAAG,IAAI,CA4DtE"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* SMI-1189: Logger
|
|
3
|
+
* SMI-XXX: Improved output format with progress bars and tables
|
|
3
4
|
*
|
|
4
5
|
* Logging utilities for the security scanner.
|
|
5
6
|
*/
|
|
@@ -12,6 +13,53 @@ const SEVERITY_ICONS = {
|
|
|
12
13
|
medium: '[MEDIUM] ',
|
|
13
14
|
low: '[LOW] ',
|
|
14
15
|
};
|
|
16
|
+
/**
|
|
17
|
+
* ANSI color codes for terminal output
|
|
18
|
+
*/
|
|
19
|
+
const COLORS = {
|
|
20
|
+
reset: '\x1b[0m',
|
|
21
|
+
bold: '\x1b[1m',
|
|
22
|
+
dim: '\x1b[2m',
|
|
23
|
+
red: '\x1b[31m',
|
|
24
|
+
green: '\x1b[32m',
|
|
25
|
+
yellow: '\x1b[33m',
|
|
26
|
+
blue: '\x1b[34m',
|
|
27
|
+
magenta: '\x1b[35m',
|
|
28
|
+
cyan: '\x1b[36m',
|
|
29
|
+
white: '\x1b[37m',
|
|
30
|
+
bgRed: '\x1b[41m',
|
|
31
|
+
bgGreen: '\x1b[42m',
|
|
32
|
+
bgYellow: '\x1b[43m',
|
|
33
|
+
};
|
|
34
|
+
/**
|
|
35
|
+
* Check if colors should be used (TTY and not CI)
|
|
36
|
+
*/
|
|
37
|
+
function useColors() {
|
|
38
|
+
return process.stdout.isTTY && !process.env.CI && !process.env.NO_COLOR;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Apply color to text if colors are enabled
|
|
42
|
+
*/
|
|
43
|
+
function colorize(text, color) {
|
|
44
|
+
return useColors() ? `${COLORS[color]}${text}${COLORS.reset}` : text;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Get color for severity level
|
|
48
|
+
*/
|
|
49
|
+
function getSeverityColor(severity) {
|
|
50
|
+
switch (severity.toUpperCase()) {
|
|
51
|
+
case 'CRITICAL':
|
|
52
|
+
return 'red';
|
|
53
|
+
case 'HIGH':
|
|
54
|
+
return 'magenta';
|
|
55
|
+
case 'MEDIUM':
|
|
56
|
+
return 'yellow';
|
|
57
|
+
case 'LOW':
|
|
58
|
+
return 'cyan';
|
|
59
|
+
default:
|
|
60
|
+
return 'white';
|
|
61
|
+
}
|
|
62
|
+
}
|
|
15
63
|
/**
|
|
16
64
|
* Formats a duration in milliseconds to human-readable string
|
|
17
65
|
*
|
|
@@ -99,6 +147,212 @@ export function logCompletion(processed, total) {
|
|
|
99
147
|
*/
|
|
100
148
|
export function logFileOutput(filename, count, description) {
|
|
101
149
|
const desc = description ? ` ${description}` : '';
|
|
102
|
-
|
|
150
|
+
const checkmark = colorize('[OK]', 'green');
|
|
151
|
+
console.log(` ${checkmark} ${filename} (${count} skills${desc})`);
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Log the initial scan summary banner
|
|
155
|
+
*
|
|
156
|
+
* @param skillCount - Total number of skills to scan
|
|
157
|
+
* @param inputPath - Path to input file
|
|
158
|
+
* @param outputDir - Output directory
|
|
159
|
+
*/
|
|
160
|
+
export function logScanStart(skillCount, inputPath, outputDir) {
|
|
161
|
+
const border = '='.repeat(60);
|
|
162
|
+
console.log();
|
|
163
|
+
console.log(colorize(border, 'cyan'));
|
|
164
|
+
console.log(colorize(' SKILLSMITH SECURITY SCANNER', 'bold'));
|
|
165
|
+
console.log(colorize(border, 'cyan'));
|
|
166
|
+
console.log();
|
|
167
|
+
console.log(` ${colorize('Input:', 'dim')} ${inputPath}`);
|
|
168
|
+
console.log(` ${colorize('Output:', 'dim')} ${outputDir}`);
|
|
169
|
+
console.log(` ${colorize('Skills:', 'dim')} ${colorize(skillCount.toString(), 'bold')} skills to scan`);
|
|
170
|
+
console.log();
|
|
171
|
+
console.log(colorize(border, 'cyan'));
|
|
172
|
+
console.log();
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Create a progress bar string
|
|
176
|
+
*
|
|
177
|
+
* @param current - Current progress value
|
|
178
|
+
* @param total - Total value
|
|
179
|
+
* @param width - Width of the progress bar in characters
|
|
180
|
+
* @returns Progress bar string
|
|
181
|
+
*/
|
|
182
|
+
export function createProgressBar(current, total, width = 30) {
|
|
183
|
+
const percentage = Math.min(current / total, 1);
|
|
184
|
+
const filled = Math.round(width * percentage);
|
|
185
|
+
const empty = width - filled;
|
|
186
|
+
const filledChar = useColors() ? '█' : '#';
|
|
187
|
+
const emptyChar = useColors() ? '░' : '-';
|
|
188
|
+
const bar = filledChar.repeat(filled) + emptyChar.repeat(empty);
|
|
189
|
+
const pct = (percentage * 100).toFixed(1).padStart(5);
|
|
190
|
+
return `[${bar}] ${pct}%`;
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Log progress with a visual progress bar
|
|
194
|
+
*
|
|
195
|
+
* @param processed - Number of items processed
|
|
196
|
+
* @param total - Total number of items
|
|
197
|
+
* @param inPlace - Whether to update in place (overwrite previous line)
|
|
198
|
+
*/
|
|
199
|
+
export function logProgressBar(processed, total, inPlace = true) {
|
|
200
|
+
const bar = createProgressBar(processed, total);
|
|
201
|
+
const status = `${processed.toString().padStart(total.toString().length)}/${total}`;
|
|
202
|
+
if (inPlace && process.stdout.isTTY) {
|
|
203
|
+
process.stdout.write(`\r Scanning: ${bar} ${status}`);
|
|
204
|
+
}
|
|
205
|
+
else {
|
|
206
|
+
console.log(` Scanning: ${bar} ${status}`);
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Clear the progress line and move to new line
|
|
211
|
+
*/
|
|
212
|
+
export function clearProgressLine() {
|
|
213
|
+
if (process.stdout.isTTY) {
|
|
214
|
+
process.stdout.write('\r' + ' '.repeat(80) + '\r');
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Truncate a string to a maximum length with ellipsis
|
|
219
|
+
*
|
|
220
|
+
* @param str - String to truncate
|
|
221
|
+
* @param maxLen - Maximum length
|
|
222
|
+
* @returns Truncated string
|
|
223
|
+
*/
|
|
224
|
+
function truncate(str, maxLen) {
|
|
225
|
+
if (str.length <= maxLen)
|
|
226
|
+
return str;
|
|
227
|
+
return str.slice(0, maxLen - 3) + '...';
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* Pad a string to a fixed width
|
|
231
|
+
*
|
|
232
|
+
* @param str - String to pad
|
|
233
|
+
* @param width - Target width
|
|
234
|
+
* @returns Padded string
|
|
235
|
+
*/
|
|
236
|
+
function padRight(str, width) {
|
|
237
|
+
return str.length >= width ? str.slice(0, width) : str + ' '.repeat(width - str.length);
|
|
238
|
+
}
|
|
239
|
+
/**
|
|
240
|
+
* Log a table of quarantined skills
|
|
241
|
+
*
|
|
242
|
+
* @param results - Array of quarantined scan results
|
|
243
|
+
* @param maxRows - Maximum number of rows to display
|
|
244
|
+
*/
|
|
245
|
+
export function logQuarantineTable(results, maxRows = 20) {
|
|
246
|
+
const quarantined = results.filter((r) => r.isQuarantined);
|
|
247
|
+
if (quarantined.length === 0) {
|
|
248
|
+
console.log(colorize(' No quarantined skills found.', 'green'));
|
|
249
|
+
return;
|
|
250
|
+
}
|
|
251
|
+
// Sort by risk score descending
|
|
252
|
+
const sorted = [...quarantined].sort((a, b) => b.scanReport.riskScore - a.scanReport.riskScore);
|
|
253
|
+
// Column widths
|
|
254
|
+
const colWidths = { skillId: 35, risk: 6, severity: 10, finding: 40 };
|
|
255
|
+
const totalWidth = colWidths.skillId + colWidths.risk + colWidths.severity + colWidths.finding + 11;
|
|
256
|
+
// Header
|
|
257
|
+
const headerBorder = '-'.repeat(totalWidth);
|
|
258
|
+
console.log(colorize(headerBorder, 'dim'));
|
|
259
|
+
console.log(` ${colorize(padRight('Skill ID', colWidths.skillId), 'bold')} | ` +
|
|
260
|
+
`${colorize(padRight('Risk', colWidths.risk), 'bold')} | ` +
|
|
261
|
+
`${colorize(padRight('Severity', colWidths.severity), 'bold')} | ` +
|
|
262
|
+
`${colorize(padRight('Top Finding', colWidths.finding), 'bold')}`);
|
|
263
|
+
console.log(colorize(headerBorder, 'dim'));
|
|
264
|
+
// Rows
|
|
265
|
+
const displayRows = sorted.slice(0, maxRows);
|
|
266
|
+
for (const result of displayRows) {
|
|
267
|
+
const topFinding = result.scanReport.findings.length > 0
|
|
268
|
+
? `${result.scanReport.findings[0].type}: ${result.scanReport.findings[0].message}`
|
|
269
|
+
: 'N/A';
|
|
270
|
+
const severityColored = colorize(padRight(result.severityCategory, colWidths.severity), getSeverityColor(result.severityCategory));
|
|
271
|
+
console.log(` ${padRight(truncate(result.skillId, colWidths.skillId), colWidths.skillId)} | ` +
|
|
272
|
+
`${padRight(result.scanReport.riskScore.toString(), colWidths.risk)} | ` +
|
|
273
|
+
`${severityColored} | ` +
|
|
274
|
+
`${truncate(topFinding, colWidths.finding)}`);
|
|
275
|
+
}
|
|
276
|
+
console.log(colorize(headerBorder, 'dim'));
|
|
277
|
+
// Show remaining count if truncated
|
|
278
|
+
if (quarantined.length > maxRows) {
|
|
279
|
+
console.log(colorize(` ... and ${quarantined.length - maxRows} more quarantined skills`, 'dim'));
|
|
280
|
+
}
|
|
281
|
+
console.log();
|
|
282
|
+
}
|
|
283
|
+
/**
|
|
284
|
+
* Log a summary of safe skills
|
|
285
|
+
*
|
|
286
|
+
* @param results - Array of safe scan results
|
|
287
|
+
* @param maxDisplay - Maximum number to display
|
|
288
|
+
*/
|
|
289
|
+
export function logSafeSkillsSummary(results, maxDisplay = 5) {
|
|
290
|
+
const safe = results.filter((r) => !r.isQuarantined);
|
|
291
|
+
if (safe.length === 0) {
|
|
292
|
+
console.log(colorize(' No safe skills found.', 'yellow'));
|
|
293
|
+
return;
|
|
294
|
+
}
|
|
295
|
+
// Sort by risk score ascending (lowest risk first)
|
|
296
|
+
const sorted = [...safe].sort((a, b) => a.scanReport.riskScore - b.scanReport.riskScore);
|
|
297
|
+
console.log(colorize(` ${safe.length} skills passed security checks:`, 'green'));
|
|
298
|
+
console.log();
|
|
299
|
+
const displayRows = sorted.slice(0, maxDisplay);
|
|
300
|
+
for (const result of displayRows) {
|
|
301
|
+
const riskLabel = result.scanReport.riskScore === 0 ? 'clean' : `risk: ${result.scanReport.riskScore}`;
|
|
302
|
+
console.log(` ${colorize('[SAFE]', 'green')} ${result.skillId} (${riskLabel})`);
|
|
303
|
+
}
|
|
304
|
+
if (safe.length > maxDisplay) {
|
|
305
|
+
console.log(colorize(` ... and ${safe.length - maxDisplay} more safe skills`, 'dim'));
|
|
306
|
+
}
|
|
307
|
+
console.log();
|
|
308
|
+
}
|
|
309
|
+
/**
|
|
310
|
+
* Log categorized results by severity
|
|
311
|
+
*
|
|
312
|
+
* @param results - Array of scan results
|
|
313
|
+
*/
|
|
314
|
+
export function logCategorizedResults(results) {
|
|
315
|
+
const categories = {
|
|
316
|
+
CRITICAL: [],
|
|
317
|
+
HIGH: [],
|
|
318
|
+
MEDIUM: [],
|
|
319
|
+
LOW: [],
|
|
320
|
+
SAFE: [],
|
|
321
|
+
};
|
|
322
|
+
for (const result of results) {
|
|
323
|
+
if (result.isQuarantined) {
|
|
324
|
+
categories[result.severityCategory].push(result);
|
|
325
|
+
}
|
|
326
|
+
else {
|
|
327
|
+
categories.SAFE.push(result);
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
logHeader('RESULTS BY CATEGORY');
|
|
331
|
+
// Safe skills
|
|
332
|
+
if (categories.SAFE.length > 0) {
|
|
333
|
+
console.log(` ${colorize('[SAFE]', 'green')} ${categories.SAFE.length} skills - ` +
|
|
334
|
+
colorize('Ready for import', 'dim'));
|
|
335
|
+
}
|
|
336
|
+
// Low severity
|
|
337
|
+
if (categories.LOW.length > 0) {
|
|
338
|
+
console.log(` ${colorize('[LOW]', 'cyan')} ${categories.LOW.length} skills - ` +
|
|
339
|
+
colorize('Minor findings, generally safe', 'dim'));
|
|
340
|
+
}
|
|
341
|
+
// Medium severity
|
|
342
|
+
if (categories.MEDIUM.length > 0) {
|
|
343
|
+
console.log(` ${colorize('[MEDIUM]', 'yellow')} ${categories.MEDIUM.length} skills - ` +
|
|
344
|
+
colorize('Review recommended', 'dim'));
|
|
345
|
+
}
|
|
346
|
+
// High severity
|
|
347
|
+
if (categories.HIGH.length > 0) {
|
|
348
|
+
console.log(` ${colorize('[HIGH]', 'magenta')} ${categories.HIGH.length} skills - ` +
|
|
349
|
+
colorize('Security review required', 'dim'));
|
|
350
|
+
}
|
|
351
|
+
// Critical severity
|
|
352
|
+
if (categories.CRITICAL.length > 0) {
|
|
353
|
+
console.log(` ${colorize('[CRITICAL]', 'red')} ${categories.CRITICAL.length} skills - ` +
|
|
354
|
+
colorize('Do NOT import without thorough review', 'dim'));
|
|
355
|
+
}
|
|
356
|
+
console.log();
|
|
103
357
|
}
|
|
104
358
|
//# sourceMappingURL=logger.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../../src/scripts/skill-scanner/logger.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../../src/scripts/skill-scanner/logger.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
import type { SecuritySeverity } from '../../security/index.js';
|
|
7
7
|
import type { SkillScanResult, SecurityReportOutput, QuarantineOutput, SafeSkillsOutput, FindingWithContext } from './types.js';
|
|
8
8
|
/**
|
|
9
|
-
* Log summary statistics to console
|
|
9
|
+
* Log summary statistics to console with improved formatting
|
|
10
10
|
*
|
|
11
11
|
* @param results - Array of scan results
|
|
12
12
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reporter.d.ts","sourceRoot":"","sources":["../../../../src/scripts/skill-scanner/reporter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAC/D,OAAO,KAAK,EACV,eAAe,EACf,oBAAoB,EACpB,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,EACnB,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"reporter.d.ts","sourceRoot":"","sources":["../../../../src/scripts/skill-scanner/reporter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAC/D,OAAO,KAAK,EACV,eAAe,EACf,oBAAoB,EACpB,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,EACnB,MAAM,YAAY,CAAA;AA8CnB;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,eAAe,EAAE,GAAG,IAAI,CA0D3D;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,kBAAkB,EAAE,EAC9B,KAAK,GAAE,MAAW,GACjB,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,gBAAgB,CAAA;CAAE,CAAC,CA0BpE;AAED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,eAAe,EAAE,EAC1B,QAAQ,EAAE,kBAAkB,EAAE,EAC9B,SAAS,EAAE,MAAM,GAChB,oBAAoB,CAsBtB;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,eAAe,EAAE,GAAG,gBAAgB,CAmBrF;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,eAAe,EAAE,GAAG,gBAAgB,CAcrF;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,eAAe,EAAE,EAAE,aAAa,EAAE,MAAM,GAAG,IAAI,CAkB1F"}
|
|
@@ -6,7 +6,41 @@
|
|
|
6
6
|
import { countBySeverity } from './categorizer.js';
|
|
7
7
|
import { calculateAverageRiskScore, calculateMaxRiskScore, getPassFailStats, } from './trust-scorer.js';
|
|
8
8
|
/**
|
|
9
|
-
*
|
|
9
|
+
* ANSI color codes for terminal output
|
|
10
|
+
*/
|
|
11
|
+
const COLORS = {
|
|
12
|
+
reset: '\x1b[0m',
|
|
13
|
+
bold: '\x1b[1m',
|
|
14
|
+
dim: '\x1b[2m',
|
|
15
|
+
red: '\x1b[31m',
|
|
16
|
+
green: '\x1b[32m',
|
|
17
|
+
yellow: '\x1b[33m',
|
|
18
|
+
cyan: '\x1b[36m',
|
|
19
|
+
magenta: '\x1b[35m',
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* Check if colors should be used
|
|
23
|
+
*/
|
|
24
|
+
function useColors() {
|
|
25
|
+
return process.stdout.isTTY && !process.env.CI && !process.env.NO_COLOR;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Apply color to text if colors are enabled
|
|
29
|
+
*/
|
|
30
|
+
function colorize(text, color) {
|
|
31
|
+
return useColors() ? `${COLORS[color]}${text}${COLORS.reset}` : text;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Create a visual bar for statistics
|
|
35
|
+
*/
|
|
36
|
+
function createStatBar(value, total, width = 20) {
|
|
37
|
+
const percentage = total > 0 ? value / total : 0;
|
|
38
|
+
const filled = Math.round(width * percentage);
|
|
39
|
+
const bar = '█'.repeat(filled) + '░'.repeat(width - filled);
|
|
40
|
+
return bar;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Log summary statistics to console with improved formatting
|
|
10
44
|
*
|
|
11
45
|
* @param results - Array of scan results
|
|
12
46
|
*/
|
|
@@ -16,22 +50,40 @@ export function logSummary(results) {
|
|
|
16
50
|
const bySeverity = countBySeverity(results);
|
|
17
51
|
const avgRiskScore = calculateAverageRiskScore(results);
|
|
18
52
|
const maxRiskScore = calculateMaxRiskScore(results);
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
console.log(
|
|
22
|
-
console.log(
|
|
23
|
-
console.log(
|
|
24
|
-
console.log(
|
|
53
|
+
const border = '═'.repeat(60);
|
|
54
|
+
const thinBorder = '─'.repeat(60);
|
|
55
|
+
console.log();
|
|
56
|
+
console.log(colorize(border, 'cyan'));
|
|
57
|
+
console.log(colorize(' SCAN SUMMARY', 'bold'));
|
|
58
|
+
console.log(colorize(border, 'cyan'));
|
|
59
|
+
console.log();
|
|
60
|
+
// Main stats with visual bars
|
|
61
|
+
const passedPct = total > 0 ? ((passed / total) * 100).toFixed(1) : '0.0';
|
|
62
|
+
const quarantinedPct = total > 0 ? ((quarantined / total) * 100).toFixed(1) : '0.0';
|
|
63
|
+
console.log(` ${colorize('Total Skills Scanned:', 'bold')} ${total}`);
|
|
64
|
+
console.log();
|
|
65
|
+
console.log(` ${colorize('Safe (Passed):', 'green')} ${passed.toString().padStart(4)} ${createStatBar(passed, total)} ${passedPct}%`);
|
|
66
|
+
console.log(` ${colorize('Quarantined:', 'red')} ${quarantined.toString().padStart(4)} ${createStatBar(quarantined, total)} ${quarantinedPct}%`);
|
|
67
|
+
console.log();
|
|
68
|
+
console.log(colorize(thinBorder, 'dim'));
|
|
69
|
+
console.log();
|
|
70
|
+
// Severity breakdown
|
|
71
|
+
console.log(` ${colorize('By Severity:', 'bold')}`);
|
|
72
|
+
console.log();
|
|
73
|
+
console.log(` ${colorize('CRITICAL:', 'red')} ${bySeverity.CRITICAL.toString().padStart(4)} ${createStatBar(bySeverity.CRITICAL, total, 15)}`);
|
|
74
|
+
console.log(` ${colorize('HIGH:', 'magenta')} ${bySeverity.HIGH.toString().padStart(4)} ${createStatBar(bySeverity.HIGH, total, 15)}`);
|
|
75
|
+
console.log(` ${colorize('MEDIUM:', 'yellow')} ${bySeverity.MEDIUM.toString().padStart(4)} ${createStatBar(bySeverity.MEDIUM, total, 15)}`);
|
|
76
|
+
console.log(` ${colorize('LOW:', 'cyan')} ${bySeverity.LOW.toString().padStart(4)} ${createStatBar(bySeverity.LOW, total, 15)}`);
|
|
77
|
+
console.log();
|
|
78
|
+
console.log(colorize(thinBorder, 'dim'));
|
|
79
|
+
console.log();
|
|
80
|
+
// Risk score stats
|
|
81
|
+
console.log(` ${colorize('Risk Scores:', 'bold')}`);
|
|
82
|
+
console.log(` Average: ${avgRiskScore.toFixed(1)}`);
|
|
83
|
+
console.log(` Maximum: ${maxRiskScore}`);
|
|
25
84
|
console.log();
|
|
26
|
-
console.log(
|
|
27
|
-
console.log(` CRITICAL: ${bySeverity.CRITICAL}`);
|
|
28
|
-
console.log(` HIGH: ${bySeverity.HIGH}`);
|
|
29
|
-
console.log(` MEDIUM: ${bySeverity.MEDIUM}`);
|
|
30
|
-
console.log(` LOW: ${bySeverity.LOW}`);
|
|
85
|
+
console.log(colorize(border, 'cyan'));
|
|
31
86
|
console.log();
|
|
32
|
-
console.log(` Average Risk Score: ${avgRiskScore.toFixed(1)}`);
|
|
33
|
-
console.log(` Maximum Risk Score: ${maxRiskScore}`);
|
|
34
|
-
console.log('='.repeat(60) + '\n');
|
|
35
87
|
}
|
|
36
88
|
/**
|
|
37
89
|
* Calculate top findings by type
|