@runeya/runeya 2.0.101 → 2.0.103

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