@skillsmith/core 0.5.3 → 0.5.5

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 (276) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/src/activation/ActivationManager.d.ts +7 -0
  4. package/dist/src/activation/ActivationManager.d.ts.map +1 -1
  5. package/dist/src/activation/ActivationManager.js +13 -4
  6. package/dist/src/activation/ActivationManager.js.map +1 -1
  7. package/dist/src/analysis/adapters/python.d.ts +16 -11
  8. package/dist/src/analysis/adapters/python.d.ts.map +1 -1
  9. package/dist/src/analysis/adapters/python.js +46 -61
  10. package/dist/src/analysis/adapters/python.js.map +1 -1
  11. package/dist/src/analysis/router.test.d.ts +2 -0
  12. package/dist/src/analysis/router.test.d.ts.map +1 -0
  13. package/dist/src/analysis/router.test.js +411 -0
  14. package/dist/src/analysis/router.test.js.map +1 -0
  15. package/dist/src/analysis/tree-sitter/manager.d.ts.map +1 -1
  16. package/dist/src/analysis/tree-sitter/manager.js +12 -5
  17. package/dist/src/analysis/tree-sitter/manager.js.map +1 -1
  18. package/dist/src/analysis/tree-sitter/pythonExtractor.d.ts +45 -0
  19. package/dist/src/analysis/tree-sitter/pythonExtractor.d.ts.map +1 -0
  20. package/dist/src/analysis/tree-sitter/pythonExtractor.js +264 -0
  21. package/dist/src/analysis/tree-sitter/pythonExtractor.js.map +1 -0
  22. package/dist/src/analysis/tree-sitter/pythonExtractor.test.d.ts +12 -0
  23. package/dist/src/analysis/tree-sitter/pythonExtractor.test.d.ts.map +1 -0
  24. package/dist/src/analysis/tree-sitter/pythonExtractor.test.js +74 -0
  25. package/dist/src/analysis/tree-sitter/pythonExtractor.test.js.map +1 -0
  26. package/dist/src/analysis/tree-sitter/pythonIncremental.d.ts +93 -0
  27. package/dist/src/analysis/tree-sitter/pythonIncremental.d.ts.map +1 -0
  28. package/dist/src/analysis/tree-sitter/pythonIncremental.hardening.test.d.ts +22 -0
  29. package/dist/src/analysis/tree-sitter/pythonIncremental.hardening.test.d.ts.map +1 -0
  30. package/dist/src/analysis/tree-sitter/pythonIncremental.hardening.test.js +229 -0
  31. package/dist/src/analysis/tree-sitter/pythonIncremental.hardening.test.js.map +1 -0
  32. package/dist/src/analysis/tree-sitter/pythonIncremental.js +287 -0
  33. package/dist/src/analysis/tree-sitter/pythonIncremental.js.map +1 -0
  34. package/dist/src/analysis/tree-sitter/pythonIncremental.test.d.ts +17 -0
  35. package/dist/src/analysis/tree-sitter/pythonIncremental.test.d.ts.map +1 -0
  36. package/dist/src/analysis/tree-sitter/pythonIncremental.test.js +142 -0
  37. package/dist/src/analysis/tree-sitter/pythonIncremental.test.js.map +1 -0
  38. package/dist/src/analysis/tree-sitter/queries/python.d.ts +43 -0
  39. package/dist/src/analysis/tree-sitter/queries/python.d.ts.map +1 -0
  40. package/dist/src/analysis/tree-sitter/queries/python.js +88 -0
  41. package/dist/src/analysis/tree-sitter/queries/python.js.map +1 -0
  42. package/dist/src/analysis/tree-sitter/queryExtractionMatchesOrExceedsRegex.test.d.ts +13 -0
  43. package/dist/src/analysis/tree-sitter/queryExtractionMatchesOrExceedsRegex.test.d.ts.map +1 -0
  44. package/dist/src/analysis/tree-sitter/queryExtractionMatchesOrExceedsRegex.test.js +174 -0
  45. package/dist/src/analysis/tree-sitter/queryExtractionMatchesOrExceedsRegex.test.js.map +1 -0
  46. package/dist/src/analytics/ROIDashboardService.csv.d.ts +11 -0
  47. package/dist/src/analytics/ROIDashboardService.csv.d.ts.map +1 -0
  48. package/dist/src/analytics/ROIDashboardService.csv.js +43 -0
  49. package/dist/src/analytics/ROIDashboardService.csv.js.map +1 -0
  50. package/dist/src/analytics/ROIDashboardService.d.ts +64 -3
  51. package/dist/src/analytics/ROIDashboardService.d.ts.map +1 -1
  52. package/dist/src/analytics/ROIDashboardService.js +116 -45
  53. package/dist/src/analytics/ROIDashboardService.js.map +1 -1
  54. package/dist/src/api/client.d.ts +4 -66
  55. package/dist/src/api/client.d.ts.map +1 -1
  56. package/dist/src/api/client.events.d.ts.map +1 -1
  57. package/dist/src/api/client.events.js +10 -1
  58. package/dist/src/api/client.events.js.map +1 -1
  59. package/dist/src/api/client.js +40 -66
  60. package/dist/src/api/client.js.map +1 -1
  61. package/dist/src/api/client.token-refresh.d.ts +3 -0
  62. package/dist/src/api/client.token-refresh.d.ts.map +1 -0
  63. package/dist/src/api/client.token-refresh.js +19 -0
  64. package/dist/src/api/client.token-refresh.js.map +1 -0
  65. package/dist/src/api/client.token-refresh.test.d.ts +2 -0
  66. package/dist/src/api/client.token-refresh.test.d.ts.map +1 -0
  67. package/dist/src/api/client.token-refresh.test.js +73 -0
  68. package/dist/src/api/client.token-refresh.test.js.map +1 -0
  69. package/dist/src/api/client.types.d.ts +2 -0
  70. package/dist/src/api/client.types.d.ts.map +1 -1
  71. package/dist/src/api/index.d.ts +1 -1
  72. package/dist/src/api/index.d.ts.map +1 -1
  73. package/dist/src/api/index.js +1 -1
  74. package/dist/src/api/index.js.map +1 -1
  75. package/dist/src/api/schemas.d.ts +60 -60
  76. package/dist/src/api/schemas.d.ts.map +1 -1
  77. package/dist/src/benchmarks/incrementalParseBenchmark.d.ts +18 -0
  78. package/dist/src/benchmarks/incrementalParseBenchmark.d.ts.map +1 -0
  79. package/dist/src/benchmarks/incrementalParseBenchmark.js +121 -0
  80. package/dist/src/benchmarks/incrementalParseBenchmark.js.map +1 -0
  81. package/dist/src/billing/GDPRComplianceService.test.d.ts +2 -0
  82. package/dist/src/billing/GDPRComplianceService.test.d.ts.map +1 -0
  83. package/dist/src/billing/GDPRComplianceService.test.js +405 -0
  84. package/dist/src/billing/GDPRComplianceService.test.js.map +1 -0
  85. package/dist/src/config/index.d.ts +4 -0
  86. package/dist/src/config/index.d.ts.map +1 -1
  87. package/dist/src/config/index.js +6 -0
  88. package/dist/src/config/index.js.map +1 -1
  89. package/dist/src/config/token-credentials.d.ts +13 -0
  90. package/dist/src/config/token-credentials.d.ts.map +1 -0
  91. package/dist/src/config/token-credentials.js +126 -0
  92. package/dist/src/config/token-credentials.js.map +1 -0
  93. package/dist/src/config/token-credentials.test.d.ts +10 -0
  94. package/dist/src/config/token-credentials.test.d.ts.map +1 -0
  95. package/dist/src/config/token-credentials.test.js +91 -0
  96. package/dist/src/config/token-credentials.test.js.map +1 -0
  97. package/dist/src/index.d.ts +7 -4
  98. package/dist/src/index.d.ts.map +1 -1
  99. package/dist/src/index.js +6 -3
  100. package/dist/src/index.js.map +1 -1
  101. package/dist/src/indexer/SkillParser.coverage.test.d.ts +10 -0
  102. package/dist/src/indexer/SkillParser.coverage.test.d.ts.map +1 -0
  103. package/dist/src/indexer/SkillParser.coverage.test.js +76 -0
  104. package/dist/src/indexer/SkillParser.coverage.test.js.map +1 -0
  105. package/dist/src/indexer/SkillParser.test.d.ts +2 -0
  106. package/dist/src/indexer/SkillParser.test.d.ts.map +1 -0
  107. package/dist/src/indexer/SkillParser.test.js +375 -0
  108. package/dist/src/indexer/SkillParser.test.js.map +1 -0
  109. package/dist/src/scripts/__tests__/scan-imported-skills.test.js +34 -5
  110. package/dist/src/scripts/__tests__/scan-imported-skills.test.js.map +1 -1
  111. package/dist/src/scripts/github-import/blocklist.d.ts +65 -0
  112. package/dist/src/scripts/github-import/blocklist.d.ts.map +1 -0
  113. package/dist/src/scripts/github-import/blocklist.js +124 -0
  114. package/dist/src/scripts/github-import/blocklist.js.map +1 -0
  115. package/dist/src/scripts/github-import/index.d.ts +1 -0
  116. package/dist/src/scripts/github-import/index.d.ts.map +1 -1
  117. package/dist/src/scripts/github-import/index.js +3 -0
  118. package/dist/src/scripts/github-import/index.js.map +1 -1
  119. package/dist/src/scripts/github-import/signal-of-intent.d.ts +87 -0
  120. package/dist/src/scripts/github-import/signal-of-intent.d.ts.map +1 -0
  121. package/dist/src/scripts/github-import/signal-of-intent.js +213 -0
  122. package/dist/src/scripts/github-import/signal-of-intent.js.map +1 -0
  123. package/dist/src/scripts/github-import/types.d.ts +22 -0
  124. package/dist/src/scripts/github-import/types.d.ts.map +1 -1
  125. package/dist/src/scripts/github-import/types.js.map +1 -1
  126. package/dist/src/scripts/import-github-skills.js +73 -3
  127. package/dist/src/scripts/import-github-skills.js.map +1 -1
  128. package/dist/src/scripts/skill-scanner/allowlist.d.ts +38 -0
  129. package/dist/src/scripts/skill-scanner/allowlist.d.ts.map +1 -0
  130. package/dist/src/scripts/skill-scanner/allowlist.js +178 -0
  131. package/dist/src/scripts/skill-scanner/allowlist.js.map +1 -0
  132. package/dist/src/scripts/skill-scanner/scanner.d.ts +10 -2
  133. package/dist/src/scripts/skill-scanner/scanner.d.ts.map +1 -1
  134. package/dist/src/scripts/skill-scanner/scanner.js +15 -3
  135. package/dist/src/scripts/skill-scanner/scanner.js.map +1 -1
  136. package/dist/src/scripts/skill-scanner/trust-scorer.d.ts +20 -6
  137. package/dist/src/scripts/skill-scanner/trust-scorer.d.ts.map +1 -1
  138. package/dist/src/scripts/skill-scanner/trust-scorer.js +28 -9
  139. package/dist/src/scripts/skill-scanner/trust-scorer.js.map +1 -1
  140. package/dist/src/scripts/skill-scanner/types.d.ts +50 -0
  141. package/dist/src/scripts/skill-scanner/types.d.ts.map +1 -1
  142. package/dist/src/scripts/validation/types.d.ts +14 -24
  143. package/dist/src/scripts/validation/types.d.ts.map +1 -1
  144. package/dist/src/security/scanner/SecurityScanner.helpers.d.ts +18 -0
  145. package/dist/src/security/scanner/SecurityScanner.helpers.d.ts.map +1 -1
  146. package/dist/src/security/scanner/SecurityScanner.helpers.js +54 -6
  147. package/dist/src/security/scanner/SecurityScanner.helpers.js.map +1 -1
  148. package/dist/src/security/scanner/patterns.d.ts.map +1 -1
  149. package/dist/src/security/scanner/patterns.js +45 -5
  150. package/dist/src/security/scanner/patterns.js.map +1 -1
  151. package/dist/src/services/skill-config-schema.d.ts +4 -36
  152. package/dist/src/services/skill-config-schema.d.ts.map +1 -1
  153. package/dist/src/sources/LocalFilesystemAdapter.d.ts +104 -10
  154. package/dist/src/sources/LocalFilesystemAdapter.d.ts.map +1 -1
  155. package/dist/src/sources/LocalFilesystemAdapter.helpers.d.ts +92 -0
  156. package/dist/src/sources/LocalFilesystemAdapter.helpers.d.ts.map +1 -0
  157. package/dist/src/sources/LocalFilesystemAdapter.helpers.js +157 -0
  158. package/dist/src/sources/LocalFilesystemAdapter.helpers.js.map +1 -0
  159. package/dist/src/sources/LocalFilesystemAdapter.js +218 -159
  160. package/dist/src/sources/LocalFilesystemAdapter.js.map +1 -1
  161. package/dist/src/sources/LocalFilesystemAdapter.scan.d.ts +78 -0
  162. package/dist/src/sources/LocalFilesystemAdapter.scan.d.ts.map +1 -0
  163. package/dist/src/sources/LocalFilesystemAdapter.scan.js +118 -0
  164. package/dist/src/sources/LocalFilesystemAdapter.scan.js.map +1 -0
  165. package/dist/src/sources/index.d.ts +1 -1
  166. package/dist/src/sources/index.d.ts.map +1 -1
  167. package/dist/src/sources/index.js.map +1 -1
  168. package/dist/src/sources/types.d.ts +28 -0
  169. package/dist/src/sources/types.d.ts.map +1 -1
  170. package/dist/src/telemetry/tracer-imports.d.ts +13 -0
  171. package/dist/src/telemetry/tracer-imports.d.ts.map +1 -0
  172. package/dist/src/telemetry/tracer-imports.js +26 -0
  173. package/dist/src/telemetry/tracer-imports.js.map +1 -0
  174. package/dist/src/telemetry/tracer.d.ts.map +1 -1
  175. package/dist/src/telemetry/tracer.js +18 -21
  176. package/dist/src/telemetry/tracer.js.map +1 -1
  177. package/dist/src/utils/rate-limit.d.ts +39 -0
  178. package/dist/src/utils/rate-limit.d.ts.map +1 -0
  179. package/dist/src/utils/rate-limit.js +48 -0
  180. package/dist/src/utils/rate-limit.js.map +1 -0
  181. package/dist/src/utils/rate-limit.test.d.ts +11 -0
  182. package/dist/src/utils/rate-limit.test.d.ts.map +1 -0
  183. package/dist/src/utils/rate-limit.test.js +86 -0
  184. package/dist/src/utils/rate-limit.test.js.map +1 -0
  185. package/dist/src/webhooks/WebhookDeadLetterRepository.d.ts +178 -0
  186. package/dist/src/webhooks/WebhookDeadLetterRepository.d.ts.map +1 -0
  187. package/dist/src/webhooks/WebhookDeadLetterRepository.js +196 -0
  188. package/dist/src/webhooks/WebhookDeadLetterRepository.js.map +1 -0
  189. package/dist/src/webhooks/WebhookQueue.d.ts +1 -0
  190. package/dist/src/webhooks/WebhookQueue.d.ts.map +1 -1
  191. package/dist/src/webhooks/WebhookQueue.js +19 -0
  192. package/dist/src/webhooks/WebhookQueue.js.map +1 -1
  193. package/dist/src/webhooks/WebhookQueue.types.d.ts +11 -0
  194. package/dist/src/webhooks/WebhookQueue.types.d.ts.map +1 -1
  195. package/dist/src/webhooks/index.d.ts +1 -0
  196. package/dist/src/webhooks/index.d.ts.map +1 -1
  197. package/dist/src/webhooks/index.js +2 -0
  198. package/dist/src/webhooks/index.js.map +1 -1
  199. package/dist/src/webhooks/webhook-schemas.d.ts +117 -1212
  200. package/dist/src/webhooks/webhook-schemas.d.ts.map +1 -1
  201. package/dist/tests/ActivationManager.test.d.ts +13 -0
  202. package/dist/tests/ActivationManager.test.d.ts.map +1 -0
  203. package/dist/tests/ActivationManager.test.js +218 -0
  204. package/dist/tests/ActivationManager.test.js.map +1 -0
  205. package/dist/tests/LocalFilesystemAdapter.coverage.test.d.ts +13 -0
  206. package/dist/tests/LocalFilesystemAdapter.coverage.test.d.ts.map +1 -0
  207. package/dist/tests/LocalFilesystemAdapter.coverage.test.js +314 -0
  208. package/dist/tests/LocalFilesystemAdapter.coverage.test.js.map +1 -0
  209. package/dist/tests/LocalFilesystemAdapter.security.test.d.ts +18 -0
  210. package/dist/tests/LocalFilesystemAdapter.security.test.d.ts.map +1 -0
  211. package/dist/tests/LocalFilesystemAdapter.security.test.js +344 -0
  212. package/dist/tests/LocalFilesystemAdapter.security.test.js.map +1 -0
  213. package/dist/tests/LocalFilesystemAdapter.test.d.ts +12 -0
  214. package/dist/tests/LocalFilesystemAdapter.test.d.ts.map +1 -0
  215. package/dist/tests/LocalFilesystemAdapter.test.js +301 -0
  216. package/dist/tests/LocalFilesystemAdapter.test.js.map +1 -0
  217. package/dist/tests/ROIDashboardService.coverage.test.d.ts +9 -0
  218. package/dist/tests/ROIDashboardService.coverage.test.d.ts.map +1 -0
  219. package/dist/tests/ROIDashboardService.coverage.test.js +118 -0
  220. package/dist/tests/ROIDashboardService.coverage.test.js.map +1 -0
  221. package/dist/tests/ROIDashboardService.test.js +87 -0
  222. package/dist/tests/ROIDashboardService.test.js.map +1 -1
  223. package/dist/tests/ScraperAdapters.gitlab-coverage.test.d.ts +14 -0
  224. package/dist/tests/ScraperAdapters.gitlab-coverage.test.d.ts.map +1 -0
  225. package/dist/tests/ScraperAdapters.gitlab-coverage.test.js +169 -0
  226. package/dist/tests/ScraperAdapters.gitlab-coverage.test.js.map +1 -0
  227. package/dist/tests/ScraperAdapters.test.d.ts +5 -1
  228. package/dist/tests/ScraperAdapters.test.d.ts.map +1 -1
  229. package/dist/tests/ScraperAdapters.test.js +6 -336
  230. package/dist/tests/ScraperAdapters.test.js.map +1 -1
  231. package/dist/tests/WebhookDeadLetterRepository.test.d.ts +2 -0
  232. package/dist/tests/WebhookDeadLetterRepository.test.d.ts.map +1 -0
  233. package/dist/tests/WebhookDeadLetterRepository.test.js +333 -0
  234. package/dist/tests/WebhookDeadLetterRepository.test.js.map +1 -0
  235. package/dist/tests/WebhookHandler.test.js +93 -1
  236. package/dist/tests/WebhookHandler.test.js.map +1 -1
  237. package/dist/tests/WebhookQueue.coverage.test.d.ts +19 -0
  238. package/dist/tests/WebhookQueue.coverage.test.d.ts.map +1 -0
  239. package/dist/tests/WebhookQueue.coverage.test.js +190 -0
  240. package/dist/tests/WebhookQueue.coverage.test.js.map +1 -0
  241. package/dist/tests/api/client.events.test.d.ts +10 -0
  242. package/dist/tests/api/client.events.test.d.ts.map +1 -0
  243. package/dist/tests/api/client.events.test.js +85 -0
  244. package/dist/tests/api/client.events.test.js.map +1 -0
  245. package/dist/tests/billing/GDPRCompliance.test.d.ts +2 -2
  246. package/dist/tests/billing/GDPRCompliance.test.js +221 -36
  247. package/dist/tests/billing/GDPRCompliance.test.js.map +1 -1
  248. package/dist/tests/github-import/blocklist.test.d.ts +15 -0
  249. package/dist/tests/github-import/blocklist.test.d.ts.map +1 -0
  250. package/dist/tests/github-import/blocklist.test.js +182 -0
  251. package/dist/tests/github-import/blocklist.test.js.map +1 -0
  252. package/dist/tests/github-import/signal-of-intent.test.d.ts +15 -0
  253. package/dist/tests/github-import/signal-of-intent.test.d.ts.map +1 -0
  254. package/dist/tests/github-import/signal-of-intent.test.js +171 -0
  255. package/dist/tests/github-import/signal-of-intent.test.js.map +1 -0
  256. package/dist/tests/security/scanner-regression-guard.test.d.ts +12 -0
  257. package/dist/tests/security/scanner-regression-guard.test.d.ts.map +1 -1
  258. package/dist/tests/security/scanner-regression-guard.test.js +15 -3
  259. package/dist/tests/security/scanner-regression-guard.test.js.map +1 -1
  260. package/dist/tests/security/scanner-wave2-fixtures.test.d.ts +12 -0
  261. package/dist/tests/security/scanner-wave2-fixtures.test.d.ts.map +1 -0
  262. package/dist/tests/security/scanner-wave2-fixtures.test.js +173 -0
  263. package/dist/tests/security/scanner-wave2-fixtures.test.js.map +1 -0
  264. package/dist/tests/security.test.js +1 -0
  265. package/dist/tests/security.test.js.map +1 -1
  266. package/dist/tests/skill-scanner/allowlist.test.d.ts +16 -0
  267. package/dist/tests/skill-scanner/allowlist.test.d.ts.map +1 -0
  268. package/dist/tests/skill-scanner/allowlist.test.js +332 -0
  269. package/dist/tests/skill-scanner/allowlist.test.js.map +1 -0
  270. package/dist/tests/telemetry.test.js +126 -0
  271. package/dist/tests/telemetry.test.js.map +1 -1
  272. package/dist/tests/webhooks/WebhookDeadLetterRepository.test.d.ts +10 -0
  273. package/dist/tests/webhooks/WebhookDeadLetterRepository.test.d.ts.map +1 -0
  274. package/dist/tests/webhooks/WebhookDeadLetterRepository.test.js +109 -0
  275. package/dist/tests/webhooks/WebhookDeadLetterRepository.test.js.map +1 -0
  276. package/package.json +8 -3
