@skillsmith/core 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (686) hide show
  1. package/dist/.tsbuildinfo +1 -0
  2. package/dist/src/__tests__/errors.test.d.ts +5 -0
  3. package/dist/src/__tests__/errors.test.d.ts.map +1 -0
  4. package/dist/src/__tests__/errors.test.js +115 -0
  5. package/dist/src/__tests__/errors.test.js.map +1 -0
  6. package/dist/src/activation/ActivationManager.d.ts +141 -0
  7. package/dist/src/activation/ActivationManager.d.ts.map +1 -0
  8. package/dist/src/activation/ActivationManager.js +282 -0
  9. package/dist/src/activation/ActivationManager.js.map +1 -0
  10. package/dist/src/activation/ZeroConfigActivator.d.ts +126 -0
  11. package/dist/src/activation/ZeroConfigActivator.d.ts.map +1 -0
  12. package/dist/src/activation/ZeroConfigActivator.js +259 -0
  13. package/dist/src/activation/ZeroConfigActivator.js.map +1 -0
  14. package/dist/src/activation/index.d.ts +8 -0
  15. package/dist/src/activation/index.d.ts.map +1 -0
  16. package/dist/src/activation/index.js +8 -0
  17. package/dist/src/activation/index.js.map +1 -0
  18. package/dist/src/analysis/CodebaseAnalyzer.d.ts +175 -0
  19. package/dist/src/analysis/CodebaseAnalyzer.d.ts.map +1 -0
  20. package/dist/src/analysis/CodebaseAnalyzer.js +495 -0
  21. package/dist/src/analysis/CodebaseAnalyzer.js.map +1 -0
  22. package/dist/src/analysis/index.d.ts +10 -0
  23. package/dist/src/analysis/index.d.ts.map +1 -0
  24. package/dist/src/analysis/index.js +10 -0
  25. package/dist/src/analysis/index.js.map +1 -0
  26. package/dist/src/analytics/AnalyticsRepository.d.ts +97 -0
  27. package/dist/src/analytics/AnalyticsRepository.d.ts.map +1 -0
  28. package/dist/src/analytics/AnalyticsRepository.js +376 -0
  29. package/dist/src/analytics/AnalyticsRepository.js.map +1 -0
  30. package/dist/src/analytics/ExperimentService.d.ts +70 -0
  31. package/dist/src/analytics/ExperimentService.d.ts.map +1 -0
  32. package/dist/src/analytics/ExperimentService.js +251 -0
  33. package/dist/src/analytics/ExperimentService.js.map +1 -0
  34. package/dist/src/analytics/ROIDashboardService.d.ts +55 -0
  35. package/dist/src/analytics/ROIDashboardService.d.ts.map +1 -0
  36. package/dist/src/analytics/ROIDashboardService.js +304 -0
  37. package/dist/src/analytics/ROIDashboardService.js.map +1 -0
  38. package/dist/src/analytics/UsageAnalyticsService.d.ts +55 -0
  39. package/dist/src/analytics/UsageAnalyticsService.d.ts.map +1 -0
  40. package/dist/src/analytics/UsageAnalyticsService.js +180 -0
  41. package/dist/src/analytics/UsageAnalyticsService.js.map +1 -0
  42. package/dist/src/analytics/anonymizer.d.ts +53 -0
  43. package/dist/src/analytics/anonymizer.d.ts.map +1 -0
  44. package/dist/src/analytics/anonymizer.js +107 -0
  45. package/dist/src/analytics/anonymizer.js.map +1 -0
  46. package/dist/src/analytics/constants.d.ts +19 -0
  47. package/dist/src/analytics/constants.d.ts.map +1 -0
  48. package/dist/src/analytics/constants.js +19 -0
  49. package/dist/src/analytics/constants.js.map +1 -0
  50. package/dist/src/analytics/index.d.ts +23 -0
  51. package/dist/src/analytics/index.d.ts.map +1 -0
  52. package/dist/src/analytics/index.js +23 -0
  53. package/dist/src/analytics/index.js.map +1 -0
  54. package/dist/src/analytics/metrics-aggregator.d.ts +98 -0
  55. package/dist/src/analytics/metrics-aggregator.d.ts.map +1 -0
  56. package/dist/src/analytics/metrics-aggregator.js +176 -0
  57. package/dist/src/analytics/metrics-aggregator.js.map +1 -0
  58. package/dist/src/analytics/metrics-exporter.d.ts +148 -0
  59. package/dist/src/analytics/metrics-exporter.d.ts.map +1 -0
  60. package/dist/src/analytics/metrics-exporter.js +244 -0
  61. package/dist/src/analytics/metrics-exporter.js.map +1 -0
  62. package/dist/src/analytics/schema.d.ts +20 -0
  63. package/dist/src/analytics/schema.d.ts.map +1 -0
  64. package/dist/src/analytics/schema.js +125 -0
  65. package/dist/src/analytics/schema.js.map +1 -0
  66. package/dist/src/analytics/storage.d.ts +76 -0
  67. package/dist/src/analytics/storage.d.ts.map +1 -0
  68. package/dist/src/analytics/storage.js +180 -0
  69. package/dist/src/analytics/storage.js.map +1 -0
  70. package/dist/src/analytics/types.d.ts +277 -0
  71. package/dist/src/analytics/types.d.ts.map +1 -0
  72. package/dist/src/analytics/types.js +10 -0
  73. package/dist/src/analytics/types.js.map +1 -0
  74. package/dist/src/analytics/usage-tracker.d.ts +132 -0
  75. package/dist/src/analytics/usage-tracker.d.ts.map +1 -0
  76. package/dist/src/analytics/usage-tracker.js +213 -0
  77. package/dist/src/analytics/usage-tracker.js.map +1 -0
  78. package/dist/src/benchmarks/BenchmarkRunner.d.ts +258 -0
  79. package/dist/src/benchmarks/BenchmarkRunner.d.ts.map +1 -0
  80. package/dist/src/benchmarks/BenchmarkRunner.js +453 -0
  81. package/dist/src/benchmarks/BenchmarkRunner.js.map +1 -0
  82. package/dist/src/benchmarks/IndexBenchmark.d.ts +101 -0
  83. package/dist/src/benchmarks/IndexBenchmark.d.ts.map +1 -0
  84. package/dist/src/benchmarks/IndexBenchmark.js +314 -0
  85. package/dist/src/benchmarks/IndexBenchmark.js.map +1 -0
  86. package/dist/src/benchmarks/MemoryProfiler.d.ts +266 -0
  87. package/dist/src/benchmarks/MemoryProfiler.d.ts.map +1 -0
  88. package/dist/src/benchmarks/MemoryProfiler.js +404 -0
  89. package/dist/src/benchmarks/MemoryProfiler.js.map +1 -0
  90. package/dist/src/benchmarks/SearchBenchmark.d.ts +71 -0
  91. package/dist/src/benchmarks/SearchBenchmark.d.ts.map +1 -0
  92. package/dist/src/benchmarks/SearchBenchmark.js +321 -0
  93. package/dist/src/benchmarks/SearchBenchmark.js.map +1 -0
  94. package/dist/src/benchmarks/cacheBenchmark.d.ts +75 -0
  95. package/dist/src/benchmarks/cacheBenchmark.d.ts.map +1 -0
  96. package/dist/src/benchmarks/cacheBenchmark.js +325 -0
  97. package/dist/src/benchmarks/cacheBenchmark.js.map +1 -0
  98. package/dist/src/benchmarks/cli.d.ts +17 -0
  99. package/dist/src/benchmarks/cli.d.ts.map +1 -0
  100. package/dist/src/benchmarks/cli.js +140 -0
  101. package/dist/src/benchmarks/cli.js.map +1 -0
  102. package/dist/src/benchmarks/embeddingBenchmark.d.ts +86 -0
  103. package/dist/src/benchmarks/embeddingBenchmark.d.ts.map +1 -0
  104. package/dist/src/benchmarks/embeddingBenchmark.js +329 -0
  105. package/dist/src/benchmarks/embeddingBenchmark.js.map +1 -0
  106. package/dist/src/benchmarks/index.d.ts +51 -0
  107. package/dist/src/benchmarks/index.d.ts.map +1 -0
  108. package/dist/src/benchmarks/index.js +201 -0
  109. package/dist/src/benchmarks/index.js.map +1 -0
  110. package/dist/src/benchmarks/stats.d.ts +56 -0
  111. package/dist/src/benchmarks/stats.d.ts.map +1 -0
  112. package/dist/src/benchmarks/stats.js +86 -0
  113. package/dist/src/benchmarks/stats.js.map +1 -0
  114. package/dist/src/cache/CacheEntry.d.ts +101 -0
  115. package/dist/src/cache/CacheEntry.d.ts.map +1 -0
  116. package/dist/src/cache/CacheEntry.js +238 -0
  117. package/dist/src/cache/CacheEntry.js.map +1 -0
  118. package/dist/src/cache/CacheManager.d.ts +167 -0
  119. package/dist/src/cache/CacheManager.d.ts.map +1 -0
  120. package/dist/src/cache/CacheManager.js +346 -0
  121. package/dist/src/cache/CacheManager.js.map +1 -0
  122. package/dist/src/cache/TieredCache.d.ts +97 -0
  123. package/dist/src/cache/TieredCache.d.ts.map +1 -0
  124. package/dist/src/cache/TieredCache.js +352 -0
  125. package/dist/src/cache/TieredCache.js.map +1 -0
  126. package/dist/src/cache/index.d.ts +63 -0
  127. package/dist/src/cache/index.d.ts.map +1 -0
  128. package/dist/src/cache/index.js +91 -0
  129. package/dist/src/cache/index.js.map +1 -0
  130. package/dist/src/cache/lru.d.ts +68 -0
  131. package/dist/src/cache/lru.d.ts.map +1 -0
  132. package/dist/src/cache/lru.js +105 -0
  133. package/dist/src/cache/lru.js.map +1 -0
  134. package/dist/src/cache/sqlite.d.ts +59 -0
  135. package/dist/src/cache/sqlite.d.ts.map +1 -0
  136. package/dist/src/cache/sqlite.js +159 -0
  137. package/dist/src/cache/sqlite.js.map +1 -0
  138. package/dist/src/db/quarantine-schema.d.ts +81 -0
  139. package/dist/src/db/quarantine-schema.d.ts.map +1 -0
  140. package/dist/src/db/quarantine-schema.js +110 -0
  141. package/dist/src/db/quarantine-schema.js.map +1 -0
  142. package/dist/src/db/schema.d.ts +65 -0
  143. package/dist/src/db/schema.d.ts.map +1 -0
  144. package/dist/src/db/schema.js +318 -0
  145. package/dist/src/db/schema.js.map +1 -0
  146. package/dist/src/embeddings/index.d.ts +158 -0
  147. package/dist/src/embeddings/index.d.ts.map +1 -0
  148. package/dist/src/embeddings/index.js +397 -0
  149. package/dist/src/embeddings/index.js.map +1 -0
  150. package/dist/src/errors/SkillsmithError.d.ts +118 -0
  151. package/dist/src/errors/SkillsmithError.d.ts.map +1 -0
  152. package/dist/src/errors/SkillsmithError.js +194 -0
  153. package/dist/src/errors/SkillsmithError.js.map +1 -0
  154. package/dist/src/errors/index.d.ts +36 -0
  155. package/dist/src/errors/index.d.ts.map +1 -0
  156. package/dist/src/errors/index.js +36 -0
  157. package/dist/src/errors/index.js.map +1 -0
  158. package/dist/src/errors.d.ts +72 -0
  159. package/dist/src/errors.d.ts.map +1 -0
  160. package/dist/src/errors.js +123 -0
  161. package/dist/src/errors.js.map +1 -0
  162. package/dist/src/index.d.ts +56 -0
  163. package/dist/src/index.d.ts.map +1 -0
  164. package/dist/src/index.js +73 -0
  165. package/dist/src/index.js.map +1 -0
  166. package/dist/src/index.test.d.ts +2 -0
  167. package/dist/src/index.test.d.ts.map +1 -0
  168. package/dist/src/index.test.js +35 -0
  169. package/dist/src/index.test.js.map +1 -0
  170. package/dist/src/indexer/GitHubIndexer.d.ts +107 -0
  171. package/dist/src/indexer/GitHubIndexer.d.ts.map +1 -0
  172. package/dist/src/indexer/GitHubIndexer.js +202 -0
  173. package/dist/src/indexer/GitHubIndexer.js.map +1 -0
  174. package/dist/src/indexer/PartitionStrategy.d.ts +115 -0
  175. package/dist/src/indexer/PartitionStrategy.d.ts.map +1 -0
  176. package/dist/src/indexer/PartitionStrategy.js +207 -0
  177. package/dist/src/indexer/PartitionStrategy.js.map +1 -0
  178. package/dist/src/indexer/SkillParser.d.ts +112 -0
  179. package/dist/src/indexer/SkillParser.d.ts.map +1 -0
  180. package/dist/src/indexer/SkillParser.js +281 -0
  181. package/dist/src/indexer/SkillParser.js.map +1 -0
  182. package/dist/src/indexer/SwarmIndexer.d.ts +163 -0
  183. package/dist/src/indexer/SwarmIndexer.d.ts.map +1 -0
  184. package/dist/src/indexer/SwarmIndexer.js +300 -0
  185. package/dist/src/indexer/SwarmIndexer.js.map +1 -0
  186. package/dist/src/indexer/index.d.ts +12 -0
  187. package/dist/src/indexer/index.d.ts.map +1 -0
  188. package/dist/src/indexer/index.js +16 -0
  189. package/dist/src/indexer/index.js.map +1 -0
  190. package/dist/src/learning/interfaces.d.ts +338 -0
  191. package/dist/src/learning/interfaces.d.ts.map +1 -0
  192. package/dist/src/learning/interfaces.js +13 -0
  193. package/dist/src/learning/interfaces.js.map +1 -0
  194. package/dist/src/learning/types.d.ts +284 -0
  195. package/dist/src/learning/types.d.ts.map +1 -0
  196. package/dist/src/learning/types.js +112 -0
  197. package/dist/src/learning/types.js.map +1 -0
  198. package/dist/src/matching/OverlapDetector.d.ts +152 -0
  199. package/dist/src/matching/OverlapDetector.d.ts.map +1 -0
  200. package/dist/src/matching/OverlapDetector.js +218 -0
  201. package/dist/src/matching/OverlapDetector.js.map +1 -0
  202. package/dist/src/matching/SkillMatcher.d.ts +125 -0
  203. package/dist/src/matching/SkillMatcher.d.ts.map +1 -0
  204. package/dist/src/matching/SkillMatcher.js +206 -0
  205. package/dist/src/matching/SkillMatcher.js.map +1 -0
  206. package/dist/src/matching/index.d.ts +14 -0
  207. package/dist/src/matching/index.d.ts.map +1 -0
  208. package/dist/src/matching/index.js +12 -0
  209. package/dist/src/matching/index.js.map +1 -0
  210. package/dist/src/pipeline/DailyIndexPipeline.d.ts +220 -0
  211. package/dist/src/pipeline/DailyIndexPipeline.d.ts.map +1 -0
  212. package/dist/src/pipeline/DailyIndexPipeline.js +320 -0
  213. package/dist/src/pipeline/DailyIndexPipeline.js.map +1 -0
  214. package/dist/src/pipeline/index.d.ts +9 -0
  215. package/dist/src/pipeline/index.d.ts.map +1 -0
  216. package/dist/src/pipeline/index.js +9 -0
  217. package/dist/src/pipeline/index.js.map +1 -0
  218. package/dist/src/repositories/CacheRepository.d.ts +60 -0
  219. package/dist/src/repositories/CacheRepository.d.ts.map +1 -0
  220. package/dist/src/repositories/CacheRepository.js +148 -0
  221. package/dist/src/repositories/CacheRepository.js.map +1 -0
  222. package/dist/src/repositories/IndexerRepository.d.ts +126 -0
  223. package/dist/src/repositories/IndexerRepository.d.ts.map +1 -0
  224. package/dist/src/repositories/IndexerRepository.js +270 -0
  225. package/dist/src/repositories/IndexerRepository.js.map +1 -0
  226. package/dist/src/repositories/QuarantineRepository.d.ts +255 -0
  227. package/dist/src/repositories/QuarantineRepository.d.ts.map +1 -0
  228. package/dist/src/repositories/QuarantineRepository.js +445 -0
  229. package/dist/src/repositories/QuarantineRepository.js.map +1 -0
  230. package/dist/src/repositories/SkillRepository.d.ts +78 -0
  231. package/dist/src/repositories/SkillRepository.d.ts.map +1 -0
  232. package/dist/src/repositories/SkillRepository.js +208 -0
  233. package/dist/src/repositories/SkillRepository.js.map +1 -0
  234. package/dist/src/scoring/QualityScorer.d.ts +188 -0
  235. package/dist/src/scoring/QualityScorer.d.ts.map +1 -0
  236. package/dist/src/scoring/QualityScorer.js +342 -0
  237. package/dist/src/scoring/QualityScorer.js.map +1 -0
  238. package/dist/src/scoring/index.d.ts +9 -0
  239. package/dist/src/scoring/index.d.ts.map +1 -0
  240. package/dist/src/scoring/index.js +9 -0
  241. package/dist/src/scoring/index.js.map +1 -0
  242. package/dist/src/scripts/__tests__/scan-imported-skills.test.d.ts +5 -0
  243. package/dist/src/scripts/__tests__/scan-imported-skills.test.d.ts.map +1 -0
  244. package/dist/src/scripts/__tests__/scan-imported-skills.test.js +365 -0
  245. package/dist/src/scripts/__tests__/scan-imported-skills.test.js.map +1 -0
  246. package/dist/src/scripts/import-github-skills.d.ts +24 -0
  247. package/dist/src/scripts/import-github-skills.d.ts.map +1 -0
  248. package/dist/src/scripts/import-github-skills.js +545 -0
  249. package/dist/src/scripts/import-github-skills.js.map +1 -0
  250. package/dist/src/scripts/import-to-database.d.ts +60 -0
  251. package/dist/src/scripts/import-to-database.d.ts.map +1 -0
  252. package/dist/src/scripts/import-to-database.js +307 -0
  253. package/dist/src/scripts/import-to-database.js.map +1 -0
  254. package/dist/src/scripts/scan-imported-skills.d.ts +15 -0
  255. package/dist/src/scripts/scan-imported-skills.d.ts.map +1 -0
  256. package/dist/src/scripts/scan-imported-skills.js +405 -0
  257. package/dist/src/scripts/scan-imported-skills.js.map +1 -0
  258. package/dist/src/scripts/validate-skills.d.ts +180 -0
  259. package/dist/src/scripts/validate-skills.d.ts.map +1 -0
  260. package/dist/src/scripts/validate-skills.js +572 -0
  261. package/dist/src/scripts/validate-skills.js.map +1 -0
  262. package/dist/src/search/hybrid.d.ts +85 -0
  263. package/dist/src/search/hybrid.d.ts.map +1 -0
  264. package/dist/src/search/hybrid.js +291 -0
  265. package/dist/src/search/hybrid.js.map +1 -0
  266. package/dist/src/search/index.d.ts +6 -0
  267. package/dist/src/search/index.d.ts.map +1 -0
  268. package/dist/src/search/index.js +5 -0
  269. package/dist/src/search/index.js.map +1 -0
  270. package/dist/src/security/AuditLogger.d.ts +197 -0
  271. package/dist/src/security/AuditLogger.d.ts.map +1 -0
  272. package/dist/src/security/AuditLogger.js +398 -0
  273. package/dist/src/security/AuditLogger.js.map +1 -0
  274. package/dist/src/security/RateLimiter.d.ts +337 -0
  275. package/dist/src/security/RateLimiter.d.ts.map +1 -0
  276. package/dist/src/security/RateLimiter.js +782 -0
  277. package/dist/src/security/RateLimiter.js.map +1 -0
  278. package/dist/src/security/__tests__/pathValidation.test.d.ts +8 -0
  279. package/dist/src/security/__tests__/pathValidation.test.d.ts.map +1 -0
  280. package/dist/src/security/__tests__/pathValidation.test.js +249 -0
  281. package/dist/src/security/__tests__/pathValidation.test.js.map +1 -0
  282. package/dist/src/security/index.d.ts +18 -0
  283. package/dist/src/security/index.d.ts.map +1 -0
  284. package/dist/src/security/index.js +14 -0
  285. package/dist/src/security/index.js.map +1 -0
  286. package/dist/src/security/pathValidation.d.ts +95 -0
  287. package/dist/src/security/pathValidation.d.ts.map +1 -0
  288. package/dist/src/security/pathValidation.js +216 -0
  289. package/dist/src/security/pathValidation.js.map +1 -0
  290. package/dist/src/security/sanitization.d.ts +123 -0
  291. package/dist/src/security/sanitization.d.ts.map +1 -0
  292. package/dist/src/security/sanitization.js +378 -0
  293. package/dist/src/security/sanitization.js.map +1 -0
  294. package/dist/src/security/scanner.d.ts +151 -0
  295. package/dist/src/security/scanner.d.ts.map +1 -0
  296. package/dist/src/security/scanner.js +599 -0
  297. package/dist/src/security/scanner.js.map +1 -0
  298. package/dist/src/services/SearchService.d.ts +88 -0
  299. package/dist/src/services/SearchService.d.ts.map +1 -0
  300. package/dist/src/services/SearchService.js +305 -0
  301. package/dist/src/services/SearchService.js.map +1 -0
  302. package/dist/src/session/SessionContext.d.ts +116 -0
  303. package/dist/src/session/SessionContext.d.ts.map +1 -0
  304. package/dist/src/session/SessionContext.js +134 -0
  305. package/dist/src/session/SessionContext.js.map +1 -0
  306. package/dist/src/session/SessionHealthMonitor.d.ts +249 -0
  307. package/dist/src/session/SessionHealthMonitor.d.ts.map +1 -0
  308. package/dist/src/session/SessionHealthMonitor.js +302 -0
  309. package/dist/src/session/SessionHealthMonitor.js.map +1 -0
  310. package/dist/src/session/SessionManager.d.ts +179 -0
  311. package/dist/src/session/SessionManager.d.ts.map +1 -0
  312. package/dist/src/session/SessionManager.js +451 -0
  313. package/dist/src/session/SessionManager.js.map +1 -0
  314. package/dist/src/session/SessionRecovery.d.ts +84 -0
  315. package/dist/src/session/SessionRecovery.d.ts.map +1 -0
  316. package/dist/src/session/SessionRecovery.js +257 -0
  317. package/dist/src/session/SessionRecovery.js.map +1 -0
  318. package/dist/src/session/index.d.ts +40 -0
  319. package/dist/src/session/index.d.ts.map +1 -0
  320. package/dist/src/session/index.js +44 -0
  321. package/dist/src/session/index.js.map +1 -0
  322. package/dist/src/sources/BaseSourceAdapter.d.ts +144 -0
  323. package/dist/src/sources/BaseSourceAdapter.d.ts.map +1 -0
  324. package/dist/src/sources/BaseSourceAdapter.js +287 -0
  325. package/dist/src/sources/BaseSourceAdapter.js.map +1 -0
  326. package/dist/src/sources/GitHubSourceAdapter.d.ts +98 -0
  327. package/dist/src/sources/GitHubSourceAdapter.d.ts.map +1 -0
  328. package/dist/src/sources/GitHubSourceAdapter.js +269 -0
  329. package/dist/src/sources/GitHubSourceAdapter.js.map +1 -0
  330. package/dist/src/sources/GitLabSourceAdapter.d.ts +102 -0
  331. package/dist/src/sources/GitLabSourceAdapter.d.ts.map +1 -0
  332. package/dist/src/sources/GitLabSourceAdapter.js +310 -0
  333. package/dist/src/sources/GitLabSourceAdapter.js.map +1 -0
  334. package/dist/src/sources/ISourceAdapter.d.ts +110 -0
  335. package/dist/src/sources/ISourceAdapter.d.ts.map +1 -0
  336. package/dist/src/sources/ISourceAdapter.js +19 -0
  337. package/dist/src/sources/ISourceAdapter.js.map +1 -0
  338. package/dist/src/sources/LocalFilesystemAdapter.d.ts +112 -0
  339. package/dist/src/sources/LocalFilesystemAdapter.d.ts.map +1 -0
  340. package/dist/src/sources/LocalFilesystemAdapter.js +340 -0
  341. package/dist/src/sources/LocalFilesystemAdapter.js.map +1 -0
  342. package/dist/src/sources/RawUrlSourceAdapter.d.ts +128 -0
  343. package/dist/src/sources/RawUrlSourceAdapter.d.ts.map +1 -0
  344. package/dist/src/sources/RawUrlSourceAdapter.js +282 -0
  345. package/dist/src/sources/RawUrlSourceAdapter.js.map +1 -0
  346. package/dist/src/sources/SourceAdapterRegistry.d.ts +156 -0
  347. package/dist/src/sources/SourceAdapterRegistry.d.ts.map +1 -0
  348. package/dist/src/sources/SourceAdapterRegistry.js +242 -0
  349. package/dist/src/sources/SourceAdapterRegistry.js.map +1 -0
  350. package/dist/src/sources/SourceIndexer.d.ts +119 -0
  351. package/dist/src/sources/SourceIndexer.d.ts.map +1 -0
  352. package/dist/src/sources/SourceIndexer.js +285 -0
  353. package/dist/src/sources/SourceIndexer.js.map +1 -0
  354. package/dist/src/sources/index.d.ts +45 -0
  355. package/dist/src/sources/index.d.ts.map +1 -0
  356. package/dist/src/sources/index.js +51 -0
  357. package/dist/src/sources/index.js.map +1 -0
  358. package/dist/src/sources/shared.d.ts +125 -0
  359. package/dist/src/sources/shared.d.ts.map +1 -0
  360. package/dist/src/sources/shared.js +191 -0
  361. package/dist/src/sources/shared.js.map +1 -0
  362. package/dist/src/sources/types.d.ts +204 -0
  363. package/dist/src/sources/types.d.ts.map +1 -0
  364. package/dist/src/sources/types.js +6 -0
  365. package/dist/src/sources/types.js.map +1 -0
  366. package/dist/src/telemetry/index.d.ts +25 -0
  367. package/dist/src/telemetry/index.d.ts.map +1 -0
  368. package/dist/src/telemetry/index.js +32 -0
  369. package/dist/src/telemetry/index.js.map +1 -0
  370. package/dist/src/telemetry/metrics.d.ts +171 -0
  371. package/dist/src/telemetry/metrics.d.ts.map +1 -0
  372. package/dist/src/telemetry/metrics.js +401 -0
  373. package/dist/src/telemetry/metrics.js.map +1 -0
  374. package/dist/src/telemetry/prometheus.d.ts +81 -0
  375. package/dist/src/telemetry/prometheus.d.ts.map +1 -0
  376. package/dist/src/telemetry/prometheus.js +252 -0
  377. package/dist/src/telemetry/prometheus.js.map +1 -0
  378. package/dist/src/telemetry/tracer.d.ts +151 -0
  379. package/dist/src/telemetry/tracer.d.ts.map +1 -0
  380. package/dist/src/telemetry/tracer.js +391 -0
  381. package/dist/src/telemetry/tracer.js.map +1 -0
  382. package/dist/src/triggers/ContextScorer.d.ts +118 -0
  383. package/dist/src/triggers/ContextScorer.d.ts.map +1 -0
  384. package/dist/src/triggers/ContextScorer.js +265 -0
  385. package/dist/src/triggers/ContextScorer.js.map +1 -0
  386. package/dist/src/triggers/TriggerDetector.d.ts +178 -0
  387. package/dist/src/triggers/TriggerDetector.d.ts.map +1 -0
  388. package/dist/src/triggers/TriggerDetector.js +390 -0
  389. package/dist/src/triggers/TriggerDetector.js.map +1 -0
  390. package/dist/src/triggers/__tests__/ContextScorer.test.d.ts +6 -0
  391. package/dist/src/triggers/__tests__/ContextScorer.test.d.ts.map +1 -0
  392. package/dist/src/triggers/__tests__/ContextScorer.test.js +307 -0
  393. package/dist/src/triggers/__tests__/ContextScorer.test.js.map +1 -0
  394. package/dist/src/triggers/__tests__/TriggerDetector.test.d.ts +6 -0
  395. package/dist/src/triggers/__tests__/TriggerDetector.test.d.ts.map +1 -0
  396. package/dist/src/triggers/__tests__/TriggerDetector.test.js +249 -0
  397. package/dist/src/triggers/__tests__/TriggerDetector.test.js.map +1 -0
  398. package/dist/src/triggers/index.d.ts +8 -0
  399. package/dist/src/triggers/index.d.ts.map +1 -0
  400. package/dist/src/triggers/index.js +8 -0
  401. package/dist/src/triggers/index.js.map +1 -0
  402. package/dist/src/types/skill.d.ts +80 -0
  403. package/dist/src/types/skill.d.ts.map +1 -0
  404. package/dist/src/types/skill.js +5 -0
  405. package/dist/src/types/skill.js.map +1 -0
  406. package/dist/src/types.d.ts +88 -0
  407. package/dist/src/types.d.ts.map +1 -0
  408. package/dist/src/types.js +13 -0
  409. package/dist/src/types.js.map +1 -0
  410. package/dist/src/utils/index.d.ts +6 -0
  411. package/dist/src/utils/index.d.ts.map +1 -0
  412. package/dist/src/utils/index.js +6 -0
  413. package/dist/src/utils/index.js.map +1 -0
  414. package/dist/src/utils/logger.d.ts +172 -0
  415. package/dist/src/utils/logger.d.ts.map +1 -0
  416. package/dist/src/utils/logger.js +291 -0
  417. package/dist/src/utils/logger.js.map +1 -0
  418. package/dist/src/utils/retry.d.ts +97 -0
  419. package/dist/src/utils/retry.d.ts.map +1 -0
  420. package/dist/src/utils/retry.js +267 -0
  421. package/dist/src/utils/retry.js.map +1 -0
  422. package/dist/src/validation/index.d.ts +118 -0
  423. package/dist/src/validation/index.d.ts.map +1 -0
  424. package/dist/src/validation/index.js +434 -0
  425. package/dist/src/validation/index.js.map +1 -0
  426. package/dist/src/webhooks/WebhookHandler.d.ts +117 -0
  427. package/dist/src/webhooks/WebhookHandler.d.ts.map +1 -0
  428. package/dist/src/webhooks/WebhookHandler.js +349 -0
  429. package/dist/src/webhooks/WebhookHandler.js.map +1 -0
  430. package/dist/src/webhooks/WebhookPayload.d.ts +238 -0
  431. package/dist/src/webhooks/WebhookPayload.d.ts.map +1 -0
  432. package/dist/src/webhooks/WebhookPayload.js +244 -0
  433. package/dist/src/webhooks/WebhookPayload.js.map +1 -0
  434. package/dist/src/webhooks/WebhookQueue.d.ts +227 -0
  435. package/dist/src/webhooks/WebhookQueue.d.ts.map +1 -0
  436. package/dist/src/webhooks/WebhookQueue.js +328 -0
  437. package/dist/src/webhooks/WebhookQueue.js.map +1 -0
  438. package/dist/src/webhooks/index.d.ts +12 -0
  439. package/dist/src/webhooks/index.d.ts.map +1 -0
  440. package/dist/src/webhooks/index.js +15 -0
  441. package/dist/src/webhooks/index.js.map +1 -0
  442. package/dist/tests/Analytics.integration.test.d.ts +7 -0
  443. package/dist/tests/Analytics.integration.test.d.ts.map +1 -0
  444. package/dist/tests/Analytics.integration.test.js +367 -0
  445. package/dist/tests/Analytics.integration.test.js.map +1 -0
  446. package/dist/tests/AnalyticsRepository.test.d.ts +8 -0
  447. package/dist/tests/AnalyticsRepository.test.d.ts.map +1 -0
  448. package/dist/tests/AnalyticsRepository.test.js +399 -0
  449. package/dist/tests/AnalyticsRepository.test.js.map +1 -0
  450. package/dist/tests/AnalyticsStorage.test.d.ts +8 -0
  451. package/dist/tests/AnalyticsStorage.test.d.ts.map +1 -0
  452. package/dist/tests/AnalyticsStorage.test.js +271 -0
  453. package/dist/tests/AnalyticsStorage.test.js.map +1 -0
  454. package/dist/tests/AuditLogger.test.d.ts +8 -0
  455. package/dist/tests/AuditLogger.test.d.ts.map +1 -0
  456. package/dist/tests/AuditLogger.test.js +699 -0
  457. package/dist/tests/AuditLogger.test.js.map +1 -0
  458. package/dist/tests/BenchmarkRunner.test.d.ts +11 -0
  459. package/dist/tests/BenchmarkRunner.test.d.ts.map +1 -0
  460. package/dist/tests/BenchmarkRunner.test.js +641 -0
  461. package/dist/tests/BenchmarkRunner.test.js.map +1 -0
  462. package/dist/tests/CacheRepository.test.d.ts +5 -0
  463. package/dist/tests/CacheRepository.test.d.ts.map +1 -0
  464. package/dist/tests/CacheRepository.test.js +184 -0
  465. package/dist/tests/CacheRepository.test.js.map +1 -0
  466. package/dist/tests/CacheSecurity.test.d.ts +8 -0
  467. package/dist/tests/CacheSecurity.test.d.ts.map +1 -0
  468. package/dist/tests/CacheSecurity.test.js +273 -0
  469. package/dist/tests/CacheSecurity.test.js.map +1 -0
  470. package/dist/tests/CodebaseAnalyzer.test.d.ts +2 -0
  471. package/dist/tests/CodebaseAnalyzer.test.d.ts.map +1 -0
  472. package/dist/tests/CodebaseAnalyzer.test.js +347 -0
  473. package/dist/tests/CodebaseAnalyzer.test.js.map +1 -0
  474. package/dist/tests/DailyIndexPipeline.test.d.ts +7 -0
  475. package/dist/tests/DailyIndexPipeline.test.d.ts.map +1 -0
  476. package/dist/tests/DailyIndexPipeline.test.js +539 -0
  477. package/dist/tests/DailyIndexPipeline.test.js.map +1 -0
  478. package/dist/tests/EmbeddingService.test.d.ts +2 -0
  479. package/dist/tests/EmbeddingService.test.d.ts.map +1 -0
  480. package/dist/tests/EmbeddingService.test.js +252 -0
  481. package/dist/tests/EmbeddingService.test.js.map +1 -0
  482. package/dist/tests/ExperimentService.test.d.ts +7 -0
  483. package/dist/tests/ExperimentService.test.d.ts.map +1 -0
  484. package/dist/tests/ExperimentService.test.js +293 -0
  485. package/dist/tests/ExperimentService.test.js.map +1 -0
  486. package/dist/tests/GitHubIndexer.test.d.ts +10 -0
  487. package/dist/tests/GitHubIndexer.test.d.ts.map +1 -0
  488. package/dist/tests/GitHubIndexer.test.js +524 -0
  489. package/dist/tests/GitHubIndexer.test.js.map +1 -0
  490. package/dist/tests/GitHubSourceAdapter.test.d.ts +5 -0
  491. package/dist/tests/GitHubSourceAdapter.test.d.ts.map +1 -0
  492. package/dist/tests/GitHubSourceAdapter.test.js +385 -0
  493. package/dist/tests/GitHubSourceAdapter.test.js.map +1 -0
  494. package/dist/tests/MemoryProfiler.test.d.ts +12 -0
  495. package/dist/tests/MemoryProfiler.test.d.ts.map +1 -0
  496. package/dist/tests/MemoryProfiler.test.js +402 -0
  497. package/dist/tests/MemoryProfiler.test.js.map +1 -0
  498. package/dist/tests/OverlapDetector.test.d.ts +2 -0
  499. package/dist/tests/OverlapDetector.test.d.ts.map +1 -0
  500. package/dist/tests/OverlapDetector.test.js +340 -0
  501. package/dist/tests/OverlapDetector.test.js.map +1 -0
  502. package/dist/tests/QualityScorer.test.d.ts +7 -0
  503. package/dist/tests/QualityScorer.test.d.ts.map +1 -0
  504. package/dist/tests/QualityScorer.test.js +340 -0
  505. package/dist/tests/QualityScorer.test.js.map +1 -0
  506. package/dist/tests/QuarantineRepository.test.d.ts +7 -0
  507. package/dist/tests/QuarantineRepository.test.d.ts.map +1 -0
  508. package/dist/tests/QuarantineRepository.test.js +582 -0
  509. package/dist/tests/QuarantineRepository.test.js.map +1 -0
  510. package/dist/tests/ROIDashboardService.test.d.ts +7 -0
  511. package/dist/tests/ROIDashboardService.test.d.ts.map +1 -0
  512. package/dist/tests/ROIDashboardService.test.js +324 -0
  513. package/dist/tests/ROIDashboardService.test.js.map +1 -0
  514. package/dist/tests/RateLimiter.test.d.ts +7 -0
  515. package/dist/tests/RateLimiter.test.d.ts.map +1 -0
  516. package/dist/tests/RateLimiter.test.js +1017 -0
  517. package/dist/tests/RateLimiter.test.js.map +1 -0
  518. package/dist/tests/RawUrlSourceAdapter.security.test.d.ts +7 -0
  519. package/dist/tests/RawUrlSourceAdapter.security.test.d.ts.map +1 -0
  520. package/dist/tests/RawUrlSourceAdapter.security.test.js +455 -0
  521. package/dist/tests/RawUrlSourceAdapter.security.test.js.map +1 -0
  522. package/dist/tests/ScraperAdapters.test.d.ts +7 -0
  523. package/dist/tests/ScraperAdapters.test.d.ts.map +1 -0
  524. package/dist/tests/ScraperAdapters.test.js +748 -0
  525. package/dist/tests/ScraperAdapters.test.js.map +1 -0
  526. package/dist/tests/SearchQuality.test.d.ts +8 -0
  527. package/dist/tests/SearchQuality.test.d.ts.map +1 -0
  528. package/dist/tests/SearchQuality.test.js +397 -0
  529. package/dist/tests/SearchQuality.test.js.map +1 -0
  530. package/dist/tests/SearchService.test.d.ts +5 -0
  531. package/dist/tests/SearchService.test.d.ts.map +1 -0
  532. package/dist/tests/SearchService.test.js +218 -0
  533. package/dist/tests/SearchService.test.js.map +1 -0
  534. package/dist/tests/SecurityScanner.test.d.ts +6 -0
  535. package/dist/tests/SecurityScanner.test.d.ts.map +1 -0
  536. package/dist/tests/SecurityScanner.test.js +449 -0
  537. package/dist/tests/SecurityScanner.test.js.map +1 -0
  538. package/dist/tests/SessionHealthMonitor.test.d.ts +5 -0
  539. package/dist/tests/SessionHealthMonitor.test.d.ts.map +1 -0
  540. package/dist/tests/SessionHealthMonitor.test.js +449 -0
  541. package/dist/tests/SessionHealthMonitor.test.js.map +1 -0
  542. package/dist/tests/SessionManager.security.test.d.ts +10 -0
  543. package/dist/tests/SessionManager.security.test.d.ts.map +1 -0
  544. package/dist/tests/SessionManager.security.test.js +395 -0
  545. package/dist/tests/SessionManager.security.test.js.map +1 -0
  546. package/dist/tests/SessionManager.test.d.ts +8 -0
  547. package/dist/tests/SessionManager.test.d.ts.map +1 -0
  548. package/dist/tests/SessionManager.test.js +446 -0
  549. package/dist/tests/SessionManager.test.js.map +1 -0
  550. package/dist/tests/SkillMatcher.test.d.ts +2 -0
  551. package/dist/tests/SkillMatcher.test.d.ts.map +1 -0
  552. package/dist/tests/SkillMatcher.test.js +253 -0
  553. package/dist/tests/SkillMatcher.test.js.map +1 -0
  554. package/dist/tests/SkillRepository.test.d.ts +5 -0
  555. package/dist/tests/SkillRepository.test.d.ts.map +1 -0
  556. package/dist/tests/SkillRepository.test.js +237 -0
  557. package/dist/tests/SkillRepository.test.js.map +1 -0
  558. package/dist/tests/SwarmIndexer.test.d.ts +11 -0
  559. package/dist/tests/SwarmIndexer.test.d.ts.map +1 -0
  560. package/dist/tests/SwarmIndexer.test.js +374 -0
  561. package/dist/tests/SwarmIndexer.test.js.map +1 -0
  562. package/dist/tests/TieredCache.test.d.ts +7 -0
  563. package/dist/tests/TieredCache.test.d.ts.map +1 -0
  564. package/dist/tests/TieredCache.test.js +529 -0
  565. package/dist/tests/TieredCache.test.js.map +1 -0
  566. package/dist/tests/UsageAnalyticsService.test.d.ts +7 -0
  567. package/dist/tests/UsageAnalyticsService.test.d.ts.map +1 -0
  568. package/dist/tests/UsageAnalyticsService.test.js +238 -0
  569. package/dist/tests/UsageAnalyticsService.test.js.map +1 -0
  570. package/dist/tests/UsageTracker.test.d.ts +7 -0
  571. package/dist/tests/UsageTracker.test.d.ts.map +1 -0
  572. package/dist/tests/UsageTracker.test.js +196 -0
  573. package/dist/tests/UsageTracker.test.js.map +1 -0
  574. package/dist/tests/WebhookHandler.test.d.ts +10 -0
  575. package/dist/tests/WebhookHandler.test.d.ts.map +1 -0
  576. package/dist/tests/WebhookHandler.test.js +592 -0
  577. package/dist/tests/WebhookHandler.test.js.map +1 -0
  578. package/dist/tests/analytics/metrics-aggregator.test.d.ts +11 -0
  579. package/dist/tests/analytics/metrics-aggregator.test.d.ts.map +1 -0
  580. package/dist/tests/analytics/metrics-aggregator.test.js +273 -0
  581. package/dist/tests/analytics/metrics-aggregator.test.js.map +1 -0
  582. package/dist/tests/analytics/metrics-exporter.test.d.ts +11 -0
  583. package/dist/tests/analytics/metrics-exporter.test.d.ts.map +1 -0
  584. package/dist/tests/analytics/metrics-exporter.test.js +371 -0
  585. package/dist/tests/analytics/metrics-exporter.test.js.map +1 -0
  586. package/dist/tests/analytics/usage-tracker.test.d.ts +10 -0
  587. package/dist/tests/analytics/usage-tracker.test.d.ts.map +1 -0
  588. package/dist/tests/analytics/usage-tracker.test.js +151 -0
  589. package/dist/tests/analytics/usage-tracker.test.js.map +1 -0
  590. package/dist/tests/anonymizer.test.d.ts +8 -0
  591. package/dist/tests/anonymizer.test.d.ts.map +1 -0
  592. package/dist/tests/anonymizer.test.js +153 -0
  593. package/dist/tests/anonymizer.test.js.map +1 -0
  594. package/dist/tests/cache.test.d.ts +6 -0
  595. package/dist/tests/cache.test.d.ts.map +1 -0
  596. package/dist/tests/cache.test.js +170 -0
  597. package/dist/tests/cache.test.js.map +1 -0
  598. package/dist/tests/e2e/security/security.e2e.test.d.ts +8 -0
  599. package/dist/tests/e2e/security/security.e2e.test.d.ts.map +1 -0
  600. package/dist/tests/e2e/security/security.e2e.test.js +448 -0
  601. package/dist/tests/e2e/security/security.e2e.test.js.map +1 -0
  602. package/dist/tests/edge-cases/EdgeCases.test.d.ts +13 -0
  603. package/dist/tests/edge-cases/EdgeCases.test.d.ts.map +1 -0
  604. package/dist/tests/edge-cases/EdgeCases.test.js +844 -0
  605. package/dist/tests/edge-cases/EdgeCases.test.js.map +1 -0
  606. package/dist/tests/import-github-skills.test.d.ts +8 -0
  607. package/dist/tests/import-github-skills.test.d.ts.map +1 -0
  608. package/dist/tests/import-github-skills.test.js +390 -0
  609. package/dist/tests/import-github-skills.test.js.map +1 -0
  610. package/dist/tests/logger.test.d.ts +2 -0
  611. package/dist/tests/logger.test.d.ts.map +1 -0
  612. package/dist/tests/logger.test.js +417 -0
  613. package/dist/tests/logger.test.js.map +1 -0
  614. package/dist/tests/performance/LargeScalePerformance.test.d.ts +14 -0
  615. package/dist/tests/performance/LargeScalePerformance.test.d.ts.map +1 -0
  616. package/dist/tests/performance/LargeScalePerformance.test.js +558 -0
  617. package/dist/tests/performance/LargeScalePerformance.test.js.map +1 -0
  618. package/dist/tests/retry.test.d.ts +7 -0
  619. package/dist/tests/retry.test.d.ts.map +1 -0
  620. package/dist/tests/retry.test.js +302 -0
  621. package/dist/tests/retry.test.js.map +1 -0
  622. package/dist/tests/sanitization.test.d.ts +8 -0
  623. package/dist/tests/sanitization.test.d.ts.map +1 -0
  624. package/dist/tests/sanitization.test.js +413 -0
  625. package/dist/tests/sanitization.test.js.map +1 -0
  626. package/dist/tests/schema.test.d.ts +5 -0
  627. package/dist/tests/schema.test.d.ts.map +1 -0
  628. package/dist/tests/schema.test.js +167 -0
  629. package/dist/tests/schema.test.js.map +1 -0
  630. package/dist/tests/scripts/import-to-database.test.d.ts +11 -0
  631. package/dist/tests/scripts/import-to-database.test.d.ts.map +1 -0
  632. package/dist/tests/scripts/import-to-database.test.js +325 -0
  633. package/dist/tests/scripts/import-to-database.test.js.map +1 -0
  634. package/dist/tests/security/ContinuousSecurity.test.d.ts +6 -0
  635. package/dist/tests/security/ContinuousSecurity.test.d.ts.map +1 -0
  636. package/dist/tests/security/ContinuousSecurity.test.js +595 -0
  637. package/dist/tests/security/ContinuousSecurity.test.js.map +1 -0
  638. package/dist/tests/security/ReDoS.test.d.ts +8 -0
  639. package/dist/tests/security/ReDoS.test.d.ts.map +1 -0
  640. package/dist/tests/security/ReDoS.test.js +213 -0
  641. package/dist/tests/security/ReDoS.test.js.map +1 -0
  642. package/dist/tests/security.test.d.ts +5 -0
  643. package/dist/tests/security.test.d.ts.map +1 -0
  644. package/dist/tests/security.test.js +134 -0
  645. package/dist/tests/security.test.js.map +1 -0
  646. package/dist/tests/shared.test.d.ts +7 -0
  647. package/dist/tests/shared.test.d.ts.map +1 -0
  648. package/dist/tests/shared.test.js +480 -0
  649. package/dist/tests/shared.test.js.map +1 -0
  650. package/dist/tests/sources.test.d.ts +5 -0
  651. package/dist/tests/sources.test.d.ts.map +1 -0
  652. package/dist/tests/sources.test.js +369 -0
  653. package/dist/tests/sources.test.js.map +1 -0
  654. package/dist/tests/stats.test.d.ts +11 -0
  655. package/dist/tests/stats.test.d.ts.map +1 -0
  656. package/dist/tests/stats.test.js +124 -0
  657. package/dist/tests/stats.test.js.map +1 -0
  658. package/dist/tests/telemetry.test.d.ts +11 -0
  659. package/dist/tests/telemetry.test.d.ts.map +1 -0
  660. package/dist/tests/telemetry.test.js +424 -0
  661. package/dist/tests/telemetry.test.js.map +1 -0
  662. package/dist/tests/test-utils.d.ts +74 -0
  663. package/dist/tests/test-utils.d.ts.map +1 -0
  664. package/dist/tests/test-utils.js +98 -0
  665. package/dist/tests/test-utils.js.map +1 -0
  666. package/dist/tests/validate-skills.test.d.ts +5 -0
  667. package/dist/tests/validate-skills.test.d.ts.map +1 -0
  668. package/dist/tests/validate-skills.test.js +649 -0
  669. package/dist/tests/validate-skills.test.js.map +1 -0
  670. package/dist/tests/validation.test.d.ts +7 -0
  671. package/dist/tests/validation.test.d.ts.map +1 -0
  672. package/dist/tests/validation.test.js +495 -0
  673. package/dist/tests/validation.test.js.map +1 -0
  674. package/dist/tests/webhooks/WebhookHandler.idempotency.test.d.ts +8 -0
  675. package/dist/tests/webhooks/WebhookHandler.idempotency.test.d.ts.map +1 -0
  676. package/dist/tests/webhooks/WebhookHandler.idempotency.test.js +190 -0
  677. package/dist/tests/webhooks/WebhookHandler.idempotency.test.js.map +1 -0
  678. package/dist/tests/webhooks/WebhookPayload.security.test.d.ts +8 -0
  679. package/dist/tests/webhooks/WebhookPayload.security.test.d.ts.map +1 -0
  680. package/dist/tests/webhooks/WebhookPayload.security.test.js +204 -0
  681. package/dist/tests/webhooks/WebhookPayload.security.test.js.map +1 -0
  682. package/dist/vitest.config.d.ts +3 -0
  683. package/dist/vitest.config.d.ts.map +1 -0
  684. package/dist/vitest.config.js +13 -0
  685. package/dist/vitest.config.js.map +1 -0
  686. package/package.json +77 -0
