@skillsmith/core 0.4.1 → 0.4.2

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 (370) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/src/analysis/adapters/java-parsers.d.ts +64 -0
  3. package/dist/src/analysis/adapters/java-parsers.d.ts.map +1 -0
  4. package/dist/src/analysis/adapters/java-parsers.js +114 -0
  5. package/dist/src/analysis/adapters/java-parsers.js.map +1 -0
  6. package/dist/src/analysis/adapters/java.d.ts +1 -51
  7. package/dist/src/analysis/adapters/java.d.ts.map +1 -1
  8. package/dist/src/analysis/adapters/java.js +94 -205
  9. package/dist/src/analysis/adapters/java.js.map +1 -1
  10. package/dist/src/analysis/adapters/python-frameworks.d.ts +21 -0
  11. package/dist/src/analysis/adapters/python-frameworks.d.ts.map +1 -0
  12. package/dist/src/analysis/adapters/python-frameworks.js +86 -0
  13. package/dist/src/analysis/adapters/python-frameworks.js.map +1 -0
  14. package/dist/src/analysis/adapters/python.d.ts +0 -50
  15. package/dist/src/analysis/adapters/python.d.ts.map +1 -1
  16. package/dist/src/analysis/adapters/python.js +5 -120
  17. package/dist/src/analysis/adapters/python.js.map +1 -1
  18. package/dist/src/analysis/adapters/rust-parsers.d.ts +33 -0
  19. package/dist/src/analysis/adapters/rust-parsers.d.ts.map +1 -0
  20. package/dist/src/analysis/adapters/rust-parsers.js +94 -0
  21. package/dist/src/analysis/adapters/rust-parsers.js.map +1 -0
  22. package/dist/src/analysis/adapters/rust.d.ts +1 -43
  23. package/dist/src/analysis/adapters/rust.d.ts.map +1 -1
  24. package/dist/src/analysis/adapters/rust.js +74 -173
  25. package/dist/src/analysis/adapters/rust.js.map +1 -1
  26. package/dist/src/analysis/worker-pool.d.ts +25 -52
  27. package/dist/src/analysis/worker-pool.d.ts.map +1 -1
  28. package/dist/src/analysis/worker-pool.js +29 -181
  29. package/dist/src/analysis/worker-pool.js.map +1 -1
  30. package/dist/src/analysis/worker-types.d.ts +64 -0
  31. package/dist/src/analysis/worker-types.d.ts.map +1 -0
  32. package/dist/src/analysis/worker-types.js +11 -0
  33. package/dist/src/analysis/worker-types.js.map +1 -0
  34. package/dist/src/analysis/worker-utils.d.ts +49 -0
  35. package/dist/src/analysis/worker-utils.d.ts.map +1 -0
  36. package/dist/src/analysis/worker-utils.js +206 -0
  37. package/dist/src/analysis/worker-utils.js.map +1 -0
  38. package/dist/src/analytics/AnalyticsRepository.d.ts +1 -5
  39. package/dist/src/analytics/AnalyticsRepository.d.ts.map +1 -1
  40. package/dist/src/analytics/AnalyticsRepository.helpers.d.ts +28 -0
  41. package/dist/src/analytics/AnalyticsRepository.helpers.d.ts.map +1 -0
  42. package/dist/src/analytics/AnalyticsRepository.helpers.js +90 -0
  43. package/dist/src/analytics/AnalyticsRepository.helpers.js.map +1 -0
  44. package/dist/src/analytics/AnalyticsRepository.js +16 -129
  45. package/dist/src/analytics/AnalyticsRepository.js.map +1 -1
  46. package/dist/src/analytics/AnalyticsRepository.types.d.ts +82 -0
  47. package/dist/src/analytics/AnalyticsRepository.types.d.ts.map +1 -0
  48. package/dist/src/analytics/AnalyticsRepository.types.js +8 -0
  49. package/dist/src/analytics/AnalyticsRepository.types.js.map +1 -0
  50. package/dist/src/api/client.d.ts +5 -121
  51. package/dist/src/api/client.d.ts.map +1 -1
  52. package/dist/src/api/client.js +17 -131
  53. package/dist/src/api/client.js.map +1 -1
  54. package/dist/src/api/schemas.d.ts +122 -0
  55. package/dist/src/api/schemas.d.ts.map +1 -0
  56. package/dist/src/api/schemas.js +71 -0
  57. package/dist/src/api/schemas.js.map +1 -0
  58. package/dist/src/api/utils.d.ts +35 -0
  59. package/dist/src/api/utils.d.ts.map +1 -0
  60. package/dist/src/api/utils.js +86 -0
  61. package/dist/src/api/utils.js.map +1 -0
  62. package/dist/src/billing/GDPRComplianceService.d.ts +2 -97
  63. package/dist/src/billing/GDPRComplianceService.d.ts.map +1 -1
  64. package/dist/src/billing/GDPRComplianceService.js.map +1 -1
  65. package/dist/src/billing/StripeClient.d.ts +3 -62
  66. package/dist/src/billing/StripeClient.d.ts.map +1 -1
  67. package/dist/src/billing/StripeClient.js +10 -68
  68. package/dist/src/billing/StripeClient.js.map +1 -1
  69. package/dist/src/billing/StripeReconciliationJob.d.ts +2 -47
  70. package/dist/src/billing/StripeReconciliationJob.d.ts.map +1 -1
  71. package/dist/src/billing/StripeReconciliationJob.js +1 -41
  72. package/dist/src/billing/StripeReconciliationJob.js.map +1 -1
  73. package/dist/src/billing/StripeWebhookHandler.d.ts +3 -59
  74. package/dist/src/billing/StripeWebhookHandler.d.ts.map +1 -1
  75. package/dist/src/billing/StripeWebhookHandler.js +14 -304
  76. package/dist/src/billing/StripeWebhookHandler.js.map +1 -1
  77. package/dist/src/billing/gdpr-types.d.ts +103 -0
  78. package/dist/src/billing/gdpr-types.d.ts.map +1 -0
  79. package/dist/src/billing/gdpr-types.js +7 -0
  80. package/dist/src/billing/gdpr-types.js.map +1 -0
  81. package/dist/src/billing/reconciliation-helpers.d.ts +16 -0
  82. package/dist/src/billing/reconciliation-helpers.d.ts.map +1 -0
  83. package/dist/src/billing/reconciliation-helpers.js +53 -0
  84. package/dist/src/billing/reconciliation-helpers.js.map +1 -0
  85. package/dist/src/billing/reconciliation-types.d.ts +71 -0
  86. package/dist/src/billing/reconciliation-types.d.ts.map +1 -0
  87. package/dist/src/billing/reconciliation-types.js +7 -0
  88. package/dist/src/billing/reconciliation-types.js.map +1 -0
  89. package/dist/src/billing/stripe-client-types.d.ts +45 -0
  90. package/dist/src/billing/stripe-client-types.d.ts.map +1 -0
  91. package/dist/src/billing/stripe-client-types.js +7 -0
  92. package/dist/src/billing/stripe-client-types.js.map +1 -0
  93. package/dist/src/billing/stripe-helpers.d.ts +17 -0
  94. package/dist/src/billing/stripe-helpers.d.ts.map +1 -0
  95. package/dist/src/billing/stripe-helpers.js +50 -0
  96. package/dist/src/billing/stripe-helpers.js.map +1 -0
  97. package/dist/src/billing/webhook-handlers.d.ts +56 -0
  98. package/dist/src/billing/webhook-handlers.d.ts.map +1 -0
  99. package/dist/src/billing/webhook-handlers.js +303 -0
  100. package/dist/src/billing/webhook-handlers.js.map +1 -0
  101. package/dist/src/billing/webhook-types.d.ts +42 -0
  102. package/dist/src/billing/webhook-types.d.ts.map +1 -0
  103. package/dist/src/billing/webhook-types.js +7 -0
  104. package/dist/src/billing/webhook-types.js.map +1 -0
  105. package/dist/src/config/index.d.ts +118 -0
  106. package/dist/src/config/index.d.ts.map +1 -0
  107. package/dist/src/config/index.js +172 -0
  108. package/dist/src/config/index.js.map +1 -0
  109. package/dist/src/db/migration-types.d.ts +101 -0
  110. package/dist/src/db/migration-types.d.ts.map +1 -0
  111. package/dist/src/db/migration-types.js +6 -0
  112. package/dist/src/db/migration-types.js.map +1 -0
  113. package/dist/src/db/migration.d.ts +7 -104
  114. package/dist/src/db/migration.d.ts.map +1 -1
  115. package/dist/src/db/migration.js +15 -65
  116. package/dist/src/db/migration.js.map +1 -1
  117. package/dist/src/embeddings/embedding-types.d.ts +44 -0
  118. package/dist/src/embeddings/embedding-types.d.ts.map +1 -0
  119. package/dist/src/embeddings/embedding-types.js +6 -0
  120. package/dist/src/embeddings/embedding-types.js.map +1 -0
  121. package/dist/src/embeddings/embedding-utils.d.ts +42 -0
  122. package/dist/src/embeddings/embedding-utils.d.ts.map +1 -0
  123. package/dist/src/embeddings/embedding-utils.js +121 -0
  124. package/dist/src/embeddings/embedding-utils.js.map +1 -0
  125. package/dist/src/embeddings/index.d.ts +36 -112
  126. package/dist/src/embeddings/index.d.ts.map +1 -1
  127. package/dist/src/embeddings/index.js +37 -210
  128. package/dist/src/embeddings/index.js.map +1 -1
  129. package/dist/src/exports/repositories.d.ts +18 -0
  130. package/dist/src/exports/repositories.d.ts.map +1 -0
  131. package/dist/src/exports/repositories.js +30 -0
  132. package/dist/src/exports/repositories.js.map +1 -0
  133. package/dist/src/exports/services.d.ts +30 -0
  134. package/dist/src/exports/services.d.ts.map +1 -0
  135. package/dist/src/exports/services.js +70 -0
  136. package/dist/src/exports/services.js.map +1 -0
  137. package/dist/src/exports/types.d.ts +21 -0
  138. package/dist/src/exports/types.d.ts.map +1 -0
  139. package/dist/src/exports/types.js +12 -0
  140. package/dist/src/exports/types.js.map +1 -0
  141. package/dist/src/index.d.ts +10 -54
  142. package/dist/src/index.d.ts.map +1 -1
  143. package/dist/src/index.js +24 -59
  144. package/dist/src/index.js.map +1 -1
  145. package/dist/src/pipeline/DailyIndexPipeline.d.ts +4 -176
  146. package/dist/src/pipeline/DailyIndexPipeline.d.ts.map +1 -1
  147. package/dist/src/pipeline/DailyIndexPipeline.js +9 -83
  148. package/dist/src/pipeline/DailyIndexPipeline.js.map +1 -1
  149. package/dist/src/pipeline/pipeline-types.d.ts +132 -0
  150. package/dist/src/pipeline/pipeline-types.d.ts.map +1 -0
  151. package/dist/src/pipeline/pipeline-types.js +6 -0
  152. package/dist/src/pipeline/pipeline-types.js.map +1 -0
  153. package/dist/src/routing/expert-types.d.ts +109 -0
  154. package/dist/src/routing/expert-types.d.ts.map +1 -0
  155. package/dist/src/routing/expert-types.js +162 -0
  156. package/dist/src/routing/expert-types.js.map +1 -0
  157. package/dist/src/routing/request-types.d.ts +113 -0
  158. package/dist/src/routing/request-types.d.ts.map +1 -0
  159. package/dist/src/routing/request-types.js +9 -0
  160. package/dist/src/routing/request-types.js.map +1 -0
  161. package/dist/src/routing/types.d.ts +5 -207
  162. package/dist/src/routing/types.d.ts.map +1 -1
  163. package/dist/src/routing/types.js +3 -153
  164. package/dist/src/routing/types.js.map +1 -1
  165. package/dist/src/scripts/github-import/github-auth.d.ts +17 -0
  166. package/dist/src/scripts/github-import/github-auth.d.ts.map +1 -0
  167. package/dist/src/scripts/github-import/github-auth.js +201 -0
  168. package/dist/src/scripts/github-import/github-auth.js.map +1 -0
  169. package/dist/src/scripts/github-import/github-client.d.ts +5 -5
  170. package/dist/src/scripts/github-import/github-client.d.ts.map +1 -1
  171. package/dist/src/scripts/github-import/github-client.js +5 -203
  172. package/dist/src/scripts/github-import/github-client.js.map +1 -1
  173. package/dist/src/scripts/merge-skills.d.ts +5 -27
  174. package/dist/src/scripts/merge-skills.d.ts.map +1 -1
  175. package/dist/src/scripts/merge-skills.js +4 -144
  176. package/dist/src/scripts/merge-skills.js.map +1 -1
  177. package/dist/src/scripts/merge-types.d.ts +72 -0
  178. package/dist/src/scripts/merge-types.d.ts.map +1 -0
  179. package/dist/src/scripts/merge-types.js +7 -0
  180. package/dist/src/scripts/merge-types.js.map +1 -0
  181. package/dist/src/scripts/merge-utils.d.ts +23 -0
  182. package/dist/src/scripts/merge-utils.d.ts.map +1 -0
  183. package/dist/src/scripts/merge-utils.js +150 -0
  184. package/dist/src/scripts/merge-utils.js.map +1 -0
  185. package/dist/src/scripts/review-categories.d.ts +41 -0
  186. package/dist/src/scripts/review-categories.d.ts.map +1 -0
  187. package/dist/src/scripts/review-categories.js +316 -0
  188. package/dist/src/scripts/review-categories.js.map +1 -0
  189. package/dist/src/scripts/review-lenny-skills.d.ts +1 -0
  190. package/dist/src/scripts/review-lenny-skills.d.ts.map +1 -1
  191. package/dist/src/scripts/review-lenny-skills.js +5 -310
  192. package/dist/src/scripts/review-lenny-skills.js.map +1 -1
  193. package/dist/src/security/AuditLogger.d.ts +4 -75
  194. package/dist/src/security/AuditLogger.d.ts.map +1 -1
  195. package/dist/src/security/AuditLogger.js +2 -11
  196. package/dist/src/security/AuditLogger.js.map +1 -1
  197. package/dist/src/security/audit-types.d.ts +96 -0
  198. package/dist/src/security/audit-types.d.ts.map +1 -0
  199. package/dist/src/security/audit-types.js +15 -0
  200. package/dist/src/security/audit-types.js.map +1 -0
  201. package/dist/src/security/sanitization.d.ts +1 -85
  202. package/dist/src/security/sanitization.d.ts.map +1 -1
  203. package/dist/src/security/sanitization.js +2 -133
  204. package/dist/src/security/sanitization.js.map +1 -1
  205. package/dist/src/security/stripe-validators.d.ts +92 -0
  206. package/dist/src/security/stripe-validators.d.ts.map +1 -0
  207. package/dist/src/security/stripe-validators.js +139 -0
  208. package/dist/src/security/stripe-validators.js.map +1 -0
  209. package/dist/src/services/SearchService.d.ts +2 -31
  210. package/dist/src/services/SearchService.d.ts.map +1 -1
  211. package/dist/src/services/SearchService.helpers.d.ts +42 -0
  212. package/dist/src/services/SearchService.helpers.d.ts.map +1 -0
  213. package/dist/src/services/SearchService.helpers.js +128 -0
  214. package/dist/src/services/SearchService.helpers.js.map +1 -0
  215. package/dist/src/services/SearchService.js +14 -132
  216. package/dist/src/services/SearchService.js.map +1 -1
  217. package/dist/src/services/SearchService.types.d.ts +53 -0
  218. package/dist/src/services/SearchService.types.d.ts.map +1 -0
  219. package/dist/src/services/SearchService.types.js +7 -0
  220. package/dist/src/services/SearchService.types.js.map +1 -0
  221. package/dist/src/services/SkillAnalyzer.d.ts +6 -86
  222. package/dist/src/services/SkillAnalyzer.d.ts.map +1 -1
  223. package/dist/src/services/SkillAnalyzer.helpers.d.ts +103 -0
  224. package/dist/src/services/SkillAnalyzer.helpers.d.ts.map +1 -0
  225. package/dist/src/services/SkillAnalyzer.helpers.js +237 -0
  226. package/dist/src/services/SkillAnalyzer.helpers.js.map +1 -0
  227. package/dist/src/services/SkillAnalyzer.js +16 -167
  228. package/dist/src/services/SkillAnalyzer.js.map +1 -1
  229. package/dist/src/services/SkillAnalyzer.types.d.ts +110 -0
  230. package/dist/src/services/SkillAnalyzer.types.d.ts.map +1 -0
  231. package/dist/src/services/SkillAnalyzer.types.js +9 -0
  232. package/dist/src/services/SkillAnalyzer.types.js.map +1 -0
  233. package/dist/src/services/SkillDecomposer.d.ts +4 -70
  234. package/dist/src/services/SkillDecomposer.d.ts.map +1 -1
  235. package/dist/src/services/SkillDecomposer.helpers.d.ts +75 -0
  236. package/dist/src/services/SkillDecomposer.helpers.d.ts.map +1 -0
  237. package/dist/src/services/SkillDecomposer.helpers.js +277 -0
  238. package/dist/src/services/SkillDecomposer.helpers.js.map +1 -0
  239. package/dist/src/services/SkillDecomposer.js +6 -249
  240. package/dist/src/services/SkillDecomposer.js.map +1 -1
  241. package/dist/src/services/SkillDecomposer.types.d.ts +104 -0
  242. package/dist/src/services/SkillDecomposer.types.d.ts.map +1 -0
  243. package/dist/src/services/SkillDecomposer.types.js +9 -0
  244. package/dist/src/services/SkillDecomposer.types.js.map +1 -0
  245. package/dist/src/services/SubagentGenerator.d.ts +12 -3
  246. package/dist/src/services/SubagentGenerator.d.ts.map +1 -1
  247. package/dist/src/services/SubagentGenerator.js +43 -10
  248. package/dist/src/services/SubagentGenerator.js.map +1 -1
  249. package/dist/src/services/TaskRunner.d.ts +227 -0
  250. package/dist/src/services/TaskRunner.d.ts.map +1 -0
  251. package/dist/src/services/TaskRunner.js +423 -0
  252. package/dist/src/services/TaskRunner.js.map +1 -0
  253. package/dist/src/services/TransformationService.d.ts +8 -4
  254. package/dist/src/services/TransformationService.d.ts.map +1 -1
  255. package/dist/src/services/TransformationService.js +58 -34
  256. package/dist/src/services/TransformationService.js.map +1 -1
  257. package/dist/src/services/__tests__/TaskRunner.test.d.ts +7 -0
  258. package/dist/src/services/__tests__/TaskRunner.test.d.ts.map +1 -0
  259. package/dist/src/services/__tests__/TaskRunner.test.js +316 -0
  260. package/dist/src/services/__tests__/TaskRunner.test.js.map +1 -0
  261. package/dist/src/services/__tests__/TransformationService.test.js +12 -10
  262. package/dist/src/services/__tests__/TransformationService.test.js.map +1 -1
  263. package/dist/src/telemetry/metric-helpers.d.ts +47 -0
  264. package/dist/src/telemetry/metric-helpers.d.ts.map +1 -0
  265. package/dist/src/telemetry/metric-helpers.js +96 -0
  266. package/dist/src/telemetry/metric-helpers.js.map +1 -0
  267. package/dist/src/telemetry/metric-types.d.ts +73 -0
  268. package/dist/src/telemetry/metric-types.d.ts.map +1 -0
  269. package/dist/src/telemetry/metric-types.js +9 -0
  270. package/dist/src/telemetry/metric-types.js.map +1 -0
  271. package/dist/src/telemetry/metrics.d.ts +8 -119
  272. package/dist/src/telemetry/metrics.d.ts.map +1 -1
  273. package/dist/src/telemetry/metrics.js +20 -193
  274. package/dist/src/telemetry/metrics.js.map +1 -1
  275. package/dist/src/telemetry/span-utils.d.ts +30 -0
  276. package/dist/src/telemetry/span-utils.d.ts.map +1 -0
  277. package/dist/src/telemetry/span-utils.js +62 -0
  278. package/dist/src/telemetry/span-utils.js.map +1 -0
  279. package/dist/src/telemetry/tracer-types.d.ts +91 -0
  280. package/dist/src/telemetry/tracer-types.d.ts.map +1 -0
  281. package/dist/src/telemetry/tracer-types.js +6 -0
  282. package/dist/src/telemetry/tracer-types.js.map +1 -0
  283. package/dist/src/telemetry/tracer.d.ts +5 -122
  284. package/dist/src/telemetry/tracer.d.ts.map +1 -1
  285. package/dist/src/telemetry/tracer.js +23 -168
  286. package/dist/src/telemetry/tracer.js.map +1 -1
  287. package/dist/src/triggers/TriggerDetector.d.ts +6 -142
  288. package/dist/src/triggers/TriggerDetector.d.ts.map +1 -1
  289. package/dist/src/triggers/TriggerDetector.js +15 -247
  290. package/dist/src/triggers/TriggerDetector.js.map +1 -1
  291. package/dist/src/triggers/trigger-constants.d.ts +22 -0
  292. package/dist/src/triggers/trigger-constants.d.ts.map +1 -0
  293. package/dist/src/triggers/trigger-constants.js +185 -0
  294. package/dist/src/triggers/trigger-constants.js.map +1 -0
  295. package/dist/src/triggers/trigger-types.d.ts +90 -0
  296. package/dist/src/triggers/trigger-types.d.ts.map +1 -0
  297. package/dist/src/triggers/trigger-types.js +6 -0
  298. package/dist/src/triggers/trigger-types.js.map +1 -0
  299. package/dist/src/types/skill.d.ts +4 -1
  300. package/dist/src/types/skill.d.ts.map +1 -1
  301. package/dist/src/types/skill.js.map +1 -1
  302. package/dist/src/types.d.ts +6 -2
  303. package/dist/src/types.d.ts.map +1 -1
  304. package/dist/src/types.js +1 -0
  305. package/dist/src/types.js.map +1 -1
  306. package/dist/src/validation/index.d.ts +5 -105
  307. package/dist/src/validation/index.d.ts.map +1 -1
  308. package/dist/src/validation/index.js +9 -421
  309. package/dist/src/validation/index.js.map +1 -1
  310. package/dist/src/validation/input-validators.d.ts +68 -0
  311. package/dist/src/validation/input-validators.d.ts.map +1 -0
  312. package/dist/src/validation/input-validators.js +126 -0
  313. package/dist/src/validation/input-validators.js.map +1 -0
  314. package/dist/src/validation/path-validators.d.ts +23 -0
  315. package/dist/src/validation/path-validators.d.ts.map +1 -0
  316. package/dist/src/validation/path-validators.js +47 -0
  317. package/dist/src/validation/path-validators.js.map +1 -0
  318. package/dist/src/validation/url-validators.d.ts +55 -0
  319. package/dist/src/validation/url-validators.d.ts.map +1 -0
  320. package/dist/src/validation/url-validators.js +267 -0
  321. package/dist/src/validation/url-validators.js.map +1 -0
  322. package/dist/src/validation/validation-error.d.ts +14 -0
  323. package/dist/src/validation/validation-error.d.ts.map +1 -0
  324. package/dist/src/validation/validation-error.js +19 -0
  325. package/dist/src/validation/validation-error.js.map +1 -0
  326. package/dist/src/webhooks/WebhookPayload.d.ts +4 -215
  327. package/dist/src/webhooks/WebhookPayload.d.ts.map +1 -1
  328. package/dist/src/webhooks/WebhookPayload.js +1 -122
  329. package/dist/src/webhooks/WebhookPayload.js.map +1 -1
  330. package/dist/src/webhooks/WebhookQueue.d.ts +2 -140
  331. package/dist/src/webhooks/WebhookQueue.d.ts.map +1 -1
  332. package/dist/src/webhooks/WebhookQueue.js +4 -11
  333. package/dist/src/webhooks/WebhookQueue.js.map +1 -1
  334. package/dist/src/webhooks/WebhookQueue.types.d.ts +149 -0
  335. package/dist/src/webhooks/WebhookQueue.types.d.ts.map +1 -0
  336. package/dist/src/webhooks/WebhookQueue.types.js +10 -0
  337. package/dist/src/webhooks/WebhookQueue.types.js.map +1 -0
  338. package/dist/src/webhooks/WebhookQueue.utils.d.ts +44 -0
  339. package/dist/src/webhooks/WebhookQueue.utils.d.ts.map +1 -0
  340. package/dist/src/webhooks/WebhookQueue.utils.js +58 -0
  341. package/dist/src/webhooks/WebhookQueue.utils.js.map +1 -0
  342. package/dist/src/webhooks/webhook-schemas.d.ts +213 -0
  343. package/dist/src/webhooks/webhook-schemas.d.ts.map +1 -0
  344. package/dist/src/webhooks/webhook-schemas.js +132 -0
  345. package/dist/src/webhooks/webhook-schemas.js.map +1 -0
  346. package/dist/src/webhooks/webhook-types.d.ts +222 -0
  347. package/dist/src/webhooks/webhook-types.d.ts.map +1 -0
  348. package/dist/src/webhooks/webhook-types.js +10 -0
  349. package/dist/src/webhooks/webhook-types.js.map +1 -0
  350. package/dist/tests/integration/neural/neural-fixtures.d.ts +19 -0
  351. package/dist/tests/integration/neural/neural-fixtures.d.ts.map +1 -0
  352. package/dist/tests/integration/neural/neural-fixtures.js +49 -0
  353. package/dist/tests/integration/neural/neural-fixtures.js.map +1 -0
  354. package/dist/tests/integration/neural/neural-mocks-privacy.d.ts +78 -0
  355. package/dist/tests/integration/neural/neural-mocks-privacy.d.ts.map +1 -0
  356. package/dist/tests/integration/neural/neural-mocks-privacy.js +146 -0
  357. package/dist/tests/integration/neural/neural-mocks-privacy.js.map +1 -0
  358. package/dist/tests/integration/neural/neural-mocks.d.ts +90 -0
  359. package/dist/tests/integration/neural/neural-mocks.d.ts.map +1 -0
  360. package/dist/tests/integration/neural/neural-mocks.js +288 -0
  361. package/dist/tests/integration/neural/neural-mocks.js.map +1 -0
  362. package/dist/tests/integration/neural/neural-test-utils.d.ts +27 -0
  363. package/dist/tests/integration/neural/neural-test-utils.d.ts.map +1 -0
  364. package/dist/tests/integration/neural/neural-test-utils.js +35 -0
  365. package/dist/tests/integration/neural/neural-test-utils.js.map +1 -0
  366. package/dist/tests/integration/neural/setup.d.ts +6 -165
  367. package/dist/tests/integration/neural/setup.d.ts.map +1 -1
  368. package/dist/tests/integration/neural/setup.js +9 -477
  369. package/dist/tests/integration/neural/setup.js.map +1 -1
  370. package/package.json +4 -4
