@runeya/runeya 2.0.131 → 2.0.133
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 +3 -1
- package/agent/index.js.map +1 -1
- package/{agent-manager-QQHA3TUB.js → agent-manager-TUFAFC6U.js} +3 -3
- package/{chat-VIVAFYYS.js → chat-37VHPDPJ.js} +6 -6
- package/{chunk-IYPYVSY5.js → chunk-5EMEJNVU.js} +4 -2
- package/chunk-5EMEJNVU.js.map +1 -0
- package/{chunk-GAK3Q3J4.js → chunk-7JAJSV4L.js} +2 -2
- package/{chunk-GNVQH3VG.js → chunk-I7JHF5FE.js} +2 -2
- package/{chunk-B3QQGYKU.js → chunk-JHJHU6UX.js} +27 -12
- package/chunk-JHJHU6UX.js.map +1 -0
- package/{chunk-CVVAQTMF.js → chunk-TG44C7QT.js} +6 -6
- package/{companion-2VDWE5SP.js → companion-27RCQRZV.js} +4 -4
- package/{desktop-launcher-RSRAXX6B.js → desktop-launcher-3COY6F6H.js} +2 -2
- package/index.js +13 -5
- package/index.js.map +1 -1
- package/log-file-XAEHICMH.js +123 -0
- package/log-file-XAEHICMH.js.map +1 -0
- package/mcp-server/index.js +8 -4
- package/mcp-server/index.js.map +1 -1
- package/package.json +1 -1
- package/{settings-manager-3LMN34IT.js → settings-manager-J4QBIU3T.js} +3 -3
- package/{src-B4AVQCOQ.js → src-PSJSIJN6.js} +10 -9
- package/src-PSJSIJN6.js.map +1 -0
- package/web/assets/{AgentScalarChatInterface.vue-CsQIfwOB.js → AgentScalarChatInterface.vue-BMJAUTbn.js} +1 -1
- package/web/assets/{AgentTerminalPage-MFiSz_rt.js → AgentTerminalPage-DJny5leF.js} +1 -1
- package/web/assets/AiChatPage-Co5YwUra.js +1 -0
- package/web/assets/{AppLayout-CNeI8_tj.js → AppLayout-DhRnQ7sB.js} +1 -1
- package/web/assets/{AuditPage-Dpy84SYO.js → AuditPage-B87IuU2E.js} +1 -1
- package/web/assets/{CloudAccountPage-vlTrRoPG.js → CloudAccountPage-B9zHVg91.js} +1 -1
- package/web/assets/CloudAccountPage-ClRW-luH.js +1 -0
- package/web/assets/{CloudMessagingPage-DtPDjm-i.js → CloudMessagingPage-Cil491lq.js} +1 -1
- package/web/assets/{DashboardPage-BfGv9gYt.js → DashboardPage-vQ69rIA_.js} +1 -1
- package/web/assets/{DirectoryPickerDialog-DrR_sBln.js → DirectoryPickerDialog-BZG4wryg.js} +1 -1
- package/web/assets/{EditorIcon-CDOVftY6.js → EditorIcon-V_Fqyf2s.js} +1 -1
- package/web/assets/{EnvironmentForm-CyNV0uZa.js → EnvironmentForm-qlF1EeZ2.js} +1 -1
- package/web/assets/{EnvironmentFormPage-DWDvoFtt.js → EnvironmentFormPage-BrW-34oI.js} +1 -1
- package/web/assets/{EnvironmentListPage-B-2RGzi7.js → EnvironmentListPage-BdEPphrn.js} +1 -1
- package/web/assets/KanbanBoardPage-DQKqtxxI.js +4 -0
- package/web/assets/KanbanBoardPage-cXyI-2uZ.css +1 -0
- package/web/assets/{KanbanListPage-Bl21zyCc.js → KanbanListPage-5-yh2hO3.js} +1 -1
- package/web/assets/{LaunchProjectPage-Cxx-fhzO.js → LaunchProjectPage-g_5Wme1T.js} +1 -1
- package/web/assets/{LaunchServicesPage-VdZTXZlX.js → LaunchServicesPage-BxUrOZ44.js} +1 -1
- package/web/assets/{LogViewer-MDkKX5-F.js → LogViewer-DhTTUJLn.js} +1 -1
- package/web/assets/{OrgKeyPrompt-BbPXlqYa.js → OrgKeyPrompt-Bs08QGKq.js} +1 -1
- package/web/assets/{OrgLogo-DFdWtiJh.js → OrgLogo-CWXqzPiS.js} +1 -1
- package/web/assets/{ProcessControls-BpwS8iyb.js → ProcessControls-DIN7XQOl.js} +1 -1
- package/web/assets/{ProcessDetailPage-Cx3RFAvr.js → ProcessDetailPage-DMFYdJO6.js} +1 -1
- package/web/assets/{ProcessMetrics-DJ5p8cOH.js → ProcessMetrics-DED63acT.js} +1 -1
- package/web/assets/{RandomJobTestPage-CN8v2j2H.js → RandomJobTestPage-CqOMbdjK.js} +1 -1
- package/web/assets/{ScenarioEditorPage-DE4kRBuV.js → ScenarioEditorPage-DPuYttHT.js} +1 -1
- package/web/assets/{SendToChatDialog-8baAtZJn.js → SendToChatDialog-qbllbAWj.js} +1 -1
- package/web/assets/{ServiceControlsBar-CvcG0cX2.js → ServiceControlsBar-DxPLkFTF.js} +1 -1
- package/web/assets/{ServiceDetailPage-Dhr3CMPx.js → ServiceDetailPage-Cp0zW4vF.js} +1 -1
- package/web/assets/{ServiceFormPage-BpKSXmQj.js → ServiceFormPage-COy2T7gp.js} +1 -1
- package/web/assets/{SettingsPage-EHsyWY9H.js → SettingsPage-DsLaZJWX.js} +4 -4
- package/web/assets/{UnlockPage-BEyjPuiA.js → UnlockPage-shod0TOQ.js} +1 -1
- package/web/assets/{VaultMigrationPage-BL1-Q6M-.js → VaultMigrationPage-BDJIDUa6.js} +1 -1
- package/web/assets/{VersionBadge-C4M_NoTo.js → VersionBadge-V6I68xY-.js} +1 -1
- package/web/assets/WikiPage-CRPtaZ4n.js +1 -0
- package/web/assets/{WikiView-hMl0Jo_9.js → WikiView-trPq-25v.js} +1 -1
- package/web/assets/{add-scalar-classes-CfYvUPFK.js → add-scalar-classes-CSUXL3L0.js} +3 -3
- package/web/assets/{autocomplete-DwJDpd_3.js → autocomplete-DKHFlhhO.js} +1 -1
- package/web/assets/{basic-shape-diamond.svg-BHIWRSBW.js → basic-shape-diamond.svg-DCxdtThm.js} +1 -1
- package/web/assets/{basic-shape-hexagon.svg-BCqMu4vI.js → basic-shape-hexagon.svg-BllqL52E.js} +1 -1
- package/web/assets/{basic-shape-primary-circle-ellipse-round.svg-DkTApMxk.js → basic-shape-primary-circle-ellipse-round.svg-qsZEp39q.js} +1 -1
- package/web/assets/{basic-shape-primary-square-rectangle.svg-Bk_gOdKn.js → basic-shape-primary-square-rectangle.svg-DrsT6mAT.js} +1 -1
- package/web/assets/{basic-shape-shield.svg-BEFRYMev.js → basic-shape-shield.svg-Cbxs8_Nf.js} +1 -1
- package/web/assets/{browser-CRhcCyEg.js → browser-3Xde4kSz.js} +1 -1
- package/web/assets/{browser-CrG_hVEM.js → browser-pqiHj2Ya.js} +1 -1
- package/web/assets/{card-DM6OLGrd.js → card-wrii-nrq.js} +1 -1
- package/web/assets/{checkbox-BXP57wuC.js → checkbox-BcVCOcOx.js} +1 -1
- package/web/assets/{chip-usPF87e4.js → chip-DCUZHTdu.js} +1 -1
- package/web/assets/{client-DbOX6SLW.js → client-B9hsmT1s.js} +1 -1
- package/web/assets/{cloud-chat.store-D_tehZfH.js → cloud-chat.store-o00oRsgO.js} +1 -1
- package/web/assets/cloud-client-TKLL1zwR.js +1 -0
- package/web/assets/{cloud-session-BjxvzZ5_.js → cloud-session-B9wU6_5G.js} +2 -2
- package/web/assets/cloud-session-DloNvu91.js +1 -0
- package/web/assets/{column-BpmV6tZf.js → column-DA7ijaud.js} +1 -1
- package/web/assets/composables-DgWeyWnW.js +1 -0
- package/web/assets/{computer-device-desktop-monitor.svg-CMCr-EbE.js → computer-device-desktop-monitor.svg-2AkCd4Vg.js} +1 -1
- package/web/assets/{computer-device-desktop.svg-bHjL2yIc.js → computer-device-desktop.svg-BX6dDfTh.js} +1 -1
- package/web/assets/{computer-device-laptop.svg-CMIGmOQb.js → computer-device-laptop.svg-DQot5tMG.js} +1 -1
- package/web/assets/{computer-device-mobile-phone-android-samsung-back.svg-BmDp3ARt.js → computer-device-mobile-phone-android-samsung-back.svg-BqQpExMo.js} +1 -1
- package/web/assets/{computer-device-mobile-phone-android-samsung.svg-BE8rx7DK.js → computer-device-mobile-phone-android-samsung.svg-uWqzS9ou.js} +1 -1
- package/web/assets/{computer-device-mobile-phone-iphone-x-back.svg-Cp8Dbmih.js → computer-device-mobile-phone-iphone-x-back.svg-lGlmpWrH.js} +1 -1
- package/web/assets/{computer-device-mobile-phone-iphone-x.svg-CXXBfAWJ.js → computer-device-mobile-phone-iphone-x.svg-BZkIeiFY.js} +1 -1
- package/web/assets/{computer-device-mobile-tablet-touch.svg-CeynlokP.js → computer-device-mobile-tablet-touch.svg-BIY2ojxF.js} +1 -1
- package/web/assets/{computer-device-mobile-tablet.svg-D5XjPVoW.js → computer-device-mobile-tablet.svg-EsUtZRCO.js} +1 -1
- package/web/assets/{computer-device-network-ethernet-cat6.svg-Cbs45-9L.js → computer-device-network-ethernet-cat6.svg-CFYKvBLS.js} +1 -1
- package/web/assets/{computer-device-network-lan-www.svg-Rexix5Rm.js → computer-device-network-lan-www.svg-DD140-i0.js} +1 -1
- package/web/assets/{computer-device-network-wifi-connection.svg-3vuo7eWK.js → computer-device-network-wifi-connection.svg-B6xlwqRF.js} +1 -1
- package/web/assets/{computer-device-network-wifi-router.svg-B_MKwO49.js → computer-device-network-wifi-router.svg-D2oEGuXL.js} +1 -1
- package/web/assets/{cssMode-BqcfXzGG.js → cssMode-CyhbxQFj.js} +1 -1
- package/web/assets/{divider-BRuXeRHe.js → divider-bEPGnPmT.js} +1 -1
- package/web/assets/{docx-preview-BoM3W7oO.js → docx-preview-CPCu7gIi.js} +1 -1
- package/web/assets/{ecology-science-erlenmeyer-flask.svg-D1XKaTkC.js → ecology-science-erlenmeyer-flask.svg-C3Zo72lq.js} +1 -1
- package/web/assets/{fieldset-CGCve6DD.js → fieldset-BSON_QE9.js} +1 -1
- package/web/assets/{freemarker2-C6nb9fM5.js → freemarker2-764Mz1z9.js} +1 -1
- package/web/assets/{handlebars-DE3S5TjS.js → handlebars-BcplsCVf.js} +1 -1
- package/web/assets/{html-CY7hz01Y.js → html-Ab2Gwigb.js} +1 -1
- package/web/assets/{htmlMode-Ce4CB2KU.js → htmlMode-D8yRZKkz.js} +1 -1
- package/web/assets/{image-flash-lightning.svg-b9sFr9AB.js → image-flash-lightning.svg-D-jM06gw.js} +1 -1
- package/web/assets/{image-picture-flower.svg-Dr_wEXj0.js → image-picture-flower.svg-X2opjZMU.js} +1 -1
- package/web/assets/{index-94C9mIJ-.js → index-CI76mltd.js} +6 -6
- package/web/assets/{interface-alert-exclamation-diamond.svg-DqSTZgNx.js → interface-alert-exclamation-diamond.svg-B3xHmrw0.js} +1 -1
- package/web/assets/{interface-alert-exclamation-triangle-warning.svg-tR6mkG18.js → interface-alert-exclamation-triangle-warning.svg-BYsDqmTI.js} +1 -1
- package/web/assets/{interface-alert-information-circle.svg-CWK4PaRe.js → interface-alert-information-circle.svg-CC4CgbBo.js} +1 -1
- package/web/assets/{interface-award-crown.svg-CH5gPwR6.js → interface-award-crown.svg-B08Pbh8m.js} +1 -1
- package/web/assets/{interface-bookmark.svg-DMekWOuD.js → interface-bookmark-tag.svg-BcxMXdHY.js} +1 -1
- package/web/assets/{interface-bookmark-tag.svg-B8EJS7Ye.js → interface-bookmark.svg-CS29ZpkA.js} +1 -1
- package/web/assets/{interface-calendar-date-one.svg-DWVB9WFa.js → interface-calendar-date-one.svg-QnK7dekM.js} +1 -1
- package/web/assets/{interface-content-book-open-pages.svg-B6WD8yc0.js → interface-content-book-open-pages.svg-C4tNKeZR.js} +1 -1
- package/web/assets/{interface-content-book-page.svg-Dfh4LPoI.js → interface-content-book-page.svg-6Rp1a1dk.js} +1 -1
- package/web/assets/{interface-content-file.svg-DLxukAGD.js → interface-content-file.svg-llFUOjLX.js} +1 -1
- package/web/assets/interface-content-folder.svg-D9afgGr0.js +1 -0
- package/web/assets/{interface-content-folder.svg-mZbluscP.js → interface-content-folder.svg-OI_omwbE.js} +1 -1
- package/web/assets/{interface-copy-clipboard.svg-DPWOJX2E.js → interface-copy-clipboard.svg-Cz3_mRtM.js} +1 -1
- package/web/assets/{interface-edit-attachment.svg-BR_Sil6I.js → interface-edit-attachment.svg-DXOfVMyI.js} +1 -1
- package/web/assets/{interface-edit-binocular.svg-CVEd4vYc.js → interface-edit-binocular.svg-Bx3DHzuZ.js} +1 -1
- package/web/assets/{interface-edit-magic-wand.svg-DGp4DsbI.js → interface-edit-magic-wand.svg-CAfIYJHR.js} +1 -1
- package/web/assets/{interface-edit-tool-paint-roller.svg-D0WlzqI4.js → interface-edit-tool-paint-roller.svg-FMiiT6dK.js} +1 -1
- package/web/assets/{interface-edit-tool-pencil.svg-ehfPBOGD.js → interface-edit-tool-pencil.svg-DbkLSbF0.js} +1 -1
- package/web/assets/{interface-favorite-award.svg-Be7yHimT.js → interface-favorite-award.svg-hIvxW1cg.js} +1 -1
- package/web/assets/{interface-favorite-flag.svg-3fARRMMR.js → interface-favorite-flag.svg-CXlWtfuy.js} +1 -1
- package/web/assets/{interface-favorite-heart.svg-5isgI-U6.js → interface-favorite-heart.svg-BzYW_bf1.js} +1 -1
- package/web/assets/{interface-favorite-star.svg-lezozzmW.js → interface-favorite-star.svg-C-Um6PkR.js} +1 -1
- package/web/assets/{interface-favorite-stars-sparkles.svg-oLtfcK6W.js → interface-favorite-stars-sparkles.svg-DO6EAdIZ.js} +1 -1
- package/web/assets/{interface-hierarchy-flowchart.svg-C7k-UAZM.js → interface-hierarchy-flowchart.svg-CT5ujWQr.js} +1 -1
- package/web/assets/{interface-home-house.svg-m-Ka02ss.js → interface-home-house.svg-Inv2Er4f.js} +1 -1
- package/web/assets/{interface-hyperlink.svg-Bt31gmVw.js → interface-hyperlink.svg-6GygCg4m.js} +1 -1
- package/web/assets/{interface-lighting-brightness.svg-n2I1uunc.js → interface-lighting-brightness.svg-DWnle7Gq.js} +1 -1
- package/web/assets/{interface-lock-closed.svg-DeS-CJrc.js → interface-lock-closed.svg-D-wTtQo2.js} +1 -1
- package/web/assets/{interface-lock-open-unlock.svg-CdDWPuMJ.js → interface-lock-open-unlock.svg-B_c9nJ0x.js} +1 -1
- package/web/assets/{interface-login-key.svg-CvEFMs4P.js → interface-login-key.svg-UCNam9v0.js} +1 -1
- package/web/assets/{interface-search.svg-Cxo-DctG.js → interface-search.svg-BCkx6NFS.js} +1 -1
- package/web/assets/{interface-setting-cog.svg-9-YFTxcs.js → interface-setting-cog.svg-B72XaLKk.js} +1 -1
- package/web/assets/{interface-share-megaphone-bullhorn.svg-FHVAX6dI.js → interface-share-megaphone-bullhorn.svg-M_vr4ET6.js} +1 -1
- package/web/assets/{interface-share-rocket.svg-1jFzVaHL.js → interface-share-rocket.svg-c3ZAv4Fq.js} +1 -1
- package/web/assets/{interface-share-satellite.svg-DJLNcOP6.js → interface-share-satellite.svg-C-cwO4ZJ.js} +1 -1
- package/web/assets/{interface-share-space-ship.svg-pl6k0DBO.js → interface-share-space-ship.svg-7YTjWYKO.js} +1 -1
- package/web/assets/{interface-share.svg-ed08i2oG.js → interface-share.svg-DJwukuDM.js} +1 -1
- package/web/assets/{interface-signal-square.svg-De4LGj0W.js → interface-signal-square.svg-BpoFub4k.js} +1 -1
- package/web/assets/{interface-time-clock-circle.svg-CEJLWUZ3.js → interface-time-clock-circle.svg-xsV2D_qB.js} +1 -1
- package/web/assets/{interface-time-hour-glass.svg-o76dSnkN.js → interface-time-hour-glass.svg-4ENYolRr.js} +1 -1
- package/web/assets/{interface-users-multiple.svg-CoqKFb_U.js → interface-users-multiple.svg-eev_D0ig.js} +1 -1
- package/web/assets/{interface-weather-moon.svg-DilewmQl.js → interface-weather-moon.svg-CrLYHTyu.js} +1 -1
- package/web/assets/{javascript-BXeBAiG8.js → javascript-DU1DQexv.js} +1 -1
- package/web/assets/{jsonMode-BqyfnSvw.js → jsonMode-CB8B-oHc.js} +1 -1
- package/web/assets/{liquid-DReW7YnO.js → liquid-Dumxg7oa.js} +1 -1
- package/web/assets/{lspLanguageFeatures-Chp8gGOd.js → lspLanguageFeatures-DQTWe8ey.js} +1 -1
- package/web/assets/{mail-chat-bubble-square.svg-BGfaxE3Z.js → mail-chat-bubble-square.svg-DMcOjB2m.js} +1 -1
- package/web/assets/{mail-send-email-paper-airplane.svg-Behyq64U.js → mail-send-email-paper-airplane.svg-CKpmx979.js} +1 -1
- package/web/assets/{mail-send-envelope.svg-Bxrgi1uS.js → mail-send-envelope.svg-C-WAmEPg.js} +1 -1
- package/web/assets/{mdx-DlDWnOnw.js → mdx-DNzXmMw3.js} +1 -1
- package/web/assets/{minus-TTIwv6X7.js → minus-CmvRtEQe.js} +1 -1
- package/web/assets/{modal-BmOXV_GD.js → modal-C0O2XBPJ.js} +1 -1
- package/web/assets/modal-DRUfpIPe.js +1 -0
- package/web/assets/{money-cashier-receipt.svg-C-cvnfPn.js → money-cashier-receipt.svg-DeL4SF6F.js} +1 -1
- package/web/assets/{money-currency-dollar-pay.svg-CvwqB_Us.js → money-currency-dollar-pay.svg-DCIbDsIr.js} +1 -1
- package/web/assets/{money-graph-arrow-increase.svg-U8piy6iJ.js → money-graph-arrow-increase.svg-NDD5MY4C.js} +1 -1
- package/web/assets/{money-graph-bar-chart-increase.svg-Czsghch7.js → money-graph-bar-chart-increase.svg-CqFZrAkq.js} +1 -1
- package/web/assets/{multiselect-BtsqfXUl.js → multiselect-C3dGhKnP.js} +1 -1
- package/web/assets/{nature-ecology-leaf.svg-DusYKwpP.js → nature-ecology-leaf.svg-C74TcBty.js} +1 -1
- package/web/assets/{password-D7zz_4x-.js → password-Cf8j-GkJ.js} +1 -1
- package/web/assets/{phone-telephone.svg-24q-zljc.js → phone-telephone.svg-BeNULj1e.js} +1 -1
- package/web/assets/{plus-QyL2zHhp.js → plus-hUxz8lH_.js} +1 -1
- package/web/assets/process.store-TQsoI7AA.js +1 -0
- package/web/assets/{programming-bug.svg-ljzgC2y_.js → programming-bug.svg-DSydJcD0.js} +1 -1
- package/web/assets/{programming-cloud.svg-DGSPYVKb.js → programming-cloud.svg-2xUngU0S.js} +1 -1
- package/web/assets/{programming-computer-database-server.svg-DinsEUs2.js → programming-computer-database-server.svg-TAX5z1tR.js} +1 -1
- package/web/assets/{programming-computer-database.svg-Bi-KIHKo.js → programming-computer-database.svg-mO5bElVh.js} +1 -1
- package/web/assets/{programming-module-four-layout.svg-8adkNiA8.js → programming-module-four-layout.svg-Dr767G1Z.js} +1 -1
- package/web/assets/{programming-module-three.svg-D05fexpq.js → programming-module-three.svg-D4oVsZl_.js} +1 -1
- package/web/assets/{programming-module.svg-Bd_jG5Ld.js → programming-module.svg-wdwopIvm.js} +1 -1
- package/web/assets/{programming-script-code.svg-BR0wfmxH.js → programming-script-code.svg-DBPWoki2.js} +1 -1
- package/web/assets/project-launch.store-CZsTY83m.js +1 -0
- package/web/assets/project.store-eIP8RM3Q.js +1 -0
- package/web/assets/{python--XCKQ7Mj.js → python-BE5DaTS2.js} +1 -1
- package/web/assets/{radiobutton-BGxBny0T.js → radiobutton-CImlBTBP.js} +1 -1
- package/web/assets/{razor-DmUJwoTy.js → razor-Cmx-7XPV.js} +1 -1
- package/web/assets/router-CVSY8aIb.js +1 -0
- package/web/assets/{selectbutton-BeX4M-IG.js → selectbutton-BhpYZyFl.js} +1 -1
- package/web/assets/settings-scope-CxYQcvAR.js +1 -0
- package/web/assets/{settings.store-CbOGUuSM.js → settings.store-DridR-ck.js} +1 -1
- package/web/assets/shared-sse-DiiJHjvL.js +1 -0
- package/web/assets/{shopping-cart.svg-CAlBJM1f.js → shopping-cart.svg-C3En9-vl.js} +1 -1
- package/web/assets/{shopping-gift-present.svg-CmakOhp5.js → shopping-gift-present.svg-7p-hRdPX.js} +1 -1
- package/web/assets/{shopping-shipping-box-parcel-package.svg-DMr-nOJL.js → shopping-shipping-box-parcel-package.svg-BWbZhI8w.js} +1 -1
- package/web/assets/src-BM_sDDlr.css +1 -0
- package/web/assets/{src-_lD-wMMD.js → src-DTiDFW3B.js} +32 -32
- package/web/assets/{src-mXN4EdYU.js → src-isLSni-N.js} +1 -1
- package/web/assets/{tabpanel-DFw1JNiJ.js → tabpanel-Bfol4XTd.js} +1 -1
- package/web/assets/{tag-new-circle.svg-BL7H0XEp.js → tag-new-circle.svg-Spe566L2.js} +1 -1
- package/web/assets/theme-4th617B_.js +1 -0
- package/web/assets/{toggleswitch-hCIOkIWD.js → toggleswitch-CZCAv-jp.js} +1 -1
- package/web/assets/{travel-map-earth-globe.svg-DOsI_-VD.js → travel-map-earth-globe.svg-DKz5j-UT.js} +1 -1
- package/web/assets/trpc-CBXwYAMy.js +1 -0
- package/web/assets/{tsMode-DLtQZQME.js → tsMode-AQ4klRHU.js} +1 -1
- package/web/assets/{typescript-BiwtK-KD.js → typescript-yluvE--_.js} +1 -1
- package/web/assets/useAiChatDrawer-D_AzdjrA.js +1 -0
- package/web/assets/{useCloudOrg-BOcbkFan.js → useCloudOrg-b-QnhnSc.js} +1 -1
- package/web/assets/{useEnvVarAutocomplete-B7JuI0eO.js → useEnvVarAutocomplete-Bj9GeijO.js} +1 -1
- package/web/assets/{useProjectCatalog-BKnj5RtX.js → useProjectCatalog-BGdTjXzH.js} +1 -1
- package/web/assets/{useProjectCloudOrg-DC78dk7F.js → useProjectCloudOrg-DQJMaDXR.js} +1 -1
- package/web/assets/{useServiceUrlHost-Bi8nVdMP.js → useServiceUrlHost-BezQuX2r.js} +1 -1
- package/web/assets/{xml-4zuO3zgc.js → xml-BEYNsHpr.js} +1 -1
- package/web/assets/{yaml-D5Zw4FPr.js → yaml-CdJTW_Jy.js} +1 -1
- package/web/index.html +1 -1
- package/chunk-B3QQGYKU.js.map +0 -1
- package/chunk-IYPYVSY5.js.map +0 -1
- package/src-B4AVQCOQ.js.map +0 -1
- package/web/assets/AiChatPage-YYiU2Rua.js +0 -1
- package/web/assets/CloudAccountPage-CmsKXPgr.js +0 -1
- package/web/assets/KanbanBoardPage-ByPh1kiv.css +0 -1
- package/web/assets/KanbanBoardPage-ClTruaQ9.js +0 -4
- package/web/assets/WikiPage-BIy78RnQ.js +0 -1
- package/web/assets/cloud-client-D_2Ghoat.js +0 -1
- package/web/assets/cloud-session-5zD-9FVh.js +0 -1
- package/web/assets/composables-Biguv8GA.js +0 -1
- package/web/assets/interface-content-folder.svg-6goG-PKT.js +0 -1
- package/web/assets/modal-1yF5hlWc.js +0 -1
- package/web/assets/process.store-Di7QdGS6.js +0 -1
- package/web/assets/project-launch.store-C5sqtO8-.js +0 -1
- package/web/assets/project.store-BHFNvoBC.js +0 -1
- package/web/assets/router-BTMrAdGT.js +0 -1
- package/web/assets/settings-scope-DUOlLSMl.js +0 -1
- package/web/assets/shared-sse-DUHeXaFO.js +0 -1
- package/web/assets/src-DztOEh3e.css +0 -1
- package/web/assets/theme-E9nfXtHG.js +0 -1
- package/web/assets/trpc-BskvL7g_.js +0 -1
- package/web/assets/useAiChatDrawer-BIkMnJ15.js +0 -1
- /package/{agent-manager-QQHA3TUB.js.map → agent-manager-TUFAFC6U.js.map} +0 -0
- /package/{chat-VIVAFYYS.js.map → chat-37VHPDPJ.js.map} +0 -0
- /package/{chunk-GAK3Q3J4.js.map → chunk-7JAJSV4L.js.map} +0 -0
- /package/{chunk-GNVQH3VG.js.map → chunk-I7JHF5FE.js.map} +0 -0
- /package/{chunk-CVVAQTMF.js.map → chunk-TG44C7QT.js.map} +0 -0
- /package/{companion-2VDWE5SP.js.map → companion-27RCQRZV.js.map} +0 -0
- /package/{desktop-launcher-RSRAXX6B.js.map → desktop-launcher-3COY6F6H.js.map} +0 -0
- /package/{settings-manager-3LMN34IT.js.map → settings-manager-J4QBIU3T.js.map} +0 -0
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{$ as e,Ai as t,An as n,Bi as r,Ci as i,Dn as a,Ei as o,En as s,Gt as c,Ha as l,Hn as u,Kn as d,Li as f,M as p,Mi as m,Ni as h,Oa as g,Q as _,Ri as v,Ta as y,Un as b,Vt as x,Wn as S,Wt as C,X as w,Xi as T,Z as E,Za as D,aa as O,ar as k,ba as A,bn as j,bt as M,dt as N,ir as P,it as ee,ja as F,ji as I,jn as L,ki as R,la as z,ln as te,lr as ne,lt as B,mn as re,mr as V,mt as ie,nr as ae,nt as H,p as U,pn as oe,qt as se,ra as ce,rn as W,sa as G,st as le,u as ue,ur as de,vt as K,wa as q,wi as J,xn as Y,yi as fe,zn as pe}from"./index-94C9mIJ-.js";import"./cloud-session-BjxvzZ5_.js";import"./src-mXN4EdYU.js";import"./useServiceUrlHost-Bi8nVdMP.js";import"./ProcessControls-BpwS8iyb.js";import{t as me}from"./ServiceControlsBar-CvcG0cX2.js";import{t as he}from"./uuid-hYISTbX6.js";import{n as ge,t as _e}from"./column-BpmV6tZf.js";import{n as X}from"./plus-QyL2zHhp.js";import{t as ve}from"./checkbox-BXP57wuC.js";import"./useProjectCloudOrg-DC78dk7F.js";import{t as Z}from"./toggleswitch-hCIOkIWD.js";import{i as ye,n as be,o as xe,r as Q,t as $}from"./tabpanel-DFw1JNiJ.js";import{i as Se,n as Ce,r as we,t as Te}from"./useEnvVarAutocomplete-B7JuI0eO.js";import{t as Ee}from"./autocomplete-DwJDpd_3.js";import"./SendToChatDialog-8baAtZJn.js";import{n as De,t as Oe}from"./ProcessMetrics-DJ5p8cOH.js";import{t as ke}from"./LogViewer-MDkKX5-F.js";import{t as Ae}from"./divider-BRuXeRHe.js";import{t as je}from"./settings.store-CbOGUuSM.js";import{t as Me}from"./WikiView-hMl0Jo_9.js";var Ne={key:0,class:`log-details`},Pe={class:`log-details__section`},Fe={class:`log-details__label`},Ie={class:`log-details__value log-details__value--box`},Le={class:`log-details__section`},Re={class:`log-details__label`},ze={class:`log-details__value log-details__value--box log-details__value--code`},Be={class:`log-details__section`},Ve={class:`log-details__label`},He={class:`log-details__value log-details__value--box`},Ue={class:`log-details__process`},We={class:`log-details__section`},Ge={class:`log-details__label`},Ke={class:`log-details__value log-details__value--box`},qe={key:0,class:`log-details__section`},Je={class:`log-details__label`},Ye={class:`log-details__value log-details__value--box log-details__value--code`,"data-testid":`log-details-cwd`},Xe={class:`log-details__section`},Ze={class:`log-details__label`},Qe={class:`log-details__value log-details__value--box`},$e={key:1,class:`log-details__section`},et={class:`log-details__label`},tt={class:`log-details__value log-details__value--box`},nt={key:2,class:`log-details__section`},rt={class:`log-details__label`},it={class:`log-details__value log-details__value--box log-details__value--code`},at=u(r({__name:`LogDetailsDrawer`,props:{visible:{type:Boolean},log:{}},emits:[`update:visible`,`view-process`],setup(e,{emit:n}){let r=e,{t:i}=V(),a=U(),o=n,s=R(()=>{if(!r.log)return``;let e=new Date(r.log.timestamp);return`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,`0`)}-${String(e.getDate()).padStart(2,`0`)} ${String(e.getHours()).padStart(2,`0`)}:${String(e.getMinutes()).padStart(2,`0`)}:${String(e.getSeconds()).padStart(2,`0`)}`}),c=R(()=>r.log?r.log.level.charAt(0).toUpperCase()+r.log.level.slice(1):``),l=R(()=>!r.log||r.log.pid==null?i(`logDetails.notAvailable`):String(r.log.pid)),u=R(()=>r.log?a.getByService(r.log.processId)[0]?.cwd??null:null);function f(){r.log&&o(`view-process`,r.log.processId)}function p(){o(`update:visible`,!1)}return(n,r)=>(G(),I(D(b),{visible:e.visible,position:`right`,header:D(i)(`logDetails.header`),style:{width:`440px`},"onUpdate:visible":p},{default:q(()=>[e.log?(G(),h(`div`,Ne,[t(`div`,Pe,[t(`div`,Fe,F(D(i)(`logDetails.type`)),1),t(`div`,Ie,F(c.value),1)]),t(`div`,Le,[t(`div`,Re,F(D(i)(`logDetails.rawMessage`)),1),t(`div`,ze,F(e.log.raw),1)]),t(`div`,Be,[t(`div`,Ve,F(D(i)(`logDetails.serviceId`)),1),t(`div`,He,[t(`div`,Ue,[t(`span`,null,F(e.log.processId),1),v(D(d),{label:D(i)(`logDetails.viewProcess`),icon:`pi pi-external-link`,size:`small`,outlined:``,onClick:f},null,8,[`label`])])])]),t(`div`,We,[t(`div`,Ge,F(D(i)(`logDetails.pid`)),1),t(`div`,Ke,F(l.value),1)]),u.value?(G(),h(`div`,qe,[t(`div`,Je,F(D(i)(`logDetails.cwd`)),1),t(`div`,Ye,F(u.value),1)])):m(``,!0),t(`div`,Xe,[t(`div`,Ze,F(D(i)(`logDetails.timestamp`)),1),t(`div`,Qe,F(s.value),1)]),e.log.stream?(G(),h(`div`,$e,[t(`div`,et,F(D(i)(`logDetails.stream`)),1),t(`div`,tt,F(e.log.stream),1)])):m(``,!0),e.log.metadata&&Object.keys(e.log.metadata).length>0?(G(),h(`div`,nt,[t(`div`,rt,F(D(i)(`logDetails.metadata`)),1),t(`div`,it,F(JSON.stringify(e.log.metadata,null,2)),1)])):m(``,!0)])):m(``,!0)]),_:1},8,[`visible`,`header`]))}}),[[`__scopeId`,`data-v-4e3f7abe`]]),ot=500,st=5,ct=N;function lt(e){return e+Math.random()*e*.3}function ut(e,t){let r=l([]),i=l(!1),a=null,o=0,s=null,c=n(()=>{o=0,i.value||S()}),u=[],d=null,f=l(0),p=l(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=[...r.value,...e];t.length>ot&&(t=t.slice(t.length-ot)),r.value=t}function b(){!e.value||!t.value||(i.value=!0,a=L.process.onLog.subscribe({agentId:e.value,processId:t.value},{onData(e){let t=e;if(o=0,pe(`connected`),t.some(e=>e.__clearLogBuffer)){r.value=[],u=[];return}m+=t.length,u.push(...t),d===null&&(d=requestAnimationFrame(y))},onError(e){console.error(`[useLogStream] Subscription error:`,e.message),i.value=!1,a=null,x()}}))}function x(){if(o>=st){console.warn(`[useLogStream] Max retries (${st}) reached`),pe(`disconnected`);return}pe(`reconnecting`);let e=lt(ct*2**o);o++,s=setTimeout(()=>{s=null,S()},e)}async function S(){if(!i.value&&!(!e.value||!t.value)){o=0;try{let n=await L.process.logs.query({agentId:e.value,processId:t.value});n.length>ot&&(n=n.slice(n.length-ot)),r.value=n,pe(`connected`)}catch{}b()}}function C(){s&&=(clearTimeout(s),null),d!==null&&(cancelAnimationFrame(d),d=null),u=[],v(),a&&=(a.unsubscribe(),null),i.value=!1,o=0,r.value=[]}return A([e,t],([e,t],[n,r])=>{(e!==n||t!==r)&&(i.value&&C(),S())}),O(()=>{c(),C()}),{logs:r,isStreaming:i,start:S,stop:C,receivedPerSec:f,flushedPerSec:p,startStats:_,stopStats:v}}var dt={class:`service-terminal__toolbar`},ft={class:`service-terminal__toolbar-left`},pt={key:0,class:`pid-option`},mt={key:1,class:`pid-option`},ht={key:0,class:`pi pi-circle-fill pid-status-icon pid-status-icon--active`,style:{"margin-right":`0.5rem`}},gt={key:1,class:`pi pi-circle-fill pid-status-icon pid-status-icon--stopped`,style:{"margin-right":`0.5rem`}},_t={class:`pid-option`},vt={key:0,class:`pi pi-list`,style:{"margin-right":`0.5rem`}},yt=[`title`],bt=[`title`],xt={class:`service-terminal__toolbar-right`},St={class:`service-terminal__content`,"data-testid":`service-terminal-content`},Ct={key:1,class:`service-terminal__shortcuts`},wt={class:`service-terminal__command-input`},Tt={class:`service-terminal__bottom`},Et=`runeya_command_history_`,Dt=50,Ot=u(r({__name:`ServiceTerminal`,props:{service:{},processes:{}},setup(e){let{t:n}=V(),r=e,i=R(()=>r.processes.find(e=>e.state===`running`||e.state===`starting`)??r.processes[0]??null),a=R(()=>i.value?.agentId??``),s=R(()=>i.value?.id??``),c=de(),{logs:u,isStreaming:f,start:p,stop:_,receivedPerSec:y,flushedPerSec:b,startStats:x,stopStats:S}=ut(a,s),C=l(!1);A(C,e=>{e?x():S()});function w(e){e.ctrlKey&&e.shiftKey&&(e.key===`*`||e.key===`µ`)&&(e.preventDefault(),C.value=!C.value)}let E=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())}),k=R(()=>$.value===`all`?u.value:u.value.filter(e=>e.pid===$.value)),M=R(()=>E.value.filter(e=>e.isActive).length),N=R(()=>{let e=[{label:n(`serviceTerminal.allProcesses`),value:`all`,badge:M.value>0?`${M.value} ${n(`serviceTerminal.active`)}`:void 0,isActive:void 0}];return E.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 P(){if(i.value)try{await L.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 ee=R(()=>r.service.shortcuts??[]),te=l(new Set);async function ne(e){let t=ue(r.service,i.value),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(te.value.has(e.id)){try{await L.process.cancelShortcut.mutate({agentId:t,processId:a,shortcutId:e.id})}catch{}return}te.value=new Set([...te.value,e.id]);try{await L.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(te.value);t.delete(e.id),te.value=t}}let B=l(``),re=l(new Set),ie=R(()=>re.value.size>0),ae=l(null),H=l([]),U=l(-1),oe=`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(`,`),se=l([]);function le(e){let t=e.query.toLowerCase().trim();if(!t||!B.value.trim()){se.value=[];return}let n=[...H.value.slice().reverse(),...oe],r=new Set;se.value=n.filter(e=>r.has(e)?!1:(r.add(e),e.toLowerCase().includes(t))).slice(0,10)}function K(){try{let e=localStorage.getItem(Et+r.service.id);e&&(H.value=JSON.parse(e))}catch{H.value=[]}}function J(){try{localStorage.setItem(Et+r.service.id,JSON.stringify(H.value))}catch{}}function Y(e){H.value[H.value.length-1]!==e&&(H.value=[...H.value,e],H.value.length>Dt&&(H.value=H.value.slice(-Dt)),J())}async function fe(){let e=ue(r.service,i.value),t=i.value?.id??r.service.id;if(e)try{await L.process.cancelAdHocCommand.mutate({agentId:e,processId:t})}catch{}}async function pe(){if(!B.value.trim())return;let e=ue(r.service,i.value),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=he(),o=B.value.trim();Y(o),B.value=``,se.value=[],U.value=-1,re.value=new Set([...re.value,a]);try{await L.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(re.value);e.delete(a),re.value=e,T(()=>{document.querySelector(`.service-terminal__input`)?.focus()})}}function ge(e){if(e.key===`Enter`&&!e.shiftKey){e.preventDefault(),pe();return}if(e.key===`ArrowUp`){if(e.preventDefault(),H.value.length===0)return;U.value===-1?U.value=H.value.length-1:U.value>0&&U.value--,B.value=H.value[U.value]||``}else if(e.key===`ArrowDown`){if(e.preventDefault(),U.value===-1)return;U.value<H.value.length-1?(U.value++,B.value=H.value[U.value]||``):(U.value=-1,B.value=``)}}function _e(){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{$ as e,Ai as t,An as n,Bi as r,Ci as i,Dn as a,Ei as o,En as s,Gt as c,Ha as l,Hn as u,Kn as d,Li as f,M as p,Mi as m,Ni as h,Oa as g,Q as _,Ri as v,Ta as y,Un as b,Vt as x,Wn as S,Wt as C,X as w,Xi as T,Z as E,Za as D,aa as O,ar as k,ba as A,bn as j,bt as M,dt as N,ir as P,it as ee,ja as F,ji as I,jn as L,ki as R,la as z,ln as te,lr as ne,lt as B,mn as re,mr as V,mt as ie,nr as ae,nt as H,p as U,pn as oe,qt as se,ra as ce,rn as W,sa as G,st as le,u as ue,ur as de,vt as K,wa as q,wi as J,xn as Y,yi as fe,zn as pe}from"./index-CI76mltd.js";import"./cloud-session-B9wU6_5G.js";import"./src-isLSni-N.js";import"./useServiceUrlHost-BezQuX2r.js";import"./ProcessControls-DIN7XQOl.js";import{t as me}from"./ServiceControlsBar-DxPLkFTF.js";import{t as he}from"./uuid-hYISTbX6.js";import{n as ge,t as _e}from"./column-DA7ijaud.js";import{n as X}from"./plus-hUxz8lH_.js";import{t as ve}from"./checkbox-BcVCOcOx.js";import"./useProjectCloudOrg-DQJMaDXR.js";import{t as Z}from"./toggleswitch-CZCAv-jp.js";import{i as ye,n as be,o as xe,r as Q,t as $}from"./tabpanel-Bfol4XTd.js";import{i as Se,n as Ce,r as we,t as Te}from"./useEnvVarAutocomplete-Bj9GeijO.js";import{t as Ee}from"./autocomplete-DKHFlhhO.js";import"./SendToChatDialog-qbllbAWj.js";import{n as De,t as Oe}from"./ProcessMetrics-DED63acT.js";import{t as ke}from"./LogViewer-DhTTUJLn.js";import{t as Ae}from"./divider-bEPGnPmT.js";import{t as je}from"./settings.store-DridR-ck.js";import{t as Me}from"./WikiView-trPq-25v.js";var Ne={key:0,class:`log-details`},Pe={class:`log-details__section`},Fe={class:`log-details__label`},Ie={class:`log-details__value log-details__value--box`},Le={class:`log-details__section`},Re={class:`log-details__label`},ze={class:`log-details__value log-details__value--box log-details__value--code`},Be={class:`log-details__section`},Ve={class:`log-details__label`},He={class:`log-details__value log-details__value--box`},Ue={class:`log-details__process`},We={class:`log-details__section`},Ge={class:`log-details__label`},Ke={class:`log-details__value log-details__value--box`},qe={key:0,class:`log-details__section`},Je={class:`log-details__label`},Ye={class:`log-details__value log-details__value--box log-details__value--code`,"data-testid":`log-details-cwd`},Xe={class:`log-details__section`},Ze={class:`log-details__label`},Qe={class:`log-details__value log-details__value--box`},$e={key:1,class:`log-details__section`},et={class:`log-details__label`},tt={class:`log-details__value log-details__value--box`},nt={key:2,class:`log-details__section`},rt={class:`log-details__label`},it={class:`log-details__value log-details__value--box log-details__value--code`},at=u(r({__name:`LogDetailsDrawer`,props:{visible:{type:Boolean},log:{}},emits:[`update:visible`,`view-process`],setup(e,{emit:n}){let r=e,{t:i}=V(),a=U(),o=n,s=R(()=>{if(!r.log)return``;let e=new Date(r.log.timestamp);return`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,`0`)}-${String(e.getDate()).padStart(2,`0`)} ${String(e.getHours()).padStart(2,`0`)}:${String(e.getMinutes()).padStart(2,`0`)}:${String(e.getSeconds()).padStart(2,`0`)}`}),c=R(()=>r.log?r.log.level.charAt(0).toUpperCase()+r.log.level.slice(1):``),l=R(()=>!r.log||r.log.pid==null?i(`logDetails.notAvailable`):String(r.log.pid)),u=R(()=>r.log?a.getByService(r.log.processId)[0]?.cwd??null:null);function f(){r.log&&o(`view-process`,r.log.processId)}function p(){o(`update:visible`,!1)}return(n,r)=>(G(),I(D(b),{visible:e.visible,position:`right`,header:D(i)(`logDetails.header`),style:{width:`440px`},"onUpdate:visible":p},{default:q(()=>[e.log?(G(),h(`div`,Ne,[t(`div`,Pe,[t(`div`,Fe,F(D(i)(`logDetails.type`)),1),t(`div`,Ie,F(c.value),1)]),t(`div`,Le,[t(`div`,Re,F(D(i)(`logDetails.rawMessage`)),1),t(`div`,ze,F(e.log.raw),1)]),t(`div`,Be,[t(`div`,Ve,F(D(i)(`logDetails.serviceId`)),1),t(`div`,He,[t(`div`,Ue,[t(`span`,null,F(e.log.processId),1),v(D(d),{label:D(i)(`logDetails.viewProcess`),icon:`pi pi-external-link`,size:`small`,outlined:``,onClick:f},null,8,[`label`])])])]),t(`div`,We,[t(`div`,Ge,F(D(i)(`logDetails.pid`)),1),t(`div`,Ke,F(l.value),1)]),u.value?(G(),h(`div`,qe,[t(`div`,Je,F(D(i)(`logDetails.cwd`)),1),t(`div`,Ye,F(u.value),1)])):m(``,!0),t(`div`,Xe,[t(`div`,Ze,F(D(i)(`logDetails.timestamp`)),1),t(`div`,Qe,F(s.value),1)]),e.log.stream?(G(),h(`div`,$e,[t(`div`,et,F(D(i)(`logDetails.stream`)),1),t(`div`,tt,F(e.log.stream),1)])):m(``,!0),e.log.metadata&&Object.keys(e.log.metadata).length>0?(G(),h(`div`,nt,[t(`div`,rt,F(D(i)(`logDetails.metadata`)),1),t(`div`,it,F(JSON.stringify(e.log.metadata,null,2)),1)])):m(``,!0)])):m(``,!0)]),_:1},8,[`visible`,`header`]))}}),[[`__scopeId`,`data-v-4e3f7abe`]]),ot=500,st=5,ct=N;function lt(e){return e+Math.random()*e*.3}function ut(e,t){let r=l([]),i=l(!1),a=null,o=0,s=null,c=n(()=>{o=0,i.value||S()}),u=[],d=null,f=l(0),p=l(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=[...r.value,...e];t.length>ot&&(t=t.slice(t.length-ot)),r.value=t}function b(){!e.value||!t.value||(i.value=!0,a=L.process.onLog.subscribe({agentId:e.value,processId:t.value},{onData(e){let t=e;if(o=0,pe(`connected`),t.some(e=>e.__clearLogBuffer)){r.value=[],u=[];return}m+=t.length,u.push(...t),d===null&&(d=requestAnimationFrame(y))},onError(e){console.error(`[useLogStream] Subscription error:`,e.message),i.value=!1,a=null,x()}}))}function x(){if(o>=st){console.warn(`[useLogStream] Max retries (${st}) reached`),pe(`disconnected`);return}pe(`reconnecting`);let e=lt(ct*2**o);o++,s=setTimeout(()=>{s=null,S()},e)}async function S(){if(!i.value&&!(!e.value||!t.value)){o=0;try{let n=await L.process.logs.query({agentId:e.value,processId:t.value});n.length>ot&&(n=n.slice(n.length-ot)),r.value=n,pe(`connected`)}catch{}b()}}function C(){s&&=(clearTimeout(s),null),d!==null&&(cancelAnimationFrame(d),d=null),u=[],v(),a&&=(a.unsubscribe(),null),i.value=!1,o=0,r.value=[]}return A([e,t],([e,t],[n,r])=>{(e!==n||t!==r)&&(i.value&&C(),S())}),O(()=>{c(),C()}),{logs:r,isStreaming:i,start:S,stop:C,receivedPerSec:f,flushedPerSec:p,startStats:_,stopStats:v}}var dt={class:`service-terminal__toolbar`},ft={class:`service-terminal__toolbar-left`},pt={key:0,class:`pid-option`},mt={key:1,class:`pid-option`},ht={key:0,class:`pi pi-circle-fill pid-status-icon pid-status-icon--active`,style:{"margin-right":`0.5rem`}},gt={key:1,class:`pi pi-circle-fill pid-status-icon pid-status-icon--stopped`,style:{"margin-right":`0.5rem`}},_t={class:`pid-option`},vt={key:0,class:`pi pi-list`,style:{"margin-right":`0.5rem`}},yt=[`title`],bt=[`title`],xt={class:`service-terminal__toolbar-right`},St={class:`service-terminal__content`,"data-testid":`service-terminal-content`},Ct={key:1,class:`service-terminal__shortcuts`},wt={class:`service-terminal__command-input`},Tt={class:`service-terminal__bottom`},Et=`runeya_command_history_`,Dt=50,Ot=u(r({__name:`ServiceTerminal`,props:{service:{},processes:{}},setup(e){let{t:n}=V(),r=e,i=R(()=>r.processes.find(e=>e.state===`running`||e.state===`starting`)??r.processes[0]??null),a=R(()=>i.value?.agentId??``),s=R(()=>i.value?.id??``),c=de(),{logs:u,isStreaming:f,start:p,stop:_,receivedPerSec:y,flushedPerSec:b,startStats:x,stopStats:S}=ut(a,s),C=l(!1);A(C,e=>{e?x():S()});function w(e){e.ctrlKey&&e.shiftKey&&(e.key===`*`||e.key===`µ`)&&(e.preventDefault(),C.value=!C.value)}let E=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())}),k=R(()=>$.value===`all`?u.value:u.value.filter(e=>e.pid===$.value)),M=R(()=>E.value.filter(e=>e.isActive).length),N=R(()=>{let e=[{label:n(`serviceTerminal.allProcesses`),value:`all`,badge:M.value>0?`${M.value} ${n(`serviceTerminal.active`)}`:void 0,isActive:void 0}];return E.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 P(){if(i.value)try{await L.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 ee=R(()=>r.service.shortcuts??[]),te=l(new Set);async function ne(e){let t=ue(r.service,i.value),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(te.value.has(e.id)){try{await L.process.cancelShortcut.mutate({agentId:t,processId:a,shortcutId:e.id})}catch{}return}te.value=new Set([...te.value,e.id]);try{await L.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(te.value);t.delete(e.id),te.value=t}}let B=l(``),re=l(new Set),ie=R(()=>re.value.size>0),ae=l(null),H=l([]),U=l(-1),oe=`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(`,`),se=l([]);function le(e){let t=e.query.toLowerCase().trim();if(!t||!B.value.trim()){se.value=[];return}let n=[...H.value.slice().reverse(),...oe],r=new Set;se.value=n.filter(e=>r.has(e)?!1:(r.add(e),e.toLowerCase().includes(t))).slice(0,10)}function K(){try{let e=localStorage.getItem(Et+r.service.id);e&&(H.value=JSON.parse(e))}catch{H.value=[]}}function J(){try{localStorage.setItem(Et+r.service.id,JSON.stringify(H.value))}catch{}}function Y(e){H.value[H.value.length-1]!==e&&(H.value=[...H.value,e],H.value.length>Dt&&(H.value=H.value.slice(-Dt)),J())}async function fe(){let e=ue(r.service,i.value),t=i.value?.id??r.service.id;if(e)try{await L.process.cancelAdHocCommand.mutate({agentId:e,processId:t})}catch{}}async function pe(){if(!B.value.trim())return;let e=ue(r.service,i.value),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=he(),o=B.value.trim();Y(o),B.value=``,se.value=[],U.value=-1,re.value=new Set([...re.value,a]);try{await L.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(re.value);e.delete(a),re.value=e,T(()=>{document.querySelector(`.service-terminal__input`)?.focus()})}}function ge(e){if(e.key===`Enter`&&!e.shiftKey){e.preventDefault(),pe();return}if(e.key===`ArrowUp`){if(e.preventDefault(),H.value.length===0)return;U.value===-1?U.value=H.value.length-1:U.value>0&&U.value--,B.value=H.value[U.value]||``}else if(e.key===`ArrowDown`){if(e.preventDefault(),U.value===-1)return;U.value<H.value.length-1?(U.value++,B.value=H.value[U.value]||``):(U.value=-1,B.value=``)}}function _e(){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 X=l(0),ve=0,Z=null,ye=null;A(i,e=>{if(!(e&&(e.state===`running`||e.state===`starting`))){Z&&=(clearInterval(Z),null),ye=null,X.value=e?.uptime??0;return}let t=e.uptime??0;e.id!==ye&&(Z&&=(clearInterval(Z),null),ye=e.id,ve=e.startedAt?new Date(e.startedAt).getTime():Date.now()-t,X.value=Date.now()-ve,Z=setInterval(()=>{X.value=Date.now()-ve},1e3))},{immediate:!0});let be=l(!0),xe=l(null),Q=l(!1),$=l(`all`),Se=l(!1);function Ce(){Se.value=!Se.value}ce(()=>{K(),i.value&&p(),window.addEventListener(`keydown`,w)}),O(()=>{_(),window.removeEventListener(`keydown`,w),Z&&clearInterval(Z)});function we(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 Te(e){xe.value=e,Q.value=!0}function De(e){Q.value=!1,c.add({severity:`info`,summary:`Process`,detail:`Process ID: ${e}`,life:3e3})}return(a,s)=>(G(),h(`div`,{class:g([`service-terminal`,{"service-terminal--fullscreen":Se.value}]),"data-testid":`service-terminal`},[Se.value?(G(),I(me,{key:0,service:e.service,processes:e.processes},null,8,[`service`,`processes`])):m(``,!0),t(`div`,dt,[t(`div`,ft,[v(D(d),{label:D(n)(`serviceTerminal.logs`),severity:be.value?`primary`:`secondary`,text:``,size:`small`,onClick:s[0]||=e=>be.value=!0},null,8,[`label`,`severity`]),v(D(W),{modelValue:$.value,"onUpdate:modelValue":s[1]||=e=>$.value=e,options:N.value,"option-label":`label`,"option-value":`value`,class:`service-terminal__pid-selector`},{value:q(e=>[e.value===`all`?(G(),h(`div`,pt,[s[5]||=t(`i`,{class:`pi pi-list`,style:{"margin-right":`0.5rem`}},null,-1),t(`span`,null,F(D(n)(`serviceTerminal.allProcesses`)),1),M.value>0?(G(),I(D(j),{key:0,value:`${M.value} ${D(n)(`serviceTerminal.active`)}`,severity:`secondary`,class:`pid-badge`},null,8,[`value`])):m(``,!0)])):(G(),h(`div`,mt,[N.value.find(t=>t.value===e.value)?.isActive?(G(),h(`i`,ht)):(G(),h(`i`,gt)),t(`span`,null,`PID: `+F(e.value),1)]))]),option:q(e=>[t(`div`,_t,[e.option.value===`all`?(G(),h(`i`,vt)):e.option.isActive?(G(),h(`i`,{key:1,class:`pi pi-circle-fill pid-status-icon pid-status-icon--active`,title:D(n)(`serviceTerminal.running`)},null,8,yt)):(G(),h(`i`,{key:2,class:`pi pi-circle-fill pid-status-icon pid-status-icon--stopped`,title:D(n)(`serviceTerminal.stopped`)},null,8,bt)),t(`span`,null,F(e.option.label),1),e.option.badge?(G(),I(D(j),{key:3,value:e.option.badge,severity:`secondary`,class:`pid-badge`},null,8,[`value`])):m(``,!0)])]),_:1},8,[`modelValue`,`options`])]),t(`div`,xt,[v(D(d),{icon:Se.value?`pi pi-window-minimize`:`pi pi-window-maximize`,text:``,rounded:``,size:`small`,title:Se.value?D(n)(`serviceTerminal.exitFullscreen`):D(n)(`serviceTerminal.fullscreen`),onClick:Ce},null,8,[`icon`,`title`]),v(D(d),{icon:`pi pi-download`,text:``,rounded:``,size:`small`,title:D(n)(`serviceTerminal.downloadLogs`),disabled:D(u).length===0,onClick:_e},null,8,[`title`,`disabled`]),v(D(d),{icon:`pi pi-trash`,text:``,rounded:``,size:`small`,title:D(n)(`serviceTerminal.clearLogs`),disabled:D(u).length===0,onClick:P},null,8,[`title`,`disabled`])])]),t(`div`,St,[v(ke,{logs:k.value,loading:!1,"received-per-sec":D(y),"flushed-per-sec":D(b),"show-stats":C.value,"service-label":r.service.label||r.service.name,onLogClick:Te},null,8,[`logs`,`received-per-sec`,`flushed-per-sec`,`show-stats`,`service-label`])]),ee.value.length>0?(G(),h(`div`,Ct,[(G(!0),h(o,null,z(ee.value,e=>(G(),I(D(d),{key:e.id,label:e.label||e.command,"data-shortcut-id":e.id,class:`shortcut-badge`,icon:te.value.has(e.id)?`pi pi-stop`:`pi pi-play`,size:`small`,outlined:!te.value.has(e.id),severity:te.value.has(e.id)?`danger`:void 0,onClick:t=>ne(e)},null,8,[`label`,`data-shortcut-id`,`icon`,`outlined`,`severity`,`onClick`]))),128))])):m(``,!0),t(`div`,wt,[s[6]||=t(`span`,{class:`service-terminal__prompt`,"data-testid":`terminal-prompt`},`>`,-1),v(D(Ee),{ref_key:`adHocCommandInput`,ref:ae,modelValue:B.value,"onUpdate:modelValue":s[2]||=e=>B.value=e,suggestions:se.value,class:`service-terminal__autocomplete`,"input-class":`service-terminal__input`,placeholder:D(n)(`serviceTerminal.enterCommand`),"aria-label":D(n)(`serviceTerminal.enterCommand`),disabled:!D(ue)(r.service,i.value),"data-testid":`terminal-command-input`,onComplete:le,onKeydown:ge},null,8,[`modelValue`,`suggestions`,`placeholder`,`aria-label`,`disabled`]),v(D(d),{icon:ie.value?`pi pi-stop`:`pi pi-play`,severity:ie.value?`danger`:void 0,size:`small`,"data-testid":`terminal-run-btn`,disabled:!D(ue)(r.service,i.value)||!B.value.trim()&&!ie.value,onClick:s[3]||=e=>ie.value?fe():pe()},null,8,[`icon`,`severity`,`disabled`])]),t(`div`,Tt,[i.value?(G(),I(D(j),{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?(G(),I(D(j),{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`)?(G(),I(D(j),{key:2,icon:`pi pi-clock`,value:we(X.value/1e3),severity:`secondary`,class:`service-terminal__pill`},null,8,[`value`])):m(``,!0)]),v(at,{visible:Q.value,"onUpdate:visible":s[4]||=e=>Q.value=e,log:xe.value,onViewProcess:De},null,8,[`visible`,`log`])],2))}}),[[`__scopeId`,`data-v-ce19c81b`]]),kt=5,At=N;function jt(e){return e+Math.random()*e*.3}function Mt(e,t){let n=l(null),r=l(!1),i=l(!1),a=null,o=0,s=null;async function u(){if(!r.value){i.value=!0;try{n.value=await L.process.metrics.query({agentId:e.value,processId:t.value})}catch(e){console.error(`Failed to fetch initial metrics:`,c(e))}finally{i.value=!1}d()}}function d(){r.value=!0,a=L.process.onMetrics.subscribe({agentId:e.value,processId:t.value},{onData(e){o=0,pe(`connected`),n.value=e},onError(e){console.error(`Metrics stream error:`,e),r.value=!1,a=null,f()}})}function f(){if(o>=kt){console.warn(`Metrics stream: max retries (${kt}) reached, giving up`),pe(`disconnected`);return}pe(`reconnecting`);let e=jt(At*2**o);o++,s=setTimeout(()=>{s=null,d()},e)}function p(){s&&=(clearTimeout(s),null),a&&=(a.unsubscribe(),null),r.value=!1,o=0}return A([e,t],([e,t],[n,i])=>{(e!==n||t!==i)&&r.value&&(p(),u())}),O(()=>{p()}),{metrics:n,isStreaming:r,isLoading:i,start:u,stop:p}}var Nt={class:`service-metrics`,"data-testid":`service-metrics`},Pt={key:1,class:`service-metrics__skeleton`},Ft={class:`metric-skeleton`},It={class:`metric-skeleton`},Lt={key:2,class:`service-metrics__no-data`},Rt={key:1,class:`service-metrics__no-process`},zt=u(r({__name:`ServiceMetrics`,props:{service:{},processes:{}},setup(e){let n=e,r=R(()=>n.processes.find(e=>e.state===`running`||e.state===`starting`)??n.processes[0]??null),i=R(()=>r.value?.agentId??``),a=R(()=>r.value?.id??``),{t:s}=V(),{metrics:c,isLoading:l,start:u,stop:d}=Mt(i,a);return ce(()=>{r.value&&u()}),O(()=>{d()}),(e,n)=>(G(),h(`div`,Nt,[r.value?(G(),h(o,{key:0},[D(c)?(G(),I(Oe,{key:0,cpu:D(c).cpu,memory:D(c).memory},null,8,[`cpu`,`memory`])):D(l)?(G(),h(`div`,Pt,[t(`div`,Ft,[v(D(De),{width:`4rem`,height:`0.75rem`,class:`mb-2`}),v(D(De),{width:`3rem`,height:`1.75rem`,class:`mb-3`}),v(D(De),{width:`100%`,height:`6px`,"border-radius":`4px`})]),t(`div`,It,[v(D(De),{width:`4rem`,height:`0.75rem`,class:`mb-2`}),v(D(De),{width:`3rem`,height:`1.75rem`,class:`mb-3`}),v(D(De),{width:`6rem`,height:`0.65rem`})])])):(G(),h(`div`,Lt,F(D(s)(`serviceMetrics.noData`)),1))],64)):(G(),h(`div`,Rt,[n[0]||=t(`i`,{class:`pi pi-info-circle`},null,-1),t(`span`,null,F(D(s)(`serviceMetrics.notRunning`)),1)]))]))}}),[[`__scopeId`,`data-v-94f5993b`]]),Bt=`runeya:debug`;function Vt(){if(typeof window>`u`)return null;let e=new URLSearchParams(window.location.search).get(`debug`);return e===`1`||e===`true`?!0:e===`0`||e===`false`?!1:null}var Ht=Vt();if(Ht!==null)try{localStorage.setItem(Bt,String(Ht))}catch{}function Ut(){try{return localStorage.getItem(Bt)===`true`}catch{return!1}}var Wt=l(Ut());function Gt(){function e(){Wt.value=!Wt.value;try{localStorage.setItem(Bt,String(Wt.value))}catch{}}return{isDebug:Wt,toggle:e}}var Kt={class:`config-general`},qt={class:`config-card`},Jt={class:`config-card__header`},Yt={class:`config-card`},Xt={class:`config-card__header`},Zt={class:`config-card__hint`},Qt={class:`config-card`},$t={class:`config-card`},en={class:`config-card__header`},tn={class:`config-card__hint`},nn={class:`config-card`},rn={class:`config-card__header`},an={class:`config-card__hint`},on={class:`config-card`},sn={class:`config-card__header`},cn={class:`config-card__hint`},ln={class:`config-card`},un={class:`config-card__header`},dn={class:`config-card__hint`},fn={class:`config-card`},pn={class:`config-card__header`},mn={class:`config-card__hint`},hn={class:`config-card`},gn={class:`config-card__header`},_n={class:`config-card__hint`},vn={class:`config-card__hint`},yn={class:`config-card`},bn={class:`config-card__header`},xn={class:`config-card__hint`},Sn={class:`config-meta`},Cn={class:`config-card config-card--inline`},wn={class:`config-card__header`},Tn={class:`config-card config-card--inline`},En={class:`config-card__header`},Dn=150,On=u(r({__name:`ServiceConfigGeneral`,props:{service:{}},emits:[`save`],setup(e,{emit:n}){let{t:r}=V(),a=le(),s=C(),c=l([]);function u(e){let t=e.query.trim().toLowerCase(),n=new Set(w.value.groups);c.value=x.value.filter(e=>!n.has(e)&&(!t||e.toLowerCase().includes(t)))}function p(e,t){let n=t.trim();if(n){if(e===`ports`){let e=Number(n);if(!Number.isInteger(e)||e<1||e>65535||w.value.ports.includes(String(e)))return;w.value.ports=[...w.value.ports,String(e)]}else{if(w.value.groups.includes(n))return;w.value.groups=[...w.value.groups,n]}N()}}function m(e){let t=e.target;p(`groups`,t.value),t.value=``,c.value=[]}function g(e,t){let n=e.target;!n||typeof n.value!=`string`||!n.value.trim()||setTimeout(()=>{p(t,n.value),n.value=``},Dn)}let _=e,y=n,b=R(()=>s.projects.find(e=>e.serviceIds.includes(_.service.id)&&(e.orgId??null)===(_.service.orgId??null))??null),x=R(()=>{let e=b.value;if(!e)return[];let t=new Set;for(let n of e.serviceIds)for(let e of a.getById(n)?.groups??[])t.add(e);return[...t].sort((e,t)=>e.localeCompare(t))});function S(e){return Object.entries(e??{}).map(([e,t])=>({key:e,value:t}))}let w=l({name:_.service.name,cwd:_.service.cwd??``,ports:(_.service.ports??[]).map(String),groups:[..._.service.groups??[]],description:_.service.description??``,docsPath:_.service.docsPath??``,url:_.service.url??``,openapiUrl:_.service.openapiUrl??``,gitRemote:_.service.git?.remote??``,gitHome:_.service.git?.home??``,autoRestart:_.service.autoRestart,clearLogsOnStart:_.service.clearLogsOnStart??!1}),T=l(S(_.service.meta));A(()=>_.service,e=>{w.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},T.value=S(e.meta)});function E(){T.value=[...T.value,{key:``,value:``}]}function O(e){T.value=T.value.filter((t,n)=>n!==e)}function k(e,t,n){T.value=T.value.map((r,i)=>i===e?{...r,[t]:n}:r)}function j(){let e={};for(let{key:t,value:n}of T.value){let r=t.trim();r&&(e[r]=n)}return{name:w.value.name,cwd:w.value.cwd||null,ports:w.value.ports.map(Number).filter(e=>e>0&&e<=65535),groups:w.value.groups,description:w.value.description,docsPath:w.value.docsPath??``,url:w.value.url,openapiUrl:w.value.openapiUrl,git:w.value.gitRemote||w.value.gitHome?{remote:w.value.gitRemote||void 0,home:w.value.gitHome||void 0}:null,autoRestart:w.value.autoRestart,clearLogsOnStart:w.value.clearLogsOnStart,meta:Object.keys(e).length>0?e:null}}let M=null;function N(){M&&clearTimeout(M),M=setTimeout(()=>{y(`save`,j()),M=null},150)}return(e,n)=>(G(),h(`div`,Kt,[t(`div`,qt,[t(`div`,Jt,[n[14]||=t(`i`,{class:`pi pi-tag`},null,-1),t(`span`,null,F(D(r)(`serviceConfigGeneral.name`)),1)]),v(D(Y),{modelValue:w.value.name,"onUpdate:modelValue":n[0]||=e=>w.value.name=e,class:`config-card__input`,onBlur:N,onKeydown:i(J(N,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])]),t(`div`,Yt,[t(`div`,Xt,[n[15]||=t(`i`,{class:`pi pi-folder`},null,-1),t(`span`,null,F(D(r)(`serviceConfigGeneral.workingDirectory`)),1)]),v(D(Y),{modelValue:w.value.cwd,"onUpdate:modelValue":n[1]||=e=>w.value.cwd=e,class:`config-card__input`,placeholder:`.`,onBlur:N,onKeydown:i(J(N,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`]),t(`small`,Zt,F(D(r)(`serviceConfigGeneral.cwdHint`)),1)]),t(`div`,Qt,[n[16]||=t(`div`,{class:`config-card__header`},[t(`i`,{class:`pi pi-file-edit`}),t(`span`,null,`Dossier de documentation (wiki)`)],-1),v(D(Y),{modelValue:w.value.docsPath,"onUpdate:modelValue":n[2]||=e=>w.value.docsPath=e,class:`config-card__input`,placeholder:`(défaut : même que cwd)`,onBlur:N,onKeydown:i(J(N,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`]),n[17]||=t(`small`,{class:`config-card__hint`},[f(` Chemin relatif au cwd du service (ex. `),t(`code`,null,`docs`),f(`) ou absolu. Si vide, utilise le cwd. `)],-1)]),t(`div`,$t,[t(`div`,en,[n[18]||=t(`i`,{class:`pi pi-globe`},null,-1),t(`span`,null,F(D(r)(`serviceConfigGeneral.ports`)),1)]),v(D(Ee),{modelValue:w.value.ports,"onUpdate:modelValue":n[3]||=e=>w.value.ports=e,multiple:``,typeahead:!1,class:`config-card__input`,placeholder:D(r)(`serviceConfigGeneral.portsPlaceholder`),onChange:N,onBlur:n[4]||=e=>g(e,`ports`)},null,8,[`modelValue`,`placeholder`]),t(`small`,tn,F(D(r)(`serviceConfigGeneral.portsHint`)),1)]),t(`div`,nn,[t(`div`,rn,[n[19]||=t(`i`,{class:`pi pi-th-large`},null,-1),t(`span`,null,F(D(r)(`serviceConfigGeneral.groups`)),1)]),v(D(Ee),{modelValue:w.value.groups,"onUpdate:modelValue":n[5]||=e=>w.value.groups=e,multiple:``,suggestions:c.value,"complete-on-focus":!0,class:`config-card__input`,placeholder:D(r)(`serviceConfigGeneral.groupsPlaceholder`),onComplete:u,onChange:N,onKeydown:i(m,[`enter`]),onBlur:n[6]||=e=>g(e,`groups`)},null,8,[`modelValue`,`suggestions`,`placeholder`]),t(`small`,an,F(D(r)(`serviceConfigGeneral.groupsHint`)),1)]),t(`div`,on,[t(`div`,sn,[n[20]||=t(`i`,{class:`pi pi-info-circle`},null,-1),t(`span`,null,F(D(r)(`serviceConfigGeneral.description`)),1)]),v(D(te),{modelValue:w.value.description,"onUpdate:modelValue":n[7]||=e=>w.value.description=e,class:`config-card__input`,rows:2,onBlur:N},null,8,[`modelValue`]),t(`small`,cn,F(D(r)(`serviceConfigGeneral.descriptionHint`)),1)]),t(`div`,ln,[t(`div`,un,[n[21]||=t(`i`,{class:`pi pi-external-link`},null,-1),t(`span`,null,F(D(r)(`serviceConfigGeneral.url`)),1)]),v(D(Y),{modelValue:w.value.url,"onUpdate:modelValue":n[8]||=e=>w.value.url=e,class:`config-card__input`,placeholder:`https://...`,onBlur:N,onKeydown:i(J(N,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`]),t(`small`,dn,F(D(r)(`serviceConfigGeneral.urlHint`)),1)]),t(`div`,fn,[t(`div`,pn,[n[22]||=t(`i`,{class:`pi pi-book`},null,-1),t(`span`,null,F(D(r)(`serviceConfigGeneral.openapiUrl`)),1)]),v(D(Y),{modelValue:w.value.openapiUrl,"onUpdate:modelValue":n[9]||=e=>w.value.openapiUrl=e,class:`config-card__input`,placeholder:`https://.../swagger.json`,onBlur:N,onKeydown:i(J(N,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`]),t(`small`,mn,F(D(r)(`serviceConfigGeneral.openapiUrlHint`)),1)]),t(`div`,hn,[t(`div`,gn,[n[23]||=t(`i`,{class:`pi pi-github`},null,-1),t(`span`,null,F(D(r)(`serviceConfigGeneral.git`)),1)]),v(D(Y),{modelValue:w.value.gitRemote,"onUpdate:modelValue":n[10]||=e=>w.value.gitRemote=e,class:`config-card__input`,placeholder:`git@github.com:org/repo.git`,onBlur:N,onKeydown:i(J(N,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`]),t(`small`,_n,F(D(r)(`serviceConfigGeneral.gitRemoteHint`)),1),v(D(Y),{modelValue:w.value.gitHome,"onUpdate:modelValue":n[11]||=e=>w.value.gitHome=e,class:`config-card__input`,style:{"margin-top":`0.5rem`},placeholder:`https://github.com/org/repo`,onBlur:N,onKeydown:i(J(N,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`]),t(`small`,vn,F(D(r)(`serviceConfigGeneral.gitHomeHint`)),1)]),t(`div`,yn,[t(`div`,bn,[n[24]||=t(`i`,{class:`pi pi-hashtag`},null,-1),t(`span`,null,F(D(r)(`serviceConfigGeneral.meta`)),1)]),t(`small`,xn,F(D(r)(`serviceConfigGeneral.metaHint`)),1),t(`div`,Sn,[(G(!0),h(o,null,z(T.value,(e,t)=>(G(),h(`div`,{key:t,class:`config-meta__row`},[v(D(Y),{"model-value":e.key,placeholder:D(r)(`serviceConfigGeneral.metaKeyPlaceholder`),class:`config-meta__input`,"onUpdate:modelValue":e=>k(t,`key`,e),onBlur:N,onKeydown:i(J(N,[`prevent`]),[`enter`])},null,8,[`model-value`,`placeholder`,`onUpdate:modelValue`,`onKeydown`]),v(D(Y),{"model-value":e.value,placeholder:D(r)(`serviceConfigGeneral.metaValuePlaceholder`),class:`config-meta__input config-meta__input--wide`,"onUpdate:modelValue":e=>k(t,`value`,e),onBlur:N,onKeydown:i(J(N,[`prevent`]),[`enter`])},null,8,[`model-value`,`placeholder`,`onUpdate:modelValue`,`onKeydown`]),v(D(d),{icon:`pi pi-trash`,severity:`danger`,text:``,rounded:``,size:`small`,onClick:()=>{O(t),N()}},null,8,[`onClick`])]))),128)),v(D(d),{label:D(r)(`serviceConfigGeneral.addEntry`),icon:`pi pi-plus`,severity:`secondary`,outlined:``,size:`small`,class:`config-meta__add`,onClick:E},null,8,[`label`])])]),t(`div`,Cn,[t(`div`,wn,[n[25]||=t(`i`,{class:`pi pi-refresh`},null,-1),t(`span`,null,F(D(r)(`serviceConfigGeneral.autoRestart`)),1)]),v(D(Z),{modelValue:w.value.autoRestart,"onUpdate:modelValue":n[12]||=e=>w.value.autoRestart=e,onChange:N},null,8,[`modelValue`])]),t(`div`,Tn,[t(`div`,En,[n[26]||=t(`i`,{class:`pi pi-trash`},null,-1),t(`span`,null,F(D(r)(`serviceConfigGeneral.clearLogs`)),1)]),v(D(Z),{modelValue:w.value.clearLogsOnStart,"onUpdate:modelValue":n[13]||=e=>w.value.clearLogsOnStart=e,onChange:N},null,8,[`modelValue`])])]))}}),[[`__scopeId`,`data-v-6fef6778`]]),kn={class:`docker-config`},An={class:`docker-config__section`},jn={for:`docker-mode-image`,class:`docker-config__section-title`},Mn={class:`docker-config__mode-toggle`},Nn={class:`docker-config__mode-option`},Pn={class:`docker-config__mode-option`},Fn={key:0,class:`docker-config__section`},In={for:`docker-image`,class:`docker-config__label`},Ln={class:`docker-config__section`},Rn={class:`docker-config__section`},zn={for:`docker-build-context`,class:`docker-config__label`},Bn={class:`docker-config__section`},Vn={for:`docker-add-build-arg`,class:`docker-config__label`},Hn={class:`docker-config__kv-list`},Un={class:`docker-config__section`},Wn={for:`docker-target-stage`,class:`docker-config__label`},Gn={class:`docker-config__section`},Kn={for:`docker-user`,class:`docker-config__section-title`},qn={class:`docker-config__section`},Jn={for:`docker-user`,class:`docker-config__label`},Yn={class:`docker-config__section`},Xn={for:`docker-network-mode`,class:`docker-config__label`},Zn={key:2,class:`docker-config__section`},Qn={for:`docker-add-port`,class:`docker-config__label`},$n={class:`docker-config__list`},er={class:`docker-config__section`},tr={for:`docker-add-volume`,class:`docker-config__label`},nr={class:`docker-config__checkbox-row`},rr={for:`mountRootpath`,class:`docker-config__checkbox-label`},ir={class:`docker-config__list`},ar={class:`docker-config__section`},or={class:`docker-config__checkbox-row`},sr={for:`useNativeCommand`,class:`docker-config__checkbox-label`},cr={key:0,class:`docker-config__shell-row`},lr={for:`docker-native-shell`,class:`docker-config__label`},ur={class:`docker-config__hint`},dr={key:1,class:`docker-config__mode-toggle docker-config__mode-toggle--indented`},fr={class:`docker-config__mode-option`},pr={class:`docker-config__mode-option`},mr={class:`docker-config__section`},hr={for:`docker-entrypoint`,class:`docker-config__label`},gr={class:`docker-config__section`},_r={for:`docker-command`,class:`docker-config__label`},vr={class:`docker-config__section`},yr={for:`docker-add-bootstrap`,class:`docker-config__section-title`},br={class:`docker-config__hint-inline`},xr={class:`docker-config__bootstrap-row`},Sr={class:`docker-config__bootstrap-field`},Cr=[`for`],wr={class:`docker-config__bootstrap-field`},Tr=[`for`],Er={class:`docker-config__bootstrap-field docker-config__bootstrap-field--wide`},Dr=[`for`],Or={class:`docker-config__bootstrap-field`},kr=[`for`],Ar={class:`docker-config__bootstrap-actions`},jr={class:`docker-config__section`},Mr=u(r({__name:`ServiceConfigDocker`,props:{service:{}},emits:[`save`],setup(e,{emit:n}){let{t:r}=V(),a=e,s=n,c=a.service.dockerConfig??{},u=l(c.dockerfile?`build`:`image`),g=l(c.image??``),_=l(c.dockerfile??``),b=l(c.buildContext??``),x=l(Object.entries(c.buildArgs??{}).map(([e,t])=>({key:e,value:t}))),C=l(c.targetStage??``),w=l(c.networkMode??`host`),T=l([...c.ports??[]]),E=l([...c.volumes??[]]),O=l(c.mountRootpath??!1),k=l(c.entrypoint??``),A=l(c.command??``),j=l(c.user??``),M=l(c.useNativeCommand??!1),N=l(c.nativeCommandMode??`isolated`),P=l(c.nativeShell??`sh`),ee=[{label:`sh (POSIX)`,value:`sh`},{label:`bash`,value:`bash`},{label:`zsh`,value:`zsh`},{label:`ash (Alpine)`,value:`ash`}],I=l([...c.bootstrapCommands??[]]),L=l(!1),R=[{label:`Host (--network host)`,value:`host`},{label:`Bridge`,value:`bridge`}];function te(){x.value=[...x.value,{key:``,value:``}]}function ne(e){x.value=x.value.filter((t,n)=>n!==e)}function B(e,t,n){x.value=x.value.map((r,i)=>i===e?{...r,[t]:n}:r)}function re(){T.value=[...T.value,``]}function ie(e){T.value=T.value.filter((t,n)=>n!==e)}function ae(e,t){T.value=T.value.map((n,r)=>r===e?t:n)}function H(){E.value=[...E.value,``]}function U(e){E.value=E.value.filter((t,n)=>n!==e)}function oe(e,t){E.value=E.value.map((n,r)=>r===e?t:n)}function se(){I.value=[...I.value,{id:he(),label:`Bootstrap`,entrypoint:`/bin/sh`,command:`-c ""`,user:void 0}]}function ce(e){I.value=I.value.filter((t,n)=>n!==e)}function le(e,t,n){I.value=I.value.map((r,i)=>i===e?{...r,[t]:n===``?void 0:n}:r)}function ue(e,t){let n=[...I.value],r=e+t;r<0||r>=n.length||([n[e],n[r]]=[n[r],n[e]],I.value=n)}let de=null;function K(){de&&clearTimeout(de),de=setTimeout(()=>{let e={};for(let{key:t,value:n}of x.value)t.trim()&&(e[t.trim()]=n);s(`save`,{image:u.value===`image`&&g.value||void 0,dockerfile:u.value===`build`&&_.value||void 0,buildContext:b.value||void 0,buildArgs:e,targetStage:C.value||void 0,networkMode:w.value,ports:T.value.filter(Boolean),volumes:E.value.filter(Boolean),mountRootpath:O.value,entrypoint:k.value||void 0,command:A.value||void 0,user:j.value||void 0,useNativeCommand:M.value,nativeCommandMode:N.value,nativeShell:P.value,bootstrapCommands:I.value}),de=null},150)}function pe(e){ce(e),K()}function me(e,t){ue(e,t),K()}function ge(e){ne(e),K()}function _e(e){ie(e),K()}function X(e){U(e),K()}return(e,n)=>(G(),h(`div`,kn,[t(`div`,An,[t(`label`,jn,F(D(r)(`serviceConfigDocker.imageSource`)),1),t(`div`,Mn,[t(`label`,Nn,[y(t(`input`,{id:`docker-mode-image`,"onUpdate:modelValue":n[0]||=e=>u.value=e,type:`radio`,value:`image`,class:`docker-config__radio`,onChange:K},null,544),[[fe,u.value]]),f(` `+F(D(r)(`serviceConfigDocker.pullImage`)),1)]),t(`label`,Pn,[y(t(`input`,{"onUpdate:modelValue":n[1]||=e=>u.value=e,type:`radio`,value:`build`,class:`docker-config__radio`,onChange:K},null,544),[[fe,u.value]]),f(` `+F(D(r)(`serviceConfigDocker.buildDockerfile`)),1)])])]),u.value===`image`?(G(),h(`div`,Fn,[t(`label`,In,F(D(r)(`serviceConfigDocker.image`)),1),v(D(Y),{id:`docker-image`,modelValue:g.value,"onUpdate:modelValue":n[2]||=e=>g.value=e,placeholder:D(r)(`serviceConfigDocker.imagePlaceholder`),class:`docker-config__input`,onBlur:K,onKeydown:i(J(K,[`prevent`]),[`enter`])},null,8,[`modelValue`,`placeholder`,`onKeydown`])])):m(``,!0),u.value===`build`?(G(),h(o,{key:1},[t(`div`,Ln,[n[18]||=t(`label`,{for:`docker-dockerfile-btn`,class:`docker-config__label`},`Dockerfile`,-1),v(D(d),{id:`docker-dockerfile-btn`,label:D(r)(`serviceConfigDocker.editDockerfile`),icon:`pi pi-file-edit`,severity:`secondary`,outlined:``,size:`small`,onClick:n[3]||=e=>L.value=!0},null,8,[`label`]),v(D(S),{visible:L.value,"onUpdate:visible":n[6]||=e=>L.value=e,header:D(r)(`serviceConfigDocker.editDockerfile`),modal:``,style:{width:`800px`}},{footer:q(()=>[v(D(d),{label:D(r)(`serviceConfigDocker.closeDockerfile`),icon:`pi pi-times`,onClick:n[5]||=()=>{L.value=!1,K()}},null,8,[`label`])]),default:q(()=>[v(p,{modelValue:_.value,"onUpdate:modelValue":n[4]||=e=>_.value=e,language:`dockerfile`,style:{height:`400px`}},null,8,[`modelValue`])]),_:1},8,[`visible`,`header`])]),t(`div`,Rn,[t(`label`,zn,F(D(r)(`serviceConfigDocker.buildContext`)),1),v(D(Y),{id:`docker-build-context`,modelValue:b.value,"onUpdate:modelValue":n[7]||=e=>b.value=e,placeholder:`.`,class:`docker-config__input`,onBlur:K,onKeydown:i(J(K,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])]),t(`div`,Bn,[t(`label`,Vn,F(D(r)(`serviceConfigDocker.buildArgs`)),1),t(`div`,Hn,[(G(!0),h(o,null,z(x.value,(e,t)=>(G(),h(`div`,{key:t,class:`docker-config__kv-row`},[v(D(Y),{"model-value":e.key,placeholder:D(r)(`serviceConfigDocker.argNamePlaceholder`),class:`docker-config__kv-input`,"onUpdate:modelValue":e=>B(t,`key`,e),onBlur:K,onKeydown:i(J(K,[`prevent`]),[`enter`])},null,8,[`model-value`,`placeholder`,`onUpdate:modelValue`,`onKeydown`]),v(D(Y),{"model-value":e.value,placeholder:D(r)(`serviceConfigDocker.argValuePlaceholder`),class:`docker-config__kv-input`,"onUpdate:modelValue":e=>B(t,`value`,e),onBlur:K,onKeydown:i(J(K,[`prevent`]),[`enter`])},null,8,[`model-value`,`placeholder`,`onUpdate:modelValue`,`onKeydown`]),v(D(d),{icon:`pi pi-trash`,severity:`danger`,text:``,rounded:``,size:`small`,onClick:e=>ge(t)},null,8,[`onClick`])]))),128)),v(D(d),{id:`docker-add-build-arg`,label:D(r)(`serviceConfigDocker.addBuildArg`),icon:`pi pi-plus`,severity:`secondary`,outlined:``,size:`small`,onClick:te},null,8,[`label`])])]),t(`div`,Un,[t(`label`,Wn,F(D(r)(`serviceConfigDocker.targetStage`)),1),v(D(Y),{id:`docker-target-stage`,modelValue:C.value,"onUpdate:modelValue":n[8]||=e=>C.value=e,placeholder:D(r)(`serviceConfigDocker.targetStagePlaceholder`),class:`docker-config__input`,onBlur:K,onKeydown:i(J(K,[`prevent`]),[`enter`])},null,8,[`modelValue`,`placeholder`,`onKeydown`])])],64)):m(``,!0),v(D(Ae)),t(`div`,Gn,[t(`label`,Kn,F(D(r)(`serviceConfigDocker.runtimeConfig`)),1)]),t(`div`,qn,[t(`label`,Jn,F(D(r)(`serviceConfigDocker.userGroup`)),1),v(D(Y),{id:`docker-user`,modelValue:j.value,"onUpdate:modelValue":n[9]||=e=>j.value=e,placeholder:D(r)(`serviceConfigDocker.userGroupHint`),class:`docker-config__input`,onBlur:K,onKeydown:i(J(K,[`prevent`]),[`enter`])},null,8,[`modelValue`,`placeholder`,`onKeydown`])]),t(`div`,Yn,[t(`label`,Xn,F(D(r)(`serviceConfigDocker.networkMode`)),1),v(D(W),{"input-id":`docker-network-mode`,modelValue:w.value,"onUpdate:modelValue":n[10]||=e=>w.value=e,options:R,"option-label":`label`,"option-value":`value`,class:`docker-config__select`,onChange:K},null,8,[`modelValue`])]),w.value===`bridge`?(G(),h(`div`,Zn,[t(`label`,Qn,F(D(r)(`serviceConfigDocker.portMappings`)),1),t(`div`,$n,[(G(!0),h(o,null,z(T.value,(e,t)=>(G(),h(`div`,{key:t,class:`docker-config__list-row`},[v(D(Y),{"model-value":e,placeholder:D(r)(`serviceConfigDocker.portPlaceholder`),class:`docker-config__input`,"onUpdate:modelValue":e=>ae(t,e),onBlur:K,onKeydown:i(J(K,[`prevent`]),[`enter`])},null,8,[`model-value`,`placeholder`,`onUpdate:modelValue`,`onKeydown`]),v(D(d),{icon:`pi pi-trash`,severity:`danger`,text:``,rounded:``,size:`small`,onClick:e=>_e(t)},null,8,[`onClick`])]))),128)),v(D(d),{id:`docker-add-port`,label:D(r)(`serviceConfigDocker.addPort`),icon:`pi pi-plus`,severity:`secondary`,outlined:``,size:`small`,onClick:re},null,8,[`label`])])])):m(``,!0),t(`div`,er,[t(`label`,tr,F(D(r)(`serviceConfigDocker.volumes`)),1),t(`div`,nr,[v(D(ve),{modelValue:O.value,"onUpdate:modelValue":n[11]||=e=>O.value=e,binary:!0,"input-id":`mountRootpath`,onChange:K},null,8,[`modelValue`]),t(`label`,rr,F(D(r)(`serviceConfigDocker.autoMount`)),1)]),t(`div`,ir,[(G(!0),h(o,null,z(E.value,(e,t)=>(G(),h(`div`,{key:t,class:`docker-config__list-row`},[v(D(Y),{"model-value":e,placeholder:D(r)(`serviceConfigDocker.volumePlaceholder`),class:`docker-config__input`,"onUpdate:modelValue":e=>oe(t,e),onBlur:K,onKeydown:i(J(K,[`prevent`]),[`enter`])},null,8,[`model-value`,`placeholder`,`onUpdate:modelValue`,`onKeydown`]),v(D(d),{icon:`pi pi-trash`,severity:`danger`,text:``,rounded:``,size:`small`,onClick:e=>X(t)},null,8,[`onClick`])]))),128)),v(D(d),{id:`docker-add-volume`,label:D(r)(`serviceConfigDocker.addVolume`),icon:`pi pi-plus`,severity:`secondary`,outlined:``,size:`small`,onClick:H},null,8,[`label`])])]),v(D(Ae)),t(`div`,ar,[t(`div`,or,[v(D(ve),{modelValue:M.value,"onUpdate:modelValue":n[12]||=e=>M.value=e,binary:!0,"input-id":`useNativeCommand`,onChange:K},null,8,[`modelValue`]),t(`label`,sr,F(D(r)(`serviceConfigDocker.runNative`)),1)]),n[21]||=t(`span`,{class:`docker-config__hint`},` When enabled, the service command is executed directly inside the container (ignores CMD override below). `,-1),M.value?(G(),h(`div`,cr,[t(`label`,lr,F(D(r)(`serviceConfigDocker.shell`)),1),v(D(W),{"input-id":`docker-native-shell`,modelValue:P.value,"onUpdate:modelValue":n[13]||=e=>P.value=e,options:ee,"option-label":`label`,"option-value":`value`,class:`docker-config__select docker-config__select--small`,editable:``,placeholder:D(r)(`serviceConfigDocker.shellPlaceholder`),onChange:K},null,8,[`modelValue`,`placeholder`]),t(`span`,ur,[f(F(D(r)(`serviceConfigDocker.shellHint`))+` (`,1),n[19]||=t(`code`,null,`shell -c '...'`,-1),n[20]||=f(`)`,-1)])])):m(``,!0),M.value?(G(),h(`div`,dr,[t(`label`,fr,[y(t(`input`,{"onUpdate:modelValue":n[14]||=e=>N.value=e,type:`radio`,value:`isolated`,class:`docker-config__radio`,onChange:K},null,544),[[fe,N.value]]),f(` `+F(D(r)(`serviceConfigDocker.isolated`)),1)]),t(`label`,pr,[y(t(`input`,{"onUpdate:modelValue":n[15]||=e=>N.value=e,type:`radio`,value:`shared`,class:`docker-config__radio`,onChange:K},null,544),[[fe,N.value]]),f(` `+F(D(r)(`serviceConfigDocker.shared`)),1)])])):m(``,!0)]),M.value?m(``,!0):(G(),h(o,{key:3},[n[22]||=t(`div`,{class:`docker-config__section`},[t(`label`,{for:`docker-entrypoint`,class:`docker-config__section-title`},`Override`)],-1),t(`div`,mr,[t(`label`,hr,F(D(r)(`serviceConfigDocker.entrypoint`)),1),v(D(Y),{id:`docker-entrypoint`,modelValue:k.value,"onUpdate:modelValue":n[16]||=e=>k.value=e,placeholder:D(r)(`serviceConfigDocker.entrypointPlaceholder`),class:`docker-config__input`,onBlur:K,onKeydown:i(J(K,[`prevent`]),[`enter`])},null,8,[`modelValue`,`placeholder`,`onKeydown`])]),t(`div`,gr,[t(`label`,_r,F(D(r)(`serviceConfigDocker.cmdOverride`)),1),v(D(Y),{id:`docker-command`,modelValue:A.value,"onUpdate:modelValue":n[17]||=e=>A.value=e,placeholder:D(r)(`serviceConfigDocker.cmdPlaceholder`),class:`docker-config__input`,onBlur:K,onKeydown:i(J(K,[`prevent`]),[`enter`])},null,8,[`modelValue`,`placeholder`,`onKeydown`])])],64)),v(D(Ae)),t(`div`,vr,[t(`label`,yr,[f(F(D(r)(`serviceConfigDocker.bootstrapCommands`))+` `,1),t(`span`,br,` — `+F(D(r)(`serviceConfigDocker.bootstrapCommandsHint`)),1)])]),(G(!0),h(o,null,z(I.value,(e,n)=>(G(),h(`div`,{key:e.id,class:`docker-config__bootstrap-card`},[t(`div`,xr,[t(`div`,Sr,[t(`label`,{class:`docker-config__label`,for:`docker-bootstrap-label-${n}`},`Label`,8,Cr),v(D(Y),{id:`docker-bootstrap-label-${n}`,"model-value":e.label,placeholder:D(r)(`serviceConfigDocker.bootstrapLabelPlaceholder`),class:`docker-config__input`,"onUpdate:modelValue":e=>le(n,`label`,e),onBlur:K,onKeydown:i(J(K,[`prevent`]),[`enter`])},null,8,[`id`,`model-value`,`placeholder`,`onUpdate:modelValue`,`onKeydown`])]),t(`div`,wr,[t(`label`,{class:`docker-config__label`,for:`docker-bootstrap-entrypoint-${n}`},`Entrypoint`,8,Tr),v(D(Y),{id:`docker-bootstrap-entrypoint-${n}`,"model-value":e.entrypoint??``,placeholder:`/bin/sh`,class:`docker-config__input`,"onUpdate:modelValue":e=>le(n,`entrypoint`,e),onBlur:K,onKeydown:i(J(K,[`prevent`]),[`enter`])},null,8,[`id`,`model-value`,`onUpdate:modelValue`,`onKeydown`])]),t(`div`,Er,[t(`label`,{class:`docker-config__label`,for:`docker-bootstrap-command-${n}`},`Command`,8,Dr),v(D(Y),{id:`docker-bootstrap-command-${n}`,"model-value":e.command,placeholder:`-c "npm install"`,class:`docker-config__input`,"onUpdate:modelValue":e=>le(n,`command`,e),onBlur:K,onKeydown:i(J(K,[`prevent`]),[`enter`])},null,8,[`id`,`model-value`,`onUpdate:modelValue`,`onKeydown`])]),t(`div`,Or,[t(`label`,{class:`docker-config__label`,for:`docker-bootstrap-user-${n}`},`User:Group`,8,kr),v(D(Y),{id:`docker-bootstrap-user-${n}`,"model-value":e.user??``,placeholder:D(r)(`serviceConfigDocker.userGroupHint`),class:`docker-config__input`,"onUpdate:modelValue":e=>le(n,`user`,e),onBlur:K,onKeydown:i(J(K,[`prevent`]),[`enter`])},null,8,[`id`,`model-value`,`placeholder`,`onUpdate:modelValue`,`onKeydown`])]),t(`div`,Ar,[v(D(d),{icon:`pi pi-arrow-up`,text:``,rounded:``,size:`small`,disabled:n===0,onClick:e=>me(n,-1)},null,8,[`disabled`,`onClick`]),v(D(d),{icon:`pi pi-arrow-down`,text:``,rounded:``,size:`small`,disabled:n===I.value.length-1,onClick:e=>me(n,1)},null,8,[`disabled`,`onClick`]),v(D(d),{icon:`pi pi-times`,severity:`danger`,text:``,rounded:``,size:`small`,onClick:e=>pe(n)},null,8,[`onClick`])])])]))),128)),t(`div`,jr,[v(D(d),{id:`docker-add-bootstrap`,label:D(r)(`serviceConfigDocker.addBootstrapCommand`),icon:`pi pi-plus`,severity:`secondary`,outlined:``,size:`small`,onClick:se},null,8,[`label`])])]))}}),[[`__scopeId`,`data-v-91c13548`]]),Nr={class:`config-commands`},Pr={class:`config-commands__execution`},Fr={class:`config-card config-card--execution`},Ir={class:`config-card__header`},Lr={class:`config-card__hint`},Rr={class:`config-card config-card--execution`},zr={class:`config-card__header`},Br={key:0,class:`runner-option`},Vr={class:`runner-option`},Hr={class:`config-commands__tab-content`},Ur={key:0,class:`config-commands__empty`},Wr={class:`config-commands__row`},Gr={class:`config-commands__field`},Kr=[`for`],qr={class:`config-commands__field config-commands__field--wide`},Jr=[`for`],Yr={class:`config-commands__field`},Xr=[`for`],Zr={class:`config-commands__actions-cell`},Qr={class:`config-commands__footer`},$r={class:`config-commands__tab-content`},ei=`__inherit__`,ti=u(r({__name:`ServiceConfigCommands`,props:{service:{}},emits:[`save`,`dockerSave`],setup(e,{emit:n}){let r=e,a=n,{t:s}=V(),c=ee(),u=null,f=l({agentId:r.service.agentId??ei,runner:r.service.runner});A(()=>r.service,e=>{f.value={agentId:e.agentId??ei,runner:e.runner}});let p=R(()=>[{label:s(`serviceConfigCommands.native`),value:`native`,icon:`pi pi-desktop`},{label:s(`serviceConfigCommands.docker`),value:`docker`,icon:`pi pi-box`}]),_=R(()=>p.value.find(e=>e.value===f.value.runner)?.icon??`pi pi-box`),y=R(()=>[{label:s(`serviceForm.agentInherit`),value:ei},...c.agents.map(e=>({label:`${e.config.name} (${e.status.connected?s(`serviceConfigCommands.online`):s(`serviceConfigCommands.offline`)})`,value:e.config.id}))]),b=l([...r.service.commands??[]]);A(()=>r.service,e=>{u||(b.value=[...e.commands??[]])});function x(){b.value=[...b.value,{id:he(),label:``,command:``,cwd:void 0,shell:!0}]}function S(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===``?void 0:n}:r)}function w(){u&&clearTimeout(u),u=setTimeout(()=>{a(`save`,{agentId:f.value.agentId===ei?null:f.value.agentId||null,runner:f.value.runner,commands:b.value}),u=null},150)}function T(e){a(`dockerSave`,e)}function E(e){S(e),w()}return(n,r)=>(G(),h(`div`,Nr,[t(`div`,Pr,[t(`div`,Fr,[t(`div`,Ir,[r[2]||=t(`i`,{class:`pi pi-server`},null,-1),t(`span`,null,F(D(s)(`serviceConfigCommands.agent`)),1)]),v(D(W),{modelValue:f.value.agentId,"onUpdate:modelValue":r[0]||=e=>f.value.agentId=e,options:y.value,"option-label":`label`,"option-value":`value`,class:`config-card__input`,onChange:w},null,8,[`modelValue`,`options`]),t(`small`,Lr,F(D(s)(`serviceForm.agentHintEdit`)),1)]),t(`div`,Rr,[t(`div`,zr,[t(`i`,{class:g(_.value)},null,2),t(`span`,null,F(D(s)(`serviceConfigCommands.runner`)),1)]),v(D(W),{modelValue:f.value.runner,"onUpdate:modelValue":r[1]||=e=>f.value.runner=e,options:p.value,"option-label":`label`,"option-value":`value`,class:`config-card__input`,onChange:w},{value:q(e=>[e.value?(G(),h(`div`,Br,[t(`i`,{class:g(p.value.find(t=>t.value===e.value)?.icon)},null,2),t(`span`,null,F(p.value.find(t=>t.value===e.value)?.label),1)])):m(``,!0)]),option:q(e=>[t(`div`,Vr,[t(`i`,{class:g(e.option.icon)},null,2),t(`span`,null,F(e.option.label),1)])]),_:1},8,[`modelValue`,`options`])])]),v(D(xe),{value:`0`},{default:q(()=>[v(D(ye),null,{default:q(()=>[v(D(Q),{value:`0`},{default:q(()=>[r[3]||=t(`i`,{class:`pi pi-desktop tab-icon`},null,-1),t(`span`,null,F(D(s)(`serviceConfigCommands.native`)),1)]),_:1}),v(D(Q),{value:`1`},{default:q(()=>[r[4]||=t(`i`,{class:`pi pi-box tab-icon`},null,-1),t(`span`,null,F(D(s)(`serviceConfigCommands.docker`)),1)]),_:1})]),_:1}),v(D(be),null,{default:q(()=>[v(D($),{value:`0`},{default:q(()=>[t(`div`,Hr,[b.value.length===0?(G(),h(`div`,Ur,[t(`p`,null,F(D(s)(`serviceConfigCommands.noCommands`)),1)])):m(``,!0),(G(!0),h(o,null,z(b.value,(e,n)=>(G(),h(`div`,{key:e.id,class:`config-card`},[t(`div`,Wr,[t(`div`,Gr,[t(`label`,{class:`config-commands__label`,for:`cmd-label-${n}`},F(D(s)(`serviceConfigCommands.labelPlaceholder`)),9,Kr),v(D(Y),{id:`cmd-label-${n}`,"model-value":e.label,placeholder:D(s)(`serviceConfigCommands.labelPlaceholder`),class:`config-card__input`,"onUpdate:modelValue":e=>C(n,`label`,e),onBlur:w,onKeydown:i(J(w,[`prevent`]),[`enter`])},null,8,[`id`,`model-value`,`placeholder`,`onUpdate:modelValue`,`onKeydown`])]),t(`div`,qr,[t(`label`,{class:`config-commands__label`,for:`cmd-command-${n}`},F(D(s)(`serviceConfigCommands.commandPlaceholder`)),9,Jr),v(D(Y),{id:`cmd-command-${n}`,"model-value":e.command,placeholder:`e.g. npm start`,class:`config-card__input`,"onUpdate:modelValue":e=>C(n,`command`,e),onBlur:w,onKeydown:i(J(w,[`prevent`]),[`enter`])},null,8,[`id`,`model-value`,`onUpdate:modelValue`,`onKeydown`])]),t(`div`,Yr,[t(`label`,{class:`config-commands__label`,for:`cmd-cwd-${n}`},`Working Dir (optional)`,8,Xr),v(D(Y),{id:`cmd-cwd-${n}`,"model-value":e.cwd??``,placeholder:D(s)(`serviceConfigCommands.cwdPlaceholder`),class:`config-card__input`,"onUpdate:modelValue":e=>C(n,`cwd`,e),onBlur:w,onKeydown:i(J(w,[`prevent`]),[`enter`])},null,8,[`id`,`model-value`,`placeholder`,`onUpdate:modelValue`,`onKeydown`])]),t(`div`,Zr,[v(D(d),{icon:`pi pi-trash`,severity:`danger`,text:``,rounded:``,size:`small`,onClick:e=>E(n)},null,8,[`onClick`])])])]))),128)),t(`div`,Qr,[v(D(d),{label:D(s)(`serviceConfigCommands.addCommand`),icon:`pi pi-plus`,severity:`secondary`,outlined:``,size:`small`,onClick:x},null,8,[`label`])])])]),_:1}),v(D($),{value:`1`},{default:q(()=>[t(`div`,$r,[v(Mr,{service:e.service,onSave:T},null,8,[`service`])])]),_:1})]),_:1})]),_:1})]))}}),[[`__scopeId`,`data-v-df297a71`]]),ni={class:`config-env`,"data-testid":`config-env`},ri={key:0,class:`active-env-display`},ii={class:`active-env-label`},ai={key:1,class:`inheritance-toggle`},oi={class:`inheritance-label`},si={class:`inherited-header`},ci={class:`inherited-row-key`},li={class:`preview-key`},ui={class:`value-row`},di=[`onClick`],fi=[`onClick`],pi={key:0,class:`secret-mask`},mi={key:1,class:`preview-value`},hi={class:`config-env__header`},gi={class:`config-env__title`},_i={class:`config-env__actions`},vi={key:3,class:`variables-view`},yi={key:0},bi={key:1,class:`empty-state`},xi={class:`inherited-header`},Si={class:`passthrough-info`},Ci={class:`preview-key`},wi={key:0,class:`preview-value`},Ti={key:1,class:`passthrough-undefined`},Ei={key:4,class:`empty-state`},Di={key:5,class:`empty-state`},Oi={class:`editor-container`},ki={key:0,class:`editor-env-banner`},Ai={class:`editor-env-text`},ji={class:`editor-section`,"data-testid":`variables-editor`},Mi={key:0,class:`loading-container`},Ni={key:1,class:`preview-container`},Pi={class:`preview-info`},Fi={class:`preview-key`},Ii={class:`value-row`},Li=[`onClick`],Ri=[`onClick`],zi={key:0,class:`secret-mask`},Bi={key:1,class:`preview-value`},Vi=u(r({__name:`ServiceConfigEnv`,props:{service:{},projectId:{},activeEnvironmentId:{}},setup(n){let r=n,{t:i}=V(),a=de(),o=ne(),c=oe(),u=C(),p=re(),y=U(),b=R(()=>u.getByRef({id:r.projectId,orgId:p.activeOrgId})?.activeEnvironmentId??null),x=R(()=>c.findServiceEnvironment(r.service.id,b.value??``)),T=l(!1),O=l(!1),k=l(!1),N=l(!1),P=l(null),ee=l(null),{suggestions:z,meta:te,search:B}=Te(()=>ee.value??P.value),ie=l(new Set);function ae(e){let t=new Set(ie.value);t.has(e)?t.delete(e):t.add(e),ie.value=t}let H=l(null);function se(e,t){navigator.clipboard.writeText(t),H.value=e,setTimeout(()=>{H.value===e&&(H.value=null)},1500)}let W=l({}),le=l(!1),{values:Y,agentEntry:fe,urlHost:pe}=Ce({projectId:()=>r.projectId,environmentId:()=>b.value,agentId:()=>ue(r.service)??void 0}),me=R(()=>{let e={...Y.value};Object.assign(e,K(r.service.ports)),e[`service.NAME`]=r.service.name,e[`service.ID`]=r.service.id,Object.assign(e,M(r.service,pe.value)),r.service.url&&(e[`service.BASE_URL`]=r.service.url);let t=he(fe.value?.status?.cwd,fe.value?.status?.home);return t&&(e[`service.CWD`]=t),e});function he(e,t){let n=(r.service.resolvedCwd??r.service.cwd??``).trim();return n?n.startsWith(`~/`)&&t?t+n.slice(1):n.includes(`$`)?null:n.startsWith(`/`)||/^[A-Za-z]:[\\/]/.test(n)?n:null:e??null}let X=R(()=>fe.value?.config.passthroughEnv??[]),ve=R(()=>X.value.length>0);async function ye(){let e=ue(r.service);if(!e||!ve.value){W.value={};return}le.value=!0;try{W.value=await L.agent.getPassthroughEnv.query({id:e})}catch{W.value={}}finally{le.value=!1}}let be=R(()=>X.value.map(e=>({name:e,value:W.value[e]??null}))),xe=R(()=>!x.value||!b.value?!0:x.value.parentIds?.includes(b.value)??!0);async function Q(e){if(!(!x.value||!b.value)){N.value=!0;try{await c.update({id:x.value.id,parentIds:e?[b.value]:[]}),await je()}catch(e){a.add({severity:`error`,summary:i(`serviceConfigEnv.error`),detail:e.message??i(`serviceConfigEnv.failedToUpdateInheritance`),life:5e3})}finally{N.value=!1}}}let $=R(()=>{let e=u.getByRef({id:r.projectId,orgId:p.activeOrgId});return e?.activeEnvironmentId?c.getById(e.activeEnvironmentId):null});function Ee(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 De=R(()=>P.value?Ee(P.value.variables):[]),Oe=R(()=>{if(!x.value||!P.value?.sources)return De.value;let e=x.value.id;return De.value.filter(t=>P.value.sources[t.variableId]?.environmentId===e)}),ke=R(()=>{if(!x.value||!P.value?.sources)return[];let e=x.value.id;return De.value.filter(t=>P.value.sources[t.variableId]?.environmentId!==e)}),Ae=R(()=>{if(!P.value?.sources)return{};let e={};for(let[t,n]of Object.entries(P.value.sources))e[t]={environmentId:n.environmentId,overridden:n.overridden,...n.resolvedFrom?{resolvedFrom:n.resolvedFrom}:{},...n.overriddenBy?{overriddenBy:n.overriddenBy}:{}};return e});async function je(){if(x.value)try{P.value=await c.resolve(x.value.id)}catch(e){console.error(`Failed to resolve environment:`,e)}}async function Me(){if(b.value)try{ee.value=await c.resolve(b.value)}catch{}}async function Ne(){k.value=!0;try{await Ie(),await je(),O.value=!0}catch(e){a.add({severity:`error`,summary:i(`serviceConfigEnv.error`),detail:e.message??i(`serviceConfigEnv.failedToLoadPreview`),life:5e3})}finally{k.value=!1}}let Pe=R(()=>P.value?Object.entries(P.value.env).map(([e,t])=>({key:e,value:Object.entries(me.value).reduce((e,[t,n])=>e.replaceAll(`{{${t}}}`,n),t)})):[]);function Fe(e,t){return t?`***`:e.length>50?e.substring(0,47)+`...`:e}async function Ie(){if(x.value)return x.value;if(!b.value)return null;let e=$.value;return e?(await c.create({name:`${r.service.name??r.service.id} — ${e.name}`,projectId:r.projectId,scope:`service`,reference:r.service.id,activateOn:b.value,parentIds:[b.value],variables:{}}),x.value):null}let Le=R(()=>{let e=y.getByService(r.service.id);return e.length>0?e[0]:null}),Re=R(()=>{let e=Le.value?.state;return e===`running`||e===`errored`});async function ze(){await Ie(),T.value=!0,await Promise.all([je(),Me()])}function Be(){if(T.value=!1,!Re.value||!Le.value)return;let e=Le.value.state===`running`?`restart`:`start`,t=r.service.name||r.service.id;o.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=ue(r.service);if(!t)return;e===`restart`?(await y.restart(t,r.service.id),a.add({severity:`success`,summary:i(`serviceConfigEnv.serviceRestarted`),life:3e3})):(await y.start(t,r.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 A($,async e=>{e&&await Promise.all([je(),Me()])}),A(()=>ue(r.service),()=>{ye()}),ce(async()=>{r.projectId&&await c.fetchAll(r.projectId),await Promise.all([je(),Me(),ye()])}),(r,a)=>(G(),h(`div`,ni,[b.value?(G(),h(`div`,ri,[t(`span`,ii,F(D(i)(`serviceConfigEnv.activeEnvironment`)),1),v(Se,{"environment-id":b.value},null,8,[`environment-id`])])):m(``,!0),x.value&&$.value?(G(),h(`div`,ai,[v(D(Z),{"model-value":xe.value,disabled:N.value,"onUpdate:modelValue":Q},null,8,[`model-value`,`disabled`]),t(`span`,oi,F(xe.value?D(i)(`serviceConfigEnv.inheritsFrom`,{name:$.value.name}):D(i)(`serviceConfigEnv.isolated`,{name:$.value.name})),1)])):m(``,!0),ke.value.length>0?(G(),I(D(w),{key:2,class:`inherited-accordion`},{default:q(()=>[v(D(E),{value:`inherited`},{default:q(()=>[v(D(_),null,{default:q(()=>[t(`span`,si,[a[6]||=t(`i`,{class:`pi pi-arrow-down-left`},null,-1),f(` `+F(D(i)(`serviceConfigEnv.inheritedVars`))+` `,1),v(D(j),{value:String(ke.value.length),severity:`secondary`,rounded:``},null,8,[`value`])])]),_:1}),v(D(e),null,{default:q(()=>[v(D(ge),{value:ke.value,size:`small`,"show-headers":!1},{default:q(()=>[v(D(_e),{style:{width:`35%`}},{body:q(({data:e})=>[t(`div`,ci,[t(`code`,li,F(e.key),1),Ae.value[e.variableId]?(G(),I(Se,{key:0,"environment-id":Ae.value[e.variableId].environmentId,class:`source-badge`},null,8,[`environment-id`])):m(``,!0)])]),_:1}),v(D(_e),{style:{width:`65%`}},{body:q(({data:e})=>[t(`span`,ui,[t(`span`,{class:`value-actions`,onClick:a[0]||=J(()=>{},[`stop`])},[e.slot.isSecret?(G(),h(`i`,{key:0,class:g([ie.value.has(e.variableId)?`pi pi-eye-slash`:`pi pi-eye`,`action-icon`]),onClick:t=>ae(e.variableId)},null,10,di)):m(``,!0),t(`i`,{class:g([H.value===e.variableId?`pi pi-check`:`pi pi-copy`,`action-icon`]),onClick:t=>se(e.variableId,e.slot.pre+e.slot.value+e.slot.post)},null,10,fi)]),e.slot.isSecret&&!ie.value.has(e.variableId)?(G(),h(`span`,pi,`***`)):(G(),h(`code`,mi,F(e.slot.pre)+F(e.slot.value)+F(e.slot.post),1))])]),_:1})]),_:1},8,[`value`])]),_:1})]),_:1})]),_:1})):m(``,!0),t(`div`,hi,[t(`h3`,gi,F(D(i)(`serviceConfigEnv.envVars`)),1),t(`div`,_i,[v(D(d),{label:D(i)(`serviceConfigEnv.editVariables`),icon:`pi pi-pencil`,size:`small`,outlined:``,"data-testid":`env-edit-btn`,disabled:!b.value,onClick:ze},null,8,[`label`,`disabled`]),v(D(d),{label:D(i)(`serviceConfigEnv.preview`),icon:`pi pi-eye`,size:`small`,outlined:``,severity:`secondary`,loading:k.value,disabled:!b.value,"data-testid":`env-preview-btn`,onClick:Ne},null,8,[`label`,`loading`,`disabled`])])]),x.value?(G(),h(`div`,vi,[Oe.value.length>0?(G(),h(`div`,yi,[v(we,{"environment-id":x.value.id,sources:Ae.value,"resolved-env":{...ee.value?.env??{},...P.value?.env??{}},"service-builtins":me.value,editable:!1,"show-overrides":!0,"show-override-badge":!0,"show-delete":!1,"show-add-button":!1,onVariablesChanged:je},null,8,[`environment-id`,`sources`,`resolved-env`,`service-builtins`])])):(G(),h(`div`,bi,[t(`p`,null,F(D(i)(`serviceConfigEnv.noVarsConfigured`)),1)])),ve.value?(G(),I(D(w),{key:2,class:`inherited-accordion`},{default:q(()=>[v(D(E),{value:`passthrough`},{default:q(()=>[v(D(_),null,{default:q(()=>[t(`span`,xi,[a[7]||=t(`i`,{class:`pi pi-globe`},null,-1),f(` `+F(D(i)(`agentPage.passthrough.titleShort`))+` `,1),v(D(j),{value:String(X.value.length),severity:`secondary`,rounded:``},null,8,[`value`])])]),_:1}),v(D(e),null,{default:q(()=>[t(`p`,Si,F(D(i)(`serviceConfigEnv.passthroughInfo`)),1),le.value?(G(),I(D(s),{key:0,style:{width:`24px`,height:`24px`}})):(G(),I(D(ge),{key:1,value:be.value,stripedRows:``,size:`small`},{default:q(()=>[v(D(_e),{field:`name`,header:D(i)(`common.key`),style:{width:`35%`}},{body:q(({data:e})=>[t(`code`,Ci,F(e.name),1)]),_:1},8,[`header`]),v(D(_e),{header:D(i)(`common.value`),style:{width:`65%`}},{body:q(({data:e})=>[e.value===null?(G(),h(`span`,Ti,F(D(i)(`serviceConfigEnv.undefined`)),1)):(G(),h(`span`,wi,F(e.value),1))]),_:1},8,[`header`])]),_:1},8,[`value`]))]),_:1})]),_:1})]),_:1})):m(``,!0)])):b.value?(G(),h(`div`,Di,[t(`p`,null,F(D(i)(`serviceConfigEnv.noVarsConfigured`)),1)])):(G(),h(`div`,Ei,[t(`p`,null,F(D(i)(`serviceConfigEnv.noActiveEnv`)),1)])),v(D(S),{visible:T.value,header:D(i)(`serviceConfigEnv.editVarsHeader`),style:{width:`900px`},modal:``,"onUpdate:visible":a[2]||=e=>{e||Be()}},{footer:q(()=>[v(D(d),{label:D(i)(`actions.close`),icon:`pi pi-times`,onClick:a[1]||=e=>Be()},null,8,[`label`])]),default:q(()=>[t(`div`,Oi,[b.value?(G(),h(`div`,ki,[t(`span`,Ai,F(D(i)(`serviceConfigEnv.editingVarsFor`,{name:n.service.name||n.service.id})),1),v(Se,{"environment-id":b.value},null,8,[`environment-id`])])):m(``,!0),t(`div`,ji,[x.value?(G(),I(we,{key:0,"environment-id":x.value.id,editable:!0,sources:Ae.value,"autocomplete-enabled":!0,"autocomplete-suggestions":D(z),"autocomplete-meta":D(te),"resolved-env":{...ee.value?.env??{},...P.value?.env??{}},"service-builtins":me.value,"show-overrides":!0,onVariablesChanged:je,"show-delete":!0,"show-add-button":!0,onAutocompleteSearch:D(B)},null,8,[`environment-id`,`sources`,`autocomplete-suggestions`,`autocomplete-meta`,`resolved-env`,`service-builtins`,`onAutocompleteSearch`])):m(``,!0)])])]),_:1},8,[`visible`,`header`]),v(D(S),{visible:O.value,"onUpdate:visible":a[5]||=e=>O.value=e,header:D(i)(`serviceConfigEnv.previewHeader`),style:{width:`700px`},modal:``,"data-testid":`env-preview-dialog`},{footer:q(()=>[v(D(d),{label:D(i)(`actions.close`),icon:`pi pi-times`,onClick:a[4]||=e=>O.value=!1},null,8,[`label`])]),default:q(()=>[k.value?(G(),h(`div`,Mi,[v(D(s))])):P.value?(G(),h(`div`,Ni,[t(`p`,Pi,F(D(i)(`serviceConfigEnv.injectedVarsInfo`)),1),v(D(ge),{value:Pe.value,stripedRows:``,size:`small`,rows:15,paginator:Pe.value.length>15},{default:q(()=>[v(D(_e),{field:`key`,header:D(i)(`common.key`),style:{width:`35%`}},{body:q(({data:e})=>[t(`code`,Fi,F(e.key),1)]),_:1},8,[`header`]),v(D(_e),{header:D(i)(`common.value`),style:{width:`65%`}},{body:q(({data:e})=>[t(`span`,Ii,[t(`span`,{class:`value-actions`,onClick:a[3]||=J(()=>{},[`stop`])},[P.value.envSecrets.includes(e.key)?(G(),h(`i`,{key:0,class:g([ie.value.has(`preview:`+e.key)?`pi pi-eye-slash`:`pi pi-eye`,`action-icon`]),onClick:t=>ae(`preview:`+e.key)},null,10,Li)):m(``,!0),t(`i`,{class:g([H.value===`preview:`+e.key?`pi pi-check`:`pi pi-copy`,`action-icon`]),onClick:t=>se(`preview:`+e.key,e.value)},null,10,Ri)]),P.value.envSecrets.includes(e.key)&&!ie.value.has(`preview:`+e.key)?(G(),h(`span`,zi,`***`)):(G(),h(`span`,Bi,F(Fe(e.value,!1)),1))])]),_:1},8,[`header`])]),_:1},8,[`value`,`paginator`])])):m(``,!0)]),_:1},8,[`visible`,`header`])]))}}),[[`__scopeId`,`data-v-dc1e02d4`]]),Hi={class:`config-health`},Ui={class:`config-card config-card--inline`},Wi={class:`config-card__header`},Gi={class:`config-card`},Ki={class:`config-card__header`},qi={class:`config-card`},Ji={class:`config-card__header`},Yi={class:`config-card`},Xi={class:`config-card__header`},Zi={class:`config-card`},Qi={class:`config-card__header`},$i={key:1,class:`config-card`},ea={class:`config-card__header`},ta={class:`config-card__hint`},na={class:`config-card`},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=u(r({__name:`ServiceConfigHealthCheck`,props:{service:{}},emits:[`save`],setup(e,{emit:n}){let r=e,a=n,{t:s}=V(),c=l(!!r.service.healthCheck),u=l({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??``}),d=[{label:`HTTP Request`,value:`http`},{label:`Command`,value:`command`}],f=[{label:`GET`,value:`GET`},{label:`HEAD`,value:`HEAD`},{label:`POST`,value:`POST`},{label:`PUT`,value:`PUT`}];A(()=>r.service,e=>{c.value=!!e.healthCheck,u.value={type:e.healthCheck?.type??`http`,path:e.healthCheck?.path??`/health`,interval:e.healthCheck?.interval??3e4,timeout:e.healthCheck?.timeout??5e3,retries:e.healthCheck?.retries??3,method:e.healthCheck?.method??`GET`,expectedStatus:e.healthCheck?.expectedStatus??200,initialDelay:e.healthCheck?.initialDelay??5e3,command:e.healthCheck?.command??``}});let p=null;function g(){p&&clearTimeout(p),p=setTimeout(()=>{if(!c.value)a(`save`,void 0);else{if(u.value.type===`http`&&!u.value.path?.trim()||u.value.type===`command`&&!u.value.command?.trim())return;a(`save`,{type:u.value.type,path:u.value.path,method:u.value.method,expectedStatus:u.value.expectedStatus,command:u.value.command||void 0,interval:u.value.interval,timeout:u.value.timeout,retries:u.value.retries,initialDelay:u.value.initialDelay})}p=null},150)}return(e,n)=>(G(),h(`div`,Hi,[t(`div`,Ui,[t(`div`,Wi,[n[10]||=t(`i`,{class:`pi pi-heart`},null,-1),t(`span`,null,F(D(s)(`serviceConfigHealthCheck.enable`)),1)]),v(D(Z),{modelValue:c.value,"onUpdate:modelValue":n[0]||=e=>c.value=e,onChange:g},null,8,[`modelValue`])]),c.value?(G(),h(o,{key:0},[t(`div`,Gi,[t(`div`,Ki,[n[11]||=t(`i`,{class:`pi pi-cog`},null,-1),t(`span`,null,F(D(s)(`serviceConfigHealthCheck.type`)),1)]),v(D(W),{modelValue:u.value.type,"onUpdate:modelValue":n[1]||=e=>u.value.type=e,options:d,"option-label":`label`,"option-value":`value`,class:`config-card__input`,onChange:g},null,8,[`modelValue`]),n[12]||=t(`small`,{class:`config-card__hint`},`HTTP checks a URL endpoint; Command runs a shell command (exit 0 = healthy)`,-1)]),u.value.type===`http`?(G(),h(o,{key:0},[t(`div`,qi,[t(`div`,Ji,[n[13]||=t(`i`,{class:`pi pi-link`},null,-1),t(`span`,null,F(D(s)(`serviceConfigHealthCheck.path`)),1)]),v(D(Y),{modelValue:u.value.path,"onUpdate:modelValue":n[2]||=e=>u.value.path=e,class:`config-card__input`,placeholder:`/health`,onBlur:g,onKeydown:i(J(g,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])]),t(`div`,Yi,[t(`div`,Xi,[n[14]||=t(`i`,{class:`pi pi-directions`},null,-1),t(`span`,null,F(D(s)(`serviceConfigHealthCheck.method`)),1)]),v(D(W),{modelValue:u.value.method,"onUpdate:modelValue":n[3]||=e=>u.value.method=e,options:f,"option-label":`label`,"option-value":`value`,class:`config-card__input`,onChange:g},null,8,[`modelValue`])]),t(`div`,Zi,[t(`div`,Qi,[n[15]||=t(`i`,{class:`pi pi-check-circle`},null,-1),t(`span`,null,F(D(s)(`serviceConfigHealthCheck.expectedStatus`)),1)]),v(D(X),{modelValue:u.value.expectedStatus,"onUpdate:modelValue":n[4]||=e=>u.value.expectedStatus=e,class:`config-card__input`,"use-grouping":!1,min:100,max:599,onBlur:g,onKeydown:i(J(g,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`]),n[16]||=t(`small`,{class:`config-card__hint`},`HTTP status code to expect (default 200)`,-1)])],64)):m(``,!0),u.value.type===`command`?(G(),h(`div`,$i,[t(`div`,ea,[n[17]||=t(`i`,{class:`pi pi-code`},null,-1),t(`span`,null,F(D(s)(`serviceConfigHealthCheck.command`)),1)]),v(D(te),{modelValue:u.value.command,"onUpdate:modelValue":n[5]||=e=>u.value.command=e,class:`config-card__input`,rows:`2`,placeholder:`curl -sf http://localhost:3000/health`,"auto-resize":``,onBlur:g},null,8,[`modelValue`]),t(`small`,ta,F(D(s)(`serviceConfigHealthCheck.commandHint`)),1)])):m(``,!0),t(`div`,na,[t(`div`,ra,[n[18]||=t(`i`,{class:`pi pi-hourglass`},null,-1),t(`span`,null,F(D(s)(`serviceConfigHealthCheck.initialDelay`)),1)]),v(D(X),{modelValue:u.value.initialDelay,"onUpdate:modelValue":n[6]||=e=>u.value.initialDelay=e,class:`config-card__input`,"use-grouping":!1,min:0,onBlur:g,onKeydown:i(J(g,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`]),n[19]||=t(`small`,{class:`config-card__hint`},`Wait before first health check (ms)`,-1)]),t(`div`,ia,[t(`div`,aa,[n[20]||=t(`i`,{class:`pi pi-clock`},null,-1),t(`span`,null,F(D(s)(`serviceConfigHealthCheck.interval`)),1)]),v(D(X),{modelValue:u.value.interval,"onUpdate:modelValue":n[7]||=e=>u.value.interval=e,class:`config-card__input`,"use-grouping":!1,min:1e3,onBlur:g,onKeydown:i(J(g,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])]),t(`div`,oa,[t(`div`,sa,[n[21]||=t(`i`,{class:`pi pi-stopwatch`},null,-1),t(`span`,null,F(D(s)(`serviceConfigHealthCheck.timeout`)),1)]),v(D(X),{modelValue:u.value.timeout,"onUpdate:modelValue":n[8]||=e=>u.value.timeout=e,class:`config-card__input`,"use-grouping":!1,min:500,onBlur:g,onKeydown:i(J(g,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])]),t(`div`,ca,[t(`div`,la,[n[22]||=t(`i`,{class:`pi pi-replay`},null,-1),t(`span`,null,F(D(s)(`serviceConfigHealthCheck.retries`)),1)]),v(D(X),{modelValue:u.value.retries,"onUpdate:modelValue":n[9]||=e=>u.value.retries=e,class:`config-card__input`,"use-grouping":!1,min:0,max:10,onBlur:g,onKeydown:i(J(g,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])])],64)):m(``,!0)]))}}),[[`__scopeId`,`data-v-63e32039`]]),da={class:`config-shortcuts`},fa={key:0,class:`config-shortcuts__empty`},pa={class:`config-shortcuts__row`},ma={class:`config-shortcuts__field`},ha=[`for`],ga={class:`config-shortcuts__field config-shortcuts__field--wide`},_a=[`for`],va={class:`config-shortcuts__field`},ya=[`for`],ba={class:`config-shortcuts__actions-cell`},xa={class:`config-shortcuts__footer`},Sa=u(r({__name:`ServiceConfigShortcuts`,props:{service:{}},emits:[`save`],setup(e,{emit:n}){let r=e,{t:a}=V(),s=n,c=l([...r.service.shortcuts??[]]),u=null;A(()=>r.service,e=>{u||(c.value=[...e.shortcuts??[]])});function f(){c.value=[...c.value,{id:he(),label:``,command:``,cwd:void 0}]}function p(e){c.value=c.value.filter((t,n)=>n!==e)}function g(e,t,n){c.value=c.value.map((r,i)=>i===e?{...r,[t]:n||void 0}:r)}function _(){u&&clearTimeout(u),u=setTimeout(()=>{s(`save`,c.value),u=null},150)}function y(e){p(e),_()}return(e,n)=>(G(),h(`div`,da,[c.value.length===0?(G(),h(`div`,fa,[t(`p`,null,F(D(a)(`serviceConfigShortcuts.empty`)),1)])):m(``,!0),(G(!0),h(o,null,z(c.value,(e,n)=>(G(),h(`div`,{key:e.id,class:`config-card`},[t(`div`,pa,[t(`div`,ma,[t(`label`,{class:`config-shortcuts__label`,for:`shortcut-label-${n}`},F(D(a)(`serviceConfigShortcuts.label`)),9,ha),v(D(Y),{id:`shortcut-label-${n}`,"model-value":e.label,placeholder:D(a)(`serviceConfigShortcuts.labelPlaceholder`),class:`config-card__input`,"data-testid":`shortcut-label-input`,"onUpdate:modelValue":e=>g(n,`label`,e),onBlur:_,onKeydown:i(J(_,[`prevent`]),[`enter`])},null,8,[`id`,`model-value`,`placeholder`,`onUpdate:modelValue`,`onKeydown`])]),t(`div`,ga,[t(`label`,{class:`config-shortcuts__label`,for:`shortcut-command-${n}`},F(D(a)(`serviceConfigShortcuts.command`)),9,_a),v(D(Y),{id:`shortcut-command-${n}`,"model-value":e.command,placeholder:D(a)(`serviceConfigShortcuts.commandPlaceholder`),class:`config-card__input`,"data-testid":`shortcut-command-input`,"onUpdate:modelValue":e=>g(n,`command`,e),onBlur:_,onKeydown:i(J(_,[`prevent`]),[`enter`])},null,8,[`id`,`model-value`,`placeholder`,`onUpdate:modelValue`,`onKeydown`])]),t(`div`,va,[t(`label`,{class:`config-shortcuts__label`,for:`shortcut-cwd-${n}`},F(D(a)(`serviceConfigShortcuts.workingDir`)),9,ya),v(D(Y),{id:`shortcut-cwd-${n}`,"model-value":e.cwd??``,placeholder:D(a)(`serviceConfigShortcuts.cwdPlaceholder`),class:`config-card__input`,"onUpdate:modelValue":e=>g(n,`cwd`,e),onBlur:_,onKeydown:i(J(_,[`prevent`]),[`enter`])},null,8,[`id`,`model-value`,`placeholder`,`onUpdate:modelValue`,`onKeydown`])]),t(`div`,ba,[v(D(d),{icon:`pi pi-trash`,severity:`danger`,text:``,rounded:``,size:`small`,onClick:e=>y(n)},null,8,[`onClick`])])])]))),128)),t(`div`,xa,[v(D(d),{label:D(a)(`serviceConfigShortcuts.addShortcut`),icon:`pi pi-plus`,severity:`secondary`,outlined:``,size:`small`,"data-testid":`add-shortcut-btn`,onClick:f},null,8,[`label`])])]))}}),[[`__scopeId`,`data-v-d6ecb989`]]),Ca={class:`config-log-parsers`},wa={class:`config-card`},Ta={class:`config-card__header`},Ea={class:`config-card__hint`},Da={class:`config-card`},Oa={class:`config-card__header`},ka={class:`config-card__header-hint`},Aa={class:`config-log-parsers__order`},ja={class:`config-log-parsers__name`},Ma={key:1,class:`config-log-parsers__empty`},Na={class:`config-log-parsers__add-row`},Pa={class:`config-log-parsers__footer`},Fa=u(r({__name:`ServiceConfigLogs`,props:{service:{}},emits:[`save`],setup(e,{emit:n}){let r=e,i=n,a=k(),{t:s}=V(),c=je(),u=l([...r.service.parserIds??[]]);A(()=>r.service,e=>{u.value=[...e.parserIds??[]]});let p=R(()=>[...c.parsers].filter(e=>e.enabled).sort((e,t)=>e.name.localeCompare(t.name))),g=R(()=>p.value.filter(e=>!u.value.includes(e.id))),_=l(u.value.map(e=>c.parsers.find(t=>t.id===e)).filter(e=>e!==void 0));A(u,e=>{let t=_.value.filter(t=>e.includes(t.id)),n=e.filter(e=>!t.find(t=>t.id===e)).map(e=>c.parsers.find(t=>t.id===e)).filter(e=>e!==void 0);_.value=[...t,...n]}),A(()=>c.parsers,()=>{_.value=u.value.map(e=>c.parsers.find(t=>t.id===e)).filter(e=>e!==void 0)});let y=l(null);function b(e){if(!e)return;let t=c.parsers.find(t=>t.id===e);t&&(u.value=[...u.value,e],_.value=[..._.value,t],y.value=null,C())}function x(e){u.value=u.value.filter(t=>t!==e),_.value=_.value.filter(t=>t.id!==e),C()}function S(){u.value=_.value.map(e=>e.id),C()}function C(){i(`save`,{parserIds:_.value.map(e=>e.id)})}return ce(()=>{c.fetchParsers(),c.subscribeParsers()}),O(()=>{c.unsubscribeParsers()}),(e,n)=>(G(),h(`div`,Ca,[t(`div`,wa,[t(`div`,Ta,[n[3]||=t(`i`,{class:`pi pi-code`},null,-1),t(`span`,null,F(D(s)(`serviceConfigLogs.jsParsers`)),1)]),t(`small`,Ea,F(D(s)(`serviceConfigLogs.jsParsersHint`)),1)]),t(`div`,Da,[t(`div`,Oa,[n[4]||=t(`i`,{class:`pi pi-sort-alt`},null,-1),t(`span`,null,F(D(s)(`serviceConfigLogs.executionOrder`)),1),t(`small`,ka,F(D(s)(`serviceConfigLogs.executionOrderHint`)),1)]),_.value.length>0?(G(),I(D(H),{key:0,modelValue:_.value,"onUpdate:modelValue":n[0]||=e=>_.value=e,animation:150,handle:`.drag-handle`,class:`config-log-parsers__drag-list`,"data-testid":`log-parsers-drag-list`,onEnd:S},{default:q(()=>[(G(!0),h(o,null,z(_.value,(e,r)=>(G(),h(`div`,{key:e.id,class:`config-log-parsers__drag-row`,"data-testid":`log-parsers-drag-row`},[n[5]||=t(`span`,{class:`drag-handle`,"data-testid":`drag-handle`},[t(`i`,{class:`pi pi-bars`})],-1),t(`span`,Aa,F(r+1),1),t(`span`,ja,F(e.name),1),e.builtin?(G(),I(D(j),{key:0,severity:`secondary`,class:`config-log-parsers__builtin-badge`},{default:q(()=>[f(F(D(s)(`serviceConfigLogs.builtin`)),1)]),_:1})):m(``,!0),e.enabled?m(``,!0):(G(),I(D(j),{key:1,severity:`warn`,class:`config-log-parsers__disabled-badge`},{default:q(()=>[f(F(D(s)(`serviceConfigLogs.disabled`)),1)]),_:1})),v(D(d),{icon:`pi pi-trash`,severity:`danger`,text:``,size:`small`,class:`config-log-parsers__delete`,onClick:t=>x(e.id)},null,8,[`onClick`])]))),128))]),_:1},8,[`modelValue`])):m(``,!0),_.value.length===0?(G(),h(`div`,Ma,F(D(s)(`serviceConfigLogs.empty`)),1)):m(``,!0),t(`div`,Na,[v(D(W),{modelValue:y.value,"onUpdate:modelValue":[n[1]||=e=>y.value=e,b],options:g.value,"option-label":`name`,"option-value":`id`,placeholder:D(s)(`serviceConfigLogs.addParser`),class:`config-log-parsers__add-select`,loading:D(c).loading,disabled:g.value.length===0},{option:q(({option:e})=>[t(`span`,null,F(e.name),1),e.builtin?(G(),I(D(j),{key:0,severity:`secondary`,class:`ml-2`,style:{"font-size":`0.65rem`,padding:`0.1rem 0.35rem`}},{default:q(()=>[f(F(D(s)(`serviceConfigLogs.builtin`)),1)]),_:1})):m(``,!0)]),_:1},8,[`modelValue`,`options`,`placeholder`,`loading`,`disabled`])])]),t(`div`,Pa,[v(D(d),{label:D(s)(`serviceConfigLogs.manageParsers`),icon:`pi pi-cog`,severity:`secondary`,outlined:``,size:`small`,onClick:n[2]||=e=>D(a).push({name:`settings`,query:{section:`parsers`}})},null,8,[`label`])])]))}}),[[`__scopeId`,`data-v-73b711b6`]]),Ia={class:`config-log-sources`},La={class:`config-card`},Ra={class:`config-card__header`},za={class:`config-card__hint`},Ba={key:0,class:`config-card config-card--list`},Va={class:`source-row__info`},Ha={class:`source-row__type`},Ua={class:`source-row__label`},Wa={class:`source-row__actions`},Ga={key:1,class:`config-log-sources__empty`},Ka={class:`config-log-sources__footer`},qa={class:`dialog-form`},Ja={class:`dialog-form__field`},Ya={for:`lsrc-type`,class:`dialog-form__label`},Xa={class:`dialog-form__field`},Za={for:`lsrc-path-file`,class:`dialog-form__label`},Qa={class:`dialog-form__field`},$a={for:`lsrc-encoding-file`,class:`dialog-form__label`},eo={class:`dialog-form__field dialog-form__field--row`},to={for:`lsrc-startFromEnd-file`,class:`dialog-form__label`},no={class:`dialog-form__field dialog-form__field--row`},ro={for:`lsrc-createIfNotExists-file`,class:`dialog-form__label`},io={class:`dialog-form__field`},ao={for:`lsrc-connectionString-mongo`,class:`dialog-form__label`},oo={class:`dialog-form__row`},so={class:`dialog-form__field`},co={class:`dialog-form__field`},lo={class:`dialog-form__row`},uo={class:`dialog-form__field`},fo={class:`dialog-form__field`},po={class:`dialog-form__field`},mo={class:`dialog-form__row`},ho={class:`dialog-form__field dialog-form__field--grow`},go={class:`dialog-form__field dialog-form__field--port`},_o={class:`dialog-form__row`},vo={class:`dialog-form__field`},yo={class:`dialog-form__field`},bo={class:`dialog-form__row`},xo={class:`dialog-form__field`},So={class:`dialog-form__field`},Co={class:`dialog-form__row`},wo={class:`dialog-form__field`},To={class:`dialog-form__field`},Eo={class:`dialog-form__row`},Do={class:`dialog-form__field`},Oo={class:`dialog-form__field`},ko={class:`dialog-form__field`},Ao={key:3,class:`dialog-form__hint-block`},jo=u(r({__name:`ServiceConfigLogSources`,props:{service:{}},emits:[`save`],setup(e,{emit:n}){let{t:r}=V(),i=e,a=n,s=[{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 c(e){return e===`console`?{type:`console`}:e===`file`?{type:`file`,path:``,encoding:`utf-8`,startFromEnd:!0,createIfNotExists:!1}:e===`mongo`?{type:`mongo`,connectionString:``,database:``,collection:``,timestampField:`timestamp`,messageField:`message`}:{type:`mysql`,host:`localhost`,port:3306,user:``,password:``,database:``,table:``,timestampColumn:`created_at`,messageColumn:`message`,pollIntervalMs:2e3}}let u=l([...i.service.logSources??[]]);A(()=>i.service.logSources,e=>{u.value=[...e??[]]});let p=l(!1),_=l(null),y=l(c(`console`));function b(){_.value=null,y.value=c(`file`),p.value=!0}function x(e){_.value=e,y.value={...u.value[e]},p.value=!0}function C(e){y.value=c(e)}function w(){_.value===null?u.value=[...u.value,{...y.value}]:u.value=u.value.map((e,t)=>t===_.value?{...y.value}:e),p.value=!1,a(`save`,{logSources:u.value})}function T(e){u.value=u.value.filter((t,n)=>n!==e),a(`save`,{logSources:u.value})}function E(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 O(e){return e===`console`?`pi-terminal`:e===`file`?`pi-file`:`pi-database`}return(e,n)=>(G(),h(`div`,Ia,[t(`div`,La,[t(`div`,Ra,[n[23]||=t(`i`,{class:`pi pi-inbox`},null,-1),t(`span`,null,F(D(r)(`serviceConfigLogSources.title`)),1)]),t(`small`,za,F(D(r)(`serviceConfigLogSources.hint`)),1)]),u.value.length>0?(G(),h(`div`,Ba,[(G(!0),h(o,null,z(u.value,(e,n)=>(G(),h(`div`,{key:n,class:`source-row`},[t(`i`,{class:g(`pi ${O(e.type)} source-row__icon`)},null,2),t(`div`,Va,[t(`span`,Ha,F(e.type),1),t(`span`,Ua,F(E(e)),1)]),t(`div`,Wa,[v(D(d),{icon:`pi pi-pencil`,text:``,size:`small`,severity:`secondary`,onClick:e=>x(n)},null,8,[`onClick`]),v(D(d),{icon:`pi pi-trash`,text:``,size:`small`,severity:`danger`,onClick:e=>T(n)},null,8,[`onClick`])])]))),128))])):(G(),h(`div`,Ga,[n[24]||=t(`i`,{class:`pi pi-inbox config-log-sources__empty-icon`},null,-1),t(`p`,null,F(D(r)(`serviceConfigLogSources.empty`)),1),t(`small`,null,F(D(r)(`serviceConfigLogSources.emptyHint`)),1)])),t(`div`,Ka,[v(D(d),{label:D(r)(`serviceConfigLogSources.addSource`),icon:`pi pi-plus`,size:`small`,onClick:b},null,8,[`label`])]),v(D(S),{visible:p.value,"onUpdate:visible":n[22]||=e=>p.value=e,header:_.value===null?D(r)(`serviceConfigLogSources.addDialog`):D(r)(`serviceConfigLogSources.editDialog`),modal:``,style:{width:`520px`}},{footer:q(()=>[v(D(d),{label:D(r)(`serviceConfigLogSources.cancel`),severity:`secondary`,outlined:``,onClick:n[21]||=e=>p.value=!1},null,8,[`label`]),v(D(d),{label:_.value===null?D(r)(`serviceConfigLogSources.add`):D(r)(`serviceConfigLogSources.save`),icon:`pi pi-check`,onClick:w},null,8,[`label`])]),default:q(()=>[t(`div`,qa,[t(`div`,Ja,[t(`label`,Ya,F(D(r)(`serviceConfigLogSources.type`)),1),v(D(W),{"input-id":`lsrc-type`,"model-value":y.value.type,options:s,"option-label":`label`,"option-value":`value`,class:`dialog-form__input`,"onUpdate:modelValue":C},null,8,[`model-value`])]),y.value.type===`file`?(G(),h(o,{key:0},[t(`div`,Xa,[t(`label`,Za,[f(F(D(r)(`serviceConfigLogSources.path`))+` `,1),n[25]||=t(`span`,{class:`dialog-form__required`},`*`,-1)]),v(D(Y),{id:`lsrc-path-file`,modelValue:y.value.path,"onUpdate:modelValue":n[0]||=e=>y.value.path=e,class:`dialog-form__input`,placeholder:`/var/log/app.log`},null,8,[`modelValue`])]),t(`div`,Qa,[t(`label`,$a,F(D(r)(`serviceConfigLogSources.encoding`)),1),v(D(Y),{id:`lsrc-encoding-file`,modelValue:y.value.encoding,"onUpdate:modelValue":n[1]||=e=>y.value.encoding=e,class:`dialog-form__input`,placeholder:`utf-8`},null,8,[`modelValue`])]),t(`div`,eo,[t(`label`,to,F(D(r)(`serviceConfigLogSources.startFromEnd`)),1),v(D(Z),{"input-id":`lsrc-startFromEnd-file`,modelValue:y.value.startFromEnd,"onUpdate:modelValue":n[2]||=e=>y.value.startFromEnd=e},null,8,[`modelValue`])]),t(`div`,no,[t(`label`,ro,F(D(r)(`serviceConfigLogSources.createIfNotExists`)),1),v(D(Z),{"input-id":`lsrc-createIfNotExists-file`,modelValue:y.value.createIfNotExists,"onUpdate:modelValue":n[3]||=e=>y.value.createIfNotExists=e},null,8,[`modelValue`])])],64)):y.value.type===`mongo`?(G(),h(o,{key:1},[t(`div`,io,[t(`label`,ao,[f(F(D(r)(`serviceConfigLogSources.connectionString`))+` `,1),n[26]||=t(`span`,{class:`dialog-form__required`},`*`,-1)]),v(D(Y),{id:`lsrc-connectionString-mongo`,modelValue:y.value.connectionString,"onUpdate:modelValue":n[4]||=e=>y.value.connectionString=e,class:`dialog-form__input`,placeholder:`mongodb://user:pass@host:27017`,type:`password`,autocomplete:`off`},null,8,[`modelValue`])]),t(`div`,oo,[t(`div`,so,[n[27]||=t(`label`,{for:`lsrc-database-mongo`,class:`dialog-form__label`},[f(`Database `),t(`span`,{class:`dialog-form__required`},`*`)],-1),v(D(Y),{id:`lsrc-database-mongo`,modelValue:y.value.database,"onUpdate:modelValue":n[5]||=e=>y.value.database=e,class:`dialog-form__input`,placeholder:`mydb`},null,8,[`modelValue`])]),t(`div`,co,[n[28]||=t(`label`,{for:`lsrc-collection-mongo`,class:`dialog-form__label`},[f(`Collection `),t(`span`,{class:`dialog-form__required`},`*`)],-1),v(D(Y),{id:`lsrc-collection-mongo`,modelValue:y.value.collection,"onUpdate:modelValue":n[6]||=e=>y.value.collection=e,class:`dialog-form__input`,placeholder:`logs`},null,8,[`modelValue`])])]),t(`div`,lo,[t(`div`,uo,[n[29]||=t(`label`,{for:`lsrc-timestampField-mongo`,class:`dialog-form__label`},`Timestamp field`,-1),v(D(Y),{id:`lsrc-timestampField-mongo`,modelValue:y.value.timestampField,"onUpdate:modelValue":n[7]||=e=>y.value.timestampField=e,class:`dialog-form__input`,placeholder:`timestamp`},null,8,[`modelValue`])]),t(`div`,fo,[n[30]||=t(`label`,{for:`lsrc-messageField-mongo`,class:`dialog-form__label`},`Message field`,-1),v(D(Y),{id:`lsrc-messageField-mongo`,modelValue:y.value.messageField,"onUpdate:modelValue":n[8]||=e=>y.value.messageField=e,class:`dialog-form__input`,placeholder:`message`},null,8,[`modelValue`])])]),t(`div`,po,[n[31]||=t(`label`,{for:`lsrc-levelField-mongo`,class:`dialog-form__label`},[f(`Level field `),t(`span`,{class:`dialog-form__hint`},`(optional)`)],-1),v(D(Y),{id:`lsrc-levelField-mongo`,modelValue:y.value.levelField,"onUpdate:modelValue":n[9]||=e=>y.value.levelField=e,class:`dialog-form__input`,placeholder:`level`},null,8,[`modelValue`])])],64)):y.value.type===`mysql`?(G(),h(o,{key:2},[t(`div`,mo,[t(`div`,ho,[n[32]||=t(`label`,{for:`lsrc-host-mysql`,class:`dialog-form__label`},[f(`Host `),t(`span`,{class:`dialog-form__required`},`*`)],-1),v(D(Y),{id:`lsrc-host-mysql`,modelValue:y.value.host,"onUpdate:modelValue":n[10]||=e=>y.value.host=e,class:`dialog-form__input`,placeholder:`localhost`},null,8,[`modelValue`])]),t(`div`,go,[n[33]||=t(`label`,{for:`lsrc-port-mysql`,class:`dialog-form__label`},`Port`,-1),v(D(X),{"input-id":`lsrc-port-mysql`,modelValue:y.value.port,"onUpdate:modelValue":n[11]||=e=>y.value.port=e,min:1,max:65535,class:`dialog-form__input`},null,8,[`modelValue`])])]),t(`div`,_o,[t(`div`,vo,[n[34]||=t(`label`,{for:`lsrc-user-mysql`,class:`dialog-form__label`},[f(`User `),t(`span`,{class:`dialog-form__required`},`*`)],-1),v(D(Y),{id:`lsrc-user-mysql`,modelValue:y.value.user,"onUpdate:modelValue":n[12]||=e=>y.value.user=e,class:`dialog-form__input`,placeholder:`root`},null,8,[`modelValue`])]),t(`div`,yo,[n[35]||=t(`label`,{for:`lsrc-password-mysql`,class:`dialog-form__label`},`Password`,-1),v(D(Y),{id:`lsrc-password-mysql`,modelValue:y.value.password,"onUpdate:modelValue":n[13]||=e=>y.value.password=e,class:`dialog-form__input`,type:`password`,autocomplete:`new-password`},null,8,[`modelValue`])])]),t(`div`,bo,[t(`div`,xo,[n[36]||=t(`label`,{for:`lsrc-database-mysql`,class:`dialog-form__label`},[f(`Database `),t(`span`,{class:`dialog-form__required`},`*`)],-1),v(D(Y),{id:`lsrc-database-mysql`,modelValue:y.value.database,"onUpdate:modelValue":n[14]||=e=>y.value.database=e,class:`dialog-form__input`,placeholder:`app_db`},null,8,[`modelValue`])]),t(`div`,So,[n[37]||=t(`label`,{for:`lsrc-table-mysql`,class:`dialog-form__label`},[f(`Table `),t(`span`,{class:`dialog-form__required`},`*`)],-1),v(D(Y),{id:`lsrc-table-mysql`,modelValue:y.value.table,"onUpdate:modelValue":n[15]||=e=>y.value.table=e,class:`dialog-form__input`,placeholder:`logs`},null,8,[`modelValue`])])]),t(`div`,Co,[t(`div`,wo,[n[38]||=t(`label`,{for:`lsrc-timestampColumn-mysql`,class:`dialog-form__label`},`Timestamp column`,-1),v(D(Y),{id:`lsrc-timestampColumn-mysql`,modelValue:y.value.timestampColumn,"onUpdate:modelValue":n[16]||=e=>y.value.timestampColumn=e,class:`dialog-form__input`,placeholder:`created_at`},null,8,[`modelValue`])]),t(`div`,To,[n[39]||=t(`label`,{for:`lsrc-messageColumn-mysql`,class:`dialog-form__label`},`Message column`,-1),v(D(Y),{id:`lsrc-messageColumn-mysql`,modelValue:y.value.messageColumn,"onUpdate:modelValue":n[17]||=e=>y.value.messageColumn=e,class:`dialog-form__input`,placeholder:`message`},null,8,[`modelValue`])])]),t(`div`,Eo,[t(`div`,Do,[n[40]||=t(`label`,{for:`lsrc-levelColumn-mysql`,class:`dialog-form__label`},[f(`Level column `),t(`span`,{class:`dialog-form__hint`},`(optional)`)],-1),v(D(Y),{id:`lsrc-levelColumn-mysql`,modelValue:y.value.levelColumn,"onUpdate:modelValue":n[18]||=e=>y.value.levelColumn=e,class:`dialog-form__input`,placeholder:`level`},null,8,[`modelValue`])]),t(`div`,Oo,[n[41]||=t(`label`,{for:`lsrc-pollIntervalMs-mysql`,class:`dialog-form__label`},`Poll interval (ms)`,-1),v(D(X),{"input-id":`lsrc-pollIntervalMs-mysql`,modelValue:y.value.pollIntervalMs,"onUpdate:modelValue":n[19]||=e=>y.value.pollIntervalMs=e,min:500,max:6e4,class:`dialog-form__input`},null,8,[`modelValue`])])]),t(`div`,ko,[n[42]||=t(`label`,{for:`lsrc-query-mysql`,class:`dialog-form__label`},[f(`Custom query `),t(`span`,{class:`dialog-form__hint`},[f(`(optional, must include `),t(`code`,null,`WHERE … > ?`),f(`)`)])],-1),v(D(Y),{id:`lsrc-query-mysql`,modelValue:y.value.query,"onUpdate:modelValue":n[20]||=e=>y.value.query=e,class:`dialog-form__input`,placeholder:`SELECT * FROM logs WHERE created_at > ? ORDER BY id ASC`},null,8,[`modelValue`])])],64)):y.value.type===`console`?(G(),h(`small`,Ao,`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`]]),Mo={class:`config-traefik`},No={class:`traefik-entry__fields`},Po=u(r({__name:`ServiceConfigTraefik`,props:{service:{}},emits:[`save`],setup(e,{emit:n}){let r=e,s=n,c=l([...r.service.localUrls??[]]),u=l(null);ce(async()=>{let e=ue(r.service);e&&(u.value=(await L.settings.getAgentTraefikConfig.query({agentId:e})).enabled)});let p=null;A(()=>r.service,e=>{p||(c.value=[...e.localUrls??[]])});function g(){c.value=[...c.value,{url:``,port:3e3}]}function _(e){c.value=c.value.filter((t,n)=>n!==e),b()}function y(e,t,n){c.value=c.value.map((r,i)=>i===e?{...r,[t]:n}:r)}function b(){p&&clearTimeout(p),p=setTimeout(()=>{s(`save`,{localUrls:c.value.filter(e=>e.url.trim())}),p=null},150)}return(e,n)=>(G(),h(`div`,Mo,[u.value===!1?(G(),I(D(a),{key:0,severity:`warn`,closable:!1},{default:q(()=>[n[1]||=f(` Traefik n'est pas activé. Configurez-le dans `,-1),v(D(ae),{to:{name:`settings`,query:{section:`agents`}}},{default:q(()=>[...n[0]||=[f(`Paramètres → Agents`,-1)]]),_:1}),n[2]||=f(` (bouton Traefik sur la ligne de l'agent) pour que ces URLs soient actives. `,-1)]),_:1})):m(``,!0),(G(!0),h(o,null,z(c.value,(e,n)=>(G(),h(`div`,{key:n,class:`traefik-entry`},[t(`div`,No,[v(D(Y),{"model-value":e.url,class:`traefik-entry__url`,placeholder:`mon-app.local.mondomaine.com`,"onUpdate:modelValue":e=>y(n,`url`,e),onBlur:b,onKeydown:i(J(b,[`prevent`]),[`enter`])},null,8,[`model-value`,`onUpdate:modelValue`,`onKeydown`]),v(D(X),{"model-value":e.port,class:`traefik-entry__port`,min:1,max:65535,"use-grouping":!1,placeholder:`3000`,"onUpdate:modelValue":e=>{y(n,`port`,e??3e3),b()}},null,8,[`model-value`,`onUpdate:modelValue`]),v(D(d),{icon:`pi pi-trash`,severity:`danger`,text:``,size:`small`,onClick:e=>_(n)},null,8,[`onClick`])])]))),128)),v(D(d),{icon:`pi pi-plus`,label:`Ajouter une URL`,size:`small`,outlined:``,onClick:g})]))}}),[[`__scopeId`,`data-v-4637fc30`]]),Fo={class:`config-view`,"data-testid":`config-view`},Io={class:`config-view__header`},Lo={class:`config-view__title`},Ro={class:`config-view__actions`},zo=u(r({__name:`ServiceConfigView`,props:{service:{},projectId:{}},emits:[`remove-service`],setup(e,{emit:n}){let r=e,i=n,{t:a}=V(),o=le(),s=C(),c=re(),{isDebug:l}=Gt(),u=P(),f=k(),p=[`general`,`commands`,`shortcuts`,`env`,`health`,`log-parsers`,`log-sources`,`traefik`],m=R(()=>{let e=u.query.configTab;return p.includes(e)?e:`general`});function g(e){f.replace({query:{...u.query,configTab:e}})}let _=R(()=>s.getByRef({id:r.projectId,orgId:c.activeOrgId})?.activeEnvironmentId);async function y(e,t){await t()?l.value&&console.debug(`[autosave] ${e} saved`):console.error(`[autosave] ${e} failed:`,o.error??`Save failed`)}async function b(e){await y(`General`,()=>o.update(r.service.id,e))}async function x(e){await y(`Commands`,()=>o.update(r.service.id,e))}async function S(e){await y(`Health check`,()=>o.update(r.service.id,{healthCheck:e??null}))}async function w(e){await y(`Shortcuts`,()=>o.update(r.service.id,{shortcuts:e}))}async function T(e){await y(`Docker`,()=>o.update(r.service.id,{dockerConfig:e}))}async function E(e){await y(`Log parsers`,()=>o.update(r.service.id,e))}async function O(e){await y(`Log sources`,()=>o.update(r.service.id,e))}async function A(e){await y(`Traefik`,()=>o.update(r.service.id,e))}function j(){i(`remove-service`,r.service.id)}return(n,r)=>(G(),h(`div`,Fo,[t(`div`,Io,[t(`h2`,Lo,F(D(a)(`serviceConfigView.title`)),1),t(`div`,Ro,[v(D(d),{label:D(a)(`serviceConfigView.remove`),icon:`pi pi-trash`,severity:`danger`,size:`small`,outlined:``,onClick:j},null,8,[`label`])])]),v(D(xe),{value:m.value,class:`config-view__tabs`,"onUpdate:value":g},{default:q(()=>[v(D(ye),null,{default:q(()=>[v(D(Q),{value:`general`,"data-testid":`tab-config`},{default:q(()=>[r[0]||=t(`i`,{class:`pi pi-cog tab-icon`},null,-1),t(`span`,null,F(D(a)(`serviceConfigView.tabGeneral`)),1)]),_:1}),v(D(Q),{value:`commands`,"data-testid":`tab-commands`},{default:q(()=>[r[1]||=t(`i`,{class:`pi pi-code tab-icon`},null,-1),t(`span`,null,F(D(a)(`serviceConfigView.tabCommands`)),1)]),_:1}),v(D(Q),{value:`shortcuts`,"data-testid":`tab-shortcuts`},{default:q(()=>[r[2]||=t(`i`,{class:`pi pi-bolt tab-icon`},null,-1),t(`span`,null,F(D(a)(`serviceConfigView.tabShortcuts`)),1)]),_:1}),v(D(Q),{value:`env`,"data-testid":`tab-env`},{default:q(()=>[r[3]||=t(`i`,{class:`pi pi-database tab-icon`},null,-1),t(`span`,null,F(D(a)(`serviceConfigView.tabEnvironment`)),1)]),_:1}),v(D(Q),{value:`health`},{default:q(()=>[r[4]||=t(`i`,{class:`pi pi-heart tab-icon`},null,-1),t(`span`,null,F(D(a)(`serviceConfigView.tabHealthCheck`)),1)]),_:1}),v(D(Q),{value:`log-parsers`,"data-testid":`tab-log-parsers`},{default:q(()=>[r[5]||=t(`i`,{class:`pi pi-list tab-icon`},null,-1),t(`span`,null,F(D(a)(`serviceConfigView.tabLogParsers`)),1)]),_:1}),v(D(Q),{value:`log-sources`},{default:q(()=>[r[6]||=t(`i`,{class:`pi pi-inbox tab-icon`},null,-1),t(`span`,null,F(D(a)(`serviceConfigView.tabLogSources`)),1)]),_:1}),v(D(Q),{value:`traefik`},{default:q(()=>[...r[7]||=[t(`i`,{class:`pi pi-server tab-icon`},null,-1),t(`span`,null,`Traefik`,-1)]]),_:1})]),_:1}),v(D(be),null,{default:q(()=>[v(D($),{value:`general`},{default:q(()=>[v(On,{service:e.service,onSave:b},null,8,[`service`])]),_:1}),v(D($),{value:`commands`},{default:q(()=>[v(ti,{service:e.service,onSave:x,onDockerSave:T},null,8,[`service`])]),_:1}),v(D($),{value:`shortcuts`,"data-testid":`tabpanel-shortcuts`},{default:q(()=>[v(Sa,{service:e.service,onSave:w},null,8,[`service`])]),_:1}),v(D($),{value:`env`},{default:q(()=>[v(Vi,{service:e.service,"project-id":e.projectId,"active-environment-id":_.value},null,8,[`service`,`project-id`,`active-environment-id`])]),_:1}),v(D($),{value:`health`},{default:q(()=>[v(ua,{service:e.service,onSave:S},null,8,[`service`])]),_:1}),v(D($),{value:`log-parsers`,"data-testid":`tabpanel-log-parsers`},{default:q(()=>[v(Fa,{service:e.service,onSave:E},null,8,[`service`])]),_:1}),v(D($),{value:`log-sources`},{default:q(()=>[v(jo,{service:e.service,onSave:O},null,8,[`service`])]),_:1}),v(D($),{value:`traefik`},{default:q(()=>[v(Po,{service:e.service,onSave:A},null,8,[`service`])]),_:1})]),_:1})]),_:1},8,[`value`])]))}}),[[`__scopeId`,`data-v-af965568`]]),Bo={key:0,class:`service-detail`},Vo={key:1,class:`service-detail__not-found`},Ho={key:2,class:`service-detail__not-found`},Uo=u(r({__name:`ServiceDetailPage`,setup(e){let n=P(),r=k(),i=de(),a=ne(),{t:o}=V(),s=le(),c=U(),u=C(),{setServiceContext:d}=se(),f=R(()=>n.params.id);A(f,e=>d(e),{immediate:!0}),O(()=>d(null));let p=R(()=>{let e=n.params.tab;return e===`terminal`||e===`metrics`||e===`config`||e===`git`||e===`wiki`?e:`terminal`}),g=l(null),_=l(!1),v=R(()=>s.getById(f.value)||(g.value?.id===f.value?g.value:null));A(f,async e=>{if(g.value=null,!(!e||s.getById(e))){_.value=!0;try{g.value=await s.fetchOne(e)}finally{_.value=!1}}},{immediate:!0});let y=R(()=>c.getByService(f.value)),b=R(()=>u.currentProject?.id??``);function S(e){let t=s.getById(e);a.require({message:o(`serviceDetail.deleteConfirmMessage`,{name:t?.name??e}),header:o(`serviceDetail.deleteConfirmHeader`),icon:`pi pi-exclamation-triangle`,rejectLabel:o(`actions.cancel`),acceptLabel:o(`actions.delete`),acceptProps:{severity:`danger`},accept:async()=>{await s.remove(e)&&(i.add({severity:`success`,summary:o(`serviceDetail.removed`),detail:o(`serviceDetail.deleted`),life:3e3}),r.push(`/`))}})}return(e,n)=>v.value?(G(),h(`div`,Bo,[p.value===`terminal`?(G(),I(Ot,{key:`terminal-`+f.value,service:v.value,processes:y.value},null,8,[`service`,`processes`])):p.value===`metrics`?(G(),I(zt,{key:`metrics-`+f.value,service:v.value,processes:y.value},null,8,[`service`,`processes`])):p.value===`config`?(G(),I(zo,{key:`config-`+f.value,service:v.value,"project-id":b.value,onRemoveService:S},null,8,[`service`,`project-id`])):p.value===`git`?(G(),I(x,{key:`git-`+f.value,"service-id":f.value},null,8,[`service-id`])):p.value===`wiki`?(G(),I(Me,{key:`wiki-`+f.value,scope:`service:${f.value}`},null,8,[`scope`])):m(``,!0)])):_.value?(G(),h(`div`,Vo)):(G(),h(`div`,Ho,[t(`p`,null,F(D(o)(`serviceDetail.notFound`)),1)]))}}),[[`__scopeId`,`data-v-e5220f62`]]);export{Uo as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{Ai as e,Ba as t,Bi as n,Ci as r,Ei as i,En as ee,Gt as a,Ha as o,Hn as s,Kn as c,Mi as l,Ni as u,Ri as d,Wt as te,Za as f,ar as ne,ir as re,it as ie,ja as p,jn as m,ki as h,la as ae,mn as oe,mr as se,p as ce,ra as le,rn as g,sa as _,st as ue,ur as de,wa as fe,wi as v,xn as y}from"./index-94C9mIJ-.js";import{n as b}from"./plus-QyL2zHhp.js";import{t as pe}from"./fieldset-CGCve6DD.js";import{t as me}from"./toggleswitch-hCIOkIWD.js";import{t as he}from"./autocomplete-DwJDpd_3.js";import{t as x}from"./divider-BRuXeRHe.js";var ge={class:`service-form-page`},_e={class:`page-header`},ve={key:0,class:`restart-banner`},ye={key:1,class:`loading-container`},be={class:`form-section`},S={class:`form-group`},C={for:`svc-project`},w={class:`form-hint`},T={class:`form-group`},E={for:`svc-agent`},D={class:`form-hint`},O={class:`form-group`},k={for:`svc-name`},A={class:`form-hint`},j={class:`form-actions`},M={class:`form-section`},N={class:`form-row`},xe={class:`form-group flex-1`},Se={for:`svc-name-edit`},Ce={class:`form-group`,style:{width:`160px`}},we={for:`svc-runner`},Te={class:`form-group`},Ee={for:`svc-agent-edit`},De={class:`form-hint`},Oe={class:`form-row`},ke={class:`form-group flex-1`},Ae={for:`svc-cwd`},je={class:`form-group`,style:{"min-width":`200px`}},Me={for:`svc-ports`},Ne={class:`form-group switch-group`},Pe={for:`svc-autorestart`},Fe={class:`form-section`},P={class:`section-header`},Ie={key:0,class:`empty-env`},Le={class:`form-group`},Re={for:`hc-path`},ze={class:`form-row`},Be={class:`form-group flex-1`},Ve={for:`hc-interval`},He={class:`form-group flex-1`},Ue={for:`hc-timeout`},We={class:`form-group flex-1`},Ge={for:`hc-retries`},F=`__inherit__`,I=s(n({__name:`ServiceFormPage`,props:{id:{}},setup(n){let s=n,I=ne(),Ke=re(),L=de(),R=te(),z=ue(),B=ie(),V=oe(),qe=ce(),{t:H}=se(),U=h(()=>!!s.id),W=h(()=>Ke.query.projectId),G=o(!1),K=o(!1),q=o(null),J=o(null),Y=o(!1),X=t({projectId:``,agentId:F,name:``,cwd:``,ports:[],runner:`native`,autoRestart:!1,healthCheck:{enabled:!1,path:``,interval:3e4,timeout:5e3,retries:3}}),Z=o([]),Je=[{label:`Native`,value:`native`},{label:`Docker`,value:`docker`}],Ye=h(()=>R.projects.map(e=>({label:e.name,value:e.id}))),Q=h(()=>[{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(s.id){G.value=!0;try{let e=await m.service.get.query({id:s.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||!s.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 m.service.update.mutate({id:s.id,...e}))?.stoppedForAgentChange?(q.value=e.agentId,J.value=s.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=R.getByRef({id:X.projectId,orgId:V.activeOrgId})??R.getById(X.projectId),t=await z.create({name:X.name.trim(),...X.agentId&&X.agentId!==F?{agentId:X.agentId}:{},projectId:X.projectId,orgId:e?.orgId??null});if(!t)throw Error(z.error??`Failed to create service`);await R.addService(e??{id:X.projectId},t.id),L.add({severity:`success`,summary:H(`serviceForm.serviceCreated`),detail:H(`serviceForm.configureAfterCreate`),life:3e3}),I.push({name:`service-detail`,params:{id:t.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 le(async()=>{await Promise.all([R.fetchAll(),B.fetchAll()]),W.value?X.projectId=W.value:!X.projectId&&V.activeProjectId&&(X.projectId=V.activeProjectId),U.value&&await $e()}),(t,n)=>(_(),u(`div`,ge,[e(`div`,_e,[d(f(c),{icon:`pi pi-arrow-left`,severity:`secondary`,text:``,rounded:``,onClick:n[0]||=e=>f(I).back()}),e(`h1`,null,p(U.value?f(H)(`serviceForm.editTitle`):f(H)(`serviceForm.createTitle`)),1)]),J.value?(_(),u(`div`,ve,[e(`span`,null,p(f(H)(`serviceForm.agentChangedServiceStopped`)),1),d(f(c),{label:f(H)(`serviceForm.restartNow`),icon:`pi pi-play`,severity:`warning`,size:`small`,loading:Y.value,onClick:et},null,8,[`label`,`loading`]),d(f(c),{icon:`pi pi-times`,severity:`secondary`,text:``,rounded:``,size:`small`,onClick:n[1]||=e=>{J.value=null,q.value=null}})])):l(``,!0),G.value?(_(),u(`div`,ye,[d(f(ee))])):(_(),u(`form`,{key:2,class:`service-form`,onSubmit:v(tt,[`prevent`])},[U.value?(_(),u(i,{key:1},[e(`div`,M,[e(`div`,N,[e(`div`,xe,[e(`label`,Se,p(f(H)(`serviceForm.nameLabelShort`)),1),d(f(y),{id:`svc-name-edit`,modelValue:X.name,"onUpdate:modelValue":n[6]||=e=>X.name=e,placeholder:`my-service`,class:`w-full`,onBlur:$,onKeydown:r(v($,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])]),e(`div`,Ce,[e(`label`,we,p(f(H)(`serviceForm.runnerLabel`)),1),d(f(g),{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`])])]),e(`div`,Te,[e(`label`,Ee,p(f(H)(`serviceForm.agentLabel`)),1),d(f(g),{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`]),e(`small`,De,p(f(H)(`serviceForm.agentHintEdit`)),1)]),e(`div`,Oe,[e(`div`,ke,[e(`label`,Ae,p(f(H)(`serviceForm.cwdLabel`)),1),d(f(y),{id:`svc-cwd`,modelValue:X.cwd,"onUpdate:modelValue":n[9]||=e=>X.cwd=e,placeholder:`.`,class:`w-full`,onBlur:$,onKeydown:r(v($,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])]),e(`div`,je,[e(`label`,Me,p(f(H)(`serviceForm.portsLabel`)),1),d(f(he),{inputId:`svc-ports`,modelValue:X.ports,"onUpdate:modelValue":n[10]||=e=>X.ports=e,multiple:``,typeahead:!1,placeholder:f(H)(`serviceForm.portsPlaceholder`),class:`w-full`,onChange:$},null,8,[`modelValue`,`placeholder`])])]),e(`div`,Ne,[d(f(me),{modelValue:X.autoRestart,"onUpdate:modelValue":n[11]||=e=>X.autoRestart=e,inputId:`svc-autorestart`,onChange:$},null,8,[`modelValue`]),e(`label`,Pe,p(f(H)(`serviceForm.autoRestart`)),1)])]),d(f(x)),e(`div`,Fe,[e(`div`,P,[e(`h3`,null,p(f(H)(`serviceForm.envVars`)),1),d(f(c),{label:f(H)(`serviceForm.addEnvVar`),icon:`pi pi-plus`,severity:`secondary`,size:`small`,onClick:Xe},null,8,[`label`])]),Z.value.length===0?(_(),u(`div`,Ie,[e(`small`,null,p(f(H)(`serviceForm.noEnvVars`)),1)])):l(``,!0),(_(!0),u(i,null,ae(Z.value,(t,i)=>(_(),u(`div`,{key:i,class:`env-row`},[d(f(y),{modelValue:t.key,"onUpdate:modelValue":e=>t.key=e,placeholder:`KEY`,class:`env-key`,onBlur:$,onKeydown:r(v($,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onUpdate:modelValue`,`onKeydown`]),n[17]||=e(`span`,{class:`env-eq`},`=`,-1),d(f(y),{modelValue:t.value,"onUpdate:modelValue":e=>t.value=e,placeholder:`value`,class:`env-value`,onBlur:$,onKeydown:r(v($,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onUpdate:modelValue`,`onKeydown`]),d(f(c),{icon:`pi pi-trash`,severity:`danger`,text:``,rounded:``,size:`small`,onClick:()=>{Ze(i),$()}},null,8,[`onClick`])]))),128))]),d(f(x)),d(f(pe),{legend:f(H)(`serviceForm.healthCheck`),toggleable:!0,collapsed:!X.healthCheck.enabled,onToggle:n[16]||=e=>{X.healthCheck.enabled=!e.value,$()}},{default:fe(()=>[e(`div`,Le,[e(`label`,Re,p(f(H)(`serviceForm.healthCheckPath`)),1),d(f(y),{id:`hc-path`,modelValue:X.healthCheck.path,"onUpdate:modelValue":n[12]||=e=>X.healthCheck.path=e,placeholder:`/health`,class:`w-full`,onBlur:$,onKeydown:r(v($,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])]),e(`div`,ze,[e(`div`,Be,[e(`label`,Ve,p(f(H)(`serviceForm.interval`)),1),d(f(b),{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:r(v($,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])]),e(`div`,He,[e(`label`,Ue,p(f(H)(`serviceForm.timeout`)),1),d(f(b),{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:r(v($,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])]),e(`div`,We,[e(`label`,Ge,p(f(H)(`serviceForm.retries`)),1),d(f(b),{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:r(v($,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])])])]),_:1},8,[`legend`,`collapsed`]),d(f(x))],64)):(_(),u(i,{key:0},[e(`div`,be,[e(`div`,S,[e(`label`,C,p(f(H)(`serviceForm.projectLabel`)),1),d(f(g),{id:`svc-project`,modelValue:X.projectId,"onUpdate:modelValue":n[2]||=e=>X.projectId=e,options:Ye.value,optionLabel:`label`,optionValue:`value`,placeholder:f(H)(`serviceForm.projectPlaceholder`),class:`w-full`},null,8,[`modelValue`,`options`,`placeholder`]),e(`small`,w,p(f(H)(`serviceForm.projectHint`)),1)]),e(`div`,T,[e(`label`,E,p(f(H)(`serviceForm.agentLabel`)),1),d(f(g),{id:`svc-agent`,modelValue:X.agentId,"onUpdate:modelValue":n[3]||=e=>X.agentId=e,options:Q.value,optionLabel:`label`,optionValue:`value`,placeholder:f(H)(`serviceForm.agentInherit`),"show-clear":``,class:`w-full`},null,8,[`modelValue`,`options`,`placeholder`]),e(`small`,D,p(f(H)(`serviceForm.agentHint`)),1)]),e(`div`,O,[e(`label`,k,p(f(H)(`serviceForm.nameLabel`)),1),d(f(y),{id:`svc-name`,modelValue:X.name,"onUpdate:modelValue":n[4]||=e=>X.name=e,placeholder:`my-service`,class:`w-full`},null,8,[`modelValue`]),e(`small`,A,p(f(H)(`serviceForm.nameConfigHint`)),1)])]),d(f(x)),e(`div`,j,[d(f(c),{label:f(H)(`serviceForm.cancel`),severity:`secondary`,text:``,onClick:n[5]||=e=>f(I).back()},null,8,[`label`]),d(f(c),{label:f(H)(`serviceForm.create`),icon:`pi pi-check`,loading:K.value,type:`submit`},null,8,[`label`,`loading`])])],64))],32))]))}}),[[`__scopeId`,`data-v-3efdfa72`]]);export{I as default};
|
|
1
|
+
import{Ai as e,Ba as t,Bi as n,Ci as r,Ei as i,En as ee,Gt as a,Ha as o,Hn as s,Kn as c,Mi as l,Ni as u,Ri as d,Wt as te,Za as f,ar as ne,ir as re,it as ie,ja as p,jn as m,ki as h,la as ae,mn as oe,mr as se,p as ce,ra as le,rn as g,sa as _,st as ue,ur as de,wa as fe,wi as v,xn as y}from"./index-CI76mltd.js";import{n as b}from"./plus-hUxz8lH_.js";import{t as pe}from"./fieldset-BSON_QE9.js";import{t as me}from"./toggleswitch-CZCAv-jp.js";import{t as he}from"./autocomplete-DKHFlhhO.js";import{t as x}from"./divider-bEPGnPmT.js";var ge={class:`service-form-page`},_e={class:`page-header`},ve={key:0,class:`restart-banner`},ye={key:1,class:`loading-container`},be={class:`form-section`},S={class:`form-group`},C={for:`svc-project`},w={class:`form-hint`},T={class:`form-group`},E={for:`svc-agent`},D={class:`form-hint`},O={class:`form-group`},k={for:`svc-name`},A={class:`form-hint`},j={class:`form-actions`},M={class:`form-section`},N={class:`form-row`},xe={class:`form-group flex-1`},Se={for:`svc-name-edit`},Ce={class:`form-group`,style:{width:`160px`}},we={for:`svc-runner`},Te={class:`form-group`},Ee={for:`svc-agent-edit`},De={class:`form-hint`},Oe={class:`form-row`},ke={class:`form-group flex-1`},Ae={for:`svc-cwd`},je={class:`form-group`,style:{"min-width":`200px`}},Me={for:`svc-ports`},Ne={class:`form-group switch-group`},Pe={for:`svc-autorestart`},Fe={class:`form-section`},P={class:`section-header`},Ie={key:0,class:`empty-env`},Le={class:`form-group`},Re={for:`hc-path`},ze={class:`form-row`},Be={class:`form-group flex-1`},Ve={for:`hc-interval`},He={class:`form-group flex-1`},Ue={for:`hc-timeout`},We={class:`form-group flex-1`},Ge={for:`hc-retries`},F=`__inherit__`,I=s(n({__name:`ServiceFormPage`,props:{id:{}},setup(n){let s=n,I=ne(),Ke=re(),L=de(),R=te(),z=ue(),B=ie(),V=oe(),qe=ce(),{t:H}=se(),U=h(()=>!!s.id),W=h(()=>Ke.query.projectId),G=o(!1),K=o(!1),q=o(null),J=o(null),Y=o(!1),X=t({projectId:``,agentId:F,name:``,cwd:``,ports:[],runner:`native`,autoRestart:!1,healthCheck:{enabled:!1,path:``,interval:3e4,timeout:5e3,retries:3}}),Z=o([]),Je=[{label:`Native`,value:`native`},{label:`Docker`,value:`docker`}],Ye=h(()=>R.projects.map(e=>({label:e.name,value:e.id}))),Q=h(()=>[{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(s.id){G.value=!0;try{let e=await m.service.get.query({id:s.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||!s.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 m.service.update.mutate({id:s.id,...e}))?.stoppedForAgentChange?(q.value=e.agentId,J.value=s.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=R.getByRef({id:X.projectId,orgId:V.activeOrgId})??R.getById(X.projectId),t=await z.create({name:X.name.trim(),...X.agentId&&X.agentId!==F?{agentId:X.agentId}:{},projectId:X.projectId,orgId:e?.orgId??null});if(!t)throw Error(z.error??`Failed to create service`);await R.addService(e??{id:X.projectId},t.id),L.add({severity:`success`,summary:H(`serviceForm.serviceCreated`),detail:H(`serviceForm.configureAfterCreate`),life:3e3}),I.push({name:`service-detail`,params:{id:t.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 le(async()=>{await Promise.all([R.fetchAll(),B.fetchAll()]),W.value?X.projectId=W.value:!X.projectId&&V.activeProjectId&&(X.projectId=V.activeProjectId),U.value&&await $e()}),(t,n)=>(_(),u(`div`,ge,[e(`div`,_e,[d(f(c),{icon:`pi pi-arrow-left`,severity:`secondary`,text:``,rounded:``,onClick:n[0]||=e=>f(I).back()}),e(`h1`,null,p(U.value?f(H)(`serviceForm.editTitle`):f(H)(`serviceForm.createTitle`)),1)]),J.value?(_(),u(`div`,ve,[e(`span`,null,p(f(H)(`serviceForm.agentChangedServiceStopped`)),1),d(f(c),{label:f(H)(`serviceForm.restartNow`),icon:`pi pi-play`,severity:`warning`,size:`small`,loading:Y.value,onClick:et},null,8,[`label`,`loading`]),d(f(c),{icon:`pi pi-times`,severity:`secondary`,text:``,rounded:``,size:`small`,onClick:n[1]||=e=>{J.value=null,q.value=null}})])):l(``,!0),G.value?(_(),u(`div`,ye,[d(f(ee))])):(_(),u(`form`,{key:2,class:`service-form`,onSubmit:v(tt,[`prevent`])},[U.value?(_(),u(i,{key:1},[e(`div`,M,[e(`div`,N,[e(`div`,xe,[e(`label`,Se,p(f(H)(`serviceForm.nameLabelShort`)),1),d(f(y),{id:`svc-name-edit`,modelValue:X.name,"onUpdate:modelValue":n[6]||=e=>X.name=e,placeholder:`my-service`,class:`w-full`,onBlur:$,onKeydown:r(v($,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])]),e(`div`,Ce,[e(`label`,we,p(f(H)(`serviceForm.runnerLabel`)),1),d(f(g),{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`])])]),e(`div`,Te,[e(`label`,Ee,p(f(H)(`serviceForm.agentLabel`)),1),d(f(g),{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`]),e(`small`,De,p(f(H)(`serviceForm.agentHintEdit`)),1)]),e(`div`,Oe,[e(`div`,ke,[e(`label`,Ae,p(f(H)(`serviceForm.cwdLabel`)),1),d(f(y),{id:`svc-cwd`,modelValue:X.cwd,"onUpdate:modelValue":n[9]||=e=>X.cwd=e,placeholder:`.`,class:`w-full`,onBlur:$,onKeydown:r(v($,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])]),e(`div`,je,[e(`label`,Me,p(f(H)(`serviceForm.portsLabel`)),1),d(f(he),{inputId:`svc-ports`,modelValue:X.ports,"onUpdate:modelValue":n[10]||=e=>X.ports=e,multiple:``,typeahead:!1,placeholder:f(H)(`serviceForm.portsPlaceholder`),class:`w-full`,onChange:$},null,8,[`modelValue`,`placeholder`])])]),e(`div`,Ne,[d(f(me),{modelValue:X.autoRestart,"onUpdate:modelValue":n[11]||=e=>X.autoRestart=e,inputId:`svc-autorestart`,onChange:$},null,8,[`modelValue`]),e(`label`,Pe,p(f(H)(`serviceForm.autoRestart`)),1)])]),d(f(x)),e(`div`,Fe,[e(`div`,P,[e(`h3`,null,p(f(H)(`serviceForm.envVars`)),1),d(f(c),{label:f(H)(`serviceForm.addEnvVar`),icon:`pi pi-plus`,severity:`secondary`,size:`small`,onClick:Xe},null,8,[`label`])]),Z.value.length===0?(_(),u(`div`,Ie,[e(`small`,null,p(f(H)(`serviceForm.noEnvVars`)),1)])):l(``,!0),(_(!0),u(i,null,ae(Z.value,(t,i)=>(_(),u(`div`,{key:i,class:`env-row`},[d(f(y),{modelValue:t.key,"onUpdate:modelValue":e=>t.key=e,placeholder:`KEY`,class:`env-key`,onBlur:$,onKeydown:r(v($,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onUpdate:modelValue`,`onKeydown`]),n[17]||=e(`span`,{class:`env-eq`},`=`,-1),d(f(y),{modelValue:t.value,"onUpdate:modelValue":e=>t.value=e,placeholder:`value`,class:`env-value`,onBlur:$,onKeydown:r(v($,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onUpdate:modelValue`,`onKeydown`]),d(f(c),{icon:`pi pi-trash`,severity:`danger`,text:``,rounded:``,size:`small`,onClick:()=>{Ze(i),$()}},null,8,[`onClick`])]))),128))]),d(f(x)),d(f(pe),{legend:f(H)(`serviceForm.healthCheck`),toggleable:!0,collapsed:!X.healthCheck.enabled,onToggle:n[16]||=e=>{X.healthCheck.enabled=!e.value,$()}},{default:fe(()=>[e(`div`,Le,[e(`label`,Re,p(f(H)(`serviceForm.healthCheckPath`)),1),d(f(y),{id:`hc-path`,modelValue:X.healthCheck.path,"onUpdate:modelValue":n[12]||=e=>X.healthCheck.path=e,placeholder:`/health`,class:`w-full`,onBlur:$,onKeydown:r(v($,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])]),e(`div`,ze,[e(`div`,Be,[e(`label`,Ve,p(f(H)(`serviceForm.interval`)),1),d(f(b),{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:r(v($,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])]),e(`div`,He,[e(`label`,Ue,p(f(H)(`serviceForm.timeout`)),1),d(f(b),{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:r(v($,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])]),e(`div`,We,[e(`label`,Ge,p(f(H)(`serviceForm.retries`)),1),d(f(b),{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:r(v($,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])])])]),_:1},8,[`legend`,`collapsed`]),d(f(x))],64)):(_(),u(i,{key:0},[e(`div`,be,[e(`div`,S,[e(`label`,C,p(f(H)(`serviceForm.projectLabel`)),1),d(f(g),{id:`svc-project`,modelValue:X.projectId,"onUpdate:modelValue":n[2]||=e=>X.projectId=e,options:Ye.value,optionLabel:`label`,optionValue:`value`,placeholder:f(H)(`serviceForm.projectPlaceholder`),class:`w-full`},null,8,[`modelValue`,`options`,`placeholder`]),e(`small`,w,p(f(H)(`serviceForm.projectHint`)),1)]),e(`div`,T,[e(`label`,E,p(f(H)(`serviceForm.agentLabel`)),1),d(f(g),{id:`svc-agent`,modelValue:X.agentId,"onUpdate:modelValue":n[3]||=e=>X.agentId=e,options:Q.value,optionLabel:`label`,optionValue:`value`,placeholder:f(H)(`serviceForm.agentInherit`),"show-clear":``,class:`w-full`},null,8,[`modelValue`,`options`,`placeholder`]),e(`small`,D,p(f(H)(`serviceForm.agentHint`)),1)]),e(`div`,O,[e(`label`,k,p(f(H)(`serviceForm.nameLabel`)),1),d(f(y),{id:`svc-name`,modelValue:X.name,"onUpdate:modelValue":n[4]||=e=>X.name=e,placeholder:`my-service`,class:`w-full`},null,8,[`modelValue`]),e(`small`,A,p(f(H)(`serviceForm.nameConfigHint`)),1)])]),d(f(x)),e(`div`,j,[d(f(c),{label:f(H)(`serviceForm.cancel`),severity:`secondary`,text:``,onClick:n[5]||=e=>f(I).back()},null,8,[`label`]),d(f(c),{label:f(H)(`serviceForm.create`),icon:`pi pi-check`,loading:K.value,type:`submit`},null,8,[`label`,`loading`])])],64))],32))]))}}),[[`__scopeId`,`data-v-3efdfa72`]]);export{I as default};
|