plum-e2e 2.6.8 → 2.7.1

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 (1040) hide show
  1. package/.env +5 -0
  2. package/CLAUDE.md +17 -2
  3. package/LICENSE +21 -677
  4. package/README.md +1 -1
  5. package/backend/Dockerfile +1 -13
  6. package/backend/app.js +4 -14
  7. package/backend/config/scripts/create-step.mjs +1 -13
  8. package/backend/config/scripts/create-test.mjs +1 -13
  9. package/backend/config/scripts/generate-report.js +5 -15
  10. package/backend/config/scripts/run-tests.js +5 -16
  11. package/backend/constants/defaults.js +8 -0
  12. package/backend/constants/env.js +16 -0
  13. package/backend/constants/jobStatus.js +21 -0
  14. package/backend/constants/socketEvents.js +40 -0
  15. package/backend/constants/triggers.js +6 -14
  16. package/backend/entrypoint.sh +1 -13
  17. package/backend/lib/authHeader.js +16 -0
  18. package/backend/lib/globalRegistry.js +1 -13
  19. package/backend/lib/nodeRegister.js +1 -13
  20. package/backend/lib/reportFilename.js +1 -13
  21. package/backend/lib/retryRunner.js +1 -13
  22. package/backend/lib/runnerProcess.js +34 -31
  23. package/backend/lib/screenshotPoller.js +1 -13
  24. package/backend/lib/serverBootstrap.js +189 -0
  25. package/backend/lib/serverConfig.js +1 -13
  26. package/backend/lib/testChunker.js +1 -13
  27. package/backend/lib/testEnv.js +1 -13
  28. package/backend/logs/runner-cmqneqerz0000qq01i5ap2rvl.log +4 -0
  29. package/backend/logs/runner-cmqnfv7kr0000r101aeocm8eu.log +4 -0
  30. package/backend/logs/runner-cmqnfvb560001r101qoi0phau.log +4 -0
  31. package/backend/logs/runner-cmqnfvlm20002r101gsyqb837.log +4 -0
  32. package/backend/logs/runner-cmqnfvqfy0003r101fh41pzx3.log +4 -0
  33. package/backend/logs/runner-cmqnfvvwo0004r101q4dtqxd2.log +4 -0
  34. package/backend/logs/runner-cmr8o2x3n0000mg01410tpuck.log +4 -0
  35. package/backend/logs/runner-cmr90hvcx0000n2016edtmrtv.log +4 -0
  36. package/backend/logs/runner-cmr90i7h20001n201g2wg6v3n.log +4 -0
  37. package/backend/logs/runner-cmr90iilm0002n201mmisva95.log +4 -0
  38. package/backend/logs/runner-cmr90j70r0003n201xz8525dz.log +4 -0
  39. package/backend/logs/runner-cmr90yup70000qp017ianc2gp.log +4 -0
  40. package/backend/logs/runner-cmr90zbtm0001qp01u9tfdkh1.log +4 -0
  41. package/backend/logs/runner-cmr91a3mw0000tb01414rd1df.log +4 -0
  42. package/backend/logs/runner-cmr91dhla0001tb01jp7thjnl.log +4 -0
  43. package/backend/logs/runner-cmrkk6fcl0000qj012kve79f4.log +4 -0
  44. package/backend/logs/runner-cmrkl8sym0000qy01euz4270n.log +4 -0
  45. package/backend/logs/runner-cmrkl9oyx0001qy0137nzr94d.log +4 -0
  46. package/backend/mcp/server.js +5 -15
  47. package/backend/middleware/auth.js +4 -14
  48. package/backend/middleware/jwtAuth.js +5 -16
  49. package/backend/middleware/requireAdmin.js +1 -13
  50. package/backend/package.json +3 -3
  51. package/backend/playwright.config.js +1 -13
  52. package/backend/routes/active-runs.routes.js +18 -0
  53. package/backend/routes/auth.routes.js +1 -13
  54. package/backend/routes/backup.routes.js +10 -21
  55. package/backend/routes/cron.routes.js +1 -13
  56. package/backend/routes/node.routes.js +11 -148
  57. package/backend/routes/reports.routes.js +1 -13
  58. package/backend/routes/runners.routes.js +11 -21
  59. package/backend/routes/settings.routes.js +6 -17
  60. package/backend/routes/test-cases.routes.js +1 -13
  61. package/backend/routes/test-runs.routes.js +1 -13
  62. package/backend/routes/test-suites.routes.js +1 -13
  63. package/backend/routes/tests.routes.js +1 -13
  64. package/backend/routes/trigger.routes.js +23 -165
  65. package/backend/routes/users.routes.js +1 -13
  66. package/backend/scripts/manage-runners.mjs +1 -13
  67. package/backend/server.js +34 -151
  68. package/backend/services/activeRunsService.js +55 -0
  69. package/backend/services/backupCronService.js +1 -13
  70. package/backend/services/backupService.js +7 -17
  71. package/backend/services/cronService.js +57 -39
  72. package/backend/services/envService.js +1 -13
  73. package/backend/services/nodeExecutionService.js +140 -0
  74. package/backend/services/notificationService.js +7 -17
  75. package/backend/services/prisma.js +1 -13
  76. package/backend/services/reportService.js +21 -17
  77. package/backend/services/runnerService.js +46 -27
  78. package/backend/services/settingsService.js +19 -19
  79. package/backend/services/testCaseService.js +1 -13
  80. package/backend/services/testRunService.js +1 -13
  81. package/backend/services/testService.js +1 -13
  82. package/backend/services/testSuiteService.js +1 -13
  83. package/backend/services/triggerService.js +246 -0
  84. package/backend/services/userService.js +1 -13
  85. package/backend/websockets/socketHandler.js +99 -48
  86. package/bin/plum.js +14 -13
  87. package/bin/postinstall.js +34 -0
  88. package/bin/scaffold-tests.js +1 -13
  89. package/docker-compose.node.yml +1 -13
  90. package/docker-compose.yml +1 -13
  91. package/frontend/.svelte-kit/adapter-node/.vite/manifest.json +97 -41
  92. package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/BackLink.CvWWuO3h.css +0 -17
  93. package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/Badge.D1SV0Gv7.css +0 -17
  94. package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/ConfirmModal.Dd3uP-Sk.css +1 -0
  95. package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/EmptyState.DUDM4P19.css +1 -0
  96. package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/Modal.BuaCfdLj.css +1 -0
  97. package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/Pagination.DZmi2Po-.css +0 -17
  98. package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/Toast.DENwYn3g.css +0 -17
  99. package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_layout.BuhMvMUj.css +0 -17
  100. package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_page.0Eln51hV.css +0 -17
  101. package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_page.5IJAEAjc.css +0 -17
  102. package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_page.BR3wgXcZ.css +0 -17
  103. package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_page.BWAH0Beh.css +1 -0
  104. package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_page.BZfe6nWe.css +0 -17
  105. package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_page.Bj_a_5lv.css +0 -17
  106. package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_page.BwgOqeMo.css +1 -0
  107. package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_page.CBHi6pzT.css +0 -17
  108. package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_page.CFnbmY-D.css +0 -17
  109. package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_page.DvMkmYA-.css +1 -0
  110. package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_page._h2o67kg.css +0 -17
  111. package/frontend/.svelte-kit/adapter-node/chunks/BackLink.js +0 -17
  112. package/frontend/.svelte-kit/adapter-node/chunks/Badge.js +1 -18
  113. package/frontend/.svelte-kit/adapter-node/chunks/ConfirmModal.js +7 -37
  114. package/frontend/.svelte-kit/adapter-node/chunks/EmptyState.js +25 -25
  115. package/frontend/.svelte-kit/adapter-node/chunks/Modal.js +21 -0
  116. package/frontend/.svelte-kit/adapter-node/chunks/Toast.js +12 -18
  117. package/frontend/.svelte-kit/adapter-node/chunks/attributes.js +0 -17
  118. package/frontend/.svelte-kit/adapter-node/chunks/auth.js +0 -17
  119. package/frontend/.svelte-kit/adapter-node/chunks/auth2.js +8 -0
  120. package/frontend/.svelte-kit/adapter-node/chunks/client.js +0 -17
  121. package/frontend/.svelte-kit/adapter-node/chunks/common.js +36 -0
  122. package/frontend/.svelte-kit/adapter-node/chunks/constants.js +8 -20
  123. package/frontend/.svelte-kit/adapter-node/chunks/escaping.js +0 -17
  124. package/frontend/.svelte-kit/adapter-node/chunks/exports.js +0 -17
  125. package/frontend/.svelte-kit/adapter-node/chunks/format.js +0 -17
  126. package/frontend/.svelte-kit/adapter-node/chunks/index-server.js +0 -17
  127. package/frontend/.svelte-kit/adapter-node/chunks/index.js +4 -21
  128. package/frontend/.svelte-kit/adapter-node/chunks/index2.js +0 -17
  129. package/frontend/.svelte-kit/adapter-node/chunks/internal.js +2 -19
  130. package/frontend/.svelte-kit/adapter-node/chunks/reports.js +0 -17
  131. package/frontend/.svelte-kit/adapter-node/chunks/reports2.js +87 -0
  132. package/frontend/.svelte-kit/adapter-node/chunks/repository.js +87 -0
  133. package/frontend/.svelte-kit/adapter-node/chunks/runner.js +9 -20
  134. package/frontend/.svelte-kit/adapter-node/chunks/stores.js +0 -17
  135. package/frontend/.svelte-kit/adapter-node/chunks/theme.js +0 -17
  136. package/frontend/.svelte-kit/adapter-node/entries/fallbacks/error.svelte.js +0 -17
  137. package/frontend/.svelte-kit/adapter-node/entries/pages/_layout.js +0 -17
  138. package/frontend/.svelte-kit/adapter-node/entries/pages/_layout.svelte.js +2 -17
  139. package/frontend/.svelte-kit/adapter-node/entries/pages/_page.svelte.js +135 -101
  140. package/frontend/.svelte-kit/adapter-node/entries/pages/login/_page.svelte.js +5 -20
  141. package/frontend/.svelte-kit/adapter-node/entries/pages/reports/_id_/_page.svelte.js +5 -20
  142. package/frontend/.svelte-kit/adapter-node/entries/pages/reports/_page.svelte.js +17 -43
  143. package/frontend/.svelte-kit/adapter-node/entries/pages/reports/live/_page.svelte.js +27 -42
  144. package/frontend/.svelte-kit/adapter-node/entries/pages/scheduled-tests/_page.svelte.js +68 -50
  145. package/frontend/.svelte-kit/adapter-node/entries/pages/settings/_page.svelte.js +272 -113
  146. package/frontend/.svelte-kit/adapter-node/entries/pages/setup/_page.svelte.js +5 -20
  147. package/frontend/.svelte-kit/adapter-node/entries/pages/test-repository/_page.svelte.js +38 -53
  148. package/frontend/.svelte-kit/adapter-node/entries/pages/test-repository/runs/_id_/_page.svelte.js +61 -30
  149. package/frontend/.svelte-kit/adapter-node/entries/pages/test-repository/suites/_id_/_page.svelte.js +19 -35
  150. package/frontend/.svelte-kit/adapter-node/index.js +0 -17
  151. package/frontend/.svelte-kit/adapter-node/internal.js +0 -17
  152. package/frontend/.svelte-kit/adapter-node/manifest-full.js +1 -18
  153. package/frontend/.svelte-kit/adapter-node/manifest.js +1 -18
  154. package/frontend/.svelte-kit/adapter-node/nodes/0.js +2 -19
  155. package/frontend/.svelte-kit/adapter-node/nodes/1.js +1 -18
  156. package/frontend/.svelte-kit/adapter-node/nodes/10.js +2 -19
  157. package/frontend/.svelte-kit/adapter-node/nodes/11.js +2 -19
  158. package/frontend/.svelte-kit/adapter-node/nodes/12.js +2 -19
  159. package/frontend/.svelte-kit/adapter-node/nodes/2.js +2 -19
  160. package/frontend/.svelte-kit/adapter-node/nodes/3.js +1 -18
  161. package/frontend/.svelte-kit/adapter-node/nodes/4.js +2 -19
  162. package/frontend/.svelte-kit/adapter-node/nodes/5.js +1 -18
  163. package/frontend/.svelte-kit/adapter-node/nodes/6.js +1 -18
  164. package/frontend/.svelte-kit/adapter-node/nodes/7.js +2 -19
  165. package/frontend/.svelte-kit/adapter-node/nodes/8.js +2 -19
  166. package/frontend/.svelte-kit/adapter-node/nodes/9.js +1 -18
  167. package/frontend/.svelte-kit/ambient.d.ts +2 -21
  168. package/frontend/.svelte-kit/generated/client/app.js +0 -17
  169. package/frontend/.svelte-kit/generated/client/matchers.js +0 -17
  170. package/frontend/.svelte-kit/generated/client/nodes/0.js +0 -17
  171. package/frontend/.svelte-kit/generated/client/nodes/1.js +0 -17
  172. package/frontend/.svelte-kit/generated/client/nodes/10.js +0 -17
  173. package/frontend/.svelte-kit/generated/client/nodes/11.js +0 -17
  174. package/frontend/.svelte-kit/generated/client/nodes/12.js +0 -17
  175. package/frontend/.svelte-kit/generated/client/nodes/2.js +0 -17
  176. package/frontend/.svelte-kit/generated/client/nodes/3.js +0 -17
  177. package/frontend/.svelte-kit/generated/client/nodes/4.js +0 -17
  178. package/frontend/.svelte-kit/generated/client/nodes/5.js +0 -17
  179. package/frontend/.svelte-kit/generated/client/nodes/6.js +0 -17
  180. package/frontend/.svelte-kit/generated/client/nodes/7.js +0 -17
  181. package/frontend/.svelte-kit/generated/client/nodes/8.js +0 -17
  182. package/frontend/.svelte-kit/generated/client/nodes/9.js +0 -17
  183. package/frontend/.svelte-kit/generated/client-optimized/app.js +0 -17
  184. package/frontend/.svelte-kit/generated/client-optimized/matchers.js +0 -17
  185. package/frontend/.svelte-kit/generated/client-optimized/nodes/0.js +0 -17
  186. package/frontend/.svelte-kit/generated/client-optimized/nodes/1.js +0 -17
  187. package/frontend/.svelte-kit/generated/client-optimized/nodes/10.js +0 -17
  188. package/frontend/.svelte-kit/generated/client-optimized/nodes/11.js +0 -17
  189. package/frontend/.svelte-kit/generated/client-optimized/nodes/12.js +0 -17
  190. package/frontend/.svelte-kit/generated/client-optimized/nodes/2.js +0 -17
  191. package/frontend/.svelte-kit/generated/client-optimized/nodes/3.js +0 -17
  192. package/frontend/.svelte-kit/generated/client-optimized/nodes/4.js +0 -17
  193. package/frontend/.svelte-kit/generated/client-optimized/nodes/5.js +0 -17
  194. package/frontend/.svelte-kit/generated/client-optimized/nodes/6.js +0 -17
  195. package/frontend/.svelte-kit/generated/client-optimized/nodes/7.js +0 -17
  196. package/frontend/.svelte-kit/generated/client-optimized/nodes/8.js +0 -17
  197. package/frontend/.svelte-kit/generated/client-optimized/nodes/9.js +0 -17
  198. package/frontend/.svelte-kit/generated/root.js +0 -17
  199. package/frontend/.svelte-kit/generated/root.svelte +0 -17
  200. package/frontend/.svelte-kit/generated/server/internal.js +2 -19
  201. package/frontend/.svelte-kit/non-ambient.d.ts +0 -17
  202. package/frontend/.svelte-kit/output/client/.vite/manifest.json +406 -352
  203. package/frontend/.svelte-kit/output/client/_app/immutable/assets/0.BhSG-jZH.css +0 -17
  204. package/frontend/.svelte-kit/output/client/_app/immutable/assets/10.CdaQUS6U.css +0 -17
  205. package/frontend/.svelte-kit/output/client/_app/immutable/assets/11.BWAH0Beh.css +1 -0
  206. package/frontend/.svelte-kit/output/client/_app/immutable/assets/12.Bj_a_5lv.css +0 -17
  207. package/frontend/.svelte-kit/output/client/_app/immutable/assets/2.DvMkmYA-.css +1 -0
  208. package/frontend/.svelte-kit/output/client/_app/immutable/assets/3.BR3wgXcZ.css +0 -17
  209. package/frontend/.svelte-kit/output/client/_app/immutable/assets/4.0Eln51hV.css +0 -17
  210. package/frontend/.svelte-kit/output/client/_app/immutable/assets/5.DFV9OgAu.css +0 -17
  211. package/frontend/.svelte-kit/output/client/_app/immutable/assets/6.CFnbmY-D.css +0 -17
  212. package/frontend/.svelte-kit/output/client/_app/immutable/assets/7.CBHi6pzT.css +0 -17
  213. package/frontend/.svelte-kit/output/client/_app/immutable/assets/8.BwgOqeMo.css +1 -0
  214. package/frontend/.svelte-kit/output/client/_app/immutable/assets/9._h2o67kg.css +0 -17
  215. package/frontend/.svelte-kit/output/client/_app/immutable/assets/BackLink.CvWWuO3h.css +0 -17
  216. package/frontend/.svelte-kit/output/client/_app/immutable/assets/Badge.D1SV0Gv7.css +0 -17
  217. package/frontend/.svelte-kit/output/client/_app/immutable/assets/Button.FOWXxvc7.css +0 -17
  218. package/frontend/.svelte-kit/output/client/_app/immutable/assets/ConfirmModal.Dd3uP-Sk.css +1 -0
  219. package/frontend/.svelte-kit/output/client/_app/immutable/assets/EmptyState.DUDM4P19.css +1 -0
  220. package/frontend/.svelte-kit/output/client/_app/immutable/assets/Modal.BZpm0HP8.css +1 -0
  221. package/frontend/.svelte-kit/output/client/_app/immutable/assets/Modal.BuaCfdLj.css +1 -0
  222. package/frontend/.svelte-kit/output/client/_app/immutable/assets/Pagination.DZmi2Po-.css +0 -17
  223. package/frontend/.svelte-kit/output/client/_app/immutable/assets/Toast.DENwYn3g.css +0 -17
  224. package/frontend/.svelte-kit/output/client/_app/immutable/assets/_layout.BuhMvMUj.css +0 -17
  225. package/frontend/.svelte-kit/output/client/_app/immutable/assets/_page.0Eln51hV.css +0 -17
  226. package/frontend/.svelte-kit/output/client/_app/immutable/assets/_page.5IJAEAjc.css +0 -17
  227. package/frontend/.svelte-kit/output/client/_app/immutable/assets/_page.BR3wgXcZ.css +0 -17
  228. package/frontend/.svelte-kit/output/client/_app/immutable/assets/_page.BWAH0Beh.css +1 -0
  229. package/frontend/.svelte-kit/output/client/_app/immutable/assets/_page.BZfe6nWe.css +0 -17
  230. package/frontend/.svelte-kit/output/client/_app/immutable/assets/_page.Bj_a_5lv.css +0 -17
  231. package/frontend/.svelte-kit/output/client/_app/immutable/assets/_page.BwgOqeMo.css +1 -0
  232. package/frontend/.svelte-kit/output/client/_app/immutable/assets/_page.CBHi6pzT.css +0 -17
  233. package/frontend/.svelte-kit/output/client/_app/immutable/assets/_page.CFnbmY-D.css +0 -17
  234. package/frontend/.svelte-kit/output/client/_app/immutable/assets/_page.DvMkmYA-.css +1 -0
  235. package/frontend/.svelte-kit/output/client/_app/immutable/assets/_page._h2o67kg.css +0 -17
  236. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/2zMvi6fR.js +1 -0
  237. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/3InFPLvE.js +1 -0
  238. package/frontend/{build/client/_app/immutable/chunks/C67QNx7Z.js → .svelte-kit/output/client/_app/immutable/chunks/BAACMRH5.js} +1 -18
  239. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/BAMUGSh7.js +1 -0
  240. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/BKuh57WU.js +1 -0
  241. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/{BFEiffAL.js → BUwxRmHf.js} +1 -18
  242. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/Bfc47y5P.js +0 -17
  243. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/{BVMec-1T.js → BmZ9upwL.js} +1 -18
  244. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/C1Vid6wz.js +1 -0
  245. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/C8OURRSs.js +1 -0
  246. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/CGeZlCaI.js +1 -0
  247. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/CKDtmZUQ.js +1 -0
  248. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/CMBQQ9RZ.js +1 -0
  249. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/CMEtqUfQ.js +1 -0
  250. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/CNdcuGR0.js +1 -0
  251. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/CUC98kMZ.js +1 -0
  252. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/CgnwuKKO.js +1 -0
  253. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/Co3xKhEp.js +1 -0
  254. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/CuqnZUex.js +1 -0
  255. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/{BkKmeUbA.js → CzlPaHY9.js} +1 -18
  256. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/DCgHuuvs.js +1 -0
  257. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/DHM6H-es.js +2 -0
  258. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/DMZwI8Cj.js +1 -0
  259. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/DMyTUV-Y.js +3 -0
  260. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/{B0pefNHY.js → DSLBMEpr.js} +1 -18
  261. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/{CxTX_lpP.js → DbgD7JLa.js} +1 -18
  262. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/Dlnxgs49.js +1 -0
  263. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/TOCyHP97.js +6 -0
  264. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/nURnIknV.js +1 -0
  265. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/t-La0hgu.js +1 -0
  266. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/w0D4Uzlq.js +1 -0
  267. package/frontend/.svelte-kit/output/client/_app/immutable/entry/app.BkBD0hgA.js +2 -0
  268. package/frontend/.svelte-kit/output/client/_app/immutable/entry/start.BxeX1Uxs.js +1 -0
  269. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/0.ChjDHxSJ.js +6 -0
  270. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/1.DBSWa36f.js +1 -0
  271. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/10.DEbnxfND.js +1 -0
  272. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/11.O4cjXCg4.js +1 -0
  273. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/12.BWQdeRdX.js +1 -0
  274. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/2.BnHalSCi.js +1 -0
  275. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/3._S1vrLVF.js +1 -0
  276. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/4.D-YT_JJe.js +1 -0
  277. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/5.BiFBiWcW.js +1 -0
  278. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/6.BNS-W0R_.js +1 -0
  279. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/7.C-pKvVZy.js +1 -0
  280. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/8.BEUdazrw.js +4 -0
  281. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/9.CrLHYPEJ.js +1 -0
  282. package/frontend/.svelte-kit/output/client/_app/version.json +1 -1
  283. package/frontend/.svelte-kit/output/server/.vite/manifest.json +97 -41
  284. package/frontend/.svelte-kit/output/server/_app/immutable/assets/BackLink.CvWWuO3h.css +0 -17
  285. package/frontend/.svelte-kit/output/server/_app/immutable/assets/Badge.D1SV0Gv7.css +0 -17
  286. package/frontend/.svelte-kit/output/server/_app/immutable/assets/ConfirmModal.Dd3uP-Sk.css +1 -0
  287. package/frontend/.svelte-kit/output/server/_app/immutable/assets/EmptyState.DUDM4P19.css +1 -0
  288. package/frontend/.svelte-kit/output/server/_app/immutable/assets/Modal.BuaCfdLj.css +1 -0
  289. package/frontend/.svelte-kit/output/server/_app/immutable/assets/Pagination.DZmi2Po-.css +0 -17
  290. package/frontend/.svelte-kit/output/server/_app/immutable/assets/Toast.DENwYn3g.css +0 -17
  291. package/frontend/.svelte-kit/output/server/_app/immutable/assets/_layout.BuhMvMUj.css +0 -17
  292. package/frontend/.svelte-kit/output/server/_app/immutable/assets/_page.0Eln51hV.css +0 -17
  293. package/frontend/.svelte-kit/output/server/_app/immutable/assets/_page.5IJAEAjc.css +0 -17
  294. package/frontend/.svelte-kit/output/server/_app/immutable/assets/_page.BR3wgXcZ.css +0 -17
  295. package/frontend/.svelte-kit/output/server/_app/immutable/assets/_page.BWAH0Beh.css +1 -0
  296. package/frontend/.svelte-kit/output/server/_app/immutable/assets/_page.BZfe6nWe.css +0 -17
  297. package/frontend/.svelte-kit/output/server/_app/immutable/assets/_page.Bj_a_5lv.css +0 -17
  298. package/frontend/.svelte-kit/output/server/_app/immutable/assets/_page.BwgOqeMo.css +1 -0
  299. package/frontend/.svelte-kit/output/server/_app/immutable/assets/_page.CBHi6pzT.css +0 -17
  300. package/frontend/.svelte-kit/output/server/_app/immutable/assets/_page.CFnbmY-D.css +0 -17
  301. package/frontend/.svelte-kit/output/server/_app/immutable/assets/_page.DvMkmYA-.css +1 -0
  302. package/frontend/.svelte-kit/output/server/_app/immutable/assets/_page._h2o67kg.css +0 -17
  303. package/frontend/.svelte-kit/output/server/chunks/BackLink.js +0 -17
  304. package/frontend/.svelte-kit/output/server/chunks/Badge.js +1 -18
  305. package/frontend/.svelte-kit/output/server/chunks/ConfirmModal.js +7 -37
  306. package/frontend/.svelte-kit/output/server/chunks/EmptyState.js +25 -25
  307. package/frontend/.svelte-kit/output/server/chunks/Modal.js +21 -0
  308. package/frontend/.svelte-kit/output/server/chunks/Toast.js +12 -18
  309. package/frontend/.svelte-kit/output/server/chunks/attributes.js +0 -17
  310. package/frontend/.svelte-kit/output/server/chunks/auth.js +0 -17
  311. package/frontend/.svelte-kit/output/server/chunks/auth2.js +8 -0
  312. package/frontend/.svelte-kit/output/server/chunks/client.js +0 -17
  313. package/frontend/.svelte-kit/output/server/chunks/common.js +36 -0
  314. package/frontend/.svelte-kit/output/server/chunks/constants.js +8 -20
  315. package/frontend/.svelte-kit/output/server/chunks/escaping.js +0 -17
  316. package/frontend/.svelte-kit/output/server/chunks/exports.js +0 -17
  317. package/frontend/.svelte-kit/output/server/chunks/format.js +0 -17
  318. package/frontend/.svelte-kit/output/server/chunks/index-server.js +0 -17
  319. package/frontend/.svelte-kit/output/server/chunks/index.js +4 -21
  320. package/frontend/.svelte-kit/output/server/chunks/index2.js +0 -17
  321. package/frontend/.svelte-kit/output/server/chunks/internal.js +2 -19
  322. package/frontend/.svelte-kit/output/server/chunks/reports.js +0 -17
  323. package/frontend/.svelte-kit/output/server/chunks/reports2.js +87 -0
  324. package/frontend/.svelte-kit/output/server/chunks/repository.js +87 -0
  325. package/frontend/.svelte-kit/output/server/chunks/runner.js +9 -20
  326. package/frontend/.svelte-kit/output/server/chunks/stores.js +0 -17
  327. package/frontend/.svelte-kit/output/server/chunks/theme.js +0 -17
  328. package/frontend/.svelte-kit/output/server/entries/fallbacks/error.svelte.js +0 -17
  329. package/frontend/.svelte-kit/output/server/entries/pages/_layout.js +0 -17
  330. package/frontend/.svelte-kit/output/server/entries/pages/_layout.svelte.js +2 -17
  331. package/frontend/.svelte-kit/output/server/entries/pages/_page.svelte.js +135 -101
  332. package/frontend/.svelte-kit/output/server/entries/pages/login/_page.svelte.js +5 -20
  333. package/frontend/.svelte-kit/output/server/entries/pages/reports/_id_/_page.svelte.js +5 -20
  334. package/frontend/.svelte-kit/output/server/entries/pages/reports/_page.svelte.js +17 -43
  335. package/frontend/.svelte-kit/output/server/entries/pages/reports/live/_page.svelte.js +27 -42
  336. package/frontend/.svelte-kit/output/server/entries/pages/scheduled-tests/_page.svelte.js +68 -50
  337. package/frontend/.svelte-kit/output/server/entries/pages/settings/_page.svelte.js +272 -113
  338. package/frontend/.svelte-kit/output/server/entries/pages/setup/_page.svelte.js +5 -20
  339. package/frontend/.svelte-kit/output/server/entries/pages/test-repository/_page.svelte.js +38 -53
  340. package/frontend/.svelte-kit/output/server/entries/pages/test-repository/runs/_id_/_page.svelte.js +61 -30
  341. package/frontend/.svelte-kit/output/server/entries/pages/test-repository/suites/_id_/_page.svelte.js +19 -35
  342. package/frontend/.svelte-kit/output/server/index.js +0 -17
  343. package/frontend/.svelte-kit/output/server/internal.js +0 -17
  344. package/frontend/.svelte-kit/output/server/manifest-full.js +1 -18
  345. package/frontend/.svelte-kit/output/server/manifest.js +1 -18
  346. package/frontend/.svelte-kit/output/server/nodes/0.js +2 -19
  347. package/frontend/.svelte-kit/output/server/nodes/1.js +1 -18
  348. package/frontend/.svelte-kit/output/server/nodes/10.js +2 -19
  349. package/frontend/.svelte-kit/output/server/nodes/11.js +2 -19
  350. package/frontend/.svelte-kit/output/server/nodes/12.js +2 -19
  351. package/frontend/.svelte-kit/output/server/nodes/2.js +2 -19
  352. package/frontend/.svelte-kit/output/server/nodes/3.js +1 -18
  353. package/frontend/.svelte-kit/output/server/nodes/4.js +2 -19
  354. package/frontend/.svelte-kit/output/server/nodes/5.js +1 -18
  355. package/frontend/.svelte-kit/output/server/nodes/6.js +1 -18
  356. package/frontend/.svelte-kit/output/server/nodes/7.js +2 -19
  357. package/frontend/.svelte-kit/output/server/nodes/8.js +2 -19
  358. package/frontend/.svelte-kit/output/server/nodes/9.js +1 -18
  359. package/frontend/Dockerfile +1 -13
  360. package/frontend/build/client/_app/immutable/assets/0.BhSG-jZH.css +0 -17
  361. package/frontend/build/client/_app/immutable/assets/0.BhSG-jZH.css.br +0 -0
  362. package/frontend/build/client/_app/immutable/assets/0.BhSG-jZH.css.gz +0 -0
  363. package/frontend/build/client/_app/immutable/assets/10.CdaQUS6U.css +0 -17
  364. package/frontend/build/client/_app/immutable/assets/10.CdaQUS6U.css.br +0 -0
  365. package/frontend/build/client/_app/immutable/assets/10.CdaQUS6U.css.gz +0 -0
  366. package/frontend/build/client/_app/immutable/assets/11.BWAH0Beh.css +1 -0
  367. package/frontend/build/client/_app/immutable/assets/11.BWAH0Beh.css.br +0 -0
  368. package/frontend/build/client/_app/immutable/assets/11.BWAH0Beh.css.gz +0 -0
  369. package/frontend/build/client/_app/immutable/assets/12.Bj_a_5lv.css +0 -17
  370. package/frontend/build/client/_app/immutable/assets/12.Bj_a_5lv.css.br +0 -0
  371. package/frontend/build/client/_app/immutable/assets/12.Bj_a_5lv.css.gz +0 -0
  372. package/frontend/build/client/_app/immutable/assets/2.DvMkmYA-.css +1 -0
  373. package/frontend/build/client/_app/immutable/assets/2.DvMkmYA-.css.br +0 -0
  374. package/frontend/build/client/_app/immutable/assets/2.DvMkmYA-.css.gz +0 -0
  375. package/frontend/build/client/_app/immutable/assets/3.BR3wgXcZ.css +0 -17
  376. package/frontend/build/client/_app/immutable/assets/3.BR3wgXcZ.css.br +0 -0
  377. package/frontend/build/client/_app/immutable/assets/3.BR3wgXcZ.css.gz +0 -0
  378. package/frontend/build/client/_app/immutable/assets/4.0Eln51hV.css +0 -17
  379. package/frontend/build/client/_app/immutable/assets/4.0Eln51hV.css.br +0 -0
  380. package/frontend/build/client/_app/immutable/assets/4.0Eln51hV.css.gz +0 -0
  381. package/frontend/build/client/_app/immutable/assets/5.DFV9OgAu.css +0 -17
  382. package/frontend/build/client/_app/immutable/assets/5.DFV9OgAu.css.br +0 -0
  383. package/frontend/build/client/_app/immutable/assets/5.DFV9OgAu.css.gz +0 -0
  384. package/frontend/build/client/_app/immutable/assets/6.CFnbmY-D.css +0 -17
  385. package/frontend/build/client/_app/immutable/assets/6.CFnbmY-D.css.br +0 -0
  386. package/frontend/build/client/_app/immutable/assets/6.CFnbmY-D.css.gz +0 -0
  387. package/frontend/build/client/_app/immutable/assets/7.CBHi6pzT.css +0 -17
  388. package/frontend/build/client/_app/immutable/assets/7.CBHi6pzT.css.br +0 -0
  389. package/frontend/build/client/_app/immutable/assets/7.CBHi6pzT.css.gz +0 -0
  390. package/frontend/build/client/_app/immutable/assets/8.BwgOqeMo.css +1 -0
  391. package/frontend/build/client/_app/immutable/assets/8.BwgOqeMo.css.br +0 -0
  392. package/frontend/build/client/_app/immutable/assets/8.BwgOqeMo.css.gz +0 -0
  393. package/frontend/build/client/_app/immutable/assets/9._h2o67kg.css +0 -17
  394. package/frontend/build/client/_app/immutable/assets/9._h2o67kg.css.br +0 -0
  395. package/frontend/build/client/_app/immutable/assets/9._h2o67kg.css.gz +0 -0
  396. package/frontend/build/client/_app/immutable/assets/BackLink.CvWWuO3h.css +0 -17
  397. package/frontend/build/client/_app/immutable/assets/BackLink.CvWWuO3h.css.br +0 -0
  398. package/frontend/build/client/_app/immutable/assets/BackLink.CvWWuO3h.css.gz +0 -0
  399. package/frontend/build/client/_app/immutable/assets/Badge.D1SV0Gv7.css +0 -17
  400. package/frontend/build/client/_app/immutable/assets/Badge.D1SV0Gv7.css.br +0 -0
  401. package/frontend/build/client/_app/immutable/assets/Badge.D1SV0Gv7.css.gz +0 -0
  402. package/frontend/build/client/_app/immutable/assets/Button.FOWXxvc7.css +0 -17
  403. package/frontend/build/client/_app/immutable/assets/Button.FOWXxvc7.css.br +0 -0
  404. package/frontend/build/client/_app/immutable/assets/Button.FOWXxvc7.css.gz +0 -0
  405. package/frontend/build/client/_app/immutable/assets/ConfirmModal.Dd3uP-Sk.css +1 -0
  406. package/frontend/build/client/_app/immutable/assets/ConfirmModal.Dd3uP-Sk.css.br +0 -0
  407. package/frontend/build/client/_app/immutable/assets/ConfirmModal.Dd3uP-Sk.css.gz +0 -0
  408. package/frontend/build/client/_app/immutable/assets/EmptyState.DUDM4P19.css +1 -0
  409. package/frontend/build/client/_app/immutable/assets/EmptyState.DUDM4P19.css.br +0 -0
  410. package/frontend/build/client/_app/immutable/assets/EmptyState.DUDM4P19.css.gz +0 -0
  411. package/frontend/build/client/_app/immutable/assets/Modal.BZpm0HP8.css +1 -0
  412. package/frontend/build/client/_app/immutable/assets/Modal.BZpm0HP8.css.br +0 -0
  413. package/frontend/build/client/_app/immutable/assets/Modal.BZpm0HP8.css.gz +0 -0
  414. package/frontend/build/client/_app/immutable/assets/Modal.BuaCfdLj.css +1 -0
  415. package/frontend/build/client/_app/immutable/assets/Modal.BuaCfdLj.css.br +0 -0
  416. package/frontend/build/client/_app/immutable/assets/Modal.BuaCfdLj.css.gz +0 -0
  417. package/frontend/build/client/_app/immutable/assets/Pagination.DZmi2Po-.css +0 -17
  418. package/frontend/build/client/_app/immutable/assets/Pagination.DZmi2Po-.css.br +0 -0
  419. package/frontend/build/client/_app/immutable/assets/Pagination.DZmi2Po-.css.gz +0 -0
  420. package/frontend/build/client/_app/immutable/assets/Toast.DENwYn3g.css +0 -17
  421. package/frontend/build/client/_app/immutable/assets/Toast.DENwYn3g.css.br +0 -0
  422. package/frontend/build/client/_app/immutable/assets/Toast.DENwYn3g.css.gz +0 -0
  423. package/frontend/build/client/_app/immutable/assets/_layout.BuhMvMUj.css +0 -17
  424. package/frontend/build/client/_app/immutable/assets/_layout.BuhMvMUj.css.br +0 -0
  425. package/frontend/build/client/_app/immutable/assets/_layout.BuhMvMUj.css.gz +0 -0
  426. package/frontend/build/client/_app/immutable/assets/_page.0Eln51hV.css +0 -17
  427. package/frontend/build/client/_app/immutable/assets/_page.0Eln51hV.css.br +0 -0
  428. package/frontend/build/client/_app/immutable/assets/_page.0Eln51hV.css.gz +0 -0
  429. package/frontend/build/client/_app/immutable/assets/_page.5IJAEAjc.css +0 -17
  430. package/frontend/build/client/_app/immutable/assets/_page.5IJAEAjc.css.br +0 -0
  431. package/frontend/build/client/_app/immutable/assets/_page.5IJAEAjc.css.gz +0 -0
  432. package/frontend/build/client/_app/immutable/assets/_page.BR3wgXcZ.css +0 -17
  433. package/frontend/build/client/_app/immutable/assets/_page.BR3wgXcZ.css.br +0 -0
  434. package/frontend/build/client/_app/immutable/assets/_page.BR3wgXcZ.css.gz +0 -0
  435. package/frontend/build/client/_app/immutable/assets/_page.BWAH0Beh.css +1 -0
  436. package/frontend/build/client/_app/immutable/assets/_page.BWAH0Beh.css.br +0 -0
  437. package/frontend/build/client/_app/immutable/assets/_page.BWAH0Beh.css.gz +0 -0
  438. package/frontend/build/client/_app/immutable/assets/_page.BZfe6nWe.css +0 -17
  439. package/frontend/build/client/_app/immutable/assets/_page.BZfe6nWe.css.br +0 -0
  440. package/frontend/build/client/_app/immutable/assets/_page.BZfe6nWe.css.gz +0 -0
  441. package/frontend/build/client/_app/immutable/assets/_page.Bj_a_5lv.css +0 -17
  442. package/frontend/build/client/_app/immutable/assets/_page.Bj_a_5lv.css.br +0 -0
  443. package/frontend/build/client/_app/immutable/assets/_page.Bj_a_5lv.css.gz +0 -0
  444. package/frontend/build/client/_app/immutable/assets/_page.BwgOqeMo.css +1 -0
  445. package/frontend/build/client/_app/immutable/assets/_page.BwgOqeMo.css.br +0 -0
  446. package/frontend/build/client/_app/immutable/assets/_page.BwgOqeMo.css.gz +0 -0
  447. package/frontend/build/client/_app/immutable/assets/_page.CBHi6pzT.css +0 -17
  448. package/frontend/build/client/_app/immutable/assets/_page.CBHi6pzT.css.br +0 -0
  449. package/frontend/build/client/_app/immutable/assets/_page.CBHi6pzT.css.gz +0 -0
  450. package/frontend/build/client/_app/immutable/assets/_page.CFnbmY-D.css +0 -17
  451. package/frontend/build/client/_app/immutable/assets/_page.CFnbmY-D.css.br +0 -0
  452. package/frontend/build/client/_app/immutable/assets/_page.CFnbmY-D.css.gz +0 -0
  453. package/frontend/build/client/_app/immutable/assets/_page.DvMkmYA-.css +1 -0
  454. package/frontend/build/client/_app/immutable/assets/_page.DvMkmYA-.css.br +0 -0
  455. package/frontend/build/client/_app/immutable/assets/_page.DvMkmYA-.css.gz +0 -0
  456. package/frontend/build/client/_app/immutable/assets/_page._h2o67kg.css +0 -17
  457. package/frontend/build/client/_app/immutable/assets/_page._h2o67kg.css.br +0 -0
  458. package/frontend/build/client/_app/immutable/assets/_page._h2o67kg.css.gz +0 -0
  459. package/frontend/build/client/_app/immutable/chunks/2zMvi6fR.js +1 -0
  460. package/frontend/build/client/_app/immutable/chunks/2zMvi6fR.js.br +0 -0
  461. package/frontend/build/client/_app/immutable/chunks/2zMvi6fR.js.gz +0 -0
  462. package/frontend/build/client/_app/immutable/chunks/3InFPLvE.js +1 -0
  463. package/frontend/build/client/_app/immutable/chunks/3InFPLvE.js.br +0 -0
  464. package/frontend/build/client/_app/immutable/chunks/3InFPLvE.js.gz +0 -0
  465. package/frontend/{.svelte-kit/output/client/_app/immutable/chunks/C67QNx7Z.js → build/client/_app/immutable/chunks/BAACMRH5.js} +1 -18
  466. package/frontend/build/client/_app/immutable/chunks/BAACMRH5.js.br +0 -0
  467. package/frontend/build/client/_app/immutable/chunks/BAACMRH5.js.gz +0 -0
  468. package/frontend/build/client/_app/immutable/chunks/BAMUGSh7.js +1 -0
  469. package/frontend/build/client/_app/immutable/chunks/BAMUGSh7.js.br +0 -0
  470. package/frontend/build/client/_app/immutable/chunks/BAMUGSh7.js.gz +0 -0
  471. package/frontend/build/client/_app/immutable/chunks/BKuh57WU.js +1 -0
  472. package/frontend/build/client/_app/immutable/chunks/BKuh57WU.js.br +0 -0
  473. package/frontend/build/client/_app/immutable/chunks/BKuh57WU.js.gz +0 -0
  474. package/frontend/build/client/_app/immutable/chunks/{BFEiffAL.js → BUwxRmHf.js} +1 -18
  475. package/frontend/build/client/_app/immutable/chunks/BUwxRmHf.js.br +0 -0
  476. package/frontend/build/client/_app/immutable/chunks/BUwxRmHf.js.gz +0 -0
  477. package/frontend/build/client/_app/immutable/chunks/Bfc47y5P.js +0 -17
  478. package/frontend/build/client/_app/immutable/chunks/Bfc47y5P.js.br +0 -0
  479. package/frontend/build/client/_app/immutable/chunks/Bfc47y5P.js.gz +0 -0
  480. package/frontend/build/client/_app/immutable/chunks/{BVMec-1T.js → BmZ9upwL.js} +1 -18
  481. package/frontend/build/client/_app/immutable/chunks/BmZ9upwL.js.br +0 -0
  482. package/frontend/build/client/_app/immutable/chunks/BmZ9upwL.js.gz +0 -0
  483. package/frontend/build/client/_app/immutable/chunks/C1Vid6wz.js +1 -0
  484. package/frontend/build/client/_app/immutable/chunks/C1Vid6wz.js.br +0 -0
  485. package/frontend/build/client/_app/immutable/chunks/C1Vid6wz.js.gz +0 -0
  486. package/frontend/build/client/_app/immutable/chunks/C8OURRSs.js +1 -0
  487. package/frontend/build/client/_app/immutable/chunks/C8OURRSs.js.br +0 -0
  488. package/frontend/build/client/_app/immutable/chunks/C8OURRSs.js.gz +0 -0
  489. package/frontend/build/client/_app/immutable/chunks/CGeZlCaI.js +1 -0
  490. package/frontend/build/client/_app/immutable/chunks/CGeZlCaI.js.br +0 -0
  491. package/frontend/build/client/_app/immutable/chunks/CGeZlCaI.js.gz +0 -0
  492. package/frontend/build/client/_app/immutable/chunks/CKDtmZUQ.js +1 -0
  493. package/frontend/build/client/_app/immutable/chunks/CKDtmZUQ.js.br +0 -0
  494. package/frontend/build/client/_app/immutable/chunks/CKDtmZUQ.js.gz +0 -0
  495. package/frontend/build/client/_app/immutable/chunks/CMBQQ9RZ.js +1 -0
  496. package/frontend/build/client/_app/immutable/chunks/CMBQQ9RZ.js.br +0 -0
  497. package/frontend/build/client/_app/immutable/chunks/CMBQQ9RZ.js.gz +0 -0
  498. package/frontend/build/client/_app/immutable/chunks/CMEtqUfQ.js +1 -0
  499. package/frontend/build/client/_app/immutable/chunks/CMEtqUfQ.js.br +0 -0
  500. package/frontend/build/client/_app/immutable/chunks/CMEtqUfQ.js.gz +0 -0
  501. package/frontend/build/client/_app/immutable/chunks/CNdcuGR0.js +1 -0
  502. package/frontend/build/client/_app/immutable/chunks/CNdcuGR0.js.br +0 -0
  503. package/frontend/build/client/_app/immutable/chunks/CNdcuGR0.js.gz +0 -0
  504. package/frontend/build/client/_app/immutable/chunks/CUC98kMZ.js +1 -0
  505. package/frontend/build/client/_app/immutable/chunks/CUC98kMZ.js.br +0 -0
  506. package/frontend/build/client/_app/immutable/chunks/CUC98kMZ.js.gz +0 -0
  507. package/frontend/build/client/_app/immutable/chunks/CgnwuKKO.js +1 -0
  508. package/frontend/build/client/_app/immutable/chunks/CgnwuKKO.js.br +0 -0
  509. package/frontend/build/client/_app/immutable/chunks/CgnwuKKO.js.gz +0 -0
  510. package/frontend/build/client/_app/immutable/chunks/Co3xKhEp.js +1 -0
  511. package/frontend/build/client/_app/immutable/chunks/Co3xKhEp.js.br +0 -0
  512. package/frontend/build/client/_app/immutable/chunks/Co3xKhEp.js.gz +0 -0
  513. package/frontend/build/client/_app/immutable/chunks/CuqnZUex.js +1 -0
  514. package/frontend/build/client/_app/immutable/chunks/CuqnZUex.js.br +1 -0
  515. package/frontend/build/client/_app/immutable/chunks/CuqnZUex.js.gz +0 -0
  516. package/frontend/build/client/_app/immutable/chunks/{BkKmeUbA.js → CzlPaHY9.js} +1 -18
  517. package/frontend/build/client/_app/immutable/chunks/CzlPaHY9.js.br +0 -0
  518. package/frontend/build/client/_app/immutable/chunks/CzlPaHY9.js.gz +0 -0
  519. package/frontend/build/client/_app/immutable/chunks/DCgHuuvs.js +1 -0
  520. package/frontend/build/client/_app/immutable/chunks/DCgHuuvs.js.br +0 -0
  521. package/frontend/build/client/_app/immutable/chunks/DCgHuuvs.js.gz +0 -0
  522. package/frontend/build/client/_app/immutable/chunks/DHM6H-es.js +2 -0
  523. package/frontend/build/client/_app/immutable/chunks/DHM6H-es.js.br +0 -0
  524. package/frontend/build/client/_app/immutable/chunks/DHM6H-es.js.gz +0 -0
  525. package/frontend/build/client/_app/immutable/chunks/DMZwI8Cj.js +1 -0
  526. package/frontend/build/client/_app/immutable/chunks/DMZwI8Cj.js.br +0 -0
  527. package/frontend/build/client/_app/immutable/chunks/DMZwI8Cj.js.gz +0 -0
  528. package/frontend/build/client/_app/immutable/chunks/DMyTUV-Y.js +3 -0
  529. package/frontend/build/client/_app/immutable/chunks/DMyTUV-Y.js.br +0 -0
  530. package/frontend/build/client/_app/immutable/chunks/DMyTUV-Y.js.gz +0 -0
  531. package/frontend/build/client/_app/immutable/chunks/{B0pefNHY.js → DSLBMEpr.js} +1 -18
  532. package/frontend/build/client/_app/immutable/chunks/DSLBMEpr.js.br +0 -0
  533. package/frontend/build/client/_app/immutable/chunks/DSLBMEpr.js.gz +0 -0
  534. package/frontend/build/client/_app/immutable/chunks/{CxTX_lpP.js → DbgD7JLa.js} +1 -18
  535. package/frontend/build/client/_app/immutable/chunks/DbgD7JLa.js.br +0 -0
  536. package/frontend/build/client/_app/immutable/chunks/DbgD7JLa.js.gz +0 -0
  537. package/frontend/build/client/_app/immutable/chunks/Dlnxgs49.js +1 -0
  538. package/frontend/build/client/_app/immutable/chunks/Dlnxgs49.js.br +0 -0
  539. package/frontend/build/client/_app/immutable/chunks/Dlnxgs49.js.gz +0 -0
  540. package/frontend/build/client/_app/immutable/chunks/TOCyHP97.js +6 -0
  541. package/frontend/build/client/_app/immutable/chunks/TOCyHP97.js.br +0 -0
  542. package/frontend/build/client/_app/immutable/chunks/TOCyHP97.js.gz +0 -0
  543. package/frontend/build/client/_app/immutable/chunks/nURnIknV.js +1 -0
  544. package/frontend/build/client/_app/immutable/chunks/nURnIknV.js.br +0 -0
  545. package/frontend/build/client/_app/immutable/chunks/nURnIknV.js.gz +0 -0
  546. package/frontend/build/client/_app/immutable/chunks/t-La0hgu.js +1 -0
  547. package/frontend/build/client/_app/immutable/chunks/t-La0hgu.js.br +0 -0
  548. package/frontend/build/client/_app/immutable/chunks/t-La0hgu.js.gz +0 -0
  549. package/frontend/build/client/_app/immutable/chunks/w0D4Uzlq.js +1 -0
  550. package/frontend/build/client/_app/immutable/chunks/w0D4Uzlq.js.br +0 -0
  551. package/frontend/build/client/_app/immutable/chunks/w0D4Uzlq.js.gz +0 -0
  552. package/frontend/build/client/_app/immutable/entry/app.BkBD0hgA.js +2 -0
  553. package/frontend/build/client/_app/immutable/entry/app.BkBD0hgA.js.br +0 -0
  554. package/frontend/build/client/_app/immutable/entry/app.BkBD0hgA.js.gz +0 -0
  555. package/frontend/build/client/_app/immutable/entry/start.BxeX1Uxs.js +1 -0
  556. package/frontend/build/client/_app/immutable/entry/start.BxeX1Uxs.js.br +2 -0
  557. package/frontend/build/client/_app/immutable/entry/start.BxeX1Uxs.js.gz +0 -0
  558. package/frontend/build/client/_app/immutable/nodes/0.ChjDHxSJ.js +6 -0
  559. package/frontend/build/client/_app/immutable/nodes/0.ChjDHxSJ.js.br +0 -0
  560. package/frontend/build/client/_app/immutable/nodes/0.ChjDHxSJ.js.gz +0 -0
  561. package/frontend/build/client/_app/immutable/nodes/1.DBSWa36f.js +1 -0
  562. package/frontend/build/client/_app/immutable/nodes/1.DBSWa36f.js.br +0 -0
  563. package/frontend/build/client/_app/immutable/nodes/1.DBSWa36f.js.gz +0 -0
  564. package/frontend/build/client/_app/immutable/nodes/10.DEbnxfND.js +1 -0
  565. package/frontend/build/client/_app/immutable/nodes/10.DEbnxfND.js.br +0 -0
  566. package/frontend/build/client/_app/immutable/nodes/10.DEbnxfND.js.gz +0 -0
  567. package/frontend/build/client/_app/immutable/nodes/11.O4cjXCg4.js +1 -0
  568. package/frontend/build/client/_app/immutable/nodes/11.O4cjXCg4.js.br +0 -0
  569. package/frontend/build/client/_app/immutable/nodes/11.O4cjXCg4.js.gz +0 -0
  570. package/frontend/build/client/_app/immutable/nodes/12.BWQdeRdX.js +1 -0
  571. package/frontend/build/client/_app/immutable/nodes/12.BWQdeRdX.js.br +0 -0
  572. package/frontend/build/client/_app/immutable/nodes/12.BWQdeRdX.js.gz +0 -0
  573. package/frontend/build/client/_app/immutable/nodes/2.BnHalSCi.js +1 -0
  574. package/frontend/build/client/_app/immutable/nodes/2.BnHalSCi.js.br +0 -0
  575. package/frontend/build/client/_app/immutable/nodes/2.BnHalSCi.js.gz +0 -0
  576. package/frontend/build/client/_app/immutable/nodes/3._S1vrLVF.js +1 -0
  577. package/frontend/build/client/_app/immutable/nodes/3._S1vrLVF.js.br +0 -0
  578. package/frontend/build/client/_app/immutable/nodes/3._S1vrLVF.js.gz +0 -0
  579. package/frontend/build/client/_app/immutable/nodes/4.D-YT_JJe.js +1 -0
  580. package/frontend/build/client/_app/immutable/nodes/4.D-YT_JJe.js.br +0 -0
  581. package/frontend/build/client/_app/immutable/nodes/4.D-YT_JJe.js.gz +0 -0
  582. package/frontend/build/client/_app/immutable/nodes/5.BiFBiWcW.js +1 -0
  583. package/frontend/build/client/_app/immutable/nodes/5.BiFBiWcW.js.br +0 -0
  584. package/frontend/build/client/_app/immutable/nodes/5.BiFBiWcW.js.gz +0 -0
  585. package/frontend/build/client/_app/immutable/nodes/6.BNS-W0R_.js +1 -0
  586. package/frontend/build/client/_app/immutable/nodes/6.BNS-W0R_.js.br +0 -0
  587. package/frontend/build/client/_app/immutable/nodes/6.BNS-W0R_.js.gz +0 -0
  588. package/frontend/build/client/_app/immutable/nodes/7.C-pKvVZy.js +1 -0
  589. package/frontend/build/client/_app/immutable/nodes/7.C-pKvVZy.js.br +0 -0
  590. package/frontend/build/client/_app/immutable/nodes/7.C-pKvVZy.js.gz +0 -0
  591. package/frontend/build/client/_app/immutable/nodes/8.BEUdazrw.js +4 -0
  592. package/frontend/build/client/_app/immutable/nodes/8.BEUdazrw.js.br +0 -0
  593. package/frontend/build/client/_app/immutable/nodes/8.BEUdazrw.js.gz +0 -0
  594. package/frontend/build/client/_app/immutable/nodes/9.CrLHYPEJ.js +1 -0
  595. package/frontend/build/client/_app/immutable/nodes/9.CrLHYPEJ.js.br +0 -0
  596. package/frontend/build/client/_app/immutable/nodes/9.CrLHYPEJ.js.gz +0 -0
  597. package/frontend/build/client/_app/version.json +1 -1
  598. package/frontend/build/client/_app/version.json.br +0 -0
  599. package/frontend/build/client/_app/version.json.gz +0 -0
  600. package/frontend/build/env.js +0 -17
  601. package/frontend/build/handler.js +0 -17
  602. package/frontend/build/index.js +0 -17
  603. package/frontend/build/server/chunks/0-Cn_2hzqk.js +17 -0
  604. package/frontend/build/server/chunks/0-Cn_2hzqk.js.map +1 -0
  605. package/frontend/build/server/chunks/1-BrRGJFSB.js +9 -0
  606. package/frontend/build/server/chunks/1-BrRGJFSB.js.map +1 -0
  607. package/frontend/build/server/chunks/10-l6_ikL_D.js +9 -0
  608. package/frontend/build/server/chunks/10-l6_ikL_D.js.map +1 -0
  609. package/frontend/build/server/chunks/11-BLPbHJqB.js +9 -0
  610. package/frontend/build/server/chunks/11-BLPbHJqB.js.map +1 -0
  611. package/frontend/build/server/chunks/12-S1ujUrHy.js +9 -0
  612. package/frontend/build/server/chunks/12-S1ujUrHy.js.map +1 -0
  613. package/frontend/build/server/chunks/2-Cte30Dgy.js +9 -0
  614. package/frontend/build/server/chunks/2-Cte30Dgy.js.map +1 -0
  615. package/frontend/build/server/chunks/3-BHkXVoNI.js +9 -0
  616. package/frontend/build/server/chunks/3-BHkXVoNI.js.map +1 -0
  617. package/frontend/build/server/chunks/4-Bo04DC5Z.js +9 -0
  618. package/frontend/build/server/chunks/4-Bo04DC5Z.js.map +1 -0
  619. package/frontend/build/server/chunks/5-F1ZsXMt2.js +9 -0
  620. package/frontend/build/server/chunks/5-F1ZsXMt2.js.map +1 -0
  621. package/frontend/build/server/chunks/6-FlZLnYJ6.js +9 -0
  622. package/frontend/build/server/chunks/6-FlZLnYJ6.js.map +1 -0
  623. package/frontend/build/server/chunks/7-DiQJZEF_.js +9 -0
  624. package/frontend/build/server/chunks/7-DiQJZEF_.js.map +1 -0
  625. package/frontend/build/server/chunks/8-DXReUGxi.js +9 -0
  626. package/frontend/build/server/chunks/8-DXReUGxi.js.map +1 -0
  627. package/frontend/build/server/chunks/9-Cy_mGmt4.js +9 -0
  628. package/frontend/build/server/chunks/9-Cy_mGmt4.js.map +1 -0
  629. package/frontend/build/server/chunks/BackLink-BJ8NaemM.js +13 -0
  630. package/frontend/build/server/chunks/{BackLink-KxZNqsaq.js.map → BackLink-BJ8NaemM.js.map} +1 -17
  631. package/frontend/build/server/chunks/Badge-44ZTDx0V.js +13 -0
  632. package/frontend/build/server/chunks/{Badge-B5V-z6pI.js.map → Badge-44ZTDx0V.js.map} +1 -17
  633. package/frontend/build/server/chunks/ConfirmModal-C0EAXcq_.js +44 -0
  634. package/frontend/build/server/chunks/ConfirmModal-C0EAXcq_.js.map +1 -0
  635. package/frontend/build/server/chunks/EmptyState-BA_eXaeR.js +34 -0
  636. package/frontend/build/server/chunks/EmptyState-BA_eXaeR.js.map +1 -0
  637. package/frontend/build/server/chunks/Modal-DChG187n.js +21 -0
  638. package/frontend/build/server/chunks/Modal-DChG187n.js.map +1 -0
  639. package/frontend/build/server/chunks/Toast-v-q4ZnYq.js +30 -0
  640. package/frontend/build/server/chunks/Toast-v-q4ZnYq.js.map +1 -0
  641. package/frontend/build/server/chunks/_layout.svelte-CHVI3Prt.js +24 -0
  642. package/frontend/build/server/chunks/_layout.svelte-CHVI3Prt.js.map +1 -0
  643. package/frontend/build/server/chunks/{_page.svelte-LcJmR5du.js → _page.svelte-1as75nPc.js} +28 -51
  644. package/frontend/build/server/chunks/_page.svelte-1as75nPc.js.map +1 -0
  645. package/frontend/build/server/chunks/_page.svelte-1jo8MapI.js +96 -0
  646. package/frontend/build/server/chunks/_page.svelte-1jo8MapI.js.map +1 -0
  647. package/frontend/build/server/chunks/{_page.svelte-C0vstY93.js → _page.svelte-BuFusRK1.js} +74 -56
  648. package/frontend/build/server/chunks/_page.svelte-BuFusRK1.js.map +1 -0
  649. package/frontend/build/server/chunks/{_page.svelte-gnktnXKP.js → _page.svelte-CAVyp70V.js} +37 -51
  650. package/frontend/build/server/chunks/_page.svelte-CAVyp70V.js.map +1 -0
  651. package/frontend/build/server/chunks/{_page.svelte-CC27sZag.js → _page.svelte-CB8-QBNg.js} +42 -57
  652. package/frontend/build/server/chunks/_page.svelte-CB8-QBNg.js.map +1 -0
  653. package/frontend/build/server/chunks/{_page.svelte-DqWsUJRp.js → _page.svelte-CWWeZuid.js} +24 -40
  654. package/frontend/build/server/chunks/_page.svelte-CWWeZuid.js.map +1 -0
  655. package/frontend/build/server/chunks/_page.svelte-CpB-fgJl.js +219 -0
  656. package/frontend/build/server/chunks/_page.svelte-CpB-fgJl.js.map +1 -0
  657. package/frontend/build/server/chunks/_page.svelte-D3E6Eojd.js +27 -0
  658. package/frontend/build/server/chunks/_page.svelte-D3E6Eojd.js.map +1 -0
  659. package/frontend/build/server/chunks/_page.svelte-Kg69DDaM.js +27 -0
  660. package/frontend/build/server/chunks/_page.svelte-Kg69DDaM.js.map +1 -0
  661. package/frontend/build/server/chunks/{_page.svelte-BETENC2e.js → _page.svelte-L9fuiN_q.js} +13 -28
  662. package/frontend/build/server/chunks/_page.svelte-L9fuiN_q.js.map +1 -0
  663. package/frontend/build/server/chunks/_page.svelte-wKyUmA2e.js +724 -0
  664. package/frontend/build/server/chunks/_page.svelte-wKyUmA2e.js.map +1 -0
  665. package/frontend/build/server/chunks/attributes-BeaNKpgU.js +0 -17
  666. package/frontend/build/server/chunks/attributes-BeaNKpgU.js.map +0 -16
  667. package/frontend/build/server/chunks/{auth-rlH-cIzn.js → auth-Chw-wBpI.js} +2 -19
  668. package/frontend/build/server/chunks/{auth-rlH-cIzn.js.map → auth-Chw-wBpI.js.map} +1 -17
  669. package/frontend/build/server/chunks/auth2-C02yYDpz.js +6 -0
  670. package/frontend/build/server/chunks/auth2-C02yYDpz.js.map +1 -0
  671. package/frontend/build/server/chunks/{client-DyII78e0.js → client-DEmxR_a-.js} +2 -19
  672. package/frontend/build/server/chunks/{client-DyII78e0.js.map → client-DEmxR_a-.js.map} +1 -17
  673. package/frontend/build/server/chunks/common-DYYTVHPw.js +21 -0
  674. package/frontend/build/server/chunks/common-DYYTVHPw.js.map +1 -0
  675. package/frontend/build/server/chunks/constants-CXTaQaB6.js +22 -0
  676. package/frontend/build/server/chunks/constants-CXTaQaB6.js.map +1 -0
  677. package/frontend/build/server/chunks/error.svelte-BD3xNemk.js +28 -0
  678. package/frontend/build/server/chunks/{error.svelte-BDW3iP1O.js.map → error.svelte-BD3xNemk.js.map} +1 -17
  679. package/frontend/build/server/chunks/escaping-CqgfEcN3.js +0 -17
  680. package/frontend/build/server/chunks/escaping-CqgfEcN3.js.map +0 -16
  681. package/frontend/build/server/chunks/exports-D0QHgeSL.js +0 -17
  682. package/frontend/build/server/chunks/exports-D0QHgeSL.js.map +0 -16
  683. package/frontend/build/server/chunks/{format-D26ZQccb.js → format-CiNRMfHu.js} +2 -19
  684. package/frontend/build/server/chunks/{format-D26ZQccb.js.map → format-CiNRMfHu.js.map} +1 -17
  685. package/frontend/build/server/chunks/index-server-B3M9vyh2.js +14 -0
  686. package/frontend/build/server/chunks/index-server-B3M9vyh2.js.map +1 -0
  687. package/frontend/build/server/chunks/{index2-DG8XHU5D.js → index2-5R1tbrep.js} +2 -19
  688. package/frontend/build/server/chunks/{index2-DG8XHU5D.js.map → index2-5R1tbrep.js.map} +1 -17
  689. package/frontend/build/server/chunks/reports-D_ApeeNh.js +23 -0
  690. package/frontend/build/server/chunks/{reports-Bgi7V5N7.js.map → reports-D_ApeeNh.js.map} +1 -17
  691. package/frontend/build/server/chunks/reports2-BtElN_53.js +47 -0
  692. package/frontend/build/server/chunks/reports2-BtElN_53.js.map +1 -0
  693. package/frontend/build/server/chunks/repository-FYYV_vKE.js +47 -0
  694. package/frontend/build/server/chunks/repository-FYYV_vKE.js.map +1 -0
  695. package/frontend/build/server/chunks/runner-DC7hXbnY.js +32 -0
  696. package/frontend/build/server/chunks/runner-DC7hXbnY.js.map +1 -0
  697. package/frontend/build/server/chunks/stores-BLenR3c1.js +27 -0
  698. package/frontend/build/server/chunks/{stores-DlkXV308.js.map → stores-BLenR3c1.js.map} +1 -17
  699. package/frontend/build/server/chunks/theme-nAx-GvX_.js +10 -0
  700. package/frontend/build/server/chunks/theme-nAx-GvX_.js.map +1 -0
  701. package/frontend/build/server/index.js +3 -20
  702. package/frontend/build/server/index.js.map +1 -17
  703. package/frontend/build/server/manifest.js +14 -31
  704. package/frontend/build/server/manifest.js.map +1 -17
  705. package/frontend/build/shims.js +0 -17
  706. package/frontend/package.json +1 -0
  707. package/frontend/src/app.css +1 -13
  708. package/frontend/src/app.html +1 -13
  709. package/frontend/src/lib/api/activeRuns.js +18 -0
  710. package/frontend/src/lib/api/auth.js +1 -13
  711. package/frontend/src/lib/api/reports.js +1 -13
  712. package/frontend/src/lib/api/repository.js +1 -13
  713. package/frontend/src/lib/api/runners.js +26 -21
  714. package/frontend/src/lib/api/schedules.js +1 -13
  715. package/frontend/src/lib/api/settings.js +11 -23
  716. package/frontend/src/lib/api/tests.js +1 -13
  717. package/frontend/src/lib/api/users.js +1 -13
  718. package/frontend/src/lib/components/icons/BrowserIcon.svelte +1 -13
  719. package/frontend/src/lib/components/layout/Nav.svelte +1 -13
  720. package/frontend/src/lib/components/layout/PageShell.svelte +1 -13
  721. package/frontend/src/lib/components/layout/RunnerPanel.svelte +146 -105
  722. package/frontend/src/lib/components/ui/AutomatedBadge.svelte +2 -31
  723. package/frontend/src/lib/components/ui/BackLink.svelte +1 -30
  724. package/frontend/src/lib/components/ui/Badge.svelte +1 -13
  725. package/frontend/src/lib/components/ui/Button.svelte +1 -13
  726. package/frontend/src/lib/components/ui/CaseIdChip.svelte +1 -30
  727. package/frontend/src/lib/components/ui/ConfirmModal.svelte +8 -17
  728. package/frontend/src/lib/components/ui/EmptyState.svelte +26 -15
  729. package/frontend/src/lib/components/ui/Modal.svelte +1 -13
  730. package/frontend/src/lib/components/ui/Pagination.svelte +1 -13
  731. package/frontend/src/lib/components/ui/PriorityBadge.svelte +1 -30
  732. package/frontend/src/lib/components/ui/ResultChip.svelte +1 -30
  733. package/frontend/src/lib/components/ui/StatusDot.svelte +1 -30
  734. package/frontend/src/lib/components/ui/StepKeyword.svelte +1 -30
  735. package/frontend/src/lib/components/ui/StepStatusIcon.svelte +1 -30
  736. package/frontend/src/lib/components/ui/TagChip.svelte +1 -30
  737. package/frontend/src/lib/components/ui/Terminal.svelte +1 -13
  738. package/frontend/src/lib/components/ui/Toast.svelte +1 -13
  739. package/frontend/src/lib/constants.js +5 -17
  740. package/frontend/src/lib/copy/auth.js +29 -0
  741. package/frontend/src/lib/copy/common.js +39 -0
  742. package/frontend/src/lib/copy/dashboard.js +28 -0
  743. package/frontend/src/lib/copy/reports.js +83 -0
  744. package/frontend/src/lib/copy/repository.js +153 -0
  745. package/frontend/src/lib/copy/runners.js +59 -0
  746. package/frontend/src/lib/copy/schedules.js +96 -0
  747. package/frontend/src/lib/copy/settings.js +295 -0
  748. package/frontend/src/lib/index.js +1 -13
  749. package/frontend/src/lib/socketEvents.js +36 -0
  750. package/frontend/src/lib/stores/auth.js +1 -13
  751. package/frontend/src/lib/stores/runner.js +10 -18
  752. package/frontend/src/lib/stores/theme.js +1 -13
  753. package/frontend/src/lib/styles/global.css +1 -13
  754. package/frontend/src/lib/styles/reset.css +1 -13
  755. package/frontend/src/lib/styles/tokens.css +1 -13
  756. package/frontend/src/lib/utils/format.js +1 -13
  757. package/frontend/src/routes/+layout.js +1 -13
  758. package/frontend/src/routes/+layout.svelte +1 -13
  759. package/frontend/src/routes/+page.svelte +296 -115
  760. package/frontend/src/routes/login/+page.svelte +22 -23
  761. package/frontend/src/routes/reports/+page.svelte +37 -38
  762. package/frontend/src/routes/reports/[id]/+page.svelte +54 -43
  763. package/frontend/src/routes/reports/live/+page.svelte +57 -42
  764. package/frontend/src/routes/scheduled-tests/+page.svelte +134 -117
  765. package/frontend/src/routes/settings/+page.svelte +490 -267
  766. package/frontend/src/routes/setup/+page.svelte +30 -27
  767. package/frontend/src/routes/test-repository/+page.svelte +120 -91
  768. package/frontend/src/routes/test-repository/runs/[id]/+page.svelte +95 -60
  769. package/frontend/src/routes/test-repository/suites/[id]/+page.svelte +145 -91
  770. package/frontend/svelte.config.js +1 -13
  771. package/frontend/vite.config.js +1 -13
  772. package/package.json +3 -2
  773. package/resources/mit-license.txt +2 -0
  774. package/backend/scripts/create-test.js +0 -149
  775. package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/ConfirmModal.CdhOYVBb.css +0 -18
  776. package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/EmptyState.BdO1q9cJ.css +0 -18
  777. package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_page.BJ-I1gHO.css +0 -18
  778. package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_page.Bhof07Eg.css +0 -18
  779. package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_page.CrXpMrqh.css +0 -18
  780. package/frontend/.svelte-kit/adapter-node/chunks/Button.js +0 -33
  781. package/frontend/.svelte-kit/output/client/_app/immutable/assets/11.BJ-I1gHO.css +0 -18
  782. package/frontend/.svelte-kit/output/client/_app/immutable/assets/2.CrXpMrqh.css +0 -18
  783. package/frontend/.svelte-kit/output/client/_app/immutable/assets/8.Bhof07Eg.css +0 -18
  784. package/frontend/.svelte-kit/output/client/_app/immutable/assets/ConfirmModal.CdhOYVBb.css +0 -18
  785. package/frontend/.svelte-kit/output/client/_app/immutable/assets/ConfirmModal.DmxkcwXv.css +0 -18
  786. package/frontend/.svelte-kit/output/client/_app/immutable/assets/EmptyState.BdO1q9cJ.css +0 -18
  787. package/frontend/.svelte-kit/output/client/_app/immutable/assets/_page.BJ-I1gHO.css +0 -18
  788. package/frontend/.svelte-kit/output/client/_app/immutable/assets/_page.Bhof07Eg.css +0 -18
  789. package/frontend/.svelte-kit/output/client/_app/immutable/assets/_page.CrXpMrqh.css +0 -18
  790. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/BFgtfHj2.js +0 -18
  791. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/BIRVeCLU.js +0 -18
  792. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/BKCNyxZ2.js +0 -18
  793. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/BLAiBE__.js +0 -18
  794. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/BeO8veBd.js +0 -18
  795. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/BgNaeXAp.js +0 -18
  796. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/C3SY6-sX.js +0 -19
  797. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/C4eeChIU.js +0 -18
  798. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/CVV6HrFb.js +0 -18
  799. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/CstKKb9b.js +0 -18
  800. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/CyQ_oBw2.js +0 -18
  801. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/DGryW1Vp.js +0 -18
  802. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/DIx44H9N.js +0 -18
  803. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/DP6QP4L6.js +0 -18
  804. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/DmRbbcS3.js +0 -23
  805. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/IFIFk6zi.js +0 -18
  806. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/KJdjlibc.js +0 -20
  807. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/ll-VsEGv.js +0 -18
  808. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/raHbXn_9.js +0 -18
  809. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/uFRI_bmR.js +0 -18
  810. package/frontend/.svelte-kit/output/client/_app/immutable/entry/app.Dz_CBZcR.js +0 -19
  811. package/frontend/.svelte-kit/output/client/_app/immutable/entry/start.MMlC62np.js +0 -18
  812. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/0.CKD9Qja6.js +0 -23
  813. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/1.Dbck5ct8.js +0 -18
  814. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/10.BfmGpmC1.js +0 -19
  815. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/11.C7l9HPom.js +0 -18
  816. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/12.Iu9bcGdC.js +0 -19
  817. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/2.BqQhRvYh.js +0 -18
  818. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/3.BZRTKadS.js +0 -18
  819. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/4.BfKoPKdM.js +0 -18
  820. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/5.B4a2uCWn.js +0 -18
  821. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/6.CI508CMS.js +0 -18
  822. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/7.3x_eiof1.js +0 -18
  823. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/8.BfUuob4H.js +0 -29
  824. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/9.BZhCKRJe.js +0 -18
  825. package/frontend/.svelte-kit/output/server/_app/immutable/assets/ConfirmModal.CdhOYVBb.css +0 -18
  826. package/frontend/.svelte-kit/output/server/_app/immutable/assets/EmptyState.BdO1q9cJ.css +0 -18
  827. package/frontend/.svelte-kit/output/server/_app/immutable/assets/_page.BJ-I1gHO.css +0 -18
  828. package/frontend/.svelte-kit/output/server/_app/immutable/assets/_page.Bhof07Eg.css +0 -18
  829. package/frontend/.svelte-kit/output/server/_app/immutable/assets/_page.CrXpMrqh.css +0 -18
  830. package/frontend/.svelte-kit/output/server/chunks/Button.js +0 -33
  831. package/frontend/build/client/_app/immutable/assets/11.BJ-I1gHO.css +0 -18
  832. package/frontend/build/client/_app/immutable/assets/11.BJ-I1gHO.css.br +0 -0
  833. package/frontend/build/client/_app/immutable/assets/11.BJ-I1gHO.css.gz +0 -0
  834. package/frontend/build/client/_app/immutable/assets/2.CrXpMrqh.css +0 -18
  835. package/frontend/build/client/_app/immutable/assets/2.CrXpMrqh.css.br +0 -0
  836. package/frontend/build/client/_app/immutable/assets/2.CrXpMrqh.css.gz +0 -0
  837. package/frontend/build/client/_app/immutable/assets/8.Bhof07Eg.css +0 -18
  838. package/frontend/build/client/_app/immutable/assets/8.Bhof07Eg.css.br +0 -0
  839. package/frontend/build/client/_app/immutable/assets/8.Bhof07Eg.css.gz +0 -0
  840. package/frontend/build/client/_app/immutable/assets/ConfirmModal.CdhOYVBb.css +0 -18
  841. package/frontend/build/client/_app/immutable/assets/ConfirmModal.CdhOYVBb.css.br +0 -0
  842. package/frontend/build/client/_app/immutable/assets/ConfirmModal.CdhOYVBb.css.gz +0 -0
  843. package/frontend/build/client/_app/immutable/assets/ConfirmModal.DmxkcwXv.css +0 -18
  844. package/frontend/build/client/_app/immutable/assets/ConfirmModal.DmxkcwXv.css.br +0 -0
  845. package/frontend/build/client/_app/immutable/assets/ConfirmModal.DmxkcwXv.css.gz +0 -0
  846. package/frontend/build/client/_app/immutable/assets/EmptyState.BdO1q9cJ.css +0 -18
  847. package/frontend/build/client/_app/immutable/assets/EmptyState.BdO1q9cJ.css.br +0 -0
  848. package/frontend/build/client/_app/immutable/assets/EmptyState.BdO1q9cJ.css.gz +0 -0
  849. package/frontend/build/client/_app/immutable/assets/_page.BJ-I1gHO.css +0 -18
  850. package/frontend/build/client/_app/immutable/assets/_page.BJ-I1gHO.css.br +0 -0
  851. package/frontend/build/client/_app/immutable/assets/_page.BJ-I1gHO.css.gz +0 -0
  852. package/frontend/build/client/_app/immutable/assets/_page.Bhof07Eg.css +0 -18
  853. package/frontend/build/client/_app/immutable/assets/_page.Bhof07Eg.css.br +0 -0
  854. package/frontend/build/client/_app/immutable/assets/_page.Bhof07Eg.css.gz +0 -0
  855. package/frontend/build/client/_app/immutable/assets/_page.CrXpMrqh.css +0 -18
  856. package/frontend/build/client/_app/immutable/assets/_page.CrXpMrqh.css.br +0 -0
  857. package/frontend/build/client/_app/immutable/assets/_page.CrXpMrqh.css.gz +0 -0
  858. package/frontend/build/client/_app/immutable/chunks/B0pefNHY.js.br +0 -0
  859. package/frontend/build/client/_app/immutable/chunks/B0pefNHY.js.gz +0 -0
  860. package/frontend/build/client/_app/immutable/chunks/BFEiffAL.js.br +0 -0
  861. package/frontend/build/client/_app/immutable/chunks/BFEiffAL.js.gz +0 -0
  862. package/frontend/build/client/_app/immutable/chunks/BFgtfHj2.js +0 -18
  863. package/frontend/build/client/_app/immutable/chunks/BFgtfHj2.js.br +0 -0
  864. package/frontend/build/client/_app/immutable/chunks/BFgtfHj2.js.gz +0 -0
  865. package/frontend/build/client/_app/immutable/chunks/BIRVeCLU.js +0 -18
  866. package/frontend/build/client/_app/immutable/chunks/BIRVeCLU.js.br +0 -20
  867. package/frontend/build/client/_app/immutable/chunks/BIRVeCLU.js.gz +0 -0
  868. package/frontend/build/client/_app/immutable/chunks/BKCNyxZ2.js +0 -18
  869. package/frontend/build/client/_app/immutable/chunks/BKCNyxZ2.js.br +0 -0
  870. package/frontend/build/client/_app/immutable/chunks/BKCNyxZ2.js.gz +0 -0
  871. package/frontend/build/client/_app/immutable/chunks/BLAiBE__.js +0 -18
  872. package/frontend/build/client/_app/immutable/chunks/BLAiBE__.js.br +0 -18
  873. package/frontend/build/client/_app/immutable/chunks/BLAiBE__.js.gz +0 -0
  874. package/frontend/build/client/_app/immutable/chunks/BVMec-1T.js.br +0 -0
  875. package/frontend/build/client/_app/immutable/chunks/BVMec-1T.js.gz +0 -0
  876. package/frontend/build/client/_app/immutable/chunks/BeO8veBd.js +0 -18
  877. package/frontend/build/client/_app/immutable/chunks/BeO8veBd.js.br +0 -0
  878. package/frontend/build/client/_app/immutable/chunks/BeO8veBd.js.gz +0 -0
  879. package/frontend/build/client/_app/immutable/chunks/BgNaeXAp.js +0 -18
  880. package/frontend/build/client/_app/immutable/chunks/BgNaeXAp.js.br +0 -0
  881. package/frontend/build/client/_app/immutable/chunks/BgNaeXAp.js.gz +0 -0
  882. package/frontend/build/client/_app/immutable/chunks/BkKmeUbA.js.br +0 -0
  883. package/frontend/build/client/_app/immutable/chunks/BkKmeUbA.js.gz +0 -0
  884. package/frontend/build/client/_app/immutable/chunks/C3SY6-sX.js +0 -19
  885. package/frontend/build/client/_app/immutable/chunks/C3SY6-sX.js.br +0 -0
  886. package/frontend/build/client/_app/immutable/chunks/C3SY6-sX.js.gz +0 -0
  887. package/frontend/build/client/_app/immutable/chunks/C4eeChIU.js +0 -18
  888. package/frontend/build/client/_app/immutable/chunks/C4eeChIU.js.br +0 -0
  889. package/frontend/build/client/_app/immutable/chunks/C4eeChIU.js.gz +0 -0
  890. package/frontend/build/client/_app/immutable/chunks/C67QNx7Z.js.br +0 -0
  891. package/frontend/build/client/_app/immutable/chunks/C67QNx7Z.js.gz +0 -0
  892. package/frontend/build/client/_app/immutable/chunks/CVV6HrFb.js +0 -18
  893. package/frontend/build/client/_app/immutable/chunks/CVV6HrFb.js.br +0 -0
  894. package/frontend/build/client/_app/immutable/chunks/CVV6HrFb.js.gz +0 -0
  895. package/frontend/build/client/_app/immutable/chunks/CstKKb9b.js +0 -18
  896. package/frontend/build/client/_app/immutable/chunks/CstKKb9b.js.br +0 -0
  897. package/frontend/build/client/_app/immutable/chunks/CstKKb9b.js.gz +0 -0
  898. package/frontend/build/client/_app/immutable/chunks/CxTX_lpP.js.br +0 -0
  899. package/frontend/build/client/_app/immutable/chunks/CxTX_lpP.js.gz +0 -0
  900. package/frontend/build/client/_app/immutable/chunks/CyQ_oBw2.js +0 -18
  901. package/frontend/build/client/_app/immutable/chunks/CyQ_oBw2.js.br +0 -0
  902. package/frontend/build/client/_app/immutable/chunks/CyQ_oBw2.js.gz +0 -0
  903. package/frontend/build/client/_app/immutable/chunks/DGryW1Vp.js +0 -18
  904. package/frontend/build/client/_app/immutable/chunks/DGryW1Vp.js.br +0 -0
  905. package/frontend/build/client/_app/immutable/chunks/DGryW1Vp.js.gz +0 -0
  906. package/frontend/build/client/_app/immutable/chunks/DIx44H9N.js +0 -18
  907. package/frontend/build/client/_app/immutable/chunks/DIx44H9N.js.br +0 -0
  908. package/frontend/build/client/_app/immutable/chunks/DIx44H9N.js.gz +0 -0
  909. package/frontend/build/client/_app/immutable/chunks/DP6QP4L6.js +0 -18
  910. package/frontend/build/client/_app/immutable/chunks/DP6QP4L6.js.br +0 -0
  911. package/frontend/build/client/_app/immutable/chunks/DP6QP4L6.js.gz +0 -0
  912. package/frontend/build/client/_app/immutable/chunks/DmRbbcS3.js +0 -23
  913. package/frontend/build/client/_app/immutable/chunks/DmRbbcS3.js.br +0 -0
  914. package/frontend/build/client/_app/immutable/chunks/DmRbbcS3.js.gz +0 -0
  915. package/frontend/build/client/_app/immutable/chunks/IFIFk6zi.js +0 -18
  916. package/frontend/build/client/_app/immutable/chunks/IFIFk6zi.js.br +0 -0
  917. package/frontend/build/client/_app/immutable/chunks/IFIFk6zi.js.gz +0 -0
  918. package/frontend/build/client/_app/immutable/chunks/KJdjlibc.js +0 -20
  919. package/frontend/build/client/_app/immutable/chunks/KJdjlibc.js.br +0 -0
  920. package/frontend/build/client/_app/immutable/chunks/KJdjlibc.js.gz +0 -0
  921. package/frontend/build/client/_app/immutable/chunks/ll-VsEGv.js +0 -18
  922. package/frontend/build/client/_app/immutable/chunks/ll-VsEGv.js.br +0 -0
  923. package/frontend/build/client/_app/immutable/chunks/ll-VsEGv.js.gz +0 -0
  924. package/frontend/build/client/_app/immutable/chunks/raHbXn_9.js +0 -18
  925. package/frontend/build/client/_app/immutable/chunks/raHbXn_9.js.br +0 -0
  926. package/frontend/build/client/_app/immutable/chunks/raHbXn_9.js.gz +0 -0
  927. package/frontend/build/client/_app/immutable/chunks/uFRI_bmR.js +0 -18
  928. package/frontend/build/client/_app/immutable/chunks/uFRI_bmR.js.br +0 -0
  929. package/frontend/build/client/_app/immutable/chunks/uFRI_bmR.js.gz +0 -0
  930. package/frontend/build/client/_app/immutable/entry/app.Dz_CBZcR.js +0 -19
  931. package/frontend/build/client/_app/immutable/entry/app.Dz_CBZcR.js.br +0 -0
  932. package/frontend/build/client/_app/immutable/entry/app.Dz_CBZcR.js.gz +0 -0
  933. package/frontend/build/client/_app/immutable/entry/start.MMlC62np.js +0 -18
  934. package/frontend/build/client/_app/immutable/entry/start.MMlC62np.js.br +0 -18
  935. package/frontend/build/client/_app/immutable/entry/start.MMlC62np.js.gz +0 -0
  936. package/frontend/build/client/_app/immutable/nodes/0.CKD9Qja6.js +0 -23
  937. package/frontend/build/client/_app/immutable/nodes/0.CKD9Qja6.js.br +0 -0
  938. package/frontend/build/client/_app/immutable/nodes/0.CKD9Qja6.js.gz +0 -0
  939. package/frontend/build/client/_app/immutable/nodes/1.Dbck5ct8.js +0 -18
  940. package/frontend/build/client/_app/immutable/nodes/1.Dbck5ct8.js.br +0 -0
  941. package/frontend/build/client/_app/immutable/nodes/1.Dbck5ct8.js.gz +0 -0
  942. package/frontend/build/client/_app/immutable/nodes/10.BfmGpmC1.js +0 -19
  943. package/frontend/build/client/_app/immutable/nodes/10.BfmGpmC1.js.br +0 -0
  944. package/frontend/build/client/_app/immutable/nodes/10.BfmGpmC1.js.gz +0 -0
  945. package/frontend/build/client/_app/immutable/nodes/11.C7l9HPom.js +0 -18
  946. package/frontend/build/client/_app/immutable/nodes/11.C7l9HPom.js.br +0 -0
  947. package/frontend/build/client/_app/immutable/nodes/11.C7l9HPom.js.gz +0 -0
  948. package/frontend/build/client/_app/immutable/nodes/12.Iu9bcGdC.js +0 -19
  949. package/frontend/build/client/_app/immutable/nodes/12.Iu9bcGdC.js.br +0 -0
  950. package/frontend/build/client/_app/immutable/nodes/12.Iu9bcGdC.js.gz +0 -0
  951. package/frontend/build/client/_app/immutable/nodes/2.BqQhRvYh.js +0 -18
  952. package/frontend/build/client/_app/immutable/nodes/2.BqQhRvYh.js.br +0 -0
  953. package/frontend/build/client/_app/immutable/nodes/2.BqQhRvYh.js.gz +0 -0
  954. package/frontend/build/client/_app/immutable/nodes/3.BZRTKadS.js +0 -18
  955. package/frontend/build/client/_app/immutable/nodes/3.BZRTKadS.js.br +0 -0
  956. package/frontend/build/client/_app/immutable/nodes/3.BZRTKadS.js.gz +0 -0
  957. package/frontend/build/client/_app/immutable/nodes/4.BfKoPKdM.js +0 -18
  958. package/frontend/build/client/_app/immutable/nodes/4.BfKoPKdM.js.br +0 -0
  959. package/frontend/build/client/_app/immutable/nodes/4.BfKoPKdM.js.gz +0 -0
  960. package/frontend/build/client/_app/immutable/nodes/5.B4a2uCWn.js +0 -18
  961. package/frontend/build/client/_app/immutable/nodes/5.B4a2uCWn.js.br +0 -0
  962. package/frontend/build/client/_app/immutable/nodes/5.B4a2uCWn.js.gz +0 -0
  963. package/frontend/build/client/_app/immutable/nodes/6.CI508CMS.js +0 -18
  964. package/frontend/build/client/_app/immutable/nodes/6.CI508CMS.js.br +0 -0
  965. package/frontend/build/client/_app/immutable/nodes/6.CI508CMS.js.gz +0 -0
  966. package/frontend/build/client/_app/immutable/nodes/7.3x_eiof1.js +0 -18
  967. package/frontend/build/client/_app/immutable/nodes/7.3x_eiof1.js.br +0 -0
  968. package/frontend/build/client/_app/immutable/nodes/7.3x_eiof1.js.gz +0 -0
  969. package/frontend/build/client/_app/immutable/nodes/8.BfUuob4H.js +0 -29
  970. package/frontend/build/client/_app/immutable/nodes/8.BfUuob4H.js.br +0 -0
  971. package/frontend/build/client/_app/immutable/nodes/8.BfUuob4H.js.gz +0 -0
  972. package/frontend/build/client/_app/immutable/nodes/9.BZhCKRJe.js +0 -18
  973. package/frontend/build/client/_app/immutable/nodes/9.BZhCKRJe.js.br +0 -0
  974. package/frontend/build/client/_app/immutable/nodes/9.BZhCKRJe.js.gz +0 -0
  975. package/frontend/build/server/chunks/0-Dzas6zkl.js +0 -34
  976. package/frontend/build/server/chunks/0-Dzas6zkl.js.map +0 -17
  977. package/frontend/build/server/chunks/1-B4EsP8yr.js +0 -26
  978. package/frontend/build/server/chunks/1-B4EsP8yr.js.map +0 -17
  979. package/frontend/build/server/chunks/10-UhDQZ5BY.js +0 -26
  980. package/frontend/build/server/chunks/10-UhDQZ5BY.js.map +0 -17
  981. package/frontend/build/server/chunks/11-mTH3nQlX.js +0 -26
  982. package/frontend/build/server/chunks/11-mTH3nQlX.js.map +0 -17
  983. package/frontend/build/server/chunks/12-9mg6kp53.js +0 -26
  984. package/frontend/build/server/chunks/12-9mg6kp53.js.map +0 -17
  985. package/frontend/build/server/chunks/2-Bkz8H7CT.js +0 -26
  986. package/frontend/build/server/chunks/2-Bkz8H7CT.js.map +0 -17
  987. package/frontend/build/server/chunks/3-DDtaiqu7.js +0 -26
  988. package/frontend/build/server/chunks/3-DDtaiqu7.js.map +0 -17
  989. package/frontend/build/server/chunks/4-DbdkTAvS.js +0 -26
  990. package/frontend/build/server/chunks/4-DbdkTAvS.js.map +0 -17
  991. package/frontend/build/server/chunks/5-CK5hY2WF.js +0 -26
  992. package/frontend/build/server/chunks/5-CK5hY2WF.js.map +0 -17
  993. package/frontend/build/server/chunks/6-Cps9fL3Z.js +0 -26
  994. package/frontend/build/server/chunks/6-Cps9fL3Z.js.map +0 -17
  995. package/frontend/build/server/chunks/7-CgUpbaJD.js +0 -26
  996. package/frontend/build/server/chunks/7-CgUpbaJD.js.map +0 -17
  997. package/frontend/build/server/chunks/8-dilaVKYo.js +0 -26
  998. package/frontend/build/server/chunks/8-dilaVKYo.js.map +0 -17
  999. package/frontend/build/server/chunks/9-CUJxgoIN.js +0 -26
  1000. package/frontend/build/server/chunks/9-CUJxgoIN.js.map +0 -17
  1001. package/frontend/build/server/chunks/BackLink-KxZNqsaq.js +0 -30
  1002. package/frontend/build/server/chunks/Badge-B5V-z6pI.js +0 -30
  1003. package/frontend/build/server/chunks/Button-CuacyA7Y.js +0 -33
  1004. package/frontend/build/server/chunks/Button-CuacyA7Y.js.map +0 -17
  1005. package/frontend/build/server/chunks/ConfirmModal-DBtnLLsU.js +0 -73
  1006. package/frontend/build/server/chunks/ConfirmModal-DBtnLLsU.js.map +0 -17
  1007. package/frontend/build/server/chunks/EmptyState-B74-VZ15.js +0 -34
  1008. package/frontend/build/server/chunks/EmptyState-B74-VZ15.js.map +0 -17
  1009. package/frontend/build/server/chunks/Toast-DDF2wi_5.js +0 -37
  1010. package/frontend/build/server/chunks/Toast-DDF2wi_5.js.map +0 -17
  1011. package/frontend/build/server/chunks/_layout.svelte-DoJXDbP1.js +0 -39
  1012. package/frontend/build/server/chunks/_layout.svelte-DoJXDbP1.js.map +0 -17
  1013. package/frontend/build/server/chunks/_page.svelte-BETENC2e.js.map +0 -17
  1014. package/frontend/build/server/chunks/_page.svelte-C0vstY93.js.map +0 -17
  1015. package/frontend/build/server/chunks/_page.svelte-CC27sZag.js.map +0 -17
  1016. package/frontend/build/server/chunks/_page.svelte-CYkOPxn2.js +0 -183
  1017. package/frontend/build/server/chunks/_page.svelte-CYkOPxn2.js.map +0 -17
  1018. package/frontend/build/server/chunks/_page.svelte-CperUuP9.js +0 -564
  1019. package/frontend/build/server/chunks/_page.svelte-CperUuP9.js.map +0 -17
  1020. package/frontend/build/server/chunks/_page.svelte-CwrCf0C8.js +0 -65
  1021. package/frontend/build/server/chunks/_page.svelte-CwrCf0C8.js.map +0 -17
  1022. package/frontend/build/server/chunks/_page.svelte-DALHRFEX.js +0 -43
  1023. package/frontend/build/server/chunks/_page.svelte-DALHRFEX.js.map +0 -17
  1024. package/frontend/build/server/chunks/_page.svelte-DNNyBx4y.js +0 -43
  1025. package/frontend/build/server/chunks/_page.svelte-DNNyBx4y.js.map +0 -17
  1026. package/frontend/build/server/chunks/_page.svelte-DqWsUJRp.js.map +0 -17
  1027. package/frontend/build/server/chunks/_page.svelte-LcJmR5du.js.map +0 -17
  1028. package/frontend/build/server/chunks/_page.svelte-gnktnXKP.js.map +0 -17
  1029. package/frontend/build/server/chunks/constants-Drz-Vo39.js +0 -35
  1030. package/frontend/build/server/chunks/constants-Drz-Vo39.js.map +0 -17
  1031. package/frontend/build/server/chunks/error.svelte-BDW3iP1O.js +0 -45
  1032. package/frontend/build/server/chunks/index-server-Dr2Nvcmu.js +0 -31
  1033. package/frontend/build/server/chunks/index-server-Dr2Nvcmu.js.map +0 -17
  1034. package/frontend/build/server/chunks/reports-Bgi7V5N7.js +0 -40
  1035. package/frontend/build/server/chunks/runner-D18Ml_vF.js +0 -42
  1036. package/frontend/build/server/chunks/runner-D18Ml_vF.js.map +0 -17
  1037. package/frontend/build/server/chunks/stores-DlkXV308.js +0 -44
  1038. package/frontend/build/server/chunks/theme-D_NKm6iI.js +0 -27
  1039. package/frontend/build/server/chunks/theme-D_NKm6iI.js.map +0 -17
  1040. package/resources/gpl-3.0-license.txt +0 -14