@@ -1,5 +1,5 @@
1
1
  /**
2
- * SMI-XXX: TransformationService - Orchestrate skill optimization pipeline
2
+ * SMI-1788: TransformationService - Orchestrate skill optimization pipeline
3
3
  *
4
4
  * The central service for transforming community skills into optimized versions.
5
5
  * Coordinates the full pipeline:
@@ -98,14 +98,17 @@ export declare class TransformationService {
98
98
  */
99
99
  transform(skillId: string, skillName: string, description: string, content: string): Promise<TransformationResult>;
100
100
  /**
101
- * Quick transform without caching (for testing or one-off transforms)
101
+ * Transform without caching (for testing or one-off transforms)
102
+ *
103
+ * SMI-1798: Note that this is NOT a synchronous I/O operation - the name
104
+ * indicates it runs without async cache operations.
102
105
  *
103
106
  * @param skillName - Human-readable skill name
104
107
  * @param description - Skill description
105
108
  * @param content - The full SKILL.md content
106
109
  * @returns Transformation result
107
110
  */
108
- transformSync(skillName: string, description: string, content: string): TransformationResult;
111
+ transformWithoutCache(skillName: string, description: string, content: string): TransformationResult;
109
112
  /**
110
113
  * Check if a skill would benefit from transformation without fully transforming
111
114
  *
@@ -126,7 +129,8 @@ export declare class TransformationService {
126
129
  */
