@piwitests/server 0.20.0 → 0.21.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 (688) hide show
  1. package/.output/nitro.json +1 -1
  2. package/.output/public/_nuxt/{CXEH9OPk.js → 9ti9eNH9.js} +1 -1
  3. package/.output/public/_nuxt/{oAClCn_h.js → B-zdP-D4.js} +1 -1
  4. package/.output/public/_nuxt/{DsesNydr.js → B1RmmOsM.js} +1 -1
  5. package/.output/public/_nuxt/{C0_yH0N7.js → B3Fsod9X.js} +1 -1
  6. package/.output/public/_nuxt/{Cnsmicv2.js → B3rirOqU.js} +34 -34
  7. package/.output/public/_nuxt/B3zmIJYb.js +1 -0
  8. package/.output/public/_nuxt/{DuwtTfO8.js → BAKUqW95.js} +2 -2
  9. package/.output/public/_nuxt/BG0KKQiT.js +7 -0
  10. package/.output/public/_nuxt/BGL_V7Y4.js +1 -0
  11. package/.output/public/_nuxt/{Dpd16JVI.js → BGusFAvZ.js} +1 -1
  12. package/.output/public/_nuxt/{l5WKbU4h.js → BNurUTla.js} +3 -3
  13. package/.output/public/_nuxt/BR5cR2Ot.js +1 -0
  14. package/.output/public/_nuxt/BTCh_0zN.js +1 -0
  15. package/.output/public/_nuxt/{C8e1EbJI.js → BTVqMsA3.js} +1 -1
  16. package/.output/public/_nuxt/{DabzhQB1.js → B_13C0GF.js} +1 -1
  17. package/.output/public/_nuxt/BeDIjhoR.js +44 -0
  18. package/.output/public/_nuxt/{D5tke0B5.js → BerCW7Ug.js} +1 -1
  19. package/.output/public/_nuxt/{BicAJ6U8.js → BfTNbVc_.js} +1 -1
  20. package/.output/public/_nuxt/BnbSEpXX.js +1 -0
  21. package/.output/public/_nuxt/Bo_dxehb.js +1 -0
  22. package/.output/public/_nuxt/{C2hkrSey.js → BpBHls4-.js} +1 -1
  23. package/.output/public/_nuxt/{Bm62iDV5.js → BpM6ZPIG.js} +1 -1
  24. package/.output/public/_nuxt/{GPNI1ffD.js → BqGumsDo.js} +2 -2
  25. package/.output/public/_nuxt/{A1pj0VnG.js → BrxtP_cN.js} +1 -1
  26. package/.output/public/_nuxt/{KyA_4Ks-.js → C2hNxjjz.js} +1 -1
  27. package/.output/public/_nuxt/C5PSqfKi.js +2 -0
  28. package/.output/public/_nuxt/C5vsaU4G.js +1 -0
  29. package/.output/public/_nuxt/C9sdHaXd.js +1 -0
  30. package/.output/public/_nuxt/{Und3xXFc.js → CAxgBYIt.js} +2 -2
  31. package/.output/public/_nuxt/{BmUfSNMV.js → CES2i5Pl.js} +1 -1
  32. package/.output/public/_nuxt/{CNyV9YpI.js → CFEdRqaj.js} +1 -1
  33. package/.output/public/_nuxt/{Dy-TJ0Mt.js → CFTZwazK.js} +1 -1
  34. package/.output/public/_nuxt/CIBS7ye6.js +1 -0
  35. package/.output/public/_nuxt/CIEceDOw.js +1 -0
  36. package/.output/public/_nuxt/{bLcjFslv.js → CJBhojV6.js} +1 -1
  37. package/.output/public/_nuxt/{b-GYfcrQ.js → CKYddHa6.js} +1 -1
  38. package/.output/public/_nuxt/{BKkF4pPD.js → CLVWiCds.js} +1 -1
  39. package/.output/public/_nuxt/{CwGWJbiy.js → CMYAryzi.js} +1 -1
  40. package/.output/public/_nuxt/{CjPfj7ya.js → COhdybDy.js} +1 -1
  41. package/.output/public/_nuxt/{B7FTvFWq.js → CRBXM2d6.js} +2 -2
  42. package/.output/public/_nuxt/CTD_pJ_v.js +1 -0
  43. package/.output/public/_nuxt/{Cus22Ud3.js → CTP8Pw0-.js} +2 -2
  44. package/.output/public/_nuxt/{CeW8v31b.js → CV8iF2kG.js} +1 -1
  45. package/.output/public/_nuxt/{H94BMf3L.js → CWKmbYlT.js} +1 -1
  46. package/.output/public/_nuxt/C_NfGMTd.js +9 -0
  47. package/.output/public/_nuxt/Cejoebel.js +6 -0
  48. package/.output/public/_nuxt/{FaFoMVKo.js → Chpah_7l.js} +1 -1
  49. package/.output/public/_nuxt/Ci9d8YVV.js +1 -0
  50. package/.output/public/_nuxt/{CIrFl3MW.js → CifRHVaR.js} +1 -1
  51. package/.output/public/_nuxt/{DrfE8IY0.js → Ckgsh9AT.js} +1 -1
  52. package/.output/public/_nuxt/{-f7BAm1H.js → Cpsq-kYE.js} +1 -1
  53. package/.output/public/_nuxt/Cqc-DSTF.js +1 -0
  54. package/.output/public/_nuxt/{CAAwCT7H.js → CsHulb12.js} +1 -1
  55. package/.output/public/_nuxt/Ctb2CqUf.js +5 -0
  56. package/.output/public/_nuxt/CtstIQSh.js +1 -0
  57. package/.output/public/_nuxt/{DJxlKFGb.js → CvMzDKvu.js} +1 -1
  58. package/.output/public/_nuxt/{CTU1mrhq.js → D2pBhsH8.js} +1 -1
  59. package/.output/public/_nuxt/{B3obW6cw.js → D8gX1Jde.js} +2 -2
  60. package/.output/public/_nuxt/D9knOn6D.js +1 -0
  61. package/.output/public/_nuxt/DAPTVdvA.js +1 -0
  62. package/.output/public/_nuxt/{Du2W7Jne.js → DCFbQvIN.js} +42 -42
  63. package/.output/public/_nuxt/DCoJlz_q.js +1 -0
  64. package/.output/public/_nuxt/DGnQ69wW.js +64 -0
  65. package/.output/public/_nuxt/{hNh4CIL0.js → DHzij16p.js} +1 -1
  66. package/.output/public/_nuxt/DJMCXRuW.js +5 -0
  67. package/.output/public/_nuxt/DJXcGkJP.js +2 -0
  68. package/.output/public/_nuxt/{DPCxhHri.js → DKFXZdWZ.js} +1 -1
  69. package/.output/public/_nuxt/{Bnxf8nbZ.js → DL24AjfW.js} +1 -1
  70. package/.output/public/_nuxt/DON74Yh6.js +1 -0
  71. package/.output/public/_nuxt/{5A6ITZXj.js → DQM62mxB.js} +1 -1
  72. package/.output/public/_nuxt/DSe8DxMl.js +1 -0
  73. package/.output/public/_nuxt/DWwiVTZX.js +24 -0
  74. package/.output/public/_nuxt/DX4tAP78.js +1 -0
  75. package/.output/public/_nuxt/{C1gTN4Q8.js → D_eDAIsT.js} +1 -1
  76. package/.output/public/_nuxt/Da8A92cF.js +1 -0
  77. package/.output/public/_nuxt/{CzAPFPpL.js → DdH3op4b.js} +1 -1
  78. package/.output/public/_nuxt/DepFDZO3.js +1 -0
  79. package/.output/public/_nuxt/{BzRRzmwm.js → DfSBKzrC.js} +1 -1
  80. package/.output/public/_nuxt/{BdfhYr-u.js → DfnKh3dZ.js} +1 -1
  81. package/.output/public/_nuxt/{Bow4tTR0.js → DhpTfeip.js} +1 -1
  82. package/.output/public/_nuxt/{CAvY22RE.js → Dk9nD32g.js} +1 -1
  83. package/.output/public/_nuxt/{BrQEE053.js → DkT2nCqn.js} +1 -1
  84. package/.output/public/_nuxt/DlW85lQq.js +4 -0
  85. package/.output/public/_nuxt/DnNio-ut.js +1 -0
  86. package/.output/public/_nuxt/{DdwHkKfV.js → DnQv_hst.js} +1 -1
  87. package/.output/public/_nuxt/{B99fbi73.js → DqEOMteW.js} +1 -1
  88. package/.output/public/_nuxt/{4gYNA-d4.js → Dsvu7YJT.js} +1 -1
  89. package/.output/public/_nuxt/DvhCDBrR.js +2 -0
  90. package/.output/public/_nuxt/DwQaVMZR.js +1 -0
  91. package/.output/public/_nuxt/E-_n_6vi.js +1 -0
  92. package/.output/public/_nuxt/{BT3wGCTI.js → Ebw5l7n8.js} +1 -1
  93. package/.output/public/_nuxt/{CA9B2HE5.js → IPePdbzl.js} +1 -1
  94. package/.output/public/_nuxt/{DJmoLeVt.js → LHoUGrfi.js} +1 -1
  95. package/.output/public/_nuxt/{L3kAWB2a.js → NERLHpOL.js} +1 -1
  96. package/.output/public/_nuxt/{CeG9pBAD.js → RAdNGxcF.js} +1 -1
  97. package/.output/public/_nuxt/Vxyo_mU9.js +1 -0
  98. package/.output/public/_nuxt/{pQqGiNch.js → YE1kAkU9.js} +1 -1
  99. package/.output/public/_nuxt/{CsLojMwR.js → YmT5WiN5.js} +1 -1
  100. package/.output/public/_nuxt/ZcAfCxWE.js +17 -0
  101. package/.output/public/_nuxt/{CxyAzHr3.js → _rglcvXN.js} +1 -1
  102. package/.output/public/_nuxt/bFU9Y1Vw.js +10 -0
  103. package/.output/public/_nuxt/bfecIH89.js +1 -0
  104. package/.output/public/_nuxt/builds/latest.json +1 -1
  105. package/.output/public/_nuxt/builds/meta/31ca2be4-a949-4df6-9818-773fc085557a.json +1 -0
  106. package/.output/public/_nuxt/entry.BAvBQY-h.css +1 -0
  107. package/.output/public/_nuxt/four-S1Y.js +1 -0
  108. package/.output/public/_nuxt/{CJFtzlQ4.js → gV2U_Gqd.js} +1 -1
  109. package/.output/public/_nuxt/{DeY2JkR2.js → lGC893pn.js} +1 -1
  110. package/.output/public/_nuxt/nOfj-ar8.js +1 -0
  111. package/.output/public/_nuxt/oKrbs1XK.js +1 -0
  112. package/.output/public/_nuxt/oSJFAC38.js +1 -0
  113. package/.output/public/_nuxt/rL4C0HV5.js +1 -0
  114. package/.output/public/_nuxt/{Dyeqn3aG.js → tQoyVPCE.js} +1 -1
  115. package/.output/public/_nuxt/{DfgOx_ou.js → uSPCvASp.js} +1 -1
  116. package/.output/public/_nuxt/{hC_z4G8p.js → wkz5-1SO.js} +1 -1
  117. package/.output/public/_nuxt/yYlVYKCz.js +34 -0
  118. package/.output/public/_nuxt/{AbmKWFQQ.js → zv8WdMx0.js} +1 -1
  119. package/.output/server/chunks/_/scope.mjs +43 -27
  120. package/.output/server/chunks/_/scope.mjs.map +1 -1
  121. package/.output/server/chunks/_/users.mjs +1 -1
  122. package/.output/server/chunks/build/{Breadcrumb-Ak2Lg3oM.mjs → Breadcrumb-3itRZ1uz.mjs} +2 -2
  123. package/.output/server/chunks/build/Breadcrumb-3itRZ1uz.mjs.map +1 -0
  124. package/.output/server/chunks/build/{BreadcrumbNav-DO7I_z-n.mjs → BreadcrumbNav-GnjBvXuT.mjs} +2 -2
  125. package/.output/server/chunks/build/BreadcrumbNav-GnjBvXuT.mjs.map +1 -0
  126. package/.output/server/chunks/build/{BrowserBadge-MFvBwxmD.mjs → BrowserBadge-DQqJS9CV.mjs} +2 -2
  127. package/.output/server/chunks/build/BrowserBadge-DQqJS9CV.mjs.map +1 -0
  128. package/.output/server/chunks/build/{ChartCard-Y1UKwMsf.mjs → ChartCard-D0rzMf-N.mjs} +2 -2
  129. package/.output/server/chunks/build/ChartCard-D0rzMf-N.mjs.map +1 -0
  130. package/.output/server/chunks/build/{Checkbox-4Q5d0fa0.mjs → Checkbox-DmRKG-0s.mjs} +3 -3
  131. package/.output/server/chunks/build/Checkbox-DmRKG-0s.mjs.map +1 -0
  132. package/.output/server/chunks/build/{CodeBlock-BgE-NSmE.mjs → CodeBlock-DGhKVFad.mjs} +4 -4
  133. package/.output/server/chunks/build/CodeBlock-DGhKVFad.mjs.map +1 -0
  134. package/.output/server/chunks/build/{DashboardNavbar-BHmMSPX7.mjs → DashboardNavbar-DCr10nxL.mjs} +2 -2
  135. package/.output/server/chunks/build/DashboardNavbar-DCr10nxL.mjs.map +1 -0
  136. package/.output/server/chunks/build/{DashboardSidebarToggle-DCTnHiIv.mjs → DashboardSidebarToggle-8EpBhX0R.mjs} +3 -3
  137. package/.output/server/chunks/build/DashboardSidebarToggle-8EpBhX0R.mjs.map +1 -0
  138. package/.output/server/chunks/build/{DataLocationCard-B_YHdzSz.mjs → DataLocationCard-rzS-pgCP.mjs} +5 -5
  139. package/.output/server/chunks/build/DataLocationCard-rzS-pgCP.mjs.map +1 -0
  140. package/.output/server/chunks/build/{DiagnosisPanel-CALyEmcJ.mjs → DiagnosisPanel-BWTpoCKy.mjs} +8 -7
  141. package/.output/server/chunks/build/DiagnosisPanel-BWTpoCKy.mjs.map +1 -0
  142. package/.output/server/chunks/build/{useAiStatus-CxjMmDDY.mjs → DiagnosisResult-Br3qBLXe.mjs} +10 -32
  143. package/.output/server/chunks/build/DiagnosisResult-Br3qBLXe.mjs.map +1 -0
  144. package/.output/server/chunks/build/{DurationValue-D20oGbnc.mjs → DurationValue-CWKfjIF2.mjs} +2 -2
  145. package/.output/server/chunks/build/DurationValue-CWKfjIF2.mjs.map +1 -0
  146. package/.output/server/chunks/build/{EntityLinks-BBHWssHH.mjs → EntityLinks-CF0xG3Y8.mjs} +6 -6
  147. package/.output/server/chunks/build/EntityLinks-CF0xG3Y8.mjs.map +1 -0
  148. package/.output/server/chunks/build/EnvManagedBadge-UwD2b9v2.mjs +1 -1
  149. package/.output/server/chunks/build/FeatureUnavailable-CwPms6X_.mjs +83 -0
  150. package/.output/server/chunks/build/FeatureUnavailable-CwPms6X_.mjs.map +1 -0
  151. package/.output/server/chunks/build/{FormField-B0HKsdMd.mjs → FormField-e7OnSKPM.mjs} +2 -2
  152. package/.output/server/chunks/build/FormField-e7OnSKPM.mjs.map +1 -0
  153. package/.output/server/chunks/build/GetStartedWizard-CB5v1Xzu.mjs +510 -0
  154. package/.output/server/chunks/build/GetStartedWizard-CB5v1Xzu.mjs.map +1 -0
  155. package/.output/server/chunks/build/{HelpHint-DrcIv-Oj.mjs → HelpHint-DjGrGFA7.mjs} +3 -3
  156. package/.output/server/chunks/build/HelpHint-DjGrGFA7.mjs.map +1 -0
  157. package/.output/server/chunks/build/{LoadingState-C3pBSuOO.mjs → LoadingState-B8v1nWJt.mjs} +3 -3
  158. package/.output/server/chunks/build/LoadingState-B8v1nWJt.mjs.map +1 -0
  159. package/.output/server/chunks/build/{CiEnvCard-DB5DvBh1.mjs → MetaStripGroup-dXXa_MzF.mjs} +242 -529
  160. package/.output/server/chunks/build/MetaStripGroup-dXXa_MzF.mjs.map +1 -0
  161. package/.output/server/chunks/build/{MiniRunBars-CZMugDrh.mjs → MiniRunBars-fgLMgRUp.mjs} +2 -2
  162. package/.output/server/chunks/build/MiniRunBars-fgLMgRUp.mjs.map +1 -0
  163. package/.output/server/chunks/build/{useSettingsNav-DnQKacz8.mjs → NavigationMenu-cqpt11Ce.mjs} +5 -28
  164. package/.output/server/chunks/build/NavigationMenu-cqpt11Ce.mjs.map +1 -0
  165. package/.output/server/chunks/build/{OpenInIdeLink-CQWKKChd.mjs → OpenInIdeLink-B9wvQkhy.mjs} +5 -5
  166. package/.output/server/chunks/build/{OpenInIdeLink-CQWKKChd.mjs.map → OpenInIdeLink-B9wvQkhy.mjs.map} +1 -1
  167. package/.output/server/chunks/build/{ProjectTestCasesTable-Bo61P5K1.mjs → ProjectTestCasesTable-BwHEtZTz.mjs} +15 -15
  168. package/.output/server/chunks/build/ProjectTestCasesTable-BwHEtZTz.mjs.map +1 -0
  169. package/.output/server/chunks/build/{RunReports-DFLv51TX.mjs → RunReports-BDRIWn3o.mjs} +2 -2
  170. package/.output/server/chunks/build/RunReports-BDRIWn3o.mjs.map +1 -0
  171. package/.output/server/chunks/build/{RunStatusBadge-FfGb6bkW.mjs → RunStatusBadge-CuTDknRJ.mjs} +2 -2
  172. package/.output/server/chunks/build/RunStatusBadge-CuTDknRJ.mjs.map +1 -0
  173. package/.output/server/chunks/build/{SectionCard-CN-v0FZ_.mjs → SectionCard-BW5Lynrr.mjs} +2 -2
  174. package/.output/server/chunks/build/SectionCard-BW5Lynrr.mjs.map +1 -0
  175. package/.output/server/chunks/build/{Select-5DK9frQ7.mjs → Select-CVctwpib.mjs} +3 -3
  176. package/.output/server/chunks/build/Select-CVctwpib.mjs.map +1 -0
  177. package/.output/server/chunks/build/{SelectMenu-D-2FSqBU.mjs → SelectMenu-XLVBEa11.mjs} +3 -3
  178. package/.output/server/chunks/build/{SelectMenu-D-2FSqBU.mjs.map → SelectMenu-XLVBEa11.mjs.map} +1 -1
  179. package/.output/server/chunks/build/{SettingsField-BZfx4ma1.mjs → SettingsField-DvtRvI6O.mjs} +3 -3
  180. package/.output/server/chunks/build/SettingsField-DvtRvI6O.mjs.map +1 -0
  181. package/.output/server/chunks/build/{StatTile-D61Vzo6e.mjs → StatTile-DpcVQFVI.mjs} +2 -26
  182. package/.output/server/chunks/build/StatTile-DpcVQFVI.mjs.map +1 -0
  183. package/.output/server/chunks/build/StatTileGrid-7zOFUQ6j.mjs +30 -0
  184. package/.output/server/chunks/build/StatTileGrid-7zOFUQ6j.mjs.map +1 -0
  185. package/.output/server/chunks/build/{Switch-B5Fp8ULt.mjs → Switch-8zWfwI5B.mjs} +2 -2
  186. package/.output/server/chunks/build/Switch-8zWfwI5B.mjs.map +1 -0
  187. package/.output/server/chunks/build/Table-BRk04Hd2.mjs +1 -1
  188. package/.output/server/chunks/build/{TestCaseHistoryChart-CSi64vVA.mjs → TestCaseHistoryChart-C6t5RrCG.mjs} +2 -2
  189. package/.output/server/chunks/build/TestCaseHistoryChart-C6t5RrCG.mjs.map +1 -0
  190. package/.output/server/chunks/build/{TestMetaBadges-D5_yUtIP.mjs → TestMetaBadges-BlyKmfeP.mjs} +1 -1
  191. package/.output/server/chunks/build/TestMetaBadges-BlyKmfeP.mjs.map +1 -0
  192. package/.output/server/chunks/build/{TestStatusBar-DX3EhlyP.mjs → TestStatusBar-DhbrM_rQ.mjs} +3 -3
  193. package/.output/server/chunks/build/TestStatusBar-DhbrM_rQ.mjs.map +1 -0
  194. package/.output/server/chunks/build/{Textarea-Dv2-lOvW.mjs → Textarea-vkMKVQTJ.mjs} +2 -2
  195. package/.output/server/chunks/build/Textarea-vkMKVQTJ.mjs.map +1 -0
  196. package/.output/server/chunks/build/Tooltip-Dv4htNP6.mjs +1 -1
  197. package/.output/server/chunks/build/{_id_-BdG37K7s.mjs → _id_-2PMH6rl8.mjs} +20 -19
  198. package/.output/server/chunks/build/_id_-2PMH6rl8.mjs.map +1 -0
  199. package/.output/server/chunks/build/{_id_-BdJs7BJZ.mjs → _id_-8cGIgeg6.mjs} +1903 -1113
  200. package/.output/server/chunks/build/_id_-8cGIgeg6.mjs.map +1 -0
  201. package/.output/server/chunks/build/{_id_-C_uSBiyU.mjs → _id_-CUZ5S6y5.mjs} +29 -29
  202. package/.output/server/chunks/build/_id_-CUZ5S6y5.mjs.map +1 -0
  203. package/.output/server/chunks/build/{_id_-BxA6IgWr.mjs → _id_-DMkgWSLZ.mjs} +885 -381
  204. package/.output/server/chunks/build/_id_-DMkgWSLZ.mjs.map +1 -0
  205. package/.output/server/chunks/build/{about-BE0UV-8-.mjs → about-D3WXTDro.mjs} +21 -453
  206. package/.output/server/chunks/build/about-D3WXTDro.mjs.map +1 -0
  207. package/.output/server/chunks/build/{account-DAfvaD-F.mjs → account-BslDNCoo.mjs} +6 -6
  208. package/.output/server/chunks/build/account-BslDNCoo.mjs.map +1 -0
  209. package/.output/server/chunks/build/{ai-Cn05ch0u.mjs → ai-C23R9l94.mjs} +14 -14
  210. package/.output/server/chunks/build/{ai-Cn05ch0u.mjs.map → ai-C23R9l94.mjs.map} +1 -1
  211. package/.output/server/chunks/build/{analytics-Bo_B_jko.mjs → analytics-DQHeToK0.mjs} +104 -77
  212. package/.output/server/chunks/build/analytics-DQHeToK0.mjs.map +1 -0
  213. package/.output/server/chunks/build/client.precomputed.mjs +1 -1
  214. package/.output/server/chunks/build/compare-RxHSOdsO.mjs +1 -0
  215. package/.output/server/chunks/build/{db.client-CQoVTYB9.mjs → db.client-D74DghqX.mjs} +38 -2
  216. package/.output/server/chunks/build/db.client-D74DghqX.mjs.map +1 -0
  217. package/.output/server/chunks/build/{default-CbNHaFsy.mjs → default-CeyePZ5I.mjs} +32 -19
  218. package/.output/server/chunks/build/{default-CbNHaFsy.mjs.map → default-CeyePZ5I.mjs.map} +1 -1
  219. package/.output/server/chunks/build/{docs-B_llWMxx.mjs → docs-f_bnC75q.mjs} +14 -14
  220. package/.output/server/chunks/build/{docs-B_llWMxx.mjs.map → docs-f_bnC75q.mjs.map} +1 -1
  221. package/.output/server/chunks/build/{edit-J0asTFg8.mjs → edit-BOC4zWuH.mjs} +11 -12
  222. package/.output/server/chunks/build/edit-BOC4zWuH.mjs.map +1 -0
  223. package/.output/server/chunks/build/{fetch-B4FwBOzu.mjs → fetch-BQg_fhX0.mjs} +32 -4
  224. package/.output/server/chunks/build/fetch-BQg_fhX0.mjs.map +1 -0
  225. package/.output/server/chunks/build/{forgot-password-CC__1OnV.mjs → forgot-password-CxuVbGWy.mjs} +4 -3
  226. package/.output/server/chunks/build/forgot-password-CxuVbGWy.mjs.map +1 -0
  227. package/.output/server/chunks/build/{import-CS9oylTN.mjs → import-CC27wEIu.mjs} +12 -12
  228. package/.output/server/chunks/build/import-CC27wEIu.mjs.map +1 -0
  229. package/.output/server/chunks/build/{index-e9skCi-V.mjs → index-B6PjfyTY.mjs} +39 -537
  230. package/.output/server/chunks/build/index-B6PjfyTY.mjs.map +1 -0
  231. package/.output/server/chunks/build/{index-CU2nZhAa.mjs → index-BOK1aJk9.mjs} +2 -1
  232. package/.output/server/chunks/build/index-BOK1aJk9.mjs.map +1 -0
  233. package/.output/server/chunks/build/{index-hGHlmyxj.mjs → index-BhS1DuCr.mjs} +117 -76
  234. package/.output/server/chunks/build/index-BhS1DuCr.mjs.map +1 -0
  235. package/.output/server/chunks/build/{index-DE45ycdZ.mjs → index-DUmjP3Gr.mjs} +12 -13
  236. package/.output/server/chunks/build/index-DUmjP3Gr.mjs.map +1 -0
  237. package/.output/server/chunks/build/index-jvF53f7_.mjs +91 -0
  238. package/.output/server/chunks/build/index-jvF53f7_.mjs.map +1 -0
  239. package/.output/server/chunks/build/isValueEqualOrExist-D2qw9YEr.mjs +1 -1
  240. package/.output/server/chunks/build/{login-Da4u1IlW.mjs → login-CdpOhiP8.mjs} +8 -7
  241. package/.output/server/chunks/build/login-CdpOhiP8.mjs.map +1 -0
  242. package/.output/server/chunks/build/{mcp-uhVCCwQM.mjs → mcp-WTeO5WRo.mjs} +193 -10
  243. package/.output/server/chunks/build/mcp-WTeO5WRo.mjs.map +1 -0
  244. package/.output/server/chunks/build/{notifications-fx_qnKGA.mjs → notifications-yY6ik-fi.mjs} +9 -9
  245. package/.output/server/chunks/build/notifications-yY6ik-fi.mjs.map +1 -0
  246. package/.output/server/chunks/build/{pr-feedback-X6-70iF0.mjs → pr-feedback-Hv2Ydh_6.mjs} +7 -7
  247. package/.output/server/chunks/build/pr-feedback-Hv2Ydh_6.mjs.map +1 -0
  248. package/.output/server/chunks/build/{reset-password-BmrUS4ZD.mjs → reset-password-CFtO8A6n.mjs} +4 -3
  249. package/.output/server/chunks/build/reset-password-CFtO8A6n.mjs.map +1 -0
  250. package/.output/server/chunks/build/server.mjs +51 -34
  251. package/.output/server/chunks/build/{settings-CCYe7rsc.mjs → settings-DIpvnY8_.mjs} +10 -8
  252. package/.output/server/chunks/build/settings-DIpvnY8_.mjs.map +1 -0
  253. package/.output/server/chunks/build/{settings-metadata-DrEqWcW-.mjs → settings-metadata-DRv9VveS.mjs} +32 -2
  254. package/.output/server/chunks/build/settings-metadata-DRv9VveS.mjs.map +1 -0
  255. package/.output/server/chunks/build/setup-Di0UMyWx.mjs +1116 -0
  256. package/.output/server/chunks/build/setup-Di0UMyWx.mjs.map +1 -0
  257. package/.output/server/chunks/build/{storage-CJEmviCD.mjs → storage-gAbY1KbQ.mjs} +10 -10
  258. package/.output/server/chunks/build/storage-gAbY1KbQ.mjs.map +1 -0
  259. package/.output/server/chunks/build/{tags-DauTe_F-.mjs → tags-DJ80wCqt.mjs} +6 -7
  260. package/.output/server/chunks/build/tags-DJ80wCqt.mjs.map +1 -0
  261. package/.output/server/chunks/build/{test-cases-thBbAykw.mjs → test-cases-YP83YlnL.mjs} +18 -18
  262. package/.output/server/chunks/build/test-cases-YP83YlnL.mjs.map +1 -0
  263. package/.output/server/chunks/build/test-functions-BwLTxGmM.mjs +550 -0
  264. package/.output/server/chunks/build/test-functions-BwLTxGmM.mjs.map +1 -0
  265. package/.output/server/chunks/build/{timeout-hygiene-CbnSaVbK.mjs → timeout-hygiene-RpXDjXTX.mjs} +6 -6
  266. package/.output/server/chunks/build/timeout-hygiene-RpXDjXTX.mjs.map +1 -0
  267. package/.output/server/chunks/build/useAiStatus-UR8x-feE.mjs +9 -0
  268. package/.output/server/chunks/build/useAiStatus-UR8x-feE.mjs.map +1 -0
  269. package/.output/server/chunks/build/{useCopyRich-RJKhWoyj.mjs → useCopyRich-Cd5Yj_Wy.mjs} +694 -242
  270. package/.output/server/chunks/build/useCopyRich-Cd5Yj_Wy.mjs.map +1 -0
  271. package/.output/server/chunks/build/{useDesktopDownload-BepjqxOt.mjs → useDesktopDownload-BmR6ouz2.mjs} +2 -2
  272. package/.output/server/chunks/build/useDesktopDownload-BmR6ouz2.mjs.map +1 -0
  273. package/.output/server/chunks/build/{useOpenInIde-BbTnPhFA.mjs → useOpenInIde-DolN3bZ5.mjs} +1 -1
  274. package/.output/server/chunks/build/useOpenInIde-DolN3bZ5.mjs.map +1 -0
  275. package/.output/server/chunks/build/useSettingsNav-DfnOFlR_.mjs +19 -0
  276. package/.output/server/chunks/build/useSettingsNav-DfnOFlR_.mjs.map +1 -0
  277. package/.output/server/chunks/build/{users-CTUqXyGh.mjs → users-I2K7HXS2.mjs} +6 -7
  278. package/.output/server/chunks/build/users-I2K7HXS2.mjs.map +1 -0
  279. package/.output/server/chunks/build/{wasted-time-BNTPIyrC.mjs → wasted-time-DyIk0olc.mjs} +9 -9
  280. package/.output/server/chunks/build/wasted-time-DyIk0olc.mjs.map +1 -0
  281. package/.output/server/chunks/nitro/nitro.mjs +1348 -675
  282. package/.output/server/chunks/nitro/nitro.mjs.map +1 -1
  283. package/.output/server/chunks/routes/__piwi/session.get.mjs +2 -1
  284. package/.output/server/chunks/routes/__piwi/session.get.mjs.map +1 -1
  285. package/.output/server/chunks/routes/api/admin/cleanup.delete.mjs +1 -0
  286. package/.output/server/chunks/routes/api/admin/cleanup.delete.mjs.map +1 -1
  287. package/.output/server/chunks/routes/api/admin/stats.get.mjs +1 -0
  288. package/.output/server/chunks/routes/api/admin/stats.get.mjs.map +1 -1
  289. package/.output/server/chunks/routes/api/ai/status.get.mjs +1 -0
  290. package/.output/server/chunks/routes/api/ai/status.get.mjs.map +1 -1
  291. package/.output/server/chunks/routes/api/analytics/_widget_.get.mjs +1 -0
  292. package/.output/server/chunks/routes/api/analytics/_widget_.get.mjs.map +1 -1
  293. package/.output/server/chunks/routes/api/auth/logout.post.mjs +1 -0
  294. package/.output/server/chunks/routes/api/auth/logout.post.mjs.map +1 -1
  295. package/.output/server/chunks/routes/api/auth/me.get.mjs +1 -0
  296. package/.output/server/chunks/routes/api/auth/me.get.mjs.map +1 -1
  297. package/.output/server/chunks/routes/api/auth/oauth/_provider/callback.get.mjs +1 -0
  298. package/.output/server/chunks/routes/api/auth/oauth/_provider/callback.get.mjs.map +1 -1
  299. package/.output/server/chunks/routes/api/auth/oauth/_provider/login.get.mjs +1 -0
  300. package/.output/server/chunks/routes/api/auth/oauth/_provider/login.get.mjs.map +1 -1
  301. package/.output/server/chunks/routes/api/auth/oauth/_provider/unlink.post.mjs +1 -0
  302. package/.output/server/chunks/routes/api/auth/oauth/_provider/unlink.post.mjs.map +1 -1
  303. package/.output/server/chunks/routes/api/auth/send-verify-email.post.mjs +1 -0
  304. package/.output/server/chunks/routes/api/auth/send-verify-email.post.mjs.map +1 -1
  305. package/.output/server/chunks/routes/api/auth/setup.get.mjs +1 -0
  306. package/.output/server/chunks/routes/api/auth/setup.get.mjs.map +1 -1
  307. package/.output/server/chunks/routes/api/auth/verify-email.get.mjs +1 -0
  308. package/.output/server/chunks/routes/api/auth/verify-email.get.mjs.map +1 -1
  309. package/.output/server/chunks/routes/api/channels/_id/test.post.mjs +1 -0
  310. package/.output/server/chunks/routes/api/channels/_id/test.post.mjs.map +1 -1
  311. package/.output/server/chunks/routes/api/channels/_id_.delete.mjs +1 -0
  312. package/.output/server/chunks/routes/api/channels/_id_.delete.mjs.map +1 -1
  313. package/.output/server/chunks/routes/api/cluster-merge-suggestions/_id/approve.post.mjs +1 -0
  314. package/.output/server/chunks/routes/api/cluster-merge-suggestions/_id/approve.post.mjs.map +1 -1
  315. package/.output/server/chunks/routes/api/cluster-merge-suggestions/_id/reject.post.mjs +1 -0
  316. package/.output/server/chunks/routes/api/cluster-merge-suggestions/_id/reject.post.mjs.map +1 -1
  317. package/.output/server/chunks/routes/api/desktop/import-local.post.mjs +1 -0
  318. package/.output/server/chunks/routes/api/desktop/import-local.post.mjs.map +1 -1
  319. package/.output/server/chunks/routes/api/desktop/reporter-config.get.mjs +1 -0
  320. package/.output/server/chunks/routes/api/desktop/reporter-config.get.mjs.map +1 -1
  321. package/.output/server/chunks/routes/api/failure-clusters/_id/base-commit.patch.mjs +1 -0
  322. package/.output/server/chunks/routes/api/failure-clusters/_id/base-commit.patch.mjs.map +1 -1
  323. package/.output/server/chunks/routes/api/failure-clusters/_id/branches.get.mjs +1 -0
  324. package/.output/server/chunks/routes/api/failure-clusters/_id/branches.get.mjs.map +1 -1
  325. package/.output/server/chunks/routes/api/failure-clusters/_id/commit-diff.get.mjs +1 -0
  326. package/.output/server/chunks/routes/api/failure-clusters/_id/commit-diff.get.mjs.map +1 -1
  327. package/.output/server/chunks/routes/api/failure-clusters/_id/commits.get.mjs +1 -0
  328. package/.output/server/chunks/routes/api/failure-clusters/_id/commits.get.mjs.map +1 -1
  329. package/.output/server/chunks/routes/api/failure-clusters/_id/context.get.mjs +1 -0
  330. package/.output/server/chunks/routes/api/failure-clusters/_id/context.get.mjs.map +1 -1
  331. package/.output/server/chunks/routes/api/failure-clusters/_id/diagnose/stream.post.mjs +1 -0
  332. package/.output/server/chunks/routes/api/failure-clusters/_id/diagnose/stream.post.mjs.map +1 -1
  333. package/.output/server/chunks/routes/api/failure-clusters/_id/diagnose.post.mjs +1 -0
  334. package/.output/server/chunks/routes/api/failure-clusters/_id/diagnose.post.mjs.map +1 -1
  335. package/.output/server/chunks/routes/api/failure-clusters/_id/diagnoses.get.mjs +1 -0
  336. package/.output/server/chunks/routes/api/failure-clusters/_id/diagnoses.get.mjs.map +1 -1
  337. package/.output/server/chunks/routes/api/failure-clusters/_id/diagnosis.get.mjs +1 -0
  338. package/.output/server/chunks/routes/api/failure-clusters/_id/diagnosis.get.mjs.map +1 -1
  339. package/.output/server/chunks/routes/api/failure-clusters/_id/export.get.mjs +1 -0
  340. package/.output/server/chunks/routes/api/failure-clusters/_id/export.get.mjs.map +1 -1
  341. package/.output/server/chunks/routes/api/failure-clusters/_id/extract-cases.post.mjs +1 -0
  342. package/.output/server/chunks/routes/api/failure-clusters/_id/extract-cases.post.mjs.map +1 -1
  343. package/.output/server/chunks/routes/api/failure-clusters/_id/fix-plan.get.mjs +1 -0
  344. package/.output/server/chunks/routes/api/failure-clusters/_id/fix-plan.get.mjs.map +1 -1
  345. package/.output/server/chunks/routes/api/failure-clusters/_id/status.patch.mjs +1 -0
  346. package/.output/server/chunks/routes/api/failure-clusters/_id/status.patch.mjs.map +1 -1
  347. package/.output/server/chunks/routes/api/failure-clusters/_id_.get.mjs +1 -0
  348. package/.output/server/chunks/routes/api/failure-clusters/_id_.get.mjs.map +1 -1
  349. package/.output/server/chunks/routes/api/failure-diagnoses/_id/feedback.patch.mjs +1 -0
  350. package/.output/server/chunks/routes/api/failure-diagnoses/_id/feedback.patch.mjs.map +1 -1
  351. package/.output/server/chunks/routes/api/files/_...path_.get.mjs +1 -0
  352. package/.output/server/chunks/routes/api/files/_...path_.get.mjs.map +1 -1
  353. package/.output/server/chunks/routes/api/health.get.mjs +1 -0
  354. package/.output/server/chunks/routes/api/health.get.mjs.map +1 -1
  355. package/.output/server/chunks/routes/api/index.get.mjs +1 -0
  356. package/.output/server/chunks/routes/api/index.get.mjs.map +1 -1
  357. package/.output/server/chunks/routes/api/index.get2.mjs +1 -0
  358. package/.output/server/chunks/routes/api/index.get2.mjs.map +1 -1
  359. package/.output/server/chunks/routes/api/index.get3.mjs +1 -0
  360. package/.output/server/chunks/routes/api/index.get3.mjs.map +1 -1
  361. package/.output/server/chunks/routes/api/index.get4.mjs +2 -1
  362. package/.output/server/chunks/routes/api/index.get4.mjs.map +1 -1
  363. package/.output/server/chunks/routes/api/index.get5.mjs +1 -0
  364. package/.output/server/chunks/routes/api/index.get5.mjs.map +1 -1
  365. package/.output/server/chunks/routes/api/index.post3.mjs +1 -1
  366. package/.output/server/chunks/routes/api/index.post4.mjs +1 -1
  367. package/.output/server/chunks/routes/api/index.post5.mjs +1 -1
  368. package/.output/server/chunks/routes/api/links/_id/refresh.post.mjs +1 -0
  369. package/.output/server/chunks/routes/api/links/_id/refresh.post.mjs.map +1 -1
  370. package/.output/server/chunks/routes/api/links/_id_.delete.mjs +1 -0
  371. package/.output/server/chunks/routes/api/links/_id_.delete.mjs.map +1 -1
  372. package/.output/server/chunks/routes/api/markers/_id_.delete.mjs +1 -0
  373. package/.output/server/chunks/routes/api/markers/_id_.delete.mjs.map +1 -1
  374. package/.output/server/chunks/routes/api/notifications/stream.get.mjs +1 -0
  375. package/.output/server/chunks/routes/api/notifications/stream.get.mjs.map +1 -1
  376. package/.output/server/chunks/routes/api/projects/_id/cluster-merge-suggestions.get.mjs +1 -0
  377. package/.output/server/chunks/routes/api/projects/_id/cluster-merge-suggestions.get.mjs.map +1 -1
  378. package/.output/server/chunks/routes/api/projects/_id/failure-clusters.get.mjs +1 -0
  379. package/.output/server/chunks/routes/api/projects/_id/failure-clusters.get.mjs.map +1 -1
  380. package/.output/server/chunks/routes/api/projects/_id/flaky-classify.post.mjs +1 -0
  381. package/.output/server/chunks/routes/api/projects/_id/flaky-classify.post.mjs.map +1 -1
  382. package/.output/server/chunks/routes/api/projects/_id/flaky-tests.get.mjs +1 -0
  383. package/.output/server/chunks/routes/api/projects/_id/flaky-tests.get.mjs.map +1 -1
  384. package/.output/server/chunks/routes/api/projects/_id/latest-run.get.mjs +1 -0
  385. package/.output/server/chunks/routes/api/projects/_id/latest-run.get.mjs.map +1 -1
  386. package/.output/server/chunks/routes/api/projects/_id/markers.get.mjs +1 -0
  387. package/.output/server/chunks/routes/api/projects/_id/markers.get.mjs.map +1 -1
  388. package/.output/server/chunks/routes/api/projects/_id/members.get.mjs +1 -0
  389. package/.output/server/chunks/routes/api/projects/_id/members.get.mjs.map +1 -1
  390. package/.output/server/chunks/routes/api/projects/_id/performance.get.mjs +1 -0
  391. package/.output/server/chunks/routes/api/projects/_id/performance.get.mjs.map +1 -1
  392. package/.output/server/chunks/routes/api/projects/_id/quarantine/_testCaseId_.delete.mjs +1 -0
  393. package/.output/server/chunks/routes/api/projects/_id/quarantine/_testCaseId_.delete.mjs.map +1 -1
  394. package/.output/server/chunks/routes/api/projects/_id/quarantine.get.mjs +1 -0
  395. package/.output/server/chunks/routes/api/projects/_id/quarantine.get.mjs.map +1 -1
  396. package/.output/server/chunks/routes/api/projects/_id/quarantine.post.mjs +1 -0
  397. package/.output/server/chunks/routes/api/projects/_id/quarantine.post.mjs.map +1 -1
  398. package/.output/server/chunks/routes/api/projects/_id/slow-tests.get.mjs +1 -0
  399. package/.output/server/chunks/routes/api/projects/_id/slow-tests.get.mjs.map +1 -1
  400. package/.output/server/chunks/routes/api/projects/_id/spec-health.get.mjs +1 -0
  401. package/.output/server/chunks/routes/api/projects/_id/spec-health.get.mjs.map +1 -1
  402. package/.output/server/chunks/routes/api/projects/_id/test-cases.get.mjs +1 -0
  403. package/.output/server/chunks/routes/api/projects/_id/test-cases.get.mjs.map +1 -1
  404. package/.output/server/chunks/routes/api/projects/_id/test-functions/extract.post.mjs +76 -0
  405. package/.output/server/chunks/routes/api/projects/_id/test-functions/extract.post.mjs.map +1 -0
  406. package/.output/server/chunks/routes/api/projects/_id/test-functions/validate-proposal.post.mjs +66 -0
  407. package/.output/server/chunks/routes/api/projects/_id/test-functions/validate-proposal.post.mjs.map +1 -0
  408. package/.output/server/chunks/routes/api/projects/_id/test-functions.get.mjs +53 -0
  409. package/.output/server/chunks/routes/api/projects/_id/test-functions.get.mjs.map +1 -0
  410. package/.output/server/chunks/routes/api/projects/_id/test-functions.post.mjs +67 -0
  411. package/.output/server/chunks/routes/api/projects/_id/test-functions.post.mjs.map +1 -0
  412. package/.output/server/chunks/routes/api/projects/_id/timeout-opportunities.get.mjs +2 -1
  413. package/.output/server/chunks/routes/api/projects/_id/timeout-opportunities.get.mjs.map +1 -1
  414. package/.output/server/chunks/routes/api/projects/_id_.delete.mjs +1 -0
  415. package/.output/server/chunks/routes/api/projects/_id_.delete.mjs.map +1 -1
  416. package/.output/server/chunks/routes/api/projects/_id_.get.mjs +1 -0
  417. package/.output/server/chunks/routes/api/projects/_id_.get.mjs.map +1 -1
  418. package/.output/server/chunks/routes/api/projects/menu.get.mjs +2 -1
  419. package/.output/server/chunks/routes/api/projects/menu.get.mjs.map +1 -1
  420. package/.output/server/chunks/routes/api/projects/overview.get.mjs +2 -1
  421. package/.output/server/chunks/routes/api/projects/overview.get.mjs.map +1 -1
  422. package/.output/server/chunks/routes/api/projects.get.mjs +1 -0
  423. package/.output/server/chunks/routes/api/projects.get.mjs.map +1 -1
  424. package/.output/server/chunks/routes/api/search.get.mjs +2 -1
  425. package/.output/server/chunks/routes/api/search.get.mjs.map +1 -1
  426. package/.output/server/chunks/routes/api/settings/ai/limits.get.mjs +2 -1
  427. package/.output/server/chunks/routes/api/settings/ai/limits.get.mjs.map +1 -1
  428. package/.output/server/chunks/routes/api/settings/ai/limits.put.mjs +2 -1
  429. package/.output/server/chunks/routes/api/settings/ai/limits.put.mjs.map +1 -1
  430. package/.output/server/chunks/routes/api/settings/ai/models.post.mjs +1 -0
  431. package/.output/server/chunks/routes/api/settings/ai/models.post.mjs.map +1 -1
  432. package/.output/server/chunks/routes/api/settings/ai/test.post.mjs +2 -1
  433. package/.output/server/chunks/routes/api/settings/ai/test.post.mjs.map +1 -1
  434. package/.output/server/chunks/routes/api/settings/ai/usage.get.mjs +1 -0
  435. package/.output/server/chunks/routes/api/settings/ai/usage.get.mjs.map +1 -1
  436. package/.output/server/chunks/routes/api/settings/ai.get.mjs +2 -1
  437. package/.output/server/chunks/routes/api/settings/ai.get.mjs.map +1 -1
  438. package/.output/server/chunks/routes/api/settings/ai.put.mjs +2 -1
  439. package/.output/server/chunks/routes/api/settings/ai.put.mjs.map +1 -1
  440. package/.output/server/chunks/routes/api/settings/pr-feedback.get.mjs +2 -1
  441. package/.output/server/chunks/routes/api/settings/pr-feedback.get.mjs.map +1 -1
  442. package/.output/server/chunks/routes/api/settings/pr-feedback.put.mjs +2 -1
  443. package/.output/server/chunks/routes/api/settings/pr-feedback.put.mjs.map +1 -1
  444. package/.output/server/chunks/routes/api/settings/smtp.get.mjs +2 -1
  445. package/.output/server/chunks/routes/api/settings/smtp.get.mjs.map +1 -1
  446. package/.output/server/chunks/routes/api/settings/timeout-hygiene.get.mjs +2 -1
  447. package/.output/server/chunks/routes/api/settings/timeout-hygiene.get.mjs.map +1 -1
  448. package/.output/server/chunks/routes/api/settings/timeout-hygiene.put.mjs +2 -1
  449. package/.output/server/chunks/routes/api/settings/timeout-hygiene.put.mjs.map +1 -1
  450. package/.output/server/chunks/routes/api/settings/wasted-waits.get.mjs +2 -1
  451. package/.output/server/chunks/routes/api/settings/wasted-waits.get.mjs.map +1 -1
  452. package/.output/server/chunks/routes/api/settings/wasted-waits.put.mjs +2 -1
  453. package/.output/server/chunks/routes/api/settings/wasted-waits.put.mjs.map +1 -1
  454. package/.output/server/chunks/routes/api/setup-status.get.mjs +99 -0
  455. package/.output/server/chunks/routes/api/setup-status.get.mjs.map +1 -0
  456. package/.output/server/chunks/routes/api/stream.get.mjs +1 -0
  457. package/.output/server/chunks/routes/api/stream.get.mjs.map +1 -1
  458. package/.output/server/chunks/routes/api/subscriptions/_id_.delete.mjs +1 -0
  459. package/.output/server/chunks/routes/api/subscriptions/_id_.delete.mjs.map +1 -1
  460. package/.output/server/chunks/routes/api/subscriptions/_id_.patch.mjs +1 -1
  461. package/.output/server/chunks/routes/api/tags/_id_.delete.mjs +2 -1
  462. package/.output/server/chunks/routes/api/tags/_id_.delete.mjs.map +1 -1
  463. package/.output/server/chunks/routes/api/tags/_id_.put.mjs +1 -1
  464. package/.output/server/chunks/routes/api/test-cases/_id/history.get.mjs +2 -1
  465. package/.output/server/chunks/routes/api/test-cases/_id/history.get.mjs.map +1 -1
  466. package/.output/server/chunks/routes/api/test-cases/_id/stability-trend.get.mjs +2 -1
  467. package/.output/server/chunks/routes/api/test-cases/_id/stability-trend.get.mjs.map +1 -1
  468. package/.output/server/chunks/routes/api/test-cases/_id_.get.mjs +2 -1
  469. package/.output/server/chunks/routes/api/test-cases/_id_.get.mjs.map +1 -1
  470. package/.output/server/chunks/routes/api/test-functions/_id_.delete.mjs +60 -0
  471. package/.output/server/chunks/routes/api/test-functions/_id_.delete.mjs.map +1 -0
  472. package/.output/server/chunks/routes/api/test-functions/_id_.put.mjs +69 -0
  473. package/.output/server/chunks/routes/api/test-functions/_id_.put.mjs.map +1 -0
  474. package/.output/server/chunks/routes/api/test-run-cases/_id/diagnose.post.mjs +2 -1
  475. package/.output/server/chunks/routes/api/test-run-cases/_id/diagnose.post.mjs.map +1 -1
  476. package/.output/server/chunks/routes/api/test-run-cases/_id/diagnosis-context.get.mjs +2 -1
  477. package/.output/server/chunks/routes/api/test-run-cases/_id/diagnosis-context.get.mjs.map +1 -1
  478. package/.output/server/chunks/routes/api/test-run-cases/_id/diagnosis.get.mjs +2 -1
  479. package/.output/server/chunks/routes/api/test-run-cases/_id/diagnosis.get.mjs.map +1 -1
  480. package/.output/server/chunks/routes/api/test-run-cases/_id/export.get.mjs +2 -1
  481. package/.output/server/chunks/routes/api/test-run-cases/_id/export.get.mjs.map +1 -1
  482. package/.output/server/chunks/routes/api/test-run-cases/_id/traces.get.mjs +2 -1
  483. package/.output/server/chunks/routes/api/test-run-cases/_id/traces.get.mjs.map +1 -1
  484. package/.output/server/chunks/routes/api/test-run-cases/_id_.get.mjs +2 -1
  485. package/.output/server/chunks/routes/api/test-run-cases/_id_.get.mjs.map +1 -1
  486. package/.output/server/chunks/routes/api/test-runs/_id/begin.post.mjs +2 -1
  487. package/.output/server/chunks/routes/api/test-runs/_id/begin.post.mjs.map +1 -1
  488. package/.output/server/chunks/routes/api/test-runs/_id/case-files.post.mjs +2 -1
  489. package/.output/server/chunks/routes/api/test-runs/_id/case-files.post.mjs.map +1 -1
  490. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/dom-snapshot.get.mjs +2 -1
  491. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/dom-snapshot.get.mjs.map +1 -1
  492. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/environment-diff.get.mjs +2 -1
  493. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/environment-diff.get.mjs.map +1 -1
  494. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/locator-healing.get.mjs +2 -1
  495. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/locator-healing.get.mjs.map +1 -1
  496. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/locator-pick.post.mjs +2 -1
  497. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/locator-pick.post.mjs.map +1 -1
  498. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/trace-network-body.get.mjs +2 -1
  499. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/trace-network-body.get.mjs.map +1 -1
  500. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/trace-network.get.mjs +2 -1
  501. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/trace-network.get.mjs.map +1 -1
  502. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/trace-stacks.get.mjs +2 -1
  503. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/trace-stacks.get.mjs.map +1 -1
  504. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/visual-diff.get.mjs +2 -1
  505. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/visual-diff.get.mjs.map +1 -1
  506. package/.output/server/chunks/routes/api/test-runs/_id/events.post.mjs +2 -1
  507. package/.output/server/chunks/routes/api/test-runs/_id/events.post.mjs.map +1 -1
  508. package/.output/server/chunks/routes/api/test-runs/_id/failure-groups.get.mjs +2 -1
  509. package/.output/server/chunks/routes/api/test-runs/_id/failure-groups.get.mjs.map +1 -1
  510. package/.output/server/chunks/routes/api/test-runs/_id/finish.post.mjs +2 -1
  511. package/.output/server/chunks/routes/api/test-runs/_id/finish.post.mjs.map +1 -1
  512. package/.output/server/chunks/routes/api/test-runs/_id/gate.post.mjs +2 -1
  513. package/.output/server/chunks/routes/api/test-runs/_id/gate.post.mjs.map +1 -1
  514. package/.output/server/chunks/routes/api/test-runs/_id/heartbeat.post.mjs +2 -1
  515. package/.output/server/chunks/routes/api/test-runs/_id/heartbeat.post.mjs.map +1 -1
  516. package/.output/server/chunks/routes/api/test-runs/_id/insights.get.mjs +2 -1
  517. package/.output/server/chunks/routes/api/test-runs/_id/insights.get.mjs.map +1 -1
  518. package/.output/server/chunks/routes/api/test-runs/_id/network-requests.get.mjs +2 -1
  519. package/.output/server/chunks/routes/api/test-runs/_id/network-requests.get.mjs.map +1 -1
  520. package/.output/server/chunks/routes/api/test-runs/_id/regression-context.get.mjs +2 -1
  521. package/.output/server/chunks/routes/api/test-runs/_id/regression-context.get.mjs.map +1 -1
  522. package/.output/server/chunks/routes/api/test-runs/_id/stream.get.mjs +2 -1
  523. package/.output/server/chunks/routes/api/test-runs/_id/stream.get.mjs.map +1 -1
  524. package/.output/server/chunks/routes/api/test-runs/_id/summary.get.mjs +2 -1
  525. package/.output/server/chunks/routes/api/test-runs/_id/summary.get.mjs.map +1 -1
  526. package/.output/server/chunks/routes/api/test-runs/_id_.delete.mjs +2 -1
  527. package/.output/server/chunks/routes/api/test-runs/_id_.delete.mjs.map +1 -1
  528. package/.output/server/chunks/routes/api/test-runs/_id_.get.mjs +2 -1
  529. package/.output/server/chunks/routes/api/test-runs/_id_.get.mjs.map +1 -1
  530. package/.output/server/chunks/routes/api/test-runs/_id_.patch.mjs +2 -1
  531. package/.output/server/chunks/routes/api/test-runs/_id_.patch.mjs.map +1 -1
  532. package/.output/server/chunks/routes/api/test-runs/import/check.post.mjs +2 -1
  533. package/.output/server/chunks/routes/api/test-runs/import/check.post.mjs.map +1 -1
  534. package/.output/server/chunks/routes/api/test-runs/import.post.mjs +2 -1
  535. package/.output/server/chunks/routes/api/test-runs/import.post.mjs.map +1 -1
  536. package/.output/server/chunks/routes/api/test-runs/recent.get.mjs +2 -1
  537. package/.output/server/chunks/routes/api/test-runs/recent.get.mjs.map +1 -1
  538. package/.output/server/chunks/routes/api/test-runs/setup.post.mjs +2 -1
  539. package/.output/server/chunks/routes/api/test-runs/setup.post.mjs.map +1 -1
  540. package/.output/server/chunks/routes/api/test-runs/start.post.mjs +2 -1
  541. package/.output/server/chunks/routes/api/test-runs/start.post.mjs.map +1 -1
  542. package/.output/server/chunks/routes/api/test-runs/submit.post.mjs +2 -1
  543. package/.output/server/chunks/routes/api/test-runs/submit.post.mjs.map +1 -1
  544. package/.output/server/chunks/routes/api/test-runs/upload.post.mjs +2 -1
  545. package/.output/server/chunks/routes/api/test-runs/upload.post.mjs.map +1 -1
  546. package/.output/server/chunks/routes/api/tests/cleanup.delete.mjs +1 -0
  547. package/.output/server/chunks/routes/api/tests/cleanup.delete.mjs.map +1 -1
  548. package/.output/server/chunks/routes/api/traces/check.post.mjs +2 -1
  549. package/.output/server/chunks/routes/api/traces/check.post.mjs.map +1 -1
  550. package/.output/server/chunks/routes/api/users/_id/api-keys/_keyId_.delete.mjs +1 -0
  551. package/.output/server/chunks/routes/api/users/_id/api-keys/_keyId_.delete.mjs.map +1 -1
  552. package/.output/server/chunks/routes/api/users/_id/index.get.mjs +1 -0
  553. package/.output/server/chunks/routes/api/users/_id/index.get.mjs.map +1 -1
  554. package/.output/server/chunks/routes/api/users/_id/index.post.mjs +1 -1
  555. package/.output/server/chunks/routes/api/users/_id/invite.post.mjs +2 -1
  556. package/.output/server/chunks/routes/api/users/_id/invite.post.mjs.map +1 -1
  557. package/.output/server/chunks/routes/api/users/_id/projects.get.mjs +2 -1
  558. package/.output/server/chunks/routes/api/users/_id/projects.get.mjs.map +1 -1
  559. package/.output/server/chunks/routes/api/users/_id/projects.put.mjs +1 -1
  560. package/.output/server/chunks/routes/api/users/_id_.delete.mjs +1 -0
  561. package/.output/server/chunks/routes/api/users/_id_.delete.mjs.map +1 -1
  562. package/.output/server/chunks/routes/api/version.get.mjs +2 -1
  563. package/.output/server/chunks/routes/api/version.get.mjs.map +1 -1
  564. package/.output/server/chunks/routes/mcp.post.mjs +41 -11
  565. package/.output/server/chunks/routes/mcp.post.mjs.map +1 -1
  566. package/.output/server/chunks/routes/renderer.mjs +1 -1
  567. package/.output/server/chunks/tasks/sweep.mjs +1 -0
  568. package/.output/server/chunks/tasks/sweep.mjs.map +1 -1
  569. package/.output/server/chunks/tasks/sweep2.mjs +1 -0
  570. package/.output/server/chunks/tasks/sweep2.mjs.map +1 -1
  571. package/.output/server/database/migrations/0043_watery_dragon_lord.sql +22 -0
  572. package/.output/server/database/migrations/meta/0043_snapshot.json +3764 -0
  573. package/.output/server/database/migrations/meta/_journal.json +7 -0
  574. package/.output/server/database/migrations-pg/0044_dark_triathlon.sql +22 -0
  575. package/.output/server/database/migrations-pg/meta/0044_snapshot.json +4473 -0
  576. package/.output/server/database/migrations-pg/meta/_journal.json +7 -0
  577. package/.output/server/index.mjs +2 -1
  578. package/.output/server/index.mjs.map +1 -1
  579. package/.output/server/package.json +1 -1
  580. package/package.json +1 -1
  581. package/.output/public/_nuxt/8PUUncmO.js +0 -44
  582. package/.output/public/_nuxt/B8zkOmwo.js +0 -1
  583. package/.output/public/_nuxt/B96M2gdj.js +0 -1
  584. package/.output/public/_nuxt/B9OLmp0f.js +0 -1
  585. package/.output/public/_nuxt/BUa0V0Ly.js +0 -1
  586. package/.output/public/_nuxt/BUkim3TM.js +0 -1
  587. package/.output/public/_nuxt/BVc14Ncz.js +0 -4
  588. package/.output/public/_nuxt/BY0HxR3t.js +0 -17
  589. package/.output/public/_nuxt/B_xAMWQS.js +0 -2
  590. package/.output/public/_nuxt/BdQoBaOv.js +0 -1
  591. package/.output/public/_nuxt/BgRu_3tT.js +0 -1
  592. package/.output/public/_nuxt/BiO7RBWb.js +0 -6
  593. package/.output/public/_nuxt/CEfS4-oS.js +0 -64
  594. package/.output/public/_nuxt/CIoSMkpp.js +0 -1
  595. package/.output/public/_nuxt/CSJ-eOQM.js +0 -1
  596. package/.output/public/_nuxt/CahpB9Z2.js +0 -5
  597. package/.output/public/_nuxt/Cbh--1MW.js +0 -1
  598. package/.output/public/_nuxt/Cx6gc2VW.js +0 -1
  599. package/.output/public/_nuxt/D--H4jLI.js +0 -1
  600. package/.output/public/_nuxt/D1POo6S4.js +0 -10
  601. package/.output/public/_nuxt/D8nkF-OO.js +0 -3
  602. package/.output/public/_nuxt/DA25RkyK.js +0 -1
  603. package/.output/public/_nuxt/DIB-5fUJ.js +0 -1
  604. package/.output/public/_nuxt/DMec-OLo.js +0 -1
  605. package/.output/public/_nuxt/DSqHUrvO.js +0 -1
  606. package/.output/public/_nuxt/DmkUdSS4.js +0 -1
  607. package/.output/public/_nuxt/DoIREDVb.js +0 -1
  608. package/.output/public/_nuxt/DpZ1r1HA.js +0 -1
  609. package/.output/public/_nuxt/DqcKngf3.js +0 -1
  610. package/.output/public/_nuxt/DtHJgCS8.js +0 -1
  611. package/.output/public/_nuxt/Dtd4rC58.js +0 -9
  612. package/.output/public/_nuxt/Dy86h-7P.js +0 -1
  613. package/.output/public/_nuxt/HPNQD6v3.js +0 -1
  614. package/.output/public/_nuxt/HXadJrHu.js +0 -2
  615. package/.output/public/_nuxt/McL25vkx.js +0 -34
  616. package/.output/public/_nuxt/Nn93e_Mz.js +0 -1
  617. package/.output/public/_nuxt/UdR3DBPS.js +0 -1
  618. package/.output/public/_nuxt/_mj6CfPa.js +0 -1
  619. package/.output/public/_nuxt/builds/meta/e659b3e1-0e61-4971-940e-10063f9f4763.json +0 -1
  620. package/.output/public/_nuxt/entry.DmptwB51.css +0 -1
  621. package/.output/public/_nuxt/ryMzSDUj.js +0 -2
  622. package/.output/server/chunks/build/Breadcrumb-Ak2Lg3oM.mjs.map +0 -1
  623. package/.output/server/chunks/build/BreadcrumbNav-DO7I_z-n.mjs.map +0 -1
  624. package/.output/server/chunks/build/BrowserBadge-MFvBwxmD.mjs.map +0 -1
  625. package/.output/server/chunks/build/ChartCard-Y1UKwMsf.mjs.map +0 -1
  626. package/.output/server/chunks/build/Checkbox-4Q5d0fa0.mjs.map +0 -1
  627. package/.output/server/chunks/build/CiEnvCard-DB5DvBh1.mjs.map +0 -1
  628. package/.output/server/chunks/build/CodeBlock-BgE-NSmE.mjs.map +0 -1
  629. package/.output/server/chunks/build/DashboardNavbar-BHmMSPX7.mjs.map +0 -1
  630. package/.output/server/chunks/build/DashboardSidebarToggle-DCTnHiIv.mjs.map +0 -1
  631. package/.output/server/chunks/build/DataLocationCard-B_YHdzSz.mjs.map +0 -1
  632. package/.output/server/chunks/build/DiagnosisPanel-CALyEmcJ.mjs.map +0 -1
  633. package/.output/server/chunks/build/DurationValue-D20oGbnc.mjs.map +0 -1
  634. package/.output/server/chunks/build/EntityLinks-BBHWssHH.mjs.map +0 -1
  635. package/.output/server/chunks/build/FormField-B0HKsdMd.mjs.map +0 -1
  636. package/.output/server/chunks/build/HelpHint-DrcIv-Oj.mjs.map +0 -1
  637. package/.output/server/chunks/build/LoadingState-C3pBSuOO.mjs.map +0 -1
  638. package/.output/server/chunks/build/MiniRunBars-CZMugDrh.mjs.map +0 -1
  639. package/.output/server/chunks/build/ProjectTestCasesTable-Bo61P5K1.mjs.map +0 -1
  640. package/.output/server/chunks/build/RunReports-DFLv51TX.mjs.map +0 -1
  641. package/.output/server/chunks/build/RunStatusBadge-FfGb6bkW.mjs.map +0 -1
  642. package/.output/server/chunks/build/SectionCard-CN-v0FZ_.mjs.map +0 -1
  643. package/.output/server/chunks/build/Select-5DK9frQ7.mjs.map +0 -1
  644. package/.output/server/chunks/build/SettingsField-BZfx4ma1.mjs.map +0 -1
  645. package/.output/server/chunks/build/StatTile-D61Vzo6e.mjs.map +0 -1
  646. package/.output/server/chunks/build/Switch-B5Fp8ULt.mjs.map +0 -1
  647. package/.output/server/chunks/build/TestCaseHistoryChart-CSi64vVA.mjs.map +0 -1
  648. package/.output/server/chunks/build/TestMetaBadges-D5_yUtIP.mjs.map +0 -1
  649. package/.output/server/chunks/build/TestStatusBar-DX3EhlyP.mjs.map +0 -1
  650. package/.output/server/chunks/build/Textarea-Dv2-lOvW.mjs.map +0 -1
  651. package/.output/server/chunks/build/_id_-BdG37K7s.mjs.map +0 -1
  652. package/.output/server/chunks/build/_id_-BdJs7BJZ.mjs.map +0 -1
  653. package/.output/server/chunks/build/_id_-BxA6IgWr.mjs.map +0 -1
  654. package/.output/server/chunks/build/_id_-C_uSBiyU.mjs.map +0 -1
  655. package/.output/server/chunks/build/about-BE0UV-8-.mjs.map +0 -1
  656. package/.output/server/chunks/build/account-DAfvaD-F.mjs.map +0 -1
  657. package/.output/server/chunks/build/analytics-Bo_B_jko.mjs.map +0 -1
  658. package/.output/server/chunks/build/db.client-CQoVTYB9.mjs.map +0 -1
  659. package/.output/server/chunks/build/edit-J0asTFg8.mjs.map +0 -1
  660. package/.output/server/chunks/build/fetch-B4FwBOzu.mjs.map +0 -1
  661. package/.output/server/chunks/build/forgot-password-CC__1OnV.mjs.map +0 -1
  662. package/.output/server/chunks/build/import-CS9oylTN.mjs.map +0 -1
  663. package/.output/server/chunks/build/index-CU2nZhAa.mjs.map +0 -1
  664. package/.output/server/chunks/build/index-DE45ycdZ.mjs.map +0 -1
  665. package/.output/server/chunks/build/index-e9skCi-V.mjs.map +0 -1
  666. package/.output/server/chunks/build/index-hGHlmyxj.mjs.map +0 -1
  667. package/.output/server/chunks/build/index-tR6owKzj.mjs +0 -167
  668. package/.output/server/chunks/build/index-tR6owKzj.mjs.map +0 -1
  669. package/.output/server/chunks/build/login-Da4u1IlW.mjs.map +0 -1
  670. package/.output/server/chunks/build/mcp-uhVCCwQM.mjs.map +0 -1
  671. package/.output/server/chunks/build/notifications-fx_qnKGA.mjs.map +0 -1
  672. package/.output/server/chunks/build/pr-feedback-X6-70iF0.mjs.map +0 -1
  673. package/.output/server/chunks/build/reset-password-BmrUS4ZD.mjs.map +0 -1
  674. package/.output/server/chunks/build/settings-CCYe7rsc.mjs.map +0 -1
  675. package/.output/server/chunks/build/settings-metadata-DrEqWcW-.mjs.map +0 -1
  676. package/.output/server/chunks/build/storage-CJEmviCD.mjs.map +0 -1
  677. package/.output/server/chunks/build/tags-DauTe_F-.mjs.map +0 -1
  678. package/.output/server/chunks/build/test-cases-thBbAykw.mjs.map +0 -1
  679. package/.output/server/chunks/build/timeout-hygiene-CbnSaVbK.mjs.map +0 -1
  680. package/.output/server/chunks/build/useAiStatus-CxjMmDDY.mjs.map +0 -1
  681. package/.output/server/chunks/build/useCopy-CeKWgHyT.mjs +0 -33
  682. package/.output/server/chunks/build/useCopy-CeKWgHyT.mjs.map +0 -1
  683. package/.output/server/chunks/build/useCopyRich-RJKhWoyj.mjs.map +0 -1
  684. package/.output/server/chunks/build/useDesktopDownload-BepjqxOt.mjs.map +0 -1
  685. package/.output/server/chunks/build/useOpenInIde-BbTnPhFA.mjs.map +0 -1
  686. package/.output/server/chunks/build/useSettingsNav-DnQKacz8.mjs.map +0 -1
  687. package/.output/server/chunks/build/users-CTUqXyGh.mjs.map +0 -1
  688. package/.output/server/chunks/build/wasted-time-BNTPIyrC.mjs.map +0 -1
