@runeya/runeya 2.0.101 → 2.0.103
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 +170 -161
- package/agent/index.js.map +1 -1
- package/agent-manager-OWHTBG46.js +9 -0
- package/assets/icon-alert.ico +0 -0
- package/assets/icon-alert.png +0 -0
- package/assets/icon-alert.svg +19 -0
- package/chat-JZ4UQDWV.js +20 -0
- package/{node-B4T3JMM3.js → chunk-B7MABGQN.js} +51 -4
- package/chunk-B7MABGQN.js.map +1 -0
- package/chunk-KY6KYSOU.js +279 -0
- package/chunk-KY6KYSOU.js.map +1 -0
- package/{chunk-TNBMCKQX.js → chunk-NZNIWJDT.js} +226 -23
- package/chunk-NZNIWJDT.js.map +1 -0
- package/chunk-PH4E5WDN.js +137 -0
- package/chunk-PH4E5WDN.js.map +1 -0
- package/{chunk-BHLCBARP.js → chunk-QIBUMYR6.js} +29 -11
- package/chunk-QIBUMYR6.js.map +1 -0
- package/{chunk-NDO5VFZY.js → chunk-QRMG6GMX.js} +694 -917
- package/chunk-QRMG6GMX.js.map +1 -0
- package/{chunk-SP3IC2TR.js → chunk-UYOWIH4R.js} +39 -221
- package/chunk-UYOWIH4R.js.map +1 -0
- package/{chunk-F3HKV5AU.js → chunk-Z67WBWKD.js} +7 -5
- package/{chunk-F3HKV5AU.js.map → chunk-Z67WBWKD.js.map} +1 -1
- package/{companion-QNW7XA6X.js → companion-6J6NK7H7.js} +7 -4
- package/{desktop-launcher-FHNURZA7.js → desktop-launcher-N7WRF3LC.js} +11 -17
- package/desktop-launcher-N7WRF3LC.js.map +1 -0
- package/index.js +65 -3
- package/index.js.map +1 -1
- package/instances-command-KZ5UGXOR.js +17 -0
- package/node-ILM6MV56.js +21 -0
- package/node-ILM6MV56.js.map +1 -0
- package/package.json +4 -1
- package/settings-manager-NZV26BC3.js +9 -0
- package/settings-manager-NZV26BC3.js.map +1 -0
- package/{src-PF23DMAB.js → src-V7DPPFCF.js} +454 -255
- package/src-V7DPPFCF.js.map +1 -0
- package/tray-TRWZNOUD.js +291 -0
- package/tray-TRWZNOUD.js.map +1 -0
- package/web/assets/AgentScalarChatInterface.vue-CvG5ha3R.js +13 -0
- package/web/assets/AgentTerminalPage-DcGppuzO.js +1 -0
- package/web/assets/AiChatPage-BDr5tG0A.js +1 -0
- package/web/assets/{AppLayout-DeWqCLuK.css → AppLayout-CYQBjQBU.css} +1 -1
- package/web/assets/AppLayout-Dv3ViAk2.js +1 -0
- package/web/assets/AuditPage-Bc2jlgZJ.js +1 -0
- package/web/assets/CloudAccountPage-4BLXSOix.js +1 -0
- package/web/assets/CloudAccountPage-B3MX6DNn.js +1 -0
- package/web/assets/CloudMessagingPage-CVzUalxx.js +2 -0
- package/web/assets/DashboardPage-Bo51pbzt.js +1 -0
- package/web/assets/DirectoryPickerDialog-CIVjWKUm.js +1 -0
- package/web/assets/{EditorIcon-BXS2-yX1.js → EditorIcon-BguaWtZg.js} +2 -2
- package/web/assets/{EnvironmentForm--y9zfCDt.js → EnvironmentForm-D8dq0ffR.js} +2 -2
- package/web/assets/EnvironmentFormPage-d8p3q8Yt.js +1 -0
- package/web/assets/EnvironmentListPage-DWo2lWjE.js +1 -0
- package/web/assets/KanbanBoardPage-DkwIz3J1.js +4 -0
- package/web/assets/KanbanListPage-xIQRLcrS.js +1 -0
- package/web/assets/LaunchProjectPage-CXWixUmf.js +1 -0
- package/web/assets/LaunchServicesPage-nv-chYgX.js +1 -0
- package/web/assets/LogViewer-DLupfjjf.js +3 -0
- package/web/assets/OrgKeyPrompt-DePcB-8f.js +1 -0
- package/web/assets/ProcessControls-D3zTnHb2.js +1 -0
- package/web/assets/ProcessDetailPage-CgVGzRoJ.js +1 -0
- package/web/assets/{ProcessMetrics-fCxhXJgd.js → ProcessMetrics-Dwd5lzqY.js} +2 -2
- package/web/assets/ProjectDetailPage-HR20KyJ3.js +1 -0
- package/web/assets/ProjectListPage-DcH4uTTX.js +1 -0
- package/web/assets/RandomJobTestPage-BYTkVcdE.js +2 -0
- package/web/assets/ScenarioEditorPage-zRxR03Ud.js +14 -0
- package/web/assets/SendToChatDialog-Cm5eKBOb.js +1 -0
- package/web/assets/ServiceControlsBar-oBpAP9yX.js +1 -0
- package/web/assets/ServiceDetailPage-CahBi-or.js +2 -0
- package/web/assets/ServiceFormPage-DfmPM_mI.js +1 -0
- package/web/assets/SettingsPage-CDMXFJ4k.js +2063 -0
- package/web/assets/SettingsPage-Dw6tbcbw.css +1 -0
- package/web/assets/UnlockPage-BUyBEPzQ.js +1 -0
- package/web/assets/VariablesTable-Dc6CyVQW.js +1 -0
- package/web/assets/VaultMigrationPage-BUmzyDXN.js +1 -0
- package/web/assets/VersionBadge-Dx_67FtC.js +1 -0
- package/web/assets/WikiPage-DEMJLDpD.js +1 -0
- package/web/assets/WikiView-CcrQ2ySx.js +1 -0
- package/web/assets/add-scalar-classes-M_EBdf4f.js +387 -0
- package/web/assets/{autocomplete-AALxfd-8.js → autocomplete-QtPLLzzV.js} +3 -3
- package/web/assets/{basic-shape-diamond.svg-C4c3Deqh.js → basic-shape-diamond.svg-Dyx8FJkS.js} +1 -1
- package/web/assets/{basic-shape-hexagon.svg-DrH21BpW.js → basic-shape-hexagon.svg-1RKdVP3_.js} +1 -1
- package/web/assets/{basic-shape-primary-circle-ellipse-round.svg-DqIU3Cmf.js → basic-shape-primary-circle-ellipse-round.svg-CSa69hok.js} +1 -1
- package/web/assets/{basic-shape-primary-square-rectangle.svg-B3gDug6x.js → basic-shape-primary-square-rectangle.svg-B9TXktd4.js} +1 -1
- package/web/assets/{basic-shape-shield.svg-DdNJhKim.js → basic-shape-shield.svg-BZvKXoiw.js} +1 -1
- package/web/assets/{browser-DlwaOVwW.js → browser-CYeKc8Uo.js} +1 -1
- package/web/assets/{browser-IqQiUipW.js → browser-VlhbsseI.js} +1 -1
- package/web/assets/card-tEWfv-Op.js +32 -0
- package/web/assets/{checkbox-BP6nucdt.js → checkbox-CyPqKR6H.js} +3 -3
- package/web/assets/{chip-zQCMXVbm.js → chip-wM0gJ_FI.js} +2 -2
- package/web/assets/client-B919VgbS.js +24 -0
- package/web/assets/cloud-chat.store-C-A9nIqG.js +1 -0
- package/web/assets/cloud-session-g6ewm0UI.js +1 -0
- package/web/assets/column-DihIO4Zd.js +907 -0
- package/web/assets/{computer-device-desktop-monitor.svg-D28gfKH3.js → computer-device-desktop-monitor.svg-ClbIVuot.js} +1 -1
- package/web/assets/{computer-device-desktop.svg-BierhytR.js → computer-device-desktop.svg-CXpOovTP.js} +1 -1
- package/web/assets/{computer-device-laptop.svg-Buh46ofO.js → computer-device-laptop.svg-C9sY1wZv.js} +1 -1
- package/web/assets/{computer-device-mobile-phone-android-samsung-back.svg-DWgP259U.js → computer-device-mobile-phone-android-samsung-back.svg-CPWC2QHX.js} +1 -1
- package/web/assets/{computer-device-mobile-phone-android-samsung.svg-BlulLqG-.js → computer-device-mobile-phone-android-samsung.svg-B0H-mnfh.js} +1 -1
- package/web/assets/{computer-device-mobile-phone-iphone-x-back.svg-CwAgL_XU.js → computer-device-mobile-phone-iphone-x-back.svg-BbIunxoN.js} +1 -1
- package/web/assets/{computer-device-mobile-phone-iphone-x.svg-CGZk25hI.js → computer-device-mobile-phone-iphone-x.svg-qLGK_oVA.js} +1 -1
- package/web/assets/{computer-device-mobile-tablet-touch.svg-BW41ZuCA.js → computer-device-mobile-tablet-touch.svg-BDpuB6SD.js} +1 -1
- package/web/assets/{computer-device-mobile-tablet.svg-BXG04cxV.js → computer-device-mobile-tablet.svg-44THWP9E.js} +1 -1
- package/web/assets/{computer-device-network-ethernet-cat6.svg-BKUwbZI3.js → computer-device-network-ethernet-cat6.svg-tlgWltl_.js} +1 -1
- package/web/assets/{computer-device-network-lan-www.svg-o3B9PLqQ.js → computer-device-network-lan-www.svg-Bd7Ch4QN.js} +1 -1
- package/web/assets/{computer-device-network-wifi-connection.svg-CWz616VA.js → computer-device-network-wifi-connection.svg-D_XjoY-a.js} +1 -1
- package/web/assets/{computer-device-network-wifi-router.svg-C_Uxv8x_.js → computer-device-network-wifi-router.svg-BRpuwgUx.js} +1 -1
- package/web/assets/{cssMode-trDHQWjr.js → cssMode-D0M5mbRd.js} +1 -1
- package/web/assets/{divider-ER7evOrG.js → divider-gPnMjjpJ.js} +2 -2
- package/web/assets/{docx-preview-DaBMrB0t.js → docx-preview-CBPtwrA0.js} +1 -1
- package/web/assets/{ecology-science-erlenmeyer-flask.svg-TilKtHh2.js → ecology-science-erlenmeyer-flask.svg-CZ3uUeBT.js} +1 -1
- package/web/assets/{fieldset-BK4Kpi7y.js → fieldset-BSGgRmpr.js} +2 -2
- package/web/assets/{freemarker2-CPBy2gHY.js → freemarker2-BWsK2SIi.js} +1 -1
- package/web/assets/{handlebars-sFv_MRko.js → handlebars-CHNB1gG0.js} +1 -1
- package/web/assets/{html-CvDf5B_n.js → html-COwA9Dtl.js} +1 -1
- package/web/assets/{htmlMode-CKhs4g6W.js → htmlMode-gZ2_PUDA.js} +1 -1
- package/web/assets/{image-flash-lightning.svg-CkgasY6E.js → image-flash-lightning.svg-Iiwm_7-K.js} +1 -1
- package/web/assets/{image-picture-flower.svg-Csk-7jkE.js → image-picture-flower.svg-BP9U6YP8.js} +1 -1
- package/web/assets/{index-BmdsyJ54.css → index-DWQLzWm4.css} +1 -1
- package/web/assets/{index-CdghDQiK.js → index-mBPGEldp.js} +285 -285
- package/web/assets/{interface-alert-exclamation-diamond.svg-rH1JAriw.js → interface-alert-exclamation-diamond.svg-BYWgnbUp.js} +1 -1
- package/web/assets/{interface-alert-exclamation-triangle-warning.svg-BuZLBc2z.js → interface-alert-exclamation-triangle-warning.svg-CWGfXHx_.js} +1 -1
- package/web/assets/{interface-alert-information-circle.svg-D6i0hGVN.js → interface-alert-information-circle.svg-88Bga8qr.js} +1 -1
- package/web/assets/{interface-award-crown.svg-7Wu9-VKO.js → interface-award-crown.svg-3hO77oiy.js} +1 -1
- package/web/assets/{interface-bookmark.svg-CkLVcfT6.js → interface-bookmark-tag.svg-DcHwQsr0.js} +1 -1
- package/web/assets/{interface-bookmark-tag.svg-CPiMqQ77.js → interface-bookmark.svg-SfHcE95h.js} +1 -1
- package/web/assets/{interface-calendar-date-one.svg-CFSXAk1b.js → interface-calendar-date-one.svg-DdXOM9VZ.js} +1 -1
- package/web/assets/{interface-content-book-open-pages.svg-CC4c9Opt.js → interface-content-book-open-pages.svg-DD7QTDn_.js} +1 -1
- package/web/assets/{interface-content-book-page.svg-DxpVNOOq.js → interface-content-book-page.svg-Dd45mFzB.js} +1 -1
- package/web/assets/{interface-content-file.svg-CTaWk4im.js → interface-content-file.svg-slPoMF5K.js} +1 -1
- package/web/assets/interface-content-folder.svg-D90zbTLh.js +1 -0
- package/web/assets/{interface-content-folder.svg-uVUoz9w-.js → interface-content-folder.svg-cSgXwhRh.js} +1 -1
- package/web/assets/{interface-copy-clipboard.svg-BZIxAN3r.js → interface-copy-clipboard.svg-DNy0VeWx.js} +1 -1
- package/web/assets/{interface-edit-attachment.svg-DDzPxeNm.js → interface-edit-attachment.svg-VyCAm1jc.js} +1 -1
- package/web/assets/{interface-edit-binocular.svg-CZsgbA--.js → interface-edit-binocular.svg-DA6QB2sn.js} +1 -1
- package/web/assets/{interface-edit-magic-wand.svg-qmz7k4l6.js → interface-edit-magic-wand.svg-D0uagBk7.js} +1 -1
- package/web/assets/{interface-edit-tool-paint-roller.svg-DWE25KT2.js → interface-edit-tool-paint-roller.svg-ConlubSG.js} +1 -1
- package/web/assets/{interface-edit-tool-pencil.svg-DpK1C2tO.js → interface-edit-tool-pencil.svg-BgNzCwXf.js} +1 -1
- package/web/assets/{interface-favorite-award.svg-CLHMWnh1.js → interface-favorite-award.svg-MLL88pIy.js} +1 -1
- package/web/assets/{interface-favorite-flag.svg-CHGIAa-e.js → interface-favorite-flag.svg-ZhM_9XJZ.js} +1 -1
- package/web/assets/{interface-favorite-heart.svg-ymL9Qidy.js → interface-favorite-heart.svg-Cqq1PV9O.js} +1 -1
- package/web/assets/{interface-favorite-star.svg-C4JDKdUr.js → interface-favorite-star.svg-YumblcRD.js} +1 -1
- package/web/assets/{interface-favorite-stars-sparkles.svg-DRixMNWJ.js → interface-favorite-stars-sparkles.svg-BH5BXXOe.js} +1 -1
- package/web/assets/{interface-hierarchy-flowchart.svg-DozpERYh.js → interface-hierarchy-flowchart.svg-CEfCPIyC.js} +1 -1
- package/web/assets/{interface-home-house.svg-DpUEVY7I.js → interface-home-house.svg-DJE_g94c.js} +1 -1
- package/web/assets/{interface-hyperlink.svg-BI9P67ny.js → interface-hyperlink.svg-BFhnDXDD.js} +1 -1
- package/web/assets/{interface-lighting-brightness.svg-B6WWS4kG.js → interface-lighting-brightness.svg-NwOV0KEv.js} +1 -1
- package/web/assets/{interface-lock-closed.svg-BBQ9XM_j.js → interface-lock-closed.svg-qVkplX0W.js} +1 -1
- package/web/assets/{interface-lock-open-unlock.svg-GkTO8GmV.js → interface-lock-open-unlock.svg-D18OlPEP.js} +1 -1
- package/web/assets/{interface-login-key.svg--v2ZJH3Q.js → interface-login-key.svg-CccXX7_b.js} +1 -1
- package/web/assets/{interface-search.svg-CidqkApV.js → interface-search.svg-C6ncELaU.js} +1 -1
- package/web/assets/{interface-setting-cog.svg-DVZePAV3.js → interface-setting-cog.svg-5LrIeBav.js} +1 -1
- package/web/assets/{interface-share-megaphone-bullhorn.svg-BFn_RMqc.js → interface-share-megaphone-bullhorn.svg-C-qB4VYi.js} +1 -1
- package/web/assets/{interface-share-rocket.svg-BvWSz0s2.js → interface-share-rocket.svg-Citzuyng.js} +1 -1
- package/web/assets/{interface-share-satellite.svg-tqNCB74Z.js → interface-share-satellite.svg-BldpdKdo.js} +1 -1
- package/web/assets/{interface-share-space-ship.svg-BmB824fS.js → interface-share-space-ship.svg-B_Ni34rB.js} +1 -1
- package/web/assets/{interface-share.svg-CBZLrrF9.js → interface-share.svg-FAt7Kgad.js} +1 -1
- package/web/assets/{interface-signal-square.svg-C088p9NZ.js → interface-signal-square.svg-DeBP6Pim.js} +1 -1
- package/web/assets/{interface-time-clock-circle.svg-DubKvXWQ.js → interface-time-clock-circle.svg-dQfNY8BC.js} +1 -1
- package/web/assets/{interface-time-hour-glass.svg-6GComyAL.js → interface-time-hour-glass.svg-ylbFnlwY.js} +1 -1
- package/web/assets/{interface-users-multiple.svg-ja6OEhK_.js → interface-users-multiple.svg-DXts3WMC.js} +1 -1
- package/web/assets/{interface-weather-moon.svg-BnfLL03K.js → interface-weather-moon.svg-BG6mjCih.js} +1 -1
- package/web/assets/{javascript-DMRS72rt.js → javascript-C_ENjImO.js} +1 -1
- package/web/assets/{jsonMode--8QdTWx_.js → jsonMode-Bt-LEknD.js} +2 -2
- package/web/assets/{liquid-OaGt-c-G.js → liquid-CVshgHmY.js} +1 -1
- package/web/assets/{lspLanguageFeatures-B6AaNVcR.js → lspLanguageFeatures-D1e-RcOs.js} +3 -3
- package/web/assets/{mail-chat-bubble-square.svg-D0WUmEWq.js → mail-chat-bubble-square.svg-RUMLqiUI.js} +1 -1
- package/web/assets/{mail-send-email-paper-airplane.svg--9oR8FgG.js → mail-send-email-paper-airplane.svg-JDe3yqOH.js} +1 -1
- package/web/assets/{mail-send-envelope.svg-D7zYusS0.js → mail-send-envelope.svg-CCzWaeO-.js} +1 -1
- package/web/assets/{mdx-ChDcRRYd.js → mdx-D9G2-Bj8.js} +1 -1
- package/web/assets/{minus-lcNwQ3xr.js → minus-BMxEQL_C.js} +2 -2
- package/web/assets/modal-CZ7zYg5t.js +1 -0
- package/web/assets/modal-CmpFIC5N.js +5 -0
- package/web/assets/{money-cashier-receipt.svg-DzX-iwUT.js → money-cashier-receipt.svg-DfbOr89U.js} +1 -1
- package/web/assets/{money-currency-dollar-pay.svg-BFX_YTDc.js → money-currency-dollar-pay.svg-DY7fQ7jz.js} +1 -1
- package/web/assets/{money-graph-arrow-increase.svg-C16MfYnR.js → money-graph-arrow-increase.svg-jewlEZEL.js} +1 -1
- package/web/assets/{money-graph-bar-chart-increase.svg-BGG0yv-f.js → money-graph-bar-chart-increase.svg-BChD8dZv.js} +1 -1
- package/web/assets/multiselect-CoRzeHvy.js +251 -0
- package/web/assets/{nature-ecology-leaf.svg-DiIaC6NX.js → nature-ecology-leaf.svg-AQimnw3F.js} +1 -1
- package/web/assets/{password-BZlCIV8S.js → password-4Ykb_Ejn.js} +4 -4
- package/web/assets/{phone-telephone.svg-udmmRh0q.js → phone-telephone.svg-BdkwIhmo.js} +1 -1
- package/web/assets/{plus-CwmVHUki.js → plus-CYVYZlQL.js} +6 -6
- package/web/assets/process.store-CtXpHndZ.js +1 -0
- package/web/assets/{programming-bug.svg-xc1RtL3c.js → programming-bug.svg-DzT817WD.js} +1 -1
- package/web/assets/{programming-cloud.svg-axQALbJB.js → programming-cloud.svg-eKZD46YP.js} +1 -1
- package/web/assets/{programming-computer-database-server.svg-BVTqxH42.js → programming-computer-database-server.svg-BXOhjcQy.js} +1 -1
- package/web/assets/{programming-computer-database.svg-B-CECn7V.js → programming-computer-database.svg-DUzhimFY.js} +1 -1
- package/web/assets/{programming-module-four-layout.svg-icO9mDmE.js → programming-module-four-layout.svg-CYGX7Rlj.js} +1 -1
- package/web/assets/{programming-module-three.svg-D2zllUcw.js → programming-module-three.svg-BhQr1m-R.js} +1 -1
- package/web/assets/{programming-module.svg-gs4eO8gC.js → programming-module.svg-Bik697Ne.js} +1 -1
- package/web/assets/{programming-script-code.svg-BGMrS9je.js → programming-script-code.svg-BaTanEvH.js} +1 -1
- package/web/assets/{python-C1ZGhTnT.js → python-wDvaXe-V.js} +1 -1
- package/web/assets/{razor-Dxwwpjwp.js → razor-C-cEFJP1.js} +1 -1
- package/web/assets/router-CqYmBKhe.js +1 -0
- package/web/assets/settings-scope-DD7SbjFz.js +1 -0
- package/web/assets/settings.store-DcQmvBBv.js +1 -0
- package/web/assets/{shopping-cart.svg-DajW_J8z.js → shopping-cart.svg-BwUFrGEq.js} +1 -1
- package/web/assets/{shopping-gift-present.svg-yAHWXZYl.js → shopping-gift-present.svg-Bs4b94QF.js} +1 -1
- package/web/assets/{shopping-shipping-box-parcel-package.svg-BmpCCkbe.js → shopping-shipping-box-parcel-package.svg-DhVaYapE.js} +1 -1
- package/web/assets/{src-CabNenEM.js → src-CpoqK21I.js} +13 -13
- package/web/assets/src-De5rZb3_.js +1 -0
- package/web/assets/src-NB2ZR0ON.js +572 -0
- package/web/assets/tabpanel-DMt8G5AA.js +150 -0
- package/web/assets/{tag-new-circle.svg-BHHc5iei.js → tag-new-circle.svg-B4Z8uL1_.js} +1 -1
- package/web/assets/{toggleswitch-CJCNFliH.js → toggleswitch-CawhRFb7.js} +2 -2
- package/web/assets/{travel-map-earth-globe.svg-CHj70cli.js → travel-map-earth-globe.svg-D0s5cc-W.js} +1 -1
- package/web/assets/trpc-B17uPEkC.js +1 -0
- package/web/assets/{tsMode-DHXchBsw.js → tsMode-NHDuTjcd.js} +5 -5
- package/web/assets/{typescript-BVTudzDT.js → typescript-DGkgFTtn.js} +1 -1
- package/web/assets/useAiChatDrawer-BxE6EYFc.js +1 -0
- package/web/assets/{useCloudOrg-BN-OgVim.js → useCloudOrg-BJTjZPZ9.js} +1 -1
- package/web/assets/useProjectCatalog-DifZyVY5.js +1 -0
- package/web/assets/useProjectCloudOrg-EvyyjH6E.js +1 -0
- package/web/assets/{xml-5T1ybYUZ.js → xml-CJaXEqLW.js} +1 -1
- package/web/assets/{yaml-w_H4D4RN.js → yaml-bl8i8xOf.js} +1 -1
- package/web/index.html +2 -2
- package/agent-manager-SNVPZNLC.js +0 -8
- package/chat-RWOZHXBX.js +0 -18
- package/chunk-BHLCBARP.js.map +0 -1
- package/chunk-NDO5VFZY.js.map +0 -1
- package/chunk-SP3IC2TR.js.map +0 -1
- package/chunk-TNBMCKQX.js.map +0 -1
- package/desktop-launcher-FHNURZA7.js.map +0 -1
- package/node-B4T3JMM3.js.map +0 -1
- package/settings-manager-YHQ5YHUH.js +0 -8
- package/src-PF23DMAB.js.map +0 -1
- package/web/assets/AgentScalarChatInterface.vue-CpCuXAXu.js +0 -13
- package/web/assets/AgentTerminalPage-D8nMHtlG.js +0 -1
- package/web/assets/AiChatPage-C1FbL-Tb.js +0 -1
- package/web/assets/AppLayout-Dq-1shm9.js +0 -1
- package/web/assets/AuditPage-BjeeYf1P.js +0 -1
- package/web/assets/CloudAccountPage-BWcXUmZ3.js +0 -1
- package/web/assets/CloudAccountPage-CsNnjZQN.js +0 -1
- package/web/assets/CloudMessagingPage-CN-Hkvzf.js +0 -2
- package/web/assets/DashboardPage-30yBzA9Y.js +0 -1
- package/web/assets/DirectoryPickerDialog-BsYJrTG4.js +0 -1
- package/web/assets/EnvironmentFormPage-BETc1RGi.js +0 -1
- package/web/assets/EnvironmentListPage-CC0Sj1bx.js +0 -1
- package/web/assets/KanbanBoardPage-BdM0Op1M.js +0 -4
- package/web/assets/KanbanListPage-DM7RJqhx.js +0 -1
- package/web/assets/LaunchProjectPage-DXqYYycZ.js +0 -1
- package/web/assets/LaunchServicesPage-DCgwv5Pt.js +0 -1
- package/web/assets/LogViewer-CFSU-CNC.js +0 -3
- package/web/assets/OrgKeyPrompt-DQGyKSjb.js +0 -1
- package/web/assets/ProcessControls-98bxX4aW.js +0 -1
- package/web/assets/ProcessDetailPage-Bb_3RScY.js +0 -1
- package/web/assets/ProjectDetailPage-BNmbecE0.js +0 -1
- package/web/assets/ProjectListPage-v0JqfkPz.js +0 -1
- package/web/assets/RandomJobTestPage-D8q-EREO.js +0 -2
- package/web/assets/ScenarioEditorPage-D3EuMMBn.js +0 -14
- package/web/assets/SendToChatDialog-D-x5Pn3F.js +0 -1
- package/web/assets/ServiceControlsBar-7zKkkVxM.js +0 -1
- package/web/assets/ServiceDetailPage-jzYoqD5E.js +0 -2
- package/web/assets/ServiceFormPage-DjvOpPyE.js +0 -1
- package/web/assets/SettingsPage-C-OfBHjn.css +0 -1
- package/web/assets/SettingsPage-DKCbzYvF.js +0 -2063
- package/web/assets/UnlockPage-Cb43bz4p.js +0 -1
- package/web/assets/VariablesTable-C3syeLAl.js +0 -1
- package/web/assets/VaultMigrationPage-Cp-au3d7.js +0 -1
- package/web/assets/VersionBadge-CXX3tlKI.js +0 -1
- package/web/assets/WikiPage-D1at3ltm.js +0 -1
- package/web/assets/WikiView-ClZwZbal.js +0 -1
- package/web/assets/add-scalar-classes-D3kr5_fn.js +0 -387
- package/web/assets/card-q6s0jc6V.js +0 -32
- package/web/assets/client-BC-o8Mr9.js +0 -24
- package/web/assets/cloud-chat.store-387arRb5.js +0 -1
- package/web/assets/cloud-session-yejC3TfS.js +0 -1
- package/web/assets/column-ClizzdF5.js +0 -907
- package/web/assets/interface-content-folder.svg-BYgaYshM.js +0 -1
- package/web/assets/modal-4qFfZ_TY.js +0 -1
- package/web/assets/modal-TVJrDDCj.js +0 -5
- package/web/assets/multiselect-DcAoSG6S.js +0 -251
- package/web/assets/process.store-C8qfdRYx.js +0 -1
- package/web/assets/router-HZS_HREn.js +0 -1
- package/web/assets/settings-scope-DUmfNusx.js +0 -1
- package/web/assets/settings.store-Da4jL17l.js +0 -1
- package/web/assets/src-C-5koINO.js +0 -1
- package/web/assets/src-LFVDgykP.js +0 -572
- package/web/assets/tabpanel-D8XwziwN.js +0 -150
- package/web/assets/trpc-BeVJWlZK.js +0 -1
- package/web/assets/useAiChatDrawer-CFqm3BZi.js +0 -1
- package/web/assets/useProjectCatalog-sUfCxDEh.js +0 -1
- package/web/assets/useProjectCloudOrg-D1GcLai_.js +0 -1
- /package/{agent-manager-SNVPZNLC.js.map → agent-manager-OWHTBG46.js.map} +0 -0
- /package/{chat-RWOZHXBX.js.map → chat-JZ4UQDWV.js.map} +0 -0
- /package/{companion-QNW7XA6X.js.map → companion-6J6NK7H7.js.map} +0 -0
- /package/{settings-manager-YHQ5YHUH.js.map → instances-command-KZ5UGXOR.js.map} +0 -0
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{$i as e,Aa as t,Ai as n,An as r,Ca as i,Ci as a,Fa as o,Fi as s,Fn as c,Hi as l,Ht as u,Kt as d,Ln as f,M as p,Mi as m,Na as h,Ni as g,Nn as _,Oa as v,Pn as y,Q as b,Rt as x,Si as S,Sn as C,Ti as w,Ut as T,Va as E,Vt as ee,Wa as D,Wt as O,X as k,Xn as A,Y as te,Yi as ne,Yn as re,Z as ie,Zi as ae,_a as j,_n as oe,_t as se,ar as ce,at as le,ba as ue,c as de,cn as fe,di as M,er as pe,fa as N,ft as me,ga as P,gi as F,gt as he,hi as I,ht as ge,ki as L,ln as R,lt as _e,nt as ve,ot as z,pt as ye,qn as be,sn as xe,st as Se,ta as Ce,tn as we,tr as Te,vi as B,vn as Ee,wi as V,xi as H,xn as De}from"./index-mBPGEldp.js";import"./cloud-session-g6ewm0UI.js";import"./src-De5rZb3_.js";import"./useProjectCloudOrg-EvyyjH6E.js";import{n as Oe,t as ke}from"./ServiceControlsBar-oBpAP9yX.js";import"./ProcessControls-D3zTnHb2.js";import{t as Ae}from"./uuid-Q0SWZmaT.js";import{n as je,t as Me}from"./column-DihIO4Zd.js";import{n as Ne}from"./plus-CYVYZlQL.js";import{t as Pe}from"./checkbox-CyPqKR6H.js";import{t as Fe}from"./toggleswitch-CawhRFb7.js";import{i as Ie,n as Le,o as Re,r as ze,t as Be}from"./tabpanel-DMt8G5AA.js";import{n as Ve,t as He}from"./VariablesTable-Dc6CyVQW.js";import{t as Ue}from"./autocomplete-QtPLLzzV.js";import"./src-CpoqK21I.js";import"./w3c-keyname-2TLn3EjF.js";import"./SendToChatDialog-Cm5eKBOb.js";import{n as We,t as Ge}from"./ProcessMetrics-Dwd5lzqY.js";import{t as Ke}from"./LogViewer-DLupfjjf.js";import{t as qe}from"./divider-gPnMjjpJ.js";import{t as Je}from"./settings.store-DcQmvBBv.js";import{t as Ye}from"./WikiView-CcrQ2ySx.js";var Xe={key:0,class:`log-details`},Ze={class:`log-details__section`},Qe={class:`log-details__label`},$e={class:`log-details__value log-details__value--box`},et={class:`log-details__section`},tt={class:`log-details__label`},nt={class:`log-details__value log-details__value--box log-details__value--code`},rt={class:`log-details__section`},it={class:`log-details__label`},at={class:`log-details__value log-details__value--box`},ot={class:`log-details__process`},st={class:`log-details__section`},ct={class:`log-details__label`},lt={class:`log-details__value log-details__value--box`},ut={key:0,class:`log-details__section`},dt={class:`log-details__label`},ft={class:`log-details__value log-details__value--box log-details__value--code`,"data-testid":`log-details-cwd`},pt={class:`log-details__section`},mt={class:`log-details__label`},ht={class:`log-details__value log-details__value--box`},gt={key:1,class:`log-details__section`},_t={class:`log-details__label`},vt={class:`log-details__value log-details__value--box`},yt={key:2,class:`log-details__section`},bt={class:`log-details__label`},xt={class:`log-details__value log-details__value--box log-details__value--code`},St=_(m({__name:`LogDetailsDrawer`,props:{visible:{type:Boolean},log:{}},emits:[`update:visible`,`view-process`],setup(t,{emit:r}){let o=t,{t:s}=ce(),c=de(),l=r,u=H(()=>{if(!o.log)return``;let e=new Date(o.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`)}`}),d=H(()=>o.log?o.log.level.charAt(0).toUpperCase()+o.log.level.slice(1):``),p=H(()=>!o.log||o.log.pid==null?s(`logDetails.notAvailable`):String(o.log.pid)),m=H(()=>o.log?c.getByService(o.log.processId)[0]?.cwd??null:null);function h(){o.log&&l(`view-process`,o.log.processId)}function g(){l(`update:visible`,!1)}return(r,o)=>(e(),a(D(y),{visible:t.visible,position:`right`,header:D(s)(`logDetails.header`),style:{width:`440px`},"onUpdate:visible":g},{default:P(()=>[t.log?(e(),w(`div`,Xe,[S(`div`,Ze,[S(`div`,Qe,i(D(s)(`logDetails.type`)),1),S(`div`,$e,i(d.value),1)]),S(`div`,et,[S(`div`,tt,i(D(s)(`logDetails.rawMessage`)),1),S(`div`,nt,i(t.log.raw),1)]),S(`div`,rt,[S(`div`,it,i(D(s)(`logDetails.serviceId`)),1),S(`div`,at,[S(`div`,ot,[S(`span`,null,i(t.log.processId),1),n(D(f),{label:D(s)(`logDetails.viewProcess`),icon:`pi pi-external-link`,size:`small`,outlined:``,onClick:h},null,8,[`label`])])])]),S(`div`,st,[S(`div`,ct,i(D(s)(`logDetails.pid`)),1),S(`div`,lt,i(p.value),1)]),m.value?(e(),w(`div`,ut,[S(`div`,dt,i(D(s)(`logDetails.cwd`)),1),S(`div`,ft,i(m.value),1)])):V(``,!0),S(`div`,pt,[S(`div`,mt,i(D(s)(`logDetails.timestamp`)),1),S(`div`,ht,i(u.value),1)]),t.log.stream?(e(),w(`div`,gt,[S(`div`,_t,i(D(s)(`logDetails.stream`)),1),S(`div`,vt,i(t.log.stream),1)])):V(``,!0),t.log.metadata&&Object.keys(t.log.metadata).length>0?(e(),w(`div`,yt,[S(`div`,bt,i(D(s)(`logDetails.metadata`)),1),S(`div`,xt,i(JSON.stringify(t.log.metadata,null,2)),1)])):V(``,!0)])):V(``,!0)]),_:1},8,[`visible`,`header`]))}}),[[`__scopeId`,`data-v-4e3f7abe`]]),Ct=500,wt=5,Tt=_e;function Et(e){return e+Math.random()*e*.3}function Dt(e,t){let n=o([]),i=o(!1),a=null,s=0,c=null,l=De(()=>{s=0,i.value||S()}),u=[],d=null,f=o(0),p=o(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>Ct&&(t=t.slice(t.length-Ct)),n.value=t}function b(){!e.value||!t.value||(i.value=!0,a=C.process.onLog.subscribe({agentId:e.value,processId:t.value},{onData(e){let t=e;if(s=0,r(`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),i.value=!1,a=null,x()}}))}function x(){if(s>=wt){console.warn(`[useLogStream] Max retries (${wt}) reached`),r(`disconnected`);return}r(`reconnecting`);let e=Et(Tt*2**s);s++,c=setTimeout(()=>{c=null,S()},e)}async function S(){if(!i.value&&!(!e.value||!t.value)){s=0;try{let i=await C.process.logs.query({agentId:e.value,processId:t.value});i.length>Ct&&(i=i.slice(i.length-Ct)),n.value=i,r(`connected`)}catch{}b()}}function w(){c&&=(clearTimeout(c),null),d!==null&&(cancelAnimationFrame(d),d=null),u=[],v(),a&&=(a.unsubscribe(),null),i.value=!1,s=0,n.value=[]}return N([e,t],([e,t],[n,r])=>{(e!==n||t!==r)&&(i.value&&w(),S())}),ae(()=>{l(),w()}),{logs:n,isStreaming:i,start:S,stop:w,receivedPerSec:f,flushedPerSec:p,startStats:_,stopStats:v}}var Ot={class:`service-terminal__toolbar`},kt={class:`service-terminal__toolbar-left`},At={key:0,class:`pid-option`},jt={key:1,class:`pid-option`},Mt={key:0,class:`pi pi-circle-fill pid-status-icon pid-status-icon--active`,style:{"margin-right":`0.5rem`}},Nt={key:1,class:`pi pi-circle-fill pid-status-icon pid-status-icon--stopped`,style:{"margin-right":`0.5rem`}},Pt={class:`pid-option`},Ft={key:0,class:`pi pi-list`,style:{"margin-right":`0.5rem`}},It=[`title`],Lt=[`title`],Rt={class:`service-terminal__toolbar-right`},zt={class:`service-terminal__content`,"data-testid":`service-terminal-content`},Bt={key:1,class:`service-terminal__shortcuts`},Vt={class:`service-terminal__command-input`},Ht={class:`service-terminal__bottom`},Ut=`runeya_command_history_`,Wt=50,Gt=_(m({__name:`ServiceTerminal`,props:{service:{},processes:{}},setup(t){let{t:r}=ce(),s=t,c=H(()=>s.processes.find(e=>e.state===`running`||e.state===`starting`)??s.processes[0]??null),u=H(()=>c.value?.agentId??``),d=H(()=>c.value?.id??``),p=Te(),{logs:m,isStreaming:h,start:g,stop:_,receivedPerSec:v,flushedPerSec:y,startStats:b,stopStats:x}=Dt(u,d),T=o(!1);N(T,e=>{e?b():x()});function E(e){e.ctrlKey&&e.shiftKey&&(e.key===`*`||e.key===`µ`)&&(e.preventDefault(),T.value=!T.value)}let ee=H(()=>{let e=new Map;return m.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=s.processes.find(e=>e.pid===t.pid&&(e.state===`running`||e.state===`starting`));e.set(t.pid,{pid:t.pid,lastSeen:new Date(t.timestamp),logCount:1,isActive:!!n})}}}),Array.from(e.values()).sort((e,t)=>t.lastSeen.getTime()-e.lastSeen.getTime())}),O=H(()=>je.value===`all`?m.value:m.value.filter(e=>e.pid===je.value)),k=H(()=>ee.value.filter(e=>e.isActive).length),A=H(()=>{let e=[{label:r(`serviceTerminal.allProcesses`),value:`all`,badge:k.value>0?`${k.value} ${r(`serviceTerminal.active`)}`:void 0,isActive:void 0}];return ee.value.forEach(({pid:t,logCount:n,isActive:r})=>{e.push({label:`PID: ${t}`,value:t,badge:`${n} logs`,isActive:r})}),e});H(()=>s.processes.filter(e=>e.state===`running`).length);async function te(){if(c.value)try{await C.process.clearLogBuffer.mutate({agentId:c.value.agentId,processId:c.value.id}),m.value=[]}catch(e){p.add({severity:`error`,summary:r(`serviceTerminal.error`),detail:e.message??r(`serviceTerminal.failedToClearLogs`),life:5e3})}}let re=H(()=>s.service.shortcuts??[]),ie=o(new Set);async function j(e){let t=c.value?.agentId??s.service.agentId,n=c.value?.id??s.service.id;if(!t){p.add({severity:`warn`,summary:r(`serviceTerminal.noAgent`),detail:r(`serviceTerminal.noAgentDesc`),life:3e3});return}if(ie.value.has(e.id)){try{await C.process.cancelShortcut.mutate({agentId:t,processId:n,shortcutId:e.id})}catch{}return}ie.value=new Set([...ie.value,e.id]);try{await C.process.executeShortcut.mutate({agentId:t,processId:n,shortcut:e})}catch(e){p.add({severity:`error`,summary:r(`serviceTerminal.shortcutFailed`),detail:e.message??r(`serviceTerminal.shortcutFailed`),life:5e3})}finally{let t=new Set(ie.value);t.delete(e.id),ie.value=t}}let oe=o(``),se=o(new Set),le=H(()=>se.value.size>0),de=o(null),M=o([]),pe=o(-1),me=`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(`,`),F=o([]);function he(e){let t=e.query.toLowerCase().trim();if(!t||!oe.value.trim()){F.value=[];return}let n=[...M.value.slice().reverse(),...me],r=new Set;F.value=n.filter(e=>r.has(e)?!1:(r.add(e),e.toLowerCase().includes(t))).slice(0,10)}function I(){try{let e=localStorage.getItem(Ut+s.service.id);e&&(M.value=JSON.parse(e))}catch{M.value=[]}}function ge(){try{localStorage.setItem(Ut+s.service.id,JSON.stringify(M.value))}catch{}}function L(e){M.value[M.value.length-1]!==e&&(M.value=[...M.value,e],M.value.length>Wt&&(M.value=M.value.slice(-Wt)),ge())}async function R(){let e=c.value?.agentId??s.service.agentId,t=c.value?.id??s.service.id;if(e)try{await C.process.cancelAdHocCommand.mutate({agentId:e,processId:t})}catch{}}async function _e(){if(!oe.value.trim())return;let e=c.value?.agentId??s.service.agentId,t=c.value?.id??s.service.id;if(!e){p.add({severity:`warn`,summary:r(`serviceTerminal.noAgent`),detail:r(`serviceTerminal.noAgentDesc`),life:3e3});return}let n=Ae(),i=oe.value.trim();L(i),oe.value=``,F.value=[],pe.value=-1,se.value=new Set([...se.value,n]);try{await C.process.executeAdHocCommand.mutate({agentId:e,processId:t,command:i,commandId:n})}catch(e){p.add({severity:`error`,summary:r(`serviceTerminal.commandFailed`),detail:e.message??r(`serviceTerminal.commandFailed`),life:5e3})}finally{let e=new Set(se.value);e.delete(n),se.value=e,l(()=>{document.querySelector(`.service-terminal__input`)?.focus()})}}function ve(e){if(e.key===`Enter`&&!e.shiftKey){e.preventDefault(),_e();return}if(e.key===`ArrowUp`){if(e.preventDefault(),M.value.length===0)return;pe.value===-1?pe.value=M.value.length-1:pe.value>0&&pe.value--,oe.value=M.value[pe.value]||``}else if(e.key===`ArrowDown`){if(e.preventDefault(),pe.value===-1)return;pe.value<M.value.length-1?(pe.value++,oe.value=M.value[pe.value]||``):(pe.value=-1,oe.value=``)}}function z(){if(m.value.length===0)return;let e=m.value.map(e=>`[${new Date(e.timestamp).toISOString()}] ${e.level.toUpperCase().padEnd(5)} ${e.message}`),t=new Blob([e.join(`
|
|
2
|
+
`)],{type:`text/plain`}),n=URL.createObjectURL(t),r=document.createElement(`a`);r.href=n,r.download=`${s.service.name}-${new Date().toISOString().slice(0,19).replaceAll(`:`,`-`)}.log`,document.body.appendChild(r),r.click(),document.body.removeChild(r),URL.revokeObjectURL(n)}let ye=o(0),be=0,xe=null,Se=null;N(c,e=>{if(!(e&&(e.state===`running`||e.state===`starting`))){xe&&=(clearInterval(xe),null),Se=null,ye.value=e?.uptime??0;return}let t=e.uptime??0;e.id!==Se&&(xe&&=(clearInterval(xe),null),Se=e.id,be=e.startedAt?new Date(e.startedAt).getTime():Date.now()-t,ye.value=Date.now()-be,xe=setInterval(()=>{ye.value=Date.now()-be},1e3))},{immediate:!0});let Ee=o(!0),De=o(null),Oe=o(!1),je=o(`all`),Me=o(!1);function Ne(){Me.value=!Me.value}ne(()=>{I(),c.value&&g(),window.addEventListener(`keydown`,E)}),ae(()=>{_(),window.removeEventListener(`keydown`,E),xe&&clearInterval(xe)});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){De.value=e,Oe.value=!0}function Ie(e){Oe.value=!1,p.add({severity:`info`,summary:`Process`,detail:`Process ID: ${e}`,life:3e3})}return(o,l)=>(e(),w(`div`,{class:ue([`service-terminal`,{"service-terminal--fullscreen":Me.value}]),"data-testid":`service-terminal`},[Me.value?(e(),a(ke,{key:0,service:t.service,processes:t.processes},null,8,[`service`,`processes`])):V(``,!0),S(`div`,Ot,[S(`div`,kt,[n(D(f),{label:D(r)(`serviceTerminal.logs`),severity:Ee.value?`primary`:`secondary`,text:``,size:`small`,onClick:l[0]||=e=>Ee.value=!0},null,8,[`label`,`severity`]),n(D(we),{modelValue:je.value,"onUpdate:modelValue":l[1]||=e=>je.value=e,options:A.value,"option-label":`label`,"option-value":`value`,class:`service-terminal__pid-selector`},{value:P(t=>[t.value===`all`?(e(),w(`div`,At,[l[5]||=S(`i`,{class:`pi pi-list`,style:{"margin-right":`0.5rem`}},null,-1),S(`span`,null,i(D(r)(`serviceTerminal.allProcesses`)),1),k.value>0?(e(),a(D(fe),{key:0,value:`${k.value} ${D(r)(`serviceTerminal.active`)}`,severity:`secondary`,class:`pid-badge`},null,8,[`value`])):V(``,!0)])):(e(),w(`div`,jt,[A.value.find(e=>e.value===t.value)?.isActive?(e(),w(`i`,Mt)):(e(),w(`i`,Nt)),S(`span`,null,`PID: `+i(t.value),1)]))]),option:P(t=>[S(`div`,Pt,[t.option.value===`all`?(e(),w(`i`,Ft)):t.option.isActive?(e(),w(`i`,{key:1,class:`pi pi-circle-fill pid-status-icon pid-status-icon--active`,title:D(r)(`serviceTerminal.running`)},null,8,It)):(e(),w(`i`,{key:2,class:`pi pi-circle-fill pid-status-icon pid-status-icon--stopped`,title:D(r)(`serviceTerminal.stopped`)},null,8,Lt)),S(`span`,null,i(t.option.label),1),t.option.badge?(e(),a(D(fe),{key:3,value:t.option.badge,severity:`secondary`,class:`pid-badge`},null,8,[`value`])):V(``,!0)])]),_:1},8,[`modelValue`,`options`])]),S(`div`,Rt,[n(D(f),{icon:Me.value?`pi pi-window-minimize`:`pi pi-window-maximize`,text:``,rounded:``,size:`small`,title:Me.value?D(r)(`serviceTerminal.exitFullscreen`):D(r)(`serviceTerminal.fullscreen`),onClick:Ne},null,8,[`icon`,`title`]),n(D(f),{icon:`pi pi-download`,text:``,rounded:``,size:`small`,title:D(r)(`serviceTerminal.downloadLogs`),disabled:D(m).length===0,onClick:z},null,8,[`title`,`disabled`]),n(D(f),{icon:`pi pi-trash`,text:``,rounded:``,size:`small`,title:D(r)(`serviceTerminal.clearLogs`),disabled:D(m).length===0,onClick:te},null,8,[`title`,`disabled`])])]),S(`div`,zt,[n(Ke,{logs:O.value,loading:!1,"received-per-sec":D(v),"flushed-per-sec":D(y),"show-stats":T.value,"service-label":s.service.label||s.service.name,onLogClick:Fe},null,8,[`logs`,`received-per-sec`,`flushed-per-sec`,`show-stats`,`service-label`])]),re.value.length>0?(e(),w(`div`,Bt,[(e(!0),w(B,null,Ce(re.value,t=>(e(),a(D(f),{key:t.id,label:t.label||t.command,"data-shortcut-id":t.id,class:`shortcut-badge`,icon:ie.value.has(t.id)?`pi pi-stop`:`pi pi-play`,size:`small`,outlined:!ie.value.has(t.id),severity:ie.value.has(t.id)?`danger`:void 0,onClick:e=>j(t)},null,8,[`label`,`data-shortcut-id`,`icon`,`outlined`,`severity`,`onClick`]))),128))])):V(``,!0),S(`div`,Vt,[l[6]||=S(`span`,{class:`service-terminal__prompt`,"data-testid":`terminal-prompt`},`>`,-1),n(D(Ue),{ref_key:`adHocCommandInput`,ref:de,modelValue:oe.value,"onUpdate:modelValue":l[2]||=e=>oe.value=e,suggestions:F.value,class:`service-terminal__autocomplete`,"input-class":`service-terminal__input`,placeholder:D(r)(`serviceTerminal.enterCommand`),"aria-label":D(r)(`serviceTerminal.enterCommand`),disabled:!(c.value?.agentId??s.service.agentId),"data-testid":`terminal-command-input`,onComplete:he,onKeydown:ve},null,8,[`modelValue`,`suggestions`,`placeholder`,`aria-label`,`disabled`]),n(D(f),{icon:le.value?`pi pi-stop`:`pi pi-play`,severity:le.value?`danger`:void 0,size:`small`,"data-testid":`terminal-run-btn`,disabled:!(c.value?.agentId??s.service.agentId)||!oe.value.trim()&&!le.value,onClick:l[3]||=e=>le.value?R():_e()},null,8,[`icon`,`severity`,`disabled`])]),S(`div`,Ht,[c.value?(e(),a(D(fe),{key:0,icon:`pi pi-server`,value:c.value.agentId.slice(0,8),severity:`secondary`,class:`service-terminal__pill`},null,8,[`value`])):V(``,!0),t.service.cwd?(e(),a(D(fe),{key:1,icon:`pi pi-folder`,value:t.service.cwd,severity:`secondary`,class:`service-terminal__pill`},null,8,[`value`])):V(``,!0),c.value&&(c.value.state===`running`||c.value.state===`starting`)?(e(),a(D(fe),{key:2,icon:`pi pi-clock`,value:Pe(ye.value/1e3),severity:`secondary`,class:`service-terminal__pill`},null,8,[`value`])):V(``,!0)]),n(St,{visible:Oe.value,"onUpdate:visible":l[4]||=e=>Oe.value=e,log:De.value,onViewProcess:Ie},null,8,[`visible`,`log`])],2))}}),[[`__scopeId`,`data-v-8ce2178d`]]),Kt=5,qt=_e;function Jt(e){return e+Math.random()*e*.3}function Yt(e,t){let n=o(null),i=o(!1),a=o(!1),s=null,c=0,l=null;async function u(){if(!i.value){a.value=!0;try{n.value=await C.process.metrics.query({agentId:e.value,processId:t.value})}catch(e){console.error(`Failed to fetch initial metrics:`,T(e))}finally{a.value=!1}d()}}function d(){i.value=!0,s=C.process.onMetrics.subscribe({agentId:e.value,processId:t.value},{onData(e){c=0,r(`connected`),n.value=e},onError(e){console.error(`Metrics stream error:`,e),i.value=!1,s=null,f()}})}function f(){if(c>=Kt){console.warn(`Metrics stream: max retries (${Kt}) reached, giving up`),r(`disconnected`);return}r(`reconnecting`);let e=Jt(qt*2**c);c++,l=setTimeout(()=>{l=null,d()},e)}function p(){l&&=(clearTimeout(l),null),s&&=(s.unsubscribe(),null),i.value=!1,c=0}return N([e,t],([e,t],[n,r])=>{(e!==n||t!==r)&&i.value&&(p(),u())}),ae(()=>{p()}),{metrics:n,isStreaming:i,isLoading:a,start:u,stop:p}}var Xt={class:`service-metrics`,"data-testid":`service-metrics`},Zt={key:1,class:`service-metrics__skeleton`},Qt={class:`metric-skeleton`},$t={class:`metric-skeleton`},en={key:2,class:`service-metrics__no-data`},tn={key:1,class:`service-metrics__no-process`},nn=_(m({__name:`ServiceMetrics`,props:{service:{},processes:{}},setup(t){let r=t,o=H(()=>r.processes.find(e=>e.state===`running`||e.state===`starting`)??r.processes[0]??null),s=H(()=>o.value?.agentId??``),c=H(()=>o.value?.id??``),{t:l}=ce(),{metrics:u,isLoading:d,start:f,stop:p}=Yt(s,c);return ne(()=>{o.value&&f()}),ae(()=>{p()}),(t,r)=>(e(),w(`div`,Xt,[o.value?(e(),w(B,{key:0},[D(u)?(e(),a(Ge,{key:0,cpu:D(u).cpu,memory:D(u).memory},null,8,[`cpu`,`memory`])):D(d)?(e(),w(`div`,Zt,[S(`div`,Qt,[n(D(We),{width:`4rem`,height:`0.75rem`,class:`mb-2`}),n(D(We),{width:`3rem`,height:`1.75rem`,class:`mb-3`}),n(D(We),{width:`100%`,height:`6px`,"border-radius":`4px`})]),S(`div`,$t,[n(D(We),{width:`4rem`,height:`0.75rem`,class:`mb-2`}),n(D(We),{width:`3rem`,height:`1.75rem`,class:`mb-3`}),n(D(We),{width:`6rem`,height:`0.65rem`})])])):(e(),w(`div`,en,i(D(l)(`serviceMetrics.noData`)),1))],64)):(e(),w(`div`,tn,[r[0]||=S(`i`,{class:`pi pi-info-circle`},null,-1),S(`span`,null,i(D(l)(`serviceMetrics.notRunning`)),1)]))]))}}),[[`__scopeId`,`data-v-94f5993b`]]),rn=`runeya:debug`,an=o(localStorage.getItem(rn)===`true`);function on(){function e(){an.value=!an.value,localStorage.setItem(rn,String(an.value))}return{isDebug:an,toggle:e}}var sn={class:`config-general`},cn={class:`config-card`},ln={class:`config-card__header`},un={class:`config-card`},dn={class:`config-card__header`},fn={class:`config-card__hint`},pn={class:`config-card`},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`},wn={class:`config-card__header`},Tn={class:`config-card__hint`},En={class:`config-card`},Dn={class:`config-card__header`},On={class:`config-card__hint`},kn={class:`config-card`},An={class:`config-card__header`},jn={class:`config-card__hint`},Mn={class:`config-card__hint`},Nn={class:`config-card`},Pn={class:`config-card__header`},Fn={class:`config-card__hint`},In={class:`config-meta`},Ln={class:`config-card config-card--inline`},Rn={class:`config-card__header`},zn={class:`config-card config-card--inline`},Bn={class:`config-card__header`},Vn=150,Hn=_(m({__name:`ServiceConfigGeneral`,props:{service:{}},emits:[`save`],setup(t,{emit:r}){let{t:a}=ce(),s=le(),c=ee(),l=o([]);function u(e){let t=e.query.trim().toLowerCase(),n=new Set(b.value.groups);l.value=v.value.filter(e=>!n.has(e)&&(!t||e.toLowerCase().includes(t)))}function d(e,t){let n=t.trim();if(n){if(e===`ports`){let e=Number(n);if(!Number.isInteger(e)||e<1||e>65535||b.value.ports.includes(String(e)))return;b.value.ports=[...b.value.ports,String(e)]}else{if(b.value.groups.includes(n))return;b.value.groups=[...b.value.groups,n]}A()}}function p(e){let t=e.target;d(`groups`,t.value),t.value=``,l.value=[]}function m(e,t){let n=e.target;!n||typeof n.value!=`string`||!n.value.trim()||setTimeout(()=>{d(t,n.value),n.value=``},Vn)}let h=t,g=r,_=H(()=>c.projects.find(e=>e.serviceIds.includes(h.service.id)&&(e.orgId??null)===(h.service.orgId??null))??null),v=H(()=>{let e=_.value;if(!e)return[];let t=new Set;for(let n of e.serviceIds)for(let e of s.getById(n)?.groups??[])t.add(e);return[...t].sort((e,t)=>e.localeCompare(t))});function y(e){return Object.entries(e??{}).map(([e,t])=>({key:e,value:t}))}let b=o({name:h.service.name,cwd:h.service.cwd??``,ports:(h.service.ports??[]).map(String),groups:[...h.service.groups??[]],description:h.service.description??``,docsPath:h.service.docsPath??``,url:h.service.url??``,openapiUrl:h.service.openapiUrl??``,gitRemote:h.service.git?.remote??``,gitHome:h.service.git?.home??``,autoRestart:h.service.autoRestart,clearLogsOnStart:h.service.clearLogsOnStart??!1}),x=o(y(h.service.meta));N(()=>h.service,e=>{b.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},x.value=y(e.meta)});function C(){x.value=[...x.value,{key:``,value:``}]}function T(e){x.value=x.value.filter((t,n)=>n!==e)}function E(e,t,n){x.value=x.value.map((r,i)=>i===e?{...r,[t]:n}:r)}function O(){let e={};for(let{key:t,value:n}of x.value){let r=t.trim();r&&(e[r]=n)}return{name:b.value.name,cwd:b.value.cwd||null,ports:b.value.ports.map(Number).filter(e=>e>0&&e<=65535),groups:b.value.groups,description:b.value.description,docsPath:b.value.docsPath??``,url:b.value.url,openapiUrl:b.value.openapiUrl,git:b.value.gitRemote||b.value.gitHome?{remote:b.value.gitRemote||void 0,home:b.value.gitHome||void 0}:null,autoRestart:b.value.autoRestart,clearLogsOnStart:b.value.clearLogsOnStart,meta:Object.keys(e).length>0?e:null}}let k=null;function A(){k&&clearTimeout(k),k=setTimeout(()=>{g(`save`,O()),k=null},150)}return(t,r)=>(e(),w(`div`,sn,[S(`div`,cn,[S(`div`,ln,[r[14]||=S(`i`,{class:`pi pi-tag`},null,-1),S(`span`,null,i(D(a)(`serviceConfigGeneral.name`)),1)]),n(D(R),{modelValue:b.value.name,"onUpdate:modelValue":r[0]||=e=>b.value.name=e,class:`config-card__input`,onBlur:A,onKeydown:I(F(A,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])]),S(`div`,un,[S(`div`,dn,[r[15]||=S(`i`,{class:`pi pi-folder`},null,-1),S(`span`,null,i(D(a)(`serviceConfigGeneral.workingDirectory`)),1)]),n(D(R),{modelValue:b.value.cwd,"onUpdate:modelValue":r[1]||=e=>b.value.cwd=e,class:`config-card__input`,placeholder:`.`,onBlur:A,onKeydown:I(F(A,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`]),S(`small`,fn,i(D(a)(`serviceConfigGeneral.cwdHint`)),1)]),S(`div`,pn,[r[16]||=S(`div`,{class:`config-card__header`},[S(`i`,{class:`pi pi-file-edit`}),S(`span`,null,`Dossier de documentation (wiki)`)],-1),n(D(R),{modelValue:b.value.docsPath,"onUpdate:modelValue":r[2]||=e=>b.value.docsPath=e,class:`config-card__input`,placeholder:`(défaut : même que cwd)`,onBlur:A,onKeydown:I(F(A,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`]),r[17]||=S(`small`,{class:`config-card__hint`},[L(` Chemin relatif au cwd du service (ex. `),S(`code`,null,`docs`),L(`) ou absolu. Si vide, utilise le cwd. `)],-1)]),S(`div`,mn,[S(`div`,hn,[r[18]||=S(`i`,{class:`pi pi-globe`},null,-1),S(`span`,null,i(D(a)(`serviceConfigGeneral.ports`)),1)]),n(D(Ue),{modelValue:b.value.ports,"onUpdate:modelValue":r[3]||=e=>b.value.ports=e,multiple:``,typeahead:!1,class:`config-card__input`,placeholder:D(a)(`serviceConfigGeneral.portsPlaceholder`),onChange:A,onBlur:r[4]||=e=>m(e,`ports`)},null,8,[`modelValue`,`placeholder`]),S(`small`,gn,i(D(a)(`serviceConfigGeneral.portsHint`)),1)]),S(`div`,_n,[S(`div`,vn,[r[19]||=S(`i`,{class:`pi pi-th-large`},null,-1),S(`span`,null,i(D(a)(`serviceConfigGeneral.groups`)),1)]),n(D(Ue),{modelValue:b.value.groups,"onUpdate:modelValue":r[5]||=e=>b.value.groups=e,multiple:``,suggestions:l.value,"complete-on-focus":!0,class:`config-card__input`,placeholder:D(a)(`serviceConfigGeneral.groupsPlaceholder`),onComplete:u,onChange:A,onKeydown:I(p,[`enter`]),onBlur:r[6]||=e=>m(e,`groups`)},null,8,[`modelValue`,`suggestions`,`placeholder`]),S(`small`,yn,i(D(a)(`serviceConfigGeneral.groupsHint`)),1)]),S(`div`,bn,[S(`div`,xn,[r[20]||=S(`i`,{class:`pi pi-info-circle`},null,-1),S(`span`,null,i(D(a)(`serviceConfigGeneral.description`)),1)]),n(D(xe),{modelValue:b.value.description,"onUpdate:modelValue":r[7]||=e=>b.value.description=e,class:`config-card__input`,rows:2,onBlur:A},null,8,[`modelValue`]),S(`small`,Sn,i(D(a)(`serviceConfigGeneral.descriptionHint`)),1)]),S(`div`,Cn,[S(`div`,wn,[r[21]||=S(`i`,{class:`pi pi-external-link`},null,-1),S(`span`,null,i(D(a)(`serviceConfigGeneral.url`)),1)]),n(D(R),{modelValue:b.value.url,"onUpdate:modelValue":r[8]||=e=>b.value.url=e,class:`config-card__input`,placeholder:`https://...`,onBlur:A,onKeydown:I(F(A,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`]),S(`small`,Tn,i(D(a)(`serviceConfigGeneral.urlHint`)),1)]),S(`div`,En,[S(`div`,Dn,[r[22]||=S(`i`,{class:`pi pi-book`},null,-1),S(`span`,null,i(D(a)(`serviceConfigGeneral.openapiUrl`)),1)]),n(D(R),{modelValue:b.value.openapiUrl,"onUpdate:modelValue":r[9]||=e=>b.value.openapiUrl=e,class:`config-card__input`,placeholder:`https://.../swagger.json`,onBlur:A,onKeydown:I(F(A,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`]),S(`small`,On,i(D(a)(`serviceConfigGeneral.openapiUrlHint`)),1)]),S(`div`,kn,[S(`div`,An,[r[23]||=S(`i`,{class:`pi pi-github`},null,-1),S(`span`,null,i(D(a)(`serviceConfigGeneral.git`)),1)]),n(D(R),{modelValue:b.value.gitRemote,"onUpdate:modelValue":r[10]||=e=>b.value.gitRemote=e,class:`config-card__input`,placeholder:`git@github.com:org/repo.git`,onBlur:A,onKeydown:I(F(A,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`]),S(`small`,jn,i(D(a)(`serviceConfigGeneral.gitRemoteHint`)),1),n(D(R),{modelValue:b.value.gitHome,"onUpdate:modelValue":r[11]||=e=>b.value.gitHome=e,class:`config-card__input`,style:{"margin-top":`0.5rem`},placeholder:`https://github.com/org/repo`,onBlur:A,onKeydown:I(F(A,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`]),S(`small`,Mn,i(D(a)(`serviceConfigGeneral.gitHomeHint`)),1)]),S(`div`,Nn,[S(`div`,Pn,[r[24]||=S(`i`,{class:`pi pi-hashtag`},null,-1),S(`span`,null,i(D(a)(`serviceConfigGeneral.meta`)),1)]),S(`small`,Fn,i(D(a)(`serviceConfigGeneral.metaHint`)),1),S(`div`,In,[(e(!0),w(B,null,Ce(x.value,(t,r)=>(e(),w(`div`,{key:r,class:`config-meta__row`},[n(D(R),{"model-value":t.key,placeholder:D(a)(`serviceConfigGeneral.metaKeyPlaceholder`),class:`config-meta__input`,"onUpdate:modelValue":e=>E(r,`key`,e),onBlur:A,onKeydown:I(F(A,[`prevent`]),[`enter`])},null,8,[`model-value`,`placeholder`,`onUpdate:modelValue`,`onKeydown`]),n(D(R),{"model-value":t.value,placeholder:D(a)(`serviceConfigGeneral.metaValuePlaceholder`),class:`config-meta__input config-meta__input--wide`,"onUpdate:modelValue":e=>E(r,`value`,e),onBlur:A,onKeydown:I(F(A,[`prevent`]),[`enter`])},null,8,[`model-value`,`placeholder`,`onUpdate:modelValue`,`onKeydown`]),n(D(f),{icon:`pi pi-trash`,severity:`danger`,text:``,rounded:``,size:`small`,onClick:()=>{T(r),A()}},null,8,[`onClick`])]))),128)),n(D(f),{label:D(a)(`serviceConfigGeneral.addEntry`),icon:`pi pi-plus`,severity:`secondary`,outlined:``,size:`small`,class:`config-meta__add`,onClick:C},null,8,[`label`])])]),S(`div`,Ln,[S(`div`,Rn,[r[25]||=S(`i`,{class:`pi pi-refresh`},null,-1),S(`span`,null,i(D(a)(`serviceConfigGeneral.autoRestart`)),1)]),n(D(Fe),{modelValue:b.value.autoRestart,"onUpdate:modelValue":r[12]||=e=>b.value.autoRestart=e,onChange:A},null,8,[`modelValue`])]),S(`div`,zn,[S(`div`,Bn,[r[26]||=S(`i`,{class:`pi pi-trash`},null,-1),S(`span`,null,i(D(a)(`serviceConfigGeneral.clearLogs`)),1)]),n(D(Fe),{modelValue:b.value.clearLogsOnStart,"onUpdate:modelValue":r[13]||=e=>b.value.clearLogsOnStart=e,onChange:A},null,8,[`modelValue`])])]))}}),[[`__scopeId`,`data-v-6fef6778`]]),Un={class:`docker-config`},Wn={class:`docker-config__section`},Gn={for:`docker-mode-image`,class:`docker-config__section-title`},Kn={class:`docker-config__mode-toggle`},qn={class:`docker-config__mode-option`},Jn={class:`docker-config__mode-option`},Yn={key:0,class:`docker-config__section`},Xn={for:`docker-image`,class:`docker-config__label`},Zn={class:`docker-config__section`},Qn={class:`docker-config__section`},$n={for:`docker-build-context`,class:`docker-config__label`},er={class:`docker-config__section`},tr={for:`docker-add-build-arg`,class:`docker-config__label`},nr={class:`docker-config__kv-list`},rr={class:`docker-config__section`},ir={for:`docker-target-stage`,class:`docker-config__label`},ar={class:`docker-config__section`},or={for:`docker-user`,class:`docker-config__section-title`},sr={class:`docker-config__section`},cr={for:`docker-user`,class:`docker-config__label`},lr={class:`docker-config__section`},ur={for:`docker-network-mode`,class:`docker-config__label`},dr={key:2,class:`docker-config__section`},fr={for:`docker-add-port`,class:`docker-config__label`},pr={class:`docker-config__list`},mr={class:`docker-config__section`},hr={for:`docker-add-volume`,class:`docker-config__label`},gr={class:`docker-config__checkbox-row`},_r={for:`mountRootpath`,class:`docker-config__checkbox-label`},vr={class:`docker-config__list`},yr={class:`docker-config__section`},br={class:`docker-config__checkbox-row`},xr={for:`useNativeCommand`,class:`docker-config__checkbox-label`},Sr={key:0,class:`docker-config__shell-row`},Cr={for:`docker-native-shell`,class:`docker-config__label`},wr={class:`docker-config__hint`},Tr={key:1,class:`docker-config__mode-toggle docker-config__mode-toggle--indented`},Er={class:`docker-config__mode-option`},Dr={class:`docker-config__mode-option`},Or={class:`docker-config__section`},kr={for:`docker-entrypoint`,class:`docker-config__label`},Ar={class:`docker-config__section`},jr={for:`docker-command`,class:`docker-config__label`},Mr={class:`docker-config__section`},Nr={for:`docker-add-bootstrap`,class:`docker-config__section-title`},Pr={class:`docker-config__hint-inline`},Fr={class:`docker-config__bootstrap-row`},Ir={class:`docker-config__bootstrap-field`},Lr=[`for`],Rr={class:`docker-config__bootstrap-field`},zr=[`for`],Br={class:`docker-config__bootstrap-field docker-config__bootstrap-field--wide`},Vr=[`for`],Hr={class:`docker-config__bootstrap-field`},Ur=[`for`],Wr={class:`docker-config__bootstrap-actions`},Gr={class:`docker-config__section`},Kr=_(m({__name:`ServiceConfigDocker`,props:{service:{}},emits:[`save`],setup(t,{emit:r}){let{t:a}=ce(),s=t,l=r,u=s.service.dockerConfig??{},d=o(u.dockerfile?`build`:`image`),m=o(u.image??``),h=o(u.dockerfile??``),g=o(u.buildContext??``),_=o(Object.entries(u.buildArgs??{}).map(([e,t])=>({key:e,value:t}))),v=o(u.targetStage??``),y=o(u.networkMode??`host`),b=o([...u.ports??[]]),x=o([...u.volumes??[]]),C=o(u.mountRootpath??!1),T=o(u.entrypoint??``),E=o(u.command??``),ee=o(u.user??``),O=o(u.useNativeCommand??!1),k=o(u.nativeCommandMode??`isolated`),A=o(u.nativeShell??`sh`),te=[{label:`sh (POSIX)`,value:`sh`},{label:`bash`,value:`bash`},{label:`zsh`,value:`zsh`},{label:`ash (Alpine)`,value:`ash`}],ne=o([...u.bootstrapCommands??[]]),re=o(!1),ie=[{label:`Host (--network host)`,value:`host`},{label:`Bridge`,value:`bridge`}];function ae(){_.value=[..._.value,{key:``,value:``}]}function oe(e){_.value=_.value.filter((t,n)=>n!==e)}function se(e,t,n){_.value=_.value.map((r,i)=>i===e?{...r,[t]:n}:r)}function le(){b.value=[...b.value,``]}function ue(e){b.value=b.value.filter((t,n)=>n!==e)}function de(e,t){b.value=b.value.map((n,r)=>r===e?t:n)}function fe(){x.value=[...x.value,``]}function pe(e){x.value=x.value.filter((t,n)=>n!==e)}function N(e,t){x.value=x.value.map((n,r)=>r===e?t:n)}function me(){ne.value=[...ne.value,{id:Ae(),label:`Bootstrap`,entrypoint:`/bin/sh`,command:`-c ""`,user:void 0}]}function he(e){ne.value=ne.value.filter((t,n)=>n!==e)}function ge(e,t,n){ne.value=ne.value.map((r,i)=>i===e?{...r,[t]:n===``?void 0:n}:r)}function _e(e,t){let n=[...ne.value],r=e+t;r<0||r>=n.length||([n[e],n[r]]=[n[r],n[e]],ne.value=n)}let ve=null;function z(){ve&&clearTimeout(ve),ve=setTimeout(()=>{let e={};for(let{key:t,value:n}of _.value)t.trim()&&(e[t.trim()]=n);l(`save`,{image:d.value===`image`&&m.value||void 0,dockerfile:d.value===`build`&&h.value||void 0,buildContext:g.value||void 0,buildArgs:e,targetStage:v.value||void 0,networkMode:y.value,ports:b.value.filter(Boolean),volumes:x.value.filter(Boolean),mountRootpath:C.value,entrypoint:T.value||void 0,command:E.value||void 0,user:ee.value||void 0,useNativeCommand:O.value,nativeCommandMode:k.value,nativeShell:A.value,bootstrapCommands:ne.value}),ve=null},150)}function ye(e){he(e),z()}function be(e,t){_e(e,t),z()}function xe(e){oe(e),z()}function Se(e){ue(e),z()}function Te(e){pe(e),z()}return(t,r)=>(e(),w(`div`,Un,[S(`div`,Wn,[S(`label`,Gn,i(D(a)(`serviceConfigDocker.imageSource`)),1),S(`div`,Kn,[S(`label`,qn,[j(S(`input`,{id:`docker-mode-image`,"onUpdate:modelValue":r[0]||=e=>d.value=e,type:`radio`,value:`image`,class:`docker-config__radio`,onChange:z},null,544),[[M,d.value]]),L(` `+i(D(a)(`serviceConfigDocker.pullImage`)),1)]),S(`label`,Jn,[j(S(`input`,{"onUpdate:modelValue":r[1]||=e=>d.value=e,type:`radio`,value:`build`,class:`docker-config__radio`,onChange:z},null,544),[[M,d.value]]),L(` `+i(D(a)(`serviceConfigDocker.buildDockerfile`)),1)])])]),d.value===`image`?(e(),w(`div`,Yn,[S(`label`,Xn,i(D(a)(`serviceConfigDocker.image`)),1),n(D(R),{id:`docker-image`,modelValue:m.value,"onUpdate:modelValue":r[2]||=e=>m.value=e,placeholder:D(a)(`serviceConfigDocker.imagePlaceholder`),class:`docker-config__input`,onBlur:z,onKeydown:I(F(z,[`prevent`]),[`enter`])},null,8,[`modelValue`,`placeholder`,`onKeydown`])])):V(``,!0),d.value===`build`?(e(),w(B,{key:1},[S(`div`,Zn,[r[18]||=S(`label`,{for:`docker-dockerfile-btn`,class:`docker-config__label`},`Dockerfile`,-1),n(D(f),{id:`docker-dockerfile-btn`,label:D(a)(`serviceConfigDocker.editDockerfile`),icon:`pi pi-file-edit`,severity:`secondary`,outlined:``,size:`small`,onClick:r[3]||=e=>re.value=!0},null,8,[`label`]),n(D(c),{visible:re.value,"onUpdate:visible":r[6]||=e=>re.value=e,header:D(a)(`serviceConfigDocker.editDockerfile`),modal:``,style:{width:`800px`}},{footer:P(()=>[n(D(f),{label:D(a)(`serviceConfigDocker.closeDockerfile`),icon:`pi pi-times`,onClick:r[5]||=()=>{re.value=!1,z()}},null,8,[`label`])]),default:P(()=>[n(p,{modelValue:h.value,"onUpdate:modelValue":r[4]||=e=>h.value=e,language:`dockerfile`,style:{height:`400px`}},null,8,[`modelValue`])]),_:1},8,[`visible`,`header`])]),S(`div`,Qn,[S(`label`,$n,i(D(a)(`serviceConfigDocker.buildContext`)),1),n(D(R),{id:`docker-build-context`,modelValue:g.value,"onUpdate:modelValue":r[7]||=e=>g.value=e,placeholder:`.`,class:`docker-config__input`,onBlur:z,onKeydown:I(F(z,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])]),S(`div`,er,[S(`label`,tr,i(D(a)(`serviceConfigDocker.buildArgs`)),1),S(`div`,nr,[(e(!0),w(B,null,Ce(_.value,(t,r)=>(e(),w(`div`,{key:r,class:`docker-config__kv-row`},[n(D(R),{"model-value":t.key,placeholder:D(a)(`serviceConfigDocker.argNamePlaceholder`),class:`docker-config__kv-input`,"onUpdate:modelValue":e=>se(r,`key`,e),onBlur:z,onKeydown:I(F(z,[`prevent`]),[`enter`])},null,8,[`model-value`,`placeholder`,`onUpdate:modelValue`,`onKeydown`]),n(D(R),{"model-value":t.value,placeholder:D(a)(`serviceConfigDocker.argValuePlaceholder`),class:`docker-config__kv-input`,"onUpdate:modelValue":e=>se(r,`value`,e),onBlur:z,onKeydown:I(F(z,[`prevent`]),[`enter`])},null,8,[`model-value`,`placeholder`,`onUpdate:modelValue`,`onKeydown`]),n(D(f),{icon:`pi pi-trash`,severity:`danger`,text:``,rounded:``,size:`small`,onClick:e=>xe(r)},null,8,[`onClick`])]))),128)),n(D(f),{id:`docker-add-build-arg`,label:D(a)(`serviceConfigDocker.addBuildArg`),icon:`pi pi-plus`,severity:`secondary`,outlined:``,size:`small`,onClick:ae},null,8,[`label`])])]),S(`div`,rr,[S(`label`,ir,i(D(a)(`serviceConfigDocker.targetStage`)),1),n(D(R),{id:`docker-target-stage`,modelValue:v.value,"onUpdate:modelValue":r[8]||=e=>v.value=e,placeholder:D(a)(`serviceConfigDocker.targetStagePlaceholder`),class:`docker-config__input`,onBlur:z,onKeydown:I(F(z,[`prevent`]),[`enter`])},null,8,[`modelValue`,`placeholder`,`onKeydown`])])],64)):V(``,!0),n(D(qe)),S(`div`,ar,[S(`label`,or,i(D(a)(`serviceConfigDocker.runtimeConfig`)),1)]),S(`div`,sr,[S(`label`,cr,i(D(a)(`serviceConfigDocker.userGroup`)),1),n(D(R),{id:`docker-user`,modelValue:ee.value,"onUpdate:modelValue":r[9]||=e=>ee.value=e,placeholder:D(a)(`serviceConfigDocker.userGroupHint`),class:`docker-config__input`,onBlur:z,onKeydown:I(F(z,[`prevent`]),[`enter`])},null,8,[`modelValue`,`placeholder`,`onKeydown`])]),S(`div`,lr,[S(`label`,ur,i(D(a)(`serviceConfigDocker.networkMode`)),1),n(D(we),{"input-id":`docker-network-mode`,modelValue:y.value,"onUpdate:modelValue":r[10]||=e=>y.value=e,options:ie,"option-label":`label`,"option-value":`value`,class:`docker-config__select`,onChange:z},null,8,[`modelValue`])]),y.value===`bridge`?(e(),w(`div`,dr,[S(`label`,fr,i(D(a)(`serviceConfigDocker.portMappings`)),1),S(`div`,pr,[(e(!0),w(B,null,Ce(b.value,(t,r)=>(e(),w(`div`,{key:r,class:`docker-config__list-row`},[n(D(R),{"model-value":t,placeholder:D(a)(`serviceConfigDocker.portPlaceholder`),class:`docker-config__input`,"onUpdate:modelValue":e=>de(r,e),onBlur:z,onKeydown:I(F(z,[`prevent`]),[`enter`])},null,8,[`model-value`,`placeholder`,`onUpdate:modelValue`,`onKeydown`]),n(D(f),{icon:`pi pi-trash`,severity:`danger`,text:``,rounded:``,size:`small`,onClick:e=>Se(r)},null,8,[`onClick`])]))),128)),n(D(f),{id:`docker-add-port`,label:D(a)(`serviceConfigDocker.addPort`),icon:`pi pi-plus`,severity:`secondary`,outlined:``,size:`small`,onClick:le},null,8,[`label`])])])):V(``,!0),S(`div`,mr,[S(`label`,hr,i(D(a)(`serviceConfigDocker.volumes`)),1),S(`div`,gr,[n(D(Pe),{modelValue:C.value,"onUpdate:modelValue":r[11]||=e=>C.value=e,binary:!0,"input-id":`mountRootpath`,onChange:z},null,8,[`modelValue`]),S(`label`,_r,i(D(a)(`serviceConfigDocker.autoMount`)),1)]),S(`div`,vr,[(e(!0),w(B,null,Ce(x.value,(t,r)=>(e(),w(`div`,{key:r,class:`docker-config__list-row`},[n(D(R),{"model-value":t,placeholder:D(a)(`serviceConfigDocker.volumePlaceholder`),class:`docker-config__input`,"onUpdate:modelValue":e=>N(r,e),onBlur:z,onKeydown:I(F(z,[`prevent`]),[`enter`])},null,8,[`model-value`,`placeholder`,`onUpdate:modelValue`,`onKeydown`]),n(D(f),{icon:`pi pi-trash`,severity:`danger`,text:``,rounded:``,size:`small`,onClick:e=>Te(r)},null,8,[`onClick`])]))),128)),n(D(f),{id:`docker-add-volume`,label:D(a)(`serviceConfigDocker.addVolume`),icon:`pi pi-plus`,severity:`secondary`,outlined:``,size:`small`,onClick:fe},null,8,[`label`])])]),n(D(qe)),S(`div`,yr,[S(`div`,br,[n(D(Pe),{modelValue:O.value,"onUpdate:modelValue":r[12]||=e=>O.value=e,binary:!0,"input-id":`useNativeCommand`,onChange:z},null,8,[`modelValue`]),S(`label`,xr,i(D(a)(`serviceConfigDocker.runNative`)),1)]),r[21]||=S(`span`,{class:`docker-config__hint`},` When enabled, the service command is executed directly inside the container (ignores CMD override below). `,-1),O.value?(e(),w(`div`,Sr,[S(`label`,Cr,i(D(a)(`serviceConfigDocker.shell`)),1),n(D(we),{"input-id":`docker-native-shell`,modelValue:A.value,"onUpdate:modelValue":r[13]||=e=>A.value=e,options:te,"option-label":`label`,"option-value":`value`,class:`docker-config__select docker-config__select--small`,editable:``,placeholder:D(a)(`serviceConfigDocker.shellPlaceholder`),onChange:z},null,8,[`modelValue`,`placeholder`]),S(`span`,wr,[L(i(D(a)(`serviceConfigDocker.shellHint`))+` (`,1),r[19]||=S(`code`,null,`shell -c '...'`,-1),r[20]||=L(`)`,-1)])])):V(``,!0),O.value?(e(),w(`div`,Tr,[S(`label`,Er,[j(S(`input`,{"onUpdate:modelValue":r[14]||=e=>k.value=e,type:`radio`,value:`isolated`,class:`docker-config__radio`,onChange:z},null,544),[[M,k.value]]),L(` `+i(D(a)(`serviceConfigDocker.isolated`)),1)]),S(`label`,Dr,[j(S(`input`,{"onUpdate:modelValue":r[15]||=e=>k.value=e,type:`radio`,value:`shared`,class:`docker-config__radio`,onChange:z},null,544),[[M,k.value]]),L(` `+i(D(a)(`serviceConfigDocker.shared`)),1)])])):V(``,!0)]),O.value?V(``,!0):(e(),w(B,{key:3},[r[22]||=S(`div`,{class:`docker-config__section`},[S(`label`,{for:`docker-entrypoint`,class:`docker-config__section-title`},`Override`)],-1),S(`div`,Or,[S(`label`,kr,i(D(a)(`serviceConfigDocker.entrypoint`)),1),n(D(R),{id:`docker-entrypoint`,modelValue:T.value,"onUpdate:modelValue":r[16]||=e=>T.value=e,placeholder:D(a)(`serviceConfigDocker.entrypointPlaceholder`),class:`docker-config__input`,onBlur:z,onKeydown:I(F(z,[`prevent`]),[`enter`])},null,8,[`modelValue`,`placeholder`,`onKeydown`])]),S(`div`,Ar,[S(`label`,jr,i(D(a)(`serviceConfigDocker.cmdOverride`)),1),n(D(R),{id:`docker-command`,modelValue:E.value,"onUpdate:modelValue":r[17]||=e=>E.value=e,placeholder:D(a)(`serviceConfigDocker.cmdPlaceholder`),class:`docker-config__input`,onBlur:z,onKeydown:I(F(z,[`prevent`]),[`enter`])},null,8,[`modelValue`,`placeholder`,`onKeydown`])])],64)),n(D(qe)),S(`div`,Mr,[S(`label`,Nr,[L(i(D(a)(`serviceConfigDocker.bootstrapCommands`))+` `,1),S(`span`,Pr,` — `+i(D(a)(`serviceConfigDocker.bootstrapCommandsHint`)),1)])]),(e(!0),w(B,null,Ce(ne.value,(t,r)=>(e(),w(`div`,{key:t.id,class:`docker-config__bootstrap-card`},[S(`div`,Fr,[S(`div`,Ir,[S(`label`,{class:`docker-config__label`,for:`docker-bootstrap-label-${r}`},`Label`,8,Lr),n(D(R),{id:`docker-bootstrap-label-${r}`,"model-value":t.label,placeholder:D(a)(`serviceConfigDocker.bootstrapLabelPlaceholder`),class:`docker-config__input`,"onUpdate:modelValue":e=>ge(r,`label`,e),onBlur:z,onKeydown:I(F(z,[`prevent`]),[`enter`])},null,8,[`id`,`model-value`,`placeholder`,`onUpdate:modelValue`,`onKeydown`])]),S(`div`,Rr,[S(`label`,{class:`docker-config__label`,for:`docker-bootstrap-entrypoint-${r}`},`Entrypoint`,8,zr),n(D(R),{id:`docker-bootstrap-entrypoint-${r}`,"model-value":t.entrypoint??``,placeholder:`/bin/sh`,class:`docker-config__input`,"onUpdate:modelValue":e=>ge(r,`entrypoint`,e),onBlur:z,onKeydown:I(F(z,[`prevent`]),[`enter`])},null,8,[`id`,`model-value`,`onUpdate:modelValue`,`onKeydown`])]),S(`div`,Br,[S(`label`,{class:`docker-config__label`,for:`docker-bootstrap-command-${r}`},`Command`,8,Vr),n(D(R),{id:`docker-bootstrap-command-${r}`,"model-value":t.command,placeholder:`-c "npm install"`,class:`docker-config__input`,"onUpdate:modelValue":e=>ge(r,`command`,e),onBlur:z,onKeydown:I(F(z,[`prevent`]),[`enter`])},null,8,[`id`,`model-value`,`onUpdate:modelValue`,`onKeydown`])]),S(`div`,Hr,[S(`label`,{class:`docker-config__label`,for:`docker-bootstrap-user-${r}`},`User:Group`,8,Ur),n(D(R),{id:`docker-bootstrap-user-${r}`,"model-value":t.user??``,placeholder:D(a)(`serviceConfigDocker.userGroupHint`),class:`docker-config__input`,"onUpdate:modelValue":e=>ge(r,`user`,e),onBlur:z,onKeydown:I(F(z,[`prevent`]),[`enter`])},null,8,[`id`,`model-value`,`placeholder`,`onUpdate:modelValue`,`onKeydown`])]),S(`div`,Wr,[n(D(f),{icon:`pi pi-arrow-up`,text:``,rounded:``,size:`small`,disabled:r===0,onClick:e=>be(r,-1)},null,8,[`disabled`,`onClick`]),n(D(f),{icon:`pi pi-arrow-down`,text:``,rounded:``,size:`small`,disabled:r===ne.value.length-1,onClick:e=>be(r,1)},null,8,[`disabled`,`onClick`]),n(D(f),{icon:`pi pi-times`,severity:`danger`,text:``,rounded:``,size:`small`,onClick:e=>ye(r)},null,8,[`onClick`])])])]))),128)),S(`div`,Gr,[n(D(f),{id:`docker-add-bootstrap`,label:D(a)(`serviceConfigDocker.addBootstrapCommand`),icon:`pi pi-plus`,severity:`secondary`,outlined:``,size:`small`,onClick:me},null,8,[`label`])])]))}}),[[`__scopeId`,`data-v-91c13548`]]),qr={class:`config-commands`},Jr={class:`config-commands__execution`},Yr={class:`config-card config-card--execution`},Xr={class:`config-card__header`},Zr={class:`config-card__hint`},Qr={class:`config-card config-card--execution`},$r={class:`config-card__header`},ei={key:0,class:`runner-option`},ti={class:`runner-option`},ni={class:`config-commands__tab-content`},ri={key:0,class:`config-commands__empty`},ii={class:`config-commands__row`},ai={class:`config-commands__field`},oi=[`for`],si={class:`config-commands__field config-commands__field--wide`},ci=[`for`],li={class:`config-commands__field`},ui=[`for`],di={class:`config-commands__actions-cell`},fi={class:`config-commands__footer`},pi={class:`config-commands__tab-content`},mi=`__inherit__`,hi=_(m({__name:`ServiceConfigCommands`,props:{service:{}},emits:[`save`,`dockerSave`],setup(t,{emit:r}){let a=t,s=r,{t:c}=ce(),l=ve(),u=null,d=o({agentId:a.service.agentId??mi,runner:a.service.runner});N(()=>a.service,e=>{d.value={agentId:e.agentId??mi,runner:e.runner}});let p=H(()=>[{label:c(`serviceConfigCommands.native`),value:`native`,icon:`pi pi-desktop`},{label:c(`serviceConfigCommands.docker`),value:`docker`,icon:`pi pi-box`}]),m=H(()=>p.value.find(e=>e.value===d.value.runner)?.icon??`pi pi-box`),h=H(()=>[{label:c(`serviceForm.agentInherit`),value:mi},...l.agents.map(e=>({label:`${e.config.name} (${e.status.connected?c(`serviceConfigCommands.online`):c(`serviceConfigCommands.offline`)})`,value:e.config.id}))]),g=o([...a.service.commands??[]]);N(()=>a.service,e=>{u||(g.value=[...e.commands??[]])});function _(){g.value=[...g.value,{id:Ae(),label:``,command:``,cwd:void 0,shell:!0}]}function v(e){g.value=g.value.filter((t,n)=>n!==e)}function y(e,t,n){g.value=g.value.map((r,i)=>i===e?{...r,[t]:n===``?void 0:n}:r)}function b(){u&&clearTimeout(u),u=setTimeout(()=>{s(`save`,{agentId:d.value.agentId===mi?null:d.value.agentId||null,runner:d.value.runner,commands:g.value}),u=null},150)}function x(e){s(`dockerSave`,e)}function C(e){v(e),b()}return(r,a)=>(e(),w(`div`,qr,[S(`div`,Jr,[S(`div`,Yr,[S(`div`,Xr,[a[2]||=S(`i`,{class:`pi pi-server`},null,-1),S(`span`,null,i(D(c)(`serviceConfigCommands.agent`)),1)]),n(D(we),{modelValue:d.value.agentId,"onUpdate:modelValue":a[0]||=e=>d.value.agentId=e,options:h.value,"option-label":`label`,"option-value":`value`,class:`config-card__input`,onChange:b},null,8,[`modelValue`,`options`]),S(`small`,Zr,i(D(c)(`serviceForm.agentHintEdit`)),1)]),S(`div`,Qr,[S(`div`,$r,[S(`i`,{class:ue(m.value)},null,2),S(`span`,null,i(D(c)(`serviceConfigCommands.runner`)),1)]),n(D(we),{modelValue:d.value.runner,"onUpdate:modelValue":a[1]||=e=>d.value.runner=e,options:p.value,"option-label":`label`,"option-value":`value`,class:`config-card__input`,onChange:b},{value:P(t=>[t.value?(e(),w(`div`,ei,[S(`i`,{class:ue(p.value.find(e=>e.value===t.value)?.icon)},null,2),S(`span`,null,i(p.value.find(e=>e.value===t.value)?.label),1)])):V(``,!0)]),option:P(e=>[S(`div`,ti,[S(`i`,{class:ue(e.option.icon)},null,2),S(`span`,null,i(e.option.label),1)])]),_:1},8,[`modelValue`,`options`])])]),n(D(Re),{value:`0`},{default:P(()=>[n(D(Ie),null,{default:P(()=>[n(D(ze),{value:`0`},{default:P(()=>[a[3]||=S(`i`,{class:`pi pi-desktop tab-icon`},null,-1),S(`span`,null,i(D(c)(`serviceConfigCommands.native`)),1)]),_:1}),n(D(ze),{value:`1`},{default:P(()=>[a[4]||=S(`i`,{class:`pi pi-box tab-icon`},null,-1),S(`span`,null,i(D(c)(`serviceConfigCommands.docker`)),1)]),_:1})]),_:1}),n(D(Le),null,{default:P(()=>[n(D(Be),{value:`0`},{default:P(()=>[S(`div`,ni,[g.value.length===0?(e(),w(`div`,ri,[S(`p`,null,i(D(c)(`serviceConfigCommands.noCommands`)),1)])):V(``,!0),(e(!0),w(B,null,Ce(g.value,(t,r)=>(e(),w(`div`,{key:t.id,class:`config-card`},[S(`div`,ii,[S(`div`,ai,[S(`label`,{class:`config-commands__label`,for:`cmd-label-${r}`},i(D(c)(`serviceConfigCommands.labelPlaceholder`)),9,oi),n(D(R),{id:`cmd-label-${r}`,"model-value":t.label,placeholder:D(c)(`serviceConfigCommands.labelPlaceholder`),class:`config-card__input`,"onUpdate:modelValue":e=>y(r,`label`,e),onBlur:b,onKeydown:I(F(b,[`prevent`]),[`enter`])},null,8,[`id`,`model-value`,`placeholder`,`onUpdate:modelValue`,`onKeydown`])]),S(`div`,si,[S(`label`,{class:`config-commands__label`,for:`cmd-command-${r}`},i(D(c)(`serviceConfigCommands.commandPlaceholder`)),9,ci),n(D(R),{id:`cmd-command-${r}`,"model-value":t.command,placeholder:`e.g. npm start`,class:`config-card__input`,"onUpdate:modelValue":e=>y(r,`command`,e),onBlur:b,onKeydown:I(F(b,[`prevent`]),[`enter`])},null,8,[`id`,`model-value`,`onUpdate:modelValue`,`onKeydown`])]),S(`div`,li,[S(`label`,{class:`config-commands__label`,for:`cmd-cwd-${r}`},`Working Dir (optional)`,8,ui),n(D(R),{id:`cmd-cwd-${r}`,"model-value":t.cwd??``,placeholder:D(c)(`serviceConfigCommands.cwdPlaceholder`),class:`config-card__input`,"onUpdate:modelValue":e=>y(r,`cwd`,e),onBlur:b,onKeydown:I(F(b,[`prevent`]),[`enter`])},null,8,[`id`,`model-value`,`placeholder`,`onUpdate:modelValue`,`onKeydown`])]),S(`div`,di,[n(D(f),{icon:`pi pi-trash`,severity:`danger`,text:``,rounded:``,size:`small`,onClick:e=>C(r)},null,8,[`onClick`])])])]))),128)),S(`div`,fi,[n(D(f),{label:D(c)(`serviceConfigCommands.addCommand`),icon:`pi pi-plus`,severity:`secondary`,outlined:``,size:`small`,onClick:_},null,8,[`label`])])])]),_:1}),n(D(Be),{value:`1`},{default:P(()=>[S(`div`,pi,[n(Kr,{service:t.service,onSave:x},null,8,[`service`])])]),_:1})]),_:1})]),_:1})]))}}),[[`__scopeId`,`data-v-df297a71`]]),gi={class:`config-env`,"data-testid":`config-env`},_i={key:0,class:`active-env-display`},vi={class:`active-env-label`},yi={key:1,class:`inheritance-toggle`},bi={class:`inheritance-label`},xi={class:`inherited-header`},Si={class:`inherited-row-key`},Ci={class:`preview-key`},wi={class:`value-row`},Ti=[`onClick`],Ei=[`onClick`],Di={key:0,class:`secret-mask`},Oi={key:1,class:`preview-value`},ki={class:`config-env__header`},Ai={class:`config-env__title`},ji={class:`config-env__actions`},Mi={key:3,class:`variables-view`},Ni={key:0},Pi={key:1,class:`empty-state`},Fi={class:`inherited-header`},Ii={class:`passthrough-info`},Li={class:`preview-key`},Ri={key:0,class:`preview-value`},zi={key:1,class:`passthrough-undefined`},Bi={key:4,class:`empty-state`},Vi={key:5,class:`empty-state`},Hi={class:`editor-container`},Ui={key:0,class:`editor-env-banner`},Wi={class:`editor-env-text`},Gi={class:`editor-section`,"data-testid":`variables-editor`},Ki={key:0,class:`loading-container`},qi={key:1,class:`preview-container`},Ji={class:`preview-info`},Yi={class:`preview-key`},Xi={class:`value-row`},Zi=[`onClick`],Qi=[`onClick`],$i={key:0,class:`secret-mask`},ea={key:1,class:`preview-value`},ta=_(m({__name:`ServiceConfigEnv`,props:{service:{},projectId:{},activeEnvironmentId:{}},setup(t){let r=t,{t:s}=ce(),l=Te(),p=pe(),m=u(),h=ee(),g=d(),_=ve(),v=de(),y=le(),{urlHost:x}=Oe(()=>we.value?.config.id),T=H(()=>h.getByRef({id:r.projectId,orgId:g.activeOrgId})?.activeEnvironmentId??null),E=H(()=>m.findServiceEnvironment(r.service.id,T.value??``)),O=o(!1),A=o(!1),re=o(!1),ae=o(!1),j=o(null),M=o(null),me=o([]),I=o({}),R=o(new Set);function _e(e){let t=new Set(R.value);t.has(e)?t.delete(e):t.add(e),R.value=t}let be=o(null);function xe(e,t){navigator.clipboard.writeText(t),be.value=e,setTimeout(()=>{be.value===e&&(be.value=null)},1500)}let Se=o({}),Ce=o(!1),we=H(()=>{let e=r.service.agentId??Re.value?.agentId;return e?_.getById(e):_.agents.find(e=>e.isLocal)??null}),B=H(()=>{let e={};for(let t of z)e[t.name]=``;Object.assign(e,ge(r.service.ports)),e[`service.NAME`]=r.service.name,e[`service.ID`]=r.service.id,Object.assign(e,se(r.service,x.value)),r.service.url&&(e[`service.BASE_URL`]=r.service.url);let t=we.value?.status;t?.lanIp&&(e[`agent.HOST_LAN`]=t.lanIp),t?.os&&(e[`agent.OS`]=t.os),t?.home&&(e[`agent.HOME`]=t.home),we.value&&(e[`agent.NAME`]=we.value.config.name);let n=Ee(t?.cwd,t?.home);n&&(e[`service.CWD`]=n);let i=h.getByRef({id:r.projectId,orgId:g.activeOrgId});i&&(e[`project.NAME`]=i.name);let a=T.value?m.getById(T.value):null;a&&(e[`runeya.ENV_NAME`]=a.name);for(let t of De.value)Object.assign(e,ye({name:t.name,id:t.id,ports:t.ports,localUrls:t.localUrls,url:t.url},x.value));return e});function Ee(e,t){let n=(r.service.resolvedCwd??r.service.cwd??``).trim();return n?n.startsWith(`~/`)&&t?t+n.slice(1):n.includes(`$`)?null:n.startsWith(`/`)||/^[A-Za-z]:[\\/]/.test(n)?n:null:e??null}let De=H(()=>{let e=h.getByRef({id:r.projectId,orgId:g.activeOrgId});if(!e)return[];let t=e.serviceIds.filter(e=>e!==r.service.id).map(e=>y.getById(e)).filter(e=>!!e),n=new Map;for(let e of t){let t=he(e.name);t&&n.set(t,(n.get(t)??0)+1)}return t.filter(e=>(n.get(he(e.name))??0)===1)}),ke=H(()=>we.value?.config.passthroughEnv??[]),Ae=H(()=>ke.value.length>0);async function Ne(){if(!r.service.agentId||!Ae.value){Se.value={};return}Ce.value=!0;try{Se.value=await C.agent.getPassthroughEnv.query({id:r.service.agentId})}catch{Se.value={}}finally{Ce.value=!1}}let Pe=H(()=>ke.value.map(e=>({name:e,value:Se.value[e]??null}))),Ie=H(()=>!E.value||!T.value?!0:E.value.parentIds?.includes(T.value)??!0);async function Le(e){if(!(!E.value||!T.value)){ae.value=!0;try{await m.update({id:E.value.id,parentIds:e?[T.value]:[]}),await Ke()}catch(e){l.add({severity:`error`,summary:s(`serviceConfigEnv.error`),detail:e.message??s(`serviceConfigEnv.failedToUpdateInheritance`),life:5e3})}finally{ae.value=!1}}}let Re=H(()=>{let e=h.getByRef({id:r.projectId,orgId:g.activeOrgId});return e?.activeEnvironmentId?m.getById(e.activeEnvironmentId):null});function ze(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 Be=H(()=>j.value?ze(j.value.variables):[]),Ue=H(()=>{if(!E.value||!j.value?.sources)return Be.value;let e=E.value.id;return Be.value.filter(t=>j.value.sources[t.variableId]?.environmentId===e)}),We=H(()=>{if(!E.value||!j.value?.sources)return[];let e=E.value.id;return Be.value.filter(t=>j.value.sources[t.variableId]?.environmentId!==e)}),Ge=H(()=>{if(!j.value?.sources)return{};let e={};for(let[t,n]of Object.entries(j.value.sources))e[t]={environmentId:n.environmentId,overridden:n.overridden,...n.resolvedFrom?{resolvedFrom:n.resolvedFrom}:{},...n.overriddenBy?{overriddenBy:n.overriddenBy}:{}};return e});async function Ke(){if(E.value)try{j.value=await m.resolve(E.value.id)}catch(e){console.error(`Failed to resolve environment:`,e)}}async function qe(){if(T.value)try{M.value=await m.resolve(T.value)}catch{}}async function Je(e){let t=e.toLowerCase(),n=M.value??j.value;if(!n)return;let r=n.variables,i=Object.keys(n.env).filter(e=>e.toLowerCase().includes(t));me.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??``})}I.value=a}async function Ye(){re.value=!0;try{await Qe(),await Ke(),A.value=!0}catch(e){l.add({severity:`error`,summary:s(`serviceConfigEnv.error`),detail:e.message??s(`serviceConfigEnv.failedToLoadPreview`),life:5e3})}finally{re.value=!1}}let Xe=H(()=>j.value?Object.entries(j.value.env).map(([e,t])=>({key:e,value:Object.entries(B.value).reduce((e,[t,n])=>e.replaceAll(`{{${t}}}`,n),t)})):[]);function Ze(e,t){return t?`***`:e.length>50?e.substring(0,47)+`...`:e}async function Qe(){if(E.value)return E.value;if(!T.value)return null;let e=Re.value;return e?(await m.create({name:`${r.service.name??r.service.id} — ${e.name}`,projectId:r.projectId,scope:`service`,reference:r.service.id,activateOn:T.value,parentIds:[T.value],variables:{}}),E.value):null}let $e=H(()=>{let e=v.getByService(r.service.id);return e.length>0?e[0]:null}),et=H(()=>{let e=$e.value?.state;return e===`running`||e===`errored`});async function tt(){await Qe(),O.value=!0,await Promise.all([Ke(),qe()])}function nt(){if(O.value=!1,!et.value||!$e.value)return;let e=$e.value.state===`running`?`restart`:`start`,t=r.service.name||r.service.id;p.require({message:s(e===`restart`?`serviceConfigEnv.restartConfirmMsg`:`serviceConfigEnv.startConfirmMsg`,{name:t}),header:s(e===`restart`?`serviceConfigEnv.restartTitle`:`serviceConfigEnv.startTitle`),icon:`pi pi-refresh`,acceptLabel:s(e===`restart`?`serviceConfigEnv.restartTitle`:`actions.start`),rejectLabel:s(`serviceConfigEnv.notNow`),accept:async()=>{try{let t=r.service.agentId;if(!t)return;e===`restart`?(await v.restart(t,r.service.id),l.add({severity:`success`,summary:s(`serviceConfigEnv.serviceRestarted`),life:3e3})):(await v.start(t,r.service.id),l.add({severity:`success`,summary:s(`serviceConfigEnv.serviceStarted`),life:3e3}))}catch(t){l.add({severity:`error`,summary:s(`serviceConfigEnv.error`),detail:t.message??s(`serviceConfigEnv.failedToAction`,{action:e}),life:5e3})}}})}return N(Re,async e=>{e&&await Promise.all([Ke(),qe()])}),N(()=>r.service.agentId,()=>{Ne()}),ne(async()=>{r.projectId&&await m.fetchAll(r.projectId),await Promise.all([Ke(),qe(),Ne()])}),(r,o)=>(e(),w(`div`,gi,[T.value?(e(),w(`div`,_i,[S(`span`,vi,i(D(s)(`serviceConfigEnv.activeEnvironment`)),1),n(Ve,{"environment-id":T.value},null,8,[`environment-id`])])):V(``,!0),E.value&&Re.value?(e(),w(`div`,yi,[n(D(Fe),{"model-value":Ie.value,disabled:ae.value,"onUpdate:modelValue":Le},null,8,[`model-value`,`disabled`]),S(`span`,bi,i(Ie.value?D(s)(`serviceConfigEnv.inheritsFrom`,{name:Re.value.name}):D(s)(`serviceConfigEnv.isolated`,{name:Re.value.name})),1)])):V(``,!0),We.value.length>0?(e(),a(D(te),{key:2,class:`inherited-accordion`},{default:P(()=>[n(D(k),{value:`inherited`},{default:P(()=>[n(D(ie),null,{default:P(()=>[S(`span`,xi,[o[6]||=S(`i`,{class:`pi pi-arrow-down-left`},null,-1),L(` `+i(D(s)(`serviceConfigEnv.inheritedVars`))+` `,1),n(D(fe),{value:String(We.value.length),severity:`secondary`,rounded:``},null,8,[`value`])])]),_:1}),n(D(b),null,{default:P(()=>[n(D(je),{value:We.value,size:`small`,"show-headers":!1},{default:P(()=>[n(D(Me),{style:{width:`35%`}},{body:P(({data:t})=>[S(`div`,Si,[S(`code`,Ci,i(t.key),1),Ge.value[t.variableId]?(e(),a(Ve,{key:0,"environment-id":Ge.value[t.variableId].environmentId,class:`source-badge`},null,8,[`environment-id`])):V(``,!0)])]),_:1}),n(D(Me),{style:{width:`65%`}},{body:P(({data:t})=>[S(`span`,wi,[S(`span`,{class:`value-actions`,onClick:o[0]||=F(()=>{},[`stop`])},[t.slot.isSecret?(e(),w(`i`,{key:0,class:ue([R.value.has(t.variableId)?`pi pi-eye-slash`:`pi pi-eye`,`action-icon`]),onClick:e=>_e(t.variableId)},null,10,Ti)):V(``,!0),S(`i`,{class:ue([be.value===t.variableId?`pi pi-check`:`pi pi-copy`,`action-icon`]),onClick:e=>xe(t.variableId,t.slot.pre+t.slot.value+t.slot.post)},null,10,Ei)]),t.slot.isSecret&&!R.value.has(t.variableId)?(e(),w(`span`,Di,`***`)):(e(),w(`code`,Oi,i(t.slot.pre)+i(t.slot.value)+i(t.slot.post),1))])]),_:1})]),_:1},8,[`value`])]),_:1})]),_:1})]),_:1})):V(``,!0),S(`div`,ki,[S(`h3`,Ai,i(D(s)(`serviceConfigEnv.envVars`)),1),S(`div`,ji,[n(D(f),{label:D(s)(`serviceConfigEnv.editVariables`),icon:`pi pi-pencil`,size:`small`,outlined:``,"data-testid":`env-edit-btn`,disabled:!T.value,onClick:tt},null,8,[`label`,`disabled`]),n(D(f),{label:D(s)(`serviceConfigEnv.preview`),icon:`pi pi-eye`,size:`small`,outlined:``,severity:`secondary`,loading:re.value,disabled:!T.value,"data-testid":`env-preview-btn`,onClick:Ye},null,8,[`label`,`loading`,`disabled`])])]),E.value?(e(),w(`div`,Mi,[Ue.value.length>0?(e(),w(`div`,Ni,[n(He,{"environment-id":E.value.id,sources:Ge.value,"resolved-env":{...M.value?.env??{},...j.value?.env??{}},"service-builtins":B.value,editable:!1,"show-overrides":!0,"show-override-badge":!0,"show-delete":!1,"show-add-button":!1,onVariablesChanged:Ke},null,8,[`environment-id`,`sources`,`resolved-env`,`service-builtins`])])):(e(),w(`div`,Pi,[S(`p`,null,i(D(s)(`serviceConfigEnv.noVarsConfigured`)),1)])),Ae.value?(e(),a(D(te),{key:2,class:`inherited-accordion`},{default:P(()=>[n(D(k),{value:`passthrough`},{default:P(()=>[n(D(ie),null,{default:P(()=>[S(`span`,Fi,[o[7]||=S(`i`,{class:`pi pi-globe`},null,-1),L(` `+i(D(s)(`agentPage.passthrough.titleShort`))+` `,1),n(D(fe),{value:String(ke.value.length),severity:`secondary`,rounded:``},null,8,[`value`])])]),_:1}),n(D(b),null,{default:P(()=>[S(`p`,Ii,i(D(s)(`serviceConfigEnv.passthroughInfo`)),1),Ce.value?(e(),a(D(oe),{key:0,style:{width:`24px`,height:`24px`}})):(e(),a(D(je),{key:1,value:Pe.value,stripedRows:``,size:`small`},{default:P(()=>[n(D(Me),{field:`name`,header:D(s)(`common.key`),style:{width:`35%`}},{body:P(({data:e})=>[S(`code`,Li,i(e.name),1)]),_:1},8,[`header`]),n(D(Me),{header:D(s)(`common.value`),style:{width:`65%`}},{body:P(({data:t})=>[t.value===null?(e(),w(`span`,zi,i(D(s)(`serviceConfigEnv.undefined`)),1)):(e(),w(`span`,Ri,i(t.value),1))]),_:1},8,[`header`])]),_:1},8,[`value`]))]),_:1})]),_:1})]),_:1})):V(``,!0)])):T.value?(e(),w(`div`,Vi,[S(`p`,null,i(D(s)(`serviceConfigEnv.noVarsConfigured`)),1)])):(e(),w(`div`,Bi,[S(`p`,null,i(D(s)(`serviceConfigEnv.noActiveEnv`)),1)])),n(D(c),{visible:O.value,header:D(s)(`serviceConfigEnv.editVarsHeader`),style:{width:`900px`},modal:``,"onUpdate:visible":o[2]||=e=>{e||nt()}},{footer:P(()=>[n(D(f),{label:D(s)(`actions.close`),icon:`pi pi-times`,onClick:o[1]||=e=>nt()},null,8,[`label`])]),default:P(()=>[S(`div`,Hi,[T.value?(e(),w(`div`,Ui,[S(`span`,Wi,i(D(s)(`serviceConfigEnv.editingVarsFor`,{name:t.service.name||t.service.id})),1),n(Ve,{"environment-id":T.value},null,8,[`environment-id`])])):V(``,!0),S(`div`,Gi,[E.value?(e(),a(He,{key:0,"environment-id":E.value.id,editable:!0,sources:Ge.value,"autocomplete-enabled":!0,"autocomplete-suggestions":me.value,"autocomplete-meta":I.value,"resolved-env":{...M.value?.env??{},...j.value?.env??{}},"service-builtins":B.value,"show-overrides":!0,onVariablesChanged:Ke,"show-delete":!0,"show-add-button":!0,onAutocompleteSearch:Je},null,8,[`environment-id`,`sources`,`autocomplete-suggestions`,`autocomplete-meta`,`resolved-env`,`service-builtins`])):V(``,!0)])])]),_:1},8,[`visible`,`header`]),n(D(c),{visible:A.value,"onUpdate:visible":o[5]||=e=>A.value=e,header:D(s)(`serviceConfigEnv.previewHeader`),style:{width:`700px`},modal:``,"data-testid":`env-preview-dialog`},{footer:P(()=>[n(D(f),{label:D(s)(`actions.close`),icon:`pi pi-times`,onClick:o[4]||=e=>A.value=!1},null,8,[`label`])]),default:P(()=>[re.value?(e(),w(`div`,Ki,[n(D(oe))])):j.value?(e(),w(`div`,qi,[S(`p`,Ji,i(D(s)(`serviceConfigEnv.injectedVarsInfo`)),1),n(D(je),{value:Xe.value,stripedRows:``,size:`small`,rows:15,paginator:Xe.value.length>15},{default:P(()=>[n(D(Me),{field:`key`,header:D(s)(`common.key`),style:{width:`35%`}},{body:P(({data:e})=>[S(`code`,Yi,i(e.key),1)]),_:1},8,[`header`]),n(D(Me),{header:D(s)(`common.value`),style:{width:`65%`}},{body:P(({data:t})=>[S(`span`,Xi,[S(`span`,{class:`value-actions`,onClick:o[3]||=F(()=>{},[`stop`])},[j.value.envSecrets.includes(t.key)?(e(),w(`i`,{key:0,class:ue([R.value.has(`preview:`+t.key)?`pi pi-eye-slash`:`pi pi-eye`,`action-icon`]),onClick:e=>_e(`preview:`+t.key)},null,10,Zi)):V(``,!0),S(`i`,{class:ue([be.value===`preview:`+t.key?`pi pi-check`:`pi pi-copy`,`action-icon`]),onClick:e=>xe(`preview:`+t.key,t.value)},null,10,Qi)]),j.value.envSecrets.includes(t.key)&&!R.value.has(`preview:`+t.key)?(e(),w(`span`,$i,`***`)):(e(),w(`span`,ea,i(Ze(t.value,!1)),1))])]),_:1},8,[`header`])]),_:1},8,[`value`,`paginator`])])):V(``,!0)]),_:1},8,[`visible`,`header`])]))}}),[[`__scopeId`,`data-v-8ebbf924`]]),na={class:`config-health`},ra={class:`config-card config-card--inline`},ia={class:`config-card__header`},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={key:1,class:`config-card`},ma={class:`config-card__header`},ha={class:`config-card__hint`},ga={class:`config-card`},_a={class:`config-card__header`},va={class:`config-card`},ya={class:`config-card__header`},ba={class:`config-card`},xa={class:`config-card__header`},Sa={class:`config-card`},Ca={class:`config-card__header`},wa=_(m({__name:`ServiceConfigHealthCheck`,props:{service:{}},emits:[`save`],setup(t,{emit:r}){let a=t,s=r,{t:c}=ce(),l=o(!!a.service.healthCheck),u=o({type:a.service.healthCheck?.type??`http`,path:a.service.healthCheck?.path??`/health`,interval:a.service.healthCheck?.interval??3e4,timeout:a.service.healthCheck?.timeout??5e3,retries:a.service.healthCheck?.retries??3,method:a.service.healthCheck?.method??`GET`,expectedStatus:a.service.healthCheck?.expectedStatus??200,initialDelay:a.service.healthCheck?.initialDelay??5e3,command:a.service.healthCheck?.command??``}),d=[{label:`HTTP Request`,value:`http`},{label:`Command`,value:`command`}],f=[{label:`GET`,value:`GET`},{label:`HEAD`,value:`HEAD`},{label:`POST`,value:`POST`},{label:`PUT`,value:`PUT`}];N(()=>a.service,e=>{l.value=!!e.healthCheck,u.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 p=null;function m(){p&&clearTimeout(p),p=setTimeout(()=>{if(!l.value)s(`save`,void 0);else{if(u.value.type===`http`&&!u.value.path?.trim()||u.value.type===`command`&&!u.value.command?.trim())return;s(`save`,{type:u.value.type,path:u.value.path,method:u.value.method,expectedStatus:u.value.expectedStatus,command:u.value.command||void 0,interval:u.value.interval,timeout:u.value.timeout,retries:u.value.retries,initialDelay:u.value.initialDelay})}p=null},150)}return(t,r)=>(e(),w(`div`,na,[S(`div`,ra,[S(`div`,ia,[r[10]||=S(`i`,{class:`pi pi-heart`},null,-1),S(`span`,null,i(D(c)(`serviceConfigHealthCheck.enable`)),1)]),n(D(Fe),{modelValue:l.value,"onUpdate:modelValue":r[0]||=e=>l.value=e,onChange:m},null,8,[`modelValue`])]),l.value?(e(),w(B,{key:0},[S(`div`,aa,[S(`div`,oa,[r[11]||=S(`i`,{class:`pi pi-cog`},null,-1),S(`span`,null,i(D(c)(`serviceConfigHealthCheck.type`)),1)]),n(D(we),{modelValue:u.value.type,"onUpdate:modelValue":r[1]||=e=>u.value.type=e,options:d,"option-label":`label`,"option-value":`value`,class:`config-card__input`,onChange:m},null,8,[`modelValue`]),r[12]||=S(`small`,{class:`config-card__hint`},`HTTP checks a URL endpoint; Command runs a shell command (exit 0 = healthy)`,-1)]),u.value.type===`http`?(e(),w(B,{key:0},[S(`div`,sa,[S(`div`,ca,[r[13]||=S(`i`,{class:`pi pi-link`},null,-1),S(`span`,null,i(D(c)(`serviceConfigHealthCheck.path`)),1)]),n(D(R),{modelValue:u.value.path,"onUpdate:modelValue":r[2]||=e=>u.value.path=e,class:`config-card__input`,placeholder:`/health`,onBlur:m,onKeydown:I(F(m,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])]),S(`div`,la,[S(`div`,ua,[r[14]||=S(`i`,{class:`pi pi-directions`},null,-1),S(`span`,null,i(D(c)(`serviceConfigHealthCheck.method`)),1)]),n(D(we),{modelValue:u.value.method,"onUpdate:modelValue":r[3]||=e=>u.value.method=e,options:f,"option-label":`label`,"option-value":`value`,class:`config-card__input`,onChange:m},null,8,[`modelValue`])]),S(`div`,da,[S(`div`,fa,[r[15]||=S(`i`,{class:`pi pi-check-circle`},null,-1),S(`span`,null,i(D(c)(`serviceConfigHealthCheck.expectedStatus`)),1)]),n(D(Ne),{modelValue:u.value.expectedStatus,"onUpdate:modelValue":r[4]||=e=>u.value.expectedStatus=e,class:`config-card__input`,"use-grouping":!1,min:100,max:599,onBlur:m,onKeydown:I(F(m,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`]),r[16]||=S(`small`,{class:`config-card__hint`},`HTTP status code to expect (default 200)`,-1)])],64)):V(``,!0),u.value.type===`command`?(e(),w(`div`,pa,[S(`div`,ma,[r[17]||=S(`i`,{class:`pi pi-code`},null,-1),S(`span`,null,i(D(c)(`serviceConfigHealthCheck.command`)),1)]),n(D(xe),{modelValue:u.value.command,"onUpdate:modelValue":r[5]||=e=>u.value.command=e,class:`config-card__input`,rows:`2`,placeholder:`curl -sf http://localhost:3000/health`,"auto-resize":``,onBlur:m},null,8,[`modelValue`]),S(`small`,ha,i(D(c)(`serviceConfigHealthCheck.commandHint`)),1)])):V(``,!0),S(`div`,ga,[S(`div`,_a,[r[18]||=S(`i`,{class:`pi pi-hourglass`},null,-1),S(`span`,null,i(D(c)(`serviceConfigHealthCheck.initialDelay`)),1)]),n(D(Ne),{modelValue:u.value.initialDelay,"onUpdate:modelValue":r[6]||=e=>u.value.initialDelay=e,class:`config-card__input`,"use-grouping":!1,min:0,onBlur:m,onKeydown:I(F(m,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`]),r[19]||=S(`small`,{class:`config-card__hint`},`Wait before first health check (ms)`,-1)]),S(`div`,va,[S(`div`,ya,[r[20]||=S(`i`,{class:`pi pi-clock`},null,-1),S(`span`,null,i(D(c)(`serviceConfigHealthCheck.interval`)),1)]),n(D(Ne),{modelValue:u.value.interval,"onUpdate:modelValue":r[7]||=e=>u.value.interval=e,class:`config-card__input`,"use-grouping":!1,min:1e3,onBlur:m,onKeydown:I(F(m,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])]),S(`div`,ba,[S(`div`,xa,[r[21]||=S(`i`,{class:`pi pi-stopwatch`},null,-1),S(`span`,null,i(D(c)(`serviceConfigHealthCheck.timeout`)),1)]),n(D(Ne),{modelValue:u.value.timeout,"onUpdate:modelValue":r[8]||=e=>u.value.timeout=e,class:`config-card__input`,"use-grouping":!1,min:500,onBlur:m,onKeydown:I(F(m,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])]),S(`div`,Sa,[S(`div`,Ca,[r[22]||=S(`i`,{class:`pi pi-replay`},null,-1),S(`span`,null,i(D(c)(`serviceConfigHealthCheck.retries`)),1)]),n(D(Ne),{modelValue:u.value.retries,"onUpdate:modelValue":r[9]||=e=>u.value.retries=e,class:`config-card__input`,"use-grouping":!1,min:0,max:10,onBlur:m,onKeydown:I(F(m,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])])],64)):V(``,!0)]))}}),[[`__scopeId`,`data-v-63e32039`]]),Ta={class:`config-shortcuts`},Ea={key:0,class:`config-shortcuts__empty`},Da={class:`config-shortcuts__row`},Oa={class:`config-shortcuts__field`},ka=[`for`],Aa={class:`config-shortcuts__field config-shortcuts__field--wide`},ja=[`for`],Ma={class:`config-shortcuts__field`},Na=[`for`],Pa={class:`config-shortcuts__actions-cell`},Fa={class:`config-shortcuts__footer`},Ia=_(m({__name:`ServiceConfigShortcuts`,props:{service:{}},emits:[`save`],setup(t,{emit:r}){let a=t,{t:s}=ce(),c=r,l=o([...a.service.shortcuts??[]]),u=null;N(()=>a.service,e=>{u||(l.value=[...e.shortcuts??[]])});function d(){l.value=[...l.value,{id:Ae(),label:``,command:``,cwd:void 0}]}function p(e){l.value=l.value.filter((t,n)=>n!==e)}function m(e,t,n){l.value=l.value.map((r,i)=>i===e?{...r,[t]:n||void 0}:r)}function h(){u&&clearTimeout(u),u=setTimeout(()=>{c(`save`,l.value),u=null},150)}function g(e){p(e),h()}return(t,r)=>(e(),w(`div`,Ta,[l.value.length===0?(e(),w(`div`,Ea,[S(`p`,null,i(D(s)(`serviceConfigShortcuts.empty`)),1)])):V(``,!0),(e(!0),w(B,null,Ce(l.value,(t,r)=>(e(),w(`div`,{key:t.id,class:`config-card`},[S(`div`,Da,[S(`div`,Oa,[S(`label`,{class:`config-shortcuts__label`,for:`shortcut-label-${r}`},i(D(s)(`serviceConfigShortcuts.label`)),9,ka),n(D(R),{id:`shortcut-label-${r}`,"model-value":t.label,placeholder:D(s)(`serviceConfigShortcuts.labelPlaceholder`),class:`config-card__input`,"data-testid":`shortcut-label-input`,"onUpdate:modelValue":e=>m(r,`label`,e),onBlur:h,onKeydown:I(F(h,[`prevent`]),[`enter`])},null,8,[`id`,`model-value`,`placeholder`,`onUpdate:modelValue`,`onKeydown`])]),S(`div`,Aa,[S(`label`,{class:`config-shortcuts__label`,for:`shortcut-command-${r}`},i(D(s)(`serviceConfigShortcuts.command`)),9,ja),n(D(R),{id:`shortcut-command-${r}`,"model-value":t.command,placeholder:D(s)(`serviceConfigShortcuts.commandPlaceholder`),class:`config-card__input`,"data-testid":`shortcut-command-input`,"onUpdate:modelValue":e=>m(r,`command`,e),onBlur:h,onKeydown:I(F(h,[`prevent`]),[`enter`])},null,8,[`id`,`model-value`,`placeholder`,`onUpdate:modelValue`,`onKeydown`])]),S(`div`,Ma,[S(`label`,{class:`config-shortcuts__label`,for:`shortcut-cwd-${r}`},i(D(s)(`serviceConfigShortcuts.workingDir`)),9,Na),n(D(R),{id:`shortcut-cwd-${r}`,"model-value":t.cwd??``,placeholder:D(s)(`serviceConfigShortcuts.cwdPlaceholder`),class:`config-card__input`,"onUpdate:modelValue":e=>m(r,`cwd`,e),onBlur:h,onKeydown:I(F(h,[`prevent`]),[`enter`])},null,8,[`id`,`model-value`,`placeholder`,`onUpdate:modelValue`,`onKeydown`])]),S(`div`,Pa,[n(D(f),{icon:`pi pi-trash`,severity:`danger`,text:``,rounded:``,size:`small`,onClick:e=>g(r)},null,8,[`onClick`])])])]))),128)),S(`div`,Fa,[n(D(f),{label:D(s)(`serviceConfigShortcuts.addShortcut`),icon:`pi pi-plus`,severity:`secondary`,outlined:``,size:`small`,"data-testid":`add-shortcut-btn`,onClick:d},null,8,[`label`])])]))}}),[[`__scopeId`,`data-v-d6ecb989`]]),La=Object.defineProperty,Ra=Object.getOwnPropertySymbols,za=Object.prototype.hasOwnProperty,Ba=Object.prototype.propertyIsEnumerable,Va=(e,t,n)=>t in e?La(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Ha=(e,t)=>{for(var n in t||={})za.call(t,n)&&Va(e,n,t[n]);if(Ra)for(var n of Ra(t))Ba.call(t,n)&&Va(e,n,t[n]);return e},Ua=(e,t)=>{var n={};for(var r in e)za.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&Ra)for(var r of Ra(e))t.indexOf(r)<0&&Ba.call(e,r)&&(n[r]=e[r]);return n},Wa=`[vue-draggable-plus]: `;function Ga(e){console.warn(Wa+e)}function Ka(e){console.error(Wa+e)}function qa(e,t,n){return n>=0&&n<e.length&&e.splice(n,0,e.splice(t,1)[0]),e}function Ja(e){return e.replace(/-(\w)/g,(e,t)=>t?t.toUpperCase():``)}function Ya(e){return Object.keys(e).reduce((t,n)=>(e[n]!==void 0&&(t[Ja(n)]=e[n]),t),{})}function Xa(e,t){return Array.isArray(e)&&e.splice(t,1),e}function Za(e,t,n){return Array.isArray(e)&&e.splice(t,0,n),e}function Qa(e){return e===void 0}function $a(e){return typeof e==`string`}function eo(e,t,n){let r=e.children[n];e.insertBefore(t,r)}function to(e){e.parentNode&&e.parentNode.removeChild(e)}function no(e,t=document){let n=null;return n=typeof t?.querySelector==`function`?(t?.querySelector)?.call(t,e):document.querySelector(e),n||Ga(`Element not found: ${e}`),n}function ro(e,t,n=null){return function(...r){return e.apply(n,r),t.apply(n,r)}}function io(e,t){let n=Ha({},e);return Object.keys(t).forEach(r=>{n[r]?n[r]=ro(e[r],t[r]):n[r]=t[r]}),n}function ao(e){return e instanceof HTMLElement}function oo(e,t){Object.keys(e).forEach(n=>{t(n,e[n])})}function so(e){return e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97)}var co=Object.assign;function lo(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 uo(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t];t%2?lo(Object(n),!0).forEach(function(t){po(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):lo(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function fo(e){"@babel/helpers - typeof";return fo=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},fo(e)}function po(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function mo(){return mo=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},mo.apply(this,arguments)}function ho(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 go(e,t){if(e==null)return{};var n=ho(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 _o=`1.15.2`;function vo(e){if(typeof window<`u`&&window.navigator)return!!navigator.userAgent.match(e)}var yo=vo(/(?:Trident.*rv[ :]?11\.|msie|iemobile|Windows Phone)/i),bo=vo(/Edge/i),xo=vo(/firefox/i),So=vo(/safari/i)&&!vo(/chrome/i)&&!vo(/android/i),Co=vo(/iP(ad|od|hone)/i),wo=vo(/chrome/i)&&vo(/android/i),To={capture:!1,passive:!1};function U(e,t,n){e.addEventListener(t,n,!yo&&To)}function W(e,t,n){e.removeEventListener(t,n,!yo&&To)}function Eo(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 Do(e){return e.host&&e!==document&&e.host.nodeType?e.host:e.parentNode}function Oo(e,t,n,r){if(e){n||=document;do{if(t!=null&&(t[0]===`>`?e.parentNode===n&&Eo(e,t):Eo(e,t))||r&&e===n)return e;if(e===n)break}while(e=Do(e))}return null}var ko=/\s+/g;function Ao(e,t,n){e&&t&&(e.classList?e.classList[n?`add`:`remove`](t):e.className=((` `+e.className+` `).replace(ko,` `).replace(` `+t+` `,` `)+(n?` `+t:``)).replace(ko,` `))}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 jo(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 Mo(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 No(){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!==No()?(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,!yo))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=jo(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 Po(e,t,n){for(var r=Bo(e,!0),i=K(e)[t];r;){var a=K(r)[n],o=void 0;if(o=i>=a,!o)return r;if(r===No())break;r=Bo(r,!1)}return!1}function Fo(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)&&Oo(o[a],n.draggable,e,!1)){if(i===t)return o[a];i++}a++}return null}function Io(e,t){for(var n=e.lastElementChild;n&&(n===Q.ghost||G(n,`display`)===`none`||t&&!Eo(n,t));)n=n.previousElementSibling;return n||null}function Lo(e,t){var n=0;if(!e||!e.parentNode)return-1;for(;e=e.previousElementSibling;)e.nodeName.toUpperCase()!==`TEMPLATE`&&e!==Q.clone&&(!t||Eo(e,t))&&n++;return n}function Ro(e){var t=0,n=0,r=No();if(e)do{var i=jo(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 zo(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 Bo(e,t){if(!e||!e.getBoundingClientRect)return No();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 No();if(r||t)return n;r=!0}}while(n=n.parentNode);return No()}function Vo(e,t){if(e&&t)for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);return e}function Ho(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 Uo;function Wo(e,t){return function(){if(!Uo){var n=arguments,r=this;n.length===1?e.call(r,n[0]):e.apply(r,n),Uo=setTimeout(function(){Uo=void 0},t)}}}function Go(){clearTimeout(Uo),Uo=void 0}function Ko(e,t,n){e.scrollLeft+=t,e.scrollTop+=n}function qo(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 Jo(e,t,n){var r={};return Array.from(e.children).forEach(function(i){if(!(!Oo(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 Yo=`Sortable`+new Date().getTime();function Xo(){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=uo({},e[e.length-1].rect);if(t.thisAnimationDuration){var r=jo(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(zo(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=jo(n,!0);d&&(s.top-=d.f,s.left-=d.e),n.toRect=s,n.thisAnimationDuration&&Ho(c,s)&&!Ho(o,s)&&(u.top-s.top)/(u.left-s.left)===(o.top-s.top)/(o.left-s.left)&&(t=Qo(u,c,l,r.options)),Ho(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=jo(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=Zo(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 Zo(e){return e.offsetWidth}function Qo(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 $o=[],es={initializeByDefault:!0},ts={mount:function(e){for(var t in es)es.hasOwnProperty(t)&&!(t in e)&&(e[t]=es[t]);$o.forEach(function(t){if(t.pluginName===e.pluginName)throw`Sortable: Cannot mount plugin ${e.pluginName} more than once`}),$o.push(e)},pluginEvent:function(e,t,n){var r=this;this.eventCanceled=!1,n.cancel=function(){r.eventCanceled=!0};var i=e+`Global`;$o.forEach(function(r){t[r.pluginName]&&(t[r.pluginName][i]&&t[r.pluginName][i](uo({sortable:t},n)),t.options[r.pluginName]&&t[r.pluginName][e]&&t[r.pluginName][e](uo({sortable:t},n)))})},initializePlugins:function(e,t,n,r){for(var i in $o.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,mo(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 $o.forEach(function(r){typeof r.eventProperties==`function`&&mo(n,r.eventProperties.call(t[r.pluginName],e))}),n},modifyOption:function(e,t,n){var r;return $o.forEach(function(i){e[i.pluginName]&&i.optionListeners&&typeof i.optionListeners[t]==`function`&&(r=i.optionListeners[t].call(e[i.pluginName],n))}),r}};function ns(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[Yo],t){var h,g=t.options,_=`on`+r.charAt(0).toUpperCase()+r.substr(1);window.CustomEvent&&!yo&&!bo?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=uo(uo({},m),ts.getEventProperties(r,t));for(var y in v)h[y]=v[y];n&&n.dispatchEvent(h),g[_]&&g[_].call(t,h)}}var rs=[`evt`],is=function(e,t){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},r=n.evt,i=go(n,rs);ts.pluginEvent.bind(Q)(e,t,uo({dragEl:q,parentEl:J,ghostEl:Y,rootEl:X,nextEl:os,lastDownEl:ss,cloneEl:Z,cloneHidden:cs,dragStarted:ws,putSortable:ms,activeSortable:Q.active,originalEvent:r,oldIndex:ls,oldDraggableIndex:ds,newIndex:us,newDraggableIndex:fs,hideGhostForTarget:Us,unhideGhostForTarget:Ws,cloneNowHidden:function(){cs=!0},cloneNowShown:function(){cs=!1},dispatchSortableEvent:function(e){as({sortable:t,name:e,originalEvent:r})}},i))};function as(e){ns(uo({putSortable:ms,cloneEl:Z,targetEl:q,rootEl:X,oldIndex:ls,oldDraggableIndex:ds,newIndex:us,newDraggableIndex:fs},e))}var q,J,Y,X,os,ss,Z,cs,ls,us,ds,fs,ps,ms,hs=!1,gs=!1,_s=[],vs,ys,bs,xs,Ss,Cs,ws,Ts,Es,Ds=!1,Os=!1,ks,As,js=[],Ms=!1,Ns=[],Ps=typeof document<`u`,Fs=Co,Is=bo||yo?`cssFloat`:`float`,Ls=Ps&&!wo&&!Co&&`draggable`in document.createElement(`div`),Rs=function(){if(Ps){if(yo)return!1;var e=document.createElement(`x`);return e.style.cssText=`pointer-events:auto`,e.style.pointerEvents===`auto`}}(),zs=function(e,t){var n=G(e),r=parseInt(n.width)-parseInt(n.paddingLeft)-parseInt(n.paddingRight)-parseInt(n.borderLeftWidth)-parseInt(n.borderRightWidth),i=Fo(e,0,t),a=Fo(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[Is]===`none`||a&&n[Is]===`none`&&c+l>r)?`vertical`:`horizontal`},Bs=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},Vs=function(e,t){var n;return _s.some(function(r){var i=r[Yo].options.emptyInsertThreshold;if(!(!i||Io(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},Hs=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||fo(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},Us=function(){!Rs&&Y&&G(Y,`display`,`none`)},Ws=function(){!Rs&&Y&&G(Y,`display`,``)};Ps&&!wo&&document.addEventListener(`click`,function(e){if(gs)return e.preventDefault(),e.stopPropagation&&e.stopPropagation(),e.stopImmediatePropagation&&e.stopImmediatePropagation(),gs=!1,!1},!0);var Gs=function(e){if(q){e=e.touches?e.touches[0]:e;var t=Vs(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[Yo]._onDragOver(n)}}},Ks=function(e){q&&q.parentNode[Yo]._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=mo({},t),e[Yo]=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 zs(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&&!So,emptyInsertThreshold:5};for(var r in ts.initializePlugins(this,e,n),n)!(r in t)&&(t[r]=n[r]);for(var i in Hs(t),this)i.charAt(0)===`_`&&typeof this[i]==`function`&&(this[i]=this[i].bind(this));this.nativeDraggable=t.forceFallback?!1:Ls,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)),_s.push(this.el),t.store&&t.store.get&&this.sort(t.store.get(this)||[]),mo(this,Xo())}Q.prototype={constructor:Q,_isOutsideThisEl:function(e){!this.el.contains(e)&&e!==this.el&&(Ts=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(nc(n),!q&&!(/mousedown|pointerdown/.test(a)&&e.button!==0||r.disabled)&&!c.isContentEditable&&!(!this.nativeDraggable&&So&&s&&s.tagName.toUpperCase()===`SELECT`)&&(s=Oo(s,r.draggable,n,!1),!(s&&s.animated)&&ss!==s)){if(ls=Lo(s),ds=Lo(s,r.draggable),typeof l==`function`){if(l.call(this,e,s,this)){as({sortable:t,rootEl:c,name:`filter`,targetEl:s,toEl:n,fromEl:n}),is(`filter`,t,{evt:e}),i&&e.cancelable&&e.preventDefault();return}}else if(l&&(l=l.split(`,`).some(function(r){if(r=Oo(c,r.trim(),n,!1),r)return as({sortable:t,rootEl:r,name:`filter`,targetEl:s,fromEl:n,toEl:n}),is(`filter`,t,{evt:e}),!0}),l)){i&&e.cancelable&&e.preventDefault();return}r.handle&&!Oo(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,os=q.nextSibling,ss=n,ps=a.group,Q.dragged=q,vs={target:q,clientX:(t||e).clientX,clientY:(t||e).clientY},Ss=vs.clientX-c.left,Cs=vs.clientY-c.top,this._lastX=(t||e).clientX,this._lastY=(t||e).clientY,q.style[`will-change`]=`all`,s=function(){if(is(`delayEnded`,r,{evt:e}),Q.eventCanceled){r._onDrop();return}r._disableDelayedDragEvents(),!xo&&r.nativeDraggable&&(q.draggable=!0),r._triggerDragStart(e,t),as({sortable:r,name:`choose`,originalEvent:e}),Ao(q,a.chosenClass,!0)},a.ignore.split(`,`).forEach(function(e){Mo(q,e.trim(),Ys)}),U(o,`dragover`,Gs),U(o,`mousemove`,Gs),U(o,`touchmove`,Gs),U(o,`mouseup`,r._onDrop),U(o,`touchend`,r._onDrop),U(o,`touchcancel`,r._onDrop),xo&&this.nativeDraggable&&(this.options.touchStartThreshold=4,q.draggable=!0),is(`delayStart`,this,{evt:e}),a.delay&&(!a.delayOnTouchOnly||t)&&(!this.nativeDraggable||!(bo||yo))){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&&Ys(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?rc(function(){document.selection.empty()}):window.getSelection().removeAllRanges()}catch{}},_dragStarted:function(e,t){if(hs=!1,X&&q){is(`dragStarted`,this,{evt:t}),this.nativeDraggable&&U(document,`dragover`,Ks);var n=this.options;!e&&Ao(q,n.dragClass,!1),Ao(q,n.ghostClass,!0),Q.active=this,e&&this._appendGhost(),as({sortable:this,name:`start`,originalEvent:t})}else this._nulling()},_emulateDragOver:function(){if(ys){this._lastX=ys.clientX,this._lastY=ys.clientY,Us();for(var e=document.elementFromPoint(ys.clientX,ys.clientY),t=e;e&&e.shadowRoot&&(e=e.shadowRoot.elementFromPoint(ys.clientX,ys.clientY),e!==t);)t=e;if(q.parentNode[Yo]._isOutsideThisEl(e),t)do{if(t[Yo]){var n=void 0;if(n=t[Yo]._onDragOver({clientX:ys.clientX,clientY:ys.clientY,target:e,rootEl:t}),n&&!this.options.dragoverBubble)break}e=t}while(t=t.parentNode);Ws()}},_onTouchMove:function(e){if(vs){var t=this.options,n=t.fallbackTolerance,r=t.fallbackOffset,i=e.touches?e.touches[0]:e,a=Y&&jo(Y,!0),o=Y&&a&&a.a,s=Y&&a&&a.d,c=Fs&&As&&Ro(As),l=(i.clientX-vs.clientX+r.x)/(o||1)+(c?c[0]-js[0]:0)/(o||1),u=(i.clientY-vs.clientY+r.y)/(s||1)+(c?c[1]-js[1]:0)/(s||1);if(!Q.active&&!hs){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-(bs||0),a.f+=u-(xs||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),bs=l,xs=u,ys=i}e.cancelable&&e.preventDefault()}},_appendGhost:function(){if(!Y){var e=this.options.fallbackOnBody?document.body:X,t=K(q,!0,Fs,!0,e),n=this.options;if(Fs){for(As=e;G(As,`position`)===`static`&&G(As,`transform`)===`none`&&As!==document;)As=As.parentNode;As!==document.body&&As!==document.documentElement?(As===document&&(As=No()),t.top+=As.scrollTop,t.left+=As.scrollLeft):As=No(),js=Ro(As)}Y=q.cloneNode(!0),Ao(Y,n.ghostClass,!1),Ao(Y,n.fallbackClass,!0),Ao(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`,Fs?`absolute`:`fixed`),G(Y,`zIndex`,`100000`),G(Y,`pointerEvents`,`none`),Q.ghost=Y,e.appendChild(Y),G(Y,`transform-origin`,Ss/parseInt(Y.style.width)*100+`% `+Cs/parseInt(Y.style.height)*100+`%`)}},_onDragStart:function(e,t){var n=this,r=e.dataTransfer,i=n.options;if(is(`dragStart`,this,{evt:e}),Q.eventCanceled){this._onDrop();return}is(`setupClone`,this),Q.eventCanceled||(Z=qo(q),Z.removeAttribute(`id`),Z.draggable=!1,Z.style[`will-change`]=``,this._hideClone(),Ao(Z,this.options.chosenClass,!1),Q.clone=Z),n.cloneId=rc(function(){is(`clone`,n),!Q.eventCanceled&&(n.options.removeCloneOnHide||X.insertBefore(Z,q),n._hideClone(),as({sortable:n,name:`clone`}))}),!t&&Ao(q,i.dragClass,!0),t?(gs=!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)`)),hs=!0,n._dragStartId=rc(n._dragStarted.bind(n,t,e)),U(document,`selectstart`,n),ws=!0,So&&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=ps===s,u=o.sort,d=ms||c,f,p=this,m=!1;if(Ms)return;function h(o,s){is(o,p,uo({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 Js(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&&(Ao(q,ms?ms.options.ghostClass:c.options.ghostClass,!1),Ao(q,o.ghostClass,!0)),ms!==p&&p!==Q.active?ms=p:p===Q.active&&ms&&(ms=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)&&(Ts=null),!o.dragoverBubble&&!e.rootEl&&n!==document&&(q.parentNode[Yo]._isOutsideThisEl(e.target),!r&&Gs(e)),!o.dragoverBubble&&e.stopPropagation&&e.stopPropagation(),m=!0}function v(){us=Lo(q),fs=Lo(q,o.draggable),as({sortable:p,name:`change`,toEl:t,newIndex:us,newDraggableIndex:fs,originalEvent:e})}if(e.preventDefault!==void 0&&e.cancelable&&e.preventDefault(),n=Oo(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(gs=!1,c&&!o.disabled&&(l?u||(a=J!==X):ms===this||(this.lastPutMode=ps.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||(os?X.insertBefore(q,os):X.appendChild(q)),_(!0);var y=Io(t,o.draggable);if(!y||Qs(e,f,this)&&!y.animated){if(y===q)return _(!1);if(y&&t===e.target&&(n=y),n&&(i=K(n)),Js(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&&Zs(e,f,this)){var b=Fo(t,0,o,!0);if(b===q)return _(!1);if(n=b,i=K(n),Js(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=!Bs(q.animated&&q.toRect||r,n.animated&&n.toRect||i,f),T=f?`top`:`left`,E=Po(n,`top`,`top`)||Po(q,`top`,`top`),ee=E?E.scrollTop:void 0;Ts!==n&&(S=i[T],Ds=!1,Os=!w&&o.invertSwap||C),x=$s(e,n,i,f,w?1:o.swapThreshold,o.invertedSwapThreshold==null?o.swapThreshold:o.invertedSwapThreshold,Os,Ts===n);var D;if(x!==0){var O=Lo(q);do O-=x,D=J.children[O];while(D&&(G(D,`display`)===`none`||D===Y))}if(x===0||D===n)return _(!1);Ts=n,Es=x;var k=n.nextElementSibling,A=!1;A=x===1;var te=Js(X,t,q,r,n,i,e,A);if(te!==!1)return(te===1||te===-1)&&(A=te===1),Ms=!0,setTimeout(Xs,30),g(),A&&!k?t.appendChild(q):n.parentNode.insertBefore(q,A?k:n),E&&Ko(E,0,ee-E.scrollTop),J=q.parentNode,S!==void 0&&!Os&&(ks=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`,Gs),W(document,`mousemove`,Gs),W(document,`touchmove`,Gs)},_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(us=Lo(q),fs=Lo(q,n.draggable),is(`drop`,this,{evt:e}),J=q&&q.parentNode,us=Lo(q),fs=Lo(q,n.draggable),Q.eventCanceled){this._nulling();return}hs=!1,Os=!1,Ds=!1,clearInterval(this._loopId),clearTimeout(this._dragStartTimer),ic(this.cloneId),ic(this._dragStartId),this.nativeDraggable&&(W(document,`drop`,this),W(t,`dragstart`,this._onDragStart)),this._offMoveEvents(),this._offUpEvents(),So&&G(document.body,`user-select`,``),G(q,`transform`,``),e&&(ws&&(e.cancelable&&e.preventDefault(),!n.dropBubble&&e.stopPropagation()),Y&&Y.parentNode&&Y.parentNode.removeChild(Y),(X===J||ms&&ms.lastPutMode!==`clone`)&&Z&&Z.parentNode&&Z.parentNode.removeChild(Z),q&&(this.nativeDraggable&&W(q,`dragend`,this),Ys(q),q.style[`will-change`]=``,ws&&!hs&&Ao(q,ms?ms.options.ghostClass:this.options.ghostClass,!1),Ao(q,this.options.chosenClass,!1),as({sortable:this,name:`unchoose`,toEl:J,newIndex:null,newDraggableIndex:null,originalEvent:e}),X===J?us!==ls&&us>=0&&(as({sortable:this,name:`update`,toEl:J,originalEvent:e}),as({sortable:this,name:`sort`,toEl:J,originalEvent:e})):(us>=0&&(as({rootEl:J,name:`add`,toEl:J,fromEl:X,originalEvent:e}),as({sortable:this,name:`remove`,toEl:J,originalEvent:e}),as({rootEl:J,name:`sort`,toEl:J,fromEl:X,originalEvent:e}),as({sortable:this,name:`sort`,toEl:J,originalEvent:e})),ms&&ms.save()),Q.active&&((us==null||us===-1)&&(us=ls,fs=ds),as({sortable:this,name:`end`,toEl:J,originalEvent:e}),this.save()))),this._nulling()},_nulling:function(){is(`nulling`,this),X=q=J=Y=os=Z=ss=cs=vs=ys=ws=us=fs=ls=ds=Ts=Es=ms=ps=Q.dragged=Q.ghost=Q.clone=Q.active=null,Ns.forEach(function(e){e.checked=!0}),Ns.length=bs=xs=0},handleEvent:function(e){switch(e.type){case`drop`:case`dragend`:this._onDrop(e);break;case`dragenter`:case`dragover`:q&&(this._onDragOver(e),qs(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],Oo(t,a.draggable,this.el,!1)&&e.push(t.getAttribute(a.dataIdAttr)||tc(t));return e},sort:function(e,t){var n={},r=this.el;this.toArray().forEach(function(e,t){var i=r.children[t];Oo(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 Oo(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=ts.modifyOption(this,e,t);r===void 0?n[e]=t:n[e]=r,e===`group`&&Hs(n)},destroy:function(){is(`destroy`,this);var e=this.el;e[Yo]=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(),_s.splice(_s.indexOf(this.el),1),this.el=e=null},_hideClone:function(){if(!cs){if(is(`hideClone`,this),Q.eventCanceled)return;G(Z,`display`,`none`),this.options.removeCloneOnHide&&Z.parentNode&&Z.parentNode.removeChild(Z),cs=!0}},_showClone:function(e){if(e.lastPutMode!==`clone`){this._hideClone();return}if(cs){if(is(`showClone`,this),Q.eventCanceled)return;q.parentNode==X&&!this.options.group.revertClone?X.insertBefore(Z,q):os?X.insertBefore(Z,os):X.appendChild(Z),this.options.group.revertClone&&this.animate(q,Z),G(Z,`display`,``),cs=!1}}};function qs(e){e.dataTransfer&&(e.dataTransfer.dropEffect=`move`),e.cancelable&&e.preventDefault()}function Js(e,t,n,r,i,a,o,s){var c,l=e[Yo],u=l.options.onMove,d;return window.CustomEvent&&!yo&&!bo?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 Ys(e){e.draggable=!1}function Xs(){Ms=!1}function Zs(e,t,n){var r=K(Fo(n.el,0,n.options,!0)),i=Jo(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 Qs(e,t,n){var r=K(Io(n.el,n.options.draggable)),i=Jo(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 $s(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&&ks<l*i){if(!Ds&&(Es===1?c>u+l*a/2:c<d-l*a/2)&&(Ds=!0),Ds)f=!0;else if(Es===1?c<u+ks:c>d-ks)return-Es}else if(c>u+l*(1-i)/2&&c<d-l*(1-i)/2)return ec(t)}return f||=o,f&&(c<u+l*a/2||c>d-l*a/2)?c>u+l/2?1:-1:0}function ec(e){return Lo(q)<Lo(e)?1:-1}function tc(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 nc(e){Ns.length=0;for(var t=e.getElementsByTagName(`input`),n=t.length;n--;){var r=t[n];r.checked&&Ns.push(r)}}function rc(e){return setTimeout(e,0)}function ic(e){return clearTimeout(e)}Ps&&U(document,`touchmove`,function(e){(Q.active||hs)&&e.cancelable&&e.preventDefault()}),Q.utils={on:U,off:W,css:G,find:Mo,is:function(e,t){return!!Oo(e,t,e,!1)},extend:Vo,throttle:Wo,closest:Oo,toggleClass:Ao,clone:qo,index:Lo,nextTick:rc,cancelNextTick:ic,detectDirection:zs,getChild:Fo},Q.get=function(e){return e[Yo]},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=uo(uo({},Q.utils),e.utils)),ts.mount(e)})},Q.create=function(e,t){return new Q(e,t)},Q.version=_o;var $=[],ac,oc,sc=!1,cc,lc,uc,dc;function fc(){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)),mc(),pc(),Go()},nulling:function(){uc=oc=ac=sc=dc=cc=lc=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(uc=e,t||this.options.forceAutoScrollFallback||bo||yo||So){hc(e,this.options,a,t);var o=Bo(a,!0);sc&&(!dc||r!==cc||i!==lc)&&(dc&&mc(),dc=setInterval(function(){var a=Bo(document.elementFromPoint(r,i),!0);a!==o&&(o=a,pc()),hc(e,n.options,a,t)},10),cc=r,lc=i)}else{if(!this.options.bubbleScroll||Bo(a,!0)===No()){pc();return}hc(e,this.options,Bo(a,!1),!1)}}},mo(e,{pluginName:`scroll`,initializeByDefault:!0})}function pc(){$.forEach(function(e){clearInterval(e.pid)}),$=[]}function mc(){clearInterval(dc)}var hc=Wo(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=No(),l=!1,u;oc!==n&&(oc=n,pc(),ac=t.scroll,u=t.scrollFn,ac===!0&&(ac=Bo(n,!0)));var d=0,f=ac;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(uc);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[Yo],n,t,e,uc,$[this.layer].el)!==`continue`||Ko($[this.layer].el,n,t)}.bind({layer:d}),24))),d++}while(t.bubbleScroll&&f!==c&&(f=Bo(f,!1)));sc=l}},30),gc=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 _c(){}_c.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=Fo(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:gc},mo(_c,{pluginName:`revertOnSpill`});function vc(){}vc.prototype={onSpill:function(e){var t=e.dragEl,n=e.putSortable||this.sortable;n.captureAnimationState(),t.parentNode&&t.parentNode.removeChild(t),n.animateAll()},drop:gc},mo(vc,{pluginName:`removeOnSpill`}),Q.mount(new fc),Q.mount(vc,_c);function yc(e){return e==null?e:JSON.parse(JSON.stringify(e))}function bc(e){g()&&ae(e)}function xc(e){g()?ne(e):l(e)}var Sc=null,Cc=null;function wc(e=null,t=null){Sc=e,Cc=t}function Tc(){return{data:Sc,clonedData:Cc}}var Ec=Symbol(`cloneElement`);function Dc(...e){let n=g()?.proxy,r=null,i=e[0],[,a,o]=e;Array.isArray(D(a))||(o=a,a=null);let s=null,{immediate:c=!0,clone:u=yc,forceFallback:d,fallbackOnBody:f,customUpdate:p}=D(o)??{};function m(e){let{from:t,oldIndex:n,item:i}=e,o=Array.from(t.childNodes);r=d&&!f?o.slice(0,-1):o;let s=D(D(a)?.[n]),c=u(s);wc(s,c),i[Ec]=c}function h(e){let n=e.item[Ec];if(!Qa(n)){if(to(e.item),t(a)){let t=[...D(a)];a.value=Za(t,e.newDraggableIndex,n);return}Za(D(a),e.newDraggableIndex,n)}}function _(e){let{from:n,item:r,oldIndex:i,oldDraggableIndex:o,pullMode:s,clone:c}=e;if(eo(n,r,i),s===`clone`){to(c);return}if(t(a)){let e=[...D(a)];a.value=Xa(e,o);return}Xa(D(a),o)}function v(e){if(p){p(e);return}let{from:n,item:r,oldIndex:i,oldDraggableIndex:o,newDraggableIndex:s}=e;if(to(r),eo(n,r,i),t(a)){let e=[...D(a)];a.value=qa(e,o,s);return}qa(D(a),o,s)}function y(e){let{newIndex:t,oldIndex:n,from:i,to:a}=e,o=null,s=t===n&&i===a;try{if(s){let e=null;r?.some((t,n)=>{if(e&&r?.length!==a.childNodes.length)return i.insertBefore(e,t.nextSibling),!0;let o=a.childNodes[n];e=a?.replaceChild(t,o)})}}catch(e){o=e}finally{r=null}l(()=>{if(wc(),o)throw o})}let b={onUpdate:v,onStart:m,onAdd:h,onRemove:_,onEnd:y};function x(e){let t=D(i);return e||=$a(t)?no(t,n?.$el):t,e&&!ao(e)&&(e=e.$el),e||Ka(`Root element not found`),e}function S(){let e=D(o)??{},{immediate:t,clone:n}=e,r=Ua(e,[`immediate`,`clone`]);return oo(r,(e,t)=>{so(e)&&(r[e]=(e,...n)=>(co(e,Tc()),t(e,...n)))}),io(a===null?{}:b,r)}let C=e=>{e=x(e),s&&w.destroy(),s=new Q(e,S())};N(()=>o,()=>{s&&oo(S(),(e,t)=>{s?.option(e,t)})},{deep:!0});let w={option:(e,t)=>s?.option(e,t),destroy:()=>{s?.destroy(),s=null},save:()=>s?.save(),toArray:()=>s?.toArray(),closest:(...e)=>s?.closest(...e)};return xc(()=>{c&&C()}),bc(w.destroy),Ha({start:C,pause:()=>w?.option(`disabled`,!0),resume:()=>w?.option(`disabled`,!1)},w)}var Oc=[`update`,`start`,`add`,`remove`,`choose`,`unchoose`,`end`,`sort`,`filter`,`clone`,`move`,`change`],kc=m({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`,...Oc.map(e=>`on${e.replace(/^\S/,e=>e.toUpperCase())}`)],emits:[`update:modelValue`,...Oc],setup(e,{slots:t,emit:n,expose:r,attrs:i}){let a=Oc.reduce((e,t)=>{let r=`on${t.replace(/^\S/,e=>e.toUpperCase())}`;return e[r]=(...e)=>n(t,...e),e},{}),c=H(()=>{let t=E(e),{modelValue:n}=t,r=Ua(t,[`modelValue`]),o=Object.entries(r).reduce((e,[t,n])=>{let r=D(n);return r!==void 0&&(e[t]=r),e},{});return Ha(Ha({},a),Ya(Ha(Ha({},i),o)))}),l=H({get:()=>e.modelValue,set:e=>n(`update:modelValue`,e)}),u=o(),d=h(Dc(e.target||u,l,c));return r(d),()=>s(e.tag||`div`,{ref:u},(t?.default)?.call(t,d))}}),Ac={mounted:`mounted`,unmounted:`unmounted`};Ac.mounted,Ac.unmounted;var jc={class:`config-log-parsers`},Mc={class:`config-card`},Nc={class:`config-card__header`},Pc={class:`config-card__hint`},Fc={class:`config-card`},Ic={class:`config-card__header`},Lc={class:`config-card__header-hint`},Rc={class:`config-log-parsers__order`},zc={class:`config-log-parsers__name`},Bc={key:1,class:`config-log-parsers__empty`},Vc={class:`config-log-parsers__add-row`},Hc={class:`config-log-parsers__footer`},Uc=_(m({__name:`ServiceConfigLogs`,props:{service:{}},emits:[`save`],setup(t,{emit:r}){let s=t,c=r,l=A(),{t:u}=ce(),d=Je(),p=o([...s.service.parserIds??[]]);N(()=>s.service,e=>{p.value=[...e.parserIds??[]]});let m=H(()=>[...d.parsers].filter(e=>e.enabled).sort((e,t)=>e.name.localeCompare(t.name))),h=H(()=>m.value.filter(e=>!p.value.includes(e.id))),g=o(p.value.map(e=>d.parsers.find(t=>t.id===e)).filter(e=>e!==void 0));N(p,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]}),N(()=>d.parsers,()=>{g.value=p.value.map(e=>d.parsers.find(t=>t.id===e)).filter(e=>e!==void 0)});let _=o(null);function v(e){if(!e)return;let t=d.parsers.find(t=>t.id===e);t&&(p.value=[...p.value,e],g.value=[...g.value,t],_.value=null,x())}function y(e){p.value=p.value.filter(t=>t!==e),g.value=g.value.filter(t=>t.id!==e),x()}function b(){p.value=g.value.map(e=>e.id),x()}function x(){c(`save`,{parserIds:g.value.map(e=>e.id)})}return ne(()=>{d.fetchParsers(),d.subscribeParsers()}),ae(()=>{d.unsubscribeParsers()}),(t,r)=>(e(),w(`div`,jc,[S(`div`,Mc,[S(`div`,Nc,[r[3]||=S(`i`,{class:`pi pi-code`},null,-1),S(`span`,null,i(D(u)(`serviceConfigLogs.jsParsers`)),1)]),S(`small`,Pc,i(D(u)(`serviceConfigLogs.jsParsersHint`)),1)]),S(`div`,Fc,[S(`div`,Ic,[r[4]||=S(`i`,{class:`pi pi-sort-alt`},null,-1),S(`span`,null,i(D(u)(`serviceConfigLogs.executionOrder`)),1),S(`small`,Lc,i(D(u)(`serviceConfigLogs.executionOrderHint`)),1)]),g.value.length>0?(e(),a(D(kc),{key:0,modelValue:g.value,"onUpdate:modelValue":r[0]||=e=>g.value=e,animation:150,handle:`.drag-handle`,class:`config-log-parsers__drag-list`,"data-testid":`log-parsers-drag-list`,onEnd:b},{default:P(()=>[(e(!0),w(B,null,Ce(g.value,(t,o)=>(e(),w(`div`,{key:t.id,class:`config-log-parsers__drag-row`,"data-testid":`log-parsers-drag-row`},[r[5]||=S(`span`,{class:`drag-handle`,"data-testid":`drag-handle`},[S(`i`,{class:`pi pi-bars`})],-1),S(`span`,Rc,i(o+1),1),S(`span`,zc,i(t.name),1),t.builtin?(e(),a(D(fe),{key:0,severity:`secondary`,class:`config-log-parsers__builtin-badge`},{default:P(()=>[L(i(D(u)(`serviceConfigLogs.builtin`)),1)]),_:1})):V(``,!0),t.enabled?V(``,!0):(e(),a(D(fe),{key:1,severity:`warn`,class:`config-log-parsers__disabled-badge`},{default:P(()=>[L(i(D(u)(`serviceConfigLogs.disabled`)),1)]),_:1})),n(D(f),{icon:`pi pi-trash`,severity:`danger`,text:``,size:`small`,class:`config-log-parsers__delete`,onClick:e=>y(t.id)},null,8,[`onClick`])]))),128))]),_:1},8,[`modelValue`])):V(``,!0),g.value.length===0?(e(),w(`div`,Bc,i(D(u)(`serviceConfigLogs.empty`)),1)):V(``,!0),S(`div`,Vc,[n(D(we),{modelValue:_.value,"onUpdate:modelValue":[r[1]||=e=>_.value=e,v],options:h.value,"option-label":`name`,"option-value":`id`,placeholder:D(u)(`serviceConfigLogs.addParser`),class:`config-log-parsers__add-select`,loading:D(d).loading,disabled:h.value.length===0},{option:P(({option:t})=>[S(`span`,null,i(t.name),1),t.builtin?(e(),a(D(fe),{key:0,severity:`secondary`,class:`ml-2`,style:{"font-size":`0.65rem`,padding:`0.1rem 0.35rem`}},{default:P(()=>[L(i(D(u)(`serviceConfigLogs.builtin`)),1)]),_:1})):V(``,!0)]),_:1},8,[`modelValue`,`options`,`placeholder`,`loading`,`disabled`])])]),S(`div`,Hc,[n(D(f),{label:D(u)(`serviceConfigLogs.manageParsers`),icon:`pi pi-cog`,severity:`secondary`,outlined:``,size:`small`,onClick:r[2]||=e=>D(l).push({name:`settings`,query:{section:`parsers`}})},null,8,[`label`])])]))}}),[[`__scopeId`,`data-v-73b711b6`]]),Wc={class:`config-log-sources`},Gc={class:`config-card`},Kc={class:`config-card__header`},qc={class:`config-card__hint`},Jc={key:0,class:`config-card config-card--list`},Yc={class:`source-row__info`},Xc={class:`source-row__type`},Zc={class:`source-row__label`},Qc={class:`source-row__actions`},$c={key:1,class:`config-log-sources__empty`},el={class:`config-log-sources__footer`},tl={class:`dialog-form`},nl={class:`dialog-form__field`},rl={for:`lsrc-type`,class:`dialog-form__label`},il={class:`dialog-form__field`},al={for:`lsrc-path-file`,class:`dialog-form__label`},ol={class:`dialog-form__field`},sl={for:`lsrc-encoding-file`,class:`dialog-form__label`},cl={class:`dialog-form__field dialog-form__field--row`},ll={for:`lsrc-startFromEnd-file`,class:`dialog-form__label`},ul={class:`dialog-form__field dialog-form__field--row`},dl={for:`lsrc-createIfNotExists-file`,class:`dialog-form__label`},fl={class:`dialog-form__field`},pl={for:`lsrc-connectionString-mongo`,class:`dialog-form__label`},ml={class:`dialog-form__row`},hl={class:`dialog-form__field`},gl={class:`dialog-form__field`},_l={class:`dialog-form__row`},vl={class:`dialog-form__field`},yl={class:`dialog-form__field`},bl={class:`dialog-form__field`},xl={class:`dialog-form__row`},Sl={class:`dialog-form__field dialog-form__field--grow`},Cl={class:`dialog-form__field dialog-form__field--port`},wl={class:`dialog-form__row`},Tl={class:`dialog-form__field`},El={class:`dialog-form__field`},Dl={class:`dialog-form__row`},Ol={class:`dialog-form__field`},kl={class:`dialog-form__field`},Al={class:`dialog-form__row`},jl={class:`dialog-form__field`},Ml={class:`dialog-form__field`},Nl={class:`dialog-form__row`},Pl={class:`dialog-form__field`},Fl={class:`dialog-form__field`},Il={class:`dialog-form__field`},Ll={key:3,class:`dialog-form__hint-block`},Rl=_(m({__name:`ServiceConfigLogSources`,props:{service:{}},emits:[`save`],setup(t,{emit:r}){let{t:a}=ce(),s=t,l=r,u=[{label:`Console (stdout/stderr)`,value:`console`,icon:`pi-terminal`},{label:`File`,value:`file`,icon:`pi-file`},{label:`MongoDB`,value:`mongo`,icon:`pi-database`},{label:`MySQL`,value:`mysql`,icon:`pi-database`}];function d(e){return e===`console`?{type:`console`}:e===`file`?{type:`file`,path:``,encoding:`utf-8`,startFromEnd:!0,createIfNotExists:!1}:e===`mongo`?{type:`mongo`,connectionString:``,database:``,collection:``,timestampField:`timestamp`,messageField:`message`}:{type:`mysql`,host:`localhost`,port:3306,user:``,password:``,database:``,table:``,timestampColumn:`created_at`,messageColumn:`message`,pollIntervalMs:2e3}}let p=o([...s.service.logSources??[]]);N(()=>s.service.logSources,e=>{p.value=[...e??[]]});let m=o(!1),h=o(null),g=o(d(`console`));function _(){h.value=null,g.value=d(`file`),m.value=!0}function v(e){h.value=e,g.value={...p.value[e]},m.value=!0}function y(e){g.value=d(e)}function b(){h.value===null?p.value=[...p.value,{...g.value}]:p.value=p.value.map((e,t)=>t===h.value?{...g.value}:e),m.value=!1,l(`save`,{logSources:p.value})}function x(e){p.value=p.value.filter((t,n)=>n!==e),l(`save`,{logSources:p.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 T(e){return e===`console`?`pi-terminal`:e===`file`?`pi-file`:`pi-database`}return(t,r)=>(e(),w(`div`,Wc,[S(`div`,Gc,[S(`div`,Kc,[r[23]||=S(`i`,{class:`pi pi-inbox`},null,-1),S(`span`,null,i(D(a)(`serviceConfigLogSources.title`)),1)]),S(`small`,qc,i(D(a)(`serviceConfigLogSources.hint`)),1)]),p.value.length>0?(e(),w(`div`,Jc,[(e(!0),w(B,null,Ce(p.value,(t,r)=>(e(),w(`div`,{key:r,class:`source-row`},[S(`i`,{class:ue(`pi ${T(t.type)} source-row__icon`)},null,2),S(`div`,Yc,[S(`span`,Xc,i(t.type),1),S(`span`,Zc,i(C(t)),1)]),S(`div`,Qc,[n(D(f),{icon:`pi pi-pencil`,text:``,size:`small`,severity:`secondary`,onClick:e=>v(r)},null,8,[`onClick`]),n(D(f),{icon:`pi pi-trash`,text:``,size:`small`,severity:`danger`,onClick:e=>x(r)},null,8,[`onClick`])])]))),128))])):(e(),w(`div`,$c,[r[24]||=S(`i`,{class:`pi pi-inbox config-log-sources__empty-icon`},null,-1),S(`p`,null,i(D(a)(`serviceConfigLogSources.empty`)),1),S(`small`,null,i(D(a)(`serviceConfigLogSources.emptyHint`)),1)])),S(`div`,el,[n(D(f),{label:D(a)(`serviceConfigLogSources.addSource`),icon:`pi pi-plus`,size:`small`,onClick:_},null,8,[`label`])]),n(D(c),{visible:m.value,"onUpdate:visible":r[22]||=e=>m.value=e,header:h.value===null?D(a)(`serviceConfigLogSources.addDialog`):D(a)(`serviceConfigLogSources.editDialog`),modal:``,style:{width:`520px`}},{footer:P(()=>[n(D(f),{label:D(a)(`serviceConfigLogSources.cancel`),severity:`secondary`,outlined:``,onClick:r[21]||=e=>m.value=!1},null,8,[`label`]),n(D(f),{label:h.value===null?D(a)(`serviceConfigLogSources.add`):D(a)(`serviceConfigLogSources.save`),icon:`pi pi-check`,onClick:b},null,8,[`label`])]),default:P(()=>[S(`div`,tl,[S(`div`,nl,[S(`label`,rl,i(D(a)(`serviceConfigLogSources.type`)),1),n(D(we),{"input-id":`lsrc-type`,"model-value":g.value.type,options:u,"option-label":`label`,"option-value":`value`,class:`dialog-form__input`,"onUpdate:modelValue":y},null,8,[`model-value`])]),g.value.type===`file`?(e(),w(B,{key:0},[S(`div`,il,[S(`label`,al,[L(i(D(a)(`serviceConfigLogSources.path`))+` `,1),r[25]||=S(`span`,{class:`dialog-form__required`},`*`,-1)]),n(D(R),{id:`lsrc-path-file`,modelValue:g.value.path,"onUpdate:modelValue":r[0]||=e=>g.value.path=e,class:`dialog-form__input`,placeholder:`/var/log/app.log`},null,8,[`modelValue`])]),S(`div`,ol,[S(`label`,sl,i(D(a)(`serviceConfigLogSources.encoding`)),1),n(D(R),{id:`lsrc-encoding-file`,modelValue:g.value.encoding,"onUpdate:modelValue":r[1]||=e=>g.value.encoding=e,class:`dialog-form__input`,placeholder:`utf-8`},null,8,[`modelValue`])]),S(`div`,cl,[S(`label`,ll,i(D(a)(`serviceConfigLogSources.startFromEnd`)),1),n(D(Fe),{"input-id":`lsrc-startFromEnd-file`,modelValue:g.value.startFromEnd,"onUpdate:modelValue":r[2]||=e=>g.value.startFromEnd=e},null,8,[`modelValue`])]),S(`div`,ul,[S(`label`,dl,i(D(a)(`serviceConfigLogSources.createIfNotExists`)),1),n(D(Fe),{"input-id":`lsrc-createIfNotExists-file`,modelValue:g.value.createIfNotExists,"onUpdate:modelValue":r[3]||=e=>g.value.createIfNotExists=e},null,8,[`modelValue`])])],64)):g.value.type===`mongo`?(e(),w(B,{key:1},[S(`div`,fl,[S(`label`,pl,[L(i(D(a)(`serviceConfigLogSources.connectionString`))+` `,1),r[26]||=S(`span`,{class:`dialog-form__required`},`*`,-1)]),n(D(R),{id:`lsrc-connectionString-mongo`,modelValue:g.value.connectionString,"onUpdate:modelValue":r[4]||=e=>g.value.connectionString=e,class:`dialog-form__input`,placeholder:`mongodb://user:pass@host:27017`,type:`password`,autocomplete:`off`},null,8,[`modelValue`])]),S(`div`,ml,[S(`div`,hl,[r[27]||=S(`label`,{for:`lsrc-database-mongo`,class:`dialog-form__label`},[L(`Database `),S(`span`,{class:`dialog-form__required`},`*`)],-1),n(D(R),{id:`lsrc-database-mongo`,modelValue:g.value.database,"onUpdate:modelValue":r[5]||=e=>g.value.database=e,class:`dialog-form__input`,placeholder:`mydb`},null,8,[`modelValue`])]),S(`div`,gl,[r[28]||=S(`label`,{for:`lsrc-collection-mongo`,class:`dialog-form__label`},[L(`Collection `),S(`span`,{class:`dialog-form__required`},`*`)],-1),n(D(R),{id:`lsrc-collection-mongo`,modelValue:g.value.collection,"onUpdate:modelValue":r[6]||=e=>g.value.collection=e,class:`dialog-form__input`,placeholder:`logs`},null,8,[`modelValue`])])]),S(`div`,_l,[S(`div`,vl,[r[29]||=S(`label`,{for:`lsrc-timestampField-mongo`,class:`dialog-form__label`},`Timestamp field`,-1),n(D(R),{id:`lsrc-timestampField-mongo`,modelValue:g.value.timestampField,"onUpdate:modelValue":r[7]||=e=>g.value.timestampField=e,class:`dialog-form__input`,placeholder:`timestamp`},null,8,[`modelValue`])]),S(`div`,yl,[r[30]||=S(`label`,{for:`lsrc-messageField-mongo`,class:`dialog-form__label`},`Message field`,-1),n(D(R),{id:`lsrc-messageField-mongo`,modelValue:g.value.messageField,"onUpdate:modelValue":r[8]||=e=>g.value.messageField=e,class:`dialog-form__input`,placeholder:`message`},null,8,[`modelValue`])])]),S(`div`,bl,[r[31]||=S(`label`,{for:`lsrc-levelField-mongo`,class:`dialog-form__label`},[L(`Level field `),S(`span`,{class:`dialog-form__hint`},`(optional)`)],-1),n(D(R),{id:`lsrc-levelField-mongo`,modelValue:g.value.levelField,"onUpdate:modelValue":r[9]||=e=>g.value.levelField=e,class:`dialog-form__input`,placeholder:`level`},null,8,[`modelValue`])])],64)):g.value.type===`mysql`?(e(),w(B,{key:2},[S(`div`,xl,[S(`div`,Sl,[r[32]||=S(`label`,{for:`lsrc-host-mysql`,class:`dialog-form__label`},[L(`Host `),S(`span`,{class:`dialog-form__required`},`*`)],-1),n(D(R),{id:`lsrc-host-mysql`,modelValue:g.value.host,"onUpdate:modelValue":r[10]||=e=>g.value.host=e,class:`dialog-form__input`,placeholder:`localhost`},null,8,[`modelValue`])]),S(`div`,Cl,[r[33]||=S(`label`,{for:`lsrc-port-mysql`,class:`dialog-form__label`},`Port`,-1),n(D(Ne),{"input-id":`lsrc-port-mysql`,modelValue:g.value.port,"onUpdate:modelValue":r[11]||=e=>g.value.port=e,min:1,max:65535,class:`dialog-form__input`},null,8,[`modelValue`])])]),S(`div`,wl,[S(`div`,Tl,[r[34]||=S(`label`,{for:`lsrc-user-mysql`,class:`dialog-form__label`},[L(`User `),S(`span`,{class:`dialog-form__required`},`*`)],-1),n(D(R),{id:`lsrc-user-mysql`,modelValue:g.value.user,"onUpdate:modelValue":r[12]||=e=>g.value.user=e,class:`dialog-form__input`,placeholder:`root`},null,8,[`modelValue`])]),S(`div`,El,[r[35]||=S(`label`,{for:`lsrc-password-mysql`,class:`dialog-form__label`},`Password`,-1),n(D(R),{id:`lsrc-password-mysql`,modelValue:g.value.password,"onUpdate:modelValue":r[13]||=e=>g.value.password=e,class:`dialog-form__input`,type:`password`,autocomplete:`new-password`},null,8,[`modelValue`])])]),S(`div`,Dl,[S(`div`,Ol,[r[36]||=S(`label`,{for:`lsrc-database-mysql`,class:`dialog-form__label`},[L(`Database `),S(`span`,{class:`dialog-form__required`},`*`)],-1),n(D(R),{id:`lsrc-database-mysql`,modelValue:g.value.database,"onUpdate:modelValue":r[14]||=e=>g.value.database=e,class:`dialog-form__input`,placeholder:`app_db`},null,8,[`modelValue`])]),S(`div`,kl,[r[37]||=S(`label`,{for:`lsrc-table-mysql`,class:`dialog-form__label`},[L(`Table `),S(`span`,{class:`dialog-form__required`},`*`)],-1),n(D(R),{id:`lsrc-table-mysql`,modelValue:g.value.table,"onUpdate:modelValue":r[15]||=e=>g.value.table=e,class:`dialog-form__input`,placeholder:`logs`},null,8,[`modelValue`])])]),S(`div`,Al,[S(`div`,jl,[r[38]||=S(`label`,{for:`lsrc-timestampColumn-mysql`,class:`dialog-form__label`},`Timestamp column`,-1),n(D(R),{id:`lsrc-timestampColumn-mysql`,modelValue:g.value.timestampColumn,"onUpdate:modelValue":r[16]||=e=>g.value.timestampColumn=e,class:`dialog-form__input`,placeholder:`created_at`},null,8,[`modelValue`])]),S(`div`,Ml,[r[39]||=S(`label`,{for:`lsrc-messageColumn-mysql`,class:`dialog-form__label`},`Message column`,-1),n(D(R),{id:`lsrc-messageColumn-mysql`,modelValue:g.value.messageColumn,"onUpdate:modelValue":r[17]||=e=>g.value.messageColumn=e,class:`dialog-form__input`,placeholder:`message`},null,8,[`modelValue`])])]),S(`div`,Nl,[S(`div`,Pl,[r[40]||=S(`label`,{for:`lsrc-levelColumn-mysql`,class:`dialog-form__label`},[L(`Level column `),S(`span`,{class:`dialog-form__hint`},`(optional)`)],-1),n(D(R),{id:`lsrc-levelColumn-mysql`,modelValue:g.value.levelColumn,"onUpdate:modelValue":r[18]||=e=>g.value.levelColumn=e,class:`dialog-form__input`,placeholder:`level`},null,8,[`modelValue`])]),S(`div`,Fl,[r[41]||=S(`label`,{for:`lsrc-pollIntervalMs-mysql`,class:`dialog-form__label`},`Poll interval (ms)`,-1),n(D(Ne),{"input-id":`lsrc-pollIntervalMs-mysql`,modelValue:g.value.pollIntervalMs,"onUpdate:modelValue":r[19]||=e=>g.value.pollIntervalMs=e,min:500,max:6e4,class:`dialog-form__input`},null,8,[`modelValue`])])]),S(`div`,Il,[r[42]||=S(`label`,{for:`lsrc-query-mysql`,class:`dialog-form__label`},[L(`Custom query `),S(`span`,{class:`dialog-form__hint`},[L(`(optional, must include `),S(`code`,null,`WHERE … > ?`),L(`)`)])],-1),n(D(R),{id:`lsrc-query-mysql`,modelValue:g.value.query,"onUpdate:modelValue":r[20]||=e=>g.value.query=e,class:`dialog-form__input`,placeholder:`SELECT * FROM logs WHERE created_at > ? ORDER BY id ASC`},null,8,[`modelValue`])])],64)):g.value.type===`console`?(e(),w(`small`,Ll,`The console source captures stdout/stderr and is always active. Adding it here has no effect unless you want to track it explicitly.`)):V(``,!0)])]),_:1},8,[`visible`,`header`])]))}}),[[`__scopeId`,`data-v-1ceb461a`]]),zl={class:`config-traefik`},Bl={class:`traefik-entry__fields`},Vl=_(m({__name:`ServiceConfigTraefik`,props:{service:{}},emits:[`save`],setup(t,{emit:r}){let i=t,s=r,c=o([...i.service.localUrls??[]]),l=o(null);ne(async()=>{i.service.agentId&&(l.value=(await C.settings.getAgentTraefikConfig.query({agentId:i.service.agentId})).enabled)});let u=null;N(()=>i.service,e=>{u||(c.value=[...e.localUrls??[]])});function d(){c.value=[...c.value,{url:``,port:3e3}]}function p(e){c.value=c.value.filter((t,n)=>n!==e),h()}function m(e,t,n){c.value=c.value.map((r,i)=>i===e?{...r,[t]:n}:r)}function h(){u&&clearTimeout(u),u=setTimeout(()=>{s(`save`,{localUrls:c.value.filter(e=>e.url.trim())}),u=null},150)}return(t,r)=>(e(),w(`div`,zl,[l.value===!1?(e(),a(D(Ee),{key:0,severity:`warn`,closable:!1},{default:P(()=>[r[1]||=L(` Traefik n'est pas activé. Configurez-le dans `,-1),n(D(be),{to:{name:`settings`,query:{section:`agents`}}},{default:P(()=>[...r[0]||=[L(`Paramètres → Agents`,-1)]]),_:1}),r[2]||=L(` (bouton Traefik sur la ligne de l'agent) pour que ces URLs soient actives. `,-1)]),_:1})):V(``,!0),(e(!0),w(B,null,Ce(c.value,(t,r)=>(e(),w(`div`,{key:r,class:`traefik-entry`},[S(`div`,Bl,[n(D(R),{"model-value":t.url,class:`traefik-entry__url`,placeholder:`mon-app.local.mondomaine.com`,"onUpdate:modelValue":e=>m(r,`url`,e),onBlur:h,onKeydown:I(F(h,[`prevent`]),[`enter`])},null,8,[`model-value`,`onUpdate:modelValue`,`onKeydown`]),n(D(Ne),{"model-value":t.port,class:`traefik-entry__port`,min:1,max:65535,"use-grouping":!1,placeholder:`3000`,"onUpdate:modelValue":e=>{m(r,`port`,e??3e3),h()}},null,8,[`model-value`,`onUpdate:modelValue`]),n(D(f),{icon:`pi pi-trash`,severity:`danger`,text:``,size:`small`,onClick:e=>p(r)},null,8,[`onClick`])])]))),128)),n(D(f),{icon:`pi pi-plus`,label:`Ajouter une URL`,size:`small`,outlined:``,onClick:d})]))}}),[[`__scopeId`,`data-v-a71f945b`]]),Hl={class:`config-view`,"data-testid":`config-view`},Ul={class:`config-view__header`},Wl={class:`config-view__title`},Gl={class:`config-view__actions`},Kl=_(m({__name:`ServiceConfigView`,props:{service:{},projectId:{}},emits:[`remove-service`],setup(t,{emit:r}){let a=t,o=r,{t:s}=ce(),c=le(),l=ee(),u=d(),{isDebug:p}=on(),m=re(),h=A(),g=[`general`,`commands`,`shortcuts`,`env`,`health`,`log-parsers`,`log-sources`,`traefik`],_=H(()=>{let e=m.query.configTab;return g.includes(e)?e:`general`});function v(e){h.replace({query:{...m.query,configTab:e}})}let y=H(()=>l.getByRef({id:a.projectId,orgId:u.activeOrgId})?.activeEnvironmentId);async function b(e,t){await t()?p.value&&console.debug(`[autosave] ${e} saved`):console.error(`[autosave] ${e} failed:`,c.error??`Save failed`)}async function x(e){await b(`General`,()=>c.update(a.service.id,e))}async function C(e){await b(`Commands`,()=>c.update(a.service.id,e))}async function T(e){await b(`Health check`,()=>c.update(a.service.id,{healthCheck:e??null}))}async function E(e){await b(`Shortcuts`,()=>c.update(a.service.id,{shortcuts:e}))}async function O(e){await b(`Docker`,()=>c.update(a.service.id,{dockerConfig:e}))}async function k(e){await b(`Log parsers`,()=>c.update(a.service.id,e))}async function te(e){await b(`Log sources`,()=>c.update(a.service.id,e))}async function ne(e){await b(`Traefik`,()=>c.update(a.service.id,e))}function ie(){o(`remove-service`,a.service.id)}return(r,a)=>(e(),w(`div`,Hl,[S(`div`,Ul,[S(`h2`,Wl,i(D(s)(`serviceConfigView.title`)),1),S(`div`,Gl,[n(D(f),{label:D(s)(`serviceConfigView.remove`),icon:`pi pi-trash`,severity:`danger`,size:`small`,outlined:``,onClick:ie},null,8,[`label`])])]),n(D(Re),{value:_.value,class:`config-view__tabs`,"onUpdate:value":v},{default:P(()=>[n(D(Ie),null,{default:P(()=>[n(D(ze),{value:`general`,"data-testid":`tab-config`},{default:P(()=>[a[0]||=S(`i`,{class:`pi pi-cog tab-icon`},null,-1),S(`span`,null,i(D(s)(`serviceConfigView.tabGeneral`)),1)]),_:1}),n(D(ze),{value:`commands`,"data-testid":`tab-commands`},{default:P(()=>[a[1]||=S(`i`,{class:`pi pi-code tab-icon`},null,-1),S(`span`,null,i(D(s)(`serviceConfigView.tabCommands`)),1)]),_:1}),n(D(ze),{value:`shortcuts`,"data-testid":`tab-shortcuts`},{default:P(()=>[a[2]||=S(`i`,{class:`pi pi-bolt tab-icon`},null,-1),S(`span`,null,i(D(s)(`serviceConfigView.tabShortcuts`)),1)]),_:1}),n(D(ze),{value:`env`,"data-testid":`tab-env`},{default:P(()=>[a[3]||=S(`i`,{class:`pi pi-database tab-icon`},null,-1),S(`span`,null,i(D(s)(`serviceConfigView.tabEnvironment`)),1)]),_:1}),n(D(ze),{value:`health`},{default:P(()=>[a[4]||=S(`i`,{class:`pi pi-heart tab-icon`},null,-1),S(`span`,null,i(D(s)(`serviceConfigView.tabHealthCheck`)),1)]),_:1}),n(D(ze),{value:`log-parsers`,"data-testid":`tab-log-parsers`},{default:P(()=>[a[5]||=S(`i`,{class:`pi pi-list tab-icon`},null,-1),S(`span`,null,i(D(s)(`serviceConfigView.tabLogParsers`)),1)]),_:1}),n(D(ze),{value:`log-sources`},{default:P(()=>[a[6]||=S(`i`,{class:`pi pi-inbox tab-icon`},null,-1),S(`span`,null,i(D(s)(`serviceConfigView.tabLogSources`)),1)]),_:1}),n(D(ze),{value:`traefik`},{default:P(()=>[...a[7]||=[S(`i`,{class:`pi pi-server tab-icon`},null,-1),S(`span`,null,`Traefik`,-1)]]),_:1})]),_:1}),n(D(Le),null,{default:P(()=>[n(D(Be),{value:`general`},{default:P(()=>[n(Hn,{service:t.service,onSave:x},null,8,[`service`])]),_:1}),n(D(Be),{value:`commands`},{default:P(()=>[n(hi,{service:t.service,onSave:C,onDockerSave:O},null,8,[`service`])]),_:1}),n(D(Be),{value:`shortcuts`,"data-testid":`tabpanel-shortcuts`},{default:P(()=>[n(Ia,{service:t.service,onSave:E},null,8,[`service`])]),_:1}),n(D(Be),{value:`env`},{default:P(()=>[n(ta,{service:t.service,"project-id":t.projectId,"active-environment-id":y.value},null,8,[`service`,`project-id`,`active-environment-id`])]),_:1}),n(D(Be),{value:`health`},{default:P(()=>[n(wa,{service:t.service,onSave:T},null,8,[`service`])]),_:1}),n(D(Be),{value:`log-parsers`,"data-testid":`tabpanel-log-parsers`},{default:P(()=>[n(Uc,{service:t.service,onSave:k},null,8,[`service`])]),_:1}),n(D(Be),{value:`log-sources`},{default:P(()=>[n(Rl,{service:t.service,onSave:te},null,8,[`service`])]),_:1}),n(D(Be),{value:`traefik`},{default:P(()=>[n(Vl,{service:t.service,onSave:ne},null,8,[`service`])]),_:1})]),_:1})]),_:1},8,[`value`])]))}}),[[`__scopeId`,`data-v-af965568`]]),ql={key:0,class:`service-detail`},Jl={key:1,class:`service-detail__not-found`},Yl=_(m({__name:`ServiceDetailPage`,setup(t){let n=re(),r=A(),o=Te(),s=pe(),{t:c}=ce(),l=le(),u=de(),d=ee(),{setServiceContext:f}=O(),p=H(()=>n.params.id);N(p,e=>f(e),{immediate:!0}),ae(()=>f(null));let m=H(()=>{let e=n.params.tab;return e===`terminal`||e===`metrics`||e===`config`||e===`git`||e===`wiki`?e:`terminal`}),h=H(()=>l.getById(p.value)),g=H(()=>u.getByService(p.value)),_=H(()=>d.currentProject?.id??``);function v(e){let t=l.getById(e);s.require({message:c(`serviceDetail.deleteConfirmMessage`,{name:t?.name??e}),header:c(`serviceDetail.deleteConfirmHeader`),icon:`pi pi-exclamation-triangle`,rejectLabel:c(`actions.cancel`),acceptLabel:c(`actions.delete`),acceptProps:{severity:`danger`},accept:async()=>{await l.remove(e)&&(o.add({severity:`success`,summary:c(`serviceDetail.removed`),detail:c(`serviceDetail.deleted`),life:3e3}),r.push(`/`))}})}return(t,n)=>h.value?(e(),w(`div`,ql,[m.value===`terminal`?(e(),a(Gt,{key:`terminal-`+p.value,service:h.value,processes:g.value},null,8,[`service`,`processes`])):m.value===`metrics`?(e(),a(nn,{key:`metrics-`+p.value,service:h.value,processes:g.value},null,8,[`service`,`processes`])):m.value===`config`?(e(),a(Kl,{key:`config-`+p.value,service:h.value,"project-id":_.value,onRemoveService:v},null,8,[`service`,`project-id`])):m.value===`git`?(e(),a(x,{key:`git-`+p.value,"service-id":p.value},null,8,[`service-id`])):m.value===`wiki`?(e(),a(Ye,{key:`wiki-`+p.value,scope:`service:${p.value}`},null,8,[`scope`])):V(``,!0)])):(e(),w(`div`,Jl,[S(`p`,null,i(D(c)(`serviceDetail.notFound`)),1)]))}}),[[`__scopeId`,`data-v-e3e9fe7f`]]);export{Yl as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{$i as e,Ai as t,Ca as n,Fa as r,Kt as i,Ln as a,Mi as o,Na as ee,Nn as s,Si as c,Sn as l,Ti as u,Ut as d,Vt as te,Wa as f,Xn as ne,Yi as re,Yn as ie,_n as ae,ar as oe,at as se,c as ce,ga as le,gi as p,hi as m,ln as h,nt as ue,ta as de,tn as g,tr as fe,vi as _,wi as v,xi as y}from"./index-mBPGEldp.js";import{n as b}from"./plus-CYVYZlQL.js";import{t as pe}from"./fieldset-BSGgRmpr.js";import{t as me}from"./toggleswitch-CawhRFb7.js";import{t as he}from"./autocomplete-QtPLLzzV.js";import{t as x}from"./divider-gPnMjjpJ.js";var ge={class:`service-form-page`},_e={class:`page-header`},ve={key:0,class:`restart-banner`},ye={key:1,class:`loading-container`},be={class:`form-section`},S={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=s(o({__name:`ServiceFormPage`,props:{id:{}},setup(o){let s=o,F=ne(),qe=ie(),I=fe(),L=te(),R=se(),z=ue(),B=i(),Je=ce(),{t:V}=oe(),H=y(()=>!!s.id),U=y(()=>qe.query.projectId),W=r(!1),G=r(!1),K=r(null),q=r(null),J=r(!1),Y=ee({projectId:``,agentId:P,name:``,cwd:``,ports:[],runner:`native`,autoRestart:!1,healthCheck:{enabled:!1,path:``,interval:3e4,timeout:5e3,retries:3}}),X=r([]),Ye=[{label:`Native`,value:`native`},{label:`Docker`,value:`docker`}],Xe=y(()=>L.projects.map(e=>({label:e.name,value:e.id}))),Z=y(()=>[{label:V(`serviceForm.agentInherit`),value:P},...z.agents.map(e=>({label:`${e.config.name} ${e.status.connected?`(Online)`:`(Offline)`}`,value:e.config.id}))]);function Ze(){X.value=[...X.value,{key:``,value:``,isSecret:!1}]}function Qe(e){X.value=X.value.filter((t,n)=>n!==e)}function Q(){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(s.id){W.value=!0;try{let e=await l.service.get.query({id:s.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(e){I.add({severity:`error`,summary:V(`serviceForm.error`),detail:d(e)??V(`serviceForm.failedToLoad`),life:5e3}),F.back()}finally{W.value=!1}}}async function $(){if(!(!H.value||!s.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:Q(),healthCheck:Y.healthCheck.enabled?{path:Y.healthCheck.path,interval:Y.healthCheck.interval,timeout:Y.healthCheck.timeout,retries:Y.healthCheck.retries}:void 0};(await l.service.update.mutate({id:s.id,...e}))?.stoppedForAgentChange?(K.value=e.agentId,q.value=s.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(e){I.add({severity:`error`,summary:V(`serviceForm.error`),detail:d(e)??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(e){I.add({severity:`error`,summary:V(`serviceForm.error`),detail:d(e),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(e){I.add({severity:`error`,summary:V(`serviceForm.error`),detail:d(e)??V(`serviceForm.failedToSave`),life:5e3})}finally{G.value=!1}}return re(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()}),(r,i)=>(e(),u(`div`,ge,[c(`div`,_e,[t(f(a),{icon:`pi pi-arrow-left`,severity:`secondary`,text:``,rounded:``,onClick:i[0]||=e=>f(F).back()}),c(`h1`,null,n(H.value?f(V)(`serviceForm.editTitle`):f(V)(`serviceForm.createTitle`)),1)]),q.value?(e(),u(`div`,ve,[c(`span`,null,n(f(V)(`serviceForm.agentChangedServiceStopped`)),1),t(f(a),{label:f(V)(`serviceForm.restartNow`),icon:`pi pi-play`,severity:`warning`,size:`small`,loading:J.value,onClick:et},null,8,[`label`,`loading`]),t(f(a),{icon:`pi pi-times`,severity:`secondary`,text:``,rounded:``,size:`small`,onClick:i[1]||=e=>{q.value=null,K.value=null}})])):v(``,!0),W.value?(e(),u(`div`,ye,[t(f(ae))])):(e(),u(`form`,{key:2,class:`service-form`,onSubmit:p(tt,[`prevent`])},[H.value?(e(),u(_,{key:1},[c(`div`,M,[c(`div`,N,[c(`div`,xe,[c(`label`,Se,n(f(V)(`serviceForm.nameLabelShort`)),1),t(f(h),{id:`svc-name-edit`,modelValue:Y.name,"onUpdate:modelValue":i[6]||=e=>Y.name=e,placeholder:`my-service`,class:`w-full`,onBlur:$,onKeydown:m(p($,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])]),c(`div`,Ce,[c(`label`,we,n(f(V)(`serviceForm.runnerLabel`)),1),t(f(g),{id:`svc-runner`,modelValue:Y.runner,"onUpdate:modelValue":i[7]||=e=>Y.runner=e,options:Ye,optionLabel:`label`,optionValue:`value`,class:`w-full`,onChange:$},null,8,[`modelValue`])])]),c(`div`,Te,[c(`label`,Ee,n(f(V)(`serviceForm.agentLabel`)),1),t(f(g),{id:`svc-agent-edit`,modelValue:Y.agentId,"onUpdate:modelValue":i[8]||=e=>Y.agentId=e,options:Z.value,optionLabel:`label`,optionValue:`value`,class:`w-full`,onChange:$},null,8,[`modelValue`,`options`]),c(`small`,De,n(f(V)(`serviceForm.agentHintEdit`)),1)]),c(`div`,Oe,[c(`div`,ke,[c(`label`,Ae,n(f(V)(`serviceForm.cwdLabel`)),1),t(f(h),{id:`svc-cwd`,modelValue:Y.cwd,"onUpdate:modelValue":i[9]||=e=>Y.cwd=e,placeholder:`.`,class:`w-full`,onBlur:$,onKeydown:m(p($,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])]),c(`div`,je,[c(`label`,Me,n(f(V)(`serviceForm.portsLabel`)),1),t(f(he),{inputId:`svc-ports`,modelValue:Y.ports,"onUpdate:modelValue":i[10]||=e=>Y.ports=e,multiple:``,typeahead:!1,placeholder:f(V)(`serviceForm.portsPlaceholder`),class:`w-full`,onChange:$},null,8,[`modelValue`,`placeholder`])])]),c(`div`,Ne,[t(f(me),{modelValue:Y.autoRestart,"onUpdate:modelValue":i[11]||=e=>Y.autoRestart=e,inputId:`svc-autorestart`,onChange:$},null,8,[`modelValue`]),c(`label`,Pe,n(f(V)(`serviceForm.autoRestart`)),1)])]),t(f(x)),c(`div`,Fe,[c(`div`,Ie,[c(`h3`,null,n(f(V)(`serviceForm.envVars`)),1),t(f(a),{label:f(V)(`serviceForm.addEnvVar`),icon:`pi pi-plus`,severity:`secondary`,size:`small`,onClick:Ze},null,8,[`label`])]),X.value.length===0?(e(),u(`div`,Le,[c(`small`,null,n(f(V)(`serviceForm.noEnvVars`)),1)])):v(``,!0),(e(!0),u(_,null,de(X.value,(n,r)=>(e(),u(`div`,{key:r,class:`env-row`},[t(f(h),{modelValue:n.key,"onUpdate:modelValue":e=>n.key=e,placeholder:`KEY`,class:`env-key`,onBlur:$,onKeydown:m(p($,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onUpdate:modelValue`,`onKeydown`]),i[17]||=c(`span`,{class:`env-eq`},`=`,-1),t(f(h),{modelValue:n.value,"onUpdate:modelValue":e=>n.value=e,placeholder:`value`,class:`env-value`,onBlur:$,onKeydown:m(p($,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onUpdate:modelValue`,`onKeydown`]),t(f(a),{icon:`pi pi-trash`,severity:`danger`,text:``,rounded:``,size:`small`,onClick:()=>{Qe(r),$()}},null,8,[`onClick`])]))),128))]),t(f(x)),t(f(pe),{legend:f(V)(`serviceForm.healthCheck`),toggleable:!0,collapsed:!Y.healthCheck.enabled,onToggle:i[16]||=e=>{Y.healthCheck.enabled=!e.value,$()}},{default:le(()=>[c(`div`,Re,[c(`label`,ze,n(f(V)(`serviceForm.healthCheckPath`)),1),t(f(h),{id:`hc-path`,modelValue:Y.healthCheck.path,"onUpdate:modelValue":i[12]||=e=>Y.healthCheck.path=e,placeholder:`/health`,class:`w-full`,onBlur:$,onKeydown:m(p($,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])]),c(`div`,Be,[c(`div`,Ve,[c(`label`,He,n(f(V)(`serviceForm.interval`)),1),t(f(b),{id:`hc-interval`,modelValue:Y.healthCheck.interval,"onUpdate:modelValue":i[13]||=e=>Y.healthCheck.interval=e,min:1e3,step:1e3,class:`w-full`,onBlur:$,onKeydown:m(p($,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])]),c(`div`,Ue,[c(`label`,We,n(f(V)(`serviceForm.timeout`)),1),t(f(b),{id:`hc-timeout`,modelValue:Y.healthCheck.timeout,"onUpdate:modelValue":i[14]||=e=>Y.healthCheck.timeout=e,min:500,step:500,class:`w-full`,onBlur:$,onKeydown:m(p($,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])]),c(`div`,Ge,[c(`label`,Ke,n(f(V)(`serviceForm.retries`)),1),t(f(b),{id:`hc-retries`,modelValue:Y.healthCheck.retries,"onUpdate:modelValue":i[15]||=e=>Y.healthCheck.retries=e,min:0,max:20,class:`w-full`,onBlur:$,onKeydown:m(p($,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])])])]),_:1},8,[`legend`,`collapsed`]),t(f(x))],64)):(e(),u(_,{key:0},[c(`div`,be,[c(`div`,S,[c(`label`,C,n(f(V)(`serviceForm.projectLabel`)),1),t(f(g),{id:`svc-project`,modelValue:Y.projectId,"onUpdate:modelValue":i[2]||=e=>Y.projectId=e,options:Xe.value,optionLabel:`label`,optionValue:`value`,placeholder:f(V)(`serviceForm.projectPlaceholder`),class:`w-full`},null,8,[`modelValue`,`options`,`placeholder`]),c(`small`,w,n(f(V)(`serviceForm.projectHint`)),1)]),c(`div`,T,[c(`label`,E,n(f(V)(`serviceForm.agentLabel`)),1),t(f(g),{id:`svc-agent`,modelValue:Y.agentId,"onUpdate:modelValue":i[3]||=e=>Y.agentId=e,options:Z.value,optionLabel:`label`,optionValue:`value`,placeholder:f(V)(`serviceForm.agentInherit`),"show-clear":``,class:`w-full`},null,8,[`modelValue`,`options`,`placeholder`]),c(`small`,D,n(f(V)(`serviceForm.agentHint`)),1)]),c(`div`,O,[c(`label`,k,n(f(V)(`serviceForm.nameLabel`)),1),t(f(h),{id:`svc-name`,modelValue:Y.name,"onUpdate:modelValue":i[4]||=e=>Y.name=e,placeholder:`my-service`,class:`w-full`},null,8,[`modelValue`]),c(`small`,A,n(f(V)(`serviceForm.nameConfigHint`)),1)])]),t(f(x)),c(`div`,j,[t(f(a),{label:f(V)(`serviceForm.cancel`),severity:`secondary`,text:``,onClick:i[5]||=e=>f(F).back()},null,8,[`label`]),t(f(a),{label:f(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};
|