@@ -0,0 +1,189 @@
1
+ /*
2
+ * This file is part of Plum.
3
+ * Licensed under the MIT License. See LICENSE file in the project root for details.
4
+ */
5
+
6
+ const fs = require('fs');
7
+ const path = require('path');
8
+ const { loadRegistry, saveRegistry } = require('./runnerProcess');
9
+ const { SOCKET_EVENTS } = require('../constants/socketEvents');
10
+
11
+ const WATCH_OPTS = { usePolling: true, interval: 800, ignoreInitial: true };
12
+
13
+ function ensureTestsDir(testsDir, isNodeMode) {
14
+ if (fs.existsSync(testsDir)) {
15
+ console.log('📂 Loading tests from:', testsDir);
16
+ return;
17
+ }
18
+ if (isNodeMode) {
19
+ console.warn('⚠️ No tests folder found — will be populated when a job is received');
20
+ return;
21
+ }
22
+ console.error('❌ No tests folder found at /app/tests');
23
+ process.exit(1);
24
+ }
25
+
26
+ // A self-restart (POST /api/restart) spawns the replacement before this
27
+ // process has released the port, so the first bind attempt can briefly hit
28
+ // EADDRINUSE — retry instead of dying immediately.
29
+ function attachListenRetry(server, port) {
30
+ let retriesLeft = 20;
31
+ server.on('error', (err) => {
32
+ if (err.code === 'EADDRINUSE' && retriesLeft > 0) {
33
+ retriesLeft -= 1;
34
+ setTimeout(() => server.listen(port), 250);
35
+ } else {
36
+ console.error(`❌ Failed to bind port ${port}:`, err.message);
37
+ process.exit(1);
38
+ }
39
+ });
40
+ }
41
+
42
+ function wireRealtimeServices(io, isNodeMode) {
43
+ if (isNodeMode) return { cronService: null, backupCronService: null };
44
+
45
+ const socketHandler = require('../websockets/socketHandler.js');
46
+ const cronService = require('../services/cronService');
47
+ const backupCronService = require('../services/backupCronService');
48
+
49
+ socketHandler(io);
50
+ cronService.setSocketIO(io);
51
+ require('../routes/trigger.routes').setSocketIO(io);
52
+
53
+ return { cronService, backupCronService };
54
+ }
55
+
56
+ async function initCronServices(cronService, backupCronService) {
57
+ if (cronService) await cronService.init();
58
+ if (backupCronService) await backupCronService.init();
59
+ }
60
+
61
+ async function bootstrapMcpKey(isNodeMode) {
62
+ if (isNodeMode || process.env.PLUM_MCP_KEY) return;
63
+ try {
64
+ const settingsService = require('../services/settingsService');
65
+ const { mcpKey } = await settingsService.getMcpConfig();
66
+ if (mcpKey) process.env.PLUM_MCP_KEY = mcpKey;
67
+ } catch {}
68
+ }
69
+
70
+ function logServerReady(port, isNodeMode) {
71
+ console.log(`Backend running on port ${port}${isNodeMode ? ' (node/runner mode)' : ''}`);
72
+ }
73
+
74
+ // Dispatches to the node-runner startup path or the full-server startup path
75
+ // once the HTTP server is actually listening.
76
+ async function onServerListening({ port, io, testsDir, isNodeMode }) {
77
+ logServerReady(port, isNodeMode);
78
+ if (isNodeMode) {
79
+ handleNodeModeStartup(port);
80
+ return;
81
+ }
82
+ await handleFullModeStartup(io, testsDir);
83
+ }
84
+
85
+ function handleNodeModeStartup(port) {
86
+ // Self-register PID so manage-runners can track and stop this process.
87
+ const runnerId = process.env.RUNNER_ID;
88
+ if (!runnerId) return;
89
+
90
+ const registry = loadRegistry();
91
+ registry[runnerId] = { pid: process.pid, port: String(port), startedAt: Date.now() };
92
+ saveRegistry(registry);
93
+
94
+ const cleanup = () => {
95
+ try {
96
+ const reg = loadRegistry();
97
+ // A self-restart already wrote the replacement's pid under this
98
+ // id before this process exits — only touch the entry if it's
99
+ // still ours, so we don't clobber the new process's registration.
100
+ // Keep the entry (with its port) rather than deleting it — that's
101
+ // the only place a later manual Start can find the port this
102
+ // runner was last running on.
103
+ if (reg[runnerId]?.pid === process.pid) {
104
+ reg[runnerId] = { ...reg[runnerId], pid: null };
105
+ saveRegistry(reg);
106
+ }
107
+ } catch {}
108
+ };
109
+
110
+ // Adding a SIGTERM/SIGINT listener suppresses Node's default
111
+ // "terminate immediately" behavior — the handler must exit itself,
112
+ // or the process (and the port it's bound to) lives on forever
113
+ // after a plain `kill`/SIGTERM with nothing left to stop it short
114
+ // of SIGKILL.
115
+ process.once('SIGTERM', () => {
116
+ cleanup();
117
+ process.exit(0);
118
+ });
119
+ process.once('SIGINT', () => {
120
+ cleanup();
121
+ process.exit(0);
122
+ });
123
+ process.once('exit', cleanup);
124
+ }
125
+
126
+ async function handleFullModeStartup(io, testsDir) {
127
+ syncAutomatedFlags();
128
+
129
+ const chokidar = await loadChokidar();
130
+ if (!chokidar) return;
131
+
132
+ watchTestFiles(chokidar, testsDir);
133
+ watchReports(chokidar, io);
134
+ }
135
+
136
+ function syncAutomatedFlags() {
137
+ // Sync automated flags from feature files on every startup
138
+ require('../services/reportService')
139
+ .syncAutomatedFromFeatures()
140
+ .catch(() => {});
141
+ }
142
+
143
+ async function loadChokidar() {
144
+ // chokidar v5+ is ESM-only — use dynamic import to stay compatible with CJS
145
+ try {
146
+ return (await import('chokidar')).default;
147
+ } catch {
148
+ console.warn('⚠️ chokidar unavailable — file watching disabled');
149
+ return null;
150
+ }
151
+ }
152
+
153
+ function watchTestFiles(chokidar, testsDir) {
154
+ const featuresDir = path.join(testsDir, 'features');
155
+ if (!fs.existsSync(featuresDir)) return;
156
+
157
+ let debounce = null;
158
+ chokidar.watch(featuresDir, WATCH_OPTS).on('all', (event, filePath) => {
159
+ clearTimeout(debounce);
160
+ debounce = setTimeout(() => {
161
+ console.log(`📝 Tests changed (${event}: ${path.basename(filePath)})`);
162
+ syncAutomatedFlags();
163
+ }, 300);
164
+ });
165
+ console.log('👀 Watching for test file changes...');
166
+ }
167
+
168
+ function watchReports(chokidar, io) {
169
+ const reportsDir = path.resolve(process.cwd(), 'reports');
170
+ fs.mkdirSync(reportsDir, { recursive: true });
171
+
172
+ chokidar.watch(reportsDir, { ...WATCH_OPTS, interval: 1200 }).on('add', (filePath) => {
173
+ const name = path.basename(filePath);
174
+ if ((name.startsWith('PASS_') || name.startsWith('FAIL_')) && name.endsWith('.json')) {
175
+ console.log(`📊 New report: ${name} — notifying clients`);
176
+ io.emit(SOCKET_EVENTS.REPORT_READY);
177
+ }
178
+ });
179
+ console.log('👀 Watching for new reports...');
180
+ }
181
+
182
+ module.exports = {
183
+ ensureTestsDir,
184
+ attachListenRetry,
185
+ wireRealtimeServices,
186
+ initCronServices,
187
+ bootstrapMcpKey,
188
+ onServerListening
189
+ };
@@ -1,18 +1,6 @@
1
1
  /*
2
2
  * This file is part of Plum.
3
- *
4
- * Plum is free software: you can redistribute it and/or modify
5
- * it under the terms of the GNU General Public License as published by
6
- * the Free Software Foundation, either version 3 of the License, or
7
- * (at your option) any later version.
8
- *
9
- * Plum is distributed in the hope that it will be useful,
10
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
11
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
- * GNU General Public License for more details.
13
- *
14
- * You should have received a copy of the GNU General Public License
15
- * along with Plum. If not, see https://www.gnu.org/licenses/.
3
+ * Licensed under the MIT License. See LICENSE file in the project root for details.
16
4
  */