@@ -1,22 +1,21 @@
1
- import { j as useToast, o as _sfc_main$p, s as __nuxt_component_12, n as _sfc_main$7$1, m as _sfc_main$k$1, r as useRuntimeConfig, v as _sfc_main$8$1, G as refreshNuxtData, H as _export_sfc, _ as _sfc_main$d$1 } from './server.mjs';
2
- import { _ as __nuxt_component_2$1, a as __nuxt_component_9 } from './HelpHint-DrcIv-Oj.mjs';
3
- import { _ as _sfc_main$n } from './Separator-CR4WcEKD.mjs';
1
+ import { j as useToast, o as _sfc_main$p, v as __nuxt_component_12, n as _sfc_main$7$1, m as _sfc_main$k$1, r as useRuntimeConfig, w as _sfc_main$8$1, G as refreshNuxtData, H as _export_sfc, _ as _sfc_main$d$1 } from './server.mjs';
2
+ import { _ as __nuxt_component_2$1, a as __nuxt_component_9 } from './HelpHint-DjGrGFA7.mjs';
3
+ import { _ as _sfc_main$o } from './Separator-CR4WcEKD.mjs';
4
4
  import { ref, defineComponent, mergeProps, unref, withCtx, withDirectives, createVNode, renderSlot, vShow, withKeys, withModifiers, openBlock, createBlock, createCommentVNode, createTextVNode, toDisplayString, Fragment, computed, resolveDynamicComponent, createSlots, renderList, isRef, nextTick, useModel, watch, mergeModels, useSSRContext } from 'vue';
