@piwitests/server 0.18.1 → 0.19.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.
- package/.output/nitro.json +1 -1
- package/.output/public/_nuxt/{BaDv5D7A.js → -09h6CA9.js} +1 -1
- package/.output/public/_nuxt/279D2RYp.js +1 -0
- package/.output/public/_nuxt/81InBX9v.js +1 -0
- package/.output/public/_nuxt/{CRpbGS75.js → Ar3IelOY.js} +1 -1
- package/.output/public/_nuxt/B33iXw77.js +1 -0
- package/.output/public/_nuxt/B3B9Ii2A.js +1 -0
- package/.output/public/_nuxt/B3HO8kuh.js +1 -0
- package/.output/public/_nuxt/B44A4LSJ.js +1 -0
- package/.output/public/_nuxt/{CPZ5wygb.js → B7NBP1C-.js} +1 -1
- package/.output/public/_nuxt/{Db_-yjYg.js → B9WhzpKO.js} +1 -1
- package/.output/public/_nuxt/{DoYgYLOd.js → BCMuIgP5.js} +1 -1
- package/.output/public/_nuxt/BDicZ1gQ.js +1 -0
- package/.output/public/_nuxt/BJ0XQElc.js +1 -0
- package/.output/public/_nuxt/{D4SFgXAf.js → BMvCSA6h.js} +1 -1
- package/.output/public/_nuxt/BPQoBGg5.js +1 -0
- package/.output/public/_nuxt/BPRffDuo.js +1 -0
- package/.output/public/_nuxt/BSIxhGsh.js +1 -0
- package/.output/public/_nuxt/BVaxh6Nl.js +4 -0
- package/.output/public/_nuxt/{BReNbog6.js → BX9ZXe98.js} +1 -1
- package/.output/public/_nuxt/{rm7OkgDG.js → BYDaY0Z7.js} +1 -1
- package/.output/public/_nuxt/{WAaPPk0g.js → Bc8mOoz9.js} +2 -2
- package/.output/public/_nuxt/BccXfBfI.js +1 -0
- package/.output/public/_nuxt/{Dbg8z684.js → BeLWlVK0.js} +1 -1
- package/.output/public/_nuxt/{CP0vUzbd.js → BfTuX0wq.js} +1 -1
- package/.output/public/_nuxt/BjaRappk.js +1 -0
- package/.output/public/_nuxt/{D3MWm6JP.js → Bn0YQDyy.js} +1 -1
- package/.output/public/_nuxt/Bp5ELvx9.js +1 -0
- package/.output/public/_nuxt/BpUaY9nH.js +2 -0
- package/.output/public/_nuxt/BqV0l12c.js +1 -0
- package/.output/public/_nuxt/{D8YZvjas.js → Bti38m-M.js} +1 -1
- package/.output/public/_nuxt/{DVgMaBxD.js → Bu2aaVIY.js} +3 -3
- package/.output/public/_nuxt/{CUDeMcEK.js → BuMC3WjZ.js} +1 -1
- package/.output/public/_nuxt/{Bi3i470l.js → BxCKKeYs.js} +1 -1
- package/.output/public/_nuxt/{BTYiG93l.js → C-elpgyr.js} +1 -1
- package/.output/public/_nuxt/C2_3mdPC.js +1 -0
- package/.output/public/_nuxt/{BoC6qaRF.js → C5iG7O4O.js} +4 -4
- package/.output/public/_nuxt/C7P1UCO2.js +1 -0
- package/.output/public/_nuxt/{BuuvTH9e.js → C95YAaJq.js} +1 -1
- package/.output/public/_nuxt/{DOr_4nln.js → C9_jrmk9.js} +2 -2
- package/.output/public/_nuxt/CDk0q2hV.js +2 -0
- package/.output/public/_nuxt/{DIA_NAIv.js → CGNkHojN.js} +3 -3
- package/.output/public/_nuxt/CHEFCN8Q.js +1 -0
- package/.output/public/_nuxt/CHNwfU1y.js +1 -0
- package/.output/public/_nuxt/CK_2LZBS.js +1 -0
- package/.output/public/_nuxt/CNFYDQmj.js +1 -0
- package/.output/public/_nuxt/{BfoG8R5a.js → CTxDO9fB.js} +1 -1
- package/.output/public/_nuxt/{B1CB30tg.js → CU5S9GCh.js} +1 -1
- package/.output/public/_nuxt/{BKaU95es.js → CUtJobDm.js} +1 -1
- package/.output/public/_nuxt/CV9-fTmY.js +1 -0
- package/.output/public/_nuxt/{BAkJhSAW.js → CYsTqbBS.js} +1 -1
- package/.output/public/_nuxt/{AjuKBlzz.js → CZfMdzfk.js} +1 -1
- package/.output/public/_nuxt/{lowCGL2S.js → Cdff9XNh.js} +1 -1
- package/.output/public/_nuxt/{quV6tp4n.js → ClOqkAcc.js} +1 -1
- package/.output/public/_nuxt/{Doul3p1_.js → CpjgB2aY.js} +1 -1
- package/.output/public/_nuxt/CrwJAwhk.js +1 -0
- package/.output/public/_nuxt/CtQBsNUb.js +1 -0
- package/.output/public/_nuxt/CuSVQEkS.js +3 -0
- package/.output/public/_nuxt/{wQZj69OY.js → CylWPruw.js} +1 -1
- package/.output/public/_nuxt/CzGyac8q.js +1 -0
- package/.output/public/_nuxt/D-c8ZSws.js +1 -0
- package/.output/public/_nuxt/{B6IHiVa1.js → D0HNloZ9.js} +1 -1
- package/.output/public/_nuxt/{ClIKZ4qY.js → D55D4EYo.js} +1 -1
- package/.output/public/_nuxt/{Bi9DO8jm.js → DDDpCFpF.js} +1 -1
- package/.output/public/_nuxt/{va1mwSm9.js → DEFEpYzn.js} +1 -1
- package/.output/public/_nuxt/DGfAxLHV.js +1 -0
- package/.output/public/_nuxt/DHDtnj7p.js +1 -0
- package/.output/public/_nuxt/DLSrtpsA.js +1 -0
- package/.output/public/_nuxt/DP8hfJ9h.js +1 -0
- package/.output/public/_nuxt/DS636elg.js +1 -0
- package/.output/public/_nuxt/{D51_cB9D.js → DT53RWbC.js} +1 -1
- package/.output/public/_nuxt/DVDXJYq2.js +2 -0
- package/.output/public/_nuxt/DW0xl3I6.js +17 -0
- package/.output/public/_nuxt/{BEB2Mv6B.js → DX-MDGb3.js} +1 -1
- package/.output/public/_nuxt/DcmZRa_F.js +1 -0
- package/.output/public/_nuxt/DgE2YE3R.js +1 -0
- package/.output/public/_nuxt/Dgf5N4Ng.js +1 -0
- package/.output/public/_nuxt/DiOLdHBC.js +1 -0
- package/.output/public/_nuxt/DiZyJYez.js +1 -0
- package/.output/public/_nuxt/Dk9fwOCm.js +34 -0
- package/.output/public/_nuxt/{DRE6Aqqp.js → Dnpkl-1q.js} +1 -1
- package/.output/public/_nuxt/DoUy4UHi.js +44 -0
- package/.output/public/_nuxt/{empGC_x-.js → DprVVyUQ.js} +1 -1
- package/.output/public/_nuxt/{BVDBIVAQ.js → DslPMqfa.js} +1 -1
- package/.output/public/_nuxt/{Vnfkr1pJ.js → FUXhyidq.js} +1 -1
- package/.output/public/_nuxt/HXerICAi.js +79 -0
- package/.output/public/_nuxt/{Do6zIWQf.js → IvQlbZk6.js} +1 -1
- package/.output/public/_nuxt/{n-QWmQgc.js → Jo8kRmHz.js} +1 -1
- package/.output/public/_nuxt/{BsDB_eCd.js → KnfsST6Y.js} +1 -1
- package/.output/public/_nuxt/NQikbhmK.js +253 -0
- package/.output/public/_nuxt/OSduWzyz.js +1 -0
- package/.output/public/_nuxt/SfMRXW25.js +5 -0
- package/.output/public/_nuxt/{mlAADjK3.js → SlIRLREZ.js} +2 -2
- package/.output/public/_nuxt/TagBadge.By1E6r4y.css +1 -0
- package/.output/public/_nuxt/WsxFTEFq.js +10 -0
- package/.output/public/_nuxt/YVN7WG7q.js +1 -0
- package/.output/public/_nuxt/{CRcjGmf7.js → ZFiQCMUB.js} +1 -1
- package/.output/public/_nuxt/aQgs_c6e.js +9 -0
- package/.output/public/_nuxt/builds/latest.json +1 -1
- package/.output/public/_nuxt/builds/meta/ab473028-4b37-4884-b243-b8f6e5046e5e.json +1 -0
- package/.output/public/_nuxt/{Dwp3GkV-.js → cHAnlQbv.js} +1 -1
- package/.output/public/_nuxt/dYCKgE-3.js +5 -0
- package/.output/public/_nuxt/{DnThe2U0.js → eaVkJRSa.js} +1 -1
- package/.output/public/_nuxt/entry.CPhW41mh.css +1 -0
- package/.output/public/_nuxt/{DoFSKAvY.js → eptP4pGv.js} +1 -1
- package/.output/public/_nuxt/fVcG504p.js +1 -0
- package/.output/public/_nuxt/g26aVPxc.js +1 -0
- package/.output/public/_nuxt/{wGpfdK6o.js → ndShiWE8.js} +1 -1
- package/.output/public/_nuxt/nv9-6vBK.js +1 -0
- package/.output/public/_nuxt/rWNTSFD6.js +3 -0
- package/.output/public/_nuxt/tvgqrYDd.js +1 -0
- package/.output/public/_nuxt/{DCMFuzDI.js → y17lMTFy.js} +1 -1
- package/.output/public/_nuxt/{DM_YaJgJ.js → ybDYeNxd.js} +1 -1
- package/.output/public/_nuxt/{B_aSGB8S.js → zQyPuvV1.js} +1 -1
- package/.output/public/demo/seed.version.json +2 -2
- package/.output/server/chunks/_/ai-prompt-preview.mjs +38 -0
- package/.output/server/chunks/_/ai-prompt-preview.mjs.map +1 -0
- package/.output/server/chunks/_/collect.mjs +122 -0
- package/.output/server/chunks/_/collect.mjs.map +1 -0
- package/.output/server/chunks/_/import-runs.mjs +351 -0
- package/.output/server/chunks/_/import-runs.mjs.map +1 -0
- package/.output/server/chunks/_/markers.mjs +1 -1
- package/.output/server/chunks/_/quarantine.mjs +112 -0
- package/.output/server/chunks/_/quarantine.mjs.map +1 -0
- package/.output/server/chunks/_/users.mjs +1 -1
- package/.output/server/chunks/build/{Alert-Bp1Wz_sq.mjs → Alert-C4xq8lao.mjs} +2 -2
- package/.output/server/chunks/build/Alert-C4xq8lao.mjs.map +1 -0
- package/.output/server/chunks/build/{Breadcrumb-C9ZPTLym.mjs → Breadcrumb-Ak2Lg3oM.mjs} +3 -3
- package/.output/server/chunks/build/Breadcrumb-Ak2Lg3oM.mjs.map +1 -0
- package/.output/server/chunks/build/{BreadcrumbNav-C3y42Vun.mjs → BreadcrumbNav-DO7I_z-n.mjs} +3 -3
- package/.output/server/chunks/build/BreadcrumbNav-DO7I_z-n.mjs.map +1 -0
- package/.output/server/chunks/build/{BrowserBadge-DNCp9pF-.mjs → BrowserBadge-D33lqUcj.mjs} +5 -5
- package/.output/server/chunks/build/BrowserBadge-D33lqUcj.mjs.map +1 -0
- package/.output/server/chunks/build/{ChartCard-Fr557IbV.mjs → ChartCard-Y1UKwMsf.mjs} +2 -2
- package/.output/server/chunks/build/ChartCard-Y1UKwMsf.mjs.map +1 -0
- package/.output/server/chunks/build/{Checkbox-cVOSIY93.mjs → Checkbox-DvUBGagc.mjs} +8 -8
- package/.output/server/chunks/build/Checkbox-DvUBGagc.mjs.map +1 -0
- package/.output/server/chunks/build/{CiEnvCard-DXPOhdSG.mjs → CiEnvCard-CrjOM17n.mjs} +25 -34
- package/.output/server/chunks/build/CiEnvCard-CrjOM17n.mjs.map +1 -0
- package/.output/server/chunks/build/{CodeBlock-BGwNmJ8J.mjs → CodeBlock-BgE-NSmE.mjs} +7 -22
- package/.output/server/chunks/build/CodeBlock-BgE-NSmE.mjs.map +1 -0
- package/.output/server/chunks/build/{DashboardNavbar-Bdp-OwTN.mjs → DashboardNavbar-BHmMSPX7.mjs} +3 -3
- package/.output/server/chunks/build/DashboardNavbar-BHmMSPX7.mjs.map +1 -0
- package/.output/server/chunks/build/{DashboardSidebarToggle-Ji6ADuqF.mjs → DashboardSidebarToggle-DCTnHiIv.mjs} +3 -3
- package/.output/server/chunks/build/DashboardSidebarToggle-DCTnHiIv.mjs.map +1 -0
- package/.output/server/chunks/build/{DataLocationCard-D6xSOrme.mjs → DataLocationCard-B_YHdzSz.mjs} +3 -3
- package/.output/server/chunks/build/DataLocationCard-B_YHdzSz.mjs.map +1 -0
- package/.output/server/chunks/build/{DiagnosisPanel-DV1xwGu4.mjs → DiagnosisPanel-B646dK4p.mjs} +17 -528
- package/.output/server/chunks/build/DiagnosisPanel-B646dK4p.mjs.map +1 -0
- package/.output/server/chunks/build/DurationValue-D20oGbnc.mjs +43 -0
- package/.output/server/chunks/build/DurationValue-D20oGbnc.mjs.map +1 -0
- package/.output/server/chunks/build/{EmptyState-DV3oT_xz.mjs → EmptyState-Dtlab7S9.mjs} +3 -3
- package/.output/server/chunks/build/EmptyState-Dtlab7S9.mjs.map +1 -0
- package/.output/server/chunks/build/{EntityLinks-DeOP13Kr.mjs → EntityLinks-D3fp57pR.mjs} +6 -6
- package/.output/server/chunks/build/EntityLinks-D3fp57pR.mjs.map +1 -0
- package/.output/server/chunks/build/{EnvManagedBadge-Qpn58Nmr.mjs → EnvManagedBadge-Bg3FSiU1.mjs} +3 -3
- package/.output/server/chunks/build/EnvManagedBadge-Bg3FSiU1.mjs.map +1 -0
- package/.output/server/chunks/build/{FormField-B-GSn_VR.mjs → FormField-B0HKsdMd.mjs} +3 -3
- package/.output/server/chunks/build/FormField-B0HKsdMd.mjs.map +1 -0
- package/.output/server/chunks/build/{HelpHint-YEMWtKu1.mjs → HelpHint-DrcIv-Oj.mjs} +53 -6
- package/.output/server/chunks/build/HelpHint-DrcIv-Oj.mjs.map +1 -0
- package/.output/server/chunks/build/{Label-DBvbHd3A.mjs → Label-DYDR1Oeh.mjs} +2 -2
- package/.output/server/chunks/build/Label-DYDR1Oeh.mjs.map +1 -0
- package/.output/server/chunks/build/{MiniRunBars-C3HG-EYm.mjs → MiniRunBars-CZMugDrh.mjs} +2 -2
- package/.output/server/chunks/build/MiniRunBars-CZMugDrh.mjs.map +1 -0
- package/.output/server/chunks/build/{Modal-CfA78Hm1.mjs → Modal-Ck2XLt8d.mjs} +2 -2
- package/.output/server/chunks/build/Modal-Ck2XLt8d.mjs.map +1 -0
- package/.output/server/chunks/build/{OpenInIdeLink-B92wosXu.mjs → OpenInIdeLink-C4MXA8ya.mjs} +6 -6
- package/.output/server/chunks/build/{OpenInIdeLink-B92wosXu.mjs.map → OpenInIdeLink-C4MXA8ya.mjs.map} +1 -1
- package/.output/server/chunks/build/{ProjectTestCasesTable-9Ia825h8.mjs → ProjectTestCasesTable-CxfQ5wtN.mjs} +120 -45
- package/.output/server/chunks/build/ProjectTestCasesTable-CxfQ5wtN.mjs.map +1 -0
- package/.output/server/chunks/build/{RovingFocusItem-CxhHdNGo.mjs → RovingFocusItem-BJSzTBjy.mjs} +2 -2
- package/.output/server/chunks/build/RovingFocusItem-BJSzTBjy.mjs.map +1 -0
- package/.output/server/chunks/build/{RunReports-BpJqLHY9.mjs → RunReports-DFLv51TX.mjs} +8 -6
- package/.output/server/chunks/build/RunReports-DFLv51TX.mjs.map +1 -0
- package/.output/server/chunks/build/{RunStatusBadge-BhmJ_RKM.mjs → RunStatusBadge-FfGb6bkW.mjs} +3 -2
- package/.output/server/chunks/build/RunStatusBadge-FfGb6bkW.mjs.map +1 -0
- package/.output/server/chunks/build/{SectionCard-COd9TuDq.mjs → SectionCard-CN-v0FZ_.mjs} +2 -2
- package/.output/server/chunks/build/SectionCard-CN-v0FZ_.mjs.map +1 -0
- package/.output/server/chunks/build/{Select-ppPz926C.mjs → Select-CUqj50wi.mjs} +4 -4
- package/.output/server/chunks/build/Select-CUqj50wi.mjs.map +1 -0
- package/.output/server/chunks/build/{SelectMenu-799c_Ils.mjs → SelectMenu-Db7osY7J.mjs} +4 -4
- package/.output/server/chunks/build/{SelectMenu-799c_Ils.mjs.map → SelectMenu-Db7osY7J.mjs.map} +1 -1
- package/.output/server/chunks/build/{Separator-CxZdx8kw.mjs → Separator-CR4WcEKD.mjs} +2 -2
- package/.output/server/chunks/build/Separator-CR4WcEKD.mjs.map +1 -0
- package/.output/server/chunks/build/{SettingsField-DDD4oqys.mjs → SettingsField-D6iEYbEc.mjs} +6 -6
- package/.output/server/chunks/build/SettingsField-D6iEYbEc.mjs.map +1 -0
- package/.output/server/chunks/build/{Slideover-B95Rj237.mjs → Slideover-DgCa80mf.mjs} +3 -3
- package/.output/server/chunks/build/Slideover-DgCa80mf.mjs.map +1 -0
- package/.output/server/chunks/build/{Switch-xQQ3_ME1.mjs → Switch-CgUioOYB.mjs} +5 -5
- package/.output/server/chunks/build/Switch-CgUioOYB.mjs.map +1 -0
- package/.output/server/chunks/build/{Table-CPhhVzDv.mjs → Table-BRk04Hd2.mjs} +3 -3
- package/.output/server/chunks/build/Table-BRk04Hd2.mjs.map +1 -0
- package/.output/server/chunks/build/{Tabs-BV9XqjoO.mjs → Tabs-Bbsg9wag.mjs} +3 -3
- package/.output/server/chunks/build/Tabs-Bbsg9wag.mjs.map +1 -0
- package/.output/server/chunks/build/TagBadge-DwzoFCBb.mjs +31 -0
- package/.output/server/chunks/build/TagBadge-DwzoFCBb.mjs.map +1 -0
- package/.output/server/chunks/build/TagBadge-styles.jhuZ4NjP.mjs +8 -0
- package/.output/server/chunks/build/TagBadge-styles.jhuZ4NjP.mjs.map +1 -0
- package/.output/server/chunks/build/{TestCaseHistoryChart-DMb-xSJa.mjs → TestCaseHistoryChart-nMLPhdvD.mjs} +6 -6
- package/.output/server/chunks/build/TestCaseHistoryChart-nMLPhdvD.mjs.map +1 -0
- package/.output/server/chunks/build/TestMetaBadges-D5_yUtIP.mjs +200 -0
- package/.output/server/chunks/build/TestMetaBadges-D5_yUtIP.mjs.map +1 -0
- package/.output/server/chunks/build/{TestStatusBar-CEzt76wk.mjs → TestStatusBar-j6h2Jp6A.mjs} +15 -15
- package/.output/server/chunks/build/TestStatusBar-j6h2Jp6A.mjs.map +1 -0
- package/.output/server/chunks/build/{Textarea-DrrqQUVG.mjs → Textarea-Dv2-lOvW.mjs} +2 -2
- package/.output/server/chunks/build/Textarea-Dv2-lOvW.mjs.map +1 -0
- package/.output/server/chunks/build/{Tooltip-7vwuDPrZ.mjs → Tooltip-BOazooWP.mjs} +3 -3
- package/.output/server/chunks/build/Tooltip-BOazooWP.mjs.map +1 -0
- package/.output/server/chunks/build/{VisuallyHiddenInput-C9eJVpPW.mjs → VisuallyHiddenInput-D6kBJxVd.mjs} +2 -2
- package/.output/server/chunks/build/VisuallyHiddenInput-D6kBJxVd.mjs.map +1 -0
- package/.output/server/chunks/build/{_id_-B2yirIuA.mjs → _id_-B78ky13D.mjs} +798 -358
- package/.output/server/chunks/build/_id_-B78ky13D.mjs.map +1 -0
- package/.output/server/chunks/build/{_id_-bWcP2xFl.mjs → _id_-BHh65pfg.mjs} +690 -443
- package/.output/server/chunks/build/_id_-BHh65pfg.mjs.map +1 -0
- package/.output/server/chunks/build/{_id_-B4V5fop6.mjs → _id_-Rzkqx55x.mjs} +297 -60
- package/.output/server/chunks/build/{_id_-B4V5fop6.mjs.map → _id_-Rzkqx55x.mjs.map} +1 -1
- package/.output/server/chunks/build/{_id_-CE0Gso6i.mjs → _id_-z5N6HPyC.mjs} +89 -40
- package/.output/server/chunks/build/_id_-z5N6HPyC.mjs.map +1 -0
- package/.output/server/chunks/build/{about-CoJjvUwM.mjs → about-CvSP73Ug.mjs} +100 -52
- package/.output/server/chunks/build/about-CvSP73Ug.mjs.map +1 -0
- package/.output/server/chunks/build/{account-Cn-eZqXM.mjs → account-DAfvaD-F.mjs} +21 -9
- package/.output/server/chunks/build/account-DAfvaD-F.mjs.map +1 -0
- package/.output/server/chunks/build/{ai-7jdaPOmj.mjs → ai-B4VJ9K1K.mjs} +45 -23
- package/.output/server/chunks/build/{ai-7jdaPOmj.mjs.map → ai-B4VJ9K1K.mjs.map} +1 -1
- package/.output/server/chunks/build/{analytics-B276WPeU.mjs → analytics-CJPC6t4L.mjs} +65 -39
- package/.output/server/chunks/build/{analytics-B276WPeU.mjs.map → analytics-CJPC6t4L.mjs.map} +1 -1
- package/.output/server/chunks/build/client.precomputed.mjs +1 -1
- package/.output/server/chunks/build/compare-RxHSOdsO.mjs +12 -0
- package/.output/server/chunks/build/{db.client-aHcD0wyX.mjs → db.client-CQoVTYB9.mjs} +83 -5
- package/.output/server/chunks/build/db.client-CQoVTYB9.mjs.map +1 -0
- package/.output/server/chunks/build/{default-BSzdkM_L.mjs → default-zvbFgDJG.mjs} +36 -24
- package/.output/server/chunks/build/default-zvbFgDJG.mjs.map +1 -0
- package/.output/server/chunks/build/{docs-BN_x1OW3.mjs → docs-DyuVEgtB.mjs} +30 -49
- package/.output/server/chunks/build/{docs-BN_x1OW3.mjs.map → docs-DyuVEgtB.mjs.map} +1 -1
- package/.output/server/chunks/build/{edit-C9Z7oZeu.mjs → edit-CFR5g2Qf.mjs} +30 -18
- package/.output/server/chunks/build/edit-CFR5g2Qf.mjs.map +1 -0
- package/.output/server/chunks/build/{fetch-8kznMtBM.mjs → fetch-B4FwBOzu.mjs} +3 -3
- package/.output/server/chunks/build/fetch-B4FwBOzu.mjs.map +1 -0
- package/.output/server/chunks/build/{forgot-password-BqPF4Rxs.mjs → forgot-password-CC__1OnV.mjs} +17 -5
- package/.output/server/chunks/build/forgot-password-CC__1OnV.mjs.map +1 -0
- package/.output/server/chunks/build/{help-content-DmFnuhNu.mjs → help-content-C876a9WD.mjs} +37 -8
- package/.output/server/chunks/build/help-content-C876a9WD.mjs.map +1 -0
- package/.output/server/chunks/build/import-CZo3djDi.mjs +1021 -0
- package/.output/server/chunks/build/import-CZo3djDi.mjs.map +1 -0
- package/.output/server/chunks/build/{index-CULN3-en.mjs → index-CU2nZhAa.mjs} +113 -42
- package/.output/server/chunks/build/index-CU2nZhAa.mjs.map +1 -0
- package/.output/server/chunks/build/{index-DVUtBexc.mjs → index-D7fe97l3.mjs} +1305 -281
- package/.output/server/chunks/build/index-D7fe97l3.mjs.map +1 -0
- package/.output/server/chunks/build/{index-BR9hw6qk.mjs → index-Stqw0dEI.mjs} +50 -30
- package/.output/server/chunks/build/index-Stqw0dEI.mjs.map +1 -0
- package/.output/server/chunks/build/{index-BK9PTRpd.mjs → index-gCw_y4ZJ.mjs} +87 -70
- package/.output/server/chunks/build/{index-BK9PTRpd.mjs.map → index-gCw_y4ZJ.mjs.map} +1 -1
- package/.output/server/chunks/build/{index-Ba-Fifra.mjs → index-tR6owKzj.mjs} +18 -6
- package/.output/server/chunks/build/index-tR6owKzj.mjs.map +1 -0
- package/.output/server/chunks/build/{isValueEqualOrExist-DBZjbD_3.mjs → isValueEqualOrExist-D2qw9YEr.mjs} +3 -3
- package/.output/server/chunks/build/isValueEqualOrExist-D2qw9YEr.mjs.map +1 -0
- package/.output/server/chunks/build/{login-D2XZDuek.mjs → login-Da4u1IlW.mjs} +19 -7
- package/.output/server/chunks/build/login-Da4u1IlW.mjs.map +1 -0
- package/.output/server/chunks/build/{mcp-_o6cMS6m.mjs → mcp-B3IUvRgD.mjs} +27 -21
- package/.output/server/chunks/build/mcp-B3IUvRgD.mjs.map +1 -0
- package/.output/server/chunks/build/{notifications-Dzm9c0u_.mjs → notifications-abDv0id8.mjs} +27 -21
- package/.output/server/chunks/build/notifications-abDv0id8.mjs.map +1 -0
- package/.output/server/chunks/build/pr-feedback-DjZID6q-.mjs +368 -0
- package/.output/server/chunks/build/pr-feedback-DjZID6q-.mjs.map +1 -0
- package/.output/server/chunks/build/{reset-password-gpFzIEDj.mjs → reset-password-BmrUS4ZD.mjs} +17 -5
- package/.output/server/chunks/build/reset-password-BmrUS4ZD.mjs.map +1 -0
- package/.output/server/chunks/build/server.mjs +238 -36
- package/.output/server/chunks/build/{settings-pNyPBXVa.mjs → settings-Du7YqF8i.mjs} +23 -10
- package/.output/server/chunks/build/settings-Du7YqF8i.mjs.map +1 -0
- package/.output/server/chunks/build/{settings-metadata-B0wo5R-W.mjs → settings-metadata-DrEqWcW-.mjs} +11 -2
- package/.output/server/chunks/build/settings-metadata-DrEqWcW-.mjs.map +1 -0
- package/.output/server/chunks/build/{storage-XelzuyPy.mjs → storage-B4vzxd8G.mjs} +41 -31
- package/.output/server/chunks/build/storage-B4vzxd8G.mjs.map +1 -0
- package/.output/server/chunks/build/styles.mjs +1 -0
- package/.output/server/chunks/build/{tags-DrCQ7QSw.mjs → tags-DauTe_F-.mjs} +22 -10
- package/.output/server/chunks/build/tags-DauTe_F-.mjs.map +1 -0
- package/.output/server/chunks/build/{test-cases-pmOxi-AN.mjs → test-cases-DUvaO1He.mjs} +38 -24
- package/.output/server/chunks/build/test-cases-DUvaO1He.mjs.map +1 -0
- package/.output/server/chunks/build/{timeout-hygiene-CNs71Iah.mjs → timeout-hygiene-CbnSaVbK.mjs} +20 -8
- package/.output/server/chunks/build/timeout-hygiene-CbnSaVbK.mjs.map +1 -0
- package/.output/server/chunks/build/{useAiStatus-ZO987RY7.mjs → useAiStatus-CWvIo32Q.mjs} +89 -89
- package/.output/server/chunks/build/useAiStatus-CWvIo32Q.mjs.map +1 -0
- package/.output/server/chunks/build/{useCopy-BQQKcwlq.mjs → useCopy-CeKWgHyT.mjs} +2 -2
- package/.output/server/chunks/build/useCopy-CeKWgHyT.mjs.map +1 -0
- package/.output/server/chunks/build/{PageStateCard-Bwee6JTk.mjs → useCopyRich-BemRsKgv.mjs} +418 -39
- package/.output/server/chunks/build/useCopyRich-BemRsKgv.mjs.map +1 -0
- package/.output/server/chunks/build/useDesktopDownload-D49JRQSw.mjs +46 -0
- package/.output/server/chunks/build/useDesktopDownload-D49JRQSw.mjs.map +1 -0
- package/.output/server/chunks/build/{useFormControl-BLpq1s4O.mjs → useFormControl-CZ9So7iX.mjs} +2 -2
- package/.output/server/chunks/build/useFormControl-CZ9So7iX.mjs.map +1 -0
- package/.output/server/chunks/build/{useOpenInIde-kMZ7Jw5c.mjs → useOpenInIde-4GFf-kdi.mjs} +2 -2
- package/.output/server/chunks/build/useOpenInIde-4GFf-kdi.mjs.map +1 -0
- package/.output/server/chunks/build/{useSettingsNav-NjI2seBy.mjs → useSettingsNav-C3O866KC.mjs} +6 -6
- package/.output/server/chunks/build/useSettingsNav-C3O866KC.mjs.map +1 -0
- package/.output/server/chunks/build/{useTreeViewCookie-DVYpxW-p.mjs → useTreeViewCookie-CQjQdTkH.mjs} +2 -2
- package/.output/server/chunks/build/useTreeViewCookie-CQjQdTkH.mjs.map +1 -0
- package/.output/server/chunks/build/{users-NmAUZs3i.mjs → users-CTUqXyGh.mjs} +22 -10
- package/.output/server/chunks/build/users-CTUqXyGh.mjs.map +1 -0
- package/.output/server/chunks/build/{virtualizer-ZaqK4guJ.mjs → virtualizer-Cd1hhlxC.mjs} +5 -5
- package/.output/server/chunks/build/virtualizer-Cd1hhlxC.mjs.map +1 -0
- package/.output/server/chunks/build/{wasted-time-CguAF9zc.mjs → wasted-time-lYkx5YO4.mjs} +26 -14
- package/.output/server/chunks/build/wasted-time-lYkx5YO4.mjs.map +1 -0
- package/.output/server/chunks/nitro/nitro.mjs +4914 -1102
- package/.output/server/chunks/nitro/nitro.mjs.map +1 -1
- package/.output/server/chunks/routes/__piwi/session.get.mjs +13 -1
- package/.output/server/chunks/routes/__piwi/session.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/admin/cleanup.delete.mjs +12 -0
- package/.output/server/chunks/routes/api/admin/cleanup.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/admin/stats.get.mjs +12 -0
- package/.output/server/chunks/routes/api/admin/stats.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/ai/status.get.mjs +12 -0
- package/.output/server/chunks/routes/api/ai/status.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/analytics/_widget_.get.mjs +12 -0
- package/.output/server/chunks/routes/api/analytics/_widget_.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/auth/change-password.post.mjs +12 -0
- package/.output/server/chunks/routes/api/auth/change-password.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/auth/forgot-password.post.mjs +12 -0
- package/.output/server/chunks/routes/api/auth/forgot-password.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/auth/login.post.mjs +12 -0
- package/.output/server/chunks/routes/api/auth/login.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/auth/logout.post.mjs +12 -0
- package/.output/server/chunks/routes/api/auth/logout.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/auth/me.get.mjs +12 -0
- package/.output/server/chunks/routes/api/auth/me.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/auth/oauth/_provider/callback.get.mjs +12 -0
- package/.output/server/chunks/routes/api/auth/oauth/_provider/callback.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/auth/oauth/_provider/login.get.mjs +12 -0
- package/.output/server/chunks/routes/api/auth/oauth/_provider/login.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/auth/oauth/_provider/unlink.post.mjs +12 -0
- package/.output/server/chunks/routes/api/auth/oauth/_provider/unlink.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/auth/reset-password.post.mjs +12 -0
- package/.output/server/chunks/routes/api/auth/reset-password.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/auth/send-verify-email.post.mjs +12 -0
- package/.output/server/chunks/routes/api/auth/send-verify-email.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/auth/setup.get.mjs +12 -0
- package/.output/server/chunks/routes/api/auth/setup.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/auth/setup.post.mjs +12 -0
- package/.output/server/chunks/routes/api/auth/setup.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/auth/verify-email.get.mjs +12 -0
- package/.output/server/chunks/routes/api/auth/verify-email.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/channels/_id/test.post.mjs +12 -0
- package/.output/server/chunks/routes/api/channels/_id/test.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/channels/_id_.delete.mjs +12 -0
- package/.output/server/chunks/routes/api/channels/_id_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/cluster-merge-suggestions/_id/approve.post.mjs +12 -0
- package/.output/server/chunks/routes/api/cluster-merge-suggestions/_id/approve.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/cluster-merge-suggestions/_id/reject.post.mjs +12 -0
- package/.output/server/chunks/routes/api/cluster-merge-suggestions/_id/reject.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/desktop/reporter-config.get.mjs +12 -0
- package/.output/server/chunks/routes/api/desktop/reporter-config.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/failure-clusters/_id/base-commit.patch.mjs +12 -0
- package/.output/server/chunks/routes/api/failure-clusters/_id/base-commit.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/api/failure-clusters/_id/branches.get.mjs +12 -0
- package/.output/server/chunks/routes/api/failure-clusters/_id/branches.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/failure-clusters/_id/commit-diff.get.mjs +12 -0
- package/.output/server/chunks/routes/api/failure-clusters/_id/commit-diff.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/failure-clusters/_id/commits.get.mjs +12 -0
- package/.output/server/chunks/routes/api/failure-clusters/_id/commits.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/failure-clusters/_id/context.get.mjs +24 -1
- package/.output/server/chunks/routes/api/failure-clusters/_id/context.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/failure-clusters/_id/diagnose/stream.post.mjs +13 -1
- package/.output/server/chunks/routes/api/failure-clusters/_id/diagnose/stream.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/failure-clusters/_id/diagnose.post.mjs +13 -1
- package/.output/server/chunks/routes/api/failure-clusters/_id/diagnose.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/failure-clusters/_id/diagnoses.get.mjs +13 -1
- package/.output/server/chunks/routes/api/failure-clusters/_id/diagnoses.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/failure-clusters/_id/diagnosis.get.mjs +13 -1
- package/.output/server/chunks/routes/api/failure-clusters/_id/diagnosis.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/failure-clusters/_id/export.get.mjs +64 -0
- package/.output/server/chunks/routes/api/failure-clusters/_id/export.get.mjs.map +1 -0
- package/.output/server/chunks/routes/api/failure-clusters/_id/extract-cases.post.mjs +13 -1
- package/.output/server/chunks/routes/api/failure-clusters/_id/extract-cases.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/failure-clusters/_id/fix-plan.get.mjs +56 -0
- package/.output/server/chunks/routes/api/failure-clusters/_id/fix-plan.get.mjs.map +1 -0
- package/.output/server/chunks/routes/api/failure-clusters/_id/status.patch.mjs +13 -1
- package/.output/server/chunks/routes/api/failure-clusters/_id/status.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/api/failure-clusters/_id_.get.mjs +12 -0
- package/.output/server/chunks/routes/api/failure-clusters/_id_.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/failure-diagnoses/_id/feedback.patch.mjs +13 -1
- package/.output/server/chunks/routes/api/failure-diagnoses/_id/feedback.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/api/files/_...path_.get.mjs +13 -32
- package/.output/server/chunks/routes/api/files/_...path_.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/health.get.mjs +13 -1
- package/.output/server/chunks/routes/api/health.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/index.get.mjs +12 -0
- package/.output/server/chunks/routes/api/index.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/index.get2.mjs +13 -1
- package/.output/server/chunks/routes/api/index.get2.mjs.map +1 -1
- package/.output/server/chunks/routes/api/index.get3.mjs +13 -1
- package/.output/server/chunks/routes/api/index.get3.mjs.map +1 -1
- package/.output/server/chunks/routes/api/index.get4.mjs +13 -1
- package/.output/server/chunks/routes/api/index.get4.mjs.map +1 -1
- package/.output/server/chunks/routes/api/index.get5.mjs +12 -0
- package/.output/server/chunks/routes/api/index.get5.mjs.map +1 -1
- package/.output/server/chunks/routes/api/index.post.mjs +12 -0
- package/.output/server/chunks/routes/api/index.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/index.post2.mjs +13 -1
- package/.output/server/chunks/routes/api/index.post2.mjs.map +1 -1
- package/.output/server/chunks/routes/api/index.post3.mjs +13 -1
- package/.output/server/chunks/routes/api/index.post3.mjs.map +1 -1
- package/.output/server/chunks/routes/api/index.post4.mjs +13 -1
- package/.output/server/chunks/routes/api/index.post4.mjs.map +1 -1
- package/.output/server/chunks/routes/api/index.post5.mjs +13 -1
- package/.output/server/chunks/routes/api/index.post5.mjs.map +1 -1
- package/.output/server/chunks/routes/api/index.post6.mjs +12 -0
- package/.output/server/chunks/routes/api/index.post6.mjs.map +1 -1
- package/.output/server/chunks/routes/api/links/_id/refresh.post.mjs +13 -1
- package/.output/server/chunks/routes/api/links/_id/refresh.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/links/_id_.delete.mjs +13 -1
- package/.output/server/chunks/routes/api/links/_id_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/links/_id_.patch.mjs +13 -1
- package/.output/server/chunks/routes/api/links/_id_.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/api/markers/_id_.delete.mjs +13 -1
- package/.output/server/chunks/routes/api/markers/_id_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/markers/_id_.put.mjs +13 -1
- package/.output/server/chunks/routes/api/markers/_id_.put.mjs.map +1 -1
- package/.output/server/chunks/routes/api/notifications/stream.get.mjs +13 -1
- package/.output/server/chunks/routes/api/notifications/stream.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/projects/_id/cluster-merge-suggestions.get.mjs +13 -1
- package/.output/server/chunks/routes/api/projects/_id/cluster-merge-suggestions.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/projects/_id/failure-clusters.get.mjs +13 -1
- package/.output/server/chunks/routes/api/projects/_id/failure-clusters.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/projects/_id/flaky-classify.post.mjs +13 -1
- package/.output/server/chunks/routes/api/projects/_id/flaky-classify.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/projects/_id/flaky-tests.get.mjs +22 -2
- package/.output/server/chunks/routes/api/projects/_id/flaky-tests.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/projects/_id/latest-run.get.mjs +13 -1
- package/.output/server/chunks/routes/api/projects/_id/latest-run.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/projects/_id/markers.get.mjs +13 -1
- package/.output/server/chunks/routes/api/projects/_id/markers.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/projects/_id/markers.post.mjs +13 -1
- package/.output/server/chunks/routes/api/projects/_id/markers.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/projects/_id/members.get.mjs +13 -1
- package/.output/server/chunks/routes/api/projects/_id/members.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/projects/_id/members.put.mjs +13 -1
- package/.output/server/chunks/routes/api/projects/_id/members.put.mjs.map +1 -1
- package/.output/server/chunks/routes/api/projects/_id/performance.get.mjs +13 -1
- package/.output/server/chunks/routes/api/projects/_id/performance.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/projects/_id/quarantine/_testCaseId_.delete.mjs +58 -0
- package/.output/server/chunks/routes/api/projects/_id/quarantine/_testCaseId_.delete.mjs.map +1 -0
- package/.output/server/chunks/routes/api/projects/_id/quarantine.get.mjs +57 -0
- package/.output/server/chunks/routes/api/projects/_id/quarantine.get.mjs.map +1 -0
- package/.output/server/chunks/routes/api/projects/_id/quarantine.post.mjs +72 -0
- package/.output/server/chunks/routes/api/projects/_id/quarantine.post.mjs.map +1 -0
- package/.output/server/chunks/routes/api/projects/_id/slow-tests.get.mjs +13 -1
- package/.output/server/chunks/routes/api/projects/_id/slow-tests.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/projects/_id/spec-health.get.mjs +13 -1
- package/.output/server/chunks/routes/api/projects/_id/spec-health.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/projects/_id/test-cases.get.mjs +13 -1
- package/.output/server/chunks/routes/api/projects/_id/test-cases.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/projects/_id/timeout-opportunities.get.mjs +13 -1
- package/.output/server/chunks/routes/api/projects/_id/timeout-opportunities.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/projects/_id_.delete.mjs +13 -1
- package/.output/server/chunks/routes/api/projects/_id_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/projects/_id_.get.mjs +13 -1
- package/.output/server/chunks/routes/api/projects/_id_.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/projects/_id_.put.mjs +13 -1
- package/.output/server/chunks/routes/api/projects/_id_.put.mjs.map +1 -1
- package/.output/server/chunks/routes/api/projects/menu.get.mjs +13 -1
- package/.output/server/chunks/routes/api/projects/menu.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/projects/overview.get.mjs +13 -1
- package/.output/server/chunks/routes/api/projects/overview.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/projects.get.mjs +13 -1
- package/.output/server/chunks/routes/api/projects.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/search.get.mjs +13 -1
- package/.output/server/chunks/routes/api/search.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/settings/ai/limits.get.mjs +13 -1
- package/.output/server/chunks/routes/api/settings/ai/limits.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/settings/ai/limits.put.mjs +13 -1
- package/.output/server/chunks/routes/api/settings/ai/limits.put.mjs.map +1 -1
- package/.output/server/chunks/routes/api/settings/ai/models.post.mjs +12 -0
- package/.output/server/chunks/routes/api/settings/ai/models.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/settings/ai/test.post.mjs +13 -1
- package/.output/server/chunks/routes/api/settings/ai/test.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/settings/ai/usage.get.mjs +13 -1
- package/.output/server/chunks/routes/api/settings/ai/usage.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/settings/ai.get.mjs +13 -1
- package/.output/server/chunks/routes/api/settings/ai.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/settings/ai.put.mjs +13 -1
- package/.output/server/chunks/routes/api/settings/ai.put.mjs.map +1 -1
- package/.output/server/chunks/routes/api/settings/pr-feedback.get.mjs +57 -0
- package/.output/server/chunks/routes/api/settings/pr-feedback.get.mjs.map +1 -0
- package/.output/server/chunks/routes/api/settings/pr-feedback.put.mjs +63 -0
- package/.output/server/chunks/routes/api/settings/pr-feedback.put.mjs.map +1 -0
- package/.output/server/chunks/routes/api/settings/smtp/test.post.mjs +12 -0
- package/.output/server/chunks/routes/api/settings/smtp/test.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/settings/smtp.get.mjs +13 -1
- package/.output/server/chunks/routes/api/settings/smtp.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/settings/timeout-hygiene.get.mjs +13 -1
- package/.output/server/chunks/routes/api/settings/timeout-hygiene.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/settings/timeout-hygiene.put.mjs +13 -1
- package/.output/server/chunks/routes/api/settings/timeout-hygiene.put.mjs.map +1 -1
- package/.output/server/chunks/routes/api/settings/wasted-waits.get.mjs +13 -1
- package/.output/server/chunks/routes/api/settings/wasted-waits.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/settings/wasted-waits.put.mjs +13 -1
- package/.output/server/chunks/routes/api/settings/wasted-waits.put.mjs.map +1 -1
- package/.output/server/chunks/routes/api/stream.get.mjs +13 -1
- package/.output/server/chunks/routes/api/stream.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/subscriptions/_id_.delete.mjs +13 -1
- package/.output/server/chunks/routes/api/subscriptions/_id_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/subscriptions/_id_.patch.mjs +13 -1
- package/.output/server/chunks/routes/api/subscriptions/_id_.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/api/tags/_id_.delete.mjs +13 -1
- package/.output/server/chunks/routes/api/tags/_id_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/tags/_id_.put.mjs +13 -1
- package/.output/server/chunks/routes/api/tags/_id_.put.mjs.map +1 -1
- package/.output/server/chunks/routes/api/test-cases/_id/history.get.mjs +13 -1
- package/.output/server/chunks/routes/api/test-cases/_id/history.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/test-cases/_id/stability-trend.get.mjs +13 -1
- package/.output/server/chunks/routes/api/test-cases/_id/stability-trend.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/test-cases/_id_.get.mjs +13 -1
- package/.output/server/chunks/routes/api/test-cases/_id_.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/test-run-cases/_id/diagnose.post.mjs +13 -1
- package/.output/server/chunks/routes/api/test-run-cases/_id/diagnose.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/test-run-cases/_id/diagnosis-context.get.mjs +25 -3
- package/.output/server/chunks/routes/api/test-run-cases/_id/diagnosis-context.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/test-run-cases/_id/diagnosis.get.mjs +13 -1
- package/.output/server/chunks/routes/api/test-run-cases/_id/diagnosis.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/test-run-cases/_id/export.get.mjs +60 -0
- package/.output/server/chunks/routes/api/test-run-cases/_id/export.get.mjs.map +1 -0
- package/.output/server/chunks/routes/api/test-run-cases/_id/traces.get.mjs +13 -1
- package/.output/server/chunks/routes/api/test-run-cases/_id/traces.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/test-run-cases/_id_.get.mjs +13 -1
- package/.output/server/chunks/routes/api/test-run-cases/_id_.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/begin.post.mjs +13 -1
- package/.output/server/chunks/routes/api/test-runs/_id/begin.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/case-files.post.mjs +13 -1
- package/.output/server/chunks/routes/api/test-runs/_id/case-files.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/dom-snapshot.get.mjs +13 -1
- package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/dom-snapshot.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/environment-diff.get.mjs +13 -1
- package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/environment-diff.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/locator-healing.get.mjs +13 -1
- package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/locator-healing.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/locator-pick.post.mjs +13 -1
- package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/locator-pick.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/trace-network-body.get.mjs +13 -1
- package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/trace-network-body.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/trace-network.get.mjs +13 -1
- package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/trace-network.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/trace-stacks.get.mjs +13 -1
- package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/trace-stacks.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/visual-diff.get.mjs +13 -1
- package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/visual-diff.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/events.post.mjs +13 -1
- package/.output/server/chunks/routes/api/test-runs/_id/events.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/failure-groups.get.mjs +13 -1
- package/.output/server/chunks/routes/api/test-runs/_id/failure-groups.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/finish.post.mjs +15 -1
- package/.output/server/chunks/routes/api/test-runs/_id/finish.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/gate.post.mjs +196 -0
- package/.output/server/chunks/routes/api/test-runs/_id/gate.post.mjs.map +1 -0
- package/.output/server/chunks/routes/api/test-runs/_id/heartbeat.post.mjs +13 -1
- package/.output/server/chunks/routes/api/test-runs/_id/heartbeat.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/insights.get.mjs +13 -1
- package/.output/server/chunks/routes/api/test-runs/_id/insights.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/network-requests.get.mjs +13 -1
- package/.output/server/chunks/routes/api/test-runs/_id/network-requests.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/regression-context.get.mjs +13 -1
- package/.output/server/chunks/routes/api/test-runs/_id/regression-context.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/stream.get.mjs +13 -1
- package/.output/server/chunks/routes/api/test-runs/_id/stream.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/summary.get.mjs +13 -1
- package/.output/server/chunks/routes/api/test-runs/_id/summary.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id_.delete.mjs +13 -1
- package/.output/server/chunks/routes/api/test-runs/_id_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id_.get.mjs +13 -1
- package/.output/server/chunks/routes/api/test-runs/_id_.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id_.patch.mjs +13 -1
- package/.output/server/chunks/routes/api/test-runs/_id_.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/api/test-runs/import/check.post.mjs +78 -0
- package/.output/server/chunks/routes/api/test-runs/import/check.post.mjs.map +1 -0
- package/.output/server/chunks/routes/api/test-runs/import.post.mjs +201 -0
- package/.output/server/chunks/routes/api/test-runs/import.post.mjs.map +1 -0
- package/.output/server/chunks/routes/api/test-runs/recent.get.mjs +13 -1
- package/.output/server/chunks/routes/api/test-runs/recent.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/test-runs/setup.post.mjs +13 -1
- package/.output/server/chunks/routes/api/test-runs/setup.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/test-runs/start.post.mjs +13 -1
- package/.output/server/chunks/routes/api/test-runs/start.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/test-runs/submit.post.mjs +32 -15
- package/.output/server/chunks/routes/api/test-runs/submit.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/test-runs/upload.post.mjs +21 -6
- package/.output/server/chunks/routes/api/test-runs/upload.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/tests/cleanup.delete.mjs +154 -3
- package/.output/server/chunks/routes/api/tests/cleanup.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/traces/check.post.mjs +13 -1
- package/.output/server/chunks/routes/api/traces/check.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/users/_id/api-keys/_keyId_.delete.mjs +12 -0
- package/.output/server/chunks/routes/api/users/_id/api-keys/_keyId_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/users/_id/index.get.mjs +12 -0
- package/.output/server/chunks/routes/api/users/_id/index.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/users/_id/index.post.mjs +13 -1
- package/.output/server/chunks/routes/api/users/_id/index.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/users/_id/invite.post.mjs +13 -1
- package/.output/server/chunks/routes/api/users/_id/invite.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/users/_id/projects.get.mjs +13 -1
- package/.output/server/chunks/routes/api/users/_id/projects.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/users/_id/projects.put.mjs +13 -1
- package/.output/server/chunks/routes/api/users/_id/projects.put.mjs.map +1 -1
- package/.output/server/chunks/routes/api/users/_id_.delete.mjs +12 -0
- package/.output/server/chunks/routes/api/users/_id_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/users/_id_.patch.mjs +12 -0
- package/.output/server/chunks/routes/api/users/_id_.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/api/version.get.mjs +13 -1
- package/.output/server/chunks/routes/api/version.get.mjs.map +1 -1
- package/.output/server/chunks/routes/mcp.post.mjs +13 -1
- package/.output/server/chunks/routes/mcp.post.mjs.map +1 -1
- package/.output/server/chunks/routes/renderer.mjs +1 -1
- package/.output/server/chunks/tasks/sweep.mjs +12 -0
- package/.output/server/chunks/tasks/sweep.mjs.map +1 -1
- package/.output/server/chunks/tasks/sweep2.mjs +12 -0
- package/.output/server/chunks/tasks/sweep2.mjs.map +1 -1
- package/.output/server/database/migrations/0039_remarkable_jean_grey.sql +2 -0
- package/.output/server/database/migrations/0040_organic_phalanx.sql +8 -0
- package/.output/server/database/migrations/0041_tense_gravity.sql +5 -0
- package/.output/server/database/migrations/0042_burly_hemingway.sql +19 -0
- package/.output/server/database/migrations/meta/0039_snapshot.json +3403 -0
- package/.output/server/database/migrations/meta/0040_snapshot.json +3457 -0
- package/.output/server/database/migrations/meta/0041_snapshot.json +3492 -0
- package/.output/server/database/migrations/meta/0042_snapshot.json +3618 -0
- package/.output/server/database/migrations/meta/_journal.json +28 -0
- package/.output/server/database/migrations-pg/0040_lazy_layla_miller.sql +2 -0
- package/.output/server/database/migrations-pg/0041_light_screwball.sql +8 -0
- package/.output/server/database/migrations-pg/0042_serious_layla_miller.sql +5 -0
- package/.output/server/database/migrations-pg/0043_wonderful_mordo.sql +19 -0
- package/.output/server/database/migrations-pg/meta/0040_snapshot.json +4060 -0
- package/.output/server/database/migrations-pg/meta/0041_snapshot.json +4123 -0
- package/.output/server/database/migrations-pg/meta/0042_snapshot.json +4153 -0
- package/.output/server/database/migrations-pg/meta/0043_snapshot.json +4308 -0
- package/.output/server/database/migrations-pg/meta/_journal.json +28 -0
- package/.output/server/index.mjs +13 -1
- package/.output/server/index.mjs.map +1 -1
- package/.output/server/node_modules/fflate/esm/index.mjs +2710 -0
- package/.output/server/node_modules/fflate/package.json +128 -0
- package/.output/server/node_modules/highlight.js/es/languages/yaml.js +213 -0
- package/.output/server/node_modules/marked/lib/marked.esm.js +72 -0
- package/.output/server/node_modules/marked/package.json +103 -0
- package/.output/server/package.json +3 -1
- package/package.json +2 -2
- package/.output/public/_nuxt/36cXPVrY.js +0 -26
- package/.output/public/_nuxt/87SGk1nu.js +0 -1
- package/.output/public/_nuxt/B6rt3IcG.js +0 -1
- package/.output/public/_nuxt/BAaSmp8J.js +0 -1
- package/.output/public/_nuxt/BBnX5xw4.js +0 -2
- package/.output/public/_nuxt/BCArQk0c.js +0 -1
- package/.output/public/_nuxt/BFjmLXYo.js +0 -8
- package/.output/public/_nuxt/BJltXwHg.js +0 -1
- package/.output/public/_nuxt/BUMZHDRC.js +0 -2
- package/.output/public/_nuxt/BdHdHyop.js +0 -34
- package/.output/public/_nuxt/BiX7c2qU.js +0 -1
- package/.output/public/_nuxt/C11lmBd4.js +0 -4
- package/.output/public/_nuxt/C4AfzZER.js +0 -47
- package/.output/public/_nuxt/C7ZVzS0K.js +0 -1
- package/.output/public/_nuxt/C8cz5feG.js +0 -1
- package/.output/public/_nuxt/C9EpbPNU.js +0 -1
- package/.output/public/_nuxt/C9ahP7km.js +0 -1
- package/.output/public/_nuxt/CBEM3L1q.js +0 -4
- package/.output/public/_nuxt/CCsl9MOZ.js +0 -1
- package/.output/public/_nuxt/CCw3Tx4S.js +0 -1
- package/.output/public/_nuxt/CGq9qR-0.js +0 -1
- package/.output/public/_nuxt/CLdGRzLL.js +0 -1
- package/.output/public/_nuxt/CTgM5Fke.js +0 -2
- package/.output/public/_nuxt/CU3W9YrI.js +0 -1
- package/.output/public/_nuxt/CYIR2GbL.js +0 -1
- package/.output/public/_nuxt/Ccit_CX1.js +0 -1
- package/.output/public/_nuxt/CiPH-swI.js +0 -1
- package/.output/public/_nuxt/ClVRQpP_.js +0 -1
- package/.output/public/_nuxt/CmbjAoQu.js +0 -1
- package/.output/public/_nuxt/Cx65B3c3.js +0 -1
- package/.output/public/_nuxt/D1ttGJfs.js +0 -5
- package/.output/public/_nuxt/D3SYPlEB.js +0 -114
- package/.output/public/_nuxt/DB3ljns7.js +0 -1
- package/.output/public/_nuxt/DC51KKt4.js +0 -1
- package/.output/public/_nuxt/DaewB_zT.js +0 -1
- package/.output/public/_nuxt/DcfRfTaA.js +0 -34
- package/.output/public/_nuxt/Dm1_3W9g.js +0 -1
- package/.output/public/_nuxt/DraETso1.js +0 -1
- package/.output/public/_nuxt/Dy4TloG3.js +0 -1
- package/.output/public/_nuxt/EltzgiyS.js +0 -1
- package/.output/public/_nuxt/HTQtMbWb.js +0 -1
- package/.output/public/_nuxt/KYucVFu7.js +0 -1
- package/.output/public/_nuxt/TBDx0s9p.js +0 -3
- package/.output/public/_nuxt/Tt5LX5Y-.js +0 -1
- package/.output/public/_nuxt/builds/meta/2f517ae9-c342-457e-b4c5-6301728179f5.json +0 -1
- package/.output/public/_nuxt/entry.ChQMshd4.css +0 -1
- package/.output/public/_nuxt/l0QnzFNM.js +0 -1
- package/.output/public/_nuxt/oFIS9u6t.js +0 -3
- package/.output/public/_nuxt/oWY3I9uX.js +0 -1
- package/.output/public/_nuxt/q0DPzLKN.js +0 -2
- package/.output/public/_nuxt/r3SBLxtE.js +0 -1
- package/.output/public/_nuxt/riEUDnED.js +0 -1
- package/.output/public/_nuxt/uaqMzXqE.js +0 -5
- package/.output/public/_nuxt/wgcgHmRR.js +0 -1
- package/.output/public/sw.js +0 -1
- package/.output/public/workbox-2fbc6a65.js +0 -1
- package/.output/server/chunks/build/Alert-Bp1Wz_sq.mjs.map +0 -1
- package/.output/server/chunks/build/Breadcrumb-C9ZPTLym.mjs.map +0 -1
- package/.output/server/chunks/build/BreadcrumbNav-C3y42Vun.mjs.map +0 -1
- package/.output/server/chunks/build/BrowserBadge-DNCp9pF-.mjs.map +0 -1
- package/.output/server/chunks/build/ChartCard-Fr557IbV.mjs.map +0 -1
- package/.output/server/chunks/build/Checkbox-cVOSIY93.mjs.map +0 -1
- package/.output/server/chunks/build/CiEnvCard-DXPOhdSG.mjs.map +0 -1
- package/.output/server/chunks/build/CodeBlock-BGwNmJ8J.mjs.map +0 -1
- package/.output/server/chunks/build/DashboardNavbar-Bdp-OwTN.mjs.map +0 -1
- package/.output/server/chunks/build/DashboardSidebarToggle-Ji6ADuqF.mjs.map +0 -1
- package/.output/server/chunks/build/DataLocationCard-D6xSOrme.mjs.map +0 -1
- package/.output/server/chunks/build/DiagnosisPanel-DV1xwGu4.mjs.map +0 -1
- package/.output/server/chunks/build/EmptyState-DV3oT_xz.mjs.map +0 -1
- package/.output/server/chunks/build/EntityLinks-DeOP13Kr.mjs.map +0 -1
- package/.output/server/chunks/build/EnvManagedBadge-Qpn58Nmr.mjs.map +0 -1
- package/.output/server/chunks/build/FormField-B-GSn_VR.mjs.map +0 -1
- package/.output/server/chunks/build/HelpHint-YEMWtKu1.mjs.map +0 -1
- package/.output/server/chunks/build/Label-DBvbHd3A.mjs.map +0 -1
- package/.output/server/chunks/build/MiniRunBars-C3HG-EYm.mjs.map +0 -1
- package/.output/server/chunks/build/Modal-CfA78Hm1.mjs.map +0 -1
- package/.output/server/chunks/build/PageStateCard-Bwee6JTk.mjs.map +0 -1
- package/.output/server/chunks/build/ProjectTestCasesTable-9Ia825h8.mjs.map +0 -1
- package/.output/server/chunks/build/RovingFocusItem-CxhHdNGo.mjs.map +0 -1
- package/.output/server/chunks/build/RunReports-BpJqLHY9.mjs.map +0 -1
- package/.output/server/chunks/build/RunStatusBadge-BhmJ_RKM.mjs.map +0 -1
- package/.output/server/chunks/build/SectionCard-COd9TuDq.mjs.map +0 -1
- package/.output/server/chunks/build/Select-ppPz926C.mjs.map +0 -1
- package/.output/server/chunks/build/Separator-CxZdx8kw.mjs.map +0 -1
- package/.output/server/chunks/build/SettingsField-DDD4oqys.mjs.map +0 -1
- package/.output/server/chunks/build/Slideover-B95Rj237.mjs.map +0 -1
- package/.output/server/chunks/build/Switch-xQQ3_ME1.mjs.map +0 -1
- package/.output/server/chunks/build/Table-CPhhVzDv.mjs.map +0 -1
- package/.output/server/chunks/build/Tabs-BV9XqjoO.mjs.map +0 -1
- package/.output/server/chunks/build/TagBadge-BDcvvGxw.mjs +0 -47
- package/.output/server/chunks/build/TagBadge-BDcvvGxw.mjs.map +0 -1
- package/.output/server/chunks/build/TestCaseHistoryChart-DMb-xSJa.mjs.map +0 -1
- package/.output/server/chunks/build/TestStatusBar-CEzt76wk.mjs.map +0 -1
- package/.output/server/chunks/build/Textarea-DrrqQUVG.mjs.map +0 -1
- package/.output/server/chunks/build/Tooltip-7vwuDPrZ.mjs.map +0 -1
- package/.output/server/chunks/build/VisuallyHiddenInput-C9eJVpPW.mjs.map +0 -1
- package/.output/server/chunks/build/_id_-B2yirIuA.mjs.map +0 -1
- package/.output/server/chunks/build/_id_-CE0Gso6i.mjs.map +0 -1
- package/.output/server/chunks/build/_id_-bWcP2xFl.mjs.map +0 -1
- package/.output/server/chunks/build/about-CoJjvUwM.mjs.map +0 -1
- package/.output/server/chunks/build/account-Cn-eZqXM.mjs.map +0 -1
- package/.output/server/chunks/build/db.client-aHcD0wyX.mjs.map +0 -1
- package/.output/server/chunks/build/default-BSzdkM_L.mjs.map +0 -1
- package/.output/server/chunks/build/edit-C9Z7oZeu.mjs.map +0 -1
- package/.output/server/chunks/build/fetch-8kznMtBM.mjs.map +0 -1
- package/.output/server/chunks/build/forgot-password-BqPF4Rxs.mjs.map +0 -1
- package/.output/server/chunks/build/help-content-DmFnuhNu.mjs.map +0 -1
- package/.output/server/chunks/build/index-BR9hw6qk.mjs.map +0 -1
- package/.output/server/chunks/build/index-Ba-Fifra.mjs.map +0 -1
- package/.output/server/chunks/build/index-CULN3-en.mjs.map +0 -1
- package/.output/server/chunks/build/index-DVUtBexc.mjs.map +0 -1
- package/.output/server/chunks/build/isValueEqualOrExist-DBZjbD_3.mjs.map +0 -1
- package/.output/server/chunks/build/login-D2XZDuek.mjs.map +0 -1
- package/.output/server/chunks/build/mcp-_o6cMS6m.mjs.map +0 -1
- package/.output/server/chunks/build/notifications-Dzm9c0u_.mjs.map +0 -1
- package/.output/server/chunks/build/reset-password-gpFzIEDj.mjs.map +0 -1
- package/.output/server/chunks/build/settings-metadata-B0wo5R-W.mjs.map +0 -1
- package/.output/server/chunks/build/settings-pNyPBXVa.mjs.map +0 -1
- package/.output/server/chunks/build/storage-XelzuyPy.mjs.map +0 -1
- package/.output/server/chunks/build/tags-DrCQ7QSw.mjs.map +0 -1
- package/.output/server/chunks/build/test-cases-pmOxi-AN.mjs.map +0 -1
- package/.output/server/chunks/build/timeout-hygiene-CNs71Iah.mjs.map +0 -1
- package/.output/server/chunks/build/useAiStatus-ZO987RY7.mjs.map +0 -1
- package/.output/server/chunks/build/useCopy-BQQKcwlq.mjs.map +0 -1
- package/.output/server/chunks/build/useFormControl-BLpq1s4O.mjs.map +0 -1
- package/.output/server/chunks/build/useOpenInIde-kMZ7Jw5c.mjs.map +0 -1
- package/.output/server/chunks/build/useSettingsNav-NjI2seBy.mjs.map +0 -1
- package/.output/server/chunks/build/useTreeViewCookie-DVYpxW-p.mjs.map +0 -1
- package/.output/server/chunks/build/users-NmAUZs3i.mjs.map +0 -1
- package/.output/server/chunks/build/virtualizer-ZaqK4guJ.mjs.map +0 -1
- package/.output/server/chunks/build/wasted-time-CguAF9zc.mjs.map +0 -1
- /package/.output/public/_nuxt/{PageStateCard.BrM5HWjY.css → useCopyRich.BrM5HWjY.css} +0 -0
package/.output/nitro.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{d as ee,w as te,b as oe,
|
|
1
|
+
import{d as ee,w as te,b as oe,N as ae,c as w,i as n,k as t,f as u,g as s,j as a,F as le,R as se,o as d,_ as ne,v as m,t as j,Q as re,p as ie,I as ce,O as S,ak as q,m as M,h as N,r as v,L as B,A as de}from"./NQikbhmK.js";import{_ as ue}from"./DcmZRa_F.js";import{_ as me}from"./C9_jrmk9.js";import{_ as pe}from"./DprVVyUQ.js";import{_ as ge}from"./B9WhzpKO.js";import{o as fe,s as P,_ as xe}from"./C5iG7O4O.js";import{_ as _e}from"./B3HO8kuh.js";import{p as ve}from"./CDk0q2hV.js";import{u as be}from"./CpjgB2aY.js";import"./FUXhyidq.js";import"./C7P1UCO2.js";import"./BjaRappk.js";import"./Bn0YQDyy.js";import"./eptP4pGv.js";import"./CYsTqbBS.js";const ye={class:"space-y-6"},Te={class:"flex items-center gap-2"},ke={class:"text-sm font-mono text-muted"},Ce={class:"text-sm text-muted"},he={class:"flex gap-1 justify-end"},$e={class:"text-center py-12"},Ae={class:"flex justify-center mb-4"},Ue={class:"flex items-center gap-3"},Ve={key:0,class:"mt-2"},we={class:"flex items-center gap-3"},De={key:0,class:"mt-2"},b="#6366f1",Ge=ee({__name:"tags",async setup(Fe){let y,D;const{data:z,refresh:A}=([y,D]=te(()=>be("/api/tags","$WIWNTsOq96")),y=await y,D(),y),p=oe(),{authState:I}=ae(),K=de(),U=N(()=>z.value?.tags||[]),T=N(()=>K.public.authEnabled?I.value.user?.role==="administrator":!0),L=[{accessorKey:"text",header:"Tag"},{accessorKey:"color",header:"Color"},{accessorKey:"createdAt",header:"Created"},{accessorKey:"actions",header:""}],g=v(!1),F=fe({text:P().min(1,"Tag text is required").max(50,"Tag text must be at most 50 characters"),color:P().min(1,"Color is required")}),r=B({text:"",color:b}),x=v(!1),k=v(null),i=B({text:"",color:b});function R(l){k.value=l,i.text=l.text,i.color=l.color,x.value=!0}async function W(){try{await $fetch("/api/tags",{method:"POST",body:r}),p.add({title:"Tag created",description:`Tag "${r.text}" has been created successfully`,color:"success"}),g.value=!1,r.text="",r.color=b,await A()}catch(l){const e=l&&typeof l=="object"&&"data"in l?l.data?.message:void 0;p.add({title:"Failed to create tag",description:e||"An error occurred",color:"error"})}}async function G(){if(k.value)try{await $fetch(`/api/tags/${k.value.id}`,{method:"PUT",body:{text:i.text,color:i.color}}),p.add({title:"Tag updated",description:"Tag has been updated successfully",color:"success"}),x.value=!1,k.value=null,await A()}catch(l){const e=l&&typeof l=="object"&&"data"in l?l.data?.message:void 0;p.add({title:"Failed to update tag",description:e||"An error occurred",color:"error"})}}const _=v(!1),f=v(null);function Q(l){f.value=l,_.value=!0}async function H(){const l=f.value;if(l){_.value=!1,f.value=null;try{await $fetch(`/api/tags/${l.id}`,{method:"DELETE"}),p.add({title:"Tag deleted",description:`Tag "${l.text}" has been deleted`,color:"success"}),await A()}catch(e){const c=e&&typeof e=="object"&&"data"in e?e.data?.message:void 0;p.add({title:"Failed to delete tag",description:c||"An error occurred",color:"error"})}}}return(l,e)=>{const c=ne,C=ue,J=me,E=pe,X=ie,h=ce,$=ge,O=xe,V=_e,Y=se;return d(),w(le,null,[n("div",ye,[t(U).length>0?(d(),u(E,{key:0,title:"Tags",count:t(U).length,help:"settings.tags"},{actions:s(()=>[t(T)?(d(),u(c,{key:0,label:"Add tag",icon:"i-lucide-tag",size:"sm",onClick:e[0]||(e[0]=o=>g.value=!0)})):m("",!0)]),default:s(()=>[a(J,{data:t(U),columns:L},{"text-cell":s(({row:o})=>[a(C,{text:o.original.text,color:o.original.color},null,8,["text","color"])]),"color-cell":s(({row:o})=>[n("div",Te,[n("span",{class:"inline-block w-4 h-4 rounded-full border border-black/10",style:re({backgroundColor:o.original.color})},null,4),n("span",ke,j(o.original.color),1)])]),"createdAt-cell":s(({row:o})=>[n("span",Ce,j(("prettyDateFormat"in l?l.prettyDateFormat:t(ve))(o.original.createdAt,{dateOnly:!0})),1)]),"actions-cell":s(({row:o})=>[n("div",he,[t(T)?(d(),u(c,{key:0,icon:"i-lucide-pencil",color:"neutral",variant:"ghost",size:"sm",onClick:Z=>R(o.original)},null,8,["onClick"])):m("",!0),t(T)?(d(),u(c,{key:1,icon:"i-lucide-trash-2",color:"error",variant:"ghost",size:"sm",onClick:Z=>Q(o.original)},null,8,["onClick"])):m("",!0)])]),_:1},8,["data"])]),_:1},8,["count"])):(d(),u(E,{key:1,title:"Tags",count:0,help:"settings.tags"},{default:s(()=>[n("div",$e,[n("div",Ae,[a(X,{name:"i-lucide-tags",class:"text-4xl text-muted"})]),e[14]||(e[14]=n("h3",{class:"text-lg font-semibold mb-2"},"No tags yet",-1)),e[15]||(e[15]=n("p",{class:"text-muted mb-4"},"Create tags to categorize and filter your projects",-1)),t(T)?(d(),u(c,{key:0,label:"Add tag",icon:"i-lucide-tag",onClick:e[1]||(e[1]=o=>g.value=!0)})):m("",!0)])]),_:1}))]),a(Y,null,{default:s(()=>[a(V,{open:t(g),title:"Add new tag","onUpdate:open":e[6]||(e[6]=o=>g.value=o)},{body:s(()=>[a(O,{schema:t(F),state:t(r)},{default:s(()=>[a($,{label:"Tag text",name:"text",required:"",class:"mb-4"},{default:s(()=>[a(h,{modelValue:t(r).text,"onUpdate:modelValue":e[2]||(e[2]=o=>t(r).text=o),placeholder:"Enter tag name"},null,8,["modelValue"])]),_:1}),a($,{label:"Color",name:"color",required:"",class:"mb-4"},{default:s(()=>[n("div",Ue,[S(n("input",{"onUpdate:modelValue":e[3]||(e[3]=o=>t(r).color=o),type:"color",class:"w-10 h-10 rounded cursor-pointer border border-default","aria-label":"Pick tag color"},null,512),[[q,t(r).color]]),a(h,{modelValue:t(r).color,"onUpdate:modelValue":e[4]||(e[4]=o=>t(r).color=o),class:"flex-1 font-mono",placeholder:"#6366f1"},null,8,["modelValue"])])]),_:1}),t(r).text?(d(),w("div",Ve,[e[16]||(e[16]=n("span",{class:"text-sm text-muted mr-2"},"Preview:",-1)),a(C,{text:t(r).text,color:t(r).color||b},null,8,["text","color"])])):m("",!0)]),_:1},8,["schema","state"])]),footer:s(()=>[a(c,{type:"button",color:"neutral",variant:"ghost",label:"Cancel",onClick:e[5]||(e[5]=o=>g.value=!1)}),a(c,{type:"submit",label:"Create tag",icon:"i-lucide-tag",onClick:W})]),_:1},8,["open"]),a(V,{open:t(x),title:"Edit tag","onUpdate:open":e[11]||(e[11]=o=>x.value=o)},{body:s(()=>[a(O,{schema:t(F),state:t(i)},{default:s(()=>[a($,{label:"Tag text",name:"text",required:"",class:"mb-4"},{default:s(()=>[a(h,{modelValue:t(i).text,"onUpdate:modelValue":e[7]||(e[7]=o=>t(i).text=o),placeholder:"Enter tag name"},null,8,["modelValue"])]),_:1}),a($,{label:"Color",name:"color",required:"",class:"mb-4"},{default:s(()=>[n("div",we,[S(n("input",{"onUpdate:modelValue":e[8]||(e[8]=o=>t(i).color=o),type:"color",class:"w-10 h-10 rounded cursor-pointer border border-default","aria-label":"Pick tag color"},null,512),[[q,t(i).color]]),a(h,{modelValue:t(i).color,"onUpdate:modelValue":e[9]||(e[9]=o=>t(i).color=o),class:"flex-1 font-mono",placeholder:"#6366f1"},null,8,["modelValue"])])]),_:1}),t(i).text?(d(),w("div",De,[e[17]||(e[17]=n("span",{class:"text-sm text-muted mr-2"},"Preview:",-1)),a(C,{text:t(i).text,color:t(i).color||b},null,8,["text","color"])])):m("",!0)]),_:1},8,["schema","state"])]),footer:s(()=>[a(c,{type:"button",color:"neutral",variant:"ghost",label:"Cancel",onClick:e[10]||(e[10]=o=>x.value=!1)}),a(c,{type:"submit",label:"Save changes",icon:"i-lucide-check",onClick:G})]),_:1},8,["open"]),a(V,{open:t(_),title:"Delete tag","onUpdate:open":e[13]||(e[13]=o=>_.value=o)},{body:s(()=>[n("p",null,[e[18]||(e[18]=M(" Are you sure you want to delete tag ",-1)),t(f)?(d(),u(C,{key:0,text:t(f).text,color:t(f).color,class:"inline-flex"},null,8,["text","color"])):m("",!0),e[19]||(e[19]=M("? It will be removed from all projects. ",-1))])]),footer:s(()=>[a(c,{color:"neutral",variant:"ghost",label:"Cancel",onClick:e[12]||(e[12]=o=>_.value=!1)}),a(c,{color:"error",label:"Delete",icon:"i-lucide-trash-2",onClick:H})]),_:1},8,["open"])]),_:1})],64)}}});export{Ge as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a3 as S,a6 as V,b0 as P,a4 as A,a5 as B,r as O,o as r,f as v,W as b,k as a,_ as j,h as q,a8 as x,a2 as F,g as k,i as L,q as u,c as f,F as C,y as N,j as y,x as D,b1 as K,b2 as T,V as d,p as $,aI as U,v as m,aH as I,m as E,t as H,X as R}from"./NQikbhmK.js";import{a as W}from"./YVN7WG7q.js";const X={base:"hidden lg:flex",variants:{side:{left:"",right:""}}},Q={__name:"UDashboardSidebarCollapse",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(g){const i=S("dashboardSidebarCollapse",g),l=V(P(i,"icon","side","class")),{t:p}=A(),o=B(),{sidebarCollapsed:c,collapseSidebar:s}=W({sidebarCollapsed:O(!1),collapseSidebar:()=>{}}),n=q(()=>x({extend:X,...o.ui?.dashboardSidebarCollapse||{}}));return(_,e)=>(r(),v(j,b({...a(l),icon:a(i).icon||(a(c)?a(o).ui.icons.panelOpen:a(o).ui.icons.panelClose),"aria-label":a(c)?a(p)("dashboardSidebarCollapse.expand"):a(p)("dashboardSidebarCollapse.collapse"),..._.$attrs},{class:n.value({class:[a(i).ui?.base,a(i).class],side:a(i).side}),onClick:e[0]||(e[0]=t=>a(s)?.(!a(c)))}),null,16,["class"]))}},G={slots:{root:"relative min-w-0",list:"flex items-center gap-1.5",item:"flex min-w-0",link:"group relative flex items-center gap-1.5 text-sm min-w-0 rounded-md",linkLeadingIcon:"shrink-0 size-5",linkLeadingAvatar:"shrink-0",linkLeadingAvatarSize:"2xs",linkLabel:"truncate",separator:"flex",separatorIcon:"shrink-0 size-5 text-muted"},variants:{active:{true:{link:"font-semibold"},false:{link:"text-muted font-medium"}},disabled:{true:{link:"cursor-not-allowed opacity-75"}},to:{true:""},color:{primary:{link:"outline-primary/25 focus-visible:outline-3"},secondary:{link:"outline-secondary/25 focus-visible:outline-3"},success:{link:"outline-success/25 focus-visible:outline-3"},info:{link:"outline-info/25 focus-visible:outline-3"},warning:{link:"outline-warning/25 focus-visible:outline-3"},error:{link:"outline-error/25 focus-visible:outline-3"},neutral:{link:"outline-inverted/25 focus-visible:outline-3"}}},compoundVariants:[{disabled:!1,active:!1,to:!0,class:{link:["hover:text-default","transition-colors"]}},{color:"primary",active:!0,class:{link:"text-primary"}},{color:"secondary",active:!0,class:{link:"text-secondary"}},{color:"success",active:!0,class:{link:"text-success"}},{color:"info",active:!0,class:{link:"text-info"}},{color:"warning",active:!0,class:{link:"text-warning"}},{color:"error",active:!0,class:{link:"text-error"}},{color:"neutral",active:!0,class:{link:"text-highlighted"}}],defaultVariants:{color:"primary"}},Y={__name:"UBreadcrumb",props:{as:{type:null,required:!1,default:"nav"},items:{type:Array,required:!1},separatorIcon:{type:null,required:!1},color:{type:null,required:!1},labelKey:{type:null,required:!1,default:"label"},class:{type:null,required:!1},ui:{type:Object,required:!1}},setup(g){const h=g,i=F(),l=S("breadcrumb",h),{dir:p}=A(),o=B(),c=q(()=>l.separatorIcon||(p.value==="rtl"?o.ui.icons.chevronLeft:o.ui.icons.chevronRight)),s=q(()=>x({extend:G,...o.ui?.breadcrumb||{}})({color:l.color}));return(n,_)=>(r(),v(a(R),{as:a(l).as,"aria-label":"breadcrumb","data-slot":"root",class:u(s.value.root({class:[a(l).ui?.root,a(l).class]}))},{default:k(()=>[L("ol",{"data-slot":"list",class:u(s.value.list({class:a(l).ui?.list}))},[(r(!0),f(C,null,N(a(l).items,(e,t)=>(r(),f(C,{key:t},[L("li",{"data-slot":"item",class:u(s.value.item({class:[a(l).ui?.item,e.ui?.item]}))},[y(D,b({ref_for:!0},a(K)(e),{custom:""}),{default:k(({active:w,...z})=>[y(T,b({ref_for:!0},z,{as:"span","aria-current":(e.active??w)&&t===a(l).items.length-1?"page":void 0,"data-slot":"link",class:s.value.link({class:[a(l).ui?.link,e.ui?.link,e.class],active:e.active??t===a(l).items.length-1,disabled:!!e.disabled,to:!!e.to})}),{default:k(()=>[d(n.$slots,e.slot||"item",{item:e,active:e.active??t===a(l).items.length-1,index:t,ui:s.value},()=>[d(n.$slots,e.slot?`${e.slot}-leading`:"item-leading",{item:e,active:e.active??t===a(l).items.length-1,index:t,ui:s.value},()=>[e.icon?(r(),v($,{key:0,name:e.icon,"data-slot":"linkLeadingIcon",class:u(s.value.linkLeadingIcon({class:[a(l).ui?.linkLeadingIcon,e.ui?.linkLeadingIcon],active:e.active??t===a(l).items.length-1}))},null,8,["name","class"])):e.avatar?(r(),v(U,b({key:1,size:a(l).ui?.linkLeadingAvatarSize||s.value.linkLeadingAvatarSize()},{ref_for:!0},e.avatar,{"data-slot":"linkLeadingAvatar",class:s.value.linkLeadingAvatar({class:[a(l).ui?.linkLeadingAvatar,e.ui?.linkLeadingAvatar],active:e.active??t===a(l).items.length-1})}),null,16,["size","class"])):m("",!0)]),a(I)(e,a(l).labelKey)||i[e.slot?`${e.slot}-label`:"item-label"]?(r(),f("span",{key:0,"data-slot":"linkLabel",class:u(s.value.linkLabel({class:[a(l).ui?.linkLabel,e.ui?.linkLabel]}))},[d(n.$slots,e.slot?`${e.slot}-label`:"item-label",{item:e,active:e.active??t===a(l).items.length-1,index:t},()=>[E(H(a(I)(e,a(l).labelKey)),1)])],2)):m("",!0),d(n.$slots,e.slot?`${e.slot}-trailing`:"item-trailing",{item:e,active:e.active??t===a(l).items.length-1,index:t})])]),_:2},1040,["aria-current","class"])]),_:2},1040)],2),t<a(l).items.length-1?(r(),f("li",{key:0,role:"presentation","aria-hidden":"true","data-slot":"separator",class:u(s.value.separator({class:[a(l).ui?.separator,e.ui?.separator]}))},[d(n.$slots,"separator",{ui:s.value},()=>[y($,{name:c.value,"data-slot":"separatorIcon",class:u(s.value.separatorIcon({class:[a(l).ui?.separatorIcon,e.ui?.separatorIcon]}))},null,8,["name","class"])])],2)):m("",!0)],64))),128))],2)]),_:3},8,["as","class"]))}};export{Q as _,Y as a};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{_ as pe}from"./279D2RYp.js";import{_ as me}from"./BqV0l12c.js";import{_ as he,a as fe}from"./CHEFCN8Q.js";import{_ as ye}from"./rWNTSFD6.js";import{_ as Y}from"./D0HNloZ9.js";import{_ as ge}from"./DprVVyUQ.js";import{d as G,o as v,c as C,i as b,t as I,k as e,j as E,g as S,p as J,q,m as R,s as ve,f as A,v as z,x as _e,F as W,y as Q,h as U,_ as Z,z as be,A as ee,r as F,u as xe,w as we,e as ke,B as $e,C as H}from"./NQikbhmK.js";import{_ as Te}from"./DLSrtpsA.js";import{f as V}from"./D-c8ZSws.js";import{u as Ce}from"./CpjgB2aY.js";import"./YVN7WG7q.js";import"./CDk0q2hV.js";import"./Bn0YQDyy.js";import"./C7P1UCO2.js";import"./BjaRappk.js";import"./eptP4pGv.js";const Ie={class:"p-3 sm:p-4 space-y-2"},ze={class:"flex items-start justify-between gap-3"},Be={class:"min-w-0 space-y-1"},Ee={class:"font-medium text-sm break-all"},Ue={class:"text-xs text-gray-500"},Re={class:"flex items-center gap-2 shrink-0"},Ae={key:2,class:"text-xs"},je={key:0,class:"text-xs text-gray-500"},Pe={class:"text-default"},Le={key:1,class:"flex flex-wrap gap-x-4 gap-y-1 text-xs text-gray-500"},Se={key:0},De={key:1},Fe={key:2},Ne={key:3},Me={key:3,class:"text-xs text-gray-500"},Ve={class:"space-y-0.5"},Oe={class:"text-[11px]"},He=G({__name:"ImportFileRow",props:{entry:{},removable:{type:Boolean}},emits:["remove"],setup(p){const c=p,a={hashing:{label:"Reading",color:"neutral",icon:"i-lucide-loader-circle"},checking:{label:"Checking",color:"neutral",icon:"i-lucide-loader-circle"},ready:{label:"Ready",color:"primary",icon:"i-lucide-circle-check"},uploading:{label:"Importing",color:"primary",icon:"i-lucide-loader-circle"},imported:{label:"Imported",color:"success",icon:"i-lucide-check"},duplicate:{label:"Already imported",color:"neutral",icon:"i-lucide-copy-check"},"too-large":{label:"Too large",color:"warning",icon:"i-lucide-weight"},invalid:{label:"Not importable",color:"warning",icon:"i-lucide-file-x"},failed:{label:"Failed",color:"error",icon:"i-lucide-circle-alert"}},d=U(()=>a[c.entry.state]),m=U(()=>["hashing","checking","uploading"].includes(c.entry.state)),o=U(()=>c.entry.result),t=U(()=>c.entry.state==="imported"?o.value:null),h=U(()=>t.value?.kind==="trace");function n(l,i){return`${l} ${i}${l===1?"":"s"}`}return(l,i)=>{const f=J,y=ve,k=Z,$=be,x=_e,T=Y;return v(),C("div",Ie,[b("div",ze,[b("div",Be,[b("p",Ee,I(p.entry.name),1),b("p",Ue,I(("formatBytes"in l?l.formatBytes:e(V))(p.entry.size)),1)]),b("div",Re,[E(y,{color:e(d).color,variant:"subtle",size:"sm"},{default:S(()=>[E(f,{name:e(d).icon,class:q(["size-3.5 mr-1",e(m)&&"animate-spin"])},null,8,["name","class"]),R(" "+I(e(d).label),1)]),_:1},8,["color"]),p.removable?(v(),A(k,{key:0,icon:"i-lucide-x",color:"neutral",variant:"ghost",size:"xs",title:"Remove from the list",onClick:i[0]||(i[0]=s=>l.$emit("remove",p.entry.id))})):z("",!0)])]),p.entry.state==="uploading"||p.entry.state==="hashing"?(v(),A($,{key:0,"model-value":Math.round(p.entry.progress*100),size:"sm"},null,8,["model-value"])):z("",!0),p.entry.message?(v(),C("p",{key:1,class:q(["text-xs",p.entry.state==="failed"?"text-error":"text-gray-500"])},I(p.entry.message),3)):z("",!0),e(o)?.testRunId?(v(),C("div",Ae,[E(x,{to:`/test-runs/${e(o).testRunId}`,class:"text-primary hover:underline"},{default:S(()=>[R(" View run #"+I(e(o).testRunId),1)]),_:1},8,["to"])])):z("",!0),e(t)?(v(),C(W,{key:3},[e(h)?(v(),C("p",je,[i[1]||(i[1]=R(" Added ",-1)),b("span",Pe,I(e(t).caseTitle),1),i[2]||(i[2]=R(" to this run. ",-1))])):(v(),C("div",Le,[b("span",null,I(n(e(t).totalTests,"execution")),1),b("span",null,I(e(t).passedTests)+" passed",1),b("span",null,I(e(t).failedTests)+" failed",1),e(t).skippedTests?(v(),C("span",Se,I(e(t).skippedTests)+" skipped",1)):z("",!0),e(t).flakyTests?(v(),C("span",De,I(e(t).flakyTests)+" flaky",1)):z("",!0),e(t).traceCount?(v(),C("span",Fe,I(n(e(t).traceCount,"trace")),1)):z("",!0),e(t).attachmentCount?(v(),C("span",Ne,I(n(e(t).attachmentCount,"attachment")),1)):z("",!0)])),e(t).shard?(v(),A(T,{key:2,color:"warning",variant:"subtle",icon:"i-lucide-split",description:`This archive is shard ${e(t).shard.current} of ${e(t).shard.total}. Each shard imports as its own run — they are not merged.`,ui:{description:"text-xs"}},null,8,["description"])):z("",!0),e(t).filePaths.length&&!e(h)?(v(),C("div",Me,[i[3]||(i[3]=b("p",{class:"mb-1"},[R(" Spec files recorded as "),b("span",{class:"text-gray-400"},"(these must match the paths your live runs report for history to line up)"),R(": ")],-1)),b("ul",Ve,[(v(!0),C(W,null,Q(e(t).filePaths,s=>(v(),C("li",{key:s},[b("code",Oe,I(s),1)]))),128))])])):z("",!0)],64)):z("",!0)])}}}),qe=Object.assign(He,{__name:"ImportFileRow"}),L=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),We=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),Ke=Array.from({length:256},(p,c)=>c.toString(16).padStart(2,"0"));class te{#r=new Uint32Array(We);#t=new Uint8Array(64);#e=0;#n=0;#i=new Uint32Array(64);#o=!1;update(c){if(this.#o)throw new Error("Sha256: update() after digest()");this.#n+=c.length;let a=0;if(this.#e>0){const d=Math.min(64-this.#e,c.length);if(this.#t.set(c.subarray(0,d),this.#e),this.#e+=d,a=d,this.#e<64)return this;this.#s(this.#t,0),this.#e=0}for(;a+64<=c.length;a+=64)this.#s(c,a);return a<c.length&&(this.#t.set(c.subarray(a),0),this.#e=c.length-a),this}digest(){if(this.#o)throw new Error("Sha256: digest() called twice");this.#o=!0;const c=this.#n*8;this.#t[this.#e++]=128,this.#e>56&&(this.#t.fill(0,this.#e),this.#s(this.#t,0),this.#e=0),this.#t.fill(0,this.#e,56);const a=new DataView(this.#t.buffer,this.#t.byteOffset,64);a.setUint32(56,Math.floor(c/4294967296),!1),a.setUint32(60,c>>>0,!1),this.#s(this.#t,0);const d=new Uint8Array(32),m=new DataView(d.buffer);for(let o=0;o<8;o++)m.setUint32(o*4,this.#r[o],!1);return d}hex(){const c=this.digest();let a="";for(let d=0;d<32;d++)a+=Ke[c[d]];return a}#s(c,a){const d=this.#i,m=this.#r;for(let r=0;r<16;r++){const _=a+r*4;d[r]=c[_]<<24|c[_+1]<<16|c[_+2]<<8|c[_+3]}for(let r=16;r<64;r++){const _=d[r-15],B=d[r-2],g=(_>>>7|_<<25)^(_>>>18|_<<14)^_>>>3,D=(B>>>17|B<<15)^(B>>>19|B<<13)^B>>>10;d[r]=d[r-16]+g+d[r-7]+D|0}let o=m[0],t=m[1],h=m[2],n=m[3],l=m[4],i=m[5],f=m[6],y=m[7],k=0,$=0,x=0,T=0,s=0,u=0;for(let r=0;r<64;r+=8)$=(l>>>6|l<<26)^(l>>>11|l<<21)^(l>>>25|l<<7),x=l&i^~l&f,s=y+$+x+L[r]+d[r]|0,k=(o>>>2|o<<30)^(o>>>13|o<<19)^(o>>>22|o<<10),T=o&t^o&h^t&h,u=k+T|0,n=n+s|0,y=s+u|0,$=(n>>>6|n<<26)^(n>>>11|n<<21)^(n>>>25|n<<7),x=n&l^~n&i,s=f+$+x+L[r+1]+d[r+1]|0,k=(y>>>2|y<<30)^(y>>>13|y<<19)^(y>>>22|y<<10),T=y&o^y&t^o&t,u=k+T|0,h=h+s|0,f=s+u|0,$=(h>>>6|h<<26)^(h>>>11|h<<21)^(h>>>25|h<<7),x=h&n^~h&l,s=i+$+x+L[r+2]+d[r+2]|0,k=(f>>>2|f<<30)^(f>>>13|f<<19)^(f>>>22|f<<10),T=f&y^f&o^y&o,u=k+T|0,t=t+s|0,i=s+u|0,$=(t>>>6|t<<26)^(t>>>11|t<<21)^(t>>>25|t<<7),x=t&h^~t&n,s=l+$+x+L[r+3]+d[r+3]|0,k=(i>>>2|i<<30)^(i>>>13|i<<19)^(i>>>22|i<<10),T=i&f^i&y^f&y,u=k+T|0,o=o+s|0,l=s+u|0,$=(o>>>6|o<<26)^(o>>>11|o<<21)^(o>>>25|o<<7),x=o&t^~o&h,s=n+$+x+L[r+4]+d[r+4]|0,k=(l>>>2|l<<30)^(l>>>13|l<<19)^(l>>>22|l<<10),T=l&i^l&f^i&f,u=k+T|0,y=y+s|0,n=s+u|0,$=(y>>>6|y<<26)^(y>>>11|y<<21)^(y>>>25|y<<7),x=y&o^~y&t,s=h+$+x+L[r+5]+d[r+5]|0,k=(n>>>2|n<<30)^(n>>>13|n<<19)^(n>>>22|n<<10),T=n&l^n&i^l&i,u=k+T|0,f=f+s|0,h=s+u|0,$=(f>>>6|f<<26)^(f>>>11|f<<21)^(f>>>25|f<<7),x=f&y^~f&o,s=t+$+x+L[r+6]+d[r+6]|0,k=(h>>>2|h<<30)^(h>>>13|h<<19)^(h>>>22|h<<10),T=h&n^h&l^n&l,u=k+T|0,i=i+s|0,t=s+u|0,$=(i>>>6|i<<26)^(i>>>11|i<<21)^(i>>>25|i<<7),x=i&f^~i&y,s=o+$+x+L[r+7]+d[r+7]|0,k=(t>>>2|t<<30)^(t>>>13|t<<19)^(t>>>22|t<<10),T=t&h^t&n^h&n,u=k+T|0,l=l+s|0,o=s+u|0;m[0]=m[0]+o|0,m[1]=m[1]+t|0,m[2]=m[2]+h|0,m[3]=m[3]+n|0,m[4]=m[4]+l|0,m[5]=m[5]+i|0,m[6]=m[6]+f|0,m[7]=m[7]+y|0}}async function Xe(p,c){const a=new te,d=p.stream().getReader();let m=0;for(;;){const{done:o,value:t}=await d.read();if(o)break;a.update(t),m+=t.length,c&&c(p.size?m/p.size:1)}return c&&c(1),a.hex()}const X=["ready","failed"],Ye={ok:"ready",duplicate:"duplicate","too-large":"too-large",invalid:"invalid"};function Ge(p){const c=Je("/api/test-runs/import"),a=F([]),d=F(null),m=F(null),o=F(!1);let t=1;const h=U(()=>a.value.filter(s=>X.includes(s.state)).length),n=U(()=>a.value.filter(s=>s.state==="imported").length),l=U(()=>a.value.some(s=>s.state==="hashing"||s.state==="checking")),i=F({done:0,total:0});async function f(){if(p.value)try{const s=await $fetch("/api/test-runs/import/check",{method:"POST",body:{projectName:p.value,files:[]}});d.value=s.maxBytes,m.value=null}catch(s){m.value=M(s,"Could not reach the server to read its upload limit.")}}async function y(s){const u=s.map(g=>({id:t++,file:g,name:g.name,size:g.size,state:"hashing",progress:0}));a.value=[...a.value,...u];const r=a.value.slice(-u.length),_=[];for(const g of r)d.value!=null&&g.size>d.value?(g.state="too-large",g.message=`${V(g.size)} exceeds the ${V(d.value)} limit.`):g.size===0?(g.state="invalid",g.message="The file is empty."):g.name.toLowerCase().endsWith(".zip")?_.push(g):(g.state="invalid",g.message="Expected a .zip blob report (blob-report/report-*.zip).");if(_.length===0)return;for(const g of _)try{g.progress=0,g.hash=await Xe(g.file,D=>{g.progress=D}),g.state="checking"}catch(D){g.state="failed",g.message=M(D,"Could not read the file.")}finally{g.progress=0}const B=await Qe(_);for(const g of _)g.group=B??void 0;await k(_.filter(g=>g.state==="checking"))}async function k(s){if(!(s.length===0||!p.value))try{const u=await $fetch("/api/test-runs/import/check",{method:"POST",body:{projectName:p.value,files:s.map(r=>({name:r.name,size:r.size,hash:r.hash}))}});d.value=u.maxBytes,u.results.forEach((r,_)=>{const B=s[_];B&&(B.state=Ye[r.status]??"ready",B.message=r.message,r.testRunId&&(B.result={testRunId:r.testRunId}))})}catch(u){const r=M(u,"Pre-flight check failed.");for(const _ of s)_.state="ready",_.message=`${r} Importing will still verify it.`}}async function $(){if(o.value||!p.value)return;o.value=!0;const s=a.value.filter(u=>X.includes(u.state));i.value={done:0,total:s.length};try{for(const u of s){u.state="uploading",u.message=void 0,u.progress=0;try{const r=await Ze(c,p.value,u,u.group??null,_=>{u.progress=_});u.result=r,u.state=r.status==="duplicate"?"duplicate":"imported",u.message=r.status==="duplicate"?"Already imported into this project.":void 0}catch(r){u.state="failed",u.message=M(r,"The import failed.")}finally{u.progress=0,i.value={...i.value,done:i.value.done+1}}}}finally{o.value=!1}}function x(s){a.value=a.value.filter(u=>u.id!==s)}function T(){a.value=a.value.filter(s=>!["imported","duplicate"].includes(s.state))}return{entries:a,maxBytes:d,limitError:m,importing:o,readyCount:h,importedCount:n,busy:l,batch:i,loadLimit:f,addFiles:y,startImport:$,remove:x,clearFinished:T}}function Je(p){return`${(ee().app.baseURL||"/").replace(/\/$/,"")}${p}`}async function Qe(p){const c=p.map(a=>a.hash).filter(a=>!!a);return c.length===0?null:new te().update(new TextEncoder().encode([...c].sort().join(""))).hex()}function Ze(p,c,a,d,m){return new Promise((o,t)=>{const h=new FormData;h.append("projectName",c),d&&h.append("importGroup",d),h.append("archive",a.file,a.name);const n=new XMLHttpRequest;n.open("POST",p),n.responseType="json",n.upload.addEventListener("progress",l=>{l.lengthComputable&&m(l.loaded/l.total)}),n.addEventListener("load",()=>{const l=n.response;if(n.status>=200&&n.status<300){o(l);return}const i=typeof l?.message=="string"?l.message:null;t(new Error(i??et(n.status)))}),n.addEventListener("error",()=>t(new Error("The connection dropped during the upload."))),n.addEventListener("abort",()=>t(new Error("The upload was cancelled."))),n.addEventListener("timeout",()=>t(new Error("The upload timed out."))),n.send(h)})}function et(p){return p===413?"The server (or a proxy in front of it) rejected the archive as too large.":p===401||p===403?"You do not have permission to import into this project.":p===0?"The connection dropped during the upload.":p>=500?`The server failed while importing (HTTP ${p}).`:`The import was rejected (HTTP ${p}).`}function M(p,c){const a=p?.data;return typeof a?.message=="string"&&a.message?a.message:p?.message||c}const tt={class:"p-4 space-y-4"},st={class:"space-y-4"},ot={class:"text-sm text-gray-600 dark:text-gray-400 space-y-2"},rt={class:"flex items-center gap-2"},nt={key:0,class:"text-xs text-gray-500 tabular-nums"},it={class:"space-y-4"},at={key:0,class:"text-xs text-gray-500 mt-3"},lt={key:1,class:"divide-y divide-gray-100 dark:divide-gray-800 border rounded-lg border-gray-200 dark:border-gray-800"},ct={key:2,class:"flex justify-end"},Ct=G({__name:"import",async setup(p){let c,a;const m=xe().params.id,{data:o}=([c,a]=we(()=>Ce(`/api/projects/${m}`,"$w9ISz8uFNz")),c=await c,a(),c);ke(U(()=>({title:`Import runs — ${o.value?.label||o.value?.name||"Project"} — Piwi Dashboard`})));const t=ee().public.demoMode,h=U(()=>o.value?.name),{entries:n,maxBytes:l,limitError:i,importing:f,readyCount:y,importedCount:k,busy:$,batch:x,loadLimit:T,addFiles:s,startImport:u,remove:r,clearFinished:_}=Ge(h);$e(T);const B=F(null),g=F(!1);function D(j){const w=j.target;w.files?.length&&s([...w.files]),w.value=""}function se(j){g.value=!1;const w=[...j.dataTransfer?.files??[]];w.length&&s(w)}const oe=U(()=>n.value.filter(j=>["imported","duplicate"].includes(j.state)).length);return(j,w)=>{const re=pe,ne=me,ie=fe,ae=ye,O=Y,K=ge,N=Z,le=J,ce=Te,de=qe,ue=he;return v(),A(ue,{id:"project-import"},{header:S(()=>[E(ie,null,{leading:S(()=>[E(re),E(ne,{items:[{label:"Home",icon:"i-lucide-house",to:"/"},{label:"Projects",to:"/projects"},{label:e(o)?.label||e(o)?.name||"Project",to:`/projects/${e(m)}`},{label:"Import runs"}]},null,8,["items"])]),_:1})]),body:S(()=>[b("div",tt,[E(K,{title:"Import past runs",icon:"i-lucide-import",help:"project.import",subtitle:"Backfill runs recorded before you started using Piwi, from Playwright's own blob reports."},{default:S(()=>[b("div",st,[b("div",ot,[w[5]||(w[5]=b("p",null,[R(" Run your suite with the blob reporter and upload the archives it writes to "),b("code",null,"blob-report/"),R(": ")],-1)),E(ae,{code:"npx playwright test --reporter=blob",language:"bash"}),w[6]||(w[6]=b("p",null," Each archive imports as one completed run, with its traces, screenshots and videos. Importing the same archive twice does nothing, so an interrupted batch is safe to repeat. ",-1))]),e(t)?(v(),A(O,{key:0,color:"primary",variant:"subtle",icon:"i-lucide-monitor-smartphone",title:"Nothing leaves your browser",description:"This is the demo: the archive is read by a service worker and stored in your browser, not uploaded. It is cleared when the demo's sample data is refreshed, or when you reset the demo.",ui:{description:"text-xs"}})):z("",!0),E(O,{color:"neutral",variant:"subtle",icon:"i-lucide-info",title:"What imported runs carry",description:"Failures still cluster, and traces, screenshots and videos open exactly as they do for reported runs. Web vitals, page state and locator healing come from Piwi's own capture fixtures, so historical runs have none — they start once the reporter is in place.",ui:{description:"text-xs"}}),e(i)?(v(),A(O,{key:1,color:"error",variant:"subtle",icon:"i-lucide-circle-alert",description:e(i)},null,8,["description"])):z("",!0)])]),_:1}),E(K,{title:"Archives",icon:"i-lucide-files",count:e(n).length||null},{actions:S(()=>[b("div",rt,[e(f)?(v(),C("span",nt,I(e(x).done)+" of "+I(e(x).total)+" done ",1)):z("",!0),e(oe)>0&&!e(f)?(v(),A(N,{key:1,label:"Clear finished",icon:"i-lucide-eraser",color:"neutral",variant:"ghost",size:"sm",disabled:e(f),onClick:w[0]||(w[0]=P=>e(_)())},null,8,["disabled"])):z("",!0),E(N,{label:e(y)>0?`Import ${e(y)} archive${e(y)===1?"":"s"}`:"Import",icon:"i-lucide-upload",size:"sm",loading:e(f),disabled:e(y)===0||e($),onClick:w[1]||(w[1]=P=>e(u)())},null,8,["label","loading","disabled"])])]),default:S(()=>[b("div",it,[b("div",{class:q(["rounded-lg border-2 border-dashed p-6 text-center transition-colors",e(g)?"border-primary bg-primary/5":"border-gray-200 dark:border-gray-700"]),onDragover:w[3]||(w[3]=H(P=>g.value=!0,["prevent"])),onDragleave:w[4]||(w[4]=H(P=>g.value=!1,["prevent"])),onDrop:H(se,["prevent"])},[E(le,{name:"i-lucide-file-archive",class:"size-7 text-gray-400 mb-2"}),w[7]||(w[7]=b("p",{class:"text-sm text-gray-600 dark:text-gray-400"},[R("Drop "),b("code",null,"report-*.zip"),R(" files here, or")],-1)),E(N,{label:"Choose files",icon:"i-lucide-folder-open",variant:"outline",size:"sm",class:"mt-2",disabled:e(f),onClick:w[2]||(w[2]=P=>e(B)?.click())},null,8,["disabled"]),e(l)?(v(),C("p",at," Up to "+I(("formatBytes"in j?j.formatBytes:e(V))(e(l)))+" per archive. Larger ones are rejected here, before uploading. ",1)):z("",!0),b("input",{ref_key:"fileInput",ref:B,type:"file",accept:".zip",multiple:"",class:"hidden",onChange:D},null,544)],34),e(n).length===0?(v(),A(ce,{key:0,icon:"i-lucide-inbox",text:"No archives selected yet."})):(v(),C("div",lt,[(v(!0),C(W,null,Q(e(n),P=>(v(),A(de,{key:P.id,entry:P,removable:!e(f)&&P.state!=="uploading",onRemove:e(r)},null,8,["entry","removable","onRemove"]))),128))])),e(k)>0?(v(),C("div",ct,[E(N,{label:`Open ${e(o)?.label||e(o)?.name||"project"}`,icon:"i-lucide-arrow-right",trailing:"",variant:"ghost",size:"sm",to:`/projects/${e(m)}`},null,8,["label","to"])])):z("",!0)])]),_:1},8,["count"])])]),_:1})}}});export{Ct as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{d as r,o as s,c as l,i,
|
|
1
|
+
import{d as r,o as s,c as l,i,V as n,m as o,t as a,q as c,v as d,Q as u}from"./NQikbhmK.js";const _={class:"rounded-lg bg-gray-50 dark:bg-gray-900 p-3 min-w-0"},g={class:"text-xs font-medium text-gray-500 uppercase tracking-wider inline-flex items-center gap-1 max-w-full"},f={key:0,class:"text-xs text-gray-400 mt-1"},x=r({__name:"StatTile",props:{label:{},value:{},hint:{},size:{default:"lg"},valueClass:{default:""}},setup(e){return(t,m)=>(s(),l("div",_,[i("p",g,[n(t.$slots,"label",{},()=>[o(a(e.label),1)])]),i("p",{class:c(["mt-0.5 break-words",[e.size==="lg"?"text-xl font-bold":"text-sm font-semibold",e.valueClass]])},[n(t.$slots,"default",{},()=>[o(a(e.value??"—"),1)])],2),e.hint?(s(),l("p",f,a(e.hint),1)):d("",!0)]))}}),h=Object.assign(x,{__name:"StatTile"}),p=r({__name:"StatTileGrid",props:{minTileWidth:{default:"8.5rem"}},setup(e){return(t,m)=>(s(),l("div",{class:"grid gap-3",style:u({gridTemplateColumns:`repeat(auto-fit, minmax(min(${e.minTileWidth}, 100%), 1fr))`})},[n(t.$slots,"default")],4))}}),y=Object.assign(p,{__name:"StatTileGrid"});export{y as _,h as a};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{_ as q}from"./D0HNloZ9.js";import{_ as S}from"./Jo8kRmHz.js";import{_ as $}from"./B9WhzpKO.js";import{d as T,b as j,w as F,au as N,c as y,j as n,g as r,o as m,k as e,f as O,v as P,i as c,q as B,F as I,y as R,I as E,_ as L,m as k,r as M,L as W}from"./NQikbhmK.js";import{_ as A}from"./DprVVyUQ.js";import{u as z}from"./CpjgB2aY.js";import"./CYsTqbBS.js";import"./g26aVPxc.js";import"./CNFYDQmj.js";import"./BYDaY0Z7.js";import"./C7P1UCO2.js";import"./BjaRappk.js";import"./Bn0YQDyy.js";import"./eptP4pGv.js";const D={class:"space-y-6"},K={class:"space-y-4"},G={class:"flex items-center justify-between gap-2"},H={class:"flex items-center gap-2 shrink-0"},ue=T({__name:"pr-feedback",async setup(J){let u,p;const d=j(),{data:o,refresh:f}=([u,p]=F(()=>z("/api/settings/pr-feedback","$My52-nCqWi")),u=await u,p(),u),l=M(!1),t=W({enabled:!1,comment:!0,status:!0,onlyOnFailure:!1,statusContext:"piwi/tests"});N(()=>{o.value&&Object.assign(t,o.value.settings)});const v=[{key:"comment",label:"Post a summary comment",description:"Creates one comment on the pull request and edits it on every later run, so a busy branch gets one comment rather than one per push."},{key:"status",label:"Set a commit status",description:"Marks the run’s commit passed or failed, so the pull request shows the result in its checks list. Still set on a green run when the comment is suppressed."},{key:"onlyOnFailure",label:"Only comment on failures",description:"Keeps green runs from adding a comment. The commit status is still set either way."}];async function g(){l.value=!0;try{const i=await $fetch("/api/settings/pr-feedback",{method:"PUT",body:{settings:{...t}}});o.value=i,Object.assign(t,i.settings),d.add({title:"Saved",color:"success"}),await f()}catch{d.add({title:"Save failed",color:"error"})}finally{l.value=!1}}async function w(){l.value=!0;try{const i=await $fetch("/api/settings/pr-feedback",{method:"PUT",body:{settings:null}});o.value=i,Object.assign(t,i.settings),d.add({title:"Reset to defaults",color:"success"}),await f()}catch{d.add({title:"Reset failed",color:"error"})}finally{l.value=!1}}return(i,s)=>{const x=q,h=S,_=$,C=E,b=L,V=A;return m(),y("div",D,[n(V,{icon:"i-lucide-git-pull-request",title:"Pull-request feedback",help:"settings.pr-feedback"},{subtitle:r(()=>[...s[2]||(s[2]=[k(" When a run finishes on a branch with an open pull request, post the result back to it — new failures separated from pre-existing ones, the failure clusters behind them, and the locator to use instead of the one that broke. ",-1)])]),footer:r(()=>[c("div",G,[s[4]||(s[4]=c("p",{class:"text-xs text-muted"}," Needs an SCM token with write access to the repository — set it globally, or per project in the project’s edit page. ",-1)),c("div",H,[n(b,{variant:"ghost",color:"neutral",disabled:e(l),label:"Reset to defaults",onClick:w},null,8,["disabled"]),n(b,{color:"primary",loading:e(l),icon:"i-lucide-save",onClick:g},{default:r(()=>[...s[3]||(s[3]=[k("Save",-1)])]),_:1},8,["loading"])])])]),default:r(()=>[e(o)&&!e(o).siteUrlConfigured?(m(),O(x,{key:0,color:"warning",variant:"soft",icon:"i-lucide-triangle-alert",title:"PIWI_SITE_URL is not set",description:"Nothing is posted until it is — every link in the comment is built from it, and a comment full of unreachable links is worse than no comment.",class:"mb-4"})):P("",!0),c("div",K,[n(h,{modelValue:e(t).enabled,"onUpdate:modelValue":s[0]||(s[0]=a=>e(t).enabled=a),label:"Post feedback to pull requests"},null,8,["modelValue"]),c("div",{class:B(["space-y-4 pl-1",!e(t).enabled&&"opacity-50 pointer-events-none"])},[(m(),y(I,null,R(v,a=>n(_,{key:a.key,label:a.label,description:a.description},{default:r(()=>[n(h,{modelValue:e(t)[a.key],"onUpdate:modelValue":U=>e(t)[a.key]=U},null,8,["modelValue","onUpdate:modelValue"])]),_:2},1032,["label","description"])),64)),n(_,{label:"Commit status context",description:"The name shown next to the status in the pull request’s checks list.",hint:`default ${e(o)?.defaults.statusContext??""}`},{default:r(()=>[n(C,{modelValue:e(t).statusContext,"onUpdate:modelValue":s[1]||(s[1]=a=>e(t).statusContext=a),placeholder:e(o)?.defaults.statusContext,class:"w-full max-w-sm"},null,8,["modelValue","placeholder"])]),_:1},8,["hint"])],2)])]),_:1})])}}});export{ue as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{_ as f}from"./279D2RYp.js";import{_ as b}from"./BqV0l12c.js";import{_ as h}from"./BuMC3WjZ.js";import{_ as j,a as x}from"./CHEFCN8Q.js";import{_ as y}from"./fVcG504p.js";import{d as C,u as $,w as v,e as w,f as P,g as a,h as g,o as k,i as B,j as e,k as o,r as N}from"./NQikbhmK.js";import{u as R}from"./CpjgB2aY.js";import"./YVN7WG7q.js";import"./DS636elg.js";import"./g26aVPxc.js";import"./Bti38m-M.js";import"./BxCKKeYs.js";import"./ybDYeNxd.js";import"./DLSrtpsA.js";import"./D0HNloZ9.js";import"./BSIxhGsh.js";import"./DP8hfJ9h.js";import"./CV9-fTmY.js";import"./CDk0q2hV.js";import"./nv9-6vBK.js";import"./BPRffDuo.js";import"./B44A4LSJ.js";import"./CylWPruw.js";import"./Bn0YQDyy.js";import"./C9_jrmk9.js";import"./FUXhyidq.js";import"./DprVVyUQ.js";import"./C7P1UCO2.js";import"./BjaRappk.js";import"./eptP4pGv.js";import"./C-elpgyr.js";const D={class:"p-4"},lo=C({__name:"test-cases",async setup(T){let r,n;const i=$(),s=String(i.params.id),{data:t}=([r,n]=v(()=>R(`/api/projects/${s}`,"$yKRg49mBCi")),r=await r,n(),r),c=N(null);return w(g(()=>({title:`${t.value?.label||t.value?.name||"Project"} — Test cases — Piwi Dashboard`}))),(U,A)=>{const m=f,p=b,_=h,l=x,u=y,d=j;return k(),P(d,{id:"project-test-cases"},{header:a(()=>[e(l,null,{leading:a(()=>[e(m),e(p,{items:[{label:"Home",icon:"i-lucide-house",to:"/"},{label:"Projects",to:"/projects"},{label:o(t)?.label||o(t)?.name||"Project",to:`/projects/${o(s)}`},{label:"Test cases"}]},null,8,["items"])]),right:a(()=>[e(_,{actions:[{label:"Refresh",icon:"i-lucide-refresh-cw",onClick:()=>o(c)?.refresh()}]},null,8,["actions"])]),_:1})]),body:a(()=>[B("div",D,[e(u,{ref_key:"tableRef",ref:c,"project-id":o(s),"project-name":o(t)?.name,"sync-query":""},null,8,["project-id","project-name"])])]),_:1})}}});export{lo as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{d as O,Z as Q,Y as ee,V as f,k as e,r as R,$ as te,U as B,o as r,f as i,g as u,W as D,X as F,aA as V,B as Z,bj as U,j as k,bl as oe,bZ as ae,bk as se,b_ as x,bh as le,H as N,h as I,O as j,ae as L,aC as W,bf as re,C as ne,v as g,a0 as X,a1 as Y,br as ue,a2 as ie,a3 as de,a4 as pe,a5 as fe,a6 as ce,a7 as ve,bs as ye,b4 as z,b3 as me,bG as _e,bH as ge,m as A,t as M,c as E,q as h,_ as be,bv as De,F as Oe,a8 as Ce,bI as qe}from"./NQikbhmK.js";const[w,Be]=te("DialogRoot");var we=O({inheritAttrs:!1,__name:"DialogRoot",props:{open:{type:Boolean,required:!1,default:void 0},defaultOpen:{type:Boolean,required:!1,default:!1},modal:{type:Boolean,required:!1,default:!0},unmountOnHide:{type:Boolean,required:!1,default:!0}},emits:["update:open"],setup(d,{emit:n}){const a=d,o=Q(a,"open",n,{defaultValue:a.defaultOpen,passive:a.open===void 0}),t=R(),y=R(),{modal:p,unmountOnHide:c}=ee(a);return Be({open:o,modal:p,unmountOnHide:c,openModal:()=>{o.value=!0},onOpenChange:l=>{o.value=l},onOpenToggle:()=>{o.value=!o.value},contentId:"",titleId:"",descriptionId:"",triggerElement:t,contentElement:y}),(l,m)=>f(l.$slots,"default",{open:e(o),close:()=>o.value=!1})}}),he=we,ke=O({__name:"DialogClose",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"button"}},setup(d){const n=d;B();const a=w();return(s,o)=>(r(),i(e(F),D(n,{type:s.as==="button"?"button":void 0,onClick:o[0]||(o[0]=t=>e(a).onOpenChange(!1))}),{default:u(()=>[f(s.$slots,"default")]),_:3},16,["type"]))}}),$e=ke,Pe=O({__name:"DialogContentImpl",props:{forceMount:{type:Boolean,required:!1},trapFocus:{type:Boolean,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},present:{type:Boolean,required:!1}},emits:["escapeKeyDown","pointerDownOutside","focusOutside","interactOutside","openAutoFocus","closeAutoFocus"],setup(d,{emit:n}){const a=d,s=n,o=w(),{forwardRef:t,currentElement:y}=B();return o.titleId||=V(void 0,"reka-dialog-title"),o.descriptionId||=V(void 0,"reka-dialog-description"),Z(()=>{o.contentElement=y,U()!==document.body&&(o.triggerElement.value=U())}),(p,c)=>(r(),i(e(se),{"as-child":"",loop:"",trapped:a.trapFocus,present:a.present,onMountAutoFocus:c[5]||(c[5]=l=>s("openAutoFocus",l)),onUnmountAutoFocus:c[6]||(c[6]=l=>s("closeAutoFocus",l))},{default:u(()=>[k(e(oe),D({id:e(o).contentId,ref:e(t),as:p.as,"as-child":p.asChild,present:a.present,"disable-outside-pointer-events":p.disableOutsidePointerEvents,role:"dialog","aria-describedby":e(o).descriptionId,"aria-labelledby":e(o).titleId,"data-state":e(ae)(e(o).open.value)},p.$attrs,{onDismiss:c[0]||(c[0]=l=>e(o).onOpenChange(!1)),onEscapeKeyDown:c[1]||(c[1]=l=>s("escapeKeyDown",l)),onFocusOutside:c[2]||(c[2]=l=>s("focusOutside",l)),onInteractOutside:c[3]||(c[3]=l=>s("interactOutside",l)),onPointerDownOutside:c[4]||(c[4]=l=>s("pointerDownOutside",l))}),{default:u(()=>[f(p.$slots,"default")]),_:3},16,["id","as","as-child","present","disable-outside-pointer-events","aria-describedby","aria-labelledby","data-state"])]),_:3},8,["trapped","present"]))}}),J=Pe,Ee=O({__name:"DialogContentModal",props:{forceMount:{type:Boolean,required:!1},trapFocus:{type:Boolean,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1,default:!0},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},present:{type:Boolean,required:!0}},emits:["escapeKeyDown","pointerDownOutside","focusOutside","interactOutside","openAutoFocus","closeAutoFocus"],setup(d,{emit:n}){const a=d,s=n,o=w(),t=x(s),{forwardRef:y,currentElement:p}=B(),c=I(()=>a.present?p.value:void 0);le(c);const l=I(()=>{const{present:m,...v}=a;return v});return N(()=>a.present,(m,v)=>{!m&&v&&o.triggerElement.value?.focus()}),(m,v)=>(r(),i(J,D({...l.value,...e(t)},{ref:e(y),present:m.present,"trap-focus":e(o).open.value,"disable-outside-pointer-events":a.disableOutsidePointerEvents,onCloseAutoFocus:v[0]||(v[0]=C=>{C.defaultPrevented||(C.preventDefault(),e(o).triggerElement.value?.focus())}),onPointerDownOutside:v[1]||(v[1]=C=>{const $=C.detail.originalEvent,b=$.button===0&&$.ctrlKey===!0;($.button===2||b)&&C.preventDefault()}),onFocusOutside:v[2]||(v[2]=C=>{C.preventDefault()})}),{default:u(()=>[f(m.$slots,"default")]),_:3},16,["present","trap-focus","disable-outside-pointer-events"]))}}),Ie=Ee,Fe=O({__name:"DialogContentNonModal",props:{forceMount:{type:Boolean,required:!1},trapFocus:{type:Boolean,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},present:{type:Boolean,required:!0}},emits:["escapeKeyDown","pointerDownOutside","focusOutside","interactOutside","openAutoFocus","closeAutoFocus"],setup(d,{emit:n}){const a=d,o=x(n);B();const t=w(),y=R(!1),p=R(!1),c=I(()=>{const{present:l,...m}=a;return m});return N(()=>a.present,(l,m)=>{!l&&m&&(y.value||t.triggerElement.value?.focus(),y.value=!1,p.value=!1)}),(l,m)=>(r(),i(J,D({...c.value,...e(o)},{present:l.present,"trap-focus":!1,"disable-outside-pointer-events":!1,onCloseAutoFocus:m[0]||(m[0]=v=>{v.defaultPrevented||(y.value||e(t).triggerElement.value?.focus(),v.preventDefault()),y.value=!1,p.value=!1}),onInteractOutside:m[1]||(m[1]=v=>{v.defaultPrevented||(y.value=!0,v.detail.originalEvent.type==="pointerdown"&&(p.value=!0));const C=v.target;e(t).triggerElement.value?.contains(C)&&v.preventDefault(),v.detail.originalEvent.type==="focusin"&&p.value&&v.preventDefault()})}),{default:u(()=>[f(l.$slots,"default")]),_:3},16,["present"]))}}),Ae=Fe,Me=O({__name:"DialogContent",props:{forceMount:{type:Boolean,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1,default:void 0},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:["escapeKeyDown","pointerDownOutside","focusOutside","interactOutside","openAutoFocus","closeAutoFocus"],setup(d,{emit:n}){const a=d,s=n,o=w(),t=x(s),{forwardRef:y}=B();return(p,c)=>(r(),i(e(W),{present:p.forceMount||e(o).open.value,"force-mount":p.forceMount||!e(o).unmountOnHide.value},{default:u(({present:l})=>[e(o).modal.value?j((r(),i(Ie,D({key:0,ref:e(y),present:e(o).unmountOnHide.value||l},{...a,...e(t),...p.$attrs}),{default:u(()=>[f(p.$slots,"default")]),_:2},1040,["present"])),[[L,e(o).unmountOnHide.value||l]]):j((r(),i(Ae,D({key:1,ref:e(y),present:e(o).unmountOnHide.value||l},{...a,...e(t),...p.$attrs}),{default:u(()=>[f(p.$slots,"default")]),_:2},1040,["present"])),[[L,e(o).unmountOnHide.value||l]])]),_:3},8,["present","force-mount"]))}}),Re=Me,He=O({__name:"DialogDescription",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"p"}},setup(d){const n=d;B();const a=w();return(s,o)=>(r(),i(e(F),D(n,{id:e(a).descriptionId}),{default:u(()=>[f(s.$slots,"default")]),_:3},16,["id"]))}}),S=He,Te=O({__name:"DialogOverlayImpl",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1},present:{type:Boolean,required:!1,default:!0}},setup(d){const n=d,a=w(),s=re(n.present);return N(()=>n.present,o=>s.value=o),B(),(o,t)=>(r(),i(e(F),{as:o.as,"as-child":o.asChild,"data-state":e(a).open.value?"open":"closed",style:{"pointer-events":"auto"},onPointerdown:t[0]||(t[0]=ne(()=>{},["left","self","prevent"]))},{default:u(()=>[f(o.$slots,"default")]),_:3},8,["as","as-child","data-state"]))}}),Se=Te,Ke=O({__name:"DialogOverlay",props:{forceMount:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(d){const n=w(),{forwardRef:a}=B();return(s,o)=>e(n)?.modal.value?(r(),i(e(W),{key:0,present:s.forceMount||e(n).open.value,"force-mount":s.forceMount||!e(n).unmountOnHide.value},{default:u(({present:t})=>[j(k(Se,D(s.$attrs,{ref:e(a),as:s.as,"as-child":s.asChild,present:e(n).unmountOnHide.value||t}),{default:u(()=>[f(s.$slots,"default")]),_:2},1040,["as","as-child","present"]),[[L,e(n).unmountOnHide.value||t]])]),_:3},8,["present","force-mount"])):g("v-if",!0)}}),G=Ke,Ve=O({__name:"DialogPortal",props:{to:{type:null,required:!1},disabled:{type:Boolean,required:!1},defer:{type:Boolean,required:!1},forceMount:{type:Boolean,required:!1}},setup(d){const n=d;return(a,s)=>(r(),i(e(ue),X(Y(n)),{default:u(()=>[f(a.$slots,"default")]),_:3},16))}}),je=Ve,Le=O({__name:"DialogTitle",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"h2"}},setup(d){const n=d,a=w();return B(),(s,o)=>(r(),i(e(F),D(n,{id:e(a).titleId}),{default:u(()=>[f(s.$slots,"default")]),_:3},16,["id"]))}}),K=Le,xe=O({__name:"DialogTrigger",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"button"}},setup(d){const n=d,a=w(),{forwardRef:s,currentElement:o}=B();return a.contentId||=V(void 0,"reka-dialog-content"),Z(()=>{a.triggerElement.value=o.value}),(t,y)=>(r(),i(e(F),D(n,{ref:e(s),type:t.as==="button"?"button":void 0,"aria-haspopup":"dialog","aria-expanded":e(a).open.value||!1,"aria-controls":e(a).open.value?e(a).contentId:void 0,"data-state":e(a).open.value?"open":"closed",onClick:e(a).onOpenToggle}),{default:u(()=>[f(t.$slots,"default")]),_:3},16,["type","aria-expanded","aria-controls","data-state","onClick"]))}}),Ne=xe;const Ue={slots:{overlay:"fixed inset-0",content:"bg-default divide-y divide-default flex flex-col focus:outline-none",header:"flex items-center gap-1.5 p-4 sm:px-6 min-h-(--ui-header-height)",wrapper:"",body:"flex-1 p-4 sm:p-6",footer:"flex items-center gap-1.5 p-4 sm:px-6",title:"text-highlighted font-semibold",description:"mt-1 text-muted text-sm",close:"absolute top-4 end-4"},variants:{transition:{true:{overlay:"data-[state=open]:animate-[fade-in_200ms_ease-out] data-[state=closed]:animate-[fade-out_200ms_ease-in]",content:"data-[state=open]:animate-[scale-in_200ms_ease-out] data-[state=closed]:animate-[scale-out_200ms_ease-in]"}},fullscreen:{true:{content:"inset-0"},false:{content:"w-[calc(100vw-2rem)] max-w-lg rounded-lg shadow-lg ring ring-default"}},overlay:{true:{overlay:"bg-elevated/75"}},scrollable:{true:{overlay:"overflow-y-auto",content:"relative"},false:{content:"fixed",body:"overflow-y-auto"}}},compoundVariants:[{scrollable:!0,fullscreen:!1,class:{overlay:"grid place-items-center p-4 sm:py-8"}},{scrollable:!1,fullscreen:!1,class:{content:"top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 max-h-[calc(100dvh-2rem)] sm:max-h-[calc(100dvh-4rem)] overflow-hidden"}}]},Ge={__name:"UModal",props:{title:{type:String,required:!1},description:{type:String,required:!1},content:{type:Object,required:!1},overlay:{type:Boolean,required:!1,default:!0},scrollable:{type:Boolean,required:!1},transition:{type:Boolean,required:!1,default:!0},fullscreen:{type:Boolean,required:!1},portal:{type:[Boolean,String],required:!1,skipCheck:!0,default:!0},close:{type:[Boolean,Object],required:!1,default:!0},closeIcon:{type:null,required:!1},dismissible:{type:Boolean,required:!1,default:!0},class:{type:null,required:!1},ui:{type:Object,required:!1},open:{type:Boolean,required:!1},defaultOpen:{type:Boolean,required:!1},modal:{type:Boolean,required:!1,default:!0},unmountOnHide:{type:Boolean,required:!1}},emits:["leave","after:leave","enter","after:enter","close:prevent","update:open"],setup(d,{emit:n}){const a=d,s=n,o=ie(),t=de("modal",a),{t:y}=pe(),p=fe(),c=ce(ve(t,"open","defaultOpen","modal","unmountOnHide"),s),l=ye(z(()=>t.portal)),m=z(()=>t.content),v=I(()=>t.dismissible?{pointerDownOutside:_=>qe(_,{scrollable:t.scrollable})}:["interactOutside","escapeKeyDown"].reduce((q,H)=>(q[H]=P=>{P.preventDefault(),s("close:prevent")},q),{})),[C,$]=me(),b=I(()=>Ce({extend:Ue,...p.ui?.modal||{}})({transition:t.transition,fullscreen:t.fullscreen,overlay:t.overlay,scrollable:t.scrollable}));return(_,q)=>(r(),i(e(he),X(Y(e(c))),{default:u(({open:H,close:P})=>[k(e(C),null,{default:u(()=>[k(e(Re),D({"data-slot":"content",class:b.value.content({class:[!o.default&&e(t).class,e(t).ui?.content]})},m.value,{onEnter:q[0]||(q[0]=T=>s("enter")),onAfterEnter:q[1]||(q[1]=T=>s("after:enter")),onLeave:q[2]||(q[2]=T=>s("leave")),onAfterLeave:q[3]||(q[3]=T=>s("after:leave"))},_e(v.value)),{default:u(()=>[!e(t).title&&!o.title||!e(t).description&&!o.description||o.content?(r(),i(e(ge),{key:0},{default:u(()=>[!e(t).title&&!o.title?(r(),i(e(K),{key:0})):o.content?(r(),i(e(K),{key:1},{default:u(()=>[f(_.$slots,"title",{},()=>[A(M(e(t).title),1)])]),_:3})):g("",!0),!e(t).description&&!o.description?(r(),i(e(S),{key:2})):o.content?(r(),i(e(S),{key:3},{default:u(()=>[f(_.$slots,"description",{},()=>[A(M(e(t).description),1)])]),_:3})):g("",!0)]),_:3})):g("",!0),f(_.$slots,"content",{close:P},()=>[o.header||e(t).title||o.title||e(t).description||o.description||e(t).close||o.close?(r(),E("div",{key:0,"data-slot":"header",class:h(b.value.header({class:e(t).ui?.header}))},[f(_.$slots,"header",{close:P},()=>[e(t).title||o.title||e(t).description||o.description?(r(),E("div",{key:0,"data-slot":"wrapper",class:h(b.value.wrapper({class:e(t).ui?.wrapper}))},[e(t).title||o.title?(r(),i(e(K),{key:0,"data-slot":"title",class:h(b.value.title({class:e(t).ui?.title}))},{default:u(()=>[f(_.$slots,"title",{},()=>[A(M(e(t).title),1)])]),_:3},8,["class"])):g("",!0),e(t).description||o.description?(r(),i(e(S),{key:1,"data-slot":"description",class:h(b.value.description({class:e(t).ui?.description}))},{default:u(()=>[f(_.$slots,"description",{},()=>[A(M(e(t).description),1)])]),_:3},8,["class"])):g("",!0)],2)):g("",!0),f(_.$slots,"actions"),e(t).close||o.close?(r(),i(e($e),{key:1,"as-child":""},{default:u(()=>[f(_.$slots,"close",{ui:b.value},()=>[e(t).close?(r(),i(be,D({key:0,icon:e(t).closeIcon||e(p).ui.icons.close,color:"neutral",variant:"ghost","aria-label":e(y)("modal.close")},typeof e(t).close=="object"?e(t).close:{},{"data-slot":"close",class:b.value.close({class:e(t).ui?.close})}),null,16,["icon","aria-label","class"])):g("",!0)])]),_:2},1024)):g("",!0)])],2)):g("",!0),o.body?(r(),E("div",{key:1,"data-slot":"body",class:h(b.value.body({class:e(t).ui?.body}))},[f(_.$slots,"body",{close:P})],2)):g("",!0),o.footer?(r(),E("div",{key:2,"data-slot":"footer",class:h(b.value.footer({class:e(t).ui?.footer}))},[f(_.$slots,"footer",{close:P})],2)):g("",!0)])]),_:2},1040,["class"])]),_:2},1024),o.default?(r(),i(e(Ne),{key:0,"as-child":"",class:h(e(t).class)},{default:u(()=>[f(_.$slots,"default",{open:H})]),_:2},1032,["class"])):g("",!0),k(e(je),D(e(l),{"force-mount":e(l).disabled&&e(t).unmountOnHide===!1||void 0}),{default:u(()=>[k(e(De),null,{default:u(()=>[e(t).scrollable?(r(),i(e(G),{key:0,"data-slot":"overlay",class:h(b.value.overlay({class:e(t).ui?.overlay}))},{default:u(()=>[k(e($))]),_:1},8,["class"])):(r(),E(Oe,{key:1},[e(t).overlay?(r(),i(e(G),{key:0,"data-slot":"overlay",class:h(b.value.overlay({class:e(t).ui?.overlay}))},null,8,["class"])):g("",!0),k(e($))],64))]),_:1})]),_:1},16,["force-mount"])]),_:3},16))}};export{G as D,Ge as _,Re as a,he as b,Ne as c,je as d,K as e,S as f,$e as g};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{d as S,o,f as i,g as f,V as x,W as h,k as a,X as k,h as c,a0 as C,a1 as B,a2 as w,a3 as P,a5 as O,a6 as V,a7 as $,b3 as N,c as y,j as z,i as _,q as d,t as R,p as j,aI as A,v as b,F as g,a8 as F}from"./NQikbhmK.js";var I=S({__name:"BaseSeparator",props:{orientation:{type:String,required:!1,default:"horizontal"},decorative:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(n){const s=n,l=["horizontal","vertical"];function e(r){return l.includes(r)}const u=c(()=>e(s.orientation)?s.orientation:"horizontal"),v=c(()=>u.value==="vertical"?s.orientation:void 0),m=c(()=>s.decorative?{role:"none"}:{"aria-orientation":v.value,role:"separator"});return(r,p)=>(o(),i(a(k),h({as:r.as,"as-child":r.asChild,"data-orientation":u.value},m.value),{default:f(()=>[x(r.$slots,"default")]),_:3},16,["as","as-child","data-orientation"]))}}),T=I,D=S({__name:"Separator",props:{orientation:{type:String,required:!1,default:"horizontal"},decorative:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(n){const s=n;return(l,e)=>(o(),i(T,C(B(s)),{default:f(()=>[x(l.$slots,"default")]),_:3},16))}}),E=D;const U={slots:{root:"flex items-center align-center text-center",border:"",container:"font-medium text-default flex",icon:"shrink-0 size-5",avatar:"shrink-0",avatarSize:"2xs",label:"text-sm"},variants:{color:{primary:{border:"border-primary"},secondary:{border:"border-secondary"},success:{border:"border-success"},info:{border:"border-info"},warning:{border:"border-warning"},error:{border:"border-error"},neutral:{border:"border-default"}},orientation:{horizontal:{root:"w-full flex-row",border:"w-full",container:"whitespace-nowrap"},vertical:{root:"h-full flex-col",border:"h-full",container:""}},size:{xs:"",sm:"",md:"",lg:"",xl:""},position:{start:"",center:"",end:""},type:{solid:{border:"border-solid"},dashed:{border:"border-dashed"},dotted:{border:"border-dotted"}}},compoundVariants:[{orientation:"horizontal",position:"start",class:{container:"me-3"}},{orientation:"horizontal",position:"center",class:{container:"mx-3"}},{orientation:"horizontal",position:"end",class:{container:"ms-3"}},{orientation:"vertical",position:"start",class:{container:"mb-2"}},{orientation:"vertical",position:"center",class:{container:"my-2"}},{orientation:"vertical",position:"end",class:{container:"mt-2"}},{orientation:"horizontal",size:"xs",class:{border:"border-t"}},{orientation:"horizontal",size:"sm",class:{border:"border-t-[2px]"}},{orientation:"horizontal",size:"md",class:{border:"border-t-[3px]"}},{orientation:"horizontal",size:"lg",class:{border:"border-t-[4px]"}},{orientation:"horizontal",size:"xl",class:{border:"border-t-[5px]"}},{orientation:"vertical",size:"xs",class:{border:"border-s"}},{orientation:"vertical",size:"sm",class:{border:"border-s-[2px]"}},{orientation:"vertical",size:"md",class:{border:"border-s-[3px]"}},{orientation:"vertical",size:"lg",class:{border:"border-s-[4px]"}},{orientation:"vertical",size:"xl",class:{border:"border-s-[5px]"}}],defaultVariants:{color:"neutral",size:"xs",type:"solid"}},G=Object.assign({inheritAttrs:!1},{__name:"USeparator",props:{as:{type:null,required:!1},label:{type:String,required:!1},icon:{type:null,required:!1},avatar:{type:Object,required:!1},color:{type:null,required:!1},size:{type:null,required:!1},type:{type:null,required:!1},orientation:{type:null,required:!1,default:"horizontal"},position:{type:null,required:!1,default:"center"},class:{type:null,required:!1},ui:{type:null,required:!1},decorative:{type:Boolean,required:!1}},setup(n){const s=n,l=w(),e=P("separator",s),u=O(),v=V($(e,"as","decorative","orientation")),[m,r]=N(),p=c(()=>!!(e.label||e.icon||e.avatar||l.default)),t=c(()=>F({extend:U,...u.ui?.separator||{}})({color:e.color,orientation:e.orientation,size:e.size,position:e.position,type:e.type}));return(q,W)=>(o(),y(g,null,[z(a(m),null,{default:f(()=>[_("div",{"data-slot":"container",class:d(t.value.container({class:a(e).ui?.container}))},[x(q.$slots,"default",{ui:t.value},()=>[a(e).label?(o(),y("span",{key:0,"data-slot":"label",class:d(t.value.label({class:a(e).ui?.label}))},R(a(e).label),3)):a(e).icon?(o(),i(j,{key:1,name:a(e).icon,"data-slot":"icon",class:d(t.value.icon({class:a(e).ui?.icon}))},null,8,["name","class"])):a(e).avatar?(o(),i(A,h({key:2,size:a(e).ui?.avatarSize||t.value.avatarSize()},a(e).avatar,{"data-slot":"avatar",class:t.value.avatar({class:a(e).ui?.avatar})}),null,16,["size","class"])):b("",!0)])],2)]),_:3}),z(a(E),h({"data-slot":"root"},{...a(v),...q.$attrs},{class:t.value.root({class:[a(e).ui?.root,a(e).class]})}),{default:f(()=>[p.value&&a(e).position==="start"?(o(),i(a(r),{key:0})):b("",!0),_("div",{"data-slot":"border",class:d(t.value.border({class:a(e).ui?.border}))},null,2),p.value&&a(e).position==="center"?(o(),y(g,{key:1},[z(a(r)),_("div",{"data-slot":"border",class:d(t.value.border({class:a(e).ui?.border}))},null,2)],64)):b("",!0),p.value&&a(e).position==="end"?(o(),i(a(r),{key:2})):b("",!0)]),_:1},16,["class"])],64))}});export{G as _};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{b$ as
|
|
1
|
+
import{b$ as e}from"./NQikbhmK.js";import{h as a}from"./BjaRappk.js";const n=[{id:"account",label:"Account",icon:"i-lucide-user-round",to:"/settings/account",authOnly:!0,fields:[{id:"account.display-name",label:"Display name",help:"account.display-name"},{id:"account.email",label:"Email address",help:"account.email"},{id:"account.connected-accounts",label:"Connected accounts",help:"account.connected-accounts"},{id:"account.password",label:"Password",help:"account.password"},{id:"account.auth-toggle",label:"Authentication",help:"settings.auth-toggle",envOnly:!0}]},{id:"users",label:"Users",icon:"i-lucide-users",to:"/settings/users",roles:[e.ADMINISTRATOR],authOnly:!0,introHelp:"settings.users",fields:[{id:"users.list",label:"Users & roles",help:"settings.users"},{id:"users.api-keys",label:"API keys",help:"settings.api-keys"}]},{id:"notifications",label:"Notifications",icon:"i-lucide-bell",to:"/settings/notifications",fields:[{id:"notifications.smtp",label:"SMTP email delivery",help:"settings.smtp",envOnly:!0},{id:"notifications.test-email",label:"Send test email",help:"notifications.test-email"},{id:"notifications.channels",label:"Notification channels",help:"notifications.channels"},{id:"notifications.subscriptions",label:"My subscriptions",help:"notifications.subscriptions"}]},{id:"tags",label:"Tags",icon:"i-lucide-tags",to:"/settings/tags",roles:[e.ADMINISTRATOR],introHelp:"settings.tags",fields:[{id:"tags.list",label:"Tags",help:"settings.tags"}]},{id:"storage",label:"Storage",icon:"i-lucide-hard-drive",to:"/settings/storage",roles:[e.ADMINISTRATOR],fields:[{id:"storage.backend",label:"Storage backend",help:"settings.storage-backend",envOnly:!0},{id:"storage.stats",label:"Storage statistics",help:"settings.storage-stats"},{id:"storage.cleanup",label:"Cleanup old test runs",help:"settings.cleanup"}]},{id:"wasted-time",label:"Wasted time",icon:"i-lucide-hourglass",to:"/settings/wasted-time",roles:[e.ADMINISTRATOR],introHelp:"settings.wasted-time",fields:[{id:"wasted-time.patterns",label:"Wasted-time patterns",help:"settings.wasted-time"}]},{id:"timeout-hygiene",label:"Timeout hygiene",icon:"i-lucide-scissors",to:"/settings/timeout-hygiene",roles:[e.ADMINISTRATOR],introHelp:"settings.timeout-hygiene",fields:[{id:"timeout-hygiene.thresholds",label:"Detection thresholds",help:"settings.timeout-hygiene"}]},{id:"pr-feedback",label:"Pull requests",icon:"i-lucide-git-pull-request",to:"/settings/pr-feedback",roles:[e.ADMINISTRATOR],introHelp:"settings.pr-feedback",fields:[{id:"pr-feedback.settings",label:"Pull-request feedback",help:"settings.pr-feedback"}]},{id:"ai",label:"AI diagnosis",icon:"i-lucide-sparkles",to:"/settings/ai",roles:[e.ADMINISTRATOR],fields:[{id:"ai.diagnosis",label:"Diagnosis model",help:"settings.ai-provider"},{id:"ai.research",label:"Research model",help:"settings.ai-research"},{id:"ai.embedding",label:"Embedding model",help:"settings.embedding-model"},{id:"ai.auto-diagnose",label:"Auto-diagnose",help:"settings.auto-diagnose"},{id:"ai.context-limits",label:"Diagnosis context limits",help:"settings.ai-limits"},{id:"ai.instructions",label:"Global analysis instructions",help:"settings.ai-instructions"},{id:"ai.scm-token",label:"Repository access token",help:"project.scm-token"},{id:"ai.privacy",label:"Privacy notice",help:"settings.privacy"}]},{id:"about",label:"About",icon:"i-lucide-info",to:"/settings/about",fields:[]}];function o(t){return a(t.help)}function r(t){const i=new Set;for(const s of t.fields)for(const l of o(s))i.add(l);return[...i]}function g(t){const i=n.find(s=>s.id===t);if(!i)throw new Error(`Unknown settings page: ${t}`);return i}export{n as S,g,r as p};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{a2 as V,a3 as $,a5 as j,an as y,aU as z,r as S,aO as w,aV as P,H as B,o,f as C,g as b,i as q,q as s,k as t,c as u,j as F,V as n,m as c,t as f,v as m,X as N,h,a8 as O,M as g,c2 as D,c3 as K}from"./NQikbhmK.js";import{L as W}from"./CYsTqbBS.js";const E={slots:{root:"",wrapper:"",labelWrapper:"flex content-center items-center justify-between gap-1",label:"block font-medium text-default",container:"relative",description:"text-muted",error:"mt-2 text-error",hint:"text-muted",help:"mt-2 text-muted"},variants:{size:{xs:{root:"text-xs"},sm:{root:"text-xs"},md:{root:"text-sm"},lg:{root:"text-sm"},xl:{root:"text-base"}},required:{true:{label:"after:content-['*'] after:ms-0.5 after:text-error"}},orientation:{vertical:{container:"mt-1"},horizontal:{root:"flex justify-between place-items-baseline gap-2"}}},defaultVariants:{size:"md"}},L=["id"],U=["id"],A=["id"],H=["id"],G={__name:"UFormField",props:{as:{type:null,required:!1},name:{type:String,required:!1},errorPattern:{type:null,required:!1},label:{type:String,required:!1},description:{type:String,required:!1},help:{type:String,required:!1},error:{type:[Boolean,String],required:!1,default:void 0},hint:{type:String,required:!1},size:{type:null,required:!1},required:{type:Boolean,required:!1},eagerValidation:{type:Boolean,required:!1},validateOnInputDelay:{type:Number,required:!1},orientation:{type:null,required:!1,default:"vertical"},class:{type:null,required:!1},ui:{type:Object,required:!1}},setup(x){const _=x,l=V(),e=$("formField",_),I=j(),a=h(()=>O({extend:E,...I.ui?.formField||{}})({size:e.size,required:e.required,orientation:e.orientation})),k=y(z,null),i=h(()=>e.error||k?.value?.find(r=>r.name===e.name||e.errorPattern&&r.name?.match(e.errorPattern))?.message),d=S(w()),p=d.value,v=y(P,void 0);return B(d,()=>{v&&e.name&&(v.value[e.name]={id:d.value,pattern:e.errorPattern})},{immediate:!0}),g(D,d),g(K,h(()=>({error:i.value,name:e.name,size:e.size,eagerValidation:e.eagerValidation,validateOnInputDelay:e.validateOnInputDelay,errorPattern:e.errorPattern,hint:e.hint,description:e.description,help:e.help,ariaId:p}))),(r,M)=>(o(),C(t(N),{as:t(e).as,"data-orientation":t(e).orientation,"data-slot":"root",class:s(a.value.root({class:[t(e).ui?.root,t(e).class]}))},{default:b(()=>[q("div",{"data-slot":"wrapper",class:s(a.value.wrapper({class:t(e).ui?.wrapper}))},[t(e).label||l.label?(o(),u("div",{key:0,"data-slot":"labelWrapper",class:s(a.value.labelWrapper({class:t(e).ui?.labelWrapper}))},[F(t(W),{for:d.value,"data-slot":"label",class:s(a.value.label({class:t(e).ui?.label}))},{default:b(()=>[n(r.$slots,"label",{label:t(e).label},()=>[c(f(t(e).label),1)])]),_:3},8,["for","class"]),t(e).hint||l.hint?(o(),u("span",{key:0,id:`${t(p)}-hint`,"data-slot":"hint",class:s(a.value.hint({class:t(e).ui?.hint}))},[n(r.$slots,"hint",{hint:t(e).hint},()=>[c(f(t(e).hint),1)])],10,L)):m("",!0)],2)):m("",!0),t(e).description||l.description?(o(),u("p",{key:1,id:`${t(p)}-description`,"data-slot":"description",class:s(a.value.description({class:t(e).ui?.description}))},[n(r.$slots,"description",{description:t(e).description},()=>[c(f(t(e).description),1)])],10,U)):m("",!0)],2),q("div",{class:s([(t(e).label||!!l.label||t(e).description||!!l.description)&&a.value.container({class:t(e).ui?.container})])},[n(r.$slots,"default",{error:i.value}),t(e).error!==!1&&(typeof i.value=="string"&&i.value||l.error)?(o(),u("div",{key:0,id:`${t(p)}-error`,"data-slot":"error",class:s(a.value.error({class:t(e).ui?.error}))},[n(r.$slots,"error",{error:i.value},()=>[c(f(i.value),1)])],10,A)):t(e).help||l.help?(o(),u("div",{key:1,id:`${t(p)}-help`,"data-slot":"help",class:s(a.value.help({class:t(e).ui?.help}))},[n(r.$slots,"help",{help:t(e).help},()=>[c(f(t(e).help),1)])],10,H)):m("",!0)],2)]),_:3},8,["as","data-orientation","class"]))}};export{G as _};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{ad as b,A as E}from"./NQikbhmK.js";const v="piwi-demo-run-events";let o=null;const u=new Set;function S(e){return o||(o=new BroadcastChannel(v),o.onmessage=n=>{for(const l of u)l(n.data)}),u.add(e),()=>{u.delete(e),u.size===0&&o&&(o.close(),o=null)}}let t=null,r=null;const s=new Set;let i=null;const p=1e3,w=3e4,y=[5*6e4,15*6e4,30*6e4];let a=Date.now(),c=!1;function f(){a=Date.now()}function h(){const e=Date.now()-a;let n=1;for(const l of y)if(e>=l)n*=2;else break;return Math.min(p*n,w)}const A=new Set(["run-initialising","run-started","run-finalizing","run-finished","run-submitted","run-cancelled"]);function d(e){A.has(e)&&(i&&clearTimeout(i),i=setTimeout(()=>{for(const n of s)n()},h()))}function m(){t||(t=new EventSource("/api/stream"),t.onmessage=e=>{try{const n=JSON.parse(e.data);d(n.type)}catch{}},t.onerror=()=>{})}function C(){if(f(),document.visibilityState==="hidden")t&&(t.close(),t=null),i&&(clearTimeout(i),i=null);else if(s.size>0){m();for(const e of s)e()}}function g(){if(!c){c=!0;const e=["mousemove","keydown","pointerdown","scroll"];for(const n of e)window.addEventListener(n,f,{passive:!0});document.addEventListener("visibilitychange",C)}if(E().public.demoMode){if(r)return;r=S(e=>{e.scope==="global"&&d(e.event.type)});return}document.visibilityState!=="hidden"&&m()}function T(){s.size>0||(t&&(t.close(),t=null),r&&(r(),r=null),i&&(clearTimeout(i),i=null))}function N(e){g(),s.add(e),b(()=>{s.delete(e),T()})}export{S as s,N as u};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{_ as F}from"./BxCKKeYs.js";import{_ as O}from"./eptP4pGv.js";import{_ as T}from"./D0HNloZ9.js";import{ay as D,d as G,N as Y,a as H,u as J,b as K,B as q,c as N,i as r,k as t,f as m,g as s,j as a,m as f,A as Q,r as _,D as W,o as i,v,C as B,I as X,_ as Z,p as ee,L as I,h as te}from"./NQikbhmK.js";import{_ as ae}from"./B9WhzpKO.js";import{_ as se}from"./B44A4LSJ.js";import"./CYsTqbBS.js";const oe=D("/logo-wide.svg"),ne={class:"min-h-screen flex flex-col items-center justify-center bg-elevated/50 gap-6 px-4"},le={key:1,class:"space-y-2 mb-4"},re={class:"mt-4 text-center"},ie={class:"flex items-center gap-4 text-sm text-muted"},de={href:"https://github.com/piwitests/platform",target:"_blank",rel:"noopener",class:"flex items-center gap-1.5 hover:text-default transition-colors"},ve=G({__name:"login",setup(ue){const{login:U}=Y(),C=H(),M=J(),y=K(),A=Q(),d=I({username:"",password:""}),w=_(!1),c=_(""),h=_(null),o=I({username:"",password:"",confirmPassword:"",name:""}),u=_(!1),p=_("");q(async()=>{if(A.public.demoMode){h.value=!1;return}try{const n=await $fetch("/api/auth/setup");h.value=n.needsSetup}catch{h.value=!1}});async function z(){if(!o.username||!o.password){p.value="Please choose a username and password";return}if(o.password!==o.confirmPassword){p.value="Passwords do not match";return}u.value=!0,p.value="";try{await $fetch("/api/auth/setup",{method:"POST",body:{username:o.username,password:o.password,name:o.name||void 0}}),await U(o.username,o.password),y.add({title:"Admin account created",description:"You're signed in.",color:"success"}),C.push("/")}catch(n){const e=n&&typeof n=="object"&&"data"in n?n.data?.message:void 0;p.value=e||"Failed to create the admin account",y.add({title:"Setup failed",description:p.value,color:"error"})}finally{u.value=!1}}const x=te(()=>A.public.demoMode?[]:A.public.oauthProviders||[]);q(()=>{const n=M.query.error;if(n){const e={"access-denied":"Access was denied","invalid-state":"Authentication failed (invalid state)","missing-code":"Authentication failed (missing code)","oauth-failed":"OAuth authentication failed","account-exists":"This email is already linked to a different sign-in method. Sign in with that method instead.","domain-not-allowed":"Your email domain is not allowed to sign in here.","org-not-allowed":"You are not a member of an allowed organization.","link-requires-login":"Please sign in before connecting a provider.","auth-disabled":"Authentication is not enabled","invalid-provider":"Invalid OAuth provider"};c.value=e[n]||"Authentication failed"}});async function E(){if(!d.username||!d.password){c.value="Please enter username and password";return}w.value=!0,c.value="";try{await U(d.username,d.password),y.add({title:"Login successful",color:"success"}),C.push("/")}catch(n){const e=n&&typeof n=="object"&&"data"in n?n.data?.message:void 0;c.value=e||"Invalid username or password",y.add({title:"Login failed",description:c.value,color:"error"})}finally{w.value=!1}}function S(n){window.location.href=`/api/auth/oauth/${n}/login`}return(n,e)=>{const R=F,P=O,$=T,g=X,b=ae,k=Z,V=ee,j=se,L=W;return i(),N("div",ne,[e[18]||(e[18]=r("img",{src:oe,alt:"Piwi Dashboard",class:"h-16 rounded-xl"},null,-1)),t(h)===null?(i(),m(P,{key:0,class:"w-full max-w-md"},{default:s(()=>[a(R,{text:"Loading…"})]),_:1})):t(h)?(i(),m(P,{key:1,class:"w-full max-w-md"},{header:s(()=>[...e[8]||(e[8]=[r("h1",{class:"text-xl font-semibold"},"Create the first admin account",-1),r("p",{class:"text-sm text-muted mt-1"}," Authentication is enabled and no accounts exist yet. Create the administrator account to sign in. ",-1)])]),default:s(()=>[t(p)?(i(),m($,{key:0,color:"error",title:t(p),variant:"subtle",class:"mb-4"},null,8,["title"])):v("",!0),r("form",{class:"space-y-4",onSubmit:B(z,["prevent"])},[a(b,{label:"Username",name:"username",required:""},{default:s(()=>[a(g,{modelValue:t(o).username,"onUpdate:modelValue":e[0]||(e[0]=l=>t(o).username=l),type:"text",placeholder:"Choose a username",autocomplete:"username",disabled:t(u),class:"w-full"},null,8,["modelValue","disabled"])]),_:1}),a(b,{label:"Name",name:"name"},{default:s(()=>[a(g,{modelValue:t(o).name,"onUpdate:modelValue":e[1]||(e[1]=l=>t(o).name=l),type:"text",placeholder:"Administrator (optional)",autocomplete:"name",disabled:t(u),class:"w-full"},null,8,["modelValue","disabled"])]),_:1}),a(b,{label:"Password",name:"password",required:""},{default:s(()=>[a(g,{modelValue:t(o).password,"onUpdate:modelValue":e[2]||(e[2]=l=>t(o).password=l),type:"password",placeholder:"Choose a password",autocomplete:"new-password",disabled:t(u),class:"w-full"},null,8,["modelValue","disabled"])]),_:1}),a(b,{label:"Confirm password",name:"confirmPassword",required:""},{default:s(()=>[a(g,{modelValue:t(o).confirmPassword,"onUpdate:modelValue":e[3]||(e[3]=l=>t(o).confirmPassword=l),type:"password",placeholder:"Re-enter the password",autocomplete:"new-password",disabled:t(u),class:"w-full"},null,8,["modelValue","disabled"])]),_:1}),a(k,{type:"submit",block:"",loading:t(u),disabled:t(u)},{default:s(()=>[...e[9]||(e[9]=[f(" Create admin account ",-1)])]),_:1},8,["loading","disabled"])],32)]),_:1})):(i(),m(P,{key:2,class:"w-full max-w-md"},{header:s(()=>[...e[10]||(e[10]=[r("h1",{class:"text-xl font-semibold"},"Sign in to your account",-1)])]),default:s(()=>[t(c)?(i(),m($,{key:0,color:"error",title:t(c),variant:"subtle",class:"mb-4"},null,8,["title"])):v("",!0),t(x).length>0?(i(),N("div",le,[t(x).includes("google")?(i(),m(k,{key:0,block:"",color:"neutral",variant:"outline",onClick:e[4]||(e[4]=l=>S("google"))},{leading:s(()=>[a(V,{name:"i-lucide-chrome",class:"size-5"})]),default:s(()=>[e[11]||(e[11]=f(" Sign in with Google ",-1))]),_:1})):v("",!0),t(x).includes("github")?(i(),m(k,{key:1,block:"",color:"neutral",variant:"outline",onClick:e[5]||(e[5]=l=>S("github"))},{leading:s(()=>[a(V,{name:"i-lucide-github",class:"size-5"})]),default:s(()=>[e[12]||(e[12]=f(" Sign in with GitHub ",-1))]),_:1})):v("",!0),t(x).length>0?(i(),m(j,{key:2,label:"or continue with password",class:"my-4"})):v("",!0)])):v("",!0),r("form",{class:"space-y-4",onSubmit:B(E,["prevent"])},[a(b,{label:"Username",name:"username",required:""},{default:s(()=>[a(g,{modelValue:t(d).username,"onUpdate:modelValue":e[6]||(e[6]=l=>t(d).username=l),type:"text",placeholder:"Enter your username",autocomplete:"username",disabled:t(w),class:"w-full"},null,8,["modelValue","disabled"])]),_:1}),a(b,{label:"Password",name:"password",required:""},{default:s(()=>[a(g,{modelValue:t(d).password,"onUpdate:modelValue":e[7]||(e[7]=l=>t(d).password=l),type:"password",placeholder:"Enter your password",autocomplete:"current-password",disabled:t(w),class:"w-full"},null,8,["modelValue","disabled"])]),_:1}),a(k,{type:"submit",block:"",loading:t(w),disabled:t(w)},{default:s(()=>[...e[13]||(e[13]=[f(" Login ",-1)])]),_:1},8,["loading","disabled"])],32),r("div",re,[a(L,{to:"/forgot-password",class:"text-sm text-muted hover:text-default"},{default:s(()=>[...e[14]||(e[14]=[f(" Forgot password? ",-1)])]),_:1})])]),_:1})),r("div",ie,[r("a",de,[a(V,{name:"i-lucide-github",class:"size-4"}),e[15]||(e[15]=f(" GitHub ",-1))]),e[17]||(e[17]=r("span",null,"·",-1)),a(L,{to:"/docs",class:"flex items-center gap-1.5 hover:text-default transition-colors"},{default:s(()=>[a(V,{name:"i-lucide-book-open",class:"size-4"}),e[16]||(e[16]=f(" API Docs ",-1))]),_:1})])])}}});export{ve as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{_ as Ee,a as Re}from"./DgE2YE3R.js";import{d as H,E as le,H as se,o as l,f as T,g as c,i as s,j as r,I as G,l as W,k as a,c as m,p as ne,F as C,y as F,q as ie,m as I,t as w,v as x,G as X,r as R,h as D,K as $e,_ as re,w as oe,b as Oe,ac as Le,L as z}from"./NQikbhmK.js";import{_ as Be}from"./C7P1UCO2.js";import{_ as pe}from"./Jo8kRmHz.js";import{_ as fe}from"./DS636elg.js";import{_ as ve}from"./B9WhzpKO.js";import{_ as ge}from"./CZfMdzfk.js";import{_ as Fe}from"./B3HO8kuh.js";import{h as We}from"./BjaRappk.js";import{_ as ye}from"./DprVVyUQ.js";import{_ as Ne}from"./CV9-fTmY.js";import{u as ae}from"./CpjgB2aY.js";import{_ as De}from"./eaVkJRSa.js";import{p as Xe,g as qe}from"./B7NBP1C-.js";import"./D0HNloZ9.js";import"./Bn0YQDyy.js";import"./CYsTqbBS.js";import"./g26aVPxc.js";import"./CNFYDQmj.js";import"./BYDaY0Z7.js";import"./DP8hfJ9h.js";import"./eptP4pGv.js";import"./CDk0q2hV.js";const Ke={class:"space-y-3"},je={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"],ot=["title"],at={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(o,{emit:M}){function U(y){return y?y>=1e6?`${(y/1e6).toFixed(1)}M`:y>=1e3?`${Math.round(y/1e3)}K`:String(y):""}const v=o,i=M,A=le(o,"open"),_=R(null),d=R("");se(A,y=>{y&&$e(()=>_.value?.focus())});const n=D(()=>{const y=d.value.toLowerCase();return y?v.models.filter(h=>h.id.toLowerCase().includes(y)||(h.label?.toLowerCase()??"").includes(y)):v.models}),k={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(h=>{const g=h.indexOf("→");if(g!==-1){const E=h.slice(0,g),O=h.slice(g+1);return{inputs:E.split("+").filter(Boolean),outputs:O.split("+").filter(Boolean)}}return{inputs:[h],outputs:[]}})}function $(y){i("select",y),A.value=!1,d.value=""}return(y,h)=>{const g=G,E=ne,O=Fe;return l(),T(O,{open:A.value,"onUpdate:open":h[1]||(h[1]=f=>A.value=f),title:"Select a model",ui:{content:"max-w-2xl"}},{body:c(()=>[s("div",Ke,[r(g,{ref_key:"searchInput",ref:_,modelValue:a(d),"onUpdate:modelValue":h[0]||(h[0]=f=>W(d)?d.value=f:null),placeholder:"Search models…",icon:"i-lucide-search",size:"sm"},null,8,["modelValue"]),o.models.length===0&&o.loading?(l(),m("div",je,[r(E,{name:"i-lucide-loader-2",class:"size-4 animate-spin"}),h[2]||(h[2]=s("span",{class:"text-sm"},"Loading models…",-1))])):o.models.length===0?(l(),m("div",ze," No models available — check your provider configuration ")):(l(),m("div",He,[(l(!0),m(C,null,F(a(n),f=>(l(),m("button",{key:f.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",o.selected===f.id?"bg-primary/10 ring-1 ring-inset ring-primary/30 border-primary/30":""]),onClick:b=>$(f.id)},[s("div",Qe,[s("p",Ye,[I(w(f.id)+" ",1),f.label&&f.label!==f.id?(l(),m("span",Ze," — "+w(f.label),1)):x("",!0)]),s("p",Je,[f.contextLength?(l(),m(C,{key:0},[I(w(U(f.contextLength))+" ctx",1)],64)):x("",!0),f.maxTokens?(l(),m(C,{key:1},[I(" · up to "+w(U(f.maxTokens))+" out",1)],64)):x("",!0),f.pricing?.prompt?(l(),m(C,{key:2},[I(" · $"+w(f.pricing.prompt)+" / $"+w(f.pricing.completion??"?")+" per 1M",1)],64)):x("",!0),!f.contextLength&&!f.maxTokens&&!f.pricing?.prompt?(l(),m("span",et,"No additional info")):x("",!0)])]),f.modalities?.length?(l(),m("div",tt,[(l(!0),m(C,null,F(V(f.modalities),b=>(l(),m(C,{key:b.inputs.join()+"→"+b.outputs.join()},[(l(!0),m(C,null,F(b.inputs,P=>(l(),m("span",{key:"in-"+P,title:k[P]?.label??P,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"},[r(E,{name:k[P]?.icon??"i-lucide-cpu",class:"size-3.5"},null,8,["name"])],8,st))),128)),b.outputs.length?(l(),T(E,{key:0,name:"i-lucide-arrow-right",class:"size-3 text-gray-400 shrink-0"})):x("",!0),(l(!0),m(C,null,F(b.outputs,P=>(l(),m("span",{key:"out-"+P,title:k[P]?.label??P,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"},[r(E,{name:k[P]?.icon??"i-lucide-cpu",class:"size-3.5"},null,8,["name"])],8,ot))),128))],64))),128))])):x("",!0)],10,Ge))),128)),a(n).length===0?(l(),m("div",at,' No models match "'+w(a(d))+'" ',1)):x("",!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(o,{emit:M}){const U=M,v=le(o,"modelValue"),i=R(!1);return(A,_)=>{const d=G,n=re,k=nt;return l(),m(C,null,[s("div",it,[r(d,{modelValue:v.value,"onUpdate:modelValue":_[0]||(_[0]=V=>v.value=V),placeholder:o.providerResolved==="anthropic"?o.placeholderAnthropic:o.placeholderOpenai,class:"flex-1"},null,8,["modelValue","placeholder"]),o.providerResolved?(l(),T(n,{key:0,size:"sm",variant:"soft",onClick:_[1]||(_[1]=V=>{U("loadModels"),i.value=!0})},{default:c(()=>[..._[4]||(_[4]=[I(" Choose model… ",-1)])]),_:1})):x("",!0)]),r(k,{open:a(i),"onUpdate:open":_[2]||(_[2]=V=>W(i)?i.value=V:null),models:o.models,selected:v.value,loading:o.loadingModels,onSelect:_[3]||(_[3]=V=>v.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(o,{emit:M}){const U=o,v=M,i=le(o,"modelValue"),A=D({get:()=>i.value.reuse??"own",set:d=>i.value.reuse=d==="own"?null:d}),_=D(()=>We(U.meta.help));return(d,n)=>{const k=ne,V=Be,$=pe,y=fe,h=ve,g=ge,E=G,O=dt,f=re;return l(),m("div",{class:ie(["rounded-lg border border-default p-4 space-y-4",o.meta.optional&&!i.value.enabled?"opacity-80":""])},[s("div",ct,[s("div",ut,[r(k,{name:o.meta.icon,class:"size-5 mt-0.5 text-primary"},null,8,["name"]),s("div",null,[s("p",mt,[I(w(o.meta.title)+" ",1),r(V,{topic:o.meta.help},null,8,["topic"])]),s("p",pt,w(o.meta.blurb),1)])]),o.meta.optional?(l(),T($,{key:0,modelValue:i.value.enabled,"onUpdate:modelValue":n[0]||(n[0]=b=>i.value.enabled=b),disabled:o.disabled&&!o.envManaged,"aria-label":o.meta.enableLabel},null,8,["modelValue","disabled","aria-label"])):x("",!0)]),!o.meta.optional||i.value.enabled?(l(),m(C,{key:0},[o.meta.reuseTargets.length?(l(),T(h,{key:0,label:"Provider source"},{default:c(()=>[r(y,{modelValue:a(A),"onUpdate:modelValue":n[1]||(n[1]=b=>W(A)?A.value=b:null),items:o.reuseOptions,disabled:o.disabled&&!o.envManaged,class:"w-full"},null,8,["modelValue","items","disabled"])]),_:1})):x("",!0),i.value.reuse?x("",!0):(l(),m(C,{key:1},[r(h,{label:"Provider"},{label:c(()=>[s("span",ft,[n[9]||(n[9]=I(" Provider ",-1)),o.disabled?(l(),T(g,{key:0,"env-vars":a(_)},null,8,["env-vars"])):x("",!0)])]),default:c(()=>[r(y,{modelValue:i.value.provider,"onUpdate:modelValue":n[2]||(n[2]=b=>i.value.provider=b),items:o.providerOptions,disabled:o.disabled,placeholder:"Choose a provider…",class:"w-full"},null,8,["modelValue","items","disabled"])]),_:1}),i.value.provider==="openai"?(l(),T(h,{key:0,label:"Preset",description:"Pick a known provider to auto-fill the URL and model, then adjust as needed"},{default:c(()=>[r(y,{items:o.presetOptions,placeholder:"Choose a preset…",disabled:o.disabled,class:"w-full","onUpdate:modelValue":n[3]||(n[3]=b=>v("applyPreset",b))},null,8,["items","disabled"])]),_:1})):x("",!0),i.value.provider?(l(),T(h,{key:1,label:"API key",description:o.hasApiKey?"Leave empty to keep the stored key, clear and save to remove it":"Required for Anthropic; optional for local OpenAI-compatible servers"},{label:c(()=>[s("span",vt,[n[10]||(n[10]=I(" API key ",-1)),o.disabled?(l(),T(g,{key:0,"env-vars":a(_)},null,8,["env-vars"])):x("",!0)])]),default:c(()=>[r(E,{modelValue:i.value.apiKey,"onUpdate:modelValue":n[4]||(n[4]=b=>i.value.apiKey=b),type:"password",placeholder:o.hasApiKey?"•••••••• (unchanged)":"sk-…",disabled:o.disabled,class:"w-full font-mono"},null,8,["modelValue","placeholder","disabled"])]),_:1},8,["description"])):x("",!0),i.value.provider==="openai"?(l(),T(h,{key:2,label:"Base URL",description:"Required, e.g. http://localhost:11434/v1"},{label:c(()=>[s("span",gt,[n[11]||(n[11]=I(" Base URL ",-1)),o.disabled?(l(),T(g,{key:0,"env-vars":a(_)},null,8,["env-vars"])):x("",!0)])]),default:c(()=>[r(E,{modelValue:i.value.baseUrl,"onUpdate:modelValue":n[5]||(n[5]=b=>i.value.baseUrl=b),placeholder:"http://localhost:11434/v1",disabled:o.disabled,class:"w-full"},null,8,["modelValue","disabled"])]),_:1})):x("",!0)],64)),i.value.reuse||i.value.provider?(l(),T(h,{key:2,label:"Model",description:i.value.reuse?"Leave empty to use the reused role's model":void 0},{default:c(()=>[r(O,{modelValue:i.value.model,"onUpdate:modelValue":n[6]||(n[6]=b=>i.value.model=b),provider:i.value.provider,"provider-resolved":o.providerResolved,reuse:!!i.value.reuse,models:o.models,"loading-models":o.loadingModels,"placeholder-anthropic":o.meta.modelPlaceholderAnthropic,"placeholder-openai":o.meta.modelPlaceholderOpenai,onLoadModels:n[7]||(n[7]=b=>v("loadModels"))},null,8,["modelValue","provider","provider-resolved","reuse","models","loading-models","placeholder-anthropic","placeholder-openai"])]),_:1},8,["description"])):x("",!0),o.providerResolved?(l(),m("div",yt,[r(f,{size:"xs",color:"neutral",variant:"soft",icon:"i-lucide-plug",loading:o.testing,onClick:n[8]||(n[8]=b=>v("test"))},{default:c(()=>[...n[12]||(n[12]=[I(" Test connection ",-1)])]),_:1},8,["loading"])])):x("",!0)],64)):x("",!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"},Et=H({__name:"AiUsagePanel",async setup(o){let M,U;const v=R(30),i=[{label:"Last 7 days",value:7},{label:"Last 30 days",value:30},{label:"Last 90 days",value:90}],{data:A,pending:_}=([M,U]=oe(()=>ae("/api/settings/ai/usage",{query:{days:v}},"$1ij5UlwVIK")),M=await M,U(),M);function d(n){return n>=1e6?`${(n/1e6).toFixed(1)}M`:n>=1e3?`${(n/1e3).toFixed(1)}k`:String(n)}return(n,k)=>{const V=fe,$=Ne,y=ne,h=ye;return l(),T(h,{icon:"i-lucide-activity",title:"AI usage"},{actions:c(()=>[r(V,{modelValue:a(v),"onUpdate:modelValue":k[0]||(k[0]=g=>W(v)?v.value=g:null),items:i,size:"sm",class:"w-36"},null,8,["modelValue"])]),default:c(()=>[a(A)?(l(),m("div",_t,[s("p",xt,w(d(a(A).totals.diagnoses))+" diagnoses · "+w(d(a(A).totals.inputTokens))+" input tokens · "+w(d(a(A).totals.outputTokens))+" output tokens ",1),a(A).byModel.length===0?(l(),m("p",kt,"No AI calls recorded in this period.")):(l(),m("div",At,[s("table",It,[k[1]||(k[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,[(l(!0),m(C,null,F(a(A).byModel,g=>(l(),m("tr",{key:`${g.provider??"unknown"}/${g.model}`,class:"border-b last:border-b-0 border-default"},[s("td",Mt,[s("span",St,w(g.model),1),s("span",Vt," · "+w(g.provider??"unknown"),1)]),s("td",wt,w(g.diagnoses),1),s("td",{class:ie(["text-right px-2 py-2",g.failed>0?"text-red-600 dark:text-red-400":""])},w(g.failed),3),s("td",{class:"text-right px-2 py-2",title:g.inputTokens.toLocaleString()},w(d(g.inputTokens)),9,Pt),s("td",{class:"text-right px-2 py-2",title:g.outputTokens.toLocaleString()},w(d(g.outputTokens)),9,Tt),s("td",Ut,[r($,{ms:g.avgDurationMs},null,8,["ms"])])]))),128))])])]))])):a(_)?(l(),m("div",Ct,[r(y,{name:"i-lucide-loader-circle",class:"size-4 animate-spin"}),k[2]||(k[2]=s("span",{class:"text-sm"},"Loading usage…",-1))])):x("",!0)]),_:1})}}}),Rt=Object.assign(Et,{__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"},Nt={class:"flex justify-end"},Dt={class:"grid grid-cols-1 sm:grid-cols-2 gap-x-4 gap-y-3"},Xt={class:"flex justify-end gap-2"},ps=H({__name:"ai",async setup(o){let M,U;const v=Oe(),{data:i,refresh:A}=([M,U]=oe(()=>ae("/api/settings/ai","$nV9xx-QVRl")),M=await M,U(),M);function _(){return{enabled:!1,reuse:null,provider:"",model:"",baseUrl:"",apiKey:""}}const d=z({diagnosis:_(),research:_(),embedding:_()}),n=R(!1),k=R(""),V=R(""),$=R(!1),y=R(!1),h=R(!1),g=z({diagnosis:!1,research:!1,embedding:!1}),E=z({diagnosis:[],research:[],embedding:[]}),O=z({diagnosis:!1,research:!1,embedding:!1});function f(t){const e=d[t];return e.reuse?d[e.reuse]?.provider||"":e.provider}async function b(t){const e=d[t],p=f(t),S=e.reuse?d[e.reuse]:e,ee=S.apiKey||void 0;O[t]=!0;try{const te=await $fetch("/api/settings/ai/models",{method:"POST",body:{role:t,provider:p,baseUrl:S.baseUrl||void 0,apiKey:ee}});E[t]=te.models}catch{E[t]=[]}finally{O[t]=!1}}const P=[{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=D(()=>{const t={};for(const e of P)t[e.key]=[{label:"Configure its own provider",value:"own"},...e.reuseTargets.filter(p=>d[p].enabled||p==="diagnosis").filter(p=>e.key!=="embedding"||d[p].provider==="openai").map(p=>({label:`Reuse ${P.find(S=>S.key===p).title.toLowerCase()}`,value:p}))];return t}),N=D(()=>!!i.value?.envManaged),_e=Xe(qe("ai"));se(i,t=>{if(t){for(const e of P){const p=t.roles[e.key],S=d[e.key];S.enabled=!!p,S.reuse=p?.reuse??null,S.provider=p?.provider??"",S.model=p?.model??"",S.baseUrl=p?.baseUrl??"",S.apiKey=""}n.value=t.autoDiagnose,k.value=t.customInstructions||""}},{immediate:!0});function xe(t){return!!i.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 p=ce.find(S=>S.label===e);!p||p.label==="Custom"||(d[t].baseUrl=p.baseUrl,d[t].model=p.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 p={provider:e.provider,model:e.model||void 0,baseUrl:e.baseUrl||void 0};return e.apiKey!==""&&(p.apiKey=e.apiKey),p}async function Ie(){$.value=!0;try{!N&&(!d.diagnosis.enabled||!d.diagnosis.provider)?await $fetch("/api/settings/ai",{method:"PUT",body:{roles:null,autoDiagnose:n.value}}):await $fetch("/api/settings/ai",{method:"PUT",body:{roles:{diagnosis:Q("diagnosis"),research:Q("research"),embedding:Q("embedding")},autoDiagnose:n.value}}),await A();for(const t of P)d[t.key].apiKey="";v.add({title:"Settings saved",color:"success"})}catch(t){v.add({title:"Save failed",description:String(t?.message??t),color:"error"})}finally{$.value=!1}}async function Me(){h.value=!0;try{await $fetch("/api/settings/ai",{method:"PUT",body:{scmToken:V.value||null}}),await A(),V.value="",v.add({title:"SCM token saved",color:"success"})}catch(t){v.add({title:"Save failed",description:String(t?.message??t),color:"error"})}finally{h.value=!1}}async function Se(){y.value=!0;try{await $fetch("/api/settings/ai",{method:"PUT",body:{customInstructions:k.value||null}}),await A(),v.add({title:"Instructions saved",color:"success"})}catch(t){v.add({title:"Save failed",description:String(t?.message??t),color:"error"})}finally{y.value=!1}}async function Ve(t){g[t]=!0;try{const e=d[t],p=e.reuse?d[e.reuse]:e,S=await $fetch("/api/settings/ai/test",{method:"POST",body:{role:t,provider:p.provider||void 0,apiKey:p.apiKey||void 0,model:e.model||(e.reuse?p.model:"")||void 0,baseUrl:p.baseUrl||void 0}});S.success?v.add({title:"Connection successful",description:`Model: ${S.model}`,color:"success"}):v.add({title:"Connection failed",description:S.error||"Unknown error",color:"error"})}catch(e){v.add({title:"Connection failed",description:String(e?.message??e),color:"error"})}finally{g[t]=!1}}const{data:L}=([M,U]=oe(()=>ae("/api/settings/ai/limits","$cSpsteApgW")),M=await M,U(),M),Y=$t,q=z({}),Z=R(!1),J=D(()=>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}}),v.add({title:"Context limits saved",color:"success"})}catch(t){v.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 p=Ee,S=bt,ee=pe,te=Re,K=re,j=ye,Te=Rt,ue=G,me=ve,Ue=De,Ce=ge;return l(),m("div",Ot,[a(N)?(l(),T(p,{key:0,"env-vars":a(_e)},null,8,["env-vars"])):x("",!0),r(j,{icon:"i-lucide-sparkles",title:"Model providers",help:"settings.ai-provider"},{subtitle:c(()=>[...e[3]||(e[3]=[I(" 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:c(()=>[s("div",Ft,[r(K,{color:"primary",loading:a($),icon:"i-lucide-save",onClick:Ie},{default:c(()=>[...e[5]||(e[5]=[I(" Save ",-1)])]),_:1},8,["loading"])])]),default:c(()=>[s("div",Lt,[(l(),m(C,null,F(P,u=>r(S,{key:u.key,modelValue:a(d)[u.key],"onUpdate:modelValue":B=>a(d)[u.key]=B,meta:u,"has-api-key":xe(u.key),"reuse-options":a(be)[u.key],"provider-options":u.key==="embedding"?a(he):de,"preset-options":a(ke),disabled:a(N),"env-managed":a(N),"provider-resolved":f(u.key),models:a(E)[u.key],"loading-models":a(O)[u.key],testing:a(g)[u.key],onApplyPreset:B=>Ae(u.key,B),onLoadModels:B=>b(u.key),onTest:B=>Ve(u.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)),r(te,{label:"Auto-diagnose",help:"settings.auto-diagnose","env-managed":a(N)},{default:c(()=>[s("div",Bt,[r(ee,{modelValue:a(n),"onUpdate:modelValue":e[0]||(e[0]=u=>W(n)?n.value=u:null),disabled:a(N)||!a(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}),r(Te),r(j,{title:"Repository access",help:"project.scm-token"},{subtitle:c(()=>[...e[6]||(e[6]=[I(" Optional — required for private repositories. Per-project tokens override this. ",-1)])]),footer:c(()=>[s("div",Wt,[r(K,{color:"primary",loading:a(h),icon:"i-lucide-save",onClick:Me},{default:c(()=>[...e[7]||(e[7]=[I(" Save token ",-1)])]),_:1},8,["loading"])])]),default:c(()=>[r(me,{label:"SCM token",description:a(i)?.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:c(()=>[r(ue,{modelValue:a(V),"onUpdate:modelValue":e[1]||(e[1]=u=>W(V)?V.value=u:null),type:"password",placeholder:a(i)?.hasScmToken?"•••••••• (unchanged)":"ghp_..., glpat-..., or Bitbucket token",class:"w-full font-mono"},null,8,["modelValue","placeholder"])]),_:1},8,["description"])]),_:1}),r(j,{title:"Global analysis instructions",help:"settings.ai-instructions"},{footer:c(()=>[s("div",Nt,[r(K,{color:"primary",loading:a(y),icon:"i-lucide-save",onClick:Se},{default:c(()=>[...e[8]||(e[8]=[I(" Save instructions ",-1)])]),_:1},8,["loading"])])]),default:c(()=>[r(Ue,{modelValue:a(k),"onUpdate:modelValue":e[2]||(e[2]=u=>W(k)?k.value=u: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}),r(j,{title:"Diagnosis context limits",help:"settings.ai-limits"},{subtitle:c(()=>[...e[10]||(e[10]=[I(" Leave a field empty to use its default; env-managed fields are read-only. ",-1)])]),footer:c(()=>[s("div",Xt,[r(K,{color:"neutral",variant:"ghost",size:"sm",onClick:Pe},{default:c(()=>[...e[11]||(e[11]=[I("Reset to defaults",-1)])]),_:1}),r(K,{color:"primary",loading:a(Z),icon:"i-lucide-save",size:"sm",onClick:we},{default:c(()=>[...e[12]||(e[12]=[I(" Save limits ",-1)])]),_:1},8,["loading"])])]),default:c(()=>[s("div",Dt,[(l(!0),m(C,null,F(a(Y),u=>(l(),T(me,{key:u.key,label:u.label,description:u.description,hint:`default ${a(L)?.defaults[u.key]??""}`},{default:c(()=>[r(ue,{modelValue:a(q)[u.key],"onUpdate:modelValue":B=>a(q)[u.key]=B,modelModifiers:{number:!0},type:"number",min:u.min,max:u.max,disabled:a(J).has(u.key),placeholder:`default ${a(L)?.defaults[u.key]??""}`,class:"w-full"},Le({_:2},[a(J).has(u.key)?{name:"trailing",fn:c(()=>[r(Ce,{"env-vars":[u.envVar]},null,8,["env-vars"])]),key:"0"}:void 0]),1032,["modelValue","onUpdate:modelValue","min","max","disabled","placeholder"])]),_:2},1032,["label","description","hint"]))),128))])]),_:1}),r(j,{icon:"i-lucide-shield-check",title:"Privacy notice",help:"settings.privacy"},{default:c(()=>[...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"},[I(" 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_*"),I(" environment variables instead of the UI. ")])],-1)])]),_:1})])}}});export{ps as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{$ as G,d as K,U as L,Z as J,ar as D,o as i,c as B,f,g as v,V as C,k as e,W as _,S as Q,C as Y,ag as T,X as $,v as x,F as ee,h as m,a$ as E,aM as P,j as R,aC as ae,a2 as re,a3 as te,a5 as se,a6 as le,a7 as ie,aN as oe,aO as ne,i as de,q as c,p as j,m as N,t as M,a8 as ue}from"./NQikbhmK.js";import{i as O}from"./DEFEpYzn.js";import{u as ce}from"./g26aVPxc.js";import{u as pe}from"./CNFYDQmj.js";import{V as fe}from"./BYDaY0Z7.js";import{R as ve}from"./IvQlbZk6.js";import{L as U}from"./CYsTqbBS.js";const[be]=G("CheckboxGroupRoot");function A(o){return o==="indeterminate"}function H(o){return A(o)?"indeterminate":o?"checked":"unchecked"}const[me,he]=G("CheckboxRoot");var ge=K({inheritAttrs:!1,__name:"CheckboxRoot",props:{defaultValue:{type:null,required:!1},modelValue:{type:null,required:!1,default:void 0},disabled:{type:Boolean,required:!1},value:{type:null,required:!1,default:"on"},id:{type:String,required:!1},trueValue:{type:null,required:!1,default:()=>!0},falseValue:{type:null,required:!1,default:()=>!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"button"},name:{type:String,required:!1},required:{type:Boolean,required:!1}},emits:["update:modelValue"],setup(o,{emit:h}){const r=o,l=h,{forwardRef:g,currentElement:a}=L(),s=be(null),d=J(r,"modelValue",l,{defaultValue:r.defaultValue??r.falseValue,passive:r.modelValue===void 0}),p=m(()=>s?.disabled.value||r.disabled),q=m(()=>P(d.value,r.trueValue)),u=m(()=>E(s?.modelValue.value)?d.value==="indeterminate"?"indeterminate":q.value:O(s.modelValue.value,r.value));function z(){if(E(s?.modelValue.value))d.value==="indeterminate"?d.value=r.trueValue:d.value=q.value?r.falseValue:r.trueValue;else{const t=[...s.modelValue.value||[]];if(O(t,r.value)){const y=t.findIndex(I=>P(I,r.value));t.splice(y,1)}else t.push(r.value);s.modelValue.value=t}}const F=ce(a),k=pe(),S=D(),V=m(()=>{if(!S["aria-label"])return r.id&&a.value?document.querySelector(`[for="${r.id}"]`)?.innerText:void 0});return he({disabled:p,state:u}),(t,y)=>(i(),B(ee,null,[(i(),f(T(e(s)?.rovingFocus.value?e(ve):e($)),_({...t.$attrs,...e(k)},{id:t.id,ref:e(g),role:"checkbox","as-child":t.asChild,as:t.as,type:t.as==="button"?"button":void 0,"aria-checked":e(A)(u.value)?"mixed":u.value,"aria-required":t.required,"aria-label":t.$attrs["aria-label"]||V.value,"data-state":e(H)(u.value),"data-disabled":p.value?"":void 0,disabled:p.value,focusable:e(s)?.rovingFocus.value?!p.value:void 0,onKeydown:Q(Y(()=>{},["prevent"]),["enter"]),onClick:z}),{default:v(()=>[C(t.$slots,"default",{modelValue:e(d),state:u.value})]),_:3},16,["id","as-child","as","type","aria-checked","aria-required","aria-label","data-state","data-disabled","disabled","focusable","onKeydown"])),e(F)&&t.name&&!e(s)?(i(),f(e(fe),_({key:0,type:"checkbox",checked:!!u.value,name:t.name,value:t.value,disabled:p.value,required:t.required},e(k)),null,16,["checked","name","value","disabled","required"])):x("v-if",!0)],64))}}),ye=ge,qe=K({__name:"CheckboxIndicator",props:{forceMount:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"span"}},setup(o){const{forwardRef:h}=L(),r=me();return(l,g)=>(i(),f(e(ae),{present:l.forceMount||e(A)(e(r).state.value)||e(r).state.value===!0},{default:v(()=>[R(e($),_({ref:e(h),"data-state":e(H)(e(r).state.value),"data-disabled":e(r).disabled.value?"":void 0,style:{pointerEvents:"none"},"as-child":l.asChild,as:l.as},l.$attrs),{default:v(()=>[C(l.$slots,"default")]),_:3},16,["data-state","data-disabled","as-child","as"])]),_:3},8,["present"]))}}),ke=qe;const Ve={slots:{root:"relative flex items-start",container:"flex items-center",base:"rounded-sm ring ring-inset ring-accented overflow-hidden focus-visible:outline-3",indicator:"flex items-center justify-center size-full text-inverted",icon:"shrink-0 size-full",wrapper:"w-full",label:"block font-medium text-default",description:"text-muted"},variants:{color:{primary:{base:"outline-primary/25 focus-visible:ring-primary",indicator:"bg-primary"},secondary:{base:"outline-secondary/25 focus-visible:ring-secondary",indicator:"bg-secondary"},success:{base:"outline-success/25 focus-visible:ring-success",indicator:"bg-success"},info:{base:"outline-info/25 focus-visible:ring-info",indicator:"bg-info"},warning:{base:"outline-warning/25 focus-visible:ring-warning",indicator:"bg-warning"},error:{base:"outline-error/25 focus-visible:ring-error",indicator:"bg-error"},neutral:{base:"outline-inverted/25 focus-visible:ring-inverted",indicator:"bg-inverted"}},variant:{list:{root:""},card:{root:"border border-muted rounded-lg"}},indicator:{start:{root:"flex-row",wrapper:"ms-2"},end:{root:"flex-row-reverse",wrapper:"me-2"},hidden:{base:"sr-only",wrapper:"text-center"}},size:{xs:{base:"size-3",container:"h-4",wrapper:"text-xs"},sm:{base:"size-3.5",container:"h-4",wrapper:"text-xs"},md:{base:"size-4",container:"h-5",wrapper:"text-sm"},lg:{base:"size-4.5",container:"h-5",wrapper:"text-sm"},xl:{base:"size-5",container:"h-6",wrapper:"text-base"}},required:{true:{label:"after:content-['*'] after:ms-0.5 after:text-error"}},disabled:{true:{root:"opacity-75",base:"cursor-not-allowed",label:"cursor-not-allowed",description:"cursor-not-allowed"}},highlight:{true:""},checked:{true:""}},compoundVariants:[{size:"xs",variant:"card",class:{root:"p-2.5"}},{size:"sm",variant:"card",class:{root:"p-3"}},{size:"md",variant:"card",class:{root:"p-3.5"}},{size:"lg",variant:"card",class:{root:"p-4"}},{size:"xl",variant:"card",class:{root:"p-4.5"}},{color:"primary",variant:"card",class:{root:"has-data-[state=checked]:border-primary"}},{color:"secondary",variant:"card",class:{root:"has-data-[state=checked]:border-secondary"}},{color:"success",variant:"card",class:{root:"has-data-[state=checked]:border-success"}},{color:"info",variant:"card",class:{root:"has-data-[state=checked]:border-info"}},{color:"warning",variant:"card",class:{root:"has-data-[state=checked]:border-warning"}},{color:"error",variant:"card",class:{root:"has-data-[state=checked]:border-error"}},{color:"neutral",variant:"card",class:{root:"has-data-[state=checked]:border-inverted"}},{variant:"card",disabled:!0,class:{root:"cursor-not-allowed"}},{color:"primary",highlight:!0,class:{base:"ring-primary"}},{color:"secondary",highlight:!0,class:{base:"ring-secondary"}},{color:"success",highlight:!0,class:{base:"ring-success"}},{color:"info",highlight:!0,class:{base:"ring-info"}},{color:"warning",highlight:!0,class:{base:"ring-warning"}},{color:"error",highlight:!0,class:{base:"ring-error"}},{color:"neutral",highlight:!0,class:{base:"ring-inverted"}}],defaultVariants:{size:"md",color:"primary",variant:"list",indicator:"start"}},Ie=Object.assign({inheritAttrs:!1},{__name:"UCheckbox",props:{as:{type:null,required:!1},label:{type:String,required:!1},description:{type:String,required:!1},color:{type:null,required:!1},variant:{type:null,required:!1},size:{type:null,required:!1},indicator:{type:null,required:!1},highlight:{type:Boolean,required:!1},icon:{type:null,required:!1},indeterminateIcon:{type:null,required:!1},class:{type:null,required:!1},ui:{type:Object,required:!1},disabled:{type:Boolean,required:!1},required:{type:Boolean,required:!1},name:{type:String,required:!1},value:{type:null,required:!1},id:{type:String,required:!1},defaultValue:{type:null,required:!1},modelValue:{type:null,required:!1},trueValue:{type:null,required:!1},falseValue:{type:null,required:!1}},emits:["change","update:modelValue"],setup(o,{emit:h}){const r=o,l=re(),g=h,a=te("checkbox",r),s=se(),d=le(ie(a,"required","value","defaultValue","modelValue","trueValue","falseValue"),g),{id:p,emitFormChange:q,emitFormInput:u,size:z,color:F,highlight:k,name:S,disabled:V,ariaAttrs:t}=oe(r),y=p.value??ne(),I=D(),W=m(()=>{const{"data-state":b,...w}=I;return w}),n=m(()=>ue({extend:Ve,...s.ui?.checkbox||{}})({size:z.value??a.size,color:F.value??a.color,variant:a.variant,indicator:a.indicator,highlight:k.value??a.highlight,required:a.required,disabled:V.value}));function X(b){const w=new Event("change",{target:{value:b}});g("change",w),q(),u()}return(b,w)=>(i(),f(e($),{as:!e(a).variant||e(a).variant==="list"?e(a).as:e(U),"data-slot":b.$attrs["data-slot"]??"root",class:c(n.value.root({class:[e(a).ui?.root,e(a).class]}))},{default:v(()=>[de("div",{"data-slot":"container",class:c(n.value.container({class:e(a).ui?.container}))},[R(e(ye),_({id:e(y)},{...e(d),...W.value,...e(t)},{name:e(S),disabled:e(V),"data-slot":"base",class:n.value.base({class:e(a).ui?.base}),"onUpdate:modelValue":X}),{default:v(({state:Z})=>[R(e(ke),{"data-slot":"indicator",class:c(n.value.indicator({class:e(a).ui?.indicator}))},{default:v(()=>[Z==="indeterminate"?(i(),f(j,{key:0,name:e(a).indeterminateIcon||e(s).ui.icons.minus,"data-slot":"icon",class:c(n.value.icon({class:e(a).ui?.icon}))},null,8,["name","class"])):(i(),f(j,{key:1,name:e(a).icon||e(s).ui.icons.check,"data-slot":"icon",class:c(n.value.icon({class:e(a).ui?.icon}))},null,8,["name","class"]))]),_:2},1032,["class"])]),_:1},16,["id","name","disabled","class"])],2),e(a).label||l.label||e(a).description||l.description?(i(),B("div",{key:0,"data-slot":"wrapper",class:c(n.value.wrapper({class:e(a).ui?.wrapper}))},[e(a).label||l.label?(i(),f(T(!e(a).variant||e(a).variant==="list"?e(U):"p"),{key:0,for:e(y),"data-slot":"label",class:c(n.value.label({class:e(a).ui?.label}))},{default:v(()=>[C(b.$slots,"label",{label:e(a).label},()=>[N(M(e(a).label),1)])]),_:3},8,["for","class"])):x("",!0),e(a).description||l.description?(i(),B("p",{key:1,"data-slot":"description",class:c(n.value.description({class:e(a).ui?.description}))},[C(b.$slots,"description",{description:e(a).description},()=>[N(M(e(a).description),1)])],2)):x("",!0)],2)):x("",!0)]),_:3},8,["as","data-slot","class"]))}});export{Ie as _};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{d as m,k as r,o as c,f as _,g,j as b,p as w,Q as v,q as x,c as $,h as t}from"./NQikbhmK.js";import{_ as C}from"./DP8hfJ9h.js";import{C as S,D as k}from"./CDk0q2hV.js";const z={key:1,class:"text-xs text-gray-400 dark:text-gray-500 italic"},B=m({__name:"BrowserBadge",props:{browser:{},size:{}},setup(a){const n=a,s=t(()=>n.browser?.projectName??null),l=t(()=>S(s.value)),p=t(()=>k(s.value)),u=t(()=>n.size==="sm"?"size-3.5":n.size==="lg"?"size-5":"size-4"),i=t(()=>{const e=n.browser;if(!e)return[];const o=[];return e.browserName&&e.browserName!==s.value&&o.push(`Browser: ${e.browserName}`),e.channel&&o.push(`Channel: ${e.channel}`),e.viewport&&o.push(`Viewport: ${e.viewport.width}×${e.viewport.height}`),e.deviceScaleFactor&&e.deviceScaleFactor!==1&&o.push(`Scale: ${e.deviceScaleFactor}x`),e.isMobile&&o.push("Mobile"),e.hasTouch&&!e.isMobile&&o.push("Touch"),e.locale&&o.push(`Locale: ${e.locale}`),e.timezoneId&&o.push(`TZ: ${e.timezoneId}`),e.colorScheme&&e.colorScheme!=="light"&&o.push(`Color: ${e.colorScheme}`),e.reducedMotion&&e.reducedMotion!=="no-preference"&&o.push(`Motion: ${e.reducedMotion}`),e.forcedColors&&e.forcedColors!=="none"&&o.push("Colors: forced"),e.offline&&o.push("Offline"),e.bypassCSP&&o.push("CSP bypassed"),e.javaScriptEnabled===!1&&o.push("JS disabled"),e.serviceWorkers==="block"&&o.push("SW blocked"),e.geolocation&&o.push(`Geo: ${e.geolocation.latitude.toFixed(2)},${e.geolocation.longitude.toFixed(2)}`),e.userAgent&&o.push(`UA: ${e.userAgent.length>60?e.userAgent.slice(0,60)+"…":e.userAgent}`),o}),h=t(()=>s.value?i.value.length?`${s.value} · ${i.value.join(" · ")}`:s.value:"");return(e,o)=>{const f=w,d=C;return r(s)?(c(),_(d,{key:0,text:r(h),popper:{placement:"top"}},{default:g(()=>[b(f,{name:r(l),class:x(["shrink-0 cursor-help",r(u)]),style:v({color:r(p)})},null,8,["name","class","style"])]),_:1},8,["text"])):(c(),$("span",z,"—"))}}}),A=Object.assign(B,{__name:"BrowserBadge"});export{A as _};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{d as S,o as v,c as h,k as t,F as J,i as x,q as B,V as K,m as l,t as L,j as n,p as A,f as U,g as a,_ as q,v as F,l as M,h as y,r as _,K as R,J as T}from"./NQikbhmK.js";import{_ as H}from"./B44A4LSJ.js";import{u as G}from"./CylWPruw.js";import{u as Q}from"./Bn0YQDyy.js";function W(i){let o=i,u=null,j=null;const k=i.lastIndexOf(":");if(k>0){const m=i.slice(k+1);if(/^\d+$/.test(m)){const c=i.slice(0,k),b=c.lastIndexOf(":");if(b>0){const g=c.slice(b+1);/^\d+$/.test(g)?(j=parseInt(m,10),u=parseInt(g,10),o=c.slice(0,b)):(u=parseInt(m,10),o=c)}else u=parseInt(m,10),o=c}}return{filePath:o,line:u,column:j}}const X={class:"group/ide inline-flex items-center gap-1 min-w-0 max-w-full align-middle"},Y=["title","aria-label"],Z={type:"button",class:"shrink-0 inline-flex items-center rounded p-0.5 text-muted cursor-pointer transition-colors hover:bg-elevated/60 hover:text-default","aria-label":"Choose how to open in IDE",title:"Choose how to open"},ee={class:"w-56 p-1 space-y-0.5"},te=S({__name:"OpenInIdeLink",props:{filePath:{},line:{default:null},column:{default:null},location:{},projectKey:{},projectName:{},mono:{type:Boolean,default:!0}},setup(i){const o=i,{openInIde:u,openInVscode:j,openViaJetbrainsUrl:k,openViaJetbrainsHttp:m,resolveAbsPath:c,openSettings:b}=G(),{copy:g}=Q(),P=y(()=>o.filePath?{filePath:o.filePath,line:o.line??null,column:o.column??null}:o.location?W(o.location):{filePath:"",line:null,column:null}),f=y(()=>P.value.filePath),w=y(()=>P.value.line),I=y(()=>w.value?`${f.value}:${w.value}`:f.value),O=y(()=>c(f.value,o.projectKey)),r=y(()=>({filePath:f.value,line:w.value,column:P.value.column,projectKey:o.projectKey??null,projectName:o.projectName??null})),C=_(!1),N=_(!1);function D(){N.value=!0,R(()=>{C.value=!0})}function p($){C.value=!1,$()}return($,e)=>{const z=A,d=q,V=H,E=T;return v(),h("span",X,[t(f)?(v(),h(J,{key:0},[x("button",{type:"button",class:"inline-flex items-center gap-1 min-w-0 max-w-full cursor-pointer text-left",title:`Open ${t(I)} in IDE`,"aria-label":`Open ${t(I)} in IDE`,onClick:e[0]||(e[0]=s=>t(u)(t(r)))},[x("span",{class:B([i.mono?"font-mono":"","truncate underline decoration-dashed decoration-1 underline-offset-2 decoration-gray-400/70 dark:decoration-gray-500/70 transition-colors group-hover/ide:decoration-current"])},[K($.$slots,"default",{},()=>[l(L(t(I)),1)])],2),n(z,{name:"i-lucide-external-link",class:"size-3 shrink-0 opacity-0 transition-opacity group-hover/ide:opacity-100"})],8,Y),t(N)?(v(),U(E,{key:1,open:t(C),"onUpdate:open":e[8]||(e[8]=s=>M(C)?C.value=s:null)},{content:a(()=>[x("div",ee,[e[16]||(e[16]=x("p",{class:"text-xs font-medium text-muted px-2 pt-1 pb-1"},"Open in IDE",-1)),n(d,{block:"",size:"sm",color:"neutral",variant:"ghost",class:"justify-start",icon:"i-lucide-wand-sparkles",onClick:e[1]||(e[1]=s=>p(()=>t(u)({...t(r),method:"auto"})))},{default:a(()=>[...e[9]||(e[9]=[l(" Auto (try all) ",-1)])]),_:1}),n(d,{block:"",size:"sm",color:"neutral",variant:"ghost",class:"justify-start",icon:"i-lucide-code",onClick:e[2]||(e[2]=s=>p(()=>t(j)(t(r))))},{default:a(()=>[...e[10]||(e[10]=[l(" Open in VS Code ",-1)])]),_:1}),n(d,{block:"",size:"sm",color:"neutral",variant:"ghost",class:"justify-start",icon:"i-lucide-square-code",onClick:e[3]||(e[3]=s=>p(()=>t(k)(t(r))))},{default:a(()=>[...e[11]||(e[11]=[l(" JetBrains (URL) ",-1)])]),_:1}),n(d,{block:"",size:"sm",color:"neutral",variant:"ghost",class:"justify-start",icon:"i-lucide-server",onClick:e[4]||(e[4]=s=>p(()=>t(m)(t(r))))},{default:a(()=>[...e[12]||(e[12]=[l(" JetBrains (local server) ",-1)])]),_:1}),n(V,{class:"my-1"}),n(d,{block:"",size:"sm",color:"neutral",variant:"ghost",class:"justify-start",icon:"i-lucide-clipboard",onClick:e[5]||(e[5]=s=>p(()=>t(g)(t(f),{toast:"Path copied"})))},{default:a(()=>[...e[13]||(e[13]=[l(" Copy path ",-1)])]),_:1}),t(O)?(v(),U(d,{key:0,block:"",size:"sm",color:"neutral",variant:"ghost",class:"justify-start",icon:"i-lucide-clipboard-check",onClick:e[6]||(e[6]=s=>p(()=>t(g)(t(O),{toast:"Absolute path copied"})))},{default:a(()=>[...e[14]||(e[14]=[l(" Copy absolute path ",-1)])]),_:1})):F("",!0),n(V,{class:"my-1"}),n(d,{block:"",size:"sm",color:"neutral",variant:"ghost",class:"justify-start",icon:"i-lucide-settings",onClick:e[7]||(e[7]=s=>p(()=>t(b)({projectKey:t(r).projectKey?String(t(r).projectKey):null,projectName:t(r).projectName})))},{default:a(()=>[...e[15]||(e[15]=[l(" Configure… ",-1)])]),_:1})])]),default:a(()=>[x("button",Z,[n(z,{name:"i-lucide-chevron-down",class:"size-3.5"})])]),_:1},8,["open"])):(v(),h("button",{key:0,type:"button",class:"shrink-0 inline-flex items-center rounded p-0.5 text-muted cursor-pointer transition-opacity hover:bg-elevated/60 hover:text-default opacity-100 sm:opacity-0 sm:group-hover/ide:opacity-100 focus-visible:opacity-100","aria-label":"Choose how to open in IDE",title:"Choose how to open",onClick:D},[n(z,{name:"i-lucide-chevron-down",class:"size-3.5"})]))],64)):(v(),h("span",{key:1,class:B([i.mono?"font-mono":"","truncate"])},[K($.$slots,"default",{},()=>[l(L(t(I)),1)])],2))])}}}),ae=Object.assign(te,{__name:"OpenInIdeLink"});export{ae as _};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{_ as f}from"./DP8hfJ9h.js";import{d as y,o as s,f as b,g as d,c as o,F as r,y as u,k as p,Q as h,q as m,i as n,t as l,h as x}from"./NQikbhmK.js";const w={key:0,class:"flex h-2.5 w-full min-w-30 overflow-hidden rounded-full bg-zinc-200 dark:bg-zinc-700"},g={key:1,class:"text-xs text-zinc-400 dark:text-zinc-500 italic"},v={class:"min-w-52 space-y-1.5 rounded-md bg-zinc-900 px-3 py-2 text-sm shadow-lg"},z={class:"font-semibold text-white"},B={class:"text-white"},C={class:"ml-4 tabular-nums font-medium text-white"},F={class:"ml-auto tabular-nums text-zinc-300 text-xs"},N=y({__name:"TestStatusBar",props:{passed:{},failed:{},skipped:{},flaky:{},total:{},didNotRun:{}},setup(i){const t=i,c=x(()=>t.total?[{key:"passed",label:"Passed",count:t.passed-t.flaky,color:"bg-emerald-500"},{key:"failed",label:"Failed",count:t.failed,color:"bg-rose-500"},{key:"flaky",label:"Flaky",count:t.flaky,color:"bg-purple-500"},{key:"skipped",label:"Skipped",count:t.skipped,color:"bg-zinc-400"},{key:"didNotRun",label:"Didn't run",count:t.didNotRun??0,color:"bg-amber-300 dark:bg-amber-700"}].filter(a=>a.count>0).map(a=>({...a,widthPct:a.count/t.total*100,displayPct:(a.count/t.total*100).toFixed(1)})):[]);return(k,a)=>{const _=f;return s(),b(_,{ui:{content:"overflow-visible !p-0"}},{content:d(()=>[n("div",v,[n("div",z,l(i.total)+" tests total",1),(s(!0),o(r,null,u(p(c),e=>(s(),o("div",{key:e.key,class:"flex items-center gap-2 whitespace-nowrap"},[n("span",{class:m([e.color,"inline-block h-2.5 w-2.5 shrink-0 rounded-sm"])},null,2),n("span",B,l(e.label),1),n("span",C,l(e.count),1),n("span",F,l(e.displayPct)+"%",1)]))),128))])]),default:d(()=>[i.total>0?(s(),o("div",w,[(s(!0),o(r,null,u(p(c),e=>(s(),o("div",{key:e.key,class:m([e.color,"h-full transition-all"]),style:h({width:e.widthPct+"%"})},null,6))),128))])):(s(),o("div",g,"No tests"))]),_:1})}}}),R=Object.assign(N,{__name:"TestStatusBar"});export{R as _};
|