17
5
 
18
6
  /**
@@ -1,18 +1,6 @@
1
1
  /*
2
2
  * This file is part of Plum.
3
- *
4
- * Plum is free software: you can redistribute it and/or modify
5
- * it under the terms of the GNU General Public License as published by
6
- * the Free Software Foundation, either version 3 of the License, or
7
- * (at your option) any later version.
8
- *
9
- * Plum is distributed in the hope that it will be useful,
10
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
11
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
- * GNU General Public License for more details.
13
- *
14
- * You should have received a copy of the GNU General Public License
15
- * along with Plum. If not, see https://www.gnu.org/licenses/.
3
+ * Licensed under the MIT License. See LICENSE file in the project root for details.
16
4
  */
17
5
 
18
6
  const { getTestSuites } = require('../services/testService');
@@ -1,18 +1,6 @@
1
1
  /*
2
2
  * This file is part of Plum.
3
- *
4
- * Plum is free software: you can redistribute it and/or modify
5
- * it under the terms of the GNU General Public License as published by
6
- * the Free Software Foundation, either version 3 of the License, or
7
- * (at your option) any later version.
8
- *
9
- * Plum is distributed in the hope that it will be useful,
10
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
11
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
- * GNU General Public License for more details.
13
- *
14
- * You should have received a copy of the GNU General Public License
15
- * along with Plum. If not, see https://www.gnu.org/licenses/.
3
+ * Licensed under the MIT License. See LICENSE file in the project root for details.
16
4
  */
