@piwitests/server 0.18.2 → 0.20.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 (783) hide show
  1. package/.output/nitro.json +1 -1
  2. package/.output/public/_nuxt/{Dwws9U0D.js → -f7BAm1H.js} +1 -1
  3. package/.output/public/_nuxt/{BjCHB89N.js → 4gYNA-d4.js} +1 -1
  4. package/.output/public/_nuxt/5A6ITZXj.js +1 -0
  5. package/.output/public/_nuxt/8PUUncmO.js +44 -0
  6. package/.output/public/_nuxt/A1pj0VnG.js +1 -0
  7. package/.output/public/_nuxt/{DZ3Vfcpz.js → AbmKWFQQ.js} +1 -1
  8. package/.output/public/_nuxt/B3obW6cw.js +3 -0
  9. package/.output/public/_nuxt/{QmMoMxLM.js → B7FTvFWq.js} +3 -3
  10. package/.output/public/_nuxt/{DXbPFI1d.js → B8zkOmwo.js} +1 -1
  11. package/.output/public/_nuxt/B96M2gdj.js +1 -0
  12. package/.output/public/_nuxt/{BFP6M-20.js → B99fbi73.js} +1 -1
  13. package/.output/public/_nuxt/{DD5HpaW9.js → B9OLmp0f.js} +1 -1
  14. package/.output/public/_nuxt/BKkF4pPD.js +1 -0
  15. package/.output/public/_nuxt/BT3wGCTI.js +1 -0
  16. package/.output/public/_nuxt/BUa0V0Ly.js +1 -0
  17. package/.output/public/_nuxt/BUkim3TM.js +1 -0
  18. package/.output/public/_nuxt/BVc14Ncz.js +4 -0
  19. package/.output/public/_nuxt/BY0HxR3t.js +17 -0
  20. package/.output/public/_nuxt/B_xAMWQS.js +2 -0
  21. package/.output/public/_nuxt/BdQoBaOv.js +1 -0
  22. package/.output/public/_nuxt/{Cng9gj7q.js → BdfhYr-u.js} +1 -1
  23. package/.output/public/_nuxt/BgRu_3tT.js +1 -0
  24. package/.output/public/_nuxt/{BBK2-Krn.js → BiO7RBWb.js} +2 -2
  25. package/.output/public/_nuxt/BicAJ6U8.js +1 -0
  26. package/.output/public/_nuxt/BjaRappk.js +1 -0
  27. package/.output/public/_nuxt/Bm62iDV5.js +1 -0
  28. package/.output/public/_nuxt/{C9YzQCiq.js → BmUfSNMV.js} +1 -1
  29. package/.output/public/_nuxt/Bnxf8nbZ.js +1 -0
  30. package/.output/public/_nuxt/{CsUoYK75.js → Bow4tTR0.js} +1 -1
  31. package/.output/public/_nuxt/{B2oUeBbA.js → BrQEE053.js} +1 -1
  32. package/.output/public/_nuxt/BzRRzmwm.js +1 -0
  33. package/.output/public/_nuxt/{CN1mJlvD.js → C0_yH0N7.js} +1 -1
  34. package/.output/public/_nuxt/C1gTN4Q8.js +1 -0
  35. package/.output/public/_nuxt/{CNMoZYMv.js → C2hkrSey.js} +1 -1
  36. package/.output/public/_nuxt/{rTvJTef_.js → C8e1EbJI.js} +1 -1
  37. package/.output/public/_nuxt/CA9B2HE5.js +1 -0
  38. package/.output/public/_nuxt/{oFM1KLWA.js → CAAwCT7H.js} +1 -1
  39. package/.output/public/_nuxt/{qpI-_f9Q.js → CAvY22RE.js} +1 -1
  40. package/.output/public/_nuxt/{BLIRKrbM.js → CEfS4-oS.js} +4 -4
  41. package/.output/public/_nuxt/CIoSMkpp.js +1 -0
  42. package/.output/public/_nuxt/{hH1UFE3Z.js → CIrFl3MW.js} +1 -1
  43. package/.output/public/_nuxt/CJFtzlQ4.js +1 -0
  44. package/.output/public/_nuxt/{hgHc4teu.js → CNyV9YpI.js} +1 -1
  45. package/.output/public/_nuxt/CSJ-eOQM.js +1 -0
  46. package/.output/public/_nuxt/CTU1mrhq.js +1 -0
  47. package/.output/public/_nuxt/CXEH9OPk.js +1 -0
  48. package/.output/public/_nuxt/CahpB9Z2.js +5 -0
  49. package/.output/public/_nuxt/{C8OCrfDP.js → Cbh--1MW.js} +1 -1
  50. package/.output/public/_nuxt/CeG9pBAD.js +1 -0
  51. package/.output/public/_nuxt/{DBtBvrYc.js → CeW8v31b.js} +1 -1
  52. package/.output/public/_nuxt/{DZUgX70W.js → CjPfj7ya.js} +1 -1
  53. package/.output/public/_nuxt/Cnsmicv2.js +79 -0
  54. package/.output/public/_nuxt/CsLojMwR.js +1 -0
  55. package/.output/public/_nuxt/{BXY_PWcx.js → Cus22Ud3.js} +2 -2
  56. package/.output/public/_nuxt/{4TxgDGVa.js → CwGWJbiy.js} +1 -1
  57. package/.output/public/_nuxt/Cx6gc2VW.js +1 -0
  58. package/.output/public/_nuxt/{B1X__ilH.js → CxyAzHr3.js} +1 -1
  59. package/.output/public/_nuxt/{BJtlcTrb.js → CzAPFPpL.js} +1 -1
  60. package/.output/public/_nuxt/D--H4jLI.js +1 -0
  61. package/.output/public/_nuxt/D-c8ZSws.js +1 -0
  62. package/.output/public/_nuxt/D1POo6S4.js +10 -0
  63. package/.output/public/_nuxt/D5tke0B5.js +1 -0
  64. package/.output/public/_nuxt/D8nkF-OO.js +3 -0
  65. package/.output/public/_nuxt/DA25RkyK.js +1 -0
  66. package/.output/public/_nuxt/{DZ1zNBVM.js → DIB-5fUJ.js} +1 -1
  67. package/.output/public/_nuxt/DJmoLeVt.js +1 -0
  68. package/.output/public/_nuxt/DJxlKFGb.js +1 -0
  69. package/.output/public/_nuxt/DMec-OLo.js +1 -0
  70. package/.output/public/_nuxt/DPCxhHri.js +1 -0
  71. package/.output/public/_nuxt/{By4YL7mx.js → DSqHUrvO.js} +1 -1
  72. package/.output/public/_nuxt/DabzhQB1.js +1 -0
  73. package/.output/public/_nuxt/{D5oNv2cB.js → DdwHkKfV.js} +1 -1
  74. package/.output/public/_nuxt/{CfOLBbW9.js → DeY2JkR2.js} +1 -1
  75. package/.output/public/_nuxt/{CPLJeOCb.js → DfgOx_ou.js} +1 -1
  76. package/.output/public/_nuxt/DmkUdSS4.js +1 -0
  77. package/.output/public/_nuxt/{CUvGJXY3.js → DoIREDVb.js} +1 -1
  78. package/.output/public/_nuxt/DpZ1r1HA.js +1 -0
  79. package/.output/public/_nuxt/{BOCwBVnz.js → Dpd16JVI.js} +1 -1
  80. package/.output/public/_nuxt/DqcKngf3.js +1 -0
  81. package/.output/public/_nuxt/{xqiPI_FQ.js → DrfE8IY0.js} +1 -1
  82. package/.output/public/_nuxt/{BeFDVhpA.js → DsesNydr.js} +1 -1
  83. package/.output/public/_nuxt/{D0cnIs93.js → DtHJgCS8.js} +1 -1
  84. package/.output/public/_nuxt/Dtd4rC58.js +9 -0
  85. package/.output/public/_nuxt/Du2W7Jne.js +254 -0
  86. package/.output/public/_nuxt/DuwtTfO8.js +2 -0
  87. package/.output/public/_nuxt/Dy-TJ0Mt.js +1 -0
  88. package/.output/public/_nuxt/{BlnwU1OO.js → Dy86h-7P.js} +1 -1
  89. package/.output/public/_nuxt/{B-IcwqZ2.js → Dyeqn3aG.js} +1 -1
  90. package/.output/public/_nuxt/{BlA8mIS-.js → FaFoMVKo.js} +1 -1
  91. package/.output/public/_nuxt/GPNI1ffD.js +4 -0
  92. package/.output/public/_nuxt/{DWowvnwc.js → H94BMf3L.js} +1 -1
  93. package/.output/public/_nuxt/HPNQD6v3.js +1 -0
  94. package/.output/public/_nuxt/HXadJrHu.js +2 -0
  95. package/.output/public/_nuxt/KyA_4Ks-.js +1 -0
  96. package/.output/public/_nuxt/{e7zD3uJ0.js → L3kAWB2a.js} +1 -1
  97. package/.output/public/_nuxt/McL25vkx.js +34 -0
  98. package/.output/public/_nuxt/Nn93e_Mz.js +1 -0
  99. package/.output/public/_nuxt/TagBadge.By1E6r4y.css +1 -0
  100. package/.output/public/_nuxt/UdR3DBPS.js +1 -0
  101. package/.output/public/_nuxt/Und3xXFc.js +5 -0
  102. package/.output/public/_nuxt/_mj6CfPa.js +1 -0
  103. package/.output/public/_nuxt/b-GYfcrQ.js +1 -0
  104. package/.output/public/_nuxt/bLcjFslv.js +1 -0
  105. package/.output/public/_nuxt/builds/latest.json +1 -1
  106. package/.output/public/_nuxt/builds/meta/e659b3e1-0e61-4971-940e-10063f9f4763.json +1 -0
  107. package/.output/public/_nuxt/entry.DmptwB51.css +1 -0
  108. package/.output/public/_nuxt/{wHnZ9OaL.js → hC_z4G8p.js} +1 -1
  109. package/.output/public/_nuxt/{DZOS7Fh7.js → hNh4CIL0.js} +1 -1
  110. package/.output/public/_nuxt/{kjYMoWWx.js → l5WKbU4h.js} +3 -3
  111. package/.output/public/_nuxt/oAClCn_h.js +1 -0
  112. package/.output/public/_nuxt/{gnCL8GjZ.js → pQqGiNch.js} +1 -1
  113. package/.output/public/_nuxt/ryMzSDUj.js +2 -0
  114. package/.output/public/demo/seed.version.json +2 -2
  115. package/.output/server/chunks/_/ai-prompt-preview.mjs +38 -0
  116. package/.output/server/chunks/_/ai-prompt-preview.mjs.map +1 -0
  117. package/.output/server/chunks/_/collect.mjs +122 -0
  118. package/.output/server/chunks/_/collect.mjs.map +1 -0
  119. package/.output/server/chunks/_/markers.mjs +1 -1
  120. package/.output/server/chunks/_/quarantine.mjs +112 -0
  121. package/.output/server/chunks/_/quarantine.mjs.map +1 -0
  122. package/.output/server/chunks/_/users.mjs +1 -1
  123. package/.output/server/chunks/build/{Alert-Bp1Wz_sq.mjs → Alert-C4xq8lao.mjs} +2 -2
  124. package/.output/server/chunks/build/Alert-C4xq8lao.mjs.map +1 -0
  125. package/.output/server/chunks/build/{Breadcrumb-C9ZPTLym.mjs → Breadcrumb-Ak2Lg3oM.mjs} +3 -3
  126. package/.output/server/chunks/build/Breadcrumb-Ak2Lg3oM.mjs.map +1 -0
  127. package/.output/server/chunks/build/{BreadcrumbNav-C3y42Vun.mjs → BreadcrumbNav-DO7I_z-n.mjs} +3 -3
  128. package/.output/server/chunks/build/BreadcrumbNav-DO7I_z-n.mjs.map +1 -0
  129. package/.output/server/chunks/build/{BrowserBadge-DNCp9pF-.mjs → BrowserBadge-MFvBwxmD.mjs} +67 -7
  130. package/.output/server/chunks/build/BrowserBadge-MFvBwxmD.mjs.map +1 -0
  131. package/.output/server/chunks/build/{ChartCard-Fr557IbV.mjs → ChartCard-Y1UKwMsf.mjs} +2 -2
  132. package/.output/server/chunks/build/ChartCard-Y1UKwMsf.mjs.map +1 -0
  133. package/.output/server/chunks/build/{Checkbox-cVOSIY93.mjs → Checkbox-4Q5d0fa0.mjs} +8 -8
  134. package/.output/server/chunks/build/Checkbox-4Q5d0fa0.mjs.map +1 -0
  135. package/.output/server/chunks/build/CiEnvCard-DB5DvBh1.mjs +1492 -0
  136. package/.output/server/chunks/build/CiEnvCard-DB5DvBh1.mjs.map +1 -0
  137. package/.output/server/chunks/build/{CodeBlock-BGwNmJ8J.mjs → CodeBlock-BgE-NSmE.mjs} +7 -22
  138. package/.output/server/chunks/build/CodeBlock-BgE-NSmE.mjs.map +1 -0
  139. package/.output/server/chunks/build/{DashboardNavbar-Bdp-OwTN.mjs → DashboardNavbar-BHmMSPX7.mjs} +3 -3
  140. package/.output/server/chunks/build/DashboardNavbar-BHmMSPX7.mjs.map +1 -0
  141. package/.output/server/chunks/build/{DashboardSidebarToggle-Ji6ADuqF.mjs → DashboardSidebarToggle-DCTnHiIv.mjs} +3 -3
  142. package/.output/server/chunks/build/DashboardSidebarToggle-DCTnHiIv.mjs.map +1 -0
  143. package/.output/server/chunks/build/{DataLocationCard-D6xSOrme.mjs → DataLocationCard-B_YHdzSz.mjs} +3 -3
  144. package/.output/server/chunks/build/DataLocationCard-B_YHdzSz.mjs.map +1 -0
  145. package/.output/server/chunks/build/{DiagnosisPanel-DV1xwGu4.mjs → DiagnosisPanel-CALyEmcJ.mjs} +17 -528
  146. package/.output/server/chunks/build/DiagnosisPanel-CALyEmcJ.mjs.map +1 -0
  147. package/.output/server/chunks/build/DurationValue-D20oGbnc.mjs +43 -0
  148. package/.output/server/chunks/build/DurationValue-D20oGbnc.mjs.map +1 -0
  149. package/.output/server/chunks/build/{EmptyState-DV3oT_xz.mjs → EmptyState-DC2q_7TD.mjs} +3 -3
  150. package/.output/server/chunks/build/EmptyState-DC2q_7TD.mjs.map +1 -0
  151. package/.output/server/chunks/build/{EntityLinks-DeOP13Kr.mjs → EntityLinks-BBHWssHH.mjs} +6 -6
  152. package/.output/server/chunks/build/EntityLinks-BBHWssHH.mjs.map +1 -0
  153. package/.output/server/chunks/build/{EnvManagedBadge-Qpn58Nmr.mjs → EnvManagedBadge-UwD2b9v2.mjs} +3 -3
  154. package/.output/server/chunks/build/EnvManagedBadge-UwD2b9v2.mjs.map +1 -0
  155. package/.output/server/chunks/build/{FormField-B-GSn_VR.mjs → FormField-B0HKsdMd.mjs} +3 -3
  156. package/.output/server/chunks/build/FormField-B0HKsdMd.mjs.map +1 -0
  157. package/.output/server/chunks/build/{HelpHint-YEMWtKu1.mjs → HelpHint-DrcIv-Oj.mjs} +53 -6
  158. package/.output/server/chunks/build/HelpHint-DrcIv-Oj.mjs.map +1 -0
  159. package/.output/server/chunks/build/{Label-DBvbHd3A.mjs → Label-DYDR1Oeh.mjs} +2 -2
  160. package/.output/server/chunks/build/Label-DYDR1Oeh.mjs.map +1 -0
  161. package/.output/server/chunks/build/{MiniRunBars-C3HG-EYm.mjs → MiniRunBars-CZMugDrh.mjs} +2 -2
  162. package/.output/server/chunks/build/MiniRunBars-CZMugDrh.mjs.map +1 -0
  163. package/.output/server/chunks/build/{Modal-CfA78Hm1.mjs → Modal-pSDlXzT3.mjs} +2 -2
  164. package/.output/server/chunks/build/Modal-pSDlXzT3.mjs.map +1 -0
  165. package/.output/server/chunks/build/{OpenInIdeLink-B92wosXu.mjs → OpenInIdeLink-CQWKKChd.mjs} +6 -6
  166. package/.output/server/chunks/build/{OpenInIdeLink-B92wosXu.mjs.map → OpenInIdeLink-CQWKKChd.mjs.map} +1 -1
  167. package/.output/server/chunks/build/{ProjectTestCasesTable-9Ia825h8.mjs → ProjectTestCasesTable-Bo61P5K1.mjs} +120 -45
  168. package/.output/server/chunks/build/ProjectTestCasesTable-Bo61P5K1.mjs.map +1 -0
  169. package/.output/server/chunks/build/{RovingFocusItem-CxhHdNGo.mjs → RovingFocusItem--OEHI2P3.mjs} +2 -2
  170. package/.output/server/chunks/build/RovingFocusItem--OEHI2P3.mjs.map +1 -0
  171. package/.output/server/chunks/build/{RunReports-BpJqLHY9.mjs → RunReports-DFLv51TX.mjs} +8 -6
  172. package/.output/server/chunks/build/RunReports-DFLv51TX.mjs.map +1 -0
  173. package/.output/server/chunks/build/{RunStatusBadge-BhmJ_RKM.mjs → RunStatusBadge-FfGb6bkW.mjs} +3 -2
  174. package/.output/server/chunks/build/RunStatusBadge-FfGb6bkW.mjs.map +1 -0
  175. package/.output/server/chunks/build/{SectionCard-COd9TuDq.mjs → SectionCard-CN-v0FZ_.mjs} +2 -2
  176. package/.output/server/chunks/build/SectionCard-CN-v0FZ_.mjs.map +1 -0
  177. package/.output/server/chunks/build/{Select-ppPz926C.mjs → Select-5DK9frQ7.mjs} +4 -4
  178. package/.output/server/chunks/build/Select-5DK9frQ7.mjs.map +1 -0
  179. package/.output/server/chunks/build/{SelectMenu-799c_Ils.mjs → SelectMenu-D-2FSqBU.mjs} +939 -7
  180. package/.output/server/chunks/build/{SelectMenu-799c_Ils.mjs.map → SelectMenu-D-2FSqBU.mjs.map} +1 -1
  181. package/.output/server/chunks/build/{Separator-CxZdx8kw.mjs → Separator-CR4WcEKD.mjs} +2 -2
  182. package/.output/server/chunks/build/Separator-CR4WcEKD.mjs.map +1 -0
  183. package/.output/server/chunks/build/{SettingsField-DDD4oqys.mjs → SettingsField-BZfx4ma1.mjs} +6 -6
  184. package/.output/server/chunks/build/SettingsField-BZfx4ma1.mjs.map +1 -0
  185. package/.output/server/chunks/build/{Slideover-B95Rj237.mjs → Slideover-D270EZZD.mjs} +3 -3
  186. package/.output/server/chunks/build/Slideover-D270EZZD.mjs.map +1 -0
  187. package/.output/server/chunks/build/{Switch-xQQ3_ME1.mjs → Switch-B5Fp8ULt.mjs} +5 -5
  188. package/.output/server/chunks/build/Switch-B5Fp8ULt.mjs.map +1 -0
  189. package/.output/server/chunks/build/{Table-CPhhVzDv.mjs → Table-BRk04Hd2.mjs} +3 -3
  190. package/.output/server/chunks/build/Table-BRk04Hd2.mjs.map +1 -0
  191. package/.output/server/chunks/build/{Tabs-BV9XqjoO.mjs → Tabs-BkSOnbaB.mjs} +3 -3
  192. package/.output/server/chunks/build/Tabs-BkSOnbaB.mjs.map +1 -0
  193. package/.output/server/chunks/build/TagBadge-DwzoFCBb.mjs +31 -0
  194. package/.output/server/chunks/build/TagBadge-DwzoFCBb.mjs.map +1 -0
  195. package/.output/server/chunks/build/TagBadge-styles.jhuZ4NjP.mjs +8 -0
  196. package/.output/server/chunks/build/TagBadge-styles.jhuZ4NjP.mjs.map +1 -0
  197. package/.output/server/chunks/build/{TestCaseHistoryChart-DMb-xSJa.mjs → TestCaseHistoryChart-CSi64vVA.mjs} +6 -6
  198. package/.output/server/chunks/build/TestCaseHistoryChart-CSi64vVA.mjs.map +1 -0
  199. package/.output/server/chunks/build/TestMetaBadges-D5_yUtIP.mjs +200 -0
  200. package/.output/server/chunks/build/TestMetaBadges-D5_yUtIP.mjs.map +1 -0
  201. package/.output/server/chunks/build/{TestStatusBar-CEzt76wk.mjs → TestStatusBar-DX3EhlyP.mjs} +15 -15
  202. package/.output/server/chunks/build/TestStatusBar-DX3EhlyP.mjs.map +1 -0
  203. package/.output/server/chunks/build/{Textarea-DrrqQUVG.mjs → Textarea-Dv2-lOvW.mjs} +2 -2
  204. package/.output/server/chunks/build/Textarea-Dv2-lOvW.mjs.map +1 -0
  205. package/.output/server/chunks/build/{Tooltip-7vwuDPrZ.mjs → Tooltip-Dv4htNP6.mjs} +3 -3
  206. package/.output/server/chunks/build/Tooltip-Dv4htNP6.mjs.map +1 -0
  207. package/.output/server/chunks/build/{VisuallyHiddenInput-C9eJVpPW.mjs → VisuallyHiddenInput-BHvzNumK.mjs} +2 -2
  208. package/.output/server/chunks/build/VisuallyHiddenInput-BHvzNumK.mjs.map +1 -0
  209. package/.output/server/chunks/build/{_id_-CE0Gso6i.mjs → _id_-BdG37K7s.mjs} +91 -42
  210. package/.output/server/chunks/build/_id_-BdG37K7s.mjs.map +1 -0
  211. package/.output/server/chunks/build/{_id_-bWcP2xFl.mjs → _id_-BdJs7BJZ.mjs} +719 -448
  212. package/.output/server/chunks/build/_id_-BdJs7BJZ.mjs.map +1 -0
  213. package/.output/server/chunks/build/{_id_-B2yirIuA.mjs → _id_-BxA6IgWr.mjs} +831 -368
  214. package/.output/server/chunks/build/_id_-BxA6IgWr.mjs.map +1 -0
  215. package/.output/server/chunks/build/{_id_-B4V5fop6.mjs → _id_-C_uSBiyU.mjs} +296 -60
  216. package/.output/server/chunks/build/{_id_-B4V5fop6.mjs.map → _id_-C_uSBiyU.mjs.map} +1 -1
  217. package/.output/server/chunks/build/{about-CoJjvUwM.mjs → about-BE0UV-8-.mjs} +456 -61
  218. package/.output/server/chunks/build/about-BE0UV-8-.mjs.map +1 -0
  219. package/.output/server/chunks/build/{account-Cn-eZqXM.mjs → account-DAfvaD-F.mjs} +21 -9
  220. package/.output/server/chunks/build/account-DAfvaD-F.mjs.map +1 -0
  221. package/.output/server/chunks/build/{ai-7jdaPOmj.mjs → ai-Cn05ch0u.mjs} +45 -23
  222. package/.output/server/chunks/build/{ai-7jdaPOmj.mjs.map → ai-Cn05ch0u.mjs.map} +1 -1
  223. package/.output/server/chunks/build/{analytics-B276WPeU.mjs → analytics-Bo_B_jko.mjs} +66 -41
  224. package/.output/server/chunks/build/analytics-Bo_B_jko.mjs.map +1 -0
  225. package/.output/server/chunks/build/client.precomputed.mjs +1 -1
  226. package/.output/server/chunks/build/compare-RxHSOdsO.mjs +12 -0
  227. package/.output/server/chunks/build/{db.client-aHcD0wyX.mjs → db.client-CQoVTYB9.mjs} +83 -5
  228. package/.output/server/chunks/build/db.client-CQoVTYB9.mjs.map +1 -0
  229. package/.output/server/chunks/build/{default-BSzdkM_L.mjs → default-CbNHaFsy.mjs} +622 -78
  230. package/.output/server/chunks/build/default-CbNHaFsy.mjs.map +1 -0
  231. package/.output/server/chunks/build/{docs-BN_x1OW3.mjs → docs-B_llWMxx.mjs} +30 -49
  232. package/.output/server/chunks/build/{docs-BN_x1OW3.mjs.map → docs-B_llWMxx.mjs.map} +1 -1
  233. package/.output/server/chunks/build/{edit-C9Z7oZeu.mjs → edit-J0asTFg8.mjs} +29 -18
  234. package/.output/server/chunks/build/edit-J0asTFg8.mjs.map +1 -0
  235. package/.output/server/chunks/build/{fetch-8kznMtBM.mjs → fetch-B4FwBOzu.mjs} +3 -3
  236. package/.output/server/chunks/build/fetch-B4FwBOzu.mjs.map +1 -0
  237. package/.output/server/chunks/build/{forgot-password-BqPF4Rxs.mjs → forgot-password-CC__1OnV.mjs} +17 -5
  238. package/.output/server/chunks/build/forgot-password-CC__1OnV.mjs.map +1 -0
  239. package/.output/server/chunks/build/{help-content-DmFnuhNu.mjs → help-content-C876a9WD.mjs} +37 -8
  240. package/.output/server/chunks/build/help-content-C876a9WD.mjs.map +1 -0
  241. package/.output/server/chunks/build/import-CS9oylTN.mjs +1021 -0
  242. package/.output/server/chunks/build/import-CS9oylTN.mjs.map +1 -0
  243. package/.output/server/chunks/build/{index-CULN3-en.mjs → index-CU2nZhAa.mjs} +113 -42
  244. package/.output/server/chunks/build/index-CU2nZhAa.mjs.map +1 -0
  245. package/.output/server/chunks/build/{index-BR9hw6qk.mjs → index-DE45ycdZ.mjs} +51 -31
  246. package/.output/server/chunks/build/index-DE45ycdZ.mjs.map +1 -0
  247. package/.output/server/chunks/build/{index-BK9PTRpd.mjs → index-e9skCi-V.mjs} +85 -69
  248. package/.output/server/chunks/build/{index-BK9PTRpd.mjs.map → index-e9skCi-V.mjs.map} +1 -1
  249. package/.output/server/chunks/build/{index-DVUtBexc.mjs → index-hGHlmyxj.mjs} +1520 -288
  250. package/.output/server/chunks/build/index-hGHlmyxj.mjs.map +1 -0
  251. package/.output/server/chunks/build/{index-Ba-Fifra.mjs → index-tR6owKzj.mjs} +18 -6
  252. package/.output/server/chunks/build/index-tR6owKzj.mjs.map +1 -0
  253. package/.output/server/chunks/build/{isValueEqualOrExist-DBZjbD_3.mjs → isValueEqualOrExist-D2qw9YEr.mjs} +3 -3
  254. package/.output/server/chunks/build/isValueEqualOrExist-D2qw9YEr.mjs.map +1 -0
  255. package/.output/server/chunks/build/{login-D2XZDuek.mjs → login-Da4u1IlW.mjs} +19 -7
  256. package/.output/server/chunks/build/login-Da4u1IlW.mjs.map +1 -0
  257. package/.output/server/chunks/build/{mcp-_o6cMS6m.mjs → mcp-uhVCCwQM.mjs} +359 -24
  258. package/.output/server/chunks/build/mcp-uhVCCwQM.mjs.map +1 -0
  259. package/.output/server/chunks/build/{notifications-Dzm9c0u_.mjs → notifications-fx_qnKGA.mjs} +27 -21
  260. package/.output/server/chunks/build/notifications-fx_qnKGA.mjs.map +1 -0
  261. package/.output/server/chunks/build/pr-feedback-X6-70iF0.mjs +368 -0
  262. package/.output/server/chunks/build/pr-feedback-X6-70iF0.mjs.map +1 -0
  263. package/.output/server/chunks/build/{reset-password-gpFzIEDj.mjs → reset-password-BmrUS4ZD.mjs} +17 -5
  264. package/.output/server/chunks/build/reset-password-BmrUS4ZD.mjs.map +1 -0
  265. package/.output/server/chunks/build/server.mjs +238 -36
  266. package/.output/server/chunks/build/{settings-pNyPBXVa.mjs → settings-CCYe7rsc.mjs} +23 -10
  267. package/.output/server/chunks/build/settings-CCYe7rsc.mjs.map +1 -0
  268. package/.output/server/chunks/build/{settings-metadata-B0wo5R-W.mjs → settings-metadata-DrEqWcW-.mjs} +11 -2
  269. package/.output/server/chunks/build/settings-metadata-DrEqWcW-.mjs.map +1 -0
  270. package/.output/server/chunks/build/{storage-XelzuyPy.mjs → storage-CJEmviCD.mjs} +41 -31
  271. package/.output/server/chunks/build/storage-CJEmviCD.mjs.map +1 -0
  272. package/.output/server/chunks/build/styles.mjs +1 -0
  273. package/.output/server/chunks/build/{tags-DrCQ7QSw.mjs → tags-DauTe_F-.mjs} +22 -10
  274. package/.output/server/chunks/build/tags-DauTe_F-.mjs.map +1 -0
  275. package/.output/server/chunks/build/{test-cases-pmOxi-AN.mjs → test-cases-thBbAykw.mjs} +38 -24
  276. package/.output/server/chunks/build/test-cases-thBbAykw.mjs.map +1 -0
  277. package/.output/server/chunks/build/{timeout-hygiene-CNs71Iah.mjs → timeout-hygiene-CbnSaVbK.mjs} +20 -8
  278. package/.output/server/chunks/build/timeout-hygiene-CbnSaVbK.mjs.map +1 -0
  279. package/.output/server/chunks/build/{useAiStatus-ZO987RY7.mjs → useAiStatus-CxjMmDDY.mjs} +89 -89
  280. package/.output/server/chunks/build/useAiStatus-CxjMmDDY.mjs.map +1 -0
  281. package/.output/server/chunks/build/{useCopy-BQQKcwlq.mjs → useCopy-CeKWgHyT.mjs} +2 -2
  282. package/.output/server/chunks/build/useCopy-CeKWgHyT.mjs.map +1 -0
  283. package/.output/server/chunks/build/{PageStateCard-Bwee6JTk.mjs → useCopyRich-RJKhWoyj.mjs} +472 -63
  284. package/.output/server/chunks/build/useCopyRich-RJKhWoyj.mjs.map +1 -0
  285. package/.output/server/chunks/build/useDesktopDownload-BepjqxOt.mjs +46 -0
  286. package/.output/server/chunks/build/useDesktopDownload-BepjqxOt.mjs.map +1 -0
  287. package/.output/server/chunks/build/{useFormControl-BLpq1s4O.mjs → useFormControl-CZ9So7iX.mjs} +2 -2
  288. package/.output/server/chunks/build/useFormControl-CZ9So7iX.mjs.map +1 -0
  289. package/.output/server/chunks/build/{useOpenInIde-kMZ7Jw5c.mjs → useOpenInIde-BbTnPhFA.mjs} +3 -3
  290. package/.output/server/chunks/build/useOpenInIde-BbTnPhFA.mjs.map +1 -0
  291. package/.output/server/chunks/build/{useSettingsNav-NjI2seBy.mjs → useSettingsNav-DnQKacz8.mjs} +6 -6
  292. package/.output/server/chunks/build/useSettingsNav-DnQKacz8.mjs.map +1 -0
  293. package/.output/server/chunks/build/useTauri-Kf3HE_42.mjs +11 -0
  294. package/.output/server/chunks/build/useTauri-Kf3HE_42.mjs.map +1 -0
  295. package/.output/server/chunks/build/{useTreeViewCookie-DVYpxW-p.mjs → useTreeViewCookie-CQjQdTkH.mjs} +2 -2
  296. package/.output/server/chunks/build/useTreeViewCookie-CQjQdTkH.mjs.map +1 -0
  297. package/.output/server/chunks/build/{users-NmAUZs3i.mjs → users-CTUqXyGh.mjs} +22 -10
  298. package/.output/server/chunks/build/users-CTUqXyGh.mjs.map +1 -0
  299. package/.output/server/chunks/build/{wasted-time-CguAF9zc.mjs → wasted-time-BNTPIyrC.mjs} +26 -14
  300. package/.output/server/chunks/build/wasted-time-BNTPIyrC.mjs.map +1 -0
  301. package/.output/server/chunks/nitro/nitro.mjs +6438 -1964
  302. package/.output/server/chunks/nitro/nitro.mjs.map +1 -1
  303. package/.output/server/chunks/routes/__piwi/session.get.mjs +13 -1
  304. package/.output/server/chunks/routes/__piwi/session.get.mjs.map +1 -1
  305. package/.output/server/chunks/routes/api/admin/cleanup.delete.mjs +12 -0
  306. package/.output/server/chunks/routes/api/admin/cleanup.delete.mjs.map +1 -1
  307. package/.output/server/chunks/routes/api/admin/stats.get.mjs +12 -0
  308. package/.output/server/chunks/routes/api/admin/stats.get.mjs.map +1 -1
  309. package/.output/server/chunks/routes/api/ai/status.get.mjs +12 -0
  310. package/.output/server/chunks/routes/api/ai/status.get.mjs.map +1 -1
  311. package/.output/server/chunks/routes/api/analytics/_widget_.get.mjs +12 -0
  312. package/.output/server/chunks/routes/api/analytics/_widget_.get.mjs.map +1 -1
  313. package/.output/server/chunks/routes/api/auth/change-password.post.mjs +12 -0
  314. package/.output/server/chunks/routes/api/auth/change-password.post.mjs.map +1 -1
  315. package/.output/server/chunks/routes/api/auth/forgot-password.post.mjs +12 -0
  316. package/.output/server/chunks/routes/api/auth/forgot-password.post.mjs.map +1 -1
  317. package/.output/server/chunks/routes/api/auth/login.post.mjs +12 -0
  318. package/.output/server/chunks/routes/api/auth/login.post.mjs.map +1 -1
  319. package/.output/server/chunks/routes/api/auth/logout.post.mjs +12 -0
  320. package/.output/server/chunks/routes/api/auth/logout.post.mjs.map +1 -1
  321. package/.output/server/chunks/routes/api/auth/me.get.mjs +12 -0
  322. package/.output/server/chunks/routes/api/auth/me.get.mjs.map +1 -1
  323. package/.output/server/chunks/routes/api/auth/oauth/_provider/callback.get.mjs +12 -0
  324. package/.output/server/chunks/routes/api/auth/oauth/_provider/callback.get.mjs.map +1 -1
  325. package/.output/server/chunks/routes/api/auth/oauth/_provider/login.get.mjs +12 -0
  326. package/.output/server/chunks/routes/api/auth/oauth/_provider/login.get.mjs.map +1 -1
  327. package/.output/server/chunks/routes/api/auth/oauth/_provider/unlink.post.mjs +12 -0
  328. package/.output/server/chunks/routes/api/auth/oauth/_provider/unlink.post.mjs.map +1 -1
  329. package/.output/server/chunks/routes/api/auth/reset-password.post.mjs +12 -0
  330. package/.output/server/chunks/routes/api/auth/reset-password.post.mjs.map +1 -1
  331. package/.output/server/chunks/routes/api/auth/send-verify-email.post.mjs +12 -0
  332. package/.output/server/chunks/routes/api/auth/send-verify-email.post.mjs.map +1 -1
  333. package/.output/server/chunks/routes/api/auth/setup.get.mjs +12 -0
  334. package/.output/server/chunks/routes/api/auth/setup.get.mjs.map +1 -1
  335. package/.output/server/chunks/routes/api/auth/setup.post.mjs +12 -0
  336. package/.output/server/chunks/routes/api/auth/setup.post.mjs.map +1 -1
  337. package/.output/server/chunks/routes/api/auth/verify-email.get.mjs +12 -0
  338. package/.output/server/chunks/routes/api/auth/verify-email.get.mjs.map +1 -1
  339. package/.output/server/chunks/routes/api/channels/_id/test.post.mjs +12 -0
  340. package/.output/server/chunks/routes/api/channels/_id/test.post.mjs.map +1 -1
  341. package/.output/server/chunks/routes/api/channels/_id_.delete.mjs +12 -0
  342. package/.output/server/chunks/routes/api/channels/_id_.delete.mjs.map +1 -1
  343. package/.output/server/chunks/routes/api/cluster-merge-suggestions/_id/approve.post.mjs +12 -0
  344. package/.output/server/chunks/routes/api/cluster-merge-suggestions/_id/approve.post.mjs.map +1 -1
  345. package/.output/server/chunks/routes/api/cluster-merge-suggestions/_id/reject.post.mjs +12 -0
  346. package/.output/server/chunks/routes/api/cluster-merge-suggestions/_id/reject.post.mjs.map +1 -1
  347. package/.output/server/chunks/routes/api/desktop/import-local.post.mjs +88 -0
  348. package/.output/server/chunks/routes/api/desktop/import-local.post.mjs.map +1 -0
  349. package/.output/server/chunks/routes/api/desktop/reporter-config.get.mjs +12 -0
  350. package/.output/server/chunks/routes/api/desktop/reporter-config.get.mjs.map +1 -1
  351. package/.output/server/chunks/routes/api/failure-clusters/_id/base-commit.patch.mjs +13 -1
  352. package/.output/server/chunks/routes/api/failure-clusters/_id/base-commit.patch.mjs.map +1 -1
  353. package/.output/server/chunks/routes/api/failure-clusters/_id/branches.get.mjs +13 -1
  354. package/.output/server/chunks/routes/api/failure-clusters/_id/branches.get.mjs.map +1 -1
  355. package/.output/server/chunks/routes/api/failure-clusters/_id/commit-diff.get.mjs +13 -1
  356. package/.output/server/chunks/routes/api/failure-clusters/_id/commit-diff.get.mjs.map +1 -1
  357. package/.output/server/chunks/routes/api/failure-clusters/_id/commits.get.mjs +13 -1
  358. package/.output/server/chunks/routes/api/failure-clusters/_id/commits.get.mjs.map +1 -1
  359. package/.output/server/chunks/routes/api/failure-clusters/_id/context.get.mjs +24 -1
  360. package/.output/server/chunks/routes/api/failure-clusters/_id/context.get.mjs.map +1 -1
  361. package/.output/server/chunks/routes/api/failure-clusters/_id/diagnose/stream.post.mjs +13 -1
  362. package/.output/server/chunks/routes/api/failure-clusters/_id/diagnose/stream.post.mjs.map +1 -1
  363. package/.output/server/chunks/routes/api/failure-clusters/_id/diagnose.post.mjs +13 -1
  364. package/.output/server/chunks/routes/api/failure-clusters/_id/diagnose.post.mjs.map +1 -1
  365. package/.output/server/chunks/routes/api/failure-clusters/_id/diagnoses.get.mjs +13 -1
  366. package/.output/server/chunks/routes/api/failure-clusters/_id/diagnoses.get.mjs.map +1 -1
  367. package/.output/server/chunks/routes/api/failure-clusters/_id/diagnosis.get.mjs +13 -1
  368. package/.output/server/chunks/routes/api/failure-clusters/_id/diagnosis.get.mjs.map +1 -1
  369. package/.output/server/chunks/routes/api/failure-clusters/_id/export.get.mjs +64 -0
  370. package/.output/server/chunks/routes/api/failure-clusters/_id/export.get.mjs.map +1 -0
  371. package/.output/server/chunks/routes/api/failure-clusters/_id/extract-cases.post.mjs +13 -1
  372. package/.output/server/chunks/routes/api/failure-clusters/_id/extract-cases.post.mjs.map +1 -1
  373. package/.output/server/chunks/routes/api/failure-clusters/_id/fix-plan.get.mjs +56 -0
  374. package/.output/server/chunks/routes/api/failure-clusters/_id/fix-plan.get.mjs.map +1 -0
  375. package/.output/server/chunks/routes/api/failure-clusters/_id/status.patch.mjs +13 -1
  376. package/.output/server/chunks/routes/api/failure-clusters/_id/status.patch.mjs.map +1 -1
  377. package/.output/server/chunks/routes/api/failure-clusters/_id_.get.mjs +13 -1
  378. package/.output/server/chunks/routes/api/failure-clusters/_id_.get.mjs.map +1 -1
  379. package/.output/server/chunks/routes/api/failure-diagnoses/_id/feedback.patch.mjs +13 -1
  380. package/.output/server/chunks/routes/api/failure-diagnoses/_id/feedback.patch.mjs.map +1 -1
  381. package/.output/server/chunks/routes/api/files/_...path_.get.mjs +13 -32
  382. package/.output/server/chunks/routes/api/files/_...path_.get.mjs.map +1 -1
  383. package/.output/server/chunks/routes/api/health.get.mjs +13 -1
  384. package/.output/server/chunks/routes/api/health.get.mjs.map +1 -1
  385. package/.output/server/chunks/routes/api/index.get.mjs +12 -0
  386. package/.output/server/chunks/routes/api/index.get.mjs.map +1 -1
  387. package/.output/server/chunks/routes/api/index.get2.mjs +13 -1
  388. package/.output/server/chunks/routes/api/index.get2.mjs.map +1 -1
  389. package/.output/server/chunks/routes/api/index.get3.mjs +13 -1
  390. package/.output/server/chunks/routes/api/index.get3.mjs.map +1 -1
  391. package/.output/server/chunks/routes/api/index.get4.mjs +13 -1
  392. package/.output/server/chunks/routes/api/index.get4.mjs.map +1 -1
  393. package/.output/server/chunks/routes/api/index.get5.mjs +12 -0
  394. package/.output/server/chunks/routes/api/index.get5.mjs.map +1 -1
  395. package/.output/server/chunks/routes/api/index.post.mjs +12 -0
  396. package/.output/server/chunks/routes/api/index.post.mjs.map +1 -1
  397. package/.output/server/chunks/routes/api/index.post2.mjs +13 -1
  398. package/.output/server/chunks/routes/api/index.post2.mjs.map +1 -1
  399. package/.output/server/chunks/routes/api/index.post3.mjs +13 -1
  400. package/.output/server/chunks/routes/api/index.post3.mjs.map +1 -1
  401. package/.output/server/chunks/routes/api/index.post4.mjs +13 -1
  402. package/.output/server/chunks/routes/api/index.post4.mjs.map +1 -1
  403. package/.output/server/chunks/routes/api/index.post5.mjs +13 -1
  404. package/.output/server/chunks/routes/api/index.post5.mjs.map +1 -1
  405. package/.output/server/chunks/routes/api/index.post6.mjs +12 -0
  406. package/.output/server/chunks/routes/api/index.post6.mjs.map +1 -1
  407. package/.output/server/chunks/routes/api/links/_id/refresh.post.mjs +13 -1
  408. package/.output/server/chunks/routes/api/links/_id/refresh.post.mjs.map +1 -1
  409. package/.output/server/chunks/routes/api/links/_id_.delete.mjs +13 -1
  410. package/.output/server/chunks/routes/api/links/_id_.delete.mjs.map +1 -1
  411. package/.output/server/chunks/routes/api/links/_id_.patch.mjs +13 -1
  412. package/.output/server/chunks/routes/api/links/_id_.patch.mjs.map +1 -1
  413. package/.output/server/chunks/routes/api/markers/_id_.delete.mjs +13 -1
  414. package/.output/server/chunks/routes/api/markers/_id_.delete.mjs.map +1 -1
  415. package/.output/server/chunks/routes/api/markers/_id_.put.mjs +13 -1
  416. package/.output/server/chunks/routes/api/markers/_id_.put.mjs.map +1 -1
  417. package/.output/server/chunks/routes/api/notifications/stream.get.mjs +13 -1
  418. package/.output/server/chunks/routes/api/notifications/stream.get.mjs.map +1 -1
  419. package/.output/server/chunks/routes/api/projects/_id/cluster-merge-suggestions.get.mjs +13 -1
  420. package/.output/server/chunks/routes/api/projects/_id/cluster-merge-suggestions.get.mjs.map +1 -1
  421. package/.output/server/chunks/routes/api/projects/_id/failure-clusters.get.mjs +13 -1
  422. package/.output/server/chunks/routes/api/projects/_id/failure-clusters.get.mjs.map +1 -1
  423. package/.output/server/chunks/routes/api/projects/_id/flaky-classify.post.mjs +13 -1
  424. package/.output/server/chunks/routes/api/projects/_id/flaky-classify.post.mjs.map +1 -1
  425. package/.output/server/chunks/routes/api/projects/_id/flaky-tests.get.mjs +22 -2
  426. package/.output/server/chunks/routes/api/projects/_id/flaky-tests.get.mjs.map +1 -1
  427. package/.output/server/chunks/routes/api/projects/_id/latest-run.get.mjs +13 -1
  428. package/.output/server/chunks/routes/api/projects/_id/latest-run.get.mjs.map +1 -1
  429. package/.output/server/chunks/routes/api/projects/_id/markers.get.mjs +13 -1
  430. package/.output/server/chunks/routes/api/projects/_id/markers.get.mjs.map +1 -1
  431. package/.output/server/chunks/routes/api/projects/_id/markers.post.mjs +13 -1
  432. package/.output/server/chunks/routes/api/projects/_id/markers.post.mjs.map +1 -1
  433. package/.output/server/chunks/routes/api/projects/_id/members.get.mjs +13 -1
  434. package/.output/server/chunks/routes/api/projects/_id/members.get.mjs.map +1 -1
  435. package/.output/server/chunks/routes/api/projects/_id/members.put.mjs +13 -1
  436. package/.output/server/chunks/routes/api/projects/_id/members.put.mjs.map +1 -1
  437. package/.output/server/chunks/routes/api/projects/_id/performance.get.mjs +13 -1
  438. package/.output/server/chunks/routes/api/projects/_id/performance.get.mjs.map +1 -1
  439. package/.output/server/chunks/routes/api/projects/_id/quarantine/_testCaseId_.delete.mjs +58 -0
  440. package/.output/server/chunks/routes/api/projects/_id/quarantine/_testCaseId_.delete.mjs.map +1 -0
  441. package/.output/server/chunks/routes/api/projects/_id/quarantine.get.mjs +57 -0
  442. package/.output/server/chunks/routes/api/projects/_id/quarantine.get.mjs.map +1 -0
  443. package/.output/server/chunks/routes/api/projects/_id/quarantine.post.mjs +72 -0
  444. package/.output/server/chunks/routes/api/projects/_id/quarantine.post.mjs.map +1 -0
  445. package/.output/server/chunks/routes/api/projects/_id/slow-tests.get.mjs +13 -1
  446. package/.output/server/chunks/routes/api/projects/_id/slow-tests.get.mjs.map +1 -1
  447. package/.output/server/chunks/routes/api/projects/_id/spec-health.get.mjs +13 -1
  448. package/.output/server/chunks/routes/api/projects/_id/spec-health.get.mjs.map +1 -1
  449. package/.output/server/chunks/routes/api/projects/_id/test-cases.get.mjs +13 -1
  450. package/.output/server/chunks/routes/api/projects/_id/test-cases.get.mjs.map +1 -1
  451. package/.output/server/chunks/routes/api/projects/_id/timeout-opportunities.get.mjs +13 -1
  452. package/.output/server/chunks/routes/api/projects/_id/timeout-opportunities.get.mjs.map +1 -1
  453. package/.output/server/chunks/routes/api/projects/_id_.delete.mjs +13 -1
  454. package/.output/server/chunks/routes/api/projects/_id_.delete.mjs.map +1 -1
  455. package/.output/server/chunks/routes/api/projects/_id_.get.mjs +13 -1
  456. package/.output/server/chunks/routes/api/projects/_id_.get.mjs.map +1 -1
  457. package/.output/server/chunks/routes/api/projects/_id_.put.mjs +13 -1
  458. package/.output/server/chunks/routes/api/projects/_id_.put.mjs.map +1 -1
  459. package/.output/server/chunks/routes/api/projects/menu.get.mjs +13 -1
  460. package/.output/server/chunks/routes/api/projects/menu.get.mjs.map +1 -1
  461. package/.output/server/chunks/routes/api/projects/overview.get.mjs +13 -1
  462. package/.output/server/chunks/routes/api/projects/overview.get.mjs.map +1 -1
  463. package/.output/server/chunks/routes/api/projects.get.mjs +13 -1
  464. package/.output/server/chunks/routes/api/projects.get.mjs.map +1 -1
  465. package/.output/server/chunks/routes/api/search.get.mjs +13 -1
  466. package/.output/server/chunks/routes/api/search.get.mjs.map +1 -1
  467. package/.output/server/chunks/routes/api/settings/ai/limits.get.mjs +13 -1
  468. package/.output/server/chunks/routes/api/settings/ai/limits.get.mjs.map +1 -1
  469. package/.output/server/chunks/routes/api/settings/ai/limits.put.mjs +13 -1
  470. package/.output/server/chunks/routes/api/settings/ai/limits.put.mjs.map +1 -1
  471. package/.output/server/chunks/routes/api/settings/ai/models.post.mjs +12 -0
  472. package/.output/server/chunks/routes/api/settings/ai/models.post.mjs.map +1 -1
  473. package/.output/server/chunks/routes/api/settings/ai/test.post.mjs +13 -1
  474. package/.output/server/chunks/routes/api/settings/ai/test.post.mjs.map +1 -1
  475. package/.output/server/chunks/routes/api/settings/ai/usage.get.mjs +13 -1
  476. package/.output/server/chunks/routes/api/settings/ai/usage.get.mjs.map +1 -1
  477. package/.output/server/chunks/routes/api/settings/ai.get.mjs +13 -1
  478. package/.output/server/chunks/routes/api/settings/ai.get.mjs.map +1 -1
  479. package/.output/server/chunks/routes/api/settings/ai.put.mjs +13 -1
  480. package/.output/server/chunks/routes/api/settings/ai.put.mjs.map +1 -1
  481. package/.output/server/chunks/routes/api/settings/pr-feedback.get.mjs +57 -0
  482. package/.output/server/chunks/routes/api/settings/pr-feedback.get.mjs.map +1 -0
  483. package/.output/server/chunks/routes/api/settings/pr-feedback.put.mjs +63 -0
  484. package/.output/server/chunks/routes/api/settings/pr-feedback.put.mjs.map +1 -0
  485. package/.output/server/chunks/routes/api/settings/smtp/test.post.mjs +12 -0
  486. package/.output/server/chunks/routes/api/settings/smtp/test.post.mjs.map +1 -1
  487. package/.output/server/chunks/routes/api/settings/smtp.get.mjs +13 -1
  488. package/.output/server/chunks/routes/api/settings/smtp.get.mjs.map +1 -1
  489. package/.output/server/chunks/routes/api/settings/timeout-hygiene.get.mjs +13 -1
  490. package/.output/server/chunks/routes/api/settings/timeout-hygiene.get.mjs.map +1 -1
  491. package/.output/server/chunks/routes/api/settings/timeout-hygiene.put.mjs +13 -1
  492. package/.output/server/chunks/routes/api/settings/timeout-hygiene.put.mjs.map +1 -1
  493. package/.output/server/chunks/routes/api/settings/wasted-waits.get.mjs +13 -1
  494. package/.output/server/chunks/routes/api/settings/wasted-waits.get.mjs.map +1 -1
  495. package/.output/server/chunks/routes/api/settings/wasted-waits.put.mjs +13 -1
  496. package/.output/server/chunks/routes/api/settings/wasted-waits.put.mjs.map +1 -1
  497. package/.output/server/chunks/routes/api/stream.get.mjs +13 -1
  498. package/.output/server/chunks/routes/api/stream.get.mjs.map +1 -1
  499. package/.output/server/chunks/routes/api/subscriptions/_id_.delete.mjs +13 -1
  500. package/.output/server/chunks/routes/api/subscriptions/_id_.delete.mjs.map +1 -1
  501. package/.output/server/chunks/routes/api/subscriptions/_id_.patch.mjs +13 -1
  502. package/.output/server/chunks/routes/api/subscriptions/_id_.patch.mjs.map +1 -1
  503. package/.output/server/chunks/routes/api/tags/_id_.delete.mjs +13 -1
  504. package/.output/server/chunks/routes/api/tags/_id_.delete.mjs.map +1 -1
  505. package/.output/server/chunks/routes/api/tags/_id_.put.mjs +13 -1
  506. package/.output/server/chunks/routes/api/tags/_id_.put.mjs.map +1 -1
  507. package/.output/server/chunks/routes/api/test-cases/_id/history.get.mjs +13 -1
  508. package/.output/server/chunks/routes/api/test-cases/_id/history.get.mjs.map +1 -1
  509. package/.output/server/chunks/routes/api/test-cases/_id/stability-trend.get.mjs +13 -1
  510. package/.output/server/chunks/routes/api/test-cases/_id/stability-trend.get.mjs.map +1 -1
  511. package/.output/server/chunks/routes/api/test-cases/_id_.get.mjs +13 -1
  512. package/.output/server/chunks/routes/api/test-cases/_id_.get.mjs.map +1 -1
  513. package/.output/server/chunks/routes/api/test-run-cases/_id/diagnose.post.mjs +13 -1
  514. package/.output/server/chunks/routes/api/test-run-cases/_id/diagnose.post.mjs.map +1 -1
  515. package/.output/server/chunks/routes/api/test-run-cases/_id/diagnosis-context.get.mjs +25 -3
  516. package/.output/server/chunks/routes/api/test-run-cases/_id/diagnosis-context.get.mjs.map +1 -1
  517. package/.output/server/chunks/routes/api/test-run-cases/_id/diagnosis.get.mjs +13 -1
  518. package/.output/server/chunks/routes/api/test-run-cases/_id/diagnosis.get.mjs.map +1 -1
  519. package/.output/server/chunks/routes/api/test-run-cases/_id/export.get.mjs +60 -0
  520. package/.output/server/chunks/routes/api/test-run-cases/_id/export.get.mjs.map +1 -0
  521. package/.output/server/chunks/routes/api/test-run-cases/_id/traces.get.mjs +13 -1
  522. package/.output/server/chunks/routes/api/test-run-cases/_id/traces.get.mjs.map +1 -1
  523. package/.output/server/chunks/routes/api/test-run-cases/_id_.get.mjs +13 -1
  524. package/.output/server/chunks/routes/api/test-run-cases/_id_.get.mjs.map +1 -1
  525. package/.output/server/chunks/routes/api/test-runs/_id/begin.post.mjs +13 -1
  526. package/.output/server/chunks/routes/api/test-runs/_id/begin.post.mjs.map +1 -1
  527. package/.output/server/chunks/routes/api/test-runs/_id/case-files.post.mjs +13 -1
  528. package/.output/server/chunks/routes/api/test-runs/_id/case-files.post.mjs.map +1 -1
  529. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/dom-snapshot.get.mjs +17 -3
  530. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/dom-snapshot.get.mjs.map +1 -1
  531. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/environment-diff.get.mjs +13 -1
  532. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/environment-diff.get.mjs.map +1 -1
  533. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/locator-healing.get.mjs +13 -1
  534. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/locator-healing.get.mjs.map +1 -1
  535. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/locator-pick.post.mjs +13 -1
  536. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/locator-pick.post.mjs.map +1 -1
  537. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/trace-network-body.get.mjs +13 -1
  538. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/trace-network-body.get.mjs.map +1 -1
  539. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/trace-network.get.mjs +13 -1
  540. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/trace-network.get.mjs.map +1 -1
  541. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/trace-stacks.get.mjs +13 -1
  542. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/trace-stacks.get.mjs.map +1 -1
  543. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/visual-diff.get.mjs +13 -1
  544. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/visual-diff.get.mjs.map +1 -1
  545. package/.output/server/chunks/routes/api/test-runs/_id/events.post.mjs +13 -1
  546. package/.output/server/chunks/routes/api/test-runs/_id/events.post.mjs.map +1 -1
  547. package/.output/server/chunks/routes/api/test-runs/_id/failure-groups.get.mjs +13 -1
  548. package/.output/server/chunks/routes/api/test-runs/_id/failure-groups.get.mjs.map +1 -1
  549. package/.output/server/chunks/routes/api/test-runs/_id/finish.post.mjs +15 -1
  550. package/.output/server/chunks/routes/api/test-runs/_id/finish.post.mjs.map +1 -1
  551. package/.output/server/chunks/routes/api/test-runs/_id/gate.post.mjs +196 -0
  552. package/.output/server/chunks/routes/api/test-runs/_id/gate.post.mjs.map +1 -0
  553. package/.output/server/chunks/routes/api/test-runs/_id/heartbeat.post.mjs +13 -1
  554. package/.output/server/chunks/routes/api/test-runs/_id/heartbeat.post.mjs.map +1 -1
  555. package/.output/server/chunks/routes/api/test-runs/_id/insights.get.mjs +13 -1
  556. package/.output/server/chunks/routes/api/test-runs/_id/insights.get.mjs.map +1 -1
  557. package/.output/server/chunks/routes/api/test-runs/_id/network-requests.get.mjs +13 -1
  558. package/.output/server/chunks/routes/api/test-runs/_id/network-requests.get.mjs.map +1 -1
  559. package/.output/server/chunks/routes/api/test-runs/_id/regression-context.get.mjs +13 -1
  560. package/.output/server/chunks/routes/api/test-runs/_id/regression-context.get.mjs.map +1 -1
  561. package/.output/server/chunks/routes/api/test-runs/_id/stream.get.mjs +13 -1
  562. package/.output/server/chunks/routes/api/test-runs/_id/stream.get.mjs.map +1 -1
  563. package/.output/server/chunks/routes/api/test-runs/_id/summary.get.mjs +13 -1
  564. package/.output/server/chunks/routes/api/test-runs/_id/summary.get.mjs.map +1 -1
  565. package/.output/server/chunks/routes/api/test-runs/_id_.delete.mjs +13 -1
  566. package/.output/server/chunks/routes/api/test-runs/_id_.delete.mjs.map +1 -1
  567. package/.output/server/chunks/routes/api/test-runs/_id_.get.mjs +13 -1
  568. package/.output/server/chunks/routes/api/test-runs/_id_.get.mjs.map +1 -1
  569. package/.output/server/chunks/routes/api/test-runs/_id_.patch.mjs +13 -1
  570. package/.output/server/chunks/routes/api/test-runs/_id_.patch.mjs.map +1 -1
  571. package/.output/server/chunks/routes/api/test-runs/import/check.post.mjs +77 -0
  572. package/.output/server/chunks/routes/api/test-runs/import/check.post.mjs.map +1 -0
  573. package/.output/server/chunks/routes/api/test-runs/import.post.mjs +77 -0
  574. package/.output/server/chunks/routes/api/test-runs/import.post.mjs.map +1 -0
  575. package/.output/server/chunks/routes/api/test-runs/recent.get.mjs +13 -1
  576. package/.output/server/chunks/routes/api/test-runs/recent.get.mjs.map +1 -1
  577. package/.output/server/chunks/routes/api/test-runs/setup.post.mjs +13 -1
  578. package/.output/server/chunks/routes/api/test-runs/setup.post.mjs.map +1 -1
  579. package/.output/server/chunks/routes/api/test-runs/start.post.mjs +13 -1
  580. package/.output/server/chunks/routes/api/test-runs/start.post.mjs.map +1 -1
  581. package/.output/server/chunks/routes/api/test-runs/submit.post.mjs +32 -15
  582. package/.output/server/chunks/routes/api/test-runs/submit.post.mjs.map +1 -1
  583. package/.output/server/chunks/routes/api/test-runs/upload.post.mjs +21 -6
  584. package/.output/server/chunks/routes/api/test-runs/upload.post.mjs.map +1 -1
  585. package/.output/server/chunks/routes/api/tests/cleanup.delete.mjs +156 -3
  586. package/.output/server/chunks/routes/api/tests/cleanup.delete.mjs.map +1 -1
  587. package/.output/server/chunks/routes/api/traces/check.post.mjs +13 -1
  588. package/.output/server/chunks/routes/api/traces/check.post.mjs.map +1 -1
  589. package/.output/server/chunks/routes/api/users/_id/api-keys/_keyId_.delete.mjs +12 -0
  590. package/.output/server/chunks/routes/api/users/_id/api-keys/_keyId_.delete.mjs.map +1 -1
  591. package/.output/server/chunks/routes/api/users/_id/index.get.mjs +12 -0
  592. package/.output/server/chunks/routes/api/users/_id/index.get.mjs.map +1 -1
  593. package/.output/server/chunks/routes/api/users/_id/index.post.mjs +13 -1
  594. package/.output/server/chunks/routes/api/users/_id/index.post.mjs.map +1 -1
  595. package/.output/server/chunks/routes/api/users/_id/invite.post.mjs +13 -1
  596. package/.output/server/chunks/routes/api/users/_id/invite.post.mjs.map +1 -1
  597. package/.output/server/chunks/routes/api/users/_id/projects.get.mjs +13 -1
  598. package/.output/server/chunks/routes/api/users/_id/projects.get.mjs.map +1 -1
  599. package/.output/server/chunks/routes/api/users/_id/projects.put.mjs +13 -1
  600. package/.output/server/chunks/routes/api/users/_id/projects.put.mjs.map +1 -1
  601. package/.output/server/chunks/routes/api/users/_id_.delete.mjs +12 -0
  602. package/.output/server/chunks/routes/api/users/_id_.delete.mjs.map +1 -1
  603. package/.output/server/chunks/routes/api/users/_id_.patch.mjs +12 -0
  604. package/.output/server/chunks/routes/api/users/_id_.patch.mjs.map +1 -1
  605. package/.output/server/chunks/routes/api/version.get.mjs +13 -1
  606. package/.output/server/chunks/routes/api/version.get.mjs.map +1 -1
  607. package/.output/server/chunks/routes/mcp.post.mjs +13 -1
  608. package/.output/server/chunks/routes/mcp.post.mjs.map +1 -1
  609. package/.output/server/chunks/routes/renderer.mjs +1 -1
  610. package/.output/server/chunks/tasks/sweep.mjs +12 -0
  611. package/.output/server/chunks/tasks/sweep.mjs.map +1 -1
  612. package/.output/server/chunks/tasks/sweep2.mjs +12 -0
  613. package/.output/server/chunks/tasks/sweep2.mjs.map +1 -1
  614. package/.output/server/database/migrations/0039_remarkable_jean_grey.sql +2 -0
  615. package/.output/server/database/migrations/0040_organic_phalanx.sql +8 -0
  616. package/.output/server/database/migrations/0041_tense_gravity.sql +5 -0
  617. package/.output/server/database/migrations/0042_burly_hemingway.sql +19 -0
  618. package/.output/server/database/migrations/meta/0039_snapshot.json +3403 -0
  619. package/.output/server/database/migrations/meta/0040_snapshot.json +3457 -0
  620. package/.output/server/database/migrations/meta/0041_snapshot.json +3492 -0
  621. package/.output/server/database/migrations/meta/0042_snapshot.json +3618 -0
  622. package/.output/server/database/migrations/meta/_journal.json +28 -0
  623. package/.output/server/database/migrations-pg/0040_lazy_layla_miller.sql +2 -0
  624. package/.output/server/database/migrations-pg/0041_light_screwball.sql +8 -0
  625. package/.output/server/database/migrations-pg/0042_serious_layla_miller.sql +5 -0
  626. package/.output/server/database/migrations-pg/0043_wonderful_mordo.sql +19 -0
  627. package/.output/server/database/migrations-pg/meta/0040_snapshot.json +4060 -0
  628. package/.output/server/database/migrations-pg/meta/0041_snapshot.json +4123 -0
  629. package/.output/server/database/migrations-pg/meta/0042_snapshot.json +4153 -0
  630. package/.output/server/database/migrations-pg/meta/0043_snapshot.json +4308 -0
  631. package/.output/server/database/migrations-pg/meta/_journal.json +28 -0
  632. package/.output/server/index.mjs +13 -1
  633. package/.output/server/index.mjs.map +1 -1
  634. package/.output/server/node_modules/fflate/esm/index.mjs +2710 -0
  635. package/.output/server/node_modules/fflate/package.json +128 -0
  636. package/.output/server/node_modules/highlight.js/es/languages/yaml.js +213 -0
  637. package/.output/server/node_modules/marked/lib/marked.esm.js +72 -0
  638. package/.output/server/node_modules/marked/package.json +103 -0
  639. package/.output/server/package.json +3 -1
  640. package/package.json +2 -2
  641. package/.output/public/_nuxt/9-wVZMur.js +0 -4
  642. package/.output/public/_nuxt/B-5GukRk.js +0 -1
  643. package/.output/public/_nuxt/B1G3GGhQ.js +0 -1
  644. package/.output/public/_nuxt/B1zMFx24.js +0 -1
  645. package/.output/public/_nuxt/B4jvLMfS.js +0 -1
  646. package/.output/public/_nuxt/BBnX5xw4.js +0 -2
  647. package/.output/public/_nuxt/BHpUiv6j.js +0 -3
  648. package/.output/public/_nuxt/BLOUs6AE.js +0 -5
  649. package/.output/public/_nuxt/BT6p4Pgt.js +0 -2
  650. package/.output/public/_nuxt/BUXSUkJ_.js +0 -1
  651. package/.output/public/_nuxt/BVf6Yx9V.js +0 -26
  652. package/.output/public/_nuxt/BbS6Bwby.js +0 -1
  653. package/.output/public/_nuxt/Bd3HqPMF.js +0 -1
  654. package/.output/public/_nuxt/BeKvLsja.js +0 -2
  655. package/.output/public/_nuxt/BeUm5UNV.js +0 -1
  656. package/.output/public/_nuxt/BfV444H3.js +0 -3
  657. package/.output/public/_nuxt/BjKamgHq.js +0 -1
  658. package/.output/public/_nuxt/BoJdjCVl.js +0 -4
  659. package/.output/public/_nuxt/BreO2PiA.js +0 -1
  660. package/.output/public/_nuxt/BvIDC_R-.js +0 -1
  661. package/.output/public/_nuxt/ByuJWADR.js +0 -34
  662. package/.output/public/_nuxt/C1dyLp_j.js +0 -1
  663. package/.output/public/_nuxt/CAUgpKsF.js +0 -2
  664. package/.output/public/_nuxt/CL9-VLTJ.js +0 -1
  665. package/.output/public/_nuxt/CazDIG_m.js +0 -1
  666. package/.output/public/_nuxt/CcXaak_K.js +0 -1
  667. package/.output/public/_nuxt/CdMuck_X.js +0 -1
  668. package/.output/public/_nuxt/CfPSts5n.js +0 -1
  669. package/.output/public/_nuxt/CfROFPse.js +0 -1
  670. package/.output/public/_nuxt/Cnapl7lZ.js +0 -1
  671. package/.output/public/_nuxt/CscWZxCi.js +0 -1
  672. package/.output/public/_nuxt/CuicKV-B.js +0 -34
  673. package/.output/public/_nuxt/Cyiu1VQD.js +0 -1
  674. package/.output/public/_nuxt/D6PUPmRC.js +0 -1
  675. package/.output/public/_nuxt/DCl2yo4g.js +0 -8
  676. package/.output/public/_nuxt/DHXWp5yD.js +0 -1
  677. package/.output/public/_nuxt/DHltYerF.js +0 -114
  678. package/.output/public/_nuxt/DLXydYJb.js +0 -47
  679. package/.output/public/_nuxt/DRPSi76A.js +0 -1
  680. package/.output/public/_nuxt/DS53kyHJ.js +0 -1
  681. package/.output/public/_nuxt/DWhBqv_7.js +0 -1
  682. package/.output/public/_nuxt/Dd0kK5WH.js +0 -1
  683. package/.output/public/_nuxt/Df7kUO0m.js +0 -1
  684. package/.output/public/_nuxt/Dga3Av-m.js +0 -1
  685. package/.output/public/_nuxt/DgwTpwfB.js +0 -1
  686. package/.output/public/_nuxt/DkI145a5.js +0 -1
  687. package/.output/public/_nuxt/DoFBTaDR.js +0 -1
  688. package/.output/public/_nuxt/Dr_dI5hB.js +0 -1
  689. package/.output/public/_nuxt/EPZOxdgq.js +0 -1
  690. package/.output/public/_nuxt/R1nNqTru.js +0 -1
  691. package/.output/public/_nuxt/S5DLdEpg.js +0 -4
  692. package/.output/public/_nuxt/builds/meta/7caf3cb3-d272-4dbd-bb3f-1eeb64fab5d1.json +0 -1
  693. package/.output/public/_nuxt/entry.ChQMshd4.css +0 -1
  694. package/.output/public/_nuxt/gCELhaU9.js +0 -1
  695. package/.output/public/_nuxt/ipDzNHcs.js +0 -5
  696. package/.output/public/_nuxt/kS3boz40.js +0 -1
  697. package/.output/public/_nuxt/qH_j2A3a.js +0 -1
  698. package/.output/public/_nuxt/r3SBLxtE.js +0 -1
  699. package/.output/public/_nuxt/rsiRgrVM.js +0 -1
  700. package/.output/public/_nuxt/swrbBdtB.js +0 -1
  701. package/.output/public/sw.js +0 -1
  702. package/.output/public/workbox-2fbc6a65.js +0 -1
  703. package/.output/server/chunks/build/Alert-Bp1Wz_sq.mjs.map +0 -1
  704. package/.output/server/chunks/build/Breadcrumb-C9ZPTLym.mjs.map +0 -1
  705. package/.output/server/chunks/build/BreadcrumbNav-C3y42Vun.mjs.map +0 -1
  706. package/.output/server/chunks/build/BrowserBadge-DNCp9pF-.mjs.map +0 -1
  707. package/.output/server/chunks/build/ChartCard-Fr557IbV.mjs.map +0 -1
  708. package/.output/server/chunks/build/Checkbox-cVOSIY93.mjs.map +0 -1
  709. package/.output/server/chunks/build/CiEnvCard-DXPOhdSG.mjs +0 -640
  710. package/.output/server/chunks/build/CiEnvCard-DXPOhdSG.mjs.map +0 -1
  711. package/.output/server/chunks/build/CodeBlock-BGwNmJ8J.mjs.map +0 -1
  712. package/.output/server/chunks/build/DashboardNavbar-Bdp-OwTN.mjs.map +0 -1
  713. package/.output/server/chunks/build/DashboardSidebarToggle-Ji6ADuqF.mjs.map +0 -1
  714. package/.output/server/chunks/build/DataLocationCard-D6xSOrme.mjs.map +0 -1
  715. package/.output/server/chunks/build/DiagnosisPanel-DV1xwGu4.mjs.map +0 -1
  716. package/.output/server/chunks/build/EmptyState-DV3oT_xz.mjs.map +0 -1
  717. package/.output/server/chunks/build/EntityLinks-DeOP13Kr.mjs.map +0 -1
  718. package/.output/server/chunks/build/EnvManagedBadge-Qpn58Nmr.mjs.map +0 -1
  719. package/.output/server/chunks/build/FormField-B-GSn_VR.mjs.map +0 -1
  720. package/.output/server/chunks/build/HelpHint-YEMWtKu1.mjs.map +0 -1
  721. package/.output/server/chunks/build/Label-DBvbHd3A.mjs.map +0 -1
  722. package/.output/server/chunks/build/MiniRunBars-C3HG-EYm.mjs.map +0 -1
  723. package/.output/server/chunks/build/Modal-CfA78Hm1.mjs.map +0 -1
  724. package/.output/server/chunks/build/PageStateCard-Bwee6JTk.mjs.map +0 -1
  725. package/.output/server/chunks/build/ProjectTestCasesTable-9Ia825h8.mjs.map +0 -1
  726. package/.output/server/chunks/build/RovingFocusItem-CxhHdNGo.mjs.map +0 -1
  727. package/.output/server/chunks/build/RunReports-BpJqLHY9.mjs.map +0 -1
  728. package/.output/server/chunks/build/RunStatusBadge-BhmJ_RKM.mjs.map +0 -1
  729. package/.output/server/chunks/build/SectionCard-COd9TuDq.mjs.map +0 -1
  730. package/.output/server/chunks/build/Select-ppPz926C.mjs.map +0 -1
  731. package/.output/server/chunks/build/Separator-CxZdx8kw.mjs.map +0 -1
  732. package/.output/server/chunks/build/SettingsField-DDD4oqys.mjs.map +0 -1
  733. package/.output/server/chunks/build/Slideover-B95Rj237.mjs.map +0 -1
  734. package/.output/server/chunks/build/Switch-xQQ3_ME1.mjs.map +0 -1
  735. package/.output/server/chunks/build/Table-CPhhVzDv.mjs.map +0 -1
  736. package/.output/server/chunks/build/Tabs-BV9XqjoO.mjs.map +0 -1
  737. package/.output/server/chunks/build/TagBadge-BDcvvGxw.mjs +0 -47
  738. package/.output/server/chunks/build/TagBadge-BDcvvGxw.mjs.map +0 -1
  739. package/.output/server/chunks/build/TestCaseHistoryChart-DMb-xSJa.mjs.map +0 -1
  740. package/.output/server/chunks/build/TestStatusBar-CEzt76wk.mjs.map +0 -1
  741. package/.output/server/chunks/build/Textarea-DrrqQUVG.mjs.map +0 -1
  742. package/.output/server/chunks/build/Tooltip-7vwuDPrZ.mjs.map +0 -1
  743. package/.output/server/chunks/build/VisuallyHiddenInput-C9eJVpPW.mjs.map +0 -1
  744. package/.output/server/chunks/build/_id_-B2yirIuA.mjs.map +0 -1
  745. package/.output/server/chunks/build/_id_-CE0Gso6i.mjs.map +0 -1
  746. package/.output/server/chunks/build/_id_-bWcP2xFl.mjs.map +0 -1
  747. package/.output/server/chunks/build/about-CoJjvUwM.mjs.map +0 -1
  748. package/.output/server/chunks/build/account-Cn-eZqXM.mjs.map +0 -1
  749. package/.output/server/chunks/build/analytics-B276WPeU.mjs.map +0 -1
  750. package/.output/server/chunks/build/db.client-aHcD0wyX.mjs.map +0 -1
  751. package/.output/server/chunks/build/default-BSzdkM_L.mjs.map +0 -1
  752. package/.output/server/chunks/build/edit-C9Z7oZeu.mjs.map +0 -1
  753. package/.output/server/chunks/build/fetch-8kznMtBM.mjs.map +0 -1
  754. package/.output/server/chunks/build/forgot-password-BqPF4Rxs.mjs.map +0 -1
  755. package/.output/server/chunks/build/help-content-DmFnuhNu.mjs.map +0 -1
  756. package/.output/server/chunks/build/index-BR9hw6qk.mjs.map +0 -1
  757. package/.output/server/chunks/build/index-Ba-Fifra.mjs.map +0 -1
  758. package/.output/server/chunks/build/index-CULN3-en.mjs.map +0 -1
  759. package/.output/server/chunks/build/index-DVUtBexc.mjs.map +0 -1
  760. package/.output/server/chunks/build/isValueEqualOrExist-DBZjbD_3.mjs.map +0 -1
  761. package/.output/server/chunks/build/login-D2XZDuek.mjs.map +0 -1
  762. package/.output/server/chunks/build/mcp-_o6cMS6m.mjs.map +0 -1
  763. package/.output/server/chunks/build/notifications-Dzm9c0u_.mjs.map +0 -1
  764. package/.output/server/chunks/build/reset-password-gpFzIEDj.mjs.map +0 -1
  765. package/.output/server/chunks/build/settings-metadata-B0wo5R-W.mjs.map +0 -1
  766. package/.output/server/chunks/build/settings-pNyPBXVa.mjs.map +0 -1
  767. package/.output/server/chunks/build/storage-XelzuyPy.mjs.map +0 -1
  768. package/.output/server/chunks/build/tags-DrCQ7QSw.mjs.map +0 -1
  769. package/.output/server/chunks/build/test-cases-pmOxi-AN.mjs.map +0 -1
  770. package/.output/server/chunks/build/timeout-hygiene-CNs71Iah.mjs.map +0 -1
  771. package/.output/server/chunks/build/useAiStatus-ZO987RY7.mjs.map +0 -1
  772. package/.output/server/chunks/build/useCopy-BQQKcwlq.mjs.map +0 -1
  773. package/.output/server/chunks/build/useFormControl-BLpq1s4O.mjs.map +0 -1
  774. package/.output/server/chunks/build/useOpenInIde-kMZ7Jw5c.mjs.map +0 -1
  775. package/.output/server/chunks/build/useSettingsNav-NjI2seBy.mjs.map +0 -1
  776. package/.output/server/chunks/build/useTauri-lRT8zkLv.mjs +0 -7
  777. package/.output/server/chunks/build/useTauri-lRT8zkLv.mjs.map +0 -1
  778. package/.output/server/chunks/build/useTreeViewCookie-DVYpxW-p.mjs.map +0 -1
  779. package/.output/server/chunks/build/users-NmAUZs3i.mjs.map +0 -1
  780. package/.output/server/chunks/build/virtualizer-ZaqK4guJ.mjs +0 -940
  781. package/.output/server/chunks/build/virtualizer-ZaqK4guJ.mjs.map +0 -1
  782. package/.output/server/chunks/build/wasted-time-CguAF9zc.mjs.map +0 -1
  783. /package/.output/public/_nuxt/{PageStateCard.BrM5HWjY.css → useCopyRich.BrM5HWjY.css} +0 -0