5
5
  import { ssrRenderAttrs, ssrRenderComponent, ssrRenderStyle, ssrRenderSlot, ssrRenderAttr, ssrInterpolate, ssrRenderVNode, ssrRenderList, ssrRenderClass, ssrRenderTeleport } from 'vue/server-renderer';
6
- import { u as useDesktopDownload } from './useDesktopDownload-BepjqxOt.mjs';
7
- import { u as useCopy } from './useCopy-CeKWgHyT.mjs';
8
- import { f as formatRelativeTime, m as getTraceViewerUrl, n as fileApiUrl, o as parsePatchLines, q as patchLineClass, e as errorMessage, u as getFileApiPath } from './index-CU2nZhAa.mjs';
9
- import { _ as _sfc_main$k } from './Alert-C4xq8lao.mjs';
10
- import { dx as recommendLocatorFix, aa as formatBytes } from '../nitro/nitro.mjs';
11
- import { _ as __nuxt_component_11 } from './SectionCard-CN-v0FZ_.mjs';
12
- import { _ as _sfc_main$o } from './Modal-pSDlXzT3.mjs';
13
- import { u as useFetch } from './fetch-B4FwBOzu.mjs';
14
- import { _ as _sfc_main$l } from './Tabs-BkSOnbaB.mjs';
15
- import { _ as _sfc_main$m } from './Tooltip-Dv4htNP6.mjs';
16
- import { _ as __nuxt_component_5 } from './CodeBlock-BgE-NSmE.mjs';
17
- import { _ as __nuxt_component_1$3 } from './OpenInIdeLink-CQWKKChd.mjs';
18
- import { _ as _sfc_main$j } from './Card-BQP_oZkQ.mjs';
19
- import { b as useFoldedState } from './useAiStatus-CxjMmDDY.mjs';
6
+ import { u as useDesktopDownload } from './useDesktopDownload-BmR6ouz2.mjs';
7
+ import { u as useFetch, a as useCopy } from './fetch-BQg_fhX0.mjs';
8
+ import { f as formatRelativeTime, m as getTraceViewerUrl, n as fileApiUrl, o as parsePatchLines, q as patchLineClass, e as errorMessage, u as getFileApiPath } from './index-BOK1aJk9.mjs';
9
+ import { _ as _sfc_main$l } from './Alert-C4xq8lao.mjs';
10
+ import { dN as recommendLocatorFix, aa as formatBytes } from '../nitro/nitro.mjs';
11
+ import { _ as __nuxt_component_11 } from './SectionCard-BW5Lynrr.mjs';
12
+ import { _ as _sfc_main$q } from './Modal-pSDlXzT3.mjs';
13
+ import { _ as _sfc_main$m } from './Tabs-BkSOnbaB.mjs';
14
+ import { _ as _sfc_main$n } from './Tooltip-Dv4htNP6.mjs';
15
+ import { _ as __nuxt_component_5 } from './CodeBlock-DGhKVFad.mjs';
16
+ import { _ as __nuxt_component_1$3 } from './OpenInIdeLink-B9wvQkhy.mjs';
17
+ import { _ as _sfc_main$k } from './Card-BQP_oZkQ.mjs';
18
+ import { u as useFoldedState } from './DiagnosisResult-Br3qBLXe.mjs';
20
19
 
