@runeya/runeya 2.0.114 → 2.0.116
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/{chat-HXONIBWN.js → chat-AOL2TMLR.js} +3 -3
- package/{chunk-V7A622EJ.js → chunk-44XAJ3MK.js} +46 -7
- package/chunk-44XAJ3MK.js.map +1 -0
- package/{chunk-NHKZXNLU.js → chunk-VPANMGAI.js} +58 -11
- package/chunk-VPANMGAI.js.map +1 -0
- package/{companion-22KIHB4W.js → companion-YYXSCN3H.js} +12 -2
- package/index.js +3 -3
- package/mcp-server/index.js +6 -2
- package/mcp-server/index.js.map +1 -1
- package/package.json +1 -1
- package/{src-GRFQ5OCA.js → src-S5TDMHPI.js} +4 -4
- package/web/assets/AgentScalarChatInterface.vue-BF7maBl3.js +13 -0
- package/web/assets/AgentTerminalPage-CvmJM-z2.js +1 -0
- package/web/assets/AiChatPage-CZvzic7w.js +1 -0
- package/web/assets/AppLayout-B6rcGZ-d.js +1 -0
- package/web/assets/AuditPage-Zow6i_p1.js +1 -0
- package/web/assets/CloudAccountPage-C7NM_P_L.js +1 -0
- package/web/assets/CloudAccountPage-EIJZWYuK.js +1 -0
- package/web/assets/CloudMessagingPage-TLIkdLja.js +2 -0
- package/web/assets/DashboardPage-DVe-s0J_.js +164 -0
- package/web/assets/DirectoryPickerDialog-B7FOXRqJ.js +1 -0
- package/web/assets/{EditorIcon-RLOjIqbo.js → EditorIcon-DJxKo-Bu.js} +2 -2
- package/web/assets/EnvironmentForm-1NSDqR4s.js +108 -0
- package/web/assets/EnvironmentFormPage-B8u9s5R1.js +1 -0
- package/web/assets/EnvironmentListPage-CmzFuAkD.js +1 -0
- package/web/assets/KanbanBoardPage-B4luJ-Om.css +1 -0
- package/web/assets/KanbanBoardPage-BwlRY-B5.js +4 -0
- package/web/assets/KanbanListPage-BHvmkCBo.js +1 -0
- package/web/assets/LaunchProjectPage-CLtvEtB7.js +1 -0
- package/web/assets/LaunchServicesPage-CNwMUBEf.js +1 -0
- package/web/assets/LogViewer-CttayRws.js +3 -0
- package/web/assets/OrgKeyPrompt-BCUxooW7.js +1 -0
- package/web/assets/{ProcessControls-BR7DB2V1.js → ProcessControls-B_21fX0o.js} +1 -1
- package/web/assets/ProcessDetailPage-C9SV4g8j.js +1 -0
- package/web/assets/{ProcessMetrics-hLgUsuYP.js → ProcessMetrics-jxJHtg7z.js} +2 -2
- package/web/assets/RandomJobTestPage-0PVLJcpY.js +2 -0
- package/web/assets/ScenarioEditorPage-CDRQjUbW.js +14 -0
- package/web/assets/SendToChatDialog-WvHUhHoF.js +1 -0
- package/web/assets/ServiceControlsBar-BUTVG9E_.js +1 -0
- package/web/assets/ServiceDetailPage-BzPogs-k.js +2 -0
- package/web/assets/ServiceFormPage-BAnq0Ajd.js +1 -0
- package/web/assets/SettingsPage-B60IQ4-n.js +2063 -0
- package/web/assets/UnlockPage-BrBOIaYO.js +1 -0
- package/web/assets/VaultMigrationPage-DwPlrgAk.js +1 -0
- package/web/assets/VersionBadge-VifKvUR5.js +1 -0
- package/web/assets/WikiPage-hb8nDENE.js +1 -0
- package/web/assets/WikiView-BGFK-ViQ.js +1 -0
- package/web/assets/{add-scalar-classes-cHsZv3GE.js → add-scalar-classes-B7RXfMBe.js} +26 -26
- package/web/assets/autocomplete-CeUb1Plo.js +308 -0
- package/web/assets/{basic-shape-diamond.svg-BUMCcN0D.js → basic-shape-diamond.svg-D95sAEHe.js} +1 -1
- package/web/assets/{basic-shape-hexagon.svg-BmAnv1Zn.js → basic-shape-hexagon.svg-Bhu8sbuK.js} +1 -1
- package/web/assets/{basic-shape-primary-circle-ellipse-round.svg-CF2Cg5AY.js → basic-shape-primary-circle-ellipse-round.svg-BPXa2nfu.js} +1 -1
- package/web/assets/{basic-shape-primary-square-rectangle.svg-rdMfkqQB.js → basic-shape-primary-square-rectangle.svg-DYx2Drq6.js} +1 -1
- package/web/assets/{basic-shape-shield.svg-CoSrJaBH.js → basic-shape-shield.svg-iaNrBbaU.js} +1 -1
- package/web/assets/{browser-BoyoXZWS.js → browser-Bd9Xf4OZ.js} +1 -1
- package/web/assets/{browser-DbK6HdIJ.js → browser-DhkJWAns.js} +1 -1
- package/web/assets/card-WTAGOi1D.js +32 -0
- package/web/assets/{checkbox-cWhIZvRq.js → checkbox-DZeCLgbK.js} +3 -3
- package/web/assets/{chip-BCDh4zSF.js → chip-CzDSaVrV.js} +2 -2
- package/web/assets/client-DcD_v2XG.js +24 -0
- package/web/assets/cloud-chat.store-C0vZ0R5r.js +1 -0
- package/web/assets/cloud-client-P2Cyjp5i.js +1 -0
- package/web/assets/cloud-session-5od8XXV-.js +2 -0
- package/web/assets/cloud-session-DEFzA7ER.js +1 -0
- package/web/assets/column-D-tpUFcH.js +763 -0
- package/web/assets/{computer-device-desktop-monitor.svg-D3Nf3GcY.js → computer-device-desktop-monitor.svg-CK-yuA7j.js} +1 -1
- package/web/assets/{computer-device-desktop.svg-BQCxMSv9.js → computer-device-desktop.svg-DnR_dL9H.js} +1 -1
- package/web/assets/{computer-device-laptop.svg-dEMc6BOr.js → computer-device-laptop.svg-B4NDUXf6.js} +1 -1
- package/web/assets/{computer-device-mobile-phone-android-samsung-back.svg-B2oauuK7.js → computer-device-mobile-phone-android-samsung-back.svg-CDy5Mj_3.js} +1 -1
- package/web/assets/{computer-device-mobile-phone-android-samsung.svg-DbvTvgW3.js → computer-device-mobile-phone-android-samsung.svg-DZwCAngQ.js} +1 -1
- package/web/assets/{computer-device-mobile-phone-iphone-x-back.svg-BffVzG1Z.js → computer-device-mobile-phone-iphone-x-back.svg-qnHXKnfy.js} +1 -1
- package/web/assets/{computer-device-mobile-phone-iphone-x.svg-DaKjCh5i.js → computer-device-mobile-phone-iphone-x.svg-CufxVRii.js} +1 -1
- package/web/assets/{computer-device-mobile-tablet-touch.svg-D6enlKZz.js → computer-device-mobile-tablet-touch.svg-DvNOww1M.js} +1 -1
- package/web/assets/{computer-device-mobile-tablet.svg-DczqjS80.js → computer-device-mobile-tablet.svg-C30Nrbgf.js} +1 -1
- package/web/assets/{computer-device-network-ethernet-cat6.svg-DlENyx_k.js → computer-device-network-ethernet-cat6.svg-BkhnUZzo.js} +1 -1
- package/web/assets/{computer-device-network-lan-www.svg-yNt-aX4h.js → computer-device-network-lan-www.svg-DXEfVvcC.js} +1 -1
- package/web/assets/{computer-device-network-wifi-connection.svg-BF4mr605.js → computer-device-network-wifi-connection.svg-CRSKVh1x.js} +1 -1
- package/web/assets/{computer-device-network-wifi-router.svg-DRoqUaxt.js → computer-device-network-wifi-router.svg-DwfOCroy.js} +1 -1
- package/web/assets/{cssMode-C3skDop0.js → cssMode-Dc5jzss9.js} +1 -1
- package/web/assets/{divider-BNfKWMBt.js → divider-Diym1gIH.js} +2 -2
- package/web/assets/{docx-preview-BcKna2tp.js → docx-preview-B62lLslx.js} +1 -1
- package/web/assets/{ecology-science-erlenmeyer-flask.svg-DzIlVRs4.js → ecology-science-erlenmeyer-flask.svg-CVBcLrkT.js} +1 -1
- package/web/assets/{fieldset-BuBMzF7s.js → fieldset-xjeWC_Zd.js} +2 -2
- package/web/assets/{freemarker2-8KoXWZV4.js → freemarker2-CCSFwo1D.js} +1 -1
- package/web/assets/{handlebars-Di1mMCka.js → handlebars-Bo71unsx.js} +1 -1
- package/web/assets/{html-_oD0gCXS.js → html-Bm9228kc.js} +1 -1
- package/web/assets/{htmlMode-oO0BRqxZ.js → htmlMode-BmR9QSyO.js} +1 -1
- package/web/assets/{image-flash-lightning.svg-C5G7CIjI.js → image-flash-lightning.svg-BdEJcGIK.js} +1 -1
- package/web/assets/{image-picture-flower.svg-BlSjH6n2.js → image-picture-flower.svg-B-mtrwDE.js} +1 -1
- package/web/assets/{index-Bb59Dhi7.js → index-8J1A633V.js} +37 -37
- package/web/assets/{index-DnKWcxcI.css → index-CuOHmXqW.css} +1 -1
- package/web/assets/{interface-alert-exclamation-diamond.svg-CSuNI4Up.js → interface-alert-exclamation-diamond.svg-9cBuGRNJ.js} +1 -1
- package/web/assets/{interface-alert-exclamation-triangle-warning.svg-BS-GmL7u.js → interface-alert-exclamation-triangle-warning.svg-CEzfFTAS.js} +1 -1
- package/web/assets/{interface-alert-information-circle.svg-lxDiR_kN.js → interface-alert-information-circle.svg-BjpTNsHF.js} +1 -1
- package/web/assets/{interface-award-crown.svg-Bg3g-gp9.js → interface-award-crown.svg-DGFO5nfn.js} +1 -1
- package/web/assets/{interface-bookmark.svg-DjFjxPmF.js → interface-bookmark-tag.svg-D5jyBgha.js} +1 -1
- package/web/assets/{interface-bookmark-tag.svg-CJhcnt4y.js → interface-bookmark.svg-u38u4053.js} +1 -1
- package/web/assets/{interface-calendar-date-one.svg-BxlfBDAQ.js → interface-calendar-date-one.svg-CEE3ju0p.js} +1 -1
- package/web/assets/{interface-content-book-open-pages.svg-DRFINaMA.js → interface-content-book-open-pages.svg-S1nvOdAe.js} +1 -1
- package/web/assets/{interface-content-book-page.svg-BvTE7WKM.js → interface-content-book-page.svg-CtDjLJwZ.js} +1 -1
- package/web/assets/{interface-content-file.svg-nUkQbRVq.js → interface-content-file.svg-AD0WHI0R.js} +1 -1
- package/web/assets/{interface-content-folder.svg-Dk0gmwET.js → interface-content-folder.svg-CM-PNCCw.js} +1 -1
- package/web/assets/interface-content-folder.svg-vAfHUVxs.js +1 -0
- package/web/assets/{interface-copy-clipboard.svg-w8BtIe-u.js → interface-copy-clipboard.svg-rflxiB0d.js} +1 -1
- package/web/assets/{interface-edit-attachment.svg-DgMGWEa8.js → interface-edit-attachment.svg-DrANyzys.js} +1 -1
- package/web/assets/{interface-edit-binocular.svg-DN6G5CSY.js → interface-edit-binocular.svg-BETaEZ89.js} +1 -1
- package/web/assets/{interface-edit-magic-wand.svg-C1n98Lqv.js → interface-edit-magic-wand.svg-Bj6FVo53.js} +1 -1
- package/web/assets/{interface-edit-tool-paint-roller.svg-1LYXizgp.js → interface-edit-tool-paint-roller.svg-Bp6eRqNw.js} +1 -1
- package/web/assets/{interface-edit-tool-pencil.svg-BRO1_1Q-.js → interface-edit-tool-pencil.svg-DcLn0a3t.js} +1 -1
- package/web/assets/{interface-favorite-award.svg-K3RoRC9Z.js → interface-favorite-award.svg-DUwbk0Rk.js} +1 -1
- package/web/assets/{interface-favorite-flag.svg-eOXzJzTe.js → interface-favorite-flag.svg-BRp2Dr2h.js} +1 -1
- package/web/assets/{interface-favorite-heart.svg-DKmWOfFT.js → interface-favorite-heart.svg-Bt_5Dxks.js} +1 -1
- package/web/assets/{interface-favorite-star.svg-B4ZMi-k_.js → interface-favorite-star.svg-iaJ9oR-m.js} +1 -1
- package/web/assets/{interface-favorite-stars-sparkles.svg-Ccy5ljOs.js → interface-favorite-stars-sparkles.svg-C3lZkFSY.js} +1 -1
- package/web/assets/{interface-hierarchy-flowchart.svg-Bds4M5Kf.js → interface-hierarchy-flowchart.svg-NRnPKxEv.js} +1 -1
- package/web/assets/{interface-home-house.svg-aj5qQvoL.js → interface-home-house.svg-C2pnwXuY.js} +1 -1
- package/web/assets/{interface-hyperlink.svg-BWH__vGU.js → interface-hyperlink.svg-DMdhqTQ5.js} +1 -1
- package/web/assets/{interface-lighting-brightness.svg-SIIaOEUo.js → interface-lighting-brightness.svg-Dvs_nG0d.js} +1 -1
- package/web/assets/{interface-lock-closed.svg-DPmezgF_.js → interface-lock-closed.svg-CBeF2Ru4.js} +1 -1
- package/web/assets/{interface-lock-open-unlock.svg-nZAvhfDP.js → interface-lock-open-unlock.svg-sChGga1F.js} +1 -1
- package/web/assets/{interface-login-key.svg-DNzo1Ns4.js → interface-login-key.svg-cZB0Vhyp.js} +1 -1
- package/web/assets/{interface-search.svg-BNwuY49S.js → interface-search.svg-CjcIgtti.js} +1 -1
- package/web/assets/{interface-setting-cog.svg-CkWrZG44.js → interface-setting-cog.svg-H5RLVC2p.js} +1 -1
- package/web/assets/{interface-share-megaphone-bullhorn.svg-CQbFb4I6.js → interface-share-megaphone-bullhorn.svg-BEk0DA1W.js} +1 -1
- package/web/assets/{interface-share-rocket.svg-B3qkIino.js → interface-share-rocket.svg-p6tQEwJ6.js} +1 -1
- package/web/assets/{interface-share-satellite.svg-D1XVQrMX.js → interface-share-satellite.svg-BScMkxzb.js} +1 -1
- package/web/assets/{interface-share-space-ship.svg-CG0wysjx.js → interface-share-space-ship.svg-RtJDwluc.js} +1 -1
- package/web/assets/{interface-share.svg-fGDZRZpK.js → interface-share.svg-_Rnlgc89.js} +1 -1
- package/web/assets/{interface-signal-square.svg-728gMSFK.js → interface-signal-square.svg-sGo7FmcD.js} +1 -1
- package/web/assets/{interface-time-clock-circle.svg-FIPylr8W.js → interface-time-clock-circle.svg-CoQLcW4m.js} +1 -1
- package/web/assets/{interface-time-hour-glass.svg-kzYL54EY.js → interface-time-hour-glass.svg-C4rHS8Sx.js} +1 -1
- package/web/assets/{interface-users-multiple.svg-CQBUiGvK.js → interface-users-multiple.svg-B4ewwKgQ.js} +1 -1
- package/web/assets/{interface-weather-moon.svg-ATClcUHD.js → interface-weather-moon.svg-TOU86ccq.js} +1 -1
- package/web/assets/{javascript-BqC30lYi.js → javascript-3xh4h-z5.js} +1 -1
- package/web/assets/{jsonMode-C_1z-3bo.js → jsonMode-C6AJYdBQ.js} +2 -2
- package/web/assets/{liquid-CcIJLQp6.js → liquid-B1uuh-2_.js} +1 -1
- package/web/assets/{lspLanguageFeatures-Dkkq6B5B.js → lspLanguageFeatures-BSf4GNlz.js} +3 -3
- package/web/assets/{mail-chat-bubble-square.svg-DPS_WcTb.js → mail-chat-bubble-square.svg-Fe7IU49T.js} +1 -1
- package/web/assets/{mail-send-email-paper-airplane.svg-DecU3TSM.js → mail-send-email-paper-airplane.svg-Cu3dNuIm.js} +1 -1
- package/web/assets/{mail-send-envelope.svg-B0WUbrJn.js → mail-send-envelope.svg-C3l1liPg.js} +1 -1
- package/web/assets/{mdx-B6rZ9uHL.js → mdx-DjWUPAFj.js} +1 -1
- package/web/assets/{minus-DeqQKZj2.js → minus-Cy49kn7z.js} +2 -2
- package/web/assets/modal-4lYrZSCG.js +1 -0
- package/web/assets/modal-C0BaKlvZ.js +5 -0
- package/web/assets/{money-cashier-receipt.svg-D_YgywQm.js → money-cashier-receipt.svg-OkY-eUsN.js} +1 -1
- package/web/assets/{money-currency-dollar-pay.svg-Cn6r6wOa.js → money-currency-dollar-pay.svg-DVA6DUQs.js} +1 -1
- package/web/assets/{money-graph-arrow-increase.svg-CJNTNw-n.js → money-graph-arrow-increase.svg-5zYZLe6Q.js} +1 -1
- package/web/assets/{money-graph-bar-chart-increase.svg-CppRtHGi.js → money-graph-bar-chart-increase.svg-CqGQIzPc.js} +1 -1
- package/web/assets/multiselect-C2K875ec.js +251 -0
- package/web/assets/{nature-ecology-leaf.svg-CQ0MN2L3.js → nature-ecology-leaf.svg-B-jPo4Mf.js} +1 -1
- package/web/assets/{password-CAxjRWlv.js → password-FAGLfFXd.js} +4 -4
- package/web/assets/{phone-telephone.svg-B1B58EPX.js → phone-telephone.svg-BBDd4gOe.js} +1 -1
- package/web/assets/{plus-BbJtYZcc.js → plus-DvHGmumH.js} +6 -6
- package/web/assets/process.store-Dkhppeiw.js +1 -0
- package/web/assets/{programming-bug.svg-BEWm8EI_.js → programming-bug.svg-Di_RRUT8.js} +1 -1
- package/web/assets/{programming-cloud.svg-CdySvaW9.js → programming-cloud.svg-UXDdd80c.js} +1 -1
- package/web/assets/{programming-computer-database-server.svg-CWEUaz7j.js → programming-computer-database-server.svg-DqyeVkz2.js} +1 -1
- package/web/assets/{programming-computer-database.svg-CfKj2TgZ.js → programming-computer-database.svg-BB9uaRkU.js} +1 -1
- package/web/assets/{programming-module-four-layout.svg-C76Rw3Ex.js → programming-module-four-layout.svg-DXHXfvRQ.js} +1 -1
- package/web/assets/{programming-module-three.svg-CcHnlghQ.js → programming-module-three.svg-BqdjaGQY.js} +1 -1
- package/web/assets/{programming-module.svg-ZvGCRQcI.js → programming-module.svg-Dca7humV.js} +1 -1
- package/web/assets/{programming-script-code.svg-Cn120r4b.js → programming-script-code.svg-S7W_TNxH.js} +1 -1
- package/web/assets/project-launch.store-HsHnuv7p.js +1 -0
- package/web/assets/project.store-nYOH1fu8.js +1 -0
- package/web/assets/{python-DW1zllmK.js → python-BMgf76Zf.js} +1 -1
- package/web/assets/radiobutton-BQ5ty9EJ.js +145 -0
- package/web/assets/{razor-BZpBWSzp.js → razor-DRB94rOF.js} +1 -1
- package/web/assets/router-CEGkI1tc.js +1 -0
- package/web/assets/settings-scope-Dj1u8OM-.js +1 -0
- package/web/assets/settings.store-CzBxGLJM.js +1 -0
- package/web/assets/{shopping-cart.svg-Dw4bDHk1.js → shopping-cart.svg-BSU4UsCc.js} +1 -1
- package/web/assets/{shopping-gift-present.svg-D2vpkgp3.js → shopping-gift-present.svg-CC16xqoa.js} +1 -1
- package/web/assets/{shopping-shipping-box-parcel-package.svg-ZBGm8HDh.js → shopping-shipping-box-parcel-package.svg-jK-_sKtf.js} +1 -1
- package/web/assets/src-21gpk7yl.js +572 -0
- package/web/assets/{src-BPpAUSsR.js → src-Brqld0NK.js} +25 -25
- package/web/assets/{src-DT1d6_ti.css → src-D2BeOnZr.css} +1 -1
- package/web/assets/src-DYhMIuuF.js +1 -0
- package/web/assets/{tabpanel-BK5mk4wY.js → tabpanel-BytkhVWV.js} +3 -3
- package/web/assets/{tag-new-circle.svg-DZvtaqP7.js → tag-new-circle.svg-DOyNg7L6.js} +1 -1
- package/web/assets/theme-GoDEfTsY.js +1 -0
- package/web/assets/{toggleswitch-DV2NI7sP.js → toggleswitch-Qo70K7EJ.js} +2 -2
- package/web/assets/{travel-map-earth-globe.svg-DGAqIUIb.js → travel-map-earth-globe.svg-D6szY-qJ.js} +1 -1
- package/web/assets/trpc-D_S7-UJx.js +1 -0
- package/web/assets/{tsMode-BG0XT-Oz.js → tsMode-Lbkz8xJi.js} +5 -5
- package/web/assets/{typescript-U9wvdaB0.js → typescript-C9Y4Q3Pi.js} +1 -1
- package/web/assets/useAiChatDrawer-GXkAcvQ3.js +1 -0
- package/web/assets/useCloudOrg-C0YVyKuT.js +1 -0
- package/web/assets/useEnvVarAutocomplete-Dkjm0cg5.js +1 -0
- package/web/assets/useProjectCatalog-BwvqZBo1.js +1 -0
- package/web/assets/{useProjectCloudOrg-BZ6GS8YW.js → useProjectCloudOrg-DpsnzqQF.js} +1 -1
- package/web/assets/useServiceUrlHost-BFSLGMHh.js +1 -0
- package/web/assets/{xml-JveuDgU5.js → xml-BAzLHFet.js} +1 -1
- package/web/assets/{yaml-BNmzGPG1.js → yaml-Dd3JbA6E.js} +1 -1
- package/web/index.html +2 -2
- package/chunk-NHKZXNLU.js.map +0 -1
- package/chunk-V7A622EJ.js.map +0 -1
- package/web/assets/AgentScalarChatInterface.vue-KL1b2GDm.js +0 -13
- package/web/assets/AgentTerminalPage-DubTDN3-.js +0 -1
- package/web/assets/AiChatPage-Df1JNWxr.js +0 -1
- package/web/assets/AppLayout--ZEfeH5K.js +0 -1
- package/web/assets/AuditPage-DZLY64zx.js +0 -1
- package/web/assets/CloudAccountPage-BpfFidgM.js +0 -1
- package/web/assets/CloudAccountPage-CCk0FKF8.js +0 -1
- package/web/assets/CloudMessagingPage-DbnjE6pg.js +0 -2
- package/web/assets/DashboardPage-CPgdr3U-.js +0 -164
- package/web/assets/DirectoryPickerDialog-BtX228xy.js +0 -1
- package/web/assets/EnvironmentForm-Cwi5EARv.js +0 -108
- package/web/assets/EnvironmentFormPage-CMK0lTUK.js +0 -1
- package/web/assets/EnvironmentListPage-CY76bL-Y.js +0 -1
- package/web/assets/KanbanBoardPage-CoTX8nB6.css +0 -1
- package/web/assets/KanbanBoardPage-DtVoDQR4.js +0 -4
- package/web/assets/KanbanListPage-Cp_XsnaI.js +0 -1
- package/web/assets/LaunchProjectPage-BDcx3UWP.js +0 -1
- package/web/assets/LaunchServicesPage-BHfVXHts.js +0 -1
- package/web/assets/LogViewer-CC8Rnu8H.js +0 -3
- package/web/assets/OrgKeyPrompt-BpeV56y2.js +0 -1
- package/web/assets/ProcessDetailPage-CqKOMDor.js +0 -1
- package/web/assets/RandomJobTestPage-Dxeo-YM8.js +0 -2
- package/web/assets/ScenarioEditorPage-Ct0Hot5L.js +0 -14
- package/web/assets/SendToChatDialog-BFMK2Ylc.js +0 -1
- package/web/assets/ServiceControlsBar-BrB5-hwX.js +0 -1
- package/web/assets/ServiceDetailPage-CvzKj0y5.js +0 -2
- package/web/assets/ServiceFormPage-BQ9egUsd.js +0 -1
- package/web/assets/SettingsPage-BkDnemDo.js +0 -2063
- package/web/assets/UnlockPage-CfC9KlpU.js +0 -1
- package/web/assets/VaultMigrationPage--yZMLWJE.js +0 -1
- package/web/assets/VersionBadge-BwEG46HR.js +0 -1
- package/web/assets/WikiPage-BIdskAWp.js +0 -1
- package/web/assets/WikiView-BxEI8-0-.js +0 -1
- package/web/assets/autocomplete-B25vU3CM.js +0 -308
- package/web/assets/card-DWrsZeyX.js +0 -32
- package/web/assets/client-CoJfWFgW.js +0 -24
- package/web/assets/cloud-chat.store-D3IBLjfr.js +0 -1
- package/web/assets/cloud-client-1ktrZbIZ.js +0 -1
- package/web/assets/cloud-session-CshGFFZq.js +0 -2
- package/web/assets/cloud-session-xsmHULd2.js +0 -1
- package/web/assets/column-CUcKvWQ-.js +0 -907
- package/web/assets/interface-content-folder.svg-Ceg2HWM6.js +0 -1
- package/web/assets/modal-Dusr9NrR.js +0 -5
- package/web/assets/modal-HmXW4Uc-.js +0 -1
- package/web/assets/multiselect-CnW-FejM.js +0 -251
- package/web/assets/process.store-QaoIwjwH.js +0 -1
- package/web/assets/project-launch.store-7hF99jG1.js +0 -1
- package/web/assets/project.store-BrqNEqwE.js +0 -1
- package/web/assets/router-CD789Ucf.js +0 -1
- package/web/assets/settings-scope-CaZf4U98.js +0 -1
- package/web/assets/settings.store-CpWWaJPT.js +0 -1
- package/web/assets/src-Bztv-8u_.js +0 -1
- package/web/assets/src-Dq-jXQXa.js +0 -572
- package/web/assets/theme-DAC0A2ah.js +0 -1
- package/web/assets/trpc-C8aEpqHN.js +0 -1
- package/web/assets/useAiChatDrawer-DnBcJs6b.js +0 -1
- package/web/assets/useCloudOrg-BGJUSqH6.js +0 -1
- package/web/assets/useEnvVarAutocomplete-YTyAq2GI.js +0 -1
- package/web/assets/useProjectCatalog-ieXa-NY9.js +0 -1
- package/web/assets/useServiceUrlHost-C8K_BFms.js +0 -1
- /package/{chat-HXONIBWN.js.map → chat-AOL2TMLR.js.map} +0 -0
- /package/{companion-22KIHB4W.js.map → companion-YYXSCN3H.js.map} +0 -0
- /package/{src-GRFQ5OCA.js.map → src-S5TDMHPI.js.map} +0 -0
- /package/web/assets/{abap-B8g_2xYy.js → abap-DblxFMgX.js} +0 -0
- /package/web/assets/{apex-Bm8w4T5A.js → apex-C_fmPlQy.js} +0 -0
- /package/web/assets/{azcli-BqdUW6F8.js → azcli-D73HZyav.js} +0 -0
- /package/web/assets/{bat-Bngf0lQU.js → bat-Br4Biw6V.js} +0 -0
- /package/web/assets/{bicep-DzO554JS.js → bicep-Cwg6_V-m.js} +0 -0
- /package/web/assets/{browser-BJX5ZrVN.js → browser-D6yPejPt.js} +0 -0
- /package/web/assets/{cameligo-Bcy3ohdb.js → cameligo-Dq6Izwzi.js} +0 -0
- /package/web/assets/{clojure-CZbiqkDV.js → clojure-U0exYVUx.js} +0 -0
- /package/web/assets/{coffee-CDuhyV-7.js → coffee-mPGPozSE.js} +0 -0
- /package/web/assets/{cpp-BklV8f4x.js → cpp-lpr_PQMA.js} +0 -0
- /package/web/assets/{csharp-BelR_XiC.js → csharp-saQQwY3s.js} +0 -0
- /package/web/assets/{csp-DUjeBS2K.js → csp-CcDpUBZN.js} +0 -0
- /package/web/assets/{css-CvbYbEko.js → css-D6QFYBbL.js} +0 -0
- /package/web/assets/{cypher-Dwrbk-SP.js → cypher-B_4KCq-w.js} +0 -0
- /package/web/assets/{dart-BW1E5h9O.js → dart-CgLuovz1.js} +0 -0
- /package/web/assets/{dockerfile-B41ilpF9.js → dockerfile-DObNIc52.js} +0 -0
- /package/web/assets/{ecl-BZE6Vxna.js → ecl-BpCwjSsH.js} +0 -0
- /package/web/assets/{elixir-CtYg0bLh.js → elixir-CebZWKus.js} +0 -0
- /package/web/assets/{flow9-Sgvy48_I.js → flow9-DhoDs9JD.js} +0 -0
- /package/web/assets/{fsharp-BzAfXfKg.js → fsharp-YDWqgr0W.js} +0 -0
- /package/web/assets/{go-D7oonABu.js → go-CaPX4mu5.js} +0 -0
- /package/web/assets/{graphql-BEN-qkl0.js → graphql-DOSo46Ed.js} +0 -0
- /package/web/assets/{hcl-CE0OhwCq.js → hcl-nSYpx4qj.js} +0 -0
- /package/web/assets/{ini-CCLtcvjA.js → ini-Ca22qQIM.js} +0 -0
- /package/web/assets/{java-Bao8w_gp.js → java-KrQduvTo.js} +0 -0
- /package/web/assets/{julia-Dr0hFYrl.js → julia-Bb2MDsY_.js} +0 -0
- /package/web/assets/{kotlin-Cbfu8lcM.js → kotlin-DB7e82Vg.js} +0 -0
- /package/web/assets/{less-BU4gEpXr.js → less-K5fiQqgY.js} +0 -0
- /package/web/assets/{lexon-GpBGGdTS.js → lexon-Do9EcqkA.js} +0 -0
- /package/web/assets/{lua-DIPKk37y.js → lua-DU9Dpzvs.js} +0 -0
- /package/web/assets/{m3-CSOypKGf.js → m3-pF6PmPkL.js} +0 -0
- /package/web/assets/{markdown-VDqAgkyM.js → markdown-BNRSTD3D.js} +0 -0
- /package/web/assets/{mips-BJWI6dX7.js → mips-OIXxWbNl.js} +0 -0
- /package/web/assets/{msdax-BLpuE5Dc.js → msdax-Blzk7oHr.js} +0 -0
- /package/web/assets/{mysql-ZsxiEUoY.js → mysql-CISO3r5e.js} +0 -0
- /package/web/assets/{objective-c-DcQa1iPc.js → objective-c-CfnC_OAj.js} +0 -0
- /package/web/assets/{pascal-u-hmXdyn.js → pascal-BUF-IB2S.js} +0 -0
- /package/web/assets/{pascaligo-DqbP-1C6.js → pascaligo-BKce2a7P.js} +0 -0
- /package/web/assets/{perl-CUeQpRkH.js → perl-BSNQJqG3.js} +0 -0
- /package/web/assets/{pgsql-CQ7FhAFN.js → pgsql-B6gnZ9Pz.js} +0 -0
- /package/web/assets/{php-BEf_fu3E.js → php-D3DRjlE-.js} +0 -0
- /package/web/assets/{pla-CXNNbT0w.js → pla-DMkpEwWz.js} +0 -0
- /package/web/assets/{postiats-CIXLZwPb.js → postiats-CS9vJAK8.js} +0 -0
- /package/web/assets/{powerquery-DnGPASFA.js → powerquery-5wdkUpGP.js} +0 -0
- /package/web/assets/{powershell-1Y1kqIZS.js → powershell-CFy-OLZK.js} +0 -0
- /package/web/assets/{protobuf-Cfo9haoG.js → protobuf-BexdMU0z.js} +0 -0
- /package/web/assets/{pug-BujEZqmy.js → pug-D7XxQLO5.js} +0 -0
- /package/web/assets/{qsharp-BL9AqNGD.js → qsharp-Cbf2FpNP.js} +0 -0
- /package/web/assets/{r-D0dhpGOM.js → r-DF7k9FbU.js} +0 -0
- /package/web/assets/{redis-BMLwD7W9.js → redis-CsS7YEaP.js} +0 -0
- /package/web/assets/{redshift-CkHh73og.js → redshift-ELXdujA0.js} +0 -0
- /package/web/assets/{restructuredtext-DZ-LF65W.js → restructuredtext-xoFIa5lj.js} +0 -0
- /package/web/assets/{ruby-UzPHTzc9.js → ruby-BqZs-MXO.js} +0 -0
- /package/web/assets/{rust-ja9NGnXZ.js → rust-Bg6ZO_et.js} +0 -0
- /package/web/assets/{sb-BNdOJbMY.js → sb-DiB12F6v.js} +0 -0
- /package/web/assets/{scala-LlhkyN6l.js → scala-DElpnKpP.js} +0 -0
- /package/web/assets/{scheme-BAj99YIn.js → scheme-1ahRBKOq.js} +0 -0
- /package/web/assets/{scss-chS-xxB3.js → scss-DEMPy3QV.js} +0 -0
- /package/web/assets/{shell-CcH7eYIc.js → shell-DPy86lBu.js} +0 -0
- /package/web/assets/{solidity-cVvnqX-K.js → solidity-BJ26fCkf.js} +0 -0
- /package/web/assets/{sophia-BBT-EdFw.js → sophia-BisqpnJK.js} +0 -0
- /package/web/assets/{sparql-DGEqOrB6.js → sparql-C7Lhhim4.js} +0 -0
- /package/web/assets/{sql-CcTErTxM.js → sql-BXVElqbr.js} +0 -0
- /package/web/assets/{st-Bjw-B4mN.js → st-C3Kk-cML.js} +0 -0
- /package/web/assets/{swift-Bid-7bBd.js → swift-D8IWJydR.js} +0 -0
- /package/web/assets/{systemverilog-CXju7Nd-.js → systemverilog-524SrI2Q.js} +0 -0
- /package/web/assets/{tcl-D-Dw7JFz.js → tcl-MYNTx-d-.js} +0 -0
- /package/web/assets/{twig-BIPbzEWT.js → twig-BAVZN0tW.js} +0 -0
- /package/web/assets/{typespec-UJSutGCV.js → typespec-BhgMHLJQ.js} +0 -0
- /package/web/assets/{vb-oyG_LJw0.js → vb-BLauMmY8.js} +0 -0
- /package/web/assets/{w3c-keyname-DtJs0qQm.js → w3c-keyname-tfhvQ9CV.js} +0 -0
- /package/web/assets/{wgsl-DXZ6ljB6.js → wgsl-ybvhdvmz.js} +0 -0
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{$t as e,Ai as t,Bn as n,Ca as r,Di as i,Ea as a,Fi as o,Gt as s,Hn as c,Ia as l,Ii as u,Ji as d,Jt as f,L as p,Ln as m,Oi as h,On as g,Pa as _,Ri as v,Sa as y,Si as b,St as x,Tn as S,Va as C,Vi as w,Vn as T,Wn as E,Xa as D,Xt as O,Yt as ee,Zt as k,_i as A,aa as j,cn as te,cr as ne,ct as re,d as ie,dt as ae,er as M,fr as oe,gn as N,hn as se,ht as ce,it as le,ji as P,ka as F,ki as I,kn as ue,mn as L,nr as de,nt as fe,pt as pe,qa as me,ra as he,rr as ge,rt as _e,sa as ve,sr as ye,ta as be,tt as xe,va as R,vt as Se,wi as z,wn as Ce,wt as we,xi as B,za as Te,zi as Ee}from"./index-8J1A633V.js";import"./cloud-session-5od8XXV-.js";import"./src-DYhMIuuF.js";import"./useServiceUrlHost-BFSLGMHh.js";import"./ProcessControls-B_21fX0o.js";import{t as De}from"./ServiceControlsBar-BUTVG9E_.js";import{t as Oe}from"./uuid--pMuF47W.js";import{n as ke,t as Ae}from"./column-D-tpUFcH.js";import{n as je}from"./plus-DvHGmumH.js";import{t as Me}from"./checkbox-DZeCLgbK.js";import"./useProjectCloudOrg-DpsnzqQF.js";import{t as Ne}from"./toggleswitch-Qo70K7EJ.js";import{i as Pe,n as Fe,o as Ie,r as Le,t as Re}from"./tabpanel-BytkhVWV.js";import{i as ze,n as Be,r as Ve,t as He}from"./useEnvVarAutocomplete-Dkjm0cg5.js";import{t as Ue}from"./autocomplete-CeUb1Plo.js";import"./src-Brqld0NK.js";import"./w3c-keyname-tfhvQ9CV.js";import"./SendToChatDialog-WvHUhHoF.js";import{n as We,t as Ge}from"./ProcessMetrics-jxJHtg7z.js";import{t as Ke}from"./LogViewer-CttayRws.js";import{t as qe}from"./divider-Diym1gIH.js";import{t as Je}from"./settings.store-CzBxGLJM.js";import{t as Ye}from"./WikiView-BGFK-ViQ.js";var Xe={key:0,class:`log-details`},Ze={class:`log-details__section`},Qe={class:`log-details__label`},$e={class:`log-details__value log-details__value--box`},et={class:`log-details__section`},tt={class:`log-details__label`},nt={class:`log-details__value log-details__value--box log-details__value--code`},rt={class:`log-details__section`},it={class:`log-details__label`},at={class:`log-details__value log-details__value--box`},ot={class:`log-details__process`},st={class:`log-details__section`},ct={class:`log-details__label`},lt={class:`log-details__value log-details__value--box`},ut={key:0,class:`log-details__section`},dt={class:`log-details__label`},ft={class:`log-details__value log-details__value--box log-details__value--code`,"data-testid":`log-details-cwd`},pt={class:`log-details__section`},mt={class:`log-details__label`},ht={class:`log-details__value log-details__value--box`},gt={key:1,class:`log-details__section`},_t={class:`log-details__label`},vt={class:`log-details__value log-details__value--box`},yt={key:2,class:`log-details__section`},bt={class:`log-details__label`},xt={class:`log-details__value log-details__value--box log-details__value--code`},St=n(v({__name:`LogDetailsDrawer`,props:{visible:{type:Boolean},log:{}},emits:[`update:visible`,`view-process`],setup(e,{emit:n}){let r=e,{t:a}=oe(),o=ie(),s=n,c=i(()=>{if(!r.log)return``;let e=new Date(r.log.timestamp);return`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,`0`)}-${String(e.getDate()).padStart(2,`0`)} ${String(e.getHours()).padStart(2,`0`)}:${String(e.getMinutes()).padStart(2,`0`)}:${String(e.getSeconds()).padStart(2,`0`)}`}),l=i(()=>r.log?r.log.level.charAt(0).toUpperCase()+r.log.level.slice(1):``),d=i(()=>!r.log||r.log.pid==null?a(`logDetails.notAvailable`):String(r.log.pid)),f=i(()=>r.log?o.getByService(r.log.processId)[0]?.cwd??null:null);function p(){r.log&&s(`view-process`,r.log.processId)}function m(){s(`update:visible`,!1)}return(n,r)=>(j(),I(D(T),{visible:e.visible,position:`right`,header:D(a)(`logDetails.header`),style:{width:`440px`},"onUpdate:visible":m},{default:y(()=>[e.log?(j(),P(`div`,Xe,[h(`div`,Ze,[h(`div`,Qe,F(D(a)(`logDetails.type`)),1),h(`div`,$e,F(l.value),1)]),h(`div`,et,[h(`div`,tt,F(D(a)(`logDetails.rawMessage`)),1),h(`div`,nt,F(e.log.raw),1)]),h(`div`,rt,[h(`div`,it,F(D(a)(`logDetails.serviceId`)),1),h(`div`,at,[h(`div`,ot,[h(`span`,null,F(e.log.processId),1),u(D(E),{label:D(a)(`logDetails.viewProcess`),icon:`pi pi-external-link`,size:`small`,outlined:``,onClick:p},null,8,[`label`])])])]),h(`div`,st,[h(`div`,ct,F(D(a)(`logDetails.pid`)),1),h(`div`,lt,F(d.value),1)]),f.value?(j(),P(`div`,ut,[h(`div`,dt,F(D(a)(`logDetails.cwd`)),1),h(`div`,ft,F(f.value),1)])):t(``,!0),h(`div`,pt,[h(`div`,mt,F(D(a)(`logDetails.timestamp`)),1),h(`div`,ht,F(c.value),1)]),e.log.stream?(j(),P(`div`,gt,[h(`div`,_t,F(D(a)(`logDetails.stream`)),1),h(`div`,vt,F(e.log.stream),1)])):t(``,!0),e.log.metadata&&Object.keys(e.log.metadata).length>0?(j(),P(`div`,yt,[h(`div`,bt,F(D(a)(`logDetails.metadata`)),1),h(`div`,xt,F(JSON.stringify(e.log.metadata,null,2)),1)])):t(``,!0)])):t(``,!0)]),_:1},8,[`visible`,`header`]))}}),[[`__scopeId`,`data-v-4e3f7abe`]]),Ct=500,wt=5,Tt=ce;function Et(e){return e+Math.random()*e*.3}function Dt(e,t){let n=C([]),r=C(!1),i=null,a=0,o=null,s=g(()=>{a=0,r.value||S()}),c=[],l=null,u=C(0),d=C(0),f=0,p=0,h=null;function _(){h||=setInterval(()=>{u.value=f,d.value=p,f=0,p=0},1e3)}function v(){h&&=(clearInterval(h),null),u.value=0,d.value=0,f=0,p=0}function y(){if(l=null,c.length===0)return;let e=c;c=[],p+=e.length;let t=[...n.value,...e];t.length>Ct&&(t=t.slice(t.length-Ct)),n.value=t}function b(){!e.value||!t.value||(r.value=!0,i=ue.process.onLog.subscribe({agentId:e.value,processId:t.value},{onData(e){let t=e;if(a=0,m(`connected`),t.some(e=>e.__clearLogBuffer)){n.value=[],c=[];return}f+=t.length,c.push(...t),l===null&&(l=requestAnimationFrame(y))},onError(e){console.error(`[useLogStream] Subscription error:`,e.message),r.value=!1,i=null,x()}}))}function x(){if(a>=wt){console.warn(`[useLogStream] Max retries (${wt}) reached`),m(`disconnected`);return}m(`reconnecting`);let e=Et(Tt*2**a);a++,o=setTimeout(()=>{o=null,S()},e)}async function S(){if(!r.value&&!(!e.value||!t.value)){a=0;try{let r=await ue.process.logs.query({agentId:e.value,processId:t.value});r.length>Ct&&(r=r.slice(r.length-Ct)),n.value=r,m(`connected`)}catch{}b()}}function w(){o&&=(clearTimeout(o),null),l!==null&&(cancelAnimationFrame(l),l=null),c=[],v(),i&&=(i.unsubscribe(),null),r.value=!1,a=0,n.value=[]}return R([e,t],([e,t],[n,i])=>{(e!==n||t!==i)&&(r.value&&w(),S())}),he(()=>{s(),w()}),{logs:n,isStreaming:r,start:S,stop:w,receivedPerSec:u,flushedPerSec:d,startStats:_,stopStats:v}}var Ot={class:`service-terminal__toolbar`},kt={class:`service-terminal__toolbar-left`},At={key:0,class:`pid-option`},jt={key:1,class:`pid-option`},Mt={key:0,class:`pi pi-circle-fill pid-status-icon pid-status-icon--active`,style:{"margin-right":`0.5rem`}},Nt={key:1,class:`pi pi-circle-fill pid-status-icon pid-status-icon--stopped`,style:{"margin-right":`0.5rem`}},Pt={class:`pid-option`},Ft={key:0,class:`pi pi-list`,style:{"margin-right":`0.5rem`}},It=[`title`],Lt=[`title`],Rt={class:`service-terminal__toolbar-right`},zt={class:`service-terminal__content`,"data-testid":`service-terminal-content`},Bt={key:1,class:`service-terminal__shortcuts`},Vt={class:`service-terminal__command-input`},Ht={class:`service-terminal__bottom`},Ut=`runeya_command_history_`,Wt=50,Gt=n(v({__name:`ServiceTerminal`,props:{service:{},processes:{}},setup(e){let{t:n}=oe(),r=e,o=i(()=>r.processes.find(e=>e.state===`running`||e.state===`starting`)??r.processes[0]??null),s=i(()=>o.value?.agentId??``),c=i(()=>o.value?.id??``),l=ne(),{logs:f,isStreaming:p,start:m,stop:g,receivedPerSec:_,flushedPerSec:v,startStats:b,stopStats:x}=Dt(s,c),S=C(!1);R(S,e=>{e?b():x()});function w(e){e.ctrlKey&&e.shiftKey&&(e.key===`*`||e.key===`µ`)&&(e.preventDefault(),S.value=!S.value)}let T=i(()=>{let e=new Map;return f.value.forEach(t=>{if(t.pid!=null){let n=e.get(t.pid);if(n)n.lastSeen=new Date(Math.max(n.lastSeen.getTime(),new Date(t.timestamp).getTime())),n.logCount++;else{let n=r.processes.find(e=>e.pid===t.pid&&(e.state===`running`||e.state===`starting`));e.set(t.pid,{pid:t.pid,lastSeen:new Date(t.timestamp),logCount:1,isActive:!!n})}}}),Array.from(e.values()).sort((e,t)=>t.lastSeen.getTime()-e.lastSeen.getTime())}),O=i(()=>Ne.value===`all`?f.value:f.value.filter(e=>e.pid===Ne.value)),ee=i(()=>T.value.filter(e=>e.isActive).length),k=i(()=>{let e=[{label:n(`serviceTerminal.allProcesses`),value:`all`,badge:ee.value>0?`${ee.value} ${n(`serviceTerminal.active`)}`:void 0,isActive:void 0}];return T.value.forEach(({pid:t,logCount:n,isActive:r})=>{e.push({label:`PID: ${t}`,value:t,badge:`${n} logs`,isActive:r})}),e});i(()=>r.processes.filter(e=>e.state===`running`).length);async function A(){if(o.value)try{await ue.process.clearLogBuffer.mutate({agentId:o.value.agentId,processId:o.value.id}),f.value=[]}catch(e){l.add({severity:`error`,summary:n(`serviceTerminal.error`),detail:e.message??n(`serviceTerminal.failedToClearLogs`),life:5e3})}}let re=i(()=>r.service.shortcuts??[]),ie=C(new Set);async function ae(e){let t=o.value?.agentId??r.service.agentId,i=o.value?.id??r.service.id;if(!t){l.add({severity:`warn`,summary:n(`serviceTerminal.noAgent`),detail:n(`serviceTerminal.noAgentDesc`),life:3e3});return}if(ie.value.has(e.id)){try{await ue.process.cancelShortcut.mutate({agentId:t,processId:i,shortcutId:e.id})}catch{}return}ie.value=new Set([...ie.value,e.id]);try{await ue.process.executeShortcut.mutate({agentId:t,processId:i,shortcut:e})}catch(e){l.add({severity:`error`,summary:n(`serviceTerminal.shortcutFailed`),detail:e.message??n(`serviceTerminal.shortcutFailed`),life:5e3})}finally{let t=new Set(ie.value);t.delete(e.id),ie.value=t}}let M=C(``),N=C(new Set),ce=i(()=>N.value.size>0),le=C(null),L=C([]),de=C(-1),fe=`ls,ls -la,ls -lh,pwd,echo,echo $PWD,cat,cat package.json,grep,find,find . -name,ps,ps aux,top,htop,df -h,du -sh,tail,tail -f,tail -n 100,head,head -n 20,wc -l,curl,wget,git status,git log,git diff,git branch,npm run,npm install,npm test,npm start,yarn,yarn install,yarn test,yarn build,docker ps,docker logs,docker exec,env,printenv,whoami,hostname,date,uptime`.split(`,`),pe=C([]);function me(e){let t=e.query.toLowerCase().trim();if(!t||!M.value.trim()){pe.value=[];return}let n=[...L.value.slice().reverse(),...fe],r=new Set;pe.value=n.filter(e=>r.has(e)?!1:(r.add(e),e.toLowerCase().includes(t))).slice(0,10)}function ge(){try{let e=localStorage.getItem(Ut+r.service.id);e&&(L.value=JSON.parse(e))}catch{L.value=[]}}function _e(){try{localStorage.setItem(Ut+r.service.id,JSON.stringify(L.value))}catch{}}function ye(e){L.value[L.value.length-1]!==e&&(L.value=[...L.value,e],L.value.length>Wt&&(L.value=L.value.slice(-Wt)),_e())}async function xe(){let e=o.value?.agentId??r.service.agentId,t=o.value?.id??r.service.id;if(e)try{await ue.process.cancelAdHocCommand.mutate({agentId:e,processId:t})}catch{}}async function Se(){if(!M.value.trim())return;let e=o.value?.agentId??r.service.agentId,t=o.value?.id??r.service.id;if(!e){l.add({severity:`warn`,summary:n(`serviceTerminal.noAgent`),detail:n(`serviceTerminal.noAgentDesc`),life:3e3});return}let i=Oe(),a=M.value.trim();ye(a),M.value=``,pe.value=[],de.value=-1,N.value=new Set([...N.value,i]);try{await ue.process.executeAdHocCommand.mutate({agentId:e,processId:t,command:a,commandId:i})}catch(e){l.add({severity:`error`,summary:n(`serviceTerminal.commandFailed`),detail:e.message??n(`serviceTerminal.commandFailed`),life:5e3})}finally{let e=new Set(N.value);e.delete(i),N.value=e,d(()=>{document.querySelector(`.service-terminal__input`)?.focus()})}}function Ce(e){if(e.key===`Enter`&&!e.shiftKey){e.preventDefault(),Se();return}if(e.key===`ArrowUp`){if(e.preventDefault(),L.value.length===0)return;de.value===-1?de.value=L.value.length-1:de.value>0&&de.value--,M.value=L.value[de.value]||``}else if(e.key===`ArrowDown`){if(e.preventDefault(),de.value===-1)return;de.value<L.value.length-1?(de.value++,M.value=L.value[de.value]||``):(de.value=-1,M.value=``)}}function we(){if(f.value.length===0)return;let e=f.value.map(e=>`[${new Date(e.timestamp).toISOString()}] ${e.level.toUpperCase().padEnd(5)} ${e.message}`),t=new Blob([e.join(`
|
|
2
|
+
`)],{type:`text/plain`}),n=URL.createObjectURL(t),i=document.createElement(`a`);i.href=n,i.download=`${r.service.name}-${new Date().toISOString().slice(0,19).replaceAll(`:`,`-`)}.log`,document.body.appendChild(i),i.click(),document.body.removeChild(i),URL.revokeObjectURL(n)}let B=C(0),Te=0,Ee=null,ke=null;R(o,e=>{if(!(e&&(e.state===`running`||e.state===`starting`))){Ee&&=(clearInterval(Ee),null),ke=null,B.value=e?.uptime??0;return}let t=e.uptime??0;e.id!==ke&&(Ee&&=(clearInterval(Ee),null),ke=e.id,Te=e.startedAt?new Date(e.startedAt).getTime():Date.now()-t,B.value=Date.now()-Te,Ee=setInterval(()=>{B.value=Date.now()-Te},1e3))},{immediate:!0});let Ae=C(!0),je=C(null),Me=C(!1),Ne=C(`all`),Pe=C(!1);function Fe(){Pe.value=!Pe.value}be(()=>{ge(),o.value&&m(),window.addEventListener(`keydown`,w)}),he(()=>{g(),window.removeEventListener(`keydown`,w),Ee&&clearInterval(Ee)});function Ie(e){let t=Math.floor(e/3600),n=Math.floor(e%3600/60),r=Math.floor(e%60);return`${t.toString().padStart(2,`0`)}:${n.toString().padStart(2,`0`)}:${r.toString().padStart(2,`0`)}`}function Le(e){je.value=e,Me.value=!0}function Re(e){Me.value=!1,l.add({severity:`info`,summary:`Process`,detail:`Process ID: ${e}`,life:3e3})}return(i,s)=>(j(),P(`div`,{class:a([`service-terminal`,{"service-terminal--fullscreen":Pe.value}]),"data-testid":`service-terminal`},[Pe.value?(j(),I(De,{key:0,service:e.service,processes:e.processes},null,8,[`service`,`processes`])):t(``,!0),h(`div`,Ot,[h(`div`,kt,[u(D(E),{label:D(n)(`serviceTerminal.logs`),severity:Ae.value?`primary`:`secondary`,text:``,size:`small`,onClick:s[0]||=e=>Ae.value=!0},null,8,[`label`,`severity`]),u(D(te),{modelValue:Ne.value,"onUpdate:modelValue":s[1]||=e=>Ne.value=e,options:k.value,"option-label":`label`,"option-value":`value`,class:`service-terminal__pid-selector`},{value:y(e=>[e.value===`all`?(j(),P(`div`,At,[s[5]||=h(`i`,{class:`pi pi-list`,style:{"margin-right":`0.5rem`}},null,-1),h(`span`,null,F(D(n)(`serviceTerminal.allProcesses`)),1),ee.value>0?(j(),I(D(se),{key:0,value:`${ee.value} ${D(n)(`serviceTerminal.active`)}`,severity:`secondary`,class:`pid-badge`},null,8,[`value`])):t(``,!0)])):(j(),P(`div`,jt,[k.value.find(t=>t.value===e.value)?.isActive?(j(),P(`i`,Mt)):(j(),P(`i`,Nt)),h(`span`,null,`PID: `+F(e.value),1)]))]),option:y(e=>[h(`div`,Pt,[e.option.value===`all`?(j(),P(`i`,Ft)):e.option.isActive?(j(),P(`i`,{key:1,class:`pi pi-circle-fill pid-status-icon pid-status-icon--active`,title:D(n)(`serviceTerminal.running`)},null,8,It)):(j(),P(`i`,{key:2,class:`pi pi-circle-fill pid-status-icon pid-status-icon--stopped`,title:D(n)(`serviceTerminal.stopped`)},null,8,Lt)),h(`span`,null,F(e.option.label),1),e.option.badge?(j(),I(D(se),{key:3,value:e.option.badge,severity:`secondary`,class:`pid-badge`},null,8,[`value`])):t(``,!0)])]),_:1},8,[`modelValue`,`options`])]),h(`div`,Rt,[u(D(E),{icon:Pe.value?`pi pi-window-minimize`:`pi pi-window-maximize`,text:``,rounded:``,size:`small`,title:Pe.value?D(n)(`serviceTerminal.exitFullscreen`):D(n)(`serviceTerminal.fullscreen`),onClick:Fe},null,8,[`icon`,`title`]),u(D(E),{icon:`pi pi-download`,text:``,rounded:``,size:`small`,title:D(n)(`serviceTerminal.downloadLogs`),disabled:D(f).length===0,onClick:we},null,8,[`title`,`disabled`]),u(D(E),{icon:`pi pi-trash`,text:``,rounded:``,size:`small`,title:D(n)(`serviceTerminal.clearLogs`),disabled:D(f).length===0,onClick:A},null,8,[`title`,`disabled`])])]),h(`div`,zt,[u(Ke,{logs:O.value,loading:!1,"received-per-sec":D(_),"flushed-per-sec":D(v),"show-stats":S.value,"service-label":r.service.label||r.service.name,onLogClick:Le},null,8,[`logs`,`received-per-sec`,`flushed-per-sec`,`show-stats`,`service-label`])]),re.value.length>0?(j(),P(`div`,Bt,[(j(!0),P(z,null,ve(re.value,e=>(j(),I(D(E),{key:e.id,label:e.label||e.command,"data-shortcut-id":e.id,class:`shortcut-badge`,icon:ie.value.has(e.id)?`pi pi-stop`:`pi pi-play`,size:`small`,outlined:!ie.value.has(e.id),severity:ie.value.has(e.id)?`danger`:void 0,onClick:t=>ae(e)},null,8,[`label`,`data-shortcut-id`,`icon`,`outlined`,`severity`,`onClick`]))),128))])):t(``,!0),h(`div`,Vt,[s[6]||=h(`span`,{class:`service-terminal__prompt`,"data-testid":`terminal-prompt`},`>`,-1),u(D(Ue),{ref_key:`adHocCommandInput`,ref:le,modelValue:M.value,"onUpdate:modelValue":s[2]||=e=>M.value=e,suggestions:pe.value,class:`service-terminal__autocomplete`,"input-class":`service-terminal__input`,placeholder:D(n)(`serviceTerminal.enterCommand`),"aria-label":D(n)(`serviceTerminal.enterCommand`),disabled:!(o.value?.agentId??r.service.agentId),"data-testid":`terminal-command-input`,onComplete:me,onKeydown:Ce},null,8,[`modelValue`,`suggestions`,`placeholder`,`aria-label`,`disabled`]),u(D(E),{icon:ce.value?`pi pi-stop`:`pi pi-play`,severity:ce.value?`danger`:void 0,size:`small`,"data-testid":`terminal-run-btn`,disabled:!(o.value?.agentId??r.service.agentId)||!M.value.trim()&&!ce.value,onClick:s[3]||=e=>ce.value?xe():Se()},null,8,[`icon`,`severity`,`disabled`])]),h(`div`,Ht,[o.value?(j(),I(D(se),{key:0,icon:`pi pi-server`,value:o.value.agentId.slice(0,8),severity:`secondary`,class:`service-terminal__pill`},null,8,[`value`])):t(``,!0),e.service.cwd?(j(),I(D(se),{key:1,icon:`pi pi-folder`,value:e.service.cwd,severity:`secondary`,class:`service-terminal__pill`},null,8,[`value`])):t(``,!0),o.value&&(o.value.state===`running`||o.value.state===`starting`)?(j(),I(D(se),{key:2,icon:`pi pi-clock`,value:Ie(B.value/1e3),severity:`secondary`,class:`service-terminal__pill`},null,8,[`value`])):t(``,!0)]),u(St,{visible:Me.value,"onUpdate:visible":s[4]||=e=>Me.value=e,log:je.value,onViewProcess:Re},null,8,[`visible`,`log`])],2))}}),[[`__scopeId`,`data-v-8ce2178d`]]),Kt=5,qt=ce;function Jt(e){return e+Math.random()*e*.3}function Yt(e,t){let n=C(null),r=C(!1),i=C(!1),a=null,o=0,s=null;async function c(){if(!r.value){i.value=!0;try{n.value=await ue.process.metrics.query({agentId:e.value,processId:t.value})}catch(e){console.error(`Failed to fetch initial metrics:`,O(e))}finally{i.value=!1}l()}}function l(){r.value=!0,a=ue.process.onMetrics.subscribe({agentId:e.value,processId:t.value},{onData(e){o=0,m(`connected`),n.value=e},onError(e){console.error(`Metrics stream error:`,e),r.value=!1,a=null,u()}})}function u(){if(o>=Kt){console.warn(`Metrics stream: max retries (${Kt}) reached, giving up`),m(`disconnected`);return}m(`reconnecting`);let e=Jt(qt*2**o);o++,s=setTimeout(()=>{s=null,l()},e)}function d(){s&&=(clearTimeout(s),null),a&&=(a.unsubscribe(),null),r.value=!1,o=0}return R([e,t],([e,t],[n,i])=>{(e!==n||t!==i)&&r.value&&(d(),c())}),he(()=>{d()}),{metrics:n,isStreaming:r,isLoading:i,start:c,stop:d}}var Xt={class:`service-metrics`,"data-testid":`service-metrics`},Zt={key:1,class:`service-metrics__skeleton`},Qt={class:`metric-skeleton`},$t={class:`metric-skeleton`},en={key:2,class:`service-metrics__no-data`},tn={key:1,class:`service-metrics__no-process`},nn=n(v({__name:`ServiceMetrics`,props:{service:{},processes:{}},setup(e){let t=e,n=i(()=>t.processes.find(e=>e.state===`running`||e.state===`starting`)??t.processes[0]??null),r=i(()=>n.value?.agentId??``),a=i(()=>n.value?.id??``),{t:o}=oe(),{metrics:s,isLoading:c,start:l,stop:d}=Yt(r,a);return be(()=>{n.value&&l()}),he(()=>{d()}),(e,t)=>(j(),P(`div`,Xt,[n.value?(j(),P(z,{key:0},[D(s)?(j(),I(Ge,{key:0,cpu:D(s).cpu,memory:D(s).memory},null,8,[`cpu`,`memory`])):D(c)?(j(),P(`div`,Zt,[h(`div`,Qt,[u(D(We),{width:`4rem`,height:`0.75rem`,class:`mb-2`}),u(D(We),{width:`3rem`,height:`1.75rem`,class:`mb-3`}),u(D(We),{width:`100%`,height:`6px`,"border-radius":`4px`})]),h(`div`,$t,[u(D(We),{width:`4rem`,height:`0.75rem`,class:`mb-2`}),u(D(We),{width:`3rem`,height:`1.75rem`,class:`mb-3`}),u(D(We),{width:`6rem`,height:`0.65rem`})])])):(j(),P(`div`,en,F(D(o)(`serviceMetrics.noData`)),1))],64)):(j(),P(`div`,tn,[t[0]||=h(`i`,{class:`pi pi-info-circle`},null,-1),h(`span`,null,F(D(o)(`serviceMetrics.notRunning`)),1)]))]))}}),[[`__scopeId`,`data-v-94f5993b`]]),rn=`runeya:debug`;function an(){if(typeof window>`u`)return null;let e=new URLSearchParams(window.location.search).get(`debug`);return e===`1`||e===`true`?!0:e===`0`||e===`false`?!1:null}var on=an();if(on!==null)try{localStorage.setItem(rn,String(on))}catch{}function sn(){try{return localStorage.getItem(rn)===`true`}catch{return!1}}var cn=C(sn());function ln(){function e(){cn.value=!cn.value;try{localStorage.setItem(rn,String(cn.value))}catch{}}return{isDebug:cn,toggle:e}}var un={class:`config-general`},dn={class:`config-card`},fn={class:`config-card__header`},pn={class:`config-card`},mn={class:`config-card__header`},hn={class:`config-card__hint`},gn={class:`config-card`},_n={class:`config-card`},vn={class:`config-card__header`},yn={class:`config-card__hint`},bn={class:`config-card`},xn={class:`config-card__header`},Sn={class:`config-card__hint`},Cn={class:`config-card`},wn={class:`config-card__header`},Tn={class:`config-card__hint`},En={class:`config-card`},Dn={class:`config-card__header`},On={class:`config-card__hint`},kn={class:`config-card`},An={class:`config-card__header`},jn={class:`config-card__hint`},Mn={class:`config-card`},Nn={class:`config-card__header`},Pn={class:`config-card__hint`},Fn={class:`config-card__hint`},In={class:`config-card`},Ln={class:`config-card__header`},Rn={class:`config-card__hint`},zn={class:`config-meta`},Bn={class:`config-card config-card--inline`},Vn={class:`config-card__header`},Hn={class:`config-card config-card--inline`},Un={class:`config-card__header`},Wn=150,Gn=n(v({__name:`ServiceConfigGeneral`,props:{service:{}},emits:[`save`],setup(e,{emit:t}){let{t:n}=oe(),r=ae(),a=f(),s=C([]);function c(e){let t=e.query.trim().toLowerCase(),n=new Set(x.value.groups);s.value=v.value.filter(e=>!n.has(e)&&(!t||e.toLowerCase().includes(t)))}function l(e,t){let n=t.trim();if(n){if(e===`ports`){let e=Number(n);if(!Number.isInteger(e)||e<1||e>65535||x.value.ports.includes(String(e)))return;x.value.ports=[...x.value.ports,String(e)]}else{if(x.value.groups.includes(n))return;x.value.groups=[...x.value.groups,n]}A()}}function d(e){let t=e.target;l(`groups`,t.value),t.value=``,s.value=[]}function p(e,t){let n=e.target;!n||typeof n.value!=`string`||!n.value.trim()||setTimeout(()=>{l(t,n.value),n.value=``},Wn)}let m=e,g=t,_=i(()=>a.projects.find(e=>e.serviceIds.includes(m.service.id)&&(e.orgId??null)===(m.service.orgId??null))??null),v=i(()=>{let e=_.value;if(!e)return[];let t=new Set;for(let n of e.serviceIds)for(let e of r.getById(n)?.groups??[])t.add(e);return[...t].sort((e,t)=>e.localeCompare(t))});function y(e){return Object.entries(e??{}).map(([e,t])=>({key:e,value:t}))}let x=C({name:m.service.name,cwd:m.service.cwd??``,ports:(m.service.ports??[]).map(String),groups:[...m.service.groups??[]],description:m.service.description??``,docsPath:m.service.docsPath??``,url:m.service.url??``,openapiUrl:m.service.openapiUrl??``,gitRemote:m.service.git?.remote??``,gitHome:m.service.git?.home??``,autoRestart:m.service.autoRestart,clearLogsOnStart:m.service.clearLogsOnStart??!1}),S=C(y(m.service.meta));R(()=>m.service,e=>{x.value={name:e.name,cwd:e.cwd??``,ports:(e.ports??[]).map(String),groups:[...e.groups??[]],description:e.description??``,docsPath:e.docsPath??``,url:e.url??``,openapiUrl:e.openapiUrl??``,gitRemote:e.git?.remote??``,gitHome:e.git?.home??``,autoRestart:e.autoRestart,clearLogsOnStart:e.clearLogsOnStart??!1},S.value=y(e.meta)});function w(){S.value=[...S.value,{key:``,value:``}]}function T(e){S.value=S.value.filter((t,n)=>n!==e)}function O(e,t,n){S.value=S.value.map((r,i)=>i===e?{...r,[t]:n}:r)}function ee(){let e={};for(let{key:t,value:n}of S.value){let r=t.trim();r&&(e[r]=n)}return{name:x.value.name,cwd:x.value.cwd||null,ports:x.value.ports.map(Number).filter(e=>e>0&&e<=65535),groups:x.value.groups,description:x.value.description,docsPath:x.value.docsPath??``,url:x.value.url,openapiUrl:x.value.openapiUrl,git:x.value.gitRemote||x.value.gitHome?{remote:x.value.gitRemote||void 0,home:x.value.gitHome||void 0}:null,autoRestart:x.value.autoRestart,clearLogsOnStart:x.value.clearLogsOnStart,meta:Object.keys(e).length>0?e:null}}let k=null;function A(){k&&clearTimeout(k),k=setTimeout(()=>{g(`save`,ee()),k=null},150)}return(e,t)=>(j(),P(`div`,un,[h(`div`,dn,[h(`div`,fn,[t[14]||=h(`i`,{class:`pi pi-tag`},null,-1),h(`span`,null,F(D(n)(`serviceConfigGeneral.name`)),1)]),u(D(N),{modelValue:x.value.name,"onUpdate:modelValue":t[0]||=e=>x.value.name=e,class:`config-card__input`,onBlur:A,onKeydown:B(b(A,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])]),h(`div`,pn,[h(`div`,mn,[t[15]||=h(`i`,{class:`pi pi-folder`},null,-1),h(`span`,null,F(D(n)(`serviceConfigGeneral.workingDirectory`)),1)]),u(D(N),{modelValue:x.value.cwd,"onUpdate:modelValue":t[1]||=e=>x.value.cwd=e,class:`config-card__input`,placeholder:`.`,onBlur:A,onKeydown:B(b(A,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`]),h(`small`,hn,F(D(n)(`serviceConfigGeneral.cwdHint`)),1)]),h(`div`,gn,[t[16]||=h(`div`,{class:`config-card__header`},[h(`i`,{class:`pi pi-file-edit`}),h(`span`,null,`Dossier de documentation (wiki)`)],-1),u(D(N),{modelValue:x.value.docsPath,"onUpdate:modelValue":t[2]||=e=>x.value.docsPath=e,class:`config-card__input`,placeholder:`(défaut : même que cwd)`,onBlur:A,onKeydown:B(b(A,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`]),t[17]||=h(`small`,{class:`config-card__hint`},[o(` Chemin relatif au cwd du service (ex. `),h(`code`,null,`docs`),o(`) ou absolu. Si vide, utilise le cwd. `)],-1)]),h(`div`,_n,[h(`div`,vn,[t[18]||=h(`i`,{class:`pi pi-globe`},null,-1),h(`span`,null,F(D(n)(`serviceConfigGeneral.ports`)),1)]),u(D(Ue),{modelValue:x.value.ports,"onUpdate:modelValue":t[3]||=e=>x.value.ports=e,multiple:``,typeahead:!1,class:`config-card__input`,placeholder:D(n)(`serviceConfigGeneral.portsPlaceholder`),onChange:A,onBlur:t[4]||=e=>p(e,`ports`)},null,8,[`modelValue`,`placeholder`]),h(`small`,yn,F(D(n)(`serviceConfigGeneral.portsHint`)),1)]),h(`div`,bn,[h(`div`,xn,[t[19]||=h(`i`,{class:`pi pi-th-large`},null,-1),h(`span`,null,F(D(n)(`serviceConfigGeneral.groups`)),1)]),u(D(Ue),{modelValue:x.value.groups,"onUpdate:modelValue":t[5]||=e=>x.value.groups=e,multiple:``,suggestions:s.value,"complete-on-focus":!0,class:`config-card__input`,placeholder:D(n)(`serviceConfigGeneral.groupsPlaceholder`),onComplete:c,onChange:A,onKeydown:B(d,[`enter`]),onBlur:t[6]||=e=>p(e,`groups`)},null,8,[`modelValue`,`suggestions`,`placeholder`]),h(`small`,Sn,F(D(n)(`serviceConfigGeneral.groupsHint`)),1)]),h(`div`,Cn,[h(`div`,wn,[t[20]||=h(`i`,{class:`pi pi-info-circle`},null,-1),h(`span`,null,F(D(n)(`serviceConfigGeneral.description`)),1)]),u(D(L),{modelValue:x.value.description,"onUpdate:modelValue":t[7]||=e=>x.value.description=e,class:`config-card__input`,rows:2,onBlur:A},null,8,[`modelValue`]),h(`small`,Tn,F(D(n)(`serviceConfigGeneral.descriptionHint`)),1)]),h(`div`,En,[h(`div`,Dn,[t[21]||=h(`i`,{class:`pi pi-external-link`},null,-1),h(`span`,null,F(D(n)(`serviceConfigGeneral.url`)),1)]),u(D(N),{modelValue:x.value.url,"onUpdate:modelValue":t[8]||=e=>x.value.url=e,class:`config-card__input`,placeholder:`https://...`,onBlur:A,onKeydown:B(b(A,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`]),h(`small`,On,F(D(n)(`serviceConfigGeneral.urlHint`)),1)]),h(`div`,kn,[h(`div`,An,[t[22]||=h(`i`,{class:`pi pi-book`},null,-1),h(`span`,null,F(D(n)(`serviceConfigGeneral.openapiUrl`)),1)]),u(D(N),{modelValue:x.value.openapiUrl,"onUpdate:modelValue":t[9]||=e=>x.value.openapiUrl=e,class:`config-card__input`,placeholder:`https://.../swagger.json`,onBlur:A,onKeydown:B(b(A,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`]),h(`small`,jn,F(D(n)(`serviceConfigGeneral.openapiUrlHint`)),1)]),h(`div`,Mn,[h(`div`,Nn,[t[23]||=h(`i`,{class:`pi pi-github`},null,-1),h(`span`,null,F(D(n)(`serviceConfigGeneral.git`)),1)]),u(D(N),{modelValue:x.value.gitRemote,"onUpdate:modelValue":t[10]||=e=>x.value.gitRemote=e,class:`config-card__input`,placeholder:`git@github.com:org/repo.git`,onBlur:A,onKeydown:B(b(A,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`]),h(`small`,Pn,F(D(n)(`serviceConfigGeneral.gitRemoteHint`)),1),u(D(N),{modelValue:x.value.gitHome,"onUpdate:modelValue":t[11]||=e=>x.value.gitHome=e,class:`config-card__input`,style:{"margin-top":`0.5rem`},placeholder:`https://github.com/org/repo`,onBlur:A,onKeydown:B(b(A,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`]),h(`small`,Fn,F(D(n)(`serviceConfigGeneral.gitHomeHint`)),1)]),h(`div`,In,[h(`div`,Ln,[t[24]||=h(`i`,{class:`pi pi-hashtag`},null,-1),h(`span`,null,F(D(n)(`serviceConfigGeneral.meta`)),1)]),h(`small`,Rn,F(D(n)(`serviceConfigGeneral.metaHint`)),1),h(`div`,zn,[(j(!0),P(z,null,ve(S.value,(e,t)=>(j(),P(`div`,{key:t,class:`config-meta__row`},[u(D(N),{"model-value":e.key,placeholder:D(n)(`serviceConfigGeneral.metaKeyPlaceholder`),class:`config-meta__input`,"onUpdate:modelValue":e=>O(t,`key`,e),onBlur:A,onKeydown:B(b(A,[`prevent`]),[`enter`])},null,8,[`model-value`,`placeholder`,`onUpdate:modelValue`,`onKeydown`]),u(D(N),{"model-value":e.value,placeholder:D(n)(`serviceConfigGeneral.metaValuePlaceholder`),class:`config-meta__input config-meta__input--wide`,"onUpdate:modelValue":e=>O(t,`value`,e),onBlur:A,onKeydown:B(b(A,[`prevent`]),[`enter`])},null,8,[`model-value`,`placeholder`,`onUpdate:modelValue`,`onKeydown`]),u(D(E),{icon:`pi pi-trash`,severity:`danger`,text:``,rounded:``,size:`small`,onClick:()=>{T(t),A()}},null,8,[`onClick`])]))),128)),u(D(E),{label:D(n)(`serviceConfigGeneral.addEntry`),icon:`pi pi-plus`,severity:`secondary`,outlined:``,size:`small`,class:`config-meta__add`,onClick:w},null,8,[`label`])])]),h(`div`,Bn,[h(`div`,Vn,[t[25]||=h(`i`,{class:`pi pi-refresh`},null,-1),h(`span`,null,F(D(n)(`serviceConfigGeneral.autoRestart`)),1)]),u(D(Ne),{modelValue:x.value.autoRestart,"onUpdate:modelValue":t[12]||=e=>x.value.autoRestart=e,onChange:A},null,8,[`modelValue`])]),h(`div`,Hn,[h(`div`,Un,[t[26]||=h(`i`,{class:`pi pi-trash`},null,-1),h(`span`,null,F(D(n)(`serviceConfigGeneral.clearLogs`)),1)]),u(D(Ne),{modelValue:x.value.clearLogsOnStart,"onUpdate:modelValue":t[13]||=e=>x.value.clearLogsOnStart=e,onChange:A},null,8,[`modelValue`])])]))}}),[[`__scopeId`,`data-v-6fef6778`]]),Kn={class:`docker-config`},qn={class:`docker-config__section`},Jn={for:`docker-mode-image`,class:`docker-config__section-title`},Yn={class:`docker-config__mode-toggle`},Xn={class:`docker-config__mode-option`},Zn={class:`docker-config__mode-option`},Qn={key:0,class:`docker-config__section`},$n={for:`docker-image`,class:`docker-config__label`},er={class:`docker-config__section`},tr={class:`docker-config__section`},nr={for:`docker-build-context`,class:`docker-config__label`},rr={class:`docker-config__section`},ir={for:`docker-add-build-arg`,class:`docker-config__label`},ar={class:`docker-config__kv-list`},or={class:`docker-config__section`},sr={for:`docker-target-stage`,class:`docker-config__label`},cr={class:`docker-config__section`},lr={for:`docker-user`,class:`docker-config__section-title`},ur={class:`docker-config__section`},dr={for:`docker-user`,class:`docker-config__label`},fr={class:`docker-config__section`},pr={for:`docker-network-mode`,class:`docker-config__label`},mr={key:2,class:`docker-config__section`},hr={for:`docker-add-port`,class:`docker-config__label`},gr={class:`docker-config__list`},_r={class:`docker-config__section`},vr={for:`docker-add-volume`,class:`docker-config__label`},yr={class:`docker-config__checkbox-row`},br={for:`mountRootpath`,class:`docker-config__checkbox-label`},xr={class:`docker-config__list`},Sr={class:`docker-config__section`},Cr={class:`docker-config__checkbox-row`},wr={for:`useNativeCommand`,class:`docker-config__checkbox-label`},Tr={key:0,class:`docker-config__shell-row`},Er={for:`docker-native-shell`,class:`docker-config__label`},Dr={class:`docker-config__hint`},Or={key:1,class:`docker-config__mode-toggle docker-config__mode-toggle--indented`},kr={class:`docker-config__mode-option`},Ar={class:`docker-config__mode-option`},jr={class:`docker-config__section`},Mr={for:`docker-entrypoint`,class:`docker-config__label`},Nr={class:`docker-config__section`},Pr={for:`docker-command`,class:`docker-config__label`},Fr={class:`docker-config__section`},Ir={for:`docker-add-bootstrap`,class:`docker-config__section-title`},Lr={class:`docker-config__hint-inline`},Rr={class:`docker-config__bootstrap-row`},zr={class:`docker-config__bootstrap-field`},Br=[`for`],Vr={class:`docker-config__bootstrap-field`},Hr=[`for`],Ur={class:`docker-config__bootstrap-field docker-config__bootstrap-field--wide`},Wr=[`for`],Gr={class:`docker-config__bootstrap-field`},Kr=[`for`],qr={class:`docker-config__bootstrap-actions`},Jr={class:`docker-config__section`},Yr=n(v({__name:`ServiceConfigDocker`,props:{service:{}},emits:[`save`],setup(e,{emit:n}){let{t:i}=oe(),a=e,s=n,l=a.service.dockerConfig??{},d=C(l.dockerfile?`build`:`image`),f=C(l.image??``),m=C(l.dockerfile??``),g=C(l.buildContext??``),_=C(Object.entries(l.buildArgs??{}).map(([e,t])=>({key:e,value:t}))),v=C(l.targetStage??``),x=C(l.networkMode??`host`),S=C([...l.ports??[]]),w=C([...l.volumes??[]]),T=C(l.mountRootpath??!1),O=C(l.entrypoint??``),ee=C(l.command??``),k=C(l.user??``),ne=C(l.useNativeCommand??!1),re=C(l.nativeCommandMode??`isolated`),ie=C(l.nativeShell??`sh`),ae=[{label:`sh (POSIX)`,value:`sh`},{label:`bash`,value:`bash`},{label:`zsh`,value:`zsh`},{label:`ash (Alpine)`,value:`ash`}],M=C([...l.bootstrapCommands??[]]),se=C(!1),ce=[{label:`Host (--network host)`,value:`host`},{label:`Bridge`,value:`bridge`}];function le(){_.value=[..._.value,{key:``,value:``}]}function I(e){_.value=_.value.filter((t,n)=>n!==e)}function ue(e,t,n){_.value=_.value.map((r,i)=>i===e?{...r,[t]:n}:r)}function L(){S.value=[...S.value,``]}function de(e){S.value=S.value.filter((t,n)=>n!==e)}function fe(e,t){S.value=S.value.map((n,r)=>r===e?t:n)}function pe(){w.value=[...w.value,``]}function me(e){w.value=w.value.filter((t,n)=>n!==e)}function he(e,t){w.value=w.value.map((n,r)=>r===e?t:n)}function ge(){M.value=[...M.value,{id:Oe(),label:`Bootstrap`,entrypoint:`/bin/sh`,command:`-c ""`,user:void 0}]}function _e(e){M.value=M.value.filter((t,n)=>n!==e)}function ye(e,t,n){M.value=M.value.map((r,i)=>i===e?{...r,[t]:n===``?void 0:n}:r)}function be(e,t){let n=[...M.value],r=e+t;r<0||r>=n.length||([n[e],n[r]]=[n[r],n[e]],M.value=n)}let xe=null;function R(){xe&&clearTimeout(xe),xe=setTimeout(()=>{let e={};for(let{key:t,value:n}of _.value)t.trim()&&(e[t.trim()]=n);s(`save`,{image:d.value===`image`&&f.value||void 0,dockerfile:d.value===`build`&&m.value||void 0,buildContext:g.value||void 0,buildArgs:e,targetStage:v.value||void 0,networkMode:x.value,ports:S.value.filter(Boolean),volumes:w.value.filter(Boolean),mountRootpath:T.value,entrypoint:O.value||void 0,command:ee.value||void 0,user:k.value||void 0,useNativeCommand:ne.value,nativeCommandMode:re.value,nativeShell:ie.value,bootstrapCommands:M.value}),xe=null},150)}function Se(e){_e(e),R()}function Ce(e,t){be(e,t),R()}function we(e){I(e),R()}function Te(e){de(e),R()}function Ee(e){me(e),R()}return(e,n)=>(j(),P(`div`,Kn,[h(`div`,qn,[h(`label`,Jn,F(D(i)(`serviceConfigDocker.imageSource`)),1),h(`div`,Yn,[h(`label`,Xn,[r(h(`input`,{id:`docker-mode-image`,"onUpdate:modelValue":n[0]||=e=>d.value=e,type:`radio`,value:`image`,class:`docker-config__radio`,onChange:R},null,544),[[A,d.value]]),o(` `+F(D(i)(`serviceConfigDocker.pullImage`)),1)]),h(`label`,Zn,[r(h(`input`,{"onUpdate:modelValue":n[1]||=e=>d.value=e,type:`radio`,value:`build`,class:`docker-config__radio`,onChange:R},null,544),[[A,d.value]]),o(` `+F(D(i)(`serviceConfigDocker.buildDockerfile`)),1)])])]),d.value===`image`?(j(),P(`div`,Qn,[h(`label`,$n,F(D(i)(`serviceConfigDocker.image`)),1),u(D(N),{id:`docker-image`,modelValue:f.value,"onUpdate:modelValue":n[2]||=e=>f.value=e,placeholder:D(i)(`serviceConfigDocker.imagePlaceholder`),class:`docker-config__input`,onBlur:R,onKeydown:B(b(R,[`prevent`]),[`enter`])},null,8,[`modelValue`,`placeholder`,`onKeydown`])])):t(``,!0),d.value===`build`?(j(),P(z,{key:1},[h(`div`,er,[n[18]||=h(`label`,{for:`docker-dockerfile-btn`,class:`docker-config__label`},`Dockerfile`,-1),u(D(E),{id:`docker-dockerfile-btn`,label:D(i)(`serviceConfigDocker.editDockerfile`),icon:`pi pi-file-edit`,severity:`secondary`,outlined:``,size:`small`,onClick:n[3]||=e=>se.value=!0},null,8,[`label`]),u(D(c),{visible:se.value,"onUpdate:visible":n[6]||=e=>se.value=e,header:D(i)(`serviceConfigDocker.editDockerfile`),modal:``,style:{width:`800px`}},{footer:y(()=>[u(D(E),{label:D(i)(`serviceConfigDocker.closeDockerfile`),icon:`pi pi-times`,onClick:n[5]||=()=>{se.value=!1,R()}},null,8,[`label`])]),default:y(()=>[u(p,{modelValue:m.value,"onUpdate:modelValue":n[4]||=e=>m.value=e,language:`dockerfile`,style:{height:`400px`}},null,8,[`modelValue`])]),_:1},8,[`visible`,`header`])]),h(`div`,tr,[h(`label`,nr,F(D(i)(`serviceConfigDocker.buildContext`)),1),u(D(N),{id:`docker-build-context`,modelValue:g.value,"onUpdate:modelValue":n[7]||=e=>g.value=e,placeholder:`.`,class:`docker-config__input`,onBlur:R,onKeydown:B(b(R,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])]),h(`div`,rr,[h(`label`,ir,F(D(i)(`serviceConfigDocker.buildArgs`)),1),h(`div`,ar,[(j(!0),P(z,null,ve(_.value,(e,t)=>(j(),P(`div`,{key:t,class:`docker-config__kv-row`},[u(D(N),{"model-value":e.key,placeholder:D(i)(`serviceConfigDocker.argNamePlaceholder`),class:`docker-config__kv-input`,"onUpdate:modelValue":e=>ue(t,`key`,e),onBlur:R,onKeydown:B(b(R,[`prevent`]),[`enter`])},null,8,[`model-value`,`placeholder`,`onUpdate:modelValue`,`onKeydown`]),u(D(N),{"model-value":e.value,placeholder:D(i)(`serviceConfigDocker.argValuePlaceholder`),class:`docker-config__kv-input`,"onUpdate:modelValue":e=>ue(t,`value`,e),onBlur:R,onKeydown:B(b(R,[`prevent`]),[`enter`])},null,8,[`model-value`,`placeholder`,`onUpdate:modelValue`,`onKeydown`]),u(D(E),{icon:`pi pi-trash`,severity:`danger`,text:``,rounded:``,size:`small`,onClick:e=>we(t)},null,8,[`onClick`])]))),128)),u(D(E),{id:`docker-add-build-arg`,label:D(i)(`serviceConfigDocker.addBuildArg`),icon:`pi pi-plus`,severity:`secondary`,outlined:``,size:`small`,onClick:le},null,8,[`label`])])]),h(`div`,or,[h(`label`,sr,F(D(i)(`serviceConfigDocker.targetStage`)),1),u(D(N),{id:`docker-target-stage`,modelValue:v.value,"onUpdate:modelValue":n[8]||=e=>v.value=e,placeholder:D(i)(`serviceConfigDocker.targetStagePlaceholder`),class:`docker-config__input`,onBlur:R,onKeydown:B(b(R,[`prevent`]),[`enter`])},null,8,[`modelValue`,`placeholder`,`onKeydown`])])],64)):t(``,!0),u(D(qe)),h(`div`,cr,[h(`label`,lr,F(D(i)(`serviceConfigDocker.runtimeConfig`)),1)]),h(`div`,ur,[h(`label`,dr,F(D(i)(`serviceConfigDocker.userGroup`)),1),u(D(N),{id:`docker-user`,modelValue:k.value,"onUpdate:modelValue":n[9]||=e=>k.value=e,placeholder:D(i)(`serviceConfigDocker.userGroupHint`),class:`docker-config__input`,onBlur:R,onKeydown:B(b(R,[`prevent`]),[`enter`])},null,8,[`modelValue`,`placeholder`,`onKeydown`])]),h(`div`,fr,[h(`label`,pr,F(D(i)(`serviceConfigDocker.networkMode`)),1),u(D(te),{"input-id":`docker-network-mode`,modelValue:x.value,"onUpdate:modelValue":n[10]||=e=>x.value=e,options:ce,"option-label":`label`,"option-value":`value`,class:`docker-config__select`,onChange:R},null,8,[`modelValue`])]),x.value===`bridge`?(j(),P(`div`,mr,[h(`label`,hr,F(D(i)(`serviceConfigDocker.portMappings`)),1),h(`div`,gr,[(j(!0),P(z,null,ve(S.value,(e,t)=>(j(),P(`div`,{key:t,class:`docker-config__list-row`},[u(D(N),{"model-value":e,placeholder:D(i)(`serviceConfigDocker.portPlaceholder`),class:`docker-config__input`,"onUpdate:modelValue":e=>fe(t,e),onBlur:R,onKeydown:B(b(R,[`prevent`]),[`enter`])},null,8,[`model-value`,`placeholder`,`onUpdate:modelValue`,`onKeydown`]),u(D(E),{icon:`pi pi-trash`,severity:`danger`,text:``,rounded:``,size:`small`,onClick:e=>Te(t)},null,8,[`onClick`])]))),128)),u(D(E),{id:`docker-add-port`,label:D(i)(`serviceConfigDocker.addPort`),icon:`pi pi-plus`,severity:`secondary`,outlined:``,size:`small`,onClick:L},null,8,[`label`])])])):t(``,!0),h(`div`,_r,[h(`label`,vr,F(D(i)(`serviceConfigDocker.volumes`)),1),h(`div`,yr,[u(D(Me),{modelValue:T.value,"onUpdate:modelValue":n[11]||=e=>T.value=e,binary:!0,"input-id":`mountRootpath`,onChange:R},null,8,[`modelValue`]),h(`label`,br,F(D(i)(`serviceConfigDocker.autoMount`)),1)]),h(`div`,xr,[(j(!0),P(z,null,ve(w.value,(e,t)=>(j(),P(`div`,{key:t,class:`docker-config__list-row`},[u(D(N),{"model-value":e,placeholder:D(i)(`serviceConfigDocker.volumePlaceholder`),class:`docker-config__input`,"onUpdate:modelValue":e=>he(t,e),onBlur:R,onKeydown:B(b(R,[`prevent`]),[`enter`])},null,8,[`model-value`,`placeholder`,`onUpdate:modelValue`,`onKeydown`]),u(D(E),{icon:`pi pi-trash`,severity:`danger`,text:``,rounded:``,size:`small`,onClick:e=>Ee(t)},null,8,[`onClick`])]))),128)),u(D(E),{id:`docker-add-volume`,label:D(i)(`serviceConfigDocker.addVolume`),icon:`pi pi-plus`,severity:`secondary`,outlined:``,size:`small`,onClick:pe},null,8,[`label`])])]),u(D(qe)),h(`div`,Sr,[h(`div`,Cr,[u(D(Me),{modelValue:ne.value,"onUpdate:modelValue":n[12]||=e=>ne.value=e,binary:!0,"input-id":`useNativeCommand`,onChange:R},null,8,[`modelValue`]),h(`label`,wr,F(D(i)(`serviceConfigDocker.runNative`)),1)]),n[21]||=h(`span`,{class:`docker-config__hint`},` When enabled, the service command is executed directly inside the container (ignores CMD override below). `,-1),ne.value?(j(),P(`div`,Tr,[h(`label`,Er,F(D(i)(`serviceConfigDocker.shell`)),1),u(D(te),{"input-id":`docker-native-shell`,modelValue:ie.value,"onUpdate:modelValue":n[13]||=e=>ie.value=e,options:ae,"option-label":`label`,"option-value":`value`,class:`docker-config__select docker-config__select--small`,editable:``,placeholder:D(i)(`serviceConfigDocker.shellPlaceholder`),onChange:R},null,8,[`modelValue`,`placeholder`]),h(`span`,Dr,[o(F(D(i)(`serviceConfigDocker.shellHint`))+` (`,1),n[19]||=h(`code`,null,`shell -c '...'`,-1),n[20]||=o(`)`,-1)])])):t(``,!0),ne.value?(j(),P(`div`,Or,[h(`label`,kr,[r(h(`input`,{"onUpdate:modelValue":n[14]||=e=>re.value=e,type:`radio`,value:`isolated`,class:`docker-config__radio`,onChange:R},null,544),[[A,re.value]]),o(` `+F(D(i)(`serviceConfigDocker.isolated`)),1)]),h(`label`,Ar,[r(h(`input`,{"onUpdate:modelValue":n[15]||=e=>re.value=e,type:`radio`,value:`shared`,class:`docker-config__radio`,onChange:R},null,544),[[A,re.value]]),o(` `+F(D(i)(`serviceConfigDocker.shared`)),1)])])):t(``,!0)]),ne.value?t(``,!0):(j(),P(z,{key:3},[n[22]||=h(`div`,{class:`docker-config__section`},[h(`label`,{for:`docker-entrypoint`,class:`docker-config__section-title`},`Override`)],-1),h(`div`,jr,[h(`label`,Mr,F(D(i)(`serviceConfigDocker.entrypoint`)),1),u(D(N),{id:`docker-entrypoint`,modelValue:O.value,"onUpdate:modelValue":n[16]||=e=>O.value=e,placeholder:D(i)(`serviceConfigDocker.entrypointPlaceholder`),class:`docker-config__input`,onBlur:R,onKeydown:B(b(R,[`prevent`]),[`enter`])},null,8,[`modelValue`,`placeholder`,`onKeydown`])]),h(`div`,Nr,[h(`label`,Pr,F(D(i)(`serviceConfigDocker.cmdOverride`)),1),u(D(N),{id:`docker-command`,modelValue:ee.value,"onUpdate:modelValue":n[17]||=e=>ee.value=e,placeholder:D(i)(`serviceConfigDocker.cmdPlaceholder`),class:`docker-config__input`,onBlur:R,onKeydown:B(b(R,[`prevent`]),[`enter`])},null,8,[`modelValue`,`placeholder`,`onKeydown`])])],64)),u(D(qe)),h(`div`,Fr,[h(`label`,Ir,[o(F(D(i)(`serviceConfigDocker.bootstrapCommands`))+` `,1),h(`span`,Lr,` — `+F(D(i)(`serviceConfigDocker.bootstrapCommandsHint`)),1)])]),(j(!0),P(z,null,ve(M.value,(e,t)=>(j(),P(`div`,{key:e.id,class:`docker-config__bootstrap-card`},[h(`div`,Rr,[h(`div`,zr,[h(`label`,{class:`docker-config__label`,for:`docker-bootstrap-label-${t}`},`Label`,8,Br),u(D(N),{id:`docker-bootstrap-label-${t}`,"model-value":e.label,placeholder:D(i)(`serviceConfigDocker.bootstrapLabelPlaceholder`),class:`docker-config__input`,"onUpdate:modelValue":e=>ye(t,`label`,e),onBlur:R,onKeydown:B(b(R,[`prevent`]),[`enter`])},null,8,[`id`,`model-value`,`placeholder`,`onUpdate:modelValue`,`onKeydown`])]),h(`div`,Vr,[h(`label`,{class:`docker-config__label`,for:`docker-bootstrap-entrypoint-${t}`},`Entrypoint`,8,Hr),u(D(N),{id:`docker-bootstrap-entrypoint-${t}`,"model-value":e.entrypoint??``,placeholder:`/bin/sh`,class:`docker-config__input`,"onUpdate:modelValue":e=>ye(t,`entrypoint`,e),onBlur:R,onKeydown:B(b(R,[`prevent`]),[`enter`])},null,8,[`id`,`model-value`,`onUpdate:modelValue`,`onKeydown`])]),h(`div`,Ur,[h(`label`,{class:`docker-config__label`,for:`docker-bootstrap-command-${t}`},`Command`,8,Wr),u(D(N),{id:`docker-bootstrap-command-${t}`,"model-value":e.command,placeholder:`-c "npm install"`,class:`docker-config__input`,"onUpdate:modelValue":e=>ye(t,`command`,e),onBlur:R,onKeydown:B(b(R,[`prevent`]),[`enter`])},null,8,[`id`,`model-value`,`onUpdate:modelValue`,`onKeydown`])]),h(`div`,Gr,[h(`label`,{class:`docker-config__label`,for:`docker-bootstrap-user-${t}`},`User:Group`,8,Kr),u(D(N),{id:`docker-bootstrap-user-${t}`,"model-value":e.user??``,placeholder:D(i)(`serviceConfigDocker.userGroupHint`),class:`docker-config__input`,"onUpdate:modelValue":e=>ye(t,`user`,e),onBlur:R,onKeydown:B(b(R,[`prevent`]),[`enter`])},null,8,[`id`,`model-value`,`placeholder`,`onUpdate:modelValue`,`onKeydown`])]),h(`div`,qr,[u(D(E),{icon:`pi pi-arrow-up`,text:``,rounded:``,size:`small`,disabled:t===0,onClick:e=>Ce(t,-1)},null,8,[`disabled`,`onClick`]),u(D(E),{icon:`pi pi-arrow-down`,text:``,rounded:``,size:`small`,disabled:t===M.value.length-1,onClick:e=>Ce(t,1)},null,8,[`disabled`,`onClick`]),u(D(E),{icon:`pi pi-times`,severity:`danger`,text:``,rounded:``,size:`small`,onClick:e=>Se(t)},null,8,[`onClick`])])])]))),128)),h(`div`,Jr,[u(D(E),{id:`docker-add-bootstrap`,label:D(i)(`serviceConfigDocker.addBootstrapCommand`),icon:`pi pi-plus`,severity:`secondary`,outlined:``,size:`small`,onClick:ge},null,8,[`label`])])]))}}),[[`__scopeId`,`data-v-91c13548`]]),Xr={class:`config-commands`},Zr={class:`config-commands__execution`},Qr={class:`config-card config-card--execution`},$r={class:`config-card__header`},ei={class:`config-card__hint`},ti={class:`config-card config-card--execution`},ni={class:`config-card__header`},ri={key:0,class:`runner-option`},ii={class:`runner-option`},ai={class:`config-commands__tab-content`},oi={key:0,class:`config-commands__empty`},si={class:`config-commands__row`},ci={class:`config-commands__field`},li=[`for`],ui={class:`config-commands__field config-commands__field--wide`},di=[`for`],fi={class:`config-commands__field`},pi=[`for`],mi={class:`config-commands__actions-cell`},hi={class:`config-commands__footer`},gi={class:`config-commands__tab-content`},_i=`__inherit__`,vi=n(v({__name:`ServiceConfigCommands`,props:{service:{}},emits:[`save`,`dockerSave`],setup(e,{emit:n}){let r=e,o=n,{t:s}=oe(),c=re(),l=null,d=C({agentId:r.service.agentId??_i,runner:r.service.runner});R(()=>r.service,e=>{d.value={agentId:e.agentId??_i,runner:e.runner}});let f=i(()=>[{label:s(`serviceConfigCommands.native`),value:`native`,icon:`pi pi-desktop`},{label:s(`serviceConfigCommands.docker`),value:`docker`,icon:`pi pi-box`}]),p=i(()=>f.value.find(e=>e.value===d.value.runner)?.icon??`pi pi-box`),m=i(()=>[{label:s(`serviceForm.agentInherit`),value:_i},...c.agents.map(e=>({label:`${e.config.name} (${e.status.connected?s(`serviceConfigCommands.online`):s(`serviceConfigCommands.offline`)})`,value:e.config.id}))]),g=C([...r.service.commands??[]]);R(()=>r.service,e=>{l||(g.value=[...e.commands??[]])});function _(){g.value=[...g.value,{id:Oe(),label:``,command:``,cwd:void 0,shell:!0}]}function v(e){g.value=g.value.filter((t,n)=>n!==e)}function x(e,t,n){g.value=g.value.map((r,i)=>i===e?{...r,[t]:n===``?void 0:n}:r)}function S(){l&&clearTimeout(l),l=setTimeout(()=>{o(`save`,{agentId:d.value.agentId===_i?null:d.value.agentId||null,runner:d.value.runner,commands:g.value}),l=null},150)}function w(e){o(`dockerSave`,e)}function T(e){v(e),S()}return(n,r)=>(j(),P(`div`,Xr,[h(`div`,Zr,[h(`div`,Qr,[h(`div`,$r,[r[2]||=h(`i`,{class:`pi pi-server`},null,-1),h(`span`,null,F(D(s)(`serviceConfigCommands.agent`)),1)]),u(D(te),{modelValue:d.value.agentId,"onUpdate:modelValue":r[0]||=e=>d.value.agentId=e,options:m.value,"option-label":`label`,"option-value":`value`,class:`config-card__input`,onChange:S},null,8,[`modelValue`,`options`]),h(`small`,ei,F(D(s)(`serviceForm.agentHintEdit`)),1)]),h(`div`,ti,[h(`div`,ni,[h(`i`,{class:a(p.value)},null,2),h(`span`,null,F(D(s)(`serviceConfigCommands.runner`)),1)]),u(D(te),{modelValue:d.value.runner,"onUpdate:modelValue":r[1]||=e=>d.value.runner=e,options:f.value,"option-label":`label`,"option-value":`value`,class:`config-card__input`,onChange:S},{value:y(e=>[e.value?(j(),P(`div`,ri,[h(`i`,{class:a(f.value.find(t=>t.value===e.value)?.icon)},null,2),h(`span`,null,F(f.value.find(t=>t.value===e.value)?.label),1)])):t(``,!0)]),option:y(e=>[h(`div`,ii,[h(`i`,{class:a(e.option.icon)},null,2),h(`span`,null,F(e.option.label),1)])]),_:1},8,[`modelValue`,`options`])])]),u(D(Ie),{value:`0`},{default:y(()=>[u(D(Pe),null,{default:y(()=>[u(D(Le),{value:`0`},{default:y(()=>[r[3]||=h(`i`,{class:`pi pi-desktop tab-icon`},null,-1),h(`span`,null,F(D(s)(`serviceConfigCommands.native`)),1)]),_:1}),u(D(Le),{value:`1`},{default:y(()=>[r[4]||=h(`i`,{class:`pi pi-box tab-icon`},null,-1),h(`span`,null,F(D(s)(`serviceConfigCommands.docker`)),1)]),_:1})]),_:1}),u(D(Fe),null,{default:y(()=>[u(D(Re),{value:`0`},{default:y(()=>[h(`div`,ai,[g.value.length===0?(j(),P(`div`,oi,[h(`p`,null,F(D(s)(`serviceConfigCommands.noCommands`)),1)])):t(``,!0),(j(!0),P(z,null,ve(g.value,(e,t)=>(j(),P(`div`,{key:e.id,class:`config-card`},[h(`div`,si,[h(`div`,ci,[h(`label`,{class:`config-commands__label`,for:`cmd-label-${t}`},F(D(s)(`serviceConfigCommands.labelPlaceholder`)),9,li),u(D(N),{id:`cmd-label-${t}`,"model-value":e.label,placeholder:D(s)(`serviceConfigCommands.labelPlaceholder`),class:`config-card__input`,"onUpdate:modelValue":e=>x(t,`label`,e),onBlur:S,onKeydown:B(b(S,[`prevent`]),[`enter`])},null,8,[`id`,`model-value`,`placeholder`,`onUpdate:modelValue`,`onKeydown`])]),h(`div`,ui,[h(`label`,{class:`config-commands__label`,for:`cmd-command-${t}`},F(D(s)(`serviceConfigCommands.commandPlaceholder`)),9,di),u(D(N),{id:`cmd-command-${t}`,"model-value":e.command,placeholder:`e.g. npm start`,class:`config-card__input`,"onUpdate:modelValue":e=>x(t,`command`,e),onBlur:S,onKeydown:B(b(S,[`prevent`]),[`enter`])},null,8,[`id`,`model-value`,`onUpdate:modelValue`,`onKeydown`])]),h(`div`,fi,[h(`label`,{class:`config-commands__label`,for:`cmd-cwd-${t}`},`Working Dir (optional)`,8,pi),u(D(N),{id:`cmd-cwd-${t}`,"model-value":e.cwd??``,placeholder:D(s)(`serviceConfigCommands.cwdPlaceholder`),class:`config-card__input`,"onUpdate:modelValue":e=>x(t,`cwd`,e),onBlur:S,onKeydown:B(b(S,[`prevent`]),[`enter`])},null,8,[`id`,`model-value`,`placeholder`,`onUpdate:modelValue`,`onKeydown`])]),h(`div`,mi,[u(D(E),{icon:`pi pi-trash`,severity:`danger`,text:``,rounded:``,size:`small`,onClick:e=>T(t)},null,8,[`onClick`])])])]))),128)),h(`div`,hi,[u(D(E),{label:D(s)(`serviceConfigCommands.addCommand`),icon:`pi pi-plus`,severity:`secondary`,outlined:``,size:`small`,onClick:_},null,8,[`label`])])])]),_:1}),u(D(Re),{value:`1`},{default:y(()=>[h(`div`,gi,[u(Yr,{service:e.service,onSave:w},null,8,[`service`])])]),_:1})]),_:1})]),_:1})]))}}),[[`__scopeId`,`data-v-df297a71`]]),yi={class:`config-env`,"data-testid":`config-env`},bi={key:0,class:`active-env-display`},xi={class:`active-env-label`},Si={key:1,class:`inheritance-toggle`},Ci={class:`inheritance-label`},wi={class:`inherited-header`},Ti={class:`inherited-row-key`},Ei={class:`preview-key`},Di={class:`value-row`},Oi=[`onClick`],ki=[`onClick`],Ai={key:0,class:`secret-mask`},ji={key:1,class:`preview-value`},Mi={class:`config-env__header`},Ni={class:`config-env__title`},Pi={class:`config-env__actions`},Fi={key:3,class:`variables-view`},Ii={key:0},Li={key:1,class:`empty-state`},Ri={class:`inherited-header`},zi={class:`passthrough-info`},Bi={class:`preview-key`},Vi={key:0,class:`preview-value`},Hi={key:1,class:`passthrough-undefined`},Ui={key:4,class:`empty-state`},Wi={key:5,class:`empty-state`},Gi={class:`editor-container`},Ki={key:0,class:`editor-env-banner`},qi={class:`editor-env-text`},Ji={class:`editor-section`,"data-testid":`variables-editor`},Yi={key:0,class:`loading-container`},Xi={key:1,class:`preview-container`},Zi={class:`preview-info`},Qi={class:`preview-key`},$i={class:`value-row`},ea=[`onClick`],ta=[`onClick`],na={key:0,class:`secret-mask`},ra={key:1,class:`preview-value`},ia=n(v({__name:`ServiceConfigEnv`,props:{service:{},projectId:{},activeEnvironmentId:{}},setup(n){let r=n,{t:s}=oe(),l=ne(),d=ye(),p=ee(),m=f(),g=e(),_=ie(),v=i(()=>m.getByRef({id:r.projectId,orgId:g.activeOrgId})?.activeEnvironmentId??null),S=i(()=>p.findServiceEnvironment(r.service.id,v.value??``)),w=C(!1),T=C(!1),O=C(!1),k=C(!1),A=C(null),te=C(null),{suggestions:re,meta:ae,search:M}=He(()=>te.value??A.value),N=C(new Set);function ce(e){let t=new Set(N.value);t.has(e)?t.delete(e):t.add(e),N.value=t}let L=C(null);function de(e,t){navigator.clipboard.writeText(t),L.value=e,setTimeout(()=>{L.value===e&&(L.value=null)},1500)}let pe=C({}),me=C(!1),{values:he,agentEntry:ge,urlHost:ve}=Be({projectId:()=>r.projectId,environmentId:()=>v.value,agentId:()=>r.service.agentId}),Se=i(()=>{let e={...he.value};Object.assign(e,x(r.service.ports)),e[`service.NAME`]=r.service.name,e[`service.ID`]=r.service.id,Object.assign(e,we(r.service,ve.value)),r.service.url&&(e[`service.BASE_URL`]=r.service.url);let t=z(ge.value?.status?.cwd,ge.value?.status?.home);return t&&(e[`service.CWD`]=t),e});function z(e,t){let n=(r.service.resolvedCwd??r.service.cwd??``).trim();return n?n.startsWith(`~/`)&&t?t+n.slice(1):n.includes(`$`)?null:n.startsWith(`/`)||/^[A-Za-z]:[\\/]/.test(n)?n:null:e??null}let B=i(()=>ge.value?.config.passthroughEnv??[]),Te=i(()=>B.value.length>0);async function Ee(){if(!r.service.agentId||!Te.value){pe.value={};return}me.value=!0;try{pe.value=await ue.agent.getPassthroughEnv.query({id:r.service.agentId})}catch{pe.value={}}finally{me.value=!1}}let De=i(()=>B.value.map(e=>({name:e,value:pe.value[e]??null}))),Oe=i(()=>!S.value||!v.value?!0:S.value.parentIds?.includes(v.value)??!0);async function je(e){if(!(!S.value||!v.value)){k.value=!0;try{await p.update({id:S.value.id,parentIds:e?[v.value]:[]}),await Ue()}catch(e){l.add({severity:`error`,summary:s(`serviceConfigEnv.error`),detail:e.message??s(`serviceConfigEnv.failedToUpdateInheritance`),life:5e3})}finally{k.value=!1}}}let Me=i(()=>{let e=m.getByRef({id:r.projectId,orgId:g.activeOrgId});return e?.activeEnvironmentId?p.getById(e.activeEnvironmentId):null});function Pe(e){return!e||typeof e!=`object`?[]:Object.entries(e).map(([e,t])=>({variableId:e,key:t.key||e,slot:{value:t.value?.value??``,pre:t.value?.pre??``,post:t.value?.post??``,isSecret:t.value?.isSecret??!1}}))}let Fe=i(()=>A.value?Pe(A.value.variables):[]),Ie=i(()=>{if(!S.value||!A.value?.sources)return Fe.value;let e=S.value.id;return Fe.value.filter(t=>A.value.sources[t.variableId]?.environmentId===e)}),Le=i(()=>{if(!S.value||!A.value?.sources)return[];let e=S.value.id;return Fe.value.filter(t=>A.value.sources[t.variableId]?.environmentId!==e)}),Re=i(()=>{if(!A.value?.sources)return{};let e={};for(let[t,n]of Object.entries(A.value.sources))e[t]={environmentId:n.environmentId,overridden:n.overridden,...n.resolvedFrom?{resolvedFrom:n.resolvedFrom}:{},...n.overriddenBy?{overriddenBy:n.overriddenBy}:{}};return e});async function Ue(){if(S.value)try{A.value=await p.resolve(S.value.id)}catch(e){console.error(`Failed to resolve environment:`,e)}}async function We(){if(v.value)try{te.value=await p.resolve(v.value)}catch{}}async function Ge(){O.value=!0;try{await Je(),await Ue(),T.value=!0}catch(e){l.add({severity:`error`,summary:s(`serviceConfigEnv.error`),detail:e.message??s(`serviceConfigEnv.failedToLoadPreview`),life:5e3})}finally{O.value=!1}}let Ke=i(()=>A.value?Object.entries(A.value.env).map(([e,t])=>({key:e,value:Object.entries(Se.value).reduce((e,[t,n])=>e.replaceAll(`{{${t}}}`,n),t)})):[]);function qe(e,t){return t?`***`:e.length>50?e.substring(0,47)+`...`:e}async function Je(){if(S.value)return S.value;if(!v.value)return null;let e=Me.value;return e?(await p.create({name:`${r.service.name??r.service.id} — ${e.name}`,projectId:r.projectId,scope:`service`,reference:r.service.id,activateOn:v.value,parentIds:[v.value],variables:{}}),S.value):null}let Ye=i(()=>{let e=_.getByService(r.service.id);return e.length>0?e[0]:null}),Xe=i(()=>{let e=Ye.value?.state;return e===`running`||e===`errored`});async function Ze(){await Je(),w.value=!0,await Promise.all([Ue(),We()])}function Qe(){if(w.value=!1,!Xe.value||!Ye.value)return;let e=Ye.value.state===`running`?`restart`:`start`,t=r.service.name||r.service.id;d.require({message:s(e===`restart`?`serviceConfigEnv.restartConfirmMsg`:`serviceConfigEnv.startConfirmMsg`,{name:t}),header:s(e===`restart`?`serviceConfigEnv.restartTitle`:`serviceConfigEnv.startTitle`),icon:`pi pi-refresh`,acceptLabel:s(e===`restart`?`serviceConfigEnv.restartTitle`:`actions.start`),rejectLabel:s(`serviceConfigEnv.notNow`),accept:async()=>{try{let t=r.service.agentId;if(!t)return;e===`restart`?(await _.restart(t,r.service.id),l.add({severity:`success`,summary:s(`serviceConfigEnv.serviceRestarted`),life:3e3})):(await _.start(t,r.service.id),l.add({severity:`success`,summary:s(`serviceConfigEnv.serviceStarted`),life:3e3}))}catch(t){l.add({severity:`error`,summary:s(`serviceConfigEnv.error`),detail:t.message??s(`serviceConfigEnv.failedToAction`,{action:e}),life:5e3})}}})}return R(Me,async e=>{e&&await Promise.all([Ue(),We()])}),R(()=>r.service.agentId,()=>{Ee()}),be(async()=>{r.projectId&&await p.fetchAll(r.projectId),await Promise.all([Ue(),We(),Ee()])}),(e,r)=>(j(),P(`div`,yi,[v.value?(j(),P(`div`,bi,[h(`span`,xi,F(D(s)(`serviceConfigEnv.activeEnvironment`)),1),u(ze,{"environment-id":v.value},null,8,[`environment-id`])])):t(``,!0),S.value&&Me.value?(j(),P(`div`,Si,[u(D(Ne),{"model-value":Oe.value,disabled:k.value,"onUpdate:modelValue":je},null,8,[`model-value`,`disabled`]),h(`span`,Ci,F(Oe.value?D(s)(`serviceConfigEnv.inheritsFrom`,{name:Me.value.name}):D(s)(`serviceConfigEnv.isolated`,{name:Me.value.name})),1)])):t(``,!0),Le.value.length>0?(j(),I(D(xe),{key:2,class:`inherited-accordion`},{default:y(()=>[u(D(fe),{value:`inherited`},{default:y(()=>[u(D(_e),null,{default:y(()=>[h(`span`,wi,[r[6]||=h(`i`,{class:`pi pi-arrow-down-left`},null,-1),o(` `+F(D(s)(`serviceConfigEnv.inheritedVars`))+` `,1),u(D(se),{value:String(Le.value.length),severity:`secondary`,rounded:``},null,8,[`value`])])]),_:1}),u(D(le),null,{default:y(()=>[u(D(ke),{value:Le.value,size:`small`,"show-headers":!1},{default:y(()=>[u(D(Ae),{style:{width:`35%`}},{body:y(({data:e})=>[h(`div`,Ti,[h(`code`,Ei,F(e.key),1),Re.value[e.variableId]?(j(),I(ze,{key:0,"environment-id":Re.value[e.variableId].environmentId,class:`source-badge`},null,8,[`environment-id`])):t(``,!0)])]),_:1}),u(D(Ae),{style:{width:`65%`}},{body:y(({data:e})=>[h(`span`,Di,[h(`span`,{class:`value-actions`,onClick:r[0]||=b(()=>{},[`stop`])},[e.slot.isSecret?(j(),P(`i`,{key:0,class:a([N.value.has(e.variableId)?`pi pi-eye-slash`:`pi pi-eye`,`action-icon`]),onClick:t=>ce(e.variableId)},null,10,Oi)):t(``,!0),h(`i`,{class:a([L.value===e.variableId?`pi pi-check`:`pi pi-copy`,`action-icon`]),onClick:t=>de(e.variableId,e.slot.pre+e.slot.value+e.slot.post)},null,10,ki)]),e.slot.isSecret&&!N.value.has(e.variableId)?(j(),P(`span`,Ai,`***`)):(j(),P(`code`,ji,F(e.slot.pre)+F(e.slot.value)+F(e.slot.post),1))])]),_:1})]),_:1},8,[`value`])]),_:1})]),_:1})]),_:1})):t(``,!0),h(`div`,Mi,[h(`h3`,Ni,F(D(s)(`serviceConfigEnv.envVars`)),1),h(`div`,Pi,[u(D(E),{label:D(s)(`serviceConfigEnv.editVariables`),icon:`pi pi-pencil`,size:`small`,outlined:``,"data-testid":`env-edit-btn`,disabled:!v.value,onClick:Ze},null,8,[`label`,`disabled`]),u(D(E),{label:D(s)(`serviceConfigEnv.preview`),icon:`pi pi-eye`,size:`small`,outlined:``,severity:`secondary`,loading:O.value,disabled:!v.value,"data-testid":`env-preview-btn`,onClick:Ge},null,8,[`label`,`loading`,`disabled`])])]),S.value?(j(),P(`div`,Fi,[Ie.value.length>0?(j(),P(`div`,Ii,[u(Ve,{"environment-id":S.value.id,sources:Re.value,"resolved-env":{...te.value?.env??{},...A.value?.env??{}},"service-builtins":Se.value,editable:!1,"show-overrides":!0,"show-override-badge":!0,"show-delete":!1,"show-add-button":!1,onVariablesChanged:Ue},null,8,[`environment-id`,`sources`,`resolved-env`,`service-builtins`])])):(j(),P(`div`,Li,[h(`p`,null,F(D(s)(`serviceConfigEnv.noVarsConfigured`)),1)])),Te.value?(j(),I(D(xe),{key:2,class:`inherited-accordion`},{default:y(()=>[u(D(fe),{value:`passthrough`},{default:y(()=>[u(D(_e),null,{default:y(()=>[h(`span`,Ri,[r[7]||=h(`i`,{class:`pi pi-globe`},null,-1),o(` `+F(D(s)(`agentPage.passthrough.titleShort`))+` `,1),u(D(se),{value:String(B.value.length),severity:`secondary`,rounded:``},null,8,[`value`])])]),_:1}),u(D(le),null,{default:y(()=>[h(`p`,zi,F(D(s)(`serviceConfigEnv.passthroughInfo`)),1),me.value?(j(),I(D(Ce),{key:0,style:{width:`24px`,height:`24px`}})):(j(),I(D(ke),{key:1,value:De.value,stripedRows:``,size:`small`},{default:y(()=>[u(D(Ae),{field:`name`,header:D(s)(`common.key`),style:{width:`35%`}},{body:y(({data:e})=>[h(`code`,Bi,F(e.name),1)]),_:1},8,[`header`]),u(D(Ae),{header:D(s)(`common.value`),style:{width:`65%`}},{body:y(({data:e})=>[e.value===null?(j(),P(`span`,Hi,F(D(s)(`serviceConfigEnv.undefined`)),1)):(j(),P(`span`,Vi,F(e.value),1))]),_:1},8,[`header`])]),_:1},8,[`value`]))]),_:1})]),_:1})]),_:1})):t(``,!0)])):v.value?(j(),P(`div`,Wi,[h(`p`,null,F(D(s)(`serviceConfigEnv.noVarsConfigured`)),1)])):(j(),P(`div`,Ui,[h(`p`,null,F(D(s)(`serviceConfigEnv.noActiveEnv`)),1)])),u(D(c),{visible:w.value,header:D(s)(`serviceConfigEnv.editVarsHeader`),style:{width:`900px`},modal:``,"onUpdate:visible":r[2]||=e=>{e||Qe()}},{footer:y(()=>[u(D(E),{label:D(s)(`actions.close`),icon:`pi pi-times`,onClick:r[1]||=e=>Qe()},null,8,[`label`])]),default:y(()=>[h(`div`,Gi,[v.value?(j(),P(`div`,Ki,[h(`span`,qi,F(D(s)(`serviceConfigEnv.editingVarsFor`,{name:n.service.name||n.service.id})),1),u(ze,{"environment-id":v.value},null,8,[`environment-id`])])):t(``,!0),h(`div`,Ji,[S.value?(j(),I(Ve,{key:0,"environment-id":S.value.id,editable:!0,sources:Re.value,"autocomplete-enabled":!0,"autocomplete-suggestions":D(re),"autocomplete-meta":D(ae),"resolved-env":{...te.value?.env??{},...A.value?.env??{}},"service-builtins":Se.value,"show-overrides":!0,onVariablesChanged:Ue,"show-delete":!0,"show-add-button":!0,onAutocompleteSearch:D(M)},null,8,[`environment-id`,`sources`,`autocomplete-suggestions`,`autocomplete-meta`,`resolved-env`,`service-builtins`,`onAutocompleteSearch`])):t(``,!0)])])]),_:1},8,[`visible`,`header`]),u(D(c),{visible:T.value,"onUpdate:visible":r[5]||=e=>T.value=e,header:D(s)(`serviceConfigEnv.previewHeader`),style:{width:`700px`},modal:``,"data-testid":`env-preview-dialog`},{footer:y(()=>[u(D(E),{label:D(s)(`actions.close`),icon:`pi pi-times`,onClick:r[4]||=e=>T.value=!1},null,8,[`label`])]),default:y(()=>[O.value?(j(),P(`div`,Yi,[u(D(Ce))])):A.value?(j(),P(`div`,Xi,[h(`p`,Zi,F(D(s)(`serviceConfigEnv.injectedVarsInfo`)),1),u(D(ke),{value:Ke.value,stripedRows:``,size:`small`,rows:15,paginator:Ke.value.length>15},{default:y(()=>[u(D(Ae),{field:`key`,header:D(s)(`common.key`),style:{width:`35%`}},{body:y(({data:e})=>[h(`code`,Qi,F(e.key),1)]),_:1},8,[`header`]),u(D(Ae),{header:D(s)(`common.value`),style:{width:`65%`}},{body:y(({data:e})=>[h(`span`,$i,[h(`span`,{class:`value-actions`,onClick:r[3]||=b(()=>{},[`stop`])},[A.value.envSecrets.includes(e.key)?(j(),P(`i`,{key:0,class:a([N.value.has(`preview:`+e.key)?`pi pi-eye-slash`:`pi pi-eye`,`action-icon`]),onClick:t=>ce(`preview:`+e.key)},null,10,ea)):t(``,!0),h(`i`,{class:a([L.value===`preview:`+e.key?`pi pi-check`:`pi pi-copy`,`action-icon`]),onClick:t=>de(`preview:`+e.key,e.value)},null,10,ta)]),A.value.envSecrets.includes(e.key)&&!N.value.has(`preview:`+e.key)?(j(),P(`span`,na,`***`)):(j(),P(`span`,ra,F(qe(e.value,!1)),1))])]),_:1},8,[`header`])]),_:1},8,[`value`,`paginator`])])):t(``,!0)]),_:1},8,[`visible`,`header`])]))}}),[[`__scopeId`,`data-v-952c6d8e`]]),aa={class:`config-health`},oa={class:`config-card config-card--inline`},sa={class:`config-card__header`},ca={class:`config-card`},la={class:`config-card__header`},ua={class:`config-card`},da={class:`config-card__header`},fa={class:`config-card`},pa={class:`config-card__header`},ma={class:`config-card`},ha={class:`config-card__header`},ga={key:1,class:`config-card`},_a={class:`config-card__header`},va={class:`config-card__hint`},ya={class:`config-card`},ba={class:`config-card__header`},xa={class:`config-card`},Sa={class:`config-card__header`},Ca={class:`config-card`},wa={class:`config-card__header`},Ta={class:`config-card`},Ea={class:`config-card__header`},Da=n(v({__name:`ServiceConfigHealthCheck`,props:{service:{}},emits:[`save`],setup(e,{emit:n}){let r=e,i=n,{t:a}=oe(),o=C(!!r.service.healthCheck),s=C({type:r.service.healthCheck?.type??`http`,path:r.service.healthCheck?.path??`/health`,interval:r.service.healthCheck?.interval??3e4,timeout:r.service.healthCheck?.timeout??5e3,retries:r.service.healthCheck?.retries??3,method:r.service.healthCheck?.method??`GET`,expectedStatus:r.service.healthCheck?.expectedStatus??200,initialDelay:r.service.healthCheck?.initialDelay??5e3,command:r.service.healthCheck?.command??``}),c=[{label:`HTTP Request`,value:`http`},{label:`Command`,value:`command`}],l=[{label:`GET`,value:`GET`},{label:`HEAD`,value:`HEAD`},{label:`POST`,value:`POST`},{label:`PUT`,value:`PUT`}];R(()=>r.service,e=>{o.value=!!e.healthCheck,s.value={type:e.healthCheck?.type??`http`,path:e.healthCheck?.path??`/health`,interval:e.healthCheck?.interval??3e4,timeout:e.healthCheck?.timeout??5e3,retries:e.healthCheck?.retries??3,method:e.healthCheck?.method??`GET`,expectedStatus:e.healthCheck?.expectedStatus??200,initialDelay:e.healthCheck?.initialDelay??5e3,command:e.healthCheck?.command??``}});let d=null;function f(){d&&clearTimeout(d),d=setTimeout(()=>{if(!o.value)i(`save`,void 0);else{if(s.value.type===`http`&&!s.value.path?.trim()||s.value.type===`command`&&!s.value.command?.trim())return;i(`save`,{type:s.value.type,path:s.value.path,method:s.value.method,expectedStatus:s.value.expectedStatus,command:s.value.command||void 0,interval:s.value.interval,timeout:s.value.timeout,retries:s.value.retries,initialDelay:s.value.initialDelay})}d=null},150)}return(e,n)=>(j(),P(`div`,aa,[h(`div`,oa,[h(`div`,sa,[n[10]||=h(`i`,{class:`pi pi-heart`},null,-1),h(`span`,null,F(D(a)(`serviceConfigHealthCheck.enable`)),1)]),u(D(Ne),{modelValue:o.value,"onUpdate:modelValue":n[0]||=e=>o.value=e,onChange:f},null,8,[`modelValue`])]),o.value?(j(),P(z,{key:0},[h(`div`,ca,[h(`div`,la,[n[11]||=h(`i`,{class:`pi pi-cog`},null,-1),h(`span`,null,F(D(a)(`serviceConfigHealthCheck.type`)),1)]),u(D(te),{modelValue:s.value.type,"onUpdate:modelValue":n[1]||=e=>s.value.type=e,options:c,"option-label":`label`,"option-value":`value`,class:`config-card__input`,onChange:f},null,8,[`modelValue`]),n[12]||=h(`small`,{class:`config-card__hint`},`HTTP checks a URL endpoint; Command runs a shell command (exit 0 = healthy)`,-1)]),s.value.type===`http`?(j(),P(z,{key:0},[h(`div`,ua,[h(`div`,da,[n[13]||=h(`i`,{class:`pi pi-link`},null,-1),h(`span`,null,F(D(a)(`serviceConfigHealthCheck.path`)),1)]),u(D(N),{modelValue:s.value.path,"onUpdate:modelValue":n[2]||=e=>s.value.path=e,class:`config-card__input`,placeholder:`/health`,onBlur:f,onKeydown:B(b(f,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])]),h(`div`,fa,[h(`div`,pa,[n[14]||=h(`i`,{class:`pi pi-directions`},null,-1),h(`span`,null,F(D(a)(`serviceConfigHealthCheck.method`)),1)]),u(D(te),{modelValue:s.value.method,"onUpdate:modelValue":n[3]||=e=>s.value.method=e,options:l,"option-label":`label`,"option-value":`value`,class:`config-card__input`,onChange:f},null,8,[`modelValue`])]),h(`div`,ma,[h(`div`,ha,[n[15]||=h(`i`,{class:`pi pi-check-circle`},null,-1),h(`span`,null,F(D(a)(`serviceConfigHealthCheck.expectedStatus`)),1)]),u(D(je),{modelValue:s.value.expectedStatus,"onUpdate:modelValue":n[4]||=e=>s.value.expectedStatus=e,class:`config-card__input`,"use-grouping":!1,min:100,max:599,onBlur:f,onKeydown:B(b(f,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`]),n[16]||=h(`small`,{class:`config-card__hint`},`HTTP status code to expect (default 200)`,-1)])],64)):t(``,!0),s.value.type===`command`?(j(),P(`div`,ga,[h(`div`,_a,[n[17]||=h(`i`,{class:`pi pi-code`},null,-1),h(`span`,null,F(D(a)(`serviceConfigHealthCheck.command`)),1)]),u(D(L),{modelValue:s.value.command,"onUpdate:modelValue":n[5]||=e=>s.value.command=e,class:`config-card__input`,rows:`2`,placeholder:`curl -sf http://localhost:3000/health`,"auto-resize":``,onBlur:f},null,8,[`modelValue`]),h(`small`,va,F(D(a)(`serviceConfigHealthCheck.commandHint`)),1)])):t(``,!0),h(`div`,ya,[h(`div`,ba,[n[18]||=h(`i`,{class:`pi pi-hourglass`},null,-1),h(`span`,null,F(D(a)(`serviceConfigHealthCheck.initialDelay`)),1)]),u(D(je),{modelValue:s.value.initialDelay,"onUpdate:modelValue":n[6]||=e=>s.value.initialDelay=e,class:`config-card__input`,"use-grouping":!1,min:0,onBlur:f,onKeydown:B(b(f,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`]),n[19]||=h(`small`,{class:`config-card__hint`},`Wait before first health check (ms)`,-1)]),h(`div`,xa,[h(`div`,Sa,[n[20]||=h(`i`,{class:`pi pi-clock`},null,-1),h(`span`,null,F(D(a)(`serviceConfigHealthCheck.interval`)),1)]),u(D(je),{modelValue:s.value.interval,"onUpdate:modelValue":n[7]||=e=>s.value.interval=e,class:`config-card__input`,"use-grouping":!1,min:1e3,onBlur:f,onKeydown:B(b(f,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])]),h(`div`,Ca,[h(`div`,wa,[n[21]||=h(`i`,{class:`pi pi-stopwatch`},null,-1),h(`span`,null,F(D(a)(`serviceConfigHealthCheck.timeout`)),1)]),u(D(je),{modelValue:s.value.timeout,"onUpdate:modelValue":n[8]||=e=>s.value.timeout=e,class:`config-card__input`,"use-grouping":!1,min:500,onBlur:f,onKeydown:B(b(f,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])]),h(`div`,Ta,[h(`div`,Ea,[n[22]||=h(`i`,{class:`pi pi-replay`},null,-1),h(`span`,null,F(D(a)(`serviceConfigHealthCheck.retries`)),1)]),u(D(je),{modelValue:s.value.retries,"onUpdate:modelValue":n[9]||=e=>s.value.retries=e,class:`config-card__input`,"use-grouping":!1,min:0,max:10,onBlur:f,onKeydown:B(b(f,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])])],64)):t(``,!0)]))}}),[[`__scopeId`,`data-v-63e32039`]]),Oa={class:`config-shortcuts`},ka={key:0,class:`config-shortcuts__empty`},Aa={class:`config-shortcuts__row`},ja={class:`config-shortcuts__field`},Ma=[`for`],Na={class:`config-shortcuts__field config-shortcuts__field--wide`},Pa=[`for`],Fa={class:`config-shortcuts__field`},Ia=[`for`],La={class:`config-shortcuts__actions-cell`},Ra={class:`config-shortcuts__footer`},za=n(v({__name:`ServiceConfigShortcuts`,props:{service:{}},emits:[`save`],setup(e,{emit:n}){let r=e,{t:i}=oe(),a=n,o=C([...r.service.shortcuts??[]]),s=null;R(()=>r.service,e=>{s||(o.value=[...e.shortcuts??[]])});function c(){o.value=[...o.value,{id:Oe(),label:``,command:``,cwd:void 0}]}function l(e){o.value=o.value.filter((t,n)=>n!==e)}function d(e,t,n){o.value=o.value.map((r,i)=>i===e?{...r,[t]:n||void 0}:r)}function f(){s&&clearTimeout(s),s=setTimeout(()=>{a(`save`,o.value),s=null},150)}function p(e){l(e),f()}return(e,n)=>(j(),P(`div`,Oa,[o.value.length===0?(j(),P(`div`,ka,[h(`p`,null,F(D(i)(`serviceConfigShortcuts.empty`)),1)])):t(``,!0),(j(!0),P(z,null,ve(o.value,(e,t)=>(j(),P(`div`,{key:e.id,class:`config-card`},[h(`div`,Aa,[h(`div`,ja,[h(`label`,{class:`config-shortcuts__label`,for:`shortcut-label-${t}`},F(D(i)(`serviceConfigShortcuts.label`)),9,Ma),u(D(N),{id:`shortcut-label-${t}`,"model-value":e.label,placeholder:D(i)(`serviceConfigShortcuts.labelPlaceholder`),class:`config-card__input`,"data-testid":`shortcut-label-input`,"onUpdate:modelValue":e=>d(t,`label`,e),onBlur:f,onKeydown:B(b(f,[`prevent`]),[`enter`])},null,8,[`id`,`model-value`,`placeholder`,`onUpdate:modelValue`,`onKeydown`])]),h(`div`,Na,[h(`label`,{class:`config-shortcuts__label`,for:`shortcut-command-${t}`},F(D(i)(`serviceConfigShortcuts.command`)),9,Pa),u(D(N),{id:`shortcut-command-${t}`,"model-value":e.command,placeholder:D(i)(`serviceConfigShortcuts.commandPlaceholder`),class:`config-card__input`,"data-testid":`shortcut-command-input`,"onUpdate:modelValue":e=>d(t,`command`,e),onBlur:f,onKeydown:B(b(f,[`prevent`]),[`enter`])},null,8,[`id`,`model-value`,`placeholder`,`onUpdate:modelValue`,`onKeydown`])]),h(`div`,Fa,[h(`label`,{class:`config-shortcuts__label`,for:`shortcut-cwd-${t}`},F(D(i)(`serviceConfigShortcuts.workingDir`)),9,Ia),u(D(N),{id:`shortcut-cwd-${t}`,"model-value":e.cwd??``,placeholder:D(i)(`serviceConfigShortcuts.cwdPlaceholder`),class:`config-card__input`,"onUpdate:modelValue":e=>d(t,`cwd`,e),onBlur:f,onKeydown:B(b(f,[`prevent`]),[`enter`])},null,8,[`id`,`model-value`,`placeholder`,`onUpdate:modelValue`,`onKeydown`])]),h(`div`,La,[u(D(E),{icon:`pi pi-trash`,severity:`danger`,text:``,rounded:``,size:`small`,onClick:e=>p(t)},null,8,[`onClick`])])])]))),128)),h(`div`,Ra,[u(D(E),{label:D(i)(`serviceConfigShortcuts.addShortcut`),icon:`pi pi-plus`,severity:`secondary`,outlined:``,size:`small`,"data-testid":`add-shortcut-btn`,onClick:c},null,8,[`label`])])]))}}),[[`__scopeId`,`data-v-d6ecb989`]]),Ba=Object.defineProperty,Va=Object.getOwnPropertySymbols,Ha=Object.prototype.hasOwnProperty,Ua=Object.prototype.propertyIsEnumerable,Wa=(e,t,n)=>t in e?Ba(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Ga=(e,t)=>{for(var n in t||={})Ha.call(t,n)&&Wa(e,n,t[n]);if(Va)for(var n of Va(t))Ua.call(t,n)&&Wa(e,n,t[n]);return e},Ka=(e,t)=>{var n={};for(var r in e)Ha.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&Va)for(var r of Va(e))t.indexOf(r)<0&&Ua.call(e,r)&&(n[r]=e[r]);return n},qa=`[vue-draggable-plus]: `;function Ja(e){console.warn(qa+e)}function Ya(e){console.error(qa+e)}function Xa(e,t,n){return n>=0&&n<e.length&&e.splice(n,0,e.splice(t,1)[0]),e}function Za(e){return e.replace(/-(\w)/g,(e,t)=>t?t.toUpperCase():``)}function Qa(e){return Object.keys(e).reduce((t,n)=>(e[n]!==void 0&&(t[Za(n)]=e[n]),t),{})}function $a(e,t){return Array.isArray(e)&&e.splice(t,1),e}function eo(e,t,n){return Array.isArray(e)&&e.splice(t,0,n),e}function to(e){return e===void 0}function no(e){return typeof e==`string`}function ro(e,t,n){let r=e.children[n];e.insertBefore(t,r)}function io(e){e.parentNode&&e.parentNode.removeChild(e)}function ao(e,t=document){let n=null;return n=typeof t?.querySelector==`function`?(t?.querySelector)?.call(t,e):document.querySelector(e),n||Ja(`Element not found: ${e}`),n}function oo(e,t,n=null){return function(...r){return e.apply(n,r),t.apply(n,r)}}function so(e,t){let n=Ga({},e);return Object.keys(t).forEach(r=>{n[r]?n[r]=oo(e[r],t[r]):n[r]=t[r]}),n}function co(e){return e instanceof HTMLElement}function lo(e,t){Object.keys(e).forEach(n=>{t(n,e[n])})}function uo(e){return e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97)}var fo=Object.assign;function po(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function mo(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t];t%2?po(Object(n),!0).forEach(function(t){go(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):po(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function ho(e){"@babel/helpers - typeof";return ho=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},ho(e)}function go(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function _o(){return _o=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},_o.apply(this,arguments)}function vo(e,t){if(e==null)return{};var n={},r=Object.keys(e),i,a;for(a=0;a<r.length;a++)i=r[a],!(t.indexOf(i)>=0)&&(n[i]=e[i]);return n}function yo(e,t){if(e==null)return{};var n=vo(e,t),r,i;if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i<a.length;i++)r=a[i],!(t.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var bo=`1.15.2`;function xo(e){if(typeof window<`u`&&window.navigator)return!!navigator.userAgent.match(e)}var So=xo(/(?:Trident.*rv[ :]?11\.|msie|iemobile|Windows Phone)/i),Co=xo(/Edge/i),wo=xo(/firefox/i),To=xo(/safari/i)&&!xo(/chrome/i)&&!xo(/android/i),Eo=xo(/iP(ad|od|hone)/i),Do=xo(/chrome/i)&&xo(/android/i),Oo={capture:!1,passive:!1};function V(e,t,n){e.addEventListener(t,n,!So&&Oo)}function H(e,t,n){e.removeEventListener(t,n,!So&&Oo)}function ko(e,t){if(t){if(t[0]===`>`&&(t=t.substring(1)),e)try{if(e.matches)return e.matches(t);if(e.msMatchesSelector)return e.msMatchesSelector(t);if(e.webkitMatchesSelector)return e.webkitMatchesSelector(t)}catch{return!1}return!1}}function Ao(e){return e.host&&e!==document&&e.host.nodeType?e.host:e.parentNode}function jo(e,t,n,r){if(e){n||=document;do{if(t!=null&&(t[0]===`>`?e.parentNode===n&&ko(e,t):ko(e,t))||r&&e===n)return e;if(e===n)break}while(e=Ao(e))}return null}var Mo=/\s+/g;function No(e,t,n){e&&t&&(e.classList?e.classList[n?`add`:`remove`](t):e.className=((` `+e.className+` `).replace(Mo,` `).replace(` `+t+` `,` `)+(n?` `+t:``)).replace(Mo,` `))}function U(e,t,n){var r=e&&e.style;if(r){if(n===void 0)return document.defaultView&&document.defaultView.getComputedStyle?n=document.defaultView.getComputedStyle(e,``):e.currentStyle&&(n=e.currentStyle),t===void 0?n:n[t];!(t in r)&&t.indexOf(`webkit`)===-1&&(t=`-webkit-`+t),r[t]=n+(typeof n==`string`?``:`px`)}}function Po(e,t){var n=``;if(typeof e==`string`)n=e;else do{var r=U(e,`transform`);r&&r!==`none`&&(n=r+` `+n)}while(!t&&(e=e.parentNode));var i=window.DOMMatrix||window.WebKitCSSMatrix||window.CSSMatrix||window.MSCSSMatrix;return i&&new i(n)}function Fo(e,t,n){if(e){var r=e.getElementsByTagName(t),i=0,a=r.length;if(n)for(;i<a;i++)n(r[i],i);return r}return[]}function Io(){return document.scrollingElement||document.documentElement}function W(e,t,n,r,i){if(!(!e.getBoundingClientRect&&e!==window)){var a,o,s,c,l,u,d;if(e!==window&&e.parentNode&&e!==Io()?(a=e.getBoundingClientRect(),o=a.top,s=a.left,c=a.bottom,l=a.right,u=a.height,d=a.width):(o=0,s=0,c=window.innerHeight,l=window.innerWidth,u=window.innerHeight,d=window.innerWidth),(t||n)&&e!==window&&(i||=e.parentNode,!So))do if(i&&i.getBoundingClientRect&&(U(i,`transform`)!==`none`||n&&U(i,`position`)!==`static`)){var f=i.getBoundingClientRect();o-=f.top+parseInt(U(i,`border-top-width`)),s-=f.left+parseInt(U(i,`border-left-width`)),c=o+a.height,l=s+a.width;break}while(i=i.parentNode);if(r&&e!==window){var p=Po(i||e),m=p&&p.a,h=p&&p.d;p&&(o/=h,s/=m,d/=m,u/=h,c=o+u,l=s+d)}return{top:o,left:s,bottom:c,right:l,width:d,height:u}}}function Lo(e,t,n){for(var r=Uo(e,!0),i=W(e)[t];r;){var a=W(r)[n],o=void 0;if(o=i>=a,!o)return r;if(r===Io())break;r=Uo(r,!1)}return!1}function Ro(e,t,n,r){for(var i=0,a=0,o=e.children;a<o.length;){if(o[a].style.display!==`none`&&o[a]!==Q.ghost&&(r||o[a]!==Q.dragged)&&jo(o[a],n.draggable,e,!1)){if(i===t)return o[a];i++}a++}return null}function zo(e,t){for(var n=e.lastElementChild;n&&(n===Q.ghost||U(n,`display`)===`none`||t&&!ko(n,t));)n=n.previousElementSibling;return n||null}function Bo(e,t){var n=0;if(!e||!e.parentNode)return-1;for(;e=e.previousElementSibling;)e.nodeName.toUpperCase()!==`TEMPLATE`&&e!==Q.clone&&(!t||ko(e,t))&&n++;return n}function Vo(e){var t=0,n=0,r=Io();if(e)do{var i=Po(e),a=i.a,o=i.d;t+=e.scrollLeft*a,n+=e.scrollTop*o}while(e!==r&&(e=e.parentNode));return[t,n]}function Ho(e,t){for(var n in e)if(e.hasOwnProperty(n)){for(var r in t)if(t.hasOwnProperty(r)&&t[r]===e[n][r])return Number(n)}return-1}function Uo(e,t){if(!e||!e.getBoundingClientRect)return Io();var n=e,r=!1;do if(n.clientWidth<n.scrollWidth||n.clientHeight<n.scrollHeight){var i=U(n);if(n.clientWidth<n.scrollWidth&&(i.overflowX==`auto`||i.overflowX==`scroll`)||n.clientHeight<n.scrollHeight&&(i.overflowY==`auto`||i.overflowY==`scroll`)){if(!n.getBoundingClientRect||n===document.body)return Io();if(r||t)return n;r=!0}}while(n=n.parentNode);return Io()}function Wo(e,t){if(e&&t)for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);return e}function Go(e,t){return Math.round(e.top)===Math.round(t.top)&&Math.round(e.left)===Math.round(t.left)&&Math.round(e.height)===Math.round(t.height)&&Math.round(e.width)===Math.round(t.width)}var Ko;function qo(e,t){return function(){if(!Ko){var n=arguments,r=this;n.length===1?e.call(r,n[0]):e.apply(r,n),Ko=setTimeout(function(){Ko=void 0},t)}}}function Jo(){clearTimeout(Ko),Ko=void 0}function Yo(e,t,n){e.scrollLeft+=t,e.scrollTop+=n}function Xo(e){var t=window.Polymer,n=window.jQuery||window.Zepto;return t&&t.dom?t.dom(e).cloneNode(!0):n?n(e).clone(!0)[0]:e.cloneNode(!0)}function Zo(e,t,n){var r={};return Array.from(e.children).forEach(function(i){if(!(!jo(i,t.draggable,e,!1)||i.animated||i===n)){var a=W(i);r.left=Math.min(r.left??1/0,a.left),r.top=Math.min(r.top??1/0,a.top),r.right=Math.max(r.right??-1/0,a.right),r.bottom=Math.max(r.bottom??-1/0,a.bottom)}}),r.width=r.right-r.left,r.height=r.bottom-r.top,r.x=r.left,r.y=r.top,r}var Qo=`Sortable`+new Date().getTime();function $o(){var e=[],t;return{captureAnimationState:function(){e=[],this.options.animation&&[].slice.call(this.el.children).forEach(function(t){if(!(U(t,`display`)===`none`||t===Q.ghost)){e.push({target:t,rect:W(t)});var n=mo({},e[e.length-1].rect);if(t.thisAnimationDuration){var r=Po(t,!0);r&&(n.top-=r.f,n.left-=r.e)}t.fromRect=n}})},addAnimationState:function(t){e.push(t)},removeAnimationState:function(t){e.splice(Ho(e,{target:t}),1)},animateAll:function(n){var r=this;if(!this.options.animation){clearTimeout(t),typeof n==`function`&&n();return}var i=!1,a=0;e.forEach(function(e){var t=0,n=e.target,o=n.fromRect,s=W(n),c=n.prevFromRect,l=n.prevToRect,u=e.rect,d=Po(n,!0);d&&(s.top-=d.f,s.left-=d.e),n.toRect=s,n.thisAnimationDuration&&Go(c,s)&&!Go(o,s)&&(u.top-s.top)/(u.left-s.left)===(o.top-s.top)/(o.left-s.left)&&(t=ts(u,c,l,r.options)),Go(s,o)||(n.prevFromRect=o,n.prevToRect=s,t||=r.options.animation,r.animate(n,u,s,t)),t&&(i=!0,a=Math.max(a,t),clearTimeout(n.animationResetTimer),n.animationResetTimer=setTimeout(function(){n.animationTime=0,n.prevFromRect=null,n.fromRect=null,n.prevToRect=null,n.thisAnimationDuration=null},t),n.thisAnimationDuration=t)}),clearTimeout(t),i?t=setTimeout(function(){typeof n==`function`&&n()},a):typeof n==`function`&&n(),e=[]},animate:function(e,t,n,r){if(r){U(e,`transition`,``),U(e,`transform`,``);var i=Po(this.el),a=i&&i.a,o=i&&i.d,s=(t.left-n.left)/(a||1),c=(t.top-n.top)/(o||1);e.animatingX=!!s,e.animatingY=!!c,U(e,`transform`,`translate3d(`+s+`px,`+c+`px,0)`),this.forRepaintDummy=es(e),U(e,`transition`,`transform `+r+`ms`+(this.options.easing?` `+this.options.easing:``)),U(e,`transform`,`translate3d(0,0,0)`),typeof e.animated==`number`&&clearTimeout(e.animated),e.animated=setTimeout(function(){U(e,`transition`,``),U(e,`transform`,``),e.animated=!1,e.animatingX=!1,e.animatingY=!1},r)}}}}function es(e){return e.offsetWidth}function ts(e,t,n,r){return Math.sqrt((t.top-e.top)**2+(t.left-e.left)**2)/Math.sqrt((t.top-n.top)**2+(t.left-n.left)**2)*r.animation}var ns=[],rs={initializeByDefault:!0},is={mount:function(e){for(var t in rs)rs.hasOwnProperty(t)&&!(t in e)&&(e[t]=rs[t]);ns.forEach(function(t){if(t.pluginName===e.pluginName)throw`Sortable: Cannot mount plugin ${e.pluginName} more than once`}),ns.push(e)},pluginEvent:function(e,t,n){var r=this;this.eventCanceled=!1,n.cancel=function(){r.eventCanceled=!0};var i=e+`Global`;ns.forEach(function(r){t[r.pluginName]&&(t[r.pluginName][i]&&t[r.pluginName][i](mo({sortable:t},n)),t.options[r.pluginName]&&t[r.pluginName][e]&&t[r.pluginName][e](mo({sortable:t},n)))})},initializePlugins:function(e,t,n,r){for(var i in ns.forEach(function(r){var i=r.pluginName;if(!(!e.options[i]&&!r.initializeByDefault)){var a=new r(e,t,e.options);a.sortable=e,a.options=e.options,e[i]=a,_o(n,a.defaults)}}),e.options)if(e.options.hasOwnProperty(i)){var a=this.modifyOption(e,i,e.options[i]);a!==void 0&&(e.options[i]=a)}},getEventProperties:function(e,t){var n={};return ns.forEach(function(r){typeof r.eventProperties==`function`&&_o(n,r.eventProperties.call(t[r.pluginName],e))}),n},modifyOption:function(e,t,n){var r;return ns.forEach(function(i){e[i.pluginName]&&i.optionListeners&&typeof i.optionListeners[t]==`function`&&(r=i.optionListeners[t].call(e[i.pluginName],n))}),r}};function as(e){var t=e.sortable,n=e.rootEl,r=e.name,i=e.targetEl,a=e.cloneEl,o=e.toEl,s=e.fromEl,c=e.oldIndex,l=e.newIndex,u=e.oldDraggableIndex,d=e.newDraggableIndex,f=e.originalEvent,p=e.putSortable,m=e.extraEventProperties;if(t||=n&&n[Qo],t){var h,g=t.options,_=`on`+r.charAt(0).toUpperCase()+r.substr(1);window.CustomEvent&&!So&&!Co?h=new CustomEvent(r,{bubbles:!0,cancelable:!0}):(h=document.createEvent(`Event`),h.initEvent(r,!0,!0)),h.to=o||n,h.from=s||n,h.item=i||n,h.clone=a,h.oldIndex=c,h.newIndex=l,h.oldDraggableIndex=u,h.newDraggableIndex=d,h.originalEvent=f,h.pullMode=p?p.lastPutMode:void 0;var v=mo(mo({},m),is.getEventProperties(r,t));for(var y in v)h[y]=v[y];n&&n.dispatchEvent(h),g[_]&&g[_].call(t,h)}}var os=[`evt`],ss=function(e,t){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},r=n.evt,i=yo(n,os);is.pluginEvent.bind(Q)(e,t,mo({dragEl:G,parentEl:K,ghostEl:q,rootEl:J,nextEl:ls,lastDownEl:us,cloneEl:Y,cloneHidden:ds,dragStarted:Es,putSortable:X,activeSortable:Q.active,originalEvent:r,oldIndex:fs,oldDraggableIndex:ms,newIndex:ps,newDraggableIndex:hs,hideGhostForTarget:Ws,unhideGhostForTarget:Gs,cloneNowHidden:function(){ds=!0},cloneNowShown:function(){ds=!1},dispatchSortableEvent:function(e){cs({sortable:t,name:e,originalEvent:r})}},i))};function cs(e){as(mo({putSortable:X,cloneEl:Y,targetEl:G,rootEl:J,oldIndex:fs,oldDraggableIndex:ms,newIndex:ps,newDraggableIndex:hs},e))}var G,K,q,J,ls,us,Y,ds,fs,ps,ms,hs,gs,X,_s=!1,vs=!1,ys=[],bs,xs,Ss,Cs,ws,Ts,Es,Ds,Os,ks=!1,As=!1,js,Z,Ms=[],Ns=!1,Ps=[],Fs=typeof document<`u`,Is=Eo,Ls=Co||So?`cssFloat`:`float`,Rs=Fs&&!Do&&!Eo&&`draggable`in document.createElement(`div`),zs=function(){if(Fs){if(So)return!1;var e=document.createElement(`x`);return e.style.cssText=`pointer-events:auto`,e.style.pointerEvents===`auto`}}(),Bs=function(e,t){var n=U(e),r=parseInt(n.width)-parseInt(n.paddingLeft)-parseInt(n.paddingRight)-parseInt(n.borderLeftWidth)-parseInt(n.borderRightWidth),i=Ro(e,0,t),a=Ro(e,1,t),o=i&&U(i),s=a&&U(a),c=o&&parseInt(o.marginLeft)+parseInt(o.marginRight)+W(i).width,l=s&&parseInt(s.marginLeft)+parseInt(s.marginRight)+W(a).width;if(n.display===`flex`)return n.flexDirection===`column`||n.flexDirection===`column-reverse`?`vertical`:`horizontal`;if(n.display===`grid`)return n.gridTemplateColumns.split(` `).length<=1?`vertical`:`horizontal`;if(i&&o.float&&o.float!==`none`){var u=o.float===`left`?`left`:`right`;return a&&(s.clear===`both`||s.clear===u)?`vertical`:`horizontal`}return i&&(o.display===`block`||o.display===`flex`||o.display===`table`||o.display===`grid`||c>=r&&n[Ls]===`none`||a&&n[Ls]===`none`&&c+l>r)?`vertical`:`horizontal`},Vs=function(e,t,n){var r=n?e.left:e.top,i=n?e.right:e.bottom,a=n?e.width:e.height,o=n?t.left:t.top,s=n?t.right:t.bottom,c=n?t.width:t.height;return r===o||i===s||r+a/2===o+c/2},Hs=function(e,t){var n;return ys.some(function(r){var i=r[Qo].options.emptyInsertThreshold;if(!(!i||zo(r))){var a=W(r),o=e>=a.left-i&&e<=a.right+i,s=t>=a.top-i&&t<=a.bottom+i;if(o&&s)return n=r}}),n},Us=function(e){function t(e,n){return function(r,i,a,o){var s=r.options.group.name&&i.options.group.name&&r.options.group.name===i.options.group.name;if(e==null&&(n||s))return!0;if(e==null||e===!1)return!1;if(n&&e===`clone`)return e;if(typeof e==`function`)return t(e(r,i,a,o),n)(r,i,a,o);var c=(n?r:i).options.group.name;return e===!0||typeof e==`string`&&e===c||e.join&&e.indexOf(c)>-1}}var n={},r=e.group;(!r||ho(r)!=`object`)&&(r={name:r}),n.name=r.name,n.checkPull=t(r.pull,!0),n.checkPut=t(r.put),n.revertClone=r.revertClone,e.group=n},Ws=function(){!zs&&q&&U(q,`display`,`none`)},Gs=function(){!zs&&q&&U(q,`display`,``)};Fs&&!Do&&document.addEventListener(`click`,function(e){if(vs)return e.preventDefault(),e.stopPropagation&&e.stopPropagation(),e.stopImmediatePropagation&&e.stopImmediatePropagation(),vs=!1,!1},!0);var Ks=function(e){if(G){e=e.touches?e.touches[0]:e;var t=Hs(e.clientX,e.clientY);if(t){var n={};for(var r in e)e.hasOwnProperty(r)&&(n[r]=e[r]);n.target=n.rootEl=t,n.preventDefault=void 0,n.stopPropagation=void 0,t[Qo]._onDragOver(n)}}},qs=function(e){G&&G.parentNode[Qo]._isOutsideThisEl(e.target)};function Q(e,t){if(!(e&&e.nodeType&&e.nodeType===1))throw`Sortable: \`el\` must be an HTMLElement, not ${{}.toString.call(e)}`;this.el=e,this.options=t=_o({},t),e[Qo]=this;var n={group:null,sort:!0,disabled:!1,store:null,handle:null,draggable:/^[uo]l$/i.test(e.nodeName)?`>li`:`>*`,swapThreshold:1,invertSwap:!1,invertedSwapThreshold:null,removeCloneOnHide:!0,direction:function(){return Bs(e,this.options)},ghostClass:`sortable-ghost`,chosenClass:`sortable-chosen`,dragClass:`sortable-drag`,ignore:`a, img`,filter:null,preventOnFilter:!0,animation:0,easing:null,setData:function(e,t){e.setData(`Text`,t.textContent)},dropBubble:!1,dragoverBubble:!1,dataIdAttr:`data-id`,delay:0,delayOnTouchOnly:!1,touchStartThreshold:(Number.parseInt?Number:window).parseInt(window.devicePixelRatio,10)||1,forceFallback:!1,fallbackClass:`sortable-fallback`,fallbackOnBody:!1,fallbackTolerance:0,fallbackOffset:{x:0,y:0},supportPointer:Q.supportPointer!==!1&&`PointerEvent`in window&&!To,emptyInsertThreshold:5};for(var r in is.initializePlugins(this,e,n),n)!(r in t)&&(t[r]=n[r]);for(var i in Us(t),this)i.charAt(0)===`_`&&typeof this[i]==`function`&&(this[i]=this[i].bind(this));this.nativeDraggable=t.forceFallback?!1:Rs,this.nativeDraggable&&(this.options.touchStartThreshold=1),t.supportPointer?V(e,`pointerdown`,this._onTapStart):(V(e,`mousedown`,this._onTapStart),V(e,`touchstart`,this._onTapStart)),this.nativeDraggable&&(V(e,`dragover`,this),V(e,`dragenter`,this)),ys.push(this.el),t.store&&t.store.get&&this.sort(t.store.get(this)||[]),_o(this,$o())}Q.prototype={constructor:Q,_isOutsideThisEl:function(e){!this.el.contains(e)&&e!==this.el&&(Ds=null)},_getDirection:function(e,t){return typeof this.options.direction==`function`?this.options.direction.call(this,e,t,G):this.options.direction},_onTapStart:function(e){if(e.cancelable){var t=this,n=this.el,r=this.options,i=r.preventOnFilter,a=e.type,o=e.touches&&e.touches[0]||e.pointerType&&e.pointerType===`touch`&&e,s=(o||e).target,c=e.target.shadowRoot&&(e.path&&e.path[0]||e.composedPath&&e.composedPath()[0])||s,l=r.filter;if(rc(n),!G&&!(/mousedown|pointerdown/.test(a)&&e.button!==0||r.disabled)&&!c.isContentEditable&&!(!this.nativeDraggable&&To&&s&&s.tagName.toUpperCase()===`SELECT`)&&(s=jo(s,r.draggable,n,!1),!(s&&s.animated)&&us!==s)){if(fs=Bo(s),ms=Bo(s,r.draggable),typeof l==`function`){if(l.call(this,e,s,this)){cs({sortable:t,rootEl:c,name:`filter`,targetEl:s,toEl:n,fromEl:n}),ss(`filter`,t,{evt:e}),i&&e.cancelable&&e.preventDefault();return}}else if(l&&(l=l.split(`,`).some(function(r){if(r=jo(c,r.trim(),n,!1),r)return cs({sortable:t,rootEl:r,name:`filter`,targetEl:s,fromEl:n,toEl:n}),ss(`filter`,t,{evt:e}),!0}),l)){i&&e.cancelable&&e.preventDefault();return}r.handle&&!jo(c,r.handle,n,!1)||this._prepareDragStart(e,o,s)}}},_prepareDragStart:function(e,t,n){var r=this,i=r.el,a=r.options,o=i.ownerDocument,s;if(n&&!G&&n.parentNode===i){var c=W(n);if(J=i,G=n,K=G.parentNode,ls=G.nextSibling,us=n,gs=a.group,Q.dragged=G,bs={target:G,clientX:(t||e).clientX,clientY:(t||e).clientY},ws=bs.clientX-c.left,Ts=bs.clientY-c.top,this._lastX=(t||e).clientX,this._lastY=(t||e).clientY,G.style[`will-change`]=`all`,s=function(){if(ss(`delayEnded`,r,{evt:e}),Q.eventCanceled){r._onDrop();return}r._disableDelayedDragEvents(),!wo&&r.nativeDraggable&&(G.draggable=!0),r._triggerDragStart(e,t),cs({sortable:r,name:`choose`,originalEvent:e}),No(G,a.chosenClass,!0)},a.ignore.split(`,`).forEach(function(e){Fo(G,e.trim(),Xs)}),V(o,`dragover`,Ks),V(o,`mousemove`,Ks),V(o,`touchmove`,Ks),V(o,`mouseup`,r._onDrop),V(o,`touchend`,r._onDrop),V(o,`touchcancel`,r._onDrop),wo&&this.nativeDraggable&&(this.options.touchStartThreshold=4,G.draggable=!0),ss(`delayStart`,this,{evt:e}),a.delay&&(!a.delayOnTouchOnly||t)&&(!this.nativeDraggable||!(Co||So))){if(Q.eventCanceled){this._onDrop();return}V(o,`mouseup`,r._disableDelayedDrag),V(o,`touchend`,r._disableDelayedDrag),V(o,`touchcancel`,r._disableDelayedDrag),V(o,`mousemove`,r._delayedDragTouchMoveHandler),V(o,`touchmove`,r._delayedDragTouchMoveHandler),a.supportPointer&&V(o,`pointermove`,r._delayedDragTouchMoveHandler),r._dragStartTimer=setTimeout(s,a.delay)}else s()}},_delayedDragTouchMoveHandler:function(e){var t=e.touches?e.touches[0]:e;Math.max(Math.abs(t.clientX-this._lastX),Math.abs(t.clientY-this._lastY))>=Math.floor(this.options.touchStartThreshold/(this.nativeDraggable&&window.devicePixelRatio||1))&&this._disableDelayedDrag()},_disableDelayedDrag:function(){G&&Xs(G),clearTimeout(this._dragStartTimer),this._disableDelayedDragEvents()},_disableDelayedDragEvents:function(){var e=this.el.ownerDocument;H(e,`mouseup`,this._disableDelayedDrag),H(e,`touchend`,this._disableDelayedDrag),H(e,`touchcancel`,this._disableDelayedDrag),H(e,`mousemove`,this._delayedDragTouchMoveHandler),H(e,`touchmove`,this._delayedDragTouchMoveHandler),H(e,`pointermove`,this._delayedDragTouchMoveHandler)},_triggerDragStart:function(e,t){t||=e.pointerType==`touch`&&e,!this.nativeDraggable||t?this.options.supportPointer?V(document,`pointermove`,this._onTouchMove):t?V(document,`touchmove`,this._onTouchMove):V(document,`mousemove`,this._onTouchMove):(V(G,`dragend`,this),V(J,`dragstart`,this._onDragStart));try{document.selection?ic(function(){document.selection.empty()}):window.getSelection().removeAllRanges()}catch{}},_dragStarted:function(e,t){if(_s=!1,J&&G){ss(`dragStarted`,this,{evt:t}),this.nativeDraggable&&V(document,`dragover`,qs);var n=this.options;!e&&No(G,n.dragClass,!1),No(G,n.ghostClass,!0),Q.active=this,e&&this._appendGhost(),cs({sortable:this,name:`start`,originalEvent:t})}else this._nulling()},_emulateDragOver:function(){if(xs){this._lastX=xs.clientX,this._lastY=xs.clientY,Ws();for(var e=document.elementFromPoint(xs.clientX,xs.clientY),t=e;e&&e.shadowRoot&&(e=e.shadowRoot.elementFromPoint(xs.clientX,xs.clientY),e!==t);)t=e;if(G.parentNode[Qo]._isOutsideThisEl(e),t)do{if(t[Qo]){var n=void 0;if(n=t[Qo]._onDragOver({clientX:xs.clientX,clientY:xs.clientY,target:e,rootEl:t}),n&&!this.options.dragoverBubble)break}e=t}while(t=t.parentNode);Gs()}},_onTouchMove:function(e){if(bs){var t=this.options,n=t.fallbackTolerance,r=t.fallbackOffset,i=e.touches?e.touches[0]:e,a=q&&Po(q,!0),o=q&&a&&a.a,s=q&&a&&a.d,c=Is&&Z&&Vo(Z),l=(i.clientX-bs.clientX+r.x)/(o||1)+(c?c[0]-Ms[0]:0)/(o||1),u=(i.clientY-bs.clientY+r.y)/(s||1)+(c?c[1]-Ms[1]:0)/(s||1);if(!Q.active&&!_s){if(n&&Math.max(Math.abs(i.clientX-this._lastX),Math.abs(i.clientY-this._lastY))<n)return;this._onDragStart(e,!0)}if(q){a?(a.e+=l-(Ss||0),a.f+=u-(Cs||0)):a={a:1,b:0,c:0,d:1,e:l,f:u};var d=`matrix(${a.a},${a.b},${a.c},${a.d},${a.e},${a.f})`;U(q,`webkitTransform`,d),U(q,`mozTransform`,d),U(q,`msTransform`,d),U(q,`transform`,d),Ss=l,Cs=u,xs=i}e.cancelable&&e.preventDefault()}},_appendGhost:function(){if(!q){var e=this.options.fallbackOnBody?document.body:J,t=W(G,!0,Is,!0,e),n=this.options;if(Is){for(Z=e;U(Z,`position`)===`static`&&U(Z,`transform`)===`none`&&Z!==document;)Z=Z.parentNode;Z!==document.body&&Z!==document.documentElement?(Z===document&&(Z=Io()),t.top+=Z.scrollTop,t.left+=Z.scrollLeft):Z=Io(),Ms=Vo(Z)}q=G.cloneNode(!0),No(q,n.ghostClass,!1),No(q,n.fallbackClass,!0),No(q,n.dragClass,!0),U(q,`transition`,``),U(q,`transform`,``),U(q,`box-sizing`,`border-box`),U(q,`margin`,0),U(q,`top`,t.top),U(q,`left`,t.left),U(q,`width`,t.width),U(q,`height`,t.height),U(q,`opacity`,`0.8`),U(q,`position`,Is?`absolute`:`fixed`),U(q,`zIndex`,`100000`),U(q,`pointerEvents`,`none`),Q.ghost=q,e.appendChild(q),U(q,`transform-origin`,ws/parseInt(q.style.width)*100+`% `+Ts/parseInt(q.style.height)*100+`%`)}},_onDragStart:function(e,t){var n=this,r=e.dataTransfer,i=n.options;if(ss(`dragStart`,this,{evt:e}),Q.eventCanceled){this._onDrop();return}ss(`setupClone`,this),Q.eventCanceled||(Y=Xo(G),Y.removeAttribute(`id`),Y.draggable=!1,Y.style[`will-change`]=``,this._hideClone(),No(Y,this.options.chosenClass,!1),Q.clone=Y),n.cloneId=ic(function(){ss(`clone`,n),!Q.eventCanceled&&(n.options.removeCloneOnHide||J.insertBefore(Y,G),n._hideClone(),cs({sortable:n,name:`clone`}))}),!t&&No(G,i.dragClass,!0),t?(vs=!0,n._loopId=setInterval(n._emulateDragOver,50)):(H(document,`mouseup`,n._onDrop),H(document,`touchend`,n._onDrop),H(document,`touchcancel`,n._onDrop),r&&(r.effectAllowed=`move`,i.setData&&i.setData.call(n,r,G)),V(document,`drop`,n),U(G,`transform`,`translateZ(0)`)),_s=!0,n._dragStartId=ic(n._dragStarted.bind(n,t,e)),V(document,`selectstart`,n),Es=!0,To&&U(document.body,`user-select`,`none`)},_onDragOver:function(e){var t=this.el,n=e.target,r,i,a,o=this.options,s=o.group,c=Q.active,l=gs===s,u=o.sort,d=X||c,f,p=this,m=!1;if(Ns)return;function h(o,s){ss(o,p,mo({evt:e,isOwner:l,axis:f?`vertical`:`horizontal`,revert:a,dragRect:r,targetRect:i,canSort:u,fromSortable:d,target:n,completed:_,onMove:function(n,i){return Ys(J,t,G,r,n,W(n),e,i)},changed:v},s))}function g(){h(`dragOverAnimationCapture`),p.captureAnimationState(),p!==d&&d.captureAnimationState()}function _(r){return h(`dragOverCompleted`,{insertion:r}),r&&(l?c._hideClone():c._showClone(p),p!==d&&(No(G,X?X.options.ghostClass:c.options.ghostClass,!1),No(G,o.ghostClass,!0)),X!==p&&p!==Q.active?X=p:p===Q.active&&X&&(X=null),d===p&&(p._ignoreWhileAnimating=n),p.animateAll(function(){h(`dragOverAnimationComplete`),p._ignoreWhileAnimating=null}),p!==d&&(d.animateAll(),d._ignoreWhileAnimating=null)),(n===G&&!G.animated||n===t&&!n.animated)&&(Ds=null),!o.dragoverBubble&&!e.rootEl&&n!==document&&(G.parentNode[Qo]._isOutsideThisEl(e.target),!r&&Ks(e)),!o.dragoverBubble&&e.stopPropagation&&e.stopPropagation(),m=!0}function v(){ps=Bo(G),hs=Bo(G,o.draggable),cs({sortable:p,name:`change`,toEl:t,newIndex:ps,newDraggableIndex:hs,originalEvent:e})}if(e.preventDefault!==void 0&&e.cancelable&&e.preventDefault(),n=jo(n,o.draggable,t,!0),h(`dragOver`),Q.eventCanceled)return m;if(G.contains(e.target)||n.animated&&n.animatingX&&n.animatingY||p._ignoreWhileAnimating===n)return _(!1);if(vs=!1,c&&!o.disabled&&(l?u||(a=K!==J):X===this||(this.lastPutMode=gs.checkPull(this,c,G,e))&&s.checkPut(this,c,G,e))){if(f=this._getDirection(e,n)===`vertical`,r=W(G),h(`dragOverValid`),Q.eventCanceled)return m;if(a)return K=J,g(),this._hideClone(),h(`revert`),Q.eventCanceled||(ls?J.insertBefore(G,ls):J.appendChild(G)),_(!0);var y=zo(t,o.draggable);if(!y||$s(e,f,this)&&!y.animated){if(y===G)return _(!1);if(y&&t===e.target&&(n=y),n&&(i=W(n)),Ys(J,t,G,r,n,i,e,!!n)!==!1)return g(),y&&y.nextSibling?t.insertBefore(G,y.nextSibling):t.appendChild(G),K=t,v(),_(!0)}else if(y&&Qs(e,f,this)){var b=Ro(t,0,o,!0);if(b===G)return _(!1);if(n=b,i=W(n),Ys(J,t,G,r,n,i,e,!1)!==!1)return g(),t.insertBefore(G,b),K=t,v(),_(!0)}else if(n.parentNode===t){i=W(n);var x=0,S,C=G.parentNode!==t,w=!Vs(G.animated&&G.toRect||r,n.animated&&n.toRect||i,f),T=f?`top`:`left`,E=Lo(n,`top`,`top`)||Lo(G,`top`,`top`),D=E?E.scrollTop:void 0;Ds!==n&&(S=i[T],ks=!1,As=!w&&o.invertSwap||C),x=ec(e,n,i,f,w?1:o.swapThreshold,o.invertedSwapThreshold==null?o.swapThreshold:o.invertedSwapThreshold,As,Ds===n);var O;if(x!==0){var ee=Bo(G);do ee-=x,O=K.children[ee];while(O&&(U(O,`display`)===`none`||O===q))}if(x===0||O===n)return _(!1);Ds=n,Os=x;var k=n.nextElementSibling,A=!1;A=x===1;var j=Ys(J,t,G,r,n,i,e,A);if(j!==!1)return(j===1||j===-1)&&(A=j===1),Ns=!0,setTimeout(Zs,30),g(),A&&!k?t.appendChild(G):n.parentNode.insertBefore(G,A?k:n),E&&Yo(E,0,D-E.scrollTop),K=G.parentNode,S!==void 0&&!As&&(js=Math.abs(S-W(n)[T])),v(),_(!0)}if(t.contains(G))return _(!1)}return!1},_ignoreWhileAnimating:null,_offMoveEvents:function(){H(document,`mousemove`,this._onTouchMove),H(document,`touchmove`,this._onTouchMove),H(document,`pointermove`,this._onTouchMove),H(document,`dragover`,Ks),H(document,`mousemove`,Ks),H(document,`touchmove`,Ks)},_offUpEvents:function(){var e=this.el.ownerDocument;H(e,`mouseup`,this._onDrop),H(e,`touchend`,this._onDrop),H(e,`pointerup`,this._onDrop),H(e,`touchcancel`,this._onDrop),H(document,`selectstart`,this)},_onDrop:function(e){var t=this.el,n=this.options;if(ps=Bo(G),hs=Bo(G,n.draggable),ss(`drop`,this,{evt:e}),K=G&&G.parentNode,ps=Bo(G),hs=Bo(G,n.draggable),Q.eventCanceled){this._nulling();return}_s=!1,As=!1,ks=!1,clearInterval(this._loopId),clearTimeout(this._dragStartTimer),ac(this.cloneId),ac(this._dragStartId),this.nativeDraggable&&(H(document,`drop`,this),H(t,`dragstart`,this._onDragStart)),this._offMoveEvents(),this._offUpEvents(),To&&U(document.body,`user-select`,``),U(G,`transform`,``),e&&(Es&&(e.cancelable&&e.preventDefault(),!n.dropBubble&&e.stopPropagation()),q&&q.parentNode&&q.parentNode.removeChild(q),(J===K||X&&X.lastPutMode!==`clone`)&&Y&&Y.parentNode&&Y.parentNode.removeChild(Y),G&&(this.nativeDraggable&&H(G,`dragend`,this),Xs(G),G.style[`will-change`]=``,Es&&!_s&&No(G,X?X.options.ghostClass:this.options.ghostClass,!1),No(G,this.options.chosenClass,!1),cs({sortable:this,name:`unchoose`,toEl:K,newIndex:null,newDraggableIndex:null,originalEvent:e}),J===K?ps!==fs&&ps>=0&&(cs({sortable:this,name:`update`,toEl:K,originalEvent:e}),cs({sortable:this,name:`sort`,toEl:K,originalEvent:e})):(ps>=0&&(cs({rootEl:K,name:`add`,toEl:K,fromEl:J,originalEvent:e}),cs({sortable:this,name:`remove`,toEl:K,originalEvent:e}),cs({rootEl:K,name:`sort`,toEl:K,fromEl:J,originalEvent:e}),cs({sortable:this,name:`sort`,toEl:K,originalEvent:e})),X&&X.save()),Q.active&&((ps==null||ps===-1)&&(ps=fs,hs=ms),cs({sortable:this,name:`end`,toEl:K,originalEvent:e}),this.save()))),this._nulling()},_nulling:function(){ss(`nulling`,this),J=G=K=q=ls=Y=us=ds=bs=xs=Es=ps=hs=fs=ms=Ds=Os=X=gs=Q.dragged=Q.ghost=Q.clone=Q.active=null,Ps.forEach(function(e){e.checked=!0}),Ps.length=Ss=Cs=0},handleEvent:function(e){switch(e.type){case`drop`:case`dragend`:this._onDrop(e);break;case`dragenter`:case`dragover`:G&&(this._onDragOver(e),Js(e));break;case`selectstart`:e.preventDefault();break}},toArray:function(){for(var e=[],t,n=this.el.children,r=0,i=n.length,a=this.options;r<i;r++)t=n[r],jo(t,a.draggable,this.el,!1)&&e.push(t.getAttribute(a.dataIdAttr)||nc(t));return e},sort:function(e,t){var n={},r=this.el;this.toArray().forEach(function(e,t){var i=r.children[t];jo(i,this.options.draggable,r,!1)&&(n[e]=i)},this),t&&this.captureAnimationState(),e.forEach(function(e){n[e]&&(r.removeChild(n[e]),r.appendChild(n[e]))}),t&&this.animateAll()},save:function(){var e=this.options.store;e&&e.set&&e.set(this)},closest:function(e,t){return jo(e,t||this.options.draggable,this.el,!1)},option:function(e,t){var n=this.options;if(t===void 0)return n[e];var r=is.modifyOption(this,e,t);r===void 0?n[e]=t:n[e]=r,e===`group`&&Us(n)},destroy:function(){ss(`destroy`,this);var e=this.el;e[Qo]=null,H(e,`mousedown`,this._onTapStart),H(e,`touchstart`,this._onTapStart),H(e,`pointerdown`,this._onTapStart),this.nativeDraggable&&(H(e,`dragover`,this),H(e,`dragenter`,this)),Array.prototype.forEach.call(e.querySelectorAll(`[draggable]`),function(e){e.removeAttribute(`draggable`)}),this._onDrop(),this._disableDelayedDragEvents(),ys.splice(ys.indexOf(this.el),1),this.el=e=null},_hideClone:function(){if(!ds){if(ss(`hideClone`,this),Q.eventCanceled)return;U(Y,`display`,`none`),this.options.removeCloneOnHide&&Y.parentNode&&Y.parentNode.removeChild(Y),ds=!0}},_showClone:function(e){if(e.lastPutMode!==`clone`){this._hideClone();return}if(ds){if(ss(`showClone`,this),Q.eventCanceled)return;G.parentNode==J&&!this.options.group.revertClone?J.insertBefore(Y,G):ls?J.insertBefore(Y,ls):J.appendChild(Y),this.options.group.revertClone&&this.animate(G,Y),U(Y,`display`,``),ds=!1}}};function Js(e){e.dataTransfer&&(e.dataTransfer.dropEffect=`move`),e.cancelable&&e.preventDefault()}function Ys(e,t,n,r,i,a,o,s){var c,l=e[Qo],u=l.options.onMove,d;return window.CustomEvent&&!So&&!Co?c=new CustomEvent(`move`,{bubbles:!0,cancelable:!0}):(c=document.createEvent(`Event`),c.initEvent(`move`,!0,!0)),c.to=t,c.from=e,c.dragged=n,c.draggedRect=r,c.related=i||t,c.relatedRect=a||W(t),c.willInsertAfter=s,c.originalEvent=o,e.dispatchEvent(c),u&&(d=u.call(l,c,o)),d}function Xs(e){e.draggable=!1}function Zs(){Ns=!1}function Qs(e,t,n){var r=W(Ro(n.el,0,n.options,!0)),i=Zo(n.el,n.options,q),a=10;return t?e.clientX<i.left-a||e.clientY<r.top&&e.clientX<r.right:e.clientY<i.top-a||e.clientY<r.bottom&&e.clientX<r.left}function $s(e,t,n){var r=W(zo(n.el,n.options.draggable)),i=Zo(n.el,n.options,q),a=10;return t?e.clientX>i.right+a||e.clientY>r.bottom&&e.clientX>r.left:e.clientY>i.bottom+a||e.clientX>r.right&&e.clientY>r.top}function ec(e,t,n,r,i,a,o,s){var c=r?e.clientY:e.clientX,l=r?n.height:n.width,u=r?n.top:n.left,d=r?n.bottom:n.right,f=!1;if(!o){if(s&&js<l*i){if(!ks&&(Os===1?c>u+l*a/2:c<d-l*a/2)&&(ks=!0),ks)f=!0;else if(Os===1?c<u+js:c>d-js)return-Os}else if(c>u+l*(1-i)/2&&c<d-l*(1-i)/2)return tc(t)}return f||=o,f&&(c<u+l*a/2||c>d-l*a/2)?c>u+l/2?1:-1:0}function tc(e){return Bo(G)<Bo(e)?1:-1}function nc(e){for(var t=e.tagName+e.className+e.src+e.href+e.textContent,n=t.length,r=0;n--;)r+=t.charCodeAt(n);return r.toString(36)}function rc(e){Ps.length=0;for(var t=e.getElementsByTagName(`input`),n=t.length;n--;){var r=t[n];r.checked&&Ps.push(r)}}function ic(e){return setTimeout(e,0)}function ac(e){return clearTimeout(e)}Fs&&V(document,`touchmove`,function(e){(Q.active||_s)&&e.cancelable&&e.preventDefault()}),Q.utils={on:V,off:H,css:U,find:Fo,is:function(e,t){return!!jo(e,t,e,!1)},extend:Wo,throttle:qo,closest:jo,toggleClass:No,clone:Xo,index:Bo,nextTick:ic,cancelNextTick:ac,detectDirection:Bs,getChild:Ro},Q.get=function(e){return e[Qo]},Q.mount=function(){var e=[...arguments];e[0].constructor===Array&&(e=e[0]),e.forEach(function(e){if(!e.prototype||!e.prototype.constructor)throw`Sortable: Mounted plugin must be a constructor function, not ${{}.toString.call(e)}`;e.utils&&(Q.utils=mo(mo({},Q.utils),e.utils)),is.mount(e)})},Q.create=function(e,t){return new Q(e,t)},Q.version=bo;var $=[],oc,sc,cc=!1,lc,uc,dc,fc;function pc(){function e(){for(var e in this.defaults={scroll:!0,forceAutoScrollFallback:!1,scrollSensitivity:30,scrollSpeed:10,bubbleScroll:!0},this)e.charAt(0)===`_`&&typeof this[e]==`function`&&(this[e]=this[e].bind(this))}return e.prototype={dragStarted:function(e){var t=e.originalEvent;this.sortable.nativeDraggable?V(document,`dragover`,this._handleAutoScroll):this.options.supportPointer?V(document,`pointermove`,this._handleFallbackAutoScroll):t.touches?V(document,`touchmove`,this._handleFallbackAutoScroll):V(document,`mousemove`,this._handleFallbackAutoScroll)},dragOverCompleted:function(e){var t=e.originalEvent;!this.options.dragOverBubble&&!t.rootEl&&this._handleAutoScroll(t)},drop:function(){this.sortable.nativeDraggable?H(document,`dragover`,this._handleAutoScroll):(H(document,`pointermove`,this._handleFallbackAutoScroll),H(document,`touchmove`,this._handleFallbackAutoScroll),H(document,`mousemove`,this._handleFallbackAutoScroll)),hc(),mc(),Jo()},nulling:function(){dc=sc=oc=cc=fc=lc=uc=null,$.length=0},_handleFallbackAutoScroll:function(e){this._handleAutoScroll(e,!0)},_handleAutoScroll:function(e,t){var n=this,r=(e.touches?e.touches[0]:e).clientX,i=(e.touches?e.touches[0]:e).clientY,a=document.elementFromPoint(r,i);if(dc=e,t||this.options.forceAutoScrollFallback||Co||So||To){gc(e,this.options,a,t);var o=Uo(a,!0);cc&&(!fc||r!==lc||i!==uc)&&(fc&&hc(),fc=setInterval(function(){var a=Uo(document.elementFromPoint(r,i),!0);a!==o&&(o=a,mc()),gc(e,n.options,a,t)},10),lc=r,uc=i)}else{if(!this.options.bubbleScroll||Uo(a,!0)===Io()){mc();return}gc(e,this.options,Uo(a,!1),!1)}}},_o(e,{pluginName:`scroll`,initializeByDefault:!0})}function mc(){$.forEach(function(e){clearInterval(e.pid)}),$=[]}function hc(){clearInterval(fc)}var gc=qo(function(e,t,n,r){if(t.scroll){var i=(e.touches?e.touches[0]:e).clientX,a=(e.touches?e.touches[0]:e).clientY,o=t.scrollSensitivity,s=t.scrollSpeed,c=Io(),l=!1,u;sc!==n&&(sc=n,mc(),oc=t.scroll,u=t.scrollFn,oc===!0&&(oc=Uo(n,!0)));var d=0,f=oc;do{var p=f,m=W(p),h=m.top,g=m.bottom,_=m.left,v=m.right,y=m.width,b=m.height,x=void 0,S=void 0,C=p.scrollWidth,w=p.scrollHeight,T=U(p),E=p.scrollLeft,D=p.scrollTop;p===c?(x=y<C&&(T.overflowX===`auto`||T.overflowX===`scroll`||T.overflowX===`visible`),S=b<w&&(T.overflowY===`auto`||T.overflowY===`scroll`||T.overflowY===`visible`)):(x=y<C&&(T.overflowX===`auto`||T.overflowX===`scroll`),S=b<w&&(T.overflowY===`auto`||T.overflowY===`scroll`));var O=x&&(Math.abs(v-i)<=o&&E+y<C)-(Math.abs(_-i)<=o&&!!E),ee=S&&(Math.abs(g-a)<=o&&D+b<w)-(Math.abs(h-a)<=o&&!!D);if(!$[d])for(var k=0;k<=d;k++)$[k]||($[k]={});($[d].vx!=O||$[d].vy!=ee||$[d].el!==p)&&($[d].el=p,$[d].vx=O,$[d].vy=ee,clearInterval($[d].pid),(O!=0||ee!=0)&&(l=!0,$[d].pid=setInterval(function(){r&&this.layer===0&&Q.active._onTouchMove(dc);var t=$[this.layer].vy?$[this.layer].vy*s:0,n=$[this.layer].vx?$[this.layer].vx*s:0;typeof u==`function`&&u.call(Q.dragged.parentNode[Qo],n,t,e,dc,$[this.layer].el)!==`continue`||Yo($[this.layer].el,n,t)}.bind({layer:d}),24))),d++}while(t.bubbleScroll&&f!==c&&(f=Uo(f,!1)));cc=l}},30),_c=function(e){var t=e.originalEvent,n=e.putSortable,r=e.dragEl,i=e.activeSortable,a=e.dispatchSortableEvent,o=e.hideGhostForTarget,s=e.unhideGhostForTarget;if(t){var c=n||i;o();var l=t.changedTouches&&t.changedTouches.length?t.changedTouches[0]:t,u=document.elementFromPoint(l.clientX,l.clientY);s(),c&&!c.el.contains(u)&&(a(`spill`),this.onSpill({dragEl:r,putSortable:n}))}};function vc(){}vc.prototype={startIndex:null,dragStart:function(e){this.startIndex=e.oldDraggableIndex},onSpill:function(e){var t=e.dragEl,n=e.putSortable;this.sortable.captureAnimationState(),n&&n.captureAnimationState();var r=Ro(this.sortable.el,this.startIndex,this.options);r?this.sortable.el.insertBefore(t,r):this.sortable.el.appendChild(t),this.sortable.animateAll(),n&&n.animateAll()},drop:_c},_o(vc,{pluginName:`revertOnSpill`});function yc(){}yc.prototype={onSpill:function(e){var t=e.dragEl,n=e.putSortable||this.sortable;n.captureAnimationState(),t.parentNode&&t.parentNode.removeChild(t),n.animateAll()},drop:_c},_o(yc,{pluginName:`removeOnSpill`}),Q.mount(new pc),Q.mount(yc,vc);function bc(e){return e==null?e:JSON.parse(JSON.stringify(e))}function xc(e){Ee()&&he(e)}function Sc(e){Ee()?be(e):d(e)}var Cc=null,wc=null;function Tc(e=null,t=null){Cc=e,wc=t}function Ec(){return{data:Cc,clonedData:wc}}var Dc=Symbol(`cloneElement`);function Oc(...e){let t=Ee()?.proxy,n=null,r=e[0],[,i,a]=e;Array.isArray(D(i))||(a=i,i=null);let o=null,{immediate:s=!0,clone:c=bc,forceFallback:u,fallbackOnBody:f,customUpdate:p}=D(a)??{};function m(e){let{from:t,oldIndex:r,item:a}=e,o=Array.from(t.childNodes);n=u&&!f?o.slice(0,-1):o;let s=D(D(i)?.[r]),l=c(s);Tc(s,l),a[Dc]=l}function h(e){let t=e.item[Dc];if(!to(t)){if(io(e.item),l(i)){let n=[...D(i)];i.value=eo(n,e.newDraggableIndex,t);return}eo(D(i),e.newDraggableIndex,t)}}function g(e){let{from:t,item:n,oldIndex:r,oldDraggableIndex:a,pullMode:o,clone:s}=e;if(ro(t,n,r),o===`clone`){io(s);return}if(l(i)){let e=[...D(i)];i.value=$a(e,a);return}$a(D(i),a)}function _(e){if(p){p(e);return}let{from:t,item:n,oldIndex:r,oldDraggableIndex:a,newDraggableIndex:o}=e;if(io(n),ro(t,n,r),l(i)){let e=[...D(i)];i.value=Xa(e,a,o);return}Xa(D(i),a,o)}function v(e){let{newIndex:t,oldIndex:r,from:i,to:a}=e,o=null,s=t===r&&i===a;try{if(s){let e=null;n?.some((t,r)=>{if(e&&n?.length!==a.childNodes.length)return i.insertBefore(e,t.nextSibling),!0;let o=a.childNodes[r];e=a?.replaceChild(t,o)})}}catch(e){o=e}finally{n=null}d(()=>{if(Tc(),o)throw o})}let y={onUpdate:_,onStart:m,onAdd:h,onRemove:g,onEnd:v};function b(e){let n=D(r);return e||=no(n)?ao(n,t?.$el):n,e&&!co(e)&&(e=e.$el),e||Ya(`Root element not found`),e}function x(){let e=D(a)??{},{immediate:t,clone:n}=e,r=Ka(e,[`immediate`,`clone`]);return lo(r,(e,t)=>{uo(e)&&(r[e]=(e,...n)=>(fo(e,Ec()),t(e,...n)))}),so(i===null?{}:y,r)}let S=e=>{e=b(e),o&&C.destroy(),o=new Q(e,x())};R(()=>a,()=>{o&&lo(x(),(e,t)=>{o?.option(e,t)})},{deep:!0});let C={option:(e,t)=>o?.option(e,t),destroy:()=>{o?.destroy(),o=null},save:()=>o?.save(),toArray:()=>o?.toArray(),closest:(...e)=>o?.closest(...e)};return Sc(()=>{s&&S()}),xc(C.destroy),Ga({start:S,pause:()=>C?.option(`disabled`,!0),resume:()=>C?.option(`disabled`,!1)},C)}var kc=[`update`,`start`,`add`,`remove`,`choose`,`unchoose`,`end`,`sort`,`filter`,`clone`,`move`,`change`],Ac=v({name:`VueDraggable`,model:{prop:`modelValue`,event:`update:modelValue`},props:[`clone`,`animation`,`ghostClass`,`group`,`sort`,`disabled`,`store`,`handle`,`draggable`,`swapThreshold`,`invertSwap`,`invertedSwapThreshold`,`removeCloneOnHide`,`direction`,`chosenClass`,`dragClass`,`ignore`,`filter`,`preventOnFilter`,`easing`,`setData`,`dropBubble`,`dragoverBubble`,`dataIdAttr`,`delay`,`delayOnTouchOnly`,`touchStartThreshold`,`forceFallback`,`fallbackClass`,`fallbackOnBody`,`fallbackTolerance`,`fallbackOffset`,`supportPointer`,`emptyInsertThreshold`,`scroll`,`forceAutoScrollFallback`,`scrollSensitivity`,`scrollSpeed`,`bubbleScroll`,`modelValue`,`tag`,`target`,`customUpdate`,...kc.map(e=>`on${e.replace(/^\S/,e=>e.toUpperCase())}`)],emits:[`update:modelValue`,...kc],setup(e,{slots:t,emit:n,expose:r,attrs:a}){let o=kc.reduce((e,t)=>{let r=`on${t.replace(/^\S/,e=>e.toUpperCase())}`;return e[r]=(...e)=>n(t,...e),e},{}),s=i(()=>{let t=me(e),{modelValue:n}=t,r=Ka(t,[`modelValue`]),i=Object.entries(r).reduce((e,[t,n])=>{let r=D(n);return r!==void 0&&(e[t]=r),e},{});return Ga(Ga({},o),Qa(Ga(Ga({},a),i)))}),c=i({get:()=>e.modelValue,set:e=>n(`update:modelValue`,e)}),l=C(),u=Te(Oc(e.target||l,c,s));return r(u),()=>w(e.tag||`div`,{ref:l},(t?.default)?.call(t,u))}}),jc={mounted:`mounted`,unmounted:`unmounted`};jc.mounted,jc.unmounted;var Mc={class:`config-log-parsers`},Nc={class:`config-card`},Pc={class:`config-card__header`},Fc={class:`config-card__hint`},Ic={class:`config-card`},Lc={class:`config-card__header`},Rc={class:`config-card__header-hint`},zc={class:`config-log-parsers__order`},Bc={class:`config-log-parsers__name`},Vc={key:1,class:`config-log-parsers__empty`},Hc={class:`config-log-parsers__add-row`},Uc={class:`config-log-parsers__footer`},Wc=n(v({__name:`ServiceConfigLogs`,props:{service:{}},emits:[`save`],setup(e,{emit:n}){let r=e,a=n,s=ge(),{t:c}=oe(),l=Je(),d=C([...r.service.parserIds??[]]);R(()=>r.service,e=>{d.value=[...e.parserIds??[]]});let f=i(()=>[...l.parsers].filter(e=>e.enabled).sort((e,t)=>e.name.localeCompare(t.name))),p=i(()=>f.value.filter(e=>!d.value.includes(e.id))),m=C(d.value.map(e=>l.parsers.find(t=>t.id===e)).filter(e=>e!==void 0));R(d,e=>{let t=m.value.filter(t=>e.includes(t.id)),n=e.filter(e=>!t.find(t=>t.id===e)).map(e=>l.parsers.find(t=>t.id===e)).filter(e=>e!==void 0);m.value=[...t,...n]}),R(()=>l.parsers,()=>{m.value=d.value.map(e=>l.parsers.find(t=>t.id===e)).filter(e=>e!==void 0)});let g=C(null);function _(e){if(!e)return;let t=l.parsers.find(t=>t.id===e);t&&(d.value=[...d.value,e],m.value=[...m.value,t],g.value=null,x())}function v(e){d.value=d.value.filter(t=>t!==e),m.value=m.value.filter(t=>t.id!==e),x()}function b(){d.value=m.value.map(e=>e.id),x()}function x(){a(`save`,{parserIds:m.value.map(e=>e.id)})}return be(()=>{l.fetchParsers(),l.subscribeParsers()}),he(()=>{l.unsubscribeParsers()}),(e,n)=>(j(),P(`div`,Mc,[h(`div`,Nc,[h(`div`,Pc,[n[3]||=h(`i`,{class:`pi pi-code`},null,-1),h(`span`,null,F(D(c)(`serviceConfigLogs.jsParsers`)),1)]),h(`small`,Fc,F(D(c)(`serviceConfigLogs.jsParsersHint`)),1)]),h(`div`,Ic,[h(`div`,Lc,[n[4]||=h(`i`,{class:`pi pi-sort-alt`},null,-1),h(`span`,null,F(D(c)(`serviceConfigLogs.executionOrder`)),1),h(`small`,Rc,F(D(c)(`serviceConfigLogs.executionOrderHint`)),1)]),m.value.length>0?(j(),I(D(Ac),{key:0,modelValue:m.value,"onUpdate:modelValue":n[0]||=e=>m.value=e,animation:150,handle:`.drag-handle`,class:`config-log-parsers__drag-list`,"data-testid":`log-parsers-drag-list`,onEnd:b},{default:y(()=>[(j(!0),P(z,null,ve(m.value,(e,r)=>(j(),P(`div`,{key:e.id,class:`config-log-parsers__drag-row`,"data-testid":`log-parsers-drag-row`},[n[5]||=h(`span`,{class:`drag-handle`,"data-testid":`drag-handle`},[h(`i`,{class:`pi pi-bars`})],-1),h(`span`,zc,F(r+1),1),h(`span`,Bc,F(e.name),1),e.builtin?(j(),I(D(se),{key:0,severity:`secondary`,class:`config-log-parsers__builtin-badge`},{default:y(()=>[o(F(D(c)(`serviceConfigLogs.builtin`)),1)]),_:1})):t(``,!0),e.enabled?t(``,!0):(j(),I(D(se),{key:1,severity:`warn`,class:`config-log-parsers__disabled-badge`},{default:y(()=>[o(F(D(c)(`serviceConfigLogs.disabled`)),1)]),_:1})),u(D(E),{icon:`pi pi-trash`,severity:`danger`,text:``,size:`small`,class:`config-log-parsers__delete`,onClick:t=>v(e.id)},null,8,[`onClick`])]))),128))]),_:1},8,[`modelValue`])):t(``,!0),m.value.length===0?(j(),P(`div`,Vc,F(D(c)(`serviceConfigLogs.empty`)),1)):t(``,!0),h(`div`,Hc,[u(D(te),{modelValue:g.value,"onUpdate:modelValue":[n[1]||=e=>g.value=e,_],options:p.value,"option-label":`name`,"option-value":`id`,placeholder:D(c)(`serviceConfigLogs.addParser`),class:`config-log-parsers__add-select`,loading:D(l).loading,disabled:p.value.length===0},{option:y(({option:e})=>[h(`span`,null,F(e.name),1),e.builtin?(j(),I(D(se),{key:0,severity:`secondary`,class:`ml-2`,style:{"font-size":`0.65rem`,padding:`0.1rem 0.35rem`}},{default:y(()=>[o(F(D(c)(`serviceConfigLogs.builtin`)),1)]),_:1})):t(``,!0)]),_:1},8,[`modelValue`,`options`,`placeholder`,`loading`,`disabled`])])]),h(`div`,Uc,[u(D(E),{label:D(c)(`serviceConfigLogs.manageParsers`),icon:`pi pi-cog`,severity:`secondary`,outlined:``,size:`small`,onClick:n[2]||=e=>D(s).push({name:`settings`,query:{section:`parsers`}})},null,8,[`label`])])]))}}),[[`__scopeId`,`data-v-73b711b6`]]),Gc={class:`config-log-sources`},Kc={class:`config-card`},qc={class:`config-card__header`},Jc={class:`config-card__hint`},Yc={key:0,class:`config-card config-card--list`},Xc={class:`source-row__info`},Zc={class:`source-row__type`},Qc={class:`source-row__label`},$c={class:`source-row__actions`},el={key:1,class:`config-log-sources__empty`},tl={class:`config-log-sources__footer`},nl={class:`dialog-form`},rl={class:`dialog-form__field`},il={for:`lsrc-type`,class:`dialog-form__label`},al={class:`dialog-form__field`},ol={for:`lsrc-path-file`,class:`dialog-form__label`},sl={class:`dialog-form__field`},cl={for:`lsrc-encoding-file`,class:`dialog-form__label`},ll={class:`dialog-form__field dialog-form__field--row`},ul={for:`lsrc-startFromEnd-file`,class:`dialog-form__label`},dl={class:`dialog-form__field dialog-form__field--row`},fl={for:`lsrc-createIfNotExists-file`,class:`dialog-form__label`},pl={class:`dialog-form__field`},ml={for:`lsrc-connectionString-mongo`,class:`dialog-form__label`},hl={class:`dialog-form__row`},gl={class:`dialog-form__field`},_l={class:`dialog-form__field`},vl={class:`dialog-form__row`},yl={class:`dialog-form__field`},bl={class:`dialog-form__field`},xl={class:`dialog-form__field`},Sl={class:`dialog-form__row`},Cl={class:`dialog-form__field dialog-form__field--grow`},wl={class:`dialog-form__field dialog-form__field--port`},Tl={class:`dialog-form__row`},El={class:`dialog-form__field`},Dl={class:`dialog-form__field`},Ol={class:`dialog-form__row`},kl={class:`dialog-form__field`},Al={class:`dialog-form__field`},jl={class:`dialog-form__row`},Ml={class:`dialog-form__field`},Nl={class:`dialog-form__field`},Pl={class:`dialog-form__row`},Fl={class:`dialog-form__field`},Il={class:`dialog-form__field`},Ll={class:`dialog-form__field`},Rl={key:3,class:`dialog-form__hint-block`},zl=n(v({__name:`ServiceConfigLogSources`,props:{service:{}},emits:[`save`],setup(e,{emit:n}){let{t:r}=oe(),i=e,s=n,l=[{label:`Console (stdout/stderr)`,value:`console`,icon:`pi-terminal`},{label:`File`,value:`file`,icon:`pi-file`},{label:`MongoDB`,value:`mongo`,icon:`pi-database`},{label:`MySQL`,value:`mysql`,icon:`pi-database`}];function d(e){return e===`console`?{type:`console`}:e===`file`?{type:`file`,path:``,encoding:`utf-8`,startFromEnd:!0,createIfNotExists:!1}:e===`mongo`?{type:`mongo`,connectionString:``,database:``,collection:``,timestampField:`timestamp`,messageField:`message`}:{type:`mysql`,host:`localhost`,port:3306,user:``,password:``,database:``,table:``,timestampColumn:`created_at`,messageColumn:`message`,pollIntervalMs:2e3}}let f=C([...i.service.logSources??[]]);R(()=>i.service.logSources,e=>{f.value=[...e??[]]});let p=C(!1),m=C(null),g=C(d(`console`));function _(){m.value=null,g.value=d(`file`),p.value=!0}function v(e){m.value=e,g.value={...f.value[e]},p.value=!0}function b(e){g.value=d(e)}function x(){m.value===null?f.value=[...f.value,{...g.value}]:f.value=f.value.map((e,t)=>t===m.value?{...g.value}:e),p.value=!1,s(`save`,{logSources:f.value})}function S(e){f.value=f.value.filter((t,n)=>n!==e),s(`save`,{logSources:f.value})}function w(e){return e.type===`console`?`Console`:e.type===`file`?e.path||`(no path)`:e.type===`mongo`?e.database?`mongo/${e.database}/${e.collection}`:`(not configured)`:e.type===`mysql`?e.database?`mysql/${e.host}/${e.database}/${e.table}`:`(not configured)`:e.type}function T(e){return e===`console`?`pi-terminal`:e===`file`?`pi-file`:`pi-database`}return(e,n)=>(j(),P(`div`,Gc,[h(`div`,Kc,[h(`div`,qc,[n[23]||=h(`i`,{class:`pi pi-inbox`},null,-1),h(`span`,null,F(D(r)(`serviceConfigLogSources.title`)),1)]),h(`small`,Jc,F(D(r)(`serviceConfigLogSources.hint`)),1)]),f.value.length>0?(j(),P(`div`,Yc,[(j(!0),P(z,null,ve(f.value,(e,t)=>(j(),P(`div`,{key:t,class:`source-row`},[h(`i`,{class:a(`pi ${T(e.type)} source-row__icon`)},null,2),h(`div`,Xc,[h(`span`,Zc,F(e.type),1),h(`span`,Qc,F(w(e)),1)]),h(`div`,$c,[u(D(E),{icon:`pi pi-pencil`,text:``,size:`small`,severity:`secondary`,onClick:e=>v(t)},null,8,[`onClick`]),u(D(E),{icon:`pi pi-trash`,text:``,size:`small`,severity:`danger`,onClick:e=>S(t)},null,8,[`onClick`])])]))),128))])):(j(),P(`div`,el,[n[24]||=h(`i`,{class:`pi pi-inbox config-log-sources__empty-icon`},null,-1),h(`p`,null,F(D(r)(`serviceConfigLogSources.empty`)),1),h(`small`,null,F(D(r)(`serviceConfigLogSources.emptyHint`)),1)])),h(`div`,tl,[u(D(E),{label:D(r)(`serviceConfigLogSources.addSource`),icon:`pi pi-plus`,size:`small`,onClick:_},null,8,[`label`])]),u(D(c),{visible:p.value,"onUpdate:visible":n[22]||=e=>p.value=e,header:m.value===null?D(r)(`serviceConfigLogSources.addDialog`):D(r)(`serviceConfigLogSources.editDialog`),modal:``,style:{width:`520px`}},{footer:y(()=>[u(D(E),{label:D(r)(`serviceConfigLogSources.cancel`),severity:`secondary`,outlined:``,onClick:n[21]||=e=>p.value=!1},null,8,[`label`]),u(D(E),{label:m.value===null?D(r)(`serviceConfigLogSources.add`):D(r)(`serviceConfigLogSources.save`),icon:`pi pi-check`,onClick:x},null,8,[`label`])]),default:y(()=>[h(`div`,nl,[h(`div`,rl,[h(`label`,il,F(D(r)(`serviceConfigLogSources.type`)),1),u(D(te),{"input-id":`lsrc-type`,"model-value":g.value.type,options:l,"option-label":`label`,"option-value":`value`,class:`dialog-form__input`,"onUpdate:modelValue":b},null,8,[`model-value`])]),g.value.type===`file`?(j(),P(z,{key:0},[h(`div`,al,[h(`label`,ol,[o(F(D(r)(`serviceConfigLogSources.path`))+` `,1),n[25]||=h(`span`,{class:`dialog-form__required`},`*`,-1)]),u(D(N),{id:`lsrc-path-file`,modelValue:g.value.path,"onUpdate:modelValue":n[0]||=e=>g.value.path=e,class:`dialog-form__input`,placeholder:`/var/log/app.log`},null,8,[`modelValue`])]),h(`div`,sl,[h(`label`,cl,F(D(r)(`serviceConfigLogSources.encoding`)),1),u(D(N),{id:`lsrc-encoding-file`,modelValue:g.value.encoding,"onUpdate:modelValue":n[1]||=e=>g.value.encoding=e,class:`dialog-form__input`,placeholder:`utf-8`},null,8,[`modelValue`])]),h(`div`,ll,[h(`label`,ul,F(D(r)(`serviceConfigLogSources.startFromEnd`)),1),u(D(Ne),{"input-id":`lsrc-startFromEnd-file`,modelValue:g.value.startFromEnd,"onUpdate:modelValue":n[2]||=e=>g.value.startFromEnd=e},null,8,[`modelValue`])]),h(`div`,dl,[h(`label`,fl,F(D(r)(`serviceConfigLogSources.createIfNotExists`)),1),u(D(Ne),{"input-id":`lsrc-createIfNotExists-file`,modelValue:g.value.createIfNotExists,"onUpdate:modelValue":n[3]||=e=>g.value.createIfNotExists=e},null,8,[`modelValue`])])],64)):g.value.type===`mongo`?(j(),P(z,{key:1},[h(`div`,pl,[h(`label`,ml,[o(F(D(r)(`serviceConfigLogSources.connectionString`))+` `,1),n[26]||=h(`span`,{class:`dialog-form__required`},`*`,-1)]),u(D(N),{id:`lsrc-connectionString-mongo`,modelValue:g.value.connectionString,"onUpdate:modelValue":n[4]||=e=>g.value.connectionString=e,class:`dialog-form__input`,placeholder:`mongodb://user:pass@host:27017`,type:`password`,autocomplete:`off`},null,8,[`modelValue`])]),h(`div`,hl,[h(`div`,gl,[n[27]||=h(`label`,{for:`lsrc-database-mongo`,class:`dialog-form__label`},[o(`Database `),h(`span`,{class:`dialog-form__required`},`*`)],-1),u(D(N),{id:`lsrc-database-mongo`,modelValue:g.value.database,"onUpdate:modelValue":n[5]||=e=>g.value.database=e,class:`dialog-form__input`,placeholder:`mydb`},null,8,[`modelValue`])]),h(`div`,_l,[n[28]||=h(`label`,{for:`lsrc-collection-mongo`,class:`dialog-form__label`},[o(`Collection `),h(`span`,{class:`dialog-form__required`},`*`)],-1),u(D(N),{id:`lsrc-collection-mongo`,modelValue:g.value.collection,"onUpdate:modelValue":n[6]||=e=>g.value.collection=e,class:`dialog-form__input`,placeholder:`logs`},null,8,[`modelValue`])])]),h(`div`,vl,[h(`div`,yl,[n[29]||=h(`label`,{for:`lsrc-timestampField-mongo`,class:`dialog-form__label`},`Timestamp field`,-1),u(D(N),{id:`lsrc-timestampField-mongo`,modelValue:g.value.timestampField,"onUpdate:modelValue":n[7]||=e=>g.value.timestampField=e,class:`dialog-form__input`,placeholder:`timestamp`},null,8,[`modelValue`])]),h(`div`,bl,[n[30]||=h(`label`,{for:`lsrc-messageField-mongo`,class:`dialog-form__label`},`Message field`,-1),u(D(N),{id:`lsrc-messageField-mongo`,modelValue:g.value.messageField,"onUpdate:modelValue":n[8]||=e=>g.value.messageField=e,class:`dialog-form__input`,placeholder:`message`},null,8,[`modelValue`])])]),h(`div`,xl,[n[31]||=h(`label`,{for:`lsrc-levelField-mongo`,class:`dialog-form__label`},[o(`Level field `),h(`span`,{class:`dialog-form__hint`},`(optional)`)],-1),u(D(N),{id:`lsrc-levelField-mongo`,modelValue:g.value.levelField,"onUpdate:modelValue":n[9]||=e=>g.value.levelField=e,class:`dialog-form__input`,placeholder:`level`},null,8,[`modelValue`])])],64)):g.value.type===`mysql`?(j(),P(z,{key:2},[h(`div`,Sl,[h(`div`,Cl,[n[32]||=h(`label`,{for:`lsrc-host-mysql`,class:`dialog-form__label`},[o(`Host `),h(`span`,{class:`dialog-form__required`},`*`)],-1),u(D(N),{id:`lsrc-host-mysql`,modelValue:g.value.host,"onUpdate:modelValue":n[10]||=e=>g.value.host=e,class:`dialog-form__input`,placeholder:`localhost`},null,8,[`modelValue`])]),h(`div`,wl,[n[33]||=h(`label`,{for:`lsrc-port-mysql`,class:`dialog-form__label`},`Port`,-1),u(D(je),{"input-id":`lsrc-port-mysql`,modelValue:g.value.port,"onUpdate:modelValue":n[11]||=e=>g.value.port=e,min:1,max:65535,class:`dialog-form__input`},null,8,[`modelValue`])])]),h(`div`,Tl,[h(`div`,El,[n[34]||=h(`label`,{for:`lsrc-user-mysql`,class:`dialog-form__label`},[o(`User `),h(`span`,{class:`dialog-form__required`},`*`)],-1),u(D(N),{id:`lsrc-user-mysql`,modelValue:g.value.user,"onUpdate:modelValue":n[12]||=e=>g.value.user=e,class:`dialog-form__input`,placeholder:`root`},null,8,[`modelValue`])]),h(`div`,Dl,[n[35]||=h(`label`,{for:`lsrc-password-mysql`,class:`dialog-form__label`},`Password`,-1),u(D(N),{id:`lsrc-password-mysql`,modelValue:g.value.password,"onUpdate:modelValue":n[13]||=e=>g.value.password=e,class:`dialog-form__input`,type:`password`,autocomplete:`new-password`},null,8,[`modelValue`])])]),h(`div`,Ol,[h(`div`,kl,[n[36]||=h(`label`,{for:`lsrc-database-mysql`,class:`dialog-form__label`},[o(`Database `),h(`span`,{class:`dialog-form__required`},`*`)],-1),u(D(N),{id:`lsrc-database-mysql`,modelValue:g.value.database,"onUpdate:modelValue":n[14]||=e=>g.value.database=e,class:`dialog-form__input`,placeholder:`app_db`},null,8,[`modelValue`])]),h(`div`,Al,[n[37]||=h(`label`,{for:`lsrc-table-mysql`,class:`dialog-form__label`},[o(`Table `),h(`span`,{class:`dialog-form__required`},`*`)],-1),u(D(N),{id:`lsrc-table-mysql`,modelValue:g.value.table,"onUpdate:modelValue":n[15]||=e=>g.value.table=e,class:`dialog-form__input`,placeholder:`logs`},null,8,[`modelValue`])])]),h(`div`,jl,[h(`div`,Ml,[n[38]||=h(`label`,{for:`lsrc-timestampColumn-mysql`,class:`dialog-form__label`},`Timestamp column`,-1),u(D(N),{id:`lsrc-timestampColumn-mysql`,modelValue:g.value.timestampColumn,"onUpdate:modelValue":n[16]||=e=>g.value.timestampColumn=e,class:`dialog-form__input`,placeholder:`created_at`},null,8,[`modelValue`])]),h(`div`,Nl,[n[39]||=h(`label`,{for:`lsrc-messageColumn-mysql`,class:`dialog-form__label`},`Message column`,-1),u(D(N),{id:`lsrc-messageColumn-mysql`,modelValue:g.value.messageColumn,"onUpdate:modelValue":n[17]||=e=>g.value.messageColumn=e,class:`dialog-form__input`,placeholder:`message`},null,8,[`modelValue`])])]),h(`div`,Pl,[h(`div`,Fl,[n[40]||=h(`label`,{for:`lsrc-levelColumn-mysql`,class:`dialog-form__label`},[o(`Level column `),h(`span`,{class:`dialog-form__hint`},`(optional)`)],-1),u(D(N),{id:`lsrc-levelColumn-mysql`,modelValue:g.value.levelColumn,"onUpdate:modelValue":n[18]||=e=>g.value.levelColumn=e,class:`dialog-form__input`,placeholder:`level`},null,8,[`modelValue`])]),h(`div`,Il,[n[41]||=h(`label`,{for:`lsrc-pollIntervalMs-mysql`,class:`dialog-form__label`},`Poll interval (ms)`,-1),u(D(je),{"input-id":`lsrc-pollIntervalMs-mysql`,modelValue:g.value.pollIntervalMs,"onUpdate:modelValue":n[19]||=e=>g.value.pollIntervalMs=e,min:500,max:6e4,class:`dialog-form__input`},null,8,[`modelValue`])])]),h(`div`,Ll,[n[42]||=h(`label`,{for:`lsrc-query-mysql`,class:`dialog-form__label`},[o(`Custom query `),h(`span`,{class:`dialog-form__hint`},[o(`(optional, must include `),h(`code`,null,`WHERE … > ?`),o(`)`)])],-1),u(D(N),{id:`lsrc-query-mysql`,modelValue:g.value.query,"onUpdate:modelValue":n[20]||=e=>g.value.query=e,class:`dialog-form__input`,placeholder:`SELECT * FROM logs WHERE created_at > ? ORDER BY id ASC`},null,8,[`modelValue`])])],64)):g.value.type===`console`?(j(),P(`small`,Rl,`The console source captures stdout/stderr and is always active. Adding it here has no effect unless you want to track it explicitly.`)):t(``,!0)])]),_:1},8,[`visible`,`header`])]))}}),[[`__scopeId`,`data-v-1ceb461a`]]),Bl={class:`config-traefik`},Vl={class:`traefik-entry__fields`},Hl=n(v({__name:`ServiceConfigTraefik`,props:{service:{}},emits:[`save`],setup(e,{emit:n}){let r=e,i=n,a=C([...r.service.localUrls??[]]),s=C(null);be(async()=>{r.service.agentId&&(s.value=(await ue.settings.getAgentTraefikConfig.query({agentId:r.service.agentId})).enabled)});let c=null;R(()=>r.service,e=>{c||(a.value=[...e.localUrls??[]])});function l(){a.value=[...a.value,{url:``,port:3e3}]}function d(e){a.value=a.value.filter((t,n)=>n!==e),p()}function f(e,t,n){a.value=a.value.map((r,i)=>i===e?{...r,[t]:n}:r)}function p(){c&&clearTimeout(c),c=setTimeout(()=>{i(`save`,{localUrls:a.value.filter(e=>e.url.trim())}),c=null},150)}return(e,n)=>(j(),P(`div`,Bl,[s.value===!1?(j(),I(D(S),{key:0,severity:`warn`,closable:!1},{default:y(()=>[n[1]||=o(` Traefik n'est pas activé. Configurez-le dans `,-1),u(D(M),{to:{name:`settings`,query:{section:`agents`}}},{default:y(()=>[...n[0]||=[o(`Paramètres → Agents`,-1)]]),_:1}),n[2]||=o(` (bouton Traefik sur la ligne de l'agent) pour que ces URLs soient actives. `,-1)]),_:1})):t(``,!0),(j(!0),P(z,null,ve(a.value,(e,t)=>(j(),P(`div`,{key:t,class:`traefik-entry`},[h(`div`,Vl,[u(D(N),{"model-value":e.url,class:`traefik-entry__url`,placeholder:`mon-app.local.mondomaine.com`,"onUpdate:modelValue":e=>f(t,`url`,e),onBlur:p,onKeydown:B(b(p,[`prevent`]),[`enter`])},null,8,[`model-value`,`onUpdate:modelValue`,`onKeydown`]),u(D(je),{"model-value":e.port,class:`traefik-entry__port`,min:1,max:65535,"use-grouping":!1,placeholder:`3000`,"onUpdate:modelValue":e=>{f(t,`port`,e??3e3),p()}},null,8,[`model-value`,`onUpdate:modelValue`]),u(D(E),{icon:`pi pi-trash`,severity:`danger`,text:``,size:`small`,onClick:e=>d(t)},null,8,[`onClick`])])]))),128)),u(D(E),{icon:`pi pi-plus`,label:`Ajouter une URL`,size:`small`,outlined:``,onClick:l})]))}}),[[`__scopeId`,`data-v-a71f945b`]]),Ul={class:`config-view`,"data-testid":`config-view`},Wl={class:`config-view__header`},Gl={class:`config-view__title`},Kl={class:`config-view__actions`},ql=n(v({__name:`ServiceConfigView`,props:{service:{},projectId:{}},emits:[`remove-service`],setup(t,{emit:n}){let r=t,a=n,{t:o}=oe(),s=ae(),c=f(),l=e(),{isDebug:d}=ln(),p=de(),m=ge(),g=[`general`,`commands`,`shortcuts`,`env`,`health`,`log-parsers`,`log-sources`,`traefik`],_=i(()=>{let e=p.query.configTab;return g.includes(e)?e:`general`});function v(e){m.replace({query:{...p.query,configTab:e}})}let b=i(()=>c.getByRef({id:r.projectId,orgId:l.activeOrgId})?.activeEnvironmentId);async function x(e,t){await t()?d.value&&console.debug(`[autosave] ${e} saved`):console.error(`[autosave] ${e} failed:`,s.error??`Save failed`)}async function S(e){await x(`General`,()=>s.update(r.service.id,e))}async function C(e){await x(`Commands`,()=>s.update(r.service.id,e))}async function w(e){await x(`Health check`,()=>s.update(r.service.id,{healthCheck:e??null}))}async function T(e){await x(`Shortcuts`,()=>s.update(r.service.id,{shortcuts:e}))}async function O(e){await x(`Docker`,()=>s.update(r.service.id,{dockerConfig:e}))}async function ee(e){await x(`Log parsers`,()=>s.update(r.service.id,e))}async function k(e){await x(`Log sources`,()=>s.update(r.service.id,e))}async function A(e){await x(`Traefik`,()=>s.update(r.service.id,e))}function te(){a(`remove-service`,r.service.id)}return(e,n)=>(j(),P(`div`,Ul,[h(`div`,Wl,[h(`h2`,Gl,F(D(o)(`serviceConfigView.title`)),1),h(`div`,Kl,[u(D(E),{label:D(o)(`serviceConfigView.remove`),icon:`pi pi-trash`,severity:`danger`,size:`small`,outlined:``,onClick:te},null,8,[`label`])])]),u(D(Ie),{value:_.value,class:`config-view__tabs`,"onUpdate:value":v},{default:y(()=>[u(D(Pe),null,{default:y(()=>[u(D(Le),{value:`general`,"data-testid":`tab-config`},{default:y(()=>[n[0]||=h(`i`,{class:`pi pi-cog tab-icon`},null,-1),h(`span`,null,F(D(o)(`serviceConfigView.tabGeneral`)),1)]),_:1}),u(D(Le),{value:`commands`,"data-testid":`tab-commands`},{default:y(()=>[n[1]||=h(`i`,{class:`pi pi-code tab-icon`},null,-1),h(`span`,null,F(D(o)(`serviceConfigView.tabCommands`)),1)]),_:1}),u(D(Le),{value:`shortcuts`,"data-testid":`tab-shortcuts`},{default:y(()=>[n[2]||=h(`i`,{class:`pi pi-bolt tab-icon`},null,-1),h(`span`,null,F(D(o)(`serviceConfigView.tabShortcuts`)),1)]),_:1}),u(D(Le),{value:`env`,"data-testid":`tab-env`},{default:y(()=>[n[3]||=h(`i`,{class:`pi pi-database tab-icon`},null,-1),h(`span`,null,F(D(o)(`serviceConfigView.tabEnvironment`)),1)]),_:1}),u(D(Le),{value:`health`},{default:y(()=>[n[4]||=h(`i`,{class:`pi pi-heart tab-icon`},null,-1),h(`span`,null,F(D(o)(`serviceConfigView.tabHealthCheck`)),1)]),_:1}),u(D(Le),{value:`log-parsers`,"data-testid":`tab-log-parsers`},{default:y(()=>[n[5]||=h(`i`,{class:`pi pi-list tab-icon`},null,-1),h(`span`,null,F(D(o)(`serviceConfigView.tabLogParsers`)),1)]),_:1}),u(D(Le),{value:`log-sources`},{default:y(()=>[n[6]||=h(`i`,{class:`pi pi-inbox tab-icon`},null,-1),h(`span`,null,F(D(o)(`serviceConfigView.tabLogSources`)),1)]),_:1}),u(D(Le),{value:`traefik`},{default:y(()=>[...n[7]||=[h(`i`,{class:`pi pi-server tab-icon`},null,-1),h(`span`,null,`Traefik`,-1)]]),_:1})]),_:1}),u(D(Fe),null,{default:y(()=>[u(D(Re),{value:`general`},{default:y(()=>[u(Gn,{service:t.service,onSave:S},null,8,[`service`])]),_:1}),u(D(Re),{value:`commands`},{default:y(()=>[u(vi,{service:t.service,onSave:C,onDockerSave:O},null,8,[`service`])]),_:1}),u(D(Re),{value:`shortcuts`,"data-testid":`tabpanel-shortcuts`},{default:y(()=>[u(za,{service:t.service,onSave:T},null,8,[`service`])]),_:1}),u(D(Re),{value:`env`},{default:y(()=>[u(ia,{service:t.service,"project-id":t.projectId,"active-environment-id":b.value},null,8,[`service`,`project-id`,`active-environment-id`])]),_:1}),u(D(Re),{value:`health`},{default:y(()=>[u(Da,{service:t.service,onSave:w},null,8,[`service`])]),_:1}),u(D(Re),{value:`log-parsers`,"data-testid":`tabpanel-log-parsers`},{default:y(()=>[u(Wc,{service:t.service,onSave:ee},null,8,[`service`])]),_:1}),u(D(Re),{value:`log-sources`},{default:y(()=>[u(zl,{service:t.service,onSave:k},null,8,[`service`])]),_:1}),u(D(Re),{value:`traefik`},{default:y(()=>[u(Hl,{service:t.service,onSave:A},null,8,[`service`])]),_:1})]),_:1})]),_:1},8,[`value`])]))}}),[[`__scopeId`,`data-v-af965568`]]),Jl={key:0,class:`service-detail`},Yl={key:1,class:`service-detail__not-found`},Xl={key:2,class:`service-detail__not-found`},Zl=n(v({__name:`ServiceDetailPage`,setup(e){let n=de(),r=ge(),a=ne(),o=ye(),{t:c}=oe(),l=ae(),u=ie(),d=f(),{setServiceContext:p}=k(),m=i(()=>n.params.id);R(m,e=>p(e),{immediate:!0}),he(()=>p(null));let g=i(()=>{let e=n.params.tab;return e===`terminal`||e===`metrics`||e===`config`||e===`git`||e===`wiki`?e:`terminal`}),_=C(null),v=C(!1),y=i(()=>l.getById(m.value)||(_.value?.id===m.value?_.value:null));R(m,async e=>{if(_.value=null,!(!e||l.getById(e))){v.value=!0;try{_.value=await l.fetchOne(e)}finally{v.value=!1}}},{immediate:!0});let b=i(()=>u.getByService(m.value)),x=i(()=>d.currentProject?.id??``);function S(e){let t=l.getById(e);o.require({message:c(`serviceDetail.deleteConfirmMessage`,{name:t?.name??e}),header:c(`serviceDetail.deleteConfirmHeader`),icon:`pi pi-exclamation-triangle`,rejectLabel:c(`actions.cancel`),acceptLabel:c(`actions.delete`),acceptProps:{severity:`danger`},accept:async()=>{await l.remove(e)&&(a.add({severity:`success`,summary:c(`serviceDetail.removed`),detail:c(`serviceDetail.deleted`),life:3e3}),r.push(`/`))}})}return(e,n)=>y.value?(j(),P(`div`,Jl,[g.value===`terminal`?(j(),I(Gt,{key:`terminal-`+m.value,service:y.value,processes:b.value},null,8,[`service`,`processes`])):g.value===`metrics`?(j(),I(nn,{key:`metrics-`+m.value,service:y.value,processes:b.value},null,8,[`service`,`processes`])):g.value===`config`?(j(),I(ql,{key:`config-`+m.value,service:y.value,"project-id":x.value,onRemoveService:S},null,8,[`service`,`project-id`])):g.value===`git`?(j(),I(s,{key:`git-`+m.value,"service-id":m.value},null,8,[`service-id`])):g.value===`wiki`?(j(),I(Ye,{key:`wiki-`+m.value,scope:`service:${m.value}`},null,8,[`scope`])):t(``,!0)])):v.value?(j(),P(`div`,Yl)):(j(),P(`div`,Xl,[h(`p`,null,F(D(c)(`serviceDetail.notFound`)),1)]))}}),[[`__scopeId`,`data-v-e5220f62`]]);export{Zl as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{$t as e,Ai as t,Bn as n,Di as r,Ii as i,Jt as ee,Oi as a,Ri as o,Sa as s,Si as c,Va as l,Wn as u,Xa as d,Xt as f,aa as p,cn as m,cr as te,ct as ne,d as re,dt as ie,fr as ae,gn as h,ji as g,ka as _,kn as v,nr as oe,rr as se,sa as ce,ta as le,wi as y,wn as ue,xi as b,za as de}from"./index-8J1A633V.js";import{n as x}from"./plus-DvHGmumH.js";import{t as fe}from"./fieldset-xjeWC_Zd.js";import{t as pe}from"./toggleswitch-Qo70K7EJ.js";import{t as me}from"./autocomplete-CeUb1Plo.js";import{t as S}from"./divider-Diym1gIH.js";var he={class:`service-form-page`},ge={class:`page-header`},_e={key:0,class:`restart-banner`},ve={key:1,class:`loading-container`},ye={class:`form-section`},C={class:`form-group`},w={for:`svc-project`},T={class:`form-hint`},E={class:`form-group`},D={for:`svc-agent`},O={class:`form-hint`},k={class:`form-group`},A={for:`svc-name`},j={class:`form-hint`},M={class:`form-actions`},N={class:`form-section`},P={class:`form-row`},be={class:`form-group flex-1`},xe={for:`svc-name-edit`},Se={class:`form-group`,style:{width:`160px`}},Ce={for:`svc-runner`},we={class:`form-group`},Te={for:`svc-agent-edit`},Ee={class:`form-hint`},De={class:`form-row`},Oe={class:`form-group flex-1`},ke={for:`svc-cwd`},Ae={class:`form-group`,style:{"min-width":`200px`}},je={for:`svc-ports`},Me={class:`form-group switch-group`},Ne={for:`svc-autorestart`},Pe={class:`form-section`},Fe={class:`section-header`},Ie={key:0,class:`empty-env`},Le={class:`form-group`},Re={for:`hc-path`},ze={class:`form-row`},Be={class:`form-group flex-1`},Ve={for:`hc-interval`},He={class:`form-group flex-1`},Ue={for:`hc-timeout`},We={class:`form-group flex-1`},Ge={for:`hc-retries`},F=`__inherit__`,I=n(o({__name:`ServiceFormPage`,props:{id:{}},setup(n){let o=n,I=se(),Ke=oe(),L=te(),R=ee(),z=ie(),B=ne(),V=e(),qe=re(),{t:H}=ae(),U=r(()=>!!o.id),W=r(()=>Ke.query.projectId),G=l(!1),K=l(!1),q=l(null),J=l(null),Y=l(!1),X=de({projectId:``,agentId:F,name:``,cwd:``,ports:[],runner:`native`,autoRestart:!1,healthCheck:{enabled:!1,path:``,interval:3e4,timeout:5e3,retries:3}}),Z=l([]),Je=[{label:`Native`,value:`native`},{label:`Docker`,value:`docker`}],Ye=r(()=>R.projects.map(e=>({label:e.name,value:e.id}))),Q=r(()=>[{label:H(`serviceForm.agentInherit`),value:F},...B.agents.map(e=>({label:`${e.config.name} ${e.status.connected?`(Online)`:`(Offline)`}`,value:e.config.id}))]);function Xe(){Z.value=[...Z.value,{key:``,value:``,isSecret:!1}]}function Ze(e){Z.value=Z.value.filter((t,n)=>n!==e)}function Qe(){let e={},t=!1;for(let n of Z.value){let r=n.key.trim();r&&(e[r]={value:{value:n.value,pre:``,post:``,isSecret:n.isSecret}},t=!0)}return t?e:void 0}async function $e(){if(o.id){G.value=!0;try{let e=await v.service.get.query({id:o.id});X.agentId=e.agentId??F,X.name=e.name,X.cwd=e.cwd??``,X.ports=(e.ports??[]).map(String),X.runner=e.runner,X.autoRestart=e.autoRestart,e.healthCheck&&(X.healthCheck.enabled=!0,X.healthCheck.path=e.healthCheck.path,X.healthCheck.interval=e.healthCheck.interval,X.healthCheck.timeout=e.healthCheck.timeout,X.healthCheck.retries=e.healthCheck.retries),e.variables&&typeof e.variables==`object`&&Object.keys(e.variables).length>0&&(Z.value=Object.entries(e.variables).map(([e,t])=>{let n=t;return{key:e,value:n.value.value??``,isSecret:n.value.isSecret??!1}}))}catch(e){L.add({severity:`error`,summary:H(`serviceForm.error`),detail:f(e)??H(`serviceForm.failedToLoad`),life:5e3}),I.back()}finally{G.value=!1}}}async function $(){if(!(!U.value||!o.id||K.value||G.value)){if(!X.name.trim()){L.add({severity:`warn`,summary:H(`serviceForm.validation`),detail:H(`serviceForm.nameRequired`),life:3e3});return}K.value=!0;try{let e={agentId:X.agentId===F?null:X.agentId||null,name:X.name.trim(),cwd:X.cwd.trim()||void 0,ports:X.ports.map(Number).filter(e=>e>0&&e<=65535),runner:X.runner,autoRestart:X.autoRestart,variables:Qe(),healthCheck:X.healthCheck.enabled?{path:X.healthCheck.path,interval:X.healthCheck.interval,timeout:X.healthCheck.timeout,retries:X.healthCheck.retries}:void 0};(await v.service.update.mutate({id:o.id,...e}))?.stoppedForAgentChange?(q.value=e.agentId,J.value=o.id,L.add({severity:`warn`,summary:H(`serviceForm.saved`),detail:H(`serviceForm.agentChangedServiceStopped`),life:4e3})):L.add({severity:`success`,summary:H(`serviceForm.saved`),life:1500})}catch(e){L.add({severity:`error`,summary:H(`serviceForm.error`),detail:f(e)??H(`serviceForm.failedToSave`),life:5e3})}finally{K.value=!1}}}async function et(){if(!(!q.value||!J.value)){Y.value=!0;try{await qe.start(q.value,J.value),q.value=null,J.value=null,L.add({severity:`success`,summary:H(`serviceForm.restarted`),life:2e3})}catch(e){L.add({severity:`error`,summary:H(`serviceForm.error`),detail:f(e),life:5e3})}finally{Y.value=!1}}}async function tt(){if(!X.name.trim()){L.add({severity:`warn`,summary:H(`serviceForm.validation`),detail:H(`serviceForm.nameRequired`),life:3e3});return}if(!X.projectId){L.add({severity:`warn`,summary:H(`serviceForm.validation`),detail:H(`serviceForm.projectRequired`),life:3e3});return}K.value=!0;try{let e=await z.create({name:X.name.trim(),...X.agentId&&X.agentId!==F?{agentId:X.agentId}:{}});if(!e)throw Error(z.error??`Failed to create service`);let t=R.getByRef({id:X.projectId,orgId:V.activeOrgId})??R.getById(X.projectId);await R.addService(t??{id:X.projectId},e.id),L.add({severity:`success`,summary:H(`serviceForm.serviceCreated`),detail:H(`serviceForm.configureAfterCreate`),life:3e3}),I.push({name:`service-detail`,params:{id:e.id,tab:`config`}})}catch(e){L.add({severity:`error`,summary:H(`serviceForm.error`),detail:f(e)??H(`serviceForm.failedToSave`),life:5e3})}finally{K.value=!1}}return le(async()=>{await Promise.all([R.fetchAll(),B.fetchAll()]),W.value?X.projectId=W.value:!X.projectId&&V.activeProjectId&&(X.projectId=V.activeProjectId),U.value&&await $e()}),(e,n)=>(p(),g(`div`,he,[a(`div`,ge,[i(d(u),{icon:`pi pi-arrow-left`,severity:`secondary`,text:``,rounded:``,onClick:n[0]||=e=>d(I).back()}),a(`h1`,null,_(U.value?d(H)(`serviceForm.editTitle`):d(H)(`serviceForm.createTitle`)),1)]),J.value?(p(),g(`div`,_e,[a(`span`,null,_(d(H)(`serviceForm.agentChangedServiceStopped`)),1),i(d(u),{label:d(H)(`serviceForm.restartNow`),icon:`pi pi-play`,severity:`warning`,size:`small`,loading:Y.value,onClick:et},null,8,[`label`,`loading`]),i(d(u),{icon:`pi pi-times`,severity:`secondary`,text:``,rounded:``,size:`small`,onClick:n[1]||=e=>{J.value=null,q.value=null}})])):t(``,!0),G.value?(p(),g(`div`,ve,[i(d(ue))])):(p(),g(`form`,{key:2,class:`service-form`,onSubmit:c(tt,[`prevent`])},[U.value?(p(),g(y,{key:1},[a(`div`,N,[a(`div`,P,[a(`div`,be,[a(`label`,xe,_(d(H)(`serviceForm.nameLabelShort`)),1),i(d(h),{id:`svc-name-edit`,modelValue:X.name,"onUpdate:modelValue":n[6]||=e=>X.name=e,placeholder:`my-service`,class:`w-full`,onBlur:$,onKeydown:b(c($,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])]),a(`div`,Se,[a(`label`,Ce,_(d(H)(`serviceForm.runnerLabel`)),1),i(d(m),{id:`svc-runner`,modelValue:X.runner,"onUpdate:modelValue":n[7]||=e=>X.runner=e,options:Je,optionLabel:`label`,optionValue:`value`,class:`w-full`,onChange:$},null,8,[`modelValue`])])]),a(`div`,we,[a(`label`,Te,_(d(H)(`serviceForm.agentLabel`)),1),i(d(m),{id:`svc-agent-edit`,modelValue:X.agentId,"onUpdate:modelValue":n[8]||=e=>X.agentId=e,options:Q.value,optionLabel:`label`,optionValue:`value`,class:`w-full`,onChange:$},null,8,[`modelValue`,`options`]),a(`small`,Ee,_(d(H)(`serviceForm.agentHintEdit`)),1)]),a(`div`,De,[a(`div`,Oe,[a(`label`,ke,_(d(H)(`serviceForm.cwdLabel`)),1),i(d(h),{id:`svc-cwd`,modelValue:X.cwd,"onUpdate:modelValue":n[9]||=e=>X.cwd=e,placeholder:`.`,class:`w-full`,onBlur:$,onKeydown:b(c($,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])]),a(`div`,Ae,[a(`label`,je,_(d(H)(`serviceForm.portsLabel`)),1),i(d(me),{inputId:`svc-ports`,modelValue:X.ports,"onUpdate:modelValue":n[10]||=e=>X.ports=e,multiple:``,typeahead:!1,placeholder:d(H)(`serviceForm.portsPlaceholder`),class:`w-full`,onChange:$},null,8,[`modelValue`,`placeholder`])])]),a(`div`,Me,[i(d(pe),{modelValue:X.autoRestart,"onUpdate:modelValue":n[11]||=e=>X.autoRestart=e,inputId:`svc-autorestart`,onChange:$},null,8,[`modelValue`]),a(`label`,Ne,_(d(H)(`serviceForm.autoRestart`)),1)])]),i(d(S)),a(`div`,Pe,[a(`div`,Fe,[a(`h3`,null,_(d(H)(`serviceForm.envVars`)),1),i(d(u),{label:d(H)(`serviceForm.addEnvVar`),icon:`pi pi-plus`,severity:`secondary`,size:`small`,onClick:Xe},null,8,[`label`])]),Z.value.length===0?(p(),g(`div`,Ie,[a(`small`,null,_(d(H)(`serviceForm.noEnvVars`)),1)])):t(``,!0),(p(!0),g(y,null,ce(Z.value,(e,t)=>(p(),g(`div`,{key:t,class:`env-row`},[i(d(h),{modelValue:e.key,"onUpdate:modelValue":t=>e.key=t,placeholder:`KEY`,class:`env-key`,onBlur:$,onKeydown:b(c($,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onUpdate:modelValue`,`onKeydown`]),n[17]||=a(`span`,{class:`env-eq`},`=`,-1),i(d(h),{modelValue:e.value,"onUpdate:modelValue":t=>e.value=t,placeholder:`value`,class:`env-value`,onBlur:$,onKeydown:b(c($,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onUpdate:modelValue`,`onKeydown`]),i(d(u),{icon:`pi pi-trash`,severity:`danger`,text:``,rounded:``,size:`small`,onClick:()=>{Ze(t),$()}},null,8,[`onClick`])]))),128))]),i(d(S)),i(d(fe),{legend:d(H)(`serviceForm.healthCheck`),toggleable:!0,collapsed:!X.healthCheck.enabled,onToggle:n[16]||=e=>{X.healthCheck.enabled=!e.value,$()}},{default:s(()=>[a(`div`,Le,[a(`label`,Re,_(d(H)(`serviceForm.healthCheckPath`)),1),i(d(h),{id:`hc-path`,modelValue:X.healthCheck.path,"onUpdate:modelValue":n[12]||=e=>X.healthCheck.path=e,placeholder:`/health`,class:`w-full`,onBlur:$,onKeydown:b(c($,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])]),a(`div`,ze,[a(`div`,Be,[a(`label`,Ve,_(d(H)(`serviceForm.interval`)),1),i(d(x),{id:`hc-interval`,modelValue:X.healthCheck.interval,"onUpdate:modelValue":n[13]||=e=>X.healthCheck.interval=e,min:1e3,step:1e3,class:`w-full`,onBlur:$,onKeydown:b(c($,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])]),a(`div`,He,[a(`label`,Ue,_(d(H)(`serviceForm.timeout`)),1),i(d(x),{id:`hc-timeout`,modelValue:X.healthCheck.timeout,"onUpdate:modelValue":n[14]||=e=>X.healthCheck.timeout=e,min:500,step:500,class:`w-full`,onBlur:$,onKeydown:b(c($,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])]),a(`div`,We,[a(`label`,Ge,_(d(H)(`serviceForm.retries`)),1),i(d(x),{id:`hc-retries`,modelValue:X.healthCheck.retries,"onUpdate:modelValue":n[15]||=e=>X.healthCheck.retries=e,min:0,max:20,class:`w-full`,onBlur:$,onKeydown:b(c($,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])])])]),_:1},8,[`legend`,`collapsed`]),i(d(S))],64)):(p(),g(y,{key:0},[a(`div`,ye,[a(`div`,C,[a(`label`,w,_(d(H)(`serviceForm.projectLabel`)),1),i(d(m),{id:`svc-project`,modelValue:X.projectId,"onUpdate:modelValue":n[2]||=e=>X.projectId=e,options:Ye.value,optionLabel:`label`,optionValue:`value`,placeholder:d(H)(`serviceForm.projectPlaceholder`),class:`w-full`},null,8,[`modelValue`,`options`,`placeholder`]),a(`small`,T,_(d(H)(`serviceForm.projectHint`)),1)]),a(`div`,E,[a(`label`,D,_(d(H)(`serviceForm.agentLabel`)),1),i(d(m),{id:`svc-agent`,modelValue:X.agentId,"onUpdate:modelValue":n[3]||=e=>X.agentId=e,options:Q.value,optionLabel:`label`,optionValue:`value`,placeholder:d(H)(`serviceForm.agentInherit`),"show-clear":``,class:`w-full`},null,8,[`modelValue`,`options`,`placeholder`]),a(`small`,O,_(d(H)(`serviceForm.agentHint`)),1)]),a(`div`,k,[a(`label`,A,_(d(H)(`serviceForm.nameLabel`)),1),i(d(h),{id:`svc-name`,modelValue:X.name,"onUpdate:modelValue":n[4]||=e=>X.name=e,placeholder:`my-service`,class:`w-full`},null,8,[`modelValue`]),a(`small`,j,_(d(H)(`serviceForm.nameConfigHint`)),1)])]),i(d(S)),a(`div`,M,[i(d(u),{label:d(H)(`serviceForm.cancel`),severity:`secondary`,text:``,onClick:n[5]||=e=>d(I).back()},null,8,[`label`]),i(d(u),{label:d(H)(`serviceForm.create`),icon:`pi pi-check`,loading:K.value,type:`submit`},null,8,[`label`,`loading`])])],64))],32))]))}}),[[`__scopeId`,`data-v-47e4793d`]]);export{I as default};
|