17
5
 
18
6
  const fs = require('fs');
@@ -14,6 +14,10 @@ GNU General Public License for more details.
14
14
  You should have received a copy of the GNU General Public License
15
15
  along with Plum. If not, see https://www.gnu.org/licenses/.
16
16
  */
17
+ /*
18
+ This file is part of Plum.
19
+ Licensed under the MIT License. See LICENSE file in the project root for details.
20
+ */
17
21
  📂 Loading tests from: /Users/silverlunah/Projects/plum/backend/tests
18
22
  Backend running on port 3002 (node/runner mode)
19
23
  📂 Loading tests from: /Users/silverlunah/Projects/plum/backend/tests
@@ -14,6 +14,10 @@ GNU General Public License for more details.
14
14
  You should have received a copy of the GNU General Public License
15
15
  along with Plum. If not, see https://www.gnu.org/licenses/.
16
16
  */
17
+ /*
18
+ This file is part of Plum.
19
+ Licensed under the MIT License. See LICENSE file in the project root for details.
20
+ */
17
21
  📂 Loading tests from: /Users/silverlunah/Projects/plum/backend/tests
18
22
  Backend running on port 3002 (node/runner mode)
19
23
  (node:23570) [DEP0190] DeprecationWarning: Passing args to a child process with shell option true can lead to security vulnerabilities, as the arguments are not escaped, only concatenated.