127
130
  private buildCacheKey;
128
131
  /**
129
- * Simple hash function for content comparison
132
+ * SMI-1790: Compute SHA-256 hash for content comparison
133
+ * Uses cryptographic hash for reliable cache invalidation
130
134
  */
131
135
  private hashContent;
132
136
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"TransformationService.d.ts","sourceRoot":"","sources":["../../../src/services/TransformationService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TransformationService.d.ts","sourceRoot":"","sources":["../../../src/services/TransformationService.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,QAAQ,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAG9D,OAAO,EAAqC,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAM1F,OAAO,EAGL,KAAK,kBAAkB,EACxB,MAAM,wBAAwB,CAAA;AAE/B;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,yCAAyC;IACzC,WAAW,EAAE,OAAO,CAAA;IAEpB,0CAA0C;IAC1C,gBAAgB,EAAE,MAAM,CAAA;IAExB,iCAAiC;IACjC,SAAS,EAAE,KAAK,CAAC;QACf,QAAQ,EAAE,MAAM,CAAA;QAChB,OAAO,EAAE,MAAM,CAAA;KAChB,CAAC,CAAA;IAEF,wCAAwC;IACxC,QAAQ,CAAC,EAAE,kBAAkB,CAAA;IAE7B,oCAAoC;IACpC,eAAe,CAAC,EAAE,MAAM,CAAA;IAExB,gCAAgC;IAChC,KAAK,EAAE,mBAAmB,CAAA;IAE1B,gDAAgD;IAChD,QAAQ,EAAE,aAAa,CAAA;IAEvB,0CAA0C;IAC1C,WAAW,EAAE,MAAM,CAAA;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,kCAAkC;IAClC,aAAa,EAAE,MAAM,CAAA;IAErB,sCAAsC;IACtC,cAAc,EAAE,MAAM,CAAA;IAEtB,qCAAqC;IACrC,aAAa,EAAE,MAAM,CAAA;IAErB,6CAA6C;IAC7C,iBAAiB,EAAE,OAAO,CAAA;IAE1B,qCAAqC;IACrC,iBAAiB,EAAE,OAAO,CAAA;IAE1B,2CAA2C;IAC3C,qBAAqB,EAAE,MAAM,CAAA;IAE7B,oCAAoC;IACpC,mBAAmB,EAAE,MAAM,CAAA;CAC5B;AAYD;;GAEG;AACH,MAAM,WAAW,4BAA4B;IAC3C,oDAAoD;IACpD,QAAQ,CAAC,EAAE,MAAM,CAAA;IAEjB,qCAAqC;IACrC,WAAW,CAAC,EAAE,OAAO,CAAA;IAErB,8DAA8D;IAC9D,cAAc,CAAC,EAAE,OAAO,CAAA;IAExB,oDAAoD;IACpD,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAsBD;;GAEG;AACH,qBAAa,qBAAqB;IAChC,OAAO,CAAC,KAAK,CAAwB;IACrC,OAAO,CAAC,OAAO,CAAwC;IAEvD;;;;;OAKG;gBACS,EAAE,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,4BAA4B;IAKrE;;;;;;;;OAQG;IACG,SAAS,CACb,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,oBAAoB,CAAC;IAmEhC;;;;;;;;;;OAUG;IACH,qBAAqB,CACnB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,GACd,oBAAoB;IAqCvB;;;;;OAKG;IACH,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa;IAIvC;;OAEG;IACH,OAAO,CAAC,uBAAuB;IA6B/B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAyB3B;;OAEG;IACH,OAAO,CAAC,aAAa;IAIrB;;;OAGG;IACH,OAAO,CAAC,WAAW;IAInB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA2B3B;;OAEG;IACH,OAAO,CAAC,WAAW;IA8CnB;;OAEG;IACH,UAAU,IAAI,MAAM;IAKpB;;OAEG;IACH,aAAa,IAAI;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE;CAOpE;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAC5B,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,GACd,oBAAoB,CAGtB;AAED,eAAe,qBAAqB,CAAA"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * SMI-XXX: TransformationService - Orchestrate skill optimization pipeline
2
+ * SMI-1788: TransformationService - Orchestrate skill optimization pipeline
3
3
  *
4
4
  * The central service for transforming community skills into optimized versions.
5
5
  * Coordinates the full pipeline:
@@ -15,6 +15,7 @@
15
15
  *
16
16
  * Part of the Skillsmith Optimization Layer.
17
17
  */
18
+ import { createHash } from 'crypto';
18
19
  import { CacheRepository } from '../repositories/CacheRepository.js';
19
20
  import { analyzeSkill, quickTransformCheck } from './SkillAnalyzer.js';
20
21
  import { decomposeSkill, parallelizeTaskCalls, } from './SkillDecomposer.js';
@@ -25,6 +26,11 @@ const DEFAULT_OPTIONS = {
25
26
  forceTransform: false,
26
27
  version: '1.0.0',
27
28
  };
29
+ /**
30
+ * SMI-1791: Maximum content length to process (2MB)
31
+ * Prevents DoS from extremely large inputs
32
+ */
33
+ const MAX_CONTENT_LENGTH = 2 * 1024 * 1024;
28
34
  /** Cache key prefix for transformed skills */
29
35
  const CACHE_KEY_PREFIX = 'transform:';
30
36
  /** Attribution text added to optimized skills */
@@ -56,6 +62,10 @@ export class TransformationService {
56
62
  */
57
63
  async transform(skillId, skillName, description, content) {
58
64
  const startTime = Date.now();
65
+ // SMI-1791: Validate content length to prevent DoS
66
+ if (content.length > MAX_CONTENT_LENGTH) {
67
+ throw new Error(`Content exceeds maximum length of ${MAX_CONTENT_LENGTH} bytes (got ${content.length})`);
68
+ }
59
69
  // Check cache first (unless force transform)
60
70
  if (!this.options.forceTransform && this.cache) {
61
71
  const cached = this.getCachedTransformation(skillId, content);
@@ -96,15 +106,22 @@ export class TransformationService {
96
106
  return result;
97
107
  }
98
108
  /**
99
- * Quick transform without caching (for testing or one-off transforms)
109
+ * Transform without caching (for testing or one-off transforms)
110
+ *
111
+ * SMI-1798: Note that this is NOT a synchronous I/O operation - the name
112
+ * indicates it runs without async cache operations.
100
113
  *
101
114
  * @param skillName - Human-readable skill name
102
115
  * @param description - Skill description
103
116
  * @param content - The full SKILL.md content
104
117
  * @returns Transformation result
105
118
  */
106
- transformSync(skillName, description, content) {
119
+ transformWithoutCache(skillName, description, content) {
107
120
  const startTime = Date.now();
121
+ // SMI-1791: Validate content length to prevent DoS
122
+ if (content.length > MAX_CONTENT_LENGTH) {
123
+ throw new Error(`Content exceeds maximum length of ${MAX_CONTENT_LENGTH} bytes (got ${content.length})`);
124
+ }
108
125
  // Quick check if transformation is needed
109
126
  if (!quickTransformCheck(content)) {
110
127
  return this.createMinimalResult(content, startTime);
@@ -140,21 +157,28 @@ export class TransformationService {
140
157
  getCachedTransformation(skillId, content) {
141
158
  if (!this.cache)
142
159
  return null;
143
- const cacheKey = this.buildCacheKey(skillId);
144
- const cached = this.cache.get(cacheKey);
145
- if (!cached)
146
- return null;
147
- // Validate cache entry
148
- const contentHash = this.hashContent(content);
149
- if (cached.skillHash !== contentHash) {
150
- // Content changed, invalidate cache
151
- return null;
160
+ try {
161
+ const cacheKey = this.buildCacheKey(skillId);
162
+ const cached = this.cache.get(cacheKey);
163
+ if (!cached)
164
+ return null;
165
+ // Validate cache entry
166
+ const contentHash = this.hashContent(content);
167
+ if (cached.skillHash !== contentHash) {
168
+ // Content changed, invalidate cache
169
+ return null;
170
+ }
171
+ if (cached.version !== this.options.version) {
172
+ // Version mismatch, invalidate cache
173
+ return null;
174
+ }
175
+ return cached.result;
152
176
  }
153
- if (cached.version !== this.options.version) {
154
- // Version mismatch, invalidate cache
177
+ catch (error) {
178
+ // Log error but continue with fresh transformation
179
+ console.warn(`Cache read failed for ${skillId}:`, error);
155
180
  return null;
156
181
  }
157
- return cached.result;
158
182
  }
159
183
  /**
160
184
  * Cache a transformation result
@@ -162,15 +186,21 @@ export class TransformationService {
162
186
  cacheTransformation(skillId, content, result) {
163
187
  if (!this.cache)
164
188
  return;
165
- const cacheKey = this.buildCacheKey(skillId);
166
- const contentHash = this.hashContent(content);
167
- const cacheEntry = {
168
- result,
169
- skillHash: contentHash,
170
- cachedAt: new Date().toISOString(),
171
- version: this.options.version,
172
- };
173
- this.cache.set(cacheKey, cacheEntry, this.options.cacheTtl);
189
+ try {
190
+ const cacheKey = this.buildCacheKey(skillId);
191
+ const contentHash = this.hashContent(content);
192
+ const cacheEntry = {
193
+ result,
194
+ skillHash: contentHash,
195
+ cachedAt: new Date().toISOString(),
196
+ version: this.options.version,
197
+ };
198
+ this.cache.set(cacheKey, cacheEntry, this.options.cacheTtl);
199
+ }
200
+ catch (error) {
201
+ // Log error but continue - caching is non-critical
202
+ console.warn(`Cache write failed for ${skillId}:`, error);
203
+ }
174
204
  }
175
205
  /**
176
206
  * Build cache key for a skill
@@ -179,17 +209,11 @@ export class TransformationService {
179
209
  return `${CACHE_KEY_PREFIX}${skillId}`;
180
210
  }
181
211
  /**
182
- * Simple hash function for content comparison
212
+ * SMI-1790: Compute SHA-256 hash for content comparison
213
+ * Uses cryptographic hash for reliable cache invalidation
183
214
  */
184
215
  hashContent(content) {
185
- // Simple hash for content comparison
186
- let hash = 0;
187
- for (let i = 0; i < content.length; i++) {
188
- const char = content.charCodeAt(i);
189
- hash = (hash << 5) - hash + char;
190
- hash = hash & hash; // Convert to 32-bit integer
191
- }
192
- return hash.toString(16);
216
+ return createHash('sha256').update(content, 'utf8').digest('hex');
193
217
  }
194
218
  /**
195
219
  * Create minimal result for skills that don't need transformation
@@ -285,7 +309,7 @@ export class TransformationService {
285
309
  */
286
310
  export function transformSkill(skillName, description, content) {
287
311
  const service = new TransformationService();
288
- return service.transformSync(skillName, description, content);
312
+ return service.transformWithoutCache(skillName, description, content);
289
313
  }
290
314
  export default TransformationService;
291
315
  //# sourceMappingURL=TransformationService.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TransformationService.js","sourceRoot":"","sources":["../../../src/services/TransformationService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TransformationService.js","sourceRoot":"","sources":["../../../src/services/TransformationService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * SMI-1662: TaskRunner Tests
3
+ *
4
+ * Tests for background task timeout management functionality.
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=TaskRunner.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TaskRunner.test.d.ts","sourceRoot":"","sources":["../../../../src/services/__tests__/TaskRunner.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
@@ -0,0 +1,316 @@
1
+ /**
2
+ * SMI-1662: TaskRunner Tests
3
+ *
4
+ * Tests for background task timeout management functionality.
5
+ */
6
+ import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest';
7
+ import { TaskRunner, createTaskRunner, getGlobalTaskRunner, setGlobalTaskRunner, disposeGlobalTaskRunner, DEFAULT_TASK_TIMEOUT_MS, SIGKILL_GRACE_PERIOD_MS, WARNING_THRESHOLD_RATIO, } from '../TaskRunner.js';
8
+ import { silentLogger } from '../../utils/logger.js';
9
+ describe('TaskRunner', () => {
10
+ let runner;
11
+ beforeEach(() => {
12
+ vi.useFakeTimers();
13
+ runner = new TaskRunner({
14
+ timeoutMs: 10000, // 10 seconds for faster tests
15
+ logger: silentLogger,
16
+ });
17
+ });
18
+ afterEach(() => {
19
+ runner.dispose();
20
+ vi.useRealTimers();
21
+ });
22
+ describe('constructor', () => {
23
+ it('should use default timeout if not specified', () => {
24
+ const defaultRunner = new TaskRunner({ logger: silentLogger });
25
+ expect(defaultRunner.getTimeoutMs()).toBe(DEFAULT_TASK_TIMEOUT_MS);
26
+ defaultRunner.dispose();
27
+ });
28
+ it('should use custom timeout when provided', () => {
29
+ const customRunner = new TaskRunner({ timeoutMs: 5000, logger: silentLogger });
30
+ expect(customRunner.getTimeoutMs()).toBe(5000);
31
+ customRunner.dispose();
32
+ });
33
+ it('should read timeout from environment variable', () => {
34
+ const originalEnv = process.env.TASK_TIMEOUT_MS;
35
+ process.env.TASK_TIMEOUT_MS = '120000';
36
+ const envRunner = new TaskRunner({ logger: silentLogger });
37
+ expect(envRunner.getTimeoutMs()).toBe(120000);
38
+ envRunner.dispose();
39
+ if (originalEnv !== undefined) {
40
+ process.env.TASK_TIMEOUT_MS = originalEnv;
41
+ }
42
+ else {
43
+ delete process.env.TASK_TIMEOUT_MS;
44
+ }
45
+ });
46
+ it('should prefer explicit config over environment variable', () => {
47
+ const originalEnv = process.env.TASK_TIMEOUT_MS;
48
+ process.env.TASK_TIMEOUT_MS = '120000';
49
+ const configRunner = new TaskRunner({ timeoutMs: 5000, logger: silentLogger });
50
+ expect(configRunner.getTimeoutMs()).toBe(5000);
51
+ configRunner.dispose();
52
+ if (originalEnv !== undefined) {
53
+ process.env.TASK_TIMEOUT_MS = originalEnv;
54
+ }
55
+ else {
56
+ delete process.env.TASK_TIMEOUT_MS;
57
+ }
58
+ });
59
+ });
60
+ describe('register', () => {
61
+ it('should register a task and return an ID', () => {
62
+ const taskId = runner.register(12345, 'Test task');
63
+ expect(taskId).toBeDefined();
64
+ expect(typeof taskId).toBe('string');
65
+ expect(taskId.length).toBeGreaterThan(0);
66
+ });
67
+ it('should track the registered task', () => {
68
+ const taskId = runner.register(12345, 'Test task');
69
+ const task = runner.getTask(taskId);
70
+ expect(task).toBeDefined();
71
+ expect(task?.pid).toBe(12345);
72
+ expect(task?.description).toBe('Test task');
73
+ expect(task?.status).toBe('running');
74
+ expect(task?.warningIssued).toBe(false);
75
+ });
76
+ it('should set correct start time', () => {
77
+ const now = Date.now();
78
+ const taskId = runner.register(12345, 'Test task');
79
+ const task = runner.getTask(taskId);
80
+ expect(task?.startedAt).toBeGreaterThanOrEqual(now);
81
+ expect(task?.startedAt).toBeLessThanOrEqual(now + 100);
82
+ });
83
+ });
84
+ describe('complete', () => {
85
+ it('should mark task as completed', () => {
86
+ const taskId = runner.register(12345, 'Test task');
87
+ runner.complete(taskId);
88
+ const task = runner.getTask(taskId);
89
+ expect(task?.status).toBe('completed');
90
+ expect(task?.endedAt).toBeDefined();
91
+ expect(task?.durationMs).toBeDefined();
92
+ });
93
+ it('should calculate duration correctly', () => {
94
+ const taskId = runner.register(12345, 'Test task');
95
+ // Advance time by 1 second
96
+ vi.advanceTimersByTime(1000);
97
+ runner.complete(taskId);
98
+ const task = runner.getTask(taskId);
99
+ expect(task?.durationMs).toBeGreaterThanOrEqual(1000);
100
+ });
101
+ });
102
+ describe('fail', () => {
103
+ it('should mark task as failed with error message', () => {
104
+ const taskId = runner.register(12345, 'Test task');
105
+ runner.fail(taskId, 'Something went wrong');
106
+ const task = runner.getTask(taskId);
107
+ expect(task?.status).toBe('failed');
108
+ expect(task?.error).toBe('Something went wrong');
109
+ });
110
+ it('should extract message from Error object', () => {
111
+ const taskId = runner.register(12345, 'Test task');
112
+ runner.fail(taskId, new Error('Error object message'));
113
+ const task = runner.getTask(taskId);
114
+ expect(task?.error).toBe('Error object message');
115
+ });
116
+ });
117
+ describe('getTasks', () => {
118
+ it('should return all tasks when no filter specified', () => {
119
+ runner.register(1, 'Task 1');
120
+ runner.register(2, 'Task 2');
121
+ runner.register(3, 'Task 3');
122
+ const tasks = runner.getTasks();
123
+ expect(tasks).toHaveLength(3);
124
+ });
125
+ it('should filter tasks by status', () => {
126
+ const task1 = runner.register(1, 'Task 1');
127
+ runner.register(2, 'Task 2');
128
+ const task3 = runner.register(3, 'Task 3');
129
+ runner.complete(task1);
130
+ runner.fail(task3, 'error');
131
+ const runningTasks = runner.getTasks('running');
132
+ expect(runningTasks).toHaveLength(1);
133
+ const completedTasks = runner.getTasks('completed');
134
+ expect(completedTasks).toHaveLength(1);
135
+ const failedTasks = runner.getTasks('failed');
136
+ expect(failedTasks).toHaveLength(1);
137
+ });
138
+ });
139
+ describe('getStats', () => {
140
+ it('should return correct statistics', () => {
141
+ const task1 = runner.register(1, 'Task 1');
142
+ runner.register(2, 'Task 2');
143
+ const task3 = runner.register(3, 'Task 3');
144
+ runner.register(4, 'Task 4');
145
+ runner.complete(task1);
146
+ runner.fail(task3, 'error');
147
+ const stats = runner.getStats();
148
+ expect(stats.total).toBe(4);
149
+ expect(stats.running).toBe(2);
150
+ expect(stats.completed).toBe(1);
151
+ expect(stats.failed).toBe(1);
152
+ expect(stats.timeout).toBe(0);
153
+ expect(stats.killed).toBe(0);
154
+ });
155
+ });
156
+ describe('warning callback', () => {
157
+ it('should issue warning at 80% of timeout', () => {
158
+ const warningCallback = vi.fn();
159
+ const testRunner = new TaskRunner({
160
+ timeoutMs: 10000,
161
+ logger: silentLogger,
162
+ onWarning: warningCallback,
163
+ });
164
+ testRunner.register(12345, 'Test task');
165
+ // Advance to just before warning threshold (80%)
166
+ vi.advanceTimersByTime(7900);
167
+ expect(warningCallback).not.toHaveBeenCalled();
168
+ // Advance past warning threshold
169
+ vi.advanceTimersByTime(200);
170
+ expect(warningCallback).toHaveBeenCalled();
171
+ const call = warningCallback.mock.calls[0];
172
+ expect(call[0].pid).toBe(12345);
173
+ expect(call[1]).toBeGreaterThan(0); // remaining time
174
+ testRunner.dispose();
175
+ });
176
+ it('should set warningIssued flag', () => {
177
+ const taskId = runner.register(12345, 'Test task');
178
+ // Advance past warning threshold (80% of 10s = 8s)
179
+ vi.advanceTimersByTime(8100);
180
+ const task = runner.getTask(taskId);
181
+ expect(task?.warningIssued).toBe(true);
182
+ });
183
+ });
184
+ describe('timeout handling', () => {
185
+ it('should call onTimeout callback when task times out', async () => {
186
+ const timeoutCallback = vi.fn();
187
+ const testRunner = new TaskRunner({
188
+ timeoutMs: 10000,
189
+ logger: silentLogger,
190
+ onTimeout: timeoutCallback,
191
+ });
192
+ // Mock process.kill to prevent actual signals
193
+ const killSpy = vi.spyOn(process, 'kill').mockImplementation(() => true);
194
+ testRunner.register(12345, 'Test task');
195
+ // Advance past timeout and allow async operations to complete
196
+ vi.advanceTimersByTime(10100);
197
+ await vi.runAllTimersAsync();
198
+ expect(timeoutCallback).toHaveBeenCalled();
199
+ expect(timeoutCallback.mock.calls[0][0].pid).toBe(12345);
200
+ killSpy.mockRestore();
201
+ testRunner.dispose();
202
+ });
203
+ it('should mark task as timeout after timeout', async () => {
204
+ const killSpy = vi.spyOn(process, 'kill').mockImplementation(() => true);
205
+ const taskId = runner.register(12345, 'Test task');
206
+ // Advance past timeout + grace period and allow async operations to complete
207
+ vi.advanceTimersByTime(10000 + SIGKILL_GRACE_PERIOD_MS + 100);
208
+ await vi.runAllTimersAsync();
209
+ const task = runner.getTask(taskId);
210
+ expect(task?.status).toBe('timeout');
211
+ killSpy.mockRestore();
212
+ });
213
+ it('should send SIGTERM first during graceful shutdown', () => {
214
+ const killSpy = vi.spyOn(process, 'kill').mockImplementation(() => true);
215
+ runner.register(12345, 'Test task');
216
+ // Advance to timeout
217
+ vi.advanceTimersByTime(10100);
218
+ // First call should be SIGTERM
219
+ expect(killSpy).toHaveBeenCalledWith(12345, 'SIGTERM');
220
+ killSpy.mockRestore();
221
+ });
222
+ });
223
+ describe('cleanup', () => {
224
+ it('should clean up old completed tasks', () => {
225
+ const task1 = runner.register(1, 'Task 1');
226
+ runner.register(2, 'Task 2');
227
+ runner.complete(task1);
228
+ // Advance time past max age
229
+ vi.advanceTimersByTime(3700000); // > 1 hour
230
+ const cleaned = runner.cleanup();
231
+ expect(cleaned).toBe(1);
232
+ });
233
+ it('should not clean up running tasks', () => {
234
+ runner.register(1, 'Task 1');
235
+ // Advance time
236
+ vi.advanceTimersByTime(3700000);
237
+ // Need to prevent timeout from firing
238
+ const killSpy = vi.spyOn(process, 'kill').mockImplementation(() => true);
239
+ const cleaned = runner.cleanup();
240
+ expect(cleaned).toBe(0);
241
+ killSpy.mockRestore();
242
+ });
243
+ it('should respect custom maxAgeMs', () => {
244
+ const task1 = runner.register(1, 'Task 1');
245
+ runner.complete(task1);
246
+ // Advance time by 30 minutes
247
+ vi.advanceTimersByTime(1800000);
248
+ // Clean with 1 hour max age - should not clean
249
+ const cleaned1 = runner.cleanup(3600000);
250
+ expect(cleaned1).toBe(0);
251
+ // Clean with 15 minute max age - should clean
252
+ const cleaned2 = runner.cleanup(900000);
253
+ expect(cleaned2).toBe(1);
254
+ });
255
+ });
256
+ describe('dispose', () => {
257
+ it('should clear all timers', () => {
258
+ runner.register(1, 'Task 1');
259
+ runner.register(2, 'Task 2');
260
+ runner.dispose();
261
+ // Advance time - no callbacks should fire
262
+ const killSpy = vi.spyOn(process, 'kill');
263
+ vi.advanceTimersByTime(20000);
264
+ expect(killSpy).not.toHaveBeenCalled();
265
+ killSpy.mockRestore();
266
+ });
267
+ });
268
+ describe('constants', () => {
269
+ it('should have correct default timeout', () => {
270
+ expect(DEFAULT_TASK_TIMEOUT_MS).toBe(600000); // 10 minutes
271
+ });
272
+ it('should have correct grace period', () => {
273
+ expect(SIGKILL_GRACE_PERIOD_MS).toBe(5000); // 5 seconds
274
+ });
275
+ it('should have correct warning threshold', () => {
276
+ expect(WARNING_THRESHOLD_RATIO).toBe(0.8); // 80%
277
+ });
278
+ });
279
+ });
280
+ describe('Global TaskRunner', () => {
281
+ afterEach(() => {
282
+ disposeGlobalTaskRunner();
283
+ });
284
+ it('should create singleton on first access', () => {
285
+ const runner1 = getGlobalTaskRunner();
286
+ const runner2 = getGlobalTaskRunner();
287
+ expect(runner1).toBe(runner2);
288
+ });
289
+ it('should allow setting custom global runner', () => {
290
+ const customRunner = new TaskRunner({ timeoutMs: 5000, logger: silentLogger });
291
+ setGlobalTaskRunner(customRunner);
292
+ const retrieved = getGlobalTaskRunner();
293
+ expect(retrieved).toBe(customRunner);
294
+ expect(retrieved.getTimeoutMs()).toBe(5000);
295
+ });
296
+ it('should dispose global runner', () => {
297
+ const runner = getGlobalTaskRunner();
298
+ disposeGlobalTaskRunner();
299
+ // Next call should create new instance
300
+ const newRunner = getGlobalTaskRunner();
301
+ expect(newRunner).not.toBe(runner);
302
+ });
303
+ });
304
+ describe('createTaskRunner', () => {
305
+ it('should create new TaskRunner instance', () => {
306
+ const runner = createTaskRunner({ logger: silentLogger });
307
+ expect(runner).toBeInstanceOf(TaskRunner);
308
+ runner.dispose();
309
+ });
310
+ it('should pass config to TaskRunner', () => {
311
+ const runner = createTaskRunner({ timeoutMs: 5000, logger: silentLogger });
312
+ expect(runner.getTimeoutMs()).toBe(5000);
313
+ runner.dispose();
314
+ });
315
+ });
316
+ //# sourceMappingURL=TaskRunner.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TaskRunner.test.js","sourceRoot":"","sources":["../../../../src/services/__tests__/TaskRunner.test.ts"],"names":[],"mappings":"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"}