@piwitests/server 0.18.2 → 0.20.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (783) hide show
  1. package/.output/nitro.json +1 -1
  2. package/.output/public/_nuxt/{Dwws9U0D.js → -f7BAm1H.js} +1 -1
  3. package/.output/public/_nuxt/{BjCHB89N.js → 4gYNA-d4.js} +1 -1
  4. package/.output/public/_nuxt/5A6ITZXj.js +1 -0
  5. package/.output/public/_nuxt/8PUUncmO.js +44 -0
  6. package/.output/public/_nuxt/A1pj0VnG.js +1 -0
  7. package/.output/public/_nuxt/{DZ3Vfcpz.js → AbmKWFQQ.js} +1 -1
  8. package/.output/public/_nuxt/B3obW6cw.js +3 -0
  9. package/.output/public/_nuxt/{QmMoMxLM.js → B7FTvFWq.js} +3 -3
  10. package/.output/public/_nuxt/{DXbPFI1d.js → B8zkOmwo.js} +1 -1
  11. package/.output/public/_nuxt/B96M2gdj.js +1 -0
  12. package/.output/public/_nuxt/{BFP6M-20.js → B99fbi73.js} +1 -1
  13. package/.output/public/_nuxt/{DD5HpaW9.js → B9OLmp0f.js} +1 -1
  14. package/.output/public/_nuxt/BKkF4pPD.js +1 -0
  15. package/.output/public/_nuxt/BT3wGCTI.js +1 -0
  16. package/.output/public/_nuxt/BUa0V0Ly.js +1 -0
  17. package/.output/public/_nuxt/BUkim3TM.js +1 -0
  18. package/.output/public/_nuxt/BVc14Ncz.js +4 -0
  19. package/.output/public/_nuxt/BY0HxR3t.js +17 -0
  20. package/.output/public/_nuxt/B_xAMWQS.js +2 -0
  21. package/.output/public/_nuxt/BdQoBaOv.js +1 -0
  22. package/.output/public/_nuxt/{Cng9gj7q.js → BdfhYr-u.js} +1 -1
  23. package/.output/public/_nuxt/BgRu_3tT.js +1 -0
  24. package/.output/public/_nuxt/{BBK2-Krn.js → BiO7RBWb.js} +2 -2
  25. package/.output/public/_nuxt/BicAJ6U8.js +1 -0
  26. package/.output/public/_nuxt/BjaRappk.js +1 -0
  27. package/.output/public/_nuxt/Bm62iDV5.js +1 -0
  28. package/.output/public/_nuxt/{C9YzQCiq.js → BmUfSNMV.js} +1 -1
  29. package/.output/public/_nuxt/Bnxf8nbZ.js +1 -0
  30. package/.output/public/_nuxt/{CsUoYK75.js → Bow4tTR0.js} +1 -1
  31. package/.output/public/_nuxt/{B2oUeBbA.js → BrQEE053.js} +1 -1
  32. package/.output/public/_nuxt/BzRRzmwm.js +1 -0
  33. package/.output/public/_nuxt/{CN1mJlvD.js → C0_yH0N7.js} +1 -1
  34. package/.output/public/_nuxt/C1gTN4Q8.js +1 -0
  35. package/.output/public/_nuxt/{CNMoZYMv.js → C2hkrSey.js} +1 -1
  36. package/.output/public/_nuxt/{rTvJTef_.js → C8e1EbJI.js} +1 -1
  37. package/.output/public/_nuxt/CA9B2HE5.js +1 -0
  38. package/.output/public/_nuxt/{oFM1KLWA.js → CAAwCT7H.js} +1 -1
  39. package/.output/public/_nuxt/{qpI-_f9Q.js → CAvY22RE.js} +1 -1
  40. package/.output/public/_nuxt/{BLIRKrbM.js → CEfS4-oS.js} +4 -4
  41. package/.output/public/_nuxt/CIoSMkpp.js +1 -0
  42. package/.output/public/_nuxt/{hH1UFE3Z.js → CIrFl3MW.js} +1 -1
  43. package/.output/public/_nuxt/CJFtzlQ4.js +1 -0
  44. package/.output/public/_nuxt/{hgHc4teu.js → CNyV9YpI.js} +1 -1
  45. package/.output/public/_nuxt/CSJ-eOQM.js +1 -0
  46. package/.output/public/_nuxt/CTU1mrhq.js +1 -0
  47. package/.output/public/_nuxt/CXEH9OPk.js +1 -0
  48. package/.output/public/_nuxt/CahpB9Z2.js +5 -0
  49. package/.output/public/_nuxt/{C8OCrfDP.js → Cbh--1MW.js} +1 -1
  50. package/.output/public/_nuxt/CeG9pBAD.js +1 -0
  51. package/.output/public/_nuxt/{DBtBvrYc.js → CeW8v31b.js} +1 -1
  52. package/.output/public/_nuxt/{DZUgX70W.js → CjPfj7ya.js} +1 -1
  53. package/.output/public/_nuxt/Cnsmicv2.js +79 -0
  54. package/.output/public/_nuxt/CsLojMwR.js +1 -0
  55. package/.output/public/_nuxt/{BXY_PWcx.js → Cus22Ud3.js} +2 -2
  56. package/.output/public/_nuxt/{4TxgDGVa.js → CwGWJbiy.js} +1 -1
  57. package/.output/public/_nuxt/Cx6gc2VW.js +1 -0
  58. package/.output/public/_nuxt/{B1X__ilH.js → CxyAzHr3.js} +1 -1
  59. package/.output/public/_nuxt/{BJtlcTrb.js → CzAPFPpL.js} +1 -1
  60. package/.output/public/_nuxt/D--H4jLI.js +1 -0
  61. package/.output/public/_nuxt/D-c8ZSws.js +1 -0
  62. package/.output/public/_nuxt/D1POo6S4.js +10 -0
  63. package/.output/public/_nuxt/D5tke0B5.js +1 -0
  64. package/.output/public/_nuxt/D8nkF-OO.js +3 -0
  65. package/.output/public/_nuxt/DA25RkyK.js +1 -0
  66. package/.output/public/_nuxt/{DZ1zNBVM.js → DIB-5fUJ.js} +1 -1
  67. package/.output/public/_nuxt/DJmoLeVt.js +1 -0
  68. package/.output/public/_nuxt/DJxlKFGb.js +1 -0
  69. package/.output/public/_nuxt/DMec-OLo.js +1 -0
  70. package/.output/public/_nuxt/DPCxhHri.js +1 -0
  71. package/.output/public/_nuxt/{By4YL7mx.js → DSqHUrvO.js} +1 -1
  72. package/.output/public/_nuxt/DabzhQB1.js +1 -0
  73. package/.output/public/_nuxt/{D5oNv2cB.js → DdwHkKfV.js} +1 -1
  74. package/.output/public/_nuxt/{CfOLBbW9.js → DeY2JkR2.js} +1 -1
  75. package/.output/public/_nuxt/{CPLJeOCb.js → DfgOx_ou.js} +1 -1
  76. package/.output/public/_nuxt/DmkUdSS4.js +1 -0
  77. package/.output/public/_nuxt/{CUvGJXY3.js → DoIREDVb.js} +1 -1
  78. package/.output/public/_nuxt/DpZ1r1HA.js +1 -0
  79. package/.output/public/_nuxt/{BOCwBVnz.js → Dpd16JVI.js} +1 -1
  80. package/.output/public/_nuxt/DqcKngf3.js +1 -0
  81. package/.output/public/_nuxt/{xqiPI_FQ.js → DrfE8IY0.js} +1 -1
  82. package/.output/public/_nuxt/{BeFDVhpA.js → DsesNydr.js} +1 -1
  83. package/.output/public/_nuxt/{D0cnIs93.js → DtHJgCS8.js} +1 -1
  84. package/.output/public/_nuxt/Dtd4rC58.js +9 -0
  85. package/.output/public/_nuxt/Du2W7Jne.js +254 -0
  86. package/.output/public/_nuxt/DuwtTfO8.js +2 -0
  87. package/.output/public/_nuxt/Dy-TJ0Mt.js +1 -0
  88. package/.output/public/_nuxt/{BlnwU1OO.js → Dy86h-7P.js} +1 -1
  89. package/.output/public/_nuxt/{B-IcwqZ2.js → Dyeqn3aG.js} +1 -1
  90. package/.output/public/_nuxt/{BlA8mIS-.js → FaFoMVKo.js} +1 -1
  91. package/.output/public/_nuxt/GPNI1ffD.js +4 -0
  92. package/.output/public/_nuxt/{DWowvnwc.js → H94BMf3L.js} +1 -1
  93. package/.output/public/_nuxt/HPNQD6v3.js +1 -0
  94. package/.output/public/_nuxt/HXadJrHu.js +2 -0
  95. package/.output/public/_nuxt/KyA_4Ks-.js +1 -0
  96. package/.output/public/_nuxt/{e7zD3uJ0.js → L3kAWB2a.js} +1 -1
  97. package/.output/public/_nuxt/McL25vkx.js +34 -0
  98. package/.output/public/_nuxt/Nn93e_Mz.js +1 -0
  99. package/.output/public/_nuxt/TagBadge.By1E6r4y.css +1 -0
  100. package/.output/public/_nuxt/UdR3DBPS.js +1 -0
  101. package/.output/public/_nuxt/Und3xXFc.js +5 -0
  102. package/.output/public/_nuxt/_mj6CfPa.js +1 -0
  103. package/.output/public/_nuxt/b-GYfcrQ.js +1 -0
  104. package/.output/public/_nuxt/bLcjFslv.js +1 -0
  105. package/.output/public/_nuxt/builds/latest.json +1 -1
  106. package/.output/public/_nuxt/builds/meta/e659b3e1-0e61-4971-940e-10063f9f4763.json +1 -0
  107. package/.output/public/_nuxt/entry.DmptwB51.css +1 -0
  108. package/.output/public/_nuxt/{wHnZ9OaL.js → hC_z4G8p.js} +1 -1
  109. package/.output/public/_nuxt/{DZOS7Fh7.js → hNh4CIL0.js} +1 -1
  110. package/.output/public/_nuxt/{kjYMoWWx.js → l5WKbU4h.js} +3 -3
  111. package/.output/public/_nuxt/oAClCn_h.js +1 -0
  112. package/.output/public/_nuxt/{gnCL8GjZ.js → pQqGiNch.js} +1 -1
  113. package/.output/public/_nuxt/ryMzSDUj.js +2 -0
  114. package/.output/public/demo/seed.version.json +2 -2
  115. package/.output/server/chunks/_/ai-prompt-preview.mjs +38 -0
  116. package/.output/server/chunks/_/ai-prompt-preview.mjs.map +1 -0
  117. package/.output/server/chunks/_/collect.mjs +122 -0
  118. package/.output/server/chunks/_/collect.mjs.map +1 -0
  119. package/.output/server/chunks/_/markers.mjs +1 -1
  120. package/.output/server/chunks/_/quarantine.mjs +112 -0
  121. package/.output/server/chunks/_/quarantine.mjs.map +1 -0
  122. package/.output/server/chunks/_/users.mjs +1 -1
  123. package/.output/server/chunks/build/{Alert-Bp1Wz_sq.mjs → Alert-C4xq8lao.mjs} +2 -2
  124. package/.output/server/chunks/build/Alert-C4xq8lao.mjs.map +1 -0
  125. package/.output/server/chunks/build/{Breadcrumb-C9ZPTLym.mjs → Breadcrumb-Ak2Lg3oM.mjs} +3 -3
  126. package/.output/server/chunks/build/Breadcrumb-Ak2Lg3oM.mjs.map +1 -0
  127. package/.output/server/chunks/build/{BreadcrumbNav-C3y42Vun.mjs → BreadcrumbNav-DO7I_z-n.mjs} +3 -3
  128. package/.output/server/chunks/build/BreadcrumbNav-DO7I_z-n.mjs.map +1 -0
  129. package/.output/server/chunks/build/{BrowserBadge-DNCp9pF-.mjs → BrowserBadge-MFvBwxmD.mjs} +67 -7
  130. package/.output/server/chunks/build/BrowserBadge-MFvBwxmD.mjs.map +1 -0
  131. package/.output/server/chunks/build/{ChartCard-Fr557IbV.mjs → ChartCard-Y1UKwMsf.mjs} +2 -2
  132. package/.output/server/chunks/build/ChartCard-Y1UKwMsf.mjs.map +1 -0
  133. package/.output/server/chunks/build/{Checkbox-cVOSIY93.mjs → Checkbox-4Q5d0fa0.mjs} +8 -8
  134. package/.output/server/chunks/build/Checkbox-4Q5d0fa0.mjs.map +1 -0
  135. package/.output/server/chunks/build/CiEnvCard-DB5DvBh1.mjs +1492 -0
  136. package/.output/server/chunks/build/CiEnvCard-DB5DvBh1.mjs.map +1 -0
  137. package/.output/server/chunks/build/{CodeBlock-BGwNmJ8J.mjs → CodeBlock-BgE-NSmE.mjs} +7 -22
  138. package/.output/server/chunks/build/CodeBlock-BgE-NSmE.mjs.map +1 -0
  139. package/.output/server/chunks/build/{DashboardNavbar-Bdp-OwTN.mjs → DashboardNavbar-BHmMSPX7.mjs} +3 -3
  140. package/.output/server/chunks/build/DashboardNavbar-BHmMSPX7.mjs.map +1 -0
  141. package/.output/server/chunks/build/{DashboardSidebarToggle-Ji6ADuqF.mjs → DashboardSidebarToggle-DCTnHiIv.mjs} +3 -3
  142. package/.output/server/chunks/build/DashboardSidebarToggle-DCTnHiIv.mjs.map +1 -0
  143. package/.output/server/chunks/build/{DataLocationCard-D6xSOrme.mjs → DataLocationCard-B_YHdzSz.mjs} +3 -3
  144. package/.output/server/chunks/build/DataLocationCard-B_YHdzSz.mjs.map +1 -0
  145. package/.output/server/chunks/build/{DiagnosisPanel-DV1xwGu4.mjs → DiagnosisPanel-CALyEmcJ.mjs} +17 -528
  146. package/.output/server/chunks/build/DiagnosisPanel-CALyEmcJ.mjs.map +1 -0
  147. package/.output/server/chunks/build/DurationValue-D20oGbnc.mjs +43 -0
  148. package/.output/server/chunks/build/DurationValue-D20oGbnc.mjs.map +1 -0
  149. package/.output/server/chunks/build/{EmptyState-DV3oT_xz.mjs → EmptyState-DC2q_7TD.mjs} +3 -3
  150. package/.output/server/chunks/build/EmptyState-DC2q_7TD.mjs.map +1 -0
  151. package/.output/server/chunks/build/{EntityLinks-DeOP13Kr.mjs → EntityLinks-BBHWssHH.mjs} +6 -6
  152. package/.output/server/chunks/build/EntityLinks-BBHWssHH.mjs.map +1 -0
  153. package/.output/server/chunks/build/{EnvManagedBadge-Qpn58Nmr.mjs → EnvManagedBadge-UwD2b9v2.mjs} +3 -3
  154. package/.output/server/chunks/build/EnvManagedBadge-UwD2b9v2.mjs.map +1 -0
  155. package/.output/server/chunks/build/{FormField-B-GSn_VR.mjs → FormField-B0HKsdMd.mjs} +3 -3
  156. package/.output/server/chunks/build/FormField-B0HKsdMd.mjs.map +1 -0
  157. package/.output/server/chunks/build/{HelpHint-YEMWtKu1.mjs → HelpHint-DrcIv-Oj.mjs} +53 -6
  158. package/.output/server/chunks/build/HelpHint-DrcIv-Oj.mjs.map +1 -0
  159. package/.output/server/chunks/build/{Label-DBvbHd3A.mjs → Label-DYDR1Oeh.mjs} +2 -2
  160. package/.output/server/chunks/build/Label-DYDR1Oeh.mjs.map +1 -0
  161. package/.output/server/chunks/build/{MiniRunBars-C3HG-EYm.mjs → MiniRunBars-CZMugDrh.mjs} +2 -2
  162. package/.output/server/chunks/build/MiniRunBars-CZMugDrh.mjs.map +1 -0
  163. package/.output/server/chunks/build/{Modal-CfA78Hm1.mjs → Modal-pSDlXzT3.mjs} +2 -2
  164. package/.output/server/chunks/build/Modal-pSDlXzT3.mjs.map +1 -0
  165. package/.output/server/chunks/build/{OpenInIdeLink-B92wosXu.mjs → OpenInIdeLink-CQWKKChd.mjs} +6 -6
  166. package/.output/server/chunks/build/{OpenInIdeLink-B92wosXu.mjs.map → OpenInIdeLink-CQWKKChd.mjs.map} +1 -1
  167. package/.output/server/chunks/build/{ProjectTestCasesTable-9Ia825h8.mjs → ProjectTestCasesTable-Bo61P5K1.mjs} +120 -45
  168. package/.output/server/chunks/build/ProjectTestCasesTable-Bo61P5K1.mjs.map +1 -0
  169. package/.output/server/chunks/build/{RovingFocusItem-CxhHdNGo.mjs → RovingFocusItem--OEHI2P3.mjs} +2 -2
  170. package/.output/server/chunks/build/RovingFocusItem--OEHI2P3.mjs.map +1 -0
  171. package/.output/server/chunks/build/{RunReports-BpJqLHY9.mjs → RunReports-DFLv51TX.mjs} +8 -6
  172. package/.output/server/chunks/build/RunReports-DFLv51TX.mjs.map +1 -0
  173. package/.output/server/chunks/build/{RunStatusBadge-BhmJ_RKM.mjs → RunStatusBadge-FfGb6bkW.mjs} +3 -2
  174. package/.output/server/chunks/build/RunStatusBadge-FfGb6bkW.mjs.map +1 -0
  175. package/.output/server/chunks/build/{SectionCard-COd9TuDq.mjs → SectionCard-CN-v0FZ_.mjs} +2 -2
  176. package/.output/server/chunks/build/SectionCard-CN-v0FZ_.mjs.map +1 -0
  177. package/.output/server/chunks/build/{Select-ppPz926C.mjs → Select-5DK9frQ7.mjs} +4 -4
  178. package/.output/server/chunks/build/Select-5DK9frQ7.mjs.map +1 -0
  179. package/.output/server/chunks/build/{SelectMenu-799c_Ils.mjs → SelectMenu-D-2FSqBU.mjs} +939 -7
  180. package/.output/server/chunks/build/{SelectMenu-799c_Ils.mjs.map → SelectMenu-D-2FSqBU.mjs.map} +1 -1
  181. package/.output/server/chunks/build/{Separator-CxZdx8kw.mjs → Separator-CR4WcEKD.mjs} +2 -2
  182. package/.output/server/chunks/build/Separator-CR4WcEKD.mjs.map +1 -0
  183. package/.output/server/chunks/build/{SettingsField-DDD4oqys.mjs → SettingsField-BZfx4ma1.mjs} +6 -6
  184. package/.output/server/chunks/build/SettingsField-BZfx4ma1.mjs.map +1 -0
  185. package/.output/server/chunks/build/{Slideover-B95Rj237.mjs → Slideover-D270EZZD.mjs} +3 -3
  186. package/.output/server/chunks/build/Slideover-D270EZZD.mjs.map +1 -0
  187. package/.output/server/chunks/build/{Switch-xQQ3_ME1.mjs → Switch-B5Fp8ULt.mjs} +5 -5
  188. package/.output/server/chunks/build/Switch-B5Fp8ULt.mjs.map +1 -0
  189. package/.output/server/chunks/build/{Table-CPhhVzDv.mjs → Table-BRk04Hd2.mjs} +3 -3
  190. package/.output/server/chunks/build/Table-BRk04Hd2.mjs.map +1 -0
  191. package/.output/server/chunks/build/{Tabs-BV9XqjoO.mjs → Tabs-BkSOnbaB.mjs} +3 -3
  192. package/.output/server/chunks/build/Tabs-BkSOnbaB.mjs.map +1 -0
  193. package/.output/server/chunks/build/TagBadge-DwzoFCBb.mjs +31 -0
  194. package/.output/server/chunks/build/TagBadge-DwzoFCBb.mjs.map +1 -0
  195. package/.output/server/chunks/build/TagBadge-styles.jhuZ4NjP.mjs +8 -0
  196. package/.output/server/chunks/build/TagBadge-styles.jhuZ4NjP.mjs.map +1 -0
  197. package/.output/server/chunks/build/{TestCaseHistoryChart-DMb-xSJa.mjs → TestCaseHistoryChart-CSi64vVA.mjs} +6 -6
  198. package/.output/server/chunks/build/TestCaseHistoryChart-CSi64vVA.mjs.map +1 -0
  199. package/.output/server/chunks/build/TestMetaBadges-D5_yUtIP.mjs +200 -0
  200. package/.output/server/chunks/build/TestMetaBadges-D5_yUtIP.mjs.map +1 -0
  201. package/.output/server/chunks/build/{TestStatusBar-CEzt76wk.mjs → TestStatusBar-DX3EhlyP.mjs} +15 -15
  202. package/.output/server/chunks/build/TestStatusBar-DX3EhlyP.mjs.map +1 -0
  203. package/.output/server/chunks/build/{Textarea-DrrqQUVG.mjs → Textarea-Dv2-lOvW.mjs} +2 -2
  204. package/.output/server/chunks/build/Textarea-Dv2-lOvW.mjs.map +1 -0
  205. package/.output/server/chunks/build/{Tooltip-7vwuDPrZ.mjs → Tooltip-Dv4htNP6.mjs} +3 -3
  206. package/.output/server/chunks/build/Tooltip-Dv4htNP6.mjs.map +1 -0
  207. package/.output/server/chunks/build/{VisuallyHiddenInput-C9eJVpPW.mjs → VisuallyHiddenInput-BHvzNumK.mjs} +2 -2
  208. package/.output/server/chunks/build/VisuallyHiddenInput-BHvzNumK.mjs.map +1 -0
  209. package/.output/server/chunks/build/{_id_-CE0Gso6i.mjs → _id_-BdG37K7s.mjs} +91 -42
  210. package/.output/server/chunks/build/_id_-BdG37K7s.mjs.map +1 -0
  211. package/.output/server/chunks/build/{_id_-bWcP2xFl.mjs → _id_-BdJs7BJZ.mjs} +719 -448
  212. package/.output/server/chunks/build/_id_-BdJs7BJZ.mjs.map +1 -0
  213. package/.output/server/chunks/build/{_id_-B2yirIuA.mjs → _id_-BxA6IgWr.mjs} +831 -368
  214. package/.output/server/chunks/build/_id_-BxA6IgWr.mjs.map +1 -0
  215. package/.output/server/chunks/build/{_id_-B4V5fop6.mjs → _id_-C_uSBiyU.mjs} +296 -60
  216. package/.output/server/chunks/build/{_id_-B4V5fop6.mjs.map → _id_-C_uSBiyU.mjs.map} +1 -1
  217. package/.output/server/chunks/build/{about-CoJjvUwM.mjs → about-BE0UV-8-.mjs} +456 -61
  218. package/.output/server/chunks/build/about-BE0UV-8-.mjs.map +1 -0
  219. package/.output/server/chunks/build/{account-Cn-eZqXM.mjs → account-DAfvaD-F.mjs} +21 -9
  220. package/.output/server/chunks/build/account-DAfvaD-F.mjs.map +1 -0
  221. package/.output/server/chunks/build/{ai-7jdaPOmj.mjs → ai-Cn05ch0u.mjs} +45 -23
  222. package/.output/server/chunks/build/{ai-7jdaPOmj.mjs.map → ai-Cn05ch0u.mjs.map} +1 -1
  223. package/.output/server/chunks/build/{analytics-B276WPeU.mjs → analytics-Bo_B_jko.mjs} +66 -41
  224. package/.output/server/chunks/build/analytics-Bo_B_jko.mjs.map +1 -0
  225. package/.output/server/chunks/build/client.precomputed.mjs +1 -1
  226. package/.output/server/chunks/build/compare-RxHSOdsO.mjs +12 -0
  227. package/.output/server/chunks/build/{db.client-aHcD0wyX.mjs → db.client-CQoVTYB9.mjs} +83 -5
  228. package/.output/server/chunks/build/db.client-CQoVTYB9.mjs.map +1 -0
  229. package/.output/server/chunks/build/{default-BSzdkM_L.mjs → default-CbNHaFsy.mjs} +622 -78
  230. package/.output/server/chunks/build/default-CbNHaFsy.mjs.map +1 -0
  231. package/.output/server/chunks/build/{docs-BN_x1OW3.mjs → docs-B_llWMxx.mjs} +30 -49
  232. package/.output/server/chunks/build/{docs-BN_x1OW3.mjs.map → docs-B_llWMxx.mjs.map} +1 -1
  233. package/.output/server/chunks/build/{edit-C9Z7oZeu.mjs → edit-J0asTFg8.mjs} +29 -18
  234. package/.output/server/chunks/build/edit-J0asTFg8.mjs.map +1 -0
  235. package/.output/server/chunks/build/{fetch-8kznMtBM.mjs → fetch-B4FwBOzu.mjs} +3 -3
  236. package/.output/server/chunks/build/fetch-B4FwBOzu.mjs.map +1 -0
  237. package/.output/server/chunks/build/{forgot-password-BqPF4Rxs.mjs → forgot-password-CC__1OnV.mjs} +17 -5
  238. package/.output/server/chunks/build/forgot-password-CC__1OnV.mjs.map +1 -0
  239. package/.output/server/chunks/build/{help-content-DmFnuhNu.mjs → help-content-C876a9WD.mjs} +37 -8
  240. package/.output/server/chunks/build/help-content-C876a9WD.mjs.map +1 -0
  241. package/.output/server/chunks/build/import-CS9oylTN.mjs +1021 -0
  242. package/.output/server/chunks/build/import-CS9oylTN.mjs.map +1 -0
  243. package/.output/server/chunks/build/{index-CULN3-en.mjs → index-CU2nZhAa.mjs} +113 -42
  244. package/.output/server/chunks/build/index-CU2nZhAa.mjs.map +1 -0
  245. package/.output/server/chunks/build/{index-BR9hw6qk.mjs → index-DE45ycdZ.mjs} +51 -31
  246. package/.output/server/chunks/build/index-DE45ycdZ.mjs.map +1 -0
  247. package/.output/server/chunks/build/{index-BK9PTRpd.mjs → index-e9skCi-V.mjs} +85 -69
  248. package/.output/server/chunks/build/{index-BK9PTRpd.mjs.map → index-e9skCi-V.mjs.map} +1 -1
  249. package/.output/server/chunks/build/{index-DVUtBexc.mjs → index-hGHlmyxj.mjs} +1520 -288
  250. package/.output/server/chunks/build/index-hGHlmyxj.mjs.map +1 -0
  251. package/.output/server/chunks/build/{index-Ba-Fifra.mjs → index-tR6owKzj.mjs} +18 -6
  252. package/.output/server/chunks/build/index-tR6owKzj.mjs.map +1 -0
  253. package/.output/server/chunks/build/{isValueEqualOrExist-DBZjbD_3.mjs → isValueEqualOrExist-D2qw9YEr.mjs} +3 -3
  254. package/.output/server/chunks/build/isValueEqualOrExist-D2qw9YEr.mjs.map +1 -0
  255. package/.output/server/chunks/build/{login-D2XZDuek.mjs → login-Da4u1IlW.mjs} +19 -7
  256. package/.output/server/chunks/build/login-Da4u1IlW.mjs.map +1 -0
  257. package/.output/server/chunks/build/{mcp-_o6cMS6m.mjs → mcp-uhVCCwQM.mjs} +359 -24
  258. package/.output/server/chunks/build/mcp-uhVCCwQM.mjs.map +1 -0
  259. package/.output/server/chunks/build/{notifications-Dzm9c0u_.mjs → notifications-fx_qnKGA.mjs} +27 -21
  260. package/.output/server/chunks/build/notifications-fx_qnKGA.mjs.map +1 -0
  261. package/.output/server/chunks/build/pr-feedback-X6-70iF0.mjs +368 -0
  262. package/.output/server/chunks/build/pr-feedback-X6-70iF0.mjs.map +1 -0
  263. package/.output/server/chunks/build/{reset-password-gpFzIEDj.mjs → reset-password-BmrUS4ZD.mjs} +17 -5
  264. package/.output/server/chunks/build/reset-password-BmrUS4ZD.mjs.map +1 -0
  265. package/.output/server/chunks/build/server.mjs +238 -36
  266. package/.output/server/chunks/build/{settings-pNyPBXVa.mjs → settings-CCYe7rsc.mjs} +23 -10
  267. package/.output/server/chunks/build/settings-CCYe7rsc.mjs.map +1 -0
  268. package/.output/server/chunks/build/{settings-metadata-B0wo5R-W.mjs → settings-metadata-DrEqWcW-.mjs} +11 -2
  269. package/.output/server/chunks/build/settings-metadata-DrEqWcW-.mjs.map +1 -0
  270. package/.output/server/chunks/build/{storage-XelzuyPy.mjs → storage-CJEmviCD.mjs} +41 -31
  271. package/.output/server/chunks/build/storage-CJEmviCD.mjs.map +1 -0
  272. package/.output/server/chunks/build/styles.mjs +1 -0
  273. package/.output/server/chunks/build/{tags-DrCQ7QSw.mjs → tags-DauTe_F-.mjs} +22 -10
  274. package/.output/server/chunks/build/tags-DauTe_F-.mjs.map +1 -0
  275. package/.output/server/chunks/build/{test-cases-pmOxi-AN.mjs → test-cases-thBbAykw.mjs} +38 -24
  276. package/.output/server/chunks/build/test-cases-thBbAykw.mjs.map +1 -0
  277. package/.output/server/chunks/build/{timeout-hygiene-CNs71Iah.mjs → timeout-hygiene-CbnSaVbK.mjs} +20 -8
  278. package/.output/server/chunks/build/timeout-hygiene-CbnSaVbK.mjs.map +1 -0
  279. package/.output/server/chunks/build/{useAiStatus-ZO987RY7.mjs → useAiStatus-CxjMmDDY.mjs} +89 -89
  280. package/.output/server/chunks/build/useAiStatus-CxjMmDDY.mjs.map +1 -0
  281. package/.output/server/chunks/build/{useCopy-BQQKcwlq.mjs → useCopy-CeKWgHyT.mjs} +2 -2
  282. package/.output/server/chunks/build/useCopy-CeKWgHyT.mjs.map +1 -0
  283. package/.output/server/chunks/build/{PageStateCard-Bwee6JTk.mjs → useCopyRich-RJKhWoyj.mjs} +472 -63
  284. package/.output/server/chunks/build/useCopyRich-RJKhWoyj.mjs.map +1 -0
  285. package/.output/server/chunks/build/useDesktopDownload-BepjqxOt.mjs +46 -0
  286. package/.output/server/chunks/build/useDesktopDownload-BepjqxOt.mjs.map +1 -0
  287. package/.output/server/chunks/build/{useFormControl-BLpq1s4O.mjs → useFormControl-CZ9So7iX.mjs} +2 -2
  288. package/.output/server/chunks/build/useFormControl-CZ9So7iX.mjs.map +1 -0
  289. package/.output/server/chunks/build/{useOpenInIde-kMZ7Jw5c.mjs → useOpenInIde-BbTnPhFA.mjs} +3 -3
  290. package/.output/server/chunks/build/useOpenInIde-BbTnPhFA.mjs.map +1 -0
  291. package/.output/server/chunks/build/{useSettingsNav-NjI2seBy.mjs → useSettingsNav-DnQKacz8.mjs} +6 -6
  292. package/.output/server/chunks/build/useSettingsNav-DnQKacz8.mjs.map +1 -0
  293. package/.output/server/chunks/build/useTauri-Kf3HE_42.mjs +11 -0
  294. package/.output/server/chunks/build/useTauri-Kf3HE_42.mjs.map +1 -0
  295. package/.output/server/chunks/build/{useTreeViewCookie-DVYpxW-p.mjs → useTreeViewCookie-CQjQdTkH.mjs} +2 -2
  296. package/.output/server/chunks/build/useTreeViewCookie-CQjQdTkH.mjs.map +1 -0
  297. package/.output/server/chunks/build/{users-NmAUZs3i.mjs → users-CTUqXyGh.mjs} +22 -10
  298. package/.output/server/chunks/build/users-CTUqXyGh.mjs.map +1 -0
  299. package/.output/server/chunks/build/{wasted-time-CguAF9zc.mjs → wasted-time-BNTPIyrC.mjs} +26 -14
  300. package/.output/server/chunks/build/wasted-time-BNTPIyrC.mjs.map +1 -0
  301. package/.output/server/chunks/nitro/nitro.mjs +6438 -1964
  302. package/.output/server/chunks/nitro/nitro.mjs.map +1 -1
  303. package/.output/server/chunks/routes/__piwi/session.get.mjs +13 -1
  304. package/.output/server/chunks/routes/__piwi/session.get.mjs.map +1 -1
  305. package/.output/server/chunks/routes/api/admin/cleanup.delete.mjs +12 -0
  306. package/.output/server/chunks/routes/api/admin/cleanup.delete.mjs.map +1 -1
  307. package/.output/server/chunks/routes/api/admin/stats.get.mjs +12 -0
  308. package/.output/server/chunks/routes/api/admin/stats.get.mjs.map +1 -1
  309. package/.output/server/chunks/routes/api/ai/status.get.mjs +12 -0
  310. package/.output/server/chunks/routes/api/ai/status.get.mjs.map +1 -1
  311. package/.output/server/chunks/routes/api/analytics/_widget_.get.mjs +12 -0
  312. package/.output/server/chunks/routes/api/analytics/_widget_.get.mjs.map +1 -1
  313. package/.output/server/chunks/routes/api/auth/change-password.post.mjs +12 -0
  314. package/.output/server/chunks/routes/api/auth/change-password.post.mjs.map +1 -1
  315. package/.output/server/chunks/routes/api/auth/forgot-password.post.mjs +12 -0
  316. package/.output/server/chunks/routes/api/auth/forgot-password.post.mjs.map +1 -1
  317. package/.output/server/chunks/routes/api/auth/login.post.mjs +12 -0
  318. package/.output/server/chunks/routes/api/auth/login.post.mjs.map +1 -1
  319. package/.output/server/chunks/routes/api/auth/logout.post.mjs +12 -0
  320. package/.output/server/chunks/routes/api/auth/logout.post.mjs.map +1 -1
  321. package/.output/server/chunks/routes/api/auth/me.get.mjs +12 -0
  322. package/.output/server/chunks/routes/api/auth/me.get.mjs.map +1 -1
  323. package/.output/server/chunks/routes/api/auth/oauth/_provider/callback.get.mjs +12 -0
  324. package/.output/server/chunks/routes/api/auth/oauth/_provider/callback.get.mjs.map +1 -1
  325. package/.output/server/chunks/routes/api/auth/oauth/_provider/login.get.mjs +12 -0
  326. package/.output/server/chunks/routes/api/auth/oauth/_provider/login.get.mjs.map +1 -1
  327. package/.output/server/chunks/routes/api/auth/oauth/_provider/unlink.post.mjs +12 -0
  328. package/.output/server/chunks/routes/api/auth/oauth/_provider/unlink.post.mjs.map +1 -1
  329. package/.output/server/chunks/routes/api/auth/reset-password.post.mjs +12 -0
  330. package/.output/server/chunks/routes/api/auth/reset-password.post.mjs.map +1 -1
  331. package/.output/server/chunks/routes/api/auth/send-verify-email.post.mjs +12 -0
  332. package/.output/server/chunks/routes/api/auth/send-verify-email.post.mjs.map +1 -1
  333. package/.output/server/chunks/routes/api/auth/setup.get.mjs +12 -0
  334. package/.output/server/chunks/routes/api/auth/setup.get.mjs.map +1 -1
  335. package/.output/server/chunks/routes/api/auth/setup.post.mjs +12 -0
  336. package/.output/server/chunks/routes/api/auth/setup.post.mjs.map +1 -1
  337. package/.output/server/chunks/routes/api/auth/verify-email.get.mjs +12 -0
  338. package/.output/server/chunks/routes/api/auth/verify-email.get.mjs.map +1 -1
  339. package/.output/server/chunks/routes/api/channels/_id/test.post.mjs +12 -0
  340. package/.output/server/chunks/routes/api/channels/_id/test.post.mjs.map +1 -1
  341. package/.output/server/chunks/routes/api/channels/_id_.delete.mjs +12 -0
  342. package/.output/server/chunks/routes/api/channels/_id_.delete.mjs.map +1 -1
  343. package/.output/server/chunks/routes/api/cluster-merge-suggestions/_id/approve.post.mjs +12 -0
  344. package/.output/server/chunks/routes/api/cluster-merge-suggestions/_id/approve.post.mjs.map +1 -1
  345. package/.output/server/chunks/routes/api/cluster-merge-suggestions/_id/reject.post.mjs +12 -0
  346. package/.output/server/chunks/routes/api/cluster-merge-suggestions/_id/reject.post.mjs.map +1 -1
  347. package/.output/server/chunks/routes/api/desktop/import-local.post.mjs +88 -0
  348. package/.output/server/chunks/routes/api/desktop/import-local.post.mjs.map +1 -0
  349. package/.output/server/chunks/routes/api/desktop/reporter-config.get.mjs +12 -0
  350. package/.output/server/chunks/routes/api/desktop/reporter-config.get.mjs.map +1 -1
  351. package/.output/server/chunks/routes/api/failure-clusters/_id/base-commit.patch.mjs +13 -1
  352. package/.output/server/chunks/routes/api/failure-clusters/_id/base-commit.patch.mjs.map +1 -1
  353. package/.output/server/chunks/routes/api/failure-clusters/_id/branches.get.mjs +13 -1
  354. package/.output/server/chunks/routes/api/failure-clusters/_id/branches.get.mjs.map +1 -1
  355. package/.output/server/chunks/routes/api/failure-clusters/_id/commit-diff.get.mjs +13 -1
  356. package/.output/server/chunks/routes/api/failure-clusters/_id/commit-diff.get.mjs.map +1 -1
  357. package/.output/server/chunks/routes/api/failure-clusters/_id/commits.get.mjs +13 -1
  358. package/.output/server/chunks/routes/api/failure-clusters/_id/commits.get.mjs.map +1 -1
  359. package/.output/server/chunks/routes/api/failure-clusters/_id/context.get.mjs +24 -1
  360. package/.output/server/chunks/routes/api/failure-clusters/_id/context.get.mjs.map +1 -1
  361. package/.output/server/chunks/routes/api/failure-clusters/_id/diagnose/stream.post.mjs +13 -1
  362. package/.output/server/chunks/routes/api/failure-clusters/_id/diagnose/stream.post.mjs.map +1 -1
  363. package/.output/server/chunks/routes/api/failure-clusters/_id/diagnose.post.mjs +13 -1
  364. package/.output/server/chunks/routes/api/failure-clusters/_id/diagnose.post.mjs.map +1 -1
  365. package/.output/server/chunks/routes/api/failure-clusters/_id/diagnoses.get.mjs +13 -1
  366. package/.output/server/chunks/routes/api/failure-clusters/_id/diagnoses.get.mjs.map +1 -1
  367. package/.output/server/chunks/routes/api/failure-clusters/_id/diagnosis.get.mjs +13 -1
  368. package/.output/server/chunks/routes/api/failure-clusters/_id/diagnosis.get.mjs.map +1 -1
  369. package/.output/server/chunks/routes/api/failure-clusters/_id/export.get.mjs +64 -0
  370. package/.output/server/chunks/routes/api/failure-clusters/_id/export.get.mjs.map +1 -0
  371. package/.output/server/chunks/routes/api/failure-clusters/_id/extract-cases.post.mjs +13 -1
  372. package/.output/server/chunks/routes/api/failure-clusters/_id/extract-cases.post.mjs.map +1 -1
  373. package/.output/server/chunks/routes/api/failure-clusters/_id/fix-plan.get.mjs +56 -0
  374. package/.output/server/chunks/routes/api/failure-clusters/_id/fix-plan.get.mjs.map +1 -0
  375. package/.output/server/chunks/routes/api/failure-clusters/_id/status.patch.mjs +13 -1
  376. package/.output/server/chunks/routes/api/failure-clusters/_id/status.patch.mjs.map +1 -1
  377. package/.output/server/chunks/routes/api/failure-clusters/_id_.get.mjs +13 -1
  378. package/.output/server/chunks/routes/api/failure-clusters/_id_.get.mjs.map +1 -1
  379. package/.output/server/chunks/routes/api/failure-diagnoses/_id/feedback.patch.mjs +13 -1
  380. package/.output/server/chunks/routes/api/failure-diagnoses/_id/feedback.patch.mjs.map +1 -1
  381. package/.output/server/chunks/routes/api/files/_...path_.get.mjs +13 -32
  382. package/.output/server/chunks/routes/api/files/_...path_.get.mjs.map +1 -1
  383. package/.output/server/chunks/routes/api/health.get.mjs +13 -1
  384. package/.output/server/chunks/routes/api/health.get.mjs.map +1 -1
  385. package/.output/server/chunks/routes/api/index.get.mjs +12 -0
  386. package/.output/server/chunks/routes/api/index.get.mjs.map +1 -1
  387. package/.output/server/chunks/routes/api/index.get2.mjs +13 -1
  388. package/.output/server/chunks/routes/api/index.get2.mjs.map +1 -1
  389. package/.output/server/chunks/routes/api/index.get3.mjs +13 -1
  390. package/.output/server/chunks/routes/api/index.get3.mjs.map +1 -1
  391. package/.output/server/chunks/routes/api/index.get4.mjs +13 -1
  392. package/.output/server/chunks/routes/api/index.get4.mjs.map +1 -1
  393. package/.output/server/chunks/routes/api/index.get5.mjs +12 -0
  394. package/.output/server/chunks/routes/api/index.get5.mjs.map +1 -1
  395. package/.output/server/chunks/routes/api/index.post.mjs +12 -0
  396. package/.output/server/chunks/routes/api/index.post.mjs.map +1 -1
  397. package/.output/server/chunks/routes/api/index.post2.mjs +13 -1
  398. package/.output/server/chunks/routes/api/index.post2.mjs.map +1 -1
  399. package/.output/server/chunks/routes/api/index.post3.mjs +13 -1
  400. package/.output/server/chunks/routes/api/index.post3.mjs.map +1 -1
  401. package/.output/server/chunks/routes/api/index.post4.mjs +13 -1
  402. package/.output/server/chunks/routes/api/index.post4.mjs.map +1 -1
  403. package/.output/server/chunks/routes/api/index.post5.mjs +13 -1
  404. package/.output/server/chunks/routes/api/index.post5.mjs.map +1 -1
  405. package/.output/server/chunks/routes/api/index.post6.mjs +12 -0
  406. package/.output/server/chunks/routes/api/index.post6.mjs.map +1 -1
  407. package/.output/server/chunks/routes/api/links/_id/refresh.post.mjs +13 -1
  408. package/.output/server/chunks/routes/api/links/_id/refresh.post.mjs.map +1 -1
  409. package/.output/server/chunks/routes/api/links/_id_.delete.mjs +13 -1
  410. package/.output/server/chunks/routes/api/links/_id_.delete.mjs.map +1 -1
  411. package/.output/server/chunks/routes/api/links/_id_.patch.mjs +13 -1
  412. package/.output/server/chunks/routes/api/links/_id_.patch.mjs.map +1 -1
  413. package/.output/server/chunks/routes/api/markers/_id_.delete.mjs +13 -1
  414. package/.output/server/chunks/routes/api/markers/_id_.delete.mjs.map +1 -1
  415. package/.output/server/chunks/routes/api/markers/_id_.put.mjs +13 -1
  416. package/.output/server/chunks/routes/api/markers/_id_.put.mjs.map +1 -1
  417. package/.output/server/chunks/routes/api/notifications/stream.get.mjs +13 -1
  418. package/.output/server/chunks/routes/api/notifications/stream.get.mjs.map +1 -1
  419. package/.output/server/chunks/routes/api/projects/_id/cluster-merge-suggestions.get.mjs +13 -1
  420. package/.output/server/chunks/routes/api/projects/_id/cluster-merge-suggestions.get.mjs.map +1 -1
  421. package/.output/server/chunks/routes/api/projects/_id/failure-clusters.get.mjs +13 -1
  422. package/.output/server/chunks/routes/api/projects/_id/failure-clusters.get.mjs.map +1 -1
  423. package/.output/server/chunks/routes/api/projects/_id/flaky-classify.post.mjs +13 -1
  424. package/.output/server/chunks/routes/api/projects/_id/flaky-classify.post.mjs.map +1 -1
  425. package/.output/server/chunks/routes/api/projects/_id/flaky-tests.get.mjs +22 -2
  426. package/.output/server/chunks/routes/api/projects/_id/flaky-tests.get.mjs.map +1 -1
  427. package/.output/server/chunks/routes/api/projects/_id/latest-run.get.mjs +13 -1
  428. package/.output/server/chunks/routes/api/projects/_id/latest-run.get.mjs.map +1 -1
  429. package/.output/server/chunks/routes/api/projects/_id/markers.get.mjs +13 -1
  430. package/.output/server/chunks/routes/api/projects/_id/markers.get.mjs.map +1 -1
  431. package/.output/server/chunks/routes/api/projects/_id/markers.post.mjs +13 -1
  432. package/.output/server/chunks/routes/api/projects/_id/markers.post.mjs.map +1 -1
  433. package/.output/server/chunks/routes/api/projects/_id/members.get.mjs +13 -1
  434. package/.output/server/chunks/routes/api/projects/_id/members.get.mjs.map +1 -1
  435. package/.output/server/chunks/routes/api/projects/_id/members.put.mjs +13 -1
  436. package/.output/server/chunks/routes/api/projects/_id/members.put.mjs.map +1 -1
  437. package/.output/server/chunks/routes/api/projects/_id/performance.get.mjs +13 -1
  438. package/.output/server/chunks/routes/api/projects/_id/performance.get.mjs.map +1 -1
  439. package/.output/server/chunks/routes/api/projects/_id/quarantine/_testCaseId_.delete.mjs +58 -0
  440. package/.output/server/chunks/routes/api/projects/_id/quarantine/_testCaseId_.delete.mjs.map +1 -0
  441. package/.output/server/chunks/routes/api/projects/_id/quarantine.get.mjs +57 -0
  442. package/.output/server/chunks/routes/api/projects/_id/quarantine.get.mjs.map +1 -0
  443. package/.output/server/chunks/routes/api/projects/_id/quarantine.post.mjs +72 -0
  444. package/.output/server/chunks/routes/api/projects/_id/quarantine.post.mjs.map +1 -0
  445. package/.output/server/chunks/routes/api/projects/_id/slow-tests.get.mjs +13 -1
  446. package/.output/server/chunks/routes/api/projects/_id/slow-tests.get.mjs.map +1 -1
  447. package/.output/server/chunks/routes/api/projects/_id/spec-health.get.mjs +13 -1
  448. package/.output/server/chunks/routes/api/projects/_id/spec-health.get.mjs.map +1 -1
  449. package/.output/server/chunks/routes/api/projects/_id/test-cases.get.mjs +13 -1
  450. package/.output/server/chunks/routes/api/projects/_id/test-cases.get.mjs.map +1 -1
  451. package/.output/server/chunks/routes/api/projects/_id/timeout-opportunities.get.mjs +13 -1
  452. package/.output/server/chunks/routes/api/projects/_id/timeout-opportunities.get.mjs.map +1 -1
  453. package/.output/server/chunks/routes/api/projects/_id_.delete.mjs +13 -1
  454. package/.output/server/chunks/routes/api/projects/_id_.delete.mjs.map +1 -1
  455. package/.output/server/chunks/routes/api/projects/_id_.get.mjs +13 -1
  456. package/.output/server/chunks/routes/api/projects/_id_.get.mjs.map +1 -1
  457. package/.output/server/chunks/routes/api/projects/_id_.put.mjs +13 -1
  458. package/.output/server/chunks/routes/api/projects/_id_.put.mjs.map +1 -1
  459. package/.output/server/chunks/routes/api/projects/menu.get.mjs +13 -1
  460. package/.output/server/chunks/routes/api/projects/menu.get.mjs.map +1 -1
  461. package/.output/server/chunks/routes/api/projects/overview.get.mjs +13 -1
  462. package/.output/server/chunks/routes/api/projects/overview.get.mjs.map +1 -1
  463. package/.output/server/chunks/routes/api/projects.get.mjs +13 -1
  464. package/.output/server/chunks/routes/api/projects.get.mjs.map +1 -1
  465. package/.output/server/chunks/routes/api/search.get.mjs +13 -1
  466. package/.output/server/chunks/routes/api/search.get.mjs.map +1 -1
  467. package/.output/server/chunks/routes/api/settings/ai/limits.get.mjs +13 -1
  468. package/.output/server/chunks/routes/api/settings/ai/limits.get.mjs.map +1 -1
  469. package/.output/server/chunks/routes/api/settings/ai/limits.put.mjs +13 -1
  470. package/.output/server/chunks/routes/api/settings/ai/limits.put.mjs.map +1 -1
  471. package/.output/server/chunks/routes/api/settings/ai/models.post.mjs +12 -0
  472. package/.output/server/chunks/routes/api/settings/ai/models.post.mjs.map +1 -1
  473. package/.output/server/chunks/routes/api/settings/ai/test.post.mjs +13 -1
  474. package/.output/server/chunks/routes/api/settings/ai/test.post.mjs.map +1 -1
  475. package/.output/server/chunks/routes/api/settings/ai/usage.get.mjs +13 -1
  476. package/.output/server/chunks/routes/api/settings/ai/usage.get.mjs.map +1 -1
  477. package/.output/server/chunks/routes/api/settings/ai.get.mjs +13 -1
  478. package/.output/server/chunks/routes/api/settings/ai.get.mjs.map +1 -1
  479. package/.output/server/chunks/routes/api/settings/ai.put.mjs +13 -1
  480. package/.output/server/chunks/routes/api/settings/ai.put.mjs.map +1 -1
  481. package/.output/server/chunks/routes/api/settings/pr-feedback.get.mjs +57 -0
  482. package/.output/server/chunks/routes/api/settings/pr-feedback.get.mjs.map +1 -0
  483. package/.output/server/chunks/routes/api/settings/pr-feedback.put.mjs +63 -0
  484. package/.output/server/chunks/routes/api/settings/pr-feedback.put.mjs.map +1 -0
  485. package/.output/server/chunks/routes/api/settings/smtp/test.post.mjs +12 -0
  486. package/.output/server/chunks/routes/api/settings/smtp/test.post.mjs.map +1 -1
  487. package/.output/server/chunks/routes/api/settings/smtp.get.mjs +13 -1
  488. package/.output/server/chunks/routes/api/settings/smtp.get.mjs.map +1 -1
  489. package/.output/server/chunks/routes/api/settings/timeout-hygiene.get.mjs +13 -1
  490. package/.output/server/chunks/routes/api/settings/timeout-hygiene.get.mjs.map +1 -1
  491. package/.output/server/chunks/routes/api/settings/timeout-hygiene.put.mjs +13 -1
  492. package/.output/server/chunks/routes/api/settings/timeout-hygiene.put.mjs.map +1 -1
  493. package/.output/server/chunks/routes/api/settings/wasted-waits.get.mjs +13 -1
  494. package/.output/server/chunks/routes/api/settings/wasted-waits.get.mjs.map +1 -1
  495. package/.output/server/chunks/routes/api/settings/wasted-waits.put.mjs +13 -1
  496. package/.output/server/chunks/routes/api/settings/wasted-waits.put.mjs.map +1 -1
  497. package/.output/server/chunks/routes/api/stream.get.mjs +13 -1
  498. package/.output/server/chunks/routes/api/stream.get.mjs.map +1 -1
  499. package/.output/server/chunks/routes/api/subscriptions/_id_.delete.mjs +13 -1
  500. package/.output/server/chunks/routes/api/subscriptions/_id_.delete.mjs.map +1 -1
  501. package/.output/server/chunks/routes/api/subscriptions/_id_.patch.mjs +13 -1
  502. package/.output/server/chunks/routes/api/subscriptions/_id_.patch.mjs.map +1 -1
  503. package/.output/server/chunks/routes/api/tags/_id_.delete.mjs +13 -1
  504. package/.output/server/chunks/routes/api/tags/_id_.delete.mjs.map +1 -1
  505. package/.output/server/chunks/routes/api/tags/_id_.put.mjs +13 -1
  506. package/.output/server/chunks/routes/api/tags/_id_.put.mjs.map +1 -1
  507. package/.output/server/chunks/routes/api/test-cases/_id/history.get.mjs +13 -1
  508. package/.output/server/chunks/routes/api/test-cases/_id/history.get.mjs.map +1 -1
  509. package/.output/server/chunks/routes/api/test-cases/_id/stability-trend.get.mjs +13 -1
  510. package/.output/server/chunks/routes/api/test-cases/_id/stability-trend.get.mjs.map +1 -1
  511. package/.output/server/chunks/routes/api/test-cases/_id_.get.mjs +13 -1
  512. package/.output/server/chunks/routes/api/test-cases/_id_.get.mjs.map +1 -1
  513. package/.output/server/chunks/routes/api/test-run-cases/_id/diagnose.post.mjs +13 -1
  514. package/.output/server/chunks/routes/api/test-run-cases/_id/diagnose.post.mjs.map +1 -1
  515. package/.output/server/chunks/routes/api/test-run-cases/_id/diagnosis-context.get.mjs +25 -3
  516. package/.output/server/chunks/routes/api/test-run-cases/_id/diagnosis-context.get.mjs.map +1 -1
  517. package/.output/server/chunks/routes/api/test-run-cases/_id/diagnosis.get.mjs +13 -1
  518. package/.output/server/chunks/routes/api/test-run-cases/_id/diagnosis.get.mjs.map +1 -1
  519. package/.output/server/chunks/routes/api/test-run-cases/_id/export.get.mjs +60 -0
  520. package/.output/server/chunks/routes/api/test-run-cases/_id/export.get.mjs.map +1 -0
  521. package/.output/server/chunks/routes/api/test-run-cases/_id/traces.get.mjs +13 -1
  522. package/.output/server/chunks/routes/api/test-run-cases/_id/traces.get.mjs.map +1 -1
  523. package/.output/server/chunks/routes/api/test-run-cases/_id_.get.mjs +13 -1
  524. package/.output/server/chunks/routes/api/test-run-cases/_id_.get.mjs.map +1 -1
  525. package/.output/server/chunks/routes/api/test-runs/_id/begin.post.mjs +13 -1
  526. package/.output/server/chunks/routes/api/test-runs/_id/begin.post.mjs.map +1 -1
  527. package/.output/server/chunks/routes/api/test-runs/_id/case-files.post.mjs +13 -1
  528. package/.output/server/chunks/routes/api/test-runs/_id/case-files.post.mjs.map +1 -1
  529. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/dom-snapshot.get.mjs +17 -3
  530. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/dom-snapshot.get.mjs.map +1 -1
  531. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/environment-diff.get.mjs +13 -1
  532. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/environment-diff.get.mjs.map +1 -1
  533. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/locator-healing.get.mjs +13 -1
  534. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/locator-healing.get.mjs.map +1 -1
  535. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/locator-pick.post.mjs +13 -1
  536. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/locator-pick.post.mjs.map +1 -1
  537. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/trace-network-body.get.mjs +13 -1
  538. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/trace-network-body.get.mjs.map +1 -1
  539. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/trace-network.get.mjs +13 -1
  540. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/trace-network.get.mjs.map +1 -1
  541. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/trace-stacks.get.mjs +13 -1
  542. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/trace-stacks.get.mjs.map +1 -1
  543. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/visual-diff.get.mjs +13 -1
  544. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/visual-diff.get.mjs.map +1 -1
  545. package/.output/server/chunks/routes/api/test-runs/_id/events.post.mjs +13 -1
  546. package/.output/server/chunks/routes/api/test-runs/_id/events.post.mjs.map +1 -1
  547. package/.output/server/chunks/routes/api/test-runs/_id/failure-groups.get.mjs +13 -1
  548. package/.output/server/chunks/routes/api/test-runs/_id/failure-groups.get.mjs.map +1 -1
  549. package/.output/server/chunks/routes/api/test-runs/_id/finish.post.mjs +15 -1
  550. package/.output/server/chunks/routes/api/test-runs/_id/finish.post.mjs.map +1 -1
  551. package/.output/server/chunks/routes/api/test-runs/_id/gate.post.mjs +196 -0
  552. package/.output/server/chunks/routes/api/test-runs/_id/gate.post.mjs.map +1 -0
  553. package/.output/server/chunks/routes/api/test-runs/_id/heartbeat.post.mjs +13 -1
  554. package/.output/server/chunks/routes/api/test-runs/_id/heartbeat.post.mjs.map +1 -1
  555. package/.output/server/chunks/routes/api/test-runs/_id/insights.get.mjs +13 -1
  556. package/.output/server/chunks/routes/api/test-runs/_id/insights.get.mjs.map +1 -1
  557. package/.output/server/chunks/routes/api/test-runs/_id/network-requests.get.mjs +13 -1
  558. package/.output/server/chunks/routes/api/test-runs/_id/network-requests.get.mjs.map +1 -1
  559. package/.output/server/chunks/routes/api/test-runs/_id/regression-context.get.mjs +13 -1
  560. package/.output/server/chunks/routes/api/test-runs/_id/regression-context.get.mjs.map +1 -1
  561. package/.output/server/chunks/routes/api/test-runs/_id/stream.get.mjs +13 -1
  562. package/.output/server/chunks/routes/api/test-runs/_id/stream.get.mjs.map +1 -1
  563. package/.output/server/chunks/routes/api/test-runs/_id/summary.get.mjs +13 -1
  564. package/.output/server/chunks/routes/api/test-runs/_id/summary.get.mjs.map +1 -1
  565. package/.output/server/chunks/routes/api/test-runs/_id_.delete.mjs +13 -1
  566. package/.output/server/chunks/routes/api/test-runs/_id_.delete.mjs.map +1 -1
  567. package/.output/server/chunks/routes/api/test-runs/_id_.get.mjs +13 -1
  568. package/.output/server/chunks/routes/api/test-runs/_id_.get.mjs.map +1 -1
  569. package/.output/server/chunks/routes/api/test-runs/_id_.patch.mjs +13 -1
  570. package/.output/server/chunks/routes/api/test-runs/_id_.patch.mjs.map +1 -1
  571. package/.output/server/chunks/routes/api/test-runs/import/check.post.mjs +77 -0
  572. package/.output/server/chunks/routes/api/test-runs/import/check.post.mjs.map +1 -0
  573. package/.output/server/chunks/routes/api/test-runs/import.post.mjs +77 -0
  574. package/.output/server/chunks/routes/api/test-runs/import.post.mjs.map +1 -0
  575. package/.output/server/chunks/routes/api/test-runs/recent.get.mjs +13 -1
  576. package/.output/server/chunks/routes/api/test-runs/recent.get.mjs.map +1 -1
  577. package/.output/server/chunks/routes/api/test-runs/setup.post.mjs +13 -1
  578. package/.output/server/chunks/routes/api/test-runs/setup.post.mjs.map +1 -1
  579. package/.output/server/chunks/routes/api/test-runs/start.post.mjs +13 -1
  580. package/.output/server/chunks/routes/api/test-runs/start.post.mjs.map +1 -1
  581. package/.output/server/chunks/routes/api/test-runs/submit.post.mjs +32 -15
  582. package/.output/server/chunks/routes/api/test-runs/submit.post.mjs.map +1 -1
  583. package/.output/server/chunks/routes/api/test-runs/upload.post.mjs +21 -6
  584. package/.output/server/chunks/routes/api/test-runs/upload.post.mjs.map +1 -1
  585. package/.output/server/chunks/routes/api/tests/cleanup.delete.mjs +156 -3
  586. package/.output/server/chunks/routes/api/tests/cleanup.delete.mjs.map +1 -1
  587. package/.output/server/chunks/routes/api/traces/check.post.mjs +13 -1
  588. package/.output/server/chunks/routes/api/traces/check.post.mjs.map +1 -1
  589. package/.output/server/chunks/routes/api/users/_id/api-keys/_keyId_.delete.mjs +12 -0
  590. package/.output/server/chunks/routes/api/users/_id/api-keys/_keyId_.delete.mjs.map +1 -1
  591. package/.output/server/chunks/routes/api/users/_id/index.get.mjs +12 -0
  592. package/.output/server/chunks/routes/api/users/_id/index.get.mjs.map +1 -1
  593. package/.output/server/chunks/routes/api/users/_id/index.post.mjs +13 -1
  594. package/.output/server/chunks/routes/api/users/_id/index.post.mjs.map +1 -1
  595. package/.output/server/chunks/routes/api/users/_id/invite.post.mjs +13 -1
  596. package/.output/server/chunks/routes/api/users/_id/invite.post.mjs.map +1 -1
  597. package/.output/server/chunks/routes/api/users/_id/projects.get.mjs +13 -1
  598. package/.output/server/chunks/routes/api/users/_id/projects.get.mjs.map +1 -1
  599. package/.output/server/chunks/routes/api/users/_id/projects.put.mjs +13 -1
  600. package/.output/server/chunks/routes/api/users/_id/projects.put.mjs.map +1 -1
  601. package/.output/server/chunks/routes/api/users/_id_.delete.mjs +12 -0
  602. package/.output/server/chunks/routes/api/users/_id_.delete.mjs.map +1 -1
  603. package/.output/server/chunks/routes/api/users/_id_.patch.mjs +12 -0
  604. package/.output/server/chunks/routes/api/users/_id_.patch.mjs.map +1 -1
  605. package/.output/server/chunks/routes/api/version.get.mjs +13 -1
  606. package/.output/server/chunks/routes/api/version.get.mjs.map +1 -1
  607. package/.output/server/chunks/routes/mcp.post.mjs +13 -1
  608. package/.output/server/chunks/routes/mcp.post.mjs.map +1 -1
  609. package/.output/server/chunks/routes/renderer.mjs +1 -1
  610. package/.output/server/chunks/tasks/sweep.mjs +12 -0
  611. package/.output/server/chunks/tasks/sweep.mjs.map +1 -1
  612. package/.output/server/chunks/tasks/sweep2.mjs +12 -0
  613. package/.output/server/chunks/tasks/sweep2.mjs.map +1 -1
  614. package/.output/server/database/migrations/0039_remarkable_jean_grey.sql +2 -0
  615. package/.output/server/database/migrations/0040_organic_phalanx.sql +8 -0
  616. package/.output/server/database/migrations/0041_tense_gravity.sql +5 -0
  617. package/.output/server/database/migrations/0042_burly_hemingway.sql +19 -0
  618. package/.output/server/database/migrations/meta/0039_snapshot.json +3403 -0
  619. package/.output/server/database/migrations/meta/0040_snapshot.json +3457 -0
  620. package/.output/server/database/migrations/meta/0041_snapshot.json +3492 -0
  621. package/.output/server/database/migrations/meta/0042_snapshot.json +3618 -0
  622. package/.output/server/database/migrations/meta/_journal.json +28 -0
  623. package/.output/server/database/migrations-pg/0040_lazy_layla_miller.sql +2 -0
  624. package/.output/server/database/migrations-pg/0041_light_screwball.sql +8 -0
  625. package/.output/server/database/migrations-pg/0042_serious_layla_miller.sql +5 -0
  626. package/.output/server/database/migrations-pg/0043_wonderful_mordo.sql +19 -0
  627. package/.output/server/database/migrations-pg/meta/0040_snapshot.json +4060 -0
  628. package/.output/server/database/migrations-pg/meta/0041_snapshot.json +4123 -0
  629. package/.output/server/database/migrations-pg/meta/0042_snapshot.json +4153 -0
  630. package/.output/server/database/migrations-pg/meta/0043_snapshot.json +4308 -0
  631. package/.output/server/database/migrations-pg/meta/_journal.json +28 -0
  632. package/.output/server/index.mjs +13 -1
  633. package/.output/server/index.mjs.map +1 -1
  634. package/.output/server/node_modules/fflate/esm/index.mjs +2710 -0
  635. package/.output/server/node_modules/fflate/package.json +128 -0
  636. package/.output/server/node_modules/highlight.js/es/languages/yaml.js +213 -0
  637. package/.output/server/node_modules/marked/lib/marked.esm.js +72 -0
  638. package/.output/server/node_modules/marked/package.json +103 -0
  639. package/.output/server/package.json +3 -1
  640. package/package.json +2 -2
  641. package/.output/public/_nuxt/9-wVZMur.js +0 -4
  642. package/.output/public/_nuxt/B-5GukRk.js +0 -1
  643. package/.output/public/_nuxt/B1G3GGhQ.js +0 -1
  644. package/.output/public/_nuxt/B1zMFx24.js +0 -1
  645. package/.output/public/_nuxt/B4jvLMfS.js +0 -1
  646. package/.output/public/_nuxt/BBnX5xw4.js +0 -2
  647. package/.output/public/_nuxt/BHpUiv6j.js +0 -3
  648. package/.output/public/_nuxt/BLOUs6AE.js +0 -5
  649. package/.output/public/_nuxt/BT6p4Pgt.js +0 -2
  650. package/.output/public/_nuxt/BUXSUkJ_.js +0 -1
  651. package/.output/public/_nuxt/BVf6Yx9V.js +0 -26
  652. package/.output/public/_nuxt/BbS6Bwby.js +0 -1
  653. package/.output/public/_nuxt/Bd3HqPMF.js +0 -1
  654. package/.output/public/_nuxt/BeKvLsja.js +0 -2
  655. package/.output/public/_nuxt/BeUm5UNV.js +0 -1
  656. package/.output/public/_nuxt/BfV444H3.js +0 -3
  657. package/.output/public/_nuxt/BjKamgHq.js +0 -1
  658. package/.output/public/_nuxt/BoJdjCVl.js +0 -4
  659. package/.output/public/_nuxt/BreO2PiA.js +0 -1
  660. package/.output/public/_nuxt/BvIDC_R-.js +0 -1
  661. package/.output/public/_nuxt/ByuJWADR.js +0 -34
  662. package/.output/public/_nuxt/C1dyLp_j.js +0 -1
  663. package/.output/public/_nuxt/CAUgpKsF.js +0 -2
  664. package/.output/public/_nuxt/CL9-VLTJ.js +0 -1
  665. package/.output/public/_nuxt/CazDIG_m.js +0 -1
  666. package/.output/public/_nuxt/CcXaak_K.js +0 -1
  667. package/.output/public/_nuxt/CdMuck_X.js +0 -1
  668. package/.output/public/_nuxt/CfPSts5n.js +0 -1
  669. package/.output/public/_nuxt/CfROFPse.js +0 -1
  670. package/.output/public/_nuxt/Cnapl7lZ.js +0 -1
  671. package/.output/public/_nuxt/CscWZxCi.js +0 -1
  672. package/.output/public/_nuxt/CuicKV-B.js +0 -34
  673. package/.output/public/_nuxt/Cyiu1VQD.js +0 -1
  674. package/.output/public/_nuxt/D6PUPmRC.js +0 -1
  675. package/.output/public/_nuxt/DCl2yo4g.js +0 -8
  676. package/.output/public/_nuxt/DHXWp5yD.js +0 -1
  677. package/.output/public/_nuxt/DHltYerF.js +0 -114
  678. package/.output/public/_nuxt/DLXydYJb.js +0 -47
  679. package/.output/public/_nuxt/DRPSi76A.js +0 -1
  680. package/.output/public/_nuxt/DS53kyHJ.js +0 -1
  681. package/.output/public/_nuxt/DWhBqv_7.js +0 -1
  682. package/.output/public/_nuxt/Dd0kK5WH.js +0 -1
  683. package/.output/public/_nuxt/Df7kUO0m.js +0 -1
  684. package/.output/public/_nuxt/Dga3Av-m.js +0 -1
  685. package/.output/public/_nuxt/DgwTpwfB.js +0 -1
  686. package/.output/public/_nuxt/DkI145a5.js +0 -1
  687. package/.output/public/_nuxt/DoFBTaDR.js +0 -1
  688. package/.output/public/_nuxt/Dr_dI5hB.js +0 -1
  689. package/.output/public/_nuxt/EPZOxdgq.js +0 -1
  690. package/.output/public/_nuxt/R1nNqTru.js +0 -1
  691. package/.output/public/_nuxt/S5DLdEpg.js +0 -4
  692. package/.output/public/_nuxt/builds/meta/7caf3cb3-d272-4dbd-bb3f-1eeb64fab5d1.json +0 -1
  693. package/.output/public/_nuxt/entry.ChQMshd4.css +0 -1
  694. package/.output/public/_nuxt/gCELhaU9.js +0 -1
  695. package/.output/public/_nuxt/ipDzNHcs.js +0 -5
  696. package/.output/public/_nuxt/kS3boz40.js +0 -1
  697. package/.output/public/_nuxt/qH_j2A3a.js +0 -1
  698. package/.output/public/_nuxt/r3SBLxtE.js +0 -1
  699. package/.output/public/_nuxt/rsiRgrVM.js +0 -1
  700. package/.output/public/_nuxt/swrbBdtB.js +0 -1
  701. package/.output/public/sw.js +0 -1
  702. package/.output/public/workbox-2fbc6a65.js +0 -1
  703. package/.output/server/chunks/build/Alert-Bp1Wz_sq.mjs.map +0 -1
  704. package/.output/server/chunks/build/Breadcrumb-C9ZPTLym.mjs.map +0 -1
  705. package/.output/server/chunks/build/BreadcrumbNav-C3y42Vun.mjs.map +0 -1
  706. package/.output/server/chunks/build/BrowserBadge-DNCp9pF-.mjs.map +0 -1
  707. package/.output/server/chunks/build/ChartCard-Fr557IbV.mjs.map +0 -1
  708. package/.output/server/chunks/build/Checkbox-cVOSIY93.mjs.map +0 -1
  709. package/.output/server/chunks/build/CiEnvCard-DXPOhdSG.mjs +0 -640
  710. package/.output/server/chunks/build/CiEnvCard-DXPOhdSG.mjs.map +0 -1
  711. package/.output/server/chunks/build/CodeBlock-BGwNmJ8J.mjs.map +0 -1
  712. package/.output/server/chunks/build/DashboardNavbar-Bdp-OwTN.mjs.map +0 -1
  713. package/.output/server/chunks/build/DashboardSidebarToggle-Ji6ADuqF.mjs.map +0 -1
  714. package/.output/server/chunks/build/DataLocationCard-D6xSOrme.mjs.map +0 -1
  715. package/.output/server/chunks/build/DiagnosisPanel-DV1xwGu4.mjs.map +0 -1
  716. package/.output/server/chunks/build/EmptyState-DV3oT_xz.mjs.map +0 -1
  717. package/.output/server/chunks/build/EntityLinks-DeOP13Kr.mjs.map +0 -1
  718. package/.output/server/chunks/build/EnvManagedBadge-Qpn58Nmr.mjs.map +0 -1
  719. package/.output/server/chunks/build/FormField-B-GSn_VR.mjs.map +0 -1
  720. package/.output/server/chunks/build/HelpHint-YEMWtKu1.mjs.map +0 -1
  721. package/.output/server/chunks/build/Label-DBvbHd3A.mjs.map +0 -1
  722. package/.output/server/chunks/build/MiniRunBars-C3HG-EYm.mjs.map +0 -1
  723. package/.output/server/chunks/build/Modal-CfA78Hm1.mjs.map +0 -1
  724. package/.output/server/chunks/build/PageStateCard-Bwee6JTk.mjs.map +0 -1
  725. package/.output/server/chunks/build/ProjectTestCasesTable-9Ia825h8.mjs.map +0 -1
  726. package/.output/server/chunks/build/RovingFocusItem-CxhHdNGo.mjs.map +0 -1
  727. package/.output/server/chunks/build/RunReports-BpJqLHY9.mjs.map +0 -1
  728. package/.output/server/chunks/build/RunStatusBadge-BhmJ_RKM.mjs.map +0 -1
  729. package/.output/server/chunks/build/SectionCard-COd9TuDq.mjs.map +0 -1
  730. package/.output/server/chunks/build/Select-ppPz926C.mjs.map +0 -1
  731. package/.output/server/chunks/build/Separator-CxZdx8kw.mjs.map +0 -1
  732. package/.output/server/chunks/build/SettingsField-DDD4oqys.mjs.map +0 -1
  733. package/.output/server/chunks/build/Slideover-B95Rj237.mjs.map +0 -1
  734. package/.output/server/chunks/build/Switch-xQQ3_ME1.mjs.map +0 -1
  735. package/.output/server/chunks/build/Table-CPhhVzDv.mjs.map +0 -1
  736. package/.output/server/chunks/build/Tabs-BV9XqjoO.mjs.map +0 -1
  737. package/.output/server/chunks/build/TagBadge-BDcvvGxw.mjs +0 -47
  738. package/.output/server/chunks/build/TagBadge-BDcvvGxw.mjs.map +0 -1
  739. package/.output/server/chunks/build/TestCaseHistoryChart-DMb-xSJa.mjs.map +0 -1
  740. package/.output/server/chunks/build/TestStatusBar-CEzt76wk.mjs.map +0 -1
  741. package/.output/server/chunks/build/Textarea-DrrqQUVG.mjs.map +0 -1
  742. package/.output/server/chunks/build/Tooltip-7vwuDPrZ.mjs.map +0 -1
  743. package/.output/server/chunks/build/VisuallyHiddenInput-C9eJVpPW.mjs.map +0 -1
  744. package/.output/server/chunks/build/_id_-B2yirIuA.mjs.map +0 -1
  745. package/.output/server/chunks/build/_id_-CE0Gso6i.mjs.map +0 -1
  746. package/.output/server/chunks/build/_id_-bWcP2xFl.mjs.map +0 -1
  747. package/.output/server/chunks/build/about-CoJjvUwM.mjs.map +0 -1
  748. package/.output/server/chunks/build/account-Cn-eZqXM.mjs.map +0 -1
  749. package/.output/server/chunks/build/analytics-B276WPeU.mjs.map +0 -1
  750. package/.output/server/chunks/build/db.client-aHcD0wyX.mjs.map +0 -1
  751. package/.output/server/chunks/build/default-BSzdkM_L.mjs.map +0 -1
  752. package/.output/server/chunks/build/edit-C9Z7oZeu.mjs.map +0 -1
  753. package/.output/server/chunks/build/fetch-8kznMtBM.mjs.map +0 -1
  754. package/.output/server/chunks/build/forgot-password-BqPF4Rxs.mjs.map +0 -1
  755. package/.output/server/chunks/build/help-content-DmFnuhNu.mjs.map +0 -1
  756. package/.output/server/chunks/build/index-BR9hw6qk.mjs.map +0 -1
  757. package/.output/server/chunks/build/index-Ba-Fifra.mjs.map +0 -1
  758. package/.output/server/chunks/build/index-CULN3-en.mjs.map +0 -1
  759. package/.output/server/chunks/build/index-DVUtBexc.mjs.map +0 -1
  760. package/.output/server/chunks/build/isValueEqualOrExist-DBZjbD_3.mjs.map +0 -1
  761. package/.output/server/chunks/build/login-D2XZDuek.mjs.map +0 -1
  762. package/.output/server/chunks/build/mcp-_o6cMS6m.mjs.map +0 -1
  763. package/.output/server/chunks/build/notifications-Dzm9c0u_.mjs.map +0 -1
  764. package/.output/server/chunks/build/reset-password-gpFzIEDj.mjs.map +0 -1
  765. package/.output/server/chunks/build/settings-metadata-B0wo5R-W.mjs.map +0 -1
  766. package/.output/server/chunks/build/settings-pNyPBXVa.mjs.map +0 -1
  767. package/.output/server/chunks/build/storage-XelzuyPy.mjs.map +0 -1
  768. package/.output/server/chunks/build/tags-DrCQ7QSw.mjs.map +0 -1
  769. package/.output/server/chunks/build/test-cases-pmOxi-AN.mjs.map +0 -1
  770. package/.output/server/chunks/build/timeout-hygiene-CNs71Iah.mjs.map +0 -1
  771. package/.output/server/chunks/build/useAiStatus-ZO987RY7.mjs.map +0 -1
  772. package/.output/server/chunks/build/useCopy-BQQKcwlq.mjs.map +0 -1
  773. package/.output/server/chunks/build/useFormControl-BLpq1s4O.mjs.map +0 -1
  774. package/.output/server/chunks/build/useOpenInIde-kMZ7Jw5c.mjs.map +0 -1
  775. package/.output/server/chunks/build/useSettingsNav-NjI2seBy.mjs.map +0 -1
  776. package/.output/server/chunks/build/useTauri-lRT8zkLv.mjs +0 -7
  777. package/.output/server/chunks/build/useTauri-lRT8zkLv.mjs.map +0 -1
  778. package/.output/server/chunks/build/useTreeViewCookie-DVYpxW-p.mjs.map +0 -1
  779. package/.output/server/chunks/build/users-NmAUZs3i.mjs.map +0 -1
  780. package/.output/server/chunks/build/virtualizer-ZaqK4guJ.mjs +0 -940
  781. package/.output/server/chunks/build/virtualizer-ZaqK4guJ.mjs.map +0 -1
  782. package/.output/server/chunks/build/wasted-time-CguAF9zc.mjs.map +0 -1
  783. /package/.output/public/_nuxt/{PageStateCard.BrM5HWjY.css → useCopyRich.BrM5HWjY.css} +0 -0
