@runeya/runeya 2.0.21 → 2.0.23
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 +103 -9
- package/agent/index.js.map +1 -1
- package/agent-manager-2P4THUVA.js +7 -0
- package/{chunk-PUNE7P6S.js → chunk-Y2R42AXQ.js} +848 -561
- package/chunk-Y2R42AXQ.js.map +1 -0
- package/index.js +92 -43
- package/index.js.map +1 -1
- package/package.json +1 -1
- package/{src-K32WI425.js → src-3TOPUVAK.js} +1354 -1083
- package/src-3TOPUVAK.js.map +1 -0
- package/web/assets/AgentScalarChatInterface.vue-Bk_cXx74.js +13 -0
- package/web/assets/AgentTerminalPage-DqXrABlh.js +1 -0
- package/web/assets/AiChatPage-B3P7qefE.js +1 -0
- package/web/assets/AppLayout-B2e7K0cZ.js +1 -0
- package/web/assets/{AuditPage-CUdrFc3C.js → AuditPage-B55qp9MV.js} +1 -1
- package/web/assets/{CloudAccountPage-am6AxJRB.js → CloudAccountPage-CGyW79m_.js} +1 -1
- package/web/assets/CloudAccountPage-DTity1N0.js +1 -0
- package/web/assets/CloudMessagingPage-7RQRbAOB.js +2 -0
- package/web/assets/CloudMessagingPage-BUnfNsBz.css +1 -0
- package/web/assets/{DashboardPage-pA2caWR9.js → DashboardPage-CwmCbP3t.js} +1 -1
- package/web/assets/{EditorIcon-C9E8hRyM.js → EditorIcon-BaldhaS8.js} +1 -1
- package/web/assets/{EnvironmentForm-XKpxQ-45.js → EnvironmentForm-Da52SUx4.js} +2 -2
- package/web/assets/EnvironmentFormPage-Bab5iOWS.js +1 -0
- package/web/assets/EnvironmentListPage-O1fIWq-g.js +1 -0
- package/web/assets/EnvironmentSelector-BWzLYssP.js +1 -0
- package/web/assets/KanbanBoardPage-BOMHKLHX.css +1 -0
- package/web/assets/KanbanBoardPage-BvtIaHqG.js +4 -0
- package/web/assets/KanbanListPage-BoNcgR3h.css +1 -0
- package/web/assets/KanbanListPage-Cv_QJF00.js +1 -0
- package/web/assets/LaunchProjectPage-uB7iIMG1.js +1 -0
- package/web/assets/{LaunchServicesPage-CViec72c.js → LaunchServicesPage-1ZN1JYqH.js} +1 -1
- package/web/assets/LogViewer-BJxpIK11.js +3 -0
- package/web/assets/{ProcessControls-D97-A3dI.js → ProcessControls-C2EYsD-P.js} +1 -1
- package/web/assets/ProcessDetailPage-DdOfegjU.js +1 -0
- package/web/assets/{ProcessMetrics-CNJ30_ef.js → ProcessMetrics-DpDxpUpO.js} +2 -2
- package/web/assets/ProjectDetailPage-DtwRjTew.js +1 -0
- package/web/assets/ProjectListPage-D9SUNEFu.js +1 -0
- package/web/assets/{RandomJobTestPage-CnY2f-qz.js → RandomJobTestPage-OoAk9WAJ.js} +1 -1
- package/web/assets/{ScenarioEditorPage-CBZp7Q34.css → ScenarioEditorPage-GmFIXPDj.css} +1 -1
- package/web/assets/ScenarioEditorPage-LhEs4hjS.js +14 -0
- package/web/assets/SendToChatDialog-CZWy1K4A.js +1 -0
- package/web/assets/ServiceControlsBar-CU6b2KBJ.js +1 -0
- package/web/assets/{ServiceDetailPage-DhE1LYrn.css → ServiceDetailPage-BvoD3SB6.css} +1 -1
- package/web/assets/ServiceDetailPage-CSaPyV_v.js +2 -0
- package/web/assets/ServiceFormPage-D9NFCmmW.js +1 -0
- package/web/assets/SettingsPage-BMclTDLy.css +1 -0
- package/web/assets/SettingsPage-DXlBFfBq.js +2062 -0
- package/web/assets/{SetupPage-CzabsTON.js → SetupPage-dqqf_M_p.js} +1 -1
- package/web/assets/UnlockPage-ClEawxOC.css +1 -0
- package/web/assets/UnlockPage-DjjpY02d.js +1 -0
- package/web/assets/VariablesTable-B4h9eNC_.css +1 -0
- package/web/assets/VariablesTable-BFgRnjza.js +1 -0
- package/web/assets/{VersionBadge-DUE17MrD.js → VersionBadge-ToW3NGSQ.js} +1 -1
- package/web/assets/WikiPage-Djisdsae.js +1 -0
- package/web/assets/{WikiView-CUBKfTT-.css → WikiView-CaUVD3f1.css} +1 -1
- package/web/assets/WikiView-CiATkY8l.js +1 -0
- package/web/assets/{add-scalar-classes-Cfh7_IWy.js → add-scalar-classes-DGwycuRW.js} +3 -3
- package/web/assets/auth-errors-DEObS1lG.js +1 -0
- package/web/assets/{autocomplete-CrWQ5zMj.js → autocomplete-DP0sGong.js} +1 -1
- package/web/assets/{basic-shape-diamond.svg-pjhwN4JT.js → basic-shape-diamond.svg-B0FzUXGN.js} +1 -1
- package/web/assets/{basic-shape-hexagon.svg-D0yEDOCC.js → basic-shape-hexagon.svg-BuI9rv44.js} +1 -1
- package/web/assets/{basic-shape-primary-circle-ellipse-round.svg-DvZ7CdgE.js → basic-shape-primary-circle-ellipse-round.svg-C0WlStV7.js} +1 -1
- package/web/assets/{basic-shape-primary-square-rectangle.svg-ChB1hiGR.js → basic-shape-primary-square-rectangle.svg-ByMGtNMn.js} +1 -1
- package/web/assets/{basic-shape-shield.svg-Bxrmr3jg.js → basic-shape-shield.svg-h6znjRmZ.js} +1 -1
- package/web/assets/{browser-C2YmKQw8.js → browser-DJeF2lho.js} +1 -1
- package/web/assets/{browser-CvQ_J2u9.js → browser-oekISqUb.js} +1 -1
- package/web/assets/{card-CpyeL2dI.js → card-B7-be48x.js} +1 -1
- package/web/assets/{checkbox-DWNV_RaS.js → checkbox-DDSZK_Pi.js} +1 -1
- package/web/assets/{chip-8cRcc2L3.js → chip-BVSQ-56q.js} +1 -1
- package/web/assets/{client-DNj6VDDb.js → client-DWfGqqLr.js} +1 -1
- package/web/assets/cloud-chat.store-BLFChRpl.js +1 -0
- package/web/assets/cloud-client-GmxBhiFl.js +1 -0
- package/web/assets/{column-DtLr_xcq.js → column-BHRqZfnh.js} +7 -7
- package/web/assets/{computer-device-desktop-monitor.svg-CLGySxTI.js → computer-device-desktop-monitor.svg-CL9XulYR.js} +1 -1
- package/web/assets/{computer-device-desktop.svg-DJ9n7_Sq.js → computer-device-desktop.svg-CKWeVTzO.js} +1 -1
- package/web/assets/{computer-device-laptop.svg-k6zcRWN4.js → computer-device-laptop.svg-wAkdRlEi.js} +1 -1
- package/web/assets/{computer-device-mobile-phone-android-samsung-back.svg-pwKHMzIK.js → computer-device-mobile-phone-android-samsung-back.svg-DOahzxu1.js} +1 -1
- package/web/assets/{computer-device-mobile-phone-android-samsung.svg-CR796QT_.js → computer-device-mobile-phone-android-samsung.svg-FBZO3WLS.js} +1 -1
- package/web/assets/{computer-device-mobile-phone-iphone-x-back.svg-CY2r7WXK.js → computer-device-mobile-phone-iphone-x-back.svg-CCLknBWv.js} +1 -1
- package/web/assets/{computer-device-mobile-phone-iphone-x.svg-BHISnTWX.js → computer-device-mobile-phone-iphone-x.svg-CWdT8wN4.js} +1 -1
- package/web/assets/{computer-device-mobile-tablet-touch.svg-DQqDUvnk.js → computer-device-mobile-tablet-touch.svg-Bx1A6qUQ.js} +1 -1
- package/web/assets/{computer-device-mobile-tablet.svg-4Ab5vdIo.js → computer-device-mobile-tablet.svg-JpmP6yqf.js} +1 -1
- package/web/assets/{computer-device-network-ethernet-cat6.svg-DJf04S68.js → computer-device-network-ethernet-cat6.svg-D6WFbLbI.js} +1 -1
- package/web/assets/{computer-device-network-lan-www.svg-CaETgcOJ.js → computer-device-network-lan-www.svg-U8NMAi5b.js} +1 -1
- package/web/assets/{computer-device-network-wifi-connection.svg-PndfmFuy.js → computer-device-network-wifi-connection.svg-FuRBLyH4.js} +1 -1
- package/web/assets/{computer-device-network-wifi-router.svg-CBLwEbOV.js → computer-device-network-wifi-router.svg-BMzCP2Aw.js} +1 -1
- package/web/assets/{cssMode-RVPpAuHz.js → cssMode--4DE_809.js} +1 -1
- package/web/assets/{divider-CYFRNVal.js → divider-hPOrl1Iy.js} +1 -1
- package/web/assets/{ecology-science-erlenmeyer-flask.svg-BYXK2uKa.js → ecology-science-erlenmeyer-flask.svg-Bnte5Nm-.js} +1 -1
- package/web/assets/{fieldset-BCXBPIiB.js → fieldset-BSwilV-Y.js} +1 -1
- package/web/assets/{freemarker2-B6guP0jO.js → freemarker2-DUNAk_0P.js} +1 -1
- package/web/assets/{handlebars-BxlL79LN.js → handlebars-CoM2DS_1.js} +1 -1
- package/web/assets/{html-Dr0M60O0.js → html-CgEDNZ_R.js} +1 -1
- package/web/assets/{htmlMode-B63yAhXq.js → htmlMode-QDDBWVzd.js} +1 -1
- package/web/assets/{image-flash-lightning.svg-DVtJFd09.js → image-flash-lightning.svg-ZIxta1IB.js} +1 -1
- package/web/assets/{image-picture-flower.svg-BaBdyWt-.js → image-picture-flower.svg-BXxhgW1Q.js} +1 -1
- package/web/assets/{index-BTYNCNK0.js → index-Dl-HyfHx.js} +244 -244
- package/web/assets/{index-DS4VL_1S.css → index-gKo3WNkm.css} +1 -1
- package/web/assets/{interface-alert-exclamation-diamond.svg-BQYncN9j.js → interface-alert-exclamation-diamond.svg-bVfL6jBy.js} +1 -1
- package/web/assets/{interface-alert-exclamation-triangle-warning.svg-BvQxARpD.js → interface-alert-exclamation-triangle-warning.svg-BrapXyrc.js} +1 -1
- package/web/assets/{interface-alert-information-circle.svg-BbiwUtTt.js → interface-alert-information-circle.svg--W3bUw5n.js} +1 -1
- package/web/assets/{interface-award-crown.svg-BJs2BJ9S.js → interface-award-crown.svg-CBbbHFIN.js} +1 -1
- package/web/assets/{interface-bookmark.svg-WUL572zM.js → interface-bookmark-tag.svg-C4_v-zTY.js} +1 -1
- package/web/assets/{interface-bookmark-tag.svg-huwK9o4X.js → interface-bookmark.svg-CIY69-iu.js} +1 -1
- package/web/assets/{interface-calendar-date-one.svg-CEkOALKM.js → interface-calendar-date-one.svg-CD7WxblA.js} +1 -1
- package/web/assets/{interface-content-book-open-pages.svg-CDxvdidz.js → interface-content-book-open-pages.svg-BamW-eNv.js} +1 -1
- package/web/assets/{interface-content-book-page.svg-ROxK9a-V.js → interface-content-book-page.svg-CpHhLWQE.js} +1 -1
- package/web/assets/{interface-content-file.svg-69XGQGxu.js → interface-content-file.svg-BmqLN3iR.js} +1 -1
- package/web/assets/interface-content-folder.svg-B2phMZXd.js +1 -0
- package/web/assets/{interface-content-folder.svg-BjXgivIz.js → interface-content-folder.svg-ffbcORbT.js} +1 -1
- package/web/assets/{interface-copy-clipboard.svg-BAAZ1QLS.js → interface-copy-clipboard.svg-MdbbmqXS.js} +1 -1
- package/web/assets/{interface-edit-attachment.svg-BCmyBBsd.js → interface-edit-attachment.svg-DtAVj6tp.js} +1 -1
- package/web/assets/{interface-edit-binocular.svg-BI3JPE3j.js → interface-edit-binocular.svg-DfT11Y7N.js} +1 -1
- package/web/assets/{interface-edit-magic-wand.svg-DhECH5yw.js → interface-edit-magic-wand.svg-D4mLRHJs.js} +1 -1
- package/web/assets/{interface-edit-tool-paint-roller.svg-0-Os9Flg.js → interface-edit-tool-paint-roller.svg-Cxa7Ct4C.js} +1 -1
- package/web/assets/{interface-edit-tool-pencil.svg-CM5UI5Rv.js → interface-edit-tool-pencil.svg-IRM3BHKY.js} +1 -1
- package/web/assets/{interface-favorite-award.svg-BZNkuFiE.js → interface-favorite-award.svg-CLGZ65SX.js} +1 -1
- package/web/assets/{interface-favorite-flag.svg-CeHd37SC.js → interface-favorite-flag.svg-ju-VMCAF.js} +1 -1
- package/web/assets/{interface-favorite-heart.svg-D5dJ4sOz.js → interface-favorite-heart.svg-DsWpztN8.js} +1 -1
- package/web/assets/{interface-favorite-star.svg-B7YeWzmv.js → interface-favorite-star.svg-CCPUYvBO.js} +1 -1
- package/web/assets/{interface-favorite-stars-sparkles.svg-BwqCtLSB.js → interface-favorite-stars-sparkles.svg-nf2ra-Mg.js} +1 -1
- package/web/assets/{interface-hierarchy-flowchart.svg-q70-KJ80.js → interface-hierarchy-flowchart.svg-CPrjsUHp.js} +1 -1
- package/web/assets/{interface-home-house.svg-CUco1zSk.js → interface-home-house.svg-DyWL4dgs.js} +1 -1
- package/web/assets/{interface-hyperlink.svg-D6Z-QbxJ.js → interface-hyperlink.svg-DgjI4lGJ.js} +1 -1
- package/web/assets/{interface-lighting-brightness.svg-DDJ8wIbt.js → interface-lighting-brightness.svg-BhomgGV0.js} +1 -1
- package/web/assets/{interface-lock-closed.svg-1GuN2t9d.js → interface-lock-closed.svg-CDDGuaUG.js} +1 -1
- package/web/assets/{interface-lock-open-unlock.svg-CmSL9GCo.js → interface-lock-open-unlock.svg-DxOzefwC.js} +1 -1
- package/web/assets/{interface-login-key.svg-Cnur4uLY.js → interface-login-key.svg-CLs728UT.js} +1 -1
- package/web/assets/{interface-search.svg-3TqtroIY.js → interface-search.svg-CSE2bUM-.js} +1 -1
- package/web/assets/{interface-setting-cog.svg-B7nRfZ1y.js → interface-setting-cog.svg-SfBQ-E_y.js} +1 -1
- package/web/assets/{interface-share-megaphone-bullhorn.svg-DraAk4oI.js → interface-share-megaphone-bullhorn.svg-Cg9QEbsW.js} +1 -1
- package/web/assets/{interface-share-rocket.svg-CGRtk6J4.js → interface-share-rocket.svg-V9fWt6R5.js} +1 -1
- package/web/assets/{interface-share-satellite.svg-COo3kZqu.js → interface-share-satellite.svg-BoAJlAy3.js} +1 -1
- package/web/assets/{interface-share-space-ship.svg-iYhfpKY2.js → interface-share-space-ship.svg-CWoqBiZI.js} +1 -1
- package/web/assets/{interface-share.svg-BqVe3lWw.js → interface-share.svg-DW6AG6rC.js} +1 -1
- package/web/assets/{interface-signal-square.svg-DmGT2kio.js → interface-signal-square.svg-DktTeL2e.js} +1 -1
- package/web/assets/{interface-time-clock-circle.svg-Djt_VZVX.js → interface-time-clock-circle.svg-BBnimglQ.js} +1 -1
- package/web/assets/{interface-time-hour-glass.svg-DxZVLqJ6.js → interface-time-hour-glass.svg-WNSRow4o.js} +1 -1
- package/web/assets/{interface-users-multiple.svg-n8dIXu9r.js → interface-users-multiple.svg-DoeSSDNX.js} +1 -1
- package/web/assets/{interface-weather-moon.svg-CExHl6HQ.js → interface-weather-moon.svg-BzUq31T3.js} +1 -1
- package/web/assets/{javascript-6lVkE6gP.js → javascript-CDsgZK6E.js} +1 -1
- package/web/assets/{jsonMode-CySg6s8T.js → jsonMode-BOQojnkz.js} +1 -1
- package/web/assets/{liquid-DSLZY9bf.js → liquid-CT8_Ig_a.js} +1 -1
- package/web/assets/{lspLanguageFeatures-C6Gb5-pg.js → lspLanguageFeatures-BW3wbtds.js} +1 -1
- package/web/assets/{mail-chat-bubble-square.svg-BqpIkvR_.js → mail-chat-bubble-square.svg-BB3D-jS5.js} +1 -1
- package/web/assets/{mail-send-email-paper-airplane.svg-DUkiRZ1x.js → mail-send-email-paper-airplane.svg-BGUFNdDy.js} +1 -1
- package/web/assets/{mail-send-envelope.svg-DjjLaPUo.js → mail-send-envelope.svg-CiEf_X3v.js} +1 -1
- package/web/assets/{mdx-DuCKQZ3-.js → mdx-BzJqzXG7.js} +1 -1
- package/web/assets/{message-CJ-X_z47.js → message-DQfiz3F1.js} +1 -1
- package/web/assets/{minus-RXlNS6-g.js → minus-Bh-ngAnz.js} +1 -1
- package/web/assets/modal-B6tgGww3.js +1 -0
- package/web/assets/{modal-DfNn2ioJ.js → modal-BH8tCrqE.js} +1 -1
- package/web/assets/{money-cashier-receipt.svg-CUzOL6J5.js → money-cashier-receipt.svg-nbLywLCi.js} +1 -1
- package/web/assets/{money-currency-dollar-pay.svg-CQY_KC9b.js → money-currency-dollar-pay.svg-HtpV_93j.js} +1 -1
- package/web/assets/{money-graph-arrow-increase.svg-BDu5i5aF.js → money-graph-arrow-increase.svg-BG4s2n8-.js} +1 -1
- package/web/assets/{money-graph-bar-chart-increase.svg-xBlBZYiv.js → money-graph-bar-chart-increase.svg-7ivMfz5M.js} +1 -1
- package/web/assets/{multiselect-BbY8SFyO.js → multiselect-CE72JxFr.js} +1 -1
- package/web/assets/{nature-ecology-leaf.svg-C_T6wTIZ.js → nature-ecology-leaf.svg-D60IfAE-.js} +1 -1
- package/web/assets/{password-B_pKmF_I.js → password-CZ-A_ePM.js} +1 -1
- package/web/assets/{phone-telephone.svg-DzUP7zCx.js → phone-telephone.svg-B0OCaSQr.js} +1 -1
- package/web/assets/{plus-DfsTcd_H.js → plus-DZy8IO4Z.js} +1 -1
- package/web/assets/process.store-XR7BoPqt.js +1 -0
- package/web/assets/{programming-bug.svg-C1NvPH7_.js → programming-bug.svg-DDZ7-1a6.js} +1 -1
- package/web/assets/{programming-cloud.svg-hVwd5xzu.js → programming-cloud.svg-BZHqbFE1.js} +1 -1
- package/web/assets/{programming-computer-database-server.svg-DXvcm62E.js → programming-computer-database-server.svg-CPK0axOF.js} +1 -1
- package/web/assets/{programming-computer-database.svg-w2w_GH3u.js → programming-computer-database.svg-Dat_iKWZ.js} +1 -1
- package/web/assets/{programming-module-four-layout.svg-DLcwogv0.js → programming-module-four-layout.svg-DYTRTKmF.js} +1 -1
- package/web/assets/{programming-module-three.svg-Cfjjs8tf.js → programming-module-three.svg-CU563xPB.js} +1 -1
- package/web/assets/{programming-module.svg-ChyMdD4E.js → programming-module.svg-DdRe2d3E.js} +1 -1
- package/web/assets/{programming-script-code.svg-D8N99_E3.js → programming-script-code.svg-D5dDzg1B.js} +1 -1
- package/web/assets/{python-BT-UPVMQ.js → python-C0tzbgs4.js} +1 -1
- package/web/assets/{radiobutton-C9iiy1zq.js → radiobutton-BYEniO96.js} +1 -1
- package/web/assets/{razor-DKUraACi.js → razor-BNCtUdbo.js} +1 -1
- package/web/assets/router-BpJBXGio.js +1 -0
- package/web/assets/{settings.store-PSHvWAzl.js → settings.store-hW2r6ht2.js} +1 -1
- package/web/assets/{shopping-cart.svg-C_kTBKvf.js → shopping-cart.svg-yNDOoxiE.js} +1 -1
- package/web/assets/{shopping-gift-present.svg-DIfbUecw.js → shopping-gift-present.svg-ZAFtf911.js} +1 -1
- package/web/assets/{shopping-shipping-box-parcel-package.svg-DgeqoYij.js → shopping-shipping-box-parcel-package.svg-C_128hOx.js} +1 -1
- package/web/assets/{TiptapEditor-CI1pNNDH.js → src-BTZHXzoT.js} +78 -78
- package/web/assets/src-CmzYYWZd.css +1 -0
- package/web/assets/src-DtlOQm4K.js +1 -0
- package/web/assets/src-ZfecJkW9.css +1 -0
- package/web/assets/{tabpanel-tgozju6m.js → tabpanel-BiifLLS6.js} +2 -2
- package/web/assets/{tag-new-circle.svg-yzrCIErB.js → tag-new-circle.svg-0OOws8vC.js} +1 -1
- package/web/assets/{travel-map-earth-globe.svg-C9CMICQQ.js → travel-map-earth-globe.svg-CvwB8JlN.js} +1 -1
- package/web/assets/trpc-D0HTyuMG.js +1 -0
- package/web/assets/{tsMode-gblCXC3w.js → tsMode-CadFFP73.js} +1 -1
- package/web/assets/{typescript-DeVzlCKf.js → typescript-TsqAe_2a.js} +1 -1
- package/web/assets/useAiChatDrawer-2ELNp1KU.js +1 -0
- package/web/assets/useCloudOrg-BAtUa48Z.css +1 -0
- package/web/assets/useCloudOrg-DuypVndp.js +1 -0
- package/web/assets/{xml-UwUjH4rq.js → xml-bgdRCuvM.js} +1 -1
- package/web/assets/{yaml-DSs0npSB.js → yaml-BRUv0H85.js} +1 -1
- package/web/index.html +2 -2
- package/agent-manager-QPZUYLJA.js +0 -8
- package/chunk-LZWBXYUE.js +0 -354
- package/chunk-LZWBXYUE.js.map +0 -1
- package/chunk-PUNE7P6S.js.map +0 -1
- package/chunk-Q4N37KNN.js +0 -202
- package/chunk-Q4N37KNN.js.map +0 -1
- package/kanban-commands-53WWMCHQ.js +0 -14
- package/kanban-commands-53WWMCHQ.js.map +0 -1
- package/src-K32WI425.js.map +0 -1
- package/web/assets/AgentScalarChatInterface.vue-S7bbKRqw.js +0 -13
- package/web/assets/AgentTerminalPage-c0fCTCzP.js +0 -1
- package/web/assets/AiChatPage-B-kfiUI-.js +0 -1
- package/web/assets/AppLayout-COTo6zQf.js +0 -1
- package/web/assets/CloudAccountPage-H1QGj9tJ.js +0 -1
- package/web/assets/CloudMessagingPage-BEtd8B8B.js +0 -2
- package/web/assets/CloudMessagingPage-sgMxCh6j.css +0 -1
- package/web/assets/EnvironmentFormPage-DMpiq3Zx.js +0 -1
- package/web/assets/EnvironmentListPage-C21qJ3iw.js +0 -1
- package/web/assets/EnvironmentSelector-Be9yMkjY.js +0 -1
- package/web/assets/KanbanBoardPage-CyUTDl_W.css +0 -1
- package/web/assets/KanbanBoardPage-SNCSxTz7.js +0 -4
- package/web/assets/KanbanListPage-B3JpbFlv.css +0 -1
- package/web/assets/KanbanListPage-D-kgPmxI.js +0 -1
- package/web/assets/LaunchProjectPage-BbNDYePE.js +0 -1
- package/web/assets/LogViewer-CHyPfODD.js +0 -3
- package/web/assets/ProcessDetailPage-BlQJDM-W.js +0 -1
- package/web/assets/ProjectDetailPage-DdRYMfcl.js +0 -1
- package/web/assets/ProjectListPage-BDLXGuEj.js +0 -1
- package/web/assets/ScenarioEditorPage-CFNTrVlY.js +0 -14
- package/web/assets/SendToChatDialog-BJjY1MAh.css +0 -1
- package/web/assets/SendToChatDialog-CtGhyaOw.js +0 -1
- package/web/assets/ServiceControlsBar-m_AQmRiR.js +0 -1
- package/web/assets/ServiceDetailPage-RCl6IsBs.js +0 -2
- package/web/assets/ServiceFormPage-CIJ-tFub.js +0 -1
- package/web/assets/SettingsPage-CPF7w35a.css +0 -1
- package/web/assets/SettingsPage-tK-RiJrj.js +0 -2062
- package/web/assets/SetupKeyPage-CzB_AMfr.js +0 -1
- package/web/assets/SetupKeyPage-DoY1Ua1s.css +0 -1
- package/web/assets/TiptapEditor-bdEPMd-W.css +0 -1
- package/web/assets/UnlockPage-DWM5symg.js +0 -1
- package/web/assets/UnlockPage-EZOi-H7d.css +0 -1
- package/web/assets/VariablesTable-Bkv0MOKi.css +0 -1
- package/web/assets/VariablesTable-DoNJ4OIn.js +0 -1
- package/web/assets/WikiPage-COdO-49s.js +0 -1
- package/web/assets/WikiView-BS9HHroX.js +0 -1
- package/web/assets/auth-errors-D-uOLmKt.js +0 -1
- package/web/assets/cloud-chat.store-DHiYOkkN.js +0 -1
- package/web/assets/cloud-client-COpvz58o.js +0 -1
- package/web/assets/interface-content-folder.svg-Bijbx45w.js +0 -1
- package/web/assets/modal-BvVbc_6u.js +0 -1
- package/web/assets/process.store-BLMSPw2l.js +0 -1
- package/web/assets/router-DBNATEGs.js +0 -1
- package/web/assets/trpc-3qbDCsqO.js +0 -1
- package/web/assets/useAiChatDrawer-BtC-0qN-.js +0 -1
- /package/{agent-manager-QPZUYLJA.js.map → agent-manager-2P4THUVA.js.map} +0 -0
- /package/web/assets/{abap-lJFTLuI6.js → abap-DMmvWZUy.js} +0 -0
- /package/web/assets/{apex-Bp0KWav8.js → apex-D89PiTzU.js} +0 -0
- /package/web/assets/{azcli-DBOe7Uvy.js → azcli-ChnjTTA5.js} +0 -0
- /package/web/assets/{bat-Dk_NT_by.js → bat-uLzQ_FhK.js} +0 -0
- /package/web/assets/{bicep-B07Mrlc7.js → bicep-CMOK7Q1v.js} +0 -0
- /package/web/assets/{cameligo-DL5eNXGn.js → cameligo-D1AyojFH.js} +0 -0
- /package/web/assets/{clojure-BzV2Yqu_.js → clojure-D9JoUgXn.js} +0 -0
- /package/web/assets/{coffee-Bjlj5hmf.js → coffee-D-5sSToL.js} +0 -0
- /package/web/assets/{cpp-C9oth5qz.js → cpp-BqT_t_y9.js} +0 -0
- /package/web/assets/{csharp-HyGd049S.js → csharp-CuToYI91.js} +0 -0
- /package/web/assets/{csp-DjCDOBuX.js → csp-CffcxvlO.js} +0 -0
- /package/web/assets/{css-DIL8RTJ3.js → css-CUD0biQW.js} +0 -0
- /package/web/assets/{cypher-DX1zPXL5.js → cypher-ByyWL_9U.js} +0 -0
- /package/web/assets/{dart-BBQZd_ZZ.js → dart-B__ipcUn.js} +0 -0
- /package/web/assets/{dockerfile-Cj0CaWYx.js → dockerfile-DS-_8bWw.js} +0 -0
- /package/web/assets/{ecl-BjmWCTJg.js → ecl-DWsNCBUj.js} +0 -0
- /package/web/assets/{elixir-3uWoEjXX.js → elixir-OfjEy-3g.js} +0 -0
- /package/web/assets/{flow9-D4r739e9.js → flow9-BPX22hxS.js} +0 -0
- /package/web/assets/{fsharp-B3ycAx5T.js → fsharp-CVJcfIUn.js} +0 -0
- /package/web/assets/{go-DFHBjfCl.js → go-CfRHZ3yg.js} +0 -0
- /package/web/assets/{graphql-DBjIbM_e.js → graphql-BZaO3ttK.js} +0 -0
- /package/web/assets/{hcl-Buu_1Hsp.js → hcl-BF9-qUku.js} +0 -0
- /package/web/assets/{ini-CgzZhgz_.js → ini-BUvw6xhr.js} +0 -0
- /package/web/assets/{java-BczDO0q5.js → java-BZ5BNd2x.js} +0 -0
- /package/web/assets/{julia-B142kn-7.js → julia-DN38cgYT.js} +0 -0
- /package/web/assets/{kotlin-42XMP7p1.js → kotlin-CjEJKT8q.js} +0 -0
- /package/web/assets/{less-BCIsKRqU.js → less-DMEH_Nwq.js} +0 -0
- /package/web/assets/{lexon-DTDOH1dQ.js → lexon-CKQUX8Ov.js} +0 -0
- /package/web/assets/{lua-BrH-CeNs.js → lua-CuWjKLJ0.js} +0 -0
- /package/web/assets/{m3-D-eUeHOI.js → m3-CEp1bVrM.js} +0 -0
- /package/web/assets/{markdown-DwpSjZTn.js → markdown-DxtQ_puq.js} +0 -0
- /package/web/assets/{mips-DoGTrjVk.js → mips-Dx7qydpO.js} +0 -0
- /package/web/assets/{msdax-CQ8McnjQ.js → msdax-DpNCaSiO.js} +0 -0
- /package/web/assets/{mysql-Cj3do0ZO.js → mysql-C3xsBDPP.js} +0 -0
- /package/web/assets/{objective-c-BZbR8TG8.js → objective-c-BbaVHCX1.js} +0 -0
- /package/web/assets/{pascal-23PRDHRq.js → pascal-sDju2faq.js} +0 -0
- /package/web/assets/{pascaligo-CxasKTLJ.js → pascaligo-ChCdOH6b.js} +0 -0
- /package/web/assets/{perl-Dhxz2Lhx.js → perl-BCgLFj01.js} +0 -0
- /package/web/assets/{pgsql-BIbUy7yD.js → pgsql-DtKby69f.js} +0 -0
- /package/web/assets/{php-B5qS9qgM.js → php-NYvR17Qb.js} +0 -0
- /package/web/assets/{pla-Bolz9fha.js → pla-gSg-RBG0.js} +0 -0
- /package/web/assets/{postiats-Ba6dE5lj.js → postiats-BQxHyDfy.js} +0 -0
- /package/web/assets/{powerquery-2jW3ONgo.js → powerquery-DzDmbVZN.js} +0 -0
- /package/web/assets/{powershell-CMfBIiJp.js → powershell-yy4Q5BEQ.js} +0 -0
- /package/web/assets/{protobuf-BpaquOUj.js → protobuf-B_hIk9q0.js} +0 -0
- /package/web/assets/{pug-cBG82Ydz.js → pug-CdeEb1ft.js} +0 -0
- /package/web/assets/{qsharp-DtqL8Lmt.js → qsharp-CiSquEgT.js} +0 -0
- /package/web/assets/{r-CKLew4sj.js → r-D1Ocz1x4.js} +0 -0
- /package/web/assets/{redis-BdDxRU-N.js → redis-D42Y12yz.js} +0 -0
- /package/web/assets/{redshift-X4a4MlqW.js → redshift-CS62MYfG.js} +0 -0
- /package/web/assets/{restructuredtext-LA4Fv05h.js → restructuredtext-CKFSMEXw.js} +0 -0
- /package/web/assets/{ruby-CibE_WVM.js → ruby-C4gTaeU3.js} +0 -0
- /package/web/assets/{rust-BK6RsiL0.js → rust-C_f2AiHQ.js} +0 -0
- /package/web/assets/{sb-BnCCt0Qj.js → sb-CdNdpP1r.js} +0 -0
- /package/web/assets/{scala-oaBDrVqj.js → scala-N4EWaFTL.js} +0 -0
- /package/web/assets/{scheme-C-wkLC01.js → scheme-CttIARxx.js} +0 -0
- /package/web/assets/{scss-BceVGOJY.js → scss-v0wtbxaE.js} +0 -0
- /package/web/assets/{shell-CxhBAFA5.js → shell-BJdEWXbc.js} +0 -0
- /package/web/assets/{solidity-D9sXgTfx.js → solidity-DKDa59zZ.js} +0 -0
- /package/web/assets/{sophia-C4VBhIEM.js → sophia--Kw-vDpr.js} +0 -0
- /package/web/assets/{sparql-DbsK2s9y.js → sparql-BI8jS9Pc.js} +0 -0
- /package/web/assets/{sql-CuGfE0wH.js → sql-Dz6z--6O.js} +0 -0
- /package/web/assets/{st-rB6Bqb2h.js → st-CT8D05gv.js} +0 -0
- /package/web/assets/{swift-BtHGe_4T.js → swift-Ayb3KzWx.js} +0 -0
- /package/web/assets/{systemverilog-CgKnzwU4.js → systemverilog-BtWJM9O5.js} +0 -0
- /package/web/assets/{tcl-DyqQWf87.js → tcl-BJvUWpbV.js} +0 -0
- /package/web/assets/{twig-C980XO5P.js → twig-c3YaBCU6.js} +0 -0
- /package/web/assets/{typespec-CVmA80px.js → typespec-gFCWLBoZ.js} +0 -0
- /package/web/assets/{uuid-2Kb5PDpq.js → uuid-B3B8HIK9.js} +0 -0
- /package/web/assets/{vb-rdNQv5VQ.js → vb-CVtfWXV2.js} +0 -0
- /package/web/assets/{w3c-keyname-B2B-WOb1.js → w3c-keyname-nn0G3QC2.js} +0 -0
- /package/web/assets/{wgsl-64oVbimL.js → wgsl-C_huaGQy.js} +0 -0
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{$t as e,At as t,Br as n,Bt as r,Dr as i,F as a,G as o,Gr as s,H as c,I as l,Ii as u,J as d,Jr as f,Jt as p,K as m,Ki as h,Kr as g,Lr as _,Mi as v,Mr as y,N as b,Ni as x,Oi as S,P as C,Pr as w,Qt as T,Rr as E,Rt as D,U as ee,Vr as O,W as k,Wi as te,Yi as A,Yr as ne,Yt as j,Z as re,Zi as M,Zr as N,_i as ie,_t as ae,bn as oe,c as se,di as ce,en as le,fn as P,hi as F,hn as ue,ii as de,jr as I,jt as fe,k as pe,m as me,mn as he,nn as L,oa as R,pi as ge,qt as _e,ra as ve,vt as ye,wn as be,yn as xe,z,zi as B,zr as V}from"./index-BTYNCNK0.js";import"./cloud-client-COpvz58o.js";import"./ProcessControls-D97-A3dI.js";import{t as Se}from"./ServiceControlsBar-m_AQmRiR.js";import{n as Ce,t as we}from"./column-DtLr_xcq.js";import{n as Te}from"./plus-DfsTcd_H.js";import{t as Ee}from"./checkbox-DWNV_RaS.js";import{t as De}from"./message-CJ-X_z47.js";import{n as Oe,t as ke}from"./autocomplete-CrWQ5zMj.js";import{a as Ae,i as je,n as Me,r as H,t as Ne}from"./tabpanel-tgozju6m.js";import{n as Pe,t as Fe}from"./VariablesTable-DoNJ4OIn.js";import{t as Ie}from"./uuid-2Kb5PDpq.js";import"./TiptapEditor-CI1pNNDH.js";import"./w3c-keyname-B2B-WOb1.js";import"./SendToChatDialog-CtGhyaOw.js";import{n as Le,t as Re}from"./ProcessMetrics-CNJ30_ef.js";import{t as ze}from"./LogViewer-CHyPfODD.js";import{t as Be}from"./divider-CYFRNVal.js";import{t as Ve}from"./settings.store-PSHvWAzl.js";import{t as He}from"./WikiView-BS9HHroX.js";var Ue={key:0,class:`log-details`},We={class:`log-details__section`},Ge={class:`log-details__label`},Ke={class:`log-details__value log-details__value--box`},qe={class:`log-details__section`},Je={class:`log-details__label`},Ye={class:`log-details__value log-details__value--box log-details__value--code`},Xe={class:`log-details__section`},Ze={class:`log-details__label`},Qe={class:`log-details__value log-details__value--box`},$e={class:`log-details__process`},et={class:`log-details__section`},tt={class:`log-details__label`},nt={class:`log-details__value log-details__value--box`},rt={class:`log-details__section`},it={class:`log-details__label`},at={class:`log-details__value log-details__value--box`},ot={key:0,class:`log-details__section`},st={class:`log-details__label`},ct={class:`log-details__value log-details__value--box`},lt={key:1,class:`log-details__section`},ut={class:`log-details__label`},dt={class:`log-details__value log-details__value--box log-details__value--code`},ft=T(f({__name:`LogDetailsDrawer`,props:{visible:{type:Boolean},log:{}},emits:[`update:visible`,`view-process`],setup(t,{emit:r}){let i=t,{t:a}=be(),o=r,s=_(()=>{if(!i.log)return``;let e=new Date(i.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=_(()=>i.log?i.log.level.charAt(0).toUpperCase()+i.log.level.slice(1):``),l=_(()=>!i.log||i.log.pid==null?a(`logDetails.notAvailable`):String(i.log.pid));function u(){i.log&&o(`view-process`,i.log.processId)}function d(){o(`update:visible`,!1)}return(r,i)=>(F(),V(R(e),{visible:t.visible,position:`right`,header:R(a)(`logDetails.header`),style:{width:`440px`},"onUpdate:visible":d},{default:v(()=>[t.log?(F(),O(`div`,Ue,[E(`div`,We,[E(`div`,Ge,B(R(a)(`logDetails.type`)),1),E(`div`,Ke,B(c.value),1)]),E(`div`,qe,[E(`div`,Je,B(R(a)(`logDetails.rawMessage`)),1),E(`div`,Ye,B(t.log.raw),1)]),E(`div`,Xe,[E(`div`,Ze,B(R(a)(`logDetails.serviceId`)),1),E(`div`,Qe,[E(`div`,$e,[E(`span`,null,B(t.log.processId),1),g(R(L),{label:R(a)(`logDetails.viewProcess`),icon:`pi pi-external-link`,size:`small`,outlined:``,onClick:u},null,8,[`label`])])])]),E(`div`,et,[E(`div`,tt,B(R(a)(`logDetails.pid`)),1),E(`div`,nt,B(l.value),1)]),E(`div`,rt,[E(`div`,it,B(R(a)(`logDetails.timestamp`)),1),E(`div`,at,B(s.value),1)]),t.log.stream?(F(),O(`div`,ot,[E(`div`,st,B(R(a)(`logDetails.stream`)),1),E(`div`,ct,B(t.log.stream),1)])):n(``,!0),t.log.metadata&&Object.keys(t.log.metadata).length>0?(F(),O(`div`,lt,[E(`div`,ut,B(R(a)(`logDetails.metadata`)),1),E(`div`,dt,B(JSON.stringify(t.log.metadata,null,2)),1)])):n(``,!0)])):n(``,!0)]),_:1},8,[`visible`,`header`]))}}),[[`__scopeId`,`data-v-5781eb9d`]]),pt=500,mt=5,ht=d;function gt(e){return e+Math.random()*e*.3}function _t(e,n){let r=M([]),i=M(!1),a=null,o=0,s=null,c=t(()=>{o=0,i.value||x()}),l=[],u=null,d=M(0),f=M(0),p=0,m=0,h=null;function g(){h||=setInterval(()=>{d.value=p,f.value=m,p=0,m=0},1e3)}function _(){h&&=(clearInterval(h),null),d.value=0,f.value=0,p=0,m=0}function v(){if(u=null,l.length===0)return;let e=l;l=[],m+=e.length;let t=[...r.value,...e];t.length>pt&&(t=t.slice(t.length-pt)),r.value=t}function y(){!e.value||!n.value||(i.value=!0,a=fe.process.onLog.subscribe({agentId:e.value,processId:n.value},{onData(e){let t=e;if(o=0,D(`connected`),t.some(e=>e.__clearLogBuffer)){r.value=[],l=[];return}p+=t.length,l.push(...t),u===null&&(u=requestAnimationFrame(v))},onError(e){console.error(`[useLogStream] Subscription error:`,e.message),i.value=!1,a=null,b()}}))}function b(){if(o>=mt){console.warn(`[useLogStream] Max retries (${mt}) reached`),D(`disconnected`);return}D(`reconnecting`);let e=gt(ht*2**o);o++,s=setTimeout(()=>{s=null,x()},e)}async function x(){if(!i.value&&!(!e.value||!n.value)){o=0;try{let t=await fe.process.logs.query({agentId:e.value,processId:n.value});t.length>pt&&(t=t.slice(t.length-pt)),r.value=t,D(`connected`)}catch{}y()}}function C(){s&&=(clearTimeout(s),null),u!==null&&(cancelAnimationFrame(u),u=null),l=[],_(),a&&=(a.unsubscribe(),null),i.value=!1,o=0,r.value=[]}return S([e,n],([e,t],[n,r])=>{(e!==n||t!==r)&&(i.value&&C(),x())}),ge(()=>{c(),C()}),{logs:r,isStreaming:i,start:x,stop:C,receivedPerSec:d,flushedPerSec:f,startStats:g,stopStats:_}}var vt={class:`service-terminal__toolbar`},yt={class:`service-terminal__toolbar-left`},bt={key:0,class:`pid-option`},xt={key:1,class:`pid-option`},St={key:0,class:`pi pi-circle-fill pid-status-icon pid-status-icon--active`,style:{"margin-right":`0.5rem`}},Ct={key:1,class:`pi pi-circle-fill pid-status-icon pid-status-icon--stopped`,style:{"margin-right":`0.5rem`}},wt={class:`pid-option`},Tt={key:0,class:`pi pi-list`,style:{"margin-right":`0.5rem`}},Et=[`title`],Dt=[`title`],Ot={class:`service-terminal__toolbar-right`},kt={class:`service-terminal__content`,"data-testid":`service-terminal-content`},At={key:1,class:`service-terminal__shortcuts`},jt={class:`service-terminal__command-input`},Mt={class:`service-terminal__bottom`},Nt=`runeya_command_history_`,Pt=50,Ft=T(f({__name:`ServiceTerminal`,props:{service:{},processes:{}},setup(e){let{t}=be(),i=e,a=_(()=>i.processes.find(e=>e.state===`running`||e.state===`starting`)??i.processes[0]??null),o=_(()=>a.value?.agentId??``),s=_(()=>a.value?.id??``),c=oe(),{logs:l,isStreaming:d,start:f,stop:m,receivedPerSec:h,flushedPerSec:y,startStats:b,stopStats:x}=_t(o,s),C=M(!1);S(C,e=>{e?b():x()});function T(e){e.ctrlKey&&e.shiftKey&&(e.key===`*`||e.key===`µ`)&&(e.preventDefault(),C.value=!C.value)}let D=_(()=>{let e=new Map;return l.value.forEach(t=>{if(t.pid!=null){let n=e.get(t.pid);if(n)n.lastSeen=new Date(Math.max(n.lastSeen.getTime(),new Date(t.timestamp).getTime())),n.logCount++;else{let n=i.processes.find(e=>e.pid===t.pid&&(e.state===`running`||e.state===`starting`));e.set(t.pid,{pid:t.pid,lastSeen:new Date(t.timestamp),logCount:1,isActive:!!n})}}}),Array.from(e.values()).sort((e,t)=>t.lastSeen.getTime()-e.lastSeen.getTime())}),ee=_(()=>Me.value===`all`?l.value:l.value.filter(e=>e.pid===Me.value)),k=_(()=>D.value.filter(e=>e.isActive).length),te=_(()=>{let e=[{label:t(`serviceTerminal.allProcesses`),value:`all`,badge:k.value>0?`${k.value} ${t(`serviceTerminal.active`)}`:void 0,isActive:void 0}];return D.value.forEach(({pid:t,logCount:n,isActive:r})=>{e.push({label:`PID: ${t}`,value:t,badge:`${n} logs`,isActive:r})}),e});_(()=>i.processes.filter(e=>e.state===`running`).length);async function A(){if(a.value)try{await fe.process.clearLogBuffer.mutate({agentId:a.value.agentId,processId:a.value.id}),l.value=[]}catch(e){c.add({severity:`error`,summary:t(`serviceTerminal.error`),detail:e.message??t(`serviceTerminal.failedToClearLogs`),life:5e3})}}let ne=_(()=>i.service.shortcuts??[]),j=M(new Set);async function re(e){let n=a.value?.agentId??i.service.agentId,r=a.value?.id??i.service.id;if(!n){c.add({severity:`warn`,summary:t(`serviceTerminal.noAgent`),detail:t(`serviceTerminal.noAgentDesc`),life:3e3});return}if(j.value.has(e.id)){try{await fe.process.cancelShortcut.mutate({agentId:n,processId:r,shortcutId:e.id})}catch{}return}j.value=new Set([...j.value,e.id]);try{await fe.process.executeShortcut.mutate({agentId:n,processId:r,shortcut:e})}catch(e){c.add({severity:`error`,summary:t(`serviceTerminal.shortcutFailed`),detail:e.message??t(`serviceTerminal.shortcutFailed`),life:5e3})}finally{let t=new Set(j.value);t.delete(e.id),j.value=t}}let N=M(``),ae=M(new Set),se=_(()=>ae.value.size>0),le=M(null),P=M([]),ue=M(-1),I=`ls,ls -la,ls -lh,pwd,echo,echo $PWD,cat,cat package.json,grep,find,find . -name,ps,ps aux,top,htop,df -h,du -sh,tail,tail -f,tail -n 100,head,head -n 20,wc -l,curl,wget,git status,git log,git diff,git branch,npm run,npm install,npm test,npm start,yarn,yarn install,yarn test,yarn build,docker ps,docker logs,docker exec,env,printenv,whoami,hostname,date,uptime`.split(`,`),pe=M([]);function me(e){let t=e.query.toLowerCase().trim();if(!t||!N.value.trim()){pe.value=[];return}let n=[...P.value.slice().reverse(),...I],r=new Set;pe.value=n.filter(e=>r.has(e)?!1:(r.add(e),e.toLowerCase().includes(t))).slice(0,10)}function he(){try{let e=localStorage.getItem(Nt+i.service.id);e&&(P.value=JSON.parse(e))}catch{P.value=[]}}function _e(){try{localStorage.setItem(Nt+i.service.id,JSON.stringify(P.value))}catch{}}function ve(e){P.value[P.value.length-1]!==e&&(P.value=[...P.value,e],P.value.length>Pt&&(P.value=P.value.slice(-Pt)),_e())}async function ye(){let e=a.value?.agentId??i.service.agentId,t=a.value?.id??i.service.id;if(e)try{await fe.process.cancelAdHocCommand.mutate({agentId:e,processId:t})}catch{}}async function xe(){if(!N.value.trim())return;let e=a.value?.agentId??i.service.agentId,n=a.value?.id??i.service.id;if(!e){c.add({severity:`warn`,summary:t(`serviceTerminal.noAgent`),detail:t(`serviceTerminal.noAgentDesc`),life:3e3});return}let r=Ie(),o=N.value.trim();ve(o),N.value=``,pe.value=[],ue.value=-1,ae.value=new Set([...ae.value,r]);try{await fe.process.executeAdHocCommand.mutate({agentId:e,processId:n,command:o,commandId:r})}catch(e){c.add({severity:`error`,summary:t(`serviceTerminal.commandFailed`),detail:e.message??t(`serviceTerminal.commandFailed`),life:5e3})}finally{let e=new Set(ae.value);e.delete(r),ae.value=e,de(()=>{document.querySelector(`.service-terminal__input`)?.focus()})}}function z(e){if(e.key===`Enter`&&!e.shiftKey){e.preventDefault(),xe();return}if(e.key===`ArrowUp`){if(e.preventDefault(),P.value.length===0)return;ue.value===-1?ue.value=P.value.length-1:ue.value>0&&ue.value--,N.value=P.value[ue.value]||``}else if(e.key===`ArrowDown`){if(e.preventDefault(),ue.value===-1)return;ue.value<P.value.length-1?(ue.value++,N.value=P.value[ue.value]||``):(ue.value=-1,N.value=``)}}function Ce(){if(l.value.length===0)return;let e=l.value.map(e=>`[${new Date(e.timestamp).toISOString()}] ${e.level.toUpperCase().padEnd(5)} ${e.message}`),t=new Blob([e.join(`
|
|
2
|
-
`)],{type:`text/plain`}),n=URL.createObjectURL(t),r=document.createElement(`a`);r.href=n,r.download=`${i.service.name}-${new Date().toISOString().slice(0,19).replaceAll(`:`,`-`)}.log`,document.body.appendChild(r),r.click(),document.body.removeChild(r),URL.revokeObjectURL(n)}let we=M(0),Te=0,Ee=null,De=null;S(a,e=>{if(!(e&&(e.state===`running`||e.state===`starting`))){Ee&&=(clearInterval(Ee),null),De=null,we.value=e?.uptime??0;return}let t=e.uptime??0;e.id!==De&&(Ee&&=(clearInterval(Ee),null),De=e.id,Te=e.startedAt?new Date(e.startedAt).getTime():Date.now()-t,we.value=Date.now()-Te,Ee=setInterval(()=>{we.value=Date.now()-Te},1e3))},{immediate:!0});let Oe=M(!0),Ae=M(null),je=M(!1),Me=M(`all`),H=M(!1);function Ne(){H.value=!H.value}ce(()=>{he(),a.value&&f(),window.addEventListener(`keydown`,T)}),ge(()=>{m(),window.removeEventListener(`keydown`,T),Ee&&clearInterval(Ee)});function Pe(e){let t=Math.floor(e/3600),n=Math.floor(e%3600/60),r=Math.floor(e%60);return`${t.toString().padStart(2,`0`)}:${n.toString().padStart(2,`0`)}:${r.toString().padStart(2,`0`)}`}function Fe(e){Ae.value=e,je.value=!0}function Le(e){je.value=!1,c.add({severity:`info`,summary:`Process`,detail:`Process ID: ${e}`,life:3e3})}return(o,s)=>(F(),O(`div`,{class:u([`service-terminal`,{"service-terminal--fullscreen":H.value}]),"data-testid":`service-terminal`},[H.value?(F(),V(Se,{key:0,service:e.service,processes:e.processes},null,8,[`service`,`processes`])):n(``,!0),E(`div`,vt,[E(`div`,yt,[g(R(L),{label:R(t)(`serviceTerminal.logs`),severity:Oe.value?`primary`:`secondary`,text:``,size:`small`,onClick:s[0]||=e=>Oe.value=!0},null,8,[`label`,`severity`]),g(R(r),{modelValue:Me.value,"onUpdate:modelValue":s[1]||=e=>Me.value=e,options:te.value,"option-label":`label`,"option-value":`value`,class:`service-terminal__pid-selector`},{value:v(e=>[e.value===`all`?(F(),O(`div`,bt,[s[5]||=E(`i`,{class:`pi pi-list`,style:{"margin-right":`0.5rem`}},null,-1),E(`span`,null,B(R(t)(`serviceTerminal.allProcesses`)),1),k.value>0?(F(),V(R(p),{key:0,value:`${k.value} ${R(t)(`serviceTerminal.active`)}`,severity:`secondary`,class:`pid-badge`},null,8,[`value`])):n(``,!0)])):(F(),O(`div`,xt,[te.value.find(t=>t.value===e.value)?.isActive?(F(),O(`i`,St)):(F(),O(`i`,Ct)),E(`span`,null,`PID: `+B(e.value),1)]))]),option:v(e=>[E(`div`,wt,[e.option.value===`all`?(F(),O(`i`,Tt)):e.option.isActive?(F(),O(`i`,{key:1,class:`pi pi-circle-fill pid-status-icon pid-status-icon--active`,title:R(t)(`serviceTerminal.running`)},null,8,Et)):(F(),O(`i`,{key:2,class:`pi pi-circle-fill pid-status-icon pid-status-icon--stopped`,title:R(t)(`serviceTerminal.stopped`)},null,8,Dt)),E(`span`,null,B(e.option.label),1),e.option.badge?(F(),V(R(p),{key:3,value:e.option.badge,severity:`secondary`,class:`pid-badge`},null,8,[`value`])):n(``,!0)])]),_:1},8,[`modelValue`,`options`])]),E(`div`,Ot,[g(R(L),{icon:H.value?`pi pi-window-minimize`:`pi pi-window-maximize`,text:``,rounded:``,size:`small`,title:H.value?R(t)(`serviceTerminal.exitFullscreen`):R(t)(`serviceTerminal.fullscreen`),onClick:Ne},null,8,[`icon`,`title`]),g(R(L),{icon:`pi pi-download`,text:``,rounded:``,size:`small`,title:R(t)(`serviceTerminal.downloadLogs`),disabled:R(l).length===0,onClick:Ce},null,8,[`title`,`disabled`]),g(R(L),{icon:`pi pi-trash`,text:``,rounded:``,size:`small`,title:R(t)(`serviceTerminal.clearLogs`),disabled:R(l).length===0,onClick:A},null,8,[`title`,`disabled`])])]),E(`div`,kt,[g(ze,{logs:ee.value,loading:!1,"received-per-sec":R(h),"flushed-per-sec":R(y),"show-stats":C.value,"service-label":i.service.label||i.service.name,onLogClick:Fe},null,8,[`logs`,`received-per-sec`,`flushed-per-sec`,`show-stats`,`service-label`])]),ne.value.length>0?(F(),O(`div`,At,[(F(!0),O(w,null,ie(ne.value,e=>(F(),V(R(L),{key:e.id,label:e.label||e.command,"data-shortcut-id":e.id,class:`shortcut-badge`,icon:j.value.has(e.id)?`pi pi-stop`:`pi pi-play`,size:`small`,outlined:!j.value.has(e.id),severity:j.value.has(e.id)?`danger`:void 0,onClick:t=>re(e)},null,8,[`label`,`data-shortcut-id`,`icon`,`outlined`,`severity`,`onClick`]))),128))])):n(``,!0),E(`div`,jt,[s[6]||=E(`span`,{class:`service-terminal__prompt`,"data-testid":`terminal-prompt`},`>`,-1),g(R(ke),{ref_key:`adHocCommandInput`,ref:le,modelValue:N.value,"onUpdate:modelValue":s[2]||=e=>N.value=e,suggestions:pe.value,class:`service-terminal__autocomplete`,"input-class":`service-terminal__input`,placeholder:R(t)(`serviceTerminal.enterCommand`),"aria-label":R(t)(`serviceTerminal.enterCommand`),disabled:!(a.value?.agentId??i.service.agentId),"data-testid":`terminal-command-input`,onComplete:me,onKeydown:z},null,8,[`modelValue`,`suggestions`,`placeholder`,`aria-label`,`disabled`]),g(R(L),{icon:se.value?`pi pi-stop`:`pi pi-play`,severity:se.value?`danger`:void 0,size:`small`,"data-testid":`terminal-run-btn`,disabled:!(a.value?.agentId??i.service.agentId)||!N.value.trim()&&!se.value,onClick:s[3]||=e=>se.value?ye():xe()},null,8,[`icon`,`severity`,`disabled`])]),E(`div`,Mt,[a.value?(F(),V(R(p),{key:0,icon:`pi pi-server`,value:a.value.agentId.slice(0,8),severity:`secondary`,class:`service-terminal__pill`},null,8,[`value`])):n(``,!0),e.service.cwd?(F(),V(R(p),{key:1,icon:`pi pi-folder`,value:e.service.cwd,severity:`secondary`,class:`service-terminal__pill`},null,8,[`value`])):n(``,!0),a.value&&(a.value.state===`running`||a.value.state===`starting`)?(F(),V(R(p),{key:2,icon:`pi pi-clock`,value:Pe(we.value/1e3),severity:`secondary`,class:`service-terminal__pill`},null,8,[`value`])):n(``,!0)]),g(ft,{visible:je.value,"onUpdate:visible":s[4]||=e=>je.value=e,log:Ae.value,onViewProcess:Le},null,8,[`visible`,`log`])],2))}}),[[`__scopeId`,`data-v-8ce2178d`]]),It=5,Lt=d;function Rt(e){return e+Math.random()*e*.3}function zt(e,t){let n=M(null),r=M(!1),i=M(!1),a=null,o=0,s=null;async function c(){if(!r.value){i.value=!0;try{n.value=await fe.process.metrics.query({agentId:e.value,processId:t.value})}catch(e){console.error(`Failed to fetch initial metrics:`,k(e))}finally{i.value=!1}l()}}function l(){r.value=!0,a=fe.process.onMetrics.subscribe({agentId:e.value,processId:t.value},{onData(e){o=0,D(`connected`),n.value=e},onError(e){console.error(`Metrics stream error:`,e),r.value=!1,a=null,u()}})}function u(){if(o>=It){console.warn(`Metrics stream: max retries (${It}) reached, giving up`),D(`disconnected`);return}D(`reconnecting`);let e=Rt(Lt*2**o);o++,s=setTimeout(()=>{s=null,l()},e)}function d(){s&&=(clearTimeout(s),null),a&&=(a.unsubscribe(),null),r.value=!1,o=0}return S([e,t],([e,t],[n,i])=>{(e!==n||t!==i)&&r.value&&(d(),c())}),ge(()=>{d()}),{metrics:n,isStreaming:r,isLoading:i,start:c,stop:d}}var Bt={class:`service-metrics`,"data-testid":`service-metrics`},Vt={key:1,class:`service-metrics__skeleton`},Ht={class:`metric-skeleton`},Ut={class:`metric-skeleton`},Wt={key:2,class:`service-metrics__no-data`},Gt={key:1,class:`service-metrics__no-process`},Kt=T(f({__name:`ServiceMetrics`,props:{service:{},processes:{}},setup(e){let t=e,n=_(()=>t.processes.find(e=>e.state===`running`||e.state===`starting`)??t.processes[0]??null),r=_(()=>n.value?.agentId??``),i=_(()=>n.value?.id??``),{t:a}=be(),{metrics:o,isLoading:s,start:c,stop:l}=zt(r,i);return ce(()=>{n.value&&c()}),ge(()=>{l()}),(e,t)=>(F(),O(`div`,Bt,[n.value?(F(),O(w,{key:0},[R(o)?(F(),V(Re,{key:0,cpu:R(o).cpu,memory:R(o).memory},null,8,[`cpu`,`memory`])):R(s)?(F(),O(`div`,Vt,[E(`div`,Ht,[g(R(Le),{width:`4rem`,height:`0.75rem`,class:`mb-2`}),g(R(Le),{width:`3rem`,height:`1.75rem`,class:`mb-3`}),g(R(Le),{width:`100%`,height:`6px`,"border-radius":`4px`})]),E(`div`,Ut,[g(R(Le),{width:`4rem`,height:`0.75rem`,class:`mb-2`}),g(R(Le),{width:`3rem`,height:`1.75rem`,class:`mb-3`}),g(R(Le),{width:`6rem`,height:`0.65rem`})])])):(F(),O(`div`,Wt,B(R(a)(`serviceMetrics.noData`)),1))],64)):(F(),O(`div`,Gt,[t[0]||=E(`i`,{class:`pi pi-info-circle`},null,-1),E(`span`,null,B(R(a)(`serviceMetrics.notRunning`)),1)]))]))}}),[[`__scopeId`,`data-v-94f5993b`]]),qt=`runeya:debug`,Jt=M(localStorage.getItem(qt)===`true`);function Yt(){function e(){Jt.value=!Jt.value,localStorage.setItem(qt,String(Jt.value))}return{isDebug:Jt,toggle:e}}var Xt={class:`config-general`},Zt={class:`config-card`},Qt={class:`config-card__header`},$t={class:`config-card`},en={class:`config-card__header`},tn={class:`config-card__hint`},nn={class:`config-card`},rn={class:`config-card`},an={class:`config-card__header`},on={class:`config-card__hint`},sn={class:`config-card`},cn={class:`config-card__header`},ln={class:`config-card__hint`},un={class:`config-card`},dn={class:`config-card__header`},fn={class:`config-card__hint`},pn={class:`config-card`},mn={class:`config-card__header`},hn={class:`config-card__hint`},gn={class:`config-card`},_n={class:`config-card__header`},vn={class:`config-card__hint`},yn={class:`config-card`},bn={class:`config-card__header`},xn={class:`config-card__hint`},Sn={class:`config-card__hint`},Cn={class:`config-card`},wn={class:`config-card__header`},Tn={class:`config-card__hint`},En={class:`config-meta`},Dn={class:`config-card config-card--inline`},On={class:`config-card__header`},kn={class:`config-card config-card--inline`},An={class:`config-card__header`},jn=T(f({__name:`ServiceConfigGeneral`,props:{service:{}},emits:[`save`],setup(e,{emit:t}){let{t:n}=be(),r=ee(),i=_(()=>{let e=new Set;for(let t of r.services)for(let n of t.groups??[])e.add(n);return[...e].sort((e,t)=>e.localeCompare(t))}),a=M([]);function o(e){let t=e.query.trim().toLowerCase(),n=new Set(f.value.groups);a.value=i.value.filter(e=>!n.has(e)&&(!t||e.toLowerCase().includes(t)))}function c(e){let t=e.target,n=t.value.trim();n&&(f.value.groups.includes(n)||(f.value.groups=[...f.value.groups,n],C()),t.value=``,a.value=[])}let l=e,u=t;function d(e){return Object.entries(e??{}).map(([e,t])=>({key:e,value:t}))}let f=M({name:l.service.name,cwd:l.service.cwd??``,ports:(l.service.ports??[]).map(String),groups:[...l.service.groups??[]],description:l.service.description??``,docsPath:l.service.docsPath??``,url:l.service.url??``,openapiUrl:l.service.openapiUrl??``,gitRemote:l.service.git?.remote??``,gitHome:l.service.git?.home??``,autoRestart:l.service.autoRestart,clearLogsOnStart:l.service.clearLogsOnStart??!1}),p=M(d(l.service.meta));S(()=>l.service,e=>{f.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},p.value=d(e.meta)});function m(){p.value=[...p.value,{key:``,value:``}]}function h(e){p.value=p.value.filter((t,n)=>n!==e)}function v(e,t,n){p.value=p.value.map((r,i)=>i===e?{...r,[t]:n}:r)}function b(){let e={};for(let{key:t,value:n}of p.value){let r=t.trim();r&&(e[r]=n)}return{name:f.value.name,cwd:f.value.cwd||null,ports:f.value.ports.map(Number).filter(e=>e>0&&e<=65535),groups:f.value.groups,description:f.value.description,docsPath:f.value.docsPath??``,url:f.value.url,openapiUrl:f.value.openapiUrl,git:f.value.gitRemote||f.value.gitHome?{remote:f.value.gitRemote||void 0,home:f.value.gitHome||void 0}:null,autoRestart:f.value.autoRestart,clearLogsOnStart:f.value.clearLogsOnStart,meta:Object.keys(e).length>0?e:null}}let x=null;function C(){x&&clearTimeout(x),x=setTimeout(()=>{u(`save`,b()),x=null},150)}return(e,t)=>(F(),O(`div`,Xt,[E(`div`,Zt,[E(`div`,Qt,[t[12]||=E(`i`,{class:`pi pi-tag`},null,-1),E(`span`,null,B(R(n)(`serviceConfigGeneral.name`)),1)]),g(R(j),{modelValue:f.value.name,"onUpdate:modelValue":t[0]||=e=>f.value.name=e,class:`config-card__input`,onBlur:C,onKeydown:I(y(C,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])]),E(`div`,$t,[E(`div`,en,[t[13]||=E(`i`,{class:`pi pi-folder`},null,-1),E(`span`,null,B(R(n)(`serviceConfigGeneral.workingDirectory`)),1)]),g(R(j),{modelValue:f.value.cwd,"onUpdate:modelValue":t[1]||=e=>f.value.cwd=e,class:`config-card__input`,placeholder:`.`,onBlur:C,onKeydown:I(y(C,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`]),E(`small`,tn,B(R(n)(`serviceConfigGeneral.cwdHint`)),1)]),E(`div`,nn,[t[14]||=E(`div`,{class:`config-card__header`},[E(`i`,{class:`pi pi-file-edit`}),E(`span`,null,`Dossier de documentation (wiki)`)],-1),g(R(j),{modelValue:f.value.docsPath,"onUpdate:modelValue":t[2]||=e=>f.value.docsPath=e,class:`config-card__input`,placeholder:`(défaut : même que cwd)`,onBlur:C,onKeydown:I(y(C,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`]),t[15]||=E(`small`,{class:`config-card__hint`},[s(` Chemin relatif au cwd du service (ex. `),E(`code`,null,`docs`),s(`) ou absolu. Si vide, utilise le cwd. `)],-1)]),E(`div`,rn,[E(`div`,an,[t[16]||=E(`i`,{class:`pi pi-globe`},null,-1),E(`span`,null,B(R(n)(`serviceConfigGeneral.ports`)),1)]),g(R(ke),{modelValue:f.value.ports,"onUpdate:modelValue":t[3]||=e=>f.value.ports=e,multiple:``,typeahead:!1,class:`config-card__input`,placeholder:R(n)(`serviceConfigGeneral.portsPlaceholder`),onChange:C},null,8,[`modelValue`,`placeholder`]),E(`small`,on,B(R(n)(`serviceConfigGeneral.portsHint`)),1)]),E(`div`,sn,[E(`div`,cn,[t[17]||=E(`i`,{class:`pi pi-th-large`},null,-1),E(`span`,null,B(R(n)(`serviceConfigGeneral.groups`)),1)]),g(R(ke),{modelValue:f.value.groups,"onUpdate:modelValue":t[4]||=e=>f.value.groups=e,multiple:``,suggestions:a.value,"complete-on-focus":!0,class:`config-card__input`,placeholder:R(n)(`serviceConfigGeneral.groupsPlaceholder`),onComplete:o,onChange:C,onKeydown:I(c,[`enter`])},null,8,[`modelValue`,`suggestions`,`placeholder`]),E(`small`,ln,B(R(n)(`serviceConfigGeneral.groupsHint`)),1)]),E(`div`,un,[E(`div`,dn,[t[18]||=E(`i`,{class:`pi pi-info-circle`},null,-1),E(`span`,null,B(R(n)(`serviceConfigGeneral.description`)),1)]),g(R(_e),{modelValue:f.value.description,"onUpdate:modelValue":t[5]||=e=>f.value.description=e,class:`config-card__input`,rows:2,onBlur:C},null,8,[`modelValue`]),E(`small`,fn,B(R(n)(`serviceConfigGeneral.descriptionHint`)),1)]),E(`div`,pn,[E(`div`,mn,[t[19]||=E(`i`,{class:`pi pi-external-link`},null,-1),E(`span`,null,B(R(n)(`serviceConfigGeneral.url`)),1)]),g(R(j),{modelValue:f.value.url,"onUpdate:modelValue":t[6]||=e=>f.value.url=e,class:`config-card__input`,placeholder:`https://...`,onBlur:C,onKeydown:I(y(C,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`]),E(`small`,hn,B(R(n)(`serviceConfigGeneral.urlHint`)),1)]),E(`div`,gn,[E(`div`,_n,[t[20]||=E(`i`,{class:`pi pi-book`},null,-1),E(`span`,null,B(R(n)(`serviceConfigGeneral.openapiUrl`)),1)]),g(R(j),{modelValue:f.value.openapiUrl,"onUpdate:modelValue":t[7]||=e=>f.value.openapiUrl=e,class:`config-card__input`,placeholder:`https://.../swagger.json`,onBlur:C,onKeydown:I(y(C,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`]),E(`small`,vn,B(R(n)(`serviceConfigGeneral.openapiUrlHint`)),1)]),E(`div`,yn,[E(`div`,bn,[t[21]||=E(`i`,{class:`pi pi-github`},null,-1),E(`span`,null,B(R(n)(`serviceConfigGeneral.git`)),1)]),g(R(j),{modelValue:f.value.gitRemote,"onUpdate:modelValue":t[8]||=e=>f.value.gitRemote=e,class:`config-card__input`,placeholder:`git@github.com:org/repo.git`,onBlur:C,onKeydown:I(y(C,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`]),E(`small`,xn,B(R(n)(`serviceConfigGeneral.gitRemoteHint`)),1),g(R(j),{modelValue:f.value.gitHome,"onUpdate:modelValue":t[9]||=e=>f.value.gitHome=e,class:`config-card__input`,style:{"margin-top":`0.5rem`},placeholder:`https://github.com/org/repo`,onBlur:C,onKeydown:I(y(C,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`]),E(`small`,Sn,B(R(n)(`serviceConfigGeneral.gitHomeHint`)),1)]),E(`div`,Cn,[E(`div`,wn,[t[22]||=E(`i`,{class:`pi pi-hashtag`},null,-1),E(`span`,null,B(R(n)(`serviceConfigGeneral.meta`)),1)]),E(`small`,Tn,B(R(n)(`serviceConfigGeneral.metaHint`)),1),E(`div`,En,[(F(!0),O(w,null,ie(p.value,(e,t)=>(F(),O(`div`,{key:t,class:`config-meta__row`},[g(R(j),{"model-value":e.key,placeholder:R(n)(`serviceConfigGeneral.metaKeyPlaceholder`),class:`config-meta__input`,"onUpdate:modelValue":e=>v(t,`key`,e),onBlur:C,onKeydown:I(y(C,[`prevent`]),[`enter`])},null,8,[`model-value`,`placeholder`,`onUpdate:modelValue`,`onKeydown`]),g(R(j),{"model-value":e.value,placeholder:R(n)(`serviceConfigGeneral.metaValuePlaceholder`),class:`config-meta__input config-meta__input--wide`,"onUpdate:modelValue":e=>v(t,`value`,e),onBlur:C,onKeydown:I(y(C,[`prevent`]),[`enter`])},null,8,[`model-value`,`placeholder`,`onUpdate:modelValue`,`onKeydown`]),g(R(L),{icon:`pi pi-trash`,severity:`danger`,text:``,rounded:``,size:`small`,onClick:()=>{h(t),C()}},null,8,[`onClick`])]))),128)),g(R(L),{label:R(n)(`serviceConfigGeneral.addEntry`),icon:`pi pi-plus`,severity:`secondary`,outlined:``,size:`small`,class:`config-meta__add`,onClick:m},null,8,[`label`])])]),E(`div`,Dn,[E(`div`,On,[t[23]||=E(`i`,{class:`pi pi-refresh`},null,-1),E(`span`,null,B(R(n)(`serviceConfigGeneral.autoRestart`)),1)]),g(R(Oe),{modelValue:f.value.autoRestart,"onUpdate:modelValue":t[10]||=e=>f.value.autoRestart=e,onChange:C},null,8,[`modelValue`])]),E(`div`,kn,[E(`div`,An,[t[24]||=E(`i`,{class:`pi pi-trash`},null,-1),E(`span`,null,B(R(n)(`serviceConfigGeneral.clearLogs`)),1)]),g(R(Oe),{modelValue:f.value.clearLogsOnStart,"onUpdate:modelValue":t[11]||=e=>f.value.clearLogsOnStart=e,onChange:C},null,8,[`modelValue`])])]))}}),[[`__scopeId`,`data-v-e166143a`]]),Mn={class:`docker-config`},Nn={class:`docker-config__section`},Pn={for:`docker-mode-image`,class:`docker-config__section-title`},Fn={class:`docker-config__mode-toggle`},In={class:`docker-config__mode-option`},Ln={class:`docker-config__mode-option`},Rn={key:0,class:`docker-config__section`},zn={for:`docker-image`,class:`docker-config__label`},Bn={class:`docker-config__section`},Vn={class:`docker-config__section`},Hn={for:`docker-build-context`,class:`docker-config__label`},Un={class:`docker-config__section`},Wn={for:`docker-add-build-arg`,class:`docker-config__label`},Gn={class:`docker-config__kv-list`},Kn={class:`docker-config__section`},qn={for:`docker-target-stage`,class:`docker-config__label`},Jn={class:`docker-config__section`},Yn={for:`docker-user`,class:`docker-config__section-title`},Xn={class:`docker-config__section`},Zn={for:`docker-user`,class:`docker-config__label`},Qn={class:`docker-config__section`},$n={for:`docker-network-mode`,class:`docker-config__label`},er={key:2,class:`docker-config__section`},tr={for:`docker-add-port`,class:`docker-config__label`},nr={class:`docker-config__list`},rr={class:`docker-config__section`},ir={for:`docker-add-volume`,class:`docker-config__label`},ar={class:`docker-config__checkbox-row`},or={for:`mountRootpath`,class:`docker-config__checkbox-label`},sr={class:`docker-config__list`},cr={class:`docker-config__section`},lr={class:`docker-config__checkbox-row`},ur={for:`useNativeCommand`,class:`docker-config__checkbox-label`},dr={key:0,class:`docker-config__shell-row`},fr={for:`docker-native-shell`,class:`docker-config__label`},pr={class:`docker-config__hint`},mr={key:1,class:`docker-config__mode-toggle docker-config__mode-toggle--indented`},hr={class:`docker-config__mode-option`},gr={class:`docker-config__mode-option`},_r={class:`docker-config__section`},vr={for:`docker-entrypoint`,class:`docker-config__label`},yr={class:`docker-config__section`},br={for:`docker-command`,class:`docker-config__label`},xr={class:`docker-config__section`},Sr={for:`docker-add-bootstrap`,class:`docker-config__section-title`},Cr={class:`docker-config__bootstrap-row`},wr={class:`docker-config__bootstrap-field`},Tr=[`for`],Er={class:`docker-config__bootstrap-field`},Dr=[`for`],Or={class:`docker-config__bootstrap-field docker-config__bootstrap-field--wide`},kr=[`for`],Ar={class:`docker-config__bootstrap-field`},jr=[`for`],Mr={class:`docker-config__bootstrap-actions`},Nr={class:`docker-config__section`},Pr=T(f({__name:`ServiceConfigDocker`,props:{service:{}},emits:[`save`],setup(e,{emit:t}){let{t:a}=be(),o=e,c=t,l=o.service.dockerConfig??{},u=M(l.dockerfile?`build`:`image`),d=M(l.image??``),f=M(l.dockerfile??``),p=M(l.buildContext??``),m=M(Object.entries(l.buildArgs??{}).map(([e,t])=>({key:e,value:t}))),h=M(l.targetStage??``),_=M(l.networkMode??`host`),b=M([...l.ports??[]]),S=M([...l.volumes??[]]),C=M(l.mountRootpath??!1),T=M(l.entrypoint??``),D=M(l.command??``),ee=M(l.user??``),k=M(l.useNativeCommand??!1),te=M(l.nativeCommandMode??`isolated`),A=M(l.nativeShell??`sh`),ne=[{label:`sh (POSIX)`,value:`sh`},{label:`bash`,value:`bash`},{label:`zsh`,value:`zsh`},{label:`ash (Alpine)`,value:`ash`}],re=M([...l.bootstrapCommands??[]]),N=M(!1),ae=[{label:`Host (--network host)`,value:`host`},{label:`Bridge`,value:`bridge`}];function oe(){m.value=[...m.value,{key:``,value:``}]}function se(e){m.value=m.value.filter((t,n)=>n!==e)}function ce(e,t,n){m.value=m.value.map((r,i)=>i===e?{...r,[t]:n}:r)}function P(){b.value=[...b.value,``]}function ue(e){b.value=b.value.filter((t,n)=>n!==e)}function de(e,t){b.value=b.value.map((n,r)=>r===e?t:n)}function fe(){S.value=[...S.value,``]}function pe(e){S.value=S.value.filter((t,n)=>n!==e)}function he(e,t){S.value=S.value.map((n,r)=>r===e?t:n)}function ge(){re.value=[...re.value,{id:Ie(),label:`Bootstrap`,entrypoint:`/bin/sh`,command:`-c ""`,user:void 0}]}function _e(e){re.value=re.value.filter((t,n)=>n!==e)}function ve(e,t,n){re.value=re.value.map((r,i)=>i===e?{...r,[t]:n===``?void 0:n}:r)}function ye(e,t){let n=[...re.value],r=e+t;r<0||r>=n.length||([n[e],n[r]]=[n[r],n[e]],re.value=n)}let xe=null;function z(){xe&&clearTimeout(xe),xe=setTimeout(()=>{let e={};for(let{key:t,value:n}of m.value)t.trim()&&(e[t.trim()]=n);c(`save`,{image:u.value===`image`&&d.value||void 0,dockerfile:u.value===`build`&&f.value||void 0,buildContext:p.value||void 0,buildArgs:e,targetStage:h.value||void 0,networkMode:_.value,ports:b.value.filter(Boolean),volumes:S.value.filter(Boolean),mountRootpath:C.value,entrypoint:T.value||void 0,command:D.value||void 0,user:ee.value||void 0,useNativeCommand:k.value,nativeCommandMode:te.value,nativeShell:A.value,bootstrapCommands:re.value}),xe=null},150)}function V(e){_e(e),z()}function Se(e,t){ye(e,t),z()}function Ce(e){se(e),z()}function we(e){ue(e),z()}function Te(e){pe(e),z()}return(e,t)=>(F(),O(`div`,Mn,[E(`div`,Nn,[E(`label`,Pn,B(R(a)(`serviceConfigDocker.imageSource`)),1),E(`div`,Fn,[E(`label`,In,[x(E(`input`,{id:`docker-mode-image`,"onUpdate:modelValue":t[0]||=e=>u.value=e,type:`radio`,value:`image`,class:`docker-config__radio`,onChange:z},null,544),[[i,u.value]]),s(` `+B(R(a)(`serviceConfigDocker.pullImage`)),1)]),E(`label`,Ln,[x(E(`input`,{"onUpdate:modelValue":t[1]||=e=>u.value=e,type:`radio`,value:`build`,class:`docker-config__radio`,onChange:z},null,544),[[i,u.value]]),s(` `+B(R(a)(`serviceConfigDocker.buildDockerfile`)),1)])])]),u.value===`image`?(F(),O(`div`,Rn,[E(`label`,zn,B(R(a)(`serviceConfigDocker.image`)),1),g(R(j),{id:`docker-image`,modelValue:d.value,"onUpdate:modelValue":t[2]||=e=>d.value=e,placeholder:R(a)(`serviceConfigDocker.imagePlaceholder`),class:`docker-config__input`,onBlur:z,onKeydown:I(y(z,[`prevent`]),[`enter`])},null,8,[`modelValue`,`placeholder`,`onKeydown`])])):n(``,!0),u.value===`build`?(F(),O(w,{key:1},[E(`div`,Bn,[t[18]||=E(`label`,{for:`docker-dockerfile-btn`,class:`docker-config__label`},`Dockerfile`,-1),g(R(L),{id:`docker-dockerfile-btn`,label:R(a)(`serviceConfigDocker.editDockerfile`),icon:`pi pi-file-edit`,severity:`secondary`,outlined:``,size:`small`,onClick:t[3]||=e=>N.value=!0},null,8,[`label`]),g(R(le),{visible:N.value,"onUpdate:visible":t[6]||=e=>N.value=e,header:R(a)(`serviceConfigDocker.editDockerfile`),modal:``,style:{width:`800px`}},{footer:v(()=>[g(R(L),{label:R(a)(`serviceConfigDocker.closeDockerfile`),icon:`pi pi-times`,onClick:t[5]||=()=>{N.value=!1,z()}},null,8,[`label`])]),default:v(()=>[g(me,{modelValue:f.value,"onUpdate:modelValue":t[4]||=e=>f.value=e,language:`dockerfile`,style:{height:`400px`}},null,8,[`modelValue`])]),_:1},8,[`visible`,`header`])]),E(`div`,Vn,[E(`label`,Hn,B(R(a)(`serviceConfigDocker.buildContext`)),1),g(R(j),{id:`docker-build-context`,modelValue:p.value,"onUpdate:modelValue":t[7]||=e=>p.value=e,placeholder:`.`,class:`docker-config__input`,onBlur:z,onKeydown:I(y(z,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])]),E(`div`,Un,[E(`label`,Wn,B(R(a)(`serviceConfigDocker.buildArgs`)),1),E(`div`,Gn,[(F(!0),O(w,null,ie(m.value,(e,t)=>(F(),O(`div`,{key:t,class:`docker-config__kv-row`},[g(R(j),{"model-value":e.key,placeholder:R(a)(`serviceConfigDocker.argNamePlaceholder`),class:`docker-config__kv-input`,"onUpdate:modelValue":e=>ce(t,`key`,e),onBlur:z,onKeydown:I(y(z,[`prevent`]),[`enter`])},null,8,[`model-value`,`placeholder`,`onUpdate:modelValue`,`onKeydown`]),g(R(j),{"model-value":e.value,placeholder:R(a)(`serviceConfigDocker.argValuePlaceholder`),class:`docker-config__kv-input`,"onUpdate:modelValue":e=>ce(t,`value`,e),onBlur:z,onKeydown:I(y(z,[`prevent`]),[`enter`])},null,8,[`model-value`,`placeholder`,`onUpdate:modelValue`,`onKeydown`]),g(R(L),{icon:`pi pi-trash`,severity:`danger`,text:``,rounded:``,size:`small`,onClick:e=>Ce(t)},null,8,[`onClick`])]))),128)),g(R(L),{id:`docker-add-build-arg`,label:R(a)(`serviceConfigDocker.addBuildArg`),icon:`pi pi-plus`,severity:`secondary`,outlined:``,size:`small`,onClick:oe},null,8,[`label`])])]),E(`div`,Kn,[E(`label`,qn,B(R(a)(`serviceConfigDocker.targetStage`)),1),g(R(j),{id:`docker-target-stage`,modelValue:h.value,"onUpdate:modelValue":t[8]||=e=>h.value=e,placeholder:R(a)(`serviceConfigDocker.targetStagePlaceholder`),class:`docker-config__input`,onBlur:z,onKeydown:I(y(z,[`prevent`]),[`enter`])},null,8,[`modelValue`,`placeholder`,`onKeydown`])])],64)):n(``,!0),g(R(Be)),E(`div`,Jn,[E(`label`,Yn,B(R(a)(`serviceConfigDocker.runtimeConfig`)),1)]),E(`div`,Xn,[E(`label`,Zn,B(R(a)(`serviceConfigDocker.userGroup`)),1),g(R(j),{id:`docker-user`,modelValue:ee.value,"onUpdate:modelValue":t[9]||=e=>ee.value=e,placeholder:R(a)(`serviceConfigDocker.userGroupHint`),class:`docker-config__input`,onBlur:z,onKeydown:I(y(z,[`prevent`]),[`enter`])},null,8,[`modelValue`,`placeholder`,`onKeydown`])]),E(`div`,Qn,[E(`label`,$n,B(R(a)(`serviceConfigDocker.networkMode`)),1),g(R(r),{"input-id":`docker-network-mode`,modelValue:_.value,"onUpdate:modelValue":t[10]||=e=>_.value=e,options:ae,"option-label":`label`,"option-value":`value`,class:`docker-config__select`,onChange:z},null,8,[`modelValue`])]),_.value===`bridge`?(F(),O(`div`,er,[E(`label`,tr,B(R(a)(`serviceConfigDocker.portMappings`)),1),E(`div`,nr,[(F(!0),O(w,null,ie(b.value,(e,t)=>(F(),O(`div`,{key:t,class:`docker-config__list-row`},[g(R(j),{"model-value":e,placeholder:R(a)(`serviceConfigDocker.portPlaceholder`),class:`docker-config__input`,"onUpdate:modelValue":e=>de(t,e),onBlur:z,onKeydown:I(y(z,[`prevent`]),[`enter`])},null,8,[`model-value`,`placeholder`,`onUpdate:modelValue`,`onKeydown`]),g(R(L),{icon:`pi pi-trash`,severity:`danger`,text:``,rounded:``,size:`small`,onClick:e=>we(t)},null,8,[`onClick`])]))),128)),g(R(L),{id:`docker-add-port`,label:R(a)(`serviceConfigDocker.addPort`),icon:`pi pi-plus`,severity:`secondary`,outlined:``,size:`small`,onClick:P},null,8,[`label`])])])):n(``,!0),E(`div`,rr,[E(`label`,ir,B(R(a)(`serviceConfigDocker.volumes`)),1),E(`div`,ar,[g(R(Ee),{modelValue:C.value,"onUpdate:modelValue":t[11]||=e=>C.value=e,binary:!0,"input-id":`mountRootpath`,onChange:z},null,8,[`modelValue`]),E(`label`,or,B(R(a)(`serviceConfigDocker.autoMount`)),1)]),E(`div`,sr,[(F(!0),O(w,null,ie(S.value,(e,t)=>(F(),O(`div`,{key:t,class:`docker-config__list-row`},[g(R(j),{"model-value":e,placeholder:R(a)(`serviceConfigDocker.volumePlaceholder`),class:`docker-config__input`,"onUpdate:modelValue":e=>he(t,e),onBlur:z,onKeydown:I(y(z,[`prevent`]),[`enter`])},null,8,[`model-value`,`placeholder`,`onUpdate:modelValue`,`onKeydown`]),g(R(L),{icon:`pi pi-trash`,severity:`danger`,text:``,rounded:``,size:`small`,onClick:e=>Te(t)},null,8,[`onClick`])]))),128)),g(R(L),{id:`docker-add-volume`,label:R(a)(`serviceConfigDocker.addVolume`),icon:`pi pi-plus`,severity:`secondary`,outlined:``,size:`small`,onClick:fe},null,8,[`label`])])]),g(R(Be)),E(`div`,cr,[E(`div`,lr,[g(R(Ee),{modelValue:k.value,"onUpdate:modelValue":t[12]||=e=>k.value=e,binary:!0,"input-id":`useNativeCommand`,onChange:z},null,8,[`modelValue`]),E(`label`,ur,B(R(a)(`serviceConfigDocker.runNative`)),1)]),t[21]||=E(`span`,{class:`docker-config__hint`},` When enabled, the service command is executed directly inside the container (ignores CMD override below). `,-1),k.value?(F(),O(`div`,dr,[E(`label`,fr,B(R(a)(`serviceConfigDocker.shell`)),1),g(R(r),{"input-id":`docker-native-shell`,modelValue:A.value,"onUpdate:modelValue":t[13]||=e=>A.value=e,options:ne,"option-label":`label`,"option-value":`value`,class:`docker-config__select docker-config__select--small`,editable:``,placeholder:R(a)(`serviceConfigDocker.shellPlaceholder`),onChange:z},null,8,[`modelValue`,`placeholder`]),E(`span`,pr,[s(B(R(a)(`serviceConfigDocker.shellHint`))+` (`,1),t[19]||=E(`code`,null,`shell -c '...'`,-1),t[20]||=s(`)`,-1)])])):n(``,!0),k.value?(F(),O(`div`,mr,[E(`label`,hr,[x(E(`input`,{"onUpdate:modelValue":t[14]||=e=>te.value=e,type:`radio`,value:`isolated`,class:`docker-config__radio`,onChange:z},null,544),[[i,te.value]]),s(` `+B(R(a)(`serviceConfigDocker.isolated`)),1)]),E(`label`,gr,[x(E(`input`,{"onUpdate:modelValue":t[15]||=e=>te.value=e,type:`radio`,value:`shared`,class:`docker-config__radio`,onChange:z},null,544),[[i,te.value]]),s(` `+B(R(a)(`serviceConfigDocker.shared`)),1)])])):n(``,!0)]),k.value?n(``,!0):(F(),O(w,{key:3},[t[22]||=E(`div`,{class:`docker-config__section`},[E(`label`,{for:`docker-entrypoint`,class:`docker-config__section-title`},`Override`)],-1),E(`div`,_r,[E(`label`,vr,B(R(a)(`serviceConfigDocker.entrypoint`)),1),g(R(j),{id:`docker-entrypoint`,modelValue:T.value,"onUpdate:modelValue":t[16]||=e=>T.value=e,placeholder:R(a)(`serviceConfigDocker.entrypointPlaceholder`),class:`docker-config__input`,onBlur:z,onKeydown:I(y(z,[`prevent`]),[`enter`])},null,8,[`modelValue`,`placeholder`,`onKeydown`])]),E(`div`,yr,[E(`label`,br,B(R(a)(`serviceConfigDocker.cmdOverride`)),1),g(R(j),{id:`docker-command`,modelValue:D.value,"onUpdate:modelValue":t[17]||=e=>D.value=e,placeholder:R(a)(`serviceConfigDocker.cmdPlaceholder`),class:`docker-config__input`,onBlur:z,onKeydown:I(y(z,[`prevent`]),[`enter`])},null,8,[`modelValue`,`placeholder`,`onKeydown`])])],64)),g(R(Be)),E(`div`,xr,[E(`label`,Sr,[s(B(R(a)(`serviceConfigDocker.bootstrapCommands`))+` `,1),t[23]||=E(`span`,{class:`docker-config__hint-inline`},` — run sequentially before the service starts`,-1)])]),(F(!0),O(w,null,ie(re.value,(e,t)=>(F(),O(`div`,{key:e.id,class:`docker-config__bootstrap-card`},[E(`div`,Cr,[E(`div`,wr,[E(`label`,{class:`docker-config__label`,for:`docker-bootstrap-label-${t}`},`Label`,8,Tr),g(R(j),{id:`docker-bootstrap-label-${t}`,"model-value":e.label,placeholder:R(a)(`serviceConfigDocker.bootstrapLabelPlaceholder`),class:`docker-config__input`,"onUpdate:modelValue":e=>ve(t,`label`,e),onBlur:z,onKeydown:I(y(z,[`prevent`]),[`enter`])},null,8,[`id`,`model-value`,`placeholder`,`onUpdate:modelValue`,`onKeydown`])]),E(`div`,Er,[E(`label`,{class:`docker-config__label`,for:`docker-bootstrap-entrypoint-${t}`},`Entrypoint`,8,Dr),g(R(j),{id:`docker-bootstrap-entrypoint-${t}`,"model-value":e.entrypoint??``,placeholder:`/bin/sh`,class:`docker-config__input`,"onUpdate:modelValue":e=>ve(t,`entrypoint`,e),onBlur:z,onKeydown:I(y(z,[`prevent`]),[`enter`])},null,8,[`id`,`model-value`,`onUpdate:modelValue`,`onKeydown`])]),E(`div`,Or,[E(`label`,{class:`docker-config__label`,for:`docker-bootstrap-command-${t}`},`Command`,8,kr),g(R(j),{id:`docker-bootstrap-command-${t}`,"model-value":e.command,placeholder:`-c "npm install"`,class:`docker-config__input`,"onUpdate:modelValue":e=>ve(t,`command`,e),onBlur:z,onKeydown:I(y(z,[`prevent`]),[`enter`])},null,8,[`id`,`model-value`,`onUpdate:modelValue`,`onKeydown`])]),E(`div`,Ar,[E(`label`,{class:`docker-config__label`,for:`docker-bootstrap-user-${t}`},`User:Group`,8,jr),g(R(j),{id:`docker-bootstrap-user-${t}`,"model-value":e.user??``,placeholder:R(a)(`serviceConfigDocker.userGroupHint`),class:`docker-config__input`,"onUpdate:modelValue":e=>ve(t,`user`,e),onBlur:z,onKeydown:I(y(z,[`prevent`]),[`enter`])},null,8,[`id`,`model-value`,`placeholder`,`onUpdate:modelValue`,`onKeydown`])]),E(`div`,Mr,[g(R(L),{icon:`pi pi-arrow-up`,text:``,rounded:``,size:`small`,disabled:t===0,onClick:e=>Se(t,-1)},null,8,[`disabled`,`onClick`]),g(R(L),{icon:`pi pi-arrow-down`,text:``,rounded:``,size:`small`,disabled:t===re.value.length-1,onClick:e=>Se(t,1)},null,8,[`disabled`,`onClick`]),g(R(L),{icon:`pi pi-times`,severity:`danger`,text:``,rounded:``,size:`small`,onClick:e=>V(t)},null,8,[`onClick`])])])]))),128)),E(`div`,Nr,[g(R(L),{id:`docker-add-bootstrap`,label:R(a)(`serviceConfigDocker.addBootstrapCommand`),icon:`pi pi-plus`,severity:`secondary`,outlined:``,size:`small`,onClick:ge},null,8,[`label`])])]))}}),[[`__scopeId`,`data-v-36904478`]]),Fr={class:`config-commands`},Ir={class:`config-commands__execution`},Lr={class:`config-card config-card--execution`},Rr={class:`config-card__header`},zr={class:`config-card__hint`},Br={class:`config-card config-card--execution`},Vr={class:`config-card__header`},Hr={key:0,class:`runner-option`},Ur={class:`runner-option`},Wr={class:`config-commands__tab-content`},Gr={key:0,class:`config-commands__empty`},Kr={class:`config-commands__row`},qr={class:`config-commands__field`},Jr=[`for`],Yr={class:`config-commands__field config-commands__field--wide`},Xr=[`for`],Zr={class:`config-commands__field`},Qr=[`for`],$r={class:`config-commands__actions-cell`},ei={class:`config-commands__footer`},ti={class:`config-commands__tab-content`},ni=`__inherit__`,ri=T(f({__name:`ServiceConfigCommands`,props:{service:{}},emits:[`save`,`dockerSave`],setup(e,{emit:t}){let i=e,a=t,{t:o}=be(),s=z(),c=null,l=M({agentId:i.service.agentId??ni,runner:i.service.runner});S(()=>i.service,e=>{l.value={agentId:e.agentId??ni,runner:e.runner}});let d=_(()=>[{label:o(`serviceConfigCommands.native`),value:`native`,icon:`pi pi-desktop`},{label:o(`serviceConfigCommands.docker`),value:`docker`,icon:`pi pi-box`}]),f=_(()=>d.value.find(e=>e.value===l.value.runner)?.icon??`pi pi-box`),p=_(()=>[{label:o(`serviceForm.agentInherit`),value:ni},...s.agents.map(e=>({label:`${e.config.name} (${e.status.connected?o(`serviceConfigCommands.online`):o(`serviceConfigCommands.offline`)})`,value:e.config.id}))]),m=M([...i.service.commands??[]]);S(()=>i.service,e=>{c||(m.value=[...e.commands??[]])});function h(){m.value=[...m.value,{id:Ie(),label:``,command:``,cwd:void 0,shell:!0}]}function b(e){m.value=m.value.filter((t,n)=>n!==e)}function x(e,t,n){m.value=m.value.map((r,i)=>i===e?{...r,[t]:n===``?void 0:n}:r)}function C(){c&&clearTimeout(c),c=setTimeout(()=>{a(`save`,{agentId:l.value.agentId===ni?null:l.value.agentId||null,runner:l.value.runner,commands:m.value}),c=null},150)}function T(e){a(`dockerSave`,e)}function D(e){b(e),C()}return(t,i)=>(F(),O(`div`,Fr,[E(`div`,Ir,[E(`div`,Lr,[E(`div`,Rr,[i[2]||=E(`i`,{class:`pi pi-server`},null,-1),E(`span`,null,B(R(o)(`serviceConfigCommands.agent`)),1)]),g(R(r),{modelValue:l.value.agentId,"onUpdate:modelValue":i[0]||=e=>l.value.agentId=e,options:p.value,"option-label":`label`,"option-value":`value`,class:`config-card__input`,onChange:C},null,8,[`modelValue`,`options`]),E(`small`,zr,B(R(o)(`serviceForm.agentHintEdit`)),1)]),E(`div`,Br,[E(`div`,Vr,[E(`i`,{class:u(f.value)},null,2),E(`span`,null,B(R(o)(`serviceConfigCommands.runner`)),1)]),g(R(r),{modelValue:l.value.runner,"onUpdate:modelValue":i[1]||=e=>l.value.runner=e,options:d.value,"option-label":`label`,"option-value":`value`,class:`config-card__input`,onChange:C},{value:v(e=>[e.value?(F(),O(`div`,Hr,[E(`i`,{class:u(d.value.find(t=>t.value===e.value)?.icon)},null,2),E(`span`,null,B(d.value.find(t=>t.value===e.value)?.label),1)])):n(``,!0)]),option:v(e=>[E(`div`,Ur,[E(`i`,{class:u(e.option.icon)},null,2),E(`span`,null,B(e.option.label),1)])]),_:1},8,[`modelValue`,`options`])])]),g(R(Ae),{value:`0`},{default:v(()=>[g(R(je),null,{default:v(()=>[g(R(H),{value:`0`},{default:v(()=>[i[3]||=E(`i`,{class:`pi pi-desktop tab-icon`},null,-1),E(`span`,null,B(R(o)(`serviceConfigCommands.native`)),1)]),_:1}),g(R(H),{value:`1`},{default:v(()=>[i[4]||=E(`i`,{class:`pi pi-box tab-icon`},null,-1),E(`span`,null,B(R(o)(`serviceConfigCommands.docker`)),1)]),_:1})]),_:1}),g(R(Me),null,{default:v(()=>[g(R(Ne),{value:`0`},{default:v(()=>[E(`div`,Wr,[m.value.length===0?(F(),O(`div`,Gr,[E(`p`,null,B(R(o)(`serviceConfigCommands.noCommands`)),1)])):n(``,!0),(F(!0),O(w,null,ie(m.value,(e,t)=>(F(),O(`div`,{key:e.id,class:`config-card`},[E(`div`,Kr,[E(`div`,qr,[E(`label`,{class:`config-commands__label`,for:`cmd-label-${t}`},B(R(o)(`serviceConfigCommands.labelPlaceholder`)),9,Jr),g(R(j),{id:`cmd-label-${t}`,"model-value":e.label,placeholder:R(o)(`serviceConfigCommands.labelPlaceholder`),class:`config-card__input`,"onUpdate:modelValue":e=>x(t,`label`,e),onBlur:C,onKeydown:I(y(C,[`prevent`]),[`enter`])},null,8,[`id`,`model-value`,`placeholder`,`onUpdate:modelValue`,`onKeydown`])]),E(`div`,Yr,[E(`label`,{class:`config-commands__label`,for:`cmd-command-${t}`},B(R(o)(`serviceConfigCommands.commandPlaceholder`)),9,Xr),g(R(j),{id:`cmd-command-${t}`,"model-value":e.command,placeholder:`e.g. npm start`,class:`config-card__input`,"onUpdate:modelValue":e=>x(t,`command`,e),onBlur:C,onKeydown:I(y(C,[`prevent`]),[`enter`])},null,8,[`id`,`model-value`,`onUpdate:modelValue`,`onKeydown`])]),E(`div`,Zr,[E(`label`,{class:`config-commands__label`,for:`cmd-cwd-${t}`},`Working Dir (optional)`,8,Qr),g(R(j),{id:`cmd-cwd-${t}`,"model-value":e.cwd??``,placeholder:R(o)(`serviceConfigCommands.cwdPlaceholder`),class:`config-card__input`,"onUpdate:modelValue":e=>x(t,`cwd`,e),onBlur:C,onKeydown:I(y(C,[`prevent`]),[`enter`])},null,8,[`id`,`model-value`,`placeholder`,`onUpdate:modelValue`,`onKeydown`])]),E(`div`,$r,[g(R(L),{icon:`pi pi-trash`,severity:`danger`,text:``,rounded:``,size:`small`,onClick:e=>D(t)},null,8,[`onClick`])])])]))),128)),E(`div`,ei,[g(R(L),{label:R(o)(`serviceConfigCommands.addCommand`),icon:`pi pi-plus`,severity:`secondary`,outlined:``,size:`small`,onClick:h},null,8,[`label`])])])]),_:1}),g(R(Ne),{value:`1`},{default:v(()=>[E(`div`,ti,[g(Pr,{service:e.service,onSave:T},null,8,[`service`])])]),_:1})]),_:1})]),_:1})]))}}),[[`__scopeId`,`data-v-df297a71`]]),ii={class:`config-env`,"data-testid":`config-env`},ai={key:0,class:`active-env-display`},oi={class:`active-env-label`},si={key:1,class:`inheritance-toggle`},ci={class:`inheritance-label`},li={class:`config-env__header`},ui={class:`config-env__title`},di={class:`config-env__actions`},fi={key:2,class:`variables-view`},pi={key:0},mi={key:1,class:`empty-state`},hi={class:`inherited-header`},gi={class:`inherited-row-key`},_i={class:`preview-key`},vi={class:`value-row`},yi=[`onClick`],bi=[`onClick`],xi={key:0,class:`secret-mask`},Si={key:1,class:`preview-value`},Ci={class:`inherited-header`},wi={class:`passthrough-info`},Ti={class:`preview-key`},Ei={key:0,class:`preview-value`},Di={key:1,class:`passthrough-undefined`},Oi={key:3,class:`empty-state`},ki={key:4,class:`empty-state`},Ai={class:`editor-container`},ji={key:0,class:`editor-env-banner`},Mi={class:`editor-env-text`},Ni={class:`editor-section`,"data-testid":`variables-editor`},Pi={key:0,class:`loading-container`},Fi={key:1,class:`preview-container`},Ii={class:`preview-info`},Li={class:`preview-key`},Ri={class:`value-row`},zi=[`onClick`],Bi=[`onClick`],Vi={key:0,class:`secret-mask`},Hi={key:1,class:`preview-value`},Ui=T(f({__name:`ServiceConfigEnv`,props:{service:{},projectId:{},activeEnvironmentId:{}},setup(e){let t=e,{t:r}=be(),i=oe(),d=xe(),f=o(),m=c(),h=z(),x=se(),w=_(()=>m.projects.find(e=>e.id===t.projectId)?.activeEnvironmentId??null),T=_(()=>f.findServiceEnvironment(t.service.id,w.value??``)),D=M(!1),ee=M(!1),k=M(!1),te=M(!1),A=M(null),ne=M(null),j=M([]),re=M({}),N=M(new Set);function ie(e){let t=new Set(N.value);t.has(e)?t.delete(e):t.add(e),N.value=t}let ae=M(null);function P(e,t){navigator.clipboard.writeText(t),ae.value=e,setTimeout(()=>{ae.value===e&&(ae.value=null)},1500)}let ue=M({}),de=M(!1),I=_(()=>t.service.agentId?h.getById(t.service.agentId):null),me=_(()=>{let e=I.value?.status.lanIp;return e?{"service.HOST_LAN":e}:{}}),he=_(()=>I.value?.config.passthroughEnv??[]),ge=_(()=>he.value.length>0);async function _e(){if(!t.service.agentId||!ge.value){ue.value={};return}de.value=!0;try{ue.value=await fe.agent.getPassthroughEnv.query({id:t.service.agentId})}catch{ue.value={}}finally{de.value=!1}}let ve=_(()=>he.value.map(e=>({name:e,value:ue.value[e]??null}))),ye=_(()=>!T.value||!w.value?!0:T.value.parentIds?.includes(w.value)??!0);async function Se(e){if(!(!T.value||!w.value)){te.value=!0;try{await f.update({id:T.value.id,parentIds:e?[w.value]:[]}),await Me()}catch(e){i.add({severity:`error`,summary:r(`serviceConfigEnv.error`),detail:e.message??r(`serviceConfigEnv.failedToUpdateInheritance`),life:5e3})}finally{te.value=!1}}}let Te=_(()=>{let e=m.projects.find(e=>e.id===t.projectId);return e?.activeEnvironmentId?f.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=_(()=>A.value?Ee(A.value.variables):[]),ke=_(()=>{if(!T.value||!A.value?.sources)return De.value;let e=T.value.id;return De.value.filter(t=>A.value.sources[t.variableId]?.environmentId===e)}),Ae=_(()=>{if(!T.value||!A.value?.sources)return[];let e=T.value.id;return De.value.filter(t=>A.value.sources[t.variableId]?.environmentId!==e)}),je=_(()=>{if(!A.value?.sources)return{};let e={};for(let[t,n]of Object.entries(A.value.sources))e[t]={environmentId:n.environmentId,overridden:n.overridden,...n.resolvedFrom?{resolvedFrom:n.resolvedFrom}:{}};return e});async function Me(){if(T.value)try{A.value=await f.resolve(T.value.id)}catch(e){console.error(`Failed to resolve environment:`,e)}}async function H(){if(w.value)try{ne.value=await f.resolve(w.value)}catch{}}async function Ne(e){let t=e.toLowerCase(),n=ne.value??A.value;if(!n)return;let r=n.variables,i=Object.keys(n.env).filter(e=>e.toLowerCase().includes(t));j.value=i;let a={};if(r)for(let e of i){let t=Object.values(r).find(t=>t.key===e);t&&(a[e]={key:e,isSecret:t.value?.isSecret??!1,pre:t.value?.pre??``,post:t.value?.post??``})}re.value=a}async function Ie(){k.value=!0;try{await ze(),await Me(),ee.value=!0}catch(e){i.add({severity:`error`,summary:r(`serviceConfigEnv.error`),detail:e.message??r(`serviceConfigEnv.failedToLoadPreview`),life:5e3})}finally{k.value=!1}}let Le=_(()=>A.value?Object.entries(A.value.env).map(([e,t])=>({key:e,value:Object.entries(me.value).reduce((e,[t,n])=>e.replaceAll(`{{${t}}}`,n),t)})):[]);function Re(e,t){return t?`***`:e.length>50?e.substring(0,47)+`...`:e}async function ze(){if(T.value)return T.value;if(!w.value)return null;let e=Te.value;return e?(await f.create({name:`${t.service.name??t.service.id} — ${e.name}`,projectId:t.projectId,scope:`service`,reference:t.service.id,activateOn:w.value,parentIds:[w.value],variables:{}}),T.value):null}let Be=_(()=>{let e=x.getByService(t.service.id);return e.length>0?e[0]:null}),Ve=_(()=>{let e=Be.value?.state;return e===`running`||e===`errored`});async function He(){await ze(),D.value=!0,await Promise.all([Me(),H()])}function Ue(){if(D.value=!1,!Ve.value||!Be.value)return;let e=Be.value.state===`running`?`restart`:`start`,n=t.service.name||t.service.id;d.require({message:r(e===`restart`?`serviceConfigEnv.restartConfirmMsg`:`serviceConfigEnv.startConfirmMsg`,{name:n}),header:r(e===`restart`?`serviceConfigEnv.restartTitle`:`serviceConfigEnv.startTitle`),icon:`pi pi-refresh`,acceptLabel:r(e===`restart`?`serviceConfigEnv.restartTitle`:`actions.start`),rejectLabel:r(`serviceConfigEnv.notNow`),accept:async()=>{try{let n=t.service.agentId;if(!n)return;e===`restart`?(await x.restart(n,t.service.id),i.add({severity:`success`,summary:r(`serviceConfigEnv.serviceRestarted`),life:3e3})):(await x.start(n,t.service.id),i.add({severity:`success`,summary:r(`serviceConfigEnv.serviceStarted`),life:3e3}))}catch(t){i.add({severity:`error`,summary:r(`serviceConfigEnv.error`),detail:t.message??r(`serviceConfigEnv.failedToAction`,{action:e}),life:5e3})}}})}return S(Te,async e=>{e&&await Promise.all([Me(),H()])}),S(()=>t.service.agentId,()=>{_e()}),ce(async()=>{t.projectId&&await f.fetchAll(t.projectId),await Promise.all([Me(),H(),_e()])}),(t,i)=>(F(),O(`div`,ii,[w.value?(F(),O(`div`,ai,[E(`span`,oi,B(R(r)(`serviceConfigEnv.activeEnvironment`)),1),g(Pe,{"environment-id":w.value},null,8,[`environment-id`])])):n(``,!0),T.value&&Te.value?(F(),O(`div`,si,[g(R(Oe),{"model-value":ye.value,disabled:te.value,"onUpdate:modelValue":Se},null,8,[`model-value`,`disabled`]),E(`span`,ci,B(ye.value?R(r)(`serviceConfigEnv.inheritsFrom`,{name:Te.value.name}):R(r)(`serviceConfigEnv.isolated`,{name:Te.value.name})),1)])):n(``,!0),E(`div`,li,[E(`h3`,ui,B(R(r)(`serviceConfigEnv.envVars`)),1),E(`div`,di,[g(R(L),{label:R(r)(`serviceConfigEnv.editVariables`),icon:`pi pi-pencil`,size:`small`,outlined:``,"data-testid":`env-edit-btn`,disabled:!w.value,onClick:He},null,8,[`label`,`disabled`]),g(R(L),{label:R(r)(`serviceConfigEnv.preview`),icon:`pi pi-eye`,size:`small`,outlined:``,severity:`secondary`,loading:k.value,disabled:!w.value,"data-testid":`env-preview-btn`,onClick:Ie},null,8,[`label`,`loading`,`disabled`])])]),T.value?(F(),O(`div`,fi,[ke.value.length>0?(F(),O(`div`,pi,[g(Fe,{"environment-id":T.value.id,sources:je.value,"resolved-env":{...ne.value?.env??{},...A.value?.env??{}},"service-builtins":me.value,editable:!1,"show-overrides":!1,"show-override-badge":!0,"show-delete":!1,"show-add-button":!1},null,8,[`environment-id`,`sources`,`resolved-env`,`service-builtins`])])):(F(),O(`div`,mi,[E(`p`,null,B(R(r)(`serviceConfigEnv.noVarsConfigured`)),1)])),Ae.value.length>0?(F(),V(R(b),{key:2,class:`inherited-accordion`},{default:v(()=>[g(R(C),{value:`inherited`},{default:v(()=>[g(R(a),null,{default:v(()=>[E(`span`,hi,[i[6]||=E(`i`,{class:`pi pi-arrow-down-left`},null,-1),s(` `+B(R(r)(`serviceConfigEnv.inheritedVars`))+` `,1),g(R(p),{value:String(Ae.value.length),severity:`secondary`,rounded:``},null,8,[`value`])])]),_:1}),g(R(l),null,{default:v(()=>[g(R(Ce),{value:Ae.value,size:`small`,"show-headers":!1},{default:v(()=>[g(R(we),{style:{width:`35%`}},{body:v(({data:e})=>[E(`div`,gi,[E(`code`,_i,B(e.key),1),je.value[e.variableId]?(F(),V(Pe,{key:0,"environment-id":je.value[e.variableId].environmentId,class:`source-badge`},null,8,[`environment-id`])):n(``,!0)])]),_:1}),g(R(we),{style:{width:`65%`}},{body:v(({data:e})=>[E(`span`,vi,[E(`span`,{class:`value-actions`,onClick:i[0]||=y(()=>{},[`stop`])},[e.slot.isSecret?(F(),O(`i`,{key:0,class:u([N.value.has(e.variableId)?`pi pi-eye-slash`:`pi pi-eye`,`action-icon`]),onClick:t=>ie(e.variableId)},null,10,yi)):n(``,!0),E(`i`,{class:u([ae.value===e.variableId?`pi pi-check`:`pi pi-copy`,`action-icon`]),onClick:t=>P(e.variableId,e.slot.pre+e.slot.value+e.slot.post)},null,10,bi)]),e.slot.isSecret&&!N.value.has(e.variableId)?(F(),O(`span`,xi,`***`)):(F(),O(`code`,Si,B(e.slot.pre)+B(e.slot.value)+B(e.slot.post),1))])]),_:1})]),_:1},8,[`value`])]),_:1})]),_:1})]),_:1})):n(``,!0),ge.value?(F(),V(R(b),{key:3,class:`inherited-accordion`},{default:v(()=>[g(R(C),{value:`passthrough`},{default:v(()=>[g(R(a),null,{default:v(()=>[E(`span`,Ci,[i[7]||=E(`i`,{class:`pi pi-globe`},null,-1),s(` `+B(R(r)(`agentPage.passthrough.titleShort`))+` `,1),g(R(p),{value:String(he.value.length),severity:`secondary`,rounded:``},null,8,[`value`])])]),_:1}),g(R(l),null,{default:v(()=>[E(`p`,wi,B(R(r)(`serviceConfigEnv.passthroughInfo`)),1),de.value?(F(),V(R(pe),{key:0,style:{width:`24px`,height:`24px`}})):(F(),V(R(Ce),{key:1,value:ve.value,stripedRows:``,size:`small`},{default:v(()=>[g(R(we),{field:`name`,header:R(r)(`common.key`),style:{width:`35%`}},{body:v(({data:e})=>[E(`code`,Ti,B(e.name),1)]),_:1},8,[`header`]),g(R(we),{header:R(r)(`common.value`),style:{width:`65%`}},{body:v(({data:e})=>[e.value===null?(F(),O(`span`,Di,B(R(r)(`serviceConfigEnv.undefined`)),1)):(F(),O(`span`,Ei,B(e.value),1))]),_:1},8,[`header`])]),_:1},8,[`value`]))]),_:1})]),_:1})]),_:1})):n(``,!0)])):w.value?(F(),O(`div`,ki,[E(`p`,null,B(R(r)(`serviceConfigEnv.noVarsConfigured`)),1)])):(F(),O(`div`,Oi,[E(`p`,null,B(R(r)(`serviceConfigEnv.noActiveEnv`)),1)])),g(R(le),{visible:D.value,header:R(r)(`serviceConfigEnv.editVarsHeader`),style:{width:`900px`},modal:``,"onUpdate:visible":i[2]||=e=>{e||Ue()}},{footer:v(()=>[g(R(L),{label:R(r)(`actions.close`),icon:`pi pi-times`,onClick:i[1]||=e=>Ue()},null,8,[`label`])]),default:v(()=>[E(`div`,Ai,[w.value?(F(),O(`div`,ji,[E(`span`,Mi,B(R(r)(`serviceConfigEnv.editingVarsFor`,{name:e.service.name||e.service.id})),1),g(Pe,{"environment-id":w.value},null,8,[`environment-id`])])):n(``,!0),E(`div`,Ni,[T.value?(F(),V(Fe,{key:0,"environment-id":T.value.id,editable:!0,"autocomplete-enabled":!0,"autocomplete-suggestions":j.value,"autocomplete-meta":re.value,"resolved-env":{...ne.value?.env??{},...A.value?.env??{}},"service-builtins":me.value,"show-overrides":!0,"show-delete":!0,"show-add-button":!0,onAutocompleteSearch:Ne},null,8,[`environment-id`,`autocomplete-suggestions`,`autocomplete-meta`,`resolved-env`,`service-builtins`])):n(``,!0)])])]),_:1},8,[`visible`,`header`]),g(R(le),{visible:ee.value,"onUpdate:visible":i[5]||=e=>ee.value=e,header:R(r)(`serviceConfigEnv.previewHeader`),style:{width:`700px`},modal:``,"data-testid":`env-preview-dialog`},{footer:v(()=>[g(R(L),{label:R(r)(`actions.close`),icon:`pi pi-times`,onClick:i[4]||=e=>ee.value=!1},null,8,[`label`])]),default:v(()=>[k.value?(F(),O(`div`,Pi,[g(R(pe))])):A.value?(F(),O(`div`,Fi,[E(`p`,Ii,B(R(r)(`serviceConfigEnv.injectedVarsInfo`)),1),g(R(Ce),{value:Le.value,stripedRows:``,size:`small`,rows:15,paginator:Le.value.length>15},{default:v(()=>[g(R(we),{field:`key`,header:R(r)(`common.key`),style:{width:`35%`}},{body:v(({data:e})=>[E(`code`,Li,B(e.key),1)]),_:1},8,[`header`]),g(R(we),{header:R(r)(`common.value`),style:{width:`65%`}},{body:v(({data:e})=>[E(`span`,Ri,[E(`span`,{class:`value-actions`,onClick:i[3]||=y(()=>{},[`stop`])},[A.value.envSecrets.includes(e.key)?(F(),O(`i`,{key:0,class:u([N.value.has(`preview:`+e.key)?`pi pi-eye-slash`:`pi pi-eye`,`action-icon`]),onClick:t=>ie(`preview:`+e.key)},null,10,zi)):n(``,!0),E(`i`,{class:u([ae.value===`preview:`+e.key?`pi pi-check`:`pi pi-copy`,`action-icon`]),onClick:t=>P(`preview:`+e.key,e.value)},null,10,Bi)]),A.value.envSecrets.includes(e.key)&&!N.value.has(`preview:`+e.key)?(F(),O(`span`,Vi,`***`)):(F(),O(`span`,Hi,B(Re(e.value,!1)),1))])]),_:1},8,[`header`])]),_:1},8,[`value`,`paginator`])])):n(``,!0)]),_:1},8,[`visible`,`header`])]))}}),[[`__scopeId`,`data-v-a6a198b8`]]),Wi={class:`config-health`},Gi={class:`config-card config-card--inline`},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={class:`config-card`},ea={class:`config-card__header`},ta={key:1,class:`config-card`},na={class:`config-card__header`},ra={class:`config-card__hint`},ia={class:`config-card`},aa={class:`config-card__header`},oa={class:`config-card`},sa={class:`config-card__header`},ca={class:`config-card`},la={class:`config-card__header`},ua={class:`config-card`},da={class:`config-card__header`},fa=T(f({__name:`ServiceConfigHealthCheck`,props:{service:{}},emits:[`save`],setup(e,{emit:t}){let i=e,a=t,{t:o}=be(),s=M(!!i.service.healthCheck),c=M({type:i.service.healthCheck?.type??`http`,path:i.service.healthCheck?.path??`/health`,interval:i.service.healthCheck?.interval??3e4,timeout:i.service.healthCheck?.timeout??5e3,retries:i.service.healthCheck?.retries??3,method:i.service.healthCheck?.method??`GET`,expectedStatus:i.service.healthCheck?.expectedStatus??200,initialDelay:i.service.healthCheck?.initialDelay??5e3,command:i.service.healthCheck?.command??``}),l=[{label:`HTTP Request`,value:`http`},{label:`Command`,value:`command`}],u=[{label:`GET`,value:`GET`},{label:`HEAD`,value:`HEAD`},{label:`POST`,value:`POST`},{label:`PUT`,value:`PUT`}];S(()=>i.service,e=>{s.value=!!e.healthCheck,c.value={type:e.healthCheck?.type??`http`,path:e.healthCheck?.path??`/health`,interval:e.healthCheck?.interval??3e4,timeout:e.healthCheck?.timeout??5e3,retries:e.healthCheck?.retries??3,method:e.healthCheck?.method??`GET`,expectedStatus:e.healthCheck?.expectedStatus??200,initialDelay:e.healthCheck?.initialDelay??5e3,command:e.healthCheck?.command??``}});let d=null;function f(){d&&clearTimeout(d),d=setTimeout(()=>{if(!s.value)a(`save`,void 0);else{if(c.value.type===`http`&&!c.value.path?.trim()||c.value.type===`command`&&!c.value.command?.trim())return;a(`save`,{type:c.value.type,path:c.value.path,method:c.value.method,expectedStatus:c.value.expectedStatus,command:c.value.command||void 0,interval:c.value.interval,timeout:c.value.timeout,retries:c.value.retries,initialDelay:c.value.initialDelay})}d=null},150)}return(e,t)=>(F(),O(`div`,Wi,[E(`div`,Gi,[E(`div`,Ki,[t[10]||=E(`i`,{class:`pi pi-heart`},null,-1),E(`span`,null,B(R(o)(`serviceConfigHealthCheck.enable`)),1)]),g(R(Oe),{modelValue:s.value,"onUpdate:modelValue":t[0]||=e=>s.value=e,onChange:f},null,8,[`modelValue`])]),s.value?(F(),O(w,{key:0},[E(`div`,qi,[E(`div`,Ji,[t[11]||=E(`i`,{class:`pi pi-cog`},null,-1),E(`span`,null,B(R(o)(`serviceConfigHealthCheck.type`)),1)]),g(R(r),{modelValue:c.value.type,"onUpdate:modelValue":t[1]||=e=>c.value.type=e,options:l,"option-label":`label`,"option-value":`value`,class:`config-card__input`,onChange:f},null,8,[`modelValue`]),t[12]||=E(`small`,{class:`config-card__hint`},`HTTP checks a URL endpoint; Command runs a shell command (exit 0 = healthy)`,-1)]),c.value.type===`http`?(F(),O(w,{key:0},[E(`div`,Yi,[E(`div`,Xi,[t[13]||=E(`i`,{class:`pi pi-link`},null,-1),E(`span`,null,B(R(o)(`serviceConfigHealthCheck.path`)),1)]),g(R(j),{modelValue:c.value.path,"onUpdate:modelValue":t[2]||=e=>c.value.path=e,class:`config-card__input`,placeholder:`/health`,onBlur:f,onKeydown:I(y(f,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])]),E(`div`,Zi,[E(`div`,Qi,[t[14]||=E(`i`,{class:`pi pi-directions`},null,-1),E(`span`,null,B(R(o)(`serviceConfigHealthCheck.method`)),1)]),g(R(r),{modelValue:c.value.method,"onUpdate:modelValue":t[3]||=e=>c.value.method=e,options:u,"option-label":`label`,"option-value":`value`,class:`config-card__input`,onChange:f},null,8,[`modelValue`])]),E(`div`,$i,[E(`div`,ea,[t[15]||=E(`i`,{class:`pi pi-check-circle`},null,-1),E(`span`,null,B(R(o)(`serviceConfigHealthCheck.expectedStatus`)),1)]),g(R(Te),{modelValue:c.value.expectedStatus,"onUpdate:modelValue":t[4]||=e=>c.value.expectedStatus=e,class:`config-card__input`,"use-grouping":!1,min:100,max:599,onBlur:f,onKeydown:I(y(f,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`]),t[16]||=E(`small`,{class:`config-card__hint`},`HTTP status code to expect (default 200)`,-1)])],64)):n(``,!0),c.value.type===`command`?(F(),O(`div`,ta,[E(`div`,na,[t[17]||=E(`i`,{class:`pi pi-code`},null,-1),E(`span`,null,B(R(o)(`serviceConfigHealthCheck.command`)),1)]),g(R(_e),{modelValue:c.value.command,"onUpdate:modelValue":t[5]||=e=>c.value.command=e,class:`config-card__input`,rows:`2`,placeholder:`curl -sf http://localhost:3000/health`,"auto-resize":``,onBlur:f},null,8,[`modelValue`]),E(`small`,ra,B(R(o)(`serviceConfigHealthCheck.commandHint`)),1)])):n(``,!0),E(`div`,ia,[E(`div`,aa,[t[18]||=E(`i`,{class:`pi pi-hourglass`},null,-1),E(`span`,null,B(R(o)(`serviceConfigHealthCheck.initialDelay`)),1)]),g(R(Te),{modelValue:c.value.initialDelay,"onUpdate:modelValue":t[6]||=e=>c.value.initialDelay=e,class:`config-card__input`,"use-grouping":!1,min:0,onBlur:f,onKeydown:I(y(f,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`]),t[19]||=E(`small`,{class:`config-card__hint`},`Wait before first health check (ms)`,-1)]),E(`div`,oa,[E(`div`,sa,[t[20]||=E(`i`,{class:`pi pi-clock`},null,-1),E(`span`,null,B(R(o)(`serviceConfigHealthCheck.interval`)),1)]),g(R(Te),{modelValue:c.value.interval,"onUpdate:modelValue":t[7]||=e=>c.value.interval=e,class:`config-card__input`,"use-grouping":!1,min:1e3,onBlur:f,onKeydown:I(y(f,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])]),E(`div`,ca,[E(`div`,la,[t[21]||=E(`i`,{class:`pi pi-stopwatch`},null,-1),E(`span`,null,B(R(o)(`serviceConfigHealthCheck.timeout`)),1)]),g(R(Te),{modelValue:c.value.timeout,"onUpdate:modelValue":t[8]||=e=>c.value.timeout=e,class:`config-card__input`,"use-grouping":!1,min:500,onBlur:f,onKeydown:I(y(f,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])]),E(`div`,ua,[E(`div`,da,[t[22]||=E(`i`,{class:`pi pi-replay`},null,-1),E(`span`,null,B(R(o)(`serviceConfigHealthCheck.retries`)),1)]),g(R(Te),{modelValue:c.value.retries,"onUpdate:modelValue":t[9]||=e=>c.value.retries=e,class:`config-card__input`,"use-grouping":!1,min:0,max:10,onBlur:f,onKeydown:I(y(f,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])])],64)):n(``,!0)]))}}),[[`__scopeId`,`data-v-63e32039`]]),pa={class:`config-shortcuts`},ma={key:0,class:`config-shortcuts__empty`},ha={class:`config-shortcuts__row`},ga={class:`config-shortcuts__field`},_a=[`for`],va={class:`config-shortcuts__field config-shortcuts__field--wide`},ya=[`for`],ba={class:`config-shortcuts__field`},xa=[`for`],Sa={class:`config-shortcuts__actions-cell`},Ca={class:`config-shortcuts__footer`},wa=T(f({__name:`ServiceConfigShortcuts`,props:{service:{}},emits:[`save`],setup(e,{emit:t}){let r=e,{t:i}=be(),a=t,o=M([...r.service.shortcuts??[]]),s=null;S(()=>r.service,e=>{s||(o.value=[...e.shortcuts??[]])});function c(){o.value=[...o.value,{id:Ie(),label:``,command:``,cwd:void 0}]}function l(e){o.value=o.value.filter((t,n)=>n!==e)}function u(e,t,n){o.value=o.value.map((r,i)=>i===e?{...r,[t]:n||void 0}:r)}function d(){s&&clearTimeout(s),s=setTimeout(()=>{a(`save`,o.value),s=null},150)}function f(e){l(e),d()}return(e,t)=>(F(),O(`div`,pa,[o.value.length===0?(F(),O(`div`,ma,[E(`p`,null,B(R(i)(`serviceConfigShortcuts.empty`)),1)])):n(``,!0),(F(!0),O(w,null,ie(o.value,(e,t)=>(F(),O(`div`,{key:e.id,class:`config-card`},[E(`div`,ha,[E(`div`,ga,[E(`label`,{class:`config-shortcuts__label`,for:`shortcut-label-${t}`},B(R(i)(`serviceConfigShortcuts.label`)),9,_a),g(R(j),{id:`shortcut-label-${t}`,"model-value":e.label,placeholder:R(i)(`serviceConfigShortcuts.labelPlaceholder`),class:`config-card__input`,"data-testid":`shortcut-label-input`,"onUpdate:modelValue":e=>u(t,`label`,e),onBlur:d,onKeydown:I(y(d,[`prevent`]),[`enter`])},null,8,[`id`,`model-value`,`placeholder`,`onUpdate:modelValue`,`onKeydown`])]),E(`div`,va,[E(`label`,{class:`config-shortcuts__label`,for:`shortcut-command-${t}`},B(R(i)(`serviceConfigShortcuts.command`)),9,ya),g(R(j),{id:`shortcut-command-${t}`,"model-value":e.command,placeholder:R(i)(`serviceConfigShortcuts.commandPlaceholder`),class:`config-card__input`,"data-testid":`shortcut-command-input`,"onUpdate:modelValue":e=>u(t,`command`,e),onBlur:d,onKeydown:I(y(d,[`prevent`]),[`enter`])},null,8,[`id`,`model-value`,`placeholder`,`onUpdate:modelValue`,`onKeydown`])]),E(`div`,ba,[E(`label`,{class:`config-shortcuts__label`,for:`shortcut-cwd-${t}`},B(R(i)(`serviceConfigShortcuts.workingDir`)),9,xa),g(R(j),{id:`shortcut-cwd-${t}`,"model-value":e.cwd??``,placeholder:R(i)(`serviceConfigShortcuts.cwdPlaceholder`),class:`config-card__input`,"onUpdate:modelValue":e=>u(t,`cwd`,e),onBlur:d,onKeydown:I(y(d,[`prevent`]),[`enter`])},null,8,[`id`,`model-value`,`placeholder`,`onUpdate:modelValue`,`onKeydown`])]),E(`div`,Sa,[g(R(L),{icon:`pi pi-trash`,severity:`danger`,text:``,rounded:``,size:`small`,onClick:e=>f(t)},null,8,[`onClick`])])])]))),128)),E(`div`,Ca,[g(R(L),{label:R(i)(`serviceConfigShortcuts.addShortcut`),icon:`pi pi-plus`,severity:`secondary`,outlined:``,size:`small`,"data-testid":`add-shortcut-btn`,onClick:c},null,8,[`label`])])]))}}),[[`__scopeId`,`data-v-d6ecb989`]]),Ta=Object.defineProperty,Ea=Object.getOwnPropertySymbols,Da=Object.prototype.hasOwnProperty,Oa=Object.prototype.propertyIsEnumerable,ka=(e,t,n)=>t in e?Ta(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Aa=(e,t)=>{for(var n in t||={})Da.call(t,n)&&ka(e,n,t[n]);if(Ea)for(var n of Ea(t))Oa.call(t,n)&&ka(e,n,t[n]);return e},ja=(e,t)=>{var n={};for(var r in e)Da.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&Ea)for(var r of Ea(e))t.indexOf(r)<0&&Oa.call(e,r)&&(n[r]=e[r]);return n},Ma=`[vue-draggable-plus]: `;function Na(e){console.warn(Ma+e)}function Pa(e){console.error(Ma+e)}function Fa(e,t,n){return n>=0&&n<e.length&&e.splice(n,0,e.splice(t,1)[0]),e}function Ia(e){return e.replace(/-(\w)/g,(e,t)=>t?t.toUpperCase():``)}function La(e){return Object.keys(e).reduce((t,n)=>(e[n]!==void 0&&(t[Ia(n)]=e[n]),t),{})}function Ra(e,t){return Array.isArray(e)&&e.splice(t,1),e}function za(e,t,n){return Array.isArray(e)&&e.splice(t,0,n),e}function Ba(e){return e===void 0}function Va(e){return typeof e==`string`}function Ha(e,t,n){let r=e.children[n];e.insertBefore(t,r)}function Ua(e){e.parentNode&&e.parentNode.removeChild(e)}function Wa(e,t=document){let n=null;return n=typeof t?.querySelector==`function`?(t?.querySelector)?.call(t,e):document.querySelector(e),n||Na(`Element not found: ${e}`),n}function Ga(e,t,n=null){return function(...r){return e.apply(n,r),t.apply(n,r)}}function Ka(e,t){let n=Aa({},e);return Object.keys(t).forEach(r=>{n[r]?n[r]=Ga(e[r],t[r]):n[r]=t[r]}),n}function qa(e){return e instanceof HTMLElement}function Ja(e,t){Object.keys(e).forEach(n=>{t(n,e[n])})}function Ya(e){return e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97)}var Xa=Object.assign;function Za(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function Qa(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t];t%2?Za(Object(n),!0).forEach(function(t){eo(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Za(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function $a(e){"@babel/helpers - typeof";return $a=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},$a(e)}function eo(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function to(){return to=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},to.apply(this,arguments)}function no(e,t){if(e==null)return{};var n={},r=Object.keys(e),i,a;for(a=0;a<r.length;a++)i=r[a],!(t.indexOf(i)>=0)&&(n[i]=e[i]);return n}function ro(e,t){if(e==null)return{};var n=no(e,t),r,i;if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i<a.length;i++)r=a[i],!(t.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var io=`1.15.2`;function ao(e){if(typeof window<`u`&&window.navigator)return!!navigator.userAgent.match(e)}var oo=ao(/(?:Trident.*rv[ :]?11\.|msie|iemobile|Windows Phone)/i),so=ao(/Edge/i),co=ao(/firefox/i),lo=ao(/safari/i)&&!ao(/chrome/i)&&!ao(/android/i),uo=ao(/iP(ad|od|hone)/i),fo=ao(/chrome/i)&&ao(/android/i),po={capture:!1,passive:!1};function U(e,t,n){e.addEventListener(t,n,!oo&&po)}function W(e,t,n){e.removeEventListener(t,n,!oo&&po)}function mo(e,t){if(t){if(t[0]===`>`&&(t=t.substring(1)),e)try{if(e.matches)return e.matches(t);if(e.msMatchesSelector)return e.msMatchesSelector(t);if(e.webkitMatchesSelector)return e.webkitMatchesSelector(t)}catch{return!1}return!1}}function ho(e){return e.host&&e!==document&&e.host.nodeType?e.host:e.parentNode}function go(e,t,n,r){if(e){n||=document;do{if(t!=null&&(t[0]===`>`?e.parentNode===n&&mo(e,t):mo(e,t))||r&&e===n)return e;if(e===n)break}while(e=ho(e))}return null}var _o=/\s+/g;function vo(e,t,n){e&&t&&(e.classList?e.classList[n?`add`:`remove`](t):e.className=((` `+e.className+` `).replace(_o,` `).replace(` `+t+` `,` `)+(n?` `+t:``)).replace(_o,` `))}function G(e,t,n){var r=e&&e.style;if(r){if(n===void 0)return document.defaultView&&document.defaultView.getComputedStyle?n=document.defaultView.getComputedStyle(e,``):e.currentStyle&&(n=e.currentStyle),t===void 0?n:n[t];!(t in r)&&t.indexOf(`webkit`)===-1&&(t=`-webkit-`+t),r[t]=n+(typeof n==`string`?``:`px`)}}function yo(e,t){var n=``;if(typeof e==`string`)n=e;else do{var r=G(e,`transform`);r&&r!==`none`&&(n=r+` `+n)}while(!t&&(e=e.parentNode));var i=window.DOMMatrix||window.WebKitCSSMatrix||window.CSSMatrix||window.MSCSSMatrix;return i&&new i(n)}function bo(e,t,n){if(e){var r=e.getElementsByTagName(t),i=0,a=r.length;if(n)for(;i<a;i++)n(r[i],i);return r}return[]}function xo(){return document.scrollingElement||document.documentElement}function K(e,t,n,r,i){if(!(!e.getBoundingClientRect&&e!==window)){var a,o,s,c,l,u,d;if(e!==window&&e.parentNode&&e!==xo()?(a=e.getBoundingClientRect(),o=a.top,s=a.left,c=a.bottom,l=a.right,u=a.height,d=a.width):(o=0,s=0,c=window.innerHeight,l=window.innerWidth,u=window.innerHeight,d=window.innerWidth),(t||n)&&e!==window&&(i||=e.parentNode,!oo))do if(i&&i.getBoundingClientRect&&(G(i,`transform`)!==`none`||n&&G(i,`position`)!==`static`)){var f=i.getBoundingClientRect();o-=f.top+parseInt(G(i,`border-top-width`)),s-=f.left+parseInt(G(i,`border-left-width`)),c=o+a.height,l=s+a.width;break}while(i=i.parentNode);if(r&&e!==window){var p=yo(i||e),m=p&&p.a,h=p&&p.d;p&&(o/=h,s/=m,d/=m,u/=h,c=o+u,l=s+d)}return{top:o,left:s,bottom:c,right:l,width:d,height:u}}}function So(e,t,n){for(var r=Oo(e,!0),i=K(e)[t];r;){var a=K(r)[n],o=void 0;if(o=i>=a,!o)return r;if(r===xo())break;r=Oo(r,!1)}return!1}function Co(e,t,n,r){for(var i=0,a=0,o=e.children;a<o.length;){if(o[a].style.display!==`none`&&o[a]!==Q.ghost&&(r||o[a]!==Q.dragged)&&go(o[a],n.draggable,e,!1)){if(i===t)return o[a];i++}a++}return null}function wo(e,t){for(var n=e.lastElementChild;n&&(n===Q.ghost||G(n,`display`)===`none`||t&&!mo(n,t));)n=n.previousElementSibling;return n||null}function To(e,t){var n=0;if(!e||!e.parentNode)return-1;for(;e=e.previousElementSibling;)e.nodeName.toUpperCase()!==`TEMPLATE`&&e!==Q.clone&&(!t||mo(e,t))&&n++;return n}function Eo(e){var t=0,n=0,r=xo();if(e)do{var i=yo(e),a=i.a,o=i.d;t+=e.scrollLeft*a,n+=e.scrollTop*o}while(e!==r&&(e=e.parentNode));return[t,n]}function Do(e,t){for(var n in e)if(e.hasOwnProperty(n)){for(var r in t)if(t.hasOwnProperty(r)&&t[r]===e[n][r])return Number(n)}return-1}function Oo(e,t){if(!e||!e.getBoundingClientRect)return xo();var n=e,r=!1;do if(n.clientWidth<n.scrollWidth||n.clientHeight<n.scrollHeight){var i=G(n);if(n.clientWidth<n.scrollWidth&&(i.overflowX==`auto`||i.overflowX==`scroll`)||n.clientHeight<n.scrollHeight&&(i.overflowY==`auto`||i.overflowY==`scroll`)){if(!n.getBoundingClientRect||n===document.body)return xo();if(r||t)return n;r=!0}}while(n=n.parentNode);return xo()}function ko(e,t){if(e&&t)for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);return e}function Ao(e,t){return Math.round(e.top)===Math.round(t.top)&&Math.round(e.left)===Math.round(t.left)&&Math.round(e.height)===Math.round(t.height)&&Math.round(e.width)===Math.round(t.width)}var jo;function Mo(e,t){return function(){if(!jo){var n=arguments,r=this;n.length===1?e.call(r,n[0]):e.apply(r,n),jo=setTimeout(function(){jo=void 0},t)}}}function No(){clearTimeout(jo),jo=void 0}function Po(e,t,n){e.scrollLeft+=t,e.scrollTop+=n}function Fo(e){var t=window.Polymer,n=window.jQuery||window.Zepto;return t&&t.dom?t.dom(e).cloneNode(!0):n?n(e).clone(!0)[0]:e.cloneNode(!0)}function Io(e,t,n){var r={};return Array.from(e.children).forEach(function(i){if(!(!go(i,t.draggable,e,!1)||i.animated||i===n)){var a=K(i);r.left=Math.min(r.left??1/0,a.left),r.top=Math.min(r.top??1/0,a.top),r.right=Math.max(r.right??-1/0,a.right),r.bottom=Math.max(r.bottom??-1/0,a.bottom)}}),r.width=r.right-r.left,r.height=r.bottom-r.top,r.x=r.left,r.y=r.top,r}var Lo=`Sortable`+new Date().getTime();function Ro(){var e=[],t;return{captureAnimationState:function(){e=[],this.options.animation&&[].slice.call(this.el.children).forEach(function(t){if(!(G(t,`display`)===`none`||t===Q.ghost)){e.push({target:t,rect:K(t)});var n=Qa({},e[e.length-1].rect);if(t.thisAnimationDuration){var r=yo(t,!0);r&&(n.top-=r.f,n.left-=r.e)}t.fromRect=n}})},addAnimationState:function(t){e.push(t)},removeAnimationState:function(t){e.splice(Do(e,{target:t}),1)},animateAll:function(n){var r=this;if(!this.options.animation){clearTimeout(t),typeof n==`function`&&n();return}var i=!1,a=0;e.forEach(function(e){var t=0,n=e.target,o=n.fromRect,s=K(n),c=n.prevFromRect,l=n.prevToRect,u=e.rect,d=yo(n,!0);d&&(s.top-=d.f,s.left-=d.e),n.toRect=s,n.thisAnimationDuration&&Ao(c,s)&&!Ao(o,s)&&(u.top-s.top)/(u.left-s.left)===(o.top-s.top)/(o.left-s.left)&&(t=Bo(u,c,l,r.options)),Ao(s,o)||(n.prevFromRect=o,n.prevToRect=s,t||=r.options.animation,r.animate(n,u,s,t)),t&&(i=!0,a=Math.max(a,t),clearTimeout(n.animationResetTimer),n.animationResetTimer=setTimeout(function(){n.animationTime=0,n.prevFromRect=null,n.fromRect=null,n.prevToRect=null,n.thisAnimationDuration=null},t),n.thisAnimationDuration=t)}),clearTimeout(t),i?t=setTimeout(function(){typeof n==`function`&&n()},a):typeof n==`function`&&n(),e=[]},animate:function(e,t,n,r){if(r){G(e,`transition`,``),G(e,`transform`,``);var i=yo(this.el),a=i&&i.a,o=i&&i.d,s=(t.left-n.left)/(a||1),c=(t.top-n.top)/(o||1);e.animatingX=!!s,e.animatingY=!!c,G(e,`transform`,`translate3d(`+s+`px,`+c+`px,0)`),this.forRepaintDummy=zo(e),G(e,`transition`,`transform `+r+`ms`+(this.options.easing?` `+this.options.easing:``)),G(e,`transform`,`translate3d(0,0,0)`),typeof e.animated==`number`&&clearTimeout(e.animated),e.animated=setTimeout(function(){G(e,`transition`,``),G(e,`transform`,``),e.animated=!1,e.animatingX=!1,e.animatingY=!1},r)}}}}function zo(e){return e.offsetWidth}function Bo(e,t,n,r){return Math.sqrt((t.top-e.top)**2+(t.left-e.left)**2)/Math.sqrt((t.top-n.top)**2+(t.left-n.left)**2)*r.animation}var Vo=[],Ho={initializeByDefault:!0},Uo={mount:function(e){for(var t in Ho)Ho.hasOwnProperty(t)&&!(t in e)&&(e[t]=Ho[t]);Vo.forEach(function(t){if(t.pluginName===e.pluginName)throw`Sortable: Cannot mount plugin ${e.pluginName} more than once`}),Vo.push(e)},pluginEvent:function(e,t,n){var r=this;this.eventCanceled=!1,n.cancel=function(){r.eventCanceled=!0};var i=e+`Global`;Vo.forEach(function(r){t[r.pluginName]&&(t[r.pluginName][i]&&t[r.pluginName][i](Qa({sortable:t},n)),t.options[r.pluginName]&&t[r.pluginName][e]&&t[r.pluginName][e](Qa({sortable:t},n)))})},initializePlugins:function(e,t,n,r){for(var i in Vo.forEach(function(r){var i=r.pluginName;if(!(!e.options[i]&&!r.initializeByDefault)){var a=new r(e,t,e.options);a.sortable=e,a.options=e.options,e[i]=a,to(n,a.defaults)}}),e.options)if(e.options.hasOwnProperty(i)){var a=this.modifyOption(e,i,e.options[i]);a!==void 0&&(e.options[i]=a)}},getEventProperties:function(e,t){var n={};return Vo.forEach(function(r){typeof r.eventProperties==`function`&&to(n,r.eventProperties.call(t[r.pluginName],e))}),n},modifyOption:function(e,t,n){var r;return Vo.forEach(function(i){e[i.pluginName]&&i.optionListeners&&typeof i.optionListeners[t]==`function`&&(r=i.optionListeners[t].call(e[i.pluginName],n))}),r}};function Wo(e){var t=e.sortable,n=e.rootEl,r=e.name,i=e.targetEl,a=e.cloneEl,o=e.toEl,s=e.fromEl,c=e.oldIndex,l=e.newIndex,u=e.oldDraggableIndex,d=e.newDraggableIndex,f=e.originalEvent,p=e.putSortable,m=e.extraEventProperties;if(t||=n&&n[Lo],t){var h,g=t.options,_=`on`+r.charAt(0).toUpperCase()+r.substr(1);window.CustomEvent&&!oo&&!so?h=new CustomEvent(r,{bubbles:!0,cancelable:!0}):(h=document.createEvent(`Event`),h.initEvent(r,!0,!0)),h.to=o||n,h.from=s||n,h.item=i||n,h.clone=a,h.oldIndex=c,h.newIndex=l,h.oldDraggableIndex=u,h.newDraggableIndex=d,h.originalEvent=f,h.pullMode=p?p.lastPutMode:void 0;var v=Qa(Qa({},m),Uo.getEventProperties(r,t));for(var y in v)h[y]=v[y];n&&n.dispatchEvent(h),g[_]&&g[_].call(t,h)}}var Go=[`evt`],Ko=function(e,t){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},r=n.evt,i=ro(n,Go);Uo.pluginEvent.bind(Q)(e,t,Qa({dragEl:q,parentEl:J,ghostEl:Y,rootEl:X,nextEl:Jo,lastDownEl:Yo,cloneEl:Z,cloneHidden:Xo,dragStarted:fs,putSortable:ns,activeSortable:Q.active,originalEvent:r,oldIndex:Zo,oldDraggableIndex:$o,newIndex:Qo,newDraggableIndex:es,hideGhostForTarget:js,unhideGhostForTarget:Ms,cloneNowHidden:function(){Xo=!0},cloneNowShown:function(){Xo=!1},dispatchSortableEvent:function(e){qo({sortable:t,name:e,originalEvent:r})}},i))};function qo(e){Wo(Qa({putSortable:ns,cloneEl:Z,targetEl:q,rootEl:X,oldIndex:Zo,oldDraggableIndex:$o,newIndex:Qo,newDraggableIndex:es},e))}var q,J,Y,X,Jo,Yo,Z,Xo,Zo,Qo,$o,es,ts,ns,rs=!1,is=!1,as=[],os,ss,cs,ls,us,ds,fs,ps,ms,hs=!1,gs=!1,_s,vs,ys=[],bs=!1,xs=[],Ss=typeof document<`u`,Cs=uo,ws=so||oo?`cssFloat`:`float`,Ts=Ss&&!fo&&!uo&&`draggable`in document.createElement(`div`),Es=function(){if(Ss){if(oo)return!1;var e=document.createElement(`x`);return e.style.cssText=`pointer-events:auto`,e.style.pointerEvents===`auto`}}(),Ds=function(e,t){var n=G(e),r=parseInt(n.width)-parseInt(n.paddingLeft)-parseInt(n.paddingRight)-parseInt(n.borderLeftWidth)-parseInt(n.borderRightWidth),i=Co(e,0,t),a=Co(e,1,t),o=i&&G(i),s=a&&G(a),c=o&&parseInt(o.marginLeft)+parseInt(o.marginRight)+K(i).width,l=s&&parseInt(s.marginLeft)+parseInt(s.marginRight)+K(a).width;if(n.display===`flex`)return n.flexDirection===`column`||n.flexDirection===`column-reverse`?`vertical`:`horizontal`;if(n.display===`grid`)return n.gridTemplateColumns.split(` `).length<=1?`vertical`:`horizontal`;if(i&&o.float&&o.float!==`none`){var u=o.float===`left`?`left`:`right`;return a&&(s.clear===`both`||s.clear===u)?`vertical`:`horizontal`}return i&&(o.display===`block`||o.display===`flex`||o.display===`table`||o.display===`grid`||c>=r&&n[ws]===`none`||a&&n[ws]===`none`&&c+l>r)?`vertical`:`horizontal`},Os=function(e,t,n){var r=n?e.left:e.top,i=n?e.right:e.bottom,a=n?e.width:e.height,o=n?t.left:t.top,s=n?t.right:t.bottom,c=n?t.width:t.height;return r===o||i===s||r+a/2===o+c/2},ks=function(e,t){var n;return as.some(function(r){var i=r[Lo].options.emptyInsertThreshold;if(!(!i||wo(r))){var a=K(r),o=e>=a.left-i&&e<=a.right+i,s=t>=a.top-i&&t<=a.bottom+i;if(o&&s)return n=r}}),n},As=function(e){function t(e,n){return function(r,i,a,o){var s=r.options.group.name&&i.options.group.name&&r.options.group.name===i.options.group.name;if(e==null&&(n||s))return!0;if(e==null||e===!1)return!1;if(n&&e===`clone`)return e;if(typeof e==`function`)return t(e(r,i,a,o),n)(r,i,a,o);var c=(n?r:i).options.group.name;return e===!0||typeof e==`string`&&e===c||e.join&&e.indexOf(c)>-1}}var n={},r=e.group;(!r||$a(r)!=`object`)&&(r={name:r}),n.name=r.name,n.checkPull=t(r.pull,!0),n.checkPut=t(r.put),n.revertClone=r.revertClone,e.group=n},js=function(){!Es&&Y&&G(Y,`display`,`none`)},Ms=function(){!Es&&Y&&G(Y,`display`,``)};Ss&&!fo&&document.addEventListener(`click`,function(e){if(is)return e.preventDefault(),e.stopPropagation&&e.stopPropagation(),e.stopImmediatePropagation&&e.stopImmediatePropagation(),is=!1,!1},!0);var Ns=function(e){if(q){e=e.touches?e.touches[0]:e;var t=ks(e.clientX,e.clientY);if(t){var n={};for(var r in e)e.hasOwnProperty(r)&&(n[r]=e[r]);n.target=n.rootEl=t,n.preventDefault=void 0,n.stopPropagation=void 0,t[Lo]._onDragOver(n)}}},Ps=function(e){q&&q.parentNode[Lo]._isOutsideThisEl(e.target)};function Q(e,t){if(!(e&&e.nodeType&&e.nodeType===1))throw`Sortable: \`el\` must be an HTMLElement, not ${{}.toString.call(e)}`;this.el=e,this.options=t=to({},t),e[Lo]=this;var n={group:null,sort:!0,disabled:!1,store:null,handle:null,draggable:/^[uo]l$/i.test(e.nodeName)?`>li`:`>*`,swapThreshold:1,invertSwap:!1,invertedSwapThreshold:null,removeCloneOnHide:!0,direction:function(){return Ds(e,this.options)},ghostClass:`sortable-ghost`,chosenClass:`sortable-chosen`,dragClass:`sortable-drag`,ignore:`a, img`,filter:null,preventOnFilter:!0,animation:0,easing:null,setData:function(e,t){e.setData(`Text`,t.textContent)},dropBubble:!1,dragoverBubble:!1,dataIdAttr:`data-id`,delay:0,delayOnTouchOnly:!1,touchStartThreshold:(Number.parseInt?Number:window).parseInt(window.devicePixelRatio,10)||1,forceFallback:!1,fallbackClass:`sortable-fallback`,fallbackOnBody:!1,fallbackTolerance:0,fallbackOffset:{x:0,y:0},supportPointer:Q.supportPointer!==!1&&`PointerEvent`in window&&!lo,emptyInsertThreshold:5};for(var r in Uo.initializePlugins(this,e,n),n)!(r in t)&&(t[r]=n[r]);for(var i in As(t),this)i.charAt(0)===`_`&&typeof this[i]==`function`&&(this[i]=this[i].bind(this));this.nativeDraggable=t.forceFallback?!1:Ts,this.nativeDraggable&&(this.options.touchStartThreshold=1),t.supportPointer?U(e,`pointerdown`,this._onTapStart):(U(e,`mousedown`,this._onTapStart),U(e,`touchstart`,this._onTapStart)),this.nativeDraggable&&(U(e,`dragover`,this),U(e,`dragenter`,this)),as.push(this.el),t.store&&t.store.get&&this.sort(t.store.get(this)||[]),to(this,Ro())}Q.prototype={constructor:Q,_isOutsideThisEl:function(e){!this.el.contains(e)&&e!==this.el&&(ps=null)},_getDirection:function(e,t){return typeof this.options.direction==`function`?this.options.direction.call(this,e,t,q):this.options.direction},_onTapStart:function(e){if(e.cancelable){var t=this,n=this.el,r=this.options,i=r.preventOnFilter,a=e.type,o=e.touches&&e.touches[0]||e.pointerType&&e.pointerType===`touch`&&e,s=(o||e).target,c=e.target.shadowRoot&&(e.path&&e.path[0]||e.composedPath&&e.composedPath()[0])||s,l=r.filter;if(Ws(n),!q&&!(/mousedown|pointerdown/.test(a)&&e.button!==0||r.disabled)&&!c.isContentEditable&&!(!this.nativeDraggable&&lo&&s&&s.tagName.toUpperCase()===`SELECT`)&&(s=go(s,r.draggable,n,!1),!(s&&s.animated)&&Yo!==s)){if(Zo=To(s),$o=To(s,r.draggable),typeof l==`function`){if(l.call(this,e,s,this)){qo({sortable:t,rootEl:c,name:`filter`,targetEl:s,toEl:n,fromEl:n}),Ko(`filter`,t,{evt:e}),i&&e.cancelable&&e.preventDefault();return}}else if(l&&(l=l.split(`,`).some(function(r){if(r=go(c,r.trim(),n,!1),r)return qo({sortable:t,rootEl:r,name:`filter`,targetEl:s,fromEl:n,toEl:n}),Ko(`filter`,t,{evt:e}),!0}),l)){i&&e.cancelable&&e.preventDefault();return}r.handle&&!go(c,r.handle,n,!1)||this._prepareDragStart(e,o,s)}}},_prepareDragStart:function(e,t,n){var r=this,i=r.el,a=r.options,o=i.ownerDocument,s;if(n&&!q&&n.parentNode===i){var c=K(n);if(X=i,q=n,J=q.parentNode,Jo=q.nextSibling,Yo=n,ts=a.group,Q.dragged=q,os={target:q,clientX:(t||e).clientX,clientY:(t||e).clientY},us=os.clientX-c.left,ds=os.clientY-c.top,this._lastX=(t||e).clientX,this._lastY=(t||e).clientY,q.style[`will-change`]=`all`,s=function(){if(Ko(`delayEnded`,r,{evt:e}),Q.eventCanceled){r._onDrop();return}r._disableDelayedDragEvents(),!co&&r.nativeDraggable&&(q.draggable=!0),r._triggerDragStart(e,t),qo({sortable:r,name:`choose`,originalEvent:e}),vo(q,a.chosenClass,!0)},a.ignore.split(`,`).forEach(function(e){bo(q,e.trim(),Ls)}),U(o,`dragover`,Ns),U(o,`mousemove`,Ns),U(o,`touchmove`,Ns),U(o,`mouseup`,r._onDrop),U(o,`touchend`,r._onDrop),U(o,`touchcancel`,r._onDrop),co&&this.nativeDraggable&&(this.options.touchStartThreshold=4,q.draggable=!0),Ko(`delayStart`,this,{evt:e}),a.delay&&(!a.delayOnTouchOnly||t)&&(!this.nativeDraggable||!(so||oo))){if(Q.eventCanceled){this._onDrop();return}U(o,`mouseup`,r._disableDelayedDrag),U(o,`touchend`,r._disableDelayedDrag),U(o,`touchcancel`,r._disableDelayedDrag),U(o,`mousemove`,r._delayedDragTouchMoveHandler),U(o,`touchmove`,r._delayedDragTouchMoveHandler),a.supportPointer&&U(o,`pointermove`,r._delayedDragTouchMoveHandler),r._dragStartTimer=setTimeout(s,a.delay)}else s()}},_delayedDragTouchMoveHandler:function(e){var t=e.touches?e.touches[0]:e;Math.max(Math.abs(t.clientX-this._lastX),Math.abs(t.clientY-this._lastY))>=Math.floor(this.options.touchStartThreshold/(this.nativeDraggable&&window.devicePixelRatio||1))&&this._disableDelayedDrag()},_disableDelayedDrag:function(){q&&Ls(q),clearTimeout(this._dragStartTimer),this._disableDelayedDragEvents()},_disableDelayedDragEvents:function(){var e=this.el.ownerDocument;W(e,`mouseup`,this._disableDelayedDrag),W(e,`touchend`,this._disableDelayedDrag),W(e,`touchcancel`,this._disableDelayedDrag),W(e,`mousemove`,this._delayedDragTouchMoveHandler),W(e,`touchmove`,this._delayedDragTouchMoveHandler),W(e,`pointermove`,this._delayedDragTouchMoveHandler)},_triggerDragStart:function(e,t){t||=e.pointerType==`touch`&&e,!this.nativeDraggable||t?this.options.supportPointer?U(document,`pointermove`,this._onTouchMove):t?U(document,`touchmove`,this._onTouchMove):U(document,`mousemove`,this._onTouchMove):(U(q,`dragend`,this),U(X,`dragstart`,this._onDragStart));try{document.selection?Gs(function(){document.selection.empty()}):window.getSelection().removeAllRanges()}catch{}},_dragStarted:function(e,t){if(rs=!1,X&&q){Ko(`dragStarted`,this,{evt:t}),this.nativeDraggable&&U(document,`dragover`,Ps);var n=this.options;!e&&vo(q,n.dragClass,!1),vo(q,n.ghostClass,!0),Q.active=this,e&&this._appendGhost(),qo({sortable:this,name:`start`,originalEvent:t})}else this._nulling()},_emulateDragOver:function(){if(ss){this._lastX=ss.clientX,this._lastY=ss.clientY,js();for(var e=document.elementFromPoint(ss.clientX,ss.clientY),t=e;e&&e.shadowRoot&&(e=e.shadowRoot.elementFromPoint(ss.clientX,ss.clientY),e!==t);)t=e;if(q.parentNode[Lo]._isOutsideThisEl(e),t)do{if(t[Lo]){var n=void 0;if(n=t[Lo]._onDragOver({clientX:ss.clientX,clientY:ss.clientY,target:e,rootEl:t}),n&&!this.options.dragoverBubble)break}e=t}while(t=t.parentNode);Ms()}},_onTouchMove:function(e){if(os){var t=this.options,n=t.fallbackTolerance,r=t.fallbackOffset,i=e.touches?e.touches[0]:e,a=Y&&yo(Y,!0),o=Y&&a&&a.a,s=Y&&a&&a.d,c=Cs&&vs&&Eo(vs),l=(i.clientX-os.clientX+r.x)/(o||1)+(c?c[0]-ys[0]:0)/(o||1),u=(i.clientY-os.clientY+r.y)/(s||1)+(c?c[1]-ys[1]:0)/(s||1);if(!Q.active&&!rs){if(n&&Math.max(Math.abs(i.clientX-this._lastX),Math.abs(i.clientY-this._lastY))<n)return;this._onDragStart(e,!0)}if(Y){a?(a.e+=l-(cs||0),a.f+=u-(ls||0)):a={a:1,b:0,c:0,d:1,e:l,f:u};var d=`matrix(${a.a},${a.b},${a.c},${a.d},${a.e},${a.f})`;G(Y,`webkitTransform`,d),G(Y,`mozTransform`,d),G(Y,`msTransform`,d),G(Y,`transform`,d),cs=l,ls=u,ss=i}e.cancelable&&e.preventDefault()}},_appendGhost:function(){if(!Y){var e=this.options.fallbackOnBody?document.body:X,t=K(q,!0,Cs,!0,e),n=this.options;if(Cs){for(vs=e;G(vs,`position`)===`static`&&G(vs,`transform`)===`none`&&vs!==document;)vs=vs.parentNode;vs!==document.body&&vs!==document.documentElement?(vs===document&&(vs=xo()),t.top+=vs.scrollTop,t.left+=vs.scrollLeft):vs=xo(),ys=Eo(vs)}Y=q.cloneNode(!0),vo(Y,n.ghostClass,!1),vo(Y,n.fallbackClass,!0),vo(Y,n.dragClass,!0),G(Y,`transition`,``),G(Y,`transform`,``),G(Y,`box-sizing`,`border-box`),G(Y,`margin`,0),G(Y,`top`,t.top),G(Y,`left`,t.left),G(Y,`width`,t.width),G(Y,`height`,t.height),G(Y,`opacity`,`0.8`),G(Y,`position`,Cs?`absolute`:`fixed`),G(Y,`zIndex`,`100000`),G(Y,`pointerEvents`,`none`),Q.ghost=Y,e.appendChild(Y),G(Y,`transform-origin`,us/parseInt(Y.style.width)*100+`% `+ds/parseInt(Y.style.height)*100+`%`)}},_onDragStart:function(e,t){var n=this,r=e.dataTransfer,i=n.options;if(Ko(`dragStart`,this,{evt:e}),Q.eventCanceled){this._onDrop();return}Ko(`setupClone`,this),Q.eventCanceled||(Z=Fo(q),Z.removeAttribute(`id`),Z.draggable=!1,Z.style[`will-change`]=``,this._hideClone(),vo(Z,this.options.chosenClass,!1),Q.clone=Z),n.cloneId=Gs(function(){Ko(`clone`,n),!Q.eventCanceled&&(n.options.removeCloneOnHide||X.insertBefore(Z,q),n._hideClone(),qo({sortable:n,name:`clone`}))}),!t&&vo(q,i.dragClass,!0),t?(is=!0,n._loopId=setInterval(n._emulateDragOver,50)):(W(document,`mouseup`,n._onDrop),W(document,`touchend`,n._onDrop),W(document,`touchcancel`,n._onDrop),r&&(r.effectAllowed=`move`,i.setData&&i.setData.call(n,r,q)),U(document,`drop`,n),G(q,`transform`,`translateZ(0)`)),rs=!0,n._dragStartId=Gs(n._dragStarted.bind(n,t,e)),U(document,`selectstart`,n),fs=!0,lo&&G(document.body,`user-select`,`none`)},_onDragOver:function(e){var t=this.el,n=e.target,r,i,a,o=this.options,s=o.group,c=Q.active,l=ts===s,u=o.sort,d=ns||c,f,p=this,m=!1;if(bs)return;function h(o,s){Ko(o,p,Qa({evt:e,isOwner:l,axis:f?`vertical`:`horizontal`,revert:a,dragRect:r,targetRect:i,canSort:u,fromSortable:d,target:n,completed:_,onMove:function(n,i){return Is(X,t,q,r,n,K(n),e,i)},changed:v},s))}function g(){h(`dragOverAnimationCapture`),p.captureAnimationState(),p!==d&&d.captureAnimationState()}function _(r){return h(`dragOverCompleted`,{insertion:r}),r&&(l?c._hideClone():c._showClone(p),p!==d&&(vo(q,ns?ns.options.ghostClass:c.options.ghostClass,!1),vo(q,o.ghostClass,!0)),ns!==p&&p!==Q.active?ns=p:p===Q.active&&ns&&(ns=null),d===p&&(p._ignoreWhileAnimating=n),p.animateAll(function(){h(`dragOverAnimationComplete`),p._ignoreWhileAnimating=null}),p!==d&&(d.animateAll(),d._ignoreWhileAnimating=null)),(n===q&&!q.animated||n===t&&!n.animated)&&(ps=null),!o.dragoverBubble&&!e.rootEl&&n!==document&&(q.parentNode[Lo]._isOutsideThisEl(e.target),!r&&Ns(e)),!o.dragoverBubble&&e.stopPropagation&&e.stopPropagation(),m=!0}function v(){Qo=To(q),es=To(q,o.draggable),qo({sortable:p,name:`change`,toEl:t,newIndex:Qo,newDraggableIndex:es,originalEvent:e})}if(e.preventDefault!==void 0&&e.cancelable&&e.preventDefault(),n=go(n,o.draggable,t,!0),h(`dragOver`),Q.eventCanceled)return m;if(q.contains(e.target)||n.animated&&n.animatingX&&n.animatingY||p._ignoreWhileAnimating===n)return _(!1);if(is=!1,c&&!o.disabled&&(l?u||(a=J!==X):ns===this||(this.lastPutMode=ts.checkPull(this,c,q,e))&&s.checkPut(this,c,q,e))){if(f=this._getDirection(e,n)===`vertical`,r=K(q),h(`dragOverValid`),Q.eventCanceled)return m;if(a)return J=X,g(),this._hideClone(),h(`revert`),Q.eventCanceled||(Jo?X.insertBefore(q,Jo):X.appendChild(q)),_(!0);var y=wo(t,o.draggable);if(!y||Bs(e,f,this)&&!y.animated){if(y===q)return _(!1);if(y&&t===e.target&&(n=y),n&&(i=K(n)),Is(X,t,q,r,n,i,e,!!n)!==!1)return g(),y&&y.nextSibling?t.insertBefore(q,y.nextSibling):t.appendChild(q),J=t,v(),_(!0)}else if(y&&zs(e,f,this)){var b=Co(t,0,o,!0);if(b===q)return _(!1);if(n=b,i=K(n),Is(X,t,q,r,n,i,e,!1)!==!1)return g(),t.insertBefore(q,b),J=t,v(),_(!0)}else if(n.parentNode===t){i=K(n);var x=0,S,C=q.parentNode!==t,w=!Os(q.animated&&q.toRect||r,n.animated&&n.toRect||i,f),T=f?`top`:`left`,E=So(n,`top`,`top`)||So(q,`top`,`top`),D=E?E.scrollTop:void 0;ps!==n&&(S=i[T],hs=!1,gs=!w&&o.invertSwap||C),x=Vs(e,n,i,f,w?1:o.swapThreshold,o.invertedSwapThreshold==null?o.swapThreshold:o.invertedSwapThreshold,gs,ps===n);var ee;if(x!==0){var O=To(q);do O-=x,ee=J.children[O];while(ee&&(G(ee,`display`)===`none`||ee===Y))}if(x===0||ee===n)return _(!1);ps=n,ms=x;var k=n.nextElementSibling,te=!1;te=x===1;var A=Is(X,t,q,r,n,i,e,te);if(A!==!1)return(A===1||A===-1)&&(te=A===1),bs=!0,setTimeout(Rs,30),g(),te&&!k?t.appendChild(q):n.parentNode.insertBefore(q,te?k:n),E&&Po(E,0,D-E.scrollTop),J=q.parentNode,S!==void 0&&!gs&&(_s=Math.abs(S-K(n)[T])),v(),_(!0)}if(t.contains(q))return _(!1)}return!1},_ignoreWhileAnimating:null,_offMoveEvents:function(){W(document,`mousemove`,this._onTouchMove),W(document,`touchmove`,this._onTouchMove),W(document,`pointermove`,this._onTouchMove),W(document,`dragover`,Ns),W(document,`mousemove`,Ns),W(document,`touchmove`,Ns)},_offUpEvents:function(){var e=this.el.ownerDocument;W(e,`mouseup`,this._onDrop),W(e,`touchend`,this._onDrop),W(e,`pointerup`,this._onDrop),W(e,`touchcancel`,this._onDrop),W(document,`selectstart`,this)},_onDrop:function(e){var t=this.el,n=this.options;if(Qo=To(q),es=To(q,n.draggable),Ko(`drop`,this,{evt:e}),J=q&&q.parentNode,Qo=To(q),es=To(q,n.draggable),Q.eventCanceled){this._nulling();return}rs=!1,gs=!1,hs=!1,clearInterval(this._loopId),clearTimeout(this._dragStartTimer),Ks(this.cloneId),Ks(this._dragStartId),this.nativeDraggable&&(W(document,`drop`,this),W(t,`dragstart`,this._onDragStart)),this._offMoveEvents(),this._offUpEvents(),lo&&G(document.body,`user-select`,``),G(q,`transform`,``),e&&(fs&&(e.cancelable&&e.preventDefault(),!n.dropBubble&&e.stopPropagation()),Y&&Y.parentNode&&Y.parentNode.removeChild(Y),(X===J||ns&&ns.lastPutMode!==`clone`)&&Z&&Z.parentNode&&Z.parentNode.removeChild(Z),q&&(this.nativeDraggable&&W(q,`dragend`,this),Ls(q),q.style[`will-change`]=``,fs&&!rs&&vo(q,ns?ns.options.ghostClass:this.options.ghostClass,!1),vo(q,this.options.chosenClass,!1),qo({sortable:this,name:`unchoose`,toEl:J,newIndex:null,newDraggableIndex:null,originalEvent:e}),X===J?Qo!==Zo&&Qo>=0&&(qo({sortable:this,name:`update`,toEl:J,originalEvent:e}),qo({sortable:this,name:`sort`,toEl:J,originalEvent:e})):(Qo>=0&&(qo({rootEl:J,name:`add`,toEl:J,fromEl:X,originalEvent:e}),qo({sortable:this,name:`remove`,toEl:J,originalEvent:e}),qo({rootEl:J,name:`sort`,toEl:J,fromEl:X,originalEvent:e}),qo({sortable:this,name:`sort`,toEl:J,originalEvent:e})),ns&&ns.save()),Q.active&&((Qo==null||Qo===-1)&&(Qo=Zo,es=$o),qo({sortable:this,name:`end`,toEl:J,originalEvent:e}),this.save()))),this._nulling()},_nulling:function(){Ko(`nulling`,this),X=q=J=Y=Jo=Z=Yo=Xo=os=ss=fs=Qo=es=Zo=$o=ps=ms=ns=ts=Q.dragged=Q.ghost=Q.clone=Q.active=null,xs.forEach(function(e){e.checked=!0}),xs.length=cs=ls=0},handleEvent:function(e){switch(e.type){case`drop`:case`dragend`:this._onDrop(e);break;case`dragenter`:case`dragover`:q&&(this._onDragOver(e),Fs(e));break;case`selectstart`:e.preventDefault();break}},toArray:function(){for(var e=[],t,n=this.el.children,r=0,i=n.length,a=this.options;r<i;r++)t=n[r],go(t,a.draggable,this.el,!1)&&e.push(t.getAttribute(a.dataIdAttr)||Us(t));return e},sort:function(e,t){var n={},r=this.el;this.toArray().forEach(function(e,t){var i=r.children[t];go(i,this.options.draggable,r,!1)&&(n[e]=i)},this),t&&this.captureAnimationState(),e.forEach(function(e){n[e]&&(r.removeChild(n[e]),r.appendChild(n[e]))}),t&&this.animateAll()},save:function(){var e=this.options.store;e&&e.set&&e.set(this)},closest:function(e,t){return go(e,t||this.options.draggable,this.el,!1)},option:function(e,t){var n=this.options;if(t===void 0)return n[e];var r=Uo.modifyOption(this,e,t);r===void 0?n[e]=t:n[e]=r,e===`group`&&As(n)},destroy:function(){Ko(`destroy`,this);var e=this.el;e[Lo]=null,W(e,`mousedown`,this._onTapStart),W(e,`touchstart`,this._onTapStart),W(e,`pointerdown`,this._onTapStart),this.nativeDraggable&&(W(e,`dragover`,this),W(e,`dragenter`,this)),Array.prototype.forEach.call(e.querySelectorAll(`[draggable]`),function(e){e.removeAttribute(`draggable`)}),this._onDrop(),this._disableDelayedDragEvents(),as.splice(as.indexOf(this.el),1),this.el=e=null},_hideClone:function(){if(!Xo){if(Ko(`hideClone`,this),Q.eventCanceled)return;G(Z,`display`,`none`),this.options.removeCloneOnHide&&Z.parentNode&&Z.parentNode.removeChild(Z),Xo=!0}},_showClone:function(e){if(e.lastPutMode!==`clone`){this._hideClone();return}if(Xo){if(Ko(`showClone`,this),Q.eventCanceled)return;q.parentNode==X&&!this.options.group.revertClone?X.insertBefore(Z,q):Jo?X.insertBefore(Z,Jo):X.appendChild(Z),this.options.group.revertClone&&this.animate(q,Z),G(Z,`display`,``),Xo=!1}}};function Fs(e){e.dataTransfer&&(e.dataTransfer.dropEffect=`move`),e.cancelable&&e.preventDefault()}function Is(e,t,n,r,i,a,o,s){var c,l=e[Lo],u=l.options.onMove,d;return window.CustomEvent&&!oo&&!so?c=new CustomEvent(`move`,{bubbles:!0,cancelable:!0}):(c=document.createEvent(`Event`),c.initEvent(`move`,!0,!0)),c.to=t,c.from=e,c.dragged=n,c.draggedRect=r,c.related=i||t,c.relatedRect=a||K(t),c.willInsertAfter=s,c.originalEvent=o,e.dispatchEvent(c),u&&(d=u.call(l,c,o)),d}function Ls(e){e.draggable=!1}function Rs(){bs=!1}function zs(e,t,n){var r=K(Co(n.el,0,n.options,!0)),i=Io(n.el,n.options,Y),a=10;return t?e.clientX<i.left-a||e.clientY<r.top&&e.clientX<r.right:e.clientY<i.top-a||e.clientY<r.bottom&&e.clientX<r.left}function Bs(e,t,n){var r=K(wo(n.el,n.options.draggable)),i=Io(n.el,n.options,Y),a=10;return t?e.clientX>i.right+a||e.clientY>r.bottom&&e.clientX>r.left:e.clientY>i.bottom+a||e.clientX>r.right&&e.clientY>r.top}function Vs(e,t,n,r,i,a,o,s){var c=r?e.clientY:e.clientX,l=r?n.height:n.width,u=r?n.top:n.left,d=r?n.bottom:n.right,f=!1;if(!o){if(s&&_s<l*i){if(!hs&&(ms===1?c>u+l*a/2:c<d-l*a/2)&&(hs=!0),hs)f=!0;else if(ms===1?c<u+_s:c>d-_s)return-ms}else if(c>u+l*(1-i)/2&&c<d-l*(1-i)/2)return Hs(t)}return f||=o,f&&(c<u+l*a/2||c>d-l*a/2)?c>u+l/2?1:-1:0}function Hs(e){return To(q)<To(e)?1:-1}function Us(e){for(var t=e.tagName+e.className+e.src+e.href+e.textContent,n=t.length,r=0;n--;)r+=t.charCodeAt(n);return r.toString(36)}function Ws(e){xs.length=0;for(var t=e.getElementsByTagName(`input`),n=t.length;n--;){var r=t[n];r.checked&&xs.push(r)}}function Gs(e){return setTimeout(e,0)}function Ks(e){return clearTimeout(e)}Ss&&U(document,`touchmove`,function(e){(Q.active||rs)&&e.cancelable&&e.preventDefault()}),Q.utils={on:U,off:W,css:G,find:bo,is:function(e,t){return!!go(e,t,e,!1)},extend:ko,throttle:Mo,closest:go,toggleClass:vo,clone:Fo,index:To,nextTick:Gs,cancelNextTick:Ks,detectDirection:Ds,getChild:Co},Q.get=function(e){return e[Lo]},Q.mount=function(){var e=[...arguments];e[0].constructor===Array&&(e=e[0]),e.forEach(function(e){if(!e.prototype||!e.prototype.constructor)throw`Sortable: Mounted plugin must be a constructor function, not ${{}.toString.call(e)}`;e.utils&&(Q.utils=Qa(Qa({},Q.utils),e.utils)),Uo.mount(e)})},Q.create=function(e,t){return new Q(e,t)},Q.version=io;var $=[],qs,Js,Ys=!1,Xs,Zs,Qs,$s;function ec(){function e(){for(var e in this.defaults={scroll:!0,forceAutoScrollFallback:!1,scrollSensitivity:30,scrollSpeed:10,bubbleScroll:!0},this)e.charAt(0)===`_`&&typeof this[e]==`function`&&(this[e]=this[e].bind(this))}return e.prototype={dragStarted:function(e){var t=e.originalEvent;this.sortable.nativeDraggable?U(document,`dragover`,this._handleAutoScroll):this.options.supportPointer?U(document,`pointermove`,this._handleFallbackAutoScroll):t.touches?U(document,`touchmove`,this._handleFallbackAutoScroll):U(document,`mousemove`,this._handleFallbackAutoScroll)},dragOverCompleted:function(e){var t=e.originalEvent;!this.options.dragOverBubble&&!t.rootEl&&this._handleAutoScroll(t)},drop:function(){this.sortable.nativeDraggable?W(document,`dragover`,this._handleAutoScroll):(W(document,`pointermove`,this._handleFallbackAutoScroll),W(document,`touchmove`,this._handleFallbackAutoScroll),W(document,`mousemove`,this._handleFallbackAutoScroll)),nc(),tc(),No()},nulling:function(){Qs=Js=qs=Ys=$s=Xs=Zs=null,$.length=0},_handleFallbackAutoScroll:function(e){this._handleAutoScroll(e,!0)},_handleAutoScroll:function(e,t){var n=this,r=(e.touches?e.touches[0]:e).clientX,i=(e.touches?e.touches[0]:e).clientY,a=document.elementFromPoint(r,i);if(Qs=e,t||this.options.forceAutoScrollFallback||so||oo||lo){rc(e,this.options,a,t);var o=Oo(a,!0);Ys&&(!$s||r!==Xs||i!==Zs)&&($s&&nc(),$s=setInterval(function(){var a=Oo(document.elementFromPoint(r,i),!0);a!==o&&(o=a,tc()),rc(e,n.options,a,t)},10),Xs=r,Zs=i)}else{if(!this.options.bubbleScroll||Oo(a,!0)===xo()){tc();return}rc(e,this.options,Oo(a,!1),!1)}}},to(e,{pluginName:`scroll`,initializeByDefault:!0})}function tc(){$.forEach(function(e){clearInterval(e.pid)}),$=[]}function nc(){clearInterval($s)}var rc=Mo(function(e,t,n,r){if(t.scroll){var i=(e.touches?e.touches[0]:e).clientX,a=(e.touches?e.touches[0]:e).clientY,o=t.scrollSensitivity,s=t.scrollSpeed,c=xo(),l=!1,u;Js!==n&&(Js=n,tc(),qs=t.scroll,u=t.scrollFn,qs===!0&&(qs=Oo(n,!0)));var d=0,f=qs;do{var p=f,m=K(p),h=m.top,g=m.bottom,_=m.left,v=m.right,y=m.width,b=m.height,x=void 0,S=void 0,C=p.scrollWidth,w=p.scrollHeight,T=G(p),E=p.scrollLeft,D=p.scrollTop;p===c?(x=y<C&&(T.overflowX===`auto`||T.overflowX===`scroll`||T.overflowX===`visible`),S=b<w&&(T.overflowY===`auto`||T.overflowY===`scroll`||T.overflowY===`visible`)):(x=y<C&&(T.overflowX===`auto`||T.overflowX===`scroll`),S=b<w&&(T.overflowY===`auto`||T.overflowY===`scroll`));var ee=x&&(Math.abs(v-i)<=o&&E+y<C)-(Math.abs(_-i)<=o&&!!E),O=S&&(Math.abs(g-a)<=o&&D+b<w)-(Math.abs(h-a)<=o&&!!D);if(!$[d])for(var k=0;k<=d;k++)$[k]||($[k]={});($[d].vx!=ee||$[d].vy!=O||$[d].el!==p)&&($[d].el=p,$[d].vx=ee,$[d].vy=O,clearInterval($[d].pid),(ee!=0||O!=0)&&(l=!0,$[d].pid=setInterval(function(){r&&this.layer===0&&Q.active._onTouchMove(Qs);var t=$[this.layer].vy?$[this.layer].vy*s:0,n=$[this.layer].vx?$[this.layer].vx*s:0;typeof u==`function`&&u.call(Q.dragged.parentNode[Lo],n,t,e,Qs,$[this.layer].el)!==`continue`||Po($[this.layer].el,n,t)}.bind({layer:d}),24))),d++}while(t.bubbleScroll&&f!==c&&(f=Oo(f,!1)));Ys=l}},30),ic=function(e){var t=e.originalEvent,n=e.putSortable,r=e.dragEl,i=e.activeSortable,a=e.dispatchSortableEvent,o=e.hideGhostForTarget,s=e.unhideGhostForTarget;if(t){var c=n||i;o();var l=t.changedTouches&&t.changedTouches.length?t.changedTouches[0]:t,u=document.elementFromPoint(l.clientX,l.clientY);s(),c&&!c.el.contains(u)&&(a(`spill`),this.onSpill({dragEl:r,putSortable:n}))}};function ac(){}ac.prototype={startIndex:null,dragStart:function(e){this.startIndex=e.oldDraggableIndex},onSpill:function(e){var t=e.dragEl,n=e.putSortable;this.sortable.captureAnimationState(),n&&n.captureAnimationState();var r=Co(this.sortable.el,this.startIndex,this.options);r?this.sortable.el.insertBefore(t,r):this.sortable.el.appendChild(t),this.sortable.animateAll(),n&&n.animateAll()},drop:ic},to(ac,{pluginName:`revertOnSpill`});function oc(){}oc.prototype={onSpill:function(e){var t=e.dragEl,n=e.putSortable||this.sortable;n.captureAnimationState(),t.parentNode&&t.parentNode.removeChild(t),n.animateAll()},drop:ic},to(oc,{pluginName:`removeOnSpill`}),Q.mount(new ec),Q.mount(oc,ac);function sc(e){return e==null?e:JSON.parse(JSON.stringify(e))}function cc(e){ne()&&ge(e)}function lc(e){ne()?ce(e):de(e)}var uc=null,dc=null;function fc(e=null,t=null){uc=e,dc=t}function pc(){return{data:uc,clonedData:dc}}var mc=Symbol(`cloneElement`);function hc(...e){let t=ne()?.proxy,n=null,r=e[0],[,i,a]=e;Array.isArray(R(i))||(a=i,i=null);let o=null,{immediate:s=!0,clone:c=sc,forceFallback:l,fallbackOnBody:u,customUpdate:d}=R(a)??{};function f(e){let{from:t,oldIndex:r,item:a}=e,o=Array.from(t.childNodes);n=l&&!u?o.slice(0,-1):o;let s=R(R(i)?.[r]),d=c(s);fc(s,d),a[mc]=d}function p(e){let t=e.item[mc];if(!Ba(t)){if(Ua(e.item),h(i)){let n=[...R(i)];i.value=za(n,e.newDraggableIndex,t);return}za(R(i),e.newDraggableIndex,t)}}function m(e){let{from:t,item:n,oldIndex:r,oldDraggableIndex:a,pullMode:o,clone:s}=e;if(Ha(t,n,r),o===`clone`){Ua(s);return}if(h(i)){let e=[...R(i)];i.value=Ra(e,a);return}Ra(R(i),a)}function g(e){if(d){d(e);return}let{from:t,item:n,oldIndex:r,oldDraggableIndex:a,newDraggableIndex:o}=e;if(Ua(n),Ha(t,n,r),h(i)){let e=[...R(i)];i.value=Fa(e,a,o);return}Fa(R(i),a,o)}function _(e){let{newIndex:t,oldIndex:r,from:i,to:a}=e,o=null,s=t===r&&i===a;try{if(s){let e=null;n?.some((t,r)=>{if(e&&n?.length!==a.childNodes.length)return i.insertBefore(e,t.nextSibling),!0;let o=a.childNodes[r];e=a?.replaceChild(t,o)})}}catch(e){o=e}finally{n=null}de(()=>{if(fc(),o)throw o})}let v={onUpdate:g,onStart:f,onAdd:p,onRemove:m,onEnd:_};function y(e){let n=R(r);return e||=Va(n)?Wa(n,t?.$el):n,e&&!qa(e)&&(e=e.$el),e||Pa(`Root element not found`),e}function b(){let e=R(a)??{},{immediate:t,clone:n}=e,r=ja(e,[`immediate`,`clone`]);return Ja(r,(e,t)=>{Ya(e)&&(r[e]=(e,...n)=>(Xa(e,pc()),t(e,...n)))}),Ka(i===null?{}:v,r)}let x=e=>{e=y(e),o&&C.destroy(),o=new Q(e,b())};S(()=>a,()=>{o&&Ja(b(),(e,t)=>{o?.option(e,t)})},{deep:!0});let C={option:(e,t)=>o?.option(e,t),destroy:()=>{o?.destroy(),o=null},save:()=>o?.save(),toArray:()=>o?.toArray(),closest:(...e)=>o?.closest(...e)};return lc(()=>{s&&x()}),cc(C.destroy),Aa({start:x,pause:()=>C?.option(`disabled`,!0),resume:()=>C?.option(`disabled`,!1)},C)}var gc=[`update`,`start`,`add`,`remove`,`choose`,`unchoose`,`end`,`sort`,`filter`,`clone`,`move`,`change`],_c=f({name:`VueDraggable`,model:{prop:`modelValue`,event:`update:modelValue`},props:[`clone`,`animation`,`ghostClass`,`group`,`sort`,`disabled`,`store`,`handle`,`draggable`,`swapThreshold`,`invertSwap`,`invertedSwapThreshold`,`removeCloneOnHide`,`direction`,`chosenClass`,`dragClass`,`ignore`,`filter`,`preventOnFilter`,`easing`,`setData`,`dropBubble`,`dragoverBubble`,`dataIdAttr`,`delay`,`delayOnTouchOnly`,`touchStartThreshold`,`forceFallback`,`fallbackClass`,`fallbackOnBody`,`fallbackTolerance`,`fallbackOffset`,`supportPointer`,`emptyInsertThreshold`,`scroll`,`forceAutoScrollFallback`,`scrollSensitivity`,`scrollSpeed`,`bubbleScroll`,`modelValue`,`tag`,`target`,`customUpdate`,...gc.map(e=>`on${e.replace(/^\S/,e=>e.toUpperCase())}`)],emits:[`update:modelValue`,...gc],setup(e,{slots:t,emit:n,expose:r,attrs:i}){let a=gc.reduce((e,t)=>{let r=`on${t.replace(/^\S/,e=>e.toUpperCase())}`;return e[r]=(...e)=>n(t,...e),e},{}),o=_(()=>{let t=ve(e),{modelValue:n}=t,r=ja(t,[`modelValue`]),o=Object.entries(r).reduce((e,[t,n])=>{let r=R(n);return r!==void 0&&(e[t]=r),e},{});return Aa(Aa({},a),La(Aa(Aa({},i),o)))}),s=_({get:()=>e.modelValue,set:e=>n(`update:modelValue`,e)}),c=M(),l=A(hc(e.target||c,s,o));return r(l),()=>N(e.tag||`div`,{ref:c},(t?.default)?.call(t,l))}}),vc={mounted:`mounted`,unmounted:`unmounted`};vc.mounted,vc.unmounted;var yc={class:`config-log-parsers`},bc={class:`config-card`},xc={class:`config-card__header`},Sc={class:`config-card__hint`},Cc={class:`config-card`},wc={class:`config-card__header`},Tc={class:`config-card__header-hint`},Ec={class:`config-log-parsers__order`},Dc={class:`config-log-parsers__name`},Oc={key:1,class:`config-log-parsers__empty`},kc={class:`config-log-parsers__add-row`},Ac={class:`config-log-parsers__footer`},jc=T(f({__name:`ServiceConfigLogs`,props:{service:{}},emits:[`save`],setup(e,{emit:t}){let i=e,a=t,o=ue(),{t:c}=be(),l=Ve(),u=M([...i.service.parserIds??[]]);S(()=>i.service,e=>{u.value=[...e.parserIds??[]]});let d=_(()=>[...l.parsers].filter(e=>e.enabled).sort((e,t)=>e.name.localeCompare(t.name))),f=_(()=>d.value.filter(e=>!u.value.includes(e.id))),m=M(u.value.map(e=>l.parsers.find(t=>t.id===e)).filter(e=>e!==void 0));S(u,e=>{let t=m.value.filter(t=>e.includes(t.id)),n=e.filter(e=>!t.find(t=>t.id===e)).map(e=>l.parsers.find(t=>t.id===e)).filter(e=>e!==void 0);m.value=[...t,...n]}),S(()=>l.parsers,()=>{m.value=u.value.map(e=>l.parsers.find(t=>t.id===e)).filter(e=>e!==void 0)});let h=M(null);function y(e){if(!e)return;let t=l.parsers.find(t=>t.id===e);t&&(u.value=[...u.value,e],m.value=[...m.value,t],h.value=null,C())}function b(e){u.value=u.value.filter(t=>t!==e),m.value=m.value.filter(t=>t.id!==e),C()}function x(){u.value=m.value.map(e=>e.id),C()}function C(){a(`save`,{parserIds:m.value.map(e=>e.id)})}return ce(()=>{l.fetchParsers()}),(e,t)=>(F(),O(`div`,yc,[E(`div`,bc,[E(`div`,xc,[t[3]||=E(`i`,{class:`pi pi-code`},null,-1),E(`span`,null,B(R(c)(`serviceConfigLogs.jsParsers`)),1)]),E(`small`,Sc,B(R(c)(`serviceConfigLogs.jsParsersHint`)),1)]),E(`div`,Cc,[E(`div`,wc,[t[4]||=E(`i`,{class:`pi pi-sort-alt`},null,-1),E(`span`,null,B(R(c)(`serviceConfigLogs.executionOrder`)),1),E(`small`,Tc,B(R(c)(`serviceConfigLogs.executionOrderHint`)),1)]),m.value.length>0?(F(),V(R(_c),{key:0,modelValue:m.value,"onUpdate:modelValue":t[0]||=e=>m.value=e,animation:150,handle:`.drag-handle`,class:`config-log-parsers__drag-list`,"data-testid":`log-parsers-drag-list`,onEnd:x},{default:v(()=>[(F(!0),O(w,null,ie(m.value,(e,r)=>(F(),O(`div`,{key:e.id,class:`config-log-parsers__drag-row`,"data-testid":`log-parsers-drag-row`},[t[5]||=E(`span`,{class:`drag-handle`,"data-testid":`drag-handle`},[E(`i`,{class:`pi pi-bars`})],-1),E(`span`,Ec,B(r+1),1),E(`span`,Dc,B(e.name),1),e.builtin?(F(),V(R(p),{key:0,severity:`secondary`,class:`config-log-parsers__builtin-badge`},{default:v(()=>[s(B(R(c)(`serviceConfigLogs.builtin`)),1)]),_:1})):n(``,!0),e.enabled?n(``,!0):(F(),V(R(p),{key:1,severity:`warn`,class:`config-log-parsers__disabled-badge`},{default:v(()=>[s(B(R(c)(`serviceConfigLogs.disabled`)),1)]),_:1})),g(R(L),{icon:`pi pi-trash`,severity:`danger`,text:``,size:`small`,class:`config-log-parsers__delete`,onClick:t=>b(e.id)},null,8,[`onClick`])]))),128))]),_:1},8,[`modelValue`])):n(``,!0),m.value.length===0?(F(),O(`div`,Oc,B(R(c)(`serviceConfigLogs.empty`)),1)):n(``,!0),E(`div`,kc,[g(R(r),{modelValue:h.value,"onUpdate:modelValue":[t[1]||=e=>h.value=e,y],options:f.value,"option-label":`name`,"option-value":`id`,placeholder:R(c)(`serviceConfigLogs.addParser`),class:`config-log-parsers__add-select`,loading:R(l).loading,disabled:f.value.length===0},{option:v(({option:e})=>[E(`span`,null,B(e.name),1),e.builtin?(F(),V(R(p),{key:0,severity:`secondary`,class:`ml-2`,style:{"font-size":`0.65rem`,padding:`0.1rem 0.35rem`}},{default:v(()=>[s(B(R(c)(`serviceConfigLogs.builtin`)),1)]),_:1})):n(``,!0)]),_:1},8,[`modelValue`,`options`,`placeholder`,`loading`,`disabled`])])]),E(`div`,Ac,[g(R(L),{label:R(c)(`serviceConfigLogs.manageParsers`),icon:`pi pi-cog`,severity:`secondary`,outlined:``,size:`small`,onClick:t[2]||=e=>R(o).push({name:`settings`,query:{section:`parsers`}})},null,8,[`label`])])]))}}),[[`__scopeId`,`data-v-2a8eb0c6`]]),Mc={class:`config-log-sources`},Nc={class:`config-card`},Pc={class:`config-card__header`},Fc={class:`config-card__hint`},Ic={key:0,class:`config-card config-card--list`},Lc={class:`source-row__info`},Rc={class:`source-row__type`},zc={class:`source-row__label`},Bc={class:`source-row__actions`},Vc={key:1,class:`config-log-sources__empty`},Hc={class:`config-log-sources__footer`},Uc={class:`dialog-form`},Wc={class:`dialog-form__field`},Gc={for:`lsrc-type`,class:`dialog-form__label`},Kc={class:`dialog-form__field`},qc={for:`lsrc-path-file`,class:`dialog-form__label`},Jc={class:`dialog-form__field`},Yc={for:`lsrc-encoding-file`,class:`dialog-form__label`},Xc={class:`dialog-form__field dialog-form__field--row`},Zc={for:`lsrc-startFromEnd-file`,class:`dialog-form__label`},Qc={class:`dialog-form__field dialog-form__field--row`},$c={for:`lsrc-createIfNotExists-file`,class:`dialog-form__label`},el={class:`dialog-form__field`},tl={for:`lsrc-connectionString-mongo`,class:`dialog-form__label`},nl={class:`dialog-form__row`},rl={class:`dialog-form__field`},il={class:`dialog-form__field`},al={class:`dialog-form__row`},ol={class:`dialog-form__field`},sl={class:`dialog-form__field`},cl={class:`dialog-form__field`},ll={class:`dialog-form__row`},ul={class:`dialog-form__field dialog-form__field--grow`},dl={class:`dialog-form__field dialog-form__field--port`},fl={class:`dialog-form__row`},pl={class:`dialog-form__field`},ml={class:`dialog-form__field`},hl={class:`dialog-form__row`},gl={class:`dialog-form__field`},_l={class:`dialog-form__field`},vl={class:`dialog-form__row`},yl={class:`dialog-form__field`},bl={class:`dialog-form__field`},xl={class:`dialog-form__row`},Sl={class:`dialog-form__field`},Cl={class:`dialog-form__field`},wl={class:`dialog-form__field`},Tl={key:3,class:`dialog-form__hint-block`},El=T(f({__name:`ServiceConfigLogSources`,props:{service:{}},emits:[`save`],setup(e,{emit:t}){let{t:i}=be(),a=e,o=t,c=[{label:`Console (stdout/stderr)`,value:`console`,icon:`pi-terminal`},{label:`File`,value:`file`,icon:`pi-file`},{label:`MongoDB`,value:`mongo`,icon:`pi-database`},{label:`MySQL`,value:`mysql`,icon:`pi-database`}];function l(e){return e===`console`?{type:`console`}:e===`file`?{type:`file`,path:``,encoding:`utf-8`,startFromEnd:!0,createIfNotExists:!1}:e===`mongo`?{type:`mongo`,connectionString:``,database:``,collection:``,timestampField:`timestamp`,messageField:`message`}:{type:`mysql`,host:`localhost`,port:3306,user:``,password:``,database:``,table:``,timestampColumn:`created_at`,messageColumn:`message`,pollIntervalMs:2e3}}let d=M([...a.service.logSources??[]]);S(()=>a.service.logSources,e=>{d.value=[...e??[]]});let f=M(!1),p=M(null),m=M(l(`console`));function h(){p.value=null,m.value=l(`file`),f.value=!0}function _(e){p.value=e,m.value={...d.value[e]},f.value=!0}function y(e){m.value=l(e)}function b(){p.value===null?d.value=[...d.value,{...m.value}]:d.value=d.value.map((e,t)=>t===p.value?{...m.value}:e),f.value=!1,o(`save`,{logSources:d.value})}function x(e){d.value=d.value.filter((t,n)=>n!==e),o(`save`,{logSources:d.value})}function C(e){return e.type===`console`?`Console`:e.type===`file`?e.path||`(no path)`:e.type===`mongo`?e.database?`mongo/${e.database}/${e.collection}`:`(not configured)`:e.type===`mysql`?e.database?`mysql/${e.host}/${e.database}/${e.table}`:`(not configured)`:e.type}function T(e){return e===`console`?`pi-terminal`:e===`file`?`pi-file`:`pi-database`}return(e,t)=>(F(),O(`div`,Mc,[E(`div`,Nc,[E(`div`,Pc,[t[23]||=E(`i`,{class:`pi pi-inbox`},null,-1),E(`span`,null,B(R(i)(`serviceConfigLogSources.title`)),1)]),E(`small`,Fc,B(R(i)(`serviceConfigLogSources.hint`)),1)]),d.value.length>0?(F(),O(`div`,Ic,[(F(!0),O(w,null,ie(d.value,(e,t)=>(F(),O(`div`,{key:t,class:`source-row`},[E(`i`,{class:u(`pi ${T(e.type)} source-row__icon`)},null,2),E(`div`,Lc,[E(`span`,Rc,B(e.type),1),E(`span`,zc,B(C(e)),1)]),E(`div`,Bc,[g(R(L),{icon:`pi pi-pencil`,text:``,size:`small`,severity:`secondary`,onClick:e=>_(t)},null,8,[`onClick`]),g(R(L),{icon:`pi pi-trash`,text:``,size:`small`,severity:`danger`,onClick:e=>x(t)},null,8,[`onClick`])])]))),128))])):(F(),O(`div`,Vc,[t[24]||=E(`i`,{class:`pi pi-inbox config-log-sources__empty-icon`},null,-1),E(`p`,null,B(R(i)(`serviceConfigLogSources.empty`)),1),E(`small`,null,B(R(i)(`serviceConfigLogSources.emptyHint`)),1)])),E(`div`,Hc,[g(R(L),{label:R(i)(`serviceConfigLogSources.addSource`),icon:`pi pi-plus`,size:`small`,onClick:h},null,8,[`label`])]),g(R(le),{visible:f.value,"onUpdate:visible":t[22]||=e=>f.value=e,header:p.value===null?R(i)(`serviceConfigLogSources.addDialog`):R(i)(`serviceConfigLogSources.editDialog`),modal:``,style:{width:`520px`}},{footer:v(()=>[g(R(L),{label:R(i)(`serviceConfigLogSources.cancel`),severity:`secondary`,outlined:``,onClick:t[21]||=e=>f.value=!1},null,8,[`label`]),g(R(L),{label:p.value===null?R(i)(`serviceConfigLogSources.add`):R(i)(`serviceConfigLogSources.save`),icon:`pi pi-check`,onClick:b},null,8,[`label`])]),default:v(()=>[E(`div`,Uc,[E(`div`,Wc,[E(`label`,Gc,B(R(i)(`serviceConfigLogSources.type`)),1),g(R(r),{"input-id":`lsrc-type`,"model-value":m.value.type,options:c,"option-label":`label`,"option-value":`value`,class:`dialog-form__input`,"onUpdate:modelValue":y},null,8,[`model-value`])]),m.value.type===`file`?(F(),O(w,{key:0},[E(`div`,Kc,[E(`label`,qc,[s(B(R(i)(`serviceConfigLogSources.path`))+` `,1),t[25]||=E(`span`,{class:`dialog-form__required`},`*`,-1)]),g(R(j),{id:`lsrc-path-file`,modelValue:m.value.path,"onUpdate:modelValue":t[0]||=e=>m.value.path=e,class:`dialog-form__input`,placeholder:`/var/log/app.log`},null,8,[`modelValue`])]),E(`div`,Jc,[E(`label`,Yc,B(R(i)(`serviceConfigLogSources.encoding`)),1),g(R(j),{id:`lsrc-encoding-file`,modelValue:m.value.encoding,"onUpdate:modelValue":t[1]||=e=>m.value.encoding=e,class:`dialog-form__input`,placeholder:`utf-8`},null,8,[`modelValue`])]),E(`div`,Xc,[E(`label`,Zc,B(R(i)(`serviceConfigLogSources.startFromEnd`)),1),g(R(Oe),{"input-id":`lsrc-startFromEnd-file`,modelValue:m.value.startFromEnd,"onUpdate:modelValue":t[2]||=e=>m.value.startFromEnd=e},null,8,[`modelValue`])]),E(`div`,Qc,[E(`label`,$c,B(R(i)(`serviceConfigLogSources.createIfNotExists`)),1),g(R(Oe),{"input-id":`lsrc-createIfNotExists-file`,modelValue:m.value.createIfNotExists,"onUpdate:modelValue":t[3]||=e=>m.value.createIfNotExists=e},null,8,[`modelValue`])])],64)):m.value.type===`mongo`?(F(),O(w,{key:1},[E(`div`,el,[E(`label`,tl,[s(B(R(i)(`serviceConfigLogSources.connectionString`))+` `,1),t[26]||=E(`span`,{class:`dialog-form__required`},`*`,-1)]),g(R(j),{id:`lsrc-connectionString-mongo`,modelValue:m.value.connectionString,"onUpdate:modelValue":t[4]||=e=>m.value.connectionString=e,class:`dialog-form__input`,placeholder:`mongodb://user:pass@host:27017`,type:`password`,autocomplete:`off`},null,8,[`modelValue`])]),E(`div`,nl,[E(`div`,rl,[t[27]||=E(`label`,{for:`lsrc-database-mongo`,class:`dialog-form__label`},[s(`Database `),E(`span`,{class:`dialog-form__required`},`*`)],-1),g(R(j),{id:`lsrc-database-mongo`,modelValue:m.value.database,"onUpdate:modelValue":t[5]||=e=>m.value.database=e,class:`dialog-form__input`,placeholder:`mydb`},null,8,[`modelValue`])]),E(`div`,il,[t[28]||=E(`label`,{for:`lsrc-collection-mongo`,class:`dialog-form__label`},[s(`Collection `),E(`span`,{class:`dialog-form__required`},`*`)],-1),g(R(j),{id:`lsrc-collection-mongo`,modelValue:m.value.collection,"onUpdate:modelValue":t[6]||=e=>m.value.collection=e,class:`dialog-form__input`,placeholder:`logs`},null,8,[`modelValue`])])]),E(`div`,al,[E(`div`,ol,[t[29]||=E(`label`,{for:`lsrc-timestampField-mongo`,class:`dialog-form__label`},`Timestamp field`,-1),g(R(j),{id:`lsrc-timestampField-mongo`,modelValue:m.value.timestampField,"onUpdate:modelValue":t[7]||=e=>m.value.timestampField=e,class:`dialog-form__input`,placeholder:`timestamp`},null,8,[`modelValue`])]),E(`div`,sl,[t[30]||=E(`label`,{for:`lsrc-messageField-mongo`,class:`dialog-form__label`},`Message field`,-1),g(R(j),{id:`lsrc-messageField-mongo`,modelValue:m.value.messageField,"onUpdate:modelValue":t[8]||=e=>m.value.messageField=e,class:`dialog-form__input`,placeholder:`message`},null,8,[`modelValue`])])]),E(`div`,cl,[t[31]||=E(`label`,{for:`lsrc-levelField-mongo`,class:`dialog-form__label`},[s(`Level field `),E(`span`,{class:`dialog-form__hint`},`(optional)`)],-1),g(R(j),{id:`lsrc-levelField-mongo`,modelValue:m.value.levelField,"onUpdate:modelValue":t[9]||=e=>m.value.levelField=e,class:`dialog-form__input`,placeholder:`level`},null,8,[`modelValue`])])],64)):m.value.type===`mysql`?(F(),O(w,{key:2},[E(`div`,ll,[E(`div`,ul,[t[32]||=E(`label`,{for:`lsrc-host-mysql`,class:`dialog-form__label`},[s(`Host `),E(`span`,{class:`dialog-form__required`},`*`)],-1),g(R(j),{id:`lsrc-host-mysql`,modelValue:m.value.host,"onUpdate:modelValue":t[10]||=e=>m.value.host=e,class:`dialog-form__input`,placeholder:`localhost`},null,8,[`modelValue`])]),E(`div`,dl,[t[33]||=E(`label`,{for:`lsrc-port-mysql`,class:`dialog-form__label`},`Port`,-1),g(R(Te),{"input-id":`lsrc-port-mysql`,modelValue:m.value.port,"onUpdate:modelValue":t[11]||=e=>m.value.port=e,min:1,max:65535,class:`dialog-form__input`},null,8,[`modelValue`])])]),E(`div`,fl,[E(`div`,pl,[t[34]||=E(`label`,{for:`lsrc-user-mysql`,class:`dialog-form__label`},[s(`User `),E(`span`,{class:`dialog-form__required`},`*`)],-1),g(R(j),{id:`lsrc-user-mysql`,modelValue:m.value.user,"onUpdate:modelValue":t[12]||=e=>m.value.user=e,class:`dialog-form__input`,placeholder:`root`},null,8,[`modelValue`])]),E(`div`,ml,[t[35]||=E(`label`,{for:`lsrc-password-mysql`,class:`dialog-form__label`},`Password`,-1),g(R(j),{id:`lsrc-password-mysql`,modelValue:m.value.password,"onUpdate:modelValue":t[13]||=e=>m.value.password=e,class:`dialog-form__input`,type:`password`,autocomplete:`new-password`},null,8,[`modelValue`])])]),E(`div`,hl,[E(`div`,gl,[t[36]||=E(`label`,{for:`lsrc-database-mysql`,class:`dialog-form__label`},[s(`Database `),E(`span`,{class:`dialog-form__required`},`*`)],-1),g(R(j),{id:`lsrc-database-mysql`,modelValue:m.value.database,"onUpdate:modelValue":t[14]||=e=>m.value.database=e,class:`dialog-form__input`,placeholder:`app_db`},null,8,[`modelValue`])]),E(`div`,_l,[t[37]||=E(`label`,{for:`lsrc-table-mysql`,class:`dialog-form__label`},[s(`Table `),E(`span`,{class:`dialog-form__required`},`*`)],-1),g(R(j),{id:`lsrc-table-mysql`,modelValue:m.value.table,"onUpdate:modelValue":t[15]||=e=>m.value.table=e,class:`dialog-form__input`,placeholder:`logs`},null,8,[`modelValue`])])]),E(`div`,vl,[E(`div`,yl,[t[38]||=E(`label`,{for:`lsrc-timestampColumn-mysql`,class:`dialog-form__label`},`Timestamp column`,-1),g(R(j),{id:`lsrc-timestampColumn-mysql`,modelValue:m.value.timestampColumn,"onUpdate:modelValue":t[16]||=e=>m.value.timestampColumn=e,class:`dialog-form__input`,placeholder:`created_at`},null,8,[`modelValue`])]),E(`div`,bl,[t[39]||=E(`label`,{for:`lsrc-messageColumn-mysql`,class:`dialog-form__label`},`Message column`,-1),g(R(j),{id:`lsrc-messageColumn-mysql`,modelValue:m.value.messageColumn,"onUpdate:modelValue":t[17]||=e=>m.value.messageColumn=e,class:`dialog-form__input`,placeholder:`message`},null,8,[`modelValue`])])]),E(`div`,xl,[E(`div`,Sl,[t[40]||=E(`label`,{for:`lsrc-levelColumn-mysql`,class:`dialog-form__label`},[s(`Level column `),E(`span`,{class:`dialog-form__hint`},`(optional)`)],-1),g(R(j),{id:`lsrc-levelColumn-mysql`,modelValue:m.value.levelColumn,"onUpdate:modelValue":t[18]||=e=>m.value.levelColumn=e,class:`dialog-form__input`,placeholder:`level`},null,8,[`modelValue`])]),E(`div`,Cl,[t[41]||=E(`label`,{for:`lsrc-pollIntervalMs-mysql`,class:`dialog-form__label`},`Poll interval (ms)`,-1),g(R(Te),{"input-id":`lsrc-pollIntervalMs-mysql`,modelValue:m.value.pollIntervalMs,"onUpdate:modelValue":t[19]||=e=>m.value.pollIntervalMs=e,min:500,max:6e4,class:`dialog-form__input`},null,8,[`modelValue`])])]),E(`div`,wl,[t[42]||=E(`label`,{for:`lsrc-query-mysql`,class:`dialog-form__label`},[s(`Custom query `),E(`span`,{class:`dialog-form__hint`},[s(`(optional, must include `),E(`code`,null,`WHERE … > ?`),s(`)`)])],-1),g(R(j),{id:`lsrc-query-mysql`,modelValue:m.value.query,"onUpdate:modelValue":t[20]||=e=>m.value.query=e,class:`dialog-form__input`,placeholder:`SELECT * FROM logs WHERE created_at > ? ORDER BY id ASC`},null,8,[`modelValue`])])],64)):m.value.type===`console`?(F(),O(`small`,Tl,`The console source captures stdout/stderr and is always active. Adding it here has no effect unless you want to track it explicitly.`)):n(``,!0)])]),_:1},8,[`visible`,`header`])]))}}),[[`__scopeId`,`data-v-1ceb461a`]]),Dl={class:`config-traefik`},Ol={class:`traefik-entry__fields`},kl=T(f({__name:`ServiceConfigTraefik`,props:{service:{}},emits:[`save`],setup(e,{emit:t}){let r=e,i=t,a=M([...r.service.localUrls??[]]),o=M(null);ce(async()=>{r.service.agentId&&(o.value=(await fe.settings.getAgentTraefikConfig.query({agentId:r.service.agentId})).enabled)});let c=null;S(()=>r.service,e=>{c||(a.value=[...e.localUrls??[]])});function l(){a.value=[...a.value,{url:``,port:3e3}]}function u(e){a.value=a.value.filter((t,n)=>n!==e),f()}function d(e,t,n){a.value=a.value.map((r,i)=>i===e?{...r,[t]:n}:r)}function f(){c&&clearTimeout(c),c=setTimeout(()=>{i(`save`,{localUrls:a.value.filter(e=>e.url.trim())}),c=null},150)}return(e,t)=>(F(),O(`div`,Dl,[o.value===!1?(F(),V(R(De),{key:0,severity:`warn`,closable:!1},{default:v(()=>[t[1]||=s(` Traefik n'est pas activé. Configurez-le dans `,-1),g(R(P),{to:`/settings`},{default:v(()=>[...t[0]||=[s(`Paramètres → Traefik`,-1)]]),_:1}),t[2]||=s(` pour que ces URLs soient actives. `,-1)]),_:1})):n(``,!0),(F(!0),O(w,null,ie(a.value,(e,t)=>(F(),O(`div`,{key:t,class:`traefik-entry`},[E(`div`,Ol,[g(R(j),{"model-value":e.url,class:`traefik-entry__url`,placeholder:`mon-app.local.mondomaine.com`,"onUpdate:modelValue":e=>d(t,`url`,e),onBlur:f,onKeydown:I(y(f,[`prevent`]),[`enter`])},null,8,[`model-value`,`onUpdate:modelValue`,`onKeydown`]),g(R(Te),{"model-value":e.port,class:`traefik-entry__port`,min:1,max:65535,"use-grouping":!1,placeholder:`3000`,"onUpdate:modelValue":e=>{d(t,`port`,e??3e3),f()}},null,8,[`model-value`,`onUpdate:modelValue`]),g(R(L),{icon:`pi pi-trash`,severity:`danger`,text:``,size:`small`,onClick:e=>u(t)},null,8,[`onClick`])])]))),128)),g(R(L),{icon:`pi pi-plus`,label:`Ajouter une URL`,size:`small`,outlined:``,onClick:l})]))}}),[[`__scopeId`,`data-v-f22ba351`]]),Al={class:`config-view`,"data-testid":`config-view`},jl={class:`config-view__header`},Ml={class:`config-view__title`},Nl={class:`config-view__actions`},Pl=T(f({__name:`ServiceConfigView`,props:{service:{},projectId:{}},emits:[`remove-service`],setup(e,{emit:t}){let n=e,r=t,{t:i}=be(),a=ee(),o=c(),{isDebug:s}=Yt(),l=he(),u=ue(),d=[`general`,`commands`,`shortcuts`,`env`,`health`,`log-parsers`,`log-sources`,`traefik`],f=_(()=>{let e=l.query.configTab;return d.includes(e)?e:`general`});function p(e){u.replace({query:{...l.query,configTab:e}})}let m=_(()=>o.projects.find(e=>e.id===n.projectId)?.activeEnvironmentId);async function h(e,t){await t()?s.value&&console.debug(`[autosave] ${e} saved`):console.error(`[autosave] ${e} failed:`,a.error??`Save failed`)}async function y(e){await h(`General`,()=>a.update(n.service.id,e))}async function b(e){await h(`Commands`,()=>a.update(n.service.id,e))}async function x(e){await h(`Health check`,()=>a.update(n.service.id,{healthCheck:e??null}))}async function S(e){await h(`Shortcuts`,()=>a.update(n.service.id,{shortcuts:e}))}async function C(e){await h(`Docker`,()=>a.update(n.service.id,{dockerConfig:e}))}async function w(e){await h(`Log parsers`,()=>a.update(n.service.id,e))}async function T(e){await h(`Log sources`,()=>a.update(n.service.id,e))}async function D(e){await h(`Traefik`,()=>a.update(n.service.id,e))}function k(){r(`remove-service`,n.service.id)}return(t,n)=>(F(),O(`div`,Al,[E(`div`,jl,[E(`h2`,Ml,B(R(i)(`serviceConfigView.title`)),1),E(`div`,Nl,[g(R(L),{label:R(i)(`serviceConfigView.remove`),icon:`pi pi-trash`,severity:`danger`,size:`small`,outlined:``,onClick:k},null,8,[`label`])])]),g(R(Ae),{value:f.value,class:`config-view__tabs`,"onUpdate:value":p},{default:v(()=>[g(R(je),null,{default:v(()=>[g(R(H),{value:`general`,"data-testid":`tab-config`},{default:v(()=>[n[0]||=E(`i`,{class:`pi pi-cog tab-icon`},null,-1),E(`span`,null,B(R(i)(`serviceConfigView.tabGeneral`)),1)]),_:1}),g(R(H),{value:`commands`,"data-testid":`tab-commands`},{default:v(()=>[n[1]||=E(`i`,{class:`pi pi-code tab-icon`},null,-1),E(`span`,null,B(R(i)(`serviceConfigView.tabCommands`)),1)]),_:1}),g(R(H),{value:`shortcuts`,"data-testid":`tab-shortcuts`},{default:v(()=>[n[2]||=E(`i`,{class:`pi pi-bolt tab-icon`},null,-1),E(`span`,null,B(R(i)(`serviceConfigView.tabShortcuts`)),1)]),_:1}),g(R(H),{value:`env`,"data-testid":`tab-env`},{default:v(()=>[n[3]||=E(`i`,{class:`pi pi-database tab-icon`},null,-1),E(`span`,null,B(R(i)(`serviceConfigView.tabEnvironment`)),1)]),_:1}),g(R(H),{value:`health`},{default:v(()=>[n[4]||=E(`i`,{class:`pi pi-heart tab-icon`},null,-1),E(`span`,null,B(R(i)(`serviceConfigView.tabHealthCheck`)),1)]),_:1}),g(R(H),{value:`log-parsers`,"data-testid":`tab-log-parsers`},{default:v(()=>[n[5]||=E(`i`,{class:`pi pi-list tab-icon`},null,-1),E(`span`,null,B(R(i)(`serviceConfigView.tabLogParsers`)),1)]),_:1}),g(R(H),{value:`log-sources`},{default:v(()=>[n[6]||=E(`i`,{class:`pi pi-inbox tab-icon`},null,-1),E(`span`,null,B(R(i)(`serviceConfigView.tabLogSources`)),1)]),_:1}),g(R(H),{value:`traefik`},{default:v(()=>[...n[7]||=[E(`i`,{class:`pi pi-server tab-icon`},null,-1),E(`span`,null,`Traefik`,-1)]]),_:1})]),_:1}),g(R(Me),null,{default:v(()=>[g(R(Ne),{value:`general`},{default:v(()=>[g(jn,{service:e.service,onSave:y},null,8,[`service`])]),_:1}),g(R(Ne),{value:`commands`},{default:v(()=>[g(ri,{service:e.service,onSave:b,onDockerSave:C},null,8,[`service`])]),_:1}),g(R(Ne),{value:`shortcuts`,"data-testid":`tabpanel-shortcuts`},{default:v(()=>[g(wa,{service:e.service,onSave:S},null,8,[`service`])]),_:1}),g(R(Ne),{value:`env`},{default:v(()=>[g(Ui,{service:e.service,"project-id":e.projectId,"active-environment-id":m.value},null,8,[`service`,`project-id`,`active-environment-id`])]),_:1}),g(R(Ne),{value:`health`},{default:v(()=>[g(fa,{service:e.service,onSave:x},null,8,[`service`])]),_:1}),g(R(Ne),{value:`log-parsers`,"data-testid":`tabpanel-log-parsers`},{default:v(()=>[g(jc,{service:e.service,onSave:w},null,8,[`service`])]),_:1}),g(R(Ne),{value:`log-sources`},{default:v(()=>[g(El,{service:e.service,onSave:T},null,8,[`service`])]),_:1}),g(R(Ne),{value:`traefik`},{default:v(()=>[g(kl,{service:e.service,onSave:D},null,8,[`service`])]),_:1})]),_:1})]),_:1},8,[`value`])]))}}),[[`__scopeId`,`data-v-51a781dd`]]),Fl={key:0,class:`service-detail`},Il={key:1,class:`service-detail__not-found`},Ll=T(f({__name:`ServiceDetailPage`,setup(e){let t=he(),r=ue(),i=oe(),a=xe(),{t:o}=be(),s=ee(),l=se(),u=c(),{setServiceContext:d}=ye(),f=_(()=>t.params.id);S(f,e=>d(e),{immediate:!0}),ge(()=>d(null));let p=_(()=>{let e=t.params.tab;return e===`terminal`||e===`metrics`||e===`config`||e===`git`||e===`wiki`?e:`terminal`}),m=_(()=>s.getById(f.value)),h=_(()=>l.getByService(f.value)),g=_(()=>u.currentProject?.id??``);function v(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,t)=>m.value?(F(),O(`div`,Fl,[p.value===`terminal`?(F(),V(Ft,{key:`terminal-`+f.value,service:m.value,processes:h.value},null,8,[`service`,`processes`])):p.value===`metrics`?(F(),V(Kt,{key:`metrics-`+f.value,service:m.value,processes:h.value},null,8,[`service`,`processes`])):p.value===`config`?(F(),V(Pl,{key:`config-`+f.value,service:m.value,"project-id":g.value,onRemoveService:v},null,8,[`service`,`project-id`])):p.value===`git`?(F(),V(ae,{key:`git-`+f.value,"service-id":f.value},null,8,[`service-id`])):p.value===`wiki`?(F(),V(He,{key:`wiki-`+f.value,scope:`service:${f.value}`},null,8,[`scope`])):n(``,!0)])):(F(),O(`div`,Il,[E(`p`,null,B(R(o)(`serviceDetail.notFound`)),1)]))}}),[[`__scopeId`,`data-v-e3e9fe7f`]]);export{Ll as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{Br as e,Bt as t,H as n,Jr as r,Kr as i,Lr as a,Mi as ee,Mr as o,Pr as s,Qt as c,Rr as l,U as te,Vr as u,W as d,Yi as ne,Yt as f,Zi as p,_i as re,bn as ie,bt as ae,c as oe,di as m,hi as h,hn as se,jr as g,jt as _,k as ce,mn as le,nn as v,oa as y,wn as ue,z as de,zi as b}from"./index-BTYNCNK0.js";import{n as x}from"./plus-DfsTcd_H.js";import{t as fe}from"./fieldset-BCXBPIiB.js";import{n as pe,t as me}from"./autocomplete-CrWQ5zMj.js";import{t as S}from"./divider-CYFRNVal.js";var he={class:`service-form-page`},ge={class:`page-header`},_e={key:0,class:`restart-banner`},ve={key:1,class:`loading-container`},ye={class:`form-section`},C={class:`form-group`},w={for:`svc-project`},T={class:`form-hint`},E={class:`form-group`},D={for:`svc-agent`},O={class:`form-hint`},k={class:`form-group`},A={for:`svc-name`},j={class:`form-hint`},M={class:`form-actions`},N={class:`form-section`},P={class:`form-row`},be={class:`form-group flex-1`},xe={for:`svc-name-edit`},Se={class:`form-group`,style:{width:`160px`}},Ce={for:`svc-runner`},we={class:`form-group`},Te={for:`svc-agent-edit`},Ee={class:`form-hint`},De={class:`form-row`},Oe={class:`form-group flex-1`},ke={for:`svc-cwd`},Ae={class:`form-group`,style:{"min-width":`200px`}},je={for:`svc-ports`},Me={class:`form-group switch-group`},Ne={for:`svc-autorestart`},Pe={class:`form-section`},Fe={class:`section-header`},Ie={key:0,class:`empty-env`},Le={class:`form-group`},Re={for:`hc-path`},ze={class:`form-row`},Be={class:`form-group flex-1`},Ve={for:`hc-interval`},He={class:`form-group flex-1`},Ue={for:`hc-timeout`},We={class:`form-group flex-1`},Ge={for:`hc-retries`},F=`__inherit__`,I=c(r({__name:`ServiceFormPage`,props:{id:{}},setup(r){let c=r,I=se(),Ke=le(),L=ie(),R=n(),z=te(),B=de(),V=ae(),qe=oe(),{t:H}=ue(),U=a(()=>!!c.id),W=a(()=>Ke.query.projectId),G=p(!1),K=p(!1),q=p(null),J=p(null),Y=p(!1),X=ne({projectId:``,agentId:F,name:``,cwd:``,ports:[],runner:`native`,autoRestart:!1,healthCheck:{enabled:!1,path:``,interval:3e4,timeout:5e3,retries:3}}),Z=p([]),Je=[{label:`Native`,value:`native`},{label:`Docker`,value:`docker`}],Ye=a(()=>R.projects.map(e=>({label:e.name,value:e.id}))),Q=a(()=>[{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(c.id){G.value=!0;try{let e=await _.service.get.query({id:c.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:d(e)??H(`serviceForm.failedToLoad`),life:5e3}),I.back()}finally{G.value=!1}}}async function $(){if(!(!U.value||!c.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 _.service.update.mutate({id:c.id,...e}))?.stoppedForAgentChange?(q.value=e.agentId,J.value=c.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:d(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:d(e),life:5e3})}finally{Y.value=!1}}}async function tt(){if(!X.name.trim()){L.add({severity:`warn`,summary:H(`serviceForm.validation`),detail:H(`serviceForm.nameRequired`),life:3e3});return}if(!X.projectId){L.add({severity:`warn`,summary:H(`serviceForm.validation`),detail:H(`serviceForm.projectRequired`),life:3e3});return}K.value=!0;try{let e=await z.create({name:X.name.trim(),...X.agentId&&X.agentId!==F?{agentId:X.agentId}:{}});if(!e)throw Error(z.error??`Failed to create service`);await R.addService(X.projectId,e.id),L.add({severity:`success`,summary:H(`serviceForm.serviceCreated`),detail:H(`serviceForm.configureAfterCreate`),life:3e3}),I.push({name:`service-detail`,params:{id:e.id,tab:`config`}})}catch(e){L.add({severity:`error`,summary:H(`serviceForm.error`),detail:d(e)??H(`serviceForm.failedToSave`),life:5e3})}finally{K.value=!1}}return m(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()}),(n,r)=>(h(),u(`div`,he,[l(`div`,ge,[i(y(v),{icon:`pi pi-arrow-left`,severity:`secondary`,text:``,rounded:``,onClick:r[0]||=e=>y(I).back()}),l(`h1`,null,b(U.value?y(H)(`serviceForm.editTitle`):y(H)(`serviceForm.createTitle`)),1)]),J.value?(h(),u(`div`,_e,[l(`span`,null,b(y(H)(`serviceForm.agentChangedServiceStopped`)),1),i(y(v),{label:y(H)(`serviceForm.restartNow`),icon:`pi pi-play`,severity:`warning`,size:`small`,loading:Y.value,onClick:et},null,8,[`label`,`loading`]),i(y(v),{icon:`pi pi-times`,severity:`secondary`,text:``,rounded:``,size:`small`,onClick:r[1]||=e=>{J.value=null,q.value=null}})])):e(``,!0),G.value?(h(),u(`div`,ve,[i(y(ce))])):(h(),u(`form`,{key:2,class:`service-form`,onSubmit:o(tt,[`prevent`])},[U.value?(h(),u(s,{key:1},[l(`div`,N,[l(`div`,P,[l(`div`,be,[l(`label`,xe,b(y(H)(`serviceForm.nameLabelShort`)),1),i(y(f),{id:`svc-name-edit`,modelValue:X.name,"onUpdate:modelValue":r[6]||=e=>X.name=e,placeholder:`my-service`,class:`w-full`,onBlur:$,onKeydown:g(o($,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])]),l(`div`,Se,[l(`label`,Ce,b(y(H)(`serviceForm.runnerLabel`)),1),i(y(t),{id:`svc-runner`,modelValue:X.runner,"onUpdate:modelValue":r[7]||=e=>X.runner=e,options:Je,optionLabel:`label`,optionValue:`value`,class:`w-full`,onChange:$},null,8,[`modelValue`])])]),l(`div`,we,[l(`label`,Te,b(y(H)(`serviceForm.agentLabel`)),1),i(y(t),{id:`svc-agent-edit`,modelValue:X.agentId,"onUpdate:modelValue":r[8]||=e=>X.agentId=e,options:Q.value,optionLabel:`label`,optionValue:`value`,class:`w-full`,onChange:$},null,8,[`modelValue`,`options`]),l(`small`,Ee,b(y(H)(`serviceForm.agentHintEdit`)),1)]),l(`div`,De,[l(`div`,Oe,[l(`label`,ke,b(y(H)(`serviceForm.cwdLabel`)),1),i(y(f),{id:`svc-cwd`,modelValue:X.cwd,"onUpdate:modelValue":r[9]||=e=>X.cwd=e,placeholder:`.`,class:`w-full`,onBlur:$,onKeydown:g(o($,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])]),l(`div`,Ae,[l(`label`,je,b(y(H)(`serviceForm.portsLabel`)),1),i(y(me),{inputId:`svc-ports`,modelValue:X.ports,"onUpdate:modelValue":r[10]||=e=>X.ports=e,multiple:``,typeahead:!1,placeholder:y(H)(`serviceForm.portsPlaceholder`),class:`w-full`,onChange:$},null,8,[`modelValue`,`placeholder`])])]),l(`div`,Me,[i(y(pe),{modelValue:X.autoRestart,"onUpdate:modelValue":r[11]||=e=>X.autoRestart=e,inputId:`svc-autorestart`,onChange:$},null,8,[`modelValue`]),l(`label`,Ne,b(y(H)(`serviceForm.autoRestart`)),1)])]),i(y(S)),l(`div`,Pe,[l(`div`,Fe,[l(`h3`,null,b(y(H)(`serviceForm.envVars`)),1),i(y(v),{label:y(H)(`serviceForm.addEnvVar`),icon:`pi pi-plus`,severity:`secondary`,size:`small`,onClick:Xe},null,8,[`label`])]),Z.value.length===0?(h(),u(`div`,Ie,[l(`small`,null,b(y(H)(`serviceForm.noEnvVars`)),1)])):e(``,!0),(h(!0),u(s,null,re(Z.value,(e,t)=>(h(),u(`div`,{key:t,class:`env-row`},[i(y(f),{modelValue:e.key,"onUpdate:modelValue":t=>e.key=t,placeholder:`KEY`,class:`env-key`,onBlur:$,onKeydown:g(o($,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onUpdate:modelValue`,`onKeydown`]),r[17]||=l(`span`,{class:`env-eq`},`=`,-1),i(y(f),{modelValue:e.value,"onUpdate:modelValue":t=>e.value=t,placeholder:`value`,class:`env-value`,onBlur:$,onKeydown:g(o($,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onUpdate:modelValue`,`onKeydown`]),i(y(v),{icon:`pi pi-trash`,severity:`danger`,text:``,rounded:``,size:`small`,onClick:()=>{Ze(t),$()}},null,8,[`onClick`])]))),128))]),i(y(S)),i(y(fe),{legend:y(H)(`serviceForm.healthCheck`),toggleable:!0,collapsed:!X.healthCheck.enabled,onToggle:r[16]||=e=>{X.healthCheck.enabled=!e.value,$()}},{default:ee(()=>[l(`div`,Le,[l(`label`,Re,b(y(H)(`serviceForm.healthCheckPath`)),1),i(y(f),{id:`hc-path`,modelValue:X.healthCheck.path,"onUpdate:modelValue":r[12]||=e=>X.healthCheck.path=e,placeholder:`/health`,class:`w-full`,onBlur:$,onKeydown:g(o($,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])]),l(`div`,ze,[l(`div`,Be,[l(`label`,Ve,b(y(H)(`serviceForm.interval`)),1),i(y(x),{id:`hc-interval`,modelValue:X.healthCheck.interval,"onUpdate:modelValue":r[13]||=e=>X.healthCheck.interval=e,min:1e3,step:1e3,class:`w-full`,onBlur:$,onKeydown:g(o($,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])]),l(`div`,He,[l(`label`,Ue,b(y(H)(`serviceForm.timeout`)),1),i(y(x),{id:`hc-timeout`,modelValue:X.healthCheck.timeout,"onUpdate:modelValue":r[14]||=e=>X.healthCheck.timeout=e,min:500,step:500,class:`w-full`,onBlur:$,onKeydown:g(o($,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])]),l(`div`,We,[l(`label`,Ge,b(y(H)(`serviceForm.retries`)),1),i(y(x),{id:`hc-retries`,modelValue:X.healthCheck.retries,"onUpdate:modelValue":r[15]||=e=>X.healthCheck.retries=e,min:0,max:20,class:`w-full`,onBlur:$,onKeydown:g(o($,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])])])]),_:1},8,[`legend`,`collapsed`]),i(y(S))],64)):(h(),u(s,{key:0},[l(`div`,ye,[l(`div`,C,[l(`label`,w,b(y(H)(`serviceForm.projectLabel`)),1),i(y(t),{id:`svc-project`,modelValue:X.projectId,"onUpdate:modelValue":r[2]||=e=>X.projectId=e,options:Ye.value,optionLabel:`label`,optionValue:`value`,placeholder:y(H)(`serviceForm.projectPlaceholder`),class:`w-full`},null,8,[`modelValue`,`options`,`placeholder`]),l(`small`,T,b(y(H)(`serviceForm.projectHint`)),1)]),l(`div`,E,[l(`label`,D,b(y(H)(`serviceForm.agentLabel`)),1),i(y(t),{id:`svc-agent`,modelValue:X.agentId,"onUpdate:modelValue":r[3]||=e=>X.agentId=e,options:Q.value,optionLabel:`label`,optionValue:`value`,placeholder:y(H)(`serviceForm.agentInherit`),"show-clear":``,class:`w-full`},null,8,[`modelValue`,`options`,`placeholder`]),l(`small`,O,b(y(H)(`serviceForm.agentHint`)),1)]),l(`div`,k,[l(`label`,A,b(y(H)(`serviceForm.nameLabel`)),1),i(y(f),{id:`svc-name`,modelValue:X.name,"onUpdate:modelValue":r[4]||=e=>X.name=e,placeholder:`my-service`,class:`w-full`},null,8,[`modelValue`]),l(`small`,j,b(y(H)(`serviceForm.nameConfigHint`)),1)])]),i(y(S)),l(`div`,M,[i(y(v),{label:y(H)(`serviceForm.cancel`),severity:`secondary`,text:``,onClick:r[5]||=e=>y(I).back()},null,8,[`label`]),i(y(v),{label:y(H)(`serviceForm.create`),icon:`pi pi-check`,loading:K.value,type:`submit`},null,8,[`label`,`loading`])])],64))],32))]))}}),[[`__scopeId`,`data-v-fb2efeb4`]]);export{I as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
.traefik-settings[data-v-d0288b5d]{box-sizing:border-box;flex-direction:column;gap:1rem;width:100%;min-width:0;display:flex}.traefik-settings[data-v-d0288b5d] input,.traefik-settings[data-v-d0288b5d] .p-inputtext,.traefik-settings[data-v-d0288b5d] .p-autocomplete,.traefik-settings[data-v-d0288b5d] .p-password{box-sizing:border-box;width:100%;max-width:100%}.traefik-row[data-v-d0288b5d]{justify-content:space-between;align-items:center;display:flex}.traefik-field[data-v-d0288b5d]{flex-direction:column;gap:.4rem;display:flex}.traefik-field label[data-v-d0288b5d]{font-size:.875rem;font-weight:500}.traefik-field small[data-v-d0288b5d]{color:var(--p-text-muted-color);font-size:.75rem}.credential-row[data-v-d0288b5d]{align-items:center;gap:.5rem;min-width:0;display:flex}.credential-key[data-v-d0288b5d]{flex:0 0 160px;min-width:0}.credential-value[data-v-d0288b5d]{flex:1;min-width:0}.credential-value[data-v-d0288b5d] .p-password,.credential-value[data-v-d0288b5d] .p-password input{width:100%}.traefik-ports[data-v-d0288b5d]{gap:1rem;display:flex}.traefik-field--small[data-v-d0288b5d]{flex:1}.hint-ok[data-v-d0288b5d]{color:var(--p-green-500);font-size:.8rem;font-weight:400}.traefik-actions[data-v-d0288b5d]{align-self:flex-end;gap:.5rem;display:flex}.traefik-renewal-notice[data-v-d0288b5d]{border-radius:var(--p-border-radius);background:color-mix(in srgb, var(--p-blue-500) 10%, transparent);border:1px solid color-mix(in srgb, var(--p-blue-500) 30%, transparent);color:var(--p-blue-300);align-items:flex-start;gap:.6rem;padding:.75rem;font-size:.875rem;display:flex}.traefik-validation[data-v-d0288b5d]{border:1px solid var(--p-content-border-color);border-radius:var(--p-border-radius);flex-direction:column;gap:.4rem;padding:.75rem;display:flex}.validation-item[data-v-d0288b5d]{align-items:center;gap:.5rem;font-size:.875rem;display:flex}.validation-item--ok[data-v-d0288b5d]{color:var(--p-green-500)}.validation-item--fail[data-v-d0288b5d]{color:var(--p-red-500)}.traefik-logs[data-v-d0288b5d],.traefik-config-files[data-v-d0288b5d]{border:1px solid var(--p-content-border-color);border-radius:var(--p-border-radius);overflow:hidden}.config-tabs[data-v-d0288b5d]{gap:.25rem;display:flex}.config-tab[data-v-d0288b5d]{border-radius:var(--p-border-radius);cursor:pointer;color:var(--p-text-muted-color);background:0 0;border:none;padding:.2rem .6rem;font-size:.8rem}.config-tab--active[data-v-d0288b5d]{background:var(--p-primary-color);color:var(--p-primary-contrast-color)}.traefik-logs-header[data-v-d0288b5d]{background:var(--p-content-hover-background);justify-content:space-between;align-items:center;padding:.4rem .75rem;font-size:.8rem;font-weight:600;display:flex}.logs-live[data-v-d0288b5d]{color:var(--p-green-400);font-size:.7rem;animation:1.2s ease-in-out infinite blink-d0288b5d}@keyframes blink-d0288b5d{0%,to{opacity:1}50%{opacity:.3}}.traefik-logs-content[data-v-d0288b5d]{white-space:pre-wrap;word-break:break-all;background:var(--p-surface-900,#1a1a1a);max-height:300px;color:var(--p-surface-100,#f0f0f0);margin:0;padding:.75rem;font-family:monospace;font-size:.75rem;overflow-y:auto}.traefik-dialog-layout[data-v-9ce779b4]{grid-template-columns:1fr 1fr;gap:1.5rem;min-height:0;display:grid}.traefik-dialog-left[data-v-9ce779b4]{min-width:0;max-height:80vh;padding-right:.5rem;overflow-y:auto}.traefik-dialog-right[data-v-9ce779b4]{flex-direction:column;gap:.5rem;min-width:0;max-height:80vh;display:flex}.fs-header[data-v-9ce779b4]{color:var(--p-text-muted-color);border-bottom:1px solid var(--p-content-border-color);justify-content:space-between;align-items:center;padding:.25rem 0;font-size:.75rem;font-weight:600;display:flex}.fs-tree[data-v-9ce779b4]{flex-direction:column;gap:1px;display:flex}.fs-entry[data-v-9ce779b4]{border-radius:var(--p-border-radius);cursor:pointer;text-align:left;color:var(--p-text-color);background:0 0;border:none;align-items:center;gap:.4rem;width:100%;padding:.3rem .5rem;font-size:.8rem;display:flex}.fs-entry[data-v-9ce779b4]:hover{background:var(--p-content-hover-background)}.fs-entry--active[data-v-9ce779b4]{background:color-mix(in srgb, var(--p-primary-color) 15%, transparent);color:var(--p-primary-color)}.fs-icon[data-v-9ce779b4]{opacity:.6;flex-shrink:0;font-size:.75rem}.fs-dir[data-v-9ce779b4]{opacity:.5;font-size:.7rem}.fs-name[data-v-9ce779b4]{font-weight:500}.fs-empty[data-v-9ce779b4]{color:var(--p-text-muted-color);padding:.5rem;font-size:.8rem;font-style:italic}.fs-content[data-v-9ce779b4]{white-space:pre-wrap;word-break:break-all;background:var(--p-surface-900,#1a1a1a);color:var(--p-surface-100,#f0f0f0);border-radius:var(--p-border-radius);border:1px solid var(--p-content-border-color);flex:1;margin:0;padding:.75rem;font-family:monospace;font-size:.72rem;overflow-y:auto}.agent-page[data-v-93d82c18]{max-width:1200px;margin:0 auto;padding:1.5rem}.page-header[data-v-93d82c18]{justify-content:space-between;align-items:center;margin-bottom:1.5rem;display:flex}.page-header h1[data-v-93d82c18]{margin:0;font-size:1.75rem;font-weight:700}.loading-container[data-v-93d82c18],.error-container[data-v-93d82c18],.empty-container[data-v-93d82c18]{color:var(--p-text-muted-color);flex-direction:column;align-items:center;gap:.75rem;padding:3rem 0;display:flex}.agent-name[data-v-93d82c18]{align-items:center;gap:.5rem;font-weight:500;display:flex}.agent-url[data-v-93d82c18]{background:var(--p-content-hover-background);border-radius:4px;padding:.15rem .4rem;font-family:Fira Code,Cascadia Code,monospace;font-size:.8rem}.runner-tags[data-v-93d82c18]{flex-wrap:wrap;gap:.3rem;display:flex}.action-grid[data-v-93d82c18]{grid-template-columns:repeat(2,auto);gap:0;width:fit-content;display:grid}@media (max-width:768px){[data-v-93d82c18] .hide-on-mobile{display:none!important}[data-v-93d82c18] .p-datatable-column-header-content{white-space:nowrap}.agent-url[data-v-93d82c18]{word-break:break-all;white-space:normal}}.text-muted[data-v-93d82c18]{color:var(--p-text-muted-color)}.form-group[data-v-93d82c18]{margin-bottom:1rem}.form-group label[data-v-93d82c18]{margin-bottom:.4rem;font-size:.875rem;font-weight:500;display:block}.form-hint[data-v-93d82c18]{color:var(--p-text-muted-color);font-size:.78rem}.test-connection[data-v-93d82c18]{align-items:center;gap:.75rem;display:flex}.w-full[data-v-93d82c18]{width:100%}.passthrough-description[data-v-93d82c18]{color:var(--p-text-muted-color);margin:0 0 1rem;font-size:.85rem;line-height:1.4}.passthrough-list[data-v-93d82c18]{flex-direction:column;gap:.25rem;margin-bottom:.75rem;display:flex}.passthrough-item[data-v-93d82c18]{background:var(--p-content-hover-background);border-radius:6px;justify-content:space-between;align-items:center;padding:.3rem .5rem;display:flex}.passthrough-item-info[data-v-93d82c18]{align-items:center;gap:.4rem;min-width:0;display:flex;overflow:hidden}.passthrough-item code[data-v-93d82c18]{flex-shrink:0;font-family:Fira Code,Cascadia Code,monospace;font-size:.85rem}.passthrough-value[data-v-93d82c18]{color:var(--p-text-muted-color);text-overflow:ellipsis;white-space:nowrap;font-family:Fira Code,Cascadia Code,monospace;font-size:.8rem;overflow:hidden}.passthrough-undefined[data-v-93d82c18]{color:var(--p-orange-500);font-size:.78rem;font-style:italic}.passthrough-unsaved[data-v-93d82c18]{color:var(--p-text-muted-color);font-size:.78rem;font-style:italic}.passthrough-empty[data-v-93d82c18]{margin-bottom:.75rem;font-size:.85rem}.passthrough-add[data-v-93d82c18]{align-items:center;gap:.5rem;display:flex}.passthrough-add-input[data-v-93d82c18]{flex:1}.passthrough-error[data-v-93d82c18]{color:var(--p-red-500);margin-top:.25rem;font-size:.78rem;display:block}.api-keys-page[data-v-e7586e58]{max-width:860px;padding:1.5rem}.api-keys-page__header[data-v-e7586e58]{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:1.5rem;display:flex}.api-keys-page__header h1[data-v-e7586e58]{margin:0;font-size:1.5rem;font-weight:600}.api-keys-page__subtitle[data-v-e7586e58]{color:var(--p-text-muted-color);flex:1;margin:0;font-size:.875rem}.api-keys-page__empty[data-v-e7586e58]{color:var(--p-text-muted-color);padding:2rem 0;font-size:.9rem}.api-keys-card[data-v-e7586e58]{max-width:680px}.api-keys-list[data-v-e7586e58]{flex-direction:column;gap:.5rem;display:flex}.api-key-card[data-v-e7586e58]{border:1px solid var(--p-content-border-color);border-radius:var(--p-border-radius);background:var(--p-content-background);padding:.5rem .75rem;position:relative}.api-key-card__body[data-v-e7586e58]{min-width:0}.api-key-card__name[data-v-e7586e58]{align-items:center;gap:.5rem;margin-bottom:.2rem;padding-right:5rem;font-weight:500;display:flex}.api-key-card__meta[data-v-e7586e58]{color:var(--p-text-muted-color);margin-bottom:.4rem;font-size:.8rem}.api-key-card__url-row[data-v-e7586e58]{align-items:center;gap:.4rem;display:flex}.api-key-card__url[data-v-e7586e58]{min-width:0;color:var(--p-text-muted-color);text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:.75rem;overflow:hidden}.api-key-card__actions[data-v-e7586e58]{gap:.3rem;display:flex;position:absolute;top:.5rem;right:.5rem}.badge[data-v-e7586e58]{text-transform:uppercase;border-radius:4px;padding:.1rem .4rem;font-size:.7rem;font-weight:600}.badge--info[data-v-e7586e58]{background:var(--p-blue-100);color:var(--p-blue-700)}.api-key-form[data-v-e7586e58]{background:var(--p-surface-card);border:1px solid var(--runeya-border);border-radius:10px;max-width:600px;padding:1.5rem}.api-key-form h2[data-v-e7586e58]{margin:0 0 1.25rem;font-size:1.1rem}.form-field[data-v-e7586e58]{margin-bottom:1.25rem}.form-field>label[data-v-e7586e58]:first-child{margin-bottom:.5rem;font-size:.875rem;font-weight:600;display:block}.form-input[data-v-e7586e58]{border:1px solid var(--runeya-border);background:var(--p-surface-ground);width:100%;color:var(--p-text-color);box-sizing:border-box;border-radius:6px;padding:.5rem .75rem;font-size:.9rem}.form-input[data-v-e7586e58]:focus{border-color:var(--p-primary-color);outline:none}.form-select[data-v-e7586e58]{border:1px solid var(--runeya-border);background:var(--p-surface-ground);width:100%;color:var(--p-text-muted-color);cursor:pointer;border-radius:6px;padding:.45rem .75rem;font-size:.875rem}.form-select--sm[data-v-e7586e58]{width:auto;padding:.25rem .5rem;font-size:.8rem}.form-hint[data-v-e7586e58]{color:var(--p-text-muted-color);margin-top:.4rem;font-size:.75rem}.radio-group[data-v-e7586e58]{flex-direction:column;gap:.4rem;display:flex}.radio-label[data-v-e7586e58]{cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:.5rem;font-size:.875rem;display:flex}.svc-list-container[data-v-e7586e58]{border:1px solid var(--runeya-border);border-radius:8px;margin-bottom:.5rem;overflow:hidden}.svc-list-search[data-v-e7586e58]{background:var(--p-surface-ground);border-bottom:1px solid var(--runeya-border);align-items:center;gap:.5rem;padding:.4rem .75rem;display:flex}.svc-list-search__icon[data-v-e7586e58]{color:var(--p-text-muted-color);flex-shrink:0;font-size:.75rem}.svc-list-search__input[data-v-e7586e58]{color:var(--p-text-color);background:0 0;border:none;outline:none;flex:1;font-size:.85rem}.svc-list-search__input[data-v-e7586e58]::placeholder{color:var(--p-text-muted-color)}.svc-list-search__clear[data-v-e7586e58]{cursor:pointer;color:var(--p-text-muted-color);background:0 0;border:none;align-items:center;padding:0;font-size:.75rem;display:flex}.svc-list-search__clear[data-v-e7586e58]:hover{color:var(--p-text-color)}.svc-list-scroll[data-v-e7586e58]{max-height:360px;overflow-y:auto}.svc-list-empty[data-v-e7586e58]{margin:0;padding:.75rem}.svc-perm-row[data-v-e7586e58]{border-bottom:1px solid var(--runeya-border);overflow:hidden}.svc-perm-row[data-v-e7586e58]:last-child{border-bottom:none}.svc-perm-row__header[data-v-e7586e58]{background:var(--p-surface-ground);border-bottom:1px solid var(--runeya-border);cursor:pointer;-webkit-user-select:none;user-select:none;justify-content:space-between;align-items:center;padding:.4rem .75rem;display:flex}.svc-perm-row__header[data-v-e7586e58]:hover{background:var(--runeya-sidebar-hover)}.svc-chevron[data-v-e7586e58]{color:var(--p-text-muted-color);font-size:.7rem;transition:transform .15s}.svc-perm-summary[data-v-e7586e58]{color:var(--p-text-muted-color);margin-left:.3rem;font-size:.75rem;font-weight:400}.svc-perm-row__name[data-v-e7586e58]{align-items:center;gap:.4rem;font-size:.875rem;font-weight:600;display:flex}.svc-perm-row__actions[data-v-e7586e58]{border-bottom:1px solid var(--runeya-border);flex-wrap:wrap;gap:.35rem;padding:.5rem .75rem;display:flex}.action-chip[data-v-e7586e58]{border:1px solid var(--runeya-border);background:var(--p-surface-ground);color:var(--p-text-muted-color);cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:20px;align-items:center;gap:.3rem;padding:.15rem .5rem;font-size:.78rem;transition:all .12s;display:inline-flex}.action-chip input[type=checkbox][data-v-e7586e58]{display:none}.action-chip--on[data-v-e7586e58]{background:var(--p-primary-color);color:var(--p-primary-contrast-color,#fff);border-color:var(--p-primary-color)}.action-chip--sub[data-v-e7586e58]{opacity:.85;margin-left:.25rem;font-size:.72rem}.action-chip--sub.action-chip--on[data-v-e7586e58]{background:var(--p-primary-400,var(--p-primary-color))}.svc-perm-row__envs[data-v-e7586e58]{flex-direction:column;gap:.35rem;padding:.5rem .75rem;display:flex}.env-perm-row[data-v-e7586e58]{flex-wrap:wrap;align-items:center;gap:.35rem;display:flex}.env-perm-row__name[data-v-e7586e58]{color:var(--p-text-muted-color);align-items:center;gap:.3rem;min-width:8rem;font-size:.8rem;display:flex}.env-add-row[data-v-e7586e58]{margin-top:.25rem}.svc-add-row[data-v-e7586e58]{flex-wrap:wrap;align-items:center;gap:.5rem;margin-top:.5rem;display:flex}.import-modal__body[data-v-e7586e58]{flex-direction:column;gap:1rem;padding:.25rem 0;display:flex}.import-modal__desc[data-v-e7586e58]{color:var(--p-text-muted-color);margin:0;font-size:.875rem}.import-section[data-v-e7586e58]{flex-direction:column;gap:.4rem;display:flex}.import-section__label[data-v-e7586e58]{color:var(--p-text-muted-color);text-transform:uppercase;letter-spacing:.04em;font-size:.8rem;font-weight:600}.form-actions[data-v-e7586e58]{justify-content:space-between;align-items:center;gap:.75rem;margin-top:1.5rem;display:flex}.form-actions__right[data-v-e7586e58]{gap:.75rem;display:flex}.btn--renew[data-v-e7586e58]{color:var(--p-text-muted-color);font-size:.8rem}.btn--renew[data-v-e7586e58]:hover:not(:disabled){color:var(--p-text-color)}.api-key-card__skill[data-v-e7586e58]{margin-top:.6rem}.skill-toggle[data-v-e7586e58]{color:var(--p-text-muted-color);gap:.35rem}.skill-toggle[data-v-e7586e58]:hover{color:var(--p-text-color)}.skill-panel[data-v-e7586e58]{border:1px solid var(--runeya-border);border-radius:6px;margin-top:.5rem;overflow:hidden}.skill-panel__tools[data-v-e7586e58]{background:var(--p-surface-ground);border-bottom:1px solid var(--runeya-border);flex-wrap:wrap;gap:.35rem;padding:.5rem .75rem;display:flex}.skill-tool-btn[data-v-e7586e58]{border:1px solid var(--runeya-border);color:var(--p-text-muted-color);cursor:pointer;background:0 0;border-radius:20px;padding:.2rem .6rem;font-size:.72rem;transition:all .12s}.skill-tool-btn[data-v-e7586e58]:hover{background:var(--runeya-sidebar-hover);color:var(--p-text-color)}.skill-tool-btn--active[data-v-e7586e58]{background:var(--p-primary-color);color:var(--p-primary-contrast-color,#fff);border-color:var(--p-primary-color)}.skill-panel__header[data-v-e7586e58]{background:var(--p-surface-ground);border-bottom:1px solid var(--runeya-border);justify-content:space-between;align-items:center;padding:.4rem .75rem;display:flex}.skill-panel__btns[data-v-e7586e58]{gap:.35rem;display:flex}.skill-panel__hint[data-v-e7586e58]{color:var(--p-text-muted-color);font-size:.75rem}.skill-panel__code[data-v-e7586e58]{white-space:pre-wrap;word-break:break-all;background:var(--p-surface-card);color:var(--p-text-color);max-height:260px;margin:0;padding:.75rem;font-size:.72rem;line-height:1.5;overflow-y:auto}.renew-modal__body[data-v-e7586e58]{flex-direction:column;gap:.5rem;padding:.25rem 0;display:flex}.renew-modal__title[data-v-e7586e58]{align-items:center;gap:.5rem;font-weight:600;display:flex}.renew-modal__title-icon[data-v-e7586e58]{color:var(--p-orange-500,#f97316)}.renew-modal__body p[data-v-e7586e58]{margin:0;font-size:.9rem;line-height:1.5}.btn[data-v-e7586e58]{cursor:pointer;border:none;border-radius:6px;align-items:center;gap:.4rem;padding:.45rem .9rem;font-size:.875rem;font-weight:500;transition:all .15s;display:inline-flex}.btn[data-v-e7586e58]:disabled{opacity:.5;cursor:not-allowed}.btn--primary[data-v-e7586e58]{background:var(--p-primary-color);color:var(--p-primary-contrast-color,#fff)}.btn--primary[data-v-e7586e58]:hover:not(:disabled){filter:brightness(1.1)}.btn--ghost[data-v-e7586e58]{color:var(--p-text-color);border:1px solid var(--runeya-border);background:0 0}.btn--ghost[data-v-e7586e58]:hover:not(:disabled){background:var(--runeya-sidebar-hover)}.btn--danger[data-v-e7586e58]{color:var(--p-red-500,#ef4444);border:1px solid var(--runeya-border);background:0 0}.btn--danger[data-v-e7586e58]:hover:not(:disabled){background:var(--p-red-50,#fef2f2)}.btn--sm[data-v-e7586e58]{padding:.3rem .6rem;font-size:.8rem}.btn--xs[data-v-e7586e58]{padding:.2rem .4rem;font-size:.75rem}.settings-card[data-v-bb2f4fdf]{max-width:680px}.cloud-banner[data-v-bb2f4fdf]{border:1px solid var(--p-primary-color);background:color-mix(in srgb, var(--p-primary-color) 8%, transparent);width:100%;max-width:680px;color:var(--p-text-color);cursor:pointer;text-align:left;font:inherit;border-radius:10px;align-items:center;gap:1rem;margin-bottom:1.25rem;padding:1rem 1.25rem;transition:background .15s,box-shadow .15s;display:flex}.cloud-banner[data-v-bb2f4fdf]:hover{background:color-mix(in srgb, var(--p-primary-color) 14%, transparent);box-shadow:0 2px 10px color-mix(in srgb, var(--p-primary-color) 20%, transparent)}.cloud-banner__icon[data-v-bb2f4fdf]{color:var(--p-primary-color);flex-shrink:0;font-size:1.75rem}.cloud-banner__text[data-v-bb2f4fdf]{flex-direction:column;flex:1;gap:.15rem;min-width:0;display:flex}.cloud-banner__title[data-v-bb2f4fdf]{font-size:1rem}.cloud-banner__desc[data-v-bb2f4fdf]{color:var(--p-text-muted-color);font-size:.85rem}.cloud-banner__action[data-v-bb2f4fdf]{color:var(--p-primary-color);white-space:nowrap;flex-shrink:0;align-items:center;gap:.4rem;font-weight:600;display:inline-flex}.setting-row[data-v-bb2f4fdf]{border-bottom:1px solid var(--p-content-border-color);align-items:flex-start;gap:1rem;padding:.75rem 0;display:flex}.setting-row[data-v-bb2f4fdf]:last-child{border-bottom:none}.setting-label[data-v-bb2f4fdf]{width:140px;color:var(--p-text-muted-color);flex-shrink:0;padding-top:.25rem;font-size:.9rem;font-weight:600}.setting-value[data-v-bb2f4fdf]{flex:1;align-items:center;gap:.5rem;display:flex}.setting-input[data-v-bb2f4fdf]{width:100%;max-width:400px}.setting-actions[data-v-bb2f4fdf]{padding-top:1rem}.settings-card[data-v-409957ad]{max-width:680px}.notification-groups[data-v-409957ad]{flex-direction:column;gap:1rem;display:flex}.notification-group[data-v-409957ad]{border:1px solid var(--p-content-border-color);border-radius:var(--p-border-radius);background:color-mix(in srgb, var(--p-content-hover-background) 35%, transparent);padding:.9rem 1rem}.notification-group__header[data-v-409957ad]{justify-content:space-between;align-items:flex-start;gap:.75rem;margin-bottom:.35rem;display:flex}.notification-group__collapse-button[data-v-409957ad]{appearance:none;text-align:left;cursor:pointer;color:inherit;background:0 0;border:0;flex:1;margin:0;padding:0}.notification-group__title-wrap[data-v-409957ad]{align-items:center;gap:.45rem;display:flex}.notification-group__icon[data-v-409957ad]{color:var(--p-text-muted-color);font-size:.9rem}.notification-group__title[data-v-409957ad]{margin:0;font-size:.92rem;font-weight:700}.notification-group__chevron[data-v-409957ad]{color:var(--p-text-muted-color);margin-left:auto;font-size:.8rem}.notification-group__desc[data-v-409957ad]{color:var(--p-text-muted-color);margin:.2rem 0 0;font-size:.78rem}.notification-group__actions[data-v-409957ad]{flex-shrink:0}.notification-item[data-v-409957ad]{border-bottom:1px solid var(--p-content-border-color)}.notification-item[data-v-409957ad]:last-child,.notification-item .setting-row[data-v-409957ad]{border-bottom:none}.setting-row[data-v-409957ad]{border-bottom:1px solid var(--p-content-border-color);align-items:flex-start;gap:1rem;padding:.75rem 0;display:flex}.setting-row--toggle[data-v-409957ad]{align-items:center}.setting-label[data-v-409957ad]{color:var(--p-text-muted-color);font-size:.9rem;font-weight:600}.setting-label-group[data-v-409957ad]{flex:1;min-width:0}.setting-hint[data-v-409957ad]{color:var(--p-text-muted-color);margin-top:.2rem;font-size:.78rem;display:block}.notification-item__right[data-v-409957ad]{flex-shrink:0;align-items:center;gap:.5rem;display:flex}.notification-item__services-toggle[data-v-409957ad]{appearance:none;border:1px solid var(--p-content-border-color);border-radius:var(--p-border-radius);cursor:pointer;color:var(--p-text-muted-color);background:0 0;align-items:center;gap:.3rem;padding:.2rem .45rem;font-size:.78rem;transition:background .15s,color .15s;display:flex}.notification-item__services-toggle[data-v-409957ad]:hover{background:var(--p-content-hover-background);color:var(--p-text-color)}.notification-item__services[data-v-409957ad]{border-top:1px dashed var(--p-content-border-color);flex-direction:column;gap:.4rem;padding:.5rem 0 .75rem 1rem;display:flex}.notification-item__services-empty[data-v-409957ad]{color:var(--p-text-muted-color);margin:0;font-size:.8rem}.notification-item__service-row[data-v-409957ad]{justify-content:space-between;align-items:center;padding:.25rem 0;display:flex}.notification-item__service-name[data-v-409957ad]{color:var(--p-text-color);font-size:.85rem}.settings-card[data-v-3011d35a]{max-width:680px}.card-title[data-v-3011d35a]{align-items:center;gap:.5rem;display:flex}.card-desc[data-v-3011d35a]{color:var(--p-text-muted-color);margin:0 0 1rem;font-size:.85rem}.setting-row[data-v-3011d35a]{align-items:flex-start;gap:1rem;padding:.75rem 0;display:flex}.setting-label[data-v-3011d35a]{width:140px;color:var(--p-text-muted-color);flex-shrink:0;padding-top:.25rem;font-size:.9rem;font-weight:600}.encryption-key-field[data-v-3011d35a]{flex:1;align-items:center;gap:.25rem;max-width:460px;display:flex}.encryption-key-input[data-v-3011d35a]{flex:1;font-family:monospace;font-size:.85rem}.settings-card[data-v-3e46f822]{max-width:680px}.card-title[data-v-3e46f822]{align-items:center;gap:.5rem;display:flex}.card-desc[data-v-3e46f822]{color:var(--p-text-muted-color);margin:0 0 1rem;font-size:.85rem}.setting-row[data-v-3e46f822]{align-items:flex-start;gap:1rem;padding:.75rem 0;display:flex}.setting-label[data-v-3e46f822]{width:140px;color:var(--p-text-muted-color);flex-shrink:0;padding-top:.25rem;font-size:.9rem;font-weight:600}.setting-input[data-v-3e46f822]{width:100%;max-width:400px}.editor-warning[data-v-3e46f822]{padding:.5rem 0}.editor-detected[data-v-3e46f822]{padding-top:.5rem}.editor-option[data-v-3e46f822]{align-items:center;gap:.5rem;display:flex}.hint[data-v-3e46f822]{color:var(--p-text-muted-color);font-size:.78rem}[data-v-2bbf2f63] .p-dialog-content{flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden}.settings-card[data-v-2bbf2f63]{max-width:680px}.card-desc[data-v-2bbf2f63]{color:var(--p-text-muted-color);margin:0 0 1rem;font-size:.85rem}.parsers-loading[data-v-2bbf2f63]{color:var(--p-text-muted-color);align-items:center;gap:.5rem;padding:1rem;font-size:.875rem;display:flex}.parsers-list[data-v-2bbf2f63]{flex-direction:column;gap:.375rem;display:flex}.parsers-row[data-v-2bbf2f63]{border:1px solid var(--p-content-border-color);border-radius:var(--p-border-radius);background:var(--p-content-background);align-items:center;gap:.75rem;padding:.5rem .75rem;display:flex}.parsers-name[data-v-2bbf2f63]{flex-shrink:0;font-size:.875rem;font-weight:600}.parsers-desc-inline[data-v-2bbf2f63]{color:var(--p-text-muted-color);text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-size:.8rem;overflow:hidden}.parsers-icon--on[data-v-2bbf2f63]{color:var(--p-green-500);justify-content:center;align-items:center;width:2rem;height:2rem;display:flex}.parsers-icon--off[data-v-2bbf2f63]{color:var(--p-red-500);justify-content:center;align-items:center;width:2rem;height:2rem;display:flex}.parsers-actions[data-v-2bbf2f63]{align-items:center;gap:.25rem;margin-left:auto;display:flex}.parsers-empty[data-v-2bbf2f63]{text-align:center;color:var(--p-text-muted-color);padding:1.5rem;font-size:.875rem}.parser-dialog__layout[data-v-2bbf2f63]{grid-template-columns:1fr 1fr;align-items:stretch;gap:1.25rem;height:100%;display:grid;overflow:hidden}@media (max-width:768px){.parser-dialog__layout[data-v-2bbf2f63]{grid-template-columns:1fr;height:auto;overflow-y:auto}.dialog-form[data-v-2bbf2f63]{height:auto;overflow:visible}.dialog-form__field--code[data-v-2bbf2f63]{min-height:250px}.parser-sim[data-v-2bbf2f63]{min-height:300px}.parser-sim__body[data-v-2bbf2f63]{min-height:0}.parser-sim__col--output[data-v-2bbf2f63]{min-height:150px}}.dialog-form[data-v-2bbf2f63]{flex-direction:column;gap:1rem;height:100%;display:flex;overflow:auto}.dialog-form__field--code[data-v-2bbf2f63]{flex:1;min-height:0}.dialog-form__field[data-v-2bbf2f63]{flex-direction:column;gap:.375rem;display:flex}.dialog-form__label[data-v-2bbf2f63]{color:var(--p-text-muted-color);align-items:center;gap:.5rem;font-size:.8125rem;font-weight:600;display:flex}.dialog-form__input[data-v-2bbf2f63]{width:100%}.dialog-form__hint[data-v-2bbf2f63]{color:var(--p-text-muted-color);font-size:.78rem}.dialog-form__hint code[data-v-2bbf2f63]{background:var(--p-content-hover-background);border-radius:3px;padding:.125rem .375rem;font-family:Monaco,Menlo,monospace;font-size:.75rem}.dialog-form__switch[data-v-2bbf2f63]{align-items:center;gap:.5rem;display:flex}.dialog-form__switch-label[data-v-2bbf2f63]{color:var(--p-text-muted-color);font-size:.85rem}.dialog-form__templates[data-v-2bbf2f63]{flex-direction:column;gap:.5rem;display:flex}.dialog-form__templates-label[data-v-2bbf2f63]{color:var(--p-text-muted-color);text-transform:uppercase;letter-spacing:.04em;font-size:.75rem;font-weight:600}.dialog-form__templates-select[data-v-2bbf2f63]{width:100%}.dialog-form__ai-btn[data-v-2bbf2f63]{margin-left:auto}.tpl-option[data-v-2bbf2f63]{align-items:center;gap:.75rem;display:flex}.tpl-option__icon[data-v-2bbf2f63]{color:var(--p-primary-color);flex-shrink:0;font-size:.9rem}.tpl-option__body[data-v-2bbf2f63]{flex-direction:column;gap:.1rem;display:flex}.tpl-option__name[data-v-2bbf2f63]{color:var(--p-text-color);font-size:.8125rem;font-weight:600}.tpl-option__desc[data-v-2bbf2f63]{color:var(--p-text-muted-color);font-size:.73rem}.parser-sim[data-v-2bbf2f63]{border:1px solid var(--p-content-border-color);border-radius:var(--p-border-radius);flex-direction:column;height:100%;display:flex;overflow:hidden}.parser-sim__header[data-v-2bbf2f63]{background:var(--p-surface-50,#00000008);border-bottom:1px solid var(--p-content-border-color);justify-content:space-between;align-items:center;padding:.5rem .75rem;font-size:.8125rem;display:flex}.parser-sim__title[data-v-2bbf2f63]{align-items:center;gap:.4rem;font-weight:600;display:flex}.parser-sim__status[data-v-2bbf2f63]{color:var(--p-text-muted-color);align-items:center;gap:.3rem;font-size:.75rem;display:flex}.parser-sim__body[data-v-2bbf2f63]{flex-direction:column;flex:1;gap:0;min-height:0;display:flex}.parser-sim__col[data-v-2bbf2f63]{flex-direction:column;gap:.25rem;padding:.6rem .75rem;display:flex}.parser-sim__col[data-v-2bbf2f63]:first-child{border-bottom:1px solid var(--p-content-border-color)}.parser-sim__col-label[data-v-2bbf2f63]{color:var(--p-text-muted-color);text-transform:uppercase;letter-spacing:.04em;margin-bottom:.25rem;font-size:.75rem;font-weight:600}.parser-sim__textarea[data-v-2bbf2f63]{resize:vertical;width:100%;min-height:160px;font-family:var(--p-font-family-mono,monospace);border:1px solid var(--p-inputtext-border-color,var(--p-content-border-color));border-radius:var(--p-border-radius);background:var(--p-inputtext-background,var(--p-content-background));color:var(--p-inputtext-color,var(--p-text-color));outline:none;padding:.5rem;font-size:.8rem;line-height:1.5}.parser-sim__textarea[data-v-2bbf2f63]:focus{border-color:var(--p-primary-color)}.parser-sim__error[data-v-2bbf2f63]{color:var(--p-red-500,#ef4444);align-items:flex-start;gap:.4rem;padding:.5rem;font-size:.8rem;display:flex}.parser-sim__empty[data-v-2bbf2f63]{color:var(--p-text-muted-color);padding:.5rem;font-size:.8rem;font-style:italic}.parser-sim__col--output[data-v-2bbf2f63]{flex:1;min-height:0;overflow:hidden}.parser-sim__viewer[data-v-2bbf2f63]{flex:1;height:100%;min-height:0}.parser-ai-prompt[data-v-2bbf2f63]{flex-direction:column;gap:.75rem;display:flex}.parser-ai-prompt__desc[data-v-2bbf2f63]{color:var(--p-text-muted-color);margin:0;font-size:.9rem}.parser-ai-prompt__input[data-v-2bbf2f63]{resize:vertical;width:100%}.settings-card[data-v-119628f3]{max-width:680px}.providers-loading[data-v-119628f3],.providers-empty[data-v-119628f3]{color:var(--p-text-muted-color);align-items:center;gap:.5rem;padding:1rem;font-size:.875rem;display:flex}.ai-providers-list[data-v-119628f3]{flex-direction:column;gap:.5rem;display:flex}.ai-provider-row[data-v-119628f3]{border:1px solid var(--p-content-border-color);border-radius:var(--p-border-radius);background:var(--p-content-background);justify-content:space-between;align-items:center;gap:1rem;padding:.75rem 1rem;transition:border-color .15s;display:flex}.ai-provider-row--active[data-v-119628f3]{border-color:var(--p-primary-color);background:color-mix(in srgb, var(--p-primary-color) 5%, var(--p-content-background))}.ai-provider-info[data-v-119628f3]{flex-wrap:wrap;align-items:center;gap:.75rem;min-width:0;display:flex}.ai-provider-name[data-v-119628f3]{font-size:.875rem;font-weight:600}.ai-provider-type[data-v-119628f3]{color:var(--p-text-muted-color);font-size:.8125rem}.ai-provider-model[data-v-119628f3]{background:var(--p-content-hover-background);color:var(--p-text-muted-color);border-radius:4px;padding:.15rem .4rem;font-size:.75rem}.ai-provider-key[data-v-119628f3]{background:var(--p-content-hover-background);letter-spacing:.05em;border-radius:4px;padding:.15rem .4rem;font-size:.75rem}.ai-provider-actions[data-v-119628f3]{flex-shrink:0;align-items:center;gap:.25rem;display:flex}.ai-provider-badge[data-v-119628f3]{color:var(--p-primary-color);align-items:center;gap:.35rem;padding:.25rem .6rem;font-size:.8rem;font-weight:600;display:inline-flex}.dialog-form[data-v-119628f3]{flex-direction:column;gap:1rem;display:flex}.dialog-form__field[data-v-119628f3]{flex-direction:column;gap:.375rem;display:flex}.dialog-form__label[data-v-119628f3]{color:var(--p-text-muted-color);align-items:center;gap:.5rem;font-size:.8125rem;font-weight:600;display:flex}.dialog-form__input[data-v-119628f3]{width:100%}.ai-provider-info-block[data-v-119628f3]{background:color-mix(in srgb, var(--p-primary-color) 6%, var(--p-content-background));border:1px solid color-mix(in srgb, var(--p-primary-color) 25%, transparent);border-radius:var(--p-border-radius);flex-direction:column;gap:.5rem;padding:.75rem 1rem;display:flex}.ai-provider-info-block__text[data-v-119628f3]{color:var(--p-text-color);margin:0;font-size:.875rem;line-height:1.5}.ai-provider-info-block__link[data-v-119628f3]{color:var(--p-primary-color);align-items:center;gap:.35rem;font-size:.8125rem;font-weight:500;text-decoration:none;display:inline-flex}.ai-provider-info-block__link[data-v-119628f3]:hover{text-decoration:underline}.ai-provider-info-block__models[data-v-119628f3]{flex-wrap:wrap;align-items:center;gap:.4rem;display:flex}.ai-provider-info-block__models-label[data-v-119628f3]{color:var(--p-text-muted-color);font-size:.75rem;font-weight:500}.ai-provider-info-block__model-tag[data-v-119628f3]{background:var(--p-content-hover-background);border:1px solid var(--p-content-border-color);color:var(--p-text-muted-color);border-radius:4px;padding:.1rem .4rem;font-size:.7rem}.settings-card[data-v-3faeb447]{max-width:680px}.scenario-list[data-v-3faeb447]{flex-direction:column;gap:.5rem;display:flex}.scenario-row[data-v-3faeb447]{border:1px solid var(--p-content-border-color);border-radius:var(--p-border-radius);background:var(--p-content-background);justify-content:space-between;align-items:center;gap:.75rem;padding:.5rem .75rem;display:flex}.scenario-info[data-v-3faeb447]{align-items:center;gap:.75rem;display:flex}.scenario-icon[data-v-3faeb447]{opacity:.7;font-size:1.1rem}.scenario-desc[data-v-3faeb447]{opacity:.6;margin-left:.5rem;font-size:.85rem}.scenario-meta[data-v-3faeb447]{opacity:.5;margin-top:.25rem;font-size:.8rem}.scenario-actions[data-v-3faeb447]{flex-shrink:0;gap:.25rem;display:flex}.scenario-empty[data-v-3faeb447]{text-align:center;opacity:.5;padding:1rem 0}.settings-card[data-v-73b445c8]{max-width:680px}.setting-row[data-v-73b445c8]{border-bottom:1px solid var(--p-content-border-color);align-items:flex-start;gap:1rem;padding:.75rem 0;display:flex}.setting-row[data-v-73b445c8]:last-child{border-bottom:none}.setting-label[data-v-73b445c8]{width:140px;color:var(--p-text-muted-color);flex-shrink:0;padding-top:.25rem;font-size:.9rem;font-weight:600}.setting-value[data-v-73b445c8]{flex:1;align-items:center;gap:.5rem;display:flex}.card-title-row[data-v-73b445c8]{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;display:flex}.api-docs[data-v-0f78f983]{flex-direction:column;height:100%;display:flex;overflow:hidden}.api-docs__content[data-v-0f78f983]{flex:1;min-height:0;overflow-y:auto}.api-docs__toolbar[data-v-0f78f983]{background:var(--p-surface-card);border-bottom:1px solid var(--p-surface-border);flex-shrink:0;align-items:center;gap:.75rem;padding:.75rem 1rem;display:flex}.api-docs__toolbar-label[data-v-0f78f983]{color:var(--p-text-muted-color);white-space:nowrap;font-size:.875rem;font-weight:500}.settings-page[data-v-fe62adaa]{flex-direction:column;height:100%;display:flex}.settings-layout[data-v-fe62adaa]{flex:1;gap:0;min-height:0;display:flex}.settings-nav[data-v-fe62adaa]{border-right:1px solid var(--p-content-border-color);flex-direction:column;flex-shrink:0;gap:.25rem;width:200px;padding:1.25rem 0;display:flex}.settings-nav__title[data-v-fe62adaa]{letter-spacing:.08em;text-transform:uppercase;color:var(--p-text-muted-color);padding:0 1rem .75rem;font-size:.7rem;font-weight:700}.settings-nav__list[data-v-fe62adaa]{flex-direction:column;gap:.125rem;margin:0;padding:0;list-style:none;display:flex}.settings-nav__item[data-v-fe62adaa]{cursor:pointer;color:var(--p-text-muted-color);-webkit-user-select:none;user-select:none;border-radius:6px;align-items:center;gap:.625rem;margin:0 .5rem;padding:.5rem 1rem;font-size:.875rem;transition:background .15s,color .15s;display:flex}.settings-nav__item[data-v-fe62adaa]:hover{background:var(--p-content-hover-background);color:var(--p-text-color)}.settings-nav__item--active[data-v-fe62adaa]{background:var(--p-primary-50,color-mix(in srgb, var(--p-primary-color) 10%, transparent));color:var(--p-primary-color);font-weight:600}.settings-nav__icon[data-v-fe62adaa]{flex-shrink:0;font-size:.875rem}.settings-content[data-v-fe62adaa]{flex:1;min-width:0;padding:1.5rem 2rem;overflow-y:auto}.settings-content--fullpage[data-v-fe62adaa]{flex-direction:column;min-height:0;padding:0;display:flex;overflow:hidden}.settings-content--fullpage[data-v-fe62adaa] .api-docs{flex:1;min-height:0}@media (max-width:640px){.settings-layout[data-v-fe62adaa]{flex-direction:column}.settings-nav[data-v-fe62adaa]{border-right:none;border-bottom:1px solid var(--p-content-border-color);flex-direction:row;align-items:center;width:100%;padding:.5rem 0;position:relative}.settings-nav__title[data-v-fe62adaa]{display:none}.settings-nav__list[data-v-fe62adaa]{scrollbar-width:none;flex-direction:row;flex:1;gap:0;padding:0 .25rem;overflow-x:auto}.settings-nav__list[data-v-fe62adaa]::-webkit-scrollbar{display:none}.settings-nav__item[data-v-fe62adaa]{white-space:nowrap;border-radius:6px;flex-direction:column;flex-shrink:0;gap:.25rem;margin:0;padding:.4rem .75rem;font-size:.7rem}.settings-nav__icon[data-v-fe62adaa]{font-size:1rem}.settings-nav__chevron[data-v-fe62adaa]{cursor:pointer;width:2rem;height:2rem;color:var(--p-text-muted-color);background:0 0;border:none;border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;transition:background .15s,color .15s;display:flex}.settings-nav__chevron[data-v-fe62adaa]:hover{background:var(--p-content-hover-background);color:var(--p-text-color)}.settings-content[data-v-fe62adaa]{padding:1rem}}@media (min-width:641px){.settings-nav__chevron[data-v-fe62adaa]{display:none}}.section-header[data-v-fe62adaa]{margin-bottom:1.5rem}.section-header--has-actions[data-v-fe62adaa]{justify-content:space-between;align-items:flex-start;gap:1rem;display:flex}.section-header__text[data-v-fe62adaa]{flex:1;min-width:0}.section-header__actions[data-v-fe62adaa]{flex-shrink:0;align-self:center}.section-title[data-v-fe62adaa]{margin:0 0 .25rem;font-size:1.25rem;font-weight:700}.section-desc[data-v-fe62adaa]{color:var(--p-text-muted-color);margin:0;font-size:.875rem}
|