@piwitests/server 0.15.0 → 0.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (457) hide show
  1. package/.output/nitro.json +1 -1
  2. package/.output/public/_nuxt/{DzbOHjZH.js → -KQO1A4C.js} +1 -1
  3. package/.output/public/_nuxt/{BEKwVcvQ.js → 1AB111xL.js} +1 -1
  4. package/.output/public/_nuxt/{CokbKVE6.js → 2xvsvjLO.js} +1 -1
  5. package/.output/public/_nuxt/{CNzoIhwN.js → ABGJk0pu.js} +1 -1
  6. package/.output/public/_nuxt/{Cgr8IKY4.js → B2lYFco4.js} +1 -1
  7. package/.output/public/_nuxt/B33X4zrC.js +1 -0
  8. package/.output/public/_nuxt/{V1BQiRoh.js → B3NbDoBP.js} +1 -1
  9. package/.output/public/_nuxt/{ChWPXucC.js → B3sNtVnf.js} +1 -1
  10. package/.output/public/_nuxt/{too3WhRB.js → B43OGXzV.js} +1 -1
  11. package/.output/public/_nuxt/{Cf3RuiXF.js → B6Jp7fpa.js} +4 -4
  12. package/.output/public/_nuxt/{B32ySRXg.js → B7yG1G_l.js} +1 -1
  13. package/.output/public/_nuxt/{BgR7oL4p.js → BBdfPriC.js} +1 -1
  14. package/.output/public/_nuxt/{DNP5tTJo.js → BGYbnqA7.js} +1 -1
  15. package/.output/public/_nuxt/{DAeYEeCC.js → BIf1R_fu.js} +1 -1
  16. package/.output/public/_nuxt/{nUsJV5qo.js → BIksQZfR.js} +1 -1
  17. package/.output/public/_nuxt/{B8fs6GU9.js → BPKwYP2Q.js} +31 -31
  18. package/.output/public/_nuxt/{DjCfCT_5.js → BP_SWi7S.js} +1 -1
  19. package/.output/public/_nuxt/{CrFCPOnY.js → BQrSEuzu.js} +1 -1
  20. package/.output/public/_nuxt/{BpepjHwc.js → BR9H8k-L.js} +1 -1
  21. package/.output/public/_nuxt/{Dejf0f7D.js → BRKa6EQR.js} +3 -3
  22. package/.output/public/_nuxt/{BMQIO38j.js → BS0gKVuF.js} +1 -1
  23. package/.output/public/_nuxt/{BW1UOxWn.js → BV83yObd.js} +1 -1
  24. package/.output/public/_nuxt/{o5WQ5Z7k.js → BVW5qIDP.js} +1 -1
  25. package/.output/public/_nuxt/{rvaZFYoE.js → BY4oA2IH.js} +1 -1
  26. package/.output/public/_nuxt/{DZoSxwj6.js → BZekCf_x.js} +1 -1
  27. package/.output/public/_nuxt/{lRMjXqiA.js → Bb64FEFL.js} +1 -1
  28. package/.output/public/_nuxt/{2PU-adwy.js → BdFEUAlx.js} +1 -1
  29. package/.output/public/_nuxt/{CBrCcDzR.js → Bf62wdzp.js} +1 -1
  30. package/.output/public/_nuxt/{DYDGGqZ3.js → BkDfdHFm.js} +1 -1
  31. package/.output/public/_nuxt/{CqA3gM8h.js → BoRFLTAO.js} +1 -1
  32. package/.output/public/_nuxt/{DxXZN6ed.js → BpIsBP5g.js} +1 -1
  33. package/.output/public/_nuxt/{DkFbpSsi.js → BpNqHxg2.js} +1 -1
  34. package/.output/public/_nuxt/{DFw8I2FL.js → BpceIssd.js} +1 -1
  35. package/.output/public/_nuxt/{n7Htv9PJ.js → Br2K9yi_.js} +1 -1
  36. package/.output/public/_nuxt/{D4nLD93c.js → BuZOa2M3.js} +1 -1
  37. package/.output/public/_nuxt/{B32-7cBF.js → Bvfmwzgw.js} +1 -1
  38. package/.output/public/_nuxt/{h-e-Ca3f.js → Bzl2H_vl.js} +1 -1
  39. package/.output/public/_nuxt/{IdQR_Djw.js → C1K3r_fc.js} +1 -1
  40. package/.output/public/_nuxt/C219JuBV.js +1 -0
  41. package/.output/public/_nuxt/{B_80i5Ge.js → C38aZbFJ.js} +1 -1
  42. package/.output/public/_nuxt/{DHVmXA9K.js → C3r_Sv1p.js} +1 -1
  43. package/.output/public/_nuxt/{O1A-LRgV.js → C8RBRg7I.js} +1 -1
  44. package/.output/public/_nuxt/{60-Zii7v.js → CCRRqXez.js} +1 -1
  45. package/.output/public/_nuxt/{__m3KqHO.js → CJFqA_QW.js} +1 -1
  46. package/.output/public/_nuxt/{Surk4Lw-.js → CKB_doYB.js} +1 -1
  47. package/.output/public/_nuxt/{DaKVSp-6.js → CMYQpoOI.js} +1 -1
  48. package/.output/public/_nuxt/CQeMb57w.js +1 -0
  49. package/.output/public/_nuxt/{Bq2ZPvIH.js → CSYJwpXG.js} +1 -1
  50. package/.output/public/_nuxt/{ETOCcsVw.js → CTdvGdc2.js} +1 -1
  51. package/.output/public/_nuxt/CX1dcT4v.js +1 -0
  52. package/.output/public/_nuxt/{evCxpgbd.js → CdME81ij.js} +2 -2
  53. package/.output/public/_nuxt/{DKTDub7I.js → CgoAUz76.js} +1 -1
  54. package/.output/public/_nuxt/{0KrkW531.js → CoHGrO41.js} +1 -1
  55. package/.output/public/_nuxt/{BGsuOpiq.js → CpO-ABDW.js} +1 -1
  56. package/.output/public/_nuxt/CuYYdFBL.js +1 -0
  57. package/.output/public/_nuxt/{CHMpVLqo.js → D2jhe9JK.js} +1 -1
  58. package/.output/public/_nuxt/{C7RarFGi.js → D33On6AX.js} +1 -1
  59. package/.output/public/_nuxt/{Dv2B_nw_.js → D4VpoHDP.js} +1 -1
  60. package/.output/public/_nuxt/{CKZn0TUX.js → DAWn6Z7h.js} +1 -1
  61. package/.output/public/_nuxt/{rWwWS3Kj.js → DCpmQ47_.js} +1 -1
  62. package/.output/public/_nuxt/{B59-l1Cv.js → DIkLLyR6.js} +1 -1
  63. package/.output/public/_nuxt/{CFn3w5jn.js → DJS3Bf50.js} +1 -1
  64. package/.output/public/_nuxt/{F07TcX0U.js → DL20rwkA.js} +1 -1
  65. package/.output/public/_nuxt/DOuoR2Pk.js +34 -0
  66. package/.output/public/_nuxt/{BC_Wu-fv.js → DRtTLQri.js} +1 -1
  67. package/.output/public/_nuxt/{DiUGa0CT.js → DbeHHTk-.js} +1 -1
  68. package/.output/public/_nuxt/DcCNnjKl.js +1 -0
  69. package/.output/public/_nuxt/{PPFO8UVt.js → DdbrJwT-.js} +1 -1
  70. package/.output/public/_nuxt/{Cfk2_UCm.js → DfcAIbcX.js} +1 -1
  71. package/.output/public/_nuxt/{OG2n3p77.js → DgYM3eyi.js} +1 -1
  72. package/.output/public/_nuxt/{BBJ9Pu3M.js → DhA17dqR.js} +1 -1
  73. package/.output/public/_nuxt/{DvdOsTLb.js → DjZKuUMz.js} +1 -1
  74. package/.output/public/_nuxt/{DCCMLWel.js → DqnyWaSQ.js} +1 -1
  75. package/.output/public/_nuxt/Dsk4Ic18.js +7 -0
  76. package/.output/public/_nuxt/{BCK4f6Y3.js → DszOHBMG.js} +1 -1
  77. package/.output/public/_nuxt/{Cpquifvd.js → DuBBqqbF.js} +1 -1
  78. package/.output/public/_nuxt/{DWzdeQ3Z.js → DuMv-ugy.js} +1 -1
  79. package/.output/public/_nuxt/{BfshMo9k.js → Dz55UR7w.js} +2 -2
  80. package/.output/public/_nuxt/{BkhdAGx0.js → Dzz9_Z0u.js} +1 -1
  81. package/.output/public/_nuxt/{DgZlpN9l.js → HoKG9cc2.js} +1 -1
  82. package/.output/public/_nuxt/{C9jjVEQU.js → IFqRT_xJ.js} +1 -1
  83. package/.output/public/_nuxt/{i38YGG9S.js → JCFZINev.js} +1 -1
  84. package/.output/public/_nuxt/{B9Q_4Mjt.js → Kc7La4sL.js} +1 -1
  85. package/.output/public/_nuxt/N3pCB6-m.js +4 -0
  86. package/.output/public/_nuxt/{CFXonrwQ.js → WctJXszi.js} +1 -1
  87. package/.output/public/_nuxt/{CHgsEM4U.js → bAfTAihV.js} +1 -1
  88. package/.output/public/_nuxt/builds/latest.json +1 -1
  89. package/.output/public/_nuxt/builds/meta/5182c9fb-56a6-4df2-9685-4020a08ce7a5.json +1 -0
  90. package/.output/public/_nuxt/{4fB15L_7.js → d5ZB3uxF.js} +1 -1
  91. package/.output/public/_nuxt/{CIOQo6gB.js → e1zUTrBb.js} +1 -1
  92. package/.output/public/_nuxt/entry.BsmKRJzR.css +1 -0
  93. package/.output/public/_nuxt/{BtJkQ3to.js → iwD5atI2.js} +1 -1
  94. package/.output/public/_nuxt/jIF87ALb.js +1 -0
  95. package/.output/public/_nuxt/{CvCF77E-.js → k-z_VVTK.js} +2 -2
  96. package/.output/public/_nuxt/{CHSkT2s0.js → l0gdGdar.js} +1 -1
  97. package/.output/public/_nuxt/{DVdOm5Bg.js → mGJLLqyN.js} +1 -1
  98. package/.output/public/_nuxt/{CU-OXXdh.js → mfzslNx_.js} +1 -1
  99. package/.output/public/_nuxt/{CD-xwM9N.js → nCjfWTGm.js} +1 -1
  100. package/.output/public/_nuxt/{DQpa8F03.js → oNq5pd3r.js} +1 -1
  101. package/.output/public/_nuxt/qzAP_nm7.js +1 -0
  102. package/.output/public/_nuxt/{3SnTawZW.js → r3SBLxtE.js} +1 -1
  103. package/.output/public/_nuxt/{DI_-kFec.js → uKeO2H7F.js} +1 -1
  104. package/.output/public/_nuxt/{DZLrAp2i.js → xUrLy-Zn.js} +1 -1
  105. package/.output/public/_nuxt/{BY0AkhJh.js → ze9-Ill2.js} +1 -1
  106. package/.output/public/demo/seed.version.json +2 -2
  107. package/.output/public/sw.js +1 -1
  108. package/.output/server/chunks/_/markers.mjs +1 -1
  109. package/.output/server/chunks/_/users.mjs +1 -1
  110. package/.output/server/chunks/build/{BrowserBadge-BTA4QU_J.mjs → BrowserBadge-DNCp9pF-.mjs} +3 -3
  111. package/.output/server/chunks/build/BrowserBadge-DNCp9pF-.mjs.map +1 -0
  112. package/.output/server/chunks/build/{ChartCard-BqAhMip2.mjs → ChartCard-Fr557IbV.mjs} +2 -2
  113. package/.output/server/chunks/build/ChartCard-Fr557IbV.mjs.map +1 -0
  114. package/.output/server/chunks/build/{Checkbox-_1nGm_DR.mjs → Checkbox-7ZiMz60w.mjs} +5 -5
  115. package/.output/server/chunks/build/Checkbox-7ZiMz60w.mjs.map +1 -0
  116. package/.output/server/chunks/build/{CiEnvCard-DAufYuJw.mjs → CiEnvCard-DNxBVvx4.mjs} +5 -5
  117. package/.output/server/chunks/build/CiEnvCard-DNxBVvx4.mjs.map +1 -0
  118. package/.output/server/chunks/build/{CodeBlock-BVKHuYjU.mjs → CodeBlock-BGwNmJ8J.mjs} +2 -2
  119. package/.output/server/chunks/build/CodeBlock-BGwNmJ8J.mjs.map +1 -0
  120. package/.output/server/chunks/build/{DashboardNavbar-BR6j4VLd.mjs → DashboardNavbar-Bdp-OwTN.mjs} +2 -2
  121. package/.output/server/chunks/build/DashboardNavbar-Bdp-OwTN.mjs.map +1 -0
  122. package/.output/server/chunks/build/DashboardSidebarToggle-Ji6ADuqF.mjs +1 -1
  123. package/.output/server/chunks/build/{DiagnosisPanel-BnrdXDvd.mjs → DiagnosisPanel-DV1xwGu4.mjs} +6 -6
  124. package/.output/server/chunks/build/DiagnosisPanel-DV1xwGu4.mjs.map +1 -0
  125. package/.output/server/chunks/build/EntityLinks-DeOP13Kr.mjs +1 -1
  126. package/.output/server/chunks/build/{EnvManagedBadge-DdnEtjIl.mjs → EnvManagedBadge-Qpn58Nmr.mjs} +5 -5
  127. package/.output/server/chunks/build/EnvManagedBadge-Qpn58Nmr.mjs.map +1 -0
  128. package/.output/server/chunks/build/{HelpHint-D_GJzMpW.mjs → HelpHint-YEMWtKu1.mjs} +18 -2
  129. package/.output/server/chunks/build/HelpHint-YEMWtKu1.mjs.map +1 -0
  130. package/.output/server/chunks/build/{Modal-COIjm3js.mjs → Modal-CfA78Hm1.mjs} +2 -2
  131. package/.output/server/chunks/build/Modal-CfA78Hm1.mjs.map +1 -0
  132. package/.output/server/chunks/build/{OpenInIdeLink-D97W6On1.mjs → OpenInIdeLink-B92wosXu.mjs} +3 -3
  133. package/.output/server/chunks/build/{OpenInIdeLink-D97W6On1.mjs.map → OpenInIdeLink-B92wosXu.mjs.map} +1 -1
  134. package/.output/server/chunks/build/{PageStateCard-C1HFN4Nv.mjs → PageStateCard-Bwee6JTk.mjs} +10 -10
  135. package/.output/server/chunks/build/{PageStateCard-C1HFN4Nv.mjs.map → PageStateCard-Bwee6JTk.mjs.map} +1 -1
  136. package/.output/server/chunks/build/{ProjectTestCasesTable-XFBPQGIX.mjs → ProjectTestCasesTable-9418EI8J.mjs} +9 -9
  137. package/.output/server/chunks/build/ProjectTestCasesTable-9418EI8J.mjs.map +1 -0
  138. package/.output/server/chunks/build/{RunReports-ChNkmuWa.mjs → RunReports-BpJqLHY9.mjs} +2 -2
  139. package/.output/server/chunks/build/RunReports-BpJqLHY9.mjs.map +1 -0
  140. package/.output/server/chunks/build/{RunStatusBadge-CXpuCUGQ.mjs → RunStatusBadge-BhmJ_RKM.mjs} +2 -2
  141. package/.output/server/chunks/build/RunStatusBadge-BhmJ_RKM.mjs.map +1 -0
  142. package/.output/server/chunks/build/{SectionCard-zs9FDzps.mjs → SectionCard-COd9TuDq.mjs} +2 -2
  143. package/.output/server/chunks/build/SectionCard-COd9TuDq.mjs.map +1 -0
  144. package/.output/server/chunks/build/{Select-r3S5nkSY.mjs → Select-COwTIQlV.mjs} +3 -3
  145. package/.output/server/chunks/build/Select-COwTIQlV.mjs.map +1 -0
  146. package/.output/server/chunks/build/{SelectMenu-Dk6f8i9o.mjs → SelectMenu-BkyAHFCM.mjs} +4 -4
  147. package/.output/server/chunks/build/{SelectMenu-Dk6f8i9o.mjs.map → SelectMenu-BkyAHFCM.mjs.map} +1 -1
  148. package/.output/server/chunks/build/{Separator-pqpPG0up.mjs → Separator-CxZdx8kw.mjs} +2 -2
  149. package/.output/server/chunks/build/Separator-CxZdx8kw.mjs.map +1 -0
  150. package/.output/server/chunks/build/{SettingsField-Wdpzlt13.mjs → SettingsField-DDD4oqys.mjs} +5 -5
  151. package/.output/server/chunks/build/SettingsField-DDD4oqys.mjs.map +1 -0
  152. package/.output/server/chunks/build/{Slideover-02XjJjn0.mjs → Slideover-B95Rj237.mjs} +3 -3
  153. package/.output/server/chunks/build/Slideover-B95Rj237.mjs.map +1 -0
  154. package/.output/server/chunks/build/{Switch-gx_JXgCo.mjs → Switch-htSKgC38.mjs} +2 -2
  155. package/.output/server/chunks/build/Switch-htSKgC38.mjs.map +1 -0
  156. package/.output/server/chunks/build/{Table-C64RrBp3.mjs → Table-CPhhVzDv.mjs} +3 -3
  157. package/.output/server/chunks/build/Table-CPhhVzDv.mjs.map +1 -0
  158. package/.output/server/chunks/build/{TestStatusBar--u4VX_Xf.mjs → TestStatusBar-CEzt76wk.mjs} +2 -2
  159. package/.output/server/chunks/build/TestStatusBar-CEzt76wk.mjs.map +1 -0
  160. package/.output/server/chunks/build/{Tooltip-ui_BVvqr.mjs → Tooltip-7vwuDPrZ.mjs} +3 -3
  161. package/.output/server/chunks/build/Tooltip-7vwuDPrZ.mjs.map +1 -0
  162. package/.output/server/chunks/build/{VisuallyHiddenInput-mMsqmkjz.mjs → VisuallyHiddenInput-C9eJVpPW.mjs} +2 -2
  163. package/.output/server/chunks/build/VisuallyHiddenInput-C9eJVpPW.mjs.map +1 -0
  164. package/.output/server/chunks/build/{_id_-CFVnSs8B.mjs → _id_-BDqvTM9D.mjs} +19 -18
  165. package/.output/server/chunks/build/{_id_-CFVnSs8B.mjs.map → _id_-BDqvTM9D.mjs.map} +1 -1
  166. package/.output/server/chunks/build/{_id_-pkxJKe17.mjs → _id_-CE0Gso6i.mjs} +11 -11
  167. package/.output/server/chunks/build/_id_-CE0Gso6i.mjs.map +1 -0
  168. package/.output/server/chunks/build/{_id_-R6KGfZOC.mjs → _id_-CnwAyvvS.mjs} +257 -84
  169. package/.output/server/chunks/build/_id_-CnwAyvvS.mjs.map +1 -0
  170. package/.output/server/chunks/build/{_id_-DXJQABO8.mjs → _id_-Dy67M9Dj.mjs} +25 -25
  171. package/.output/server/chunks/build/{_id_-DXJQABO8.mjs.map → _id_-Dy67M9Dj.mjs.map} +1 -1
  172. package/.output/server/chunks/build/{about-CmtGYbC6.mjs → about-FB9PYAHK.mjs} +5 -5
  173. package/.output/server/chunks/build/about-FB9PYAHK.mjs.map +1 -0
  174. package/.output/server/chunks/build/{account-AbLuwiZP.mjs → account-Cn-eZqXM.mjs} +4 -4
  175. package/.output/server/chunks/build/account-Cn-eZqXM.mjs.map +1 -0
  176. package/.output/server/chunks/build/{ai-DR_slopS.mjs → ai-V3YOh3yx.mjs} +17 -17
  177. package/.output/server/chunks/build/ai-V3YOh3yx.mjs.map +1 -0
  178. package/.output/server/chunks/build/{analytics-BbT2-Tr-.mjs → analytics-BBlAEmj5.mjs} +235 -64
  179. package/.output/server/chunks/build/analytics-BBlAEmj5.mjs.map +1 -0
  180. package/.output/server/chunks/build/client.precomputed.mjs +1 -1
  181. package/.output/server/chunks/build/{db.client-DlA_u5y9.mjs → db.client-aHcD0wyX.mjs} +47 -22
  182. package/.output/server/chunks/build/db.client-aHcD0wyX.mjs.map +1 -0
  183. package/.output/server/chunks/build/{default-D6diRCW0.mjs → default-BfMirIgG.mjs} +17 -16
  184. package/.output/server/chunks/build/default-BfMirIgG.mjs.map +1 -0
  185. package/.output/server/chunks/build/{docs-DbYoZafk.mjs → docs-DtNcJCyb.mjs} +5 -5
  186. package/.output/server/chunks/build/{docs-DbYoZafk.mjs.map → docs-DtNcJCyb.mjs.map} +1 -1
  187. package/.output/server/chunks/build/{edit-CNV4xdYj.mjs → edit-Dsf11mL5.mjs} +8 -8
  188. package/.output/server/chunks/build/edit-Dsf11mL5.mjs.map +1 -0
  189. package/.output/server/chunks/build/fetch-8kznMtBM.mjs +1 -1
  190. package/.output/server/chunks/build/{help-content-BMumoQQF.mjs → help-content-DmFnuhNu.mjs} +6 -1
  191. package/.output/server/chunks/build/help-content-DmFnuhNu.mjs.map +1 -0
  192. package/.output/server/chunks/build/{index-Dw526KXV.mjs → index-BR9hw6qk.mjs} +10 -10
  193. package/.output/server/chunks/build/index-BR9hw6qk.mjs.map +1 -0
  194. package/.output/server/chunks/build/{index-dwYB76GO.mjs → index-Ba-Fifra.mjs} +4 -4
  195. package/.output/server/chunks/build/index-Ba-Fifra.mjs.map +1 -0
  196. package/.output/server/chunks/build/{index-rSHkKNna.mjs → index-BgpEKTSq.mjs} +505 -84
  197. package/.output/server/chunks/build/index-BgpEKTSq.mjs.map +1 -0
  198. package/.output/server/chunks/build/{index-DmHBPf7T.mjs → index-CULN3-en.mjs} +11 -2
  199. package/.output/server/chunks/build/index-CULN3-en.mjs.map +1 -0
  200. package/.output/server/chunks/build/{index-C3Ou18qD.mjs → index-DzEgjHlB.mjs} +14 -14
  201. package/.output/server/chunks/build/{index-C3Ou18qD.mjs.map → index-DzEgjHlB.mjs.map} +1 -1
  202. package/.output/server/chunks/build/{isValueEqualOrExist-DTJ5ejZs.mjs → isValueEqualOrExist-DBZjbD_3.mjs} +3 -3
  203. package/.output/server/chunks/build/isValueEqualOrExist-DBZjbD_3.mjs.map +1 -0
  204. package/.output/server/chunks/build/{login-Da5C8jP2.mjs → login-D2XZDuek.mjs} +3 -3
  205. package/.output/server/chunks/build/login-D2XZDuek.mjs.map +1 -0
  206. package/.output/server/chunks/build/{mcp-DM1t-9L_.mjs → mcp-CXwa3xU3.mjs} +8 -8
  207. package/.output/server/chunks/build/mcp-CXwa3xU3.mjs.map +1 -0
  208. package/.output/server/chunks/build/{notifications-BTPF0xA7.mjs → notifications-hJj8tbAT.mjs} +11 -11
  209. package/.output/server/chunks/build/notifications-hJj8tbAT.mjs.map +1 -0
  210. package/.output/server/chunks/build/server.mjs +37 -28
  211. package/.output/server/chunks/build/{settings-Bmw_JdBS.mjs → settings-Ci_7EXYQ.mjs} +8 -7
  212. package/.output/server/chunks/build/settings-Ci_7EXYQ.mjs.map +1 -0
  213. package/.output/server/chunks/build/{settings-metadata-CksLgMun.mjs → settings-metadata-Cp0dx0vm.mjs} +12 -3
  214. package/.output/server/chunks/build/settings-metadata-Cp0dx0vm.mjs.map +1 -0
  215. package/.output/server/chunks/build/{storage-BqR4acgi.mjs → storage-CM-Pd-9E.mjs} +191 -14
  216. package/.output/server/chunks/build/storage-CM-Pd-9E.mjs.map +1 -0
  217. package/.output/server/chunks/build/{tags-miPAzIr3.mjs → tags-DrCQ7QSw.mjs} +6 -6
  218. package/.output/server/chunks/build/tags-DrCQ7QSw.mjs.map +1 -0
  219. package/.output/server/chunks/build/{test-cases-D-LqhLpk.mjs → test-cases-DkGQB027.mjs} +14 -14
  220. package/.output/server/chunks/build/test-cases-DkGQB027.mjs.map +1 -0
  221. package/.output/server/chunks/build/timeout-hygiene-CNs71Iah.mjs +318 -0
  222. package/.output/server/chunks/build/timeout-hygiene-CNs71Iah.mjs.map +1 -0
  223. package/.output/server/chunks/build/{useAiStatus-FwqbA4gz.mjs → useAiStatus-ZO987RY7.mjs} +8 -7
  224. package/.output/server/chunks/build/useAiStatus-ZO987RY7.mjs.map +1 -0
  225. package/.output/server/chunks/build/{useSettingsNav-v_dFuTw9.mjs → useSettingsNav-D2knPCqF.mjs} +6 -6
  226. package/.output/server/chunks/build/useSettingsNav-D2knPCqF.mjs.map +1 -0
  227. package/.output/server/chunks/build/{users-D-GDKZmZ.mjs → users-NmAUZs3i.mjs} +6 -6
  228. package/.output/server/chunks/build/users-NmAUZs3i.mjs.map +1 -0
  229. package/.output/server/chunks/build/{virtualizer-BcC1XuFf.mjs → virtualizer-0-UBy7xl.mjs} +4 -4
  230. package/.output/server/chunks/build/virtualizer-0-UBy7xl.mjs.map +1 -0
  231. package/.output/server/chunks/build/{wasted-time-CFmeT_e2.mjs → wasted-time-L4kBV5Nh.mjs} +8 -8
  232. package/.output/server/chunks/build/wasted-time-L4kBV5Nh.mjs.map +1 -0
  233. package/.output/server/chunks/nitro/nitro.mjs +949 -684
  234. package/.output/server/chunks/nitro/nitro.mjs.map +1 -1
  235. package/.output/server/chunks/routes/__piwi/session.get.mjs +51 -0
  236. package/.output/server/chunks/routes/__piwi/session.get.mjs.map +1 -0
  237. package/.output/server/chunks/routes/api/admin/stats.get.mjs +5 -1
  238. package/.output/server/chunks/routes/api/admin/stats.get.mjs.map +1 -1
  239. package/.output/server/chunks/routes/api/analytics/_widget_.get.mjs +75 -6
  240. package/.output/server/chunks/routes/api/analytics/_widget_.get.mjs.map +1 -1
  241. package/.output/server/chunks/routes/api/auth/change-password.post.mjs +1 -1
  242. package/.output/server/chunks/routes/api/auth/forgot-password.post.mjs +1 -1
  243. package/.output/server/chunks/routes/api/auth/login.post.mjs +1 -1
  244. package/.output/server/chunks/routes/api/auth/logout.post.mjs +1 -1
  245. package/.output/server/chunks/routes/api/auth/me.get.mjs +1 -1
  246. package/.output/server/chunks/routes/api/auth/oauth/_provider/callback.get.mjs +1 -1
  247. package/.output/server/chunks/routes/api/auth/oauth/_provider/login.get.mjs +1 -1
  248. package/.output/server/chunks/routes/api/auth/oauth/_provider/unlink.post.mjs +1 -1
  249. package/.output/server/chunks/routes/api/auth/reset-password.post.mjs +1 -1
  250. package/.output/server/chunks/routes/api/auth/send-verify-email.post.mjs +1 -1
  251. package/.output/server/chunks/routes/api/auth/setup.get.mjs +1 -1
  252. package/.output/server/chunks/routes/api/auth/setup.post.mjs +1 -1
  253. package/.output/server/chunks/routes/api/auth/verify-email.get.mjs +1 -1
  254. package/.output/server/chunks/routes/api/channels/_id/test.post.mjs +1 -1
  255. package/.output/server/chunks/routes/api/channels/_id_.delete.mjs +1 -1
  256. package/.output/server/chunks/routes/api/cluster-merge-suggestions/_id/approve.post.mjs +1 -1
  257. package/.output/server/chunks/routes/api/cluster-merge-suggestions/_id/reject.post.mjs +1 -1
  258. package/.output/server/chunks/routes/api/desktop/reporter-config.get.mjs +45 -0
  259. package/.output/server/chunks/routes/api/desktop/reporter-config.get.mjs.map +1 -0
  260. package/.output/server/chunks/routes/api/failure-clusters/_id/base-commit.patch.mjs +1 -1
  261. package/.output/server/chunks/routes/api/failure-clusters/_id/branches.get.mjs +1 -1
  262. package/.output/server/chunks/routes/api/failure-clusters/_id/commit-diff.get.mjs +1 -1
  263. package/.output/server/chunks/routes/api/failure-clusters/_id/commits.get.mjs +1 -1
  264. package/.output/server/chunks/routes/api/failure-clusters/_id/context.get.mjs +1 -1
  265. package/.output/server/chunks/routes/api/failure-clusters/_id/diagnose/stream.post.mjs +1 -1
  266. package/.output/server/chunks/routes/api/failure-clusters/_id/diagnose.post.mjs +1 -1
  267. package/.output/server/chunks/routes/api/failure-clusters/_id/diagnoses.get.mjs +1 -1
  268. package/.output/server/chunks/routes/api/failure-clusters/_id/diagnosis.get.mjs +1 -1
  269. package/.output/server/chunks/routes/api/failure-clusters/_id/extract-cases.post.mjs +1 -1
  270. package/.output/server/chunks/routes/api/failure-clusters/_id/status.patch.mjs +1 -1
  271. package/.output/server/chunks/routes/api/failure-clusters/_id_.get.mjs +1 -1
  272. package/.output/server/chunks/routes/api/failure-diagnoses/_id/feedback.patch.mjs +1 -1
  273. package/.output/server/chunks/routes/api/files/_...path_.get.mjs +1 -1
  274. package/.output/server/chunks/routes/api/health.get.mjs +1 -1
  275. package/.output/server/chunks/routes/api/index.get.mjs +1 -1
  276. package/.output/server/chunks/routes/api/index.get2.mjs +1 -1
  277. package/.output/server/chunks/routes/api/index.get3.mjs +1 -1
  278. package/.output/server/chunks/routes/api/index.get4.mjs +1 -1
  279. package/.output/server/chunks/routes/api/index.get5.mjs +1 -1
  280. package/.output/server/chunks/routes/api/index.post.mjs +1 -1
  281. package/.output/server/chunks/routes/api/index.post2.mjs +1 -1
  282. package/.output/server/chunks/routes/api/index.post3.mjs +1 -1
  283. package/.output/server/chunks/routes/api/index.post4.mjs +1 -1
  284. package/.output/server/chunks/routes/api/index.post5.mjs +1 -1
  285. package/.output/server/chunks/routes/api/index.post6.mjs +1 -1
  286. package/.output/server/chunks/routes/api/links/_id/refresh.post.mjs +1 -1
  287. package/.output/server/chunks/routes/api/links/_id_.delete.mjs +1 -1
  288. package/.output/server/chunks/routes/api/links/_id_.patch.mjs +1 -1
  289. package/.output/server/chunks/routes/api/markers/_id_.delete.mjs +1 -1
  290. package/.output/server/chunks/routes/api/markers/_id_.put.mjs +1 -1
  291. package/.output/server/chunks/routes/api/notifications/stream.get.mjs +1 -1
  292. package/.output/server/chunks/routes/api/projects/_id/cluster-merge-suggestions.get.mjs +1 -1
  293. package/.output/server/chunks/routes/api/projects/_id/failure-clusters.get.mjs +1 -1
  294. package/.output/server/chunks/routes/api/projects/_id/flaky-classify.post.mjs +1 -1
  295. package/.output/server/chunks/routes/api/projects/_id/flaky-tests.get.mjs +1 -1
  296. package/.output/server/chunks/routes/api/projects/_id/latest-run.get.mjs +1 -1
  297. package/.output/server/chunks/routes/api/projects/_id/markers.get.mjs +1 -1
  298. package/.output/server/chunks/routes/api/projects/_id/markers.post.mjs +1 -1
  299. package/.output/server/chunks/routes/api/projects/_id/members.get.mjs +1 -1
  300. package/.output/server/chunks/routes/api/projects/_id/members.put.mjs +1 -1
  301. package/.output/server/chunks/routes/api/projects/_id/performance.get.mjs +1 -1
  302. package/.output/server/chunks/routes/api/projects/_id/slow-tests.get.mjs +1 -1
  303. package/.output/server/chunks/routes/api/projects/_id/spec-health.get.mjs +1 -1
  304. package/.output/server/chunks/routes/api/projects/_id/test-cases.get.mjs +1 -1
  305. package/.output/server/chunks/routes/api/projects/_id/timeout-opportunities.get.mjs +50 -0
  306. package/.output/server/chunks/routes/api/projects/_id/timeout-opportunities.get.mjs.map +1 -0
  307. package/.output/server/chunks/routes/api/projects/_id_.delete.mjs +1 -1
  308. package/.output/server/chunks/routes/api/projects/_id_.get.mjs +1 -1
  309. package/.output/server/chunks/routes/api/projects/_id_.put.mjs +1 -1
  310. package/.output/server/chunks/routes/api/projects/menu.get.mjs +1 -1
  311. package/.output/server/chunks/routes/api/projects/overview.get.mjs +1 -1
  312. package/.output/server/chunks/routes/api/projects.get.mjs +1 -1
  313. package/.output/server/chunks/routes/api/search.get.mjs +1 -1
  314. package/.output/server/chunks/routes/api/settings/ai/limits.get.mjs +1 -1
  315. package/.output/server/chunks/routes/api/settings/ai/limits.put.mjs +1 -1
  316. package/.output/server/chunks/routes/api/settings/ai/test.post.mjs +1 -1
  317. package/.output/server/chunks/routes/api/settings/ai/usage.get.mjs +1 -1
  318. package/.output/server/chunks/routes/api/settings/ai.get.mjs +1 -1
  319. package/.output/server/chunks/routes/api/settings/ai.put.mjs +1 -1
  320. package/.output/server/chunks/routes/api/settings/smtp/test.post.mjs +1 -1
  321. package/.output/server/chunks/routes/api/settings/smtp.get.mjs +1 -1
  322. package/.output/server/chunks/routes/api/settings/timeout-hygiene.get.mjs +40 -0
  323. package/.output/server/chunks/routes/api/settings/timeout-hygiene.get.mjs.map +1 -0
  324. package/.output/server/chunks/routes/api/settings/timeout-hygiene.put.mjs +46 -0
  325. package/.output/server/chunks/routes/api/settings/timeout-hygiene.put.mjs.map +1 -0
  326. package/.output/server/chunks/routes/api/settings/wasted-waits.get.mjs +1 -1
  327. package/.output/server/chunks/routes/api/settings/wasted-waits.put.mjs +1 -1
  328. package/.output/server/chunks/routes/api/stream.get.mjs +1 -1
  329. package/.output/server/chunks/routes/api/subscriptions/_id_.delete.mjs +1 -1
  330. package/.output/server/chunks/routes/api/subscriptions/_id_.patch.mjs +1 -1
  331. package/.output/server/chunks/routes/api/tags/_id_.delete.mjs +1 -1
  332. package/.output/server/chunks/routes/api/tags/_id_.put.mjs +1 -1
  333. package/.output/server/chunks/routes/api/test-cases/_id/history.get.mjs +1 -1
  334. package/.output/server/chunks/routes/api/test-cases/_id/stability-trend.get.mjs +1 -1
  335. package/.output/server/chunks/routes/api/test-cases/_id_.get.mjs +1 -1
  336. package/.output/server/chunks/routes/api/test-run-cases/_id/diagnose.post.mjs +1 -1
  337. package/.output/server/chunks/routes/api/test-run-cases/_id/diagnosis-context.get.mjs +1 -1
  338. package/.output/server/chunks/routes/api/test-run-cases/_id/diagnosis.get.mjs +1 -1
  339. package/.output/server/chunks/routes/api/test-run-cases/_id/traces.get.mjs +1 -1
  340. package/.output/server/chunks/routes/api/test-run-cases/_id_.get.mjs +1 -1
  341. package/.output/server/chunks/routes/api/test-runs/_id/begin.post.mjs +1 -1
  342. package/.output/server/chunks/routes/api/test-runs/_id/case-files.post.mjs +1 -1
  343. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/dom-snapshot.get.mjs +1 -1
  344. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/environment-diff.get.mjs +1 -1
  345. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/locator-healing.get.mjs +1 -1
  346. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/locator-pick.post.mjs +1 -1
  347. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/trace-network-body.get.mjs +1 -1
  348. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/trace-network.get.mjs +1 -1
  349. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/trace-stacks.get.mjs +1 -1
  350. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/visual-diff.get.mjs +1 -1
  351. package/.output/server/chunks/routes/api/test-runs/_id/events.post.mjs +1 -1
  352. package/.output/server/chunks/routes/api/test-runs/_id/failure-groups.get.mjs +1 -1
  353. package/.output/server/chunks/routes/api/test-runs/_id/finish.post.mjs +1 -1
  354. package/.output/server/chunks/routes/api/test-runs/_id/heartbeat.post.mjs +1 -1
  355. package/.output/server/chunks/routes/api/test-runs/_id/insights.get.mjs +1 -1
  356. package/.output/server/chunks/routes/api/test-runs/_id/network-requests.get.mjs +1 -1
  357. package/.output/server/chunks/routes/api/test-runs/_id/regression-context.get.mjs +1 -1
  358. package/.output/server/chunks/routes/api/test-runs/_id/stream.get.mjs +1 -1
  359. package/.output/server/chunks/routes/api/test-runs/_id/summary.get.mjs +1 -1
  360. package/.output/server/chunks/routes/api/test-runs/_id_.delete.mjs +1 -1
  361. package/.output/server/chunks/routes/api/test-runs/_id_.get.mjs +1 -1
  362. package/.output/server/chunks/routes/api/test-runs/_id_.patch.mjs +1 -1
  363. package/.output/server/chunks/routes/api/test-runs/recent.get.mjs +1 -1
  364. package/.output/server/chunks/routes/api/test-runs/setup.post.mjs +1 -1
  365. package/.output/server/chunks/routes/api/test-runs/start.post.mjs +1 -1
  366. package/.output/server/chunks/routes/api/test-runs/submit.post.mjs +3 -1
  367. package/.output/server/chunks/routes/api/test-runs/submit.post.mjs.map +1 -1
  368. package/.output/server/chunks/routes/api/test-runs/upload.post.mjs +2 -1
  369. package/.output/server/chunks/routes/api/test-runs/upload.post.mjs.map +1 -1
  370. package/.output/server/chunks/routes/api/traces/check.post.mjs +1 -1
  371. package/.output/server/chunks/routes/api/users/_id/api-keys/_keyId_.delete.mjs +1 -1
  372. package/.output/server/chunks/routes/api/users/_id/index.get.mjs +1 -1
  373. package/.output/server/chunks/routes/api/users/_id/index.post.mjs +1 -1
  374. package/.output/server/chunks/routes/api/users/_id/invite.post.mjs +1 -1
  375. package/.output/server/chunks/routes/api/users/_id/projects.get.mjs +1 -1
  376. package/.output/server/chunks/routes/api/users/_id/projects.put.mjs +1 -1
  377. package/.output/server/chunks/routes/api/users/_id_.delete.mjs +1 -1
  378. package/.output/server/chunks/routes/api/users/_id_.patch.mjs +1 -1
  379. package/.output/server/chunks/routes/api/version.get.mjs +1 -1
  380. package/.output/server/chunks/routes/mcp.post.mjs +1 -1
  381. package/.output/server/chunks/routes/renderer.mjs +1 -1
  382. package/.output/server/database/migrations/0037_tired_hellion.sql +1 -0
  383. package/.output/server/database/migrations/0038_glamorous_ulik.sql +1 -0
  384. package/.output/server/database/migrations/meta/0037_snapshot.json +3384 -0
  385. package/.output/server/database/migrations/meta/0038_snapshot.json +3391 -0
  386. package/.output/server/database/migrations/meta/_journal.json +14 -0
  387. package/.output/server/database/migrations-pg/0038_tranquil_moira_mactaggert.sql +1 -0
  388. package/.output/server/database/migrations-pg/0039_fat_starjammers.sql +1 -0
  389. package/.output/server/database/migrations-pg/meta/0038_snapshot.json +4027 -0
  390. package/.output/server/database/migrations-pg/meta/0039_snapshot.json +4033 -0
  391. package/.output/server/database/migrations-pg/meta/_journal.json +14 -0
  392. package/.output/server/index.mjs +1 -1
  393. package/.output/server/package.json +1 -1
  394. package/package.json +1 -1
  395. package/.output/public/_nuxt/2kfkdDTz.js +0 -1
  396. package/.output/public/_nuxt/BXEDsEwG.js +0 -1
  397. package/.output/public/_nuxt/BbgBGuMG.js +0 -1
  398. package/.output/public/_nuxt/CJGJI2Of.js +0 -34
  399. package/.output/public/_nuxt/Ce4EdfL_.js +0 -4
  400. package/.output/public/_nuxt/CkpB9oBr.js +0 -1
  401. package/.output/public/_nuxt/D1tZEdSi.js +0 -1
  402. package/.output/public/_nuxt/DK9uMTYX.js +0 -1
  403. package/.output/public/_nuxt/YDWXnWou.js +0 -1
  404. package/.output/public/_nuxt/builds/meta/f549de31-8db6-4504-b526-482778a55eba.json +0 -1
  405. package/.output/public/_nuxt/entry.BxXHl1Vy.css +0 -1
  406. package/.output/public/_nuxt/wCQds5_f.js +0 -1
  407. package/.output/server/chunks/build/BrowserBadge-BTA4QU_J.mjs.map +0 -1
  408. package/.output/server/chunks/build/ChartCard-BqAhMip2.mjs.map +0 -1
  409. package/.output/server/chunks/build/Checkbox-_1nGm_DR.mjs.map +0 -1
  410. package/.output/server/chunks/build/CiEnvCard-DAufYuJw.mjs.map +0 -1
  411. package/.output/server/chunks/build/CodeBlock-BVKHuYjU.mjs.map +0 -1
  412. package/.output/server/chunks/build/DashboardNavbar-BR6j4VLd.mjs.map +0 -1
  413. package/.output/server/chunks/build/DiagnosisPanel-BnrdXDvd.mjs.map +0 -1
  414. package/.output/server/chunks/build/EnvManagedBadge-DdnEtjIl.mjs.map +0 -1
  415. package/.output/server/chunks/build/HelpHint-D_GJzMpW.mjs.map +0 -1
  416. package/.output/server/chunks/build/Modal-COIjm3js.mjs.map +0 -1
  417. package/.output/server/chunks/build/ProjectTestCasesTable-XFBPQGIX.mjs.map +0 -1
  418. package/.output/server/chunks/build/RunReports-ChNkmuWa.mjs.map +0 -1
  419. package/.output/server/chunks/build/RunStatusBadge-CXpuCUGQ.mjs.map +0 -1
  420. package/.output/server/chunks/build/SectionCard-zs9FDzps.mjs.map +0 -1
  421. package/.output/server/chunks/build/Select-r3S5nkSY.mjs.map +0 -1
  422. package/.output/server/chunks/build/Separator-pqpPG0up.mjs.map +0 -1
  423. package/.output/server/chunks/build/SettingsField-Wdpzlt13.mjs.map +0 -1
  424. package/.output/server/chunks/build/Slideover-02XjJjn0.mjs.map +0 -1
  425. package/.output/server/chunks/build/Switch-gx_JXgCo.mjs.map +0 -1
  426. package/.output/server/chunks/build/Table-C64RrBp3.mjs.map +0 -1
  427. package/.output/server/chunks/build/TestStatusBar--u4VX_Xf.mjs.map +0 -1
  428. package/.output/server/chunks/build/Tooltip-ui_BVvqr.mjs.map +0 -1
  429. package/.output/server/chunks/build/VisuallyHiddenInput-mMsqmkjz.mjs.map +0 -1
  430. package/.output/server/chunks/build/_id_-R6KGfZOC.mjs.map +0 -1
  431. package/.output/server/chunks/build/_id_-pkxJKe17.mjs.map +0 -1
  432. package/.output/server/chunks/build/about-CmtGYbC6.mjs.map +0 -1
  433. package/.output/server/chunks/build/account-AbLuwiZP.mjs.map +0 -1
  434. package/.output/server/chunks/build/ai-DR_slopS.mjs.map +0 -1
  435. package/.output/server/chunks/build/analytics-BbT2-Tr-.mjs.map +0 -1
  436. package/.output/server/chunks/build/db.client-DlA_u5y9.mjs.map +0 -1
  437. package/.output/server/chunks/build/default-D6diRCW0.mjs.map +0 -1
  438. package/.output/server/chunks/build/edit-CNV4xdYj.mjs.map +0 -1
  439. package/.output/server/chunks/build/help-content-BMumoQQF.mjs.map +0 -1
  440. package/.output/server/chunks/build/index-DmHBPf7T.mjs.map +0 -1
  441. package/.output/server/chunks/build/index-Dw526KXV.mjs.map +0 -1
  442. package/.output/server/chunks/build/index-dwYB76GO.mjs.map +0 -1
  443. package/.output/server/chunks/build/index-rSHkKNna.mjs.map +0 -1
  444. package/.output/server/chunks/build/isValueEqualOrExist-DTJ5ejZs.mjs.map +0 -1
  445. package/.output/server/chunks/build/login-Da5C8jP2.mjs.map +0 -1
  446. package/.output/server/chunks/build/mcp-DM1t-9L_.mjs.map +0 -1
  447. package/.output/server/chunks/build/notifications-BTPF0xA7.mjs.map +0 -1
  448. package/.output/server/chunks/build/settings-Bmw_JdBS.mjs.map +0 -1
  449. package/.output/server/chunks/build/settings-metadata-CksLgMun.mjs.map +0 -1
  450. package/.output/server/chunks/build/storage-BqR4acgi.mjs.map +0 -1
  451. package/.output/server/chunks/build/tags-miPAzIr3.mjs.map +0 -1
  452. package/.output/server/chunks/build/test-cases-D-LqhLpk.mjs.map +0 -1
  453. package/.output/server/chunks/build/useAiStatus-FwqbA4gz.mjs.map +0 -1
  454. package/.output/server/chunks/build/useSettingsNav-v_dFuTw9.mjs.map +0 -1
  455. package/.output/server/chunks/build/users-D-GDKZmZ.mjs.map +0 -1
  456. package/.output/server/chunks/build/virtualizer-BcC1XuFf.mjs.map +0 -1
  457. package/.output/server/chunks/build/wasted-time-CFmeT_e2.mjs.map +0 -1