@@ -1,26 +0,0 @@
1
- import{r as Y,d as ne,o as i,c as r,k as t,i as d,T as he,j as k,v as se,_ as ge,h as $,O as ye,F as L,y as K,t as f,q as h,b as xe,m as w,p as V,B as ae,f as F,g as G,G as Me,am as Oe,l as ze,I as Le,s as Be,an as De}from"./DHltYerF.js";import{_ as pe}from"./DHXWp5yD.js";import{_ as Fe}from"./B-5GukRk.js";import{u as ve}from"./By4YL7mx.js";import{_ as Pe}from"./B2oUeBbA.js";import{_ as Ue}from"./swrbBdtB.js";import{H as D,j as je,t as He,b as Ge,a as Ve,d as Ke,_ as qe}from"./BHpUiv6j.js";import{_ as We}from"./BeFDVhpA.js";import{f as Xe}from"./BeKvLsja.js";function Ze(e,u=!1){const s=Y(u);try{const l=document.cookie.match(new RegExp(`(?:^|;\\s*)${e}=([^;]*)`));l&&(s.value=l[1]==="true")}catch{}function y(){document.cookie=`${e}=${s.value}; path=/; max-age=31536000; sameSite=lax`}function v(){s.value=!s.value,y()}function g(l){s.value=l,y()}return{folded:s,toggle:v,setFolded:g}}function Ye(e){return Ze(`piwi-summary-fold-${e}`,!1)}const Je={class:"flex items-center gap-3"},Qe={class:"ml-auto shrink-0"},et={key:1,class:"relative"},tt={class:"absolute top-1 right-1 z-10"},nt=ne({__name:"FoldableSummary",props:{storageKey:{}},setup(e){const u=e,{folded:s,toggle:y}=Ye(u.storageKey);return(v,g)=>{const l=se,a=ge;return i(),r("div",null,[t(s)?(i(),r("div",{key:0,class:"border border-gray-200 dark:border-gray-800 rounded-xl p-2.5 shadow-xs cursor-pointer select-none",onClick:g[0]||(g[0]=(...x)=>t(y)&&t(y)(...x))},[d("div",Je,[he(v.$slots,"folded"),d("div",Qe,[k(l,{name:"i-lucide-chevron-down",class:"size-4 text-gray-400"})])])])):(i(),r("div",et,[d("div",tt,[k(a,{icon:"i-lucide-chevron-up",size:"xs",color:"neutral",variant:"ghost",onClick:t(y),title:"Collapse summary"},null,8,["onClick"])]),he(v.$slots,"default")]))])}}}),ls=Object.assign(nt,{__name:"FoldableSummary"});function cs(e){const u=$(e),s=$(()=>{const v=u.value;return v===0||v>=5?"lg:col-span-12":v===4?"lg:col-span-4":v===1?"lg:col-span-9":"lg:col-span-6"}),y=$(()=>{const v=u.value;return v===0?"":v===3||v===4?"lg:col-span-2":"lg:col-span-3"});return{metadataBlockCount:u,summaryColSpanClass:s,blockColSpanClass:y}}const st=new Set([".png",".jpg",".jpeg",".gif",".svg",".webp"]),it=new Set(["image/png","image/jpeg","image/gif","image/svg+xml","image/webp"]),ot=new Set([".webm",".mp4",".ogg",".mov"]),at=new Set(["video/webm","video/mp4","video/ogg","video/quicktime"]);function ds(e,u){const s="."+(e.toLowerCase().split(".").pop()||"");return!!(st.has(s)||u&&it.has(u.toLowerCase()))}function us(e,u){const s="."+(e.toLowerCase().split(".").pop()||"");return!!(ot.has(s)||u&&at.has(u.toLowerCase()))}function gs(e){return e.replace(/\x1b\[[0-9;]*[a-zA-Z]/g,"")}function rt(e){const u=e.regex,s=new RegExp("[\\p{XID_Start}_]\\p{XID_Continue}*","u"),y=["and","as","assert","async","await","break","case","class","continue","def","del","elif","else","except","finally","for","from","global","if","import","in","is","lambda","match","nonlocal|10","not","or","pass","raise","return","try","while","with","yield"],a={$pattern:/[A-Za-z]\w+|__\w+__/,keyword:y,built_in:["__import__","abs","all","any","ascii","bin","bool","breakpoint","bytearray","bytes","callable","chr","classmethod","compile","complex","delattr","dict","dir","divmod","enumerate","eval","exec","filter","float","format","frozenset","getattr","globals","hasattr","hash","help","hex","id","input","int","isinstance","issubclass","iter","len","list","locals","map","max","memoryview","min","next","object","oct","open","ord","pow","print","property","range","repr","reversed","round","set","setattr","slice","sorted","staticmethod","str","sum","super","tuple","type","vars","zip"],literal:["__debug__","Ellipsis","False","None","NotImplemented","True"],type:["Any","Callable","Coroutine","Dict","List","Literal","Generic","Optional","Sequence","Set","Tuple","Type","Union"]},x={className:"meta",begin:/^(>>>|\.\.\.) /},p={className:"subst",begin:/\{/,end:/\}/,keywords:a,illegal:/#/},E={begin:/\{\{/,relevance:0},S={className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?'''/,end:/'''/,contains:[e.BACKSLASH_ESCAPE,x],relevance:10},{begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?"""/,end:/"""/,contains:[e.BACKSLASH_ESCAPE,x],relevance:10},{begin:/([fF][rR]|[rR][fF]|[fF])'''/,end:/'''/,contains:[e.BACKSLASH_ESCAPE,x,E,p]},{begin:/([fF][rR]|[rR][fF]|[fF])"""/,end:/"""/,contains:[e.BACKSLASH_ESCAPE,x,E,p]},{begin:/([uU]|[rR])'/,end:/'/,relevance:10},{begin:/([uU]|[rR])"/,end:/"/,relevance:10},{begin:/([bB]|[bB][rR]|[rR][bB])'/,end:/'/},{begin:/([bB]|[bB][rR]|[rR][bB])"/,end:/"/},{begin:/([fF][rR]|[rR][fF]|[fF])'/,end:/'/,contains:[e.BACKSLASH_ESCAPE,E,p]},{begin:/([fF][rR]|[rR][fF]|[fF])"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,E,p]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},A="[0-9](_?[0-9])*",U=`(\\b(${A}))?\\.(${A})|\\b(${A})\\.`,N=`\\b|${y.join("|")}`,q={className:"number",relevance:0,variants:[{begin:`(\\b(${A})|(${U}))[eE][+-]?(${A})[jJ]?(?=${N})`},{begin:`(${U})[jJ]?`},{begin:`\\b([1-9](_?[0-9])*|0+(_?0)*)[lLjJ]?(?=${N})`},{begin:`\\b0[bB](_?[01])+[lL]?(?=${N})`},{begin:`\\b0[oO](_?[0-7])+[lL]?(?=${N})`},{begin:`\\b0[xX](_?[0-9a-fA-F])+[lL]?(?=${N})`},{begin:`\\b(${A})[jJ](?=${N})`}]},b={className:"comment",begin:u.lookahead(/# type:/),end:/$/,keywords:a,contains:[{begin:/# type:/},{begin:/#/,end:/\b\B/,endsWithParent:!0}]},m={className:"params",variants:[{className:"",begin:/\(\s*\)/,skip:!0},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:a,contains:["self",x,q,S,e.HASH_COMMENT_MODE]}]};return p.contains=[S,q,x],{name:"Python",aliases:["py","gyp","ipython"],unicodeRegex:!0,keywords:a,illegal:/(<\/|\?)|=>/,contains:[x,q,{scope:"variable.language",match:/\bself\b/},{beginKeywords:"if",relevance:0},{match:/\bor\b/,scope:"keyword"},S,b,e.HASH_COMMENT_MODE,{match:[/\bdef/,/\s+/,s],scope:{1:"keyword",3:"title.function"},contains:[m]},{variants:[{match:[/\bclass/,/\s+/,s,/\s*/,/\(\s*/,s,/\s*\)/]},{match:[/\bclass/,/\s+/,s]}],scope:{1:"keyword",3:"title.class",6:"title.class.inherited"}},{className:"meta",begin:/^[\t ]*@/,end:/(?=#)|$/,contains:[q,m,S]}]}}const lt=e=>({IMPORTANT:{scope:"meta",begin:"!important"},BLOCK_COMMENT:e.C_BLOCK_COMMENT_MODE,HEXCOLOR:{scope:"number",begin:/#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\b/},FUNCTION_DISPATCH:{className:"built_in",begin:/[\w-]+(?=\()/},ATTRIBUTE_SELECTOR_MODE:{scope:"selector-attr",begin:/\[/,end:/\]/,illegal:"$",contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},CSS_NUMBER_MODE:{scope:"number",begin:e.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",relevance:0},CSS_VARIABLE:{className:"attr",begin:/--[A-Za-z_][A-Za-z0-9_-]*/}}),ct=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","optgroup","option","p","picture","q","quote","samp","section","select","source","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],dt=["defs","g","marker","mask","pattern","svg","switch","symbol","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feFlood","feGaussianBlur","feImage","feMerge","feMorphology","feOffset","feSpecularLighting","feTile","feTurbulence","linearGradient","radialGradient","stop","circle","ellipse","image","line","path","polygon","polyline","rect","text","use","textPath","tspan","foreignObject","clipPath"],ut=[...ct,...dt],gt=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"].sort().reverse(),pt=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"].sort().reverse(),mt=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"].sort().reverse(),ft=["accent-color","align-content","align-items","align-self","alignment-baseline","all","anchor-name","animation","animation-composition","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-range","animation-range-end","animation-range-start","animation-timeline","animation-timing-function","appearance","aspect-ratio","backdrop-filter","backface-visibility","background","background-attachment","background-blend-mode","background-clip","background-color","background-image","background-origin","background-position","background-position-x","background-position-y","background-repeat","background-size","baseline-shift","block-size","border","border-block","border-block-color","border-block-end","border-block-end-color","border-block-end-style","border-block-end-width","border-block-start","border-block-start-color","border-block-start-style","border-block-start-width","border-block-style","border-block-width","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-end-end-radius","border-end-start-radius","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-inline","border-inline-color","border-inline-end","border-inline-end-color","border-inline-end-style","border-inline-end-width","border-inline-start","border-inline-start-color","border-inline-start-style","border-inline-start-width","border-inline-style","border-inline-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-start-end-radius","border-start-start-radius","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-align","box-decoration-break","box-direction","box-flex","box-flex-group","box-lines","box-ordinal-group","box-orient","box-pack","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","caret-color","clear","clip","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","color-scheme","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","contain","contain-intrinsic-block-size","contain-intrinsic-height","contain-intrinsic-inline-size","contain-intrinsic-size","contain-intrinsic-width","container","container-name","container-type","content","content-visibility","counter-increment","counter-reset","counter-set","cue","cue-after","cue-before","cursor","cx","cy","direction","display","dominant-baseline","empty-cells","enable-background","field-sizing","fill","fill-opacity","fill-rule","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","flood-color","flood-opacity","flow","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-optical-sizing","font-palette","font-size","font-size-adjust","font-smooth","font-smoothing","font-stretch","font-style","font-synthesis","font-synthesis-position","font-synthesis-small-caps","font-synthesis-style","font-synthesis-weight","font-variant","font-variant-alternates","font-variant-caps","font-variant-east-asian","font-variant-emoji","font-variant-ligatures","font-variant-numeric","font-variant-position","font-variation-settings","font-weight","forced-color-adjust","gap","glyph-orientation-horizontal","glyph-orientation-vertical","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-rows","grid-column","grid-column-end","grid-column-start","grid-gap","grid-row","grid-row-end","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphenate-character","hyphenate-limit-chars","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","initial-letter","initial-letter-align","inline-size","inset","inset-area","inset-block","inset-block-end","inset-block-start","inset-inline","inset-inline-end","inset-inline-start","isolation","justify-content","justify-items","justify-self","kerning","left","letter-spacing","lighting-color","line-break","line-height","line-height-step","list-style","list-style-image","list-style-position","list-style-type","margin","margin-block","margin-block-end","margin-block-start","margin-bottom","margin-inline","margin-inline-end","margin-inline-start","margin-left","margin-right","margin-top","margin-trim","marker","marker-end","marker-mid","marker-start","marks","mask","mask-border","mask-border-mode","mask-border-outset","mask-border-repeat","mask-border-slice","mask-border-source","mask-border-width","mask-clip","mask-composite","mask-image","mask-mode","mask-origin","mask-position","mask-repeat","mask-size","mask-type","masonry-auto-flow","math-depth","math-shift","math-style","max-block-size","max-height","max-inline-size","max-width","min-block-size","min-height","min-inline-size","min-width","mix-blend-mode","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","offset","offset-anchor","offset-distance","offset-path","offset-position","offset-rotate","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-anchor","overflow-block","overflow-clip-margin","overflow-inline","overflow-wrap","overflow-x","overflow-y","overlay","overscroll-behavior","overscroll-behavior-block","overscroll-behavior-inline","overscroll-behavior-x","overscroll-behavior-y","padding","padding-block","padding-block-end","padding-block-start","padding-bottom","padding-inline","padding-inline-end","padding-inline-start","padding-left","padding-right","padding-top","page","page-break-after","page-break-before","page-break-inside","paint-order","pause","pause-after","pause-before","perspective","perspective-origin","place-content","place-items","place-self","pointer-events","position","position-anchor","position-visibility","print-color-adjust","quotes","r","resize","rest","rest-after","rest-before","right","rotate","row-gap","ruby-align","ruby-position","scale","scroll-behavior","scroll-margin","scroll-margin-block","scroll-margin-block-end","scroll-margin-block-start","scroll-margin-bottom","scroll-margin-inline","scroll-margin-inline-end","scroll-margin-inline-start","scroll-margin-left","scroll-margin-right","scroll-margin-top","scroll-padding","scroll-padding-block","scroll-padding-block-end","scroll-padding-block-start","scroll-padding-bottom","scroll-padding-inline","scroll-padding-inline-end","scroll-padding-inline-start","scroll-padding-left","scroll-padding-right","scroll-padding-top","scroll-snap-align","scroll-snap-stop","scroll-snap-type","scroll-timeline","scroll-timeline-axis","scroll-timeline-name","scrollbar-color","scrollbar-gutter","scrollbar-width","shape-image-threshold","shape-margin","shape-outside","shape-rendering","speak","speak-as","src","stop-color","stop-opacity","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","tab-size","table-layout","text-align","text-align-all","text-align-last","text-anchor","text-combine-upright","text-decoration","text-decoration-color","text-decoration-line","text-decoration-skip","text-decoration-skip-ink","text-decoration-style","text-decoration-thickness","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-indent","text-justify","text-orientation","text-overflow","text-rendering","text-shadow","text-size-adjust","text-transform","text-underline-offset","text-underline-position","text-wrap","text-wrap-mode","text-wrap-style","timeline-scope","top","touch-action","transform","transform-box","transform-origin","transform-style","transition","transition-behavior","transition-delay","transition-duration","transition-property","transition-timing-function","translate","unicode-bidi","user-modify","user-select","vector-effect","vertical-align","view-timeline","view-timeline-axis","view-timeline-inset","view-timeline-name","view-transition-name","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","white-space","white-space-collapse","widows","width","will-change","word-break","word-spacing","word-wrap","writing-mode","x","y","z-index","zoom"].sort().reverse();function bt(e){const u=e.regex,s=lt(e),y={begin:/-(webkit|moz|ms|o)-(?=[a-z])/},v="and or not only",g=/@-?\w[\w]*(-\w+)*/,l="[a-zA-Z-][a-zA-Z0-9_-]*",a=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE];return{name:"CSS",case_insensitive:!0,illegal:/[=|'\$]/,keywords:{keyframePosition:"from to"},classNameAliases:{keyframePosition:"selector-tag"},contains:[s.BLOCK_COMMENT,y,s.CSS_NUMBER_MODE,{className:"selector-id",begin:/#[A-Za-z0-9_-]+/,relevance:0},{className:"selector-class",begin:"\\."+l,relevance:0},s.ATTRIBUTE_SELECTOR_MODE,{className:"selector-pseudo",variants:[{begin:":("+pt.join("|")+")"},{begin:":(:)?("+mt.join("|")+")"}]},s.CSS_VARIABLE,{className:"attribute",begin:"\\b("+ft.join("|")+")\\b"},{begin:/:/,end:/[;}{]/,contains:[s.BLOCK_COMMENT,s.HEXCOLOR,s.IMPORTANT,s.CSS_NUMBER_MODE,...a,{begin:/(url|data-uri)\(/,end:/\)/,relevance:0,keywords:{built_in:"url data-uri"},contains:[...a,{className:"string",begin:/[^)]/,endsWithParent:!0,excludeEnd:!0}]},s.FUNCTION_DISPATCH]},{begin:u.lookahead(/@/),end:"[{;]",relevance:0,illegal:/:/,contains:[{className:"keyword",begin:g},{begin:/\s/,endsWithParent:!0,excludeEnd:!0,relevance:0,keywords:{$pattern:/[a-z-]+/,keyword:v,attribute:gt.join(" ")},contains:[{begin:/[a-z-]+(?=:)/,className:"attribute"},...a,s.CSS_NUMBER_MODE]}]},{className:"selector-tag",begin:"\\b("+ut.join("|")+")\\b"}]}}function ht(e){const u=e.regex,s=u.concat(/[\p{L}_]/u,u.optional(/[\p{L}0-9_.-]*:/u),/[\p{L}0-9_.-]*/u),y=/[\p{L}0-9._:-]+/u,v={className:"symbol",begin:/&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/},g={begin:/\s/,contains:[{className:"keyword",begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\n/}]},l=e.inherit(g,{begin:/\(/,end:/\)/}),a=e.inherit(e.APOS_STRING_MODE,{className:"string"}),x=e.inherit(e.QUOTE_STRING_MODE,{className:"string"}),p={endsWithParent:!0,illegal:/</,relevance:0,contains:[{className:"attr",begin:y,relevance:0},{begin:/=\s*/,relevance:0,contains:[{className:"string",endsParent:!0,variants:[{begin:/"/,end:/"/,contains:[v]},{begin:/'/,end:/'/,contains:[v]},{begin:/[^\s"'=<>`]+/}]}]}]};return{name:"HTML, XML",aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist","wsf","svg"],case_insensitive:!0,unicodeRegex:!0,contains:[{className:"meta",begin:/<![a-z]/,end:/>/,relevance:10,contains:[g,x,a,l,{begin:/\[/,end:/\]/,contains:[{className:"meta",begin:/<![a-z]/,end:/>/,contains:[g,l,x,a]}]}]},e.COMMENT(/<!--/,/-->/,{relevance:10}),{begin:/<!\[CDATA\[/,end:/\]\]>/,relevance:10},v,{className:"meta",end:/\?>/,variants:[{begin:/<\?xml/,relevance:10,contains:[x]},{begin:/<\?[a-z][a-z0-9]+/}]},{className:"tag",begin:/<style(?=\s|>)/,end:/>/,keywords:{name:"style"},contains:[p],starts:{end:/<\/style>/,returnEnd:!0,subLanguage:["css","xml"]}},{className:"tag",begin:/<script(?=\s|>)/,end:/>/,keywords:{name:"script"},contains:[p],starts:{end:/<\/script>/,returnEnd:!0,subLanguage:["javascript","handlebars","xml"]}},{className:"tag",begin:/<>|<\/>/},{className:"tag",begin:u.concat(/</,u.lookahead(u.concat(s,u.either(/\/>/,/>/,/\s/)))),end:/\/?>/,contains:[{className:"name",begin:s,relevance:0,starts:p}]},{className:"tag",begin:u.concat(/<\//,u.lookahead(u.concat(s,/>/))),contains:[{className:"name",begin:s,relevance:0},{begin:/>/,relevance:0,endsParent:!0}]}]}}const yt={class:"rounded-lg border border-default overflow-hidden bg-muted min-h-16"},xt={key:0,class:"flex items-center gap-2 p-4 text-sm text-gray-500"},vt={key:0,class:"text-sm font-bold text-gray-900 dark:text-white mt-4 mb-0.5 first:mt-0"},kt={key:1,class:"font-semibold text-gray-700 dark:text-gray-200 mt-2 mb-0.5"},_t={key:2,class:"my-1 px-2 py-0.5 rounded bg-yellow-50 dark:bg-yellow-900/20 text-yellow-800 dark:text-yellow-300 italic"},wt={key:3,class:"text-gray-600 dark:text-gray-400 flex gap-1.5"},St={key:4,class:"text-gray-600 dark:text-gray-400"},Et={key:5,class:"h-2"},Ct={key:6,class:"mt-2 px-2 py-0.5 bg-gray-200 dark:bg-gray-700 text-gray-500 dark:text-gray-400 rounded-t text-[10px] uppercase tracking-wide"},$t={key:7,class:"overflow-x-auto bg-gray-50 dark:bg-gray-900/40"},At=["innerHTML"],Tt={key:8,class:"h-1 bg-gray-100 dark:bg-gray-800/50 rounded-b mb-2"},Nt={key:2,class:"p-3 text-xs text-gray-400 italic"},Rt=ne({__name:"MarkdownPreview",props:{text:{},loading:{type:Boolean},maxHeight:{}},setup(e){D.registerLanguage("javascript",je),D.registerLanguage("typescript",He),D.registerLanguage("python",rt),D.registerLanguage("bash",Ge),D.registerLanguage("json",Ve),D.registerLanguage("css",bt),D.registerLanguage("xml",ht),D.registerLanguage("diff",Ke);const u=e;function s(v){const g=[];let l=!1,a="",x=[];for(const p of v.split(`
2
- `))if(!l)p.startsWith("```")?(l=!0,a=p.slice(3).trim(),x=[]):p.startsWith("## ")?g.push({kind:"h2",text:p.slice(3)}):p.startsWith("### ")?g.push({kind:"h3",text:p.slice(4)}):p.startsWith("> ")?g.push({kind:"note",text:p.slice(2)}):p.startsWith("- ")?g.push({kind:"bullet",text:p.slice(2)}):p.trim()===""?g.push({kind:"blank"}):g.push({kind:"text",text:p});else if(p==="```"){const E=x.join(`
3
- `);if(x.length){const{value:S}=a&&D.getLanguage(a)?D.highlight(E,{language:a}):D.highlightAuto(E);g.push({kind:"code-start",lang:a||"code"}),g.push({kind:"code-block",html:S}),g.push({kind:"code-end"})}l=!1}else x.push(p);if(l&&x.length){const p=x.join(`
4
- `),{value:E}=a&&D.getLanguage(a)?D.highlight(p,{language:a}):D.highlightAuto(p);g.push({kind:"code-start",lang:a||"code"}),g.push({kind:"code-block",html:E}),g.push({kind:"code-end"})}return g}const y=$(()=>u.text?s(u.text):[]);return(v,g)=>{const l=se;return i(),r("div",yt,[e.loading?(i(),r("div",xt,[k(l,{name:"i-lucide-loader-2",class:"size-4 animate-spin"}),g[0]||(g[0]=d("span",null,"Fetching context… (includes SCM diff lookup)",-1))])):t(y).length?(i(),r("div",{key:1,class:"overflow-auto p-3 text-xs font-mono leading-relaxed",style:ye({maxHeight:e.maxHeight??"45vh"})},[(i(!0),r(L,null,K(t(y),(a,x)=>(i(),r(L,{key:x},[a.kind==="h2"?(i(),r("div",vt,f(a.text),1)):a.kind==="h3"?(i(),r("div",kt,f(a.text),1)):a.kind==="note"?(i(),r("div",_t,f(a.text),1)):a.kind==="bullet"?(i(),r("div",wt,[g[1]||(g[1]=d("span",{class:"text-gray-400 shrink-0"},"·",-1)),d("span",null,f(a.text),1)])):a.kind==="text"?(i(),r("div",St,f(a.text),1)):a.kind==="blank"?(i(),r("div",Et)):a.kind==="code-start"?(i(),r("div",Ct,f(a.lang||"code"),1)):a.kind==="code-block"?(i(),r("div",$t,[d("pre",{class:"hljs px-2 py-1 !bg-transparent whitespace-pre-wrap",innerHTML:a.html},null,8,At)])):a.kind==="code-end"?(i(),r("div",Tt)):h("",!0)],64))),128))],4)):(i(),r("div",Nt,"No context loaded"))])}}}),ke=Object.assign(Rt,{__name:"MarkdownPreview"}),It=new RegExp("\\u001B\\[[0-9;]*m","g");function ps(e){return e.replace(It,"")}function ms(e,u){const s=e.search(/\n at /);if(s===-1)return u!==void 0&&e.length>u?e.slice(0,u)+`
5
- [truncated]`:e;const y=e.slice(0,s),g=e.slice(s).split(`
6
- `),l=[];let a=0;const x=()=>{a>0&&(l.push(`… (${a} internal frame${a>1?"s":""})`),a=0)};for(const E of g){const S=E.trimStart();S.startsWith("at ")?E.includes("node_modules")||S.startsWith("at node:")?a++:(x(),l.push(E)):(S===""||x(),l.push(E))}x();let p=y+`
7
- `+l.join(`
8
- `);return u!==void 0&&p.length>u&&(p=p.slice(0,u)+`
9
- [truncated]`),p}function fs(e={}){const u=Y(!1),s=xe();let y=null;async function v(g,l,a={}){try{typeof ClipboardItem<"u"?await navigator.clipboard.write([new ClipboardItem({"text/plain":new Blob([g],{type:"text/plain"}),"text/html":new Blob([l],{type:"text/html"})})]):await navigator.clipboard.writeText(g),u.value=!0,y&&clearTimeout(y),y=setTimeout(()=>{u.value=!1,y=null},e.duration??2e3),a.toast&&s.add({title:typeof a.toast=="string"?a.toast:"Copied to clipboard",icon:"i-lucide-check",color:"success",duration:2e3})}catch{}}return{copyRich:v,copied:u}}const re=[{id:"clusterSummary",label:"Failure cluster summary",short:"Cluster"},{id:"sampleError",label:"Raw error message",short:"Error"},{id:"representativeExecution",label:"Representative execution overview",short:"Execution"},{id:"executionError",label:"Representative execution error",short:"Error"},{id:"runContext",label:"Run context (partial run, parallelism, flaky class)",short:"Run context"},{id:"testAnnotations",label:"Test annotations (@fixme/@flaky …)",short:"Annotations"},{id:"affectedTests",label:"Affected tests",short:"Tests"},{id:"testSource",label:"Test source code",short:"Source"},{id:"sourceFiles",label:"Full source files (suspect + imports)",short:"Files"},{id:"steps",label:"Test steps",short:"Steps"},{id:"failingSteps",label:"Failing steps",short:"Steps"},{id:"console",label:"Browser console logs",short:"Console"},{id:"networkRequests",label:"Network requests",short:"Network"},{id:"serverLogs",label:"Backend server logs",short:"Server logs"},{id:"serverTraces",label:"Server traces (spans)",short:"Traces"},{id:"webVitals",label:"Web vitals",short:"Web vitals"},{id:"appState",label:"App state at test end (URL/storage/cookies)",short:"App state"},{id:"ariaSnapshot",label:"ARIA snapshot",short:"ARIA"},{id:"domSnapshot",label:"DOM snapshot from trace (failure time)",short:"DOM"},{id:"screenshots",label:"Screenshots (attached as images)",short:"Screenshots"},{id:"visualDiff",label:"Visual diff vs last passing screenshot",short:"Visual diff"},{id:"browserDistribution",label:"Browser distribution",short:"Browsers"},{id:"recurrenceFlakiness",label:"Recurrence & flakiness",short:"Flakiness"},{id:"baselineComparison",label:"Compared to last pass (duration/vitals/steps)",short:"Baseline"},{id:"environmentDiff",label:"Environment diff vs last pass",short:"Env diff"},{id:"retryProgression",label:"Retry progression (per-attempt errors)",short:"Retries"},{id:"passedPeers",label:"Passing peers in same file",short:"Peers"},{id:"scmInvestigation",label:"SCM diff since last green",short:"SCM diff"},{id:"selectedCommits",label:"Manually selected commits",short:"Commits"},{id:"priorDiagnosis",label:"Prior diagnosis & triage",short:"Prior"},{id:"tracePointers",label:"Trace files",short:"Traces"},{id:"artifacts",label:"Attachments & artifacts (video, HAR)",short:"Artifacts"},{id:"nearestAriaNames",label:"Nearest matching ARIA names from snapshot",short:"Nearest ARIA"},{id:"alreadyGreen",label:"Baseline freshness / already-green check",short:"Already green"},{id:"topSuspectedCommit",label:"Top suspected commit",short:"Top commit"},{id:"failingAction",label:"Failing action from trace parsing",short:"Trace"},{id:"traceCallStack",label:"Full call stack with source (from trace)",short:"Call stack"},{id:"traceNetwork",label:"Network activity from trace (all requests)",short:"Trace net"},{id:"locatorHealing",label:"Alternative locators from prior success",short:"Alt locators"}],_e=new Set(re.map(e=>e.id)),we=Object.fromEntries(re.map(e=>[e.id,e.short]));function Mt(e){return _e.has(e)}function bs(e){const u=new Set;for(const s of e)if(s)for(const y of String(s).matchAll(/\[([a-zA-Z][a-zA-Z0-9]*)]/g))_e.has(y[1])&&u.add(y[1]);return[...u]}const Ot={class:"rounded-lg border border-default bg-elevated/30 px-2.5 py-2"},zt={key:0,class:"flex items-center gap-2 text-xs text-gray-400"},Lt={key:1,class:"flex flex-wrap items-center gap-1.5"},Bt={class:"text-xs font-medium text-gray-500 inline-flex items-center gap-1"},Dt=["title","onClick"],Ft={key:0,class:"text-xs text-gray-400"},Pt=ne({__name:"DiagnosisCoverageStrip",props:{sections:{},notApplicable:{},tokenEstimate:{},loading:{type:Boolean}},emits:["view-section","open"],setup(e,{emit:u}){const s=e,y=u,v=$(()=>s.sections.map(a=>({id:a.id,short:we[a.id]??a.title??a.id,truncated:a.truncated}))),g=$(()=>Math.max(0,re.length-s.sections.length)),l=$(()=>{const a=s.tokenEstimate;return a?a>=1e3?`${(a/1e3).toFixed(1)}k`:String(a):""});return(a,x)=>{const p=se,E=pe;return i(),r("div",Ot,[e.loading&&!e.sections.length?(i(),r("div",zt,[k(p,{name:"i-lucide-loader-circle",class:"size-3.5 animate-spin"}),x[1]||(x[1]=w(" Building context… ",-1))])):(i(),r("div",Lt,[d("span",Bt,[k(p,{name:"i-lucide-layers",class:"size-3.5"}),x[2]||(x[2]=w(" Context ",-1)),k(E,{topic:"cluster.coverage"})]),(i(!0),r(L,null,K(t(v),S=>(i(),r("button",{key:S.id,type:"button",class:"inline-flex items-center gap-1 rounded-full border border-default bg-default px-2 py-0.5 text-xs hover:border-primary/50 transition-colors",title:S.truncated?`${S.short} (truncated)`:S.short,onClick:A=>y("view-section",S.id)},[k(p,{name:S.truncated?"i-lucide-scissors":"i-lucide-check",class:V(["size-3",S.truncated?"text-warning":"text-success"])},null,8,["name","class"]),w(" "+f(S.short),1)],8,Dt))),128)),t(v).length?h("",!0):(i(),r("span",Ft,"No evidence sections yet")),d("button",{type:"button",class:"ml-auto text-xs text-gray-400 hover:text-primary transition-colors whitespace-nowrap",onClick:x[0]||(x[0]=S=>y("open"))},[t(g)?(i(),r(L,{key:0},[w(f(t(g))+" not included · ",1)],64)):h("",!0),t(l)?(i(),r(L,{key:1},[w("~"+f(t(l))+" tokens",1)],64)):h("",!0),k(p,{name:"i-lucide-arrow-right",class:"size-3 inline align-text-bottom"})])]))])}}}),hs=Object.assign(Pt,{__name:"DiagnosisCoverageStrip"}),Ut={class:"flex items-center justify-between w-full"},jt={class:"flex items-center gap-2"},Ht={class:"font-semibold inline-flex items-center gap-1"},Gt={class:"text-xs text-gray-400"},Vt={class:"flex items-center gap-1"},Kt={class:"rounded-lg border border-default bg-elevated/30 p-3 mb-4"},qt={class:"flex items-center justify-between gap-2 mb-2"},Wt={class:"text-xs font-medium text-gray-500 uppercase tracking-wide inline-flex items-center gap-1"},Xt={class:"text-xs text-gray-400"},Zt={class:"flex flex-wrap gap-1.5"},Yt=["title"],Jt={class:"text-xs text-gray-400 mt-2"},Qt={class:"space-y-4"},en={class:"text-xs font-medium text-gray-500 uppercase tracking-wide mb-2"},tn={class:"space-y-2"},nn=["data-section-id"],sn={key:0,class:"text-center text-gray-400 py-8 text-sm"},on=ne({__name:"DiagnosisContextModal",props:{open:{type:Boolean},sections:{},tokenEstimate:{},imageTokenEstimate:{},loading:{type:Boolean},focusSection:{},citedSections:{},notApplicableSections:{}},emits:["update:open","refresh"],setup(e,{emit:u}){const s=e,y=$(()=>{const b=new Map;for(const m of s.sections)b.has(m.id)||b.set(m.id,m);return b}),v=$(()=>new Set(Object.keys(s.notApplicableSections??{}))),g=$(()=>new Set(s.citedSections??[])),l=$(()=>re.map(b=>{if(v.value.has(b.id))return{id:b.id,short:b.short,label:b.label,state:"notApplicable",cited:g.value.has(b.id)};const m=y.value.get(b.id),I=m?m.truncated?"truncated":"present":"absent";return{id:b.id,short:b.short,label:b.label,state:I,cited:g.value.has(b.id)}})),a=$(()=>{const b={present:0,truncated:0,absent:0,notApplicable:0};for(const m of l.value)b[m.state]++;return b}),x={present:"bg-emerald-500",truncated:"bg-amber-500",absent:"bg-gray-300 dark:bg-gray-600",notApplicable:"bg-purple-400"};function p(b){if(b.state==="notApplicable"){const m=s.notApplicableSections?.[b.id];return`${b.label}: not applicable${m?` — ${m}`:""}`}return`${b.label}: ${b.state}${b.cited?" · cited by the diagnosis":""}`}const E=u,{copy:S,copied:A}=ve(),U=$(()=>{const b=[],m=["clusterSummary","sampleError","representativeExecution","executionError","runContext"],I=["testAnnotations","testSource","steps","failingSteps","console","networkRequests","serverLogs","serverTraces","webVitals","ariaSnapshot"],J=["recurrenceFlakiness","baselineComparison","retryProgression","passedPeers","browserDistribution","affectedTests"],R=["scmInvestigation","selectedCommits"],Q=["priorDiagnosis","tracePointers","artifacts"],W=(T,O)=>{const X=s.sections.filter(ie=>T.includes(ie.id));X.length>0&&b.push({label:O,items:X})};return W(m,"Primary"),W(I,"Test Evidence"),W(J,"Analysis"),W(R,"SCM"),W(Q,"Other"),b}),N=Y(null);ae(()=>[s.open,s.focusSection],async([b,m])=>{if(!b||!m)return;await Me();const I=document.querySelector(`[data-section-id="${m}"]`);I&&(I.scrollIntoView({behavior:"smooth",block:"start"}),N.value=m,setTimeout(()=>{N.value===m&&(N.value=null)},2500))});function q(b){let m=`## ${b.title}`;const I=[];return I.push(`${b.chars} chars`),b.truncated&&I.push("truncated"),b.items!=null&&I.push(`${b.items} items`),I.length&&(m+=` — ${I.join(", ")}`),m}return(b,m)=>{const I=pe,J=ge,R=se,Q=ke,W=Fe;return i(),F(W,{open:e.open,title:"Context sent to AI",ui:{content:"max-w-5xl"},"onUpdate:open":m[2]||(m[2]=T=>E("update:open",T))},{header:G(()=>[d("div",Ut,[d("div",jt,[d("span",Ht,[m[3]||(m[3]=w(" Context sent to AI ",-1)),k(I,{topic:"cluster.context-preview"})]),d("span",Gt,[w(" ~"+f(e.tokenEstimate)+" tokens",1),e.imageTokenEstimate?(i(),r(L,{key:0},[w(" ("+f(e.tokenEstimate-e.imageTokenEstimate)+" text + "+f(e.imageTokenEstimate)+" image)",1)],64)):h("",!0)])]),d("div",Vt,[k(J,{icon:"i-lucide-refresh-cw",size:"xs",color:"neutral",variant:"ghost",loading:e.loading,onClick:m[0]||(m[0]=T=>E("refresh"))},null,8,["loading"]),k(J,{icon:"i-lucide-x",size:"xs",color:"neutral",variant:"ghost",onClick:m[1]||(m[1]=T=>E("update:open",!1))})])])]),body:G(()=>[m[7]||(m[7]=d("p",{class:"text-xs text-gray-500 dark:text-gray-400 mb-3"},"Copy individual sections or the full context below.",-1)),d("div",Kt,[d("div",qt,[d("p",Wt,[m[4]||(m[4]=w(" Data coverage ",-1)),k(I,{topic:"cluster.coverage"})]),d("p",Xt,f(t(a).present)+" present · "+f(t(a).truncated)+" truncated · "+f(t(a).absent)+" absent"+f(t(a).notApplicable?` · ${t(a).notApplicable} n/a`:""),1)]),d("div",Zt,[(i(!0),r(L,null,K(t(l),T=>(i(),r("span",{key:T.id,class:V(["inline-flex items-center gap-1 rounded border px-1.5 py-0.5 text-xs",[T.cited?"border-primary text-primary":"border-default",T.state==="absent"?"text-gray-400 opacity-70":"",T.state==="notApplicable"?"text-purple-500 border-purple-300 dark:border-purple-700":""]]),title:p(T)},[d("span",{class:V(["size-1.5 rounded-full shrink-0",x[T.state]])},null,2),w(" "+f(T.short)+" ",1),T.cited?(i(),F(R,{key:0,name:"i-lucide-quote",class:"size-2.5 shrink-0"})):h("",!0)],10,Yt))),128))]),d("p",Jt,[m[5]||(m[5]=w(" Absent or truncated evidence lowers the diagnosis confidence. ",-1)),k(R,{name:"i-lucide-quote",class:"size-2.5 inline"}),m[6]||(m[6]=w(" marks sections the diagnosis cited. ",-1))])]),d("div",Qt,[(i(!0),r(L,null,K(t(U),T=>(i(),r("div",{key:T.label},[d("p",en,f(T.label),1),d("div",tn,[(i(!0),r(L,null,K(T.items,O=>(i(),r("div",{key:O.id,"data-section-id":O.id,class:V(["relative rounded-lg transition-shadow",t(N)===O.id?"ring-2 ring-primary":t(g).has(O.id)?"ring-1 ring-primary/40":""])},[k(Q,{text:q(O)+`
10
-
11
- `+O.markdown},null,8,["text"]),k(J,{icon:t(A)?"i-lucide-check":"i-lucide-clipboard",size:"xs",color:"neutral",variant:"ghost",class:"absolute top-1 right-1",onClick:X=>t(S)(O.markdown)},null,8,["icon","onClick"])],10,nn))),128))])]))),128)),e.sections.length===0&&!e.loading?(i(),r("div",sn," No context sections available. ")):h("",!0)])]),_:1},8,["open"])}}}),ys=Object.assign(on,{__name:"DiagnosisContextModal"}),an=Symbol("clusterSectionLocator");function rn(){return Oe(an,{canLocate:()=>!1,open:()=>{}})}const ln={class:"space-y-3"},cn={key:2,class:"space-y-3 rounded-lg border border-default p-4 bg-elevated/30"},dn={class:"flex items-start gap-3"},un=["title"],gn={class:"relative size-12"},pn={viewBox:"0 0 36 36",class:"size-12 -rotate-90"},mn=["stroke-dasharray"],fn={class:"absolute inset-0 flex items-center justify-center text-xs font-semibold"},bn={class:"flex-1 min-w-0"},hn={class:"flex items-start justify-between gap-2"},yn={class:"flex flex-wrap items-center gap-1.5"},xn={key:4,class:"text-xs text-gray-500 inline-flex items-center gap-1"},vn={class:"flex items-center gap-1 shrink-0"},kn={key:0,class:"text-sm font-medium mt-1.5"},_n={key:0,class:"text-sm text-gray-600 dark:text-gray-400"},wn={key:1,class:"space-y-1"},Sn={class:"flex flex-wrap items-baseline gap-x-1.5 gap-y-1"},En=["title","onClick"],Cn=["title","onClick"],$n={key:2},An={class:"text-sm text-gray-600 dark:text-gray-400"},Tn={key:1,class:"mt-2"},Nn={class:"flex items-center justify-between mb-1"},Rn={class:"flex items-center gap-1.5"},In={class:"flex items-center gap-1"},Mn={key:0,class:"text-xs text-rose-600 dark:text-rose-400 mt-1"},On={key:2,class:"mt-2"},zn={key:3,class:"space-y-1.5"},Ln={class:"flex items-center gap-1"},Bn={key:0,class:"space-y-1.5"},Dn={class:"flex items-center gap-1.5"},Fn={key:1,class:"flex items-center gap-1.5 flex-1 min-w-0"},Pn={class:"h-1.5 flex-1 max-w-24 rounded-full bg-gray-200 dark:bg-gray-700 overflow-hidden"},Un={class:"text-xs text-gray-400 shrink-0"},jn={key:0,class:"text-sm text-gray-600 dark:text-gray-400 mt-1"},Hn={class:"space-y-1"},Gn=["onClick"],Vn={key:5,class:"space-y-1"},Kn={class:"flex items-start justify-between gap-3 pt-1 border-t border-default"},qn={class:"flex items-start gap-2"},Wn={class:"flex items-center gap-1 shrink-0 pt-0.5"},Xn={key:0,class:"flex items-start gap-1.5"},Zn={class:"flex items-center gap-1.5 text-xs text-gray-400 shrink-0 pt-0.5"},Yn={key:3,class:"flex flex-col items-center justify-center p-8 text-center text-gray-400 border border-dashed border-default rounded-lg"},Jn=ne({__name:"DiagnosisResult",props:{diagnosis:{},lastSeenRunId:{}},emits:["view-section","prefill-context"],setup(e,{emit:u}){const s=e,{copy:y,copied:v}=ve(),g=rn(),l=$(()=>s.diagnosis?.details);function a(n,o){return n==null&&o==null?"":`${n??0} in / ${o??0} out tokens`}function x(n){return n.status==="running"&&Date.now()-new Date(n.updatedAt).getTime()>300*1e3}const p=Y(!1),E=Y(!1),S=Y(!1),A=Y(null),U=Y(void 0),N=Le(new Set);ae(()=>s.diagnosis?.id,()=>N.clear()),ae(()=>s.diagnosis?.feedback,n=>{A.value=n??null},{immediate:!0}),ae(()=>s.diagnosis?.feedbackNote,n=>{U.value=n??void 0},{immediate:!0});async function q(n){if(!s.diagnosis)return;const o=A.value===n?null:n;A.value=o,o||(S.value=!1),p.value=!0;try{await $fetch(`/api/failure-diagnoses/${s.diagnosis.id}/feedback`,{method:"PATCH",body:{feedback:o,feedbackNote:U.value||null}})}catch{A.value=s.diagnosis.feedback??null}finally{p.value=!1}}async function b(){if(s.diagnosis){E.value=!0;try{await $fetch(`/api/failure-diagnoses/${s.diagnosis.id}/feedback`,{method:"PATCH",body:{feedback:A.value,feedbackNote:U.value||null}}),S.value=!1}catch{}finally{E.value=!1}}}const m=$(()=>{const n=s.diagnosis;return!n||n.status!=="completed"||s.lastSeenRunId==null?!1:new Date(n.updatedAt).getTime()<Date.now()-300*1e3});function I(){if(!s.diagnosis||s.diagnosis.status!=="completed")return"";const n=s.diagnosis,o=l.value,c=[];n.category&&c.push(`**Category:** ${n.category}`),n.confidence&&c.push(`**Confidence:** ${n.confidence}${o?.confidenceScore!=null?` (${o.confidenceScore}/100)`:""}`),o?.severity&&c.push(`**Severity:** ${o.severity}`),o?.affectedArea&&c.push(`**Affected area:** ${o.affectedArea}`),c.push(""),n.summary&&c.push(`${n.summary}
12
- `),n.rootCause&&c.push(`**Root cause:** ${n.rootCause}
13
- `);const M=o?.evidence??[];M.length&&(c.push("**Evidence:**"),M.forEach(j=>c.push(`- ${j}`)),c.push(""));const _=o?.suggestedFix;_&&(c.push("**Suggested fix:**"),_.description&&c.push(`${_.description}`),_.file&&c.push(`\`${_.file}\``),_.patch?c.push(`\`\`\`diff
14
- ${_.patch}
15
- \`\`\``):_.code&&c.push(`\`\`\`
16
- ${_.code}
17
- \`\`\``),c.push(""));const z=o?.hypotheses?.slice(1)??[];z.length&&(c.push("**Other hypotheses considered:**"),z.forEach(j=>c.push(`- (${j.category??"unknown"}, ${j.likelihood??"?"}/100) ${j.rootCause??""}`)),c.push(""));const B=o?.investigationSteps??[];B.length&&(c.push("**To confirm this diagnosis:**"),B.forEach(j=>c.push(`- ${j}`)),c.push(""));const H=o?.preventionTips??[];return H.length&&(c.push("**Prevention tips:**"),H.forEach(j=>c.push(`- ${j}`)),c.push("")),n.model&&c.push(`_${n.model}_`),c.join(`
18
- `)}function J(){if(!s.diagnosis||s.diagnosis.status!=="completed")return"";const n=s.diagnosis,o=l.value,c=["<dl>"];n.category&&c.push(`<dt>Category</dt><dd>${R(n.category)}</dd>`),n.confidence&&c.push(`<dt>Confidence</dt><dd>${R(n.confidence)}${o?.confidenceScore!=null?` (${o.confidenceScore}/100)`:""}</dd>`),o?.severity&&c.push(`<dt>Severity</dt><dd>${R(String(o.severity))}</dd>`),o?.affectedArea&&c.push(`<dt>Affected area</dt><dd>${R(String(o.affectedArea))}</dd>`),c.push("</dl>"),n.summary&&c.push(`<p><strong>${R(n.summary)}</strong></p>`),n.rootCause&&c.push(`<p><strong>Root cause:</strong> ${R(n.rootCause)}</p>`);const M=o?.evidence??[];M.length&&(c.push("<p><strong>Evidence:</strong></p><ul>"),M.forEach(H=>c.push(`<li>${R(H)}</li>`)),c.push("</ul>"));const _=o?.suggestedFix;_&&(c.push("<p><strong>Suggested fix:</strong></p>"),_.description&&c.push(`<p>${R(String(_.description))}</p>`),_.file&&c.push(`<code>${R(String(_.file))}</code>`),_.patch?c.push(`<pre>${R(String(_.patch))}</pre>`):_.code&&c.push(`<pre>${R(String(_.code))}</pre>`));const z=o?.investigationSteps??[];z.length&&(c.push("<p><strong>To confirm this diagnosis:</strong></p><ul>"),z.forEach(H=>c.push(`<li>${R(H)}</li>`)),c.push("</ul>"));const B=o?.preventionTips??[];return B.length&&(c.push("<p><strong>Prevention tips:</strong></p><ul>"),B.forEach(H=>c.push(`<li>${R(H)}</li>`)),c.push("</ul>")),c.join(`
19
- `)}function R(n){return n.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")}async function Q(){const n=I(),o=J();if(!(!n&&!o))try{await navigator.clipboard.write([new ClipboardItem({"text/plain":new Blob([n],{type:"text/plain"}),"text/html":new Blob([o],{type:"text/html"})})]),xe().add({title:"Diagnosis copied",icon:"i-lucide-check",color:"success",duration:2e3})}catch{y(n,{toast:"Diagnosis copied"})}}function W(){const n=s.diagnosis;if(!n)return;const o=n.details?.suggestedFix?.patch;if(!o)return;const c=`git apply <<'EOF'
20
- ${o}
21
- EOF`;y(c,{toast:"git apply command copied"})}function T(){const n=l.value?.suggestedFix?.patch;if(!n)return;const o=n.endsWith(`
22
- `)?n:n+`
23
- `,c=new Blob([o],{type:"text/x-patch"}),M=URL.createObjectURL(c),_=document.createElement("a");_.href=M,_.download=`piwi-diagnosis-${s.diagnosis?.id??"fix"}.patch`,document.body.appendChild(_),_.click(),setTimeout(()=>{_.remove(),URL.revokeObjectURL(M)},1e3)}const O=$(()=>{const n=l.value?.patchValidation;return n&&typeof n=="object"?n:null}),X=$(()=>{const n=O.value;if(!n)return null;switch(n.status){case"applies":return{color:"success",icon:"i-lucide-badge-check",label:"Applies cleanly",title:"Verified against the real file at the failing commit"};case"applies-with-offset":return{color:"warning",icon:"i-lucide-badge-check",label:"Applies with offset",title:"Context matched at a shifted line — apply should still succeed"};case"stale-file":return{color:"error",icon:"i-lucide-badge-alert",label:"Does not apply",title:n.errors.join(`
24
- `)||"The file changed since — patch context did not match"};case"invalid":return{color:"error",icon:"i-lucide-badge-alert",label:"Invalid diff",title:n.errors.join(`
25
- `)||"Could not parse the patch as a unified diff"};default:return{color:"neutral",icon:"i-lucide-badge-help",label:"Unverified",title:"The source file was not in context, so the patch could not be validated"}}}),ie={"app-bug":"error","test-bug":"warning","flaky-test":"warning",infrastructure:"info",environment:"secondary",unknown:"neutral"},Se={high:"success",medium:"warning",low:"neutral"},Ee={blocker:"error",high:"warning",medium:"info",low:"neutral"},me=u;function Ce(){const n=l.value?.investigationSteps??[];if(!n.length)return;const o=["Investigation findings (fill in the results, then re-diagnose):",...n.map(c=>`- ${c}: `)].join(`
26
- `);me("prefill-context",o)}const ee=$(()=>{const n=l.value?.confidenceScore;return typeof n=="number"?n:null}),te=$(()=>{const n=ee.value;return n!==null?n<50:s.diagnosis?.confidence==="low"||s.diagnosis?.category==="unknown"}),$e={"app-bug":"i-lucide-bug","test-bug":"i-lucide-flask-conical","flaky-test":"i-lucide-dice-5",infrastructure:"i-lucide-server",environment:"i-lucide-settings-2",unknown:"i-lucide-circle-help"},Ae=$(()=>{const n=s.diagnosis?.confidence;return n==="high"?"text-emerald-500":n==="medium"?"text-amber-500":"text-rose-500"});function le(n){return we[n]??n}function Te(n){const o=[];return{text:n.replace(/\[([a-zA-Z][a-zA-Z0-9]*)\]/g,(M,_)=>Mt(_)?(o.push(_),""):M).replace(/\s{2,}/g," ").trim(),citations:o}}const fe=$(()=>{const n=l.value?.evidence;return Array.isArray(n)?n.map(Te):[]}),ce=$(()=>{const n=l.value?.hypotheses;return Array.isArray(n)?n.slice(1):[]}),oe=Y(!1),de=$(()=>{const n=l.value?.pipeline;return Array.isArray(n)?n:[]}),be=$(()=>de.value.reduce((n,o)=>n+(o.cacheReadInputTokens??0),0));return(n,o)=>{const c=Pe,M=Be,_=pe,z=se,B=ge,H=Ue,j=ke,Ne=qe,Re=We;return i(),r("div",ln,[e.diagnosis&&(e.diagnosis.status==="failed"||x(e.diagnosis))?(i(),F(c,{key:0,color:"error",title:"Diagnosis failed",description:e.diagnosis.error||"Unknown error"},null,8,["description"])):h("",!0),t(m)?(i(),F(c,{key:1,color:"warning",icon:"i-lucide-clock",title:"Diagnosis may be stale",description:"New evidence may have appeared since this diagnosis was made. Consider re-running."})):h("",!0),e.diagnosis&&e.diagnosis.status==="completed"?(i(),r("div",cn,[d("div",dn,[t(ee)!==null?(i(),r("div",{key:0,class:"shrink-0",title:`Confidence ${t(ee)}/100`},[d("div",gn,[(i(),r("svg",pn,[o[6]||(o[6]=d("circle",{cx:"18",cy:"18",r:"15.9155",fill:"none",class:"text-gray-200 dark:text-gray-700",stroke:"currentColor","stroke-width":"3"},null,-1)),d("circle",{cx:"18",cy:"18",r:"15.9155",fill:"none",class:V(t(Ae)),stroke:"currentColor","stroke-width":"3","stroke-linecap":"round","stroke-dasharray":`${t(ee)} 100`},null,10,mn)])),d("span",fn,f(t(ee)),1)])],8,un)):h("",!0),d("div",bn,[d("div",hn,[d("div",yn,[e.diagnosis.category?(i(),F(M,{key:0,color:ie[e.diagnosis.category]||"neutral",variant:"subtle",size:"sm",icon:$e[e.diagnosis.category]},{default:G(()=>[w(f(e.diagnosis.category),1)]),_:1},8,["color","icon"])):h("",!0),e.diagnosis.confidence?(i(),F(M,{key:1,color:Se[e.diagnosis.confidence]||"neutral",variant:"outline",size:"sm"},{default:G(()=>[w(f(e.diagnosis.confidence)+" confidence ",1)]),_:1},8,["color"])):h("",!0),e.diagnosis.confidence?(i(),F(_,{key:2,topic:"cluster.confidence"})):h("",!0),t(l)?.severity?(i(),F(M,{key:3,color:Ee[t(l).severity]||"neutral",variant:"soft",size:"sm"},{default:G(()=>[w(f(t(l).severity)+" severity ",1)]),_:1},8,["color"])):h("",!0),t(l)?.affectedArea?(i(),r("span",xn,[k(z,{name:"i-lucide-crosshair",class:"size-3 shrink-0"}),w(" "+f(t(l).affectedArea),1)])):h("",!0)]),d("div",vn,[k(_,{topic:"cluster.result"}),k(B,{icon:t(v)?"i-lucide-check":"i-lucide-clipboard",size:"xs",color:"neutral",variant:"ghost",title:"Copy full diagnosis (Markdown + HTML)",onClick:Q},null,8,["icon"])])]),e.diagnosis.summary?(i(),r("p",kn,f(e.diagnosis.summary),1)):h("",!0)])]),e.diagnosis.rootCause?(i(),r("p",_n,f(e.diagnosis.rootCause),1)):h("",!0),t(fe).length?(i(),r("ul",wn,[(i(!0),r(L,null,K(t(fe),(C,P)=>(i(),r("li",{key:P,class:"text-sm text-gray-600 dark:text-gray-400 flex gap-1.5"},[o[7]||(o[7]=d("span",{class:"text-gray-400 shrink-0 leading-5"},"•",-1)),d("span",Sn,[d("span",null,f(C.text),1),(i(!0),r(L,null,K(C.citations,Z=>(i(),r("span",{key:Z,class:"inline-flex items-center"},[d("button",{class:V(["inline-flex items-center gap-0.5 border border-default px-1.5 text-xs text-gray-500 hover:text-primary hover:border-primary transition-colors",t(g).canLocate(Z)?"rounded-l bg-elevated":"rounded bg-elevated"]),title:`View ${le(Z)} in the AI context`,onClick:Ie=>me("view-section",Z)},[k(z,{name:"i-lucide-link",class:"size-2.5"}),w(" "+f(le(Z)),1)],10,En),t(g).canLocate(Z)?(i(),r("button",{key:0,class:"inline-flex items-center rounded-r border border-l-0 border-default bg-elevated px-1 text-xs text-gray-500 hover:text-primary hover:border-primary transition-colors",title:`Show ${le(Z)} on the page`,onClick:Ie=>t(g).open(Z)},[k(z,{name:"i-lucide-map-pin",class:"size-2.5"})],8,Cn)):h("",!0)]))),128))])]))),128))])):h("",!0),t(l)?.suggestedFix?(i(),r("div",$n,[o[9]||(o[9]=d("p",{class:"text-sm font-medium text-gray-700 dark:text-gray-300 mb-1"},"Suggested fix",-1)),d("p",An,f(t(l).suggestedFix.description),1),t(l).suggestedFix.file&&!t(l).suggestedFix.patch?(i(),F(H,{key:0,"file-path":t(l).suggestedFix.file,class:"text-xs mt-1"},null,8,["file-path"])):h("",!0),t(l).suggestedFix.patch?(i(),r("div",Tn,[d("div",Nn,[d("div",Rn,[o[8]||(o[8]=d("span",{class:"text-xs text-gray-500 font-mono"},"patch",-1)),t(X)?(i(),F(M,{key:0,color:t(X).color,variant:"subtle",size:"sm",icon:t(X).icon,title:t(X).title},{default:G(()=>[w(f(t(X).label),1)]),_:1},8,["color","icon","title"])):h("",!0)]),d("div",In,[k(B,{size:"xs",color:"neutral",variant:"ghost",icon:"i-lucide-download",title:"Download .patch file",onClick:T}),k(B,{size:"xs",color:"neutral",variant:"ghost",icon:"i-lucide-terminal",title:"Copy git apply command",onClick:W}),k(B,{icon:t(v)?"i-lucide-check":"i-lucide-clipboard",size:"xs",color:"neutral",variant:"ghost",title:"Copy patch",onClick:o[0]||(o[0]=C=>t(y)(t(l).suggestedFix.patch))},null,8,["icon"])])]),k(j,{text:"```diff\n"+t(l).suggestedFix.patch+"\n```"},null,8,["text"]),t(O)&&(t(O).status==="stale-file"||t(O).status==="invalid")?(i(),r("p",Mn,f(t(O).errors[0]||"This patch could not be verified against the source."),1)):h("",!0)])):t(l).suggestedFix.code?(i(),r("div",On,[k(Ne,{code:t(l).suggestedFix.code},null,8,["code"])])):h("",!0)])):h("",!0),t(ce).length?(i(),r("div",zn,[d("div",Ln,[d("button",{class:"flex items-center gap-1.5 text-xs font-medium text-gray-500 uppercase tracking-wide hover:text-gray-700 dark:hover:text-gray-300",onClick:o[1]||(o[1]=C=>oe.value=!t(oe))},[k(z,{name:t(oe)?"i-lucide-chevron-down":"i-lucide-chevron-right",class:"size-3.5"},null,8,["name"]),w(" Other hypotheses considered ("+f(t(ce).length)+") ",1)]),k(_,{topic:"cluster.hypotheses"})]),t(oe)?(i(),r("div",Bn,[(i(!0),r(L,null,K(t(ce),(C,P)=>(i(),r("div",{key:P,class:"rounded-md border border-default bg-elevated/40 px-2.5 py-1.5"},[d("div",Dn,[C.category?(i(),F(M,{key:0,color:ie[C.category]||"neutral",variant:"subtle",size:"sm"},{default:G(()=>[w(f(C.category),1)]),_:2},1032,["color"])):h("",!0),typeof C.likelihood=="number"?(i(),r("div",Fn,[d("div",Pn,[d("div",{class:"h-full rounded-full bg-gray-400 dark:bg-gray-500",style:ye({width:`${C.likelihood}%`})},null,4)]),d("span",Un,f(C.likelihood)+"/100",1)])):h("",!0)]),C.rootCause?(i(),r("p",jn,f(C.rootCause),1)):h("",!0)]))),128))])):h("",!0)])):h("",!0),t(l)?.investigationSteps?.length?(i(),r("div",{key:4,class:V(["space-y-1.5",t(te)?"rounded-lg border border-amber-300/60 dark:border-amber-500/30 bg-amber-50/60 dark:bg-amber-500/10 p-3":""])},[d("p",{class:V(["text-xs font-medium uppercase tracking-wide flex items-center gap-1.5",t(te)?"text-amber-700 dark:text-amber-400":"text-gray-500"])},[t(te)?(i(),F(z,{key:0,name:"i-lucide-flask-conical",class:"size-3.5 shrink-0"})):h("",!0),w(" "+f(t(te)?"Low confidence — gather more evidence":"To confirm this diagnosis"),1)],2),d("ul",Hn,[(i(!0),r(L,null,K(t(l).investigationSteps,(C,P)=>(i(),r("li",{key:P,class:V(["text-sm flex gap-2 items-start cursor-pointer select-none",t(N).has(Number(P))?"text-gray-400 dark:text-gray-500 line-through":"text-gray-600 dark:text-gray-400"]),onClick:Z=>t(N).has(Number(P))?t(N).delete(Number(P)):t(N).add(Number(P))},[k(z,{name:t(N).has(Number(P))?"i-lucide-check-square":"i-lucide-square",class:V(["size-4 shrink-0 mt-0.5",t(N).has(Number(P))?"text-primary":"text-gray-400"])},null,8,["name","class"]),w(" "+f(C),1)],10,Gn))),128))]),t(te)?(i(),F(B,{key:0,size:"xs",color:"warning",variant:"soft",icon:"i-lucide-clipboard-pen",class:"mt-1",title:"Pre-fill the additional-context box with these checks, then re-diagnose",onClick:Ce},{default:G(()=>[...o[10]||(o[10]=[w(" Add to context & refine ",-1)])]),_:1})):h("",!0)],2)):h("",!0),t(l)?.preventionTips?.length?(i(),r("ul",Vn,[o[11]||(o[11]=d("li",{class:"text-xs font-medium text-gray-500 uppercase tracking-wide"},"Prevention tips",-1)),(i(!0),r(L,null,K(t(l).preventionTips,(C,P)=>(i(),r("li",{key:P,class:"text-sm text-gray-600 dark:text-gray-400 flex gap-1.5"},[k(z,{name:"i-lucide-lightbulb",class:"size-3.5 shrink-0 mt-0.5 text-yellow-500"}),w(" "+f(C),1)]))),128))])):h("",!0),d("div",Kn,[d("div",qn,[d("div",Wn,[k(B,{icon:(t(A)==="up","i-lucide-thumbs-up"),color:t(A)==="up"?"success":"neutral",variant:"ghost",size:"xs",loading:t(p),onClick:o[2]||(o[2]=C=>q("up"))},null,8,["icon","color","loading"]),k(B,{icon:(t(A)==="down","i-lucide-thumbs-down"),color:t(A)==="down"?"error":"neutral",variant:"ghost",size:"xs",loading:t(p),onClick:o[3]||(o[3]=C=>q("down"))},null,8,["icon","color","loading"]),t(A)?(i(),r("button",{key:0,class:"text-xs text-gray-400 hover:text-gray-600 dark:hover:text-gray-300 ml-1 transition-colors",onClick:o[4]||(o[4]=C=>S.value=!t(S))},[k(z,{name:t(S)?"i-lucide-chevron-up":"i-lucide-chevron-down",class:"size-3"},null,8,["name"]),w(" "+f(t(U)?"Edit note":"Note"),1)])):h("",!0)]),t(S)?(i(),r("div",Xn,[k(Re,{modelValue:t(U),"onUpdate:modelValue":o[5]||(o[5]=C=>ze(U)?U.value=C:null),size:"xs",placeholder:"Add a note about this feedback…",class:"max-w-64",ui:{base:"text-xs"},rows:2},null,8,["modelValue"]),k(B,{size:"xs",color:"primary",variant:"solid",loading:t(E),onClick:b},{default:G(()=>[...o[12]||(o[12]=[w(" Save ",-1)])]),_:1},8,["loading"])])):h("",!0)]),d("div",Zn,[t(de).length>1?(i(),F(M,{key:0,color:"neutral",variant:"subtle",size:"sm",icon:"i-lucide-workflow",title:t(de).map(C=>`${C.role}: ${C.model}`).join(" → ")},{default:G(()=>[...o[13]||(o[13]=[w(" 2-stage ",-1)])]),_:1},8,["title"])):h("",!0),d("span",null,[w(f(e.diagnosis.model)+" · "+f(a(e.diagnosis.inputTokens,e.diagnosis.outputTokens)),1),t(be)>0?(i(),r(L,{key:0},[w(" ("+f(t(be))+" cached)",1)],64)):h("",!0),w(" · "+f(t(Xe)(e.diagnosis.updatedAt)),1)])])])])):h("",!0),e.diagnosis?h("",!0):(i(),r("div",Yn,[k(z,{name:"i-lucide-sparkles",class:"size-8 mb-2 opacity-30"}),o[14]||(o[14]=d("p",{class:"text-sm"},"Diagnosis will appear here",-1))]))])}}}),xs=Object.assign(Jn,{__name:"DiagnosisResult"});let ue=null;function vs(){const e=De("ai-status",()=>null);async function u(){e.value===null&&(ue||(ue=$fetch("/api/ai/status").catch(()=>({configured:!1}))),e.value=await ue)}return u(),{aiStatus:e}}export{ls as _,ke as a,us as b,fs as c,an as d,vs as e,hs as f,xs as g,ys as h,ds as i,bs as j,ms as k,Ze as l,ps as m,gs as s,cs as u};
@@ -1 +0,0 @@
1
- import{r as C,B as I,c4 as N,al as D,c5 as X,G,aM as Y,Y as K,a1 as U,a4 as Q,b0 as Z,a2 as V,a3 as H,o as F,f as W,U as ee,k as p,_ as te,h as k,a6 as J,c6 as oe,l as R,g as ne,T as ie,p as ae,V as re}from"./DHltYerF.js";const se=3456e4;function le(e,a,t){const n=e.indexOf(";",a);return n===-1?t:n}function ue(e,a,t){const n=e.indexOf("=",a);return n<t?n:-1}function M(e,a,t){if(a===t)return"";let n=a,i=t;do{const l=e.charCodeAt(n);if(l!==32&&l!==9)break}while(++n<i);for(;i>n;){const l=e.charCodeAt(i-1);if(l!==32&&l!==9)break;i--}return e.slice(n,i)}const ce=(()=>{const e=function(){};return e.prototype=Object.create(null),e})();function de(e,a){const t=new ce,n=e.length;if(n<2)return t;const i=a?.decode||fe,l=a?.allowMultiple||!1;let o=0;do{const c=ue(e,o,n);if(c===-1)break;const u=le(e,o,n);if(c>u){o=e.lastIndexOf(";",c-1)+1;continue}const r=M(e,o,c);if(a?.filter&&!a.filter(r)){o=u+1;continue}const f=i(M(e,c+1,u));if(l){const d=t[r];d===void 0?t[r]=f:Array.isArray(d)?d.push(f):t[r]=[d,f]}else t[r]===void 0&&(t[r]=f);o=u+1}while(o<n);return t}function fe(e){if(!e.includes("%"))return e;try{return decodeURIComponent(e)}catch{return e}}const pe=/^[\u0021-\u003A\u003C\u003E-\u007E]+$/,ve=/^[\u0021-\u003A\u003C-\u007E]*$/,he=/^([.]?[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?)([.][a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?)*$/i,me=/^[\u0020-\u003A\u003C-\u007E]*$/,ge=Object.prototype.toString;function $(e,a,t){const n=typeof e=="object"&&e!==null,i=n?a:t,l=i?.stringify||JSON.stringify,o=n?e:{...t,name:e,value:a==null?"":typeof a=="string"?a:l(a)},c=i?.encode||encodeURIComponent;if(!pe.test(o.name))throw new TypeError(`argument name is invalid: ${o.name}`);const u=o.value?c(o.value):"";if(!ve.test(u))throw new TypeError(`argument val is invalid: ${o.value}`);if(!o.secure){if(o.partitioned)throw new TypeError("Partitioned cookies must have the Secure attribute");if(o.sameSite&&String(o.sameSite).toLowerCase()==="none")throw new TypeError("SameSite=None cookies must have the Secure attribute");if(o.name.length>9&&o.name.charCodeAt(0)===95&&o.name.charCodeAt(1)===95){const f=o.name.toLowerCase();if(f.startsWith("__secure-")||f.startsWith("__host-"))throw new TypeError(`${o.name} cookies must have the Secure attribute`)}}if(o.name.length>7&&o.name.charCodeAt(0)===95&&o.name.charCodeAt(1)===95&&o.name.toLowerCase().startsWith("__host-")){if(o.path!=="/")throw new TypeError("__Host- cookies must have Path=/");if(o.domain)throw new TypeError("__Host- cookies must not have a Domain attribute")}let r=o.name+"="+u;if(o.maxAge!==void 0){if(!Number.isInteger(o.maxAge))throw new TypeError(`option maxAge is invalid: ${o.maxAge}`);r+="; Max-Age="+Math.max(0,Math.min(o.maxAge,se))}if(o.domain){if(!he.test(o.domain))throw new TypeError(`option domain is invalid: ${o.domain}`);r+="; Domain="+o.domain}if(o.path){if(!me.test(o.path))throw new TypeError(`option path is invalid: ${o.path}`);r+="; Path="+o.path}if(o.expires){if(!be(o.expires)||!Number.isFinite(o.expires.valueOf()))throw new TypeError(`option expires is invalid: ${o.expires}`);r+="; Expires="+o.expires.toUTCString()}if(o.httpOnly&&(r+="; HttpOnly"),o.secure&&(r+="; Secure"),o.partitioned&&(r+="; Partitioned"),o.priority)switch(typeof o.priority=="string"?o.priority.toLowerCase():void 0){case"low":r+="; Priority=Low";break;case"medium":r+="; Priority=Medium";break;case"high":r+="; Priority=High";break;default:throw new TypeError(`option priority is invalid: ${o.priority}`)}if(o.sameSite)switch(typeof o.sameSite=="string"?o.sameSite.toLowerCase():o.sameSite){case!0:case"strict":r+="; SameSite=Strict";break;case"lax":r+="; SameSite=Lax";break;case"none":r+="; SameSite=None";break;default:throw new TypeError(`option sameSite is invalid: ${o.sameSite}`)}return r}function be(e){return ge.call(e)==="[object Date]"}function g(e){if(typeof e!="object")return e;var a,t,n=Object.prototype.toString.call(e);if(n==="[object Object]"){if(e.constructor!==Object&&typeof e.constructor=="function"){t=new e.constructor;for(a in e)e.hasOwnProperty(a)&&t[a]!==e[a]&&(t[a]=g(e[a]))}else{t={};for(a in e)a==="__proto__"?Object.defineProperty(t,a,{value:g(e[a]),configurable:!0,enumerable:!0,writable:!0}):t[a]=g(e[a])}return t}if(n==="[object Array]"){for(a=e.length,t=Array(a);a--;)t[a]=g(e[a]);return t}return n==="[object Set]"?(t=new Set,e.forEach(function(i){t.add(g(i))}),t):n==="[object Map]"?(t=new Map,e.forEach(function(i,l){t.set(g(l),g(i))}),t):n==="[object Date]"?new Date(+e):n==="[object RegExp]"?(t=new RegExp(e.source,e.flags),t.lastIndex=e.lastIndex,t):n==="[object DataView]"?new e.constructor(g(e.buffer)):n==="[object ArrayBuffer]"?e.slice(0):n.slice(-6)==="Array]"?new e.constructor(e):e}function ye(e){if(e!=="undefined")try{const a=JSON.parse(e);return typeof a=="number"&&String(a)!==e?e:a}catch{return e}}const Se={path:"/",watch:!0,decode:e=>e&&ye(decodeURIComponent(e)),encode:e=>{if(typeof e!="string"||e==="undefined")return encodeURIComponent(JSON.stringify(e));try{if(typeof JSON.parse(e)!="string")return encodeURIComponent(JSON.stringify(e))}catch{}return encodeURIComponent(e)},refresh:!1},j=globalThis.cookieStore;function we(e,a){const t={...Se,...a};t.filter??=r=>r===e;const n=B(t)||{};let i;t.maxAge!==void 0?i=t.maxAge*1e3:t.expires&&(i=t.expires.getTime()-Date.now());const l=i!==void 0&&i<=0,o=l||n[e]===void 0||n[e]===null,c=g(l?void 0:n[e]??t.default?.()),u=i&&!l?Oe(c,i,t.watch&&t.watch!=="shallow"):C(c);{let r=null;try{!j&&typeof BroadcastChannel<"u"&&(r=new BroadcastChannel(`nuxt:cookies:${e}`))}catch{}const f=(h=!1)=>{if(!h&&(t.readonly||Y(u.value,n[e])))return;const b=u.value===null||u.value===void 0?void 0:t.encode(u.value);Ee(e,b,t),n[e]=g(u.value),r?.postMessage({value:t.encode(u.value)})},d=h=>{const b=h.refresh?B(t)?.[e]:t.decode(h.value);y=!0,u.value=b,n[e]=g(b),G(()=>{y=!1})};let y=!1;const S=!!N();if(S&&D(()=>{y=!0,f(),r?.close()}),j){const h=b=>{const A=b.changed.find(E=>E.name===e),L=b.deleted.find(E=>E.name===e);A&&d({value:A.value}),L&&d({value:null})};j.addEventListener("change",h),S&&D(()=>j.removeEventListener("change",h))}else r&&(r.onmessage=({data:h})=>d(h));t.watch&&I(u,()=>{y||f(t.refresh)},{deep:t.watch!=="shallow"}),o&&f(o)}return u}function B(e={}){return de(document.cookie,e)}const Ce=e=>e;function ze(e){const{encode:a,decode:t,...n}=e;return{...n,encode:Ce}}function ke(e,a,t={}){const n=ze(t);return a===void 0?$(e,"",{...n,maxAge:-1}):$(e,a,n)}function Ee(e,a,t={}){document.cookie=ke(e,a,t)}const P=2147483647;function Oe(e,a,t){let n,i,l=0;const o=t?C(e):{value:e};return N()&&D(()=>{i?.(),clearTimeout(n)}),X((c,u)=>{t&&(i=I(o,u));function r(){const d=a-l,y=d<P?d:P;n=setTimeout(()=>{if(l+=y,l<a)return r();o.value=void 0,u()},y)}function f(){l=0,clearTimeout(n),r()}return{get(){return c(),o.value},set(d){f(),o.value=d,u()}}})}const[Te,xe]=K("DashboardGroup"),_e={base:"lg:hidden",variants:{side:{left:"",right:""}}},Re=Object.assign({inheritAttrs:!1},{__name:"UDashboardSidebarToggle",props:{color:{type:null,required:!1,default:"neutral"},variant:{type:null,required:!1,default:"ghost"},side:{type:String,required:!1,default:"left"},ui:{type:Object,required:!1},label:{type:String,required:!1},activeColor:{type:null,required:!1},activeVariant:{type:null,required:!1},size:{type:null,required:!1},square:{type:Boolean,required:!1},block:{type:Boolean,required:!1},loadingAuto:{type:Boolean,required:!1},onClick:{type:[Function,Array],required:!1},class:{type:null,required:!1},icon:{type:null,required:!1},avatar:{type:Object,required:!1},leading:{type:Boolean,required:!1},leadingIcon:{type:null,required:!1},trailing:{type:Boolean,required:!1},trailingIcon:{type:null,required:!1},loading:{type:Boolean,required:!1},loadingIcon:{type:null,required:!1},as:{type:null,required:!1},type:{type:null,required:!1},disabled:{type:Boolean,required:!1},exactActiveClass:{type:String,required:!1},viewTransition:{type:Boolean,required:!1}},setup(e){const t=U("dashboardSidebarToggle",e),n=Q(Z(t,"icon","side","class")),{t:i}=V(),l=H(),{sidebarOpen:o,toggleSidebar:c}=Te({sidebarOpen:C(!1),toggleSidebar:()=>{}}),u=k(()=>J({extend:_e,...l.ui?.dashboardSidebarToggle||{}}));return(r,f)=>(F(),W(te,ee({...p(n),icon:p(t).icon||(p(o)?p(l).ui.icons.close:p(l).ui.icons.menu),"aria-label":p(o)?p(i)("dashboardSidebarToggle.close"):p(i)("dashboardSidebarToggle.open"),...r.$attrs},{class:u.value({class:[p(t).ui?.base,p(t).class],side:p(t).side}),onClick:p(c)}),null,16,["class","onClick"]))}});function je(e,a={},{collapsed:t=C(!1)}={}){const n=C(null),i=k(()=>({side:"left",minSize:0,maxSize:100,defaultSize:0,storage:"cookie",persistent:!0,collapsible:!1,collapsedSize:0,resizable:!0,unit:"%",...R(a)?a.value:a})),{dir:l}=V(),o={size:i.value.defaultSize,collapsed:p(t)??!1},c=i.value.persistent&&(i.value.resizable||i.value.collapsible)?i.value.storage==="cookie"?we(e,{...i.value.storageOptions,default:()=>o}):oe(e,o,void 0,i.value.storageOptions):C(o),u=s=>{c.value?Object.assign(c.value,s):c.value={...o,...s}},r=k({get:()=>c.value?.collapsed??o.collapsed,set:s=>{i.value.collapsible&&(R(t)&&(t.value=s),u({collapsed:s}))}}),f=C(i.value.defaultSize),d=k({get:()=>c.value?.size??i.value.defaultSize,set:s=>{u({size:s})}}),y=k(()=>r.value?i.value.collapsedSize:d.value),S=C(!1),h=()=>i.value.unit==="rem"?Number.parseFloat(getComputedStyle(document.documentElement).fontSize):1,b=(s,v,O,T)=>{if(!n.value||!i.value.resizable)return;const _=n.value.parentElement?.offsetWidth||1,z=l.value==="rtl";let m;z?m=i.value.side==="left"?v-s:s-v:m=i.value.side==="left"?s-v:v-s;const w=O+m;let q;if(i.value.unit==="rem"?q=w/T:i.value.unit==="px"?q=w:q=w/_*100,i.value.collapsible&&q<i.value.collapsedSize+4){x(!0);return}else r.value&&x(!1);d.value=Math.min(i.value.maxSize,Math.max(i.value.minSize,q))},A=s=>{if(!n.value||!i.value.resizable)return;s.preventDefault(),s.stopPropagation();const v=n.value.getBoundingClientRect().width;if(!v)return;const O=s.clientX,T=v,_=h();S.value=!0;const z=w=>{b(w.clientX,O,T,_)},m=()=>{S.value=!1,document.removeEventListener("mousemove",z),document.removeEventListener("mouseup",m)};document.addEventListener("mousemove",z),document.addEventListener("mouseup",m)},L=s=>{if(!n.value||!i.value.resizable||!s.touches[0])return;s.preventDefault(),s.stopPropagation();const v=n.value.getBoundingClientRect().width;if(!v)return;const O=s.touches[0].clientX,T=v,_=h();S.value=!0;const z=w=>{w.touches[0]&&b(w.touches[0].clientX,O,T,_)},m=()=>{S.value=!1,document.removeEventListener("touchmove",z),document.removeEventListener("touchend",m),document.removeEventListener("touchcancel",m)};document.addEventListener("touchmove",z,{passive:!1}),document.addEventListener("touchend",m),document.addEventListener("touchcancel",m)},E=s=>{!n.value||!i.value.resizable||(s.preventDefault(),s.stopPropagation(),r.value&&x(!1),d.value=i.value.defaultSize)},x=s=>{if(!i.value.collapsible)return;const v=s??!r.value;v&&!r.value?f.value=d.value:!v&&r.value&&(d.value=f.value),r.value=v};return R(t)&&c.value?.collapsed&&(t.value=c.value.collapsed),R(t)&&I(t,s=>{i.value.collapsible&&c.value?.collapsed!==s&&(r.value=s)}),{el:n,size:y,isDragging:S,isCollapsed:r,onMouseDown:A,onTouchStart:L,onDoubleClick:E,collapse:x}}const qe={base:"hidden lg:block touch-none select-none cursor-ew-resize relative before:absolute before:inset-y-0 before:-left-1.5 before:-right-1.5 before:z-1"},Le={__name:"UDashboardResizeHandle",props:{as:{type:null,required:!1},class:{type:null,required:!1},ui:{type:Object,required:!1}},setup(e){const t=U("dashboardResizeHandle",e),n=H(),i=k(()=>J({extend:qe,...n.ui?.dashboardResizeHandle||{}}));return(l,o)=>(F(),W(p(re),{as:p(t).as,role:"separator",class:ae(i.value({class:[p(t).ui?.base,p(t).class]}))},{default:ne(()=>[ie(l.$slots,"default")]),_:3},8,["as","class"]))}};export{Re as _,Te as a,je as b,Le as c,xe as p,we as u};
@@ -1 +0,0 @@
1
- import{aM as Z,Y as ee,d as B,W as Ie,b6 as G,bX as Se,ay as qe,X as fe,B as Le,o as w,f as L,g as K,T as D,k as n,q as pe,G as z,V as P,bb as ve,r as S,bc as J,b7 as Ke,bU as Ve,bT as me,j as he,Q as O,H as ge,c7 as Te,C as He,ab as Be,h as H,bp as Re,az as ye,U as te,S as be,bq as De,aK as Pe,a0 as Me,c8 as Ne,c9 as ze,bj as Oe,ca as $e,c as re,F as ue,y as Ge,ae as Ue,O as We,cb as je,aG as Xe}from"./DHltYerF.js";import{u as Ye}from"./qH_j2A3a.js";import{V as Qe}from"./CcXaak_K.js";import{u as Je}from"./BFP6M-20.js";function $(o,a,i){const t=o.findIndex(v=>Z(v,a)),p=o.findIndex(v=>Z(v,i));if(t===-1||p===-1)return[];const[d,g]=[t,p].sort((v,m)=>v-m);return o.slice(d,g+1)}function Ze(){return{ALT:"Alt",ARROW_DOWN:"ArrowDown",ARROW_LEFT:"ArrowLeft",ARROW_RIGHT:"ArrowRight",ARROW_UP:"ArrowUp",BACKSPACE:"Backspace",CAPS_LOCK:"CapsLock",CONTROL:"Control",DELETE:"Delete",END:"End",ENTER:"Enter",ESCAPE:"Escape",F1:"F1",F10:"F10",F11:"F11",F12:"F12",F2:"F2",F3:"F3",F4:"F4",F5:"F5",F6:"F6",F7:"F7",F8:"F8",F9:"F9",HOME:"Home",META:"Meta",PAGE_DOWN:"PageDown",PAGE_UP:"PageUp",SHIFT:"Shift",SPACE:" ",TAB:"Tab",CTRL:"Control",ASTERISK:"*",SPACE_CODE:"Space"}}function de(o){return o?.querySelector("[data-state=checked]")}function et(o,a,i){return o===void 0?!1:Array.isArray(o)?o.some(t=>q(t,a,i)):q(o,a,i)}function q(o,a,i){return o===void 0||a===void 0?!1:typeof o=="string"?o===a:typeof i=="function"?i(o,a):typeof i=="string"?o?.[i]===a?.[i]:Z(o,a)}const[U,tt]=ee("ListboxRoot");var at=B({__name:"ListboxRoot",props:{modelValue:{type:null,required:!1},defaultValue:{type:null,required:!1},multiple:{type:Boolean,required:!1},orientation:{type:String,required:!1,default:"vertical"},dir:{type:String,required:!1},disabled:{type:Boolean,required:!1},selectionBehavior:{type:String,required:!1,default:"toggle"},highlightOnHover:{type:Boolean,required:!1},by:{type:[String,Function],required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},name:{type:String,required:!1},required:{type:Boolean,required:!1}},emits:["update:modelValue","highlight","entryFocus","leave"],setup(o,{expose:a,emit:i}){const t=o,p=i,{multiple:d,highlightOnHover:g,orientation:v,disabled:m,selectionBehavior:k,dir:E}=Ie(t),{getItems:x}=G({isProvider:!0}),{handleTypeaheadSearch:l}=Se(),{primitiveElement:u,currentElement:c}=ve(),r=Ze(),_=qe(E),h=Ye(c),A=S(),V=S(!1),T=S(!0),y=fe(t,"modelValue",p,{defaultValue:t.defaultValue??(d.value?[]:void 0),passive:t.modelValue===void 0,deep:!0});function xe(e){if(V.value=!0,t.multiple){const s=Array.isArray(y.value)?[...y.value]:[],f=s.findIndex(b=>q(b,e,t.by));t.selectionBehavior==="toggle"?(f===-1?s.push(e):s.splice(f,1),y.value=s):(y.value=[e],A.value=e)}else t.selectionBehavior==="toggle"&&q(y.value,e,t.by)?y.value=void 0:y.value=e;setTimeout(()=>{V.value=!1},1)}const C=S(null),W=S(null),R=S(!1),j=S(!1),ae=J(),X=J(),ie=J();function Y(){return x().map(e=>e.ref).filter(e=>e.dataset.disabled!=="")}function I(e,s=!0,f){if(!e)return;C.value=e,(f??T.value)&&C.value.focus(),s&&C.value.scrollIntoView({block:"nearest"});const b=x().find(F=>F.ref===e);p("highlight",b)}function _e(e){if(R.value)ie.trigger(e);else{const s=x().find(f=>q(f.value,e,t.by));s&&(C.value=s.ref,I(s.ref))}}function Ce(e){if(C.value&&C.value.isConnected){if(e.ctrlKey||e.metaKey||e.altKey)return;e.preventDefault(),e.stopPropagation(),j.value||C.value.click()}}function Ee(e){if(T.value){if(V.value=!0,R.value)X.trigger(e);else{const s=e.altKey||e.ctrlKey||e.metaKey;if(s&&e.key==="a"&&d.value){const f=x(),b=f.map(M=>M.value);y.value=[...b],e.preventDefault();const F=f.at(-1);F&&I(F.ref)}else if(!s){const f=l(e.key,x());f&&I(f)}}setTimeout(()=>{V.value=!1},1)}}function Fe(){j.value=!0}function ke(){z(()=>{j.value=!1})}function ne(){z(()=>{const e=new KeyboardEvent("keydown",{key:"PageUp"});oe(e)})}function Q(e){const s=C.value;s?.isConnected&&(W.value=s),C.value=null,p("leave",e)}function Ae(e){const s=new CustomEvent("listbox.entryFocus",{bubbles:!1,cancelable:!0});if(e.currentTarget?.dispatchEvent(s),p("entryFocus",s),!s.defaultPrevented)if(W.value)I(W.value);else{const f=Y()?.[0];I(f)}}function oe(e){const s=Ke(e,v.value,_.value);if(!s)return;let f=Y();if(C.value){if(s==="last")f.reverse();else if(s==="prev"||s==="next"){s==="prev"&&f.reverse();const b=f.indexOf(C.value);f=f.slice(b+1)}we(e,f[0])}if(f.length){const b=!C.value&&s==="prev"?f.length-1:0;I(f[b])}if(R.value)return X.trigger(e)}function we(e,s){if(!(R.value||t.selectionBehavior!=="replace"||!d.value||!Array.isArray(y.value)||(e.altKey||e.ctrlKey||e.metaKey)&&!e.shiftKey)&&e.shiftKey){const b=x().filter(N=>N.ref.dataset.disabled!=="");let F=b.find(N=>N.ref===s)?.value;if(e.key===r.END?F=b.at(-1)?.value:e.key===r.HOME&&(F=b[0]?.value),!F||!A.value)return;const M=$(b.map(N=>N.value),A.value,F);y.value=M}}async function le(e,s=!0){if(Ve)if(await z(),R.value)ae.trigger({event:e,scroll:s});else{const f=Y(),b=f.find(M=>M.dataset.state==="checked"),F=s?void 0:!1;b?I(b,s,F):f.length&&I(f[0],s,F)}}let se=!1;return Le(y,()=>{if(!V.value){const e=se;se=!0,z(()=>{le(void 0,e)})}},{immediate:!0,deep:!0}),a({highlightedElement:C,highlightItem:_e,highlightFirstItem:ne,highlightSelected:le,getItems:x}),tt({modelValue:y,onValueChange:xe,multiple:d,orientation:v,dir:_,disabled:m,highlightOnHover:g,highlightedElement:C,isVirtual:R,virtualFocusHook:ae,virtualKeydownHook:X,virtualHighlightHook:ie,by:t.by,firstValue:A,selectionBehavior:k,focusable:T,onLeave:Q,onEnter:Ae,changeHighlight:I,onKeydownEnter:Ce,onKeydownNavigation:oe,onKeydownTypeAhead:Ee,onCompositionStart:Fe,onCompositionEnd:ke,highlightFirstItem:ne}),(e,s)=>(w(),L(n(P),{ref_key:"primitiveElement",ref:u,as:e.as,"as-child":e.asChild,dir:n(_),"data-disabled":n(m)?"":void 0,onPointerleave:Q,onFocusout:s[0]||(s[0]=async f=>{const b=f.relatedTarget||f.target;await z(),C.value&&n(c)&&!n(c).contains(b)&&Q(f)})},{default:K(()=>[D(e.$slots,"default",{modelValue:n(y)}),n(h)&&e.name?(w(),L(n(Qe),{key:0,name:e.name,value:n(y),disabled:n(m),required:e.required},null,8,["name","value","disabled","required"])):pe("v-if",!0)]),_:3},8,["as","as-child","dir","data-disabled"]))}}),yt=at,it=B({__name:"ListboxContent",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(o){const{CollectionSlot:a}=G(),i=U(),t=me(!1,10);return(p,d)=>(w(),L(n(a),null,{default:K(()=>[he(n(P),{role:"listbox",as:p.as,"as-child":p.asChild,tabindex:n(i).focusable.value?n(i).highlightedElement.value?"-1":"0":"-1","aria-orientation":n(i).orientation.value,"aria-multiselectable":!!n(i).multiple.value,"data-orientation":n(i).orientation.value,onMousedown:d[0]||(d[0]=ge(g=>t.value=!0,["left"])),onFocus:d[1]||(d[1]=g=>{n(t)||n(i).onEnter(g)}),onKeydown:[d[2]||(d[2]=O(g=>{n(i).orientation.value==="vertical"&&(g.key==="ArrowLeft"||g.key==="ArrowRight")||n(i).orientation.value==="horizontal"&&(g.key==="ArrowUp"||g.key==="ArrowDown")||(g.preventDefault(),n(i).focusable.value&&n(i).onKeydownNavigation(g))},["down","up","left","right","home","end"])),O(n(i).onKeydownEnter,["enter"]),n(i).onKeydownTypeAhead]},{default:K(()=>[D(p.$slots,"default")]),_:3},8,["as","as-child","tabindex","aria-orientation","aria-multiselectable","data-orientation","onKeydown"])]),_:3}))}}),bt=it,nt=B({__name:"ListboxFilter",props:{modelValue:{type:String,required:!1},autoFocus:{type:Boolean,required:!1},disabled:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"input"}},emits:["update:modelValue"],setup(o,{emit:a}){const i=o,p=fe(i,"modelValue",a,{defaultValue:"",passive:i.modelValue===void 0}),d=U(),{primitiveElement:g,currentElement:v}=ve(),m=H(()=>i.disabled||d.disabled.value||!1),k=S();Te(()=>k.value=d.highlightedElement.value?.id),He(()=>{d.focusable.value=!1,setTimeout(()=>{i.autoFocus&&v.value?.focus()},1)}),Be(()=>{d.focusable.value=!0});const{isComposing:E,handleCompositionStart:x,handleCompositionEnd:l}=Re(h=>{p.value=h.target.value,d.onCompositionEnd(),d.highlightFirstItem()});function u(){d.onCompositionStart(),x()}function c(h){E.value||(p.value=h.target.value,d.highlightFirstItem())}function r(h){E.value||(h.preventDefault(),d.onKeydownNavigation(h))}function _(h){E.value||d.onKeydownEnter(h)}return(h,A)=>(w(),L(n(P),{ref_key:"primitiveElement",ref:g,as:h.as,"as-child":h.asChild,value:n(p),disabled:m.value?"":void 0,"data-disabled":m.value?"":void 0,"aria-disabled":m.value??void 0,"aria-activedescendant":k.value,type:"text",onKeydown:[O(r,["down","up","home","end"]),O(_,["enter"])],onInput:c,onCompositionstart:u,onCompositionend:n(l)},{default:K(()=>[D(h.$slots,"default",{modelValue:n(p)})]),_:3},8,["as","as-child","value","disabled","data-disabled","aria-disabled","aria-activedescendant","onCompositionend"]))}}),xt=nt;const[_t,ot]=ee("ListboxGroup");var lt=B({__name:"ListboxGroup",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(o){const a=o,i=ye(void 0,"reka-listbox-group");return ot({id:i}),(t,p)=>(w(),L(n(P),te({role:"group"},a,{"aria-labelledby":n(i)}),{default:K(()=>[D(t.$slots,"default")]),_:3},16,["aria-labelledby"]))}}),Ct=lt;const st="listbox.select",[rt,ut]=ee("ListboxItem");var dt=B({__name:"ListboxItem",props:{value:{type:null,required:!0},disabled:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"div"}},emits:["select"],setup(o,{emit:a}){const i=o,t=a,p=ye(void 0,"reka-listbox-item"),{CollectionItem:d}=G(),{forwardRef:g,currentElement:v}=be(),m=U(),k=H(()=>v.value!=null&&v.value===m.highlightedElement.value),E=H(()=>et(m.modelValue.value,i.value,m.by)),x=H(()=>m.disabled.value||i.disabled);async function l(c){t("select",c),!c?.defaultPrevented&&!x.value&&c&&(m.onValueChange(i.value),m.changeHighlight(v.value))}function u(c){const r={originalEvent:c,value:i.value};Pe(st,l,r)}return ut({isSelected:E}),(c,r)=>(w(),L(n(d),{value:c.value},{default:K(()=>[De([k.value,E.value,x.value,n(m).focusable.value],()=>he(n(P),te({id:n(p)},c.$attrs,{ref:n(g),role:"option",tabindex:n(m).focusable.value?k.value?"0":"-1":-1,"aria-selected":E.value,as:c.as,"as-child":c.asChild,disabled:x.value?"":void 0,"data-disabled":x.value?"":void 0,"data-highlighted":k.value?"":void 0,"data-state":E.value?"checked":"unchecked",onClick:u,onKeydown:O(ge(u,["prevent"]),["space"]),onPointermove:r[0]||(r[0]=()=>{n(m).highlightedElement.value!==n(v)&&n(m).highlightOnHover.value&&n(m).changeHighlight(n(v),!1,!1)})}),{default:K(()=>[D(c.$slots,"default")]),_:3},16,["id","tabindex","aria-selected","as","as-child","disabled","data-disabled","data-highlighted","data-state","onKeydown"]),r,1)]),_:3},8,["value"]))}}),Et=dt,ct=B({__name:"ListboxItemIndicator",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"span"}},setup(o){const a=o;be();const i=rt();return(t,p)=>n(i).isSelected.value?(w(),L(n(P),te({key:0,"aria-hidden":"true"},a),{default:K(()=>[D(t.$slots,"default")]),_:3},16)):pe("v-if",!0)}}),Ft=ct,ft=B({__name:"ListboxVirtualizer",props:{options:{type:Array,required:!0},overscan:{type:Number,required:!1},estimateSize:{type:[Number,Function],required:!1},textContent:{type:Function,required:!1}},setup(o){const a=o,i=Me(),t=U(),p=Ne(),{getItems:d}=G();t.isVirtual.value=!0;const g=H(()=>{const l=p.value;if(l){const u=window.getComputedStyle(l);return{start:Number.parseFloat(u.paddingBlockStart||u.paddingTop),end:Number.parseFloat(u.paddingBlockEnd||u.paddingBottom)}}else return{start:0,end:0}}),v=Je({get scrollPaddingStart(){return g.value.start},get scrollPaddingEnd(){return g.value.end},get count(){return a.options.length},get horizontal(){return t.orientation.value==="horizontal"},estimateSize(l){return typeof a.estimateSize=="function"?a.estimateSize(l):a.estimateSize??28},getScrollElement(){return p.value},overscan:a.overscan??12}),m=H(()=>v.value.getVirtualItems().map(l=>{const u=i.default({option:a.options[l.index],virtualizer:v.value,virtualItem:l})[0],c=u.type===ue&&Array.isArray(u.children)?u.children.find(r=>typeof r.type!="symbol"):u;return{item:l,is:je(c,{key:`${l.key}`,"data-index":l.index,"aria-setsize":a.options.length,"aria-posinset":l.index+1,style:{position:"absolute",top:0,left:0,transform:`translateY(${l.start}px)`,overflowAnchor:"none"}})}}));t.virtualFocusHook.on(({event:l,scroll:u})=>{const c=a.options.findIndex(r=>Array.isArray(t.modelValue.value)?q(r,t.modelValue.value[0],t.by):q(r,t.modelValue.value,t.by));c!==-1?(l?.preventDefault(),v.value.scrollToIndex(c,{align:"start"}),requestAnimationFrame(()=>{const r=de(p.value);r&&(t.changeHighlight(r,u,u?void 0:!1),l&&r?.focus())})):u?t.highlightFirstItem():requestAnimationFrame(()=>{const r=d().find(_=>_.ref.dataset.disabled!=="")?.ref;r&&t.changeHighlight(r,!1,!1)})}),t.virtualHighlightHook.on(l=>{const u=a.options.findIndex(c=>q(c,l,t.by));v.value.scrollToIndex(u,{align:"start"}),requestAnimationFrame(()=>{const c=de(p.value);c&&t.changeHighlight(c)})});const k=me("",1e3),E=H(()=>{const l=u=>a.textContent?a.textContent(u):u?.toString().toLowerCase();return a.options.map((u,c)=>({index:c,textContent:l(u)}))});function x(l,u){if(!t.firstValue?.value||!t.multiple.value||!Array.isArray(t.modelValue.value))return;const r=d().filter(h=>h.ref.dataset.disabled!=="").find(h=>h.ref===t.highlightedElement.value)?.value;if(!r)return;let _=null;switch(u){case"prev":case"next":{_=$(a.options,t.firstValue.value,r);break}case"first":{_=$(a.options,t.firstValue.value,a.options?.[0]);break}case"last":{_=$(a.options,t.firstValue.value,a.options.at(-1));break}}t.modelValue.value=_}return t.virtualKeydownHook.on(l=>{const u=l.altKey||l.ctrlKey||l.metaKey;if(l.key==="Tab"&&!u)return;let r=ze[l.key];if(u&&l.key==="a"&&t.multiple.value?(l.preventDefault(),t.modelValue.value=[...a.options],r="last"):l.shiftKey&&r&&x(l,r),["first","last"].includes(r)){l.preventDefault();const _=r==="first"?0:a.options.length-1;v.value.scrollToIndex(_),requestAnimationFrame(()=>{const h=d(),A=r==="first"?h[0]:h.at(-1);A&&t.changeHighlight(A.ref)})}else if(!r&&!u){k.value+=l.key;const _=Number(Oe()?.getAttribute("data-index")),h=E.value[_].textContent,A=E.value.map(y=>y.textContent??""),V=$e(A,k.value,h),T=E.value.find(y=>y.textContent===V);T&&(v.value.scrollToIndex(T.index,{align:"start"}),requestAnimationFrame(()=>{const y=p.value.querySelector(`[data-index="${T.index}"]`);y instanceof HTMLElement&&t.changeHighlight(y)}))}}),(l,u)=>(w(),re("div",{"data-reka-virtualizer":"",style:We({position:"relative",width:"100%",height:`${n(v).getTotalSize()}px`})},[(w(!0),re(ue,null,Ge(m.value,({is:c,item:r})=>(w(),L(Ue(c),{key:r.index}))),128))],4))}}),kt=ft;function pt(o,a){if(typeof o!="object"||o===null)return!1;const i=Xe(o,a);return i!=null&&i!==""}function ce(o,a){return a?{xs:44,sm:48,md:52,lg:56,xl:60}[o]:{xs:24,sm:28,md:32,lg:36,xl:40}[o]}function At(o,a,i,t){const p=ce(a,!0),d=ce(a,!1);return t?()=>p:i?g=>pt(o[g],i)?p:d:()=>d}export{yt as L,bt as a,Ct as b,xt as c,Et as d,Ft as e,kt as f,At as g,_t as h,U as i};
@@ -1,2 +0,0 @@
1
- import{a8 as S,v as N}from"./DHltYerF.js";const y=43200,P=1440,k=Symbol.for("constructDateFrom");function D(e,t){return typeof e=="function"?e(t):e&&typeof e=="object"&&k in e?e[k](t):e instanceof Date?new e.constructor(t):new Date(t)}function g(e,t){return D(e,e)}let $={};function F(){return $}function C(e){const t=g(e),n=new Date(Date.UTC(t.getFullYear(),t.getMonth(),t.getDate(),t.getHours(),t.getMinutes(),t.getSeconds(),t.getMilliseconds()));return n.setUTCFullYear(t.getFullYear()),+e-+n}function x(e,...t){const n=D.bind(null,e||t.find(r=>typeof r=="object"));return t.map(n)}function w(e,t){const n=+g(e)-+g(t);return n<0?-1:n>0?1:n}function O(e){return D(e,Date.now())}function I(e,t,n){const[r,a]=x(n?.in,e,t),u=r.getFullYear()-a.getFullYear(),i=r.getMonth()-a.getMonth();return u*12+i}function L(e){return t=>{const r=(e?Math[e]:Math.trunc)(t);return r===0?0:r}}function j(e,t){return+g(e)-+g(t)}function _(e,t){const n=g(e);return n.setHours(23,59,59,999),n}function X(e,t){const n=g(e),r=n.getMonth();return n.setFullYear(n.getFullYear(),r+1,0),n.setHours(23,59,59,999),n}function z(e,t){const n=g(e);return+_(n)==+X(n)}function E(e,t,n){const[r,a,u]=x(n?.in,e,e,t),i=w(a,u),o=Math.abs(I(a,u));if(o<1)return 0;a.getMonth()===1&&a.getDate()>27&&a.setDate(30),a.setMonth(a.getMonth()-i*o);let c=w(a,u)===-i;z(r)&&o===1&&w(r,u)===1&&(c=!1);const l=i*(o-+c);return l===0?0:l}function B(e,t,n){const r=j(e,t)/1e3;return L(n?.roundingMethod)(r)}const R={lessThanXSeconds:{one:"less than a second",other:"less than {{count}} seconds"},xSeconds:{one:"1 second",other:"{{count}} seconds"},halfAMinute:"half a minute",lessThanXMinutes:{one:"less than a minute",other:"less than {{count}} minutes"},xMinutes:{one:"1 minute",other:"{{count}} minutes"},aboutXHours:{one:"about 1 hour",other:"about {{count}} hours"},xHours:{one:"1 hour",other:"{{count}} hours"},xDays:{one:"1 day",other:"{{count}} days"},aboutXWeeks:{one:"about 1 week",other:"about {{count}} weeks"},xWeeks:{one:"1 week",other:"{{count}} weeks"},aboutXMonths:{one:"about 1 month",other:"about {{count}} months"},xMonths:{one:"1 month",other:"{{count}} months"},aboutXYears:{one:"about 1 year",other:"about {{count}} years"},xYears:{one:"1 year",other:"{{count}} years"},overXYears:{one:"over 1 year",other:"over {{count}} years"},almostXYears:{one:"almost 1 year",other:"almost {{count}} years"}},Y=(e,t,n)=>{let r;const a=R[e];return typeof a=="string"?r=a:t===1?r=a.one:r=a.other.replace("{{count}}",t.toString()),n?.addSuffix?n.comparison&&n.comparison>0?"in "+r:r+" ago":r};function v(e){return(t={})=>{const n=t.width?String(t.width):e.defaultWidth;return e.formats[n]||e.formats[e.defaultWidth]}}const H={full:"EEEE, MMMM do, y",long:"MMMM do, y",medium:"MMM d, y",short:"MM/dd/yyyy"},U={full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},V={full:"{{date}} 'at' {{time}}",long:"{{date}} 'at' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},q={date:v({formats:H,defaultWidth:"full"}),time:v({formats:U,defaultWidth:"full"}),dateTime:v({formats:V,defaultWidth:"full"})},J={lastWeek:"'last' eeee 'at' p",yesterday:"'yesterday at' p",today:"'today at' p",tomorrow:"'tomorrow at' p",nextWeek:"eeee 'at' p",other:"P"},Q=(e,t,n,r)=>J[e];function p(e){return(t,n)=>{const r=n?.context?String(n.context):"standalone";let a;if(r==="formatting"&&e.formattingValues){const i=e.defaultFormattingWidth||e.defaultWidth,o=n?.width?String(n.width):i;a=e.formattingValues[o]||e.formattingValues[i]}else{const i=e.defaultWidth,o=n?.width?String(n.width):e.defaultWidth;a=e.values[o]||e.values[i]}const u=e.argumentCallback?e.argumentCallback(t):t;return a[u]}}const G={narrow:["B","A"],abbreviated:["BC","AD"],wide:["Before Christ","Anno Domini"]},K={narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1st quarter","2nd quarter","3rd quarter","4th quarter"]},Z={narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],wide:["January","February","March","April","May","June","July","August","September","October","November","December"]},ee={narrow:["S","M","T","W","T","F","S"],short:["Su","Mo","Tu","We","Th","Fr","Sa"],abbreviated:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],wide:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},te={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"}},ne={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"}},re=(e,t)=>{const n=Number(e),r=n%100;if(r>20||r<10)switch(r%10){case 1:return n+"st";case 2:return n+"nd";case 3:return n+"rd"}return n+"th"},ae={ordinalNumber:re,era:p({values:G,defaultWidth:"wide"}),quarter:p({values:K,defaultWidth:"wide",argumentCallback:e=>e-1}),month:p({values:Z,defaultWidth:"wide"}),day:p({values:ee,defaultWidth:"wide"}),dayPeriod:p({values:te,defaultWidth:"wide",formattingValues:ne,defaultFormattingWidth:"wide"})};function b(e){return(t,n={})=>{const r=n.width,a=r&&e.matchPatterns[r]||e.matchPatterns[e.defaultMatchWidth],u=t.match(a);if(!u)return null;const i=u[0],o=r&&e.parsePatterns[r]||e.parsePatterns[e.defaultParseWidth],c=Array.isArray(o)?ie(o,m=>m.test(i)):oe(o,m=>m.test(i));let l;l=e.valueCallback?e.valueCallback(c):c,l=n.valueCallback?n.valueCallback(l):l;const d=t.slice(i.length);return{value:l,rest:d}}}function oe(e,t){for(const n in e)if(Object.prototype.hasOwnProperty.call(e,n)&&t(e[n]))return n}function ie(e,t){for(let n=0;n<e.length;n++)if(t(e[n]))return n}function se(e){return(t,n={})=>{const r=t.match(e.matchPattern);if(!r)return null;const a=r[0],u=t.match(e.parsePattern);if(!u)return null;let i=e.valueCallback?e.valueCallback(u[0]):u[0];i=n.valueCallback?n.valueCallback(i):i;const o=t.slice(a.length);return{value:i,rest:o}}}const ue=/^(\d+)(th|st|nd|rd)?/i,ce=/\d+/i,le={narrow:/^(b|a)/i,abbreviated:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,wide:/^(before christ|before common era|anno domini|common era)/i},fe={any:[/^b/i,/^(a|c)/i]},de={narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},me={any:[/1/i,/2/i,/3/i,/4/i]},he={narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,wide:/^(january|february|march|april|may|june|july|august|september|october|november|december)/i},ge={narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^may/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},pe={narrow:/^[smtwf]/i,short:/^(su|mo|tu|we|th|fr|sa)/i,abbreviated:/^(sun|mon|tue|wed|thu|fri|sat)/i,wide:/^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i},be={narrow:[/^s/i,/^m/i,/^t/i,/^w/i,/^t/i,/^f/i,/^s/i],any:[/^su/i,/^m/i,/^tu/i,/^w/i,/^th/i,/^f/i,/^sa/i]},ye={narrow:/^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,any:/^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i},we={any:{am:/^a/i,pm:/^p/i,midnight:/^mi/i,noon:/^no/i,morning:/morning/i,afternoon:/afternoon/i,evening:/evening/i,night:/night/i}},Me={ordinalNumber:se({matchPattern:ue,parsePattern:ce,valueCallback:e=>parseInt(e,10)}),era:b({matchPatterns:le,defaultMatchWidth:"wide",parsePatterns:fe,defaultParseWidth:"any"}),quarter:b({matchPatterns:de,defaultMatchWidth:"wide",parsePatterns:me,defaultParseWidth:"any",valueCallback:e=>e+1}),month:b({matchPatterns:he,defaultMatchWidth:"wide",parsePatterns:ge,defaultParseWidth:"any"}),day:b({matchPatterns:pe,defaultMatchWidth:"wide",parsePatterns:be,defaultParseWidth:"any"}),dayPeriod:b({matchPatterns:ye,defaultMatchWidth:"any",parsePatterns:we,defaultParseWidth:"any"})},T={code:"en-US",formatDistance:Y,formatLong:q,formatRelative:Q,localize:ae,match:Me,options:{weekStartsOn:0,firstWeekContainsDate:1}};function ve(e,t,n){const r=F(),a=n?.locale??r.locale??T,u=2520,i=w(e,t);if(isNaN(i))throw new RangeError("Invalid time value");const o=Object.assign({},n,{addSuffix:n?.addSuffix,comparison:i}),[c,l]=x(n?.in,...i>0?[t,e]:[e,t]),d=B(l,c),m=(C(l)-C(c))/1e3,f=Math.round((d-m)/60);let s;if(f<2)return n?.includeSeconds?d<5?a.formatDistance("lessThanXSeconds",5,o):d<10?a.formatDistance("lessThanXSeconds",10,o):d<20?a.formatDistance("lessThanXSeconds",20,o):d<40?a.formatDistance("halfAMinute",0,o):d<60?a.formatDistance("lessThanXMinutes",1,o):a.formatDistance("xMinutes",1,o):f===0?a.formatDistance("lessThanXMinutes",1,o):a.formatDistance("xMinutes",f,o);if(f<45)return a.formatDistance("xMinutes",f,o);if(f<90)return a.formatDistance("aboutXHours",1,o);if(f<P){const h=Math.round(f/60);return a.formatDistance("aboutXHours",h,o)}else{if(f<u)return a.formatDistance("xDays",1,o);if(f<y){const h=Math.round(f/P);return a.formatDistance("xDays",h,o)}else if(f<y*2)return s=Math.round(f/y),a.formatDistance("aboutXMonths",s,o)}if(s=E(l,c),s<12){const h=Math.round(f/y);return a.formatDistance("xMonths",h,o)}else{const h=s%12,M=Math.trunc(s/12);return h<3?a.formatDistance("aboutXYears",M,o):h<9?a.formatDistance("overXYears",M,o):a.formatDistance("almostXYears",M+1,o)}}function De(e,t){return ve(e,O(e),t)}const xe=["years","months","weeks","days","hours","minutes","seconds"];function Se(e,t){const r=F().locale??T,a=xe,u=" ";return r.formatDistance?a.reduce((o,c)=>{const l=`x${c.replace(/(^.)/,m=>m.toUpperCase())}`,d=e[c];return d!==void 0&&e[c]?o.concat(r.formatDistance(l,d)):o},[]).join(u):""}function Ae(e){return({column:t})=>{const n=t.getIsSorted();return S("button",{class:"flex items-center gap-1 font-semibold select-none cursor-pointer hover:text-highlighted transition-colors",onClick:()=>t.toggleSorting()},[e,S(N,{name:n==="asc"?"i-lucide-chevron-up":n==="desc"?"i-lucide-chevron-down":"i-lucide-chevrons-up-down",class:["shrink-0 size-3.5",!n&&"opacity-40"]})])}}function Ne(e){if(!e||e===0)return"0 B";const t=1024,n=["B","KB","MB","GB","TB"],r=Math.floor(Math.log(e)/Math.log(t));return`${(e/Math.pow(t,r)).toFixed(2)} ${n[r]}`}function $e(e,t={}){if(e==null||e==="")return"N/A";let n;if(e instanceof Date)n=e;else{const r=typeof e=="number"?e:Number(e);!Number.isNaN(r)&&String(e).trim()!==""?n=new Date(r<1e12?r*1e3:r):n=new Date(e)}return Number.isNaN(n.getTime())?"N/A":t.dateOnly?n.toLocaleDateString():n.toLocaleString()}function Oe(e){return e?De(new Date(e),{addSuffix:!0}):"N/A"}function Ie(e){if(e==null)return"N/A";const t=Math.round(Math.abs(e));return t===0?"0 seconds":(e<0?"−":"")+Se({seconds:t/1e3})}function Le(e){if(e==null)return null;const t=Math.round(Math.abs(e)),n=e<0?"−":"";if(t<1e3)return{value:n+t,unit:"ms"};const r=t/1e3;return r<60?{value:n+Math.round(r*10)/10,unit:"s"}:{value:n+Math.round(r/60*10)/10,unit:"m"}}function je(e){switch(e){case"html":return"i-lucide-layout-dashboard";case"monocart":return"i-lucide-bar-chart-2";case"blob":return"i-lucide-download";default:return"i-lucide-file-text"}}function _e(e){if(!e)return"i-lucide-globe";const t=e.toLowerCase();return t.includes("chrome")||t.includes("chromium")?"i-simple-icons-googlechrome":t.includes("firefox")?"i-simple-icons-firefoxbrowser":t.includes("safari")||t.includes("webkit")?"i-simple-icons-safari":t.includes("edge")?"i-simple-icons-microsoftedge":"i-lucide-globe"}function Xe(e){if(!e)return"#6b7280";const t=e.toLowerCase();return t.includes("chrome")||t.includes("chromium")?"#4285F4":t.includes("firefox")?"#FF7139":t.includes("safari")||t.includes("webkit")?"#007AFF":t.includes("edge")?"#0078D7":"#6b7280"}function Pe(e){switch(e){case"passed":return"success";case"failed":return"error";case"timedout":return"warning";case"timedOut":return"warning";case"interrupted":return"warning";case"cancelled":return"neutral";case"initialising":return"info";case"running":return"info";case"finalizing":return"info";default:return"neutral"}}function ze(e){return e==="timedOut"||e==="timedout"?"failed":e==="didnotrun"?"didn't run":e==="never-run"?"never run":e}function Ee(e){return e&&{open:"warning",resolved:"success",ignored:"neutral"}[e]||"neutral"}function Be(e){return e&&{timeout:"warning",assertion:"error","strict-mode":"info",navigation:"secondary",crash:"error",unknown:"neutral"}[e]||"neutral"}function Re(){const e=Math.floor(Math.random()*360),t=65,n=50,r=(1-Math.abs(2*n/100-1))*t/100,a=r*(1-Math.abs(e/60%2-1)),u=n/100-r/2;let i=0,o=0,c=0;e<60?(i=r,o=a):e<120?(i=a,o=r):e<180?(o=r,c=a):e<240?(o=a,c=r):e<300?(i=a,c=r):(i=r,c=a);const l=d=>Math.round((d+u)*255).toString(16).padStart(2,"0");return`#${l(i)}${l(o)}${l(c)}`}function A(e){return!e.startsWith(".")&&!e.startsWith("/")?e:e.replace(".data/storage/","")}function Ye(e,t,n="/"){let a=`${(n||"/").replace(/\/$/,"")}/api/files/${A(e)}`;const u=/\.[a-z0-9]+$/i.test(e);return t&&!u&&(a+=`?contentType=${encodeURIComponent(t)}`),a}function He(e,t="/",n=!1){const r=(t||"/").replace(/\/$/,""),i=`${typeof location>"u"?"":location.origin}${r}/${n?"":"api/files/"}${A(e)}`;return`${r}/trace-viewer/?trace=${encodeURIComponent(i)}`}function Ue(e,t="Unknown error"){if(e&&typeof e=="object"){const n=e;return n.data?.message??n.message??t}return t}function Ve(e,t){const n=t.trim().toLowerCase();return n?e.filter(r=>r.message.toLowerCase().includes(n)||r.author.toLowerCase().includes(n)||r.sha.includes(n)||r.shortSha.includes(n)):e}function qe(e){switch(e){case"added":return{icon:"i-lucide-file-plus",color:"text-green-500",badgeColor:"success"};case"removed":return{icon:"i-lucide-file-minus",color:"text-red-500",badgeColor:"error"};case"renamed":return{icon:"i-lucide-file-symlink",color:"text-blue-500",badgeColor:"info"};default:return{icon:"i-lucide-file-pen-line",color:"text-gray-400",badgeColor:"neutral"}}}const Je={add:"bg-green-50 dark:bg-green-950/30 text-green-800 dark:text-green-300",remove:"bg-red-50 dark:bg-red-950/30 text-red-800 dark:text-red-300",hunk:"bg-blue-50 dark:bg-blue-950/20 text-blue-500 dark:text-blue-400",context:"text-gray-600 dark:text-gray-400"};function Qe(e){return e.split(`
2
- `).map(t=>t.startsWith("+")&&!t.startsWith("+++")?{type:"add",text:t}:t.startsWith("-")&&!t.startsWith("---")?{type:"remove",text:t}:t.startsWith("@@")?{type:"hunk",text:t}:{type:"context",text:t})}const ke="\x1B",Ce={30:"#000000",31:"#dc2626",32:"#16a34a",33:"#d97706",34:"#2563eb",35:"#9333ea",36:"#0891b2",37:"#9ca3af"},We={40:"#000000",41:"#dc2626",42:"#16a34a",43:"#d97706",44:"#2563eb",45:"#9333ea",46:"#0891b2",47:"#9ca3af"},W=new RegExp(`${ke}\\[([0-9;]*)m`,"g");function Fe(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function Ge(e){const t=[];let n=0,r,a,u=!1,i=!1,o=!1,c=!1;const l=f=>{if(!f)return;const s=[];u&&s.push("font-weight:600"),i&&s.push("opacity:.7"),o&&s.push("font-style:italic"),c&&s.push("text-decoration:underline"),r&&s.push(`color:${r}`),a&&s.push(`background:${a}`);const h=Fe(f);t.push(s.length?`<span style="${s.join(";")}">${h}</span>`:h)},d=f=>{for(const s of f)s===0?(r=void 0,a=void 0,u=!1,i=!1,o=!1,c=!1):s===1?u=!0:s===2?i=!0:s===3?o=!0:s===4?c=!0:s===22?(u=!1,i=!1):s===23?o=!1:s===24?c=!1:s>=30&&s<=37?r=Ce[s]:s===39?r=void 0:s>=40&&s<=47?a=We[s]:s===49&&(a=void 0)};let m;for(;(m=W.exec(e))!==null;){l(e.slice(n,m.index)),n=W.lastIndex;const f=m[1]?m[1].split(";").map(Number):[0];d(f)}return l(e.slice(n)),t.join("")}function Ke(e,t=120){if(!e)return"";const n=e.replace(/\n/g," · ");return n.length<=t?n:n.slice(0,t)+"…"}function Ze(e){return e.totalTests>0?Math.round(e.passedTests/e.totalTests*100):0}function et(e){return e==="flaky"?"warning":e==="never-run"?"neutral":e==="didnotrun"?"warning":Pe(e)}function tt(e){switch(e.toUpperCase()){case"GET":return"info";case"POST":return"success";case"DELETE":return"error";case"PUT":case"PATCH":return"warning";default:return"neutral"}}function nt(e){return!e||e<=0?"neutral":e>=500?"error":e>=400?"warning":"success"}export{Re as A,Ze as B,Ee as a,Ve as b,Be as c,Ke as d,Ue as e,Oe as f,Ae as g,Ie as h,Pe as i,ze as j,Ne as k,Ye as l,tt as m,nt as n,Le as o,$e as p,Je as q,Ge as r,qe as s,et as t,Qe as u,He as v,A as w,je as x,_e as y,Xe as z};
@@ -1 +0,0 @@
1
- import{d as w,o as t,c as a,i as o,j as l,p as b,v as $,g as y,f as k,q as n,m as v,t as i,k as f,s as B,aa as j,T as x,z as I,F as C,y as U,A as N,r as p,h as L}from"./DHltYerF.js";import{j as P,i as F}from"./BeKvLsja.js";import{_ as M}from"./CazDIG_m.js";import{_ as O}from"./DHXWp5yD.js";import{_ as T}from"./Dwws9U0D.js";import{_ as E}from"./B1zMFx24.js";import{_ as D}from"./B1X__ilH.js";const H={class:"flex items-center gap-2.5"},q=w({__name:"StatusBlock",props:{status:{},size:{}},setup(e){function c(s){return s==="passed"?"i-lucide-check-circle-2":s==="failed"||s==="timedout"?"i-lucide-x-circle":s==="didnotrun"?"i-lucide-circle-slash":s==="running"||s==="initialising"||s==="finalizing"?"i-lucide-loader-circle":"i-lucide-minus-circle"}function r(s){return s==="running"||s==="initialising"||s==="finalizing"}return(s,u)=>{const g=$,d=B;return t(),a("div",H,[o("div",{class:b(["shrink-0 rounded-lg flex items-center justify-center",[e.size==="sm"?"size-7":"size-8",{"bg-green-100 text-green-700 dark:bg-green-900/40 dark:text-green-400":e.status==="passed","bg-red-100 text-red-700 dark:bg-red-900/40 dark:text-red-400":e.status==="failed"||e.status==="timedout","bg-gray-100 text-gray-600 dark:bg-gray-800 dark:text-gray-400":e.status==="cancelled"||e.status==="skipped","bg-amber-100 text-amber-700 dark:bg-amber-900/40 dark:text-amber-400":e.status==="didnotrun","bg-blue-100 text-blue-700 dark:bg-blue-900/40 dark:text-blue-400":e.status==="running"||e.status==="initialising"||e.status==="finalizing"}]])},[l(g,{name:c(e.status),class:b([e.size==="sm"?"size-3.5":"size-4.5",{"animate-spin":r(e.status)}])},null,8,["name","class"])],2),l(d,{color:("getStatusColor"in s?s.getStatusColor:f(F))(e.status),class:"capitalize gap-1 items-center"},{default:y(()=>[r(e.status)?(t(),k(g,{key:0,name:"i-lucide-loader-circle",class:"size-3 animate-spin shrink-0"})):n("",!0),v(" "+i(("formatStatusLabel"in s?s.formatStatusLabel:f(P))(e.status)),1)]),_:1},8,["color"])])}}}),Me=Object.assign(q,{__name:"StatusBlock"}),A={class:"flex items-start justify-between gap-2"},G={class:"flex items-center gap-2 min-w-0"},J={class:"min-w-0"},K={class:"text-sm font-medium inline-flex items-center gap-1"},Q={key:0,class:"text-xs text-gray-400 mt-0.5"},R={key:0,class:"flex items-center gap-1 shrink-0"},W=w({__name:"BlockCard",props:{title:{},icon:{},subtitle:{},iconClass:{default:"text-primary"},help:{}},setup(e){return(c,r)=>{const s=$,u=O,g=T;return t(),k(g,{class:"shadow-xs",ui:{header:"px-3 py-2.5 sm:px-3",body:"p-3 sm:p-3"}},j({header:y(()=>[o("div",A,[o("div",G,[e.icon?(t(),k(s,{key:0,name:e.icon,class:b(["w-4 h-4 shrink-0",e.iconClass])},null,8,["name","class"])):n("",!0),o("div",J,[o("span",K,[v(i(e.title),1),e.help?(t(),k(u,{key:0,topic:e.help},null,8,["topic"])):n("",!0)]),e.subtitle||c.$slots.subtitle?(t(),a("p",Q,[x(c.$slots,"subtitle",{},()=>[v(i(e.subtitle),1)])])):n("",!0)])]),c.$slots.actions?(t(),a("div",R,[x(c.$slots,"actions")])):n("",!0)])]),default:y(()=>[x(c.$slots,"default")]),_:2},[c.$slots.footer?{name:"footer",fn:y(()=>[x(c.$slots,"footer")]),key:"0"}:void 0]),1024)}}}),V=Object.assign(W,{__name:"BlockCard"}),X={class:"space-y-1.5 text-sm"},Y={key:0,class:"flex items-center gap-x-3 gap-y-1 flex-wrap"},Z={key:0,class:"flex items-center gap-1.5"},ee={class:"font-medium"},te={key:1,class:"flex items-center gap-1.5"},se={class:"text-xs font-mono bg-gray-100 dark:bg-gray-800 px-1 rounded"},ae={key:2,class:"flex items-center gap-1.5"},ne={class:"text-gray-600 dark:text-gray-400"},ie={key:1,class:"text-gray-400 text-xs break-words"},ce=w({__name:"SourceInfoCard",props:{scm:{},class:{}},setup(e){return(c,r)=>{const s=$,u=V;return t(),k(u,{class:b(c.$props.class),title:"Source",icon:"i-lucide-git-branch"},{default:y(()=>[o("div",X,[e.scm.branch||e.scm.commit||e.scm.author?(t(),a("div",Y,[e.scm.branch?(t(),a("span",Z,[l(s,{name:"i-lucide-git-branch",class:"w-3.5 h-3.5 text-gray-400 shrink-0"}),o("span",ee,i(e.scm.branch),1)])):n("",!0),e.scm.commit?(t(),a("span",te,[l(s,{name:"i-lucide-git-commit-horizontal",class:"w-3.5 h-3.5 text-gray-400 shrink-0"}),o("code",se,i(e.scm.commit.length>=8?e.scm.commit.substring(0,8):e.scm.commit),1)])):n("",!0),e.scm.author?(t(),a("span",ae,[l(s,{name:"i-lucide-user",class:"w-3.5 h-3.5 text-gray-400 shrink-0"}),o("span",ne,i(e.scm.author),1)])):n("",!0)])):n("",!0),e.scm.commitMessage?(t(),a("p",ie,i(e.scm.commitMessage),1)):n("",!0)])]),_:1},8,["class"])}}}),Oe=Object.assign(ce,{__name:"SourceInfoCard"}),le={class:"space-y-1.5 text-sm"},oe={key:0,class:"flex items-center gap-x-2 gap-y-1 flex-wrap"},re={key:0,class:"rounded-full border px-2 py-0.5 text-xs bg-gray-50 dark:bg-gray-800"},me={key:1},de={key:1,class:"flex items-center gap-1.5"},ue=["href"],ge={key:1},he={key:2,class:"flex items-center gap-x-1.5 gap-y-1 flex-wrap"},fe={key:0},be={key:1,class:"text-gray-300 dark:text-gray-600"},xe={key:2},ye={key:3,class:"flex items-center gap-x-1.5 gap-y-1 flex-wrap"},ke={key:0},ve={key:1,class:"text-gray-300 dark:text-gray-600"},we={key:2},$e={key:4,class:"flex items-center gap-1.5"},Ce={key:0,class:"tabular-nums"},Ve={key:0,class:"text-gray-400"},ze=w({__name:"CiEnvCard",props:{ci:{},environment:{},playwrightVersion:{},reporterVersion:{},browser:{},class:{}},setup(e){return(c,r)=>{const s=$,u=M,g=V;return t(),k(g,{class:b(c.$props.class),title:"CI / Env",icon:"i-lucide-cloud",help:"run.ci-env"},{default:y(()=>[o("div",le,[e.environment||e.ci?.provider?(t(),a("div",oe,[l(s,{name:"i-lucide-cloud",class:"w-3.5 h-3.5 text-gray-400 shrink-0"}),e.environment?(t(),a("span",re,i(e.environment),1)):n("",!0),e.ci?.provider?(t(),a("span",me,i(e.ci.provider),1)):n("",!0)])):n("",!0),e.ci?.buildNumber||e.ci?.buildUrl?(t(),a("div",de,[l(s,{name:"i-lucide-hash",class:"w-3.5 h-3.5 text-gray-400 shrink-0"}),e.ci?.buildUrl?(t(),a("a",{key:0,href:e.ci.buildUrl,target:"_blank",class:"text-primary hover:underline"},i(e.ci?.buildNumber?`Build #${e.ci.buildNumber}`:"View build"),9,ue)):(t(),a("span",ge,"Build #"+i(e.ci.buildNumber),1))])):n("",!0),e.ci?.workflow||e.ci?.jobName?(t(),a("div",he,[l(s,{name:"i-lucide-workflow",class:"w-3.5 h-3.5 text-gray-400 shrink-0"}),e.ci?.workflow?(t(),a("span",fe,i(e.ci.workflow),1)):n("",!0),e.ci?.workflow&&e.ci?.jobName?(t(),a("span",be,"·")):n("",!0),e.ci?.jobName?(t(),a("span",xe,i(e.ci.jobName),1)):n("",!0)])):n("",!0),e.playwrightVersion||e.reporterVersion?(t(),a("div",ye,[l(s,{name:"i-lucide-tag",class:"w-3.5 h-3.5 text-gray-400 shrink-0"}),e.playwrightVersion?(t(),a("span",ke,"Playwright v"+i(e.playwrightVersion),1)):n("",!0),e.playwrightVersion&&e.reporterVersion?(t(),a("span",ve,"·")):n("",!0),e.reporterVersion?(t(),a("span",we,"Piwi v"+i(e.reporterVersion),1)):n("",!0)])):n("",!0),e.browser?(t(),a("div",$e,[l(u,{browser:{...e.browser,viewport:void 0},size:"sm"},null,8,["browser"]),e.browser.viewport?(t(),a("span",Ce,[v(i(e.browser.viewport.width)+"×"+i(e.browser.viewport.height)+" ",1),e.browser.deviceScaleFactor&&e.browser.deviceScaleFactor!==1?(t(),a("span",Ve,"@"+i(e.browser.deviceScaleFactor)+"x",1)):n("",!0)])):n("",!0)])):n("",!0)])]),_:1},8,["class"])}}}),Te=Object.assign(ze,{__name:"CiEnvCard"}),Se={class:"flex flex-col h-full gap-4 p-1 max-lg:overflow-y-auto lg:overflow-hidden"},_e={key:0,class:"lg:shrink-0"},Be={class:"lg:shrink-0 max-lg:sticky max-lg:top-0 max-lg:z-10 max-lg:-mx-1 max-lg:bg-default max-lg:px-1 max-lg:py-1.5"},je=w({__name:"DetailPageLayout",props:N({tabItems:{},tabPanelClass:{}},{modelValue:{required:!0},modelModifiers:{}}),emits:["update:modelValue"],setup(e){const c=e,r=I(e,"modelValue"),s=p(!1),u=L(()=>c.tabItems.find(d=>d.value===r.value)?.icon);function g(d){return["min-h-0","lg:flex-1",c.tabPanelClass?.[d]??"overflow-y-auto","max-lg:!block","max-lg:!overflow-visible"]}return(d,h)=>{const z=$,S=E,_=D;return t(),a("div",Se,[d.$slots.summary?(t(),a("div",_e,[o("div",{class:b(f(s)?"max-lg:hidden":"")},[x(d.$slots,"summary")],2),o("button",{type:"button",class:"lg:hidden mt-2 w-full flex items-center justify-center gap-1 rounded-md border border-default py-1.5 text-xs font-medium text-muted hover:bg-elevated/60 transition-colors",onClick:h[0]||(h[0]=m=>s.value=!f(s))},[l(z,{name:f(s)?"i-lucide-chevron-down":"i-lucide-chevron-up",class:"size-3.5"},null,8,["name"]),v(" "+i(f(s)?"Show summary":"Hide summary"),1)])])):n("",!0),o("div",Be,[l(S,{modelValue:r.value,"onUpdate:modelValue":h[1]||(h[1]=m=>r.value=m),items:e.tabItems,icon:f(u),size:"md",class:"w-full sm:hidden"},null,8,["modelValue","items","icon"]),l(_,{modelValue:r.value,"onUpdate:modelValue":h[2]||(h[2]=m=>r.value=m),items:e.tabItems,size:"sm",class:"hidden sm:flex",ui:{list:"overflow-x-auto",trigger:"shrink-0"}},null,8,["modelValue","items"])]),(t(!0),a(C,null,U(e.tabItems,m=>(t(),a(C,{key:m.value},[r.value===m.value?(t(),a("div",{key:0,class:b(g(m.value))},[x(d.$slots,`tab-${m.slot??m.value}`)],2)):n("",!0)],64))),128))])}}}),Ee=Object.assign(je,{__name:"DetailPageLayout"});export{Me as _,Oe as a,Te as b,V as c,Ee as d};
@@ -1,3 +0,0 @@
1
- import{_ as G,a as E}from"./CdMuck_X.js";import{_ as F}from"./B2oUeBbA.js";import{d as H,w as W,e as V,f as j,g as o,K,o as n,i as t,k as r,q as w,j as i,c as a,t as m,_ as Y,m as s,F as g,y as J,v as Q,h as d}from"./DHltYerF.js";import{_ as X}from"./BHpUiv6j.js";import{_ as Z}from"./B1X__ilH.js";import{_ as ee}from"./CN1mJlvD.js";import{u as te}from"./Cnapl7lZ.js";import{u as se}from"./By4YL7mx.js";import{u as re}from"./DXbPFI1d.js";import"./BbS6Bwby.js";import"./BeKvLsja.js";import"./gnCL8GjZ.js";import"./DHXWp5yD.js";import"./r3SBLxtE.js";import"./Dwws9U0D.js";const ie=[{name:"list_projects",description:"List all projects with stats: total runs, test cases, latest run status and branch. Use this first to discover available projects and their IDs.",inputSchema:{type:"object",properties:{}}},{name:"get_project",description:"Get project details and its recent test runs with pass/fail counts. Results are paginated — use pageSize and cursor for the runs list.",inputSchema:{type:"object",properties:{id:{type:"number",description:"Project ID from list_projects"},pageSize:{type:"number",description:"Runs per page (default 10, max 50)"},cursor:{type:"string",description:"Opaque cursor from a previous response to get the next page of runs"}},required:["id"]}},{name:"list_runs",description:"List test runs for a project with filters.",inputSchema:{type:"object",properties:{projectId:{type:"number",description:"Project ID"},status:{type:"string",enum:["passed","failed","running","initialising","aborted"],description:"Filter by status"},branch:{type:"string",description:"Filter by branch name (exact match against SCM metadata)"},pageSize:{type:"number",description:"Results per page (default 10, max 50)"},cursor:{type:"string",description:"Opaque cursor from a previous response to get the next page"}},required:["projectId"]}},{name:"get_run",description:"Get a test run summary plus its test cases (paginated), with status, truncated error text, and failure cluster IDs. Filter by status and page with pageSize/cursor.",inputSchema:{type:"object",properties:{id:{type:"number",description:"Test run ID"},status_filter:{type:"string",enum:["failed","flaky","all"],description:'Which test cases to include (default: "failed" — only failed+timedOut; "flaky" — only flaky; "all" — every case)'},pageSize:{type:"number",description:"Cases per page (default 10, max 50)"},cursor:{type:"string",description:"Opaque cursor from a previous response for the next page of cases"}},required:["id"]}},{name:"list_failed_cases",description:"List failed and timed-out test cases across recent runs for a project.",inputSchema:{type:"object",properties:{projectId:{type:"number",description:"Project ID"},pageSize:{type:"number",description:"Results per page (default 10, max 50)"},cursor:{type:"string",description:"Opaque cursor from a previous response to get the next page"},runId:{type:"number",description:"Optional: restrict to a specific run"}},required:["projectId"]}},{name:"list_flaky_tests",description:"List flaky tests for a project with flakiness scores.",inputSchema:{type:"object",properties:{projectId:{type:"number",description:"Project ID"},runs:{type:"number",description:"Number of recent runs to analyze (default 50, max 200)"},pageSize:{type:"number",description:"Results per page (default 10, max 50)"},cursor:{type:"string",description:"Opaque cursor from a previous response. Cursor is the flakyScore value (descending)."}},required:["projectId"]}},{name:"get_test_case",description:"Get test case details including aggregated pass/fail stats, flakiness metrics, and recent executions (paginated). Use testCaseId (stable identity), not the per-run caseId.",inputSchema:{type:"object",properties:{id:{type:"number",description:"Test case ID (testCaseId from list_failed_cases or list_flaky_tests)"},pageSize:{type:"number",description:"Executions per page (default 10, max 50)"},cursor:{type:"string",description:"Opaque cursor from a previous response to get the next page of executions"}},required:["id"]}},{name:"list_clusters",description:"List failure clusters for a project. Each cluster groups similar failures by error fingerprint.",inputSchema:{type:"object",properties:{projectId:{type:"number",description:"Project ID"},status:{type:"string",enum:["open","resolved","ignored"],description:"Filter by triage status (default: all statuses)"},pageSize:{type:"number",description:"Results per page (default 10, max 50)"},cursor:{type:"string",description:"Opaque cursor from a previous response to get the next page"}},required:["projectId"]}},{name:"get_cluster",description:"Get full details for a failure cluster including all affected test cases, a compact diagnosis summary, and locator healing suggestions for up to 5 affected cases. Each healing entry includes the failing locator, the recommended fix, and the number of alternatives available. Use get_cluster_diagnosis for the full diagnosis text, or get_cluster_context for the raw AI evidence.",inputSchema:{type:"object",properties:{id:{type:"number",description:"Cluster ID from list_clusters"}},required:["id"]}},{name:"get_cluster_diagnosis",description:"Get the stored AI diagnosis for a failure cluster. Returns category, confidence, root cause, evidence, and suggested fix. Returns null if no diagnosis has been run yet.",inputSchema:{type:"object",properties:{id:{type:"number",description:"Cluster ID"}},required:["id"]}},{name:"get_test_case_context",description:"Get the AI evidence context for a specific test-run-case (execution scope). Use this when debugging a single test failure — it provides the execution-scoped evidence including steps, console, network, and SCM diff.",inputSchema:{type:"object",properties:{id:{type:"number",description:"Test run case ID"}},required:["id"]}},{name:"get_case_screenshots",description:"Get screenshots for a test-run-case. By default returns metadata only (name, type, size). Set content=true to include base64-encoded image data (max 3, capped at ~100 KB each). Call metadata-only first to discover what exists, then request content for the ones you need.",inputSchema:{type:"object",properties:{testRunsCaseId:{type:"number",description:"Test run case ID"},content:{type:"boolean",description:"Include base64 image data (default false — metadata only)"}},required:["testRunsCaseId"]}},{name:"get_cluster_context",description:"Get the full AI evidence context for a failure cluster — the same data sent to the diagnosis AI. Includes error samples, stack traces, test steps, console logs, network failures, ARIA snapshots, SCM diff (changed files since last green run), and a per-section breakdown with char counts and truncation flags. This is the richest available evidence for debugging a failure.",inputSchema:{type:"object",properties:{id:{type:"number",description:"Cluster ID"},baseCommit:{type:"string",description:"Optional: override the baseline commit SHA for SCM diff comparison"},selectedCommitShas:{type:"array",items:{type:"string"},description:"Optional: specific commit SHAs to include in the diff context (max 10)"}},required:["id"]}},{name:"search_test_cases",description:"Search test cases by title or file path within a project. Accepts a free-text query and returns matching test cases with basic stats. Use this to find a test case when you don't know its ID.",inputSchema:{type:"object",properties:{projectId:{type:"number",description:"Project ID"},q:{type:"string",description:"Search query — matched against title and file path (case-insensitive)"},pageSize:{type:"number",description:"Results per page (default 10, max 50)"},cursor:{type:"string",description:"Opaque cursor from a previous response to get the next page"}},required:["projectId","q"]}},{name:"get_test_run_case",description:"Get a single test-run-case execution record with full (untruncated) error text plus steps, console logs, web vitals, and ARIA snapshot. Use include to fetch only the blobs you need. The ID is the executionId from get_run.cases or testRunsCaseId from get_cluster.affectedTestCases.",inputSchema:{type:"object",properties:{id:{type:"number",description:"Test run case ID (executionId from get_run.cases or testRunsCaseId from get_cluster.affectedTestCases)"},include:{type:"array",items:{type:"string",enum:["steps","console","webVitals","aria","source"]},description:"Optional: which heavy blobs to include (default: all). The error, status, and summary are always returned."}},required:["id"]}},{name:"list_recent_activity",description:"List the most recent test runs across all projects. No projectId required — returns a cross-project view of recent CI activity. Paginated by startTime descending.",inputSchema:{type:"object",properties:{pageSize:{type:"number",description:"Results per page (default 10, max 50)"},cursor:{type:"string",description:"Opaque cursor from a previous response to get the next page"}}}},{name:"get_repo_commits",description:"List recent commits for a project's repository. Requires SCM token configuration (per-project or global). Returns commit details (SHA, message, author, date).",inputSchema:{type:"object",properties:{projectId:{type:"number",description:"Project ID"},branch:{type:"string",description:"Branch name (default: repository default branch)"},limit:{type:"number",description:"Max commits (default 20, max 100)"}},required:["projectId"]}},{name:"get_repo_diff",description:"Get the diff (changed files with patches) for a single commit in a project's repository. Requires SCM token configuration (per-project or global). Useful for inspecting what code changed in a specific commit suspected of causing a failure.",inputSchema:{type:"object",properties:{projectId:{type:"number",description:"Project ID"},sha:{type:"string",description:"Full commit SHA"}},required:["projectId","sha"]}},{name:"get_run_insights",description:'Compare a run to its last green baseline: pass-rate delta, new regressions, recurrences, recovered tests, new flaky tests, biggest perf improvements/regressions, worker imbalance, and newly opened clusters. Use this to answer "what changed?" and "did my fix work?".',inputSchema:{type:"object",properties:{id:{type:"number",description:"Test run ID"}},required:["id"]}},{name:"get_spec_health",description:"Per-spec-file health for a project: pass rate, flaky rate, failure count, test count, and average duration grouped by spec-file prefix over the last N days. Use to find which areas of the suite are unhealthy.",inputSchema:{type:"object",properties:{projectId:{type:"number",description:"Project ID"},days:{type:"number",description:"Lookback window in days (default 30, max 90)"}},required:["projectId"]}},{name:"get_slow_tests",description:"Slowest test cases in a project by average duration, with max/min and trend direction across recent runs. Use to target performance work.",inputSchema:{type:"object",properties:{projectId:{type:"number",description:"Project ID"},runs:{type:"number",description:"Recent runs to analyze (default 50, max 100)"}},required:["projectId"]}},{name:"get_performance_trend",description:'Time series of run duration, average test duration, and p90 test duration for a project. Use to answer "is the suite getting slower?".',inputSchema:{type:"object",properties:{projectId:{type:"number",description:"Project ID"},limit:{type:"number",description:"Number of recent runs (default 30, max 100)"}},required:["projectId"]}},{name:"get_test_stability_trend",description:'Time-series stability for a single test case: flaky rate, pass rate, and average duration bucketed over its recent execution history. Use to answer "is this test getting flakier?".',inputSchema:{type:"object",properties:{id:{type:"number",description:"Test case ID (stable testCaseId)"},buckets:{type:"number",description:"Number of time buckets (default 20, 5–50)"}},required:["id"]}},{name:"get_network_requests",description:"A run's network requests aggregated by method + normalized route, sorted by average duration, with status codes and captured backend server logs. Use to pin a UI failure on a slow or failing endpoint.",inputSchema:{type:"object",properties:{id:{type:"number",description:"Test run ID"}},required:["id"]}},{name:"get_failure_groups",description:"One run's failures grouped by failure cluster, with per-group affected cases and worker correlation. Run-scoped counterpart to list_clusters.",inputSchema:{type:"object",properties:{id:{type:"number",description:"Test run ID"}},required:["id"]}},{name:"get_locator_healing",description:"Ranked alternative locators for a failing test-run-case: the failing locator, the recommended durable fix, and the full alternative lists (from prior success, element match, and ARIA snapshot). Use when fixing a broken selector.",inputSchema:{type:"object",properties:{testRunsCaseId:{type:"number",description:"Test run case ID (executionId)"}},required:["testRunsCaseId"]}},{name:"search",description:"Global search across all in-scope projects, runs (by label or numeric id), and test cases (by title). Use to find a run by its label or locate an entity across projects.",inputSchema:{type:"object",properties:{q:{type:"string",description:"Search query (min 2 chars)"}},required:["q"]}},{name:"list_case_traces",description:"List Playwright trace files for a test-run-case, with a download path for each. Fetch the bytes via GET /api/files/<path>.",inputSchema:{type:"object",properties:{testRunsCaseId:{type:"number",description:"Test run case ID (executionId)"}},required:["testRunsCaseId"]}},{name:"list_links",description:"List external entity links (Jira, GitHub PR/issue, etc.) attached to a run, test-run-case, or test case, with provider and unfurled status.",inputSchema:{type:"object",properties:{entityType:{type:"string",enum:["test_run","test_runs_case","test_case"],description:"Which entity the links are attached to"},id:{type:"number",description:"The entity ID matching entityType"}},required:["entityType","id"]}},{name:"list_tags",description:"List the project tag catalog (id, text, color).",inputSchema:{type:"object",properties:{}}},{name:"get_project_test_catalog",description:"The full test-case catalog for a project with aggregated pass/fail/flaky counts, average duration, and last status per test. Offset-paginated bulk companion to get_test_case.",inputSchema:{type:"object",properties:{projectId:{type:"number",description:"Project ID"},pageSize:{type:"number",description:"Results per page (default 10, max 50)"},offset:{type:"number",description:"Row offset for paging (default 0)"},query:{type:"string",description:"Optional case-insensitive substring filter on title or file path"}},required:["projectId"]}},{name:"list_open_clusters",description:"Open failure clusters across all in-scope projects, ranked by occurrences — a cross-project triage queue. Filter by status; paginate with pageSize/cursor.",inputSchema:{type:"object",properties:{status:{type:"string",enum:["open","resolved","ignored"],description:"Triage status (default: open)"},pageSize:{type:"number",description:"Results per page (default 10, max 50)"},cursor:{type:"string",description:"Opaque cursor from a previous response to get the next page"}}}},{name:"get_instance_stats",description:"Instance-wide counts (projects, runs, test cases, executions, files) and total storage size. Admin only.",inputSchema:{type:"object",properties:{}}},{name:"explain_failure",description:"One-call evidence bundle for a single failing execution: error, steps, console, ARIA snapshot, the recommended locator fix, a screenshot count, and the AI diagnosis context. Prefer this over chaining get_test_run_case + get_locator_healing + get_test_case_context.",inputSchema:{type:"object",properties:{testRunsCaseId:{type:"number",description:"Test run case ID (executionId)"}},required:["testRunsCaseId"]}},{name:"set_cluster_status",description:"Triage a failure cluster: set its status to open, resolved, or ignored with an optional note. Requires reporter or admin access. Use after fixing the underlying issue.",inputSchema:{type:"object",properties:{id:{type:"number",description:"Cluster ID"},status:{type:"string",enum:["open","resolved","ignored"],description:"New triage status"},triageNote:{type:"string",description:"Optional note explaining the status change"}},required:["id","status"]}},{name:"set_cluster_base_commit",description:'Pin the baseline commit SHA a cluster uses for its SCM-diff diagnosis context, so "what changed since green" is accurate. Requires reporter or admin access.',inputSchema:{type:"object",properties:{id:{type:"number",description:"Cluster ID"},commit:{type:"string",description:"Baseline commit SHA (empty to clear)"}},required:["id","commit"]}},{name:"submit_diagnosis_feedback",description:"Record thumbs up/down feedback on a stored diagnosis, with an optional note. Requires reporter or admin access.",inputSchema:{type:"object",properties:{id:{type:"number",description:"Diagnosis ID"},feedback:{type:"string",enum:["up","down"],description:"Rating (omit to clear)"},feedbackNote:{type:"string",description:"Optional note"}},required:["id"]}},{name:"run_cluster_diagnosis",description:"Trigger an AI diagnosis for a failure cluster and return the result (category, confidence, root cause, suggested fix). Returns the existing completed diagnosis unless force is set. Requires reporter or admin access and a configured AI provider.",inputSchema:{type:"object",properties:{id:{type:"number",description:"Cluster ID"},force:{type:"boolean",description:"Re-run even if a completed diagnosis exists (default false)"},baseCommit:{type:"string",description:"Optional baseline commit SHA for SCM-diff context"}},required:["id"]}}];function oe(S){return new URL(globalThis.location.href)}const ne={class:"max-w-3xl mx-auto p-6 space-y-6"},ae={key:0,class:"mb-4 space-y-3 rounded-md border border-default bg-elevated/50 p-3"},ce={class:"space-y-1"},pe={class:"flex items-start gap-2"},de={class:"text-xs break-all flex-1"},ue={class:"space-y-1"},le={class:"flex items-start gap-2"},me={class:"text-xs break-all flex-1"},ge={class:"text-sm text-gray-500 dark:text-gray-400 mb-4"},fe={class:"space-y-3"},ye={class:"space-y-3"},he={class:"space-y-3"},be={class:"space-y-3"},xe={class:"space-y-3"},_e={class:"space-y-3"},ve={class:"flex flex-col gap-1.5"},Ie={class:"min-w-0"},ke={class:"text-sm font-mono font-semibold text-foreground"},je={class:"text-xs text-gray-500 dark:text-gray-400 mt-0.5"},we={class:"space-y-3 text-sm text-gray-600 dark:text-gray-400"},Se={key:0},Ce={key:1},qe={key:2,class:"text-xs text-gray-400"},Re={key:3,class:"text-xs text-gray-400"},Ae={class:"space-y-2"},Pe={class:"flex items-center gap-2"},De={class:"flex-1 px-3 py-2 bg-muted rounded-md text-sm font-mono break-all"},Te={class:"text-xs text-gray-400"},Ue="pd_YOUR_API_KEY",Je=H({__name:"mcp",async setup(S){let f,_;const v=K(),I=v.public.demoMode,y=te(),{copy:k}=se(),{data:h}=([f,_]=W(()=>re("/api/desktop/reporter-config",{immediate:y,default:()=>null},"$fdl6kilREP")),f=await f,_(),f),p=d(()=>h.value?.token??Ue),C=oe(),c=d(()=>`${h.value?.url??v.public.siteUrl??C.origin}/mcp`);V({title:"MCP server — Piwi Dashboard"});const q=ie,R=[{label:"Claude Code",slot:"claude-code"},{label:"Cursor",slot:"cursor"},{label:"VS Code",slot:"vscode"},{label:"Claude Desktop",slot:"claude-desktop"},{label:"Gemini CLI",slot:"gemini"},{label:"Windsurf / Continue",slot:"windsurf"}],A=d(()=>`claude mcp add --transport http piwi ${c.value} \\
2
- --header "Authorization: Bearer ${p.value}"`),P=d(()=>JSON.stringify({mcpServers:{piwi:{url:c.value,headers:{Authorization:`Bearer ${p.value}`}}}},null,2)),D=d(()=>JSON.stringify({servers:{piwi:{type:"http",url:c.value,headers:{Authorization:`Bearer ${p.value}`}}}},null,2)),T=d(()=>JSON.stringify({mcpServers:{piwi:{type:"http",url:c.value,headers:{Authorization:`Bearer ${p.value}`}}}},null,2)),U=d(()=>`gemini mcp add --transport http piwi ${c.value} \\
3
- --header "Authorization: Bearer ${p.value}"`),O=d(()=>JSON.stringify({mcpServers:{piwi:{serverUrl:c.value,headers:{Authorization:`Bearer ${p.value}`}}}},null,2));return(z,e)=>{const L=E,M=F,x=Y,u=X,B=Z,b=ee,N=Q,$=G;return n(),j($,null,{header:o(()=>[i(L,{title:"MCP server"})]),body:o(()=>[t("div",ne,[r(I)?(n(),j(M,{key:0,color:"info",icon:"i-lucide-bot",title:"Feature preview",description:"The MCP endpoint is not active in this demo — it requires a real Piwi backend. The tools and client setup shown below reflect what your own deployment exposes."})):w("",!0),i(b,{icon:"i-lucide-settings-2",title:"Client setup",help:"mcp.client-setup"},{default:o(()=>[r(h)?(n(),a("div",ae,[t("div",ce,[e[2]||(e[2]=t("div",{class:"text-xs text-muted"},"MCP URL",-1)),t("div",pe,[t("code",de,m(r(c)),1),i(x,{icon:"i-lucide-copy",color:"neutral",variant:"ghost",size:"xs","aria-label":"Copy MCP URL",onClick:e[0]||(e[0]=l=>r(k)(r(c),{toast:!0}))})])]),t("div",ue,[e[3]||(e[3]=t("div",{class:"text-xs text-muted"},"Access token",-1)),t("div",le,[t("code",me,m(r(p)),1),i(x,{icon:"i-lucide-copy",color:"neutral",variant:"ghost",size:"xs","aria-label":"Copy access token",onClick:e[1]||(e[1]=l=>r(k)(r(p),{toast:!0}))})])]),e[4]||(e[4]=t("p",{class:"text-xs text-muted"},[s(" This app authenticates with a local access token even though sign-in is off — it is the "),t("code",{class:"font-mono"},"Bearer"),s(" value, already filled into the snippets below. ")],-1))])):w("",!0),t("p",ge,[r(h)?(n(),a(g,{key:0},[s("Pick your client below — the URL and access token above are already baked into each snippet.")],64)):(n(),a(g,{key:1},[e[5]||(e[5]=s("Replace ",-1)),e[6]||(e[6]=t("code",{class:"px-1 py-0.5 bg-muted rounded text-xs font-mono"},"pd_YOUR_API_KEY",-1)),e[7]||(e[7]=s(" with your actual API key. The MCP URL shown in the snippets is auto-detected from your current browser origin.",-1))],64))]),i(B,{items:R,ui:{list:"mb-4"}},{"claude-code":o(()=>[t("div",fe,[e[8]||(e[8]=t("p",{class:"text-sm text-gray-600 dark:text-gray-400"}," Run once in any terminal. Claude Code stores the server in your global MCP config. ",-1)),i(u,{code:r(A),lang:"sh"},null,8,["code"]),e[9]||(e[9]=t("p",{class:"text-xs text-gray-400"},[s(" After adding, restart Claude Code and use "),t("code",{class:"font-mono"},"/mcp"),s(" to verify "),t("strong",null,"piwi"),s(" is connected. Claude will call the tools automatically when you ask about test results or failures. ")],-1))])]),cursor:o(()=>[t("div",ye,[e[10]||(e[10]=t("p",{class:"text-sm text-gray-600 dark:text-gray-400"},[s(" Add to "),t("code",{class:"font-mono text-xs"},"~/.cursor/mcp.json"),s(" (global) or "),t("code",{class:"font-mono text-xs"},".cursor/mcp.json"),s(" in your project root: ")],-1)),i(u,{code:r(P),lang:"json"},null,8,["code"]),e[11]||(e[11]=t("p",{class:"text-xs text-gray-400"}," Restart Cursor, then enable the MCP server in Cursor Settings → MCP. ",-1))])]),vscode:o(()=>[t("div",he,[e[12]||(e[12]=t("p",{class:"text-sm text-gray-600 dark:text-gray-400"},[s(" Add to "),t("code",{class:"font-mono text-xs"},".vscode/mcp.json"),s(" in your workspace (VS Code Copilot agent mode, version 1.99+): ")],-1)),i(u,{code:r(D),lang:"json"},null,8,["code"]),e[13]||(e[13]=t("p",{class:"text-xs text-gray-400"}," The server appears in the Copilot chat agent drop-down once the file is saved. ",-1))])]),"claude-desktop":o(()=>[t("div",be,[e[14]||(e[14]=t("p",{class:"text-sm text-gray-600 dark:text-gray-400"},"Add to your Claude Desktop config file:",-1)),e[15]||(e[15]=t("ul",{class:"text-xs text-gray-400 space-y-0.5 mb-2"},[t("li",null,[t("strong",null,"macOS:"),t("code",{class:"font-mono"},"~/Library/Application Support/Claude/claude_desktop_config.json")]),t("li",null,[t("strong",null,"Windows:"),t("code",{class:"font-mono"},"%APPDATA%\\Claude\\claude_desktop_config.json")])],-1)),i(u,{code:r(T),lang:"json"},null,8,["code"]),e[16]||(e[16]=t("p",{class:"text-xs text-gray-400"}," Requires Claude Desktop with remote MCP support (released early 2025). Restart the app after saving. ",-1))])]),gemini:o(()=>[t("div",xe,[e[17]||(e[17]=t("p",{class:"text-sm text-gray-600 dark:text-gray-400"},"Run once to register the server with Gemini CLI:",-1)),i(u,{code:r(U),lang:"sh"},null,8,["code"]),e[18]||(e[18]=t("p",{class:"text-xs text-gray-400"}," Gemini CLI fetches the tool list on startup and makes them available in agent mode. ",-1))])]),windsurf:o(()=>[t("div",_e,[e[19]||(e[19]=t("p",{class:"text-sm text-gray-600 dark:text-gray-400"},[s(" Add to your Windsurf or Continue MCP config. For Windsurf: "),t("code",{class:"font-mono text-xs"},"~/.codeium/windsurf/mcp_config.json"),s(". For Continue: "),t("code",{class:"font-mono text-xs"},"~/.continue/config.json"),s(" under "),t("code",{class:"font-mono text-xs"},"mcpServers"),s(". ")],-1)),i(u,{code:r(O),lang:"json"},null,8,["code"])])]),_:1})]),_:1}),i(b,{icon:"i-lucide-bot",title:"What it provides",help:"mcp.tools"},{default:o(()=>[t("div",ve,[(n(!0),a(g,null,J(r(q),l=>(n(),a("div",{key:l.name,class:"flex items-start gap-3 px-3 py-2.5 rounded-md bg-elevated/50 border border-default hover:bg-elevated transition-colors"},[i(N,{name:"i-lucide-wrench",class:"size-4 mt-0.5 shrink-0 text-primary"}),t("div",Ie,[t("p",ke,m(l.name),1),t("p",je,m(l.description),1)])]))),128))])]),_:1}),i(b,{icon:"i-lucide-key",title:"Authentication",help:"mcp.auth"},{default:o(()=>[t("div",we,[e[24]||(e[24]=t("p",null,[s(" MCP requests are authenticated with the same API keys used by the REST API. API keys start with "),t("code",{class:"px-1 py-0.5 bg-muted rounded text-xs font-mono"},"pd_"),s(". ")],-1)),r(y)?(n(),a("p",Ce,[...e[21]||(e[21]=[s(" This app provides a local access token automatically — shown in ",-1),t("strong",null,"Client setup",-1),s(" above and already filled into every snippet, so there is nothing to replace. ",-1)])])):(n(),a("p",Se,[...e[20]||(e[20]=[s(" Generate a key in ",-1),t("strong",null,"Settings → Users → [your account] → API keys",-1),s(", then replace ",-1),t("code",{class:"px-1 py-0.5 bg-muted rounded text-xs font-mono"},"pd_YOUR_API_KEY",-1),s(" in the snippets above. ",-1)])])),r(y)?(n(),a("p",Re,[...e[23]||(e[23]=[s(" This desktop app keeps sign-in off but still requires its own local access token on every request — it is the ",-1),t("code",{class:"font-mono"},"Bearer",-1),s(" value. The endpoint is not open. ",-1)])])):(n(),a("p",qe,[...e[22]||(e[22]=[s(" When authentication is disabled (",-1),t("code",{class:"font-mono"},"PIWI_AUTH_ENABLED",-1),s(" not set), any request is accepted without a key. ",-1)])]))])]),_:1}),i(b,{icon:"i-lucide-link",title:"Server URL"},{default:o(()=>[t("div",Ae,[t("div",Pe,[t("code",De,m(r(c)),1),i(x,{icon:"i-lucide-external-link",size:"sm",color:"neutral",variant:"outline",title:"Open API docs",to:"/docs",external:!r(I)},{default:o(()=>[...e[25]||(e[25]=[s(" REST API docs ",-1)])]),_:1},8,["external"])]),t("p",Te,[e[32]||(e[32]=s(" This is your Piwi instance's MCP endpoint. It is also the server URL to paste into client configs above. ",-1)),r(y)?(n(),a(g,{key:0},[e[26]||(e[26]=s("This desktop app requires its local access token as the ",-1)),e[27]||(e[27]=t("code",{class:"font-mono"},"Bearer",-1)),e[28]||(e[28]=s(" value on every request.",-1))],64)):(n(),a(g,{key:1},[e[29]||(e[29]=s("The server requires a valid Bearer token (or no auth if ",-1)),e[30]||(e[30]=t("code",{class:"font-mono"},"PIWI_AUTH_ENABLED",-1)),e[31]||(e[31]=s(" is not set).",-1))],64))])])]),_:1})])]),_:1})}}});export{Je as default};
@@ -1 +0,0 @@
1
- import{_ as Re,a as Ee}from"./BreO2PiA.js";import{d as H,z as le,B as se,o as n,f as P,g as u,i as s,j as c,D as G,l as W,k as o,c as p,v as ne,F as U,y as F,p as ie,m as A,t as S,q as _,A as X,r as E,h as N,G as $e,_ as re,w as ae,b as Oe,aa as Le,I as z}from"./DHltYerF.js";import{_ as Be}from"./DHXWp5yD.js";import{_ as pe}from"./BOCwBVnz.js";import{_ as fe}from"./B1zMFx24.js";import{_ as ve}from"./DZ3Vfcpz.js";import{_ as ge}from"./C9YzQCiq.js";import{_ as Fe}from"./B-5GukRk.js";import{h as We}from"./r3SBLxtE.js";import{_ as ye}from"./CN1mJlvD.js";import{h as De}from"./BeKvLsja.js";import{u as oe}from"./DXbPFI1d.js";import{_ as Ne}from"./BeFDVhpA.js";import{p as Xe,g as qe}from"./C8OCrfDP.js";import"./B2oUeBbA.js";import"./By4YL7mx.js";import"./e7zD3uJ0.js";import"./qH_j2A3a.js";import"./DkI145a5.js";import"./CcXaak_K.js";import"./D6PUPmRC.js";import"./Dwws9U0D.js";const je={class:"space-y-3"},Ke={key:0,class:"flex items-center justify-center gap-2 py-8 text-gray-400"},ze={key:1,class:"py-8 text-center text-sm text-gray-400"},He={key:2,class:"max-h-96 overflow-y-auto space-y-px"},Ge=["onClick"],Qe={class:"flex-1 min-w-0"},Ye={class:"text-sm font-medium leading-snug truncate"},Ze={key:0,class:"text-gray-500 font-normal"},Je={class:"text-xs text-gray-400 leading-snug mt-0.5"},et={key:3,class:"italic text-gray-500"},tt={key:0,class:"flex items-center gap-1 shrink-0 pt-0.5"},st=["title"],at=["title"],ot={key:0,class:"py-8 text-center text-sm text-gray-400"},lt=H({__name:"ModelPickerModal",props:X({models:{},selected:{},loading:{type:Boolean}},{open:{type:Boolean,required:!0},openModifiers:{}}),emits:X(["select"],["update:open"]),setup(a,{emit:I}){function T(y){return y?y>=1e6?`${(y/1e6).toFixed(1)}M`:y>=1e3?`${Math.round(y/1e3)}K`:String(y):""}const g=a,r=I,k=le(a,"open"),b=E(null),d=E("");se(k,y=>{y&&$e(()=>b.value?.focus())});const l=N(()=>{const y=d.value.toLowerCase();return y?g.models.filter(i=>i.id.toLowerCase().includes(y)||(i.label?.toLowerCase()??"").includes(y)):g.models}),x={image:{icon:"i-lucide-image",label:"Image input"},pdf:{icon:"i-lucide-file-text",label:"PDF input"},code:{icon:"i-lucide-code",label:"Code execution"},thinking:{icon:"i-lucide-brain",label:"Extended thinking"},json:{icon:"i-lucide-braces",label:"Structured output"},text:{icon:"i-lucide-type",label:"Text"},audio:{icon:"i-lucide-music",label:"Audio"}};function V(y){return y.map(i=>{const C=i.indexOf("→");if(C!==-1){const R=i.slice(0,C),O=i.slice(C+1);return{inputs:R.split("+").filter(Boolean),outputs:O.split("+").filter(Boolean)}}return{inputs:[i],outputs:[]}})}function $(y){r("select",y),k.value=!1,d.value=""}return(y,i)=>{const C=G,R=ne,O=Fe;return n(),P(O,{open:k.value,"onUpdate:open":i[1]||(i[1]=v=>k.value=v),title:"Select a model",ui:{content:"max-w-2xl"}},{body:u(()=>[s("div",je,[c(C,{ref_key:"searchInput",ref:b,modelValue:o(d),"onUpdate:modelValue":i[0]||(i[0]=v=>W(d)?d.value=v:null),placeholder:"Search models…",icon:"i-lucide-search",size:"sm"},null,8,["modelValue"]),a.models.length===0&&a.loading?(n(),p("div",Ke,[c(R,{name:"i-lucide-loader-2",class:"size-4 animate-spin"}),i[2]||(i[2]=s("span",{class:"text-sm"},"Loading models…",-1))])):a.models.length===0?(n(),p("div",ze," No models available — check your provider configuration ")):(n(),p("div",He,[(n(!0),p(U,null,F(o(l),v=>(n(),p("button",{key:v.id,class:ie(["w-full text-left px-4 py-3 rounded-lg hover:bg-elevated transition-colors border border-transparent hover:border-default flex items-start gap-4",a.selected===v.id?"bg-primary/10 ring-1 ring-inset ring-primary/30 border-primary/30":""]),onClick:h=>$(v.id)},[s("div",Qe,[s("p",Ye,[A(S(v.id)+" ",1),v.label&&v.label!==v.id?(n(),p("span",Ze," — "+S(v.label),1)):_("",!0)]),s("p",Je,[v.contextLength?(n(),p(U,{key:0},[A(S(T(v.contextLength))+" ctx",1)],64)):_("",!0),v.maxTokens?(n(),p(U,{key:1},[A(" · up to "+S(T(v.maxTokens))+" out",1)],64)):_("",!0),v.pricing?.prompt?(n(),p(U,{key:2},[A(" · $"+S(v.pricing.prompt)+" / $"+S(v.pricing.completion??"?")+" per 1M",1)],64)):_("",!0),!v.contextLength&&!v.maxTokens&&!v.pricing?.prompt?(n(),p("span",et,"No additional info")):_("",!0)])]),v.modalities?.length?(n(),p("div",tt,[(n(!0),p(U,null,F(V(v.modalities),h=>(n(),p(U,{key:h.inputs.join()+"→"+h.outputs.join()},[(n(!0),p(U,null,F(h.inputs,w=>(n(),p("span",{key:"in-"+w,title:x[w]?.label??w,class:"inline-flex items-center justify-center size-6 rounded-md bg-gray-100 dark:bg-gray-800 text-gray-500 hover:text-primary transition-colors"},[c(R,{name:x[w]?.icon??"i-lucide-cpu",class:"size-3.5"},null,8,["name"])],8,st))),128)),h.outputs.length?(n(),P(R,{key:0,name:"i-lucide-arrow-right",class:"size-3 text-gray-400 shrink-0"})):_("",!0),(n(!0),p(U,null,F(h.outputs,w=>(n(),p("span",{key:"out-"+w,title:x[w]?.label??w,class:"inline-flex items-center justify-center size-6 rounded-md bg-gray-100 dark:bg-gray-800 text-gray-500 hover:text-primary transition-colors"},[c(R,{name:x[w]?.icon??"i-lucide-cpu",class:"size-3.5"},null,8,["name"])],8,at))),128))],64))),128))])):_("",!0)],10,Ge))),128)),o(l).length===0?(n(),p("div",ot,' No models match "'+S(o(d))+'" ',1)):_("",!0)]))])]),_:1},8,["open"])}}}),nt=Object.assign(lt,{__name:"ModelPickerModal"}),it={class:"flex gap-2"},rt=H({__name:"ModelFieldInput",props:X({provider:{},providerResolved:{},reuse:{type:Boolean},models:{},loadingModels:{type:Boolean},placeholderAnthropic:{},placeholderOpenai:{}},{modelValue:{required:!0},modelModifiers:{}}),emits:X(["loadModels"],["update:modelValue"]),setup(a,{emit:I}){const T=I,g=le(a,"modelValue"),r=E(!1);return(k,b)=>{const d=G,l=re,x=nt;return n(),p(U,null,[s("div",it,[c(d,{modelValue:g.value,"onUpdate:modelValue":b[0]||(b[0]=V=>g.value=V),placeholder:a.providerResolved==="anthropic"?a.placeholderAnthropic:a.placeholderOpenai,class:"flex-1"},null,8,["modelValue","placeholder"]),a.providerResolved?(n(),P(l,{key:0,size:"sm",variant:"soft",onClick:b[1]||(b[1]=V=>{T("loadModels"),r.value=!0})},{default:u(()=>[...b[4]||(b[4]=[A(" Choose model… ",-1)])]),_:1})):_("",!0)]),c(x,{open:o(r),"onUpdate:open":b[2]||(b[2]=V=>W(r)?r.value=V:null),models:a.models,selected:g.value,loading:a.loadingModels,onSelect:b[3]||(b[3]=V=>g.value=V)},null,8,["open","models","selected","loading"])],64)}}}),dt=Object.assign(rt,{__name:"ModelFieldInput"}),ct={class:"flex items-start justify-between gap-3"},ut={class:"flex items-start gap-2"},mt={class:"font-medium inline-flex items-center gap-1"},pt={class:"text-sm text-gray-500"},ft={class:"inline-flex items-center gap-1"},vt={class:"inline-flex items-center gap-1"},gt={class:"inline-flex items-center gap-1"},yt={key:3,class:"flex justify-end"},ht=H({__name:"AiRoleConfigForm",props:X({meta:{},hasApiKey:{type:Boolean},reuseOptions:{},providerOptions:{},presetOptions:{},disabled:{type:Boolean},envManaged:{type:Boolean},models:{},loadingModels:{type:Boolean},providerResolved:{},testing:{type:Boolean}},{modelValue:{required:!0},modelModifiers:{}}),emits:X(["applyPreset","loadModels","test"],["update:modelValue"]),setup(a,{emit:I}){const T=a,g=I,r=le(a,"modelValue"),k=N({get:()=>r.value.reuse??"own",set:d=>r.value.reuse=d==="own"?null:d}),b=N(()=>We(T.meta.help));return(d,l)=>{const x=ne,V=Be,$=pe,y=fe,i=ve,C=ge,R=G,O=dt,v=re;return n(),p("div",{class:ie(["rounded-lg border border-default p-4 space-y-4",a.meta.optional&&!r.value.enabled?"opacity-80":""])},[s("div",ct,[s("div",ut,[c(x,{name:a.meta.icon,class:"size-5 mt-0.5 text-primary"},null,8,["name"]),s("div",null,[s("p",mt,[A(S(a.meta.title)+" ",1),c(V,{topic:a.meta.help},null,8,["topic"])]),s("p",pt,S(a.meta.blurb),1)])]),a.meta.optional?(n(),P($,{key:0,modelValue:r.value.enabled,"onUpdate:modelValue":l[0]||(l[0]=h=>r.value.enabled=h),disabled:a.disabled&&!a.envManaged,"aria-label":a.meta.enableLabel},null,8,["modelValue","disabled","aria-label"])):_("",!0)]),!a.meta.optional||r.value.enabled?(n(),p(U,{key:0},[a.meta.reuseTargets.length?(n(),P(i,{key:0,label:"Provider source"},{default:u(()=>[c(y,{modelValue:o(k),"onUpdate:modelValue":l[1]||(l[1]=h=>W(k)?k.value=h:null),items:a.reuseOptions,disabled:a.disabled&&!a.envManaged,class:"w-full"},null,8,["modelValue","items","disabled"])]),_:1})):_("",!0),r.value.reuse?_("",!0):(n(),p(U,{key:1},[c(i,{label:"Provider"},{label:u(()=>[s("span",ft,[l[9]||(l[9]=A(" Provider ",-1)),a.disabled?(n(),P(C,{key:0,"env-vars":o(b)},null,8,["env-vars"])):_("",!0)])]),default:u(()=>[c(y,{modelValue:r.value.provider,"onUpdate:modelValue":l[2]||(l[2]=h=>r.value.provider=h),items:a.providerOptions,disabled:a.disabled,placeholder:"Choose a provider…",class:"w-full"},null,8,["modelValue","items","disabled"])]),_:1}),r.value.provider==="openai"?(n(),P(i,{key:0,label:"Preset",description:"Pick a known provider to auto-fill the URL and model, then adjust as needed"},{default:u(()=>[c(y,{items:a.presetOptions,placeholder:"Choose a preset…",disabled:a.disabled,class:"w-full","onUpdate:modelValue":l[3]||(l[3]=h=>g("applyPreset",h))},null,8,["items","disabled"])]),_:1})):_("",!0),r.value.provider?(n(),P(i,{key:1,label:"API key",description:a.hasApiKey?"Leave empty to keep the stored key, clear and save to remove it":"Required for Anthropic; optional for local OpenAI-compatible servers"},{label:u(()=>[s("span",vt,[l[10]||(l[10]=A(" API key ",-1)),a.disabled?(n(),P(C,{key:0,"env-vars":o(b)},null,8,["env-vars"])):_("",!0)])]),default:u(()=>[c(R,{modelValue:r.value.apiKey,"onUpdate:modelValue":l[4]||(l[4]=h=>r.value.apiKey=h),type:"password",placeholder:a.hasApiKey?"•••••••• (unchanged)":"sk-…",disabled:a.disabled,class:"w-full font-mono"},null,8,["modelValue","placeholder","disabled"])]),_:1},8,["description"])):_("",!0),r.value.provider==="openai"?(n(),P(i,{key:2,label:"Base URL",description:"Required, e.g. http://localhost:11434/v1"},{label:u(()=>[s("span",gt,[l[11]||(l[11]=A(" Base URL ",-1)),a.disabled?(n(),P(C,{key:0,"env-vars":o(b)},null,8,["env-vars"])):_("",!0)])]),default:u(()=>[c(R,{modelValue:r.value.baseUrl,"onUpdate:modelValue":l[5]||(l[5]=h=>r.value.baseUrl=h),placeholder:"http://localhost:11434/v1",disabled:a.disabled,class:"w-full"},null,8,["modelValue","disabled"])]),_:1})):_("",!0)],64)),r.value.reuse||r.value.provider?(n(),P(i,{key:2,label:"Model",description:r.value.reuse?"Leave empty to use the reused role's model":void 0},{default:u(()=>[c(O,{modelValue:r.value.model,"onUpdate:modelValue":l[6]||(l[6]=h=>r.value.model=h),provider:r.value.provider,"provider-resolved":a.providerResolved,reuse:!!r.value.reuse,models:a.models,"loading-models":a.loadingModels,"placeholder-anthropic":a.meta.modelPlaceholderAnthropic,"placeholder-openai":a.meta.modelPlaceholderOpenai,onLoadModels:l[7]||(l[7]=h=>g("loadModels"))},null,8,["modelValue","provider","provider-resolved","reuse","models","loading-models","placeholder-anthropic","placeholder-openai"])]),_:1},8,["description"])):_("",!0),a.providerResolved?(n(),p("div",yt,[c(v,{size:"xs",color:"neutral",variant:"soft",icon:"i-lucide-plug",loading:a.testing,onClick:l[8]||(l[8]=h=>g("test"))},{default:u(()=>[...l[12]||(l[12]=[A(" Test connection ",-1)])]),_:1},8,["loading"])])):_("",!0)],64)):_("",!0)],2)}}}),bt=Object.assign(ht,{__name:"AiRoleConfigForm"}),_t={key:0,class:"space-y-3"},xt={class:"text-sm text-gray-500"},kt={key:0,class:"text-sm text-gray-500"},At={key:1,class:"overflow-x-auto"},It={class:"w-full text-sm"},Mt={class:"px-2 py-2"},St={class:"font-mono text-xs"},Vt={class:"text-xs text-gray-400"},wt={class:"text-right px-2 py-2"},Pt=["title"],Tt=["title"],Ut={class:"text-right px-2 py-2"},Ct={key:1,class:"flex items-center gap-2 py-4 text-muted"},Rt=H({__name:"AiUsagePanel",async setup(a){let I,T;const g=E(30),r=[{label:"Last 7 days",value:7},{label:"Last 30 days",value:30},{label:"Last 90 days",value:90}],{data:k,pending:b}=([I,T]=ae(()=>oe("/api/settings/ai/usage",{query:{days:g}},"$1ij5UlwVIK")),I=await I,T(),I);function d(l){return l>=1e6?`${(l/1e6).toFixed(1)}M`:l>=1e3?`${(l/1e3).toFixed(1)}k`:String(l)}return(l,x)=>{const V=fe,$=ne,y=ye;return n(),P(y,{icon:"i-lucide-activity",title:"AI usage"},{actions:u(()=>[c(V,{modelValue:o(g),"onUpdate:modelValue":x[0]||(x[0]=i=>W(g)?g.value=i:null),items:r,size:"sm",class:"w-36"},null,8,["modelValue"])]),default:u(()=>[o(k)?(n(),p("div",_t,[s("p",xt,S(d(o(k).totals.diagnoses))+" diagnoses · "+S(d(o(k).totals.inputTokens))+" input tokens · "+S(d(o(k).totals.outputTokens))+" output tokens ",1),o(k).byModel.length===0?(n(),p("p",kt,"No AI calls recorded in this period.")):(n(),p("div",At,[s("table",It,[x[1]||(x[1]=s("thead",null,[s("tr",{class:"text-xs text-gray-500 uppercase tracking-wider border-b border-default"},[s("th",{class:"text-left px-2 py-2 font-medium"},"Model"),s("th",{class:"text-right px-2 py-2 font-medium"},"Diagnoses"),s("th",{class:"text-right px-2 py-2 font-medium"},"Failed"),s("th",{class:"text-right px-2 py-2 font-medium"},"Input tokens"),s("th",{class:"text-right px-2 py-2 font-medium"},"Output tokens"),s("th",{class:"text-right px-2 py-2 font-medium"},"Avg duration")])],-1)),s("tbody",null,[(n(!0),p(U,null,F(o(k).byModel,i=>(n(),p("tr",{key:`${i.provider??"unknown"}/${i.model}`,class:"border-b last:border-b-0 border-default"},[s("td",Mt,[s("span",St,S(i.model),1),s("span",Vt," · "+S(i.provider??"unknown"),1)]),s("td",wt,S(i.diagnoses),1),s("td",{class:ie(["text-right px-2 py-2",i.failed>0?"text-red-600 dark:text-red-400":""])},S(i.failed),3),s("td",{class:"text-right px-2 py-2",title:i.inputTokens.toLocaleString()},S(d(i.inputTokens)),9,Pt),s("td",{class:"text-right px-2 py-2",title:i.outputTokens.toLocaleString()},S(d(i.outputTokens)),9,Tt),s("td",Ut,S(i.avgDurationMs===null?"—":("formatDuration"in l?l.formatDuration:o(De))(i.avgDurationMs)),1)]))),128))])])]))])):o(b)?(n(),p("div",Ct,[c($,{name:"i-lucide-loader-circle",class:"size-4 animate-spin"}),x[2]||(x[2]=s("span",{class:"text-sm"},"Loading usage…",-1))])):_("",!0)]),_:1})}}}),Et=Object.assign(Rt,{__name:"AiUsagePanel"}),$t=[{key:"sampleErrorChars",label:"Error text characters",envVar:"PIWI_AI_MAX_SAMPLE_ERROR_CHARS",description:"Max characters of raw error text (per error block).",min:200,max:5e4},{key:"scmPatchBudget",label:"SCM patch budget",envVar:"PIWI_AI_MAX_SCM_PATCH_BUDGET",description:"Total characters of diff patches across changed files.",min:0,max:5e4},{key:"affectedTests",label:"Affected tests",envVar:"PIWI_AI_MAX_AFFECTED_TESTS",description:"Max affected tests listed.",min:1,max:200},{key:"steps",label:"Test steps",envVar:"PIWI_AI_MAX_STEPS",description:"Max recent test steps included.",min:1,max:200},{key:"consoleEntries",label:"Console entries",envVar:"PIWI_AI_MAX_CONSOLE_ENTRIES",description:"Max console error/warning entries included.",min:0,max:200},{key:"consoleEntryChars",label:"Console entry characters",envVar:"PIWI_AI_MAX_CONSOLE_ENTRY_CHARS",description:"Max characters per console entry.",min:50,max:5e3},{key:"networkRequests",label:"Network requests",envVar:"PIWI_AI_MAX_NETWORK_REQUESTS",description:"Max failed network requests included.",min:0,max:200},{key:"ariaSnapshotChars",label:"ARIA snapshot characters",envVar:"PIWI_AI_MAX_ARIA_SNAPSHOT_CHARS",description:"Max characters of the page ARIA snapshot.",min:0,max:5e4},{key:"testSourceChars",label:"Test source characters",envVar:"PIWI_AI_MAX_TEST_SOURCE_CHARS",description:"Max characters of the test source snippet.",min:0,max:5e4},{key:"maxSourceFiles",label:"Full source files",envVar:"PIWI_AI_MAX_SOURCE_FILES",description:"Max full source files fetched from SCM to ground patches (0 disables).",min:0,max:20},{key:"sourceFileChars",label:"Source file characters",envVar:"PIWI_AI_MAX_SOURCE_FILE_CHARS",description:"Max characters per fetched full source file.",min:0,max:5e4},{key:"serverLogEntries",label:"Server log entries",envVar:"PIWI_AI_MAX_SERVER_LOG_ENTRIES",description:"Max backend server log entries (from X-Piwi-Logs header) included.",min:0,max:200},{key:"serverLogEntryChars",label:"Server log entry characters",envVar:"PIWI_AI_MAX_SERVER_LOG_ENTRY_CHARS",description:"Max characters per backend server log entry.",min:50,max:5e3},{key:"serverTraceSpans",label:"Server trace spans",envVar:"PIWI_AI_MAX_SERVER_TRACE_SPANS",description:"Max backend server spans (from X-Piwi-Trace header) included (0 disables).",min:0,max:500},{key:"maxImages",label:"Max screenshots",envVar:"PIWI_AI_MAX_IMAGES",description:"Max screenshots auto-included in the diagnosis context.",min:0,max:20},{key:"maxPassedPeers",label:"Max passed peers",envVar:"PIWI_AI_MAX_PASSED_PEERS",description:"Max peer tests in the same file listed when they passed.",min:0,max:100},{key:"maxConsoleWindow",label:"Console window entries",envVar:"PIWI_AI_MAX_CONSOLE_WINDOW",description:"Max console entries of any type in the window before failure.",min:0,max:200},{key:"slowRequestMs",label:"Slow request threshold (ms)",envVar:"PIWI_AI_SLOW_REQUEST_MS",description:"Network request duration threshold for flagging as slow.",min:100,max:3e4},{key:"maxTraceActions",label:"Trace actions",envVar:"PIWI_AI_MAX_TRACE_ACTIONS",description:"Max actions extracted from trace ZIP for failing-action context (0 disables).",min:0,max:50},{key:"traceDomChars",label:"Trace DOM excerpt characters",envVar:"PIWI_AI_TRACE_DOM_CHARS",description:"Max characters for the trace-derived DOM/ARIA excerpt in failing-action context.",min:0,max:2e4},{key:"traceStackFrames",label:"Trace stack frames",envVar:"PIWI_AI_MAX_TRACE_STACK_FRAMES",description:"Max call-stack frames (with source windows) from the trace (0 disables).",min:0,max:50},{key:"traceNetworkRequests",label:"Trace network requests",envVar:"PIWI_AI_MAX_TRACE_NETWORK_REQUESTS",description:"Max requests from the trace network stream (0 disables).",min:0,max:200},{key:"domSnapshotChars",label:"DOM snapshot characters",envVar:"PIWI_AI_MAX_DOM_SNAPSHOT_CHARS",description:"Max characters of the failure-time DOM snapshot rendered from the trace (0 disables).",min:0,max:5e4},{key:"imageMaxEdge",label:"Screenshot max edge (px)",envVar:"PIWI_AI_IMAGE_MAX_EDGE",description:"Screenshots are downscaled to at most this many pixels on the long edge before being sent.",min:512,max:8192}],Ot={class:"space-y-6"},Lt={class:"space-y-5"},Bt={class:"flex items-center gap-3"},Ft={class:"flex items-center gap-2 justify-end"},Wt={class:"flex justify-end"},Dt={class:"flex justify-end"},Nt={class:"grid grid-cols-1 sm:grid-cols-2 gap-x-4 gap-y-3"},Xt={class:"flex justify-end gap-2"},ms=H({__name:"ai",async setup(a){let I,T;const g=Oe(),{data:r,refresh:k}=([I,T]=ae(()=>oe("/api/settings/ai","$nV9xx-QVRl")),I=await I,T(),I);function b(){return{enabled:!1,reuse:null,provider:"",model:"",baseUrl:"",apiKey:""}}const d=z({diagnosis:b(),research:b(),embedding:b()}),l=E(!1),x=E(""),V=E(""),$=E(!1),y=E(!1),i=E(!1),C=z({diagnosis:!1,research:!1,embedding:!1}),R=z({diagnosis:[],research:[],embedding:[]}),O=z({diagnosis:!1,research:!1,embedding:!1});function v(t){const e=d[t];return e.reuse?d[e.reuse]?.provider||"":e.provider}async function h(t){const e=d[t],f=v(t),M=e.reuse?d[e.reuse]:e,ee=M.apiKey||void 0;O[t]=!0;try{const te=await $fetch("/api/settings/ai/models",{method:"POST",body:{role:t,provider:f,baseUrl:M.baseUrl||void 0,apiKey:ee}});R[t]=te.models}catch{R[t]=[]}finally{O[t]=!1}}const w=[{key:"diagnosis",title:"Diagnosis model",icon:"i-lucide-stethoscope",help:"settings.ai-provider",optional:!1,enableLabel:"",blurb:"The main model that writes the final diagnosis. Required to enable AI features.",reuseTargets:[],modelPlaceholderAnthropic:"claude-opus-4-8",modelPlaceholderOpenai:"e.g. gpt-4o, llama3.1"},{key:"research",title:"Research model",icon:"i-lucide-search",help:"settings.ai-research",optional:!0,enableLabel:"Two-stage diagnosis",blurb:"A cheaper/faster model that pre-analyzes the failure before the diagnosis model writes the final answer. Also used for cluster naming and merge adjudication.",reuseTargets:["diagnosis"],modelPlaceholderAnthropic:"e.g. claude-haiku-4-5",modelPlaceholderOpenai:"e.g. llama-3.1-8b-instant"},{key:"embedding",title:"Embedding model",icon:"i-lucide-vector-square",help:"settings.embedding-model",optional:!0,enableLabel:"Semantic clustering",blurb:"Embeds failures so semantically-similar errors group together (used by failure clustering).",reuseTargets:["diagnosis","research"],modelPlaceholderAnthropic:"— Anthropic has no embeddings API —",modelPlaceholderOpenai:"e.g. text-embedding-3-small"}],de=[{label:"Anthropic API",value:"anthropic"},{label:"OpenAI-compatible",value:"openai"}],he=de.filter(t=>t.value!=="anthropic"),be=N(()=>{const t={};for(const e of w)t[e.key]=[{label:"Configure its own provider",value:"own"},...e.reuseTargets.filter(f=>d[f].enabled||f==="diagnosis").filter(f=>e.key!=="embedding"||d[f].provider==="openai").map(f=>({label:`Reuse ${w.find(M=>M.key===f).title.toLowerCase()}`,value:f}))];return t}),D=N(()=>!!r.value?.envManaged),_e=Xe(qe("ai"));se(r,t=>{if(t){for(const e of w){const f=t.roles[e.key],M=d[e.key];M.enabled=!!f,M.reuse=f?.reuse??null,M.provider=f?.provider??"",M.model=f?.model??"",M.baseUrl=f?.baseUrl??"",M.apiKey=""}l.value=t.autoDiagnose,x.value=t.customInstructions||""}},{immediate:!0});function xe(t){return!!r.value?.roles[t]?.hasApiKey}const ce=[{label:"ollama (local)",baseUrl:"http://localhost:11434/v1",model:"llama3.1"},{label:"LM Studio (local)",baseUrl:"http://localhost:1234/v1",model:""},{label:"OpenRouter",baseUrl:"https://openrouter.ai/api/v1",model:"meta-llama/llama-3.1-8b-instruct"},{label:"Groq",baseUrl:"https://api.groq.com/openai/v1",model:"llama-3.1-8b-instant"},{label:"OpenAI",baseUrl:"https://api.openai.com/v1",model:"gpt-4o"},{label:"Mistral AI",baseUrl:"https://api.mistral.ai/v1",model:"mistral-small-latest"},{label:"Custom",baseUrl:"",model:""}],ke=ce.map(t=>({label:t.label,value:t.label}));function Ae(t,e){const f=ce.find(M=>M.label===e);!f||f.label==="Custom"||(d[t].baseUrl=f.baseUrl,d[t].model=f.model)}function Q(t){const e=d[t];if(!e.enabled)return null;if(e.reuse)return{reuse:e.reuse,model:e.model||void 0};const f={provider:e.provider,model:e.model||void 0,baseUrl:e.baseUrl||void 0};return e.apiKey!==""&&(f.apiKey=e.apiKey),f}async function Ie(){$.value=!0;try{!D&&(!d.diagnosis.enabled||!d.diagnosis.provider)?await $fetch("/api/settings/ai",{method:"PUT",body:{roles:null,autoDiagnose:l.value}}):await $fetch("/api/settings/ai",{method:"PUT",body:{roles:{diagnosis:Q("diagnosis"),research:Q("research"),embedding:Q("embedding")},autoDiagnose:l.value}}),await k();for(const t of w)d[t.key].apiKey="";g.add({title:"Settings saved",color:"success"})}catch(t){g.add({title:"Save failed",description:String(t?.message??t),color:"error"})}finally{$.value=!1}}async function Me(){i.value=!0;try{await $fetch("/api/settings/ai",{method:"PUT",body:{scmToken:V.value||null}}),await k(),V.value="",g.add({title:"SCM token saved",color:"success"})}catch(t){g.add({title:"Save failed",description:String(t?.message??t),color:"error"})}finally{i.value=!1}}async function Se(){y.value=!0;try{await $fetch("/api/settings/ai",{method:"PUT",body:{customInstructions:x.value||null}}),await k(),g.add({title:"Instructions saved",color:"success"})}catch(t){g.add({title:"Save failed",description:String(t?.message??t),color:"error"})}finally{y.value=!1}}async function Ve(t){C[t]=!0;try{const e=d[t],f=e.reuse?d[e.reuse]:e,M=await $fetch("/api/settings/ai/test",{method:"POST",body:{role:t,provider:f.provider||void 0,apiKey:f.apiKey||void 0,model:e.model||(e.reuse?f.model:"")||void 0,baseUrl:f.baseUrl||void 0}});M.success?g.add({title:"Connection successful",description:`Model: ${M.model}`,color:"success"}):g.add({title:"Connection failed",description:M.error||"Unknown error",color:"error"})}catch(e){g.add({title:"Connection failed",description:String(e?.message??e),color:"error"})}finally{C[t]=!1}}const{data:L}=([I,T]=ae(()=>oe("/api/settings/ai/limits","$cSpsteApgW")),I=await I,T(),I),Y=$t,q=z({}),Z=E(!1),J=N(()=>new Set(L.value?.envManaged??[]));se(L,t=>{if(t)for(const e of Y)q[e.key]=t.limits[e.key]},{immediate:!0});async function we(){Z.value=!0;try{L.value=await $fetch("/api/settings/ai/limits",{method:"PUT",body:{limits:q}}),g.add({title:"Context limits saved",color:"success"})}catch(t){g.add({title:"Failed to save context limits",description:String(t?.message??t),color:"error"})}finally{Z.value=!1}}function Pe(){if(L.value)for(const t of Y)J.value.has(t.key)||(q[t.key]=L.value.defaults[t.key])}return(t,e)=>{const f=Re,M=bt,ee=pe,te=Ee,j=re,K=ye,Te=Et,ue=G,me=ve,Ue=Ne,Ce=ge;return n(),p("div",Ot,[o(D)?(n(),P(f,{key:0,"env-vars":o(_e)},null,8,["env-vars"])):_("",!0),c(K,{icon:"i-lucide-sparkles",title:"Model providers",help:"settings.ai-provider"},{subtitle:u(()=>[...e[3]||(e[3]=[A(" Configure a complete provider for each model role. Optional roles can reuse another role's provider so you don't re-enter credentials. ",-1)])]),footer:u(()=>[s("div",Ft,[c(j,{color:"primary",loading:o($),icon:"i-lucide-save",onClick:Ie},{default:u(()=>[...e[5]||(e[5]=[A(" Save ",-1)])]),_:1},8,["loading"])])]),default:u(()=>[s("div",Lt,[(n(),p(U,null,F(w,m=>c(M,{key:m.key,modelValue:o(d)[m.key],"onUpdate:modelValue":B=>o(d)[m.key]=B,meta:m,"has-api-key":xe(m.key),"reuse-options":o(be)[m.key],"provider-options":m.key==="embedding"?o(he):de,"preset-options":o(ke),disabled:o(D),"env-managed":o(D),"provider-resolved":v(m.key),models:o(R)[m.key],"loading-models":o(O)[m.key],testing:o(C)[m.key],onApplyPreset:B=>Ae(m.key,B),onLoadModels:B=>h(m.key),onTest:B=>Ve(m.key)},null,8,["modelValue","onUpdate:modelValue","meta","has-api-key","reuse-options","provider-options","preset-options","disabled","env-managed","provider-resolved","models","loading-models","testing","onApplyPreset","onLoadModels","onTest"])),64)),c(te,{label:"Auto-diagnose",help:"settings.auto-diagnose","env-managed":o(D)},{default:u(()=>[s("div",Bt,[c(ee,{modelValue:o(l),"onUpdate:modelValue":e[0]||(e[0]=m=>W(l)?l.value=m:null),disabled:o(D)||!o(d).diagnosis.enabled},null,8,["modelValue","disabled"]),e[4]||(e[4]=s("span",{class:"text-sm text-gray-500"}," Automatically diagnose new failure clusters when a run finishes — up to 3 clusters per run (research + diagnosis call each), plus one batched call to title new clusters ",-1))])]),_:1},8,["env-managed"])])]),_:1}),c(Te),c(K,{title:"Repository access",help:"project.scm-token"},{subtitle:u(()=>[...e[6]||(e[6]=[A(" Optional — required for private repositories. Per-project tokens override this. ",-1)])]),footer:u(()=>[s("div",Wt,[c(j,{color:"primary",loading:o(i),icon:"i-lucide-save",onClick:Me},{default:u(()=>[...e[7]||(e[7]=[A(" Save token ",-1)])]),_:1},8,["loading"])])]),default:u(()=>[c(me,{label:"SCM token",description:o(r)?.hasScmToken?"Leave empty to keep the stored token, enter a new value to replace it, or save empty to remove it":"Personal access token with read access to repository contents. Supports GitHub (ghp_), GitLab (glpat-), and Bitbucket tokens."},{default:u(()=>[c(ue,{modelValue:o(V),"onUpdate:modelValue":e[1]||(e[1]=m=>W(V)?V.value=m:null),type:"password",placeholder:o(r)?.hasScmToken?"•••••••• (unchanged)":"ghp_..., glpat-..., or Bitbucket token",class:"w-full font-mono"},null,8,["modelValue","placeholder"])]),_:1},8,["description"])]),_:1}),c(K,{title:"Global analysis instructions",help:"settings.ai-instructions"},{footer:u(()=>[s("div",Dt,[c(j,{color:"primary",loading:o(y),icon:"i-lucide-save",onClick:Se},{default:u(()=>[...e[8]||(e[8]=[A(" Save instructions ",-1)])]),_:1},8,["loading"])])]),default:u(()=>[c(Ue,{modelValue:o(x),"onUpdate:modelValue":e[2]||(e[2]=m=>W(x)?x.value=m:null),rows:6,placeholder:"e.g. Always suggest running failing tests with --repeat-each 5 to confirm flakiness. Prefer network-level evidence over ARIA snapshots. Recommend git bisect when a commit range is available.",class:"w-full font-mono text-sm"},null,8,["modelValue"]),e[9]||(e[9]=s("p",{class:"text-xs text-gray-400 mt-2"}," These instructions are appended to the base system prompt. They shape how the AI analyzes failures but cannot override the response schema or confidence requirement. ",-1))]),_:1}),c(K,{title:"Diagnosis context limits",help:"settings.ai-limits"},{subtitle:u(()=>[...e[10]||(e[10]=[A(" Leave a field empty to use its default; env-managed fields are read-only. ",-1)])]),footer:u(()=>[s("div",Xt,[c(j,{color:"neutral",variant:"ghost",size:"sm",onClick:Pe},{default:u(()=>[...e[11]||(e[11]=[A("Reset to defaults",-1)])]),_:1}),c(j,{color:"primary",loading:o(Z),icon:"i-lucide-save",size:"sm",onClick:we},{default:u(()=>[...e[12]||(e[12]=[A(" Save limits ",-1)])]),_:1},8,["loading"])])]),default:u(()=>[s("div",Nt,[(n(!0),p(U,null,F(o(Y),m=>(n(),P(me,{key:m.key,label:m.label,description:m.description,hint:`default ${o(L)?.defaults[m.key]??""}`},{default:u(()=>[c(ue,{modelValue:o(q)[m.key],"onUpdate:modelValue":B=>o(q)[m.key]=B,modelModifiers:{number:!0},type:"number",min:m.min,max:m.max,disabled:o(J).has(m.key),placeholder:`default ${o(L)?.defaults[m.key]??""}`,class:"w-full"},Le({_:2},[o(J).has(m.key)?{name:"trailing",fn:u(()=>[c(Ce,{"env-vars":[m.envVar]},null,8,["env-vars"])]),key:"0"}:void 0]),1032,["modelValue","onUpdate:modelValue","min","max","disabled","placeholder"])]),_:2},1032,["label","description","hint"]))),128))])]),_:1}),c(K,{icon:"i-lucide-shield-check",title:"Privacy notice",help:"settings.privacy"},{default:u(()=>[...e[13]||(e[13]=[s("div",{class:"space-y-2 text-sm text-gray-600 dark:text-gray-400"},[s("p",null,"When diagnosing a failure cluster, the following data is sent to the configured LLM provider:"),s("ul",{class:"list-disc list-inside space-y-1 ml-2"},[s("li",null,"Normalized error signature and sample raw error text"),s("li",null,"Test titles and file paths for affected tests"),s("li",null,"Browser info, test steps, console error/warning entries (excerpts)"),s("li",null,"Failed network request URLs and status codes"),s("li",null,"ARIA page snapshot (if collected)"),s("li",null," Commit SHA range since last passing run, plus changed file names and diff patches fetched from GitHub/GitLab/Bitbucket (if a repository token is configured or the repo is public) ")]),s("p",{class:"mt-2"},[A(" API keys are stored encrypted in the application database (admin-only access). For stricter setups, use the "),s("code",{class:"font-mono text-xs"},"PIWI_AI_*"),A(" environment variables instead of the UI. ")])],-1)])]),_:1})])}}});export{ms as default};