@runeya/runeya 2.0.134 → 2.0.136
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/{chat-IQBWQCTK.js → chat-UBUGGGBZ.js} +3 -3
- package/{chunk-GISLEYNE.js → chunk-5JUONZ3G.js} +3 -3
- package/{chunk-M3UUGW5Z.js → chunk-G4CR7O3L.js} +66 -395
- package/chunk-G4CR7O3L.js.map +1 -0
- package/{companion-YQ7CGW7W.js → companion-U3FKH7SQ.js} +2 -2
- package/index.js +3 -3
- package/package.json +1 -1
- package/{src-NMMPS4ZF.js → src-XAKZS5VF.js} +4 -4
- package/{src-NMMPS4ZF.js.map → src-XAKZS5VF.js.map} +1 -1
- package/web/assets/{AgentScalarChatInterface.vue-BMJAUTbn.js → AgentScalarChatInterface.vue-BGGkpyp3.js} +3 -3
- package/web/assets/AgentTerminalPage-B8gLray2.js +1 -0
- package/web/assets/AiChatPage-BKITsyMx.js +1 -0
- package/web/assets/AppLayout-B72S4nTi.css +1 -0
- package/web/assets/AppLayout-BYw7v2sp.js +1 -0
- package/web/assets/AuditPage-nHTwzyia.js +1 -0
- package/web/assets/CloudAccountPage-DuaZz2j4.js +1 -0
- package/web/assets/CloudAccountPage-XHxI-ixD.js +1 -0
- package/web/assets/CloudMessagingPage-B2N5K-Xs.js +2 -0
- package/web/assets/DashboardPage-Bd1Y_T3b.css +1 -0
- package/web/assets/DashboardPage-VoWJeWh_.js +1 -0
- package/web/assets/DirectoryPickerDialog-B5SuJOhv.js +1 -0
- package/web/assets/{EditorIcon-V_Fqyf2s.js → EditorIcon-DXYoMZnL.js} +2 -2
- package/web/assets/{EnvironmentForm-qlF1EeZ2.js → EnvironmentForm-D3pZuxVn.js} +2 -2
- package/web/assets/EnvironmentFormPage-BIXbPTN5.js +1 -0
- package/web/assets/EnvironmentListPage-CHa-Ni3w.js +1 -0
- package/web/assets/KanbanBoardPage-B46zbE2H.css +1 -0
- package/web/assets/KanbanBoardPage-BFTNpm8P.js +4 -0
- package/web/assets/KanbanListPage-CYuIrKXH.js +1 -0
- package/web/assets/KanbanListPage-DxJFx6A6.css +1 -0
- package/web/assets/LaunchProjectPage-9hhGBdOh.css +1 -0
- package/web/assets/LaunchProjectPage-jy-R3Fiw.js +1 -0
- package/web/assets/LaunchServicesPage-BMtm_8yP.css +1 -0
- package/web/assets/LaunchServicesPage-DX7nyo36.js +1 -0
- package/web/assets/LaunchShell-BHfseuPM.js +1 -0
- package/web/assets/LaunchShell-HenrOlHV.css +1 -0
- package/web/assets/LogViewer-C-pHXudR.js +3 -0
- package/web/assets/OrgKeyPrompt-OPnK5oPm.js +1 -0
- package/web/assets/OrgLogo-Cxa49Tl3.js +1 -0
- package/web/assets/ProcessControls-DXDyR6XX.js +1 -0
- package/web/assets/ProcessDetailPage-DNKTwgPW.js +1 -0
- package/web/assets/ProcessMetrics-CdQc_8Z0.js +168 -0
- package/web/assets/RandomJobTestPage-BE8HkgSb.js +2 -0
- package/web/assets/ScenarioEditorPage-COC03w7b.css +1 -0
- package/web/assets/ScenarioEditorPage-Coo6ExzZ.js +14 -0
- package/web/assets/SendToChatDialog-ClXerpCU.js +1 -0
- package/web/assets/ServiceControlsBar-C7HrPjQI.js +1 -0
- package/web/assets/{ServiceDetailPage-cQNK1uWq.css → ServiceDetailPage-BhFOqSte.css} +1 -1
- package/web/assets/ServiceDetailPage-Cxuy0Yix.js +2 -0
- package/web/assets/ServiceFormPage-CCOu1h8v.js +1 -0
- package/web/assets/{SettingsPage-B7yKfXK2.css → SettingsPage-DA7lVKfg.css} +1 -1
- package/web/assets/SettingsPage-Dt1ViDQe.js +2063 -0
- package/web/assets/UnlockPage-C5iEOAKH.js +1 -0
- package/web/assets/UnlockPage-DR-Vy9-Y.css +1 -0
- package/web/assets/VaultMigrationPage-CwRWvFY7.js +1 -0
- package/web/assets/VersionBadge-Bqb72GXf.js +1 -0
- package/web/assets/VersionBadge-DUFbwfrl.css +1 -0
- package/web/assets/WikiPage-Bl1jDKKp.js +1 -0
- package/web/assets/WikiView-58u6vU3q.js +1 -0
- package/web/assets/WikiView-BqO5AEaY.css +1 -0
- package/web/assets/add-scalar-classes-CT5KQbzH.js +387 -0
- package/web/assets/{autocomplete-DKHFlhhO.js → autocomplete-DobAPPYJ.js} +3 -3
- package/web/assets/{basic-shape-diamond.svg-DCxdtThm.js → basic-shape-diamond.svg-FbeAPLc-.js} +1 -1
- package/web/assets/{basic-shape-hexagon.svg-BllqL52E.js → basic-shape-hexagon.svg-CtwcdpTe.js} +1 -1
- package/web/assets/{basic-shape-primary-circle-ellipse-round.svg-qsZEp39q.js → basic-shape-primary-circle-ellipse-round.svg-DsSs3S2_.js} +1 -1
- package/web/assets/{basic-shape-primary-square-rectangle.svg-DrsT6mAT.js → basic-shape-primary-square-rectangle.svg-CNe1RNx8.js} +1 -1
- package/web/assets/{basic-shape-shield.svg-Cbxs8_Nf.js → basic-shape-shield.svg-DwZMLfah.js} +1 -1
- package/web/assets/{browser-pqiHj2Ya.js → browser-DsZ9HxVm.js} +1 -1
- package/web/assets/{browser-3Xde4kSz.js → browser-Dz1gvldT.js} +1 -1
- package/web/assets/card-46tM5yU0.js +32 -0
- package/web/assets/{checkbox-BcVCOcOx.js → checkbox-DPknldTJ.js} +3 -3
- package/web/assets/chevronup-D2Lr2GiV.js +151 -0
- package/web/assets/{chip-DCUZHTdu.js → chip-Caiakd-N.js} +2 -2
- package/web/assets/client-KL5c1Dog.js +24 -0
- package/web/assets/cloud-chat.store-Belo5SKd.js +1 -0
- package/web/assets/cloud-client-Cqa2Udt8.js +1 -0
- package/web/assets/cloud-session-56bUtkSL.js +2 -0
- package/web/assets/cloud-session-Dqm0C6H5.js +1 -0
- package/web/assets/column-DQ53_qc6.js +763 -0
- package/web/assets/composables-CHyZa9ag.js +1 -0
- package/web/assets/{computer-device-desktop-monitor.svg-2AkCd4Vg.js → computer-device-desktop-monitor.svg-CwiGN14T.js} +1 -1
- package/web/assets/{computer-device-desktop.svg-BX6dDfTh.js → computer-device-desktop.svg-BC2VdXDZ.js} +1 -1
- package/web/assets/{computer-device-laptop.svg-DQot5tMG.js → computer-device-laptop.svg-BOp8AKN6.js} +1 -1
- package/web/assets/{computer-device-mobile-phone-android-samsung-back.svg-BqQpExMo.js → computer-device-mobile-phone-android-samsung-back.svg-CmbpPX1u.js} +1 -1
- package/web/assets/{computer-device-mobile-phone-android-samsung.svg-uWqzS9ou.js → computer-device-mobile-phone-android-samsung.svg-_WGKWVtZ.js} +1 -1
- package/web/assets/{computer-device-mobile-phone-iphone-x-back.svg-lGlmpWrH.js → computer-device-mobile-phone-iphone-x-back.svg-DmLh97KG.js} +1 -1
- package/web/assets/{computer-device-mobile-phone-iphone-x.svg-BZkIeiFY.js → computer-device-mobile-phone-iphone-x.svg-C7-5mdyV.js} +1 -1
- package/web/assets/{computer-device-mobile-tablet-touch.svg-BIY2ojxF.js → computer-device-mobile-tablet-touch.svg-DiUaSnhU.js} +1 -1
- package/web/assets/{computer-device-mobile-tablet.svg-EsUtZRCO.js → computer-device-mobile-tablet.svg-B6nfbYm_.js} +1 -1
- package/web/assets/{computer-device-network-ethernet-cat6.svg-CFYKvBLS.js → computer-device-network-ethernet-cat6.svg-DwtVKy79.js} +1 -1
- package/web/assets/{computer-device-network-lan-www.svg-DD140-i0.js → computer-device-network-lan-www.svg-vQKfG3Xz.js} +1 -1
- package/web/assets/{computer-device-network-wifi-connection.svg-B6xlwqRF.js → computer-device-network-wifi-connection.svg-DhHaOUge.js} +1 -1
- package/web/assets/{computer-device-network-wifi-router.svg-D2oEGuXL.js → computer-device-network-wifi-router.svg-1dQS4k4J.js} +1 -1
- package/web/assets/{cssMode-CyhbxQFj.js → cssMode-CdQL22W5.js} +1 -1
- package/web/assets/{divider-bEPGnPmT.js → divider-DhYR4BAO.js} +2 -2
- package/web/assets/{docx-preview-CPCu7gIi.js → docx-preview-D-jP_CCs.js} +1 -1
- package/web/assets/{ecology-science-erlenmeyer-flask.svg-C3Zo72lq.js → ecology-science-erlenmeyer-flask.svg-D76wQVA2.js} +1 -1
- package/web/assets/{fieldset-BSON_QE9.js → fieldset-BtOjs_Hh.js} +2 -2
- package/web/assets/{freemarker2-764Mz1z9.js → freemarker2-BADW9vhy.js} +1 -1
- package/web/assets/{handlebars-BcplsCVf.js → handlebars-CwWQD_C8.js} +1 -1
- package/web/assets/{html-Ab2Gwigb.js → html-y87CEbe3.js} +1 -1
- package/web/assets/{htmlMode-D8yRZKkz.js → htmlMode-CVagtvVh.js} +1 -1
- package/web/assets/{image-flash-lightning.svg-D-jM06gw.js → image-flash-lightning.svg-OvpKi3a3.js} +1 -1
- package/web/assets/{image-picture-flower.svg-X2opjZMU.js → image-picture-flower.svg-DLOePozT.js} +1 -1
- package/web/assets/index-CKOtBNaZ.css +1 -0
- package/web/assets/{index-CI76mltd.js → index-CcIrffU_.js} +363 -583
- package/web/assets/{interface-alert-exclamation-diamond.svg-B3xHmrw0.js → interface-alert-exclamation-diamond.svg-4Vk7SoQ1.js} +1 -1
- package/web/assets/{interface-alert-exclamation-triangle-warning.svg-BYsDqmTI.js → interface-alert-exclamation-triangle-warning.svg-BLAvc4am.js} +1 -1
- package/web/assets/{interface-alert-information-circle.svg-CC4CgbBo.js → interface-alert-information-circle.svg-CaAXpDAI.js} +1 -1
- package/web/assets/{interface-award-crown.svg-B08Pbh8m.js → interface-award-crown.svg-CW7XG0wx.js} +1 -1
- package/web/assets/{interface-bookmark.svg-CS29ZpkA.js → interface-bookmark-tag.svg-DPWVVeZU.js} +1 -1
- package/web/assets/{interface-bookmark-tag.svg-BcxMXdHY.js → interface-bookmark.svg-BpLEuOv2.js} +1 -1
- package/web/assets/{interface-calendar-date-one.svg-QnK7dekM.js → interface-calendar-date-one.svg-DbBgvI4W.js} +1 -1
- package/web/assets/{interface-content-book-open-pages.svg-C4tNKeZR.js → interface-content-book-open-pages.svg-BbsuvPZM.js} +1 -1
- package/web/assets/{interface-content-book-page.svg-6Rp1a1dk.js → interface-content-book-page.svg-DbRPz1j8.js} +1 -1
- package/web/assets/{interface-content-file.svg-llFUOjLX.js → interface-content-file.svg-OJPKABxS.js} +1 -1
- package/web/assets/{interface-content-folder.svg-OI_omwbE.js → interface-content-folder.svg-3D_5OE_-.js} +1 -1
- package/web/assets/interface-content-folder.svg-8mYqkDao.js +1 -0
- package/web/assets/{interface-copy-clipboard.svg-Cz3_mRtM.js → interface-copy-clipboard.svg-DqthVh9J.js} +1 -1
- package/web/assets/{interface-edit-attachment.svg-DXOfVMyI.js → interface-edit-attachment.svg-BAPCnZ0B.js} +1 -1
- package/web/assets/{interface-edit-binocular.svg-Bx3DHzuZ.js → interface-edit-binocular.svg-BoV39ouF.js} +1 -1
- package/web/assets/{interface-edit-magic-wand.svg-CAfIYJHR.js → interface-edit-magic-wand.svg-Cz36nKVn.js} +1 -1
- package/web/assets/{interface-edit-tool-paint-roller.svg-FMiiT6dK.js → interface-edit-tool-paint-roller.svg-DZUQotD5.js} +1 -1
- package/web/assets/{interface-edit-tool-pencil.svg-DbkLSbF0.js → interface-edit-tool-pencil.svg-DBf1Y9Tj.js} +1 -1
- package/web/assets/{interface-favorite-award.svg-hIvxW1cg.js → interface-favorite-award.svg-B93sRjxf.js} +1 -1
- package/web/assets/{interface-favorite-flag.svg-CXlWtfuy.js → interface-favorite-flag.svg-DKHuT11J.js} +1 -1
- package/web/assets/{interface-favorite-heart.svg-BzYW_bf1.js → interface-favorite-heart.svg-Bw5FZQ7d.js} +1 -1
- package/web/assets/{interface-favorite-star.svg-C-Um6PkR.js → interface-favorite-star.svg-CgLbct_b.js} +1 -1
- package/web/assets/{interface-favorite-stars-sparkles.svg-DO6EAdIZ.js → interface-favorite-stars-sparkles.svg-B7cYS4ef.js} +1 -1
- package/web/assets/{interface-hierarchy-flowchart.svg-CT5ujWQr.js → interface-hierarchy-flowchart.svg-zwuaRdWq.js} +1 -1
- package/web/assets/{interface-home-house.svg-Inv2Er4f.js → interface-home-house.svg-B85yMFCe.js} +1 -1
- package/web/assets/{interface-hyperlink.svg-6GygCg4m.js → interface-hyperlink.svg-US6b-Svn.js} +1 -1
- package/web/assets/{interface-lighting-brightness.svg-DWnle7Gq.js → interface-lighting-brightness.svg-mZWkhb7f.js} +1 -1
- package/web/assets/{interface-lock-closed.svg-D-wTtQo2.js → interface-lock-closed.svg-9oHuNwuY.js} +1 -1
- package/web/assets/{interface-lock-open-unlock.svg-B_c9nJ0x.js → interface-lock-open-unlock.svg-DBetdJny.js} +1 -1
- package/web/assets/{interface-login-key.svg-UCNam9v0.js → interface-login-key.svg-BZnZTYd1.js} +1 -1
- package/web/assets/{interface-search.svg-BCkx6NFS.js → interface-search.svg-CMXAOoam.js} +1 -1
- package/web/assets/{interface-setting-cog.svg-B72XaLKk.js → interface-setting-cog.svg-CKckatt7.js} +1 -1
- package/web/assets/{interface-share-megaphone-bullhorn.svg-M_vr4ET6.js → interface-share-megaphone-bullhorn.svg-DH7kVqN-.js} +1 -1
- package/web/assets/{interface-share-rocket.svg-c3ZAv4Fq.js → interface-share-rocket.svg-BNXcMugi.js} +1 -1
- package/web/assets/{interface-share-satellite.svg-C-cwO4ZJ.js → interface-share-satellite.svg-Bb8t607w.js} +1 -1
- package/web/assets/{interface-share-space-ship.svg-7YTjWYKO.js → interface-share-space-ship.svg-Dk4rbLtF.js} +1 -1
- package/web/assets/{interface-share.svg-DJwukuDM.js → interface-share.svg-CtX8dq5i.js} +1 -1
- package/web/assets/{interface-signal-square.svg-BpoFub4k.js → interface-signal-square.svg-DmUIlYTd.js} +1 -1
- package/web/assets/{interface-time-clock-circle.svg-xsV2D_qB.js → interface-time-clock-circle.svg-D2ZNaXT3.js} +1 -1
- package/web/assets/{interface-time-hour-glass.svg-4ENYolRr.js → interface-time-hour-glass.svg-Ddo-8hHe.js} +1 -1
- package/web/assets/{interface-users-multiple.svg-eev_D0ig.js → interface-users-multiple.svg-Jh7S0sT4.js} +1 -1
- package/web/assets/{interface-weather-moon.svg-CrLYHTyu.js → interface-weather-moon.svg-DbdQFgL2.js} +1 -1
- package/web/assets/{javascript-DU1DQexv.js → javascript-BVGFyXBk.js} +1 -1
- package/web/assets/{jsonMode-CB8B-oHc.js → jsonMode-vnFlxYl9.js} +2 -2
- package/web/assets/{liquid-Dumxg7oa.js → liquid-DieKMEvN.js} +1 -1
- package/web/assets/{lspLanguageFeatures-DQTWe8ey.js → lspLanguageFeatures-DoeI-8Y7.js} +3 -3
- package/web/assets/{mail-chat-bubble-square.svg-DMcOjB2m.js → mail-chat-bubble-square.svg-CApdU2ea.js} +1 -1
- package/web/assets/{mail-send-email-paper-airplane.svg-CKpmx979.js → mail-send-email-paper-airplane.svg-jjZ0KB32.js} +1 -1
- package/web/assets/{mail-send-envelope.svg-C-WAmEPg.js → mail-send-envelope.svg-B6Tsoh-8.js} +1 -1
- package/web/assets/{mdx-DNzXmMw3.js → mdx-BCkszXid.js} +1 -1
- package/web/assets/{minus-CmvRtEQe.js → minus-DfLQX3s2.js} +2 -2
- package/web/assets/modal-CCco27Sn.js +5 -0
- package/web/assets/modal-D4J85_wC.js +1 -0
- package/web/assets/{money-cashier-receipt.svg-DeL4SF6F.js → money-cashier-receipt.svg-DM-I8Snr.js} +1 -1
- package/web/assets/{money-currency-dollar-pay.svg-DCIbDsIr.js → money-currency-dollar-pay.svg-CkDRewrV.js} +1 -1
- package/web/assets/{money-graph-arrow-increase.svg-NDD5MY4C.js → money-graph-arrow-increase.svg-BT4KLHWz.js} +1 -1
- package/web/assets/{money-graph-bar-chart-increase.svg-CqFZrAkq.js → money-graph-bar-chart-increase.svg-EvyIJ3Uu.js} +1 -1
- package/web/assets/multiselect-BmjidXlj.js +251 -0
- package/web/assets/{nature-ecology-leaf.svg-C74TcBty.js → nature-ecology-leaf.svg-uZBwXdg9.js} +1 -1
- package/web/assets/page-actions-DofPMoFe.js +1 -0
- package/web/assets/{password-Cf8j-GkJ.js → password-D1R5w1qL.js} +4 -4
- package/web/assets/{phone-telephone.svg-BeNULj1e.js → phone-telephone.svg-BSvOskIB.js} +1 -1
- package/web/assets/{plus-hUxz8lH_.js → plus-CNGSRnxy.js} +6 -6
- package/web/assets/process.store-p1LqnpY2.js +1 -0
- package/web/assets/{programming-bug.svg-DSydJcD0.js → programming-bug.svg-CLnGs4K-.js} +1 -1
- package/web/assets/{programming-cloud.svg-2xUngU0S.js → programming-cloud.svg-CxBovXBR.js} +1 -1
- package/web/assets/{programming-computer-database-server.svg-TAX5z1tR.js → programming-computer-database-server.svg-C1JmOyio.js} +1 -1
- package/web/assets/{programming-computer-database.svg-mO5bElVh.js → programming-computer-database.svg-BRjyOzP4.js} +1 -1
- package/web/assets/{programming-module-four-layout.svg-Dr767G1Z.js → programming-module-four-layout.svg-Blwzw6Qz.js} +1 -1
- package/web/assets/{programming-module-three.svg-D4oVsZl_.js → programming-module-three.svg-6bkrmWsU.js} +1 -1
- package/web/assets/{programming-module.svg-wdwopIvm.js → programming-module.svg-CBS9xKxX.js} +1 -1
- package/web/assets/{programming-script-code.svg-DBPWoki2.js → programming-script-code.svg-BVhyoAD3.js} +1 -1
- package/web/assets/project-launch.store-BBYtCcv8.js +1 -0
- package/web/assets/project.store-D_2v7amt.js +1 -0
- package/web/assets/{python-BE5DaTS2.js → python-CiPYtj_d.js} +1 -1
- package/web/assets/{radiobutton-CImlBTBP.js → radiobutton--KWBHcDP.js} +3 -2
- package/web/assets/{razor-Cmx-7XPV.js → razor-CSoWGP30.js} +1 -1
- package/web/assets/router-CRKT3825.js +1 -0
- package/web/assets/{selectbutton-BhpYZyFl.js → selectbutton-C0NL5n4w.js} +4 -4
- package/web/assets/settings-scope-DblmUa3N.js +1 -0
- package/web/assets/{settings.store-DridR-ck.js → settings.store-DKTQyerJ.js} +1 -1
- package/web/assets/{shopping-cart.svg-C3En9-vl.js → shopping-cart.svg-C-8NG_Po.js} +1 -1
- package/web/assets/{shopping-gift-present.svg-7p-hRdPX.js → shopping-gift-present.svg-Bp6q5VzJ.js} +1 -1
- package/web/assets/{shopping-shipping-box-parcel-package.svg-BWbZhI8w.js → shopping-shipping-box-parcel-package.svg-DeWaEIwm.js} +1 -1
- package/web/assets/{src-DTiDFW3B.js → src-BHR3l7pa.js} +35 -35
- package/web/assets/{src-BM_sDDlr.css → src-BN5gTC76.css} +1 -1
- package/web/assets/src-BRLkogf3.js +1 -0
- package/web/assets/{tag-new-circle.svg-Spe566L2.js → tag-new-circle.svg-CTljXsqE.js} +1 -1
- package/web/assets/theme-BZzt_Sgl.js +1 -0
- package/web/assets/{toggleswitch-CZCAv-jp.js → toggleswitch-d41l5g27.js} +2 -2
- package/web/assets/{travel-map-earth-globe.svg-DKz5j-UT.js → travel-map-earth-globe.svg-BUkcntCp.js} +1 -1
- package/web/assets/trpc-Db0Atu8A.js +1 -0
- package/web/assets/{tsMode-AQ4klRHU.js → tsMode-B2c-rCAa.js} +4 -4
- package/web/assets/{typescript-yluvE--_.js → typescript-CmW4u_GQ.js} +1 -1
- package/web/assets/useAiChatDrawer-0QJJVXul.js +1 -0
- package/web/assets/useCloudOrg-E4l-99WA.js +1 -0
- package/web/assets/useEnvVarAutocomplete-BDqUWoGr.js +102 -0
- package/web/assets/{useProjectCatalog-BGdTjXzH.js → useProjectCatalog-Cxt-hL1H.js} +1 -1
- package/web/assets/useProjectCloudOrg-CwLTQLIO.js +1 -0
- package/web/assets/useServiceUrlHost-VIA3uP5-.js +1 -0
- package/web/assets/{xml-BEYNsHpr.js → xml-BxMqu3hT.js} +1 -1
- package/web/assets/{yaml-CdJTW_Jy.js → yaml-Djx7E3R1.js} +1 -1
- package/web/index.html +2 -2
- package/chunk-M3UUGW5Z.js.map +0 -1
- package/web/assets/AgentTerminalPage-DJny5leF.js +0 -1
- package/web/assets/AiChatPage-Co5YwUra.js +0 -1
- package/web/assets/AppLayout-DhRnQ7sB.js +0 -1
- package/web/assets/AppLayout-lOwRflWA.css +0 -1
- package/web/assets/AuditPage-B87IuU2E.js +0 -1
- package/web/assets/CloudAccountPage-B9zHVg91.js +0 -1
- package/web/assets/CloudAccountPage-ClRW-luH.js +0 -1
- package/web/assets/CloudMessagingPage-Cil491lq.js +0 -2
- package/web/assets/DashboardPage-DRZGWuU1.css +0 -1
- package/web/assets/DashboardPage-vQ69rIA_.js +0 -1
- package/web/assets/DirectoryPickerDialog-BZG4wryg.js +0 -1
- package/web/assets/EnvironmentFormPage-BrW-34oI.js +0 -1
- package/web/assets/EnvironmentListPage-BdEPphrn.js +0 -1
- package/web/assets/KanbanBoardPage-DQKqtxxI.js +0 -4
- package/web/assets/KanbanBoardPage-cXyI-2uZ.css +0 -1
- package/web/assets/KanbanListPage-5-yh2hO3.js +0 -1
- package/web/assets/KanbanListPage-pCWYPwBv.css +0 -1
- package/web/assets/LaunchProjectPage-CHeYx5v0.css +0 -1
- package/web/assets/LaunchProjectPage-g_5Wme1T.js +0 -1
- package/web/assets/LaunchServicesPage-BxUrOZ44.js +0 -1
- package/web/assets/LaunchServicesPage-CPN3Z3m5.css +0 -1
- package/web/assets/LogViewer-DhTTUJLn.js +0 -3
- package/web/assets/OrgKeyPrompt-Bs08QGKq.js +0 -1
- package/web/assets/OrgLogo-CWXqzPiS.js +0 -1
- package/web/assets/ProcessControls-DIN7XQOl.js +0 -1
- package/web/assets/ProcessDetailPage-DMFYdJO6.js +0 -1
- package/web/assets/ProcessMetrics-DED63acT.js +0 -51
- package/web/assets/RandomJobTestPage-CqOMbdjK.js +0 -2
- package/web/assets/ScenarioEditorPage-DPuYttHT.js +0 -14
- package/web/assets/ScenarioEditorPage-GmFIXPDj.css +0 -1
- package/web/assets/SendToChatDialog-qbllbAWj.js +0 -1
- package/web/assets/ServiceControlsBar-DxPLkFTF.js +0 -1
- package/web/assets/ServiceDetailPage-Cp0zW4vF.js +0 -2
- package/web/assets/ServiceFormPage-COy2T7gp.js +0 -1
- package/web/assets/SettingsPage-DsLaZJWX.js +0 -2063
- package/web/assets/UnlockPage-DU3hoV78.css +0 -1
- package/web/assets/UnlockPage-shod0TOQ.js +0 -1
- package/web/assets/VaultMigrationPage-BDJIDUa6.js +0 -1
- package/web/assets/VersionBadge-CgHek52W.css +0 -1
- package/web/assets/VersionBadge-V6I68xY-.js +0 -1
- package/web/assets/WikiPage-CRPtaZ4n.js +0 -1
- package/web/assets/WikiView-CaUVD3f1.css +0 -1
- package/web/assets/WikiView-trPq-25v.js +0 -1
- package/web/assets/add-scalar-classes-CSUXL3L0.js +0 -387
- package/web/assets/card-wrii-nrq.js +0 -32
- package/web/assets/client-B9hsmT1s.js +0 -24
- package/web/assets/cloud-chat.store-o00oRsgO.js +0 -1
- package/web/assets/cloud-client-TKLL1zwR.js +0 -1
- package/web/assets/cloud-session-B9wU6_5G.js +0 -2
- package/web/assets/cloud-session-DloNvu91.js +0 -1
- package/web/assets/column-DA7ijaud.js +0 -763
- package/web/assets/composables-DgWeyWnW.js +0 -1
- package/web/assets/index-rUoTy8xc.css +0 -1
- package/web/assets/interface-content-folder.svg-D9afgGr0.js +0 -1
- package/web/assets/modal-C0O2XBPJ.js +0 -5
- package/web/assets/modal-DRUfpIPe.js +0 -1
- package/web/assets/multiselect-C3dGhKnP.js +0 -251
- package/web/assets/process.store-TQsoI7AA.js +0 -1
- package/web/assets/project-launch.store-CZsTY83m.js +0 -1
- package/web/assets/project.store-eIP8RM3Q.js +0 -1
- package/web/assets/router-CVSY8aIb.js +0 -1
- package/web/assets/settings-scope-CxYQcvAR.js +0 -1
- package/web/assets/src-isLSni-N.js +0 -1
- package/web/assets/tabpanel-Bfol4XTd.js +0 -150
- package/web/assets/theme-4th617B_.js +0 -1
- package/web/assets/trpc-CBXwYAMy.js +0 -1
- package/web/assets/useAiChatDrawer-D_AzdjrA.js +0 -1
- package/web/assets/useCloudOrg-b-QnhnSc.js +0 -1
- package/web/assets/useEnvVarAutocomplete-Bj9GeijO.js +0 -1
- package/web/assets/useProjectCloudOrg-DQJMaDXR.js +0 -1
- package/web/assets/useServiceUrlHost-BezQuX2r.js +0 -1
- /package/{chat-IQBWQCTK.js.map → chat-UBUGGGBZ.js.map} +0 -0
- /package/{chunk-GISLEYNE.js.map → chunk-5JUONZ3G.js.map} +0 -0
- /package/{companion-YQ7CGW7W.js.map → companion-U3FKH7SQ.js.map} +0 -0
- /package/web/assets/{abap-BMzrySmF.js → abap-BwLGULgU.js} +0 -0
- /package/web/assets/{apex-B-FTsm78.js → apex-BmwhxS2n.js} +0 -0
- /package/web/assets/{azcli--oTP982j.js → azcli-7RvE_Zal.js} +0 -0
- /package/web/assets/{bat-BoGrdVjd.js → bat-DRPmS6Na.js} +0 -0
- /package/web/assets/{bicep-CzjrcFxJ.js → bicep-BwfkS7ZV.js} +0 -0
- /package/web/assets/{browser-TSICzjSV.js → browser-D3d3061H.js} +0 -0
- /package/web/assets/{cameligo-C5PP9BK8.js → cameligo-BJ_mdC8E.js} +0 -0
- /package/web/assets/{clojure-CQZ7UtVM.js → clojure-CQKq7DWt.js} +0 -0
- /package/web/assets/{coffee-D04oxsa9.js → coffee-DJRj2iwd.js} +0 -0
- /package/web/assets/{cpp-CrdHZict.js → cpp-BC1yJTUW.js} +0 -0
- /package/web/assets/{csharp-DEojCdJ9.js → csharp-D6U2fAAT.js} +0 -0
- /package/web/assets/{csp-B_k4_rnT.js → csp-B2Ue_UmV.js} +0 -0
- /package/web/assets/{css-pkVaNQ-t.js → css-CEzlcbMY.js} +0 -0
- /package/web/assets/{cypher-InDI0ycO.js → cypher-D5Sg38Yj.js} +0 -0
- /package/web/assets/{dart-CMBDu6Jq.js → dart-BhjKRv6v.js} +0 -0
- /package/web/assets/{dockerfile-Dus6X0qp.js → dockerfile-BnivEbtE.js} +0 -0
- /package/web/assets/{ecl-DcGwRpWZ.js → ecl-TS1StLK1.js} +0 -0
- /package/web/assets/{elixir-BNgAfgpS.js → elixir-BX9ta6DO.js} +0 -0
- /package/web/assets/{flow9-b9BSTtId.js → flow9-CoOB42ee.js} +0 -0
- /package/web/assets/{fsharp-DsEl3ylC.js → fsharp-DmQslDFn.js} +0 -0
- /package/web/assets/{go-BVk-2zoJ.js → go-BbEGGooY.js} +0 -0
- /package/web/assets/{graphql-CCOPKJOV.js → graphql-E24y5sn9.js} +0 -0
- /package/web/assets/{hcl-Bk9fje7b.js → hcl-pBZphP8G.js} +0 -0
- /package/web/assets/{ini-Bfgwaf--.js → ini-BSbRgr25.js} +0 -0
- /package/web/assets/{java-X9tlBUoe.js → java-D8KvzsMp.js} +0 -0
- /package/web/assets/{julia-CSpUiZse.js → julia-BDRytf15.js} +0 -0
- /package/web/assets/{kotlin-D9ZC3fV-.js → kotlin-CNcQo-uP.js} +0 -0
- /package/web/assets/{less-D_gN2wJJ.js → less-0HRV-2Rz.js} +0 -0
- /package/web/assets/{lexon-DQORBJ3L.js → lexon-DdJG3_pW.js} +0 -0
- /package/web/assets/{lua-cfsK9g-g.js → lua-Blq8Mukj.js} +0 -0
- /package/web/assets/{m3-CqoRZqX5.js → m3-CXbmzr9W.js} +0 -0
- /package/web/assets/{markdown-7m0w-Hon.js → markdown-DFIISzT8.js} +0 -0
- /package/web/assets/{mips-Jgck3TtW.js → mips-C2XSYglv.js} +0 -0
- /package/web/assets/{msdax-DZzPcvtl.js → msdax-D3Jl6oAY.js} +0 -0
- /package/web/assets/{mysql-BDgvhBkY.js → mysql-mCqxt_Co.js} +0 -0
- /package/web/assets/{objective-c-s7vO3TPA.js → objective-c-CUKLr4E9.js} +0 -0
- /package/web/assets/{pascal-WgQqmw9E.js → pascal-BpqDI6Ur.js} +0 -0
- /package/web/assets/{pascaligo-DdIoMHxz.js → pascaligo-BVchPyL4.js} +0 -0
- /package/web/assets/{perl-DscrjHeC.js → perl-Dgc9v23P.js} +0 -0
- /package/web/assets/{pgsql-BoaUrFoQ.js → pgsql-Dk9IX1G_.js} +0 -0
- /package/web/assets/{php-CozsHsln.js → php-XeFLn3yL.js} +0 -0
- /package/web/assets/{pla-BmgIF2rB.js → pla-DQMfrdXZ.js} +0 -0
- /package/web/assets/{postiats-kTIQO6-c.js → postiats-DiKrdL3K.js} +0 -0
- /package/web/assets/{powerquery-Bge8QN2f.js → powerquery-Cj9Q91Zv.js} +0 -0
- /package/web/assets/{powershell-C_EAICI2.js → powershell-DxLElnzU.js} +0 -0
- /package/web/assets/{protobuf-CeVRf2v4.js → protobuf-7vT2HdZD.js} +0 -0
- /package/web/assets/{pug-v3OQoW7_.js → pug-oi96TUbQ.js} +0 -0
- /package/web/assets/{qsharp-B8FD4CzE.js → qsharp-DNr9IwS2.js} +0 -0
- /package/web/assets/{r-DoTn9Ot2.js → r-C-REi_Zk.js} +0 -0
- /package/web/assets/{redis-B9eZmNDt.js → redis-BvOCrLoN.js} +0 -0
- /package/web/assets/{redshift-hkVOq3Na.js → redshift-jNEw-REz.js} +0 -0
- /package/web/assets/{restructuredtext-go0p3fHP.js → restructuredtext-B9ET-x7N.js} +0 -0
- /package/web/assets/{ruby-DlJSZQx7.js → ruby-BIEBiJDZ.js} +0 -0
- /package/web/assets/{rust-CS0ULEAB.js → rust-BnoIVewm.js} +0 -0
- /package/web/assets/{sb-BWXLY6C5.js → sb-Bwvy9clh.js} +0 -0
- /package/web/assets/{scala-BnuniK5f.js → scala-DPv5zS47.js} +0 -0
- /package/web/assets/{scheme-rpzgzOI1.js → scheme-BQqNVxf_.js} +0 -0
- /package/web/assets/{scss-CDZa-oHG.js → scss-Ck1AFDEz.js} +0 -0
- /package/web/assets/{shell-Ddbp1LTu.js → shell-C4IYs9Z7.js} +0 -0
- /package/web/assets/{solidity-XL5oY4Gs.js → solidity-D3bS77xq.js} +0 -0
- /package/web/assets/{sophia-C_FAm0DW.js → sophia-BSTVfueD.js} +0 -0
- /package/web/assets/{sparql-Bkcu5lIB.js → sparql-BGcXD7s2.js} +0 -0
- /package/web/assets/{sql-hd2WP_Pl.js → sql-CIsSgyam.js} +0 -0
- /package/web/assets/{st-DX23wqhB.js → st-dV1d_AXx.js} +0 -0
- /package/web/assets/{swift-Uc9uURgY.js → swift-CK8gXWQn.js} +0 -0
- /package/web/assets/{systemverilog-uwEj3oP7.js → systemverilog-B9tHBIJU.js} +0 -0
- /package/web/assets/{tcl-CW0gNQFo.js → tcl-BgRT60RV.js} +0 -0
- /package/web/assets/{twig-C-fOaHGU.js → twig-CGkLO4Nl.js} +0 -0
- /package/web/assets/{typespec-Cs66OMeg.js → typespec-DMP9WuzC.js} +0 -0
- /package/web/assets/{uuid-hYISTbX6.js → uuid-H0yY5A03.js} +0 -0
- /package/web/assets/{vb-f4DjbovN.js → vb-DfSbhl3d.js} +0 -0
- /package/web/assets/{wgsl-D8hs7PJh.js → wgsl-CaJmoLY5.js} +0 -0
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{$i as e,Bt as t,Ci as n,Cn as r,Di as i,Ei as a,Fn as o,Ga as s,Ia as c,In as l,Ln as u,Lt as d,M as f,Mi as p,Mn as m,Pi as h,Pt as g,Qn as _,Rt as v,Sa as y,Ta as b,Ti as x,Wi as S,Xt as C,Y as w,Yn as T,Z as E,Zi as D,Zn as O,_i as k,bi as A,bn as j,dt as ee,et as M,it as N,ji as P,ma as F,mn as I,nn as L,nr as te,nt as R,on as ne,p as re,pi as ie,pn as ae,pt as z,ra as B,rr as oe,sn as V,sr as H,st as se,ta as U,u as W,va as G,vi as K,wi as q,wn as J,ya as ce,yn as le,zn as Y}from"./index-CcIrffU_.js";import"./cloud-session-56bUtkSL.js";import"./src-BRLkogf3.js";import"./useServiceUrlHost-VIA3uP5-.js";import"./ProcessControls-DXDyR6XX.js";import{t as ue}from"./ServiceControlsBar-C7HrPjQI.js";import{t as de}from"./uuid-H0yY5A03.js";import{n as fe,t as X}from"./column-DQ53_qc6.js";import{n as Z}from"./plus-CNGSRnxy.js";import{t as pe}from"./checkbox-DPknldTJ.js";import"./useProjectCloudOrg-CwLTQLIO.js";import{t as me}from"./toggleswitch-d41l5g27.js";import{a as he,i as Q,n as $,r as ge,s as _e}from"./chevronup-D2Lr2GiV.js";import{a as ve,c as ye,i as be,n as xe,o as Se,r as Ce,s as we,t as Te}from"./useEnvVarAutocomplete-BDqUWoGr.js";import{t as Ee}from"./autocomplete-DobAPPYJ.js";import"./SendToChatDialog-ClXerpCU.js";import{n as De,t as Oe}from"./ProcessMetrics-CdQc_8Z0.js";import{t as ke}from"./LogViewer-C-pHXudR.js";import{t as Ae}from"./divider-DhYR4BAO.js";import{t as je}from"./settings.store-DKTQyerJ.js";import{t as Me}from"./WikiView-58u6vU3q.js";var Ne={key:0,class:`log-details`},Pe={class:`log-details__section`},Fe={class:`log-details__label`},Ie={class:`log-details__value log-details__value--box`},Le={class:`log-details__section`},Re={class:`log-details__label`},ze={class:`log-details__value log-details__value--box log-details__value--code`},Be={class:`log-details__section`},Ve={class:`log-details__label`},He={class:`log-details__value log-details__value--box`},Ue={class:`log-details__process`},We={class:`log-details__section`},Ge={class:`log-details__label`},Ke={class:`log-details__value log-details__value--box`},qe={key:0,class:`log-details__section`},Je={class:`log-details__label`},Ye={class:`log-details__value log-details__value--box log-details__value--code`,"data-testid":`log-details-cwd`},Xe={class:`log-details__section`},Ze={class:`log-details__label`},Qe={class:`log-details__value log-details__value--box`},$e={key:1,class:`log-details__section`},et={class:`log-details__label`},tt={class:`log-details__value log-details__value--box`},nt={key:2,class:`log-details__section`},rt={class:`log-details__label`},it={class:`log-details__value log-details__value--box log-details__value--code`},at=o(h({__name:`LogDetailsDrawer`,props:{visible:{type:Boolean},log:{}},emits:[`update:visible`,`view-process`],setup(e,{emit:t}){let r=e,{t:o}=H(),c=re(),u=t,d=n(()=>{if(!r.log)return``;let e=new Date(r.log.timestamp);return`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,`0`)}-${String(e.getDate()).padStart(2,`0`)} ${String(e.getHours()).padStart(2,`0`)}:${String(e.getMinutes()).padStart(2,`0`)}:${String(e.getSeconds()).padStart(2,`0`)}`}),f=n(()=>r.log?r.log.level.charAt(0).toUpperCase()+r.log.level.slice(1):``),m=n(()=>!r.log||r.log.pid==null?o(`logDetails.notAvailable`):String(r.log.pid)),h=n(()=>r.log?c.getByService(r.log.processId)[0]?.cwd??null:null);function g(){r.log&&u(`view-process`,r.log.processId)}function _(){u(`update:visible`,!1)}return(t,n)=>(U(),x(s(l),{visible:e.visible,position:`right`,header:s(o)(`logDetails.header`),style:{width:`440px`},"onUpdate:visible":_},{default:G(()=>[e.log?(U(),i(`div`,Ne,[q(`div`,Pe,[q(`div`,Fe,b(s(o)(`logDetails.type`)),1),q(`div`,Ie,b(f.value),1)]),q(`div`,Le,[q(`div`,Re,b(s(o)(`logDetails.rawMessage`)),1),q(`div`,ze,b(e.log.raw),1)]),q(`div`,Be,[q(`div`,Ve,b(s(o)(`logDetails.serviceId`)),1),q(`div`,He,[q(`div`,Ue,[q(`span`,null,b(e.log.processId),1),p(s(Y),{label:s(o)(`logDetails.viewProcess`),icon:`pi pi-external-link`,size:`small`,outlined:``,onClick:g},null,8,[`label`])])])]),q(`div`,We,[q(`div`,Ge,b(s(o)(`logDetails.pid`)),1),q(`div`,Ke,b(m.value),1)]),h.value?(U(),i(`div`,qe,[q(`div`,Je,b(s(o)(`logDetails.cwd`)),1),q(`div`,Ye,b(h.value),1)])):a(``,!0),q(`div`,Xe,[q(`div`,Ze,b(s(o)(`logDetails.timestamp`)),1),q(`div`,Qe,b(d.value),1)]),e.log.stream?(U(),i(`div`,$e,[q(`div`,et,b(s(o)(`logDetails.stream`)),1),q(`div`,tt,b(e.log.stream),1)])):a(``,!0),e.log.metadata&&Object.keys(e.log.metadata).length>0?(U(),i(`div`,nt,[q(`div`,rt,b(s(o)(`logDetails.metadata`)),1),q(`div`,it,b(JSON.stringify(e.log.metadata,null,2)),1)])):a(``,!0)])):a(``,!0)]),_:1},8,[`visible`,`header`]))}}),[[`__scopeId`,`data-v-4e3f7abe`]]),ot=500,st=5,ct=N;function lt(e){return e+Math.random()*e*.3}function ut(t,n){let i=c([]),a=c(!1),o=null,s=0,l=null,u=r(()=>{s=0,a.value||w()}),d=[],f=null,p=c(0),h=c(0),g=0,_=0,v=null;function y(){v||=setInterval(()=>{p.value=g,h.value=_,g=0,_=0},1e3)}function b(){v&&=(clearInterval(v),null),p.value=0,h.value=0,g=0,_=0}function x(){if(f=null,d.length===0)return;let e=d;d=[],_+=e.length;let t=[...i.value,...e];t.length>ot&&(t=t.slice(t.length-ot)),i.value=t}function S(){!t.value||!n.value||(a.value=!0,o=J.process.onLog.subscribe({agentId:t.value,processId:n.value},{onData(e){let t=e;if(s=0,m(`connected`),t.some(e=>e.__clearLogBuffer)){i.value=[],d=[];return}g+=t.length,d.push(...t),f===null&&(f=requestAnimationFrame(x))},onError(e){console.error(`[useLogStream] Subscription error:`,e.message),a.value=!1,o=null,C()}}))}function C(){if(s>=st){console.warn(`[useLogStream] Max retries (${st}) reached`),m(`disconnected`);return}m(`reconnecting`);let e=lt(ct*2**s);s++,l=setTimeout(()=>{l=null,w()},e)}async function w(){if(!a.value&&!(!t.value||!n.value)){s=0;try{let e=await J.process.logs.query({agentId:t.value,processId:n.value});e.length>ot&&(e=e.slice(e.length-ot)),i.value=e,m(`connected`)}catch{}S()}}function T(){l&&=(clearTimeout(l),null),f!==null&&(cancelAnimationFrame(f),f=null),d=[],b(),o&&=(o.unsubscribe(),null),a.value=!1,s=0,i.value=[]}return F([t,n],([e,t],[n,r])=>{(e!==n||t!==r)&&(a.value&&T(),w())}),e(()=>{u(),T()}),{logs:i,isStreaming:a,start:w,stop:T,receivedPerSec:p,flushedPerSec:h,startStats:y,stopStats:b}}var dt={class:`service-terminal__toolbar`},ft={class:`service-terminal__toolbar-left`},pt={key:0,class:`pid-option`},mt={key:1,class:`pid-option`},ht={key:0,class:`pi pi-circle-fill pid-status-icon pid-status-icon--active`,style:{"margin-right":`0.5rem`}},gt={key:1,class:`pi pi-circle-fill pid-status-icon pid-status-icon--stopped`,style:{"margin-right":`0.5rem`}},_t={class:`pid-option`},vt={key:0,class:`pi pi-list`,style:{"margin-right":`0.5rem`}},yt=[`title`],bt=[`title`],xt={class:`service-terminal__toolbar-right`},St={class:`service-terminal__content`,"data-testid":`service-terminal-content`},Ct={key:1,class:`service-terminal__shortcuts`},wt={class:`service-terminal__command-input`},Tt={class:`service-terminal__bottom`},Et=`runeya_command_history_`,Dt=50,Ot=o(h({__name:`ServiceTerminal`,props:{service:{},processes:{}},setup(t){let{t:r}=H(),o=t,l=n(()=>o.processes.find(e=>e.state===`running`||e.state===`starting`)??o.processes[0]??null),u=n(()=>l.value?.agentId??``),d=n(()=>l.value?.id??``),f=oe(),{logs:m,isStreaming:h,start:g,stop:_,receivedPerSec:v,flushedPerSec:w,startStats:T,stopStats:E}=ut(u,d),O=c(!1);F(O,e=>{e?T():E()});function k(e){e.ctrlKey&&e.shiftKey&&(e.key===`*`||e.key===`µ`)&&(e.preventDefault(),O.value=!O.value)}let j=n(()=>{let e=new Map;return m.value.forEach(t=>{if(t.pid!=null){let n=e.get(t.pid);if(n)n.lastSeen=new Date(Math.max(n.lastSeen.getTime(),new Date(t.timestamp).getTime())),n.logCount++;else{let n=o.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=n(()=>xe.value===`all`?m.value:m.value.filter(e=>e.pid===xe.value)),M=n(()=>j.value.filter(e=>e.isActive).length),N=n(()=>{let e=[{label:r(`serviceTerminal.allProcesses`),value:`all`,badge:M.value>0?`${M.value} ${r(`serviceTerminal.active`)}`:void 0,isActive:void 0}];return j.value.forEach(({pid:t,logCount:n,isActive:r})=>{e.push({label:`PID: ${t}`,value:t,badge:`${n} logs`,isActive:r})}),e});n(()=>o.processes.filter(e=>e.state===`running`).length);async function P(){if(l.value)try{await J.process.clearLogBuffer.mutate({agentId:l.value.agentId,processId:l.value.id}),m.value=[]}catch(e){f.add({severity:`error`,summary:r(`serviceTerminal.error`),detail:e.message??r(`serviceTerminal.failedToClearLogs`),life:5e3})}}let I=n(()=>o.service.shortcuts??[]),L=c(new Set);async function te(e){let t=W(o.service,l.value),n=l.value?.id??o.service.id;if(!t){f.add({severity:`warn`,summary:r(`serviceTerminal.noAgent`),detail:r(`serviceTerminal.noAgentDesc`),life:3e3});return}if(L.value.has(e.id)){try{await J.process.cancelShortcut.mutate({agentId:t,processId:n,shortcutId:e.id})}catch{}return}L.value=new Set([...L.value,e.id]);try{await J.process.executeShortcut.mutate({agentId:t,processId:n,shortcut:e})}catch(e){f.add({severity:`error`,summary:r(`serviceTerminal.shortcutFailed`),detail:e.message??r(`serviceTerminal.shortcutFailed`),life:5e3})}finally{let t=new Set(L.value);t.delete(e.id),L.value=t}}let R=c(``),ne=c(new Set),re=n(()=>ne.value.size>0),ie=c(null),z=c([]),V=c(-1),se=`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(`,`),K=c([]);function ce(e){let t=e.query.toLowerCase().trim();if(!t||!R.value.trim()){K.value=[];return}let n=[...z.value.slice().reverse(),...se],r=new Set;K.value=n.filter(e=>r.has(e)?!1:(r.add(e),e.toLowerCase().includes(t))).slice(0,10)}function le(){try{let e=localStorage.getItem(Et+o.service.id);e&&(z.value=JSON.parse(e))}catch{z.value=[]}}function fe(){try{localStorage.setItem(Et+o.service.id,JSON.stringify(z.value))}catch{}}function X(e){z.value[z.value.length-1]!==e&&(z.value=[...z.value,e],z.value.length>Dt&&(z.value=z.value.slice(-Dt)),fe())}async function Z(){let e=W(o.service,l.value),t=l.value?.id??o.service.id;if(e)try{await J.process.cancelAdHocCommand.mutate({agentId:e,processId:t})}catch{}}async function pe(){if(!R.value.trim())return;let e=W(o.service,l.value),t=l.value?.id??o.service.id;if(!e){f.add({severity:`warn`,summary:r(`serviceTerminal.noAgent`),detail:r(`serviceTerminal.noAgentDesc`),life:3e3});return}let n=de(),i=R.value.trim();X(i),R.value=``,K.value=[],V.value=-1,ne.value=new Set([...ne.value,n]);try{await J.process.executeAdHocCommand.mutate({agentId:e,processId:t,command:i,commandId:n})}catch(e){f.add({severity:`error`,summary:r(`serviceTerminal.commandFailed`),detail:e.message??r(`serviceTerminal.commandFailed`),life:5e3})}finally{let e=new Set(ne.value);e.delete(n),ne.value=e,S(()=>{document.querySelector(`.service-terminal__input`)?.focus()})}}function me(e){if(e.key===`Enter`&&!e.shiftKey){e.preventDefault(),pe();return}if(e.key===`ArrowUp`){if(e.preventDefault(),z.value.length===0)return;V.value===-1?V.value=z.value.length-1:V.value>0&&V.value--,R.value=z.value[V.value]||``}else if(e.key===`ArrowDown`){if(e.preventDefault(),V.value===-1)return;V.value<z.value.length-1?(V.value++,R.value=z.value[V.value]||``):(V.value=-1,R.value=``)}}function he(){if(m.value.length===0)return;let e=m.value.map(e=>`[${new Date(e.timestamp).toISOString()}] ${e.level.toUpperCase().padEnd(5)} ${e.message}`),t=new Blob([e.join(`
|
|
2
|
+
`)],{type:`text/plain`}),n=URL.createObjectURL(t),r=document.createElement(`a`);r.href=n,r.download=`${o.service.name}-${new Date().toISOString().slice(0,19).replaceAll(`:`,`-`)}.log`,document.body.appendChild(r),r.click(),document.body.removeChild(r),URL.revokeObjectURL(n)}let Q=c(0),$=0,ge=null,_e=null;F(l,e=>{if(!(e&&(e.state===`running`||e.state===`starting`))){ge&&=(clearInterval(ge),null),_e=null,Q.value=e?.uptime??0;return}let t=e.uptime??0;e.id!==_e&&(ge&&=(clearInterval(ge),null),_e=e.id,$=e.startedAt?new Date(e.startedAt).getTime():Date.now()-t,Q.value=Date.now()-$,ge=setInterval(()=>{Q.value=Date.now()-$},1e3))},{immediate:!0});let ve=c(!0),ye=c(null),be=c(!1),xe=c(`all`),Se=c(!1);function Ce(){Se.value=!Se.value}D(()=>{le(),l.value&&g(),window.addEventListener(`keydown`,k)}),e(()=>{_(),window.removeEventListener(`keydown`,k),ge&&clearInterval(ge)});function we(e){let t=Math.floor(e/3600),n=Math.floor(e%3600/60),r=Math.floor(e%60);return`${t.toString().padStart(2,`0`)}:${n.toString().padStart(2,`0`)}:${r.toString().padStart(2,`0`)}`}function Te(e){ye.value=e,be.value=!0}function De(e){be.value=!1,f.add({severity:`info`,summary:`Process`,detail:`Process ID: ${e}`,life:3e3})}return(e,n)=>(U(),i(`div`,{class:y([`service-terminal`,{"service-terminal--fullscreen":Se.value}]),"data-testid":`service-terminal`},[Se.value?(U(),x(ue,{key:0,service:t.service,processes:t.processes},null,8,[`service`,`processes`])):a(``,!0),q(`div`,dt,[q(`div`,ft,[p(s(Y),{label:s(r)(`serviceTerminal.logs`),severity:ve.value?`primary`:`secondary`,text:``,size:`small`,onClick:n[0]||=e=>ve.value=!0},null,8,[`label`,`severity`]),p(s(C),{modelValue:xe.value,"onUpdate:modelValue":n[1]||=e=>xe.value=e,options:N.value,"option-label":`label`,"option-value":`value`,class:`service-terminal__pid-selector`},{value:G(e=>[e.value===`all`?(U(),i(`div`,pt,[n[5]||=q(`i`,{class:`pi pi-list`,style:{"margin-right":`0.5rem`}},null,-1),q(`span`,null,b(s(r)(`serviceTerminal.allProcesses`)),1),M.value>0?(U(),x(s(ae),{key:0,value:`${M.value} ${s(r)(`serviceTerminal.active`)}`,severity:`secondary`,class:`pid-badge`},null,8,[`value`])):a(``,!0)])):(U(),i(`div`,mt,[N.value.find(t=>t.value===e.value)?.isActive?(U(),i(`i`,ht)):(U(),i(`i`,gt)),q(`span`,null,`PID: `+b(e.value),1)]))]),option:G(e=>[q(`div`,_t,[e.option.value===`all`?(U(),i(`i`,vt)):e.option.isActive?(U(),i(`i`,{key:1,class:`pi pi-circle-fill pid-status-icon pid-status-icon--active`,title:s(r)(`serviceTerminal.running`)},null,8,yt)):(U(),i(`i`,{key:2,class:`pi pi-circle-fill pid-status-icon pid-status-icon--stopped`,title:s(r)(`serviceTerminal.stopped`)},null,8,bt)),q(`span`,null,b(e.option.label),1),e.option.badge?(U(),x(s(ae),{key:3,value:e.option.badge,severity:`secondary`,class:`pid-badge`},null,8,[`value`])):a(``,!0)])]),_:1},8,[`modelValue`,`options`])]),q(`div`,xt,[p(s(Y),{icon:Se.value?`pi pi-window-minimize`:`pi pi-window-maximize`,text:``,rounded:``,size:`small`,title:Se.value?s(r)(`serviceTerminal.exitFullscreen`):s(r)(`serviceTerminal.fullscreen`),onClick:Ce},null,8,[`icon`,`title`]),p(s(Y),{icon:`pi pi-download`,text:``,rounded:``,size:`small`,title:s(r)(`serviceTerminal.downloadLogs`),disabled:s(m).length===0,onClick:he},null,8,[`title`,`disabled`]),p(s(Y),{icon:`pi pi-trash`,text:``,rounded:``,size:`small`,title:s(r)(`serviceTerminal.clearLogs`),disabled:s(m).length===0,onClick:P},null,8,[`title`,`disabled`])])]),q(`div`,St,[p(ke,{logs:ee.value,loading:!1,"received-per-sec":s(v),"flushed-per-sec":s(w),"show-stats":O.value,"service-label":o.service.label||o.service.name,onLogClick:Te},null,8,[`logs`,`received-per-sec`,`flushed-per-sec`,`show-stats`,`service-label`])]),I.value.length>0?(U(),i(`div`,Ct,[(U(!0),i(A,null,B(I.value,e=>(U(),x(s(Y),{key:e.id,label:e.label||e.command,"data-shortcut-id":e.id,class:`shortcut-badge`,icon:L.value.has(e.id)?`pi pi-stop`:`pi pi-play`,size:`small`,outlined:!L.value.has(e.id),severity:L.value.has(e.id)?`danger`:void 0,onClick:t=>te(e)},null,8,[`label`,`data-shortcut-id`,`icon`,`outlined`,`severity`,`onClick`]))),128))])):a(``,!0),q(`div`,wt,[n[6]||=q(`span`,{class:`service-terminal__prompt`,"data-testid":`terminal-prompt`},`>`,-1),p(s(Ee),{ref_key:`adHocCommandInput`,ref:ie,modelValue:R.value,"onUpdate:modelValue":n[2]||=e=>R.value=e,suggestions:K.value,class:`service-terminal__autocomplete`,"input-class":`service-terminal__input`,placeholder:s(r)(`serviceTerminal.enterCommand`),"aria-label":s(r)(`serviceTerminal.enterCommand`),disabled:!s(W)(o.service,l.value),"data-testid":`terminal-command-input`,onComplete:ce,onKeydown:me},null,8,[`modelValue`,`suggestions`,`placeholder`,`aria-label`,`disabled`]),p(s(Y),{icon:re.value?`pi pi-stop`:`pi pi-play`,severity:re.value?`danger`:void 0,size:`small`,"data-testid":`terminal-run-btn`,disabled:!s(W)(o.service,l.value)||!R.value.trim()&&!re.value,onClick:n[3]||=e=>re.value?Z():pe()},null,8,[`icon`,`severity`,`disabled`])]),q(`div`,Tt,[l.value?(U(),x(s(ae),{key:0,icon:`pi pi-server`,value:l.value.agentId.slice(0,8),severity:`secondary`,class:`service-terminal__pill`},null,8,[`value`])):a(``,!0),t.service.cwd?(U(),x(s(ae),{key:1,icon:`pi pi-folder`,value:t.service.cwd,severity:`secondary`,class:`service-terminal__pill`},null,8,[`value`])):a(``,!0),l.value&&(l.value.state===`running`||l.value.state===`starting`)?(U(),x(s(ae),{key:2,icon:`pi pi-clock`,value:we(Q.value/1e3),severity:`secondary`,class:`service-terminal__pill`},null,8,[`value`])):a(``,!0)]),p(at,{visible:be.value,"onUpdate:visible":n[4]||=e=>be.value=e,log:ye.value,onViewProcess:De},null,8,[`visible`,`log`])],2))}}),[[`__scopeId`,`data-v-ce19c81b`]]),kt=5,At=N;function jt(e){return e+Math.random()*e*.3}function Mt(t,n){let r=c(null),i=c(!1),a=c(!1),o=null,s=0,l=null;async function u(){if(!i.value){a.value=!0;try{r.value=await J.process.metrics.query({agentId:t.value,processId:n.value})}catch(e){console.error(`Failed to fetch initial metrics:`,v(e))}finally{a.value=!1}d()}}function d(){i.value=!0,o=J.process.onMetrics.subscribe({agentId:t.value,processId:n.value},{onData(e){s=0,m(`connected`),r.value=e},onError(e){console.error(`Metrics stream error:`,e),i.value=!1,o=null,f()}})}function f(){if(s>=kt){console.warn(`Metrics stream: max retries (${kt}) reached, giving up`),m(`disconnected`);return}m(`reconnecting`);let e=jt(At*2**s);s++,l=setTimeout(()=>{l=null,d()},e)}function p(){l&&=(clearTimeout(l),null),o&&=(o.unsubscribe(),null),i.value=!1,s=0}return F([t,n],([e,t],[n,r])=>{(e!==n||t!==r)&&i.value&&(p(),u())}),e(()=>{p()}),{metrics:r,isStreaming:i,isLoading:a,start:u,stop:p}}var Nt={class:`service-metrics`,"data-testid":`service-metrics`},Pt={key:1,class:`service-metrics__skeleton`},Ft={class:`metric-skeleton`},It={class:`metric-skeleton`},Lt={key:2,class:`service-metrics__no-data`},Rt={key:1,class:`service-metrics__no-process`},zt=o(h({__name:`ServiceMetrics`,props:{service:{},processes:{}},setup(t){let r=t,a=n(()=>r.processes.find(e=>e.state===`running`||e.state===`starting`)??r.processes[0]??null),o=n(()=>a.value?.agentId??``),c=n(()=>a.value?.id??``),{t:l}=H(),{metrics:u,isLoading:d,start:f,stop:m}=Mt(o,c);return D(()=>{a.value&&f()}),e(()=>{m()}),(e,t)=>(U(),i(`div`,Nt,[a.value?(U(),i(A,{key:0},[s(u)?(U(),x(Oe,{key:0,cpu:s(u).cpu,memory:s(u).memory},null,8,[`cpu`,`memory`])):s(d)?(U(),i(`div`,Pt,[q(`div`,Ft,[p(s(De),{width:`4rem`,height:`0.75rem`,class:`mb-2`}),p(s(De),{width:`3rem`,height:`1.75rem`,class:`mb-3`}),p(s(De),{width:`100%`,height:`6px`,"border-radius":`4px`})]),q(`div`,It,[p(s(De),{width:`4rem`,height:`0.75rem`,class:`mb-2`}),p(s(De),{width:`3rem`,height:`1.75rem`,class:`mb-3`}),p(s(De),{width:`6rem`,height:`0.65rem`})])])):(U(),i(`div`,Lt,b(s(l)(`serviceMetrics.noData`)),1))],64)):(U(),i(`div`,Rt,[t[0]||=q(`i`,{class:`pi pi-info-circle`},null,-1),q(`span`,null,b(s(l)(`serviceMetrics.notRunning`)),1)]))]))}}),[[`__scopeId`,`data-v-94f5993b`]]),Bt=`runeya:debug`;function Vt(){if(typeof window>`u`)return null;let e=new URLSearchParams(window.location.search).get(`debug`);return e===`1`||e===`true`?!0:e===`0`||e===`false`?!1:null}var Ht=Vt();if(Ht!==null)try{localStorage.setItem(Bt,String(Ht))}catch{}function Ut(){try{return localStorage.getItem(Bt)===`true`}catch{return!1}}var Wt=c(Ut());function Gt(){function e(){Wt.value=!Wt.value;try{localStorage.setItem(Bt,String(Wt.value))}catch{}}return{isDebug:Wt,toggle:e}}var Kt={class:`config-general`},qt={class:`config-card`},Jt={class:`config-card__header`},Yt={class:`config-card`},Xt={class:`config-card__header`},Zt={class:`config-card__hint`},Qt={class:`config-card`},$t={class:`config-card`},en={class:`config-card__header`},tn={class:`config-card__hint`},nn={class:`config-card`},rn={class:`config-card__header`},an={class:`config-card__hint`},on={class:`config-card`},sn={class:`config-card__header`},cn={class:`config-card__hint`},ln={class:`config-card`},un={class:`config-card__header`},dn={class:`config-card__hint`},fn={class:`config-card`},pn={class:`config-card__header`},mn={class:`config-card__hint`},hn={class:`config-card`},gn={class:`config-card__header`},_n={class:`config-card__hint`},vn={class:`config-card__hint`},yn={class:`config-card`},bn={class:`config-card__header`},xn={class:`config-card__hint`},Sn={class:`config-meta`},Cn={class:`config-card config-card--inline`},wn={class:`config-card__header`},Tn={class:`config-card config-card--inline`},En={class:`config-card__header`},Dn=150,On=o(h({__name:`ServiceConfigGeneral`,props:{service:{}},emits:[`save`],setup(e,{emit:t}){let{t:r}=H(),a=M(),o=d(),l=c([]);function u(e){let t=e.query.trim().toLowerCase(),n=new Set(S.value.groups);l.value=y.value.filter(e=>!n.has(e)&&(!t||e.toLowerCase().includes(t)))}function f(e,t){let n=t.trim();if(n){if(e===`ports`){let e=Number(n);if(!Number.isInteger(e)||e<1||e>65535||S.value.ports.includes(String(e)))return;S.value.ports=[...S.value.ports,String(e)]}else{if(S.value.groups.includes(n))return;S.value.groups=[...S.value.groups,n]}j()}}function m(e){let t=e.target;f(`groups`,t.value),t.value=``,l.value=[]}function h(e,t){let n=e.target;!n||typeof n.value!=`string`||!n.value.trim()||setTimeout(()=>{f(t,n.value),n.value=``},Dn)}let g=e,_=t,v=n(()=>o.projects.find(e=>e.serviceIds.includes(g.service.id)&&(e.orgId??null)===(g.service.orgId??null))??null),y=n(()=>{let e=v.value;if(!e)return[];let t=new Set;for(let n of e.serviceIds)for(let e of a.getById(n)?.groups??[])t.add(e);return[...t].sort((e,t)=>e.localeCompare(t))});function x(e){return Object.entries(e??{}).map(([e,t])=>({key:e,value:t}))}let S=c({name:g.service.name,cwd:g.service.cwd??``,ports:(g.service.ports??[]).map(String),groups:[...g.service.groups??[]],description:g.service.description??``,docsPath:g.service.docsPath??``,url:g.service.url??``,openapiUrl:g.service.openapiUrl??``,gitRemote:g.service.git?.remote??``,gitHome:g.service.git?.home??``,autoRestart:g.service.autoRestart,clearLogsOnStart:g.service.clearLogsOnStart??!1}),C=c(x(g.service.meta));F(()=>g.service,e=>{S.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},C.value=x(e.meta)});function w(){C.value=[...C.value,{key:``,value:``}]}function T(e){C.value=C.value.filter((t,n)=>n!==e)}function E(e,t,n){C.value=C.value.map((r,i)=>i===e?{...r,[t]:n}:r)}function D(){let e={};for(let{key:t,value:n}of C.value){let r=t.trim();r&&(e[r]=n)}return{name:S.value.name,cwd:S.value.cwd||null,ports:S.value.ports.map(Number).filter(e=>e>0&&e<=65535),groups:S.value.groups,description:S.value.description,docsPath:S.value.docsPath??``,url:S.value.url,openapiUrl:S.value.openapiUrl,git:S.value.gitRemote||S.value.gitHome?{remote:S.value.gitRemote||void 0,home:S.value.gitHome||void 0}:null,autoRestart:S.value.autoRestart,clearLogsOnStart:S.value.clearLogsOnStart,meta:Object.keys(e).length>0?e:null}}let O=null;function j(){O&&clearTimeout(O),O=setTimeout(()=>{_(`save`,D()),O=null},150)}return(e,t)=>(U(),i(`div`,Kt,[q(`div`,qt,[q(`div`,Jt,[t[14]||=q(`i`,{class:`pi pi-tag`},null,-1),q(`span`,null,b(s(r)(`serviceConfigGeneral.name`)),1)]),p(s(I),{modelValue:S.value.name,"onUpdate:modelValue":t[0]||=e=>S.value.name=e,class:`config-card__input`,onBlur:j,onKeydown:k(K(j,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])]),q(`div`,Yt,[q(`div`,Xt,[t[15]||=q(`i`,{class:`pi pi-folder`},null,-1),q(`span`,null,b(s(r)(`serviceConfigGeneral.workingDirectory`)),1)]),p(s(I),{modelValue:S.value.cwd,"onUpdate:modelValue":t[1]||=e=>S.value.cwd=e,class:`config-card__input`,placeholder:`.`,onBlur:j,onKeydown:k(K(j,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`]),q(`small`,Zt,b(s(r)(`serviceConfigGeneral.cwdHint`)),1)]),q(`div`,Qt,[t[16]||=q(`div`,{class:`config-card__header`},[q(`i`,{class:`pi pi-file-edit`}),q(`span`,null,`Dossier de documentation (wiki)`)],-1),p(s(I),{modelValue:S.value.docsPath,"onUpdate:modelValue":t[2]||=e=>S.value.docsPath=e,class:`config-card__input`,placeholder:`(défaut : même que cwd)`,onBlur:j,onKeydown:k(K(j,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`]),t[17]||=q(`small`,{class:`config-card__hint`},[P(` Chemin relatif au cwd du service (ex. `),q(`code`,null,`docs`),P(`) ou absolu. Si vide, utilise le cwd. `)],-1)]),q(`div`,$t,[q(`div`,en,[t[18]||=q(`i`,{class:`pi pi-globe`},null,-1),q(`span`,null,b(s(r)(`serviceConfigGeneral.ports`)),1)]),p(s(Ee),{modelValue:S.value.ports,"onUpdate:modelValue":t[3]||=e=>S.value.ports=e,multiple:``,typeahead:!1,class:`config-card__input`,placeholder:s(r)(`serviceConfigGeneral.portsPlaceholder`),onChange:j,onBlur:t[4]||=e=>h(e,`ports`)},null,8,[`modelValue`,`placeholder`]),q(`small`,tn,b(s(r)(`serviceConfigGeneral.portsHint`)),1)]),q(`div`,nn,[q(`div`,rn,[t[19]||=q(`i`,{class:`pi pi-th-large`},null,-1),q(`span`,null,b(s(r)(`serviceConfigGeneral.groups`)),1)]),p(s(Ee),{modelValue:S.value.groups,"onUpdate:modelValue":t[5]||=e=>S.value.groups=e,multiple:``,suggestions:l.value,"complete-on-focus":!0,class:`config-card__input`,placeholder:s(r)(`serviceConfigGeneral.groupsPlaceholder`),onComplete:u,onChange:j,onKeydown:k(m,[`enter`]),onBlur:t[6]||=e=>h(e,`groups`)},null,8,[`modelValue`,`suggestions`,`placeholder`]),q(`small`,an,b(s(r)(`serviceConfigGeneral.groupsHint`)),1)]),q(`div`,on,[q(`div`,sn,[t[20]||=q(`i`,{class:`pi pi-info-circle`},null,-1),q(`span`,null,b(s(r)(`serviceConfigGeneral.description`)),1)]),p(s(L),{modelValue:S.value.description,"onUpdate:modelValue":t[7]||=e=>S.value.description=e,class:`config-card__input`,rows:2,onBlur:j},null,8,[`modelValue`]),q(`small`,cn,b(s(r)(`serviceConfigGeneral.descriptionHint`)),1)]),q(`div`,ln,[q(`div`,un,[t[21]||=q(`i`,{class:`pi pi-external-link`},null,-1),q(`span`,null,b(s(r)(`serviceConfigGeneral.url`)),1)]),p(s(I),{modelValue:S.value.url,"onUpdate:modelValue":t[8]||=e=>S.value.url=e,class:`config-card__input`,placeholder:`https://...`,onBlur:j,onKeydown:k(K(j,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`]),q(`small`,dn,b(s(r)(`serviceConfigGeneral.urlHint`)),1)]),q(`div`,fn,[q(`div`,pn,[t[22]||=q(`i`,{class:`pi pi-book`},null,-1),q(`span`,null,b(s(r)(`serviceConfigGeneral.openapiUrl`)),1)]),p(s(I),{modelValue:S.value.openapiUrl,"onUpdate:modelValue":t[9]||=e=>S.value.openapiUrl=e,class:`config-card__input`,placeholder:`https://.../swagger.json`,onBlur:j,onKeydown:k(K(j,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`]),q(`small`,mn,b(s(r)(`serviceConfigGeneral.openapiUrlHint`)),1)]),q(`div`,hn,[q(`div`,gn,[t[23]||=q(`i`,{class:`pi pi-github`},null,-1),q(`span`,null,b(s(r)(`serviceConfigGeneral.git`)),1)]),p(s(I),{modelValue:S.value.gitRemote,"onUpdate:modelValue":t[10]||=e=>S.value.gitRemote=e,class:`config-card__input`,placeholder:`git@github.com:org/repo.git`,onBlur:j,onKeydown:k(K(j,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`]),q(`small`,_n,b(s(r)(`serviceConfigGeneral.gitRemoteHint`)),1),p(s(I),{modelValue:S.value.gitHome,"onUpdate:modelValue":t[11]||=e=>S.value.gitHome=e,class:`config-card__input`,style:{"margin-top":`0.5rem`},placeholder:`https://github.com/org/repo`,onBlur:j,onKeydown:k(K(j,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`]),q(`small`,vn,b(s(r)(`serviceConfigGeneral.gitHomeHint`)),1)]),q(`div`,yn,[q(`div`,bn,[t[24]||=q(`i`,{class:`pi pi-hashtag`},null,-1),q(`span`,null,b(s(r)(`serviceConfigGeneral.meta`)),1)]),q(`small`,xn,b(s(r)(`serviceConfigGeneral.metaHint`)),1),q(`div`,Sn,[(U(!0),i(A,null,B(C.value,(e,t)=>(U(),i(`div`,{key:t,class:`config-meta__row`},[p(s(I),{"model-value":e.key,placeholder:s(r)(`serviceConfigGeneral.metaKeyPlaceholder`),class:`config-meta__input`,"onUpdate:modelValue":e=>E(t,`key`,e),onBlur:j,onKeydown:k(K(j,[`prevent`]),[`enter`])},null,8,[`model-value`,`placeholder`,`onUpdate:modelValue`,`onKeydown`]),p(s(I),{"model-value":e.value,placeholder:s(r)(`serviceConfigGeneral.metaValuePlaceholder`),class:`config-meta__input config-meta__input--wide`,"onUpdate:modelValue":e=>E(t,`value`,e),onBlur:j,onKeydown:k(K(j,[`prevent`]),[`enter`])},null,8,[`model-value`,`placeholder`,`onUpdate:modelValue`,`onKeydown`]),p(s(Y),{icon:`pi pi-trash`,severity:`danger`,text:``,rounded:``,size:`small`,onClick:()=>{T(t),j()}},null,8,[`onClick`])]))),128)),p(s(Y),{label:s(r)(`serviceConfigGeneral.addEntry`),icon:`pi pi-plus`,severity:`secondary`,outlined:``,size:`small`,class:`config-meta__add`,onClick:w},null,8,[`label`])])]),q(`div`,Cn,[q(`div`,wn,[t[25]||=q(`i`,{class:`pi pi-refresh`},null,-1),q(`span`,null,b(s(r)(`serviceConfigGeneral.autoRestart`)),1)]),p(s(me),{modelValue:S.value.autoRestart,"onUpdate:modelValue":t[12]||=e=>S.value.autoRestart=e,onChange:j},null,8,[`modelValue`])]),q(`div`,Tn,[q(`div`,En,[t[26]||=q(`i`,{class:`pi pi-trash`},null,-1),q(`span`,null,b(s(r)(`serviceConfigGeneral.clearLogs`)),1)]),p(s(me),{modelValue:S.value.clearLogsOnStart,"onUpdate:modelValue":t[13]||=e=>S.value.clearLogsOnStart=e,onChange:j},null,8,[`modelValue`])])]))}}),[[`__scopeId`,`data-v-6fef6778`]]),kn={class:`docker-config`},An={class:`docker-config__section`},jn={for:`docker-mode-image`,class:`docker-config__section-title`},Mn={class:`docker-config__mode-toggle`},Nn={class:`docker-config__mode-option`},Pn={class:`docker-config__mode-option`},Fn={key:0,class:`docker-config__section`},In={for:`docker-image`,class:`docker-config__label`},Ln={class:`docker-config__section`},Rn={class:`docker-config__section`},zn={for:`docker-build-context`,class:`docker-config__label`},Bn={class:`docker-config__section`},Vn={for:`docker-add-build-arg`,class:`docker-config__label`},Hn={class:`docker-config__kv-list`},Un={class:`docker-config__section`},Wn={for:`docker-target-stage`,class:`docker-config__label`},Gn={class:`docker-config__section`},Kn={for:`docker-user`,class:`docker-config__section-title`},qn={class:`docker-config__section`},Jn={for:`docker-user`,class:`docker-config__label`},Yn={class:`docker-config__section`},Xn={for:`docker-network-mode`,class:`docker-config__label`},Zn={key:2,class:`docker-config__section`},Qn={for:`docker-add-port`,class:`docker-config__label`},$n={class:`docker-config__list`},er={class:`docker-config__section`},tr={for:`docker-add-volume`,class:`docker-config__label`},nr={class:`docker-config__checkbox-row`},rr={for:`mountRootpath`,class:`docker-config__checkbox-label`},ir={class:`docker-config__list`},ar={class:`docker-config__section`},or={class:`docker-config__checkbox-row`},sr={for:`useNativeCommand`,class:`docker-config__checkbox-label`},cr={key:0,class:`docker-config__shell-row`},lr={for:`docker-native-shell`,class:`docker-config__label`},ur={class:`docker-config__hint`},dr={key:1,class:`docker-config__mode-toggle docker-config__mode-toggle--indented`},fr={class:`docker-config__mode-option`},pr={class:`docker-config__mode-option`},mr={class:`docker-config__section`},hr={for:`docker-entrypoint`,class:`docker-config__label`},gr={class:`docker-config__section`},_r={for:`docker-command`,class:`docker-config__label`},vr={class:`docker-config__section`},yr={for:`docker-add-bootstrap`,class:`docker-config__section-title`},br={class:`docker-config__hint-inline`},xr={class:`docker-config__bootstrap-row`},Sr={class:`docker-config__bootstrap-field`},Cr=[`for`],wr={class:`docker-config__bootstrap-field`},Tr=[`for`],Er={class:`docker-config__bootstrap-field docker-config__bootstrap-field--wide`},Dr=[`for`],Or={class:`docker-config__bootstrap-field`},kr=[`for`],Ar={class:`docker-config__bootstrap-actions`},jr={class:`docker-config__section`},Mr=o(h({__name:`ServiceConfigDocker`,props:{service:{}},emits:[`save`],setup(e,{emit:t}){let{t:n}=H(),r=e,o=t,l=r.service.dockerConfig??{},d=c(l.dockerfile?`build`:`image`),m=c(l.image??``),h=c(l.dockerfile??``),g=c(l.buildContext??``),_=c(Object.entries(l.buildArgs??{}).map(([e,t])=>({key:e,value:t}))),v=c(l.targetStage??``),y=c(l.networkMode??`host`),x=c([...l.ports??[]]),S=c([...l.volumes??[]]),w=c(l.mountRootpath??!1),T=c(l.entrypoint??``),E=c(l.command??``),D=c(l.user??``),O=c(l.useNativeCommand??!1),j=c(l.nativeCommandMode??`isolated`),ee=c(l.nativeShell??`sh`),M=[{label:`sh (POSIX)`,value:`sh`},{label:`bash`,value:`bash`},{label:`zsh`,value:`zsh`},{label:`ash (Alpine)`,value:`ash`}],N=c([...l.bootstrapCommands??[]]),F=c(!1),L=[{label:`Host (--network host)`,value:`host`},{label:`Bridge`,value:`bridge`}];function te(){_.value=[..._.value,{key:``,value:``}]}function R(e){_.value=_.value.filter((t,n)=>n!==e)}function ne(e,t,n){_.value=_.value.map((r,i)=>i===e?{...r,[t]:n}:r)}function re(){x.value=[...x.value,``]}function ae(e){x.value=x.value.filter((t,n)=>n!==e)}function z(e,t){x.value=x.value.map((n,r)=>r===e?t:n)}function oe(){S.value=[...S.value,``]}function V(e){S.value=S.value.filter((t,n)=>n!==e)}function se(e,t){S.value=S.value.map((n,r)=>r===e?t:n)}function W(){N.value=[...N.value,{id:de(),label:`Bootstrap`,entrypoint:`/bin/sh`,command:`-c ""`,user:void 0}]}function J(e){N.value=N.value.filter((t,n)=>n!==e)}function le(e,t,n){N.value=N.value.map((r,i)=>i===e?{...r,[t]:n===``?void 0:n}:r)}function ue(e,t){let n=[...N.value],r=e+t;r<0||r>=n.length||([n[e],n[r]]=[n[r],n[e]],N.value=n)}let fe=null;function X(){fe&&clearTimeout(fe),fe=setTimeout(()=>{let e={};for(let{key:t,value:n}of _.value)t.trim()&&(e[t.trim()]=n);o(`save`,{image:d.value===`image`&&m.value||void 0,dockerfile:d.value===`build`&&h.value||void 0,buildContext:g.value||void 0,buildArgs:e,targetStage:v.value||void 0,networkMode:y.value,ports:x.value.filter(Boolean),volumes:S.value.filter(Boolean),mountRootpath:w.value,entrypoint:T.value||void 0,command:E.value||void 0,user:D.value||void 0,useNativeCommand:O.value,nativeCommandMode:j.value,nativeShell:ee.value,bootstrapCommands:N.value}),fe=null},150)}function Z(e){J(e),X()}function me(e,t){ue(e,t),X()}function he(e){R(e),X()}function Q(e){ae(e),X()}function $(e){V(e),X()}return(e,t)=>(U(),i(`div`,kn,[q(`div`,An,[q(`label`,jn,b(s(n)(`serviceConfigDocker.imageSource`)),1),q(`div`,Mn,[q(`label`,Nn,[ce(q(`input`,{id:`docker-mode-image`,"onUpdate:modelValue":t[0]||=e=>d.value=e,type:`radio`,value:`image`,class:`docker-config__radio`,onChange:X},null,544),[[ie,d.value]]),P(` `+b(s(n)(`serviceConfigDocker.pullImage`)),1)]),q(`label`,Pn,[ce(q(`input`,{"onUpdate:modelValue":t[1]||=e=>d.value=e,type:`radio`,value:`build`,class:`docker-config__radio`,onChange:X},null,544),[[ie,d.value]]),P(` `+b(s(n)(`serviceConfigDocker.buildDockerfile`)),1)])])]),d.value===`image`?(U(),i(`div`,Fn,[q(`label`,In,b(s(n)(`serviceConfigDocker.image`)),1),p(s(I),{id:`docker-image`,modelValue:m.value,"onUpdate:modelValue":t[2]||=e=>m.value=e,placeholder:s(n)(`serviceConfigDocker.imagePlaceholder`),class:`docker-config__input`,onBlur:X,onKeydown:k(K(X,[`prevent`]),[`enter`])},null,8,[`modelValue`,`placeholder`,`onKeydown`])])):a(``,!0),d.value===`build`?(U(),i(A,{key:1},[q(`div`,Ln,[t[18]||=q(`label`,{for:`docker-dockerfile-btn`,class:`docker-config__label`},`Dockerfile`,-1),p(s(Y),{id:`docker-dockerfile-btn`,label:s(n)(`serviceConfigDocker.editDockerfile`),icon:`pi pi-file-edit`,severity:`secondary`,outlined:``,size:`small`,onClick:t[3]||=e=>F.value=!0},null,8,[`label`]),p(s(u),{visible:F.value,"onUpdate:visible":t[6]||=e=>F.value=e,header:s(n)(`serviceConfigDocker.editDockerfile`),modal:``,style:{width:`800px`}},{footer:G(()=>[p(s(Y),{label:s(n)(`serviceConfigDocker.closeDockerfile`),icon:`pi pi-times`,onClick:t[5]||=()=>{F.value=!1,X()}},null,8,[`label`])]),default:G(()=>[p(f,{modelValue:h.value,"onUpdate:modelValue":t[4]||=e=>h.value=e,language:`dockerfile`,style:{height:`400px`}},null,8,[`modelValue`])]),_:1},8,[`visible`,`header`])]),q(`div`,Rn,[q(`label`,zn,b(s(n)(`serviceConfigDocker.buildContext`)),1),p(s(I),{id:`docker-build-context`,modelValue:g.value,"onUpdate:modelValue":t[7]||=e=>g.value=e,placeholder:`.`,class:`docker-config__input`,onBlur:X,onKeydown:k(K(X,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])]),q(`div`,Bn,[q(`label`,Vn,b(s(n)(`serviceConfigDocker.buildArgs`)),1),q(`div`,Hn,[(U(!0),i(A,null,B(_.value,(e,t)=>(U(),i(`div`,{key:t,class:`docker-config__kv-row`},[p(s(I),{"model-value":e.key,placeholder:s(n)(`serviceConfigDocker.argNamePlaceholder`),class:`docker-config__kv-input`,"onUpdate:modelValue":e=>ne(t,`key`,e),onBlur:X,onKeydown:k(K(X,[`prevent`]),[`enter`])},null,8,[`model-value`,`placeholder`,`onUpdate:modelValue`,`onKeydown`]),p(s(I),{"model-value":e.value,placeholder:s(n)(`serviceConfigDocker.argValuePlaceholder`),class:`docker-config__kv-input`,"onUpdate:modelValue":e=>ne(t,`value`,e),onBlur:X,onKeydown:k(K(X,[`prevent`]),[`enter`])},null,8,[`model-value`,`placeholder`,`onUpdate:modelValue`,`onKeydown`]),p(s(Y),{icon:`pi pi-trash`,severity:`danger`,text:``,rounded:``,size:`small`,onClick:e=>he(t)},null,8,[`onClick`])]))),128)),p(s(Y),{id:`docker-add-build-arg`,label:s(n)(`serviceConfigDocker.addBuildArg`),icon:`pi pi-plus`,severity:`secondary`,outlined:``,size:`small`,onClick:te},null,8,[`label`])])]),q(`div`,Un,[q(`label`,Wn,b(s(n)(`serviceConfigDocker.targetStage`)),1),p(s(I),{id:`docker-target-stage`,modelValue:v.value,"onUpdate:modelValue":t[8]||=e=>v.value=e,placeholder:s(n)(`serviceConfigDocker.targetStagePlaceholder`),class:`docker-config__input`,onBlur:X,onKeydown:k(K(X,[`prevent`]),[`enter`])},null,8,[`modelValue`,`placeholder`,`onKeydown`])])],64)):a(``,!0),p(s(Ae)),q(`div`,Gn,[q(`label`,Kn,b(s(n)(`serviceConfigDocker.runtimeConfig`)),1)]),q(`div`,qn,[q(`label`,Jn,b(s(n)(`serviceConfigDocker.userGroup`)),1),p(s(I),{id:`docker-user`,modelValue:D.value,"onUpdate:modelValue":t[9]||=e=>D.value=e,placeholder:s(n)(`serviceConfigDocker.userGroupHint`),class:`docker-config__input`,onBlur:X,onKeydown:k(K(X,[`prevent`]),[`enter`])},null,8,[`modelValue`,`placeholder`,`onKeydown`])]),q(`div`,Yn,[q(`label`,Xn,b(s(n)(`serviceConfigDocker.networkMode`)),1),p(s(C),{"input-id":`docker-network-mode`,modelValue:y.value,"onUpdate:modelValue":t[10]||=e=>y.value=e,options:L,"option-label":`label`,"option-value":`value`,class:`docker-config__select`,onChange:X},null,8,[`modelValue`])]),y.value===`bridge`?(U(),i(`div`,Zn,[q(`label`,Qn,b(s(n)(`serviceConfigDocker.portMappings`)),1),q(`div`,$n,[(U(!0),i(A,null,B(x.value,(e,t)=>(U(),i(`div`,{key:t,class:`docker-config__list-row`},[p(s(I),{"model-value":e,placeholder:s(n)(`serviceConfigDocker.portPlaceholder`),class:`docker-config__input`,"onUpdate:modelValue":e=>z(t,e),onBlur:X,onKeydown:k(K(X,[`prevent`]),[`enter`])},null,8,[`model-value`,`placeholder`,`onUpdate:modelValue`,`onKeydown`]),p(s(Y),{icon:`pi pi-trash`,severity:`danger`,text:``,rounded:``,size:`small`,onClick:e=>Q(t)},null,8,[`onClick`])]))),128)),p(s(Y),{id:`docker-add-port`,label:s(n)(`serviceConfigDocker.addPort`),icon:`pi pi-plus`,severity:`secondary`,outlined:``,size:`small`,onClick:re},null,8,[`label`])])])):a(``,!0),q(`div`,er,[q(`label`,tr,b(s(n)(`serviceConfigDocker.volumes`)),1),q(`div`,nr,[p(s(pe),{modelValue:w.value,"onUpdate:modelValue":t[11]||=e=>w.value=e,binary:!0,"input-id":`mountRootpath`,onChange:X},null,8,[`modelValue`]),q(`label`,rr,b(s(n)(`serviceConfigDocker.autoMount`)),1)]),q(`div`,ir,[(U(!0),i(A,null,B(S.value,(e,t)=>(U(),i(`div`,{key:t,class:`docker-config__list-row`},[p(s(I),{"model-value":e,placeholder:s(n)(`serviceConfigDocker.volumePlaceholder`),class:`docker-config__input`,"onUpdate:modelValue":e=>se(t,e),onBlur:X,onKeydown:k(K(X,[`prevent`]),[`enter`])},null,8,[`model-value`,`placeholder`,`onUpdate:modelValue`,`onKeydown`]),p(s(Y),{icon:`pi pi-trash`,severity:`danger`,text:``,rounded:``,size:`small`,onClick:e=>$(t)},null,8,[`onClick`])]))),128)),p(s(Y),{id:`docker-add-volume`,label:s(n)(`serviceConfigDocker.addVolume`),icon:`pi pi-plus`,severity:`secondary`,outlined:``,size:`small`,onClick:oe},null,8,[`label`])])]),p(s(Ae)),q(`div`,ar,[q(`div`,or,[p(s(pe),{modelValue:O.value,"onUpdate:modelValue":t[12]||=e=>O.value=e,binary:!0,"input-id":`useNativeCommand`,onChange:X},null,8,[`modelValue`]),q(`label`,sr,b(s(n)(`serviceConfigDocker.runNative`)),1)]),t[21]||=q(`span`,{class:`docker-config__hint`},` When enabled, the service command is executed directly inside the container (ignores CMD override below). `,-1),O.value?(U(),i(`div`,cr,[q(`label`,lr,b(s(n)(`serviceConfigDocker.shell`)),1),p(s(C),{"input-id":`docker-native-shell`,modelValue:ee.value,"onUpdate:modelValue":t[13]||=e=>ee.value=e,options:M,"option-label":`label`,"option-value":`value`,class:`docker-config__select docker-config__select--small`,editable:``,placeholder:s(n)(`serviceConfigDocker.shellPlaceholder`),onChange:X},null,8,[`modelValue`,`placeholder`]),q(`span`,ur,[P(b(s(n)(`serviceConfigDocker.shellHint`))+` (`,1),t[19]||=q(`code`,null,`shell -c '...'`,-1),t[20]||=P(`)`,-1)])])):a(``,!0),O.value?(U(),i(`div`,dr,[q(`label`,fr,[ce(q(`input`,{"onUpdate:modelValue":t[14]||=e=>j.value=e,type:`radio`,value:`isolated`,class:`docker-config__radio`,onChange:X},null,544),[[ie,j.value]]),P(` `+b(s(n)(`serviceConfigDocker.isolated`)),1)]),q(`label`,pr,[ce(q(`input`,{"onUpdate:modelValue":t[15]||=e=>j.value=e,type:`radio`,value:`shared`,class:`docker-config__radio`,onChange:X},null,544),[[ie,j.value]]),P(` `+b(s(n)(`serviceConfigDocker.shared`)),1)])])):a(``,!0)]),O.value?a(``,!0):(U(),i(A,{key:3},[t[22]||=q(`div`,{class:`docker-config__section`},[q(`label`,{for:`docker-entrypoint`,class:`docker-config__section-title`},`Override`)],-1),q(`div`,mr,[q(`label`,hr,b(s(n)(`serviceConfigDocker.entrypoint`)),1),p(s(I),{id:`docker-entrypoint`,modelValue:T.value,"onUpdate:modelValue":t[16]||=e=>T.value=e,placeholder:s(n)(`serviceConfigDocker.entrypointPlaceholder`),class:`docker-config__input`,onBlur:X,onKeydown:k(K(X,[`prevent`]),[`enter`])},null,8,[`modelValue`,`placeholder`,`onKeydown`])]),q(`div`,gr,[q(`label`,_r,b(s(n)(`serviceConfigDocker.cmdOverride`)),1),p(s(I),{id:`docker-command`,modelValue:E.value,"onUpdate:modelValue":t[17]||=e=>E.value=e,placeholder:s(n)(`serviceConfigDocker.cmdPlaceholder`),class:`docker-config__input`,onBlur:X,onKeydown:k(K(X,[`prevent`]),[`enter`])},null,8,[`modelValue`,`placeholder`,`onKeydown`])])],64)),p(s(Ae)),q(`div`,vr,[q(`label`,yr,[P(b(s(n)(`serviceConfigDocker.bootstrapCommands`))+` `,1),q(`span`,br,` — `+b(s(n)(`serviceConfigDocker.bootstrapCommandsHint`)),1)])]),(U(!0),i(A,null,B(N.value,(e,t)=>(U(),i(`div`,{key:e.id,class:`docker-config__bootstrap-card`},[q(`div`,xr,[q(`div`,Sr,[q(`label`,{class:`docker-config__label`,for:`docker-bootstrap-label-${t}`},`Label`,8,Cr),p(s(I),{id:`docker-bootstrap-label-${t}`,"model-value":e.label,placeholder:s(n)(`serviceConfigDocker.bootstrapLabelPlaceholder`),class:`docker-config__input`,"onUpdate:modelValue":e=>le(t,`label`,e),onBlur:X,onKeydown:k(K(X,[`prevent`]),[`enter`])},null,8,[`id`,`model-value`,`placeholder`,`onUpdate:modelValue`,`onKeydown`])]),q(`div`,wr,[q(`label`,{class:`docker-config__label`,for:`docker-bootstrap-entrypoint-${t}`},`Entrypoint`,8,Tr),p(s(I),{id:`docker-bootstrap-entrypoint-${t}`,"model-value":e.entrypoint??``,placeholder:`/bin/sh`,class:`docker-config__input`,"onUpdate:modelValue":e=>le(t,`entrypoint`,e),onBlur:X,onKeydown:k(K(X,[`prevent`]),[`enter`])},null,8,[`id`,`model-value`,`onUpdate:modelValue`,`onKeydown`])]),q(`div`,Er,[q(`label`,{class:`docker-config__label`,for:`docker-bootstrap-command-${t}`},`Command`,8,Dr),p(s(I),{id:`docker-bootstrap-command-${t}`,"model-value":e.command,placeholder:`-c "npm install"`,class:`docker-config__input`,"onUpdate:modelValue":e=>le(t,`command`,e),onBlur:X,onKeydown:k(K(X,[`prevent`]),[`enter`])},null,8,[`id`,`model-value`,`onUpdate:modelValue`,`onKeydown`])]),q(`div`,Or,[q(`label`,{class:`docker-config__label`,for:`docker-bootstrap-user-${t}`},`User:Group`,8,kr),p(s(I),{id:`docker-bootstrap-user-${t}`,"model-value":e.user??``,placeholder:s(n)(`serviceConfigDocker.userGroupHint`),class:`docker-config__input`,"onUpdate:modelValue":e=>le(t,`user`,e),onBlur:X,onKeydown:k(K(X,[`prevent`]),[`enter`])},null,8,[`id`,`model-value`,`placeholder`,`onUpdate:modelValue`,`onKeydown`])]),q(`div`,Ar,[p(s(Y),{icon:`pi pi-arrow-up`,text:``,rounded:``,size:`small`,disabled:t===0,onClick:e=>me(t,-1)},null,8,[`disabled`,`onClick`]),p(s(Y),{icon:`pi pi-arrow-down`,text:``,rounded:``,size:`small`,disabled:t===N.value.length-1,onClick:e=>me(t,1)},null,8,[`disabled`,`onClick`]),p(s(Y),{icon:`pi pi-times`,severity:`danger`,text:``,rounded:``,size:`small`,onClick:e=>Z(t)},null,8,[`onClick`])])])]))),128)),q(`div`,jr,[p(s(Y),{id:`docker-add-bootstrap`,label:s(n)(`serviceConfigDocker.addBootstrapCommand`),icon:`pi pi-plus`,severity:`secondary`,outlined:``,size:`small`,onClick:W},null,8,[`label`])])]))}}),[[`__scopeId`,`data-v-91c13548`]]),Nr={class:`config-commands`},Pr={class:`config-commands__execution`},Fr={class:`config-card config-card--execution`},Ir={class:`config-card__header`},Lr={class:`config-card__hint`},Rr={class:`config-card config-card--execution`},zr={class:`config-card__header`},Br={key:0,class:`runner-option`},Vr={class:`runner-option`},Hr={class:`config-commands__tab-content`},Ur={key:0,class:`config-commands__empty`},Wr={class:`config-commands__row`},Gr={class:`config-commands__field`},Kr=[`for`],qr={class:`config-commands__field config-commands__field--wide`},Jr=[`for`],Yr={class:`config-commands__field`},Xr=[`for`],Zr={class:`config-commands__actions-cell`},Qr={class:`config-commands__footer`},$r={class:`config-commands__tab-content`},ei=`__inherit__`,ti=o(h({__name:`ServiceConfigCommands`,props:{service:{}},emits:[`save`,`dockerSave`],setup(e,{emit:t}){let r=e,o=t,{t:l}=H(),u=E(),d=null,f=c({agentId:r.service.agentId??ei,runner:r.service.runner});F(()=>r.service,e=>{f.value={agentId:e.agentId??ei,runner:e.runner}});let m=n(()=>[{label:l(`serviceConfigCommands.native`),value:`native`,icon:`pi pi-desktop`},{label:l(`serviceConfigCommands.docker`),value:`docker`,icon:`pi pi-box`}]),h=n(()=>m.value.find(e=>e.value===f.value.runner)?.icon??`pi pi-box`),g=n(()=>[{label:l(`serviceForm.agentInherit`),value:ei},...u.agents.map(e=>({label:`${e.config.name} (${e.status.connected?l(`serviceConfigCommands.online`):l(`serviceConfigCommands.offline`)})`,value:e.config.id}))]),_=c([...r.service.commands??[]]);F(()=>r.service,e=>{d||(_.value=[...e.commands??[]])});function v(){_.value=[..._.value,{id:de(),label:``,command:``,cwd:void 0,shell:!0}]}function x(e){_.value=_.value.filter((t,n)=>n!==e)}function S(e,t,n){_.value=_.value.map((r,i)=>i===e?{...r,[t]:n===``?void 0:n}:r)}function w(){d&&clearTimeout(d),d=setTimeout(()=>{o(`save`,{agentId:f.value.agentId===ei?null:f.value.agentId||null,runner:f.value.runner,commands:_.value}),d=null},150)}function T(e){o(`dockerSave`,e)}function D(e){x(e),w()}return(t,n)=>(U(),i(`div`,Nr,[q(`div`,Pr,[q(`div`,Fr,[q(`div`,Ir,[n[2]||=q(`i`,{class:`pi pi-server`},null,-1),q(`span`,null,b(s(l)(`serviceConfigCommands.agent`)),1)]),p(s(C),{modelValue:f.value.agentId,"onUpdate:modelValue":n[0]||=e=>f.value.agentId=e,options:g.value,"option-label":`label`,"option-value":`value`,class:`config-card__input`,onChange:w},null,8,[`modelValue`,`options`]),q(`small`,Lr,b(s(l)(`serviceForm.agentHintEdit`)),1)]),q(`div`,Rr,[q(`div`,zr,[q(`i`,{class:y(h.value)},null,2),q(`span`,null,b(s(l)(`serviceConfigCommands.runner`)),1)]),p(s(C),{modelValue:f.value.runner,"onUpdate:modelValue":n[1]||=e=>f.value.runner=e,options:m.value,"option-label":`label`,"option-value":`value`,class:`config-card__input`,onChange:w},{value:G(e=>[e.value?(U(),i(`div`,Br,[q(`i`,{class:y(m.value.find(t=>t.value===e.value)?.icon)},null,2),q(`span`,null,b(m.value.find(t=>t.value===e.value)?.label),1)])):a(``,!0)]),option:G(e=>[q(`div`,Vr,[q(`i`,{class:y(e.option.icon)},null,2),q(`span`,null,b(e.option.label),1)])]),_:1},8,[`modelValue`,`options`])])]),p(s(_e),{value:`0`},{default:G(()=>[p(s(he),null,{default:G(()=>[p(s(Q),{value:`0`},{default:G(()=>[n[3]||=q(`i`,{class:`pi pi-desktop tab-icon`},null,-1),q(`span`,null,b(s(l)(`serviceConfigCommands.native`)),1)]),_:1}),p(s(Q),{value:`1`},{default:G(()=>[n[4]||=q(`i`,{class:`pi pi-box tab-icon`},null,-1),q(`span`,null,b(s(l)(`serviceConfigCommands.docker`)),1)]),_:1})]),_:1}),p(s(ge),null,{default:G(()=>[p(s($),{value:`0`},{default:G(()=>[q(`div`,Hr,[_.value.length===0?(U(),i(`div`,Ur,[q(`p`,null,b(s(l)(`serviceConfigCommands.noCommands`)),1)])):a(``,!0),(U(!0),i(A,null,B(_.value,(e,t)=>(U(),i(`div`,{key:e.id,class:`config-card`},[q(`div`,Wr,[q(`div`,Gr,[q(`label`,{class:`config-commands__label`,for:`cmd-label-${t}`},b(s(l)(`serviceConfigCommands.labelPlaceholder`)),9,Kr),p(s(I),{id:`cmd-label-${t}`,"model-value":e.label,placeholder:s(l)(`serviceConfigCommands.labelPlaceholder`),class:`config-card__input`,"onUpdate:modelValue":e=>S(t,`label`,e),onBlur:w,onKeydown:k(K(w,[`prevent`]),[`enter`])},null,8,[`id`,`model-value`,`placeholder`,`onUpdate:modelValue`,`onKeydown`])]),q(`div`,qr,[q(`label`,{class:`config-commands__label`,for:`cmd-command-${t}`},b(s(l)(`serviceConfigCommands.commandPlaceholder`)),9,Jr),p(s(I),{id:`cmd-command-${t}`,"model-value":e.command,placeholder:`e.g. npm start`,class:`config-card__input`,"onUpdate:modelValue":e=>S(t,`command`,e),onBlur:w,onKeydown:k(K(w,[`prevent`]),[`enter`])},null,8,[`id`,`model-value`,`onUpdate:modelValue`,`onKeydown`])]),q(`div`,Yr,[q(`label`,{class:`config-commands__label`,for:`cmd-cwd-${t}`},`Working Dir (optional)`,8,Xr),p(s(I),{id:`cmd-cwd-${t}`,"model-value":e.cwd??``,placeholder:s(l)(`serviceConfigCommands.cwdPlaceholder`),class:`config-card__input`,"onUpdate:modelValue":e=>S(t,`cwd`,e),onBlur:w,onKeydown:k(K(w,[`prevent`]),[`enter`])},null,8,[`id`,`model-value`,`placeholder`,`onUpdate:modelValue`,`onKeydown`])]),q(`div`,Zr,[p(s(Y),{icon:`pi pi-trash`,severity:`danger`,text:``,rounded:``,size:`small`,onClick:e=>D(t)},null,8,[`onClick`])])])]))),128)),q(`div`,Qr,[p(s(Y),{label:s(l)(`serviceConfigCommands.addCommand`),icon:`pi pi-plus`,severity:`secondary`,outlined:``,size:`small`,onClick:v},null,8,[`label`])])])]),_:1}),p(s($),{value:`1`},{default:G(()=>[q(`div`,$r,[p(Mr,{service:e.service,onSave:T},null,8,[`service`])])]),_:1})]),_:1})]),_:1})]))}}),[[`__scopeId`,`data-v-df297a71`]]),ni={class:`config-env`,"data-testid":`config-env`},ri={key:0,class:`active-env-display`},ii={class:`active-env-label`},ai={key:1,class:`inheritance-toggle`},oi={class:`inheritance-label`},si={class:`inherited-header`},ci={class:`inherited-row-key`},li={class:`preview-key`},ui={class:`value-row`},di=[`onClick`],fi=[`onClick`],pi={key:0,class:`secret-mask`},mi={key:1,class:`preview-value`},hi={class:`config-env__header`},gi={class:`config-env__title`},_i={class:`config-env__actions`},vi={key:3,class:`variables-view`},yi={key:0},bi={key:1,class:`empty-state`},xi={class:`inherited-header`},Si={class:`passthrough-info`},Ci={class:`preview-key`},wi={key:0,class:`preview-value`},Ti={key:1,class:`passthrough-undefined`},Ei={key:4,class:`empty-state`},Di={key:5,class:`empty-state`},Oi={class:`editor-container`},ki={key:0,class:`editor-env-banner`},Ai={class:`editor-env-text`},ji={class:`editor-section`,"data-testid":`variables-editor`},Mi={key:0,class:`loading-container`},Ni={key:1,class:`preview-container`},Pi={class:`preview-info`},Fi={class:`preview-key`},Ii={class:`value-row`},Li=[`onClick`],Ri=[`onClick`],zi={key:0,class:`secret-mask`},Bi={key:1,class:`preview-value`},Vi=o(h({__name:`ServiceConfigEnv`,props:{service:{},projectId:{},activeEnvironmentId:{}},setup(e){let t=e,{t:r}=H(),o=oe(),l=te(),f=ne(),m=d(),h=V(),g=re(),_=n(()=>m.getByRef({id:t.projectId,orgId:h.activeOrgId})?.activeEnvironmentId??null),v=n(()=>f.findServiceEnvironment(t.service.id,_.value??``)),S=c(!1),C=c(!1),w=c(!1),T=c(!1),E=c(null),O=c(null),{suggestions:k,meta:A,search:j}=Te(()=>O.value??E.value),M=c(new Set);function N(e){let t=new Set(M.value);t.has(e)?t.delete(e):t.add(e),M.value=t}let I=c(null);function L(e,t){navigator.clipboard.writeText(t),I.value=e,setTimeout(()=>{I.value===e&&(I.value=null)},1500)}let R=c({}),ie=c(!1),{values:B,agentEntry:se,urlHost:ce}=xe({projectId:()=>t.projectId,environmentId:()=>_.value,agentId:()=>W(t.service)??void 0}),ue=n(()=>{let e={...B.value};Object.assign(e,ee(t.service.ports)),e[`service.NAME`]=t.service.name,e[`service.ID`]=t.service.id,Object.assign(e,z(t.service,ce.value)),t.service.url&&(e[`service.BASE_URL`]=t.service.url);let n=de(se.value?.status?.cwd,se.value?.status?.home);return n&&(e[`service.CWD`]=n),e});function de(e,n){let r=(t.service.resolvedCwd??t.service.cwd??``).trim();return r?r.startsWith(`~/`)&&n?n+r.slice(1):r.includes(`$`)?null:r.startsWith(`/`)||/^[A-Za-z]:[\\/]/.test(r)?r:null:e??null}let Z=n(()=>se.value?.config.passthroughEnv??[]),pe=n(()=>Z.value.length>0);async function he(){let e=W(t.service);if(!e||!pe.value){R.value={};return}ie.value=!0;try{R.value=await J.agent.getPassthroughEnv.query({id:e})}catch{R.value={}}finally{ie.value=!1}}let Q=n(()=>Z.value.map(e=>({name:e,value:R.value[e]??null}))),$=n(()=>!v.value||!_.value?!0:v.value.parentIds?.includes(_.value)??!0);async function ge(e){if(!(!v.value||!_.value)){T.value=!0;try{await f.update({id:v.value.id,parentIds:e?[_.value]:[]}),await je()}catch(e){o.add({severity:`error`,summary:r(`serviceConfigEnv.error`),detail:e.message??r(`serviceConfigEnv.failedToUpdateInheritance`),life:5e3})}finally{T.value=!1}}}let _e=n(()=>{let e=m.getByRef({id:t.projectId,orgId:h.activeOrgId});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=n(()=>E.value?Ee(E.value.variables):[]),Oe=n(()=>{if(!v.value||!E.value?.sources)return De.value;let e=v.value.id;return De.value.filter(t=>E.value.sources[t.variableId]?.environmentId===e)}),ke=n(()=>{if(!v.value||!E.value?.sources)return[];let e=v.value.id;return De.value.filter(t=>E.value.sources[t.variableId]?.environmentId!==e)}),Ae=n(()=>{if(!E.value?.sources)return{};let e={};for(let[t,n]of Object.entries(E.value.sources))e[t]={environmentId:n.environmentId,overridden:n.overridden,...n.resolvedFrom?{resolvedFrom:n.resolvedFrom}:{},...n.overriddenBy?{overriddenBy:n.overriddenBy}:{}};return e});async function je(){if(v.value)try{E.value=await f.resolve(v.value.id)}catch(e){console.error(`Failed to resolve environment:`,e)}}async function Me(){if(_.value)try{O.value=await f.resolve(_.value)}catch{}}async function Ne(){w.value=!0;try{await Ie(),await je(),C.value=!0}catch(e){o.add({severity:`error`,summary:r(`serviceConfigEnv.error`),detail:e.message??r(`serviceConfigEnv.failedToLoadPreview`),life:5e3})}finally{w.value=!1}}let Pe=n(()=>E.value?Object.entries(E.value.env).map(([e,t])=>({key:e,value:Object.entries(ue.value).reduce((e,[t,n])=>e.replaceAll(`{{${t}}}`,n),t)})):[]);function Fe(e,t){return t?`***`:e.length>50?e.substring(0,47)+`...`:e}async function Ie(){if(v.value)return v.value;if(!_.value)return null;let e=_e.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:_.value,parentIds:[_.value],variables:{}}),v.value):null}let Le=n(()=>{let e=g.getByService(t.service.id);return e.length>0?e[0]:null}),Re=n(()=>{let e=Le.value?.state;return e===`running`||e===`errored`});async function ze(){await Ie(),S.value=!0,await Promise.all([je(),Me()])}function Be(){if(S.value=!1,!Re.value||!Le.value)return;let e=Le.value.state===`running`?`restart`:`start`,n=t.service.name||t.service.id;l.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=W(t.service);if(!n)return;e===`restart`?(await g.restart(n,t.service.id),o.add({severity:`success`,summary:r(`serviceConfigEnv.serviceRestarted`),life:3e3})):(await g.start(n,t.service.id),o.add({severity:`success`,summary:r(`serviceConfigEnv.serviceStarted`),life:3e3}))}catch(t){o.add({severity:`error`,summary:r(`serviceConfigEnv.error`),detail:t.message??r(`serviceConfigEnv.failedToAction`,{action:e}),life:5e3})}}})}return F(_e,async e=>{e&&await Promise.all([je(),Me()])}),F(()=>W(t.service),()=>{he()}),D(async()=>{t.projectId&&await f.fetchAll(t.projectId),await Promise.all([je(),Me(),he()])}),(t,n)=>(U(),i(`div`,ni,[_.value?(U(),i(`div`,ri,[q(`span`,ii,b(s(r)(`serviceConfigEnv.activeEnvironment`)),1),p(be,{"environment-id":_.value},null,8,[`environment-id`])])):a(``,!0),v.value&&_e.value?(U(),i(`div`,ai,[p(s(me),{"model-value":$.value,disabled:T.value,"onUpdate:modelValue":ge},null,8,[`model-value`,`disabled`]),q(`span`,oi,b($.value?s(r)(`serviceConfigEnv.inheritsFrom`,{name:_e.value.name}):s(r)(`serviceConfigEnv.isolated`,{name:_e.value.name})),1)])):a(``,!0),ke.value.length>0?(U(),x(s(ve),{key:2,class:`inherited-accordion`},{default:G(()=>[p(s(Se),{value:`inherited`},{default:G(()=>[p(s(we),null,{default:G(()=>[q(`span`,si,[n[6]||=q(`i`,{class:`pi pi-arrow-down-left`},null,-1),P(` `+b(s(r)(`serviceConfigEnv.inheritedVars`))+` `,1),p(s(ae),{value:String(ke.value.length),severity:`secondary`,rounded:``},null,8,[`value`])])]),_:1}),p(s(ye),null,{default:G(()=>[p(s(fe),{value:ke.value,size:`small`,"show-headers":!1},{default:G(()=>[p(s(X),{style:{width:`35%`}},{body:G(({data:e})=>[q(`div`,ci,[q(`code`,li,b(e.key),1),Ae.value[e.variableId]?(U(),x(be,{key:0,"environment-id":Ae.value[e.variableId].environmentId,class:`source-badge`},null,8,[`environment-id`])):a(``,!0)])]),_:1}),p(s(X),{style:{width:`65%`}},{body:G(({data:e})=>[q(`span`,ui,[q(`span`,{class:`value-actions`,onClick:n[0]||=K(()=>{},[`stop`])},[e.slot.isSecret?(U(),i(`i`,{key:0,class:y([M.value.has(e.variableId)?`pi pi-eye-slash`:`pi pi-eye`,`action-icon`]),onClick:t=>N(e.variableId)},null,10,di)):a(``,!0),q(`i`,{class:y([I.value===e.variableId?`pi pi-check`:`pi pi-copy`,`action-icon`]),onClick:t=>L(e.variableId,e.slot.pre+e.slot.value+e.slot.post)},null,10,fi)]),e.slot.isSecret&&!M.value.has(e.variableId)?(U(),i(`span`,pi,`***`)):(U(),i(`code`,mi,b(e.slot.pre)+b(e.slot.value)+b(e.slot.post),1))])]),_:1})]),_:1},8,[`value`])]),_:1})]),_:1})]),_:1})):a(``,!0),q(`div`,hi,[q(`h3`,gi,b(s(r)(`serviceConfigEnv.envVars`)),1),q(`div`,_i,[p(s(Y),{label:s(r)(`serviceConfigEnv.editVariables`),icon:`pi pi-pencil`,size:`small`,outlined:``,"data-testid":`env-edit-btn`,disabled:!_.value,onClick:ze},null,8,[`label`,`disabled`]),p(s(Y),{label:s(r)(`serviceConfigEnv.preview`),icon:`pi pi-eye`,size:`small`,outlined:``,severity:`secondary`,loading:w.value,disabled:!_.value,"data-testid":`env-preview-btn`,onClick:Ne},null,8,[`label`,`loading`,`disabled`])])]),v.value?(U(),i(`div`,vi,[Oe.value.length>0?(U(),i(`div`,yi,[p(Ce,{"environment-id":v.value.id,sources:Ae.value,"resolved-env":{...O.value?.env??{},...E.value?.env??{}},"service-builtins":ue.value,editable:!1,"show-overrides":!0,"show-override-badge":!0,"show-delete":!1,"show-add-button":!1,onVariablesChanged:je},null,8,[`environment-id`,`sources`,`resolved-env`,`service-builtins`])])):(U(),i(`div`,bi,[q(`p`,null,b(s(r)(`serviceConfigEnv.noVarsConfigured`)),1)])),pe.value?(U(),x(s(ve),{key:2,class:`inherited-accordion`},{default:G(()=>[p(s(Se),{value:`passthrough`},{default:G(()=>[p(s(we),null,{default:G(()=>[q(`span`,xi,[n[7]||=q(`i`,{class:`pi pi-globe`},null,-1),P(` `+b(s(r)(`agentPage.passthrough.titleShort`))+` `,1),p(s(ae),{value:String(Z.value.length),severity:`secondary`,rounded:``},null,8,[`value`])])]),_:1}),p(s(ye),null,{default:G(()=>[q(`p`,Si,b(s(r)(`serviceConfigEnv.passthroughInfo`)),1),ie.value?(U(),x(s(le),{key:0,style:{width:`24px`,height:`24px`}})):(U(),x(s(fe),{key:1,value:Q.value,stripedRows:``,size:`small`},{default:G(()=>[p(s(X),{field:`name`,header:s(r)(`common.key`),style:{width:`35%`}},{body:G(({data:e})=>[q(`code`,Ci,b(e.name),1)]),_:1},8,[`header`]),p(s(X),{header:s(r)(`common.value`),style:{width:`65%`}},{body:G(({data:e})=>[e.value===null?(U(),i(`span`,Ti,b(s(r)(`serviceConfigEnv.undefined`)),1)):(U(),i(`span`,wi,b(e.value),1))]),_:1},8,[`header`])]),_:1},8,[`value`]))]),_:1})]),_:1})]),_:1})):a(``,!0)])):_.value?(U(),i(`div`,Di,[q(`p`,null,b(s(r)(`serviceConfigEnv.noVarsConfigured`)),1)])):(U(),i(`div`,Ei,[q(`p`,null,b(s(r)(`serviceConfigEnv.noActiveEnv`)),1)])),p(s(u),{visible:S.value,header:s(r)(`serviceConfigEnv.editVarsHeader`),style:{width:`900px`},modal:``,"onUpdate:visible":n[2]||=e=>{e||Be()}},{footer:G(()=>[p(s(Y),{label:s(r)(`actions.close`),icon:`pi pi-times`,onClick:n[1]||=e=>Be()},null,8,[`label`])]),default:G(()=>[q(`div`,Oi,[_.value?(U(),i(`div`,ki,[q(`span`,Ai,b(s(r)(`serviceConfigEnv.editingVarsFor`,{name:e.service.name||e.service.id})),1),p(be,{"environment-id":_.value},null,8,[`environment-id`])])):a(``,!0),q(`div`,ji,[v.value?(U(),x(Ce,{key:0,"environment-id":v.value.id,editable:!0,sources:Ae.value,"autocomplete-enabled":!0,"autocomplete-suggestions":s(k),"autocomplete-meta":s(A),"resolved-env":{...O.value?.env??{},...E.value?.env??{}},"service-builtins":ue.value,"show-overrides":!0,onVariablesChanged:je,"show-delete":!0,"show-add-button":!0,onAutocompleteSearch:s(j)},null,8,[`environment-id`,`sources`,`autocomplete-suggestions`,`autocomplete-meta`,`resolved-env`,`service-builtins`,`onAutocompleteSearch`])):a(``,!0)])])]),_:1},8,[`visible`,`header`]),p(s(u),{visible:C.value,"onUpdate:visible":n[5]||=e=>C.value=e,header:s(r)(`serviceConfigEnv.previewHeader`),style:{width:`700px`},modal:``,"dismissable-mask":``,"data-testid":`env-preview-dialog`},{footer:G(()=>[p(s(Y),{label:s(r)(`actions.close`),icon:`pi pi-times`,onClick:n[4]||=e=>C.value=!1},null,8,[`label`])]),default:G(()=>[w.value?(U(),i(`div`,Mi,[p(s(le))])):E.value?(U(),i(`div`,Ni,[q(`p`,Pi,b(s(r)(`serviceConfigEnv.injectedVarsInfo`)),1),p(s(fe),{value:Pe.value,stripedRows:``,size:`small`,rows:15,paginator:Pe.value.length>15},{default:G(()=>[p(s(X),{field:`key`,header:s(r)(`common.key`),style:{width:`35%`}},{body:G(({data:e})=>[q(`code`,Fi,b(e.key),1)]),_:1},8,[`header`]),p(s(X),{header:s(r)(`common.value`),style:{width:`65%`}},{body:G(({data:e})=>[q(`span`,Ii,[q(`span`,{class:`value-actions`,onClick:n[3]||=K(()=>{},[`stop`])},[E.value.envSecrets.includes(e.key)?(U(),i(`i`,{key:0,class:y([M.value.has(`preview:`+e.key)?`pi pi-eye-slash`:`pi pi-eye`,`action-icon`]),onClick:t=>N(`preview:`+e.key)},null,10,Li)):a(``,!0),q(`i`,{class:y([I.value===`preview:`+e.key?`pi pi-check`:`pi pi-copy`,`action-icon`]),onClick:t=>L(`preview:`+e.key,e.value)},null,10,Ri)]),E.value.envSecrets.includes(e.key)&&!M.value.has(`preview:`+e.key)?(U(),i(`span`,zi,`***`)):(U(),i(`span`,Bi,b(Fe(e.value,!1)),1))])]),_:1},8,[`header`])]),_:1},8,[`value`,`paginator`])])):a(``,!0)]),_:1},8,[`visible`,`header`])]))}}),[[`__scopeId`,`data-v-4ce7f69c`]]),Hi={class:`config-health`},Ui={class:`config-card config-card--inline`},Wi={class:`config-card__header`},Gi={class:`config-card`},Ki={class:`config-card__header`},qi={class:`config-card`},Ji={class:`config-card__header`},Yi={class:`config-card`},Xi={class:`config-card__header`},Zi={class:`config-card`},Qi={class:`config-card__header`},$i={key:1,class:`config-card`},ea={class:`config-card__header`},ta={class:`config-card__hint`},na={class:`config-card`},ra={class:`config-card__header`},ia={class:`config-card`},aa={class:`config-card__header`},oa={class:`config-card`},sa={class:`config-card__header`},ca={class:`config-card`},la={class:`config-card__header`},ua=o(h({__name:`ServiceConfigHealthCheck`,props:{service:{}},emits:[`save`],setup(e,{emit:t}){let n=e,r=t,{t:o}=H(),l=c(!!n.service.healthCheck),u=c({type:n.service.healthCheck?.type??`http`,path:n.service.healthCheck?.path??`/health`,interval:n.service.healthCheck?.interval??3e4,timeout:n.service.healthCheck?.timeout??5e3,retries:n.service.healthCheck?.retries??3,method:n.service.healthCheck?.method??`GET`,expectedStatus:n.service.healthCheck?.expectedStatus??200,initialDelay:n.service.healthCheck?.initialDelay??5e3,command:n.service.healthCheck?.command??``}),d=[{label:`HTTP Request`,value:`http`},{label:`Command`,value:`command`}],f=[{label:`GET`,value:`GET`},{label:`HEAD`,value:`HEAD`},{label:`POST`,value:`POST`},{label:`PUT`,value:`PUT`}];F(()=>n.service,e=>{l.value=!!e.healthCheck,u.value={type:e.healthCheck?.type??`http`,path:e.healthCheck?.path??`/health`,interval:e.healthCheck?.interval??3e4,timeout:e.healthCheck?.timeout??5e3,retries:e.healthCheck?.retries??3,method:e.healthCheck?.method??`GET`,expectedStatus:e.healthCheck?.expectedStatus??200,initialDelay:e.healthCheck?.initialDelay??5e3,command:e.healthCheck?.command??``}});let m=null;function h(){m&&clearTimeout(m),m=setTimeout(()=>{if(!l.value)r(`save`,void 0);else{if(u.value.type===`http`&&!u.value.path?.trim()||u.value.type===`command`&&!u.value.command?.trim())return;r(`save`,{type:u.value.type,path:u.value.path,method:u.value.method,expectedStatus:u.value.expectedStatus,command:u.value.command||void 0,interval:u.value.interval,timeout:u.value.timeout,retries:u.value.retries,initialDelay:u.value.initialDelay})}m=null},150)}return(e,t)=>(U(),i(`div`,Hi,[q(`div`,Ui,[q(`div`,Wi,[t[10]||=q(`i`,{class:`pi pi-heart`},null,-1),q(`span`,null,b(s(o)(`serviceConfigHealthCheck.enable`)),1)]),p(s(me),{modelValue:l.value,"onUpdate:modelValue":t[0]||=e=>l.value=e,onChange:h},null,8,[`modelValue`])]),l.value?(U(),i(A,{key:0},[q(`div`,Gi,[q(`div`,Ki,[t[11]||=q(`i`,{class:`pi pi-cog`},null,-1),q(`span`,null,b(s(o)(`serviceConfigHealthCheck.type`)),1)]),p(s(C),{modelValue:u.value.type,"onUpdate:modelValue":t[1]||=e=>u.value.type=e,options:d,"option-label":`label`,"option-value":`value`,class:`config-card__input`,onChange:h},null,8,[`modelValue`]),t[12]||=q(`small`,{class:`config-card__hint`},`HTTP checks a URL endpoint; Command runs a shell command (exit 0 = healthy)`,-1)]),u.value.type===`http`?(U(),i(A,{key:0},[q(`div`,qi,[q(`div`,Ji,[t[13]||=q(`i`,{class:`pi pi-link`},null,-1),q(`span`,null,b(s(o)(`serviceConfigHealthCheck.path`)),1)]),p(s(I),{modelValue:u.value.path,"onUpdate:modelValue":t[2]||=e=>u.value.path=e,class:`config-card__input`,placeholder:`/health`,onBlur:h,onKeydown:k(K(h,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])]),q(`div`,Yi,[q(`div`,Xi,[t[14]||=q(`i`,{class:`pi pi-directions`},null,-1),q(`span`,null,b(s(o)(`serviceConfigHealthCheck.method`)),1)]),p(s(C),{modelValue:u.value.method,"onUpdate:modelValue":t[3]||=e=>u.value.method=e,options:f,"option-label":`label`,"option-value":`value`,class:`config-card__input`,onChange:h},null,8,[`modelValue`])]),q(`div`,Zi,[q(`div`,Qi,[t[15]||=q(`i`,{class:`pi pi-check-circle`},null,-1),q(`span`,null,b(s(o)(`serviceConfigHealthCheck.expectedStatus`)),1)]),p(s(Z),{modelValue:u.value.expectedStatus,"onUpdate:modelValue":t[4]||=e=>u.value.expectedStatus=e,class:`config-card__input`,"use-grouping":!1,min:100,max:599,onBlur:h,onKeydown:k(K(h,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`]),t[16]||=q(`small`,{class:`config-card__hint`},`HTTP status code to expect (default 200)`,-1)])],64)):a(``,!0),u.value.type===`command`?(U(),i(`div`,$i,[q(`div`,ea,[t[17]||=q(`i`,{class:`pi pi-code`},null,-1),q(`span`,null,b(s(o)(`serviceConfigHealthCheck.command`)),1)]),p(s(L),{modelValue:u.value.command,"onUpdate:modelValue":t[5]||=e=>u.value.command=e,class:`config-card__input`,rows:`2`,placeholder:`curl -sf http://localhost:3000/health`,"auto-resize":``,onBlur:h},null,8,[`modelValue`]),q(`small`,ta,b(s(o)(`serviceConfigHealthCheck.commandHint`)),1)])):a(``,!0),q(`div`,na,[q(`div`,ra,[t[18]||=q(`i`,{class:`pi pi-hourglass`},null,-1),q(`span`,null,b(s(o)(`serviceConfigHealthCheck.initialDelay`)),1)]),p(s(Z),{modelValue:u.value.initialDelay,"onUpdate:modelValue":t[6]||=e=>u.value.initialDelay=e,class:`config-card__input`,"use-grouping":!1,min:0,onBlur:h,onKeydown:k(K(h,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`]),t[19]||=q(`small`,{class:`config-card__hint`},`Wait before first health check (ms)`,-1)]),q(`div`,ia,[q(`div`,aa,[t[20]||=q(`i`,{class:`pi pi-clock`},null,-1),q(`span`,null,b(s(o)(`serviceConfigHealthCheck.interval`)),1)]),p(s(Z),{modelValue:u.value.interval,"onUpdate:modelValue":t[7]||=e=>u.value.interval=e,class:`config-card__input`,"use-grouping":!1,min:1e3,onBlur:h,onKeydown:k(K(h,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])]),q(`div`,oa,[q(`div`,sa,[t[21]||=q(`i`,{class:`pi pi-stopwatch`},null,-1),q(`span`,null,b(s(o)(`serviceConfigHealthCheck.timeout`)),1)]),p(s(Z),{modelValue:u.value.timeout,"onUpdate:modelValue":t[8]||=e=>u.value.timeout=e,class:`config-card__input`,"use-grouping":!1,min:500,onBlur:h,onKeydown:k(K(h,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])]),q(`div`,ca,[q(`div`,la,[t[22]||=q(`i`,{class:`pi pi-replay`},null,-1),q(`span`,null,b(s(o)(`serviceConfigHealthCheck.retries`)),1)]),p(s(Z),{modelValue:u.value.retries,"onUpdate:modelValue":t[9]||=e=>u.value.retries=e,class:`config-card__input`,"use-grouping":!1,min:0,max:10,onBlur:h,onKeydown:k(K(h,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])])],64)):a(``,!0)]))}}),[[`__scopeId`,`data-v-63e32039`]]),da={class:`config-shortcuts`},fa={key:0,class:`config-shortcuts__empty`},pa={class:`config-shortcuts__row`},ma={class:`config-shortcuts__field`},ha=[`for`],ga={class:`config-shortcuts__field config-shortcuts__field--wide`},_a=[`for`],va={class:`config-shortcuts__field`},ya=[`for`],ba={class:`config-shortcuts__actions-cell`},xa={class:`config-shortcuts__footer`},Sa=o(h({__name:`ServiceConfigShortcuts`,props:{service:{}},emits:[`save`],setup(e,{emit:t}){let n=e,{t:r}=H(),o=t,l=c([...n.service.shortcuts??[]]),u=null;F(()=>n.service,e=>{u||(l.value=[...e.shortcuts??[]])});function d(){l.value=[...l.value,{id:de(),label:``,command:``,cwd:void 0}]}function f(e){l.value=l.value.filter((t,n)=>n!==e)}function m(e,t,n){l.value=l.value.map((r,i)=>i===e?{...r,[t]:n||void 0}:r)}function h(){u&&clearTimeout(u),u=setTimeout(()=>{o(`save`,l.value),u=null},150)}function g(e){f(e),h()}return(e,t)=>(U(),i(`div`,da,[l.value.length===0?(U(),i(`div`,fa,[q(`p`,null,b(s(r)(`serviceConfigShortcuts.empty`)),1)])):a(``,!0),(U(!0),i(A,null,B(l.value,(e,t)=>(U(),i(`div`,{key:e.id,class:`config-card`},[q(`div`,pa,[q(`div`,ma,[q(`label`,{class:`config-shortcuts__label`,for:`shortcut-label-${t}`},b(s(r)(`serviceConfigShortcuts.label`)),9,ha),p(s(I),{id:`shortcut-label-${t}`,"model-value":e.label,placeholder:s(r)(`serviceConfigShortcuts.labelPlaceholder`),class:`config-card__input`,"data-testid":`shortcut-label-input`,"onUpdate:modelValue":e=>m(t,`label`,e),onBlur:h,onKeydown:k(K(h,[`prevent`]),[`enter`])},null,8,[`id`,`model-value`,`placeholder`,`onUpdate:modelValue`,`onKeydown`])]),q(`div`,ga,[q(`label`,{class:`config-shortcuts__label`,for:`shortcut-command-${t}`},b(s(r)(`serviceConfigShortcuts.command`)),9,_a),p(s(I),{id:`shortcut-command-${t}`,"model-value":e.command,placeholder:s(r)(`serviceConfigShortcuts.commandPlaceholder`),class:`config-card__input`,"data-testid":`shortcut-command-input`,"onUpdate:modelValue":e=>m(t,`command`,e),onBlur:h,onKeydown:k(K(h,[`prevent`]),[`enter`])},null,8,[`id`,`model-value`,`placeholder`,`onUpdate:modelValue`,`onKeydown`])]),q(`div`,va,[q(`label`,{class:`config-shortcuts__label`,for:`shortcut-cwd-${t}`},b(s(r)(`serviceConfigShortcuts.workingDir`)),9,ya),p(s(I),{id:`shortcut-cwd-${t}`,"model-value":e.cwd??``,placeholder:s(r)(`serviceConfigShortcuts.cwdPlaceholder`),class:`config-card__input`,"onUpdate:modelValue":e=>m(t,`cwd`,e),onBlur:h,onKeydown:k(K(h,[`prevent`]),[`enter`])},null,8,[`id`,`model-value`,`placeholder`,`onUpdate:modelValue`,`onKeydown`])]),q(`div`,ba,[p(s(Y),{icon:`pi pi-trash`,severity:`danger`,text:``,rounded:``,size:`small`,onClick:e=>g(t)},null,8,[`onClick`])])])]))),128)),q(`div`,xa,[p(s(Y),{label:s(r)(`serviceConfigShortcuts.addShortcut`),icon:`pi pi-plus`,severity:`secondary`,outlined:``,size:`small`,"data-testid":`add-shortcut-btn`,onClick:d},null,8,[`label`])])]))}}),[[`__scopeId`,`data-v-d6ecb989`]]),Ca={class:`config-log-parsers`},wa={class:`config-card`},Ta={class:`config-card__header`},Ea={class:`config-card__hint`},Da={class:`config-card`},Oa={class:`config-card__header`},ka={class:`config-card__header-hint`},Aa={class:`config-log-parsers__order`},ja={class:`config-log-parsers__name`},Ma={key:1,class:`config-log-parsers__empty`},Na={class:`config-log-parsers__add-row`},Pa={class:`config-log-parsers__footer`},Fa=o(h({__name:`ServiceConfigLogs`,props:{service:{}},emits:[`save`],setup(t,{emit:r}){let o=t,l=r,u=_(),{t:d}=H(),f=je(),m=c([...o.service.parserIds??[]]);F(()=>o.service,e=>{m.value=[...e.parserIds??[]]});let h=n(()=>[...f.parsers].filter(e=>e.enabled).sort((e,t)=>e.name.localeCompare(t.name))),g=n(()=>h.value.filter(e=>!m.value.includes(e.id))),v=c(m.value.map(e=>f.parsers.find(t=>t.id===e)).filter(e=>e!==void 0));F(m,e=>{let t=v.value.filter(t=>e.includes(t.id)),n=e.filter(e=>!t.find(t=>t.id===e)).map(e=>f.parsers.find(t=>t.id===e)).filter(e=>e!==void 0);v.value=[...t,...n]}),F(()=>f.parsers,()=>{v.value=m.value.map(e=>f.parsers.find(t=>t.id===e)).filter(e=>e!==void 0)});let y=c(null);function S(e){if(!e)return;let t=f.parsers.find(t=>t.id===e);t&&(m.value=[...m.value,e],v.value=[...v.value,t],y.value=null,O())}function T(e){m.value=m.value.filter(t=>t!==e),v.value=v.value.filter(t=>t.id!==e),O()}function E(){m.value=v.value.map(e=>e.id),O()}function O(){l(`save`,{parserIds:v.value.map(e=>e.id)})}return D(()=>{f.fetchParsers(),f.subscribeParsers()}),e(()=>{f.unsubscribeParsers()}),(e,t)=>(U(),i(`div`,Ca,[q(`div`,wa,[q(`div`,Ta,[t[3]||=q(`i`,{class:`pi pi-code`},null,-1),q(`span`,null,b(s(d)(`serviceConfigLogs.jsParsers`)),1)]),q(`small`,Ea,b(s(d)(`serviceConfigLogs.jsParsersHint`)),1)]),q(`div`,Da,[q(`div`,Oa,[t[4]||=q(`i`,{class:`pi pi-sort-alt`},null,-1),q(`span`,null,b(s(d)(`serviceConfigLogs.executionOrder`)),1),q(`small`,ka,b(s(d)(`serviceConfigLogs.executionOrderHint`)),1)]),v.value.length>0?(U(),x(s(w),{key:0,modelValue:v.value,"onUpdate:modelValue":t[0]||=e=>v.value=e,animation:150,handle:`.drag-handle`,class:`config-log-parsers__drag-list`,"data-testid":`log-parsers-drag-list`,onEnd:E},{default:G(()=>[(U(!0),i(A,null,B(v.value,(e,n)=>(U(),i(`div`,{key:e.id,class:`config-log-parsers__drag-row`,"data-testid":`log-parsers-drag-row`},[t[5]||=q(`span`,{class:`drag-handle`,"data-testid":`drag-handle`},[q(`i`,{class:`pi pi-bars`})],-1),q(`span`,Aa,b(n+1),1),q(`span`,ja,b(e.name),1),e.builtin?(U(),x(s(ae),{key:0,severity:`secondary`,class:`config-log-parsers__builtin-badge`},{default:G(()=>[P(b(s(d)(`serviceConfigLogs.builtin`)),1)]),_:1})):a(``,!0),e.enabled?a(``,!0):(U(),x(s(ae),{key:1,severity:`warn`,class:`config-log-parsers__disabled-badge`},{default:G(()=>[P(b(s(d)(`serviceConfigLogs.disabled`)),1)]),_:1})),p(s(Y),{icon:`pi pi-trash`,severity:`danger`,text:``,size:`small`,class:`config-log-parsers__delete`,onClick:t=>T(e.id)},null,8,[`onClick`])]))),128))]),_:1},8,[`modelValue`])):a(``,!0),v.value.length===0?(U(),i(`div`,Ma,b(s(d)(`serviceConfigLogs.empty`)),1)):a(``,!0),q(`div`,Na,[p(s(C),{modelValue:y.value,"onUpdate:modelValue":[t[1]||=e=>y.value=e,S],options:g.value,"option-label":`name`,"option-value":`id`,placeholder:s(d)(`serviceConfigLogs.addParser`),class:`config-log-parsers__add-select`,loading:s(f).loading,disabled:g.value.length===0},{option:G(({option:e})=>[q(`span`,null,b(e.name),1),e.builtin?(U(),x(s(ae),{key:0,severity:`secondary`,class:`ml-2`,style:{"font-size":`0.65rem`,padding:`0.1rem 0.35rem`}},{default:G(()=>[P(b(s(d)(`serviceConfigLogs.builtin`)),1)]),_:1})):a(``,!0)]),_:1},8,[`modelValue`,`options`,`placeholder`,`loading`,`disabled`])])]),q(`div`,Pa,[p(s(Y),{label:s(d)(`serviceConfigLogs.manageParsers`),icon:`pi pi-cog`,severity:`secondary`,outlined:``,size:`small`,onClick:t[2]||=e=>s(u).push({name:`settings`,query:{section:`parsers`}})},null,8,[`label`])])]))}}),[[`__scopeId`,`data-v-73b711b6`]]),Ia={class:`config-log-sources`},La={class:`config-card`},Ra={class:`config-card__header`},za={class:`config-card__hint`},Ba={key:0,class:`config-card config-card--list`},Va={class:`source-row__info`},Ha={class:`source-row__type`},Ua={class:`source-row__label`},Wa={class:`source-row__actions`},Ga={key:1,class:`config-log-sources__empty`},Ka={class:`config-log-sources__footer`},qa={class:`dialog-form`},Ja={class:`dialog-form__field`},Ya={for:`lsrc-type`,class:`dialog-form__label`},Xa={class:`dialog-form__field`},Za={for:`lsrc-path-file`,class:`dialog-form__label`},Qa={class:`dialog-form__field`},$a={for:`lsrc-encoding-file`,class:`dialog-form__label`},eo={class:`dialog-form__field dialog-form__field--row`},to={for:`lsrc-startFromEnd-file`,class:`dialog-form__label`},no={class:`dialog-form__field dialog-form__field--row`},ro={for:`lsrc-createIfNotExists-file`,class:`dialog-form__label`},io={class:`dialog-form__field`},ao={for:`lsrc-connectionString-mongo`,class:`dialog-form__label`},oo={class:`dialog-form__row`},so={class:`dialog-form__field`},co={class:`dialog-form__field`},lo={class:`dialog-form__row`},uo={class:`dialog-form__field`},fo={class:`dialog-form__field`},po={class:`dialog-form__field`},mo={class:`dialog-form__row`},ho={class:`dialog-form__field dialog-form__field--grow`},go={class:`dialog-form__field dialog-form__field--port`},_o={class:`dialog-form__row`},vo={class:`dialog-form__field`},yo={class:`dialog-form__field`},bo={class:`dialog-form__row`},xo={class:`dialog-form__field`},So={class:`dialog-form__field`},Co={class:`dialog-form__row`},wo={class:`dialog-form__field`},To={class:`dialog-form__field`},Eo={class:`dialog-form__row`},Do={class:`dialog-form__field`},Oo={class:`dialog-form__field`},ko={class:`dialog-form__field`},Ao={key:3,class:`dialog-form__hint-block`},jo=o(h({__name:`ServiceConfigLogSources`,props:{service:{}},emits:[`save`],setup(e,{emit:t}){let{t:n}=H(),r=e,o=t,l=[{label:`Console (stdout/stderr)`,value:`console`,icon:`pi-terminal`},{label:`File`,value:`file`,icon:`pi-file`},{label:`MongoDB`,value:`mongo`,icon:`pi-database`},{label:`MySQL`,value:`mysql`,icon:`pi-database`}];function d(e){return e===`console`?{type:`console`}:e===`file`?{type:`file`,path:``,encoding:`utf-8`,startFromEnd:!0,createIfNotExists:!1}:e===`mongo`?{type:`mongo`,connectionString:``,database:``,collection:``,timestampField:`timestamp`,messageField:`message`}:{type:`mysql`,host:`localhost`,port:3306,user:``,password:``,database:``,table:``,timestampColumn:`created_at`,messageColumn:`message`,pollIntervalMs:2e3}}let f=c([...r.service.logSources??[]]);F(()=>r.service.logSources,e=>{f.value=[...e??[]]});let m=c(!1),h=c(null),g=c(d(`console`));function _(){h.value=null,g.value=d(`file`),m.value=!0}function v(e){h.value=e,g.value={...f.value[e]},m.value=!0}function x(e){g.value=d(e)}function S(){h.value===null?f.value=[...f.value,{...g.value}]:f.value=f.value.map((e,t)=>t===h.value?{...g.value}:e),m.value=!1,o(`save`,{logSources:f.value})}function w(e){f.value=f.value.filter((t,n)=>n!==e),o(`save`,{logSources:f.value})}function T(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 E(e){return e===`console`?`pi-terminal`:e===`file`?`pi-file`:`pi-database`}return(e,t)=>(U(),i(`div`,Ia,[q(`div`,La,[q(`div`,Ra,[t[23]||=q(`i`,{class:`pi pi-inbox`},null,-1),q(`span`,null,b(s(n)(`serviceConfigLogSources.title`)),1)]),q(`small`,za,b(s(n)(`serviceConfigLogSources.hint`)),1)]),f.value.length>0?(U(),i(`div`,Ba,[(U(!0),i(A,null,B(f.value,(e,t)=>(U(),i(`div`,{key:t,class:`source-row`},[q(`i`,{class:y(`pi ${E(e.type)} source-row__icon`)},null,2),q(`div`,Va,[q(`span`,Ha,b(e.type),1),q(`span`,Ua,b(T(e)),1)]),q(`div`,Wa,[p(s(Y),{icon:`pi pi-pencil`,text:``,size:`small`,severity:`secondary`,onClick:e=>v(t)},null,8,[`onClick`]),p(s(Y),{icon:`pi pi-trash`,text:``,size:`small`,severity:`danger`,onClick:e=>w(t)},null,8,[`onClick`])])]))),128))])):(U(),i(`div`,Ga,[t[24]||=q(`i`,{class:`pi pi-inbox config-log-sources__empty-icon`},null,-1),q(`p`,null,b(s(n)(`serviceConfigLogSources.empty`)),1),q(`small`,null,b(s(n)(`serviceConfigLogSources.emptyHint`)),1)])),q(`div`,Ka,[p(s(Y),{label:s(n)(`serviceConfigLogSources.addSource`),icon:`pi pi-plus`,size:`small`,onClick:_},null,8,[`label`])]),p(s(u),{visible:m.value,"onUpdate:visible":t[22]||=e=>m.value=e,header:h.value===null?s(n)(`serviceConfigLogSources.addDialog`):s(n)(`serviceConfigLogSources.editDialog`),modal:``,style:{width:`520px`}},{footer:G(()=>[p(s(Y),{label:s(n)(`serviceConfigLogSources.cancel`),severity:`secondary`,outlined:``,onClick:t[21]||=e=>m.value=!1},null,8,[`label`]),p(s(Y),{label:h.value===null?s(n)(`serviceConfigLogSources.add`):s(n)(`serviceConfigLogSources.save`),icon:`pi pi-check`,onClick:S},null,8,[`label`])]),default:G(()=>[q(`div`,qa,[q(`div`,Ja,[q(`label`,Ya,b(s(n)(`serviceConfigLogSources.type`)),1),p(s(C),{"input-id":`lsrc-type`,"model-value":g.value.type,options:l,"option-label":`label`,"option-value":`value`,class:`dialog-form__input`,"onUpdate:modelValue":x},null,8,[`model-value`])]),g.value.type===`file`?(U(),i(A,{key:0},[q(`div`,Xa,[q(`label`,Za,[P(b(s(n)(`serviceConfigLogSources.path`))+` `,1),t[25]||=q(`span`,{class:`dialog-form__required`},`*`,-1)]),p(s(I),{id:`lsrc-path-file`,modelValue:g.value.path,"onUpdate:modelValue":t[0]||=e=>g.value.path=e,class:`dialog-form__input`,placeholder:`/var/log/app.log`},null,8,[`modelValue`])]),q(`div`,Qa,[q(`label`,$a,b(s(n)(`serviceConfigLogSources.encoding`)),1),p(s(I),{id:`lsrc-encoding-file`,modelValue:g.value.encoding,"onUpdate:modelValue":t[1]||=e=>g.value.encoding=e,class:`dialog-form__input`,placeholder:`utf-8`},null,8,[`modelValue`])]),q(`div`,eo,[q(`label`,to,b(s(n)(`serviceConfigLogSources.startFromEnd`)),1),p(s(me),{"input-id":`lsrc-startFromEnd-file`,modelValue:g.value.startFromEnd,"onUpdate:modelValue":t[2]||=e=>g.value.startFromEnd=e},null,8,[`modelValue`])]),q(`div`,no,[q(`label`,ro,b(s(n)(`serviceConfigLogSources.createIfNotExists`)),1),p(s(me),{"input-id":`lsrc-createIfNotExists-file`,modelValue:g.value.createIfNotExists,"onUpdate:modelValue":t[3]||=e=>g.value.createIfNotExists=e},null,8,[`modelValue`])])],64)):g.value.type===`mongo`?(U(),i(A,{key:1},[q(`div`,io,[q(`label`,ao,[P(b(s(n)(`serviceConfigLogSources.connectionString`))+` `,1),t[26]||=q(`span`,{class:`dialog-form__required`},`*`,-1)]),p(s(I),{id:`lsrc-connectionString-mongo`,modelValue:g.value.connectionString,"onUpdate:modelValue":t[4]||=e=>g.value.connectionString=e,class:`dialog-form__input`,placeholder:`mongodb://user:pass@host:27017`,type:`password`,autocomplete:`off`},null,8,[`modelValue`])]),q(`div`,oo,[q(`div`,so,[t[27]||=q(`label`,{for:`lsrc-database-mongo`,class:`dialog-form__label`},[P(`Database `),q(`span`,{class:`dialog-form__required`},`*`)],-1),p(s(I),{id:`lsrc-database-mongo`,modelValue:g.value.database,"onUpdate:modelValue":t[5]||=e=>g.value.database=e,class:`dialog-form__input`,placeholder:`mydb`},null,8,[`modelValue`])]),q(`div`,co,[t[28]||=q(`label`,{for:`lsrc-collection-mongo`,class:`dialog-form__label`},[P(`Collection `),q(`span`,{class:`dialog-form__required`},`*`)],-1),p(s(I),{id:`lsrc-collection-mongo`,modelValue:g.value.collection,"onUpdate:modelValue":t[6]||=e=>g.value.collection=e,class:`dialog-form__input`,placeholder:`logs`},null,8,[`modelValue`])])]),q(`div`,lo,[q(`div`,uo,[t[29]||=q(`label`,{for:`lsrc-timestampField-mongo`,class:`dialog-form__label`},`Timestamp field`,-1),p(s(I),{id:`lsrc-timestampField-mongo`,modelValue:g.value.timestampField,"onUpdate:modelValue":t[7]||=e=>g.value.timestampField=e,class:`dialog-form__input`,placeholder:`timestamp`},null,8,[`modelValue`])]),q(`div`,fo,[t[30]||=q(`label`,{for:`lsrc-messageField-mongo`,class:`dialog-form__label`},`Message field`,-1),p(s(I),{id:`lsrc-messageField-mongo`,modelValue:g.value.messageField,"onUpdate:modelValue":t[8]||=e=>g.value.messageField=e,class:`dialog-form__input`,placeholder:`message`},null,8,[`modelValue`])])]),q(`div`,po,[t[31]||=q(`label`,{for:`lsrc-levelField-mongo`,class:`dialog-form__label`},[P(`Level field `),q(`span`,{class:`dialog-form__hint`},`(optional)`)],-1),p(s(I),{id:`lsrc-levelField-mongo`,modelValue:g.value.levelField,"onUpdate:modelValue":t[9]||=e=>g.value.levelField=e,class:`dialog-form__input`,placeholder:`level`},null,8,[`modelValue`])])],64)):g.value.type===`mysql`?(U(),i(A,{key:2},[q(`div`,mo,[q(`div`,ho,[t[32]||=q(`label`,{for:`lsrc-host-mysql`,class:`dialog-form__label`},[P(`Host `),q(`span`,{class:`dialog-form__required`},`*`)],-1),p(s(I),{id:`lsrc-host-mysql`,modelValue:g.value.host,"onUpdate:modelValue":t[10]||=e=>g.value.host=e,class:`dialog-form__input`,placeholder:`localhost`},null,8,[`modelValue`])]),q(`div`,go,[t[33]||=q(`label`,{for:`lsrc-port-mysql`,class:`dialog-form__label`},`Port`,-1),p(s(Z),{"input-id":`lsrc-port-mysql`,modelValue:g.value.port,"onUpdate:modelValue":t[11]||=e=>g.value.port=e,min:1,max:65535,class:`dialog-form__input`},null,8,[`modelValue`])])]),q(`div`,_o,[q(`div`,vo,[t[34]||=q(`label`,{for:`lsrc-user-mysql`,class:`dialog-form__label`},[P(`User `),q(`span`,{class:`dialog-form__required`},`*`)],-1),p(s(I),{id:`lsrc-user-mysql`,modelValue:g.value.user,"onUpdate:modelValue":t[12]||=e=>g.value.user=e,class:`dialog-form__input`,placeholder:`root`},null,8,[`modelValue`])]),q(`div`,yo,[t[35]||=q(`label`,{for:`lsrc-password-mysql`,class:`dialog-form__label`},`Password`,-1),p(s(I),{id:`lsrc-password-mysql`,modelValue:g.value.password,"onUpdate:modelValue":t[13]||=e=>g.value.password=e,class:`dialog-form__input`,type:`password`,autocomplete:`new-password`},null,8,[`modelValue`])])]),q(`div`,bo,[q(`div`,xo,[t[36]||=q(`label`,{for:`lsrc-database-mysql`,class:`dialog-form__label`},[P(`Database `),q(`span`,{class:`dialog-form__required`},`*`)],-1),p(s(I),{id:`lsrc-database-mysql`,modelValue:g.value.database,"onUpdate:modelValue":t[14]||=e=>g.value.database=e,class:`dialog-form__input`,placeholder:`app_db`},null,8,[`modelValue`])]),q(`div`,So,[t[37]||=q(`label`,{for:`lsrc-table-mysql`,class:`dialog-form__label`},[P(`Table `),q(`span`,{class:`dialog-form__required`},`*`)],-1),p(s(I),{id:`lsrc-table-mysql`,modelValue:g.value.table,"onUpdate:modelValue":t[15]||=e=>g.value.table=e,class:`dialog-form__input`,placeholder:`logs`},null,8,[`modelValue`])])]),q(`div`,Co,[q(`div`,wo,[t[38]||=q(`label`,{for:`lsrc-timestampColumn-mysql`,class:`dialog-form__label`},`Timestamp column`,-1),p(s(I),{id:`lsrc-timestampColumn-mysql`,modelValue:g.value.timestampColumn,"onUpdate:modelValue":t[16]||=e=>g.value.timestampColumn=e,class:`dialog-form__input`,placeholder:`created_at`},null,8,[`modelValue`])]),q(`div`,To,[t[39]||=q(`label`,{for:`lsrc-messageColumn-mysql`,class:`dialog-form__label`},`Message column`,-1),p(s(I),{id:`lsrc-messageColumn-mysql`,modelValue:g.value.messageColumn,"onUpdate:modelValue":t[17]||=e=>g.value.messageColumn=e,class:`dialog-form__input`,placeholder:`message`},null,8,[`modelValue`])])]),q(`div`,Eo,[q(`div`,Do,[t[40]||=q(`label`,{for:`lsrc-levelColumn-mysql`,class:`dialog-form__label`},[P(`Level column `),q(`span`,{class:`dialog-form__hint`},`(optional)`)],-1),p(s(I),{id:`lsrc-levelColumn-mysql`,modelValue:g.value.levelColumn,"onUpdate:modelValue":t[18]||=e=>g.value.levelColumn=e,class:`dialog-form__input`,placeholder:`level`},null,8,[`modelValue`])]),q(`div`,Oo,[t[41]||=q(`label`,{for:`lsrc-pollIntervalMs-mysql`,class:`dialog-form__label`},`Poll interval (ms)`,-1),p(s(Z),{"input-id":`lsrc-pollIntervalMs-mysql`,modelValue:g.value.pollIntervalMs,"onUpdate:modelValue":t[19]||=e=>g.value.pollIntervalMs=e,min:500,max:6e4,class:`dialog-form__input`},null,8,[`modelValue`])])]),q(`div`,ko,[t[42]||=q(`label`,{for:`lsrc-query-mysql`,class:`dialog-form__label`},[P(`Custom query `),q(`span`,{class:`dialog-form__hint`},[P(`(optional, must include `),q(`code`,null,`WHERE … > ?`),P(`)`)])],-1),p(s(I),{id:`lsrc-query-mysql`,modelValue:g.value.query,"onUpdate:modelValue":t[20]||=e=>g.value.query=e,class:`dialog-form__input`,placeholder:`SELECT * FROM logs WHERE created_at > ? ORDER BY id ASC`},null,8,[`modelValue`])])],64)):g.value.type===`console`?(U(),i(`small`,Ao,`The console source captures stdout/stderr and is always active. Adding it here has no effect unless you want to track it explicitly.`)):a(``,!0)])]),_:1},8,[`visible`,`header`])]))}}),[[`__scopeId`,`data-v-1ceb461a`]]),Mo={class:`config-traefik`},No={class:`traefik-entry__fields`},Po=o(h({__name:`ServiceConfigTraefik`,props:{service:{}},emits:[`save`],setup(e,{emit:t}){let n=e,r=t,o=c([...n.service.localUrls??[]]),l=c(null);D(async()=>{let e=W(n.service);e&&(l.value=(await J.settings.getAgentTraefikConfig.query({agentId:e})).enabled)});let u=null;F(()=>n.service,e=>{u||(o.value=[...e.localUrls??[]])});function d(){o.value=[...o.value,{url:``,port:3e3}]}function f(e){o.value=o.value.filter((t,n)=>n!==e),h()}function m(e,t,n){o.value=o.value.map((r,i)=>i===e?{...r,[t]:n}:r)}function h(){u&&clearTimeout(u),u=setTimeout(()=>{r(`save`,{localUrls:o.value.filter(e=>e.url.trim())}),u=null},150)}return(e,t)=>(U(),i(`div`,Mo,[l.value===!1?(U(),x(s(j),{key:0,severity:`warn`,closable:!1},{default:G(()=>[t[1]||=P(` Traefik n'est pas activé. Configurez-le dans `,-1),p(s(T),{to:{name:`settings`,query:{section:`agents`}}},{default:G(()=>[...t[0]||=[P(`Paramètres → Agents`,-1)]]),_:1}),t[2]||=P(` (bouton Traefik sur la ligne de l'agent) pour que ces URLs soient actives. `,-1)]),_:1})):a(``,!0),(U(!0),i(A,null,B(o.value,(e,t)=>(U(),i(`div`,{key:t,class:`traefik-entry`},[q(`div`,No,[p(s(I),{"model-value":e.url,class:`traefik-entry__url`,placeholder:`mon-app.local.mondomaine.com`,"onUpdate:modelValue":e=>m(t,`url`,e),onBlur:h,onKeydown:k(K(h,[`prevent`]),[`enter`])},null,8,[`model-value`,`onUpdate:modelValue`,`onKeydown`]),p(s(Z),{"model-value":e.port,class:`traefik-entry__port`,min:1,max:65535,"use-grouping":!1,placeholder:`3000`,"onUpdate:modelValue":e=>{m(t,`port`,e??3e3),h()}},null,8,[`model-value`,`onUpdate:modelValue`]),p(s(Y),{icon:`pi pi-trash`,severity:`danger`,text:``,size:`small`,onClick:e=>f(t)},null,8,[`onClick`])])]))),128)),p(s(Y),{icon:`pi pi-plus`,label:`Ajouter une URL`,size:`small`,outlined:``,onClick:d})]))}}),[[`__scopeId`,`data-v-4637fc30`]]),Fo={class:`config-view`,"data-testid":`config-view`},Io={class:`config-view__header`},Lo={class:`config-view__title`},Ro={class:`config-view__actions`},zo=o(h({__name:`ServiceConfigView`,props:{service:{},projectId:{}},emits:[`remove-service`],setup(e,{emit:t}){let r=e,a=t,{t:o}=H(),c=M(),l=d(),u=V(),{isDebug:f}=Gt(),m=O(),h=_(),g=[`general`,`commands`,`shortcuts`,`env`,`health`,`log-parsers`,`log-sources`,`traefik`],v=n(()=>{let e=m.query.configTab;return g.includes(e)?e:`general`});function y(e){h.replace({query:{...m.query,configTab:e}})}let x=n(()=>l.getByRef({id:r.projectId,orgId:u.activeOrgId})?.activeEnvironmentId);async function S(e,t){await t()?f.value&&console.debug(`[autosave] ${e} saved`):console.error(`[autosave] ${e} failed:`,c.error??`Save failed`)}async function C(e){await S(`General`,()=>c.update(r.service.id,e))}async function w(e){await S(`Commands`,()=>c.update(r.service.id,e))}async function T(e){await S(`Health check`,()=>c.update(r.service.id,{healthCheck:e??null}))}async function E(e){await S(`Shortcuts`,()=>c.update(r.service.id,{shortcuts:e}))}async function D(e){await S(`Docker`,()=>c.update(r.service.id,{dockerConfig:e}))}async function k(e){await S(`Log parsers`,()=>c.update(r.service.id,e))}async function A(e){await S(`Log sources`,()=>c.update(r.service.id,e))}async function j(e){await S(`Traefik`,()=>c.update(r.service.id,e))}function ee(){a(`remove-service`,r.service.id)}return(t,n)=>(U(),i(`div`,Fo,[q(`div`,Io,[q(`h2`,Lo,b(s(o)(`serviceConfigView.title`)),1),q(`div`,Ro,[p(s(Y),{label:s(o)(`serviceConfigView.remove`),icon:`pi pi-trash`,severity:`danger`,size:`small`,outlined:``,onClick:ee},null,8,[`label`])])]),p(s(_e),{value:v.value,class:`config-view__tabs`,"onUpdate:value":y},{default:G(()=>[p(s(he),null,{default:G(()=>[p(s(Q),{value:`general`,"data-testid":`tab-config`},{default:G(()=>[n[0]||=q(`i`,{class:`pi pi-cog tab-icon`},null,-1),q(`span`,null,b(s(o)(`serviceConfigView.tabGeneral`)),1)]),_:1}),p(s(Q),{value:`commands`,"data-testid":`tab-commands`},{default:G(()=>[n[1]||=q(`i`,{class:`pi pi-code tab-icon`},null,-1),q(`span`,null,b(s(o)(`serviceConfigView.tabCommands`)),1)]),_:1}),p(s(Q),{value:`shortcuts`,"data-testid":`tab-shortcuts`},{default:G(()=>[n[2]||=q(`i`,{class:`pi pi-bolt tab-icon`},null,-1),q(`span`,null,b(s(o)(`serviceConfigView.tabShortcuts`)),1)]),_:1}),p(s(Q),{value:`env`,"data-testid":`tab-env`},{default:G(()=>[n[3]||=q(`i`,{class:`pi pi-database tab-icon`},null,-1),q(`span`,null,b(s(o)(`serviceConfigView.tabEnvironment`)),1)]),_:1}),p(s(Q),{value:`health`},{default:G(()=>[n[4]||=q(`i`,{class:`pi pi-heart tab-icon`},null,-1),q(`span`,null,b(s(o)(`serviceConfigView.tabHealthCheck`)),1)]),_:1}),p(s(Q),{value:`log-parsers`,"data-testid":`tab-log-parsers`},{default:G(()=>[n[5]||=q(`i`,{class:`pi pi-list tab-icon`},null,-1),q(`span`,null,b(s(o)(`serviceConfigView.tabLogParsers`)),1)]),_:1}),p(s(Q),{value:`log-sources`},{default:G(()=>[n[6]||=q(`i`,{class:`pi pi-inbox tab-icon`},null,-1),q(`span`,null,b(s(o)(`serviceConfigView.tabLogSources`)),1)]),_:1}),p(s(Q),{value:`traefik`},{default:G(()=>[...n[7]||=[q(`i`,{class:`pi pi-server tab-icon`},null,-1),q(`span`,null,`Traefik`,-1)]]),_:1})]),_:1}),p(s(ge),null,{default:G(()=>[p(s($),{value:`general`},{default:G(()=>[p(On,{service:e.service,onSave:C},null,8,[`service`])]),_:1}),p(s($),{value:`commands`},{default:G(()=>[p(ti,{service:e.service,onSave:w,onDockerSave:D},null,8,[`service`])]),_:1}),p(s($),{value:`shortcuts`,"data-testid":`tabpanel-shortcuts`},{default:G(()=>[p(Sa,{service:e.service,onSave:E},null,8,[`service`])]),_:1}),p(s($),{value:`env`},{default:G(()=>[p(Vi,{service:e.service,"project-id":e.projectId,"active-environment-id":x.value},null,8,[`service`,`project-id`,`active-environment-id`])]),_:1}),p(s($),{value:`health`},{default:G(()=>[p(ua,{service:e.service,onSave:T},null,8,[`service`])]),_:1}),p(s($),{value:`log-parsers`,"data-testid":`tabpanel-log-parsers`},{default:G(()=>[p(Fa,{service:e.service,onSave:k},null,8,[`service`])]),_:1}),p(s($),{value:`log-sources`},{default:G(()=>[p(jo,{service:e.service,onSave:A},null,8,[`service`])]),_:1}),p(s($),{value:`traefik`},{default:G(()=>[p(Po,{service:e.service,onSave:j},null,8,[`service`])]),_:1})]),_:1})]),_:1},8,[`value`])]))}}),[[`__scopeId`,`data-v-af965568`]]),Bo={key:0,class:`service-detail`},Vo={key:1,class:`service-detail__not-found`},Ho={key:2,class:`service-detail__not-found`},Uo=o(h({__name:`ServiceDetailPage`,setup(r){let o=O(),l=_(),u=oe(),f=te(),{t:p}=H(),m=M(),h=re(),v=d(),{setServiceContext:y}=t(),S=n(()=>o.params.id);F(S,e=>y(e),{immediate:!0}),e(()=>y(null));let C=n(()=>{let e=o.params.tab;return e===`terminal`||e===`metrics`||e===`config`||e===`git`||e===`wiki`?e:`terminal`}),w=c(null),T=c(!1),E=n(()=>m.getById(S.value)||(w.value?.id===S.value?w.value:null));F(S,async e=>{if(w.value=null,!(!e||m.getById(e))){T.value=!0;try{w.value=await m.fetchOne(e)}finally{T.value=!1}}},{immediate:!0});let D=n(()=>h.getByService(S.value)),k=n(()=>v.currentProject?.id??``);function A(e){let t=m.getById(e);f.require({message:p(`serviceDetail.deleteConfirmMessage`,{name:t?.name??e}),header:p(`serviceDetail.deleteConfirmHeader`),icon:`pi pi-exclamation-triangle`,rejectLabel:p(`actions.cancel`),acceptLabel:p(`actions.delete`),acceptProps:{severity:`danger`},accept:async()=>{await m.remove(e)&&(u.add({severity:`success`,summary:p(`serviceDetail.removed`),detail:p(`serviceDetail.deleted`),life:3e3}),l.push(`/`))}})}return(e,t)=>E.value?(U(),i(`div`,Bo,[C.value===`terminal`?(U(),x(Ot,{key:`terminal-`+S.value,service:E.value,processes:D.value},null,8,[`service`,`processes`])):C.value===`metrics`?(U(),x(zt,{key:`metrics-`+S.value,service:E.value,processes:D.value},null,8,[`service`,`processes`])):C.value===`config`?(U(),x(zo,{key:`config-`+S.value,service:E.value,"project-id":k.value,onRemoveService:A},null,8,[`service`,`project-id`])):C.value===`git`?(U(),x(g,{key:`git-`+S.value,"service-id":S.value},null,8,[`service-id`])):C.value===`wiki`?(U(),x(Me,{key:`wiki-`+S.value,scope:`service:${S.value}`},null,8,[`scope`])):a(``,!0)])):T.value?(U(),i(`div`,Vo)):(U(),i(`div`,Ho,[q(`p`,null,b(s(p)(`serviceDetail.notFound`)),1)]))}}),[[`__scopeId`,`data-v-e5220f62`]]);export{Uo as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{Ci as e,Di as t,Ei as n,Fn as r,Ga as i,Ia as a,Lt as ee,Mi as o,Pa as te,Pi as s,Qn as ne,Rt as c,Ta as l,Xt as u,Z as re,Zi as ie,Zn as ae,_i as d,bi as f,et as oe,mn as p,p as se,ra as ce,rr as le,sn as ue,sr as de,ta as m,va as fe,vi as h,wi as g,wn as _,yn as pe,zn as v}from"./index-CcIrffU_.js";import{n as y}from"./plus-CNGSRnxy.js";import{t as me}from"./fieldset-BtOjs_Hh.js";import{t as he}from"./toggleswitch-d41l5g27.js";import{t as ge}from"./autocomplete-DobAPPYJ.js";import{t as b}from"./divider-DhYR4BAO.js";var _e={class:`service-form-page`},ve={class:`page-header`},ye={key:0,class:`restart-banner`},be={key:1,class:`loading-container`},x={class:`form-section`},S={class:`form-group`},C={for:`svc-project`},w={class:`form-hint`},T={class:`form-group`},E={for:`svc-agent`},D={class:`form-hint`},O={class:`form-group`},k={for:`svc-name`},A={class:`form-hint`},j={class:`form-actions`},M={class:`form-section`},N={class:`form-row`},xe={class:`form-group flex-1`},Se={for:`svc-name-edit`},Ce={class:`form-group`,style:{width:`160px`}},we={for:`svc-runner`},Te={class:`form-group`},Ee={for:`svc-agent-edit`},De={class:`form-hint`},Oe={class:`form-row`},ke={class:`form-group flex-1`},Ae={for:`svc-cwd`},je={class:`form-group`,style:{"min-width":`200px`}},Me={for:`svc-ports`},P={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=r(s({__name:`ServiceFormPage`,props:{id:{}},setup(r){let s=r,I=ne(),Ke=ae(),L=le(),R=ee(),z=oe(),B=re(),V=ue(),qe=se(),{t:H}=de(),U=e(()=>!!s.id),W=e(()=>Ke.query.projectId),G=a(!1),K=a(!1),q=a(null),J=a(null),Y=a(!1),X=te({projectId:``,agentId:F,name:``,cwd:``,ports:[],runner:`native`,autoRestart:!1,healthCheck:{enabled:!1,path:``,interval:3e4,timeout:5e3,retries:3}}),Z=a([]),Je=[{label:`Native`,value:`native`},{label:`Docker`,value:`docker`}],Ye=e(()=>R.projects.map(e=>({label:e.name,value:e.id}))),Q=e(()=>[{label:H(`serviceForm.agentInherit`),value:F},...B.agents.map(e=>({label:`${e.config.name} ${e.status.connected?`(Online)`:`(Offline)`}`,value:e.config.id}))]);function Xe(){Z.value=[...Z.value,{key:``,value:``,isSecret:!1}]}function Ze(e){Z.value=Z.value.filter((t,n)=>n!==e)}function Qe(){let e={},t=!1;for(let n of Z.value){let r=n.key.trim();r&&(e[r]={value:{value:n.value,pre:``,post:``,isSecret:n.isSecret}},t=!0)}return t?e:void 0}async function $e(){if(s.id){G.value=!0;try{let e=await _.service.get.query({id:s.id});X.agentId=e.agentId??F,X.name=e.name,X.cwd=e.cwd??``,X.ports=(e.ports??[]).map(String),X.runner=e.runner,X.autoRestart=e.autoRestart,e.healthCheck&&(X.healthCheck.enabled=!0,X.healthCheck.path=e.healthCheck.path,X.healthCheck.interval=e.healthCheck.interval,X.healthCheck.timeout=e.healthCheck.timeout,X.healthCheck.retries=e.healthCheck.retries),e.variables&&typeof e.variables==`object`&&Object.keys(e.variables).length>0&&(Z.value=Object.entries(e.variables).map(([e,t])=>{let n=t;return{key:e,value:n.value.value??``,isSecret:n.value.isSecret??!1}}))}catch(e){L.add({severity:`error`,summary:H(`serviceForm.error`),detail:c(e)??H(`serviceForm.failedToLoad`),life:5e3}),I.back()}finally{G.value=!1}}}async function $(){if(!(!U.value||!s.id||K.value||G.value)){if(!X.name.trim()){L.add({severity:`warn`,summary:H(`serviceForm.validation`),detail:H(`serviceForm.nameRequired`),life:3e3});return}K.value=!0;try{let e={agentId:X.agentId===F?null:X.agentId||null,name:X.name.trim(),cwd:X.cwd.trim()||void 0,ports:X.ports.map(Number).filter(e=>e>0&&e<=65535),runner:X.runner,autoRestart:X.autoRestart,variables:Qe(),healthCheck:X.healthCheck.enabled?{path:X.healthCheck.path,interval:X.healthCheck.interval,timeout:X.healthCheck.timeout,retries:X.healthCheck.retries}:void 0};(await _.service.update.mutate({id:s.id,...e}))?.stoppedForAgentChange?(q.value=e.agentId,J.value=s.id,L.add({severity:`warn`,summary:H(`serviceForm.saved`),detail:H(`serviceForm.agentChangedServiceStopped`),life:4e3})):L.add({severity:`success`,summary:H(`serviceForm.saved`),life:1500})}catch(e){L.add({severity:`error`,summary:H(`serviceForm.error`),detail:c(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:c(e),life:5e3})}finally{Y.value=!1}}}async function tt(){if(!X.name.trim()){L.add({severity:`warn`,summary:H(`serviceForm.validation`),detail:H(`serviceForm.nameRequired`),life:3e3});return}if(!X.projectId){L.add({severity:`warn`,summary:H(`serviceForm.validation`),detail:H(`serviceForm.projectRequired`),life:3e3});return}K.value=!0;try{let e=R.getByRef({id:X.projectId,orgId:V.activeOrgId})??R.getById(X.projectId),t=await z.create({name:X.name.trim(),...X.agentId&&X.agentId!==F?{agentId:X.agentId}:{},projectId:X.projectId,orgId:e?.orgId??null});if(!t)throw Error(z.error??`Failed to create service`);await R.addService(e??{id:X.projectId},t.id),L.add({severity:`success`,summary:H(`serviceForm.serviceCreated`),detail:H(`serviceForm.configureAfterCreate`),life:3e3}),I.push({name:`service-detail`,params:{id:t.id,tab:`config`}})}catch(e){L.add({severity:`error`,summary:H(`serviceForm.error`),detail:c(e)??H(`serviceForm.failedToSave`),life:5e3})}finally{K.value=!1}}return ie(async()=>{await Promise.all([R.fetchAll(),B.fetchAll()]),W.value?X.projectId=W.value:!X.projectId&&V.activeProjectId&&(X.projectId=V.activeProjectId),U.value&&await $e()}),(e,r)=>(m(),t(`div`,_e,[g(`div`,ve,[o(i(v),{icon:`pi pi-arrow-left`,severity:`secondary`,text:``,rounded:``,onClick:r[0]||=e=>i(I).back()}),g(`h1`,null,l(U.value?i(H)(`serviceForm.editTitle`):i(H)(`serviceForm.createTitle`)),1)]),J.value?(m(),t(`div`,ye,[g(`span`,null,l(i(H)(`serviceForm.agentChangedServiceStopped`)),1),o(i(v),{label:i(H)(`serviceForm.restartNow`),icon:`pi pi-play`,severity:`warning`,size:`small`,loading:Y.value,onClick:et},null,8,[`label`,`loading`]),o(i(v),{icon:`pi pi-times`,severity:`secondary`,text:``,rounded:``,size:`small`,onClick:r[1]||=e=>{J.value=null,q.value=null}})])):n(``,!0),G.value?(m(),t(`div`,be,[o(i(pe))])):(m(),t(`form`,{key:2,class:`service-form`,onSubmit:h(tt,[`prevent`])},[U.value?(m(),t(f,{key:1},[g(`div`,M,[g(`div`,N,[g(`div`,xe,[g(`label`,Se,l(i(H)(`serviceForm.nameLabelShort`)),1),o(i(p),{id:`svc-name-edit`,modelValue:X.name,"onUpdate:modelValue":r[6]||=e=>X.name=e,placeholder:`my-service`,class:`w-full`,onBlur:$,onKeydown:d(h($,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])]),g(`div`,Ce,[g(`label`,we,l(i(H)(`serviceForm.runnerLabel`)),1),o(i(u),{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`])])]),g(`div`,Te,[g(`label`,Ee,l(i(H)(`serviceForm.agentLabel`)),1),o(i(u),{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`]),g(`small`,De,l(i(H)(`serviceForm.agentHintEdit`)),1)]),g(`div`,Oe,[g(`div`,ke,[g(`label`,Ae,l(i(H)(`serviceForm.cwdLabel`)),1),o(i(p),{id:`svc-cwd`,modelValue:X.cwd,"onUpdate:modelValue":r[9]||=e=>X.cwd=e,placeholder:`.`,class:`w-full`,onBlur:$,onKeydown:d(h($,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])]),g(`div`,je,[g(`label`,Me,l(i(H)(`serviceForm.portsLabel`)),1),o(i(ge),{inputId:`svc-ports`,modelValue:X.ports,"onUpdate:modelValue":r[10]||=e=>X.ports=e,multiple:``,typeahead:!1,placeholder:i(H)(`serviceForm.portsPlaceholder`),class:`w-full`,onChange:$},null,8,[`modelValue`,`placeholder`])])]),g(`div`,P,[o(i(he),{modelValue:X.autoRestart,"onUpdate:modelValue":r[11]||=e=>X.autoRestart=e,inputId:`svc-autorestart`,onChange:$},null,8,[`modelValue`]),g(`label`,Ne,l(i(H)(`serviceForm.autoRestart`)),1)])]),o(i(b)),g(`div`,Pe,[g(`div`,Fe,[g(`h3`,null,l(i(H)(`serviceForm.envVars`)),1),o(i(v),{label:i(H)(`serviceForm.addEnvVar`),icon:`pi pi-plus`,severity:`secondary`,size:`small`,onClick:Xe},null,8,[`label`])]),Z.value.length===0?(m(),t(`div`,Ie,[g(`small`,null,l(i(H)(`serviceForm.noEnvVars`)),1)])):n(``,!0),(m(!0),t(f,null,ce(Z.value,(e,n)=>(m(),t(`div`,{key:n,class:`env-row`},[o(i(p),{modelValue:e.key,"onUpdate:modelValue":t=>e.key=t,placeholder:`KEY`,class:`env-key`,onBlur:$,onKeydown:d(h($,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onUpdate:modelValue`,`onKeydown`]),r[17]||=g(`span`,{class:`env-eq`},`=`,-1),o(i(p),{modelValue:e.value,"onUpdate:modelValue":t=>e.value=t,placeholder:`value`,class:`env-value`,onBlur:$,onKeydown:d(h($,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onUpdate:modelValue`,`onKeydown`]),o(i(v),{icon:`pi pi-trash`,severity:`danger`,text:``,rounded:``,size:`small`,onClick:()=>{Ze(n),$()}},null,8,[`onClick`])]))),128))]),o(i(b)),o(i(me),{legend:i(H)(`serviceForm.healthCheck`),toggleable:!0,collapsed:!X.healthCheck.enabled,onToggle:r[16]||=e=>{X.healthCheck.enabled=!e.value,$()}},{default:fe(()=>[g(`div`,Le,[g(`label`,Re,l(i(H)(`serviceForm.healthCheckPath`)),1),o(i(p),{id:`hc-path`,modelValue:X.healthCheck.path,"onUpdate:modelValue":r[12]||=e=>X.healthCheck.path=e,placeholder:`/health`,class:`w-full`,onBlur:$,onKeydown:d(h($,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])]),g(`div`,ze,[g(`div`,Be,[g(`label`,Ve,l(i(H)(`serviceForm.interval`)),1),o(i(y),{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:d(h($,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])]),g(`div`,He,[g(`label`,Ue,l(i(H)(`serviceForm.timeout`)),1),o(i(y),{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:d(h($,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])]),g(`div`,We,[g(`label`,Ge,l(i(H)(`serviceForm.retries`)),1),o(i(y),{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:d(h($,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])])])]),_:1},8,[`legend`,`collapsed`]),o(i(b))],64)):(m(),t(f,{key:0},[g(`div`,x,[g(`div`,S,[g(`label`,C,l(i(H)(`serviceForm.projectLabel`)),1),o(i(u),{id:`svc-project`,modelValue:X.projectId,"onUpdate:modelValue":r[2]||=e=>X.projectId=e,options:Ye.value,optionLabel:`label`,optionValue:`value`,placeholder:i(H)(`serviceForm.projectPlaceholder`),class:`w-full`},null,8,[`modelValue`,`options`,`placeholder`]),g(`small`,w,l(i(H)(`serviceForm.projectHint`)),1)]),g(`div`,T,[g(`label`,E,l(i(H)(`serviceForm.agentLabel`)),1),o(i(u),{id:`svc-agent`,modelValue:X.agentId,"onUpdate:modelValue":r[3]||=e=>X.agentId=e,options:Q.value,optionLabel:`label`,optionValue:`value`,placeholder:i(H)(`serviceForm.agentInherit`),"show-clear":``,class:`w-full`},null,8,[`modelValue`,`options`,`placeholder`]),g(`small`,D,l(i(H)(`serviceForm.agentHint`)),1)]),g(`div`,O,[g(`label`,k,l(i(H)(`serviceForm.nameLabel`)),1),o(i(p),{id:`svc-name`,modelValue:X.name,"onUpdate:modelValue":r[4]||=e=>X.name=e,placeholder:`my-service`,class:`w-full`},null,8,[`modelValue`]),g(`small`,A,l(i(H)(`serviceForm.nameConfigHint`)),1)])]),o(i(b)),g(`div`,j,[o(i(v),{label:i(H)(`serviceForm.cancel`),severity:`secondary`,text:``,onClick:r[5]||=e=>i(I).back()},null,8,[`label`]),o(i(v),{label:i(H)(`serviceForm.create`),icon:`pi pi-check`,loading:K.value,type:`submit`},null,8,[`label`,`loading`])])],64))],32))]))}}),[[`__scopeId`,`data-v-3efdfa72`]]);export{I as default};
|
|
@@ -1 +1 @@
|
|
|
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-bbf1ad0f]{max-width:1200px;margin:0 auto;padding:1.5rem}.page-header[data-v-bbf1ad0f]{justify-content:space-between;align-items:center;margin-bottom:1.5rem;display:flex}.page-header h1[data-v-bbf1ad0f]{margin:0;font-size:1.75rem;font-weight:700}.loading-container[data-v-bbf1ad0f],.error-container[data-v-bbf1ad0f],.empty-container[data-v-bbf1ad0f]{color:var(--p-text-muted-color);flex-direction:column;align-items:center;gap:.75rem;padding:3rem 0;display:flex}.agent-name[data-v-bbf1ad0f]{align-items:center;gap:.5rem;font-weight:500;display:flex}.agent-url[data-v-bbf1ad0f]{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-bbf1ad0f]{flex-wrap:wrap;gap:.3rem;display:flex}.action-grid[data-v-bbf1ad0f]{grid-template-columns:repeat(2,auto);gap:0;width:fit-content;display:grid}@media (max-width:768px){[data-v-bbf1ad0f] .hide-on-mobile{display:none!important}[data-v-bbf1ad0f] .p-datatable-column-header-content{white-space:nowrap}.agent-url[data-v-bbf1ad0f]{word-break:break-all;white-space:normal}}.text-muted[data-v-bbf1ad0f]{color:var(--p-text-muted-color)}.form-group[data-v-bbf1ad0f]{margin-bottom:1rem}.form-group label[data-v-bbf1ad0f]{margin-bottom:.4rem;font-size:.875rem;font-weight:500;display:block}.form-hint[data-v-bbf1ad0f]{color:var(--p-text-muted-color);font-size:.78rem}.test-connection[data-v-bbf1ad0f]{align-items:center;gap:.75rem;display:flex}.w-full[data-v-bbf1ad0f]{width:100%}.passthrough-description[data-v-bbf1ad0f]{color:var(--p-text-muted-color);margin:0 0 1rem;font-size:.85rem;line-height:1.4}.passthrough-list[data-v-bbf1ad0f]{flex-direction:column;gap:.25rem;margin-bottom:.75rem;display:flex}.passthrough-item[data-v-bbf1ad0f]{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-bbf1ad0f]{align-items:center;gap:.4rem;min-width:0;display:flex;overflow:hidden}.passthrough-item code[data-v-bbf1ad0f]{flex-shrink:0;font-family:Fira Code,Cascadia Code,monospace;font-size:.85rem}.passthrough-value[data-v-bbf1ad0f]{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-bbf1ad0f]{color:var(--p-orange-500);font-size:.78rem;font-style:italic}.passthrough-unsaved[data-v-bbf1ad0f]{color:var(--p-text-muted-color);font-size:.78rem;font-style:italic}.passthrough-empty[data-v-bbf1ad0f]{margin-bottom:.75rem;font-size:.85rem}.passthrough-add[data-v-bbf1ad0f]{align-items:center;gap:.5rem;display:flex}.passthrough-add-input[data-v-bbf1ad0f]{flex:1}.passthrough-error[data-v-bbf1ad0f]{color:var(--p-red-500);margin-top:.25rem;font-size:.78rem;display:block}.api-keys-page[data-v-90995e31]{max-width:860px;padding:1.5rem}.api-keys-page__header[data-v-90995e31]{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-90995e31]{margin:0;font-size:1.5rem;font-weight:600}.api-keys-page__subtitle[data-v-90995e31]{color:var(--p-text-muted-color);flex:1;margin:0;font-size:.875rem}.api-keys-page__empty[data-v-90995e31]{color:var(--p-text-muted-color);padding:2rem 0;font-size:.9rem}.api-keys-card[data-v-90995e31]{max-width:680px}.api-keys-list[data-v-90995e31]{flex-direction:column;gap:.5rem;display:flex}.api-key-card[data-v-90995e31]{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-90995e31]{min-width:0}.api-key-card__name[data-v-90995e31]{align-items:center;gap:.5rem;margin-bottom:.2rem;padding-right:5rem;font-weight:500;display:flex}.api-key-card__meta[data-v-90995e31]{color:var(--p-text-muted-color);margin-bottom:.4rem;font-size:.8rem}.api-key-card__url-row[data-v-90995e31]{align-items:center;gap:.4rem;display:flex}.api-key-card__url[data-v-90995e31]{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-90995e31]{gap:.3rem;display:flex;position:absolute;top:.5rem;right:.5rem}.badge[data-v-90995e31]{text-transform:uppercase;border-radius:4px;padding:.1rem .4rem;font-size:.7rem;font-weight:600}.badge--info[data-v-90995e31]{background:var(--p-blue-100);color:var(--p-blue-700)}.api-key-form[data-v-90995e31]{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-90995e31]{margin:0 0 1.25rem;font-size:1.1rem}.form-field[data-v-90995e31]{margin-bottom:1.25rem}.form-field>label[data-v-90995e31]:first-child{margin-bottom:.5rem;font-size:.875rem;font-weight:600;display:block}.form-input[data-v-90995e31]{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-90995e31]:focus{border-color:var(--p-primary-color);outline:none}.form-select[data-v-90995e31]{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-90995e31]{width:auto;padding:.25rem .5rem;font-size:.8rem}.form-hint[data-v-90995e31]{color:var(--p-text-muted-color);margin-top:.4rem;font-size:.75rem}.radio-group[data-v-90995e31]{flex-direction:column;gap:.4rem;display:flex}.radio-label[data-v-90995e31]{cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:.5rem;font-size:.875rem;display:flex}.svc-list-container[data-v-90995e31]{border:1px solid var(--runeya-border);border-radius:8px;margin-bottom:.5rem;overflow:hidden}.svc-list-search[data-v-90995e31]{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-90995e31]{color:var(--p-text-muted-color);flex-shrink:0;font-size:.75rem}.svc-list-search__input[data-v-90995e31]{color:var(--p-text-color);background:0 0;border:none;outline:none;flex:1;font-size:.85rem}.svc-list-search__input[data-v-90995e31]::placeholder{color:var(--p-text-muted-color)}.svc-list-search__clear[data-v-90995e31]{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-90995e31]:hover{color:var(--p-text-color)}.svc-list-scroll[data-v-90995e31]{max-height:360px;overflow-y:auto}.svc-list-empty[data-v-90995e31]{margin:0;padding:.75rem}.svc-perm-row[data-v-90995e31]{border-bottom:1px solid var(--runeya-border);overflow:hidden}.svc-perm-row[data-v-90995e31]:last-child{border-bottom:none}.svc-perm-row__header[data-v-90995e31]{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-90995e31]:hover{background:var(--runeya-sidebar-hover)}.svc-chevron[data-v-90995e31]{color:var(--p-text-muted-color);font-size:.7rem;transition:transform .15s}.svc-perm-summary[data-v-90995e31]{color:var(--p-text-muted-color);margin-left:.3rem;font-size:.75rem;font-weight:400}.svc-perm-row__name[data-v-90995e31]{align-items:center;gap:.4rem;font-size:.875rem;font-weight:600;display:flex}.svc-perm-row__actions[data-v-90995e31]{border-bottom:1px solid var(--runeya-border);flex-wrap:wrap;gap:.35rem;padding:.5rem .75rem;display:flex}.action-chip[data-v-90995e31]{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-90995e31]{display:none}.action-chip--on[data-v-90995e31]{background:var(--p-primary-color);color:var(--p-primary-contrast-color,#fff);border-color:var(--p-primary-color)}.action-chip--sub[data-v-90995e31]{opacity:.85;margin-left:.25rem;font-size:.72rem}.action-chip--sub.action-chip--on[data-v-90995e31]{background:var(--p-primary-400,var(--p-primary-color))}.svc-perm-row__envs[data-v-90995e31]{flex-direction:column;gap:.35rem;padding:.5rem .75rem;display:flex}.env-perm-row[data-v-90995e31]{flex-wrap:wrap;align-items:center;gap:.35rem;display:flex}.env-perm-row__name[data-v-90995e31]{color:var(--p-text-muted-color);align-items:center;gap:.3rem;min-width:8rem;font-size:.8rem;display:flex}.env-add-row[data-v-90995e31]{margin-top:.25rem}.svc-add-row[data-v-90995e31]{flex-wrap:wrap;align-items:center;gap:.5rem;margin-top:.5rem;display:flex}.import-modal__body[data-v-90995e31]{flex-direction:column;gap:1rem;padding:.25rem 0;display:flex}.import-modal__desc[data-v-90995e31]{color:var(--p-text-muted-color);margin:0;font-size:.875rem}.import-section[data-v-90995e31]{flex-direction:column;gap:.4rem;display:flex}.import-section__label[data-v-90995e31]{color:var(--p-text-muted-color);text-transform:uppercase;letter-spacing:.04em;font-size:.8rem;font-weight:600}.form-actions[data-v-90995e31]{justify-content:space-between;align-items:center;gap:.75rem;margin-top:1.5rem;display:flex}.form-actions__right[data-v-90995e31]{gap:.75rem;display:flex}.btn--renew[data-v-90995e31]{color:var(--p-text-muted-color);font-size:.8rem}.btn--renew[data-v-90995e31]:hover:not(:disabled){color:var(--p-text-color)}.api-key-card__skill[data-v-90995e31]{margin-top:.6rem}.skill-toggle[data-v-90995e31]{color:var(--p-text-muted-color);gap:.35rem}.skill-toggle[data-v-90995e31]:hover{color:var(--p-text-color)}.skill-panel[data-v-90995e31]{border:1px solid var(--runeya-border);border-radius:6px;margin-top:.5rem;overflow:hidden}.skill-panel__tools[data-v-90995e31]{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-90995e31]{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-90995e31]:hover{background:var(--runeya-sidebar-hover);color:var(--p-text-color)}.skill-tool-btn--active[data-v-90995e31]{background:var(--p-primary-color);color:var(--p-primary-contrast-color,#fff);border-color:var(--p-primary-color)}.skill-panel__header[data-v-90995e31]{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-90995e31]{gap:.35rem;display:flex}.skill-panel__hint[data-v-90995e31]{color:var(--p-text-muted-color);font-size:.75rem}.skill-panel__code[data-v-90995e31]{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-90995e31]{flex-direction:column;gap:.5rem;padding:.25rem 0;display:flex}.renew-modal__title[data-v-90995e31]{align-items:center;gap:.5rem;font-weight:600;display:flex}.renew-modal__title-icon[data-v-90995e31]{color:var(--p-orange-500,#f97316)}.renew-modal__body p[data-v-90995e31]{margin:0;font-size:.9rem;line-height:1.5}.btn[data-v-90995e31]{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-90995e31]:disabled{opacity:.5;cursor:not-allowed}.btn--primary[data-v-90995e31]{background:var(--p-primary-color);color:var(--p-primary-contrast-color,#fff)}.btn--primary[data-v-90995e31]:hover:not(:disabled){filter:brightness(1.1)}.btn--ghost[data-v-90995e31]{color:var(--p-text-color);border:1px solid var(--runeya-border);background:0 0}.btn--ghost[data-v-90995e31]:hover:not(:disabled){background:var(--runeya-sidebar-hover)}.btn--danger[data-v-90995e31]{color:var(--p-red-500,#ef4444);border:1px solid var(--runeya-border);background:0 0}.btn--danger[data-v-90995e31]:hover:not(:disabled){background:var(--p-red-50,#fef2f2)}.btn--sm[data-v-90995e31]{padding:.3rem .6rem;font-size:.8rem}.btn--xs[data-v-90995e31]{padding:.2rem .4rem;font-size:.75rem}.settings-card[data-v-0b45301c]{max-width:680px}.cloud-banner[data-v-0b45301c]{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-0b45301c]: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-0b45301c]{color:var(--p-primary-color);flex-shrink:0;font-size:1.75rem}.cloud-banner__text[data-v-0b45301c]{flex-direction:column;flex:1;gap:.15rem;min-width:0;display:flex}.cloud-banner__title[data-v-0b45301c]{font-size:1rem}.cloud-banner__desc[data-v-0b45301c]{color:var(--p-text-muted-color);font-size:.85rem}.cloud-banner__action[data-v-0b45301c]{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-0b45301c]{border-bottom:1px solid var(--p-content-border-color);align-items:flex-start;gap:1rem;padding:.75rem 0;display:flex}.setting-row[data-v-0b45301c]:last-child{border-bottom:none}.setting-label[data-v-0b45301c]{width:140px;color:var(--p-text-muted-color);flex-shrink:0;padding-top:.25rem;font-size:.9rem;font-weight:600}.setting-value[data-v-0b45301c]{flex:1;align-items:center;gap:.5rem;display:flex}.path-value[data-v-0b45301c]{word-break:break-all;min-width:0;color:var(--p-text-color);flex:1;font-size:.85rem}.setting-input[data-v-0b45301c]{width:100%;max-width:400px}.setting-actions[data-v-0b45301c]{padding-top:1rem}.launcher-report[data-v-0b45301c]{background:var(--p-content-background);border:1px solid var(--p-content-border-color);white-space:pre-wrap;word-break:break-all;border-radius:6px;max-height:260px;margin:0 0 .5rem;padding:.5rem .75rem;font-size:.78rem;overflow:auto}.settings-card[data-v-6c657270]{max-width:680px}.notification-groups[data-v-6c657270]{flex-direction:column;gap:1rem;display:flex}.notification-group[data-v-6c657270]{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-6c657270]{justify-content:space-between;align-items:flex-start;gap:.75rem;margin-bottom:.35rem;display:flex}.notification-group__collapse-button[data-v-6c657270]{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-6c657270]{align-items:center;gap:.45rem;display:flex}.notification-group__icon[data-v-6c657270]{color:var(--p-text-muted-color);font-size:.9rem}.notification-group__title[data-v-6c657270]{margin:0;font-size:.92rem;font-weight:700}.notification-group__chevron[data-v-6c657270]{color:var(--p-text-muted-color);margin-left:auto;font-size:.8rem}.notification-group__desc[data-v-6c657270]{color:var(--p-text-muted-color);margin:.2rem 0 0;font-size:.78rem}.notification-group__actions[data-v-6c657270]{flex-shrink:0}.notification-item[data-v-6c657270]{border-bottom:1px solid var(--p-content-border-color)}.notification-item[data-v-6c657270]:last-child,.notification-item .setting-row[data-v-6c657270]{border-bottom:none}.setting-row[data-v-6c657270]{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-6c657270]{align-items:center}.setting-label[data-v-6c657270]{color:var(--p-text-muted-color);font-size:.9rem;font-weight:600}.setting-label-group[data-v-6c657270]{flex:1;min-width:0}.setting-hint[data-v-6c657270]{color:var(--p-text-muted-color);margin-top:.2rem;font-size:.78rem;display:block}.notification-item__right[data-v-6c657270]{flex-shrink:0;align-items:center;gap:.5rem;display:flex}.notification-item__services-toggle[data-v-6c657270]{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-6c657270]:hover{background:var(--p-content-hover-background);color:var(--p-text-color)}.notification-item__services[data-v-6c657270]{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-6c657270]{color:var(--p-text-muted-color);margin:0;font-size:.8rem}.notification-item__service-row[data-v-6c657270]{justify-content:space-between;align-items:center;padding:.25rem 0;display:flex}.notification-item__service-name[data-v-6c657270]{color:var(--p-text-color);font-size:.85rem}.security-cards[data-v-12415284]{flex-direction:column;gap:1rem;display:flex}.settings-card[data-v-12415284]{max-width:680px}.card-title[data-v-12415284]{align-items:center;gap:.5rem;display:flex}.card-desc[data-v-12415284]{color:var(--p-text-muted-color);margin:0 0 1rem;font-size:.85rem}.setting-row[data-v-12415284]{align-items:flex-start;gap:1rem;padding:.75rem 0;display:flex}.setting-label[data-v-12415284]{width:140px;color:var(--p-text-muted-color);flex-shrink:0;padding-top:.25rem;font-size:.9rem;font-weight:600}.org-block[data-v-12415284]{flex-direction:column;display:flex}.org-adopt[data-v-12415284]{flex-direction:column;gap:.5rem;margin-bottom:1rem;display:flex}.org-adopt__row[data-v-12415284]{align-items:center;gap:.5rem;max-width:560px;display:flex}.org-unreadable[data-v-12415284]{margin:0 0 .75rem;font-size:.8rem}.org-label[data-v-12415284]{flex-direction:column;gap:.15rem;display:flex}.org-id[data-v-12415284]{word-break:break-all;font-family:monospace;font-size:.8rem}.org-source[data-v-12415284]{font-size:.75rem;font-weight:400}.org-source--own[data-v-12415284]{color:var(--p-primary-color)}.org-source--locked[data-v-12415284]{color:var(--p-red-500)}.encryption-key-field[data-v-12415284]{flex:1;align-items:center;gap:.25rem;max-width:460px;display:flex}.encryption-key-input[data-v-12415284]{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}.parsers-scope[data-v-2f17c78c]{color:var(--p-text-muted-color);align-items:center;gap:.5rem;margin:0 0 1rem;font-size:.85rem;display:flex}[data-v-2f17c78c] .p-dialog-content{flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden}.settings-card[data-v-2f17c78c]{max-width:680px}.card-desc[data-v-2f17c78c]{color:var(--p-text-muted-color);margin:0 0 1rem;font-size:.85rem}.parsers-loading[data-v-2f17c78c]{color:var(--p-text-muted-color);align-items:center;gap:.5rem;padding:1rem;font-size:.875rem;display:flex}.parsers-list[data-v-2f17c78c]{flex-direction:column;gap:.375rem;display:flex}.parsers-row[data-v-2f17c78c]{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-2f17c78c]{flex-shrink:0;font-size:.875rem;font-weight:600}.parsers-desc-inline[data-v-2f17c78c]{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-2f17c78c]{color:var(--p-green-500);justify-content:center;align-items:center;width:2rem;height:2rem;display:flex}.parsers-icon--off[data-v-2f17c78c]{color:var(--p-red-500);justify-content:center;align-items:center;width:2rem;height:2rem;display:flex}.parsers-actions[data-v-2f17c78c]{align-items:center;gap:.25rem;margin-left:auto;display:flex}.parsers-empty[data-v-2f17c78c]{text-align:center;color:var(--p-text-muted-color);padding:1.5rem;font-size:.875rem}.parser-dialog__layout[data-v-2f17c78c]{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-2f17c78c]{grid-template-columns:1fr;height:auto;overflow-y:auto}.dialog-form[data-v-2f17c78c]{height:auto;overflow:visible}.dialog-form__field--code[data-v-2f17c78c]{min-height:250px}.parser-sim[data-v-2f17c78c]{min-height:300px}.parser-sim__body[data-v-2f17c78c]{min-height:0}.parser-sim__col--output[data-v-2f17c78c]{min-height:150px}}.dialog-form[data-v-2f17c78c]{flex-direction:column;gap:1rem;height:100%;display:flex;overflow:auto}.dialog-form__field--code[data-v-2f17c78c]{flex:1;min-height:0}.dialog-form__field[data-v-2f17c78c]{flex-direction:column;gap:.375rem;display:flex}.dialog-form__label[data-v-2f17c78c]{color:var(--p-text-muted-color);align-items:center;gap:.5rem;font-size:.8125rem;font-weight:600;display:flex}.dialog-form__input[data-v-2f17c78c]{width:100%}.dialog-form__hint[data-v-2f17c78c]{color:var(--p-text-muted-color);font-size:.78rem}.dialog-form__hint code[data-v-2f17c78c]{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-2f17c78c]{align-items:center;gap:.5rem;display:flex}.dialog-form__switch-label[data-v-2f17c78c]{color:var(--p-text-muted-color);font-size:.85rem}.dialog-form__templates[data-v-2f17c78c]{flex-direction:column;gap:.5rem;display:flex}.dialog-form__templates-label[data-v-2f17c78c]{color:var(--p-text-muted-color);text-transform:uppercase;letter-spacing:.04em;font-size:.75rem;font-weight:600}.dialog-form__templates-select[data-v-2f17c78c]{width:100%}.dialog-form__ai-btn[data-v-2f17c78c]{margin-left:auto}.tpl-option[data-v-2f17c78c]{align-items:center;gap:.75rem;display:flex}.tpl-option__icon[data-v-2f17c78c]{color:var(--p-primary-color);flex-shrink:0;font-size:.9rem}.tpl-option__body[data-v-2f17c78c]{flex-direction:column;gap:.1rem;display:flex}.tpl-option__name[data-v-2f17c78c]{color:var(--p-text-color);font-size:.8125rem;font-weight:600}.tpl-option__desc[data-v-2f17c78c]{color:var(--p-text-muted-color);font-size:.73rem}.parser-sim[data-v-2f17c78c]{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-2f17c78c]{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-2f17c78c]{align-items:center;gap:.4rem;font-weight:600;display:flex}.parser-sim__status[data-v-2f17c78c]{color:var(--p-text-muted-color);align-items:center;gap:.3rem;font-size:.75rem;display:flex}.parser-sim__body[data-v-2f17c78c]{flex-direction:column;flex:1;gap:0;min-height:0;display:flex}.parser-sim__col[data-v-2f17c78c]{flex-direction:column;gap:.25rem;padding:.6rem .75rem;display:flex}.parser-sim__col[data-v-2f17c78c]:first-child{border-bottom:1px solid var(--p-content-border-color)}.parser-sim__col-label[data-v-2f17c78c]{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-2f17c78c]{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-2f17c78c]:focus{border-color:var(--p-primary-color)}.parser-sim__error[data-v-2f17c78c]{color:var(--p-red-500,#ef4444);align-items:flex-start;gap:.4rem;padding:.5rem;font-size:.8rem;display:flex}.parser-sim__empty[data-v-2f17c78c]{color:var(--p-text-muted-color);padding:.5rem;font-size:.8rem;font-style:italic}.parser-sim__col--output[data-v-2f17c78c]{flex:1;min-height:0;overflow:hidden}.parser-sim__viewer[data-v-2f17c78c]{flex:1;height:100%;min-height:0}.parser-ai-prompt[data-v-2f17c78c]{flex-direction:column;gap:.75rem;display:flex}.parser-ai-prompt__desc[data-v-2f17c78c]{color:var(--p-text-muted-color);margin:0;font-size:.9rem}.parser-ai-prompt__input[data-v-2f17c78c]{resize:vertical;width:100%}.companion-settings[data-v-0767010c]{border-bottom:1px solid var(--p-surface-200);margin-bottom:1.25rem;padding-bottom:1.25rem}.companion-settings__title[data-v-0767010c]{align-items:center;gap:.4rem;margin:0 0 .25rem;font-size:.95rem;display:flex}.companion-settings__lead[data-v-0767010c]{color:var(--p-text-muted-color);margin:0 0 .75rem;font-size:.8rem}.companion-settings__row[data-v-0767010c]{align-items:center;gap:.75rem;padding:.4rem 0;display:flex}.companion-settings__row--stack[data-v-0767010c]{flex-wrap:wrap;justify-content:space-between}.companion-settings__label[data-v-0767010c]{font-size:.85rem}.companion-settings__hint[data-v-0767010c]{color:var(--p-text-muted-color);font-size:.75rem}.companion-settings__actions[data-v-0767010c]{gap:.25rem;display:flex}.companion-settings__editor[data-v-0767010c]{margin-top:.5rem}.companion-settings__textarea[data-v-0767010c]{width:100%;font-family:var(--font-mono,ui-monospace, monospace);font-size:.75rem}.providers-scope[data-v-0767010c]{color:var(--p-text-muted-color);align-items:center;gap:.4rem;margin:0 0 .9rem;font-size:.8rem;display:flex}.settings-card[data-v-0767010c]{max-width:680px}.providers-loading[data-v-0767010c],.providers-empty[data-v-0767010c]{color:var(--p-text-muted-color);align-items:center;gap:.5rem;padding:1rem;font-size:.875rem;display:flex}.ai-providers-list[data-v-0767010c]{flex-direction:column;gap:.5rem;display:flex}.ai-provider-row[data-v-0767010c]{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-0767010c]{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-0767010c]{flex-wrap:wrap;align-items:center;gap:.75rem;min-width:0;display:flex}.ai-provider-name[data-v-0767010c]{font-size:.875rem;font-weight:600}.ai-provider-type[data-v-0767010c]{color:var(--p-text-muted-color);font-size:.8125rem}.ai-provider-model[data-v-0767010c]{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-0767010c]{background:var(--p-content-hover-background);letter-spacing:.05em;border-radius:4px;padding:.15rem .4rem;font-size:.75rem}.ai-provider-actions[data-v-0767010c]{flex-shrink:0;align-items:center;gap:.25rem;display:flex}.ai-provider-badge[data-v-0767010c]{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-0767010c]{flex-direction:column;gap:1rem;display:flex}.dialog-form__field[data-v-0767010c]{flex-direction:column;gap:.375rem;display:flex}.dialog-form__label[data-v-0767010c]{color:var(--p-text-muted-color);align-items:center;gap:.5rem;font-size:.8125rem;font-weight:600;display:flex}.dialog-form__input[data-v-0767010c]{width:100%}.ai-provider-info-block[data-v-0767010c]{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-0767010c]{color:var(--p-text-color);margin:0;font-size:.875rem;line-height:1.5}.ai-provider-info-block__link[data-v-0767010c]{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-0767010c]:hover{text-decoration:underline}.ai-provider-info-block__models[data-v-0767010c]{flex-wrap:wrap;align-items:center;gap:.4rem;display:flex}.ai-provider-info-block__models-label[data-v-0767010c]{color:var(--p-text-muted-color);font-size:.75rem;font-weight:500}.ai-provider-info-block__model-tag[data-v-0767010c]{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}.state[data-v-dcb0ce3b]{color:var(--p-text-muted-color);align-items:center;gap:.75rem;font-size:.88rem;display:flex}.settings-card[data-v-5f478adc]{max-width:680px}.setting-row[data-v-5f478adc]{border-bottom:1px solid var(--p-content-border-color);align-items:flex-start;gap:1rem;padding:.75rem 0;display:flex}.setting-row[data-v-5f478adc]:last-child{border-bottom:none}.setting-label[data-v-5f478adc]{width:140px;color:var(--p-text-muted-color);flex-shrink:0;padding-top:.25rem;font-size:.9rem;font-weight:600}.setting-value[data-v-5f478adc]{flex:1;align-items:center;gap:.5rem;display:flex}.card-title-row[data-v-5f478adc]{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;display:flex}.diagnostics[data-v-d1059365]{flex-direction:column;gap:2rem;display:flex}.block__header[data-v-d1059365]{justify-content:space-between;align-items:flex-start;gap:1rem;margin-bottom:.85rem;display:flex}.block__title[data-v-d1059365]{margin:0;font-size:1rem;font-weight:600}.block__desc[data-v-d1059365]{color:var(--p-text-muted-color);margin:.2rem 0 0;font-size:.85rem}.empty[data-v-d1059365]{text-align:center;color:var(--p-text-muted-color);margin:0;padding:1.2rem;font-size:.875rem}.instances[data-v-d1059365]{border:1px solid var(--p-content-border-color);border-radius:8px;margin:0;padding:0;list-style:none;overflow:hidden}.instance[data-v-d1059365]{border-bottom:1px solid var(--p-content-border-color);grid-template-columns:1fr auto;grid-template-areas:"main action""meta action";align-items:center;gap:.15rem 1rem;padding:.7rem .9rem;display:grid}.instance[data-v-d1059365]:last-child{border-bottom:0}.instance__main[data-v-d1059365]{grid-area:main;align-items:center;gap:.5rem;font-size:.9rem;font-weight:600;display:flex}.instance__port[data-v-d1059365]{align-items:center;gap:.4rem;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;display:flex}.instance__meta[data-v-d1059365]{color:var(--p-text-muted-color);flex-wrap:wrap;grid-area:meta;align-items:center;gap:.4rem;font-size:.78rem;display:flex}.instance__cwd[data-v-d1059365]{text-overflow:ellipsis;white-space:nowrap;max-width:24rem;overflow:hidden}.instance[data-v-d1059365] .p-button{grid-area:action}.instance__actions[data-v-d1059365]{grid-area:action;align-items:center;gap:.25rem;display:flex}.instance__actions[data-v-d1059365] .p-button{grid-area:auto}.tag[data-v-d1059365]{border-radius:999px;padding:.1rem .45rem;font-size:.7rem;font-weight:600}.tag--current[data-v-d1059365]{background:color-mix(in srgb, var(--p-primary-color) 16%, transparent);color:var(--p-primary-color)}.toolbar[data-v-d1059365]{flex-wrap:wrap;align-items:center;gap:.6rem;margin-bottom:.6rem;display:flex}.toolbar__source[data-v-d1059365]{min-width:9rem}.toolbar__search[data-v-d1059365]{flex:10rem;min-width:10rem}.toolbar__toggle[data-v-d1059365]{align-items:center;gap:.45rem;font-size:.85rem;display:flex}.toolbar__spacer[data-v-d1059365]{flex:auto}.toolbar__actions[data-v-d1059365]{flex:none;align-items:center;gap:.25rem;display:flex}.log[data-v-d1059365]{background:var(--p-content-background);border:1px solid var(--p-content-border-color);border-radius:8px;height:26rem;padding:.5rem 0;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.78rem;line-height:1.55;overflow:auto}.log-line[data-v-d1059365]{white-space:pre-wrap;word-break:break-word;gap:.6rem;padding:.05rem .8rem;display:flex}.log-line--warn[data-v-d1059365]{background:color-mix(in srgb, var(--p-orange-500,#f59e0b) 9%, transparent)}.log-line--error[data-v-d1059365]{background:color-mix(in srgb, var(--p-red-500,#ef4444) 11%, transparent)}.log-line__time[data-v-d1059365]{color:var(--p-text-muted-color);opacity:.75;flex:none}.log-line__source[data-v-d1059365]{text-transform:uppercase;letter-spacing:.03em;flex:0 0 3.4rem;align-self:center;font-size:.68rem}.log-line__source--server[data-v-d1059365]{color:var(--p-primary-color)}.log-line__source--agent[data-v-d1059365]{color:var(--p-text-muted-color)}.log-line__text[data-v-d1059365]{flex:auto}.follow-hint[data-v-d1059365]{text-align:center;margin:.4rem 0 0}.api-docs[data-v-5c36e62a]{flex-direction:column;height:100%;display:flex;overflow:hidden}.api-docs__content[data-v-5c36e62a]{flex:1;min-height:0;overflow-y:auto}.api-docs__toolbar[data-v-5c36e62a]{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-5c36e62a]{color:var(--p-text-muted-color);white-space:nowrap;font-size:.875rem;font-weight:500}.settings-page[data-v-f0a75b88]{flex-direction:column;height:100%;display:flex}.settings-layout[data-v-f0a75b88]{flex:1;gap:0;min-height:0;display:flex}.settings-nav[data-v-f0a75b88]{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-f0a75b88]{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-f0a75b88]{flex-direction:column;gap:.125rem;margin:0;padding:0;list-style:none;display:flex}.settings-nav__item[data-v-f0a75b88]{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-f0a75b88]:hover{background:var(--p-content-hover-background);color:var(--p-text-color)}.settings-nav__item--active[data-v-f0a75b88]{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-f0a75b88]{flex-shrink:0;font-size:.875rem}.settings-content[data-v-f0a75b88]{flex:1;min-width:0;padding:1.5rem 2rem;overflow-y:auto}.settings-content--fullpage[data-v-f0a75b88]{flex-direction:column;min-height:0;padding:0;display:flex;overflow:hidden}.settings-content--fullpage[data-v-f0a75b88] .api-docs{flex:1;min-height:0}@media (max-width:640px){.settings-layout[data-v-f0a75b88]{flex-direction:column}.settings-nav[data-v-f0a75b88]{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-f0a75b88]{display:none}.settings-nav__list[data-v-f0a75b88]{scrollbar-width:none;flex-direction:row;flex:1;gap:0;padding:0 .25rem;overflow-x:auto}.settings-nav__list[data-v-f0a75b88]::-webkit-scrollbar{display:none}.settings-nav__item[data-v-f0a75b88]{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-f0a75b88]{font-size:1rem}.settings-nav__chevron[data-v-f0a75b88]{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-f0a75b88]:hover{background:var(--p-content-hover-background);color:var(--p-text-color)}.settings-content[data-v-f0a75b88]{padding:1rem}}@media (min-width:641px){.settings-nav__chevron[data-v-f0a75b88]{display:none}}.section-header[data-v-f0a75b88]{margin-bottom:1.5rem}.section-header--has-actions[data-v-f0a75b88]{justify-content:space-between;align-items:flex-start;gap:1rem;display:flex}.section-header__text[data-v-f0a75b88]{flex:1;min-width:0}.section-header__actions[data-v-f0a75b88]{flex-shrink:0;align-self:center}.section-title[data-v-f0a75b88]{margin:0 0 .25rem;font-size:1.25rem;font-weight:700}.section-desc[data-v-f0a75b88]{color:var(--p-text-muted-color);margin:0;font-size:.875rem}
|
|
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-f09ec6ab]{max-width:1200px;margin:0 auto;padding:1.5rem}.page-header[data-v-f09ec6ab]{justify-content:space-between;align-items:center;margin-bottom:1.5rem;display:flex}.page-header h1[data-v-f09ec6ab]{margin:0;font-size:1.75rem;font-weight:700}.loading-container[data-v-f09ec6ab],.error-container[data-v-f09ec6ab],.empty-container[data-v-f09ec6ab]{color:var(--p-text-muted-color);flex-direction:column;align-items:center;gap:.75rem;padding:3rem 0;display:flex}.agent-name[data-v-f09ec6ab]{align-items:center;gap:.5rem;font-weight:500;display:flex}.agent-url[data-v-f09ec6ab]{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-f09ec6ab]{flex-wrap:wrap;gap:.3rem;display:flex}.action-grid[data-v-f09ec6ab]{grid-template-columns:repeat(2,auto);gap:0;width:fit-content;display:grid}@media (max-width:768px){[data-v-f09ec6ab] .hide-on-mobile{display:none!important}[data-v-f09ec6ab] .p-datatable-column-header-content{white-space:nowrap}.agent-url[data-v-f09ec6ab]{word-break:break-all;white-space:normal}}.text-muted[data-v-f09ec6ab]{color:var(--p-text-muted-color)}.form-group[data-v-f09ec6ab]{margin-bottom:1rem}.form-group label[data-v-f09ec6ab]{margin-bottom:.4rem;font-size:.875rem;font-weight:500;display:block}.form-hint[data-v-f09ec6ab]{color:var(--p-text-muted-color);font-size:.78rem}.test-connection[data-v-f09ec6ab]{align-items:center;gap:.75rem;display:flex}.w-full[data-v-f09ec6ab]{width:100%}.passthrough-description[data-v-f09ec6ab]{color:var(--p-text-muted-color);margin:0 0 1rem;font-size:.85rem;line-height:1.4}.passthrough-list[data-v-f09ec6ab]{flex-direction:column;gap:.25rem;margin-bottom:.75rem;display:flex}.passthrough-item[data-v-f09ec6ab]{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-f09ec6ab]{align-items:center;gap:.4rem;min-width:0;display:flex;overflow:hidden}.passthrough-item code[data-v-f09ec6ab]{flex-shrink:0;font-family:Fira Code,Cascadia Code,monospace;font-size:.85rem}.passthrough-value[data-v-f09ec6ab]{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-f09ec6ab]{color:var(--p-orange-500);font-size:.78rem;font-style:italic}.passthrough-unsaved[data-v-f09ec6ab]{color:var(--p-text-muted-color);font-size:.78rem;font-style:italic}.passthrough-empty[data-v-f09ec6ab]{margin-bottom:.75rem;font-size:.85rem}.passthrough-add[data-v-f09ec6ab]{align-items:center;gap:.5rem;display:flex}.passthrough-add-input[data-v-f09ec6ab]{flex:1}.passthrough-error[data-v-f09ec6ab]{color:var(--p-red-500);margin-top:.25rem;font-size:.78rem;display:block}.api-keys-page[data-v-90995e31]{max-width:860px;padding:1.5rem}.api-keys-page__header[data-v-90995e31]{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-90995e31]{margin:0;font-size:1.5rem;font-weight:600}.api-keys-page__subtitle[data-v-90995e31]{color:var(--p-text-muted-color);flex:1;margin:0;font-size:.875rem}.api-keys-page__empty[data-v-90995e31]{color:var(--p-text-muted-color);padding:2rem 0;font-size:.9rem}.api-keys-card[data-v-90995e31]{max-width:680px}.api-keys-list[data-v-90995e31]{flex-direction:column;gap:.5rem;display:flex}.api-key-card[data-v-90995e31]{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-90995e31]{min-width:0}.api-key-card__name[data-v-90995e31]{align-items:center;gap:.5rem;margin-bottom:.2rem;padding-right:5rem;font-weight:500;display:flex}.api-key-card__meta[data-v-90995e31]{color:var(--p-text-muted-color);margin-bottom:.4rem;font-size:.8rem}.api-key-card__url-row[data-v-90995e31]{align-items:center;gap:.4rem;display:flex}.api-key-card__url[data-v-90995e31]{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-90995e31]{gap:.3rem;display:flex;position:absolute;top:.5rem;right:.5rem}.badge[data-v-90995e31]{text-transform:uppercase;border-radius:4px;padding:.1rem .4rem;font-size:.7rem;font-weight:600}.badge--info[data-v-90995e31]{background:var(--p-blue-100);color:var(--p-blue-700)}.api-key-form[data-v-90995e31]{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-90995e31]{margin:0 0 1.25rem;font-size:1.1rem}.form-field[data-v-90995e31]{margin-bottom:1.25rem}.form-field>label[data-v-90995e31]:first-child{margin-bottom:.5rem;font-size:.875rem;font-weight:600;display:block}.form-input[data-v-90995e31]{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-90995e31]:focus{border-color:var(--p-primary-color);outline:none}.form-select[data-v-90995e31]{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-90995e31]{width:auto;padding:.25rem .5rem;font-size:.8rem}.form-hint[data-v-90995e31]{color:var(--p-text-muted-color);margin-top:.4rem;font-size:.75rem}.radio-group[data-v-90995e31]{flex-direction:column;gap:.4rem;display:flex}.radio-label[data-v-90995e31]{cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:.5rem;font-size:.875rem;display:flex}.svc-list-container[data-v-90995e31]{border:1px solid var(--runeya-border);border-radius:8px;margin-bottom:.5rem;overflow:hidden}.svc-list-search[data-v-90995e31]{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-90995e31]{color:var(--p-text-muted-color);flex-shrink:0;font-size:.75rem}.svc-list-search__input[data-v-90995e31]{color:var(--p-text-color);background:0 0;border:none;outline:none;flex:1;font-size:.85rem}.svc-list-search__input[data-v-90995e31]::placeholder{color:var(--p-text-muted-color)}.svc-list-search__clear[data-v-90995e31]{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-90995e31]:hover{color:var(--p-text-color)}.svc-list-scroll[data-v-90995e31]{max-height:360px;overflow-y:auto}.svc-list-empty[data-v-90995e31]{margin:0;padding:.75rem}.svc-perm-row[data-v-90995e31]{border-bottom:1px solid var(--runeya-border);overflow:hidden}.svc-perm-row[data-v-90995e31]:last-child{border-bottom:none}.svc-perm-row__header[data-v-90995e31]{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-90995e31]:hover{background:var(--runeya-sidebar-hover)}.svc-chevron[data-v-90995e31]{color:var(--p-text-muted-color);font-size:.7rem;transition:transform .15s}.svc-perm-summary[data-v-90995e31]{color:var(--p-text-muted-color);margin-left:.3rem;font-size:.75rem;font-weight:400}.svc-perm-row__name[data-v-90995e31]{align-items:center;gap:.4rem;font-size:.875rem;font-weight:600;display:flex}.svc-perm-row__actions[data-v-90995e31]{border-bottom:1px solid var(--runeya-border);flex-wrap:wrap;gap:.35rem;padding:.5rem .75rem;display:flex}.action-chip[data-v-90995e31]{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-90995e31]{display:none}.action-chip--on[data-v-90995e31]{background:var(--p-primary-color);color:var(--p-primary-contrast-color,#fff);border-color:var(--p-primary-color)}.action-chip--sub[data-v-90995e31]{opacity:.85;margin-left:.25rem;font-size:.72rem}.action-chip--sub.action-chip--on[data-v-90995e31]{background:var(--p-primary-400,var(--p-primary-color))}.svc-perm-row__envs[data-v-90995e31]{flex-direction:column;gap:.35rem;padding:.5rem .75rem;display:flex}.env-perm-row[data-v-90995e31]{flex-wrap:wrap;align-items:center;gap:.35rem;display:flex}.env-perm-row__name[data-v-90995e31]{color:var(--p-text-muted-color);align-items:center;gap:.3rem;min-width:8rem;font-size:.8rem;display:flex}.env-add-row[data-v-90995e31]{margin-top:.25rem}.svc-add-row[data-v-90995e31]{flex-wrap:wrap;align-items:center;gap:.5rem;margin-top:.5rem;display:flex}.import-modal__body[data-v-90995e31]{flex-direction:column;gap:1rem;padding:.25rem 0;display:flex}.import-modal__desc[data-v-90995e31]{color:var(--p-text-muted-color);margin:0;font-size:.875rem}.import-section[data-v-90995e31]{flex-direction:column;gap:.4rem;display:flex}.import-section__label[data-v-90995e31]{color:var(--p-text-muted-color);text-transform:uppercase;letter-spacing:.04em;font-size:.8rem;font-weight:600}.form-actions[data-v-90995e31]{justify-content:space-between;align-items:center;gap:.75rem;margin-top:1.5rem;display:flex}.form-actions__right[data-v-90995e31]{gap:.75rem;display:flex}.btn--renew[data-v-90995e31]{color:var(--p-text-muted-color);font-size:.8rem}.btn--renew[data-v-90995e31]:hover:not(:disabled){color:var(--p-text-color)}.api-key-card__skill[data-v-90995e31]{margin-top:.6rem}.skill-toggle[data-v-90995e31]{color:var(--p-text-muted-color);gap:.35rem}.skill-toggle[data-v-90995e31]:hover{color:var(--p-text-color)}.skill-panel[data-v-90995e31]{border:1px solid var(--runeya-border);border-radius:6px;margin-top:.5rem;overflow:hidden}.skill-panel__tools[data-v-90995e31]{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-90995e31]{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-90995e31]:hover{background:var(--runeya-sidebar-hover);color:var(--p-text-color)}.skill-tool-btn--active[data-v-90995e31]{background:var(--p-primary-color);color:var(--p-primary-contrast-color,#fff);border-color:var(--p-primary-color)}.skill-panel__header[data-v-90995e31]{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-90995e31]{gap:.35rem;display:flex}.skill-panel__hint[data-v-90995e31]{color:var(--p-text-muted-color);font-size:.75rem}.skill-panel__code[data-v-90995e31]{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-90995e31]{flex-direction:column;gap:.5rem;padding:.25rem 0;display:flex}.renew-modal__title[data-v-90995e31]{align-items:center;gap:.5rem;font-weight:600;display:flex}.renew-modal__title-icon[data-v-90995e31]{color:var(--p-orange-500,#f97316)}.renew-modal__body p[data-v-90995e31]{margin:0;font-size:.9rem;line-height:1.5}.btn[data-v-90995e31]{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-90995e31]:disabled{opacity:.5;cursor:not-allowed}.btn--primary[data-v-90995e31]{background:var(--p-primary-color);color:var(--p-primary-contrast-color,#fff)}.btn--primary[data-v-90995e31]:hover:not(:disabled){filter:brightness(1.1)}.btn--ghost[data-v-90995e31]{color:var(--p-text-color);border:1px solid var(--runeya-border);background:0 0}.btn--ghost[data-v-90995e31]:hover:not(:disabled){background:var(--runeya-sidebar-hover)}.btn--danger[data-v-90995e31]{color:var(--p-red-500,#ef4444);border:1px solid var(--runeya-border);background:0 0}.btn--danger[data-v-90995e31]:hover:not(:disabled){background:var(--p-red-50,#fef2f2)}.btn--sm[data-v-90995e31]{padding:.3rem .6rem;font-size:.8rem}.btn--xs[data-v-90995e31]{padding:.2rem .4rem;font-size:.75rem}.settings-card[data-v-0b45301c]{max-width:680px}.cloud-banner[data-v-0b45301c]{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-0b45301c]: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-0b45301c]{color:var(--p-primary-color);flex-shrink:0;font-size:1.75rem}.cloud-banner__text[data-v-0b45301c]{flex-direction:column;flex:1;gap:.15rem;min-width:0;display:flex}.cloud-banner__title[data-v-0b45301c]{font-size:1rem}.cloud-banner__desc[data-v-0b45301c]{color:var(--p-text-muted-color);font-size:.85rem}.cloud-banner__action[data-v-0b45301c]{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-0b45301c]{border-bottom:1px solid var(--p-content-border-color);align-items:flex-start;gap:1rem;padding:.75rem 0;display:flex}.setting-row[data-v-0b45301c]:last-child{border-bottom:none}.setting-label[data-v-0b45301c]{width:140px;color:var(--p-text-muted-color);flex-shrink:0;padding-top:.25rem;font-size:.9rem;font-weight:600}.setting-value[data-v-0b45301c]{flex:1;align-items:center;gap:.5rem;display:flex}.path-value[data-v-0b45301c]{word-break:break-all;min-width:0;color:var(--p-text-color);flex:1;font-size:.85rem}.setting-input[data-v-0b45301c]{width:100%;max-width:400px}.setting-actions[data-v-0b45301c]{padding-top:1rem}.launcher-report[data-v-0b45301c]{background:var(--p-content-background);border:1px solid var(--p-content-border-color);white-space:pre-wrap;word-break:break-all;border-radius:6px;max-height:260px;margin:0 0 .5rem;padding:.5rem .75rem;font-size:.78rem;overflow:auto}.settings-card[data-v-6c657270]{max-width:680px}.notification-groups[data-v-6c657270]{flex-direction:column;gap:1rem;display:flex}.notification-group[data-v-6c657270]{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-6c657270]{justify-content:space-between;align-items:flex-start;gap:.75rem;margin-bottom:.35rem;display:flex}.notification-group__collapse-button[data-v-6c657270]{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-6c657270]{align-items:center;gap:.45rem;display:flex}.notification-group__icon[data-v-6c657270]{color:var(--p-text-muted-color);font-size:.9rem}.notification-group__title[data-v-6c657270]{margin:0;font-size:.92rem;font-weight:700}.notification-group__chevron[data-v-6c657270]{color:var(--p-text-muted-color);margin-left:auto;font-size:.8rem}.notification-group__desc[data-v-6c657270]{color:var(--p-text-muted-color);margin:.2rem 0 0;font-size:.78rem}.notification-group__actions[data-v-6c657270]{flex-shrink:0}.notification-item[data-v-6c657270]{border-bottom:1px solid var(--p-content-border-color)}.notification-item[data-v-6c657270]:last-child,.notification-item .setting-row[data-v-6c657270]{border-bottom:none}.setting-row[data-v-6c657270]{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-6c657270]{align-items:center}.setting-label[data-v-6c657270]{color:var(--p-text-muted-color);font-size:.9rem;font-weight:600}.setting-label-group[data-v-6c657270]{flex:1;min-width:0}.setting-hint[data-v-6c657270]{color:var(--p-text-muted-color);margin-top:.2rem;font-size:.78rem;display:block}.notification-item__right[data-v-6c657270]{flex-shrink:0;align-items:center;gap:.5rem;display:flex}.notification-item__services-toggle[data-v-6c657270]{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-6c657270]:hover{background:var(--p-content-hover-background);color:var(--p-text-color)}.notification-item__services[data-v-6c657270]{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-6c657270]{color:var(--p-text-muted-color);margin:0;font-size:.8rem}.notification-item__service-row[data-v-6c657270]{justify-content:space-between;align-items:center;padding:.25rem 0;display:flex}.notification-item__service-name[data-v-6c657270]{color:var(--p-text-color);font-size:.85rem}.security-cards[data-v-12415284]{flex-direction:column;gap:1rem;display:flex}.settings-card[data-v-12415284]{max-width:680px}.card-title[data-v-12415284]{align-items:center;gap:.5rem;display:flex}.card-desc[data-v-12415284]{color:var(--p-text-muted-color);margin:0 0 1rem;font-size:.85rem}.setting-row[data-v-12415284]{align-items:flex-start;gap:1rem;padding:.75rem 0;display:flex}.setting-label[data-v-12415284]{width:140px;color:var(--p-text-muted-color);flex-shrink:0;padding-top:.25rem;font-size:.9rem;font-weight:600}.org-block[data-v-12415284]{flex-direction:column;display:flex}.org-adopt[data-v-12415284]{flex-direction:column;gap:.5rem;margin-bottom:1rem;display:flex}.org-adopt__row[data-v-12415284]{align-items:center;gap:.5rem;max-width:560px;display:flex}.org-unreadable[data-v-12415284]{margin:0 0 .75rem;font-size:.8rem}.org-label[data-v-12415284]{flex-direction:column;gap:.15rem;display:flex}.org-id[data-v-12415284]{word-break:break-all;font-family:monospace;font-size:.8rem}.org-source[data-v-12415284]{font-size:.75rem;font-weight:400}.org-source--own[data-v-12415284]{color:var(--p-primary-color)}.org-source--locked[data-v-12415284]{color:var(--p-red-500)}.encryption-key-field[data-v-12415284]{flex:1;align-items:center;gap:.25rem;max-width:460px;display:flex}.encryption-key-input[data-v-12415284]{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}.parsers-scope[data-v-eef7a442]{color:var(--p-text-muted-color);align-items:center;gap:.5rem;margin:0 0 1rem;font-size:.85rem;display:flex}[data-v-eef7a442] .p-dialog-content{flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden}.settings-card[data-v-eef7a442]{max-width:680px}.card-desc[data-v-eef7a442]{color:var(--p-text-muted-color);margin:0 0 1rem;font-size:.85rem}.parsers-loading[data-v-eef7a442]{color:var(--p-text-muted-color);align-items:center;gap:.5rem;padding:1rem;font-size:.875rem;display:flex}.parsers-list[data-v-eef7a442]{flex-direction:column;gap:.375rem;display:flex}.parsers-row[data-v-eef7a442]{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-eef7a442]{flex-shrink:0;font-size:.875rem;font-weight:600}.parsers-desc-inline[data-v-eef7a442]{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-eef7a442]{color:var(--p-green-500);justify-content:center;align-items:center;width:2rem;height:2rem;display:flex}.parsers-icon--off[data-v-eef7a442]{color:var(--p-red-500);justify-content:center;align-items:center;width:2rem;height:2rem;display:flex}.parsers-actions[data-v-eef7a442]{align-items:center;gap:.25rem;margin-left:auto;display:flex}.parsers-empty[data-v-eef7a442]{text-align:center;color:var(--p-text-muted-color);padding:1.5rem;font-size:.875rem}.parser-dialog__layout[data-v-eef7a442]{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-eef7a442]{grid-template-columns:1fr;height:auto;overflow-y:auto}.dialog-form[data-v-eef7a442]{height:auto;overflow:visible}.dialog-form__field--code[data-v-eef7a442]{min-height:250px}.parser-sim[data-v-eef7a442]{min-height:300px}.parser-sim__body[data-v-eef7a442]{min-height:0}.parser-sim__col--output[data-v-eef7a442]{min-height:150px}}.dialog-form[data-v-eef7a442]{flex-direction:column;gap:1rem;height:100%;display:flex;overflow:auto}.dialog-form__field--code[data-v-eef7a442]{flex:1;min-height:0}.dialog-form__field[data-v-eef7a442]{flex-direction:column;gap:.375rem;display:flex}.dialog-form__label[data-v-eef7a442]{color:var(--p-text-muted-color);align-items:center;gap:.5rem;font-size:.8125rem;font-weight:600;display:flex}.dialog-form__input[data-v-eef7a442]{width:100%}.dialog-form__hint[data-v-eef7a442]{color:var(--p-text-muted-color);font-size:.78rem}.dialog-form__hint code[data-v-eef7a442]{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-eef7a442]{align-items:center;gap:.5rem;display:flex}.dialog-form__switch-label[data-v-eef7a442]{color:var(--p-text-muted-color);font-size:.85rem}.dialog-form__templates[data-v-eef7a442]{flex-direction:column;gap:.5rem;display:flex}.dialog-form__templates-label[data-v-eef7a442]{color:var(--p-text-muted-color);text-transform:uppercase;letter-spacing:.04em;font-size:.75rem;font-weight:600}.dialog-form__templates-select[data-v-eef7a442]{width:100%}.dialog-form__ai-btn[data-v-eef7a442]{margin-left:auto}.tpl-option[data-v-eef7a442]{align-items:center;gap:.75rem;display:flex}.tpl-option__icon[data-v-eef7a442]{color:var(--p-primary-color);flex-shrink:0;font-size:.9rem}.tpl-option__body[data-v-eef7a442]{flex-direction:column;gap:.1rem;display:flex}.tpl-option__name[data-v-eef7a442]{color:var(--p-text-color);font-size:.8125rem;font-weight:600}.tpl-option__desc[data-v-eef7a442]{color:var(--p-text-muted-color);font-size:.73rem}.parser-sim[data-v-eef7a442]{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-eef7a442]{background:color-mix(in srgb, var(--p-text-color) 7%, var(--p-content-background));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-eef7a442]{align-items:center;gap:.4rem;font-weight:600;display:flex}.parser-sim__status[data-v-eef7a442]{color:var(--p-text-muted-color);align-items:center;gap:.3rem;font-size:.75rem;display:flex}.parser-sim__body[data-v-eef7a442]{flex-direction:column;flex:1;gap:0;min-height:0;display:flex}.parser-sim__col[data-v-eef7a442]{flex-direction:column;gap:.25rem;padding:.6rem .75rem;display:flex}.parser-sim__col[data-v-eef7a442]:first-child{border-bottom:1px solid var(--p-content-border-color)}.parser-sim__col-label[data-v-eef7a442]{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-eef7a442]{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-eef7a442]:focus{border-color:var(--p-primary-color)}.parser-sim__error[data-v-eef7a442]{color:var(--p-red-500,#ef4444);align-items:flex-start;gap:.4rem;padding:.5rem;font-size:.8rem;display:flex}.parser-sim__empty[data-v-eef7a442]{color:var(--p-text-muted-color);padding:.5rem;font-size:.8rem;font-style:italic}.parser-sim__col--output[data-v-eef7a442]{flex:1;min-height:0;overflow:hidden}.parser-sim__viewer[data-v-eef7a442]{flex:1;height:100%;min-height:0}.parser-ai-prompt[data-v-eef7a442]{flex-direction:column;gap:.75rem;display:flex}.parser-ai-prompt__desc[data-v-eef7a442]{color:var(--p-text-muted-color);margin:0;font-size:.9rem}.parser-ai-prompt__input[data-v-eef7a442]{resize:vertical;width:100%}.companion-settings[data-v-0767010c]{border-bottom:1px solid var(--p-surface-200);margin-bottom:1.25rem;padding-bottom:1.25rem}.companion-settings__title[data-v-0767010c]{align-items:center;gap:.4rem;margin:0 0 .25rem;font-size:.95rem;display:flex}.companion-settings__lead[data-v-0767010c]{color:var(--p-text-muted-color);margin:0 0 .75rem;font-size:.8rem}.companion-settings__row[data-v-0767010c]{align-items:center;gap:.75rem;padding:.4rem 0;display:flex}.companion-settings__row--stack[data-v-0767010c]{flex-wrap:wrap;justify-content:space-between}.companion-settings__label[data-v-0767010c]{font-size:.85rem}.companion-settings__hint[data-v-0767010c]{color:var(--p-text-muted-color);font-size:.75rem}.companion-settings__actions[data-v-0767010c]{gap:.25rem;display:flex}.companion-settings__editor[data-v-0767010c]{margin-top:.5rem}.companion-settings__textarea[data-v-0767010c]{width:100%;font-family:var(--font-mono,ui-monospace, monospace);font-size:.75rem}.providers-scope[data-v-0767010c]{color:var(--p-text-muted-color);align-items:center;gap:.4rem;margin:0 0 .9rem;font-size:.8rem;display:flex}.settings-card[data-v-0767010c]{max-width:680px}.providers-loading[data-v-0767010c],.providers-empty[data-v-0767010c]{color:var(--p-text-muted-color);align-items:center;gap:.5rem;padding:1rem;font-size:.875rem;display:flex}.ai-providers-list[data-v-0767010c]{flex-direction:column;gap:.5rem;display:flex}.ai-provider-row[data-v-0767010c]{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-0767010c]{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-0767010c]{flex-wrap:wrap;align-items:center;gap:.75rem;min-width:0;display:flex}.ai-provider-name[data-v-0767010c]{font-size:.875rem;font-weight:600}.ai-provider-type[data-v-0767010c]{color:var(--p-text-muted-color);font-size:.8125rem}.ai-provider-model[data-v-0767010c]{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-0767010c]{background:var(--p-content-hover-background);letter-spacing:.05em;border-radius:4px;padding:.15rem .4rem;font-size:.75rem}.ai-provider-actions[data-v-0767010c]{flex-shrink:0;align-items:center;gap:.25rem;display:flex}.ai-provider-badge[data-v-0767010c]{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-0767010c]{flex-direction:column;gap:1rem;display:flex}.dialog-form__field[data-v-0767010c]{flex-direction:column;gap:.375rem;display:flex}.dialog-form__label[data-v-0767010c]{color:var(--p-text-muted-color);align-items:center;gap:.5rem;font-size:.8125rem;font-weight:600;display:flex}.dialog-form__input[data-v-0767010c]{width:100%}.ai-provider-info-block[data-v-0767010c]{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-0767010c]{color:var(--p-text-color);margin:0;font-size:.875rem;line-height:1.5}.ai-provider-info-block__link[data-v-0767010c]{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-0767010c]:hover{text-decoration:underline}.ai-provider-info-block__models[data-v-0767010c]{flex-wrap:wrap;align-items:center;gap:.4rem;display:flex}.ai-provider-info-block__models-label[data-v-0767010c]{color:var(--p-text-muted-color);font-size:.75rem;font-weight:500}.ai-provider-info-block__model-tag[data-v-0767010c]{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}.state[data-v-dcb0ce3b]{color:var(--p-text-muted-color);align-items:center;gap:.75rem;font-size:.88rem;display:flex}.settings-card[data-v-5f478adc]{max-width:680px}.setting-row[data-v-5f478adc]{border-bottom:1px solid var(--p-content-border-color);align-items:flex-start;gap:1rem;padding:.75rem 0;display:flex}.setting-row[data-v-5f478adc]:last-child{border-bottom:none}.setting-label[data-v-5f478adc]{width:140px;color:var(--p-text-muted-color);flex-shrink:0;padding-top:.25rem;font-size:.9rem;font-weight:600}.setting-value[data-v-5f478adc]{flex:1;align-items:center;gap:.5rem;display:flex}.card-title-row[data-v-5f478adc]{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;display:flex}.diagnostics[data-v-d1059365]{flex-direction:column;gap:2rem;display:flex}.block__header[data-v-d1059365]{justify-content:space-between;align-items:flex-start;gap:1rem;margin-bottom:.85rem;display:flex}.block__title[data-v-d1059365]{margin:0;font-size:1rem;font-weight:600}.block__desc[data-v-d1059365]{color:var(--p-text-muted-color);margin:.2rem 0 0;font-size:.85rem}.empty[data-v-d1059365]{text-align:center;color:var(--p-text-muted-color);margin:0;padding:1.2rem;font-size:.875rem}.instances[data-v-d1059365]{border:1px solid var(--p-content-border-color);border-radius:8px;margin:0;padding:0;list-style:none;overflow:hidden}.instance[data-v-d1059365]{border-bottom:1px solid var(--p-content-border-color);grid-template-columns:1fr auto;grid-template-areas:"main action""meta action";align-items:center;gap:.15rem 1rem;padding:.7rem .9rem;display:grid}.instance[data-v-d1059365]:last-child{border-bottom:0}.instance__main[data-v-d1059365]{grid-area:main;align-items:center;gap:.5rem;font-size:.9rem;font-weight:600;display:flex}.instance__port[data-v-d1059365]{align-items:center;gap:.4rem;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;display:flex}.instance__meta[data-v-d1059365]{color:var(--p-text-muted-color);flex-wrap:wrap;grid-area:meta;align-items:center;gap:.4rem;font-size:.78rem;display:flex}.instance__cwd[data-v-d1059365]{text-overflow:ellipsis;white-space:nowrap;max-width:24rem;overflow:hidden}.instance[data-v-d1059365] .p-button{grid-area:action}.instance__actions[data-v-d1059365]{grid-area:action;align-items:center;gap:.25rem;display:flex}.instance__actions[data-v-d1059365] .p-button{grid-area:auto}.tag[data-v-d1059365]{border-radius:999px;padding:.1rem .45rem;font-size:.7rem;font-weight:600}.tag--current[data-v-d1059365]{background:color-mix(in srgb, var(--p-primary-color) 16%, transparent);color:var(--p-primary-color)}.toolbar[data-v-d1059365]{flex-wrap:wrap;align-items:center;gap:.6rem;margin-bottom:.6rem;display:flex}.toolbar__source[data-v-d1059365]{min-width:9rem}.toolbar__search[data-v-d1059365]{flex:10rem;min-width:10rem}.toolbar__toggle[data-v-d1059365]{align-items:center;gap:.45rem;font-size:.85rem;display:flex}.toolbar__spacer[data-v-d1059365]{flex:auto}.toolbar__actions[data-v-d1059365]{flex:none;align-items:center;gap:.25rem;display:flex}.log[data-v-d1059365]{background:var(--p-content-background);border:1px solid var(--p-content-border-color);border-radius:8px;height:26rem;padding:.5rem 0;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.78rem;line-height:1.55;overflow:auto}.log-line[data-v-d1059365]{white-space:pre-wrap;word-break:break-word;gap:.6rem;padding:.05rem .8rem;display:flex}.log-line--warn[data-v-d1059365]{background:color-mix(in srgb, var(--p-orange-500,#f59e0b) 9%, transparent)}.log-line--error[data-v-d1059365]{background:color-mix(in srgb, var(--p-red-500,#ef4444) 11%, transparent)}.log-line__time[data-v-d1059365]{color:var(--p-text-muted-color);opacity:.75;flex:none}.log-line__source[data-v-d1059365]{text-transform:uppercase;letter-spacing:.03em;flex:0 0 3.4rem;align-self:center;font-size:.68rem}.log-line__source--server[data-v-d1059365]{color:var(--p-primary-color)}.log-line__source--agent[data-v-d1059365]{color:var(--p-text-muted-color)}.log-line__text[data-v-d1059365]{flex:auto}.follow-hint[data-v-d1059365]{text-align:center;margin:.4rem 0 0}.api-docs[data-v-5c36e62a]{flex-direction:column;height:100%;display:flex;overflow:hidden}.api-docs__content[data-v-5c36e62a]{flex:1;min-height:0;overflow-y:auto}.api-docs__toolbar[data-v-5c36e62a]{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-5c36e62a]{color:var(--p-text-muted-color);white-space:nowrap;font-size:.875rem;font-weight:500}.settings-page[data-v-38fb9ea4]{flex-direction:column;height:100%;display:flex}.settings-layout[data-v-38fb9ea4]{flex:1;gap:0;min-height:0;display:flex}.settings-nav[data-v-38fb9ea4]{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__list[data-v-38fb9ea4]{flex-direction:column;gap:.125rem;margin:0;padding:0;list-style:none;display:flex}.settings-nav__item[data-v-38fb9ea4]{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-38fb9ea4]:hover{background:var(--p-content-hover-background);color:var(--p-text-color)}.settings-nav__item--active[data-v-38fb9ea4]{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-38fb9ea4]{flex-shrink:0;font-size:.875rem}.settings-content[data-v-38fb9ea4]{flex:1;min-width:0;padding:1.5rem 2rem;overflow-y:auto}.settings-content--fullpage[data-v-38fb9ea4]{flex-direction:column;min-height:0;padding:0;display:flex;overflow:hidden}.settings-content--fullpage[data-v-38fb9ea4] .api-docs{flex:1;min-height:0}@media (max-width:640px){.settings-layout[data-v-38fb9ea4]{flex-direction:column}.settings-nav[data-v-38fb9ea4]{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__list[data-v-38fb9ea4]{scrollbar-width:none;flex-direction:row;flex:1;gap:0;padding:0 .25rem;overflow-x:auto}.settings-nav__list[data-v-38fb9ea4]::-webkit-scrollbar{display:none}.settings-nav__item[data-v-38fb9ea4]{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-38fb9ea4]{font-size:1rem}.settings-nav__chevron[data-v-38fb9ea4]{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-38fb9ea4]:hover{background:var(--p-content-hover-background);color:var(--p-text-color)}.settings-content[data-v-38fb9ea4]{padding:1rem}}@media (min-width:641px){.settings-nav__chevron[data-v-38fb9ea4]{display:none}}.section-header[data-v-38fb9ea4]{margin-bottom:1.5rem}.section-header--has-actions[data-v-38fb9ea4]{justify-content:space-between;align-items:flex-start;gap:1rem;display:flex}.section-header__text[data-v-38fb9ea4]{flex:1;min-width:0}.section-header__actions[data-v-38fb9ea4]{flex-shrink:0;align-self:center}.section-title[data-v-38fb9ea4]{margin:0 0 .25rem;font-size:1.25rem;font-weight:700}.section-desc[data-v-38fb9ea4]{color:var(--p-text-muted-color);margin:0;font-size:.875rem}
|