@@ -14,6 +14,10 @@ GNU General Public License for more details.
14
14
  You should have received a copy of the GNU General Public License
15
15
  along with Plum. If not, see https://www.gnu.org/licenses/.
16
16
  */
17
+ /*
18
+ This file is part of Plum.
19
+ Licensed under the MIT License. See LICENSE file in the project root for details.
20
+ */
17
21
  📂 Loading tests from: /Users/silverlunah/Projects/plum/backend/tests
18
22
  node:events:487
19
23
  throw er; // Unhandled 'error' event
@@ -14,6 +14,10 @@ GNU General Public License for more details.
14
14
  You should have received a copy of the GNU General Public License
15
15
  along with Plum. If not, see https://www.gnu.org/licenses/.
16
16
  */
17
+ /*
18
+ This file is part of Plum.
19
+ Licensed under the MIT License. See LICENSE file in the project root for details.
20
+ */
17
21
  📂 Loading tests from: /Users/silverlunah/Projects/plum/backend/tests
18
22
  Backend running on port 3003 (node/runner mode)
19
23
  (node:23686) [DEP0190] DeprecationWarning: Passing args to a child process with shell option true can lead to security vulnerabilities, as the arguments are not escaped, only concatenated.
@@ -14,6 +14,10 @@ GNU General Public License for more details.
14
14
  You should have received a copy of the GNU General Public License
