@runeya/runeya 2.0.86 → 2.0.88
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 +70 -12
- package/agent/index.js.map +1 -1
- package/agent-manager-XUXD6WPM.js +7 -0
- package/{chunk-Y64ZIPNR.js → chunk-JB7MZWZJ.js} +34 -2
- package/chunk-JB7MZWZJ.js.map +1 -0
- package/index.js +1 -1
- package/package.json +1 -1
- package/{src-RPVY2K3C.js → src-5X4QUDVE.js} +49 -6
- package/src-5X4QUDVE.js.map +1 -0
- package/web/assets/{AgentScalarChatInterface.vue-2JCIHPbG.js → AgentScalarChatInterface.vue-3oNhFMjp.js} +1 -1
- package/web/assets/{AgentTerminalPage-DPYBLcwh.js → AgentTerminalPage-CuIu1HPP.js} +1 -1
- package/web/assets/AiChatPage-C6vKd2Co.js +1 -0
- package/web/assets/{AppLayout-DGnUySvt.css → AppLayout-DiMqQfDk.css} +1 -1
- package/web/assets/AppLayout-S3efAhq5.js +1 -0
- package/web/assets/{AuditPage-CZMaaByg.js → AuditPage-CKPonJN8.js} +1 -1
- package/web/assets/{CloudAccountPage-BURyb-FN.js → CloudAccountPage-D4dsFYJY.js} +1 -1
- package/web/assets/CloudAccountPage-Dbj64qEe.js +1 -0
- package/web/assets/{CloudMessagingPage-BTJ74tbC.js → CloudMessagingPage-BRa8oTx9.js} +1 -1
- package/web/assets/{DashboardPage-g06oZFy2.js → DashboardPage-BZGanUz4.js} +1 -1
- package/web/assets/{DirectoryPickerDialog-Bny02api.css → DirectoryPickerDialog-CSGtvSIk.css} +1 -1
- package/web/assets/DirectoryPickerDialog-Du8bmuMg.js +1 -0
- package/web/assets/{EditorIcon-B2ezDOqS.js → EditorIcon-K5L1iWtJ.js} +1 -1
- package/web/assets/{EnvironmentForm-B6uFaaJl.js → EnvironmentForm-Dvf83Ned.js} +1 -1
- package/web/assets/{EnvironmentFormPage-CXi_RM6h.js → EnvironmentFormPage-CORF4IZ-.js} +1 -1
- package/web/assets/{EnvironmentListPage-DbcI_Jbd.js → EnvironmentListPage-Cnbhd0Bl.js} +1 -1
- package/web/assets/{KanbanBoardPage-DhiGVaqN.js → KanbanBoardPage-DvYCodtf.js} +3 -3
- package/web/assets/{KanbanListPage-DUwpOfmP.js → KanbanListPage-Cge6m4fn.js} +1 -1
- package/web/assets/LaunchProjectPage-CHpVVYBa.css +1 -0
- package/web/assets/LaunchProjectPage-tsSMCl-g.js +1 -0
- package/web/assets/{LaunchServicesPage-DRqf030d.js → LaunchServicesPage-Dr6NGKSv.js} +1 -1
- package/web/assets/{LogViewer-CpdTZPAV.js → LogViewer-fjtPXmYz.js} +1 -1
- package/web/assets/{OrgKeyPrompt-p_NfCmGL.js → OrgKeyPrompt-Bwx5bsfr.js} +1 -1
- package/web/assets/{ProcessControls-9FQgpdyN.js → ProcessControls-fGxrA3S_.js} +1 -1
- package/web/assets/{ProcessDetailPage-Vpm9p7xD.js → ProcessDetailPage-CLnJCD72.js} +1 -1
- package/web/assets/{ProcessMetrics-DIQrReLi.js → ProcessMetrics-BW__HDke.js} +1 -1
- package/web/assets/{ProjectDetailPage-BR8esZ7t.js → ProjectDetailPage-Ce1zdcwd.js} +1 -1
- package/web/assets/{ProjectListPage-DiN8W1xS.js → ProjectListPage-qc6QJNM3.js} +1 -1
- package/web/assets/{RandomJobTestPage-99myn07h.js → RandomJobTestPage-BsxisDM5.js} +1 -1
- package/web/assets/{ScenarioEditorPage-BY2e2yK_.js → ScenarioEditorPage-tiQrpZNT.js} +1 -1
- package/web/assets/{SendToChatDialog-CWlZ6jQN.js → SendToChatDialog-BYiIZsix.js} +1 -1
- package/web/assets/{ServiceControlsBar-Ceke1d33.js → ServiceControlsBar--b8ram4N.js} +1 -1
- package/web/assets/{ServiceDetailPage-BOo43Ky2.js → ServiceDetailPage-BK7sOJd4.js} +1 -1
- package/web/assets/{ServiceFormPage-xxderhlm.js → ServiceFormPage-BPUbQ8eQ.js} +1 -1
- package/web/assets/{SettingsPage-C0dvLdJq.js → SettingsPage-8ZgPISDu.js} +4 -4
- package/web/assets/{UnlockPage-Cs3EwqzR.js → UnlockPage-Bg0EPmSo.js} +1 -1
- package/web/assets/{VariablesTable-CMDH0IOj.js → VariablesTable-C7mODFti.js} +1 -1
- package/web/assets/{VaultMigrationPage-Dr9ObJdX.js → VaultMigrationPage-mgp3-Hsq.js} +1 -1
- package/web/assets/{VersionBadge-qO0jW3Vn.js → VersionBadge-DGZjo982.js} +1 -1
- package/web/assets/WikiPage-BgmuCAy-.js +1 -0
- package/web/assets/{WikiView-_q_S6AfC.js → WikiView-tMGuKUY2.js} +1 -1
- package/web/assets/{add-scalar-classes-DmNDdwxw.js → add-scalar-classes-BgqWOLQH.js} +3 -3
- package/web/assets/auth-errors-DDgcewH0.js +1 -0
- package/web/assets/{autocomplete-DxlR6B1n.js → autocomplete-DlIRxgc8.js} +1 -1
- package/web/assets/{basic-shape-diamond.svg-BU1jxqV0.js → basic-shape-diamond.svg-B7ur9JO4.js} +1 -1
- package/web/assets/{basic-shape-hexagon.svg-jhoooj40.js → basic-shape-hexagon.svg-DEfqRmFr.js} +1 -1
- package/web/assets/{basic-shape-primary-circle-ellipse-round.svg-CWXO6fuU.js → basic-shape-primary-circle-ellipse-round.svg-V6KTcDwi.js} +1 -1
- package/web/assets/{basic-shape-primary-square-rectangle.svg-IQqNYRLS.js → basic-shape-primary-square-rectangle.svg-mU3jSNud.js} +1 -1
- package/web/assets/{basic-shape-shield.svg-Bdm6bjSL.js → basic-shape-shield.svg-JAGEwIw7.js} +1 -1
- package/web/assets/{browser-7T9cytRF.js → browser-0-TVi2jL.js} +1 -1
- package/web/assets/{browser-sf5-oeZn.js → browser-DE-oiBA0.js} +1 -1
- package/web/assets/{card-BkbIXDTl.js → card-C152TdF6.js} +1 -1
- package/web/assets/{checkbox-BQZVGLfA.js → checkbox-CoDq6QxG.js} +1 -1
- package/web/assets/{chip-SWRILFWV.js → chip-DiN27Sf6.js} +1 -1
- package/web/assets/{client-xpKzY1yw.js → client-D3lUQ8TX.js} +1 -1
- package/web/assets/{cloud-chat.store-DVjaDKRn.js → cloud-chat.store-CIEJoBc3.js} +1 -1
- package/web/assets/{cloud-session-BTsWokYU.js → cloud-session-I5TcP0ts.js} +1 -1
- package/web/assets/{column-C6iWK9GD.js → column-rIfrAwvi.js} +1 -1
- package/web/assets/{computer-device-desktop-monitor.svg-Ce-WgHhO.js → computer-device-desktop-monitor.svg-BWTOGrGn.js} +1 -1
- package/web/assets/{computer-device-desktop.svg-CyD4P1HJ.js → computer-device-desktop.svg-BXYm7eHz.js} +1 -1
- package/web/assets/{computer-device-laptop.svg-C_WGc03y.js → computer-device-laptop.svg-CspWQCMB.js} +1 -1
- package/web/assets/{computer-device-mobile-phone-android-samsung-back.svg-DyqXDcbJ.js → computer-device-mobile-phone-android-samsung-back.svg-BOi_lHGI.js} +1 -1
- package/web/assets/{computer-device-mobile-phone-android-samsung.svg-cpozGyLq.js → computer-device-mobile-phone-android-samsung.svg-Bw1fgRUL.js} +1 -1
- package/web/assets/{computer-device-mobile-phone-iphone-x-back.svg-DzngQFS0.js → computer-device-mobile-phone-iphone-x-back.svg-ZzI8YM2i.js} +1 -1
- package/web/assets/{computer-device-mobile-phone-iphone-x.svg-CpULIkZ9.js → computer-device-mobile-phone-iphone-x.svg-Dz7SwpcB.js} +1 -1
- package/web/assets/{computer-device-mobile-tablet-touch.svg-4dcMlTOd.js → computer-device-mobile-tablet-touch.svg-CfP_nJtb.js} +1 -1
- package/web/assets/{computer-device-mobile-tablet.svg-B4fvwL5C.js → computer-device-mobile-tablet.svg-Dkp6oFPr.js} +1 -1
- package/web/assets/{computer-device-network-ethernet-cat6.svg-CET3P2K2.js → computer-device-network-ethernet-cat6.svg-CA3nu1Ai.js} +1 -1
- package/web/assets/{computer-device-network-lan-www.svg-BmG9E-93.js → computer-device-network-lan-www.svg-mfjNsFZV.js} +1 -1
- package/web/assets/{computer-device-network-wifi-connection.svg-Bn-WVyWr.js → computer-device-network-wifi-connection.svg-B9cbDjyZ.js} +1 -1
- package/web/assets/{computer-device-network-wifi-router.svg-Bj67qwkX.js → computer-device-network-wifi-router.svg-mkJlqSab.js} +1 -1
- package/web/assets/{cssMode-fbTle67U.js → cssMode-Bj1qv6mB.js} +1 -1
- package/web/assets/{divider-CUaRW68C.js → divider-BV6KyMHP.js} +1 -1
- package/web/assets/{docx-preview-BKj4xhd9.js → docx-preview-lGixn6zc.js} +1 -1
- package/web/assets/{ecology-science-erlenmeyer-flask.svg-Cf4R1O0g.js → ecology-science-erlenmeyer-flask.svg-BlLI86Cp.js} +1 -1
- package/web/assets/{fieldset-Bg0onu_4.js → fieldset-BV-TEl6j.js} +1 -1
- package/web/assets/{freemarker2-FATJbnvY.js → freemarker2-DYshYet-.js} +1 -1
- package/web/assets/{handlebars-B00oUvUU.js → handlebars-DF5eIG2S.js} +1 -1
- package/web/assets/{html-DQ-8d9cH.js → html-Bkwzn0ft.js} +1 -1
- package/web/assets/{htmlMode-DVUSrwLl.js → htmlMode-BTiH01BO.js} +1 -1
- package/web/assets/{image-flash-lightning.svg-COhuadUw.js → image-flash-lightning.svg-c3b9QPR_.js} +1 -1
- package/web/assets/{image-picture-flower.svg-DL_6bFOP.js → image-picture-flower.svg-BRhtkn-W.js} +1 -1
- package/web/assets/{index-jkn2qFGx.js → index-CplRrSRh.js} +5 -5
- package/web/assets/{interface-alert-exclamation-diamond.svg-B8lr-PiJ.js → interface-alert-exclamation-diamond.svg-BKNxApru.js} +1 -1
- package/web/assets/{interface-alert-exclamation-triangle-warning.svg-Bodpmg5S.js → interface-alert-exclamation-triangle-warning.svg-CS5uFyXe.js} +1 -1
- package/web/assets/{interface-alert-information-circle.svg-Jz40WT4r.js → interface-alert-information-circle.svg-CyYDXV5Z.js} +1 -1
- package/web/assets/{interface-award-crown.svg-D1hOWJq_.js → interface-award-crown.svg-DUpoEWQ_.js} +1 -1
- package/web/assets/{interface-bookmark.svg-C4CYHkBh.js → interface-bookmark-tag.svg-Bk7FVus1.js} +1 -1
- package/web/assets/{interface-bookmark-tag.svg-CXAWPtbM.js → interface-bookmark.svg-C1z7my12.js} +1 -1
- package/web/assets/{interface-calendar-date-one.svg-D7qLozCi.js → interface-calendar-date-one.svg-D-LhaGu6.js} +1 -1
- package/web/assets/{interface-content-book-open-pages.svg-BVq4TTV7.js → interface-content-book-open-pages.svg-Ctp8gYd6.js} +1 -1
- package/web/assets/{interface-content-book-page.svg-CjhaosnA.js → interface-content-book-page.svg-CJLpVm6-.js} +1 -1
- package/web/assets/{interface-content-file.svg-CEw-SM2k.js → interface-content-file.svg-Cdw9adYu.js} +1 -1
- package/web/assets/interface-content-folder.svg-BKBGotmZ.js +1 -0
- package/web/assets/{interface-content-folder.svg-Digstdzk.js → interface-content-folder.svg-C-LTli3D.js} +1 -1
- package/web/assets/{interface-copy-clipboard.svg-yo3OIGOH.js → interface-copy-clipboard.svg-CZ1FlsN3.js} +1 -1
- package/web/assets/{interface-edit-attachment.svg-DLYpjw-H.js → interface-edit-attachment.svg-BzNI07D3.js} +1 -1
- package/web/assets/{interface-edit-binocular.svg-B45hTW5l.js → interface-edit-binocular.svg-D2O6TBox.js} +1 -1
- package/web/assets/{interface-edit-magic-wand.svg-iQJcmjyg.js → interface-edit-magic-wand.svg-NbFFUmgA.js} +1 -1
- package/web/assets/{interface-edit-tool-paint-roller.svg-DYvhGD01.js → interface-edit-tool-paint-roller.svg-5NUO3OYA.js} +1 -1
- package/web/assets/{interface-edit-tool-pencil.svg-fmJoLKto.js → interface-edit-tool-pencil.svg-CsuvbO7P.js} +1 -1
- package/web/assets/{interface-favorite-award.svg-D2BY0tc5.js → interface-favorite-award.svg-BhZPSTvB.js} +1 -1
- package/web/assets/{interface-favorite-flag.svg-CyI2S-Rk.js → interface-favorite-flag.svg-C3aTxT5W.js} +1 -1
- package/web/assets/{interface-favorite-heart.svg-DwuMf3HF.js → interface-favorite-heart.svg-CdyXJ4-T.js} +1 -1
- package/web/assets/{interface-favorite-star.svg-Cdm7YIFx.js → interface-favorite-star.svg-Bl7oTnFq.js} +1 -1
- package/web/assets/{interface-favorite-stars-sparkles.svg-v5lmt4Kb.js → interface-favorite-stars-sparkles.svg-Bsof10gz.js} +1 -1
- package/web/assets/{interface-hierarchy-flowchart.svg-ByM-D-0v.js → interface-hierarchy-flowchart.svg-BbdkFdhV.js} +1 -1
- package/web/assets/{interface-home-house.svg-Bv56H9vy.js → interface-home-house.svg-DLWOXxe1.js} +1 -1
- package/web/assets/{interface-hyperlink.svg-DHfYAfok.js → interface-hyperlink.svg-BrIqh6_T.js} +1 -1
- package/web/assets/{interface-lighting-brightness.svg-C7lLPf3U.js → interface-lighting-brightness.svg-_MFwbHxh.js} +1 -1
- package/web/assets/{interface-lock-closed.svg-U1EREhej.js → interface-lock-closed.svg-D8VwQ7hs.js} +1 -1
- package/web/assets/{interface-lock-open-unlock.svg-1FFQHylB.js → interface-lock-open-unlock.svg-Bj_TseHM.js} +1 -1
- package/web/assets/{interface-login-key.svg-BrNpZ0me.js → interface-login-key.svg-Bk-bjimy.js} +1 -1
- package/web/assets/{interface-search.svg-Au9Y9mBF.js → interface-search.svg-BLDHFL3v.js} +1 -1
- package/web/assets/{interface-setting-cog.svg-iQhfiWZC.js → interface-setting-cog.svg-DuL65Vq0.js} +1 -1
- package/web/assets/{interface-share-megaphone-bullhorn.svg-djT4CEBG.js → interface-share-megaphone-bullhorn.svg-sDeWj2To.js} +1 -1
- package/web/assets/{interface-share-rocket.svg-JpmWqQkX.js → interface-share-rocket.svg-C-Ne_EFf.js} +1 -1
- package/web/assets/{interface-share-satellite.svg-94Qdp6WO.js → interface-share-satellite.svg-AyoxSUGq.js} +1 -1
- package/web/assets/{interface-share-space-ship.svg-C7A9Xx8w.js → interface-share-space-ship.svg-DZkvh0bc.js} +1 -1
- package/web/assets/{interface-share.svg-C-UPqAnH.js → interface-share.svg-gF-L8Nqu.js} +1 -1
- package/web/assets/{interface-signal-square.svg-Ca2QKLNO.js → interface-signal-square.svg-WmkMCnmC.js} +1 -1
- package/web/assets/{interface-time-clock-circle.svg-DVz_iI64.js → interface-time-clock-circle.svg-wnGmSxqF.js} +1 -1
- package/web/assets/{interface-time-hour-glass.svg-CNRLMgmN.js → interface-time-hour-glass.svg-BN8-MnG6.js} +1 -1
- package/web/assets/{interface-users-multiple.svg-CPHpsRFs.js → interface-users-multiple.svg-Iq7LT4bZ.js} +1 -1
- package/web/assets/{interface-weather-moon.svg-B17jtAgT.js → interface-weather-moon.svg-L2QkagiT.js} +1 -1
- package/web/assets/{javascript-CsxiAHp1.js → javascript-D2NstPql.js} +1 -1
- package/web/assets/{jsonMode-DQcv9BQf.js → jsonMode-6di6CsEi.js} +1 -1
- package/web/assets/{liquid-BIrVK247.js → liquid-D2Cnxy5i.js} +1 -1
- package/web/assets/{lspLanguageFeatures-DvMpEe2y.js → lspLanguageFeatures-DlOdzu4U.js} +1 -1
- package/web/assets/{mail-chat-bubble-square.svg-C0qepbxT.js → mail-chat-bubble-square.svg-D4A8L_FV.js} +1 -1
- package/web/assets/{mail-send-email-paper-airplane.svg-BFiRVPrl.js → mail-send-email-paper-airplane.svg-BXZFcU3O.js} +1 -1
- package/web/assets/{mail-send-envelope.svg-BU3RnKVS.js → mail-send-envelope.svg-BCtFhHY6.js} +1 -1
- package/web/assets/{mdx-CRgydoH8.js → mdx-Qdv0CXdk.js} +1 -1
- package/web/assets/{minus-D_Jn9dvK.js → minus-BYrMN2Qe.js} +1 -1
- package/web/assets/{modal-aB8A-OAS.js → modal-BOjcXqO0.js} +1 -1
- package/web/assets/modal-Bz_LuPtU.js +1 -0
- package/web/assets/{money-cashier-receipt.svg-BWmlcOKJ.js → money-cashier-receipt.svg-JFlHIic-.js} +1 -1
- package/web/assets/{money-currency-dollar-pay.svg-zHTJNquR.js → money-currency-dollar-pay.svg-DqIxaR0X.js} +1 -1
- package/web/assets/{money-graph-arrow-increase.svg-D43M1LBL.js → money-graph-arrow-increase.svg-z_JTyXZ5.js} +1 -1
- package/web/assets/{money-graph-bar-chart-increase.svg-Bbbd-lwx.js → money-graph-bar-chart-increase.svg-DKt8OoHk.js} +1 -1
- package/web/assets/{multiselect-DrbXL7ID.js → multiselect-hclMAFHG.js} +1 -1
- package/web/assets/{nature-ecology-leaf.svg-BYp3lPHa.js → nature-ecology-leaf.svg-xt_SUqqe.js} +1 -1
- package/web/assets/{password-DAUR5qHZ.js → password-CyJoTrTG.js} +1 -1
- package/web/assets/{phone-telephone.svg-CpZY1G-A.js → phone-telephone.svg-3kwA4q2S.js} +1 -1
- package/web/assets/{plus-DDImMZMm.js → plus-C_ps1Ew7.js} +1 -1
- package/web/assets/process.store-BaKrBmHk.js +1 -0
- package/web/assets/{programming-bug.svg-OrMQIV7d.js → programming-bug.svg-DxZ_5I-g.js} +1 -1
- package/web/assets/{programming-cloud.svg-BK0AmNiD.js → programming-cloud.svg-Bdz2V_07.js} +1 -1
- package/web/assets/{programming-computer-database-server.svg-DNagaF1v.js → programming-computer-database-server.svg-MsACOwen.js} +1 -1
- package/web/assets/{programming-computer-database.svg-BotzCN1L.js → programming-computer-database.svg-CA3XDPkS.js} +1 -1
- package/web/assets/{programming-module-four-layout.svg-CivISmWu.js → programming-module-four-layout.svg-C-M_zaN0.js} +1 -1
- package/web/assets/{programming-module-three.svg-C0xlPUyi.js → programming-module-three.svg-z02jPdZc.js} +1 -1
- package/web/assets/{programming-module.svg-lJDUKvvA.js → programming-module.svg-O2z2h5Yy.js} +1 -1
- package/web/assets/{programming-script-code.svg-DR_FR80T.js → programming-script-code.svg-O2y7s7Sg.js} +1 -1
- package/web/assets/{python-CH9yF2VD.js → python-B9fabt5H.js} +1 -1
- package/web/assets/{razor-DAp8UnAa.js → razor-RpPGJluR.js} +1 -1
- package/web/assets/router-Bgwy1k6u.js +1 -0
- package/web/assets/settings-scope-CBy_Xmtx.js +1 -0
- package/web/assets/{settings.store-CExgXLxV.js → settings.store-XG7Iimtz.js} +1 -1
- package/web/assets/{shopping-cart.svg-DrUNSF2z.js → shopping-cart.svg-Bn438qnw.js} +1 -1
- package/web/assets/{shopping-gift-present.svg-C7F2qHwj.js → shopping-gift-present.svg-BrgI_K4x.js} +1 -1
- package/web/assets/{shopping-shipping-box-parcel-package.svg-BZi9j76S.js → shopping-shipping-box-parcel-package.svg-CCRm84zO.js} +1 -1
- package/web/assets/{src-DYKiG3Yx.js → src-BWrdKF09.js} +1 -1
- package/web/assets/{src-BO1-KNua.js → src-BjUSqLVz.js} +1 -1
- package/web/assets/{tabpanel-BE4wWNeN.js → tabpanel-MTqk9phm.js} +1 -1
- package/web/assets/{tag-new-circle.svg-BZdT-YYZ.js → tag-new-circle.svg-DQhJVwNv.js} +1 -1
- package/web/assets/{toggleswitch-OFGzUye7.js → toggleswitch-C2sxI6ou.js} +1 -1
- package/web/assets/{travel-map-earth-globe.svg-BUbnnpYd.js → travel-map-earth-globe.svg-6ncQ3ANE.js} +1 -1
- package/web/assets/trpc-S8kCUK1q.js +1 -0
- package/web/assets/{tsMode-BKgcqetw.js → tsMode-BP42so6N.js} +1 -1
- package/web/assets/{typescript-Bv0ZS8Z5.js → typescript-Dqi5iqvC.js} +1 -1
- package/web/assets/useAiChatDrawer-CPC60d0U.js +1 -0
- package/web/assets/{useCloudOrg-CInWTCyY.js → useCloudOrg-DCMGDqIV.js} +3 -3
- package/web/assets/useProjectCatalog-BCeAlQjB.css +1 -0
- package/web/assets/useProjectCatalog-ZQP8yHPc.js +1 -0
- package/web/assets/{xml-CfUV4tYp.js → xml-DVa59_bl.js} +1 -1
- package/web/assets/{yaml-YO2jDvfh.js → yaml-BEVWHb2n.js} +1 -1
- package/web/index.html +1 -1
- package/agent-manager-DDTLG24O.js +0 -7
- package/chunk-Y64ZIPNR.js.map +0 -1
- package/src-RPVY2K3C.js.map +0 -1
- package/web/assets/AiChatPage-BArNvXz3.js +0 -1
- package/web/assets/AppLayout-BMSh9aXZ.js +0 -1
- package/web/assets/CloudAccountPage-Dh-idRt2.js +0 -1
- package/web/assets/DirectoryPickerDialog-ku50F8Lp.js +0 -1
- package/web/assets/LaunchProjectPage-B1oNrjFo.js +0 -1
- package/web/assets/LaunchProjectPage-CCtlg5Kz.css +0 -1
- package/web/assets/WikiPage-D106PgAS.js +0 -1
- package/web/assets/auth-errors-Dk-7Y8Ou.js +0 -1
- package/web/assets/interface-content-folder.svg--MHuTZTp.js +0 -1
- package/web/assets/modal-BeeBOou3.js +0 -1
- package/web/assets/process.store-pPDuP0yO.js +0 -1
- package/web/assets/router-BsPWJucQ.js +0 -1
- package/web/assets/settings-scope-BcQXPl52.js +0 -1
- package/web/assets/trpc-CSLttYRg.js +0 -1
- package/web/assets/useAiChatDrawer-JbTPBQhg.js +0 -1
- package/web/assets/useProjectCatalog-B0LLASLj.js +0 -1
- /package/{agent-manager-DDTLG24O.js.map → agent-manager-XUXD6WPM.js.map} +0 -0
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{Cn as e,Da as t,Di as n,Dn as r,E as i,En as a,G as o,Gi as s,Hn as c,Ia as l,It as u,J as d,K as f,Kn as p,Lt as m,Na as h,Nt as g,Pi as _,Q as v,Rt as y,Sa as b,Si as x,Ta as S,Ti as ee,Tn as C,Ui as w,Vi as T,Vn as E,Vt as te,Zn as ne,Zt as re,_i as D,an as O,at as ie,ba as ae,c as oe,ca as k,ci as A,ct as j,dn as se,dt as ce,fa as le,ft as ue,gi as M,ha as N,hi as P,hn as de,ia as fe,in as pe,kn as F,la as me,lt as he,mi as I,mn as ge,nt as _e,on as L,pi as R,q as z,qi as ve,qn as ye,ri as be,rt as xe,si as B,tt as Se,ui as V,un as Ce,ut as we,wi as H,xi as U,zn as Te,zt as Ee}from"./index-jkn2qFGx.js";import"./cloud-session-BTsWokYU.js";import"./src-DYKiG3Yx.js";import{n as De,t as Oe}from"./ServiceControlsBar-Ceke1d33.js";import"./ProcessControls-9FQgpdyN.js";import{t as ke}from"./uuid-Q0SWZmaT.js";import{n as Ae,t as je}from"./column-C6iWK9GD.js";import{n as Me}from"./plus-DDImMZMm.js";import{t as Ne}from"./checkbox-BQZVGLfA.js";import{t as Pe}from"./toggleswitch-OFGzUye7.js";import{i as Fe,n as Ie,o as Le,r as Re,t as ze}from"./tabpanel-BE4wWNeN.js";import{n as Be,t as Ve}from"./VariablesTable-CMDH0IOj.js";import{t as He}from"./autocomplete-DxlR6B1n.js";import"./src-BO1-KNua.js";import"./w3c-keyname-9KQ-4XZl.js";import"./SendToChatDialog-CWlZ6jQN.js";import{n as Ue,t as We}from"./ProcessMetrics-DIQrReLi.js";import{t as Ge}from"./LogViewer-CpdTZPAV.js";import{t as Ke}from"./divider-CUaRW68C.js";import{t as qe}from"./settings.store-CExgXLxV.js";import{t as Je}from"./WikiView-_q_S6AfC.js";var Ye={key:0,class:`log-details`},Xe={class:`log-details__section`},Ze={class:`log-details__label`},Qe={class:`log-details__value log-details__value--box`},$e={class:`log-details__section`},et={class:`log-details__label`},tt={class:`log-details__value log-details__value--box log-details__value--code`},nt={class:`log-details__section`},rt={class:`log-details__label`},it={class:`log-details__value log-details__value--box`},at={class:`log-details__process`},ot={class:`log-details__section`},st={class:`log-details__label`},ct={class:`log-details__value log-details__value--box`},lt={key:0,class:`log-details__section`},ut={class:`log-details__label`},dt={class:`log-details__value log-details__value--box log-details__value--code`,"data-testid":`log-details-cwd`},ft={class:`log-details__section`},pt={class:`log-details__label`},mt={class:`log-details__value log-details__value--box`},ht={key:1,class:`log-details__section`},gt={class:`log-details__label`},_t={class:`log-details__value log-details__value--box`},vt={key:2,class:`log-details__section`},yt={class:`log-details__label`},bt={class:`log-details__value log-details__value--box log-details__value--code`},xt=C(H({__name:`LogDetailsDrawer`,props:{visible:{type:Boolean},log:{}},emits:[`update:visible`,`view-process`],setup(e,{emit:t}){let n=e,{t:r}=ne(),i=oe(),o=t,c=R(()=>{if(!n.log)return``;let e=new Date(n.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`)}`}),u=R(()=>n.log?n.log.level.charAt(0).toUpperCase()+n.log.level.slice(1):``),d=R(()=>!n.log||n.log.pid==null?r(`logDetails.notAvailable`):String(n.log.pid)),f=R(()=>n.log?i.getByService(n.log.processId)[0]?.cwd??null:null);function p(){n.log&&o(`view-process`,n.log.processId)}function m(){o(`update:visible`,!1)}return(t,n)=>(s(),P(l(a),{visible:e.visible,position:`right`,header:l(r)(`logDetails.header`),style:{width:`440px`},"onUpdate:visible":m},{default:k(()=>[e.log?(s(),D(`div`,Ye,[I(`div`,Xe,[I(`div`,Ze,N(l(r)(`logDetails.type`)),1),I(`div`,Qe,N(u.value),1)]),I(`div`,$e,[I(`div`,et,N(l(r)(`logDetails.rawMessage`)),1),I(`div`,tt,N(e.log.raw),1)]),I(`div`,nt,[I(`div`,rt,N(l(r)(`logDetails.serviceId`)),1),I(`div`,it,[I(`div`,at,[I(`span`,null,N(e.log.processId),1),x(l(F),{label:l(r)(`logDetails.viewProcess`),icon:`pi pi-external-link`,size:`small`,outlined:``,onClick:p},null,8,[`label`])])])]),I(`div`,ot,[I(`div`,st,N(l(r)(`logDetails.pid`)),1),I(`div`,ct,N(d.value),1)]),f.value?(s(),D(`div`,lt,[I(`div`,ut,N(l(r)(`logDetails.cwd`)),1),I(`div`,dt,N(f.value),1)])):M(``,!0),I(`div`,ft,[I(`div`,pt,N(l(r)(`logDetails.timestamp`)),1),I(`div`,mt,N(c.value),1)]),e.log.stream?(s(),D(`div`,ht,[I(`div`,gt,N(l(r)(`logDetails.stream`)),1),I(`div`,_t,N(e.log.stream),1)])):M(``,!0),e.log.metadata&&Object.keys(e.log.metadata).length>0?(s(),D(`div`,vt,[I(`div`,yt,N(l(r)(`logDetails.metadata`)),1),I(`div`,bt,N(JSON.stringify(e.log.metadata,null,2)),1)])):M(``,!0)])):M(``,!0)]),_:1},8,[`visible`,`header`]))}}),[[`__scopeId`,`data-v-4e3f7abe`]]),St=500,Ct=5,wt=ie;function Tt(e){return e+Math.random()*e*.3}function Et(n,r){let i=t([]),a=t(!1),o=null,s=0,c=null,l=ge(()=>{s=0,a.value||S()}),u=[],d=null,f=t(0),p=t(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=[...i.value,...e];t.length>St&&(t=t.slice(t.length-St)),i.value=t}function b(){!n.value||!r.value||(a.value=!0,o=de.process.onLog.subscribe({agentId:n.value,processId:r.value},{onData(t){let n=t;if(s=0,e(`connected`),n.some(e=>e.__clearLogBuffer)){i.value=[],u=[];return}m+=n.length,u.push(...n),d===null&&(d=requestAnimationFrame(y))},onError(e){console.error(`[useLogStream] Subscription error:`,e.message),a.value=!1,o=null,x()}}))}function x(){if(s>=Ct){console.warn(`[useLogStream] Max retries (${Ct}) reached`),e(`disconnected`);return}e(`reconnecting`);let t=Tt(wt*2**s);s++,c=setTimeout(()=>{c=null,S()},t)}async function S(){if(!a.value&&!(!n.value||!r.value)){s=0;try{let t=await de.process.logs.query({agentId:n.value,processId:r.value});t.length>St&&(t=t.slice(t.length-St)),i.value=t,e(`connected`)}catch{}b()}}function ee(){c&&=(clearTimeout(c),null),d!==null&&(cancelAnimationFrame(d),d=null),u=[],v(),o&&=(o.unsubscribe(),null),a.value=!1,s=0,i.value=[]}return fe([n,r],([e,t],[n,r])=>{(e!==n||t!==r)&&(a.value&&ee(),S())}),w(()=>{l(),ee()}),{logs:i,isStreaming:a,start:S,stop:ee,receivedPerSec:f,flushedPerSec:p,startStats:_,stopStats:v}}var Dt={class:`service-terminal__toolbar`},Ot={class:`service-terminal__toolbar-left`},kt={key:0,class:`pid-option`},At={key:1,class:`pid-option`},jt={key:0,class:`pi pi-circle-fill pid-status-icon pid-status-icon--active`,style:{"margin-right":`0.5rem`}},Mt={key:1,class:`pi pi-circle-fill pid-status-icon pid-status-icon--stopped`,style:{"margin-right":`0.5rem`}},Nt={class:`pid-option`},Pt={key:0,class:`pi pi-list`,style:{"margin-right":`0.5rem`}},Ft=[`title`],It=[`title`],Lt={class:`service-terminal__toolbar-right`},Rt={class:`service-terminal__content`,"data-testid":`service-terminal-content`},zt={key:1,class:`service-terminal__shortcuts`},Bt={class:`service-terminal__command-input`},Vt={class:`service-terminal__bottom`},Ht=`runeya_command_history_`,Ut=50,Wt=C(H({__name:`ServiceTerminal`,props:{service:{},processes:{}},setup(e){let{t:n}=ne(),r=e,i=R(()=>r.processes.find(e=>e.state===`running`||e.state===`starting`)??r.processes[0]??null),a=R(()=>i.value?.agentId??``),o=R(()=>i.value?.id??``),c=ye(),{logs:u,isStreaming:d,start:f,stop:p,receivedPerSec:m,flushedPerSec:h,startStats:g,stopStats:v}=Et(a,o),y=t(!1);fe(y,e=>{e?g():v()});function b(e){e.ctrlKey&&e.shiftKey&&(e.key===`*`||e.key===`µ`)&&(e.preventDefault(),y.value=!y.value)}let S=R(()=>{let e=new Map;return u.value.forEach(t=>{if(t.pid!=null){let n=e.get(t.pid);if(n)n.lastSeen=new Date(Math.max(n.lastSeen.getTime(),new Date(t.timestamp).getTime())),n.logCount++;else{let n=r.processes.find(e=>e.pid===t.pid&&(e.state===`running`||e.state===`starting`));e.set(t.pid,{pid:t.pid,lastSeen:new Date(t.timestamp),logCount:1,isActive:!!n})}}}),Array.from(e.values()).sort((e,t)=>t.lastSeen.getTime()-e.lastSeen.getTime())}),ee=R(()=>Ae.value===`all`?u.value:u.value.filter(e=>e.pid===Ae.value)),C=R(()=>S.value.filter(e=>e.isActive).length),E=R(()=>{let e=[{label:n(`serviceTerminal.allProcesses`),value:`all`,badge:C.value>0?`${C.value} ${n(`serviceTerminal.active`)}`:void 0,isActive:void 0}];return S.value.forEach(({pid:t,logCount:n,isActive:r})=>{e.push({label:`PID: ${t}`,value:t,badge:`${n} logs`,isActive:r})}),e});R(()=>r.processes.filter(e=>e.state===`running`).length);async function te(){if(i.value)try{await de.process.clearLogBuffer.mutate({agentId:i.value.agentId,processId:i.value.id}),u.value=[]}catch(e){c.add({severity:`error`,summary:n(`serviceTerminal.error`),detail:e.message??n(`serviceTerminal.failedToClearLogs`),life:5e3})}}let ie=R(()=>r.service.shortcuts??[]),ae=t(new Set);async function oe(e){let t=i.value?.agentId??r.service.agentId,a=i.value?.id??r.service.id;if(!t){c.add({severity:`warn`,summary:n(`serviceTerminal.noAgent`),detail:n(`serviceTerminal.noAgentDesc`),life:3e3});return}if(ae.value.has(e.id)){try{await de.process.cancelShortcut.mutate({agentId:t,processId:a,shortcutId:e.id})}catch{}return}ae.value=new Set([...ae.value,e.id]);try{await de.process.executeShortcut.mutate({agentId:t,processId:a,shortcut:e})}catch(e){c.add({severity:`error`,summary:n(`serviceTerminal.shortcutFailed`),detail:e.message??n(`serviceTerminal.shortcutFailed`),life:5e3})}finally{let t=new Set(ae.value);t.delete(e.id),ae.value=t}}let A=t(``),j=t(new Set),se=R(()=>j.value.size>0),ce=t(null),ue=t([]),pe=t(-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(`,`),he=t([]);function ge(e){let t=e.query.toLowerCase().trim();if(!t||!A.value.trim()){he.value=[];return}let n=[...ue.value.slice().reverse(),...me],r=new Set;he.value=n.filter(e=>r.has(e)?!1:(r.add(e),e.toLowerCase().includes(t))).slice(0,10)}function _e(){try{let e=localStorage.getItem(Ht+r.service.id);e&&(ue.value=JSON.parse(e))}catch{ue.value=[]}}function L(){try{localStorage.setItem(Ht+r.service.id,JSON.stringify(ue.value))}catch{}}function z(e){ue.value[ue.value.length-1]!==e&&(ue.value=[...ue.value,e],ue.value.length>Ut&&(ue.value=ue.value.slice(-Ut)),L())}async function be(){let e=i.value?.agentId??r.service.agentId,t=i.value?.id??r.service.id;if(e)try{await de.process.cancelAdHocCommand.mutate({agentId:e,processId:t})}catch{}}async function xe(){if(!A.value.trim())return;let e=i.value?.agentId??r.service.agentId,t=i.value?.id??r.service.id;if(!e){c.add({severity:`warn`,summary:n(`serviceTerminal.noAgent`),detail:n(`serviceTerminal.noAgentDesc`),life:3e3});return}let a=ke(),o=A.value.trim();z(o),A.value=``,he.value=[],pe.value=-1,j.value=new Set([...j.value,a]);try{await de.process.executeAdHocCommand.mutate({agentId:e,processId:t,command:o,commandId:a})}catch(e){c.add({severity:`error`,summary:n(`serviceTerminal.commandFailed`),detail:e.message??n(`serviceTerminal.commandFailed`),life:5e3})}finally{let e=new Set(j.value);e.delete(a),j.value=e,_(()=>{document.querySelector(`.service-terminal__input`)?.focus()})}}function B(e){if(e.key===`Enter`&&!e.shiftKey){e.preventDefault(),xe();return}if(e.key===`ArrowUp`){if(e.preventDefault(),ue.value.length===0)return;pe.value===-1?pe.value=ue.value.length-1:pe.value>0&&pe.value--,A.value=ue.value[pe.value]||``}else if(e.key===`ArrowDown`){if(e.preventDefault(),pe.value===-1)return;pe.value<ue.value.length-1?(pe.value++,A.value=ue.value[pe.value]||``):(pe.value=-1,A.value=``)}}function Se(){if(u.value.length===0)return;let e=u.value.map(e=>`[${new Date(e.timestamp).toISOString()}] ${e.level.toUpperCase().padEnd(5)} ${e.message}`),t=new Blob([e.join(`
|
|
1
|
+
import{Cn as e,Da as t,Di as n,Dn as r,E as i,En as a,G as o,Gi as s,Hn as c,Ia as l,It as u,J as d,K as f,Kn as p,Lt as m,Na as h,Nt as g,Pi as _,Q as v,Rt as y,Sa as b,Si as x,Ta as S,Ti as ee,Tn as C,Ui as w,Vi as T,Vn as E,Vt as te,Zn as ne,Zt as re,_i as D,an as O,at as ie,ba as ae,c as oe,ca as k,ci as A,ct as j,dn as se,dt as ce,fa as le,ft as ue,gi as M,ha as N,hi as P,hn as de,ia as fe,in as pe,kn as F,la as me,lt as he,mi as I,mn as ge,nt as _e,on as L,pi as R,q as z,qi as ve,qn as ye,ri as be,rt as xe,si as B,tt as Se,ui as V,un as Ce,ut as we,wi as H,xi as U,zn as Te,zt as Ee}from"./index-CplRrSRh.js";import"./cloud-session-I5TcP0ts.js";import"./src-BWrdKF09.js";import{n as De,t as Oe}from"./ServiceControlsBar--b8ram4N.js";import"./ProcessControls-fGxrA3S_.js";import{t as ke}from"./uuid-Q0SWZmaT.js";import{n as Ae,t as je}from"./column-rIfrAwvi.js";import{n as Me}from"./plus-C_ps1Ew7.js";import{t as Ne}from"./checkbox-CoDq6QxG.js";import{t as Pe}from"./toggleswitch-C2sxI6ou.js";import{i as Fe,n as Ie,o as Le,r as Re,t as ze}from"./tabpanel-MTqk9phm.js";import{n as Be,t as Ve}from"./VariablesTable-C7mODFti.js";import{t as He}from"./autocomplete-DlIRxgc8.js";import"./src-BjUSqLVz.js";import"./w3c-keyname-9KQ-4XZl.js";import"./SendToChatDialog-BYiIZsix.js";import{n as Ue,t as We}from"./ProcessMetrics-BW__HDke.js";import{t as Ge}from"./LogViewer-fjtPXmYz.js";import{t as Ke}from"./divider-BV6KyMHP.js";import{t as qe}from"./settings.store-XG7Iimtz.js";import{t as Je}from"./WikiView-tMGuKUY2.js";var Ye={key:0,class:`log-details`},Xe={class:`log-details__section`},Ze={class:`log-details__label`},Qe={class:`log-details__value log-details__value--box`},$e={class:`log-details__section`},et={class:`log-details__label`},tt={class:`log-details__value log-details__value--box log-details__value--code`},nt={class:`log-details__section`},rt={class:`log-details__label`},it={class:`log-details__value log-details__value--box`},at={class:`log-details__process`},ot={class:`log-details__section`},st={class:`log-details__label`},ct={class:`log-details__value log-details__value--box`},lt={key:0,class:`log-details__section`},ut={class:`log-details__label`},dt={class:`log-details__value log-details__value--box log-details__value--code`,"data-testid":`log-details-cwd`},ft={class:`log-details__section`},pt={class:`log-details__label`},mt={class:`log-details__value log-details__value--box`},ht={key:1,class:`log-details__section`},gt={class:`log-details__label`},_t={class:`log-details__value log-details__value--box`},vt={key:2,class:`log-details__section`},yt={class:`log-details__label`},bt={class:`log-details__value log-details__value--box log-details__value--code`},xt=C(H({__name:`LogDetailsDrawer`,props:{visible:{type:Boolean},log:{}},emits:[`update:visible`,`view-process`],setup(e,{emit:t}){let n=e,{t:r}=ne(),i=oe(),o=t,c=R(()=>{if(!n.log)return``;let e=new Date(n.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`)}`}),u=R(()=>n.log?n.log.level.charAt(0).toUpperCase()+n.log.level.slice(1):``),d=R(()=>!n.log||n.log.pid==null?r(`logDetails.notAvailable`):String(n.log.pid)),f=R(()=>n.log?i.getByService(n.log.processId)[0]?.cwd??null:null);function p(){n.log&&o(`view-process`,n.log.processId)}function m(){o(`update:visible`,!1)}return(t,n)=>(s(),P(l(a),{visible:e.visible,position:`right`,header:l(r)(`logDetails.header`),style:{width:`440px`},"onUpdate:visible":m},{default:k(()=>[e.log?(s(),D(`div`,Ye,[I(`div`,Xe,[I(`div`,Ze,N(l(r)(`logDetails.type`)),1),I(`div`,Qe,N(u.value),1)]),I(`div`,$e,[I(`div`,et,N(l(r)(`logDetails.rawMessage`)),1),I(`div`,tt,N(e.log.raw),1)]),I(`div`,nt,[I(`div`,rt,N(l(r)(`logDetails.serviceId`)),1),I(`div`,it,[I(`div`,at,[I(`span`,null,N(e.log.processId),1),x(l(F),{label:l(r)(`logDetails.viewProcess`),icon:`pi pi-external-link`,size:`small`,outlined:``,onClick:p},null,8,[`label`])])])]),I(`div`,ot,[I(`div`,st,N(l(r)(`logDetails.pid`)),1),I(`div`,ct,N(d.value),1)]),f.value?(s(),D(`div`,lt,[I(`div`,ut,N(l(r)(`logDetails.cwd`)),1),I(`div`,dt,N(f.value),1)])):M(``,!0),I(`div`,ft,[I(`div`,pt,N(l(r)(`logDetails.timestamp`)),1),I(`div`,mt,N(c.value),1)]),e.log.stream?(s(),D(`div`,ht,[I(`div`,gt,N(l(r)(`logDetails.stream`)),1),I(`div`,_t,N(e.log.stream),1)])):M(``,!0),e.log.metadata&&Object.keys(e.log.metadata).length>0?(s(),D(`div`,vt,[I(`div`,yt,N(l(r)(`logDetails.metadata`)),1),I(`div`,bt,N(JSON.stringify(e.log.metadata,null,2)),1)])):M(``,!0)])):M(``,!0)]),_:1},8,[`visible`,`header`]))}}),[[`__scopeId`,`data-v-4e3f7abe`]]),St=500,Ct=5,wt=ie;function Tt(e){return e+Math.random()*e*.3}function Et(n,r){let i=t([]),a=t(!1),o=null,s=0,c=null,l=ge(()=>{s=0,a.value||S()}),u=[],d=null,f=t(0),p=t(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=[...i.value,...e];t.length>St&&(t=t.slice(t.length-St)),i.value=t}function b(){!n.value||!r.value||(a.value=!0,o=de.process.onLog.subscribe({agentId:n.value,processId:r.value},{onData(t){let n=t;if(s=0,e(`connected`),n.some(e=>e.__clearLogBuffer)){i.value=[],u=[];return}m+=n.length,u.push(...n),d===null&&(d=requestAnimationFrame(y))},onError(e){console.error(`[useLogStream] Subscription error:`,e.message),a.value=!1,o=null,x()}}))}function x(){if(s>=Ct){console.warn(`[useLogStream] Max retries (${Ct}) reached`),e(`disconnected`);return}e(`reconnecting`);let t=Tt(wt*2**s);s++,c=setTimeout(()=>{c=null,S()},t)}async function S(){if(!a.value&&!(!n.value||!r.value)){s=0;try{let t=await de.process.logs.query({agentId:n.value,processId:r.value});t.length>St&&(t=t.slice(t.length-St)),i.value=t,e(`connected`)}catch{}b()}}function ee(){c&&=(clearTimeout(c),null),d!==null&&(cancelAnimationFrame(d),d=null),u=[],v(),o&&=(o.unsubscribe(),null),a.value=!1,s=0,i.value=[]}return fe([n,r],([e,t],[n,r])=>{(e!==n||t!==r)&&(a.value&&ee(),S())}),w(()=>{l(),ee()}),{logs:i,isStreaming:a,start:S,stop:ee,receivedPerSec:f,flushedPerSec:p,startStats:_,stopStats:v}}var Dt={class:`service-terminal__toolbar`},Ot={class:`service-terminal__toolbar-left`},kt={key:0,class:`pid-option`},At={key:1,class:`pid-option`},jt={key:0,class:`pi pi-circle-fill pid-status-icon pid-status-icon--active`,style:{"margin-right":`0.5rem`}},Mt={key:1,class:`pi pi-circle-fill pid-status-icon pid-status-icon--stopped`,style:{"margin-right":`0.5rem`}},Nt={class:`pid-option`},Pt={key:0,class:`pi pi-list`,style:{"margin-right":`0.5rem`}},Ft=[`title`],It=[`title`],Lt={class:`service-terminal__toolbar-right`},Rt={class:`service-terminal__content`,"data-testid":`service-terminal-content`},zt={key:1,class:`service-terminal__shortcuts`},Bt={class:`service-terminal__command-input`},Vt={class:`service-terminal__bottom`},Ht=`runeya_command_history_`,Ut=50,Wt=C(H({__name:`ServiceTerminal`,props:{service:{},processes:{}},setup(e){let{t:n}=ne(),r=e,i=R(()=>r.processes.find(e=>e.state===`running`||e.state===`starting`)??r.processes[0]??null),a=R(()=>i.value?.agentId??``),o=R(()=>i.value?.id??``),c=ye(),{logs:u,isStreaming:d,start:f,stop:p,receivedPerSec:m,flushedPerSec:h,startStats:g,stopStats:v}=Et(a,o),y=t(!1);fe(y,e=>{e?g():v()});function b(e){e.ctrlKey&&e.shiftKey&&(e.key===`*`||e.key===`µ`)&&(e.preventDefault(),y.value=!y.value)}let S=R(()=>{let e=new Map;return u.value.forEach(t=>{if(t.pid!=null){let n=e.get(t.pid);if(n)n.lastSeen=new Date(Math.max(n.lastSeen.getTime(),new Date(t.timestamp).getTime())),n.logCount++;else{let n=r.processes.find(e=>e.pid===t.pid&&(e.state===`running`||e.state===`starting`));e.set(t.pid,{pid:t.pid,lastSeen:new Date(t.timestamp),logCount:1,isActive:!!n})}}}),Array.from(e.values()).sort((e,t)=>t.lastSeen.getTime()-e.lastSeen.getTime())}),ee=R(()=>Ae.value===`all`?u.value:u.value.filter(e=>e.pid===Ae.value)),C=R(()=>S.value.filter(e=>e.isActive).length),E=R(()=>{let e=[{label:n(`serviceTerminal.allProcesses`),value:`all`,badge:C.value>0?`${C.value} ${n(`serviceTerminal.active`)}`:void 0,isActive:void 0}];return S.value.forEach(({pid:t,logCount:n,isActive:r})=>{e.push({label:`PID: ${t}`,value:t,badge:`${n} logs`,isActive:r})}),e});R(()=>r.processes.filter(e=>e.state===`running`).length);async function te(){if(i.value)try{await de.process.clearLogBuffer.mutate({agentId:i.value.agentId,processId:i.value.id}),u.value=[]}catch(e){c.add({severity:`error`,summary:n(`serviceTerminal.error`),detail:e.message??n(`serviceTerminal.failedToClearLogs`),life:5e3})}}let ie=R(()=>r.service.shortcuts??[]),ae=t(new Set);async function oe(e){let t=i.value?.agentId??r.service.agentId,a=i.value?.id??r.service.id;if(!t){c.add({severity:`warn`,summary:n(`serviceTerminal.noAgent`),detail:n(`serviceTerminal.noAgentDesc`),life:3e3});return}if(ae.value.has(e.id)){try{await de.process.cancelShortcut.mutate({agentId:t,processId:a,shortcutId:e.id})}catch{}return}ae.value=new Set([...ae.value,e.id]);try{await de.process.executeShortcut.mutate({agentId:t,processId:a,shortcut:e})}catch(e){c.add({severity:`error`,summary:n(`serviceTerminal.shortcutFailed`),detail:e.message??n(`serviceTerminal.shortcutFailed`),life:5e3})}finally{let t=new Set(ae.value);t.delete(e.id),ae.value=t}}let A=t(``),j=t(new Set),se=R(()=>j.value.size>0),ce=t(null),ue=t([]),pe=t(-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(`,`),he=t([]);function ge(e){let t=e.query.toLowerCase().trim();if(!t||!A.value.trim()){he.value=[];return}let n=[...ue.value.slice().reverse(),...me],r=new Set;he.value=n.filter(e=>r.has(e)?!1:(r.add(e),e.toLowerCase().includes(t))).slice(0,10)}function _e(){try{let e=localStorage.getItem(Ht+r.service.id);e&&(ue.value=JSON.parse(e))}catch{ue.value=[]}}function L(){try{localStorage.setItem(Ht+r.service.id,JSON.stringify(ue.value))}catch{}}function z(e){ue.value[ue.value.length-1]!==e&&(ue.value=[...ue.value,e],ue.value.length>Ut&&(ue.value=ue.value.slice(-Ut)),L())}async function be(){let e=i.value?.agentId??r.service.agentId,t=i.value?.id??r.service.id;if(e)try{await de.process.cancelAdHocCommand.mutate({agentId:e,processId:t})}catch{}}async function xe(){if(!A.value.trim())return;let e=i.value?.agentId??r.service.agentId,t=i.value?.id??r.service.id;if(!e){c.add({severity:`warn`,summary:n(`serviceTerminal.noAgent`),detail:n(`serviceTerminal.noAgentDesc`),life:3e3});return}let a=ke(),o=A.value.trim();z(o),A.value=``,he.value=[],pe.value=-1,j.value=new Set([...j.value,a]);try{await de.process.executeAdHocCommand.mutate({agentId:e,processId:t,command:o,commandId:a})}catch(e){c.add({severity:`error`,summary:n(`serviceTerminal.commandFailed`),detail:e.message??n(`serviceTerminal.commandFailed`),life:5e3})}finally{let e=new Set(j.value);e.delete(a),j.value=e,_(()=>{document.querySelector(`.service-terminal__input`)?.focus()})}}function B(e){if(e.key===`Enter`&&!e.shiftKey){e.preventDefault(),xe();return}if(e.key===`ArrowUp`){if(e.preventDefault(),ue.value.length===0)return;pe.value===-1?pe.value=ue.value.length-1:pe.value>0&&pe.value--,A.value=ue.value[pe.value]||``}else if(e.key===`ArrowDown`){if(e.preventDefault(),pe.value===-1)return;pe.value<ue.value.length-1?(pe.value++,A.value=ue.value[pe.value]||``):(pe.value=-1,A.value=``)}}function Se(){if(u.value.length===0)return;let e=u.value.map(e=>`[${new Date(e.timestamp).toISOString()}] ${e.level.toUpperCase().padEnd(5)} ${e.message}`),t=new Blob([e.join(`
|
|
2
2
|
`)],{type:`text/plain`}),n=URL.createObjectURL(t),i=document.createElement(`a`);i.href=n,i.download=`${r.service.name}-${new Date().toISOString().slice(0,19).replaceAll(`:`,`-`)}.log`,document.body.appendChild(i),i.click(),document.body.removeChild(i),URL.revokeObjectURL(n)}let Ce=t(0),we=0,H=null,U=null;fe(i,e=>{if(!(e&&(e.state===`running`||e.state===`starting`))){H&&=(clearInterval(H),null),U=null,Ce.value=e?.uptime??0;return}let t=e.uptime??0;e.id!==U&&(H&&=(clearInterval(H),null),U=e.id,we=e.startedAt?new Date(e.startedAt).getTime():Date.now()-t,Ce.value=Date.now()-we,H=setInterval(()=>{Ce.value=Date.now()-we},1e3))},{immediate:!0});let Te=t(!0),Ee=t(null),De=t(!1),Ae=t(`all`),je=t(!1);function Me(){je.value=!je.value}T(()=>{_e(),i.value&&f(),window.addEventListener(`keydown`,b)}),w(()=>{p(),window.removeEventListener(`keydown`,b),H&&clearInterval(H)});function Ne(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 Pe(e){Ee.value=e,De.value=!0}function Fe(e){De.value=!1,c.add({severity:`info`,summary:`Process`,detail:`Process ID: ${e}`,life:3e3})}return(t,a)=>(s(),D(`div`,{class:le([`service-terminal`,{"service-terminal--fullscreen":je.value}]),"data-testid":`service-terminal`},[je.value?(s(),P(Oe,{key:0,service:e.service,processes:e.processes},null,8,[`service`,`processes`])):M(``,!0),I(`div`,Dt,[I(`div`,Ot,[x(l(F),{label:l(n)(`serviceTerminal.logs`),severity:Te.value?`primary`:`secondary`,text:``,size:`small`,onClick:a[0]||=e=>Te.value=!0},null,8,[`label`,`severity`]),x(l(re),{modelValue:Ae.value,"onUpdate:modelValue":a[1]||=e=>Ae.value=e,options:E.value,"option-label":`label`,"option-value":`value`,class:`service-terminal__pid-selector`},{value:k(e=>[e.value===`all`?(s(),D(`div`,kt,[a[5]||=I(`i`,{class:`pi pi-list`,style:{"margin-right":`0.5rem`}},null,-1),I(`span`,null,N(l(n)(`serviceTerminal.allProcesses`)),1),C.value>0?(s(),P(l(O),{key:0,value:`${C.value} ${l(n)(`serviceTerminal.active`)}`,severity:`secondary`,class:`pid-badge`},null,8,[`value`])):M(``,!0)])):(s(),D(`div`,At,[E.value.find(t=>t.value===e.value)?.isActive?(s(),D(`i`,jt)):(s(),D(`i`,Mt)),I(`span`,null,`PID: `+N(e.value),1)]))]),option:k(e=>[I(`div`,Nt,[e.option.value===`all`?(s(),D(`i`,Pt)):e.option.isActive?(s(),D(`i`,{key:1,class:`pi pi-circle-fill pid-status-icon pid-status-icon--active`,title:l(n)(`serviceTerminal.running`)},null,8,Ft)):(s(),D(`i`,{key:2,class:`pi pi-circle-fill pid-status-icon pid-status-icon--stopped`,title:l(n)(`serviceTerminal.stopped`)},null,8,It)),I(`span`,null,N(e.option.label),1),e.option.badge?(s(),P(l(O),{key:3,value:e.option.badge,severity:`secondary`,class:`pid-badge`},null,8,[`value`])):M(``,!0)])]),_:1},8,[`modelValue`,`options`])]),I(`div`,Lt,[x(l(F),{icon:je.value?`pi pi-window-minimize`:`pi pi-window-maximize`,text:``,rounded:``,size:`small`,title:je.value?l(n)(`serviceTerminal.exitFullscreen`):l(n)(`serviceTerminal.fullscreen`),onClick:Me},null,8,[`icon`,`title`]),x(l(F),{icon:`pi pi-download`,text:``,rounded:``,size:`small`,title:l(n)(`serviceTerminal.downloadLogs`),disabled:l(u).length===0,onClick:Se},null,8,[`title`,`disabled`]),x(l(F),{icon:`pi pi-trash`,text:``,rounded:``,size:`small`,title:l(n)(`serviceTerminal.clearLogs`),disabled:l(u).length===0,onClick:te},null,8,[`title`,`disabled`])])]),I(`div`,Rt,[x(Ge,{logs:ee.value,loading:!1,"received-per-sec":l(m),"flushed-per-sec":l(h),"show-stats":y.value,"service-label":r.service.label||r.service.name,onLogClick:Pe},null,8,[`logs`,`received-per-sec`,`flushed-per-sec`,`show-stats`,`service-label`])]),ie.value.length>0?(s(),D(`div`,zt,[(s(!0),D(V,null,ve(ie.value,e=>(s(),P(l(F),{key:e.id,label:e.label||e.command,"data-shortcut-id":e.id,class:`shortcut-badge`,icon:ae.value.has(e.id)?`pi pi-stop`:`pi pi-play`,size:`small`,outlined:!ae.value.has(e.id),severity:ae.value.has(e.id)?`danger`:void 0,onClick:t=>oe(e)},null,8,[`label`,`data-shortcut-id`,`icon`,`outlined`,`severity`,`onClick`]))),128))])):M(``,!0),I(`div`,Bt,[a[6]||=I(`span`,{class:`service-terminal__prompt`,"data-testid":`terminal-prompt`},`>`,-1),x(l(He),{ref_key:`adHocCommandInput`,ref:ce,modelValue:A.value,"onUpdate:modelValue":a[2]||=e=>A.value=e,suggestions:he.value,class:`service-terminal__autocomplete`,"input-class":`service-terminal__input`,placeholder:l(n)(`serviceTerminal.enterCommand`),"aria-label":l(n)(`serviceTerminal.enterCommand`),disabled:!(i.value?.agentId??r.service.agentId),"data-testid":`terminal-command-input`,onComplete:ge,onKeydown:B},null,8,[`modelValue`,`suggestions`,`placeholder`,`aria-label`,`disabled`]),x(l(F),{icon:se.value?`pi pi-stop`:`pi pi-play`,severity:se.value?`danger`:void 0,size:`small`,"data-testid":`terminal-run-btn`,disabled:!(i.value?.agentId??r.service.agentId)||!A.value.trim()&&!se.value,onClick:a[3]||=e=>se.value?be():xe()},null,8,[`icon`,`severity`,`disabled`])]),I(`div`,Vt,[i.value?(s(),P(l(O),{key:0,icon:`pi pi-server`,value:i.value.agentId.slice(0,8),severity:`secondary`,class:`service-terminal__pill`},null,8,[`value`])):M(``,!0),e.service.cwd?(s(),P(l(O),{key:1,icon:`pi pi-folder`,value:e.service.cwd,severity:`secondary`,class:`service-terminal__pill`},null,8,[`value`])):M(``,!0),i.value&&(i.value.state===`running`||i.value.state===`starting`)?(s(),P(l(O),{key:2,icon:`pi pi-clock`,value:Ne(Ce.value/1e3),severity:`secondary`,class:`service-terminal__pill`},null,8,[`value`])):M(``,!0)]),x(xt,{visible:De.value,"onUpdate:visible":a[4]||=e=>De.value=e,log:Ee.value,onViewProcess:Fe},null,8,[`visible`,`log`])],2))}}),[[`__scopeId`,`data-v-8ce2178d`]]),Gt=5,Kt=ie;function qt(e){return e+Math.random()*e*.3}function Jt(n,r){let i=t(null),a=t(!1),o=t(!1),s=null,c=0,l=null;async function u(){if(!a.value){o.value=!0;try{i.value=await de.process.metrics.query({agentId:n.value,processId:r.value})}catch(e){console.error(`Failed to fetch initial metrics:`,y(e))}finally{o.value=!1}d()}}function d(){a.value=!0,s=de.process.onMetrics.subscribe({agentId:n.value,processId:r.value},{onData(t){c=0,e(`connected`),i.value=t},onError(e){console.error(`Metrics stream error:`,e),a.value=!1,s=null,f()}})}function f(){if(c>=Gt){console.warn(`Metrics stream: max retries (${Gt}) reached, giving up`),e(`disconnected`);return}e(`reconnecting`);let t=qt(Kt*2**c);c++,l=setTimeout(()=>{l=null,d()},t)}function p(){l&&=(clearTimeout(l),null),s&&=(s.unsubscribe(),null),a.value=!1,c=0}return fe([n,r],([e,t],[n,r])=>{(e!==n||t!==r)&&a.value&&(p(),u())}),w(()=>{p()}),{metrics:i,isStreaming:a,isLoading:o,start:u,stop:p}}var Yt={class:`service-metrics`,"data-testid":`service-metrics`},Xt={key:1,class:`service-metrics__skeleton`},Zt={class:`metric-skeleton`},Qt={class:`metric-skeleton`},$t={key:2,class:`service-metrics__no-data`},en={key:1,class:`service-metrics__no-process`},tn=C(H({__name:`ServiceMetrics`,props:{service:{},processes:{}},setup(e){let t=e,n=R(()=>t.processes.find(e=>e.state===`running`||e.state===`starting`)??t.processes[0]??null),r=R(()=>n.value?.agentId??``),i=R(()=>n.value?.id??``),{t:a}=ne(),{metrics:o,isLoading:c,start:u,stop:d}=Jt(r,i);return T(()=>{n.value&&u()}),w(()=>{d()}),(e,t)=>(s(),D(`div`,Yt,[n.value?(s(),D(V,{key:0},[l(o)?(s(),P(We,{key:0,cpu:l(o).cpu,memory:l(o).memory},null,8,[`cpu`,`memory`])):l(c)?(s(),D(`div`,Xt,[I(`div`,Zt,[x(l(Ue),{width:`4rem`,height:`0.75rem`,class:`mb-2`}),x(l(Ue),{width:`3rem`,height:`1.75rem`,class:`mb-3`}),x(l(Ue),{width:`100%`,height:`6px`,"border-radius":`4px`})]),I(`div`,Qt,[x(l(Ue),{width:`4rem`,height:`0.75rem`,class:`mb-2`}),x(l(Ue),{width:`3rem`,height:`1.75rem`,class:`mb-3`}),x(l(Ue),{width:`6rem`,height:`0.65rem`})])])):(s(),D(`div`,$t,N(l(a)(`serviceMetrics.noData`)),1))],64)):(s(),D(`div`,en,[t[0]||=I(`i`,{class:`pi pi-info-circle`},null,-1),I(`span`,null,N(l(a)(`serviceMetrics.notRunning`)),1)]))]))}}),[[`__scopeId`,`data-v-94f5993b`]]),nn=`runeya:debug`,rn=t(localStorage.getItem(nn)===`true`);function an(){function e(){rn.value=!rn.value,localStorage.setItem(nn,String(rn.value))}return{isDebug:rn,toggle:e}}var on={class:`config-general`},sn={class:`config-card`},cn={class:`config-card__header`},ln={class:`config-card`},un={class:`config-card__header`},dn={class:`config-card__hint`},fn={class:`config-card`},pn={class:`config-card`},mn={class:`config-card__header`},hn={class:`config-card__hint`},gn={class:`config-card`},_n={class:`config-card__header`},vn={class:`config-card__hint`},yn={class:`config-card`},bn={class:`config-card__header`},xn={class:`config-card__hint`},Sn={class:`config-card`},Cn={class:`config-card__header`},wn={class:`config-card__hint`},Tn={class:`config-card`},En={class:`config-card__header`},Dn={class:`config-card__hint`},On={class:`config-card`},kn={class:`config-card__header`},An={class:`config-card__hint`},jn={class:`config-card__hint`},Mn={class:`config-card`},Nn={class:`config-card__header`},Pn={class:`config-card__hint`},Fn={class:`config-meta`},In={class:`config-card config-card--inline`},Ln={class:`config-card__header`},Rn={class:`config-card config-card--inline`},zn={class:`config-card__header`},Bn=150,Vn=C(H({__name:`ServiceConfigGeneral`,props:{service:{}},emits:[`save`],setup(e,{emit:n}){let{t:r}=ne(),i=Se(),a=u(),o=t([]);function c(e){let t=e.query.trim().toLowerCase(),n=new Set(y.value.groups);o.value=_.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||y.value.ports.includes(String(e)))return;y.value.ports=[...y.value.ports,String(e)]}else{if(y.value.groups.includes(n))return;y.value.groups=[...y.value.groups,n]}E()}}function f(e){let t=e.target;d(`groups`,t.value),t.value=``,o.value=[]}function p(e,t){let n=e.target;!n||typeof n.value!=`string`||!n.value.trim()||setTimeout(()=>{d(t,n.value),n.value=``},Bn)}let m=e,h=n,g=R(()=>a.projects.find(e=>e.serviceIds.includes(m.service.id)&&(e.orgId??null)===(m.service.orgId??null))??null),_=R(()=>{let e=g.value;if(!e)return[];let t=new Set;for(let n of e.serviceIds)for(let e of i.getById(n)?.groups??[])t.add(e);return[...t].sort((e,t)=>e.localeCompare(t))});function v(e){return Object.entries(e??{}).map(([e,t])=>({key:e,value:t}))}let y=t({name:m.service.name,cwd:m.service.cwd??``,ports:(m.service.ports??[]).map(String),groups:[...m.service.groups??[]],description:m.service.description??``,docsPath:m.service.docsPath??``,url:m.service.url??``,openapiUrl:m.service.openapiUrl??``,gitRemote:m.service.git?.remote??``,gitHome:m.service.git?.home??``,autoRestart:m.service.autoRestart,clearLogsOnStart:m.service.clearLogsOnStart??!1}),b=t(v(m.service.meta));fe(()=>m.service,e=>{y.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},b.value=v(e.meta)});function S(){b.value=[...b.value,{key:``,value:``}]}function ee(e){b.value=b.value.filter((t,n)=>n!==e)}function C(e,t,n){b.value=b.value.map((r,i)=>i===e?{...r,[t]:n}:r)}function w(){let e={};for(let{key:t,value:n}of b.value){let r=t.trim();r&&(e[r]=n)}return{name:y.value.name,cwd:y.value.cwd||null,ports:y.value.ports.map(Number).filter(e=>e>0&&e<=65535),groups:y.value.groups,description:y.value.description,docsPath:y.value.docsPath??``,url:y.value.url,openapiUrl:y.value.openapiUrl,git:y.value.gitRemote||y.value.gitHome?{remote:y.value.gitRemote||void 0,home:y.value.gitHome||void 0}:null,autoRestart:y.value.autoRestart,clearLogsOnStart:y.value.clearLogsOnStart,meta:Object.keys(e).length>0?e:null}}let T=null;function E(){T&&clearTimeout(T),T=setTimeout(()=>{h(`save`,w()),T=null},150)}return(e,t)=>(s(),D(`div`,on,[I(`div`,sn,[I(`div`,cn,[t[14]||=I(`i`,{class:`pi pi-tag`},null,-1),I(`span`,null,N(l(r)(`serviceConfigGeneral.name`)),1)]),x(l(L),{modelValue:y.value.name,"onUpdate:modelValue":t[0]||=e=>y.value.name=e,class:`config-card__input`,onBlur:E,onKeydown:B(A(E,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])]),I(`div`,ln,[I(`div`,un,[t[15]||=I(`i`,{class:`pi pi-folder`},null,-1),I(`span`,null,N(l(r)(`serviceConfigGeneral.workingDirectory`)),1)]),x(l(L),{modelValue:y.value.cwd,"onUpdate:modelValue":t[1]||=e=>y.value.cwd=e,class:`config-card__input`,placeholder:`.`,onBlur:E,onKeydown:B(A(E,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`]),I(`small`,dn,N(l(r)(`serviceConfigGeneral.cwdHint`)),1)]),I(`div`,fn,[t[16]||=I(`div`,{class:`config-card__header`},[I(`i`,{class:`pi pi-file-edit`}),I(`span`,null,`Dossier de documentation (wiki)`)],-1),x(l(L),{modelValue:y.value.docsPath,"onUpdate:modelValue":t[2]||=e=>y.value.docsPath=e,class:`config-card__input`,placeholder:`(défaut : même que cwd)`,onBlur:E,onKeydown:B(A(E,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`]),t[17]||=I(`small`,{class:`config-card__hint`},[U(` Chemin relatif au cwd du service (ex. `),I(`code`,null,`docs`),U(`) ou absolu. Si vide, utilise le cwd. `)],-1)]),I(`div`,pn,[I(`div`,mn,[t[18]||=I(`i`,{class:`pi pi-globe`},null,-1),I(`span`,null,N(l(r)(`serviceConfigGeneral.ports`)),1)]),x(l(He),{modelValue:y.value.ports,"onUpdate:modelValue":t[3]||=e=>y.value.ports=e,multiple:``,typeahead:!1,class:`config-card__input`,placeholder:l(r)(`serviceConfigGeneral.portsPlaceholder`),onChange:E,onBlur:t[4]||=e=>p(e,`ports`)},null,8,[`modelValue`,`placeholder`]),I(`small`,hn,N(l(r)(`serviceConfigGeneral.portsHint`)),1)]),I(`div`,gn,[I(`div`,_n,[t[19]||=I(`i`,{class:`pi pi-th-large`},null,-1),I(`span`,null,N(l(r)(`serviceConfigGeneral.groups`)),1)]),x(l(He),{modelValue:y.value.groups,"onUpdate:modelValue":t[5]||=e=>y.value.groups=e,multiple:``,suggestions:o.value,"complete-on-focus":!0,class:`config-card__input`,placeholder:l(r)(`serviceConfigGeneral.groupsPlaceholder`),onComplete:c,onChange:E,onKeydown:B(f,[`enter`]),onBlur:t[6]||=e=>p(e,`groups`)},null,8,[`modelValue`,`suggestions`,`placeholder`]),I(`small`,vn,N(l(r)(`serviceConfigGeneral.groupsHint`)),1)]),I(`div`,yn,[I(`div`,bn,[t[20]||=I(`i`,{class:`pi pi-info-circle`},null,-1),I(`span`,null,N(l(r)(`serviceConfigGeneral.description`)),1)]),x(l(pe),{modelValue:y.value.description,"onUpdate:modelValue":t[7]||=e=>y.value.description=e,class:`config-card__input`,rows:2,onBlur:E},null,8,[`modelValue`]),I(`small`,xn,N(l(r)(`serviceConfigGeneral.descriptionHint`)),1)]),I(`div`,Sn,[I(`div`,Cn,[t[21]||=I(`i`,{class:`pi pi-external-link`},null,-1),I(`span`,null,N(l(r)(`serviceConfigGeneral.url`)),1)]),x(l(L),{modelValue:y.value.url,"onUpdate:modelValue":t[8]||=e=>y.value.url=e,class:`config-card__input`,placeholder:`https://...`,onBlur:E,onKeydown:B(A(E,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`]),I(`small`,wn,N(l(r)(`serviceConfigGeneral.urlHint`)),1)]),I(`div`,Tn,[I(`div`,En,[t[22]||=I(`i`,{class:`pi pi-book`},null,-1),I(`span`,null,N(l(r)(`serviceConfigGeneral.openapiUrl`)),1)]),x(l(L),{modelValue:y.value.openapiUrl,"onUpdate:modelValue":t[9]||=e=>y.value.openapiUrl=e,class:`config-card__input`,placeholder:`https://.../swagger.json`,onBlur:E,onKeydown:B(A(E,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`]),I(`small`,Dn,N(l(r)(`serviceConfigGeneral.openapiUrlHint`)),1)]),I(`div`,On,[I(`div`,kn,[t[23]||=I(`i`,{class:`pi pi-github`},null,-1),I(`span`,null,N(l(r)(`serviceConfigGeneral.git`)),1)]),x(l(L),{modelValue:y.value.gitRemote,"onUpdate:modelValue":t[10]||=e=>y.value.gitRemote=e,class:`config-card__input`,placeholder:`git@github.com:org/repo.git`,onBlur:E,onKeydown:B(A(E,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`]),I(`small`,An,N(l(r)(`serviceConfigGeneral.gitRemoteHint`)),1),x(l(L),{modelValue:y.value.gitHome,"onUpdate:modelValue":t[11]||=e=>y.value.gitHome=e,class:`config-card__input`,style:{"margin-top":`0.5rem`},placeholder:`https://github.com/org/repo`,onBlur:E,onKeydown:B(A(E,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`]),I(`small`,jn,N(l(r)(`serviceConfigGeneral.gitHomeHint`)),1)]),I(`div`,Mn,[I(`div`,Nn,[t[24]||=I(`i`,{class:`pi pi-hashtag`},null,-1),I(`span`,null,N(l(r)(`serviceConfigGeneral.meta`)),1)]),I(`small`,Pn,N(l(r)(`serviceConfigGeneral.metaHint`)),1),I(`div`,Fn,[(s(!0),D(V,null,ve(b.value,(e,t)=>(s(),D(`div`,{key:t,class:`config-meta__row`},[x(l(L),{"model-value":e.key,placeholder:l(r)(`serviceConfigGeneral.metaKeyPlaceholder`),class:`config-meta__input`,"onUpdate:modelValue":e=>C(t,`key`,e),onBlur:E,onKeydown:B(A(E,[`prevent`]),[`enter`])},null,8,[`model-value`,`placeholder`,`onUpdate:modelValue`,`onKeydown`]),x(l(L),{"model-value":e.value,placeholder:l(r)(`serviceConfigGeneral.metaValuePlaceholder`),class:`config-meta__input config-meta__input--wide`,"onUpdate:modelValue":e=>C(t,`value`,e),onBlur:E,onKeydown:B(A(E,[`prevent`]),[`enter`])},null,8,[`model-value`,`placeholder`,`onUpdate:modelValue`,`onKeydown`]),x(l(F),{icon:`pi pi-trash`,severity:`danger`,text:``,rounded:``,size:`small`,onClick:()=>{ee(t),E()}},null,8,[`onClick`])]))),128)),x(l(F),{label:l(r)(`serviceConfigGeneral.addEntry`),icon:`pi pi-plus`,severity:`secondary`,outlined:``,size:`small`,class:`config-meta__add`,onClick:S},null,8,[`label`])])]),I(`div`,In,[I(`div`,Ln,[t[25]||=I(`i`,{class:`pi pi-refresh`},null,-1),I(`span`,null,N(l(r)(`serviceConfigGeneral.autoRestart`)),1)]),x(l(Pe),{modelValue:y.value.autoRestart,"onUpdate:modelValue":t[12]||=e=>y.value.autoRestart=e,onChange:E},null,8,[`modelValue`])]),I(`div`,Rn,[I(`div`,zn,[t[26]||=I(`i`,{class:`pi pi-trash`},null,-1),I(`span`,null,N(l(r)(`serviceConfigGeneral.clearLogs`)),1)]),x(l(Pe),{modelValue:y.value.clearLogsOnStart,"onUpdate:modelValue":t[13]||=e=>y.value.clearLogsOnStart=e,onChange:E},null,8,[`modelValue`])])]))}}),[[`__scopeId`,`data-v-6fef6778`]]),Hn={class:`docker-config`},Un={class:`docker-config__section`},Wn={for:`docker-mode-image`,class:`docker-config__section-title`},Gn={class:`docker-config__mode-toggle`},Kn={class:`docker-config__mode-option`},qn={class:`docker-config__mode-option`},Jn={key:0,class:`docker-config__section`},Yn={for:`docker-image`,class:`docker-config__label`},Xn={class:`docker-config__section`},Zn={class:`docker-config__section`},Qn={for:`docker-build-context`,class:`docker-config__label`},$n={class:`docker-config__section`},er={for:`docker-add-build-arg`,class:`docker-config__label`},tr={class:`docker-config__kv-list`},nr={class:`docker-config__section`},rr={for:`docker-target-stage`,class:`docker-config__label`},ir={class:`docker-config__section`},ar={for:`docker-user`,class:`docker-config__section-title`},or={class:`docker-config__section`},sr={for:`docker-user`,class:`docker-config__label`},cr={class:`docker-config__section`},lr={for:`docker-network-mode`,class:`docker-config__label`},ur={key:2,class:`docker-config__section`},dr={for:`docker-add-port`,class:`docker-config__label`},fr={class:`docker-config__list`},pr={class:`docker-config__section`},mr={for:`docker-add-volume`,class:`docker-config__label`},hr={class:`docker-config__checkbox-row`},gr={for:`mountRootpath`,class:`docker-config__checkbox-label`},_r={class:`docker-config__list`},vr={class:`docker-config__section`},yr={class:`docker-config__checkbox-row`},br={for:`useNativeCommand`,class:`docker-config__checkbox-label`},xr={key:0,class:`docker-config__shell-row`},Sr={for:`docker-native-shell`,class:`docker-config__label`},Cr={class:`docker-config__hint`},wr={key:1,class:`docker-config__mode-toggle docker-config__mode-toggle--indented`},Tr={class:`docker-config__mode-option`},Er={class:`docker-config__mode-option`},Dr={class:`docker-config__section`},Or={for:`docker-entrypoint`,class:`docker-config__label`},kr={class:`docker-config__section`},Ar={for:`docker-command`,class:`docker-config__label`},jr={class:`docker-config__section`},Mr={for:`docker-add-bootstrap`,class:`docker-config__section-title`},Nr={class:`docker-config__hint-inline`},Pr={class:`docker-config__bootstrap-row`},Fr={class:`docker-config__bootstrap-field`},Ir=[`for`],Lr={class:`docker-config__bootstrap-field`},Rr=[`for`],zr={class:`docker-config__bootstrap-field docker-config__bootstrap-field--wide`},Br=[`for`],Vr={class:`docker-config__bootstrap-field`},Hr=[`for`],Ur={class:`docker-config__bootstrap-actions`},Wr={class:`docker-config__section`},Gr=C(H({__name:`ServiceConfigDocker`,props:{service:{}},emits:[`save`],setup(e,{emit:n}){let{t:a}=ne(),o=e,c=n,u=o.service.dockerConfig??{},d=t(u.dockerfile?`build`:`image`),f=t(u.image??``),p=t(u.dockerfile??``),m=t(u.buildContext??``),h=t(Object.entries(u.buildArgs??{}).map(([e,t])=>({key:e,value:t}))),g=t(u.targetStage??``),_=t(u.networkMode??`host`),v=t([...u.ports??[]]),y=t([...u.volumes??[]]),b=t(u.mountRootpath??!1),S=t(u.entrypoint??``),ee=t(u.command??``),C=t(u.user??``),w=t(u.useNativeCommand??!1),T=t(u.nativeCommandMode??`isolated`),E=t(u.nativeShell??`sh`),te=[{label:`sh (POSIX)`,value:`sh`},{label:`bash`,value:`bash`},{label:`zsh`,value:`zsh`},{label:`ash (Alpine)`,value:`ash`}],O=t([...u.bootstrapCommands??[]]),ie=t(!1),ae=[{label:`Host (--network host)`,value:`host`},{label:`Bridge`,value:`bridge`}];function oe(){h.value=[...h.value,{key:``,value:``}]}function j(e){h.value=h.value.filter((t,n)=>n!==e)}function se(e,t,n){h.value=h.value.map((r,i)=>i===e?{...r,[t]:n}:r)}function ce(){v.value=[...v.value,``]}function le(e){v.value=v.value.filter((t,n)=>n!==e)}function ue(e,t){v.value=v.value.map((n,r)=>r===e?t:n)}function P(){y.value=[...y.value,``]}function de(e){y.value=y.value.filter((t,n)=>n!==e)}function fe(e,t){y.value=y.value.map((n,r)=>r===e?t:n)}function pe(){O.value=[...O.value,{id:ke(),label:`Bootstrap`,entrypoint:`/bin/sh`,command:`-c ""`,user:void 0}]}function he(e){O.value=O.value.filter((t,n)=>n!==e)}function ge(e,t,n){O.value=O.value.map((r,i)=>i===e?{...r,[t]:n===``?void 0:n}:r)}function _e(e,t){let n=[...O.value],r=e+t;r<0||r>=n.length||([n[e],n[r]]=[n[r],n[e]],O.value=n)}let R=null;function z(){R&&clearTimeout(R),R=setTimeout(()=>{let e={};for(let{key:t,value:n}of h.value)t.trim()&&(e[t.trim()]=n);c(`save`,{image:d.value===`image`&&f.value||void 0,dockerfile:d.value===`build`&&p.value||void 0,buildContext:m.value||void 0,buildArgs:e,targetStage:g.value||void 0,networkMode:_.value,ports:v.value.filter(Boolean),volumes:y.value.filter(Boolean),mountRootpath:b.value,entrypoint:S.value||void 0,command:ee.value||void 0,user:C.value||void 0,useNativeCommand:w.value,nativeCommandMode:T.value,nativeShell:E.value,bootstrapCommands:O.value}),R=null},150)}function ye(e){he(e),z()}function xe(e,t){_e(e,t),z()}function Se(e){j(e),z()}function Ce(e){le(e),z()}function we(e){de(e),z()}return(e,t)=>(s(),D(`div`,Hn,[I(`div`,Un,[I(`label`,Wn,N(l(a)(`serviceConfigDocker.imageSource`)),1),I(`div`,Gn,[I(`label`,Kn,[me(I(`input`,{id:`docker-mode-image`,"onUpdate:modelValue":t[0]||=e=>d.value=e,type:`radio`,value:`image`,class:`docker-config__radio`,onChange:z},null,544),[[be,d.value]]),U(` `+N(l(a)(`serviceConfigDocker.pullImage`)),1)]),I(`label`,qn,[me(I(`input`,{"onUpdate:modelValue":t[1]||=e=>d.value=e,type:`radio`,value:`build`,class:`docker-config__radio`,onChange:z},null,544),[[be,d.value]]),U(` `+N(l(a)(`serviceConfigDocker.buildDockerfile`)),1)])])]),d.value===`image`?(s(),D(`div`,Jn,[I(`label`,Yn,N(l(a)(`serviceConfigDocker.image`)),1),x(l(L),{id:`docker-image`,modelValue:f.value,"onUpdate:modelValue":t[2]||=e=>f.value=e,placeholder:l(a)(`serviceConfigDocker.imagePlaceholder`),class:`docker-config__input`,onBlur:z,onKeydown:B(A(z,[`prevent`]),[`enter`])},null,8,[`modelValue`,`placeholder`,`onKeydown`])])):M(``,!0),d.value===`build`?(s(),D(V,{key:1},[I(`div`,Xn,[t[18]||=I(`label`,{for:`docker-dockerfile-btn`,class:`docker-config__label`},`Dockerfile`,-1),x(l(F),{id:`docker-dockerfile-btn`,label:l(a)(`serviceConfigDocker.editDockerfile`),icon:`pi pi-file-edit`,severity:`secondary`,outlined:``,size:`small`,onClick:t[3]||=e=>ie.value=!0},null,8,[`label`]),x(l(r),{visible:ie.value,"onUpdate:visible":t[6]||=e=>ie.value=e,header:l(a)(`serviceConfigDocker.editDockerfile`),modal:``,style:{width:`800px`}},{footer:k(()=>[x(l(F),{label:l(a)(`serviceConfigDocker.closeDockerfile`),icon:`pi pi-times`,onClick:t[5]||=()=>{ie.value=!1,z()}},null,8,[`label`])]),default:k(()=>[x(i,{modelValue:p.value,"onUpdate:modelValue":t[4]||=e=>p.value=e,language:`dockerfile`,style:{height:`400px`}},null,8,[`modelValue`])]),_:1},8,[`visible`,`header`])]),I(`div`,Zn,[I(`label`,Qn,N(l(a)(`serviceConfigDocker.buildContext`)),1),x(l(L),{id:`docker-build-context`,modelValue:m.value,"onUpdate:modelValue":t[7]||=e=>m.value=e,placeholder:`.`,class:`docker-config__input`,onBlur:z,onKeydown:B(A(z,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])]),I(`div`,$n,[I(`label`,er,N(l(a)(`serviceConfigDocker.buildArgs`)),1),I(`div`,tr,[(s(!0),D(V,null,ve(h.value,(e,t)=>(s(),D(`div`,{key:t,class:`docker-config__kv-row`},[x(l(L),{"model-value":e.key,placeholder:l(a)(`serviceConfigDocker.argNamePlaceholder`),class:`docker-config__kv-input`,"onUpdate:modelValue":e=>se(t,`key`,e),onBlur:z,onKeydown:B(A(z,[`prevent`]),[`enter`])},null,8,[`model-value`,`placeholder`,`onUpdate:modelValue`,`onKeydown`]),x(l(L),{"model-value":e.value,placeholder:l(a)(`serviceConfigDocker.argValuePlaceholder`),class:`docker-config__kv-input`,"onUpdate:modelValue":e=>se(t,`value`,e),onBlur:z,onKeydown:B(A(z,[`prevent`]),[`enter`])},null,8,[`model-value`,`placeholder`,`onUpdate:modelValue`,`onKeydown`]),x(l(F),{icon:`pi pi-trash`,severity:`danger`,text:``,rounded:``,size:`small`,onClick:e=>Se(t)},null,8,[`onClick`])]))),128)),x(l(F),{id:`docker-add-build-arg`,label:l(a)(`serviceConfigDocker.addBuildArg`),icon:`pi pi-plus`,severity:`secondary`,outlined:``,size:`small`,onClick:oe},null,8,[`label`])])]),I(`div`,nr,[I(`label`,rr,N(l(a)(`serviceConfigDocker.targetStage`)),1),x(l(L),{id:`docker-target-stage`,modelValue:g.value,"onUpdate:modelValue":t[8]||=e=>g.value=e,placeholder:l(a)(`serviceConfigDocker.targetStagePlaceholder`),class:`docker-config__input`,onBlur:z,onKeydown:B(A(z,[`prevent`]),[`enter`])},null,8,[`modelValue`,`placeholder`,`onKeydown`])])],64)):M(``,!0),x(l(Ke)),I(`div`,ir,[I(`label`,ar,N(l(a)(`serviceConfigDocker.runtimeConfig`)),1)]),I(`div`,or,[I(`label`,sr,N(l(a)(`serviceConfigDocker.userGroup`)),1),x(l(L),{id:`docker-user`,modelValue:C.value,"onUpdate:modelValue":t[9]||=e=>C.value=e,placeholder:l(a)(`serviceConfigDocker.userGroupHint`),class:`docker-config__input`,onBlur:z,onKeydown:B(A(z,[`prevent`]),[`enter`])},null,8,[`modelValue`,`placeholder`,`onKeydown`])]),I(`div`,cr,[I(`label`,lr,N(l(a)(`serviceConfigDocker.networkMode`)),1),x(l(re),{"input-id":`docker-network-mode`,modelValue:_.value,"onUpdate:modelValue":t[10]||=e=>_.value=e,options:ae,"option-label":`label`,"option-value":`value`,class:`docker-config__select`,onChange:z},null,8,[`modelValue`])]),_.value===`bridge`?(s(),D(`div`,ur,[I(`label`,dr,N(l(a)(`serviceConfigDocker.portMappings`)),1),I(`div`,fr,[(s(!0),D(V,null,ve(v.value,(e,t)=>(s(),D(`div`,{key:t,class:`docker-config__list-row`},[x(l(L),{"model-value":e,placeholder:l(a)(`serviceConfigDocker.portPlaceholder`),class:`docker-config__input`,"onUpdate:modelValue":e=>ue(t,e),onBlur:z,onKeydown:B(A(z,[`prevent`]),[`enter`])},null,8,[`model-value`,`placeholder`,`onUpdate:modelValue`,`onKeydown`]),x(l(F),{icon:`pi pi-trash`,severity:`danger`,text:``,rounded:``,size:`small`,onClick:e=>Ce(t)},null,8,[`onClick`])]))),128)),x(l(F),{id:`docker-add-port`,label:l(a)(`serviceConfigDocker.addPort`),icon:`pi pi-plus`,severity:`secondary`,outlined:``,size:`small`,onClick:ce},null,8,[`label`])])])):M(``,!0),I(`div`,pr,[I(`label`,mr,N(l(a)(`serviceConfigDocker.volumes`)),1),I(`div`,hr,[x(l(Ne),{modelValue:b.value,"onUpdate:modelValue":t[11]||=e=>b.value=e,binary:!0,"input-id":`mountRootpath`,onChange:z},null,8,[`modelValue`]),I(`label`,gr,N(l(a)(`serviceConfigDocker.autoMount`)),1)]),I(`div`,_r,[(s(!0),D(V,null,ve(y.value,(e,t)=>(s(),D(`div`,{key:t,class:`docker-config__list-row`},[x(l(L),{"model-value":e,placeholder:l(a)(`serviceConfigDocker.volumePlaceholder`),class:`docker-config__input`,"onUpdate:modelValue":e=>fe(t,e),onBlur:z,onKeydown:B(A(z,[`prevent`]),[`enter`])},null,8,[`model-value`,`placeholder`,`onUpdate:modelValue`,`onKeydown`]),x(l(F),{icon:`pi pi-trash`,severity:`danger`,text:``,rounded:``,size:`small`,onClick:e=>we(t)},null,8,[`onClick`])]))),128)),x(l(F),{id:`docker-add-volume`,label:l(a)(`serviceConfigDocker.addVolume`),icon:`pi pi-plus`,severity:`secondary`,outlined:``,size:`small`,onClick:P},null,8,[`label`])])]),x(l(Ke)),I(`div`,vr,[I(`div`,yr,[x(l(Ne),{modelValue:w.value,"onUpdate:modelValue":t[12]||=e=>w.value=e,binary:!0,"input-id":`useNativeCommand`,onChange:z},null,8,[`modelValue`]),I(`label`,br,N(l(a)(`serviceConfigDocker.runNative`)),1)]),t[21]||=I(`span`,{class:`docker-config__hint`},` When enabled, the service command is executed directly inside the container (ignores CMD override below). `,-1),w.value?(s(),D(`div`,xr,[I(`label`,Sr,N(l(a)(`serviceConfigDocker.shell`)),1),x(l(re),{"input-id":`docker-native-shell`,modelValue:E.value,"onUpdate:modelValue":t[13]||=e=>E.value=e,options:te,"option-label":`label`,"option-value":`value`,class:`docker-config__select docker-config__select--small`,editable:``,placeholder:l(a)(`serviceConfigDocker.shellPlaceholder`),onChange:z},null,8,[`modelValue`,`placeholder`]),I(`span`,Cr,[U(N(l(a)(`serviceConfigDocker.shellHint`))+` (`,1),t[19]||=I(`code`,null,`shell -c '...'`,-1),t[20]||=U(`)`,-1)])])):M(``,!0),w.value?(s(),D(`div`,wr,[I(`label`,Tr,[me(I(`input`,{"onUpdate:modelValue":t[14]||=e=>T.value=e,type:`radio`,value:`isolated`,class:`docker-config__radio`,onChange:z},null,544),[[be,T.value]]),U(` `+N(l(a)(`serviceConfigDocker.isolated`)),1)]),I(`label`,Er,[me(I(`input`,{"onUpdate:modelValue":t[15]||=e=>T.value=e,type:`radio`,value:`shared`,class:`docker-config__radio`,onChange:z},null,544),[[be,T.value]]),U(` `+N(l(a)(`serviceConfigDocker.shared`)),1)])])):M(``,!0)]),w.value?M(``,!0):(s(),D(V,{key:3},[t[22]||=I(`div`,{class:`docker-config__section`},[I(`label`,{for:`docker-entrypoint`,class:`docker-config__section-title`},`Override`)],-1),I(`div`,Dr,[I(`label`,Or,N(l(a)(`serviceConfigDocker.entrypoint`)),1),x(l(L),{id:`docker-entrypoint`,modelValue:S.value,"onUpdate:modelValue":t[16]||=e=>S.value=e,placeholder:l(a)(`serviceConfigDocker.entrypointPlaceholder`),class:`docker-config__input`,onBlur:z,onKeydown:B(A(z,[`prevent`]),[`enter`])},null,8,[`modelValue`,`placeholder`,`onKeydown`])]),I(`div`,kr,[I(`label`,Ar,N(l(a)(`serviceConfigDocker.cmdOverride`)),1),x(l(L),{id:`docker-command`,modelValue:ee.value,"onUpdate:modelValue":t[17]||=e=>ee.value=e,placeholder:l(a)(`serviceConfigDocker.cmdPlaceholder`),class:`docker-config__input`,onBlur:z,onKeydown:B(A(z,[`prevent`]),[`enter`])},null,8,[`modelValue`,`placeholder`,`onKeydown`])])],64)),x(l(Ke)),I(`div`,jr,[I(`label`,Mr,[U(N(l(a)(`serviceConfigDocker.bootstrapCommands`))+` `,1),I(`span`,Nr,` — `+N(l(a)(`serviceConfigDocker.bootstrapCommandsHint`)),1)])]),(s(!0),D(V,null,ve(O.value,(e,t)=>(s(),D(`div`,{key:e.id,class:`docker-config__bootstrap-card`},[I(`div`,Pr,[I(`div`,Fr,[I(`label`,{class:`docker-config__label`,for:`docker-bootstrap-label-${t}`},`Label`,8,Ir),x(l(L),{id:`docker-bootstrap-label-${t}`,"model-value":e.label,placeholder:l(a)(`serviceConfigDocker.bootstrapLabelPlaceholder`),class:`docker-config__input`,"onUpdate:modelValue":e=>ge(t,`label`,e),onBlur:z,onKeydown:B(A(z,[`prevent`]),[`enter`])},null,8,[`id`,`model-value`,`placeholder`,`onUpdate:modelValue`,`onKeydown`])]),I(`div`,Lr,[I(`label`,{class:`docker-config__label`,for:`docker-bootstrap-entrypoint-${t}`},`Entrypoint`,8,Rr),x(l(L),{id:`docker-bootstrap-entrypoint-${t}`,"model-value":e.entrypoint??``,placeholder:`/bin/sh`,class:`docker-config__input`,"onUpdate:modelValue":e=>ge(t,`entrypoint`,e),onBlur:z,onKeydown:B(A(z,[`prevent`]),[`enter`])},null,8,[`id`,`model-value`,`onUpdate:modelValue`,`onKeydown`])]),I(`div`,zr,[I(`label`,{class:`docker-config__label`,for:`docker-bootstrap-command-${t}`},`Command`,8,Br),x(l(L),{id:`docker-bootstrap-command-${t}`,"model-value":e.command,placeholder:`-c "npm install"`,class:`docker-config__input`,"onUpdate:modelValue":e=>ge(t,`command`,e),onBlur:z,onKeydown:B(A(z,[`prevent`]),[`enter`])},null,8,[`id`,`model-value`,`onUpdate:modelValue`,`onKeydown`])]),I(`div`,Vr,[I(`label`,{class:`docker-config__label`,for:`docker-bootstrap-user-${t}`},`User:Group`,8,Hr),x(l(L),{id:`docker-bootstrap-user-${t}`,"model-value":e.user??``,placeholder:l(a)(`serviceConfigDocker.userGroupHint`),class:`docker-config__input`,"onUpdate:modelValue":e=>ge(t,`user`,e),onBlur:z,onKeydown:B(A(z,[`prevent`]),[`enter`])},null,8,[`id`,`model-value`,`placeholder`,`onUpdate:modelValue`,`onKeydown`])]),I(`div`,Ur,[x(l(F),{icon:`pi pi-arrow-up`,text:``,rounded:``,size:`small`,disabled:t===0,onClick:e=>xe(t,-1)},null,8,[`disabled`,`onClick`]),x(l(F),{icon:`pi pi-arrow-down`,text:``,rounded:``,size:`small`,disabled:t===O.value.length-1,onClick:e=>xe(t,1)},null,8,[`disabled`,`onClick`]),x(l(F),{icon:`pi pi-times`,severity:`danger`,text:``,rounded:``,size:`small`,onClick:e=>ye(t)},null,8,[`onClick`])])])]))),128)),I(`div`,Wr,[x(l(F),{id:`docker-add-bootstrap`,label:l(a)(`serviceConfigDocker.addBootstrapCommand`),icon:`pi pi-plus`,severity:`secondary`,outlined:``,size:`small`,onClick:pe},null,8,[`label`])])]))}}),[[`__scopeId`,`data-v-91c13548`]]),Kr={class:`config-commands`},qr={class:`config-commands__execution`},Jr={class:`config-card config-card--execution`},Yr={class:`config-card__header`},Xr={class:`config-card__hint`},Zr={class:`config-card config-card--execution`},Qr={class:`config-card__header`},$r={key:0,class:`runner-option`},ei={class:`runner-option`},ti={class:`config-commands__tab-content`},ni={key:0,class:`config-commands__empty`},ri={class:`config-commands__row`},ii={class:`config-commands__field`},ai=[`for`],oi={class:`config-commands__field config-commands__field--wide`},si=[`for`],ci={class:`config-commands__field`},li=[`for`],ui={class:`config-commands__actions-cell`},di={class:`config-commands__footer`},fi={class:`config-commands__tab-content`},pi=`__inherit__`,mi=C(H({__name:`ServiceConfigCommands`,props:{service:{}},emits:[`save`,`dockerSave`],setup(e,{emit:n}){let r=e,i=n,{t:a}=ne(),o=v(),c=null,u=t({agentId:r.service.agentId??pi,runner:r.service.runner});fe(()=>r.service,e=>{u.value={agentId:e.agentId??pi,runner:e.runner}});let d=R(()=>[{label:a(`serviceConfigCommands.native`),value:`native`,icon:`pi pi-desktop`},{label:a(`serviceConfigCommands.docker`),value:`docker`,icon:`pi pi-box`}]),f=R(()=>d.value.find(e=>e.value===u.value.runner)?.icon??`pi pi-box`),p=R(()=>[{label:a(`serviceForm.agentInherit`),value:pi},...o.agents.map(e=>({label:`${e.config.name} (${e.status.connected?a(`serviceConfigCommands.online`):a(`serviceConfigCommands.offline`)})`,value:e.config.id}))]),m=t([...r.service.commands??[]]);fe(()=>r.service,e=>{c||(m.value=[...e.commands??[]])});function h(){m.value=[...m.value,{id:ke(),label:``,command:``,cwd:void 0,shell:!0}]}function g(e){m.value=m.value.filter((t,n)=>n!==e)}function _(e,t,n){m.value=m.value.map((r,i)=>i===e?{...r,[t]:n===``?void 0:n}:r)}function y(){c&&clearTimeout(c),c=setTimeout(()=>{i(`save`,{agentId:u.value.agentId===pi?null:u.value.agentId||null,runner:u.value.runner,commands:m.value}),c=null},150)}function b(e){i(`dockerSave`,e)}function S(e){g(e),y()}return(t,n)=>(s(),D(`div`,Kr,[I(`div`,qr,[I(`div`,Jr,[I(`div`,Yr,[n[2]||=I(`i`,{class:`pi pi-server`},null,-1),I(`span`,null,N(l(a)(`serviceConfigCommands.agent`)),1)]),x(l(re),{modelValue:u.value.agentId,"onUpdate:modelValue":n[0]||=e=>u.value.agentId=e,options:p.value,"option-label":`label`,"option-value":`value`,class:`config-card__input`,onChange:y},null,8,[`modelValue`,`options`]),I(`small`,Xr,N(l(a)(`serviceForm.agentHintEdit`)),1)]),I(`div`,Zr,[I(`div`,Qr,[I(`i`,{class:le(f.value)},null,2),I(`span`,null,N(l(a)(`serviceConfigCommands.runner`)),1)]),x(l(re),{modelValue:u.value.runner,"onUpdate:modelValue":n[1]||=e=>u.value.runner=e,options:d.value,"option-label":`label`,"option-value":`value`,class:`config-card__input`,onChange:y},{value:k(e=>[e.value?(s(),D(`div`,$r,[I(`i`,{class:le(d.value.find(t=>t.value===e.value)?.icon)},null,2),I(`span`,null,N(d.value.find(t=>t.value===e.value)?.label),1)])):M(``,!0)]),option:k(e=>[I(`div`,ei,[I(`i`,{class:le(e.option.icon)},null,2),I(`span`,null,N(e.option.label),1)])]),_:1},8,[`modelValue`,`options`])])]),x(l(Le),{value:`0`},{default:k(()=>[x(l(Fe),null,{default:k(()=>[x(l(Re),{value:`0`},{default:k(()=>[n[3]||=I(`i`,{class:`pi pi-desktop tab-icon`},null,-1),I(`span`,null,N(l(a)(`serviceConfigCommands.native`)),1)]),_:1}),x(l(Re),{value:`1`},{default:k(()=>[n[4]||=I(`i`,{class:`pi pi-box tab-icon`},null,-1),I(`span`,null,N(l(a)(`serviceConfigCommands.docker`)),1)]),_:1})]),_:1}),x(l(Ie),null,{default:k(()=>[x(l(ze),{value:`0`},{default:k(()=>[I(`div`,ti,[m.value.length===0?(s(),D(`div`,ni,[I(`p`,null,N(l(a)(`serviceConfigCommands.noCommands`)),1)])):M(``,!0),(s(!0),D(V,null,ve(m.value,(e,t)=>(s(),D(`div`,{key:e.id,class:`config-card`},[I(`div`,ri,[I(`div`,ii,[I(`label`,{class:`config-commands__label`,for:`cmd-label-${t}`},N(l(a)(`serviceConfigCommands.labelPlaceholder`)),9,ai),x(l(L),{id:`cmd-label-${t}`,"model-value":e.label,placeholder:l(a)(`serviceConfigCommands.labelPlaceholder`),class:`config-card__input`,"onUpdate:modelValue":e=>_(t,`label`,e),onBlur:y,onKeydown:B(A(y,[`prevent`]),[`enter`])},null,8,[`id`,`model-value`,`placeholder`,`onUpdate:modelValue`,`onKeydown`])]),I(`div`,oi,[I(`label`,{class:`config-commands__label`,for:`cmd-command-${t}`},N(l(a)(`serviceConfigCommands.commandPlaceholder`)),9,si),x(l(L),{id:`cmd-command-${t}`,"model-value":e.command,placeholder:`e.g. npm start`,class:`config-card__input`,"onUpdate:modelValue":e=>_(t,`command`,e),onBlur:y,onKeydown:B(A(y,[`prevent`]),[`enter`])},null,8,[`id`,`model-value`,`onUpdate:modelValue`,`onKeydown`])]),I(`div`,ci,[I(`label`,{class:`config-commands__label`,for:`cmd-cwd-${t}`},`Working Dir (optional)`,8,li),x(l(L),{id:`cmd-cwd-${t}`,"model-value":e.cwd??``,placeholder:l(a)(`serviceConfigCommands.cwdPlaceholder`),class:`config-card__input`,"onUpdate:modelValue":e=>_(t,`cwd`,e),onBlur:y,onKeydown:B(A(y,[`prevent`]),[`enter`])},null,8,[`id`,`model-value`,`placeholder`,`onUpdate:modelValue`,`onKeydown`])]),I(`div`,ui,[x(l(F),{icon:`pi pi-trash`,severity:`danger`,text:``,rounded:``,size:`small`,onClick:e=>S(t)},null,8,[`onClick`])])])]))),128)),I(`div`,di,[x(l(F),{label:l(a)(`serviceConfigCommands.addCommand`),icon:`pi pi-plus`,severity:`secondary`,outlined:``,size:`small`,onClick:h},null,8,[`label`])])])]),_:1}),x(l(ze),{value:`1`},{default:k(()=>[I(`div`,fi,[x(Gr,{service:e.service,onSave:b},null,8,[`service`])])]),_:1})]),_:1})]),_:1})]))}}),[[`__scopeId`,`data-v-df297a71`]]),hi={class:`config-env`,"data-testid":`config-env`},gi={key:0,class:`active-env-display`},_i={class:`active-env-label`},vi={key:1,class:`inheritance-toggle`},yi={class:`inheritance-label`},bi={class:`inherited-header`},xi={class:`inherited-row-key`},Si={class:`preview-key`},Ci={class:`value-row`},wi=[`onClick`],Ti=[`onClick`],Ei={key:0,class:`secret-mask`},Di={key:1,class:`preview-value`},Oi={class:`config-env__header`},ki={class:`config-env__title`},Ai={class:`config-env__actions`},ji={key:3,class:`variables-view`},Mi={key:0},Ni={key:1,class:`empty-state`},Pi={class:`inherited-header`},Fi={class:`passthrough-info`},Ii={class:`preview-key`},Li={key:0,class:`preview-value`},Ri={key:1,class:`passthrough-undefined`},zi={key:4,class:`empty-state`},Bi={key:5,class:`empty-state`},Vi={class:`editor-container`},Hi={key:0,class:`editor-env-banner`},Ui={class:`editor-env-text`},Wi={class:`editor-section`,"data-testid":`variables-editor`},Gi={key:0,class:`loading-container`},Ki={key:1,class:`preview-container`},qi={class:`preview-info`},Ji={class:`preview-key`},Yi={class:`value-row`},Xi=[`onClick`],Zi=[`onClick`],Qi={key:0,class:`secret-mask`},$i={key:1,class:`preview-value`},ea=C(H({__name:`ServiceConfigEnv`,props:{service:{},projectId:{},activeEnvironmentId:{}},setup(e){let n=e,{t:i}=ne(),a=ye(),c=p(),h=m(),g=u(),_=te(),y=v(),b=oe(),S=Se(),{urlHost:ee}=De(()=>V.value?.config.id),C=R(()=>g.getByRef({id:n.projectId,orgId:_.activeOrgId})?.activeEnvironmentId??null),w=R(()=>h.findServiceEnvironment(n.service.id,C.value??``)),E=t(!1),re=t(!1),ie=t(!1),ae=t(!1),j=t(null),se=t(null),pe=t([]),me=t({}),ge=t(new Set);function L(e){let t=new Set(ge.value);t.has(e)?t.delete(e):t.add(e),ge.value=t}let ve=t(null);function be(e,t){navigator.clipboard.writeText(t),ve.value=e,setTimeout(()=>{ve.value===e&&(ve.value=null)},1500)}let xe=t({}),B=t(!1),V=R(()=>{let e=n.service.agentId??Le.value?.agentId;return e?y.getById(e):y.agents.find(e=>e.isLocal)??null}),H=R(()=>{let e={};for(let t of _e)e[t.name]=``;Object.assign(e,we(n.service.ports)),e[`service.NAME`]=n.service.name,e[`service.ID`]=n.service.id,Object.assign(e,ue(n.service,ee.value)),n.service.url&&(e[`service.BASE_URL`]=n.service.url);let t=V.value?.status;t?.lanIp&&(e[`agent.HOST_LAN`]=t.lanIp),t?.os&&(e[`agent.OS`]=t.os),t?.home&&(e[`agent.HOME`]=t.home),V.value&&(e[`agent.NAME`]=V.value.config.name);let r=Te(t?.cwd,t?.home);r&&(e[`service.CWD`]=r);let i=g.getByRef({id:n.projectId,orgId:_.activeOrgId});i&&(e[`project.NAME`]=i.name);let a=C.value?h.getById(C.value):null;a&&(e[`runeya.ENV_NAME`]=a.name);for(let t of Ee.value)Object.assign(e,he({name:t.name,id:t.id,ports:t.ports,localUrls:t.localUrls,url:t.url},ee.value));return e});function Te(e,t){let r=(n.service.resolvedCwd??n.service.cwd??``).trim();return r?r.startsWith(`~/`)&&t?t+r.slice(1):r.includes(`$`)?null:r.startsWith(`/`)||/^[A-Za-z]:[\\/]/.test(r)?r:null:e??null}let Ee=R(()=>{let e=g.getByRef({id:n.projectId,orgId:_.activeOrgId});if(!e)return[];let t=e.serviceIds.filter(e=>e!==n.service.id).map(e=>S.getById(e)).filter(e=>!!e),r=new Map;for(let e of t){let t=ce(e.name);t&&r.set(t,(r.get(t)??0)+1)}return t.filter(e=>(r.get(ce(e.name))??0)===1)}),Oe=R(()=>V.value?.config.passthroughEnv??[]),ke=R(()=>Oe.value.length>0);async function Me(){if(!n.service.agentId||!ke.value){xe.value={};return}B.value=!0;try{xe.value=await de.agent.getPassthroughEnv.query({id:n.service.agentId})}catch{xe.value={}}finally{B.value=!1}}let Ne=R(()=>Oe.value.map(e=>({name:e,value:xe.value[e]??null}))),Fe=R(()=>!w.value||!C.value?!0:w.value.parentIds?.includes(C.value)??!0);async function Ie(e){if(!(!w.value||!C.value)){ae.value=!0;try{await h.update({id:w.value.id,parentIds:e?[C.value]:[]}),await Ge()}catch(e){a.add({severity:`error`,summary:i(`serviceConfigEnv.error`),detail:e.message??i(`serviceConfigEnv.failedToUpdateInheritance`),life:5e3})}finally{ae.value=!1}}}let Le=R(()=>{let e=g.getByRef({id:n.projectId,orgId:_.activeOrgId});return e?.activeEnvironmentId?h.getById(e.activeEnvironmentId):null});function Re(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 ze=R(()=>j.value?Re(j.value.variables):[]),He=R(()=>{if(!w.value||!j.value?.sources)return ze.value;let e=w.value.id;return ze.value.filter(t=>j.value.sources[t.variableId]?.environmentId===e)}),Ue=R(()=>{if(!w.value||!j.value?.sources)return[];let e=w.value.id;return ze.value.filter(t=>j.value.sources[t.variableId]?.environmentId!==e)}),We=R(()=>{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 Ge(){if(w.value)try{j.value=await h.resolve(w.value.id)}catch(e){console.error(`Failed to resolve environment:`,e)}}async function Ke(){if(C.value)try{se.value=await h.resolve(C.value)}catch{}}async function qe(e){let t=e.toLowerCase(),n=se.value??j.value;if(!n)return;let r=n.variables,i=Object.keys(n.env).filter(e=>e.toLowerCase().includes(t));pe.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??``})}me.value=a}async function Je(){ie.value=!0;try{await Ze(),await Ge(),re.value=!0}catch(e){a.add({severity:`error`,summary:i(`serviceConfigEnv.error`),detail:e.message??i(`serviceConfigEnv.failedToLoadPreview`),life:5e3})}finally{ie.value=!1}}let Ye=R(()=>j.value?Object.entries(j.value.env).map(([e,t])=>({key:e,value:Object.entries(H.value).reduce((e,[t,n])=>e.replaceAll(`{{${t}}}`,n),t)})):[]);function Xe(e,t){return t?`***`:e.length>50?e.substring(0,47)+`...`:e}async function Ze(){if(w.value)return w.value;if(!C.value)return null;let e=Le.value;return e?(await h.create({name:`${n.service.name??n.service.id} — ${e.name}`,projectId:n.projectId,scope:`service`,reference:n.service.id,activateOn:C.value,parentIds:[C.value],variables:{}}),w.value):null}let Qe=R(()=>{let e=b.getByService(n.service.id);return e.length>0?e[0]:null}),$e=R(()=>{let e=Qe.value?.state;return e===`running`||e===`errored`});async function et(){await Ze(),E.value=!0,await Promise.all([Ge(),Ke()])}function tt(){if(E.value=!1,!$e.value||!Qe.value)return;let e=Qe.value.state===`running`?`restart`:`start`,t=n.service.name||n.service.id;c.require({message:i(e===`restart`?`serviceConfigEnv.restartConfirmMsg`:`serviceConfigEnv.startConfirmMsg`,{name:t}),header:i(e===`restart`?`serviceConfigEnv.restartTitle`:`serviceConfigEnv.startTitle`),icon:`pi pi-refresh`,acceptLabel:i(e===`restart`?`serviceConfigEnv.restartTitle`:`actions.start`),rejectLabel:i(`serviceConfigEnv.notNow`),accept:async()=>{try{let t=n.service.agentId;if(!t)return;e===`restart`?(await b.restart(t,n.service.id),a.add({severity:`success`,summary:i(`serviceConfigEnv.serviceRestarted`),life:3e3})):(await b.start(t,n.service.id),a.add({severity:`success`,summary:i(`serviceConfigEnv.serviceStarted`),life:3e3}))}catch(t){a.add({severity:`error`,summary:i(`serviceConfigEnv.error`),detail:t.message??i(`serviceConfigEnv.failedToAction`,{action:e}),life:5e3})}}})}return fe(Le,async e=>{e&&await Promise.all([Ge(),Ke()])}),fe(()=>n.service.agentId,()=>{Me()}),T(async()=>{n.projectId&&await h.fetchAll(n.projectId),await Promise.all([Ge(),Ke(),Me()])}),(t,n)=>(s(),D(`div`,hi,[C.value?(s(),D(`div`,gi,[I(`span`,_i,N(l(i)(`serviceConfigEnv.activeEnvironment`)),1),x(Be,{"environment-id":C.value},null,8,[`environment-id`])])):M(``,!0),w.value&&Le.value?(s(),D(`div`,vi,[x(l(Pe),{"model-value":Fe.value,disabled:ae.value,"onUpdate:modelValue":Ie},null,8,[`model-value`,`disabled`]),I(`span`,yi,N(Fe.value?l(i)(`serviceConfigEnv.inheritsFrom`,{name:Le.value.name}):l(i)(`serviceConfigEnv.isolated`,{name:Le.value.name})),1)])):M(``,!0),Ue.value.length>0?(s(),P(l(o),{key:2,class:`inherited-accordion`},{default:k(()=>[x(l(f),{value:`inherited`},{default:k(()=>[x(l(z),null,{default:k(()=>[I(`span`,bi,[n[6]||=I(`i`,{class:`pi pi-arrow-down-left`},null,-1),U(` `+N(l(i)(`serviceConfigEnv.inheritedVars`))+` `,1),x(l(O),{value:String(Ue.value.length),severity:`secondary`,rounded:``},null,8,[`value`])])]),_:1}),x(l(d),null,{default:k(()=>[x(l(Ae),{value:Ue.value,size:`small`,"show-headers":!1},{default:k(()=>[x(l(je),{style:{width:`35%`}},{body:k(({data:e})=>[I(`div`,xi,[I(`code`,Si,N(e.key),1),We.value[e.variableId]?(s(),P(Be,{key:0,"environment-id":We.value[e.variableId].environmentId,class:`source-badge`},null,8,[`environment-id`])):M(``,!0)])]),_:1}),x(l(je),{style:{width:`65%`}},{body:k(({data:e})=>[I(`span`,Ci,[I(`span`,{class:`value-actions`,onClick:n[0]||=A(()=>{},[`stop`])},[e.slot.isSecret?(s(),D(`i`,{key:0,class:le([ge.value.has(e.variableId)?`pi pi-eye-slash`:`pi pi-eye`,`action-icon`]),onClick:t=>L(e.variableId)},null,10,wi)):M(``,!0),I(`i`,{class:le([ve.value===e.variableId?`pi pi-check`:`pi pi-copy`,`action-icon`]),onClick:t=>be(e.variableId,e.slot.pre+e.slot.value+e.slot.post)},null,10,Ti)]),e.slot.isSecret&&!ge.value.has(e.variableId)?(s(),D(`span`,Ei,`***`)):(s(),D(`code`,Di,N(e.slot.pre)+N(e.slot.value)+N(e.slot.post),1))])]),_:1})]),_:1},8,[`value`])]),_:1})]),_:1})]),_:1})):M(``,!0),I(`div`,Oi,[I(`h3`,ki,N(l(i)(`serviceConfigEnv.envVars`)),1),I(`div`,Ai,[x(l(F),{label:l(i)(`serviceConfigEnv.editVariables`),icon:`pi pi-pencil`,size:`small`,outlined:``,"data-testid":`env-edit-btn`,disabled:!C.value,onClick:et},null,8,[`label`,`disabled`]),x(l(F),{label:l(i)(`serviceConfigEnv.preview`),icon:`pi pi-eye`,size:`small`,outlined:``,severity:`secondary`,loading:ie.value,disabled:!C.value,"data-testid":`env-preview-btn`,onClick:Je},null,8,[`label`,`loading`,`disabled`])])]),w.value?(s(),D(`div`,ji,[He.value.length>0?(s(),D(`div`,Mi,[x(Ve,{"environment-id":w.value.id,sources:We.value,"resolved-env":{...se.value?.env??{},...j.value?.env??{}},"service-builtins":H.value,editable:!1,"show-overrides":!0,"show-override-badge":!0,"show-delete":!1,"show-add-button":!1,onVariablesChanged:Ge},null,8,[`environment-id`,`sources`,`resolved-env`,`service-builtins`])])):(s(),D(`div`,Ni,[I(`p`,null,N(l(i)(`serviceConfigEnv.noVarsConfigured`)),1)])),ke.value?(s(),P(l(o),{key:2,class:`inherited-accordion`},{default:k(()=>[x(l(f),{value:`passthrough`},{default:k(()=>[x(l(z),null,{default:k(()=>[I(`span`,Pi,[n[7]||=I(`i`,{class:`pi pi-globe`},null,-1),U(` `+N(l(i)(`agentPage.passthrough.titleShort`))+` `,1),x(l(O),{value:String(Oe.value.length),severity:`secondary`,rounded:``},null,8,[`value`])])]),_:1}),x(l(d),null,{default:k(()=>[I(`p`,Fi,N(l(i)(`serviceConfigEnv.passthroughInfo`)),1),B.value?(s(),P(l(Ce),{key:0,style:{width:`24px`,height:`24px`}})):(s(),P(l(Ae),{key:1,value:Ne.value,stripedRows:``,size:`small`},{default:k(()=>[x(l(je),{field:`name`,header:l(i)(`common.key`),style:{width:`35%`}},{body:k(({data:e})=>[I(`code`,Ii,N(e.name),1)]),_:1},8,[`header`]),x(l(je),{header:l(i)(`common.value`),style:{width:`65%`}},{body:k(({data:e})=>[e.value===null?(s(),D(`span`,Ri,N(l(i)(`serviceConfigEnv.undefined`)),1)):(s(),D(`span`,Li,N(e.value),1))]),_:1},8,[`header`])]),_:1},8,[`value`]))]),_:1})]),_:1})]),_:1})):M(``,!0)])):C.value?(s(),D(`div`,Bi,[I(`p`,null,N(l(i)(`serviceConfigEnv.noVarsConfigured`)),1)])):(s(),D(`div`,zi,[I(`p`,null,N(l(i)(`serviceConfigEnv.noActiveEnv`)),1)])),x(l(r),{visible:E.value,header:l(i)(`serviceConfigEnv.editVarsHeader`),style:{width:`900px`},modal:``,"onUpdate:visible":n[2]||=e=>{e||tt()}},{footer:k(()=>[x(l(F),{label:l(i)(`actions.close`),icon:`pi pi-times`,onClick:n[1]||=e=>tt()},null,8,[`label`])]),default:k(()=>[I(`div`,Vi,[C.value?(s(),D(`div`,Hi,[I(`span`,Ui,N(l(i)(`serviceConfigEnv.editingVarsFor`,{name:e.service.name||e.service.id})),1),x(Be,{"environment-id":C.value},null,8,[`environment-id`])])):M(``,!0),I(`div`,Wi,[w.value?(s(),P(Ve,{key:0,"environment-id":w.value.id,editable:!0,sources:We.value,"autocomplete-enabled":!0,"autocomplete-suggestions":pe.value,"autocomplete-meta":me.value,"resolved-env":{...se.value?.env??{},...j.value?.env??{}},"service-builtins":H.value,"show-overrides":!0,onVariablesChanged:Ge,"show-delete":!0,"show-add-button":!0,onAutocompleteSearch:qe},null,8,[`environment-id`,`sources`,`autocomplete-suggestions`,`autocomplete-meta`,`resolved-env`,`service-builtins`])):M(``,!0)])])]),_:1},8,[`visible`,`header`]),x(l(r),{visible:re.value,"onUpdate:visible":n[5]||=e=>re.value=e,header:l(i)(`serviceConfigEnv.previewHeader`),style:{width:`700px`},modal:``,"data-testid":`env-preview-dialog`},{footer:k(()=>[x(l(F),{label:l(i)(`actions.close`),icon:`pi pi-times`,onClick:n[4]||=e=>re.value=!1},null,8,[`label`])]),default:k(()=>[ie.value?(s(),D(`div`,Gi,[x(l(Ce))])):j.value?(s(),D(`div`,Ki,[I(`p`,qi,N(l(i)(`serviceConfigEnv.injectedVarsInfo`)),1),x(l(Ae),{value:Ye.value,stripedRows:``,size:`small`,rows:15,paginator:Ye.value.length>15},{default:k(()=>[x(l(je),{field:`key`,header:l(i)(`common.key`),style:{width:`35%`}},{body:k(({data:e})=>[I(`code`,Ji,N(e.key),1)]),_:1},8,[`header`]),x(l(je),{header:l(i)(`common.value`),style:{width:`65%`}},{body:k(({data:e})=>[I(`span`,Yi,[I(`span`,{class:`value-actions`,onClick:n[3]||=A(()=>{},[`stop`])},[j.value.envSecrets.includes(e.key)?(s(),D(`i`,{key:0,class:le([ge.value.has(`preview:`+e.key)?`pi pi-eye-slash`:`pi pi-eye`,`action-icon`]),onClick:t=>L(`preview:`+e.key)},null,10,Xi)):M(``,!0),I(`i`,{class:le([ve.value===`preview:`+e.key?`pi pi-check`:`pi pi-copy`,`action-icon`]),onClick:t=>be(`preview:`+e.key,e.value)},null,10,Zi)]),j.value.envSecrets.includes(e.key)&&!ge.value.has(`preview:`+e.key)?(s(),D(`span`,Qi,`***`)):(s(),D(`span`,$i,N(Xe(e.value,!1)),1))])]),_:1},8,[`header`])]),_:1},8,[`value`,`paginator`])])):M(``,!0)]),_:1},8,[`visible`,`header`])]))}}),[[`__scopeId`,`data-v-8ebbf924`]]),ta={class:`config-health`},na={class:`config-card config-card--inline`},ra={class:`config-card__header`},ia={class:`config-card`},aa={class:`config-card__header`},oa={class:`config-card`},sa={class:`config-card__header`},ca={class:`config-card`},la={class:`config-card__header`},ua={class:`config-card`},da={class:`config-card__header`},fa={key:1,class:`config-card`},pa={class:`config-card__header`},ma={class:`config-card__hint`},ha={class:`config-card`},ga={class:`config-card__header`},_a={class:`config-card`},va={class:`config-card__header`},ya={class:`config-card`},ba={class:`config-card__header`},xa={class:`config-card`},Sa={class:`config-card__header`},Ca=C(H({__name:`ServiceConfigHealthCheck`,props:{service:{}},emits:[`save`],setup(e,{emit:n}){let r=e,i=n,{t:a}=ne(),o=t(!!r.service.healthCheck),c=t({type:r.service.healthCheck?.type??`http`,path:r.service.healthCheck?.path??`/health`,interval:r.service.healthCheck?.interval??3e4,timeout:r.service.healthCheck?.timeout??5e3,retries:r.service.healthCheck?.retries??3,method:r.service.healthCheck?.method??`GET`,expectedStatus:r.service.healthCheck?.expectedStatus??200,initialDelay:r.service.healthCheck?.initialDelay??5e3,command:r.service.healthCheck?.command??``}),u=[{label:`HTTP Request`,value:`http`},{label:`Command`,value:`command`}],d=[{label:`GET`,value:`GET`},{label:`HEAD`,value:`HEAD`},{label:`POST`,value:`POST`},{label:`PUT`,value:`PUT`}];fe(()=>r.service,e=>{o.value=!!e.healthCheck,c.value={type:e.healthCheck?.type??`http`,path:e.healthCheck?.path??`/health`,interval:e.healthCheck?.interval??3e4,timeout:e.healthCheck?.timeout??5e3,retries:e.healthCheck?.retries??3,method:e.healthCheck?.method??`GET`,expectedStatus:e.healthCheck?.expectedStatus??200,initialDelay:e.healthCheck?.initialDelay??5e3,command:e.healthCheck?.command??``}});let f=null;function p(){f&&clearTimeout(f),f=setTimeout(()=>{if(!o.value)i(`save`,void 0);else{if(c.value.type===`http`&&!c.value.path?.trim()||c.value.type===`command`&&!c.value.command?.trim())return;i(`save`,{type:c.value.type,path:c.value.path,method:c.value.method,expectedStatus:c.value.expectedStatus,command:c.value.command||void 0,interval:c.value.interval,timeout:c.value.timeout,retries:c.value.retries,initialDelay:c.value.initialDelay})}f=null},150)}return(e,t)=>(s(),D(`div`,ta,[I(`div`,na,[I(`div`,ra,[t[10]||=I(`i`,{class:`pi pi-heart`},null,-1),I(`span`,null,N(l(a)(`serviceConfigHealthCheck.enable`)),1)]),x(l(Pe),{modelValue:o.value,"onUpdate:modelValue":t[0]||=e=>o.value=e,onChange:p},null,8,[`modelValue`])]),o.value?(s(),D(V,{key:0},[I(`div`,ia,[I(`div`,aa,[t[11]||=I(`i`,{class:`pi pi-cog`},null,-1),I(`span`,null,N(l(a)(`serviceConfigHealthCheck.type`)),1)]),x(l(re),{modelValue:c.value.type,"onUpdate:modelValue":t[1]||=e=>c.value.type=e,options:u,"option-label":`label`,"option-value":`value`,class:`config-card__input`,onChange:p},null,8,[`modelValue`]),t[12]||=I(`small`,{class:`config-card__hint`},`HTTP checks a URL endpoint; Command runs a shell command (exit 0 = healthy)`,-1)]),c.value.type===`http`?(s(),D(V,{key:0},[I(`div`,oa,[I(`div`,sa,[t[13]||=I(`i`,{class:`pi pi-link`},null,-1),I(`span`,null,N(l(a)(`serviceConfigHealthCheck.path`)),1)]),x(l(L),{modelValue:c.value.path,"onUpdate:modelValue":t[2]||=e=>c.value.path=e,class:`config-card__input`,placeholder:`/health`,onBlur:p,onKeydown:B(A(p,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])]),I(`div`,ca,[I(`div`,la,[t[14]||=I(`i`,{class:`pi pi-directions`},null,-1),I(`span`,null,N(l(a)(`serviceConfigHealthCheck.method`)),1)]),x(l(re),{modelValue:c.value.method,"onUpdate:modelValue":t[3]||=e=>c.value.method=e,options:d,"option-label":`label`,"option-value":`value`,class:`config-card__input`,onChange:p},null,8,[`modelValue`])]),I(`div`,ua,[I(`div`,da,[t[15]||=I(`i`,{class:`pi pi-check-circle`},null,-1),I(`span`,null,N(l(a)(`serviceConfigHealthCheck.expectedStatus`)),1)]),x(l(Me),{modelValue:c.value.expectedStatus,"onUpdate:modelValue":t[4]||=e=>c.value.expectedStatus=e,class:`config-card__input`,"use-grouping":!1,min:100,max:599,onBlur:p,onKeydown:B(A(p,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`]),t[16]||=I(`small`,{class:`config-card__hint`},`HTTP status code to expect (default 200)`,-1)])],64)):M(``,!0),c.value.type===`command`?(s(),D(`div`,fa,[I(`div`,pa,[t[17]||=I(`i`,{class:`pi pi-code`},null,-1),I(`span`,null,N(l(a)(`serviceConfigHealthCheck.command`)),1)]),x(l(pe),{modelValue:c.value.command,"onUpdate:modelValue":t[5]||=e=>c.value.command=e,class:`config-card__input`,rows:`2`,placeholder:`curl -sf http://localhost:3000/health`,"auto-resize":``,onBlur:p},null,8,[`modelValue`]),I(`small`,ma,N(l(a)(`serviceConfigHealthCheck.commandHint`)),1)])):M(``,!0),I(`div`,ha,[I(`div`,ga,[t[18]||=I(`i`,{class:`pi pi-hourglass`},null,-1),I(`span`,null,N(l(a)(`serviceConfigHealthCheck.initialDelay`)),1)]),x(l(Me),{modelValue:c.value.initialDelay,"onUpdate:modelValue":t[6]||=e=>c.value.initialDelay=e,class:`config-card__input`,"use-grouping":!1,min:0,onBlur:p,onKeydown:B(A(p,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`]),t[19]||=I(`small`,{class:`config-card__hint`},`Wait before first health check (ms)`,-1)]),I(`div`,_a,[I(`div`,va,[t[20]||=I(`i`,{class:`pi pi-clock`},null,-1),I(`span`,null,N(l(a)(`serviceConfigHealthCheck.interval`)),1)]),x(l(Me),{modelValue:c.value.interval,"onUpdate:modelValue":t[7]||=e=>c.value.interval=e,class:`config-card__input`,"use-grouping":!1,min:1e3,onBlur:p,onKeydown:B(A(p,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])]),I(`div`,ya,[I(`div`,ba,[t[21]||=I(`i`,{class:`pi pi-stopwatch`},null,-1),I(`span`,null,N(l(a)(`serviceConfigHealthCheck.timeout`)),1)]),x(l(Me),{modelValue:c.value.timeout,"onUpdate:modelValue":t[8]||=e=>c.value.timeout=e,class:`config-card__input`,"use-grouping":!1,min:500,onBlur:p,onKeydown:B(A(p,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])]),I(`div`,xa,[I(`div`,Sa,[t[22]||=I(`i`,{class:`pi pi-replay`},null,-1),I(`span`,null,N(l(a)(`serviceConfigHealthCheck.retries`)),1)]),x(l(Me),{modelValue:c.value.retries,"onUpdate:modelValue":t[9]||=e=>c.value.retries=e,class:`config-card__input`,"use-grouping":!1,min:0,max:10,onBlur:p,onKeydown:B(A(p,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])])],64)):M(``,!0)]))}}),[[`__scopeId`,`data-v-63e32039`]]),wa={class:`config-shortcuts`},Ta={key:0,class:`config-shortcuts__empty`},Ea={class:`config-shortcuts__row`},Da={class:`config-shortcuts__field`},Oa=[`for`],ka={class:`config-shortcuts__field config-shortcuts__field--wide`},Aa=[`for`],ja={class:`config-shortcuts__field`},Ma=[`for`],Na={class:`config-shortcuts__actions-cell`},Pa={class:`config-shortcuts__footer`},Fa=C(H({__name:`ServiceConfigShortcuts`,props:{service:{}},emits:[`save`],setup(e,{emit:n}){let r=e,{t:i}=ne(),a=n,o=t([...r.service.shortcuts??[]]),c=null;fe(()=>r.service,e=>{c||(o.value=[...e.shortcuts??[]])});function u(){o.value=[...o.value,{id:ke(),label:``,command:``,cwd:void 0}]}function d(e){o.value=o.value.filter((t,n)=>n!==e)}function f(e,t,n){o.value=o.value.map((r,i)=>i===e?{...r,[t]:n||void 0}:r)}function p(){c&&clearTimeout(c),c=setTimeout(()=>{a(`save`,o.value),c=null},150)}function m(e){d(e),p()}return(e,t)=>(s(),D(`div`,wa,[o.value.length===0?(s(),D(`div`,Ta,[I(`p`,null,N(l(i)(`serviceConfigShortcuts.empty`)),1)])):M(``,!0),(s(!0),D(V,null,ve(o.value,(e,t)=>(s(),D(`div`,{key:e.id,class:`config-card`},[I(`div`,Ea,[I(`div`,Da,[I(`label`,{class:`config-shortcuts__label`,for:`shortcut-label-${t}`},N(l(i)(`serviceConfigShortcuts.label`)),9,Oa),x(l(L),{id:`shortcut-label-${t}`,"model-value":e.label,placeholder:l(i)(`serviceConfigShortcuts.labelPlaceholder`),class:`config-card__input`,"data-testid":`shortcut-label-input`,"onUpdate:modelValue":e=>f(t,`label`,e),onBlur:p,onKeydown:B(A(p,[`prevent`]),[`enter`])},null,8,[`id`,`model-value`,`placeholder`,`onUpdate:modelValue`,`onKeydown`])]),I(`div`,ka,[I(`label`,{class:`config-shortcuts__label`,for:`shortcut-command-${t}`},N(l(i)(`serviceConfigShortcuts.command`)),9,Aa),x(l(L),{id:`shortcut-command-${t}`,"model-value":e.command,placeholder:l(i)(`serviceConfigShortcuts.commandPlaceholder`),class:`config-card__input`,"data-testid":`shortcut-command-input`,"onUpdate:modelValue":e=>f(t,`command`,e),onBlur:p,onKeydown:B(A(p,[`prevent`]),[`enter`])},null,8,[`id`,`model-value`,`placeholder`,`onUpdate:modelValue`,`onKeydown`])]),I(`div`,ja,[I(`label`,{class:`config-shortcuts__label`,for:`shortcut-cwd-${t}`},N(l(i)(`serviceConfigShortcuts.workingDir`)),9,Ma),x(l(L),{id:`shortcut-cwd-${t}`,"model-value":e.cwd??``,placeholder:l(i)(`serviceConfigShortcuts.cwdPlaceholder`),class:`config-card__input`,"onUpdate:modelValue":e=>f(t,`cwd`,e),onBlur:p,onKeydown:B(A(p,[`prevent`]),[`enter`])},null,8,[`id`,`model-value`,`placeholder`,`onUpdate:modelValue`,`onKeydown`])]),I(`div`,Na,[x(l(F),{icon:`pi pi-trash`,severity:`danger`,text:``,rounded:``,size:`small`,onClick:e=>m(t)},null,8,[`onClick`])])])]))),128)),I(`div`,Pa,[x(l(F),{label:l(i)(`serviceConfigShortcuts.addShortcut`),icon:`pi pi-plus`,severity:`secondary`,outlined:``,size:`small`,"data-testid":`add-shortcut-btn`,onClick:u},null,8,[`label`])])]))}}),[[`__scopeId`,`data-v-d6ecb989`]]),Ia=Object.defineProperty,La=Object.getOwnPropertySymbols,Ra=Object.prototype.hasOwnProperty,za=Object.prototype.propertyIsEnumerable,Ba=(e,t,n)=>t in e?Ia(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Va=(e,t)=>{for(var n in t||={})Ra.call(t,n)&&Ba(e,n,t[n]);if(La)for(var n of La(t))za.call(t,n)&&Ba(e,n,t[n]);return e},Ha=(e,t)=>{var n={};for(var r in e)Ra.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&La)for(var r of La(e))t.indexOf(r)<0&&za.call(e,r)&&(n[r]=e[r]);return n},Ua=`[vue-draggable-plus]: `;function Wa(e){console.warn(Ua+e)}function Ga(e){console.error(Ua+e)}function Ka(e,t,n){return n>=0&&n<e.length&&e.splice(n,0,e.splice(t,1)[0]),e}function qa(e){return e.replace(/-(\w)/g,(e,t)=>t?t.toUpperCase():``)}function Ja(e){return Object.keys(e).reduce((t,n)=>(e[n]!==void 0&&(t[qa(n)]=e[n]),t),{})}function Ya(e,t){return Array.isArray(e)&&e.splice(t,1),e}function Xa(e,t,n){return Array.isArray(e)&&e.splice(t,0,n),e}function Za(e){return e===void 0}function Qa(e){return typeof e==`string`}function $a(e,t,n){let r=e.children[n];e.insertBefore(t,r)}function eo(e){e.parentNode&&e.parentNode.removeChild(e)}function to(e,t=document){let n=null;return n=typeof t?.querySelector==`function`?(t?.querySelector)?.call(t,e):document.querySelector(e),n||Wa(`Element not found: ${e}`),n}function no(e,t,n=null){return function(...r){return e.apply(n,r),t.apply(n,r)}}function ro(e,t){let n=Va({},e);return Object.keys(t).forEach(r=>{n[r]?n[r]=no(e[r],t[r]):n[r]=t[r]}),n}function io(e){return e instanceof HTMLElement}function ao(e,t){Object.keys(e).forEach(n=>{t(n,e[n])})}function oo(e){return e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97)}var so=Object.assign;function co(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 lo(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t];t%2?co(Object(n),!0).forEach(function(t){fo(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):co(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function uo(e){"@babel/helpers - typeof";return uo=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},uo(e)}function fo(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function po(){return po=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},po.apply(this,arguments)}function mo(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 ho(e,t){if(e==null)return{};var n=mo(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 go=`1.15.2`;function _o(e){if(typeof window<`u`&&window.navigator)return!!navigator.userAgent.match(e)}var vo=_o(/(?:Trident.*rv[ :]?11\.|msie|iemobile|Windows Phone)/i),yo=_o(/Edge/i),bo=_o(/firefox/i),xo=_o(/safari/i)&&!_o(/chrome/i)&&!_o(/android/i),So=_o(/iP(ad|od|hone)/i),Co=_o(/chrome/i)&&_o(/android/i),wo={capture:!1,passive:!1};function W(e,t,n){e.addEventListener(t,n,!vo&&wo)}function G(e,t,n){e.removeEventListener(t,n,!vo&&wo)}function To(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 Eo(e){return e.host&&e!==document&&e.host.nodeType?e.host:e.parentNode}function Do(e,t,n,r){if(e){n||=document;do{if(t!=null&&(t[0]===`>`?e.parentNode===n&&To(e,t):To(e,t))||r&&e===n)return e;if(e===n)break}while(e=Eo(e))}return null}var Oo=/\s+/g;function ko(e,t,n){e&&t&&(e.classList?e.classList[n?`add`:`remove`](t):e.className=((` `+e.className+` `).replace(Oo,` `).replace(` `+t+` `,` `)+(n?` `+t:``)).replace(Oo,` `))}function K(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 Ao(e,t){var n=``;if(typeof e==`string`)n=e;else do{var r=K(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 jo(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 Mo(){return document.scrollingElement||document.documentElement}function q(e,t,n,r,i){if(!(!e.getBoundingClientRect&&e!==window)){var a,o,s,c,l,u,d;if(e!==window&&e.parentNode&&e!==Mo()?(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,!vo))do if(i&&i.getBoundingClientRect&&(K(i,`transform`)!==`none`||n&&K(i,`position`)!==`static`)){var f=i.getBoundingClientRect();o-=f.top+parseInt(K(i,`border-top-width`)),s-=f.left+parseInt(K(i,`border-left-width`)),c=o+a.height,l=s+a.width;break}while(i=i.parentNode);if(r&&e!==window){var p=Ao(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 No(e,t,n){for(var r=zo(e,!0),i=q(e)[t];r;){var a=q(r)[n],o=void 0;if(o=i>=a,!o)return r;if(r===Mo())break;r=zo(r,!1)}return!1}function Po(e,t,n,r){for(var i=0,a=0,o=e.children;a<o.length;){if(o[a].style.display!==`none`&&o[a]!==$.ghost&&(r||o[a]!==$.dragged)&&Do(o[a],n.draggable,e,!1)){if(i===t)return o[a];i++}a++}return null}function Fo(e,t){for(var n=e.lastElementChild;n&&(n===$.ghost||K(n,`display`)===`none`||t&&!To(n,t));)n=n.previousElementSibling;return n||null}function Io(e,t){var n=0;if(!e||!e.parentNode)return-1;for(;e=e.previousElementSibling;)e.nodeName.toUpperCase()!==`TEMPLATE`&&e!==$.clone&&(!t||To(e,t))&&n++;return n}function Lo(e){var t=0,n=0,r=Mo();if(e)do{var i=Ao(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 Ro(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 zo(e,t){if(!e||!e.getBoundingClientRect)return Mo();var n=e,r=!1;do if(n.clientWidth<n.scrollWidth||n.clientHeight<n.scrollHeight){var i=K(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 Mo();if(r||t)return n;r=!0}}while(n=n.parentNode);return Mo()}function Bo(e,t){if(e&&t)for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);return e}function Vo(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 Ho;function Uo(e,t){return function(){if(!Ho){var n=arguments,r=this;n.length===1?e.call(r,n[0]):e.apply(r,n),Ho=setTimeout(function(){Ho=void 0},t)}}}function Wo(){clearTimeout(Ho),Ho=void 0}function Go(e,t,n){e.scrollLeft+=t,e.scrollTop+=n}function Ko(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 qo(e,t,n){var r={};return Array.from(e.children).forEach(function(i){if(!(!Do(i,t.draggable,e,!1)||i.animated||i===n)){var a=q(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 Jo=`Sortable`+new Date().getTime();function Yo(){var e=[],t;return{captureAnimationState:function(){e=[],this.options.animation&&[].slice.call(this.el.children).forEach(function(t){if(!(K(t,`display`)===`none`||t===$.ghost)){e.push({target:t,rect:q(t)});var n=lo({},e[e.length-1].rect);if(t.thisAnimationDuration){var r=Ao(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(Ro(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=q(n),c=n.prevFromRect,l=n.prevToRect,u=e.rect,d=Ao(n,!0);d&&(s.top-=d.f,s.left-=d.e),n.toRect=s,n.thisAnimationDuration&&Vo(c,s)&&!Vo(o,s)&&(u.top-s.top)/(u.left-s.left)===(o.top-s.top)/(o.left-s.left)&&(t=Zo(u,c,l,r.options)),Vo(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){K(e,`transition`,``),K(e,`transform`,``);var i=Ao(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,K(e,`transform`,`translate3d(`+s+`px,`+c+`px,0)`),this.forRepaintDummy=Xo(e),K(e,`transition`,`transform `+r+`ms`+(this.options.easing?` `+this.options.easing:``)),K(e,`transform`,`translate3d(0,0,0)`),typeof e.animated==`number`&&clearTimeout(e.animated),e.animated=setTimeout(function(){K(e,`transition`,``),K(e,`transform`,``),e.animated=!1,e.animatingX=!1,e.animatingY=!1},r)}}}}function Xo(e){return e.offsetWidth}function Zo(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 Qo=[],$o={initializeByDefault:!0},es={mount:function(e){for(var t in $o)$o.hasOwnProperty(t)&&!(t in e)&&(e[t]=$o[t]);Qo.forEach(function(t){if(t.pluginName===e.pluginName)throw`Sortable: Cannot mount plugin ${e.pluginName} more than once`}),Qo.push(e)},pluginEvent:function(e,t,n){var r=this;this.eventCanceled=!1,n.cancel=function(){r.eventCanceled=!0};var i=e+`Global`;Qo.forEach(function(r){t[r.pluginName]&&(t[r.pluginName][i]&&t[r.pluginName][i](lo({sortable:t},n)),t.options[r.pluginName]&&t[r.pluginName][e]&&t[r.pluginName][e](lo({sortable:t},n)))})},initializePlugins:function(e,t,n,r){for(var i in Qo.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,po(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 Qo.forEach(function(r){typeof r.eventProperties==`function`&&po(n,r.eventProperties.call(t[r.pluginName],e))}),n},modifyOption:function(e,t,n){var r;return Qo.forEach(function(i){e[i.pluginName]&&i.optionListeners&&typeof i.optionListeners[t]==`function`&&(r=i.optionListeners[t].call(e[i.pluginName],n))}),r}};function ts(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[Jo],t){var h,g=t.options,_=`on`+r.charAt(0).toUpperCase()+r.substr(1);window.CustomEvent&&!vo&&!yo?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=lo(lo({},m),es.getEventProperties(r,t));for(var y in v)h[y]=v[y];n&&n.dispatchEvent(h),g[_]&&g[_].call(t,h)}}var ns=[`evt`],rs=function(e,t){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},r=n.evt,i=ho(n,ns);es.pluginEvent.bind($)(e,t,lo({dragEl:J,parentEl:Y,ghostEl:X,rootEl:Z,nextEl:as,lastDownEl:os,cloneEl:Q,cloneHidden:ss,dragStarted:Cs,putSortable:ps,activeSortable:$.active,originalEvent:r,oldIndex:cs,oldDraggableIndex:us,newIndex:ls,newDraggableIndex:ds,hideGhostForTarget:Hs,unhideGhostForTarget:Us,cloneNowHidden:function(){ss=!0},cloneNowShown:function(){ss=!1},dispatchSortableEvent:function(e){is({sortable:t,name:e,originalEvent:r})}},i))};function is(e){ts(lo({putSortable:ps,cloneEl:Q,targetEl:J,rootEl:Z,oldIndex:cs,oldDraggableIndex:us,newIndex:ls,newDraggableIndex:ds},e))}var J,Y,X,Z,as,os,Q,ss,cs,ls,us,ds,fs,ps,ms=!1,hs=!1,gs=[],_s,vs,ys,bs,xs,Ss,Cs,ws,Ts,Es=!1,Ds=!1,Os,ks,As=[],js=!1,Ms=[],Ns=typeof document<`u`,Ps=So,Fs=yo||vo?`cssFloat`:`float`,Is=Ns&&!Co&&!So&&`draggable`in document.createElement(`div`),Ls=function(){if(Ns){if(vo)return!1;var e=document.createElement(`x`);return e.style.cssText=`pointer-events:auto`,e.style.pointerEvents===`auto`}}(),Rs=function(e,t){var n=K(e),r=parseInt(n.width)-parseInt(n.paddingLeft)-parseInt(n.paddingRight)-parseInt(n.borderLeftWidth)-parseInt(n.borderRightWidth),i=Po(e,0,t),a=Po(e,1,t),o=i&&K(i),s=a&&K(a),c=o&&parseInt(o.marginLeft)+parseInt(o.marginRight)+q(i).width,l=s&&parseInt(s.marginLeft)+parseInt(s.marginRight)+q(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[Fs]===`none`||a&&n[Fs]===`none`&&c+l>r)?`vertical`:`horizontal`},zs=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},Bs=function(e,t){var n;return gs.some(function(r){var i=r[Jo].options.emptyInsertThreshold;if(!(!i||Fo(r))){var a=q(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},Vs=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||uo(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},Hs=function(){!Ls&&X&&K(X,`display`,`none`)},Us=function(){!Ls&&X&&K(X,`display`,``)};Ns&&!Co&&document.addEventListener(`click`,function(e){if(hs)return e.preventDefault(),e.stopPropagation&&e.stopPropagation(),e.stopImmediatePropagation&&e.stopImmediatePropagation(),hs=!1,!1},!0);var Ws=function(e){if(J){e=e.touches?e.touches[0]:e;var t=Bs(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[Jo]._onDragOver(n)}}},Gs=function(e){J&&J.parentNode[Jo]._isOutsideThisEl(e.target)};function $(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=po({},t),e[Jo]=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 Rs(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:$.supportPointer!==!1&&`PointerEvent`in window&&!xo,emptyInsertThreshold:5};for(var r in es.initializePlugins(this,e,n),n)!(r in t)&&(t[r]=n[r]);for(var i in Vs(t),this)i.charAt(0)===`_`&&typeof this[i]==`function`&&(this[i]=this[i].bind(this));this.nativeDraggable=t.forceFallback?!1:Is,this.nativeDraggable&&(this.options.touchStartThreshold=1),t.supportPointer?W(e,`pointerdown`,this._onTapStart):(W(e,`mousedown`,this._onTapStart),W(e,`touchstart`,this._onTapStart)),this.nativeDraggable&&(W(e,`dragover`,this),W(e,`dragenter`,this)),gs.push(this.el),t.store&&t.store.get&&this.sort(t.store.get(this)||[]),po(this,Yo())}$.prototype={constructor:$,_isOutsideThisEl:function(e){!this.el.contains(e)&&e!==this.el&&(ws=null)},_getDirection:function(e,t){return typeof this.options.direction==`function`?this.options.direction.call(this,e,t,J):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(tc(n),!J&&!(/mousedown|pointerdown/.test(a)&&e.button!==0||r.disabled)&&!c.isContentEditable&&!(!this.nativeDraggable&&xo&&s&&s.tagName.toUpperCase()===`SELECT`)&&(s=Do(s,r.draggable,n,!1),!(s&&s.animated)&&os!==s)){if(cs=Io(s),us=Io(s,r.draggable),typeof l==`function`){if(l.call(this,e,s,this)){is({sortable:t,rootEl:c,name:`filter`,targetEl:s,toEl:n,fromEl:n}),rs(`filter`,t,{evt:e}),i&&e.cancelable&&e.preventDefault();return}}else if(l&&(l=l.split(`,`).some(function(r){if(r=Do(c,r.trim(),n,!1),r)return is({sortable:t,rootEl:r,name:`filter`,targetEl:s,fromEl:n,toEl:n}),rs(`filter`,t,{evt:e}),!0}),l)){i&&e.cancelable&&e.preventDefault();return}r.handle&&!Do(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&&!J&&n.parentNode===i){var c=q(n);if(Z=i,J=n,Y=J.parentNode,as=J.nextSibling,os=n,fs=a.group,$.dragged=J,_s={target:J,clientX:(t||e).clientX,clientY:(t||e).clientY},xs=_s.clientX-c.left,Ss=_s.clientY-c.top,this._lastX=(t||e).clientX,this._lastY=(t||e).clientY,J.style[`will-change`]=`all`,s=function(){if(rs(`delayEnded`,r,{evt:e}),$.eventCanceled){r._onDrop();return}r._disableDelayedDragEvents(),!bo&&r.nativeDraggable&&(J.draggable=!0),r._triggerDragStart(e,t),is({sortable:r,name:`choose`,originalEvent:e}),ko(J,a.chosenClass,!0)},a.ignore.split(`,`).forEach(function(e){jo(J,e.trim(),Js)}),W(o,`dragover`,Ws),W(o,`mousemove`,Ws),W(o,`touchmove`,Ws),W(o,`mouseup`,r._onDrop),W(o,`touchend`,r._onDrop),W(o,`touchcancel`,r._onDrop),bo&&this.nativeDraggable&&(this.options.touchStartThreshold=4,J.draggable=!0),rs(`delayStart`,this,{evt:e}),a.delay&&(!a.delayOnTouchOnly||t)&&(!this.nativeDraggable||!(yo||vo))){if($.eventCanceled){this._onDrop();return}W(o,`mouseup`,r._disableDelayedDrag),W(o,`touchend`,r._disableDelayedDrag),W(o,`touchcancel`,r._disableDelayedDrag),W(o,`mousemove`,r._delayedDragTouchMoveHandler),W(o,`touchmove`,r._delayedDragTouchMoveHandler),a.supportPointer&&W(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(){J&&Js(J),clearTimeout(this._dragStartTimer),this._disableDelayedDragEvents()},_disableDelayedDragEvents:function(){var e=this.el.ownerDocument;G(e,`mouseup`,this._disableDelayedDrag),G(e,`touchend`,this._disableDelayedDrag),G(e,`touchcancel`,this._disableDelayedDrag),G(e,`mousemove`,this._delayedDragTouchMoveHandler),G(e,`touchmove`,this._delayedDragTouchMoveHandler),G(e,`pointermove`,this._delayedDragTouchMoveHandler)},_triggerDragStart:function(e,t){t||=e.pointerType==`touch`&&e,!this.nativeDraggable||t?this.options.supportPointer?W(document,`pointermove`,this._onTouchMove):t?W(document,`touchmove`,this._onTouchMove):W(document,`mousemove`,this._onTouchMove):(W(J,`dragend`,this),W(Z,`dragstart`,this._onDragStart));try{document.selection?nc(function(){document.selection.empty()}):window.getSelection().removeAllRanges()}catch{}},_dragStarted:function(e,t){if(ms=!1,Z&&J){rs(`dragStarted`,this,{evt:t}),this.nativeDraggable&&W(document,`dragover`,Gs);var n=this.options;!e&&ko(J,n.dragClass,!1),ko(J,n.ghostClass,!0),$.active=this,e&&this._appendGhost(),is({sortable:this,name:`start`,originalEvent:t})}else this._nulling()},_emulateDragOver:function(){if(vs){this._lastX=vs.clientX,this._lastY=vs.clientY,Hs();for(var e=document.elementFromPoint(vs.clientX,vs.clientY),t=e;e&&e.shadowRoot&&(e=e.shadowRoot.elementFromPoint(vs.clientX,vs.clientY),e!==t);)t=e;if(J.parentNode[Jo]._isOutsideThisEl(e),t)do{if(t[Jo]){var n=void 0;if(n=t[Jo]._onDragOver({clientX:vs.clientX,clientY:vs.clientY,target:e,rootEl:t}),n&&!this.options.dragoverBubble)break}e=t}while(t=t.parentNode);Us()}},_onTouchMove:function(e){if(_s){var t=this.options,n=t.fallbackTolerance,r=t.fallbackOffset,i=e.touches?e.touches[0]:e,a=X&&Ao(X,!0),o=X&&a&&a.a,s=X&&a&&a.d,c=Ps&&ks&&Lo(ks),l=(i.clientX-_s.clientX+r.x)/(o||1)+(c?c[0]-As[0]:0)/(o||1),u=(i.clientY-_s.clientY+r.y)/(s||1)+(c?c[1]-As[1]:0)/(s||1);if(!$.active&&!ms){if(n&&Math.max(Math.abs(i.clientX-this._lastX),Math.abs(i.clientY-this._lastY))<n)return;this._onDragStart(e,!0)}if(X){a?(a.e+=l-(ys||0),a.f+=u-(bs||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})`;K(X,`webkitTransform`,d),K(X,`mozTransform`,d),K(X,`msTransform`,d),K(X,`transform`,d),ys=l,bs=u,vs=i}e.cancelable&&e.preventDefault()}},_appendGhost:function(){if(!X){var e=this.options.fallbackOnBody?document.body:Z,t=q(J,!0,Ps,!0,e),n=this.options;if(Ps){for(ks=e;K(ks,`position`)===`static`&&K(ks,`transform`)===`none`&&ks!==document;)ks=ks.parentNode;ks!==document.body&&ks!==document.documentElement?(ks===document&&(ks=Mo()),t.top+=ks.scrollTop,t.left+=ks.scrollLeft):ks=Mo(),As=Lo(ks)}X=J.cloneNode(!0),ko(X,n.ghostClass,!1),ko(X,n.fallbackClass,!0),ko(X,n.dragClass,!0),K(X,`transition`,``),K(X,`transform`,``),K(X,`box-sizing`,`border-box`),K(X,`margin`,0),K(X,`top`,t.top),K(X,`left`,t.left),K(X,`width`,t.width),K(X,`height`,t.height),K(X,`opacity`,`0.8`),K(X,`position`,Ps?`absolute`:`fixed`),K(X,`zIndex`,`100000`),K(X,`pointerEvents`,`none`),$.ghost=X,e.appendChild(X),K(X,`transform-origin`,xs/parseInt(X.style.width)*100+`% `+Ss/parseInt(X.style.height)*100+`%`)}},_onDragStart:function(e,t){var n=this,r=e.dataTransfer,i=n.options;if(rs(`dragStart`,this,{evt:e}),$.eventCanceled){this._onDrop();return}rs(`setupClone`,this),$.eventCanceled||(Q=Ko(J),Q.removeAttribute(`id`),Q.draggable=!1,Q.style[`will-change`]=``,this._hideClone(),ko(Q,this.options.chosenClass,!1),$.clone=Q),n.cloneId=nc(function(){rs(`clone`,n),!$.eventCanceled&&(n.options.removeCloneOnHide||Z.insertBefore(Q,J),n._hideClone(),is({sortable:n,name:`clone`}))}),!t&&ko(J,i.dragClass,!0),t?(hs=!0,n._loopId=setInterval(n._emulateDragOver,50)):(G(document,`mouseup`,n._onDrop),G(document,`touchend`,n._onDrop),G(document,`touchcancel`,n._onDrop),r&&(r.effectAllowed=`move`,i.setData&&i.setData.call(n,r,J)),W(document,`drop`,n),K(J,`transform`,`translateZ(0)`)),ms=!0,n._dragStartId=nc(n._dragStarted.bind(n,t,e)),W(document,`selectstart`,n),Cs=!0,xo&&K(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=$.active,l=fs===s,u=o.sort,d=ps||c,f,p=this,m=!1;if(js)return;function h(o,s){rs(o,p,lo({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 qs(Z,t,J,r,n,q(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&&(ko(J,ps?ps.options.ghostClass:c.options.ghostClass,!1),ko(J,o.ghostClass,!0)),ps!==p&&p!==$.active?ps=p:p===$.active&&ps&&(ps=null),d===p&&(p._ignoreWhileAnimating=n),p.animateAll(function(){h(`dragOverAnimationComplete`),p._ignoreWhileAnimating=null}),p!==d&&(d.animateAll(),d._ignoreWhileAnimating=null)),(n===J&&!J.animated||n===t&&!n.animated)&&(ws=null),!o.dragoverBubble&&!e.rootEl&&n!==document&&(J.parentNode[Jo]._isOutsideThisEl(e.target),!r&&Ws(e)),!o.dragoverBubble&&e.stopPropagation&&e.stopPropagation(),m=!0}function v(){ls=Io(J),ds=Io(J,o.draggable),is({sortable:p,name:`change`,toEl:t,newIndex:ls,newDraggableIndex:ds,originalEvent:e})}if(e.preventDefault!==void 0&&e.cancelable&&e.preventDefault(),n=Do(n,o.draggable,t,!0),h(`dragOver`),$.eventCanceled)return m;if(J.contains(e.target)||n.animated&&n.animatingX&&n.animatingY||p._ignoreWhileAnimating===n)return _(!1);if(hs=!1,c&&!o.disabled&&(l?u||(a=Y!==Z):ps===this||(this.lastPutMode=fs.checkPull(this,c,J,e))&&s.checkPut(this,c,J,e))){if(f=this._getDirection(e,n)===`vertical`,r=q(J),h(`dragOverValid`),$.eventCanceled)return m;if(a)return Y=Z,g(),this._hideClone(),h(`revert`),$.eventCanceled||(as?Z.insertBefore(J,as):Z.appendChild(J)),_(!0);var y=Fo(t,o.draggable);if(!y||Zs(e,f,this)&&!y.animated){if(y===J)return _(!1);if(y&&t===e.target&&(n=y),n&&(i=q(n)),qs(Z,t,J,r,n,i,e,!!n)!==!1)return g(),y&&y.nextSibling?t.insertBefore(J,y.nextSibling):t.appendChild(J),Y=t,v(),_(!0)}else if(y&&Xs(e,f,this)){var b=Po(t,0,o,!0);if(b===J)return _(!1);if(n=b,i=q(n),qs(Z,t,J,r,n,i,e,!1)!==!1)return g(),t.insertBefore(J,b),Y=t,v(),_(!0)}else if(n.parentNode===t){i=q(n);var x=0,S,ee=J.parentNode!==t,C=!zs(J.animated&&J.toRect||r,n.animated&&n.toRect||i,f),w=f?`top`:`left`,T=No(n,`top`,`top`)||No(J,`top`,`top`),E=T?T.scrollTop:void 0;ws!==n&&(S=i[w],Es=!1,Ds=!C&&o.invertSwap||ee),x=Qs(e,n,i,f,C?1:o.swapThreshold,o.invertedSwapThreshold==null?o.swapThreshold:o.invertedSwapThreshold,Ds,ws===n);var te;if(x!==0){var ne=Io(J);do ne-=x,te=Y.children[ne];while(te&&(K(te,`display`)===`none`||te===X))}if(x===0||te===n)return _(!1);ws=n,Ts=x;var re=n.nextElementSibling,D=!1;D=x===1;var O=qs(Z,t,J,r,n,i,e,D);if(O!==!1)return(O===1||O===-1)&&(D=O===1),js=!0,setTimeout(Ys,30),g(),D&&!re?t.appendChild(J):n.parentNode.insertBefore(J,D?re:n),T&&Go(T,0,E-T.scrollTop),Y=J.parentNode,S!==void 0&&!Ds&&(Os=Math.abs(S-q(n)[w])),v(),_(!0)}if(t.contains(J))return _(!1)}return!1},_ignoreWhileAnimating:null,_offMoveEvents:function(){G(document,`mousemove`,this._onTouchMove),G(document,`touchmove`,this._onTouchMove),G(document,`pointermove`,this._onTouchMove),G(document,`dragover`,Ws),G(document,`mousemove`,Ws),G(document,`touchmove`,Ws)},_offUpEvents:function(){var e=this.el.ownerDocument;G(e,`mouseup`,this._onDrop),G(e,`touchend`,this._onDrop),G(e,`pointerup`,this._onDrop),G(e,`touchcancel`,this._onDrop),G(document,`selectstart`,this)},_onDrop:function(e){var t=this.el,n=this.options;if(ls=Io(J),ds=Io(J,n.draggable),rs(`drop`,this,{evt:e}),Y=J&&J.parentNode,ls=Io(J),ds=Io(J,n.draggable),$.eventCanceled){this._nulling();return}ms=!1,Ds=!1,Es=!1,clearInterval(this._loopId),clearTimeout(this._dragStartTimer),rc(this.cloneId),rc(this._dragStartId),this.nativeDraggable&&(G(document,`drop`,this),G(t,`dragstart`,this._onDragStart)),this._offMoveEvents(),this._offUpEvents(),xo&&K(document.body,`user-select`,``),K(J,`transform`,``),e&&(Cs&&(e.cancelable&&e.preventDefault(),!n.dropBubble&&e.stopPropagation()),X&&X.parentNode&&X.parentNode.removeChild(X),(Z===Y||ps&&ps.lastPutMode!==`clone`)&&Q&&Q.parentNode&&Q.parentNode.removeChild(Q),J&&(this.nativeDraggable&&G(J,`dragend`,this),Js(J),J.style[`will-change`]=``,Cs&&!ms&&ko(J,ps?ps.options.ghostClass:this.options.ghostClass,!1),ko(J,this.options.chosenClass,!1),is({sortable:this,name:`unchoose`,toEl:Y,newIndex:null,newDraggableIndex:null,originalEvent:e}),Z===Y?ls!==cs&&ls>=0&&(is({sortable:this,name:`update`,toEl:Y,originalEvent:e}),is({sortable:this,name:`sort`,toEl:Y,originalEvent:e})):(ls>=0&&(is({rootEl:Y,name:`add`,toEl:Y,fromEl:Z,originalEvent:e}),is({sortable:this,name:`remove`,toEl:Y,originalEvent:e}),is({rootEl:Y,name:`sort`,toEl:Y,fromEl:Z,originalEvent:e}),is({sortable:this,name:`sort`,toEl:Y,originalEvent:e})),ps&&ps.save()),$.active&&((ls==null||ls===-1)&&(ls=cs,ds=us),is({sortable:this,name:`end`,toEl:Y,originalEvent:e}),this.save()))),this._nulling()},_nulling:function(){rs(`nulling`,this),Z=J=Y=X=as=Q=os=ss=_s=vs=Cs=ls=ds=cs=us=ws=Ts=ps=fs=$.dragged=$.ghost=$.clone=$.active=null,Ms.forEach(function(e){e.checked=!0}),Ms.length=ys=bs=0},handleEvent:function(e){switch(e.type){case`drop`:case`dragend`:this._onDrop(e);break;case`dragenter`:case`dragover`:J&&(this._onDragOver(e),Ks(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],Do(t,a.draggable,this.el,!1)&&e.push(t.getAttribute(a.dataIdAttr)||ec(t));return e},sort:function(e,t){var n={},r=this.el;this.toArray().forEach(function(e,t){var i=r.children[t];Do(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 Do(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=es.modifyOption(this,e,t);r===void 0?n[e]=t:n[e]=r,e===`group`&&Vs(n)},destroy:function(){rs(`destroy`,this);var e=this.el;e[Jo]=null,G(e,`mousedown`,this._onTapStart),G(e,`touchstart`,this._onTapStart),G(e,`pointerdown`,this._onTapStart),this.nativeDraggable&&(G(e,`dragover`,this),G(e,`dragenter`,this)),Array.prototype.forEach.call(e.querySelectorAll(`[draggable]`),function(e){e.removeAttribute(`draggable`)}),this._onDrop(),this._disableDelayedDragEvents(),gs.splice(gs.indexOf(this.el),1),this.el=e=null},_hideClone:function(){if(!ss){if(rs(`hideClone`,this),$.eventCanceled)return;K(Q,`display`,`none`),this.options.removeCloneOnHide&&Q.parentNode&&Q.parentNode.removeChild(Q),ss=!0}},_showClone:function(e){if(e.lastPutMode!==`clone`){this._hideClone();return}if(ss){if(rs(`showClone`,this),$.eventCanceled)return;J.parentNode==Z&&!this.options.group.revertClone?Z.insertBefore(Q,J):as?Z.insertBefore(Q,as):Z.appendChild(Q),this.options.group.revertClone&&this.animate(J,Q),K(Q,`display`,``),ss=!1}}};function Ks(e){e.dataTransfer&&(e.dataTransfer.dropEffect=`move`),e.cancelable&&e.preventDefault()}function qs(e,t,n,r,i,a,o,s){var c,l=e[Jo],u=l.options.onMove,d;return window.CustomEvent&&!vo&&!yo?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||q(t),c.willInsertAfter=s,c.originalEvent=o,e.dispatchEvent(c),u&&(d=u.call(l,c,o)),d}function Js(e){e.draggable=!1}function Ys(){js=!1}function Xs(e,t,n){var r=q(Po(n.el,0,n.options,!0)),i=qo(n.el,n.options,X),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 Zs(e,t,n){var r=q(Fo(n.el,n.options.draggable)),i=qo(n.el,n.options,X),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 Qs(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&&Os<l*i){if(!Es&&(Ts===1?c>u+l*a/2:c<d-l*a/2)&&(Es=!0),Es)f=!0;else if(Ts===1?c<u+Os:c>d-Os)return-Ts}else if(c>u+l*(1-i)/2&&c<d-l*(1-i)/2)return $s(t)}return f||=o,f&&(c<u+l*a/2||c>d-l*a/2)?c>u+l/2?1:-1:0}function $s(e){return Io(J)<Io(e)?1:-1}function ec(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 tc(e){Ms.length=0;for(var t=e.getElementsByTagName(`input`),n=t.length;n--;){var r=t[n];r.checked&&Ms.push(r)}}function nc(e){return setTimeout(e,0)}function rc(e){return clearTimeout(e)}Ns&&W(document,`touchmove`,function(e){($.active||ms)&&e.cancelable&&e.preventDefault()}),$.utils={on:W,off:G,css:K,find:jo,is:function(e,t){return!!Do(e,t,e,!1)},extend:Bo,throttle:Uo,closest:Do,toggleClass:ko,clone:Ko,index:Io,nextTick:nc,cancelNextTick:rc,detectDirection:Rs,getChild:Po},$.get=function(e){return e[Jo]},$.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&&($.utils=lo(lo({},$.utils),e.utils)),es.mount(e)})},$.create=function(e,t){return new $(e,t)},$.version=go;var ic=[],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?W(document,`dragover`,this._handleAutoScroll):this.options.supportPointer?W(document,`pointermove`,this._handleFallbackAutoScroll):t.touches?W(document,`touchmove`,this._handleFallbackAutoScroll):W(document,`mousemove`,this._handleFallbackAutoScroll)},dragOverCompleted:function(e){var t=e.originalEvent;!this.options.dragOverBubble&&!t.rootEl&&this._handleAutoScroll(t)},drop:function(){this.sortable.nativeDraggable?G(document,`dragover`,this._handleAutoScroll):(G(document,`pointermove`,this._handleFallbackAutoScroll),G(document,`touchmove`,this._handleFallbackAutoScroll),G(document,`mousemove`,this._handleFallbackAutoScroll)),mc(),pc(),Wo()},nulling:function(){uc=oc=ac=sc=dc=cc=lc=null,ic.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||yo||vo||xo){hc(e,this.options,a,t);var o=zo(a,!0);sc&&(!dc||r!==cc||i!==lc)&&(dc&&mc(),dc=setInterval(function(){var a=zo(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||zo(a,!0)===Mo()){pc();return}hc(e,this.options,zo(a,!1),!1)}}},po(e,{pluginName:`scroll`,initializeByDefault:!0})}function pc(){ic.forEach(function(e){clearInterval(e.pid)}),ic=[]}function mc(){clearInterval(dc)}var hc=Uo(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=Mo(),l=!1,u;oc!==n&&(oc=n,pc(),ac=t.scroll,u=t.scrollFn,ac===!0&&(ac=zo(n,!0)));var d=0,f=ac;do{var p=f,m=q(p),h=m.top,g=m.bottom,_=m.left,v=m.right,y=m.width,b=m.height,x=void 0,S=void 0,ee=p.scrollWidth,C=p.scrollHeight,w=K(p),T=p.scrollLeft,E=p.scrollTop;p===c?(x=y<ee&&(w.overflowX===`auto`||w.overflowX===`scroll`||w.overflowX===`visible`),S=b<C&&(w.overflowY===`auto`||w.overflowY===`scroll`||w.overflowY===`visible`)):(x=y<ee&&(w.overflowX===`auto`||w.overflowX===`scroll`),S=b<C&&(w.overflowY===`auto`||w.overflowY===`scroll`));var te=x&&(Math.abs(v-i)<=o&&T+y<ee)-(Math.abs(_-i)<=o&&!!T),ne=S&&(Math.abs(g-a)<=o&&E+b<C)-(Math.abs(h-a)<=o&&!!E);if(!ic[d])for(var re=0;re<=d;re++)ic[re]||(ic[re]={});(ic[d].vx!=te||ic[d].vy!=ne||ic[d].el!==p)&&(ic[d].el=p,ic[d].vx=te,ic[d].vy=ne,clearInterval(ic[d].pid),(te!=0||ne!=0)&&(l=!0,ic[d].pid=setInterval(function(){r&&this.layer===0&&$.active._onTouchMove(uc);var t=ic[this.layer].vy?ic[this.layer].vy*s:0,n=ic[this.layer].vx?ic[this.layer].vx*s:0;typeof u==`function`&&u.call($.dragged.parentNode[Jo],n,t,e,uc,ic[this.layer].el)!==`continue`||Go(ic[this.layer].el,n,t)}.bind({layer:d}),24))),d++}while(t.bubbleScroll&&f!==c&&(f=zo(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=Po(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},po(_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},po(vc,{pluginName:`removeOnSpill`}),$.mount(new fc),$.mount(vc,_c);function yc(e){return e==null?e:JSON.parse(JSON.stringify(e))}function bc(e){ee()&&w(e)}function xc(e){ee()?T(e):_(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 t=ee()?.proxy,n=null,r=e[0],[,i,a]=e;Array.isArray(l(i))||(a=i,i=null);let o=null,{immediate:s=!0,clone:c=yc,forceFallback:u,fallbackOnBody:d,customUpdate:f}=l(a)??{};function p(e){let{from:t,oldIndex:r,item:a}=e,o=Array.from(t.childNodes);n=u&&!d?o.slice(0,-1):o;let s=l(l(i)?.[r]),f=c(s);wc(s,f),a[Ec]=f}function m(e){let t=e.item[Ec];if(!Za(t)){if(eo(e.item),b(i)){let n=[...l(i)];i.value=Xa(n,e.newDraggableIndex,t);return}Xa(l(i),e.newDraggableIndex,t)}}function h(e){let{from:t,item:n,oldIndex:r,oldDraggableIndex:a,pullMode:o,clone:s}=e;if($a(t,n,r),o===`clone`){eo(s);return}if(b(i)){let e=[...l(i)];i.value=Ya(e,a);return}Ya(l(i),a)}function g(e){if(f){f(e);return}let{from:t,item:n,oldIndex:r,oldDraggableIndex:a,newDraggableIndex:o}=e;if(eo(n),$a(t,n,r),b(i)){let e=[...l(i)];i.value=Ka(e,a,o);return}Ka(l(i),a,o)}function v(e){let{newIndex:t,oldIndex:r,from:i,to:a}=e,o=null,s=t===r&&i===a;try{if(s){let e=null;n?.some((t,r)=>{if(e&&n?.length!==a.childNodes.length)return i.insertBefore(e,t.nextSibling),!0;let o=a.childNodes[r];e=a?.replaceChild(t,o)})}}catch(e){o=e}finally{n=null}_(()=>{if(wc(),o)throw o})}let y={onUpdate:g,onStart:p,onAdd:m,onRemove:h,onEnd:v};function x(e){let n=l(r);return e||=Qa(n)?to(n,t?.$el):n,e&&!io(e)&&(e=e.$el),e||Ga(`Root element not found`),e}function S(){let e=l(a)??{},{immediate:t,clone:n}=e,r=Ha(e,[`immediate`,`clone`]);return ao(r,(e,t)=>{oo(e)&&(r[e]=(e,...n)=>(so(e,Tc()),t(e,...n)))}),ro(i===null?{}:y,r)}let C=e=>{e=x(e),o&&w.destroy(),o=new $(e,S())};fe(()=>a,()=>{o&&ao(S(),(e,t)=>{o?.option(e,t)})},{deep:!0});let w={option:(e,t)=>o?.option(e,t),destroy:()=>{o?.destroy(),o=null},save:()=>o?.save(),toArray:()=>o?.toArray(),closest:(...e)=>o?.closest(...e)};return xc(()=>{s&&C()}),bc(w.destroy),Va({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=H({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:r,emit:i,expose:a,attrs:o}){let s=Oc.reduce((e,t)=>{let n=`on${t.replace(/^\S/,e=>e.toUpperCase())}`;return e[n]=(...e)=>i(t,...e),e},{}),c=R(()=>{let t=h(e),{modelValue:n}=t,r=Ha(t,[`modelValue`]),i=Object.entries(r).reduce((e,[t,n])=>{let r=l(n);return r!==void 0&&(e[t]=r),e},{});return Va(Va({},s),Ja(Va(Va({},o),i)))}),u=R({get:()=>e.modelValue,set:e=>i(`update:modelValue`,e)}),d=t(),f=S(Dc(e.target||d,u,c));return a(f),()=>n(e.tag||`div`,{ref:d},(r?.default)?.call(r,f))}}),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=C(H({__name:`ServiceConfigLogs`,props:{service:{}},emits:[`save`],setup(e,{emit:n}){let r=e,i=n,a=c(),{t:o}=ne(),u=qe(),d=t([...r.service.parserIds??[]]);fe(()=>r.service,e=>{d.value=[...e.parserIds??[]]});let f=R(()=>[...u.parsers].filter(e=>e.enabled).sort((e,t)=>e.name.localeCompare(t.name))),p=R(()=>f.value.filter(e=>!d.value.includes(e.id))),m=t(d.value.map(e=>u.parsers.find(t=>t.id===e)).filter(e=>e!==void 0));fe(d,e=>{let t=m.value.filter(t=>e.includes(t.id)),n=e.filter(e=>!t.find(t=>t.id===e)).map(e=>u.parsers.find(t=>t.id===e)).filter(e=>e!==void 0);m.value=[...t,...n]}),fe(()=>u.parsers,()=>{m.value=d.value.map(e=>u.parsers.find(t=>t.id===e)).filter(e=>e!==void 0)});let h=t(null);function g(e){if(!e)return;let t=u.parsers.find(t=>t.id===e);t&&(d.value=[...d.value,e],m.value=[...m.value,t],h.value=null,y())}function _(e){d.value=d.value.filter(t=>t!==e),m.value=m.value.filter(t=>t.id!==e),y()}function v(){d.value=m.value.map(e=>e.id),y()}function y(){i(`save`,{parserIds:m.value.map(e=>e.id)})}return T(()=>{u.fetchParsers(),u.subscribeParsers()}),w(()=>{u.unsubscribeParsers()}),(e,t)=>(s(),D(`div`,jc,[I(`div`,Mc,[I(`div`,Nc,[t[3]||=I(`i`,{class:`pi pi-code`},null,-1),I(`span`,null,N(l(o)(`serviceConfigLogs.jsParsers`)),1)]),I(`small`,Pc,N(l(o)(`serviceConfigLogs.jsParsersHint`)),1)]),I(`div`,Fc,[I(`div`,Ic,[t[4]||=I(`i`,{class:`pi pi-sort-alt`},null,-1),I(`span`,null,N(l(o)(`serviceConfigLogs.executionOrder`)),1),I(`small`,Lc,N(l(o)(`serviceConfigLogs.executionOrderHint`)),1)]),m.value.length>0?(s(),P(l(kc),{key:0,modelValue:m.value,"onUpdate:modelValue":t[0]||=e=>m.value=e,animation:150,handle:`.drag-handle`,class:`config-log-parsers__drag-list`,"data-testid":`log-parsers-drag-list`,onEnd:v},{default:k(()=>[(s(!0),D(V,null,ve(m.value,(e,n)=>(s(),D(`div`,{key:e.id,class:`config-log-parsers__drag-row`,"data-testid":`log-parsers-drag-row`},[t[5]||=I(`span`,{class:`drag-handle`,"data-testid":`drag-handle`},[I(`i`,{class:`pi pi-bars`})],-1),I(`span`,Rc,N(n+1),1),I(`span`,zc,N(e.name),1),e.builtin?(s(),P(l(O),{key:0,severity:`secondary`,class:`config-log-parsers__builtin-badge`},{default:k(()=>[U(N(l(o)(`serviceConfigLogs.builtin`)),1)]),_:1})):M(``,!0),e.enabled?M(``,!0):(s(),P(l(O),{key:1,severity:`warn`,class:`config-log-parsers__disabled-badge`},{default:k(()=>[U(N(l(o)(`serviceConfigLogs.disabled`)),1)]),_:1})),x(l(F),{icon:`pi pi-trash`,severity:`danger`,text:``,size:`small`,class:`config-log-parsers__delete`,onClick:t=>_(e.id)},null,8,[`onClick`])]))),128))]),_:1},8,[`modelValue`])):M(``,!0),m.value.length===0?(s(),D(`div`,Bc,N(l(o)(`serviceConfigLogs.empty`)),1)):M(``,!0),I(`div`,Vc,[x(l(re),{modelValue:h.value,"onUpdate:modelValue":[t[1]||=e=>h.value=e,g],options:p.value,"option-label":`name`,"option-value":`id`,placeholder:l(o)(`serviceConfigLogs.addParser`),class:`config-log-parsers__add-select`,loading:l(u).loading,disabled:p.value.length===0},{option:k(({option:e})=>[I(`span`,null,N(e.name),1),e.builtin?(s(),P(l(O),{key:0,severity:`secondary`,class:`ml-2`,style:{"font-size":`0.65rem`,padding:`0.1rem 0.35rem`}},{default:k(()=>[U(N(l(o)(`serviceConfigLogs.builtin`)),1)]),_:1})):M(``,!0)]),_:1},8,[`modelValue`,`options`,`placeholder`,`loading`,`disabled`])])]),I(`div`,Hc,[x(l(F),{label:l(o)(`serviceConfigLogs.manageParsers`),icon:`pi pi-cog`,severity:`secondary`,outlined:``,size:`small`,onClick:t[2]||=e=>l(a).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=C(H({__name:`ServiceConfigLogSources`,props:{service:{}},emits:[`save`],setup(e,{emit:n}){let{t:i}=ne(),a=e,o=n,c=[{label:`Console (stdout/stderr)`,value:`console`,icon:`pi-terminal`},{label:`File`,value:`file`,icon:`pi-file`},{label:`MongoDB`,value:`mongo`,icon:`pi-database`},{label:`MySQL`,value:`mysql`,icon:`pi-database`}];function u(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 d=t([...a.service.logSources??[]]);fe(()=>a.service.logSources,e=>{d.value=[...e??[]]});let f=t(!1),p=t(null),m=t(u(`console`));function h(){p.value=null,m.value=u(`file`),f.value=!0}function g(e){p.value=e,m.value={...d.value[e]},f.value=!0}function _(e){m.value=u(e)}function v(){p.value===null?d.value=[...d.value,{...m.value}]:d.value=d.value.map((e,t)=>t===p.value?{...m.value}:e),f.value=!1,o(`save`,{logSources:d.value})}function y(e){d.value=d.value.filter((t,n)=>n!==e),o(`save`,{logSources:d.value})}function b(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 S(e){return e===`console`?`pi-terminal`:e===`file`?`pi-file`:`pi-database`}return(e,t)=>(s(),D(`div`,Wc,[I(`div`,Gc,[I(`div`,Kc,[t[23]||=I(`i`,{class:`pi pi-inbox`},null,-1),I(`span`,null,N(l(i)(`serviceConfigLogSources.title`)),1)]),I(`small`,qc,N(l(i)(`serviceConfigLogSources.hint`)),1)]),d.value.length>0?(s(),D(`div`,Jc,[(s(!0),D(V,null,ve(d.value,(e,t)=>(s(),D(`div`,{key:t,class:`source-row`},[I(`i`,{class:le(`pi ${S(e.type)} source-row__icon`)},null,2),I(`div`,Yc,[I(`span`,Xc,N(e.type),1),I(`span`,Zc,N(b(e)),1)]),I(`div`,Qc,[x(l(F),{icon:`pi pi-pencil`,text:``,size:`small`,severity:`secondary`,onClick:e=>g(t)},null,8,[`onClick`]),x(l(F),{icon:`pi pi-trash`,text:``,size:`small`,severity:`danger`,onClick:e=>y(t)},null,8,[`onClick`])])]))),128))])):(s(),D(`div`,$c,[t[24]||=I(`i`,{class:`pi pi-inbox config-log-sources__empty-icon`},null,-1),I(`p`,null,N(l(i)(`serviceConfigLogSources.empty`)),1),I(`small`,null,N(l(i)(`serviceConfigLogSources.emptyHint`)),1)])),I(`div`,el,[x(l(F),{label:l(i)(`serviceConfigLogSources.addSource`),icon:`pi pi-plus`,size:`small`,onClick:h},null,8,[`label`])]),x(l(r),{visible:f.value,"onUpdate:visible":t[22]||=e=>f.value=e,header:p.value===null?l(i)(`serviceConfigLogSources.addDialog`):l(i)(`serviceConfigLogSources.editDialog`),modal:``,style:{width:`520px`}},{footer:k(()=>[x(l(F),{label:l(i)(`serviceConfigLogSources.cancel`),severity:`secondary`,outlined:``,onClick:t[21]||=e=>f.value=!1},null,8,[`label`]),x(l(F),{label:p.value===null?l(i)(`serviceConfigLogSources.add`):l(i)(`serviceConfigLogSources.save`),icon:`pi pi-check`,onClick:v},null,8,[`label`])]),default:k(()=>[I(`div`,tl,[I(`div`,nl,[I(`label`,rl,N(l(i)(`serviceConfigLogSources.type`)),1),x(l(re),{"input-id":`lsrc-type`,"model-value":m.value.type,options:c,"option-label":`label`,"option-value":`value`,class:`dialog-form__input`,"onUpdate:modelValue":_},null,8,[`model-value`])]),m.value.type===`file`?(s(),D(V,{key:0},[I(`div`,il,[I(`label`,al,[U(N(l(i)(`serviceConfigLogSources.path`))+` `,1),t[25]||=I(`span`,{class:`dialog-form__required`},`*`,-1)]),x(l(L),{id:`lsrc-path-file`,modelValue:m.value.path,"onUpdate:modelValue":t[0]||=e=>m.value.path=e,class:`dialog-form__input`,placeholder:`/var/log/app.log`},null,8,[`modelValue`])]),I(`div`,ol,[I(`label`,sl,N(l(i)(`serviceConfigLogSources.encoding`)),1),x(l(L),{id:`lsrc-encoding-file`,modelValue:m.value.encoding,"onUpdate:modelValue":t[1]||=e=>m.value.encoding=e,class:`dialog-form__input`,placeholder:`utf-8`},null,8,[`modelValue`])]),I(`div`,cl,[I(`label`,ll,N(l(i)(`serviceConfigLogSources.startFromEnd`)),1),x(l(Pe),{"input-id":`lsrc-startFromEnd-file`,modelValue:m.value.startFromEnd,"onUpdate:modelValue":t[2]||=e=>m.value.startFromEnd=e},null,8,[`modelValue`])]),I(`div`,ul,[I(`label`,dl,N(l(i)(`serviceConfigLogSources.createIfNotExists`)),1),x(l(Pe),{"input-id":`lsrc-createIfNotExists-file`,modelValue:m.value.createIfNotExists,"onUpdate:modelValue":t[3]||=e=>m.value.createIfNotExists=e},null,8,[`modelValue`])])],64)):m.value.type===`mongo`?(s(),D(V,{key:1},[I(`div`,fl,[I(`label`,pl,[U(N(l(i)(`serviceConfigLogSources.connectionString`))+` `,1),t[26]||=I(`span`,{class:`dialog-form__required`},`*`,-1)]),x(l(L),{id:`lsrc-connectionString-mongo`,modelValue:m.value.connectionString,"onUpdate:modelValue":t[4]||=e=>m.value.connectionString=e,class:`dialog-form__input`,placeholder:`mongodb://user:pass@host:27017`,type:`password`,autocomplete:`off`},null,8,[`modelValue`])]),I(`div`,ml,[I(`div`,hl,[t[27]||=I(`label`,{for:`lsrc-database-mongo`,class:`dialog-form__label`},[U(`Database `),I(`span`,{class:`dialog-form__required`},`*`)],-1),x(l(L),{id:`lsrc-database-mongo`,modelValue:m.value.database,"onUpdate:modelValue":t[5]||=e=>m.value.database=e,class:`dialog-form__input`,placeholder:`mydb`},null,8,[`modelValue`])]),I(`div`,gl,[t[28]||=I(`label`,{for:`lsrc-collection-mongo`,class:`dialog-form__label`},[U(`Collection `),I(`span`,{class:`dialog-form__required`},`*`)],-1),x(l(L),{id:`lsrc-collection-mongo`,modelValue:m.value.collection,"onUpdate:modelValue":t[6]||=e=>m.value.collection=e,class:`dialog-form__input`,placeholder:`logs`},null,8,[`modelValue`])])]),I(`div`,_l,[I(`div`,vl,[t[29]||=I(`label`,{for:`lsrc-timestampField-mongo`,class:`dialog-form__label`},`Timestamp field`,-1),x(l(L),{id:`lsrc-timestampField-mongo`,modelValue:m.value.timestampField,"onUpdate:modelValue":t[7]||=e=>m.value.timestampField=e,class:`dialog-form__input`,placeholder:`timestamp`},null,8,[`modelValue`])]),I(`div`,yl,[t[30]||=I(`label`,{for:`lsrc-messageField-mongo`,class:`dialog-form__label`},`Message field`,-1),x(l(L),{id:`lsrc-messageField-mongo`,modelValue:m.value.messageField,"onUpdate:modelValue":t[8]||=e=>m.value.messageField=e,class:`dialog-form__input`,placeholder:`message`},null,8,[`modelValue`])])]),I(`div`,bl,[t[31]||=I(`label`,{for:`lsrc-levelField-mongo`,class:`dialog-form__label`},[U(`Level field `),I(`span`,{class:`dialog-form__hint`},`(optional)`)],-1),x(l(L),{id:`lsrc-levelField-mongo`,modelValue:m.value.levelField,"onUpdate:modelValue":t[9]||=e=>m.value.levelField=e,class:`dialog-form__input`,placeholder:`level`},null,8,[`modelValue`])])],64)):m.value.type===`mysql`?(s(),D(V,{key:2},[I(`div`,xl,[I(`div`,Sl,[t[32]||=I(`label`,{for:`lsrc-host-mysql`,class:`dialog-form__label`},[U(`Host `),I(`span`,{class:`dialog-form__required`},`*`)],-1),x(l(L),{id:`lsrc-host-mysql`,modelValue:m.value.host,"onUpdate:modelValue":t[10]||=e=>m.value.host=e,class:`dialog-form__input`,placeholder:`localhost`},null,8,[`modelValue`])]),I(`div`,Cl,[t[33]||=I(`label`,{for:`lsrc-port-mysql`,class:`dialog-form__label`},`Port`,-1),x(l(Me),{"input-id":`lsrc-port-mysql`,modelValue:m.value.port,"onUpdate:modelValue":t[11]||=e=>m.value.port=e,min:1,max:65535,class:`dialog-form__input`},null,8,[`modelValue`])])]),I(`div`,wl,[I(`div`,Tl,[t[34]||=I(`label`,{for:`lsrc-user-mysql`,class:`dialog-form__label`},[U(`User `),I(`span`,{class:`dialog-form__required`},`*`)],-1),x(l(L),{id:`lsrc-user-mysql`,modelValue:m.value.user,"onUpdate:modelValue":t[12]||=e=>m.value.user=e,class:`dialog-form__input`,placeholder:`root`},null,8,[`modelValue`])]),I(`div`,El,[t[35]||=I(`label`,{for:`lsrc-password-mysql`,class:`dialog-form__label`},`Password`,-1),x(l(L),{id:`lsrc-password-mysql`,modelValue:m.value.password,"onUpdate:modelValue":t[13]||=e=>m.value.password=e,class:`dialog-form__input`,type:`password`,autocomplete:`new-password`},null,8,[`modelValue`])])]),I(`div`,Dl,[I(`div`,Ol,[t[36]||=I(`label`,{for:`lsrc-database-mysql`,class:`dialog-form__label`},[U(`Database `),I(`span`,{class:`dialog-form__required`},`*`)],-1),x(l(L),{id:`lsrc-database-mysql`,modelValue:m.value.database,"onUpdate:modelValue":t[14]||=e=>m.value.database=e,class:`dialog-form__input`,placeholder:`app_db`},null,8,[`modelValue`])]),I(`div`,kl,[t[37]||=I(`label`,{for:`lsrc-table-mysql`,class:`dialog-form__label`},[U(`Table `),I(`span`,{class:`dialog-form__required`},`*`)],-1),x(l(L),{id:`lsrc-table-mysql`,modelValue:m.value.table,"onUpdate:modelValue":t[15]||=e=>m.value.table=e,class:`dialog-form__input`,placeholder:`logs`},null,8,[`modelValue`])])]),I(`div`,Al,[I(`div`,jl,[t[38]||=I(`label`,{for:`lsrc-timestampColumn-mysql`,class:`dialog-form__label`},`Timestamp column`,-1),x(l(L),{id:`lsrc-timestampColumn-mysql`,modelValue:m.value.timestampColumn,"onUpdate:modelValue":t[16]||=e=>m.value.timestampColumn=e,class:`dialog-form__input`,placeholder:`created_at`},null,8,[`modelValue`])]),I(`div`,Ml,[t[39]||=I(`label`,{for:`lsrc-messageColumn-mysql`,class:`dialog-form__label`},`Message column`,-1),x(l(L),{id:`lsrc-messageColumn-mysql`,modelValue:m.value.messageColumn,"onUpdate:modelValue":t[17]||=e=>m.value.messageColumn=e,class:`dialog-form__input`,placeholder:`message`},null,8,[`modelValue`])])]),I(`div`,Nl,[I(`div`,Pl,[t[40]||=I(`label`,{for:`lsrc-levelColumn-mysql`,class:`dialog-form__label`},[U(`Level column `),I(`span`,{class:`dialog-form__hint`},`(optional)`)],-1),x(l(L),{id:`lsrc-levelColumn-mysql`,modelValue:m.value.levelColumn,"onUpdate:modelValue":t[18]||=e=>m.value.levelColumn=e,class:`dialog-form__input`,placeholder:`level`},null,8,[`modelValue`])]),I(`div`,Fl,[t[41]||=I(`label`,{for:`lsrc-pollIntervalMs-mysql`,class:`dialog-form__label`},`Poll interval (ms)`,-1),x(l(Me),{"input-id":`lsrc-pollIntervalMs-mysql`,modelValue:m.value.pollIntervalMs,"onUpdate:modelValue":t[19]||=e=>m.value.pollIntervalMs=e,min:500,max:6e4,class:`dialog-form__input`},null,8,[`modelValue`])])]),I(`div`,Il,[t[42]||=I(`label`,{for:`lsrc-query-mysql`,class:`dialog-form__label`},[U(`Custom query `),I(`span`,{class:`dialog-form__hint`},[U(`(optional, must include `),I(`code`,null,`WHERE … > ?`),U(`)`)])],-1),x(l(L),{id:`lsrc-query-mysql`,modelValue:m.value.query,"onUpdate:modelValue":t[20]||=e=>m.value.query=e,class:`dialog-form__input`,placeholder:`SELECT * FROM logs WHERE created_at > ? ORDER BY id ASC`},null,8,[`modelValue`])])],64)):m.value.type===`console`?(s(),D(`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.`)):M(``,!0)])]),_:1},8,[`visible`,`header`])]))}}),[[`__scopeId`,`data-v-1ceb461a`]]),zl={class:`config-traefik`},Bl={class:`traefik-entry__fields`},Vl=C(H({__name:`ServiceConfigTraefik`,props:{service:{}},emits:[`save`],setup(e,{emit:n}){let r=e,i=n,a=t([...r.service.localUrls??[]]),o=t(null);T(async()=>{r.service.agentId&&(o.value=(await de.settings.getAgentTraefikConfig.query({agentId:r.service.agentId})).enabled)});let c=null;fe(()=>r.service,e=>{c||(a.value=[...e.localUrls??[]])});function u(){a.value=[...a.value,{url:``,port:3e3}]}function d(e){a.value=a.value.filter((t,n)=>n!==e),p()}function f(e,t,n){a.value=a.value.map((r,i)=>i===e?{...r,[t]:n}:r)}function p(){c&&clearTimeout(c),c=setTimeout(()=>{i(`save`,{localUrls:a.value.filter(e=>e.url.trim())}),c=null},150)}return(e,t)=>(s(),D(`div`,zl,[o.value===!1?(s(),P(l(se),{key:0,severity:`warn`,closable:!1},{default:k(()=>[t[1]||=U(` Traefik n'est pas activé. Configurez-le dans `,-1),x(l(Te),{to:{name:`settings`,query:{section:`agents`}}},{default:k(()=>[...t[0]||=[U(`Paramètres → Agents`,-1)]]),_:1}),t[2]||=U(` (bouton Traefik sur la ligne de l'agent) pour que ces URLs soient actives. `,-1)]),_:1})):M(``,!0),(s(!0),D(V,null,ve(a.value,(e,t)=>(s(),D(`div`,{key:t,class:`traefik-entry`},[I(`div`,Bl,[x(l(L),{"model-value":e.url,class:`traefik-entry__url`,placeholder:`mon-app.local.mondomaine.com`,"onUpdate:modelValue":e=>f(t,`url`,e),onBlur:p,onKeydown:B(A(p,[`prevent`]),[`enter`])},null,8,[`model-value`,`onUpdate:modelValue`,`onKeydown`]),x(l(Me),{"model-value":e.port,class:`traefik-entry__port`,min:1,max:65535,"use-grouping":!1,placeholder:`3000`,"onUpdate:modelValue":e=>{f(t,`port`,e??3e3),p()}},null,8,[`model-value`,`onUpdate:modelValue`]),x(l(F),{icon:`pi pi-trash`,severity:`danger`,text:``,size:`small`,onClick:e=>d(t)},null,8,[`onClick`])])]))),128)),x(l(F),{icon:`pi pi-plus`,label:`Ajouter une URL`,size:`small`,outlined:``,onClick:u})]))}}),[[`__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=C(H({__name:`ServiceConfigView`,props:{service:{},projectId:{}},emits:[`remove-service`],setup(e,{emit:t}){let n=e,r=t,{t:i}=ne(),a=Se(),o=u(),d=te(),{isDebug:f}=an(),p=E(),m=c(),h=[`general`,`commands`,`shortcuts`,`env`,`health`,`log-parsers`,`log-sources`,`traefik`],g=R(()=>{let e=p.query.configTab;return h.includes(e)?e:`general`});function _(e){m.replace({query:{...p.query,configTab:e}})}let v=R(()=>o.getByRef({id:n.projectId,orgId:d.activeOrgId})?.activeEnvironmentId);async function y(e,t){await t()?f.value&&console.debug(`[autosave] ${e} saved`):console.error(`[autosave] ${e} failed:`,a.error??`Save failed`)}async function b(e){await y(`General`,()=>a.update(n.service.id,e))}async function S(e){await y(`Commands`,()=>a.update(n.service.id,e))}async function ee(e){await y(`Health check`,()=>a.update(n.service.id,{healthCheck:e??null}))}async function C(e){await y(`Shortcuts`,()=>a.update(n.service.id,{shortcuts:e}))}async function w(e){await y(`Docker`,()=>a.update(n.service.id,{dockerConfig:e}))}async function T(e){await y(`Log parsers`,()=>a.update(n.service.id,e))}async function re(e){await y(`Log sources`,()=>a.update(n.service.id,e))}async function O(e){await y(`Traefik`,()=>a.update(n.service.id,e))}function ie(){r(`remove-service`,n.service.id)}return(t,n)=>(s(),D(`div`,Hl,[I(`div`,Ul,[I(`h2`,Wl,N(l(i)(`serviceConfigView.title`)),1),I(`div`,Gl,[x(l(F),{label:l(i)(`serviceConfigView.remove`),icon:`pi pi-trash`,severity:`danger`,size:`small`,outlined:``,onClick:ie},null,8,[`label`])])]),x(l(Le),{value:g.value,class:`config-view__tabs`,"onUpdate:value":_},{default:k(()=>[x(l(Fe),null,{default:k(()=>[x(l(Re),{value:`general`,"data-testid":`tab-config`},{default:k(()=>[n[0]||=I(`i`,{class:`pi pi-cog tab-icon`},null,-1),I(`span`,null,N(l(i)(`serviceConfigView.tabGeneral`)),1)]),_:1}),x(l(Re),{value:`commands`,"data-testid":`tab-commands`},{default:k(()=>[n[1]||=I(`i`,{class:`pi pi-code tab-icon`},null,-1),I(`span`,null,N(l(i)(`serviceConfigView.tabCommands`)),1)]),_:1}),x(l(Re),{value:`shortcuts`,"data-testid":`tab-shortcuts`},{default:k(()=>[n[2]||=I(`i`,{class:`pi pi-bolt tab-icon`},null,-1),I(`span`,null,N(l(i)(`serviceConfigView.tabShortcuts`)),1)]),_:1}),x(l(Re),{value:`env`,"data-testid":`tab-env`},{default:k(()=>[n[3]||=I(`i`,{class:`pi pi-database tab-icon`},null,-1),I(`span`,null,N(l(i)(`serviceConfigView.tabEnvironment`)),1)]),_:1}),x(l(Re),{value:`health`},{default:k(()=>[n[4]||=I(`i`,{class:`pi pi-heart tab-icon`},null,-1),I(`span`,null,N(l(i)(`serviceConfigView.tabHealthCheck`)),1)]),_:1}),x(l(Re),{value:`log-parsers`,"data-testid":`tab-log-parsers`},{default:k(()=>[n[5]||=I(`i`,{class:`pi pi-list tab-icon`},null,-1),I(`span`,null,N(l(i)(`serviceConfigView.tabLogParsers`)),1)]),_:1}),x(l(Re),{value:`log-sources`},{default:k(()=>[n[6]||=I(`i`,{class:`pi pi-inbox tab-icon`},null,-1),I(`span`,null,N(l(i)(`serviceConfigView.tabLogSources`)),1)]),_:1}),x(l(Re),{value:`traefik`},{default:k(()=>[...n[7]||=[I(`i`,{class:`pi pi-server tab-icon`},null,-1),I(`span`,null,`Traefik`,-1)]]),_:1})]),_:1}),x(l(Ie),null,{default:k(()=>[x(l(ze),{value:`general`},{default:k(()=>[x(Vn,{service:e.service,onSave:b},null,8,[`service`])]),_:1}),x(l(ze),{value:`commands`},{default:k(()=>[x(mi,{service:e.service,onSave:S,onDockerSave:w},null,8,[`service`])]),_:1}),x(l(ze),{value:`shortcuts`,"data-testid":`tabpanel-shortcuts`},{default:k(()=>[x(Fa,{service:e.service,onSave:C},null,8,[`service`])]),_:1}),x(l(ze),{value:`env`},{default:k(()=>[x(ea,{service:e.service,"project-id":e.projectId,"active-environment-id":v.value},null,8,[`service`,`project-id`,`active-environment-id`])]),_:1}),x(l(ze),{value:`health`},{default:k(()=>[x(Ca,{service:e.service,onSave:ee},null,8,[`service`])]),_:1}),x(l(ze),{value:`log-parsers`,"data-testid":`tabpanel-log-parsers`},{default:k(()=>[x(Uc,{service:e.service,onSave:T},null,8,[`service`])]),_:1}),x(l(ze),{value:`log-sources`},{default:k(()=>[x(Rl,{service:e.service,onSave:re},null,8,[`service`])]),_:1}),x(l(ze),{value:`traefik`},{default:k(()=>[x(Vl,{service:e.service,onSave:O},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=C(H({__name:`ServiceDetailPage`,setup(e){let t=E(),n=c(),r=ye(),i=p(),{t:a}=ne(),o=Se(),d=oe(),f=u(),{setServiceContext:m}=Ee(),h=R(()=>t.params.id);fe(h,e=>m(e),{immediate:!0}),w(()=>m(null));let _=R(()=>{let e=t.params.tab;return e===`terminal`||e===`metrics`||e===`config`||e===`git`||e===`wiki`?e:`terminal`}),v=R(()=>o.getById(h.value)),y=R(()=>d.getByService(h.value)),b=R(()=>f.currentProject?.id??``);function x(e){let t=o.getById(e);i.require({message:a(`serviceDetail.deleteConfirmMessage`,{name:t?.name??e}),header:a(`serviceDetail.deleteConfirmHeader`),icon:`pi pi-exclamation-triangle`,rejectLabel:a(`actions.cancel`),acceptLabel:a(`actions.delete`),acceptProps:{severity:`danger`},accept:async()=>{await o.remove(e)&&(r.add({severity:`success`,summary:a(`serviceDetail.removed`),detail:a(`serviceDetail.deleted`),life:3e3}),n.push(`/`))}})}return(e,t)=>v.value?(s(),D(`div`,ql,[_.value===`terminal`?(s(),P(Wt,{key:`terminal-`+h.value,service:v.value,processes:y.value},null,8,[`service`,`processes`])):_.value===`metrics`?(s(),P(tn,{key:`metrics-`+h.value,service:v.value,processes:y.value},null,8,[`service`,`processes`])):_.value===`config`?(s(),P(Kl,{key:`config-`+h.value,service:v.value,"project-id":b.value,onRemoveService:x},null,8,[`service`,`project-id`])):_.value===`git`?(s(),P(g,{key:`git-`+h.value,"service-id":h.value},null,8,[`service-id`])):_.value===`wiki`?(s(),P(Je,{key:`wiki-`+h.value,scope:`service:${h.value}`},null,8,[`scope`])):M(``,!0)])):(s(),D(`div`,Jl,[I(`p`,null,N(l(a)(`serviceDetail.notFound`)),1)]))}}),[[`__scopeId`,`data-v-e3e9fe7f`]]);export{Yl as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{Da as e,Gi as t,Hn as n,Ia as r,It as i,Q as ee,Rt as a,Si as o,Ta as te,Tn as s,Vi as ne,Vn as re,Vt as ie,Zn as ae,Zt as c,_i as l,c as oe,ca as se,ci as u,gi as d,ha as f,hn as p,kn as m,mi as h,on as g,pi as _,qi as ce,qn as le,si as v,tt as ue,ui as y,un as de,wi as b}from"./index-jkn2qFGx.js";import{n as x}from"./plus-DDImMZMm.js";import{t as fe}from"./fieldset-Bg0onu_4.js";import{t as pe}from"./toggleswitch-OFGzUye7.js";import{t as me}from"./autocomplete-DxlR6B1n.js";import{t as S}from"./divider-CUaRW68C.js";var he={class:`service-form-page`},ge={class:`page-header`},_e={key:0,class:`restart-banner`},ve={key:1,class:`loading-container`},ye={class:`form-section`},be={class:`form-group`},C={for:`svc-project`},w={class:`form-hint`},T={class:`form-group`},E={for:`svc-agent`},D={class:`form-hint`},O={class:`form-group`},k={for:`svc-name`},A={class:`form-hint`},j={class:`form-actions`},M={class:`form-section`},N={class:`form-row`},xe={class:`form-group flex-1`},Se={for:`svc-name-edit`},Ce={class:`form-group`,style:{width:`160px`}},we={for:`svc-runner`},Te={class:`form-group`},Ee={for:`svc-agent-edit`},De={class:`form-hint`},Oe={class:`form-row`},ke={class:`form-group flex-1`},Ae={for:`svc-cwd`},je={class:`form-group`,style:{"min-width":`200px`}},Me={for:`svc-ports`},Ne={class:`form-group switch-group`},Pe={for:`svc-autorestart`},Fe={class:`form-section`},Ie={class:`section-header`},Le={key:0,class:`empty-env`},Re={class:`form-group`},ze={for:`hc-path`},Be={class:`form-row`},Ve={class:`form-group flex-1`},P={for:`hc-interval`},He={class:`form-group flex-1`},Ue={for:`hc-timeout`},We={class:`form-group flex-1`},Ge={for:`hc-retries`},F=`__inherit__`,I=s(b({__name:`ServiceFormPage`,props:{id:{}},setup(s){let b=s,I=n(),Ke=re(),L=le(),R=i(),z=ue(),B=ee(),V=ie(),qe=oe(),{t:H}=ae(),U=_(()=>!!b.id),W=_(()=>Ke.query.projectId),G=e(!1),K=e(!1),q=e(null),J=e(null),Y=e(!1),X=te({projectId:``,agentId:F,name:``,cwd:``,ports:[],runner:`native`,autoRestart:!1,healthCheck:{enabled:!1,path:``,interval:3e4,timeout:5e3,retries:3}}),Z=e([]),Je=[{label:`Native`,value:`native`},{label:`Docker`,value:`docker`}],Ye=_(()=>R.projects.map(e=>({label:e.name,value:e.id}))),Q=_(()=>[{label:H(`serviceForm.agentInherit`),value:F},...B.agents.map(e=>({label:`${e.config.name} ${e.status.connected?`(Online)`:`(Offline)`}`,value:e.config.id}))]);function Xe(){Z.value=[...Z.value,{key:``,value:``,isSecret:!1}]}function Ze(e){Z.value=Z.value.filter((t,n)=>n!==e)}function Qe(){let e={},t=!1;for(let n of Z.value){let r=n.key.trim();r&&(e[r]={value:{value:n.value,pre:``,post:``,isSecret:n.isSecret}},t=!0)}return t?e:void 0}async function $e(){if(b.id){G.value=!0;try{let e=await p.service.get.query({id:b.id});X.agentId=e.agentId??F,X.name=e.name,X.cwd=e.cwd??``,X.ports=(e.ports??[]).map(String),X.runner=e.runner,X.autoRestart=e.autoRestart,e.healthCheck&&(X.healthCheck.enabled=!0,X.healthCheck.path=e.healthCheck.path,X.healthCheck.interval=e.healthCheck.interval,X.healthCheck.timeout=e.healthCheck.timeout,X.healthCheck.retries=e.healthCheck.retries),e.variables&&typeof e.variables==`object`&&Object.keys(e.variables).length>0&&(Z.value=Object.entries(e.variables).map(([e,t])=>{let n=t;return{key:e,value:n.value.value??``,isSecret:n.value.isSecret??!1}}))}catch(e){L.add({severity:`error`,summary:H(`serviceForm.error`),detail:a(e)??H(`serviceForm.failedToLoad`),life:5e3}),I.back()}finally{G.value=!1}}}async function $(){if(!(!U.value||!b.id||K.value||G.value)){if(!X.name.trim()){L.add({severity:`warn`,summary:H(`serviceForm.validation`),detail:H(`serviceForm.nameRequired`),life:3e3});return}K.value=!0;try{let e={agentId:X.agentId===F?null:X.agentId||null,name:X.name.trim(),cwd:X.cwd.trim()||void 0,ports:X.ports.map(Number).filter(e=>e>0&&e<=65535),runner:X.runner,autoRestart:X.autoRestart,variables:Qe(),healthCheck:X.healthCheck.enabled?{path:X.healthCheck.path,interval:X.healthCheck.interval,timeout:X.healthCheck.timeout,retries:X.healthCheck.retries}:void 0};(await p.service.update.mutate({id:b.id,...e}))?.stoppedForAgentChange?(q.value=e.agentId,J.value=b.id,L.add({severity:`warn`,summary:H(`serviceForm.saved`),detail:H(`serviceForm.agentChangedServiceStopped`),life:4e3})):L.add({severity:`success`,summary:H(`serviceForm.saved`),life:1500})}catch(e){L.add({severity:`error`,summary:H(`serviceForm.error`),detail:a(e)??H(`serviceForm.failedToSave`),life:5e3})}finally{K.value=!1}}}async function et(){if(!(!q.value||!J.value)){Y.value=!0;try{await qe.start(q.value,J.value),q.value=null,J.value=null,L.add({severity:`success`,summary:H(`serviceForm.restarted`),life:2e3})}catch(e){L.add({severity:`error`,summary:H(`serviceForm.error`),detail:a(e),life:5e3})}finally{Y.value=!1}}}async function tt(){if(!X.name.trim()){L.add({severity:`warn`,summary:H(`serviceForm.validation`),detail:H(`serviceForm.nameRequired`),life:3e3});return}if(!X.projectId){L.add({severity:`warn`,summary:H(`serviceForm.validation`),detail:H(`serviceForm.projectRequired`),life:3e3});return}K.value=!0;try{let e=await z.create({name:X.name.trim(),...X.agentId&&X.agentId!==F?{agentId:X.agentId}:{}});if(!e)throw Error(z.error??`Failed to create service`);let t=R.getByRef({id:X.projectId,orgId:V.activeOrgId})??R.getById(X.projectId);await R.addService(t??{id:X.projectId},e.id),L.add({severity:`success`,summary:H(`serviceForm.serviceCreated`),detail:H(`serviceForm.configureAfterCreate`),life:3e3}),I.push({name:`service-detail`,params:{id:e.id,tab:`config`}})}catch(e){L.add({severity:`error`,summary:H(`serviceForm.error`),detail:a(e)??H(`serviceForm.failedToSave`),life:5e3})}finally{K.value=!1}}return ne(async()=>{await Promise.all([R.fetchAll(),B.fetchAll()]),W.value?X.projectId=W.value:!X.projectId&&V.activeProjectId&&(X.projectId=V.activeProjectId),U.value&&await $e()}),(e,n)=>(t(),l(`div`,he,[h(`div`,ge,[o(r(m),{icon:`pi pi-arrow-left`,severity:`secondary`,text:``,rounded:``,onClick:n[0]||=e=>r(I).back()}),h(`h1`,null,f(U.value?r(H)(`serviceForm.editTitle`):r(H)(`serviceForm.createTitle`)),1)]),J.value?(t(),l(`div`,_e,[h(`span`,null,f(r(H)(`serviceForm.agentChangedServiceStopped`)),1),o(r(m),{label:r(H)(`serviceForm.restartNow`),icon:`pi pi-play`,severity:`warning`,size:`small`,loading:Y.value,onClick:et},null,8,[`label`,`loading`]),o(r(m),{icon:`pi pi-times`,severity:`secondary`,text:``,rounded:``,size:`small`,onClick:n[1]||=e=>{J.value=null,q.value=null}})])):d(``,!0),G.value?(t(),l(`div`,ve,[o(r(de))])):(t(),l(`form`,{key:2,class:`service-form`,onSubmit:u(tt,[`prevent`])},[U.value?(t(),l(y,{key:1},[h(`div`,M,[h(`div`,N,[h(`div`,xe,[h(`label`,Se,f(r(H)(`serviceForm.nameLabelShort`)),1),o(r(g),{id:`svc-name-edit`,modelValue:X.name,"onUpdate:modelValue":n[6]||=e=>X.name=e,placeholder:`my-service`,class:`w-full`,onBlur:$,onKeydown:v(u($,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])]),h(`div`,Ce,[h(`label`,we,f(r(H)(`serviceForm.runnerLabel`)),1),o(r(c),{id:`svc-runner`,modelValue:X.runner,"onUpdate:modelValue":n[7]||=e=>X.runner=e,options:Je,optionLabel:`label`,optionValue:`value`,class:`w-full`,onChange:$},null,8,[`modelValue`])])]),h(`div`,Te,[h(`label`,Ee,f(r(H)(`serviceForm.agentLabel`)),1),o(r(c),{id:`svc-agent-edit`,modelValue:X.agentId,"onUpdate:modelValue":n[8]||=e=>X.agentId=e,options:Q.value,optionLabel:`label`,optionValue:`value`,class:`w-full`,onChange:$},null,8,[`modelValue`,`options`]),h(`small`,De,f(r(H)(`serviceForm.agentHintEdit`)),1)]),h(`div`,Oe,[h(`div`,ke,[h(`label`,Ae,f(r(H)(`serviceForm.cwdLabel`)),1),o(r(g),{id:`svc-cwd`,modelValue:X.cwd,"onUpdate:modelValue":n[9]||=e=>X.cwd=e,placeholder:`.`,class:`w-full`,onBlur:$,onKeydown:v(u($,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])]),h(`div`,je,[h(`label`,Me,f(r(H)(`serviceForm.portsLabel`)),1),o(r(me),{inputId:`svc-ports`,modelValue:X.ports,"onUpdate:modelValue":n[10]||=e=>X.ports=e,multiple:``,typeahead:!1,placeholder:r(H)(`serviceForm.portsPlaceholder`),class:`w-full`,onChange:$},null,8,[`modelValue`,`placeholder`])])]),h(`div`,Ne,[o(r(pe),{modelValue:X.autoRestart,"onUpdate:modelValue":n[11]||=e=>X.autoRestart=e,inputId:`svc-autorestart`,onChange:$},null,8,[`modelValue`]),h(`label`,Pe,f(r(H)(`serviceForm.autoRestart`)),1)])]),o(r(S)),h(`div`,Fe,[h(`div`,Ie,[h(`h3`,null,f(r(H)(`serviceForm.envVars`)),1),o(r(m),{label:r(H)(`serviceForm.addEnvVar`),icon:`pi pi-plus`,severity:`secondary`,size:`small`,onClick:Xe},null,8,[`label`])]),Z.value.length===0?(t(),l(`div`,Le,[h(`small`,null,f(r(H)(`serviceForm.noEnvVars`)),1)])):d(``,!0),(t(!0),l(y,null,ce(Z.value,(e,i)=>(t(),l(`div`,{key:i,class:`env-row`},[o(r(g),{modelValue:e.key,"onUpdate:modelValue":t=>e.key=t,placeholder:`KEY`,class:`env-key`,onBlur:$,onKeydown:v(u($,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onUpdate:modelValue`,`onKeydown`]),n[17]||=h(`span`,{class:`env-eq`},`=`,-1),o(r(g),{modelValue:e.value,"onUpdate:modelValue":t=>e.value=t,placeholder:`value`,class:`env-value`,onBlur:$,onKeydown:v(u($,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onUpdate:modelValue`,`onKeydown`]),o(r(m),{icon:`pi pi-trash`,severity:`danger`,text:``,rounded:``,size:`small`,onClick:()=>{Ze(i),$()}},null,8,[`onClick`])]))),128))]),o(r(S)),o(r(fe),{legend:r(H)(`serviceForm.healthCheck`),toggleable:!0,collapsed:!X.healthCheck.enabled,onToggle:n[16]||=e=>{X.healthCheck.enabled=!e.value,$()}},{default:se(()=>[h(`div`,Re,[h(`label`,ze,f(r(H)(`serviceForm.healthCheckPath`)),1),o(r(g),{id:`hc-path`,modelValue:X.healthCheck.path,"onUpdate:modelValue":n[12]||=e=>X.healthCheck.path=e,placeholder:`/health`,class:`w-full`,onBlur:$,onKeydown:v(u($,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])]),h(`div`,Be,[h(`div`,Ve,[h(`label`,P,f(r(H)(`serviceForm.interval`)),1),o(r(x),{id:`hc-interval`,modelValue:X.healthCheck.interval,"onUpdate:modelValue":n[13]||=e=>X.healthCheck.interval=e,min:1e3,step:1e3,class:`w-full`,onBlur:$,onKeydown:v(u($,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])]),h(`div`,He,[h(`label`,Ue,f(r(H)(`serviceForm.timeout`)),1),o(r(x),{id:`hc-timeout`,modelValue:X.healthCheck.timeout,"onUpdate:modelValue":n[14]||=e=>X.healthCheck.timeout=e,min:500,step:500,class:`w-full`,onBlur:$,onKeydown:v(u($,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])]),h(`div`,We,[h(`label`,Ge,f(r(H)(`serviceForm.retries`)),1),o(r(x),{id:`hc-retries`,modelValue:X.healthCheck.retries,"onUpdate:modelValue":n[15]||=e=>X.healthCheck.retries=e,min:0,max:20,class:`w-full`,onBlur:$,onKeydown:v(u($,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])])])]),_:1},8,[`legend`,`collapsed`]),o(r(S))],64)):(t(),l(y,{key:0},[h(`div`,ye,[h(`div`,be,[h(`label`,C,f(r(H)(`serviceForm.projectLabel`)),1),o(r(c),{id:`svc-project`,modelValue:X.projectId,"onUpdate:modelValue":n[2]||=e=>X.projectId=e,options:Ye.value,optionLabel:`label`,optionValue:`value`,placeholder:r(H)(`serviceForm.projectPlaceholder`),class:`w-full`},null,8,[`modelValue`,`options`,`placeholder`]),h(`small`,w,f(r(H)(`serviceForm.projectHint`)),1)]),h(`div`,T,[h(`label`,E,f(r(H)(`serviceForm.agentLabel`)),1),o(r(c),{id:`svc-agent`,modelValue:X.agentId,"onUpdate:modelValue":n[3]||=e=>X.agentId=e,options:Q.value,optionLabel:`label`,optionValue:`value`,placeholder:r(H)(`serviceForm.agentInherit`),"show-clear":``,class:`w-full`},null,8,[`modelValue`,`options`,`placeholder`]),h(`small`,D,f(r(H)(`serviceForm.agentHint`)),1)]),h(`div`,O,[h(`label`,k,f(r(H)(`serviceForm.nameLabel`)),1),o(r(g),{id:`svc-name`,modelValue:X.name,"onUpdate:modelValue":n[4]||=e=>X.name=e,placeholder:`my-service`,class:`w-full`},null,8,[`modelValue`]),h(`small`,A,f(r(H)(`serviceForm.nameConfigHint`)),1)])]),o(r(S)),h(`div`,j,[o(r(m),{label:r(H)(`serviceForm.cancel`),severity:`secondary`,text:``,onClick:n[5]||=e=>r(I).back()},null,8,[`label`]),o(r(m),{label:r(H)(`serviceForm.create`),icon:`pi pi-check`,loading:K.value,type:`submit`},null,8,[`label`,`loading`])])],64))],32))]))}}),[[`__scopeId`,`data-v-47e4793d`]]);export{I as default};
|
|
1
|
+
import{Da as e,Gi as t,Hn as n,Ia as r,It as i,Q as ee,Rt as a,Si as o,Ta as te,Tn as s,Vi as ne,Vn as re,Vt as ie,Zn as ae,Zt as c,_i as l,c as oe,ca as se,ci as u,gi as d,ha as f,hn as p,kn as m,mi as h,on as g,pi as _,qi as ce,qn as le,si as v,tt as ue,ui as y,un as de,wi as b}from"./index-CplRrSRh.js";import{n as x}from"./plus-C_ps1Ew7.js";import{t as fe}from"./fieldset-BV-TEl6j.js";import{t as pe}from"./toggleswitch-C2sxI6ou.js";import{t as me}from"./autocomplete-DlIRxgc8.js";import{t as S}from"./divider-BV6KyMHP.js";var he={class:`service-form-page`},ge={class:`page-header`},_e={key:0,class:`restart-banner`},ve={key:1,class:`loading-container`},ye={class:`form-section`},be={class:`form-group`},C={for:`svc-project`},w={class:`form-hint`},T={class:`form-group`},E={for:`svc-agent`},D={class:`form-hint`},O={class:`form-group`},k={for:`svc-name`},A={class:`form-hint`},j={class:`form-actions`},M={class:`form-section`},N={class:`form-row`},xe={class:`form-group flex-1`},Se={for:`svc-name-edit`},Ce={class:`form-group`,style:{width:`160px`}},we={for:`svc-runner`},Te={class:`form-group`},Ee={for:`svc-agent-edit`},De={class:`form-hint`},Oe={class:`form-row`},ke={class:`form-group flex-1`},Ae={for:`svc-cwd`},je={class:`form-group`,style:{"min-width":`200px`}},Me={for:`svc-ports`},Ne={class:`form-group switch-group`},Pe={for:`svc-autorestart`},Fe={class:`form-section`},Ie={class:`section-header`},Le={key:0,class:`empty-env`},Re={class:`form-group`},ze={for:`hc-path`},Be={class:`form-row`},Ve={class:`form-group flex-1`},P={for:`hc-interval`},He={class:`form-group flex-1`},Ue={for:`hc-timeout`},We={class:`form-group flex-1`},Ge={for:`hc-retries`},F=`__inherit__`,I=s(b({__name:`ServiceFormPage`,props:{id:{}},setup(s){let b=s,I=n(),Ke=re(),L=le(),R=i(),z=ue(),B=ee(),V=ie(),qe=oe(),{t:H}=ae(),U=_(()=>!!b.id),W=_(()=>Ke.query.projectId),G=e(!1),K=e(!1),q=e(null),J=e(null),Y=e(!1),X=te({projectId:``,agentId:F,name:``,cwd:``,ports:[],runner:`native`,autoRestart:!1,healthCheck:{enabled:!1,path:``,interval:3e4,timeout:5e3,retries:3}}),Z=e([]),Je=[{label:`Native`,value:`native`},{label:`Docker`,value:`docker`}],Ye=_(()=>R.projects.map(e=>({label:e.name,value:e.id}))),Q=_(()=>[{label:H(`serviceForm.agentInherit`),value:F},...B.agents.map(e=>({label:`${e.config.name} ${e.status.connected?`(Online)`:`(Offline)`}`,value:e.config.id}))]);function Xe(){Z.value=[...Z.value,{key:``,value:``,isSecret:!1}]}function Ze(e){Z.value=Z.value.filter((t,n)=>n!==e)}function Qe(){let e={},t=!1;for(let n of Z.value){let r=n.key.trim();r&&(e[r]={value:{value:n.value,pre:``,post:``,isSecret:n.isSecret}},t=!0)}return t?e:void 0}async function $e(){if(b.id){G.value=!0;try{let e=await p.service.get.query({id:b.id});X.agentId=e.agentId??F,X.name=e.name,X.cwd=e.cwd??``,X.ports=(e.ports??[]).map(String),X.runner=e.runner,X.autoRestart=e.autoRestart,e.healthCheck&&(X.healthCheck.enabled=!0,X.healthCheck.path=e.healthCheck.path,X.healthCheck.interval=e.healthCheck.interval,X.healthCheck.timeout=e.healthCheck.timeout,X.healthCheck.retries=e.healthCheck.retries),e.variables&&typeof e.variables==`object`&&Object.keys(e.variables).length>0&&(Z.value=Object.entries(e.variables).map(([e,t])=>{let n=t;return{key:e,value:n.value.value??``,isSecret:n.value.isSecret??!1}}))}catch(e){L.add({severity:`error`,summary:H(`serviceForm.error`),detail:a(e)??H(`serviceForm.failedToLoad`),life:5e3}),I.back()}finally{G.value=!1}}}async function $(){if(!(!U.value||!b.id||K.value||G.value)){if(!X.name.trim()){L.add({severity:`warn`,summary:H(`serviceForm.validation`),detail:H(`serviceForm.nameRequired`),life:3e3});return}K.value=!0;try{let e={agentId:X.agentId===F?null:X.agentId||null,name:X.name.trim(),cwd:X.cwd.trim()||void 0,ports:X.ports.map(Number).filter(e=>e>0&&e<=65535),runner:X.runner,autoRestart:X.autoRestart,variables:Qe(),healthCheck:X.healthCheck.enabled?{path:X.healthCheck.path,interval:X.healthCheck.interval,timeout:X.healthCheck.timeout,retries:X.healthCheck.retries}:void 0};(await p.service.update.mutate({id:b.id,...e}))?.stoppedForAgentChange?(q.value=e.agentId,J.value=b.id,L.add({severity:`warn`,summary:H(`serviceForm.saved`),detail:H(`serviceForm.agentChangedServiceStopped`),life:4e3})):L.add({severity:`success`,summary:H(`serviceForm.saved`),life:1500})}catch(e){L.add({severity:`error`,summary:H(`serviceForm.error`),detail:a(e)??H(`serviceForm.failedToSave`),life:5e3})}finally{K.value=!1}}}async function et(){if(!(!q.value||!J.value)){Y.value=!0;try{await qe.start(q.value,J.value),q.value=null,J.value=null,L.add({severity:`success`,summary:H(`serviceForm.restarted`),life:2e3})}catch(e){L.add({severity:`error`,summary:H(`serviceForm.error`),detail:a(e),life:5e3})}finally{Y.value=!1}}}async function tt(){if(!X.name.trim()){L.add({severity:`warn`,summary:H(`serviceForm.validation`),detail:H(`serviceForm.nameRequired`),life:3e3});return}if(!X.projectId){L.add({severity:`warn`,summary:H(`serviceForm.validation`),detail:H(`serviceForm.projectRequired`),life:3e3});return}K.value=!0;try{let e=await z.create({name:X.name.trim(),...X.agentId&&X.agentId!==F?{agentId:X.agentId}:{}});if(!e)throw Error(z.error??`Failed to create service`);let t=R.getByRef({id:X.projectId,orgId:V.activeOrgId})??R.getById(X.projectId);await R.addService(t??{id:X.projectId},e.id),L.add({severity:`success`,summary:H(`serviceForm.serviceCreated`),detail:H(`serviceForm.configureAfterCreate`),life:3e3}),I.push({name:`service-detail`,params:{id:e.id,tab:`config`}})}catch(e){L.add({severity:`error`,summary:H(`serviceForm.error`),detail:a(e)??H(`serviceForm.failedToSave`),life:5e3})}finally{K.value=!1}}return ne(async()=>{await Promise.all([R.fetchAll(),B.fetchAll()]),W.value?X.projectId=W.value:!X.projectId&&V.activeProjectId&&(X.projectId=V.activeProjectId),U.value&&await $e()}),(e,n)=>(t(),l(`div`,he,[h(`div`,ge,[o(r(m),{icon:`pi pi-arrow-left`,severity:`secondary`,text:``,rounded:``,onClick:n[0]||=e=>r(I).back()}),h(`h1`,null,f(U.value?r(H)(`serviceForm.editTitle`):r(H)(`serviceForm.createTitle`)),1)]),J.value?(t(),l(`div`,_e,[h(`span`,null,f(r(H)(`serviceForm.agentChangedServiceStopped`)),1),o(r(m),{label:r(H)(`serviceForm.restartNow`),icon:`pi pi-play`,severity:`warning`,size:`small`,loading:Y.value,onClick:et},null,8,[`label`,`loading`]),o(r(m),{icon:`pi pi-times`,severity:`secondary`,text:``,rounded:``,size:`small`,onClick:n[1]||=e=>{J.value=null,q.value=null}})])):d(``,!0),G.value?(t(),l(`div`,ve,[o(r(de))])):(t(),l(`form`,{key:2,class:`service-form`,onSubmit:u(tt,[`prevent`])},[U.value?(t(),l(y,{key:1},[h(`div`,M,[h(`div`,N,[h(`div`,xe,[h(`label`,Se,f(r(H)(`serviceForm.nameLabelShort`)),1),o(r(g),{id:`svc-name-edit`,modelValue:X.name,"onUpdate:modelValue":n[6]||=e=>X.name=e,placeholder:`my-service`,class:`w-full`,onBlur:$,onKeydown:v(u($,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])]),h(`div`,Ce,[h(`label`,we,f(r(H)(`serviceForm.runnerLabel`)),1),o(r(c),{id:`svc-runner`,modelValue:X.runner,"onUpdate:modelValue":n[7]||=e=>X.runner=e,options:Je,optionLabel:`label`,optionValue:`value`,class:`w-full`,onChange:$},null,8,[`modelValue`])])]),h(`div`,Te,[h(`label`,Ee,f(r(H)(`serviceForm.agentLabel`)),1),o(r(c),{id:`svc-agent-edit`,modelValue:X.agentId,"onUpdate:modelValue":n[8]||=e=>X.agentId=e,options:Q.value,optionLabel:`label`,optionValue:`value`,class:`w-full`,onChange:$},null,8,[`modelValue`,`options`]),h(`small`,De,f(r(H)(`serviceForm.agentHintEdit`)),1)]),h(`div`,Oe,[h(`div`,ke,[h(`label`,Ae,f(r(H)(`serviceForm.cwdLabel`)),1),o(r(g),{id:`svc-cwd`,modelValue:X.cwd,"onUpdate:modelValue":n[9]||=e=>X.cwd=e,placeholder:`.`,class:`w-full`,onBlur:$,onKeydown:v(u($,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])]),h(`div`,je,[h(`label`,Me,f(r(H)(`serviceForm.portsLabel`)),1),o(r(me),{inputId:`svc-ports`,modelValue:X.ports,"onUpdate:modelValue":n[10]||=e=>X.ports=e,multiple:``,typeahead:!1,placeholder:r(H)(`serviceForm.portsPlaceholder`),class:`w-full`,onChange:$},null,8,[`modelValue`,`placeholder`])])]),h(`div`,Ne,[o(r(pe),{modelValue:X.autoRestart,"onUpdate:modelValue":n[11]||=e=>X.autoRestart=e,inputId:`svc-autorestart`,onChange:$},null,8,[`modelValue`]),h(`label`,Pe,f(r(H)(`serviceForm.autoRestart`)),1)])]),o(r(S)),h(`div`,Fe,[h(`div`,Ie,[h(`h3`,null,f(r(H)(`serviceForm.envVars`)),1),o(r(m),{label:r(H)(`serviceForm.addEnvVar`),icon:`pi pi-plus`,severity:`secondary`,size:`small`,onClick:Xe},null,8,[`label`])]),Z.value.length===0?(t(),l(`div`,Le,[h(`small`,null,f(r(H)(`serviceForm.noEnvVars`)),1)])):d(``,!0),(t(!0),l(y,null,ce(Z.value,(e,i)=>(t(),l(`div`,{key:i,class:`env-row`},[o(r(g),{modelValue:e.key,"onUpdate:modelValue":t=>e.key=t,placeholder:`KEY`,class:`env-key`,onBlur:$,onKeydown:v(u($,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onUpdate:modelValue`,`onKeydown`]),n[17]||=h(`span`,{class:`env-eq`},`=`,-1),o(r(g),{modelValue:e.value,"onUpdate:modelValue":t=>e.value=t,placeholder:`value`,class:`env-value`,onBlur:$,onKeydown:v(u($,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onUpdate:modelValue`,`onKeydown`]),o(r(m),{icon:`pi pi-trash`,severity:`danger`,text:``,rounded:``,size:`small`,onClick:()=>{Ze(i),$()}},null,8,[`onClick`])]))),128))]),o(r(S)),o(r(fe),{legend:r(H)(`serviceForm.healthCheck`),toggleable:!0,collapsed:!X.healthCheck.enabled,onToggle:n[16]||=e=>{X.healthCheck.enabled=!e.value,$()}},{default:se(()=>[h(`div`,Re,[h(`label`,ze,f(r(H)(`serviceForm.healthCheckPath`)),1),o(r(g),{id:`hc-path`,modelValue:X.healthCheck.path,"onUpdate:modelValue":n[12]||=e=>X.healthCheck.path=e,placeholder:`/health`,class:`w-full`,onBlur:$,onKeydown:v(u($,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])]),h(`div`,Be,[h(`div`,Ve,[h(`label`,P,f(r(H)(`serviceForm.interval`)),1),o(r(x),{id:`hc-interval`,modelValue:X.healthCheck.interval,"onUpdate:modelValue":n[13]||=e=>X.healthCheck.interval=e,min:1e3,step:1e3,class:`w-full`,onBlur:$,onKeydown:v(u($,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])]),h(`div`,He,[h(`label`,Ue,f(r(H)(`serviceForm.timeout`)),1),o(r(x),{id:`hc-timeout`,modelValue:X.healthCheck.timeout,"onUpdate:modelValue":n[14]||=e=>X.healthCheck.timeout=e,min:500,step:500,class:`w-full`,onBlur:$,onKeydown:v(u($,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])]),h(`div`,We,[h(`label`,Ge,f(r(H)(`serviceForm.retries`)),1),o(r(x),{id:`hc-retries`,modelValue:X.healthCheck.retries,"onUpdate:modelValue":n[15]||=e=>X.healthCheck.retries=e,min:0,max:20,class:`w-full`,onBlur:$,onKeydown:v(u($,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])])])]),_:1},8,[`legend`,`collapsed`]),o(r(S))],64)):(t(),l(y,{key:0},[h(`div`,ye,[h(`div`,be,[h(`label`,C,f(r(H)(`serviceForm.projectLabel`)),1),o(r(c),{id:`svc-project`,modelValue:X.projectId,"onUpdate:modelValue":n[2]||=e=>X.projectId=e,options:Ye.value,optionLabel:`label`,optionValue:`value`,placeholder:r(H)(`serviceForm.projectPlaceholder`),class:`w-full`},null,8,[`modelValue`,`options`,`placeholder`]),h(`small`,w,f(r(H)(`serviceForm.projectHint`)),1)]),h(`div`,T,[h(`label`,E,f(r(H)(`serviceForm.agentLabel`)),1),o(r(c),{id:`svc-agent`,modelValue:X.agentId,"onUpdate:modelValue":n[3]||=e=>X.agentId=e,options:Q.value,optionLabel:`label`,optionValue:`value`,placeholder:r(H)(`serviceForm.agentInherit`),"show-clear":``,class:`w-full`},null,8,[`modelValue`,`options`,`placeholder`]),h(`small`,D,f(r(H)(`serviceForm.agentHint`)),1)]),h(`div`,O,[h(`label`,k,f(r(H)(`serviceForm.nameLabel`)),1),o(r(g),{id:`svc-name`,modelValue:X.name,"onUpdate:modelValue":n[4]||=e=>X.name=e,placeholder:`my-service`,class:`w-full`},null,8,[`modelValue`]),h(`small`,A,f(r(H)(`serviceForm.nameConfigHint`)),1)])]),o(r(S)),h(`div`,j,[o(r(m),{label:r(H)(`serviceForm.cancel`),severity:`secondary`,text:``,onClick:n[5]||=e=>r(I).back()},null,8,[`label`]),o(r(m),{label:r(H)(`serviceForm.create`),icon:`pi pi-check`,loading:K.value,type:`submit`},null,8,[`label`,`loading`])])],64))],32))]))}}),[[`__scopeId`,`data-v-47e4793d`]]);export{I as default};
|