@@ -1 +1 @@
1
- {"version":3,"file":"ScraperAdapters.test.js","sourceRoot":"","sources":["../../tests/ScraperAdapters.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ScraperAdapters.test.js","sourceRoot":"","sources":["../../tests/ScraperAdapters.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=WebhookDeadLetterRepository.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WebhookDeadLetterRepository.test.d.ts","sourceRoot":"","sources":["../../tests/WebhookDeadLetterRepository.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,333 @@
1
+ /**
2
+ * SMI-4291 / SMI-4308: Tests for WebhookDeadLetterRepository
3
+ *
4
+ * Exercises the insert / list / markRetried / markResolved paths against an
5
+ * in-memory fake that mirrors the Supabase PostgREST client surface we
6
+ * actually use.
7
+ *
8
+ * SMI-4308 updates:
9
+ * - `listUnretried` → `listOpen` (alias retained; both exercised here)
10
+ * - new `markResolved` suite
11
+ * - in-process filter now compound on `retried_at === null && resolved_at === null`
12
+ */
13
+ import { describe, it, expect, beforeEach } from 'vitest';
14
+ import { WebhookDeadLetterRepository, } from '../src/webhooks/WebhookDeadLetterRepository.js';
15
+ function createFake() {
16
+ const state = {
17
+ rows: [],
18
+ insertError: null,
19
+ updateError: null,
20
+ selectError: null,
21
+ };
22
+ const client = {
23
+ from(table) {
24
+ if (table !== 'webhook_dead_letters') {
25
+ throw new Error(`Unexpected table: ${table}`);
26
+ }
27
+ return {
28
+ insert: async (row) => {
29
+ if (state.insertError)
30
+ return { error: { message: state.insertError } };
31
+ const newRow = {
32
+ id: `row-${state.rows.length + 1}`,
33
+ retried_at: null,
34
+ retry_success: null,
35
+ resolved_at: null,
36
+ resolved_by: null,
37
+ created_at: new Date().toISOString(),
38
+ ...row,
39
+ };
40
+ state.rows.push(newRow);
41
+ return { error: null };
42
+ },
43
+ select: () => ({
44
+ eq: (_col, value) => ({
45
+ order: async () => {
46
+ if (state.selectError) {
47
+ return { data: null, error: { message: state.selectError } };
48
+ }
49
+ const filtered = state.rows
50
+ .filter((r) => r.team_id === value)
51
+ .sort((a, b) => (a.last_failed_at < b.last_failed_at ? 1 : -1));
52
+ return { data: filtered, error: null };
53
+ },
54
+ }),
55
+ }),
56
+ update: (patch) => ({
57
+ eq: async (_col, id) => {
58
+ if (state.updateError) {
59
+ return { data: null, error: { message: state.updateError } };
60
+ }
61
+ const idx = state.rows.findIndex((r) => r.id === id);
62
+ if (idx === -1)
63
+ return { data: null, error: null };
64
+ state.rows[idx] = { ...state.rows[idx], ...patch };
65
+ return { data: state.rows[idx], error: null };
66
+ },
67
+ }),
68
+ };
69
+ },
70
+ };
71
+ return { client, state };
72
+ }
73
+ // ---------------------------------------------------------------------------
74
+ // insertDeadLetter
75
+ // ---------------------------------------------------------------------------
76
+ describe('WebhookDeadLetterRepository.insertDeadLetter', () => {
77
+ let fake;
78
+ let repo;
79
+ beforeEach(() => {
80
+ fake = createFake();
81
+ repo = new WebhookDeadLetterRepository(fake.client);
82
+ });
83
+ it('persists a row with normalized timestamps', async () => {
84
+ const firstFailed = new Date('2026-04-18T00:00:00Z');
85
+ await repo.insertDeadLetter({
86
+ originalEventId: 'evt-1',
87
+ endpointUrl: 'https://example.com/hook',
88
+ payload: { foo: 'bar' },
89
+ failureReason: 'HTTP 500',
90
+ attemptCount: 3,
91
+ firstFailedAt: firstFailed,
92
+ teamId: 'team-a',
93
+ });
94
+ expect(fake.state.rows).toHaveLength(1);
95
+ const row = fake.state.rows[0];
96
+ expect(row.original_event_id).toBe('evt-1');
97
+ expect(row.team_id).toBe('team-a');
98
+ expect(row.first_failed_at).toBe(firstFailed.toISOString());
99
+ expect(row.attempt_count).toBe(3);
100
+ expect(row.retried_at).toBeNull();
101
+ expect(row.retry_success).toBeNull();
102
+ expect(row.resolved_at).toBeNull();
103
+ expect(row.resolved_by).toBeNull();
104
+ });
105
+ it('rejects empty endpoint_url', async () => {
106
+ await expect(repo.insertDeadLetter({
107
+ originalEventId: 'evt-2',
108
+ endpointUrl: '',
109
+ payload: {},
110
+ failureReason: 'nope',
111
+ attemptCount: 1,
112
+ firstFailedAt: new Date(),
113
+ teamId: 'team-a',
114
+ })).rejects.toThrow(/endpoint_url length/);
115
+ expect(fake.state.rows).toHaveLength(0);
116
+ });
117
+ it('rejects endpoint_url longer than 2048 chars', async () => {
118
+ await expect(repo.insertDeadLetter({
119
+ originalEventId: 'evt-3',
120
+ endpointUrl: 'https://example.com/' + 'a'.repeat(2050),
121
+ payload: {},
122
+ failureReason: 'nope',
123
+ attemptCount: 1,
124
+ firstFailedAt: new Date(),
125
+ teamId: 'team-a',
126
+ })).rejects.toThrow(/endpoint_url length/);
127
+ });
128
+ it('rejects non-positive attempt_count', async () => {
129
+ await expect(repo.insertDeadLetter({
130
+ originalEventId: 'evt-4',
131
+ endpointUrl: 'https://example.com/h',
132
+ payload: {},
133
+ failureReason: 'nope',
134
+ attemptCount: 0,
135
+ firstFailedAt: new Date(),
136
+ teamId: 'team-a',
137
+ })).rejects.toThrow(/positive integer/);
138
+ });
139
+ it('surfaces Supabase errors with a sanitized message', async () => {
140
+ fake.state.insertError = 'insert denied by RLS';
141
+ await expect(repo.insertDeadLetter({
142
+ originalEventId: 'evt-5',
143
+ endpointUrl: 'https://example.com/h',
144
+ payload: {},
145
+ failureReason: 'nope',
146
+ attemptCount: 1,
147
+ firstFailedAt: new Date(),
148
+ teamId: 'team-a',
149
+ })).rejects.toThrow(/insert failed: insert denied by RLS/);
150
+ });
151
+ });
152
+ // ---------------------------------------------------------------------------
153
+ // listOpen (+ deprecated listUnretried alias)
154
+ // ---------------------------------------------------------------------------
155
+ describe('WebhookDeadLetterRepository.listOpen', () => {
156
+ let fake;
157
+ let repo;
158
+ beforeEach(async () => {
159
+ fake = createFake();
160
+ repo = new WebhookDeadLetterRepository(fake.client);
161
+ // Seed: one open, one retried, one resolved, one open on team-b.
162
+ const base = {
163
+ payload: {},
164
+ failureReason: 'r',
165
+ attemptCount: 1,
166
+ endpointUrl: 'https://example.com/h',
167
+ };
168
+ await repo.insertDeadLetter({
169
+ ...base,
170
+ originalEventId: 'e1-retried',
171
+ firstFailedAt: '2026-04-18T00:00:00Z',
172
+ lastFailedAt: '2026-04-18T00:00:00Z',
173
+ teamId: 'team-a',
174
+ });
175
+ await repo.insertDeadLetter({
176
+ ...base,
177
+ originalEventId: 'e2-open',
178
+ firstFailedAt: '2026-04-18T01:00:00Z',
179
+ lastFailedAt: '2026-04-18T01:00:00Z',
180
+ teamId: 'team-a',
181
+ });
182
+ await repo.insertDeadLetter({
183
+ ...base,
184
+ originalEventId: 'e3-resolved',
185
+ firstFailedAt: '2026-04-18T02:00:00Z',
186
+ lastFailedAt: '2026-04-18T02:00:00Z',
187
+ teamId: 'team-a',
188
+ });
189
+ await repo.insertDeadLetter({
190
+ ...base,
191
+ originalEventId: 'e4-team-b',
192
+ firstFailedAt: '2026-04-18T03:00:00Z',
193
+ lastFailedAt: '2026-04-18T03:00:00Z',
194
+ teamId: 'team-b',
195
+ });
196
+ // Mark terminal states post-insert.
197
+ fake.state.rows[0].retried_at = '2026-04-18T03:00:00Z';
198
+ fake.state.rows[0].retry_success = true;
199
+ fake.state.rows[2].resolved_at = '2026-04-18T04:00:00Z';
200
+ fake.state.rows[2].resolved_by = 'user-abc';
201
+ });
202
+ it('returns only open rows for the given team (excludes retried + resolved)', async () => {
203
+ const rows = await repo.listOpen('team-a');
204
+ expect(rows).toHaveLength(1);
205
+ expect(rows[0].original_event_id).toBe('e2-open');
206
+ });
207
+ it('isolates teams (2-team test, finding from SMI-4292)', async () => {
208
+ const a = await repo.listOpen('team-a');
209
+ const b = await repo.listOpen('team-b');
210
+ const aIds = a.map((r) => r.original_event_id);
211
+ const bIds = b.map((r) => r.original_event_id);
212
+ expect(aIds).not.toContain('e4-team-b');
213
+ expect(bIds).toEqual(['e4-team-b']);
214
+ });
215
+ it('returns empty array when no rows match', async () => {
216
+ const rows = await repo.listOpen('team-nonexistent');
217
+ expect(rows).toEqual([]);
218
+ });
219
+ it('surfaces select errors', async () => {
220
+ fake.state.selectError = 'query timeout';
221
+ await expect(repo.listOpen('team-a')).rejects.toThrow(/list failed: query timeout/);
222
+ });
223
+ it('deprecated listUnretried alias still works and delegates to listOpen', async () => {
224
+ const rows = await repo.listUnretried('team-a');
225
+ expect(rows).toHaveLength(1);
226
+ expect(rows[0].original_event_id).toBe('e2-open');
227
+ });
228
+ });
229
+ // ---------------------------------------------------------------------------
230
+ // markRetried (kept — dormant until SMI-4322 delivery worker)
231
+ // ---------------------------------------------------------------------------
232
+ describe('WebhookDeadLetterRepository.markRetried', () => {
233
+ let fake;
234
+ let repo;
235
+ beforeEach(async () => {
236
+ fake = createFake();
237
+ repo = new WebhookDeadLetterRepository(fake.client);
238
+ await repo.insertDeadLetter({
239
+ originalEventId: 'e1',
240
+ endpointUrl: 'https://example.com/h',
241
+ payload: {},
242
+ failureReason: 'r',
243
+ attemptCount: 1,
244
+ firstFailedAt: new Date(),
245
+ teamId: 'team-a',
246
+ });
247
+ });
248
+ it('sets retried_at + retry_success=true on success', async () => {
249
+ await repo.markRetried('row-1', true);
250
+ const row = fake.state.rows[0];
251
+ expect(row.retried_at).not.toBeNull();
252
+ expect(row.retry_success).toBe(true);
253
+ });
254
+ it('sets retry_success=false on failure', async () => {
255
+ await repo.markRetried('row-1', false);
256
+ expect(fake.state.rows[0].retry_success).toBe(false);
257
+ });
258
+ it('surfaces update errors', async () => {
259
+ fake.state.updateError = 'update denied';
260
+ await expect(repo.markRetried('row-1', true)).rejects.toThrow(/markRetried failed: update denied/);
261
+ });
262
+ });
263
+ // ---------------------------------------------------------------------------
264
+ // markResolved (SMI-4308 — operator acknowledgement)
265
+ // ---------------------------------------------------------------------------
266
+ describe('WebhookDeadLetterRepository.markResolved', () => {
267
+ let fake;
268
+ let repo;
269
+ beforeEach(async () => {
270
+ fake = createFake();
271
+ repo = new WebhookDeadLetterRepository(fake.client);
272
+ await repo.insertDeadLetter({
273
+ originalEventId: 'e1',
274
+ endpointUrl: 'https://example.com/h',
275
+ payload: {},
276
+ failureReason: 'r',
277
+ attemptCount: 1,
278
+ firstFailedAt: new Date(),
279
+ teamId: 'team-a',
280
+ });
281
+ });
282
+ it('sets resolved_at + resolved_by on success', async () => {
283
+ await repo.markResolved('row-1', 'user-abc');
284
+ const row = fake.state.rows[0];
285
+ expect(row.resolved_at).not.toBeNull();
286
+ expect(row.resolved_by).toBe('user-abc');
287
+ // retry columns must stay untouched (three-state semantic preserved).
288
+ expect(row.retried_at).toBeNull();
289
+ expect(row.retry_success).toBeNull();
290
+ });
291
+ it('writes resolved_by = null when not provided', async () => {
292
+ await repo.markResolved('row-1');
293
+ expect(fake.state.rows[0].resolved_by).toBeNull();
294
+ expect(fake.state.rows[0].resolved_at).not.toBeNull();
295
+ });
296
+ it('surfaces update errors', async () => {
297
+ fake.state.updateError = 'update denied';
298
+ await expect(repo.markResolved('row-1', 'user-abc')).rejects.toThrow(/markResolved failed: update denied/);
299
+ });
300
+ });
301
+ // ---------------------------------------------------------------------------
302
+ // makeSink — integrates with WebhookQueue's deadLetterSink option
303
+ // ---------------------------------------------------------------------------
304
+ describe('WebhookDeadLetterRepository.makeSink', () => {
305
+ it('produces a sink that writes rows with extracted endpoint + payload', async () => {
306
+ const fake = createFake();
307
+ const repo = new WebhookDeadLetterRepository(fake.client);
308
+ const sink = repo.makeSink({
309
+ teamId: 'team-a',
310
+ extractEndpointUrl: (item) => `https://example.com/hooks/${item.repoFullName}`,
311
+ });
312
+ const item = {
313
+ id: 'evt-123',
314
+ type: 'index',
315
+ repoUrl: 'https://github.com/org/repo',
316
+ repoFullName: 'org/repo',
317
+ filePath: 'SKILL.md',
318
+ commitSha: 'abc',
319
+ timestamp: Date.parse('2026-04-18T00:00:00Z'),
320
+ priority: 'medium',
321
+ retries: 3,
322
+ };
323
+ await sink(item, 'HTTP 500');
324
+ expect(fake.state.rows).toHaveLength(1);
325
+ const row = fake.state.rows[0];
326
+ expect(row.original_event_id).toBe('evt-123');
327
+ expect(row.endpoint_url).toBe('https://example.com/hooks/org/repo');
328
+ expect(row.failure_reason).toBe('HTTP 500');
329
+ expect(row.attempt_count).toBe(4); // retries + 1
330
+ expect(row.team_id).toBe('team-a');
331
+ });
332
+ });
333
+ //# sourceMappingURL=WebhookDeadLetterRepository.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WebhookDeadLetterRepository.test.js","sourceRoot":"","sources":["../../tests/WebhookDeadLetterRepository.test.ts"],"names":[],"mappings":"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"}
@@ -6,7 +6,7 @@
6
6
  * - WebhookHandler: Signature verification and event processing
7
7
  * - WebhookQueue: Priority queue with debouncing and retry
8
8
  */
9
- import { describe, it, expect, beforeEach, afterEach } from 'vitest';
9
+ import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest';
10
10
  import { createHmac } from 'crypto';
11
11
  import { isSkillFile, extractSkillChanges, parseWebhookPayload, } from '../src/webhooks/WebhookPayload.js';
12
12
  import { WebhookHandler } from '../src/webhooks/WebhookHandler.js';
@@ -546,6 +546,98 @@ describe('WebhookQueue', () => {
546
546
  expect(queue.hasPendingItems()).toBe(false);
547
547
  });
548
548
  });
549
+ // --------------------------------------------------------------------
550
+ // SMI-4291: deadLetterSink — exhaustion path writes to the DLQ
551
+ //
552
+ // Plan: docs/internal/implementation/github-wave-4-webhook-dlq.md
553
+ // Finding C3: sink failures must NOT rethrow; console.error only.
554
+ // --------------------------------------------------------------------
555
+ describe('deadLetterSink (SMI-4291)', () => {
556
+ it('invokes sink with reason when item exhausts maxRetries', async () => {
557
+ const sinkCalls = [];
558
+ // maxRetries=1 exhausts on the first failure (matches Wave 3's
559
+ // "onProcessed callback on failure" test timing assumptions).
560
+ const dlqQueue = new WebhookQueue({
561
+ debounceMs: 0,
562
+ maxRetries: 1,
563
+ retryDelayMs: 1,
564
+ processor: async () => {
565
+ throw new Error('Always fails');
566
+ },
567
+ deadLetterSink: async (item, reason) => {
568
+ sinkCalls.push({ itemId: item.id, reason });
569
+ },
570
+ });
571
+ dlqQueue.addImmediate(createQueueItem({ id: 'dlq-1' }));
572
+ await new Promise((r) => setTimeout(r, 100));
573
+ await dlqQueue.waitForProcessing();
574
+ expect(sinkCalls).toHaveLength(1);
575
+ expect(sinkCalls[0].itemId).toBe('dlq-1');
576
+ expect(sinkCalls[0].reason).toContain('Always fails');
577
+ });
578
+ it('does NOT invoke sink on successful processing', async () => {
579
+ const sinkCalls = [];
580
+ const successQueue = new WebhookQueue({
581
+ debounceMs: 0,
582
+ maxRetries: 2,
583
+ retryDelayMs: 1,
584
+ processor: async () => {
585
+ // no-op success
586
+ },
587
+ deadLetterSink: async (item, reason) => {
588
+ sinkCalls.push({ itemId: item.id, reason });
589
+ },
590
+ });
591
+ successQueue.addImmediate(createQueueItem({ id: 'dlq-2' }));
592
+ await new Promise((r) => setTimeout(r, 50));
593
+ await successQueue.waitForProcessing();
594
+ expect(sinkCalls).toHaveLength(0);
595
+ });
596
+ it('swallows sink errors via console.error; does not rethrow (finding C3)', async () => {
597
+ const consoleErrorSpy = vi.spyOn(console, 'error').mockImplementation(() => { });
598
+ const processedResults = [];
599
+ const crashQueue = new WebhookQueue({
600
+ debounceMs: 0,
601
+ maxRetries: 1,
602
+ retryDelayMs: 1,
603
+ processor: async () => {
604
+ throw new Error('Processor fail');
605
+ },
606
+ deadLetterSink: async () => {
607
+ throw new Error('Sink crashed');
608
+ },
609
+ onProcessed: (result) => {
610
+ processedResults.push({ success: result.success });
611
+ },
612
+ });
613
+ crashQueue.addImmediate(createQueueItem({ id: 'dlq-3' }));
614
+ await new Promise((r) => setTimeout(r, 150));
615
+ await crashQueue.waitForProcessing();
616
+ // sink error must be logged via console.error
617
+ expect(consoleErrorSpy).toHaveBeenCalledWith('[webhook-dlq] Sink failed; event dropped locally', expect.objectContaining({
618
+ event_id: 'dlq-3',
619
+ sink_error: 'Sink crashed',
620
+ }));
621
+ // onProcessed must still fire (exhaustion path completed)
622
+ expect(processedResults).toHaveLength(1);
623
+ expect(processedResults[0].success).toBe(false);
624
+ consoleErrorSpy.mockRestore();
625
+ });
626
+ it('is optional — queue works without a sink', async () => {
627
+ const noSinkQueue = new WebhookQueue({
628
+ debounceMs: 0,
629
+ maxRetries: 1,
630
+ retryDelayMs: 1,
631
+ processor: async () => {
632
+ throw new Error('Fail');
633
+ },
634
+ });
635
+ noSinkQueue.addImmediate(createQueueItem({ id: 'dlq-4' }));
636
+ await new Promise((r) => setTimeout(r, 100));
637
+ await noSinkQueue.waitForProcessing();
638
+ expect(noSinkQueue.getStats().total).toBe(0);
639
+ });
640
+ });
549
641
  });
550
642
  // ============================================================
551
643
  // Integration Tests