15
15
  along with Plum. If not, see https://www.gnu.org/licenses/.
16
16
  */
17
+ /*
18
+ This file is part of Plum.
19
+ Licensed under the MIT License. See LICENSE file in the project root for details.
20
+ */
17
21
  📂 Loading tests from: /Users/silverlunah/Projects/plum/backend/tests
18
22
  Backend running on port 3004 (node/runner mode)
19
23
  (node:23733) [DEP0190] DeprecationWarning: Passing args to a child process with shell option true can lead to security vulnerabilities, as the arguments are not escaped, only concatenated.
@@ -14,6 +14,10 @@ GNU General Public License for more details.
14
14
  You should have received a copy of the GNU General Public License
15
15
  along with Plum. If not, see https://www.gnu.org/licenses/.
16
16
  */
17
+ /*
18
+ This file is part of Plum.
19
+ Licensed under the MIT License. See LICENSE file in the project root for details.
20
+ */
17
21
  📂 Loading tests from: /Users/silverlunah/Projects/plum/backend/tests
18
22
  Backend running on port 3005 (node/runner mode)
19
23
  (node:23776) [DEP0190] DeprecationWarning: Passing args to a child process with shell option true can lead to security vulnerabilities, as the arguments are not escaped, only concatenated.
@@ -14,6 +14,10 @@ GNU General Public License for more details.
14
14
  You should have received a copy of the GNU General Public License
