@runeya/runeya 2.0.146 → 2.0.147

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 (171) hide show
  1. package/agent/index.js +10 -4
  2. package/agent/index.js.map +1 -1
  3. package/{agent-manager-R7BPQO6D.js → agent-manager-46C4NIQ2.js} +4 -2
  4. package/{chat-LPML22J5.js → chat-CMNDMXIP.js} +9 -5
  5. package/{chunk-SEPAURTQ.js → chunk-2NE52CL5.js} +156 -923
  6. package/chunk-2NE52CL5.js.map +1 -0
  7. package/chunk-4D3GCBPO.js +462 -0
  8. package/chunk-4D3GCBPO.js.map +1 -0
  9. package/{chunk-KV4GJKXU.js → chunk-5XG3X2TM.js} +27 -1479
  10. package/chunk-5XG3X2TM.js.map +1 -0
  11. package/chunk-7QXP4FXD.js +969 -0
  12. package/chunk-7QXP4FXD.js.map +1 -0
  13. package/chunk-DA2DZBTL.js +43 -0
  14. package/chunk-DA2DZBTL.js.map +1 -0
  15. package/chunk-DFPZ4MTI.js +1041 -0
  16. package/chunk-DFPZ4MTI.js.map +1 -0
  17. package/{chunk-UD42LACH.js → chunk-JNK6H5KH.js} +164 -1007
  18. package/chunk-JNK6H5KH.js.map +1 -0
  19. package/chunk-WDHLEO5S.js +809 -0
  20. package/chunk-WDHLEO5S.js.map +1 -0
  21. package/{companion-W3UMZWGH.js → companion-XKMNRIJB.js} +8 -3
  22. package/environment-resolver-ZDTF3MHI.js +18 -0
  23. package/environment-resolver-ZDTF3MHI.js.map +1 -0
  24. package/index.js +7 -7
  25. package/{install-gate-PVMGJDWE.js → install-gate-OJJEUU4E.js} +2 -2
  26. package/mcp-ready-TAPBAOZY.js +9 -0
  27. package/mcp-ready-TAPBAOZY.js.map +1 -0
  28. package/mcp-server/index.js +24 -0
  29. package/mcp-server/index.js.map +1 -1
  30. package/mcp-server/launch.d.ts +6 -0
  31. package/mcp-server/launch.js +2 -1
  32. package/mcp-server/launch.js.map +1 -1
  33. package/package.json +1 -1
  34. package/project-store-FLXTAD3J.js +23 -0
  35. package/project-store-FLXTAD3J.js.map +1 -0
  36. package/{src-LEDGW5KP.js → src-KWO3CKZU.js} +139 -59
  37. package/src-KWO3CKZU.js.map +1 -0
  38. package/web/assets/{AgentScalarChatInterface.vue-BYszptaB.js → AgentScalarChatInterface.vue-DKBinB_l.js} +2 -2
  39. package/web/assets/AgentTerminalPage-CixU7x6O.js +1 -0
  40. package/web/assets/AiChatModals-BvGUd-QD.css +1 -0
  41. package/web/assets/AiChatModals-C-hXImkO.js +4 -0
  42. package/web/assets/AppLayout-At9wk0sx.js +1 -0
  43. package/web/assets/{AppLayout-tsw5Ow0w.css → AppLayout-BlhwflMq.css} +1 -1
  44. package/web/assets/AuditPage-BkqbHxjY.js +1 -0
  45. package/web/assets/CloudAccountPage-D5C2SCS9.js +1 -0
  46. package/web/assets/CloudMessagingPage-Bi57GGHO.js +2 -0
  47. package/web/assets/DashboardPage-dEQop9ql.js +1 -0
  48. package/web/assets/DirectoryPickerDialog-DIMSeDhw.js +1 -0
  49. package/web/assets/{EditorIcon-CypGLV6w.js → EditorIcon-W3Szca4J.js} +1 -1
  50. package/web/assets/EnvironmentForm-C5emavNh.js +1 -0
  51. package/web/assets/EnvironmentFormPage-BIoy8fsW.js +1 -0
  52. package/web/assets/EnvironmentListPage-BDYeh7XF.js +1 -0
  53. package/web/assets/{FlagChip-R_T5qYpL.js → FlagChip-DPtIBCjQ.js} +1 -1
  54. package/web/assets/KanbanBoardPage-BlCcjBwV.js +4 -0
  55. package/web/assets/KanbanListPage-DbXONxfC.js +1 -0
  56. package/web/assets/LaunchProjectPage-Cg92hHwQ.js +1 -0
  57. package/web/assets/LaunchServicesPage-CO8gOB9D.js +1 -0
  58. package/web/assets/LaunchServicesPage-h5o3zLcy.css +1 -0
  59. package/web/assets/{LaunchShell-DUrSunB4.js → LaunchShell-CDb21ihZ.js} +1 -1
  60. package/web/assets/LogViewer-DsusKk2b.js +3 -0
  61. package/web/assets/OrgKeyPrompt-CX9K7r9I.js +1 -0
  62. package/web/assets/ProcessControls-B7hWVqiR.css +1 -0
  63. package/web/assets/ProcessControls-TEZutuxq.js +1 -0
  64. package/web/assets/ProcessDetailPage-Cj23FECq.js +1 -0
  65. package/web/assets/ProcessMetrics-1P6iE2Il.js +1 -0
  66. package/web/assets/ProjectCreateDialog-D3aMWKfw.js +1 -0
  67. package/web/assets/{ProjectLocationGate-DhMVdIjN.js → ProjectLocationGate-DU0Jj8Nw.js} +1 -1
  68. package/web/assets/ProjectPublishDialog-D7sNKei3.js +1 -0
  69. package/web/assets/{RandomJobTestPage-BUS2Ty6-.js → RandomJobTestPage-DQUMRHyf.js} +1 -1
  70. package/web/assets/{ScenarioEditorPage-vMoRt0Qn.css → ScenarioEditorPage-BSjSX4bw.css} +1 -1
  71. package/web/assets/ScenarioEditorPage-DvCdcY9m.js +14 -0
  72. package/web/assets/SendToChatDialog-BdWKjYmv.js +1 -0
  73. package/web/assets/ServiceControlsBar-B_J5m-Kc.js +1 -0
  74. package/web/assets/ServiceDetailPage-DhJcjFfY.js +2 -0
  75. package/web/assets/{ServiceDetailPage-COdaCZ6r.css → ServiceDetailPage-DnSf5cm9.css} +1 -1
  76. package/web/assets/ServiceFormPage-fp8NCHSv.js +1 -0
  77. package/web/assets/{SettingsPage-4pKUgKPm.css → SettingsPage-NH2fQap4.css} +1 -1
  78. package/web/assets/SettingsPage-s28BodWe.js +2086 -0
  79. package/web/assets/UnlockPage-BXXIPHW_.js +1 -0
  80. package/web/assets/VaultMigrationPage-BfNuKtkJ.js +1 -0
  81. package/web/assets/{VersionBadge-BmArk24p.js → VersionBadge-CW7czacg.js} +1 -1
  82. package/web/assets/{WikiPage-DADu8WUA.js → WikiPage-BiwpCM3E.js} +1 -1
  83. package/web/assets/WikiView-CMch_06Z.js +1 -0
  84. package/web/assets/{add-scalar-classes-dWEWPlFD.js → add-scalar-classes-Ckanjq1h.js} +14 -14
  85. package/web/assets/{agent.store-CKLAkF9a.js → agent.store-piokQ9Dt.js} +1 -1
  86. package/web/assets/{auth-Cg9BWTfK.js → auth-BT_jf-5e.js} +2 -2
  87. package/web/assets/cloud-chat.store-CDKh4tIy.js +1 -0
  88. package/web/assets/{cloud-client-D_zCiW0s.js → cloud-client-CzPdZLDq.js} +2 -2
  89. package/web/assets/{cloud-session-DOaDpZTy.js → cloud-session-BYfn6YM4.js} +2 -2
  90. package/web/assets/floating-ui.dom-DF3oyfHd.js +1 -0
  91. package/web/assets/i18n-D0FT7rCj.js +1 -0
  92. package/web/assets/index-3LTzgeU-.css +1 -0
  93. package/web/assets/index-Ci2CNnit.js +309 -0
  94. package/web/assets/modal-iRaP1izE.js +5 -0
  95. package/web/assets/notification.store-CvvuTBVz.js +1 -0
  96. package/web/assets/{project-launch.store-y7JBMNiE.js → project-launch.store-CTmbl8UY.js} +1 -1
  97. package/web/assets/{project.store-DGJr0Qr9.js → project.store-CNC6_4r4.js} +1 -1
  98. package/web/assets/runtime-dom.esm-bundler-CyEVRK6B.js +1 -0
  99. package/web/assets/scenario.store-BIFQPXgl.js +7 -0
  100. package/web/assets/{service.store-5jWsJxPx.js → service.store-B40U4QzI.js} +1 -1
  101. package/web/assets/settings-scope-CyWMCjRY.js +1 -0
  102. package/web/assets/settings.store-Dw6bAoWE.js +1 -0
  103. package/web/assets/{src-Dnwk6NpV.js → src-CrNi4Pjg.js} +3 -3
  104. package/web/assets/src-DIBHat7I.js +3 -0
  105. package/web/assets/src-DtCW_XCh.js +1 -0
  106. package/web/assets/{trpc-Drabzwpd.js → trpc-BAZGRZBD.js} +3 -3
  107. package/web/assets/{useCloudOrg-BAQEtFPl.js → useCloudOrg-EnXFBwt1.js} +1 -1
  108. package/web/assets/useEnvVarAutocomplete-BxJh2Lw0.js +1 -0
  109. package/web/assets/useProjectCatalog-BrvUGv9A.js +1 -0
  110. package/web/assets/{useProjectCloudOrg-CEN9-_OA.js → useProjectCloudOrg-Czxlg00k.js} +1 -1
  111. package/web/assets/{useServiceUrlHost-BuoPEXZX.js → useServiceUrlHost-Szz9y3rh.js} +1 -1
  112. package/web/assets/vue-i18n-o7yraQpR.js +3 -0
  113. package/web/index.html +21 -21
  114. package/chunk-KV4GJKXU.js.map +0 -1
  115. package/chunk-SEPAURTQ.js.map +0 -1
  116. package/chunk-UD42LACH.js.map +0 -1
  117. package/src-LEDGW5KP.js.map +0 -1
  118. package/web/assets/AgentTerminalPage-C3TJ1NL9.js +0 -1
  119. package/web/assets/AiChatModals-D3scRE3S.js +0 -4
  120. package/web/assets/AiChatModals-EfRuvId7.css +0 -1
  121. package/web/assets/AppLayout-BMQUjPKe.js +0 -1
  122. package/web/assets/AuditPage-CKcExBws.js +0 -1
  123. package/web/assets/CloudAccountPage-B6oPg0BZ.js +0 -1
  124. package/web/assets/CloudMessagingPage-C5fwVe-F.js +0 -2
  125. package/web/assets/DashboardPage-9RV7sx3e.js +0 -1
  126. package/web/assets/DirectoryPickerDialog-C06BXyfJ.js +0 -1
  127. package/web/assets/EnvironmentForm-CAvDoira.js +0 -1
  128. package/web/assets/EnvironmentFormPage-BmAxhN-m.js +0 -1
  129. package/web/assets/EnvironmentListPage-B8uATPBI.js +0 -1
  130. package/web/assets/KanbanBoardPage-CQsOkRUf.js +0 -4
  131. package/web/assets/KanbanListPage-CWZqkjD6.js +0 -1
  132. package/web/assets/LaunchProjectPage-saSmC7Pr.js +0 -1
  133. package/web/assets/LaunchServicesPage-BkKyLMEz.js +0 -1
  134. package/web/assets/LaunchServicesPage-DoLDPqQq.css +0 -1
  135. package/web/assets/LogViewer-CZBYkH9J.js +0 -3
  136. package/web/assets/OrgKeyPrompt-DzQ7pwbs.js +0 -1
  137. package/web/assets/ProcessControls-BEeoNlNV.js +0 -1
  138. package/web/assets/ProcessControls-BlpnVylq.css +0 -1
  139. package/web/assets/ProcessDetailPage-CQgu5uKm.js +0 -1
  140. package/web/assets/ProcessMetrics-Crlfkelj.js +0 -1
  141. package/web/assets/ProjectCreateDialog-BolrhRD-.js +0 -1
  142. package/web/assets/ProjectPublishDialog-DsZNWrfz.js +0 -1
  143. package/web/assets/ScenarioEditorPage-MIAGh2us.js +0 -14
  144. package/web/assets/SendToChatDialog-BxWsyv29.js +0 -1
  145. package/web/assets/ServiceControlsBar-DqDPAZt7.js +0 -1
  146. package/web/assets/ServiceDetailPage-hkSAzZ-l.js +0 -2
  147. package/web/assets/ServiceFormPage-DXqhqXg8.js +0 -1
  148. package/web/assets/SettingsPage-DS2YhMIM.js +0 -2086
  149. package/web/assets/UnlockPage-s8SgVcKk.js +0 -1
  150. package/web/assets/VaultMigrationPage-s0b44MDM.js +0 -1
  151. package/web/assets/WikiView-DtGwIt_Q.js +0 -1
  152. package/web/assets/cloud-chat.store-b-BHGz7I.js +0 -1
  153. package/web/assets/editor.store-DCAZSeVG.js +0 -1
  154. package/web/assets/floating-ui.dom-DWhsZyqT.js +0 -1
  155. package/web/assets/i18n-D0afQEGs.js +0 -1
  156. package/web/assets/index-D8VRbyoP.js +0 -309
  157. package/web/assets/index-DsezNbSM.css +0 -1
  158. package/web/assets/modal-qYgTMkYb.js +0 -5
  159. package/web/assets/scenario.store-YWHL2_wu.js +0 -7
  160. package/web/assets/settings-scope-Bv7QGPrt.js +0 -1
  161. package/web/assets/settings.store-bEsB7oKb.js +0 -1
  162. package/web/assets/src--GO-VSJ0.js +0 -5
  163. package/web/assets/src-C-D_y7ou.js +0 -1
  164. package/web/assets/useEnvVarAutocomplete-BqGTODUv.js +0 -1
  165. package/web/assets/useProjectCatalog-yocjIKt6.js +0 -1
  166. package/web/assets/vue-draggable-plus-BHsveB8w.css +0 -1
  167. package/web/assets/vue-draggable-plus-DX4rTBiu.js +0 -1
  168. /package/{agent-manager-R7BPQO6D.js.map → agent-manager-46C4NIQ2.js.map} +0 -0
  169. /package/{chat-LPML22J5.js.map → chat-CMNDMXIP.js.map} +0 -0
  170. /package/{companion-W3UMZWGH.js.map → companion-XKMNRIJB.js.map} +0 -0
  171. /package/{install-gate-PVMGJDWE.js.map → install-gate-OJJEUU4E.js.map} +0 -0
@@ -0,0 +1,14 @@
1
+ import{B as e,C as t,N as n}from"./reactivity.esm-bundler-BQ9SB2vv.js";import{Ct as r,D as i,E as a,Ht as o,J as s,Lt as c,Nt as l,Ut as u,Yt as d,_ as f,b as p,bt as m,ct as h,en as g,et as _,ft as v,g as y,gt as b,k as x,mt as S,nn as C,o as w,qt as T,rn as E,tn as ee,tt as D,v as O,wt as k,xt as A,y as j,z as te}from"./runtime-core.esm-bundler-DujKY9QV.js";import{C as ne,t as re,w as ie}from"./runtime-dom.esm-bundler-CyEVRK6B.js";import{n as ae}from"./vue-i18n-o7yraQpR.js";import{a as oe}from"./project-launch.store-CTmbl8UY.js";import{g as se,h as ce}from"./useApi-s_02lHjl-DZYO2tHU.js";import{C as le,J as M,O as N,P as ue,S as P,Y as de,a as fe,c as pe,dt as F,ft as me,q as he}from"./src-DIBHat7I.js";import{i as ge,n as _e,o as ve,t as ye}from"./scenario.store-BIFQPXgl.js";import{r as be}from"./trpc-BAZGRZBD.js";import{a as xe,g as Se,p as Ce}from"./schemas-68I2iCLF.js";import{o as we,s as Te}from"./dist-N4nrnbnA.js";import{A as Ee,C as De,D as Oe,E as ke,O as Ae,S as je,T as Me,j as Ne,k as Pe,w as Fe,x as Ie}from"./index-Ci2CNnit.js";import{t as Le}from"./uuid-XipkJWQw.js";var Re={name:`ControlButton`,compatConfig:{MODE:3}},ze=(e,t)=>{let n=e.__vccOpts||e;for(let[e,r]of t)n[e]=r;return n},I={type:`button`,class:`vue-flow__controls-button`};function L(e,t,n,r,i,a){return S(),p(`button`,I,[A(e.$slots,`default`)])}var Be=ze(Re,[[`render`,L]]),Ve={xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 32 32`},He=[f(`path`,{d:`M32 18.133H18.133V32h-4.266V18.133H0v-4.266h13.867V0h4.266v13.867H32z`},null,-1)];function Ue(e,t){return S(),p(`svg`,Ve,He)}var R={render:Ue},We={xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 32 5`},Ge=[f(`path`,{d:`M0 0h32v4.2H0z`},null,-1)];function Ke(e,t){return S(),p(`svg`,We,Ge)}var qe={render:Ke},Je={xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 32 30`},Ye=[f(`path`,{d:`M3.692 4.63c0-.53.4-.938.939-.938h5.215V0H4.708C2.13 0 0 2.054 0 4.63v5.216h3.692V4.631zM27.354 0h-5.2v3.692h5.17c.53 0 .984.4.984.939v5.215H32V4.631A4.624 4.624 0 0 0 27.354 0zm.954 24.83c0 .532-.4.94-.939.94h-5.215v3.768h5.215c2.577 0 4.631-2.13 4.631-4.707v-5.139h-3.692v5.139zm-23.677.94a.919.919 0 0 1-.939-.94v-5.138H0v5.139c0 2.577 2.13 4.707 4.708 4.707h5.138V25.77H4.631z`},null,-1)];function Xe(e,t){return S(),p(`svg`,Je,Ye)}var Ze={render:Xe},Qe={xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 25 32`},$e=[f(`path`,{d:`M21.333 10.667H19.81V7.619C19.81 3.429 16.38 0 12.19 0 8 0 4.571 3.429 4.571 7.619v3.048H3.048A3.056 3.056 0 0 0 0 13.714v15.238A3.056 3.056 0 0 0 3.048 32h18.285a3.056 3.056 0 0 0 3.048-3.048V13.714a3.056 3.056 0 0 0-3.048-3.047zM12.19 24.533a3.056 3.056 0 0 1-3.047-3.047 3.056 3.056 0 0 1 3.047-3.048 3.056 3.056 0 0 1 3.048 3.048 3.056 3.056 0 0 1-3.048 3.047zm4.724-13.866H7.467V7.619c0-2.59 2.133-4.724 4.723-4.724 2.591 0 4.724 2.133 4.724 4.724v3.048z`},null,-1)];function et(e,t){return S(),p(`svg`,Qe,$e)}var tt={render:et},z={xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 25 32`},B=[f(`path`,{d:`M21.333 10.667H19.81V7.619C19.81 3.429 16.38 0 12.19 0c-4.114 1.828-1.37 2.133.305 2.438 1.676.305 4.42 2.59 4.42 5.181v3.048H3.047A3.056 3.056 0 0 0 0 13.714v15.238A3.056 3.056 0 0 0 3.048 32h18.285a3.056 3.056 0 0 0 3.048-3.048V13.714a3.056 3.056 0 0 0-3.048-3.047zM12.19 24.533a3.056 3.056 0 0 1-3.047-3.047 3.056 3.056 0 0 1 3.047-3.048 3.056 3.056 0 0 1 3.048 3.048 3.056 3.056 0 0 1-3.048 3.047z`},null,-1)];function V(e,t){return S(),p(`svg`,z,B)}var H={render:V},nt=x({name:`Controls`,compatConfig:{MODE:3},props:{showZoom:{type:Boolean,default:!0},showFitView:{type:Boolean,default:!0},showInteractive:{type:Boolean,default:!0},fitViewParams:{},position:{default:()=>De.BottomLeft}},emits:[`zoomIn`,`zoomOut`,`fitView`,`interactionChange`],setup(t,{emit:r}){let{nodesDraggable:a,nodesConnectable:o,elementsSelectable:s,setInteractive:c,zoomIn:l,zoomOut:u,fitView:d,viewport:f,minZoom:m,maxZoom:h}=Ee(),g=n(()=>a.value||o.value||s.value),_=n(()=>f.value.zoom<=m.value),v=n(()=>f.value.zoom>=h.value);function y(){l(),r(`zoomIn`)}function b(){u(),r(`zoomOut`)}function x(){d(t.fitViewParams),r(`fitView`)}function C(){c(!g.value),r(`interactionChange`,!g.value)}return(t,n)=>(S(),O(e(Fe),{class:`vue-flow__controls`,position:t.position},{default:T(()=>[A(t.$slots,`top`),t.showZoom?(S(),p(w,{key:0},[A(t.$slots,`control-zoom-in`,{},()=>[i(Be,{class:`vue-flow__controls-zoomin`,disabled:v.value,onClick:y},{default:T(()=>[A(t.$slots,`icon-zoom-in`,{},()=>[(S(),O(k(e(R))))])]),_:3},8,[`disabled`])]),A(t.$slots,`control-zoom-out`,{},()=>[i(Be,{class:`vue-flow__controls-zoomout`,disabled:_.value,onClick:b},{default:T(()=>[A(t.$slots,`icon-zoom-out`,{},()=>[(S(),O(k(e(qe))))])]),_:3},8,[`disabled`])])],64)):j(``,!0),t.showFitView?A(t.$slots,`control-fit-view`,{key:1},()=>[i(Be,{class:`vue-flow__controls-fitview`,onClick:x},{default:T(()=>[A(t.$slots,`icon-fit-view`,{},()=>[(S(),O(k(e(Ze))))])]),_:3})]):j(``,!0),t.showInteractive?A(t.$slots,`control-interactive`,{key:2},()=>[t.showInteractive?(S(),O(Be,{key:0,class:`vue-flow__controls-interactive`,onClick:C},{default:T(()=>[g.value?A(t.$slots,`icon-unlock`,{key:0},()=>[(S(),O(k(e(H))))]):j(``,!0),g.value?j(``,!0):A(t.$slots,`icon-lock`,{key:1},()=>[(S(),O(k(e(tt))))])]),_:3})):j(``,!0)]):j(``,!0),A(t.$slots,`default`)]),_:3},8,[`position`]))}}),rt={value:()=>{}};function U(){for(var e=0,t=arguments.length,n={},r;e<t;++e){if(!(r=arguments[e]+``)||r in n||/[\s.]/.test(r))throw Error(`illegal type: `+r);n[r]=[]}return new it(n)}function it(e){this._=e}function at(e,t){return e.trim().split(/^|\s+/).map(function(e){var n=``,r=e.indexOf(`.`);if(r>=0&&(n=e.slice(r+1),e=e.slice(0,r)),e&&!t.hasOwnProperty(e))throw Error(`unknown type: `+e);return{type:e,name:n}})}it.prototype=U.prototype={constructor:it,on:function(e,t){var n=this._,r=at(e+``,n),i,a=-1,o=r.length;if(arguments.length<2){for(;++a<o;)if((i=(e=r[a]).type)&&(i=ot(n[i],e.name)))return i;return}if(t!=null&&typeof t!=`function`)throw Error(`invalid callback: `+t);for(;++a<o;)if(i=(e=r[a]).type)n[i]=st(n[i],e.name,t);else if(t==null)for(i in n)n[i]=st(n[i],e.name,null);return this},copy:function(){var e={},t=this._;for(var n in t)e[n]=t[n].slice();return new it(e)},call:function(e,t){if((i=arguments.length-2)>0)for(var n=Array(i),r=0,i,a;r<i;++r)n[r]=arguments[r+2];if(!this._.hasOwnProperty(e))throw Error(`unknown type: `+e);for(a=this._[e],r=0,i=a.length;r<i;++r)a[r].value.apply(t,n)},apply:function(e,t,n){if(!this._.hasOwnProperty(e))throw Error(`unknown type: `+e);for(var r=this._[e],i=0,a=r.length;i<a;++i)r[i].value.apply(t,n)}};function ot(e,t){for(var n=0,r=e.length,i;n<r;++n)if((i=e[n]).name===t)return i.value}function st(e,t,n){for(var r=0,i=e.length;r<i;++r)if(e[r].name===t){e[r]=rt,e=e.slice(0,r).concat(e.slice(r+1));break}return n!=null&&e.push({name:t,value:n}),e}var ct=`http://www.w3.org/1999/xhtml`,lt={svg:`http://www.w3.org/2000/svg`,xhtml:ct,xlink:`http://www.w3.org/1999/xlink`,xml:`http://www.w3.org/XML/1998/namespace`,xmlns:`http://www.w3.org/2000/xmlns/`};function ut(e){var t=e+=``,n=t.indexOf(`:`);return n>=0&&(t=e.slice(0,n))!==`xmlns`&&(e=e.slice(n+1)),lt.hasOwnProperty(t)?{space:lt[t],local:e}:e}function dt(e){return function(){var t=this.ownerDocument,n=this.namespaceURI;return n===ct&&t.documentElement.namespaceURI===ct?t.createElement(e):t.createElementNS(n,e)}}function ft(e){return function(){return this.ownerDocument.createElementNS(e.space,e.local)}}function pt(e){var t=ut(e);return(t.local?ft:dt)(t)}function mt(){}function ht(e){return e==null?mt:function(){return this.querySelector(e)}}function gt(e){typeof e!=`function`&&(e=ht(e));for(var t=this._groups,n=t.length,r=Array(n),i=0;i<n;++i)for(var a=t[i],o=a.length,s=r[i]=Array(o),c,l,u=0;u<o;++u)(c=a[u])&&(l=e.call(c,c.__data__,u,a))&&(`__data__`in c&&(l.__data__=c.__data__),s[u]=l);return new J(r,this._parents)}function _t(e){return e==null?[]:Array.isArray(e)?e:Array.from(e)}function vt(){return[]}function yt(e){return e==null?vt:function(){return this.querySelectorAll(e)}}function bt(e){return function(){return _t(e.apply(this,arguments))}}function W(e){e=typeof e==`function`?bt(e):yt(e);for(var t=this._groups,n=t.length,r=[],i=[],a=0;a<n;++a)for(var o=t[a],s=o.length,c,l=0;l<s;++l)(c=o[l])&&(r.push(e.call(c,c.__data__,l,o)),i.push(c));return new J(r,i)}function xt(e){return function(){return this.matches(e)}}function St(e){return function(t){return t.matches(e)}}var Ct=Array.prototype.find;function wt(e){return function(){return Ct.call(this.children,e)}}function G(){return this.firstElementChild}function Tt(e){return this.select(e==null?G:wt(typeof e==`function`?e:St(e)))}var Et=Array.prototype.filter;function K(){return Array.from(this.children)}function Dt(e){return function(){return Et.call(this.children,e)}}function Ot(e){return this.selectAll(e==null?K:Dt(typeof e==`function`?e:St(e)))}function kt(e){typeof e!=`function`&&(e=xt(e));for(var t=this._groups,n=t.length,r=Array(n),i=0;i<n;++i)for(var a=t[i],o=a.length,s=r[i]=[],c,l=0;l<o;++l)(c=a[l])&&e.call(c,c.__data__,l,a)&&s.push(c);return new J(r,this._parents)}function At(e){return Array(e.length)}function jt(){return new J(this._enter||this._groups.map(At),this._parents)}function Mt(e,t){this.ownerDocument=e.ownerDocument,this.namespaceURI=e.namespaceURI,this._next=null,this._parent=e,this.__data__=t}Mt.prototype={constructor:Mt,appendChild:function(e){return this._parent.insertBefore(e,this._next)},insertBefore:function(e,t){return this._parent.insertBefore(e,t)},querySelector:function(e){return this._parent.querySelector(e)},querySelectorAll:function(e){return this._parent.querySelectorAll(e)}};function Nt(e){return function(){return e}}function Pt(e,t,n,r,i,a){for(var o=0,s,c=t.length,l=a.length;o<l;++o)(s=t[o])?(s.__data__=a[o],r[o]=s):n[o]=new Mt(e,a[o]);for(;o<c;++o)(s=t[o])&&(i[o]=s)}function Ft(e,t,n,r,i,a,o){var s,c,l=new Map,u=t.length,d=a.length,f=Array(u),p;for(s=0;s<u;++s)(c=t[s])&&(f[s]=p=o.call(c,c.__data__,s,t)+``,l.has(p)?i[s]=c:l.set(p,c));for(s=0;s<d;++s)p=o.call(e,a[s],s,a)+``,(c=l.get(p))?(r[s]=c,c.__data__=a[s],l.delete(p)):n[s]=new Mt(e,a[s]);for(s=0;s<u;++s)(c=t[s])&&l.get(f[s])===c&&(i[s]=c)}function It(e){return e.__data__}function Lt(e,t){if(!arguments.length)return Array.from(this,It);var n=t?Ft:Pt,r=this._parents,i=this._groups;typeof e!=`function`&&(e=Nt(e));for(var a=i.length,o=Array(a),s=Array(a),c=Array(a),l=0;l<a;++l){var u=r[l],d=i[l],f=d.length,p=Rt(e.call(u,u&&u.__data__,l,r)),m=p.length,h=s[l]=Array(m),g=o[l]=Array(m);n(u,d,h,g,c[l]=Array(f),p,t);for(var _=0,v=0,y,b;_<m;++_)if(y=h[_]){for(_>=v&&(v=_+1);!(b=g[v])&&++v<m;);y._next=b||null}}return o=new J(o,r),o._enter=s,o._exit=c,o}function Rt(e){return typeof e==`object`&&`length`in e?e:Array.from(e)}function zt(){return new J(this._exit||this._groups.map(At),this._parents)}function Bt(e,t,n){var r=this.enter(),i=this,a=this.exit();return typeof e==`function`?(r=e(r),r&&=r.selection()):r=r.append(e+``),t!=null&&(i=t(i),i&&=i.selection()),n==null?a.remove():n(a),r&&i?r.merge(i).order():i}function Vt(e){for(var t=e.selection?e.selection():e,n=this._groups,r=t._groups,i=n.length,a=r.length,o=Math.min(i,a),s=Array(i),c=0;c<o;++c)for(var l=n[c],u=r[c],d=l.length,f=s[c]=Array(d),p,m=0;m<d;++m)(p=l[m]||u[m])&&(f[m]=p);for(;c<i;++c)s[c]=n[c];return new J(s,this._parents)}function q(){for(var e=this._groups,t=-1,n=e.length;++t<n;)for(var r=e[t],i=r.length-1,a=r[i],o;--i>=0;)(o=r[i])&&(a&&o.compareDocumentPosition(a)^4&&a.parentNode.insertBefore(o,a),a=o);return this}function Ht(e){e||=Ut;function t(t,n){return t&&n?e(t.__data__,n.__data__):!t-!n}for(var n=this._groups,r=n.length,i=Array(r),a=0;a<r;++a){for(var o=n[a],s=o.length,c=i[a]=Array(s),l,u=0;u<s;++u)(l=o[u])&&(c[u]=l);c.sort(t)}return new J(i,this._parents).order()}function Ut(e,t){return e<t?-1:e>t?1:e>=t?0:NaN}function Wt(){var e=arguments[0];return arguments[0]=this,e.apply(null,arguments),this}function Gt(){return Array.from(this)}function Kt(){for(var e=this._groups,t=0,n=e.length;t<n;++t)for(var r=e[t],i=0,a=r.length;i<a;++i){var o=r[i];if(o)return o}return null}function qt(){let e=0;for(let t of this)++e;return e}function Jt(){return!this.node()}function Yt(e){for(var t=this._groups,n=0,r=t.length;n<r;++n)for(var i=t[n],a=0,o=i.length,s;a<o;++a)(s=i[a])&&e.call(s,s.__data__,a,i);return this}function Xt(e){return function(){this.removeAttribute(e)}}function Zt(e){return function(){this.removeAttributeNS(e.space,e.local)}}function Qt(e,t){return function(){this.setAttribute(e,t)}}function $t(e,t){return function(){this.setAttributeNS(e.space,e.local,t)}}function en(e,t){return function(){var n=t.apply(this,arguments);n==null?this.removeAttribute(e):this.setAttribute(e,n)}}function tn(e,t){return function(){var n=t.apply(this,arguments);n==null?this.removeAttributeNS(e.space,e.local):this.setAttributeNS(e.space,e.local,n)}}function nn(e,t){var n=ut(e);if(arguments.length<2){var r=this.node();return n.local?r.getAttributeNS(n.space,n.local):r.getAttribute(n)}return this.each((t==null?n.local?Zt:Xt:typeof t==`function`?n.local?tn:en:n.local?$t:Qt)(n,t))}function rn(e){return e.ownerDocument&&e.ownerDocument.defaultView||e.document&&e||e.defaultView}function an(e){return function(){this.style.removeProperty(e)}}function on(e,t,n){return function(){this.style.setProperty(e,t,n)}}function sn(e,t,n){return function(){var r=t.apply(this,arguments);r==null?this.style.removeProperty(e):this.style.setProperty(e,r,n)}}function cn(e,t,n){return arguments.length>1?this.each((t==null?an:typeof t==`function`?sn:on)(e,t,n??``)):ln(this.node(),e)}function ln(e,t){return e.style.getPropertyValue(t)||rn(e).getComputedStyle(e,null).getPropertyValue(t)}function un(e){return function(){delete this[e]}}function dn(e,t){return function(){this[e]=t}}function fn(e,t){return function(){var n=t.apply(this,arguments);n==null?delete this[e]:this[e]=n}}function pn(e,t){return arguments.length>1?this.each((t==null?un:typeof t==`function`?fn:dn)(e,t)):this.node()[e]}function mn(e){return e.trim().split(/^|\s+/)}function hn(e){return e.classList||new gn(e)}function gn(e){this._node=e,this._names=mn(e.getAttribute(`class`)||``)}gn.prototype={add:function(e){this._names.indexOf(e)<0&&(this._names.push(e),this._node.setAttribute(`class`,this._names.join(` `)))},remove:function(e){var t=this._names.indexOf(e);t>=0&&(this._names.splice(t,1),this._node.setAttribute(`class`,this._names.join(` `)))},contains:function(e){return this._names.indexOf(e)>=0}};function _n(e,t){for(var n=hn(e),r=-1,i=t.length;++r<i;)n.add(t[r])}function vn(e,t){for(var n=hn(e),r=-1,i=t.length;++r<i;)n.remove(t[r])}function yn(e){return function(){_n(this,e)}}function bn(e){return function(){vn(this,e)}}function xn(e,t){return function(){(t.apply(this,arguments)?_n:vn)(this,e)}}function Sn(e,t){var n=mn(e+``);if(arguments.length<2){for(var r=hn(this.node()),i=-1,a=n.length;++i<a;)if(!r.contains(n[i]))return!1;return!0}return this.each((typeof t==`function`?xn:t?yn:bn)(n,t))}function Cn(){this.textContent=``}function wn(e){return function(){this.textContent=e}}function Tn(e){return function(){var t=e.apply(this,arguments);this.textContent=t??``}}function En(e){return arguments.length?this.each(e==null?Cn:(typeof e==`function`?Tn:wn)(e)):this.node().textContent}function Dn(){this.innerHTML=``}function On(e){return function(){this.innerHTML=e}}function kn(e){return function(){var t=e.apply(this,arguments);this.innerHTML=t??``}}function An(e){return arguments.length?this.each(e==null?Dn:(typeof e==`function`?kn:On)(e)):this.node().innerHTML}function jn(){this.nextSibling&&this.parentNode.appendChild(this)}function Mn(){return this.each(jn)}function Nn(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}function Pn(){return this.each(Nn)}function Fn(e){var t=typeof e==`function`?e:pt(e);return this.select(function(){return this.appendChild(t.apply(this,arguments))})}function In(){return null}function Ln(e,t){var n=typeof e==`function`?e:pt(e),r=t==null?In:typeof t==`function`?t:ht(t);return this.select(function(){return this.insertBefore(n.apply(this,arguments),r.apply(this,arguments)||null)})}function Rn(){var e=this.parentNode;e&&e.removeChild(this)}function zn(){return this.each(Rn)}function Bn(){var e=this.cloneNode(!1),t=this.parentNode;return t?t.insertBefore(e,this.nextSibling):e}function Vn(){var e=this.cloneNode(!0),t=this.parentNode;return t?t.insertBefore(e,this.nextSibling):e}function Hn(e){return this.select(e?Vn:Bn)}function Un(e){return arguments.length?this.property(`__data__`,e):this.node().__data__}function Wn(e){return function(t){e.call(this,t,this.__data__)}}function Gn(e){return e.trim().split(/^|\s+/).map(function(e){var t=``,n=e.indexOf(`.`);return n>=0&&(t=e.slice(n+1),e=e.slice(0,n)),{type:e,name:t}})}function Kn(e){return function(){var t=this.__on;if(t){for(var n=0,r=-1,i=t.length,a;n<i;++n)a=t[n],(!e.type||a.type===e.type)&&a.name===e.name?this.removeEventListener(a.type,a.listener,a.options):t[++r]=a;++r?t.length=r:delete this.__on}}}function qn(e,t,n){return function(){var r=this.__on,i,a=Wn(t);if(r){for(var o=0,s=r.length;o<s;++o)if((i=r[o]).type===e.type&&i.name===e.name){this.removeEventListener(i.type,i.listener,i.options),this.addEventListener(i.type,i.listener=a,i.options=n),i.value=t;return}}this.addEventListener(e.type,a,n),i={type:e.type,name:e.name,value:t,listener:a,options:n},r?r.push(i):this.__on=[i]}}function Jn(e,t,n){var r=Gn(e+``),i,a=r.length,o;if(arguments.length<2){var s=this.node().__on;if(s){for(var c=0,l=s.length,u;c<l;++c)for(i=0,u=s[c];i<a;++i)if((o=r[i]).type===u.type&&o.name===u.name)return u.value}return}for(s=t?qn:Kn,i=0;i<a;++i)this.each(s(r[i],t,n));return this}function Yn(e,t,n){var r=rn(e),i=r.CustomEvent;typeof i==`function`?i=new i(t,n):(i=r.document.createEvent(`Event`),n?(i.initEvent(t,n.bubbles,n.cancelable),i.detail=n.detail):i.initEvent(t,!1,!1)),e.dispatchEvent(i)}function Xn(e,t){return function(){return Yn(this,e,t)}}function Zn(e,t){return function(){return Yn(this,e,t.apply(this,arguments))}}function Qn(e,t){return this.each((typeof t==`function`?Zn:Xn)(e,t))}function*$n(){for(var e=this._groups,t=0,n=e.length;t<n;++t)for(var r=e[t],i=0,a=r.length,o;i<a;++i)(o=r[i])&&(yield o)}var er=[null];function J(e,t){this._groups=e,this._parents=t}function tr(){return new J([[document.documentElement]],er)}function nr(){return this}J.prototype=tr.prototype={constructor:J,select:gt,selectAll:W,selectChild:Tt,selectChildren:Ot,filter:kt,data:Lt,enter:jt,exit:zt,join:Bt,merge:Vt,selection:nr,order:q,sort:Ht,call:Wt,nodes:Gt,node:Kt,size:qt,empty:Jt,each:Yt,attr:nn,style:cn,property:pn,classed:Sn,text:En,html:An,raise:Mn,lower:Pn,append:Fn,insert:Ln,remove:zn,clone:Hn,datum:Un,on:Jn,dispatch:Qn,[Symbol.iterator]:$n};function rr(e){return typeof e==`string`?new J([[document.querySelector(e)]],[document.documentElement]):new J([[e]],er)}function ir(e){let t;for(;t=e.sourceEvent;)e=t;return e}function ar(e,t){if(e=ir(e),t===void 0&&(t=e.currentTarget),t){var n=t.ownerSVGElement||t;if(n.createSVGPoint){var r=n.createSVGPoint();return r.x=e.clientX,r.y=e.clientY,r=r.matrixTransform(t.getScreenCTM().inverse()),[r.x,r.y]}if(t.getBoundingClientRect){var i=t.getBoundingClientRect();return[e.clientX-i.left-t.clientLeft,e.clientY-i.top-t.clientTop]}}return[e.pageX,e.pageY]}var or={capture:!0,passive:!1};function sr(e){e.preventDefault(),e.stopImmediatePropagation()}function cr(e){var t=e.document.documentElement,n=rr(e).on(`dragstart.drag`,sr,or);`onselectstart`in t?n.on(`selectstart.drag`,sr,or):(t.__noselect=t.style.MozUserSelect,t.style.MozUserSelect=`none`)}function lr(e,t){var n=e.document.documentElement,r=rr(e).on(`dragstart.drag`,null);t&&(r.on(`click.drag`,sr,or),setTimeout(function(){r.on(`click.drag`,null)},0)),`onselectstart`in n?r.on(`selectstart.drag`,null):(n.style.MozUserSelect=n.__noselect,delete n.__noselect)}function ur(e,t,n){e.prototype=t.prototype=n,n.constructor=e}function dr(e,t){var n=Object.create(e.prototype);for(var r in t)n[r]=t[r];return n}function fr(){}var pr=.7,mr=1/pr,hr=`\\s*([+-]?\\d+)\\s*`,gr=`\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*`,Y=`\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*`,_r=/^#([0-9a-f]{3,8})$/,vr=RegExp(`^rgb\\(${hr},${hr},${hr}\\)$`),yr=RegExp(`^rgb\\(${Y},${Y},${Y}\\)$`),br=RegExp(`^rgba\\(${hr},${hr},${hr},${gr}\\)$`),xr=RegExp(`^rgba\\(${Y},${Y},${Y},${gr}\\)$`),Sr=RegExp(`^hsl\\(${gr},${Y},${Y}\\)$`),Cr=RegExp(`^hsla\\(${gr},${Y},${Y},${gr}\\)$`),wr={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};ur(fr,kr,{copy(e){return Object.assign(new this.constructor,this,e)},displayable(){return this.rgb().displayable()},hex:Tr,formatHex:Tr,formatHex8:Er,formatHsl:Dr,formatRgb:Or,toString:Or});function Tr(){return this.rgb().formatHex()}function Er(){return this.rgb().formatHex8()}function Dr(){return Vr(this).formatHsl()}function Or(){return this.rgb().formatRgb()}function kr(e){var t,n;return e=(e+``).trim().toLowerCase(),(t=_r.exec(e))?(n=t[1].length,t=parseInt(t[1],16),n===6?Ar(t):n===3?new X(t>>8&15|t>>4&240,t>>4&15|t&240,(t&15)<<4|t&15,1):n===8?jr(t>>24&255,t>>16&255,t>>8&255,(t&255)/255):n===4?jr(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|t&240,((t&15)<<4|t&15)/255):null):(t=vr.exec(e))?new X(t[1],t[2],t[3],1):(t=yr.exec(e))?new X(t[1]*255/100,t[2]*255/100,t[3]*255/100,1):(t=br.exec(e))?jr(t[1],t[2],t[3],t[4]):(t=xr.exec(e))?jr(t[1]*255/100,t[2]*255/100,t[3]*255/100,t[4]):(t=Sr.exec(e))?Br(t[1],t[2]/100,t[3]/100,1):(t=Cr.exec(e))?Br(t[1],t[2]/100,t[3]/100,t[4]):wr.hasOwnProperty(e)?Ar(wr[e]):e===`transparent`?new X(NaN,NaN,NaN,0):null}function Ar(e){return new X(e>>16&255,e>>8&255,e&255,1)}function jr(e,t,n,r){return r<=0&&(e=t=n=NaN),new X(e,t,n,r)}function Mr(e){return e instanceof fr||(e=kr(e)),e?(e=e.rgb(),new X(e.r,e.g,e.b,e.opacity)):new X}function Nr(e,t,n,r){return arguments.length===1?Mr(e):new X(e,t,n,r??1)}function X(e,t,n,r){this.r=+e,this.g=+t,this.b=+n,this.opacity=+r}ur(X,Nr,dr(fr,{brighter(e){return e=e==null?mr:mr**+e,new X(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=e==null?pr:pr**+e,new X(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new X(Rr(this.r),Rr(this.g),Rr(this.b),Lr(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:Pr,formatHex:Pr,formatHex8:Fr,formatRgb:Ir,toString:Ir}));function Pr(){return`#${zr(this.r)}${zr(this.g)}${zr(this.b)}`}function Fr(){return`#${zr(this.r)}${zr(this.g)}${zr(this.b)}${zr((isNaN(this.opacity)?1:this.opacity)*255)}`}function Ir(){let e=Lr(this.opacity);return`${e===1?`rgb(`:`rgba(`}${Rr(this.r)}, ${Rr(this.g)}, ${Rr(this.b)}${e===1?`)`:`, ${e})`}`}function Lr(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function Rr(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function zr(e){return e=Rr(e),(e<16?`0`:``)+e.toString(16)}function Br(e,t,n,r){return r<=0?e=t=n=NaN:n<=0||n>=1?e=t=NaN:t<=0&&(e=NaN),new Z(e,t,n,r)}function Vr(e){if(e instanceof Z)return new Z(e.h,e.s,e.l,e.opacity);if(e instanceof fr||(e=kr(e)),!e)return new Z;if(e instanceof Z)return e;e=e.rgb();var t=e.r/255,n=e.g/255,r=e.b/255,i=Math.min(t,n,r),a=Math.max(t,n,r),o=NaN,s=a-i,c=(a+i)/2;return s?(o=t===a?(n-r)/s+(n<r)*6:n===a?(r-t)/s+2:(t-n)/s+4,s/=c<.5?a+i:2-a-i,o*=60):s=c>0&&c<1?0:o,new Z(o,s,c,e.opacity)}function Hr(e,t,n,r){return arguments.length===1?Vr(e):new Z(e,t,n,r??1)}function Z(e,t,n,r){this.h=+e,this.s=+t,this.l=+n,this.opacity=+r}ur(Z,Hr,dr(fr,{brighter(e){return e=e==null?mr:mr**+e,new Z(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?pr:pr**+e,new Z(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+(this.h<0)*360,t=isNaN(e)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*t,i=2*n-r;return new X(Gr(e>=240?e-240:e+120,i,r),Gr(e,i,r),Gr(e<120?e+240:e-120,i,r),this.opacity)},clamp(){return new Z(Ur(this.h),Wr(this.s),Wr(this.l),Lr(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){let e=Lr(this.opacity);return`${e===1?`hsl(`:`hsla(`}${Ur(this.h)}, ${Wr(this.s)*100}%, ${Wr(this.l)*100}%${e===1?`)`:`, ${e})`}`}}));function Ur(e){return e=(e||0)%360,e<0?e+360:e}function Wr(e){return Math.max(0,Math.min(1,e||0))}function Gr(e,t,n){return(e<60?t+(n-t)*e/60:e<180?n:e<240?t+(n-t)*(240-e)/60:t)*255}var Kr=e=>()=>e;function qr(e,t){return function(n){return e+n*t}}function Jr(e,t,n){return e**=+n,t=t**+n-e,n=1/n,function(r){return(e+r*t)**+n}}function Yr(e){return(e=+e)==1?Xr:function(t,n){return n-t?Jr(t,n,e):Kr(isNaN(t)?n:t)}}function Xr(e,t){var n=t-e;return n?qr(e,n):Kr(isNaN(e)?t:e)}var Zr=function e(t){var n=Yr(t);function r(e,t){var r=n((e=Nr(e)).r,(t=Nr(t)).r),i=n(e.g,t.g),a=n(e.b,t.b),o=Xr(e.opacity,t.opacity);return function(t){return e.r=r(t),e.g=i(t),e.b=a(t),e.opacity=o(t),e+``}}return r.gamma=e,r}(1);function Qr(e,t){return e=+e,t=+t,function(n){return e*(1-n)+t*n}}var $r=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,ei=new RegExp($r.source,`g`);function ti(e){return function(){return e}}function ni(e){return function(t){return e(t)+``}}function ri(e,t){var n=$r.lastIndex=ei.lastIndex=0,r,i,a,o=-1,s=[],c=[];for(e+=``,t+=``;(r=$r.exec(e))&&(i=ei.exec(t));)(a=i.index)>n&&(a=t.slice(n,a),s[o]?s[o]+=a:s[++o]=a),(r=r[0])===(i=i[0])?s[o]?s[o]+=i:s[++o]=i:(s[++o]=null,c.push({i:o,x:Qr(r,i)})),n=ei.lastIndex;return n<t.length&&(a=t.slice(n),s[o]?s[o]+=a:s[++o]=a),s.length<2?c[0]?ni(c[0].x):ti(t):(t=c.length,function(e){for(var n=0,r;n<t;++n)s[(r=c[n]).i]=r.x(e);return s.join(``)})}var ii=180/Math.PI,ai={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function oi(e,t,n,r,i,a){var o,s,c;return(o=Math.sqrt(e*e+t*t))&&(e/=o,t/=o),(c=e*n+t*r)&&(n-=e*c,r-=t*c),(s=Math.sqrt(n*n+r*r))&&(n/=s,r/=s,c/=s),e*r<t*n&&(e=-e,t=-t,c=-c,o=-o),{translateX:i,translateY:a,rotate:Math.atan2(t,e)*ii,skewX:Math.atan(c)*ii,scaleX:o,scaleY:s}}var si;function ci(e){let t=new(typeof DOMMatrix==`function`?DOMMatrix:WebKitCSSMatrix)(e+``);return t.isIdentity?ai:oi(t.a,t.b,t.c,t.d,t.e,t.f)}function li(e){return e==null||(si||=document.createElementNS(`http://www.w3.org/2000/svg`,`g`),si.setAttribute(`transform`,e),!(e=si.transform.baseVal.consolidate()))?ai:(e=e.matrix,oi(e.a,e.b,e.c,e.d,e.e,e.f))}function ui(e,t,n,r){function i(e){return e.length?e.pop()+` `:``}function a(e,r,i,a,o,s){if(e!==i||r!==a){var c=o.push(`translate(`,null,t,null,n);s.push({i:c-4,x:Qr(e,i)},{i:c-2,x:Qr(r,a)})}else(i||a)&&o.push(`translate(`+i+t+a+n)}function o(e,t,n,a){e===t?t&&n.push(i(n)+`rotate(`+t+r):(e-t>180?t+=360:t-e>180&&(e+=360),a.push({i:n.push(i(n)+`rotate(`,null,r)-2,x:Qr(e,t)}))}function s(e,t,n,a){e===t?t&&n.push(i(n)+`skewX(`+t+r):a.push({i:n.push(i(n)+`skewX(`,null,r)-2,x:Qr(e,t)})}function c(e,t,n,r,a,o){if(e!==n||t!==r){var s=a.push(i(a)+`scale(`,null,`,`,null,`)`);o.push({i:s-4,x:Qr(e,n)},{i:s-2,x:Qr(t,r)})}else(n!==1||r!==1)&&a.push(i(a)+`scale(`+n+`,`+r+`)`)}return function(t,n){var r=[],i=[];return t=e(t),n=e(n),a(t.translateX,t.translateY,n.translateX,n.translateY,r,i),o(t.rotate,n.rotate,r,i),s(t.skewX,n.skewX,r,i),c(t.scaleX,t.scaleY,n.scaleX,n.scaleY,r,i),t=n=null,function(e){for(var t=-1,n=i.length,a;++t<n;)r[(a=i[t]).i]=a.x(e);return r.join(``)}}}var di=ui(ci,`px, `,`px)`,`deg)`),fi=ui(li,`, `,`)`,`)`),pi=1e-12;function mi(e){return((e=Math.exp(e))+1/e)/2}function hi(e){return((e=Math.exp(e))-1/e)/2}function gi(e){return((e=Math.exp(2*e))-1)/(e+1)}var _i=function e(t,n,r){function i(e,i){var a=e[0],o=e[1],s=e[2],c=i[0],l=i[1],u=i[2],d=c-a,f=l-o,p=d*d+f*f,m,h;if(p<pi)h=Math.log(u/s)/t,m=function(e){return[a+e*d,o+e*f,s*Math.exp(t*e*h)]};else{var g=Math.sqrt(p),_=(u*u-s*s+r*p)/(2*s*n*g),v=(u*u-s*s-r*p)/(2*u*n*g),y=Math.log(Math.sqrt(_*_+1)-_);h=(Math.log(Math.sqrt(v*v+1)-v)-y)/t,m=function(e){var r=e*h,i=mi(y),c=s/(n*g)*(i*gi(t*r+y)-hi(y));return[a+c*d,o+c*f,s*i/mi(t*r+y)]}}return m.duration=h*1e3*t/Math.SQRT2,m}return i.rho=function(t){var n=Math.max(.001,+t),r=n*n;return e(n,r,r*r)},i}(Math.SQRT2,2,4),vi=0,yi=0,bi=0,xi=1e3,Si,Ci,wi=0,Ti=0,Ei=0,Di=typeof performance==`object`&&performance.now?performance:Date,Oi=typeof window==`object`&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(e){setTimeout(e,17)};function ki(){return Ti||=(Oi(Ai),Di.now()+Ei)}function Ai(){Ti=0}function ji(){this._call=this._time=this._next=null}ji.prototype=Mi.prototype={constructor:ji,restart:function(e,t,n){if(typeof e!=`function`)throw TypeError(`callback is not a function`);n=(n==null?ki():+n)+(t==null?0:+t),!this._next&&Ci!==this&&(Ci?Ci._next=this:Si=this,Ci=this),this._call=e,this._time=n,Li()},stop:function(){this._call&&(this._call=null,this._time=1/0,Li())}};function Mi(e,t,n){var r=new ji;return r.restart(e,t,n),r}function Ni(){ki(),++vi;for(var e=Si,t;e;)(t=Ti-e._time)>=0&&e._call.call(void 0,t),e=e._next;--vi}function Pi(){Ti=(wi=Di.now())+Ei,vi=yi=0;try{Ni()}finally{vi=0,Ii(),Ti=0}}function Fi(){var e=Di.now(),t=e-wi;t>xi&&(Ei-=t,wi=e)}function Ii(){for(var e,t=Si,n,r=1/0;t;)t._call?(r>t._time&&(r=t._time),e=t,t=t._next):(n=t._next,t._next=null,t=e?e._next=n:Si=n);Ci=e,Li(r)}function Li(e){vi||(yi&&=clearTimeout(yi),e-Ti>24?(e<1/0&&(yi=setTimeout(Pi,e-Di.now()-Ei)),bi&&=clearInterval(bi)):(bi||=(wi=Di.now(),setInterval(Fi,xi)),vi=1,Oi(Pi)))}function Ri(e,t,n){var r=new ji;return t=t==null?0:+t,r.restart(n=>{r.stop(),e(n+t)},t,n),r}var zi=U(`start`,`end`,`cancel`,`interrupt`),Bi=[],Vi=0,Hi=1,Ui=2,Wi=3,Gi=4,Ki=5,qi=6;function Ji(e,t,n,r,i,a){var o=e.__transition;if(!o)e.__transition={};else if(n in o)return;Xi(e,n,{name:t,index:r,group:i,on:zi,tween:Bi,time:a.time,delay:a.delay,duration:a.duration,ease:a.ease,timer:null,state:Vi})}function Yi(e,t){var n=$(e,t);if(n.state>Vi)throw Error(`too late; already scheduled`);return n}function Q(e,t){var n=$(e,t);if(n.state>Wi)throw Error(`too late; already running`);return n}function $(e,t){var n=e.__transition;if(!n||!(n=n[t]))throw Error(`transition not found`);return n}function Xi(e,t,n){var r=e.__transition,i;r[t]=n,n.timer=Mi(a,0,n.time);function a(e){n.state=Hi,n.timer.restart(o,n.delay,n.time),n.delay<=e&&o(e-n.delay)}function o(a){var l,u,d,f;if(n.state!==Hi)return c();for(l in r)if(f=r[l],f.name===n.name){if(f.state===Wi)return Ri(o);f.state===Gi?(f.state=qi,f.timer.stop(),f.on.call(`interrupt`,e,e.__data__,f.index,f.group),delete r[l]):+l<t&&(f.state=qi,f.timer.stop(),f.on.call(`cancel`,e,e.__data__,f.index,f.group),delete r[l])}if(Ri(function(){n.state===Wi&&(n.state=Gi,n.timer.restart(s,n.delay,n.time),s(a))}),n.state=Ui,n.on.call(`start`,e,e.__data__,n.index,n.group),n.state===Ui){for(n.state=Wi,i=Array(d=n.tween.length),l=0,u=-1;l<d;++l)(f=n.tween[l].value.call(e,e.__data__,n.index,n.group))&&(i[++u]=f);i.length=u+1}}function s(t){for(var r=t<n.duration?n.ease.call(null,t/n.duration):(n.timer.restart(c),n.state=Ki,1),a=-1,o=i.length;++a<o;)i[a].call(e,r);n.state===Ki&&(n.on.call(`end`,e,e.__data__,n.index,n.group),c())}function c(){for(var i in n.state=qi,n.timer.stop(),delete r[t],r)return;delete e.__transition}}function Zi(e,t){var n=e.__transition,r,i,a=!0,o;if(n){for(o in t=t==null?null:t+``,n){if((r=n[o]).name!==t){a=!1;continue}i=r.state>Ui&&r.state<Ki,r.state=qi,r.timer.stop(),r.on.call(i?`interrupt`:`cancel`,e,e.__data__,r.index,r.group),delete n[o]}a&&delete e.__transition}}function Qi(e){return this.each(function(){Zi(this,e)})}function $i(e,t){var n,r;return function(){var i=Q(this,e),a=i.tween;if(a!==n){r=n=a;for(var o=0,s=r.length;o<s;++o)if(r[o].name===t){r=r.slice(),r.splice(o,1);break}}i.tween=r}}function ea(e,t,n){var r,i;if(typeof n!=`function`)throw Error();return function(){var a=Q(this,e),o=a.tween;if(o!==r){i=(r=o).slice();for(var s={name:t,value:n},c=0,l=i.length;c<l;++c)if(i[c].name===t){i[c]=s;break}c===l&&i.push(s)}a.tween=i}}function ta(e,t){var n=this._id;if(e+=``,arguments.length<2){for(var r=$(this.node(),n).tween,i=0,a=r.length,o;i<a;++i)if((o=r[i]).name===e)return o.value;return null}return this.each((t==null?$i:ea)(n,e,t))}function na(e,t,n){var r=e._id;return e.each(function(){var e=Q(this,r);(e.value||={})[t]=n.apply(this,arguments)}),function(e){return $(e,r).value[t]}}function ra(e,t){var n;return(typeof t==`number`?Qr:t instanceof kr?Zr:(n=kr(t))?(t=n,Zr):ri)(e,t)}function ia(e){return function(){this.removeAttribute(e)}}function aa(e){return function(){this.removeAttributeNS(e.space,e.local)}}function oa(e,t,n){var r,i=n+``,a;return function(){var o=this.getAttribute(e);return o===i?null:o===r?a:a=t(r=o,n)}}function sa(e,t,n){var r,i=n+``,a;return function(){var o=this.getAttributeNS(e.space,e.local);return o===i?null:o===r?a:a=t(r=o,n)}}function ca(e,t,n){var r,i,a;return function(){var o,s=n(this),c;return s==null?void this.removeAttribute(e):(o=this.getAttribute(e),c=s+``,o===c?null:o===r&&c===i?a:(i=c,a=t(r=o,s)))}}function la(e,t,n){var r,i,a;return function(){var o,s=n(this),c;return s==null?void this.removeAttributeNS(e.space,e.local):(o=this.getAttributeNS(e.space,e.local),c=s+``,o===c?null:o===r&&c===i?a:(i=c,a=t(r=o,s)))}}function ua(e,t){var n=ut(e),r=n===`transform`?fi:ra;return this.attrTween(e,typeof t==`function`?(n.local?la:ca)(n,r,na(this,`attr.`+e,t)):t==null?(n.local?aa:ia)(n):(n.local?sa:oa)(n,r,t))}function da(e,t){return function(n){this.setAttribute(e,t.call(this,n))}}function fa(e,t){return function(n){this.setAttributeNS(e.space,e.local,t.call(this,n))}}function pa(e,t){var n,r;function i(){var i=t.apply(this,arguments);return i!==r&&(n=(r=i)&&fa(e,i)),n}return i._value=t,i}function ma(e,t){var n,r;function i(){var i=t.apply(this,arguments);return i!==r&&(n=(r=i)&&da(e,i)),n}return i._value=t,i}function ha(e,t){var n=`attr.`+e;if(arguments.length<2)return(n=this.tween(n))&&n._value;if(t==null)return this.tween(n,null);if(typeof t!=`function`)throw Error();var r=ut(e);return this.tween(n,(r.local?pa:ma)(r,t))}function ga(e,t){return function(){Yi(this,e).delay=+t.apply(this,arguments)}}function _a(e,t){return t=+t,function(){Yi(this,e).delay=t}}function va(e){var t=this._id;return arguments.length?this.each((typeof e==`function`?ga:_a)(t,e)):$(this.node(),t).delay}function ya(e,t){return function(){Q(this,e).duration=+t.apply(this,arguments)}}function ba(e,t){return t=+t,function(){Q(this,e).duration=t}}function xa(e){var t=this._id;return arguments.length?this.each((typeof e==`function`?ya:ba)(t,e)):$(this.node(),t).duration}function Sa(e,t){if(typeof t!=`function`)throw Error();return function(){Q(this,e).ease=t}}function Ca(e){var t=this._id;return arguments.length?this.each(Sa(t,e)):$(this.node(),t).ease}function wa(e,t){return function(){var n=t.apply(this,arguments);if(typeof n!=`function`)throw Error();Q(this,e).ease=n}}function Ta(e){if(typeof e!=`function`)throw Error();return this.each(wa(this._id,e))}function Ea(e){typeof e!=`function`&&(e=xt(e));for(var t=this._groups,n=t.length,r=Array(n),i=0;i<n;++i)for(var a=t[i],o=a.length,s=r[i]=[],c,l=0;l<o;++l)(c=a[l])&&e.call(c,c.__data__,l,a)&&s.push(c);return new to(r,this._parents,this._name,this._id)}function Da(e){if(e._id!==this._id)throw Error();for(var t=this._groups,n=e._groups,r=t.length,i=n.length,a=Math.min(r,i),o=Array(r),s=0;s<a;++s)for(var c=t[s],l=n[s],u=c.length,d=o[s]=Array(u),f,p=0;p<u;++p)(f=c[p]||l[p])&&(d[p]=f);for(;s<r;++s)o[s]=t[s];return new to(o,this._parents,this._name,this._id)}function Oa(e){return(e+``).trim().split(/^|\s+/).every(function(e){var t=e.indexOf(`.`);return t>=0&&(e=e.slice(0,t)),!e||e===`start`})}function ka(e,t,n){var r,i,a=Oa(t)?Yi:Q;return function(){var o=a(this,e),s=o.on;s!==r&&(i=(r=s).copy()).on(t,n),o.on=i}}function Aa(e,t){var n=this._id;return arguments.length<2?$(this.node(),n).on.on(e):this.each(ka(n,e,t))}function ja(e){return function(){var t=this.parentNode;for(var n in this.__transition)if(+n!==e)return;t&&t.removeChild(this)}}function Ma(){return this.on(`end.remove`,ja(this._id))}function Na(e){var t=this._name,n=this._id;typeof e!=`function`&&(e=ht(e));for(var r=this._groups,i=r.length,a=Array(i),o=0;o<i;++o)for(var s=r[o],c=s.length,l=a[o]=Array(c),u,d,f=0;f<c;++f)(u=s[f])&&(d=e.call(u,u.__data__,f,s))&&(`__data__`in u&&(d.__data__=u.__data__),l[f]=d,Ji(l[f],t,n,f,l,$(u,n)));return new to(a,this._parents,t,n)}function Pa(e){var t=this._name,n=this._id;typeof e!=`function`&&(e=yt(e));for(var r=this._groups,i=r.length,a=[],o=[],s=0;s<i;++s)for(var c=r[s],l=c.length,u,d=0;d<l;++d)if(u=c[d]){for(var f=e.call(u,u.__data__,d,c),p,m=$(u,n),h=0,g=f.length;h<g;++h)(p=f[h])&&Ji(p,t,n,h,f,m);a.push(f),o.push(u)}return new to(a,o,t,n)}var Fa=tr.prototype.constructor;function Ia(){return new Fa(this._groups,this._parents)}function La(e,t){var n,r,i;return function(){var a=ln(this,e),o=(this.style.removeProperty(e),ln(this,e));return a===o?null:a===n&&o===r?i:i=t(n=a,r=o)}}function Ra(e){return function(){this.style.removeProperty(e)}}function za(e,t,n){var r,i=n+``,a;return function(){var o=ln(this,e);return o===i?null:o===r?a:a=t(r=o,n)}}function Ba(e,t,n){var r,i,a;return function(){var o=ln(this,e),s=n(this),c=s+``;return s??(c=s=(this.style.removeProperty(e),ln(this,e))),o===c?null:o===r&&c===i?a:(i=c,a=t(r=o,s))}}function Va(e,t){var n,r,i,a=`style.`+t,o=`end.`+a,s;return function(){var c=Q(this,e),l=c.on,u=c.value[a]==null?s||=Ra(t):void 0;(l!==n||i!==u)&&(r=(n=l).copy()).on(o,i=u),c.on=r}}function Ha(e,t,n){var r=(e+=``)==`transform`?di:ra;return t==null?this.styleTween(e,La(e,r)).on(`end.style.`+e,Ra(e)):typeof t==`function`?this.styleTween(e,Ba(e,r,na(this,`style.`+e,t))).each(Va(this._id,e)):this.styleTween(e,za(e,r,t),n).on(`end.style.`+e,null)}function Ua(e,t,n){return function(r){this.style.setProperty(e,t.call(this,r),n)}}function Wa(e,t,n){var r,i;function a(){var a=t.apply(this,arguments);return a!==i&&(r=(i=a)&&Ua(e,a,n)),r}return a._value=t,a}function Ga(e,t,n){var r=`style.`+(e+=``);if(arguments.length<2)return(r=this.tween(r))&&r._value;if(t==null)return this.tween(r,null);if(typeof t!=`function`)throw Error();return this.tween(r,Wa(e,t,n??``))}function Ka(e){return function(){this.textContent=e}}function qa(e){return function(){var t=e(this);this.textContent=t??``}}function Ja(e){return this.tween(`text`,typeof e==`function`?qa(na(this,`text`,e)):Ka(e==null?``:e+``))}function Ya(e){return function(t){this.textContent=e.call(this,t)}}function Xa(e){var t,n;function r(){var r=e.apply(this,arguments);return r!==n&&(t=(n=r)&&Ya(r)),t}return r._value=e,r}function Za(e){var t=`text`;if(arguments.length<1)return(t=this.tween(t))&&t._value;if(e==null)return this.tween(t,null);if(typeof e!=`function`)throw Error();return this.tween(t,Xa(e))}function Qa(){for(var e=this._name,t=this._id,n=no(),r=this._groups,i=r.length,a=0;a<i;++a)for(var o=r[a],s=o.length,c,l=0;l<s;++l)if(c=o[l]){var u=$(c,t);Ji(c,e,n,l,o,{time:u.time+u.delay+u.duration,delay:0,duration:u.duration,ease:u.ease})}return new to(r,this._parents,e,n)}function $a(){var e,t,n=this,r=n._id,i=n.size();return new Promise(function(a,o){var s={value:o},c={value:function(){--i===0&&a()}};n.each(function(){var n=Q(this,r),i=n.on;i!==e&&(t=(e=i).copy(),t._.cancel.push(s),t._.interrupt.push(s),t._.end.push(c)),n.on=t}),i===0&&a()})}var eo=0;function to(e,t,n,r){this._groups=e,this._parents=t,this._name=n,this._id=r}function no(){return++eo}var ro=tr.prototype;to.prototype={constructor:to,select:Na,selectAll:Pa,selectChild:ro.selectChild,selectChildren:ro.selectChildren,filter:Ea,merge:Da,selection:Ia,transition:Qa,call:ro.call,nodes:ro.nodes,node:ro.node,size:ro.size,empty:ro.empty,each:ro.each,on:Aa,attr:ua,attrTween:ha,style:Ha,styleTween:Ga,text:Ja,textTween:Za,remove:Ma,tween:ta,delay:va,duration:xa,ease:Ca,easeVarying:Ta,end:$a,[Symbol.iterator]:ro[Symbol.iterator]};function io(e){return((e*=2)<=1?e*e*e:(e-=2)*e*e+2)/2}var ao={time:null,delay:0,duration:250,ease:io};function oo(e,t){for(var n;!(n=e.__transition)||!(n=n[t]);)if(!(e=e.parentNode))throw Error(`transition ${t} not found`);return n}function so(e){var t,n;e instanceof to?(t=e._id,e=e._name):(t=no(),(n=ao).time=ki(),e=e==null?null:e+``);for(var r=this._groups,i=r.length,a=0;a<i;++a)for(var o=r[a],s=o.length,c,l=0;l<s;++l)(c=o[l])&&Ji(c,e,t,l,o,n||oo(c,t));return new to(r,this._parents,e,t)}tr.prototype.interrupt=Qi,tr.prototype.transition=so;var co=e=>()=>e;function lo(e,{sourceEvent:t,target:n,transform:r,dispatch:i}){Object.defineProperties(this,{type:{value:e,enumerable:!0,configurable:!0},sourceEvent:{value:t,enumerable:!0,configurable:!0},target:{value:n,enumerable:!0,configurable:!0},transform:{value:r,enumerable:!0,configurable:!0},_:{value:i}})}function uo(e,t,n){this.k=e,this.x=t,this.y=n}uo.prototype={constructor:uo,scale:function(e){return e===1?this:new uo(this.k*e,this.x,this.y)},translate:function(e,t){return e===0&t===0?this:new uo(this.k,this.x+this.k*e,this.y+this.k*t)},apply:function(e){return[e[0]*this.k+this.x,e[1]*this.k+this.y]},applyX:function(e){return e*this.k+this.x},applyY:function(e){return e*this.k+this.y},invert:function(e){return[(e[0]-this.x)/this.k,(e[1]-this.y)/this.k]},invertX:function(e){return(e-this.x)/this.k},invertY:function(e){return(e-this.y)/this.k},rescaleX:function(e){return e.copy().domain(e.range().map(this.invertX,this).map(e.invert,e))},rescaleY:function(e){return e.copy().domain(e.range().map(this.invertY,this).map(e.invert,e))},toString:function(){return`translate(`+this.x+`,`+this.y+`) scale(`+this.k+`)`}};var fo=new uo(1,0,0);uo.prototype;function po(e){e.stopImmediatePropagation()}function mo(e){e.preventDefault(),e.stopImmediatePropagation()}function ho(e){return(!e.ctrlKey||e.type===`wheel`)&&!e.button}function go(){var e=this;return e instanceof SVGElement?(e=e.ownerSVGElement||e,e.hasAttribute(`viewBox`)?(e=e.viewBox.baseVal,[[e.x,e.y],[e.x+e.width,e.y+e.height]]):[[0,0],[e.width.baseVal.value,e.height.baseVal.value]]):[[0,0],[e.clientWidth,e.clientHeight]]}function _o(){return this.__zoom||fo}function vo(e){return-e.deltaY*(e.deltaMode===1?.05:e.deltaMode?1:.002)*(e.ctrlKey?10:1)}function yo(){return navigator.maxTouchPoints||`ontouchstart`in this}function bo(e,t,n){var r=e.invertX(t[0][0])-n[0][0],i=e.invertX(t[1][0])-n[1][0],a=e.invertY(t[0][1])-n[0][1],o=e.invertY(t[1][1])-n[1][1];return e.translate(i>r?(r+i)/2:Math.min(0,r)||Math.max(0,i),o>a?(a+o)/2:Math.min(0,a)||Math.max(0,o))}function xo(){var e=ho,t=go,n=bo,r=vo,i=yo,a=[0,1/0],o=[[-1/0,-1/0],[1/0,1/0]],s=250,c=_i,l=U(`start`,`zoom`,`end`),u,d,f,p=500,m=150,h=0,g=10;function _(e){e.property(`__zoom`,_o).on(`wheel.zoom`,w,{passive:!1}).on(`mousedown.zoom`,T).on(`dblclick.zoom`,E).filter(i).on(`touchstart.zoom`,ee).on(`touchmove.zoom`,D).on(`touchend.zoom touchcancel.zoom`,O).style(`-webkit-tap-highlight-color`,`rgba(0,0,0,0)`)}_.transform=function(e,t,n,r){var i=e.selection?e.selection():e;i.property(`__zoom`,_o),e===i?i.interrupt().each(function(){S(this,arguments).event(r).start().zoom(null,typeof t==`function`?t.apply(this,arguments):t).end()}):x(e,t,n,r)},_.scaleBy=function(e,t,n,r){_.scaleTo(e,function(){return this.__zoom.k*(typeof t==`function`?t.apply(this,arguments):t)},n,r)},_.scaleTo=function(e,r,i,a){_.transform(e,function(){var e=t.apply(this,arguments),a=this.__zoom,s=i==null?b(e):typeof i==`function`?i.apply(this,arguments):i,c=a.invert(s),l=typeof r==`function`?r.apply(this,arguments):r;return n(y(v(a,l),s,c),e,o)},i,a)},_.translateBy=function(e,r,i,a){_.transform(e,function(){return n(this.__zoom.translate(typeof r==`function`?r.apply(this,arguments):r,typeof i==`function`?i.apply(this,arguments):i),t.apply(this,arguments),o)},null,a)},_.translateTo=function(e,r,i,a,s){_.transform(e,function(){var e=t.apply(this,arguments),s=this.__zoom,c=a==null?b(e):typeof a==`function`?a.apply(this,arguments):a;return n(fo.translate(c[0],c[1]).scale(s.k).translate(typeof r==`function`?-r.apply(this,arguments):-r,typeof i==`function`?-i.apply(this,arguments):-i),e,o)},a,s)};function v(e,t){return t=Math.max(a[0],Math.min(a[1],t)),t===e.k?e:new uo(t,e.x,e.y)}function y(e,t,n){var r=t[0]-n[0]*e.k,i=t[1]-n[1]*e.k;return r===e.x&&i===e.y?e:new uo(e.k,r,i)}function b(e){return[(+e[0][0]+ +e[1][0])/2,(+e[0][1]+ +e[1][1])/2]}function x(e,n,r,i){e.on(`start.zoom`,function(){S(this,arguments).event(i).start()}).on(`interrupt.zoom end.zoom`,function(){S(this,arguments).event(i).end()}).tween(`zoom`,function(){var e=this,a=arguments,o=S(e,a).event(i),s=t.apply(e,a),l=r==null?b(s):typeof r==`function`?r.apply(e,a):r,u=Math.max(s[1][0]-s[0][0],s[1][1]-s[0][1]),d=e.__zoom,f=typeof n==`function`?n.apply(e,a):n,p=c(d.invert(l).concat(u/d.k),f.invert(l).concat(u/f.k));return function(e){if(e===1)e=f;else{var t=p(e),n=u/t[2];e=new uo(n,l[0]-t[0]*n,l[1]-t[1]*n)}o.zoom(null,e)}})}function S(e,t,n){return!n&&e.__zooming||new C(e,t)}function C(e,n){this.that=e,this.args=n,this.active=0,this.sourceEvent=null,this.extent=t.apply(e,n),this.taps=0}C.prototype={event:function(e){return e&&(this.sourceEvent=e),this},start:function(){return++this.active===1&&(this.that.__zooming=this,this.emit(`start`)),this},zoom:function(e,t){return this.mouse&&e!==`mouse`&&(this.mouse[1]=t.invert(this.mouse[0])),this.touch0&&e!==`touch`&&(this.touch0[1]=t.invert(this.touch0[0])),this.touch1&&e!==`touch`&&(this.touch1[1]=t.invert(this.touch1[0])),this.that.__zoom=t,this.emit(`zoom`),this},end:function(){return--this.active===0&&(delete this.that.__zooming,this.emit(`end`)),this},emit:function(e){var t=rr(this.that).datum();l.call(e,this.that,new lo(e,{sourceEvent:this.sourceEvent,target:_,type:e,transform:this.that.__zoom,dispatch:l}),t)}};function w(t,...i){if(!e.apply(this,arguments))return;var s=S(this,i).event(t),c=this.__zoom,l=Math.max(a[0],Math.min(a[1],c.k*2**r.apply(this,arguments))),u=ar(t);if(s.wheel)(s.mouse[0][0]!==u[0]||s.mouse[0][1]!==u[1])&&(s.mouse[1]=c.invert(s.mouse[0]=u)),clearTimeout(s.wheel);else if(c.k===l)return;else s.mouse=[u,c.invert(u)],Zi(this),s.start();mo(t),s.wheel=setTimeout(d,m),s.zoom(`mouse`,n(y(v(c,l),s.mouse[0],s.mouse[1]),s.extent,o));function d(){s.wheel=null,s.end()}}function T(t,...r){if(f||!e.apply(this,arguments))return;var i=t.currentTarget,a=S(this,r,!0).event(t),s=rr(t.view).on(`mousemove.zoom`,d,!0).on(`mouseup.zoom`,p,!0),c=ar(t,i),l=t.clientX,u=t.clientY;cr(t.view),po(t),a.mouse=[c,this.__zoom.invert(c)],Zi(this),a.start();function d(e){if(mo(e),!a.moved){var t=e.clientX-l,r=e.clientY-u;a.moved=t*t+r*r>h}a.event(e).zoom(`mouse`,n(y(a.that.__zoom,a.mouse[0]=ar(e,i),a.mouse[1]),a.extent,o))}function p(e){s.on(`mousemove.zoom mouseup.zoom`,null),lr(e.view,a.moved),mo(e),a.event(e).end()}}function E(r,...i){if(e.apply(this,arguments)){var a=this.__zoom,c=ar(r.changedTouches?r.changedTouches[0]:r,this),l=a.invert(c),u=a.k*(r.shiftKey?.5:2),d=n(y(v(a,u),c,l),t.apply(this,i),o);mo(r),s>0?rr(this).transition().duration(s).call(x,d,c,r):rr(this).call(_.transform,d,c,r)}}function ee(t,...n){if(e.apply(this,arguments)){var r=t.touches,i=r.length,a=S(this,n,t.changedTouches.length===i).event(t),o,s,c,l;for(po(t),s=0;s<i;++s)c=r[s],l=ar(c,this),l=[l,this.__zoom.invert(l),c.identifier],a.touch0?!a.touch1&&a.touch0[2]!==l[2]&&(a.touch1=l,a.taps=0):(a.touch0=l,o=!0,a.taps=1+!!u);u&&=clearTimeout(u),o&&(a.taps<2&&(d=l[0],u=setTimeout(function(){u=null},p)),Zi(this),a.start())}}function D(e,...t){if(this.__zooming){var r=S(this,t).event(e),i=e.changedTouches,a=i.length,s,c,l,u;for(mo(e),s=0;s<a;++s)c=i[s],l=ar(c,this),r.touch0&&r.touch0[2]===c.identifier?r.touch0[0]=l:r.touch1&&r.touch1[2]===c.identifier&&(r.touch1[0]=l);if(c=r.that.__zoom,r.touch1){var d=r.touch0[0],f=r.touch0[1],p=r.touch1[0],m=r.touch1[1],h=(h=p[0]-d[0])*h+(h=p[1]-d[1])*h,g=(g=m[0]-f[0])*g+(g=m[1]-f[1])*g;c=v(c,Math.sqrt(h/g)),l=[(d[0]+p[0])/2,(d[1]+p[1])/2],u=[(f[0]+m[0])/2,(f[1]+m[1])/2]}else if(r.touch0)l=r.touch0[0],u=r.touch0[1];else return;r.zoom(`touch`,n(y(c,l,u),r.extent,o))}}function O(e,...t){if(this.__zooming){var n=S(this,t).event(e),r=e.changedTouches,i=r.length,a,o;for(po(e),f&&clearTimeout(f),f=setTimeout(function(){f=null},p),a=0;a<i;++a)o=r[a],n.touch0&&n.touch0[2]===o.identifier?delete n.touch0:n.touch1&&n.touch1[2]===o.identifier&&delete n.touch1;if(n.touch1&&!n.touch0&&(n.touch0=n.touch1,delete n.touch1),n.touch0)n.touch0[1]=this.__zoom.invert(n.touch0[0]);else if(n.end(),n.taps===2&&(o=ar(o,this),Math.hypot(d[0]-o[0],d[1]-o[1])<g)){var s=rr(this).on(`dblclick.zoom`);s&&s.apply(this,arguments)}}}return _.wheelDelta=function(e){return arguments.length?(r=typeof e==`function`?e:co(+e),_):r},_.filter=function(t){return arguments.length?(e=typeof t==`function`?t:co(!!t),_):e},_.touchable=function(e){return arguments.length?(i=typeof e==`function`?e:co(!!e),_):i},_.extent=function(e){return arguments.length?(t=typeof e==`function`?e:co([[+e[0][0],+e[0][1]],[+e[1][0],+e[1][1]]]),_):t},_.scaleExtent=function(e){return arguments.length?(a[0]=+e[0],a[1]=+e[1],_):[a[0],a[1]]},_.translateExtent=function(e){return arguments.length?(o[0][0]=+e[0][0],o[1][0]=+e[1][0],o[0][1]=+e[0][1],o[1][1]=+e[1][1],_):[[o[0][0],o[0][1]],[o[1][0],o[1][1]]]},_.constrain=function(e){return arguments.length?(n=e,_):n},_.duration=function(e){return arguments.length?(s=+e,_):s},_.interpolate=function(e){return arguments.length?(c=e,_):c},_.on=function(){var e=l.on.apply(l,arguments);return e===l?_:e},_.clickDistance=function(e){return arguments.length?(h=(e=+e)*e,_):Math.sqrt(h)},_.tapDistance=function(e){return arguments.length?(g=+e,_):g},_}var So=Symbol(`MiniMapSlots`),Co=[`id`,`x`,`y`,`rx`,`ry`,`width`,`height`,`fill`,`stroke`,`stroke-width`,`shape-rendering`],wo=x({name:`MiniMapNode`,compatConfig:{MODE:3},inheritAttrs:!1,props:{id:{},type:{},selected:{type:Boolean},dragging:{type:Boolean},position:{},dimensions:{},borderRadius:{},color:{},shapeRendering:{},strokeColor:{},strokeWidth:{},hidden:{type:Boolean}},emits:[`click`,`dblclick`,`mouseenter`,`mousemove`,`mouseleave`],setup(t,{emit:r}){let i=t,a=s(So),o=l(),c=n(()=>o.style??{});function u(e){r(`click`,e)}function d(e){r(`dblclick`,e)}function f(e){r(`mouseenter`,e)}function m(e){r(`mousemove`,e)}function h(e){r(`mouseleave`,e)}return(t,n)=>!t.hidden&&t.dimensions.width!==0&&t.dimensions.height!==0?(S(),p(w,{key:0},[e(a)[`node-${i.type}`]?(S(),O(k(e(a)[`node-${i.type}`]),ee(_({key:0},{...i,...t.$attrs})),null,16)):(S(),p(`rect`,_({key:1,id:t.id},t.$attrs,{class:[`vue-flow__minimap-node`,{selected:t.selected,dragging:t.dragging}],x:t.position.x,y:t.position.y,rx:t.borderRadius,ry:t.borderRadius,width:t.dimensions.width,height:t.dimensions.height,fill:t.color||c.value.background||c.value.backgroundColor,stroke:t.strokeColor,"stroke-width":t.strokeWidth,"shape-rendering":t.shapeRendering,onClick:u,onDblclick:d,onMouseenter:f,onMousemove:m,onMouseleave:h}),null,16,Co))],64)):j(``,!0)}}),To=[`width`,`height`,`viewBox`,`aria-labelledby`],Eo=[`id`],Do=[`d`,`fill`,`stroke`,`stroke-width`],Oo=x({name:`MiniMap`,compatConfig:{MODE:3},props:{nodeColor:{type:[String,Function],default:`#e2e2e2`},nodeStrokeColor:{type:[String,Function],default:`transparent`},nodeClassName:{type:[String,Function]},nodeBorderRadius:{default:5},nodeStrokeWidth:{default:2},maskColor:{default:`rgb(240, 240, 240, 0.6)`},maskStrokeColor:{default:`none`},maskStrokeWidth:{default:1},position:{default:`bottom-right`},pannable:{type:Boolean,default:!1},zoomable:{type:Boolean,default:!1},width:{},height:{},ariaLabel:{default:`Vue Flow mini map`},inversePan:{type:Boolean,default:!1},zoomStep:{default:1},offsetScale:{default:5},maskBorderRadius:{default:0}},emits:[`click`,`nodeClick`,`nodeDblclick`,`nodeMouseenter`,`nodeMousemove`,`nodeMouseleave`],setup(r,{emit:i}){let a=c(),o=l(),{id:s,edges:d,viewport:h,translateExtent:_,dimensions:v,emits:x,d3Selection:ee,d3Zoom:D,getNodesInitialized:k}=Ee(),A=t();b(So,a);let te=n(()=>r.width??o.style?.width??200),ne=n(()=>r.height??o.style?.height??150),re=typeof window>`u`||window.chrome?`crispEdges`:`geometricPrecision`,ie=y(()=>typeof r.nodeColor==`string`?()=>r.nodeColor:r.nodeColor),ae=y(()=>typeof r.nodeStrokeColor==`string`?()=>r.nodeStrokeColor:r.nodeStrokeColor),oe=y(()=>typeof r.nodeClassName==`string`?()=>r.nodeClassName:typeof r.nodeClassName==`function`?r.nodeClassName:()=>``),se=y(()=>Ae(k.value.filter(e=>!e.hidden))),ce=y(()=>({x:-h.value.x/h.value.zoom,y:-h.value.y/h.value.zoom,width:v.value.width/h.value.zoom,height:v.value.height/h.value.zoom})),le=y(()=>k.value&&k.value.length?ke(se.value,ce.value):ce.value),M=y(()=>{let e=le.value.width/te.value,t=le.value.height/ne.value;return Math.max(e,t)}),N=y(()=>{let e=M.value*te.value,t=M.value*ne.value,n=r.offsetScale*M.value;return{offset:n,x:le.value.x-(e-le.value.width)/2-n,y:le.value.y-(t-le.value.height)/2-n,width:e+n*2,height:t+n*2}}),ue=y(()=>!N.value.x||!N.value.y?``:`
2
+ M${N.value.x-N.value.offset},${N.value.y-N.value.offset}
3
+ h${N.value.width+N.value.offset*2}
4
+ v${N.value.height+N.value.offset*2}
5
+ h${-N.value.width-N.value.offset*2}z
6
+ M${ce.value.x+r.maskBorderRadius},${ce.value.y}
7
+ h${ce.value.width-2*r.maskBorderRadius}
8
+ a${r.maskBorderRadius},${r.maskBorderRadius} 0 0 1 ${r.maskBorderRadius},${r.maskBorderRadius}
9
+ v${ce.value.height-2*r.maskBorderRadius}
10
+ a${r.maskBorderRadius},${r.maskBorderRadius} 0 0 1 -${r.maskBorderRadius},${r.maskBorderRadius}
11
+ h${-(ce.value.width-2*r.maskBorderRadius)}
12
+ a${r.maskBorderRadius},${r.maskBorderRadius} 0 0 1 -${r.maskBorderRadius},-${r.maskBorderRadius}
13
+ v${-(ce.value.height-2*r.maskBorderRadius)}
14
+ a${r.maskBorderRadius},${r.maskBorderRadius} 0 0 1 ${r.maskBorderRadius},-${r.maskBorderRadius}z`);u(e=>{if(A.value){let t=rr(A.value),n=xo().wheelDelta(e=>Ne(e)*(r.zoomStep/10)).on(`zoom`,r.pannable?e=>{if(e.sourceEvent.type!==`mousemove`||!ee.value||!D.value)return;let t=M.value*Math.max(1,h.value.zoom)*(r.inversePan?-1:1),n={x:h.value.x-e.sourceEvent.movementX*t,y:h.value.y-e.sourceEvent.movementY*t},i=[[0,0],[v.value.width,v.value.height]],a=fo.translate(n.x,n.y).scale(h.value.zoom),o=D.value.constrain()(a,i,_.value);D.value.transform(ee.value,o)}:()=>{}).on(`zoom.wheel`,r.zoomable?e=>{if(e.sourceEvent.type!==`wheel`||!ee.value||!D.value)return;let t=e.sourceEvent.ctrlKey&&Pe()?10:1,n=-e.sourceEvent.deltaY*(e.sourceEvent.deltaMode===1?.05:e.sourceEvent.deltaMode?1:.002)*r.zoomStep,i=h.value.zoom*2**(n*t);D.value.scaleTo(ee.value,i)}:()=>{});t.call(n),e(()=>{t.on(`zoom`,null)})}},{flush:`post`});function P(e){let[t,n]=ar(e);i(`click`,{event:e,position:{x:t,y:n}})}function de(e,t){let n={event:e,node:t,connectedEdges:Oe([t],d.value)};x.miniMapNodeClick(n),i(`nodeClick`,n)}function fe(e,t){let n={event:e,node:t,connectedEdges:Oe([t],d.value)};x.miniMapNodeDoubleClick(n),i(`nodeDblclick`,n)}function pe(e,t){let n={event:e,node:t,connectedEdges:Oe([t],d.value)};x.miniMapNodeMouseEnter(n),i(`nodeMouseenter`,n)}function F(e,t){let n={event:e,node:t,connectedEdges:Oe([t],d.value)};x.miniMapNodeMouseMove(n),i(`nodeMousemove`,n)}function me(e,t){let n={event:e,node:t,connectedEdges:Oe([t],d.value)};x.miniMapNodeMouseLeave(n),i(`nodeMouseleave`,n)}return(t,n)=>(S(),O(e(Fe),{position:t.position,class:g([`vue-flow__minimap`,{pannable:t.pannable,zoomable:t.zoomable}])},{default:T(()=>[(S(),p(`svg`,{ref_key:`el`,ref:A,width:te.value,height:ne.value,viewBox:[N.value.x,N.value.y,N.value.width,N.value.height].join(` `),role:`img`,"aria-labelledby":`vue-flow__minimap-${e(s)}`,onClick:P},[t.ariaLabel?(S(),p(`title`,{key:0,id:`vue-flow__minimap-${e(s)}`},E(t.ariaLabel),9,Eo)):j(``,!0),(S(!0),p(w,null,m(e(k),n=>(S(),O(wo,{id:n.id,key:n.id,f:``,position:n.computedPosition,dimensions:n.dimensions,selected:n.selected,dragging:n.dragging,style:C(n.style),class:g(oe.value(n)),color:ie.value(n),"border-radius":t.nodeBorderRadius,"stroke-color":ae.value(n),"stroke-width":t.nodeStrokeWidth,"shape-rendering":e(re),type:n.type,hidden:n.hidden,onClick:e=>de(e,n),onDblclick:e=>fe(e,n),onMouseenter:e=>pe(e,n),onMousemove:e=>F(e,n),onMouseleave:e=>me(e,n)},null,8,[`id`,`position`,`dimensions`,`selected`,`dragging`,`style`,`class`,`color`,`border-radius`,`stroke-color`,`stroke-width`,`shape-rendering`,`type`,`hidden`,`onClick`,`onDblclick`,`onMouseenter`,`onMousemove`,`onMouseleave`]))),128)),f(`path`,{class:`vue-flow__minimap-mask`,d:ue.value,fill:t.maskColor,stroke:t.maskStrokeColor,"stroke-width":t.maskStrokeWidth,"fill-rule":`evenodd`},null,8,Do)],8,To))]),_:1},8,[`position`,`class`]))}}),ko={group:`Group`,node:`Node`,role:`Role`,leader:`Leader`};function Ao(e){let{locale:t}=ae();function n(n){let r=(typeof e==`function`?e():e.value)?.labels?.[n];if(!r)return ko[n];let i=t.value;return r[i]??r[i.split(`-`)[0]]??ko[n]}return y(()=>({group:n(`group`),node:n(`node`),role:n(`role`),leader:n(`leader`)}))}var jo={class:`scenario-node-editor`},Mo={class:`form-row`},No={class:`form-group`},Po={class:`form-label`,for:`scennode-label`},Fo={key:0,class:`form-group`},Io={class:`form-label`,for:`scennode-role`},Lo={key:0,class:`role-preview`},Ro={class:`role-preview__label`},zo={class:`role-preview__text`},Bo={class:`form-row`},Vo={class:`form-group`},Ho={class:`form-label`,for:`scennode-group`},Uo={key:0,class:`form-group`},Wo={class:`form-label`,for:`scennode-parent`},Go={class:`form-row`},Ko={class:`form-group`},qo={class:`form-label`,for:`scennode-aicli`},Jo={class:`form-group`},Yo={class:`form-label`,for:`scennode-model`},Xo={key:1,class:`form-note`},Zo={class:`inline-check`},Qo={for:`canAddNode`},$o={key:0,class:`form-group`},es={class:`form-label`,for:`scennode-ancestors`},ts={class:`inline-check`},ns={for:`isLeader`},rs={class:`form-note`},is={key:2,class:`form-group`},as={class:`form-label`,for:`scennode-question`},os={key:3,class:`form-group`},ss={class:`form-label`,for:`scennode-prompt`},cs=me(x({__name:`ScenarioNodeEditor`,props:{node:{},groups:{},nodes:{},leaderId:{},preset:{},traversalMode:{}},emits:[`update`,`delete`,`set-leader`],setup(n,{emit:r}){let s=n,{t:c}=ae(),{claudeCodeAvailable:l,codexAvailable:u}=oe(_e()),d=r;function m(e){return e===`codex`?``:`sonnet`}let h=t({...s.node,aiCli:s.node.aiCli??`claude-code`,model:s.node.model??m(s.node.aiCli),injectedAncestorIds:s.node.injectedAncestorIds??[]});function g(e){return{...e,aiCli:e.aiCli??`claude-code`,model:e.model??m(e.aiCli),injectedAncestorIds:e.injectedAncestorIds??[]}}let _=g(s.node);o(()=>s.node,e=>{_=g(e),h.value=g(e)},{deep:!0}),o(h,e=>{let t={};e.label!==_.label&&(t.label=e.label),e.role!==_.role&&(t.role=e.role),e.groupId!==_.groupId&&(t.groupId=e.groupId),JSON.stringify(e.parentIds)!==JSON.stringify(_.parentIds)&&(t.parentIds=e.parentIds),e.prompt!==_.prompt&&(t.prompt=e.prompt),e.question!==_.question&&(t.question=e.question),e.canAddNode!==_.canAddNode&&(t.canAddNode=e.canAddNode),e.aiCli!==_.aiCli&&(t.aiCli=e.aiCli),e.model!==_.model&&(t.model=e.model),JSON.stringify(e.injectedAncestorIds)!==JSON.stringify(_.injectedAncestorIds)&&(t.injectedAncestorIds=e.injectedAncestorIds),Object.keys(t).length>0&&d(`update`,t)},{deep:!0});let v=y(()=>s.preset?.roles.length?s.preset.roles.map(e=>({label:e.name,value:e.id})):[]),b=y(()=>[{label:`Claude Code${l.value?``:` — non installé`}`,value:`claude-code`,disabled:!l.value},{label:`Codex (OpenAI)${u.value?``:` — non installé`}`,value:`codex`,disabled:!u.value}]),x=y(()=>h.value.aiCli===`codex`?[]:[{label:c(`scenarioNodeEditor.modelHaiku`),value:`haiku`},{label:c(`scenarioNodeEditor.modelSonnet`),value:`sonnet`},{label:c(`scenarioNodeEditor.modelOpus`),value:`opus`}]);o(()=>h.value.aiCli,(e,t)=>{if(e===t)return;let n={"claude-code":`sonnet`,codex:``};h.value.model=n[e]??`sonnet`});let C=y(()=>s.groups.map(e=>({label:e.name,value:e.id}))),T=y(()=>s.nodes.filter(e=>e.id!==s.node.id).map(e=>({label:e.label||e.id,value:e.id})));o(()=>h.value.parentIds,()=>{let e=new Map(s.nodes.map(e=>[e.id,e])),t=new Set,n=[...h.value.parentIds];for(;n.length>0;){let r=n.shift();if(!t.has(r)){t.add(r);let i=e.get(r);i&&n.push(...i.parentIds)}}h.value.injectedAncestorIds=(h.value.injectedAncestorIds??[]).filter(e=>t.has(e))});let ee=y(()=>{let e=new Map(s.nodes.map(e=>[e.id,e])),t=new Set,n=[...s.node.parentIds??[]];for(;n.length>0;){let r=n.shift();if(!t.has(r)){t.add(r);let i=e.get(r);i&&n.push(...i.parentIds)}}return s.nodes.filter(e=>t.has(e.id)).map(e=>({label:e.label||e.id,value:e.id}))}),D=y(()=>s.node.id===s.leaderId);y(()=>!D.value);let k=y(()=>!D.value),A=Ao(()=>s.preset),te=y(()=>s.preset?.roles.find(e=>e.id===h.value.role));return(t,n)=>(S(),p(`div`,jo,[f(`div`,Mo,[f(`div`,No,[f(`label`,Po,E(e(c)(`scenarioNodeEditor.label`)),1),i(e(M),{id:`scennode-label`,modelValue:h.value.label,"onUpdate:modelValue":n[0]||=e=>h.value.label=e,class:`w-full`,size:`small`,placeholder:`${e(A).node} name`},null,8,[`modelValue`,`placeholder`])]),v.value.length?(S(),p(`div`,Fo,[f(`label`,Io,E(e(A).role),1),i(e(P),{"input-id":`scennode-role`,modelValue:h.value.role,"onUpdate:modelValue":n[1]||=e=>h.value.role=e,options:v.value,"option-label":`label`,"option-value":`value`,class:`w-full`,size:`small`},null,8,[`modelValue`,`options`])])):j(``,!0)]),te.value?.systemPrompt?(S(),p(`div`,Lo,[f(`span`,Ro,E(e(c)(`scenarioNodeEditor.systemPrompt`)),1),f(`p`,zo,E(te.value.systemPrompt),1)])):j(``,!0),f(`div`,Bo,[f(`div`,Vo,[f(`label`,Ho,E(e(A).group),1),i(e(P),{"input-id":`scennode-group`,modelValue:h.value.groupId,"onUpdate:modelValue":n[2]||=e=>h.value.groupId=e,options:C.value,"option-label":`label`,"option-value":`value`,placeholder:`Select a ${e(A).group.toLowerCase()}`,class:`w-full`,size:`small`},null,8,[`modelValue`,`options`,`placeholder`])]),k.value?(S(),p(`div`,Uo,[f(`label`,Wo,E(e(c)(`scenarioNodeEditor.reportsTo`)),1),i(e(P),{"input-id":`scennode-parent`,"model-value":h.value.parentIds[0]??null,options:T.value,"option-label":`label`,"option-value":`value`,placeholder:e(c)(`scenarioNodeEditor.noParent`),"show-clear":!0,class:`w-full`,size:`small`,"onUpdate:modelValue":n[3]||=e=>{h.value.parentIds=e?[e,...h.value.parentIds.slice(1)]:h.value.parentIds.slice(1)}},null,8,[`model-value`,`options`,`placeholder`])])):j(``,!0)]),h.value.type===`ask`?j(``,!0):(S(),p(w,{key:1},[f(`div`,Go,[f(`div`,Ko,[f(`label`,qo,E(e(c)(`scenarioNodeEditor.aiRunner`)),1),i(e(P),{"input-id":`scennode-aicli`,modelValue:h.value.aiCli,"onUpdate:modelValue":n[4]||=e=>h.value.aiCli=e,options:b.value,"option-label":`label`,"option-value":`value`,"option-disabled":`disabled`,class:`w-full`,size:`small`},null,8,[`modelValue`,`options`])]),f(`div`,Jo,[f(`label`,Yo,E(e(c)(`scenarioNodeEditor.model`)),1),h.value.aiCli===`codex`?(S(),p(`small`,Xo,E(e(c)(`scenarioNodeEditor.modelAuto`)),1)):(S(),O(e(P),{key:0,"input-id":`scennode-model`,modelValue:h.value.model,"onUpdate:modelValue":n[5]||=e=>h.value.model=e,options:x.value,"option-label":`label`,"option-value":`value`,class:`w-full`,size:`small`},null,8,[`modelValue`,`options`]))])]),f(`div`,Zo,[i(e(N),{modelValue:h.value.canAddNode,"onUpdate:modelValue":n[6]||=e=>h.value.canAddNode=e,binary:``,"input-id":`canAddNode`},null,8,[`modelValue`]),f(`label`,Qo,E(e(c)(`scenarioNodeEditor.canSpawnNodes`)),1)]),D.value?j(``,!0):(S(),p(w,{key:0},[ee.value.length>0?(S(),p(`div`,$o,[f(`label`,es,E(e(c)(`scenarioNodeEditor.injectedAncestorIds`)),1),i(e(fe),{"input-id":`scennode-ancestors`,modelValue:h.value.injectedAncestorIds,"onUpdate:modelValue":n[7]||=e=>h.value.injectedAncestorIds=e,options:ee.value,"option-label":`label`,"option-value":`value`,placeholder:e(c)(`scenarioNodeEditor.injectedAncestorIdsPlaceholder`),filter:``,class:`w-full`,size:`small`},null,8,[`modelValue`,`options`,`placeholder`])])):j(``,!0)],64))],64)),f(`div`,ts,[i(e(N),{"model-value":D.value,binary:``,"input-id":`isLeader`,disabled:D.value,"onUpdate:modelValue":n[8]||=e=>d(`set-leader`,s.node.id)},null,8,[`model-value`,`disabled`]),f(`label`,ns,[a(E(e(A).leader)+` `,1),f(`span`,rs,E(e(c)(`scenarioNodeEditor.entryPoint`)),1)])]),h.value.type===`ask`?(S(),p(`div`,is,[f(`label`,as,E(e(c)(`scenarioNodeEditor.question`)),1),i(e(he),{id:`scennode-question`,modelValue:h.value.question,"onUpdate:modelValue":n[9]||=e=>h.value.question=e,rows:`4`,class:`w-full`,style:{resize:`none`},placeholder:e(c)(`scenarioNodeEditor.questionPlaceholder`)},null,8,[`modelValue`,`placeholder`])])):(S(),p(`div`,os,[f(`label`,ss,E(e(c)(`scenarioNodeEditor.prompt`)),1),i(e(he),{id:`scennode-prompt`,modelValue:h.value.prompt,"onUpdate:modelValue":n[10]||=e=>h.value.prompt=e,rows:`8`,class:`w-full`,style:{resize:`none`}},null,8,[`modelValue`])]))]))}}),[[`__scopeId`,`data-v-9cda1592`]]),ls={class:`scenario-editor`},us={class:`scenario-editor__toolbar`},ds={class:`scenario-editor__toolbar-row scenario-editor__toolbar-row--primary`},fs={class:`scenario-editor__icon-input`},ps={class:`scenario-editor__toolbar-row scenario-editor__toolbar-row--secondary`},ms={class:`ti ti-help-circle scenario-editor__traversal-help`},hs={class:`add-node-popover`},gs={class:`add-node-popover__item-text`},_s={class:`add-node-popover__item-label`},vs={class:`add-node-popover__item-desc`},ys={class:`add-node-popover__item-text`},bs={class:`add-node-popover__item-label`},xs={class:`add-node-popover__item-desc`},Ss={class:`scenario-editor__content`},Cs={key:0,class:`scenario-editor__ai-panel`},ws={class:`scenario-editor__ai-panel-header`},Ts={key:0,class:`scenario-editor__ai-provider`},Es={for:`scened-ai-provider`,class:`scenario-editor__ai-provider-label`},Ds={key:1,class:`scenario-editor__ai-no-provider`},Os=[`innerHTML`],ks={class:`scenario-editor__ai-hint`},As={key:2,class:`scenario-editor__ai-stream`},js={class:`scenario-editor__ai-stream-label`},Ms={key:0,class:`ti ti-spin ti-loader-2`},Ns={key:1,class:`ti ti-check`,style:{color:`var(--r-green-500)`}},Ps={key:2,class:`ti ti-alert-triangle`,style:{color:`var(--r-orange-500)`}},Fs={class:`scenario-editor__ai-stream-text`},Is={key:3,class:`scenario-editor__ai-error`},Ls={key:0,class:`scenario-editor__panel scenario-editor__panel--editor`},Rs={class:`detail-header`},zs={class:`detail-header__title`},Bs={class:`detail-body`},Vs={class:`detail-field`},Hs={for:`scened-group-name`,class:`detail-label`},Us={class:`detail-field`},Ws={for:`scened-group-desc`,class:`detail-label`},Gs={class:`detail-field`},Ks={for:`scened-group-color`,class:`detail-label`},qs={class:`detail-color-row`},Js={class:`detail-footer`},Ys={key:0,class:`detail-footer`},Xs={class:`switch-dialog__intro`},Zs={class:`inline-check`,style:{"margin-top":`1rem`,gap:`0.6rem`}},Qs={for:`dontShowAgain`,style:{"font-size":`0.85rem`,cursor:`pointer`}},$s={class:`switch-dialog__intro`},ec={class:`switch-dialog__intro`},tc={class:`switch-dialog__links`},nc={class:`switch-dialog__node`},rc={class:`switch-dialog__node`},ic={class:`add-node-form`},ac={for:`scened-add-node-group`,class:`add-node-label`},oc={class:`export-json`},sc={key:0,class:`import-error`},cc={style:{margin:`0 0 1rem`}},lc=`runeya:hierarchical-multi-parent-notice-dismissed`,uc=`scenario-flow`,dc=160,fc=48,pc=24,mc=32,hc=60,gc=10,_c=me(x({__name:`ScenarioEditorPage`,setup(n){let{t:o}=ae(),s=ce(),c=se(),l=ue(),u=t(!1),b=t([]),x=t(localStorage.getItem(lc)===`true`),C=t(!1),k=t(!1),A=ye(),{setCenter:oe,updateNode:fe,getSelectedNodes:me,getSelectedEdges:_e,removeSelectedElements:De,fitView:Oe,viewport:ke}=Ee(uc);function Ae(e){if(e.key!==`Delete`&&e.key!==`Backspace`)return;let t=e.target;if(t.tagName!==`INPUT`&&t.tagName!==`TEXTAREA`){if(K.value){let e=K.value;for(let t of B.value){let n=t.parentIds.findIndex(n=>`e-${n}-${t.id}`===e);if(n!==-1){W(t.id,{parentIds:t.parentIds.filter((e,t)=>t!==n)});break}}K.value=void 0;return}for(let e of me.value)z.value.some(t=>t.id===e.id)?mt(e.id):B.value.some(t=>t.id===e.id)&&bt(e.id)}}let Ne=y(()=>s.params.id),Pe=y(()=>!Ne.value),Fe=t(`New scenario`),Re=t(``),ze=t(``),I=t(``),L=t(`hierarchical`),Be=t(void 0),Ve=t(!1),He=t([]),Ue=y(()=>He.value.find(e=>e.id===Be.value)),R=Ao(Ue),We=t();function Ge(e){We.value?.toggle(e)}function Ke(e){We.value?.hide(),gt(e)}async function qe(){try{He.value=await be.scenario.listPresets.query()}catch{}}let Je=t(!1),Ye=t(void 0),Xe=t(0);function Ze(e){Be.value=e;let t=He.value.find(t=>t.id===e);t?.defaultTraversalMode&&(L.value=t.defaultTraversalMode),t?.initialData?(z.value=[...t.initialData.groups],B.value=[...t.initialData.nodes],I.value=t.initialData.leaderId,V.value=void 0,H.value=void 0):e||(z.value=[],B.value=[],I.value=``,V.value=void 0,H.value=void 0)}function Qe(){return B.value.length>0||z.value.length>0}function $e(e){let t=e?He.value.find(t=>t.id===e):void 0;(!e||t?.initialData)&&Qe()?(Ye.value=e,Je.value=!0):Ze(e)}function et(){Je.value=!1,Ze(Ye.value),Ye.value=void 0}function tt(){Je.value=!1,Ye.value=void 0,Xe.value++}let z=t([]),B=t([]),V=t(),H=t(),rt=t(!1),U=t(null),it=t(`ai`),at=y(()=>{let e=new Map;if(!V.value)return e;let t=V.value,n=B.value.find(e=>e.id===t);if(!n)return e;let r=B.value.filter(e=>(e.parentIds??[]).includes(t)||(n.parentIds??[]).includes(e.id)),i=new Map;for(let e of r){let t=e.groupId??null;i.has(t)||i.set(t,[]),i.get(t).push(e)}for(let t of i.values())t.length<=1||[...t].sort((e,t)=>e.position.x-t.position.x).forEach((t,n)=>e.set(t.id,-n*15));return e}),ot=y(()=>{let e=V.value?(()=>{let e=V.value,t=B.value.find(t=>t.id===e),n=B.value.filter(n=>(n.parentIds??[]).includes(e)||(t?.parentIds??[]).includes(n.id)).map(e=>e.id);return new Set([e,...n])})():null,t=e?new Set(B.value.filter(t=>e.has(t.id)&&t.groupId).map(e=>e.groupId)):null,n=H.value??null,r=n?new Set(B.value.filter(e=>e.groupId===n).map(e=>e.id)):null,i=z.value.map(e=>{let r=t&&!t.has(e.id),i=n&&e.id!==n,a=r||i,o=n===e.id;return{id:e.id,type:`group`,position:e.position,zIndex:o?500:1,style:{width:`${e.width}px`,height:`${e.height}px`,opacity:a?`0.25`:`1`,transition:`opacity 0.15s ease`},data:{label:e.name,color:e.color??void 0},draggable:!0,selectable:!0}}),a=new Map;for(let e of B.value)for(let t of e.parentIds??[]){let n=st(e.id)<st(t),r=a.get(t)??{hasUp:!1,hasDown:!1};n?r.hasUp=!0:r.hasDown=!0,a.set(t,r)}let o=B.value.map(t=>{let n=a.get(t.id)??{hasUp:!1,hasDown:!1},i=at.value.get(t.id)??0,o=e&&!e.has(t.id),s=r&&!r.has(t.id),c=o||s,l=r?.has(t.id);return{id:t.id,position:{x:t.position.x+i,y:t.position.y},zIndex:l?1500:1e3,style:c?{opacity:`0.25`,transition:`opacity 0.15s ease`}:{opacity:`1`,transition:`opacity 0.15s ease`},data:{label:t.label,isLeader:t.id===I.value,type:t.type,roleName:Ue.value?.roles.find(e=>e.id===t.role)?.name,showTopHandle:n.hasUp,showBottomHandle:n.hasDown||!n.hasUp},draggable:!0,selectable:!0,parentNode:t.groupId??void 0,extent:t.groupId?`parent`:void 0}});return[...i,...o]});function st(e){let t=B.value.find(t=>t.id===e);return t?t.groupId?(z.value.find(e=>e.id===t.groupId)?.position.y??0)+t.position.y:t.position.y:0}let ct=y(()=>{let e=new Map;for(let t of B.value)e.set(t.id,0);let t=new Map;for(let e of B.value)t.set(e.id,[]);for(let e of B.value)for(let n of e.parentIds??[])t.get(n)?.push(e.id);let n=new Set,r=[];function i(a){e.set(a,1),r.push(a);for(let o of t.get(a)??[])if(e.get(o)===1){let e=r.indexOf(o);for(let t=e;t<r.length-1;t++)n.add(`e-${r[t]}-${r[t+1]}`);n.add(`e-${a}-${o}`)}else e.get(o)===0&&i(o);r.pop(),e.set(a,2)}for(let t of B.value)e.get(t.id)===0&&i(t.id);return n}),lt=y(()=>{let e=[],t=L.value===`topological`;for(let n of B.value)for(let r of n.parentIds??[]){let i=`e-${r}-${n.id}`,a=K.value===i,o=!K.value&&!!V.value&&(V.value===r||V.value===n.id),s=a||o,c=ct.value.has(i),l=st(n.id)<st(r),u=B.value.find(e=>e.id===r)?.groupId??null,d=n.groupId??null,f=!!H.value&&u!==H.value&&d!==H.value||V.value&&!K.value&&!s||K.value&&!a;e.push({id:i,source:r,target:n.id,sourceHandle:l?`source-top`:`source-bottom`,type:`step`,zIndex:c?700:s?600:500,class:c?`edge--cycle`:void 0,animated:t,style:{stroke:c?`rgb(239,68,68)`:s?`rgb(168,85,247)`:`rgba(99,102,241,0.55)`,strokeWidth:c||s?3:2.5,opacity:f?.15:1,...t?{strokeDasharray:`5,3`}:{}}})}return e});y(()=>B.value.map(e=>({id:e.id,label:e.label||e.id})));function ut(){let e={id:`group-${Le().slice(0,8)}`,name:`Group ${z.value.length+1}`,position:{x:100*z.value.length,y:100*z.value.length},width:300,height:200};z.value=[...z.value,e]}let dt=t(!1),ft=t(null),pt=t(0);function mt(e){let t=B.value.filter(t=>t.groupId===e).length;if(t>0){ft.value=e,pt.value=t,dt.value=!0;return}ht(e)}function ht(e){let t=B.value.filter(t=>t.groupId===e).map(e=>e.id);B.value=B.value.filter(e=>!t.includes(e.id)).map(e=>({...e,parentIds:e.parentIds.filter(e=>!t.includes(e))})),z.value=z.value.filter(t=>t.id!==e),H.value===e&&(H.value=void 0),V.value&&t.includes(V.value)&&(V.value=void 0)}function gt(e=`ai`){if(!z.value.length){l.add({severity:`warn`,summary:o(`scenarioEditor.toast.noGroupsSummary`),detail:o(`scenarioEditor.toast.noGroupsDetail`),life:3e3});return}it.value=e,U.value=z.value[0]?.id??null,rt.value=!0}function _t(e){if(!e)return{x:100,y:100};let t=B.value.filter(t=>t.groupId===e);if(t.length===0)return{x:pc,y:56};let n=t.reduce((e,t)=>e.position.y>t.position.y?e:t);return{x:n.position.x,y:n.position.y+fc+gc}}function vt(e){if(!e)return;let t=z.value.find(t=>t.id===e);if(!t)return;let n=B.value.filter(t=>t.groupId===e);if(n.length===0)return;let r=Math.max(...n.map(e=>e.position.y+fc)),i=Math.max(...n.map(e=>e.position.x+dc)),a=r+pc,o=Math.max(t.width??200,i+pc),s=(t.position.y??0)+(t.height??0),c=(t.position.y??0)+a-s;if(G(e,{width:o,height:a}),c>0)for(let t of z.value)t.id!==e&&(t.position.y??0)>=s&&G(t.id,{position:{x:t.position.x,y:(t.position.y??0)+c}})}function yt(){if(!U.value){l.add({severity:`warn`,summary:o(`scenarioEditor.toast.groupRequiredSummary`),detail:o(`scenarioEditor.toast.groupRequiredDetail`),life:3e3});return}let e=`node-${Le().slice(0,8)}`,t={id:e,type:it.value,parentIds:[],groupId:U.value,label:``,role:`other`,prompt:``,question:``,autoGenerated:!0,canAddNode:!1,aiCli:`claude-code`,model:`sonnet`,position:_t(U.value),injectParentOutputs:!1,injectedAncestorIds:[]};B.value=[...B.value,t],B.value.length===1&&(I.value=e),vt(U.value),rt.value=!1,V.value=e,D(()=>updateNodeInternals(B.value.map(e=>e.id)))}function bt(e){if(e===I.value){l.add({severity:`warn`,summary:o(`scenarioEditor.toast.leaderSummary`),detail:o(`scenarioEditor.toast.leaderDetail`),life:3e3});return}let t=new Set(B.value.filter(t=>t.parentIds[0]===e).map(e=>e.id));B.value=B.value.filter(t=>t.id!==e).map(e=>t.has(e.id)?{...e,parentId:I.value}:e),V.value===e&&(V.value=void 0)}function W(e,t){B.value=B.value.map(n=>n.id===e?{...n,...t}:n);let n=B.value.find(t=>t.id===e);if(n&&(`label`in t&&fe(e,{data:{label:n.label,isLeader:n.id===I.value}}),`groupId`in t)){let n={x:50,y:50};fe(e,{parentNode:t.groupId??void 0,extent:t.groupId?`parent`:void 0,position:n}),B.value=B.value.map(t=>t.id===e?{...t,position:n}:t)}}function xt(e,t){G(e,{name:t}),fe(e,{data:{label:t}})}function St(e,t,n){}function Ct(e){for(let t of e)if(t.type===`remove`){let e=t.id?.split(`-`);if(!e||e.length<3)continue;for(let e of B.value){let n=e.parentIds??[],r=n.findIndex(n=>`e-${n}-${e.id}`===t.id);if(r!==-1){W(e.id,{parentIds:n.filter((e,t)=>t!==r)});break}}}}function wt(e){for(let t of e)t.type===`dimensions`&&t.dimensions&&z.value.find(e=>e.id===t.id)&&G(t.id,{width:t.dimensions.width,height:t.dimensions.height}),t.type===`position`&&t.position&&!t.dragging&&z.value.find(e=>e.id===t.id)&&G(t.id,{position:t.position}),t.type===`remove`&&B.value.some(e=>e.id===t.id)&&bt(t.id)}function G(e,t){z.value=z.value.map(n=>n.id===e?{...n,...t}:n)}function Tt(e){let t=e.node.id,n=e.node.position,r=z.value.find(e=>e.id===t),i=B.value.find(e=>e.id===t);r?G(t,{position:n}):i&&(W(t,{position:n}),Et(t,n.y)),Mt({refit:!1})}function Et(e,t){let n=B.value.find(t=>t.id===e);if(!n)return;let r=n.parentIds[0]??null,i=new Set(B.value.filter(e=>(e.parentIds[0]??null)===r).map(e=>e.id));if(i.size<=1)return;let a=B.value.filter(e=>i.has(e.id)).sort((n,r)=>(n.id===e?t:n.position.y)-(r.id===e?t:r.position.y)),o=B.value.map((e,t)=>({n:e,i:t})).filter(({n:e})=>i.has(e.id)).map(({i:e})=>e),s=[...B.value];o.forEach((e,t)=>{s[e]=a[t]}),B.value=s}let K=t();function Dt(e){let t=e.edge.id;K.value===t?(K.value=void 0,De({edges:[e.edge]})):K.value=t}function Ot(e){let t=e.node.id;K.value=void 0,z.value.some(e=>e.id===t)?H.value===t?(H.value=void 0,De({nodes:[e.node]})):(H.value=t,V.value=void 0):B.value.some(e=>e.id===t)&&(V.value===t?(V.value=void 0,De({nodes:[e.node]})):(V.value=t,H.value=void 0))}function kt(e){let t=e.target,n=e.source;if(n===t)return;let r=B.value.find(e=>e.id===t);if(!r)return;let i=r.parentIds??[];i.includes(n)||(L.value===`hierarchical`?(W(t,{parentIds:[n]}),i.length>0&&!x.value&&(k.value=!1,C.value=!0)):W(t,{parentIds:[...i,n]}),D(()=>Mt({refit:!1})))}function At(){k.value&&(x.value=!0,localStorage.setItem(lc,`true`)),C.value=!1}function jt(){B.value=B.value.map(e=>({...e,parentIds:e.parentIds.slice(0,1),injectParentOutputs:!1,injectedAncestorIds:[]}))}function Mt({refit:e=!0}={}){let t=new Map;for(let e of B.value)t.set(e.id,[]);for(let e of B.value)e.parentIds[0]&&t.has(e.parentIds[0])&&t.get(e.parentIds[0]).push(e.id);let n=new Map,r=0,i;function a(e,o){let s=B.value.find(t=>t.id===e).groupId??null;s!==i&&(i!==void 0&&(r+=pc),s!==null&&(r+=56),i=s),n.set(e,{x:o*hc,y:r}),r+=58;for(let n of t.get(e)??[])a(n,o+1)}let o=B.value.filter(e=>e.parentIds.length===0),s=o.length>0?o.map(e=>e.id):[I.value];for(let e of s)a(e,0),r+=34,i=void 0;for(let e of B.value){let t=n.get(e.id);t&&W(e.id,{position:t})}for(let e of z.value){let t=B.value.filter(t=>t.groupId===e.id);if(t.length===0)continue;let r=t.map(e=>n.get(e.id)??e.position),i=Math.min(...r.map(e=>e.x))-pc,a=Math.min(...r.map(e=>e.y))-pc-mc,o=Math.max(...r.map(e=>e.x+dc))+pc,s=Math.max(...r.map(e=>e.y+fc))+pc;G(e.id,{position:{x:i,y:a},width:o-i,height:s-a});for(let e of t){let t=n.get(e.id);t&&W(e.id,{position:{x:t.x-i,y:t.y-a}})}}e&&D(()=>Oe({includeHiddenNodes:!1,padding:.1,maxZoom:ke.value.zoom}))}function Nt(e){if(e===`hierarchical`){let e=B.value.filter(e=>e.parentIds.length>1).length;if(B.value.reduce((e,t)=>e+Math.max(0,t.parentIds.length-1),0),e>0){let e=new Map(B.value.map(e=>[e.id,e]));b.value=B.value.filter(e=>e.parentIds.length>1).flatMap(t=>t.parentIds.slice(1).map(n=>({from:e.get(n)?.label||n,to:t.label||t.id}))),u.value=!0;return}jt()}L.value=e}function Pt(e){V.value&&W(V.value,e)}function Ft(e){bt(e)}function It(){let e=new Set(B.value.map(e=>e.id));e.has(I.value)||(I.value=B.value[0]?.id??`leader`),B.value=B.value.map(t=>{if(t.id===I.value)return{...t,parentIds:[]};let n=(t.parentIds??[]).filter(t=>e.has(t));return n.length===0&&t.id!==I.value?{...t,parentIds:[I.value]}:n.length===(t.parentIds??[]).length?t:{...t,parentIds:n}})}async function Lt(){if(Pe.value)return;await A.fetchScenarios();let e=A.scenarios.find(e=>e.id===Ne.value);if(!e){l.add({severity:`error`,summary:o(`scenarioEditor.toast.notFoundSummary`),detail:o(`scenarioEditor.toast.notFoundDetail`),life:3e3}),c.push({name:`settings`,query:{section:`scenario`}});return}Fe.value=e.name,Re.value=e.icon??``,ze.value=e.description??``,I.value=e.leaderId,L.value=e.traversalMode??`hierarchical`,Be.value=e.presetId,Ve.value=e.isPublished??!1,z.value=[...e.groups],B.value=[...e.nodes]}async function Rt(){if(!Fe.value.trim()){l.add({severity:`warn`,summary:o(`scenarioEditor.toast.validationSummary`),detail:o(`scenarioEditor.toast.nameRequired`),life:3e3});return}if(!B.value.length){l.add({severity:`warn`,summary:o(`scenarioEditor.toast.validationSummary`),detail:o(`scenarioEditor.toast.nodeRequired`),life:3e3});return}if(!B.value.some(e=>e.id===I.value)){l.add({severity:`warn`,summary:o(`scenarioEditor.toast.validationSummary`),detail:o(`scenarioEditor.toast.leaderRequired`),life:3e3});return}It();let e={name:Fe.value.trim(),icon:Re.value.trim()||void 0,description:ze.value.trim()||void 0,leaderId:I.value,traversalMode:L.value,presetId:Be.value,isPublished:Ve.value,groups:z.value,nodes:B.value};try{if(Pe.value){let t=await A.createScenario(e);l.add({severity:`success`,summary:o(`scenarioEditor.toast.createdSummary`),detail:o(`scenarioEditor.toast.createdDetail`),life:2500}),c.replace({name:`scenario-edit`,params:{id:t.id}})}else await A.updateScenario(Ne.value,e),l.add({severity:`success`,summary:o(`scenarioEditor.toast.savedSummary`),detail:o(`scenarioEditor.toast.savedDetail`),life:2500})}catch(e){l.add({severity:`error`,summary:`Error`,detail:e.message,life:3500})}}function zt(){c.push({name:`settings`,query:{section:`scenario`}})}let Bt=t(!1),Vt=t(``),q=t(!1),Ht=t(``),Ut=t(``),Wt=t(1),Gt=t(null),Kt=t(null),qt=Ce({leaderId:Se().max(128),groups:xe(we).max(100),nodes:xe(Te).max(500)}),Jt=t(null),Yt=null;function Xt(){Vt.value.trim()&&!q.value&&(Yt?.unsubscribe(),Ht.value=``,Jt.value=null,Ut.value=``,q.value=!0,Yt=be.scenario.streamGenerateWithAI.subscribe({prompt:Vt.value.trim(),providerId:Gt.value??void 0,model:Kt.value??void 0,current:z.value.length>0||B.value.length>0?{leaderId:I.value,groups:z.value,nodes:B.value}:void 0},{onData(e){if(e.type===`delta`)Ht.value+=e.text;else if(e.type===`done`){q.value=!1;let e=Ht.value.trim(),t=e.match(/```(?:json)?\s*([\s\S]*?)```/);t&&(e=t[1].trim());try{let t=qt.parse(JSON.parse(e));Jt.value=t}catch{Ut.value=o(`scenarioEditor.toast.invalidJson`)}}},onError(e){q.value=!1,Ut.value=e.message??`Unknown error`},onComplete(){q.value=!1}}))}function Zt(){if(!Jt.value)return;let{leaderId:e,groups:t,nodes:n}=Jt.value;I.value=e,z.value=t,B.value=n,Jt.value=null,Ht.value=``,Vt.value=``,Bt.value=!1,l.add({severity:`success`,summary:o(`scenarioEditor.toast.appliedSummary`),detail:o(`scenarioEditor.toast.appliedDetail`),life:3e3})}let Qt=t(!1),$t=t(!1),en=t(``),tn=t(``),nn=y(()=>JSON.stringify({name:Fe.value,description:ze.value||void 0,leaderId:I.value,groups:z.value,nodes:B.value},null,2));async function rn(){await navigator.clipboard.writeText(nn.value),l.add({severity:`success`,summary:o(`scenarioEditor.toast.copiedSummary`),life:2e3})}let an=Ce({leaderId:Se().max(128),groups:xe(we).max(100),nodes:xe(Te).max(500),name:Se().max(200).optional(),description:Se().max(2e3).optional()});function on(){tn.value=``;try{let e=an.parse(JSON.parse(en.value));e.name&&(Fe.value=e.name),e.description&&(ze.value=e.description),I.value=e.leaderId,z.value=e.groups,B.value=e.nodes,$t.value=!1,l.add({severity:`success`,summary:o(`scenarioEditor.toast.importedSummary`),life:2e3})}catch(e){tn.value=e.message}}return v(()=>{Yt?.unsubscribe()}),h(async()=>{await Promise.all([Lt(),qe()])}),(t,n)=>{let s=r(`tooltip`);return S(),p(w,null,[f(`div`,ls,[f(`div`,us,[f(`div`,ds,[i(e(F),{icon:`ti ti-arrow-left`,variant:`text`,rounded:``,onClick:zt}),d((S(),p(`div`,fs,[f(`i`,{class:g(e(ve)(Re.value,`photo`)),style:{opacity:`0.5`}},null,2),i(e(M),{modelValue:Re.value,"onUpdate:modelValue":n[0]||=e=>Re.value=e,style:{width:`130px`,"font-size":`0.8rem`},placeholder:`ti-building`},null,8,[`modelValue`])])),[[s,e(o)(`scenarioEditor.iconHint`),void 0,{bottom:!0}]]),i(e(M),{modelValue:Fe.value,"onUpdate:modelValue":n[1]||=e=>Fe.value=e,class:`scenario-editor__name`,placeholder:e(o)(`scenarioEditor.placeholderName`)},null,8,[`modelValue`,`placeholder`]),i(e(M),{modelValue:ze.value,"onUpdate:modelValue":n[2]||=e=>ze.value=e,class:`scenario-editor__desc`,placeholder:e(o)(`scenarioEditor.placeholderDescription`)},null,8,[`modelValue`,`placeholder`]),n[40]||=f(`div`,{style:{flex:`1`}},null,-1),d(i(e(F),{icon:Ve.value?`ti ti-world`:`ti ti-lock`,severity:Ve.value?`success`:`secondary`,variant:`text`,rounded:``,onClick:n[3]||=e=>Ve.value=!Ve.value},null,8,[`icon`,`severity`]),[[s,Ve.value?e(o)(`scenarioEditor.tooltipUnpublish`):e(o)(`scenarioEditor.tooltipPublish`),void 0,{bottom:!0}]]),d(i(e(F),{icon:`ti ti-device-floppy`,onClick:Rt},null,512),[[s,e(o)(`scenarioEditor.tooltipSave`),void 0,{bottom:!0}]])]),f(`div`,ps,[He.value.length>0?(S(),O(e(P),{key:Xe.value,"model-value":Be.value,options:[{label:e(o)(`scenarioEditor.noPreset`),value:void 0},...He.value.map(e=>({label:e.name,value:e.id}))],"option-label":`label`,"option-value":`value`,size:`small`,placeholder:e(o)(`scenarioEditor.noPreset`),class:`scenario-editor__preset-select`,"onUpdate:modelValue":$e},null,8,[`model-value`,`options`,`placeholder`])):j(``,!0),i(e(P),{"model-value":L.value,options:[{label:e(o)(`scenarioEditor.traversalHierarchical`),value:`hierarchical`},{label:e(o)(`scenarioEditor.traversalTopological`),value:`topological`}],"option-label":`label`,"option-value":`value`,size:`small`,disabled:Ue.value!=null&&Ue.value.canChangeTraversalMode===!1,class:`scenario-editor__traversal-select`,"onUpdate:modelValue":Nt},null,8,[`model-value`,`options`,`disabled`]),d(f(`i`,ms,null,512),[[s,{value:e(o)(`scenarioEditor.traversalHelp`),escape:!1},void 0,{bottom:!0}]]),n[43]||=f(`div`,{class:`scenario-editor__toolbar-sep`},null,-1),d(i(e(F),{title:e(R).group,icon:`ti ti-plus`,variant:`text`,size:`small`,severity:`secondary`,label:e(R).group,class:`scenario-editor__toolbar-btn`,onClick:ut},null,8,[`title`,`label`]),[[s,`${e(o)(`actions.add`)} ${e(R).group.toLowerCase()}`,void 0,{bottom:!0}]]),d(i(e(F),{title:e(R).node,icon:`ti ti-plus`,variant:`text`,size:`small`,severity:`secondary`,label:e(R).node,class:`scenario-editor__toolbar-btn`,onClick:Ge},null,8,[`title`,`label`]),[[s,`${e(o)(`actions.add`)} ${e(R).node.toLowerCase()}`,void 0,{bottom:!0}]]),i(e(le),{ref_key:`addNodePopover`,ref:We},{default:T(()=>[f(`div`,hs,[f(`button`,{class:`add-node-popover__item`,onClick:n[4]||=e=>Ke(`ai`)},[n[41]||=f(`i`,{class:`ti ti-brain`,style:{"font-size":`1.1rem`}},null,-1),f(`div`,gs,[f(`span`,_s,`AI `+E(e(R).node),1),f(`span`,vs,E(e(o)(`scenarioEditor.aiNodeDesc`)),1)])]),f(`button`,{class:`add-node-popover__item`,onClick:n[5]||=e=>Ke(`ask`)},[n[42]||=f(`i`,{class:`ti ti-message`,style:{"font-size":`1.1rem`}},null,-1),f(`div`,ys,[f(`span`,bs,`Ask `+E(e(R).node),1),f(`span`,xs,E(e(o)(`scenarioEditor.askNodeDesc`)),1)])])])]),_:1},512),n[44]||=f(`div`,{style:{flex:`1`}},null,-1),d(i(e(F),{icon:`ti ti-sitemap`,variant:`text`,rounded:``,size:`small`,severity:`secondary`,onClick:Mt},null,512),[[s,e(o)(`scenarioEditor.tooltipAutoLayout`),void 0,{bottom:!0}]]),d(i(e(F),{icon:`ti ti-upload`,variant:`text`,rounded:``,size:`small`,severity:`secondary`,onClick:n[6]||=e=>{$t.value=!0,en.value=``,tn.value=``}},null,512),[[s,e(o)(`scenarioEditor.tooltipImport`),void 0,{bottom:!0}]]),d(i(e(F),{icon:`ti ti-download`,variant:`text`,rounded:``,size:`small`,severity:`secondary`,onClick:n[7]||=e=>Qt.value=!0},null,512),[[s,e(o)(`scenarioEditor.tooltipExport`),void 0,{bottom:!0}]]),d(i(e(F),{icon:`ti ti-sparkles`,variant:`text`,rounded:``,size:`small`,severity:Bt.value?`contrast`:`secondary`,onClick:n[8]||=e=>Bt.value=!Bt.value},null,8,[`severity`]),[[s,Bt.value?e(o)(`scenarioEditor.tooltipCloseAI`):e(o)(`scenarioEditor.tooltipGenerateAI`),void 0,{bottom:!0}]])])]),f(`div`,Ss,[Bt.value?(S(),p(`div`,Cs,[f(`div`,ws,[n[45]||=f(`i`,{class:`ti ti-sparkles`},null,-1),f(`span`,null,E(e(o)(`scenarioEditor.aiPanelTitle`)),1)]),Wt.value>0?(S(),p(`div`,Ts,[f(`label`,Es,E(e(o)(`scenarioEditor.aiProvider`)),1),i(ge,{"input-id":`scened-ai-provider`,modelValue:Gt.value,"onUpdate:modelValue":n[9]||=e=>Gt.value=e,model:Kt.value,"onUpdate:model":n[10]||=e=>Kt.value=e,"storage-key":`runeya.scenario.generateAi`,"hide-when-single":!1,placeholder:e(o)(`scenarioEditor.aiSelectProvider`),class:`w-full`,disabled:q.value,onLoaded:n[11]||=e=>Wt.value=e},null,8,[`modelValue`,`model`,`placeholder`,`disabled`])])):(S(),p(`div`,Ds,[n[46]||=f(`i`,{class:`ti ti-alert-triangle`},null,-1),f(`span`,{innerHTML:e(o)(`scenarioEditor.aiNoProvider`)},null,8,Os)])),i(e(he),{modelValue:Vt.value,"onUpdate:modelValue":n[12]||=e=>Vt.value=e,placeholder:e(o)(`scenarioEditor.aiPromptPlaceholder`),rows:4,class:`scenario-editor__ai-textarea`,disabled:q.value,onKeydown:ne(ie(Xt,[`ctrl`]),[`enter`])},null,8,[`modelValue`,`placeholder`,`disabled`,`onKeydown`]),i(e(F),{label:q.value?e(o)(`scenarioEditor.aiGenerating`):B.value.length>0?e(o)(`scenarioEditor.aiModify`):e(o)(`scenarioEditor.aiGenerate`),icon:`ti ti-sparkles`,loading:q.value,disabled:!Vt.value.trim(),class:`scenario-editor__ai-btn`,onClick:Xt},null,8,[`label`,`loading`,`disabled`]),f(`p`,ks,E(e(o)(`scenarioEditor.aiHint`)),1),Ht.value||q.value?(S(),p(`div`,As,[f(`div`,js,[q.value?(S(),p(`i`,Ms)):Jt.value?(S(),p(`i`,Ns)):(S(),p(`i`,Ps)),f(`span`,null,E(q.value?e(o)(`scenarioEditor.aiGenerating`):Jt.value?e(o)(`scenarioEditor.aiValidJson`):e(o)(`scenarioEditor.aiRawResponse`)),1)]),f(`pre`,Fs,E(Ht.value),1)])):j(``,!0),Ut.value?(S(),p(`div`,Is,[n[47]||=f(`i`,{class:`ti ti-circle-x`},null,-1),a(` `+E(Ut.value),1)])):j(``,!0),Jt.value?(S(),O(e(F),{key:4,label:e(o)(`scenarioEditor.aiApply`),icon:`ti ti-check`,severity:`success`,class:`scenario-editor__ai-btn`,onClick:Zt},null,8,[`label`])):j(``,!0)])):j(``,!0),f(`div`,{class:`scenario-editor__canvas`,tabindex:`0`,onKeydown:Ae},[i(e(Me),{nodes:ot.value,edges:lt.value,"nodes-draggable":!0,"nodes-connectable":!0,"elements-selectable":!0,"delete-key-code":null,"fit-view-on-init":``,id:uc,class:`scenario-flow-canvas`,onNodeDragStop:Tt,onNodeClick:Ot,onEdgeClick:Dt,onPaneClick:n[13]||=e=>{V.value=void 0,H.value=void 0,K.value=void 0},onConnect:kt,onNodesChange:wt,onEdgesChange:Ct},{"node-default":T(e=>[i(Ie,ee(te(e)),null,16)]),"node-group":T(e=>[i(je,_(e,{onUpdateLabel:xt,onResizeEnd:St,onRemove:mt}),null,16)]),default:T(()=>[i(e(nt)),i(e(Oo))]),_:1},8,[`nodes`,`edges`])],32),i(re,{name:`drawer`},{default:T(()=>[H.value||V.value?(S(),p(`div`,Ls,[f(`div`,Rs,[f(`i`,{class:g([H.value?`ti ti-users`:`ti ti-brain`,`detail-header__icon`])},null,2),f(`span`,zs,E(H.value?e(R).group:e(R).node),1),i(e(F),{icon:`ti ti-x`,variant:`text`,rounded:``,size:`small`,class:`detail-header__close`,onClick:n[14]||=e=>{H.value=void 0,V.value=void 0}})]),H.value&&z.value.find(e=>e.id===H.value)?(S(),p(w,{key:0},[f(`div`,Bs,[f(`div`,Vs,[f(`label`,Hs,E(e(o)(`scenarioEditor.groupName`)),1),i(e(M),{id:`scened-group-name`,"model-value":z.value.find(e=>e.id===H.value).name,class:`w-full`,size:`small`,"onUpdate:modelValue":n[15]||=e=>G(H.value,{name:e})},null,8,[`model-value`])]),f(`div`,Us,[f(`label`,Ws,E(e(o)(`scenarioEditor.groupDescription`)),1),i(e(he),{id:`scened-group-desc`,"model-value":z.value.find(e=>e.id===H.value).description??``,class:`w-full`,placeholder:e(o)(`scenarioEditor.groupDescriptionPlaceholder`),rows:`3`,"auto-resize":``,style:{resize:`none`},"onUpdate:modelValue":n[16]||=e=>G(H.value,{description:e||void 0})},null,8,[`model-value`,`placeholder`])]),f(`div`,Gs,[f(`label`,Ks,E(e(o)(`scenarioEditor.groupAccentColor`)),1),f(`div`,qs,[i(e(pe),{id:`scened-group-color`,"model-value":(z.value.find(e=>e.id===H.value).color??`#6366f1`).replace(/^#/,``),"onUpdate:modelValue":n[17]||=e=>G(H.value,{color:`#${e}`})},null,8,[`model-value`]),i(e(M),{"model-value":z.value.find(e=>e.id===H.value).color??``,placeholder:`#6366f1`,size:`small`,class:`detail-color-text`,"onUpdate:modelValue":n[18]||=e=>G(H.value,{color:e||void 0})},null,8,[`model-value`]),z.value.find(e=>e.id===H.value).color?d((S(),O(e(F),{key:0,icon:`ti ti-x`,variant:`text`,rounded:``,size:`small`,severity:`secondary`,onClick:n[19]||=e=>G(H.value,{color:void 0})},null,512)),[[s,e(o)(`scenarioEditor.groupResetColor`)]]):j(``,!0)])])]),f(`div`,Js,[i(e(F),{label:`${e(o)(`actions.delete`)} ${e(R).group.toLowerCase()}`,icon:`ti ti-trash`,severity:`danger`,variant:`outlined`,size:`small`,class:`w-full`,onClick:n[20]||=e=>mt(H.value)},null,8,[`label`])])],64)):V.value&&B.value.find(e=>e.id===V.value)?(S(),p(w,{key:1},[(S(),O(cs,{key:V.value,node:B.value.find(e=>e.id===V.value),groups:z.value,nodes:B.value,"leader-id":I.value,preset:Ue.value,"traversal-mode":L.value,onUpdate:Pt,onDelete:Ft,onSetLeader:n[21]||=e=>I.value=e},null,8,[`node`,`groups`,`nodes`,`leader-id`,`preset`,`traversal-mode`])),V.value===I.value?j(``,!0):(S(),p(`div`,Ys,[i(e(F),{label:`${e(o)(`actions.delete`)} ${e(R).node.toLowerCase()}`,icon:`ti ti-trash`,severity:`danger`,variant:`outlined`,size:`small`,class:`w-full`,onClick:n[22]||=e=>Ft(V.value)},null,8,[`label`])]))],64)):j(``,!0)])):j(``,!0)]),_:1})])]),i(e(de),{visible:C.value,"onUpdate:visible":n[24]||=e=>C.value=e,header:e(o)(`scenarioEditor.multiParentNoticeTitle`),modal:``,style:{width:`420px`}},{footer:T(()=>[i(e(F),{label:e(o)(`actions.ok`),onClick:At},null,8,[`label`])]),default:T(()=>[f(`p`,Xs,E(e(o)(`scenarioEditor.multiParentNoticeMessage`)),1),f(`div`,Zs,[i(e(N),{modelValue:k.value,"onUpdate:modelValue":n[23]||=e=>k.value=e,binary:``,"input-id":`dontShowAgain`},null,8,[`modelValue`]),f(`label`,Qs,E(e(o)(`scenarioEditor.dontShowAgain`)),1)])]),_:1},8,[`visible`,`header`]),i(e(de),{visible:dt.value,"onUpdate:visible":n[27]||=e=>dt.value=e,header:e(o)(`scenarioEditor.deleteGroupTitle`),modal:``,style:{width:`380px`}},{footer:T(()=>[i(e(F),{label:e(o)(`actions.cancel`),variant:`text`,onClick:n[25]||=e=>dt.value=!1},null,8,[`label`]),i(e(F),{label:e(o)(`actions.delete`),severity:`danger`,onClick:n[26]||=()=>{dt.value=!1,ht(ft.value)}},null,8,[`label`])]),default:T(()=>[f(`p`,$s,E(e(o)(`scenarioEditor.deleteGroupMessage`,{count:pt.value})),1)]),_:1},8,[`visible`,`header`]),i(e(de),{visible:u.value,"onUpdate:visible":n[30]||=e=>u.value=e,header:e(o)(`scenarioEditor.switchToHierarchicalTitle`),modal:``,style:{width:`400px`}},{footer:T(()=>[i(e(F),{label:e(o)(`actions.cancel`),variant:`text`,onClick:n[28]||=e=>u.value=!1},null,8,[`label`]),i(e(F),{label:e(o)(`actions.confirm`),severity:`danger`,onClick:n[29]||=()=>{u.value=!1,L.value=`hierarchical`,jt()}},null,8,[`label`])]),default:T(()=>[f(`p`,ec,E(e(o)(`scenarioEditor.switchToHierarchicalMessage`)),1),f(`ul`,tc,[(S(!0),p(w,null,m(b.value,e=>(S(),p(`li`,{key:`${e.from}-${e.to}`},[f(`span`,nc,E(e.from),1),n[48]||=f(`i`,{class:`ti ti-arrow-right switch-dialog__arrow`},null,-1),f(`span`,rc,E(e.to),1)]))),128))])]),_:1},8,[`visible`,`header`]),i(e(de),{visible:rt.value,"onUpdate:visible":n[33]||=e=>rt.value=e,header:it.value===`ask`?`${e(o)(`actions.add`)} Ask ${e(R).node}`:`${e(o)(`actions.add`)} AI ${e(R).node}`,modal:``,style:{width:`360px`}},{footer:T(()=>[i(e(F),{label:e(o)(`actions.cancel`),severity:`secondary`,variant:`text`,onClick:n[32]||=e=>rt.value=!1},null,8,[`label`]),i(e(F),{label:e(o)(`actions.add`),icon:`ti ti-user-plus`,disabled:!U.value,onClick:yt},null,8,[`label`,`disabled`])]),default:T(()=>[f(`div`,ic,[f(`label`,ac,[a(E(e(R).group)+` `,1),n[49]||=f(`span`,{class:`required`},`*`,-1)]),i(e(P),{"input-id":`scened-add-node-group`,modelValue:U.value,"onUpdate:modelValue":n[31]||=e=>U.value=e,options:z.value.map(e=>({label:e.name,value:e.id})),"option-label":`label`,"option-value":`value`,placeholder:`${e(o)(`actions.add`)} ${e(R).group.toLowerCase()}`,class:`w-full`},null,8,[`modelValue`,`options`,`placeholder`])])]),_:1},8,[`visible`,`header`]),i(e(de),{visible:Qt.value,"onUpdate:visible":n[35]||=e=>Qt.value=e,header:e(o)(`scenarioEditor.exportHeader`),modal:``,"dismissable-mask":``,style:{width:`600px`}},{footer:T(()=>[i(e(F),{label:e(o)(`scenarioEditor.copyJson`),icon:`ti ti-copy`,onClick:rn},null,8,[`label`]),i(e(F),{label:e(o)(`actions.close`),severity:`secondary`,variant:`text`,onClick:n[34]||=e=>Qt.value=!1},null,8,[`label`])]),default:T(()=>[f(`pre`,oc,E(nn.value),1)]),_:1},8,[`visible`,`header`]),i(e(de),{visible:$t.value,"onUpdate:visible":n[38]||=e=>$t.value=e,header:e(o)(`scenarioEditor.importHeader`),modal:``,style:{width:`600px`}},{footer:T(()=>[i(e(F),{label:e(o)(`actions.cancel`),severity:`secondary`,variant:`text`,onClick:n[37]||=e=>$t.value=!1},null,8,[`label`]),i(e(F),{label:e(o)(`actions.apply`),icon:`ti ti-check`,disabled:!en.value.trim(),onClick:on},null,8,[`label`,`disabled`])]),default:T(()=>[i(e(he),{modelValue:en.value,"onUpdate:modelValue":n[36]||=e=>en.value=e,rows:`12`,class:`w-full`,placeholder:e(o)(`scenarioEditor.importPlaceholder`)},null,8,[`modelValue`,`placeholder`]),tn.value?(S(),p(`p`,sc,E(tn.value),1)):j(``,!0)]),_:1},8,[`visible`,`header`]),i(e(de),{visible:Je.value,"onUpdate:visible":n[39]||=e=>Je.value=e,header:e(o)(`scenarioEditor.applyPresetHeader`),modal:``,style:{width:`400px`}},{footer:T(()=>[i(e(F),{label:e(o)(`actions.cancel`),severity:`secondary`,variant:`text`,onClick:tt},null,8,[`label`]),i(e(F),{label:e(o)(`scenarioEditor.applyPresetConfirm`),icon:`ti ti-refresh`,severity:`warn`,onClick:et},null,8,[`label`])]),default:T(()=>[f(`p`,cc,E(e(o)(`scenarioEditor.applyPresetMessage`)),1)]),_:1},8,[`visible`,`header`])],64)}}}),[[`__scopeId`,`data-v-85fe37a4`]]);export{_c as default};
@@ -0,0 +1 @@
1
+ import{B as e,C as t}from"./reactivity.esm-bundler-BQ9SB2vv.js";import{k as n,mt as r,v as i}from"./runtime-core.esm-bundler-DujKY9QV.js";import{n as a}from"./vue-i18n-o7yraQpR.js";import{P as o}from"./src-DIBHat7I.js";import{n as s}from"./cloud-client-CzPdZLDq.js";import{t as c}from"./src-DtCW_XCh.js";import{t as l}from"./useProjectCloudOrg-Czxlg00k.js";var u=n({__name:`SendToChatDialog`,setup(n,{expose:u}){let{t:d}=a(),f=o(),{orgId:p,cloudUser:m}=l(),h=t(null);function g(e,t){return t?d(`sendToChat.${e}`,t):d(`sendToChat.${e}`)}function _(){f.add({severity:`success`,summary:d(`sendToChat.sent`),life:2500})}function v(e){p.value&&h.value?.open(e)}return u({open:v}),(t,n)=>(r(),i(e(c),{ref_key:`dialogRef`,ref:h,client:e(s),t:g,"current-user-id":e(m)?.id,"org-id":e(p),"lock-organization":``,onSent:_},null,8,[`client`,`current-user-id`,`org-id`]))}});export{u as t};
@@ -0,0 +1 @@
1
+ import{B as e}from"./reactivity.esm-bundler-BQ9SB2vv.js";import{D as t,_ as n,b as r,g as i,k as a,mt as o}from"./runtime-core.esm-bundler-DujKY9QV.js";import{n as s}from"./vue-i18n-o7yraQpR.js";import{U as c,ft as l}from"./src-DIBHat7I.js";import{t as u}from"./agent.store-piokQ9Dt.js";import{r as d,t as f}from"./process-BWkHpZOM.js";import{t as p}from"./ProcessControls-TEZutuxq.js";var m={class:`service-controls-bar`},h={class:`service-controls-bar__left`},g={class:`service-controls-bar__right`},_=l(a({__name:`ServiceControlsBar`,props:{service:{},processes:{}},setup(a){let l=a,_=i(()=>f(l.processes)),v=i(()=>_.value?_.value.state:`stopped`),{t:y}=s(),b=u(),x=i(()=>{let e=d(l.service);return e?b.getById(e)?.config.name??e:null}),S=i(()=>{switch(v.value){case`running`:return`success`;case`starting`:return`warn`;case`errored`:return`danger`;default:return`secondary`}});return(i,s)=>(o(),r(`div`,m,[n(`div`,h,[t(e(c),{value:v.value,severity:S.value,class:`service-controls-bar__tag`},null,8,[`value`,`severity`]),t(e(c),{value:x.value??e(y)(`serviceHeader.noAgent`),severity:x.value?`secondary`:`warn`,icon:`ti ti-server`,class:`service-controls-bar__tag`},null,8,[`value`,`severity`])]),n(`div`,g,[t(p,{"agent-id":e(d)(a.service,_.value)??``,"process-id":_.value?.id??a.service.id,state:_.value?.state??`stopped`},null,8,[`agent-id`,`process-id`,`state`])])]))}}),[[`__scopeId`,`data-v-16d68026`]]);export{_ as t};
@@ -0,0 +1,2 @@
1
+ import{B as e,C as t}from"./reactivity.esm-bundler-BQ9SB2vv.js";import{D as n,E as r,Ht as i,_ as a,b as o,bt as s,ct as c,en as l,ft as u,g as d,k as f,mt as p,o as m,qt as h,rn as g,tt as _,v,y}from"./runtime-core.esm-bundler-DujKY9QV.js";import{C as b,w as x}from"./runtime-dom.esm-bundler-CyEVRK6B.js";import{n as S}from"./vue-i18n-o7yraQpR.js";import{n as C}from"./project-launch.store-CTmbl8UY.js";import{g as w,h as T}from"./useApi-s_02lHjl-DZYO2tHU.js";import{t as E}from"./vue-router-fin80h5W.js";import{B as D,D as O,E as k,H as A,J as j,O as M,P as N,S as P,U as F,W as I,Y as L,_ as R,b as ee,dt as z,ft as B,g as V,h as te,i as ne,j as re,k as H,l as U,m as ie,n as W,o as G,p as ae,q as oe,r as K,v as q,x as se,y as J,z as ce}from"./src-DIBHat7I.js";import{a as Y,n as le,r as X}from"./trpc-BAZGRZBD.js";import{n as ue,r as de}from"./project.store-CNC6_4r4.js";import{n as Z,r as Q}from"./error-DpF7X5iu.js";import{n as fe}from"./AiChatModals-C-hXImkO.js";import{t as pe}from"./useAiChatDrawer-D_ofn8Eo.js";import{a as me,h as he,p as ge}from"./dist-N4nrnbnA.js";import{t as _e}from"./service.store-B40U4QzI.js";import{t as ve}from"./agent.store-piokQ9Dt.js";import{r as $}from"./process-BWkHpZOM.js";import{L as ye,R as be,c as xe}from"./index-Ci2CNnit.js";import{t as Se}from"./ServiceControlsBar-B_J5m-Kc.js";import{t as Ce}from"./uuid-XipkJWQw.js";import{i as we,n as Te,r as Ee,t as De}from"./useEnvVarAutocomplete-BxJh2Lw0.js";import{t as Oe}from"./ProcessMetrics-1P6iE2Il.js";import{t as ke}from"./LogViewer-DsusKk2b.js";import{t as Ae}from"./settings.store-Dw6bAoWE.js";import{t as je}from"./WikiView-CMch_06Z.js";var Me={key:0,class:`log-details`},Ne={class:`log-details__section`},Pe={class:`log-details__label`},Fe={class:`log-details__value log-details__value--box`},Ie={class:`log-details__section`},Le={class:`log-details__label`},Re={class:`log-details__value log-details__value--box log-details__value--code`},ze={class:`log-details__section`},Be={class:`log-details__label`},Ve={class:`log-details__value log-details__value--box`},He={class:`log-details__process`},Ue={class:`log-details__section`},We={class:`log-details__label`},Ge={class:`log-details__value log-details__value--box`},Ke={key:0,class:`log-details__section`},qe={class:`log-details__label`},Je={class:`log-details__value log-details__value--box log-details__value--code`,"data-testid":`log-details-cwd`},Ye={class:`log-details__section`},Xe={class:`log-details__label`},Ze={class:`log-details__value log-details__value--box`},Qe={key:1,class:`log-details__section`},$e={class:`log-details__label`},et={class:`log-details__value log-details__value--box`},tt={key:2,class:`log-details__section`},nt={class:`log-details__label`},rt={class:`log-details__value log-details__value--box log-details__value--code`},it=B(f({__name:`LogDetailsDrawer`,props:{visible:{type:Boolean},log:{}},emits:[`update:visible`,`view-process`],setup(t,{emit:r}){let i=t,{t:s}=S(),c=xe(),l=r,u=d(()=>{if(!i.log)return``;let e=new Date(i.log.timestamp);return`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,`0`)}-${String(e.getDate()).padStart(2,`0`)} ${String(e.getHours()).padStart(2,`0`)}:${String(e.getMinutes()).padStart(2,`0`)}:${String(e.getSeconds()).padStart(2,`0`)}`}),f=d(()=>i.log?i.log.level.charAt(0).toUpperCase()+i.log.level.slice(1):``),m=d(()=>!i.log||i.log.pid==null?s(`logDetails.notAvailable`):String(i.log.pid)),_=d(()=>i.log?c.getByService(i.log.processId)[0]?.cwd??null:null);function b(){i.log&&l(`view-process`,i.log.processId)}function x(){l(`update:visible`,!1)}return(r,i)=>(p(),v(e(G),{visible:t.visible,position:`right`,header:e(s)(`logDetails.header`),style:{width:`440px`},"onUpdate:visible":x},{default:h(()=>[t.log?(p(),o(`div`,Me,[a(`div`,Ne,[a(`div`,Pe,g(e(s)(`logDetails.type`)),1),a(`div`,Fe,g(f.value),1)]),a(`div`,Ie,[a(`div`,Le,g(e(s)(`logDetails.rawMessage`)),1),a(`div`,Re,g(t.log.raw),1)]),a(`div`,ze,[a(`div`,Be,g(e(s)(`logDetails.serviceId`)),1),a(`div`,Ve,[a(`div`,He,[a(`span`,null,g(t.log.processId),1),n(e(z),{label:e(s)(`logDetails.viewProcess`),icon:`ti ti-external-link`,size:`small`,variant:`outlined`,onClick:b},null,8,[`label`])])])]),a(`div`,Ue,[a(`div`,We,g(e(s)(`logDetails.pid`)),1),a(`div`,Ge,g(m.value),1)]),_.value?(p(),o(`div`,Ke,[a(`div`,qe,g(e(s)(`logDetails.cwd`)),1),a(`div`,Je,g(_.value),1)])):y(``,!0),a(`div`,Ye,[a(`div`,Xe,g(e(s)(`logDetails.timestamp`)),1),a(`div`,Ze,g(u.value),1)]),t.log.stream?(p(),o(`div`,Qe,[a(`div`,$e,g(e(s)(`logDetails.stream`)),1),a(`div`,et,g(t.log.stream),1)])):y(``,!0),t.log.metadata&&Object.keys(t.log.metadata).length>0?(p(),o(`div`,tt,[a(`div`,nt,g(e(s)(`logDetails.metadata`)),1),a(`div`,rt,g(JSON.stringify(t.log.metadata,null,2)),1)])):y(``,!0)])):y(``,!0)]),_:1},8,[`visible`,`header`]))}}),[[`__scopeId`,`data-v-b2c352ef`]]),at=500,ot=5,st=me;function ct(e){return e+Math.random()*e*.3}function lt(e,n){let r=t([]),a=t(!1),o=null,s=0,c=null,l=le(()=>{s=0,a.value||C()}),d=[],f=null,p=t(0),m=t(0),h=0,g=0,_=null;function v(){_||=setInterval(()=>{p.value=h,m.value=g,h=0,g=0},1e3)}function y(){_&&=(clearInterval(_),null),p.value=0,m.value=0,h=0,g=0}function b(){if(f=null,d.length===0)return;let e=d;d=[],g+=e.length;let t=[...r.value,...e];t.length>at&&(t=t.slice(t.length-at)),r.value=t}function x(){e.value&&n.value&&(a.value=!0,o=X.process.onLog.subscribe({agentId:e.value,processId:n.value},{onData(e){let t=e;if(s=0,Y(`connected`),t.some(e=>e.__clearLogBuffer)){r.value=[],d=[];return}h+=t.length,d.push(...t),f===null&&(f=requestAnimationFrame(b))},onError(e){console.error(`[useLogStream] Subscription error:`,e.message),a.value=!1,o=null,S()}}))}function S(){if(s>=ot){console.warn(`[useLogStream] Max retries (${ot}) reached`),Y(`disconnected`);return}Y(`reconnecting`);let e=ct(st*2**s);s++,c=setTimeout(()=>{c=null,C()},e)}async function C(){if(!a.value&&e.value&&n.value){s=0;try{let t=await X.process.logs.query({agentId:e.value,processId:n.value});t.length>at&&(t=t.slice(t.length-at)),r.value=t,Y(`connected`)}catch{}x()}}function w(){c&&=(clearTimeout(c),null),f!==null&&(cancelAnimationFrame(f),f=null),d=[],y(),o&&=(o.unsubscribe(),null),a.value=!1,s=0,r.value=[]}return i([e,n],([e,t],[n,r])=>{(e!==n||t!==r)&&(a.value&&w(),C())}),u(()=>{l(),w()}),{logs:r,isStreaming:a,start:C,stop:w,receivedPerSec:p,flushedPerSec:m,startStats:v,stopStats:y}}var ut={class:`service-terminal__toolbar`},dt={class:`service-terminal__toolbar-left`},ft={key:0,class:`pid-option`},pt={key:1,class:`pid-option`},mt={key:0,class:`ti ti-circle-filled pid-status-icon pid-status-icon--active`,style:{"margin-right":`0.5rem`}},ht={key:1,class:`ti ti-circle-filled pid-status-icon pid-status-icon--stopped`,style:{"margin-right":`0.5rem`}},gt={class:`pid-option`},_t={key:0,class:`ti ti-list`,style:{"margin-right":`0.5rem`}},vt=[`title`],yt=[`title`],bt={class:`service-terminal__toolbar-right`},xt={class:`service-terminal__content`,"data-testid":`service-terminal-content`},St={key:1,class:`service-terminal__shortcuts`},Ct={class:`service-terminal__command-input`},wt={class:`service-terminal__bottom`},Tt=`runeya_command_history_`,Et=50,Dt=B(f({__name:`ServiceTerminal`,props:{service:{},processes:{}},setup(r){let{t:f}=S(),b=r,x=d(()=>b.processes.find(e=>e.state===`running`||e.state===`starting`)??b.processes[0]??null),C=d(()=>x.value?.agentId??``),w=d(()=>x.value?.id??``),T=N(),{logs:E,isStreaming:D,start:O,stop:k,receivedPerSec:A,flushedPerSec:j,startStats:M,stopStats:I}=lt(C,w),L=t(!1);i(L,e=>{e?M():I()});function R(e){e.ctrlKey&&e.shiftKey&&(e.key===`*`||e.key===`µ`)&&(e.preventDefault(),L.value=!L.value)}let ee=d(()=>{let e=new Map;return E.value.forEach(t=>{if(t.pid!=null){let n=e.get(t.pid);if(n)n.lastSeen=new Date(Math.max(n.lastSeen.getTime(),new Date(t.timestamp).getTime())),n.logCount++;else{let n=b.processes.find(e=>e.pid===t.pid&&(e.state===`running`||e.state===`starting`));e.set(t.pid,{pid:t.pid,lastSeen:new Date(t.timestamp),logCount:1,isActive:!!n})}}}),Array.from(e.values()).sort((e,t)=>t.lastSeen.getTime()-e.lastSeen.getTime())}),B=d(()=>be.value===`all`?E.value:E.value.filter(e=>e.pid===be.value)),V=d(()=>ee.value.filter(e=>e.isActive).length),te=d(()=>{let e=[{label:f(`serviceTerminal.allProcesses`),value:`all`,badge:V.value>0?`${V.value} ${f(`serviceTerminal.active`)}`:void 0,isActive:void 0}];return ee.value.forEach(({pid:t,logCount:n,isActive:r})=>{e.push({label:`PID: ${t}`,value:t,badge:`${n} logs`,isActive:r})}),e});d(()=>b.processes.filter(e=>e.state===`running`).length);async function re(){if(x.value)try{await X.process.clearLogBuffer.mutate({agentId:x.value.agentId,processId:x.value.id}),E.value=[]}catch(e){T.add({severity:`error`,summary:f(`serviceTerminal.error`),detail:e.message??f(`serviceTerminal.failedToClearLogs`),life:5e3})}}let H=d(()=>b.service.shortcuts??[]),U=t(new Set);async function ie(e){let t=$(b.service,x.value),n=x.value?.id??b.service.id;if(!t){T.add({severity:`warn`,summary:f(`serviceTerminal.noAgent`),detail:f(`serviceTerminal.noAgentDesc`),life:3e3});return}if(U.value.has(e.id)){try{await X.process.cancelShortcut.mutate({agentId:t,processId:n,shortcutId:e.id})}catch{}return}U.value=new Set([...U.value,e.id]);try{await X.process.executeShortcut.mutate({agentId:t,processId:n,shortcut:e})}catch(e){T.add({severity:`error`,summary:f(`serviceTerminal.shortcutFailed`),detail:e.message??f(`serviceTerminal.shortcutFailed`),life:5e3})}finally{let t=new Set(U.value);t.delete(e.id),U.value=t}}let W=t(``),G=t(new Set),ae=d(()=>G.value.size>0),oe=t(null),K=t([]),q=t(-1),se=`ls,ls -la,ls -lh,pwd,echo,echo $PWD,cat,cat package.json,grep,find,find . -name,ps,ps aux,top,htop,df -h,du -sh,tail,tail -f,tail -n 100,head,head -n 20,wc -l,curl,wget,git status,git log,git diff,git branch,npm run,npm install,npm test,npm start,yarn,yarn install,yarn test,yarn build,docker ps,docker logs,docker exec,env,printenv,whoami,hostname,date,uptime`.split(`,`),J=t([]);function ce(e){let t=e.query.toLowerCase().trim();if(!t||!W.value.trim()){J.value=[];return}let n=[...K.value.slice().reverse(),...se],r=new Set;J.value=n.filter(e=>!r.has(e)&&(r.add(e),e.toLowerCase().includes(t))).slice(0,10)}function Y(){try{let e=localStorage.getItem(Tt+b.service.id);e&&(K.value=JSON.parse(e))}catch{K.value=[]}}function le(){try{localStorage.setItem(Tt+b.service.id,JSON.stringify(K.value))}catch{}}function ue(e){K.value[K.value.length-1]!==e&&(K.value=[...K.value,e],K.value.length>Et&&(K.value=K.value.slice(-50)),le())}async function de(){let e=$(b.service,x.value),t=x.value?.id??b.service.id;if(e)try{await X.process.cancelAdHocCommand.mutate({agentId:e,processId:t})}catch{}}async function Z(){if(!W.value.trim())return;let e=$(b.service,x.value),t=x.value?.id??b.service.id;if(!e){T.add({severity:`warn`,summary:f(`serviceTerminal.noAgent`),detail:f(`serviceTerminal.noAgentDesc`),life:3e3});return}let n=Ce(),r=W.value.trim();ue(r),W.value=``,J.value=[],q.value=-1,G.value=new Set([...G.value,n]);try{await X.process.executeAdHocCommand.mutate({agentId:e,processId:t,command:r,commandId:n})}catch(e){T.add({severity:`error`,summary:f(`serviceTerminal.commandFailed`),detail:e.message??f(`serviceTerminal.commandFailed`),life:5e3})}finally{let e=new Set(G.value);e.delete(n),G.value=e,_(()=>{document.querySelector(`.service-terminal__input`)?.focus()})}}function Q(e){if(e.key===`Enter`&&!e.shiftKey){e.preventDefault(),Z();return}if(e.key===`ArrowUp`){if(e.preventDefault(),K.value.length===0)return;q.value===-1?q.value=K.value.length-1:q.value>0&&q.value--,W.value=K.value[q.value]||``}else if(e.key===`ArrowDown`){if(e.preventDefault(),q.value===-1)return;q.value<K.value.length-1?(q.value++,W.value=K.value[q.value]||``):(q.value=-1,W.value=``)}}function fe(){if(E.value.length===0)return;let e=E.value.map(e=>`[${new Date(e.timestamp).toISOString()}] ${e.level.toUpperCase().padEnd(5)} ${e.message}`),t=new Blob([e.join(`
2
+ `)],{type:`text/plain`}),n=URL.createObjectURL(t),r=document.createElement(`a`);r.href=n,r.download=`${b.service.name}-${new Date().toISOString().slice(0,19).replaceAll(`:`,`-`)}.log`,document.body.appendChild(r),r.click(),document.body.removeChild(r),URL.revokeObjectURL(n)}let pe=t(0),me=0,he=null,ge=null;i(x,e=>{if(!e||e.state!==`running`&&e.state!==`starting`){he&&=(clearInterval(he),null),ge=null,pe.value=e?.uptime??0;return}let t=e.uptime??0;e.id!==ge&&(he&&=(clearInterval(he),null),ge=e.id,me=e.startedAt?new Date(e.startedAt).getTime():Date.now()-t,pe.value=Date.now()-me,he=setInterval(()=>{pe.value=Date.now()-me},1e3))},{immediate:!0});let _e=t(!0),ve=t(null),ye=t(!1),be=t(`all`),xe=t(!1);function we(){xe.value=!xe.value}c(()=>{Y(),x.value&&O(),window.addEventListener(`keydown`,R)}),u(()=>{k(),window.removeEventListener(`keydown`,R),he&&clearInterval(he)});function Te(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 Ee(e){ve.value=e,ye.value=!0}function De(e){ye.value=!1,T.add({severity:`info`,summary:`Process`,detail:`Process ID: ${e}`,life:3e3})}return(t,i)=>(p(),o(`div`,{class:l([`service-terminal`,{"service-terminal--fullscreen":xe.value}]),"data-testid":`service-terminal`},[xe.value?(p(),v(Se,{key:0,service:r.service,processes:r.processes},null,8,[`service`,`processes`])):y(``,!0),a(`div`,ut,[a(`div`,dt,[n(e(z),{label:e(f)(`serviceTerminal.logs`),severity:_e.value?`primary`:`secondary`,variant:`text`,size:`small`,onClick:i[0]||=e=>_e.value=!0},null,8,[`label`,`severity`]),n(e(P),{modelValue:be.value,"onUpdate:modelValue":i[1]||=e=>be.value=e,options:te.value,"option-label":`label`,"option-value":`value`,class:`service-terminal__pid-selector`,size:`small`},{value:h(t=>[t.value===`all`?(p(),o(`div`,ft,[i[5]||=a(`i`,{class:`ti ti-list`,style:{"margin-right":`0.5rem`}},null,-1),a(`span`,null,g(e(f)(`serviceTerminal.allProcesses`)),1),V.value>0?(p(),v(e(F),{key:0,value:`${V.value} ${e(f)(`serviceTerminal.active`)}`,severity:`secondary`,class:`pid-badge`},null,8,[`value`])):y(``,!0)])):(p(),o(`div`,pt,[te.value.find(e=>e.value===t.value)?.isActive?(p(),o(`i`,mt)):(p(),o(`i`,ht)),a(`span`,null,`PID: `+g(t.value),1)]))]),option:h(t=>[a(`div`,gt,[t.option.value===`all`?(p(),o(`i`,_t)):t.option.isActive?(p(),o(`i`,{key:1,class:`ti ti-circle-filled pid-status-icon pid-status-icon--active`,title:e(f)(`serviceTerminal.running`)},null,8,vt)):(p(),o(`i`,{key:2,class:`ti ti-circle-filled pid-status-icon pid-status-icon--stopped`,title:e(f)(`serviceTerminal.stopped`)},null,8,yt)),a(`span`,null,g(t.option.label),1),t.option.badge?(p(),v(e(F),{key:3,value:t.option.badge,severity:`secondary`,class:`pid-badge`},null,8,[`value`])):y(``,!0)])]),_:1},8,[`modelValue`,`options`])]),a(`div`,bt,[n(e(z),{icon:xe.value?`ti ti-minimize`:`ti ti-maximize`,variant:`text`,rounded:``,size:`small`,title:xe.value?e(f)(`serviceTerminal.exitFullscreen`):e(f)(`serviceTerminal.fullscreen`),onClick:we},null,8,[`icon`,`title`]),n(e(z),{icon:`ti ti-download`,variant:`text`,rounded:``,size:`small`,title:e(f)(`serviceTerminal.downloadLogs`),disabled:e(E).length===0,onClick:fe},null,8,[`title`,`disabled`]),n(e(z),{icon:`ti ti-trash`,variant:`text`,rounded:``,size:`small`,title:e(f)(`serviceTerminal.clearLogs`),disabled:e(E).length===0,onClick:re},null,8,[`title`,`disabled`])])]),a(`div`,xt,[n(ke,{logs:B.value,loading:!1,"received-per-sec":e(A),"flushed-per-sec":e(j),"show-stats":L.value,"service-label":b.service.label||b.service.name,onLogClick:Ee},null,8,[`logs`,`received-per-sec`,`flushed-per-sec`,`show-stats`,`service-label`])]),H.value.length>0?(p(),o(`div`,St,[(p(!0),o(m,null,s(H.value,t=>(p(),v(e(z),{key:t.id,label:t.label||t.command,"data-shortcut-id":t.id,class:`shortcut-badge`,icon:U.value.has(t.id)?`ti ti-player-stop`:`ti ti-player-play`,size:`small`,variant:U.value.has(t.id)?`filled`:`outlined`,severity:U.value.has(t.id)?`danger`:void 0,onClick:e=>ie(t)},null,8,[`label`,`data-shortcut-id`,`icon`,`variant`,`severity`,`onClick`]))),128))])):y(``,!0),a(`div`,Ct,[i[6]||=a(`span`,{class:`service-terminal__prompt`,"data-testid":`terminal-prompt`},`>`,-1),n(e(ne),{ref_key:`adHocCommandInput`,ref:oe,modelValue:W.value,"onUpdate:modelValue":i[2]||=e=>W.value=e,suggestions:J.value,class:`service-terminal__autocomplete`,size:`small`,"input-class":`service-terminal__input`,placeholder:e(f)(`serviceTerminal.enterCommand`),"aria-label":e(f)(`serviceTerminal.enterCommand`),disabled:!e($)(b.service,x.value),"data-testid":`terminal-command-input`,onComplete:ce,onKeydown:Q},null,8,[`modelValue`,`suggestions`,`placeholder`,`aria-label`,`disabled`]),n(e(z),{icon:ae.value?`ti ti-player-stop`:`ti ti-player-play`,severity:ae.value?`danger`:void 0,size:`small`,"data-testid":`terminal-run-btn`,disabled:!e($)(b.service,x.value)||!W.value.trim()&&!ae.value,onClick:i[3]||=e=>ae.value?de():Z()},null,8,[`icon`,`severity`,`disabled`])]),a(`div`,wt,[x.value?(p(),v(e(F),{key:0,icon:`ti ti-server`,value:x.value.agentId.slice(0,8),severity:`secondary`,class:`service-terminal__pill`},null,8,[`value`])):y(``,!0),r.service.cwd?(p(),v(e(F),{key:1,icon:`ti ti-folder`,value:r.service.cwd,severity:`secondary`,class:`service-terminal__pill`},null,8,[`value`])):y(``,!0),x.value&&(x.value.state===`running`||x.value.state===`starting`)?(p(),v(e(F),{key:2,icon:`ti ti-clock`,value:Te(pe.value/1e3),severity:`secondary`,class:`service-terminal__pill`},null,8,[`value`])):y(``,!0)]),n(it,{visible:ye.value,"onUpdate:visible":i[4]||=e=>ye.value=e,log:ve.value,onViewProcess:De},null,8,[`visible`,`log`])],2))}}),[[`__scopeId`,`data-v-e44dc775`]]),Ot=5,kt=me;function At(e){return e+Math.random()*e*.3}function jt(e,n){let r=t(null),a=t(!1),o=t(!1),s=null,c=0,l=null;async function d(){if(!a.value){o.value=!0;try{let t=await X.process.metrics.query({agentId:e.value,processId:n.value});r.value=t}catch(e){console.error(`Failed to fetch initial metrics:`,Z(e))}finally{o.value=!1}f()}}function f(){a.value=!0,s=X.process.onMetrics.subscribe({agentId:e.value,processId:n.value},{onData(e){c=0,Y(`connected`),r.value=e},onError(e){console.error(`Metrics stream error:`,e),a.value=!1,s=null,p()}})}function p(){if(c>=Ot){console.warn(`Metrics stream: max retries (${Ot}) reached, giving up`),Y(`disconnected`);return}Y(`reconnecting`);let e=At(kt*2**c);c++,l=setTimeout(()=>{l=null,f()},e)}function m(){l&&=(clearTimeout(l),null),s&&=(s.unsubscribe(),null),a.value=!1,c=0}return i([e,n],([e,t],[n,r])=>{(e!==n||t!==r)&&a.value&&(m(),d())}),u(()=>{m()}),{metrics:r,isStreaming:a,isLoading:o,start:d,stop:m}}var Mt={class:`service-metrics`,"data-testid":`service-metrics`},Nt={key:1,class:`service-metrics__skeleton`},Pt={class:`metric-skeleton`},Ft={class:`metric-skeleton`},It={key:2,class:`service-metrics__no-data`},Lt={key:1,class:`service-metrics__no-process`},Rt=B(f({__name:`ServiceMetrics`,props:{service:{},processes:{}},setup(t){let r=t,i=d(()=>r.processes.find(e=>e.state===`running`||e.state===`starting`)??r.processes[0]??null),s=d(()=>i.value?.agentId??``),l=d(()=>i.value?.id??``),{t:f}=S(),{metrics:h,isLoading:_,start:y,stop:b}=jt(s,l);return c(()=>{i.value&&y()}),u(()=>{b()}),(t,r)=>(p(),o(`div`,Mt,[i.value?(p(),o(m,{key:0},[e(h)?(p(),v(Oe,{key:0,cpu:e(h).cpu,memory:e(h).memory},null,8,[`cpu`,`memory`])):e(_)?(p(),o(`div`,Nt,[a(`div`,Pt,[n(e(D),{width:`4rem`,height:`0.75rem`,class:`mb-2`}),n(e(D),{width:`3rem`,height:`1.75rem`,class:`mb-3`}),n(e(D),{width:`100%`,height:`6px`,"border-radius":`4px`})]),a(`div`,Ft,[n(e(D),{width:`4rem`,height:`0.75rem`,class:`mb-2`}),n(e(D),{width:`3rem`,height:`1.75rem`,class:`mb-3`}),n(e(D),{width:`6rem`,height:`0.65rem`})])])):(p(),o(`div`,It,g(e(f)(`serviceMetrics.noData`)),1))],64)):(p(),o(`div`,Lt,[r[0]||=a(`i`,{class:`ti ti-info-circle`},null,-1),a(`span`,null,g(e(f)(`serviceMetrics.notRunning`)),1)]))]))}}),[[`__scopeId`,`data-v-4ff9fccd`]]),zt=`runeya:debug`;function Bt(){if(typeof window>`u`)return null;let e=new URLSearchParams(window.location.search).get(`debug`);return e===`1`||e===`true`?!0:e===`0`||e===`false`?!1:null}var Vt=Bt();if(Vt!==null)try{localStorage.setItem(zt,String(Vt))}catch{}function Ht(){try{return localStorage.getItem(zt)===`true`}catch{return!1}}var Ut=t(Ht());function Wt(){function e(){Ut.value=!Ut.value;try{localStorage.setItem(zt,String(Ut.value))}catch{}}return{isDebug:Ut,toggle:e}}var Gt={class:`config-general`},Kt={class:`config-card`},qt={class:`config-card__header`},Jt={class:`config-card`},Yt={class:`config-card__header`},Xt={class:`config-card__hint`},Zt={class:`config-card`},Qt={class:`config-card`},$t={class:`config-card__header`},en={class:`config-card__hint`},tn={class:`config-card`},nn={class:`config-card__header`},rn={class:`config-card__hint`},an={class:`config-card`},on={class:`config-card__header`},sn={class:`config-card__hint`},cn={class:`config-card`},ln={class:`config-card__header`},un={class:`config-card__hint`},dn={class:`config-card`},fn={class:`config-card__header`},pn={class:`config-card__hint`},mn={class:`config-card`},hn={class:`config-card__header`},gn={class:`config-card__hint`},_n={class:`config-card__hint`},vn={class:`config-card`},yn={class:`config-card__header`},bn={class:`config-card__hint`},xn={class:`config-meta`},Sn={class:`config-card config-card--inline`},Cn={class:`config-card__header`},wn={class:`config-card config-card--inline`},Tn={class:`config-card__header`},En=150,Dn=B(f({__name:`ServiceConfigGeneral`,props:{service:{}},emits:[`save`],setup(c,{emit:l}){let{t:u}=S(),f=_e(),h=ue(),_=t([]);function v(e){let t=e.query.trim().toLowerCase(),n=new Set(A.value.groups);_.value=O.value.filter(e=>!n.has(e)&&(!t||e.toLowerCase().includes(t)))}function y(e,t){let n=t.trim();if(n){if(e===`ports`){let e=Number(n);if(!Number.isInteger(e)||e<1||e>65535||A.value.ports.includes(String(e)))return;A.value.ports=[...A.value.ports,String(e)]}else{if(A.value.groups.includes(n))return;A.value.groups=[...A.value.groups,n]}R()}}function C(e){let t=e.target;y(`groups`,t.value),t.value=``,_.value=[]}function w(e,t){let n=e.target;n&&typeof n.value==`string`&&n.value.trim()&&setTimeout(()=>{y(t,n.value),n.value=``},En)}let T=c,E=l,D=d(()=>h.projects.find(e=>e.serviceIds.includes(T.service.id)&&(e.orgId??null)===(T.service.orgId??null))??null),O=d(()=>{let e=D.value;if(!e)return[];let t=new Set;for(let n of e.serviceIds)for(let e of f.getById(n)?.groups??[])t.add(e);return[...t].sort((e,t)=>e.localeCompare(t))});function k(e){return Object.entries(e??{}).map(([e,t])=>({key:e,value:t}))}let A=t({name:T.service.name,cwd:T.service.cwd??``,ports:(T.service.ports??[]).map(String),groups:[...T.service.groups??[]],description:T.service.description??``,docsPath:T.service.docsPath??``,url:T.service.url??``,openapiUrl:T.service.openapiUrl??``,gitRemote:T.service.git?.remote??``,gitHome:T.service.git?.home??``,autoRestart:T.service.autoRestart,clearLogsOnStart:T.service.clearLogsOnStart??!1}),M=t(k(T.service.meta));i(()=>T.service,e=>{A.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},M.value=k(e.meta)});function N(){M.value=[...M.value,{key:``,value:``}]}function P(e){M.value=M.value.filter((t,n)=>n!==e)}function F(e,t,n){M.value=M.value.map((r,i)=>i===e?{...r,[t]:n}:r)}function I(){let e={};for(let{key:t,value:n}of M.value){let r=t.trim();r&&(e[r]=n)}return{name:A.value.name,cwd:A.value.cwd||null,ports:A.value.ports.map(Number).filter(e=>e>0&&e<=65535),groups:A.value.groups,description:A.value.description,docsPath:A.value.docsPath??``,url:A.value.url,openapiUrl:A.value.openapiUrl,git:A.value.gitRemote||A.value.gitHome?{remote:A.value.gitRemote||void 0,home:A.value.gitHome||void 0}:null,autoRestart:A.value.autoRestart,clearLogsOnStart:A.value.clearLogsOnStart,meta:Object.keys(e).length>0?e:null}}let L=null;function R(){L&&clearTimeout(L),L=setTimeout(()=>{E(`save`,I()),L=null},150)}return(t,i)=>(p(),o(`div`,Gt,[a(`div`,Kt,[a(`div`,qt,[i[14]||=a(`i`,{class:`ti ti-tag`},null,-1),a(`span`,null,g(e(u)(`serviceConfigGeneral.name`)),1)]),n(e(j),{modelValue:A.value.name,"onUpdate:modelValue":i[0]||=e=>A.value.name=e,class:`config-card__input`,onBlur:R,onKeydown:b(x(R,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])]),a(`div`,Jt,[a(`div`,Yt,[i[15]||=a(`i`,{class:`ti ti-folder`},null,-1),a(`span`,null,g(e(u)(`serviceConfigGeneral.workingDirectory`)),1)]),n(e(j),{modelValue:A.value.cwd,"onUpdate:modelValue":i[1]||=e=>A.value.cwd=e,class:`config-card__input`,placeholder:`.`,onBlur:R,onKeydown:b(x(R,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`]),a(`small`,Xt,g(e(u)(`serviceConfigGeneral.cwdHint`)),1)]),a(`div`,Zt,[i[16]||=a(`div`,{class:`config-card__header`},[a(`i`,{class:`ti ti-file-pencil`}),a(`span`,null,`Dossier de documentation (wiki)`)],-1),n(e(j),{modelValue:A.value.docsPath,"onUpdate:modelValue":i[2]||=e=>A.value.docsPath=e,class:`config-card__input`,placeholder:`(défaut : même que cwd)`,onBlur:R,onKeydown:b(x(R,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`]),i[17]||=a(`small`,{class:`config-card__hint`},[r(` Chemin relatif au cwd du service (ex. `),a(`code`,null,`docs`),r(`) ou absolu. Si vide, utilise le cwd. `)],-1)]),a(`div`,Qt,[a(`div`,$t,[i[18]||=a(`i`,{class:`ti ti-world`},null,-1),a(`span`,null,g(e(u)(`serviceConfigGeneral.ports`)),1)]),n(e(ne),{modelValue:A.value.ports,"onUpdate:modelValue":i[3]||=e=>A.value.ports=e,multiple:``,typeahead:!1,class:`config-card__input`,placeholder:e(u)(`serviceConfigGeneral.portsPlaceholder`),onChange:R,onBlur:i[4]||=e=>w(e,`ports`)},null,8,[`modelValue`,`placeholder`]),a(`small`,en,g(e(u)(`serviceConfigGeneral.portsHint`)),1)]),a(`div`,tn,[a(`div`,nn,[i[19]||=a(`i`,{class:`ti ti-layout-grid`},null,-1),a(`span`,null,g(e(u)(`serviceConfigGeneral.groups`)),1)]),n(e(ne),{modelValue:A.value.groups,"onUpdate:modelValue":i[5]||=e=>A.value.groups=e,multiple:``,suggestions:_.value,"complete-on-focus":!0,class:`config-card__input`,placeholder:e(u)(`serviceConfigGeneral.groupsPlaceholder`),onComplete:v,onChange:R,onKeydown:b(C,[`enter`]),onBlur:i[6]||=e=>w(e,`groups`)},null,8,[`modelValue`,`suggestions`,`placeholder`]),a(`small`,rn,g(e(u)(`serviceConfigGeneral.groupsHint`)),1)]),a(`div`,an,[a(`div`,on,[i[20]||=a(`i`,{class:`ti ti-info-circle`},null,-1),a(`span`,null,g(e(u)(`serviceConfigGeneral.description`)),1)]),n(e(oe),{modelValue:A.value.description,"onUpdate:modelValue":i[7]||=e=>A.value.description=e,class:`config-card__input`,rows:2,onBlur:R},null,8,[`modelValue`]),a(`small`,sn,g(e(u)(`serviceConfigGeneral.descriptionHint`)),1)]),a(`div`,cn,[a(`div`,ln,[i[21]||=a(`i`,{class:`ti ti-external-link`},null,-1),a(`span`,null,g(e(u)(`serviceConfigGeneral.url`)),1)]),n(e(j),{modelValue:A.value.url,"onUpdate:modelValue":i[8]||=e=>A.value.url=e,class:`config-card__input`,placeholder:`https://...`,onBlur:R,onKeydown:b(x(R,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`]),a(`small`,un,g(e(u)(`serviceConfigGeneral.urlHint`)),1)]),a(`div`,dn,[a(`div`,fn,[i[22]||=a(`i`,{class:`ti ti-book`},null,-1),a(`span`,null,g(e(u)(`serviceConfigGeneral.openapiUrl`)),1)]),n(e(j),{modelValue:A.value.openapiUrl,"onUpdate:modelValue":i[9]||=e=>A.value.openapiUrl=e,class:`config-card__input`,placeholder:`https://.../swagger.json`,onBlur:R,onKeydown:b(x(R,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`]),a(`small`,pn,g(e(u)(`serviceConfigGeneral.openapiUrlHint`)),1)]),a(`div`,mn,[a(`div`,hn,[i[23]||=a(`i`,{class:`ti ti-brand-github`},null,-1),a(`span`,null,g(e(u)(`serviceConfigGeneral.git`)),1)]),n(e(j),{modelValue:A.value.gitRemote,"onUpdate:modelValue":i[10]||=e=>A.value.gitRemote=e,class:`config-card__input`,placeholder:`git@github.com:org/repo.git`,onBlur:R,onKeydown:b(x(R,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`]),a(`small`,gn,g(e(u)(`serviceConfigGeneral.gitRemoteHint`)),1),n(e(j),{modelValue:A.value.gitHome,"onUpdate:modelValue":i[11]||=e=>A.value.gitHome=e,class:`config-card__input`,style:{"margin-top":`0.5rem`},placeholder:`https://github.com/org/repo`,onBlur:R,onKeydown:b(x(R,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`]),a(`small`,_n,g(e(u)(`serviceConfigGeneral.gitHomeHint`)),1)]),a(`div`,vn,[a(`div`,yn,[i[24]||=a(`i`,{class:`ti ti-hash`},null,-1),a(`span`,null,g(e(u)(`serviceConfigGeneral.meta`)),1)]),a(`small`,bn,g(e(u)(`serviceConfigGeneral.metaHint`)),1),a(`div`,xn,[(p(!0),o(m,null,s(M.value,(t,r)=>(p(),o(`div`,{key:r,class:`config-meta__row`},[n(e(j),{"model-value":t.key,placeholder:e(u)(`serviceConfigGeneral.metaKeyPlaceholder`),class:`config-meta__input`,"onUpdate:modelValue":e=>F(r,`key`,e),onBlur:R,onKeydown:b(x(R,[`prevent`]),[`enter`])},null,8,[`model-value`,`placeholder`,`onUpdate:modelValue`,`onKeydown`]),n(e(j),{"model-value":t.value,placeholder:e(u)(`serviceConfigGeneral.metaValuePlaceholder`),class:`config-meta__input config-meta__input--wide`,"onUpdate:modelValue":e=>F(r,`value`,e),onBlur:R,onKeydown:b(x(R,[`prevent`]),[`enter`])},null,8,[`model-value`,`placeholder`,`onUpdate:modelValue`,`onKeydown`]),n(e(z),{icon:`ti ti-trash`,severity:`danger`,variant:`text`,rounded:``,size:`small`,onClick:()=>{P(r),R()}},null,8,[`onClick`])]))),128)),n(e(z),{label:e(u)(`serviceConfigGeneral.addEntry`),icon:`ti ti-plus`,severity:`secondary`,variant:`outlined`,size:`small`,class:`config-meta__add`,onClick:N},null,8,[`label`])])]),a(`div`,Sn,[a(`div`,Cn,[i[25]||=a(`i`,{class:`ti ti-refresh`},null,-1),a(`span`,null,g(e(u)(`serviceConfigGeneral.autoRestart`)),1)]),n(e(H),{modelValue:A.value.autoRestart,"onUpdate:modelValue":i[12]||=e=>A.value.autoRestart=e,onChange:R},null,8,[`modelValue`])]),a(`div`,wn,[a(`div`,Tn,[i[26]||=a(`i`,{class:`ti ti-trash`},null,-1),a(`span`,null,g(e(u)(`serviceConfigGeneral.clearLogs`)),1)]),n(e(H),{modelValue:A.value.clearLogsOnStart,"onUpdate:modelValue":i[13]||=e=>A.value.clearLogsOnStart=e,onChange:R},null,8,[`modelValue`])])]))}}),[[`__scopeId`,`data-v-2ad058bc`]]),On={class:`docker-config`},kn={class:`docker-config__section`},An={for:`docker-mode-image`,class:`docker-config__section-title`},jn={class:`docker-config__mode-option`},Mn={class:`docker-config__mode-option`},Nn={key:0,class:`docker-config__section`},Pn={for:`docker-image`,class:`docker-config__label`},Fn={class:`docker-config__section`},In={class:`docker-config__section`},Ln={for:`docker-build-context`,class:`docker-config__label`},Rn={class:`docker-config__section`},zn={for:`docker-add-build-arg`,class:`docker-config__label`},Bn={class:`docker-config__kv-list`},Vn={class:`docker-config__section`},Hn={for:`docker-target-stage`,class:`docker-config__label`},Un={class:`docker-config__section`},Wn={for:`docker-user`,class:`docker-config__section-title`},Gn={class:`docker-config__section`},Kn={for:`docker-user`,class:`docker-config__label`},qn={class:`docker-config__section`},Jn={for:`docker-network-mode`,class:`docker-config__label`},Yn={key:2,class:`docker-config__section`},Xn={for:`docker-add-port`,class:`docker-config__label`},Zn={class:`docker-config__list`},Qn={class:`docker-config__section`},$n={for:`docker-add-volume`,class:`docker-config__label`},er={class:`docker-config__checkbox-row`},tr={for:`mountRootpath`,class:`docker-config__checkbox-label`},nr={class:`docker-config__list`},rr={class:`docker-config__section`},ir={class:`docker-config__checkbox-row`},ar={for:`useNativeCommand`,class:`docker-config__checkbox-label`},or={key:0,class:`docker-config__shell-row`},sr={for:`docker-native-shell`,class:`docker-config__label`},cr={class:`docker-config__hint`},lr={class:`docker-config__mode-option`},ur={class:`docker-config__mode-option`},dr={class:`docker-config__section`},fr={for:`docker-entrypoint`,class:`docker-config__label`},pr={class:`docker-config__section`},mr={for:`docker-command`,class:`docker-config__label`},hr={class:`docker-config__section`},gr={for:`docker-add-bootstrap`,class:`docker-config__section-title`},_r={class:`docker-config__hint-inline`},vr={class:`docker-config__bootstrap-row`},yr={class:`docker-config__bootstrap-field`},br=[`for`],xr={class:`docker-config__bootstrap-field`},Sr=[`for`],Cr={class:`docker-config__bootstrap-field docker-config__bootstrap-field--wide`},wr=[`for`],Tr={class:`docker-config__bootstrap-field`},Er=[`for`],Dr={class:`docker-config__bootstrap-actions`},Or={class:`docker-config__section`},kr=B(f({__name:`ServiceConfigDocker`,props:{service:{}},emits:[`save`],setup(i,{emit:c}){let{t:l}=S(),u=i,d=c,f=u.service.dockerConfig??{},_=t(f.dockerfile?`build`:`image`),C=t(f.image??``),w=t(f.dockerfile??``),T=t(f.buildContext??``),E=t(Object.entries(f.buildArgs??{}).map(([e,t])=>({key:e,value:t}))),D=t(f.targetStage??``),A=t(f.networkMode??`host`),N=t([...f.ports??[]]),F=t([...f.volumes??[]]),I=t(f.mountRootpath??!1),R=t(f.entrypoint??``),ee=t(f.command??``),B=t(f.user??``),V=t(f.useNativeCommand??!1),te=t(f.nativeCommandMode??`isolated`),ne=t(f.nativeShell??`sh`),re=[{label:`sh (POSIX)`,value:`sh`},{label:`bash`,value:`bash`},{label:`zsh`,value:`zsh`},{label:`ash (Alpine)`,value:`ash`}],H=t([...f.bootstrapCommands??[]]),U=t(!1),ie=[{label:`Host (--network host)`,value:`host`},{label:`Bridge`,value:`bridge`}];function W(){E.value=[...E.value,{key:``,value:``}]}function G(e){E.value=E.value.filter((t,n)=>n!==e)}function ae(e,t,n){E.value=E.value.map((r,i)=>i===e?{...r,[t]:n}:r)}function oe(){N.value=[...N.value,``]}function K(e){N.value=N.value.filter((t,n)=>n!==e)}function q(e,t){N.value=N.value.map((n,r)=>r===e?t:n)}function se(){F.value=[...F.value,``]}function J(e){F.value=F.value.filter((t,n)=>n!==e)}function Y(e,t){F.value=F.value.map((n,r)=>r===e?t:n)}function le(){H.value=[...H.value,{id:Ce(),label:`Bootstrap`,entrypoint:`/bin/sh`,command:`-c ""`,user:void 0}]}function X(e){H.value=H.value.filter((t,n)=>n!==e)}function ue(e,t,n){H.value=H.value.map((r,i)=>i===e?{...r,[t]:n===``?void 0:n}:r)}function de(e,t){let n=[...H.value],r=e+t;r<0||r>=n.length||([n[e],n[r]]=[n[r],n[e]],H.value=n)}let Z=null;function Q(){Z&&clearTimeout(Z),Z=setTimeout(()=>{let e={};for(let{key:t,value:n}of E.value)t.trim()&&(e[t.trim()]=n);d(`save`,{image:_.value===`image`&&C.value||void 0,dockerfile:_.value===`build`&&w.value||void 0,buildContext:T.value||void 0,buildArgs:e,targetStage:D.value||void 0,networkMode:A.value,ports:N.value.filter(Boolean),volumes:F.value.filter(Boolean),mountRootpath:I.value,entrypoint:R.value||void 0,command:ee.value||void 0,user:B.value||void 0,useNativeCommand:V.value,nativeCommandMode:te.value,nativeShell:ne.value,bootstrapCommands:H.value}),Z=null},150)}function pe(e){X(e),Q()}function me(e,t){de(e,t),Q()}function he(e){G(e),Q()}function ge(e){K(e),Q()}function _e(e){J(e),Q()}return(t,i)=>(p(),o(`div`,On,[a(`div`,kn,[a(`label`,An,g(e(l)(`serviceConfigDocker.imageSource`)),1),n(e(O),{modelValue:_.value,"onUpdate:modelValue":i[0]||=e=>_.value=e,class:`docker-config__mode-toggle`,orientation:`horizontal`,onChange:Q},{default:h(()=>[a(`label`,jn,[n(e(k),{"input-id":`docker-mode-image`,value:`image`}),r(` `+g(e(l)(`serviceConfigDocker.pullImage`)),1)]),a(`label`,Mn,[n(e(k),{value:`build`}),r(` `+g(e(l)(`serviceConfigDocker.buildDockerfile`)),1)])]),_:1},8,[`modelValue`])]),_.value===`image`?(p(),o(`div`,Nn,[a(`label`,Pn,g(e(l)(`serviceConfigDocker.image`)),1),n(e(j),{id:`docker-image`,modelValue:C.value,"onUpdate:modelValue":i[1]||=e=>C.value=e,placeholder:e(l)(`serviceConfigDocker.imagePlaceholder`),class:`docker-config__input`,onBlur:Q,onKeydown:b(x(Q,[`prevent`]),[`enter`])},null,8,[`modelValue`,`placeholder`,`onKeydown`])])):y(``,!0),_.value===`build`?(p(),o(m,{key:1},[a(`div`,Fn,[i[16]||=a(`label`,{for:`docker-dockerfile-btn`,class:`docker-config__label`},`Dockerfile`,-1),n(e(z),{id:`docker-dockerfile-btn`,label:e(l)(`serviceConfigDocker.editDockerfile`),icon:`ti ti-file-pencil`,severity:`secondary`,variant:`outlined`,size:`small`,onClick:i[2]||=e=>U.value=!0},null,8,[`label`]),n(e(L),{visible:U.value,"onUpdate:visible":i[5]||=e=>U.value=e,header:e(l)(`serviceConfigDocker.editDockerfile`),modal:``,style:{width:`800px`}},{footer:h(()=>[n(e(z),{label:e(l)(`serviceConfigDocker.closeDockerfile`),icon:`ti ti-x`,onClick:i[4]||=()=>{U.value=!1,Q()}},null,8,[`label`])]),default:h(()=>[n(fe,{modelValue:w.value,"onUpdate:modelValue":i[3]||=e=>w.value=e,language:`dockerfile`,style:{height:`400px`}},null,8,[`modelValue`])]),_:1},8,[`visible`,`header`])]),a(`div`,In,[a(`label`,Ln,g(e(l)(`serviceConfigDocker.buildContext`)),1),n(e(j),{id:`docker-build-context`,modelValue:T.value,"onUpdate:modelValue":i[6]||=e=>T.value=e,placeholder:`.`,class:`docker-config__input`,onBlur:Q,onKeydown:b(x(Q,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])]),a(`div`,Rn,[a(`label`,zn,g(e(l)(`serviceConfigDocker.buildArgs`)),1),a(`div`,Bn,[(p(!0),o(m,null,s(E.value,(t,r)=>(p(),o(`div`,{key:r,class:`docker-config__kv-row`},[n(e(j),{"model-value":t.key,placeholder:e(l)(`serviceConfigDocker.argNamePlaceholder`),class:`docker-config__kv-input`,"onUpdate:modelValue":e=>ae(r,`key`,e),onBlur:Q,onKeydown:b(x(Q,[`prevent`]),[`enter`])},null,8,[`model-value`,`placeholder`,`onUpdate:modelValue`,`onKeydown`]),n(e(j),{"model-value":t.value,placeholder:e(l)(`serviceConfigDocker.argValuePlaceholder`),class:`docker-config__kv-input`,"onUpdate:modelValue":e=>ae(r,`value`,e),onBlur:Q,onKeydown:b(x(Q,[`prevent`]),[`enter`])},null,8,[`model-value`,`placeholder`,`onUpdate:modelValue`,`onKeydown`]),n(e(z),{icon:`ti ti-trash`,severity:`danger`,variant:`text`,rounded:``,size:`small`,onClick:e=>he(r)},null,8,[`onClick`])]))),128)),n(e(z),{id:`docker-add-build-arg`,label:e(l)(`serviceConfigDocker.addBuildArg`),icon:`ti ti-plus`,severity:`secondary`,variant:`outlined`,size:`small`,onClick:W},null,8,[`label`])])]),a(`div`,Vn,[a(`label`,Hn,g(e(l)(`serviceConfigDocker.targetStage`)),1),n(e(j),{id:`docker-target-stage`,modelValue:D.value,"onUpdate:modelValue":i[7]||=e=>D.value=e,placeholder:e(l)(`serviceConfigDocker.targetStagePlaceholder`),class:`docker-config__input`,onBlur:Q,onKeydown:b(x(Q,[`prevent`]),[`enter`])},null,8,[`modelValue`,`placeholder`,`onKeydown`])])],64)):y(``,!0),n(e(ce)),a(`div`,Un,[a(`label`,Wn,g(e(l)(`serviceConfigDocker.runtimeConfig`)),1)]),a(`div`,Gn,[a(`label`,Kn,g(e(l)(`serviceConfigDocker.userGroup`)),1),n(e(j),{id:`docker-user`,modelValue:B.value,"onUpdate:modelValue":i[8]||=e=>B.value=e,placeholder:e(l)(`serviceConfigDocker.userGroupHint`),class:`docker-config__input`,onBlur:Q,onKeydown:b(x(Q,[`prevent`]),[`enter`])},null,8,[`modelValue`,`placeholder`,`onKeydown`])]),a(`div`,qn,[a(`label`,Jn,g(e(l)(`serviceConfigDocker.networkMode`)),1),n(e(P),{"input-id":`docker-network-mode`,modelValue:A.value,"onUpdate:modelValue":i[9]||=e=>A.value=e,options:ie,"option-label":`label`,"option-value":`value`,class:`docker-config__select`,onChange:Q},null,8,[`modelValue`])]),A.value===`bridge`?(p(),o(`div`,Yn,[a(`label`,Xn,g(e(l)(`serviceConfigDocker.portMappings`)),1),a(`div`,Zn,[(p(!0),o(m,null,s(N.value,(t,r)=>(p(),o(`div`,{key:r,class:`docker-config__list-row`},[n(e(j),{"model-value":t,placeholder:e(l)(`serviceConfigDocker.portPlaceholder`),class:`docker-config__input`,"onUpdate:modelValue":e=>q(r,e),onBlur:Q,onKeydown:b(x(Q,[`prevent`]),[`enter`])},null,8,[`model-value`,`placeholder`,`onUpdate:modelValue`,`onKeydown`]),n(e(z),{icon:`ti ti-trash`,severity:`danger`,variant:`text`,rounded:``,size:`small`,onClick:e=>ge(r)},null,8,[`onClick`])]))),128)),n(e(z),{id:`docker-add-port`,label:e(l)(`serviceConfigDocker.addPort`),icon:`ti ti-plus`,severity:`secondary`,variant:`outlined`,size:`small`,onClick:oe},null,8,[`label`])])])):y(``,!0),a(`div`,Qn,[a(`label`,$n,g(e(l)(`serviceConfigDocker.volumes`)),1),a(`div`,er,[n(e(M),{modelValue:I.value,"onUpdate:modelValue":i[10]||=e=>I.value=e,binary:!0,"input-id":`mountRootpath`,onChange:Q},null,8,[`modelValue`]),a(`label`,tr,g(e(l)(`serviceConfigDocker.autoMount`)),1)]),a(`div`,nr,[(p(!0),o(m,null,s(F.value,(t,r)=>(p(),o(`div`,{key:r,class:`docker-config__list-row`},[n(e(j),{"model-value":t,placeholder:e(l)(`serviceConfigDocker.volumePlaceholder`),class:`docker-config__input`,"onUpdate:modelValue":e=>Y(r,e),onBlur:Q,onKeydown:b(x(Q,[`prevent`]),[`enter`])},null,8,[`model-value`,`placeholder`,`onUpdate:modelValue`,`onKeydown`]),n(e(z),{icon:`ti ti-trash`,severity:`danger`,variant:`text`,rounded:``,size:`small`,onClick:e=>_e(r)},null,8,[`onClick`])]))),128)),n(e(z),{id:`docker-add-volume`,label:e(l)(`serviceConfigDocker.addVolume`),icon:`ti ti-plus`,severity:`secondary`,variant:`outlined`,size:`small`,onClick:se},null,8,[`label`])])]),n(e(ce)),a(`div`,rr,[a(`div`,ir,[n(e(M),{modelValue:V.value,"onUpdate:modelValue":i[11]||=e=>V.value=e,binary:!0,"input-id":`useNativeCommand`,onChange:Q},null,8,[`modelValue`]),a(`label`,ar,g(e(l)(`serviceConfigDocker.runNative`)),1)]),i[19]||=a(`span`,{class:`docker-config__hint`},` When enabled, the service command is executed directly inside the container (ignores CMD override below). `,-1),V.value?(p(),o(`div`,or,[a(`label`,sr,g(e(l)(`serviceConfigDocker.shell`)),1),n(e(P),{"input-id":`docker-native-shell`,modelValue:ne.value,"onUpdate:modelValue":i[12]||=e=>ne.value=e,options:re,"option-label":`label`,"option-value":`value`,class:`docker-config__select docker-config__select--small`,editable:``,placeholder:e(l)(`serviceConfigDocker.shellPlaceholder`),onChange:Q},null,8,[`modelValue`,`placeholder`]),a(`span`,cr,[r(g(e(l)(`serviceConfigDocker.shellHint`))+` (`,1),i[17]||=a(`code`,null,`shell -c '...'`,-1),i[18]||=r(`)`,-1)])])):y(``,!0),V.value?(p(),v(e(O),{key:1,modelValue:te.value,"onUpdate:modelValue":i[13]||=e=>te.value=e,class:`docker-config__mode-toggle docker-config__mode-toggle--indented`,onChange:Q},{default:h(()=>[a(`label`,lr,[n(e(k),{value:`isolated`}),r(` `+g(e(l)(`serviceConfigDocker.isolated`)),1)]),a(`label`,ur,[n(e(k),{value:`shared`}),r(` `+g(e(l)(`serviceConfigDocker.shared`)),1)])]),_:1},8,[`modelValue`])):y(``,!0)]),V.value?y(``,!0):(p(),o(m,{key:3},[i[20]||=a(`div`,{class:`docker-config__section`},[a(`label`,{for:`docker-entrypoint`,class:`docker-config__section-title`},`Override`)],-1),a(`div`,dr,[a(`label`,fr,g(e(l)(`serviceConfigDocker.entrypoint`)),1),n(e(j),{id:`docker-entrypoint`,modelValue:R.value,"onUpdate:modelValue":i[14]||=e=>R.value=e,placeholder:e(l)(`serviceConfigDocker.entrypointPlaceholder`),class:`docker-config__input`,onBlur:Q,onKeydown:b(x(Q,[`prevent`]),[`enter`])},null,8,[`modelValue`,`placeholder`,`onKeydown`])]),a(`div`,pr,[a(`label`,mr,g(e(l)(`serviceConfigDocker.cmdOverride`)),1),n(e(j),{id:`docker-command`,modelValue:ee.value,"onUpdate:modelValue":i[15]||=e=>ee.value=e,placeholder:e(l)(`serviceConfigDocker.cmdPlaceholder`),class:`docker-config__input`,onBlur:Q,onKeydown:b(x(Q,[`prevent`]),[`enter`])},null,8,[`modelValue`,`placeholder`,`onKeydown`])])],64)),n(e(ce)),a(`div`,hr,[a(`label`,gr,[r(g(e(l)(`serviceConfigDocker.bootstrapCommands`))+` `,1),a(`span`,_r,` — `+g(e(l)(`serviceConfigDocker.bootstrapCommandsHint`)),1)])]),(p(!0),o(m,null,s(H.value,(t,r)=>(p(),o(`div`,{key:t.id,class:`docker-config__bootstrap-card`},[a(`div`,vr,[a(`div`,yr,[a(`label`,{class:`docker-config__label`,for:`docker-bootstrap-label-${r}`},`Label`,8,br),n(e(j),{id:`docker-bootstrap-label-${r}`,"model-value":t.label,placeholder:e(l)(`serviceConfigDocker.bootstrapLabelPlaceholder`),class:`docker-config__input`,"onUpdate:modelValue":e=>ue(r,`label`,e),onBlur:Q,onKeydown:b(x(Q,[`prevent`]),[`enter`])},null,8,[`id`,`model-value`,`placeholder`,`onUpdate:modelValue`,`onKeydown`])]),a(`div`,xr,[a(`label`,{class:`docker-config__label`,for:`docker-bootstrap-entrypoint-${r}`},`Entrypoint`,8,Sr),n(e(j),{id:`docker-bootstrap-entrypoint-${r}`,"model-value":t.entrypoint??``,placeholder:`/bin/sh`,class:`docker-config__input`,"onUpdate:modelValue":e=>ue(r,`entrypoint`,e),onBlur:Q,onKeydown:b(x(Q,[`prevent`]),[`enter`])},null,8,[`id`,`model-value`,`onUpdate:modelValue`,`onKeydown`])]),a(`div`,Cr,[a(`label`,{class:`docker-config__label`,for:`docker-bootstrap-command-${r}`},`Command`,8,wr),n(e(j),{id:`docker-bootstrap-command-${r}`,"model-value":t.command,placeholder:`-c "npm install"`,class:`docker-config__input`,"onUpdate:modelValue":e=>ue(r,`command`,e),onBlur:Q,onKeydown:b(x(Q,[`prevent`]),[`enter`])},null,8,[`id`,`model-value`,`onUpdate:modelValue`,`onKeydown`])]),a(`div`,Tr,[a(`label`,{class:`docker-config__label`,for:`docker-bootstrap-user-${r}`},`User:Group`,8,Er),n(e(j),{id:`docker-bootstrap-user-${r}`,"model-value":t.user??``,placeholder:e(l)(`serviceConfigDocker.userGroupHint`),class:`docker-config__input`,"onUpdate:modelValue":e=>ue(r,`user`,e),onBlur:Q,onKeydown:b(x(Q,[`prevent`]),[`enter`])},null,8,[`id`,`model-value`,`placeholder`,`onUpdate:modelValue`,`onKeydown`])]),a(`div`,Dr,[n(e(z),{icon:`ti ti-arrow-up`,variant:`text`,rounded:``,size:`small`,disabled:r===0,onClick:e=>me(r,-1)},null,8,[`disabled`,`onClick`]),n(e(z),{icon:`ti ti-arrow-down`,variant:`text`,rounded:``,size:`small`,disabled:r===H.value.length-1,onClick:e=>me(r,1)},null,8,[`disabled`,`onClick`]),n(e(z),{icon:`ti ti-x`,severity:`danger`,variant:`text`,rounded:``,size:`small`,onClick:e=>pe(r)},null,8,[`onClick`])])])]))),128)),a(`div`,Or,[n(e(z),{id:`docker-add-bootstrap`,label:e(l)(`serviceConfigDocker.addBootstrapCommand`),icon:`ti ti-plus`,severity:`secondary`,variant:`outlined`,size:`small`,onClick:le},null,8,[`label`])])]))}}),[[`__scopeId`,`data-v-1a62039a`]]),Ar={class:`config-commands`},jr={class:`config-commands__execution`},Mr={class:`config-card config-card--execution`},Nr={class:`config-card__header`},Pr={class:`config-card__hint`},Fr={class:`config-card config-card--execution`},Ir={class:`config-card__header`},Lr={key:0,class:`runner-option`},Rr={class:`runner-option`},zr={class:`config-commands__tab-content`},Br={key:0,class:`config-commands__empty`},Vr={class:`config-commands__row`},Hr={class:`config-commands__field`},Ur=[`for`],Wr={class:`config-commands__field config-commands__field--wide`},Gr=[`for`],Kr={class:`config-commands__field`},qr=[`for`],Jr={class:`config-commands__actions-cell`},Yr={class:`config-commands__footer`},Xr={class:`config-commands__tab-content`},Zr=`__inherit__`,Qr=B(f({__name:`ServiceConfigCommands`,props:{service:{}},emits:[`save`,`dockerSave`],setup(r,{emit:c}){let u=r,f=c,{t:_}=S(),v=ve(),C=null,w=t({agentId:u.service.agentId??Zr,runner:u.service.runner});i(()=>u.service,e=>{w.value={agentId:e.agentId??Zr,runner:e.runner}});let T=d(()=>[{label:_(`serviceConfigCommands.native`),value:`native`,icon:`ti ti-device-desktop`},{label:_(`serviceConfigCommands.docker`),value:`docker`,icon:`ti ti-box`}]),E=d(()=>T.value.find(e=>e.value===w.value.runner)?.icon??`ti ti-box`),D=d(()=>[{label:_(`serviceForm.agentInherit`),value:Zr},...v.agents.map(e=>({label:`${e.config.name} (${e.status.connected?_(`serviceConfigCommands.online`):_(`serviceConfigCommands.offline`)})`,value:e.config.id}))]),O=t([...u.service.commands??[]]);i(()=>u.service,e=>{C||(O.value=[...e.commands??[]])});function k(){O.value=[...O.value,{id:Ce(),label:``,command:``,cwd:void 0,shell:!0}]}function A(e){O.value=O.value.filter((t,n)=>n!==e)}function M(e,t,n){O.value=O.value.map((r,i)=>i===e?{...r,[t]:n===``?void 0:n}:r)}function N(){C&&clearTimeout(C),C=setTimeout(()=>{f(`save`,{agentId:w.value.agentId===Zr?null:w.value.agentId||null,runner:w.value.runner,commands:O.value}),C=null},150)}function F(e){f(`dockerSave`,e)}function I(e){A(e),N()}return(t,i)=>(p(),o(`div`,Ar,[a(`div`,jr,[a(`div`,Mr,[a(`div`,Nr,[i[2]||=a(`i`,{class:`ti ti-server`},null,-1),a(`span`,null,g(e(_)(`serviceConfigCommands.agent`)),1)]),n(e(P),{modelValue:w.value.agentId,"onUpdate:modelValue":i[0]||=e=>w.value.agentId=e,options:D.value,"option-label":`label`,"option-value":`value`,class:`config-card__input`,onChange:N},null,8,[`modelValue`,`options`]),a(`small`,Pr,g(e(_)(`serviceForm.agentHintEdit`)),1)]),a(`div`,Fr,[a(`div`,Ir,[a(`i`,{class:l(E.value)},null,2),a(`span`,null,g(e(_)(`serviceConfigCommands.runner`)),1)]),n(e(P),{modelValue:w.value.runner,"onUpdate:modelValue":i[1]||=e=>w.value.runner=e,options:T.value,"option-label":`label`,"option-value":`value`,class:`config-card__input`,onChange:N},{value:h(e=>[e.value?(p(),o(`div`,Lr,[a(`i`,{class:l(T.value.find(t=>t.value===e.value)?.icon)},null,2),a(`span`,null,g(T.value.find(t=>t.value===e.value)?.label),1)])):y(``,!0)]),option:h(e=>[a(`div`,Rr,[a(`i`,{class:l(e.option.icon)},null,2),a(`span`,null,g(e.option.label),1)])]),_:1},8,[`modelValue`,`options`])])]),n(e(se),{value:`0`},{default:h(()=>[n(e(ee),null,{default:h(()=>[n(e(J),{value:`0`},{default:h(()=>[i[3]||=a(`i`,{class:`ti ti-device-desktop tab-icon`},null,-1),a(`span`,null,g(e(_)(`serviceConfigCommands.native`)),1)]),_:1}),n(e(J),{value:`1`},{default:h(()=>[i[4]||=a(`i`,{class:`ti ti-box tab-icon`},null,-1),a(`span`,null,g(e(_)(`serviceConfigCommands.docker`)),1)]),_:1})]),_:1}),n(e(q),null,{default:h(()=>[n(e(R),{value:`0`},{default:h(()=>[a(`div`,zr,[O.value.length===0?(p(),o(`div`,Br,[a(`p`,null,g(e(_)(`serviceConfigCommands.noCommands`)),1)])):y(``,!0),(p(!0),o(m,null,s(O.value,(t,r)=>(p(),o(`div`,{key:t.id,class:`config-card`},[a(`div`,Vr,[a(`div`,Hr,[a(`label`,{class:`config-commands__label`,for:`cmd-label-${r}`},g(e(_)(`serviceConfigCommands.labelPlaceholder`)),9,Ur),n(e(j),{id:`cmd-label-${r}`,"model-value":t.label,placeholder:e(_)(`serviceConfigCommands.labelPlaceholder`),class:`config-card__input`,"onUpdate:modelValue":e=>M(r,`label`,e),onBlur:N,onKeydown:b(x(N,[`prevent`]),[`enter`])},null,8,[`id`,`model-value`,`placeholder`,`onUpdate:modelValue`,`onKeydown`])]),a(`div`,Wr,[a(`label`,{class:`config-commands__label`,for:`cmd-command-${r}`},g(e(_)(`serviceConfigCommands.commandPlaceholder`)),9,Gr),n(e(j),{id:`cmd-command-${r}`,"model-value":t.command,placeholder:`e.g. npm start`,class:`config-card__input`,"onUpdate:modelValue":e=>M(r,`command`,e),onBlur:N,onKeydown:b(x(N,[`prevent`]),[`enter`])},null,8,[`id`,`model-value`,`onUpdate:modelValue`,`onKeydown`])]),a(`div`,Kr,[a(`label`,{class:`config-commands__label`,for:`cmd-cwd-${r}`},`Working Dir (optional)`,8,qr),n(e(j),{id:`cmd-cwd-${r}`,"model-value":t.cwd??``,placeholder:e(_)(`serviceConfigCommands.cwdPlaceholder`),class:`config-card__input`,"onUpdate:modelValue":e=>M(r,`cwd`,e),onBlur:N,onKeydown:b(x(N,[`prevent`]),[`enter`])},null,8,[`id`,`model-value`,`placeholder`,`onUpdate:modelValue`,`onKeydown`])]),a(`div`,Jr,[n(e(z),{icon:`ti ti-trash`,severity:`danger`,variant:`text`,rounded:``,size:`small`,onClick:e=>I(r)},null,8,[`onClick`])])])]))),128)),a(`div`,Yr,[n(e(z),{label:e(_)(`serviceConfigCommands.addCommand`),icon:`ti ti-plus`,severity:`secondary`,variant:`outlined`,size:`small`,onClick:k},null,8,[`label`])])])]),_:1}),n(e(R),{value:`1`},{default:h(()=>[a(`div`,Xr,[n(kr,{service:r.service,onSave:F},null,8,[`service`])])]),_:1})]),_:1})]),_:1})]))}}),[[`__scopeId`,`data-v-4820790b`]]),$r={class:`config-env`,"data-testid":`config-env`},ei={key:0,class:`active-env-display`},ti={class:`active-env-label`},ni={key:1,class:`inheritance-toggle`},ri={class:`inheritance-label`},ii={class:`inherited-header`},ai={class:`inherited-row-key`},oi={class:`preview-key`},si={class:`value-row`},ci=[`onClick`],li=[`onClick`],ui={key:0,class:`secret-mask`},di={key:1,class:`preview-value`},fi={class:`config-env__header`},pi={class:`config-env__title`},mi={class:`config-env__actions`},hi={key:3,class:`variables-view`},gi={key:0},_i={key:1,class:`empty-state`},vi={class:`inherited-header`},yi={class:`passthrough-info`},bi={class:`preview-key`},xi={key:0,class:`preview-value`},Si={key:1,class:`passthrough-undefined`},Ci={key:4,class:`empty-state`},wi={key:5,class:`empty-state`},Ti={class:`editor-container`},Ei={key:0,class:`editor-env-banner`},Di={class:`editor-env-text`},Oi={class:`editor-section`,"data-testid":`variables-editor`},ki={key:0,class:`loading-container`},Ai={key:1,class:`preview-container`},ji={class:`preview-info`},Mi={class:`preview-key`},Ni={class:`value-row`},Pi=[`onClick`],Fi=[`onClick`],Ii={key:0,class:`secret-mask`},Li={key:1,class:`preview-value`},Ri=B(f({__name:`ServiceConfigEnv`,props:{service:{},projectId:{},activeEnvironmentId:{}},setup(s){let u=s,{t:f}=S(),m=N(),_=re(),b=de(),w=ue(),T=C(),E=xe(),D=d(()=>w.getByRef({id:u.projectId,orgId:T.activeOrgId})?.activeEnvironmentId??null),O=d(()=>b.findServiceEnvironment(u.service.id,D.value??``)),k=t(!1),j=t(!1),M=t(!1),P=t(!1),I=t(null),R=t(null),{suggestions:ee,meta:B,search:ne}=De(()=>R.value??I.value),U=t(new Set);function G(e){let t=new Set(U.value);t.has(e)?t.delete(e):t.add(e),U.value=t}let oe=t(null);function q(e,t){navigator.clipboard.writeText(t),oe.value=e,setTimeout(()=>{oe.value===e&&(oe.value=null)},1500)}let se=t({}),J=t(!1),{values:ce,agentEntry:Y,urlHost:le}=Te({projectId:()=>u.projectId,environmentId:()=>D.value,agentId:()=>$(u.service)??void 0}),Z=d(()=>{let e={...ce.value};Object.assign(e,ge(u.service.ports)),e[`service.NAME`]=u.service.name,e[`service.ID`]=u.service.id,Object.assign(e,he(u.service,le.value)),u.service.url&&(e[`service.BASE_URL`]=u.service.url);let t=fe(Y.value?.status?.cwd,Y.value?.status?.home);return t&&(e[`service.CWD`]=t),e});function fe(e,t){let n=(u.service.resolvedCwd??u.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 pe=d(()=>Y.value?.config.passthroughEnv??[]),me=d(()=>pe.value.length>0);async function _e(){let e=$(u.service);if(!e||!me.value){se.value={};return}J.value=!0;try{se.value=await X.agent.getPassthroughEnv.query({id:e})}catch{se.value={}}finally{J.value=!1}}let ve=d(()=>pe.value.map(e=>({name:e,value:se.value[e]??null}))),ye=d(()=>!O.value||!D.value?!0:O.value.parentIds?.includes(D.value)??!0);async function be(e){if(O.value&&D.value){P.value=!0;try{await b.update({id:O.value.id,parentIds:e?[D.value]:[]}),await Me()}catch(e){m.add({severity:`error`,summary:f(`serviceConfigEnv.error`),detail:e.message??f(`serviceConfigEnv.failedToUpdateInheritance`),life:5e3})}finally{P.value=!1}}}let Se=d(()=>{let e=w.getByRef({id:u.projectId,orgId:T.activeOrgId});return e?.activeEnvironmentId?b.getById(e.activeEnvironmentId):null});function Ce(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 Oe=d(()=>I.value?Ce(I.value.variables):[]),ke=d(()=>{if(!O.value||!I.value?.sources)return Oe.value;let e=O.value.id;return Oe.value.filter(t=>I.value.sources[t.variableId]?.environmentId===e)}),Ae=d(()=>{if(!O.value||!I.value?.sources)return[];let e=O.value.id;return Oe.value.filter(t=>I.value.sources[t.variableId]?.environmentId!==e)}),je=d(()=>{if(!I.value?.sources)return{};let e={};for(let[t,n]of Object.entries(I.value.sources))e[t]={environmentId:n.environmentId,overridden:n.overridden,...n.resolvedFrom?{resolvedFrom:n.resolvedFrom}:{},...n.overriddenBy?{overriddenBy:n.overriddenBy}:{}};return e});async function Me(){if(O.value)try{I.value=await b.resolve(O.value.id)}catch(e){console.error(`Failed to resolve environment:`,e)}}async function Ne(){if(D.value)try{R.value=await b.resolve(D.value)}catch{}}async function Pe(){M.value=!0;try{await Le(),await Me(),j.value=!0}catch(e){m.add({severity:`error`,summary:f(`serviceConfigEnv.error`),detail:e.message??f(`serviceConfigEnv.failedToLoadPreview`),life:5e3})}finally{M.value=!1}}let Fe=d(()=>I.value?Object.entries(I.value.env).map(([e,t])=>({key:e,value:Object.entries(Z.value).reduce((e,[t,n])=>e.replaceAll(`{{${t}}}`,n),t)})):[]);function Ie(e,t){return t?`***`:e.length>50?e.substring(0,47)+`...`:e}async function Le(){if(O.value)return O.value;if(!D.value)return null;let e=Se.value;return e?(await b.create({name:`${u.service.name??u.service.id} — ${e.name}`,projectId:u.projectId,scope:`service`,reference:u.service.id,activateOn:D.value,parentIds:[D.value],variables:{}}),O.value):null}let Re=d(()=>{let e=E.getByService(u.service.id);return e.length>0?e[0]:null}),ze=d(()=>{let e=Re.value?.state;return e===`running`||e===`errored`});async function Be(){await Le(),k.value=!0,await Promise.all([Me(),Ne()])}function Ve(){if(k.value=!1,!ze.value||!Re.value)return;let e=Re.value.state===`running`?`restart`:`start`,t=u.service.name||u.service.id;_.require({message:f(e===`restart`?`serviceConfigEnv.restartConfirmMsg`:`serviceConfigEnv.startConfirmMsg`,{name:t}),header:f(e===`restart`?`serviceConfigEnv.restartTitle`:`serviceConfigEnv.startTitle`),icon:`ti ti-refresh`,acceptLabel:f(e===`restart`?`serviceConfigEnv.restartTitle`:`actions.start`),rejectLabel:f(`serviceConfigEnv.notNow`),accept:async()=>{try{let t=$(u.service);if(!t)return;e===`restart`?(await E.restart(t,u.service.id),m.add({severity:`success`,summary:f(`serviceConfigEnv.serviceRestarted`),life:3e3})):(await E.start(t,u.service.id),m.add({severity:`success`,summary:f(`serviceConfigEnv.serviceStarted`),life:3e3}))}catch(t){m.add({severity:`error`,summary:f(`serviceConfigEnv.error`),detail:t?.message?Q(t,f):f(`serviceConfigEnv.failedToAction`,{action:e}),life:5e3})}}})}return i(Se,async e=>{e&&await Promise.all([Me(),Ne()])}),i(()=>$(u.service),()=>{_e()}),c(async()=>{u.projectId&&await b.fetchAll(u.projectId),await Promise.all([Me(),Ne(),_e()])}),(t,i)=>(p(),o(`div`,$r,[D.value?(p(),o(`div`,ei,[a(`span`,ti,g(e(f)(`serviceConfigEnv.activeEnvironment`)),1),n(we,{"environment-id":D.value},null,8,[`environment-id`])])):y(``,!0),O.value&&Se.value?(p(),o(`div`,ni,[n(e(H),{"model-value":ye.value,disabled:P.value,"onUpdate:modelValue":be},null,8,[`model-value`,`disabled`]),a(`span`,ri,g(ye.value?e(f)(`serviceConfigEnv.inheritsFrom`,{name:Se.value.name}):e(f)(`serviceConfigEnv.isolated`,{name:Se.value.name})),1)])):y(``,!0),Ae.value.length>0?(p(),v(e(V),{key:2,class:`inherited-accordion`},{default:h(()=>[n(e(te),{value:`inherited`},{default:h(()=>[n(e(ie),null,{default:h(()=>[a(`span`,ii,[i[6]||=a(`i`,{class:`ti ti-arrow-down-left`},null,-1),r(` `+g(e(f)(`serviceConfigEnv.inheritedVars`))+` `,1),n(e(F),{value:String(Ae.value.length),severity:`secondary`,rounded:``},null,8,[`value`])])]),_:1}),n(e(ae),null,{default:h(()=>[n(e(W),{value:Ae.value,size:`small`,"show-headers":!1},{default:h(()=>[n(e(K),{style:{width:`35%`}},{body:h(({data:e})=>[a(`div`,ai,[a(`code`,oi,g(e.key),1),je.value[e.variableId]?(p(),v(we,{key:0,"environment-id":je.value[e.variableId].environmentId,class:`source-badge`},null,8,[`environment-id`])):y(``,!0)])]),_:1}),n(e(K),{style:{width:`65%`}},{body:h(({data:e})=>[a(`span`,si,[a(`span`,{class:`value-actions`,onClick:i[0]||=x(()=>{},[`stop`])},[e.slot.isSecret?(p(),o(`i`,{key:0,class:l([U.value.has(e.variableId)?`ti ti-eye-off`:`ti ti-eye`,`action-icon`]),onClick:t=>G(e.variableId)},null,10,ci)):y(``,!0),a(`i`,{class:l([oe.value===e.variableId?`ti ti-check`:`ti ti-copy`,`action-icon`]),onClick:t=>q(e.variableId,e.slot.pre+e.slot.value+e.slot.post)},null,10,li)]),e.slot.isSecret&&!U.value.has(e.variableId)?(p(),o(`span`,ui,`***`)):(p(),o(`code`,di,g(e.slot.pre)+g(e.slot.value)+g(e.slot.post),1))])]),_:1})]),_:1},8,[`value`])]),_:1})]),_:1})]),_:1})):y(``,!0),a(`div`,fi,[a(`h3`,pi,g(e(f)(`serviceConfigEnv.envVars`)),1),a(`div`,mi,[n(e(z),{label:e(f)(`serviceConfigEnv.editVariables`),icon:`ti ti-pencil`,size:`small`,variant:`outlined`,"data-testid":`env-edit-btn`,disabled:!D.value,onClick:Be},null,8,[`label`,`disabled`]),n(e(z),{label:e(f)(`serviceConfigEnv.preview`),icon:`ti ti-eye`,size:`small`,variant:`outlined`,severity:`secondary`,loading:M.value,disabled:!D.value,"data-testid":`env-preview-btn`,onClick:Pe},null,8,[`label`,`loading`,`disabled`])])]),O.value?(p(),o(`div`,hi,[ke.value.length>0?(p(),o(`div`,gi,[n(Ee,{"environment-id":O.value.id,sources:je.value,"resolved-env":{...R.value?.env??{},...I.value?.env??{}},"service-builtins":Z.value,editable:!1,"show-overrides":!0,"show-override-badge":!0,"show-delete":!1,"show-add-button":!1,onVariablesChanged:Me},null,8,[`environment-id`,`sources`,`resolved-env`,`service-builtins`])])):(p(),o(`div`,_i,[a(`p`,null,g(e(f)(`serviceConfigEnv.noVarsConfigured`)),1)])),me.value?(p(),v(e(V),{key:2,class:`inherited-accordion`},{default:h(()=>[n(e(te),{value:`passthrough`},{default:h(()=>[n(e(ie),null,{default:h(()=>[a(`span`,vi,[i[7]||=a(`i`,{class:`ti ti-world`},null,-1),r(` `+g(e(f)(`agentPage.passthrough.titleShort`))+` `,1),n(e(F),{value:String(pe.value.length),severity:`secondary`,rounded:``},null,8,[`value`])])]),_:1}),n(e(ae),null,{default:h(()=>[a(`p`,yi,g(e(f)(`serviceConfigEnv.passthroughInfo`)),1),J.value?(p(),v(e(A),{key:0,style:{width:`24px`,height:`24px`}})):(p(),v(e(W),{key:1,value:ve.value,stripedRows:``,size:`small`},{default:h(()=>[n(e(K),{field:`name`,header:e(f)(`common.key`),style:{width:`35%`}},{body:h(({data:e})=>[a(`code`,bi,g(e.name),1)]),_:1},8,[`header`]),n(e(K),{header:e(f)(`common.value`),style:{width:`65%`}},{body:h(({data:t})=>[t.value===null?(p(),o(`span`,Si,g(e(f)(`serviceConfigEnv.undefined`)),1)):(p(),o(`span`,xi,g(t.value),1))]),_:1},8,[`header`])]),_:1},8,[`value`]))]),_:1})]),_:1})]),_:1})):y(``,!0)])):D.value?(p(),o(`div`,wi,[a(`p`,null,g(e(f)(`serviceConfigEnv.noVarsConfigured`)),1)])):(p(),o(`div`,Ci,[a(`p`,null,g(e(f)(`serviceConfigEnv.noActiveEnv`)),1)])),n(e(L),{visible:k.value,header:e(f)(`serviceConfigEnv.editVarsHeader`),style:{width:`900px`},maximizable:``,modal:``,"onUpdate:visible":i[2]||=e=>{e||Ve()}},{footer:h(()=>[n(e(z),{label:e(f)(`actions.close`),icon:`ti ti-x`,onClick:i[1]||=e=>Ve()},null,8,[`label`])]),default:h(()=>[a(`div`,Ti,[D.value?(p(),o(`div`,Ei,[a(`span`,Di,g(e(f)(`serviceConfigEnv.editingVarsFor`,{name:s.service.name||s.service.id})),1),n(we,{"environment-id":D.value},null,8,[`environment-id`])])):y(``,!0),a(`div`,Oi,[O.value?(p(),v(Ee,{key:0,"environment-id":O.value.id,editable:!0,sources:je.value,"autocomplete-enabled":!0,"autocomplete-suggestions":e(ee),"autocomplete-meta":e(B),"resolved-env":{...R.value?.env??{},...I.value?.env??{}},"service-builtins":Z.value,"show-overrides":!0,onVariablesChanged:Me,"show-delete":!0,"show-add-button":!0,onAutocompleteSearch:e(ne)},null,8,[`environment-id`,`sources`,`autocomplete-suggestions`,`autocomplete-meta`,`resolved-env`,`service-builtins`,`onAutocompleteSearch`])):y(``,!0)])])]),_:1},8,[`visible`,`header`]),n(e(L),{visible:j.value,"onUpdate:visible":i[5]||=e=>j.value=e,header:e(f)(`serviceConfigEnv.previewHeader`),style:{width:`700px`},modal:``,"dismissable-mask":``,"data-testid":`env-preview-dialog`},{footer:h(()=>[n(e(z),{label:e(f)(`actions.close`),icon:`ti ti-x`,onClick:i[4]||=e=>j.value=!1},null,8,[`label`])]),default:h(()=>[M.value?(p(),o(`div`,ki,[n(e(A))])):I.value?(p(),o(`div`,Ai,[a(`p`,ji,g(e(f)(`serviceConfigEnv.injectedVarsInfo`)),1),n(e(W),{value:Fe.value,stripedRows:``,size:`small`,rows:15,paginator:Fe.value.length>15},{default:h(()=>[n(e(K),{field:`key`,header:e(f)(`common.key`),style:{width:`35%`}},{body:h(({data:e})=>[a(`code`,Mi,g(e.key),1)]),_:1},8,[`header`]),n(e(K),{header:e(f)(`common.value`),style:{width:`65%`}},{body:h(({data:e})=>[a(`span`,Ni,[a(`span`,{class:`value-actions`,onClick:i[3]||=x(()=>{},[`stop`])},[I.value.envSecrets.includes(e.key)?(p(),o(`i`,{key:0,class:l([U.value.has(`preview:`+e.key)?`ti ti-eye-off`:`ti ti-eye`,`action-icon`]),onClick:t=>G(`preview:`+e.key)},null,10,Pi)):y(``,!0),a(`i`,{class:l([oe.value===`preview:`+e.key?`ti ti-check`:`ti ti-copy`,`action-icon`]),onClick:t=>q(`preview:`+e.key,e.value)},null,10,Fi)]),I.value.envSecrets.includes(e.key)&&!U.value.has(`preview:`+e.key)?(p(),o(`span`,Ii,`***`)):(p(),o(`span`,Li,g(Ie(e.value,!1)),1))])]),_:1},8,[`header`])]),_:1},8,[`value`,`paginator`])])):y(``,!0)]),_:1},8,[`visible`,`header`])]))}}),[[`__scopeId`,`data-v-28ad0a54`]]),zi={class:`config-health`},Bi={class:`config-card config-card--inline`},Vi={class:`config-card__header`},Hi={class:`config-card`},Ui={class:`config-card__header`},Wi={class:`config-card`},Gi={class:`config-card__header`},Ki={class:`config-card`},qi={class:`config-card__header`},Ji={class:`config-card`},Yi={class:`config-card__header`},Xi={key:1,class:`config-card`},Zi={class:`config-card__header`},Qi={class:`config-card__hint`},$i={class:`config-card`},ea={class:`config-card__header`},ta={class:`config-card`},na={class:`config-card__header`},ra={class:`config-card`},ia={class:`config-card__header`},aa={class:`config-card`},oa={class:`config-card__header`},sa=B(f({__name:`ServiceConfigHealthCheck`,props:{service:{}},emits:[`save`],setup(r,{emit:s}){let c=r,l=s,{t:u}=S(),d=t(!!c.service.healthCheck),f=t({type:c.service.healthCheck?.type??`http`,path:c.service.healthCheck?.path??`/health`,interval:c.service.healthCheck?.interval??3e4,timeout:c.service.healthCheck?.timeout??5e3,retries:c.service.healthCheck?.retries??3,method:c.service.healthCheck?.method??`GET`,expectedStatus:c.service.healthCheck?.expectedStatus??200,initialDelay:c.service.healthCheck?.initialDelay??5e3,command:c.service.healthCheck?.command??``}),h=[{label:`HTTP Request`,value:`http`},{label:`Command`,value:`command`}],_=[{label:`GET`,value:`GET`},{label:`HEAD`,value:`HEAD`},{label:`POST`,value:`POST`},{label:`PUT`,value:`PUT`}];i(()=>c.service,e=>{d.value=!!e.healthCheck,f.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 v=null;function C(){v&&clearTimeout(v),v=setTimeout(()=>{if(!d.value)l(`save`,void 0);else{if(f.value.type===`http`&&!f.value.path?.trim()||f.value.type===`command`&&!f.value.command?.trim())return;l(`save`,{type:f.value.type,path:f.value.path,method:f.value.method,expectedStatus:f.value.expectedStatus,command:f.value.command||void 0,interval:f.value.interval,timeout:f.value.timeout,retries:f.value.retries,initialDelay:f.value.initialDelay})}v=null},150)}return(t,r)=>(p(),o(`div`,zi,[a(`div`,Bi,[a(`div`,Vi,[r[10]||=a(`i`,{class:`ti ti-heart`},null,-1),a(`span`,null,g(e(u)(`serviceConfigHealthCheck.enable`)),1)]),n(e(H),{modelValue:d.value,"onUpdate:modelValue":r[0]||=e=>d.value=e,onChange:C},null,8,[`modelValue`])]),d.value?(p(),o(m,{key:0},[a(`div`,Hi,[a(`div`,Ui,[r[11]||=a(`i`,{class:`ti ti-settings`},null,-1),a(`span`,null,g(e(u)(`serviceConfigHealthCheck.type`)),1)]),n(e(P),{modelValue:f.value.type,"onUpdate:modelValue":r[1]||=e=>f.value.type=e,options:h,"option-label":`label`,"option-value":`value`,class:`config-card__input`,onChange:C},null,8,[`modelValue`]),r[12]||=a(`small`,{class:`config-card__hint`},`HTTP checks a URL endpoint; Command runs a shell command (exit 0 = healthy)`,-1)]),f.value.type===`http`?(p(),o(m,{key:0},[a(`div`,Wi,[a(`div`,Gi,[r[13]||=a(`i`,{class:`ti ti-link`},null,-1),a(`span`,null,g(e(u)(`serviceConfigHealthCheck.path`)),1)]),n(e(j),{modelValue:f.value.path,"onUpdate:modelValue":r[2]||=e=>f.value.path=e,class:`config-card__input`,placeholder:`/health`,onBlur:C,onKeydown:b(x(C,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])]),a(`div`,Ki,[a(`div`,qi,[r[14]||=a(`i`,{class:`ti ti-directions`},null,-1),a(`span`,null,g(e(u)(`serviceConfigHealthCheck.method`)),1)]),n(e(P),{modelValue:f.value.method,"onUpdate:modelValue":r[3]||=e=>f.value.method=e,options:_,"option-label":`label`,"option-value":`value`,class:`config-card__input`,onChange:C},null,8,[`modelValue`])]),a(`div`,Ji,[a(`div`,Yi,[r[15]||=a(`i`,{class:`ti ti-circle-check`},null,-1),a(`span`,null,g(e(u)(`serviceConfigHealthCheck.expectedStatus`)),1)]),n(e(U),{modelValue:f.value.expectedStatus,"onUpdate:modelValue":r[4]||=e=>f.value.expectedStatus=e,class:`config-card__input`,"use-grouping":!1,min:100,max:599,onBlur:C,onKeydown:b(x(C,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`]),r[16]||=a(`small`,{class:`config-card__hint`},`HTTP status code to expect (default 200)`,-1)])],64)):y(``,!0),f.value.type===`command`?(p(),o(`div`,Xi,[a(`div`,Zi,[r[17]||=a(`i`,{class:`ti ti-code`},null,-1),a(`span`,null,g(e(u)(`serviceConfigHealthCheck.command`)),1)]),n(e(oe),{modelValue:f.value.command,"onUpdate:modelValue":r[5]||=e=>f.value.command=e,class:`config-card__input`,rows:`2`,placeholder:`curl -sf http://localhost:3000/health`,"auto-resize":``,onBlur:C},null,8,[`modelValue`]),a(`small`,Qi,g(e(u)(`serviceConfigHealthCheck.commandHint`)),1)])):y(``,!0),a(`div`,$i,[a(`div`,ea,[r[18]||=a(`i`,{class:`ti ti-hourglass`},null,-1),a(`span`,null,g(e(u)(`serviceConfigHealthCheck.initialDelay`)),1)]),n(e(U),{modelValue:f.value.initialDelay,"onUpdate:modelValue":r[6]||=e=>f.value.initialDelay=e,class:`config-card__input`,"use-grouping":!1,min:0,onBlur:C,onKeydown:b(x(C,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`]),r[19]||=a(`small`,{class:`config-card__hint`},`Wait before first health check (ms)`,-1)]),a(`div`,ta,[a(`div`,na,[r[20]||=a(`i`,{class:`ti ti-clock`},null,-1),a(`span`,null,g(e(u)(`serviceConfigHealthCheck.interval`)),1)]),n(e(U),{modelValue:f.value.interval,"onUpdate:modelValue":r[7]||=e=>f.value.interval=e,class:`config-card__input`,"use-grouping":!1,min:1e3,onBlur:C,onKeydown:b(x(C,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])]),a(`div`,ra,[a(`div`,ia,[r[21]||=a(`i`,{class:`ti ti-stopwatch`},null,-1),a(`span`,null,g(e(u)(`serviceConfigHealthCheck.timeout`)),1)]),n(e(U),{modelValue:f.value.timeout,"onUpdate:modelValue":r[8]||=e=>f.value.timeout=e,class:`config-card__input`,"use-grouping":!1,min:500,onBlur:C,onKeydown:b(x(C,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])]),a(`div`,aa,[a(`div`,oa,[r[22]||=a(`i`,{class:`ti ti-rotate`},null,-1),a(`span`,null,g(e(u)(`serviceConfigHealthCheck.retries`)),1)]),n(e(U),{modelValue:f.value.retries,"onUpdate:modelValue":r[9]||=e=>f.value.retries=e,class:`config-card__input`,"use-grouping":!1,min:0,max:10,onBlur:C,onKeydown:b(x(C,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])])],64)):y(``,!0)]))}}),[[`__scopeId`,`data-v-956bcc34`]]),ca={class:`config-shortcuts`},la={key:0,class:`config-shortcuts__empty`},ua={class:`config-shortcuts__row`},da={class:`config-shortcuts__field`},fa=[`for`],pa={class:`config-shortcuts__field config-shortcuts__field--wide`},ma=[`for`],ha={class:`config-shortcuts__field`},ga=[`for`],_a={class:`config-shortcuts__actions-cell`},va={class:`config-shortcuts__footer`},ya=B(f({__name:`ServiceConfigShortcuts`,props:{service:{}},emits:[`save`],setup(r,{emit:c}){let l=r,{t:u}=S(),d=c,f=t([...l.service.shortcuts??[]]),h=null;i(()=>l.service,e=>{h||(f.value=[...e.shortcuts??[]])});function _(){f.value=[...f.value,{id:Ce(),label:``,command:``,cwd:void 0}]}function v(e){f.value=f.value.filter((t,n)=>n!==e)}function C(e,t,n){f.value=f.value.map((r,i)=>i===e?{...r,[t]:n||void 0}:r)}function w(){h&&clearTimeout(h),h=setTimeout(()=>{d(`save`,f.value),h=null},150)}function T(e){v(e),w()}return(t,r)=>(p(),o(`div`,ca,[f.value.length===0?(p(),o(`div`,la,[a(`p`,null,g(e(u)(`serviceConfigShortcuts.empty`)),1)])):y(``,!0),(p(!0),o(m,null,s(f.value,(t,r)=>(p(),o(`div`,{key:t.id,class:`config-card`},[a(`div`,ua,[a(`div`,da,[a(`label`,{class:`config-shortcuts__label`,for:`shortcut-label-${r}`},g(e(u)(`serviceConfigShortcuts.label`)),9,fa),n(e(j),{id:`shortcut-label-${r}`,"model-value":t.label,placeholder:e(u)(`serviceConfigShortcuts.labelPlaceholder`),class:`config-card__input`,"data-testid":`shortcut-label-input`,"onUpdate:modelValue":e=>C(r,`label`,e),onBlur:w,onKeydown:b(x(w,[`prevent`]),[`enter`])},null,8,[`id`,`model-value`,`placeholder`,`onUpdate:modelValue`,`onKeydown`])]),a(`div`,pa,[a(`label`,{class:`config-shortcuts__label`,for:`shortcut-command-${r}`},g(e(u)(`serviceConfigShortcuts.command`)),9,ma),n(e(j),{id:`shortcut-command-${r}`,"model-value":t.command,placeholder:e(u)(`serviceConfigShortcuts.commandPlaceholder`),class:`config-card__input`,"data-testid":`shortcut-command-input`,"onUpdate:modelValue":e=>C(r,`command`,e),onBlur:w,onKeydown:b(x(w,[`prevent`]),[`enter`])},null,8,[`id`,`model-value`,`placeholder`,`onUpdate:modelValue`,`onKeydown`])]),a(`div`,ha,[a(`label`,{class:`config-shortcuts__label`,for:`shortcut-cwd-${r}`},g(e(u)(`serviceConfigShortcuts.workingDir`)),9,ga),n(e(j),{id:`shortcut-cwd-${r}`,"model-value":t.cwd??``,placeholder:e(u)(`serviceConfigShortcuts.cwdPlaceholder`),class:`config-card__input`,"onUpdate:modelValue":e=>C(r,`cwd`,e),onBlur:w,onKeydown:b(x(w,[`prevent`]),[`enter`])},null,8,[`id`,`model-value`,`placeholder`,`onUpdate:modelValue`,`onKeydown`])]),a(`div`,_a,[n(e(z),{icon:`ti ti-trash`,severity:`danger`,variant:`text`,rounded:``,size:`small`,onClick:e=>T(r)},null,8,[`onClick`])])])]))),128)),a(`div`,va,[n(e(z),{label:e(u)(`serviceConfigShortcuts.addShortcut`),icon:`ti ti-plus`,severity:`secondary`,variant:`outlined`,size:`small`,"data-testid":`add-shortcut-btn`,onClick:_},null,8,[`label`])])]))}}),[[`__scopeId`,`data-v-cbad556b`]]),ba={class:`config-log-parsers`},xa={class:`config-card`},Sa={class:`config-card__header`},Ca={class:`config-card__hint`},wa={class:`config-card`},Ta={class:`config-card__header`},Ea={class:`config-card__header-hint`},Da={class:`config-log-parsers__order`},Oa={class:`config-log-parsers__name`},ka={key:1,class:`config-log-parsers__empty`},Aa={class:`config-log-parsers__add-row`},ja={class:`config-log-parsers__footer`},Ma=B(f({__name:`ServiceConfigLogs`,props:{service:{}},emits:[`save`],setup(l,{emit:f}){let _=l,b=f,x=w(),{t:C}=S(),T=Ae(),E=t([..._.service.parserIds??[]]);i(()=>_.service,e=>{E.value=[...e.parserIds??[]]});let D=d(()=>[...T.parsers].filter(e=>e.enabled).sort((e,t)=>e.name.localeCompare(t.name))),O=d(()=>D.value.filter(e=>!E.value.includes(e.id))),k=t(E.value.map(e=>T.parsers.find(t=>t.id===e)).filter(e=>e!==void 0));i(E,e=>{let t=k.value.filter(t=>e.includes(t.id)),n=e.filter(e=>!t.find(t=>t.id===e)).map(e=>T.parsers.find(t=>t.id===e)).filter(e=>e!==void 0);k.value=[...t,...n]}),i(()=>T.parsers,()=>{let e=E.value;k.value=e.map(e=>T.parsers.find(t=>t.id===e)).filter(e=>e!==void 0)});let A=t(null);function j(e){if(!e)return;let t=T.parsers.find(t=>t.id===e);t&&(E.value=[...E.value,e],k.value=[...k.value,t],A.value=null,I())}function M(e){E.value=E.value.filter(t=>t!==e),k.value=k.value.filter(t=>t.id!==e),I()}function N(){E.value=k.value.map(e=>e.id),I()}function I(){b(`save`,{parserIds:k.value.map(e=>e.id)})}return c(()=>{T.fetchParsers(),T.subscribeParsers()}),u(()=>{T.unsubscribeParsers()}),(t,i)=>(p(),o(`div`,ba,[a(`div`,xa,[a(`div`,Sa,[i[3]||=a(`i`,{class:`ti ti-code`},null,-1),a(`span`,null,g(e(C)(`serviceConfigLogs.jsParsers`)),1)]),a(`small`,Ca,g(e(C)(`serviceConfigLogs.jsParsersHint`)),1)]),a(`div`,wa,[a(`div`,Ta,[i[4]||=a(`i`,{class:`ti ti-arrows-sort`},null,-1),a(`span`,null,g(e(C)(`serviceConfigLogs.executionOrder`)),1),a(`small`,Ea,g(e(C)(`serviceConfigLogs.executionOrderHint`)),1)]),k.value.length>0?(p(),v(e(ye),{key:0,modelValue:k.value,"onUpdate:modelValue":i[0]||=e=>k.value=e,animation:150,handle:`.drag-handle`,class:`config-log-parsers__drag-list`,"data-testid":`log-parsers-drag-list`,onEnd:N},{default:h(()=>[(p(!0),o(m,null,s(k.value,(t,s)=>(p(),o(`div`,{key:t.id,class:`config-log-parsers__drag-row`,"data-testid":`log-parsers-drag-row`},[i[5]||=a(`span`,{class:`drag-handle`,"data-testid":`drag-handle`},[a(`i`,{class:`ti ti-menu-2`})],-1),a(`span`,Da,g(s+1),1),a(`span`,Oa,g(t.name),1),t.builtin?(p(),v(e(F),{key:0,severity:`secondary`,class:`config-log-parsers__builtin-badge`},{default:h(()=>[r(g(e(C)(`serviceConfigLogs.builtin`)),1)]),_:1})):y(``,!0),t.enabled?y(``,!0):(p(),v(e(F),{key:1,severity:`warn`,class:`config-log-parsers__disabled-badge`},{default:h(()=>[r(g(e(C)(`serviceConfigLogs.disabled`)),1)]),_:1})),n(e(z),{icon:`ti ti-trash`,severity:`danger`,variant:`text`,size:`small`,class:`config-log-parsers__delete`,onClick:e=>M(t.id)},null,8,[`onClick`])]))),128))]),_:1},8,[`modelValue`])):y(``,!0),k.value.length===0?(p(),o(`div`,ka,g(e(C)(`serviceConfigLogs.empty`)),1)):y(``,!0),a(`div`,Aa,[n(e(P),{modelValue:A.value,"onUpdate:modelValue":[i[1]||=e=>A.value=e,j],options:O.value,"option-label":`name`,"option-value":`id`,placeholder:e(C)(`serviceConfigLogs.addParser`),class:`config-log-parsers__add-select`,loading:e(T).loading,disabled:O.value.length===0},{option:h(({option:t})=>[a(`span`,null,g(t.name),1),t.builtin?(p(),v(e(F),{key:0,severity:`secondary`,class:`ml-2`,style:{"font-size":`0.65rem`,padding:`0.1rem 0.35rem`}},{default:h(()=>[r(g(e(C)(`serviceConfigLogs.builtin`)),1)]),_:1})):y(``,!0)]),_:1},8,[`modelValue`,`options`,`placeholder`,`loading`,`disabled`])])]),a(`div`,ja,[n(e(z),{label:e(C)(`serviceConfigLogs.manageParsers`),icon:`ti ti-settings`,severity:`secondary`,variant:`outlined`,size:`small`,onClick:i[2]||=t=>e(x).push({name:`settings`,query:{section:`parsers`}})},null,8,[`label`])])]))}}),[[`__scopeId`,`data-v-b8de20cf`]]),Na={class:`config-log-sources`},Pa={class:`config-card`},Fa={class:`config-card__header`},Ia={class:`config-card__hint`},La={key:0,class:`config-card config-card--list`},Ra={class:`source-row__info`},za={class:`source-row__type`},Ba={class:`source-row__label`},Va={class:`source-row__actions`},Ha={key:1,class:`config-log-sources__empty`},Ua={class:`config-log-sources__footer`},Wa={class:`dialog-form`},Ga={class:`dialog-form__field`},Ka={for:`lsrc-type`,class:`dialog-form__label`},qa={class:`dialog-form__field`},Ja={for:`lsrc-path-file`,class:`dialog-form__label`},Ya={class:`dialog-form__field`},Xa={for:`lsrc-encoding-file`,class:`dialog-form__label`},Za={class:`dialog-form__field dialog-form__field--row`},Qa={for:`lsrc-startFromEnd-file`,class:`dialog-form__label`},$a={class:`dialog-form__field dialog-form__field--row`},eo={for:`lsrc-createIfNotExists-file`,class:`dialog-form__label`},to={class:`dialog-form__field`},no={for:`lsrc-connectionString-mongo`,class:`dialog-form__label`},ro={class:`dialog-form__row`},io={class:`dialog-form__field`},ao={class:`dialog-form__field`},oo={class:`dialog-form__row`},so={class:`dialog-form__field`},co={class:`dialog-form__field`},lo={class:`dialog-form__field`},uo={class:`dialog-form__row`},fo={class:`dialog-form__field dialog-form__field--grow`},po={class:`dialog-form__field dialog-form__field--port`},mo={class:`dialog-form__row`},ho={class:`dialog-form__field`},go={class:`dialog-form__field`},_o={class:`dialog-form__row`},vo={class:`dialog-form__field`},yo={class:`dialog-form__field`},bo={class:`dialog-form__row`},xo={class:`dialog-form__field`},So={class:`dialog-form__field`},Co={class:`dialog-form__row`},wo={class:`dialog-form__field`},To={class:`dialog-form__field`},Eo={class:`dialog-form__field`},Do={key:3,class:`dialog-form__hint-block`},Oo=B(f({__name:`ServiceConfigLogSources`,props:{service:{}},emits:[`save`],setup(c,{emit:u}){let{t:d}=S(),f=c,_=u,v=[{label:`Console (stdout/stderr)`,value:`console`,icon:`ti-terminal-2`},{label:`File`,value:`file`,icon:`ti-file`},{label:`MongoDB`,value:`mongo`,icon:`ti-database`},{label:`MySQL`,value:`mysql`,icon:`ti-database`}];function b(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 x=t([...f.service.logSources??[]]);i(()=>f.service.logSources,e=>{x.value=[...e??[]]});let C=t(!1),w=t(null),T=t(b(`console`));function E(){w.value=null,T.value=b(`file`),C.value=!0}function D(e){w.value=e,T.value={...x.value[e]},C.value=!0}function O(e){T.value=b(e)}function k(){w.value===null?x.value=[...x.value,{...T.value}]:x.value=x.value.map((e,t)=>t===w.value?{...T.value}:e),C.value=!1,_(`save`,{logSources:x.value})}function A(e){x.value=x.value.filter((t,n)=>n!==e),_(`save`,{logSources:x.value})}function M(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 N(e){return e===`console`?`ti-terminal-2`:e===`file`?`ti-file`:`ti-database`}return(t,i)=>(p(),o(`div`,Na,[a(`div`,Pa,[a(`div`,Fa,[i[23]||=a(`i`,{class:`ti ti-inbox`},null,-1),a(`span`,null,g(e(d)(`serviceConfigLogSources.title`)),1)]),a(`small`,Ia,g(e(d)(`serviceConfigLogSources.hint`)),1)]),x.value.length>0?(p(),o(`div`,La,[(p(!0),o(m,null,s(x.value,(t,r)=>(p(),o(`div`,{key:r,class:`source-row`},[a(`i`,{class:l(`ti ${N(t.type)} source-row__icon`)},null,2),a(`div`,Ra,[a(`span`,za,g(t.type),1),a(`span`,Ba,g(M(t)),1)]),a(`div`,Va,[n(e(z),{icon:`ti ti-pencil`,variant:`text`,size:`small`,severity:`secondary`,onClick:e=>D(r)},null,8,[`onClick`]),n(e(z),{icon:`ti ti-trash`,variant:`text`,size:`small`,severity:`danger`,onClick:e=>A(r)},null,8,[`onClick`])])]))),128))])):(p(),o(`div`,Ha,[i[24]||=a(`i`,{class:`ti ti-inbox config-log-sources__empty-icon`},null,-1),a(`p`,null,g(e(d)(`serviceConfigLogSources.empty`)),1),a(`small`,null,g(e(d)(`serviceConfigLogSources.emptyHint`)),1)])),a(`div`,Ua,[n(e(z),{label:e(d)(`serviceConfigLogSources.addSource`),icon:`ti ti-plus`,size:`small`,onClick:E},null,8,[`label`])]),n(e(L),{visible:C.value,"onUpdate:visible":i[22]||=e=>C.value=e,header:w.value===null?e(d)(`serviceConfigLogSources.addDialog`):e(d)(`serviceConfigLogSources.editDialog`),modal:``,style:{width:`520px`}},{footer:h(()=>[n(e(z),{label:e(d)(`serviceConfigLogSources.cancel`),severity:`secondary`,variant:`outlined`,onClick:i[21]||=e=>C.value=!1},null,8,[`label`]),n(e(z),{label:w.value===null?e(d)(`serviceConfigLogSources.add`):e(d)(`serviceConfigLogSources.save`),icon:`ti ti-check`,onClick:k},null,8,[`label`])]),default:h(()=>[a(`div`,Wa,[a(`div`,Ga,[a(`label`,Ka,g(e(d)(`serviceConfigLogSources.type`)),1),n(e(P),{"input-id":`lsrc-type`,"model-value":T.value.type,options:v,"option-label":`label`,"option-value":`value`,class:`dialog-form__input`,"onUpdate:modelValue":O},null,8,[`model-value`])]),T.value.type===`file`?(p(),o(m,{key:0},[a(`div`,qa,[a(`label`,Ja,[r(g(e(d)(`serviceConfigLogSources.path`))+` `,1),i[25]||=a(`span`,{class:`dialog-form__required`},`*`,-1)]),n(e(j),{id:`lsrc-path-file`,modelValue:T.value.path,"onUpdate:modelValue":i[0]||=e=>T.value.path=e,class:`dialog-form__input`,placeholder:`logs/app.log`},null,8,[`modelValue`])]),a(`div`,Ya,[a(`label`,Xa,g(e(d)(`serviceConfigLogSources.encoding`)),1),n(e(j),{id:`lsrc-encoding-file`,modelValue:T.value.encoding,"onUpdate:modelValue":i[1]||=e=>T.value.encoding=e,class:`dialog-form__input`,placeholder:`utf-8`},null,8,[`modelValue`])]),a(`div`,Za,[a(`label`,Qa,g(e(d)(`serviceConfigLogSources.startFromEnd`)),1),n(e(H),{"input-id":`lsrc-startFromEnd-file`,modelValue:T.value.startFromEnd,"onUpdate:modelValue":i[2]||=e=>T.value.startFromEnd=e},null,8,[`modelValue`])]),a(`div`,$a,[a(`label`,eo,g(e(d)(`serviceConfigLogSources.createIfNotExists`)),1),n(e(H),{"input-id":`lsrc-createIfNotExists-file`,modelValue:T.value.createIfNotExists,"onUpdate:modelValue":i[3]||=e=>T.value.createIfNotExists=e},null,8,[`modelValue`])])],64)):T.value.type===`mongo`?(p(),o(m,{key:1},[a(`div`,to,[a(`label`,no,[r(g(e(d)(`serviceConfigLogSources.connectionString`))+` `,1),i[26]||=a(`span`,{class:`dialog-form__required`},`*`,-1)]),n(e(j),{id:`lsrc-connectionString-mongo`,modelValue:T.value.connectionString,"onUpdate:modelValue":i[4]||=e=>T.value.connectionString=e,class:`dialog-form__input`,placeholder:`mongodb://user:pass@host:27017`,type:`password`,autocomplete:`off`},null,8,[`modelValue`])]),a(`div`,ro,[a(`div`,io,[i[27]||=a(`label`,{for:`lsrc-database-mongo`,class:`dialog-form__label`},[r(`Database `),a(`span`,{class:`dialog-form__required`},`*`)],-1),n(e(j),{id:`lsrc-database-mongo`,modelValue:T.value.database,"onUpdate:modelValue":i[5]||=e=>T.value.database=e,class:`dialog-form__input`,placeholder:`mydb`},null,8,[`modelValue`])]),a(`div`,ao,[i[28]||=a(`label`,{for:`lsrc-collection-mongo`,class:`dialog-form__label`},[r(`Collection `),a(`span`,{class:`dialog-form__required`},`*`)],-1),n(e(j),{id:`lsrc-collection-mongo`,modelValue:T.value.collection,"onUpdate:modelValue":i[6]||=e=>T.value.collection=e,class:`dialog-form__input`,placeholder:`logs`},null,8,[`modelValue`])])]),a(`div`,oo,[a(`div`,so,[i[29]||=a(`label`,{for:`lsrc-timestampField-mongo`,class:`dialog-form__label`},`Timestamp field`,-1),n(e(j),{id:`lsrc-timestampField-mongo`,modelValue:T.value.timestampField,"onUpdate:modelValue":i[7]||=e=>T.value.timestampField=e,class:`dialog-form__input`,placeholder:`timestamp`},null,8,[`modelValue`])]),a(`div`,co,[i[30]||=a(`label`,{for:`lsrc-messageField-mongo`,class:`dialog-form__label`},`Message field`,-1),n(e(j),{id:`lsrc-messageField-mongo`,modelValue:T.value.messageField,"onUpdate:modelValue":i[8]||=e=>T.value.messageField=e,class:`dialog-form__input`,placeholder:`message`},null,8,[`modelValue`])])]),a(`div`,lo,[i[31]||=a(`label`,{for:`lsrc-levelField-mongo`,class:`dialog-form__label`},[r(`Level field `),a(`span`,{class:`dialog-form__hint`},`(optional)`)],-1),n(e(j),{id:`lsrc-levelField-mongo`,modelValue:T.value.levelField,"onUpdate:modelValue":i[9]||=e=>T.value.levelField=e,class:`dialog-form__input`,placeholder:`level`},null,8,[`modelValue`])])],64)):T.value.type===`mysql`?(p(),o(m,{key:2},[a(`div`,uo,[a(`div`,fo,[i[32]||=a(`label`,{for:`lsrc-host-mysql`,class:`dialog-form__label`},[r(`Host `),a(`span`,{class:`dialog-form__required`},`*`)],-1),n(e(j),{id:`lsrc-host-mysql`,modelValue:T.value.host,"onUpdate:modelValue":i[10]||=e=>T.value.host=e,class:`dialog-form__input`,placeholder:`localhost`},null,8,[`modelValue`])]),a(`div`,po,[i[33]||=a(`label`,{for:`lsrc-port-mysql`,class:`dialog-form__label`},`Port`,-1),n(e(U),{"input-id":`lsrc-port-mysql`,modelValue:T.value.port,"onUpdate:modelValue":i[11]||=e=>T.value.port=e,min:1,max:65535,class:`dialog-form__input`},null,8,[`modelValue`])])]),a(`div`,mo,[a(`div`,ho,[i[34]||=a(`label`,{for:`lsrc-user-mysql`,class:`dialog-form__label`},[r(`User `),a(`span`,{class:`dialog-form__required`},`*`)],-1),n(e(j),{id:`lsrc-user-mysql`,modelValue:T.value.user,"onUpdate:modelValue":i[12]||=e=>T.value.user=e,class:`dialog-form__input`,placeholder:`root`},null,8,[`modelValue`])]),a(`div`,go,[i[35]||=a(`label`,{for:`lsrc-password-mysql`,class:`dialog-form__label`},`Password`,-1),n(e(j),{id:`lsrc-password-mysql`,modelValue:T.value.password,"onUpdate:modelValue":i[13]||=e=>T.value.password=e,class:`dialog-form__input`,type:`password`,autocomplete:`new-password`},null,8,[`modelValue`])])]),a(`div`,_o,[a(`div`,vo,[i[36]||=a(`label`,{for:`lsrc-database-mysql`,class:`dialog-form__label`},[r(`Database `),a(`span`,{class:`dialog-form__required`},`*`)],-1),n(e(j),{id:`lsrc-database-mysql`,modelValue:T.value.database,"onUpdate:modelValue":i[14]||=e=>T.value.database=e,class:`dialog-form__input`,placeholder:`app_db`},null,8,[`modelValue`])]),a(`div`,yo,[i[37]||=a(`label`,{for:`lsrc-table-mysql`,class:`dialog-form__label`},[r(`Table `),a(`span`,{class:`dialog-form__required`},`*`)],-1),n(e(j),{id:`lsrc-table-mysql`,modelValue:T.value.table,"onUpdate:modelValue":i[15]||=e=>T.value.table=e,class:`dialog-form__input`,placeholder:`logs`},null,8,[`modelValue`])])]),a(`div`,bo,[a(`div`,xo,[i[38]||=a(`label`,{for:`lsrc-timestampColumn-mysql`,class:`dialog-form__label`},`Timestamp column`,-1),n(e(j),{id:`lsrc-timestampColumn-mysql`,modelValue:T.value.timestampColumn,"onUpdate:modelValue":i[16]||=e=>T.value.timestampColumn=e,class:`dialog-form__input`,placeholder:`created_at`},null,8,[`modelValue`])]),a(`div`,So,[i[39]||=a(`label`,{for:`lsrc-messageColumn-mysql`,class:`dialog-form__label`},`Message column`,-1),n(e(j),{id:`lsrc-messageColumn-mysql`,modelValue:T.value.messageColumn,"onUpdate:modelValue":i[17]||=e=>T.value.messageColumn=e,class:`dialog-form__input`,placeholder:`message`},null,8,[`modelValue`])])]),a(`div`,Co,[a(`div`,wo,[i[40]||=a(`label`,{for:`lsrc-levelColumn-mysql`,class:`dialog-form__label`},[r(`Level column `),a(`span`,{class:`dialog-form__hint`},`(optional)`)],-1),n(e(j),{id:`lsrc-levelColumn-mysql`,modelValue:T.value.levelColumn,"onUpdate:modelValue":i[18]||=e=>T.value.levelColumn=e,class:`dialog-form__input`,placeholder:`level`},null,8,[`modelValue`])]),a(`div`,To,[i[41]||=a(`label`,{for:`lsrc-pollIntervalMs-mysql`,class:`dialog-form__label`},`Poll interval (ms)`,-1),n(e(U),{"input-id":`lsrc-pollIntervalMs-mysql`,modelValue:T.value.pollIntervalMs,"onUpdate:modelValue":i[19]||=e=>T.value.pollIntervalMs=e,min:500,max:6e4,class:`dialog-form__input`},null,8,[`modelValue`])])]),a(`div`,Eo,[i[42]||=a(`label`,{for:`lsrc-query-mysql`,class:`dialog-form__label`},[r(`Custom query `),a(`span`,{class:`dialog-form__hint`},[r(`(optional, must include `),a(`code`,null,`WHERE … > ?`),r(`)`)])],-1),n(e(j),{id:`lsrc-query-mysql`,modelValue:T.value.query,"onUpdate:modelValue":i[20]||=e=>T.value.query=e,class:`dialog-form__input`,placeholder:`SELECT * FROM logs WHERE created_at > ? ORDER BY id ASC`},null,8,[`modelValue`])])],64)):T.value.type===`console`?(p(),o(`small`,Do,`The console source captures stdout/stderr and is always active. Adding it here has no effect unless you want to track it explicitly.`)):y(``,!0)])]),_:1},8,[`visible`,`header`])]))}}),[[`__scopeId`,`data-v-122cf0a9`]]),ko={class:`config-traefik`},Ao={class:`traefik-entry__fields`},jo=B(f({__name:`ServiceConfigTraefik`,props:{service:{}},emits:[`save`],setup(l,{emit:u}){let d=l,f=u,g=t([...d.service.localUrls??[]]),_=t(null);c(async()=>{let e=$(d.service);if(!e)return;let t=await X.settings.getAgentTraefikConfig.query({agentId:e});_.value=t.enabled});let S=null;i(()=>d.service,e=>{S||(g.value=[...e.localUrls??[]])});function C(){g.value=[...g.value,{url:``,port:3e3}]}function w(e){g.value=g.value.filter((t,n)=>n!==e),D()}function T(e,t,n){g.value=g.value.map((r,i)=>i===e?{...r,[t]:n}:r)}function D(){S&&clearTimeout(S),S=setTimeout(()=>{f(`save`,{localUrls:g.value.filter(e=>e.url.trim())}),S=null},150)}return(t,i)=>(p(),o(`div`,ko,[_.value===!1?(p(),v(e(I),{key:0,severity:`warn`},{default:h(()=>[i[1]||=r(` Traefik n'est pas activé. Configurez-le dans `,-1),n(e(E),{to:{name:`settings`,query:{section:`agents`}}},{default:h(()=>[...i[0]||=[r(`Paramètres → Agents`,-1)]]),_:1}),i[2]||=r(` (bouton Traefik sur la ligne de l'agent) pour que ces URLs soient actives. `,-1)]),_:1})):y(``,!0),(p(!0),o(m,null,s(g.value,(t,r)=>(p(),o(`div`,{key:r,class:`traefik-entry`},[a(`div`,Ao,[n(e(j),{"model-value":t.url,class:`traefik-entry__url`,placeholder:`mon-app.local.mondomaine.com`,"onUpdate:modelValue":e=>T(r,`url`,e),onBlur:D,onKeydown:b(x(D,[`prevent`]),[`enter`])},null,8,[`model-value`,`onUpdate:modelValue`,`onKeydown`]),n(e(U),{"model-value":t.port,class:`traefik-entry__port`,min:1,max:65535,"use-grouping":!1,placeholder:`3000`,"onUpdate:modelValue":e=>{T(r,`port`,e??3e3),D()}},null,8,[`model-value`,`onUpdate:modelValue`]),n(e(z),{icon:`ti ti-trash`,severity:`danger`,variant:`text`,size:`small`,onClick:e=>w(r)},null,8,[`onClick`])])]))),128)),n(e(z),{icon:`ti ti-plus`,label:`Ajouter une URL`,size:`small`,variant:`outlined`,onClick:C})]))}}),[[`__scopeId`,`data-v-37776b09`]]),Mo={class:`config-view`,"data-testid":`config-view`},No={class:`config-view__header`},Po={class:`config-view__title`},Fo={class:`config-view__actions`},Io=B(f({__name:`ServiceConfigView`,props:{service:{},projectId:{}},emits:[`remove-service`],setup(t,{emit:r}){let i=t,s=r,{t:c}=S(),l=_e(),u=ue(),f=C(),{isDebug:m}=Wt(),_=T(),v=w(),y=[`general`,`commands`,`shortcuts`,`env`,`health`,`log-parsers`,`log-sources`,`traefik`],b=d(()=>{let e=_.query.configTab;return y.includes(e)?e:`general`});function x(e){v.replace({query:{..._.query,configTab:e}})}let E=d(()=>u.getByRef({id:i.projectId,orgId:f.activeOrgId})?.activeEnvironmentId);async function D(e,t){await t()?m.value&&console.debug(`[autosave] ${e} saved`):console.error(`[autosave] ${e} failed:`,l.error??`Save failed`)}async function O(e){await D(`General`,()=>l.update(i.service.id,e))}async function k(e){await D(`Commands`,()=>l.update(i.service.id,e))}async function A(e){await D(`Health check`,()=>l.update(i.service.id,{healthCheck:e??null}))}async function j(e){await D(`Shortcuts`,()=>l.update(i.service.id,{shortcuts:e}))}async function M(e){await D(`Docker`,()=>l.update(i.service.id,{dockerConfig:e}))}async function N(e){await D(`Log parsers`,()=>l.update(i.service.id,e))}async function P(e){await D(`Log sources`,()=>l.update(i.service.id,e))}async function F(e){await D(`Traefik`,()=>l.update(i.service.id,e))}function I(){s(`remove-service`,i.service.id)}return(r,i)=>(p(),o(`div`,Mo,[a(`div`,No,[a(`h2`,Po,g(e(c)(`serviceConfigView.title`)),1),a(`div`,Fo,[n(e(z),{label:e(c)(`serviceConfigView.remove`),icon:`ti ti-trash`,severity:`danger`,size:`small`,variant:`outlined`,onClick:I},null,8,[`label`])])]),n(e(se),{value:b.value,class:`config-view__tabs`,"onUpdate:value":x},{default:h(()=>[n(e(ee),null,{default:h(()=>[n(e(J),{value:`general`,"data-testid":`tab-config`},{default:h(()=>[i[0]||=a(`i`,{class:`ti ti-settings tab-icon`},null,-1),a(`span`,null,g(e(c)(`serviceConfigView.tabGeneral`)),1)]),_:1}),n(e(J),{value:`commands`,"data-testid":`tab-commands`},{default:h(()=>[i[1]||=a(`i`,{class:`ti ti-code tab-icon`},null,-1),a(`span`,null,g(e(c)(`serviceConfigView.tabCommands`)),1)]),_:1}),n(e(J),{value:`shortcuts`,"data-testid":`tab-shortcuts`},{default:h(()=>[i[2]||=a(`i`,{class:`ti ti-bolt tab-icon`},null,-1),a(`span`,null,g(e(c)(`serviceConfigView.tabShortcuts`)),1)]),_:1}),n(e(J),{value:`env`,"data-testid":`tab-env`},{default:h(()=>[i[3]||=a(`i`,{class:`ti ti-database tab-icon`},null,-1),a(`span`,null,g(e(c)(`serviceConfigView.tabEnvironment`)),1)]),_:1}),n(e(J),{value:`health`},{default:h(()=>[i[4]||=a(`i`,{class:`ti ti-heart tab-icon`},null,-1),a(`span`,null,g(e(c)(`serviceConfigView.tabHealthCheck`)),1)]),_:1}),n(e(J),{value:`log-parsers`,"data-testid":`tab-log-parsers`},{default:h(()=>[i[5]||=a(`i`,{class:`ti ti-list tab-icon`},null,-1),a(`span`,null,g(e(c)(`serviceConfigView.tabLogParsers`)),1)]),_:1}),n(e(J),{value:`log-sources`},{default:h(()=>[i[6]||=a(`i`,{class:`ti ti-inbox tab-icon`},null,-1),a(`span`,null,g(e(c)(`serviceConfigView.tabLogSources`)),1)]),_:1}),n(e(J),{value:`traefik`},{default:h(()=>[...i[7]||=[a(`i`,{class:`ti ti-server tab-icon`},null,-1),a(`span`,null,`Traefik`,-1)]]),_:1})]),_:1}),n(e(q),null,{default:h(()=>[n(e(R),{value:`general`},{default:h(()=>[n(Dn,{service:t.service,onSave:O},null,8,[`service`])]),_:1}),n(e(R),{value:`commands`},{default:h(()=>[n(Qr,{service:t.service,onSave:k,onDockerSave:M},null,8,[`service`])]),_:1}),n(e(R),{value:`shortcuts`,"data-testid":`tabpanel-shortcuts`},{default:h(()=>[n(ya,{service:t.service,onSave:j},null,8,[`service`])]),_:1}),n(e(R),{value:`env`},{default:h(()=>[n(Ri,{service:t.service,"project-id":t.projectId,"active-environment-id":E.value},null,8,[`service`,`project-id`,`active-environment-id`])]),_:1}),n(e(R),{value:`health`},{default:h(()=>[n(sa,{service:t.service,onSave:A},null,8,[`service`])]),_:1}),n(e(R),{value:`log-parsers`,"data-testid":`tabpanel-log-parsers`},{default:h(()=>[n(Ma,{service:t.service,onSave:N},null,8,[`service`])]),_:1}),n(e(R),{value:`log-sources`},{default:h(()=>[n(Oo,{service:t.service,onSave:P},null,8,[`service`])]),_:1}),n(e(R),{value:`traefik`},{default:h(()=>[n(jo,{service:t.service,onSave:F},null,8,[`service`])]),_:1})]),_:1})]),_:1},8,[`value`])]))}}),[[`__scopeId`,`data-v-204a6ce7`]]),Lo={key:0,class:`service-detail`},Ro={key:1,class:`service-detail__not-found`},zo={key:2,class:`service-detail__not-found`},Bo=B(f({__name:`ServiceDetailPage`,setup(n){let r=T(),s=w(),c=N(),l=re(),{t:f}=S(),m=_e(),h=xe(),_=ue(),{setServiceContext:b}=pe(),x=d(()=>r.params.id);i(x,e=>b(e),{immediate:!0}),u(()=>b(null));let C=d(()=>{let e=r.params.tab;return e===`terminal`||e===`metrics`||e===`config`||e===`git`||e===`wiki`?e:`terminal`}),E=t(null),D=t(!1),O=d(()=>m.getById(x.value)||(E.value?.id===x.value?E.value:null));i(x,async e=>{if(E.value=null,e&&!m.getById(e)){D.value=!0;try{E.value=await m.fetchOne(e)}finally{D.value=!1}}},{immediate:!0});let k=d(()=>h.getByService(x.value)),A=d(()=>_.currentProject?.id??``);function j(e){let t=m.getById(e);l.require({message:f(`serviceDetail.deleteConfirmMessage`,{name:t?.name??e}),header:f(`serviceDetail.deleteConfirmHeader`),icon:`ti ti-alert-triangle`,rejectLabel:f(`actions.cancel`),acceptLabel:f(`actions.delete`),acceptProps:{severity:`danger`},accept:async()=>{await m.remove(e)&&(c.add({severity:`success`,summary:f(`serviceDetail.removed`),detail:f(`serviceDetail.deleted`),life:3e3}),s.push(`/`))}})}return(t,n)=>O.value?(p(),o(`div`,Lo,[C.value===`terminal`?(p(),v(Dt,{key:`terminal-`+x.value,service:O.value,processes:k.value},null,8,[`service`,`processes`])):C.value===`metrics`?(p(),v(Rt,{key:`metrics-`+x.value,service:O.value,processes:k.value},null,8,[`service`,`processes`])):C.value===`config`?(p(),v(Io,{key:`config-`+x.value,service:O.value,"project-id":A.value,onRemoveService:j},null,8,[`service`,`project-id`])):C.value===`git`?(p(),v(be,{key:`git-`+x.value,"service-id":x.value},null,8,[`service-id`])):C.value===`wiki`?(p(),v(je,{key:`wiki-`+x.value,scope:`service:${x.value}`},null,8,[`scope`])):y(``,!0)])):D.value?(p(),o(`div`,Ro)):(p(),o(`div`,zo,[a(`p`,null,g(e(f)(`serviceDetail.notFound`)),1)]))}}),[[`__scopeId`,`data-v-ac012903`]]);export{Bo as default};
@@ -1 +1 @@
1
- .log-details[data-v-b2c352ef]{flex-direction:column;gap:1.5rem;display:flex}.log-details__section[data-v-b2c352ef]{flex-direction:column;gap:.5rem;display:flex}.log-details__label[data-v-b2c352ef]{text-transform:uppercase;color:var(--r-primary);letter-spacing:.05em;font-size:.75rem;font-weight:600}.log-details__value[data-v-b2c352ef]{color:var(--r-text);font-size:.875rem}.log-details__value--box[data-v-b2c352ef]{border:1px solid var(--r-border);padding:.75rem}.log-details__value--code[data-v-b2c352ef]{white-space:pre-wrap;word-break:break-word;font-family:JetBrains Mono,Fira Code,Consolas,monospace;font-size:.8125rem;line-height:1.5}.log-details__process[data-v-b2c352ef]{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;display:flex}.log-details__process span[data-v-b2c352ef]{word-break:break-all;font-family:JetBrains Mono,Fira Code,Consolas,monospace;font-size:.8125rem}.service-terminal[data-v-e44dc775]{flex-direction:column;height:100%;display:flex;overflow:hidden}.service-terminal--fullscreen[data-v-e44dc775]{z-index:9999;position:fixed;inset:0}.service-terminal__header[data-v-e44dc775]{border-bottom:1px solid var(--r-border);background:var(--r-bg);justify-content:space-between;align-items:center;padding:.75rem 1rem;display:flex}.service-terminal__header-left[data-v-e44dc775]{align-items:center;gap:.625rem;display:flex}.service-terminal__name[data-v-e44dc775]{color:var(--r-text);font-size:1rem;font-weight:600}.service-terminal__state-tag[data-v-e44dc775]{font-size:.75rem}.service-terminal__header-right[data-v-e44dc775]{align-items:center;gap:.5rem;display:flex}.service-terminal__toolbar[data-v-e44dc775]{border-bottom:1px solid var(--r-border);background:var(--r-bg);justify-content:space-between;align-items:center;padding:.25rem .5rem;display:flex}.service-terminal__toolbar-left[data-v-e44dc775],.service-terminal__toolbar-right[data-v-e44dc775]{align-items:center;gap:.25rem;display:flex}.service-terminal__content[data-v-e44dc775]{flex:1;min-height:0;overflow:hidden}.service-terminal__shortcuts[data-v-e44dc775]{border-top:1px solid var(--r-border);background:var(--r-bg);flex-wrap:wrap;align-items:center;gap:.5rem;padding:.375rem 1rem;display:flex}.shortcut-badge[data-v-e44dc775]{font-size:.75rem}.service-terminal__command-input[data-v-e44dc775]{border-top:1px solid var(--r-border);background:var(--r-bg);align-items:center;gap:.5rem;padding:.5rem 1rem;display:flex}.service-terminal__prompt[data-v-e44dc775]{color:var(--r-primary);font-family:Courier New,monospace;font-size:1rem;font-weight:600;line-height:1}.service-terminal__autocomplete[data-v-e44dc775]{flex:1}.service-terminal__autocomplete[data-v-e44dc775] .r-autocomplete__input{width:100%}.service-terminal__input[data-v-e44dc775]{color:var(--r-text);font-family:Courier New,monospace;font-size:.875rem;box-shadow:none!important;background:0 0!important;border:none!important;outline:none!important;padding:.5rem 0!important}.service-terminal__input[data-v-e44dc775]::placeholder{color:var(--r-text-muted);font-style:italic}.service-terminal__input[data-v-e44dc775]:disabled{opacity:.5;cursor:not-allowed}.service-terminal__bottom[data-v-e44dc775]{border-top:1px solid var(--r-border);background:var(--r-bg);flex-wrap:wrap;align-items:center;gap:.5rem;padding:.5rem 1rem;display:flex}.service-terminal__pill[data-v-e44dc775]{text-overflow:ellipsis;max-width:200px;font-size:.75rem;overflow:hidden}.service-terminal__pid-selector[data-v-e44dc775]{min-width:200px}.pid-option[data-v-e44dc775]{align-items:center;gap:.5rem;width:100%;display:flex}.pid-option span[data-v-e44dc775]{flex:1}.pid-badge[data-v-e44dc775]{margin-left:auto;font-size:.625rem}.pid-status-icon[data-v-e44dc775]{margin-right:.5rem;font-size:.5rem}.pid-status-icon--active[data-v-e44dc775]{color:#22c55e}.pid-status-icon--stopped[data-v-e44dc775]{color:#94a3b8}.service-metrics[data-v-4ff9fccd]{flex-direction:column;height:100%;padding:1rem;display:flex;overflow-y:auto}.service-metrics__no-data[data-v-4ff9fccd],.service-metrics__no-process[data-v-4ff9fccd]{color:var(--r-text-muted);justify-content:center;align-items:center;gap:.5rem;padding:3rem;font-size:.9375rem;display:flex}.service-metrics__skeleton[data-v-4ff9fccd]{flex-wrap:wrap;gap:1rem;display:flex}.metric-skeleton[data-v-4ff9fccd]{border:1px solid var(--r-border);background:var(--r-bg);flex:1;min-width:160px;max-width:260px;padding:1rem}.config-general[data-v-2ad058bc]{flex-direction:column;gap:.75rem;display:flex}.config-card[data-v-2ad058bc]{border:1px solid var(--r-border);background:var(--r-bg);padding:.875rem 1rem}.config-card--inline[data-v-2ad058bc]{justify-content:space-between;align-items:center;display:flex}.config-card__header[data-v-2ad058bc]{color:var(--r-text-muted);align-items:center;gap:.5rem;margin-bottom:.5rem;font-size:.8125rem;font-weight:600;display:flex}.config-card--inline .config-card__header[data-v-2ad058bc]{margin-bottom:0}.config-card__input[data-v-2ad058bc]{width:100%}.config-card__hint[data-v-2ad058bc]{color:var(--r-text-muted);margin-top:.3rem;font-size:.78rem;display:block}.config-meta[data-v-2ad058bc]{flex-direction:column;gap:.5rem;margin-top:.75rem;display:flex}.config-meta__row[data-v-2ad058bc]{align-items:center;gap:.5rem;display:flex}.config-meta__input[data-v-2ad058bc]{flex:1}.config-meta__input--wide[data-v-2ad058bc]{flex:2}.config-meta__add[data-v-2ad058bc]{align-self:flex-start}.docker-config[data-v-1a62039a]{flex-direction:column;gap:.75rem;display:flex}.docker-config__section[data-v-1a62039a]{flex-direction:column;gap:.375rem;display:flex}.docker-config__section-title[data-v-1a62039a]{color:var(--r-text);font-size:.875rem;font-weight:600}.docker-config__label[data-v-1a62039a]{color:var(--r-text-muted);font-size:.75rem;font-weight:600}.docker-config__input[data-v-1a62039a]{width:100%;max-width:480px}.docker-config__select[data-v-1a62039a]{width:100%;max-width:320px}.docker-config__mode-toggle.r-radio-group[data-v-1a62039a]{gap:1.5rem;display:flex}.docker-config__mode-toggle--indented.r-radio-group[data-v-1a62039a]{flex-direction:column;gap:.375rem;margin-top:.5rem;padding-left:1.5rem}.docker-config__mode-option[data-v-1a62039a]{cursor:pointer;align-items:center;gap:.375rem;font-size:.875rem;display:flex}.docker-config__kv-list[data-v-1a62039a]{flex-direction:column;gap:.5rem;display:flex}.docker-config__kv-row[data-v-1a62039a]{align-items:center;gap:.5rem;display:flex}.docker-config__kv-input[data-v-1a62039a]{flex:1}.docker-config__list[data-v-1a62039a]{flex-direction:column;gap:.5rem;display:flex}.docker-config__list-row[data-v-1a62039a]{align-items:center;gap:.5rem;display:flex}.docker-config__checkbox-row[data-v-1a62039a]{align-items:center;gap:.5rem;margin-bottom:.25rem;display:flex}.docker-config__checkbox-label[data-v-1a62039a]{cursor:pointer;font-size:.875rem}.docker-config__hint[data-v-1a62039a]{color:var(--r-text-muted);margin-top:.125rem;font-size:.75rem}.docker-config__shell-row[data-v-1a62039a]{flex-wrap:wrap;align-items:center;gap:.75rem;margin-top:.25rem;padding-left:1.5rem;display:flex}.docker-config__shell-row .docker-config__label[data-v-1a62039a]{white-space:nowrap}.docker-config__shell-row .docker-config__hint[data-v-1a62039a]{margin-top:0}.docker-config__select--small[data-v-1a62039a]{max-width:180px}.docker-config__hint code[data-v-1a62039a]{font-family:monospace;font-size:.7rem}.docker-config__hint-inline[data-v-1a62039a]{color:var(--r-text-muted);font-size:.75rem;font-weight:400}.docker-config__bootstrap-card[data-v-1a62039a]{border:1px solid var(--r-border);background:var(--r-bg);padding:.75rem 1rem}.docker-config__bootstrap-row[data-v-1a62039a]{flex-wrap:wrap;align-items:flex-end;gap:.75rem;display:flex}.docker-config__bootstrap-field[data-v-1a62039a]{flex-direction:column;flex:1;gap:.25rem;min-width:120px;display:flex}.docker-config__bootstrap-field--wide[data-v-1a62039a]{flex:2;min-width:200px}.docker-config__bootstrap-actions[data-v-1a62039a]{align-items:center;gap:.125rem;padding-bottom:.125rem;display:flex}.config-commands[data-v-4820790b]{flex-direction:column;gap:.75rem;display:flex}.config-commands__tab-content[data-v-4820790b]{flex-direction:column;gap:.75rem;padding-top:.75rem;display:flex}.config-commands__empty[data-v-4820790b]{text-align:center;color:var(--r-text-muted);padding:1.5rem;font-size:.875rem}.config-card[data-v-4820790b]{border:1px solid var(--r-border);background:var(--r-bg);padding:.875rem 1rem}.config-card__input[data-v-4820790b]{width:100%}.config-commands__row[data-v-4820790b]{align-items:flex-end;gap:.75rem;display:flex}.config-commands__field[data-v-4820790b]{flex-direction:column;flex:1;gap:.25rem;display:flex}.config-commands__field--wide[data-v-4820790b]{flex:2}.config-commands__label[data-v-4820790b]{color:var(--r-text-muted);font-size:.75rem;font-weight:600}.config-commands__actions-cell[data-v-4820790b]{align-items:center;padding-bottom:.125rem;display:flex}.config-commands__footer[data-v-4820790b]{justify-content:space-between;align-items:center;padding-top:.5rem;display:flex}.tab-icon[data-v-4820790b]{margin-right:.4rem;font-size:.85rem}.config-commands__execution[data-v-4820790b]{flex-wrap:wrap;align-items:stretch;gap:.75rem;padding-bottom:.25rem;display:flex}.config-card--execution[data-v-4820790b]{flex-direction:column;flex:1;gap:.5rem;min-width:180px;display:flex}.config-card__header[data-v-4820790b]{align-items:center;gap:.5rem;font-size:.875rem;font-weight:600;display:flex}.config-card__hint[data-v-4820790b]{color:var(--r-text-muted);font-size:.78rem}.runner-option[data-v-4820790b]{align-items:center;gap:.5rem;display:flex}.config-env[data-v-c7f150f3]{flex-direction:column;gap:1rem;display:flex}.active-env-display[data-v-c7f150f3]{background:var(--r-bg-hover);border-left:3px solid var(--r-primary);border-radius:4px;align-items:center;gap:.5rem;padding:.75rem 1rem;font-size:.875rem;display:flex}.active-env-label[data-v-c7f150f3]{color:var(--r-text-muted);font-weight:600}.inheritance-toggle[data-v-c7f150f3]{background:var(--r-bg-hover);border:1px solid var(--r-border);border-radius:4px;align-items:center;gap:.75rem;padding:.6rem 1rem;font-size:.875rem;display:flex}.inheritance-label[data-v-c7f150f3]{color:var(--r-text)}.config-env__header[data-v-c7f150f3]{justify-content:space-between;align-items:center;gap:1rem;margin-bottom:.5rem;display:flex}.config-env__title[data-v-c7f150f3]{color:var(--r-text);flex:1;margin:0;font-size:1rem;font-weight:600}.config-env__actions[data-v-c7f150f3]{align-items:center;gap:.5rem;display:flex}.variables-view[data-v-c7f150f3]{flex-direction:column;gap:1rem;display:flex}.inherited-accordion[data-v-c7f150f3]{margin-top:.25rem}.inherited-header[data-v-c7f150f3]{color:var(--r-text-muted);align-items:center;gap:.5rem;font-size:.875rem;font-weight:600;display:inline-flex}.inherited-header .ti[data-v-c7f150f3]{font-size:.8rem}.empty-state[data-v-c7f150f3]{text-align:center;color:var(--r-text-muted);border:1px dashed var(--r-border);border-radius:4px;padding:2rem}.editor-container[data-v-c7f150f3]{flex-direction:column;gap:1rem;display:flex}.editor-env-banner[data-v-c7f150f3]{background:var(--r-bg-hover);color:var(--r-text);border-radius:6px;align-items:center;gap:.4rem;padding:.65rem .85rem;font-size:.85rem;display:flex}.editor-env-text[data-v-c7f150f3]{margin-right:.15rem}.editor-section[data-v-c7f150f3]{flex-direction:column;gap:.75rem;display:flex}.preview-container[data-v-c7f150f3]{flex-direction:column;gap:1rem;display:flex}.preview-info[data-v-c7f150f3]{color:var(--r-text-muted);margin:0;font-size:.875rem;font-style:italic}.preview-key[data-v-c7f150f3]{color:var(--r-text);font-family:JetBrains Mono,Fira Code,monospace;font-size:.85rem;font-weight:600}.preview-value[data-v-c7f150f3]{color:var(--r-text);word-break:break-all;font-family:JetBrains Mono,Fira Code,monospace;font-size:.85rem}.loading-container[data-v-c7f150f3]{justify-content:center;padding:2rem;display:flex}[data-v-c7f150f3] .preview-container .r-datatable{margin-top:1rem}.passthrough-info[data-v-c7f150f3]{color:var(--r-text-muted);margin:0 0 .5rem;font-size:.8rem;font-style:italic}.passthrough-undefined[data-v-c7f150f3]{color:var(--r-orange-500);font-size:.85rem;font-style:italic}.inherited-row-key[data-v-c7f150f3]{flex-direction:column;gap:.2rem;display:flex}.source-badge[data-v-c7f150f3]{opacity:.7;font-size:.7rem}.secret-mask[data-v-c7f150f3]{color:var(--r-text-muted,#6b7280);font-size:.85rem;font-style:italic}.value-row[data-v-c7f150f3]{align-items:center;display:inline-flex}.value-actions[data-v-c7f150f3]{flex-shrink:0;align-items:center;gap:.2rem;margin-right:.4rem;display:inline-flex}.action-icon[data-v-c7f150f3]{color:var(--r-text-muted,#9ca3af);cursor:pointer;padding:.15rem;font-size:.75rem;transition:color .15s}.action-icon[data-v-c7f150f3]:hover{color:var(--r-text)}.action-icon.ti-check[data-v-c7f150f3]{color:var(--r-green-500,#22c55e)}.config-health[data-v-956bcc34]{flex-direction:column;gap:.75rem;display:flex}.config-card[data-v-956bcc34]{border:1px solid var(--r-border);background:var(--r-bg);padding:.875rem 1rem}.config-card--inline[data-v-956bcc34]{justify-content:space-between;align-items:center;display:flex}.config-card__header[data-v-956bcc34]{color:var(--r-text-muted);align-items:center;gap:.5rem;margin-bottom:.5rem;font-size:.8125rem;font-weight:600;display:flex}.config-card--inline .config-card__header[data-v-956bcc34]{margin-bottom:0}.config-card__input[data-v-956bcc34]{width:100%}.config-card__hint[data-v-956bcc34]{color:var(--r-text-muted);margin-top:.25rem;font-size:.75rem;display:block}.config-shortcuts[data-v-cbad556b]{flex-direction:column;gap:.75rem;display:flex}.config-shortcuts__empty[data-v-cbad556b]{text-align:center;color:var(--r-text-muted);padding:1.5rem;font-size:.875rem}.config-card[data-v-cbad556b]{border:1px solid var(--r-border);background:var(--r-bg);padding:.875rem 1rem}.config-card__input[data-v-cbad556b]{width:100%}.config-shortcuts__row[data-v-cbad556b]{align-items:flex-end;gap:.75rem;display:flex}.config-shortcuts__field[data-v-cbad556b]{flex-direction:column;flex:1;gap:.25rem;display:flex}.config-shortcuts__field--wide[data-v-cbad556b]{flex:2}.config-shortcuts__label[data-v-cbad556b]{color:var(--r-text-muted);font-size:.75rem;font-weight:600}.config-shortcuts__actions-cell[data-v-cbad556b]{align-items:center;padding-bottom:.125rem;display:flex}.config-shortcuts__footer[data-v-cbad556b]{justify-content:space-between;align-items:center;padding-top:.5rem;display:flex}.config-log-parsers[data-v-b8de20cf]{flex-direction:column;gap:.75rem;display:flex}.config-card[data-v-b8de20cf]{border:1px solid var(--r-border);background:var(--r-bg);padding:.875rem 1rem}.config-card__header[data-v-b8de20cf]{color:var(--r-text-muted);align-items:center;gap:.5rem;margin-bottom:.5rem;font-size:.8125rem;font-weight:600;display:flex}.config-card__hint[data-v-b8de20cf]{color:var(--r-text-muted);margin-top:.3rem;font-size:.78rem;display:block}.config-card__header-hint[data-v-b8de20cf]{color:var(--r-text-muted);margin-left:auto;font-size:.75rem;font-weight:400}.config-log-parsers__drag-list[data-v-b8de20cf]{flex-direction:column;gap:.375rem;margin-top:.5rem;display:flex}.config-log-parsers__drag-row[data-v-b8de20cf]{border:1px solid var(--r-border);background:var(--r-bg-hover);-webkit-user-select:none;user-select:none;align-items:center;gap:.625rem;padding:.4rem .625rem;display:flex}.drag-handle[data-v-b8de20cf]{cursor:grab;color:var(--r-text-muted);flex-shrink:0}.drag-handle[data-v-b8de20cf]:active{cursor:grabbing}.config-log-parsers__order[data-v-b8de20cf]{text-align:center;width:1.25rem;color:var(--r-text-muted);flex-shrink:0;font-size:.75rem;font-weight:700}.config-log-parsers__name[data-v-b8de20cf]{flex:1;font-size:.875rem;font-weight:500}.config-log-parsers__delete[data-v-b8de20cf]{flex-shrink:0;margin-left:auto}.config-log-parsers__empty[data-v-b8de20cf]{color:var(--r-text-muted);padding:1rem 0 .5rem;font-size:.875rem}.config-log-parsers__add-row[data-v-b8de20cf]{border-top:1px solid var(--r-border);align-items:center;gap:.5rem;margin-top:.75rem;padding-top:.75rem;display:flex}.config-log-parsers__add-select[data-v-b8de20cf]{flex:1}.config-log-parsers__footer[data-v-b8de20cf]{justify-content:space-between;align-items:center;padding-top:.5rem;display:flex}.config-log-sources[data-v-bc1e3496]{flex-direction:column;gap:.75rem;display:flex}.config-card[data-v-bc1e3496]{border:1px solid var(--r-border);background:var(--r-bg);padding:.875rem 1rem}.config-card__header[data-v-bc1e3496]{color:var(--r-text-muted);align-items:center;gap:.5rem;margin-bottom:.5rem;font-size:.8125rem;font-weight:600;display:flex}.config-card__hint[data-v-bc1e3496]{color:var(--r-text-muted);margin-top:.3rem;font-size:.78rem;display:block}.config-card--list[data-v-bc1e3496]{flex-direction:column;gap:.375rem;padding:.5rem;display:flex}.source-row[data-v-bc1e3496]{border:1px solid var(--r-border);background:var(--r-bg-hover);align-items:center;gap:.75rem;padding:.5rem .625rem;display:flex}.source-row__icon[data-v-bc1e3496]{color:var(--r-text-muted);flex-shrink:0}.source-row__info[data-v-bc1e3496]{flex-direction:column;flex:1;gap:.125rem;min-width:0;display:flex}.source-row__type[data-v-bc1e3496]{text-transform:uppercase;color:var(--r-primary);letter-spacing:.04em;font-size:.7rem;font-weight:700}.source-row__label[data-v-bc1e3496]{color:var(--r-text);white-space:nowrap;text-overflow:ellipsis;font-size:.8125rem;overflow:hidden}.source-row__actions[data-v-bc1e3496]{flex-shrink:0;gap:.25rem;display:flex}.config-log-sources__empty[data-v-bc1e3496]{text-align:center;color:var(--r-text-muted);border:1px dashed var(--r-border);padding:2rem;font-size:.875rem}.config-log-sources__empty-icon[data-v-bc1e3496]{opacity:.4;margin-bottom:.5rem;font-size:2rem;display:block}.config-log-sources__empty p[data-v-bc1e3496]{margin:0 0 .25rem}.config-log-sources__footer[data-v-bc1e3496]{justify-content:flex-end;padding-top:.25rem;display:flex}.dialog-form[data-v-bc1e3496]{flex-direction:column;gap:.875rem;padding-top:.25rem;display:flex}.dialog-form__row[data-v-bc1e3496]{gap:.75rem;display:flex}.dialog-form__row .dialog-form__field[data-v-bc1e3496]{flex:1}.dialog-form__field--port[data-v-bc1e3496]{flex:0 0 100px!important}.dialog-form__field--grow[data-v-bc1e3496]{flex:2!important}.dialog-form__field[data-v-bc1e3496]{flex-direction:column;gap:.3rem;display:flex}.dialog-form__field--row[data-v-bc1e3496]{flex-direction:row;justify-content:space-between;align-items:center}.dialog-form__label[data-v-bc1e3496]{color:var(--r-text-muted);font-size:.8rem;font-weight:600}.dialog-form__input[data-v-bc1e3496]{width:100%}.dialog-form__required[data-v-bc1e3496]{color:var(--r-red-500,#ef4444)}.dialog-form__hint[data-v-bc1e3496]{color:var(--r-text-muted);font-size:.75rem;font-weight:400}.dialog-form__hint-block[data-v-bc1e3496]{color:var(--r-text-muted);background:var(--r-bg-hover);padding:.5rem;font-size:.8rem;display:block}.config-traefik[data-v-37776b09]{flex-direction:column;gap:.75rem;padding:1rem 0;display:flex}.traefik-entry[data-v-37776b09]{align-items:center;gap:.5rem;min-width:0;display:flex}.traefik-entry__fields[data-v-37776b09]{flex:1;align-items:center;gap:.5rem;min-width:0;display:flex}.traefik-entry__url[data-v-37776b09]{flex:1;min-width:0}.traefik-entry__port[data-v-37776b09]{flex:0 0 100px}.config-view[data-v-204a6ce7]{flex-direction:column;height:100%;padding:1rem;display:flex;overflow-y:auto}.config-view__header[data-v-204a6ce7]{justify-content:space-between;align-items:center;margin-bottom:1rem;display:flex}.config-view__title[data-v-204a6ce7]{color:var(--r-text);margin:0;font-size:1.125rem;font-weight:600}.config-view__tabs[data-v-204a6ce7]{flex:1}.tab-icon[data-v-204a6ce7]{margin-right:.4rem;font-size:.85rem}.service-detail[data-v-ac012903]{height:100%}.service-detail__not-found[data-v-ac012903]{height:100%;color:var(--r-text-muted);justify-content:center;align-items:center;display:flex}
1
+ .log-details[data-v-b2c352ef]{flex-direction:column;gap:1.5rem;display:flex}.log-details__section[data-v-b2c352ef]{flex-direction:column;gap:.5rem;display:flex}.log-details__label[data-v-b2c352ef]{text-transform:uppercase;color:var(--r-primary);letter-spacing:.05em;font-size:.75rem;font-weight:600}.log-details__value[data-v-b2c352ef]{color:var(--r-text);font-size:.875rem}.log-details__value--box[data-v-b2c352ef]{border:1px solid var(--r-border);padding:.75rem}.log-details__value--code[data-v-b2c352ef]{white-space:pre-wrap;word-break:break-word;font-family:JetBrains Mono,Fira Code,Consolas,monospace;font-size:.8125rem;line-height:1.5}.log-details__process[data-v-b2c352ef]{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;display:flex}.log-details__process span[data-v-b2c352ef]{word-break:break-all;font-family:JetBrains Mono,Fira Code,Consolas,monospace;font-size:.8125rem}.service-terminal[data-v-e44dc775]{flex-direction:column;height:100%;display:flex;overflow:hidden}.service-terminal--fullscreen[data-v-e44dc775]{z-index:9999;position:fixed;inset:0}.service-terminal__header[data-v-e44dc775]{border-bottom:1px solid var(--r-border);background:var(--r-bg);justify-content:space-between;align-items:center;padding:.75rem 1rem;display:flex}.service-terminal__header-left[data-v-e44dc775]{align-items:center;gap:.625rem;display:flex}.service-terminal__name[data-v-e44dc775]{color:var(--r-text);font-size:1rem;font-weight:600}.service-terminal__state-tag[data-v-e44dc775]{font-size:.75rem}.service-terminal__header-right[data-v-e44dc775]{align-items:center;gap:.5rem;display:flex}.service-terminal__toolbar[data-v-e44dc775]{border-bottom:1px solid var(--r-border);background:var(--r-bg);justify-content:space-between;align-items:center;padding:.25rem .5rem;display:flex}.service-terminal__toolbar-left[data-v-e44dc775],.service-terminal__toolbar-right[data-v-e44dc775]{align-items:center;gap:.25rem;display:flex}.service-terminal__content[data-v-e44dc775]{flex:1;min-height:0;overflow:hidden}.service-terminal__shortcuts[data-v-e44dc775]{border-top:1px solid var(--r-border);background:var(--r-bg);flex-wrap:wrap;align-items:center;gap:.5rem;padding:.375rem 1rem;display:flex}.shortcut-badge[data-v-e44dc775]{font-size:.75rem}.service-terminal__command-input[data-v-e44dc775]{border-top:1px solid var(--r-border);background:var(--r-bg);align-items:center;gap:.5rem;padding:.5rem 1rem;display:flex}.service-terminal__prompt[data-v-e44dc775]{color:var(--r-primary);font-family:Courier New,monospace;font-size:1rem;font-weight:600;line-height:1}.service-terminal__autocomplete[data-v-e44dc775]{flex:1}.service-terminal__autocomplete[data-v-e44dc775] .r-autocomplete__input{width:100%}.service-terminal__input[data-v-e44dc775]{color:var(--r-text);font-family:Courier New,monospace;font-size:.875rem;box-shadow:none!important;background:0 0!important;border:none!important;outline:none!important;padding:.5rem 0!important}.service-terminal__input[data-v-e44dc775]::placeholder{color:var(--r-text-muted);font-style:italic}.service-terminal__input[data-v-e44dc775]:disabled{opacity:.5;cursor:not-allowed}.service-terminal__bottom[data-v-e44dc775]{border-top:1px solid var(--r-border);background:var(--r-bg);flex-wrap:wrap;align-items:center;gap:.5rem;padding:.5rem 1rem;display:flex}.service-terminal__pill[data-v-e44dc775]{text-overflow:ellipsis;max-width:200px;font-size:.75rem;overflow:hidden}.service-terminal__pid-selector[data-v-e44dc775]{min-width:200px}.pid-option[data-v-e44dc775]{align-items:center;gap:.5rem;width:100%;display:flex}.pid-option span[data-v-e44dc775]{flex:1}.pid-badge[data-v-e44dc775]{margin-left:auto;font-size:.625rem}.pid-status-icon[data-v-e44dc775]{margin-right:.5rem;font-size:.5rem}.pid-status-icon--active[data-v-e44dc775]{color:#22c55e}.pid-status-icon--stopped[data-v-e44dc775]{color:#94a3b8}.service-metrics[data-v-4ff9fccd]{flex-direction:column;height:100%;padding:1rem;display:flex;overflow-y:auto}.service-metrics__no-data[data-v-4ff9fccd],.service-metrics__no-process[data-v-4ff9fccd]{color:var(--r-text-muted);justify-content:center;align-items:center;gap:.5rem;padding:3rem;font-size:.9375rem;display:flex}.service-metrics__skeleton[data-v-4ff9fccd]{flex-wrap:wrap;gap:1rem;display:flex}.metric-skeleton[data-v-4ff9fccd]{border:1px solid var(--r-border);background:var(--r-bg);flex:1;min-width:160px;max-width:260px;padding:1rem}.config-general[data-v-2ad058bc]{flex-direction:column;gap:.75rem;display:flex}.config-card[data-v-2ad058bc]{border:1px solid var(--r-border);background:var(--r-bg);padding:.875rem 1rem}.config-card--inline[data-v-2ad058bc]{justify-content:space-between;align-items:center;display:flex}.config-card__header[data-v-2ad058bc]{color:var(--r-text-muted);align-items:center;gap:.5rem;margin-bottom:.5rem;font-size:.8125rem;font-weight:600;display:flex}.config-card--inline .config-card__header[data-v-2ad058bc]{margin-bottom:0}.config-card__input[data-v-2ad058bc]{width:100%}.config-card__hint[data-v-2ad058bc]{color:var(--r-text-muted);margin-top:.3rem;font-size:.78rem;display:block}.config-meta[data-v-2ad058bc]{flex-direction:column;gap:.5rem;margin-top:.75rem;display:flex}.config-meta__row[data-v-2ad058bc]{align-items:center;gap:.5rem;display:flex}.config-meta__input[data-v-2ad058bc]{flex:1}.config-meta__input--wide[data-v-2ad058bc]{flex:2}.config-meta__add[data-v-2ad058bc]{align-self:flex-start}.docker-config[data-v-1a62039a]{flex-direction:column;gap:.75rem;display:flex}.docker-config__section[data-v-1a62039a]{flex-direction:column;gap:.375rem;display:flex}.docker-config__section-title[data-v-1a62039a]{color:var(--r-text);font-size:.875rem;font-weight:600}.docker-config__label[data-v-1a62039a]{color:var(--r-text-muted);font-size:.75rem;font-weight:600}.docker-config__input[data-v-1a62039a]{width:100%;max-width:480px}.docker-config__select[data-v-1a62039a]{width:100%;max-width:320px}.docker-config__mode-toggle.r-radio-group[data-v-1a62039a]{gap:1.5rem;display:flex}.docker-config__mode-toggle--indented.r-radio-group[data-v-1a62039a]{flex-direction:column;gap:.375rem;margin-top:.5rem;padding-left:1.5rem}.docker-config__mode-option[data-v-1a62039a]{cursor:pointer;align-items:center;gap:.375rem;font-size:.875rem;display:flex}.docker-config__kv-list[data-v-1a62039a]{flex-direction:column;gap:.5rem;display:flex}.docker-config__kv-row[data-v-1a62039a]{align-items:center;gap:.5rem;display:flex}.docker-config__kv-input[data-v-1a62039a]{flex:1}.docker-config__list[data-v-1a62039a]{flex-direction:column;gap:.5rem;display:flex}.docker-config__list-row[data-v-1a62039a]{align-items:center;gap:.5rem;display:flex}.docker-config__checkbox-row[data-v-1a62039a]{align-items:center;gap:.5rem;margin-bottom:.25rem;display:flex}.docker-config__checkbox-label[data-v-1a62039a]{cursor:pointer;font-size:.875rem}.docker-config__hint[data-v-1a62039a]{color:var(--r-text-muted);margin-top:.125rem;font-size:.75rem}.docker-config__shell-row[data-v-1a62039a]{flex-wrap:wrap;align-items:center;gap:.75rem;margin-top:.25rem;padding-left:1.5rem;display:flex}.docker-config__shell-row .docker-config__label[data-v-1a62039a]{white-space:nowrap}.docker-config__shell-row .docker-config__hint[data-v-1a62039a]{margin-top:0}.docker-config__select--small[data-v-1a62039a]{max-width:180px}.docker-config__hint code[data-v-1a62039a]{font-family:monospace;font-size:.7rem}.docker-config__hint-inline[data-v-1a62039a]{color:var(--r-text-muted);font-size:.75rem;font-weight:400}.docker-config__bootstrap-card[data-v-1a62039a]{border:1px solid var(--r-border);background:var(--r-bg);padding:.75rem 1rem}.docker-config__bootstrap-row[data-v-1a62039a]{flex-wrap:wrap;align-items:flex-end;gap:.75rem;display:flex}.docker-config__bootstrap-field[data-v-1a62039a]{flex-direction:column;flex:1;gap:.25rem;min-width:120px;display:flex}.docker-config__bootstrap-field--wide[data-v-1a62039a]{flex:2;min-width:200px}.docker-config__bootstrap-actions[data-v-1a62039a]{align-items:center;gap:.125rem;padding-bottom:.125rem;display:flex}.config-commands[data-v-4820790b]{flex-direction:column;gap:.75rem;display:flex}.config-commands__tab-content[data-v-4820790b]{flex-direction:column;gap:.75rem;padding-top:.75rem;display:flex}.config-commands__empty[data-v-4820790b]{text-align:center;color:var(--r-text-muted);padding:1.5rem;font-size:.875rem}.config-card[data-v-4820790b]{border:1px solid var(--r-border);background:var(--r-bg);padding:.875rem 1rem}.config-card__input[data-v-4820790b]{width:100%}.config-commands__row[data-v-4820790b]{align-items:flex-end;gap:.75rem;display:flex}.config-commands__field[data-v-4820790b]{flex-direction:column;flex:1;gap:.25rem;display:flex}.config-commands__field--wide[data-v-4820790b]{flex:2}.config-commands__label[data-v-4820790b]{color:var(--r-text-muted);font-size:.75rem;font-weight:600}.config-commands__actions-cell[data-v-4820790b]{align-items:center;padding-bottom:.125rem;display:flex}.config-commands__footer[data-v-4820790b]{justify-content:space-between;align-items:center;padding-top:.5rem;display:flex}.tab-icon[data-v-4820790b]{margin-right:.4rem;font-size:.85rem}.config-commands__execution[data-v-4820790b]{flex-wrap:wrap;align-items:stretch;gap:.75rem;padding-bottom:.25rem;display:flex}.config-card--execution[data-v-4820790b]{flex-direction:column;flex:1;gap:.5rem;min-width:180px;display:flex}.config-card__header[data-v-4820790b]{align-items:center;gap:.5rem;font-size:.875rem;font-weight:600;display:flex}.config-card__hint[data-v-4820790b]{color:var(--r-text-muted);font-size:.78rem}.runner-option[data-v-4820790b]{align-items:center;gap:.5rem;display:flex}.config-env[data-v-28ad0a54]{flex-direction:column;gap:1rem;display:flex}.active-env-display[data-v-28ad0a54]{background:var(--r-bg-hover);border-left:3px solid var(--r-primary);border-radius:4px;align-items:center;gap:.5rem;padding:.75rem 1rem;font-size:.875rem;display:flex}.active-env-label[data-v-28ad0a54]{color:var(--r-text-muted);font-weight:600}.inheritance-toggle[data-v-28ad0a54]{background:var(--r-bg-hover);border:1px solid var(--r-border);border-radius:4px;align-items:center;gap:.75rem;padding:.6rem 1rem;font-size:.875rem;display:flex}.inheritance-label[data-v-28ad0a54]{color:var(--r-text)}.config-env__header[data-v-28ad0a54]{justify-content:space-between;align-items:center;gap:1rem;margin-bottom:.5rem;display:flex}.config-env__title[data-v-28ad0a54]{color:var(--r-text);flex:1;margin:0;font-size:1rem;font-weight:600}.config-env__actions[data-v-28ad0a54]{align-items:center;gap:.5rem;display:flex}.variables-view[data-v-28ad0a54]{flex-direction:column;gap:1rem;display:flex}.inherited-accordion[data-v-28ad0a54]{margin-top:.25rem}.inherited-header[data-v-28ad0a54]{color:var(--r-text-muted);align-items:center;gap:.5rem;font-size:.875rem;font-weight:600;display:inline-flex}.inherited-header .ti[data-v-28ad0a54]{font-size:.8rem}.empty-state[data-v-28ad0a54]{text-align:center;color:var(--r-text-muted);border:1px dashed var(--r-border);border-radius:4px;padding:2rem}.editor-container[data-v-28ad0a54]{flex-direction:column;gap:1rem;display:flex}.editor-env-banner[data-v-28ad0a54]{background:var(--r-bg-hover);color:var(--r-text);border-radius:6px;align-items:center;gap:.4rem;padding:.65rem .85rem;font-size:.85rem;display:flex}.editor-env-text[data-v-28ad0a54]{margin-right:.15rem}.editor-section[data-v-28ad0a54]{flex-direction:column;gap:.75rem;display:flex}.preview-container[data-v-28ad0a54]{flex-direction:column;gap:1rem;display:flex}.preview-info[data-v-28ad0a54]{color:var(--r-text-muted);margin:0;font-size:.875rem;font-style:italic}.preview-key[data-v-28ad0a54]{color:var(--r-text);font-family:JetBrains Mono,Fira Code,monospace;font-size:.85rem;font-weight:600}.preview-value[data-v-28ad0a54]{color:var(--r-text);word-break:break-all;font-family:JetBrains Mono,Fira Code,monospace;font-size:.85rem}.loading-container[data-v-28ad0a54]{justify-content:center;padding:2rem;display:flex}[data-v-28ad0a54] .preview-container .r-datatable{margin-top:1rem}.passthrough-info[data-v-28ad0a54]{color:var(--r-text-muted);margin:0 0 .5rem;font-size:.8rem;font-style:italic}.passthrough-undefined[data-v-28ad0a54]{color:var(--r-orange-500);font-size:.85rem;font-style:italic}.inherited-row-key[data-v-28ad0a54]{flex-direction:column;gap:.2rem;display:flex}.source-badge[data-v-28ad0a54]{opacity:.7;font-size:.7rem}.secret-mask[data-v-28ad0a54]{color:var(--r-text-muted,#6b7280);font-size:.85rem;font-style:italic}.value-row[data-v-28ad0a54]{align-items:center;display:inline-flex}.value-actions[data-v-28ad0a54]{flex-shrink:0;align-items:center;gap:.2rem;margin-right:.4rem;display:inline-flex}.action-icon[data-v-28ad0a54]{color:var(--r-text-muted,#9ca3af);cursor:pointer;padding:.15rem;font-size:.75rem;transition:color .15s}.action-icon[data-v-28ad0a54]:hover{color:var(--r-text)}.action-icon.ti-check[data-v-28ad0a54]{color:var(--r-green-500,#22c55e)}.config-health[data-v-956bcc34]{flex-direction:column;gap:.75rem;display:flex}.config-card[data-v-956bcc34]{border:1px solid var(--r-border);background:var(--r-bg);padding:.875rem 1rem}.config-card--inline[data-v-956bcc34]{justify-content:space-between;align-items:center;display:flex}.config-card__header[data-v-956bcc34]{color:var(--r-text-muted);align-items:center;gap:.5rem;margin-bottom:.5rem;font-size:.8125rem;font-weight:600;display:flex}.config-card--inline .config-card__header[data-v-956bcc34]{margin-bottom:0}.config-card__input[data-v-956bcc34]{width:100%}.config-card__hint[data-v-956bcc34]{color:var(--r-text-muted);margin-top:.25rem;font-size:.75rem;display:block}.config-shortcuts[data-v-cbad556b]{flex-direction:column;gap:.75rem;display:flex}.config-shortcuts__empty[data-v-cbad556b]{text-align:center;color:var(--r-text-muted);padding:1.5rem;font-size:.875rem}.config-card[data-v-cbad556b]{border:1px solid var(--r-border);background:var(--r-bg);padding:.875rem 1rem}.config-card__input[data-v-cbad556b]{width:100%}.config-shortcuts__row[data-v-cbad556b]{align-items:flex-end;gap:.75rem;display:flex}.config-shortcuts__field[data-v-cbad556b]{flex-direction:column;flex:1;gap:.25rem;display:flex}.config-shortcuts__field--wide[data-v-cbad556b]{flex:2}.config-shortcuts__label[data-v-cbad556b]{color:var(--r-text-muted);font-size:.75rem;font-weight:600}.config-shortcuts__actions-cell[data-v-cbad556b]{align-items:center;padding-bottom:.125rem;display:flex}.config-shortcuts__footer[data-v-cbad556b]{justify-content:space-between;align-items:center;padding-top:.5rem;display:flex}.config-log-parsers[data-v-b8de20cf]{flex-direction:column;gap:.75rem;display:flex}.config-card[data-v-b8de20cf]{border:1px solid var(--r-border);background:var(--r-bg);padding:.875rem 1rem}.config-card__header[data-v-b8de20cf]{color:var(--r-text-muted);align-items:center;gap:.5rem;margin-bottom:.5rem;font-size:.8125rem;font-weight:600;display:flex}.config-card__hint[data-v-b8de20cf]{color:var(--r-text-muted);margin-top:.3rem;font-size:.78rem;display:block}.config-card__header-hint[data-v-b8de20cf]{color:var(--r-text-muted);margin-left:auto;font-size:.75rem;font-weight:400}.config-log-parsers__drag-list[data-v-b8de20cf]{flex-direction:column;gap:.375rem;margin-top:.5rem;display:flex}.config-log-parsers__drag-row[data-v-b8de20cf]{border:1px solid var(--r-border);background:var(--r-bg-hover);-webkit-user-select:none;user-select:none;align-items:center;gap:.625rem;padding:.4rem .625rem;display:flex}.drag-handle[data-v-b8de20cf]{cursor:grab;color:var(--r-text-muted);flex-shrink:0}.drag-handle[data-v-b8de20cf]:active{cursor:grabbing}.config-log-parsers__order[data-v-b8de20cf]{text-align:center;width:1.25rem;color:var(--r-text-muted);flex-shrink:0;font-size:.75rem;font-weight:700}.config-log-parsers__name[data-v-b8de20cf]{flex:1;font-size:.875rem;font-weight:500}.config-log-parsers__delete[data-v-b8de20cf]{flex-shrink:0;margin-left:auto}.config-log-parsers__empty[data-v-b8de20cf]{color:var(--r-text-muted);padding:1rem 0 .5rem;font-size:.875rem}.config-log-parsers__add-row[data-v-b8de20cf]{border-top:1px solid var(--r-border);align-items:center;gap:.5rem;margin-top:.75rem;padding-top:.75rem;display:flex}.config-log-parsers__add-select[data-v-b8de20cf]{flex:1}.config-log-parsers__footer[data-v-b8de20cf]{justify-content:space-between;align-items:center;padding-top:.5rem;display:flex}.config-log-sources[data-v-122cf0a9]{flex-direction:column;gap:.75rem;display:flex}.config-card[data-v-122cf0a9]{border:1px solid var(--r-border);background:var(--r-bg);padding:.875rem 1rem}.config-card__header[data-v-122cf0a9]{color:var(--r-text-muted);align-items:center;gap:.5rem;margin-bottom:.5rem;font-size:.8125rem;font-weight:600;display:flex}.config-card__hint[data-v-122cf0a9]{color:var(--r-text-muted);margin-top:.3rem;font-size:.78rem;display:block}.config-card--list[data-v-122cf0a9]{flex-direction:column;gap:.375rem;padding:.5rem;display:flex}.source-row[data-v-122cf0a9]{border:1px solid var(--r-border);background:var(--r-bg-hover);align-items:center;gap:.75rem;padding:.5rem .625rem;display:flex}.source-row__icon[data-v-122cf0a9]{color:var(--r-text-muted);flex-shrink:0}.source-row__info[data-v-122cf0a9]{flex-direction:column;flex:1;gap:.125rem;min-width:0;display:flex}.source-row__type[data-v-122cf0a9]{text-transform:uppercase;color:var(--r-primary);letter-spacing:.04em;font-size:.7rem;font-weight:700}.source-row__label[data-v-122cf0a9]{color:var(--r-text);white-space:nowrap;text-overflow:ellipsis;font-size:.8125rem;overflow:hidden}.source-row__actions[data-v-122cf0a9]{flex-shrink:0;gap:.25rem;display:flex}.config-log-sources__empty[data-v-122cf0a9]{text-align:center;color:var(--r-text-muted);border:1px dashed var(--r-border);padding:2rem;font-size:.875rem}.config-log-sources__empty-icon[data-v-122cf0a9]{opacity:.4;margin-bottom:.5rem;font-size:2rem;display:block}.config-log-sources__empty p[data-v-122cf0a9]{margin:0 0 .25rem}.config-log-sources__footer[data-v-122cf0a9]{justify-content:flex-end;padding-top:.25rem;display:flex}.dialog-form[data-v-122cf0a9]{flex-direction:column;gap:.875rem;padding-top:.25rem;display:flex}.dialog-form__row[data-v-122cf0a9]{gap:.75rem;display:flex}.dialog-form__row .dialog-form__field[data-v-122cf0a9]{flex:1}.dialog-form__field--port[data-v-122cf0a9]{flex:0 0 100px!important}.dialog-form__field--grow[data-v-122cf0a9]{flex:2!important}.dialog-form__field[data-v-122cf0a9]{flex-direction:column;gap:.3rem;display:flex}.dialog-form__field--row[data-v-122cf0a9]{flex-direction:row;justify-content:space-between;align-items:center}.dialog-form__label[data-v-122cf0a9]{color:var(--r-text-muted);font-size:.8rem;font-weight:600}.dialog-form__input[data-v-122cf0a9]{width:100%}.dialog-form__required[data-v-122cf0a9]{color:var(--r-red-500,#ef4444)}.dialog-form__hint[data-v-122cf0a9]{color:var(--r-text-muted);font-size:.75rem;font-weight:400}.dialog-form__hint-block[data-v-122cf0a9]{color:var(--r-text-muted);background:var(--r-bg-hover);padding:.5rem;font-size:.8rem;display:block}.config-traefik[data-v-37776b09]{flex-direction:column;gap:.75rem;padding:1rem 0;display:flex}.traefik-entry[data-v-37776b09]{align-items:center;gap:.5rem;min-width:0;display:flex}.traefik-entry__fields[data-v-37776b09]{flex:1;align-items:center;gap:.5rem;min-width:0;display:flex}.traefik-entry__url[data-v-37776b09]{flex:1;min-width:0}.traefik-entry__port[data-v-37776b09]{flex:0 0 100px}.config-view[data-v-204a6ce7]{flex-direction:column;height:100%;padding:1rem;display:flex;overflow-y:auto}.config-view__header[data-v-204a6ce7]{justify-content:space-between;align-items:center;margin-bottom:1rem;display:flex}.config-view__title[data-v-204a6ce7]{color:var(--r-text);margin:0;font-size:1.125rem;font-weight:600}.config-view__tabs[data-v-204a6ce7]{flex:1}.tab-icon[data-v-204a6ce7]{margin-right:.4rem;font-size:.85rem}.service-detail[data-v-ac012903]{height:100%}.service-detail__not-found[data-v-ac012903]{height:100%;color:var(--r-text-muted);justify-content:center;align-items:center;display:flex}