@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,424 @@
1
+ /**
2
+ * SMI-758: Telemetry Unit Tests
3
+ *
4
+ * Tests for tracer and metrics modules including:
5
+ * - Tracer initialization and shutdown
6
+ * - Span creation and attributes
7
+ * - Metrics recording
8
+ * - Graceful fallback when OpenTelemetry not available (SMI-755)
9
+ */
10
+ import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest';
11
+ import { SkillsmithTracer, getTracer, initializeTracing, shutdownTracing, } from '../src/telemetry/tracer.js';
12
+ import { MetricsRegistry, getMetrics, initializeMetrics, timeAsync, timeSync, LATENCY_BUCKETS, } from '../src/telemetry/metrics.js';
13
+ import { initializeTelemetry, shutdownTelemetry } from '../src/telemetry/index.js';
14
+ describe('Telemetry Module', () => {
15
+ describe('SkillsmithTracer', () => {
16
+ let tracer;
17
+ beforeEach(() => {
18
+ // Reset environment
19
+ delete process.env.SKILLSMITH_TELEMETRY_ENABLED;
20
+ delete process.env.SKILLSMITH_TRACING_ENABLED;
21
+ delete process.env.OTEL_EXPORTER_OTLP_ENDPOINT;
22
+ });
23
+ afterEach(async () => {
24
+ if (tracer) {
25
+ await tracer.shutdown();
26
+ }
27
+ });
28
+ describe('constructor', () => {
29
+ it('creates tracer with default config', () => {
30
+ tracer = new SkillsmithTracer();
31
+ expect(tracer).toBeInstanceOf(SkillsmithTracer);
32
+ expect(tracer.isEnabled()).toBe(false); // Not enabled without endpoint
33
+ });
34
+ it('respects SKILLSMITH_TELEMETRY_ENABLED=false', () => {
35
+ process.env.SKILLSMITH_TELEMETRY_ENABLED = 'false';
36
+ tracer = new SkillsmithTracer({ consoleExport: true });
37
+ expect(tracer.isEnabled()).toBe(false);
38
+ });
39
+ it('enables tracing when consoleExport is true', () => {
40
+ tracer = new SkillsmithTracer({ consoleExport: true });
41
+ // Note: isEnabled() returns false until initialize() is called
42
+ expect(tracer).toBeInstanceOf(SkillsmithTracer);
43
+ });
44
+ it('uses custom service name', () => {
45
+ tracer = new SkillsmithTracer({ serviceName: 'test-service' });
46
+ expect(tracer).toBeInstanceOf(SkillsmithTracer);
47
+ });
48
+ it('respects SKILLSMITH_TRACING_ENABLED=false', () => {
49
+ process.env.SKILLSMITH_TRACING_ENABLED = 'false';
50
+ tracer = new SkillsmithTracer({ consoleExport: true });
51
+ expect(tracer.isEnabled()).toBe(false);
52
+ });
53
+ });
54
+ describe('initialize', () => {
55
+ it('initializes without error when tracing disabled', async () => {
56
+ tracer = new SkillsmithTracer();
57
+ await expect(tracer.initialize()).resolves.toBeUndefined();
58
+ });
59
+ it('handles missing OpenTelemetry packages gracefully (SMI-755)', async () => {
60
+ // Enable tracing to trigger OTel load attempt
61
+ tracer = new SkillsmithTracer({ consoleExport: true });
62
+ const warnSpy = vi.spyOn(console, 'warn').mockImplementation(() => { });
63
+ await tracer.initialize();
64
+ // Should fall back gracefully - either succeed or warn
65
+ expect(tracer.isEnabled()).toBeDefined();
66
+ warnSpy.mockRestore();
67
+ });
68
+ it('can be called multiple times safely', async () => {
69
+ tracer = new SkillsmithTracer();
70
+ await tracer.initialize();
71
+ await tracer.initialize();
72
+ await tracer.initialize();
73
+ // No error thrown
74
+ });
75
+ });
76
+ describe('startSpan', () => {
77
+ it('returns NoOpSpanWrapper when tracing disabled', async () => {
78
+ tracer = new SkillsmithTracer();
79
+ await tracer.initialize();
80
+ const span = tracer.startSpan('test-span');
81
+ expect(span).toBeDefined();
82
+ expect(span.getSpan()).toBeNull(); // NoOp returns null
83
+ });
84
+ it('span wrapper methods work without error', async () => {
85
+ tracer = new SkillsmithTracer();
86
+ await tracer.initialize();
87
+ const span = tracer.startSpan('test-span');
88
+ // All methods should work without error
89
+ span.setAttributes({ 'test.key': 'value', 'test.number': 42 });
90
+ span.setStatus('ok');
91
+ span.setStatus('error', 'Test error');
92
+ span.addEvent('test-event', { eventKey: 'eventValue' });
93
+ span.recordException(new Error('Test exception'));
94
+ span.end();
95
+ });
96
+ });
97
+ describe('withSpan', () => {
98
+ it('executes function and returns result', async () => {
99
+ tracer = new SkillsmithTracer();
100
+ await tracer.initialize();
101
+ const result = await tracer.withSpan('test-span', async (span) => {
102
+ span.setAttributes({ operation: 'test' });
103
+ return 'test-result';
104
+ });
105
+ expect(result).toBe('test-result');
106
+ });
107
+ it('records exception on error', async () => {
108
+ tracer = new SkillsmithTracer();
109
+ await tracer.initialize();
110
+ await expect(tracer.withSpan('test-span', async () => {
111
+ throw new Error('Test error');
112
+ })).rejects.toThrow('Test error');
113
+ });
114
+ });
115
+ describe('withSpanSync', () => {
116
+ it('executes sync function and returns result', async () => {
117
+ tracer = new SkillsmithTracer();
118
+ await tracer.initialize();
119
+ const result = tracer.withSpanSync('test-span', (span) => {
120
+ span.setAttributes({ operation: 'sync-test' });
121
+ return 'sync-result';
122
+ });
123
+ expect(result).toBe('sync-result');
124
+ });
125
+ it('records exception on error', async () => {
126
+ tracer = new SkillsmithTracer();
127
+ await tracer.initialize();
128
+ expect(() => tracer.withSpanSync('test-span', () => {
129
+ throw new Error('Sync error');
130
+ })).toThrow('Sync error');
131
+ });
132
+ });
133
+ describe('getCurrentSpan', () => {
134
+ it('returns NoOpSpanWrapper when no active span', async () => {
135
+ tracer = new SkillsmithTracer();
136
+ await tracer.initialize();
137
+ const span = tracer.getCurrentSpan();
138
+ expect(span.getSpan()).toBeNull();
139
+ });
140
+ });
141
+ describe('shutdown', () => {
142
+ it('shuts down cleanly', async () => {
143
+ tracer = new SkillsmithTracer();
144
+ await tracer.initialize();
145
+ await expect(tracer.shutdown()).resolves.toBeUndefined();
146
+ });
147
+ it('can be called multiple times', async () => {
148
+ tracer = new SkillsmithTracer();
149
+ await tracer.initialize();
150
+ await tracer.shutdown();
151
+ await tracer.shutdown();
152
+ // No error
153
+ });
154
+ });
155
+ });
156
+ describe('Global Tracer Functions', () => {
157
+ afterEach(async () => {
158
+ await shutdownTracing();
159
+ });
160
+ it('getTracer returns singleton', () => {
161
+ const tracer1 = getTracer();
162
+ const tracer2 = getTracer();
163
+ expect(tracer1).toBe(tracer2);
164
+ });
165
+ it('initializeTracing creates and initializes tracer', async () => {
166
+ const tracer = await initializeTracing();
167
+ expect(tracer).toBeInstanceOf(SkillsmithTracer);
168
+ });
169
+ it('shutdownTracing clears singleton', async () => {
170
+ await initializeTracing();
171
+ await shutdownTracing();
172
+ // Getting new tracer should create new instance
173
+ const newTracer = getTracer();
174
+ expect(newTracer).toBeInstanceOf(SkillsmithTracer);
175
+ });
176
+ });
177
+ describe('MetricsRegistry', () => {
178
+ let metrics;
179
+ beforeEach(() => {
180
+ delete process.env.SKILLSMITH_TELEMETRY_ENABLED;
181
+ delete process.env.SKILLSMITH_METRICS_ENABLED;
182
+ });
183
+ describe('constructor', () => {
184
+ it('creates registry with predefined metrics', () => {
185
+ metrics = new MetricsRegistry();
186
+ expect(metrics.mcpRequestLatency).toBeDefined();
187
+ expect(metrics.mcpRequestCount).toBeDefined();
188
+ expect(metrics.mcpErrorCount).toBeDefined();
189
+ expect(metrics.dbQueryLatency).toBeDefined();
190
+ expect(metrics.dbQueryCount).toBeDefined();
191
+ expect(metrics.cacheHits).toBeDefined();
192
+ expect(metrics.cacheMisses).toBeDefined();
193
+ expect(metrics.cacheSize).toBeDefined();
194
+ expect(metrics.embeddingLatency).toBeDefined();
195
+ expect(metrics.embeddingCount).toBeDefined();
196
+ expect(metrics.searchLatency).toBeDefined();
197
+ expect(metrics.searchCount).toBeDefined();
198
+ expect(metrics.activeOperations).toBeDefined();
199
+ });
200
+ it('respects SKILLSMITH_TELEMETRY_ENABLED=false', () => {
201
+ process.env.SKILLSMITH_TELEMETRY_ENABLED = 'false';
202
+ metrics = new MetricsRegistry();
203
+ expect(metrics.isEnabled()).toBe(false);
204
+ });
205
+ });
206
+ describe('initialize', () => {
207
+ it('initializes without error', async () => {
208
+ metrics = new MetricsRegistry();
209
+ await expect(metrics.initialize()).resolves.toBeUndefined();
210
+ });
211
+ it('handles missing OpenTelemetry gracefully (SMI-755)', async () => {
212
+ metrics = new MetricsRegistry({ consoleExport: true });
213
+ const infoSpy = vi.spyOn(console, 'info').mockImplementation(() => { });
214
+ await metrics.initialize();
215
+ // Should log info about in-memory mode or succeed with OTel
216
+ infoSpy.mockRestore();
217
+ });
218
+ });
219
+ describe('Counter', () => {
220
+ beforeEach(async () => {
221
+ metrics = new MetricsRegistry();
222
+ await metrics.initialize();
223
+ });
224
+ it('increments counter', () => {
225
+ metrics.mcpRequestCount.increment({ tool: 'search' });
226
+ metrics.mcpRequestCount.increment({ tool: 'search' });
227
+ metrics.mcpRequestCount.add(5, { tool: 'install' });
228
+ const snapshot = metrics.getSnapshot();
229
+ expect(snapshot.counters['skillsmith.mcp.request.count']).toBe(7);
230
+ });
231
+ it('tracks labeled counters', () => {
232
+ metrics.cacheHits.increment({ layer: 'memory' });
233
+ metrics.cacheHits.increment({ layer: 'disk' });
234
+ metrics.cacheMisses.increment({ layer: 'memory' });
235
+ const ratio = metrics.getCacheHitRatio();
236
+ expect(ratio).toBeCloseTo(0.667, 2);
237
+ });
238
+ });
239
+ describe('Histogram', () => {
240
+ beforeEach(async () => {
241
+ metrics = new MetricsRegistry();
242
+ await metrics.initialize();
243
+ });
244
+ it('records histogram values', () => {
245
+ metrics.mcpRequestLatency.record(10, { tool: 'search' });
246
+ metrics.mcpRequestLatency.record(20, { tool: 'search' });
247
+ metrics.mcpRequestLatency.record(30, { tool: 'search' });
248
+ const snapshot = metrics.getSnapshot();
249
+ const stats = snapshot.histograms['skillsmith.mcp.request.latency'];
250
+ expect(stats.count).toBe(3);
251
+ expect(stats.sum).toBe(60);
252
+ expect(stats.mean).toBe(20);
253
+ });
254
+ it('calculates percentiles', () => {
255
+ // Add 100 values from 1 to 100
256
+ for (let i = 1; i <= 100; i++) {
257
+ metrics.searchLatency.record(i);
258
+ }
259
+ const snapshot = metrics.getSnapshot();
260
+ const stats = snapshot.histograms['skillsmith.search.latency'];
261
+ expect(stats.p50).toBe(50);
262
+ expect(stats.p95).toBe(95);
263
+ expect(stats.p99).toBe(99);
264
+ });
265
+ });
266
+ describe('Gauge', () => {
267
+ beforeEach(async () => {
268
+ metrics = new MetricsRegistry();
269
+ await metrics.initialize();
270
+ });
271
+ it('sets and gets gauge value', () => {
272
+ metrics.cacheSize.set(100);
273
+ expect(metrics.cacheSize.getValue()).toBe(100);
274
+ metrics.cacheSize.set(150);
275
+ expect(metrics.cacheSize.getValue()).toBe(150);
276
+ });
277
+ it('tracks labeled gauge values', () => {
278
+ metrics.activeOperations.set(5, { type: 'search' });
279
+ metrics.activeOperations.set(3, { type: 'install' });
280
+ expect(metrics.activeOperations.getValue({ type: 'search' })).toBe(5);
281
+ expect(metrics.activeOperations.getValue({ type: 'install' })).toBe(3);
282
+ });
283
+ });
284
+ describe('getSnapshot', () => {
285
+ it('returns complete metrics snapshot', async () => {
286
+ metrics = new MetricsRegistry();
287
+ await metrics.initialize();
288
+ metrics.mcpRequestCount.increment();
289
+ metrics.mcpRequestLatency.record(50);
290
+ metrics.cacheSize.set(200);
291
+ const snapshot = metrics.getSnapshot();
292
+ expect(snapshot.timestamp).toBeDefined();
293
+ expect(snapshot.counters).toBeDefined();
294
+ expect(snapshot.histograms).toBeDefined();
295
+ expect(snapshot.gauges).toBeDefined();
296
+ });
297
+ });
298
+ describe('reset', () => {
299
+ it('resets all metrics', async () => {
300
+ metrics = new MetricsRegistry();
301
+ await metrics.initialize();
302
+ metrics.mcpRequestCount.add(10);
303
+ metrics.mcpRequestLatency.record(100);
304
+ metrics.reset();
305
+ const snapshot = metrics.getSnapshot();
306
+ expect(snapshot.counters['skillsmith.mcp.request.count']).toBe(0);
307
+ expect(snapshot.histograms['skillsmith.mcp.request.latency'].count).toBe(0);
308
+ });
309
+ });
310
+ });
311
+ describe('Global Metrics Functions', () => {
312
+ it('getMetrics returns singleton', () => {
313
+ const metrics1 = getMetrics();
314
+ const metrics2 = getMetrics();
315
+ expect(metrics1).toBe(metrics2);
316
+ });
317
+ it('initializeMetrics creates and initializes registry', async () => {
318
+ const metrics = await initializeMetrics();
319
+ expect(metrics).toBeInstanceOf(MetricsRegistry);
320
+ });
321
+ });
322
+ describe('Timing Helpers', () => {
323
+ let metrics;
324
+ beforeEach(async () => {
325
+ metrics = new MetricsRegistry();
326
+ await metrics.initialize();
327
+ });
328
+ describe('timeAsync', () => {
329
+ it('times async function and records to histogram', async () => {
330
+ const result = await timeAsync(metrics.searchLatency, async () => {
331
+ // Use a computation instead of setTimeout to avoid timer resolution issues
332
+ const start = Date.now();
333
+ while (Date.now() - start < 5) {
334
+ // Busy wait for at least 5ms
335
+ }
336
+ return 'done';
337
+ });
338
+ expect(result).toBe('done');
339
+ const snapshot = metrics.getSnapshot();
340
+ expect(snapshot.histograms['skillsmith.search.latency'].count).toBe(1);
341
+ // Timing should be at least a few ms (relaxed assertion for CI stability)
342
+ expect(snapshot.histograms['skillsmith.search.latency'].sum).toBeGreaterThan(0);
343
+ });
344
+ it('records timing even on error', async () => {
345
+ await expect(timeAsync(metrics.searchLatency, async () => {
346
+ throw new Error('Test error');
347
+ })).rejects.toThrow('Test error');
348
+ const snapshot = metrics.getSnapshot();
349
+ expect(snapshot.histograms['skillsmith.search.latency'].count).toBe(1);
350
+ });
351
+ });
352
+ describe('timeSync', () => {
353
+ it('times sync function and records to histogram', () => {
354
+ const result = timeSync(metrics.dbQueryLatency, () => {
355
+ // Some computation
356
+ let sum = 0;
357
+ for (let i = 0; i < 1000; i++)
358
+ sum += i;
359
+ return sum;
360
+ });
361
+ expect(result).toBe(499500);
362
+ const snapshot = metrics.getSnapshot();
363
+ expect(snapshot.histograms['skillsmith.db.query.latency'].count).toBe(1);
364
+ });
365
+ });
366
+ });
367
+ describe('LATENCY_BUCKETS', () => {
368
+ it('exports standard latency buckets', () => {
369
+ expect(LATENCY_BUCKETS).toEqual([1, 5, 10, 25, 50, 100, 250, 500, 1000, 2500, 5000, 10000]);
370
+ });
371
+ });
372
+ describe('Integrated Telemetry', () => {
373
+ afterEach(async () => {
374
+ await shutdownTelemetry();
375
+ });
376
+ it('initializeTelemetry initializes both tracing and metrics', async () => {
377
+ await initializeTelemetry();
378
+ const tracer = getTracer();
379
+ const metrics = getMetrics();
380
+ expect(tracer).toBeInstanceOf(SkillsmithTracer);
381
+ expect(metrics).toBeInstanceOf(MetricsRegistry);
382
+ });
383
+ it('shutdownTelemetry cleans up resources', async () => {
384
+ await initializeTelemetry();
385
+ await shutdownTelemetry();
386
+ // No error thrown
387
+ });
388
+ });
389
+ describe('Graceful Fallback (SMI-755)', () => {
390
+ beforeEach(() => {
391
+ delete process.env.SKILLSMITH_TELEMETRY_ENABLED;
392
+ });
393
+ it('tracer works without OpenTelemetry installed', async () => {
394
+ const tracer = new SkillsmithTracer({ consoleExport: true });
395
+ await tracer.initialize();
396
+ // Should be able to use all APIs even if OTel isn't installed
397
+ const result = await tracer.withSpan('test', async (span) => {
398
+ span.setAttributes({ key: 'value' });
399
+ return 42;
400
+ });
401
+ expect(result).toBe(42);
402
+ });
403
+ it('metrics work without OpenTelemetry installed', async () => {
404
+ const metrics = new MetricsRegistry({ consoleExport: true });
405
+ await metrics.initialize();
406
+ // Should be able to use all metrics APIs
407
+ metrics.mcpRequestCount.increment();
408
+ metrics.mcpRequestLatency.record(50);
409
+ metrics.cacheSize.set(100);
410
+ const snapshot = metrics.getSnapshot();
411
+ expect(snapshot.counters['skillsmith.mcp.request.count']).toBe(1);
412
+ });
413
+ it('telemetry disabled with SKILLSMITH_TELEMETRY_ENABLED=false', async () => {
414
+ process.env.SKILLSMITH_TELEMETRY_ENABLED = 'false';
415
+ const tracer = new SkillsmithTracer({ consoleExport: true });
416
+ await tracer.initialize();
417
+ expect(tracer.isEnabled()).toBe(false);
418
+ const metrics = new MetricsRegistry({ consoleExport: true });
419
+ await metrics.initialize();
420
+ expect(metrics.isEnabled()).toBe(false);
421
+ });
422
+ });
423
+ });
424
+ //# sourceMappingURL=telemetry.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telemetry.test.js","sourceRoot":"","sources":["../../tests/telemetry.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,74 @@
1
+ /**
2
+ * SMI-992: Shared Test Utilities for Date/Time Mocking
3
+ *
4
+ * Provides consistent date mocking utilities to eliminate flaky tests
5
+ * caused by timing dependencies on Date.now() and new Date() calls.
6
+ */
7
+ /**
8
+ * Fixed timestamp for deterministic testing - January 15, 2024 at 10:00 UTC
9
+ */
10
+ export declare const FIXED_TIMESTAMP = 1705312800000;
11
+ /**
12
+ * Fixed date object for deterministic testing
13
+ */
14
+ export declare const FIXED_DATE: Date;
15
+ /**
16
+ * Fixed ISO string for deterministic testing
17
+ */
18
+ export declare const FIXED_DATE_ISO: string;
19
+ /**
20
+ * One day in milliseconds
21
+ */
22
+ export declare const ONE_DAY_MS: number;
23
+ /**
24
+ * One year in milliseconds (365 days)
25
+ */
26
+ export declare const ONE_YEAR_MS: number;
27
+ /**
28
+ * Creates a date relative to FIXED_DATE
29
+ * @param daysOffset - Number of days to add (negative for past dates)
30
+ * @returns Date object
31
+ */
32
+ export declare function createRelativeDate(daysOffset: number): Date;
33
+ /**
34
+ * Creates an ISO date string relative to FIXED_DATE
35
+ * @param daysOffset - Number of days to add (negative for past dates)
36
+ * @returns ISO date string
37
+ */
38
+ export declare function createRelativeDateISO(daysOffset: number): string;
39
+ /**
40
+ * Sets up fake timers with FIXED_DATE for the current test suite.
41
+ * Call in beforeEach() and pair with cleanupFakeTimers() in afterEach().
42
+ */
43
+ export declare function setupFakeTimers(): void;
44
+ /**
45
+ * Cleans up fake timers after tests.
46
+ * Call in afterEach() when paired with setupFakeTimers().
47
+ */
48
+ export declare function cleanupFakeTimers(): void;
49
+ /**
50
+ * Helper to advance fake timers by a specified amount
51
+ * @param ms - Milliseconds to advance
52
+ */
53
+ export declare function advanceTime(ms: number): void;
54
+ /**
55
+ * Helper to advance fake timers by a number of days
56
+ * @param days - Days to advance
57
+ */
58
+ export declare function advanceTimeByDays(days: number): void;
59
+ /**
60
+ * Creates a unique test directory path with deterministic naming
61
+ * @param prefix - Prefix for the directory name
62
+ * @param counter - A counter to ensure uniqueness within the test
63
+ */
64
+ export declare function createTestDirPath(prefix: string, counter: number): string;
65
+ /**
66
+ * Decorator to set up and tear down fake timers for a describe block.
67
+ * Usage:
68
+ * withFakeTimers(() => {
69
+ * beforeEach(() => { ... })
70
+ * it('test', () => { ... })
71
+ * })
72
+ */
73
+ export declare function withFakeTimers(fn: () => void): void;
74
+ //# sourceMappingURL=test-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-utils.d.ts","sourceRoot":"","sources":["../../tests/test-utils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH;;GAEG;AACH,eAAO,MAAM,eAAe,gBAAgB,CAAA;AAE5C;;GAEG;AACH,eAAO,MAAM,UAAU,MAA4B,CAAA;AAEnD;;GAEG;AACH,eAAO,MAAM,cAAc,QAA2B,CAAA;AAEtD;;GAEG;AACH,eAAO,MAAM,UAAU,QAAsB,CAAA;AAE7C;;GAEG;AACH,eAAO,MAAM,WAAW,QAAmB,CAAA;AAE3C;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAE3D;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAEhE;AAED;;;GAGG;AACH,wBAAgB,eAAe,IAAI,IAAI,CAGtC;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAExC;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAE5C;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAEpD;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAEzE;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,IAAI,CAUnD"}
@@ -0,0 +1,98 @@
1
+ /**
2
+ * SMI-992: Shared Test Utilities for Date/Time Mocking
3
+ *
4
+ * Provides consistent date mocking utilities to eliminate flaky tests
5
+ * caused by timing dependencies on Date.now() and new Date() calls.
6
+ */
7
+ import { vi, beforeEach, afterEach } from 'vitest';
8
+ /**
9
+ * Fixed timestamp for deterministic testing - January 15, 2024 at 10:00 UTC
10
+ */
11
+ export const FIXED_TIMESTAMP = 1705312800000;
12
+ /**
13
+ * Fixed date object for deterministic testing
14
+ */
15
+ export const FIXED_DATE = new Date(FIXED_TIMESTAMP);
16
+ /**
17
+ * Fixed ISO string for deterministic testing
18
+ */
19
+ export const FIXED_DATE_ISO = FIXED_DATE.toISOString();
20
+ /**
21
+ * One day in milliseconds
22
+ */
23
+ export const ONE_DAY_MS = 24 * 60 * 60 * 1000;
24
+ /**
25
+ * One year in milliseconds (365 days)
26
+ */
27
+ export const ONE_YEAR_MS = 365 * ONE_DAY_MS;
28
+ /**
29
+ * Creates a date relative to FIXED_DATE
30
+ * @param daysOffset - Number of days to add (negative for past dates)
31
+ * @returns Date object
32
+ */
33
+ export function createRelativeDate(daysOffset) {
34
+ return new Date(FIXED_TIMESTAMP + daysOffset * ONE_DAY_MS);
35
+ }
36
+ /**
37
+ * Creates an ISO date string relative to FIXED_DATE
38
+ * @param daysOffset - Number of days to add (negative for past dates)
39
+ * @returns ISO date string
40
+ */
41
+ export function createRelativeDateISO(daysOffset) {
42
+ return createRelativeDate(daysOffset).toISOString();
43
+ }
44
+ /**
45
+ * Sets up fake timers with FIXED_DATE for the current test suite.
46
+ * Call in beforeEach() and pair with cleanupFakeTimers() in afterEach().
47
+ */
48
+ export function setupFakeTimers() {
49
+ vi.useFakeTimers();
50
+ vi.setSystemTime(FIXED_DATE);
51
+ }
52
+ /**
53
+ * Cleans up fake timers after tests.
54
+ * Call in afterEach() when paired with setupFakeTimers().
55
+ */
56
+ export function cleanupFakeTimers() {
57
+ vi.useRealTimers();
58
+ }
59
+ /**
60
+ * Helper to advance fake timers by a specified amount
61
+ * @param ms - Milliseconds to advance
62
+ */
63
+ export function advanceTime(ms) {
64
+ vi.advanceTimersByTime(ms);
65
+ }
66
+ /**
67
+ * Helper to advance fake timers by a number of days
68
+ * @param days - Days to advance
69
+ */
70
+ export function advanceTimeByDays(days) {
71
+ vi.advanceTimersByTime(days * ONE_DAY_MS);
72
+ }
73
+ /**
74
+ * Creates a unique test directory path with deterministic naming
75
+ * @param prefix - Prefix for the directory name
76
+ * @param counter - A counter to ensure uniqueness within the test
77
+ */
78
+ export function createTestDirPath(prefix, counter) {
79
+ return `${prefix}-${FIXED_TIMESTAMP}-${counter.toString(36)}`;
80
+ }
81
+ /**
82
+ * Decorator to set up and tear down fake timers for a describe block.
83
+ * Usage:
84
+ * withFakeTimers(() => {
85
+ * beforeEach(() => { ... })
86
+ * it('test', () => { ... })
87
+ * })
88
+ */
89
+ export function withFakeTimers(fn) {
90
+ beforeEach(() => {
91
+ setupFakeTimers();
92
+ });
93
+ afterEach(() => {
94
+ cleanupFakeTimers();
95
+ });
96
+ fn();
97
+ }
98
+ //# sourceMappingURL=test-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-utils.js","sourceRoot":"","sources":["../../tests/test-utils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AAElD;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,aAAa,CAAA;AAE5C;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,IAAI,CAAC,eAAe,CAAC,CAAA;AAEnD;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,UAAU,CAAC,WAAW,EAAE,CAAA;AAEtD;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAA;AAE7C;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,GAAG,GAAG,UAAU,CAAA;AAE3C;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,UAAkB;IACnD,OAAO,IAAI,IAAI,CAAC,eAAe,GAAG,UAAU,GAAG,UAAU,CAAC,CAAA;AAC5D,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CAAC,UAAkB;IACtD,OAAO,kBAAkB,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE,CAAA;AACrD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe;IAC7B,EAAE,CAAC,aAAa,EAAE,CAAA;IAClB,EAAE,CAAC,aAAa,CAAC,UAAU,CAAC,CAAA;AAC9B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB;IAC/B,EAAE,CAAC,aAAa,EAAE,CAAA;AACpB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,EAAU;IACpC,EAAE,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAA;AAC5B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAY;IAC5C,EAAE,CAAC,mBAAmB,CAAC,IAAI,GAAG,UAAU,CAAC,CAAA;AAC3C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAc,EAAE,OAAe;IAC/D,OAAO,GAAG,MAAM,IAAI,eAAe,IAAI,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAA;AAC/D,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,cAAc,CAAC,EAAc;IAC3C,UAAU,CAAC,GAAG,EAAE;QACd,eAAe,EAAE,CAAA;IACnB,CAAC,CAAC,CAAA;IAEF,SAAS,CAAC,GAAG,EAAE;QACb,iBAAiB,EAAE,CAAA;IACrB,CAAC,CAAC,CAAA;IAEF,EAAE,EAAE,CAAA;AACN,CAAC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * SMI-863: Tests for Skill Validation and Deduplication Pipeline
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=validate-skills.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate-skills.test.d.ts","sourceRoot":"","sources":["../../tests/validate-skills.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}