15
15
  along with Plum. If not, see https://www.gnu.org/licenses/.
16
16
  */
17
+ /*
18
+ This file is part of Plum.
19
+ Licensed under the MIT License. See LICENSE file in the project root for details.
20
+ */
17
21
  📂 Loading tests from: /Users/silverlunah/Projects/plum/backend/tests
18
22
  Backend running on port 3002 (node/runner mode)
19
23
  (node:89713) [DEP0190] DeprecationWarning: Passing args to a child process with shell option true can lead to security vulnerabilities, as the arguments are not escaped, only concatenated.
@@ -14,6 +14,10 @@ GNU General Public License for more details.
14
14
  You should have received a copy of the GNU General Public License
15
15
  along with Plum. If not, see https://www.gnu.org/licenses/.
16
16
  */
17
+ /*
18
+ This file is part of Plum.
19
+ Licensed under the MIT License. See LICENSE file in the project root for details.
20
+ */
17
21
  📂 Loading tests from: /Users/silverlunah/Projects/plum/backend/tests
18
22
  node:events:487
19
23
  throw er; // Unhandled 'error' event
@@ -14,6 +14,10 @@ GNU General Public License for more details.
14
14
  You should have received a copy of the GNU General Public License
15
15
  along with Plum. If not, see https://www.gnu.org/licenses/.