@@ -0,0 +1,1492 @@
1
+ import { _ as _sfc_main$9 } from './Tooltip-Dv4htNP6.mjs';
2
+ import { o as _sfc_main$p, m as _sfc_main$k, n as _sfc_main$7$1, _ as _sfc_main$d$1 } from './server.mjs';
3
+ import { _ as _sfc_main$b } from './Modal-pSDlXzT3.mjs';
4
+ import { _ as _sfc_main$c } from './Alert-C4xq8lao.mjs';
5
+ import { _ as _sfc_main$d } from './FormField-B0HKsdMd.mjs';
6
+ import { _ as _sfc_main$7 } from './Select-5DK9frQ7.mjs';
7
+ import { _ as _sfc_main$e } from './Switch-B5Fp8ULt.mjs';
8
+ import { _ as __nuxt_component_5 } from './CodeBlock-BgE-NSmE.mjs';
9
+ import { defineComponent, useModel, ref, computed, mergeProps, unref, mergeModels, withCtx, createTextVNode, createVNode, isRef, openBlock, createBlock, createCommentVNode, toDisplayString, createSlots, renderSlot, watch, nextTick, Fragment, renderList, onScopeDispose, useSSRContext } from 'vue';
10
+ import { ssrRenderAttrs, ssrRenderClass, ssrRenderSlot, ssrRenderComponent, ssrInterpolate, ssrRenderList, ssrRenderAttr } from 'vue/server-renderer';
11
+ import { e as escapeGrep, t as toPosixPath } from './useOpenInIde-BbTnPhFA.mjs';
12
+ import { _ as __nuxt_component_3, u as useDesktopProjectLink } from './BrowserBadge-MFvBwxmD.mjs';
13
+ import { t as tauriCore, a as tauriEvent } from './useTauri-Kf3HE_42.mjs';
14
+ import { D as isStatusInFlight, E as getStatusIcon, v as getStatusColor, a as formatStatusLabel, e as errorMessage } from './index-CU2nZhAa.mjs';
15
+ import { _ as _sfc_main$8 } from './Tabs-BkSOnbaB.mjs';
16
+ import { _ as _sfc_main$a } from './Card-BQP_oZkQ.mjs';
17
+ import { _ as __nuxt_component_2$1 } from './HelpHint-DrcIv-Oj.mjs';
18
+
19
+ const RUN_MODE_FLAGS = {
20
+ normal: [],
21
+ headed: ["--headed"],
22
+ debug: ["--debug"],
23
+ ui: ["--ui"]
24
+ };
25
+ function groupByProject(cases) {
26
+ const groups = /* @__PURE__ */ new Map();
27
+ for (const c of cases) {
28
+ const key = c.projectName || "";
29
+ if (!groups.has(key)) groups.set(key, []);
30
+ groups.get(key).push(c);
31
+ }
32
+ return groups;
33
+ }
34
+ function specArgs(cases, mode) {
35
+ if (mode === "grep") {
36
+ const escaped = cases.map((c) => escapeGrep(c.title));
37
+ return ["--grep", escaped.length === 1 ? escaped[0] : `(${escaped.join("|")})`];
38
+ }
39
+ const seen = /* @__PURE__ */ new Set();
40
+ const specs = [];
41
+ for (const c of cases) {
42
+ const spec = mode === "file-line" && c.line ? `${toPosixPath(c.filePath)}:${c.line}` : toPosixPath(c.filePath);
43
+ if (seen.has(spec)) continue;
44
+ seen.add(spec);
45
+ specs.push(spec);
46
+ }
47
+ return specs;
48
+ }
49
+ function displayArg(arg) {
50
+ return /[\s"'()|]/.test(arg) ? `"${arg.replace(/"/g, '\\"')}"` : arg;
51
+ }
52
+ function buildLocalRunPlan(cases, options = {}) {
53
+ if (cases.length === 0) return [];
54
+ const mode = options.mode ?? "file-line";
55
+ const runMode = options.runMode ?? "normal";
56
+ const repeatEach = Math.min(1e3, Math.max(1, Math.floor(options.repeatEach ?? 1)));
57
+ const steps = [];
58
+ for (const [project, projectCases] of groupByProject(cases)) {
59
+ const args = specArgs(projectCases, mode);
60
+ if (project) args.push(`--project=${project}`);
61
+ args.push(...RUN_MODE_FLAGS[runMode]);
62
+ if (options.trace) args.push("--trace=on");
63
+ if (repeatEach > 1) args.push(`--repeat-each=${repeatEach}`);
64
+ steps.push({ args, display: ["playwright", "test", ...args.map(displayArg)].join(" ") });
65
+ }
66
+ return steps;
67
+ }
68
+ const MAX_LINES = 2e3;
69
+ function useDesktopLocalRunner() {
70
+ const status = ref("idle");
71
+ const lines = ref([]);
72
+ const exitCode = ref(null);
73
+ const stepIndex = ref(0);
74
+ const stepCount = ref(0);
75
+ const running = computed(() => status.value === "running");
76
+ let currentRunId = null;
77
+ let starting = false;
78
+ let stopped = false;
79
+ let pending = [];
80
+ let unlisten = null;
81
+ let resolveExit = null;
82
+ function pushLine(text, error) {
83
+ lines.value.push({ text, error });
84
+ if (lines.value.length > MAX_LINES) lines.value.splice(0, lines.value.length - MAX_LINES);
85
+ }
86
+ function handleEvent(payload) {
87
+ if (payload.kind === "exit") {
88
+ resolveExit?.(payload.code);
89
+ return;
90
+ }
91
+ pushLine(payload.line ?? "", payload.kind !== "stdout");
92
+ }
93
+ async function ensureListener() {
94
+ if (unlisten) return;
95
+ const events = tauriEvent();
96
+ if (!events) throw new Error("The desktop bridge is unavailable.");
97
+ unlisten = await events.listen("piwi:local-run", ({ payload }) => {
98
+ if (payload.id === currentRunId) {
99
+ handleEvent(payload);
100
+ } else if (starting) {
101
+ pending.push(payload);
102
+ }
103
+ });
104
+ }
105
+ async function runStep(projectId, step) {
106
+ const core = tauriCore();
107
+ if (!core) throw new Error("The desktop bridge is unavailable.");
108
+ const exit = new Promise((resolve) => {
109
+ resolveExit = resolve;
110
+ });
111
+ starting = true;
112
+ pending = [];
113
+ try {
114
+ currentRunId = await core.invoke("desktop_run_local_tests", {
115
+ projectId: String(projectId),
116
+ args: step.args
117
+ });
118
+ } finally {
119
+ starting = false;
120
+ }
121
+ for (const event of pending) {
122
+ if (event.id === currentRunId) handleEvent(event);
123
+ }
124
+ pending = [];
125
+ const code = await exit;
126
+ currentRunId = null;
127
+ resolveExit = null;
128
+ return code;
129
+ }
130
+ async function start(projectId, steps) {
131
+ if (running.value || steps.length === 0) return;
132
+ stopped = false;
133
+ lines.value = [];
134
+ exitCode.value = null;
135
+ stepCount.value = steps.length;
136
+ stepIndex.value = 0;
137
+ status.value = "running";
138
+ try {
139
+ await ensureListener();
140
+ let worst = 0;
141
+ for (const [index, step] of steps.entries()) {
142
+ if (stopped) break;
143
+ stepIndex.value = index;
144
+ if (steps.length > 1) pushLine(`$ ${step.display}`, false);
145
+ const code = await runStep(projectId, step);
146
+ if (stopped) break;
147
+ if (code !== 0) worst = code ?? 1;
148
+ }
149
+ if (stopped) {
150
+ status.value = "stopped";
151
+ } else {
152
+ exitCode.value = typeof worst === "number" ? worst : 1;
153
+ status.value = worst === 0 ? "passed" : "failed";
154
+ }
155
+ } catch (error) {
156
+ pushLine(errorMessage(error), true);
157
+ status.value = "error";
158
+ }
159
+ }
160
+ async function stop() {
161
+ if (!running.value) return;
162
+ stopped = true;
163
+ const core = tauriCore();
164
+ const id = currentRunId;
165
+ if (core && id != null) {
166
+ try {
167
+ await core.invoke("desktop_stop_local_tests", { runId: id });
168
+ } catch {
169
+ }
170
+ }
171
+ resolveExit?.(null);
172
+ status.value = "stopped";
173
+ }
174
+ onScopeDispose(() => {
175
+ if (running.value) void stop();
176
+ unlisten?.();
177
+ unlisten = null;
178
+ });
179
+ return { status, running, lines, exitCode, stepIndex, stepCount, start, stop };
180
+ }
181
+ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
182
+ __name: "DesktopRunLocallyModal",
183
+ __ssrInlineRender: true,
184
+ props: /* @__PURE__ */ mergeModels({
185
+ projectId: {},
186
+ projectLabel: {},
187
+ cases: {}
188
+ }, {
189
+ "open": { type: Boolean, ...{ default: false } },
190
+ "openModifiers": {}
191
+ }),
192
+ emits: ["update:open"],
193
+ setup(__props) {
194
+ const props = __props;
195
+ const open = useModel(__props, "open");
196
+ const { link, busy, pickAndLink } = useDesktopProjectLink(() => props.projectId);
197
+ const { status, running, lines, exitCode, stepIndex, stepCount, start, stop } = useDesktopLocalRunner();
198
+ const mode = ref("file-line");
199
+ const runMode = ref("normal");
200
+ const trace = ref(false);
201
+ const repeatEach = ref(1);
202
+ const modeItems = [
203
+ { label: "File:line", value: "file-line" },
204
+ { label: "Title (grep)", value: "grep" },
205
+ { label: "File only", value: "file" }
206
+ ];
207
+ const runModeItems = [
208
+ { label: "Headless", value: "normal" },
209
+ { label: "Headed", value: "headed" },
210
+ { label: "Debug (inspector)", value: "debug" },
211
+ { label: "UI mode", value: "ui" }
212
+ ];
213
+ const linked = computed(() => !!link.value?.exists);
214
+ const plan = computed(
215
+ () => buildLocalRunPlan(props.cases, {
216
+ mode: mode.value,
217
+ runMode: runMode.value,
218
+ trace: trace.value,
219
+ repeatEach: repeatEach.value
220
+ })
221
+ );
222
+ const preview = computed(() => plan.value.map((s) => s.display).join("\n"));
223
+ const statusBadge = computed(() => {
224
+ switch (status.value) {
225
+ case "running":
226
+ return {
227
+ label: stepCount.value > 1 ? `Running ${stepIndex.value + 1}/${stepCount.value}…` : "Running…",
228
+ color: "info"
229
+ };
230
+ case "passed":
231
+ return { label: "Passed", color: "success" };
232
+ case "failed":
233
+ return { label: exitCode.value != null ? `Failed (exit ${exitCode.value})` : "Failed", color: "error" };
234
+ case "stopped":
235
+ return { label: "Stopped", color: "neutral" };
236
+ case "error":
237
+ return { label: "Could not run", color: "error" };
238
+ default:
239
+ return null;
240
+ }
241
+ });
242
+ async function run() {
243
+ await start(props.projectId, plan.value);
244
+ }
245
+ watch(open, (value) => {
246
+ if (!value && running.value) void stop();
247
+ });
248
+ const outputEl = ref(null);
249
+ watch(
250
+ () => lines.value.length,
251
+ async () => {
252
+ await nextTick();
253
+ outputEl.value?.scrollTo({ top: outputEl.value.scrollHeight });
254
+ }
255
+ );
256
+ return (_ctx, _push, _parent, _attrs) => {
257
+ const _component_UModal = _sfc_main$b;
258
+ const _component_UIcon = _sfc_main$p;
259
+ const _component_UBadge = _sfc_main$7$1;
260
+ const _component_UAlert = _sfc_main$c;
261
+ const _component_UButton = _sfc_main$k;
262
+ const _component_UFormField = _sfc_main$d;
263
+ const _component_USelect = _sfc_main$7;
264
+ const _component_UInput = _sfc_main$d$1;
265
+ const _component_USwitch = _sfc_main$e;
266
+ const _component_CodeBlock = __nuxt_component_5;
267
+ _push(ssrRenderComponent(_component_UModal, mergeProps({
268
+ open: open.value,
269
+ "onUpdate:open": ($event) => open.value = $event,
270
+ ui: { content: "max-w-2xl" }
271
+ }, _attrs), {
272
+ header: withCtx((_, _push2, _parent2, _scopeId) => {
273
+ if (_push2) {
274
+ _push2(`<div class="flex items-center gap-2 min-w-0"${_scopeId}>`);
275
+ _push2(ssrRenderComponent(_component_UIcon, {
276
+ name: "i-lucide-monitor-play",
277
+ class: "size-5 text-primary shrink-0"
278
+ }, null, _parent2, _scopeId));
279
+ _push2(`<h2 class="text-base font-semibold truncate"${_scopeId}>Run tests locally</h2>`);
280
+ _push2(ssrRenderComponent(_component_UBadge, {
281
+ color: "neutral",
282
+ variant: "subtle",
283
+ size: "sm"
284
+ }, {
285
+ default: withCtx((_2, _push3, _parent3, _scopeId2) => {
286
+ if (_push3) {
287
+ _push3(`${ssrInterpolate(__props.cases.length)} test${ssrInterpolate(__props.cases.length === 1 ? "" : "s")}`);
288
+ } else {
289
+ return [
290
+ createTextVNode(toDisplayString(__props.cases.length) + " test" + toDisplayString(__props.cases.length === 1 ? "" : "s"), 1)
291
+ ];
292
+ }
293
+ }),
294
+ _: 1
295
+ }, _parent2, _scopeId));
296
+ _push2(`</div>`);
297
+ } else {
298
+ return [
299
+ createVNode("div", { class: "flex items-center gap-2 min-w-0" }, [
300
+ createVNode(_component_UIcon, {
301
+ name: "i-lucide-monitor-play",
302
+ class: "size-5 text-primary shrink-0"
303
+ }),
304
+ createVNode("h2", { class: "text-base font-semibold truncate" }, "Run tests locally"),
305
+ createVNode(_component_UBadge, {
306
+ color: "neutral",
307
+ variant: "subtle",
308
+ size: "sm"
309
+ }, {
310
+ default: withCtx(() => [
311
+ createTextVNode(toDisplayString(__props.cases.length) + " test" + toDisplayString(__props.cases.length === 1 ? "" : "s"), 1)
312
+ ]),
313
+ _: 1
314
+ })
315
+ ])
316
+ ];
317
+ }
318
+ }),
319
+ body: withCtx((_, _push2, _parent2, _scopeId) => {
320
+ if (_push2) {
321
+ _push2(`<div class="space-y-4"${_scopeId}>`);
322
+ if (!unref(linked)) {
323
+ _push2(`<div class="space-y-3"${_scopeId}><p class="text-sm text-muted"${_scopeId}> Link ${ssrInterpolate(__props.projectLabel || "this project")} to its local checkout — the folder that contains these tests. Piwi runs that folder&#39;s own Playwright with the app&#39;s bundled Node, so nothing else needs to be installed. </p>`);
324
+ if (unref(link) && !unref(link).exists) {
325
+ _push2(ssrRenderComponent(_component_UAlert, {
326
+ color: "warning",
327
+ variant: "soft",
328
+ icon: "i-lucide-folder-x",
329
+ title: "The linked folder no longer exists",
330
+ description: unref(link).path
331
+ }, null, _parent2, _scopeId));
332
+ } else {
333
+ _push2(`<!---->`);
334
+ }
335
+ _push2(ssrRenderComponent(_component_UButton, {
336
+ icon: "i-lucide-folder-plus",
337
+ loading: unref(busy),
338
+ onClick: unref(pickAndLink)
339
+ }, {
340
+ default: withCtx((_2, _push3, _parent3, _scopeId2) => {
341
+ if (_push3) {
342
+ _push3(`Choose folder…`);
343
+ } else {
344
+ return [
345
+ createTextVNode("Choose folder…")
346
+ ];
347
+ }
348
+ }),
349
+ _: 1
350
+ }, _parent2, _scopeId));
351
+ _push2(`</div>`);
352
+ } else {
353
+ _push2(`<!--[--><div class="flex items-center justify-between gap-3"${_scopeId}><div class="flex items-center gap-2 min-w-0 text-sm"${_scopeId}>`);
354
+ _push2(ssrRenderComponent(_component_UIcon, {
355
+ name: "i-lucide-folder-check",
356
+ class: "size-4 text-success shrink-0"
357
+ }, null, _parent2, _scopeId));
358
+ _push2(`<code class="text-xs break-all"${_scopeId}>${ssrInterpolate(unref(link)?.path)}</code></div>`);
359
+ _push2(ssrRenderComponent(_component_UButton, {
360
+ size: "xs",
361
+ color: "neutral",
362
+ variant: "ghost",
363
+ icon: "i-lucide-folder-search",
364
+ loading: unref(busy),
365
+ disabled: unref(running),
366
+ onClick: unref(pickAndLink)
367
+ }, {
368
+ default: withCtx((_2, _push3, _parent3, _scopeId2) => {
369
+ if (_push3) {
370
+ _push3(` Change `);
371
+ } else {
372
+ return [
373
+ createTextVNode(" Change ")
374
+ ];
375
+ }
376
+ }),
377
+ _: 1
378
+ }, _parent2, _scopeId));
379
+ _push2(`</div><div class="grid grid-cols-2 gap-3"${_scopeId}>`);
380
+ _push2(ssrRenderComponent(_component_UFormField, {
381
+ label: "Select tests by",
382
+ name: "mode"
383
+ }, {
384
+ default: withCtx((_2, _push3, _parent3, _scopeId2) => {
385
+ if (_push3) {
386
+ _push3(ssrRenderComponent(_component_USelect, {
387
+ modelValue: unref(mode),
388
+ "onUpdate:modelValue": ($event) => isRef(mode) ? mode.value = $event : null,
389
+ items: modeItems,
390
+ disabled: unref(running),
391
+ class: "w-full"
392
+ }, null, _parent3, _scopeId2));
393
+ } else {
394
+ return [
395
+ createVNode(_component_USelect, {
396
+ modelValue: unref(mode),
397
+ "onUpdate:modelValue": ($event) => isRef(mode) ? mode.value = $event : null,
398
+ items: modeItems,
399
+ disabled: unref(running),
400
+ class: "w-full"
401
+ }, null, 8, ["modelValue", "onUpdate:modelValue", "disabled"])
402
+ ];
403
+ }
404
+ }),
405
+ _: 1
406
+ }, _parent2, _scopeId));
407
+ _push2(ssrRenderComponent(_component_UFormField, {
408
+ label: "Browser",
409
+ name: "runMode"
410
+ }, {
411
+ default: withCtx((_2, _push3, _parent3, _scopeId2) => {
412
+ if (_push3) {
413
+ _push3(ssrRenderComponent(_component_USelect, {
414
+ modelValue: unref(runMode),
415
+ "onUpdate:modelValue": ($event) => isRef(runMode) ? runMode.value = $event : null,
416
+ items: runModeItems,
417
+ disabled: unref(running),
418
+ class: "w-full"
419
+ }, null, _parent3, _scopeId2));
420
+ } else {
421
+ return [
422
+ createVNode(_component_USelect, {
423
+ modelValue: unref(runMode),
424
+ "onUpdate:modelValue": ($event) => isRef(runMode) ? runMode.value = $event : null,
425
+ items: runModeItems,
426
+ disabled: unref(running),
427
+ class: "w-full"
428
+ }, null, 8, ["modelValue", "onUpdate:modelValue", "disabled"])
429
+ ];
430
+ }
431
+ }),
432
+ _: 1
433
+ }, _parent2, _scopeId));
434
+ _push2(ssrRenderComponent(_component_UFormField, {
435
+ label: "Repeat each",
436
+ name: "repeatEach",
437
+ description: "Run every test N times — flake reproduction."
438
+ }, {
439
+ default: withCtx((_2, _push3, _parent3, _scopeId2) => {
440
+ if (_push3) {
441
+ _push3(ssrRenderComponent(_component_UInput, {
442
+ modelValue: unref(repeatEach),
443
+ "onUpdate:modelValue": ($event) => isRef(repeatEach) ? repeatEach.value = $event : null,
444
+ modelModifiers: { number: true },
445
+ type: "number",
446
+ min: "1",
447
+ max: "1000",
448
+ disabled: unref(running),
449
+ class: "w-full"
450
+ }, null, _parent3, _scopeId2));
451
+ } else {
452
+ return [
453
+ createVNode(_component_UInput, {
454
+ modelValue: unref(repeatEach),
455
+ "onUpdate:modelValue": ($event) => isRef(repeatEach) ? repeatEach.value = $event : null,
456
+ modelModifiers: { number: true },
457
+ type: "number",
458
+ min: "1",
459
+ max: "1000",
460
+ disabled: unref(running),
461
+ class: "w-full"
462
+ }, null, 8, ["modelValue", "onUpdate:modelValue", "disabled"])
463
+ ];
464
+ }
465
+ }),
466
+ _: 1
467
+ }, _parent2, _scopeId));
468
+ _push2(ssrRenderComponent(_component_UFormField, {
469
+ label: "Trace",
470
+ name: "trace",
471
+ description: "Force trace recording (--trace=on)."
472
+ }, {
473
+ default: withCtx((_2, _push3, _parent3, _scopeId2) => {
474
+ if (_push3) {
475
+ _push3(ssrRenderComponent(_component_USwitch, {
476
+ modelValue: unref(trace),
477
+ "onUpdate:modelValue": ($event) => isRef(trace) ? trace.value = $event : null,
478
+ disabled: unref(running)
479
+ }, null, _parent3, _scopeId2));
480
+ } else {
481
+ return [
482
+ createVNode(_component_USwitch, {
483
+ modelValue: unref(trace),
484
+ "onUpdate:modelValue": ($event) => isRef(trace) ? trace.value = $event : null,
485
+ disabled: unref(running)
486
+ }, null, 8, ["modelValue", "onUpdate:modelValue", "disabled"])
487
+ ];
488
+ }
489
+ }),
490
+ _: 1
491
+ }, _parent2, _scopeId));
492
+ _push2(`</div><div class="space-y-1"${_scopeId}><div class="text-xs text-muted"${_scopeId}>Runs in the linked folder</div>`);
493
+ _push2(ssrRenderComponent(_component_CodeBlock, {
494
+ code: unref(preview),
495
+ lang: "sh"
496
+ }, null, _parent2, _scopeId));
497
+ _push2(`</div><p class="text-xs text-muted"${_scopeId}> Results are reported by the folder&#39;s own Playwright config — with the Piwi reporter set up, the new run appears in this app automatically. </p>`);
498
+ if (unref(status) !== "idle") {
499
+ _push2(`<div class="space-y-2"${_scopeId}><div class="h-64 overflow-y-auto rounded-md bg-zinc-950 p-3"${_scopeId}><!--[-->`);
500
+ ssrRenderList(unref(lines), (line, i) => {
501
+ _push2(`<p class="${ssrRenderClass([line.error ? "text-red-400" : "text-zinc-300", "font-mono text-xs whitespace-pre-wrap"])}"${_scopeId}>${ssrInterpolate(line.text || " ")}</p>`);
502
+ });
503
+ _push2(`<!--]--></div></div>`);
504
+ } else {
505
+ _push2(`<!---->`);
506
+ }
507
+ _push2(`<!--]-->`);
508
+ }
509
+ _push2(`</div>`);
510
+ } else {
511
+ return [
512
+ createVNode("div", { class: "space-y-4" }, [
513
+ !unref(linked) ? (openBlock(), createBlock("div", {
514
+ key: 0,
515
+ class: "space-y-3"
516
+ }, [
517
+ createVNode("p", { class: "text-sm text-muted" }, " Link " + toDisplayString(__props.projectLabel || "this project") + " to its local checkout — the folder that contains these tests. Piwi runs that folder's own Playwright with the app's bundled Node, so nothing else needs to be installed. ", 1),
518
+ unref(link) && !unref(link).exists ? (openBlock(), createBlock(_component_UAlert, {
519
+ key: 0,
520
+ color: "warning",
521
+ variant: "soft",
522
+ icon: "i-lucide-folder-x",
523
+ title: "The linked folder no longer exists",
524
+ description: unref(link).path
525
+ }, null, 8, ["description"])) : createCommentVNode("", true),
526
+ createVNode(_component_UButton, {
527
+ icon: "i-lucide-folder-plus",
528
+ loading: unref(busy),
529
+ onClick: unref(pickAndLink)
530
+ }, {
531
+ default: withCtx(() => [
532
+ createTextVNode("Choose folder…")
533
+ ]),
534
+ _: 1
535
+ }, 8, ["loading", "onClick"])
536
+ ])) : (openBlock(), createBlock(Fragment, { key: 1 }, [
537
+ createVNode("div", { class: "flex items-center justify-between gap-3" }, [
538
+ createVNode("div", { class: "flex items-center gap-2 min-w-0 text-sm" }, [
539
+ createVNode(_component_UIcon, {
540
+ name: "i-lucide-folder-check",
541
+ class: "size-4 text-success shrink-0"
542
+ }),
543
+ createVNode("code", { class: "text-xs break-all" }, toDisplayString(unref(link)?.path), 1)
544
+ ]),
545
+ createVNode(_component_UButton, {
546
+ size: "xs",
547
+ color: "neutral",
548
+ variant: "ghost",
549
+ icon: "i-lucide-folder-search",
550
+ loading: unref(busy),
551
+ disabled: unref(running),
552
+ onClick: unref(pickAndLink)
553
+ }, {
554
+ default: withCtx(() => [
555
+ createTextVNode(" Change ")
556
+ ]),
557
+ _: 1
558
+ }, 8, ["loading", "disabled", "onClick"])
559
+ ]),
560
+ createVNode("div", { class: "grid grid-cols-2 gap-3" }, [
561
+ createVNode(_component_UFormField, {
562
+ label: "Select tests by",
563
+ name: "mode"
564
+ }, {
565
+ default: withCtx(() => [
566
+ createVNode(_component_USelect, {
567
+ modelValue: unref(mode),
568
+ "onUpdate:modelValue": ($event) => isRef(mode) ? mode.value = $event : null,
569
+ items: modeItems,
570
+ disabled: unref(running),
571
+ class: "w-full"
572
+ }, null, 8, ["modelValue", "onUpdate:modelValue", "disabled"])
573
+ ]),
574
+ _: 1
575
+ }),
576
+ createVNode(_component_UFormField, {
577
+ label: "Browser",
578
+ name: "runMode"
579
+ }, {
580
+ default: withCtx(() => [
581
+ createVNode(_component_USelect, {
582
+ modelValue: unref(runMode),
583
+ "onUpdate:modelValue": ($event) => isRef(runMode) ? runMode.value = $event : null,
584
+ items: runModeItems,
585
+ disabled: unref(running),
586
+ class: "w-full"
587
+ }, null, 8, ["modelValue", "onUpdate:modelValue", "disabled"])
588
+ ]),
589
+ _: 1
590
+ }),
591
+ createVNode(_component_UFormField, {
592
+ label: "Repeat each",
593
+ name: "repeatEach",
594
+ description: "Run every test N times — flake reproduction."
595
+ }, {
596
+ default: withCtx(() => [
597
+ createVNode(_component_UInput, {
598
+ modelValue: unref(repeatEach),
599
+ "onUpdate:modelValue": ($event) => isRef(repeatEach) ? repeatEach.value = $event : null,
600
+ modelModifiers: { number: true },
601
+ type: "number",
602
+ min: "1",
603
+ max: "1000",
604
+ disabled: unref(running),
605
+ class: "w-full"
606
+ }, null, 8, ["modelValue", "onUpdate:modelValue", "disabled"])
607
+ ]),
608
+ _: 1
609
+ }),
610
+ createVNode(_component_UFormField, {
611
+ label: "Trace",
612
+ name: "trace",
613
+ description: "Force trace recording (--trace=on)."
614
+ }, {
615
+ default: withCtx(() => [
616
+ createVNode(_component_USwitch, {
617
+ modelValue: unref(trace),
618
+ "onUpdate:modelValue": ($event) => isRef(trace) ? trace.value = $event : null,
619
+ disabled: unref(running)
620
+ }, null, 8, ["modelValue", "onUpdate:modelValue", "disabled"])
621
+ ]),
622
+ _: 1
623
+ })
624
+ ]),
625
+ createVNode("div", { class: "space-y-1" }, [
626
+ createVNode("div", { class: "text-xs text-muted" }, "Runs in the linked folder"),
627
+ createVNode(_component_CodeBlock, {
628
+ code: unref(preview),
629
+ lang: "sh"
630
+ }, null, 8, ["code"])
631
+ ]),
632
+ createVNode("p", { class: "text-xs text-muted" }, " Results are reported by the folder's own Playwright config — with the Piwi reporter set up, the new run appears in this app automatically. "),
633
+ unref(status) !== "idle" ? (openBlock(), createBlock("div", {
634
+ key: 0,
635
+ class: "space-y-2"
636
+ }, [
637
+ createVNode("div", {
638
+ ref_key: "outputEl",
639
+ ref: outputEl,
640
+ class: "h-64 overflow-y-auto rounded-md bg-zinc-950 p-3"
641
+ }, [
642
+ (openBlock(true), createBlock(Fragment, null, renderList(unref(lines), (line, i) => {
643
+ return openBlock(), createBlock("p", {
644
+ key: i,
645
+ class: ["font-mono text-xs whitespace-pre-wrap", line.error ? "text-red-400" : "text-zinc-300"]
646
+ }, toDisplayString(line.text || " "), 3);
647
+ }), 128))
648
+ ], 512)
649
+ ])) : createCommentVNode("", true)
650
+ ], 64))
651
+ ])
652
+ ];
653
+ }
654
+ }),
655
+ footer: withCtx((_, _push2, _parent2, _scopeId) => {
656
+ if (_push2) {
657
+ _push2(`<div class="flex items-center justify-between w-full gap-3"${_scopeId}>`);
658
+ if (unref(statusBadge)) {
659
+ _push2(ssrRenderComponent(_component_UBadge, {
660
+ color: unref(statusBadge).color,
661
+ variant: "subtle"
662
+ }, {
663
+ default: withCtx((_2, _push3, _parent3, _scopeId2) => {
664
+ if (_push3) {
665
+ _push3(`${ssrInterpolate(unref(statusBadge).label)}`);
666
+ } else {
667
+ return [
668
+ createTextVNode(toDisplayString(unref(statusBadge).label), 1)
669
+ ];
670
+ }
671
+ }),
672
+ _: 1
673
+ }, _parent2, _scopeId));
674
+ } else {
675
+ _push2(`<span${_scopeId}></span>`);
676
+ }
677
+ _push2(`<div class="flex items-center gap-2"${_scopeId}>`);
678
+ _push2(ssrRenderComponent(_component_UButton, {
679
+ color: "neutral",
680
+ variant: "ghost",
681
+ onClick: ($event) => open.value = false
682
+ }, {
683
+ default: withCtx((_2, _push3, _parent3, _scopeId2) => {
684
+ if (_push3) {
685
+ _push3(`Close`);
686
+ } else {
687
+ return [
688
+ createTextVNode("Close")
689
+ ];
690
+ }
691
+ }),
692
+ _: 1
693
+ }, _parent2, _scopeId));
694
+ if (unref(running)) {
695
+ _push2(ssrRenderComponent(_component_UButton, {
696
+ color: "error",
697
+ icon: "i-lucide-square",
698
+ onClick: ($event) => unref(stop)()
699
+ }, {
700
+ default: withCtx((_2, _push3, _parent3, _scopeId2) => {
701
+ if (_push3) {
702
+ _push3(`Stop`);
703
+ } else {
704
+ return [
705
+ createTextVNode("Stop")
706
+ ];
707
+ }
708
+ }),
709
+ _: 1
710
+ }, _parent2, _scopeId));
711
+ } else {
712
+ _push2(ssrRenderComponent(_component_UButton, {
713
+ icon: "i-lucide-play",
714
+ disabled: !unref(linked) || unref(plan).length === 0 || unref(busy),
715
+ onClick: ($event) => run()
716
+ }, {
717
+ default: withCtx((_2, _push3, _parent3, _scopeId2) => {
718
+ if (_push3) {
719
+ _push3(`${ssrInterpolate(unref(status) === "idle" ? "Run" : "Run again")}`);
720
+ } else {
721
+ return [
722
+ createTextVNode(toDisplayString(unref(status) === "idle" ? "Run" : "Run again"), 1)
723
+ ];
724
+ }
725
+ }),
726
+ _: 1
727
+ }, _parent2, _scopeId));
728
+ }
729
+ _push2(`</div></div>`);
730
+ } else {
731
+ return [
732
+ createVNode("div", { class: "flex items-center justify-between w-full gap-3" }, [
733
+ unref(statusBadge) ? (openBlock(), createBlock(_component_UBadge, {
734
+ key: 0,
735
+ color: unref(statusBadge).color,
736
+ variant: "subtle"
737
+ }, {
738
+ default: withCtx(() => [
739
+ createTextVNode(toDisplayString(unref(statusBadge).label), 1)
740
+ ]),
741
+ _: 1
742
+ }, 8, ["color"])) : (openBlock(), createBlock("span", { key: 1 })),
743
+ createVNode("div", { class: "flex items-center gap-2" }, [
744
+ createVNode(_component_UButton, {
745
+ color: "neutral",
746
+ variant: "ghost",
747
+ onClick: ($event) => open.value = false
748
+ }, {
749
+ default: withCtx(() => [
750
+ createTextVNode("Close")
751
+ ]),
752
+ _: 1
753
+ }, 8, ["onClick"]),
754
+ unref(running) ? (openBlock(), createBlock(_component_UButton, {
755
+ key: 0,
756
+ color: "error",
757
+ icon: "i-lucide-square",
758
+ onClick: ($event) => unref(stop)()
759
+ }, {
760
+ default: withCtx(() => [
761
+ createTextVNode("Stop")
762
+ ]),
763
+ _: 1
764
+ }, 8, ["onClick"])) : (openBlock(), createBlock(_component_UButton, {
765
+ key: 1,
766
+ icon: "i-lucide-play",
767
+ disabled: !unref(linked) || unref(plan).length === 0 || unref(busy),
768
+ onClick: ($event) => run()
769
+ }, {
770
+ default: withCtx(() => [
771
+ createTextVNode(toDisplayString(unref(status) === "idle" ? "Run" : "Run again"), 1)
772
+ ]),
773
+ _: 1
774
+ }, 8, ["disabled", "onClick"]))
775
+ ])
776
+ ])
777
+ ];
778
+ }
779
+ }),
780
+ _: 1
781
+ }, _parent));
782
+ };
783
+ }
784
+ });
785
+ const _sfc_setup$6 = _sfc_main$6.setup;
786
+ _sfc_main$6.setup = (props, ctx) => {
787
+ const ssrContext = useSSRContext();
788
+ (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/desktop/DesktopRunLocallyModal.vue");
789
+ return _sfc_setup$6 ? _sfc_setup$6(props, ctx) : void 0;
790
+ };
791
+ const __nuxt_component_2 = Object.assign(_sfc_main$6, { __name: "DesktopRunLocallyModal" });
792
+ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
793
+ __name: "DesktopRunLocallyButton",
794
+ __ssrInlineRender: true,
795
+ props: {
796
+ projectId: {},
797
+ projectLabel: {},
798
+ cases: {}
799
+ },
800
+ setup(__props) {
801
+ const props = __props;
802
+ const available = ref(false);
803
+ const open = ref(false);
804
+ const canRun = computed(() => available.value && props.projectId != null && props.cases.length > 0);
805
+ return (_ctx, _push, _parent, _attrs) => {
806
+ const _component_UTooltip = _sfc_main$9;
807
+ const _component_UButton = _sfc_main$k;
808
+ const _component_DesktopRunLocallyModal = __nuxt_component_2;
809
+ if (unref(canRun)) {
810
+ _push(`<span${ssrRenderAttrs(mergeProps({ class: "inline-flex" }, _attrs))}>`);
811
+ _push(ssrRenderComponent(_component_UTooltip, { text: "Run these tests on this machine" }, {
812
+ default: withCtx((_, _push2, _parent2, _scopeId) => {
813
+ if (_push2) {
814
+ _push2(ssrRenderComponent(_component_UButton, {
815
+ size: "xs",
816
+ color: "warning",
817
+ variant: "subtle",
818
+ icon: "i-lucide-monitor-play",
819
+ onClick: ($event) => open.value = true
820
+ }, {
821
+ default: withCtx((_2, _push3, _parent3, _scopeId2) => {
822
+ if (_push3) {
823
+ _push3(` Run locally `);
824
+ } else {
825
+ return [
826
+ createTextVNode(" Run locally ")
827
+ ];
828
+ }
829
+ }),
830
+ _: 1
831
+ }, _parent2, _scopeId));
832
+ } else {
833
+ return [
834
+ createVNode(_component_UButton, {
835
+ size: "xs",
836
+ color: "warning",
837
+ variant: "subtle",
838
+ icon: "i-lucide-monitor-play",
839
+ onClick: ($event) => open.value = true
840
+ }, {
841
+ default: withCtx(() => [
842
+ createTextVNode(" Run locally ")
843
+ ]),
844
+ _: 1
845
+ }, 8, ["onClick"])
846
+ ];
847
+ }
848
+ }),
849
+ _: 1
850
+ }, _parent));
851
+ _push(ssrRenderComponent(_component_DesktopRunLocallyModal, {
852
+ open: unref(open),
853
+ "onUpdate:open": ($event) => isRef(open) ? open.value = $event : null,
854
+ "project-id": __props.projectId,
855
+ "project-label": __props.projectLabel,
856
+ cases: __props.cases
857
+ }, null, _parent));
858
+ _push(`</span>`);
859
+ } else {
860
+ _push(`<!---->`);
861
+ }
862
+ };
863
+ }
864
+ });
865
+ const _sfc_setup$5 = _sfc_main$5.setup;
866
+ _sfc_main$5.setup = (props, ctx) => {
867
+ const ssrContext = useSSRContext();
868
+ (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/desktop/DesktopRunLocallyButton.vue");
869
+ return _sfc_setup$5 ? _sfc_setup$5(props, ctx) : void 0;
870
+ };
871
+ const __nuxt_component_13 = Object.assign(_sfc_main$5, { __name: "DesktopRunLocallyButton" });
872
+ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
873
+ __name: "DetailPageLayout",
874
+ __ssrInlineRender: true,
875
+ props: /* @__PURE__ */ mergeModels({
876
+ tabItems: {},
877
+ tabPanelClass: {}
878
+ }, {
879
+ "modelValue": { required: true },
880
+ "modelModifiers": {}
881
+ }),
882
+ emits: ["update:modelValue"],
883
+ setup(__props) {
884
+ const props = __props;
885
+ const activeTab = useModel(__props, "modelValue");
886
+ const summaryCollapsed = ref(false);
887
+ const activeTabIcon = computed(() => props.tabItems.find((t) => t.value === activeTab.value)?.icon);
888
+ function panelClasses(value) {
889
+ const desktop = props.tabPanelClass?.[value] ?? "overflow-y-auto";
890
+ return ["min-h-0", "lg:flex-1", desktop, "max-lg:!block", "max-lg:!overflow-visible"];
891
+ }
892
+ return (_ctx, _push, _parent, _attrs) => {
893
+ const _component_UIcon = _sfc_main$p;
894
+ const _component_USelect = _sfc_main$7;
895
+ const _component_UTabs = _sfc_main$8;
896
+ _push(`<div${ssrRenderAttrs(mergeProps({ class: "flex flex-col h-full gap-4 p-1 max-lg:overflow-y-auto lg:overflow-hidden" }, _attrs))}>`);
897
+ if (_ctx.$slots.summary) {
898
+ _push(`<div class="lg:shrink-0"><div class="${ssrRenderClass(unref(summaryCollapsed) ? "max-lg:hidden" : "")}">`);
899
+ ssrRenderSlot(_ctx.$slots, "summary", {}, null, _push, _parent);
900
+ _push(`</div><button type="button" class="lg:hidden mt-2 w-full flex items-center justify-center gap-1 rounded-md border border-default py-1.5 text-xs font-medium text-muted hover:bg-elevated/60 transition-colors">`);
901
+ _push(ssrRenderComponent(_component_UIcon, {
902
+ name: unref(summaryCollapsed) ? "i-lucide-chevron-down" : "i-lucide-chevron-up",
903
+ class: "size-3.5"
904
+ }, null, _parent));
905
+ _push(` ${ssrInterpolate(unref(summaryCollapsed) ? "Show summary" : "Hide summary")}</button></div>`);
906
+ } else {
907
+ _push(`<!---->`);
908
+ }
909
+ _push(`<div class="lg:shrink-0 max-lg:sticky max-lg:top-0 max-lg:z-10 max-lg:-mx-1 max-lg:bg-(--ui-bg-canvas) max-lg:px-1 max-lg:py-1.5">`);
910
+ _push(ssrRenderComponent(_component_USelect, {
911
+ modelValue: activeTab.value,
912
+ "onUpdate:modelValue": ($event) => activeTab.value = $event,
913
+ items: __props.tabItems,
914
+ icon: unref(activeTabIcon),
915
+ size: "md",
916
+ class: "w-full sm:hidden"
917
+ }, null, _parent));
918
+ _push(ssrRenderComponent(_component_UTabs, {
919
+ modelValue: activeTab.value,
920
+ "onUpdate:modelValue": ($event) => activeTab.value = $event,
921
+ items: __props.tabItems,
922
+ size: "sm",
923
+ class: "hidden sm:flex",
924
+ ui: { list: "overflow-x-auto", trigger: "shrink-0" }
925
+ }, null, _parent));
926
+ _push(`</div><!--[-->`);
927
+ ssrRenderList(__props.tabItems, (item) => {
928
+ _push(`<!--[-->`);
929
+ if (activeTab.value === item.value) {
930
+ _push(`<div class="${ssrRenderClass(panelClasses(item.value))}">`);
931
+ ssrRenderSlot(_ctx.$slots, `tab-${item.slot ?? item.value}`, {}, null, _push, _parent);
932
+ _push(`</div>`);
933
+ } else {
934
+ _push(`<!---->`);
935
+ }
936
+ _push(`<!--]-->`);
937
+ });
938
+ _push(`<!--]--></div>`);
939
+ };
940
+ }
941
+ });
942
+ const _sfc_setup$4 = _sfc_main$4.setup;
943
+ _sfc_main$4.setup = (props, ctx) => {
944
+ const ssrContext = useSSRContext();
945
+ (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/shared/DetailPageLayout.vue");
946
+ return _sfc_setup$4 ? _sfc_setup$4(props, ctx) : void 0;
947
+ };
948
+ const __nuxt_component_8 = Object.assign(_sfc_main$4, { __name: "DetailPageLayout" });
949
+ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
950
+ __name: "StatusBlock",
951
+ __ssrInlineRender: true,
952
+ props: {
953
+ status: {},
954
+ size: {}
955
+ },
956
+ setup(__props) {
957
+ return (_ctx, _push, _parent, _attrs) => {
958
+ const _component_UIcon = _sfc_main$p;
959
+ const _component_UBadge = _sfc_main$7$1;
960
+ _push(`<div${ssrRenderAttrs(mergeProps({ class: "flex items-center gap-2.5" }, _attrs))}><div class="${ssrRenderClass([[
961
+ __props.size === "sm" ? "size-7" : "size-8",
962
+ {
963
+ "bg-emerald-100 text-emerald-700 dark:bg-emerald-900/40 dark:text-emerald-400": __props.status === "passed",
964
+ "bg-rose-100 text-rose-700 dark:bg-rose-900/40 dark:text-rose-400": __props.status === "failed" || __props.status === "timedout",
965
+ "bg-zinc-100 text-zinc-600 dark:bg-zinc-800 dark:text-zinc-400": __props.status === "cancelled" || __props.status === "skipped",
966
+ "bg-amber-100 text-amber-700 dark:bg-amber-900/40 dark:text-amber-400": __props.status === "didnotrun",
967
+ "bg-blue-100 text-blue-700 dark:bg-blue-900/40 dark:text-blue-400": __props.status === "running" || __props.status === "initialising" || __props.status === "finalizing"
968
+ }
969
+ ], "shrink-0 rounded-lg flex items-center justify-center"])}">`);
970
+ _push(ssrRenderComponent(_component_UIcon, {
971
+ name: ("getStatusIcon" in _ctx ? _ctx.getStatusIcon : unref(getStatusIcon))(__props.status),
972
+ class: [__props.size === "sm" ? "size-3.5" : "size-4.5", { "animate-spin": ("isStatusInFlight" in _ctx ? _ctx.isStatusInFlight : unref(isStatusInFlight))(__props.status) }]
973
+ }, null, _parent));
974
+ _push(`</div>`);
975
+ _push(ssrRenderComponent(_component_UBadge, {
976
+ color: ("getStatusColor" in _ctx ? _ctx.getStatusColor : unref(getStatusColor))(__props.status),
977
+ variant: "subtle",
978
+ class: "capitalize gap-1 items-center"
979
+ }, {
980
+ default: withCtx((_, _push2, _parent2, _scopeId) => {
981
+ if (_push2) {
982
+ if (("isStatusInFlight" in _ctx ? _ctx.isStatusInFlight : unref(isStatusInFlight))(__props.status)) {
983
+ _push2(ssrRenderComponent(_component_UIcon, {
984
+ name: "i-lucide-loader-circle",
985
+ class: "size-3 animate-spin shrink-0"
986
+ }, null, _parent2, _scopeId));
987
+ } else {
988
+ _push2(`<!---->`);
989
+ }
990
+ _push2(` ${ssrInterpolate(("formatStatusLabel" in _ctx ? _ctx.formatStatusLabel : unref(formatStatusLabel))(__props.status))}`);
991
+ } else {
992
+ return [
993
+ ("isStatusInFlight" in _ctx ? _ctx.isStatusInFlight : unref(isStatusInFlight))(__props.status) ? (openBlock(), createBlock(_component_UIcon, {
994
+ key: 0,
995
+ name: "i-lucide-loader-circle",
996
+ class: "size-3 animate-spin shrink-0"
997
+ })) : createCommentVNode("", true),
998
+ createTextVNode(" " + toDisplayString(("formatStatusLabel" in _ctx ? _ctx.formatStatusLabel : unref(formatStatusLabel))(__props.status)), 1)
999
+ ];
1000
+ }
1001
+ }),
1002
+ _: 1
1003
+ }, _parent));
1004
+ _push(`</div>`);
1005
+ };
1006
+ }
1007
+ });
1008
+ const _sfc_setup$3 = _sfc_main$3.setup;
1009
+ _sfc_main$3.setup = (props, ctx) => {
1010
+ const ssrContext = useSSRContext();
1011
+ (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/shared/StatusBlock.vue");
1012
+ return _sfc_setup$3 ? _sfc_setup$3(props, ctx) : void 0;
1013
+ };
1014
+ const __nuxt_component_1 = Object.assign(_sfc_main$3, { __name: "StatusBlock" });
1015
+ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
1016
+ __name: "BlockCard",
1017
+ __ssrInlineRender: true,
1018
+ props: {
1019
+ title: {},
1020
+ icon: {},
1021
+ subtitle: {},
1022
+ iconClass: { default: "text-primary" },
1023
+ help: {}
1024
+ },
1025
+ setup(__props) {
1026
+ return (_ctx, _push, _parent, _attrs) => {
1027
+ const _component_UCard = _sfc_main$a;
1028
+ const _component_UIcon = _sfc_main$p;
1029
+ const _component_HelpHint = __nuxt_component_2$1;
1030
+ _push(ssrRenderComponent(_component_UCard, mergeProps({
1031
+ class: "shadow-xs",
1032
+ ui: { header: "px-3 py-2.5 sm:px-3", body: "p-3 sm:p-3" }
1033
+ }, _attrs), createSlots({
1034
+ header: withCtx((_, _push2, _parent2, _scopeId) => {
1035
+ if (_push2) {
1036
+ _push2(`<div class="flex items-start justify-between gap-2"${_scopeId}><div class="flex items-center gap-2 min-w-0"${_scopeId}>`);
1037
+ if (__props.icon) {
1038
+ _push2(ssrRenderComponent(_component_UIcon, {
1039
+ name: __props.icon,
1040
+ class: ["w-4 h-4 shrink-0", __props.iconClass]
1041
+ }, null, _parent2, _scopeId));
1042
+ } else {
1043
+ _push2(`<!---->`);
1044
+ }
1045
+ _push2(`<div class="min-w-0"${_scopeId}><span class="text-sm font-medium inline-flex items-center gap-1"${_scopeId}>${ssrInterpolate(__props.title)}`);
1046
+ if (__props.help) {
1047
+ _push2(ssrRenderComponent(_component_HelpHint, { topic: __props.help }, null, _parent2, _scopeId));
1048
+ } else {
1049
+ _push2(`<!---->`);
1050
+ }
1051
+ _push2(`</span>`);
1052
+ if (__props.subtitle || _ctx.$slots.subtitle) {
1053
+ _push2(`<p class="text-xs text-gray-400 mt-0.5"${_scopeId}>`);
1054
+ ssrRenderSlot(_ctx.$slots, "subtitle", {}, () => {
1055
+ _push2(`${ssrInterpolate(__props.subtitle)}`);
1056
+ }, _push2, _parent2, _scopeId);
1057
+ _push2(`</p>`);
1058
+ } else {
1059
+ _push2(`<!---->`);
1060
+ }
1061
+ _push2(`</div></div>`);
1062
+ if (_ctx.$slots.actions) {
1063
+ _push2(`<div class="flex items-center gap-1 shrink-0"${_scopeId}>`);
1064
+ ssrRenderSlot(_ctx.$slots, "actions", {}, null, _push2, _parent2, _scopeId);
1065
+ _push2(`</div>`);
1066
+ } else {
1067
+ _push2(`<!---->`);
1068
+ }
1069
+ _push2(`</div>`);
1070
+ } else {
1071
+ return [
1072
+ createVNode("div", { class: "flex items-start justify-between gap-2" }, [
1073
+ createVNode("div", { class: "flex items-center gap-2 min-w-0" }, [
1074
+ __props.icon ? (openBlock(), createBlock(_component_UIcon, {
1075
+ key: 0,
1076
+ name: __props.icon,
1077
+ class: ["w-4 h-4 shrink-0", __props.iconClass]
1078
+ }, null, 8, ["name", "class"])) : createCommentVNode("", true),
1079
+ createVNode("div", { class: "min-w-0" }, [
1080
+ createVNode("span", { class: "text-sm font-medium inline-flex items-center gap-1" }, [
1081
+ createTextVNode(toDisplayString(__props.title), 1),
1082
+ __props.help ? (openBlock(), createBlock(_component_HelpHint, {
1083
+ key: 0,
1084
+ topic: __props.help
1085
+ }, null, 8, ["topic"])) : createCommentVNode("", true)
1086
+ ]),
1087
+ __props.subtitle || _ctx.$slots.subtitle ? (openBlock(), createBlock("p", {
1088
+ key: 0,
1089
+ class: "text-xs text-gray-400 mt-0.5"
1090
+ }, [
1091
+ renderSlot(_ctx.$slots, "subtitle", {}, () => [
1092
+ createTextVNode(toDisplayString(__props.subtitle), 1)
1093
+ ])
1094
+ ])) : createCommentVNode("", true)
1095
+ ])
1096
+ ]),
1097
+ _ctx.$slots.actions ? (openBlock(), createBlock("div", {
1098
+ key: 0,
1099
+ class: "flex items-center gap-1 shrink-0"
1100
+ }, [
1101
+ renderSlot(_ctx.$slots, "actions")
1102
+ ])) : createCommentVNode("", true)
1103
+ ])
1104
+ ];
1105
+ }
1106
+ }),
1107
+ default: withCtx((_, _push2, _parent2, _scopeId) => {
1108
+ if (_push2) {
1109
+ ssrRenderSlot(_ctx.$slots, "default", {}, null, _push2, _parent2, _scopeId);
1110
+ } else {
1111
+ return [
1112
+ renderSlot(_ctx.$slots, "default")
1113
+ ];
1114
+ }
1115
+ }),
1116
+ _: 2
1117
+ }, [
1118
+ _ctx.$slots.footer ? {
1119
+ name: "footer",
1120
+ fn: withCtx((_, _push2, _parent2, _scopeId) => {
1121
+ if (_push2) {
1122
+ ssrRenderSlot(_ctx.$slots, "footer", {}, null, _push2, _parent2, _scopeId);
1123
+ } else {
1124
+ return [
1125
+ renderSlot(_ctx.$slots, "footer")
1126
+ ];
1127
+ }
1128
+ }),
1129
+ key: "0"
1130
+ } : void 0
1131
+ ]), _parent));
1132
+ };
1133
+ }
1134
+ });
1135
+ const _sfc_setup$2 = _sfc_main$2.setup;
1136
+ _sfc_main$2.setup = (props, ctx) => {
1137
+ const ssrContext = useSSRContext();
1138
+ (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/shared/BlockCard.vue");
1139
+ return _sfc_setup$2 ? _sfc_setup$2(props, ctx) : void 0;
1140
+ };
1141
+ const __nuxt_component_16 = Object.assign(_sfc_main$2, { __name: "BlockCard" });
1142
+ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
1143
+ __name: "SourceInfoCard",
1144
+ __ssrInlineRender: true,
1145
+ props: {
1146
+ scm: {},
1147
+ class: {}
1148
+ },
1149
+ setup(__props) {
1150
+ return (_ctx, _push, _parent, _attrs) => {
1151
+ const _component_BlockCard = __nuxt_component_16;
1152
+ const _component_UIcon = _sfc_main$p;
1153
+ _push(ssrRenderComponent(_component_BlockCard, mergeProps({
1154
+ class: _ctx.$props.class,
1155
+ title: "Source",
1156
+ icon: "i-lucide-git-branch"
1157
+ }, _attrs), {
1158
+ default: withCtx((_, _push2, _parent2, _scopeId) => {
1159
+ if (_push2) {
1160
+ _push2(`<div class="space-y-1.5 text-sm"${_scopeId}>`);
1161
+ if (__props.scm.branch || __props.scm.commit || __props.scm.author) {
1162
+ _push2(`<div class="flex items-center gap-x-3 gap-y-1 flex-wrap"${_scopeId}>`);
1163
+ if (__props.scm.branch) {
1164
+ _push2(`<span class="flex items-center gap-1.5"${_scopeId}>`);
1165
+ _push2(ssrRenderComponent(_component_UIcon, {
1166
+ name: "i-lucide-git-branch",
1167
+ class: "w-3.5 h-3.5 text-gray-400 shrink-0"
1168
+ }, null, _parent2, _scopeId));
1169
+ _push2(`<span class="font-medium"${_scopeId}>${ssrInterpolate(__props.scm.branch)}</span></span>`);
1170
+ } else {
1171
+ _push2(`<!---->`);
1172
+ }
1173
+ if (__props.scm.commit) {
1174
+ _push2(`<span class="flex items-center gap-1.5"${_scopeId}>`);
1175
+ _push2(ssrRenderComponent(_component_UIcon, {
1176
+ name: "i-lucide-git-commit-horizontal",
1177
+ class: "w-3.5 h-3.5 text-gray-400 shrink-0"
1178
+ }, null, _parent2, _scopeId));
1179
+ _push2(`<code class="text-xs font-mono bg-gray-100 dark:bg-gray-800 px-1 rounded"${_scopeId}>${ssrInterpolate(__props.scm.commit.length >= 8 ? __props.scm.commit.substring(0, 8) : __props.scm.commit)}</code></span>`);
1180
+ } else {
1181
+ _push2(`<!---->`);
1182
+ }
1183
+ if (__props.scm.author) {
1184
+ _push2(`<span class="flex items-center gap-1.5"${_scopeId}>`);
1185
+ _push2(ssrRenderComponent(_component_UIcon, {
1186
+ name: "i-lucide-user",
1187
+ class: "w-3.5 h-3.5 text-gray-400 shrink-0"
1188
+ }, null, _parent2, _scopeId));
1189
+ _push2(`<span class="text-gray-600 dark:text-gray-400"${_scopeId}>${ssrInterpolate(__props.scm.author)}</span></span>`);
1190
+ } else {
1191
+ _push2(`<!---->`);
1192
+ }
1193
+ _push2(`</div>`);
1194
+ } else {
1195
+ _push2(`<!---->`);
1196
+ }
1197
+ if (__props.scm.commitMessage) {
1198
+ _push2(`<p class="text-gray-400 text-xs break-words"${_scopeId}>${ssrInterpolate(__props.scm.commitMessage)}</p>`);
1199
+ } else {
1200
+ _push2(`<!---->`);
1201
+ }
1202
+ _push2(`</div>`);
1203
+ } else {
1204
+ return [
1205
+ createVNode("div", { class: "space-y-1.5 text-sm" }, [
1206
+ __props.scm.branch || __props.scm.commit || __props.scm.author ? (openBlock(), createBlock("div", {
1207
+ key: 0,
1208
+ class: "flex items-center gap-x-3 gap-y-1 flex-wrap"
1209
+ }, [
1210
+ __props.scm.branch ? (openBlock(), createBlock("span", {
1211
+ key: 0,
1212
+ class: "flex items-center gap-1.5"
1213
+ }, [
1214
+ createVNode(_component_UIcon, {
1215
+ name: "i-lucide-git-branch",
1216
+ class: "w-3.5 h-3.5 text-gray-400 shrink-0"
1217
+ }),
1218
+ createVNode("span", { class: "font-medium" }, toDisplayString(__props.scm.branch), 1)
1219
+ ])) : createCommentVNode("", true),
1220
+ __props.scm.commit ? (openBlock(), createBlock("span", {
1221
+ key: 1,
1222
+ class: "flex items-center gap-1.5"
1223
+ }, [
1224
+ createVNode(_component_UIcon, {
1225
+ name: "i-lucide-git-commit-horizontal",
1226
+ class: "w-3.5 h-3.5 text-gray-400 shrink-0"
1227
+ }),
1228
+ createVNode("code", { class: "text-xs font-mono bg-gray-100 dark:bg-gray-800 px-1 rounded" }, toDisplayString(__props.scm.commit.length >= 8 ? __props.scm.commit.substring(0, 8) : __props.scm.commit), 1)
1229
+ ])) : createCommentVNode("", true),
1230
+ __props.scm.author ? (openBlock(), createBlock("span", {
1231
+ key: 2,
1232
+ class: "flex items-center gap-1.5"
1233
+ }, [
1234
+ createVNode(_component_UIcon, {
1235
+ name: "i-lucide-user",
1236
+ class: "w-3.5 h-3.5 text-gray-400 shrink-0"
1237
+ }),
1238
+ createVNode("span", { class: "text-gray-600 dark:text-gray-400" }, toDisplayString(__props.scm.author), 1)
1239
+ ])) : createCommentVNode("", true)
1240
+ ])) : createCommentVNode("", true),
1241
+ __props.scm.commitMessage ? (openBlock(), createBlock("p", {
1242
+ key: 1,
1243
+ class: "text-gray-400 text-xs break-words"
1244
+ }, toDisplayString(__props.scm.commitMessage), 1)) : createCommentVNode("", true)
1245
+ ])
1246
+ ];
1247
+ }
1248
+ }),
1249
+ _: 1
1250
+ }, _parent));
1251
+ };
1252
+ }
1253
+ });
1254
+ const _sfc_setup$1 = _sfc_main$1.setup;
1255
+ _sfc_main$1.setup = (props, ctx) => {
1256
+ const ssrContext = useSSRContext();
1257
+ (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/shared/SourceInfoCard.vue");
1258
+ return _sfc_setup$1 ? _sfc_setup$1(props, ctx) : void 0;
1259
+ };
1260
+ const __nuxt_component_15 = Object.assign(_sfc_main$1, { __name: "SourceInfoCard" });
1261
+ const _sfc_main = /* @__PURE__ */ defineComponent({
1262
+ __name: "CiEnvCard",
1263
+ __ssrInlineRender: true,
1264
+ props: {
1265
+ ci: {},
1266
+ environment: {},
1267
+ playwrightVersion: {},
1268
+ reporterVersion: {},
1269
+ browser: {},
1270
+ class: {}
1271
+ },
1272
+ setup(__props) {
1273
+ return (_ctx, _push, _parent, _attrs) => {
1274
+ const _component_BlockCard = __nuxt_component_16;
1275
+ const _component_UIcon = _sfc_main$p;
1276
+ const _component_BrowserBadge = __nuxt_component_3;
1277
+ _push(ssrRenderComponent(_component_BlockCard, mergeProps({
1278
+ class: _ctx.$props.class,
1279
+ title: "CI / Env",
1280
+ icon: "i-lucide-cloud",
1281
+ help: "run.ci-env"
1282
+ }, _attrs), {
1283
+ default: withCtx((_, _push2, _parent2, _scopeId) => {
1284
+ if (_push2) {
1285
+ _push2(`<div class="space-y-1.5 text-sm"${_scopeId}>`);
1286
+ if (__props.environment || __props.ci?.provider) {
1287
+ _push2(`<div class="flex items-center gap-x-2 gap-y-1 flex-wrap"${_scopeId}>`);
1288
+ _push2(ssrRenderComponent(_component_UIcon, {
1289
+ name: "i-lucide-cloud",
1290
+ class: "w-3.5 h-3.5 text-gray-400 shrink-0"
1291
+ }, null, _parent2, _scopeId));
1292
+ if (__props.environment) {
1293
+ _push2(`<span class="rounded-full border border-default px-2 py-0.5 text-xs bg-elevated/60"${_scopeId}>${ssrInterpolate(__props.environment)}</span>`);
1294
+ } else {
1295
+ _push2(`<!---->`);
1296
+ }
1297
+ if (__props.ci?.provider) {
1298
+ _push2(`<span${_scopeId}>${ssrInterpolate(__props.ci.provider)}</span>`);
1299
+ } else {
1300
+ _push2(`<!---->`);
1301
+ }
1302
+ _push2(`</div>`);
1303
+ } else {
1304
+ _push2(`<!---->`);
1305
+ }
1306
+ if (__props.ci?.buildNumber || __props.ci?.buildUrl) {
1307
+ _push2(`<div class="flex items-center gap-1.5"${_scopeId}>`);
1308
+ _push2(ssrRenderComponent(_component_UIcon, {
1309
+ name: "i-lucide-hash",
1310
+ class: "w-3.5 h-3.5 text-gray-400 shrink-0"
1311
+ }, null, _parent2, _scopeId));
1312
+ if (__props.ci?.buildUrl) {
1313
+ _push2(`<a${ssrRenderAttr("href", __props.ci.buildUrl)} target="_blank" class="text-primary hover:underline"${_scopeId}>${ssrInterpolate(__props.ci?.buildNumber ? `Build #${__props.ci.buildNumber}` : "View build")}</a>`);
1314
+ } else {
1315
+ _push2(`<span${_scopeId}>Build #${ssrInterpolate(__props.ci.buildNumber)}</span>`);
1316
+ }
1317
+ _push2(`</div>`);
1318
+ } else {
1319
+ _push2(`<!---->`);
1320
+ }
1321
+ if (__props.ci?.workflow || __props.ci?.jobName) {
1322
+ _push2(`<div class="flex items-center gap-x-1.5 gap-y-1 flex-wrap"${_scopeId}>`);
1323
+ _push2(ssrRenderComponent(_component_UIcon, {
1324
+ name: "i-lucide-workflow",
1325
+ class: "w-3.5 h-3.5 text-gray-400 shrink-0"
1326
+ }, null, _parent2, _scopeId));
1327
+ if (__props.ci?.workflow) {
1328
+ _push2(`<span${_scopeId}>${ssrInterpolate(__props.ci.workflow)}</span>`);
1329
+ } else {
1330
+ _push2(`<!---->`);
1331
+ }
1332
+ if (__props.ci?.workflow && __props.ci?.jobName) {
1333
+ _push2(`<span class="text-gray-300 dark:text-gray-600"${_scopeId}>·</span>`);
1334
+ } else {
1335
+ _push2(`<!---->`);
1336
+ }
1337
+ if (__props.ci?.jobName) {
1338
+ _push2(`<span${_scopeId}>${ssrInterpolate(__props.ci.jobName)}</span>`);
1339
+ } else {
1340
+ _push2(`<!---->`);
1341
+ }
1342
+ _push2(`</div>`);
1343
+ } else {
1344
+ _push2(`<!---->`);
1345
+ }
1346
+ if (__props.playwrightVersion || __props.reporterVersion) {
1347
+ _push2(`<div class="flex items-center gap-x-1.5 gap-y-1 flex-wrap"${_scopeId}>`);
1348
+ _push2(ssrRenderComponent(_component_UIcon, {
1349
+ name: "i-lucide-tag",
1350
+ class: "w-3.5 h-3.5 text-gray-400 shrink-0"
1351
+ }, null, _parent2, _scopeId));
1352
+ if (__props.playwrightVersion) {
1353
+ _push2(`<span${_scopeId}>Playwright v${ssrInterpolate(__props.playwrightVersion)}</span>`);
1354
+ } else {
1355
+ _push2(`<!---->`);
1356
+ }
1357
+ if (__props.playwrightVersion && __props.reporterVersion) {
1358
+ _push2(`<span class="text-gray-300 dark:text-gray-600"${_scopeId}>·</span>`);
1359
+ } else {
1360
+ _push2(`<!---->`);
1361
+ }
1362
+ if (__props.reporterVersion) {
1363
+ _push2(`<span${_scopeId}>Piwi v${ssrInterpolate(__props.reporterVersion)}</span>`);
1364
+ } else {
1365
+ _push2(`<!---->`);
1366
+ }
1367
+ _push2(`</div>`);
1368
+ } else {
1369
+ _push2(`<!---->`);
1370
+ }
1371
+ if (__props.browser) {
1372
+ _push2(`<div class="flex items-center gap-1.5"${_scopeId}>`);
1373
+ _push2(ssrRenderComponent(_component_BrowserBadge, {
1374
+ browser: { ...__props.browser, viewport: void 0 },
1375
+ size: "sm"
1376
+ }, null, _parent2, _scopeId));
1377
+ if (__props.browser.viewport) {
1378
+ _push2(`<span class="tabular-nums"${_scopeId}>${ssrInterpolate(__props.browser.viewport.width)}×${ssrInterpolate(__props.browser.viewport.height)} `);
1379
+ if (__props.browser.deviceScaleFactor && __props.browser.deviceScaleFactor !== 1) {
1380
+ _push2(`<span class="text-gray-400"${_scopeId}>@${ssrInterpolate(__props.browser.deviceScaleFactor)}x</span>`);
1381
+ } else {
1382
+ _push2(`<!---->`);
1383
+ }
1384
+ _push2(`</span>`);
1385
+ } else {
1386
+ _push2(`<!---->`);
1387
+ }
1388
+ _push2(`</div>`);
1389
+ } else {
1390
+ _push2(`<!---->`);
1391
+ }
1392
+ _push2(`</div>`);
1393
+ } else {
1394
+ return [
1395
+ createVNode("div", { class: "space-y-1.5 text-sm" }, [
1396
+ __props.environment || __props.ci?.provider ? (openBlock(), createBlock("div", {
1397
+ key: 0,
1398
+ class: "flex items-center gap-x-2 gap-y-1 flex-wrap"
1399
+ }, [
1400
+ createVNode(_component_UIcon, {
1401
+ name: "i-lucide-cloud",
1402
+ class: "w-3.5 h-3.5 text-gray-400 shrink-0"
1403
+ }),
1404
+ __props.environment ? (openBlock(), createBlock("span", {
1405
+ key: 0,
1406
+ class: "rounded-full border border-default px-2 py-0.5 text-xs bg-elevated/60"
1407
+ }, toDisplayString(__props.environment), 1)) : createCommentVNode("", true),
1408
+ __props.ci?.provider ? (openBlock(), createBlock("span", { key: 1 }, toDisplayString(__props.ci.provider), 1)) : createCommentVNode("", true)
1409
+ ])) : createCommentVNode("", true),
1410
+ __props.ci?.buildNumber || __props.ci?.buildUrl ? (openBlock(), createBlock("div", {
1411
+ key: 1,
1412
+ class: "flex items-center gap-1.5"
1413
+ }, [
1414
+ createVNode(_component_UIcon, {
1415
+ name: "i-lucide-hash",
1416
+ class: "w-3.5 h-3.5 text-gray-400 shrink-0"
1417
+ }),
1418
+ __props.ci?.buildUrl ? (openBlock(), createBlock("a", {
1419
+ key: 0,
1420
+ href: __props.ci.buildUrl,
1421
+ target: "_blank",
1422
+ class: "text-primary hover:underline"
1423
+ }, toDisplayString(__props.ci?.buildNumber ? `Build #${__props.ci.buildNumber}` : "View build"), 9, ["href"])) : (openBlock(), createBlock("span", { key: 1 }, "Build #" + toDisplayString(__props.ci.buildNumber), 1))
1424
+ ])) : createCommentVNode("", true),
1425
+ __props.ci?.workflow || __props.ci?.jobName ? (openBlock(), createBlock("div", {
1426
+ key: 2,
1427
+ class: "flex items-center gap-x-1.5 gap-y-1 flex-wrap"
1428
+ }, [
1429
+ createVNode(_component_UIcon, {
1430
+ name: "i-lucide-workflow",
1431
+ class: "w-3.5 h-3.5 text-gray-400 shrink-0"
1432
+ }),
1433
+ __props.ci?.workflow ? (openBlock(), createBlock("span", { key: 0 }, toDisplayString(__props.ci.workflow), 1)) : createCommentVNode("", true),
1434
+ __props.ci?.workflow && __props.ci?.jobName ? (openBlock(), createBlock("span", {
1435
+ key: 1,
1436
+ class: "text-gray-300 dark:text-gray-600"
1437
+ }, "·")) : createCommentVNode("", true),
1438
+ __props.ci?.jobName ? (openBlock(), createBlock("span", { key: 2 }, toDisplayString(__props.ci.jobName), 1)) : createCommentVNode("", true)
1439
+ ])) : createCommentVNode("", true),
1440
+ __props.playwrightVersion || __props.reporterVersion ? (openBlock(), createBlock("div", {
1441
+ key: 3,
1442
+ class: "flex items-center gap-x-1.5 gap-y-1 flex-wrap"
1443
+ }, [
1444
+ createVNode(_component_UIcon, {
1445
+ name: "i-lucide-tag",
1446
+ class: "w-3.5 h-3.5 text-gray-400 shrink-0"
1447
+ }),
1448
+ __props.playwrightVersion ? (openBlock(), createBlock("span", { key: 0 }, "Playwright v" + toDisplayString(__props.playwrightVersion), 1)) : createCommentVNode("", true),
1449
+ __props.playwrightVersion && __props.reporterVersion ? (openBlock(), createBlock("span", {
1450
+ key: 1,
1451
+ class: "text-gray-300 dark:text-gray-600"
1452
+ }, "·")) : createCommentVNode("", true),
1453
+ __props.reporterVersion ? (openBlock(), createBlock("span", { key: 2 }, "Piwi v" + toDisplayString(__props.reporterVersion), 1)) : createCommentVNode("", true)
1454
+ ])) : createCommentVNode("", true),
1455
+ __props.browser ? (openBlock(), createBlock("div", {
1456
+ key: 4,
1457
+ class: "flex items-center gap-1.5"
1458
+ }, [
1459
+ createVNode(_component_BrowserBadge, {
1460
+ browser: { ...__props.browser, viewport: void 0 },
1461
+ size: "sm"
1462
+ }, null, 8, ["browser"]),
1463
+ __props.browser.viewport ? (openBlock(), createBlock("span", {
1464
+ key: 0,
1465
+ class: "tabular-nums"
1466
+ }, [
1467
+ createTextVNode(toDisplayString(__props.browser.viewport.width) + "×" + toDisplayString(__props.browser.viewport.height) + " ", 1),
1468
+ __props.browser.deviceScaleFactor && __props.browser.deviceScaleFactor !== 1 ? (openBlock(), createBlock("span", {
1469
+ key: 0,
1470
+ class: "text-gray-400"
1471
+ }, "@" + toDisplayString(__props.browser.deviceScaleFactor) + "x", 1)) : createCommentVNode("", true)
1472
+ ])) : createCommentVNode("", true)
1473
+ ])) : createCommentVNode("", true)
1474
+ ])
1475
+ ];
1476
+ }
1477
+ }),
1478
+ _: 1
1479
+ }, _parent));
1480
+ };
1481
+ }
1482
+ });
1483
+ const _sfc_setup = _sfc_main.setup;
1484
+ _sfc_main.setup = (props, ctx) => {
1485
+ const ssrContext = useSSRContext();
1486
+ (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/shared/CiEnvCard.vue");
1487
+ return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
1488
+ };
1489
+ const __nuxt_component_14 = Object.assign(_sfc_main, { __name: "CiEnvCard" });
1490
+
1491
+ export { __nuxt_component_8 as _, __nuxt_component_13 as a, __nuxt_component_1 as b, __nuxt_component_15 as c, __nuxt_component_14 as d, __nuxt_component_16 as e };
1492
+ //# sourceMappingURL=CiEnvCard-DB5DvBh1.mjs.map