@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.
Files changed (325) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/src/analysis/CodebaseAnalyzer.d.ts +4 -134
  3. package/dist/src/analysis/CodebaseAnalyzer.d.ts.map +1 -1
  4. package/dist/src/analysis/CodebaseAnalyzer.js +7 -315
  5. package/dist/src/analysis/CodebaseAnalyzer.js.map +1 -1
  6. package/dist/src/analysis/framework-detector.d.ts +47 -0
  7. package/dist/src/analysis/framework-detector.d.ts.map +1 -0
  8. package/dist/src/analysis/framework-detector.js +151 -0
  9. package/dist/src/analysis/framework-detector.js.map +1 -0
  10. package/dist/src/analysis/index.d.ts +6 -1
  11. package/dist/src/analysis/index.d.ts.map +1 -1
  12. package/dist/src/analysis/index.js +10 -1
  13. package/dist/src/analysis/index.js.map +1 -1
  14. package/dist/src/analysis/parsers.d.ts +43 -0
  15. package/dist/src/analysis/parsers.d.ts.map +1 -0
  16. package/dist/src/analysis/parsers.js +219 -0
  17. package/dist/src/analysis/parsers.js.map +1 -0
  18. package/dist/src/analysis/types.d.ts +138 -0
  19. package/dist/src/analysis/types.d.ts.map +1 -0
  20. package/dist/src/analysis/types.js +25 -0
  21. package/dist/src/analysis/types.js.map +1 -0
  22. package/dist/src/analytics/AnalyticsRepository.d.ts.map +1 -1
  23. package/dist/src/analytics/AnalyticsRepository.js +4 -4
  24. package/dist/src/analytics/AnalyticsRepository.js.map +1 -1
  25. package/dist/src/api/cache.d.ts +108 -0
  26. package/dist/src/api/cache.d.ts.map +1 -0
  27. package/dist/src/api/cache.js +216 -0
  28. package/dist/src/api/cache.js.map +1 -0
  29. package/dist/src/api/client.d.ts +152 -0
  30. package/dist/src/api/client.d.ts.map +1 -0
  31. package/dist/src/api/client.js +221 -0
  32. package/dist/src/api/client.js.map +1 -0
  33. package/dist/src/api/index.d.ts +10 -0
  34. package/dist/src/api/index.d.ts.map +1 -0
  35. package/dist/src/api/index.js +10 -0
  36. package/dist/src/api/index.js.map +1 -0
  37. package/dist/src/benchmarks/BenchmarkRunner.d.ts +6 -175
  38. package/dist/src/benchmarks/BenchmarkRunner.d.ts.map +1 -1
  39. package/dist/src/benchmarks/BenchmarkRunner.js +6 -123
  40. package/dist/src/benchmarks/BenchmarkRunner.js.map +1 -1
  41. package/dist/src/benchmarks/MemoryProfiler.d.ts +4 -262
  42. package/dist/src/benchmarks/MemoryProfiler.d.ts.map +1 -1
  43. package/dist/src/benchmarks/MemoryProfiler.js +4 -400
  44. package/dist/src/benchmarks/MemoryProfiler.js.map +1 -1
  45. package/dist/src/benchmarks/comparator.d.ts +38 -0
  46. package/dist/src/benchmarks/comparator.d.ts.map +1 -0
  47. package/dist/src/benchmarks/comparator.js +81 -0
  48. package/dist/src/benchmarks/comparator.js.map +1 -0
  49. package/dist/src/benchmarks/formatters.d.ts +30 -0
  50. package/dist/src/benchmarks/formatters.d.ts.map +1 -0
  51. package/dist/src/benchmarks/formatters.js +88 -0
  52. package/dist/src/benchmarks/formatters.js.map +1 -0
  53. package/dist/src/benchmarks/index.d.ts +5 -1
  54. package/dist/src/benchmarks/index.d.ts.map +1 -1
  55. package/dist/src/benchmarks/index.js +9 -2
  56. package/dist/src/benchmarks/index.js.map +1 -1
  57. package/dist/src/benchmarks/memory/MemoryProfiler.d.ts +165 -0
  58. package/dist/src/benchmarks/memory/MemoryProfiler.d.ts.map +1 -0
  59. package/dist/src/benchmarks/memory/MemoryProfiler.js +312 -0
  60. package/dist/src/benchmarks/memory/MemoryProfiler.js.map +1 -0
  61. package/dist/src/benchmarks/memory/baseline-manager.d.ts +64 -0
  62. package/dist/src/benchmarks/memory/baseline-manager.d.ts.map +1 -0
  63. package/dist/src/benchmarks/memory/baseline-manager.js +95 -0
  64. package/dist/src/benchmarks/memory/baseline-manager.js.map +1 -0
  65. package/dist/src/benchmarks/memory/index.d.ts +12 -0
  66. package/dist/src/benchmarks/memory/index.d.ts.map +1 -0
  67. package/dist/src/benchmarks/memory/index.js +12 -0
  68. package/dist/src/benchmarks/memory/index.js.map +1 -0
  69. package/dist/src/benchmarks/memory/leak-detector.d.ts +23 -0
  70. package/dist/src/benchmarks/memory/leak-detector.d.ts.map +1 -0
  71. package/dist/src/benchmarks/memory/leak-detector.js +46 -0
  72. package/dist/src/benchmarks/memory/leak-detector.js.map +1 -0
  73. package/dist/src/benchmarks/memory/regression-detector.d.ts +17 -0
  74. package/dist/src/benchmarks/memory/regression-detector.d.ts.map +1 -0
  75. package/dist/src/benchmarks/memory/regression-detector.js +56 -0
  76. package/dist/src/benchmarks/memory/regression-detector.js.map +1 -0
  77. package/dist/src/benchmarks/memory/types.d.ts +111 -0
  78. package/dist/src/benchmarks/memory/types.d.ts.map +1 -0
  79. package/dist/src/benchmarks/memory/types.js +7 -0
  80. package/dist/src/benchmarks/memory/types.js.map +1 -0
  81. package/dist/src/benchmarks/memory/utils.d.ts +17 -0
  82. package/dist/src/benchmarks/memory/utils.d.ts.map +1 -0
  83. package/dist/src/benchmarks/memory/utils.js +29 -0
  84. package/dist/src/benchmarks/memory/utils.js.map +1 -0
  85. package/dist/src/benchmarks/types.d.ts +175 -0
  86. package/dist/src/benchmarks/types.d.ts.map +1 -0
  87. package/dist/src/benchmarks/types.js +20 -0
  88. package/dist/src/benchmarks/types.js.map +1 -0
  89. package/dist/src/index.d.ts +4 -2
  90. package/dist/src/index.d.ts.map +1 -1
  91. package/dist/src/index.js +7 -3
  92. package/dist/src/index.js.map +1 -1
  93. package/dist/src/repositories/QuarantineRepository.d.ts +4 -251
  94. package/dist/src/repositories/QuarantineRepository.d.ts.map +1 -1
  95. package/dist/src/repositories/QuarantineRepository.js +4 -441
  96. package/dist/src/repositories/QuarantineRepository.js.map +1 -1
  97. package/dist/src/repositories/quarantine/QuarantineRepository.d.ts +168 -0
  98. package/dist/src/repositories/quarantine/QuarantineRepository.d.ts.map +1 -0
  99. package/dist/src/repositories/quarantine/QuarantineRepository.js +341 -0
  100. package/dist/src/repositories/quarantine/QuarantineRepository.js.map +1 -0
  101. package/dist/src/repositories/quarantine/index.d.ts +10 -0
  102. package/dist/src/repositories/quarantine/index.d.ts.map +1 -0
  103. package/dist/src/repositories/quarantine/index.js +10 -0
  104. package/dist/src/repositories/quarantine/index.js.map +1 -0
  105. package/dist/src/repositories/quarantine/queries.d.ts +58 -0
  106. package/dist/src/repositories/quarantine/queries.d.ts.map +1 -0
  107. package/dist/src/repositories/quarantine/queries.js +88 -0
  108. package/dist/src/repositories/quarantine/queries.js.map +1 -0
  109. package/dist/src/repositories/quarantine/query-builder.d.ts +44 -0
  110. package/dist/src/repositories/quarantine/query-builder.d.ts.map +1 -0
  111. package/dist/src/repositories/quarantine/query-builder.js +87 -0
  112. package/dist/src/repositories/quarantine/query-builder.js.map +1 -0
  113. package/dist/src/repositories/quarantine/types.d.ts +155 -0
  114. package/dist/src/repositories/quarantine/types.d.ts.map +1 -0
  115. package/dist/src/repositories/quarantine/types.js +13 -0
  116. package/dist/src/repositories/quarantine/types.js.map +1 -0
  117. package/dist/src/scripts/__tests__/scan-imported-skills.test.d.ts +1 -0
  118. package/dist/src/scripts/__tests__/scan-imported-skills.test.d.ts.map +1 -1
  119. package/dist/src/scripts/__tests__/scan-imported-skills.test.js +7 -43
  120. package/dist/src/scripts/__tests__/scan-imported-skills.test.js.map +1 -1
  121. package/dist/src/scripts/github-import/checkpoint.d.ts +21 -0
  122. package/dist/src/scripts/github-import/checkpoint.d.ts.map +1 -0
  123. package/dist/src/scripts/github-import/checkpoint.js +52 -0
  124. package/dist/src/scripts/github-import/checkpoint.js.map +1 -0
  125. package/dist/src/scripts/github-import/deduplication.d.ts +15 -0
  126. package/dist/src/scripts/github-import/deduplication.d.ts.map +1 -0
  127. package/dist/src/scripts/github-import/deduplication.js +33 -0
  128. package/dist/src/scripts/github-import/deduplication.js.map +1 -0
  129. package/dist/src/scripts/github-import/github-client.d.ts +29 -0
  130. package/dist/src/scripts/github-import/github-client.d.ts.map +1 -0
  131. package/dist/src/scripts/github-import/github-client.js +184 -0
  132. package/dist/src/scripts/github-import/github-client.js.map +1 -0
  133. package/dist/src/scripts/github-import/index.d.ts +29 -0
  134. package/dist/src/scripts/github-import/index.d.ts.map +1 -0
  135. package/dist/src/scripts/github-import/index.js +198 -0
  136. package/dist/src/scripts/github-import/index.js.map +1 -0
  137. package/dist/src/scripts/github-import/output.d.ts +12 -0
  138. package/dist/src/scripts/github-import/output.d.ts.map +1 -0
  139. package/dist/src/scripts/github-import/output.js +34 -0
  140. package/dist/src/scripts/github-import/output.js.map +1 -0
  141. package/dist/src/scripts/github-import/types.d.ts +108 -0
  142. package/dist/src/scripts/github-import/types.d.ts.map +1 -0
  143. package/dist/src/scripts/github-import/types.js +44 -0
  144. package/dist/src/scripts/github-import/types.js.map +1 -0
  145. package/dist/src/scripts/github-import/utils.d.ts +13 -0
  146. package/dist/src/scripts/github-import/utils.d.ts.map +1 -0
  147. package/dist/src/scripts/github-import/utils.js +28 -0
  148. package/dist/src/scripts/github-import/utils.js.map +1 -0
  149. package/dist/src/scripts/import-github-skills.d.ts +3 -12
  150. package/dist/src/scripts/import-github-skills.d.ts.map +1 -1
  151. package/dist/src/scripts/import-github-skills.js +18 -398
  152. package/dist/src/scripts/import-github-skills.js.map +1 -1
  153. package/dist/src/scripts/scan-imported-skills.d.ts +7 -7
  154. package/dist/src/scripts/scan-imported-skills.d.ts.map +1 -1
  155. package/dist/src/scripts/scan-imported-skills.js +8 -397
  156. package/dist/src/scripts/scan-imported-skills.js.map +1 -1
  157. package/dist/src/scripts/skill-scanner/categorizer.d.ts +43 -0
  158. package/dist/src/scripts/skill-scanner/categorizer.d.ts.map +1 -0
  159. package/dist/src/scripts/skill-scanner/categorizer.js +61 -0
  160. package/dist/src/scripts/skill-scanner/categorizer.js.map +1 -0
  161. package/dist/src/scripts/skill-scanner/file-scanner.d.ts +43 -0
  162. package/dist/src/scripts/skill-scanner/file-scanner.d.ts.map +1 -0
  163. package/dist/src/scripts/skill-scanner/file-scanner.js +90 -0
  164. package/dist/src/scripts/skill-scanner/file-scanner.js.map +1 -0
  165. package/dist/src/scripts/skill-scanner/index.d.ts +22 -0
  166. package/dist/src/scripts/skill-scanner/index.d.ts.map +1 -0
  167. package/dist/src/scripts/skill-scanner/index.js +43 -0
  168. package/dist/src/scripts/skill-scanner/index.js.map +1 -0
  169. package/dist/src/scripts/skill-scanner/logger.d.ts +59 -0
  170. package/dist/src/scripts/skill-scanner/logger.d.ts.map +1 -0
  171. package/dist/src/scripts/skill-scanner/logger.js +104 -0
  172. package/dist/src/scripts/skill-scanner/logger.js.map +1 -0
  173. package/dist/src/scripts/skill-scanner/reporter.d.ts +56 -0
  174. package/dist/src/scripts/skill-scanner/reporter.d.ts.map +1 -0
  175. package/dist/src/scripts/skill-scanner/reporter.js +166 -0
  176. package/dist/src/scripts/skill-scanner/reporter.js.map +1 -0
  177. package/dist/src/scripts/skill-scanner/scanner.d.ts +44 -0
  178. package/dist/src/scripts/skill-scanner/scanner.d.ts.map +1 -0
  179. package/dist/src/scripts/skill-scanner/scanner.js +140 -0
  180. package/dist/src/scripts/skill-scanner/scanner.js.map +1 -0
  181. package/dist/src/scripts/skill-scanner/trust-scorer.d.ts +59 -0
  182. package/dist/src/scripts/skill-scanner/trust-scorer.d.ts.map +1 -0
  183. package/dist/src/scripts/skill-scanner/trust-scorer.js +62 -0
  184. package/dist/src/scripts/skill-scanner/trust-scorer.js.map +1 -0
  185. package/dist/src/scripts/skill-scanner/types.d.ts +98 -0
  186. package/dist/src/scripts/skill-scanner/types.d.ts.map +1 -0
  187. package/dist/src/scripts/skill-scanner/types.js +7 -0
  188. package/dist/src/scripts/skill-scanner/types.js.map +1 -0
  189. package/dist/src/scripts/validate-skills.d.ts +3 -172
  190. package/dist/src/scripts/validate-skills.d.ts.map +1 -1
  191. package/dist/src/scripts/validate-skills.js +6 -519
  192. package/dist/src/scripts/validate-skills.js.map +1 -1
  193. package/dist/src/scripts/validation/deduplication.d.ts +23 -0
  194. package/dist/src/scripts/validation/deduplication.d.ts.map +1 -0
  195. package/dist/src/scripts/validation/deduplication.js +127 -0
  196. package/dist/src/scripts/validation/deduplication.js.map +1 -0
  197. package/dist/src/scripts/validation/field-validators.d.ts +9 -0
  198. package/dist/src/scripts/validation/field-validators.d.ts.map +1 -0
  199. package/dist/src/scripts/validation/field-validators.js +135 -0
  200. package/dist/src/scripts/validation/field-validators.js.map +1 -0
  201. package/dist/src/scripts/validation/index.d.ts +29 -0
  202. package/dist/src/scripts/validation/index.d.ts.map +1 -0
  203. package/dist/src/scripts/validation/index.js +84 -0
  204. package/dist/src/scripts/validation/index.js.map +1 -0
  205. package/dist/src/scripts/validation/normalizers.d.ts +29 -0
  206. package/dist/src/scripts/validation/normalizers.d.ts.map +1 -0
  207. package/dist/src/scripts/validation/normalizers.js +79 -0
  208. package/dist/src/scripts/validation/normalizers.js.map +1 -0
  209. package/dist/src/scripts/validation/pipeline.d.ts +13 -0
  210. package/dist/src/scripts/validation/pipeline.d.ts.map +1 -0
  211. package/dist/src/scripts/validation/pipeline.js +126 -0
  212. package/dist/src/scripts/validation/pipeline.js.map +1 -0
  213. package/dist/src/scripts/validation/types.d.ts +128 -0
  214. package/dist/src/scripts/validation/types.d.ts.map +1 -0
  215. package/dist/src/scripts/validation/types.js +43 -0
  216. package/dist/src/scripts/validation/types.js.map +1 -0
  217. package/dist/src/security/index.d.ts +5 -4
  218. package/dist/src/security/index.d.ts.map +1 -1
  219. package/dist/src/security/index.js +8 -2
  220. package/dist/src/security/index.js.map +1 -1
  221. package/dist/src/security/rate-limiter/RateLimiter.d.ts +86 -0
  222. package/dist/src/security/rate-limiter/RateLimiter.d.ts.map +1 -0
  223. package/dist/src/security/rate-limiter/RateLimiter.js +260 -0
  224. package/dist/src/security/rate-limiter/RateLimiter.js.map +1 -0
  225. package/dist/src/security/rate-limiter/constants.d.ts +15 -0
  226. package/dist/src/security/rate-limiter/constants.d.ts.map +1 -0
  227. package/dist/src/security/rate-limiter/constants.js +15 -0
  228. package/dist/src/security/rate-limiter/constants.js.map +1 -0
  229. package/dist/src/security/rate-limiter/errors.d.ts +22 -0
  230. package/dist/src/security/rate-limiter/errors.d.ts.map +1 -0
  231. package/dist/src/security/rate-limiter/errors.js +32 -0
  232. package/dist/src/security/rate-limiter/errors.js.map +1 -0
  233. package/dist/src/security/rate-limiter/index.d.ts +12 -0
  234. package/dist/src/security/rate-limiter/index.d.ts.map +1 -0
  235. package/dist/src/security/rate-limiter/index.js +16 -0
  236. package/dist/src/security/rate-limiter/index.js.map +1 -0
  237. package/dist/src/security/rate-limiter/metrics-manager.d.ts +55 -0
  238. package/dist/src/security/rate-limiter/metrics-manager.d.ts.map +1 -0
  239. package/dist/src/security/rate-limiter/metrics-manager.js +144 -0
  240. package/dist/src/security/rate-limiter/metrics-manager.js.map +1 -0
  241. package/dist/src/security/rate-limiter/presets.d.ts +52 -0
  242. package/dist/src/security/rate-limiter/presets.d.ts.map +1 -0
  243. package/dist/src/security/rate-limiter/presets.js +53 -0
  244. package/dist/src/security/rate-limiter/presets.js.map +1 -0
  245. package/dist/src/security/rate-limiter/queue-manager.d.ts +59 -0
  246. package/dist/src/security/rate-limiter/queue-manager.d.ts.map +1 -0
  247. package/dist/src/security/rate-limiter/queue-manager.js +189 -0
  248. package/dist/src/security/rate-limiter/queue-manager.js.map +1 -0
  249. package/dist/src/security/rate-limiter/storage.d.ts +34 -0
  250. package/dist/src/security/rate-limiter/storage.d.ts.map +1 -0
  251. package/dist/src/security/rate-limiter/storage.js +80 -0
  252. package/dist/src/security/rate-limiter/storage.js.map +1 -0
  253. package/dist/src/security/rate-limiter/token-bucket.d.ts +44 -0
  254. package/dist/src/security/rate-limiter/token-bucket.d.ts.map +1 -0
  255. package/dist/src/security/rate-limiter/token-bucket.js +99 -0
  256. package/dist/src/security/rate-limiter/token-bucket.js.map +1 -0
  257. package/dist/src/security/rate-limiter/types.d.ts +104 -0
  258. package/dist/src/security/rate-limiter/types.d.ts.map +1 -0
  259. package/dist/src/security/rate-limiter/types.js +7 -0
  260. package/dist/src/security/rate-limiter/types.js.map +1 -0
  261. package/dist/src/security/scanner/SecurityScanner.d.ts +94 -0
  262. package/dist/src/security/scanner/SecurityScanner.d.ts.map +1 -0
  263. package/dist/src/security/scanner/SecurityScanner.js +403 -0
  264. package/dist/src/security/scanner/SecurityScanner.js.map +1 -0
  265. package/dist/src/security/scanner/index.d.ts +11 -0
  266. package/dist/src/security/scanner/index.d.ts.map +1 -0
  267. package/dist/src/security/scanner/index.js +14 -0
  268. package/dist/src/security/scanner/index.js.map +1 -0
  269. package/dist/src/security/scanner/patterns.d.ts +14 -0
  270. package/dist/src/security/scanner/patterns.d.ts.map +1 -0
  271. package/dist/src/security/scanner/patterns.js +147 -0
  272. package/dist/src/security/scanner/patterns.js.map +1 -0
  273. package/dist/src/security/scanner/regex-utils.d.ts +33 -0
  274. package/dist/src/security/scanner/regex-utils.d.ts.map +1 -0
  275. package/dist/src/security/scanner/regex-utils.js +41 -0
  276. package/dist/src/security/scanner/regex-utils.js.map +1 -0
  277. package/dist/src/security/scanner/types.d.ts +63 -0
  278. package/dist/src/security/scanner/types.d.ts.map +1 -0
  279. package/dist/src/security/scanner/types.js +7 -0
  280. package/dist/src/security/scanner/types.js.map +1 -0
  281. package/dist/src/security/scanner/weights.d.ts +15 -0
  282. package/dist/src/security/scanner/weights.d.ts.map +1 -0
  283. package/dist/src/security/scanner/weights.js +28 -0
  284. package/dist/src/security/scanner/weights.js.map +1 -0
  285. package/dist/src/session/SessionHealthMonitor.d.ts +5 -168
  286. package/dist/src/session/SessionHealthMonitor.d.ts.map +1 -1
  287. package/dist/src/session/SessionHealthMonitor.js +22 -91
  288. package/dist/src/session/SessionHealthMonitor.js.map +1 -1
  289. package/dist/src/session/health-checks.d.ts +37 -0
  290. package/dist/src/session/health-checks.d.ts.map +1 -0
  291. package/dist/src/session/health-checks.js +64 -0
  292. package/dist/src/session/health-checks.js.map +1 -0
  293. package/dist/src/session/health-types.d.ts +78 -0
  294. package/dist/src/session/health-types.d.ts.map +1 -0
  295. package/dist/src/session/health-types.js +16 -0
  296. package/dist/src/session/health-types.js.map +1 -0
  297. package/dist/src/session/index.d.ts +5 -1
  298. package/dist/src/session/index.d.ts.map +1 -1
  299. package/dist/src/session/index.js +9 -0
  300. package/dist/src/session/index.js.map +1 -1
  301. package/dist/src/session/metrics-collector.d.ts +23 -0
  302. package/dist/src/session/metrics-collector.d.ts.map +1 -0
  303. package/dist/src/session/metrics-collector.js +44 -0
  304. package/dist/src/session/metrics-collector.js.map +1 -0
  305. package/dist/src/session/typed-event-emitter.d.ts +70 -0
  306. package/dist/src/session/typed-event-emitter.d.ts.map +1 -0
  307. package/dist/src/session/typed-event-emitter.js +79 -0
  308. package/dist/src/session/typed-event-emitter.js.map +1 -0
  309. package/dist/src/sources/BaseSourceAdapter.d.ts +1 -1
  310. package/dist/src/sources/BaseSourceAdapter.d.ts.map +1 -1
  311. package/dist/src/sources/BaseSourceAdapter.js +2 -2
  312. package/dist/src/sources/BaseSourceAdapter.js.map +1 -1
  313. package/dist/src/telemetry/index.d.ts +1 -0
  314. package/dist/src/telemetry/index.d.ts.map +1 -1
  315. package/dist/src/telemetry/index.js +2 -0
  316. package/dist/src/telemetry/index.js.map +1 -1
  317. package/dist/src/telemetry/posthog.d.ts +125 -0
  318. package/dist/src/telemetry/posthog.d.ts.map +1 -0
  319. package/dist/src/telemetry/posthog.js +198 -0
  320. package/dist/src/telemetry/posthog.js.map +1 -0
  321. package/dist/tests/RateLimiter.test.js +4 -4
  322. package/dist/tests/RateLimiter.test.js.map +1 -1
  323. package/dist/tests/e2e/security/security.e2e.test.js +3 -3
  324. package/dist/tests/e2e/security/security.e2e.test.js.map +1 -1
  325. 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
- * Searches GitHub for Claude-related skills using multiple query strategies:
5
- * - topic:claude-skill
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;;;;;;;;;;;;;;;;;;;;;GAqBG"}
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
- * Searches GitHub for Claude-related skills using multiple query strategies:
5
- * - topic:claude-skill
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
- import * as fs from 'fs';
24
- import * as path from 'path';
25
- import { createHash } from 'crypto';
26
- const CONFIG = {
27
- GITHUB_TOKEN: process.env.GITHUB_TOKEN,
28
- GITHUB_API_URL: 'https://api.github.com',
29
- PER_PAGE: 100,
30
- MAX_RESULTS_PER_QUERY: 1000,
31
- RATE_LIMIT_DELAY: 150,
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
- // Run the import
541
- main().catch((error) => {
542
- log(`Fatal error: ${error}`, 'error');
543
- process.exit(1);
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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"}