@runeya/runeya 2.0.47 → 2.0.49
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/agent/index.js +11 -1
- package/agent/index.js.map +1 -1
- package/agent-manager-JNA5ZALK.js +7 -0
- package/{chunk-5PRQBES2.js → chunk-4AGTVGSH.js} +59 -6
- package/chunk-4AGTVGSH.js.map +1 -0
- package/index.js +1 -1
- package/package.json +1 -1
- package/{src-IFPDFIDZ.js → src-WVK4WUI3.js} +65 -8
- package/src-WVK4WUI3.js.map +1 -0
- package/web/assets/{AgentScalarChatInterface.vue-Z3BLbola.js → AgentScalarChatInterface.vue-D53JSFzC.js} +1 -1
- package/web/assets/{AgentTerminalPage-Dg4kOMbK.js → AgentTerminalPage-zuXFRGB0.js} +1 -1
- package/web/assets/AiChatPage-BjC9iQnH.js +1 -0
- package/web/assets/{AppLayout-BQpUnN2N.js → AppLayout-fVYVDGr-.js} +1 -1
- package/web/assets/{AuditPage-zfim5OLa.js → AuditPage-DvhG8fxh.js} +1 -1
- package/web/assets/{CloudAccountPage-BD-L27Wl.js → CloudAccountPage-CE3b0q5v.js} +1 -1
- package/web/assets/CloudAccountPage-YkGuA0nb.js +1 -0
- package/web/assets/{CloudMessagingPage-BnaGxzNK.js → CloudMessagingPage-okqqdltV.js} +1 -1
- package/web/assets/{DashboardPage-ByzcpJV7.js → DashboardPage-CmZITjvU.js} +1 -1
- package/web/assets/{EditorIcon-jk0Nz8Mr.js → EditorIcon-dUXSIPv3.js} +1 -1
- package/web/assets/{EnvironmentForm-BH4EMxM6.js → EnvironmentForm-_y5JoRHH.js} +1 -1
- package/web/assets/{EnvironmentFormPage-Bwjr8SsV.js → EnvironmentFormPage-DYhDZdPj.js} +1 -1
- package/web/assets/{EnvironmentListPage-BgqHe-4p.js → EnvironmentListPage-soh5FJDb.js} +1 -1
- package/web/assets/{EnvironmentSelector-CBh21uuY.js → EnvironmentSelector-CQNLsssr.js} +1 -1
- package/web/assets/{KanbanBoardPage-Dg0Od24D.js → KanbanBoardPage-C3cG7v4z.js} +3 -3
- package/web/assets/KanbanListPage-xyv-oiyq.js +1 -0
- package/web/assets/KanbanListPage-yeTYeAas.css +1 -0
- package/web/assets/{LaunchProjectPage-BZe2kaRt.js → LaunchProjectPage-DKqMjh-V.js} +1 -1
- package/web/assets/{LaunchServicesPage-B4xd4APa.js → LaunchServicesPage-IhWdB_Gw.js} +1 -1
- package/web/assets/{LogViewer-BhaSYgvw.js → LogViewer-ChElXmMu.js} +1 -1
- package/web/assets/{ProcessControls-lDF1qNIM.js → ProcessControls-t9skQ_zd.js} +1 -1
- package/web/assets/{ProcessDetailPage-DwaApuHs.js → ProcessDetailPage-DFv0ESg1.js} +1 -1
- package/web/assets/{ProcessMetrics-rGmADRtS.js → ProcessMetrics-DL00NyoX.js} +1 -1
- package/web/assets/{ProjectDetailPage-BoIcnBMH.js → ProjectDetailPage-DEXvg1pg.js} +1 -1
- package/web/assets/{ProjectListPage-C3JtBL-6.js → ProjectListPage-h0AQ_RCw.js} +1 -1
- package/web/assets/{RandomJobTestPage-CndKGKYR.js → RandomJobTestPage-Dp7A7Qgx.js} +1 -1
- package/web/assets/{ScenarioEditorPage-DU7tb4M-.js → ScenarioEditorPage-D0_VpZUT.js} +1 -1
- package/web/assets/{SendToChatDialog-CCRCitBB.js → SendToChatDialog-BpJetpLA.js} +1 -1
- package/web/assets/{ServiceControlsBar-BjyMYoiN.js → ServiceControlsBar-qiCaxnab.js} +1 -1
- package/web/assets/{ServiceDetailPage-JqpmujmY.js → ServiceDetailPage-BD8D0CuN.js} +1 -1
- package/web/assets/{ServiceFormPage-DgNwiYzM.js → ServiceFormPage-Dax40DkX.js} +1 -1
- package/web/assets/{SettingsPage-BZM3WWqc.js → SettingsPage-zriZbuPv.js} +4 -4
- package/web/assets/{UnlockPage-BcZ2vL57.js → UnlockPage-BYtu3w_t.js} +1 -1
- package/web/assets/{VariablesTable-0Gz2ffiL.js → VariablesTable-IvhXwdsn.js} +1 -1
- package/web/assets/{VaultMigrationPage-BxTBDL19.js → VaultMigrationPage-6Id4Fmeo.js} +1 -1
- package/web/assets/{VersionBadge-DvsaGqvh.js → VersionBadge-B-PtNx51.js} +1 -1
- package/web/assets/WikiPage-DqqlIbM6.js +1 -0
- package/web/assets/{WikiView-e81ejcA8.js → WikiView-BZvgaTQp.js} +1 -1
- package/web/assets/{add-scalar-classes-Bh8ghfnQ.js → add-scalar-classes-CEf8wgbL.js} +3 -3
- package/web/assets/auth-errors-B510-08J.js +1 -0
- package/web/assets/{autocomplete-CDWkaHAi.js → autocomplete-DpSrZtZQ.js} +1 -1
- package/web/assets/{basic-shape-diamond.svg-7zqPzGW0.js → basic-shape-diamond.svg-BxBPwaOm.js} +1 -1
- package/web/assets/{basic-shape-hexagon.svg-DQwxqMd2.js → basic-shape-hexagon.svg-Du908vLS.js} +1 -1
- package/web/assets/{basic-shape-primary-circle-ellipse-round.svg-Bqm796vK.js → basic-shape-primary-circle-ellipse-round.svg-CfFm5Pl7.js} +1 -1
- package/web/assets/{basic-shape-primary-square-rectangle.svg-D7eyO04i.js → basic-shape-primary-square-rectangle.svg-CP0kG7Ut.js} +1 -1
- package/web/assets/{basic-shape-shield.svg-Bnc_pFVA.js → basic-shape-shield.svg-DxTsLdrS.js} +1 -1
- package/web/assets/{browser-LxxhMX-Z.js → browser-BvCyKum4.js} +1 -1
- package/web/assets/{browser-DeXg6zUY.js → browser-DV9-oWjy.js} +1 -1
- package/web/assets/{card-RaXQSIfv.js → card-TJ-av0Pi.js} +1 -1
- package/web/assets/{checkbox-DnpUXs7B.js → checkbox-D5bej0ao.js} +1 -1
- package/web/assets/{chip-0f0r_-zR.js → chip-D8vO8NID.js} +1 -1
- package/web/assets/{client-CTzGkOjO.js → client-D5eMRPpD.js} +1 -1
- package/web/assets/{cloud-chat.store-D2oJ_DFn.js → cloud-chat.store-DzSz0QMb.js} +1 -1
- package/web/assets/{cloud-session-BLn7b3ke.js → cloud-session-tALRHewK.js} +1 -1
- package/web/assets/{column-DqAehgUU.js → column-BAToyYIb.js} +1 -1
- package/web/assets/{computer-device-desktop-monitor.svg-k2x9Oiiu.js → computer-device-desktop-monitor.svg-82Glaw7U.js} +1 -1
- package/web/assets/{computer-device-desktop.svg-CyFljvrh.js → computer-device-desktop.svg-BZb-XFcK.js} +1 -1
- package/web/assets/{computer-device-laptop.svg-ZKpV0gtW.js → computer-device-laptop.svg-BnptbmCn.js} +1 -1
- package/web/assets/{computer-device-mobile-phone-android-samsung-back.svg-BkRkRpCh.js → computer-device-mobile-phone-android-samsung-back.svg-g23ZYYHm.js} +1 -1
- package/web/assets/{computer-device-mobile-phone-android-samsung.svg-gpUXFo9R.js → computer-device-mobile-phone-android-samsung.svg-B5fBZlIN.js} +1 -1
- package/web/assets/{computer-device-mobile-phone-iphone-x-back.svg-CJwr0WJ3.js → computer-device-mobile-phone-iphone-x-back.svg-BsKZAUH_.js} +1 -1
- package/web/assets/{computer-device-mobile-phone-iphone-x.svg-BsPF_njN.js → computer-device-mobile-phone-iphone-x.svg-GVv-OoXC.js} +1 -1
- package/web/assets/{computer-device-mobile-tablet-touch.svg-DON7qRSP.js → computer-device-mobile-tablet-touch.svg-CpyRybCz.js} +1 -1
- package/web/assets/{computer-device-mobile-tablet.svg-BPnT3MvS.js → computer-device-mobile-tablet.svg-C_6zzbHC.js} +1 -1
- package/web/assets/{computer-device-network-ethernet-cat6.svg-Bpjv_2ub.js → computer-device-network-ethernet-cat6.svg-s_MRa0bJ.js} +1 -1
- package/web/assets/{computer-device-network-lan-www.svg-BhXBIyrf.js → computer-device-network-lan-www.svg-31TS3sqT.js} +1 -1
- package/web/assets/{computer-device-network-wifi-connection.svg-DUaA1GcU.js → computer-device-network-wifi-connection.svg-BfBnT-iK.js} +1 -1
- package/web/assets/{computer-device-network-wifi-router.svg-k_DqQho1.js → computer-device-network-wifi-router.svg-BNQJ_FEI.js} +1 -1
- package/web/assets/{cssMode-CfVTS8OM.js → cssMode-IplHgA8x.js} +1 -1
- package/web/assets/{divider-C1huit3M.js → divider-D-QC8_57.js} +1 -1
- package/web/assets/{ecology-science-erlenmeyer-flask.svg-D7pbgLTT.js → ecology-science-erlenmeyer-flask.svg-CKCEQFIq.js} +1 -1
- package/web/assets/{fieldset-BVRjgmg4.js → fieldset-DpQHSMKf.js} +1 -1
- package/web/assets/{freemarker2-DsY_gjrP.js → freemarker2-DHUVsWtT.js} +1 -1
- package/web/assets/{handlebars-mh1HrGq7.js → handlebars-pE00Hjr_.js} +1 -1
- package/web/assets/{html-BsaAhzOa.js → html-DMtmtVNV.js} +1 -1
- package/web/assets/{htmlMode-pIhI3cAi.js → htmlMode-DFeVLqUM.js} +1 -1
- package/web/assets/{image-flash-lightning.svg-DDbhd-eu.js → image-flash-lightning.svg-NAFI_e2J.js} +1 -1
- package/web/assets/{image-picture-flower.svg-Bbx1pu02.js → image-picture-flower.svg-B6ZUCTNS.js} +1 -1
- package/web/assets/{index-Do0zA8cN.js → index-a1iwaPG1.js} +6 -6
- package/web/assets/{interface-alert-exclamation-diamond.svg-DUJeN1hs.js → interface-alert-exclamation-diamond.svg-CwHTxp3a.js} +1 -1
- package/web/assets/{interface-alert-exclamation-triangle-warning.svg-5y99yZSY.js → interface-alert-exclamation-triangle-warning.svg-Bi-1vcWG.js} +1 -1
- package/web/assets/{interface-alert-information-circle.svg-DPGP01ZU.js → interface-alert-information-circle.svg-CQnbLMfS.js} +1 -1
- package/web/assets/{interface-award-crown.svg-GDQ8ZRUh.js → interface-award-crown.svg-CFtMz4dE.js} +1 -1
- package/web/assets/{interface-bookmark.svg-CTZlXD4R.js → interface-bookmark-tag.svg-DumdjnW1.js} +1 -1
- package/web/assets/{interface-bookmark-tag.svg-D1NUMLB5.js → interface-bookmark.svg-7SV2pxyN.js} +1 -1
- package/web/assets/{interface-calendar-date-one.svg-DXo4raY8.js → interface-calendar-date-one.svg-e7-h1b3y.js} +1 -1
- package/web/assets/{interface-content-book-open-pages.svg-DTsCVw_D.js → interface-content-book-open-pages.svg-DwLQV4lf.js} +1 -1
- package/web/assets/{interface-content-book-page.svg-w9azHLUe.js → interface-content-book-page.svg-CAKDQ2x-.js} +1 -1
- package/web/assets/{interface-content-file.svg-69CCnbNb.js → interface-content-file.svg-DZEwGNLB.js} +1 -1
- package/web/assets/interface-content-folder.svg-BF9F5qf2.js +1 -0
- package/web/assets/{interface-content-folder.svg-85PnJNaK.js → interface-content-folder.svg-BnFYmNMO.js} +1 -1
- package/web/assets/{interface-copy-clipboard.svg-B0AfVljN.js → interface-copy-clipboard.svg-9UwhLON-.js} +1 -1
- package/web/assets/{interface-edit-attachment.svg-mFLLqqcw.js → interface-edit-attachment.svg-C1_u9TNx.js} +1 -1
- package/web/assets/{interface-edit-binocular.svg-CHzgny3z.js → interface-edit-binocular.svg-DoQnsqHf.js} +1 -1
- package/web/assets/{interface-edit-magic-wand.svg-BbJg9LMT.js → interface-edit-magic-wand.svg-C7wTd6JH.js} +1 -1
- package/web/assets/{interface-edit-tool-paint-roller.svg-YKE28Xpc.js → interface-edit-tool-paint-roller.svg-BZ4hqe-1.js} +1 -1
- package/web/assets/{interface-edit-tool-pencil.svg-Cy12MfEi.js → interface-edit-tool-pencil.svg-D1bysygW.js} +1 -1
- package/web/assets/{interface-favorite-award.svg-COiLJu4w.js → interface-favorite-award.svg-0Thu2k9M.js} +1 -1
- package/web/assets/{interface-favorite-flag.svg-C0NtaPD_.js → interface-favorite-flag.svg-DI4_vrUQ.js} +1 -1
- package/web/assets/{interface-favorite-heart.svg-CcKJOjOh.js → interface-favorite-heart.svg-DpwKtPuU.js} +1 -1
- package/web/assets/{interface-favorite-star.svg-C3vRaRtM.js → interface-favorite-star.svg-D-udxHVN.js} +1 -1
- package/web/assets/{interface-favorite-stars-sparkles.svg-DN9WOkFs.js → interface-favorite-stars-sparkles.svg-Dc4Z9Mjg.js} +1 -1
- package/web/assets/{interface-hierarchy-flowchart.svg-CffgUWNS.js → interface-hierarchy-flowchart.svg-vfERX-oc.js} +1 -1
- package/web/assets/{interface-home-house.svg-B9c4N9Fi.js → interface-home-house.svg-BY98XY-a.js} +1 -1
- package/web/assets/{interface-hyperlink.svg-B8dXB276.js → interface-hyperlink.svg-8D6WX1Q9.js} +1 -1
- package/web/assets/{interface-lighting-brightness.svg-BjFVAOW3.js → interface-lighting-brightness.svg-DUoPpiwx.js} +1 -1
- package/web/assets/{interface-lock-closed.svg-DwNcKmwu.js → interface-lock-closed.svg-CzFKU_Z4.js} +1 -1
- package/web/assets/{interface-lock-open-unlock.svg-BXZeKlHt.js → interface-lock-open-unlock.svg-BnrVx0lo.js} +1 -1
- package/web/assets/{interface-login-key.svg-CQnZGVMJ.js → interface-login-key.svg-DAfv-MMA.js} +1 -1
- package/web/assets/{interface-search.svg-CXre9Ja4.js → interface-search.svg-Q2hCozQb.js} +1 -1
- package/web/assets/{interface-setting-cog.svg-CGK2QxqV.js → interface-setting-cog.svg-Bvq0dvZR.js} +1 -1
- package/web/assets/{interface-share-megaphone-bullhorn.svg-BcdTvuin.js → interface-share-megaphone-bullhorn.svg-fUmta8NQ.js} +1 -1
- package/web/assets/{interface-share-rocket.svg-DIvKBIQX.js → interface-share-rocket.svg-BKSZkx2r.js} +1 -1
- package/web/assets/{interface-share-satellite.svg-DNbqAorz.js → interface-share-satellite.svg-CB_uwNHS.js} +1 -1
- package/web/assets/{interface-share-space-ship.svg-Biobo33q.js → interface-share-space-ship.svg-CcUB1z0B.js} +1 -1
- package/web/assets/{interface-share.svg-DWjt5rBb.js → interface-share.svg-Bug50vV0.js} +1 -1
- package/web/assets/{interface-signal-square.svg--hmv5CmE.js → interface-signal-square.svg-zg41vf79.js} +1 -1
- package/web/assets/{interface-time-clock-circle.svg-C1GnMIQD.js → interface-time-clock-circle.svg-a4omIVlV.js} +1 -1
- package/web/assets/{interface-time-hour-glass.svg-BCRsHIbm.js → interface-time-hour-glass.svg-3zmzbQg_.js} +1 -1
- package/web/assets/{interface-users-multiple.svg-CUpeUldF.js → interface-users-multiple.svg-BdPX2m6Y.js} +1 -1
- package/web/assets/{interface-weather-moon.svg-QXMY6B27.js → interface-weather-moon.svg-D9_m-QTi.js} +1 -1
- package/web/assets/{javascript-DKeyayKI.js → javascript-BJlgvmgy.js} +1 -1
- package/web/assets/{jsonMode-I9zemAn2.js → jsonMode-D0zJGMKu.js} +1 -1
- package/web/assets/{liquid-xEdzGxP1.js → liquid-B0fONmvZ.js} +1 -1
- package/web/assets/{lspLanguageFeatures-DOVjCuiu.js → lspLanguageFeatures-CrwGD4mx.js} +1 -1
- package/web/assets/{mail-chat-bubble-square.svg-CR8byO78.js → mail-chat-bubble-square.svg-DZaD3FQ3.js} +1 -1
- package/web/assets/{mail-send-email-paper-airplane.svg-B0cIMUKH.js → mail-send-email-paper-airplane.svg-DkbRfjXY.js} +1 -1
- package/web/assets/{mail-send-envelope.svg-El4e7bXy.js → mail-send-envelope.svg-5c8j8mB_.js} +1 -1
- package/web/assets/{mdx-AWoH37r-.js → mdx-CKW2c2uF.js} +1 -1
- package/web/assets/{message-CATQqbP_.js → message-DZ0RuJXv.js} +1 -1
- package/web/assets/{minus-Sd1wO9DO.js → minus-C_n6M3oC.js} +1 -1
- package/web/assets/modal-C5SccGq4.js +1 -0
- package/web/assets/{modal-ZXFHQ6vP.js → modal-CvqNyAvh.js} +1 -1
- package/web/assets/{money-cashier-receipt.svg-BIEGQvlX.js → money-cashier-receipt.svg-nNTup6TP.js} +1 -1
- package/web/assets/{money-currency-dollar-pay.svg-BgCHAYq5.js → money-currency-dollar-pay.svg-D6ct80fW.js} +1 -1
- package/web/assets/{money-graph-arrow-increase.svg-q6aDu3og.js → money-graph-arrow-increase.svg-DrQ3RzKG.js} +1 -1
- package/web/assets/{money-graph-bar-chart-increase.svg-mRvG_dWg.js → money-graph-bar-chart-increase.svg-CgI8xnRe.js} +1 -1
- package/web/assets/{multiselect-BK7hJt7W.js → multiselect-CSd05WUd.js} +1 -1
- package/web/assets/{nature-ecology-leaf.svg-DdhvC8mq.js → nature-ecology-leaf.svg-SIUCD6fX.js} +1 -1
- package/web/assets/{password-Dnf9oU5a.js → password-1NqZx53t.js} +1 -1
- package/web/assets/{phone-telephone.svg-CjbyxKZA.js → phone-telephone.svg-DuLAx6_w.js} +1 -1
- package/web/assets/{plus-jYeRYaw9.js → plus-CP-dlA9U.js} +1 -1
- package/web/assets/process.store-B_vfVoW1.js +1 -0
- package/web/assets/{programming-bug.svg-DvDCWw4P.js → programming-bug.svg-DzOMyrsK.js} +1 -1
- package/web/assets/{programming-cloud.svg-2prWAqB7.js → programming-cloud.svg-CB7hznLf.js} +1 -1
- package/web/assets/{programming-computer-database-server.svg-CT7k5d_p.js → programming-computer-database-server.svg-Vdd0DgKt.js} +1 -1
- package/web/assets/{programming-computer-database.svg-Dm7fpvII.js → programming-computer-database.svg-CEqheAaf.js} +1 -1
- package/web/assets/{programming-module-four-layout.svg-DBv6QvEO.js → programming-module-four-layout.svg-BdPzuTtB.js} +1 -1
- package/web/assets/{programming-module-three.svg-BnP96bPJ.js → programming-module-three.svg-PwBqCXu4.js} +1 -1
- package/web/assets/{programming-module.svg-Bdr4ZdZO.js → programming-module.svg-DsBi6ejo.js} +1 -1
- package/web/assets/{programming-script-code.svg-DIcr6sF-.js → programming-script-code.svg-Broms4WV.js} +1 -1
- package/web/assets/{python-C554d-pk.js → python-DfCB9qU4.js} +1 -1
- package/web/assets/{razor-BvOiTjBp.js → razor-BBh-Aao5.js} +1 -1
- package/web/assets/router-CEOd6ZAd.js +1 -0
- package/web/assets/{settings.store-DISlY-48.js → settings.store-BfNYjk_y.js} +1 -1
- package/web/assets/{shopping-cart.svg-DoCVSOin.js → shopping-cart.svg-CKdnb6hR.js} +1 -1
- package/web/assets/{shopping-gift-present.svg-CgNqOSQr.js → shopping-gift-present.svg-DIxbK0pG.js} +1 -1
- package/web/assets/{shopping-shipping-box-parcel-package.svg-YkVPEp7J.js → shopping-shipping-box-parcel-package.svg-C-9ntsF7.js} +1 -1
- package/web/assets/{src-DKVQlKvZ.js → src-C77fweBS.js} +1 -1
- package/web/assets/{src-Cvt5pswj.js → src-CXyRAwtR.js} +1 -1
- package/web/assets/{tabpanel-DFoLVdFR.js → tabpanel-C0aUv4Tp.js} +1 -1
- package/web/assets/{tag-new-circle.svg-BeUe12X2.js → tag-new-circle.svg-D9mnL-uB.js} +1 -1
- package/web/assets/{travel-map-earth-globe.svg-B1I1Ed-v.js → travel-map-earth-globe.svg-B1pf_UKK.js} +1 -1
- package/web/assets/trpc-BNJN8Syq.js +1 -0
- package/web/assets/{tsMode-BPD-0Vep.js → tsMode-CBiaVW1A.js} +1 -1
- package/web/assets/{typescript-Q2uKnndS.js → typescript-DSa5kNRs.js} +1 -1
- package/web/assets/useAiChatDrawer-DJh6hREC.js +1 -0
- package/web/assets/useCloudOrg-DYG5BAW1.js +1 -0
- package/web/assets/useCloudOrg-DinvbrpR.css +1 -0
- package/web/assets/{useProjectCatalog-Kh_sHbSD.js → useProjectCatalog-Dyg12Vcr.js} +1 -1
- package/web/assets/{xml-B0CfAsFk.js → xml-BYwyGk9G.js} +1 -1
- package/web/assets/{yaml-B3zRI6AS.js → yaml-Dl2OSYTO.js} +1 -1
- package/web/index.html +1 -1
- package/agent-manager-JJYZDLNB.js +0 -7
- package/chunk-5PRQBES2.js.map +0 -1
- package/src-IFPDFIDZ.js.map +0 -1
- package/web/assets/AiChatPage-0igbt0Ie.js +0 -1
- package/web/assets/CloudAccountPage-CHZG-vv-.js +0 -1
- package/web/assets/KanbanListPage-BXWsI5ji.css +0 -1
- package/web/assets/KanbanListPage-C6bsD-gJ.js +0 -1
- package/web/assets/WikiPage-DkEQXkzp.js +0 -1
- package/web/assets/auth-errors-C1B7h06f.js +0 -1
- package/web/assets/interface-content-folder.svg-Db3hJMdF.js +0 -1
- package/web/assets/modal-BbDElcmR.js +0 -1
- package/web/assets/process.store-C5LXrPXo.js +0 -1
- package/web/assets/router-CCEIu6U5.js +0 -1
- package/web/assets/trpc-CVPkysoa.js +0 -1
- package/web/assets/useAiChatDrawer-B70XYuU8.js +0 -1
- package/web/assets/useCloudOrg-A1wW_KrI.css +0 -1
- package/web/assets/useCloudOrg-CZ68epfW.js +0 -1
- /package/{agent-manager-JJYZDLNB.js.map → agent-manager-JNA5ZALK.js.map} +0 -0
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{$ as e,$r as t,At as n,Bi as r,Bt as i,C as a,Ci as o,Di as s,Dn as c,En as l,Et as u,G as d,Gi as f,H as p,In as m,J as h,Ji as g,Kr as _,Mn as v,Ot as y,Q as b,Qr as x,R as S,Ti as C,U as w,Ur as T,Vt as E,W as ee,Wi as D,Wr as O,Xr as k,Yr as A,Yt as j,Z as te,Zi as M,Zr as N,Zt as ne,an as re,c as ie,dn as ae,et as oe,fn as se,gi as ce,ha as P,ia as le,ii as F,in as ue,jn as de,ki as fe,la as I,li as pe,mn as L,na as me,oi as R,on as z,ot as he,ri as B,rt as ge,sa as _e,si as ve,tt as V,un as ye,va as H,wn as be,zr as xe}from"./index-Do0zA8cN.js";import"./cloud-session-BLn7b3ke.js";import"./src-Cvt5pswj.js";import{t as Se}from"./message-CATQqbP_.js";import"./ProcessControls-lDF1qNIM.js";import{t as Ce}from"./ServiceControlsBar-BjyMYoiN.js";import{n as we,t as Te}from"./column-DqAehgUU.js";import{n as Ee}from"./plus-jYeRYaw9.js";import{t as De}from"./checkbox-DnpUXs7B.js";import{n as Oe,t as ke}from"./autocomplete-CDWkaHAi.js";import{a as Ae,i as je,n as Me,r as Ne,t as Pe}from"./tabpanel-DFoLVdFR.js";import{n as Fe,t as Ie}from"./VariablesTable-0Gz2ffiL.js";import{t as Le}from"./uuid-B3B8HIK9.js";import"./src-DKVQlKvZ.js";import"./w3c-keyname-nn0G3QC2.js";import"./SendToChatDialog-CCRCitBB.js";import{n as Re,t as ze}from"./ProcessMetrics-rGmADRtS.js";import{t as Be}from"./LogViewer-BhaSYgvw.js";import{t as Ve}from"./divider-C1huit3M.js";import{t as He}from"./settings.store-DISlY-48.js";import{t as Ue}from"./WikiView-e81ejcA8.js";var We={key:0,class:`log-details`},Ge={class:`log-details__section`},Ke={class:`log-details__label`},qe={class:`log-details__value log-details__value--box`},Je={class:`log-details__section`},Ye={class:`log-details__label`},Xe={class:`log-details__value log-details__value--box log-details__value--code`},Ze={class:`log-details__section`},Qe={class:`log-details__label`},$e={class:`log-details__value log-details__value--box`},et={class:`log-details__process`},tt={class:`log-details__section`},nt={class:`log-details__label`},rt={class:`log-details__value log-details__value--box`},it={class:`log-details__section`},at={class:`log-details__label`},ot={class:`log-details__value log-details__value--box`},st={key:0,class:`log-details__section`},ct={class:`log-details__label`},lt={class:`log-details__value log-details__value--box`},ut={key:1,class:`log-details__section`},dt={class:`log-details__label`},ft={class:`log-details__value log-details__value--box log-details__value--code`},pt=ye(R({__name:`LogDetailsDrawer`,props:{visible:{type:Boolean},log:{}},emits:[`update:visible`,`view-process`],setup(e,{emit:n}){let r=e,{t:i}=m(),a=n,o=A(()=>{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`)}`}),c=A(()=>r.log?r.log.level.charAt(0).toUpperCase()+r.log.level.slice(1):``),l=A(()=>!r.log||r.log.pid==null?i(`logDetails.notAvailable`):String(r.log.pid));function u(){r.log&&a(`view-process`,r.log.processId)}function d(){a(`update:visible`,!1)}return(n,r)=>(s(),N(H(ae),{visible:e.visible,position:`right`,header:H(i)(`logDetails.header`),style:{width:`440px`},"onUpdate:visible":d},{default:D(()=>[e.log?(s(),t(`div`,We,[k(`div`,Ge,[k(`div`,Ke,M(H(i)(`logDetails.type`)),1),k(`div`,qe,M(c.value),1)]),k(`div`,Je,[k(`div`,Ye,M(H(i)(`logDetails.rawMessage`)),1),k(`div`,Xe,M(e.log.raw),1)]),k(`div`,Ze,[k(`div`,Qe,M(H(i)(`logDetails.serviceId`)),1),k(`div`,$e,[k(`div`,et,[k(`span`,null,M(e.log.processId),1),F(H(L),{label:H(i)(`logDetails.viewProcess`),icon:`pi pi-external-link`,size:`small`,outlined:``,onClick:u},null,8,[`label`])])])]),k(`div`,tt,[k(`div`,nt,M(H(i)(`logDetails.pid`)),1),k(`div`,rt,M(l.value),1)]),k(`div`,it,[k(`div`,at,M(H(i)(`logDetails.timestamp`)),1),k(`div`,ot,M(o.value),1)]),e.log.stream?(s(),t(`div`,st,[k(`div`,ct,M(H(i)(`logDetails.stream`)),1),k(`div`,lt,M(e.log.stream),1)])):x(``,!0),e.log.metadata&&Object.keys(e.log.metadata).length>0?(s(),t(`div`,ut,[k(`div`,dt,M(H(i)(`logDetails.metadata`)),1),k(`div`,ft,M(JSON.stringify(e.log.metadata,null,2)),1)])):x(``,!0)])):x(``,!0)]),_:1},8,[`visible`,`header`]))}}),[[`__scopeId`,`data-v-5781eb9d`]]),mt=500,ht=5,gt=ge;function _t(e){return e+Math.random()*e*.3}function vt(e,t){let n=I([]),a=I(!1),o=null,s=0,c=null,l=i(()=>{s=0,a.value||S()}),u=[],d=null,f=I(0),p=I(0),m=0,h=0,g=null;function _(){g||=setInterval(()=>{f.value=m,p.value=h,m=0,h=0},1e3)}function v(){g&&=(clearInterval(g),null),f.value=0,p.value=0,m=0,h=0}function y(){if(d=null,u.length===0)return;let e=u;u=[],h+=e.length;let t=[...n.value,...e];t.length>mt&&(t=t.slice(t.length-mt)),n.value=t}function b(){!e.value||!t.value||(a.value=!0,o=E.process.onLog.subscribe({agentId:e.value,processId:t.value},{onData(e){let t=e;if(s=0,j(`connected`),t.some(e=>e.__clearLogBuffer)){n.value=[],u=[];return}m+=t.length,u.push(...t),d===null&&(d=requestAnimationFrame(y))},onError(e){console.error(`[useLogStream] Subscription error:`,e.message),a.value=!1,o=null,x()}}))}function x(){if(s>=ht){console.warn(`[useLogStream] Max retries (${ht}) reached`),j(`disconnected`);return}j(`reconnecting`);let e=_t(gt*2**s);s++,c=setTimeout(()=>{c=null,S()},e)}async function S(){if(!a.value&&!(!e.value||!t.value)){s=0;try{let r=await E.process.logs.query({agentId:e.value,processId:t.value});r.length>mt&&(r=r.slice(r.length-mt)),n.value=r,j(`connected`)}catch{}b()}}function w(){c&&=(clearTimeout(c),null),d!==null&&(cancelAnimationFrame(d),d=null),u=[],v(),o&&=(o.unsubscribe(),null),a.value=!1,s=0,n.value=[]}return r([e,t],([e,t],[n,r])=>{(e!==n||t!==r)&&(a.value&&w(),S())}),C(()=>{l(),w()}),{logs:n,isStreaming:a,start:S,stop:w,receivedPerSec:f,flushedPerSec:p,startStats:_,stopStats:v}}var yt={class:`service-terminal__toolbar`},bt={class:`service-terminal__toolbar-left`},xt={key:0,class:`pid-option`},St={key:1,class:`pid-option`},Ct={key:0,class:`pi pi-circle-fill pid-status-icon pid-status-icon--active`,style:{"margin-right":`0.5rem`}},wt={key:1,class:`pi pi-circle-fill pid-status-icon pid-status-icon--stopped`,style:{"margin-right":`0.5rem`}},Tt={class:`pid-option`},Et={key:0,class:`pi pi-list`,style:{"margin-right":`0.5rem`}},Dt=[`title`],Ot=[`title`],kt={class:`service-terminal__toolbar-right`},At={class:`service-terminal__content`,"data-testid":`service-terminal-content`},jt={key:1,class:`service-terminal__shortcuts`},Mt={class:`service-terminal__command-input`},Nt={class:`service-terminal__bottom`},Pt=`runeya_command_history_`,Ft=50,It=ye(R({__name:`ServiceTerminal`,props:{service:{},processes:{}},setup(e){let{t:n}=m(),i=e,a=A(()=>i.processes.find(e=>e.state===`running`||e.state===`starting`)??i.processes[0]??null),c=A(()=>a.value?.agentId??``),l=A(()=>a.value?.id??``),u=v(),{logs:d,isStreaming:f,start:p,stop:h,receivedPerSec:y,flushedPerSec:b,startStats:S,stopStats:w}=vt(c,l),T=I(!1);r(T,e=>{e?S():w()});function ee(e){e.ctrlKey&&e.shiftKey&&(e.key===`*`||e.key===`µ`)&&(e.preventDefault(),T.value=!T.value)}let O=A(()=>{let e=new Map;return d.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=i.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())}),j=A(()=>je.value===`all`?d.value:d.value.filter(e=>e.pid===je.value)),te=A(()=>O.value.filter(e=>e.isActive).length),ie=A(()=>{let e=[{label:n(`serviceTerminal.allProcesses`),value:`all`,badge:te.value>0?`${te.value} ${n(`serviceTerminal.active`)}`:void 0,isActive:void 0}];return O.value.forEach(({pid:t,logCount:n,isActive:r})=>{e.push({label:`PID: ${t}`,value:t,badge:`${n} logs`,isActive:r})}),e});A(()=>i.processes.filter(e=>e.state===`running`).length);async function ae(){if(a.value)try{await E.process.clearLogBuffer.mutate({agentId:a.value.agentId,processId:a.value.id}),d.value=[]}catch(e){u.add({severity:`error`,summary:n(`serviceTerminal.error`),detail:e.message??n(`serviceTerminal.failedToClearLogs`),life:5e3})}}let oe=A(()=>i.service.shortcuts??[]),se=I(new Set);async function P(e){let t=a.value?.agentId??i.service.agentId,r=a.value?.id??i.service.id;if(!t){u.add({severity:`warn`,summary:n(`serviceTerminal.noAgent`),detail:n(`serviceTerminal.noAgentDesc`),life:3e3});return}if(se.value.has(e.id)){try{await E.process.cancelShortcut.mutate({agentId:t,processId:r,shortcutId:e.id})}catch{}return}se.value=new Set([...se.value,e.id]);try{await E.process.executeShortcut.mutate({agentId:t,processId:r,shortcut:e})}catch(e){u.add({severity:`error`,summary:n(`serviceTerminal.shortcutFailed`),detail:e.message??n(`serviceTerminal.shortcutFailed`),life:5e3})}finally{let t=new Set(se.value);t.delete(e.id),se.value=t}}let le=I(``),ue=I(new Set),de=A(()=>ue.value.size>0),pe=I(null),me=I([]),R=I(-1),z=`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(`,`),he=I([]);function B(e){let t=e.query.toLowerCase().trim();if(!t||!le.value.trim()){he.value=[];return}let n=[...me.value.slice().reverse(),...z],r=new Set;he.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(Pt+i.service.id);e&&(me.value=JSON.parse(e))}catch{me.value=[]}}function _e(){try{localStorage.setItem(Pt+i.service.id,JSON.stringify(me.value))}catch{}}function ve(e){me.value[me.value.length-1]!==e&&(me.value=[...me.value,e],me.value.length>Ft&&(me.value=me.value.slice(-Ft)),_e())}async function V(){let e=a.value?.agentId??i.service.agentId,t=a.value?.id??i.service.id;if(e)try{await E.process.cancelAdHocCommand.mutate({agentId:e,processId:t})}catch{}}async function ye(){if(!le.value.trim())return;let e=a.value?.agentId??i.service.agentId,t=a.value?.id??i.service.id;if(!e){u.add({severity:`warn`,summary:n(`serviceTerminal.noAgent`),detail:n(`serviceTerminal.noAgentDesc`),life:3e3});return}let r=Le(),o=le.value.trim();ve(o),le.value=``,he.value=[],R.value=-1,ue.value=new Set([...ue.value,r]);try{await E.process.executeAdHocCommand.mutate({agentId:e,processId:t,command:o,commandId:r})}catch(e){u.add({severity:`error`,summary:n(`serviceTerminal.commandFailed`),detail:e.message??n(`serviceTerminal.commandFailed`),life:5e3})}finally{let e=new Set(ue.value);e.delete(r),ue.value=e,ce(()=>{document.querySelector(`.service-terminal__input`)?.focus()})}}function be(e){if(e.key===`Enter`&&!e.shiftKey){e.preventDefault(),ye();return}if(e.key===`ArrowUp`){if(e.preventDefault(),me.value.length===0)return;R.value===-1?R.value=me.value.length-1:R.value>0&&R.value--,le.value=me.value[R.value]||``}else if(e.key===`ArrowDown`){if(e.preventDefault(),R.value===-1)return;R.value<me.value.length-1?(R.value++,le.value=me.value[R.value]||``):(R.value=-1,le.value=``)}}function xe(){if(d.value.length===0)return;let e=d.value.map(e=>`[${new Date(e.timestamp).toISOString()}] ${e.level.toUpperCase().padEnd(5)} ${e.message}`),t=new Blob([e.join(`
|
|
1
|
+
import{$ as e,$r as t,At as n,Bi as r,Bt as i,C as a,Ci as o,Di as s,Dn as c,En as l,Et as u,G as d,Gi as f,H as p,In as m,J as h,Ji as g,Kr as _,Mn as v,Ot as y,Q as b,Qr as x,R as S,Ti as C,U as w,Ur as T,Vt as E,W as ee,Wi as D,Wr as O,Xr as k,Yr as A,Yt as j,Z as te,Zi as M,Zr as N,Zt as ne,an as re,c as ie,dn as ae,et as oe,fn as se,gi as ce,ha as P,ia as le,ii as F,in as ue,jn as de,ki as fe,la as I,li as pe,mn as L,na as me,oi as R,on as z,ot as he,ri as B,rt as ge,sa as _e,si as ve,tt as V,un as ye,va as H,wn as be,zr as xe}from"./index-a1iwaPG1.js";import"./cloud-session-tALRHewK.js";import"./src-CXyRAwtR.js";import{t as Se}from"./message-DZ0RuJXv.js";import"./ProcessControls-t9skQ_zd.js";import{t as Ce}from"./ServiceControlsBar-qiCaxnab.js";import{n as we,t as Te}from"./column-BAToyYIb.js";import{n as Ee}from"./plus-CP-dlA9U.js";import{t as De}from"./checkbox-D5bej0ao.js";import{n as Oe,t as ke}from"./autocomplete-DpSrZtZQ.js";import{a as Ae,i as je,n as Me,r as Ne,t as Pe}from"./tabpanel-C0aUv4Tp.js";import{n as Fe,t as Ie}from"./VariablesTable-IvhXwdsn.js";import{t as Le}from"./uuid-B3B8HIK9.js";import"./src-C77fweBS.js";import"./w3c-keyname-nn0G3QC2.js";import"./SendToChatDialog-BpJetpLA.js";import{n as Re,t as ze}from"./ProcessMetrics-DL00NyoX.js";import{t as Be}from"./LogViewer-ChElXmMu.js";import{t as Ve}from"./divider-D-QC8_57.js";import{t as He}from"./settings.store-BfNYjk_y.js";import{t as Ue}from"./WikiView-BZvgaTQp.js";var We={key:0,class:`log-details`},Ge={class:`log-details__section`},Ke={class:`log-details__label`},qe={class:`log-details__value log-details__value--box`},Je={class:`log-details__section`},Ye={class:`log-details__label`},Xe={class:`log-details__value log-details__value--box log-details__value--code`},Ze={class:`log-details__section`},Qe={class:`log-details__label`},$e={class:`log-details__value log-details__value--box`},et={class:`log-details__process`},tt={class:`log-details__section`},nt={class:`log-details__label`},rt={class:`log-details__value log-details__value--box`},it={class:`log-details__section`},at={class:`log-details__label`},ot={class:`log-details__value log-details__value--box`},st={key:0,class:`log-details__section`},ct={class:`log-details__label`},lt={class:`log-details__value log-details__value--box`},ut={key:1,class:`log-details__section`},dt={class:`log-details__label`},ft={class:`log-details__value log-details__value--box log-details__value--code`},pt=ye(R({__name:`LogDetailsDrawer`,props:{visible:{type:Boolean},log:{}},emits:[`update:visible`,`view-process`],setup(e,{emit:n}){let r=e,{t:i}=m(),a=n,o=A(()=>{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`)}`}),c=A(()=>r.log?r.log.level.charAt(0).toUpperCase()+r.log.level.slice(1):``),l=A(()=>!r.log||r.log.pid==null?i(`logDetails.notAvailable`):String(r.log.pid));function u(){r.log&&a(`view-process`,r.log.processId)}function d(){a(`update:visible`,!1)}return(n,r)=>(s(),N(H(ae),{visible:e.visible,position:`right`,header:H(i)(`logDetails.header`),style:{width:`440px`},"onUpdate:visible":d},{default:D(()=>[e.log?(s(),t(`div`,We,[k(`div`,Ge,[k(`div`,Ke,M(H(i)(`logDetails.type`)),1),k(`div`,qe,M(c.value),1)]),k(`div`,Je,[k(`div`,Ye,M(H(i)(`logDetails.rawMessage`)),1),k(`div`,Xe,M(e.log.raw),1)]),k(`div`,Ze,[k(`div`,Qe,M(H(i)(`logDetails.serviceId`)),1),k(`div`,$e,[k(`div`,et,[k(`span`,null,M(e.log.processId),1),F(H(L),{label:H(i)(`logDetails.viewProcess`),icon:`pi pi-external-link`,size:`small`,outlined:``,onClick:u},null,8,[`label`])])])]),k(`div`,tt,[k(`div`,nt,M(H(i)(`logDetails.pid`)),1),k(`div`,rt,M(l.value),1)]),k(`div`,it,[k(`div`,at,M(H(i)(`logDetails.timestamp`)),1),k(`div`,ot,M(o.value),1)]),e.log.stream?(s(),t(`div`,st,[k(`div`,ct,M(H(i)(`logDetails.stream`)),1),k(`div`,lt,M(e.log.stream),1)])):x(``,!0),e.log.metadata&&Object.keys(e.log.metadata).length>0?(s(),t(`div`,ut,[k(`div`,dt,M(H(i)(`logDetails.metadata`)),1),k(`div`,ft,M(JSON.stringify(e.log.metadata,null,2)),1)])):x(``,!0)])):x(``,!0)]),_:1},8,[`visible`,`header`]))}}),[[`__scopeId`,`data-v-5781eb9d`]]),mt=500,ht=5,gt=ge;function _t(e){return e+Math.random()*e*.3}function vt(e,t){let n=I([]),a=I(!1),o=null,s=0,c=null,l=i(()=>{s=0,a.value||S()}),u=[],d=null,f=I(0),p=I(0),m=0,h=0,g=null;function _(){g||=setInterval(()=>{f.value=m,p.value=h,m=0,h=0},1e3)}function v(){g&&=(clearInterval(g),null),f.value=0,p.value=0,m=0,h=0}function y(){if(d=null,u.length===0)return;let e=u;u=[],h+=e.length;let t=[...n.value,...e];t.length>mt&&(t=t.slice(t.length-mt)),n.value=t}function b(){!e.value||!t.value||(a.value=!0,o=E.process.onLog.subscribe({agentId:e.value,processId:t.value},{onData(e){let t=e;if(s=0,j(`connected`),t.some(e=>e.__clearLogBuffer)){n.value=[],u=[];return}m+=t.length,u.push(...t),d===null&&(d=requestAnimationFrame(y))},onError(e){console.error(`[useLogStream] Subscription error:`,e.message),a.value=!1,o=null,x()}}))}function x(){if(s>=ht){console.warn(`[useLogStream] Max retries (${ht}) reached`),j(`disconnected`);return}j(`reconnecting`);let e=_t(gt*2**s);s++,c=setTimeout(()=>{c=null,S()},e)}async function S(){if(!a.value&&!(!e.value||!t.value)){s=0;try{let r=await E.process.logs.query({agentId:e.value,processId:t.value});r.length>mt&&(r=r.slice(r.length-mt)),n.value=r,j(`connected`)}catch{}b()}}function w(){c&&=(clearTimeout(c),null),d!==null&&(cancelAnimationFrame(d),d=null),u=[],v(),o&&=(o.unsubscribe(),null),a.value=!1,s=0,n.value=[]}return r([e,t],([e,t],[n,r])=>{(e!==n||t!==r)&&(a.value&&w(),S())}),C(()=>{l(),w()}),{logs:n,isStreaming:a,start:S,stop:w,receivedPerSec:f,flushedPerSec:p,startStats:_,stopStats:v}}var yt={class:`service-terminal__toolbar`},bt={class:`service-terminal__toolbar-left`},xt={key:0,class:`pid-option`},St={key:1,class:`pid-option`},Ct={key:0,class:`pi pi-circle-fill pid-status-icon pid-status-icon--active`,style:{"margin-right":`0.5rem`}},wt={key:1,class:`pi pi-circle-fill pid-status-icon pid-status-icon--stopped`,style:{"margin-right":`0.5rem`}},Tt={class:`pid-option`},Et={key:0,class:`pi pi-list`,style:{"margin-right":`0.5rem`}},Dt=[`title`],Ot=[`title`],kt={class:`service-terminal__toolbar-right`},At={class:`service-terminal__content`,"data-testid":`service-terminal-content`},jt={key:1,class:`service-terminal__shortcuts`},Mt={class:`service-terminal__command-input`},Nt={class:`service-terminal__bottom`},Pt=`runeya_command_history_`,Ft=50,It=ye(R({__name:`ServiceTerminal`,props:{service:{},processes:{}},setup(e){let{t:n}=m(),i=e,a=A(()=>i.processes.find(e=>e.state===`running`||e.state===`starting`)??i.processes[0]??null),c=A(()=>a.value?.agentId??``),l=A(()=>a.value?.id??``),u=v(),{logs:d,isStreaming:f,start:p,stop:h,receivedPerSec:y,flushedPerSec:b,startStats:S,stopStats:w}=vt(c,l),T=I(!1);r(T,e=>{e?S():w()});function ee(e){e.ctrlKey&&e.shiftKey&&(e.key===`*`||e.key===`µ`)&&(e.preventDefault(),T.value=!T.value)}let O=A(()=>{let e=new Map;return d.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=i.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())}),j=A(()=>je.value===`all`?d.value:d.value.filter(e=>e.pid===je.value)),te=A(()=>O.value.filter(e=>e.isActive).length),ie=A(()=>{let e=[{label:n(`serviceTerminal.allProcesses`),value:`all`,badge:te.value>0?`${te.value} ${n(`serviceTerminal.active`)}`:void 0,isActive:void 0}];return O.value.forEach(({pid:t,logCount:n,isActive:r})=>{e.push({label:`PID: ${t}`,value:t,badge:`${n} logs`,isActive:r})}),e});A(()=>i.processes.filter(e=>e.state===`running`).length);async function ae(){if(a.value)try{await E.process.clearLogBuffer.mutate({agentId:a.value.agentId,processId:a.value.id}),d.value=[]}catch(e){u.add({severity:`error`,summary:n(`serviceTerminal.error`),detail:e.message??n(`serviceTerminal.failedToClearLogs`),life:5e3})}}let oe=A(()=>i.service.shortcuts??[]),se=I(new Set);async function P(e){let t=a.value?.agentId??i.service.agentId,r=a.value?.id??i.service.id;if(!t){u.add({severity:`warn`,summary:n(`serviceTerminal.noAgent`),detail:n(`serviceTerminal.noAgentDesc`),life:3e3});return}if(se.value.has(e.id)){try{await E.process.cancelShortcut.mutate({agentId:t,processId:r,shortcutId:e.id})}catch{}return}se.value=new Set([...se.value,e.id]);try{await E.process.executeShortcut.mutate({agentId:t,processId:r,shortcut:e})}catch(e){u.add({severity:`error`,summary:n(`serviceTerminal.shortcutFailed`),detail:e.message??n(`serviceTerminal.shortcutFailed`),life:5e3})}finally{let t=new Set(se.value);t.delete(e.id),se.value=t}}let le=I(``),ue=I(new Set),de=A(()=>ue.value.size>0),pe=I(null),me=I([]),R=I(-1),z=`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(`,`),he=I([]);function B(e){let t=e.query.toLowerCase().trim();if(!t||!le.value.trim()){he.value=[];return}let n=[...me.value.slice().reverse(),...z],r=new Set;he.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(Pt+i.service.id);e&&(me.value=JSON.parse(e))}catch{me.value=[]}}function _e(){try{localStorage.setItem(Pt+i.service.id,JSON.stringify(me.value))}catch{}}function ve(e){me.value[me.value.length-1]!==e&&(me.value=[...me.value,e],me.value.length>Ft&&(me.value=me.value.slice(-Ft)),_e())}async function V(){let e=a.value?.agentId??i.service.agentId,t=a.value?.id??i.service.id;if(e)try{await E.process.cancelAdHocCommand.mutate({agentId:e,processId:t})}catch{}}async function ye(){if(!le.value.trim())return;let e=a.value?.agentId??i.service.agentId,t=a.value?.id??i.service.id;if(!e){u.add({severity:`warn`,summary:n(`serviceTerminal.noAgent`),detail:n(`serviceTerminal.noAgentDesc`),life:3e3});return}let r=Le(),o=le.value.trim();ve(o),le.value=``,he.value=[],R.value=-1,ue.value=new Set([...ue.value,r]);try{await E.process.executeAdHocCommand.mutate({agentId:e,processId:t,command:o,commandId:r})}catch(e){u.add({severity:`error`,summary:n(`serviceTerminal.commandFailed`),detail:e.message??n(`serviceTerminal.commandFailed`),life:5e3})}finally{let e=new Set(ue.value);e.delete(r),ue.value=e,ce(()=>{document.querySelector(`.service-terminal__input`)?.focus()})}}function be(e){if(e.key===`Enter`&&!e.shiftKey){e.preventDefault(),ye();return}if(e.key===`ArrowUp`){if(e.preventDefault(),me.value.length===0)return;R.value===-1?R.value=me.value.length-1:R.value>0&&R.value--,le.value=me.value[R.value]||``}else if(e.key===`ArrowDown`){if(e.preventDefault(),R.value===-1)return;R.value<me.value.length-1?(R.value++,le.value=me.value[R.value]||``):(R.value=-1,le.value=``)}}function xe(){if(d.value.length===0)return;let e=d.value.map(e=>`[${new Date(e.timestamp).toISOString()}] ${e.level.toUpperCase().padEnd(5)} ${e.message}`),t=new Blob([e.join(`
|
|
2
2
|
`)],{type:`text/plain`}),n=URL.createObjectURL(t),r=document.createElement(`a`);r.href=n,r.download=`${i.service.name}-${new Date().toISOString().slice(0,19).replaceAll(`:`,`-`)}.log`,document.body.appendChild(r),r.click(),document.body.removeChild(r),URL.revokeObjectURL(n)}let Se=I(0),we=0,Te=null,Ee=null;r(a,e=>{if(!(e&&(e.state===`running`||e.state===`starting`))){Te&&=(clearInterval(Te),null),Ee=null,Se.value=e?.uptime??0;return}let t=e.uptime??0;e.id!==Ee&&(Te&&=(clearInterval(Te),null),Ee=e.id,we=e.startedAt?new Date(e.startedAt).getTime():Date.now()-t,Se.value=Date.now()-we,Te=setInterval(()=>{Se.value=Date.now()-we},1e3))},{immediate:!0});let De=I(!0),Oe=I(null),Ae=I(!1),je=I(`all`),Me=I(!1);function Ne(){Me.value=!Me.value}o(()=>{ge(),a.value&&p(),window.addEventListener(`keydown`,ee)}),C(()=>{h(),window.removeEventListener(`keydown`,ee),Te&&clearInterval(Te)});function Pe(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 Fe(e){Oe.value=e,Ae.value=!0}function Ie(e){Ae.value=!1,u.add({severity:`info`,summary:`Process`,detail:`Process ID: ${e}`,life:3e3})}return(r,o)=>(s(),t(`div`,{class:g([`service-terminal`,{"service-terminal--fullscreen":Me.value}]),"data-testid":`service-terminal`},[Me.value?(s(),N(Ce,{key:0,service:e.service,processes:e.processes},null,8,[`service`,`processes`])):x(``,!0),k(`div`,yt,[k(`div`,bt,[F(H(L),{label:H(n)(`serviceTerminal.logs`),severity:De.value?`primary`:`secondary`,text:``,size:`small`,onClick:o[0]||=e=>De.value=!0},null,8,[`label`,`severity`]),F(H(ne),{modelValue:je.value,"onUpdate:modelValue":o[1]||=e=>je.value=e,options:ie.value,"option-label":`label`,"option-value":`value`,class:`service-terminal__pid-selector`},{value:D(e=>[e.value===`all`?(s(),t(`div`,xt,[o[5]||=k(`i`,{class:`pi pi-list`,style:{"margin-right":`0.5rem`}},null,-1),k(`span`,null,M(H(n)(`serviceTerminal.allProcesses`)),1),te.value>0?(s(),N(H(re),{key:0,value:`${te.value} ${H(n)(`serviceTerminal.active`)}`,severity:`secondary`,class:`pid-badge`},null,8,[`value`])):x(``,!0)])):(s(),t(`div`,St,[ie.value.find(t=>t.value===e.value)?.isActive?(s(),t(`i`,Ct)):(s(),t(`i`,wt)),k(`span`,null,`PID: `+M(e.value),1)]))]),option:D(e=>[k(`div`,Tt,[e.option.value===`all`?(s(),t(`i`,Et)):e.option.isActive?(s(),t(`i`,{key:1,class:`pi pi-circle-fill pid-status-icon pid-status-icon--active`,title:H(n)(`serviceTerminal.running`)},null,8,Dt)):(s(),t(`i`,{key:2,class:`pi pi-circle-fill pid-status-icon pid-status-icon--stopped`,title:H(n)(`serviceTerminal.stopped`)},null,8,Ot)),k(`span`,null,M(e.option.label),1),e.option.badge?(s(),N(H(re),{key:3,value:e.option.badge,severity:`secondary`,class:`pid-badge`},null,8,[`value`])):x(``,!0)])]),_:1},8,[`modelValue`,`options`])]),k(`div`,kt,[F(H(L),{icon:Me.value?`pi pi-window-minimize`:`pi pi-window-maximize`,text:``,rounded:``,size:`small`,title:Me.value?H(n)(`serviceTerminal.exitFullscreen`):H(n)(`serviceTerminal.fullscreen`),onClick:Ne},null,8,[`icon`,`title`]),F(H(L),{icon:`pi pi-download`,text:``,rounded:``,size:`small`,title:H(n)(`serviceTerminal.downloadLogs`),disabled:H(d).length===0,onClick:xe},null,8,[`title`,`disabled`]),F(H(L),{icon:`pi pi-trash`,text:``,rounded:``,size:`small`,title:H(n)(`serviceTerminal.clearLogs`),disabled:H(d).length===0,onClick:ae},null,8,[`title`,`disabled`])])]),k(`div`,At,[F(Be,{logs:j.value,loading:!1,"received-per-sec":H(y),"flushed-per-sec":H(b),"show-stats":T.value,"service-label":i.service.label||i.service.name,onLogClick:Fe},null,8,[`logs`,`received-per-sec`,`flushed-per-sec`,`show-stats`,`service-label`])]),oe.value.length>0?(s(),t(`div`,jt,[(s(!0),t(_,null,fe(oe.value,e=>(s(),N(H(L),{key:e.id,label:e.label||e.command,"data-shortcut-id":e.id,class:`shortcut-badge`,icon:se.value.has(e.id)?`pi pi-stop`:`pi pi-play`,size:`small`,outlined:!se.value.has(e.id),severity:se.value.has(e.id)?`danger`:void 0,onClick:t=>P(e)},null,8,[`label`,`data-shortcut-id`,`icon`,`outlined`,`severity`,`onClick`]))),128))])):x(``,!0),k(`div`,Mt,[o[6]||=k(`span`,{class:`service-terminal__prompt`,"data-testid":`terminal-prompt`},`>`,-1),F(H(ke),{ref_key:`adHocCommandInput`,ref:pe,modelValue:le.value,"onUpdate:modelValue":o[2]||=e=>le.value=e,suggestions:he.value,class:`service-terminal__autocomplete`,"input-class":`service-terminal__input`,placeholder:H(n)(`serviceTerminal.enterCommand`),"aria-label":H(n)(`serviceTerminal.enterCommand`),disabled:!(a.value?.agentId??i.service.agentId),"data-testid":`terminal-command-input`,onComplete:B,onKeydown:be},null,8,[`modelValue`,`suggestions`,`placeholder`,`aria-label`,`disabled`]),F(H(L),{icon:de.value?`pi pi-stop`:`pi pi-play`,severity:de.value?`danger`:void 0,size:`small`,"data-testid":`terminal-run-btn`,disabled:!(a.value?.agentId??i.service.agentId)||!le.value.trim()&&!de.value,onClick:o[3]||=e=>de.value?V():ye()},null,8,[`icon`,`severity`,`disabled`])]),k(`div`,Nt,[a.value?(s(),N(H(re),{key:0,icon:`pi pi-server`,value:a.value.agentId.slice(0,8),severity:`secondary`,class:`service-terminal__pill`},null,8,[`value`])):x(``,!0),e.service.cwd?(s(),N(H(re),{key:1,icon:`pi pi-folder`,value:e.service.cwd,severity:`secondary`,class:`service-terminal__pill`},null,8,[`value`])):x(``,!0),a.value&&(a.value.state===`running`||a.value.state===`starting`)?(s(),N(H(re),{key:2,icon:`pi pi-clock`,value:Pe(Se.value/1e3),severity:`secondary`,class:`service-terminal__pill`},null,8,[`value`])):x(``,!0)]),F(pt,{visible:Ae.value,"onUpdate:visible":o[4]||=e=>Ae.value=e,log:Oe.value,onViewProcess:Ie},null,8,[`visible`,`log`])],2))}}),[[`__scopeId`,`data-v-8ce2178d`]]),Lt=5,Rt=ge;function zt(e){return e+Math.random()*e*.3}function Bt(t,n){let i=I(null),a=I(!1),o=I(!1),s=null,c=0,l=null;async function u(){if(!a.value){o.value=!0;try{i.value=await E.process.metrics.query({agentId:t.value,processId:n.value})}catch(t){console.error(`Failed to fetch initial metrics:`,e(t))}finally{o.value=!1}d()}}function d(){a.value=!0,s=E.process.onMetrics.subscribe({agentId:t.value,processId:n.value},{onData(e){c=0,j(`connected`),i.value=e},onError(e){console.error(`Metrics stream error:`,e),a.value=!1,s=null,f()}})}function f(){if(c>=Lt){console.warn(`Metrics stream: max retries (${Lt}) reached, giving up`),j(`disconnected`);return}j(`reconnecting`);let e=zt(Rt*2**c);c++,l=setTimeout(()=>{l=null,d()},e)}function p(){l&&=(clearTimeout(l),null),s&&=(s.unsubscribe(),null),a.value=!1,c=0}return r([t,n],([e,t],[n,r])=>{(e!==n||t!==r)&&a.value&&(p(),u())}),C(()=>{p()}),{metrics:i,isStreaming:a,isLoading:o,start:u,stop:p}}var Vt={class:`service-metrics`,"data-testid":`service-metrics`},Ht={key:1,class:`service-metrics__skeleton`},Ut={class:`metric-skeleton`},Wt={class:`metric-skeleton`},Gt={key:2,class:`service-metrics__no-data`},Kt={key:1,class:`service-metrics__no-process`},qt=ye(R({__name:`ServiceMetrics`,props:{service:{},processes:{}},setup(e){let n=e,r=A(()=>n.processes.find(e=>e.state===`running`||e.state===`starting`)??n.processes[0]??null),i=A(()=>r.value?.agentId??``),a=A(()=>r.value?.id??``),{t:c}=m(),{metrics:l,isLoading:u,start:d,stop:f}=Bt(i,a);return o(()=>{r.value&&d()}),C(()=>{f()}),(e,n)=>(s(),t(`div`,Vt,[r.value?(s(),t(_,{key:0},[H(l)?(s(),N(ze,{key:0,cpu:H(l).cpu,memory:H(l).memory},null,8,[`cpu`,`memory`])):H(u)?(s(),t(`div`,Ht,[k(`div`,Ut,[F(H(Re),{width:`4rem`,height:`0.75rem`,class:`mb-2`}),F(H(Re),{width:`3rem`,height:`1.75rem`,class:`mb-3`}),F(H(Re),{width:`100%`,height:`6px`,"border-radius":`4px`})]),k(`div`,Wt,[F(H(Re),{width:`4rem`,height:`0.75rem`,class:`mb-2`}),F(H(Re),{width:`3rem`,height:`1.75rem`,class:`mb-3`}),F(H(Re),{width:`6rem`,height:`0.65rem`})])])):(s(),t(`div`,Gt,M(H(c)(`serviceMetrics.noData`)),1))],64)):(s(),t(`div`,Kt,[n[0]||=k(`i`,{class:`pi pi-info-circle`},null,-1),k(`span`,null,M(H(c)(`serviceMetrics.notRunning`)),1)]))]))}}),[[`__scopeId`,`data-v-94f5993b`]]),Jt=`runeya:debug`,Yt=I(localStorage.getItem(Jt)===`true`);function Xt(){function e(){Yt.value=!Yt.value,localStorage.setItem(Jt,String(Yt.value))}return{isDebug:Yt,toggle:e}}var Zt={class:`config-general`},Qt={class:`config-card`},$t={class:`config-card__header`},en={class:`config-card`},tn={class:`config-card__header`},nn={class:`config-card__hint`},rn={class:`config-card`},an={class:`config-card`},on={class:`config-card__header`},sn={class:`config-card__hint`},cn={class:`config-card`},ln={class:`config-card__header`},un={class:`config-card__hint`},dn={class:`config-card`},fn={class:`config-card__header`},pn={class:`config-card__hint`},mn={class:`config-card`},hn={class:`config-card__header`},gn={class:`config-card__hint`},_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__hint`},wn={class:`config-card`},Tn={class:`config-card__header`},En={class:`config-card__hint`},Dn={class:`config-meta`},On={class:`config-card config-card--inline`},kn={class:`config-card__header`},An={class:`config-card config-card--inline`},jn={class:`config-card__header`},Mn=ye(R({__name:`ServiceConfigGeneral`,props:{service:{}},emits:[`save`],setup(e,{emit:n}){let{t:i}=m(),a=b(),o=A(()=>{let e=new Set;for(let t of a.services)for(let n of t.groups??[])e.add(n);return[...e].sort((e,t)=>e.localeCompare(t))}),c=I([]);function l(e){let t=e.query.trim().toLowerCase(),n=new Set(h.value.groups);c.value=o.value.filter(e=>!n.has(e)&&(!t||e.toLowerCase().includes(t)))}function u(e){let t=e.target,n=t.value.trim();n&&(h.value.groups.includes(n)||(h.value.groups=[...h.value.groups,n],w()),t.value=``,c.value=[])}let d=e,f=n;function p(e){return Object.entries(e??{}).map(([e,t])=>({key:e,value:t}))}let h=I({name:d.service.name,cwd:d.service.cwd??``,ports:(d.service.ports??[]).map(String),groups:[...d.service.groups??[]],description:d.service.description??``,docsPath:d.service.docsPath??``,url:d.service.url??``,openapiUrl:d.service.openapiUrl??``,gitRemote:d.service.git?.remote??``,gitHome:d.service.git?.home??``,autoRestart:d.service.autoRestart,clearLogsOnStart:d.service.clearLogsOnStart??!1}),g=I(p(d.service.meta));r(()=>d.service,e=>{h.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},g.value=p(e.meta)});function v(){g.value=[...g.value,{key:``,value:``}]}function y(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}:r)}function S(){let e={};for(let{key:t,value:n}of g.value){let r=t.trim();r&&(e[r]=n)}return{name:h.value.name,cwd:h.value.cwd||null,ports:h.value.ports.map(Number).filter(e=>e>0&&e<=65535),groups:h.value.groups,description:h.value.description,docsPath:h.value.docsPath??``,url:h.value.url,openapiUrl:h.value.openapiUrl,git:h.value.gitRemote||h.value.gitHome?{remote:h.value.gitRemote||void 0,home:h.value.gitHome||void 0}:null,autoRestart:h.value.autoRestart,clearLogsOnStart:h.value.clearLogsOnStart,meta:Object.keys(e).length>0?e:null}}let C=null;function w(){C&&clearTimeout(C),C=setTimeout(()=>{f(`save`,S()),C=null},150)}return(e,n)=>(s(),t(`div`,Zt,[k(`div`,Qt,[k(`div`,$t,[n[12]||=k(`i`,{class:`pi pi-tag`},null,-1),k(`span`,null,M(H(i)(`serviceConfigGeneral.name`)),1)]),F(H(z),{modelValue:h.value.name,"onUpdate:modelValue":n[0]||=e=>h.value.name=e,class:`config-card__input`,onBlur:w,onKeydown:T(O(w,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])]),k(`div`,en,[k(`div`,tn,[n[13]||=k(`i`,{class:`pi pi-folder`},null,-1),k(`span`,null,M(H(i)(`serviceConfigGeneral.workingDirectory`)),1)]),F(H(z),{modelValue:h.value.cwd,"onUpdate:modelValue":n[1]||=e=>h.value.cwd=e,class:`config-card__input`,placeholder:`.`,onBlur:w,onKeydown:T(O(w,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`]),k(`small`,nn,M(H(i)(`serviceConfigGeneral.cwdHint`)),1)]),k(`div`,rn,[n[14]||=k(`div`,{class:`config-card__header`},[k(`i`,{class:`pi pi-file-edit`}),k(`span`,null,`Dossier de documentation (wiki)`)],-1),F(H(z),{modelValue:h.value.docsPath,"onUpdate:modelValue":n[2]||=e=>h.value.docsPath=e,class:`config-card__input`,placeholder:`(défaut : même que cwd)`,onBlur:w,onKeydown:T(O(w,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`]),n[15]||=k(`small`,{class:`config-card__hint`},[B(` Chemin relatif au cwd du service (ex. `),k(`code`,null,`docs`),B(`) ou absolu. Si vide, utilise le cwd. `)],-1)]),k(`div`,an,[k(`div`,on,[n[16]||=k(`i`,{class:`pi pi-globe`},null,-1),k(`span`,null,M(H(i)(`serviceConfigGeneral.ports`)),1)]),F(H(ke),{modelValue:h.value.ports,"onUpdate:modelValue":n[3]||=e=>h.value.ports=e,multiple:``,typeahead:!1,class:`config-card__input`,placeholder:H(i)(`serviceConfigGeneral.portsPlaceholder`),onChange:w},null,8,[`modelValue`,`placeholder`]),k(`small`,sn,M(H(i)(`serviceConfigGeneral.portsHint`)),1)]),k(`div`,cn,[k(`div`,ln,[n[17]||=k(`i`,{class:`pi pi-th-large`},null,-1),k(`span`,null,M(H(i)(`serviceConfigGeneral.groups`)),1)]),F(H(ke),{modelValue:h.value.groups,"onUpdate:modelValue":n[4]||=e=>h.value.groups=e,multiple:``,suggestions:c.value,"complete-on-focus":!0,class:`config-card__input`,placeholder:H(i)(`serviceConfigGeneral.groupsPlaceholder`),onComplete:l,onChange:w,onKeydown:T(u,[`enter`])},null,8,[`modelValue`,`suggestions`,`placeholder`]),k(`small`,un,M(H(i)(`serviceConfigGeneral.groupsHint`)),1)]),k(`div`,dn,[k(`div`,fn,[n[18]||=k(`i`,{class:`pi pi-info-circle`},null,-1),k(`span`,null,M(H(i)(`serviceConfigGeneral.description`)),1)]),F(H(ue),{modelValue:h.value.description,"onUpdate:modelValue":n[5]||=e=>h.value.description=e,class:`config-card__input`,rows:2,onBlur:w},null,8,[`modelValue`]),k(`small`,pn,M(H(i)(`serviceConfigGeneral.descriptionHint`)),1)]),k(`div`,mn,[k(`div`,hn,[n[19]||=k(`i`,{class:`pi pi-external-link`},null,-1),k(`span`,null,M(H(i)(`serviceConfigGeneral.url`)),1)]),F(H(z),{modelValue:h.value.url,"onUpdate:modelValue":n[6]||=e=>h.value.url=e,class:`config-card__input`,placeholder:`https://...`,onBlur:w,onKeydown:T(O(w,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`]),k(`small`,gn,M(H(i)(`serviceConfigGeneral.urlHint`)),1)]),k(`div`,_n,[k(`div`,vn,[n[20]||=k(`i`,{class:`pi pi-book`},null,-1),k(`span`,null,M(H(i)(`serviceConfigGeneral.openapiUrl`)),1)]),F(H(z),{modelValue:h.value.openapiUrl,"onUpdate:modelValue":n[7]||=e=>h.value.openapiUrl=e,class:`config-card__input`,placeholder:`https://.../swagger.json`,onBlur:w,onKeydown:T(O(w,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`]),k(`small`,yn,M(H(i)(`serviceConfigGeneral.openapiUrlHint`)),1)]),k(`div`,bn,[k(`div`,xn,[n[21]||=k(`i`,{class:`pi pi-github`},null,-1),k(`span`,null,M(H(i)(`serviceConfigGeneral.git`)),1)]),F(H(z),{modelValue:h.value.gitRemote,"onUpdate:modelValue":n[8]||=e=>h.value.gitRemote=e,class:`config-card__input`,placeholder:`git@github.com:org/repo.git`,onBlur:w,onKeydown:T(O(w,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`]),k(`small`,Sn,M(H(i)(`serviceConfigGeneral.gitRemoteHint`)),1),F(H(z),{modelValue:h.value.gitHome,"onUpdate:modelValue":n[9]||=e=>h.value.gitHome=e,class:`config-card__input`,style:{"margin-top":`0.5rem`},placeholder:`https://github.com/org/repo`,onBlur:w,onKeydown:T(O(w,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`]),k(`small`,Cn,M(H(i)(`serviceConfigGeneral.gitHomeHint`)),1)]),k(`div`,wn,[k(`div`,Tn,[n[22]||=k(`i`,{class:`pi pi-hashtag`},null,-1),k(`span`,null,M(H(i)(`serviceConfigGeneral.meta`)),1)]),k(`small`,En,M(H(i)(`serviceConfigGeneral.metaHint`)),1),k(`div`,Dn,[(s(!0),t(_,null,fe(g.value,(e,n)=>(s(),t(`div`,{key:n,class:`config-meta__row`},[F(H(z),{"model-value":e.key,placeholder:H(i)(`serviceConfigGeneral.metaKeyPlaceholder`),class:`config-meta__input`,"onUpdate:modelValue":e=>x(n,`key`,e),onBlur:w,onKeydown:T(O(w,[`prevent`]),[`enter`])},null,8,[`model-value`,`placeholder`,`onUpdate:modelValue`,`onKeydown`]),F(H(z),{"model-value":e.value,placeholder:H(i)(`serviceConfigGeneral.metaValuePlaceholder`),class:`config-meta__input config-meta__input--wide`,"onUpdate:modelValue":e=>x(n,`value`,e),onBlur:w,onKeydown:T(O(w,[`prevent`]),[`enter`])},null,8,[`model-value`,`placeholder`,`onUpdate:modelValue`,`onKeydown`]),F(H(L),{icon:`pi pi-trash`,severity:`danger`,text:``,rounded:``,size:`small`,onClick:()=>{y(n),w()}},null,8,[`onClick`])]))),128)),F(H(L),{label:H(i)(`serviceConfigGeneral.addEntry`),icon:`pi pi-plus`,severity:`secondary`,outlined:``,size:`small`,class:`config-meta__add`,onClick:v},null,8,[`label`])])]),k(`div`,On,[k(`div`,kn,[n[23]||=k(`i`,{class:`pi pi-refresh`},null,-1),k(`span`,null,M(H(i)(`serviceConfigGeneral.autoRestart`)),1)]),F(H(Oe),{modelValue:h.value.autoRestart,"onUpdate:modelValue":n[10]||=e=>h.value.autoRestart=e,onChange:w},null,8,[`modelValue`])]),k(`div`,An,[k(`div`,jn,[n[24]||=k(`i`,{class:`pi pi-trash`},null,-1),k(`span`,null,M(H(i)(`serviceConfigGeneral.clearLogs`)),1)]),F(H(Oe),{modelValue:h.value.clearLogsOnStart,"onUpdate:modelValue":n[11]||=e=>h.value.clearLogsOnStart=e,onChange:w},null,8,[`modelValue`])])]))}}),[[`__scopeId`,`data-v-e166143a`]]),Nn={class:`docker-config`},Pn={class:`docker-config__section`},Fn={for:`docker-mode-image`,class:`docker-config__section-title`},In={class:`docker-config__mode-toggle`},Ln={class:`docker-config__mode-option`},Rn={class:`docker-config__mode-option`},zn={key:0,class:`docker-config__section`},Bn={for:`docker-image`,class:`docker-config__label`},Vn={class:`docker-config__section`},Hn={class:`docker-config__section`},Un={for:`docker-build-context`,class:`docker-config__label`},Wn={class:`docker-config__section`},Gn={for:`docker-add-build-arg`,class:`docker-config__label`},Kn={class:`docker-config__kv-list`},qn={class:`docker-config__section`},Jn={for:`docker-target-stage`,class:`docker-config__label`},Yn={class:`docker-config__section`},Xn={for:`docker-user`,class:`docker-config__section-title`},Zn={class:`docker-config__section`},Qn={for:`docker-user`,class:`docker-config__label`},$n={class:`docker-config__section`},er={for:`docker-network-mode`,class:`docker-config__label`},tr={key:2,class:`docker-config__section`},nr={for:`docker-add-port`,class:`docker-config__label`},rr={class:`docker-config__list`},ir={class:`docker-config__section`},ar={for:`docker-add-volume`,class:`docker-config__label`},or={class:`docker-config__checkbox-row`},sr={for:`mountRootpath`,class:`docker-config__checkbox-label`},cr={class:`docker-config__list`},lr={class:`docker-config__section`},ur={class:`docker-config__checkbox-row`},dr={for:`useNativeCommand`,class:`docker-config__checkbox-label`},fr={key:0,class:`docker-config__shell-row`},pr={for:`docker-native-shell`,class:`docker-config__label`},mr={class:`docker-config__hint`},hr={key:1,class:`docker-config__mode-toggle docker-config__mode-toggle--indented`},gr={class:`docker-config__mode-option`},_r={class:`docker-config__mode-option`},vr={class:`docker-config__section`},yr={for:`docker-entrypoint`,class:`docker-config__label`},br={class:`docker-config__section`},xr={for:`docker-command`,class:`docker-config__label`},Sr={class:`docker-config__section`},Cr={for:`docker-add-bootstrap`,class:`docker-config__section-title`},wr={class:`docker-config__bootstrap-row`},Tr={class:`docker-config__bootstrap-field`},Er=[`for`],Dr={class:`docker-config__bootstrap-field`},Or=[`for`],kr={class:`docker-config__bootstrap-field docker-config__bootstrap-field--wide`},Ar=[`for`],jr={class:`docker-config__bootstrap-field`},Mr=[`for`],Nr={class:`docker-config__bootstrap-actions`},Pr={class:`docker-config__section`},Fr=ye(R({__name:`ServiceConfigDocker`,props:{service:{}},emits:[`save`],setup(e,{emit:n}){let{t:r}=m(),i=e,o=n,c=i.service.dockerConfig??{},l=I(c.dockerfile?`build`:`image`),u=I(c.image??``),d=I(c.dockerfile??``),p=I(c.buildContext??``),h=I(Object.entries(c.buildArgs??{}).map(([e,t])=>({key:e,value:t}))),g=I(c.targetStage??``),v=I(c.networkMode??`host`),y=I([...c.ports??[]]),b=I([...c.volumes??[]]),S=I(c.mountRootpath??!1),C=I(c.entrypoint??``),w=I(c.command??``),E=I(c.user??``),ee=I(c.useNativeCommand??!1),A=I(c.nativeCommandMode??`isolated`),j=I(c.nativeShell??`sh`),te=[{label:`sh (POSIX)`,value:`sh`},{label:`bash`,value:`bash`},{label:`zsh`,value:`zsh`},{label:`ash (Alpine)`,value:`ash`}],N=I([...c.bootstrapCommands??[]]),re=I(!1),ie=[{label:`Host (--network host)`,value:`host`},{label:`Bridge`,value:`bridge`}];function ae(){h.value=[...h.value,{key:``,value:``}]}function oe(e){h.value=h.value.filter((t,n)=>n!==e)}function ce(e,t,n){h.value=h.value.map((r,i)=>i===e?{...r,[t]:n}:r)}function P(){y.value=[...y.value,``]}function le(e){y.value=y.value.filter((t,n)=>n!==e)}function ue(e,t){y.value=y.value.map((n,r)=>r===e?t:n)}function de(){b.value=[...b.value,``]}function pe(e){b.value=b.value.filter((t,n)=>n!==e)}function me(e,t){b.value=b.value.map((n,r)=>r===e?t:n)}function R(){N.value=[...N.value,{id:Le(),label:`Bootstrap`,entrypoint:`/bin/sh`,command:`-c ""`,user:void 0}]}function he(e){N.value=N.value.filter((t,n)=>n!==e)}function ge(e,t,n){N.value=N.value.map((r,i)=>i===e?{...r,[t]:n===``?void 0:n}:r)}function _e(e,t){let n=[...N.value],r=e+t;r<0||r>=n.length||([n[e],n[r]]=[n[r],n[e]],N.value=n)}let ve=null;function V(){ve&&clearTimeout(ve),ve=setTimeout(()=>{let e={};for(let{key:t,value:n}of h.value)t.trim()&&(e[t.trim()]=n);o(`save`,{image:l.value===`image`&&u.value||void 0,dockerfile:l.value===`build`&&d.value||void 0,buildContext:p.value||void 0,buildArgs:e,targetStage:g.value||void 0,networkMode:v.value,ports:y.value.filter(Boolean),volumes:b.value.filter(Boolean),mountRootpath:S.value,entrypoint:C.value||void 0,command:w.value||void 0,user:E.value||void 0,useNativeCommand:ee.value,nativeCommandMode:A.value,nativeShell:j.value,bootstrapCommands:N.value}),ve=null},150)}function ye(e){he(e),V()}function be(e,t){_e(e,t),V()}function Se(e){oe(e),V()}function Ce(e){le(e),V()}function we(e){pe(e),V()}return(e,n)=>(s(),t(`div`,Nn,[k(`div`,Pn,[k(`label`,Fn,M(H(r)(`serviceConfigDocker.imageSource`)),1),k(`div`,In,[k(`label`,Ln,[f(k(`input`,{id:`docker-mode-image`,"onUpdate:modelValue":n[0]||=e=>l.value=e,type:`radio`,value:`image`,class:`docker-config__radio`,onChange:V},null,544),[[xe,l.value]]),B(` `+M(H(r)(`serviceConfigDocker.pullImage`)),1)]),k(`label`,Rn,[f(k(`input`,{"onUpdate:modelValue":n[1]||=e=>l.value=e,type:`radio`,value:`build`,class:`docker-config__radio`,onChange:V},null,544),[[xe,l.value]]),B(` `+M(H(r)(`serviceConfigDocker.buildDockerfile`)),1)])])]),l.value===`image`?(s(),t(`div`,zn,[k(`label`,Bn,M(H(r)(`serviceConfigDocker.image`)),1),F(H(z),{id:`docker-image`,modelValue:u.value,"onUpdate:modelValue":n[2]||=e=>u.value=e,placeholder:H(r)(`serviceConfigDocker.imagePlaceholder`),class:`docker-config__input`,onBlur:V,onKeydown:T(O(V,[`prevent`]),[`enter`])},null,8,[`modelValue`,`placeholder`,`onKeydown`])])):x(``,!0),l.value===`build`?(s(),t(_,{key:1},[k(`div`,Vn,[n[18]||=k(`label`,{for:`docker-dockerfile-btn`,class:`docker-config__label`},`Dockerfile`,-1),F(H(L),{id:`docker-dockerfile-btn`,label:H(r)(`serviceConfigDocker.editDockerfile`),icon:`pi pi-file-edit`,severity:`secondary`,outlined:``,size:`small`,onClick:n[3]||=e=>re.value=!0},null,8,[`label`]),F(H(se),{visible:re.value,"onUpdate:visible":n[6]||=e=>re.value=e,header:H(r)(`serviceConfigDocker.editDockerfile`),modal:``,style:{width:`800px`}},{footer:D(()=>[F(H(L),{label:H(r)(`serviceConfigDocker.closeDockerfile`),icon:`pi pi-times`,onClick:n[5]||=()=>{re.value=!1,V()}},null,8,[`label`])]),default:D(()=>[F(a,{modelValue:d.value,"onUpdate:modelValue":n[4]||=e=>d.value=e,language:`dockerfile`,style:{height:`400px`}},null,8,[`modelValue`])]),_:1},8,[`visible`,`header`])]),k(`div`,Hn,[k(`label`,Un,M(H(r)(`serviceConfigDocker.buildContext`)),1),F(H(z),{id:`docker-build-context`,modelValue:p.value,"onUpdate:modelValue":n[7]||=e=>p.value=e,placeholder:`.`,class:`docker-config__input`,onBlur:V,onKeydown:T(O(V,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])]),k(`div`,Wn,[k(`label`,Gn,M(H(r)(`serviceConfigDocker.buildArgs`)),1),k(`div`,Kn,[(s(!0),t(_,null,fe(h.value,(e,n)=>(s(),t(`div`,{key:n,class:`docker-config__kv-row`},[F(H(z),{"model-value":e.key,placeholder:H(r)(`serviceConfigDocker.argNamePlaceholder`),class:`docker-config__kv-input`,"onUpdate:modelValue":e=>ce(n,`key`,e),onBlur:V,onKeydown:T(O(V,[`prevent`]),[`enter`])},null,8,[`model-value`,`placeholder`,`onUpdate:modelValue`,`onKeydown`]),F(H(z),{"model-value":e.value,placeholder:H(r)(`serviceConfigDocker.argValuePlaceholder`),class:`docker-config__kv-input`,"onUpdate:modelValue":e=>ce(n,`value`,e),onBlur:V,onKeydown:T(O(V,[`prevent`]),[`enter`])},null,8,[`model-value`,`placeholder`,`onUpdate:modelValue`,`onKeydown`]),F(H(L),{icon:`pi pi-trash`,severity:`danger`,text:``,rounded:``,size:`small`,onClick:e=>Se(n)},null,8,[`onClick`])]))),128)),F(H(L),{id:`docker-add-build-arg`,label:H(r)(`serviceConfigDocker.addBuildArg`),icon:`pi pi-plus`,severity:`secondary`,outlined:``,size:`small`,onClick:ae},null,8,[`label`])])]),k(`div`,qn,[k(`label`,Jn,M(H(r)(`serviceConfigDocker.targetStage`)),1),F(H(z),{id:`docker-target-stage`,modelValue:g.value,"onUpdate:modelValue":n[8]||=e=>g.value=e,placeholder:H(r)(`serviceConfigDocker.targetStagePlaceholder`),class:`docker-config__input`,onBlur:V,onKeydown:T(O(V,[`prevent`]),[`enter`])},null,8,[`modelValue`,`placeholder`,`onKeydown`])])],64)):x(``,!0),F(H(Ve)),k(`div`,Yn,[k(`label`,Xn,M(H(r)(`serviceConfigDocker.runtimeConfig`)),1)]),k(`div`,Zn,[k(`label`,Qn,M(H(r)(`serviceConfigDocker.userGroup`)),1),F(H(z),{id:`docker-user`,modelValue:E.value,"onUpdate:modelValue":n[9]||=e=>E.value=e,placeholder:H(r)(`serviceConfigDocker.userGroupHint`),class:`docker-config__input`,onBlur:V,onKeydown:T(O(V,[`prevent`]),[`enter`])},null,8,[`modelValue`,`placeholder`,`onKeydown`])]),k(`div`,$n,[k(`label`,er,M(H(r)(`serviceConfigDocker.networkMode`)),1),F(H(ne),{"input-id":`docker-network-mode`,modelValue:v.value,"onUpdate:modelValue":n[10]||=e=>v.value=e,options:ie,"option-label":`label`,"option-value":`value`,class:`docker-config__select`,onChange:V},null,8,[`modelValue`])]),v.value===`bridge`?(s(),t(`div`,tr,[k(`label`,nr,M(H(r)(`serviceConfigDocker.portMappings`)),1),k(`div`,rr,[(s(!0),t(_,null,fe(y.value,(e,n)=>(s(),t(`div`,{key:n,class:`docker-config__list-row`},[F(H(z),{"model-value":e,placeholder:H(r)(`serviceConfigDocker.portPlaceholder`),class:`docker-config__input`,"onUpdate:modelValue":e=>ue(n,e),onBlur:V,onKeydown:T(O(V,[`prevent`]),[`enter`])},null,8,[`model-value`,`placeholder`,`onUpdate:modelValue`,`onKeydown`]),F(H(L),{icon:`pi pi-trash`,severity:`danger`,text:``,rounded:``,size:`small`,onClick:e=>Ce(n)},null,8,[`onClick`])]))),128)),F(H(L),{id:`docker-add-port`,label:H(r)(`serviceConfigDocker.addPort`),icon:`pi pi-plus`,severity:`secondary`,outlined:``,size:`small`,onClick:P},null,8,[`label`])])])):x(``,!0),k(`div`,ir,[k(`label`,ar,M(H(r)(`serviceConfigDocker.volumes`)),1),k(`div`,or,[F(H(De),{modelValue:S.value,"onUpdate:modelValue":n[11]||=e=>S.value=e,binary:!0,"input-id":`mountRootpath`,onChange:V},null,8,[`modelValue`]),k(`label`,sr,M(H(r)(`serviceConfigDocker.autoMount`)),1)]),k(`div`,cr,[(s(!0),t(_,null,fe(b.value,(e,n)=>(s(),t(`div`,{key:n,class:`docker-config__list-row`},[F(H(z),{"model-value":e,placeholder:H(r)(`serviceConfigDocker.volumePlaceholder`),class:`docker-config__input`,"onUpdate:modelValue":e=>me(n,e),onBlur:V,onKeydown:T(O(V,[`prevent`]),[`enter`])},null,8,[`model-value`,`placeholder`,`onUpdate:modelValue`,`onKeydown`]),F(H(L),{icon:`pi pi-trash`,severity:`danger`,text:``,rounded:``,size:`small`,onClick:e=>we(n)},null,8,[`onClick`])]))),128)),F(H(L),{id:`docker-add-volume`,label:H(r)(`serviceConfigDocker.addVolume`),icon:`pi pi-plus`,severity:`secondary`,outlined:``,size:`small`,onClick:de},null,8,[`label`])])]),F(H(Ve)),k(`div`,lr,[k(`div`,ur,[F(H(De),{modelValue:ee.value,"onUpdate:modelValue":n[12]||=e=>ee.value=e,binary:!0,"input-id":`useNativeCommand`,onChange:V},null,8,[`modelValue`]),k(`label`,dr,M(H(r)(`serviceConfigDocker.runNative`)),1)]),n[21]||=k(`span`,{class:`docker-config__hint`},` When enabled, the service command is executed directly inside the container (ignores CMD override below). `,-1),ee.value?(s(),t(`div`,fr,[k(`label`,pr,M(H(r)(`serviceConfigDocker.shell`)),1),F(H(ne),{"input-id":`docker-native-shell`,modelValue:j.value,"onUpdate:modelValue":n[13]||=e=>j.value=e,options:te,"option-label":`label`,"option-value":`value`,class:`docker-config__select docker-config__select--small`,editable:``,placeholder:H(r)(`serviceConfigDocker.shellPlaceholder`),onChange:V},null,8,[`modelValue`,`placeholder`]),k(`span`,mr,[B(M(H(r)(`serviceConfigDocker.shellHint`))+` (`,1),n[19]||=k(`code`,null,`shell -c '...'`,-1),n[20]||=B(`)`,-1)])])):x(``,!0),ee.value?(s(),t(`div`,hr,[k(`label`,gr,[f(k(`input`,{"onUpdate:modelValue":n[14]||=e=>A.value=e,type:`radio`,value:`isolated`,class:`docker-config__radio`,onChange:V},null,544),[[xe,A.value]]),B(` `+M(H(r)(`serviceConfigDocker.isolated`)),1)]),k(`label`,_r,[f(k(`input`,{"onUpdate:modelValue":n[15]||=e=>A.value=e,type:`radio`,value:`shared`,class:`docker-config__radio`,onChange:V},null,544),[[xe,A.value]]),B(` `+M(H(r)(`serviceConfigDocker.shared`)),1)])])):x(``,!0)]),ee.value?x(``,!0):(s(),t(_,{key:3},[n[22]||=k(`div`,{class:`docker-config__section`},[k(`label`,{for:`docker-entrypoint`,class:`docker-config__section-title`},`Override`)],-1),k(`div`,vr,[k(`label`,yr,M(H(r)(`serviceConfigDocker.entrypoint`)),1),F(H(z),{id:`docker-entrypoint`,modelValue:C.value,"onUpdate:modelValue":n[16]||=e=>C.value=e,placeholder:H(r)(`serviceConfigDocker.entrypointPlaceholder`),class:`docker-config__input`,onBlur:V,onKeydown:T(O(V,[`prevent`]),[`enter`])},null,8,[`modelValue`,`placeholder`,`onKeydown`])]),k(`div`,br,[k(`label`,xr,M(H(r)(`serviceConfigDocker.cmdOverride`)),1),F(H(z),{id:`docker-command`,modelValue:w.value,"onUpdate:modelValue":n[17]||=e=>w.value=e,placeholder:H(r)(`serviceConfigDocker.cmdPlaceholder`),class:`docker-config__input`,onBlur:V,onKeydown:T(O(V,[`prevent`]),[`enter`])},null,8,[`modelValue`,`placeholder`,`onKeydown`])])],64)),F(H(Ve)),k(`div`,Sr,[k(`label`,Cr,[B(M(H(r)(`serviceConfigDocker.bootstrapCommands`))+` `,1),n[23]||=k(`span`,{class:`docker-config__hint-inline`},` — run sequentially before the service starts`,-1)])]),(s(!0),t(_,null,fe(N.value,(e,n)=>(s(),t(`div`,{key:e.id,class:`docker-config__bootstrap-card`},[k(`div`,wr,[k(`div`,Tr,[k(`label`,{class:`docker-config__label`,for:`docker-bootstrap-label-${n}`},`Label`,8,Er),F(H(z),{id:`docker-bootstrap-label-${n}`,"model-value":e.label,placeholder:H(r)(`serviceConfigDocker.bootstrapLabelPlaceholder`),class:`docker-config__input`,"onUpdate:modelValue":e=>ge(n,`label`,e),onBlur:V,onKeydown:T(O(V,[`prevent`]),[`enter`])},null,8,[`id`,`model-value`,`placeholder`,`onUpdate:modelValue`,`onKeydown`])]),k(`div`,Dr,[k(`label`,{class:`docker-config__label`,for:`docker-bootstrap-entrypoint-${n}`},`Entrypoint`,8,Or),F(H(z),{id:`docker-bootstrap-entrypoint-${n}`,"model-value":e.entrypoint??``,placeholder:`/bin/sh`,class:`docker-config__input`,"onUpdate:modelValue":e=>ge(n,`entrypoint`,e),onBlur:V,onKeydown:T(O(V,[`prevent`]),[`enter`])},null,8,[`id`,`model-value`,`onUpdate:modelValue`,`onKeydown`])]),k(`div`,kr,[k(`label`,{class:`docker-config__label`,for:`docker-bootstrap-command-${n}`},`Command`,8,Ar),F(H(z),{id:`docker-bootstrap-command-${n}`,"model-value":e.command,placeholder:`-c "npm install"`,class:`docker-config__input`,"onUpdate:modelValue":e=>ge(n,`command`,e),onBlur:V,onKeydown:T(O(V,[`prevent`]),[`enter`])},null,8,[`id`,`model-value`,`onUpdate:modelValue`,`onKeydown`])]),k(`div`,jr,[k(`label`,{class:`docker-config__label`,for:`docker-bootstrap-user-${n}`},`User:Group`,8,Mr),F(H(z),{id:`docker-bootstrap-user-${n}`,"model-value":e.user??``,placeholder:H(r)(`serviceConfigDocker.userGroupHint`),class:`docker-config__input`,"onUpdate:modelValue":e=>ge(n,`user`,e),onBlur:V,onKeydown:T(O(V,[`prevent`]),[`enter`])},null,8,[`id`,`model-value`,`placeholder`,`onUpdate:modelValue`,`onKeydown`])]),k(`div`,Nr,[F(H(L),{icon:`pi pi-arrow-up`,text:``,rounded:``,size:`small`,disabled:n===0,onClick:e=>be(n,-1)},null,8,[`disabled`,`onClick`]),F(H(L),{icon:`pi pi-arrow-down`,text:``,rounded:``,size:`small`,disabled:n===N.value.length-1,onClick:e=>be(n,1)},null,8,[`disabled`,`onClick`]),F(H(L),{icon:`pi pi-times`,severity:`danger`,text:``,rounded:``,size:`small`,onClick:e=>ye(n)},null,8,[`onClick`])])])]))),128)),k(`div`,Pr,[F(H(L),{id:`docker-add-bootstrap`,label:H(r)(`serviceConfigDocker.addBootstrapCommand`),icon:`pi pi-plus`,severity:`secondary`,outlined:``,size:`small`,onClick:R},null,8,[`label`])])]))}}),[[`__scopeId`,`data-v-36904478`]]),Ir={class:`config-commands`},Lr={class:`config-commands__execution`},Rr={class:`config-card config-card--execution`},zr={class:`config-card__header`},Br={class:`config-card__hint`},Vr={class:`config-card config-card--execution`},Hr={class:`config-card__header`},Ur={key:0,class:`runner-option`},Wr={class:`runner-option`},Gr={class:`config-commands__tab-content`},Kr={key:0,class:`config-commands__empty`},qr={class:`config-commands__row`},Jr={class:`config-commands__field`},Yr=[`for`],Xr={class:`config-commands__field config-commands__field--wide`},Zr=[`for`],Qr={class:`config-commands__field`},$r=[`for`],ei={class:`config-commands__actions-cell`},ti={class:`config-commands__footer`},ni={class:`config-commands__tab-content`},ri=`__inherit__`,ii=ye(R({__name:`ServiceConfigCommands`,props:{service:{}},emits:[`save`,`dockerSave`],setup(e,{emit:n}){let i=e,a=n,{t:o}=m(),c=h(),l=null,u=I({agentId:i.service.agentId??ri,runner:i.service.runner});r(()=>i.service,e=>{u.value={agentId:e.agentId??ri,runner:e.runner}});let d=A(()=>[{label:o(`serviceConfigCommands.native`),value:`native`,icon:`pi pi-desktop`},{label:o(`serviceConfigCommands.docker`),value:`docker`,icon:`pi pi-box`}]),f=A(()=>d.value.find(e=>e.value===u.value.runner)?.icon??`pi pi-box`),p=A(()=>[{label:o(`serviceForm.agentInherit`),value:ri},...c.agents.map(e=>({label:`${e.config.name} (${e.status.connected?o(`serviceConfigCommands.online`):o(`serviceConfigCommands.offline`)})`,value:e.config.id}))]),v=I([...i.service.commands??[]]);r(()=>i.service,e=>{l||(v.value=[...e.commands??[]])});function y(){v.value=[...v.value,{id:Le(),label:``,command:``,cwd:void 0,shell:!0}]}function b(e){v.value=v.value.filter((t,n)=>n!==e)}function S(e,t,n){v.value=v.value.map((r,i)=>i===e?{...r,[t]:n===``?void 0:n}:r)}function C(){l&&clearTimeout(l),l=setTimeout(()=>{a(`save`,{agentId:u.value.agentId===ri?null:u.value.agentId||null,runner:u.value.runner,commands:v.value}),l=null},150)}function w(e){a(`dockerSave`,e)}function E(e){b(e),C()}return(n,r)=>(s(),t(`div`,Ir,[k(`div`,Lr,[k(`div`,Rr,[k(`div`,zr,[r[2]||=k(`i`,{class:`pi pi-server`},null,-1),k(`span`,null,M(H(o)(`serviceConfigCommands.agent`)),1)]),F(H(ne),{modelValue:u.value.agentId,"onUpdate:modelValue":r[0]||=e=>u.value.agentId=e,options:p.value,"option-label":`label`,"option-value":`value`,class:`config-card__input`,onChange:C},null,8,[`modelValue`,`options`]),k(`small`,Br,M(H(o)(`serviceForm.agentHintEdit`)),1)]),k(`div`,Vr,[k(`div`,Hr,[k(`i`,{class:g(f.value)},null,2),k(`span`,null,M(H(o)(`serviceConfigCommands.runner`)),1)]),F(H(ne),{modelValue:u.value.runner,"onUpdate:modelValue":r[1]||=e=>u.value.runner=e,options:d.value,"option-label":`label`,"option-value":`value`,class:`config-card__input`,onChange:C},{value:D(e=>[e.value?(s(),t(`div`,Ur,[k(`i`,{class:g(d.value.find(t=>t.value===e.value)?.icon)},null,2),k(`span`,null,M(d.value.find(t=>t.value===e.value)?.label),1)])):x(``,!0)]),option:D(e=>[k(`div`,Wr,[k(`i`,{class:g(e.option.icon)},null,2),k(`span`,null,M(e.option.label),1)])]),_:1},8,[`modelValue`,`options`])])]),F(H(Ae),{value:`0`},{default:D(()=>[F(H(je),null,{default:D(()=>[F(H(Ne),{value:`0`},{default:D(()=>[r[3]||=k(`i`,{class:`pi pi-desktop tab-icon`},null,-1),k(`span`,null,M(H(o)(`serviceConfigCommands.native`)),1)]),_:1}),F(H(Ne),{value:`1`},{default:D(()=>[r[4]||=k(`i`,{class:`pi pi-box tab-icon`},null,-1),k(`span`,null,M(H(o)(`serviceConfigCommands.docker`)),1)]),_:1})]),_:1}),F(H(Me),null,{default:D(()=>[F(H(Pe),{value:`0`},{default:D(()=>[k(`div`,Gr,[v.value.length===0?(s(),t(`div`,Kr,[k(`p`,null,M(H(o)(`serviceConfigCommands.noCommands`)),1)])):x(``,!0),(s(!0),t(_,null,fe(v.value,(e,n)=>(s(),t(`div`,{key:e.id,class:`config-card`},[k(`div`,qr,[k(`div`,Jr,[k(`label`,{class:`config-commands__label`,for:`cmd-label-${n}`},M(H(o)(`serviceConfigCommands.labelPlaceholder`)),9,Yr),F(H(z),{id:`cmd-label-${n}`,"model-value":e.label,placeholder:H(o)(`serviceConfigCommands.labelPlaceholder`),class:`config-card__input`,"onUpdate:modelValue":e=>S(n,`label`,e),onBlur:C,onKeydown:T(O(C,[`prevent`]),[`enter`])},null,8,[`id`,`model-value`,`placeholder`,`onUpdate:modelValue`,`onKeydown`])]),k(`div`,Xr,[k(`label`,{class:`config-commands__label`,for:`cmd-command-${n}`},M(H(o)(`serviceConfigCommands.commandPlaceholder`)),9,Zr),F(H(z),{id:`cmd-command-${n}`,"model-value":e.command,placeholder:`e.g. npm start`,class:`config-card__input`,"onUpdate:modelValue":e=>S(n,`command`,e),onBlur:C,onKeydown:T(O(C,[`prevent`]),[`enter`])},null,8,[`id`,`model-value`,`onUpdate:modelValue`,`onKeydown`])]),k(`div`,Qr,[k(`label`,{class:`config-commands__label`,for:`cmd-cwd-${n}`},`Working Dir (optional)`,8,$r),F(H(z),{id:`cmd-cwd-${n}`,"model-value":e.cwd??``,placeholder:H(o)(`serviceConfigCommands.cwdPlaceholder`),class:`config-card__input`,"onUpdate:modelValue":e=>S(n,`cwd`,e),onBlur:C,onKeydown:T(O(C,[`prevent`]),[`enter`])},null,8,[`id`,`model-value`,`placeholder`,`onUpdate:modelValue`,`onKeydown`])]),k(`div`,ei,[F(H(L),{icon:`pi pi-trash`,severity:`danger`,text:``,rounded:``,size:`small`,onClick:e=>E(n)},null,8,[`onClick`])])])]))),128)),k(`div`,ti,[F(H(L),{label:H(o)(`serviceConfigCommands.addCommand`),icon:`pi pi-plus`,severity:`secondary`,outlined:``,size:`small`,onClick:y},null,8,[`label`])])])]),_:1}),F(H(Pe),{value:`1`},{default:D(()=>[k(`div`,ni,[F(Fr,{service:e.service,onSave:w},null,8,[`service`])])]),_:1})]),_:1})]),_:1})]))}}),[[`__scopeId`,`data-v-df297a71`]]),ai={class:`config-env`,"data-testid":`config-env`},oi={key:0,class:`active-env-display`},si={class:`active-env-label`},ci={key:1,class:`inheritance-toggle`},li={class:`inheritance-label`},ui={class:`inherited-header`},di={class:`inherited-row-key`},fi={class:`preview-key`},pi={class:`value-row`},mi=[`onClick`],hi=[`onClick`],gi={key:0,class:`secret-mask`},_i={key:1,class:`preview-value`},vi={class:`config-env__header`},yi={class:`config-env__title`},bi={class:`config-env__actions`},xi={key:3,class:`variables-view`},Si={key:0},Ci={key:1,class:`empty-state`},wi={class:`inherited-header`},Ti={class:`passthrough-info`},Ei={class:`preview-key`},Di={key:0,class:`preview-value`},Oi={key:1,class:`passthrough-undefined`},ki={key:4,class:`empty-state`},Ai={key:5,class:`empty-state`},ji={class:`editor-container`},Mi={key:0,class:`editor-env-banner`},Ni={class:`editor-env-text`},Pi={class:`editor-section`,"data-testid":`variables-editor`},Fi={key:0,class:`loading-container`},Ii={key:1,class:`preview-container`},Li={class:`preview-info`},Ri={class:`preview-key`},zi={class:`value-row`},Bi=[`onClick`],Vi=[`onClick`],Hi={key:0,class:`secret-mask`},Ui={key:1,class:`preview-value`},Wi=ye(R({__name:`ServiceConfigEnv`,props:{service:{},projectId:{},activeEnvironmentId:{}},setup(e){let i=e,{t:a}=m(),c=v(),l=de(),u=oe(),f=te(),_=n(),y=h(),b=ie(),C=A(()=>f.getByRef({id:i.projectId,orgId:_.activeOrgId})?.activeEnvironmentId??null),T=A(()=>u.findServiceEnvironment(i.service.id,C.value??``)),j=I(!1),ne=I(!1),ae=I(!1),ce=I(!1),P=I(null),le=I(null),ue=I([]),fe=I({}),pe=I(new Set);function me(e){let t=new Set(pe.value);t.has(e)?t.delete(e):t.add(e),pe.value=t}let R=I(null);function z(e,t){navigator.clipboard.writeText(t),R.value=e,setTimeout(()=>{R.value===e&&(R.value=null)},1500)}let he=I({}),ge=I(!1),_e=A(()=>i.service.agentId?y.getById(i.service.agentId):null),ve=A(()=>{let e=_e.value?.status.lanIp;return e?{"service.HOST_LAN":e}:{}}),V=A(()=>_e.value?.config.passthroughEnv??[]),ye=A(()=>V.value.length>0);async function be(){if(!i.service.agentId||!ye.value){he.value={};return}ge.value=!0;try{he.value=await E.agent.getPassthroughEnv.query({id:i.service.agentId})}catch{he.value={}}finally{ge.value=!1}}let xe=A(()=>V.value.map(e=>({name:e,value:he.value[e]??null}))),Se=A(()=>!T.value||!C.value?!0:T.value.parentIds?.includes(C.value)??!0);async function Ce(e){if(!(!T.value||!C.value)){ce.value=!0;try{await u.update({id:T.value.id,parentIds:e?[C.value]:[]}),await Ne()}catch(e){c.add({severity:`error`,summary:a(`serviceConfigEnv.error`),detail:e.message??a(`serviceConfigEnv.failedToUpdateInheritance`),life:5e3})}finally{ce.value=!1}}}let Ee=A(()=>{let e=f.getByRef({id:i.projectId,orgId:_.activeOrgId});return e?.activeEnvironmentId?u.getById(e.activeEnvironmentId):null});function De(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 ke=A(()=>P.value?De(P.value.variables):[]),Ae=A(()=>{if(!T.value||!P.value?.sources)return ke.value;let e=T.value.id;return ke.value.filter(t=>P.value.sources[t.variableId]?.environmentId===e)}),je=A(()=>{if(!T.value||!P.value?.sources)return[];let e=T.value.id;return ke.value.filter(t=>P.value.sources[t.variableId]?.environmentId!==e)}),Me=A(()=>{if(!P.value?.sources)return{};let e={};for(let[t,n]of Object.entries(P.value.sources))e[t]={environmentId:n.environmentId,overridden:n.overridden,...n.resolvedFrom?{resolvedFrom:n.resolvedFrom}:{},...n.overriddenBy?{overriddenBy:n.overriddenBy}:{}};return e});async function Ne(){if(T.value)try{P.value=await u.resolve(T.value.id)}catch(e){console.error(`Failed to resolve environment:`,e)}}async function Pe(){if(C.value)try{le.value=await u.resolve(C.value)}catch{}}async function Le(e){let t=e.toLowerCase(),n=le.value??P.value;if(!n)return;let r=n.variables,i=Object.keys(n.env).filter(e=>e.toLowerCase().includes(t));ue.value=i;let a={};if(r)for(let e of i){let t=Object.values(r).find(t=>t.key===e);t&&(a[e]={key:e,isSecret:t.value?.isSecret??!1,pre:t.value?.pre??``,post:t.value?.post??``})}fe.value=a}async function Re(){ae.value=!0;try{await Ve(),await Ne(),ne.value=!0}catch(e){c.add({severity:`error`,summary:a(`serviceConfigEnv.error`),detail:e.message??a(`serviceConfigEnv.failedToLoadPreview`),life:5e3})}finally{ae.value=!1}}let ze=A(()=>P.value?Object.entries(P.value.env).map(([e,t])=>({key:e,value:Object.entries(ve.value).reduce((e,[t,n])=>e.replaceAll(`{{${t}}}`,n),t)})):[]);function Be(e,t){return t?`***`:e.length>50?e.substring(0,47)+`...`:e}async function Ve(){if(T.value)return T.value;if(!C.value)return null;let e=Ee.value;return e?(await u.create({name:`${i.service.name??i.service.id} — ${e.name}`,projectId:i.projectId,scope:`service`,reference:i.service.id,activateOn:C.value,parentIds:[C.value],variables:{}}),T.value):null}let He=A(()=>{let e=b.getByService(i.service.id);return e.length>0?e[0]:null}),Ue=A(()=>{let e=He.value?.state;return e===`running`||e===`errored`});async function We(){await Ve(),j.value=!0,await Promise.all([Ne(),Pe()])}function Ge(){if(j.value=!1,!Ue.value||!He.value)return;let e=He.value.state===`running`?`restart`:`start`,t=i.service.name||i.service.id;l.require({message:a(e===`restart`?`serviceConfigEnv.restartConfirmMsg`:`serviceConfigEnv.startConfirmMsg`,{name:t}),header:a(e===`restart`?`serviceConfigEnv.restartTitle`:`serviceConfigEnv.startTitle`),icon:`pi pi-refresh`,acceptLabel:a(e===`restart`?`serviceConfigEnv.restartTitle`:`actions.start`),rejectLabel:a(`serviceConfigEnv.notNow`),accept:async()=>{try{let t=i.service.agentId;if(!t)return;e===`restart`?(await b.restart(t,i.service.id),c.add({severity:`success`,summary:a(`serviceConfigEnv.serviceRestarted`),life:3e3})):(await b.start(t,i.service.id),c.add({severity:`success`,summary:a(`serviceConfigEnv.serviceStarted`),life:3e3}))}catch(t){c.add({severity:`error`,summary:a(`serviceConfigEnv.error`),detail:t.message??a(`serviceConfigEnv.failedToAction`,{action:e}),life:5e3})}}})}return r(Ee,async e=>{e&&await Promise.all([Ne(),Pe()])}),r(()=>i.service.agentId,()=>{be()}),o(async()=>{i.projectId&&await u.fetchAll(i.projectId),await Promise.all([Ne(),Pe(),be()])}),(n,r)=>(s(),t(`div`,ai,[C.value?(s(),t(`div`,oi,[k(`span`,si,M(H(a)(`serviceConfigEnv.activeEnvironment`)),1),F(Fe,{"environment-id":C.value},null,8,[`environment-id`])])):x(``,!0),T.value&&Ee.value?(s(),t(`div`,ci,[F(H(Oe),{"model-value":Se.value,disabled:ce.value,"onUpdate:modelValue":Ce},null,8,[`model-value`,`disabled`]),k(`span`,li,M(Se.value?H(a)(`serviceConfigEnv.inheritsFrom`,{name:Ee.value.name}):H(a)(`serviceConfigEnv.isolated`,{name:Ee.value.name})),1)])):x(``,!0),je.value.length>0?(s(),N(H(p),{key:2,class:`inherited-accordion`},{default:D(()=>[F(H(w),{value:`inherited`},{default:D(()=>[F(H(ee),null,{default:D(()=>[k(`span`,ui,[r[6]||=k(`i`,{class:`pi pi-arrow-down-left`},null,-1),B(` `+M(H(a)(`serviceConfigEnv.inheritedVars`))+` `,1),F(H(re),{value:String(je.value.length),severity:`secondary`,rounded:``},null,8,[`value`])])]),_:1}),F(H(d),null,{default:D(()=>[F(H(we),{value:je.value,size:`small`,"show-headers":!1},{default:D(()=>[F(H(Te),{style:{width:`35%`}},{body:D(({data:e})=>[k(`div`,di,[k(`code`,fi,M(e.key),1),Me.value[e.variableId]?(s(),N(Fe,{key:0,"environment-id":Me.value[e.variableId].environmentId,class:`source-badge`},null,8,[`environment-id`])):x(``,!0)])]),_:1}),F(H(Te),{style:{width:`65%`}},{body:D(({data:e})=>[k(`span`,pi,[k(`span`,{class:`value-actions`,onClick:r[0]||=O(()=>{},[`stop`])},[e.slot.isSecret?(s(),t(`i`,{key:0,class:g([pe.value.has(e.variableId)?`pi pi-eye-slash`:`pi pi-eye`,`action-icon`]),onClick:t=>me(e.variableId)},null,10,mi)):x(``,!0),k(`i`,{class:g([R.value===e.variableId?`pi pi-check`:`pi pi-copy`,`action-icon`]),onClick:t=>z(e.variableId,e.slot.pre+e.slot.value+e.slot.post)},null,10,hi)]),e.slot.isSecret&&!pe.value.has(e.variableId)?(s(),t(`span`,gi,`***`)):(s(),t(`code`,_i,M(e.slot.pre)+M(e.slot.value)+M(e.slot.post),1))])]),_:1})]),_:1},8,[`value`])]),_:1})]),_:1})]),_:1})):x(``,!0),k(`div`,vi,[k(`h3`,yi,M(H(a)(`serviceConfigEnv.envVars`)),1),k(`div`,bi,[F(H(L),{label:H(a)(`serviceConfigEnv.editVariables`),icon:`pi pi-pencil`,size:`small`,outlined:``,"data-testid":`env-edit-btn`,disabled:!C.value,onClick:We},null,8,[`label`,`disabled`]),F(H(L),{label:H(a)(`serviceConfigEnv.preview`),icon:`pi pi-eye`,size:`small`,outlined:``,severity:`secondary`,loading:ae.value,disabled:!C.value,"data-testid":`env-preview-btn`,onClick:Re},null,8,[`label`,`loading`,`disabled`])])]),T.value?(s(),t(`div`,xi,[Ae.value.length>0?(s(),t(`div`,Si,[F(Ie,{"environment-id":T.value.id,sources:Me.value,"resolved-env":{...le.value?.env??{},...P.value?.env??{}},"service-builtins":ve.value,editable:!1,"show-overrides":!0,"show-override-badge":!0,"show-delete":!1,"show-add-button":!1,onVariablesChanged:Ne},null,8,[`environment-id`,`sources`,`resolved-env`,`service-builtins`])])):(s(),t(`div`,Ci,[k(`p`,null,M(H(a)(`serviceConfigEnv.noVarsConfigured`)),1)])),ye.value?(s(),N(H(p),{key:2,class:`inherited-accordion`},{default:D(()=>[F(H(w),{value:`passthrough`},{default:D(()=>[F(H(ee),null,{default:D(()=>[k(`span`,wi,[r[7]||=k(`i`,{class:`pi pi-globe`},null,-1),B(` `+M(H(a)(`agentPage.passthrough.titleShort`))+` `,1),F(H(re),{value:String(V.value.length),severity:`secondary`,rounded:``},null,8,[`value`])])]),_:1}),F(H(d),null,{default:D(()=>[k(`p`,Ti,M(H(a)(`serviceConfigEnv.passthroughInfo`)),1),ge.value?(s(),N(H(S),{key:0,style:{width:`24px`,height:`24px`}})):(s(),N(H(we),{key:1,value:xe.value,stripedRows:``,size:`small`},{default:D(()=>[F(H(Te),{field:`name`,header:H(a)(`common.key`),style:{width:`35%`}},{body:D(({data:e})=>[k(`code`,Ei,M(e.name),1)]),_:1},8,[`header`]),F(H(Te),{header:H(a)(`common.value`),style:{width:`65%`}},{body:D(({data:e})=>[e.value===null?(s(),t(`span`,Oi,M(H(a)(`serviceConfigEnv.undefined`)),1)):(s(),t(`span`,Di,M(e.value),1))]),_:1},8,[`header`])]),_:1},8,[`value`]))]),_:1})]),_:1})]),_:1})):x(``,!0)])):C.value?(s(),t(`div`,Ai,[k(`p`,null,M(H(a)(`serviceConfigEnv.noVarsConfigured`)),1)])):(s(),t(`div`,ki,[k(`p`,null,M(H(a)(`serviceConfigEnv.noActiveEnv`)),1)])),F(H(se),{visible:j.value,header:H(a)(`serviceConfigEnv.editVarsHeader`),style:{width:`900px`},modal:``,"onUpdate:visible":r[2]||=e=>{e||Ge()}},{footer:D(()=>[F(H(L),{label:H(a)(`actions.close`),icon:`pi pi-times`,onClick:r[1]||=e=>Ge()},null,8,[`label`])]),default:D(()=>[k(`div`,ji,[C.value?(s(),t(`div`,Mi,[k(`span`,Ni,M(H(a)(`serviceConfigEnv.editingVarsFor`,{name:e.service.name||e.service.id})),1),F(Fe,{"environment-id":C.value},null,8,[`environment-id`])])):x(``,!0),k(`div`,Pi,[T.value?(s(),N(Ie,{key:0,"environment-id":T.value.id,editable:!0,sources:Me.value,"autocomplete-enabled":!0,"autocomplete-suggestions":ue.value,"autocomplete-meta":fe.value,"resolved-env":{...le.value?.env??{},...P.value?.env??{}},"service-builtins":ve.value,"show-overrides":!0,onVariablesChanged:Ne,"show-delete":!0,"show-add-button":!0,onAutocompleteSearch:Le},null,8,[`environment-id`,`sources`,`autocomplete-suggestions`,`autocomplete-meta`,`resolved-env`,`service-builtins`])):x(``,!0)])])]),_:1},8,[`visible`,`header`]),F(H(se),{visible:ne.value,"onUpdate:visible":r[5]||=e=>ne.value=e,header:H(a)(`serviceConfigEnv.previewHeader`),style:{width:`700px`},modal:``,"data-testid":`env-preview-dialog`},{footer:D(()=>[F(H(L),{label:H(a)(`actions.close`),icon:`pi pi-times`,onClick:r[4]||=e=>ne.value=!1},null,8,[`label`])]),default:D(()=>[ae.value?(s(),t(`div`,Fi,[F(H(S))])):P.value?(s(),t(`div`,Ii,[k(`p`,Li,M(H(a)(`serviceConfigEnv.injectedVarsInfo`)),1),F(H(we),{value:ze.value,stripedRows:``,size:`small`,rows:15,paginator:ze.value.length>15},{default:D(()=>[F(H(Te),{field:`key`,header:H(a)(`common.key`),style:{width:`35%`}},{body:D(({data:e})=>[k(`code`,Ri,M(e.key),1)]),_:1},8,[`header`]),F(H(Te),{header:H(a)(`common.value`),style:{width:`65%`}},{body:D(({data:e})=>[k(`span`,zi,[k(`span`,{class:`value-actions`,onClick:r[3]||=O(()=>{},[`stop`])},[P.value.envSecrets.includes(e.key)?(s(),t(`i`,{key:0,class:g([pe.value.has(`preview:`+e.key)?`pi pi-eye-slash`:`pi pi-eye`,`action-icon`]),onClick:t=>me(`preview:`+e.key)},null,10,Bi)):x(``,!0),k(`i`,{class:g([R.value===`preview:`+e.key?`pi pi-check`:`pi pi-copy`,`action-icon`]),onClick:t=>z(`preview:`+e.key,e.value)},null,10,Vi)]),P.value.envSecrets.includes(e.key)&&!pe.value.has(`preview:`+e.key)?(s(),t(`span`,Hi,`***`)):(s(),t(`span`,Ui,M(Be(e.value,!1)),1))])]),_:1},8,[`header`])]),_:1},8,[`value`,`paginator`])])):x(``,!0)]),_:1},8,[`visible`,`header`])]))}}),[[`__scopeId`,`data-v-db99b01e`]]),Gi={class:`config-health`},Ki={class:`config-card config-card--inline`},qi={class:`config-card__header`},Ji={class:`config-card`},Yi={class:`config-card__header`},Xi={class:`config-card`},Zi={class:`config-card__header`},Qi={class:`config-card`},$i={class:`config-card__header`},ea={class:`config-card`},ta={class:`config-card__header`},na={key:1,class:`config-card`},ra={class:`config-card__header`},ia={class:`config-card__hint`},aa={class:`config-card`},oa={class:`config-card__header`},sa={class:`config-card`},ca={class:`config-card__header`},la={class:`config-card`},ua={class:`config-card__header`},da={class:`config-card`},fa={class:`config-card__header`},pa=ye(R({__name:`ServiceConfigHealthCheck`,props:{service:{}},emits:[`save`],setup(e,{emit:n}){let i=e,a=n,{t:o}=m(),c=I(!!i.service.healthCheck),l=I({type:i.service.healthCheck?.type??`http`,path:i.service.healthCheck?.path??`/health`,interval:i.service.healthCheck?.interval??3e4,timeout:i.service.healthCheck?.timeout??5e3,retries:i.service.healthCheck?.retries??3,method:i.service.healthCheck?.method??`GET`,expectedStatus:i.service.healthCheck?.expectedStatus??200,initialDelay:i.service.healthCheck?.initialDelay??5e3,command:i.service.healthCheck?.command??``}),u=[{label:`HTTP Request`,value:`http`},{label:`Command`,value:`command`}],d=[{label:`GET`,value:`GET`},{label:`HEAD`,value:`HEAD`},{label:`POST`,value:`POST`},{label:`PUT`,value:`PUT`}];r(()=>i.service,e=>{c.value=!!e.healthCheck,l.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 f=null;function p(){f&&clearTimeout(f),f=setTimeout(()=>{if(!c.value)a(`save`,void 0);else{if(l.value.type===`http`&&!l.value.path?.trim()||l.value.type===`command`&&!l.value.command?.trim())return;a(`save`,{type:l.value.type,path:l.value.path,method:l.value.method,expectedStatus:l.value.expectedStatus,command:l.value.command||void 0,interval:l.value.interval,timeout:l.value.timeout,retries:l.value.retries,initialDelay:l.value.initialDelay})}f=null},150)}return(e,n)=>(s(),t(`div`,Gi,[k(`div`,Ki,[k(`div`,qi,[n[10]||=k(`i`,{class:`pi pi-heart`},null,-1),k(`span`,null,M(H(o)(`serviceConfigHealthCheck.enable`)),1)]),F(H(Oe),{modelValue:c.value,"onUpdate:modelValue":n[0]||=e=>c.value=e,onChange:p},null,8,[`modelValue`])]),c.value?(s(),t(_,{key:0},[k(`div`,Ji,[k(`div`,Yi,[n[11]||=k(`i`,{class:`pi pi-cog`},null,-1),k(`span`,null,M(H(o)(`serviceConfigHealthCheck.type`)),1)]),F(H(ne),{modelValue:l.value.type,"onUpdate:modelValue":n[1]||=e=>l.value.type=e,options:u,"option-label":`label`,"option-value":`value`,class:`config-card__input`,onChange:p},null,8,[`modelValue`]),n[12]||=k(`small`,{class:`config-card__hint`},`HTTP checks a URL endpoint; Command runs a shell command (exit 0 = healthy)`,-1)]),l.value.type===`http`?(s(),t(_,{key:0},[k(`div`,Xi,[k(`div`,Zi,[n[13]||=k(`i`,{class:`pi pi-link`},null,-1),k(`span`,null,M(H(o)(`serviceConfigHealthCheck.path`)),1)]),F(H(z),{modelValue:l.value.path,"onUpdate:modelValue":n[2]||=e=>l.value.path=e,class:`config-card__input`,placeholder:`/health`,onBlur:p,onKeydown:T(O(p,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])]),k(`div`,Qi,[k(`div`,$i,[n[14]||=k(`i`,{class:`pi pi-directions`},null,-1),k(`span`,null,M(H(o)(`serviceConfigHealthCheck.method`)),1)]),F(H(ne),{modelValue:l.value.method,"onUpdate:modelValue":n[3]||=e=>l.value.method=e,options:d,"option-label":`label`,"option-value":`value`,class:`config-card__input`,onChange:p},null,8,[`modelValue`])]),k(`div`,ea,[k(`div`,ta,[n[15]||=k(`i`,{class:`pi pi-check-circle`},null,-1),k(`span`,null,M(H(o)(`serviceConfigHealthCheck.expectedStatus`)),1)]),F(H(Ee),{modelValue:l.value.expectedStatus,"onUpdate:modelValue":n[4]||=e=>l.value.expectedStatus=e,class:`config-card__input`,"use-grouping":!1,min:100,max:599,onBlur:p,onKeydown:T(O(p,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`]),n[16]||=k(`small`,{class:`config-card__hint`},`HTTP status code to expect (default 200)`,-1)])],64)):x(``,!0),l.value.type===`command`?(s(),t(`div`,na,[k(`div`,ra,[n[17]||=k(`i`,{class:`pi pi-code`},null,-1),k(`span`,null,M(H(o)(`serviceConfigHealthCheck.command`)),1)]),F(H(ue),{modelValue:l.value.command,"onUpdate:modelValue":n[5]||=e=>l.value.command=e,class:`config-card__input`,rows:`2`,placeholder:`curl -sf http://localhost:3000/health`,"auto-resize":``,onBlur:p},null,8,[`modelValue`]),k(`small`,ia,M(H(o)(`serviceConfigHealthCheck.commandHint`)),1)])):x(``,!0),k(`div`,aa,[k(`div`,oa,[n[18]||=k(`i`,{class:`pi pi-hourglass`},null,-1),k(`span`,null,M(H(o)(`serviceConfigHealthCheck.initialDelay`)),1)]),F(H(Ee),{modelValue:l.value.initialDelay,"onUpdate:modelValue":n[6]||=e=>l.value.initialDelay=e,class:`config-card__input`,"use-grouping":!1,min:0,onBlur:p,onKeydown:T(O(p,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`]),n[19]||=k(`small`,{class:`config-card__hint`},`Wait before first health check (ms)`,-1)]),k(`div`,sa,[k(`div`,ca,[n[20]||=k(`i`,{class:`pi pi-clock`},null,-1),k(`span`,null,M(H(o)(`serviceConfigHealthCheck.interval`)),1)]),F(H(Ee),{modelValue:l.value.interval,"onUpdate:modelValue":n[7]||=e=>l.value.interval=e,class:`config-card__input`,"use-grouping":!1,min:1e3,onBlur:p,onKeydown:T(O(p,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])]),k(`div`,la,[k(`div`,ua,[n[21]||=k(`i`,{class:`pi pi-stopwatch`},null,-1),k(`span`,null,M(H(o)(`serviceConfigHealthCheck.timeout`)),1)]),F(H(Ee),{modelValue:l.value.timeout,"onUpdate:modelValue":n[8]||=e=>l.value.timeout=e,class:`config-card__input`,"use-grouping":!1,min:500,onBlur:p,onKeydown:T(O(p,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])]),k(`div`,da,[k(`div`,fa,[n[22]||=k(`i`,{class:`pi pi-replay`},null,-1),k(`span`,null,M(H(o)(`serviceConfigHealthCheck.retries`)),1)]),F(H(Ee),{modelValue:l.value.retries,"onUpdate:modelValue":n[9]||=e=>l.value.retries=e,class:`config-card__input`,"use-grouping":!1,min:0,max:10,onBlur:p,onKeydown:T(O(p,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])])],64)):x(``,!0)]))}}),[[`__scopeId`,`data-v-63e32039`]]),ma={class:`config-shortcuts`},ha={key:0,class:`config-shortcuts__empty`},ga={class:`config-shortcuts__row`},_a={class:`config-shortcuts__field`},va=[`for`],ya={class:`config-shortcuts__field config-shortcuts__field--wide`},ba=[`for`],xa={class:`config-shortcuts__field`},Sa=[`for`],Ca={class:`config-shortcuts__actions-cell`},wa={class:`config-shortcuts__footer`},Ta=ye(R({__name:`ServiceConfigShortcuts`,props:{service:{}},emits:[`save`],setup(e,{emit:n}){let i=e,{t:a}=m(),o=n,c=I([...i.service.shortcuts??[]]),l=null;r(()=>i.service,e=>{l||(c.value=[...e.shortcuts??[]])});function u(){c.value=[...c.value,{id:Le(),label:``,command:``,cwd:void 0}]}function d(e){c.value=c.value.filter((t,n)=>n!==e)}function f(e,t,n){c.value=c.value.map((r,i)=>i===e?{...r,[t]:n||void 0}:r)}function p(){l&&clearTimeout(l),l=setTimeout(()=>{o(`save`,c.value),l=null},150)}function h(e){d(e),p()}return(e,n)=>(s(),t(`div`,ma,[c.value.length===0?(s(),t(`div`,ha,[k(`p`,null,M(H(a)(`serviceConfigShortcuts.empty`)),1)])):x(``,!0),(s(!0),t(_,null,fe(c.value,(e,n)=>(s(),t(`div`,{key:e.id,class:`config-card`},[k(`div`,ga,[k(`div`,_a,[k(`label`,{class:`config-shortcuts__label`,for:`shortcut-label-${n}`},M(H(a)(`serviceConfigShortcuts.label`)),9,va),F(H(z),{id:`shortcut-label-${n}`,"model-value":e.label,placeholder:H(a)(`serviceConfigShortcuts.labelPlaceholder`),class:`config-card__input`,"data-testid":`shortcut-label-input`,"onUpdate:modelValue":e=>f(n,`label`,e),onBlur:p,onKeydown:T(O(p,[`prevent`]),[`enter`])},null,8,[`id`,`model-value`,`placeholder`,`onUpdate:modelValue`,`onKeydown`])]),k(`div`,ya,[k(`label`,{class:`config-shortcuts__label`,for:`shortcut-command-${n}`},M(H(a)(`serviceConfigShortcuts.command`)),9,ba),F(H(z),{id:`shortcut-command-${n}`,"model-value":e.command,placeholder:H(a)(`serviceConfigShortcuts.commandPlaceholder`),class:`config-card__input`,"data-testid":`shortcut-command-input`,"onUpdate:modelValue":e=>f(n,`command`,e),onBlur:p,onKeydown:T(O(p,[`prevent`]),[`enter`])},null,8,[`id`,`model-value`,`placeholder`,`onUpdate:modelValue`,`onKeydown`])]),k(`div`,xa,[k(`label`,{class:`config-shortcuts__label`,for:`shortcut-cwd-${n}`},M(H(a)(`serviceConfigShortcuts.workingDir`)),9,Sa),F(H(z),{id:`shortcut-cwd-${n}`,"model-value":e.cwd??``,placeholder:H(a)(`serviceConfigShortcuts.cwdPlaceholder`),class:`config-card__input`,"onUpdate:modelValue":e=>f(n,`cwd`,e),onBlur:p,onKeydown:T(O(p,[`prevent`]),[`enter`])},null,8,[`id`,`model-value`,`placeholder`,`onUpdate:modelValue`,`onKeydown`])]),k(`div`,Ca,[F(H(L),{icon:`pi pi-trash`,severity:`danger`,text:``,rounded:``,size:`small`,onClick:e=>h(n)},null,8,[`onClick`])])])]))),128)),k(`div`,wa,[F(H(L),{label:H(a)(`serviceConfigShortcuts.addShortcut`),icon:`pi pi-plus`,severity:`secondary`,outlined:``,size:`small`,"data-testid":`add-shortcut-btn`,onClick:u},null,8,[`label`])])]))}}),[[`__scopeId`,`data-v-d6ecb989`]]),Ea=Object.defineProperty,Da=Object.getOwnPropertySymbols,Oa=Object.prototype.hasOwnProperty,ka=Object.prototype.propertyIsEnumerable,Aa=(e,t,n)=>t in e?Ea(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,ja=(e,t)=>{for(var n in t||={})Oa.call(t,n)&&Aa(e,n,t[n]);if(Da)for(var n of Da(t))ka.call(t,n)&&Aa(e,n,t[n]);return e},Ma=(e,t)=>{var n={};for(var r in e)Oa.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&Da)for(var r of Da(e))t.indexOf(r)<0&&ka.call(e,r)&&(n[r]=e[r]);return n},Na=`[vue-draggable-plus]: `;function Pa(e){console.warn(Na+e)}function Fa(e){console.error(Na+e)}function Ia(e,t,n){return n>=0&&n<e.length&&e.splice(n,0,e.splice(t,1)[0]),e}function La(e){return e.replace(/-(\w)/g,(e,t)=>t?t.toUpperCase():``)}function Ra(e){return Object.keys(e).reduce((t,n)=>(e[n]!==void 0&&(t[La(n)]=e[n]),t),{})}function za(e,t){return Array.isArray(e)&&e.splice(t,1),e}function Ba(e,t,n){return Array.isArray(e)&&e.splice(t,0,n),e}function Va(e){return e===void 0}function Ha(e){return typeof e==`string`}function Ua(e,t,n){let r=e.children[n];e.insertBefore(t,r)}function Wa(e){e.parentNode&&e.parentNode.removeChild(e)}function Ga(e,t=document){let n=null;return n=typeof t?.querySelector==`function`?(t?.querySelector)?.call(t,e):document.querySelector(e),n||Pa(`Element not found: ${e}`),n}function Ka(e,t,n=null){return function(...r){return e.apply(n,r),t.apply(n,r)}}function qa(e,t){let n=ja({},e);return Object.keys(t).forEach(r=>{n[r]?n[r]=Ka(e[r],t[r]):n[r]=t[r]}),n}function Ja(e){return e instanceof HTMLElement}function Ya(e,t){Object.keys(e).forEach(n=>{t(n,e[n])})}function Xa(e){return e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97)}var Za=Object.assign;function Qa(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 $a(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t];t%2?Qa(Object(n),!0).forEach(function(t){to(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Qa(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function eo(e){"@babel/helpers - typeof";return eo=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},eo(e)}function to(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function no(){return no=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},no.apply(this,arguments)}function ro(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 io(e,t){if(e==null)return{};var n=ro(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 ao=`1.15.2`;function oo(e){if(typeof window<`u`&&window.navigator)return!!navigator.userAgent.match(e)}var so=oo(/(?:Trident.*rv[ :]?11\.|msie|iemobile|Windows Phone)/i),co=oo(/Edge/i),lo=oo(/firefox/i),uo=oo(/safari/i)&&!oo(/chrome/i)&&!oo(/android/i),fo=oo(/iP(ad|od|hone)/i),po=oo(/chrome/i)&&oo(/android/i),mo={capture:!1,passive:!1};function U(e,t,n){e.addEventListener(t,n,!so&&mo)}function W(e,t,n){e.removeEventListener(t,n,!so&&mo)}function ho(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 go(e){return e.host&&e!==document&&e.host.nodeType?e.host:e.parentNode}function _o(e,t,n,r){if(e){n||=document;do{if(t!=null&&(t[0]===`>`?e.parentNode===n&&ho(e,t):ho(e,t))||r&&e===n)return e;if(e===n)break}while(e=go(e))}return null}var vo=/\s+/g;function yo(e,t,n){e&&t&&(e.classList?e.classList[n?`add`:`remove`](t):e.className=((` `+e.className+` `).replace(vo,` `).replace(` `+t+` `,` `)+(n?` `+t:``)).replace(vo,` `))}function G(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 bo(e,t){var n=``;if(typeof e==`string`)n=e;else do{var r=G(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 xo(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 So(){return document.scrollingElement||document.documentElement}function K(e,t,n,r,i){if(!(!e.getBoundingClientRect&&e!==window)){var a,o,s,c,l,u,d;if(e!==window&&e.parentNode&&e!==So()?(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&&(G(i,`transform`)!==`none`||n&&G(i,`position`)!==`static`)){var f=i.getBoundingClientRect();o-=f.top+parseInt(G(i,`border-top-width`)),s-=f.left+parseInt(G(i,`border-left-width`)),c=o+a.height,l=s+a.width;break}while(i=i.parentNode);if(r&&e!==window){var p=bo(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 Co(e,t,n){for(var r=ko(e,!0),i=K(e)[t];r;){var a=K(r)[n],o=void 0;if(o=i>=a,!o)return r;if(r===So())break;r=ko(r,!1)}return!1}function wo(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)&&_o(o[a],n.draggable,e,!1)){if(i===t)return o[a];i++}a++}return null}function To(e,t){for(var n=e.lastElementChild;n&&(n===Q.ghost||G(n,`display`)===`none`||t&&!ho(n,t));)n=n.previousElementSibling;return n||null}function Eo(e,t){var n=0;if(!e||!e.parentNode)return-1;for(;e=e.previousElementSibling;)e.nodeName.toUpperCase()!==`TEMPLATE`&&e!==Q.clone&&(!t||ho(e,t))&&n++;return n}function Do(e){var t=0,n=0,r=So();if(e)do{var i=bo(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 Oo(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 ko(e,t){if(!e||!e.getBoundingClientRect)return So();var n=e,r=!1;do if(n.clientWidth<n.scrollWidth||n.clientHeight<n.scrollHeight){var i=G(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 So();if(r||t)return n;r=!0}}while(n=n.parentNode);return So()}function Ao(e,t){if(e&&t)for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);return e}function jo(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 Mo;function No(e,t){return function(){if(!Mo){var n=arguments,r=this;n.length===1?e.call(r,n[0]):e.apply(r,n),Mo=setTimeout(function(){Mo=void 0},t)}}}function Po(){clearTimeout(Mo),Mo=void 0}function Fo(e,t,n){e.scrollLeft+=t,e.scrollTop+=n}function Io(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 Lo(e,t,n){var r={};return Array.from(e.children).forEach(function(i){if(!(!_o(i,t.draggable,e,!1)||i.animated||i===n)){var a=K(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 Ro=`Sortable`+new Date().getTime();function zo(){var e=[],t;return{captureAnimationState:function(){e=[],this.options.animation&&[].slice.call(this.el.children).forEach(function(t){if(!(G(t,`display`)===`none`||t===Q.ghost)){e.push({target:t,rect:K(t)});var n=$a({},e[e.length-1].rect);if(t.thisAnimationDuration){var r=bo(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(Oo(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=K(n),c=n.prevFromRect,l=n.prevToRect,u=e.rect,d=bo(n,!0);d&&(s.top-=d.f,s.left-=d.e),n.toRect=s,n.thisAnimationDuration&&jo(c,s)&&!jo(o,s)&&(u.top-s.top)/(u.left-s.left)===(o.top-s.top)/(o.left-s.left)&&(t=Vo(u,c,l,r.options)),jo(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){G(e,`transition`,``),G(e,`transform`,``);var i=bo(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,G(e,`transform`,`translate3d(`+s+`px,`+c+`px,0)`),this.forRepaintDummy=Bo(e),G(e,`transition`,`transform `+r+`ms`+(this.options.easing?` `+this.options.easing:``)),G(e,`transform`,`translate3d(0,0,0)`),typeof e.animated==`number`&&clearTimeout(e.animated),e.animated=setTimeout(function(){G(e,`transition`,``),G(e,`transform`,``),e.animated=!1,e.animatingX=!1,e.animatingY=!1},r)}}}}function Bo(e){return e.offsetWidth}function Vo(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 Ho=[],Uo={initializeByDefault:!0},Wo={mount:function(e){for(var t in Uo)Uo.hasOwnProperty(t)&&!(t in e)&&(e[t]=Uo[t]);Ho.forEach(function(t){if(t.pluginName===e.pluginName)throw`Sortable: Cannot mount plugin ${e.pluginName} more than once`}),Ho.push(e)},pluginEvent:function(e,t,n){var r=this;this.eventCanceled=!1,n.cancel=function(){r.eventCanceled=!0};var i=e+`Global`;Ho.forEach(function(r){t[r.pluginName]&&(t[r.pluginName][i]&&t[r.pluginName][i]($a({sortable:t},n)),t.options[r.pluginName]&&t[r.pluginName][e]&&t[r.pluginName][e]($a({sortable:t},n)))})},initializePlugins:function(e,t,n,r){for(var i in Ho.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,no(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 Ho.forEach(function(r){typeof r.eventProperties==`function`&&no(n,r.eventProperties.call(t[r.pluginName],e))}),n},modifyOption:function(e,t,n){var r;return Ho.forEach(function(i){e[i.pluginName]&&i.optionListeners&&typeof i.optionListeners[t]==`function`&&(r=i.optionListeners[t].call(e[i.pluginName],n))}),r}};function Go(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[Ro],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=$a($a({},m),Wo.getEventProperties(r,t));for(var y in v)h[y]=v[y];n&&n.dispatchEvent(h),g[_]&&g[_].call(t,h)}}var Ko=[`evt`],qo=function(e,t){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},r=n.evt,i=io(n,Ko);Wo.pluginEvent.bind(Q)(e,t,$a({dragEl:q,parentEl:J,ghostEl:Y,rootEl:X,nextEl:Yo,lastDownEl:Xo,cloneEl:Z,cloneHidden:Zo,dragStarted:ps,putSortable:rs,activeSortable:Q.active,originalEvent:r,oldIndex:Qo,oldDraggableIndex:es,newIndex:$o,newDraggableIndex:ts,hideGhostForTarget:Ms,unhideGhostForTarget:Ns,cloneNowHidden:function(){Zo=!0},cloneNowShown:function(){Zo=!1},dispatchSortableEvent:function(e){Jo({sortable:t,name:e,originalEvent:r})}},i))};function Jo(e){Go($a({putSortable:rs,cloneEl:Z,targetEl:q,rootEl:X,oldIndex:Qo,oldDraggableIndex:es,newIndex:$o,newDraggableIndex:ts},e))}var q,J,Y,X,Yo,Xo,Z,Zo,Qo,$o,es,ts,ns,rs,is=!1,as=!1,os=[],ss,cs,ls,us,ds,fs,ps,ms,hs,gs=!1,_s=!1,vs,ys,bs=[],xs=!1,Ss=[],Cs=typeof document<`u`,ws=fo,Ts=co||so?`cssFloat`:`float`,Es=Cs&&!po&&!fo&&`draggable`in document.createElement(`div`),Ds=function(){if(Cs){if(so)return!1;var e=document.createElement(`x`);return e.style.cssText=`pointer-events:auto`,e.style.pointerEvents===`auto`}}(),Os=function(e,t){var n=G(e),r=parseInt(n.width)-parseInt(n.paddingLeft)-parseInt(n.paddingRight)-parseInt(n.borderLeftWidth)-parseInt(n.borderRightWidth),i=wo(e,0,t),a=wo(e,1,t),o=i&&G(i),s=a&&G(a),c=o&&parseInt(o.marginLeft)+parseInt(o.marginRight)+K(i).width,l=s&&parseInt(s.marginLeft)+parseInt(s.marginRight)+K(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[Ts]===`none`||a&&n[Ts]===`none`&&c+l>r)?`vertical`:`horizontal`},ks=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},As=function(e,t){var n;return os.some(function(r){var i=r[Ro].options.emptyInsertThreshold;if(!(!i||To(r))){var a=K(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},js=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||eo(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},Ms=function(){!Ds&&Y&&G(Y,`display`,`none`)},Ns=function(){!Ds&&Y&&G(Y,`display`,``)};Cs&&!po&&document.addEventListener(`click`,function(e){if(as)return e.preventDefault(),e.stopPropagation&&e.stopPropagation(),e.stopImmediatePropagation&&e.stopImmediatePropagation(),as=!1,!1},!0);var Ps=function(e){if(q){e=e.touches?e.touches[0]:e;var t=As(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[Ro]._onDragOver(n)}}},Fs=function(e){q&&q.parentNode[Ro]._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=no({},t),e[Ro]=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 Os(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&&!uo,emptyInsertThreshold:5};for(var r in Wo.initializePlugins(this,e,n),n)!(r in t)&&(t[r]=n[r]);for(var i in js(t),this)i.charAt(0)===`_`&&typeof this[i]==`function`&&(this[i]=this[i].bind(this));this.nativeDraggable=t.forceFallback?!1:Es,this.nativeDraggable&&(this.options.touchStartThreshold=1),t.supportPointer?U(e,`pointerdown`,this._onTapStart):(U(e,`mousedown`,this._onTapStart),U(e,`touchstart`,this._onTapStart)),this.nativeDraggable&&(U(e,`dragover`,this),U(e,`dragenter`,this)),os.push(this.el),t.store&&t.store.get&&this.sort(t.store.get(this)||[]),no(this,zo())}Q.prototype={constructor:Q,_isOutsideThisEl:function(e){!this.el.contains(e)&&e!==this.el&&(ms=null)},_getDirection:function(e,t){return typeof this.options.direction==`function`?this.options.direction.call(this,e,t,q):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(Gs(n),!q&&!(/mousedown|pointerdown/.test(a)&&e.button!==0||r.disabled)&&!c.isContentEditable&&!(!this.nativeDraggable&&uo&&s&&s.tagName.toUpperCase()===`SELECT`)&&(s=_o(s,r.draggable,n,!1),!(s&&s.animated)&&Xo!==s)){if(Qo=Eo(s),es=Eo(s,r.draggable),typeof l==`function`){if(l.call(this,e,s,this)){Jo({sortable:t,rootEl:c,name:`filter`,targetEl:s,toEl:n,fromEl:n}),qo(`filter`,t,{evt:e}),i&&e.cancelable&&e.preventDefault();return}}else if(l&&(l=l.split(`,`).some(function(r){if(r=_o(c,r.trim(),n,!1),r)return Jo({sortable:t,rootEl:r,name:`filter`,targetEl:s,fromEl:n,toEl:n}),qo(`filter`,t,{evt:e}),!0}),l)){i&&e.cancelable&&e.preventDefault();return}r.handle&&!_o(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&&!q&&n.parentNode===i){var c=K(n);if(X=i,q=n,J=q.parentNode,Yo=q.nextSibling,Xo=n,ns=a.group,Q.dragged=q,ss={target:q,clientX:(t||e).clientX,clientY:(t||e).clientY},ds=ss.clientX-c.left,fs=ss.clientY-c.top,this._lastX=(t||e).clientX,this._lastY=(t||e).clientY,q.style[`will-change`]=`all`,s=function(){if(qo(`delayEnded`,r,{evt:e}),Q.eventCanceled){r._onDrop();return}r._disableDelayedDragEvents(),!lo&&r.nativeDraggable&&(q.draggable=!0),r._triggerDragStart(e,t),Jo({sortable:r,name:`choose`,originalEvent:e}),yo(q,a.chosenClass,!0)},a.ignore.split(`,`).forEach(function(e){xo(q,e.trim(),Rs)}),U(o,`dragover`,Ps),U(o,`mousemove`,Ps),U(o,`touchmove`,Ps),U(o,`mouseup`,r._onDrop),U(o,`touchend`,r._onDrop),U(o,`touchcancel`,r._onDrop),lo&&this.nativeDraggable&&(this.options.touchStartThreshold=4,q.draggable=!0),qo(`delayStart`,this,{evt:e}),a.delay&&(!a.delayOnTouchOnly||t)&&(!this.nativeDraggable||!(co||so))){if(Q.eventCanceled){this._onDrop();return}U(o,`mouseup`,r._disableDelayedDrag),U(o,`touchend`,r._disableDelayedDrag),U(o,`touchcancel`,r._disableDelayedDrag),U(o,`mousemove`,r._delayedDragTouchMoveHandler),U(o,`touchmove`,r._delayedDragTouchMoveHandler),a.supportPointer&&U(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(){q&&Rs(q),clearTimeout(this._dragStartTimer),this._disableDelayedDragEvents()},_disableDelayedDragEvents:function(){var e=this.el.ownerDocument;W(e,`mouseup`,this._disableDelayedDrag),W(e,`touchend`,this._disableDelayedDrag),W(e,`touchcancel`,this._disableDelayedDrag),W(e,`mousemove`,this._delayedDragTouchMoveHandler),W(e,`touchmove`,this._delayedDragTouchMoveHandler),W(e,`pointermove`,this._delayedDragTouchMoveHandler)},_triggerDragStart:function(e,t){t||=e.pointerType==`touch`&&e,!this.nativeDraggable||t?this.options.supportPointer?U(document,`pointermove`,this._onTouchMove):t?U(document,`touchmove`,this._onTouchMove):U(document,`mousemove`,this._onTouchMove):(U(q,`dragend`,this),U(X,`dragstart`,this._onDragStart));try{document.selection?Ks(function(){document.selection.empty()}):window.getSelection().removeAllRanges()}catch{}},_dragStarted:function(e,t){if(is=!1,X&&q){qo(`dragStarted`,this,{evt:t}),this.nativeDraggable&&U(document,`dragover`,Fs);var n=this.options;!e&&yo(q,n.dragClass,!1),yo(q,n.ghostClass,!0),Q.active=this,e&&this._appendGhost(),Jo({sortable:this,name:`start`,originalEvent:t})}else this._nulling()},_emulateDragOver:function(){if(cs){this._lastX=cs.clientX,this._lastY=cs.clientY,Ms();for(var e=document.elementFromPoint(cs.clientX,cs.clientY),t=e;e&&e.shadowRoot&&(e=e.shadowRoot.elementFromPoint(cs.clientX,cs.clientY),e!==t);)t=e;if(q.parentNode[Ro]._isOutsideThisEl(e),t)do{if(t[Ro]){var n=void 0;if(n=t[Ro]._onDragOver({clientX:cs.clientX,clientY:cs.clientY,target:e,rootEl:t}),n&&!this.options.dragoverBubble)break}e=t}while(t=t.parentNode);Ns()}},_onTouchMove:function(e){if(ss){var t=this.options,n=t.fallbackTolerance,r=t.fallbackOffset,i=e.touches?e.touches[0]:e,a=Y&&bo(Y,!0),o=Y&&a&&a.a,s=Y&&a&&a.d,c=ws&&ys&&Do(ys),l=(i.clientX-ss.clientX+r.x)/(o||1)+(c?c[0]-bs[0]:0)/(o||1),u=(i.clientY-ss.clientY+r.y)/(s||1)+(c?c[1]-bs[1]:0)/(s||1);if(!Q.active&&!is){if(n&&Math.max(Math.abs(i.clientX-this._lastX),Math.abs(i.clientY-this._lastY))<n)return;this._onDragStart(e,!0)}if(Y){a?(a.e+=l-(ls||0),a.f+=u-(us||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})`;G(Y,`webkitTransform`,d),G(Y,`mozTransform`,d),G(Y,`msTransform`,d),G(Y,`transform`,d),ls=l,us=u,cs=i}e.cancelable&&e.preventDefault()}},_appendGhost:function(){if(!Y){var e=this.options.fallbackOnBody?document.body:X,t=K(q,!0,ws,!0,e),n=this.options;if(ws){for(ys=e;G(ys,`position`)===`static`&&G(ys,`transform`)===`none`&&ys!==document;)ys=ys.parentNode;ys!==document.body&&ys!==document.documentElement?(ys===document&&(ys=So()),t.top+=ys.scrollTop,t.left+=ys.scrollLeft):ys=So(),bs=Do(ys)}Y=q.cloneNode(!0),yo(Y,n.ghostClass,!1),yo(Y,n.fallbackClass,!0),yo(Y,n.dragClass,!0),G(Y,`transition`,``),G(Y,`transform`,``),G(Y,`box-sizing`,`border-box`),G(Y,`margin`,0),G(Y,`top`,t.top),G(Y,`left`,t.left),G(Y,`width`,t.width),G(Y,`height`,t.height),G(Y,`opacity`,`0.8`),G(Y,`position`,ws?`absolute`:`fixed`),G(Y,`zIndex`,`100000`),G(Y,`pointerEvents`,`none`),Q.ghost=Y,e.appendChild(Y),G(Y,`transform-origin`,ds/parseInt(Y.style.width)*100+`% `+fs/parseInt(Y.style.height)*100+`%`)}},_onDragStart:function(e,t){var n=this,r=e.dataTransfer,i=n.options;if(qo(`dragStart`,this,{evt:e}),Q.eventCanceled){this._onDrop();return}qo(`setupClone`,this),Q.eventCanceled||(Z=Io(q),Z.removeAttribute(`id`),Z.draggable=!1,Z.style[`will-change`]=``,this._hideClone(),yo(Z,this.options.chosenClass,!1),Q.clone=Z),n.cloneId=Ks(function(){qo(`clone`,n),!Q.eventCanceled&&(n.options.removeCloneOnHide||X.insertBefore(Z,q),n._hideClone(),Jo({sortable:n,name:`clone`}))}),!t&&yo(q,i.dragClass,!0),t?(as=!0,n._loopId=setInterval(n._emulateDragOver,50)):(W(document,`mouseup`,n._onDrop),W(document,`touchend`,n._onDrop),W(document,`touchcancel`,n._onDrop),r&&(r.effectAllowed=`move`,i.setData&&i.setData.call(n,r,q)),U(document,`drop`,n),G(q,`transform`,`translateZ(0)`)),is=!0,n._dragStartId=Ks(n._dragStarted.bind(n,t,e)),U(document,`selectstart`,n),ps=!0,uo&&G(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=ns===s,u=o.sort,d=rs||c,f,p=this,m=!1;if(xs)return;function h(o,s){qo(o,p,$a({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 Ls(X,t,q,r,n,K(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&&(yo(q,rs?rs.options.ghostClass:c.options.ghostClass,!1),yo(q,o.ghostClass,!0)),rs!==p&&p!==Q.active?rs=p:p===Q.active&&rs&&(rs=null),d===p&&(p._ignoreWhileAnimating=n),p.animateAll(function(){h(`dragOverAnimationComplete`),p._ignoreWhileAnimating=null}),p!==d&&(d.animateAll(),d._ignoreWhileAnimating=null)),(n===q&&!q.animated||n===t&&!n.animated)&&(ms=null),!o.dragoverBubble&&!e.rootEl&&n!==document&&(q.parentNode[Ro]._isOutsideThisEl(e.target),!r&&Ps(e)),!o.dragoverBubble&&e.stopPropagation&&e.stopPropagation(),m=!0}function v(){$o=Eo(q),ts=Eo(q,o.draggable),Jo({sortable:p,name:`change`,toEl:t,newIndex:$o,newDraggableIndex:ts,originalEvent:e})}if(e.preventDefault!==void 0&&e.cancelable&&e.preventDefault(),n=_o(n,o.draggable,t,!0),h(`dragOver`),Q.eventCanceled)return m;if(q.contains(e.target)||n.animated&&n.animatingX&&n.animatingY||p._ignoreWhileAnimating===n)return _(!1);if(as=!1,c&&!o.disabled&&(l?u||(a=J!==X):rs===this||(this.lastPutMode=ns.checkPull(this,c,q,e))&&s.checkPut(this,c,q,e))){if(f=this._getDirection(e,n)===`vertical`,r=K(q),h(`dragOverValid`),Q.eventCanceled)return m;if(a)return J=X,g(),this._hideClone(),h(`revert`),Q.eventCanceled||(Yo?X.insertBefore(q,Yo):X.appendChild(q)),_(!0);var y=To(t,o.draggable);if(!y||Vs(e,f,this)&&!y.animated){if(y===q)return _(!1);if(y&&t===e.target&&(n=y),n&&(i=K(n)),Ls(X,t,q,r,n,i,e,!!n)!==!1)return g(),y&&y.nextSibling?t.insertBefore(q,y.nextSibling):t.appendChild(q),J=t,v(),_(!0)}else if(y&&Bs(e,f,this)){var b=wo(t,0,o,!0);if(b===q)return _(!1);if(n=b,i=K(n),Ls(X,t,q,r,n,i,e,!1)!==!1)return g(),t.insertBefore(q,b),J=t,v(),_(!0)}else if(n.parentNode===t){i=K(n);var x=0,S,C=q.parentNode!==t,w=!ks(q.animated&&q.toRect||r,n.animated&&n.toRect||i,f),T=f?`top`:`left`,E=Co(n,`top`,`top`)||Co(q,`top`,`top`),ee=E?E.scrollTop:void 0;ms!==n&&(S=i[T],gs=!1,_s=!w&&o.invertSwap||C),x=Hs(e,n,i,f,w?1:o.swapThreshold,o.invertedSwapThreshold==null?o.swapThreshold:o.invertedSwapThreshold,_s,ms===n);var D;if(x!==0){var O=Eo(q);do O-=x,D=J.children[O];while(D&&(G(D,`display`)===`none`||D===Y))}if(x===0||D===n)return _(!1);ms=n,hs=x;var k=n.nextElementSibling,A=!1;A=x===1;var j=Ls(X,t,q,r,n,i,e,A);if(j!==!1)return(j===1||j===-1)&&(A=j===1),xs=!0,setTimeout(zs,30),g(),A&&!k?t.appendChild(q):n.parentNode.insertBefore(q,A?k:n),E&&Fo(E,0,ee-E.scrollTop),J=q.parentNode,S!==void 0&&!_s&&(vs=Math.abs(S-K(n)[T])),v(),_(!0)}if(t.contains(q))return _(!1)}return!1},_ignoreWhileAnimating:null,_offMoveEvents:function(){W(document,`mousemove`,this._onTouchMove),W(document,`touchmove`,this._onTouchMove),W(document,`pointermove`,this._onTouchMove),W(document,`dragover`,Ps),W(document,`mousemove`,Ps),W(document,`touchmove`,Ps)},_offUpEvents:function(){var e=this.el.ownerDocument;W(e,`mouseup`,this._onDrop),W(e,`touchend`,this._onDrop),W(e,`pointerup`,this._onDrop),W(e,`touchcancel`,this._onDrop),W(document,`selectstart`,this)},_onDrop:function(e){var t=this.el,n=this.options;if($o=Eo(q),ts=Eo(q,n.draggable),qo(`drop`,this,{evt:e}),J=q&&q.parentNode,$o=Eo(q),ts=Eo(q,n.draggable),Q.eventCanceled){this._nulling();return}is=!1,_s=!1,gs=!1,clearInterval(this._loopId),clearTimeout(this._dragStartTimer),qs(this.cloneId),qs(this._dragStartId),this.nativeDraggable&&(W(document,`drop`,this),W(t,`dragstart`,this._onDragStart)),this._offMoveEvents(),this._offUpEvents(),uo&&G(document.body,`user-select`,``),G(q,`transform`,``),e&&(ps&&(e.cancelable&&e.preventDefault(),!n.dropBubble&&e.stopPropagation()),Y&&Y.parentNode&&Y.parentNode.removeChild(Y),(X===J||rs&&rs.lastPutMode!==`clone`)&&Z&&Z.parentNode&&Z.parentNode.removeChild(Z),q&&(this.nativeDraggable&&W(q,`dragend`,this),Rs(q),q.style[`will-change`]=``,ps&&!is&&yo(q,rs?rs.options.ghostClass:this.options.ghostClass,!1),yo(q,this.options.chosenClass,!1),Jo({sortable:this,name:`unchoose`,toEl:J,newIndex:null,newDraggableIndex:null,originalEvent:e}),X===J?$o!==Qo&&$o>=0&&(Jo({sortable:this,name:`update`,toEl:J,originalEvent:e}),Jo({sortable:this,name:`sort`,toEl:J,originalEvent:e})):($o>=0&&(Jo({rootEl:J,name:`add`,toEl:J,fromEl:X,originalEvent:e}),Jo({sortable:this,name:`remove`,toEl:J,originalEvent:e}),Jo({rootEl:J,name:`sort`,toEl:J,fromEl:X,originalEvent:e}),Jo({sortable:this,name:`sort`,toEl:J,originalEvent:e})),rs&&rs.save()),Q.active&&(($o==null||$o===-1)&&($o=Qo,ts=es),Jo({sortable:this,name:`end`,toEl:J,originalEvent:e}),this.save()))),this._nulling()},_nulling:function(){qo(`nulling`,this),X=q=J=Y=Yo=Z=Xo=Zo=ss=cs=ps=$o=ts=Qo=es=ms=hs=rs=ns=Q.dragged=Q.ghost=Q.clone=Q.active=null,Ss.forEach(function(e){e.checked=!0}),Ss.length=ls=us=0},handleEvent:function(e){switch(e.type){case`drop`:case`dragend`:this._onDrop(e);break;case`dragenter`:case`dragover`:q&&(this._onDragOver(e),Is(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],_o(t,a.draggable,this.el,!1)&&e.push(t.getAttribute(a.dataIdAttr)||Ws(t));return e},sort:function(e,t){var n={},r=this.el;this.toArray().forEach(function(e,t){var i=r.children[t];_o(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 _o(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=Wo.modifyOption(this,e,t);r===void 0?n[e]=t:n[e]=r,e===`group`&&js(n)},destroy:function(){qo(`destroy`,this);var e=this.el;e[Ro]=null,W(e,`mousedown`,this._onTapStart),W(e,`touchstart`,this._onTapStart),W(e,`pointerdown`,this._onTapStart),this.nativeDraggable&&(W(e,`dragover`,this),W(e,`dragenter`,this)),Array.prototype.forEach.call(e.querySelectorAll(`[draggable]`),function(e){e.removeAttribute(`draggable`)}),this._onDrop(),this._disableDelayedDragEvents(),os.splice(os.indexOf(this.el),1),this.el=e=null},_hideClone:function(){if(!Zo){if(qo(`hideClone`,this),Q.eventCanceled)return;G(Z,`display`,`none`),this.options.removeCloneOnHide&&Z.parentNode&&Z.parentNode.removeChild(Z),Zo=!0}},_showClone:function(e){if(e.lastPutMode!==`clone`){this._hideClone();return}if(Zo){if(qo(`showClone`,this),Q.eventCanceled)return;q.parentNode==X&&!this.options.group.revertClone?X.insertBefore(Z,q):Yo?X.insertBefore(Z,Yo):X.appendChild(Z),this.options.group.revertClone&&this.animate(q,Z),G(Z,`display`,``),Zo=!1}}};function Is(e){e.dataTransfer&&(e.dataTransfer.dropEffect=`move`),e.cancelable&&e.preventDefault()}function Ls(e,t,n,r,i,a,o,s){var c,l=e[Ro],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||K(t),c.willInsertAfter=s,c.originalEvent=o,e.dispatchEvent(c),u&&(d=u.call(l,c,o)),d}function Rs(e){e.draggable=!1}function zs(){xs=!1}function Bs(e,t,n){var r=K(wo(n.el,0,n.options,!0)),i=Lo(n.el,n.options,Y),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 Vs(e,t,n){var r=K(To(n.el,n.options.draggable)),i=Lo(n.el,n.options,Y),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 Hs(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&&vs<l*i){if(!gs&&(hs===1?c>u+l*a/2:c<d-l*a/2)&&(gs=!0),gs)f=!0;else if(hs===1?c<u+vs:c>d-vs)return-hs}else if(c>u+l*(1-i)/2&&c<d-l*(1-i)/2)return Us(t)}return f||=o,f&&(c<u+l*a/2||c>d-l*a/2)?c>u+l/2?1:-1:0}function Us(e){return Eo(q)<Eo(e)?1:-1}function Ws(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 Gs(e){Ss.length=0;for(var t=e.getElementsByTagName(`input`),n=t.length;n--;){var r=t[n];r.checked&&Ss.push(r)}}function Ks(e){return setTimeout(e,0)}function qs(e){return clearTimeout(e)}Cs&&U(document,`touchmove`,function(e){(Q.active||is)&&e.cancelable&&e.preventDefault()}),Q.utils={on:U,off:W,css:G,find:xo,is:function(e,t){return!!_o(e,t,e,!1)},extend:Ao,throttle:No,closest:_o,toggleClass:yo,clone:Io,index:Eo,nextTick:Ks,cancelNextTick:qs,detectDirection:Os,getChild:wo},Q.get=function(e){return e[Ro]},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=$a($a({},Q.utils),e.utils)),Wo.mount(e)})},Q.create=function(e,t){return new Q(e,t)},Q.version=ao;var $=[],Js,Ys,Xs=!1,Zs,Qs,$s,ec;function tc(){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?U(document,`dragover`,this._handleAutoScroll):this.options.supportPointer?U(document,`pointermove`,this._handleFallbackAutoScroll):t.touches?U(document,`touchmove`,this._handleFallbackAutoScroll):U(document,`mousemove`,this._handleFallbackAutoScroll)},dragOverCompleted:function(e){var t=e.originalEvent;!this.options.dragOverBubble&&!t.rootEl&&this._handleAutoScroll(t)},drop:function(){this.sortable.nativeDraggable?W(document,`dragover`,this._handleAutoScroll):(W(document,`pointermove`,this._handleFallbackAutoScroll),W(document,`touchmove`,this._handleFallbackAutoScroll),W(document,`mousemove`,this._handleFallbackAutoScroll)),rc(),nc(),Po()},nulling:function(){$s=Ys=Js=Xs=ec=Zs=Qs=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($s=e,t||this.options.forceAutoScrollFallback||co||so||uo){ic(e,this.options,a,t);var o=ko(a,!0);Xs&&(!ec||r!==Zs||i!==Qs)&&(ec&&rc(),ec=setInterval(function(){var a=ko(document.elementFromPoint(r,i),!0);a!==o&&(o=a,nc()),ic(e,n.options,a,t)},10),Zs=r,Qs=i)}else{if(!this.options.bubbleScroll||ko(a,!0)===So()){nc();return}ic(e,this.options,ko(a,!1),!1)}}},no(e,{pluginName:`scroll`,initializeByDefault:!0})}function nc(){$.forEach(function(e){clearInterval(e.pid)}),$=[]}function rc(){clearInterval(ec)}var ic=No(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=So(),l=!1,u;Ys!==n&&(Ys=n,nc(),Js=t.scroll,u=t.scrollFn,Js===!0&&(Js=ko(n,!0)));var d=0,f=Js;do{var p=f,m=K(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=G(p),E=p.scrollLeft,ee=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 D=x&&(Math.abs(v-i)<=o&&E+y<C)-(Math.abs(_-i)<=o&&!!E),O=S&&(Math.abs(g-a)<=o&&ee+b<w)-(Math.abs(h-a)<=o&&!!ee);if(!$[d])for(var k=0;k<=d;k++)$[k]||($[k]={});($[d].vx!=D||$[d].vy!=O||$[d].el!==p)&&($[d].el=p,$[d].vx=D,$[d].vy=O,clearInterval($[d].pid),(D!=0||O!=0)&&(l=!0,$[d].pid=setInterval(function(){r&&this.layer===0&&Q.active._onTouchMove($s);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[Ro],n,t,e,$s,$[this.layer].el)!==`continue`||Fo($[this.layer].el,n,t)}.bind({layer:d}),24))),d++}while(t.bubbleScroll&&f!==c&&(f=ko(f,!1)));Xs=l}},30),ac=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 oc(){}oc.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=wo(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:ac},no(oc,{pluginName:`revertOnSpill`});function sc(){}sc.prototype={onSpill:function(e){var t=e.dragEl,n=e.putSortable||this.sortable;n.captureAnimationState(),t.parentNode&&t.parentNode.removeChild(t),n.animateAll()},drop:ac},no(sc,{pluginName:`removeOnSpill`}),Q.mount(new tc),Q.mount(sc,oc);function cc(e){return e==null?e:JSON.parse(JSON.stringify(e))}function lc(e){ve()&&C(e)}function uc(e){ve()?o(e):ce(e)}var dc=null,fc=null;function pc(e=null,t=null){dc=e,fc=t}function mc(){return{data:dc,clonedData:fc}}var hc=Symbol(`cloneElement`);function gc(...e){let t=ve()?.proxy,n=null,i=e[0],[,a,o]=e;Array.isArray(H(a))||(o=a,a=null);let s=null,{immediate:c=!0,clone:l=cc,forceFallback:u,fallbackOnBody:d,customUpdate:f}=H(o)??{};function p(e){let{from:t,oldIndex:r,item:i}=e,o=Array.from(t.childNodes);n=u&&!d?o.slice(0,-1):o;let s=H(H(a)?.[r]),c=l(s);pc(s,c),i[hc]=c}function m(e){let t=e.item[hc];if(!Va(t)){if(Wa(e.item),le(a)){let n=[...H(a)];a.value=Ba(n,e.newDraggableIndex,t);return}Ba(H(a),e.newDraggableIndex,t)}}function h(e){let{from:t,item:n,oldIndex:r,oldDraggableIndex:i,pullMode:o,clone:s}=e;if(Ua(t,n,r),o===`clone`){Wa(s);return}if(le(a)){let e=[...H(a)];a.value=za(e,i);return}za(H(a),i)}function g(e){if(f){f(e);return}let{from:t,item:n,oldIndex:r,oldDraggableIndex:i,newDraggableIndex:o}=e;if(Wa(n),Ua(t,n,r),le(a)){let e=[...H(a)];a.value=Ia(e,i,o);return}Ia(H(a),i,o)}function _(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}ce(()=>{if(pc(),o)throw o})}let v={onUpdate:g,onStart:p,onAdd:m,onRemove:h,onEnd:_};function y(e){let n=H(i);return e||=Ha(n)?Ga(n,t?.$el):n,e&&!Ja(e)&&(e=e.$el),e||Fa(`Root element not found`),e}function b(){let e=H(o)??{},{immediate:t,clone:n}=e,r=Ma(e,[`immediate`,`clone`]);return Ya(r,(e,t)=>{Xa(e)&&(r[e]=(e,...n)=>(Za(e,mc()),t(e,...n)))}),qa(a===null?{}:v,r)}let x=e=>{e=y(e),s&&S.destroy(),s=new Q(e,b())};r(()=>o,()=>{s&&Ya(b(),(e,t)=>{s?.option(e,t)})},{deep:!0});let S={option:(e,t)=>s?.option(e,t),destroy:()=>{s?.destroy(),s=null},save:()=>s?.save(),toArray:()=>s?.toArray(),closest:(...e)=>s?.closest(...e)};return uc(()=>{c&&x()}),lc(S.destroy),ja({start:x,pause:()=>S?.option(`disabled`,!0),resume:()=>S?.option(`disabled`,!1)},S)}var _c=[`update`,`start`,`add`,`remove`,`choose`,`unchoose`,`end`,`sort`,`filter`,`clone`,`move`,`change`],vc=R({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`,..._c.map(e=>`on${e.replace(/^\S/,e=>e.toUpperCase())}`)],emits:[`update:modelValue`,..._c],setup(e,{slots:t,emit:n,expose:r,attrs:i}){let a=_c.reduce((e,t)=>{let r=`on${t.replace(/^\S/,e=>e.toUpperCase())}`;return e[r]=(...e)=>n(t,...e),e},{}),o=A(()=>{let t=P(e),{modelValue:n}=t,r=Ma(t,[`modelValue`]),o=Object.entries(r).reduce((e,[t,n])=>{let r=H(n);return r!==void 0&&(e[t]=r),e},{});return ja(ja({},a),Ra(ja(ja({},i),o)))}),s=A({get:()=>e.modelValue,set:e=>n(`update:modelValue`,e)}),c=I(),l=_e(gc(e.target||c,s,o));return r(l),()=>pe(e.tag||`div`,{ref:c},(t?.default)?.call(t,l))}}),yc={mounted:`mounted`,unmounted:`unmounted`};yc.mounted,yc.unmounted;var bc={class:`config-log-parsers`},xc={class:`config-card`},Sc={class:`config-card__header`},Cc={class:`config-card__hint`},wc={class:`config-card`},Tc={class:`config-card__header`},Ec={class:`config-card__header-hint`},Dc={class:`config-log-parsers__order`},Oc={class:`config-log-parsers__name`},kc={key:1,class:`config-log-parsers__empty`},Ac={class:`config-log-parsers__add-row`},jc={class:`config-log-parsers__footer`},Mc=ye(R({__name:`ServiceConfigLogs`,props:{service:{}},emits:[`save`],setup(e,{emit:n}){let i=e,a=n,l=c(),{t:u}=m(),d=He(),f=I([...i.service.parserIds??[]]);r(()=>i.service,e=>{f.value=[...e.parserIds??[]]});let p=A(()=>[...d.parsers].filter(e=>e.enabled).sort((e,t)=>e.name.localeCompare(t.name))),h=A(()=>p.value.filter(e=>!f.value.includes(e.id))),g=I(f.value.map(e=>d.parsers.find(t=>t.id===e)).filter(e=>e!==void 0));r(f,e=>{let t=g.value.filter(t=>e.includes(t.id)),n=e.filter(e=>!t.find(t=>t.id===e)).map(e=>d.parsers.find(t=>t.id===e)).filter(e=>e!==void 0);g.value=[...t,...n]}),r(()=>d.parsers,()=>{g.value=f.value.map(e=>d.parsers.find(t=>t.id===e)).filter(e=>e!==void 0)});let v=I(null);function y(e){if(!e)return;let t=d.parsers.find(t=>t.id===e);t&&(f.value=[...f.value,e],g.value=[...g.value,t],v.value=null,C())}function b(e){f.value=f.value.filter(t=>t!==e),g.value=g.value.filter(t=>t.id!==e),C()}function S(){f.value=g.value.map(e=>e.id),C()}function C(){a(`save`,{parserIds:g.value.map(e=>e.id)})}return o(()=>{d.fetchParsers()}),(e,n)=>(s(),t(`div`,bc,[k(`div`,xc,[k(`div`,Sc,[n[3]||=k(`i`,{class:`pi pi-code`},null,-1),k(`span`,null,M(H(u)(`serviceConfigLogs.jsParsers`)),1)]),k(`small`,Cc,M(H(u)(`serviceConfigLogs.jsParsersHint`)),1)]),k(`div`,wc,[k(`div`,Tc,[n[4]||=k(`i`,{class:`pi pi-sort-alt`},null,-1),k(`span`,null,M(H(u)(`serviceConfigLogs.executionOrder`)),1),k(`small`,Ec,M(H(u)(`serviceConfigLogs.executionOrderHint`)),1)]),g.value.length>0?(s(),N(H(vc),{key:0,modelValue:g.value,"onUpdate:modelValue":n[0]||=e=>g.value=e,animation:150,handle:`.drag-handle`,class:`config-log-parsers__drag-list`,"data-testid":`log-parsers-drag-list`,onEnd:S},{default:D(()=>[(s(!0),t(_,null,fe(g.value,(e,r)=>(s(),t(`div`,{key:e.id,class:`config-log-parsers__drag-row`,"data-testid":`log-parsers-drag-row`},[n[5]||=k(`span`,{class:`drag-handle`,"data-testid":`drag-handle`},[k(`i`,{class:`pi pi-bars`})],-1),k(`span`,Dc,M(r+1),1),k(`span`,Oc,M(e.name),1),e.builtin?(s(),N(H(re),{key:0,severity:`secondary`,class:`config-log-parsers__builtin-badge`},{default:D(()=>[B(M(H(u)(`serviceConfigLogs.builtin`)),1)]),_:1})):x(``,!0),e.enabled?x(``,!0):(s(),N(H(re),{key:1,severity:`warn`,class:`config-log-parsers__disabled-badge`},{default:D(()=>[B(M(H(u)(`serviceConfigLogs.disabled`)),1)]),_:1})),F(H(L),{icon:`pi pi-trash`,severity:`danger`,text:``,size:`small`,class:`config-log-parsers__delete`,onClick:t=>b(e.id)},null,8,[`onClick`])]))),128))]),_:1},8,[`modelValue`])):x(``,!0),g.value.length===0?(s(),t(`div`,kc,M(H(u)(`serviceConfigLogs.empty`)),1)):x(``,!0),k(`div`,Ac,[F(H(ne),{modelValue:v.value,"onUpdate:modelValue":[n[1]||=e=>v.value=e,y],options:h.value,"option-label":`name`,"option-value":`id`,placeholder:H(u)(`serviceConfigLogs.addParser`),class:`config-log-parsers__add-select`,loading:H(d).loading,disabled:h.value.length===0},{option:D(({option:e})=>[k(`span`,null,M(e.name),1),e.builtin?(s(),N(H(re),{key:0,severity:`secondary`,class:`ml-2`,style:{"font-size":`0.65rem`,padding:`0.1rem 0.35rem`}},{default:D(()=>[B(M(H(u)(`serviceConfigLogs.builtin`)),1)]),_:1})):x(``,!0)]),_:1},8,[`modelValue`,`options`,`placeholder`,`loading`,`disabled`])])]),k(`div`,jc,[F(H(L),{label:H(u)(`serviceConfigLogs.manageParsers`),icon:`pi pi-cog`,severity:`secondary`,outlined:``,size:`small`,onClick:n[2]||=e=>H(l).push({name:`settings`,query:{section:`parsers`}})},null,8,[`label`])])]))}}),[[`__scopeId`,`data-v-2a8eb0c6`]]),Nc={class:`config-log-sources`},Pc={class:`config-card`},Fc={class:`config-card__header`},Ic={class:`config-card__hint`},Lc={key:0,class:`config-card config-card--list`},Rc={class:`source-row__info`},zc={class:`source-row__type`},Bc={class:`source-row__label`},Vc={class:`source-row__actions`},Hc={key:1,class:`config-log-sources__empty`},Uc={class:`config-log-sources__footer`},Wc={class:`dialog-form`},Gc={class:`dialog-form__field`},Kc={for:`lsrc-type`,class:`dialog-form__label`},qc={class:`dialog-form__field`},Jc={for:`lsrc-path-file`,class:`dialog-form__label`},Yc={class:`dialog-form__field`},Xc={for:`lsrc-encoding-file`,class:`dialog-form__label`},Zc={class:`dialog-form__field dialog-form__field--row`},Qc={for:`lsrc-startFromEnd-file`,class:`dialog-form__label`},$c={class:`dialog-form__field dialog-form__field--row`},el={for:`lsrc-createIfNotExists-file`,class:`dialog-form__label`},tl={class:`dialog-form__field`},nl={for:`lsrc-connectionString-mongo`,class:`dialog-form__label`},rl={class:`dialog-form__row`},il={class:`dialog-form__field`},al={class:`dialog-form__field`},ol={class:`dialog-form__row`},sl={class:`dialog-form__field`},cl={class:`dialog-form__field`},ll={class:`dialog-form__field`},ul={class:`dialog-form__row`},dl={class:`dialog-form__field dialog-form__field--grow`},fl={class:`dialog-form__field dialog-form__field--port`},pl={class:`dialog-form__row`},ml={class:`dialog-form__field`},hl={class:`dialog-form__field`},gl={class:`dialog-form__row`},_l={class:`dialog-form__field`},vl={class:`dialog-form__field`},yl={class:`dialog-form__row`},bl={class:`dialog-form__field`},xl={class:`dialog-form__field`},Sl={class:`dialog-form__row`},Cl={class:`dialog-form__field`},wl={class:`dialog-form__field`},Tl={class:`dialog-form__field`},El={key:3,class:`dialog-form__hint-block`},Dl=ye(R({__name:`ServiceConfigLogSources`,props:{service:{}},emits:[`save`],setup(e,{emit:n}){let{t:i}=m(),a=e,o=n,c=[{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 l(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 u=I([...a.service.logSources??[]]);r(()=>a.service.logSources,e=>{u.value=[...e??[]]});let d=I(!1),f=I(null),p=I(l(`console`));function h(){f.value=null,p.value=l(`file`),d.value=!0}function v(e){f.value=e,p.value={...u.value[e]},d.value=!0}function y(e){p.value=l(e)}function b(){f.value===null?u.value=[...u.value,{...p.value}]:u.value=u.value.map((e,t)=>t===f.value?{...p.value}:e),d.value=!1,o(`save`,{logSources:u.value})}function S(e){u.value=u.value.filter((t,n)=>n!==e),o(`save`,{logSources:u.value})}function C(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 w(e){return e===`console`?`pi-terminal`:e===`file`?`pi-file`:`pi-database`}return(e,n)=>(s(),t(`div`,Nc,[k(`div`,Pc,[k(`div`,Fc,[n[23]||=k(`i`,{class:`pi pi-inbox`},null,-1),k(`span`,null,M(H(i)(`serviceConfigLogSources.title`)),1)]),k(`small`,Ic,M(H(i)(`serviceConfigLogSources.hint`)),1)]),u.value.length>0?(s(),t(`div`,Lc,[(s(!0),t(_,null,fe(u.value,(e,n)=>(s(),t(`div`,{key:n,class:`source-row`},[k(`i`,{class:g(`pi ${w(e.type)} source-row__icon`)},null,2),k(`div`,Rc,[k(`span`,zc,M(e.type),1),k(`span`,Bc,M(C(e)),1)]),k(`div`,Vc,[F(H(L),{icon:`pi pi-pencil`,text:``,size:`small`,severity:`secondary`,onClick:e=>v(n)},null,8,[`onClick`]),F(H(L),{icon:`pi pi-trash`,text:``,size:`small`,severity:`danger`,onClick:e=>S(n)},null,8,[`onClick`])])]))),128))])):(s(),t(`div`,Hc,[n[24]||=k(`i`,{class:`pi pi-inbox config-log-sources__empty-icon`},null,-1),k(`p`,null,M(H(i)(`serviceConfigLogSources.empty`)),1),k(`small`,null,M(H(i)(`serviceConfigLogSources.emptyHint`)),1)])),k(`div`,Uc,[F(H(L),{label:H(i)(`serviceConfigLogSources.addSource`),icon:`pi pi-plus`,size:`small`,onClick:h},null,8,[`label`])]),F(H(se),{visible:d.value,"onUpdate:visible":n[22]||=e=>d.value=e,header:f.value===null?H(i)(`serviceConfigLogSources.addDialog`):H(i)(`serviceConfigLogSources.editDialog`),modal:``,style:{width:`520px`}},{footer:D(()=>[F(H(L),{label:H(i)(`serviceConfigLogSources.cancel`),severity:`secondary`,outlined:``,onClick:n[21]||=e=>d.value=!1},null,8,[`label`]),F(H(L),{label:f.value===null?H(i)(`serviceConfigLogSources.add`):H(i)(`serviceConfigLogSources.save`),icon:`pi pi-check`,onClick:b},null,8,[`label`])]),default:D(()=>[k(`div`,Wc,[k(`div`,Gc,[k(`label`,Kc,M(H(i)(`serviceConfigLogSources.type`)),1),F(H(ne),{"input-id":`lsrc-type`,"model-value":p.value.type,options:c,"option-label":`label`,"option-value":`value`,class:`dialog-form__input`,"onUpdate:modelValue":y},null,8,[`model-value`])]),p.value.type===`file`?(s(),t(_,{key:0},[k(`div`,qc,[k(`label`,Jc,[B(M(H(i)(`serviceConfigLogSources.path`))+` `,1),n[25]||=k(`span`,{class:`dialog-form__required`},`*`,-1)]),F(H(z),{id:`lsrc-path-file`,modelValue:p.value.path,"onUpdate:modelValue":n[0]||=e=>p.value.path=e,class:`dialog-form__input`,placeholder:`/var/log/app.log`},null,8,[`modelValue`])]),k(`div`,Yc,[k(`label`,Xc,M(H(i)(`serviceConfigLogSources.encoding`)),1),F(H(z),{id:`lsrc-encoding-file`,modelValue:p.value.encoding,"onUpdate:modelValue":n[1]||=e=>p.value.encoding=e,class:`dialog-form__input`,placeholder:`utf-8`},null,8,[`modelValue`])]),k(`div`,Zc,[k(`label`,Qc,M(H(i)(`serviceConfigLogSources.startFromEnd`)),1),F(H(Oe),{"input-id":`lsrc-startFromEnd-file`,modelValue:p.value.startFromEnd,"onUpdate:modelValue":n[2]||=e=>p.value.startFromEnd=e},null,8,[`modelValue`])]),k(`div`,$c,[k(`label`,el,M(H(i)(`serviceConfigLogSources.createIfNotExists`)),1),F(H(Oe),{"input-id":`lsrc-createIfNotExists-file`,modelValue:p.value.createIfNotExists,"onUpdate:modelValue":n[3]||=e=>p.value.createIfNotExists=e},null,8,[`modelValue`])])],64)):p.value.type===`mongo`?(s(),t(_,{key:1},[k(`div`,tl,[k(`label`,nl,[B(M(H(i)(`serviceConfigLogSources.connectionString`))+` `,1),n[26]||=k(`span`,{class:`dialog-form__required`},`*`,-1)]),F(H(z),{id:`lsrc-connectionString-mongo`,modelValue:p.value.connectionString,"onUpdate:modelValue":n[4]||=e=>p.value.connectionString=e,class:`dialog-form__input`,placeholder:`mongodb://user:pass@host:27017`,type:`password`,autocomplete:`off`},null,8,[`modelValue`])]),k(`div`,rl,[k(`div`,il,[n[27]||=k(`label`,{for:`lsrc-database-mongo`,class:`dialog-form__label`},[B(`Database `),k(`span`,{class:`dialog-form__required`},`*`)],-1),F(H(z),{id:`lsrc-database-mongo`,modelValue:p.value.database,"onUpdate:modelValue":n[5]||=e=>p.value.database=e,class:`dialog-form__input`,placeholder:`mydb`},null,8,[`modelValue`])]),k(`div`,al,[n[28]||=k(`label`,{for:`lsrc-collection-mongo`,class:`dialog-form__label`},[B(`Collection `),k(`span`,{class:`dialog-form__required`},`*`)],-1),F(H(z),{id:`lsrc-collection-mongo`,modelValue:p.value.collection,"onUpdate:modelValue":n[6]||=e=>p.value.collection=e,class:`dialog-form__input`,placeholder:`logs`},null,8,[`modelValue`])])]),k(`div`,ol,[k(`div`,sl,[n[29]||=k(`label`,{for:`lsrc-timestampField-mongo`,class:`dialog-form__label`},`Timestamp field`,-1),F(H(z),{id:`lsrc-timestampField-mongo`,modelValue:p.value.timestampField,"onUpdate:modelValue":n[7]||=e=>p.value.timestampField=e,class:`dialog-form__input`,placeholder:`timestamp`},null,8,[`modelValue`])]),k(`div`,cl,[n[30]||=k(`label`,{for:`lsrc-messageField-mongo`,class:`dialog-form__label`},`Message field`,-1),F(H(z),{id:`lsrc-messageField-mongo`,modelValue:p.value.messageField,"onUpdate:modelValue":n[8]||=e=>p.value.messageField=e,class:`dialog-form__input`,placeholder:`message`},null,8,[`modelValue`])])]),k(`div`,ll,[n[31]||=k(`label`,{for:`lsrc-levelField-mongo`,class:`dialog-form__label`},[B(`Level field `),k(`span`,{class:`dialog-form__hint`},`(optional)`)],-1),F(H(z),{id:`lsrc-levelField-mongo`,modelValue:p.value.levelField,"onUpdate:modelValue":n[9]||=e=>p.value.levelField=e,class:`dialog-form__input`,placeholder:`level`},null,8,[`modelValue`])])],64)):p.value.type===`mysql`?(s(),t(_,{key:2},[k(`div`,ul,[k(`div`,dl,[n[32]||=k(`label`,{for:`lsrc-host-mysql`,class:`dialog-form__label`},[B(`Host `),k(`span`,{class:`dialog-form__required`},`*`)],-1),F(H(z),{id:`lsrc-host-mysql`,modelValue:p.value.host,"onUpdate:modelValue":n[10]||=e=>p.value.host=e,class:`dialog-form__input`,placeholder:`localhost`},null,8,[`modelValue`])]),k(`div`,fl,[n[33]||=k(`label`,{for:`lsrc-port-mysql`,class:`dialog-form__label`},`Port`,-1),F(H(Ee),{"input-id":`lsrc-port-mysql`,modelValue:p.value.port,"onUpdate:modelValue":n[11]||=e=>p.value.port=e,min:1,max:65535,class:`dialog-form__input`},null,8,[`modelValue`])])]),k(`div`,pl,[k(`div`,ml,[n[34]||=k(`label`,{for:`lsrc-user-mysql`,class:`dialog-form__label`},[B(`User `),k(`span`,{class:`dialog-form__required`},`*`)],-1),F(H(z),{id:`lsrc-user-mysql`,modelValue:p.value.user,"onUpdate:modelValue":n[12]||=e=>p.value.user=e,class:`dialog-form__input`,placeholder:`root`},null,8,[`modelValue`])]),k(`div`,hl,[n[35]||=k(`label`,{for:`lsrc-password-mysql`,class:`dialog-form__label`},`Password`,-1),F(H(z),{id:`lsrc-password-mysql`,modelValue:p.value.password,"onUpdate:modelValue":n[13]||=e=>p.value.password=e,class:`dialog-form__input`,type:`password`,autocomplete:`new-password`},null,8,[`modelValue`])])]),k(`div`,gl,[k(`div`,_l,[n[36]||=k(`label`,{for:`lsrc-database-mysql`,class:`dialog-form__label`},[B(`Database `),k(`span`,{class:`dialog-form__required`},`*`)],-1),F(H(z),{id:`lsrc-database-mysql`,modelValue:p.value.database,"onUpdate:modelValue":n[14]||=e=>p.value.database=e,class:`dialog-form__input`,placeholder:`app_db`},null,8,[`modelValue`])]),k(`div`,vl,[n[37]||=k(`label`,{for:`lsrc-table-mysql`,class:`dialog-form__label`},[B(`Table `),k(`span`,{class:`dialog-form__required`},`*`)],-1),F(H(z),{id:`lsrc-table-mysql`,modelValue:p.value.table,"onUpdate:modelValue":n[15]||=e=>p.value.table=e,class:`dialog-form__input`,placeholder:`logs`},null,8,[`modelValue`])])]),k(`div`,yl,[k(`div`,bl,[n[38]||=k(`label`,{for:`lsrc-timestampColumn-mysql`,class:`dialog-form__label`},`Timestamp column`,-1),F(H(z),{id:`lsrc-timestampColumn-mysql`,modelValue:p.value.timestampColumn,"onUpdate:modelValue":n[16]||=e=>p.value.timestampColumn=e,class:`dialog-form__input`,placeholder:`created_at`},null,8,[`modelValue`])]),k(`div`,xl,[n[39]||=k(`label`,{for:`lsrc-messageColumn-mysql`,class:`dialog-form__label`},`Message column`,-1),F(H(z),{id:`lsrc-messageColumn-mysql`,modelValue:p.value.messageColumn,"onUpdate:modelValue":n[17]||=e=>p.value.messageColumn=e,class:`dialog-form__input`,placeholder:`message`},null,8,[`modelValue`])])]),k(`div`,Sl,[k(`div`,Cl,[n[40]||=k(`label`,{for:`lsrc-levelColumn-mysql`,class:`dialog-form__label`},[B(`Level column `),k(`span`,{class:`dialog-form__hint`},`(optional)`)],-1),F(H(z),{id:`lsrc-levelColumn-mysql`,modelValue:p.value.levelColumn,"onUpdate:modelValue":n[18]||=e=>p.value.levelColumn=e,class:`dialog-form__input`,placeholder:`level`},null,8,[`modelValue`])]),k(`div`,wl,[n[41]||=k(`label`,{for:`lsrc-pollIntervalMs-mysql`,class:`dialog-form__label`},`Poll interval (ms)`,-1),F(H(Ee),{"input-id":`lsrc-pollIntervalMs-mysql`,modelValue:p.value.pollIntervalMs,"onUpdate:modelValue":n[19]||=e=>p.value.pollIntervalMs=e,min:500,max:6e4,class:`dialog-form__input`},null,8,[`modelValue`])])]),k(`div`,Tl,[n[42]||=k(`label`,{for:`lsrc-query-mysql`,class:`dialog-form__label`},[B(`Custom query `),k(`span`,{class:`dialog-form__hint`},[B(`(optional, must include `),k(`code`,null,`WHERE … > ?`),B(`)`)])],-1),F(H(z),{id:`lsrc-query-mysql`,modelValue:p.value.query,"onUpdate:modelValue":n[20]||=e=>p.value.query=e,class:`dialog-form__input`,placeholder:`SELECT * FROM logs WHERE created_at > ? ORDER BY id ASC`},null,8,[`modelValue`])])],64)):p.value.type===`console`?(s(),t(`small`,El,`The console source captures stdout/stderr and is always active. Adding it here has no effect unless you want to track it explicitly.`)):x(``,!0)])]),_:1},8,[`visible`,`header`])]))}}),[[`__scopeId`,`data-v-1ceb461a`]]),Ol={class:`config-traefik`},kl={class:`traefik-entry__fields`},Al=ye(R({__name:`ServiceConfigTraefik`,props:{service:{}},emits:[`save`],setup(e,{emit:n}){let i=e,a=n,c=I([...i.service.localUrls??[]]),l=I(null);o(async()=>{i.service.agentId&&(l.value=(await E.settings.getAgentTraefikConfig.query({agentId:i.service.agentId})).enabled)});let u=null;r(()=>i.service,e=>{u||(c.value=[...e.localUrls??[]])});function d(){c.value=[...c.value,{url:``,port:3e3}]}function f(e){c.value=c.value.filter((t,n)=>n!==e),m()}function p(e,t,n){c.value=c.value.map((r,i)=>i===e?{...r,[t]:n}:r)}function m(){u&&clearTimeout(u),u=setTimeout(()=>{a(`save`,{localUrls:c.value.filter(e=>e.url.trim())}),u=null},150)}return(e,n)=>(s(),t(`div`,Ol,[l.value===!1?(s(),N(H(Se),{key:0,severity:`warn`,closable:!1},{default:D(()=>[n[1]||=B(` Traefik n'est pas activé. Configurez-le dans `,-1),F(H(be),{to:{name:`settings`,query:{section:`agents`}}},{default:D(()=>[...n[0]||=[B(`Paramètres → Agents`,-1)]]),_:1}),n[2]||=B(` (bouton Traefik sur la ligne de l'agent) pour que ces URLs soient actives. `,-1)]),_:1})):x(``,!0),(s(!0),t(_,null,fe(c.value,(e,n)=>(s(),t(`div`,{key:n,class:`traefik-entry`},[k(`div`,kl,[F(H(z),{"model-value":e.url,class:`traefik-entry__url`,placeholder:`mon-app.local.mondomaine.com`,"onUpdate:modelValue":e=>p(n,`url`,e),onBlur:m,onKeydown:T(O(m,[`prevent`]),[`enter`])},null,8,[`model-value`,`onUpdate:modelValue`,`onKeydown`]),F(H(Ee),{"model-value":e.port,class:`traefik-entry__port`,min:1,max:65535,"use-grouping":!1,placeholder:`3000`,"onUpdate:modelValue":e=>{p(n,`port`,e??3e3),m()}},null,8,[`model-value`,`onUpdate:modelValue`]),F(H(L),{icon:`pi pi-trash`,severity:`danger`,text:``,size:`small`,onClick:e=>f(n)},null,8,[`onClick`])])]))),128)),F(H(L),{icon:`pi pi-plus`,label:`Ajouter une URL`,size:`small`,outlined:``,onClick:d})]))}}),[[`__scopeId`,`data-v-a71f945b`]]),jl={class:`config-view`,"data-testid":`config-view`},Ml={class:`config-view__header`},Nl={class:`config-view__title`},Pl={class:`config-view__actions`},Fl=ye(R({__name:`ServiceConfigView`,props:{service:{},projectId:{}},emits:[`remove-service`],setup(e,{emit:r}){let i=e,a=r,{t:o}=m(),u=b(),d=te(),f=n(),{isDebug:p}=Xt(),h=l(),g=c(),_=[`general`,`commands`,`shortcuts`,`env`,`health`,`log-parsers`,`log-sources`,`traefik`],v=A(()=>{let e=h.query.configTab;return _.includes(e)?e:`general`});function y(e){g.replace({query:{...h.query,configTab:e}})}let x=A(()=>d.getByRef({id:i.projectId,orgId:f.activeOrgId})?.activeEnvironmentId);async function S(e,t){await t()?p.value&&console.debug(`[autosave] ${e} saved`):console.error(`[autosave] ${e} failed:`,u.error??`Save failed`)}async function C(e){await S(`General`,()=>u.update(i.service.id,e))}async function w(e){await S(`Commands`,()=>u.update(i.service.id,e))}async function T(e){await S(`Health check`,()=>u.update(i.service.id,{healthCheck:e??null}))}async function E(e){await S(`Shortcuts`,()=>u.update(i.service.id,{shortcuts:e}))}async function ee(e){await S(`Docker`,()=>u.update(i.service.id,{dockerConfig:e}))}async function O(e){await S(`Log parsers`,()=>u.update(i.service.id,e))}async function j(e){await S(`Log sources`,()=>u.update(i.service.id,e))}async function N(e){await S(`Traefik`,()=>u.update(i.service.id,e))}function ne(){a(`remove-service`,i.service.id)}return(n,r)=>(s(),t(`div`,jl,[k(`div`,Ml,[k(`h2`,Nl,M(H(o)(`serviceConfigView.title`)),1),k(`div`,Pl,[F(H(L),{label:H(o)(`serviceConfigView.remove`),icon:`pi pi-trash`,severity:`danger`,size:`small`,outlined:``,onClick:ne},null,8,[`label`])])]),F(H(Ae),{value:v.value,class:`config-view__tabs`,"onUpdate:value":y},{default:D(()=>[F(H(je),null,{default:D(()=>[F(H(Ne),{value:`general`,"data-testid":`tab-config`},{default:D(()=>[r[0]||=k(`i`,{class:`pi pi-cog tab-icon`},null,-1),k(`span`,null,M(H(o)(`serviceConfigView.tabGeneral`)),1)]),_:1}),F(H(Ne),{value:`commands`,"data-testid":`tab-commands`},{default:D(()=>[r[1]||=k(`i`,{class:`pi pi-code tab-icon`},null,-1),k(`span`,null,M(H(o)(`serviceConfigView.tabCommands`)),1)]),_:1}),F(H(Ne),{value:`shortcuts`,"data-testid":`tab-shortcuts`},{default:D(()=>[r[2]||=k(`i`,{class:`pi pi-bolt tab-icon`},null,-1),k(`span`,null,M(H(o)(`serviceConfigView.tabShortcuts`)),1)]),_:1}),F(H(Ne),{value:`env`,"data-testid":`tab-env`},{default:D(()=>[r[3]||=k(`i`,{class:`pi pi-database tab-icon`},null,-1),k(`span`,null,M(H(o)(`serviceConfigView.tabEnvironment`)),1)]),_:1}),F(H(Ne),{value:`health`},{default:D(()=>[r[4]||=k(`i`,{class:`pi pi-heart tab-icon`},null,-1),k(`span`,null,M(H(o)(`serviceConfigView.tabHealthCheck`)),1)]),_:1}),F(H(Ne),{value:`log-parsers`,"data-testid":`tab-log-parsers`},{default:D(()=>[r[5]||=k(`i`,{class:`pi pi-list tab-icon`},null,-1),k(`span`,null,M(H(o)(`serviceConfigView.tabLogParsers`)),1)]),_:1}),F(H(Ne),{value:`log-sources`},{default:D(()=>[r[6]||=k(`i`,{class:`pi pi-inbox tab-icon`},null,-1),k(`span`,null,M(H(o)(`serviceConfigView.tabLogSources`)),1)]),_:1}),F(H(Ne),{value:`traefik`},{default:D(()=>[...r[7]||=[k(`i`,{class:`pi pi-server tab-icon`},null,-1),k(`span`,null,`Traefik`,-1)]]),_:1})]),_:1}),F(H(Me),null,{default:D(()=>[F(H(Pe),{value:`general`},{default:D(()=>[F(Mn,{service:e.service,onSave:C},null,8,[`service`])]),_:1}),F(H(Pe),{value:`commands`},{default:D(()=>[F(ii,{service:e.service,onSave:w,onDockerSave:ee},null,8,[`service`])]),_:1}),F(H(Pe),{value:`shortcuts`,"data-testid":`tabpanel-shortcuts`},{default:D(()=>[F(Ta,{service:e.service,onSave:E},null,8,[`service`])]),_:1}),F(H(Pe),{value:`env`},{default:D(()=>[F(Wi,{service:e.service,"project-id":e.projectId,"active-environment-id":x.value},null,8,[`service`,`project-id`,`active-environment-id`])]),_:1}),F(H(Pe),{value:`health`},{default:D(()=>[F(pa,{service:e.service,onSave:T},null,8,[`service`])]),_:1}),F(H(Pe),{value:`log-parsers`,"data-testid":`tabpanel-log-parsers`},{default:D(()=>[F(Mc,{service:e.service,onSave:O},null,8,[`service`])]),_:1}),F(H(Pe),{value:`log-sources`},{default:D(()=>[F(Dl,{service:e.service,onSave:j},null,8,[`service`])]),_:1}),F(H(Pe),{value:`traefik`},{default:D(()=>[F(Al,{service:e.service,onSave:N},null,8,[`service`])]),_:1})]),_:1})]),_:1},8,[`value`])]))}}),[[`__scopeId`,`data-v-af965568`]]),Il={key:0,class:`service-detail`},Ll={key:1,class:`service-detail__not-found`},Rl=ye(R({__name:`ServiceDetailPage`,setup(e){let n=l(),i=c(),a=v(),o=de(),{t:d}=m(),f=b(),p=ie(),h=te(),{setServiceContext:g}=y(),_=A(()=>n.params.id);r(_,e=>g(e),{immediate:!0}),C(()=>g(null));let S=A(()=>{let e=n.params.tab;return e===`terminal`||e===`metrics`||e===`config`||e===`git`||e===`wiki`?e:`terminal`}),w=A(()=>f.getById(_.value)),T=A(()=>p.getByService(_.value)),E=A(()=>h.currentProject?.id??``);function ee(e){let t=f.getById(e);o.require({message:d(`serviceDetail.deleteConfirmMessage`,{name:t?.name??e}),header:d(`serviceDetail.deleteConfirmHeader`),icon:`pi pi-exclamation-triangle`,rejectLabel:d(`actions.cancel`),acceptLabel:d(`actions.delete`),acceptProps:{severity:`danger`},accept:async()=>{await f.remove(e)&&(a.add({severity:`success`,summary:d(`serviceDetail.removed`),detail:d(`serviceDetail.deleted`),life:3e3}),i.push(`/`))}})}return(e,n)=>w.value?(s(),t(`div`,Il,[S.value===`terminal`?(s(),N(It,{key:`terminal-`+_.value,service:w.value,processes:T.value},null,8,[`service`,`processes`])):S.value===`metrics`?(s(),N(qt,{key:`metrics-`+_.value,service:w.value,processes:T.value},null,8,[`service`,`processes`])):S.value===`config`?(s(),N(Fl,{key:`config-`+_.value,service:w.value,"project-id":E.value,onRemoveService:ee},null,8,[`service`,`project-id`])):S.value===`git`?(s(),N(u,{key:`git-`+_.value,"service-id":_.value},null,8,[`service-id`])):S.value===`wiki`?(s(),N(Ue,{key:`wiki-`+_.value,scope:`service:${_.value}`},null,8,[`scope`])):x(``,!0)])):(s(),t(`div`,Ll,[k(`p`,null,M(H(d)(`serviceDetail.notFound`)),1)]))}}),[[`__scopeId`,`data-v-e3e9fe7f`]]);export{Rl as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{$ as e,$r as t,At as n,Ci as r,Di as i,Dn as ee,En as te,In as ne,J as re,Kr as a,Mn as ie,Q as ae,Qr as o,R as oe,Ur as s,Vt as c,Wi as se,Wr as l,Xr as u,Yr as d,Z as ce,Zi as f,Zt as p,c as le,ii as m,ki as ue,la as h,mn as g,oi as _,on as v,sa as de,un as y,va as b}from"./index-Do0zA8cN.js";import{n as x}from"./plus-jYeRYaw9.js";import{t as fe}from"./fieldset-BVRjgmg4.js";import{n as pe,t as me}from"./autocomplete-CDWkaHAi.js";import{t as S}from"./divider-C1huit3M.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`},be={class:`form-group`},C={for:`svc-project`},w={class:`form-hint`},T={class:`form-group`},E={for:`svc-agent`},D={class:`form-hint`},O={class:`form-group`},k={for:`svc-name`},A={class:`form-hint`},j={class:`form-actions`},M={class:`form-section`},N={class:`form-row`},xe={class:`form-group flex-1`},Se={for:`svc-name-edit`},Ce={class:`form-group`,style:{width:`160px`}},we={for:`svc-runner`},Te={class:`form-group`},Ee={for:`svc-agent-edit`},De={class:`form-hint`},Oe={class:`form-row`},ke={class:`form-group flex-1`},Ae={for:`svc-cwd`},je={class:`form-group`,style:{"min-width":`200px`}},Me={for:`svc-ports`},Ne={class:`form-group switch-group`},Pe={for:`svc-autorestart`},Fe={class:`form-section`},Ie={class:`section-header`},Le={key:0,class:`empty-env`},Re={class:`form-group`},ze={for:`hc-path`},Be={class:`form-row`},Ve={class:`form-group flex-1`},He={for:`hc-interval`},Ue={class:`form-group flex-1`},We={for:`hc-timeout`},Ge={class:`form-group flex-1`},Ke={for:`hc-retries`},P=`__inherit__`,F=y(_({__name:`ServiceFormPage`,props:{id:{}},setup(_){let y=_,F=ee(),qe=te(),I=ie(),L=ce(),R=ae(),z=re(),B=n(),Je=le(),{t:V}=ne(),H=d(()=>!!y.id),U=d(()=>qe.query.projectId),W=h(!1),G=h(!1),K=h(null),q=h(null),J=h(!1),Y=de({projectId:``,agentId:P,name:``,cwd:``,ports:[],runner:`native`,autoRestart:!1,healthCheck:{enabled:!1,path:``,interval:3e4,timeout:5e3,retries:3}}),X=h([]),Ye=[{label:`Native`,value:`native`},{label:`Docker`,value:`docker`}],Xe=d(()=>L.projects.map(e=>({label:e.name,value:e.id}))),Z=d(()=>[{label:V(`serviceForm.agentInherit`),value:P},...z.agents.map(e=>({label:`${e.config.name} ${e.status.connected?`(Online)`:`(Offline)`}`,value:e.config.id}))]);function Q(){X.value=[...X.value,{key:``,value:``,isSecret:!1}]}function Ze(e){X.value=X.value.filter((t,n)=>n!==e)}function Qe(){let e={},t=!1;for(let n of X.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(y.id){W.value=!0;try{let e=await c.service.get.query({id:y.id});Y.agentId=e.agentId??P,Y.name=e.name,Y.cwd=e.cwd??``,Y.ports=(e.ports??[]).map(String),Y.runner=e.runner,Y.autoRestart=e.autoRestart,e.healthCheck&&(Y.healthCheck.enabled=!0,Y.healthCheck.path=e.healthCheck.path,Y.healthCheck.interval=e.healthCheck.interval,Y.healthCheck.timeout=e.healthCheck.timeout,Y.healthCheck.retries=e.healthCheck.retries),e.variables&&typeof e.variables==`object`&&Object.keys(e.variables).length>0&&(X.value=Object.entries(e.variables).map(([e,t])=>{let n=t;return{key:e,value:n.value.value??``,isSecret:n.value.isSecret??!1}}))}catch(t){I.add({severity:`error`,summary:V(`serviceForm.error`),detail:e(t)??V(`serviceForm.failedToLoad`),life:5e3}),F.back()}finally{W.value=!1}}}async function $(){if(!(!H.value||!y.id||G.value||W.value)){if(!Y.name.trim()){I.add({severity:`warn`,summary:V(`serviceForm.validation`),detail:V(`serviceForm.nameRequired`),life:3e3});return}G.value=!0;try{let e={agentId:Y.agentId===P?null:Y.agentId||null,name:Y.name.trim(),cwd:Y.cwd.trim()||void 0,ports:Y.ports.map(Number).filter(e=>e>0&&e<=65535),runner:Y.runner,autoRestart:Y.autoRestart,variables:Qe(),healthCheck:Y.healthCheck.enabled?{path:Y.healthCheck.path,interval:Y.healthCheck.interval,timeout:Y.healthCheck.timeout,retries:Y.healthCheck.retries}:void 0};(await c.service.update.mutate({id:y.id,...e}))?.stoppedForAgentChange?(K.value=e.agentId,q.value=y.id,I.add({severity:`warn`,summary:V(`serviceForm.saved`),detail:V(`serviceForm.agentChangedServiceStopped`),life:4e3})):I.add({severity:`success`,summary:V(`serviceForm.saved`),life:1500})}catch(t){I.add({severity:`error`,summary:V(`serviceForm.error`),detail:e(t)??V(`serviceForm.failedToSave`),life:5e3})}finally{G.value=!1}}}async function et(){if(!(!K.value||!q.value)){J.value=!0;try{await Je.start(K.value,q.value),K.value=null,q.value=null,I.add({severity:`success`,summary:V(`serviceForm.restarted`),life:2e3})}catch(t){I.add({severity:`error`,summary:V(`serviceForm.error`),detail:e(t),life:5e3})}finally{J.value=!1}}}async function tt(){if(!Y.name.trim()){I.add({severity:`warn`,summary:V(`serviceForm.validation`),detail:V(`serviceForm.nameRequired`),life:3e3});return}if(!Y.projectId){I.add({severity:`warn`,summary:V(`serviceForm.validation`),detail:V(`serviceForm.projectRequired`),life:3e3});return}G.value=!0;try{let e=await R.create({name:Y.name.trim(),...Y.agentId&&Y.agentId!==P?{agentId:Y.agentId}:{}});if(!e)throw Error(R.error??`Failed to create service`);let t=L.getByRef({id:Y.projectId,orgId:B.activeOrgId})??L.getById(Y.projectId);await L.addService(t??{id:Y.projectId},e.id),I.add({severity:`success`,summary:V(`serviceForm.serviceCreated`),detail:V(`serviceForm.configureAfterCreate`),life:3e3}),F.push({name:`service-detail`,params:{id:e.id,tab:`config`}})}catch(t){I.add({severity:`error`,summary:V(`serviceForm.error`),detail:e(t)??V(`serviceForm.failedToSave`),life:5e3})}finally{G.value=!1}}return r(async()=>{await Promise.all([L.fetchAll(),z.fetchAll()]),U.value?Y.projectId=U.value:!Y.projectId&&B.activeProjectId&&(Y.projectId=B.activeProjectId),H.value&&await $e()}),(e,n)=>(i(),t(`div`,he,[u(`div`,ge,[m(b(g),{icon:`pi pi-arrow-left`,severity:`secondary`,text:``,rounded:``,onClick:n[0]||=e=>b(F).back()}),u(`h1`,null,f(H.value?b(V)(`serviceForm.editTitle`):b(V)(`serviceForm.createTitle`)),1)]),q.value?(i(),t(`div`,_e,[u(`span`,null,f(b(V)(`serviceForm.agentChangedServiceStopped`)),1),m(b(g),{label:b(V)(`serviceForm.restartNow`),icon:`pi pi-play`,severity:`warning`,size:`small`,loading:J.value,onClick:et},null,8,[`label`,`loading`]),m(b(g),{icon:`pi pi-times`,severity:`secondary`,text:``,rounded:``,size:`small`,onClick:n[1]||=e=>{q.value=null,K.value=null}})])):o(``,!0),W.value?(i(),t(`div`,ve,[m(b(oe))])):(i(),t(`form`,{key:2,class:`service-form`,onSubmit:l(tt,[`prevent`])},[H.value?(i(),t(a,{key:1},[u(`div`,M,[u(`div`,N,[u(`div`,xe,[u(`label`,Se,f(b(V)(`serviceForm.nameLabelShort`)),1),m(b(v),{id:`svc-name-edit`,modelValue:Y.name,"onUpdate:modelValue":n[6]||=e=>Y.name=e,placeholder:`my-service`,class:`w-full`,onBlur:$,onKeydown:s(l($,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])]),u(`div`,Ce,[u(`label`,we,f(b(V)(`serviceForm.runnerLabel`)),1),m(b(p),{id:`svc-runner`,modelValue:Y.runner,"onUpdate:modelValue":n[7]||=e=>Y.runner=e,options:Ye,optionLabel:`label`,optionValue:`value`,class:`w-full`,onChange:$},null,8,[`modelValue`])])]),u(`div`,Te,[u(`label`,Ee,f(b(V)(`serviceForm.agentLabel`)),1),m(b(p),{id:`svc-agent-edit`,modelValue:Y.agentId,"onUpdate:modelValue":n[8]||=e=>Y.agentId=e,options:Z.value,optionLabel:`label`,optionValue:`value`,class:`w-full`,onChange:$},null,8,[`modelValue`,`options`]),u(`small`,De,f(b(V)(`serviceForm.agentHintEdit`)),1)]),u(`div`,Oe,[u(`div`,ke,[u(`label`,Ae,f(b(V)(`serviceForm.cwdLabel`)),1),m(b(v),{id:`svc-cwd`,modelValue:Y.cwd,"onUpdate:modelValue":n[9]||=e=>Y.cwd=e,placeholder:`.`,class:`w-full`,onBlur:$,onKeydown:s(l($,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])]),u(`div`,je,[u(`label`,Me,f(b(V)(`serviceForm.portsLabel`)),1),m(b(me),{inputId:`svc-ports`,modelValue:Y.ports,"onUpdate:modelValue":n[10]||=e=>Y.ports=e,multiple:``,typeahead:!1,placeholder:b(V)(`serviceForm.portsPlaceholder`),class:`w-full`,onChange:$},null,8,[`modelValue`,`placeholder`])])]),u(`div`,Ne,[m(b(pe),{modelValue:Y.autoRestart,"onUpdate:modelValue":n[11]||=e=>Y.autoRestart=e,inputId:`svc-autorestart`,onChange:$},null,8,[`modelValue`]),u(`label`,Pe,f(b(V)(`serviceForm.autoRestart`)),1)])]),m(b(S)),u(`div`,Fe,[u(`div`,Ie,[u(`h3`,null,f(b(V)(`serviceForm.envVars`)),1),m(b(g),{label:b(V)(`serviceForm.addEnvVar`),icon:`pi pi-plus`,severity:`secondary`,size:`small`,onClick:Q},null,8,[`label`])]),X.value.length===0?(i(),t(`div`,Le,[u(`small`,null,f(b(V)(`serviceForm.noEnvVars`)),1)])):o(``,!0),(i(!0),t(a,null,ue(X.value,(e,r)=>(i(),t(`div`,{key:r,class:`env-row`},[m(b(v),{modelValue:e.key,"onUpdate:modelValue":t=>e.key=t,placeholder:`KEY`,class:`env-key`,onBlur:$,onKeydown:s(l($,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onUpdate:modelValue`,`onKeydown`]),n[17]||=u(`span`,{class:`env-eq`},`=`,-1),m(b(v),{modelValue:e.value,"onUpdate:modelValue":t=>e.value=t,placeholder:`value`,class:`env-value`,onBlur:$,onKeydown:s(l($,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onUpdate:modelValue`,`onKeydown`]),m(b(g),{icon:`pi pi-trash`,severity:`danger`,text:``,rounded:``,size:`small`,onClick:()=>{Ze(r),$()}},null,8,[`onClick`])]))),128))]),m(b(S)),m(b(fe),{legend:b(V)(`serviceForm.healthCheck`),toggleable:!0,collapsed:!Y.healthCheck.enabled,onToggle:n[16]||=e=>{Y.healthCheck.enabled=!e.value,$()}},{default:se(()=>[u(`div`,Re,[u(`label`,ze,f(b(V)(`serviceForm.healthCheckPath`)),1),m(b(v),{id:`hc-path`,modelValue:Y.healthCheck.path,"onUpdate:modelValue":n[12]||=e=>Y.healthCheck.path=e,placeholder:`/health`,class:`w-full`,onBlur:$,onKeydown:s(l($,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])]),u(`div`,Be,[u(`div`,Ve,[u(`label`,He,f(b(V)(`serviceForm.interval`)),1),m(b(x),{id:`hc-interval`,modelValue:Y.healthCheck.interval,"onUpdate:modelValue":n[13]||=e=>Y.healthCheck.interval=e,min:1e3,step:1e3,class:`w-full`,onBlur:$,onKeydown:s(l($,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])]),u(`div`,Ue,[u(`label`,We,f(b(V)(`serviceForm.timeout`)),1),m(b(x),{id:`hc-timeout`,modelValue:Y.healthCheck.timeout,"onUpdate:modelValue":n[14]||=e=>Y.healthCheck.timeout=e,min:500,step:500,class:`w-full`,onBlur:$,onKeydown:s(l($,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])]),u(`div`,Ge,[u(`label`,Ke,f(b(V)(`serviceForm.retries`)),1),m(b(x),{id:`hc-retries`,modelValue:Y.healthCheck.retries,"onUpdate:modelValue":n[15]||=e=>Y.healthCheck.retries=e,min:0,max:20,class:`w-full`,onBlur:$,onKeydown:s(l($,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])])])]),_:1},8,[`legend`,`collapsed`]),m(b(S))],64)):(i(),t(a,{key:0},[u(`div`,ye,[u(`div`,be,[u(`label`,C,f(b(V)(`serviceForm.projectLabel`)),1),m(b(p),{id:`svc-project`,modelValue:Y.projectId,"onUpdate:modelValue":n[2]||=e=>Y.projectId=e,options:Xe.value,optionLabel:`label`,optionValue:`value`,placeholder:b(V)(`serviceForm.projectPlaceholder`),class:`w-full`},null,8,[`modelValue`,`options`,`placeholder`]),u(`small`,w,f(b(V)(`serviceForm.projectHint`)),1)]),u(`div`,T,[u(`label`,E,f(b(V)(`serviceForm.agentLabel`)),1),m(b(p),{id:`svc-agent`,modelValue:Y.agentId,"onUpdate:modelValue":n[3]||=e=>Y.agentId=e,options:Z.value,optionLabel:`label`,optionValue:`value`,placeholder:b(V)(`serviceForm.agentInherit`),"show-clear":``,class:`w-full`},null,8,[`modelValue`,`options`,`placeholder`]),u(`small`,D,f(b(V)(`serviceForm.agentHint`)),1)]),u(`div`,O,[u(`label`,k,f(b(V)(`serviceForm.nameLabel`)),1),m(b(v),{id:`svc-name`,modelValue:Y.name,"onUpdate:modelValue":n[4]||=e=>Y.name=e,placeholder:`my-service`,class:`w-full`},null,8,[`modelValue`]),u(`small`,A,f(b(V)(`serviceForm.nameConfigHint`)),1)])]),m(b(S)),u(`div`,j,[m(b(g),{label:b(V)(`serviceForm.cancel`),severity:`secondary`,text:``,onClick:n[5]||=e=>b(F).back()},null,8,[`label`]),m(b(g),{label:b(V)(`serviceForm.create`),icon:`pi pi-check`,loading:G.value,type:`submit`},null,8,[`label`,`loading`])])],64))],32))]))}}),[[`__scopeId`,`data-v-47e4793d`]]);export{F as default};
|
|
1
|
+
import{$ as e,$r as t,At as n,Ci as r,Di as i,Dn as ee,En as te,In as ne,J as re,Kr as a,Mn as ie,Q as ae,Qr as o,R as oe,Ur as s,Vt as c,Wi as se,Wr as l,Xr as u,Yr as d,Z as ce,Zi as f,Zt as p,c as le,ii as m,ki as ue,la as h,mn as g,oi as _,on as v,sa as de,un as y,va as b}from"./index-a1iwaPG1.js";import{n as x}from"./plus-CP-dlA9U.js";import{t as fe}from"./fieldset-DpQHSMKf.js";import{n as pe,t as me}from"./autocomplete-DpSrZtZQ.js";import{t as S}from"./divider-D-QC8_57.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`},be={class:`form-group`},C={for:`svc-project`},w={class:`form-hint`},T={class:`form-group`},E={for:`svc-agent`},D={class:`form-hint`},O={class:`form-group`},k={for:`svc-name`},A={class:`form-hint`},j={class:`form-actions`},M={class:`form-section`},N={class:`form-row`},xe={class:`form-group flex-1`},Se={for:`svc-name-edit`},Ce={class:`form-group`,style:{width:`160px`}},we={for:`svc-runner`},Te={class:`form-group`},Ee={for:`svc-agent-edit`},De={class:`form-hint`},Oe={class:`form-row`},ke={class:`form-group flex-1`},Ae={for:`svc-cwd`},je={class:`form-group`,style:{"min-width":`200px`}},Me={for:`svc-ports`},Ne={class:`form-group switch-group`},Pe={for:`svc-autorestart`},Fe={class:`form-section`},Ie={class:`section-header`},Le={key:0,class:`empty-env`},Re={class:`form-group`},ze={for:`hc-path`},Be={class:`form-row`},Ve={class:`form-group flex-1`},He={for:`hc-interval`},Ue={class:`form-group flex-1`},We={for:`hc-timeout`},Ge={class:`form-group flex-1`},Ke={for:`hc-retries`},P=`__inherit__`,F=y(_({__name:`ServiceFormPage`,props:{id:{}},setup(_){let y=_,F=ee(),qe=te(),I=ie(),L=ce(),R=ae(),z=re(),B=n(),Je=le(),{t:V}=ne(),H=d(()=>!!y.id),U=d(()=>qe.query.projectId),W=h(!1),G=h(!1),K=h(null),q=h(null),J=h(!1),Y=de({projectId:``,agentId:P,name:``,cwd:``,ports:[],runner:`native`,autoRestart:!1,healthCheck:{enabled:!1,path:``,interval:3e4,timeout:5e3,retries:3}}),X=h([]),Ye=[{label:`Native`,value:`native`},{label:`Docker`,value:`docker`}],Xe=d(()=>L.projects.map(e=>({label:e.name,value:e.id}))),Z=d(()=>[{label:V(`serviceForm.agentInherit`),value:P},...z.agents.map(e=>({label:`${e.config.name} ${e.status.connected?`(Online)`:`(Offline)`}`,value:e.config.id}))]);function Q(){X.value=[...X.value,{key:``,value:``,isSecret:!1}]}function Ze(e){X.value=X.value.filter((t,n)=>n!==e)}function Qe(){let e={},t=!1;for(let n of X.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(y.id){W.value=!0;try{let e=await c.service.get.query({id:y.id});Y.agentId=e.agentId??P,Y.name=e.name,Y.cwd=e.cwd??``,Y.ports=(e.ports??[]).map(String),Y.runner=e.runner,Y.autoRestart=e.autoRestart,e.healthCheck&&(Y.healthCheck.enabled=!0,Y.healthCheck.path=e.healthCheck.path,Y.healthCheck.interval=e.healthCheck.interval,Y.healthCheck.timeout=e.healthCheck.timeout,Y.healthCheck.retries=e.healthCheck.retries),e.variables&&typeof e.variables==`object`&&Object.keys(e.variables).length>0&&(X.value=Object.entries(e.variables).map(([e,t])=>{let n=t;return{key:e,value:n.value.value??``,isSecret:n.value.isSecret??!1}}))}catch(t){I.add({severity:`error`,summary:V(`serviceForm.error`),detail:e(t)??V(`serviceForm.failedToLoad`),life:5e3}),F.back()}finally{W.value=!1}}}async function $(){if(!(!H.value||!y.id||G.value||W.value)){if(!Y.name.trim()){I.add({severity:`warn`,summary:V(`serviceForm.validation`),detail:V(`serviceForm.nameRequired`),life:3e3});return}G.value=!0;try{let e={agentId:Y.agentId===P?null:Y.agentId||null,name:Y.name.trim(),cwd:Y.cwd.trim()||void 0,ports:Y.ports.map(Number).filter(e=>e>0&&e<=65535),runner:Y.runner,autoRestart:Y.autoRestart,variables:Qe(),healthCheck:Y.healthCheck.enabled?{path:Y.healthCheck.path,interval:Y.healthCheck.interval,timeout:Y.healthCheck.timeout,retries:Y.healthCheck.retries}:void 0};(await c.service.update.mutate({id:y.id,...e}))?.stoppedForAgentChange?(K.value=e.agentId,q.value=y.id,I.add({severity:`warn`,summary:V(`serviceForm.saved`),detail:V(`serviceForm.agentChangedServiceStopped`),life:4e3})):I.add({severity:`success`,summary:V(`serviceForm.saved`),life:1500})}catch(t){I.add({severity:`error`,summary:V(`serviceForm.error`),detail:e(t)??V(`serviceForm.failedToSave`),life:5e3})}finally{G.value=!1}}}async function et(){if(!(!K.value||!q.value)){J.value=!0;try{await Je.start(K.value,q.value),K.value=null,q.value=null,I.add({severity:`success`,summary:V(`serviceForm.restarted`),life:2e3})}catch(t){I.add({severity:`error`,summary:V(`serviceForm.error`),detail:e(t),life:5e3})}finally{J.value=!1}}}async function tt(){if(!Y.name.trim()){I.add({severity:`warn`,summary:V(`serviceForm.validation`),detail:V(`serviceForm.nameRequired`),life:3e3});return}if(!Y.projectId){I.add({severity:`warn`,summary:V(`serviceForm.validation`),detail:V(`serviceForm.projectRequired`),life:3e3});return}G.value=!0;try{let e=await R.create({name:Y.name.trim(),...Y.agentId&&Y.agentId!==P?{agentId:Y.agentId}:{}});if(!e)throw Error(R.error??`Failed to create service`);let t=L.getByRef({id:Y.projectId,orgId:B.activeOrgId})??L.getById(Y.projectId);await L.addService(t??{id:Y.projectId},e.id),I.add({severity:`success`,summary:V(`serviceForm.serviceCreated`),detail:V(`serviceForm.configureAfterCreate`),life:3e3}),F.push({name:`service-detail`,params:{id:e.id,tab:`config`}})}catch(t){I.add({severity:`error`,summary:V(`serviceForm.error`),detail:e(t)??V(`serviceForm.failedToSave`),life:5e3})}finally{G.value=!1}}return r(async()=>{await Promise.all([L.fetchAll(),z.fetchAll()]),U.value?Y.projectId=U.value:!Y.projectId&&B.activeProjectId&&(Y.projectId=B.activeProjectId),H.value&&await $e()}),(e,n)=>(i(),t(`div`,he,[u(`div`,ge,[m(b(g),{icon:`pi pi-arrow-left`,severity:`secondary`,text:``,rounded:``,onClick:n[0]||=e=>b(F).back()}),u(`h1`,null,f(H.value?b(V)(`serviceForm.editTitle`):b(V)(`serviceForm.createTitle`)),1)]),q.value?(i(),t(`div`,_e,[u(`span`,null,f(b(V)(`serviceForm.agentChangedServiceStopped`)),1),m(b(g),{label:b(V)(`serviceForm.restartNow`),icon:`pi pi-play`,severity:`warning`,size:`small`,loading:J.value,onClick:et},null,8,[`label`,`loading`]),m(b(g),{icon:`pi pi-times`,severity:`secondary`,text:``,rounded:``,size:`small`,onClick:n[1]||=e=>{q.value=null,K.value=null}})])):o(``,!0),W.value?(i(),t(`div`,ve,[m(b(oe))])):(i(),t(`form`,{key:2,class:`service-form`,onSubmit:l(tt,[`prevent`])},[H.value?(i(),t(a,{key:1},[u(`div`,M,[u(`div`,N,[u(`div`,xe,[u(`label`,Se,f(b(V)(`serviceForm.nameLabelShort`)),1),m(b(v),{id:`svc-name-edit`,modelValue:Y.name,"onUpdate:modelValue":n[6]||=e=>Y.name=e,placeholder:`my-service`,class:`w-full`,onBlur:$,onKeydown:s(l($,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])]),u(`div`,Ce,[u(`label`,we,f(b(V)(`serviceForm.runnerLabel`)),1),m(b(p),{id:`svc-runner`,modelValue:Y.runner,"onUpdate:modelValue":n[7]||=e=>Y.runner=e,options:Ye,optionLabel:`label`,optionValue:`value`,class:`w-full`,onChange:$},null,8,[`modelValue`])])]),u(`div`,Te,[u(`label`,Ee,f(b(V)(`serviceForm.agentLabel`)),1),m(b(p),{id:`svc-agent-edit`,modelValue:Y.agentId,"onUpdate:modelValue":n[8]||=e=>Y.agentId=e,options:Z.value,optionLabel:`label`,optionValue:`value`,class:`w-full`,onChange:$},null,8,[`modelValue`,`options`]),u(`small`,De,f(b(V)(`serviceForm.agentHintEdit`)),1)]),u(`div`,Oe,[u(`div`,ke,[u(`label`,Ae,f(b(V)(`serviceForm.cwdLabel`)),1),m(b(v),{id:`svc-cwd`,modelValue:Y.cwd,"onUpdate:modelValue":n[9]||=e=>Y.cwd=e,placeholder:`.`,class:`w-full`,onBlur:$,onKeydown:s(l($,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])]),u(`div`,je,[u(`label`,Me,f(b(V)(`serviceForm.portsLabel`)),1),m(b(me),{inputId:`svc-ports`,modelValue:Y.ports,"onUpdate:modelValue":n[10]||=e=>Y.ports=e,multiple:``,typeahead:!1,placeholder:b(V)(`serviceForm.portsPlaceholder`),class:`w-full`,onChange:$},null,8,[`modelValue`,`placeholder`])])]),u(`div`,Ne,[m(b(pe),{modelValue:Y.autoRestart,"onUpdate:modelValue":n[11]||=e=>Y.autoRestart=e,inputId:`svc-autorestart`,onChange:$},null,8,[`modelValue`]),u(`label`,Pe,f(b(V)(`serviceForm.autoRestart`)),1)])]),m(b(S)),u(`div`,Fe,[u(`div`,Ie,[u(`h3`,null,f(b(V)(`serviceForm.envVars`)),1),m(b(g),{label:b(V)(`serviceForm.addEnvVar`),icon:`pi pi-plus`,severity:`secondary`,size:`small`,onClick:Q},null,8,[`label`])]),X.value.length===0?(i(),t(`div`,Le,[u(`small`,null,f(b(V)(`serviceForm.noEnvVars`)),1)])):o(``,!0),(i(!0),t(a,null,ue(X.value,(e,r)=>(i(),t(`div`,{key:r,class:`env-row`},[m(b(v),{modelValue:e.key,"onUpdate:modelValue":t=>e.key=t,placeholder:`KEY`,class:`env-key`,onBlur:$,onKeydown:s(l($,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onUpdate:modelValue`,`onKeydown`]),n[17]||=u(`span`,{class:`env-eq`},`=`,-1),m(b(v),{modelValue:e.value,"onUpdate:modelValue":t=>e.value=t,placeholder:`value`,class:`env-value`,onBlur:$,onKeydown:s(l($,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onUpdate:modelValue`,`onKeydown`]),m(b(g),{icon:`pi pi-trash`,severity:`danger`,text:``,rounded:``,size:`small`,onClick:()=>{Ze(r),$()}},null,8,[`onClick`])]))),128))]),m(b(S)),m(b(fe),{legend:b(V)(`serviceForm.healthCheck`),toggleable:!0,collapsed:!Y.healthCheck.enabled,onToggle:n[16]||=e=>{Y.healthCheck.enabled=!e.value,$()}},{default:se(()=>[u(`div`,Re,[u(`label`,ze,f(b(V)(`serviceForm.healthCheckPath`)),1),m(b(v),{id:`hc-path`,modelValue:Y.healthCheck.path,"onUpdate:modelValue":n[12]||=e=>Y.healthCheck.path=e,placeholder:`/health`,class:`w-full`,onBlur:$,onKeydown:s(l($,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])]),u(`div`,Be,[u(`div`,Ve,[u(`label`,He,f(b(V)(`serviceForm.interval`)),1),m(b(x),{id:`hc-interval`,modelValue:Y.healthCheck.interval,"onUpdate:modelValue":n[13]||=e=>Y.healthCheck.interval=e,min:1e3,step:1e3,class:`w-full`,onBlur:$,onKeydown:s(l($,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])]),u(`div`,Ue,[u(`label`,We,f(b(V)(`serviceForm.timeout`)),1),m(b(x),{id:`hc-timeout`,modelValue:Y.healthCheck.timeout,"onUpdate:modelValue":n[14]||=e=>Y.healthCheck.timeout=e,min:500,step:500,class:`w-full`,onBlur:$,onKeydown:s(l($,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])]),u(`div`,Ge,[u(`label`,Ke,f(b(V)(`serviceForm.retries`)),1),m(b(x),{id:`hc-retries`,modelValue:Y.healthCheck.retries,"onUpdate:modelValue":n[15]||=e=>Y.healthCheck.retries=e,min:0,max:20,class:`w-full`,onBlur:$,onKeydown:s(l($,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])])])]),_:1},8,[`legend`,`collapsed`]),m(b(S))],64)):(i(),t(a,{key:0},[u(`div`,ye,[u(`div`,be,[u(`label`,C,f(b(V)(`serviceForm.projectLabel`)),1),m(b(p),{id:`svc-project`,modelValue:Y.projectId,"onUpdate:modelValue":n[2]||=e=>Y.projectId=e,options:Xe.value,optionLabel:`label`,optionValue:`value`,placeholder:b(V)(`serviceForm.projectPlaceholder`),class:`w-full`},null,8,[`modelValue`,`options`,`placeholder`]),u(`small`,w,f(b(V)(`serviceForm.projectHint`)),1)]),u(`div`,T,[u(`label`,E,f(b(V)(`serviceForm.agentLabel`)),1),m(b(p),{id:`svc-agent`,modelValue:Y.agentId,"onUpdate:modelValue":n[3]||=e=>Y.agentId=e,options:Z.value,optionLabel:`label`,optionValue:`value`,placeholder:b(V)(`serviceForm.agentInherit`),"show-clear":``,class:`w-full`},null,8,[`modelValue`,`options`,`placeholder`]),u(`small`,D,f(b(V)(`serviceForm.agentHint`)),1)]),u(`div`,O,[u(`label`,k,f(b(V)(`serviceForm.nameLabel`)),1),m(b(v),{id:`svc-name`,modelValue:Y.name,"onUpdate:modelValue":n[4]||=e=>Y.name=e,placeholder:`my-service`,class:`w-full`},null,8,[`modelValue`]),u(`small`,A,f(b(V)(`serviceForm.nameConfigHint`)),1)])]),m(b(S)),u(`div`,j,[m(b(g),{label:b(V)(`serviceForm.cancel`),severity:`secondary`,text:``,onClick:n[5]||=e=>b(F).back()},null,8,[`label`]),m(b(g),{label:b(V)(`serviceForm.create`),icon:`pi pi-check`,loading:G.value,type:`submit`},null,8,[`label`,`loading`])])],64))],32))]))}}),[[`__scopeId`,`data-v-47e4793d`]]);export{F as default};
|