21
20
  const CAPTURED_ATTRIBUTES = [
22
21
  "id",
@@ -34,7 +33,7 @@ const CAPTURED_ATTRIBUTES = [
34
33
  "multiple"
35
34
  ];
36
35
 
37
- const _sfc_main$i = /* @__PURE__ */ defineComponent({
36
+ const _sfc_main$j = /* @__PURE__ */ defineComponent({
38
37
  __name: "ExportMenu",
39
38
  __ssrInlineRender: true,
40
39
  props: {
@@ -83,7 +82,7 @@ const _sfc_main$i = /* @__PURE__ */ defineComponent({
83
82
  const _component_UPopover = _sfc_main$8$1;
84
83
  const _component_UButton = _sfc_main$k$1;
85
84
  const _component_HelpHint = __nuxt_component_2$1;
86
- const _component_USeparator = _sfc_main$n;
85
+ const _component_USeparator = _sfc_main$o;
87
86
  _push(ssrRenderComponent(_component_UPopover, mergeProps({
88
87
  open: unref(open),
89
88
  "onUpdate:open": ($event) => isRef(open) ? open.value = $event : null
@@ -369,14 +368,14 @@ const _sfc_main$i = /* @__PURE__ */ defineComponent({
369
368
  };
370
369
  }
371
370
  });
372
- const _sfc_setup$i = _sfc_main$i.setup;
373
- _sfc_main$i.setup = (props, ctx) => {
371
+ const _sfc_setup$j = _sfc_main$j.setup;
372
+ _sfc_main$j.setup = (props, ctx) => {
374
373
  const ssrContext = useSSRContext();
375
374
  (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/shared/ExportMenu.vue");
376
- return _sfc_setup$i ? _sfc_setup$i(props, ctx) : void 0;
375
+ return _sfc_setup$j ? _sfc_setup$j(props, ctx) : void 0;
377
376
  };
378
- const __nuxt_component_6$1 = Object.assign(_sfc_main$i, { __name: "ExportMenu" });
379
- const _sfc_main$h = /* @__PURE__ */ defineComponent({
377
+ const __nuxt_component_6 = Object.assign(_sfc_main$j, { __name: "ExportMenu" });
378
+ const _sfc_main$i = /* @__PURE__ */ defineComponent({
380
379
  __name: "CollapsibleSectionCard",
381
380
  __ssrInlineRender: true,
382
381
  props: {
@@ -399,7 +398,7 @@ const _sfc_main$h = /* @__PURE__ */ defineComponent({
399
398
  }
400
399
  __expose({ setFolded, reveal });
401
400
  return (_ctx, _push, _parent, _attrs) => {
402
- const _component_UCard = _sfc_main$j;
401
+ const _component_UCard = _sfc_main$k;
403
402
  const _component_UIcon = _sfc_main$p;
404
403
  const _component_HelpHint = __nuxt_component_2$1;
405
404
  _push(`<div${ssrRenderAttrs(mergeProps({
@@ -548,13 +547,65 @@ const _sfc_main$h = /* @__PURE__ */ defineComponent({
548
547
  };
549
548
  }
550
549
  });
550
+ const _sfc_setup$i = _sfc_main$i.setup;
551
+ _sfc_main$i.setup = (props, ctx) => {
552
+ const ssrContext = useSSRContext();
553
+ (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/shared/CollapsibleSectionCard.vue");
554
+ return _sfc_setup$i ? _sfc_setup$i(props, ctx) : void 0;
555
+ };
556
+ const __nuxt_component_25 = Object.assign(_sfc_main$i, { __name: "CollapsibleSectionCard" });
557
+ const TOKEN_RE = /('(?:\\.|[^'])*'|"(?:\\.|[^"])*")|([A-Za-z_$][\w$]*)(?=\s*\()|([A-Za-z_$][\w$]*)(?=\s*:)|(true|false|null|\d+)|([{}(),.])/g;
558
+ function tokenizeLocator(expr) {
559
+ const tokens = [];
560
+ const re = new RegExp(TOKEN_RE.source, "g");
561
+ let last = 0;
562
+ let m;
563
+ while ((m = re.exec(expr)) !== null) {
564
+ if (m.index > last) tokens.push({ kind: "plain", text: expr.slice(last, m.index) });
565
+ const kind = m[1] ? "string" : m[2] ? "method" : m[3] ? "option" : m[4] ? "literal" : "punctuation";
566
+ tokens.push({ kind, text: m[0] });
567
+ last = re.lastIndex;
568
+ }
569
+ if (last < expr.length) tokens.push({ kind: "plain", text: expr.slice(last) });
570
+ return tokens;
571
+ }
572
+ const _sfc_main$h = /* @__PURE__ */ defineComponent({
573
+ __name: "LocatorCode",
574
+ __ssrInlineRender: true,
575
+ props: {
576
+ locator: {},
577
+ truncate: { type: Boolean, default: false }
578
+ },
579
+ setup(__props) {
580
+ const props = __props;
581
+ const TOKEN_CLASS = {
582
+ method: "text-violet-700 dark:text-violet-300",
583
+ string: "text-green-700 dark:text-green-300",
584
+ option: "text-blue-700 dark:text-blue-300",
585
+ literal: "text-amber-700 dark:text-amber-300",
586
+ punctuation: "text-gray-500 dark:text-gray-400",
587
+ plain: ""
588
+ };
589
+ const tokens = computed(() => tokenizeLocator(props.locator));
590
+ return (_ctx, _push, _parent, _attrs) => {
591
+ _push(`<code${ssrRenderAttrs(mergeProps({
592
+ class: ["font-mono", __props.truncate ? "block truncate" : "break-words"],
593
+ title: __props.locator
594
+ }, _attrs))}><!--[-->`);
595
+ ssrRenderList(unref(tokens), (token, i) => {
596
+ _push(`<span class="${ssrRenderClass(TOKEN_CLASS[token.kind])}">${ssrInterpolate(token.text)}</span>`);
597
+ });
598
+ _push(`<!--]--></code>`);
599
+ };
600
+ }
601
+ });
551
602
  const _sfc_setup$h = _sfc_main$h.setup;
552
603
  _sfc_main$h.setup = (props, ctx) => {
553
604
  const ssrContext = useSSRContext();
554
- (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/shared/CollapsibleSectionCard.vue");
605
+ (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/shared/LocatorCode.vue");
555
606
  return _sfc_setup$h ? _sfc_setup$h(props, ctx) : void 0;
556
607
  };
557
- const __nuxt_component_25 = Object.assign(_sfc_main$h, { __name: "CollapsibleSectionCard" });
608
+ const __nuxt_component_0 = Object.assign(_sfc_main$h, { __name: "LocatorCode" });
558
609
  const _sfc_main$g = /* @__PURE__ */ defineComponent({
559
610
  __name: "DiffPatch",
560
611
  __ssrInlineRender: true,
@@ -617,6 +668,7 @@ const _sfc_main$f = /* @__PURE__ */ defineComponent({
617
668
  const displayNote = computed(() => props.note ?? defaultNote(props.alt));
618
669
  return (_ctx, _push, _parent, _attrs) => {
619
670
  const _component_UBadge = _sfc_main$7$1;
671
+ const _component_LocatorCode = __nuxt_component_0;
620
672
  const _component_UIcon = _sfc_main$p;
621
673
  const _component_UButton = _sfc_main$k$1;
622
674
  _push(`<div${ssrRenderAttrs(mergeProps({
@@ -647,7 +699,12 @@ const _sfc_main$f = /* @__PURE__ */ defineComponent({
647
699
  }),
648
700
  _: 1
649
701
  }, _parent));
650
- _push(`<div class="flex-1 min-w-0"><code class="text-xs font-mono block truncate"${ssrRenderAttr("title", __props.alt.locator)}>${ssrInterpolate(__props.alt.locator)}</code>`);
702
+ _push(`<div class="flex-1 min-w-0">`);
703
+ _push(ssrRenderComponent(_component_LocatorCode, {
704
+ locator: __props.alt.locator,
705
+ truncate: "",
706
+ class: "text-xs"
707
+ }, null, _parent));
651
708
  if (unref(displayNote)) {
652
709
  _push(`<p class="text-[11px] leading-4 text-gray-500 truncate">${ssrInterpolate(unref(displayNote))}</p>`);
653
710
  } else {
@@ -691,150 +748,444 @@ _sfc_main$f.setup = (props, ctx) => {
691
748
  (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/shared/LocatorAlternativeRow.vue");
692
749
  return _sfc_setup$f ? _sfc_setup$f(props, ctx) : void 0;
693
750
  };
694
- const __nuxt_component_6 = Object.assign(_sfc_main$f, { __name: "LocatorAlternativeRow" });
695
- function installSnapshotPicker(config) {
696
- if ((void 0).__piwiPickerInstalled) return;
697
- (void 0).__piwiPickerInstalled = true;
698
- var doc = void 0;
699
- var g = void 0;
700
- var Z = 2147483600;
701
- var PROBED_ATTRS = config.probedAttrs;
702
- var highlight = doc.createElement("div");
751
+ const __nuxt_component_7 = Object.assign(_sfc_main$f, { __name: "LocatorAlternativeRow" });
752
+ function probeElementAttrs(el, arg) {
753
+ const { keep, tagRoles, inputRoles, roleSources, includeStructural, includeLabelText } = arg;
754
+ const attrMap = {};
755
+ for (const key of keep) {
756
+ const v = el.getAttribute(key) ?? el[key];
757
+ attrMap[key] = typeof v === "string" ? v.slice(0, 200) : v ? String(v).slice(0, 200) : null;
758
+ }
759
+ const r = el.getBoundingClientRect();
760
+ const selectorCounts = {};
761
+ try {
762
+ const doc = el.ownerDocument;
763
+ const cssEsc = (s) => doc.defaultView.CSS.escape(s);
764
+ const count = (sel) => {
765
+ try {
766
+ return doc.querySelectorAll(sel).length;
767
+ } catch {
768
+ return void 0;
769
+ }
770
+ };
771
+ if (attrMap["data-testid"]) {
772
+ selectorCounts.testId = count(`[data-testid=${JSON.stringify(attrMap["data-testid"])}]`);
773
+ }
774
+ if (attrMap["id"]) selectorCounts.id = count(`#${cssEsc(attrMap["id"])}`);
775
+ if (attrMap["name"]) selectorCounts.name = count(`[name=${JSON.stringify(attrMap["name"])}]`);
776
+ if (attrMap["placeholder"]) {
777
+ selectorCounts.placeholder = count(`[placeholder=${JSON.stringify(attrMap["placeholder"])}]`);
778
+ }
779
+ if (attrMap["alt"]) selectorCounts.alt = count(`[alt=${JSON.stringify(attrMap["alt"])}]`);
780
+ if (attrMap["title"]) selectorCounts.title = count(`[title=${JSON.stringify(attrMap["title"])}]`);
781
+ const classList = (attrMap["class"] || "").split(/\s+/).filter((c) => c.length > 1).slice(0, 10);
782
+ if (classList.length > 0) {
783
+ const classCounts = {};
784
+ for (const cls of classList) {
785
+ const n = count(`.${cssEsc(cls)}`);
786
+ if (n !== void 0) classCounts[cls] = n;
787
+ }
788
+ selectorCounts.classes = classCounts;
789
+ }
790
+ } catch {
791
+ }
792
+ let rolePosition = null;
793
+ const ancestors = [];
794
+ if (includeStructural && tagRoles && inputRoles && roleSources) {
795
+ try {
796
+ const doc = el.ownerDocument;
797
+ const cssEsc = (s) => doc.defaultView.CSS.escape(s);
798
+ const count = (sel) => {
799
+ try {
800
+ return doc.querySelectorAll(sel).length;
801
+ } catch {
802
+ return void 0;
803
+ }
804
+ };
805
+ const roleMemo = /* @__PURE__ */ new Map();
806
+ const textMemo = /* @__PURE__ */ new Map();
807
+ const roleOf = (n) => {
808
+ const cached = roleMemo.get(n);
809
+ if (cached !== void 0) return cached;
810
+ let role;
811
+ const explicit = n.getAttribute("role");
812
+ if (explicit) {
813
+ role = explicit;
814
+ } else {
815
+ const tag = (n.tagName || "").toLowerCase();
816
+ if (tag === "input") role = inputRoles[(n.getAttribute("type") || "text").toLowerCase()] ?? "textbox";
817
+ else if (tag === "select") role = n.getAttribute("multiple") != null ? "listbox" : "combobox";
818
+ else if (tag === "a") role = n.getAttribute("href") != null ? "link" : null;
819
+ else role = tagRoles[tag] ?? null;
820
+ }
821
+ roleMemo.set(n, role);
822
+ return role;
823
+ };
824
+ const levelOf = (n) => {
825
+ const m = /^h([1-6])$/.exec((n.tagName || "").toLowerCase());
826
+ if (m) return Number(m[1]);
827
+ const al = n.getAttribute("aria-level");
828
+ return al && /^\d+$/.test(al) ? Number(al) : null;
829
+ };
830
+ const targetRole = roleOf(el);
831
+ const targetLevel = targetRole === "heading" ? levelOf(el) : null;
832
+ const nameOf = (n) => {
833
+ const al = n.getAttribute("aria-label");
834
+ if (al) return al;
835
+ const txt = (n.textContent || "").replace(/\s+/g, " ").trim();
836
+ if (txt) return txt;
837
+ return n.getAttribute("title") || n.getAttribute("placeholder") || null;
838
+ };
839
+ const targetName = nameOf(el);
840
+ const targetText = (el.textContent || "").replace(/\s+/g, " ").trim();
841
+ const textNeedle = targetText ? targetText.toLowerCase() : null;
842
+ const normText = (n) => {
843
+ const cached = textMemo.get(n);
844
+ if (cached !== void 0) return cached;
845
+ const text = (n.textContent || "").replace(/\s+/g, " ").trim().toLowerCase();
846
+ textMemo.set(n, text);
847
+ return text;
848
+ };
849
+ const TEXT_COUNT_CAP = 2;
850
+ const countTextOwners = (root, cap) => {
851
+ if (!textNeedle) return -1;
852
+ const els = root.querySelectorAll("*");
853
+ if (els.length > cap) return -1;
854
+ let total = 0;
855
+ for (let i = 0; i < els.length; i++) {
856
+ const n = els[i];
857
+ if (normText(n).indexOf(textNeedle) === -1) continue;
858
+ let deeper = false;
859
+ const kids = n.children;
860
+ for (let j = 0; j < kids.length; j++) {
861
+ if (normText(kids[j]).indexOf(textNeedle) !== -1) {
862
+ deeper = true;
863
+ break;
864
+ }
865
+ }
866
+ if (!deeper) total++;
867
+ if (total >= TEXT_COUNT_CAP) return total;
868
+ }
869
+ return total;
870
+ };
871
+ const nodes = doc.querySelectorAll(roleSources);
872
+ const nodesUsable = nodes.length <= 4e3;
873
+ const rolesUsable = !!targetRole && nodesUsable;
874
+ if (rolesUsable) {
875
+ let roleCountAll = 0;
876
+ let index = -1;
877
+ let levelCount = 0;
878
+ let roleNameCount = 0;
879
+ for (let i = 0; i < nodes.length; i++) {
880
+ const n = nodes[i];
881
+ if (roleOf(n) !== targetRole) continue;
882
+ if (n === el) index = roleCountAll;
883
+ roleCountAll++;
884
+ if (targetLevel != null && levelOf(n) === targetLevel) levelCount++;
885
+ if (targetName != null && nameOf(n) === targetName) roleNameCount++;
886
+ }
887
+ if (targetName != null) selectorCounts.roleName = roleNameCount;
888
+ if (index !== -1) {
889
+ rolePosition = {
890
+ role: targetRole,
891
+ count: roleCountAll,
892
+ index,
893
+ ...targetLevel != null ? { levelCount } : {}
894
+ };
895
+ }
896
+ }
897
+ if (textNeedle) {
898
+ const textCount = countTextOwners(doc.body || doc.documentElement, 4e3);
899
+ if (textCount >= 0) selectorCounts.text = textCount;
900
+ }
901
+ if (rolesUsable || textNeedle) {
902
+ const CONTAINER_TAGS = ["form", "nav", "main", "article", "section", "dialog", "table", "li", "tr"];
903
+ const NOISY_DATA_ATTR = /^data-(v-[0-9a-f]+|reactid|react-checksum|svelte-\w+|ng-\w+|ember\w*)$/i;
904
+ const POSITIONAL_DATA_ATTR = /^data-(index|idx|i|key|row|rownum|col|column|position|pos|order|sort|offset|page)$/i;
905
+ const TEST_DATA_ATTRS = ["data-test", "data-test-id", "data-qa", "data-qa-id", "data-cy", "data-e2e"];
906
+ const usableDataAttr = (name, value) => {
907
+ if (!name || name.slice(0, 5) !== "data-" || name === "data-testid") return false;
908
+ if (NOISY_DATA_ATTR.test(name) || POSITIONAL_DATA_ATTR.test(name)) return false;
909
+ return !!value && value.length <= 120;
910
+ };
911
+ const stableDataAttr = (n) => {
912
+ const attrs = n.attributes;
913
+ if (!attrs) return null;
914
+ let fallback = null;
915
+ for (let i = 0; i < attrs.length; i++) {
916
+ const name = attrs[i].name;
917
+ const value = attrs[i].value;
918
+ if (!usableDataAttr(name, value)) continue;
919
+ if (TEST_DATA_ATTRS.indexOf(name.toLowerCase()) !== -1) return { name, value };
920
+ if (!fallback) fallback = { name, value };
921
+ }
922
+ return fallback;
923
+ };
924
+ const docRoleCount = (role) => {
925
+ let c = 0;
926
+ for (let i = 0; i < nodes.length; i++) if (roleOf(nodes[i]) === role) c++;
927
+ return c;
928
+ };
929
+ const rawText = (n) => (n.textContent || "").replace(/\s+/g, " ").trim();
930
+ const namesRatherThanReports = (t) => {
931
+ const letters = t.replace(/[^A-Za-z]/g, "").length;
932
+ if (letters < 2) return false;
933
+ const digits = t.replace(/[^0-9]/g, "").length;
934
+ return digits <= letters;
935
+ };
936
+ const usableDiscriminator = (t) => !!t && t.length <= 60 && t !== targetText && namesRatherThanReports(t);
937
+ const discriminatingText = (anc) => {
938
+ const heading = anc.querySelector('h1,h2,h3,h4,h5,h6,[role="heading"]');
939
+ if (heading) {
940
+ const t = rawText(heading);
941
+ if (usableDiscriminator(t)) return t;
942
+ }
943
+ const els = anc.querySelectorAll("*");
944
+ if (els.length > 200) return null;
945
+ for (let i = 0; i < els.length; i++) {
946
+ const n = els[i];
947
+ if (n === el || n.children.length > 0) continue;
948
+ const t = rawText(n);
949
+ if (!usableDiscriminator(t)) continue;
950
+ return t;
951
+ }
952
+ return null;
953
+ };
954
+ const filterMatchCount = (role, text) => {
955
+ const needle = text.toLowerCase();
956
+ let c = 0;
957
+ for (let i = 0; i < nodes.length; i++) {
958
+ if (roleOf(nodes[i]) !== role) continue;
959
+ if (normText(nodes[i]).indexOf(needle) !== -1) c++;
960
+ }
961
+ return c;
962
+ };
963
+ let node = el.parentElement;
964
+ let depth = 0;
965
+ while (node && depth < 12 && ancestors.length < 4) {
966
+ depth++;
967
+ const tag = (node.tagName || "").toLowerCase();
968
+ if (tag === "body" || tag === "html") break;
969
+ const testId = node.getAttribute("data-testid");
970
+ const id = node.getAttribute("id");
971
+ const explicitRole = node.getAttribute("role");
972
+ const ariaLabel = node.getAttribute("aria-label");
973
+ const anchorRole = explicitRole || (CONTAINER_TAGS.includes(tag) ? tagRoles[tag] : null) || null;
974
+ const dataAttr = stableDataAttr(node);
975
+ if (testId || id || anchorRole || ariaLabel || dataAttr) {
976
+ let scopedRoleCount = -1;
977
+ if (rolesUsable) {
978
+ const scoped = node.querySelectorAll(roleSources);
979
+ if (scoped.length <= 2e3) {
980
+ scopedRoleCount = 0;
981
+ for (let i = 0; i < scoped.length; i++) {
982
+ const n = scoped[i];
983
+ if (roleOf(n) !== targetRole) continue;
984
+ if (targetLevel != null && levelOf(n) !== targetLevel) continue;
985
+ scopedRoleCount++;
986
+ }
987
+ }
988
+ }
989
+ const scopedTextCount = countTextOwners(node, 2e3);
990
+ let filterText = null;
991
+ try {
992
+ if (anchorRole && nodesUsable) filterText = discriminatingText(node);
993
+ } catch {
994
+ filterText = null;
995
+ }
996
+ ancestors.push({
997
+ tag,
998
+ depth,
999
+ testId: testId || null,
1000
+ id: id || null,
1001
+ role: explicitRole || null,
1002
+ ariaLabel: ariaLabel || null,
1003
+ ...scopedRoleCount >= 0 ? { scopedRoleCount } : {},
1004
+ ...scopedTextCount >= 0 ? { scopedTextCount } : {},
1005
+ ...testId ? { testIdCount: count(`[data-testid=${JSON.stringify(testId)}]`) } : {},
1006
+ ...id ? { idCount: count(`#${cssEsc(id)}`) } : {},
1007
+ ...anchorRole && nodesUsable ? { roleCount: docRoleCount(anchorRole) } : {},
1008
+ ...filterText ? { filterText, filterRoleCount: filterMatchCount(anchorRole, filterText) } : {},
1009
+ ...dataAttr ? { dataAttr, dataAttrCount: count(`[${dataAttr.name}=${JSON.stringify(dataAttr.value)}]`) } : {}
1010
+ });
1011
+ }
1012
+ node = node.parentElement;
1013
+ }
1014
+ }
1015
+ } catch {
1016
+ }
1017
+ }
1018
+ const hasLabel = !!(el.labels && el.labels.length > 0);
1019
+ const labelText = includeLabelText ? hasLabel ? (el.labels[0].textContent || "").replace(/\s+/g, " ").trim().slice(0, 120) || null : null : void 0;
1020
+ return {
1021
+ tagName: el.tagName?.toLowerCase?.() ?? "unknown",
1022
+ attributes: attrMap,
1023
+ // Collapse whitespace so multi-line text can't produce a getByText
1024
+ // suggestion with literal newlines in it.
1025
+ textContent: (el.textContent || "").replace(/\s+/g, " ").trim().slice(0, 80),
1026
+ center: {
1027
+ x: Math.round(r.x + r.width / 2),
1028
+ y: Math.round(r.y + r.height / 2)
1029
+ },
1030
+ hasLabel,
1031
+ ...includeLabelText ? { labelText } : {},
1032
+ selectorCounts,
1033
+ ...includeStructural ? { rolePosition, ancestors } : {}
1034
+ };
1035
+ }
1036
+ function installPickerOverlay(arg) {
1037
+ const g = globalThis;
1038
+ const doc = g.document;
1039
+ if (!doc || !doc.body) {
1040
+ if (arg.transport === "postMessage") g.parent.postMessage({ type: "pickerClosed" }, "*");
1041
+ else g.__piwiPickState = "skipped";
1042
+ return;
1043
+ }
1044
+ const Z = 2147483600;
1045
+ const highlight = doc.createElement("div");
703
1046
  highlight.id = "__piwi_picker_highlight";
704
- highlight.style.cssText = "position:fixed;pointer-events:none;z-index:" + Z + ";display:none;box-sizing:border-box;border:2px solid #7c3aed;background:rgba(124,58,237,.12);border-radius:3px;";
705
- doc.body.appendChild(highlight);
706
- var banner = doc.createElement("div");
1047
+ highlight.style.cssText = `position:fixed;pointer-events:none;z-index:${Z};display:none;box-sizing:border-box;border:2px solid #a855f7;background:rgba(168,85,247,.14);border-radius:4px;box-shadow:0 0 0 1px rgba(255,255,255,.9),0 0 0 3px rgba(59,7,100,.55),inset 0 0 0 1px rgba(255,255,255,.5);`;
1048
+ const banner = doc.createElement("div");
707
1049
  banner.id = "__piwi_picker_banner";
708
- banner.style.cssText = "position:fixed;top:12px;left:50%;transform:translateX(-50%);z-index:" + (Z + 2) + ";background:#111827;color:#f9fafb;font:13px/1.5 system-ui,sans-serif;padding:10px 16px;border-radius:8px;box-shadow:0 4px 24px rgba(0,0,0,.4);max-width:80vw;";
709
- banner.innerHTML = '<div>Click an element to generate locators</div><div style="color:#9ca3af;margin-top:3px;font-size:11px">↑ parent · ↓ child · Esc skip</div>';
1050
+ banner.style.cssText = `position:fixed;top:12px;left:50%;transform:translateX(-50%);z-index:${Z + 2};background:#111827;color:#f9fafb;font:13px/1.5 system-ui,sans-serif;border:1px solid #312e81;padding:10px 16px;border-radius:10px;box-shadow:0 4px 24px rgba(0,0,0,.5);max-width:min(680px,86vw);`;
1051
+ const hlTokens = (expr) => {
1052
+ const escHtml = (s) => s.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
1053
+ const re = /('(?:\\.|[^'])*'|"(?:\\.|[^"])*")|([A-Za-z_$][\w$]*)(?=\s*\()|([A-Za-z_$][\w$]*)(?=\s*:)|(true|false|null|\d+)|([{}(),.])/g;
1054
+ let html = "";
1055
+ let last = 0;
1056
+ let m;
1057
+ while ((m = re.exec(expr)) !== null) {
1058
+ if (m.index > last) html += escHtml(expr.slice(last, m.index));
1059
+ const color = m[1] ? "#86efac" : m[2] ? "#d8b4fe" : m[3] ? "#93c5fd" : m[4] ? "#fcd34d" : "#9ca3af";
1060
+ html += `<span style="color:${color}">${escHtml(m[0])}</span>`;
1061
+ last = re.lastIndex;
1062
+ }
1063
+ if (last < expr.length) html += escHtml(expr.slice(last));
1064
+ return html;
1065
+ };
1066
+ const MONO = "ui-monospace,SFMono-Regular,Menlo,Consolas,monospace";
1067
+ const hlLocator = (expr) => `<code style="font-family:${MONO}">${hlTokens(expr)}</code>`;
1068
+ const head = doc.createElement("div");
1069
+ head.innerHTML = arg.transport === "postMessage" ? "Click an element to generate locators" : arg.failing ? `Piwi locator picker — click the element that should replace ${hlLocator(arg.failing)}` : "Piwi inspector — click any element to generate locators for it";
1070
+ const locatorLine = doc.createElement("div");
1071
+ locatorLine.id = "__piwi_picker_locator";
1072
+ locatorLine.style.cssText = `display:none;margin-top:7px;padding:5px 9px;border-radius:7px;background:#0b1120;border:1px solid #4c1d95;font:13.5px/1.55 ${MONO};word-break:break-word;overflow-wrap:anywhere;`;
1073
+ const foot = doc.createElement("div");
1074
+ foot.id = "__piwi_picker_foot";
1075
+ foot.style.cssText = "color:#9ca3af;margin-top:6px;font-size:12px;";
1076
+ foot.textContent = "↑ parent · ↓ child · Esc skip";
1077
+ banner.appendChild(head);
1078
+ banner.appendChild(locatorLine);
1079
+ banner.appendChild(foot);
1080
+ const label = doc.createElement("div");
1081
+ label.id = "__piwi_picker_label";
1082
+ label.style.cssText = `position:fixed;pointer-events:none;z-index:${Z + 1};display:none;box-sizing:border-box;max-width:min(620px,92vw);background:#0b1120;color:#f9fafb;border:1px solid #7c3aed;border-radius:7px;padding:4px 8px;font:12.5px/1.45 ${MONO};white-space:nowrap;overflow:hidden;text-overflow:ellipsis;box-shadow:0 4px 18px rgba(0,0,0,.5);`;
1083
+ doc.body.appendChild(highlight);
1084
+ doc.body.appendChild(label);
710
1085
  doc.body.appendChild(banner);
711
- g.parent.postMessage({ type: "pickerReady" }, "*");
712
- function describe(el) {
713
- var tag = (el.tagName || "?").toLowerCase();
714
- var testId = el.getAttribute && el.getAttribute("data-testid");
715
- if (testId) return "getByTestId('" + testId + "')";
1086
+ const escJs = (s) => s.replace(/\\/g, "\\\\").replace(/'/g, "\\'");
1087
+ const describe = (el) => {
1088
+ const tag = (el.tagName || "?").toLowerCase();
1089
+ const testId = el.getAttribute && el.getAttribute("data-testid");
1090
+ if (testId) return `getByTestId('${escJs(testId)}')`;
716
1091
  if (el.labels && el.labels.length > 0) {
717
- var labelText = (el.labels[0].textContent || "").replace(/\s+/g, " ").trim().slice(0, 80);
718
- if (labelText) return "getByLabel('" + labelText + "')";
1092
+ const labelText = (el.labels[0].textContent || "").replace(/\s+/g, " ").trim().slice(0, 80);
1093
+ if (labelText) return `getByLabel('${escJs(labelText)}')`;
719
1094
  }
720
- var ariaLabel = el.getAttribute && el.getAttribute("aria-label");
721
- if (ariaLabel) return "getByLabel('" + ariaLabel + "')";
722
- var placeholder = el.getAttribute && el.getAttribute("placeholder");
723
- if (placeholder) return "getByPlaceholder('" + placeholder + "')";
724
- var alt = el.getAttribute && el.getAttribute("alt");
725
- if (alt) return "getByAltText('" + alt + "')";
726
- var titleAttr = el.getAttribute && el.getAttribute("title");
727
- if (titleAttr) return "getByTitle('" + titleAttr + "')";
728
- if (el.id) return "locator('#" + el.id + "')";
729
- var cls = (el.getAttribute && el.getAttribute("class") || "").split(/\s+/).find(function(c) {
730
- return c.length > 1;
731
- });
732
- if (cls) return "locator('." + cls + "')";
733
- return tag;
734
- }
735
- function buildChain(raw) {
736
- var chain2 = [];
737
- var node = raw;
1095
+ const ariaLabel = el.getAttribute && el.getAttribute("aria-label");
1096
+ if (ariaLabel) return `getByLabel('${escJs(ariaLabel)}')`;
1097
+ const placeholder = el.getAttribute && el.getAttribute("placeholder");
1098
+ if (placeholder) return `getByPlaceholder('${escJs(placeholder)}')`;
1099
+ const alt = el.getAttribute && el.getAttribute("alt");
1100
+ if (alt) return `getByAltText('${escJs(alt)}')`;
1101
+ const titleAttr = el.getAttribute && el.getAttribute("title");
1102
+ if (titleAttr) return `getByTitle('${escJs(titleAttr)}')`;
1103
+ if (el.id) return `locator('#${escJs(el.id)}')`;
1104
+ const cls = (el.getAttribute && el.getAttribute("class") || "").split(/\s+/).find((c) => c.length > 1);
1105
+ return cls ? `locator('.${escJs(cls)}')` : tag;
1106
+ };
1107
+ const buildChain = (raw) => {
1108
+ const chain2 = [];
1109
+ let node = raw;
738
1110
  while (node && chain2.length < 15) {
739
- var t = (node.tagName || "").toLowerCase();
740
- if (t === "body" || t === "html") break;
1111
+ const tag = (node.tagName || "").toLowerCase();
1112
+ if (tag === "body" || tag === "html") break;
741
1113
  chain2.push(node);
742
1114
  node = node.parentElement;
743
1115
  }
744
1116
  return chain2.length ? chain2 : [raw];
745
- }
746
- var ACTIONABLE = ["button", "a", "input", "select", "textarea", "summary", "option"];
747
- function snapIndex(chain2) {
748
- for (var i = 0; i < Math.min(chain2.length, 4); i++) {
749
- var el = chain2[i];
750
- var t = (el.tagName || "").toLowerCase();
751
- if (ACTIONABLE.indexOf(t) !== -1) return i;
1117
+ };
1118
+ const ACTIONABLE_TAGS = ["button", "a", "input", "select", "textarea", "summary", "option"];
1119
+ const snapIndex = (chain2) => {
1120
+ for (let i = 0; i < Math.min(chain2.length, 4); i++) {
1121
+ const el = chain2[i];
1122
+ const tag = (el.tagName || "").toLowerCase();
1123
+ if (ACTIONABLE_TAGS.includes(tag)) return i;
752
1124
  if (el.getAttribute && (el.getAttribute("role") || el.getAttribute("data-testid"))) return i;
753
1125
  }
754
1126
  return 0;
755
- }
756
- var chain = [];
757
- var idx = 0;
758
- var lastRaw = null;
759
- function current() {
760
- return chain[idx] || null;
761
- }
762
- function refresh() {
763
- var el = current();
1127
+ };
1128
+ const locatorOf = (el) => {
1129
+ const hook = g.__piwiDescribeElement;
1130
+ if (typeof hook === "function") {
1131
+ try {
1132
+ const derived = hook(el);
1133
+ if (typeof derived === "string" && derived) return derived;
1134
+ } catch {
1135
+ }
1136
+ }
1137
+ return describe(el);
1138
+ };
1139
+ let chain = [];
1140
+ let idx = 0;
1141
+ let lastRaw = null;
1142
+ let labeled = null;
1143
+ const placeLabel = (r) => {
1144
+ label.style.display = "block";
1145
+ const lr = label.getBoundingClientRect();
1146
+ const vw = g.innerWidth || doc.documentElement.clientWidth || 0;
1147
+ const vh = g.innerHeight || doc.documentElement.clientHeight || 0;
1148
+ let top = r.top - lr.height - 6;
1149
+ if (top < 4) top = r.bottom + 6;
1150
+ if (top + lr.height > vh - 4) top = Math.max(4, vh - lr.height - 4);
1151
+ let left = r.left;
1152
+ if (left + lr.width > vw - 6) left = vw - lr.width - 6;
1153
+ if (left < 6) left = 6;
1154
+ label.style.left = left + "px";
1155
+ label.style.top = top + "px";
1156
+ };
1157
+ const current = () => chain[idx] ?? null;
1158
+ const refresh = () => {
1159
+ const el = current();
764
1160
  if (!el) {
765
1161
  highlight.style.display = "none";
1162
+ label.style.display = "none";
766
1163
  return;
767
1164
  }
768
- var r = el.getBoundingClientRect();
1165
+ const r = el.getBoundingClientRect();
769
1166
  highlight.style.display = "block";
770
1167
  highlight.style.left = r.left + "px";
771
1168
  highlight.style.top = r.top + "px";
772
1169
  highlight.style.width = r.width + "px";
773
1170
  highlight.style.height = r.height + "px";
774
- var foot2 = doc.getElementById("__piwi_picker_foot");
775
- if (foot2) foot2.textContent = describe(el) + " — click to pick · ↑ parent · ↓ child · Esc skip";
776
- }
777
- var foot = banner.querySelector("[style*=margin]");
778
- if (foot) foot.id = "__piwi_picker_foot";
779
- function probe(el) {
780
- var attrs = {};
781
- for (var i = 0; i < PROBED_ATTRS.length; i++) {
782
- var k = PROBED_ATTRS[i];
783
- var v = el.getAttribute(k) || el[k];
784
- attrs[k] = typeof v === "string" ? v.slice(0, 200) : v ? String(v).slice(0, 200) : null;
785
- }
786
- var r = el.getBoundingClientRect();
787
- var counts = {};
788
- try {
789
- var cssEsc = function(s) {
790
- return g.CSS.escape(s);
791
- };
792
- var countSel = function(sel) {
793
- try {
794
- return doc.querySelectorAll(sel).length;
795
- } catch (err) {
796
- return void 0;
797
- }
798
- };
799
- if (attrs["data-testid"]) counts.testId = countSel("[data-testid=" + JSON.stringify(attrs["data-testid"]) + "]");
800
- if (attrs.id) counts.id = countSel("#" + cssEsc(attrs.id));
801
- if (attrs.name) counts.name = countSel("[name=" + JSON.stringify(attrs.name) + "]");
802
- var classList = (attrs["class"] || "").split(/\s+/).filter(function(c) {
803
- return c.length > 1;
804
- }).slice(0, 10);
805
- if (classList.length > 0) {
806
- var classCounts = {};
807
- for (var j = 0; j < classList.length; j++) {
808
- var n = countSel("." + cssEsc(classList[j]));
809
- if (n !== void 0) classCounts[classList[j]] = n;
810
- }
811
- counts.classes = classCounts;
812
- }
813
- } catch (err) {
1171
+ if (el !== labeled) {
1172
+ labeled = el;
1173
+ const tag = (el.tagName || "?").toLowerCase();
1174
+ const locatorHtml = hlTokens(locatorOf(el));
1175
+ label.innerHTML = `<span style="color:#c4b5fd">&lt;${tag}&gt;</span> ${locatorHtml}`;
1176
+ locatorLine.innerHTML = locatorHtml;
1177
+ locatorLine.style.display = "block";
814
1178
  }
815
- var labelText = null;
816
- if (el.labels && el.labels.length > 0) {
817
- labelText = (el.labels[0].textContent || "").replace(/\s+/g, " ").trim().slice(0, 120) || null;
818
- }
819
- return {
820
- tagName: (el.tagName || "").toLowerCase(),
821
- attributes: attrs,
822
- textContent: (el.textContent || "").replace(/\s+/g, " ").trim().slice(0, 80) || null,
823
- center: { x: Math.round(r.x + r.width / 2), y: Math.round(r.y + r.height / 2) },
824
- hasLabel: !!(el.labels && el.labels.length > 0),
825
- labelText,
826
- selectorCounts: counts
827
- };
828
- }
829
- function stop(e) {
1179
+ placeLabel(r);
1180
+ foot.textContent = "click to pick · ↑ parent · ↓ child · Esc skip";
1181
+ };
1182
+ const stop = (e) => {
830
1183
  e.preventDefault();
831
1184
  e.stopImmediatePropagation();
832
- }
833
- function isOwn(el) {
834
- return el === banner || el === highlight || banner.contains && banner.contains(el) || el && el.__piwiHint;
835
- }
836
- var bannerDocked = "top";
837
- function dockBanner(side) {
1185
+ };
1186
+ const isOwn = (el) => el === banner || el === highlight || el === label || banner.contains && banner.contains(el) || !!(el && el.__piwiHint);
1187
+ let bannerDocked = "top";
1188
+ const dockBanner = (side) => {
838
1189
  if (bannerDocked === side) return;
839
1190
  bannerDocked = side;
840
1191
  if (side === "bottom") {
@@ -844,11 +1195,12 @@ function installSnapshotPicker(config) {
844
1195
  banner.style.top = "12px";
845
1196
  banner.style.bottom = "auto";
846
1197
  }
847
- }
848
- function onMove(e) {
849
- var raw = e.target;
1198
+ };
1199
+ const onMove = (e) => {
1200
+ const raw = e.target;
850
1201
  if (!raw || isOwn(raw)) {
851
1202
  highlight.style.display = "none";
1203
+ label.style.display = "none";
852
1204
  return;
853
1205
  }
854
1206
  if (raw !== lastRaw) {
@@ -857,38 +1209,113 @@ function installSnapshotPicker(config) {
857
1209
  idx = snapIndex(chain);
858
1210
  }
859
1211
  refresh();
860
- var el = current();
1212
+ const el = current();
861
1213
  if (el) {
862
- var r = el.getBoundingClientRect();
863
- var bannerRect = banner.getBoundingClientRect();
864
- var margin = 8;
865
- if (r.left < bannerRect.right + margin && r.right > bannerRect.left - margin && r.top < bannerRect.bottom + margin && r.bottom > bannerRect.top - margin) {
1214
+ const r = el.getBoundingClientRect();
1215
+ const br = banner.getBoundingClientRect();
1216
+ const margin = 8;
1217
+ if (r.left < br.right + margin && r.right > br.left - margin && r.top < br.bottom + margin && r.bottom > br.top - margin) {
866
1218
  dockBanner(bannerDocked === "top" ? "bottom" : "top");
867
1219
  }
868
1220
  }
869
- }
870
- function handleKey(k) {
871
- if (k === "Escape") {
872
- doClose();
873
- return;
1221
+ };
1222
+ const suppressed = ["mousedown", "mouseup", "pointerdown", "pointerup", "auxclick", "dblclick"];
1223
+ const removePickingListeners = () => {
1224
+ doc.removeEventListener("mousemove", onMove, true);
1225
+ doc.removeEventListener("click", onClick, true);
1226
+ doc.removeEventListener("keydown", onKey, true);
1227
+ if (arg.transport === "postMessage") g.removeEventListener("message", onParentMsg, false);
1228
+ };
1229
+ const removeSuppressed = () => {
1230
+ for (const t of suppressed) doc.removeEventListener(t, stop, true);
1231
+ };
1232
+ const cleanup = () => {
1233
+ highlight.remove();
1234
+ label.remove();
1235
+ banner.remove();
1236
+ };
1237
+ const reportPicked = (el) => {
1238
+ removePickingListeners();
1239
+ highlight.style.display = "none";
1240
+ label.style.display = "none";
1241
+ if (arg.transport === "postMessage") {
1242
+ const probeFn = g.__piwiProbe;
1243
+ const attrs = typeof probeFn === "function" ? probeFn(el, arg.probeArg) : null;
1244
+ g.__piwiSnapshotExtras?.onPick?.();
1245
+ doc.addEventListener("click", stop, true);
1246
+ doc.addEventListener("keydown", stop, true);
1247
+ foot.textContent = "Analyzing element…";
1248
+ g.parent.postMessage({ type: "elementPicked", attrs }, "*");
1249
+ } else {
1250
+ removeSuppressed();
1251
+ g.__piwiPickedElement = el;
1252
+ g.__piwiPickState = "picked";
1253
+ foot.textContent = "Analyzing element…";
874
1254
  }
875
- if (k === "ArrowUp") {
876
- idx = Math.min(idx + 1, chain.length - 1);
877
- refresh();
1255
+ };
1256
+ const reportSkipped = () => {
1257
+ removePickingListeners();
1258
+ if (arg.transport === "postMessage") {
1259
+ doc.removeEventListener("click", stop, true);
1260
+ doc.removeEventListener("keydown", stop, true);
1261
+ removeSuppressed();
1262
+ g.__piwiSnapshotExtras?.onClose?.();
1263
+ cleanup();
1264
+ g.parent.postMessage({ type: "pickerClosed" }, "*");
1265
+ } else {
1266
+ removeSuppressed();
1267
+ g.__piwiPickState = "skipped";
1268
+ cleanup();
1269
+ }
1270
+ };
1271
+ const onClick = (e) => {
1272
+ stop(e);
1273
+ const el = current();
1274
+ if (!el || isOwn(e.target)) return;
1275
+ reportPicked(el);
1276
+ };
1277
+ const onKey = (e) => {
1278
+ if (e.key === "Escape") {
1279
+ stop(e);
1280
+ reportSkipped();
1281
+ return;
878
1282
  }
879
- if (k === "ArrowDown") {
880
- idx = Math.max(idx - 1, 0);
1283
+ if (e.key === "ArrowUp" || e.key === "ArrowDown") {
1284
+ stop(e);
1285
+ if (e.key === "ArrowUp") idx = Math.min(idx + 1, chain.length - 1);
1286
+ else idx = Math.max(idx - 1, 0);
881
1287
  refresh();
882
1288
  }
1289
+ };
1290
+ const onParentMsg = (e) => {
1291
+ const d = e.data;
1292
+ if (!d || typeof d.type !== "string" || d.type !== "piwiPickerKey" || typeof d.key !== "string") return;
1293
+ onKey({
1294
+ key: d.key,
1295
+ preventDefault() {
1296
+ },
1297
+ stopImmediatePropagation() {
1298
+ }
1299
+ });
1300
+ };
1301
+ g.__piwiPickCleanup = cleanup;
1302
+ doc.addEventListener("mousemove", onMove, true);
1303
+ doc.addEventListener("click", onClick, true);
1304
+ doc.addEventListener("keydown", onKey, true);
1305
+ for (const t of suppressed) doc.addEventListener(t, stop, true);
1306
+ if (arg.transport === "postMessage") {
1307
+ g.addEventListener("message", onParentMsg, false);
1308
+ g.parent.postMessage({ type: "pickerReady" }, "*");
883
1309
  }
884
- function onKey(e) {
885
- stop(e);
886
- handleKey(e.key);
887
- }
1310
+ }
1311
+ function installSnapshotPickerExtras() {
1312
+ var doc = void 0;
1313
+ var g = void 0;
1314
+ var Z = 2147483600;
888
1315
  var hintBoxes = [];
889
1316
  function clearHints() {
890
- for (var i = 0; i < hintBoxes.length; i++) {
891
- if (hintBoxes[i].parentNode) hintBoxes[i].parentNode.removeChild(hintBoxes[i]);
1317
+ for (var i2 = 0; i2 < hintBoxes.length; i2++) {
1318
+ if (hintBoxes[i2].parentNode) hintBoxes[i2].parentNode.removeChild(hintBoxes[i2]);
892
1319
  }
893
1320
  hintBoxes = [];
894
1321
  }
@@ -903,8 +1330,8 @@ function installSnapshotPicker(config) {
903
1330
  );
904
1331
  var exact = [];
905
1332
  var partial = [];
906
- for (var i = 0; i < all.length; i++) {
907
- var el = all[i];
1333
+ for (var i2 = 0; i2 < all.length; i2++) {
1334
+ var el = all[i2];
908
1335
  var t = norm(el.textContent);
909
1336
  if (!t) {
910
1337
  var pl = norm(el.getAttribute && (el.getAttribute("placeholder") || el.getAttribute("aria-label")) || "");
@@ -935,8 +1362,8 @@ function installSnapshotPicker(config) {
935
1362
  clearHints();
936
1363
  if (!hints || !hints.length) return;
937
1364
  var best = null;
938
- for (var i = 0; i < hints.length; i++) {
939
- var h = hints[i];
1365
+ for (var i2 = 0; i2 < hints.length; i2++) {
1366
+ var h = hints[i2];
940
1367
  var matches = textMatches(h && h.text);
941
1368
  for (var j = 0; j < Math.min(matches.length, 3); j++) {
942
1369
  box(matches[j], "#f59e0b");
@@ -945,7 +1372,7 @@ function installSnapshotPicker(config) {
945
1372
  }
946
1373
  if (best) scrollHostTo(best);
947
1374
  setTimeout(function() {
948
- for (var i2 = 0; i2 < hintBoxes.length; i2++) hintBoxes[i2].style.opacity = "0";
1375
+ for (var i3 = 0; i3 < hintBoxes.length; i3++) hintBoxes[i3].style.opacity = "0";
949
1376
  }, 2600);
950
1377
  setTimeout(clearHints, 3e3);
951
1378
  }
@@ -983,8 +1410,7 @@ function installSnapshotPicker(config) {
983
1410
  function onParentMsg(e) {
984
1411
  var d = e.data;
985
1412
  if (!d || typeof d.type !== "string") return;
986
- if (d.type === "piwiPickerKey" && typeof d.key === "string") handleKey(d.key);
987
- else if (d.type === "piwiHighlight") {
1413
+ if (d.type === "piwiHighlight") {
988
1414
  try {
989
1415
  highlightHints(d.hints);
990
1416
  } catch (err) {
@@ -1006,16 +1432,10 @@ function installSnapshotPicker(config) {
1006
1432
  }
1007
1433
  }
1008
1434
  }
1009
- function onClick(e) {
1010
- stop(e);
1011
- var el = current();
1012
- if (!el || isOwn(e.target)) return;
1013
- var attrs = probe(el);
1014
- highlight.style.display = "none";
1015
- clearHints();
1016
- banner.innerHTML = '<div style="text-align:center;color:#9ca3af;">Analyzing element…</div>';
1017
- freezeAfterPick();
1018
- g.parent.postMessage({ type: "elementPicked", attrs }, "*");
1435
+ g.addEventListener("message", onParentMsg, false);
1436
+ function stop(e) {
1437
+ e.preventDefault();
1438
+ e.stopImmediatePropagation();
1019
1439
  }
1020
1440
  var INERT_EVENTS = [
1021
1441
  "mousedown",
@@ -1038,35 +1458,17 @@ function installSnapshotPicker(config) {
1038
1458
  "touchstart",
1039
1459
  "touchend"
1040
1460
  ];
1041
- function addInert() {
1042
- for (var i = 0; i < INERT_EVENTS.length; i++) doc.addEventListener(INERT_EVENTS[i], stop, true);
1043
- }
1044
- function disarmPicking() {
1045
- doc.removeEventListener("mousemove", onMove, true);
1046
- doc.removeEventListener("click", onClick, true);
1047
- doc.removeEventListener("keydown", onKey, true);
1048
- g.removeEventListener("message", onParentMsg, false);
1049
- }
1050
- function freezeAfterPick() {
1051
- disarmPicking();
1052
- doc.addEventListener("click", stop, true);
1053
- doc.addEventListener("keydown", stop, true);
1054
- }
1055
- function doClose() {
1056
- disarmPicking();
1057
- for (var i = 0; i < INERT_EVENTS.length; i++) doc.removeEventListener(INERT_EVENTS[i], stop, true);
1058
- doc.removeEventListener("click", stop, true);
1059
- doc.removeEventListener("keydown", stop, true);
1060
- clearHints();
1061
- highlight.remove();
1062
- banner.remove();
1063
- g.parent.postMessage({ type: "pickerClosed" }, "*");
1064
- }
1065
- doc.addEventListener("mousemove", onMove, true);
1066
- doc.addEventListener("click", onClick, true);
1067
- doc.addEventListener("keydown", onKey, true);
1068
- g.addEventListener("message", onParentMsg, false);
1069
- addInert();
1461
+ for (var i = 0; i < INERT_EVENTS.length; i++) doc.addEventListener(INERT_EVENTS[i], stop, true);
1462
+ g.__piwiSnapshotExtras = {
1463
+ onPick: function() {
1464
+ clearHints();
1465
+ },
1466
+ onClose: function() {
1467
+ clearHints();
1468
+ g.removeEventListener("message", onParentMsg, false);
1469
+ for (var i2 = 0; i2 < INERT_EVENTS.length; i2++) doc.removeEventListener(INERT_EVENTS[i2], stop, true);
1470
+ }
1471
+ };
1070
1472
  function reportHeight() {
1071
1473
  var h = Math.max(doc.documentElement ? doc.documentElement.scrollHeight : 0, doc.body ? doc.body.scrollHeight : 0);
1072
1474
  if (h > 0) g.parent.postMessage({ type: "piwiContentHeight", height: h }, "*");
@@ -1081,9 +1483,14 @@ function installSnapshotPicker(config) {
1081
1483
  } catch (err) {
1082
1484
  }
1083
1485
  }
1486
+ const escScriptClose = (src) => src.replace(/<\/(script)/gi, "<\\/$1");
1084
1487
  function snapshotPickerScriptTag(config) {
1085
- const src = String(installSnapshotPicker).replace(/<\/(script)/gi, "<\\/$1");
1086
- return `<script>(${src})(${JSON.stringify(config)})<\/script>`;
1488
+ const probeArg = { keep: config.probedAttrs, includeStructural: false, includeLabelText: true };
1489
+ const overlayArg = { transport: "postMessage", probeArg };
1490
+ const probeSrc = escScriptClose(String(probeElementAttrs));
1491
+ const extrasSrc = escScriptClose(String(installSnapshotPickerExtras));
1492
+ const overlaySrc = escScriptClose(String(installPickerOverlay));
1493
+ return `<script>globalThis.__piwiProbe = (${probeSrc});(${extrasSrc})();(${overlaySrc})(${JSON.stringify(overlayArg)});<\/script>`;
1087
1494
  }
1088
1495
  function stripBaseTag(html) {
1089
1496
  return html.replace(/<base\b[^>]*>/gi, "");
@@ -1331,11 +1738,12 @@ const _sfc_main$e = /* @__PURE__ */ defineComponent({
1331
1738
  }, 2e3);
1332
1739
  }
1333
1740
  return (_ctx, _push, _parent, _attrs) => {
1334
- const _component_UModal = _sfc_main$o;
1741
+ const _component_UModal = _sfc_main$q;
1335
1742
  const _component_UIcon = _sfc_main$p;
1336
1743
  const _component_UButton = _sfc_main$k$1;
1337
1744
  const _component_UInput = _sfc_main$d$1;
1338
1745
  const _component_UBadge = _sfc_main$7$1;
1746
+ const _component_LocatorCode = __nuxt_component_0;
1339
1747
  _push(ssrRenderComponent(_component_UModal, mergeProps({
1340
1748
  open: isOpen.value,
1341
1749
  "onUpdate:open": ($event) => isOpen.value = $event,
@@ -1575,7 +1983,7 @@ const _sfc_main$e = /* @__PURE__ */ defineComponent({
1575
1983
  }, null, _parent2, _scopeId));
1576
1984
  _push2(`</div><div class="space-y-1" role="radiogroup" aria-label="Alternative locators"${_scopeId}><!--[-->`);
1577
1985
  ssrRenderList(unref(alternatives), (alt, i) => {
1578
- _push2(ssrRenderComponent(__nuxt_component_6, {
1986
+ _push2(ssrRenderComponent(__nuxt_component_7, {
1579
1987
  key: i,
1580
1988
  alt,
1581
1989
  copied: unref(copiedKey) === `picked-${i}`,
@@ -1593,7 +2001,13 @@ const _sfc_main$e = /* @__PURE__ */ defineComponent({
1593
2001
  name: "i-lucide-star",
1594
2002
  class: "size-5 text-primary shrink-0"
1595
2003
  }, null, _parent2, _scopeId));
1596
- _push2(`<div class="flex-1 min-w-0"${_scopeId}><p class="text-xs font-medium text-primary"${_scopeId}> Recommended (score: ${ssrInterpolate(unref(recommendation).recommended.score)}) </p><code class="text-sm font-mono block truncate mt-0.5"${_scopeId}>${ssrInterpolate(unref(recommendation).recommended.locator)}</code></div>`);
2004
+ _push2(`<div class="flex-1 min-w-0"${_scopeId}><p class="text-xs font-medium text-primary"${_scopeId}> Recommended (score: ${ssrInterpolate(unref(recommendation).recommended.score)}) </p>`);
2005
+ _push2(ssrRenderComponent(_component_LocatorCode, {
2006
+ locator: unref(recommendation).recommended.locator,
2007
+ truncate: "",
2008
+ class: "text-sm mt-0.5"
2009
+ }, null, _parent2, _scopeId));
2010
+ _push2(`</div>`);
1597
2011
  _push2(ssrRenderComponent(_component_UButton, {
1598
2012
  size: "sm",
1599
2013
  color: "primary",
@@ -1862,7 +2276,7 @@ const _sfc_main$e = /* @__PURE__ */ defineComponent({
1862
2276
  "aria-label": "Alternative locators"
1863
2277
  }, [
1864
2278
  (openBlock(true), createBlock(Fragment, null, renderList(unref(alternatives), (alt, i) => {
1865
- return openBlock(), createBlock(__nuxt_component_6, {
2279
+ return openBlock(), createBlock(__nuxt_component_7, {
1866
2280
  key: i,
1867
2281
  alt,
1868
2282
  copied: unref(copiedKey) === `picked-${i}`,
@@ -1889,7 +2303,11 @@ const _sfc_main$e = /* @__PURE__ */ defineComponent({
1889
2303
  }),
1890
2304
  createVNode("div", { class: "flex-1 min-w-0" }, [
1891
2305
  createVNode("p", { class: "text-xs font-medium text-primary" }, " Recommended (score: " + toDisplayString(unref(recommendation).recommended.score) + ") ", 1),
1892
- createVNode("code", { class: "text-sm font-mono block truncate mt-0.5" }, toDisplayString(unref(recommendation).recommended.locator), 1)
2306
+ createVNode(_component_LocatorCode, {
2307
+ locator: unref(recommendation).recommended.locator,
2308
+ truncate: "",
2309
+ class: "text-sm mt-0.5"
2310
+ }, null, 8, ["locator"])
1893
2311
  ]),
1894
2312
  createVNode(_component_UButton, {
1895
2313
  size: "sm",
@@ -2278,13 +2696,14 @@ const _sfc_main$d = /* @__PURE__ */ defineComponent({
2278
2696
  () => showAllAlternatives.value ? alternatives.value : alternatives.value.slice(0, ALT_PREVIEW)
2279
2697
  );
2280
2698
  return (_ctx, _push, _parent, _attrs) => {
2699
+ const _component_LocatorCode = __nuxt_component_0;
2281
2700
  const _component_UButton = _sfc_main$k$1;
2282
- const _component_UAlert = _sfc_main$k;
2701
+ const _component_UAlert = _sfc_main$l;
2283
2702
  const _component_NuxtLink = __nuxt_component_12;
2284
2703
  const _component_UIcon = _sfc_main$p;
2285
2704
  const _component_UBadge = _sfc_main$7$1;
2286
2705
  const _component_DiffPatch = __nuxt_component_1$2;
2287
- const _component_LocatorAlternativeRow = __nuxt_component_6;
2706
+ const _component_LocatorAlternativeRow = __nuxt_component_7;
2288
2707
  const _component_DocLink = __nuxt_component_9;
2289
2708
  _push(`<!--[-->`);
2290
2709
  if (!unref(pending) && !unref(error) && unref(hasData)) {
@@ -2376,7 +2795,13 @@ const _sfc_main$d = /* @__PURE__ */ defineComponent({
2376
2795
  }),
2377
2796
  _: 1
2378
2797
  }, _parent2, _scopeId));
2379
- _push2(`</p><code class="text-sm font-mono block truncate mt-0.5"${_scopeId}>${ssrInterpolate(unref(userPick).locator)}</code></div>`);
2798
+ _push2(`</p>`);
2799
+ _push2(ssrRenderComponent(_component_LocatorCode, {
2800
+ locator: unref(userPick).locator,
2801
+ truncate: "",
2802
+ class: "text-sm mt-0.5"
2803
+ }, null, _parent2, _scopeId));
2804
+ _push2(`</div>`);
2380
2805
  _push2(ssrRenderComponent(_component_UButton, {
2381
2806
  size: "sm",
2382
2807
  color: "primary",
@@ -2468,7 +2893,12 @@ const _sfc_main$d = /* @__PURE__ */ defineComponent({
2468
2893
  }, null, _parent2, _scopeId));
2469
2894
  _push2(`</div>`);
2470
2895
  } else {
2471
- _push2(`<!--[--><code class="text-sm font-mono block truncate"${_scopeId}>${ssrInterpolate(unref(recommended).locator)}</code>`);
2896
+ _push2(`<!--[-->`);
2897
+ _push2(ssrRenderComponent(_component_LocatorCode, {
2898
+ locator: unref(recommended).locator,
2899
+ truncate: "",
2900
+ class: "text-sm"
2901
+ }, null, _parent2, _scopeId));
2472
2902
  if (unref(argChanges).length) {
2473
2903
  _push2(`<p class="text-xs flex flex-wrap items-center gap-x-1.5 gap-y-0.5"${_scopeId}><!--[-->`);
2474
2904
  ssrRenderList(unref(argChanges), (c, i) => {
@@ -2558,7 +2988,13 @@ const _sfc_main$d = /* @__PURE__ */ defineComponent({
2558
2988
  name: "i-lucide-shield-check",
2559
2989
  class: "size-5 text-success shrink-0"
2560
2990
  }, null, _parent2, _scopeId));
2561
- _push2(`<div class="flex-1 min-w-0"${_scopeId}><p class="text-xs font-medium text-success-600 dark:text-success-400"${_scopeId}> Most stable option (score: ${ssrInterpolate(unref(recommendation).durable.score)}) </p><code class="text-sm font-mono block truncate mt-0.5"${_scopeId}>${ssrInterpolate(unref(recommendation).durable.locator)}</code><p class="text-xs text-gray-500 mt-0.5"${_scopeId}>Sturdier, but changes the locator style</p></div>`);
2991
+ _push2(`<div class="flex-1 min-w-0"${_scopeId}><p class="text-xs font-medium text-success-600 dark:text-success-400"${_scopeId}> Most stable option (score: ${ssrInterpolate(unref(recommendation).durable.score)}) </p>`);
2992
+ _push2(ssrRenderComponent(_component_LocatorCode, {
2993
+ locator: unref(recommendation).durable.locator,
2994
+ truncate: "",
2995
+ class: "text-sm mt-0.5"
2996
+ }, null, _parent2, _scopeId));
2997
+ _push2(`<p class="text-xs text-gray-500 mt-0.5"${_scopeId}>Sturdier, but changes the locator style</p></div>`);
2562
2998
  _push2(ssrRenderComponent(_component_UButton, {
2563
2999
  size: "sm",
2564
3000
  color: "neutral",
@@ -2738,7 +3174,11 @@ const _sfc_main$d = /* @__PURE__ */ defineComponent({
2738
3174
  _: 1
2739
3175
  })
2740
3176
  ]),
2741
- createVNode("code", { class: "text-sm font-mono block truncate mt-0.5" }, toDisplayString(unref(userPick).locator), 1)
3177
+ createVNode(_component_LocatorCode, {
3178
+ locator: unref(userPick).locator,
3179
+ truncate: "",
3180
+ class: "text-sm mt-0.5"
3181
+ }, null, 8, ["locator"])
2742
3182
  ]),
2743
3183
  createVNode(_component_UButton, {
2744
3184
  size: "sm",
@@ -2815,7 +3255,11 @@ const _sfc_main$d = /* @__PURE__ */ defineComponent({
2815
3255
  patch: unref(suggestedEdit).patch
2816
3256
  }, null, 8, ["patch"])
2817
3257
  ])) : (openBlock(), createBlock(Fragment, { key: 1 }, [
2818
- createVNode("code", { class: "text-sm font-mono block truncate" }, toDisplayString(unref(recommended).locator), 1),
3258
+ createVNode(_component_LocatorCode, {
3259
+ locator: unref(recommended).locator,
3260
+ truncate: "",
3261
+ class: "text-sm"
3262
+ }, null, 8, ["locator"]),
2819
3263
  unref(argChanges).length ? (openBlock(), createBlock("p", {
2820
3264
  key: 0,
2821
3265
  class: "text-xs flex flex-wrap items-center gap-x-1.5 gap-y-0.5"
@@ -2897,7 +3341,11 @@ const _sfc_main$d = /* @__PURE__ */ defineComponent({
2897
3341
  }),
2898
3342
  createVNode("div", { class: "flex-1 min-w-0" }, [
2899
3343
  createVNode("p", { class: "text-xs font-medium text-success-600 dark:text-success-400" }, " Most stable option (score: " + toDisplayString(unref(recommendation).durable.score) + ") ", 1),
2900
- createVNode("code", { class: "text-sm font-mono block truncate mt-0.5" }, toDisplayString(unref(recommendation).durable.locator), 1),
3344
+ createVNode(_component_LocatorCode, {
3345
+ locator: unref(recommendation).durable.locator,
3346
+ truncate: "",
3347
+ class: "text-sm mt-0.5"
3348
+ }, null, 8, ["locator"]),
2901
3349
  createVNode("p", { class: "text-xs text-gray-500 mt-0.5" }, "Sturdier, but changes the locator style")
2902
3350
  ]),
2903
3351
  createVNode(_component_UButton, {
@@ -2997,16 +3445,20 @@ const _sfc_main$d = /* @__PURE__ */ defineComponent({
2997
3445
  fn: withCtx((_, _push2, _parent2, _scopeId) => {
2998
3446
  if (_push2) {
2999
3447
  if (unref(recommendation)?.recommended) {
3000
- _push2(`<code class="text-xs font-mono"${_scopeId}>${ssrInterpolate(unref(recommendation).recommended.locator)}</code>`);
3448
+ _push2(ssrRenderComponent(_component_LocatorCode, {
3449
+ locator: unref(recommendation).recommended.locator,
3450
+ class: "text-xs"
3451
+ }, null, _parent2, _scopeId));
3001
3452
  } else {
3002
3453
  _push2(`<span${_scopeId}>${ssrInterpolate(unref(alternatives).length)} alternative${ssrInterpolate(unref(alternatives).length === 1 ? "" : "s")}</span>`);
3003
3454
  }
3004
3455
  } else {
3005
3456
  return [
3006
- unref(recommendation)?.recommended ? (openBlock(), createBlock("code", {
3457
+ unref(recommendation)?.recommended ? (openBlock(), createBlock(_component_LocatorCode, {
3007
3458
  key: 0,
3008
- class: "text-xs font-mono"
3009
- }, toDisplayString(unref(recommendation).recommended.locator), 1)) : (openBlock(), createBlock("span", { key: 1 }, toDisplayString(unref(alternatives).length) + " alternative" + toDisplayString(unref(alternatives).length === 1 ? "" : "s"), 1))
3459
+ locator: unref(recommendation).recommended.locator,
3460
+ class: "text-xs"
3461
+ }, null, 8, ["locator"])) : (openBlock(), createBlock("span", { key: 1 }, toDisplayString(unref(alternatives).length) + " alternative" + toDisplayString(unref(alternatives).length === 1 ? "" : "s"), 1))
3010
3462
  ];
3011
3463
  }
3012
3464
  }),
@@ -3358,7 +3810,7 @@ const _sfc_main$c = /* @__PURE__ */ defineComponent({
3358
3810
  const card = ref(null);
3359
3811
  __expose({ reveal: () => card.value?.reveal?.() });
3360
3812
  return (_ctx, _push, _parent, _attrs) => {
3361
- const _component_UAlert = _sfc_main$k;
3813
+ const _component_UAlert = _sfc_main$l;
3362
3814
  const _component_UIcon = _sfc_main$p;
3363
3815
  if (!unref(pending) && !unref(error) && unref(diff)?.status === "ok") {
3364
3816
  ssrRenderVNode(_push, createVNode(resolveDynamicComponent(unref(cardComponent)), mergeProps({
@@ -3606,8 +4058,8 @@ const _sfc_main$a = /* @__PURE__ */ defineComponent({
3606
4058
  __expose({ reveal: () => card.value?.reveal?.() });
3607
4059
  return (_ctx, _push, _parent, _attrs) => {
3608
4060
  const _component_UBadge = _sfc_main$7$1;
3609
- const _component_UAlert = _sfc_main$k;
3610
- const _component_UTabs = _sfc_main$l;
4061
+ const _component_UAlert = _sfc_main$l;
4062
+ const _component_UTabs = _sfc_main$m;
3611
4063
  const _component_ScreenshotLightbox = __nuxt_component_4$2;
3612
4064
  if (!unref(pending) && !unref(error) && unref(diff)) {
3613
4065
  ssrRenderVNode(_push, createVNode(resolveDynamicComponent(unref(cardComponent)), mergeProps({
@@ -3849,7 +4301,7 @@ const _sfc_main$9 = /* @__PURE__ */ defineComponent({
3849
4301
  const card = ref(null);
3850
4302
  __expose({ reveal: () => card.value?.reveal?.() });
3851
4303
  return (_ctx, _push, _parent, _attrs) => {
3852
- const _component_UTooltip = _sfc_main$m;
4304
+ const _component_UTooltip = _sfc_main$n;
3853
4305
  const _component_UButton = _sfc_main$k$1;
3854
4306
  const _component_CodeBlock = __nuxt_component_5;
3855
4307
  if (!unref(pending) && !unref(error) && unref(snapshot)?.status === "ok" && unref(snapshot).html) {
@@ -4842,5 +5294,5 @@ function useCopyRich(options = {}) {
4842
5294
  return { copyRich, copied };
4843
5295
  }
4844
5296
 
4845
- export { __nuxt_component_25 as _, __nuxt_component_19 as a, __nuxt_component_20 as b, __nuxt_component_21 as c, __nuxt_component_27 as d, __nuxt_component_6$1 as e, isVideoFile as f, __nuxt_component_1$1 as g, __nuxt_component_2 as h, isImageFile as i, __nuxt_component_3$1 as j, __nuxt_component_4$1 as k, __nuxt_component_3 as l, __nuxt_component_4 as m, __nuxt_component_24 as n, __nuxt_component_1$2 as o, __nuxt_component_1 as p, __nuxt_component_3$2 as q, __nuxt_component_4$2 as r, stripAnsi as s, useCopyRich as u };
4846
- //# sourceMappingURL=useCopyRich-RJKhWoyj.mjs.map
5297
+ export { __nuxt_component_25 as _, __nuxt_component_19 as a, __nuxt_component_20 as b, __nuxt_component_21 as c, __nuxt_component_27 as d, __nuxt_component_6 as e, isVideoFile as f, __nuxt_component_1$1 as g, __nuxt_component_2 as h, isImageFile as i, __nuxt_component_3$1 as j, __nuxt_component_4$1 as k, __nuxt_component_3 as l, __nuxt_component_4 as m, __nuxt_component_24 as n, __nuxt_component_1$2 as o, __nuxt_component_1 as p, __nuxt_component_3$2 as q, __nuxt_component_4$2 as r, stripAnsi as s, useCopyRich as u };
5298
+ //# sourceMappingURL=useCopyRich-Cd5Yj_Wy.mjs.map