16
16
  */
17
+ /*
18
+ This file is part of Plum.
19
+ Licensed under the MIT License. See LICENSE file in the project root for details.
20
+ */
17
21
  📂 Loading tests from: /Users/silverlunah/Projects/plum/backend/tests
18
22
  node:events:487
19
23
  throw er; // Unhandled 'error' event
@@ -14,6 +14,10 @@ GNU General Public License for more details.
14
14
  You should have received a copy of the GNU General Public License
15
15
  along with Plum. If not, see https://www.gnu.org/licenses/.
16
16
  */
17
+ /*
18
+ This file is part of Plum.
19
+ Licensed under the MIT License. See LICENSE file in the project root for details.
20
+ */
17
21
  📂 Loading tests from: /Users/silverlunah/Projects/plum/backend/tests
18
22
  node:events:487
19
23
  throw er; // Unhandled 'error' event
@@ -14,6 +14,10 @@ GNU General Public License for more details.
14
14
  You should have received a copy of the GNU General Public License
15
15
  along with Plum. If not, see https://www.gnu.org/licenses/.
16
16
  */
17
+ /*
18
+ This file is part of Plum.
19
+ Licensed under the MIT License. See LICENSE file in the project root for details.
20
+ */
17
21
  📂 Loading tests from: /Users/silverlunah/Projects/plum/backend/tests
18
22
  Backend running on port 5177 (node/runner mode)
19
23
  (node:98310) [DEP0190] DeprecationWarning: Passing args to a child process with shell option true can lead to security vulnerabilities, as the arguments are not escaped, only concatenated.
@@ -14,6 +14,10 @@ GNU General Public License for more details.
14
14
  You should have received a copy of the GNU General Public License
15
15
  along with Plum. If not, see https://www.gnu.org/licenses/.
16
16
  */
17
+ /*
18
+ This file is part of Plum.
19
+ Licensed under the MIT License. See LICENSE file in the project root for details.
20
+ */
17
21
  📂 Loading tests from: /Users/silverlunah/Projects/plum/backend/tests
18
22
  node:events:487
19
23
  throw er; // Unhandled 'error' event
@@ -14,6 +14,10 @@ GNU General Public License for more details.
14
14
  You should have received a copy of the GNU General Public License
15
15
  along with Plum. If not, see https://www.gnu.org/licenses/.
16
16
  */
17
+ /*
18
+ This file is part of Plum.
19
+ Licensed under the MIT License. See LICENSE file in the project root for details.
20
+ */
17
21
  📂 Loading tests from: /Users/silverlunah/Projects/plum/backend/tests
18
22
  Backend running on port 5178 (node/runner mode)
19
23
  (node:825) [DEP0190] DeprecationWarning: Passing args to a child process with shell option true can lead to security vulnerabilities, as the arguments are not escaped, only concatenated.
@@ -14,6 +14,10 @@ GNU General Public License for more details.
14
14
  You should have received a copy of the GNU General Public License
15
15
  along with Plum. If not, see https://www.gnu.org/licenses/.
16
16
  */
17
+ /*
18
+ This file is part of Plum.
19
+ Licensed under the MIT License. See LICENSE file in the project root for details.
20
+ */
17
21
  📂 Loading tests from: /Users/silverlunah/Projects/plum/backend/tests
18
22
  Backend running on port 5178 (node/runner mode)
19
23
  (node:2599) [DEP0190] DeprecationWarning: Passing args to a child process with shell option true can lead to security vulnerabilities, as the arguments are not escaped, only concatenated.
@@ -14,6 +14,10 @@ GNU General Public License for more details.
14
14
  You should have received a copy of the GNU General Public License
15
15
  along with Plum. If not, see https://www.gnu.org/licenses/.
16
16
  */
17
+ /*
18
+ This file is part of Plum.
19
+ Licensed under the MIT License. See LICENSE file in the project root for details.
20
+ */
17
21
  📂 Loading tests from: /Users/silverlunah/Projects/plum/backend/tests
18
22
  Backend running on port 5180 (node/runner mode)
19
23
  (node:3077) [DEP0190] DeprecationWarning: Passing args to a child process with shell option true can lead to security vulnerabilities, as the arguments are not escaped, only concatenated.
@@ -14,5 +14,9 @@ GNU General Public License for more details.
14
14
  You should have received a copy of the GNU General Public License
15
15
  along with Plum. If not, see https://www.gnu.org/licenses/.
16
16
  */
17
+ /*
18
+ This file is part of Plum.
19
+ Licensed under the MIT License. See LICENSE file in the project root for details.
20
+ */
17
21
  📂 Loading tests from: /Users/silverlunah/Projects/plum/backend/tests
18
22
  Backend running on port 3999 (node/runner mode)
@@ -14,5 +14,9 @@ GNU General Public License for more details.
14
14
  You should have received a copy of the GNU General Public License
15
15
  along with Plum. If not, see https://www.gnu.org/licenses/.
16
16
  */
17
+ /*
18
+ This file is part of Plum.
19
+ Licensed under the MIT License. See LICENSE file in the project root for details.
20
+ */
17
21
  📂 Loading tests from: /Users/silverlunah/Projects/plum/backend/tests
18
22
  Backend running on port 3996 (node/runner mode)
@@ -14,5 +14,9 @@ GNU General Public License for more details.
14
14
  You should have received a copy of the GNU General Public License
15
15
  along with Plum. If not, see https://www.gnu.org/licenses/.
16
16
  */
17
+ /*
18
+ This file is part of Plum.
19
+ Licensed under the MIT License. See LICENSE file in the project root for details.
20
+ */
17
21
  📂 Loading tests from: /Users/silverlunah/Projects/plum/backend/tests
18
22
  Backend running on port 3996 (node/runner mode)
@@ -1,18 +1,6 @@
1
1
  /*
2
2
  * This file is part of Plum.
3
- *
4
- * Plum is free software: you can redistribute it and/or modify
5
- * it under the terms of the GNU General Public License as published by
6
- * the Free Software Foundation, either version 3 of the License, or
7
- * (at your option) any later version.
8
- *
9
- * Plum is distributed in the hope that it will be useful,
10
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
11
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
- * GNU General Public License for more details.
13
- *
14
- * You should have received a copy of the GNU General Public License
15
- * along with Plum. If not, see https://www.gnu.org/licenses/.
3
+ * Licensed under the MIT License. See LICENSE file in the project root for details.
16
4
  */
17
5
 
18
6
  /**
@@ -40,6 +28,8 @@ const sdkCjs = path.resolve(
40
28
  const { McpServer } = require(path.join(sdkCjs, 'server', 'mcp.js'));
41
29
  const { StdioServerTransport } = require(path.join(sdkCjs, 'server', 'stdio.js'));
42
30
  const { z } = require('zod');
31
+ const { AUTH_SCHEME } = require('../lib/authHeader');
32
+ const { JOB_STATUS } = require('../constants/jobStatus');
43
33
 
44
34
  const API_URL = (process.env.PLUM_API_URL || 'http://localhost:3001').replace(/\/$/, '');
45
35
  const API_KEY = process.env.PLUM_API_KEY || '';
@@ -53,7 +43,7 @@ async function api(method, path, body) {
53
43
  method,
54
44
  headers: {
55
45
  'Content-Type': 'application/json',
56
- Authorization: `ApiKey ${API_KEY}`
46
+ Authorization: `${AUTH_SCHEME.API_KEY} ${API_KEY}`
57
47
  },
58
48
  body: body !== undefined ? JSON.stringify(body) : undefined
59
49
  });
@@ -78,7 +68,7 @@ async function pollJob(jobId, { maxMs = 600_000, intervalMs = 5_000 } = {}) {
78
68
  while (Date.now() < deadline) {
79
69
  await new Promise((r) => setTimeout(r, intervalMs));
80
70
  const job = await get(`/trigger/${jobId}`);
81
- if (job.status !== 'running') return job;
71
+ if (job.status !== JOB_STATUS.RUNNING) return job;
82
72
  }
83
73
  return { status: 'timeout', jobId };
84
74
  }
@@ -1,20 +1,10 @@
1
1
  /*
2
2
  * This file is part of Plum.
3
- *
4
- * Plum is free software: you can redistribute it and/or modify
5
- * it under the terms of the GNU General Public License as published by
6
- * the Free Software Foundation, either version 3 of the License, or
7
- * (at your option) any later version.
8
- *
9
- * Plum is distributed in the hope that it will be useful,
10
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
11
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
- * GNU General Public License for more details.
13
- *
14
- * You should have received a copy of the GNU General Public License
15
- * along with Plum. If not, see https://www.gnu.org/licenses/.
3
+ * Licensed under the MIT License. See LICENSE file in the project root for details.
16
4
  */
17
5
 
6
+ const { AUTH_SCHEME } = require('../lib/authHeader');
7
+
18
8
  /**
19
9
  * Bearer-token auth guard for node-mode API routes.
20
10
  * Passes through when NODE_TOKEN is not configured (open/dev environments).
@@ -23,7 +13,7 @@ function authGuard(req, res, next) {
23
13
  const nodeToken = process.env.NODE_TOKEN;
24
14
  if (!nodeToken) return next();
25
15
  const auth = req.headers.authorization;
26
- if (!auth || auth !== `Bearer ${nodeToken}`) {
16
+ if (!auth || auth !== `${AUTH_SCHEME.BEARER} ${nodeToken}`) {
27
17
  return res.status(401).json({ error: 'Unauthorized' });
28
18
  }
29
19
  next();
@@ -1,29 +1,18 @@
1
1
  /*
2
2
  * This file is part of Plum.
3
- *
4
- * Plum is free software: you can redistribute it and/or modify
5
- * it under the terms of the GNU General Public License as published by
6
- * the Free Software Foundation, either version 3 of the License, or
7
- * (at your option) any later version.
8
- *
9
- * Plum is distributed in the hope that it will be useful,
10
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
11
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
- * GNU General Public License for more details.
13
- *
14
- * You should have received a copy of the GNU General Public License
15
- * along with Plum. If not, see https://www.gnu.org/licenses/.
3
+ * Licensed under the MIT License. See LICENSE file in the project root for details.
16
4
  */
17
5
 
18
6
  const { verifyToken } = require('../services/userService');
19
7
  const prisma = require('../services/prisma');
8
+ const { AUTH_SCHEME } = require('../lib/authHeader');
20
9
 
21
10
  function jwtAuth(req, res, next) {
22
11
  const auth = req.headers.authorization;
23
12
 
24
13
  // MCP API key — resolves to the first admin user so createdById is always valid
25
14
  const mcpKey = process.env.PLUM_MCP_KEY;
26
- if (mcpKey && auth === `ApiKey ${mcpKey}`) {
15
+ if (mcpKey && auth === `${AUTH_SCHEME.API_KEY} ${mcpKey}`) {
27
16
  prisma.user
28
17
  .findFirst({ where: { role: 'admin' }, select: { id: true } })
29
18
  .then((admin) => {
@@ -37,12 +26,12 @@ function jwtAuth(req, res, next) {
37
26
  return;
38
27
  }
39
28
 
40
- if (!auth || !auth.startsWith('Bearer ')) {
29
+ if (!auth || !auth.startsWith(`${AUTH_SCHEME.BEARER} `)) {
41
30
  return res.status(401).json({ error: 'Unauthorized' });
42
31
  }
43
32
  let payload;
44
33
  try {
45
- payload = verifyToken(auth.slice(7));
34
+ payload = verifyToken(auth.slice(AUTH_SCHEME.BEARER.length + 1));
46
35
  } catch {
47
36
  return res.status(401).json({ error: 'Invalid or expired token' });
48
37
  }
@@ -1,18 +1,6 @@
1
1
  /*
2
2
  * This file is part of Plum.
3
- *
4
- * Plum is free software: you can redistribute it and/or modify
5
- * it under the terms of the GNU General Public License as published by
6
- * the Free Software Foundation, either version 3 of the License, or
7
- * (at your option) any later version.
8
- *
9
- * Plum is distributed in the hope that it will be useful,
10
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
11
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
- * GNU General Public License for more details.
13
- *
14
- * You should have received a copy of the GNU General Public License
15
- * along with Plum. If not, see https://www.gnu.org/licenses/.
3
+ * Licensed under the MIT License. See LICENSE file in the project root for details.
16
4
  */
17
5
 
18
6
  function requireAdmin(req, res, next) {
@@ -8,12 +8,12 @@
8
8
  "create-env": "node services/envService.js",
9
9
  "test": "node config/scripts/run-tests.js",
10
10
  "manage-runners": "node scripts/manage-runners.mjs",
11
- "create-test": "node scripts/create-test.js",
11
+ "create-test": "node config/scripts/create-test.mjs",
12
12
  "mcp": "node mcp/server.js"
13
13
  },
14
14
  "keywords": [],
15
- "author": "",
16
- "license": "ISC",
15
+ "author": "silverlunah",
16
+ "license": "MIT",
17
17
  "devDependencies": {
18
18
  "@playwright/test": "^1.50.1",
19
19
  "@types/node": "^22.17.0",
@@ -1,18 +1,6 @@
1
1
  /*
2
2
  * This file is part of Plum.
3
- *
4
- * Plum is free software: you can redistribute it and/or modify
5
- * it under the terms of the GNU General Public License as published by
6
- * the Free Software Foundation, either version 3 of the License, or
7
- * (at your option) any later version.
8
- *
9
- * Plum is distributed in the hope that it will be useful,
10
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
11
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
- * GNU General Public License for more details.
13
- *
14
- * You should have received a copy of the GNU General Public License
15
- * along with Plum. If not, see https://www.gnu.org/licenses/.
3
+ * Licensed under the MIT License. See LICENSE file in the project root for details.
16
4
  */
17
5
 
18
6
  // @ts-check