@@ -0,0 +1,282 @@
1
+ /**
2
+ * Raw URL Source Adapter (SMI-591)
3
+ *
4
+ * Fetches skills from arbitrary HTTP/HTTPS URLs.
5
+ * Useful for custom registries or standalone skill files.
6
+ */
7
+ import { BaseSourceAdapter } from './BaseSourceAdapter.js';
8
+ import { createHash } from 'crypto';
9
+ import { createLogger } from '../utils/logger.js';
10
+ import { validateUrl } from '../validation/index.js';
11
+ import { ApiError, wrapError } from '../errors/SkillsmithError.js';
12
+ const log = createLogger('RawUrlAdapter');
13
+ /**
14
+ * Raw URL Source Adapter
15
+ *
16
+ * Fetches skill files from arbitrary HTTP/HTTPS URLs.
17
+ * Can work with:
18
+ * - A predefined list of skill URLs
19
+ * - A JSON registry file containing skill entries
20
+ * - Direct URL locations
21
+ *
22
+ * @example
23
+ * ```typescript
24
+ * const adapter = new RawUrlSourceAdapter({
25
+ * id: 'custom-registry',
26
+ * name: 'Custom Registry',
27
+ * type: 'raw-url',
28
+ * baseUrl: 'https://example.com',
29
+ * enabled: true,
30
+ * skillUrls: [
31
+ * { id: '1', name: 'My Skill', url: 'https://example.com/skill.md' }
32
+ * ]
33
+ * })
34
+ *
35
+ * await adapter.initialize()
36
+ * const content = await adapter.fetchSkillContent({
37
+ * owner: 'example.com',
38
+ * repo: 'my-skill',
39
+ * path: 'https://example.com/skill.md'
40
+ * })
41
+ * ```
42
+ */
43
+ export class RawUrlSourceAdapter extends BaseSourceAdapter {
44
+ skillUrls = [];
45
+ timeout;
46
+ constructor(config) {
47
+ super(config);
48
+ this.skillUrls = config.skillUrls ?? [];
49
+ this.timeout = config.timeout ?? 30000;
50
+ }
51
+ /**
52
+ * Initialize adapter - load registry if configured
53
+ */
54
+ async doInitialize() {
55
+ const config = this.config;
56
+ if (config.registryUrl) {
57
+ await this.loadRegistry(config.registryUrl);
58
+ }
59
+ }
60
+ /**
61
+ * Load skill entries from a remote JSON registry
62
+ */
63
+ async loadRegistry(registryUrl) {
64
+ try {
65
+ validateUrl(registryUrl);
66
+ const response = await this.fetchWithTimeout(registryUrl);
67
+ if (!response.ok) {
68
+ throw new ApiError(`Failed to load registry: ${response.status}`, {
69
+ statusCode: response.status,
70
+ url: registryUrl,
71
+ });
72
+ }
73
+ const data = (await response.json());
74
+ if (data.skills && Array.isArray(data.skills)) {
75
+ this.skillUrls = [...this.skillUrls, ...data.skills];
76
+ }
77
+ }
78
+ catch (error) {
79
+ // Registry load is optional - log but don't fail (SMI-881: preserve error context)
80
+ const wrappedError = wrapError(error, `Failed to load registry from ${registryUrl}`);
81
+ log.warn(wrappedError.message);
82
+ }
83
+ }
84
+ /**
85
+ * Check if the source is reachable
86
+ */
87
+ async doHealthCheck() {
88
+ // Try to reach the base URL
89
+ try {
90
+ validateUrl(this.config.baseUrl);
91
+ const response = await this.fetchWithTimeout(this.config.baseUrl, { method: 'HEAD' });
92
+ return {
93
+ healthy: response.ok || response.status === 405, // 405 = Method Not Allowed is ok for HEAD
94
+ };
95
+ }
96
+ catch {
97
+ return {
98
+ healthy: false,
99
+ error: 'Base URL unreachable',
100
+ };
101
+ }
102
+ }
103
+ /**
104
+ * Search for skills in the configured registry
105
+ */
106
+ async search(options = {}) {
107
+ await this.waitForRateLimit();
108
+ let filtered = [...this.skillUrls];
109
+ // Filter by query (search in name, description, tags)
110
+ if (options.query) {
111
+ const query = options.query.toLowerCase();
112
+ filtered = filtered.filter((entry) => entry.name.toLowerCase().includes(query) ||
113
+ entry.description?.toLowerCase().includes(query) ||
114
+ entry.tags?.some((tag) => tag.toLowerCase().includes(query)));
115
+ }
116
+ // Filter by topics (match against tags)
117
+ if (options.topics?.length) {
118
+ filtered = filtered.filter((entry) => options.topics.some((topic) => entry.tags?.includes(topic)));
119
+ }
120
+ // Apply limit
121
+ const limit = options.limit ?? 100;
122
+ const limitedResults = filtered.slice(0, limit);
123
+ // Convert to SourceRepository format
124
+ const repositories = limitedResults.map((entry) => this.entryToRepository(entry));
125
+ return {
126
+ repositories,
127
+ totalCount: filtered.length,
128
+ hasMore: filtered.length > limit,
129
+ };
130
+ }
131
+ /**
132
+ * Get repository (skill entry) by location
133
+ */
134
+ async getRepository(location) {
135
+ await this.waitForRateLimit();
136
+ // Find by URL or ID
137
+ const url = location.path ?? `${this.config.baseUrl}/${location.owner}/${location.repo}`;
138
+ const entry = this.skillUrls.find((e) => e.url === url || e.id === location.repo);
139
+ if (entry) {
140
+ return this.entryToRepository(entry);
141
+ }
142
+ // Create a synthetic entry for the URL
143
+ return {
144
+ id: this.generateId(url),
145
+ name: location.repo ?? 'Unknown Skill',
146
+ url,
147
+ description: null,
148
+ owner: location.owner ?? new URL(url).hostname,
149
+ defaultBranch: 'main',
150
+ stars: 0,
151
+ forks: 0,
152
+ topics: [],
153
+ updatedAt: new Date().toISOString(),
154
+ createdAt: new Date().toISOString(),
155
+ license: null,
156
+ metadata: { sourceType: 'raw-url' },
157
+ };
158
+ }
159
+ /**
160
+ * Fetch skill content from a URL
161
+ */
162
+ async fetchSkillContent(location) {
163
+ // Determine the URL to fetch
164
+ let url;
165
+ if (location.path?.startsWith('http')) {
166
+ url = location.path;
167
+ }
168
+ else {
169
+ // Try to find in registry
170
+ const entry = this.skillUrls.find((e) => e.id === location.repo || e.name === location.repo);
171
+ if (entry) {
172
+ url = entry.url;
173
+ }
174
+ else {
175
+ // Construct URL from base
176
+ url = `${this.config.baseUrl}/${location.owner}/${location.repo}/SKILL.md`;
177
+ }
178
+ }
179
+ // Validate URL to prevent SSRF attacks (SMI-721, SMI-726, SMI-729)
180
+ validateUrl(url);
181
+ // Note: Rate limiting is handled by fetchWithTimeout -> fetchWithRateLimit
182
+ const response = await this.fetchWithTimeout(url);
183
+ if (!response.ok) {
184
+ throw new ApiError(`Failed to fetch skill content: ${response.status}`, {
185
+ statusCode: response.status,
186
+ url,
187
+ });
188
+ }
189
+ const rawContent = await response.text();
190
+ const sha = this.generateSha(rawContent);
191
+ return {
192
+ rawContent,
193
+ sha,
194
+ location,
195
+ filePath: new URL(url).pathname,
196
+ encoding: 'utf-8',
197
+ };
198
+ }
199
+ /**
200
+ * Add a skill URL to the registry
201
+ */
202
+ addSkillUrl(entry) {
203
+ this.skillUrls.push(entry);
204
+ }
205
+ /**
206
+ * Remove a skill URL from the registry
207
+ */
208
+ removeSkillUrl(id) {
209
+ const index = this.skillUrls.findIndex((e) => e.id === id);
210
+ if (index >= 0) {
211
+ this.skillUrls.splice(index, 1);
212
+ return true;
213
+ }
214
+ return false;
215
+ }
216
+ /**
217
+ * Get all registered skill URLs
218
+ */
219
+ getSkillUrls() {
220
+ return [...this.skillUrls];
221
+ }
222
+ /**
223
+ * Convert a registry entry to SourceRepository
224
+ */
225
+ entryToRepository(entry) {
226
+ const urlObj = new URL(entry.url);
227
+ return {
228
+ id: entry.id,
229
+ name: entry.name,
230
+ url: entry.url,
231
+ description: entry.description ?? null,
232
+ owner: entry.author ?? urlObj.hostname,
233
+ defaultBranch: 'main',
234
+ stars: 0,
235
+ forks: 0,
236
+ topics: entry.tags ?? [],
237
+ updatedAt: new Date().toISOString(),
238
+ createdAt: new Date().toISOString(),
239
+ license: null,
240
+ metadata: { sourceType: 'raw-url' },
241
+ };
242
+ }
243
+ /**
244
+ * Fetch with timeout
245
+ */
246
+ async fetchWithTimeout(url, options) {
247
+ const controller = new AbortController();
248
+ const timeoutId = setTimeout(() => controller.abort(), this.timeout);
249
+ try {
250
+ const response = await this.fetchWithRateLimit(url, {
251
+ ...options,
252
+ signal: controller.signal,
253
+ });
254
+ return response;
255
+ }
256
+ finally {
257
+ clearTimeout(timeoutId);
258
+ }
259
+ }
260
+ /**
261
+ * Generate a deterministic ID from a URL
262
+ */
263
+ generateId(url) {
264
+ return createHash('sha256').update(url).digest('hex').slice(0, 16);
265
+ }
266
+ /**
267
+ * Generate SHA hash for content
268
+ */
269
+ generateSha(content) {
270
+ return createHash('sha256').update(content).digest('hex');
271
+ }
272
+ }
273
+ /**
274
+ * Factory function for creating Raw URL adapters
275
+ */
276
+ export function createRawUrlAdapter(config) {
277
+ return new RawUrlSourceAdapter({
278
+ ...config,
279
+ type: 'raw-url',
280
+ });
281
+ }
282
+ //# sourceMappingURL=RawUrlSourceAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RawUrlSourceAdapter.js","sourceRoot":"","sources":["../../../src/sources/RawUrlSourceAdapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,156 @@
1
+ /**
2
+ * Source Adapter Registry
3
+ * Manages registration and lifecycle of source adapters
4
+ */
5
+ import type { ISourceAdapter } from './ISourceAdapter.js';
6
+ import type { SourceConfig, SourceHealth, SourceType } from './types.js';
7
+ /**
8
+ * Factory function type for creating source adapters
9
+ */
10
+ export type SourceAdapterFactory = (config: SourceConfig) => ISourceAdapter;
11
+ /**
12
+ * Registry for managing source adapters
13
+ *
14
+ * Features:
15
+ * - Register adapter factories by type
16
+ * - Create adapter instances from configuration
17
+ * - Manage adapter lifecycle (initialize, dispose)
18
+ * - Query adapters by type or ID
19
+ *
20
+ * @example
21
+ * ```typescript
22
+ * const registry = new SourceAdapterRegistry()
23
+ *
24
+ * // Register factory for GitHub adapters
25
+ * registry.registerFactory('github', (config) => new GitHubSourceAdapter(config))
26
+ *
27
+ * // Create an adapter instance
28
+ * const adapter = await registry.create({
29
+ * id: 'github-main',
30
+ * name: 'GitHub Main',
31
+ * type: 'github',
32
+ * baseUrl: 'https://api.github.com',
33
+ * enabled: true
34
+ * })
35
+ *
36
+ * // Use the adapter
37
+ * const results = await adapter.search({ topics: ['claude-skill'] })
38
+ * ```
39
+ */
40
+ export declare class SourceAdapterRegistry {
41
+ private factories;
42
+ private adapters;
43
+ /**
44
+ * Register a factory for creating adapters of a specific type
45
+ *
46
+ * @param type - Source type identifier
47
+ * @param factory - Factory function to create adapters
48
+ */
49
+ registerFactory(type: SourceType | string, factory: SourceAdapterFactory): void;
50
+ /**
51
+ * Unregister a factory
52
+ *
53
+ * @param type - Source type to unregister
54
+ */
55
+ unregisterFactory(type: SourceType | string): void;
56
+ /**
57
+ * Check if a factory is registered for a type
58
+ *
59
+ * @param type - Source type to check
60
+ */
61
+ hasFactory(type: SourceType | string): boolean;
62
+ /**
63
+ * Get all registered factory types
64
+ */
65
+ getRegisteredTypes(): string[];
66
+ /**
67
+ * Create and register an adapter instance
68
+ *
69
+ * @param config - Adapter configuration
70
+ * @param autoInitialize - Whether to initialize immediately (default: true)
71
+ * @returns The created adapter
72
+ */
73
+ create(config: SourceConfig, autoInitialize?: boolean): Promise<ISourceAdapter>;
74
+ /**
75
+ * Get an adapter by ID
76
+ *
77
+ * @param id - Adapter ID
78
+ * @returns The adapter, or undefined if not found
79
+ */
80
+ get(id: string): ISourceAdapter | undefined;
81
+ /**
82
+ * Get an adapter by ID, throwing if not found
83
+ *
84
+ * @param id - Adapter ID
85
+ * @returns The adapter
86
+ * @throws Error if adapter not found
87
+ */
88
+ getOrThrow(id: string): ISourceAdapter;
89
+ /**
90
+ * Get all adapters of a specific type
91
+ *
92
+ * @param type - Source type to filter by
93
+ * @returns Array of matching adapters
94
+ */
95
+ getByType(type: SourceType | string): ISourceAdapter[];
96
+ /**
97
+ * Get all enabled adapters
98
+ */
99
+ getEnabled(): ISourceAdapter[];
100
+ /**
101
+ * Get all registered adapters
102
+ */
103
+ getAll(): ISourceAdapter[];
104
+ /**
105
+ * Check if an adapter exists
106
+ *
107
+ * @param id - Adapter ID to check
108
+ */
109
+ has(id: string): boolean;
110
+ /**
111
+ * Initialize an adapter if not already initialized
112
+ *
113
+ * @param id - Adapter ID
114
+ */
115
+ initialize(id: string): Promise<void>;
116
+ /**
117
+ * Initialize all registered adapters
118
+ */
119
+ initializeAll(): Promise<void>;
120
+ /**
121
+ * Remove and dispose an adapter
122
+ *
123
+ * @param id - Adapter ID to remove
124
+ */
125
+ remove(id: string): Promise<void>;
126
+ /**
127
+ * Remove and dispose all adapters
128
+ */
129
+ removeAll(): Promise<void>;
130
+ /**
131
+ * Check health of all enabled adapters
132
+ *
133
+ * @returns Map of adapter ID to health status
134
+ */
135
+ checkHealthAll(): Promise<Map<string, SourceHealth>>;
136
+ /**
137
+ * Get registry statistics
138
+ */
139
+ getStats(): RegistryStats;
140
+ private countByType;
141
+ }
142
+ /**
143
+ * Registry statistics
144
+ */
145
+ export interface RegistryStats {
146
+ totalFactories: number;
147
+ totalAdapters: number;
148
+ enabledAdapters: number;
149
+ initializedAdapters: number;
150
+ adaptersByType: Record<string, number>;
151
+ }
152
+ /**
153
+ * Default global registry instance
154
+ */
155
+ export declare const defaultRegistry: SourceAdapterRegistry;
156
+ //# sourceMappingURL=SourceAdapterRegistry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SourceAdapterRegistry.d.ts","sourceRoot":"","sources":["../../../src/sources/SourceAdapterRegistry.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACzD,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAExE;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG,CAAC,MAAM,EAAE,YAAY,KAAK,cAAc,CAAA;AAW3E;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,qBAAa,qBAAqB;IAChC,OAAO,CAAC,SAAS,CAAuD;IACxE,OAAO,CAAC,QAAQ,CAAmC;IAEnD;;;;;OAKG;IACH,eAAe,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,EAAE,OAAO,EAAE,oBAAoB,GAAG,IAAI;IAO/E;;;;OAIG;IACH,iBAAiB,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,GAAG,IAAI;IAIlD;;;;OAIG;IACH,UAAU,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,GAAG,OAAO;IAI9C;;OAEG;IACH,kBAAkB,IAAI,MAAM,EAAE;IAI9B;;;;;;OAMG;IACG,MAAM,CAAC,MAAM,EAAE,YAAY,EAAE,cAAc,UAAO,GAAG,OAAO,CAAC,cAAc,CAAC;IA2BlF;;;;;OAKG;IACH,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;IAI3C;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,cAAc;IAQtC;;;;;OAKG;IACH,SAAS,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,GAAG,cAAc,EAAE;IAMtD;;OAEG;IACH,UAAU,IAAI,cAAc,EAAE;IAM9B;;OAEG;IACH,MAAM,IAAI,cAAc,EAAE;IAI1B;;;;OAIG;IACH,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAIxB;;;;OAIG;IACG,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAY3C;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAUpC;;;;OAIG;IACG,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQvC;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAMhC;;;;OAIG;IACG,cAAc,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAY1D;;OAEG;IACH,QAAQ,IAAI,aAAa;IAWzB,OAAO,CAAC,WAAW;CAQpB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,cAAc,EAAE,MAAM,CAAA;IACtB,aAAa,EAAE,MAAM,CAAA;IACrB,eAAe,EAAE,MAAM,CAAA;IACvB,mBAAmB,EAAE,MAAM,CAAA;IAC3B,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACvC;AAED;;GAEG;AACH,eAAO,MAAM,eAAe,uBAA8B,CAAA"}
@@ -0,0 +1,242 @@
1
+ /**
2
+ * Source Adapter Registry
3
+ * Manages registration and lifecycle of source adapters
4
+ */
5
+ /**
6
+ * Registry for managing source adapters
7
+ *
8
+ * Features:
9
+ * - Register adapter factories by type
10
+ * - Create adapter instances from configuration
11
+ * - Manage adapter lifecycle (initialize, dispose)
12
+ * - Query adapters by type or ID
13
+ *
14
+ * @example
15
+ * ```typescript
16
+ * const registry = new SourceAdapterRegistry()
17
+ *
18
+ * // Register factory for GitHub adapters
19
+ * registry.registerFactory('github', (config) => new GitHubSourceAdapter(config))
20
+ *
21
+ * // Create an adapter instance
22
+ * const adapter = await registry.create({
23
+ * id: 'github-main',
24
+ * name: 'GitHub Main',
25
+ * type: 'github',
26
+ * baseUrl: 'https://api.github.com',
27
+ * enabled: true
28
+ * })
29
+ *
30
+ * // Use the adapter
31
+ * const results = await adapter.search({ topics: ['claude-skill'] })
32
+ * ```
33
+ */
34
+ export class SourceAdapterRegistry {
35
+ factories = new Map();
36
+ adapters = new Map();
37
+ /**
38
+ * Register a factory for creating adapters of a specific type
39
+ *
40
+ * @param type - Source type identifier
41
+ * @param factory - Factory function to create adapters
42
+ */
43
+ registerFactory(type, factory) {
44
+ if (this.factories.has(type)) {
45
+ throw new Error(`Factory already registered for type: ${type}`);
46
+ }
47
+ this.factories.set(type, factory);
48
+ }
49
+ /**
50
+ * Unregister a factory
51
+ *
52
+ * @param type - Source type to unregister
53
+ */
54
+ unregisterFactory(type) {
55
+ this.factories.delete(type);
56
+ }
57
+ /**
58
+ * Check if a factory is registered for a type
59
+ *
60
+ * @param type - Source type to check
61
+ */
62
+ hasFactory(type) {
63
+ return this.factories.has(type);
64
+ }
65
+ /**
66
+ * Get all registered factory types
67
+ */
68
+ getRegisteredTypes() {
69
+ return Array.from(this.factories.keys());
70
+ }
71
+ /**
72
+ * Create and register an adapter instance
73
+ *
74
+ * @param config - Adapter configuration
75
+ * @param autoInitialize - Whether to initialize immediately (default: true)
76
+ * @returns The created adapter
77
+ */
78
+ async create(config, autoInitialize = true) {
79
+ if (this.adapters.has(config.id)) {
80
+ throw new Error(`Adapter already exists with id: ${config.id}`);
81
+ }
82
+ const factory = this.factories.get(config.type);
83
+ if (!factory) {
84
+ throw new Error(`No factory registered for type: ${config.type}`);
85
+ }
86
+ const adapter = factory(config);
87
+ const entry = {
88
+ adapter,
89
+ factory,
90
+ initialized: false,
91
+ };
92
+ this.adapters.set(config.id, entry);
93
+ if (autoInitialize) {
94
+ await adapter.initialize();
95
+ entry.initialized = true;
96
+ }
97
+ return adapter;
98
+ }
99
+ /**
100
+ * Get an adapter by ID
101
+ *
102
+ * @param id - Adapter ID
103
+ * @returns The adapter, or undefined if not found
104
+ */
105
+ get(id) {
106
+ return this.adapters.get(id)?.adapter;
107
+ }
108
+ /**
109
+ * Get an adapter by ID, throwing if not found
110
+ *
111
+ * @param id - Adapter ID
112
+ * @returns The adapter
113
+ * @throws Error if adapter not found
114
+ */
115
+ getOrThrow(id) {
116
+ const adapter = this.get(id);
117
+ if (!adapter) {
118
+ throw new Error(`Adapter not found: ${id}`);
119
+ }
120
+ return adapter;
121
+ }
122
+ /**
123
+ * Get all adapters of a specific type
124
+ *
125
+ * @param type - Source type to filter by
126
+ * @returns Array of matching adapters
127
+ */
128
+ getByType(type) {
129
+ return Array.from(this.adapters.values())
130
+ .filter((entry) => entry.adapter.type === type)
131
+ .map((entry) => entry.adapter);
132
+ }
133
+ /**
134
+ * Get all enabled adapters
135
+ */
136
+ getEnabled() {
137
+ return Array.from(this.adapters.values())
138
+ .filter((entry) => entry.adapter.config.enabled)
139
+ .map((entry) => entry.adapter);
140
+ }
141
+ /**
142
+ * Get all registered adapters
143
+ */
144
+ getAll() {
145
+ return Array.from(this.adapters.values()).map((entry) => entry.adapter);
146
+ }
147
+ /**
148
+ * Check if an adapter exists
149
+ *
150
+ * @param id - Adapter ID to check
151
+ */
152
+ has(id) {
153
+ return this.adapters.has(id);
154
+ }
155
+ /**
156
+ * Initialize an adapter if not already initialized
157
+ *
158
+ * @param id - Adapter ID
159
+ */
160
+ async initialize(id) {
161
+ const entry = this.adapters.get(id);
162
+ if (!entry) {
163
+ throw new Error(`Adapter not found: ${id}`);
164
+ }
165
+ if (!entry.initialized) {
166
+ await entry.adapter.initialize();
167
+ entry.initialized = true;
168
+ }
169
+ }
170
+ /**
171
+ * Initialize all registered adapters
172
+ */
173
+ async initializeAll() {
174
+ const promises = Array.from(this.adapters.entries()).map(async ([id, entry]) => {
175
+ if (!entry.initialized) {
176
+ await entry.adapter.initialize();
177
+ entry.initialized = true;
178
+ }
179
+ });
180
+ await Promise.all(promises);
181
+ }
182
+ /**
183
+ * Remove and dispose an adapter
184
+ *
185
+ * @param id - Adapter ID to remove
186
+ */
187
+ async remove(id) {
188
+ const entry = this.adapters.get(id);
189
+ if (entry) {
190
+ await entry.adapter.dispose();
191
+ this.adapters.delete(id);
192
+ }
193
+ }
194
+ /**
195
+ * Remove and dispose all adapters
196
+ */
197
+ async removeAll() {
198
+ const promises = Array.from(this.adapters.values()).map((entry) => entry.adapter.dispose());
199
+ await Promise.all(promises);
200
+ this.adapters.clear();
201
+ }
202
+ /**
203
+ * Check health of all enabled adapters
204
+ *
205
+ * @returns Map of adapter ID to health status
206
+ */
207
+ async checkHealthAll() {
208
+ const results = new Map();
209
+ const promises = this.getEnabled().map(async (adapter) => {
210
+ const health = await adapter.checkHealth();
211
+ results.set(adapter.id, health);
212
+ });
213
+ await Promise.all(promises);
214
+ return results;
215
+ }
216
+ /**
217
+ * Get registry statistics
218
+ */
219
+ getStats() {
220
+ const adapters = Array.from(this.adapters.values());
221
+ return {
222
+ totalFactories: this.factories.size,
223
+ totalAdapters: adapters.length,
224
+ enabledAdapters: adapters.filter((e) => e.adapter.config.enabled).length,
225
+ initializedAdapters: adapters.filter((e) => e.initialized).length,
226
+ adaptersByType: this.countByType(),
227
+ };
228
+ }
229
+ countByType() {
230
+ const counts = {};
231
+ for (const entry of this.adapters.values()) {
232
+ const type = entry.adapter.type;
233
+ counts[type] = (counts[type] ?? 0) + 1;
234
+ }
235
+ return counts;
236
+ }
237
+ }
238
+ /**
239
+ * Default global registry instance
240
+ */
241
+ export const defaultRegistry = new SourceAdapterRegistry();
242
+ //# sourceMappingURL=SourceAdapterRegistry.js.map