@skillsmith/core 0.1.2 → 0.2.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 -1
- package/dist/src/analysis/CodebaseAnalyzer.d.ts +4 -134
- package/dist/src/analysis/CodebaseAnalyzer.d.ts.map +1 -1
- package/dist/src/analysis/CodebaseAnalyzer.js +7 -315
- package/dist/src/analysis/CodebaseAnalyzer.js.map +1 -1
- package/dist/src/analysis/framework-detector.d.ts +47 -0
- package/dist/src/analysis/framework-detector.d.ts.map +1 -0
- package/dist/src/analysis/framework-detector.js +151 -0
- package/dist/src/analysis/framework-detector.js.map +1 -0
- package/dist/src/analysis/index.d.ts +6 -1
- package/dist/src/analysis/index.d.ts.map +1 -1
- package/dist/src/analysis/index.js +10 -1
- package/dist/src/analysis/index.js.map +1 -1
- package/dist/src/analysis/parsers.d.ts +43 -0
- package/dist/src/analysis/parsers.d.ts.map +1 -0
- package/dist/src/analysis/parsers.js +219 -0
- package/dist/src/analysis/parsers.js.map +1 -0
- package/dist/src/analysis/types.d.ts +138 -0
- package/dist/src/analysis/types.d.ts.map +1 -0
- package/dist/src/analysis/types.js +25 -0
- package/dist/src/analysis/types.js.map +1 -0
- package/dist/src/analytics/AnalyticsRepository.d.ts.map +1 -1
- package/dist/src/analytics/AnalyticsRepository.js +4 -4
- package/dist/src/analytics/AnalyticsRepository.js.map +1 -1
- package/dist/src/api/cache.d.ts +108 -0
- package/dist/src/api/cache.d.ts.map +1 -0
- package/dist/src/api/cache.js +216 -0
- package/dist/src/api/cache.js.map +1 -0
- package/dist/src/api/client.d.ts +152 -0
- package/dist/src/api/client.d.ts.map +1 -0
- package/dist/src/api/client.js +221 -0
- package/dist/src/api/client.js.map +1 -0
- package/dist/src/api/index.d.ts +10 -0
- package/dist/src/api/index.d.ts.map +1 -0
- package/dist/src/api/index.js +10 -0
- package/dist/src/api/index.js.map +1 -0
- package/dist/src/benchmarks/BenchmarkRunner.d.ts +6 -175
- package/dist/src/benchmarks/BenchmarkRunner.d.ts.map +1 -1
- package/dist/src/benchmarks/BenchmarkRunner.js +6 -123
- package/dist/src/benchmarks/BenchmarkRunner.js.map +1 -1
- package/dist/src/benchmarks/MemoryProfiler.d.ts +4 -262
- package/dist/src/benchmarks/MemoryProfiler.d.ts.map +1 -1
- package/dist/src/benchmarks/MemoryProfiler.js +4 -400
- package/dist/src/benchmarks/MemoryProfiler.js.map +1 -1
- package/dist/src/benchmarks/comparator.d.ts +38 -0
- package/dist/src/benchmarks/comparator.d.ts.map +1 -0
- package/dist/src/benchmarks/comparator.js +81 -0
- package/dist/src/benchmarks/comparator.js.map +1 -0
- package/dist/src/benchmarks/formatters.d.ts +30 -0
- package/dist/src/benchmarks/formatters.d.ts.map +1 -0
- package/dist/src/benchmarks/formatters.js +88 -0
- package/dist/src/benchmarks/formatters.js.map +1 -0
- package/dist/src/benchmarks/index.d.ts +5 -1
- package/dist/src/benchmarks/index.d.ts.map +1 -1
- package/dist/src/benchmarks/index.js +9 -2
- package/dist/src/benchmarks/index.js.map +1 -1
- package/dist/src/benchmarks/memory/MemoryProfiler.d.ts +165 -0
- package/dist/src/benchmarks/memory/MemoryProfiler.d.ts.map +1 -0
- package/dist/src/benchmarks/memory/MemoryProfiler.js +312 -0
- package/dist/src/benchmarks/memory/MemoryProfiler.js.map +1 -0
- package/dist/src/benchmarks/memory/baseline-manager.d.ts +64 -0
- package/dist/src/benchmarks/memory/baseline-manager.d.ts.map +1 -0
- package/dist/src/benchmarks/memory/baseline-manager.js +95 -0
- package/dist/src/benchmarks/memory/baseline-manager.js.map +1 -0
- package/dist/src/benchmarks/memory/index.d.ts +12 -0
- package/dist/src/benchmarks/memory/index.d.ts.map +1 -0
- package/dist/src/benchmarks/memory/index.js +12 -0
- package/dist/src/benchmarks/memory/index.js.map +1 -0
- package/dist/src/benchmarks/memory/leak-detector.d.ts +23 -0
- package/dist/src/benchmarks/memory/leak-detector.d.ts.map +1 -0
- package/dist/src/benchmarks/memory/leak-detector.js +46 -0
- package/dist/src/benchmarks/memory/leak-detector.js.map +1 -0
- package/dist/src/benchmarks/memory/regression-detector.d.ts +17 -0
- package/dist/src/benchmarks/memory/regression-detector.d.ts.map +1 -0
- package/dist/src/benchmarks/memory/regression-detector.js +56 -0
- package/dist/src/benchmarks/memory/regression-detector.js.map +1 -0
- package/dist/src/benchmarks/memory/types.d.ts +111 -0
- package/dist/src/benchmarks/memory/types.d.ts.map +1 -0
- package/dist/src/benchmarks/memory/types.js +7 -0
- package/dist/src/benchmarks/memory/types.js.map +1 -0
- package/dist/src/benchmarks/memory/utils.d.ts +17 -0
- package/dist/src/benchmarks/memory/utils.d.ts.map +1 -0
- package/dist/src/benchmarks/memory/utils.js +29 -0
- package/dist/src/benchmarks/memory/utils.js.map +1 -0
- package/dist/src/benchmarks/types.d.ts +175 -0
- package/dist/src/benchmarks/types.d.ts.map +1 -0
- package/dist/src/benchmarks/types.js +20 -0
- package/dist/src/benchmarks/types.js.map +1 -0
- package/dist/src/index.d.ts +4 -2
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +7 -3
- package/dist/src/index.js.map +1 -1
- package/dist/src/repositories/QuarantineRepository.d.ts +4 -251
- package/dist/src/repositories/QuarantineRepository.d.ts.map +1 -1
- package/dist/src/repositories/QuarantineRepository.js +4 -441
- package/dist/src/repositories/QuarantineRepository.js.map +1 -1
- package/dist/src/repositories/quarantine/QuarantineRepository.d.ts +168 -0
- package/dist/src/repositories/quarantine/QuarantineRepository.d.ts.map +1 -0
- package/dist/src/repositories/quarantine/QuarantineRepository.js +341 -0
- package/dist/src/repositories/quarantine/QuarantineRepository.js.map +1 -0
- package/dist/src/repositories/quarantine/index.d.ts +10 -0
- package/dist/src/repositories/quarantine/index.d.ts.map +1 -0
- package/dist/src/repositories/quarantine/index.js +10 -0
- package/dist/src/repositories/quarantine/index.js.map +1 -0
- package/dist/src/repositories/quarantine/queries.d.ts +58 -0
- package/dist/src/repositories/quarantine/queries.d.ts.map +1 -0
- package/dist/src/repositories/quarantine/queries.js +88 -0
- package/dist/src/repositories/quarantine/queries.js.map +1 -0
- package/dist/src/repositories/quarantine/query-builder.d.ts +44 -0
- package/dist/src/repositories/quarantine/query-builder.d.ts.map +1 -0
- package/dist/src/repositories/quarantine/query-builder.js +87 -0
- package/dist/src/repositories/quarantine/query-builder.js.map +1 -0
- package/dist/src/repositories/quarantine/types.d.ts +155 -0
- package/dist/src/repositories/quarantine/types.d.ts.map +1 -0
- package/dist/src/repositories/quarantine/types.js +13 -0
- package/dist/src/repositories/quarantine/types.js.map +1 -0
- package/dist/src/scripts/__tests__/scan-imported-skills.test.d.ts +1 -0
- package/dist/src/scripts/__tests__/scan-imported-skills.test.d.ts.map +1 -1
- package/dist/src/scripts/__tests__/scan-imported-skills.test.js +7 -43
- package/dist/src/scripts/__tests__/scan-imported-skills.test.js.map +1 -1
- package/dist/src/scripts/github-import/checkpoint.d.ts +21 -0
- package/dist/src/scripts/github-import/checkpoint.d.ts.map +1 -0
- package/dist/src/scripts/github-import/checkpoint.js +52 -0
- package/dist/src/scripts/github-import/checkpoint.js.map +1 -0
- package/dist/src/scripts/github-import/deduplication.d.ts +15 -0
- package/dist/src/scripts/github-import/deduplication.d.ts.map +1 -0
- package/dist/src/scripts/github-import/deduplication.js +33 -0
- package/dist/src/scripts/github-import/deduplication.js.map +1 -0
- package/dist/src/scripts/github-import/github-client.d.ts +29 -0
- package/dist/src/scripts/github-import/github-client.d.ts.map +1 -0
- package/dist/src/scripts/github-import/github-client.js +184 -0
- package/dist/src/scripts/github-import/github-client.js.map +1 -0
- package/dist/src/scripts/github-import/index.d.ts +29 -0
- package/dist/src/scripts/github-import/index.d.ts.map +1 -0
- package/dist/src/scripts/github-import/index.js +198 -0
- package/dist/src/scripts/github-import/index.js.map +1 -0
- package/dist/src/scripts/github-import/output.d.ts +12 -0
- package/dist/src/scripts/github-import/output.d.ts.map +1 -0
- package/dist/src/scripts/github-import/output.js +34 -0
- package/dist/src/scripts/github-import/output.js.map +1 -0
- package/dist/src/scripts/github-import/types.d.ts +108 -0
- package/dist/src/scripts/github-import/types.d.ts.map +1 -0
- package/dist/src/scripts/github-import/types.js +44 -0
- package/dist/src/scripts/github-import/types.js.map +1 -0
- package/dist/src/scripts/github-import/utils.d.ts +13 -0
- package/dist/src/scripts/github-import/utils.d.ts.map +1 -0
- package/dist/src/scripts/github-import/utils.js +28 -0
- package/dist/src/scripts/github-import/utils.js.map +1 -0
- package/dist/src/scripts/import-github-skills.d.ts +3 -12
- package/dist/src/scripts/import-github-skills.d.ts.map +1 -1
- package/dist/src/scripts/import-github-skills.js +18 -398
- package/dist/src/scripts/import-github-skills.js.map +1 -1
- package/dist/src/scripts/scan-imported-skills.d.ts +7 -7
- package/dist/src/scripts/scan-imported-skills.d.ts.map +1 -1
- package/dist/src/scripts/scan-imported-skills.js +8 -397
- package/dist/src/scripts/scan-imported-skills.js.map +1 -1
- package/dist/src/scripts/skill-scanner/categorizer.d.ts +43 -0
- package/dist/src/scripts/skill-scanner/categorizer.d.ts.map +1 -0
- package/dist/src/scripts/skill-scanner/categorizer.js +61 -0
- package/dist/src/scripts/skill-scanner/categorizer.js.map +1 -0
- package/dist/src/scripts/skill-scanner/file-scanner.d.ts +43 -0
- package/dist/src/scripts/skill-scanner/file-scanner.d.ts.map +1 -0
- package/dist/src/scripts/skill-scanner/file-scanner.js +90 -0
- package/dist/src/scripts/skill-scanner/file-scanner.js.map +1 -0
- package/dist/src/scripts/skill-scanner/index.d.ts +22 -0
- package/dist/src/scripts/skill-scanner/index.d.ts.map +1 -0
- package/dist/src/scripts/skill-scanner/index.js +43 -0
- package/dist/src/scripts/skill-scanner/index.js.map +1 -0
- package/dist/src/scripts/skill-scanner/logger.d.ts +59 -0
- package/dist/src/scripts/skill-scanner/logger.d.ts.map +1 -0
- package/dist/src/scripts/skill-scanner/logger.js +104 -0
- package/dist/src/scripts/skill-scanner/logger.js.map +1 -0
- package/dist/src/scripts/skill-scanner/reporter.d.ts +56 -0
- package/dist/src/scripts/skill-scanner/reporter.d.ts.map +1 -0
- package/dist/src/scripts/skill-scanner/reporter.js +166 -0
- package/dist/src/scripts/skill-scanner/reporter.js.map +1 -0
- package/dist/src/scripts/skill-scanner/scanner.d.ts +44 -0
- package/dist/src/scripts/skill-scanner/scanner.d.ts.map +1 -0
- package/dist/src/scripts/skill-scanner/scanner.js +140 -0
- package/dist/src/scripts/skill-scanner/scanner.js.map +1 -0
- package/dist/src/scripts/skill-scanner/trust-scorer.d.ts +59 -0
- package/dist/src/scripts/skill-scanner/trust-scorer.d.ts.map +1 -0
- package/dist/src/scripts/skill-scanner/trust-scorer.js +62 -0
- package/dist/src/scripts/skill-scanner/trust-scorer.js.map +1 -0
- package/dist/src/scripts/skill-scanner/types.d.ts +98 -0
- package/dist/src/scripts/skill-scanner/types.d.ts.map +1 -0
- package/dist/src/scripts/skill-scanner/types.js +7 -0
- package/dist/src/scripts/skill-scanner/types.js.map +1 -0
- package/dist/src/scripts/validate-skills.d.ts +3 -172
- package/dist/src/scripts/validate-skills.d.ts.map +1 -1
- package/dist/src/scripts/validate-skills.js +6 -519
- package/dist/src/scripts/validate-skills.js.map +1 -1
- package/dist/src/scripts/validation/deduplication.d.ts +23 -0
- package/dist/src/scripts/validation/deduplication.d.ts.map +1 -0
- package/dist/src/scripts/validation/deduplication.js +127 -0
- package/dist/src/scripts/validation/deduplication.js.map +1 -0
- package/dist/src/scripts/validation/field-validators.d.ts +9 -0
- package/dist/src/scripts/validation/field-validators.d.ts.map +1 -0
- package/dist/src/scripts/validation/field-validators.js +135 -0
- package/dist/src/scripts/validation/field-validators.js.map +1 -0
- package/dist/src/scripts/validation/index.d.ts +29 -0
- package/dist/src/scripts/validation/index.d.ts.map +1 -0
- package/dist/src/scripts/validation/index.js +84 -0
- package/dist/src/scripts/validation/index.js.map +1 -0
- package/dist/src/scripts/validation/normalizers.d.ts +29 -0
- package/dist/src/scripts/validation/normalizers.d.ts.map +1 -0
- package/dist/src/scripts/validation/normalizers.js +79 -0
- package/dist/src/scripts/validation/normalizers.js.map +1 -0
- package/dist/src/scripts/validation/pipeline.d.ts +13 -0
- package/dist/src/scripts/validation/pipeline.d.ts.map +1 -0
- package/dist/src/scripts/validation/pipeline.js +126 -0
- package/dist/src/scripts/validation/pipeline.js.map +1 -0
- package/dist/src/scripts/validation/types.d.ts +128 -0
- package/dist/src/scripts/validation/types.d.ts.map +1 -0
- package/dist/src/scripts/validation/types.js +43 -0
- package/dist/src/scripts/validation/types.js.map +1 -0
- package/dist/src/security/index.d.ts +5 -4
- package/dist/src/security/index.d.ts.map +1 -1
- package/dist/src/security/index.js +8 -2
- package/dist/src/security/index.js.map +1 -1
- package/dist/src/security/rate-limiter/RateLimiter.d.ts +86 -0
- package/dist/src/security/rate-limiter/RateLimiter.d.ts.map +1 -0
- package/dist/src/security/rate-limiter/RateLimiter.js +260 -0
- package/dist/src/security/rate-limiter/RateLimiter.js.map +1 -0
- package/dist/src/security/rate-limiter/constants.d.ts +15 -0
- package/dist/src/security/rate-limiter/constants.d.ts.map +1 -0
- package/dist/src/security/rate-limiter/constants.js +15 -0
- package/dist/src/security/rate-limiter/constants.js.map +1 -0
- package/dist/src/security/rate-limiter/errors.d.ts +22 -0
- package/dist/src/security/rate-limiter/errors.d.ts.map +1 -0
- package/dist/src/security/rate-limiter/errors.js +32 -0
- package/dist/src/security/rate-limiter/errors.js.map +1 -0
- package/dist/src/security/rate-limiter/index.d.ts +12 -0
- package/dist/src/security/rate-limiter/index.d.ts.map +1 -0
- package/dist/src/security/rate-limiter/index.js +16 -0
- package/dist/src/security/rate-limiter/index.js.map +1 -0
- package/dist/src/security/rate-limiter/metrics-manager.d.ts +55 -0
- package/dist/src/security/rate-limiter/metrics-manager.d.ts.map +1 -0
- package/dist/src/security/rate-limiter/metrics-manager.js +144 -0
- package/dist/src/security/rate-limiter/metrics-manager.js.map +1 -0
- package/dist/src/security/rate-limiter/presets.d.ts +52 -0
- package/dist/src/security/rate-limiter/presets.d.ts.map +1 -0
- package/dist/src/security/rate-limiter/presets.js +53 -0
- package/dist/src/security/rate-limiter/presets.js.map +1 -0
- package/dist/src/security/rate-limiter/queue-manager.d.ts +59 -0
- package/dist/src/security/rate-limiter/queue-manager.d.ts.map +1 -0
- package/dist/src/security/rate-limiter/queue-manager.js +189 -0
- package/dist/src/security/rate-limiter/queue-manager.js.map +1 -0
- package/dist/src/security/rate-limiter/storage.d.ts +34 -0
- package/dist/src/security/rate-limiter/storage.d.ts.map +1 -0
- package/dist/src/security/rate-limiter/storage.js +80 -0
- package/dist/src/security/rate-limiter/storage.js.map +1 -0
- package/dist/src/security/rate-limiter/token-bucket.d.ts +44 -0
- package/dist/src/security/rate-limiter/token-bucket.d.ts.map +1 -0
- package/dist/src/security/rate-limiter/token-bucket.js +99 -0
- package/dist/src/security/rate-limiter/token-bucket.js.map +1 -0
- package/dist/src/security/rate-limiter/types.d.ts +104 -0
- package/dist/src/security/rate-limiter/types.d.ts.map +1 -0
- package/dist/src/security/rate-limiter/types.js +7 -0
- package/dist/src/security/rate-limiter/types.js.map +1 -0
- package/dist/src/security/scanner/SecurityScanner.d.ts +94 -0
- package/dist/src/security/scanner/SecurityScanner.d.ts.map +1 -0
- package/dist/src/security/scanner/SecurityScanner.js +403 -0
- package/dist/src/security/scanner/SecurityScanner.js.map +1 -0
- package/dist/src/security/scanner/index.d.ts +11 -0
- package/dist/src/security/scanner/index.d.ts.map +1 -0
- package/dist/src/security/scanner/index.js +14 -0
- package/dist/src/security/scanner/index.js.map +1 -0
- package/dist/src/security/scanner/patterns.d.ts +14 -0
- package/dist/src/security/scanner/patterns.d.ts.map +1 -0
- package/dist/src/security/scanner/patterns.js +147 -0
- package/dist/src/security/scanner/patterns.js.map +1 -0
- package/dist/src/security/scanner/regex-utils.d.ts +33 -0
- package/dist/src/security/scanner/regex-utils.d.ts.map +1 -0
- package/dist/src/security/scanner/regex-utils.js +41 -0
- package/dist/src/security/scanner/regex-utils.js.map +1 -0
- package/dist/src/security/scanner/types.d.ts +63 -0
- package/dist/src/security/scanner/types.d.ts.map +1 -0
- package/dist/src/security/scanner/types.js +7 -0
- package/dist/src/security/scanner/types.js.map +1 -0
- package/dist/src/security/scanner/weights.d.ts +15 -0
- package/dist/src/security/scanner/weights.d.ts.map +1 -0
- package/dist/src/security/scanner/weights.js +28 -0
- package/dist/src/security/scanner/weights.js.map +1 -0
- package/dist/src/session/SessionHealthMonitor.d.ts +5 -168
- package/dist/src/session/SessionHealthMonitor.d.ts.map +1 -1
- package/dist/src/session/SessionHealthMonitor.js +22 -91
- package/dist/src/session/SessionHealthMonitor.js.map +1 -1
- package/dist/src/session/health-checks.d.ts +37 -0
- package/dist/src/session/health-checks.d.ts.map +1 -0
- package/dist/src/session/health-checks.js +64 -0
- package/dist/src/session/health-checks.js.map +1 -0
- package/dist/src/session/health-types.d.ts +78 -0
- package/dist/src/session/health-types.d.ts.map +1 -0
- package/dist/src/session/health-types.js +16 -0
- package/dist/src/session/health-types.js.map +1 -0
- package/dist/src/session/index.d.ts +5 -1
- package/dist/src/session/index.d.ts.map +1 -1
- package/dist/src/session/index.js +9 -0
- package/dist/src/session/index.js.map +1 -1
- package/dist/src/session/metrics-collector.d.ts +23 -0
- package/dist/src/session/metrics-collector.d.ts.map +1 -0
- package/dist/src/session/metrics-collector.js +44 -0
- package/dist/src/session/metrics-collector.js.map +1 -0
- package/dist/src/session/typed-event-emitter.d.ts +70 -0
- package/dist/src/session/typed-event-emitter.d.ts.map +1 -0
- package/dist/src/session/typed-event-emitter.js +79 -0
- package/dist/src/session/typed-event-emitter.js.map +1 -0
- package/dist/src/sources/BaseSourceAdapter.d.ts +1 -1
- package/dist/src/sources/BaseSourceAdapter.d.ts.map +1 -1
- package/dist/src/sources/BaseSourceAdapter.js +2 -2
- package/dist/src/sources/BaseSourceAdapter.js.map +1 -1
- package/dist/src/telemetry/index.d.ts +1 -0
- package/dist/src/telemetry/index.d.ts.map +1 -1
- package/dist/src/telemetry/index.js +2 -0
- package/dist/src/telemetry/index.js.map +1 -1
- package/dist/src/telemetry/posthog.d.ts +125 -0
- package/dist/src/telemetry/posthog.d.ts.map +1 -0
- package/dist/src/telemetry/posthog.js +198 -0
- package/dist/src/telemetry/posthog.js.map +1 -0
- package/dist/tests/RateLimiter.test.js +4 -4
- package/dist/tests/RateLimiter.test.js.map +1 -1
- package/dist/tests/e2e/security/security.e2e.test.js +3 -3
- package/dist/tests/e2e/security/security.e2e.test.js.map +1 -1
- package/package.json +2 -1
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SMI-860: Utility functions for GitHub skill import
|
|
3
|
+
*/
|
|
4
|
+
import { GitHubSearchResponse } from './types.js';
|
|
5
|
+
/** Sleep for a given number of milliseconds */
|
|
6
|
+
export declare const sleep: (ms: number) => Promise<void>;
|
|
7
|
+
/** Log with timestamp */
|
|
8
|
+
export declare function log(message: string, level?: 'info' | 'warn' | 'error'): void;
|
|
9
|
+
/** Progress bar helper */
|
|
10
|
+
export declare function progressBar(current: number, total: number, width?: number): string;
|
|
11
|
+
/** Type guard for GitHub search response */
|
|
12
|
+
export declare function isGitHubSearchResponse(data: unknown): data is GitHubSearchResponse;
|
|
13
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/scripts/github-import/utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAEjD,+CAA+C;AAC/C,eAAO,MAAM,KAAK,GAAI,IAAI,MAAM,KAAG,OAAO,CAAC,IAAI,CACI,CAAA;AAEnD,yBAAyB;AACzB,wBAAgB,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,GAAE,MAAM,GAAG,MAAM,GAAG,OAAgB,GAAG,IAAI,CAIpF;AAED,0BAA0B;AAC1B,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,MAAM,CAK9E;AAED,4CAA4C;AAC5C,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,IAAI,oBAAoB,CAQlF"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SMI-860: Utility functions for GitHub skill import
|
|
3
|
+
*/
|
|
4
|
+
/** Sleep for a given number of milliseconds */
|
|
5
|
+
export const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
|
|
6
|
+
/** Log with timestamp */
|
|
7
|
+
export function log(message, level = 'info') {
|
|
8
|
+
const timestamp = new Date().toISOString();
|
|
9
|
+
const prefix = { info: '[INFO]', warn: '[WARN]', error: '[ERROR]' }[level];
|
|
10
|
+
console.log(`${timestamp} ${prefix} ${message}`);
|
|
11
|
+
}
|
|
12
|
+
/** Progress bar helper */
|
|
13
|
+
export function progressBar(current, total, width = 30) {
|
|
14
|
+
const percent = Math.round((current / total) * 100);
|
|
15
|
+
const filled = Math.round((current / total) * width);
|
|
16
|
+
const empty = width - filled;
|
|
17
|
+
return `[${'='.repeat(filled)}${' '.repeat(empty)}] ${percent}% (${current}/${total})`;
|
|
18
|
+
}
|
|
19
|
+
/** Type guard for GitHub search response */
|
|
20
|
+
export function isGitHubSearchResponse(data) {
|
|
21
|
+
if (typeof data !== 'object' || data === null)
|
|
22
|
+
return false;
|
|
23
|
+
const obj = data;
|
|
24
|
+
return (typeof obj.total_count === 'number' &&
|
|
25
|
+
typeof obj.incomplete_results === 'boolean' &&
|
|
26
|
+
Array.isArray(obj.items));
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/scripts/github-import/utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,+CAA+C;AAC/C,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,EAAU,EAAiB,EAAE,CACjD,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAA;AAEnD,yBAAyB;AACzB,MAAM,UAAU,GAAG,CAAC,OAAe,EAAE,QAAmC,MAAM;IAC5E,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;IAC1C,MAAM,MAAM,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,KAAK,CAAC,CAAA;IAC1E,OAAO,CAAC,GAAG,CAAC,GAAG,SAAS,IAAI,MAAM,IAAI,OAAO,EAAE,CAAC,CAAA;AAClD,CAAC;AAED,0BAA0B;AAC1B,MAAM,UAAU,WAAW,CAAC,OAAe,EAAE,KAAa,EAAE,KAAK,GAAG,EAAE;IACpE,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,CAAA;IACnD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,CAAA;IACpD,MAAM,KAAK,GAAG,KAAK,GAAG,MAAM,CAAA;IAC5B,OAAO,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,OAAO,MAAM,OAAO,IAAI,KAAK,GAAG,CAAA;AACxF,CAAC;AAED,4CAA4C;AAC5C,MAAM,UAAU,sBAAsB,CAAC,IAAa;IAClD,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,KAAK,CAAA;IAC3D,MAAM,GAAG,GAAG,IAA+B,CAAA;IAC3C,OAAO,CACL,OAAO,GAAG,CAAC,WAAW,KAAK,QAAQ;QACnC,OAAO,GAAG,CAAC,kBAAkB,KAAK,SAAS;QAC3C,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CACzB,CAAA;AACH,CAAC"}
|
|
@@ -1,17 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* GitHub API Import Script for Large-Scale Skill Collection (SMI-860)
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
* -
|
|
6
|
-
* - topic:mcp-server
|
|
7
|
-
* - filename:SKILL.md
|
|
8
|
-
* - topic:anthropic-skills
|
|
9
|
-
*
|
|
10
|
-
* Features:
|
|
11
|
-
* - Exponential backoff retry for rate limit handling
|
|
12
|
-
* - Resume support via checkpoint file
|
|
13
|
-
* - Progress logging
|
|
14
|
-
* - Output to JSON with metadata
|
|
4
|
+
* This file re-exports from the split github-import module for backwards compatibility.
|
|
5
|
+
* See ./github-import/ for the implementation.
|
|
15
6
|
*
|
|
16
7
|
* Usage:
|
|
17
8
|
* GITHUB_TOKEN=xxx npx tsx packages/core/src/scripts/import-github-skills.ts
|
|
@@ -20,5 +11,5 @@
|
|
|
20
11
|
* --resume Resume from last checkpoint
|
|
21
12
|
* --output Custom output path (default: data/imported-skills.json)
|
|
22
13
|
*/
|
|
23
|
-
export
|
|
14
|
+
export * from './github-import/index.js';
|
|
24
15
|
//# sourceMappingURL=import-github-skills.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"import-github-skills.d.ts","sourceRoot":"","sources":["../../../src/scripts/import-github-skills.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"import-github-skills.d.ts","sourceRoot":"","sources":["../../../src/scripts/import-github-skills.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,cAAc,0BAA0B,CAAA"}
|
|
@@ -1,17 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* GitHub API Import Script for Large-Scale Skill Collection (SMI-860)
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
* -
|
|
6
|
-
* - topic:mcp-server
|
|
7
|
-
* - filename:SKILL.md
|
|
8
|
-
* - topic:anthropic-skills
|
|
9
|
-
*
|
|
10
|
-
* Features:
|
|
11
|
-
* - Exponential backoff retry for rate limit handling
|
|
12
|
-
* - Resume support via checkpoint file
|
|
13
|
-
* - Progress logging
|
|
14
|
-
* - Output to JSON with metadata
|
|
4
|
+
* This file re-exports from the split github-import module for backwards compatibility.
|
|
5
|
+
* See ./github-import/ for the implementation.
|
|
15
6
|
*
|
|
16
7
|
* Usage:
|
|
17
8
|
* GITHUB_TOKEN=xxx npx tsx packages/core/src/scripts/import-github-skills.ts
|
|
@@ -20,374 +11,15 @@
|
|
|
20
11
|
* --resume Resume from last checkpoint
|
|
21
12
|
* --output Custom output path (default: data/imported-skills.json)
|
|
22
13
|
*/
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
QUERY_DELAY: 500,
|
|
33
|
-
RETRY: {
|
|
34
|
-
MAX_ATTEMPTS: 5,
|
|
35
|
-
BASE_DELAY_MS: 1000,
|
|
36
|
-
BACKOFF_MULTIPLIER: 2,
|
|
37
|
-
},
|
|
38
|
-
OUTPUT_PATH: process.env.OUTPUT_PATH || './data/imported-skills.json',
|
|
39
|
-
CHECKPOINT_PATH: process.env.CHECKPOINT_PATH || './data/import-checkpoint.json',
|
|
40
|
-
};
|
|
41
|
-
// ============================================================================
|
|
42
|
-
// Search Queries
|
|
43
|
-
// ============================================================================
|
|
44
|
-
const SEARCH_QUERIES = [
|
|
45
|
-
{
|
|
46
|
-
name: 'claude-skill',
|
|
47
|
-
query: 'topic:claude-skill',
|
|
48
|
-
description: 'Repositories tagged with claude-skill topic',
|
|
49
|
-
},
|
|
50
|
-
{
|
|
51
|
-
name: 'mcp-server',
|
|
52
|
-
query: 'topic:mcp-server',
|
|
53
|
-
description: 'MCP server implementations',
|
|
54
|
-
},
|
|
55
|
-
{
|
|
56
|
-
name: 'skill-md',
|
|
57
|
-
query: 'filename:SKILL.md',
|
|
58
|
-
description: 'Repositories containing SKILL.md files',
|
|
59
|
-
},
|
|
60
|
-
{
|
|
61
|
-
name: 'anthropic-skills',
|
|
62
|
-
query: 'topic:anthropic-skills',
|
|
63
|
-
description: 'Repositories tagged with anthropic-skills topic',
|
|
64
|
-
},
|
|
65
|
-
];
|
|
66
|
-
// ============================================================================
|
|
67
|
-
// Utility Functions
|
|
68
|
-
// ============================================================================
|
|
69
|
-
/** Sleep for a given number of milliseconds */
|
|
70
|
-
const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
|
|
71
|
-
/** Log with timestamp */
|
|
72
|
-
function log(message, level = 'info') {
|
|
73
|
-
const timestamp = new Date().toISOString();
|
|
74
|
-
const prefix = { info: '[INFO]', warn: '[WARN]', error: '[ERROR]' }[level];
|
|
75
|
-
console.log(`${timestamp} ${prefix} ${message}`);
|
|
76
|
-
}
|
|
77
|
-
/** Progress bar helper */
|
|
78
|
-
function progressBar(current, total, width = 30) {
|
|
79
|
-
const percent = Math.round((current / total) * 100);
|
|
80
|
-
const filled = Math.round((current / total) * width);
|
|
81
|
-
const empty = width - filled;
|
|
82
|
-
return `[${'='.repeat(filled)}${' '.repeat(empty)}] ${percent}% (${current}/${total})`;
|
|
83
|
-
}
|
|
84
|
-
/** Type guard for GitHub search response */
|
|
85
|
-
function isGitHubSearchResponse(data) {
|
|
86
|
-
if (typeof data !== 'object' || data === null)
|
|
87
|
-
return false;
|
|
88
|
-
const obj = data;
|
|
89
|
-
return (typeof obj.total_count === 'number' &&
|
|
90
|
-
typeof obj.incomplete_results === 'boolean' &&
|
|
91
|
-
Array.isArray(obj.items));
|
|
92
|
-
}
|
|
93
|
-
// ============================================================================
|
|
94
|
-
// Fetch with Retry (Exponential Backoff)
|
|
95
|
-
// ============================================================================
|
|
96
|
-
/**
|
|
97
|
-
* Fetches a URL with exponential backoff retry logic.
|
|
98
|
-
* Handles rate limiting (429) and server errors (5xx).
|
|
99
|
-
*
|
|
100
|
-
* @param url - The URL to fetch
|
|
101
|
-
* @param options - Fetch options including headers
|
|
102
|
-
* @returns The fetch Response
|
|
103
|
-
* @throws Error after max retries exceeded
|
|
104
|
-
*/
|
|
105
|
-
async function fetchWithRetry(url, options = {}) {
|
|
106
|
-
const { MAX_ATTEMPTS, BASE_DELAY_MS, BACKOFF_MULTIPLIER } = CONFIG.RETRY;
|
|
107
|
-
let lastError = null;
|
|
108
|
-
for (let attempt = 1; attempt <= MAX_ATTEMPTS; attempt++) {
|
|
109
|
-
try {
|
|
110
|
-
const response = await fetch(url, options);
|
|
111
|
-
// Check for rate limit headers
|
|
112
|
-
const rateLimitRemaining = response.headers.get('X-RateLimit-Remaining');
|
|
113
|
-
const rateLimitReset = response.headers.get('X-RateLimit-Reset');
|
|
114
|
-
if (rateLimitRemaining === '0' && rateLimitReset) {
|
|
115
|
-
const resetTime = parseInt(rateLimitReset, 10) * 1000;
|
|
116
|
-
const waitTime = Math.max(0, resetTime - Date.now()) + 1000;
|
|
117
|
-
log(`Rate limit exhausted. Waiting ${Math.round(waitTime / 1000)}s until reset...`, 'warn');
|
|
118
|
-
await sleep(waitTime);
|
|
119
|
-
continue;
|
|
120
|
-
}
|
|
121
|
-
// Don't retry on 4xx client errors (except 429 rate limit)
|
|
122
|
-
if (response.status >= 400 && response.status < 500 && response.status !== 429) {
|
|
123
|
-
return response;
|
|
124
|
-
}
|
|
125
|
-
// Retry on 429 (rate limit) or 5xx server errors
|
|
126
|
-
if (response.status === 429 || response.status >= 500) {
|
|
127
|
-
if (attempt < MAX_ATTEMPTS) {
|
|
128
|
-
const retryAfter = response.headers.get('Retry-After');
|
|
129
|
-
const delay = retryAfter
|
|
130
|
-
? parseInt(retryAfter, 10) * 1000
|
|
131
|
-
: BASE_DELAY_MS * Math.pow(BACKOFF_MULTIPLIER, attempt - 1);
|
|
132
|
-
log(`Retry ${attempt}/${MAX_ATTEMPTS} after ${delay}ms (HTTP ${response.status})`, 'warn');
|
|
133
|
-
await sleep(delay);
|
|
134
|
-
continue;
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
return response;
|
|
138
|
-
}
|
|
139
|
-
catch (error) {
|
|
140
|
-
lastError = error instanceof Error ? error : new Error(String(error));
|
|
141
|
-
if (attempt < MAX_ATTEMPTS) {
|
|
142
|
-
const delay = BASE_DELAY_MS * Math.pow(BACKOFF_MULTIPLIER, attempt - 1);
|
|
143
|
-
log(`Retry ${attempt}/${MAX_ATTEMPTS} after ${delay}ms (${lastError.message})`, 'warn');
|
|
144
|
-
await sleep(delay);
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
throw lastError || new Error('Max retries exceeded');
|
|
149
|
-
}
|
|
150
|
-
// ============================================================================
|
|
151
|
-
// GitHub API Functions
|
|
152
|
-
// ============================================================================
|
|
153
|
-
/** Get GitHub API headers */
|
|
154
|
-
function getGitHubHeaders() {
|
|
155
|
-
const headers = {
|
|
156
|
-
Accept: 'application/vnd.github.v3+json',
|
|
157
|
-
'User-Agent': 'Skillsmith-Import/1.0',
|
|
158
|
-
};
|
|
159
|
-
if (CONFIG.GITHUB_TOKEN) {
|
|
160
|
-
headers['Authorization'] = `Bearer ${CONFIG.GITHUB_TOKEN}`;
|
|
161
|
-
}
|
|
162
|
-
return headers;
|
|
163
|
-
}
|
|
164
|
-
/** Check and display GitHub rate limit status */
|
|
165
|
-
async function checkRateLimit() {
|
|
166
|
-
try {
|
|
167
|
-
const response = await fetch(`${CONFIG.GITHUB_API_URL}/rate_limit`, {
|
|
168
|
-
headers: getGitHubHeaders(),
|
|
169
|
-
});
|
|
170
|
-
if (!response.ok) {
|
|
171
|
-
log(`Could not check rate limit: ${response.status}`, 'warn');
|
|
172
|
-
return;
|
|
173
|
-
}
|
|
174
|
-
const data = (await response.json());
|
|
175
|
-
const search = data.resources?.search;
|
|
176
|
-
const core = data.rate;
|
|
177
|
-
log(`GitHub Rate Limits:`);
|
|
178
|
-
log(` Core API: ${core?.remaining}/${core?.limit} (resets: ${new Date((core?.reset ?? 0) * 1000).toISOString()})`);
|
|
179
|
-
log(` Search API: ${search?.remaining}/${search?.limit} (resets: ${new Date((search?.reset ?? 0) * 1000).toISOString()})`);
|
|
180
|
-
}
|
|
181
|
-
catch (error) {
|
|
182
|
-
log(`Error checking rate limit: ${error}`, 'warn');
|
|
183
|
-
}
|
|
184
|
-
}
|
|
185
|
-
/**
|
|
186
|
-
* Fetches repositories from GitHub search API for a given query.
|
|
187
|
-
* Handles pagination automatically up to GitHub's 1000 result limit.
|
|
188
|
-
*
|
|
189
|
-
* @param searchQuery - The search query configuration
|
|
190
|
-
* @param startPage - Starting page for resume support
|
|
191
|
-
* @param onProgress - Progress callback
|
|
192
|
-
* @returns Array of imported skill metadata
|
|
193
|
-
*/
|
|
194
|
-
async function fetchGitHubSearch(searchQuery, startPage = 1, onProgress) {
|
|
195
|
-
const skills = [];
|
|
196
|
-
let page = startPage;
|
|
197
|
-
let totalCount = 0;
|
|
198
|
-
const importedAt = new Date().toISOString();
|
|
199
|
-
log(`Searching: ${searchQuery.description}`);
|
|
200
|
-
log(`Query: ${searchQuery.query}`);
|
|
201
|
-
while (true) {
|
|
202
|
-
const url = `${CONFIG.GITHUB_API_URL}/search/repositories` +
|
|
203
|
-
`?q=${encodeURIComponent(searchQuery.query)}` +
|
|
204
|
-
`&per_page=${CONFIG.PER_PAGE}` +
|
|
205
|
-
`&page=${page}` +
|
|
206
|
-
`&sort=updated` +
|
|
207
|
-
`&order=desc`;
|
|
208
|
-
try {
|
|
209
|
-
const response = await fetchWithRetry(url, { headers: getGitHubHeaders() });
|
|
210
|
-
if (response.status === 403) {
|
|
211
|
-
const resetHeader = response.headers.get('X-RateLimit-Reset');
|
|
212
|
-
const resetTime = resetHeader ? new Date(parseInt(resetHeader) * 1000) : 'unknown';
|
|
213
|
-
log(`Rate limited. Reset at: ${resetTime}`, 'error');
|
|
214
|
-
break;
|
|
215
|
-
}
|
|
216
|
-
if (response.status === 422) {
|
|
217
|
-
// Validation failed - often means query is too broad
|
|
218
|
-
log(`Query validation failed (HTTP 422) - query may be too broad`, 'warn');
|
|
219
|
-
break;
|
|
220
|
-
}
|
|
221
|
-
if (!response.ok) {
|
|
222
|
-
log(`Error: ${response.status} ${response.statusText}`, 'error');
|
|
223
|
-
break;
|
|
224
|
-
}
|
|
225
|
-
const rawData = await response.json();
|
|
226
|
-
if (!isGitHubSearchResponse(rawData)) {
|
|
227
|
-
log(`Invalid response format on page ${page}`, 'error');
|
|
228
|
-
break;
|
|
229
|
-
}
|
|
230
|
-
const data = rawData;
|
|
231
|
-
if (page === 1) {
|
|
232
|
-
totalCount = Math.min(data.total_count, CONFIG.MAX_RESULTS_PER_QUERY);
|
|
233
|
-
log(`Found ${data.total_count} repositories (fetching up to ${totalCount})`);
|
|
234
|
-
}
|
|
235
|
-
if (data.items.length === 0) {
|
|
236
|
-
break;
|
|
237
|
-
}
|
|
238
|
-
for (const repo of data.items) {
|
|
239
|
-
skills.push({
|
|
240
|
-
id: `github/${repo.owner.login}/${repo.name}`,
|
|
241
|
-
name: repo.name,
|
|
242
|
-
description: repo.description || '',
|
|
243
|
-
author: repo.owner.login,
|
|
244
|
-
repo_url: repo.html_url,
|
|
245
|
-
clone_url: repo.clone_url,
|
|
246
|
-
stars: repo.stargazers_count,
|
|
247
|
-
forks: repo.forks_count,
|
|
248
|
-
topics: repo.topics || [],
|
|
249
|
-
language: repo.language,
|
|
250
|
-
license: repo.license?.spdx_id || null,
|
|
251
|
-
created_at: repo.created_at,
|
|
252
|
-
updated_at: repo.updated_at,
|
|
253
|
-
source: 'github',
|
|
254
|
-
query_type: searchQuery.name,
|
|
255
|
-
imported_at: importedAt,
|
|
256
|
-
});
|
|
257
|
-
}
|
|
258
|
-
const progress = progressBar(Math.min(page * CONFIG.PER_PAGE, totalCount), totalCount);
|
|
259
|
-
log(`Page ${page}: ${data.items.length} repos ${progress}`);
|
|
260
|
-
onProgress?.(skills.length, totalCount);
|
|
261
|
-
// Check if we've reached the limit or end of results
|
|
262
|
-
if (page * CONFIG.PER_PAGE >= CONFIG.MAX_RESULTS_PER_QUERY ||
|
|
263
|
-
data.items.length < CONFIG.PER_PAGE) {
|
|
264
|
-
break;
|
|
265
|
-
}
|
|
266
|
-
page++;
|
|
267
|
-
await sleep(CONFIG.RATE_LIMIT_DELAY);
|
|
268
|
-
}
|
|
269
|
-
catch (error) {
|
|
270
|
-
log(`Fetch error on page ${page}: ${error}`, 'error');
|
|
271
|
-
break;
|
|
272
|
-
}
|
|
273
|
-
}
|
|
274
|
-
log(`Completed: ${skills.length} repositories from ${searchQuery.name}`);
|
|
275
|
-
return skills;
|
|
276
|
-
}
|
|
277
|
-
// ============================================================================
|
|
278
|
-
// Deduplication
|
|
279
|
-
// ============================================================================
|
|
280
|
-
/**
|
|
281
|
-
* Deduplicates skills by repository URL, keeping the most recently updated version.
|
|
282
|
-
*
|
|
283
|
-
* @param skills - Array of skills that may contain duplicates
|
|
284
|
-
* @returns Object containing unique skills and duplicate count
|
|
285
|
-
*/
|
|
286
|
-
function deduplicateSkills(skills) {
|
|
287
|
-
const seen = new Map();
|
|
288
|
-
for (const skill of skills) {
|
|
289
|
-
// Normalize key by repo URL
|
|
290
|
-
const key = createHash('md5').update(skill.repo_url.toLowerCase()).digest('hex');
|
|
291
|
-
const existing = seen.get(key);
|
|
292
|
-
if (existing) {
|
|
293
|
-
// Keep the more recently updated version
|
|
294
|
-
if (new Date(skill.updated_at) > new Date(existing.updated_at)) {
|
|
295
|
-
seen.set(key, skill);
|
|
296
|
-
}
|
|
297
|
-
}
|
|
298
|
-
else {
|
|
299
|
-
seen.set(key, skill);
|
|
300
|
-
}
|
|
301
|
-
}
|
|
302
|
-
const unique = Array.from(seen.values());
|
|
303
|
-
return {
|
|
304
|
-
unique,
|
|
305
|
-
duplicateCount: skills.length - unique.length,
|
|
306
|
-
};
|
|
307
|
-
}
|
|
308
|
-
// ============================================================================
|
|
309
|
-
// Checkpoint Management
|
|
310
|
-
// ============================================================================
|
|
311
|
-
/**
|
|
312
|
-
* Saves checkpoint for resume support.
|
|
313
|
-
*
|
|
314
|
-
* @param checkpoint - Checkpoint data to save
|
|
315
|
-
*/
|
|
316
|
-
function saveCheckpoint(checkpoint) {
|
|
317
|
-
const dir = path.dirname(CONFIG.CHECKPOINT_PATH);
|
|
318
|
-
if (!fs.existsSync(dir)) {
|
|
319
|
-
fs.mkdirSync(dir, { recursive: true });
|
|
320
|
-
}
|
|
321
|
-
fs.writeFileSync(CONFIG.CHECKPOINT_PATH, JSON.stringify(checkpoint, null, 2));
|
|
322
|
-
log(`Checkpoint saved: ${checkpoint.skills.length} skills, last query: ${checkpoint.last_query}`);
|
|
323
|
-
}
|
|
324
|
-
/**
|
|
325
|
-
* Loads checkpoint if exists.
|
|
326
|
-
*
|
|
327
|
-
* @returns Checkpoint data or null if not found
|
|
328
|
-
*/
|
|
329
|
-
function loadCheckpoint() {
|
|
330
|
-
if (!fs.existsSync(CONFIG.CHECKPOINT_PATH)) {
|
|
331
|
-
return null;
|
|
332
|
-
}
|
|
333
|
-
try {
|
|
334
|
-
const data = fs.readFileSync(CONFIG.CHECKPOINT_PATH, 'utf-8');
|
|
335
|
-
const checkpoint = JSON.parse(data);
|
|
336
|
-
log(`Loaded checkpoint from ${checkpoint.timestamp}`);
|
|
337
|
-
log(` Skills: ${checkpoint.skills.length}`);
|
|
338
|
-
log(` Last query: ${checkpoint.last_query}`);
|
|
339
|
-
return checkpoint;
|
|
340
|
-
}
|
|
341
|
-
catch (error) {
|
|
342
|
-
log(`Error loading checkpoint: ${error}`, 'warn');
|
|
343
|
-
return null;
|
|
344
|
-
}
|
|
345
|
-
}
|
|
346
|
-
/**
|
|
347
|
-
* Clears checkpoint file.
|
|
348
|
-
*/
|
|
349
|
-
function clearCheckpoint() {
|
|
350
|
-
if (fs.existsSync(CONFIG.CHECKPOINT_PATH)) {
|
|
351
|
-
fs.unlinkSync(CONFIG.CHECKPOINT_PATH);
|
|
352
|
-
log('Checkpoint cleared');
|
|
353
|
-
}
|
|
354
|
-
}
|
|
355
|
-
// ============================================================================
|
|
356
|
-
// Output
|
|
357
|
-
// ============================================================================
|
|
358
|
-
/**
|
|
359
|
-
* Saves imported skills to JSON file with metadata.
|
|
360
|
-
*
|
|
361
|
-
* @param skills - Array of skills to save
|
|
362
|
-
* @param stats - Import statistics
|
|
363
|
-
*/
|
|
364
|
-
function saveOutput(skills, stats) {
|
|
365
|
-
const dir = path.dirname(CONFIG.OUTPUT_PATH);
|
|
366
|
-
if (!fs.existsSync(dir)) {
|
|
367
|
-
fs.mkdirSync(dir, { recursive: true });
|
|
368
|
-
}
|
|
369
|
-
const output = {
|
|
370
|
-
metadata: {
|
|
371
|
-
version: '1.0.0',
|
|
372
|
-
generated_at: new Date().toISOString(),
|
|
373
|
-
source: 'github',
|
|
374
|
-
queries: SEARCH_QUERIES.map((q) => q.name),
|
|
375
|
-
},
|
|
376
|
-
stats,
|
|
377
|
-
skills,
|
|
378
|
-
};
|
|
379
|
-
fs.writeFileSync(CONFIG.OUTPUT_PATH, JSON.stringify(output, null, 2));
|
|
380
|
-
log(`Output saved to: ${CONFIG.OUTPUT_PATH}`);
|
|
381
|
-
log(` Total skills: ${skills.length}`);
|
|
382
|
-
log(` File size: ${(fs.statSync(CONFIG.OUTPUT_PATH).size / 1024).toFixed(2)} KB`);
|
|
383
|
-
}
|
|
384
|
-
// ============================================================================
|
|
385
|
-
// Main Entry Point
|
|
386
|
-
// ============================================================================
|
|
387
|
-
/**
|
|
388
|
-
* Main import function.
|
|
389
|
-
* Orchestrates the import process with support for resume.
|
|
390
|
-
*/
|
|
14
|
+
// Re-export everything from the github-import module
|
|
15
|
+
export * from './github-import/index.js';
|
|
16
|
+
// Import and re-run the CLI if this file is executed directly
|
|
17
|
+
import { CONFIG, SEARCH_QUERIES } from './github-import/types.js';
|
|
18
|
+
import { log, sleep } from './github-import/utils.js';
|
|
19
|
+
import { checkRateLimit, fetchGitHubSearch } from './github-import/github-client.js';
|
|
20
|
+
import { saveCheckpoint, loadCheckpoint, clearCheckpoint } from './github-import/checkpoint.js';
|
|
21
|
+
import { deduplicateSkills } from './github-import/deduplication.js';
|
|
22
|
+
import { saveOutput } from './github-import/output.js';
|
|
391
23
|
async function main() {
|
|
392
24
|
const startTime = Date.now();
|
|
393
25
|
const shouldResume = process.argv.includes('--resume');
|
|
@@ -395,7 +27,6 @@ async function main() {
|
|
|
395
27
|
console.log(' GitHub Skills Import (SMI-860)');
|
|
396
28
|
console.log('======================================================================');
|
|
397
29
|
console.log();
|
|
398
|
-
// Check for token
|
|
399
30
|
if (CONFIG.GITHUB_TOKEN) {
|
|
400
31
|
log('GITHUB_TOKEN detected');
|
|
401
32
|
await checkRateLimit();
|
|
@@ -405,7 +36,6 @@ async function main() {
|
|
|
405
36
|
log('Set GITHUB_TOKEN environment variable for higher limits', 'warn');
|
|
406
37
|
}
|
|
407
38
|
console.log();
|
|
408
|
-
// Initialize or load checkpoint
|
|
409
39
|
let allSkills = [];
|
|
410
40
|
let stats = {
|
|
411
41
|
total_found: 0,
|
|
@@ -422,7 +52,6 @@ async function main() {
|
|
|
422
52
|
if (checkpoint) {
|
|
423
53
|
allSkills = checkpoint.skills;
|
|
424
54
|
stats = checkpoint.stats;
|
|
425
|
-
// Find the query to resume from
|
|
426
55
|
const lastQueryIndex = SEARCH_QUERIES.findIndex((q) => q.name === checkpoint.last_query);
|
|
427
56
|
if (lastQueryIndex >= 0) {
|
|
428
57
|
startQueryIndex = lastQueryIndex;
|
|
@@ -435,7 +64,6 @@ async function main() {
|
|
|
435
64
|
}
|
|
436
65
|
}
|
|
437
66
|
console.log();
|
|
438
|
-
// Graceful shutdown handler
|
|
439
67
|
let isShuttingDown = false;
|
|
440
68
|
process.on('SIGINT', () => {
|
|
441
69
|
if (isShuttingDown) {
|
|
@@ -444,7 +72,6 @@ async function main() {
|
|
|
444
72
|
}
|
|
445
73
|
isShuttingDown = true;
|
|
446
74
|
log('\nGraceful shutdown initiated (Ctrl+C again to force)...');
|
|
447
|
-
// Save checkpoint
|
|
448
75
|
const checkpoint = {
|
|
449
76
|
last_query: stats.queries_completed[stats.queries_completed.length - 1] || SEARCH_QUERIES[0].name,
|
|
450
77
|
last_page: 1,
|
|
@@ -456,7 +83,6 @@ async function main() {
|
|
|
456
83
|
log('Checkpoint saved. Run with --resume to continue.');
|
|
457
84
|
process.exit(0);
|
|
458
85
|
});
|
|
459
|
-
// Execute search queries
|
|
460
86
|
log('Starting import...');
|
|
461
87
|
console.log();
|
|
462
88
|
for (let i = startQueryIndex; i < SEARCH_QUERIES.length; i++) {
|
|
@@ -470,7 +96,6 @@ async function main() {
|
|
|
470
96
|
allSkills.push(...skills);
|
|
471
97
|
stats.total_found += skills.length;
|
|
472
98
|
stats.queries_completed.push(query.name);
|
|
473
|
-
// Save checkpoint after each query
|
|
474
99
|
const checkpoint = {
|
|
475
100
|
last_query: query.name,
|
|
476
101
|
last_page: Math.ceil(skills.length / CONFIG.PER_PAGE),
|
|
@@ -485,14 +110,12 @@ async function main() {
|
|
|
485
110
|
log(errorMsg, 'error');
|
|
486
111
|
stats.errors.push(errorMsg);
|
|
487
112
|
}
|
|
488
|
-
// Delay between queries
|
|
489
113
|
if (i < SEARCH_QUERIES.length - 1) {
|
|
490
114
|
log(`Waiting ${CONFIG.QUERY_DELAY}ms before next query...`);
|
|
491
115
|
await sleep(CONFIG.QUERY_DELAY);
|
|
492
116
|
}
|
|
493
117
|
console.log();
|
|
494
118
|
}
|
|
495
|
-
// Deduplicate results
|
|
496
119
|
console.log('======================================================================');
|
|
497
120
|
log('Deduplicating results...');
|
|
498
121
|
const { unique, duplicateCount } = deduplicateSkills(allSkills);
|
|
@@ -501,15 +124,11 @@ async function main() {
|
|
|
501
124
|
log(`Removed ${duplicateCount} duplicates`);
|
|
502
125
|
log(`Final count: ${unique.length} unique skills`);
|
|
503
126
|
console.log();
|
|
504
|
-
// Complete stats
|
|
505
127
|
stats.completed_at = new Date().toISOString();
|
|
506
128
|
stats.duration_ms = Date.now() - startTime;
|
|
507
|
-
// Save output
|
|
508
129
|
log('Saving output...');
|
|
509
130
|
saveOutput(unique, stats);
|
|
510
|
-
// Clear checkpoint on successful completion
|
|
511
131
|
clearCheckpoint();
|
|
512
|
-
// Print summary
|
|
513
132
|
console.log();
|
|
514
133
|
console.log('======================================================================');
|
|
515
134
|
console.log(' IMPORT SUMMARY');
|
|
@@ -528,7 +147,6 @@ async function main() {
|
|
|
528
147
|
}
|
|
529
148
|
}
|
|
530
149
|
console.log('======================================================================');
|
|
531
|
-
// Validate expected output
|
|
532
150
|
if (unique.length >= 500) {
|
|
533
151
|
log(`SUCCESS: Imported ${unique.length} skills (target: 500+)`);
|
|
534
152
|
}
|
|
@@ -537,9 +155,11 @@ async function main() {
|
|
|
537
155
|
log('Consider running without rate limits using a GITHUB_TOKEN', 'warn');
|
|
538
156
|
}
|
|
539
157
|
}
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
158
|
+
const isMainModule = process.argv[1]?.includes('import-github-skills');
|
|
159
|
+
if (isMainModule) {
|
|
160
|
+
main().catch((error) => {
|
|
161
|
+
log(`Fatal error: ${error}`, 'error');
|
|
162
|
+
process.exit(1);
|
|
163
|
+
});
|
|
164
|
+
}
|
|
545
165
|
//# sourceMappingURL=import-github-skills.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"import-github-skills.js","sourceRoot":"","sources":["../../../src/scripts/import-github-skills.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"import-github-skills.js","sourceRoot":"","sources":["../../../src/scripts/import-github-skills.ts"],"names":[],"mappings":"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"}
|