@@ -1 +0,0 @@
1
- import{_ as Ss}from"./B32-7cBF.js";import{_ as Ds}from"./BY0AkhJh.js";import{b as je,K as kt,d as ge,L as Bt,w as $e,B as pe,k as e,o as n,f as k,g as s,j as l,_ as Te,c as i,i as o,m as p,t as c,q as S,F as Y,y as ie,v as Ne,x as at,l as G,M as It,N as Et,p as re,h as E,r as T,E as ws,O as Pt,n as $t,s as Le,P as Ct,D as Nt,I as js,u as Rs,a as As,e as Us,H as Vt,Q as zs,R as Fs}from"./B8fs6GU9.js";import{_ as Ms}from"./OG2n3p77.js";import{_ as Ke,a as Is}from"./wCQds5_f.js";import{_ as Re}from"./IdQR_Djw.js";import{_ as Lt}from"./PPFO8UVt.js";import{u as Es}from"./Bq2ZPvIH.js";import{u as Ce}from"./DAeYEeCC.js";import{_ as Vs}from"./nUsJV5qo.js";import{_ as Bs,a as Ps}from"./C9jjVEQU.js";import{_ as Kt}from"./o5WQ5Z7k.js";import{_ as Ot}from"./ETOCcsVw.js";import{_ as Ae}from"./DZLrAp2i.js";import{C as xt,w as qt,O as st,a as Ht,_ as Xt,u as Gt}from"./BW1UOxWn.js";import{N as Ns}from"./CU-OXXdh.js";import{_ as Ls}from"./CokbKVE6.js";import{_ as Ks}from"./C7RarFGi.js";import{_ as Os}from"./CHMpVLqo.js";import{_ as qs}from"./DFw8I2FL.js";import{_ as Hs}from"./CkpB9oBr.js";import{_ as Xs}from"./BkhdAGx0.js";import{_ as Gs}from"./CqA3gM8h.js";import{_ as Oe}from"./D4nLD93c.js";import{_ as ot}from"./B32ySRXg.js";import{_ as Qt}from"./BBJ9Pu3M.js";import{_ as Tt}from"./BgR7oL4p.js";import{f as St,a as Qs,c as Ys,g as V,e as Yt,p as nt,h as ke,i as Ze}from"./CvCF77E-.js";import{_ as Jt}from"./2PU-adwy.js";import{_ as Wt}from"./DKTDub7I.js";import{_ as Js}from"./DHVmXA9K.js";import{_ as Ws}from"./Cfk2_UCm.js";import{_ as Zs}from"./DNP5tTJo.js";import{_ as en}from"./DQpa8F03.js";import{_ as tn}from"./CNzoIhwN.js";import{_ as Dt}from"./CD-xwM9N.js";import{M as sn,D as ht,g as bt}from"./D7W_4Sqc.js";import{_ as nn}from"./BCK4f6Y3.js";import{u as an}from"./DI_-kFec.js";import{u as on}from"./O1A-LRgV.js";import"./BtJkQ3to.js";import"./3SnTawZW.js";import"./DWzdeQ3Z.js";import"./D1tZEdSi.js";import"./BC_Wu-fv.js";import"./YDWXnWou.js";import"./DVdOm5Bg.js";import"./4fB15L_7.js";import"./lRMjXqiA.js";import"./BGsuOpiq.js";import"./DiUGa0CT.js";import"./Surk4Lw-.js";import"./n7Htv9PJ.js";import"./CFn3w5jn.js";import"./CKZn0TUX.js";import"./B_80i5Ge.js";const ln=["run.finished","run.failed","run.failed.default_branch","cluster.new","flakiness.spike","perf.regression","diagnosis.completed"],et=new Map,tt=new Map;function rn(z,w){const b=[{event:"run.failed",scenario:{title:`Test run failed — ${z}`,description:"3 of 12 tests failed on main — checkout › applies discount code +2 more",icon:"i-lucide-circle-x",color:"error"}},{event:"run.failed.default_branch",scenario:{title:`Test run failed on main — ${z}`,description:"2 of 12 tests failed · main — auth › logs in with valid credentials +1 more",icon:"i-lucide-circle-x",color:"error"}},{event:"cluster.new",scenario:{title:`New failure cluster — ${z}`,description:"TimeoutError: locator.click: Timeout 30000ms exceeded",icon:"i-lucide-layers",color:"warning"}},{event:"flakiness.spike",scenario:{title:`Flakiness spike — ${z}`,description:"3 tests became flaky (8.3% rate)",icon:"i-lucide-shuffle",color:"warning"}},{event:"perf.regression",scenario:{title:`Performance regression — ${z}`,description:"p90 duration increased by 42% vs last week",icon:"i-lucide-trending-down",color:"warning"}},{event:"run.finished",scenario:{title:`Test run recovered — ${z}`,description:"All 12 tests passed on main",icon:"i-lucide-circle-check",color:"success"}},{event:"diagnosis.completed",scenario:{title:`Diagnosis complete — ${z}`,description:"Root cause: test bug — confidence: high",icon:"i-lucide-sparkles",color:"info"}}],j=b.filter(h=>w.length===0||w.includes(h.event)).map(h=>h.scenario);return j.length===0?[b[0].scenario,b[b.length-1].scenario]:j}function cn(){if(!kt().public.demoMode)return null;const w=je();function b(h,g,u){j(h);const B=rn(g,u);tt.set(h,0);function R(){const F=(tt.get(h)??0)%B.length;tt.set(h,F+1);const D=B[F];w.add({title:D.title,description:D.description,icon:D.icon,color:D.color,duration:7e3});const v=25e3+Math.random()*1e4;et.set(h,setTimeout(R,v))}et.set(h,setTimeout(R,8e3))}function j(h){const g=et.get(h);g!==void 0&&(clearTimeout(g),et.delete(h)),tt.delete(h)}return{scheduleFor:b,cancelFor:j}}const un={key:0,class:"p-3 space-y-3"},dn={key:0,class:"text-xs text-gray-500"},mn={key:1,class:"text-xs text-gray-500"},pn={key:2,class:"text-xs text-gray-500"},gn={class:"space-y-1"},fn=["checked","onChange"],vn={key:1,class:"p-3 space-y-3"},yn={class:"flex items-center justify-between"},_n={class:"font-medium text-sm inline-flex items-center gap-1"},hn={key:0,class:"text-xs text-muted bg-primary/5 rounded px-2 py-1.5"},bn={key:1,class:"text-xs text-muted text-center py-2"},xn={key:2,class:"space-y-1.5"},kn={key:0,class:"space-y-2 rounded border border-primary/30 bg-primary/5 px-2 py-2"},$n={class:"space-y-1"},Cn=["value"],Tn={class:"flex gap-1.5 justify-end"},Sn={class:"flex-1 font-medium truncate"},Dn={key:3,class:"text-xs text-muted text-center py-1"},wn={key:4,class:"space-y-2 border-t border-default pt-2"},jn={class:"space-y-1"},Rn=["value"],An={class:"flex gap-1.5 justify-end"},Un=ge({__name:"SubscribeBell",props:{projectId:{},projectLabel:{}},async setup(z){let w,b;const j=z,h=kt(),g=h.public.demoMode,u=E(()=>h.public.authEnabled),{authState:B}=Bt(),R=E(()=>B.value.authenticated),F=je(),D=T(!1),v=g?cn():null,y=!u.value&&!g?Es():null,A=T("default"),_=E(()=>"Notification"in window);"Notification"in window&&(A.value=Notification.permission);const f=E(()=>y?.getProject(j.projectId).events??[]),M=E(()=>y?.isSubscribed(j.projectId)??!1);async function L(){!_.value||A.value!=="default"||(A.value=await Notification.requestPermission())}function x(I){return f.value.includes(I)}function $(I){y?.toggleEvent(j.projectId,I)}const d=g||u.value&&R.value,q=g?{server:!1}:{},{data:Z,refresh:O}=([w,b]=$e(()=>Ce(`/api/subscriptions?projectId=${j.projectId}`,{immediate:d,...q},"$5zp4moJ-7_")),w=await w,b(),w),P=E(()=>Z.value?.subscriptions??[]),_e=E(()=>P.value.length>0),{data:he}=([w,b]=$e(()=>Ce("/api/channels",{immediate:d,...q},"$vFApQ6eA2X")),w=await w,b(),w),m=E(()=>he.value?.channels??[]),K=T(!1),oe=T(void 0),ue=T(["run.failed"]),be=T(!1),fe=T(null),ce=T(void 0),ve=T([]),J=T(!1);function lt(I){fe.value=I,ce.value=I.channel.id,ve.value=[...I.events]}function rt(){fe.value=null}async function Ue(){if(!(!fe.value||!ce.value||ve.value.length===0)){J.value=!0;try{await $fetch(`/api/subscriptions/${fe.value.id}`,{method:"PATCH",body:{channelId:ce.value,events:ve.value}}),await O(),fe.value=null}catch(I){F.add({title:"Update failed",description:String(I?.message??I),color:"error"})}finally{J.value=!1}}}const qe=E(()=>m.value.map(I=>({label:I.type==="personal_email"?`${I.name} (${I.config.address})`:I.name,value:I.id}))),W=ln.map(I=>({label:I.replace(/\./g," › "),value:I}));pe(D,I=>{I?(d&&O(),m.value.length>0&&!oe.value&&(oe.value=m.value[0].id)):(K.value=!1,fe.value=null)});async function ye(){if(!(!oe.value||ue.value.length===0)){be.value=!0;try{await $fetch("/api/subscriptions",{method:"POST",body:{channelId:oe.value,projectId:j.projectId,events:ue.value,mode:"realtime"}}),await O(),K.value=!1,F.add({title:"Subscribed",color:"success"}),g&&v?.scheduleFor(j.projectId,j.projectLabel||"this project",ue.value)}catch(I){F.add({title:"Subscribe failed",description:String(I?.message??I),color:"error"})}finally{be.value=!1}}}async function ze(I){try{await $fetch(`/api/subscriptions/${I}`,{method:"DELETE"}),await O(),F.add({title:"Unsubscribed",color:"success"}),g&&P.value.length===0&&v?.cancelFor(j.projectId)}catch(C){F.add({title:"Failed",description:String(C?.message??C),color:"error"})}}async function it(I){const C=I.mutedUntil&&new Date(I.mutedUntil)>new Date;try{await $fetch(`/api/subscriptions/${I.id}`,{method:"PATCH",body:{mutedUntil:C?null:new Date(Date.now()+10080*60*1e3).toISOString()}}),await O()}catch(ee){F.add({title:"Failed",description:String(ee?.message??ee),color:"error"})}}function Fe(I){return I.mutedUntil&&new Date(I.mutedUntil)>new Date}function Me(I){return I==="personal_email"?"i-lucide-user-round":I==="email"?"i-lucide-mail":I==="slack"?"i-lucide-slack":"i-lucide-webhook"}const ct=E(()=>g||u.value&&R.value||y!=null),Ie=E(()=>g||u.value?_e.value:M.value);return(I,C)=>{const ee=Te,He=Ms,Ee=Ke,Ve=Ne,ut=at,Xe=Re,Se=Lt,Be=ws;return e(ct)?(n(),k(Be,{key:0,open:e(D),"onUpdate:open":C[6]||(C[6]=N=>G(D)?D.value=N:null),ui:{content:"w-72"}},{content:s(()=>[e(y)?(n(),i("div",un,[C[9]||(C[9]=o("div",{class:"flex items-center justify-between"},[o("span",{class:"font-medium text-sm"},"Browser notifications")],-1)),e(_)&&e(A)==="default"?(n(),i("p",dn,[l(ee,{variant:"link",size:"xs",class:"p-0",onClick:L},{default:s(()=>[...C[7]||(C[7]=[p(" Allow notifications ",-1)])]),_:1}),C[8]||(C[8]=p(" "+c(" ")+"in your browser to get alerts for this project. ",-1))])):e(_)&&e(A)==="denied"?(n(),i("p",mn," Notifications are blocked. Check your browser settings to allow them. ")):e(_)?S("",!0):(n(),i("p",pn,"Notifications are not supported in this browser.")),e(_)&&e(A)==="granted"?(n(),i(Y,{key:3},[l(He),o("div",gn,[(n(!0),i(Y,null,ie(e(W),N=>(n(),i("label",{key:N.value,class:"flex items-center gap-1.5 text-xs cursor-pointer"},[o("input",{type:"checkbox",checked:x(N.value),class:"accent-primary size-3",onChange:X=>$(N.value)},null,40,fn),p(" "+c(N.label),1)]))),128))])],64)):S("",!0)])):(n(),i("div",vn,[o("div",yn,[o("span",_n,[C[10]||(C[10]=p(" Notifications ",-1)),l(Ee,{topic:"notifications.subscribe"})]),e(K)?S("",!0):(n(),k(ee,{key:0,size:"xs",icon:"i-lucide-plus",variant:"ghost",color:"neutral",disabled:e(m).length===0,onClick:C[0]||(C[0]=N=>K.value=!0)},{default:s(()=>[...C[11]||(C[11]=[p(" Add ",-1)])]),_:1},8,["disabled"]))]),e(g)?(n(),i("div",hn,[l(Ve,{name:"i-lucide-sparkles",class:"size-3 inline-block mr-1 text-primary"}),C[12]||(C[12]=p(" Demo — notifications will appear as toasts in ~8 s. ",-1))])):e(m).length===0?(n(),i("div",bn,[C[14]||(C[14]=p(" No channels configured.",-1)),C[15]||(C[15]=o("br",null,null,-1)),l(ut,{to:"/settings/notifications",class:"text-primary underline"},{default:s(()=>[...C[13]||(C[13]=[p("Add one in Settings",-1)])]),_:1})])):S("",!0),e(P).length>0?(n(),i("div",xn,[(n(!0),i(Y,null,ie(e(P),N=>(n(),i(Y,{key:N.id},[e(fe)?.id===N.id?(n(),i("div",kn,[l(Se,{label:"Channel",size:"xs"},{default:s(()=>[l(Xe,{modelValue:e(ce),"onUpdate:modelValue":C[1]||(C[1]=X=>G(ce)?ce.value=X:null),items:e(qe),"value-key":"value",class:"w-full text-xs",size:"xs"},null,8,["modelValue","items"])]),_:1}),l(Se,{label:"Events",size:"xs"},{default:s(()=>[o("div",$n,[(n(!0),i(Y,null,ie(e(W),X=>(n(),i("label",{key:X.value,class:"flex items-center gap-1.5 text-xs cursor-pointer"},[It(o("input",{type:"checkbox",value:X.value,"onUpdate:modelValue":C[2]||(C[2]=dt=>G(ve)?ve.value=dt:null),class:"accent-primary size-3"},null,8,Cn),[[Et,e(ve)]]),p(" "+c(X.label),1)]))),128))])]),_:1}),o("div",Tn,[l(ee,{size:"xs",color:"neutral",variant:"ghost",onClick:rt},{default:s(()=>[...C[16]||(C[16]=[p("Cancel",-1)])]),_:1}),l(ee,{size:"xs",color:"primary",loading:e(J),disabled:!e(ce)||e(ve).length===0,onClick:Ue},{default:s(()=>[...C[17]||(C[17]=[p(" Save ",-1)])]),_:1},8,["loading","disabled"])])])):(n(),i("div",{key:1,class:re(["flex items-center gap-2 rounded px-2 py-1.5 text-xs",Fe(N)?"opacity-60":""])},[l(Ve,{name:Me(N.channel.type),class:"size-3.5 text-muted shrink-0"},null,8,["name"]),o("span",Sn,c(N.channel.name),1),l(ee,{icon:"i-lucide-pencil",color:"neutral",variant:"ghost",size:"xs",title:"Edit subscription",onClick:X=>lt(N)},null,8,["onClick"]),l(ee,{icon:Fe(N)?"i-lucide-bell":"i-lucide-bell-off",color:"neutral",variant:"ghost",size:"xs",title:Fe(N)?"Unmute":"Mute 7 days",onClick:X=>it(N)},null,8,["icon","title","onClick"]),l(ee,{icon:"i-lucide-x",color:"error",variant:"ghost",size:"xs",title:"Unsubscribe",onClick:X=>ze(N.id)},null,8,["onClick"])],2))],64))),128))])):!e(K)&&e(m).length>0?(n(),i("div",Dn," Not subscribed to this project. ")):S("",!0),e(K)?(n(),i("div",wn,[l(Se,{label:"Channel",size:"xs"},{default:s(()=>[l(Xe,{modelValue:e(oe),"onUpdate:modelValue":C[3]||(C[3]=N=>G(oe)?oe.value=N:null),items:e(qe),"value-key":"value",class:"w-full text-xs",size:"xs"},null,8,["modelValue","items"])]),_:1}),l(Se,{label:"Events",size:"xs"},{default:s(()=>[o("div",jn,[(n(!0),i(Y,null,ie(e(W),N=>(n(),i("label",{key:N.value,class:"flex items-center gap-1.5 text-xs cursor-pointer"},[It(o("input",{type:"checkbox",value:N.value,"onUpdate:modelValue":C[4]||(C[4]=X=>G(ue)?ue.value=X:null),class:"accent-primary size-3"},null,8,Rn),[[Et,e(ue)]]),p(" "+c(N.label),1)]))),128))])]),_:1}),o("div",An,[l(ee,{size:"xs",color:"neutral",variant:"ghost",onClick:C[5]||(C[5]=N=>K.value=!1)},{default:s(()=>[...C[18]||(C[18]=[p("Cancel",-1)])]),_:1}),l(ee,{size:"xs",color:"primary",loading:e(be),disabled:!e(oe)||e(ue).length===0,onClick:ye},{default:s(()=>[...C[19]||(C[19]=[p(" Subscribe ",-1)])]),_:1},8,["loading","disabled"])])])):S("",!0)]))]),default:s(()=>[l(ee,{icon:e(Ie)?"i-lucide-bell-ring":"i-lucide-bell",size:"sm",color:e(Ie)?"primary":"neutral",variant:e(Ie)?"soft":"outline",title:"Notification subscriptions for this project"},null,8,["icon","color","variant"])]),_:1},8,["open"])):S("",!0)}}}),zn=Object.assign(Un,{__name:"SubscribeBell"}),Fn={class:"w-full relative"},Mn={key:0},In={class:"p-2 text-sm text-gray-900 dark:text-gray-100"},En={class:"font-semibold mb-1"},Vn={class:"capitalize mb-1"},Bn={class:"space-y-0.5"},Pn={class:"font-medium mt-1"},Nn=ge({__name:"TestRunsChart",props:{testRuns:{},height:{default:300},markers:{default:()=>[]}},emits:["marker-click"],setup(z,{emit:w}){const b=z,j=w,h=E(()=>b.markers),g=E(()=>!b.testRuns||b.testRuns.length===0?[]:[...b.testRuns].sort((d,q)=>new Date(d.startTime).getTime()-new Date(q.startTime).getTime()).slice(-30).map(d=>({id:d.id,date:new Date(d.startTime),passed:d.passedTests||0,failed:d.failedTests||0,skipped:d.skippedTests||0,flaky:d.flakyTests||0,total:d.totalTests||0,status:d.status}))),u=$=>$.date,B=$=>$.passed,R=$=>$.failed,F=$=>$.skipped,D=$=>$.flaky,v=["rgb(34, 197, 94)","rgb(239, 68, 68)","rgb(245, 158, 11)","rgb(147, 51, 234)"],y=T(null),{tooltipData:A,tooltipPos:_,markerTooltip:f,markerTooltipPos:M,onRenderComplete:L}=Gt(y,g,{x:$=>$.date,series:[{y:$=>$.passed,color:v[0]},{y:$=>$.failed,color:v[1]},{y:$=>$.skipped,color:v[2]},{y:$=>$.flaky,color:v[3]}],onClick:$=>$t(`/test-runs/${$.id}`),markers:h,onMarkerClick:$=>j("marker-click",$.id)}),x=[{color:v[0],label:"Passed"},{color:v[1],label:"Failed"},{color:v[2],label:"Skipped"},{color:v[3],label:"Flaky"}];return($,d)=>{const q=Ot,Z=Ae,O=Xt;return n(),i("div",Fn,[e(g).length>0?(n(),i("div",Mn,[l(e(Ht),{ref_key:"xyContainerRef",ref:y,data:e(g),height:z.height,padding:{top:10,right:10,bottom:0,left:0},"on-render-complete":e(L)},{default:s(()=>[l(e(Ns),{x:u,y:[B,R,F,D],color:v,"curve-type":e(xt).MonotoneX},null,8,["y","curve-type"]),l(e(qt),{x:u,y:[B,R,F,D],color:v,"curve-type":e(xt).MonotoneX,"line-width":2},null,8,["y","curve-type"]),l(e(st),{type:"x","tick-format":P=>new Date(P).toLocaleDateString("en-US",{month:"short",day:"numeric"})},null,8,["tick-format"]),l(e(st),{type:"y",label:"Tests","tick-format":P=>P.toString()},null,8,["tick-format"])]),_:1},8,["data","height","on-render-complete"]),e(A)?(n(),i("div",{key:0,class:"fixed z-50 pointer-events-none bg-white dark:bg-gray-800 rounded-lg shadow-lg border border-gray-200 dark:border-gray-700 max-w-[260px]",style:Pt({left:`${e(_).x}px`,top:`${e(_).y}px`})},[o("div",In,[o("div",En,c(new Date(e(A).date).toLocaleDateString("en-US",{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"})),1),o("div",Vn,"Status: "+c(e(A).status),1),o("div",Bn,[o("div",null,[d[0]||(d[0]=o("span",{class:"text-green-500 dark:text-green-400"},"●",-1)),p(" Passed: "+c(e(A).passed),1)]),o("div",null,[d[1]||(d[1]=o("span",{class:"text-red-500 dark:text-red-400"},"●",-1)),p(" Failed: "+c(e(A).failed),1)]),o("div",null,[d[2]||(d[2]=o("span",{class:"text-orange-500 dark:text-orange-400"},"●",-1)),p(" Skipped: "+c(e(A).skipped),1)]),o("div",null,[d[3]||(d[3]=o("span",{class:"text-purple-500 dark:text-purple-400"},"●",-1)),p(" Flaky: "+c(e(A).flaky),1)]),o("div",Pn,"Total: "+c(e(A).total),1)]),d[4]||(d[4]=o("div",{class:"text-gray-400 dark:text-gray-500 text-xs mt-1"},"Click to view run details",-1))])],4)):S("",!0),l(q,{marker:e(f),pos:e(M)},null,8,["marker","pos"])])):(n(),k(Z,{key:1,text:"No test run data available to display chart"})),l(O,{items:x})])}}}),Ln=Object.assign(Nn,{__name:"TestRunsChart"}),Kn={class:"space-y-3"},On={class:"min-w-0 space-y-1"},qn={class:"flex items-center gap-2 flex-wrap text-sm"},Hn={key:0,class:"text-gray-500"},Xn=["title"],Gn=["title"],Qn={key:0,class:"text-xs text-gray-500 italic"},Yn={class:"flex items-center gap-2 shrink-0"},Jn=ge({__name:"ClusterMergeSuggestions",props:{projectId:{}},emits:["merged"],setup(z,{emit:w}){const b=z,j=w,h=je(),g=T([]),u=T(null);async function B(){try{g.value=await $fetch(`/api/projects/${b.projectId}/cluster-merge-suggestions`)}catch{g.value=[]}}pe(()=>b.projectId,B,{immediate:!0});async function R(D,v){u.value=D;try{await $fetch(`/api/cluster-merge-suggestions/${D}/${v}`,{method:"POST"}),h.add({title:v==="approve"?"Clusters merged":"Suggestion dismissed",color:"success"}),await B(),v==="approve"&&j("merged")}catch(y){h.add({title:"Action failed",description:String(y?.message??y),color:"error"})}finally{u.value=null}}const F=D=>D==null?"":`${Math.round(D*100)}% similar`;return(D,v)=>{const y=Le,A=Te,_=Qt;return e(g).length?(n(),k(_,{key:0,icon:"i-lucide-git-merge",title:"Suggested merges",count:e(g).length,class:"mb-4"},{subtitle:s(()=>[...v[0]||(v[0]=[p(" Likely-duplicate clusters found by semantic analysis. Approving merges them into the older cluster. ",-1)])]),default:s(()=>[o("div",Kn,[(n(!0),i(Y,null,ie(e(g),f=>(n(),i("div",{key:f.id,class:"rounded-lg border border-default p-3 flex items-start justify-between gap-4"},[o("div",On,[o("div",qn,[l(y,{color:f.method==="llm"?"primary":"neutral",variant:"subtle",size:"sm"},{default:s(()=>[p(c(f.method==="llm"?`AI · ${f.llmConfidence??""}`:"similarity"),1)]),_:2},1032,["color"]),F(f.score)?(n(),i("span",Hn,c(F(f.score)),1)):S("",!0)]),o("p",{class:"text-sm truncate",title:f.clusterA?.signature||""},[v[1]||(v[1]=o("span",{class:"text-gray-400"},"A:",-1)),p(" "+c(f.clusterA?.signature||`#${f.id}`),1)],8,Xn),o("p",{class:"text-sm truncate",title:f.clusterB?.signature||""},[v[2]||(v[2]=o("span",{class:"text-gray-400"},"B:",-1)),p(" "+c(f.clusterB?.signature||""),1)],8,Gn),f.llmReason?(n(),i("p",Qn,c(f.llmReason),1)):S("",!0)]),o("div",Yn,[l(A,{size:"sm",color:"primary",icon:"i-lucide-git-merge",loading:e(u)===f.id,onClick:M=>R(f.id,"approve")},{default:s(()=>[...v[3]||(v[3]=[p(" Merge ",-1)])]),_:1},8,["loading","onClick"]),l(A,{size:"sm",color:"neutral",variant:"ghost",icon:"i-lucide-x",disabled:e(u)===f.id,onClick:M=>R(f.id,"reject")},{default:s(()=>[...v[4]||(v[4]=[p(" Dismiss ",-1)])]),_:1},8,["disabled","onClick"])])]))),128))])]),_:1},8,["count"])):S("",!0)}}}),Wn=Object.assign(Jn,{__name:"ClusterMergeSuggestions"}),Zn={class:"flex items-center justify-between"},ea={class:"text-sm text-gray-500 inline-flex items-center gap-1"},ta={class:"min-w-0 space-y-0.5"},sa={key:0,class:"text-xs text-gray-500 italic truncate"},na={key:1,class:"text-gray-400 text-xs"},aa={class:"text-sm tabular-nums"},oa={class:"text-sm tabular-nums"},la={key:1,class:"text-gray-400 text-xs"},ra={class:"text-sm text-gray-500 whitespace-nowrap"},ia={key:0,class:"ml-1 text-xs text-gray-400"},ca={class:"flex justify-end"},ua=ge({__name:"FailureClustersList",props:{projectId:{}},async setup(z){let w,b;const j=z,h=T(void 0),{data:g,pending:u}=([w,b]=$e(()=>Ce(()=>{const R=new URLSearchParams;h.value&&R.set("status",h.value);const F=R.toString();return`/api/projects/${j.projectId}/failure-clusters${F?`?${F}`:""}`},{lazy:!0,server:!1,watch:[h]},"$f7pDU1t-lL")),w=await w,b(),w),B=[{accessorKey:"signature",header:V("Signature")},{accessorKey:"errorType",header:V("Type")},{accessorKey:"status",header:V("Status")},{accessorKey:"affectedTests",header:V("Tests")},{accessorKey:"occurrences",header:V("Occurrences")},{accessorKey:"diagnosis",header:"AI"},{accessorKey:"lastSeenAt",header:V("Last seen")},{id:"actions",header:"Actions"}];return(R,F)=>{const D=Ke,v=Re,y=at,A=Le,_=Ne,f=Te,M=Oe,L=Tt,x=Ae,$=ot;return n(),k($,null,{header:s(()=>[o("div",Zn,[o("p",ea,[F[1]||(F[1]=p(" Ongoing failure signatures grouped by normalized error. ",-1)),l(D,{topic:"cluster.concept"})]),l(v,{modelValue:e(h),"onUpdate:modelValue":F[0]||(F[0]=d=>G(h)?h.value=d:null),items:[{label:"All",value:void 0},{label:"Open",value:"open"},{label:"Resolved",value:"resolved"},{label:"Ignored",value:"ignored"}],size:"xs",class:"w-32"},null,8,["modelValue"])])]),default:s(()=>[l(L,{"min-width":"48rem",bleed:!1},{default:s(()=>[l(M,{data:e(g)??[],columns:B,loading:e(u)},{"actions-header":s(()=>[...F[2]||(F[2]=[o("div",{class:"text-right"},"Actions",-1)])]),"signature-cell":s(({row:d})=>[o("div",ta,[l(y,{to:`/failure-clusters/${d.original.id}`,class:re(["text-sm text-primary hover:underline truncate block",d.original.title?"":"font-mono"]),title:d.original.signature},{default:s(()=>[p(c(d.original.title||d.original.signature),1)]),_:2},1032,["to","class","title"]),d.original.triageNote?(n(),i("p",sa,c(d.original.triageNote),1)):S("",!0)])]),"errorType-cell":s(({row:d})=>[d.original.errorType?(n(),k(A,{key:0,color:("clusterErrorTypeColor"in R?R.clusterErrorTypeColor:e(Ys))(d.original.errorType),variant:"subtle",size:"sm"},{default:s(()=>[p(c(d.original.errorType),1)]),_:2},1032,["color"])):(n(),i("span",na,"—"))]),"status-cell":s(({row:d})=>[l(A,{color:("clusterStatusColor"in R?R.clusterStatusColor:e(Qs))(d.original.status),variant:"subtle",size:"sm"},{default:s(()=>[p(c(d.original.status),1)]),_:2},1032,["color"])]),"affectedTests-cell":s(({row:d})=>[o("span",aa,c(d.original.affectedTests),1)]),"occurrences-cell":s(({row:d})=>[o("span",oa,c(d.original.occurrences),1)]),"diagnosis-cell":s(({row:d})=>[d.original.diagnosis?.status==="completed"&&d.original.diagnosis.category?(n(),k(A,{key:0,color:"neutral",variant:"subtle",size:"sm",class:"gap-1"},{default:s(()=>[l(_,{name:"i-lucide-sparkles",class:"size-3"}),p(" "+c(d.original.diagnosis.category),1)]),_:2},1024)):(n(),i("span",la,"—"))]),"lastSeenAt-cell":s(({row:d})=>[o("div",ra,[l(y,{to:`/test-runs/${d.original.lastSeenRunId}`,class:"text-primary hover:underline"},{default:s(()=>[p(" run #"+c(d.original.lastSeenRunId),1)]),_:2},1032,["to"]),d.original.lastSeenAt?(n(),i("span",ia," ("+c(("formatRelativeTime"in R?R.formatRelativeTime:e(St))(d.original.lastSeenAt))+") ",1)):S("",!0)])]),"actions-cell":s(({row:d})=>[o("div",ca,[l(f,{to:`/failure-clusters/${d.original.id}`,size:"sm",variant:"outline","trailing-icon":"i-lucide-arrow-right"},{default:s(()=>[...F[3]||(F[3]=[p(" View ",-1)])]),_:1},8,["to"])])]),_:1},8,["data","loading"])]),_:1}),!e(u)&&e(g)&&e(g).length===0?(n(),k(x,{key:0,text:"No failure clusters recorded for this project.",padded:!1,class:"py-4"})):S("",!0)]),_:1})}}}),da=Object.assign(ua,{__name:"FailureClustersList"}),ma={class:"flex items-center justify-between"},pa={class:"flex items-center gap-3"},ga={class:"text-sm text-gray-500 inline-flex items-center gap-1"},fa={class:"flex items-center gap-1.5"},va={class:"min-w-0 space-y-0.5"},ya={class:"flex items-center gap-2"},_a={class:"text-sm tabular-nums"},ha={class:"text-sm tabular-nums"},ba={key:1,class:"text-gray-400 text-xs"},xa={key:1,class:"text-gray-400 text-xs"},ka={key:1,class:"text-gray-400 text-xs"},$a={key:0,class:"text-sm text-gray-500"},Ca={key:1,class:"text-gray-400 text-xs"},Ta={class:"flex justify-end"},Sa={key:0,class:"text-sm text-gray-500 py-4 text-center"},Da=ge({__name:"FlakyTestsList",props:{projectId:{},environment:{},projectName:{}},async setup(z){let w,b;const j=z,h=T(50),g=T([]),{data:u,pending:B}=([w,b]=$e(()=>Ce(()=>{const _=new URLSearchParams({runs:String(h.value)});return j.environment&&_.set("environment",j.environment),`/api/projects/${j.projectId}/flaky-tests?${_.toString()}`},{lazy:!0,server:!1,watch:[h,()=>j.environment]},"$qKoEnbecbI")),w=await w,b(),w),R=E(()=>g.value.length===0?u.value??[]:(u.value??[]).filter(_=>g.value.includes(_.rootCause??"")));function F(_){return _>=60?"error":_>=30?"warning":"neutral"}function D(_){switch(_){case"timing":return"amber";case"network":return"red";case"assertion":return"blue";case"environment":return"purple";default:return"gray"}}function v(_){g.value.indexOf(_)>=0?g.value=g.value.filter(M=>M!==_):g.value=[...g.value,_]}const y=[{label:"Timing",value:"timing"},{label:"Network",value:"network"},{label:"Assertion",value:"assertion"},{label:"Environment",value:"environment"},{label:"Other",value:"other"}],A=[{accessorKey:"title",header:V("Test")},{accessorKey:"impact",header:V("Impact")},{accessorKey:"score",header:V("Score")},{accessorKey:"failureRate",header:V("Failure rate")},{accessorKey:"retryPassRuns",header:V("Retry passes")},{accessorKey:"alternations",header:V("Flips")},{accessorKey:"rootCause",header:"Root cause"},{accessorKey:"lastFlakeAt",header:V("Last flake")},{id:"actions",header:"Actions"}];return(_,f)=>{const M=Ke,L=Ne,x=Le,$=Te,d=Re,q=at,Z=Jt,O=Kt,P=Oe,_e=Tt,he=ot;return n(),k(he,null,{header:s(()=>[o("div",ma,[o("div",pa,[o("p",ga,[f[1]||(f[1]=p(" Tests that fail intermittently — detected by retry passes and status alternations ",-1)),l(M,{topic:"project.flaky-tests"})]),z.environment?(n(),k(x,{key:0,color:"neutral",variant:"subtle",size:"sm",class:"gap-1"},{default:s(()=>[l(L,{name:"i-lucide-layers",class:"size-3"}),p(" "+c(z.environment),1)]),_:1})):S("",!0),o("div",fa,[(n(),i(Y,null,ie(y,m=>l($,{key:m.value,size:"xs",variant:e(g).includes(m.value)?"solid":"outline",color:(e(g).includes(m.value),"neutral"),onClick:K=>v(m.value)},{default:s(()=>[p(c(m.label),1)]),_:2},1032,["variant","color","onClick"])),64))])]),l(d,{modelValue:e(h),"onUpdate:modelValue":f[0]||(f[0]=m=>G(h)?h.value=m:null),items:[{label:"Last 20 runs",value:20},{label:"Last 50 runs",value:50},{label:"Last 100 runs",value:100}],size:"xs",class:"w-36"},null,8,["modelValue"])])]),default:s(()=>[l(_e,{"min-width":"52rem",bleed:!1},{default:s(()=>[l(P,{data:e(R),columns:A,loading:e(B),sticky:"",class:"max-h-[32rem]"},{"actions-header":s(()=>[...f[2]||(f[2]=[o("div",{class:"text-right"},"Actions",-1)])]),"title-cell":s(({row:m})=>[o("div",va,[l(q,{to:`/test-run-cases/${m.original.latestRunsCaseId}`,class:"text-sm font-medium text-primary hover:underline truncate block",title:m.original.title},{default:s(()=>[p(c(m.original.title),1)]),_:2},1032,["to","title"]),l(Z,{"file-path":m.original.filePath,"project-key":z.projectId,"project-name":z.projectName,class:"text-xs text-gray-400"},null,8,["file-path","project-key","project-name"])])]),"impact-cell":s(({row:m})=>[o("div",ya,[o("span",{class:re(["inline-block w-2 h-2 rounded-full shrink-0",{"bg-red-500":m.original.wastedCiMinutes>=30,"bg-amber-500":m.original.wastedCiMinutes>=5&&m.original.wastedCiMinutes<30,"bg-green-500":m.original.wastedCiMinutes>=0&&m.original.wastedCiMinutes<5}])},null,2),o("span",_a,c(Math.round(m.original.wastedCiMinutes))+" min wasted",1)])]),"score-cell":s(({row:m})=>[l(x,{color:F(m.original.score),variant:"subtle",size:"sm"},{default:s(()=>[p(c(m.original.score),1)]),_:2},1032,["color"])]),"failureRate-cell":s(({row:m})=>[o("span",ha,c(Math.round(m.original.failureRate*100))+"%",1)]),"retryPassRuns-cell":s(({row:m})=>[m.original.retryPassRuns?(n(),k(x,{key:0,color:"warning",variant:"outline",size:"sm"},{default:s(()=>[p(c(m.original.retryPassRuns)+" run"+c(m.original.retryPassRuns===1?"":"s"),1)]),_:2},1024)):(n(),i("span",ba,"—"))]),"alternations-cell":s(({row:m})=>[m.original.alternations>=2?(n(),k(x,{key:0,color:"neutral",variant:"outline",size:"sm"},{default:s(()=>[p(c(m.original.alternations),1)]),_:2},1024)):(n(),i("span",xa,"—"))]),"rootCause-cell":s(({row:m})=>[m.original.rootCause?(n(),k(O,{key:0,text:m.original.rootCause,color:D(m.original.rootCause)},null,8,["text","color"])):(n(),i("span",ka,"—"))]),"lastFlakeAt-cell":s(({row:m})=>[m.original.lastFlakeAt?(n(),i("span",$a,c(("formatRelativeTime"in _?_.formatRelativeTime:e(St))(m.original.lastFlakeAt)),1)):(n(),i("span",Ca,"—"))]),"actions-cell":s(({row:m})=>[o("div",Ta,[l($,{to:`/test-run-cases/${m.original.latestRunsCaseId}`,size:"sm",variant:"outline","trailing-icon":"i-lucide-arrow-right"},{default:s(()=>[...f[3]||(f[3]=[p(" View ",-1)])]),_:1},8,["to"])])]),_:1},8,["data","loading"])]),_:1}),!e(B)&&e(R).length===0?(n(),i("p",Sa," No flaky tests detected in the last "+c(e(h))+" runs. ",1)):S("",!0)]),_:1})}}}),wa=Object.assign(Da,{__name:"FlakyTestsList"}),ja={class:"w-full relative"},Ra={key:0},Aa={class:"p-2 text-sm text-gray-900 dark:text-gray-100"},Ua={class:"font-semibold mb-1"},za={class:"capitalize mb-1"},Fa={class:"space-y-0.5"},Ma={class:"mt-1"},Ia={key:0,class:"text-gray-400 dark:text-gray-500 text-xs"},Ea=ge({__name:"PerformanceTrendChart",props:{data:{},height:{default:300},markers:{default:()=>[]}},emits:["marker-click"],setup(z,{emit:w}){const b=z,j=w,h=E(()=>b.markers),g=E(()=>!b.data||b.data.length===0?[]:b.data.map(x=>({id:x.id,date:new Date(x.startTime),duration:x.duration?Math.round(x.duration/1e3):null,avgTestDuration:x.avgTestDuration?Math.round(x.avgTestDuration/1e3):null,p90TestDuration:x.p90TestDuration?Math.round(x.p90TestDuration/1e3):null,commit:x.commit?x.commit.substring(0,7):null,status:x.status,totalTests:x.totalTests}))),u=x=>x.date,B=x=>x.duration??void 0,R=x=>x.avgTestDuration??void 0,F=x=>x.p90TestDuration??void 0,D=["rgb(59, 130, 246)","rgb(34, 197, 94)","rgb(249, 115, 22)"],v=T(null),{tooltipData:y,tooltipPos:A,markerTooltip:_,markerTooltipPos:f,onRenderComplete:M}=Gt(v,g,{x:x=>x.date,series:[{y:x=>x.duration,color:D[0]},{y:x=>x.avgTestDuration,color:D[1]},{y:x=>x.p90TestDuration,color:D[2]}],onClick:x=>$t(`/test-runs/${x.id}`),markers:h,onMarkerClick:x=>j("marker-click",x.id)}),L=[{color:D[0],label:"Total Duration"},{color:D[1],label:"Avg Test Duration"},{color:D[2],label:"P90 Test Duration"}];return(x,$)=>{const d=Ot,q=Ae,Z=Xt;return n(),i("div",ja,[e(g).length>0?(n(),i("div",Ra,[l(e(Ht),{ref_key:"xyContainerRef",ref:v,data:e(g),height:z.height,padding:{top:10,right:10,bottom:0,left:0},"on-render-complete":e(M)},{default:s(()=>[l(e(qt),{x:u,y:[B,R,F],color:D,"curve-type":e(xt).MonotoneX,"line-width":2},null,8,["y","curve-type"]),l(e(st),{type:"x","tick-format":O=>new Date(O).toLocaleDateString("en-US",{month:"short",day:"numeric"}),label:"Date"},null,8,["tick-format"]),l(e(st),{type:"y",label:"Duration (s)","tick-format":O=>`${O}s`},null,8,["tick-format"])]),_:1},8,["data","height","on-render-complete"]),e(y)?(n(),i("div",{key:0,class:"fixed z-50 pointer-events-none bg-white dark:bg-gray-800 rounded-lg shadow-lg border border-gray-200 dark:border-gray-700 max-w-[260px]",style:Pt({left:`${e(A).x}px`,top:`${e(A).y}px`})},[o("div",Aa,[o("div",Ua,c(new Date(e(y).date).toLocaleDateString("en-US",{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"})),1),o("div",za,"Status: "+c(e(y).status),1),o("div",Fa,[o("div",null,[$[0]||($[0]=o("span",{class:"text-blue-500 dark:text-blue-400"},"●",-1)),p(" Total: "+c(e(y).duration??"-")+"s ",1)]),o("div",null,[$[1]||($[1]=o("span",{class:"text-green-500 dark:text-green-400"},"●",-1)),p(" Avg: "+c(e(y).avgTestDuration??"-")+"s ",1)]),o("div",null,[$[2]||($[2]=o("span",{class:"text-orange-500 dark:text-orange-400"},"●",-1)),p(" P90: "+c(e(y).p90TestDuration??"-")+"s ",1)]),o("div",Ma,"Tests: "+c(e(y).totalTests),1),e(y).commit?(n(),i("div",Ia," Commit: "+c(e(y).commit),1)):S("",!0)]),$[3]||($[3]=o("div",{class:"text-gray-400 dark:text-gray-500 text-xs mt-1"},"Click to view run details",-1))])],4)):S("",!0),l(d,{marker:e(_),pos:e(f)},null,8,["marker","pos"])])):(n(),k(q,{key:1,text:"No performance data available to display chart"})),l(Z,{items:L})])}}}),Va=Object.assign(Ea,{__name:"PerformanceTrendChart"}),Ba={class:"flex items-center justify-between"},Pa={class:"text-sm text-gray-500 inline-flex items-center gap-1"},Na={class:"truncate font-mono text-xs"},La={class:"tabular-nums"},Ka={class:"tabular-nums text-gray-500"},Oa={class:"tabular-nums text-gray-500"},qa=ge({__name:"SpecHealthTable",props:{projectId:{}},async setup(z){let w,b;const j=z,h=T(30),{data:g,pending:u}=([w,b]=$e(()=>Ce(()=>`/api/projects/${j.projectId}/spec-health?days=${h.value}`,{lazy:!0,server:!1,watch:[h]},"$QL0nEFEG1b")),w=await w,b(),w),B=E(()=>g.value?.specs??[]);function R(_){return _>=.9?"bg-green-500":_>=.7?"bg-amber-500":_>0?"bg-red-500":"bg-gray-300 dark:bg-gray-600"}function F(_){return _>=.9?"text-green-600 dark:text-green-400":_>=.7?"text-amber-600 dark:text-amber-400":_>0?"text-red-600 dark:text-red-400":"text-gray-500"}function D(_){return`${Math.round(_*100)}%`}function v(_){return _<1e3?`${_}ms`:`${(_/1e3).toFixed(1)}s`}const y=[{label:"Last 7 days",value:7},{label:"Last 30 days",value:30},{label:"Last 90 days",value:90}],A=[{accessorKey:"prefix",header:V("Spec prefix")},{accessorKey:"passRate",header:V("Pass rate")},{accessorKey:"flakyRate",header:V("Flaky")},{accessorKey:"failureCount",header:V("Failures")},{accessorKey:"testCount",header:V("Tests")},{accessorKey:"avgDuration",header:V("Avg time")}];return(_,f)=>{const M=Ke,L=Re,x=Wt,$=Ae,d=at,q=Oe,Z=Tt,O=ot;return n(),k(O,null,{header:s(()=>[o("div",Ba,[o("p",Pa,[f[1]||(f[1]=p(" Spec-file health overview — pass rate, flaky rate, and failure count per spec prefix ",-1)),l(M,{topic:"project.spec-health"})]),l(L,{modelValue:e(h),"onUpdate:modelValue":f[0]||(f[0]=P=>G(h)?h.value=P:null),items:y,size:"xs",class:"w-32"},null,8,["modelValue"])])]),default:s(()=>[e(u)?(n(),k(x,{key:0})):e(B).length===0?(n(),k($,{key:1,text:"No data",description:"No spec health data available for the selected period."})):(n(),k(Z,{key:2,"min-width":"46rem",bleed:!1},{default:s(()=>[l(q,{data:e(B),columns:A,sticky:"",class:"max-h-[32rem]"},{"prefix-cell":s(({row:P})=>[l(d,{to:`/projects/${z.projectId}/test-cases?file=${encodeURIComponent(P.original.prefix)}`,class:"flex items-center gap-2 min-w-0 text-primary hover:underline",title:P.original.prefix},{default:s(()=>[o("span",{class:re(["inline-block size-3 rounded shrink-0",R(P.original.passRate)])},null,2),o("span",Na,c(P.original.prefix),1)]),_:2},1032,["to","title"])]),"passRate-cell":s(({row:P})=>[o("span",{class:re(["font-medium tabular-nums",F(P.original.passRate)])},c(D(P.original.passRate)),3)]),"flakyRate-cell":s(({row:P})=>[o("span",La,c(Math.round(P.original.flakyRate*100))+"%",1)]),"failureCount-cell":s(({row:P})=>[o("span",{class:re(["tabular-nums",P.original.failureCount>0?"text-red-600 dark:text-red-400":""])},c(P.original.failureCount),3)]),"testCount-cell":s(({row:P})=>[o("span",Ka,c(P.original.testCount),1)]),"avgDuration-cell":s(({row:P})=>[o("span",Oa,c(v(P.original.avgDuration)),1)]),_:1},8,["data"])]),_:1}))]),_:1})}}}),Ha=Object.assign(qa,{__name:"SpecHealthTable"}),Xa={class:"space-y-4"},Ga={class:"grid grid-cols-1 sm:grid-cols-2 gap-4"},Qa={id:"marker-environments"},Ya=["value"],Ja=ge({__name:"MarkerFormModal",props:{open:{type:Boolean},projectId:{},marker:{},environments:{}},emits:["update:open","saved"],setup(z,{emit:w}){const b=z,j=w,h=je(),g=sn.map(v=>({label:v.label,value:v.id,icon:v.icon})),u=js({label:"",occurredAt:"",category:ht,environment:"",description:""}),B=E(()=>!!b.marker),R=T(!1);function F(v){const y=new Date(v),A=_=>String(_).padStart(2,"0");return`${y.getFullYear()}-${A(y.getMonth()+1)}-${A(y.getDate())}T${A(y.getHours())}:${A(y.getMinutes())}`}pe(()=>b.open,v=>{v&&(b.marker?(u.label=b.marker.label,u.occurredAt=F(b.marker.occurredAt),u.category=b.marker.category||ht,u.environment=b.marker.environment??"",u.description=b.marker.description??""):(u.label="",u.occurredAt=F(new Date),u.category=ht,u.environment="",u.description=""))});async function D(){if(!u.label.trim()){h.add({title:"Label is required",color:"error"});return}if(!u.occurredAt){h.add({title:"Date is required",color:"error"});return}R.value=!0;const v={label:u.label.trim(),occurredAt:new Date(u.occurredAt).toISOString(),category:u.category,environment:u.environment.trim()||null,description:u.description.trim()||null};try{b.marker?(await $fetch(`/api/markers/${b.marker.id}`,{method:"PUT",body:v}),h.add({title:"Marker updated",color:"success"})):(await $fetch(`/api/projects/${b.projectId}/markers`,{method:"POST",body:v}),h.add({title:"Marker created",color:"success"})),j("update:open",!1),j("saved")}catch(y){h.add({title:B.value?"Failed to update marker":"Failed to create marker",description:Yt(y),color:"error"})}finally{R.value=!1}}return(v,y)=>{const A=Nt,_=Lt,f=Re,M=tn,L=Te,x=Dt,$=Ct;return n(),k($,null,{default:s(()=>[l(x,{open:z.open,title:e(B)?"Edit marker":"Add marker","onUpdate:open":y[6]||(y[6]=d=>j("update:open",d))},{body:s(()=>[o("div",Xa,[l(_,{label:"Label",name:"label",required:""},{default:s(()=>[l(A,{modelValue:e(u).label,"onUpdate:modelValue":y[0]||(y[0]=d=>e(u).label=d),placeholder:"e.g. Migrated CI to new runners",class:"w-full"},null,8,["modelValue"])]),_:1}),o("div",Ga,[l(_,{label:"Date & time",name:"occurredAt",required:""},{default:s(()=>[l(A,{modelValue:e(u).occurredAt,"onUpdate:modelValue":y[1]||(y[1]=d=>e(u).occurredAt=d),type:"datetime-local",class:"w-full"},null,8,["modelValue"])]),_:1}),l(_,{label:"Category",name:"category"},{default:s(()=>[l(f,{modelValue:e(u).category,"onUpdate:modelValue":y[2]||(y[2]=d=>e(u).category=d),items:e(g),class:"w-full"},null,8,["modelValue","items"])]),_:1})]),l(_,{label:"Environment",name:"environment",help:"Optional. Leave empty to apply to all environments."},{default:s(()=>[l(A,{modelValue:e(u).environment,"onUpdate:modelValue":y[3]||(y[3]=d=>e(u).environment=d),list:"marker-environments",placeholder:"e.g. production",class:"w-full"},null,8,["modelValue"]),o("datalist",Qa,[(n(!0),i(Y,null,ie(z.environments||[],d=>(n(),i("option",{key:d,value:d},null,8,Ya))),128))])]),_:1}),l(_,{label:"Description",name:"description"},{default:s(()=>[l(M,{modelValue:e(u).description,"onUpdate:modelValue":y[4]||(y[4]=d=>e(u).description=d),rows:3,placeholder:"Optional details",class:"w-full"},null,8,["modelValue"])]),_:1})])]),footer:s(()=>[l(L,{color:"neutral",variant:"ghost",label:"Cancel",onClick:y[5]||(y[5]=d=>j("update:open",!1))}),l(L,{label:e(B)?"Save changes":"Add marker",icon:e(B)?"i-lucide-check":"i-lucide-plus",loading:e(R),onClick:D},null,8,["label","icon","loading"])]),_:1},8,["open","title"])]),_:1})}}}),Wa=Object.assign(Ja,{__name:"MarkerFormModal"}),Za={class:"md:hidden space-y-3"},eo={class:"flex items-start justify-between gap-2"},to={key:0,class:"flex gap-1 shrink-0"},so={class:"text-sm text-muted"},no={key:0,class:"text-xs"},ao={key:1,class:"text-sm text-muted"},oo={class:"whitespace-nowrap"},lo={class:"text-sm"},ro={class:"text-xs text-muted"},io={class:"font-medium flex items-center gap-1"},co={key:0,class:"text-xs text-muted line-clamp-1"},uo={key:1,class:"text-xs text-muted"},mo={key:0,class:"flex gap-1 justify-end"},po=ge({__name:"ProjectTimeline",props:{projectId:{},markers:{},environments:{},canEdit:{type:Boolean},focusMarkerId:{}},emits:["changed","clear-focus"],setup(z,{emit:w}){const b=z,j=w,h=je(),g=E(()=>[...b.markers].sort((f,M)=>+new Date(M.occurredAt)-+new Date(f.occurredAt))),u=[{accessorKey:"occurredAt",header:"When"},{accessorKey:"category",header:"Category"},{accessorKey:"label",header:"Label"},{accessorKey:"environment",header:"Environment"},{accessorKey:"actions",header:""}],B=T(!1),R=T(null);function F(){R.value=null,B.value=!0}function D(f){R.value=f,B.value=!0}pe(()=>b.focusMarkerId,f=>{if(f==null)return;const M=b.markers.find(L=>L.id===f);M&&D(M),j("clear-focus")},{immediate:!0});const v=T(!1),y=T(null);function A(f){y.value=f,v.value=!0}async function _(){const f=y.value;if(v.value=!1,y.value=null,!!f)try{await $fetch(`/api/markers/${f.id}`,{method:"DELETE"}),h.add({title:"Marker deleted",color:"success"}),j("changed")}catch(M){h.add({title:"Failed to delete marker",description:Yt(M),color:"error"})}}return(f,M)=>{const L=Te,x=Ae,$=en,d=Le,q=Ne,Z=Oe,O=Wa,P=Dt,_e=Ct,he=Qt;return n(),k(he,{title:"Timeline markers",count:z.markers.length,icon:"i-lucide-milestone",help:"project.timeline",subtitle:"Dated events overlaid on the analytics charts"},{actions:s(()=>[z.canEdit?(n(),k(L,{key:0,label:"Add marker",icon:"i-lucide-plus",size:"sm",onClick:F})):S("",!0)]),default:s(()=>[z.markers.length===0?(n(),k(x,{key:0,icon:"i-lucide-milestone",text:"No markers yet. Add a deploy, config change, or incident to see it on the charts."})):(n(),i(Y,{key:1},[o("div",Za,[(n(!0),i(Y,null,ie(e(g),m=>(n(),i("div",{key:m.id,class:"rounded-lg border border-default p-3 space-y-2"},[o("div",eo,[l($,{marker:m},null,8,["marker"]),z.canEdit?(n(),i("div",to,[l(L,{icon:"i-lucide-pencil",color:"neutral",variant:"ghost",size:"xs",onClick:K=>D(m)},null,8,["onClick"]),l(L,{icon:"i-lucide-trash-2",color:"error",variant:"ghost",size:"xs",onClick:K=>A(m)},null,8,["onClick"])])):S("",!0)]),o("div",so,c(("prettyDateFormat"in f?f.prettyDateFormat:e(nt))(m.occurredAt)),1),m.environment?(n(),i("div",no,[l(d,{color:"neutral",variant:"subtle",size:"xs"},{default:s(()=>[p(c(m.environment),1)]),_:2},1024)])):S("",!0),m.description?(n(),i("p",ao,c(m.description),1)):S("",!0)]))),128))]),l(Z,{data:e(g),columns:u,class:"hidden md:block"},{"occurredAt-cell":s(({row:m})=>[o("div",oo,[o("div",lo,c(("prettyDateFormat"in f?f.prettyDateFormat:e(nt))(m.original.occurredAt)),1),o("div",ro,c(("formatRelativeTime"in f?f.formatRelativeTime:e(St))(m.original.occurredAt)),1)])]),"category-cell":s(({row:m})=>[l(d,{color:e(bt)(m.original.category).color,variant:"subtle",size:"sm",class:"gap-1"},{default:s(()=>[l(q,{name:e(bt)(m.original.category).icon,class:"size-3"},null,8,["name"]),p(" "+c(e(bt)(m.original.category).label),1)]),_:2},1032,["color"])]),"label-cell":s(({row:m})=>[o("div",null,[o("div",io,[p(c(m.original.label)+" ",1),m.original.source==="auto"?(n(),k(q,{key:0,name:"i-lucide-sparkles",class:"size-3 text-muted",title:"Automatically detected"})):S("",!0)]),m.original.description?(n(),i("div",co,c(m.original.description),1)):S("",!0)])]),"environment-cell":s(({row:m})=>[m.original.environment?(n(),k(d,{key:0,color:"neutral",variant:"subtle",size:"xs"},{default:s(()=>[p(c(m.original.environment),1)]),_:2},1024)):(n(),i("span",uo,"All"))]),"actions-cell":s(({row:m})=>[z.canEdit?(n(),i("div",mo,[l(L,{icon:"i-lucide-pencil",color:"neutral",variant:"ghost",size:"sm",onClick:K=>D(m.original)},null,8,["onClick"]),l(L,{icon:"i-lucide-trash-2",color:"error",variant:"ghost",size:"sm",onClick:K=>A(m.original)},null,8,["onClick"])])):S("",!0)]),_:1},8,["data"])],64)),l(O,{open:e(B),"onUpdate:open":M[0]||(M[0]=m=>G(B)?B.value=m:null),"project-id":z.projectId,marker:e(R),environments:z.environments,onSaved:M[1]||(M[1]=m=>j("changed"))},null,8,["open","project-id","marker","environments"]),l(_e,null,{default:s(()=>[l(P,{open:e(v),title:"Delete marker","onUpdate:open":M[3]||(M[3]=m=>v.value=m)},{body:s(()=>[o("p",null,[M[4]||(M[4]=p(" Delete marker ",-1)),e(y)?(n(),k($,{key:0,marker:e(y),class:"inline-flex align-middle"},null,8,["marker"])):S("",!0),M[5]||(M[5]=p("? This can't be undone. ",-1))])]),footer:s(()=>[l(L,{color:"neutral",variant:"ghost",label:"Cancel",onClick:M[2]||(M[2]=m=>v.value=!1)}),l(L,{color:"error",label:"Delete",icon:"i-lucide-trash-2",onClick:_})]),_:1},8,["open"])]),_:1})]),_:1},8,["count"])}}}),go=Object.assign(po,{__name:"ProjectTimeline"}),fo={class:"flex flex-col h-full overflow-y-auto gap-4"},vo={key:0,class:"pb-0 space-y-4"},yo={key:0,class:"text-gray-600"},_o={key:1,class:"flex flex-wrap gap-1 mt-2"},ho={class:"flex flex-wrap items-center gap-3 mb-4"},bo={class:"inline-flex items-center gap-1"},xo=["onClick"],ko={key:0,class:"flex items-center gap-3 px-3 py-2 mb-3 rounded-lg bg-primary-50 dark:bg-primary-900/20 border border-primary-200 dark:border-primary-800"},$o={class:"text-sm text-primary-700 dark:text-primary-300"},Co={key:1,class:"text-xs text-primary-500"},To=["checked","onClick"],So={class:"flex items-center gap-2"},Do=["href","onClick"],wo={key:0,class:"text-xs text-gray-500 dark:text-gray-400 truncate max-w-32"},jo={class:"inline-flex items-center gap-1"},Ro={key:0,class:"flex items-center gap-1"},Ao={class:"text-xs text-gray-600"},Uo={key:0,class:"text-xs font-medium bg-blue-100 text-blue-800 dark:bg-blue-900 dark:text-blue-200 px-1.5 py-0.5 rounded"},zo={key:0,class:"flex items-center gap-1 flex-wrap"},Fo={key:0,class:"text-xs font-medium bg-gray-100 dark:bg-gray-800 px-1.5 py-0.5 rounded"},Mo={key:1,class:"text-xs text-gray-500"},Io={class:"space-y-1"},Eo={class:"text-xs text-gray-500"},Vo={class:"flex justify-end gap-2"},Bo={key:2,class:"text-center py-8 text-gray-500"},Po={class:"text-xs text-gray-400 max-w-sm"},No={class:"bg-gray-100 dark:bg-gray-800 px-1 rounded"},Lo={class:"flex flex-wrap items-center gap-3"},Ko={class:"text-xl font-semibold inline-flex items-center gap-1"},Oo={class:"font-medium"},qo={class:"mt-1"},Ho={key:0,class:"text-red-600 font-medium"},Xo={key:1,class:"text-green-600 font-medium"},Go={key:2,class:"text-gray-500"},Qo={key:2,class:"text-center py-8 text-red-500"},Yo={key:3,class:"text-center py-8 text-gray-500"},Jo={class:"flex items-center justify-between"},Wo={class:"text-xl font-semibold inline-flex items-center gap-1"},Zo={class:"space-y-4"},el={class:"grid grid-cols-1 md:grid-cols-2 gap-4"},tl={key:0,class:"text-center py-4 text-gray-500"},sl={key:1,class:"space-y-4"},nl={class:"flex gap-4 text-sm"},al={key:0,class:"text-gray-400"},ol={key:0,class:"text-gray-400"},ll={key:0},rl={key:1,class:"text-gray-400"},il={key:0},cl={key:1,class:"text-gray-400"},ul={key:0,class:"text-gray-400"},dl={key:0,class:"text-gray-400"},ml={key:2,class:"text-center py-8 text-gray-500"},pl={key:3,class:"text-center py-8 text-gray-500"},gl={class:"flex items-center justify-between"},fl={class:"text-sm text-gray-600 inline-flex items-center gap-1"},vl={class:"space-y-4"},yl={class:"grid grid-cols-1 md:grid-cols-2 gap-4"},_l={key:0,class:"text-center py-8 text-gray-500"},hl={key:1,class:"space-y-4"},bl={class:"space-y-2"},xl={class:"flex flex-wrap gap-4 text-sm"},kl={key:3,class:"text-sm text-gray-500"},$l={class:"flex flex-wrap gap-4 text-sm"},Cl={key:0,class:"text-gray-400"},Tl={key:0,class:"text-gray-400"},Sl={key:0},Dl={key:1,class:"text-gray-400"},wl={key:0},jl={key:1,class:"text-gray-400"},Rl={key:0,class:"text-gray-400"},Al={key:0,class:"text-gray-400"},Ul={key:2,class:"text-center py-8 text-gray-500"},zl={key:3,class:"text-center py-8 text-gray-500"},Fl={class:"flex items-center justify-between"},Ml={class:"text-sm text-gray-600 inline-flex items-center gap-1"},Il={key:0,class:"space-y-2"},El={class:"font-medium text-sm"},Vl={class:"text-xs text-muted flex items-center gap-2"},Bl={key:0,class:"italic"},Pl={key:1,class:"text-xs text-muted italic"},Nl={key:1,class:"text-center py-8 text-muted text-sm"},Ll={class:"space-y-4"},Kl={class:"text-sm text-gray-600 dark:text-gray-400"},Ol={class:"block text-sm font-medium mb-1"},ql={class:"bg-gray-100 dark:bg-gray-800 px-1 rounded"},Gr=ge({__name:"index",async setup(z){let w,b;const j=Rs(),h=As(),g=j.params.id,{data:u,refresh:B}=([w,b]=$e(()=>Ce(`/api/projects/${g}`,"$NX9Zy2qnH1")),w=await w,b(),w);Us(E(()=>({title:`${u.value?.label||u.value?.name||"Project"} — Piwi Dashboard`})));const R=je(),F=T(null),D=T(null),{isAdmin:v,isReporter:y}=Bt(),A=kt(),_=E(()=>!A.public.authEnabled||v.value),f=T(!1),M=T(""),L=T(!1),x=E(()=>M.value===u.value?.name);async function $(){if(x.value){L.value=!0;try{await $fetch(`/api/projects/${g}`,{method:"DELETE"}),R.add({title:"Project deleted",color:"success"}),await Fs(),await h.push("/")}catch(r){const t=r&&typeof r=="object"&&"data"in r?r.data?.message:void 0;R.add({title:"Delete failed",description:t||"An error occurred",color:"error"}),L.value=!1}}}on(B);async function d(r){D.value=null,F.value=r;try{await $fetch(`/api/test-runs/${r}`,{method:"DELETE"}),R.add({title:"Test run deleted",color:"success"}),await B()}catch(t){const U=t&&typeof t=="object"&&"data"in t?t.data?.message:void 0;R.add({title:"Delete failed",description:U||"An error occurred",color:"error"})}finally{F.value=null}}const q=T([]),Z=T([]),O=T([]),P=E(()=>{const r=new Map(q.value.map(U=>[U.id,U])),t=[];for(const U of Z.value){if(U.role==="administrator")continue;const H=r.get(U.id);t.push({id:U.id,username:U.username,name:U.name??null,role:U.role,global:H?.global??!1,hasAccess:!!H})}for(const U of q.value)U.role==="administrator"&&t.push({...U,hasAccess:!0});return t}),_e=E(()=>{const r=q.value.filter(U=>U.role!=="administrator"&&!U.global).map(U=>U.id).sort(),t=[...O.value].sort();return JSON.stringify(r)!==JSON.stringify(t)});pe(()=>u.value?.id,async r=>{if(!(!r||!v.value))try{const[t,U]=await Promise.all([$fetch(`/api/projects/${g}/members`),$fetch("/api/users")]);q.value=t.users,Z.value=U.users,O.value=t.users.filter(H=>H.role!=="administrator"&&!H.global).map(H=>H.id)}catch{q.value=[],Z.value=[],O.value=[]}},{immediate:!0});function he(r){const t=O.value.indexOf(r);t>=0?O.value.splice(t,1):O.value.push(r)}async function m(){try{await $fetch(`/api/projects/${g}/members`,{method:"PUT",body:{userIds:O.value}}),R.add({title:"Members updated",color:"success"});const r=await $fetch(`/api/projects/${g}/members`);q.value=r.users}catch(r){const t=r&&typeof r=="object"&&"data"in r?r.data?.message:void 0;R.add({title:"Update failed",description:t||"An error occurred",color:"error"})}}const K=T("test-runs"),oe=T(0),ue=["test-runs","failure-clusters","flaky-tests","performance","test-cases","compare","spec-health","timeline","members"],be=j.query.tab;typeof be=="string"&&ue.includes(be)&&(K.value=be),pe(K,r=>{j.query.tab!==r&&ue.includes(r)&&h.replace({query:{...j.query,tab:r}})});const fe=E(()=>u.value?.testRuns?.some(r=>r.failedTests>0)??!1),ce=E(()=>[{label:`Test runs (${Me.value.length})`,icon:"i-lucide-play-circle",value:"test-runs",slot:"test-runs"},...fe.value?[{label:"Failure clusters",icon:"i-lucide-layers",value:"failure-clusters",slot:"failure-clusters"}]:[],{label:"Flaky tests",icon:"i-lucide-shuffle",value:"flaky-tests",slot:"flaky-tests"},{label:"Performance",icon:"i-lucide-trending-up",value:"performance",slot:"performance"},{label:`Test cases${Be.value!=null?` (${Be.value})`:""}`,icon:"i-lucide-list-checks",value:"test-cases",slot:"test-cases"},{label:"Compare",icon:"i-lucide-git-compare-arrows",value:"compare",slot:"compare"},{label:"Spec health",icon:"i-lucide-table-2",value:"spec-health",slot:"spec-health"},{label:`Timeline${C.value.length?` (${C.value.length})`:""}`,icon:"i-lucide-milestone",value:"timeline",slot:"timeline"},...v.value?[{label:"Members",icon:"i-lucide-users",value:"members",slot:"members"}]:[]]),ve=E(()=>ce.value.find(r=>r.value===K.value)?.icon),J=T([]),lt=r=>J.value.includes(r);function rt(r){const t=J.value.indexOf(r);if(t>=0)J.value.splice(t,1);else{if(J.value.length>=2){R.add({title:"Maximum 2 runs",description:"Select at most 2 runs to compare. Deselect one first.",color:"warning"});return}J.value.push(r)}}const Ue=T(null);function qe(){J.value.length===2&&(Ue.value=[J.value[0],J.value[1]],K.value="compare")}const W=T([]),ye=T(!0),ze=E(()=>{const r=new Set;for(const t of u.value?.testRuns||[])t.environment&&r.add(t.environment);return[...r].sort()});function it(r){const t=W.value.indexOf(r);t===-1?W.value.push(r):W.value.splice(t,1)}function Fe(r){return W.value.includes(r)}const Me=E(()=>{let r=u.value?.testRuns||[];return ye.value&&(r=r.filter(t=>t.isFullRun!==!1)),W.value.length===0?r:r.filter(t=>t.environment&&W.value.includes(t.environment))}),ct=E(()=>W.value.length===1?W.value[0]:void 0),{data:Ie,refresh:I}=([w,b]=$e(()=>Ce(`/api/projects/${g}/markers`,{default:()=>({markers:[]})},"$3gm0grYTFL")),w=await w,b(),w),C=E(()=>Ie.value?.markers??[]),ee=E(()=>!A.public.authEnabled||v.value||y.value),He=E(()=>W.value.length===0?C.value:C.value.filter(r=>r.environment==null||W.value.includes(r.environment))),Ee=T(null);function Ve(r){Ee.value=r,K.value="timeline"}const ut=E(()=>{const r=u.value?.testRuns||[];return ye.value?r.filter(t=>t.isFullRun!==!1):r});function Xe(r){if(r.isFullRun!==!1)return"Full run — the complete test suite ran";const t=[],U=r.filterDetails?.grep?.trim(),H=r.filterDetails?.grepInvert?.trim(),de=r.filterDetails?.files;return U&&U!==".*"&&t.push(`grep: ${U}`),H&&t.push(`grep-invert: ${H}`),de?.length&&t.push(`files: ${de.join(", ")}`),t.length?`Partial run — ${t.join(" · ")}`:"Partial run — only a filtered subset of tests ran (grep, file, or line filter)"}const Se=[{accessorKey:"select",header:""},{accessorKey:"id",header:V("Run")},{accessorKey:"status",header:V("Status")},{accessorKey:"isFullRun",header:"Scope"},{id:"browsers",accessorFn:r=>r.browsers,header:""},{accessorKey:"startTime",header:V("Started")},{accessorKey:"environment",header:V("Environment")},{accessorKey:"metadata",header:"Branch / Commit"},{accessorKey:"duration",header:V("Test status / Dur.")},{accessorKey:"reports",header:"Reports"},{id:"actions",header:"Actions"}],Be=T(null),N=T(""),X=T(""),dt=E(()=>{const r={};return N.value&&(r.from=N.value),X.value&&(r.to=X.value),r}),mt=T(null),pt=T(!1),De=T(null),gt=T(!1),Ge=T(!1),Zt=E(()=>pt.value&&mt.value===null);pe([K,dt,ye],async([r,t])=>{if(r!=="performance")return;pt.value=!0,De.value||(Ge.value=!0);const U=new URLSearchParams(t).toString(),H=ye.value?`${U?"&":""}fullRunsOnly=true`:"",de=U||H?`?${U}${H}`:"";mt.value=await $fetch(`/api/projects/${g}/performance${de}`).catch(me=>(console.warn("[PerformanceTab] Failed to fetch performance trend:",me),null)),pt.value=!1,Ge.value&&(gt.value=!1,De.value=await $fetch(`/api/projects/${g}/slow-tests`).catch(me=>(gt.value=!0,console.warn("[PerformanceTab] Failed to fetch slow tests:",me),null)),Ge.value=!1)},{immediate:!0});const es=[{accessorKey:"title",header:V("Test case")},{accessorKey:"avgDuration",header:V("Avg duration")},{accessorKey:"maxDuration",header:V("Max")},{accessorKey:"minDuration",header:V("Min")},{accessorKey:"latestDuration",header:V("Latest")},{accessorKey:"trend",header:V("Trend")},{accessorKey:"runCount",header:V("Runs")}];function ts(r){const t=nt(r.startTime,{dateOnly:!0}),U=r.metadata?.scm?.commit?` (${r.metadata.scm.commit.substring(0,7)})`:"";return`Run #${r.id} — ${t}${U}`}const le=E(()=>u.value?.testRuns?[...u.value.testRuns].reverse().map(r=>({label:ts(r),value:r.id})):[]),te=T(void 0),se=T(void 0),wt=E(()=>j.query.runA?Number(j.query.runA):null),jt=E(()=>j.query.runB?Number(j.query.runB):null);pe(le,r=>{if(wt.value){const t=r.find(U=>U.value===wt.value);t&&(te.value=t)}if(jt.value){const t=r.find(U=>U.value===jt.value);t&&(se.value=t)}},{immediate:!0}),pe(Ue,r=>{if(r){const t=le.value.find(H=>H.value===r[0]),U=le.value.find(H=>H.value===r[1]);t&&(te.value=t),U&&(se.value=U),Ue.value=null}});function Rt(){le.value.length>=2&&(te.value=le.value[1],se.value=le.value[0])}const ft=T(null),vt=T(null),Qe=T(!1);async function ss(){const r=te.value,t=se.value;if(!(!r?.value&&!t?.value)){Qe.value=!0;try{const U=[];r?.value&&U.push(r.value),t?.value&&U.push(t.value);const H=await Promise.all(U.map(me=>$fetch(`/api/test-runs/${me}/summary`))),de=new Map;for(const me of H)de.set(me.id,me);ft.value=r?.value?de.get(r.value)??null:null,vt.value=t?.value?de.get(t.value)??null:null}catch{ft.value=null,vt.value=null}finally{Qe.value=!1}}}pe([te,se],()=>{ss()});const{comparisonData:Ye,comparisonSummary:Q}=an(ft,vt),At=[{accessorKey:"title",header:V("Test case")},{accessorKey:"statusA",header:V("Status A")},{accessorKey:"statusB",header:V("Status B")},{accessorKey:"durationA",header:V("Duration A")},{accessorKey:"durationB",header:V("Duration B")},{accessorKey:"delta",header:V("Delta")},{accessorKey:"percentChange",header:V("Change")}];return(r,t)=>{const U=Ss,H=Ds,de=zn,me=Vs,ns=Ps,as=Kt,os=Re,ls=Ln,Ut=Ls,rs=Ks,we=Ke,ae=Te,is=Os,yt=Ne,cs=qs,us=Hs,ds=Xs,ms=Gs,Je=Oe,ps=Is,gs=Ae,Pe=ot,fs=Wn,vs=da,ys=wa,_t=Nt,zt=Wt,_s=Va,hs=Jt,We=Js,ne=Le,bs=Ws,xs=Ha,ks=Zs,$s=go,Cs=nn,Ts=Bs,Ft=Dt,Mt=Ct;return n(),i(Y,null,[l(Ts,{id:"project-detail"},{header:s(()=>[l(ns,null,{leading:s(()=>[l(U),l(H,{items:[{label:"Home",icon:"i-lucide-house",to:"/"},{label:"Projects",to:"/projects"},{label:e(u)?.label||e(u)?.name||"Project"}]},null,8,["items"])]),right:s(()=>[l(me,{size:"sm",actions:[...e(_)?[{label:"Delete",icon:"i-lucide-trash-2",color:"error",variant:"ghost",onClick:()=>{M.value="",f.value=!0}}]:[],{label:"Edit",icon:"i-lucide-pencil",variant:"outline",to:`/projects/${e(g)}/edit`},{label:"Refresh",icon:"i-lucide-refresh-cw",variant:"outline",onClick:()=>e(B)()}]},{leading:s(()=>[l(de,{"project-id":parseInt(e(g)),"project-label":e(u)?.label||e(u)?.name},null,8,["project-id","project-label"])]),_:1},8,["actions"])]),_:1})]),body:s(()=>[o("div",fo,[e(u)?.description||e(u)?.tags&&e(u).tags.length>0?(n(),i("div",vo,[e(u)?.description?(n(),i("p",yo,c(e(u).description),1)):S("",!0),e(u)?.tags&&e(u).tags.length>0?(n(),i("div",_o,[(n(!0),i(Y,null,ie(e(u).tags,a=>(n(),k(as,{key:a.id,text:a.text,color:a.color},null,8,["text","color"]))),128))])):S("",!0)])):S("",!0),l(os,{modelValue:e(K),"onUpdate:modelValue":t[0]||(t[0]=a=>G(K)?K.value=a:null),items:e(ce),icon:e(ve),size:"md",class:"w-full mx-1 mb-1 sm:hidden"},null,8,["modelValue","items","icon"]),l(Cs,{modelValue:e(K),"onUpdate:modelValue":t[14]||(t[14]=a=>G(K)?K.value=a:null),items:e(ce),size:"sm",class:"p-1",ui:{list:"max-sm:hidden overflow-x-auto",trigger:"shrink-0"}},{"test-runs":s(()=>[e(u)?.testRuns&&e(u).testRuns.length>0?(n(),k(Ut,{key:0,title:"Run trend",subtitle:`Test run statistics over time for ${e(u)?.label||e(u)?.name}`,help:"project.runs-trend"},{default:s(()=>[l(ls,{"test-runs":e(ut),height:200,markers:e(He),onMarkerClick:Ve},null,8,["test-runs","markers"])]),_:1},8,["subtitle"])):S("",!0),l(Pe,{class:"mt-4"},{default:s(()=>[o("div",ho,[o("div",bo,[l(rs,{modelValue:e(ye),"onUpdate:modelValue":t[1]||(t[1]=a=>G(ye)?ye.value=a:null),label:"Full runs only",ui:{label:"text-sm"}},null,8,["modelValue"]),l(we,{topic:"project.run-scope"})]),e(ze).length>0?(n(),i(Y,{key:0},[t[21]||(t[21]=o("span",{class:"text-sm text-muted shrink-0"},"Environment:",-1)),(n(!0),i(Y,null,ie(e(ze),a=>(n(),i("button",{key:a,type:"button",class:re(["text-xs font-medium px-2 py-1 rounded border cursor-pointer focus:outline-none transition-colors",Fe(a)?"bg-blue-600 text-white border-blue-600":"bg-blue-100 text-blue-800 dark:bg-blue-900 dark:text-blue-200 border-blue-300 dark:border-blue-700 hover:bg-blue-200 dark:hover:bg-blue-800"]),onClick:xe=>it(a)},c(a),11,xo))),128)),e(W).length>0?(n(),k(ae,{key:0,size:"xs",variant:"ghost",color:"neutral",icon:"i-lucide-x",label:"Clear filter",onClick:t[2]||(t[2]=a=>W.value=[])})):S("",!0)],64)):S("",!0)]),e(J).length>0?(n(),i("div",ko,[o("span",$o,c(e(J).length)+" run"+c(e(J).length>1?"s":"")+" selected ",1),e(J).length===2?(n(),k(ae,{key:0,icon:"i-lucide-git-compare-arrows",size:"sm",color:"primary",label:"Compare selected runs",onClick:qe})):(n(),i("span",Co," Select another run to compare ")),l(ae,{size:"xs",variant:"ghost",color:"neutral",icon:"i-lucide-x",label:"Clear",onClick:t[3]||(t[3]=a=>J.value=[])})])):S("",!0),e(Me).length>0?(n(),k(Je,{key:1,data:e(Me),columns:Se,ui:{base:"table-fixed border-separate border-spacing-0",thead:"[&>tr]:bg-elevated/50 [&>tr]:after:content-none",tbody:"[&>tr]:last:[&>td]:border-b-0",th:"first:rounded-l-lg last:rounded-r-lg border-y border-default first:border-l last:border-r",td:"border-b border-default"}},{"select-cell":s(({row:a})=>[o("input",{type:"checkbox",checked:lt(a.original.id),class:"cursor-pointer size-4 accent-primary",onClick:Vt(xe=>rt(a.original.id),["stop"])},null,8,To)]),"id-cell":s(({row:a})=>[o("div",So,[o("a",{href:`/test-runs/${a.original.id}`,class:"text-primary hover:underline font-medium",onClick:Vt(xe=>("navigateTo"in r?r.navigateTo:e($t))(`/test-runs/${a.original.id}`),["prevent"])}," Run #"+c(a.original.id),9,Do),a.original.label?(n(),i("span",wo,c(a.original.label),1)):S("",!0)])]),"status-cell":s(({row:a})=>[l(is,{status:a.original.status},null,8,["status"])]),"isFullRun-header":s(()=>[o("span",jo,[t[22]||(t[22]=p("Scope ",-1)),l(we,{topic:"run.partial"})])]),"isFullRun-cell":s(({row:a})=>[l(cs,{text:Xe(a.original)},{default:s(()=>[l(yt,{name:a.original.isFullRun===!1?"i-lucide-list-filter":"i-lucide-list-checks",class:re(["size-4 shrink-0 cursor-help",a.original.isFullRun===!1?"text-amber-500":"text-green-500"])},null,8,["name","class"])]),_:2},1032,["text"])]),"browsers-cell":s(({row:a})=>[a.original.browsers?.length?(n(),i("div",Ro,[(n(!0),i(Y,null,ie(a.original.browsers,xe=>(n(),k(us,{key:xe,browser:{projectName:xe},size:"sm"},null,8,["browser"]))),128))])):S("",!0)]),"startTime-cell":s(({row:a})=>[o("span",Ao,c(("prettyDateFormat"in r?r.prettyDateFormat:e(nt))(a.original.startTime)),1)]),"environment-cell":s(({row:a})=>[a.original.environment?(n(),i("span",Uo,c(a.original.environment),1)):S("",!0)]),"metadata-cell":s(({row:a})=>[a.original.metadata?.scm?(n(),i("div",zo,[a.original.metadata.scm.branch?(n(),i("span",Fo,c(a.original.metadata.scm.branch),1)):S("",!0),a.original.metadata.scm.commit?(n(),i("code",Mo,c(a.original.metadata.scm.commit.substring(0,7)),1)):S("",!0)])):S("",!0)]),"duration-cell":s(({row:a})=>[o("div",Io,[l(ds,{passed:a.original.passedTests,failed:a.original.failedTests,skipped:a.original.skippedTests,flaky:a.original.flakyTests,"did-not-run":a.original.didNotRunTests??0,total:a.original.totalTests},null,8,["passed","failed","skipped","flaky","did-not-run","total"]),o("span",Eo,c(("formatDuration"in r?r.formatDuration:e(ke))(a.original.duration)),1)])]),"reports-cell":s(({row:a})=>[l(ms,{reports:a.original.reports},null,8,["reports"])]),"actions-header":s(()=>[...t[23]||(t[23]=[o("div",{class:"text-right"},"Actions",-1)])]),"actions-cell":s(({row:a})=>[o("div",Vo,[l(ae,{to:`/test-runs/${a.original.id}`,size:"sm",variant:"outline"},{default:s(()=>[...t[24]||(t[24]=[p(" View ",-1)])]),_:1},8,["to"]),l(ae,{size:"sm",color:"error",variant:"soft",icon:"i-lucide-trash-2",loading:e(F)===a.original.id,onClick:xe=>D.value=a.original.id},{default:s(()=>[...t[25]||(t[25]=[p(" Delete ",-1)])]),_:1},8,["loading","onClick"])])]),_:1},8,["data"])):e(u)?.testRuns&&e(u).testRuns.length>0?(n(),i("div",Bo," No test runs match the selected environment filter. ")):(n(),k(gs,{key:3,icon:"i-lucide-rocket",text:"No test runs yet for this project."},{default:s(()=>[o("p",Po,[t[27]||(t[27]=p(" Point the reporter's ",-1)),t[28]||(t[28]=o("code",{class:"bg-gray-100 dark:bg-gray-800 px-1 rounded"},"projectName",-1)),t[29]||(t[29]=p(" at ",-1)),o("code",No,c(e(u)?.name),1),t[30]||(t[30]=p(" to send results here — see the ",-1)),l(ps,{to:"reporter","no-icon":"",class:"text-primary hover:underline"},{default:s(()=>[...t[26]||(t[26]=[p("reporter docs",-1)])]),_:1}),t[31]||(t[31]=p(" for setup instructions. ",-1))])]),_:1}))]),_:1})]),"failure-clusters":s(()=>[e(K)==="failure-clusters"?(n(),i(Y,{key:0},[(n(),k(fs,{key:`sug-${e(oe)}`,"project-id":String(e(g)),onMerged:t[4]||(t[4]=a=>oe.value++)},null,8,["project-id"])),(n(),k(vs,{key:e(oe),"project-id":String(e(g))},null,8,["project-id"]))],64)):S("",!0)]),"flaky-tests":s(()=>[e(K)==="flaky-tests"?(n(),k(ys,{key:0,"project-id":String(e(g)),environment:e(ct),"project-name":e(u)?.name},null,8,["project-id","environment","project-name"])):S("",!0)]),performance:s(()=>[o("div",Lo,[t[32]||(t[32]=o("span",{class:"text-sm text-muted shrink-0"},"Date range:",-1)),l(_t,{modelValue:e(N),"onUpdate:modelValue":t[5]||(t[5]=a=>G(N)?N.value=a:null),type:"date",size:"sm",placeholder:"From",class:"w-40"},null,8,["modelValue"]),t[33]||(t[33]=o("span",{class:"text-sm text-muted"},"to",-1)),l(_t,{modelValue:e(X),"onUpdate:modelValue":t[6]||(t[6]=a=>G(X)?X.value=a:null),type:"date",size:"sm",placeholder:"To",class:"w-40"},null,8,["modelValue"]),e(N)||e(X)?(n(),k(ae,{key:0,size:"xs",variant:"ghost",color:"neutral",icon:"i-lucide-x",label:"Clear",onClick:t[7]||(t[7]=a=>{N.value="",X.value=""})})):S("",!0)]),l(Ut,{title:"Performance trend",subtitle:"Duration metrics over time",help:"project.performance"},{default:s(()=>[e(Zt)?(n(),k(zt,{key:0,text:"Loading chart…"})):(n(),k(_s,{key:1,data:e(mt)||[],height:350,markers:e(He),onMarkerClick:Ve},null,8,["data","markers"]))]),_:1}),l(Pe,null,{header:s(()=>[o("h2",Ko,[t[34]||(t[34]=p(" Slowest tests ",-1)),l(we,{topic:"project.slowest-tests"})]),t[35]||(t[35]=o("p",{class:"text-sm text-gray-600 mt-1"},"Top 20 slowest test cases across recent runs",-1))]),default:s(()=>[e(Ge)&&e(De)===null?(n(),k(zt,{key:0,text:"Loading…"})):e(De)&&e(De).length>0?(n(),k(Je,{key:1,data:e(De),columns:es,ui:{base:"table-fixed border-separate border-spacing-0",thead:"[&>tr]:bg-elevated/50 [&>tr]:after:content-none",tbody:"[&>tr]:last:[&>td]:border-b-0",th:"first:rounded-l-lg last:rounded-r-lg border-y border-default first:border-l last:border-r",td:"border-b border-default"}},{"title-cell":s(({row:a})=>[o("div",null,[o("div",Oo,c(a.original.title),1),o("div",qo,[l(hs,{"file-path":a.original.filePath,"project-key":e(g),"project-name":e(u)?.name,class:"text-xs"},null,8,["file-path","project-key","project-name"])])])]),"trend-cell":s(({row:a})=>[a.original.trend==="slower"?(n(),i("span",Ho,"▲ Slower")):a.original.trend==="faster"?(n(),i("span",Xo,"▼ Faster")):(n(),i("span",Go,"— Stable"))]),_:1},8,["data"])):e(gt)?(n(),i("div",Qo," Couldn't load the slowest tests — try refreshing. ")):(n(),i("div",Yo,"No slow test data available yet."))]),_:1}),l(Pe,null,{header:s(()=>[o("div",Jo,[o("div",null,[o("h2",Wo,[t[36]||(t[36]=p(" Run comparison ",-1)),l(we,{topic:"project.run-compare"})]),t[37]||(t[37]=o("p",{class:"text-sm text-gray-600 mt-1"},"Compare duration changes between two runs",-1))]),e(le).length>=2?(n(),k(ae,{key:0,icon:"i-lucide-git-compare-arrows",size:"sm",variant:"outline",label:"Compare latest vs previous",onClick:Rt})):S("",!0)])]),default:s(()=>[o("div",Zo,[o("div",el,[o("div",null,[t[38]||(t[38]=o("label",{class:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1"},"Run A (baseline)",-1)),l(We,{modelValue:e(te),"onUpdate:modelValue":t[8]||(t[8]=a=>G(te)?te.value=a:null),items:e(le),placeholder:"Select run A..."},null,8,["modelValue","items"])]),o("div",null,[t[39]||(t[39]=o("label",{class:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1"},"Run B (comparison)",-1)),l(We,{modelValue:e(se),"onUpdate:modelValue":t[9]||(t[9]=a=>G(se)?se.value=a:null),items:e(le),placeholder:"Select run B..."},null,8,["modelValue","items"])])]),e(Qe)?(n(),i("div",tl,[l(yt,{name:"i-lucide-loader-2",class:"animate-spin mr-2"}),t[40]||(t[40]=p(" Loading run data… ",-1))])):e(te)&&e(se)&&e(Ye).length>0?(n(),i("div",sl,[o("div",nl,[l(ne,{color:"success",variant:"soft",size:"lg"},{default:s(()=>[p(c(e(Q).improved)+" improved",1)]),_:1}),l(ne,{color:"error",variant:"soft",size:"lg"},{default:s(()=>[p(c(e(Q).regressed)+" regressed",1)]),_:1}),l(ne,{color:"neutral",variant:"soft",size:"lg"},{default:s(()=>[p(c(e(Q).unchanged)+" unchanged",1)]),_:1})]),l(Je,{data:e(Ye),columns:At,ui:{base:"table-fixed border-separate border-spacing-0",thead:"[&>tr]:bg-elevated/50 [&>tr]:after:content-none",tbody:"[&>tr]:last:[&>td]:border-b-0",th:"first:rounded-l-lg last:rounded-r-lg border-y border-default first:border-l last:border-r",td:"border-b border-default"}},{"statusA-cell":s(({row:a})=>[a.original.statusA?(n(),k(ne,{key:1,color:("getStatusColor"in r?r.getStatusColor:e(Ze))(a.original.statusA),class:"capitalize"},{default:s(()=>[p(c(a.original.statusA),1)]),_:2},1032,["color"])):(n(),i("span",al,"—"))]),"statusB-cell":s(({row:a})=>[a.original.statusB?(n(),k(ne,{key:1,color:("getStatusColor"in r?r.getStatusColor:e(Ze))(a.original.statusB),class:"capitalize"},{default:s(()=>[p(c(a.original.statusB),1)]),_:2},1032,["color"])):(n(),i("span",ol,"—"))]),"durationA-cell":s(({row:a})=>[a.original.durationA!==null?(n(),i("span",ll,c(("formatDuration"in r?r.formatDuration:e(ke))(a.original.durationA)),1)):(n(),i("span",rl,"—"))]),"durationB-cell":s(({row:a})=>[a.original.durationB!==null?(n(),i("span",il,c(("formatDuration"in r?r.formatDuration:e(ke))(a.original.durationB)),1)):(n(),i("span",cl,"—"))]),"delta-cell":s(({row:a})=>[a.original.delta===null?(n(),i("span",ul,"—")):(n(),i("span",{key:1,class:re(a.original.delta>0?"text-red-600":a.original.delta<0?"text-green-600":"text-gray-500")},c(a.original.delta>0?"+":"")+c(("formatDuration"in r?r.formatDuration:e(ke))(a.original.delta)),3))]),"percentChange-cell":s(({row:a})=>[a.original.percentChange===null?(n(),i("span",dl,"—")):(n(),i("span",{key:1,class:re(a.original.percentChange>10?"text-red-600 font-medium":a.original.percentChange<-10?"text-green-600 font-medium":"text-gray-500")},c(a.original.percentChange>0?"+":"")+c(a.original.percentChange)+"% ",3))]),_:1},8,["data"])])):!e(te)||!e(se)?(n(),i("div",ml," Select two runs to compare their performance. ")):(n(),i("div",pl," No overlapping test cases found between the selected runs. "))])]),_:1})]),"test-cases":s(()=>[l(bs,{"project-id":e(g),"project-name":e(u)?.name,"sync-query":"",onTotal:t[10]||(t[10]=a=>Be.value=a)},null,8,["project-id","project-name"])]),compare:s(()=>[l(Pe,null,{header:s(()=>[o("div",gl,[o("p",fl,[t[41]||(t[41]=p(" Compare two test runs side-by-side — status changes and duration deltas ",-1)),l(we,{topic:"project.compare"})]),e(le).length>=2?(n(),k(ae,{key:0,icon:"i-lucide-git-compare-arrows",size:"sm",variant:"outline",label:"Latest vs previous",onClick:Rt})):S("",!0)])]),default:s(()=>[o("div",vl,[o("div",yl,[o("div",null,[t[42]||(t[42]=o("label",{class:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1"},"Run A (baseline)",-1)),l(We,{modelValue:e(te),"onUpdate:modelValue":t[11]||(t[11]=a=>G(te)?te.value=a:null),items:e(le),placeholder:"Select run A..."},null,8,["modelValue","items"])]),o("div",null,[t[43]||(t[43]=o("label",{class:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1"},"Run B (comparison)",-1)),l(We,{modelValue:e(se),"onUpdate:modelValue":t[12]||(t[12]=a=>G(se)?se.value=a:null),items:e(le),placeholder:"Select run B..."},null,8,["modelValue","items"])])]),e(Qe)?(n(),i("div",_l,[l(yt,{name:"i-lucide-loader-2",class:"animate-spin mr-2"}),t[44]||(t[44]=p(" Loading run data… ",-1))])):e(te)&&e(se)&&e(Ye).length>0?(n(),i("div",hl,[o("div",bl,[o("div",xl,[t[45]||(t[45]=o("span",{class:"text-xs font-semibold text-gray-500 uppercase tracking-wider mr-1"},"Status changes",-1)),e(Q).newFailures>0?(n(),k(ne,{key:0,color:"error",variant:"soft",size:"lg"},{default:s(()=>[p(c(e(Q).newFailures)+" new failure"+c(e(Q).newFailures>1?"s":""),1)]),_:1})):S("",!0),e(Q).recovered>0?(n(),k(ne,{key:1,color:"success",variant:"soft",size:"lg"},{default:s(()=>[p(c(e(Q).recovered)+" recovered ",1)]),_:1})):S("",!0),e(Q).stillFailing>0?(n(),k(ne,{key:2,color:"warning",variant:"soft",size:"lg"},{default:s(()=>[p(c(e(Q).stillFailing)+" still failing ",1)]),_:1})):S("",!0),e(Q).newFailures===0&&e(Q).recovered===0&&e(Q).stillFailing===0?(n(),i("span",kl,"No status changes")):S("",!0)]),o("div",$l,[t[46]||(t[46]=o("span",{class:"text-xs font-semibold text-gray-500 uppercase tracking-wider mr-1"},"Duration changes",-1)),e(Q).regressed>0?(n(),k(ne,{key:0,color:"error",variant:"soft",size:"lg"},{default:s(()=>[p(c(e(Q).regressed)+" regressed ",1)]),_:1})):S("",!0),e(Q).improved>0?(n(),k(ne,{key:1,color:"success",variant:"soft",size:"lg"},{default:s(()=>[p(c(e(Q).improved)+" improved ",1)]),_:1})):S("",!0),l(ne,{color:"neutral",variant:"soft",size:"lg"},{default:s(()=>[p(c(e(Q).unchanged)+" unchanged ",1)]),_:1})])]),l(Je,{data:e(Ye),columns:At,ui:{base:"table-fixed border-separate border-spacing-0",thead:"[&>tr]:bg-elevated/50 [&>tr]:after:content-none",tbody:"[&>tr]:last:[&>td]:border-b-0",th:"first:rounded-l-lg last:rounded-r-lg border-y border-default first:border-l last:border-r",td:"border-b border-default"}},{"statusA-cell":s(({row:a})=>[a.original.statusA?(n(),k(ne,{key:1,color:("getStatusColor"in r?r.getStatusColor:e(Ze))(a.original.statusA),class:"capitalize"},{default:s(()=>[p(c(a.original.statusA),1)]),_:2},1032,["color"])):(n(),i("span",Cl,"—"))]),"statusB-cell":s(({row:a})=>[a.original.statusB?(n(),k(ne,{key:1,color:("getStatusColor"in r?r.getStatusColor:e(Ze))(a.original.statusB),class:"capitalize"},{default:s(()=>[p(c(a.original.statusB),1)]),_:2},1032,["color"])):(n(),i("span",Tl,"—"))]),"durationA-cell":s(({row:a})=>[a.original.durationA!==null?(n(),i("span",Sl,c(("formatDuration"in r?r.formatDuration:e(ke))(a.original.durationA)),1)):(n(),i("span",Dl,"—"))]),"durationB-cell":s(({row:a})=>[a.original.durationB!==null?(n(),i("span",wl,c(("formatDuration"in r?r.formatDuration:e(ke))(a.original.durationB)),1)):(n(),i("span",jl,"—"))]),"delta-cell":s(({row:a})=>[a.original.delta===null?(n(),i("span",Rl,"—")):(n(),i("span",{key:1,class:re(a.original.delta>0?"text-red-600":a.original.delta<0?"text-green-600":"text-gray-500")},c(a.original.delta>0?"+":"")+c(("formatDuration"in r?r.formatDuration:e(ke))(a.original.delta)),3))]),"percentChange-cell":s(({row:a})=>[a.original.percentChange===null?(n(),i("span",Al,"—")):(n(),i("span",{key:1,class:re(a.original.percentChange>10?"text-red-600 font-medium":a.original.percentChange<-10?"text-green-600 font-medium":"text-gray-500")},c(a.original.percentChange>0?"+":"")+c(a.original.percentChange)+"% ",3))]),_:1},8,["data"])])):!e(te)||!e(se)?(n(),i("div",Ul," Select two runs to compare test results. ")):(n(),i("div",zl," No overlapping test cases found between the selected runs. "))])]),_:1})]),"spec-health":s(()=>[l(xs,{"project-id":String(e(g))},null,8,["project-id"])]),members:s(()=>[l(Pe,null,{header:s(()=>[o("div",Fl,[o("p",Ml,[t[47]||(t[47]=p(" Users with access to this project ",-1)),l(we,{topic:"project.members"})]),l(ae,{label:"Save changes",icon:"i-lucide-check",size:"sm",disabled:!e(_e),onClick:m},null,8,["disabled"])])]),default:s(()=>[e(P).length>0?(n(),i("div",Il,[(n(!0),i(Y,null,ie(e(P),a=>(n(),i("div",{key:a.id,class:"flex items-center justify-between rounded-lg border border-default px-4 py-3"},[o("div",null,[o("div",El,c(a.name||a.username),1),o("div",Vl,[o("span",null,"@"+c(a.username),1),l(ne,{color:a.role==="administrator"?"primary":a.role==="reporter"?"info":"neutral",variant:"subtle",size:"xs"},{default:s(()=>[p(c(a.role),1)]),_:2},1032,["color"]),a.global?(n(),i("span",Bl,"Global access")):S("",!0)])]),a.role!=="administrator"?(n(),k(ks,{key:0,"model-value":e(O).includes(a.id),disabled:a.global,title:a.global?"Has global access — remove global assignment first":"",onChange:xe=>he(a.id)},null,8,["model-value","disabled","title","onChange"])):(n(),i("span",Pl,"Admin"))]))),128))])):(n(),i("div",Nl,"Loading members…"))]),_:1})]),timeline:s(()=>[l($s,{"project-id":Number(e(g)),markers:e(C),environments:e(ze),"can-edit":e(ee),"focus-marker-id":e(Ee),onChanged:e(I),onClearFocus:t[13]||(t[13]=a=>Ee.value=null)},null,8,["project-id","markers","environments","can-edit","focus-marker-id","onChanged"])]),_:1},8,["modelValue","items"])])]),_:1}),l(Mt,null,{default:s(()=>[l(Ft,{open:e(f),title:"Delete project","onUpdate:open":t[17]||(t[17]=a=>{a||(f.value=!1)})},{body:s(()=>[o("div",Ll,[o("p",Kl,[t[48]||(t[48]=p(" This will permanently delete ",-1)),o("strong",null,c(e(u)?.label||e(u)?.name),1),t[49]||(t[49]=p(" and all its test runs, reports, traces, and failure clusters. This action cannot be undone. ",-1))]),o("div",null,[o("label",Ol,[t[50]||(t[50]=p(" Type the project key ",-1)),o("code",ql,c(e(u)?.name),1),t[51]||(t[51]=p(" to confirm: ",-1))]),l(_t,{modelValue:e(M),"onUpdate:modelValue":t[15]||(t[15]=a=>G(M)?M.value=a:null),placeholder:e(u)?.name,autofocus:"",onKeydown:zs($,["enter"])},null,8,["modelValue","placeholder"])])])]),footer:s(()=>[l(ae,{color:"neutral",variant:"ghost",label:"Cancel",onClick:t[16]||(t[16]=a=>f.value=!1)}),l(ae,{color:"error",label:"Delete project",icon:"i-lucide-trash-2",disabled:!e(x),loading:e(L),onClick:$},null,8,["disabled","loading"])]),_:1},8,["open"])]),_:1}),l(Mt,null,{default:s(()=>[l(Ft,{open:e(D)!==null,title:"Delete test run","onUpdate:open":t[20]||(t[20]=a=>{a||(D.value=null)})},{body:s(()=>[o("p",null,[t[52]||(t[52]=p(" Are you sure you want to delete ",-1)),o("strong",null,"Run #"+c(e(D)),1),t[53]||(t[53]=p("? This will also remove all associated test results, reports, and traces. This action cannot be undone. ",-1))])]),footer:s(()=>[l(ae,{color:"neutral",variant:"ghost",label:"Cancel",onClick:t[18]||(t[18]=a=>D.value=null)}),l(ae,{color:"error",label:"Delete",icon:"i-lucide-trash-2",loading:e(F)===e(D),onClick:t[19]||(t[19]=a=>d(e(D)))},null,8,["loading"])]),_:1},8,["open"])]),_:1})],64)}}});export{Gr as default};
@@ -1 +0,0 @@
1
- import{as as o}from"./B8fs6GU9.js";function n(){const e=o()?.vnode?.scopeId;return e?{[e]:""}:{}}export{n as u};
@@ -1 +0,0 @@
1
- {"id":"f549de31-8db6-4504-b526-482778a55eba","timestamp":1784481462428,"prerendered":[]}