@runeya/runeya 2.0.126 → 2.0.128
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/agent/index.js +7 -0
- package/agent/index.js.map +1 -1
- package/agent-manager-VFUO7WQG.js +10 -0
- package/{chat-ODBVFMKX.js → chat-GB2UJ5KB.js} +7 -7
- package/{chunk-HK5QNU6P.js → chunk-BDQOBEZ3.js} +18 -2
- package/chunk-BDQOBEZ3.js.map +1 -0
- package/{chunk-TTPL2M74.js → chunk-DTWP3CFL.js} +8 -1
- package/chunk-DTWP3CFL.js.map +1 -0
- package/{chunk-K7A3Q62R.js → chunk-KNAM5H2Z.js} +3 -3
- package/{chunk-WLZQDWJT.js → chunk-KQ462M3Y.js} +6 -5
- package/chunk-KQ462M3Y.js.map +1 -0
- package/{chunk-SG2ACPOE.js → chunk-X2PJIJU7.js} +7 -7
- package/{chunk-2EDVDRKV.js → chunk-ZGEV53KH.js} +17 -16
- package/chunk-ZGEV53KH.js.map +1 -0
- package/{companion-5DPH3HIO.js → companion-XBCHHK4Z.js} +5 -5
- package/{desktop-launcher-J2BCSSGZ.js → desktop-launcher-SLNYXW22.js} +2 -2
- package/index.js +4 -4
- package/mcp-server/index.js +7 -0
- package/mcp-server/index.js.map +1 -1
- package/package.json +1 -1
- package/settings-manager-YGIIRWVY.js +10 -0
- package/{src-XCI5NILM.js → src-WK5KI3IO.js} +30 -29
- package/src-WK5KI3IO.js.map +1 -0
- package/web/assets/AgentScalarChatInterface.vue-B0YVVvvN.js +13 -0
- package/web/assets/AgentTerminalPage-25hg27t9.js +1 -0
- package/web/assets/AiChatPage-C34J4RQh.js +1 -0
- package/web/assets/AppLayout-Cq7es4tN.js +1 -0
- package/web/assets/{AppLayout-Do2CLgOr.css → AppLayout-lOwRflWA.css} +1 -1
- package/web/assets/AuditPage-Ctf0zyMz.js +1 -0
- package/web/assets/CloudAccountPage-CH5UJiew.js +1 -0
- package/web/assets/CloudAccountPage-DUCeHm0n.js +1 -0
- package/web/assets/CloudMessagingPage-iGdZy0rP.js +2 -0
- package/web/assets/DashboardPage-DCMfg5Vz.js +164 -0
- package/web/assets/{DashboardPage-DWA-1xgl.css → DashboardPage-DRZGWuU1.css} +1 -1
- package/web/assets/DirectoryPickerDialog-BlFmkPJx.js +1 -0
- package/web/assets/DirectoryPickerDialog-Ctp1lYoS.css +1 -0
- package/web/assets/{EditorIcon-lzF8hPtZ.js → EditorIcon-BvkHge0W.js} +2 -2
- package/web/assets/{EnvironmentForm-DVWdFsE1.js → EnvironmentForm-DtgwWpcp.js} +2 -2
- package/web/assets/EnvironmentFormPage-Y33vtDkS.js +1 -0
- package/web/assets/EnvironmentListPage-Dwv_amSf.js +1 -0
- package/web/assets/KanbanBoardPage-BYIWTYy2.js +4 -0
- package/web/assets/KanbanListPage-C_zN70Af.css +1 -0
- package/web/assets/KanbanListPage-CtnTArkW.js +1 -0
- package/web/assets/LaunchProjectPage-BGtCnkQf.js +1 -0
- package/web/assets/LaunchProjectPage-CHeYx5v0.css +1 -0
- package/web/assets/LaunchServicesPage-QDcpXeHP.js +1 -0
- package/web/assets/LogViewer-5fy2mcac.js +3 -0
- package/web/assets/OrgKeyPrompt-CRf1ZPik.js +1 -0
- package/web/assets/OrgKeyPrompt-CrHXZdKL.css +1 -0
- package/web/assets/OrgLogo-D9q7M1ZF.js +1 -0
- package/web/assets/{ProcessControls-DkaiMo0H.js → ProcessControls-B5dlAAdP.js} +1 -1
- package/web/assets/ProcessDetailPage-TwjrHkz3.js +1 -0
- package/web/assets/{ProcessMetrics-D2lP9cEF.js → ProcessMetrics-UeyyEwTI.js} +2 -2
- package/web/assets/RandomJobTestPage-DcIJekvc.js +2 -0
- package/web/assets/ScenarioEditorPage-midPg1W3.js +14 -0
- package/web/assets/SendToChatDialog-DakT4QK8.js +1 -0
- package/web/assets/ServiceControlsBar-HsErHmCH.js +1 -0
- package/web/assets/ServiceDetailPage-FJBxkdMy.js +2 -0
- package/web/assets/ServiceFormPage-DHjdAmr3.js +1 -0
- package/web/assets/SettingsPage-CONd8aJV.js +2063 -0
- package/web/assets/UnlockPage-CyZyhxYj.js +1 -0
- package/web/assets/VaultMigrationPage-B2WI7Dzf.js +1 -0
- package/web/assets/VersionBadge-D3kiloE4.js +1 -0
- package/web/assets/WikiPage-DE2tV5jr.js +1 -0
- package/web/assets/WikiView-DnWD_aWz.js +1 -0
- package/web/assets/{add-scalar-classes-C1s53GSo.js → add-scalar-classes-BBBoFX1O.js} +28 -28
- package/web/assets/{autocomplete-qVwP27uM.js → autocomplete-CR_eCGsI.js} +3 -3
- package/web/assets/{basic-shape-diamond.svg-BwZ1Enqo.js → basic-shape-diamond.svg-DRRq7MrY.js} +1 -1
- package/web/assets/{basic-shape-hexagon.svg-Cyko19l-.js → basic-shape-hexagon.svg-CGSaE9pB.js} +1 -1
- package/web/assets/{basic-shape-primary-circle-ellipse-round.svg-CWaxr-XS.js → basic-shape-primary-circle-ellipse-round.svg-DIXa0_Cu.js} +1 -1
- package/web/assets/{basic-shape-primary-square-rectangle.svg-BueTJIhO.js → basic-shape-primary-square-rectangle.svg-iZ2jJ4vs.js} +1 -1
- package/web/assets/{basic-shape-shield.svg-DiYXMUMt.js → basic-shape-shield.svg-udMt4tB9.js} +1 -1
- package/web/assets/{browser-72mztbYe.js → browser-BL1DKhyA.js} +1 -1
- package/web/assets/{browser-B8wHMk1o.js → browser-Ca9fTyQX.js} +1 -1
- package/web/assets/card-BQ1OXNVV.js +32 -0
- package/web/assets/{checkbox-BiDvmfqK.js → checkbox-CyVRoo_U.js} +3 -3
- package/web/assets/{chip-Cb6eK00K.js → chip-CppGpxiK.js} +2 -2
- package/web/assets/client-CUWGHmly.js +24 -0
- package/web/assets/cloud-chat.store-BKPvf-qg.js +1 -0
- package/web/assets/cloud-client-CBVMvTSV.js +1 -0
- package/web/assets/cloud-session-CwER2D6K.js +1 -0
- package/web/assets/{cloud-session-CIGp7324.js → cloud-session-DiJ37iee.js} +2 -2
- package/web/assets/column-BYul0pb1.js +763 -0
- package/web/assets/{computer-device-desktop-monitor.svg-DkL4R6oe.js → computer-device-desktop-monitor.svg--DYwduR2.js} +1 -1
- package/web/assets/{computer-device-desktop.svg-DXRQ2Wl4.js → computer-device-desktop.svg-BBgMbw17.js} +1 -1
- package/web/assets/{computer-device-laptop.svg-BwdMHvul.js → computer-device-laptop.svg-BKpaOUrY.js} +1 -1
- package/web/assets/{computer-device-mobile-phone-android-samsung-back.svg-CzfVICvS.js → computer-device-mobile-phone-android-samsung-back.svg-B59atDnV.js} +1 -1
- package/web/assets/{computer-device-mobile-phone-android-samsung.svg-5mcZzPvQ.js → computer-device-mobile-phone-android-samsung.svg-PrtfIbO2.js} +1 -1
- package/web/assets/{computer-device-mobile-phone-iphone-x-back.svg-CovJE-GH.js → computer-device-mobile-phone-iphone-x-back.svg-CxeWs20w.js} +1 -1
- package/web/assets/{computer-device-mobile-phone-iphone-x.svg-PgDuCiQq.js → computer-device-mobile-phone-iphone-x.svg-jqLPWrzA.js} +1 -1
- package/web/assets/{computer-device-mobile-tablet-touch.svg-1xFu6tBt.js → computer-device-mobile-tablet-touch.svg-R-OkYXde.js} +1 -1
- package/web/assets/{computer-device-mobile-tablet.svg-lvKpoZnh.js → computer-device-mobile-tablet.svg-BjISjapY.js} +1 -1
- package/web/assets/{computer-device-network-ethernet-cat6.svg-BJ6jNe-4.js → computer-device-network-ethernet-cat6.svg-BXgIO_p5.js} +1 -1
- package/web/assets/{computer-device-network-lan-www.svg-D2V9EO5w.js → computer-device-network-lan-www.svg-B6YGwdqj.js} +1 -1
- package/web/assets/{computer-device-network-wifi-connection.svg-DhFLYNK0.js → computer-device-network-wifi-connection.svg-CP2V_sTN.js} +1 -1
- package/web/assets/{computer-device-network-wifi-router.svg-BGWV2N2B.js → computer-device-network-wifi-router.svg-DRsjg9_P.js} +1 -1
- package/web/assets/{cssMode-Q_UQl6r1.js → cssMode-MoKLv7g0.js} +1 -1
- package/web/assets/{divider-D2zmU0b9.js → divider-tTW01I5w.js} +2 -2
- package/web/assets/{docx-preview-CAEo0pZg.js → docx-preview-unHjZcAR.js} +1 -1
- package/web/assets/{ecology-science-erlenmeyer-flask.svg-D4Cb7DOj.js → ecology-science-erlenmeyer-flask.svg-ClOlLMOd.js} +1 -1
- package/web/assets/{fieldset-CvPPXvgb.js → fieldset-COorWSfN.js} +2 -2
- package/web/assets/{freemarker2-CCRi9jHA.js → freemarker2-BOt0hq03.js} +1 -1
- package/web/assets/{handlebars-4FU6Ze_N.js → handlebars-D8wEDhEz.js} +1 -1
- package/web/assets/{html-1I40tTPC.js → html-Cd-HuUzd.js} +1 -1
- package/web/assets/{htmlMode-DQrNrxvx.js → htmlMode-CEdFeFHz.js} +1 -1
- package/web/assets/{image-flash-lightning.svg-Bh48o-tL.js → image-flash-lightning.svg-Cov9ygOk.js} +1 -1
- package/web/assets/{image-picture-flower.svg-CE0C3oid.js → image-picture-flower.svg-BbDUnQoM.js} +1 -1
- package/web/assets/{index-SrQFBx_K.js → index-DuGh2zls.js} +349 -349
- package/web/assets/{interface-alert-exclamation-diamond.svg-Dzt9JrNZ.js → interface-alert-exclamation-diamond.svg-BRhZ0m4M.js} +1 -1
- package/web/assets/{interface-alert-exclamation-triangle-warning.svg-CET5JCIK.js → interface-alert-exclamation-triangle-warning.svg-Bu9LvX_T.js} +1 -1
- package/web/assets/{interface-alert-information-circle.svg-GX_R0hCS.js → interface-alert-information-circle.svg-CwNRvmjJ.js} +1 -1
- package/web/assets/{interface-award-crown.svg-BUS_3snr.js → interface-award-crown.svg-E1NdS8hg.js} +1 -1
- package/web/assets/{interface-bookmark.svg-B1HfpZ9v.js → interface-bookmark-tag.svg-Ds__lzjn.js} +1 -1
- package/web/assets/{interface-bookmark-tag.svg-GOtO3ous.js → interface-bookmark.svg-CL6rgPqK.js} +1 -1
- package/web/assets/{interface-calendar-date-one.svg-W8G2NQFL.js → interface-calendar-date-one.svg-tmYumlI7.js} +1 -1
- package/web/assets/{interface-content-book-open-pages.svg-0dUMuEJV.js → interface-content-book-open-pages.svg-DYpnsEkk.js} +1 -1
- package/web/assets/{interface-content-book-page.svg-BZ9dLtQQ.js → interface-content-book-page.svg-CBap0-V8.js} +1 -1
- package/web/assets/{interface-content-file.svg-C5JU1QaC.js → interface-content-file.svg-BlgJPbn0.js} +1 -1
- package/web/assets/{interface-content-folder.svg-DeWnODx9.js → interface-content-folder.svg-BeIbFS1R.js} +1 -1
- package/web/assets/interface-content-folder.svg-CA903hwo.js +1 -0
- package/web/assets/{interface-copy-clipboard.svg-DneOONZN.js → interface-copy-clipboard.svg-DLEIk_9i.js} +1 -1
- package/web/assets/{interface-edit-attachment.svg-BUDutqFa.js → interface-edit-attachment.svg-CexUURep.js} +1 -1
- package/web/assets/{interface-edit-binocular.svg-DQ_sVWUa.js → interface-edit-binocular.svg-Bcp0m6XR.js} +1 -1
- package/web/assets/{interface-edit-magic-wand.svg-BqDEUbja.js → interface-edit-magic-wand.svg--lUaWOkl.js} +1 -1
- package/web/assets/{interface-edit-tool-paint-roller.svg-CcbJr-sE.js → interface-edit-tool-paint-roller.svg-CJI14pct.js} +1 -1
- package/web/assets/{interface-edit-tool-pencil.svg-Dlmq9sMb.js → interface-edit-tool-pencil.svg-CokeKrld.js} +1 -1
- package/web/assets/{interface-favorite-award.svg-CfRf16yB.js → interface-favorite-award.svg-Dj9jP_IB.js} +1 -1
- package/web/assets/{interface-favorite-flag.svg-BeXa9l_o.js → interface-favorite-flag.svg-DbctAxtG.js} +1 -1
- package/web/assets/{interface-favorite-heart.svg-DWDXtfc-.js → interface-favorite-heart.svg-Yhn6VUZb.js} +1 -1
- package/web/assets/{interface-favorite-star.svg-D0my2O2z.js → interface-favorite-star.svg-C4RblO3r.js} +1 -1
- package/web/assets/{interface-favorite-stars-sparkles.svg-DwnkpORM.js → interface-favorite-stars-sparkles.svg-D86ge-kp.js} +1 -1
- package/web/assets/{interface-hierarchy-flowchart.svg-BS1qAEvQ.js → interface-hierarchy-flowchart.svg-4vpVa0LC.js} +1 -1
- package/web/assets/{interface-home-house.svg-ByCGOgtp.js → interface-home-house.svg-CKqrr_vH.js} +1 -1
- package/web/assets/{interface-hyperlink.svg-D0RP2diO.js → interface-hyperlink.svg-BziyYL-h.js} +1 -1
- package/web/assets/{interface-lighting-brightness.svg-B7Wir9fI.js → interface-lighting-brightness.svg-DLhkAeot.js} +1 -1
- package/web/assets/{interface-lock-closed.svg-D93wzWGY.js → interface-lock-closed.svg-BqMSDpjQ.js} +1 -1
- package/web/assets/{interface-lock-open-unlock.svg-CEbreK15.js → interface-lock-open-unlock.svg-B0anVo0z.js} +1 -1
- package/web/assets/{interface-login-key.svg-a_CUiiRx.js → interface-login-key.svg-CksFuOna.js} +1 -1
- package/web/assets/{interface-search.svg-CP6bN80a.js → interface-search.svg-BKOu9tUw.js} +1 -1
- package/web/assets/{interface-setting-cog.svg-C1yqB1H3.js → interface-setting-cog.svg-D_3dXTZ-.js} +1 -1
- package/web/assets/{interface-share-megaphone-bullhorn.svg-BpEzN7dc.js → interface-share-megaphone-bullhorn.svg-Dn4gF0hH.js} +1 -1
- package/web/assets/{interface-share-rocket.svg-CZTpH2do.js → interface-share-rocket.svg-cm2iZyhA.js} +1 -1
- package/web/assets/{interface-share-satellite.svg-CDpvXyTq.js → interface-share-satellite.svg-CGcTcWwZ.js} +1 -1
- package/web/assets/{interface-share-space-ship.svg-QXv4WQWa.js → interface-share-space-ship.svg-DZVVyCQA.js} +1 -1
- package/web/assets/{interface-share.svg-DO9f8_w3.js → interface-share.svg-CmI-JZ5u.js} +1 -1
- package/web/assets/{interface-signal-square.svg-Dpbb94dT.js → interface-signal-square.svg-B5YnBkid.js} +1 -1
- package/web/assets/{interface-time-clock-circle.svg-BOM8J4p-.js → interface-time-clock-circle.svg-LEl6S2p_.js} +1 -1
- package/web/assets/{interface-time-hour-glass.svg-B4wmuGrS.js → interface-time-hour-glass.svg-SRS0fEgq.js} +1 -1
- package/web/assets/{interface-users-multiple.svg-CX6Z1IAw.js → interface-users-multiple.svg-BrzA58gN.js} +1 -1
- package/web/assets/{interface-weather-moon.svg-VjaROepI.js → interface-weather-moon.svg-Dcj5tIZe.js} +1 -1
- package/web/assets/{javascript-dnJjMqJl.js → javascript-BW4o2_xP.js} +1 -1
- package/web/assets/{jsonMode-DIklAZzl.js → jsonMode-BNu5tj2Z.js} +2 -2
- package/web/assets/{liquid-DM3-T0fg.js → liquid-DhgTTELV.js} +1 -1
- package/web/assets/{lspLanguageFeatures-DtduOI48.js → lspLanguageFeatures-Cb2BAAKm.js} +3 -3
- package/web/assets/{mail-chat-bubble-square.svg-BtQmLgyl.js → mail-chat-bubble-square.svg-CqruhAnJ.js} +1 -1
- package/web/assets/{mail-send-email-paper-airplane.svg-DBzfHbzK.js → mail-send-email-paper-airplane.svg-tWiaK3cO.js} +1 -1
- package/web/assets/{mail-send-envelope.svg-ByoaJJai.js → mail-send-envelope.svg-CqrtM0XJ.js} +1 -1
- package/web/assets/{mdx-COmjqkAf.js → mdx-Bp8ONtDZ.js} +1 -1
- package/web/assets/{minus-CLTSMcUf.js → minus-DuN34HOQ.js} +2 -2
- package/web/assets/modal-B0sbJ1aj.js +1 -0
- package/web/assets/modal-BG9tDOui.js +5 -0
- package/web/assets/{money-cashier-receipt.svg-D3I5UkrO.js → money-cashier-receipt.svg-CZ_Q0Q4o.js} +1 -1
- package/web/assets/{money-currency-dollar-pay.svg-BEt_zoFT.js → money-currency-dollar-pay.svg-DX3XI8z3.js} +1 -1
- package/web/assets/{money-graph-arrow-increase.svg-BFgo8Syp.js → money-graph-arrow-increase.svg-yfLkQUyA.js} +1 -1
- package/web/assets/{money-graph-bar-chart-increase.svg-BPBRyqtM.js → money-graph-bar-chart-increase.svg-BMZJcFWk.js} +1 -1
- package/web/assets/multiselect-Bc92p6F4.js +251 -0
- package/web/assets/{nature-ecology-leaf.svg-DCIaflet.js → nature-ecology-leaf.svg-DxbzYJY4.js} +1 -1
- package/web/assets/{password-kxqyN9bC.js → password-DFZGcIGP.js} +4 -4
- package/web/assets/{phone-telephone.svg-_P3X_Fym.js → phone-telephone.svg-DRXuirGY.js} +1 -1
- package/web/assets/{plus-Cs39ICwL.js → plus-DxhL7qLp.js} +6 -6
- package/web/assets/process.store-C8_fnIq8.js +1 -0
- package/web/assets/{programming-bug.svg-BGbIcZnS.js → programming-bug.svg-DLJ1_rax.js} +1 -1
- package/web/assets/{programming-cloud.svg-8TyU38aV.js → programming-cloud.svg-D3IiMlPE.js} +1 -1
- package/web/assets/{programming-computer-database-server.svg-DBxTrFCn.js → programming-computer-database-server.svg-Cg6_ED_k.js} +1 -1
- package/web/assets/{programming-computer-database.svg-Bi3RBUmB.js → programming-computer-database.svg-B6UWnlR4.js} +1 -1
- package/web/assets/{programming-module-four-layout.svg-BicMHalL.js → programming-module-four-layout.svg-B77nd1oh.js} +1 -1
- package/web/assets/{programming-module-three.svg-D13tfKhT.js → programming-module-three.svg-_s2kek9L.js} +1 -1
- package/web/assets/{programming-module.svg-HJDv8jeZ.js → programming-module.svg-CstGeUDE.js} +1 -1
- package/web/assets/{programming-script-code.svg-oXFzvCKr.js → programming-script-code.svg-B-lq_RAX.js} +1 -1
- package/web/assets/project-launch.store-QC8bDuyn.js +1 -0
- package/web/assets/project.store-l1aYnXxi.js +1 -0
- package/web/assets/{python-ejRXAr81.js → python-C9hs9gvr.js} +1 -1
- package/web/assets/{radiobutton-BWBirQno.js → radiobutton-CQFYp-dZ.js} +2 -2
- package/web/assets/{razor-CbzUoARP.js → razor-BbhaCtvg.js} +1 -1
- package/web/assets/router-BDTUFmtt.js +1 -0
- package/web/assets/settings-scope-B8h36UCK.js +1 -0
- package/web/assets/settings.store-Dvjzyya-.js +1 -0
- package/web/assets/{shopping-cart.svg-DL2Mf0BX.js → shopping-cart.svg-C-WSRLiX.js} +1 -1
- package/web/assets/{shopping-gift-present.svg-keqzudV3.js → shopping-gift-present.svg-Dh47_KD3.js} +1 -1
- package/web/assets/{shopping-shipping-box-parcel-package.svg-BZ0Ri9AV.js → shopping-shipping-box-parcel-package.svg-BTvEyPW5.js} +1 -1
- package/web/assets/src-4vjUWqdr.js +572 -0
- package/web/assets/src-BeueTtBP.js +1 -0
- package/web/assets/src-D0YRjz1F.css +1 -0
- package/web/assets/{tabpanel-Bdw_XASI.js → tabpanel-B4bmmOWW.js} +3 -3
- package/web/assets/{tag-new-circle.svg-7tUBDDe7.js → tag-new-circle.svg--CymwbQA.js} +1 -1
- package/web/assets/theme-DqQhDGPs.js +1 -0
- package/web/assets/{toggleswitch-BhJmSx1t.js → toggleswitch-j4QSxoFG.js} +2 -2
- package/web/assets/{travel-map-earth-globe.svg-CfJb5_3k.js → travel-map-earth-globe.svg-DNOAckKS.js} +1 -1
- package/web/assets/trpc-CN8Zl82m.js +1 -0
- package/web/assets/{tsMode-D5Gulgwd.js → tsMode-D--LrAcs.js} +6 -6
- package/web/assets/{typescript-B73-3GtI.js → typescript-zukD_IUF.js} +1 -1
- package/web/assets/useAiChatDrawer-YShY7nZu.js +1 -0
- package/web/assets/{useCloudOrg-BZNmQ2Ek.js → useCloudOrg-Bd83ZcEV.js} +1 -1
- package/web/assets/useEnvVarAutocomplete-BcVa9mel.js +1 -0
- package/web/assets/useProjectCatalog-CnGHIrnh.js +1 -0
- package/web/assets/{useProjectCloudOrg-Bkja4sed.js → useProjectCloudOrg-DL8Wyd1i.js} +1 -1
- package/web/assets/useServiceUrlHost-DIEqEQRR.js +1 -0
- package/web/assets/{xml-Mkua9fdo.js → xml-BByACKzS.js} +1 -1
- package/web/assets/{yaml-BP9pkdmT.js → yaml-CqWwUUQq.js} +1 -1
- package/web/index.html +1 -1
- package/agent-manager-QLXVQ7OD.js +0 -10
- package/chunk-2EDVDRKV.js.map +0 -1
- package/chunk-HK5QNU6P.js.map +0 -1
- package/chunk-TTPL2M74.js.map +0 -1
- package/chunk-WLZQDWJT.js.map +0 -1
- package/settings-manager-E3L56VAY.js +0 -10
- package/src-XCI5NILM.js.map +0 -1
- package/web/assets/AgentScalarChatInterface.vue-86061Tlh.js +0 -13
- package/web/assets/AgentTerminalPage-DxGLu5uT.js +0 -1
- package/web/assets/AiChatPage-DmQKv6pr.js +0 -1
- package/web/assets/AppLayout-DtK_nr-e.js +0 -1
- package/web/assets/AuditPage-CX5VJGlF.js +0 -1
- package/web/assets/CloudAccountPage-B_sjXlfl.js +0 -1
- package/web/assets/CloudAccountPage-ocHdrVEm.js +0 -1
- package/web/assets/CloudMessagingPage-BTfGWio6.js +0 -2
- package/web/assets/DashboardPage-7sATlyhd.js +0 -164
- package/web/assets/DirectoryPickerDialog-BbYn-Yjo.css +0 -1
- package/web/assets/DirectoryPickerDialog-DAJGNiRV.js +0 -1
- package/web/assets/EnvironmentFormPage-DoKBTKCU.js +0 -1
- package/web/assets/EnvironmentListPage-C9wGFZWU.js +0 -1
- package/web/assets/KanbanBoardPage-CoiDga7h.js +0 -4
- package/web/assets/KanbanListPage-Dl-FpuPX.css +0 -1
- package/web/assets/KanbanListPage-xWYUu1P0.js +0 -1
- package/web/assets/LaunchProjectPage-BHLH3peH.css +0 -1
- package/web/assets/LaunchProjectPage-DVXgnUYk.js +0 -1
- package/web/assets/LaunchServicesPage-DM6keva3.js +0 -1
- package/web/assets/LogViewer-CMtuP1rB.js +0 -3
- package/web/assets/OrgKeyPrompt-BqVugrV1.js +0 -1
- package/web/assets/OrgKeyPrompt-C8UJPkdT.css +0 -1
- package/web/assets/ProcessDetailPage-DJacy1ZE.js +0 -1
- package/web/assets/RandomJobTestPage-BOsChnPH.js +0 -2
- package/web/assets/ScenarioEditorPage-8XSWtwA5.js +0 -14
- package/web/assets/SendToChatDialog-DqPVoUgN.js +0 -1
- package/web/assets/ServiceControlsBar-QwLQLGFP.js +0 -1
- package/web/assets/ServiceDetailPage-DUw-ZZyD.js +0 -2
- package/web/assets/ServiceFormPage-OYBr0pY4.js +0 -1
- package/web/assets/SettingsPage-BFoWbWhq.js +0 -2063
- package/web/assets/UnlockPage-DgLCLMkg.js +0 -1
- package/web/assets/VaultMigrationPage-C93bZgWb.js +0 -1
- package/web/assets/VersionBadge-2JJyjyFh.js +0 -1
- package/web/assets/WikiPage-DBinkJlt.js +0 -1
- package/web/assets/WikiView-DMyRUz16.js +0 -1
- package/web/assets/card-CRMlmWrt.js +0 -32
- package/web/assets/client-3Q_o9QCm.js +0 -24
- package/web/assets/cloud-chat.store-DIxQd2ew.js +0 -1
- package/web/assets/cloud-client-Idzdbhu6.js +0 -1
- package/web/assets/cloud-session-Cj_Q0hKS.js +0 -1
- package/web/assets/column-4DnT4nYp.js +0 -763
- package/web/assets/interface-content-folder.svg-BZAP22kT.js +0 -1
- package/web/assets/modal-BaVGcm8s.js +0 -1
- package/web/assets/modal-Cl434j6P.js +0 -5
- package/web/assets/multiselect-Bd1n3-4t.js +0 -251
- package/web/assets/process.store-m5afcW9w.js +0 -1
- package/web/assets/project-launch.store-Cgu622KX.js +0 -1
- package/web/assets/project.store-CM-kT9-z.js +0 -1
- package/web/assets/router-o5ycRaEE.js +0 -1
- package/web/assets/settings-scope-CSLK3J2k.js +0 -1
- package/web/assets/settings.store-DDQmm1ig.js +0 -1
- package/web/assets/src-C1fYy9Ht.js +0 -572
- package/web/assets/src-DU1mBjF-.css +0 -1
- package/web/assets/src-DnhPQBBB.js +0 -1
- package/web/assets/theme-COzp71lh.js +0 -1
- package/web/assets/trpc-Bn_6G8HK.js +0 -1
- package/web/assets/useAiChatDrawer-QOflawaX.js +0 -1
- package/web/assets/useEnvVarAutocomplete-DAxcV0jl.js +0 -1
- package/web/assets/useProjectCatalog-8u5wFtf-.js +0 -1
- package/web/assets/useServiceUrlHost-biHEzQVv.js +0 -1
- /package/{agent-manager-QLXVQ7OD.js.map → agent-manager-VFUO7WQG.js.map} +0 -0
- /package/{chat-ODBVFMKX.js.map → chat-GB2UJ5KB.js.map} +0 -0
- /package/{chunk-K7A3Q62R.js.map → chunk-KNAM5H2Z.js.map} +0 -0
- /package/{chunk-SG2ACPOE.js.map → chunk-X2PJIJU7.js.map} +0 -0
- /package/{companion-5DPH3HIO.js.map → companion-XBCHHK4Z.js.map} +0 -0
- /package/{desktop-launcher-J2BCSSGZ.js.map → desktop-launcher-SLNYXW22.js.map} +0 -0
- /package/{settings-manager-E3L56VAY.js.map → settings-manager-YGIIRWVY.js.map} +0 -0
- /package/web/assets/{useProjectCatalog-BCeAlQjB.css → OrgLogo-BCeAlQjB.css} +0 -0
- /package/web/assets/{abap-cDlgWO6H.js → abap-B8g_2xYy.js} +0 -0
- /package/web/assets/{apex-DxzSGotK.js → apex-Bm8w4T5A.js} +0 -0
- /package/web/assets/{azcli-CUNfZLtQ.js → azcli-BqdUW6F8.js} +0 -0
- /package/web/assets/{bat-C-oKGifY.js → bat-Bngf0lQU.js} +0 -0
- /package/web/assets/{bicep-C4xTl9QV.js → bicep-DzO554JS.js} +0 -0
- /package/web/assets/{browser-CE5P0iHW.js → browser-BJX5ZrVN.js} +0 -0
- /package/web/assets/{cameligo-COpO1ZvP.js → cameligo-Bcy3ohdb.js} +0 -0
- /package/web/assets/{clojure-D8gp5eAN.js → clojure-CZbiqkDV.js} +0 -0
- /package/web/assets/{coffee-De9HMN-q.js → coffee-CDuhyV-7.js} +0 -0
- /package/web/assets/{cpp-C4pJyeKy.js → cpp-BklV8f4x.js} +0 -0
- /package/web/assets/{csharp-B4wLqqiU.js → csharp-BelR_XiC.js} +0 -0
- /package/web/assets/{csp-Do0Gg4qE.js → csp-DUjeBS2K.js} +0 -0
- /package/web/assets/{css-BLq1nXK0.js → css-CvbYbEko.js} +0 -0
- /package/web/assets/{cypher-CDQzi0TV.js → cypher-Dwrbk-SP.js} +0 -0
- /package/web/assets/{dart-bTPYn7bY.js → dart-BW1E5h9O.js} +0 -0
- /package/web/assets/{dockerfile-yM7ZnQpo.js → dockerfile-B41ilpF9.js} +0 -0
- /package/web/assets/{ecl-BgTpp_c4.js → ecl-BZE6Vxna.js} +0 -0
- /package/web/assets/{elixir-DO7wJ1ib.js → elixir-CtYg0bLh.js} +0 -0
- /package/web/assets/{flow9-B2Ko_py3.js → flow9-Sgvy48_I.js} +0 -0
- /package/web/assets/{fsharp-DNdx3wKW.js → fsharp-BzAfXfKg.js} +0 -0
- /package/web/assets/{go-D7LajbkE.js → go-D7oonABu.js} +0 -0
- /package/web/assets/{graphql-BCQSwUPo.js → graphql-BEN-qkl0.js} +0 -0
- /package/web/assets/{hcl-DR3uNUXT.js → hcl-CE0OhwCq.js} +0 -0
- /package/web/assets/{ini-zkzQPitL.js → ini-CCLtcvjA.js} +0 -0
- /package/web/assets/{java-YFwuCa4S.js → java-Bao8w_gp.js} +0 -0
- /package/web/assets/{julia-WWwv4jLR.js → julia-Dr0hFYrl.js} +0 -0
- /package/web/assets/{kotlin-FwlJkapy.js → kotlin-Cbfu8lcM.js} +0 -0
- /package/web/assets/{less-CyhHW1nH.js → less-BU4gEpXr.js} +0 -0
- /package/web/assets/{lexon-BScN_v1c.js → lexon-GpBGGdTS.js} +0 -0
- /package/web/assets/{lua-eWb9GpZJ.js → lua-DIPKk37y.js} +0 -0
- /package/web/assets/{m3-C4NDU793.js → m3-CSOypKGf.js} +0 -0
- /package/web/assets/{markdown-DWWpXAtL.js → markdown-VDqAgkyM.js} +0 -0
- /package/web/assets/{mips-BpJKGw00.js → mips-BJWI6dX7.js} +0 -0
- /package/web/assets/{msdax-BiuvyZwP.js → msdax-BLpuE5Dc.js} +0 -0
- /package/web/assets/{mysql-DJW9Aa9q.js → mysql-ZsxiEUoY.js} +0 -0
- /package/web/assets/{objective-c-YouNnWOW.js → objective-c-DcQa1iPc.js} +0 -0
- /package/web/assets/{pascal-jQsRnBre.js → pascal-u-hmXdyn.js} +0 -0
- /package/web/assets/{pascaligo-DZI84_dt.js → pascaligo-DqbP-1C6.js} +0 -0
- /package/web/assets/{perl-D9TKt-s6.js → perl-CUeQpRkH.js} +0 -0
- /package/web/assets/{pgsql-DXgI6ehC.js → pgsql-CQ7FhAFN.js} +0 -0
- /package/web/assets/{php-Cgqd4wfW.js → php-BEf_fu3E.js} +0 -0
- /package/web/assets/{pla-DRDkvVUU.js → pla-CXNNbT0w.js} +0 -0
- /package/web/assets/{postiats-BOLeCCau.js → postiats-CIXLZwPb.js} +0 -0
- /package/web/assets/{powerquery-DCDtPNBU.js → powerquery-DnGPASFA.js} +0 -0
- /package/web/assets/{powershell-WnZ4e5ia.js → powershell-1Y1kqIZS.js} +0 -0
- /package/web/assets/{protobuf-C9Dg-C9o.js → protobuf-Cfo9haoG.js} +0 -0
- /package/web/assets/{pug-Dr8RhWun.js → pug-BujEZqmy.js} +0 -0
- /package/web/assets/{qsharp-DukGWvWZ.js → qsharp-BL9AqNGD.js} +0 -0
- /package/web/assets/{r-BC41pTgC.js → r-D0dhpGOM.js} +0 -0
- /package/web/assets/{redis-D-gYIUku.js → redis-BMLwD7W9.js} +0 -0
- /package/web/assets/{redshift-r0XbF8XS.js → redshift-CkHh73og.js} +0 -0
- /package/web/assets/{restructuredtext-DsJDS7Eu.js → restructuredtext-DZ-LF65W.js} +0 -0
- /package/web/assets/{ruby-JPrm3ODz.js → ruby-UzPHTzc9.js} +0 -0
- /package/web/assets/{rust-C8IjEXni.js → rust-ja9NGnXZ.js} +0 -0
- /package/web/assets/{sb-D8vNiFl9.js → sb-BNdOJbMY.js} +0 -0
- /package/web/assets/{scala-DThahuqf.js → scala-LlhkyN6l.js} +0 -0
- /package/web/assets/{scheme-CvEQUYYf.js → scheme-BAj99YIn.js} +0 -0
- /package/web/assets/{scss-C6obpl8K.js → scss-chS-xxB3.js} +0 -0
- /package/web/assets/{shell-BnVmd31t.js → shell-CcH7eYIc.js} +0 -0
- /package/web/assets/{solidity-Bo6zEybc.js → solidity-cVvnqX-K.js} +0 -0
- /package/web/assets/{sophia-DuB3Px8n.js → sophia-BBT-EdFw.js} +0 -0
- /package/web/assets/{sparql-CW9HqMW2.js → sparql-DGEqOrB6.js} +0 -0
- /package/web/assets/{sql-CPCPCQON.js → sql-CcTErTxM.js} +0 -0
- /package/web/assets/{st-AxC3n-1-.js → st-Bjw-B4mN.js} +0 -0
- /package/web/assets/{swift-CgZOS_MZ.js → swift-Bid-7bBd.js} +0 -0
- /package/web/assets/{systemverilog-DYR-yx39.js → systemverilog-CXju7Nd-.js} +0 -0
- /package/web/assets/{tcl-4hAvWv0d.js → tcl-D-Dw7JFz.js} +0 -0
- /package/web/assets/{twig-Cf_07aFW.js → twig-BIPbzEWT.js} +0 -0
- /package/web/assets/{typespec-2tXj8s11.js → typespec-UJSutGCV.js} +0 -0
- /package/web/assets/{uuid--pMuF47W.js → uuid-Cro0aJm3.js} +0 -0
- /package/web/assets/{vb-DLpM4f4s.js → vb-oyG_LJw0.js} +0 -0
- /package/web/assets/{wgsl-BcECae_z.js → wgsl-DXZ6ljB6.js} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{$n as e,$t as t,A as n,Bi as r,Da as i,Dn as a,Fa as o,Gi as s,Ii as c,Jn as l,L as u,La as d,Li as f,M as p,Ma as m,Ni as h,Nn as g,On as _,Pn as v,Qt as y,Ra as b,Ri as x,Rn as S,Wi as C,Ya as w,Yn as T,Zt as E,_n as D,_r as O,b as k,bn as A,br as j,dr as M,dt as N,en as P,er as F,et as I,fa as L,fr as R,ga as z,gr as B,io as V,ja as H,ji as U,ki as ee,l as te,m as W,ma as G,mt as ne,o as K,p as re,qi as q,ra as J,t as ie,tn as Y,tt as ae,u as oe,ua as se,un as ce,ur as le,va as ue,vr as de,wt as fe,xn as X,xr as Z,ya as pe,yi as me,yn as he,yr as ge,zi as Q}from"./index-DuGh2zls.js";import{r as _e}from"./cloud-session-DiJ37iee.js";import"./src-BeueTtBP.js";import{n as ve,t as ye}from"./cloud-chat.store-BKPvf-qg.js";import{t as be}from"./EditorIcon-BvkHge0W.js";import{t as xe}from"./useServiceUrlHost-DIEqEQRR.js";import"./ProcessControls-B5dlAAdP.js";import{t as Se}from"./ServiceControlsBar-HsErHmCH.js";import{t as Ce}from"./OrgKeyPrompt-CRf1ZPik.js";import{t as we}from"./useProjectCatalog-CnGHIrnh.js";import{t as Te}from"./OrgLogo-D9q7M1ZF.js";import{n as Ee,r as De,t as Oe}from"./DirectoryPickerDialog-BlFmkPJx.js";var ke={class:`service-sidebar__header`},Ae={class:`service-sidebar__search`},je={class:`p-input-icon-left service-sidebar__search-wrapper`},Me={class:`service-sidebar__list`},Ne=[`draggable`,`onClick`,`onDragstart`,`onDragover`,`onDrop`],Pe={class:`service-sidebar__group-label`},Fe={class:`service-sidebar__group-badges`},Ie=[`title`],Le=[`title`],Re=[`title`],ze={class:`service-sidebar__group-count`},Be={class:`service-sidebar__group-items`},Ve=[`onClick`],He={key:0,class:`pi pi-exclamation-triangle service-sidebar__status service-sidebar__status--error`},Ue=[`title`],We=[`title`],Ge=[`title`],Ke={key:4,class:`pi pi-circle-fill service-sidebar__status service-sidebar__status--running`},qe={key:5,class:`pi pi-spin pi-spinner service-sidebar__status service-sidebar__status--starting`},Je={key:6,class:`pi pi-circle service-sidebar__status service-sidebar__status--stopped`},Ye={class:`service-sidebar__item-name`},Xe={key:0,class:`service-sidebar__empty`},Ze={key:1,class:`service-sidebar__empty`},$=`__all__`,Qe=T(q({__name:`ServiceSidebar`,props:{selectedServiceId:{},collapsed:{type:Boolean},activeProjectId:{},activeOrgId:{},portrait:{type:Boolean},width:{},resizing:{type:Boolean}},emits:[`select-service`,`add-service`,`toggle-collapse`],setup(t,{emit:n}){let a=t,l=c(()=>{if(!(a.collapsed||a.portrait||!a.width))return{width:`${a.width}px`,minWidth:`${a.width}px`}}),u=n,{t:p}=Z(),g=E(),v=ne(),y=re(),x=w(``),S=c(()=>a.activeProjectId?g.getByRef({id:a.activeProjectId,orgId:a.activeOrgId}):null),T=c(()=>{let e=x.value.toLowerCase();if(!S.value)return[];let t=v.getByIds(S.value.serviceIds).filter(t=>!e||t.name.toLowerCase().includes(e)),n={errored:0,running:1,starting:2};return t.sort((e,t)=>{let r=W(e.id),i=W(t.id),a=r!==null&&r in n?n[r]:9,o=i!==null&&i in n?n[i]:9;if(a!==o)return a-o;let s=e=>e.trim().replace(/[^a-zA-Z0-9\s]/g,``).toLowerCase();return s(e.name).localeCompare(s(t.name))})}),D=c(()=>{let e=new Map;for(let t of T.value){let n=t.groups&&t.groups.length>0?t.groups:[$];for(let r of n){let n=e.get(r);n?n.push(t):e.set(r,[t])}}let t=S.value?.groupOrder??[],n=e=>{let n=t.indexOf(e);return n===-1?2**53-1:n},r=[...e.entries()].filter(([e])=>e!==$).sort(([e],[t])=>{let r=n(e),i=n(t);return r===i?e.localeCompare(t):r-i}).map(([e,t])=>({key:e,label:e,services:t,counts:B(t)})),i=e.get($);return i&&i.length>0&&r.push({key:$,label:p(`serviceSidebar.defaultGroup`),services:i,counts:B(i)}),r});function O(e,t){return`runeya.serviceSidebar.collapsedGroups.${e??`local`}:${t}`}function k(e,t){if(!t)return new Set;try{let n=localStorage.getItem(O(e,t));if(!n)return new Set;let r=JSON.parse(n);return Array.isArray(r)?new Set(r.filter(e=>typeof e==`string`)):new Set}catch{return new Set}}let A=w(k(a.activeOrgId,a.activeProjectId));i(()=>[a.activeOrgId,a.activeProjectId],([e,t])=>{A.value=k(e,t)});function j(){if(a.activeProjectId)try{localStorage.setItem(O(a.activeOrgId,a.activeProjectId),JSON.stringify([...A.value]))}catch{}}function M(e){let t=new Set(A.value);t.has(e)?t.delete(e):t.add(e),A.value=t,j()}let N=w(null),P=w(null);function F(e,t){if(e===$){t.preventDefault();return}N.value=e,t.dataTransfer&&(t.dataTransfer.effectAllowed=`move`,t.dataTransfer.setData(`text/plain`,e))}function I(e,t){!N.value||e===$||e===N.value||(t.preventDefault(),t.dataTransfer&&(t.dataTransfer.dropEffect=`move`),P.value=e)}function L(e){let t=N.value;if(N.value=null,P.value=null,!t||e===$||t===e||!S.value)return;let n=D.value.map(e=>e.key).filter(e=>e!==$),r=n.indexOf(t),i=n.indexOf(e);r===-1||i===-1||(n.splice(r,1),n.splice(i,0,t),g.updateGroupOrder(S.value,n))}function R(){N.value=null,P.value=null}function B(e){let t=0,n=0,r=0;for(let i of e){let e=W(i.id);if(e===`errored`)t++;else if(e===`running`){let e=K(i.id);e.hasHealthCheck&&e.status===`healthy`?n++:r++}}return{errored:t,healthy:n,running:r}}let H=w({});function U(e,t){t?H.value[e]=t:delete H.value[e]}async function te(){if(!a.selectedServiceId)return;await J();let e=H.value[a.selectedServiceId];e&&e.scrollIntoView({block:`nearest`,behavior:`smooth`})}i(T,te),i(()=>a.selectedServiceId,te);function W(e){let t=y.getByService(e);return!t||t.length===0?null:t.some(e=>e.state===`errored`)?`errored`:t.some(e=>e.state===`running`)?`running`:t.some(e=>e.state===`starting`)?`starting`:`stopped`}function K(e){if(!v.getById(e)?.healthCheck)return{hasHealthCheck:!1,status:null};let t=y.getByService(e);return!t||t.length===0?{hasHealthCheck:!0,status:null}:t.some(e=>e.healthStatus===`unhealthy`)?{hasHealthCheck:!0,status:`unhealthy`}:t.every(e=>e.healthStatus===`healthy`)?{hasHealthCheck:!0,status:`healthy`}:{hasHealthCheck:!0,status:`unknown`}}return(n,i)=>(G(),r(h,null,[t.portrait&&!t.collapsed?(G(),r(`div`,{key:0,class:`service-sidebar__backdrop`,onClick:i[0]||=e=>u(`toggle-collapse`)})):Q(``,!0),f(`aside`,{class:o([`service-sidebar`,{"service-sidebar--collapsed":t.collapsed,"service-sidebar--portrait":t.portrait,"service-sidebar--resizing":t.resizing}]),style:d(l.value)},[t.collapsed?Q(``,!0):(G(),r(h,{key:0},[f(`div`,ke,[s(V(e),{icon:`pi pi-plus`,label:V(p)(`serviceSidebar.addService`),outlined:``,size:`small`,class:`service-sidebar__add-btn`,onClick:i[1]||=e=>u(`add-service`)},null,8,[`label`])]),f(`div`,Ae,[f(`span`,je,[i[3]||=f(`i`,{class:`pi pi-search`},null,-1),s(V(_),{modelValue:x.value,"onUpdate:modelValue":i[2]||=e=>x.value=e,placeholder:V(p)(`serviceSidebar.searchPlaceholder`),size:`small`,class:`service-sidebar__search-input`},null,8,[`modelValue`,`placeholder`])])]),f(`div`,Me,[(G(!0),r(h,null,z(D.value,e=>(G(),r(`div`,{key:e.key,class:o([`service-sidebar__group`,{"service-sidebar__group--dragover":P.value===e.key}])},[f(`button`,{class:o([`service-sidebar__group-header`,{"service-sidebar__group-header--dragging":N.value===e.key}]),draggable:e.key!==$,onClick:t=>M(e.key),onDragstart:t=>F(e.key,t),onDragover:t=>I(e.key,t),onDrop:t=>L(e.key),onDragend:R},[f(`i`,{class:o(A.value.has(e.key)?`pi pi-chevron-right`:`pi pi-chevron-down`)},null,2),f(`span`,Pe,b(e.label),1),f(`span`,Fe,[e.counts.errored?(G(),r(`span`,{key:0,class:`service-sidebar__group-badge`,title:V(p)(`serviceSidebar.badgeErrored`)},[i[4]||=f(`i`,{class:`pi pi-exclamation-triangle service-sidebar__status--error`},null,-1),C(` `+b(e.counts.errored),1)],8,Ie)):Q(``,!0),e.counts.healthy?(G(),r(`span`,{key:1,class:`service-sidebar__group-badge`,title:V(p)(`serviceSidebar.badgeHealthy`)},[i[5]||=f(`i`,{class:`pi pi-heart-fill service-sidebar__status--healthy`},null,-1),C(` `+b(e.counts.healthy),1)],8,Le)):Q(``,!0),e.counts.running?(G(),r(`span`,{key:2,class:`service-sidebar__group-badge`,title:V(p)(`serviceSidebar.badgeRunning`)},[i[6]||=f(`i`,{class:`pi pi-circle-fill service-sidebar__status--running`},null,-1),C(` `+b(e.counts.running),1)],8,Re)):Q(``,!0)]),f(`span`,ze,b(e.services.length),1)],42,Ne),m(f(`div`,Be,[(G(!0),r(h,null,z(e.services,e=>(G(),r(`button`,{key:e.id,ref_for:!0,ref:t=>U(e.id,t),class:o([`service-sidebar__item`,{"service-sidebar__item--active":t.selectedServiceId===e.id,"service-sidebar__item--inactive":!W(e.id)||W(e.id)===`stopped`}]),onClick:n=>{u(`select-service`,e.id),t.portrait&&u(`toggle-collapse`)}},[W(e.id)===`errored`?(G(),r(`i`,He)):W(e.id)===`running`&&K(e.id).hasHealthCheck&&K(e.id).status===`healthy`?(G(),r(`i`,{key:1,class:`pi pi-heart-fill service-sidebar__status service-sidebar__status--healthy`,title:V(p)(`serviceSidebar.healthHealthy`)},null,8,Ue)):W(e.id)===`running`&&K(e.id).hasHealthCheck&&K(e.id).status===`unhealthy`?(G(),r(`i`,{key:2,class:`pi pi-heart-fill service-sidebar__status service-sidebar__status--unhealthy`,title:V(p)(`serviceSidebar.healthUnhealthy`)},null,8,We)):W(e.id)===`running`&&K(e.id).hasHealthCheck&&K(e.id).status===`unknown`?(G(),r(`i`,{key:3,class:`pi pi-heart service-sidebar__status service-sidebar__status--health-pending`,title:V(p)(`serviceSidebar.healthWaiting`)},null,8,Ge)):W(e.id)===`running`?(G(),r(`i`,Ke)):W(e.id)===`starting`?(G(),r(`i`,qe)):(G(),r(`i`,Je)),f(`span`,Ye,b(e.name),1)],10,Ve))),128))],512),[[ee,!A.value.has(e.key)]])],2))),128)),S.value?T.value.length===0?(G(),r(`div`,Ze,b(V(p)(`serviceSidebar.noServices`)),1)):Q(``,!0):(G(),r(`div`,Xe,b(V(p)(`serviceSidebar.noProject`)),1))])],64))],6)],64))}}),[[`__scopeId`,`data-v-4865d030`]]),$e={class:`notification-trigger`},et={class:`notification-panel`},tt={class:`notification-header`},nt={class:`notification-title`},rt={class:`notification-actions`},it={key:0,class:`notification-empty`},at={key:1,class:`notification-list`},ot=[`onClick`],st={class:`notification-content`},ct={class:`notification-item-title`},lt={class:`notification-message`},ut={class:`notification-footer`},dt={class:`notification-time`},ft=[`onClick`],pt=T(q({__name:`NotificationCenter`,setup(t){let{t:n}=Z(),i=W(),a=R(),l=w(),u=c(()=>i.unreadCount>0),p=c(()=>i.notifications);function m(e){l.value.toggle(e)}function g(){i.markAllRead()}function _(){i.clear()}function v(e){i.remove(e)}function y(e){if(!e)return null;let t=e.trim();if(!t||!t.startsWith(`/`)||t.startsWith(`//`))return null;try{let e=new URL(t,window.location.origin);return e.origin===window.location.origin?`${e.pathname}${e.search}${e.hash}`:null}catch{return null}}function S(e,t){i.markRead(e);let n=y(t);n&&(a.push(n).catch(()=>{}),l.value?.hide())}function C(e){let t=Date.now()-e,r=Math.floor(t/1e3);if(r<60)return n(`notifications.justNow`);let i=Math.floor(r/60);if(i<60)return n(`notifications.minutesAgo`,{n:i});let a=Math.floor(i/60);return a<24?n(`notifications.hoursAgo`,{n:a}):n(`notifications.daysAgo`,{n:Math.floor(a/24)})}function T(e){switch(e){case`success`:return`pi pi-check-circle`;case`error`:return`pi pi-times-circle`;case`warn`:return`pi pi-exclamation-triangle`;default:return`pi pi-info-circle`}}function E(e){switch(e){case`success`:return`var(--p-green-500)`;case`error`:return`var(--p-red-500)`;case`warn`:return`var(--p-orange-500)`;default:return`var(--p-blue-500)`}}return(t,a)=>(G(),r(h,null,[f(`div`,$e,[s(V(e),{icon:`pi pi-bell`,text:``,rounded:``,"aria-label":V(n)(`notifications.title`),onClick:m},null,8,[`aria-label`]),u.value?(G(),x(V(F),{key:0,value:V(i).unreadCount,severity:`danger`,class:`notification-badge`},null,8,[`value`])):Q(``,!0)]),s(V(D),{ref_key:`op`,ref:l,class:`notification-overlay`,breakpoints:{"600px":`320px`}},{default:H(()=>[f(`div`,et,[f(`div`,tt,[f(`span`,nt,b(V(n)(`notifications.title`)),1),f(`div`,rt,[u.value?(G(),x(V(e),{key:0,label:V(n)(`notifications.markAllRead`),text:``,size:`small`,onClick:g},null,8,[`label`])):Q(``,!0),p.value.length>0?(G(),x(V(e),{key:1,label:V(n)(`notifications.clear`),text:``,size:`small`,severity:`secondary`,onClick:_},null,8,[`label`])):Q(``,!0)])]),p.value.length===0?(G(),r(`div`,it,[a[0]||=f(`i`,{class:`pi pi-bell-slash`,style:{"font-size":`1.5rem`,"margin-bottom":`0.5rem`}},null,-1),f(`p`,null,b(V(n)(`notifications.empty`)),1)])):(G(),r(`div`,at,[(G(!0),r(h,null,z(p.value,t=>(G(),r(`div`,{key:t.id,class:o([`notification-item`,{unread:!t.read}]),onClick:e=>S(t.id,t.link)},[f(`i`,{class:o(T(t.type)),style:d({color:E(t.type)})},null,6),f(`div`,st,[f(`div`,ct,b(t.title),1),f(`div`,lt,b(t.message),1),f(`div`,ut,[f(`span`,dt,b(C(t.timestamp)),1),y(t.link)?(G(),r(`button`,{key:0,type:`button`,class:`notification-link`,onClick:U(e=>S(t.id,t.link),[`stop`])},b(t.linkLabel||V(n)(`notifications.openResource`)),9,ft)):Q(``,!0)])]),s(V(e),{icon:`pi pi-times`,text:``,rounded:``,size:`small`,severity:`secondary`,onClick:U(e=>v(t.id),[`stop`])},null,8,[`onClick`])],10,ot))),128))]))])]),_:1},512)],64))}}),[[`__scopeId`,`data-v-e1d6b2c8`]]),mt={class:`lang-switcher`},ht=[`title`],gt={class:`lang-menu`},_t={class:`lang-menu__title`},vt=[`onClick`],yt=T(q({__name:`LanguageSwitcher`,setup(e){let{t}=Z(),n=w(null),i={fr:`🇫🇷 Français`,en:`🇬🇧 English`};function a(e){n.value?.toggle(e)}function c(e){j(e),n.value?.hide()}return(e,l)=>(G(),r(`div`,mt,[f(`button`,{class:`lang-btn`,title:V(t)(`language.label`),onClick:a},[...l[0]||=[f(`i`,{class:`pi pi-language`},null,-1)]],8,ht),s(V(D),{ref_key:`popover`,ref:n},{default:H(()=>[f(`div`,gt,[f(`p`,_t,b(V(t)(`language.label`)),1),(G(!0),r(h,null,z(V(de),e=>(G(),r(`button`,{key:e,class:o([`lang-menu__item`,{"lang-menu__item--active":V(ge)()===e}]),onClick:t=>c(e)},b(i[e]),11,vt))),128))])]),_:1},512)]))}}),[[`__scopeId`,`data-v-dd64a597`]]),bt={class:`global-nav__top`},xt=[`title`],St={class:`global-nav__label`},Ct=[`title`],wt={class:`global-nav__label`},Tt=[`title`,`onClick`],Et={key:2,class:`global-nav__label`},Dt=[`title`],Ot={key:0,class:`global-nav__badge`},kt={key:1,class:`global-nav__label`},At={class:`global-nav__bottom`},jt=[`title`],Mt=[`title`,`data-testid`,`onClick`],Nt={key:0,class:`global-nav__label`},Pt={key:1,class:`global-nav__separator`},Ft={class:`global-nav__util`},It={key:2,class:`global-nav__util`},Lt={key:3,class:`global-nav__util`},Rt=T(q({__name:`GlobalNavBar`,props:{activeTab:{},portrait:{type:Boolean}},emits:[`tab-change`,`toggle-service-sidebar`],setup(e,{emit:t}){let{t:n}=Z(),i=ye(),a=t,{isOpen:l,toggle:u}=P(),d=c(()=>[{id:`dashboard`,icon:`pi pi-home`,label:n(`nav.dashboard`)},{id:`wiki-global`,icon:`pi pi-file-edit`,label:`Wiki`},{id:`kanban`,icon:`pi pi-th-large`,label:n(`kanban.nav`)},{id:`agent-terminal`,svgIcon:`terminal`,label:n(`nav.agentTerminal`)}]),m=c(()=>[{id:`environments`,icon:`pi pi-globe`,label:n(`nav.environments`)},{id:`settings`,icon:`pi pi-sliders-h`,label:n(`nav.settings`)}]);return(t,c)=>(G(),r(`nav`,{class:o([`global-nav`,{"global-nav--portrait":e.portrait}]),"data-testid":`global-nav`},[f(`div`,bt,[e.portrait?(G(),r(`button`,{key:0,class:o([`global-nav__btn`,{"global-nav__btn--active":V(l)}]),title:V(n)(`nav.aiChat`),"data-testid":`global-nav-btn`,onClick:c[0]||=(...e)=>V(u)&&V(u)(...e)},[f(`i`,{class:o(V(I))},null,2),f(`span`,St,b(V(n)(`nav.aiChat`)),1)],10,xt)):Q(``,!0),e.portrait?(G(),r(`button`,{key:1,class:`global-nav__btn`,title:V(n)(`nav.services`),"data-testid":`global-nav-services-btn`,onClick:c[1]||=e=>a(`toggle-service-sidebar`)},[c[4]||=f(`i`,{class:`pi pi-list`},null,-1),f(`span`,wt,b(V(n)(`nav.services`)),1)],8,Ct)):Q(``,!0),(G(!0),r(h,null,z(d.value,t=>(G(),r(`button`,{key:t.id,class:o([`global-nav__btn`,{"global-nav__btn--active":e.activeTab===t.id}]),title:t.label,"data-testid":`global-nav-btn`,onClick:e=>a(`tab-change`,t.id)},[t.svgIcon===`terminal`?(G(),x(p,{key:0})):(G(),r(`i`,{key:1,class:o(t.icon)},null,2)),e.portrait?(G(),r(`span`,Et,b(t.label),1)):Q(``,!0)],10,Tt))),128)),f(`button`,{class:o([`global-nav__btn global-nav__btn--badged`,{"global-nav__btn--active":e.activeTab===`cloud-messaging`,"global-nav__btn--pulse":V(i).unreadCount>0&&e.activeTab!==`cloud-messaging`}]),title:V(n)(`nav.messaging`),"data-testid":`global-nav-messaging-btn`,onClick:c[2]||=e=>a(`tab-change`,`cloud-messaging`)},[f(`i`,{class:o(V(ae))},null,2),V(i).unreadCount>0?(G(),r(`span`,Ot,b(V(i).unreadCount>99?`99+`:V(i).unreadCount),1)):Q(``,!0),e.portrait?(G(),r(`span`,kt,b(V(n)(`nav.messaging`)),1)):Q(``,!0)],10,Dt)]),f(`div`,At,[e.portrait?Q(``,!0):(G(),r(`button`,{key:0,class:o([`global-nav__btn`,{"global-nav__btn--active":V(l)}]),title:V(n)(`nav.aiChat`),"data-testid":`global-nav-btn`,onClick:c[3]||=(...e)=>V(u)&&V(u)(...e)},[f(`i`,{class:o(V(I))},null,2)],10,jt)),(G(!0),r(h,null,z(m.value,t=>(G(),r(`button`,{key:t.id,class:o([`global-nav__btn`,{"global-nav__btn--active":e.activeTab===t.id}]),title:t.label,"data-testid":t.id===`environments`?`nav-environments`:`global-nav-btn`,onClick:e=>a(`tab-change`,t.id)},[f(`i`,{class:o(t.icon)},null,2),e.portrait?(G(),r(`span`,Nt,b(t.label),1)):Q(``,!0)],10,Mt))),128)),e.portrait?Q(``,!0):(G(),r(`div`,Pt)),f(`div`,Ft,[s(pt)]),e.portrait?Q(``,!0):(G(),r(`div`,It,[s(V(K))])),e.portrait?Q(``,!0):(G(),r(`div`,Lt,[s(yt)]))])],2))}}),[[`__scopeId`,`data-v-a4a70cd3`]]),zt={class:`service-nav`,"data-testid":`service-nav`},Bt={class:`service-nav__tabs`},Vt=[`title`,`onClick`],Ht={class:`service-nav__btn-inner`},Ut={key:0,class:`service-nav__badge`},Wt=T(q({__name:`ServiceNavBar`,props:{activeTab:{},serviceId:{}},emits:[`tab-change`],setup(e,{emit:t}){let n=e,a=t,{t:s}=Z(),l=c(()=>[{id:`wiki`,icon:`pi pi-file-edit`,label:`Wiki`},{id:`terminal`,icon:`pi pi-code`,label:s(`serviceNavBar.terminal`)},{id:`metrics`,icon:`pi pi-chart-line`,label:s(`serviceNavBar.metrics`)},{id:`config`,icon:`pi pi-cog`,label:s(`serviceNavBar.config`)},{id:`git`,icon:`pi pi-github`,label:s(`serviceNavBar.git`)}]),u=w(0),d=null,p=he(m,6e4,`service-navbar:git-status`);async function m(){if(n.serviceId)try{let e=await S.git.status.query({serviceId:n.serviceId});u.value=e.staged.length+e.unstaged.length+e.untracked.length}catch{u.value=0}}function g(){_(),n.serviceId&&(d=S.git.onStatusChange.subscribe({serviceId:n.serviceId},{onData(e){u.value=e.staged.length+e.unstaged.length+e.untracked.length},onError(e){let t=e?.message??``;t.includes(`PRECONDITION_FAILED`)||t.includes(`Unresolved variables`)||m()}}),p.start())}function _(){d?.unsubscribe(),d=null,p.stop(),u.value=0}return i(()=>n.serviceId,e=>{e?g():_()},{immediate:!0}),L(_),(t,n)=>(G(),r(`nav`,zt,[f(`div`,Bt,[(G(!0),r(h,null,z(l.value,t=>(G(),r(`button`,{key:t.id,class:o([`service-nav__btn`,{"service-nav__btn--active":e.activeTab===t.id}]),title:t.label,onClick:e=>a(`tab-change`,t.id)},[f(`div`,Ht,[f(`i`,{class:o(t.icon)},null,2),t.id===`git`&&u.value>0?(G(),r(`span`,Ut,b(u.value>99?`99+`:u.value),1)):Q(``,!0)])],10,Vt))),128))])]))}}),[[`__scopeId`,`data-v-c93f59f4`]]),Gt={class:`service-header`},Kt={class:`service-header__banner`},qt={class:`service-header__left`},Jt={key:0,class:`service-header__title`},Yt=[`title`],Xt=[`title`],Zt={key:1,class:`service-header__title`},Qt={key:0,class:`service-header__right`},$t={class:`service-header__editor-popover`},en={class:`service-header__editor-current`},tn={class:`service-header__editor-label`},nn={class:`service-header__editor-select`},rn={class:`service-header__editor-label`},an={key:0,class:`editor-option`},on={class:`editor-option`},sn={key:0,class:`service-header__mismatch-banner`},cn={class:`service-header__mismatch-body`},ln={key:0},un={key:1},dn={key:1,class:`service-header__clone-banner`},fn={key:0},pn={key:1},mn=T(q({__name:`ServiceHeader`,props:{service:{},totalProcesses:{},stateCount:{}},setup(t){let n=t,{t:o}=Z(),l=O(),u=Y(),d=w(),{urlHost:p}=xe(()=>n.service?oe(n.service)??void 0:void 0),g=c(()=>{let e=n.service;return e?fe(e,p.value).map(({url:e,source:t})=>({url:e,icon:t===`cloud`?`pi pi-cloud`:`pi pi-globe`})):[]}),_=w(!1),v=w([]),y=w(null),T=w(null),E=w(!1);async function k(){if(!n.service?.git?.remote){_.value=!1,v.value=[],y.value=null,T.value=null;return}let e=n.service.id;try{let t=await S.service.checkCwd.query({id:e});v.value=t.unresolvedVars??[],y.value=t.resolvedCwd??null,T.value=t.gitMismatch??null,_.value=t.canClone||(t.unresolvedVars??[]).length>0,t.exists&&t.gitMismatch===null&&setTimeout(async()=>{if(n.service?.id===e)try{let t=await S.service.checkCwd.query({id:e,checkReachability:!0});if(n.service?.id!==e)return;T.value=t.gitMismatch??null}catch{}},1500)}catch(e){console.error(`[checkCwd] error:`,e),_.value=!1,v.value=[],y.value=null,T.value=null}}i(()=>n.service?.id,()=>k(),{immediate:!0});async function A(){if(n.service){E.value=!0;try{await S.service.cloneRepository.mutate({id:n.service.id}),_.value=!1,l.add({severity:`success`,summary:`Repository cloned`,detail:`Cloned into ${y.value??n.service.cwd??`.`}`,life:4e3})}catch(e){l.add({severity:`error`,summary:`Clone failed`,detail:e.message,life:6e3})}finally{E.value=!1}}}let j=c(()=>n.service?u.getEffectiveEditor(n.service.id):null),M=c(()=>n.service?u.getServiceEditor(n.service.id):null),N=c(()=>[{label:o(`serviceHeader.useDefault`),value:`__default__`},...u.installedEditors.map(e=>({label:e.name,value:e.key}))]),P=c(()=>n.service?M.value?.key??`__default__`:`__default__`);function F(e){window.open(e,`_blank`)}function I(){let e=j.value,t=n.service?.cwd;if(!e){l.add({severity:`warn`,summary:o(`serviceHeader.noEditorConfigured`),detail:o(`serviceHeader.setDefaultEditorHint`),life:3e3});return}u.openEditor(e.key,t||`.`)}function L(e){d.value?.toggle(e)}async function R(e){n.service&&(e===`__default__`?await u.removeServiceEditor(n.service.id):await u.setServiceEditor(n.service.id,e))}return(n,i)=>{let c=ue(`router-link`),l=pe(`tooltip`);return G(),r(`header`,Gt,[f(`div`,Kt,[f(`div`,qt,[t.service?(G(),r(`h1`,Jt,[t.service.runner===`docker`?(G(),r(`i`,{key:0,class:`pi pi-box service-header__runner-icon`,title:V(o)(`serviceHeader.docker`)},null,8,Yt)):(G(),r(`i`,{key:1,class:`pi pi-desktop service-header__runner-icon`,title:V(o)(`serviceHeader.native`)},null,8,Xt)),C(b(t.service.name),1)])):(G(),r(`h1`,Zt,`Runeya`)),t.service&&t.totalProcesses>0?(G(),x(V(a),{key:2,value:`${t.stateCount.running} running`,severity:t.stateCount.running>0?`success`:`secondary`,class:`service-header__tag`},null,8,[`value`,`severity`])):Q(``,!0)]),t.service?(G(),r(`div`,Qt,[m((G(),x(V(e),{text:``,rounded:``,size:`small`,"aria-label":V(o)(`serviceHeader.openInEditor`),onClick:I,onContextmenu:U(L,[`prevent`])},{icon:H(()=>[s(be,{"editor-key":j.value?.key??null,size:14},null,8,[`editor-key`])]),_:1},8,[`aria-label`])),[[l,j.value?`Open in ${j.value.name}`:V(o)(`serviceHeader.openInEditor`),void 0,{bottom:!0}]]),m(s(V(e),{icon:`pi pi-chevron-down`,text:``,rounded:``,size:`small`,class:`service-header__editor-caret`,"aria-label":V(o)(`serviceHeader.editorOptions`),onClick:L},null,8,[`aria-label`]),[[l,V(o)(`serviceHeader.editorSettings`),void 0,{bottom:!0}]]),s(V(D),{ref_key:`editorPopover`,ref:d},{default:H(()=>[f(`div`,$t,[f(`div`,en,[f(`span`,tn,b(V(o)(`serviceHeader.editorDefault`)),1),f(`span`,null,b(V(u).defaultEditor?.name??V(o)(`serviceHeader.editorNotSet`)),1)]),f(`div`,nn,[f(`span`,rn,b(V(o)(`serviceHeader.editorThisService`)),1),s(V(ce),{"model-value":P.value,options:N.value,"option-label":`label`,"option-value":`value`,placeholder:V(o)(`serviceHeader.useDefault`),size:`small`,class:`service-header__editor-dropdown`,"onUpdate:modelValue":R},{value:H(e=>[e.value?(G(),r(`div`,an,[s(be,{"editor-key":e.value===`__default__`?null:e.value,size:14},null,8,[`editor-key`]),f(`span`,null,b(N.value.find(t=>t.value===e.value)?.label),1)])):Q(``,!0)]),option:H(e=>[f(`div`,on,[s(be,{"editor-key":e.option.value===`__default__`?null:e.option.value,size:14},null,8,[`editor-key`]),f(`span`,null,b(e.option.label),1)])]),_:1},8,[`model-value`,`options`,`placeholder`])]),s(c,{to:{name:`settings`,query:{section:`editor`}},class:`service-header__editor-settings-link`},{default:H(()=>[i[0]||=f(`i`,{class:`pi pi-cog`},null,-1),f(`span`,null,b(V(o)(`serviceHeader.editorSettings`)),1)]),_:1})])]),_:1},512),(G(!0),r(h,null,z(g.value,t=>m((G(),x(V(e),{key:t.url,icon:t.icon,text:``,rounded:``,size:`small`,"aria-label":`${V(o)(`serviceHeader.openServiceUrl`)} — ${t.url}`,onClick:e=>F(t.url)},null,8,[`icon`,`aria-label`,`onClick`])),[[l,t.url,void 0,{bottom:!0}]])),128))])):Q(``,!0)]),T.value&&t.service?(G(),r(`div`,sn,[i[10]||=f(`i`,{class:`pi pi-exclamation-triangle service-header__mismatch-icon`},null,-1),f(`div`,cn,[f(`strong`,null,b(T.value.unreachable?`Git remote unreachable`:T.value.actual===null?`No git remote found`:`Git remote mismatch`),1),T.value.unreachable?(G(),r(`span`,ln,[i[1]||=C(` Cannot reach `,-1),f(`code`,null,b(T.value.configured),1),i[2]||=C(` — check your network or SSH credentials. `,-1)])):T.value.actual===null?(G(),r(`span`,un,[i[3]||=C(` The directory `,-1),f(`code`,null,b(y.value??t.service.cwd),1),i[4]||=C(` has no `,-1),i[5]||=f(`code`,null,`origin`,-1),i[6]||=C(` remote, but the service is configured for `,-1),f(`code`,null,b(T.value.configured),1),i[7]||=C(`. `,-1)])):(G(),r(h,{key:2},[f(`span`,null,[i[8]||=C(`Configured: `,-1),f(`code`,null,b(T.value.configured),1)]),f(`span`,null,[i[9]||=C(`Actual: `,-1),f(`code`,null,b(T.value.actual),1)])],64))])])):Q(``,!0),_.value&&t.service?(G(),r(`div`,dn,[i[14]||=f(`i`,{class:`pi pi-folder-open service-header__clone-icon`},null,-1),(v.value??[]).length>0?(G(),r(`span`,fn,[i[11]||=C(` Working directory `,-1),f(`code`,null,b(y.value??t.service.cwd),1),i[12]||=C(` contains unresolved variables: `,-1),(G(!0),r(h,null,z(v.value??[],e=>(G(),r(`code`,{key:e,class:`service-header__clone-var`},`$`+b(e),1))),128)),i[13]||=C(` — set them in the environment before cloning. `,-1)])):(G(),r(`span`,pn,b(V(o)(`serviceHeader.cwdNotExist`,{cwd:y.value??t.service.cwd})),1)),(v.value??[]).length===0?(G(),x(V(e),{key:2,label:V(o)(`serviceHeader.cloneRepository`),icon:`pi pi-download`,size:`small`,loading:E.value,onClick:A},null,8,[`label`,`loading`])):Q(``,!0)])):Q(``,!0)])}}}),[[`__scopeId`,`data-v-ee28562f`]]),hn={class:`app-layout__main`,"data-testid":`page-content`},gn={class:`app-layout__content`},_n=T(q({__name:`AppMainArea`,props:{selectedService:{},selectedServiceId:{},selectedServiceProcesses:{},activeTab:{}},emits:[`tab-change`],setup(e,{emit:t}){let n=t;function i(e){n(`tab-change`,e)}return(t,n)=>(G(),r(`div`,hn,[s(mn,{service:e.selectedService},null,8,[`service`]),f(`div`,gn,[m(s(Wt,{"active-tab":e.activeTab,"service-id":e.selectedServiceId,onTabChange:i},null,8,[`active-tab`,`service-id`]),[[ee,!!e.selectedServiceId]]),f(`div`,{class:o(e.selectedServiceId?`app-layout__service-view`:[`ai-chat`,`kanban`,`agent-terminal`,`wiki-global`,`cloud-messaging`].includes(e.activeTab)?`app-layout__fullpage`:`app-layout__page`)},[e.selectedService?(G(),x(Se,{key:0,service:e.selectedService,processes:e.selectedServiceProcesses},null,8,[`service`,`processes`])):Q(``,!0),f(`div`,{class:o([`ai-chat`,`kanban`,`agent-terminal`,`wiki-global`,`cloud-messaging`].includes(e.activeTab)?`app-layout__router-view-fullpage`:`app-layout__router-view`)},[s(V(le))],2)],2)])]))}}),[[`__scopeId`,`data-v-d688302d`]]),vn={class:`environment-selector`},yn={for:`env-select`,class:`label`,"data-testid":`env-selector-label`},bn={class:`env-panel-heading`},xn={key:0,class:`env-option`},Sn={key:1},Cn={class:`env-option`},wn=T(q({__name:`EnvironmentSelector`,props:{modelValue:{},disabled:{type:Boolean}},emits:[`update:modelValue`],setup(e,{emit:t}){let n=t,{t:i}=Z(),a=A(),o=c(()=>a.globalEnvironments);function l(e){if(e)return e.startsWith(`#`)?e:`#${e}`}function u(e){return a.environments.find(t=>t.id===e)}function p(e){n(`update:modelValue`,e)}return(t,n)=>(G(),r(`div`,vn,[f(`label`,yn,b(V(i)(`environmentSelector.label`)),1),s(V(ce),{id:`env-select`,"model-value":e.modelValue,options:o.value,"option-label":`name`,"option-value":`id`,"onUpdate:modelValue":p,placeholder:V(i)(`environmentSelector.placeholder`),disabled:e.disabled},{header:H(()=>[f(`div`,bn,b(V(i)(`environmentSelector.heading`)),1)]),value:H(e=>[e.value?(G(),r(`div`,xn,[u(e.value)?.color||u(e.value)?.bgColor?(G(),r(`span`,{key:0,class:`env-dot`,style:d({backgroundColor:l(u(e.value)?.bgColor)||l(u(e.value)?.color)})},null,4)):Q(``,!0),f(`span`,null,b(u(e.value)?.name??e.value),1)])):(G(),r(`span`,Sn,b(e.placeholder),1))]),option:H(e=>[f(`div`,Cn,[e.option.color||e.option.bgColor?(G(),r(`span`,{key:0,class:`env-dot`,style:d({backgroundColor:l(e.option.bgColor)||l(e.option.color)})},null,4)):Q(``,!0),f(`span`,null,b(e.option.name),1)])]),_:1},8,[`model-value`,`options`,`placeholder`,`disabled`])]))}}),[[`__scopeId`,`data-v-58732841`]]),Tn={class:`switcher`},En={class:`switcher__heading`},Dn={class:`switcher__group`},On={class:`switcher__title`},kn={key:0,class:`switcher__empty`},An=[`onClick`],jn={class:`switcher__name`},Mn=[`title`,`aria-label`,`onClick`],Nn={key:1,class:`switcher__loading`},Pn={class:`switcher__title`},Fn={key:0,class:`switcher__empty`},In=[`disabled`,`onClick`],Ln={key:0,class:`pi pi-spin pi-spinner`},Rn={class:`switcher__name`},zn={key:2,class:`pi pi-download switcher__hint`},Bn=[`title`,`aria-label`,`onClick`],Vn=[`title`,`aria-label`,`onClick`],Hn={key:2,class:`switcher__empty switcher__signin`},Un=T(q({__name:`ProjectSwitcher`,setup(n,{expose:i}){let{t:a}=Z(),l=R(),u=B(),d=E(),p=X(),{isLinked:m}=_e(),_=w(null),T=w(``),O=w(``),k=we(),{loading:A,error:j}=k,M=k.orgGroups,N=c(()=>d.projects.filter(e=>!e.orgId)),P=c(()=>p.activeProjectId),F=c(()=>p.activeOrgId);function I(e,t){return t===P.value&&e===F.value}function L(e){_.value?.toggle(e)}async function ee(){await k.refreshCloud()}function te(e){p.setActiveProject(e,null),_.value?.hide(),l.push({name:`dashboard`})}async function W(e,n,r){T.value=n,j.value=``;try{await k.pullProject(e,n,r),p.setActiveProject(n,e),_.value?.hide(),l.push({name:`dashboard`})}catch(r){j.value=t(r,a),ce(r,y(r))&&(J.value={orgId:e,projectId:n})}finally{T.value=``}}async function ne(){let e=J.value;if(J.value=null,!e)return;j.value=``;let t=k.orgGroups.value.find(t=>t.orgId===e.orgId);await W(e.orgId,e.projectId,t?.accountId)}function K(e,t){j.value=``,u.require({header:a(`projectSwitcher.deleteFromOrgTitle`),message:a(`projectSwitcher.deleteFromOrgConfirm`,{project:t.name,org:e.name}),icon:`pi pi-exclamation-triangle`,rejectLabel:a(`actions.cancel`),acceptLabel:a(`projectSwitcher.deleteFromOrgAccept`),acceptClass:`p-button-danger`,accept:()=>void re(e.orgId,t.projectId)})}async function re(e,n){O.value=n;try{await S.cloudSync.deleteProjectFromOrg.mutate({orgId:e,projectId:n}),await d.fetchAll(),await k.refreshCloud()}catch(e){j.value=t(e,a)}finally{O.value=``}}async function q(e,t){j.value=``;try{await S.cloudSync.untrackProject.mutate({orgId:e,projectId:t}),await d.fetchAll(),k.markUntracked(e,t)}catch(e){j.value=y(e)}}let J=w(null),ie=w(!1),Y=w(!1),ae=w(null);function oe(e){ae.value={id:e.id,name:e.name},Y.value=!0}function se(){_.value?.hide(),l.push({name:`dashboard`})}i({toggle:L});function ce(e,t){return t===`ORG_KEY_MISMATCH`||t===`ORG_VAULT_UNREADABLE`?!0:e?.syncState===`key-mismatch`}return(t,n)=>(G(),r(h,null,[s(V(D),{ref_key:`popover`,ref:_,onShow:ee,class:`project-switcher`},{default:H(()=>[f(`div`,Tn,[f(`h2`,En,b(V(a)(`projectSwitcher.heading`)),1),V(j)?(G(),x(V(v),{key:0,severity:`error`,closable:!1,class:`switcher__error`},{default:H(()=>[C(b(V(j)),1)]),_:1})):Q(``,!0),f(`section`,Dn,[f(`h3`,On,b(V(a)(`projectSwitcher.local`)),1),N.value.length===0?(G(),r(`p`,kn,b(V(a)(`projectSwitcher.noLocal`)),1)):Q(``,!0),(G(!0),r(h,null,z(N.value,e=>(G(),r(`button`,{key:e.id,class:o([`switcher__item`,{"is-active":e.id===P.value&&F.value===null}]),onClick:t=>te(e.id)},[n[6]||=f(`i`,{class:`pi pi-folder`},null,-1),f(`span`,jn,b(e.name),1),V(m)&&V(M).length?(G(),r(`span`,{key:0,class:`switcher__publish`,role:`button`,title:V(a)(`projectSwitcher.publish`),"aria-label":V(a)(`projectSwitcher.publish`),onClick:U(t=>oe(e),[`stop`])},[...n[5]||=[f(`i`,{class:`pi pi-cloud-upload`},null,-1)]],8,Mn)):Q(``,!0)],10,An))),128))]),V(A)?(G(),r(`div`,Nn,[s(V(g),{style:{width:`1.5rem`,height:`1.5rem`}})])):Q(``,!0),(G(!0),r(h,null,z(V(M),e=>(G(),r(`section`,{key:e.orgId,class:`switcher__group`},[f(`h3`,Pn,[s(Te,{"org-id":e.orgId,name:e.name,size:16},null,8,[`org-id`,`name`]),f(`span`,null,b(e.name),1)]),e.projects.length===0?(G(),r(`p`,Fn,b(V(a)(`projectSwitcher.noProjects`)),1)):Q(``,!0),(G(!0),r(h,null,z(e.projects,t=>(G(),r(`button`,{key:t.projectId,class:o([`switcher__item`,{"is-active":I(e.orgId,t.projectId)}]),disabled:T.value===t.projectId,onClick:n=>W(e.orgId,t.projectId,e.accountId)},[T.value===t.projectId?(G(),r(`i`,Ln)):(G(),x(Te,{key:1,"org-id":e.orgId,name:e.name,size:18},null,8,[`org-id`,`name`])),f(`span`,Rn,b(t.name),1),!t.local&&T.value!==t.projectId?(G(),r(`i`,zn)):t.local&&!I(e.orgId,t.projectId)?(G(),r(`span`,{key:3,class:`switcher__drop`,role:`button`,title:V(a)(`projectSwitcher.untrack`),"aria-label":V(a)(`projectSwitcher.untrack`),onClick:U(n=>q(e.orgId,t.projectId),[`stop`])},[...n[7]||=[f(`i`,{class:`pi pi-times`},null,-1)]],8,Bn)):Q(``,!0),V(m)?(G(),r(`span`,{key:4,class:`switcher__delete`,role:`button`,title:V(a)(`projectSwitcher.deleteFromOrg`,{org:e.name}),"aria-label":V(a)(`projectSwitcher.deleteFromOrg`,{org:e.name}),onClick:U(n=>K(e,t),[`stop`])},[f(`i`,{class:o([`pi`,O.value===t.projectId?`pi-spin pi-spinner`:`pi-trash`])},null,2)],8,Vn)):Q(``,!0)],10,In))),128))]))),128)),V(m)?Q(``,!0):(G(),r(`p`,Hn,b(V(M).length?V(a)(`projectSwitcher.signInMore`):V(a)(`projectSwitcher.signInHint`)),1)),s(V(e),{label:V(a)(`projectSwitcher.create`),icon:`pi pi-plus`,text:``,size:`small`,class:`switcher__create`,onClick:n[0]||=e=>ie.value=!0},null,8,[`label`])])]),_:1},512),s(Ce,{"org-id":J.value?.orgId??null,reference:`cloud`,title:V(a)(`projectSwitcher.keyPromptTitle`),hint:V(a)(`projectSwitcher.keyPromptHint`),"confirm-label":V(a)(`projectSwitcher.keyPromptUse`),onClose:n[1]||=e=>J.value=null,onAdopted:ne},null,8,[`org-id`,`title`,`hint`,`confirm-label`]),s(Ee,{visible:Y.value,"onUpdate:visible":n[2]||=e=>Y.value=e,project:ae.value,onPublished:n[3]||=e=>V(k).refreshCloud()},null,8,[`visible`,`project`]),s(De,{visible:ie.value,"onUpdate:visible":n[4]||=e=>ie.value=e,onCreated:se},null,8,[`visible`])],64))}}),[[`__scopeId`,`data-v-dc784917`]]),Wn={class:`bottom-bar`},Gn={class:`bottom-bar__content`},Kn=[`aria-label`],qn={class:`desktop-info`},Jn={class:`desktop-info__title`},Yn={class:`desktop-info__text`},Xn={key:0,class:`desktop-info__address`},Zn={class:`desktop-info__cta`},Qn=[`title`],$n={key:0,class:`pi pi-folder icon`},er={class:`value`},tr={class:`bottom-bar__right`},nr={key:0,class:`bottom-bar__section environment`},rr=[`title`],ir=[`src`,`alt`],ar={key:1,class:`cloud-avatar cloud-avatar--initials`},or=T(q({__name:`BottomBar`,setup(e){let t=E();A(),X();let n=O(),{t:i}=Z(),a=R(),{user:o,currentAccount:u,isLinked:d}=_e(),p=c(()=>{let e=o.value;return e?.image?ie(e.id,{accountId:u.value?.id}):``}),m=w(!1),g=c(()=>(o.value?.name||o.value?.email||`?`).trim().split(/\s+/).slice(0,2).map(e=>e.charAt(0).toUpperCase()).join(``)||`?`);function _(){a.push({name:`cloud-account`})}let{isDesktop:v,port:y}=l(),x=w(null);function T(e){x.value?.show(e)}function k(){x.value?.hide()}function j(){k(),a.push({name:`settings`,query:{section:`diagnostics`}})}let M=w(null);function N(e){M.value?.toggle(e)}let P=c(()=>t.currentProject),F=w({});S.cloudSync.orgNames.query().then(e=>{F.value=e}).catch(()=>{});let I=c(()=>{let e=P.value?.orgId;return e?F.value[e]??``:``}),L=c(()=>P.value?.activeEnvironmentId??null);async function z(e){P.value&&(await t.setActiveEnvironment(P.value,e)||n.add({severity:`error`,summary:i(`bottomBar.errorChangingEnv`),life:5e3}))}return(e,t)=>(G(),r(`div`,Wn,[f(`div`,Gn,[V(v)?(G(),r(`button`,{key:0,class:`bottom-bar__section desktop-badge`,"aria-label":V(i)(`bottomBar.desktopMode.title`),"data-testid":`bottom-bar-desktop`,onMouseenter:T,onMouseleave:k,onFocus:T,onBlur:k,onClick:j},[...t[1]||=[f(`i`,{class:`pi pi-desktop icon`},null,-1)]],40,Kn)):Q(``,!0),s(V(D),{ref_key:`desktopPopover`,ref:x,dismissable:!0},{default:H(()=>[f(`div`,qn,[f(`div`,Jn,[t[2]||=f(`i`,{class:`pi pi-desktop`},null,-1),f(`span`,null,b(V(i)(`bottomBar.desktopMode.title`)),1)]),f(`p`,Yn,b(V(i)(`bottomBar.desktopMode.description`)),1),V(y)?(G(),r(`p`,Xn,[C(b(V(i)(`bottomBar.desktopMode.address`))+` `,1),f(`code`,null,`http://localhost:`+b(V(y)),1)])):Q(``,!0),f(`p`,Zn,[t[3]||=f(`i`,{class:`pi pi-arrow-right`},null,-1),C(` `+b(V(i)(`bottomBar.desktopMode.goToDiagnostics`)),1)])])]),_:1},512),f(`button`,{class:`bottom-bar__section project-btn is-clickable`,title:V(i)(`bottomBar.switchProject`),"data-testid":`bottom-bar-project`,onClick:N},[P.value?.orgId?(G(),r(h,{key:1},[s(Te,{"org-id":P.value.orgId,name:I.value,size:16,title:I.value},null,8,[`org-id`,`name`,`title`]),t[4]||=f(`i`,{class:`pi pi-angle-right org-sep`},null,-1)],64)):(G(),r(`i`,$n)),f(`span`,er,b(P.value?.name??V(i)(`bottomBar.none`)),1),t[5]||=f(`i`,{class:`pi pi-angle-up caret`},null,-1)],8,Qn),s(Un,{ref_key:`switcher`,ref:M},null,512),f(`div`,tr,[P.value&&L.value?(G(),r(`div`,nr,[t[6]||=f(`i`,{class:`pi pi-globe icon`},null,-1),s(wn,{"model-value":L.value,"onUpdate:modelValue":z,class:`bottom-env-selector`},null,8,[`model-value`])])):Q(``,!0),V(d)?(G(),r(`button`,{key:2,class:`bottom-bar__section cloud-btn cloud-avatar-btn`,title:V(i)(`bottomBar.cloudAccount`),onClick:_},[p.value&&!m.value?(G(),r(`img`,{key:0,src:p.value,alt:V(o)?.name??``,class:`cloud-avatar`,onError:t[0]||=e=>m.value=!0},null,40,ir)):(G(),r(`span`,ar,b(g.value),1))],8,rr)):(G(),r(`button`,{key:1,class:`bottom-bar__section cloud-btn cloud-login`,onClick:_},[t[7]||=f(`i`,{class:`pi pi-cloud icon`},null,-1),f(`span`,null,b(V(i)(`bottomBar.cloudLogin`)),1)]))])])]))}}),[[`__scopeId`,`data-v-4ec24736`]]),sr={class:`cloud-banner__text`},cr=T(q({__name:`CloudProjectBanner`,setup(e){let{t}=Z(),a=E(),s=X(),{user:l,isLinked:u,currentAccount:d,loading:p}=_e(),m=n(k,ve()),h=c(()=>s.activeProjectId?a.currentProjectOrgId:null),g=w(null),_=w(new Map);i([()=>l.value?.id,h],async([e,t])=>{if(!(!e||!t)){m.refresh();try{let[e,t]=await Promise.all([S.cloudAuth.status.query(),S.cloudSync.orgClouds.query()]);g.value=d.value?.cloudUrl??e.cloudUrl??null,_.value=new Map(Object.entries(t))}catch{}}},{immediate:!0});function v(e,t){return e.replace(/\/+$/,``)===t.replace(/\/+$/,``)}let y=c(()=>{if(!h.value||p.value)return null;if(!u.value)return`offline`;let e=_.value.get(h.value);return e&&g.value&&!v(e,g.value)?`other-cloud`:m.loading.value||!m.organizations.value.length||m.organizations.value.some(e=>e.id===h.value)?null:`other-org`}),x=c(()=>y.value===`offline`?t(`cloudBanner.offline`):y.value===`other-cloud`?t(`cloudBanner.otherCloud`):t(`cloudBanner.otherOrg`));return(e,t)=>y.value?(G(),r(`div`,{key:0,class:o([`cloud-banner`,`cloud-banner--${y.value}`]),role:`status`,"data-testid":`cloud-project-banner`},[f(`i`,{class:o([y.value===`offline`?`pi pi-cloud-off`:`pi pi-exclamation-triangle`,`cloud-banner__icon`])},null,2),f(`span`,sr,b(x.value),1)],2)):Q(``,!0)}}),[[`__scopeId`,`data-v-cf467970`]]),lr=q({__name:`ProjectLocationGate`,setup(e){let t=E(),n=X(),{activeProjectId:r}=me(n),a=w(!1),o=w(``),s=w(null),c=w(``),l=new Set;function u(e,t){return`${e??`local`}:${t}`}return i([r,()=>t.projects.length],async([e])=>{if(!e||l.has(u(n.activeOrgId,e)))return;let r=t.getByRef({id:e,orgId:n.activeOrgId})??t.getById(e);if(r&&r.orgId){try{let{path:t}=await S.project.getLocalPath.query({id:e,orgId:r.orgId});if(t)return}catch{return}l.add(u(r.orgId,e)),o.value=e,s.value=r.orgId??null,c.value=r.name,a.value=!0}},{immediate:!0}),(e,t)=>o.value?(G(),x(Oe,{key:0,visible:a.value,"onUpdate:visible":t[0]||=e=>a.value=e,"project-id":o.value,"org-id":s.value,"project-name":c.value,required:``},null,8,[`visible`,`project-id`,`org-id`,`project-name`])):Q(``,!0)}}),ur={class:`app-layout__body`},dr=`runeya.serviceSidebar.widthPx`,fr=160,pr=600,mr=220,hr=`(max-width: 480px)`,gr=T(q({__name:`AppLayout`,setup(e){let t=R(),n=M(),a=E(),l=ne(),d=re(),p=N(),m=X(),h=A(),g=Y();ye();let _=w(!1),{size:v,isResizing:y,start:b}=u({axis:`x`,min:fr,max:pr,initial:mr,storageKey:dr}),x=w(window.matchMedia(hr).matches),S=window.matchMedia(hr);function C(e){x.value=e.matches,e.matches?_.value=!0:_.value=!1}S.addEventListener(`change`,C),x.value&&(_.value=!0);let T=c(()=>n.name===`service-detail`?n.params.id:null),D=c(()=>{if(n.name===`service-detail`){let e=n.params.tab;return e===`terminal`||e===`metrics`||e===`config`||e===`git`||e===`wiki`?e:`terminal`}return n.path===`/wiki`?`wiki-global`:n.name===`environments`||n.name===`environment-edit`?`environments`:n.path===`/settings`?`settings`:n.path.startsWith(`/ai-chat`)||n.path.startsWith(`/scenario`)?`ai-chat`:n.path.startsWith(`/kanban`)?`kanban`:n.path===`/agent-terminal`?`agent-terminal`:n.name===`cloud-messaging`?`cloud-messaging`:`dashboard`}),O=c(()=>T.value?l.getById(T.value):null),k=c(()=>T.value?d.getByService(T.value):[]),j=c(()=>m.activeProjectId),P=c(()=>m.activeOrgId);function F(e){e===`dashboard`?t.push(`/`):e===`environments`?j.value&&t.push({name:`environments`,params:{projectId:j.value}}):e===`ai-chat`?t.push(`/ai-chat`):e===`kanban`?t.push(`/kanban`):e===`agent-terminal`?t.push(`/agent-terminal`):e===`settings`?t.push(`/settings`):e===`wiki-global`?t.push(`/wiki`):e===`cloud-messaging`?t.push({name:`cloud-messaging`}):T.value&&t.push(`/services/${T.value}/${e}`)}function I(e){let n=D.value,r=n===`terminal`||n===`metrics`||n===`config`||n===`git`||n===`wiki`?n:`terminal`;t.push(`/services/${e}/${r}`)}function z(){t.push(`/services/new`)}let B=[`dashboard`,`projects`,`agents`,`settings`,`audit`,`api-keys`,`ai-chat`,`kanban-list`,`kanban-board`,`agent-terminal`,`wiki-global`];i(j,async e=>{if(!e&&n.name&&!B.includes(n.name)&&t.push({name:`dashboard`}),e){try{await h.fetchAll(e,!0)}catch(e){console.error(`[AppLayout] Failed to load environments:`,e.message)}g.fetchPreferences(),H(e)||t.push({name:`launch-services`})}});function H(e){let t=(a.getByRef({id:e,orgId:m.activeOrgId})??a.getById(e))?.serviceIds??[];if(t.length===0)return!0;let n=te(d.processes);return t.some(e=>n.has(e))}return L(()=>{S.removeEventListener(`change`,C)}),se(async()=>{if(await Promise.all([a.fetchAll(),l.fetchAll(),d.fetchAll(),p.fetchAll()]),j.value)try{await h.fetchAll(j.value)}catch(e){console.error(`[AppLayout] Failed to load environments:`,e.message)}g.fetchAvailable(),j.value&&g.fetchPreferences(),p.subscribeStatus(),!j.value&&!B.includes(n.name)&&t.push({name:`dashboard`})}),(e,t)=>(G(),r(`div`,{class:o([`app-layout`,{"app-layout--portrait":x.value}])},[s(cr),s(lr),f(`div`,ur,[s(Rt,{"active-tab":D.value,portrait:x.value,onTabChange:F,onToggleServiceSidebar:t[0]||=e=>_.value=!_.value},null,8,[`active-tab`,`portrait`]),s(Qe,{"selected-service-id":T.value,collapsed:_.value,"active-project-id":j.value,"active-org-id":P.value,portrait:x.value,width:V(v),resizing:V(y),onSelectService:I,onAddService:z,onToggleCollapse:t[1]||=e=>_.value=!_.value},null,8,[`selected-service-id`,`collapsed`,`active-project-id`,`active-org-id`,`portrait`,`width`,`resizing`]),!x.value&&!_.value?(G(),r(`div`,{key:0,class:o([`app-layout__resizer`,{"app-layout__resizer--active":V(y)}]),onMousedown:t[2]||=U((...e)=>V(b)&&V(b)(...e),[`prevent`])},null,34)):Q(``,!0),x.value&&_.value?(G(),r(`div`,{key:1,class:`app-layout__sidebar-edge-trigger`,onClick:t[3]||=e=>_.value=!1},[...t[4]||=[f(`i`,{class:`pi pi-chevron-right`},null,-1)]])):Q(``,!0),s(_n,{"selected-service":O.value,"selected-service-id":T.value,"selected-service-processes":k.value,"active-tab":D.value,onTabChange:F},null,8,[`selected-service`,`selected-service-id`,`selected-service-processes`,`active-tab`])]),s(or)],2))}}),[[`__scopeId`,`data-v-1d5fb6b0`]]);export{gr as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
.service-sidebar[data-v-4865d030]{background:var(--runeya-sidebar-bg);width:220px;min-width:220px;color:var(--runeya-sidebar-text);border-right:1px solid var(--runeya-border);flex-direction:column;transition:width .2s,min-width .2s;display:flex;overflow:hidden}.service-sidebar--collapsed[data-v-4865d030]{border-right:none;width:0;min-width:0}.service-sidebar--resizing[data-v-4865d030]{transition:none!important}.service-sidebar__header[data-v-4865d030]{padding:.75rem}.service-sidebar__add-btn[data-v-4865d030]{width:100%;font-size:.8125rem}.service-sidebar__search[data-v-4865d030]{padding:0 .75rem .5rem}.service-sidebar__search-wrapper[data-v-4865d030]{width:100%;position:relative}.service-sidebar__search-wrapper>i[data-v-4865d030]{color:var(--p-text-muted-color);z-index:1;font-size:.75rem;position:absolute;top:50%;left:.625rem;transform:translateY(-50%)}.service-sidebar__search-input[data-v-4865d030]{width:100%;padding-left:2rem;font-size:.8125rem}.service-sidebar__list[data-v-4865d030]{flex:1;overflow:hidden auto}.service-sidebar__group[data-v-4865d030]{margin-bottom:.25rem}.service-sidebar__group-header[data-v-4865d030]{width:100%;color:var(--p-text-muted-color);cursor:pointer;text-transform:uppercase;letter-spacing:.04em;background:0 0;border:none;align-items:center;gap:.375rem;padding:.5rem .75rem;font-size:.75rem;font-weight:600;display:flex}.service-sidebar__group-header[data-v-4865d030]:hover{color:var(--p-text-color)}.service-sidebar__group-header--dragging[data-v-4865d030]{opacity:.5}.service-sidebar__group--dragover[data-v-4865d030]{box-shadow:inset 0 2px 0 0 var(--p-primary-color)}.service-sidebar__group-header .pi[data-v-4865d030]{font-size:.625rem}.service-sidebar__group-label[data-v-4865d030]{text-overflow:ellipsis;white-space:nowrap;text-align:left;flex:1;min-width:0;overflow:hidden}.service-sidebar__group-badges[data-v-4865d030]{align-items:center;gap:.375rem;display:flex}.service-sidebar__group-badge[data-v-4865d030]{color:var(--p-text-color);text-transform:none;letter-spacing:0;align-items:center;gap:.2rem;font-size:.6875rem;font-weight:600;display:inline-flex}.service-sidebar__group-badge .pi[data-v-4865d030]{font-size:.625rem}.service-sidebar__group-count[data-v-4865d030]{background:var(--p-content-hover-background);color:var(--p-text-muted-color);border-radius:8px;padding:0 .375rem;font-size:.6875rem;line-height:1.4}.service-sidebar__group-items[data-v-4865d030]{flex-direction:column;display:flex}.service-sidebar__item[data-v-4865d030]{width:100%;color:var(--runeya-sidebar-text);cursor:pointer;text-align:left;background:0 0;border:none;align-items:center;gap:.5rem;padding:.5rem .75rem .5rem 1.5rem;font-size:.8125rem;transition:background .15s,color .15s;display:flex}.service-sidebar__item[data-v-4865d030]:hover{background:var(--runeya-sidebar-active)}.service-sidebar__item--active[data-v-4865d030]{background:var(--runeya-sidebar-active);color:var(--runeya-sidebar-active-text);font-weight:600}.service-sidebar__item--inactive[data-v-4865d030],.service-sidebar__item--inactive[data-v-4865d030]:hover{color:var(--runeya-sidebar-inactive-text)}.service-sidebar__status[data-v-4865d030]{flex-shrink:0;font-size:.5rem}.service-sidebar__status--running[data-v-4865d030]{color:#22c55e}.service-sidebar__status--error[data-v-4865d030]{color:#ef4444;font-size:.75rem}.service-sidebar__status--starting[data-v-4865d030]{color:#f59e0b;font-size:.75rem}.service-sidebar__status--stopped[data-v-4865d030]{color:var(--p-text-muted-color)}.service-sidebar__status--healthy[data-v-4865d030]{color:#22c55e;font-size:.625rem}.service-sidebar__status--unhealthy[data-v-4865d030]{color:#ef4444;font-size:.625rem}.service-sidebar__status--health-pending[data-v-4865d030]{color:#f59e0b;font-size:.625rem}.service-sidebar__item-name[data-v-4865d030]{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.service-sidebar__empty[data-v-4865d030]{text-align:center;color:var(--p-text-muted-color);padding:1.5rem;font-size:.8125rem}.service-sidebar__backdrop[data-v-4865d030]{z-index:499;background:#0006;position:fixed;inset:0}.service-sidebar--portrait[data-v-4865d030]{z-index:500;height:calc(100% - 52px);transition:transform .25s;position:fixed;top:0;left:0;transform:translate(0);box-shadow:4px 0 16px #0003}.service-sidebar--portrait.service-sidebar--collapsed[data-v-4865d030]{border-right:1px solid var(--runeya-border);width:220px;min-width:220px;transform:translate(-100%)}.notification-trigger[data-v-e1d6b2c8]{display:inline-flex;position:relative}.notification-badge[data-v-e1d6b2c8]{pointer-events:none;min-width:1.1rem;height:1.1rem;font-size:.65rem;line-height:1.1rem;position:absolute;top:2px;right:2px}.notification-panel[data-v-e1d6b2c8]{flex-direction:column;min-width:320px;max-width:400px;height:420px;display:flex}.notification-header[data-v-e1d6b2c8]{border-bottom:1px solid var(--p-content-border-color);justify-content:space-between;align-items:center;margin-bottom:.5rem;padding:.5rem 0;display:flex}.notification-title[data-v-e1d6b2c8]{font-size:.95rem;font-weight:600}.notification-actions[data-v-e1d6b2c8]{gap:.25rem;display:flex}.notification-empty[data-v-e1d6b2c8]{text-align:center;color:var(--p-text-muted-color);flex-direction:column;align-items:center;padding:1.5rem 0;display:flex}.notification-empty p[data-v-e1d6b2c8]{margin:0}.notification-list[data-v-e1d6b2c8]{flex-direction:column;flex:1;gap:.25rem;display:flex;overflow-y:auto}.notification-item[data-v-e1d6b2c8]{cursor:pointer;border-radius:8px;align-items:flex-start;gap:.65rem;padding:.6rem .5rem;transition:background .15s;display:flex}.notification-item[data-v-e1d6b2c8]:hover{background-color:var(--p-content-hover-background)}.notification-item.unread[data-v-e1d6b2c8]{background-color:color-mix(in srgb, var(--p-primary-color) 8%, transparent)}.notification-item.unread[data-v-e1d6b2c8]:hover{background-color:color-mix(in srgb, var(--p-primary-color) 14%, transparent)}.notification-item>i[data-v-e1d6b2c8]{opacity:.9;flex-shrink:0;margin-top:.2rem;font-size:.9rem}.notification-content[data-v-e1d6b2c8]{flex:1;min-width:0}.notification-item-title[data-v-e1d6b2c8]{align-items:center;gap:.4rem;font-size:.82rem;font-weight:600;line-height:1.3;display:flex}.notification-item-title[data-v-e1d6b2c8]:after{content:"";background:var(--p-primary-color);opacity:0;border-radius:50%;flex-shrink:0;width:6px;height:6px;transition:opacity .15s;display:inline-block}.notification-item.unread .notification-item-title[data-v-e1d6b2c8]:after{opacity:1}.notification-message[data-v-e1d6b2c8]{color:var(--p-text-secondary-color);word-break:break-word;margin-top:.2rem;font-size:.78rem;line-height:1.4}.notification-footer[data-v-e1d6b2c8]{align-items:center;gap:.5rem;margin-top:.3rem;display:flex}.notification-time[data-v-e1d6b2c8]{color:var(--p-text-muted-color);font-size:.68rem}.notification-link[data-v-e1d6b2c8]{color:var(--p-primary-color);cursor:pointer;background:0 0;border:none;align-items:center;padding:0;font-size:.68rem;font-weight:500;text-decoration:none;display:inline-flex}.notification-link[data-v-e1d6b2c8]:before{content:"·";color:var(--p-text-muted-color);margin-right:.4rem}.notification-link[data-v-e1d6b2c8]:hover{text-decoration:underline}.lang-btn[data-v-dd64a597]{width:36px;height:36px;color:var(--p-text-muted-color);cursor:pointer;background:0 0;border:none;border-radius:8px;justify-content:center;align-items:center;font-size:1rem;transition:all .15s;display:flex}.lang-btn[data-v-dd64a597]:hover{background:var(--runeya-sidebar-hover);color:var(--p-text-color)}.lang-menu[data-v-dd64a597]{flex-direction:column;gap:2px;min-width:140px;display:flex}.lang-menu__title[data-v-dd64a597]{color:var(--p-text-muted-color);text-transform:uppercase;letter-spacing:.05em;margin:0 0 6px;font-size:.75rem;font-weight:600}.lang-menu__item[data-v-dd64a597]{width:100%;color:var(--p-text-color);cursor:pointer;text-align:left;background:0 0;border:none;border-radius:6px;padding:6px 10px;font-size:.875rem;transition:background .12s;display:block}.lang-menu__item[data-v-dd64a597]:hover{background:var(--runeya-sidebar-hover)}.lang-menu__item--active[data-v-dd64a597]{background:var(--p-primary-50,rgba(var(--p-primary-500-rgb,99,102,241), .1));color:var(--p-primary-color);font-weight:600}.global-nav[data-v-a4a70cd3]{background:var(--runeya-icon-nav-bg);border-right:1px solid var(--runeya-border);flex-direction:column;width:44px;min-width:44px;padding:.25rem 0;display:flex}.global-nav__top[data-v-a4a70cd3]{flex-direction:column;display:flex}.global-nav__bottom[data-v-a4a70cd3]{flex-direction:column;margin-top:auto;padding-bottom:.5rem;display:flex}.global-nav__btn[data-v-a4a70cd3]{width:36px;height:36px;color:var(--p-text-muted-color);cursor:pointer;background:0 0;border:none;border-radius:8px;justify-content:center;align-items:center;margin:2px auto;font-size:1rem;transition:all .15s;display:flex}.global-nav__btn[data-v-a4a70cd3]:hover{background:var(--runeya-sidebar-hover);color:var(--p-text-color)}.global-nav__btn--badged[data-v-a4a70cd3]{position:relative}.global-nav__btn--pulse[data-v-a4a70cd3]{color:var(--p-primary-color);animation:1.6s ease-in-out infinite nav-pulse-a4a70cd3}@keyframes nav-pulse-a4a70cd3{0%{box-shadow:0 0 0 0 color-mix(in srgb, var(--p-primary-color) 55%, transparent)}70%{box-shadow:0 0 0 8px color-mix(in srgb, var(--p-primary-color) 0%, transparent)}to{box-shadow:0 0 0 0 color-mix(in srgb, var(--p-primary-color) 0%, transparent)}}@media (prefers-reduced-motion:reduce){.global-nav__btn--pulse[data-v-a4a70cd3]{animation:none}}.global-nav__badge[data-v-a4a70cd3]{color:#fff;text-align:center;min-width:15px;height:15px;box-shadow:0 0 0 2px var(--runeya-icon-nav-bg);pointer-events:none;background:#ef4444;border-radius:8px;padding:0 3px;font-size:.6rem;font-weight:700;line-height:15px;position:absolute;top:2px;right:2px}.global-nav__btn--active[data-v-a4a70cd3]{background:var(--p-primary-color);color:var(--p-primary-contrast-color,#fff)}.global-nav__btn--active[data-v-a4a70cd3]:hover{background:var(--p-primary-color);filter:brightness(1.1)}.global-nav__separator[data-v-a4a70cd3]{border-top:1px solid var(--runeya-border);margin:.5rem}.global-nav__util[data-v-a4a70cd3]{justify-content:center;display:flex}.global-nav--portrait[data-v-a4a70cd3]{width:100%;min-width:unset;border-right:none;border-top:1px solid var(--runeya-border);z-index:500;scrollbar-width:none;flex-direction:row;height:52px;padding:0;position:fixed;bottom:0;left:0;right:0;overflow:auto hidden}.global-nav--portrait[data-v-a4a70cd3]::-webkit-scrollbar{display:none}.global-nav--portrait .global-nav__top[data-v-a4a70cd3],.global-nav--portrait .global-nav__bottom[data-v-a4a70cd3]{display:contents}.global-nav--portrait .global-nav__btn[data-v-a4a70cd3]{border-radius:0;flex-direction:column;flex:1;gap:2px;width:auto;min-width:56px;height:52px;margin:0;padding:0 .5rem;font-size:.85rem}.global-nav--portrait .global-nav__btn i[data-v-a4a70cd3],.global-nav--portrait .global-nav__btn svg[data-v-a4a70cd3]{font-size:1.1rem}.global-nav--portrait .global-nav__util[data-v-a4a70cd3]{flex:1;align-items:center;height:52px}.global-nav__label[data-v-a4a70cd3]{white-space:nowrap;text-overflow:ellipsis;max-width:56px;font-size:.6rem;line-height:1;overflow:hidden}.service-nav[data-v-c93f59f4]{background:var(--runeya-icon-nav-bg);border-right:1px solid var(--runeya-border);flex-direction:column;width:52px;min-width:52px;padding:.25rem 0;display:flex}.service-nav__tabs[data-v-c93f59f4]{flex-direction:column;display:flex}.service-nav__btn[data-v-c93f59f4]{width:44px;height:44px;color:var(--p-text-muted-color);cursor:pointer;background:0 0;border:none;border-radius:8px;justify-content:center;align-items:center;margin:2px auto;font-size:1.125rem;transition:all .15s;display:flex}.service-nav__btn[data-v-c93f59f4]:hover{background:var(--runeya-sidebar-hover);color:var(--p-text-color)}.service-nav__btn--active[data-v-c93f59f4]{background:var(--p-primary-color);color:var(--p-primary-contrast-color,#fff)}.service-nav__btn--active[data-v-c93f59f4]:hover{background:var(--p-primary-color);filter:brightness(1.1)}.service-nav__btn-inner[data-v-c93f59f4]{justify-content:center;align-items:center;display:flex;position:relative}.service-nav__badge[data-v-c93f59f4]{background:var(--p-red-500,#ef4444);color:#fff;text-align:center;pointer-events:none;border-radius:999px;min-width:14px;padding:2px 4px;font-size:.55rem;font-weight:700;line-height:1;position:absolute;top:-6px;right:-8px}.service-header[data-v-ee28562f]{flex-shrink:0}.service-header__clone-banner[data-v-ee28562f]{background:color-mix(in srgb, var(--p-yellow-500) 15%, var(--p-surface-0));border-bottom:1px solid color-mix(in srgb, var(--p-yellow-500) 40%, transparent);align-items:center;gap:.75rem;padding:.5rem 1.5rem;font-size:.875rem;display:flex}.service-header__clone-icon[data-v-ee28562f]{color:var(--p-yellow-600);flex-shrink:0}.service-header__clone-banner code[data-v-ee28562f]{background:color-mix(in srgb, var(--p-yellow-500) 20%, transparent);border-radius:4px;padding:.125rem .375rem;font-size:.8125rem}.service-header__clone-banner .p-button[data-v-ee28562f]{flex-shrink:0;margin-left:auto}.service-header__mismatch-banner[data-v-ee28562f]{background:color-mix(in srgb, var(--p-red-500) 12%, var(--p-surface-0));border-bottom:1px solid color-mix(in srgb, var(--p-red-500) 40%, transparent);align-items:flex-start;gap:.75rem;padding:.625rem 1.5rem;font-size:.875rem;display:flex}.service-header__mismatch-icon[data-v-ee28562f]{color:var(--p-red-500);flex-shrink:0;margin-top:.125rem}.service-header__mismatch-body[data-v-ee28562f]{flex-direction:column;gap:.125rem;display:flex}.service-header__mismatch-body strong[data-v-ee28562f]{color:var(--p-red-600);margin-bottom:.125rem}.service-header__mismatch-body code[data-v-ee28562f]{background:color-mix(in srgb, var(--p-red-500) 15%, transparent);border-radius:4px;padding:.125rem .375rem;font-size:.8125rem}.service-header__clone-var[data-v-ee28562f]{background:color-mix(in srgb, var(--p-red-500) 20%, transparent);margin:0 .125rem}.service-header__banner[data-v-ee28562f]{background:var(--runeya-header-bg);border-bottom:1px solid color-mix(in srgb, var(--runeya-header-bg) 70%, black);justify-content:space-between;align-items:center;min-height:52px;padding:.75rem 1.5rem;display:flex}.service-header__left[data-v-ee28562f]{align-items:center;gap:.75rem;display:flex}.service-header__title[data-v-ee28562f]{color:var(--runeya-header-text);letter-spacing:-.01em;align-items:center;gap:.5rem;margin:0;font-size:1.25rem;font-weight:700;display:flex}.service-header__runner-icon[data-v-ee28562f]{opacity:.8;color:var(--runeya-header-text);font-size:1rem}.service-header__tag[data-v-ee28562f]{font-size:.75rem}.service-header__left[data-v-ee28562f] .p-tag{border:1px solid #ffffff59;color:#fff!important;background:#ffffff38!important}.service-header__right[data-v-ee28562f]{align-items:center;gap:.125rem;display:flex}.service-header__right[data-v-ee28562f] .p-button.p-button-text{color:var(--runeya-header-text);opacity:.85}.service-header__right[data-v-ee28562f] .p-button.p-button-text:hover{opacity:1;background:color-mix(in srgb, var(--runeya-header-text) 15%, transparent)}.service-header__editor-caret[data-v-ee28562f]{margin-left:-.375rem;width:1.25rem!important}.service-header__editor-popover[data-v-ee28562f]{flex-direction:column;gap:.625rem;min-width:200px;padding:.25rem;display:flex}.service-header__editor-current[data-v-ee28562f],.service-header__editor-select[data-v-ee28562f]{align-items:center;gap:.375rem;font-size:.8125rem;display:flex}.service-header__editor-label[data-v-ee28562f]{color:var(--p-text-muted-color);white-space:nowrap}.service-header__editor-dropdown[data-v-ee28562f]{flex:1}.service-header__editor-settings-link[data-v-ee28562f]{color:var(--p-primary-color);border-top:1px solid var(--p-content-border-color);align-items:center;gap:.375rem;padding-top:.25rem;font-size:.8125rem;text-decoration:none;display:flex}.service-header__editor-settings-link[data-v-ee28562f]:hover{text-decoration:underline}.editor-option[data-v-ee28562f]{align-items:center;gap:.5rem;display:flex}.app-layout__main[data-v-d688302d]{flex-direction:column;flex:1;min-width:0;height:100%;display:flex;overflow:hidden}.app-layout__content[data-v-d688302d]{background:var(--p-surface-ground);flex-direction:row;flex:1;min-height:0;display:flex;overflow:hidden}.app-layout__page[data-v-d688302d]{flex:1;height:100%;padding:1.5rem;overflow-y:auto}.app-layout__fullpage[data-v-d688302d]{flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden}.app-layout__router-view[data-v-d688302d],.app-layout__router-view-fullpage[data-v-d688302d]{flex:1;min-height:0;overflow:hidden}.app-layout__service-view[data-v-d688302d]{flex-direction:column;flex:1;min-width:0;height:100%;display:flex;overflow:hidden}.env-panel-heading[data-v-58732841]{color:var(--p-text-muted-color);padding:.5rem .75rem .35rem;font-size:.8rem;font-weight:600}.environment-selector[data-v-58732841]{align-items:center;gap:.75rem;display:flex}.label[data-v-58732841]{color:var(--text-color);white-space:nowrap;font-weight:500}[data-v-58732841] .p-select{min-width:200px}.env-option[data-v-58732841]{align-items:center;gap:.5rem;display:flex}.env-dot[data-v-58732841]{border:1px solid var(--p-content-border-color);border-radius:50%;flex-shrink:0;width:10px;height:10px}.switcher[data-v-9f068288]{flex-direction:column;gap:1rem;min-width:18rem;max-width:24rem;max-height:60vh;display:flex;overflow-y:auto}.switcher__group[data-v-9f068288]{flex-direction:column;gap:.125rem;display:flex}.switcher__heading[data-v-9f068288]{color:var(--p-text-color);margin:0 0 .6rem;font-size:.9rem;font-weight:600}.switcher__title[data-v-9f068288]{text-transform:uppercase;letter-spacing:.04em;color:var(--p-text-muted-color);align-items:center;gap:.4rem;margin:0 0 .25rem;font-size:.7rem;font-weight:600;display:flex}.switcher__item[data-v-9f068288]{border-radius:var(--p-border-radius-sm,4px);width:100%;color:var(--p-text-color);text-align:left;cursor:pointer;background:0 0;border:none;align-items:center;gap:.5rem;padding:.4rem .5rem;font-size:.85rem;display:flex}.switcher__item[data-v-9f068288]:hover:not(:disabled){background:var(--p-content-hover-background)}.switcher__item.is-active[data-v-9f068288]{background:var(--p-highlight-background);color:var(--p-highlight-color)}.switcher__item[data-v-9f068288]:disabled{cursor:progress;opacity:.7}.switcher__name[data-v-9f068288]{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.switcher__delete[data-v-9f068288]{color:var(--p-text-muted-color);opacity:0;border-radius:4px;align-items:center;padding:.1rem .2rem;transition:opacity .12s,color .12s;display:inline-flex}.switcher__item:hover .switcher__delete[data-v-9f068288]{opacity:1}.switcher__drop[data-v-9f068288]{opacity:0;border-radius:4px;margin-left:auto;padding:.15rem .25rem;transition:opacity .15s,background .15s}.switcher__item:hover .switcher__delete[data-v-9f068288]{color:var(--p-text-muted-color);opacity:0;opacity:1;border-radius:4px;align-items:center;padding:.1rem .2rem;transition:opacity .12s,color .12s;display:inline-flex}.switcher__delete[data-v-9f068288]:hover{color:var(--p-red-500);background:var(--p-content-hover-background)}.switcher__drop[data-v-9f068288]{opacity:.55}.switcher__drop[data-v-9f068288]:hover{opacity:1;background:var(--p-content-hover-background)}.switcher__publish[data-v-9f068288]{color:var(--p-text-muted-color);opacity:0;border-radius:4px;margin-left:auto;padding:.15rem .25rem;transition:opacity .15s,background .15s,color .15s}.switcher__item:hover .switcher__publish[data-v-9f068288]{opacity:1}.switcher__publish[data-v-9f068288]:hover{color:var(--p-primary-color);background:var(--p-content-hover-background)}.switcher__hint[data-v-9f068288]{color:var(--p-text-muted-color);font-size:.7rem}.switcher__empty[data-v-9f068288],.switcher__signin[data-v-9f068288]{color:var(--p-text-muted-color);margin:0;padding:.25rem .5rem;font-size:.8rem}.switcher__loading[data-v-9f068288]{justify-content:center;display:flex}.switcher__error[data-v-9f068288]{margin:0}.switcher__create[data-v-9f068288]{align-self:flex-start}.create-form[data-v-9f068288]{flex-direction:column;gap:1rem;display:flex}.create-field[data-v-9f068288]{flex-direction:column;gap:.35rem;display:flex}.create-hint[data-v-9f068288]{color:var(--p-text-muted-color)}.bottom-bar[data-v-4ec24736]{background:var(--p-content-hover-background);border-top:1px solid var(--p-content-border-color);flex-shrink:0;box-shadow:0 -2px 8px #0000000d}.bottom-bar__content[data-v-4ec24736]{align-items:center;gap:2rem;max-width:100%;margin:0 auto;padding:.5rem 1rem;display:flex}.bottom-bar__section[data-v-4ec24736]{align-items:center;gap:.5rem;font-size:.875rem;display:flex}.bottom-bar__right[data-v-4ec24736]{align-items:center;gap:2rem;margin-left:auto;display:flex}.desktop-badge[data-v-4ec24736]{color:var(--p-primary-color);font:inherit;cursor:pointer;background:0 0;border:none;border-radius:6px;margin-right:-1.5rem;padding:.25rem .35rem;line-height:1;transition:background .15s}.desktop-badge[data-v-4ec24736]:hover,.desktop-badge[data-v-4ec24736]:focus-visible{background:var(--p-content-background)}.desktop-badge .icon[data-v-4ec24736]{font-size:.95rem}.desktop-info[data-v-4ec24736]{max-width:20rem;font-size:.85rem;line-height:1.5}.desktop-info__title[data-v-4ec24736]{align-items:center;gap:.5rem;margin-bottom:.4rem;font-weight:600;display:flex}.desktop-info__title .pi[data-v-4ec24736]{color:var(--p-primary-color)}.desktop-info__text[data-v-4ec24736]{color:var(--p-text-muted-color);margin:0}.desktop-info__address[data-v-4ec24736]{color:var(--p-text-muted-color);margin:.5rem 0 0}.desktop-info__address code[data-v-4ec24736]{font-size:.85em}.desktop-info__cta[data-v-4ec24736]{border-top:1px solid var(--p-content-border-color);color:var(--p-primary-color);align-items:center;gap:.4rem;margin:.6rem 0 0;padding-top:.5rem;font-weight:500;display:flex}.desktop-info__cta .pi[data-v-4ec24736]{font-size:.75rem}.org-sep[data-v-4ec24736]{opacity:.55;font-size:.7rem}.project-btn[data-v-4ec24736]{color:inherit;font:inherit;background:0 0;border:none;border-radius:6px;padding:.25rem .5rem}.project-btn.is-clickable[data-v-4ec24736]{cursor:pointer;transition:background .15s}.project-btn.is-clickable[data-v-4ec24736]:hover{background:var(--p-content-background)}.project-btn[data-v-4ec24736]:disabled{cursor:default}.cloud-btn[data-v-4ec24736]{cursor:pointer;color:inherit;font:inherit;background:0 0;border:none;border-radius:6px;padding:.25rem .5rem;transition:background .15s}.cloud-btn[data-v-4ec24736]:hover{background:var(--p-content-background)}.cloud-btn.cloud-login[data-v-4ec24736]{color:var(--p-primary-color);font-weight:600}.cloud-email[data-v-4ec24736]{text-overflow:ellipsis;white-space:nowrap;max-width:180px;overflow:hidden}.cloud-avatar-btn[data-v-4ec24736]{border-radius:50%;padding:.15rem}.cloud-avatar[data-v-4ec24736]{object-fit:cover;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:28px;height:28px;display:flex}.cloud-avatar--initials[data-v-4ec24736]{color:#fff;background:linear-gradient(135deg,#ec4899,#a855f7);font-size:.7rem;font-weight:700}.icon[data-v-4ec24736]{color:var(--p-primary-color);font-size:.875rem}.label[data-v-4ec24736]{color:var(--p-text-muted-color);font-weight:500}.value[data-v-4ec24736]{color:var(--p-text-color);font-weight:600}[data-v-4ec24736] .bottom-env-selector{font-size:.875rem}[data-v-4ec24736] .bottom-env-selector .p-select{align-items:center;min-width:150px;height:2rem;font-size:.875rem;display:inline-flex}[data-v-4ec24736] .bottom-env-selector .p-select-label{align-items:center;padding-top:0;padding-bottom:0;display:flex}[data-v-4ec24736] .bottom-env-selector .label{display:none}.cloud-banner[data-v-cf467970]{border-bottom:1px solid #0000;justify-content:center;align-items:center;gap:.5rem;padding:.4rem 1rem;font-size:.85rem;font-weight:500;display:flex}.cloud-banner--offline[data-v-cf467970]{background:var(--p-amber-100,#fef3c7);color:var(--p-amber-900,#78350f);border-bottom-color:var(--p-amber-300,#fcd34d)}.cloud-banner--other-cloud[data-v-cf467970],.cloud-banner--other-org[data-v-cf467970]{background:var(--p-red-100,#fee2e2);color:var(--p-red-900,#7f1d1d);border-bottom-color:var(--p-red-300,#fca5a5)}.cloud-banner__icon[data-v-cf467970]{font-size:.9rem}.dark-mode .cloud-banner--offline[data-v-cf467970]{background:color-mix(in srgb, var(--p-amber-500,#f59e0b) 22%, transparent);color:var(--p-amber-200,#fde68a);border-bottom-color:color-mix(in srgb, var(--p-amber-500,#f59e0b) 45%, transparent)}.dark-mode .cloud-banner--other-cloud[data-v-cf467970],.dark-mode .cloud-banner--other-org[data-v-cf467970]{background:color-mix(in srgb, var(--p-red-500,#ef4444) 22%, transparent);color:var(--p-red-200,#fecaca);border-bottom-color:color-mix(in srgb, var(--p-red-500,#ef4444) 45%, transparent)}.app-layout[data-v-1d5fb6b0]{flex-direction:column;flex:1;height:100%;min-height:0;display:flex;overflow:hidden}.app-layout__body[data-v-1d5fb6b0]{flex-direction:row;flex:1;min-height:0;display:flex;overflow:hidden}.app-layout__resizer[data-v-1d5fb6b0]{z-index:2;width:0;min-width:0;position:relative}.app-layout__resizer[data-v-1d5fb6b0]:after{content:"";cursor:col-resize;width:9px;position:absolute;top:0;bottom:0;left:-4px}.app-layout__resizer[data-v-1d5fb6b0]:before{content:"";background:var(--p-content-border-color);opacity:0;pointer-events:none;border-radius:999px;width:4px;height:36px;transition:opacity .15s,background .15s;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.app-layout__resizer[data-v-1d5fb6b0]:hover:before,.app-layout__resizer--active[data-v-1d5fb6b0]:before{opacity:1}.app-layout__resizer--active[data-v-1d5fb6b0]:before{background:var(--p-primary-color)}.app-layout__sidebar-edge-trigger[data-v-1d5fb6b0]{cursor:pointer;background:var(--runeya-sidebar-bg);border-right:1px solid var(--runeya-border);z-index:1;justify-content:center;align-items:center;width:20px;min-width:20px;transition:background .15s;display:flex;position:relative}.app-layout__sidebar-edge-trigger[data-v-1d5fb6b0]:hover{background:var(--runeya-sidebar-active)}.app-layout__sidebar-edge-trigger .pi[data-v-1d5fb6b0]{color:var(--p-text-muted-color);font-size:.5rem}
|
|
1
|
+
.service-sidebar[data-v-4865d030]{background:var(--runeya-sidebar-bg);width:220px;min-width:220px;color:var(--runeya-sidebar-text);border-right:1px solid var(--runeya-border);flex-direction:column;transition:width .2s,min-width .2s;display:flex;overflow:hidden}.service-sidebar--collapsed[data-v-4865d030]{border-right:none;width:0;min-width:0}.service-sidebar--resizing[data-v-4865d030]{transition:none!important}.service-sidebar__header[data-v-4865d030]{padding:.75rem}.service-sidebar__add-btn[data-v-4865d030]{width:100%;font-size:.8125rem}.service-sidebar__search[data-v-4865d030]{padding:0 .75rem .5rem}.service-sidebar__search-wrapper[data-v-4865d030]{width:100%;position:relative}.service-sidebar__search-wrapper>i[data-v-4865d030]{color:var(--p-text-muted-color);z-index:1;font-size:.75rem;position:absolute;top:50%;left:.625rem;transform:translateY(-50%)}.service-sidebar__search-input[data-v-4865d030]{width:100%;padding-left:2rem;font-size:.8125rem}.service-sidebar__list[data-v-4865d030]{flex:1;overflow:hidden auto}.service-sidebar__group[data-v-4865d030]{margin-bottom:.25rem}.service-sidebar__group-header[data-v-4865d030]{width:100%;color:var(--p-text-muted-color);cursor:pointer;text-transform:uppercase;letter-spacing:.04em;background:0 0;border:none;align-items:center;gap:.375rem;padding:.5rem .75rem;font-size:.75rem;font-weight:600;display:flex}.service-sidebar__group-header[data-v-4865d030]:hover{color:var(--p-text-color)}.service-sidebar__group-header--dragging[data-v-4865d030]{opacity:.5}.service-sidebar__group--dragover[data-v-4865d030]{box-shadow:inset 0 2px 0 0 var(--p-primary-color)}.service-sidebar__group-header .pi[data-v-4865d030]{font-size:.625rem}.service-sidebar__group-label[data-v-4865d030]{text-overflow:ellipsis;white-space:nowrap;text-align:left;flex:1;min-width:0;overflow:hidden}.service-sidebar__group-badges[data-v-4865d030]{align-items:center;gap:.375rem;display:flex}.service-sidebar__group-badge[data-v-4865d030]{color:var(--p-text-color);text-transform:none;letter-spacing:0;align-items:center;gap:.2rem;font-size:.6875rem;font-weight:600;display:inline-flex}.service-sidebar__group-badge .pi[data-v-4865d030]{font-size:.625rem}.service-sidebar__group-count[data-v-4865d030]{background:var(--p-content-hover-background);color:var(--p-text-muted-color);border-radius:8px;padding:0 .375rem;font-size:.6875rem;line-height:1.4}.service-sidebar__group-items[data-v-4865d030]{flex-direction:column;display:flex}.service-sidebar__item[data-v-4865d030]{width:100%;color:var(--runeya-sidebar-text);cursor:pointer;text-align:left;background:0 0;border:none;align-items:center;gap:.5rem;padding:.5rem .75rem .5rem 1.5rem;font-size:.8125rem;transition:background .15s,color .15s;display:flex}.service-sidebar__item[data-v-4865d030]:hover{background:var(--runeya-sidebar-active)}.service-sidebar__item--active[data-v-4865d030]{background:var(--runeya-sidebar-active);color:var(--runeya-sidebar-active-text);font-weight:600}.service-sidebar__item--inactive[data-v-4865d030],.service-sidebar__item--inactive[data-v-4865d030]:hover{color:var(--runeya-sidebar-inactive-text)}.service-sidebar__status[data-v-4865d030]{flex-shrink:0;font-size:.5rem}.service-sidebar__status--running[data-v-4865d030]{color:#22c55e}.service-sidebar__status--error[data-v-4865d030]{color:#ef4444;font-size:.75rem}.service-sidebar__status--starting[data-v-4865d030]{color:#f59e0b;font-size:.75rem}.service-sidebar__status--stopped[data-v-4865d030]{color:var(--p-text-muted-color)}.service-sidebar__status--healthy[data-v-4865d030]{color:#22c55e;font-size:.625rem}.service-sidebar__status--unhealthy[data-v-4865d030]{color:#ef4444;font-size:.625rem}.service-sidebar__status--health-pending[data-v-4865d030]{color:#f59e0b;font-size:.625rem}.service-sidebar__item-name[data-v-4865d030]{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.service-sidebar__empty[data-v-4865d030]{text-align:center;color:var(--p-text-muted-color);padding:1.5rem;font-size:.8125rem}.service-sidebar__backdrop[data-v-4865d030]{z-index:499;background:#0006;position:fixed;inset:0}.service-sidebar--portrait[data-v-4865d030]{z-index:500;height:calc(100% - 52px);transition:transform .25s;position:fixed;top:0;left:0;transform:translate(0);box-shadow:4px 0 16px #0003}.service-sidebar--portrait.service-sidebar--collapsed[data-v-4865d030]{border-right:1px solid var(--runeya-border);width:220px;min-width:220px;transform:translate(-100%)}.notification-trigger[data-v-e1d6b2c8]{display:inline-flex;position:relative}.notification-badge[data-v-e1d6b2c8]{pointer-events:none;min-width:1.1rem;height:1.1rem;font-size:.65rem;line-height:1.1rem;position:absolute;top:2px;right:2px}.notification-panel[data-v-e1d6b2c8]{flex-direction:column;min-width:320px;max-width:400px;height:420px;display:flex}.notification-header[data-v-e1d6b2c8]{border-bottom:1px solid var(--p-content-border-color);justify-content:space-between;align-items:center;margin-bottom:.5rem;padding:.5rem 0;display:flex}.notification-title[data-v-e1d6b2c8]{font-size:.95rem;font-weight:600}.notification-actions[data-v-e1d6b2c8]{gap:.25rem;display:flex}.notification-empty[data-v-e1d6b2c8]{text-align:center;color:var(--p-text-muted-color);flex-direction:column;align-items:center;padding:1.5rem 0;display:flex}.notification-empty p[data-v-e1d6b2c8]{margin:0}.notification-list[data-v-e1d6b2c8]{flex-direction:column;flex:1;gap:.25rem;display:flex;overflow-y:auto}.notification-item[data-v-e1d6b2c8]{cursor:pointer;border-radius:8px;align-items:flex-start;gap:.65rem;padding:.6rem .5rem;transition:background .15s;display:flex}.notification-item[data-v-e1d6b2c8]:hover{background-color:var(--p-content-hover-background)}.notification-item.unread[data-v-e1d6b2c8]{background-color:color-mix(in srgb, var(--p-primary-color) 8%, transparent)}.notification-item.unread[data-v-e1d6b2c8]:hover{background-color:color-mix(in srgb, var(--p-primary-color) 14%, transparent)}.notification-item>i[data-v-e1d6b2c8]{opacity:.9;flex-shrink:0;margin-top:.2rem;font-size:.9rem}.notification-content[data-v-e1d6b2c8]{flex:1;min-width:0}.notification-item-title[data-v-e1d6b2c8]{align-items:center;gap:.4rem;font-size:.82rem;font-weight:600;line-height:1.3;display:flex}.notification-item-title[data-v-e1d6b2c8]:after{content:"";background:var(--p-primary-color);opacity:0;border-radius:50%;flex-shrink:0;width:6px;height:6px;transition:opacity .15s;display:inline-block}.notification-item.unread .notification-item-title[data-v-e1d6b2c8]:after{opacity:1}.notification-message[data-v-e1d6b2c8]{color:var(--p-text-secondary-color);word-break:break-word;margin-top:.2rem;font-size:.78rem;line-height:1.4}.notification-footer[data-v-e1d6b2c8]{align-items:center;gap:.5rem;margin-top:.3rem;display:flex}.notification-time[data-v-e1d6b2c8]{color:var(--p-text-muted-color);font-size:.68rem}.notification-link[data-v-e1d6b2c8]{color:var(--p-primary-color);cursor:pointer;background:0 0;border:none;align-items:center;padding:0;font-size:.68rem;font-weight:500;text-decoration:none;display:inline-flex}.notification-link[data-v-e1d6b2c8]:before{content:"·";color:var(--p-text-muted-color);margin-right:.4rem}.notification-link[data-v-e1d6b2c8]:hover{text-decoration:underline}.lang-btn[data-v-dd64a597]{width:36px;height:36px;color:var(--p-text-muted-color);cursor:pointer;background:0 0;border:none;border-radius:8px;justify-content:center;align-items:center;font-size:1rem;transition:all .15s;display:flex}.lang-btn[data-v-dd64a597]:hover{background:var(--runeya-sidebar-hover);color:var(--p-text-color)}.lang-menu[data-v-dd64a597]{flex-direction:column;gap:2px;min-width:140px;display:flex}.lang-menu__title[data-v-dd64a597]{color:var(--p-text-muted-color);text-transform:uppercase;letter-spacing:.05em;margin:0 0 6px;font-size:.75rem;font-weight:600}.lang-menu__item[data-v-dd64a597]{width:100%;color:var(--p-text-color);cursor:pointer;text-align:left;background:0 0;border:none;border-radius:6px;padding:6px 10px;font-size:.875rem;transition:background .12s;display:block}.lang-menu__item[data-v-dd64a597]:hover{background:var(--runeya-sidebar-hover)}.lang-menu__item--active[data-v-dd64a597]{background:var(--p-primary-50,rgba(var(--p-primary-500-rgb,99,102,241), .1));color:var(--p-primary-color);font-weight:600}.global-nav[data-v-a4a70cd3]{background:var(--runeya-icon-nav-bg);border-right:1px solid var(--runeya-border);flex-direction:column;width:44px;min-width:44px;padding:.25rem 0;display:flex}.global-nav__top[data-v-a4a70cd3]{flex-direction:column;display:flex}.global-nav__bottom[data-v-a4a70cd3]{flex-direction:column;margin-top:auto;padding-bottom:.5rem;display:flex}.global-nav__btn[data-v-a4a70cd3]{width:36px;height:36px;color:var(--p-text-muted-color);cursor:pointer;background:0 0;border:none;border-radius:8px;justify-content:center;align-items:center;margin:2px auto;font-size:1rem;transition:all .15s;display:flex}.global-nav__btn[data-v-a4a70cd3]:hover{background:var(--runeya-sidebar-hover);color:var(--p-text-color)}.global-nav__btn--badged[data-v-a4a70cd3]{position:relative}.global-nav__btn--pulse[data-v-a4a70cd3]{color:var(--p-primary-color);animation:1.6s ease-in-out infinite nav-pulse-a4a70cd3}@keyframes nav-pulse-a4a70cd3{0%{box-shadow:0 0 0 0 color-mix(in srgb, var(--p-primary-color) 55%, transparent)}70%{box-shadow:0 0 0 8px color-mix(in srgb, var(--p-primary-color) 0%, transparent)}to{box-shadow:0 0 0 0 color-mix(in srgb, var(--p-primary-color) 0%, transparent)}}@media (prefers-reduced-motion:reduce){.global-nav__btn--pulse[data-v-a4a70cd3]{animation:none}}.global-nav__badge[data-v-a4a70cd3]{color:#fff;text-align:center;min-width:15px;height:15px;box-shadow:0 0 0 2px var(--runeya-icon-nav-bg);pointer-events:none;background:#ef4444;border-radius:8px;padding:0 3px;font-size:.6rem;font-weight:700;line-height:15px;position:absolute;top:2px;right:2px}.global-nav__btn--active[data-v-a4a70cd3]{background:var(--p-primary-color);color:var(--p-primary-contrast-color,#fff)}.global-nav__btn--active[data-v-a4a70cd3]:hover{background:var(--p-primary-color);filter:brightness(1.1)}.global-nav__separator[data-v-a4a70cd3]{border-top:1px solid var(--runeya-border);margin:.5rem}.global-nav__util[data-v-a4a70cd3]{justify-content:center;display:flex}.global-nav--portrait[data-v-a4a70cd3]{width:100%;min-width:unset;border-right:none;border-top:1px solid var(--runeya-border);z-index:500;scrollbar-width:none;flex-direction:row;height:52px;padding:0;position:fixed;bottom:0;left:0;right:0;overflow:auto hidden}.global-nav--portrait[data-v-a4a70cd3]::-webkit-scrollbar{display:none}.global-nav--portrait .global-nav__top[data-v-a4a70cd3],.global-nav--portrait .global-nav__bottom[data-v-a4a70cd3]{display:contents}.global-nav--portrait .global-nav__btn[data-v-a4a70cd3]{border-radius:0;flex-direction:column;flex:1;gap:2px;width:auto;min-width:56px;height:52px;margin:0;padding:0 .5rem;font-size:.85rem}.global-nav--portrait .global-nav__btn i[data-v-a4a70cd3],.global-nav--portrait .global-nav__btn svg[data-v-a4a70cd3]{font-size:1.1rem}.global-nav--portrait .global-nav__util[data-v-a4a70cd3]{flex:1;align-items:center;height:52px}.global-nav__label[data-v-a4a70cd3]{white-space:nowrap;text-overflow:ellipsis;max-width:56px;font-size:.6rem;line-height:1;overflow:hidden}.service-nav[data-v-c93f59f4]{background:var(--runeya-icon-nav-bg);border-right:1px solid var(--runeya-border);flex-direction:column;width:52px;min-width:52px;padding:.25rem 0;display:flex}.service-nav__tabs[data-v-c93f59f4]{flex-direction:column;display:flex}.service-nav__btn[data-v-c93f59f4]{width:44px;height:44px;color:var(--p-text-muted-color);cursor:pointer;background:0 0;border:none;border-radius:8px;justify-content:center;align-items:center;margin:2px auto;font-size:1.125rem;transition:all .15s;display:flex}.service-nav__btn[data-v-c93f59f4]:hover{background:var(--runeya-sidebar-hover);color:var(--p-text-color)}.service-nav__btn--active[data-v-c93f59f4]{background:var(--p-primary-color);color:var(--p-primary-contrast-color,#fff)}.service-nav__btn--active[data-v-c93f59f4]:hover{background:var(--p-primary-color);filter:brightness(1.1)}.service-nav__btn-inner[data-v-c93f59f4]{justify-content:center;align-items:center;display:flex;position:relative}.service-nav__badge[data-v-c93f59f4]{background:var(--p-red-500,#ef4444);color:#fff;text-align:center;pointer-events:none;border-radius:999px;min-width:14px;padding:2px 4px;font-size:.55rem;font-weight:700;line-height:1;position:absolute;top:-6px;right:-8px}.service-header[data-v-ee28562f]{flex-shrink:0}.service-header__clone-banner[data-v-ee28562f]{background:color-mix(in srgb, var(--p-yellow-500) 15%, var(--p-surface-0));border-bottom:1px solid color-mix(in srgb, var(--p-yellow-500) 40%, transparent);align-items:center;gap:.75rem;padding:.5rem 1.5rem;font-size:.875rem;display:flex}.service-header__clone-icon[data-v-ee28562f]{color:var(--p-yellow-600);flex-shrink:0}.service-header__clone-banner code[data-v-ee28562f]{background:color-mix(in srgb, var(--p-yellow-500) 20%, transparent);border-radius:4px;padding:.125rem .375rem;font-size:.8125rem}.service-header__clone-banner .p-button[data-v-ee28562f]{flex-shrink:0;margin-left:auto}.service-header__mismatch-banner[data-v-ee28562f]{background:color-mix(in srgb, var(--p-red-500) 12%, var(--p-surface-0));border-bottom:1px solid color-mix(in srgb, var(--p-red-500) 40%, transparent);align-items:flex-start;gap:.75rem;padding:.625rem 1.5rem;font-size:.875rem;display:flex}.service-header__mismatch-icon[data-v-ee28562f]{color:var(--p-red-500);flex-shrink:0;margin-top:.125rem}.service-header__mismatch-body[data-v-ee28562f]{flex-direction:column;gap:.125rem;display:flex}.service-header__mismatch-body strong[data-v-ee28562f]{color:var(--p-red-600);margin-bottom:.125rem}.service-header__mismatch-body code[data-v-ee28562f]{background:color-mix(in srgb, var(--p-red-500) 15%, transparent);border-radius:4px;padding:.125rem .375rem;font-size:.8125rem}.service-header__clone-var[data-v-ee28562f]{background:color-mix(in srgb, var(--p-red-500) 20%, transparent);margin:0 .125rem}.service-header__banner[data-v-ee28562f]{background:var(--runeya-header-bg);border-bottom:1px solid color-mix(in srgb, var(--runeya-header-bg) 70%, black);justify-content:space-between;align-items:center;min-height:52px;padding:.75rem 1.5rem;display:flex}.service-header__left[data-v-ee28562f]{align-items:center;gap:.75rem;display:flex}.service-header__title[data-v-ee28562f]{color:var(--runeya-header-text);letter-spacing:-.01em;align-items:center;gap:.5rem;margin:0;font-size:1.25rem;font-weight:700;display:flex}.service-header__runner-icon[data-v-ee28562f]{opacity:.8;color:var(--runeya-header-text);font-size:1rem}.service-header__tag[data-v-ee28562f]{font-size:.75rem}.service-header__left[data-v-ee28562f] .p-tag{border:1px solid #ffffff59;color:#fff!important;background:#ffffff38!important}.service-header__right[data-v-ee28562f]{align-items:center;gap:.125rem;display:flex}.service-header__right[data-v-ee28562f] .p-button.p-button-text{color:var(--runeya-header-text);opacity:.85}.service-header__right[data-v-ee28562f] .p-button.p-button-text:hover{opacity:1;background:color-mix(in srgb, var(--runeya-header-text) 15%, transparent)}.service-header__editor-caret[data-v-ee28562f]{margin-left:-.375rem;width:1.25rem!important}.service-header__editor-popover[data-v-ee28562f]{flex-direction:column;gap:.625rem;min-width:200px;padding:.25rem;display:flex}.service-header__editor-current[data-v-ee28562f],.service-header__editor-select[data-v-ee28562f]{align-items:center;gap:.375rem;font-size:.8125rem;display:flex}.service-header__editor-label[data-v-ee28562f]{color:var(--p-text-muted-color);white-space:nowrap}.service-header__editor-dropdown[data-v-ee28562f]{flex:1}.service-header__editor-settings-link[data-v-ee28562f]{color:var(--p-primary-color);border-top:1px solid var(--p-content-border-color);align-items:center;gap:.375rem;padding-top:.25rem;font-size:.8125rem;text-decoration:none;display:flex}.service-header__editor-settings-link[data-v-ee28562f]:hover{text-decoration:underline}.editor-option[data-v-ee28562f]{align-items:center;gap:.5rem;display:flex}.app-layout__main[data-v-d688302d]{flex-direction:column;flex:1;min-width:0;height:100%;display:flex;overflow:hidden}.app-layout__content[data-v-d688302d]{background:var(--p-surface-ground);flex-direction:row;flex:1;min-height:0;display:flex;overflow:hidden}.app-layout__page[data-v-d688302d]{flex:1;height:100%;padding:1.5rem;overflow-y:auto}.app-layout__fullpage[data-v-d688302d]{flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden}.app-layout__router-view[data-v-d688302d],.app-layout__router-view-fullpage[data-v-d688302d]{flex:1;min-height:0;overflow:hidden}.app-layout__service-view[data-v-d688302d]{flex-direction:column;flex:1;min-width:0;height:100%;display:flex;overflow:hidden}.env-panel-heading[data-v-58732841]{color:var(--p-text-muted-color);padding:.5rem .75rem .35rem;font-size:.8rem;font-weight:600}.environment-selector[data-v-58732841]{align-items:center;gap:.75rem;display:flex}.label[data-v-58732841]{color:var(--text-color);white-space:nowrap;font-weight:500}[data-v-58732841] .p-select{min-width:200px}.env-option[data-v-58732841]{align-items:center;gap:.5rem;display:flex}.env-dot[data-v-58732841]{border:1px solid var(--p-content-border-color);border-radius:50%;flex-shrink:0;width:10px;height:10px}.switcher[data-v-dc784917]{flex-direction:column;gap:1rem;min-width:18rem;max-width:24rem;max-height:60vh;display:flex;overflow-y:auto}.switcher__group[data-v-dc784917]{flex-direction:column;gap:.125rem;display:flex}.switcher__heading[data-v-dc784917]{color:var(--p-text-color);margin:0 0 .6rem;font-size:.9rem;font-weight:600}.switcher__title[data-v-dc784917]{text-transform:uppercase;letter-spacing:.04em;color:var(--p-text-muted-color);align-items:center;gap:.4rem;margin:0 0 .25rem;font-size:.7rem;font-weight:600;display:flex}.switcher__item[data-v-dc784917]{border-radius:var(--p-border-radius-sm,4px);width:100%;color:var(--p-text-color);text-align:left;cursor:pointer;background:0 0;border:none;align-items:center;gap:.5rem;padding:.4rem .5rem;font-size:.85rem;display:flex}.switcher__item[data-v-dc784917]:hover:not(:disabled){background:var(--p-content-hover-background)}.switcher__item.is-active[data-v-dc784917]{background:var(--p-highlight-background);color:var(--p-highlight-color)}.switcher__item[data-v-dc784917]:disabled{cursor:progress;opacity:.7}.switcher__name[data-v-dc784917]{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.switcher__delete[data-v-dc784917]{color:var(--p-text-muted-color);opacity:0;border-radius:4px;align-items:center;padding:.1rem .2rem;transition:opacity .12s,color .12s;display:inline-flex}.switcher__item:hover .switcher__delete[data-v-dc784917]{opacity:1}.switcher__drop[data-v-dc784917]{opacity:0;border-radius:4px;margin-left:auto;padding:.15rem .25rem;transition:opacity .15s,background .15s}.switcher__item:hover .switcher__delete[data-v-dc784917]{color:var(--p-text-muted-color);opacity:0;opacity:1;border-radius:4px;align-items:center;padding:.1rem .2rem;transition:opacity .12s,color .12s;display:inline-flex}.switcher__delete[data-v-dc784917]:hover{color:var(--p-red-500);background:var(--p-content-hover-background)}.switcher__drop[data-v-dc784917]{opacity:.55}.switcher__drop[data-v-dc784917]:hover{opacity:1;background:var(--p-content-hover-background)}.switcher__publish[data-v-dc784917]{color:var(--p-text-muted-color);opacity:0;border-radius:4px;margin-left:auto;padding:.15rem .25rem;transition:opacity .15s,background .15s,color .15s}.switcher__item:hover .switcher__publish[data-v-dc784917]{opacity:1}.switcher__publish[data-v-dc784917]:hover{color:var(--p-primary-color);background:var(--p-content-hover-background)}.switcher__hint[data-v-dc784917]{color:var(--p-text-muted-color);font-size:.7rem}.switcher__empty[data-v-dc784917],.switcher__signin[data-v-dc784917]{color:var(--p-text-muted-color);margin:0;padding:.25rem .5rem;font-size:.8rem}.switcher__loading[data-v-dc784917]{justify-content:center;display:flex}.switcher__error[data-v-dc784917]{margin:0}.switcher__create[data-v-dc784917]{align-self:flex-start}.bottom-bar[data-v-4ec24736]{background:var(--p-content-hover-background);border-top:1px solid var(--p-content-border-color);flex-shrink:0;box-shadow:0 -2px 8px #0000000d}.bottom-bar__content[data-v-4ec24736]{align-items:center;gap:2rem;max-width:100%;margin:0 auto;padding:.5rem 1rem;display:flex}.bottom-bar__section[data-v-4ec24736]{align-items:center;gap:.5rem;font-size:.875rem;display:flex}.bottom-bar__right[data-v-4ec24736]{align-items:center;gap:2rem;margin-left:auto;display:flex}.desktop-badge[data-v-4ec24736]{color:var(--p-primary-color);font:inherit;cursor:pointer;background:0 0;border:none;border-radius:6px;margin-right:-1.5rem;padding:.25rem .35rem;line-height:1;transition:background .15s}.desktop-badge[data-v-4ec24736]:hover,.desktop-badge[data-v-4ec24736]:focus-visible{background:var(--p-content-background)}.desktop-badge .icon[data-v-4ec24736]{font-size:.95rem}.desktop-info[data-v-4ec24736]{max-width:20rem;font-size:.85rem;line-height:1.5}.desktop-info__title[data-v-4ec24736]{align-items:center;gap:.5rem;margin-bottom:.4rem;font-weight:600;display:flex}.desktop-info__title .pi[data-v-4ec24736]{color:var(--p-primary-color)}.desktop-info__text[data-v-4ec24736]{color:var(--p-text-muted-color);margin:0}.desktop-info__address[data-v-4ec24736]{color:var(--p-text-muted-color);margin:.5rem 0 0}.desktop-info__address code[data-v-4ec24736]{font-size:.85em}.desktop-info__cta[data-v-4ec24736]{border-top:1px solid var(--p-content-border-color);color:var(--p-primary-color);align-items:center;gap:.4rem;margin:.6rem 0 0;padding-top:.5rem;font-weight:500;display:flex}.desktop-info__cta .pi[data-v-4ec24736]{font-size:.75rem}.org-sep[data-v-4ec24736]{opacity:.55;font-size:.7rem}.project-btn[data-v-4ec24736]{color:inherit;font:inherit;background:0 0;border:none;border-radius:6px;padding:.25rem .5rem}.project-btn.is-clickable[data-v-4ec24736]{cursor:pointer;transition:background .15s}.project-btn.is-clickable[data-v-4ec24736]:hover{background:var(--p-content-background)}.project-btn[data-v-4ec24736]:disabled{cursor:default}.cloud-btn[data-v-4ec24736]{cursor:pointer;color:inherit;font:inherit;background:0 0;border:none;border-radius:6px;padding:.25rem .5rem;transition:background .15s}.cloud-btn[data-v-4ec24736]:hover{background:var(--p-content-background)}.cloud-btn.cloud-login[data-v-4ec24736]{color:var(--p-primary-color);font-weight:600}.cloud-email[data-v-4ec24736]{text-overflow:ellipsis;white-space:nowrap;max-width:180px;overflow:hidden}.cloud-avatar-btn[data-v-4ec24736]{border-radius:50%;padding:.15rem}.cloud-avatar[data-v-4ec24736]{object-fit:cover;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:28px;height:28px;display:flex}.cloud-avatar--initials[data-v-4ec24736]{color:#fff;background:linear-gradient(135deg,#ec4899,#a855f7);font-size:.7rem;font-weight:700}.icon[data-v-4ec24736]{color:var(--p-primary-color);font-size:.875rem}.label[data-v-4ec24736]{color:var(--p-text-muted-color);font-weight:500}.value[data-v-4ec24736]{color:var(--p-text-color);font-weight:600}[data-v-4ec24736] .bottom-env-selector{font-size:.875rem}[data-v-4ec24736] .bottom-env-selector .p-select{align-items:center;min-width:150px;height:2rem;font-size:.875rem;display:inline-flex}[data-v-4ec24736] .bottom-env-selector .p-select-label{align-items:center;padding-top:0;padding-bottom:0;display:flex}[data-v-4ec24736] .bottom-env-selector .label{display:none}.cloud-banner[data-v-cf467970]{border-bottom:1px solid #0000;justify-content:center;align-items:center;gap:.5rem;padding:.4rem 1rem;font-size:.85rem;font-weight:500;display:flex}.cloud-banner--offline[data-v-cf467970]{background:var(--p-amber-100,#fef3c7);color:var(--p-amber-900,#78350f);border-bottom-color:var(--p-amber-300,#fcd34d)}.cloud-banner--other-cloud[data-v-cf467970],.cloud-banner--other-org[data-v-cf467970]{background:var(--p-red-100,#fee2e2);color:var(--p-red-900,#7f1d1d);border-bottom-color:var(--p-red-300,#fca5a5)}.cloud-banner__icon[data-v-cf467970]{font-size:.9rem}.dark-mode .cloud-banner--offline[data-v-cf467970]{background:color-mix(in srgb, var(--p-amber-500,#f59e0b) 22%, transparent);color:var(--p-amber-200,#fde68a);border-bottom-color:color-mix(in srgb, var(--p-amber-500,#f59e0b) 45%, transparent)}.dark-mode .cloud-banner--other-cloud[data-v-cf467970],.dark-mode .cloud-banner--other-org[data-v-cf467970]{background:color-mix(in srgb, var(--p-red-500,#ef4444) 22%, transparent);color:var(--p-red-200,#fecaca);border-bottom-color:color-mix(in srgb, var(--p-red-500,#ef4444) 45%, transparent)}.app-layout[data-v-1d5fb6b0]{flex-direction:column;flex:1;height:100%;min-height:0;display:flex;overflow:hidden}.app-layout__body[data-v-1d5fb6b0]{flex-direction:row;flex:1;min-height:0;display:flex;overflow:hidden}.app-layout__resizer[data-v-1d5fb6b0]{z-index:2;width:0;min-width:0;position:relative}.app-layout__resizer[data-v-1d5fb6b0]:after{content:"";cursor:col-resize;width:9px;position:absolute;top:0;bottom:0;left:-4px}.app-layout__resizer[data-v-1d5fb6b0]:before{content:"";background:var(--p-content-border-color);opacity:0;pointer-events:none;border-radius:999px;width:4px;height:36px;transition:opacity .15s,background .15s;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.app-layout__resizer[data-v-1d5fb6b0]:hover:before,.app-layout__resizer--active[data-v-1d5fb6b0]:before{opacity:1}.app-layout__resizer--active[data-v-1d5fb6b0]:before{background:var(--p-primary-color)}.app-layout__sidebar-edge-trigger[data-v-1d5fb6b0]{cursor:pointer;background:var(--runeya-sidebar-bg);border-right:1px solid var(--runeya-border);z-index:1;justify-content:center;align-items:center;width:20px;min-width:20px;transition:background .15s;display:flex;position:relative}.app-layout__sidebar-edge-trigger[data-v-1d5fb6b0]:hover{background:var(--runeya-sidebar-active)}.app-layout__sidebar-edge-trigger .pi[data-v-1d5fb6b0]{color:var(--p-text-muted-color);font-size:.5rem}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{Bi as e,Da as t,Dn as n,Gi as r,Ii as i,Li as a,Ra as o,Rn as s,Wi as c,Ya as l,Yn as u,io as d,ja as f,ma as p,qi as m,ua as h,un as g,xr as _,zi as v}from"./index-DuGh2zls.js";import{n as y,t as b}from"./column-BYul0pb1.js";var x={class:`audit-page`},S={class:`filters`},C={key:0,class:`audit-metadata`},w=u(m({__name:`AuditPage`,setup(u){let{t:m}=_(),w=l([]),T=l(0),E=l(!1),D=l(void 0),O=l(void 0),k=l(0),A=l(20),j=i(()=>[{label:m(`auditPage.allActions`),value:void 0},{label:m(`auditPage.actionCreate`),value:`create`},{label:m(`auditPage.actionUpdate`),value:`update`},{label:m(`auditPage.actionDelete`),value:`delete`},{label:m(`auditPage.actionDeploy`),value:`deploy`},{label:m(`auditPage.actionStart`),value:`start`},{label:m(`auditPage.actionStop`),value:`stop`},{label:m(`auditPage.actionRestart`),value:`restart`}]),M=i(()=>[{label:m(`auditPage.allTypes`),value:void 0},{label:m(`auditPage.typeProject`),value:`project`},{label:m(`auditPage.typeService`),value:`service`},{label:m(`auditPage.typeProcess`),value:`process`},{label:m(`auditPage.typeAgent`),value:`agent`}]);async function N(){E.value=!0;try{let e=await s.audit.list.query({action:D.value,entityType:O.value,limit:A.value,offset:k.value});w.value=e.entries,T.value=e.total}catch(e){console.error(`Failed to load audit log:`,e)}finally{E.value=!1}}function P(e){k.value=e.first,A.value=e.rows,N()}function F(e){switch(e){case`create`:return`success`;case`delete`:return`danger`;case`start`:return`success`;case`stop`:return`warn`;default:return`info`}}function I(e){return Object.entries(e).map(([e,t])=>{let n=typeof t==`string`?t:JSON.stringify(t);return`${e}=${n.length>50?n.slice(0,50)+`...`:n}`}).join(`, `)}return t([D,O],()=>{k.value=0,N()}),h(N),(t,i)=>(p(),e(`div`,x,[a(`h2`,null,o(d(m)(`auditPage.title`)),1),a(`div`,S,[r(d(g),{modelValue:D.value,"onUpdate:modelValue":i[0]||=e=>D.value=e,options:j.value,"option-label":`label`,"option-value":`value`,placeholder:d(m)(`auditPage.filterByAction`),class:`filter-select`},null,8,[`modelValue`,`options`,`placeholder`]),r(d(g),{modelValue:O.value,"onUpdate:modelValue":i[1]||=e=>O.value=e,options:M.value,"option-label":`label`,"option-value":`value`,placeholder:d(m)(`auditPage.filterByType`),class:`filter-select`},null,8,[`modelValue`,`options`,`placeholder`])]),r(d(y),{value:w.value,loading:E.value,lazy:!0,paginator:!0,rows:A.value,"total-records":T.value,first:k.value,"rows-per-page-options":[10,20,50],"striped-rows":``,size:`small`,onPage:P},{default:f(()=>[r(d(b),{field:`timestamp`,header:d(m)(`auditPage.timeColumn`),sortable:!1,style:{width:`180px`}},{body:f(({data:e})=>[c(o(new Date(e.timestamp).toLocaleString()),1)]),_:1},8,[`header`]),r(d(b),{field:`action`,header:d(m)(`auditPage.actionColumn`),style:{width:`120px`}},{body:f(({data:e})=>[r(d(n),{value:e.action,severity:F(e.action)},null,8,[`value`,`severity`])]),_:1},8,[`header`]),r(d(b),{field:`entityType`,header:d(m)(`auditPage.entityTypeColumn`),style:{width:`120px`}},null,8,[`header`]),r(d(b),{field:`entityId`,header:d(m)(`auditPage.entityIdColumn`),style:{width:`260px`}},{body:f(({data:e})=>[a(`code`,null,o(e.entityId.substring(0,8))+`...`,1)]),_:1},8,[`header`]),r(d(b),{field:`userId`,header:d(m)(`auditPage.userColumn`),style:{width:`80px`}},null,8,[`header`]),r(d(b),{header:d(m)(`auditPage.detailsColumn`)},{body:f(({data:t})=>[t.metadata?(p(),e(`code`,C,o(I(t.metadata)),1)):v(``,!0)]),_:1},8,[`header`])]),_:1},8,[`value`,`loading`,`rows`,`total-records`,`first`])]))}}),[[`__scopeId`,`data-v-01404a0e`]]);export{w as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import"./cloud-session-DiJ37iee.js";import{t as e}from"./CloudAccountPage-DUCeHm0n.js";export{e as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{$n as e,Bi as t,Da as n,Fa as r,Gi as i,Ii as a,Li as o,Ni as s,On as c,Pn as l,Qt as u,Ra as d,Ri as f,Rn as p,Wi as m,Ya as h,Yn as ee,Zt as te,_r as ne,b as re,ga as g,i as ie,io as _,ja as v,ma as y,qi as b,r as ae,t as oe,zi as x}from"./index-DuGh2zls.js";import{r as se}from"./cloud-session-DiJ37iee.js";import{t as ce}from"./password-DFZGcIGP.js";var le={class:`cloud-account`},ue={class:`cloud-card`},de={class:`cloud-card__head`},fe={class:`cloud-card__headtext`},pe={class:`cloud-card__subtitle`},me={key:0,class:`panel`},he={class:`signup`},ge=[`href`],_e={key:1,class:`panel`},ve={class:`accounts`},ye=[`onClick`],be=[`src`,`alt`],xe={key:1,class:`avatar avatar--sm`},Se={class:`account__info`},Ce={class:`account__name`},we={key:0,class:`account__badge`},Te={class:`account__email`},Ee={key:0,class:`account__cloud`},De={class:`orgs`},Oe={class:`orgs__head`},ke={key:0,class:`orgs__empty`},Ae={key:1,class:`orgs__empty`},je=[`href`],Me={class:`orgs__list`},Ne={class:`org__row`},Pe={class:`org__info`},Fe={class:`org__name`},Ie={class:`org__state`},Le={class:`org__projects`},Re={key:0,class:`org__reset`},ze={class:`org__adopt`},Be={class:`org__reset-actions`},Ve={class:`org__reset-actions`},He={class:`org__reset-text`},Ue={class:`org__reset-actions`},We={class:`orgs`},Ge={class:`orgs__head`},Ke={key:0,class:`orgs__empty`},qe={key:1,class:`orgs__empty`},Je={key:2,class:`orgs__list`},Ye={class:`org__info`},Xe={class:`org__name`},Ze={key:0,class:`badge`},Qe={class:`org__state`},$e={class:`org-note`},et=[`href`],S=ee(b({__name:`CloudAccountPage`,setup(ee){let{accounts:b,currentAccount:S,signIn:tt,signOut:nt,refresh:rt}=se(),C=h(``),w=a(()=>b.value.find(e=>e.id===C.value)??S.value??b.value[0]??null);function it(e){return S.value?.id===e}let at=a(()=>new Set(b.value.map(e=>e.cloudUrl)).size>1);function ot(e){return oe(e.userId,{accountId:e.id})}function st(e,t){return(e||t||`?`).trim().split(/\s+/).slice(0,2).map(e=>e.charAt(0).toUpperCase()).join(``)||`?`}let T=h(``);async function ct(e){T.value=e;try{await nt(e),C.value===e&&(C.value=``),J.value=[],await $()}finally{T.value=``}}let lt=a(()=>ie()),E=a(()=>ae()),D=h(!1),O=h(``);async function k(){D.value=!0,O.value=``;try{await tt()}catch{O.value=`Impossible de joindre Runeya Cloud. Vérifiez la configuration du serveur local.`,D.value=!1}}let A=h([]),j=h(!1),M=h(``),N=h([]),P=te();function ut(e){let t=N.value.find(t=>t.orgId===e);if(!t)return`Non synchronisée`;switch(t.state){case`live`:return`Synchronisée`;case`connecting`:return`Connexion…`;case`unauthenticated`:return`Reconnexion au cloud requise`;case`outdated`:return t.lastIncompatibleVersion?`Mise à jour requise (plus récent que Runeya ${t.lastIncompatibleVersion})`:`Mise à jour de Runeya requise`;case`key-mismatch`:return`Clé de chiffrement différente de celle de l'organisation`;default:return`Arrêtée`}}let F=ne(),I=h({});async function dt(e){if(e.length)try{await p.cloudSync.rememberOrgNames.mutate({orgs:e.map(e=>({orgId:e.id,name:e.name}))})}catch{}}async function ft(){try{let e=await p.setup.getOrgKeys.query();I.value=Object.fromEntries(e.orgs.filter(e=>e.keyHex!==null).map(e=>[e.orgId,e.keyHex]))}catch{I.value={}}}async function pt(e){let t=I.value[e.id];if(t)try{await navigator.clipboard.writeText(t),F.add({severity:`success`,summary:`Copié`,detail:`Clé de ${e.name} copiée dans le presse-papiers`,life:2e3})}catch{F.add({severity:`error`,summary:`Erreur`,detail:`Impossible de copier dans le presse-papiers`,life:3e3})}}function mt(e){return N.value.find(t=>t.orgId===e)?.state===`key-mismatch`||L.value[e]===`mismatch`}let L=h({});async function ht(e){let t=await Promise.all(e.map(async e=>{try{let t=await p.cloudSync.orgKeyStatus.query({orgId:e.id});return[e.id,t.status]}catch{return[e.id,`unknown`]}}));L.value=Object.fromEntries(t)}let R=h({}),z=h({}),B=h({}),V=h({}),H=h(null),U=h(null);function gt(e){return/^[0-9a-f]{64}$/i.test((e??``).trim())}async function _t(e){H.value=e.id,B.value={...B.value,[e.id]:``};try{let t=await p.cloudSync.checkOrgKey.query({orgId:e.id,keyHex:(R.value[e.id]??``).trim()});V.value={...V.value,[e.id]:t.matches?`yes`:`no`}}catch(t){V.value={...V.value,[e.id]:void 0},B.value={...B.value,[e.id]:u(t)}}finally{H.value=null}}async function vt(e){U.value=e.id,B.value={...B.value,[e.id]:``};try{await p.cloudSync.adoptOrgKey.mutate({orgId:e.id,keyHex:(R.value[e.id]??``).trim(),masterPassword:z.value[e.id]??``}),R.value={...R.value,[e.id]:``},z.value={...z.value,[e.id]:``},V.value={...V.value,[e.id]:void 0},await q()}catch(t){B.value={...B.value,[e.id]:u(t)}}finally{U.value=null}}let W=h({}),G=h({}),K=h(null);async function yt(e){K.value=e.id,G.value={...G.value,[e.id]:``};try{await p.cloudSync.resetOrgKey.mutate({orgId:e.id}),W.value={...W.value,[e.id]:``},await q()}catch(t){G.value={...G.value,[e.id]:u(t)}}finally{K.value=null}}function bt(e){let t=P.projects.filter(t=>t.orgId===e).length;return t===0?`Aucun projet`:t===1?`1 projet`:`${t} projets`}async function q(){j.value=!0,M.value=``;try{let[e,t]=await Promise.all([re.organization.list(w.value?.id),p.cloudSync.list.query(),P.fetchAll(),ft()]);if(e.error){M.value=`Impossible de récupérer vos organisations.`;return}A.value=e.data??[],N.value=t,ht(A.value),dt(A.value)}catch(e){M.value=u(e)}finally{j.value=!1}}let J=h([]),Y=h(!1),X=h(``),Z=h(``),Q=new Intl.RelativeTimeFormat(`fr`,{numeric:`auto`});function xt(e){let t=new Date(e.lastSeenAt).getTime(),n=``;if(Number.isFinite(t)){let e=Math.round((t-Date.now())/6e4);n=Math.abs(e)<60?Q.format(e,`minute`):Math.abs(e)<1440?Q.format(Math.round(e/60),`hour`):Q.format(Math.round(e/1440),`day`)}return[e.kind===`device`?`Machine`:`Navigateur`,n&&`vu ${n}`,e.ipAddress].filter(Boolean).join(` · `)}async function $(){Y.value=!0,X.value=``;try{let e=w.value?.id;if(!e){J.value=[];return}J.value=(await p.cloudAuth.devices.query({accountId:e})).devices}catch(e){X.value=u(e)}finally{Y.value=!1}}async function St(e){Z.value=e.id,X.value=``;try{let{self:t}=await p.cloudAuth.revokeDevice.mutate({id:e.id,...w.value?{accountId:w.value.id}:{}});if(t){J.value=[],C.value=``,await rt();return}await $()}catch(e){X.value=u(e)}finally{Z.value=``}}return n(()=>w.value?.id,e=>{e&&(q(),$())},{immediate:!0}),(n,a)=>(y(),t(`div`,le,[o(`div`,ue,[o(`div`,de,[a[1]||=o(`div`,{class:`cloud-card__badge`},[o(`i`,{class:`pi pi-cloud`})],-1),o(`div`,fe,[a[0]||=o(`h1`,{class:`cloud-card__title`},`Runeya Cloud`,-1),o(`p`,pe,d(_(b).length?`Vos comptes`:`Connectez-vous pour synchroniser et collaborer`),1)])]),_(b).length?(y(),t(`div`,_e,[o(`ul`,ve,[(y(!0),t(s,null,g(_(b),n=>(y(),t(`li`,{key:n.id,class:r([`account`,{"account--inspected":w.value?.id===n.id}])},[o(`button`,{type:`button`,class:`account__pick`,onClick:e=>C.value=n.id},[n.image?(y(),t(`img`,{key:0,src:ot(n),alt:n.name,class:`avatar avatar--img avatar--sm`},null,8,be)):(y(),t(`div`,xe,d(st(n.name,n.email)),1)),o(`span`,Se,[o(`strong`,Ce,[m(d(n.name||n.email)+` `,1),it(n.id)?(y(),t(`span`,we,`projet ouvert`)):x(``,!0)]),o(`span`,Te,d(n.email),1),at.value?(y(),t(`span`,Ee,d(n.cloudUrl),1)):x(``,!0)])],8,ye),i(_(e),{icon:`pi pi-sign-out`,severity:`secondary`,text:``,rounded:``,size:`small`,loading:T.value===n.id,title:`Déconnecter ${n.email}`,"aria-label":`Déconnecter ${n.email}`,onClick:e=>ct(n.id)},null,8,[`loading`,`title`,`aria-label`,`onClick`])],2))),128))]),i(_(e),{label:`Lier un autre compte`,icon:`pi pi-plus`,severity:`secondary`,outlined:``,size:`small`,class:`accounts__add`,loading:D.value,onClick:k},null,8,[`loading`]),o(`div`,De,[o(`div`,Oe,[a[4]||=o(`h2`,{class:`orgs__title`},`Organisations`,-1),i(_(e),{icon:`pi pi-refresh`,severity:`secondary`,text:``,rounded:``,size:`small`,loading:j.value,"aria-label":`Rafraîchir`,onClick:q},null,8,[`loading`])]),j.value&&!A.value.length?(y(),t(`p`,ke,`Chargement…`)):A.value.length?(y(),t(s,{key:2},[o(`ul`,Me,[(y(!0),t(s,null,g(A.value,n=>(y(),t(`li`,{key:n.id,class:`org`},[o(`div`,Ne,[o(`div`,Pe,[o(`strong`,Fe,d(n.name),1),o(`span`,Ie,d(ut(n.id)),1)]),o(`span`,Le,d(bt(n.id)),1),I.value[n.id]?(y(),f(_(e),{key:0,icon:`pi pi-copy`,text:``,rounded:``,size:`small`,severity:`secondary`,title:`Copier la clé de cette organisation`,onClick:e=>pt(n)},null,8,[`onClick`])):x(``,!0)]),mt(n.id)?(y(),t(`div`,Re,[a[11]||=o(`p`,{class:`org__reset-text`},[m(` Cette organisation référence une autre clé de chiffrement que celle de cette machine, donc rien ne se synchronise. Deux issues, et elles ne se valent pas : adopter la clé de l'organisation rend lisible ce qui a déjà été chiffré sous elle ; la réinitialiser laisse tout cela `),o(`strong`,null,`définitivement illisible`),m(` et oblige les autres membres à recevoir la nouvelle clé. `)],-1),o(`div`,ze,[a[9]||=o(`p`,{class:`org__reset-text`},[o(`strong`,null,`Vous avez la clé de l'organisation ?`),m(` Collez-la : cette machine l'adoptera pour cette organisation. Seuls son coffre et ceux de ses projets sont re-chiffrés — vos autres organisations gardent la leur — et une sauvegarde est déposée dans chacun avant écriture. `)],-1),o(`div`,Be,[i(_(c),{modelValue:R.value[n.id],"onUpdate:modelValue":e=>R.value[n.id]=e,placeholder:`clé en 64 caractères hexadécimaux`,class:`org__reset-input`,autocomplete:`off`},null,8,[`modelValue`,`onUpdate:modelValue`]),i(_(e),{label:`Vérifier`,size:`small`,outlined:``,disabled:!gt(R.value[n.id])||H.value===n.id,loading:H.value===n.id,onClick:e=>_t(n)},null,8,[`disabled`,`loading`,`onClick`])]),V.value[n.id]===`no`?(y(),f(_(l),{key:0,severity:`warn`,closable:!1},{default:v(()=>[...a[7]||=[m(` Cette clé n'ouvre pas le canari de l'organisation. `,-1)]]),_:1})):x(``,!0),V.value[n.id]===`yes`?(y(),t(s,{key:1},[i(_(l),{severity:`success`,closable:!1},{default:v(()=>[...a[8]||=[m(` Cette clé est bien celle de l'organisation. `,-1)]]),_:1}),o(`div`,Ve,[i(_(ce),{modelValue:z.value[n.id],"onUpdate:modelValue":e=>z.value[n.id]=e,placeholder:`master password de cette machine`,feedback:!1,toggleMask:``,class:`org__reset-input`,inputClass:`w-full`},null,8,[`modelValue`,`onUpdate:modelValue`]),i(_(e),{label:`Adopter cette clé`,size:`small`,disabled:!z.value[n.id]||U.value===n.id,loading:U.value===n.id,onClick:e=>vt(n)},null,8,[`disabled`,`loading`,`onClick`])])],64)):x(``,!0),B.value[n.id]?(y(),f(_(l),{key:2,severity:`error`,closable:!1},{default:v(()=>[m(d(B.value[n.id]),1)]),_:2},1024)):x(``,!0)]),o(`p`,He,[a[10]||=m(` Personne n'a plus la clé ? Il reste la réinitialisation, qui fait repartir la synchronisation sous la clé d'ici. Pour confirmer, saisissez le nom de l'organisation : `,-1),o(`code`,null,d(n.name),1)]),o(`div`,Ue,[i(_(c),{modelValue:W.value[n.id],"onUpdate:modelValue":e=>W.value[n.id]=e,placeholder:n.name,class:`org__reset-input`,autocomplete:`off`},null,8,[`modelValue`,`onUpdate:modelValue`,`placeholder`]),i(_(e),{label:`Réinitialiser la clé`,severity:`danger`,size:`small`,disabled:W.value[n.id]?.trim()!==n.name||K.value===n.id,loading:K.value===n.id,onClick:e=>yt(n)},null,8,[`disabled`,`loading`,`onClick`])]),G.value[n.id]?(y(),f(_(l),{key:0,severity:`error`,closable:!1},{default:v(()=>[m(d(G.value[n.id]),1)]),_:2},1024)):x(``,!0)])):x(``,!0)]))),128))]),a[12]||=o(`p`,{class:`orgs__hint`},` Ouvrez un projet depuis le sélecteur en bas de la fenêtre pour le synchroniser sur cette machine. `,-1)],64)):(y(),t(`p`,Ae,[a[5]||=m(` Aucune organisation. Créez-en une sur `,-1),o(`a`,{href:E.value,target:`_blank`,rel:`noopener`,class:`link link--strong`},`Runeya Cloud`,8,je),a[6]||=m(`. `,-1)])),M.value?(y(),f(_(l),{key:3,severity:`error`,closable:!1},{default:v(()=>[m(d(M.value),1)]),_:1})):x(``,!0)]),o(`div`,We,[o(`div`,Ge,[a[13]||=o(`h2`,{class:`orgs__title`},`Sessions actives`,-1),i(_(e),{icon:`pi pi-refresh`,severity:`secondary`,text:``,rounded:``,size:`small`,loading:Y.value,"aria-label":`Rafraîchir`,onClick:$},null,8,[`loading`])]),Y.value&&!J.value.length?(y(),t(`p`,Ke,`Chargement…`)):J.value.length?(y(),t(`ul`,Je,[(y(!0),t(s,null,g(J.value,n=>(y(),t(`li`,{key:n.id,class:`org`},[o(`div`,Ye,[o(`strong`,Xe,[o(`i`,{class:r(n.kind===`device`?`pi pi-desktop`:`pi pi-globe`)},null,2),m(` `+d(n.name)+` `,1),n.current?(y(),t(`span`,Ze,`cette machine`)):x(``,!0)]),o(`span`,Qe,d(xt(n)),1)]),i(_(e),{label:n.current?`Délier`:`Révoquer`,icon:`pi pi-times`,severity:`danger`,size:`small`,text:``,loading:Z.value===n.id,onClick:e=>St(n)},null,8,[`label`,`loading`,`onClick`])]))),128))])):(y(),t(`p`,qe,`Aucune session active.`)),X.value?(y(),f(_(l),{key:3,severity:`error`,closable:!1},{default:v(()=>[m(d(X.value),1)]),_:1})):x(``,!0)]),o(`div`,$e,[a[16]||=o(`i`,{class:`pi pi-info-circle`},null,-1),o(`span`,null,[a[14]||=m(` La gestion des organisations se fait sur `,-1),o(`a`,{href:E.value,target:`_blank`,rel:`noopener`,class:`link link--strong`},`Runeya Cloud`,8,et),a[15]||=m(`. `,-1)])])])):(y(),t(`div`,me,[a[3]||=o(`p`,{class:`signin-note`},` La connexion se fait sur Runeya Cloud. Vous serez redirigé pour autoriser cette application locale, puis ramené ici. `,-1),i(_(e),{loading:D.value,label:`Se connecter avec Runeya Cloud`,icon:`pi pi-external-link`,class:`submit-btn`,onClick:k},null,8,[`loading`]),O.value?(y(),f(_(l),{key:0,severity:`error`,closable:!1},{default:v(()=>[m(d(O.value),1)]),_:1})):x(``,!0),o(`div`,he,[a[2]||=o(`span`,null,`Pas encore de compte ?`,-1),o(`a`,{href:lt.value,target:`_blank`,rel:`noopener`,class:`link link--strong`},`Créez-en un sur Runeya Cloud`,8,ge)])]))])]))}}),[[`__scopeId`,`data-v-c694908a`]]);export{S as t};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{$n as e,Bi as t,Fa as n,Gi as r,Ii as i,Li as a,R as o,Ra as s,Ri as c,Ya as l,Yn as u,Zn as d,_ as ee,b as te,en as f,fr as p,io as m,ja as ne,ma as h,n as g,pt as re,qi as _,r as v,t as ie,tt as ae,ut as oe,v as se,xr as ce,y}from"./index-DuGh2zls.js";import{r as b}from"./cloud-session-DiJ37iee.js";import{n as x}from"./src-BeueTtBP.js";import{t as S}from"./cloud-chat.store-BKPvf-qg.js";import"./useProjectCloudOrg-DL8Wyd1i.js";import{t as C}from"./useCloudOrg-Bd83ZcEV.js";var w={class:`cloud-chat`},T={class:`topbar`},E={key:0,class:`connect-cta`},D={class:`connect-cta__badge`},O={class:`connect-cta__title`},k={class:`connect-cta__desc`},A={key:1,class:`notice`},j=u(_({__name:`CloudMessagingPage`,setup(u){let{t:_}=ce(),j=p(),{user:M}=b(),N=i(()=>M.value?.id),P=i(()=>g());function F(e){return ie(e,{orgId:L.value})}function I(e,t){return t?_(`cloudMessaging.${e}`,t):_(`cloudMessaging.${e}`)}let{orgId:L,orgSlug:R,members:z,unavailability:B}=C(),V=l([]),{columnTitles:H}=se(V);function U(e,t){return H.value[ee(e,t)]}function W(){R.value&&window.open(`${v()}/app/${R.value}/settings/org/billing`,`_blank`,`noopener`)}let G=S();function le(e){G.noteChannelRead(e)}let K=i(()=>v().replace(/\/+$/,``));function ue(e){let t=/^\/app\/[^/]+(\/kanban\/[^/]+(?:\/card\/[^/?#]+)?)(?:[?#].*)?$/.exec(e);return t?t[1]:null}function de(e,t){if(t!==K.value){j.push(e);return}let n=ue(e);n?j.push(n):window.open(`${t}${e}`,`_blank`,`noopener`)}let{openWithContext:q}=f(),J=re(),Y=l(null),X=l(!1),Z=l(null);function Q(){let e=Z.value;if(!e)return``;let t=e=>new Date(e).toLocaleTimeString([],{hour:`2-digit`,minute:`2-digit`}),n=e.messages.map(e=>`[${t(e.createdAt)}] ${e.userName}: ${e.content}`).join(`
|
|
2
|
+
`);return`Messages de la conversation « ${e.title} » :\n\n${n}`}function $(){return _(`cloudMessaging.aiContextLabel`,{count:Z.value?.messages.length??0})}function fe(e){e.messages.length&&(Z.value=e,X.value=!0)}async function pe(e,t){let n=Q();n.trim()&&(await J.createConversation({runner:e,providerId:t}),q({text:n,label:$(),icon:`pi-comments`}))}function me(e,t,n){X.value=!1,Y.value?.showScenarioDialog(e,void 0,t,n??void 0)}async function he(e,t){X.value=!1,await pe(e===`keep`?void 0:e,t??void 0)}async function ge(e,t,n,r){let i=Q(),a=t||i,o=await J.createConversation({scenarioId:e,scenarioInput:a});if(a&&o){let t=n!==`keep`||r.trim()?{...n===`keep`?{}:{runnerOverride:n},...r.trim()?{modelOverride:r.trim()}:{}}:void 0;J.startScenarioRun(o.id,e,a,void 0,t)}q({text:i,label:$(),icon:`pi-comments`})}return(i,l)=>(h(),t(`div`,w,[a(`div`,T,[r(m(e),{icon:`pi pi-arrow-left`,text:``,rounded:``,onClick:l[0]||=e=>m(j).push({name:`cloud-account`})}),a(`h1`,null,s(m(_)(`cloudMessaging.title`)),1)]),m(M)?m(L)?(h(),c(m(x),{key:2,class:`panel`,client:m(te),"org-id":m(L),"cloud-api-base-url":P.value,"avatar-url":F,"stream-url":m(y),"notify-on-unread":!1,"current-user-id":N.value,members:m(z),t:I,"internal-origins":[K.value],"enable-select-to-ai":``,"card-column":U,onCardRefs:l[2]||=e=>V.value=e,onChannelRead:le,onAiContext:fe,onInternalLink:de,onUpgrade:W},null,8,[`client`,`org-id`,`cloud-api-base-url`,`stream-url`,`current-user-id`,`members`,`internal-origins`])):(h(),t(`div`,A,s(m(B)===`not-member`?m(_)(`cloudMessaging.orgNotAccessible`):m(_)(`cloudMessaging.noProjectOrg`)),1)):(h(),t(`div`,E,[a(`div`,D,[a(`i`,{class:n(m(ae))},null,2)]),a(`h2`,O,s(m(_)(`cloudMessaging.notConnectedTitle`)),1),a(`p`,k,s(m(_)(`cloudMessaging.notConnectedDesc`)),1),r(m(e),{label:m(_)(`cloudMessaging.connectAction`),icon:`pi pi-cloud`,onClick:l[1]||=e=>m(j).push({name:`cloud-account`})},null,8,[`label`])])),r(m(d),{visible:X.value,header:m(_)(`kanban.board.launchAiDialog.header`),modal:!0,style:{width:`700px`,maxHeight:`80vh`},breakpoints:{"800px":`95vw`},pt:{content:{style:`overflow-y:auto`}},"onUpdate:visible":l[3]||=e=>{e||(X.value=!1)}},{default:ne(()=>[r(oe,{compact:``,onSelectScenario:me,onSkip:he})]),_:1},8,[`visible`,`header`]),r(o,{ref_key:`aiModalsRef`,ref:Y,onConfirmScenarioStart:ge},null,512)]))}}),[[`__scopeId`,`data-v-b28e1ca2`]]);export{j as default};
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
import{$n as e,Ai as t,An as n,Bi as r,Da as i,Dn as a,Fa as o,Gi as s,Hi as c,Ii as l,Ka as u,La as d,Li as f,Ma as p,Ni as m,On as h,Qt as g,Ra as _,Ri as v,Rn as y,Sr as b,Wi as x,Ya as S,Yn as C,Zn as ee,Zt as w,_a as T,_i as E,_n as D,_r as te,ai as O,ba as k,c as A,dt as j,er as M,fa as N,fn as P,fr as F,ga as I,gr as L,hi as R,io as z,ja as B,ji as V,ma as H,mt as U,na as W,nr as G,p as K,pi as q,pn as ne,qi as J,ra as re,u as ie,ua as ae,va as oe,xn as se,xr as Y,ya as ce,zi as X}from"./index-DuGh2zls.js";import{r as le}from"./cloud-session-DiJ37iee.js";import{t as ue}from"./ProcessControls-B5dlAAdP.js";import"./OrgKeyPrompt-CRf1ZPik.js";import"./useProjectCatalog-CnGHIrnh.js";import{n as de,r as fe,t as pe}from"./DirectoryPickerDialog-BlFmkPJx.js";import{t as me}from"./card-BQ1OXNVV.js";var he={class:`card-title-row`},ge={class:`card-title`},_e=[`aria-label`],ve={class:`card-description`},ye={class:`card-meta`},be={class:`meta-item`},xe=C(J({__name:`ProjectCard`,props:{project:{},active:{type:Boolean}},emits:[`click`],setup(e,{emit:t}){let n=t,{t:i}=Y(),a=l(()=>i(`dashboard.cloudProject`));function c(e,t){return!e||e.length<=t?e||``:e.slice(0,t)+`...`}return(t,i)=>{let l=ce(`tooltip`);return H(),v(z(me),{class:o([`project-card`,{"project-card--active":e.active}]),onClick:i[0]||=e=>n(`click`)},{title:B(()=>[f(`div`,he,[f(`span`,ge,_(e.project.name),1),e.project.orgId?p((H(),r(`i`,{key:0,class:`pi pi-cloud card-cloud`,"aria-label":a.value},null,8,_e)),[[l,a.value,void 0,{top:!0}]]):X(``,!0),s(z(M),{value:e.project.serviceIds.length,severity:`info`},null,8,[`value`]),T(t.$slots,`actions`,{},void 0,!0)])]),content:B(()=>[f(`p`,ve,_(c(e.project.description??``,120)),1),f(`div`,ye,[f(`span`,be,[i[1]||=f(`i`,{class:`pi pi-box`},null,-1),x(` `+_(e.project.serviceIds.length)+` service`+_(e.project.serviceIds.length===1?``:`s`),1)])])]),_:3},8,[`class`])}}}),[[`__scopeId`,`data-v-02bfd37c`]]),Se={class:`panel`},Ce={class:`panel__header`},we={class:`panel__title`},Te={key:0,class:`panel__empty`},Ee={key:1,class:`project-list`},De=[`aria-label`,`onClick`],Oe={key:0,class:`project-menu`},ke={class:`dialog-field`},Ae={for:`dashboard-edit-name`},je={class:`dialog-field`},Me={for:`dashboard-edit-desc`},Ne=C(J({__name:`ProjectsPanel`,setup(n){let{t:i}=Y(),o=te(),c=L(),u=w(),d=se(),{isLinked:p}=le(),b=S(!1),C=S(null),T=S(null),E=S(!1),O=S(!1),k=S(null),A=S(!1),j=S(null),M=S({name:``,description:``}),N=S(!1),P=S(null),F=l(()=>u.projects.find(e=>e.id===d.activeProjectId&&(e.orgId??null)===(d.activeOrgId??null))??null);function R(e){return F.value?.id===e.id&&(F.value?.orgId??null)===(e.orgId??null)}function U(e){d.setActiveProject(e.id,e.orgId??null)}function W(e,t){C.value=t,T.value?.toggle(e)}function G(){T.value?.hide()}function K(e){o.add({severity:`error`,summary:i(`common.error`),detail:g(e),life:5e3})}function q(e){o.add({severity:`success`,summary:i(`projectList.created`),detail:i(`projectList.createdDetail`,{name:e.name}),life:3e3})}function ne(e){G(),k.value=e,O.value=!0}function J(e){j.value=e,M.value={name:e.name,description:e.description??``},A.value=!0,G()}async function re(){let e=j.value;if(!(!e||!M.value.name.trim())){b.value=!0;try{if(!await u.update(e,{name:M.value.name.trim(),description:M.value.description.trim()})){K(u.error);return}A.value=!1,o.add({severity:`success`,summary:i(`projectDetail.nameUpdated`),life:2e3})}finally{b.value=!1}}}async function ie(e){if(G(),j.value=e,P.value=null,e.orgId)try{let{path:t}=await y.project.getLocalPath.query({id:e.id,orgId:e.orgId});P.value=t??null}catch{P.value=null}N.value=!0}function ae(e){P.value=e}function oe(e){G(),c.require({message:i(`dashboard.deleteProjectMessage`,{name:e.name}),header:i(`projectDetail.deleteProjectTitle`),icon:`pi pi-exclamation-triangle`,rejectLabel:i(`projectDetail.deleteProjectCancel`),acceptLabel:i(`projectDetail.deleteProjectConfirm`),acceptProps:{severity:`danger`},accept:()=>{ce(e)}})}async function ce(e){let t=R(e);if(!await u.remove(e)){K(u.error);return}if(t){let e=u.projects[0];e?d.setActiveProject(e.id,e.orgId??null):d.resetLaunch()}o.add({severity:`success`,summary:i(`projectDetail.projectDeleted`),life:2e3})}return(n,o)=>(H(),r(`section`,Se,[f(`div`,Ce,[f(`h2`,we,_(z(i)(`dashboard.projects`)),1),s(z(a),{value:String(z(u).projectCount),severity:`secondary`},null,8,[`value`]),s(z(e),{icon:`pi pi-plus`,label:z(i)(`projectList.newProject`),size:`small`,text:``,"data-testid":`new-project-btn`,onClick:o[0]||=e=>E.value=!0},null,8,[`label`])]),z(u).projects.length===0?(H(),r(`p`,Te,_(z(i)(`dashboard.noProjects`)),1)):(H(),r(`div`,Ee,[(H(!0),r(m,null,I(z(u).projects,e=>(H(),v(xe,{key:`${e.orgId??`local`}:${e.id}`,project:e,active:R(e),"data-testid":`project-row-link`,onClick:t=>U(e)},{actions:B(()=>[f(`button`,{type:`button`,class:`project-menu-button`,"aria-label":z(i)(`common.actions`),onClick:V(t=>W(t,e),[`stop`])},[...o[13]||=[f(`i`,{class:`pi pi-ellipsis-v`},null,-1)]],8,De)]),_:2},1032,[`project`,`active`,`onClick`]))),128))])),s(z(D),{ref_key:`menu`,ref:T},{default:B(()=>[C.value?(H(),r(`div`,Oe,[f(`button`,{type:`button`,class:`project-menu__item`,onClick:o[1]||=e=>J(C.value)},[o[14]||=f(`i`,{class:`pi pi-pencil`},null,-1),x(_(z(i)(`dashboard.editProject`)),1)]),!C.value.orgId&&z(p)?(H(),r(`button`,{key:0,type:`button`,class:`project-menu__item`,"data-testid":`project-publish`,onClick:o[2]||=e=>ne(C.value)},[o[15]||=f(`i`,{class:`pi pi-cloud-upload`},null,-1),x(_(z(i)(`projectSwitcher.publish`)),1)])):X(``,!0),C.value.orgId?(H(),r(`button`,{key:1,type:`button`,class:`project-menu__item`,"data-testid":`project-local-path`,onClick:o[3]||=e=>ie(C.value)},[o[16]||=f(`i`,{class:`pi pi-folder-open`},null,-1),x(_(z(i)(`projectDetail.cloud.localPath`)),1)])):X(``,!0),f(`button`,{type:`button`,class:`project-menu__item project-menu__item--danger`,onClick:o[4]||=e=>oe(C.value)},[o[17]||=f(`i`,{class:`pi pi-trash`},null,-1),x(_(z(i)(`projectDetail.deleteProjectTitle`)),1)])])):X(``,!0)]),_:1},512),s(fe,{visible:E.value,"onUpdate:visible":o[5]||=e=>E.value=e,onCreated:q},null,8,[`visible`]),s(de,{visible:O.value,"onUpdate:visible":o[6]||=e=>O.value=e,project:k.value,onPublished:o[7]||=e=>z(u).fetchAll()},null,8,[`visible`,`project`]),s(z(ee),{visible:A.value,"onUpdate:visible":o[11]||=e=>A.value=e,header:z(i)(`dashboard.editProject`),modal:``,style:{width:`420px`}},{footer:B(()=>[s(z(e),{label:z(i)(`actions.cancel`),severity:`secondary`,text:``,disabled:b.value,onClick:o[10]||=e=>A.value=!1},null,8,[`label`,`disabled`]),s(z(e),{label:z(i)(`actions.save`),icon:`pi pi-check`,loading:b.value,disabled:!M.value.name.trim(),onClick:re},null,8,[`label`,`loading`,`disabled`])]),default:B(()=>[f(`div`,ke,[f(`label`,Ae,_(z(i)(`common.name`)),1),s(z(h),{id:`dashboard-edit-name`,modelValue:M.value.name,"onUpdate:modelValue":o[8]||=e=>M.value.name=e,autofocus:``,onKeyup:t(re,[`enter`])},null,8,[`modelValue`])]),f(`div`,je,[f(`label`,Me,_(z(i)(`common.description`)),1),s(z(h),{id:`dashboard-edit-desc`,modelValue:M.value.description,"onUpdate:modelValue":o[9]||=e=>M.value.description=e,onKeyup:t(re,[`enter`])},null,8,[`modelValue`])])]),_:1},8,[`visible`,`header`]),j.value?.orgId?(H(),v(pe,{key:2,visible:N.value,"onUpdate:visible":o[12]||=e=>N.value=e,"project-id":j.value.id,"org-id":j.value.orgId,"project-name":j.value.name,"initial-path":P.value,onChosen:ae},null,8,[`visible`,`project-id`,`org-id`,`project-name`,`initial-path`])):X(``,!0)]))}}),[[`__scopeId`,`data-v-96906af6`]]);function Pe(e,t){let n=new Map;for(let e of t)e.from!==e.to&&n.set(e.to,[...n.get(e.to)??[],e.from]);let r=new Map,i=new Set,a=e=>{let t=r.get(e);if(t!==void 0)return t;if(i.has(e))return 0;i.add(e);let o=0;for(let t of n.get(e)??[])o=Math.max(o,a(t)+1);return i.delete(e),r.set(e,o),o};for(let t of e)a(t.id);return r}function Fe(e,t,n){if(e.length===0)return{nodes:[],width:n.padding*2,height:n.padding*2};let r=Pe(e,t),i=new Map;for(let t of e){let e=r.get(t.id)??0;i.set(e,[...i.get(e)??[],t])}let a=Math.max(...[...i.values()].map(e=>e.length)),o=Math.max(...i.keys()),s=n.padding*2+a*n.rowHeight,c=n.padding*2+(o+1)*n.columnWidth,l=[];for(let[e,t]of i){let r=(a-t.length)/2;t.forEach((t,i)=>{l.push({...t,depth:e,x:n.padding+e*n.columnWidth+n.columnWidth/2,y:n.padding+(r+i+.5)*n.rowHeight})})}let u=new Map(l.map(e=>[e.id,e]));return{nodes:e.map(e=>u.get(e.id)),width:c,height:s}}var Z=1.1,Ie=16;function Le(e){return Math.min(3,Math.max(.2,e))}function Re(e,t,n){let r=Le(e.scale*t),i=r/e.scale;return{scale:r,x:n.x-(n.x-e.x)*i,y:n.y-(n.y-e.y)*i}}function ze(e,t,n){return{...e,x:e.x+t,y:e.y+n}}function Be(e,t){if(t.width<=0||t.height<=0||e.width<=0||e.height<=0)return{x:0,y:0,scale:1};let n=Math.min(Ie,t.width/4,t.height/4),r=Le(Math.min(1,(t.width-2*n)/e.width,(t.height-2*n)/e.height));return{scale:r,x:(t.width-e.width*r)/2,y:(t.height-e.height*r)/2}}function Ve(){let e=S({x:0,y:0,scale:1}),t=S(!1),n=null,r=!1;function i(t){t.preventDefault();let n=t.currentTarget.getBoundingClientRect(),r=t.deltaY<0?Z:1/Z;e.value=Re(e.value,r,{x:t.clientX-n.left,y:t.clientY-n.top})}function a(t){if(!n)return;let i=t.clientX-n.x,a=t.clientY-n.y;(i!==0||a!==0)&&(r=!0),n={x:t.clientX,y:t.clientY},e.value=ze(e.value,i,a)}function o(){n=null,t.value=!1,window.removeEventListener(`pointermove`,a),window.removeEventListener(`pointerup`,o),window.removeEventListener(`pointercancel`,o),r&&setTimeout(()=>{r=!1},0)}function s(e){e.button===0&&(r=!1,n={x:e.clientX,y:e.clientY},t.value=!0,window.addEventListener(`pointermove`,a),window.addEventListener(`pointerup`,o),window.addEventListener(`pointercancel`,o))}function c(t,n){e.value=Be(t,n)}let l=e=>({x:e.width/2,y:e.height/2});function d(t){e.value=Re(e.value,Z*Z,l(t))}function f(t){e.value=Re(e.value,1/(Z*Z),l(t))}return u(o),{transform:e,isPanning:t,onWheel:i,onPointerDown:s,fit:c,zoomIn:d,zoomOut:f,dragJustEnded:()=>r}}var He={class:`panel service-graph`},Ue=[`aria-expanded`],We={class:`panel__title`},Ge={class:`service-graph__hint`},Ke={key:0,class:`panel__empty`},qe={key:1,class:`panel__empty`},Je={key:2,class:`panel__empty`},Ye={key:0,class:`panel__empty`},Xe={class:`service-graph__controls`},Ze=[`title`,`aria-label`],Qe=[`title`,`aria-label`],$e=[`title`,`aria-label`],et=[`viewBox`,`width`,`height`,`aria-label`],tt=[`d`],nt=[`aria-label`,`onMouseenter`,`onFocus`,`onClick`,`onKeydown`],rt=[`x`,`y`],it=[`x`,`y`],at=[`x`,`y`],ot={key:1,class:`service-graph__keys`},st={key:2,class:`service-graph__warnings`},ct=210,lt=84,ut=24,dt=150,ft=44,pt=`runeya.dashboard.serviceGraphCollapsed`,mt=C(J({__name:`ServiceGraphPanel`,props:{project:{}},setup(e){let n=e,{t:a}=Y(),s=F(),c=S([]),u=S([]),p=S([]),h=S(!1),g=S(!1),v=S(null);function b(){try{return localStorage.getItem(pt)!==`false`}catch{return!0}}let C=S(b());function ee(){C.value=!C.value;try{localStorage.setItem(pt,String(C.value))}catch{}}i(C,e=>{e||E()});function w(){c.value=[],u.value=[],p.value=[]}let T=0;async function E(){let e=n.project,t=++T;if(!e||C.value){w(),h.value=!1,g.value=!1;return}h.value=!0,g.value=!1;try{let n=await y.project.graph.query({id:e.id,orgId:e.orgId??null});if(t!==T)return;c.value=n.nodes,u.value=n.edges,p.value=n.dangling}catch{if(t!==T)return;g.value=!0,w()}finally{t===T&&(h.value=!1)}}i(()=>n.project?`${n.project.id}|${n.project.orgId??``}`:null,E,{immediate:!0});let D=l(()=>Fe(c.value,u.value,{columnWidth:ct,rowHeight:lt,padding:ut})),te=l(()=>new Map(D.value.nodes.map(e=>[e.id,e]))),O=l(()=>u.value.flatMap(e=>{let t=te.value.get(e.from),n=te.value.get(e.to);if(!t||!n)return[];let r=t.x+dt/2,i=n.x-dt/2,a=Math.max(40,Math.abs(i-r)/2);return[{...e,id:`${e.from}->${e.to}`,path:`M ${r} ${t.y} C ${r+a} ${t.y}, ${i-a} ${n.y}, ${i} ${n.y}`}]}));function k(e){return v.value!==null&&(e.from===v.value||e.to===v.value)}function A(e){return v.value===null||v.value===e?!1:!u.value.some(t=>t.from===v.value&&t.to===e||t.to===v.value&&t.from===e)}let j=l(()=>{if(!v.value)return[];let e=new Set;for(let t of u.value)if(t.from===v.value||t.to===v.value)for(let n of t.keys)e.add(n);return[...e].sort()});function M(e){return c.value.find(t=>t.id===e)}let N=S(null),P=Ve(),{transform:L,isPanning:R}=P;function B(){return{width:N.value?.clientWidth??0,height:N.value?.clientHeight??0}}function U(){P.fit({width:D.value.width,height:D.value.height},B())}i(()=>`${D.value.width}x${D.value.height}`,()=>void re(U),{immediate:!0});function W(e){P.dragJustEnded()||s.push(`/services/${e}`)}return(e,n)=>(H(),r(`section`,He,[f(`button`,{type:`button`,class:o([`panel__header service-graph__toggle`,{"service-graph__toggle--collapsed":C.value}]),"aria-expanded":!C.value,onClick:ee},[f(`i`,{class:o([`pi`,C.value?`pi-chevron-right`:`pi-chevron-down`]),"aria-hidden":`true`},null,2),f(`h2`,We,_(z(a)(`dashboard.graphTitle`)),1),f(`span`,Ge,_(z(a)(`dashboard.graphHint`)),1)],10,Ue),C.value?X(``,!0):(H(),r(m,{key:0},[h.value?(H(),r(`p`,Ke,_(z(a)(`dashboard.graphLoading`)),1)):g.value?(H(),r(`p`,qe,_(z(a)(`dashboard.graphFailed`)),1)):c.value.length===0?(H(),r(`p`,Je,_(z(a)(`dashboard.graphNoServices`)),1)):(H(),r(m,{key:3},[u.value.length===0?(H(),r(`p`,Ye,_(z(a)(`dashboard.graphNoLinks`)),1)):X(``,!0),f(`div`,{ref_key:`frame`,ref:N,class:o([`service-graph__frame`,{"service-graph__frame--panning":z(R)}]),onWheel:n[7]||=(...e)=>z(P).onWheel&&z(P).onWheel(...e),onPointerdown:n[8]||=(...e)=>z(P).onPointerDown&&z(P).onPointerDown(...e),onDblclick:V(U,[`self`])},[f(`div`,Xe,[f(`button`,{type:`button`,class:`service-graph__control`,title:z(a)(`dashboard.graphZoomIn`),"aria-label":z(a)(`dashboard.graphZoomIn`),onClick:n[0]||=e=>z(P).zoomIn(B()),onPointerdown:n[1]||=V(()=>{},[`stop`])},[...n[9]||=[f(`i`,{class:`pi pi-plus`,"aria-hidden":`true`},null,-1)]],40,Ze),f(`button`,{type:`button`,class:`service-graph__control`,title:z(a)(`dashboard.graphZoomOut`),"aria-label":z(a)(`dashboard.graphZoomOut`),onClick:n[2]||=e=>z(P).zoomOut(B()),onPointerdown:n[3]||=V(()=>{},[`stop`])},[...n[10]||=[f(`i`,{class:`pi pi-minus`,"aria-hidden":`true`},null,-1)]],40,Qe),f(`button`,{type:`button`,class:`service-graph__control`,title:z(a)(`dashboard.graphFit`),"aria-label":z(a)(`dashboard.graphFit`),onClick:U,onPointerdown:n[4]||=V(()=>{},[`stop`])},[...n[11]||=[f(`i`,{class:`pi pi-arrows-alt`,"aria-hidden":`true`},null,-1)]],40,$e)]),(H(),r(`svg`,{class:`service-graph__svg`,viewBox:`0 0 ${D.value.width} ${D.value.height}`,width:D.value.width,height:D.value.height,style:d({transform:`translate(${z(L).x}px, ${z(L).y}px) scale(${z(L).scale})`}),role:`img`,"aria-label":z(a)(`dashboard.graphAria`,{count:u.value.length})},[n[12]||=f(`defs`,null,[f(`marker`,{id:`service-graph-arrow`,viewBox:`0 0 10 10`,refX:`9`,refY:`5`,markerWidth:`6`,markerHeight:`6`,orient:`auto-start-reverse`},[f(`path`,{d:`M 0 0 L 10 5 L 0 10 z`,class:`service-graph__arrow-head`})])],-1),(H(!0),r(m,null,I(O.value,e=>(H(),r(`path`,{key:e.id,d:e.path,class:o([`service-graph__edge`,{"service-graph__edge--active":k(e),"service-graph__edge--dimmed":v.value!==null&&!k(e)}]),"marker-end":`url(#service-graph-arrow)`},null,10,tt))),128)),(H(!0),r(m,null,I(D.value.nodes,e=>(H(),r(`g`,{key:e.id,class:o([`service-graph__node`,{"service-graph__node--dimmed":A(e.id)}]),tabindex:`0`,role:`button`,"aria-label":e.name,onMouseenter:t=>v.value=e.id,onMouseleave:n[5]||=e=>v.value=null,onFocus:t=>v.value=e.id,onBlur:n[6]||=e=>v.value=null,onClick:t=>W(e.id),onKeydown:[t(V(t=>W(e.id),[`prevent`]),[`enter`]),t(V(t=>W(e.id),[`prevent`]),[`space`])]},[f(`rect`,{x:e.x-dt/2,y:e.y-ft/2,width:dt,height:ft,rx:`8`,class:o([`service-graph__box`,{"service-graph__box--ambiguous":e.ambiguousSlug}])},null,10,rt),f(`text`,{x:e.x,y:e.y-3,class:`service-graph__name`},_(e.name),9,it),f(`text`,{x:e.x,y:e.y+12,class:`service-graph__slug`},_(e.slug),9,at)],42,nt))),128))],12,et))],34),j.value.length>0?(H(),r(`p`,ot,[x(_(z(a)(`dashboard.graphVia`))+` `,1),(H(!0),r(m,null,I(j.value,e=>(H(),r(`code`,{key:e},_(e),1))),128))])):X(``,!0),p.value.length>0?(H(),r(`ul`,st,[(H(!0),r(m,null,I(p.value,e=>(H(),r(`li`,{key:`${e.from}-${e.slug}`},_(z(a)(`dashboard.graphDangling`,{service:M(e.from)?.name??e.from,slug:e.slug,keys:e.keys.join(`, `)})),1))),128))])):X(``,!0)],64))],64))]))}}),[[`__scopeId`,`data-v-20bb5767`]]),ht=b.extend({name:`togglebutton`,style:`
|
|
2
|
+
.p-togglebutton {
|
|
3
|
+
display: inline-flex;
|
|
4
|
+
cursor: pointer;
|
|
5
|
+
user-select: none;
|
|
6
|
+
overflow: hidden;
|
|
7
|
+
position: relative;
|
|
8
|
+
color: dt('togglebutton.color');
|
|
9
|
+
background: dt('togglebutton.background');
|
|
10
|
+
border: 1px solid dt('togglebutton.border.color');
|
|
11
|
+
padding: dt('togglebutton.padding');
|
|
12
|
+
font-size: 1rem;
|
|
13
|
+
font-family: inherit;
|
|
14
|
+
font-feature-settings: inherit;
|
|
15
|
+
transition:
|
|
16
|
+
background dt('togglebutton.transition.duration'),
|
|
17
|
+
color dt('togglebutton.transition.duration'),
|
|
18
|
+
border-color dt('togglebutton.transition.duration'),
|
|
19
|
+
outline-color dt('togglebutton.transition.duration'),
|
|
20
|
+
box-shadow dt('togglebutton.transition.duration');
|
|
21
|
+
border-radius: dt('togglebutton.border.radius');
|
|
22
|
+
outline-color: transparent;
|
|
23
|
+
font-weight: dt('togglebutton.font.weight');
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
.p-togglebutton-content {
|
|
27
|
+
display: inline-flex;
|
|
28
|
+
flex: 1 1 auto;
|
|
29
|
+
align-items: center;
|
|
30
|
+
justify-content: center;
|
|
31
|
+
gap: dt('togglebutton.gap');
|
|
32
|
+
padding: dt('togglebutton.content.padding');
|
|
33
|
+
background: transparent;
|
|
34
|
+
border-radius: dt('togglebutton.content.border.radius');
|
|
35
|
+
transition:
|
|
36
|
+
background dt('togglebutton.transition.duration'),
|
|
37
|
+
color dt('togglebutton.transition.duration'),
|
|
38
|
+
border-color dt('togglebutton.transition.duration'),
|
|
39
|
+
outline-color dt('togglebutton.transition.duration'),
|
|
40
|
+
box-shadow dt('togglebutton.transition.duration');
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
.p-togglebutton:not(:disabled):not(.p-togglebutton-checked):hover {
|
|
44
|
+
background: dt('togglebutton.hover.background');
|
|
45
|
+
color: dt('togglebutton.hover.color');
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
.p-togglebutton.p-togglebutton-checked {
|
|
49
|
+
background: dt('togglebutton.checked.background');
|
|
50
|
+
border-color: dt('togglebutton.checked.border.color');
|
|
51
|
+
color: dt('togglebutton.checked.color');
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
.p-togglebutton-checked .p-togglebutton-content {
|
|
55
|
+
background: dt('togglebutton.content.checked.background');
|
|
56
|
+
box-shadow: dt('togglebutton.content.checked.shadow');
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
.p-togglebutton:focus-visible {
|
|
60
|
+
box-shadow: dt('togglebutton.focus.ring.shadow');
|
|
61
|
+
outline: dt('togglebutton.focus.ring.width') dt('togglebutton.focus.ring.style') dt('togglebutton.focus.ring.color');
|
|
62
|
+
outline-offset: dt('togglebutton.focus.ring.offset');
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
.p-togglebutton.p-invalid {
|
|
66
|
+
border-color: dt('togglebutton.invalid.border.color');
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
.p-togglebutton:disabled {
|
|
70
|
+
opacity: 1;
|
|
71
|
+
cursor: default;
|
|
72
|
+
background: dt('togglebutton.disabled.background');
|
|
73
|
+
border-color: dt('togglebutton.disabled.border.color');
|
|
74
|
+
color: dt('togglebutton.disabled.color');
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
.p-togglebutton-label,
|
|
78
|
+
.p-togglebutton-icon {
|
|
79
|
+
position: relative;
|
|
80
|
+
transition: none;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
.p-togglebutton-icon {
|
|
84
|
+
color: dt('togglebutton.icon.color');
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
.p-togglebutton:not(:disabled):not(.p-togglebutton-checked):hover .p-togglebutton-icon {
|
|
88
|
+
color: dt('togglebutton.icon.hover.color');
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
.p-togglebutton.p-togglebutton-checked .p-togglebutton-icon {
|
|
92
|
+
color: dt('togglebutton.icon.checked.color');
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
.p-togglebutton:disabled .p-togglebutton-icon {
|
|
96
|
+
color: dt('togglebutton.icon.disabled.color');
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
.p-togglebutton-sm {
|
|
100
|
+
padding: dt('togglebutton.sm.padding');
|
|
101
|
+
font-size: dt('togglebutton.sm.font.size');
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
.p-togglebutton-sm .p-togglebutton-content {
|
|
105
|
+
padding: dt('togglebutton.content.sm.padding');
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
.p-togglebutton-lg {
|
|
109
|
+
padding: dt('togglebutton.lg.padding');
|
|
110
|
+
font-size: dt('togglebutton.lg.font.size');
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
.p-togglebutton-lg .p-togglebutton-content {
|
|
114
|
+
padding: dt('togglebutton.content.lg.padding');
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
.p-togglebutton-fluid {
|
|
118
|
+
width: 100%;
|
|
119
|
+
}
|
|
120
|
+
`,classes:{root:function(e){var t=e.instance,n=e.props;return[`p-togglebutton p-component`,{"p-togglebutton-checked":t.active,"p-invalid":t.$invalid,"p-togglebutton-fluid":n.fluid,"p-togglebutton-sm p-inputfield-sm":n.size===`small`,"p-togglebutton-lg p-inputfield-lg":n.size===`large`}]},content:`p-togglebutton-content`,icon:`p-togglebutton-icon`,label:`p-togglebutton-label`}}),gt={name:`BaseToggleButton`,extends:n,props:{onIcon:String,offIcon:String,onLabel:{type:String,default:`Yes`},offLabel:{type:String,default:`No`},readonly:{type:Boolean,default:!1},tabindex:{type:Number,default:null},ariaLabelledby:{type:String,default:null},ariaLabel:{type:String,default:null},size:{type:String,default:null},fluid:{type:Boolean,default:null}},style:ht,provide:function(){return{$pcToggleButton:this,$parentInstance:this}}};function Q(e){"@babel/helpers - typeof";return Q=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},Q(e)}function _t(e,t,n){return(t=vt(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function vt(e){var t=yt(e,`string`);return Q(t)==`symbol`?t:t+``}function yt(e,t){if(Q(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t);if(Q(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}var bt={name:`ToggleButton`,extends:gt,inheritAttrs:!1,emits:[`change`],methods:{getPTOptions:function(e){return(e===`root`?this.ptmi:this.ptm)(e,{context:{active:this.active,disabled:this.disabled}})},onChange:function(e){!this.disabled&&!this.readonly&&(this.writeValue(!this.d_value,e),this.$emit(`change`,e))},onBlur:function(e){var t,n;(t=(n=this.formField).onBlur)==null||t.call(n,e)}},computed:{active:function(){return this.d_value===!0},hasLabel:function(){return E(this.onLabel)&&E(this.offLabel)},label:function(){return this.hasLabel?this.d_value?this.onLabel:this.offLabel:`\xA0`},dataP:function(){return O(_t({checked:this.active,invalid:this.$invalid},this.size,this.size))}},directives:{ripple:G}},xt=[`tabindex`,`disabled`,`aria-pressed`,`aria-label`,`aria-labelledby`,`data-p-checked`,`data-p-disabled`,`data-p`],St=[`data-p`];function Ct(e,t,n,i,a,s){var c=ce(`ripple`);return p((H(),r(`button`,W({type:`button`,class:e.cx(`root`),tabindex:e.tabindex,disabled:e.disabled,"aria-pressed":e.d_value,onClick:t[0]||=function(){return s.onChange&&s.onChange.apply(s,arguments)},onBlur:t[1]||=function(){return s.onBlur&&s.onBlur.apply(s,arguments)}},s.getPTOptions(`root`),{"aria-label":e.ariaLabel,"aria-labelledby":e.ariaLabelledby,"data-p-checked":s.active,"data-p-disabled":e.disabled,"data-p":s.dataP}),[f(`span`,W({class:e.cx(`content`)},s.getPTOptions(`content`),{"data-p":s.dataP}),[T(e.$slots,`default`,{},function(){return[T(e.$slots,`icon`,{value:e.d_value,class:o(e.cx(`icon`))},function(){return[e.onIcon||e.offIcon?(H(),r(`span`,W({key:0,class:[e.cx(`icon`),e.d_value?e.onIcon:e.offIcon]},s.getPTOptions(`icon`)),null,16)):X(``,!0)]}),f(`span`,W({class:e.cx(`label`)},s.getPTOptions(`label`)),_(s.label),17)]})],16,St)],16,xt)),[[c]])}bt.render=Ct;var wt=b.extend({name:`selectbutton`,style:`
|
|
121
|
+
.p-selectbutton {
|
|
122
|
+
display: inline-flex;
|
|
123
|
+
user-select: none;
|
|
124
|
+
vertical-align: bottom;
|
|
125
|
+
outline-color: transparent;
|
|
126
|
+
border-radius: dt('selectbutton.border.radius');
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
.p-selectbutton .p-togglebutton {
|
|
130
|
+
border-radius: 0;
|
|
131
|
+
border-width: 1px 1px 1px 0;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
.p-selectbutton .p-togglebutton:focus-visible {
|
|
135
|
+
position: relative;
|
|
136
|
+
z-index: 1;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
.p-selectbutton .p-togglebutton:first-child {
|
|
140
|
+
border-inline-start-width: 1px;
|
|
141
|
+
border-start-start-radius: dt('selectbutton.border.radius');
|
|
142
|
+
border-end-start-radius: dt('selectbutton.border.radius');
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
.p-selectbutton .p-togglebutton:last-child {
|
|
146
|
+
border-start-end-radius: dt('selectbutton.border.radius');
|
|
147
|
+
border-end-end-radius: dt('selectbutton.border.radius');
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
.p-selectbutton.p-invalid {
|
|
151
|
+
outline: 1px solid dt('selectbutton.invalid.border.color');
|
|
152
|
+
outline-offset: 0;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
.p-selectbutton-fluid {
|
|
156
|
+
width: 100%;
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
.p-selectbutton-fluid .p-togglebutton {
|
|
160
|
+
flex: 1 1 0;
|
|
161
|
+
}
|
|
162
|
+
`,classes:{root:function(e){var t=e.props,n=e.instance;return[`p-selectbutton p-component`,{"p-invalid":n.$invalid,"p-selectbutton-fluid":t.fluid}]}}}),Tt={name:`BaseSelectButton`,extends:n,props:{options:Array,optionLabel:null,optionValue:null,optionDisabled:null,multiple:Boolean,allowEmpty:{type:Boolean,default:!0},dataKey:null,ariaLabelledby:{type:String,default:null},size:{type:String,default:null},fluid:{type:Boolean,default:null}},style:wt,provide:function(){return{$pcSelectButton:this,$parentInstance:this}}};function Et(e,t){var n=typeof Symbol<`u`&&e[Symbol.iterator]||e[`@@iterator`];if(!n){if(Array.isArray(e)||(n=kt(e))||t){n&&(e=n);var r=0,i=function(){};return{s:i,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw TypeError(`Invalid attempt to iterate non-iterable instance.
|
|
163
|
+
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var a,o=!0,s=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return o=e.done,e},e:function(e){s=!0,a=e},f:function(){try{o||n.return==null||n.return()}finally{if(s)throw a}}}}function Dt(e){return jt(e)||At(e)||kt(e)||Ot()}function Ot(){throw TypeError(`Invalid attempt to spread non-iterable instance.
|
|
164
|
+
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function kt(e,t){if(e){if(typeof e==`string`)return Mt(e,t);var n={}.toString.call(e).slice(8,-1);return n===`Object`&&e.constructor&&(n=e.constructor.name),n===`Map`||n===`Set`?Array.from(e):n===`Arguments`||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Mt(e,t):void 0}}function At(e){if(typeof Symbol<`u`&&e[Symbol.iterator]!=null||e[`@@iterator`]!=null)return Array.from(e)}function jt(e){if(Array.isArray(e))return Mt(e)}function Mt(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var Nt={name:`SelectButton`,extends:Tt,inheritAttrs:!1,emits:[`change`],methods:{getOptionLabel:function(e){return this.optionLabel?R(e,this.optionLabel):e},getOptionValue:function(e){return this.optionValue?R(e,this.optionValue):e},getOptionRenderKey:function(e){return this.dataKey?R(e,this.dataKey):this.getOptionLabel(e)},isOptionDisabled:function(e){return this.optionDisabled?R(e,this.optionDisabled):!1},isOptionReadonly:function(e){if(this.allowEmpty)return!1;var t=this.isSelected(e);return this.multiple?t&&this.d_value.length===1:t},onOptionSelect:function(e,t,n){var r=this;if(!(this.disabled||this.isOptionDisabled(t)||this.isOptionReadonly(t))){var i=this.isSelected(t),a=this.getOptionValue(t),o;if(this.multiple)if(i){if(o=this.d_value.filter(function(e){return!q(e,a,r.equalityKey)}),!this.allowEmpty&&o.length===0)return}else o=this.d_value?[].concat(Dt(this.d_value),[a]):[a];else{if(i&&!this.allowEmpty)return;o=i?null:a}this.writeValue(o,e),this.$emit(`change`,{originalEvent:e,value:o})}},isSelected:function(e){var t=!1,n=this.getOptionValue(e);if(this.multiple){if(this.d_value){var r=Et(this.d_value),i;try{for(r.s();!(i=r.n()).done;){var a=i.value;if(q(a,n,this.equalityKey)){t=!0;break}}}catch(e){r.e(e)}finally{r.f()}}}else t=q(this.d_value,n,this.equalityKey);return t}},computed:{equalityKey:function(){return this.optionValue?null:this.dataKey},dataP:function(){return O({invalid:this.$invalid})}},directives:{ripple:G},components:{ToggleButton:bt}},Pt=[`aria-labelledby`,`data-p`];function Ft(e,t,n,i,a,o){var s=oe(`ToggleButton`);return H(),r(`div`,W({class:e.cx(`root`),role:`group`,"aria-labelledby":e.ariaLabelledby},e.ptmi(`root`),{"data-p":o.dataP}),[(H(!0),r(m,null,I(e.options,function(t,n){return H(),v(s,{key:o.getOptionRenderKey(t),modelValue:o.isSelected(t),onLabel:o.getOptionLabel(t),offLabel:o.getOptionLabel(t),disabled:e.disabled||o.isOptionDisabled(t),unstyled:e.unstyled,size:e.size,readonly:o.isOptionReadonly(t),onChange:function(e){return o.onOptionSelect(e,t,n)},pt:e.ptm(`pcToggleButton`)},c({_:2},[e.$slots.option?{name:`default`,fn:B(function(){return[T(e.$slots,`option`,{option:t,index:n},function(){return[f(`span`,W({ref_for:!0},e.ptm(`pcToggleButton`).label),_(o.getOptionLabel(t)),17)]})]}),key:`0`}:void 0]),1032,[`modelValue`,`onLabel`,`offLabel`,`disabled`,`unstyled`,`size`,`readonly`,`onChange`,`pt`])}),128))],16,Pt)}Nt.render=Ft;function It(e){if(e==null||!Number.isFinite(e)||e<0)return`—`;let t=Math.floor(e/1e3);if(t<60)return`${t}s`;let n=Math.floor(t/60);if(n<60)return`${n}m`;let r=Math.floor(n/60);return r<24?`${r}h ${n%60}m`:`${Math.floor(r/24)}d ${r%24}h`}var Lt={key:0,class:`service-row__agent`},Rt={key:1,class:`service-row__agent service-row__agent--missing`},zt=[`aria-label`],Bt={class:`service-row__name`},Vt={class:`service-row__state`},Ht={key:2,class:`pi pi-exclamation-triangle service-row__health`},Ut=C(J({__name:`ServiceStatusRow`,props:{service:{},processes:{},now:{}},setup(e){let t=e,{t:n}=Y(),i=F(),a=j(),c=l(()=>A(t.processes)),u=l(()=>c.value?.state??`stopped`),d=l(()=>{switch(u.value){case`running`:return`success`;case`starting`:return`warn`;case`errored`:return`danger`;default:return`idle`}}),h=l(()=>ie(t.service)),g=l(()=>h.value?a.getById(h.value)?.config.name??h.value:null),v=l(()=>{let e=c.value;return!e||e.state!==`running`?null:e.startedAt?Math.max(0,t.now-new Date(e.startedAt).getTime()):e.uptime*1e3}),y=l(()=>c.value?.healthStatus===`unhealthy`);function b(){i.push(`/services/${t.service.id}`)}return(t,i)=>{let a=ce(`tooltip`);return H(),r(`div`,{class:o([`service-row`,`service-row--${d.value}`])},[f(`button`,{type:`button`,class:`service-row__main`,"data-testid":`service-row-link`,onClick:b},[g.value?p((H(),r(`span`,Lt,[i[0]||=f(`i`,{class:`pi pi-server`},null,-1),x(_(g.value),1)])),[[a,g.value,void 0,{top:!0}]]):(H(),r(`span`,Rt,_(z(n)(`serviceHeader.noAgent`)),1)),f(`span`,{class:`service-row__dot`,role:`img`,"aria-label":z(n)(`status.${u.value}`)},null,8,zt),f(`span`,Bt,_(e.service.name),1),f(`span`,Vt,[x(_(z(n)(`status.${u.value}`))+` `,1),v.value===null?X(``,!0):(H(),r(m,{key:0},[x(` · `+_(z(It)(v.value)),1)],64))]),y.value?p((H(),r(`i`,Ht,null,512)),[[a,z(n)(`dashboard.unhealthy`),void 0,{top:!0}]]):X(``,!0)]),s(ue,{class:`service-row__controls`,compact:``,"agent-id":c.value?.agentId??h.value??``,"process-id":c.value?.id??e.service.id,state:u.value},null,8,[`agent-id`,`process-id`,`state`])],2)}}}),[[`__scopeId`,`data-v-9b75c217`]]);function Wt(){let e=K(),t=U(),n=l(()=>t.services.map(t=>{let n=e.getByService(t.id);return{service:t,processes:n,state:A(n)?.state??`stopped`}}));return{states:n,runningCount:l(()=>n.value.filter(e=>e.state===`running`||e.state===`starting`).length),erroredCount:l(()=>n.value.filter(e=>e.state===`errored`).length),stoppedCount:l(()=>n.value.filter(e=>e.state===`stopped`).length)}}var Gt={class:`panel`,"data-testid":`services-panel`},Kt={class:`panel__header`},qt={class:`panel__title`},Jt={key:0,class:`panel__empty`},Yt={key:1,class:`panel__empty`},Xt={key:2,class:`service-list`},Zt=C(J({__name:`ServicesPanel`,props:{project:{},now:{}},setup(t){let n=t,{t:i}=Y(),a=F(),o=S(`all`),c=S(``),u=l(()=>[{value:`all`,label:i(`dashboard.filterAll`)},{value:`running`,label:i(`dashboard.filterRunning`)},{value:`issues`,label:i(`dashboard.filterIssues`)},{value:`stopped`,label:i(`dashboard.filterStopped`)}]),{states:d}=Wt(),p=l(()=>{let e=c.value.trim().toLowerCase(),t=d.value.filter(t=>e&&!t.service.name.toLowerCase().includes(e)?!1:o.value===`running`?t.state===`running`||t.state===`starting`:o.value===`issues`?t.state===`errored`:o.value===`stopped`?t.state===`stopped`:!0),n=e=>e===`errored`?0:e===`starting`?1:e===`running`?2:3;return[...t].sort((e,t)=>n(e.state)-n(t.state)||e.service.name.localeCompare(t.service.name))});function g(){a.push({name:`service-create`,...n.project?{query:{projectId:n.project.id}}:{}})}return(n,a)=>(H(),r(`section`,Gt,[f(`div`,Kt,[f(`h2`,qt,_(z(i)(`dashboard.services`)),1),s(z(ne),{class:`panel__search`},{default:B(()=>[s(z(P),{class:`pi pi-search`}),s(z(h),{modelValue:c.value,"onUpdate:modelValue":a[0]||=e=>c.value=e,size:`small`,placeholder:z(i)(`projectDetail.searchServices`)},null,8,[`modelValue`,`placeholder`])]),_:1}),s(z(Nt),{modelValue:o.value,"onUpdate:modelValue":a[1]||=e=>o.value=e,options:u.value,"option-label":`label`,"option-value":`value`,size:`small`,"allow-empty":!1},null,8,[`modelValue`,`options`]),s(z(e),{class:`panel__create`,icon:`pi pi-plus`,label:z(i)(`projectDetail.createNew`),size:`small`,onClick:g},null,8,[`label`])]),z(d).length===0?(H(),r(`p`,Jt,_(z(i)(`dashboard.noServices`)),1)):p.value.length===0?(H(),r(`p`,Yt,_(z(i)(`dashboard.noServicesForFilter`)),1)):(H(),r(`div`,Xt,[(H(!0),r(m,null,I(p.value,e=>(H(),v(Ut,{key:e.service.id,service:e.service,processes:e.processes,now:t.now},null,8,[`service`,`processes`,`now`]))),128))]))]))}}),[[`__scopeId`,`data-v-a75d6318`]]),Qt={class:`stat-tile__value`},$t={class:`stat-tile__label`},$=C(J({__name:`StatTile`,props:{icon:{},value:{},label:{},tone:{},to:{}},setup(e){let t=e,n=F(),r=l(()=>t.tone??`neutral`);function i(){t.to&&n.push(t.to)}return(e,n)=>(H(),v(k(t.to?`button`:`div`),{type:t.to?`button`:void 0,class:o([`stat-tile`,[`stat-tile--${r.value}`,{"stat-tile--clickable":!!t.to}]]),onClick:i},{default:B(()=>[f(`i`,{class:o([`pi`,t.icon,`stat-tile__icon`])},null,2),f(`span`,Qt,_(t.value),1),f(`span`,$t,_(t.label),1)]),_:1},8,[`type`,`class`]))}}),[[`__scopeId`,`data-v-37755c11`]]),en={class:`dashboard-page`},tn={class:`dashboard-header`},nn={class:`dashboard-header__title`},rn={class:`dashboard-header__subtitle`},an=[`aria-label`],on={class:`dashboard-columns`},sn={class:`dashboard-aside`},cn={class:`panel`},ln={class:`panel__header`},un={class:`panel__title`},dn={key:0,class:`panel__empty`},fn={key:1,class:`agent-list`},pn={class:`agent-item__name`},mn={class:`agent-item__state`},hn=C(J({__name:`DashboardPage`,setup(e){let{t}=Y(),n=w(),i=j(),a=K(),c=U(),u=se(),d=S(Date.now()),p=null,h=S(null),g=l(()=>n.projects.find(e=>e.id===u.activeProjectId&&(e.orgId??null)===(u.activeOrgId??null))??null);ae(async()=>{await Promise.all([n.fetchAll(),i.fetchAll(),a.fetchAll(),c.fetchAll()]),p=setInterval(()=>{d.value=Date.now()},1e3);try{let e=await y.wiki.list.query({scope:`global`}),t=0,n=e=>{for(let r of e)r.type===`file`?t+=1:r.type===`dir`&&Array.isArray(r.children)&&n(r.children)};n(e.entries),h.value=t}catch{h.value=null}}),N(()=>{p&&clearInterval(p)});let{runningCount:b,erroredCount:x,stoppedCount:C}=Wt(),ee=l(()=>i.agents.filter(e=>!e.status.connected).length);return(e,n)=>(H(),r(`div`,en,[f(`header`,tn,[f(`h1`,nn,_(z(t)(`dashboard.title`)),1),f(`p`,rn,_(z(t)(`dashboard.subtitle`)),1)]),f(`section`,{class:`health-band`,"aria-label":z(t)(`dashboard.healthBand`)},[s($,{icon:`pi-play-circle`,tone:`success`,value:z(b),label:z(t)(`dashboard.servicesRunning`)},null,8,[`value`,`label`]),s($,{icon:`pi-exclamation-triangle`,tone:z(x)>0?`danger`:`neutral`,value:z(x),label:z(t)(`dashboard.servicesErrored`)},null,8,[`tone`,`value`,`label`]),s($,{icon:`pi-pause-circle`,tone:`neutral`,value:z(C),label:z(t)(`dashboard.servicesStopped`)},null,8,[`value`,`label`]),s($,{icon:`pi-server`,tone:ee.value>0?`warn`:`success`,value:`${z(i).connectedAgents.length}/${z(i).agents.length}`,label:z(t)(`dashboard.agentsConnected`),to:`/settings?section=agents`},null,8,[`tone`,`value`,`label`])],8,an),g.value?(H(),v(mt,{key:0,project:g.value},null,8,[`project`])):X(``,!0),f(`div`,on,[s(Zt,{project:g.value,now:d.value},null,8,[`project`,`now`]),f(`div`,sn,[s(Ne),f(`section`,cn,[f(`div`,ln,[f(`h2`,un,_(z(t)(`dashboard.agentStatus`)),1)]),z(i).agents.length===0?(H(),r(`p`,dn,_(z(t)(`dashboard.noAgents`)),1)):(H(),r(`ul`,fn,[(H(!0),r(m,null,I(z(i).agents,e=>(H(),r(`li`,{key:e.config.id,class:`agent-item`},[f(`span`,{class:o([`agent-item__dot`,e.status.connected?`agent-item__dot--on`:`agent-item__dot--off`])},null,2),f(`span`,pn,_(e.config.name),1),f(`span`,mn,_(e.status.connected?z(t)(`dashboard.connected`):z(t)(`dashboard.disconnected`)),1)]))),128))]))]),s($,{icon:`pi-book`,value:h.value??`—`,label:z(t)(`dashboard.globalWiki`),to:`/wiki`},null,8,[`value`,`label`])])])]))}}),[[`__scopeId`,`data-v-398f289d`]]);export{hn as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
.project-card[data-v-02bfd37c]{cursor:pointer;border:1px solid var(--p-content-border-color);background:var(--p-content-background);border-radius:12px;transition:box-shadow .2s,border-color .2s,transform .2s}.project-card[data-v-02bfd37c]:hover{border-color:var(--p-primary-color);transform:translateY(-2px);box-shadow:0 6px 18px #00000024}.project-card--active[data-v-02bfd37c]{border-color:var(--p-primary-color);box-shadow:inset 3px 0 0 var(--p-primary-color)}@media (prefers-reduced-motion:reduce){.project-card[data-v-02bfd37c]{transition:box-shadow .2s,border-color .2s}.project-card[data-v-02bfd37c]:hover{transform:none}}.card-title-row[data-v-02bfd37c]{justify-content:space-between;align-items:center;gap:.5rem;display:flex}.card-cloud[data-v-02bfd37c]{color:var(--p-primary-color);font-size:.85rem}.card-title[data-v-02bfd37c]{text-overflow:ellipsis;white-space:nowrap;margin-right:auto;font-size:1.1rem;font-weight:600;overflow:hidden}.card-description[data-v-02bfd37c]{color:var(--p-text-muted-color);min-height:2.5em;margin:.5rem 0 1rem;font-size:.875rem;line-height:1.4}.card-meta[data-v-02bfd37c]{color:var(--p-text-muted-color);gap:1rem;font-size:.8rem;display:flex}.meta-item[data-v-02bfd37c]{align-items:center;gap:.35rem;display:inline-flex}.panel[data-v-ad4c15eb]{border:1px solid var(--p-content-border-color);border-radius:var(--p-border-radius);background:var(--p-content-background);padding:1rem}.panel__header[data-v-ad4c15eb]{align-items:center;gap:.5rem;margin-bottom:.75rem;display:flex}.panel__title[data-v-ad4c15eb]{text-transform:uppercase;letter-spacing:.06em;color:var(--p-text-muted-color);margin:0 auto 0 0;font-size:.8rem;font-weight:700}.panel__empty[data-v-ad4c15eb]{text-align:center;color:var(--p-text-muted-color);margin:0;padding:1.5rem 0;font-size:.875rem}.project-list[data-v-ad4c15eb]{flex-direction:column;gap:.75rem;display:flex}.project-menu-button[data-v-ad4c15eb]{width:1.75rem;height:1.75rem;color:var(--p-text-muted-color);cursor:pointer;background:0 0;border:0;border-radius:50%;justify-content:center;align-items:center;padding:0;display:inline-flex}.project-menu-button[data-v-ad4c15eb]:hover{background:var(--p-content-hover-background);color:var(--p-text-color)}.project-menu[data-v-ad4c15eb]{flex-direction:column;min-width:200px;display:flex}.project-menu__item[data-v-ad4c15eb]{border-radius:var(--p-border-radius);font:inherit;color:inherit;text-align:left;cursor:pointer;background:0 0;border:0;align-items:center;gap:.6rem;padding:.5rem .75rem;display:flex}.project-menu__item[data-v-ad4c15eb]:hover{background:var(--p-content-hover-background)}.project-menu__item--danger[data-v-ad4c15eb]{color:var(--p-red-500)}.dialog-field[data-v-ad4c15eb]{flex-direction:column;gap:.35rem;margin-bottom:1rem;display:flex}.dialog-field label[data-v-ad4c15eb]{color:var(--p-text-muted-color);font-size:.85rem}.panel[data-v-20bb5767]{border:1px solid var(--p-content-border-color);border-radius:var(--p-border-radius);background:var(--p-content-background);padding:1rem}.panel__header[data-v-20bb5767]{flex-wrap:wrap;align-items:center;gap:.5rem;margin-bottom:.75rem;display:flex}.panel__title[data-v-20bb5767]{text-transform:uppercase;letter-spacing:.06em;color:var(--p-text-muted-color);margin:0;font-size:.8rem;font-weight:700}.panel__empty[data-v-20bb5767]{text-align:center;color:var(--p-text-muted-color);margin:0;padding:1.5rem 0;font-size:.875rem}.service-graph__toggle[data-v-20bb5767]{width:100%;font:inherit;color:inherit;text-align:left;cursor:pointer;background:0 0;border:none;padding:0}.service-graph__toggle--collapsed[data-v-20bb5767]{margin-bottom:0}.service-graph__toggle>.pi[data-v-20bb5767],.service-graph__hint[data-v-20bb5767]{color:var(--p-text-muted-color);font-size:.75rem}.service-graph__frame[data-v-20bb5767]{border:1px solid var(--p-content-border-color);border-radius:var(--p-border-radius);background:var(--p-content-hover-background);cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;height:320px;position:relative;overflow:hidden}.service-graph__frame--panning[data-v-20bb5767]{cursor:grabbing}.service-graph__svg[data-v-20bb5767]{transform-origin:0 0;position:absolute;top:0;left:0;overflow:visible}.service-graph__controls[data-v-20bb5767]{z-index:1;flex-direction:column;gap:.25rem;display:flex;position:absolute;top:.5rem;right:.5rem}.service-graph__control[data-v-20bb5767]{border:1px solid var(--p-content-border-color);border-radius:var(--p-border-radius);background:var(--p-content-background);width:1.75rem;height:1.75rem;color:var(--p-text-muted-color);cursor:pointer;justify-content:center;align-items:center;font-size:.7rem;display:inline-flex}.service-graph__control[data-v-20bb5767]:hover{color:var(--p-text-color);border-color:var(--p-primary-color)}.service-graph__edge[data-v-20bb5767]{fill:none;stroke:var(--p-content-border-color);stroke-width:1.5px;transition:stroke .15s,opacity .15s}.service-graph__edge--active[data-v-20bb5767]{stroke:var(--p-primary-color);stroke-width:2.5px}.service-graph__edge--dimmed[data-v-20bb5767]{opacity:.25}.service-graph__arrow-head[data-v-20bb5767]{fill:var(--p-content-border-color)}.service-graph__node[data-v-20bb5767]{cursor:pointer;transition:opacity .15s}.service-graph__node--dimmed[data-v-20bb5767]{opacity:.35}.service-graph__box[data-v-20bb5767]{fill:var(--p-content-background);stroke:var(--p-content-border-color);stroke-width:1.5px;transition:stroke .15s}.service-graph__node:hover .service-graph__box[data-v-20bb5767],.service-graph__node:focus-visible .service-graph__box[data-v-20bb5767]{stroke:var(--p-primary-color)}.service-graph__box--ambiguous[data-v-20bb5767]{stroke:var(--p-orange-500);stroke-dasharray:4 3}.service-graph__name[data-v-20bb5767]{fill:var(--p-text-color);text-anchor:middle;font-size:.8rem;font-weight:600}.service-graph__slug[data-v-20bb5767]{fill:var(--p-text-muted-color);text-anchor:middle;font-family:monospace;font-size:.7rem}.service-graph__keys[data-v-20bb5767]{color:var(--p-text-muted-color);flex-wrap:wrap;align-items:center;gap:.35rem;margin:.5rem 0 0;font-size:.75rem;display:flex}.service-graph__keys code[data-v-20bb5767]{background:var(--p-content-hover-background);border-radius:var(--p-border-radius);padding:.1rem .35rem}.service-graph__warnings[data-v-20bb5767]{color:var(--p-orange-500);margin:.75rem 0 0;padding-left:1.1rem;font-size:.75rem}.service-row[data-v-9b75c217]{--row-accent:var(--p-text-muted-color);border-radius:var(--p-border-radius);border:1px solid #0000;justify-content:space-between;align-items:center;gap:.75rem;padding:.5rem .75rem;display:flex}.service-row[data-v-9b75c217]:hover{background:var(--p-content-hover-background);border-color:var(--p-content-border-color)}.service-row--success[data-v-9b75c217]{--row-accent:var(--p-green-500)}.service-row--warn[data-v-9b75c217]{--row-accent:var(--p-orange-500)}.service-row--danger[data-v-9b75c217]{--row-accent:var(--p-red-500)}.service-row--idle[data-v-9b75c217]{--row-accent:var(--p-surface-400)}.service-row__main[data-v-9b75c217]{min-width:0;font:inherit;color:inherit;text-align:left;cursor:pointer;background:0 0;border:0;flex:1;align-items:center;gap:.625rem;padding:0;display:flex}.service-row__dot[data-v-9b75c217]{background:var(--row-accent);border-radius:50%;flex-shrink:0;width:.5rem;height:.5rem}.service-row__name[data-v-9b75c217]{text-overflow:ellipsis;white-space:nowrap;font-weight:600;overflow:hidden}.service-row__agent[data-v-9b75c217],.service-row__state[data-v-9b75c217]{color:var(--p-text-muted-color);white-space:nowrap;font-size:.78rem}.service-row__agent[data-v-9b75c217]{text-overflow:ellipsis;white-space:nowrap;flex-shrink:0;align-items:center;gap:.25rem;width:7rem;display:inline-flex;overflow:hidden}.service-row__agent--missing[data-v-9b75c217]{color:var(--p-orange-500)}.service-row__state[data-v-9b75c217]{font-variant-numeric:tabular-nums;margin-left:auto}.service-row__health[data-v-9b75c217]{color:var(--p-orange-500);font-size:.85rem}@media (max-width:640px){.service-row[data-v-9b75c217]{flex-wrap:wrap}.service-row__controls[data-v-9b75c217]{margin-left:auto}}.panel[data-v-a75d6318]{border:1px solid var(--p-content-border-color);border-radius:var(--p-border-radius);background:var(--p-content-background);padding:1rem}.panel__header[data-v-a75d6318]{flex-wrap:wrap;align-items:center;gap:.5rem;margin-bottom:.75rem;display:flex}.panel__title[data-v-a75d6318]{text-transform:uppercase;letter-spacing:.06em;color:var(--p-text-muted-color);margin:0 auto 0 0;font-size:.8rem;font-weight:700}.panel__search[data-v-a75d6318] input{width:9rem}.panel__create[data-v-a75d6318]{margin-left:auto}.panel__empty[data-v-a75d6318]{text-align:center;color:var(--p-text-muted-color);margin:0;padding:1.5rem 0;font-size:.875rem}.service-list[data-v-a75d6318]{flex-direction:column;gap:.125rem;display:flex}.stat-tile[data-v-37755c11]{--stat-accent:var(--p-text-muted-color);border:1px solid var(--p-content-border-color);border-radius:var(--p-border-radius);background:var(--p-content-background);text-align:left;font:inherit;color:inherit;grid-template-rows:auto auto;grid-template-columns:auto 1fr;align-items:center;gap:0 .75rem;padding:.875rem 1rem;display:grid}.stat-tile--success[data-v-37755c11]{--stat-accent:var(--p-green-500)}.stat-tile--warn[data-v-37755c11]{--stat-accent:var(--p-orange-500)}.stat-tile--danger[data-v-37755c11]{--stat-accent:var(--p-red-500)}.stat-tile--neutral[data-v-37755c11]{--stat-accent:var(--p-primary-color)}.stat-tile--clickable[data-v-37755c11]{cursor:pointer;transition:border-color .15s,background .15s}.stat-tile--clickable[data-v-37755c11]:hover,.stat-tile--clickable[data-v-37755c11]:focus-visible{border-color:var(--stat-accent);background:var(--p-content-hover-background)}.stat-tile__icon[data-v-37755c11]{color:var(--stat-accent);grid-row:1/span 2;font-size:1.125rem}.stat-tile__value[data-v-37755c11]{font-variant-numeric:tabular-nums;font-size:1.5rem;font-weight:700;line-height:1.1}.stat-tile__label[data-v-37755c11]{color:var(--p-text-muted-color);font-size:.8rem}.dashboard-page[data-v-398f289d]{flex-direction:column;gap:1.5rem;max-width:1400px;display:flex}.dashboard-header__title[data-v-398f289d]{letter-spacing:-.01em;margin:0;font-size:1.5rem;font-weight:700}.dashboard-header__subtitle[data-v-398f289d]{color:var(--p-text-muted-color);margin:.25rem 0 0;font-size:.875rem}.health-band[data-v-398f289d]{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:.75rem;display:grid}.dashboard-columns[data-v-398f289d]{grid-template-columns:minmax(0,2fr) minmax(300px,1fr);align-items:start;gap:1.25rem;display:grid}.dashboard-aside[data-v-398f289d]{flex-direction:column;gap:1.25rem;display:flex}.panel[data-v-398f289d]{border:1px solid var(--p-content-border-color);border-radius:var(--p-border-radius);background:var(--p-content-background);padding:1rem}.panel__header[data-v-398f289d]{justify-content:space-between;align-items:center;gap:.75rem;margin-bottom:.75rem;display:flex}.panel__title[data-v-398f289d]{text-transform:uppercase;letter-spacing:.06em;color:var(--p-text-muted-color);margin:0;font-size:.8rem;font-weight:700}.panel__empty[data-v-398f289d]{text-align:center;color:var(--p-text-muted-color);margin:0;padding:1.5rem 0;font-size:.875rem}.agent-list[data-v-398f289d]{flex-direction:column;gap:.25rem;margin:0;padding:0;list-style:none;display:flex}.agent-item[data-v-398f289d]{align-items:center;gap:.5rem;padding:.375rem 0;display:flex}.agent-item__dot[data-v-398f289d]{border-radius:50%;width:.5rem;height:.5rem}.agent-item__dot--on[data-v-398f289d]{background:var(--p-green-500)}.agent-item__dot--off[data-v-398f289d]{background:var(--p-red-500)}.agent-item__name[data-v-398f289d]{text-overflow:ellipsis;white-space:nowrap;font-weight:500;overflow:hidden}.agent-item__state[data-v-398f289d]{color:var(--p-text-muted-color);margin-left:auto;font-size:.78rem}@media (max-width:1024px){.dashboard-columns[data-v-398f289d]{grid-template-columns:minmax(0,1fr)}}
|
|
1
|
+
.project-card[data-v-02bfd37c]{cursor:pointer;border:1px solid var(--p-content-border-color);background:var(--p-content-background);border-radius:12px;transition:box-shadow .2s,border-color .2s,transform .2s}.project-card[data-v-02bfd37c]:hover{border-color:var(--p-primary-color);transform:translateY(-2px);box-shadow:0 6px 18px #00000024}.project-card--active[data-v-02bfd37c]{border-color:var(--p-primary-color);box-shadow:inset 3px 0 0 var(--p-primary-color)}@media (prefers-reduced-motion:reduce){.project-card[data-v-02bfd37c]{transition:box-shadow .2s,border-color .2s}.project-card[data-v-02bfd37c]:hover{transform:none}}.card-title-row[data-v-02bfd37c]{justify-content:space-between;align-items:center;gap:.5rem;display:flex}.card-cloud[data-v-02bfd37c]{color:var(--p-primary-color);font-size:.85rem}.card-title[data-v-02bfd37c]{text-overflow:ellipsis;white-space:nowrap;margin-right:auto;font-size:1.1rem;font-weight:600;overflow:hidden}.card-description[data-v-02bfd37c]{color:var(--p-text-muted-color);min-height:2.5em;margin:.5rem 0 1rem;font-size:.875rem;line-height:1.4}.card-meta[data-v-02bfd37c]{color:var(--p-text-muted-color);gap:1rem;font-size:.8rem;display:flex}.meta-item[data-v-02bfd37c]{align-items:center;gap:.35rem;display:inline-flex}.panel[data-v-96906af6]{border:1px solid var(--p-content-border-color);border-radius:var(--p-border-radius);background:var(--p-content-background);padding:1rem}.panel__header[data-v-96906af6]{align-items:center;gap:.5rem;margin-bottom:.75rem;display:flex}.panel__title[data-v-96906af6]{text-transform:uppercase;letter-spacing:.06em;color:var(--p-text-muted-color);margin:0 auto 0 0;font-size:.8rem;font-weight:700}.panel__empty[data-v-96906af6]{text-align:center;color:var(--p-text-muted-color);margin:0;padding:1.5rem 0;font-size:.875rem}.project-list[data-v-96906af6]{flex-direction:column;gap:.75rem;display:flex}.project-menu-button[data-v-96906af6]{width:1.75rem;height:1.75rem;color:var(--p-text-muted-color);cursor:pointer;background:0 0;border:0;border-radius:50%;justify-content:center;align-items:center;padding:0;display:inline-flex}.project-menu-button[data-v-96906af6]:hover{background:var(--p-content-hover-background);color:var(--p-text-color)}.project-menu[data-v-96906af6]{flex-direction:column;min-width:200px;display:flex}.project-menu__item[data-v-96906af6]{border-radius:var(--p-border-radius);font:inherit;color:inherit;text-align:left;cursor:pointer;background:0 0;border:0;align-items:center;gap:.6rem;padding:.5rem .75rem;display:flex}.project-menu__item[data-v-96906af6]:hover{background:var(--p-content-hover-background)}.project-menu__item--danger[data-v-96906af6]{color:var(--p-red-500)}.dialog-field[data-v-96906af6]{flex-direction:column;gap:.35rem;margin-bottom:1rem;display:flex}.dialog-field label[data-v-96906af6]{color:var(--p-text-muted-color);font-size:.85rem}.panel[data-v-20bb5767]{border:1px solid var(--p-content-border-color);border-radius:var(--p-border-radius);background:var(--p-content-background);padding:1rem}.panel__header[data-v-20bb5767]{flex-wrap:wrap;align-items:center;gap:.5rem;margin-bottom:.75rem;display:flex}.panel__title[data-v-20bb5767]{text-transform:uppercase;letter-spacing:.06em;color:var(--p-text-muted-color);margin:0;font-size:.8rem;font-weight:700}.panel__empty[data-v-20bb5767]{text-align:center;color:var(--p-text-muted-color);margin:0;padding:1.5rem 0;font-size:.875rem}.service-graph__toggle[data-v-20bb5767]{width:100%;font:inherit;color:inherit;text-align:left;cursor:pointer;background:0 0;border:none;padding:0}.service-graph__toggle--collapsed[data-v-20bb5767]{margin-bottom:0}.service-graph__toggle>.pi[data-v-20bb5767],.service-graph__hint[data-v-20bb5767]{color:var(--p-text-muted-color);font-size:.75rem}.service-graph__frame[data-v-20bb5767]{border:1px solid var(--p-content-border-color);border-radius:var(--p-border-radius);background:var(--p-content-hover-background);cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;height:320px;position:relative;overflow:hidden}.service-graph__frame--panning[data-v-20bb5767]{cursor:grabbing}.service-graph__svg[data-v-20bb5767]{transform-origin:0 0;position:absolute;top:0;left:0;overflow:visible}.service-graph__controls[data-v-20bb5767]{z-index:1;flex-direction:column;gap:.25rem;display:flex;position:absolute;top:.5rem;right:.5rem}.service-graph__control[data-v-20bb5767]{border:1px solid var(--p-content-border-color);border-radius:var(--p-border-radius);background:var(--p-content-background);width:1.75rem;height:1.75rem;color:var(--p-text-muted-color);cursor:pointer;justify-content:center;align-items:center;font-size:.7rem;display:inline-flex}.service-graph__control[data-v-20bb5767]:hover{color:var(--p-text-color);border-color:var(--p-primary-color)}.service-graph__edge[data-v-20bb5767]{fill:none;stroke:var(--p-content-border-color);stroke-width:1.5px;transition:stroke .15s,opacity .15s}.service-graph__edge--active[data-v-20bb5767]{stroke:var(--p-primary-color);stroke-width:2.5px}.service-graph__edge--dimmed[data-v-20bb5767]{opacity:.25}.service-graph__arrow-head[data-v-20bb5767]{fill:var(--p-content-border-color)}.service-graph__node[data-v-20bb5767]{cursor:pointer;transition:opacity .15s}.service-graph__node--dimmed[data-v-20bb5767]{opacity:.35}.service-graph__box[data-v-20bb5767]{fill:var(--p-content-background);stroke:var(--p-content-border-color);stroke-width:1.5px;transition:stroke .15s}.service-graph__node:hover .service-graph__box[data-v-20bb5767],.service-graph__node:focus-visible .service-graph__box[data-v-20bb5767]{stroke:var(--p-primary-color)}.service-graph__box--ambiguous[data-v-20bb5767]{stroke:var(--p-orange-500);stroke-dasharray:4 3}.service-graph__name[data-v-20bb5767]{fill:var(--p-text-color);text-anchor:middle;font-size:.8rem;font-weight:600}.service-graph__slug[data-v-20bb5767]{fill:var(--p-text-muted-color);text-anchor:middle;font-family:monospace;font-size:.7rem}.service-graph__keys[data-v-20bb5767]{color:var(--p-text-muted-color);flex-wrap:wrap;align-items:center;gap:.35rem;margin:.5rem 0 0;font-size:.75rem;display:flex}.service-graph__keys code[data-v-20bb5767]{background:var(--p-content-hover-background);border-radius:var(--p-border-radius);padding:.1rem .35rem}.service-graph__warnings[data-v-20bb5767]{color:var(--p-orange-500);margin:.75rem 0 0;padding-left:1.1rem;font-size:.75rem}.service-row[data-v-9b75c217]{--row-accent:var(--p-text-muted-color);border-radius:var(--p-border-radius);border:1px solid #0000;justify-content:space-between;align-items:center;gap:.75rem;padding:.5rem .75rem;display:flex}.service-row[data-v-9b75c217]:hover{background:var(--p-content-hover-background);border-color:var(--p-content-border-color)}.service-row--success[data-v-9b75c217]{--row-accent:var(--p-green-500)}.service-row--warn[data-v-9b75c217]{--row-accent:var(--p-orange-500)}.service-row--danger[data-v-9b75c217]{--row-accent:var(--p-red-500)}.service-row--idle[data-v-9b75c217]{--row-accent:var(--p-surface-400)}.service-row__main[data-v-9b75c217]{min-width:0;font:inherit;color:inherit;text-align:left;cursor:pointer;background:0 0;border:0;flex:1;align-items:center;gap:.625rem;padding:0;display:flex}.service-row__dot[data-v-9b75c217]{background:var(--row-accent);border-radius:50%;flex-shrink:0;width:.5rem;height:.5rem}.service-row__name[data-v-9b75c217]{text-overflow:ellipsis;white-space:nowrap;font-weight:600;overflow:hidden}.service-row__agent[data-v-9b75c217],.service-row__state[data-v-9b75c217]{color:var(--p-text-muted-color);white-space:nowrap;font-size:.78rem}.service-row__agent[data-v-9b75c217]{text-overflow:ellipsis;white-space:nowrap;flex-shrink:0;align-items:center;gap:.25rem;width:7rem;display:inline-flex;overflow:hidden}.service-row__agent--missing[data-v-9b75c217]{color:var(--p-orange-500)}.service-row__state[data-v-9b75c217]{font-variant-numeric:tabular-nums;margin-left:auto}.service-row__health[data-v-9b75c217]{color:var(--p-orange-500);font-size:.85rem}@media (max-width:640px){.service-row[data-v-9b75c217]{flex-wrap:wrap}.service-row__controls[data-v-9b75c217]{margin-left:auto}}.panel[data-v-a75d6318]{border:1px solid var(--p-content-border-color);border-radius:var(--p-border-radius);background:var(--p-content-background);padding:1rem}.panel__header[data-v-a75d6318]{flex-wrap:wrap;align-items:center;gap:.5rem;margin-bottom:.75rem;display:flex}.panel__title[data-v-a75d6318]{text-transform:uppercase;letter-spacing:.06em;color:var(--p-text-muted-color);margin:0 auto 0 0;font-size:.8rem;font-weight:700}.panel__search[data-v-a75d6318] input{width:9rem}.panel__create[data-v-a75d6318]{margin-left:auto}.panel__empty[data-v-a75d6318]{text-align:center;color:var(--p-text-muted-color);margin:0;padding:1.5rem 0;font-size:.875rem}.service-list[data-v-a75d6318]{flex-direction:column;gap:.125rem;display:flex}.stat-tile[data-v-37755c11]{--stat-accent:var(--p-text-muted-color);border:1px solid var(--p-content-border-color);border-radius:var(--p-border-radius);background:var(--p-content-background);text-align:left;font:inherit;color:inherit;grid-template-rows:auto auto;grid-template-columns:auto 1fr;align-items:center;gap:0 .75rem;padding:.875rem 1rem;display:grid}.stat-tile--success[data-v-37755c11]{--stat-accent:var(--p-green-500)}.stat-tile--warn[data-v-37755c11]{--stat-accent:var(--p-orange-500)}.stat-tile--danger[data-v-37755c11]{--stat-accent:var(--p-red-500)}.stat-tile--neutral[data-v-37755c11]{--stat-accent:var(--p-primary-color)}.stat-tile--clickable[data-v-37755c11]{cursor:pointer;transition:border-color .15s,background .15s}.stat-tile--clickable[data-v-37755c11]:hover,.stat-tile--clickable[data-v-37755c11]:focus-visible{border-color:var(--stat-accent);background:var(--p-content-hover-background)}.stat-tile__icon[data-v-37755c11]{color:var(--stat-accent);grid-row:1/span 2;font-size:1.125rem}.stat-tile__value[data-v-37755c11]{font-variant-numeric:tabular-nums;font-size:1.5rem;font-weight:700;line-height:1.1}.stat-tile__label[data-v-37755c11]{color:var(--p-text-muted-color);font-size:.8rem}.dashboard-page[data-v-398f289d]{flex-direction:column;gap:1.5rem;max-width:1400px;display:flex}.dashboard-header__title[data-v-398f289d]{letter-spacing:-.01em;margin:0;font-size:1.5rem;font-weight:700}.dashboard-header__subtitle[data-v-398f289d]{color:var(--p-text-muted-color);margin:.25rem 0 0;font-size:.875rem}.health-band[data-v-398f289d]{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:.75rem;display:grid}.dashboard-columns[data-v-398f289d]{grid-template-columns:minmax(0,2fr) minmax(300px,1fr);align-items:start;gap:1.25rem;display:grid}.dashboard-aside[data-v-398f289d]{flex-direction:column;gap:1.25rem;display:flex}.panel[data-v-398f289d]{border:1px solid var(--p-content-border-color);border-radius:var(--p-border-radius);background:var(--p-content-background);padding:1rem}.panel__header[data-v-398f289d]{justify-content:space-between;align-items:center;gap:.75rem;margin-bottom:.75rem;display:flex}.panel__title[data-v-398f289d]{text-transform:uppercase;letter-spacing:.06em;color:var(--p-text-muted-color);margin:0;font-size:.8rem;font-weight:700}.panel__empty[data-v-398f289d]{text-align:center;color:var(--p-text-muted-color);margin:0;padding:1.5rem 0;font-size:.875rem}.agent-list[data-v-398f289d]{flex-direction:column;gap:.25rem;margin:0;padding:0;list-style:none;display:flex}.agent-item[data-v-398f289d]{align-items:center;gap:.5rem;padding:.375rem 0;display:flex}.agent-item__dot[data-v-398f289d]{border-radius:50%;width:.5rem;height:.5rem}.agent-item__dot--on[data-v-398f289d]{background:var(--p-green-500)}.agent-item__dot--off[data-v-398f289d]{background:var(--p-red-500)}.agent-item__name[data-v-398f289d]{text-overflow:ellipsis;white-space:nowrap;font-weight:500;overflow:hidden}.agent-item__state[data-v-398f289d]{color:var(--p-text-muted-color);margin-left:auto;font-size:.78rem}@media (max-width:1024px){.dashboard-columns[data-v-398f289d]{grid-template-columns:minmax(0,1fr)}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{$n as e,$t as t,Ai as n,Bi as r,Da as i,Fa as a,Gi as o,Ii as s,Li as c,Ni as l,On as u,Pn as d,Qt as f,Ra as p,Ri as m,Rn as h,Wi as g,Ya as _,Yn as v,Zn as y,Zt as b,fn as x,ga as S,io as C,ja as w,ma as T,n as E,pn as D,qi as O,ta as k,un as A,wa as j,xn as M,xr as N,zi as P}from"./index-DuGh2zls.js";import{t as F}from"./OrgKeyPrompt-CRf1ZPik.js";import{t as I}from"./useProjectCatalog-CnGHIrnh.js";var L={class:`create-form`},R={class:`create-field`},z={for:`new-project-name`},B={class:`create-field`},V={for:`new-project-desc`},H={class:`create-field`},U={for:`new-project-target`},W={class:`create-hint`},G=v(O({__name:`ProjectCreateDialog`,props:{visible:{type:Boolean,required:!0},visibleModifiers:{}},emits:k([`created`],[`update:visible`]),setup(r,{emit:a}){let l=j(r,`visible`),f=a,{t:v}=N(),x=b(),S=M(),D=I(),O=_(``),k=_(``),F=_(`local`),G=_(!1),K=_(``),q=s(()=>[{id:`local`,name:v(`projectSwitcher.local`)},...D.orgGroups.value.map(e=>({id:e.orgId,name:e.name}))]);i(l,e=>{e&&(O.value=``,k.value=``,F.value=S.activeOrgId??`local`,K.value=``,D.refreshCloud())},{immediate:!0});async function J(){let e=O.value.trim();if(!e||G.value)return;let n=F.value===`local`?null:F.value,r=n?null:x.projects.find(e=>!e.orgId);if(r){K.value=v(`projectSwitcher.localProjectExists`,{name:r.name});return}G.value=!0,K.value=``;try{let t=await x.create({name:e,description:k.value.trim()||void 0,orgId:n});if(!t)throw Error(x.error??v(`projectSwitcher.createFailed`));n&&await h.cloudSync.trackProject.mutate({orgId:n,cloudUrl:E(),projectId:t.id}),S.setActiveProject(t.id,n),l.value=!1,f(`created`,{id:t.id,name:t.name,orgId:n})}catch(e){K.value=t(e,v)}finally{G.value=!1}}return(t,r)=>(T(),m(C(y),{visible:l.value,"onUpdate:visible":r[4]||=e=>l.value=e,header:C(v)(`projectSwitcher.createTitle`),modal:``,style:{width:`26rem`}},{footer:w(()=>[o(C(e),{label:C(v)(`actions.cancel`),severity:`secondary`,text:``,disabled:G.value,onClick:r[3]||=e=>l.value=!1},null,8,[`label`,`disabled`]),o(C(e),{label:C(v)(`projectSwitcher.create`),icon:`pi pi-plus`,loading:G.value,disabled:!O.value.trim(),onClick:J},null,8,[`label`,`loading`,`disabled`])]),default:w(()=>[c(`div`,L,[c(`div`,R,[c(`label`,z,p(C(v)(`projectSwitcher.nameLabel`)),1),o(C(u),{id:`new-project-name`,modelValue:O.value,"onUpdate:modelValue":r[0]||=e=>O.value=e,autofocus:``,placeholder:C(v)(`projectSwitcher.namePlaceholder`),onKeyup:n(J,[`enter`])},null,8,[`modelValue`,`placeholder`])]),c(`div`,B,[c(`label`,V,p(C(v)(`projectList.descriptionLabel`)),1),o(C(u),{id:`new-project-desc`,modelValue:k.value,"onUpdate:modelValue":r[1]||=e=>k.value=e,placeholder:C(v)(`projectList.descriptionPlaceholder`),onKeyup:n(J,[`enter`])},null,8,[`modelValue`,`placeholder`])]),c(`div`,H,[c(`label`,U,p(C(v)(`projectSwitcher.targetLabel`)),1),o(C(A),{inputId:`new-project-target`,modelValue:F.value,"onUpdate:modelValue":r[2]||=e=>F.value=e,options:q.value,optionLabel:`name`,optionValue:`id`},null,8,[`modelValue`,`options`]),c(`small`,W,p(F.value===`local`?C(v)(`projectSwitcher.localHint`):C(v)(`projectSwitcher.cloudHint`)),1)]),K.value?(T(),m(C(d),{key:0,severity:`error`,closable:!1},{default:w(()=>[g(p(K.value),1)]),_:1})):P(``,!0)])]),_:1},8,[`visible`,`header`]))}}),[[`__scopeId`,`data-v-5540c110`]]),K={class:`publish-form`},q={for:`publish-target`},J={class:`publish-hint`},Y=v(O({__name:`ProjectPublishDialog`,props:k({project:{}},{visible:{type:Boolean,required:!0},visibleModifiers:{}}),emits:k([`published`],[`update:visible`]),setup(n,{emit:a}){let s=j(n,`visible`),u=n,v=a,{t:x}=N(),S=b(),D=M(),O=I(),k=_(null),L=_(!1),R=_(``),z=_(null);i(s,async e=>{e&&(R.value=``,k.value=O.orgGroups.value[0]?.orgId??null,await O.refreshCloud(),k.value??=O.orgGroups.value[0]?.orgId??null)},{immediate:!0});async function B(){let e=u.project,n=k.value;if(!(!e||!n)){L.value=!0,R.value=``;try{await h.cloudSync.publishProject.mutate({orgId:n,cloudUrl:E(),projectId:e.id}),await S.fetchAll(),D.activeProjectId===e.id&&D.setActiveProject(e.id,n),s.value=!1,v(`published`,n)}catch(e){R.value=t(e,x),f(e)===`ORG_KEY_MISMATCH`&&(z.value=n)}finally{L.value=!1}}}async function V(){z.value=null,R.value=``,await B()}return(t,i)=>(T(),r(l,null,[o(C(y),{visible:s.value,"onUpdate:visible":i[2]||=e=>s.value=e,header:C(x)(`projectSwitcher.publishTitle`,{project:n.project?.name??``}),modal:``,style:{width:`26rem`}},{footer:w(()=>[o(C(e),{label:C(x)(`actions.cancel`),severity:`secondary`,text:``,disabled:L.value,onClick:i[1]||=e=>s.value=!1},null,8,[`label`,`disabled`]),o(C(e),{label:C(x)(`projectSwitcher.publishAccept`),icon:`pi pi-cloud-upload`,loading:L.value,disabled:!k.value,onClick:B},null,8,[`label`,`loading`,`disabled`])]),default:w(()=>[c(`div`,K,[c(`label`,q,p(C(x)(`projectSwitcher.publishOrgLabel`)),1),o(C(A),{inputId:`publish-target`,modelValue:k.value,"onUpdate:modelValue":i[0]||=e=>k.value=e,options:C(O).orgGroups.value,optionLabel:`name`,optionValue:`orgId`},null,8,[`modelValue`,`options`]),c(`small`,J,p(C(x)(`projectSwitcher.publishHint`)),1),R.value?(T(),m(C(d),{key:0,severity:`error`,closable:!1},{default:w(()=>[g(p(R.value),1)]),_:1})):P(``,!0)])]),_:1},8,[`visible`,`header`]),o(F,{"org-id":z.value,reference:`cloud`,title:C(x)(`projectSwitcher.keyPromptTitle`),hint:C(x)(`projectSwitcher.keyPromptHint`),"confirm-label":C(x)(`projectSwitcher.keyPromptUse`),onClose:i[3]||=e=>z.value=null,onAdopted:V},null,8,[`org-id`,`title`,`hint`,`confirm-label`])],64))}}),[[`__scopeId`,`data-v-99853b0d`]]),X={class:`picker-lead`},Z={class:`picker-path`},Q={class:`picker-list`,"data-testid":`directory-picker-list`},$={key:0,class:`picker-empty`},ee={key:1,class:`picker-empty`},te={key:2,class:`picker-empty`},ne=[`onClick`],re={class:`picker-row__name`},ie={key:0,class:`picker-row__badge`},ae={key:3,class:`picker-empty`},oe=v(O({__name:`DirectoryPickerDialog`,props:{visible:{type:Boolean},projectId:{},orgId:{},projectName:{},required:{type:Boolean},initialPath:{}},emits:[`update:visible`,`chosen`],setup(t,{emit:n}){let v=t,b=n,{t:E}=N(),O=_(``),k=_(null),A=_([]),j=_(!1),M=_(!1),F=_(!1),I=_(``),L=_(null),R=_(``),z=e=>e.normalize(`NFD`).replace(/\p{Diacritic}/gu,``).toLowerCase(),B=s(()=>{let e=z(R.value.trim());return e?A.value.filter(t=>z(t.name).includes(e)):A.value}),V=s(()=>!!O.value&&L.value?.ok===!0&&!F.value);async function H(e){M.value=!0,I.value=``;try{let t=await h.filesystem.listDirectories.query({path:e});O.value=t.path,k.value=t.parent,A.value=t.entries,j.value=t.truncated,R.value=``,await U()}catch(e){I.value=f(e)??E(`directoryPicker.readError`)}finally{M.value=!1}}async function U(){if(O.value)try{let e=await h.filesystem.checkProjectTarget.query({path:O.value,projectId:v.projectId,orgId:v.orgId});L.value={ok:e.ok,reason:e.reason,otherProjectId:e.otherProjectId}}catch{L.value={ok:!1,reason:`missing`,otherProjectId:null}}}async function W(){try{await H((await h.filesystem.suggestedRoots.query())[0]?.path??`~`)}catch(e){I.value=f(e)??E(`directoryPicker.readError`)}}async function G(){if(V.value){F.value=!0,I.value=``;try{await h.project.setLocalPath.mutate({id:v.projectId,orgId:v.orgId,path:O.value}),b(`chosen`,O.value),b(`update:visible`,!1)}catch(e){I.value=f(e)??E(`directoryPicker.saveError`)}finally{F.value=!1}}}i(()=>v.visible,e=>{e&&!O.value&&(v.initialPath?H(v.initialPath):W())},{immediate:!0});let K=s(()=>{let e=L.value?.reason;return e?E(e===`has-runeya-project`?`directoryPicker.refusedHasProject`:e===`taken`?`directoryPicker.refusedTaken`:`directoryPicker.refusedMissing`):``});return(n,i)=>(T(),m(C(y),{visible:t.visible,modal:``,closable:!t.required,"close-on-escape":!t.required,header:C(E)(`directoryPicker.title`,{project:t.projectName}),style:{width:`46rem`,maxWidth:`95vw`},"data-testid":`directory-picker`,"onUpdate:visible":i[3]||=e=>b(`update:visible`,e)},{footer:w(()=>[t.required?P(``,!0):(T(),m(C(e),{key:0,label:C(E)(`actions.cancel`),text:``,onClick:i[2]||=e=>b(`update:visible`,!1)},null,8,[`label`])),o(C(e),{label:C(E)(`directoryPicker.confirm`),disabled:!V.value,loading:F.value,"data-testid":`directory-picker-confirm`,onClick:G},null,8,[`label`,`disabled`,`loading`])]),default:w(()=>[c(`p`,X,p(C(E)(`directoryPicker.lead`)),1),c(`div`,Z,[o(C(e),{icon:`pi pi-arrow-up`,text:``,disabled:!k.value||M.value,"aria-label":C(E)(`directoryPicker.up`),"data-testid":`directory-picker-up`,onClick:i[0]||=e=>k.value&&H(k.value)},null,8,[`disabled`,`aria-label`]),o(C(u),{"model-value":O.value,readonly:``,class:`picker-path__input`,"data-testid":`directory-picker-current`},null,8,[`model-value`])]),o(C(D),{class:`picker-filter`},{default:w(()=>[o(C(x),{class:`pi pi-search`}),o(C(u),{modelValue:R.value,"onUpdate:modelValue":i[1]||=e=>R.value=e,placeholder:C(E)(`directoryPicker.filterPlaceholder`),"data-testid":`directory-picker-filter`,fluid:``},null,8,[`modelValue`,`placeholder`])]),_:1}),c(`div`,Q,[M.value?(T(),r(`p`,$,p(C(E)(`directoryPicker.loading`)),1)):A.value.length?B.value.length?P(``,!0):(T(),r(`p`,te,p(C(E)(`directoryPicker.noMatch`,{filter:R.value})),1)):(T(),r(`p`,ee,p(C(E)(`directoryPicker.empty`)),1)),(T(!0),r(l,null,S(B.value,e=>(T(),r(`button`,{key:e.path,type:`button`,class:a([`picker-row`,{"picker-row--taken":e.hasRuneyaProject}]),onClick:t=>H(e.path)},[i[4]||=c(`i`,{class:`pi pi-folder`},null,-1),c(`span`,re,p(e.name),1),e.hasRuneyaProject?(T(),r(`span`,ie,p(C(E)(`directoryPicker.badgeHasProject`)),1)):P(``,!0)],10,ne))),128)),j.value?(T(),r(`p`,ae,p(C(E)(`directoryPicker.truncated`)),1)):P(``,!0)]),K.value?(T(),m(C(d),{key:0,severity:`warn`,closable:!1,"data-testid":`directory-picker-refusal`},{default:w(()=>[g(p(K.value),1)]),_:1})):P(``,!0),I.value?(T(),m(C(d),{key:1,severity:`error`,closable:!1,"data-testid":`directory-picker-error`},{default:w(()=>[g(p(I.value),1)]),_:1})):P(``,!0)]),_:1},8,[`visible`,`closable`,`close-on-escape`,`header`]))}}),[[`__scopeId`,`data-v-56650643`]]);export{Y as n,G as r,oe as t};
|