@runeya/runeya 2.0.145 → 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 (194) hide show
  1. package/agent/index.js +36 -25
  2. package/agent/index.js.map +1 -1
  3. package/agent-manager-46C4NIQ2.js +13 -0
  4. package/chat-CMNDMXIP.js +28 -0
  5. package/{chunk-ONVAH65J.js → chunk-2NE52CL5.js} +422 -2172
  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-NCO4OOYT.js → chunk-4LJQIQMN.js} +2 -2
  10. package/{chunk-QF56Z6LI.js → chunk-5XG3X2TM.js} +29 -1481
  11. package/chunk-5XG3X2TM.js.map +1 -0
  12. package/chunk-6IBPK6UE.js +1063 -0
  13. package/chunk-6IBPK6UE.js.map +1 -0
  14. package/chunk-7QXP4FXD.js +969 -0
  15. package/chunk-7QXP4FXD.js.map +1 -0
  16. package/chunk-DA2DZBTL.js +43 -0
  17. package/chunk-DA2DZBTL.js.map +1 -0
  18. package/chunk-DFPZ4MTI.js +1041 -0
  19. package/chunk-DFPZ4MTI.js.map +1 -0
  20. package/{chunk-Q4RPY3VW.js → chunk-JNK6H5KH.js} +185 -1014
  21. package/chunk-JNK6H5KH.js.map +1 -0
  22. package/{chunk-FE53XX4M.js → chunk-NPMSBYXC.js} +3 -3
  23. package/{chunk-KS7A5CTW.js → chunk-VPSQJOSN.js} +12 -2
  24. package/{chunk-KS7A5CTW.js.map → chunk-VPSQJOSN.js.map} +1 -1
  25. package/chunk-WDHLEO5S.js +809 -0
  26. package/chunk-WDHLEO5S.js.map +1 -0
  27. package/{companion-HBYSY2D5.js → companion-XKMNRIJB.js} +10 -5
  28. package/environment-resolver-ZDTF3MHI.js +18 -0
  29. package/external-NMKQPROK.js +387 -0
  30. package/external-NMKQPROK.js.map +1 -0
  31. package/index.js +15 -6
  32. package/index.js.map +1 -1
  33. package/{install-gate-JAEK4BDZ.js → install-gate-OJJEUU4E.js} +2 -2
  34. package/mcp-ready-TAPBAOZY.js +9 -0
  35. package/mcp-server/external.d.ts +44 -0
  36. package/mcp-server/external.js +2679 -0
  37. package/mcp-server/external.js.map +1 -0
  38. package/mcp-server/index.js +159 -39
  39. package/mcp-server/index.js.map +1 -1
  40. package/mcp-server/launch.d.ts +25 -1
  41. package/mcp-server/launch.js +22 -1
  42. package/mcp-server/launch.js.map +1 -1
  43. package/package.json +1 -1
  44. package/project-store-FLXTAD3J.js +23 -0
  45. package/project-store-FLXTAD3J.js.map +1 -0
  46. package/settings-manager-XPLBO35P.js +10 -0
  47. package/settings-manager-XPLBO35P.js.map +1 -0
  48. package/{src-IODFUZ7A.js → src-KWO3CKZU.js} +1083 -551
  49. package/src-KWO3CKZU.js.map +1 -0
  50. package/{vault-resolver-PN3TYCLJ.js → vault-resolver-E7KPKA5C.js} +2 -2
  51. package/vault-resolver-E7KPKA5C.js.map +1 -0
  52. package/web/assets/{AgentScalarChatInterface.vue-npQgDxeP.js → AgentScalarChatInterface.vue-DKBinB_l.js} +2 -2
  53. package/web/assets/AgentTerminalPage-CixU7x6O.js +1 -0
  54. package/web/assets/AiChatModals-BvGUd-QD.css +1 -0
  55. package/web/assets/AiChatModals-C-hXImkO.js +4 -0
  56. package/web/assets/AppLayout-At9wk0sx.js +1 -0
  57. package/web/assets/{AppLayout-tsw5Ow0w.css → AppLayout-BlhwflMq.css} +1 -1
  58. package/web/assets/AuditPage-BkqbHxjY.js +1 -0
  59. package/web/assets/CloudAccountPage-D5C2SCS9.js +1 -0
  60. package/web/assets/CloudMessagingPage-Bi57GGHO.js +2 -0
  61. package/web/assets/DashboardPage-dEQop9ql.js +1 -0
  62. package/web/assets/DirectoryPickerDialog-DIMSeDhw.js +1 -0
  63. package/web/assets/{EditorIcon-CypGLV6w.js → EditorIcon-W3Szca4J.js} +1 -1
  64. package/web/assets/EnvironmentForm-C5emavNh.js +1 -0
  65. package/web/assets/EnvironmentFormPage-BIoy8fsW.js +1 -0
  66. package/web/assets/EnvironmentListPage-BDYeh7XF.js +1 -0
  67. package/web/assets/{FlagChip-R_T5qYpL.js → FlagChip-DPtIBCjQ.js} +1 -1
  68. package/web/assets/KanbanBoardPage-BlCcjBwV.js +4 -0
  69. package/web/assets/KanbanListPage-DbXONxfC.js +1 -0
  70. package/web/assets/LaunchProjectPage-Cg92hHwQ.js +1 -0
  71. package/web/assets/LaunchServicesPage-CO8gOB9D.js +1 -0
  72. package/web/assets/LaunchServicesPage-h5o3zLcy.css +1 -0
  73. package/web/assets/{LaunchShell-CGNYr-do.js → LaunchShell-CDb21ihZ.js} +1 -1
  74. package/web/assets/LogViewer-DsusKk2b.js +3 -0
  75. package/web/assets/OrgKeyPrompt-CX9K7r9I.js +1 -0
  76. package/web/assets/ProcessControls-B7hWVqiR.css +1 -0
  77. package/web/assets/ProcessControls-TEZutuxq.js +1 -0
  78. package/web/assets/ProcessDetailPage-Cj23FECq.js +1 -0
  79. package/web/assets/ProcessMetrics-1P6iE2Il.js +1 -0
  80. package/web/assets/ProjectCreateDialog-D3aMWKfw.js +1 -0
  81. package/web/assets/{ProjectLocationGate-bUd_tFpI.js → ProjectLocationGate-DU0Jj8Nw.js} +1 -1
  82. package/web/assets/ProjectPublishDialog-D7sNKei3.js +1 -0
  83. package/web/assets/{RandomJobTestPage-BFNC827R.js → RandomJobTestPage-DQUMRHyf.js} +1 -1
  84. package/web/assets/{ScenarioEditorPage-vMoRt0Qn.css → ScenarioEditorPage-BSjSX4bw.css} +1 -1
  85. package/web/assets/ScenarioEditorPage-DvCdcY9m.js +14 -0
  86. package/web/assets/SendToChatDialog-BdWKjYmv.js +1 -0
  87. package/web/assets/ServiceControlsBar-B_J5m-Kc.js +1 -0
  88. package/web/assets/ServiceDetailPage-DhJcjFfY.js +2 -0
  89. package/web/assets/{ServiceDetailPage-COdaCZ6r.css → ServiceDetailPage-DnSf5cm9.css} +1 -1
  90. package/web/assets/ServiceFormPage-fp8NCHSv.js +1 -0
  91. package/web/assets/SettingsPage-NH2fQap4.css +1 -0
  92. package/web/assets/SettingsPage-s28BodWe.js +2086 -0
  93. package/web/assets/UnlockPage-BXXIPHW_.js +1 -0
  94. package/web/assets/VaultMigrationPage-BfNuKtkJ.js +1 -0
  95. package/web/assets/{VersionBadge-DBquJl76.js → VersionBadge-CW7czacg.js} +1 -1
  96. package/web/assets/{WikiPage-GtwpJPqf.js → WikiPage-BiwpCM3E.js} +1 -1
  97. package/web/assets/WikiView-CMch_06Z.js +1 -0
  98. package/web/assets/{add-scalar-classes-DhSSqZ5l.js → add-scalar-classes-Ckanjq1h.js} +14 -14
  99. package/web/assets/{agent.store-Co44dMZf.js → agent.store-piokQ9Dt.js} +1 -1
  100. package/web/assets/{auth-Bk1GP5sB.js → auth-BT_jf-5e.js} +2 -2
  101. package/web/assets/cloud-chat.store-CDKh4tIy.js +1 -0
  102. package/web/assets/{cloud-client-0zD_NI6q.js → cloud-client-CzPdZLDq.js} +2 -2
  103. package/web/assets/{cloud-session-Cjw54Y--.js → cloud-session-BYfn6YM4.js} +2 -2
  104. package/web/assets/floating-ui.dom-DF3oyfHd.js +1 -0
  105. package/web/assets/i18n-D0FT7rCj.js +1 -0
  106. package/web/assets/index-3LTzgeU-.css +1 -0
  107. package/web/assets/index-Ci2CNnit.js +309 -0
  108. package/web/assets/modal-iRaP1izE.js +5 -0
  109. package/web/assets/notification.store-CvvuTBVz.js +1 -0
  110. package/web/assets/{project-launch.store-B5nhdGdh.js → project-launch.store-CTmbl8UY.js} +1 -1
  111. package/web/assets/{project.store-Bm2JWNbd.js → project.store-CNC6_4r4.js} +1 -1
  112. package/web/assets/runtime-dom.esm-bundler-CyEVRK6B.js +1 -0
  113. package/web/assets/scenario.store-BIFQPXgl.js +7 -0
  114. package/web/assets/{service.store-XS50iGKo.js → service.store-B40U4QzI.js} +1 -1
  115. package/web/assets/settings-scope-CyWMCjRY.js +1 -0
  116. package/web/assets/settings.store-Dw6bAoWE.js +1 -0
  117. package/web/assets/{src-Cgix2VOi.js → src-CrNi4Pjg.js} +3 -3
  118. package/web/assets/src-DIBHat7I.js +3 -0
  119. package/web/assets/src-DtCW_XCh.js +1 -0
  120. package/web/assets/{src-BDZKZr9n.css → src-g1DRo8xZ.css} +1 -1
  121. package/web/assets/{trpc-CfuFkKgp.js → trpc-BAZGRZBD.js} +3 -3
  122. package/web/assets/{useCloudOrg-J8DAnocE.js → useCloudOrg-EnXFBwt1.js} +1 -1
  123. package/web/assets/useEnvVarAutocomplete-BxJh2Lw0.js +1 -0
  124. package/web/assets/useProjectCatalog-BrvUGv9A.js +1 -0
  125. package/web/assets/{useProjectCloudOrg-BnlKts7x.js → useProjectCloudOrg-Czxlg00k.js} +1 -1
  126. package/web/assets/{useServiceUrlHost-hKbKtPMu.js → useServiceUrlHost-Szz9y3rh.js} +1 -1
  127. package/web/assets/vue-i18n-o7yraQpR.js +3 -0
  128. package/web/index.html +21 -21
  129. package/agent-manager-THV3LJOF.js +0 -11
  130. package/chat-XYCHMTFE.js +0 -23
  131. package/chunk-ONVAH65J.js.map +0 -1
  132. package/chunk-Q4RPY3VW.js.map +0 -1
  133. package/chunk-QF56Z6LI.js.map +0 -1
  134. package/settings-manager-QVQRJO6V.js +0 -10
  135. package/src-IODFUZ7A.js.map +0 -1
  136. package/web/assets/AgentTerminalPage-BTH3yCS2.js +0 -1
  137. package/web/assets/AiChatModals-EfRuvId7.css +0 -1
  138. package/web/assets/AiChatModals-It9jnB26.js +0 -4
  139. package/web/assets/AppLayout-BTg2CADo.js +0 -1
  140. package/web/assets/AuditPage-2PKKGLZs.js +0 -1
  141. package/web/assets/CloudAccountPage-CHL61gLe.js +0 -1
  142. package/web/assets/CloudMessagingPage-cgKnABPH.js +0 -2
  143. package/web/assets/DashboardPage-CRntTMKY.js +0 -1
  144. package/web/assets/DirectoryPickerDialog-DCyhT3-W.js +0 -1
  145. package/web/assets/EnvironmentForm-C96PFWRE.js +0 -1
  146. package/web/assets/EnvironmentFormPage-ChorAd63.js +0 -1
  147. package/web/assets/EnvironmentListPage-Dw9ziaI8.js +0 -1
  148. package/web/assets/KanbanBoardPage-BZHbEj-q.js +0 -4
  149. package/web/assets/KanbanListPage-B0jlfKqs.js +0 -1
  150. package/web/assets/LaunchProjectPage-BVs1JwbV.js +0 -1
  151. package/web/assets/LaunchServicesPage-DoLDPqQq.css +0 -1
  152. package/web/assets/LaunchServicesPage-PBYJly9N.js +0 -1
  153. package/web/assets/LogViewer-BDObx29F.js +0 -3
  154. package/web/assets/OrgKeyPrompt-BbcwiwGw.js +0 -1
  155. package/web/assets/ProcessControls-BlpnVylq.css +0 -1
  156. package/web/assets/ProcessControls-DY0HTKde.js +0 -1
  157. package/web/assets/ProcessDetailPage-BZ9kIQqn.js +0 -1
  158. package/web/assets/ProcessMetrics-Crlfkelj.js +0 -1
  159. package/web/assets/ProjectCreateDialog-C1wVDPcK.js +0 -1
  160. package/web/assets/ProjectPublishDialog-APUS1WEN.js +0 -1
  161. package/web/assets/ScenarioEditorPage-DFVsMVu5.js +0 -14
  162. package/web/assets/SendToChatDialog-QHIkxNio.js +0 -1
  163. package/web/assets/ServiceControlsBar-_UQXb6g0.js +0 -1
  164. package/web/assets/ServiceDetailPage-DGIXgHwR.js +0 -2
  165. package/web/assets/ServiceFormPage-RliAfS3_.js +0 -1
  166. package/web/assets/SettingsPage-BSSHxxjM.js +0 -2086
  167. package/web/assets/SettingsPage-W8YszhUL.css +0 -1
  168. package/web/assets/UnlockPage-17EgfpJs.js +0 -1
  169. package/web/assets/VaultMigrationPage-DeMxpXXJ.js +0 -1
  170. package/web/assets/WikiView-BqaqxMxW.js +0 -1
  171. package/web/assets/cloud-chat.store-CadB14dZ.js +0 -1
  172. package/web/assets/editor.store-DmM6ZlTm.js +0 -1
  173. package/web/assets/floating-ui.dom-DWhsZyqT.js +0 -1
  174. package/web/assets/i18n-8FjeJaKW.js +0 -1
  175. package/web/assets/index-B9DJf2V0.js +0 -309
  176. package/web/assets/index-teBqdnuv.css +0 -1
  177. package/web/assets/modal-UK8xRSnh.js +0 -5
  178. package/web/assets/scenario.store-88w6P6s2.js +0 -7
  179. package/web/assets/settings-scope-CKPq86HZ.js +0 -1
  180. package/web/assets/settings.store-BCJ0LJQA.js +0 -1
  181. package/web/assets/src--GO-VSJ0.js +0 -5
  182. package/web/assets/src-DBipSD56.js +0 -1
  183. package/web/assets/useEnvVarAutocomplete-C6zOXYqi.js +0 -1
  184. package/web/assets/useProjectCatalog-BB5IR6o8.js +0 -1
  185. package/web/assets/vue-draggable-plus-BHsveB8w.css +0 -1
  186. package/web/assets/vue-draggable-plus-D5ni4jMk.js +0 -1
  187. /package/{agent-manager-THV3LJOF.js.map → agent-manager-46C4NIQ2.js.map} +0 -0
  188. /package/{chat-XYCHMTFE.js.map → chat-CMNDMXIP.js.map} +0 -0
  189. /package/{chunk-NCO4OOYT.js.map → chunk-4LJQIQMN.js.map} +0 -0
  190. /package/{chunk-FE53XX4M.js.map → chunk-NPMSBYXC.js.map} +0 -0
  191. /package/{companion-HBYSY2D5.js.map → companion-XKMNRIJB.js.map} +0 -0
  192. /package/{settings-manager-QVQRJO6V.js.map → environment-resolver-ZDTF3MHI.js.map} +0 -0
  193. /package/{install-gate-JAEK4BDZ.js.map → install-gate-OJJEUU4E.js.map} +0 -0
  194. /package/{vault-resolver-PN3TYCLJ.js.map → mcp-ready-TAPBAOZY.js.map} +0 -0
@@ -0,0 +1 @@
1
+ import{B as e,C as t,_ as n}from"./reactivity.esm-bundler-BQ9SB2vv.js";import{$ as r,Ct as i,D as a,E as o,Ft as s,Ht as c,Yt as l,_ as u,b as d,bt as f,ct as p,en as m,ft as h,g,k as _,mt as v,nn as y,o as b,qt as x,rn as S,tt as C,v as w,wt as T,xt as E,y as D}from"./runtime-core.esm-bundler-DujKY9QV.js";import{C as O,n as k,t as A,w as j}from"./runtime-dom.esm-bundler-CyEVRK6B.js";import{n as M}from"./vue-i18n-o7yraQpR.js";import{n as N}from"./project-launch.store-CTmbl8UY.js";import{g as P}from"./useApi-s_02lHjl-DZYO2tHU.js";import{C as F,G as I,J as L,K as R,P as ee,T as z,U as te,V as B,Y as V,dt as H,ft as U,j as W}from"./src-DIBHat7I.js";import{a as G}from"./app-mode-BVpTuh0i.js";import{r as K}from"./trpc-BAZGRZBD.js";import{n as q}from"./project.store-CNC6_4r4.js";import{n as ne}from"./error-DpF7X5iu.js";import{r as re}from"./cloud-session-BYfn6YM4.js";import{t as J}from"./service.store-B40U4QzI.js";import{t as Y}from"./agent.store-piokQ9Dt.js";import{r as ie,t as ae}from"./process-BWkHpZOM.js";import{c as X}from"./index-Ci2CNnit.js";import{t as oe}from"./ProcessControls-TEZutuxq.js";import{t as se}from"./DirectoryPickerDialog-DIMSeDhw.js";import{t as ce}from"./ProjectCreateDialog-D3aMWKfw.js";import{t as le}from"./ProjectPublishDialog-D7sNKei3.js";var ue={class:`card-title-row`},de=[`title`],fe={key:0,class:`card-description`},pe={class:`card-meta`},me={class:`meta-item`},he={key:0,class:`meta-item meta-item--cloud`},ge=U(_({__name:`ProjectCard`,props:{project:{},active:{type:Boolean}},emits:[`click`],setup(t,{emit:n}){let r=n,{t:i}=M(),a=g(()=>i(`dashboard.cloudProject`));function s(e,t){return!e||e.length<=t?e||``:e.slice(0,t)+`...`}return(n,i)=>(v(),w(e(B),{class:m([`project-card`,{"project-card--active":t.active}]),onClick:i[0]||=e=>r(`click`)},{title:x(()=>[u(`div`,ue,[u(`span`,{class:`card-title`,title:t.project.name},S(t.project.name),9,de),E(n.$slots,`actions`,{},void 0,!0)])]),content:x(()=>[t.project.description?(v(),d(`p`,fe,S(s(t.project.description,120)),1)):D(``,!0),u(`div`,pe,[u(`span`,me,[i[1]||=u(`i`,{class:`ti ti-box`},null,-1),o(` `+S(t.project.serviceIds.length)+` service`+S(t.project.serviceIds.length===1?``:`s`),1)]),t.project.orgId?(v(),d(`span`,he,[i[2]||=u(`i`,{class:`ti ti-cloud`},null,-1),o(S(a.value),1)])):D(``,!0)])]),_:3},8,[`class`]))}}),[[`__scopeId`,`data-v-95e62c18`]]),_e={class:`panel`},ve={class:`panel__header`},ye={class:`panel__title`},be={key:0,class:`panel__empty`},xe={key:1,class:`project-list`},Se=[`aria-label`,`onClick`],Ce={key:0,class:`project-menu`},we={class:`dialog-field`},Te={for:`dashboard-edit-name`},Ee={class:`dialog-field`},De={for:`dashboard-edit-desc`},Oe=U(_({__name:`ProjectsPanel`,setup(n){let{t:r}=M(),i=ee(),s=W(),c=q(),l=N(),{isLinked:p}=re(),m=t(!1),h=t(null),_=t(null),y=t(!1),C=t(!1),T=t(null),E=t(!1),k=t(null),A=t({name:``,description:``}),P=t(!1),I=t(null),R=g(()=>c.projects.find(e=>e.id===l.activeProjectId&&(e.orgId??null)===(l.activeOrgId??null))??null);function z(e){return R.value?.id===e.id&&(R.value?.orgId??null)===(e.orgId??null)}function B(e){l.setActiveProject(e.id,e.orgId??null)}function U(e,t){h.value=t,_.value?.toggle(e)}function G(){_.value?.hide()}function J(e){i.add({severity:`error`,summary:r(`common.error`),detail:ne(e),life:5e3})}function Y(e){i.add({severity:`success`,summary:r(`projectList.created`),detail:r(`projectList.createdDetail`,{name:e.name}),life:3e3})}function ie(e){G(),T.value=e,C.value=!0}function ae(e){k.value=e,A.value={name:e.name,description:e.description??``},E.value=!0,G()}async function X(){let e=k.value;if(e&&A.value.name.trim()){m.value=!0;try{if(!await c.update(e,{name:A.value.name.trim(),description:A.value.description.trim()})){J(c.error);return}E.value=!1,i.add({severity:`success`,summary:r(`projectDetail.nameUpdated`),life:2e3})}finally{m.value=!1}}}async function oe(e){if(G(),k.value=e,I.value=null,e.orgId)try{let{path:t}=await K.project.getLocalPath.query({id:e.id,orgId:e.orgId});I.value=t??null}catch{I.value=null}P.value=!0}function ue(e){I.value=e}function de(e){G(),s.require({message:r(`dashboard.deleteProjectMessage`,{name:e.name}),header:r(`projectDetail.deleteProjectTitle`),icon:`ti ti-alert-triangle`,rejectLabel:r(`projectDetail.deleteProjectCancel`),acceptLabel:r(`projectDetail.deleteProjectConfirm`),acceptProps:{severity:`danger`},accept:()=>{fe(e)}})}async function fe(e){let t=z(e);if(!await c.remove(e)){J(c.error);return}if(t){let e=c.projects[0];e?l.setActiveProject(e.id,e.orgId??null):l.resetLaunch()}i.add({severity:`success`,summary:r(`projectDetail.projectDeleted`),life:2e3})}return(t,n)=>(v(),d(`section`,_e,[u(`div`,ve,[u(`h2`,ye,S(e(r)(`dashboard.projects`)),1),a(e(te),{value:String(e(c).projectCount),severity:`secondary`},null,8,[`value`]),a(e(H),{icon:`ti ti-plus`,label:e(r)(`projectList.newProject`),size:`small`,variant:`text`,"data-testid":`new-project-btn`,onClick:n[0]||=e=>y.value=!0},null,8,[`label`])]),e(c).projects.length===0?(v(),d(`p`,be,S(e(r)(`dashboard.noProjects`)),1)):(v(),d(`div`,xe,[(v(!0),d(b,null,f(e(c).projects,t=>(v(),w(ge,{key:`${t.orgId??`local`}:${t.id}`,project:t,active:z(t),"data-testid":`project-row-link`,onClick:e=>B(t)},{actions:x(()=>[u(`button`,{type:`button`,class:`project-menu-button`,"aria-label":e(r)(`common.actions`),onClick:j(e=>U(e,t),[`stop`])},[...n[13]||=[u(`i`,{class:`ti ti-dots-vertical`},null,-1)]],8,Se)]),_:2},1032,[`project`,`active`,`onClick`]))),128))])),a(e(F),{ref_key:`menu`,ref:_},{default:x(()=>[h.value?(v(),d(`div`,Ce,[u(`button`,{type:`button`,class:`project-menu__item`,onClick:n[1]||=e=>ae(h.value)},[n[14]||=u(`i`,{class:`ti ti-pencil`},null,-1),o(S(e(r)(`dashboard.editProject`)),1)]),!h.value.orgId&&e(p)?(v(),d(`button`,{key:0,type:`button`,class:`project-menu__item`,"data-testid":`project-publish`,onClick:n[2]||=e=>ie(h.value)},[n[15]||=u(`i`,{class:`ti ti-cloud-upload`},null,-1),o(S(e(r)(`projectSwitcher.publish`)),1)])):D(``,!0),h.value.orgId?(v(),d(`button`,{key:1,type:`button`,class:`project-menu__item`,"data-testid":`project-local-path`,onClick:n[3]||=e=>oe(h.value)},[n[16]||=u(`i`,{class:`ti ti-folder-open`},null,-1),o(S(e(r)(`projectDetail.cloud.localPath`)),1)])):D(``,!0),u(`button`,{type:`button`,class:`project-menu__item project-menu__item--danger`,onClick:n[4]||=e=>de(h.value)},[n[17]||=u(`i`,{class:`ti ti-trash`},null,-1),o(S(e(r)(`projectDetail.deleteProjectTitle`)),1)])])):D(``,!0)]),_:1},512),a(ce,{visible:y.value,"onUpdate:visible":n[5]||=e=>y.value=e,onCreated:Y},null,8,[`visible`]),a(le,{visible:C.value,"onUpdate:visible":n[6]||=e=>C.value=e,project:T.value,onPublished:n[7]||=t=>e(c).fetchAll()},null,8,[`visible`,`project`]),a(e(V),{visible:E.value,"onUpdate:visible":n[11]||=e=>E.value=e,header:e(r)(`dashboard.editProject`),modal:``,style:{width:`420px`}},{footer:x(()=>[a(e(H),{label:e(r)(`actions.cancel`),severity:`secondary`,variant:`text`,disabled:m.value,onClick:n[10]||=e=>E.value=!1},null,8,[`label`,`disabled`]),a(e(H),{label:e(r)(`actions.save`),icon:`ti ti-check`,loading:m.value,disabled:!A.value.name.trim(),onClick:X},null,8,[`label`,`loading`,`disabled`])]),default:x(()=>[u(`div`,we,[u(`label`,Te,S(e(r)(`common.name`)),1),a(e(L),{id:`dashboard-edit-name`,modelValue:A.value.name,"onUpdate:modelValue":n[8]||=e=>A.value.name=e,autofocus:``,onKeyup:O(X,[`enter`])},null,8,[`modelValue`])]),u(`div`,Ee,[u(`label`,De,S(e(r)(`common.description`)),1),a(e(L),{id:`dashboard-edit-desc`,modelValue:A.value.description,"onUpdate:modelValue":n[9]||=e=>A.value.description=e,onKeyup:O(X,[`enter`])},null,8,[`modelValue`])])]),_:1},8,[`visible`,`header`]),k.value?.orgId?(v(),w(se,{key:2,visible:P.value,"onUpdate:visible":n[12]||=e=>P.value=e,"project-id":k.value.id,"org-id":k.value.orgId,"project-name":k.value.name,"initial-path":I.value,onChosen:ue},null,8,[`visible`,`project-id`,`org-id`,`project-name`,`initial-path`])):D(``,!0)]))}}),[[`__scopeId`,`data-v-76822031`]]);function ke(e,t){let n=new Map;for(let e of t)e.from!==e.to&&n.set(e.to,[...n.get(e.to)??[],e.from]);let r=new Map,i=new Set,a=e=>{let t=r.get(e);if(t!==void 0)return t;if(i.has(e))return 0;i.add(e);let o=0;for(let t of n.get(e)??[])o=Math.max(o,a(t)+1);return i.delete(e),r.set(e,o),o};for(let t of e)a(t.id);return r}function Ae(e,t,n){if(e.length===0)return{nodes:[],width:n.padding*2,height:n.padding*2};let r=ke(e,t),i=new Map;for(let t of e){let e=r.get(t.id)??0;i.set(e,[...i.get(e)??[],t])}let a=Math.max(...[...i.values()].map(e=>e.length)),o=Math.max(...i.keys()),s=n.padding*2+a*n.rowHeight,c=n.padding*2+(o+1)*n.columnWidth,l=[];for(let[e,t]of i){let r=(a-t.length)/2;t.forEach((t,i)=>{l.push({...t,depth:e,x:n.padding+e*n.columnWidth+n.columnWidth/2,y:n.padding+(r+i+.5)*n.rowHeight})})}let u=new Map(l.map(e=>[e.id,e]));return{nodes:e.map(e=>u.get(e.id)),width:c,height:s}}var je=.2,Z=1.1,Me=16;function Ne(e){return Math.min(3,Math.max(je,e))}function Pe(e,t,n){let r=Ne(e.scale*t),i=r/e.scale;return{scale:r,x:n.x-(n.x-e.x)*i,y:n.y-(n.y-e.y)*i}}function Fe(e,t,n){return{...e,x:e.x+t,y:e.y+n}}function Ie(e,t){if(t.width<=0||t.height<=0||e.width<=0||e.height<=0)return{x:0,y:0,scale:1};let n=Math.min(Me,t.width/4,t.height/4),r=Ne(Math.min(1,(t.width-2*n)/e.width,(t.height-2*n)/e.height));return{scale:r,x:(t.width-e.width*r)/2,y:(t.height-e.height*r)/2}}function Le(){let e=t({x:0,y:0,scale:1}),r=t(!1),i=null,a=!1;function o(t){t.preventDefault();let n=t.currentTarget.getBoundingClientRect(),r=t.deltaY<0?Z:1/Z;e.value=Pe(e.value,r,{x:t.clientX-n.left,y:t.clientY-n.top})}function s(t){if(!i)return;let n=t.clientX-i.x,r=t.clientY-i.y;(n!==0||r!==0)&&(a=!0),i={x:t.clientX,y:t.clientY},e.value=Fe(e.value,n,r)}function c(){i=null,r.value=!1,window.removeEventListener(`pointermove`,s),window.removeEventListener(`pointerup`,c),window.removeEventListener(`pointercancel`,c),a&&setTimeout(()=>{a=!1},0)}function l(e){e.button===0&&(a=!1,i={x:e.clientX,y:e.clientY},r.value=!0,window.addEventListener(`pointermove`,s),window.addEventListener(`pointerup`,c),window.addEventListener(`pointercancel`,c))}function u(t,n){e.value=Ie(t,n)}let d=e=>({x:e.width/2,y:e.height/2});function f(t){e.value=Pe(e.value,Z*Z,d(t))}function p(t){e.value=Pe(e.value,1/(Z*Z),d(t))}return n(c),{transform:e,isPanning:r,onWheel:o,onPointerDown:l,fit:u,zoomIn:f,zoomOut:p,dragJustEnded:()=>a}}var Re={class:`panel service-graph`},ze=[`aria-expanded`],Be={class:`panel__title`},Ve={class:`service-graph__hint`},He={key:0,class:`panel__empty`},Ue={key:1,class:`panel__empty`},We={key:2,class:`panel__empty`},Ge={key:0,class:`panel__empty`},Ke={class:`service-graph__controls`},qe=[`title`,`aria-label`],Je=[`title`,`aria-label`],Ye=[`title`,`aria-label`],Xe=[`viewBox`,`width`,`height`,`aria-label`],Ze=[`d`],Qe=[`aria-label`,`onMouseenter`,`onFocus`,`onClick`,`onKeydown`],$e=[`x`,`y`],et=[`x`,`y`],tt=[`x`,`y`],nt={key:1,class:`service-graph__keys`},rt={key:2,class:`service-graph__warnings`},it=210,at=84,ot=24,Q=150,st=44,ct=`runeya.dashboard.serviceGraphCollapsed`,lt=U(_({__name:`ServiceGraphPanel`,props:{project:{}},setup(n){let r=n,{t:i}=M(),a=P(),s=t([]),l=t([]),p=t([]),h=t(!1),_=t(!1),x=t(null);function w(){try{return localStorage.getItem(ct)!==`false`}catch{return!0}}let T=t(w());function E(){T.value=!T.value;try{localStorage.setItem(ct,String(T.value))}catch{}}c(T,e=>{e||N()});function k(){s.value=[],l.value=[],p.value=[]}let A=0;async function N(){let e=r.project,t=++A;if(!e||T.value){k(),h.value=!1,_.value=!1;return}h.value=!0,_.value=!1;try{let n=await K.project.graph.query({id:e.id,orgId:e.orgId??null});if(t!==A)return;s.value=n.nodes,l.value=n.edges,p.value=n.dangling}catch{if(t!==A)return;_.value=!0,k()}finally{t===A&&(h.value=!1)}}c(()=>r.project?`${r.project.id}|${r.project.orgId??``}`:null,N,{immediate:!0});let F=g(()=>Ae(s.value,l.value,{columnWidth:it,rowHeight:at,padding:ot})),I=g(()=>new Map(F.value.nodes.map(e=>[e.id,e]))),L=g(()=>l.value.flatMap(e=>{let t=I.value.get(e.from),n=I.value.get(e.to);if(!t||!n)return[];let r=t.x+Q/2,i=n.x-Q/2,a=Math.max(40,Math.abs(i-r)/2);return[{...e,id:`${e.from}->${e.to}`,path:`M ${r} ${t.y} C ${r+a} ${t.y}, ${i-a} ${n.y}, ${i} ${n.y}`}]}));function R(e){return x.value!==null&&(e.from===x.value||e.to===x.value)}function ee(e){return x.value===null||x.value===e?!1:!l.value.some(t=>t.from===x.value&&t.to===e||t.to===x.value&&t.from===e)}let z=g(()=>{if(!x.value)return[];let e=new Set;for(let t of l.value)if(t.from===x.value||t.to===x.value)for(let n of t.keys)e.add(n);return[...e].sort()});function te(e){return s.value.find(t=>t.id===e)}let B=t(null),V=Le(),{transform:H,isPanning:U}=V;function W(){return{width:B.value?.clientWidth??0,height:B.value?.clientHeight??0}}function G(){V.fit({width:F.value.width,height:F.value.height},W())}c(()=>`${F.value.width}x${F.value.height}`,()=>void C(G),{immediate:!0});function q(e){V.dragJustEnded()||a.push(`/services/${e}`)}return(t,n)=>(v(),d(`section`,Re,[u(`button`,{type:`button`,class:m([`panel__header service-graph__toggle`,{"service-graph__toggle--collapsed":T.value}]),"aria-expanded":!T.value,onClick:E},[u(`i`,{class:m([`ti`,T.value?`ti-chevron-right`:`ti-chevron-down`]),"aria-hidden":`true`},null,2),u(`h2`,Be,S(e(i)(`dashboard.graphTitle`)),1),u(`span`,Ve,S(e(i)(`dashboard.graphHint`)),1)],10,ze),T.value?D(``,!0):(v(),d(b,{key:0},[h.value?(v(),d(`p`,He,S(e(i)(`dashboard.graphLoading`)),1)):_.value?(v(),d(`p`,Ue,S(e(i)(`dashboard.graphFailed`)),1)):s.value.length===0?(v(),d(`p`,We,S(e(i)(`dashboard.graphNoServices`)),1)):(v(),d(b,{key:3},[l.value.length===0?(v(),d(`p`,Ge,S(e(i)(`dashboard.graphNoLinks`)),1)):D(``,!0),u(`div`,{ref_key:`frame`,ref:B,class:m([`service-graph__frame`,{"service-graph__frame--panning":e(U)}]),onWheel:n[7]||=(...t)=>e(V).onWheel&&e(V).onWheel(...t),onPointerdown:n[8]||=(...t)=>e(V).onPointerDown&&e(V).onPointerDown(...t),onDblclick:j(G,[`self`])},[u(`div`,Ke,[u(`button`,{type:`button`,class:`service-graph__control`,title:e(i)(`dashboard.graphZoomIn`),"aria-label":e(i)(`dashboard.graphZoomIn`),onClick:n[0]||=t=>e(V).zoomIn(W()),onPointerdown:n[1]||=j(()=>{},[`stop`])},[...n[9]||=[u(`i`,{class:`ti ti-plus`,"aria-hidden":`true`},null,-1)]],40,qe),u(`button`,{type:`button`,class:`service-graph__control`,title:e(i)(`dashboard.graphZoomOut`),"aria-label":e(i)(`dashboard.graphZoomOut`),onClick:n[2]||=t=>e(V).zoomOut(W()),onPointerdown:n[3]||=j(()=>{},[`stop`])},[...n[10]||=[u(`i`,{class:`ti ti-minus`,"aria-hidden":`true`},null,-1)]],40,Je),u(`button`,{type:`button`,class:`service-graph__control`,title:e(i)(`dashboard.graphFit`),"aria-label":e(i)(`dashboard.graphFit`),onClick:G,onPointerdown:n[4]||=j(()=>{},[`stop`])},[...n[11]||=[u(`i`,{class:`ti ti-arrows-move`,"aria-hidden":`true`},null,-1)]],40,Ye)]),(v(),d(`svg`,{class:`service-graph__svg`,viewBox:`0 0 ${F.value.width} ${F.value.height}`,width:F.value.width,height:F.value.height,style:y({transform:`translate(${e(H).x}px, ${e(H).y}px) scale(${e(H).scale})`}),role:`img`,"aria-label":e(i)(`dashboard.graphAria`,{count:l.value.length})},[n[12]||=u(`defs`,null,[u(`marker`,{id:`service-graph-arrow`,viewBox:`0 0 10 10`,refX:`9`,refY:`5`,markerWidth:`6`,markerHeight:`6`,orient:`auto-start-reverse`},[u(`path`,{d:`M 0 0 L 10 5 L 0 10 z`,class:`service-graph__arrow-head`})])],-1),(v(!0),d(b,null,f(L.value,e=>(v(),d(`path`,{key:e.id,d:e.path,class:m([`service-graph__edge`,{"service-graph__edge--active":R(e),"service-graph__edge--dimmed":x.value!==null&&!R(e)}]),"marker-end":`url(#service-graph-arrow)`},null,10,Ze))),128)),(v(!0),d(b,null,f(F.value.nodes,e=>(v(),d(`g`,{key:e.id,class:m([`service-graph__node`,{"service-graph__node--dimmed":ee(e.id)}]),tabindex:`0`,role:`button`,"aria-label":e.name,onMouseenter:t=>x.value=e.id,onMouseleave:n[5]||=e=>x.value=null,onFocus:t=>x.value=e.id,onBlur:n[6]||=e=>x.value=null,onClick:t=>q(e.id),onKeydown:[O(j(t=>q(e.id),[`prevent`]),[`enter`]),O(j(t=>q(e.id),[`prevent`]),[`space`])]},[u(`rect`,{x:e.x-Q/2,y:e.y-st/2,width:Q,height:st,rx:`8`,class:m([`service-graph__box`,{"service-graph__box--ambiguous":e.ambiguousSlug}])},null,10,$e),u(`text`,{x:e.x,y:e.y-3,class:`service-graph__name`},S(e.name),9,et),u(`text`,{x:e.x,y:e.y+12,class:`service-graph__slug`},S(e.slug),9,tt)],42,Qe))),128))],12,Xe))],34),z.value.length>0?(v(),d(`p`,nt,[o(S(e(i)(`dashboard.graphVia`))+` `,1),(v(!0),d(b,null,f(z.value,e=>(v(),d(`code`,{key:e},S(e),1))),128))])):D(``,!0),p.value.length>0?(v(),d(`ul`,rt,[(v(!0),d(b,null,f(p.value,t=>(v(),d(`li`,{key:`${t.from}-${t.slug}`},S(e(i)(`dashboard.graphDangling`,{service:te(t.from)?.name??t.from,slug:t.slug,keys:t.keys.join(`, `)})),1))),128))])):D(``,!0)],64))],64))]))}}),[[`__scopeId`,`data-v-06ba13f6`]]);function ut(e){if(e==null||!Number.isFinite(e)||e<0)return`—`;let t=Math.floor(e/1e3);if(t<60)return`${t}s`;let n=Math.floor(t/60);if(n<60)return`${n}m`;let r=Math.floor(n/60);return r<24?`${r}h ${n%60}m`:`${Math.floor(r/24)}d ${r%24}h`}var dt={key:0,class:`service-row__agent service-row__agent--missing`},ft={key:1,class:`service-row__agent`},pt=[`aria-label`],mt={class:`service-row__name`},ht={key:2,class:`service-row__state`},gt={key:3,class:`service-row__agent-hint`},_t={key:4,class:`ti ti-alert-triangle service-row__health`},vt=U(_({__name:`ServiceStatusRow`,props:{service:{},processes:{},now:{},showAgent:{type:Boolean}},setup(t){let n=t,{t:r}=M(),s=P(),c=Y(),f=g(()=>ae(n.processes)),p=g(()=>f.value?.state??`stopped`),h=g(()=>{switch(p.value){case`running`:return`success`;case`starting`:return`warn`;case`errored`:return`danger`;default:return`idle`}}),_=g(()=>ie(n.service)),y=g(()=>_.value?c.getById(_.value)?.config.name??_.value:null),x=g(()=>{let e=f.value;return!e||e.state!==`running`?null:e.startedAt?Math.max(0,n.now-new Date(e.startedAt).getTime()):e.uptime*1e3}),C=g(()=>f.value?.healthStatus===`unhealthy`);function w(){s.push(`/services/${n.service.id}`)}return(n,s)=>{let c=i(`tooltip`);return v(),d(`div`,{class:m([`service-row`,`service-row--${h.value}`])},[u(`button`,{type:`button`,class:`service-row__main`,"data-testid":`service-row-link`,onClick:w},[y.value?t.showAgent?l((v(),d(`span`,ft,[s[0]||=u(`i`,{class:`ti ti-server`},null,-1),o(S(y.value),1)])),[[c,y.value,void 0,{top:!0}]]):D(``,!0):(v(),d(`span`,dt,S(e(r)(`serviceHeader.noAgent`)),1)),l(u(`span`,{class:`service-row__dot`,role:`img`,"aria-label":e(r)(`status.${p.value}`)},null,8,pt),[[c,e(r)(`status.${p.value}`),void 0,{top:!0}]]),u(`span`,mt,S(t.service.name),1),p.value===`stopped`?D(``,!0):(v(),d(`span`,ht,[o(S(e(r)(`status.${p.value}`))+` `,1),x.value===null?D(``,!0):(v(),d(b,{key:0},[o(` · `+S(e(ut)(x.value)),1)],64))])),y.value&&!t.showAgent?(v(),d(`span`,gt,[s[1]||=u(`i`,{class:`ti ti-server`},null,-1),o(S(y.value),1)])):D(``,!0),C.value?l((v(),d(`i`,_t,null,512)),[[c,e(r)(`dashboard.unhealthy`),void 0,{top:!0}]]):D(``,!0)]),a(oe,{class:`service-row__controls`,compact:``,"agent-id":f.value?.agentId??_.value??``,"process-id":f.value?.id??t.service.id,state:p.value},null,8,[`agent-id`,`process-id`,`state`])],2)}}}),[[`__scopeId`,`data-v-b0350475`]]);function yt(){let e=X(),t=J(),n=g(()=>t.services.map(t=>{let n=e.getByService(t.id);return{service:t,processes:n,state:ae(n)?.state??`stopped`}}));return{states:n,runningCount:g(()=>n.value.filter(e=>e.state===`running`||e.state===`starting`).length),erroredCount:g(()=>n.value.filter(e=>e.state===`errored`).length),stoppedCount:g(()=>n.value.filter(e=>e.state===`stopped`).length)}}var bt={class:`panel`,"data-testid":`services-panel`},xt={class:`panel__header`},St={class:`panel__title`},Ct={class:`panel__count`},wt={key:0,class:`panel__empty`},Tt={key:1,class:`panel__empty`},Et={class:`service-group__count`},Dt=U(_({__name:`ServicesPanel`,props:r({project:{},now:{}},{filter:{default:`all`},filterModifiers:{}}),emits:[`update:filter`],setup(n){let r=n,{t:i}=M(),c=P(),l=Y(),p=g(()=>l.agents.length>1),h=s(n,`filter`),_=t(``),y=g(()=>[{value:`all`,label:i(`dashboard.filterAll`)},{value:`running`,label:i(`dashboard.filterRunning`)},{value:`issues`,label:i(`dashboard.filterIssues`)},{value:`stopped`,label:i(`dashboard.filterStopped`)}]),{states:C}=yt(),T=e=>e===`errored`?0:e===`starting`?1:e===`running`?2:3,E=e=>e===`errored`?`issues`:e===`running`||e===`starting`?`running`:`stopped`,O=g(()=>{let e=_.value.trim().toLowerCase();return[...C.value.filter(t=>e&&!t.service.name.toLowerCase().includes(e)?!1:h.value===`running`?t.state===`running`||t.state===`starting`:h.value===`issues`?t.state===`errored`:h.value!==`stopped`||t.state===`stopped`)].sort((e,t)=>T(e.state)-T(t.state)||e.service.name.localeCompare(t.service.name))}),A=g(()=>{let e=[];for(let t of O.value){let n=E(t.state),r=e.at(-1);r?.key!==n&&(r={key:n,label:i(n===`issues`?`dashboard.filterIssues`:n===`running`?`dashboard.filterRunning`:`dashboard.filterStopped`),entries:[]},e.push(r)),r.entries.push(t)}return e}),j=g(()=>h.value===`all`&&A.value.length>1);function N(){c.push({name:`service-create`,...r.project?{query:{projectId:r.project.id}}:{}})}return(t,r)=>(v(),d(`section`,bt,[u(`div`,xt,[u(`h2`,St,[o(S(e(i)(`dashboard.services`))+` `,1),u(`span`,Ct,S(e(C).length),1)]),a(e(R),{class:`panel__search`},{default:x(()=>[a(e(I),{class:`ti ti-search`}),a(e(L),{modelValue:_.value,"onUpdate:modelValue":r[0]||=e=>_.value=e,size:`small`,placeholder:e(i)(`projectDetail.searchServices`),"aria-label":e(i)(`projectDetail.searchServices`)},null,8,[`modelValue`,`placeholder`,`aria-label`])]),_:1}),a(e(H),{icon:`ti ti-plus`,label:e(i)(`projectDetail.createNew`),size:`small`,variant:`text`,onClick:N},null,8,[`label`])]),a(e(z),{modelValue:h.value,"onUpdate:modelValue":r[1]||=e=>h.value=e,class:`panel__filters`,options:y.value,"option-label":`label`,"option-value":`value`,size:`small`,"allow-empty":!1},null,8,[`modelValue`,`options`]),e(C).length===0?(v(),d(`p`,wt,S(e(i)(`dashboard.noServices`)),1)):O.value.length===0?(v(),d(`p`,Tt,S(e(i)(`dashboard.noServicesForFilter`)),1)):(v(),w(k,{key:2,tag:`div`,name:`service-list`,class:`service-list`},{default:x(()=>[(v(!0),d(b,null,f(A.value,e=>(v(),d(b,{key:e.key},[j.value?(v(),d(`h3`,{key:`group:${e.key}`,class:m([`service-group`,`service-group--${e.key}`])},[o(S(e.label)+` `,1),u(`span`,Et,S(e.entries.length),1)],2)):D(``,!0),(v(!0),d(b,null,f(e.entries,e=>(v(),w(vt,{key:e.service.id,service:e.service,processes:e.processes,now:n.now,"show-agent":p.value},null,8,[`service`,`processes`,`now`,`show-agent`]))),128))],64))),128))]),_:1}))]))}}),[[`__scopeId`,`data-v-140c1215`]]),Ot={class:`stat-tile__value`},kt={class:`stat-tile__label`},$=U(_({__name:`StatTile`,props:{icon:{},value:{},label:{},tone:{},to:{},selectable:{type:Boolean},active:{type:Boolean}},emits:[`select`],setup(e,{emit:t}){let n=e,r=t,i=P(),o=g(()=>n.tone??`neutral`),s=g(()=>!!n.to||!!n.selectable);function c(){n.to?i.push(n.to):n.selectable&&r(`select`)}return(t,r)=>(v(),w(T(s.value?`button`:`div`),{type:s.value?`button`:void 0,class:m([`stat-tile`,[`stat-tile--${o.value}`,{"stat-tile--pressable":s.value,"stat-tile--active":e.active}]]),"aria-pressed":e.selectable?!!e.active:void 0,onClick:c},{default:x(()=>[u(`i`,{class:m([`ti`,n.icon,`stat-tile__icon`])},null,2),u(`span`,Ot,[a(A,{name:`stat-value`,mode:`out-in`},{default:x(()=>[(v(),d(`span`,{key:String(n.value),class:`stat-tile__digits`},S(n.value),1))]),_:1})]),u(`span`,kt,S(n.label),1)]),_:1},8,[`type`,`class`,`aria-pressed`]))}}),[[`__scopeId`,`data-v-502c82fd`]]),At={class:`dashboard-page`},jt=[`aria-label`],Mt={class:`summary-strip__group`},Nt={class:`summary-strip__group summary-strip__group--end`},Pt={class:`dashboard-columns`},Ft={class:`dashboard-aside`},It={class:`panel`},Lt={class:`panel__header`},Rt={class:`panel__title`},zt={key:0,class:`panel__empty`},Bt={key:1,class:`agent-list`},Vt={class:`agent-item__name`},Ht={class:`agent-item__state`},Ut=U(_({__name:`DashboardPage`,setup(n){let{t:r}=M(),{lockedProjectId:i}=G(),o=q(),s=Y(),c=X(),l=J(),_=N(),y=t(Date.now()),x=null,C=t(null),T=g(()=>o.projects.find(e=>e.id===_.activeProjectId&&(e.orgId??null)===(_.activeOrgId??null))??null);p(async()=>{await Promise.all([o.fetchAll(),s.fetchAll(),c.fetchAll(),l.fetchAll()]),x=setInterval(()=>{y.value=Date.now()},1e3);try{let e=await K.wiki.list.query({scope:`global`}),t=0,n=e=>{for(let r of e)r.type===`file`?t+=1:r.type===`dir`&&Array.isArray(r.children)&&n(r.children)};n(e.entries),C.value=t}catch{C.value=null}}),h(()=>{x&&clearInterval(x)});let{runningCount:E,erroredCount:O,stoppedCount:k}=yt(),A=t(`all`);function j(e){A.value=A.value===e?`all`:e}let P=g(()=>s.agents.filter(e=>!e.status.connected).length);return(t,n)=>(v(),d(`div`,At,[u(`section`,{class:`summary-strip`,"aria-label":e(r)(`dashboard.healthBand`)},[u(`div`,Mt,[a($,{icon:`ti-player-play`,tone:`success`,value:e(E),label:e(r)(`dashboard.servicesRunning`),selectable:``,active:A.value===`running`,onSelect:n[0]||=e=>j(`running`)},null,8,[`value`,`label`,`active`]),a($,{icon:`ti-alert-triangle`,tone:e(O)>0?`danger`:`neutral`,value:e(O),label:e(r)(`dashboard.servicesErrored`),selectable:``,active:A.value===`issues`,onSelect:n[1]||=e=>j(`issues`)},null,8,[`tone`,`value`,`label`,`active`]),a($,{icon:`ti-player-pause`,tone:`neutral`,value:e(k),label:e(r)(`dashboard.servicesStopped`),selectable:``,active:A.value===`stopped`,onSelect:n[2]||=e=>j(`stopped`)},null,8,[`value`,`label`,`active`])]),u(`div`,Nt,[a($,{icon:`ti-server`,tone:P.value>0?`warn`:`success`,value:`${e(s).connectedAgents.length}/${e(s).agents.length}`,label:e(r)(`dashboard.agentsConnected`),to:`/settings?section=agents`},null,8,[`tone`,`value`,`label`]),a($,{icon:`ti-book`,value:C.value??`—`,label:e(r)(`dashboard.globalWiki`),to:`/wiki`},null,8,[`value`,`label`])])],8,jt),T.value?(v(),w(lt,{key:0,project:T.value},null,8,[`project`])):D(``,!0),u(`div`,Pt,[a(Dt,{filter:A.value,"onUpdate:filter":n[3]||=e=>A.value=e,project:T.value,now:y.value},null,8,[`filter`,`project`,`now`]),u(`div`,Ft,[e(i)?D(``,!0):(v(),w(Oe,{key:0})),u(`section`,It,[u(`div`,Lt,[u(`h2`,Rt,S(e(r)(`dashboard.agentStatus`)),1)]),e(s).agents.length===0?(v(),d(`p`,zt,S(e(r)(`dashboard.noAgents`)),1)):(v(),d(`ul`,Bt,[(v(!0),d(b,null,f(e(s).agents,t=>(v(),d(`li`,{key:t.config.id,class:`agent-item`},[u(`span`,{class:m([`agent-item__dot`,t.status.connected?`agent-item__dot--on`:`agent-item__dot--off`])},null,2),u(`span`,Vt,S(t.config.name),1),u(`span`,Ht,S(t.status.connected?e(r)(`dashboard.connected`):e(r)(`dashboard.disconnected`)),1)]))),128))]))])])])]))}}),[[`__scopeId`,`data-v-ef3e9fbe`]]);export{Ut as default};
@@ -0,0 +1 @@
1
+ import{B as e,C as t}from"./reactivity.esm-bundler-BQ9SB2vv.js";import{D as n,E as r,Ht as i,Rt as a,_ as o,b as s,bt as c,en as ee,g as l,k as u,mt as d,o as f,qt as p,rn as m,tt as te,v as h,y as g}from"./runtime-core.esm-bundler-DujKY9QV.js";import{C as _,w as v}from"./runtime-dom.esm-bundler-CyEVRK6B.js";import{n as ne}from"./vue-i18n-o7yraQpR.js";import{G as re,J as y,K as b,W as x,Y as ie,dt as S,ft as C}from"./src-DIBHat7I.js";import{r as w}from"./trpc-BAZGRZBD.js";import{n as T}from"./error-DpF7X5iu.js";function E(e){let t=e.split(/\r?\n/).map(e=>e.trim()).find(e=>e.length>0)??``,n=t[0];if((n===`"`||n===`'`)&&t.endsWith(n)&&t.length>1&&(t=t.slice(1,-1).trim()),/^file:\/\//i.test(t)){try{t=decodeURIComponent(new URL(t).pathname)}catch{return``}return/^\/[A-Za-z]:/.test(t)&&(t=t.slice(1)),t}return/^[A-Za-z]:[\\/]/.test(t)||t.startsWith(`\\\\`)||(t=t.replace(/\\ /g,` `)),t}function D(e){let t=E(e);return t?t.includes(`/`)||t.includes(`\\`)||t.startsWith(`~`)||/^[A-Za-z]:$/.test(t):!1}var ae={class:`picker-lead`},oe={class:`picker-hint`},se={class:`picker-path`},ce=[`aria-label`],le={key:0,class:`ti ti-chevron-right picker-crumbs__sep`,"aria-hidden":`true`},ue={key:1,class:`picker-crumbs__current`,"aria-current":`page`},de=[`disabled`,`onClick`],fe={class:`picker-mode`,"aria-live":`polite`},pe={key:0,class:`picker-empty`},me={key:1,class:`picker-empty`},he={key:2,class:`picker-empty`},ge=[`onClick`],_e={class:`picker-row__name`},ve={key:0,class:`picker-row__badge`},ye={key:3,class:`picker-empty`},O=C(u({__name:`DirectoryPickerDialog`,props:{visible:{type:Boolean},mode:{},projectId:{},orgId:{},projectName:{},required:{type:Boolean},initialPath:{}},emits:[`update:visible`,`chosen`,`local-chosen`],setup(u,{emit:C}){let O=u,k=C,A=l(()=>O.mode===`local`),{t:j}=ne(),M=t(``),N=t(null),P=t([]),F=t(!1),I=t(!1),L=t(!1),R=t(``),z=t(null),B=t(null),V=t(``),H=e=>e.normalize(`NFD`).replace(/\p{Diacritic}/gu,``).toLowerCase(),U=l(()=>D(V.value)),W=l(()=>{if(U.value)return P.value;let e=H(V.value.trim());return e?P.value.filter(t=>H(t.name).includes(e)):P.value}),G=l(()=>!!M.value&&z.value?.ok===!0&&!L.value),K=l(()=>{let e=M.value;if(!e)return[];let t=/^[A-Za-z]:[\\/]/.test(e),n=t?`\\`:`/`,r=e.split(/[\\/]+/).filter(Boolean),i=[];t||i.push({label:j(`directoryPicker.root`),path:`/`});let a=``;return r.forEach((e,r)=>{a=t&&r===0?e:`${a}${n}${e}`,i.push({label:e,path:t&&r===0?`${e}${n}`:a})}),i}),q=l(()=>K.value.at(-1)?.label??``),be=l(()=>A.value&&B.value?.status===`importable`?j(`directoryPicker.importNamed`,{name:B.value.projectName??q.value}):A.value&&B.value?.status===`available`?j(`directoryPicker.createHere`,{name:q.value}):q.value?j(`directoryPicker.confirmNamed`,{name:q.value}):j(`directoryPicker.confirm`)),J=a(`filterInput`);async function Y(){await te(),J.value?.$el?.focus()}function xe(){if(U.value){let e=E(V.value);e&&Z(e);return}let e=W.value;e.length===1&&e[0]&&Z(e[0].path)}function Se(e){let t=e.clipboardData?.getData(`text`)??``;if(!D(t))return;let n=E(t);n&&(e.preventDefault(),V.value=n,Z(n))}function X(e,t){let n=e.currentTarget,r=Array.from(n.querySelectorAll(`.picker-row`));if(!r.length)return;let i=r.indexOf(document.activeElement),a=i===-1?t>0?0:r.length-1:i+t;r[Math.max(0,Math.min(r.length-1,a))]?.focus()}function Ce(e){(e.currentTarget.closest(`.r-dialog__body`)??document).querySelector(`.picker-row`)?.focus()}async function Z(e){I.value=!0,R.value=``;try{let t=await w.filesystem.listDirectories.query({path:e});M.value=t.path,N.value=t.parent,P.value=t.entries,F.value=t.truncated,V.value=``,Y(),await we()}catch(e){R.value=T(e)??j(`directoryPicker.readError`)}finally{I.value=!1}}async function we(){if(M.value){if(A.value){try{let e=await w.filesystem.checkLocalProjectTarget.query({path:M.value});B.value={status:e.status,projectName:e.projectName},z.value={ok:e.status===`available`||e.status===`importable`,reason:e.status===`available`||e.status===`importable`?null:e.status,otherProjectId:null}}catch{B.value=null,z.value={ok:!1,reason:`missing`,otherProjectId:null}}return}try{let e=await w.filesystem.checkProjectTarget.query({path:M.value,projectId:O.projectId??``,orgId:O.orgId??null});z.value={ok:e.ok,reason:e.reason,otherProjectId:e.otherProjectId}}catch{z.value={ok:!1,reason:`missing`,otherProjectId:null}}}}async function Q(){try{await Z((await w.filesystem.suggestedRoots.query())[0]?.path??`~`)}catch(e){R.value=T(e)??j(`directoryPicker.readError`)}}async function Te(){if(G.value){if(A.value){let e=B.value?.status;if(e!==`available`&&e!==`importable`)return;k(`local-chosen`,{path:M.value,status:e,projectName:B.value?.projectName??null}),k(`update:visible`,!1);return}L.value=!0,R.value=``;try{await w.project.setLocalPath.mutate({id:O.projectId??``,orgId:O.orgId??null,path:M.value}),k(`chosen`,M.value),k(`update:visible`,!1)}catch(e){R.value=T(e)??j(`directoryPicker.saveError`)}finally{L.value=!1}}}i(()=>O.visible,e=>{e&&!M.value&&(O.initialPath?Z(O.initialPath):Q())},{immediate:!0});let $=l(()=>{let e=z.value?.reason;return e?e===`has-runeya-project`?j(`directoryPicker.refusedHasProject`):e===`listed`?j(`directoryPicker.refusedListed`,{name:B.value?.projectName??``}):j(e===`cloud-linked`?`directoryPicker.refusedCloudLinked`:e===`unreadable`?`directoryPicker.refusedUnreadable`:e===`machine-root`?`serverErrors.LOCAL_PROJECT_IN_MACHINE_ROOT`:e===`taken`?`directoryPicker.refusedTaken`:`directoryPicker.refusedMissing`):``});return(t,i)=>(d(),h(e(ie),{visible:u.visible,modal:``,closable:!u.required,"close-on-escape":!u.required,header:A.value?e(j)(`directoryPicker.localTitle`):e(j)(`directoryPicker.title`,{project:u.projectName??``}),style:{width:`46rem`,maxWidth:`95vw`},"data-testid":`directory-picker`,"onUpdate:visible":i[5]||=e=>k(`update:visible`,e),onShow:Y},{footer:p(()=>[u.required?g(``,!0):(d(),h(e(S),{key:0,label:e(j)(`actions.cancel`),variant:`text`,onClick:i[4]||=e=>k(`update:visible`,!1)},null,8,[`label`])),n(e(S),{label:be.value,disabled:!G.value,loading:L.value,"data-testid":`directory-picker-confirm`,onClick:Te},null,8,[`label`,`disabled`,`loading`])]),default:p(()=>[o(`p`,ae,m(A.value?e(j)(`directoryPicker.localLead`):e(j)(`directoryPicker.lead`)),1),o(`p`,oe,m(A.value?e(j)(`directoryPicker.localHint`):e(j)(`directoryPicker.leadHint`)),1),o(`div`,se,[n(e(S),{icon:`ti ti-arrow-up`,variant:`text`,rounded:``,disabled:!N.value||I.value,"aria-label":e(j)(`directoryPicker.up`),"data-testid":`directory-picker-up`,onClick:i[0]||=e=>N.value&&Z(N.value)},null,8,[`disabled`,`aria-label`]),o(`nav`,{class:`picker-crumbs`,"aria-label":e(j)(`directoryPicker.crumbAria`),"data-testid":`directory-picker-current`},[(d(!0),s(f,null,c(K.value,(e,t)=>(d(),s(f,{key:e.path},[t?(d(),s(`i`,le)):g(``,!0),t===K.value.length-1?(d(),s(`span`,ue,m(e.label),1)):(d(),s(`button`,{key:2,type:`button`,class:`picker-crumbs__link`,disabled:I.value,onClick:t=>Z(e.path)},m(e.label),9,de))],64))),128))],8,ce)]),n(e(b),{class:`picker-filter`},{default:p(()=>[n(e(re),{class:`ti ti-search`}),n(e(y),{ref_key:`filterInput`,ref:J,modelValue:V.value,"onUpdate:modelValue":i[1]||=e=>V.value=e,placeholder:e(j)(`directoryPicker.filterPlaceholder`),"data-testid":`directory-picker-filter`,fluid:``,onKeydown:[_(v(Ce,[`prevent`]),[`down`]),_(xe,[`enter`])],onPaste:Se},null,8,[`modelValue`,`placeholder`,`onKeydown`])]),_:1}),o(`p`,fe,[U.value?(d(),s(f,{key:0},[r(m(e(j)(`directoryPicker.pathHint`)),1)],64)):g(``,!0)]),o(`div`,{class:`picker-list`,"data-testid":`directory-picker-list`,onKeydown:[i[2]||=_(v(e=>X(e,1),[`prevent`]),[`down`]),i[3]||=_(v(e=>X(e,-1),[`prevent`]),[`up`])]},[I.value?(d(),s(`p`,pe,m(e(j)(`directoryPicker.loading`)),1)):P.value.length?W.value.length?g(``,!0):(d(),s(`p`,he,m(e(j)(`directoryPicker.noMatch`,{filter:V.value})),1)):(d(),s(`p`,me,m(e(j)(`directoryPicker.empty`)),1)),(d(!0),s(f,null,c(W.value,t=>(d(),s(`button`,{key:t.path,type:`button`,class:ee([`picker-row`,{"picker-row--taken":t.hasRuneyaProject}]),onClick:e=>Z(t.path)},[i[6]||=o(`i`,{class:`ti ti-folder`},null,-1),o(`span`,_e,m(t.name),1),t.hasRuneyaProject?(d(),s(`span`,ve,m(e(j)(`directoryPicker.badgeHasProject`)),1)):g(``,!0)],10,ge))),128)),F.value?(d(),s(`p`,ye,m(e(j)(`directoryPicker.truncated`)),1)):g(``,!0)],32),$.value?(d(),h(e(x),{key:0,severity:`warn`,"data-testid":`directory-picker-refusal`},{default:p(()=>[r(m($.value),1)]),_:1})):g(``,!0),R.value?(d(),h(e(x),{key:1,severity:`error`,"data-testid":`directory-picker-error`},{default:p(()=>[r(m(R.value),1)]),_:1})):g(``,!0)]),_:1},8,[`visible`,`closable`,`close-on-escape`,`header`]))}}),[[`__scopeId`,`data-v-483feee4`]]);export{O as t};
@@ -1,4 +1,4 @@
1
- import{b as e,g as t,k as n,mt as r,nn as i}from"./runtime-core.esm-bundler-DujKY9QV.js";import{ft as a}from"./src--GO-VSJ0.js";var o=`<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path fill="currentColor" d="M16.934 1.059l-7.12 6.608L4.16 3.838 2.073 4.88v14.248l2.088 1.041 5.654-3.83 7.12 6.608 5.065-2.443V3.502l-5.065-2.443zM5.17 14.288V9.716l2.893 2.286L5.17 14.288zm11.764 2.908L12.9 12.004l4.035-5.196v10.388z"/></svg>
1
+ import{b as e,g as t,k as n,mt as r,nn as i}from"./runtime-core.esm-bundler-DujKY9QV.js";import{ft as a}from"./src-DIBHat7I.js";var o=`<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path fill="currentColor" d="M16.934 1.059l-7.12 6.608L4.16 3.838 2.073 4.88v14.248l2.088 1.041 5.654-3.83 7.12 6.608 5.065-2.443V3.502l-5.065-2.443zM5.17 14.288V9.716l2.893 2.286L5.17 14.288zm11.764 2.908L12.9 12.004l4.035-5.196v10.388z"/></svg>
2
2
  `,s=`<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path fill="currentColor" d="M11.503.131 1.891 5.678a.84.84 0 0 0-.42.726v11.188c0 .3.162.575.42.724l9.609 5.55a1 1 0 0 0 .998 0l9.61-5.55a.84.84 0 0 0 .42-.724V6.404a.84.84 0 0 0-.42-.726L12.497.131a1.01 1.01 0 0 0-.996 0M2.657 6.338h18.55c.263 0 .43.287.297.515L12.23 22.918c-.062.107-.229.064-.229-.06V12.335a.59.59 0 0 0-.295-.51l-9.11-5.257c-.109-.063-.064-.23.061-.23"/></svg>
3
3
  `,c=`<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path fill="currentColor" d="M23.55 5.067c-1.2038-.002-2.1806.973-2.1806 2.1765v4.8676c0 .972-.8035 1.7594-1.7597 1.7594-.568 0-1.1352-.286-1.4718-.7659l-4.9713-7.1003c-.4125-.5896-1.0837-.941-1.8103-.941-1.1334 0-2.1533.9635-2.1533 2.153v4.8957c0 .972-.7969 1.7594-1.7596 1.7594-.57 0-1.1363-.286-1.4728-.7658L.4076 5.1598C.2822 4.9798 0 5.0688 0 5.2882v4.2452c0 .2147.0656.4228.1884.599l5.4748 7.8183c.3234.462.8006.8052 1.3509.9298 1.3771.313 2.6446-.747 2.6446-2.0977v-4.893c0-.972.7875-1.7593 1.7596-1.7593h.003a1.798 1.798 0 0 1 1.4718.7658l4.9723 7.0994c.4135.5905 1.05.941 1.8093.941 1.1587 0 2.1515-.9645 2.1515-2.153v-4.8948c0-.972.7875-1.7594 1.7596-1.7594h.194a.22.22 0 0 0 .2204-.2202v-4.622a.22.22 0 0 0-.2203-.2203Z"/></svg>
4
4
  `,l=`<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path fill="currentColor" d="M20.953.004a.397.397 0 0 0-.18.017L3.225 5.585c-.175.055-.323.214-.402.398a.42.42 0 0 0-.06.22v5.726a.42.42 0 0 0 .06.22c.079.183.227.341.402.397l7.454 2.364-7.454 2.363c-.255.08-.463.374-.463.655v5.688c0 .282.208.444.463.363l17.55-5.565c.237-.075.426-.336.452-.6.003-.022.013-.04.013-.065V12.06c0-.281-.208-.575-.463-.656L13.4 9.065l7.375-2.339c.255-.08.462-.375.462-.656V.384c0-.211-.117-.355-.283-.38z"/></svg>
@@ -0,0 +1 @@
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,ct as ee,en as s,g as c,k as l,mt as u,qt as d,rn as f,v as p,y as m}from"./runtime-core.esm-bundler-DujKY9QV.js";import{w as h}from"./runtime-dom.esm-bundler-CyEVRK6B.js";import{n as te}from"./vue-i18n-o7yraQpR.js";import{F as g,J as _,P as ne,S as re,U as ie,_ as v,a as ae,b as oe,c as y,dt as b,ft as x,g as se,h as ce,k as le,m as ue,n as de,p as fe,q as pe,r as S,v as me,x as he,y as C}from"./src-DIBHat7I.js";import{r as ge}from"./project.store-CNC6_4r4.js";import{t as _e}from"./agent.store-piokQ9Dt.js";import{i as ve,n as ye,r as w,t as T}from"./useEnvVarAutocomplete-BxJh2Lw0.js";var E={class:`environment-form`},D={class:`form-group`},O={for:`name`},k={key:0,class:`text-red-500`},A={class:`form-group`},j={for:`description`},M={class:`form-row`},N={class:`form-group flex-1`},P={for:`color`},be={class:`color-field`},xe={class:`text-gray-500`},Se={class:`form-group flex-1`},Ce={for:`bgColor`},we={class:`color-field`},Te={class:`text-gray-500`},Ee={class:`form-group`},De={class:`switch-row`},Oe={for:`defaultSwitch`},ke={class:`text-gray-500`},Ae={key:0,class:`form-group`},je={for:`agentSelect`},Me={class:`text-gray-500`},Ne={class:`form-actions`},Pe={class:`tab-content`},Fe={class:`form-group`},Ie={for:`parents`},Le={style:{padding:`0.5rem 0.75rem`}},Re={class:`text-gray-500`},ze={key:1},F={class:`inherited-header`},Be={class:`inherited-row-key`},Ve={class:`preview-key`},He={class:`value-row`},Ue=[`onClick`],We=[`onClick`],Ge={key:0,class:`secret-mask`},Ke={key:1,class:`preview-value`},qe={key:2,class:`empty-variables`},I=`__inherit__`,L=x(l({__name:`EnvironmentForm`,props:{projectId:{},environmentId:{},initialData:{}},emits:[`save`,`cancel`],setup(l,{emit:x}){let L=l,Je=x,R=ge(),Ye=_e(),Xe=ne(),{t:z}=te(),B=t(!1),V=t(!1),H=t({}),U=e=>(e??``).replace(/^#/,``),W=t({name:L.initialData?.name??``,description:L.initialData?.description??``,parentIds:L.initialData?.parentIds??[],color:U(L.initialData?.color),bgColor:U(L.initialData?.bgColor),default:L.initialData?.default??!1,agentId:L.initialData?.agentId??I}),Ze=c(()=>(L.initialData?.scope??`global`)===`global`),Qe=c(()=>[{label:z(`environmentForm.agentDefaultInherit`),value:I},...Ye.agents.map(e=>({label:e.config.name||e.config.id,value:e.config.id}))]),G=c(()=>R.environments.filter(e=>!(L.initialData?.id&&e.id===L.initialData.id))),K=t(``),$e=c(()=>{let e=K.value.trim().toLowerCase();if(!e)return G.value;let t=e.split(/\s+/);return G.value.filter(e=>{let n=e.name.toLowerCase();return t.every(e=>n.includes(e))})}),q=c(()=>!!L.environmentId),J=t(null),{values:et}=ye({projectId:()=>L.projectId,environmentId:()=>L.environmentId,agentId:()=>W.value.agentId===I?void 0:W.value.agentId}),{suggestions:tt,meta:nt,search:rt}=T(()=>J.value),Y=t(new Set);function it(e){let t=new Set(Y.value);t.has(e)?t.delete(e):t.add(e),Y.value=t}let X=t(null);function at(e,t){navigator.clipboard.writeText(t),X.value=e,setTimeout(()=>{X.value===e&&(X.value=null)},1500)}async function ot(){if(q.value&&L.environmentId){V.value=!0;try{await R.update({id:L.environmentId,parentIds:W.value.parentIds}),await Z()}catch(e){Xe.add({severity:`error`,summary:z(`environmentForm.failedToSaveParents`),detail:e.message??``,life:5e3})}finally{V.value=!1}}}async function Z(){if(L.environmentId)try{J.value=await R.resolve(L.environmentId)}catch{J.value=null}}function st(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 ct=c(()=>J.value?st(J.value.variables):[]),Q=c(()=>!L.environmentId||!J.value?.sources?[]:ct.value.filter(e=>J.value.sources[e.variableId]?.environmentId!==L.environmentId)),$=c(()=>{if(!J.value?.sources)return{};let e={};for(let[t,n]of Object.entries(J.value.sources))e[t]={environmentId:n.environmentId,overridden:n.overridden};return e});ee(()=>{q.value&&Z()});async function lt(){if(H.value={},!W.value.name.trim()){H.value.name=z(`environmentForm.nameRequired`);return}B.value=!0;try{let e=e=>e?e.startsWith(`#`)?e:`#${e}`:``,t=e(W.value.color),n=e(W.value.bgColor),r=W.value.agentId===I?void 0:W.value.agentId,i={projectId:L.projectId,name:W.value.name.trim(),description:W.value.description.trim(),parentIds:W.value.parentIds,...q.value?{}:{variables:{}},default:W.value.default,...t&&{color:t},...n&&{bgColor:n},agentId:r};Je(`save`,i)}finally{B.value=!1}}return i(()=>L.initialData,()=>{L.initialData&&(W.value.name=L.initialData.name??``,W.value.description=L.initialData.description??``,W.value.parentIds=L.initialData.parentIds??[],W.value.color=U(L.initialData.color),W.value.bgColor=U(L.initialData.bgColor),W.value.default=L.initialData.default??!1,W.value.agentId=L.initialData.agentId??I)}),(t,i)=>(u(),o(`div`,E,[n(e(he),{value:`0`,class:`environment-form__tabs`},{default:d(()=>[n(e(oe),null,{default:d(()=>[n(e(C),{value:`0`},{default:d(()=>[i[13]||=a(`i`,{class:`ti ti-settings tab-icon`},null,-1),a(`span`,null,f(e(z)(`environmentForm.tabConfiguration`)),1)]),_:1}),n(e(C),{value:`1`},{default:d(()=>[i[14]||=a(`i`,{class:`ti ti-database tab-icon`},null,-1),a(`span`,null,f(e(z)(`environmentForm.tabVariables`)),1)]),_:1})]),_:1}),n(e(me),null,{default:d(()=>[n(e(v),{value:`0`},{default:d(()=>[a(`form`,{onSubmit:h(lt,[`prevent`]),class:`tab-content`},[n(e(g),{legend:e(z)(`environmentForm.generalInfo`)},{default:d(()=>[a(`div`,D,[a(`label`,O,[r(f(e(z)(`environmentForm.nameLabel`))+` `,1),i[15]||=a(`span`,{class:`required`},`*`,-1)]),n(e(_),{id:`name`,modelValue:W.value.name,"onUpdate:modelValue":i[0]||=e=>W.value.name=e,placeholder:e(z)(`environmentForm.namePlaceholder`),class:`w-full`,disabled:B.value},null,8,[`modelValue`,`placeholder`,`disabled`]),H.value.name?(u(),o(`small`,k,f(H.value.name),1)):m(``,!0)]),a(`div`,A,[a(`label`,j,f(e(z)(`environmentForm.descriptionLabel`)),1),n(e(pe),{id:`description`,modelValue:W.value.description,"onUpdate:modelValue":i[1]||=e=>W.value.description=e,placeholder:e(z)(`environmentForm.descriptionPlaceholder`),rows:`3`,class:`w-full`,disabled:B.value},null,8,[`modelValue`,`placeholder`,`disabled`])])]),_:1},8,[`legend`]),n(e(g),{legend:e(z)(`environmentForm.appearance`)},{default:d(()=>[a(`div`,M,[a(`div`,N,[a(`label`,P,f(e(z)(`environmentForm.textColorLabel`)),1),a(`div`,be,[n(e(y),{id:`color`,modelValue:W.value.color,"onUpdate:modelValue":i[2]||=e=>W.value.color=e,disabled:B.value},null,8,[`modelValue`,`disabled`]),n(e(_),{modelValue:W.value.color,"onUpdate:modelValue":i[3]||=e=>W.value.color=e,placeholder:`#3B82F6`,class:`color-input`,disabled:B.value},null,8,[`modelValue`,`disabled`])]),a(`small`,xe,f(e(z)(`environmentForm.textColorHint`)),1)]),a(`div`,Se,[a(`label`,Ce,f(e(z)(`environmentForm.bgColorLabel`)),1),a(`div`,we,[n(e(y),{id:`bgColor`,modelValue:W.value.bgColor,"onUpdate:modelValue":i[4]||=e=>W.value.bgColor=e,disabled:B.value},null,8,[`modelValue`,`disabled`]),n(e(_),{modelValue:W.value.bgColor,"onUpdate:modelValue":i[5]||=e=>W.value.bgColor=e,placeholder:`#DBEAFE`,class:`color-input`,disabled:B.value},null,8,[`modelValue`,`disabled`])]),a(`small`,Te,f(e(z)(`environmentForm.bgColorHint`)),1)])])]),_:1},8,[`legend`]),n(e(g),{legend:e(z)(`environmentForm.settings`)},{default:d(()=>[a(`div`,Ee,[a(`div`,De,[a(`label`,Oe,f(e(z)(`environmentForm.defaultLabel`)),1),n(e(le),{id:`defaultSwitch`,modelValue:W.value.default,"onUpdate:modelValue":i[6]||=e=>W.value.default=e,disabled:B.value},null,8,[`modelValue`,`disabled`])]),a(`small`,ke,f(e(z)(`environmentForm.defaultHint`)),1)]),Ze.value?(u(),o(`div`,Ae,[a(`label`,je,f(e(z)(`environmentForm.agentDefaultLabel`)),1),n(e(re),{id:`agentSelect`,modelValue:W.value.agentId,"onUpdate:modelValue":i[7]||=e=>W.value.agentId=e,options:Qe.value,"option-label":`label`,"option-value":`value`,class:`w-full`,disabled:B.value},null,8,[`modelValue`,`options`,`disabled`]),a(`small`,Me,f(e(z)(`environmentForm.agentDefaultHint`)),1)])):m(``,!0)]),_:1},8,[`legend`]),a(`div`,Ne,[n(e(b),{type:`button`,label:e(z)(`environmentForm.cancel`),severity:`secondary`,disabled:B.value,onClick:i[8]||=e=>t.$emit(`cancel`)},null,8,[`label`,`disabled`]),n(e(b),{type:`submit`,label:e(z)(`environmentForm.save`),loading:B.value,disabled:B.value},null,8,[`label`,`loading`,`disabled`])])],32)]),_:1}),n(e(v),{value:`1`},{default:d(()=>[a(`div`,Pe,[G.value.length>0?(u(),p(e(g),{key:0,legend:e(z)(`environmentForm.inheritance`)},{default:d(()=>[a(`div`,Fe,[a(`label`,Ie,f(e(z)(`environmentForm.parentLabel`)),1),n(e(ae),{id:`parents`,modelValue:W.value.parentIds,"onUpdate:modelValue":i[10]||=e=>W.value.parentIds=e,options:$e.value,"option-label":`name`,"option-value":`id`,placeholder:e(z)(`environmentForm.parentPlaceholder`),disabled:B.value||V.value,loading:V.value,class:`w-full`,onShow:i[11]||=e=>K.value=``,onHide:ot},{header:d(()=>[a(`div`,Le,[n(e(_),{modelValue:K.value,"onUpdate:modelValue":i[9]||=e=>K.value=e,placeholder:e(z)(`environmentForm.parentFilter`),class:`w-full`,size:`small`},null,8,[`modelValue`,`placeholder`])])]),_:1},8,[`modelValue`,`options`,`placeholder`,`disabled`,`loading`]),a(`small`,Re,f(e(z)(`environmentForm.parentHint`)),1)])]),_:1},8,[`legend`])):m(``,!0),q.value&&L.environmentId?(u(),o(`div`,ze,[n(w,{"environment-id":L.environmentId,editable:!0,"autocomplete-enabled":!0,"autocomplete-suggestions":e(tt),"autocomplete-meta":e(nt),"resolved-env":J.value?.env??{},"service-builtins":e(et),"show-overrides":!0,"show-delete":!0,"show-add-button":!0,onAutocompleteSearch:e(rt),onVariablesChanged:Z},null,8,[`environment-id`,`autocomplete-suggestions`,`autocomplete-meta`,`resolved-env`,`service-builtins`,`onAutocompleteSearch`]),Q.value.length>0?(u(),p(e(se),{key:0,class:`inherited-accordion`},{default:d(()=>[n(e(ce),{value:`inherited`},{default:d(()=>[n(e(ue),null,{default:d(()=>[a(`span`,F,[i[16]||=a(`i`,{class:`ti ti-arrow-down-left`},null,-1),r(` `+f(e(z)(`environmentForm.inheritedVariables`))+` `,1),n(e(ie),{value:String(Q.value.length),severity:`secondary`,rounded:``},null,8,[`value`])])]),_:1}),n(e(fe),null,{default:d(()=>[n(e(de),{value:Q.value,size:`small`,"show-headers":!1},{default:d(()=>[n(e(S),{style:{width:`35%`}},{body:d(({data:e})=>[a(`div`,Be,[a(`code`,Ve,f(e.key),1),$.value[e.variableId]?(u(),p(ve,{key:0,"environment-id":$.value[e.variableId].environmentId,class:`source-badge`},null,8,[`environment-id`])):m(``,!0)])]),_:1}),n(e(S),{style:{width:`65%`}},{body:d(({data:e})=>[a(`span`,He,[a(`span`,{class:`value-actions`,onClick:i[12]||=h(()=>{},[`stop`])},[e.slot.isSecret?(u(),o(`i`,{key:0,class:s([Y.value.has(e.variableId)?`ti ti-eye-off`:`ti ti-eye`,`action-icon`]),onClick:t=>it(e.variableId)},null,10,Ue)):m(``,!0),a(`i`,{class:s([X.value===e.variableId?`ti ti-check`:`ti ti-copy`,`action-icon`]),onClick:t=>at(e.variableId,e.slot.pre+e.slot.value+e.slot.post)},null,10,We)]),e.slot.isSecret&&!Y.value.has(e.variableId)?(u(),o(`span`,Ge,`***`)):(u(),o(`code`,Ke,f(e.slot.pre)+f(e.slot.value)+f(e.slot.post),1))])]),_:1})]),_:1},8,[`value`])]),_:1})]),_:1})]),_:1})):m(``,!0)])):(u(),o(`div`,qe,[i[17]||=a(`i`,{class:`ti ti-info-circle`},null,-1),a(`span`,null,f(e(z)(`environmentForm.variablesAfterCreate`)),1)]))])]),_:1})]),_:1})]),_:1})]))}}),[[`__scopeId`,`data-v-9667d993`]]);export{L as t};
@@ -0,0 +1 @@
1
+ import{B as e,C as t}from"./reactivity.esm-bundler-BQ9SB2vv.js";import{D as n,b as r,ct as i,g as a,k as o,mt as s,v as c,y as l}from"./runtime-core.esm-bundler-DujKY9QV.js";import{n as u}from"./vue-i18n-o7yraQpR.js";import{g as d,h as f}from"./useApi-s_02lHjl-DZYO2tHU.js";import{H as p,P as m,ft as h}from"./src-DIBHat7I.js";import{r as g}from"./project.store-CNC6_4r4.js";import{n as _}from"./error-DpF7X5iu.js";import{t as v}from"./EnvironmentForm-C5emavNh.js";var y={class:`environment-form-page`},b={key:0,class:`loading`},x={key:1},S=h(o({__name:`EnvironmentFormPage`,setup(o){let{t:h}=u(),S=f(),C=d(),w=g(),T=m(),E=a(()=>S.params.projectId),D=a(()=>S.params.id),O=a(()=>!!D.value),k=t(!1),A=t(null);async function j(){if(O.value){k.value=!0;try{let e=w.getById(D.value);if(!e){console.error(`Environment not found`),N();return}A.value=e}catch(e){console.error(`Failed to load environment:`,_(e))}finally{k.value=!1}}}async function M(e){try{O.value&&A.value?(await w.update({...e,id:A.value.id}),await j(),T.add({severity:`success`,summary:h(`environmentFormPage.updated`),detail:`"${e.name}" ${h(`environmentFormPage.updatedDesc`)}`,life:3e3})):(await w.create(e),T.add({severity:`success`,summary:h(`environmentFormPage.created`),detail:`"${e.name}" ${h(`environmentFormPage.createdDesc`)}`,life:3e3}),N())}catch(e){console.error(`Save failed:`,_(e)),T.add({severity:`error`,summary:h(`environmentFormPage.saveFailed`),detail:_(e)??h(`environmentFormPage.saveFailedDesc`),life:5e3})}}function N(){C.back()}return i(async()=>{w.environments.length===0&&await w.fetchAll(E.value),O.value&&await j()}),(t,i)=>(s(),r(`div`,y,[k.value?(s(),r(`div`,b,[n(e(p))])):(s(),r(`div`,x,[A.value||!O.value?(s(),c(v,{key:0,"project-id":E.value,"environment-id":D.value,"initial-data":A.value,onSave:M,onCancel:N},null,8,[`project-id`,`environment-id`,`initial-data`])):l(``,!0)]))]))}}),[[`__scopeId`,`data-v-4e790e9c`]]);export{S as default};
@@ -0,0 +1 @@
1
+ import{B as e,C as t}from"./reactivity.esm-bundler-BQ9SB2vv.js";import{Ct as n,D as r,Yt as i,_ as a,b as o,bt as s,ct as c,en as l,g as u,k as d,mt as f,nn as p,o as ee,qt as m,rn as h,u as g,v as _,y as v}from"./runtime-core.esm-bundler-DujKY9QV.js";import{C as te,w as y}from"./runtime-dom.esm-bundler-CyEVRK6B.js";import{n as ne}from"./vue-i18n-o7yraQpR.js";import{n as b}from"./project-launch.store-CTmbl8UY.js";import{g as x,h as S}from"./useApi-s_02lHjl-DZYO2tHU.js";import{H as re,P as ie,U as C,V as ae,Y as oe,dt as w,ft as T,j as E}from"./src-DIBHat7I.js";import{n as D,r as O}from"./project.store-CNC6_4r4.js";import{n as k}from"./error-DpF7X5iu.js";import{n as A}from"./page-actions-CSvO7j9F.js";import{t as j}from"./EnvironmentForm-C5emavNh.js";var M={class:`environment-list-page`},N={key:0,class:`loading`},P={key:1,class:`environments-grid`},F={class:`title-row`},I={class:`title-name`},L={class:`badges`},R=[`title`,`aria-label`,`aria-pressed`,`onClick`],z={key:0,class:`description`},se={key:1,class:`parents`},B={class:`var-count`},V={class:`actions`},H=T(d({__name:`EnvironmentListPage`,setup(d){let{t:T}=ne(),H=S(),U=x(),W=O(),G=D(),K=b(),ce=E(),q=ie(),J=u(()=>H.params.projectId),Y=t(!1),X=u(()=>G.getByRef({id:J.value,orgId:K.activeOrgId})??G.getById(J.value)),Z=u(()=>X.value?.activeEnvironmentId),le=u(()=>W.environments.filter(e=>e.scope===`global`||!e.scope)),ue=e=>e.map(e=>W.getById(e)?.name||e);function Q(e){if(e)return e.startsWith(`#`)?e:`#${e}`}c(async()=>{await W.fetchAll(J.value)});async function de(e){try{await W.create(e),Y.value=!1,q.add({severity:`success`,summary:T(`environmentList.created`),detail:T(`environmentList.createdDesc`),life:3e3})}catch(e){q.add({severity:`error`,summary:T(`environmentList.createError`),detail:k(e)??T(`environmentList.createErrorDesc`),life:5e3})}}function $(e){U.push(`/projects/${J.value}/environments/${e}/edit`)}async function fe(e){try{await W.update({id:e,default:!0}),q.add({severity:`success`,summary:T(`environmentList.defaultSet`),detail:T(`environmentList.defaultSetDesc`),life:3e3})}catch(e){q.add({severity:`error`,summary:T(`environmentList.failedToSetDefault`),detail:k(e),life:5e3})}}async function pe(e){try{if(!X.value)return;await G.setActiveEnvironment(X.value,e),await W.fetchAll(J.value),q.add({severity:`success`,summary:T(`environmentList.activated`),life:3e3})}catch(e){q.add({severity:`error`,summary:T(`environmentList.failedToActivate`),detail:k(e),life:5e3})}}function me(e,t){ce.require({message:T(`environmentList.deleteConfirmMsg`,{name:t}),header:T(`environmentList.deleteTitle`),icon:`ti ti-alert-triangle`,accept:async()=>{try{await W.deleteEnv(e),q.add({severity:`success`,summary:T(`environmentList.deleted`),detail:T(`environmentList.deletedDesc`),life:3e3})}catch(e){q.add({severity:`error`,summary:T(`environmentList.failedToDelete`),detail:k(e),life:5e3})}}})}return(t,c)=>{let u=n(`tooltip`);return f(),o(`div`,M,[(f(),_(g,{to:e(A),defer:``},[r(e(w),{icon:`ti ti-plus`,title:e(T)(`environmentList.createButton`),"aria-label":e(T)(`environmentList.createButton`),onClick:c[0]||=e=>Y.value=!0},null,8,[`title`,`aria-label`])],8,[`to`])),e(W).loading?(f(),o(`div`,N,[r(e(re))])):(f(),o(`div`,P,[(f(!0),o(ee,null,s(le.value,t=>(f(),_(e(ae),{key:t.id,class:l([`environment-card`,{active:t.id===Z.value,immutable:t.immutable}]),style:p(t.bgColor||t.color?{"--env-color":Q(t.bgColor)||Q(t.color)}:{}),tabindex:`0`,onClick:e=>$(t.id),onKeydown:te(y(e=>$(t.id),[`self`]),[`enter`])},{title:m(()=>[a(`div`,F,[a(`div`,I,[t.color||t.bgColor?(f(),o(`span`,{key:0,class:`env-swatch`,style:p({backgroundColor:Q(t.bgColor)||Q(t.color),color:Q(t.color)})},null,4)):v(``,!0),a(`span`,null,h(t.name),1)]),a(`div`,L,[t.immutable?(f(),_(e(C),{key:0,severity:`warn`,value:e(T)(`environmentList.immutableBadge`)},null,8,[`value`])):v(``,!0),t.id===Z.value?(f(),_(e(C),{key:1,severity:`success`,value:e(T)(`environmentList.activeBadge`)},null,8,[`value`])):v(``,!0),a(`button`,{type:`button`,class:l([`star-default`,{"star-default--on":t.default}]),title:t.default?e(T)(`environmentList.defaultEnv`):e(T)(`environmentList.setAsDefault`),"aria-label":t.default?e(T)(`environmentList.defaultEnv`):e(T)(`environmentList.setAsDefault`),"aria-pressed":!!t.default,onClick:y(e=>!t.default&&fe(t.id),[`stop`])},[a(`i`,{class:l([`ti`,t.default?`ti-star-filled`:`ti-star`]),"aria-hidden":`true`},null,2)],10,R)])])]),content:m(()=>[t.description?(f(),o(`p`,z,h(t.description),1)):v(``,!0),t.parentIds.length>0?(f(),o(`p`,se,h(e(T)(`environmentList.parents`,{names:ue(t.parentIds).join(`, `)})),1)):v(``,!0),a(`p`,B,h(e(T)(`environmentList.variableCount`,Object.keys(t.variables??{}).length)),1)]),footer:m(()=>[a(`div`,V,[t.id!==Z.value&&!t.immutable?i((f(),_(e(w),{key:0,onClick:y(e=>pe(t.id),[`stop`]),variant:`text`,rounded:``,icon:`ti ti-check`},null,8,[`onClick`])),[[u,e(T)(`environmentList.activateButton`),void 0,{top:!0}]]):v(``,!0),i(r(e(w),{onClick:y(e=>$(t.id),[`stop`]),variant:`text`,rounded:``,icon:`ti ti-pencil`},null,8,[`onClick`]),[[u,e(T)(`environmentList.editButton`),void 0,{top:!0}]]),!t.immutable&&t.id!==Z.value?i((f(),_(e(w),{key:1,onClick:y(e=>me(t.id,t.name),[`stop`]),variant:`text`,rounded:``,icon:`ti ti-trash`,severity:`danger`,"data-testid":`env-delete-btn`},null,8,[`onClick`])),[[u,e(T)(`environmentList.deleteButton`),void 0,{top:!0}]]):v(``,!0)])]),_:2},1032,[`class`,`style`,`onClick`,`onKeydown`]))),128))])),r(e(oe),{visible:Y.value,"onUpdate:visible":c[2]||=e=>Y.value=e,header:e(T)(`environments.createEnvironment`),style:{width:`600px`},modal:!1},{default:m(()=>[r(j,{"project-id":J.value,onSave:de,onCancel:c[1]||=e=>Y.value=!1},null,8,[`project-id`])]),_:1},8,[`visible`,`header`])])}}}),[[`__scopeId`,`data-v-3c91161e`]]);export{H as default};
@@ -1 +1 @@
1
- import{B as e}from"./reactivity.esm-bundler-BQ9SB2vv.js";import{Ct as t,Yt as n,_ as r,b as i,en as a,k as o,mt as s,qt as c,rn as l,v as u,y as d}from"./runtime-core.esm-bundler-DujKY9QV.js";import{Z as f,ft as p}from"./src--GO-VSJ0.js";var m={key:1,class:`ti ti-lock flag-chip__lock`,"aria-hidden":`true`},h=p(o({__name:`FlagChip`,props:{modelValue:{type:Boolean},label:{},icon:{},hint:{},locked:{type:Boolean},disabled:{type:Boolean}},emits:[`update:modelValue`],setup(o,{emit:p}){let h=o,g=p;function _(e){h.locked||h.disabled||g(`update:modelValue`,e)}return(p,h)=>{let g=t(`tooltip`);return n((s(),u(e(f),{class:a([`flag-chip`,{"flag-chip--on":o.modelValue,"flag-chip--locked":o.locked||o.disabled}]),"model-value":o.modelValue,disabled:o.locked||o.disabled,"onUpdate:modelValue":_},{default:c(()=>[o.icon?(s(),i(`i`,{key:0,class:a(o.icon),"aria-hidden":`true`},null,2)):d(``,!0),r(`span`,null,l(o.label),1),o.locked?(s(),i(`i`,m)):d(``,!0)]),_:1},8,[`class`,`model-value`,`disabled`])),[[g,o.hint?{value:o.hint,showDelay:0,hideDelay:0}:void 0,void 0,{top:!0}]])}}}),[[`__scopeId`,`data-v-aa86d6f2`]]);export{h as t};
1
+ import{B as e}from"./reactivity.esm-bundler-BQ9SB2vv.js";import{Ct as t,Yt as n,_ as r,b as i,en as a,k as o,mt as s,qt as c,rn as l,v as u,y as d}from"./runtime-core.esm-bundler-DujKY9QV.js";import{Z as f,ft as p}from"./src-DIBHat7I.js";var m={key:1,class:`ti ti-lock flag-chip__lock`,"aria-hidden":`true`},h=p(o({__name:`FlagChip`,props:{modelValue:{type:Boolean},label:{},icon:{},hint:{},locked:{type:Boolean},disabled:{type:Boolean}},emits:[`update:modelValue`],setup(o,{emit:p}){let h=o,g=p;function _(e){h.locked||h.disabled||g(`update:modelValue`,e)}return(p,h)=>{let g=t(`tooltip`);return n((s(),u(e(f),{class:a([`flag-chip`,{"flag-chip--on":o.modelValue,"flag-chip--locked":o.locked||o.disabled}]),"model-value":o.modelValue,disabled:o.locked||o.disabled,"onUpdate:modelValue":_},{default:c(()=>[o.icon?(s(),i(`i`,{key:0,class:a(o.icon),"aria-hidden":`true`},null,2)):d(``,!0),r(`span`,null,l(o.label),1),o.locked?(s(),i(`i`,m)):d(``,!0)]),_:1},8,[`class`,`model-value`,`disabled`])),[[g,o.hint?{value:o.hint,showDelay:0,hideDelay:0}:void 0,void 0,{top:!0}]])}}}),[[`__scopeId`,`data-v-aa86d6f2`]]);export{h as t};
@@ -0,0 +1,4 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/trpc-BAZGRZBD.js","assets/rolldown-runtime-Dd_uD5pT.js","assets/reactivity.esm-bundler-BQ9SB2vv.js","assets/runtime-core.esm-bundler-DujKY9QV.js","assets/preload-helper-BZ1Pz5am.js","assets/auth-BT_jf-5e.js","assets/settings-scope-CyWMCjRY.js","assets/project.store-CNC6_4r4.js","assets/project-launch.store-CTmbl8UY.js","assets/error-DpF7X5iu.js"])))=>i.map(i=>d[i]);
2
+ import{B as e,C as t}from"./reactivity.esm-bundler-BQ9SB2vv.js";import{Ct as n,D as r,Ht as i,Yt as a,_ as o,b as s,bt as ee,ct as c,en as te,ft as ne,g as l,k as re,mt as u,o as ie,qt as d,rn as f,tt as ae,v as p,y as m}from"./runtime-core.esm-bundler-DujKY9QV.js";import{C as oe,w as h}from"./runtime-dom.esm-bundler-CyEVRK6B.js";import{n as se}from"./vue-i18n-o7yraQpR.js";import{a as ce,i as g,n as _}from"./project-launch.store-CTmbl8UY.js";import{g as le,h as ue}from"./useApi-s_02lHjl-DZYO2tHU.js";import{C as de,J as fe,S as pe,Y as v,dt as y,ft as b,j as me,q as he}from"./src-DIBHat7I.js";import{n as ge}from"./scenario.store-BIFQPXgl.js";import{r as x}from"./trpc-BAZGRZBD.js";import{t as _e}from"./preload-helper-BZ1Pz5am.js";import{r as ve,t as ye}from"./cloud-auth-D_am4FlK.js";import{a as be,n as S,o as xe,r as Se,s as Ce}from"./cloud-client-CzPdZLDq.js";import{a as we,c as Te,i as Ee,n as De,o as Oe,t as ke}from"./composables-DiiOYol8.js";import{r as Ae,t as je}from"./AiChatModals-C-hXImkO.js";import{t as Me}from"./useAiChatDrawer-D_ofn8Eo.js";import{t as Ne}from"./shared-sse-Dcj_cNvF.js";import{t as Pe}from"./useCloudOrg-EnXFBwt1.js";import{i as Fe,r as Ie,t as Le}from"./src-CrNi4Pjg.js";import{t as Re}from"./SendToChatDialog-BdWKjYmv.js";var ze=g(`kanban-queue`,()=>{let e=_();function n(){return{projectId:e.activeProjectId??void 0,orgId:e.activeOrgId}}let r=t({items:[],running:[],maxConcurrent:1}),i=null;async function a(){i||=x.kanbanQueue.onChanged.subscribe(void 0,{onData(e){r.value=e}})}function o(){i?.unsubscribe(),i=null}function s(e,t){return r.value.items.some(n=>n.boardId===e&&n.cardId===t)||r.value.running.some(n=>n.boardId===e&&n.cardId===t)}function ee(e,t){let n=r.value.items.find(n=>n.boardId===e&&n.cardId===t);return n?n.id:r.value.running.find(n=>n.boardId===e&&n.cardId===t)?.id??null}async function c(e){await x.kanbanQueue.add.mutate({...e,...n()})}async function te(e){await x.kanbanQueue.addColumn.mutate({...e,...n()})}async function ne(e){await x.kanbanQueue.remove.mutate({itemId:e})}async function l(){await x.kanbanQueue.stopAll.mutate()}async function re(e){await x.kanbanQueue.setMaxConcurrent.mutate({max:e})}return{state:r,init:a,destroy:o,isCardInQueue:s,getCardQueueItemId:ee,addCard:c,addColumn:te,removeItem:ne,stopAll:l,setMaxConcurrent:re}}),Be={key:0,class:`kanban-board-host`},Ve={class:`kb-boardmenu`},He={class:`upgrade-banner__cta`},Ue=[`onClick`],We={key:0,class:`kb-card__ai-badge kb-card__ai-badge--companion`},Ge={key:1,class:`kb-card__ai-badge kb-card__ai-badge--streaming`},Ke={key:2,class:`kb-card__ai-badge kb-card__ai-badge--unread`},qe={class:`kb-boardform`},Je={class:`kb-boardform__field`},Ye={for:`kb-board-name`},Xe={class:`kb-boardform__field`},Ze={for:`kb-board-desc`},Qe={class:`kb-boardform__field`},$e={for:`kb-board-instructions`},et={class:`kb-boardform__hint`},tt={class:`kb-dialog__footer`},nt={class:`kb-populate`},rt={class:`kb-populate__hint`},it={class:`kb-dialog__footer`},at={class:`kb-populate`},ot={class:`kb-populate__hint`},st={class:`kb-dialog__footer`},ct={key:0,class:`kb-queue-panel`},lt={class:`kb-queue-panel__header`},ut={class:`kb-queue-panel__title`},dt={class:`kb-queue-panel__concurrency`},ft={class:`kb-queue-panel__concurrency-label`},pt={class:`kb-queue-panel__concurrency-ctrl`},mt={key:0,class:`kb-queue-panel__section`},ht={class:`kb-queue-panel__section-title`},gt={class:`kb-queue-item__title`},_t={key:1,class:`kb-queue-panel__section`},vt={class:`kb-queue-panel__section-title`},yt={class:`kb-queue-item__title`},bt={key:2,class:`kb-queue-panel__empty`},xt={class:`kb-queue-panel__footer`},St={class:`kb-queue-col-dialog`},Ct={class:`kb-queue-col-dialog__field`},wt={for:`kanban-queue-runner`},Tt={class:`kb-queue-col-dialog__field`},Et={for:`kanban-queue-scenario`},Dt={class:`kb-dialog__footer`},Ot={key:1,class:`kanban-board-loading`},C=b(re({__name:`KanbanBoardPage`,props:{id:{}},setup(re){let g=re,{t:_}=se(),b=le(),x=ue(),{orgId:C,orgSlug:w,cloudUser:kt,members:At,available:jt}=Pe(),Mt=me();function Nt(e,t){return C.value?Ce(C.value,e,t):Promise.resolve(null)}function Pt(e){return be(e.id,C.value??``)}function Ft(e){return xe(e.id,e.contentType,C.value??``)}function It(e){return ye(e,{orgId:C.value})}let Lt=l(()=>At.value.map(e=>({userId:e.userId,name:e.name})));function Rt(e,t){return t?_(`kanban.board.${e}`,t):_(`kanban.board.${e}`)}let T=Ee(S,C,{streamUrl:Se,streamFactory:Ne,onConversationChanged:zt}),E=De(S,C);function zt(e){for(let t of e.cardIds)E.byCard.value[t]&&E.load(e.boardId,t)}function Bt(e){let t=T.activeBoard.value?.id;return t?E.load(t,e):Promise.resolve([])}function Vt(e,t,n){let r=T.activeBoard.value?.id;return r?E.link(r,e,t,n):Promise.resolve(!1)}function Ht(e,t){let n=T.activeBoard.value?.id;return n?E.resync(n,e,t):Promise.resolve(!1)}function Ut(e,t){let n=T.activeBoard.value?.id;return n?E.unlink(n,e,t):Promise.resolve(!1)}let Wt=Oe(S,C),{teams:Gt,myTeamIds:Kt,refresh:qt,refreshMine:Jt}=Te(S);i(C,e=>{e&&(qt(e),Jt(e))},{immediate:!0});let Yt=l(()=>{let e=At.value.find(e=>e.userId===kt.value?.id)?.role;return ke(e)?Gt.value.map(e=>e.id):Kt.value}),Xt=l(()=>Wt.templates.value.map(e=>({id:e.id,name:e.name,content:e.content}))),D=t(null),O=l(()=>T.activeBoard.value),k=l(()=>x.path.startsWith(`/issues/`)?`issues`:`kanban`),A=l(()=>`/${k.value}`),Zt=l(()=>`${k.value}-board`),Qt=l(()=>`${k.value}-card`),j=l(()=>O.value?.columns??[]),M=l(()=>!T.canWrite.value||!!O.value?.archived);i(jt,e=>{e||b.push(A.value)},{immediate:!0}),i([C,()=>g.id],async([e,t])=>{if(!e||!t)return;if(await T.openBoard(t),!T.activeBoard.value){b.push(A.value);return}let n=T.activeBoard.value.defaultView===`list`?`issues`:`kanban`;if(n!==k.value){let e=typeof x.params.cardId==`string`?x.params.cardId:``;b.replace({name:e?`${n}-card`:`${n}-board`,params:e?{id:t,cardId:e}:{id:t},query:x.query});return}await ae(),nn()},{immediate:!0});let N=l(()=>typeof x.params.cardId==`string`?x.params.cardId:``),P=!1,$t=!1;function en(e){for(let t of j.value){let n=t.cards.find(t=>t.id===e);if(n)return{colId:t.id,card:n}}return null}async function tn(e){let t=await T.loadCard(e);if(t&&N.value===e){P=!0;try{let e=t.card.archivedAt?t.card.archivedFrom?.columnId??``:t.columnId;D.value?.openCardEditor(e,t.card)}finally{P=!1}}}function nn(){let e=typeof x.query.card==`string`?x.query.card:``;if(e){b.replace({name:Qt.value,params:{id:g.id,cardId:e},query:{...x.query,card:void 0}});return}let t=N.value;if(t!==(D.value?.editingCard?.card.id??``)){P=!0;try{if(!t){D.value?.closeCardEditor();return}let e=en(t);if(e){D.value?.openCardEditor(e.colId,e.card);return}tn(t)}finally{P=!1}}}function rn(e){if(P)return;let t=e?.card.id??``;if(t!==N.value){if(t){$t=!0,b.push({name:Qt.value,params:{id:g.id,cardId:t}});return}if($t){$t=!1,b.back();return}b.replace({name:Zt.value,params:{id:g.id}})}}i(N,()=>nn());function an(e,t,n){return T.addComment(e,t,n)}async function on(e){T.markDirty(),await sn(e)||await T.discardLocalEdits()}async function sn(e){switch(e.kind){case`column-add`:return T.addColumn(e.title);case`column-rename`:return T.renameColumn(e.columnId,e.title);case`column-set-done`:return T.setColumnDone(e.columnId,e.done);case`column-delete`:return T.deleteColumn(e.columnId);case`columns-reorder`:return T.reorderColumns(e.columnIds);case`group-add`:return!!await T.addColumnGroup(e.title,{...e.color?{color:e.color}:{},...e.parentId?{parentId:e.parentId}:{}});case`group-update`:return T.updateColumnGroup(e.groupId,e.patch);case`group-delete`:return T.deleteColumnGroup(e.groupId);case`group-assign`:return T.assignToColumnGroup(e.member,e.groupId);case`card-add`:return!!await T.addCard(e.columnId,{id:e.card.id,title:e.card.title,markdown:e.card.markdown,...e.card.priority===void 0?{}:{priority:e.card.priority},...e.card.groups?.length?{groups:e.card.groups}:{},...e.card.color?{color:e.card.color}:{},...e.card.deadline?{deadline:e.card.deadline}:{},...e.card.attachments?.length?{attachments:e.card.attachments}:{},placement:e.placement});case`card-update`:return T.updateCard(e.cardId,e.patch);case`card-delete`:return T.deleteCard(e.cardId);case`card-archive`:return T.archiveCard(e.cardId);case`card-unarchive`:return T.unarchiveCard(e.cardId,e.toColumnId);case`card-move`:return T.moveCard(e.cardId,e.toColumnId,e.toIndex);case`card-history`:return!0}}async function cn(e){O.value&&await T.setColumnSubscription(O.value.id,e.columnId,e.subscription,e.teamId)}function ln(){w.value&&window.open(`${ve()}/app/${w.value}/settings/org/billing`,`_blank`,`noopener`)}let F=ge(),{claudeCodeAvailable:un,codexAvailable:dn}=ce(F),I=Me(),L=t(!1),fn=t(null),pn=t(null),R=``,z=null;c(()=>{F.init()});function mn(e){return(e.conversationEvents??e.history??[]).filter(e=>e.type===`conversation_started`||e.type===`scenario_started`).map(e=>{let t=e.detail??``;return t.includes(` — `)?t.split(` — `).pop():t}).filter(Boolean)}function hn(e){return e&&F.conversations.some(t=>t.id===e)?e:null}function gn(e){return e.type===`comment`?hn(e.conversationId):e.type!==`conversation_started`&&e.type!==`scenario_started`||!e.detail?null:hn(e.detail.includes(` — `)?e.detail.split(` — `).pop():e.detail)}function _n(e){if(!O.value)return null;let t=mn(e),n=B.state.running.filter(t=>t.cardId===e.id);return[...t,...n.map(e=>e.conversationId)].some(e=>F.isCompanionThinkingFor(e))?`companion`:n.length>0?`streaming`:B.state.items.some(t=>t.cardId===e.id)?`unread`:t.some(e=>F.streamingConvIds.has(e))?`streaming`:t.some(e=>F.unreadConvIds.has(e))?`unread`:null}function vn(e){F.selectConversation(e),D.value?.closeCardEditor(),I.open()}async function yn(e,t,n){z&&await T.addCardEvent(z.card.id,t,n??e)}function bn(e){z={colId:e.colId,card:e.card};let t=e.draft.title||e.card.title||``,n=e.draft.markdown||e.card.markdown||``;R=n?`${t}\n\n${n}`:t,D.value?.saveCard(),L.value=!0}function xn(e){if(!O.value)return;let t=e.draft.title||e.card.title||_(`kanban.board.card.untitled`),n=j.value.find(t=>t.id===e.colId)?.title??``,r=(e.draft.markdown??``).trim(),i=w.value?`${ve()}/app/${w.value}/${k.value}/${O.value.id}/card/${e.card.id}`:`${window.location.origin}/${k.value}/${O.value.id}/card/${e.card.id}`,a=[`📋 ${t}`];n&&a.push(`📍 ${_(`kanban.board.editor.columnLabel`,{column:n})}`),r&&a.push(r),a.push(`🔗 [${_(`kanban.board.editor.openCardLink`)}](${i})`),pn.value?.open(a.join(`
3
+
4
+ `))}function Sn(){return{kanbanBoardId:O.value?.id,kanbanCardId:z?.card.id}}async function Cn(e,t){let n=R,r=await F.createConversation({title:`Kanban: ${z?.card.title||`Card`}`,runner:e,providerId:t,...Sn()}),i=r?yn(r.id,`conversation_started`):null;D.value?.closeCardEditor(),n?I.openWithKanbanContext(n):I.open(),await i}function wn(e,t,n){L.value=!1,fn.value?.showScenarioDialog(e,R,t,n??void 0)}async function Tn(e,t){L.value=!1,await Cn(e===`keep`?void 0:e,t??void 0)}async function En(e,t,n,r){let i=t||R,a=await F.createConversation({scenarioId:e,scenarioInput:i,title:`Kanban: ${z?.card.title||`Card`}`,...Sn()});if(i&&a){let t=n!==`keep`||r.trim()?{...n===`keep`?{}:{runnerOverride:n},...r.trim()?{modelOverride:r.trim()}:{}}:void 0;F.startScenarioRun(a.id,e,i,void 0,t)}let o=i&&a?yn(a.id,`scenario_started`,`Scenario run — ${a.id}`):null;D.value?.closeCardEditor(),I.open(),await o}let B=ze(),V=t(!1),H=t(!1),Dn=t(``),On=t([]),U=t(``),W=t(``),kn=t([]),G=l(()=>B.state.items.length+B.state.running.length);c(async()=>{B.init();try{let{trpc:e}=await _e(async()=>{let{trpc:e}=await import(`./trpc-BAZGRZBD.js`).then(e=>e.i);return{trpc:e}},__vite__mapDeps([0,1,2,3,4,5])),{settingsScope:t}=await _e(async()=>{let{settingsScope:e}=await import(`./settings-scope-CyWMCjRY.js`).then(e=>e.n);return{settingsScope:e}},__vite__mapDeps([6,1,3,2,7,8,0,4,5,9])),n=await e.scenario.list.query(t());kn.value=n.map(e=>({id:e.id,name:e.name}))}catch{}}),ne(()=>B.destroy());function An(e){Dn.value=e.id,On.value=e.cards.map(e=>e.id),U.value=``,W.value=``,H.value=!0}async function jn(){O.value&&(await B.addColumn({boardId:O.value.id,columnId:Dn.value,cardIds:On.value,runner:U.value||void 0,scenarioId:W.value||void 0}),H.value=!1)}async function Mn(e){if(!O.value)return;let t=B.getCardQueueItemId(O.value.id,e.id);t?await B.removeItem(t):await B.addCard({boardId:O.value.id,cardId:e.id})}function Nn(e){return j.value.flatMap(e=>e.cards).find(t=>t.id===e)?.title??e}let K=t(!1),q=t(!1),J=t(``);async function Pn(e,t){if(!O.value||!J.value.trim())return;let n=J.value.trim(),r=await F.createConversation({title:`Kanban populate: ${O.value.name.slice(0,30)}`,runner:e,providerId:t,kanbanBoardId:O.value.id});if(q.value=!1,J.value=``,r){if(e===`claude-code`||e===`codex`){I.openWithPopulateContext(n);return}I.openPopulate(),await ae(),F.send(n,()=>{})}}async function Fn(e,t,n){if(!O.value||!J.value.trim())return;let r=J.value.trim(),i=await F.createConversation({title:`Kanban populate: ${O.value.name.slice(0,30)}`,scenarioId:e,scenarioInput:r,...t===`keep`?{}:{runner:t},...n?{providerId:n}:{},kanbanBoardId:O.value.id});q.value=!1,J.value=``,i&&(F.startScenarioRun(i.id,e,r,void 0,t===`keep`?void 0:{runnerOverride:t}),I.open())}let In=t([]);async function Ln(){let e=await T.loadBoardColumns();In.value=e.filter(e=>e.id!==O.value?.id)}i(()=>[C.value,O.value?.id].join(`:`),()=>{Ln()},{immediate:!0});async function Rn(e,t,n){let r=await T.moveCardToBoard(e,t,n);return r&&Ln(),r}function zn(e){b.push({name:`kanban-card`,params:{id:e.boardId,cardId:e.cardId}})}async function Bn(e,t){return T.setCardParent(e,t?{boardId:g.id,cardId:t}:null)}let Y=t(!1),X=t({name:``,description:``,instructions:``});function Vn(){let e=O.value;e&&(X.value={name:e.name,description:e.description??``,instructions:e.instructions??``},Y.value=!0)}async function Hn(){let e=O.value;e&&X.value.name.trim()&&await T.updateBoardById(e.id,{name:X.value.name.trim(),description:X.value.description.trim(),instructions:X.value.instructions.trim()})&&(Y.value=!1)}function Un(){let e=O.value;if(!e)return;let t=!e.archived;Mt.require({message:_(t?`kanban.board.archiveBoard.confirm`:`kanban.board.archiveBoard.restoreConfirm`,{name:e.name}),header:_(t?`kanban.board.archiveBoard.header`:`kanban.board.archiveBoard.restoreHeader`),icon:`ti ti-inbox`,accept:async()=>{await T.updateBoardById(e.id,{archived:t})&&t&&await b.push(A.value)}})}function Wn(){let e=O.value;if(!e)return;let t=A.value;Mt.require({message:_(`kanban.list.dialogs.confirmDeleteMessage`,{name:e.name}),header:_(`kanban.list.dialogs.confirmDeleteHeader`),icon:`ti ti-trash`,acceptProps:{severity:`danger`},accept:async()=>{await T.deleteBoard(e.id)&&await b.push(t)}})}let Gn=we(S,C),Z=t(!1),Q=t(``),Kn=t(!1);function qn(){Q.value=O.value?.name??``,Kn.value=!1,Z.value=!0}async function Jn(){let e=O.value;e&&Q.value.trim()&&await Gn.createTemplate(Q.value.trim(),e.instructions??``,[...e.columns].sort((e,t)=>e.order-t.order).map(e=>({title:e.title,...e.groupId?{groupId:e.groupId}:{}})),(e.columnGroups??[]).map(e=>({id:e.id,title:e.title,...e.color?{color:e.color}:{},...e.parentId?{parentId:e.parentId}:{}})))&&(Kn.value=!0,Z.value=!1)}let Yn=t(null),Xn=t(null),Zn=(e,t)=>t?_(`kanban.list.${e}`,t):_(`kanban.list.${e}`),Qn=t(null),$n=(e,t)=>t?_(`kanban.${e}`,t):_(`kanban.${e}`);function er(e){Qn.value=null,b.push({name:Qt.value,params:{id:g.id,cardId:e}})}function $(e){Yn.value?.hide(),e()}function tr(){J.value=``,K.value=!0}function nr(){J.value.trim()&&(K.value=!1,F.fetchProviders(),F.checkCliAvailability(),q.value=!0)}async function rr(e,t){await Pn(e===`keep`?void 0:e,t??void 0)}async function ir(e,t,n){await Fn(e,t,n)}return i(()=>F.streamingConvIds.size,()=>{T.refreshActiveBoard()}),(t,i)=>{let c=n(`tooltip`);return O.value?(u(),s(`div`,Be,[r(e(Fe),{ref_key:`boardRef`,ref:D,columns:j.value,"column-groups":O.value.columnGroups??[],name:O.value.name,"board-id":O.value.id,view:O.value.defaultView,"read-only":M.value,templates:Xt.value,t:Rt,"resolve-conversation-id":gn,"current-user-id":e(kt)?.id,members:Lt.value,"column-subscriptions":O.value.columnSubscriptions??{},teams:e(Gt),"manageable-team-ids":Yt.value,"column-team-subscriptions":O.value.columnTeamSubscriptions??{},"avatar-url":It,"upload-image":Nt,"fetch-attachment":Ft,"delete-attachment":Pt,"load-history":e(T).loadCardHistory,histories:e(T).cardHistories.value,"add-comment":an,"edit-comment":e(T).updateComment,"remove-comment":e(T).deleteComment,"move-card":e(T).moveCard,"other-boards":In.value,"move-card-to-board":Rn,"card-links":e(T).cardLinks.value,"linked-cards":e(T).linkedCards.value,"set-card-parent":Bn,"load-placements":e(T).loadCardPlacements,"place-card":e(T).addCardPlacement,"unplace-card":e(T).removeCardPlacement,"search-org-cards":e(T).searchOrgCards,"can-place":e(T).canWrite.value,"conversation-integrations":e(E).integrations.value,"card-conversations":e(E).byCard.value,"load-conversations":Bt,"search-conversations":e(E).search,"link-conversation":Vt,"unlink-conversation":Ut,"resync-conversation":Ht,"archived-cards":e(T).archivedCards.value,"loading-archive":e(T).loadingArchive.value,"archive-truncated":e(T).archiveTruncated.value,"search-matches":e(T).searchMatches.value,"search-truncated":e(T).searchTruncated.value,onIntent:on,onLoadArchive:e(T).loadArchivedCards,onSearchCards:e(T).searchCards,onBack:i[11]||=t=>e(b).push(A.value),onOpenConversation:vn,onCardOpen:rn,onUpdateColumnSubscription:cn,onOpenLinkedCard:zn},{"header-actions":d(()=>[G.value>0?(u(),p(e(y),{key:0,label:e(_)(`kanban.board.queue.panelHeader`),icon:`ti ti-list`,severity:`secondary`,variant:`outlined`,size:`small`,badge:String(G.value),"badge-severity":`warn`,onClick:i[0]||=e=>V.value=!V.value},null,8,[`label`,`badge`])):m(``,!0),O.value?a((u(),p(e(y),{key:1,icon:`ti ti-chart-line`,variant:`text`,rounded:``,size:`small`,"aria-label":e(_)(`kanban.list.flow.open`),onClick:i[1]||=e=>Xn.value=O.value},null,8,[`aria-label`])),[[c,e(_)(`kanban.list.flow.open`),void 0,{bottom:!0}]]):m(``,!0),O.value?a((u(),p(e(y),{key:2,icon:`ti ti-history`,variant:`text`,rounded:``,size:`small`,"aria-label":e(_)(`kanban.list.history.open`),onClick:i[2]||=e=>Qn.value=O.value},null,8,[`aria-label`])),[[c,e(_)(`kanban.list.history.open`),void 0,{bottom:!0}]]):m(``,!0),e(T).canWrite.value?(u(),p(e(y),{key:3,icon:`ti ti-dots-vertical`,severity:`secondary`,variant:`outlined`,size:`small`,title:e(_)(`kanban.board.actions.menu`),"aria-label":e(_)(`kanban.board.actions.menu`),onClick:i[3]||=e=>Yn.value?.toggle(e)},null,8,[`title`,`aria-label`])):m(``,!0),r(e(de),{ref_key:`boardMenu`,ref:Yn},{default:d(()=>[o(`div`,Ve,[M.value?m(``,!0):(u(),s(`button`,{key:0,class:`kb-boardmenu__item`,onClick:i[4]||=e=>$(Vn)},[i[33]||=o(`i`,{class:`ti ti-pencil`},null,-1),o(`span`,null,f(e(_)(`kanban.board.editBoard.action`)),1)])),M.value?m(``,!0):(u(),s(`button`,{key:1,class:`kb-boardmenu__item`,onClick:i[5]||=e=>$(tr)},[i[34]||=o(`i`,{class:`ti ti-sparkles`},null,-1),o(`span`,null,f(e(_)(`kanban.board.aiPopulate`)),1)])),!M.value&&O.value?.defaultView!==`list`?(u(),s(`button`,{key:2,class:`kb-boardmenu__item`,onClick:i[6]||=e=>$(qn)},[i[35]||=o(`i`,{class:`ti ti-bookmark`},null,-1),o(`span`,null,f(e(_)(`kanban.board.saveTemplate.action`)),1)])):m(``,!0),o(`button`,{class:`kb-boardmenu__item`,onClick:i[7]||=e=>$(Un)},[i[36]||=o(`i`,{class:`ti ti-inbox`},null,-1),o(`span`,null,f(O.value?.archived?e(_)(`kanban.list.restore`):e(_)(`kanban.list.archive`)),1)]),o(`button`,{class:`kb-boardmenu__item kb-boardmenu__item--danger`,onClick:i[8]||=e=>$(Wn)},[i[37]||=o(`i`,{class:`ti ti-trash`},null,-1),o(`span`,null,f(e(_)(`kanban.board.deleteBoard.action`)),1)])])]),_:1},512),r(e(Ie),{board:Xn.value,load:e(T).boardFlow,t:Zn,onClose:i[9]||=e=>Xn.value=null},null,8,[`board`,`load`]),r(e(Le),{board:Qn.value,load:e(T).boardHistory,t:$n,onClose:i[10]||=e=>Qn.value=null,onOpenCard:er},null,8,[`board`,`load`])]),banner:d(()=>[e(T).planLocked.value?(u(),s(`a`,{key:0,class:`upgrade-banner`,href:`#`,onClick:h(ln,[`prevent`])},[o(`span`,null,f(e(_)(`kanban.cloud.readOnlyNotice`)),1),o(`span`,He,f(e(_)(`kanban.cloud.upgradeCta`)),1)])):m(``,!0)]),"column-actions":d(({column:t})=>[M.value?m(``,!0):a((u(),p(e(y),{key:0,icon:`ti ti-list`,variant:`text`,rounded:``,size:`small`,onClick:h(e=>An(t),[`stop`])},null,8,[`onClick`])),[[c,e(_)(`kanban.board.queue.addColumnTooltip`),void 0,{bottom:!0}]])]),"card-actions":d(({card:t})=>[M.value?m(``,!0):a((u(),s(`button`,{key:0,class:te([`kb-card__queue-btn`,{"kb-card__queue-btn--active":O.value&&e(B).isCardInQueue(O.value.id,t.id)}]),onClick:h(e=>Mn(t),[`stop`])},[...i[38]||=[o(`i`,{class:`ti ti-list`},null,-1)]],10,Ue)),[[c,O.value&&e(B).isCardInQueue(O.value.id,t.id)?e(_)(`kanban.board.queue.tooltipInQueue`):e(_)(`kanban.board.queue.tooltip`),void 0,{bottom:!0}]])]),"card-badges":d(({card:t})=>[_n(t)===`companion`?a((u(),s(`span`,We,null,512)),[[c,e(_)(`kanban.board.aiStatus.companion`),void 0,{bottom:!0}]]):_n(t)===`streaming`?a((u(),s(`span`,Ge,null,512)),[[c,e(_)(`kanban.board.aiStatus.streaming`),void 0,{bottom:!0}]]):_n(t)===`unread`?a((u(),s(`span`,Ke,null,512)),[[c,e(_)(`kanban.board.aiStatus.unread`),void 0,{bottom:!0}]]):m(``,!0)]),"card-editor-actions":d(({card:t,colId:n,draft:i})=>[r(e(y),{label:e(_)(`kanban.board.editor.launchAi`),icon:`ti ti-sparkles`,severity:`secondary`,variant:`outlined`,size:`small`,disabled:M.value,onClick:e=>bn({card:t,colId:n,draft:i})},null,8,[`label`,`disabled`,`onClick`]),r(e(y),{label:e(_)(`kanban.board.editor.sendToChat`),icon:`ti ti-messages`,severity:`secondary`,variant:`outlined`,size:`small`,onClick:e=>xn({card:t,colId:n,draft:i})},null,8,[`label`,`onClick`])]),_:1},8,`columns.column-groups.name.board-id.view.read-only.templates.current-user-id.members.column-subscriptions.teams.manageable-team-ids.column-team-subscriptions.load-history.histories.edit-comment.remove-comment.move-card.other-boards.card-links.linked-cards.load-placements.place-card.unplace-card.search-org-cards.can-place.conversation-integrations.card-conversations.search-conversations.archived-cards.loading-archive.archive-truncated.search-matches.search-truncated.onLoadArchive.onSearchCards`.split(`.`)),r(e(v),{visible:L.value,header:e(_)(`kanban.board.launchAiDialog.header`),modal:!0,style:{width:`700px`,maxHeight:`80vh`},"onUpdate:visible":i[12]||=e=>{e||(L.value=!1)}},{default:d(()=>[r(Ae,{compact:``,onSelectScenario:wn,onSkip:Tn})]),_:1},8,[`visible`,`header`]),r(je,{ref_key:`launchModalsRef`,ref:fn,onConfirmScenarioStart:En},null,512),r(Re,{ref_key:`sendToChatRef`,ref:pn},null,512),r(e(v),{visible:Y.value,header:e(_)(`kanban.board.editBoard.header`),modal:!0,style:{width:`550px`},"onUpdate:visible":i[17]||=e=>{e||(Y.value=!1)}},{footer:d(()=>[o(`div`,tt,[r(e(y),{label:e(_)(`actions.cancel`),variant:`text`,onClick:i[16]||=e=>Y.value=!1},null,8,[`label`]),r(e(y),{label:e(_)(`kanban.board.editBoard.save`),icon:`ti ti-check`,disabled:!X.value.name.trim(),onClick:Hn},null,8,[`label`,`disabled`])])]),default:d(()=>[o(`div`,qe,[o(`div`,Je,[o(`label`,Ye,f(e(_)(`kanban.list.nameLabel`)),1),r(e(fe),{id:`kb-board-name`,modelValue:X.value.name,"onUpdate:modelValue":i[13]||=e=>X.value.name=e,autofocus:``,class:`w-full`},null,8,[`modelValue`])]),o(`div`,Xe,[o(`label`,Ze,f(e(_)(`kanban.list.descriptionLabel`)),1),r(e(he),{id:`kb-board-desc`,modelValue:X.value.description,"onUpdate:modelValue":i[14]||=e=>X.value.description=e,rows:`3`,class:`w-full`},null,8,[`modelValue`])]),o(`div`,Qe,[o(`label`,$e,f(e(_)(`kanban.list.instructionsLabel`)),1),r(e(he),{id:`kb-board-instructions`,modelValue:X.value.instructions,"onUpdate:modelValue":i[15]||=e=>X.value.instructions=e,rows:`6`,class:`w-full`,placeholder:e(_)(`kanban.list.instructionsPlaceholder`)},null,8,[`modelValue`,`placeholder`]),o(`small`,et,f(e(_)(`kanban.list.instructionsHint`)),1)])])]),_:1},8,[`visible`,`header`]),r(e(v),{visible:Z.value,header:e(_)(`kanban.board.saveTemplate.header`),modal:!0,style:{width:`450px`},"onUpdate:visible":i[20]||=e=>{e||(Z.value=!1)}},{footer:d(()=>[o(`div`,it,[r(e(y),{label:e(_)(`actions.cancel`),variant:`text`,onClick:i[19]||=e=>Z.value=!1},null,8,[`label`]),r(e(y),{label:e(_)(`kanban.board.saveTemplate.save`),icon:`ti ti-bookmark`,disabled:!Q.value.trim(),onClick:Jn},null,8,[`label`,`disabled`])])]),default:d(()=>[o(`div`,nt,[o(`p`,rt,f(e(_)(`kanban.board.saveTemplate.hint`,{count:O.value?.columns.length??0})),1),r(e(fe),{modelValue:Q.value,"onUpdate:modelValue":i[18]||=e=>Q.value=e,class:`w-full`,autofocus:``,placeholder:e(_)(`kanban.board.saveTemplate.namePlaceholder`),onKeyup:oe(Jn,[`enter`])},null,8,[`modelValue`,`placeholder`])])]),_:1},8,[`visible`,`header`]),r(e(v),{visible:K.value,header:e(_)(`kanban.board.populateDialog.header`),modal:!0,style:{width:`550px`},"onUpdate:visible":i[23]||=e=>{e||(K.value=!1)}},{footer:d(()=>[o(`div`,st,[r(e(y),{label:e(_)(`actions.cancel`),variant:`text`,onClick:i[22]||=e=>K.value=!1},null,8,[`label`]),r(e(y),{label:e(_)(`kanban.board.populateDialog.generate`),icon:`ti ti-sparkles`,disabled:!J.value.trim(),onClick:nr},null,8,[`label`,`disabled`])])]),default:d(()=>[o(`div`,at,[o(`p`,ot,f(e(_)(`kanban.board.populateDialog.hint`)),1),r(e(he),{modelValue:J.value,"onUpdate:modelValue":i[21]||=e=>J.value=e,placeholder:e(_)(`kanban.board.populateDialog.placeholder`),autoResize:!0,rows:`4`,class:`w-full`,onKeydown:[oe(h(nr,[`ctrl`]),[`enter`]),oe(h(nr,[`meta`]),[`enter`])]},null,8,[`modelValue`,`placeholder`,`onKeydown`])])]),_:1},8,[`visible`,`header`]),r(e(v),{visible:q.value,header:e(_)(`kanban.board.populateDialog.header`),modal:!0,style:{width:`700px`,maxHeight:`80vh`},"onUpdate:visible":i[24]||=e=>{e||(q.value=!1)}},{default:d(()=>[r(Ae,{compact:``,onSelectScenario:ir,onSkip:rr})]),_:1},8,[`visible`,`header`]),V.value?(u(),s(`div`,ct,[o(`div`,lt,[o(`span`,ut,f(e(_)(`kanban.board.queue.panelHeader`)),1),r(e(y),{icon:`ti ti-x`,variant:`text`,rounded:``,size:`small`,onClick:i[25]||=e=>V.value=!1})]),o(`div`,dt,[o(`span`,ft,f(e(_)(`kanban.board.queue.concurrency`)),1),o(`div`,pt,[r(e(y),{icon:`ti ti-minus`,variant:`text`,rounded:``,size:`small`,disabled:e(B).state.maxConcurrent<=1,onClick:i[26]||=t=>e(B).setMaxConcurrent(e(B).state.maxConcurrent-1)},null,8,[`disabled`]),o(`span`,null,f(e(B).state.maxConcurrent),1),r(e(y),{icon:`ti ti-plus`,variant:`text`,rounded:``,size:`small`,onClick:i[27]||=t=>e(B).setMaxConcurrent(e(B).state.maxConcurrent+1)})])]),e(B).state.running.length>0?(u(),s(`div`,mt,[o(`div`,ht,f(e(_)(`kanban.board.queue.runningSection`,{count:e(B).state.running.length})),1),(u(!0),s(ie,null,ee(e(B).state.running.filter(e=>e.boardId===O.value?.id),t=>(u(),s(`div`,{key:t.id,class:`kb-queue-item kb-queue-item--running`},[i[39]||=o(`i`,{class:`ti ti-spin ti-loader-2`},null,-1),o(`span`,gt,f(Nn(t.cardId)),1),r(e(y),{icon:`ti ti-player-stop`,variant:`text`,rounded:``,size:`small`,severity:`danger`,onClick:n=>e(B).removeItem(t.id)},null,8,[`onClick`])]))),128))])):m(``,!0),e(B).state.items.length>0?(u(),s(`div`,_t,[o(`div`,vt,f(e(_)(`kanban.board.queue.waitingSection`,{count:e(B).state.items.length})),1),(u(!0),s(ie,null,ee(e(B).state.items.filter(e=>e.boardId===O.value?.id),t=>(u(),s(`div`,{key:t.id,class:`kb-queue-item`},[i[40]||=o(`i`,{class:`ti ti-clock`},null,-1),o(`span`,yt,f(Nn(t.cardId)),1),r(e(y),{icon:`ti ti-x`,variant:`text`,rounded:``,size:`small`,onClick:n=>e(B).removeItem(t.id)},null,8,[`onClick`])]))),128))])):m(``,!0),G.value===0?(u(),s(`div`,bt,f(e(_)(`kanban.board.queue.empty`)),1)):m(``,!0),o(`div`,xt,[r(e(y),{label:e(_)(`kanban.board.queue.stopAll`),icon:`ti ti-player-stop`,severity:`danger`,variant:`text`,size:`small`,disabled:G.value===0,onClick:i[28]||=t=>e(B).stopAll()},null,8,[`label`,`disabled`])])])):m(``,!0),r(e(v),{visible:H.value,header:e(_)(`kanban.board.queue.addColumnDialog.header`),modal:!0,style:{width:`420px`},"onUpdate:visible":i[32]||=e=>{e||(H.value=!1)}},{footer:d(()=>[o(`div`,Dt,[r(e(y),{label:e(_)(`actions.cancel`),variant:`text`,onClick:i[31]||=e=>H.value=!1},null,8,[`label`]),r(e(y),{label:e(_)(`kanban.board.queue.addColumnDialog.confirm`),icon:`ti ti-list`,onClick:jn},null,8,[`label`])])]),default:d(()=>[o(`div`,St,[o(`div`,Ct,[o(`label`,wt,f(e(_)(`kanban.board.queue.addColumnDialog.runner`)),1),r(e(pe),{modelValue:U.value,"onUpdate:modelValue":i[29]||=e=>U.value=e,"input-id":`kanban-queue-runner`,options:[{value:``,label:`Auto`},{value:`claude-code`,label:`Claude Code${e(un)?``:` (non installé)`}`,disabled:!e(un)},{value:`codex`,label:`Codex${e(dn)?``:` (non installé)`}`,disabled:!e(dn)}],"option-label":`label`,"option-value":`value`,"option-disabled":`disabled`,fluid:``},null,8,[`modelValue`,`options`])]),o(`div`,Tt,[o(`label`,Et,f(e(_)(`kanban.board.queue.addColumnDialog.scenario`)),1),r(e(pe),{modelValue:W.value,"onUpdate:modelValue":i[30]||=e=>W.value=e,"input-id":`kanban-queue-scenario`,options:[{id:``,name:e(_)(`kanban.board.queue.addColumnDialog.noScenario`)},...kn.value],"option-label":`name`,"option-value":`id`,fluid:``},null,8,[`modelValue`,`options`])])])]),_:1},8,[`visible`,`header`])])):e(T).loading.value?(u(),s(`div`,Ot,[...i[41]||=[o(`i`,{class:`ti ti-spin ti-loader-2`},null,-1)]])):m(``,!0)}}}),[[`__scopeId`,`data-v-754add64`]]);export{C as default};
@@ -0,0 +1 @@
1
+ import{B as e}from"./reactivity.esm-bundler-BQ9SB2vv.js";import{D as t,Ht as n,_ as r,b as i,g as a,k as o,mt as s,qt as c,rn as l,v as u,y as d}from"./runtime-core.esm-bundler-DujKY9QV.js";import{w as f}from"./runtime-dom.esm-bundler-CyEVRK6B.js";import{n as p}from"./vue-i18n-o7yraQpR.js";import{g as ee}from"./useApi-s_02lHjl-DZYO2tHU.js";import{dt as m,ft as h}from"./src-DIBHat7I.js";import{n as g}from"./project.store-CNC6_4r4.js";import{r as _,t as v}from"./cloud-auth-D_am4FlK.js";import{n as y,r as b}from"./cloud-client-CzPdZLDq.js";import{a as x,i as S,o as C}from"./composables-DiiOYol8.js";import{t as w}from"./shared-sse-Dcj_cNvF.js";import{n as T}from"./page-actions-CSvO7j9F.js";import{t as E}from"./useCloudOrg-EnXFBwt1.js";import{n as D}from"./src-CrNi4Pjg.js";var O={class:`kanban-list-host`},k={key:0,class:`connect-cta`},A={class:`connect-cta__title`},j={class:`connect-cta__desc`},M={key:1,class:`notice`},N={class:`upgrade-banner__cta`},P=h(o({__name:`KanbanListPage`,props:{mode:{default:`board`}},setup(o){let{t:h,te:P}=p(),F=o,I=a(()=>F.mode===`list`?`/issues`:`/kanban`),L=ee(),{orgId:R,orgSlug:z,unavailability:B,cloudUser:V}=E();function H(e,t){let n=`kanban.issues.${e}`,r=F.mode===`list`&&P(n)?n:`kanban.list.${e}`;return t?h(r,t):h(r)}let U=S(y,R,{streamUrl:b,streamFactory:w}),W=C(y,R,{lazy:!0}),G=x(y,R,{lazy:!0});n(U.error,e=>{e&&console.error(`[kanban]`,e)}),n(W.error,e=>{e&&console.error(`[kanban:templates]`,e)}),n(G.error,e=>{e&&console.error(`[kanban:board-templates]`,e)});let K=a(()=>U.boards.value.map(e=>({id:e.id,name:e.name,description:e.description,instructions:e.instructions??``,archived:e.archived,columnCount:e.columnCount,cardCount:e.cardCount,projectIds:e.projectIds??[],defaultView:e.defaultView,columnStats:e.columnStats,lastActivityAt:e.lastActivityAt,assignees:e.assignees,assigneeCount:e.assigneeCount,week:e.week}))),q=g(),J=a(()=>q.projects.filter(e=>(e.orgId??null)===R.value).map(e=>({id:e.id,name:e.name})));function Y(){z.value&&window.open(`${_()}/app/${z.value}/settings/org/billing`,`_blank`,`noopener`)}async function X(e){let t=await U.createBoard(e.name,e.description,e.instructions,e.columns,e.columnGroups,e.projectIds,e.defaultView);t&&await L.push(`${I.value}/${t.id}?org=${R.value}`)}async function Z(e){await U.updateBoardById(e.id,{name:e.name,description:e.description,instructions:e.instructions,...e.projectIds?{projectIds:e.projectIds}:{}})}async function Q(e){await U.updateBoardById(e.id,{archived:e.archived})}async function $(e){await U.deleteBoard(e)}let te=a(()=>W.templates.value.map(e=>({id:e.id,name:e.name,content:e.content})));function ne(){W.ensureLoaded(),G.ensureLoaded()}let re=a(()=>G.templates.value.map(e=>({id:e.id,name:e.name,instructions:e.instructions,columns:e.columns,columnGroups:e.columnGroups})));return(n,a)=>(s(),i(`div`,O,[e(V)?e(R)?(s(),u(e(D),{key:2,boards:K.value,"read-only":!e(U).canWrite.value,"boards-limit":e(U).access.value?.boardsLimit??null,projects:J.value,"current-project-id":e(q).currentProject?.id??null,t:H,mode:o.mode,"show-title":!1,"actions-target":e(T),"load-flow":e(U).boardFlow,"avatar-url":t=>e(v)(t,{orgId:e(R)}),onOpen:a[1]||=t=>e(L).push(`${I.value}/${t}?org=${e(R)}`),onCreate:X,onUpdate:Z,onArchive:Q,onDelete:$,"board-templates":re.value,onTemplatesNeeded:ne,onBoardTemplateDelete:a[2]||=t=>e(G).deleteTemplate(t),templates:te.value,onTemplateCreate:a[3]||=t=>e(W).createTemplate(t.name,t.content),onTemplateUpdate:a[4]||=t=>e(W).updateTemplate(t.id,{name:t.name,content:t.content}),onTemplateDelete:a[5]||=t=>e(W).deleteTemplate(t)},{banner:c(()=>[e(U).planLocked.value?(s(),i(`a`,{key:0,class:`upgrade-banner`,href:`#`,onClick:f(Y,[`prevent`])},[r(`span`,null,l(e(h)(`kanban.cloud.readOnlyNotice`)),1),r(`span`,N,l(e(h)(`kanban.cloud.upgradeCta`)),1)])):d(``,!0)]),_:1},8,[`boards`,`read-only`,`boards-limit`,`projects`,`current-project-id`,`mode`,`actions-target`,`load-flow`,`avatar-url`,`board-templates`,`templates`])):(s(),i(`div`,M,l(e(B)===`not-member`?e(h)(`kanban.cloud.orgNotAccessible`):e(h)(`kanban.cloud.noProjectOrg`)),1)):(s(),i(`div`,k,[a[6]||=r(`div`,{class:`connect-cta__badge`},[r(`i`,{class:`ti ti-layout-grid`})],-1),r(`h2`,A,l(e(h)(`kanban.cloud.notConnectedTitle`)),1),r(`p`,j,l(e(h)(`kanban.cloud.notConnectedDesc`)),1),t(e(m),{label:e(h)(`kanban.cloud.connectAction`),icon:`ti ti-cloud`,onClick:a[0]||=t=>e(L).push({name:`cloud-account`})},null,8,[`label`])]))]))}}),[[`__scopeId`,`data-v-c798d403`]]);export{P as default};
@@ -0,0 +1 @@
1
+ import{B as e,C as t}from"./reactivity.esm-bundler-BQ9SB2vv.js";import{Ct as n,D as r,E as i,Yt as a,_ as o,b as s,bt as c,ct as l,en as u,g as d,k as ee,mt as f,nn as p,o as m,qt as h,rn as g,v as _,y as v}from"./runtime-core.esm-bundler-DujKY9QV.js";import{n as te}from"./vue-i18n-o7yraQpR.js";import{n as ne}from"./project-launch.store-CTmbl8UY.js";import{g as re}from"./useApi-s_02lHjl-DZYO2tHU.js";import{G as ie,H as ae,J as oe,K as se,W as y,dt as b,ft as x}from"./src-DIBHat7I.js";import{r as ce}from"./trpc-BAZGRZBD.js";import{n as le}from"./project.store-CNC6_4r4.js";import{t as ue}from"./useProjectCatalog-BrvUGv9A.js";import{r as S,t as de}from"./error-DpF7X5iu.js";import{r as fe}from"./cloud-session-BYfn6YM4.js";import{V as C}from"./index-Ci2CNnit.js";import{t as pe}from"./OrgKeyPrompt-CX9K7r9I.js";import{t as me}from"./DirectoryPickerDialog-DIMSeDhw.js";import{t as he}from"./ProjectCreateDialog-D3aMWKfw.js";import{t as ge}from"./LaunchShell-CDb21ihZ.js";var _e={key:0,class:`launch-loading`},ve={key:1,class:`launch-recent launch-stagger`},ye={class:`launch-recent__label`},be={key:0,class:`launch-split__main`},xe={key:1,class:`ti ti-device-desktop project-group__icon`},Se={class:`project-group__count`},Ce={class:`project-list`},we=[`aria-busy`,`onClick`],Te={class:`project-card__avatar`},w={key:1,class:`ti ti-folder`},T={class:`project-card__body`},E={class:`project-card__name`},D={class:`project-description`},O=[`title`],Ee={class:`project-card__meta`},De={class:`project-service-count`},Oe={key:1,class:`project-list__empty`},ke={key:1,class:`cloud-aside launch-stagger`,style:{"--stagger":1}},Ae={class:`cloud-aside__title`},je={class:`cloud-aside__text`},k=x(ee({__name:`LaunchProjectPage`,setup(ee){let x=re(),k=le(),A=ne(),{t:j}=te(),M=t(null),N=t(!0),P=ue(),F=t(``),I=t(``);function L(e,t){return`${e??`local`}:${t}`}let R=d(()=>{let e=[],t=k.projects.filter(e=>!e.orgId);e.push({key:`local`,label:j(`launchProject.groupLocal`),cloud:!1,projects:t.map(e=>({id:e.id,orgId:null,key:L(null,e.id),name:e.name,description:e.description,serviceCount:e.serviceIds.length}))});for(let t of P.orgGroups.value)e.push({key:t.orgId,label:t.name,cloud:!0,projects:t.projects.map(e=>{let n=k.getByRef({id:e.projectId,orgId:t.orgId});return{id:e.projectId,orgId:t.orgId,...t.accountId?{accountId:t.accountId}:{},key:L(t.orgId,e.projectId),name:e.name,description:n?.description??``,serviceCount:n?n.serviceIds.length:null}})});return e}),z=d(()=>{let e=new Map(R.value.flatMap(e=>e.projects).map(e=>[e.key,e]));return A.recentProjects.map(t=>e.get(L(t.orgId,t.id))).filter(e=>!!e)}),B=t({});async function V(){try{B.value=await ce.project.localPaths.query()}catch{}}l(async()=>{V(),await k.fetchAll(),N.value=!1,P.refreshCloud();let e=k.projects,t=A.getLastProjectId(),n=A.activeOrgId;t&&e.some(e=>e.id===t&&(e.orgId??null)===n)&&(M.value=L(n,t))});let H=d(()=>R.value.some(e=>e.projects.length>0)),U=t(``),Me=d(()=>{let e=U.value.trim().toLowerCase();return e?R.value.map(t=>({...t,projects:t.projects.filter(t=>t.name.toLowerCase().includes(e)||t.description.toLowerCase().includes(e))})).filter(e=>!e.cloud||e.projects.length>0):R.value}),Ne=d(()=>{let e=Me.value.map((e,t)=>({group:e,index:t}));return R.value.some(e=>e.cloud&&e.projects.length>0)?[{key:`local`,split:!1,groups:e.filter(e=>!e.group.cloud)},{key:`cloud`,split:!0,groups:e.filter(e=>e.group.cloud)}]:[{key:`local`,split:!0,groups:e}]}),W=t(null),G=t(!1),K=t(null),q=t(null),J=t(!1);async function Pe(e){if(I.value=``,e.status===`available`){K.value=null,q.value=e.path,G.value=!0;return}try{let t=await k.importLocal(e.path);await X({id:t.id,name:t.name,orgId:null})}catch(e){I.value=S(e,j)}}function Y(e){K.value=e.cloud?e.key:null,q.value=null,G.value=!0}async function X(e){V();let t=R.value.flatMap(e=>e.projects).find(t=>t.id===e.id&&t.orgId===e.orgId);t?await Z(t):await x.push(`/`)}async function Fe(){let e=W.value;W.value=null,e&&await Z(e.card)}async function Z(e){if(M.value=e.key,e.orgId!==null&&!k.getByRef({id:e.id,orgId:e.orgId})&&e.orgId){F.value=e.key,I.value=``;try{await P.pullProject(e.orgId,e.id,e.accountId)}catch(t){I.value=S(t,j),de(t)&&e.orgId&&(W.value={orgId:e.orgId,card:e});return}finally{F.value=``}}A.setActiveProject(e.id,e.orgId),x.push(`/launch/services`)}let{signIn:Ie}=fe(),Q=t(!1),$=t(``);async function Le(){Q.value=!0,$.value=``;try{await Ie()}catch{$.value=j(`launchProject.cloudUnreachable`),Q.value=!1}}return(t,l)=>{let d=n(`tooltip`);return f(),_(ge,{wide:``,title:e(j)(`launchProject.selectProject`),subtitle:e(j)(`launchProject.subtitle`)},{outside:h(()=>[r(pe,{"org-id":W.value?.orgId??null,reference:`cloud`,title:e(j)(`projectSwitcher.keyPromptTitle`),hint:e(j)(`projectSwitcher.keyPromptHint`),"confirm-label":e(j)(`projectSwitcher.keyPromptUse`),onClose:l[2]||=e=>W.value=null,onAdopted:Fe},null,8,[`org-id`,`title`,`hint`,`confirm-label`]),J.value?(f(),_(me,{key:0,visible:J.value,"onUpdate:visible":l[3]||=e=>J.value=e,mode:`local`,onLocalChosen:Pe},null,8,[`visible`])):v(``,!0),r(he,{visible:G.value,"onUpdate:visible":l[4]||=e=>G.value=e,"initial-target":K.value,"local-path":q.value,onCreated:X},null,8,[`visible`,`initial-target`,`local-path`])]),default:h(()=>[N.value?(f(),s(`div`,_e,[r(e(ae),{style:{width:`32px`,height:`32px`},"stroke-width":`4`})])):v(``,!0),I.value?(f(),_(e(y),{key:1,severity:`error`,class:`launch-error`},{default:h(()=>[i(g(I.value),1)]),_:1})):N.value?v(``,!0):(f(),s(m,{key:2},[H.value?(f(),_(e(se),{key:0,class:`launch-search launch-stagger`},{default:h(()=>[r(e(ie),{class:`ti ti-search`}),r(e(oe),{modelValue:U.value,"onUpdate:modelValue":l[0]||=e=>U.value=e,placeholder:e(j)(`launchProject.search`),"aria-label":e(j)(`launchProject.search`),fluid:``,"data-testid":`launch-project-search`},null,8,[`modelValue`,`placeholder`,`aria-label`])]),_:1})):v(``,!0),z.value.length&&!U.value.trim()?(f(),s(`div`,ve,[o(`span`,ye,g(e(j)(`launchProject.recent`)),1),(f(!0),s(m,null,c(z.value,t=>(f(),_(e(b),{key:t.key,label:t.name,icon:F.value===t.key?`ti ti-spin ti-loader-2`:`ti ti-history`,variant:`outlined`,size:`small`,disabled:!!F.value,onClick:e=>Z(t)},null,8,[`label`,`icon`,`disabled`,`onClick`]))),128))])):v(``,!0),(f(!0),s(m,null,c(Ne.value,t=>(f(),s(`div`,{key:t.key,class:u(t.split?[`launch-split`,{"launch-split--solo":!t.groups.length}]:`launch-row`)},[t.groups.length?(f(),s(`div`,be,[(f(!0),s(m,null,c(t.groups,({group:t,index:n})=>(f(),s(`section`,{key:t.key,class:`project-group`},[o(`h2`,{class:`project-group__title launch-stagger`,style:p({"--stagger":n*2})},[t.cloud?(f(),_(C,{key:0,"org-id":t.key,name:t.label,size:16},null,8,[`org-id`,`name`])):(f(),s(`i`,xe)),o(`span`,null,g(t.label),1),o(`span`,Se,g(t.projects.length),1),t.cloud?a((f(),_(e(b),{key:2,icon:`ti ti-plus`,variant:`text`,rounded:``,size:`small`,class:`project-group__create`,"aria-label":e(j)(`launchProject.createHere`,{group:t.label}),onClick:e=>Y(t)},null,8,[`aria-label`,`onClick`])),[[d,e(j)(`launchProject.createHere`,{group:t.label}),void 0,{bottom:!0}]]):v(``,!0)],4),o(`div`,Ce,[(f(!0),s(m,null,c(t.projects,(r,a)=>(f(),s(`button`,{key:r.key,type:`button`,class:u([`project-card launch-stagger`,{selected:M.value===r.key}]),style:p({"--stagger":n*2+a+1}),"aria-busy":F.value===r.key,onClick:e=>Z(r)},[o(`span`,Te,[r.orgId?(f(),_(C,{key:0,"org-id":r.orgId,name:t.label,size:20},null,8,[`org-id`,`name`])):(f(),s(`i`,w))]),o(`span`,T,[o(`span`,E,g(r.name),1),o(`span`,D,g(r.description||e(j)(`launchProject.noDescription`)),1),!r.orgId&&B.value[r.key]?(f(),s(`span`,{key:0,class:`project-card__path`,title:B.value[r.key]},[l[5]||=o(`i`,{class:`ti ti-folder-open`,"aria-hidden":`true`},null,-1),i(` `+g(B.value[r.key]),1)],8,O)):v(``,!0)]),o(`span`,Ee,[o(`span`,De,g(r.serviceCount===null?e(j)(`launchProject.notPulled`):e(j)(`launchProject.serviceCount`,r.serviceCount)),1),o(`i`,{class:u([`ti project-card__chevron`,F.value===r.key?`ti-spin ti-loader-2`:`ti-arrow-right`]),"aria-hidden":`true`},null,2)])],14,we))),128)),!t.cloud&&!U.value.trim()?(f(),_(e(b),{key:0,label:e(j)(`launchProject.importOrCreateLocal`),icon:`ti ti-folder-open`,variant:H.value?`outlined`:`filled`,fluid:``,"data-testid":`launch-import-or-create-local`,onClick:l[1]||=e=>J.value=!0},null,8,[`label`,`variant`])):v(``,!0),!t.projects.length&&(t.cloud||U.value.trim())?(f(),s(`p`,Oe,g(U.value.trim()?e(j)(`launchProject.noMatch`):e(j)(`launchProject.groupEmpty`)),1)):v(``,!0)])]))),128))])):v(``,!0),t.split?(f(),s(`aside`,ke,[l[6]||=o(`span`,{class:`cloud-aside__icon`,"aria-hidden":`true`},[o(`i`,{class:`ti ti-cloud`})],-1),o(`h2`,Ae,g(e(j)(`launchProject.missingTitle`)),1),o(`p`,je,g(e(j)(`launchProject.missingText`)),1),r(e(b),{loading:Q.value,label:e(j)(`launchProject.connectCloud`),icon:`ti ti-external-link`,fluid:``,class:`cloud-aside__action`,"data-testid":`launch-connect-cloud`,onClick:Le},null,8,[`loading`,`label`]),$.value?(f(),_(e(y),{key:0,severity:`error`},{default:h(()=>[i(g($.value),1)]),_:1})):v(``,!0)])):v(``,!0)],2))),128))],64))]),_:1},8,[`title`,`subtitle`])}}}),[[`__scopeId`,`data-v-07a89245`]]);export{k as default};
@@ -0,0 +1 @@
1
+ import{B as e,C as t}from"./reactivity.esm-bundler-BQ9SB2vv.js";import{D as n,E as r,_ as i,b as a,bt as o,ct as s,en as ee,ft as te,g as c,k as ne,mt as l,nn as re,o as u,qt as d,rn as f,v as p,y as m}from"./runtime-core.esm-bundler-DujKY9QV.js";import{n as ie}from"./vue-i18n-o7yraQpR.js";import{n as ae}from"./project-launch.store-CTmbl8UY.js";import{g as oe}from"./useApi-s_02lHjl-DZYO2tHU.js";import{G as se,H as ce,J as le,K as ue,O as h,P as de,W as fe,dt as g,ft as _}from"./src-DIBHat7I.js";import{a as pe}from"./app-mode-BVpTuh0i.js";import{n as me}from"./project.store-CNC6_4r4.js";import{r as he}from"./error-DpF7X5iu.js";import{t as ge}from"./service.store-B40U4QzI.js";import{t as _e}from"./agent.store-piokQ9Dt.js";import{n as ve,r as ye}from"./process-BWkHpZOM.js";import{c as be}from"./index-Ci2CNnit.js";import{t as xe}from"./ProjectLocationGate-DU0Jj8Nw.js";import{t as v}from"./LaunchShell-CDb21ihZ.js";var y={key:0,class:`launch-loading`},b={key:1,class:`launch-empty launch-stagger`},x={class:`empty-message`},S={class:`services-toolbar launch-stagger`,style:{"--stagger":1}},C={class:`service-list`},w=[`for`],T={class:`group-label`},E={class:`group-count`},D=[`for`],O={class:`service-info`},k={class:`service-name`},A={class:`service-command`},j={class:`service-runner`},M={key:0,class:`launch-actions`},Se={class:`launch-actions__count`},N=`__all__`,P=_(ne({__name:`LaunchServicesPage`,setup(ne){let _=oe(),P=de(),{t:F}=ie(),I=ae(),L=me(),R=ge(),z=_e(),B=be(),V=t(!0),H=t(!1),U=t([]),W=t(``),G=c(()=>L.currentProject),K=I.activeProjectId,q=I.activeRef(),J=c(()=>G.value?R.getByIds(G.value.serviceIds):[]),Y=c(()=>{if(!W.value)return J.value;let e=W.value.toLowerCase();return J.value.filter(t=>t.name.toLowerCase().includes(e)||(t.commands??[]).some(t=>t.command.toLowerCase().includes(e)))}),Ce=c(()=>{let e=new Map;for(let t of Y.value){let n=t.groups&&t.groups.length>0?t.groups:[N];for(let r of n){let n=e.get(r);n?n.push(t):e.set(r,[t])}}let t=G.value?.groupOrder??[],n=e=>{let n=t.indexOf(e);return n===-1?2**53-1:n},r=[...e.entries()].filter(([e])=>e!==N).sort(([e],[t])=>{let r=n(e),i=n(t);return r===i?e.localeCompare(t):r-i}).map(([e,t])=>({key:e,label:e,services:t})),i=e.get(N);return i&&i.length>0&&r.push({key:N,label:F(`launchServices.defaultGroup`),services:i}),r}),X=c(()=>J.value.length!==0&&J.value.every(e=>U.value.includes(e.id)));function Z(e){return e.services.length>0&&e.services.every(e=>U.value.includes(e.id))}function we(e){let t=e.services.map(e=>e.id);if(Z(e))U.value=U.value.filter(e=>!t.includes(e));else{let e=new Set(U.value);for(let n of t)e.add(n);U.value=[...e]}}let Q=c(()=>z.connectedAgents.length>0);s(async()=>{if(!K){_.replace(`/launch/project`);return}if(await Promise.all([L.fetchAll(),R.fetchAll(),z.fetchAll(),B.fetchAll()]),G.value){let e=ve(B.processes);if(G.value.serviceIds.some(t=>e.has(t))){I.completeLaunch(),_.replace(`/`);return}}if(z.subscribeStatus(),V.value=!1,G.value){let e=q?I.getSavedSelection(q):[],t=new Set(G.value.serviceIds);U.value=e.filter(e=>t.has(e))}}),te(()=>{z.unsubscribeStatus()});function Te(){X.value?U.value=[]:U.value=J.value.map(e=>e.id)}async function Ee(){if(!K||U.value.length===0)return;q&&I.saveSelection(q,U.value),I.completeLaunch(),_.push(`/`);let e=[];await Promise.all(U.value.map(async t=>{let n=R.services.find(e=>e.id===t);if(!n){e.push(`Service ${t} not found`);return}try{await B.start(ye(n)??``,n.id)}catch(t){e.push(he(t,F))}})),e.length>0&&P.add({severity:`warn`,summary:F(`launchServices.someServicesFailed`),detail:e.join(`; `),life:5e3})}function $(){K&&q&&I.saveSelection(q,U.value),I.completeLaunch(),_.push(`/`)}let{lockedProjectId:De}=pe();function Oe(){_.push(`/launch/project`)}return(t,s)=>(l(),p(v,{title:e(F)(`launchServices.selectServices`),subtitle:G.value?.name},{"before-mark":d(()=>[e(De)?m(``,!0):(l(),p(e(g),{key:0,icon:`ti ti-arrow-left`,label:e(F)(`actions.back`),variant:`text`,size:`small`,severity:`secondary`,class:`launch-back`,onClick:Oe},null,8,[`label`]))]),outside:d(()=>[!V.value&&J.value.length>0?(l(),a(`div`,M,[i(`span`,Se,f(e(F)(`launchServices.selectedCount`,U.value.length)),1),n(e(g),{label:e(F)(`launchServices.skip`),severity:`secondary`,variant:`text`,disabled:H.value,onClick:$},null,8,[`label`,`disabled`]),n(e(g),{label:e(F)(`launchServices.launch`),icon:`ti ti-player-play`,loading:H.value,disabled:U.value.length===0||!Q.value,class:`launch-actions__primary`,onClick:Ee},null,8,[`label`,`loading`,`disabled`])])):m(``,!0),n(xe)]),default:d(()=>[V.value?(l(),a(`div`,y,[n(e(ce),{style:{width:`32px`,height:`32px`},"stroke-width":`4`})])):J.value.length===0?(l(),a(`div`,b,[i(`p`,x,f(e(F)(`launchServices.noServices`)),1),n(e(g),{label:e(F)(`launchServices.skip`),icon:`ti ti-arrow-right`,"icon-pos":`right`,class:`launch-action`,onClick:$},null,8,[`label`])])):(l(),a(u,{key:2},[Q.value?m(``,!0):(l(),p(e(fe),{key:0,severity:`warn`,class:`launch-warning launch-stagger`},{default:d(()=>[r(f(e(F)(`launchServices.noAgents`)),1)]),_:1})),i(`div`,S,[n(e(ue),{class:`services-search`},{default:d(()=>[n(e(se),{class:`ti ti-search`}),n(e(le),{modelValue:W.value,"onUpdate:modelValue":s[0]||=e=>W.value=e,placeholder:e(F)(`launchServices.filter`),fluid:``},null,8,[`modelValue`,`placeholder`])]),_:1}),n(e(g),{label:X.value?e(F)(`launchServices.deselectAll`):e(F)(`launchServices.selectAll`),variant:`text`,size:`small`,onClick:Te},null,8,[`label`])]),i(`div`,C,[(l(!0),a(u,null,o(Ce.value,(t,r)=>(l(),a(`section`,{key:t.key,class:`service-group launch-stagger`,style:re({"--stagger":r+2})},[i(`label`,{class:`group-header`,for:`launch-group-`+t.key},[n(e(h),{inputId:`launch-group-`+t.key,"model-value":Z(t),binary:``,"onUpdate:modelValue":e=>we(t)},null,8,[`inputId`,`model-value`,`onUpdate:modelValue`]),i(`span`,T,f(t.label),1),i(`span`,E,f(t.services.length),1)],8,w),(l(!0),a(u,null,o(t.services,r=>(l(),a(`label`,{key:t.key+`:`+r.id,class:ee([`service-item`,{selected:U.value.includes(r.id)}]),for:`launch-svc-`+t.key+`:`+r.id},[n(e(h),{inputId:`launch-svc-`+t.key+`:`+r.id,modelValue:U.value,"onUpdate:modelValue":s[1]||=e=>U.value=e,value:r.id},null,8,[`inputId`,`modelValue`,`value`]),i(`span`,O,[i(`span`,k,f(r.name),1),i(`span`,A,f((r.commands??[]).map(e=>e.label||e.command).join(`, `)||e(F)(`launchServices.noCommands`)),1)]),i(`span`,j,f(r.runner),1)],10,D))),128))],4))),128))])],64))]),_:1},8,[`title`,`subtitle`]))}}),[[`__scopeId`,`data-v-6b9f7217`]]);export{P as default};
@@ -0,0 +1 @@
1
+ .launch-back[data-v-6b9f7217]{position:absolute;top:-.5rem;left:0}.launch-loading[data-v-6b9f7217]{justify-content:center;padding:1rem 0;display:flex}.launch-warning[data-v-6b9f7217]{width:100%}.launch-empty[data-v-6b9f7217]{flex-direction:column;align-items:center;gap:1rem;display:flex}.empty-message[data-v-6b9f7217]{color:var(--r-text-muted);margin:0}.launch-action[data-v-6b9f7217]{width:100%}.services-toolbar[data-v-6b9f7217]{align-items:center;gap:.75rem;display:flex}.services-search[data-v-6b9f7217]{flex:1}.service-list[data-v-6b9f7217]{flex-direction:column;gap:1.25rem;display:flex}.service-group[data-v-6b9f7217]{border:1px solid var(--r-border);background:var(--r-bg);border-radius:12px;flex-direction:column;display:flex;overflow:hidden;box-shadow:0 1px 2px #0000000a}.group-header[data-v-6b9f7217]{border-bottom:1px solid var(--r-border);cursor:pointer;align-items:center;gap:.75rem;padding:.625rem 1rem;display:flex}.group-label[data-v-6b9f7217]{text-transform:uppercase;letter-spacing:.06em;color:var(--r-text-muted);font-size:.75rem;font-weight:600}.group-count[data-v-6b9f7217]{font-variant-numeric:tabular-nums;color:var(--r-text-muted);margin-left:auto;font-size:.75rem;font-weight:500}.service-item[data-v-6b9f7217]{cursor:pointer;align-items:center;gap:.75rem;padding:.75rem 1rem;transition:background-color .15s;display:flex;position:relative}.service-item+.service-item[data-v-6b9f7217]{border-top:1px solid var(--r-border)}.service-item[data-v-6b9f7217]:before{content:"";background:var(--r-primary);width:3px;transition:transform .2s cubic-bezier(.23,1,.32,1);position:absolute;top:0;bottom:0;left:0;transform:scaleY(0)}.service-item.selected[data-v-6b9f7217]:before{transform:scaleY(1)}@media (hover:hover) and (pointer:fine){.service-item[data-v-6b9f7217]:hover{background:unset}}.service-info[data-v-6b9f7217]{flex-direction:column;flex:1;gap:.125rem;min-width:0;display:flex}.service-name[data-v-6b9f7217]{font-size:.9375rem;font-weight:500}.service-command[data-v-6b9f7217]{color:var(--r-text-muted);white-space:nowrap;text-overflow:ellipsis;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.75rem;overflow:hidden}.service-runner[data-v-6b9f7217]{border:1px solid var(--r-border);color:var(--r-text-muted);border-radius:999px;flex-shrink:0;padding:.125rem .5rem;font-size:.6875rem;font-weight:500}.launch-actions[data-v-6b9f7217]{z-index:1;border:1px solid var(--r-border);background:color-mix(in srgb, var(--r-bg) 85%, transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-radius:14px;align-items:center;gap:.5rem;width:min(560px,100% - 2rem);margin:1.75rem auto 1rem;padding:.5rem .5rem .5rem 1rem;animation:.4s cubic-bezier(.23,1,.32,1) .2s both launch-actions-enter-6b9f7217;display:flex;position:sticky;bottom:1rem;box-shadow:0 12px 32px -8px #0000002e}.launch-actions__count[data-v-6b9f7217]{color:var(--r-text-muted);font-variant-numeric:tabular-nums;flex:1;font-size:.8125rem}.launch-actions__primary[data-v-6b9f7217]{transition:transform .16s ease-out}.launch-actions__primary[data-v-6b9f7217]:active:not(:disabled){transform:scale(.97)}@keyframes launch-actions-enter-6b9f7217{0%{opacity:0;transform:translateY(16px)}}@media (width<=480px){.service-runner[data-v-6b9f7217],.launch-actions__count[data-v-6b9f7217]{display:none}.launch-actions__primary[data-v-6b9f7217]{flex:1}}@media (prefers-reduced-motion:reduce){.launch-actions[data-v-6b9f7217]{animation-name:launch-actions-fade-6b9f7217;animation-duration:.2s}.service-item[data-v-6b9f7217]:before{transition:none}.launch-actions__primary[data-v-6b9f7217]:active:not(:disabled){transform:none}@keyframes launch-actions-fade-6b9f7217{0%{opacity:0}}}
@@ -1 +1 @@
1
- import{D as e,_ as t,b as n,en as r,k as i,mt as a,rn as o,xt as s,y as c}from"./runtime-core.esm-bundler-DujKY9QV.js";import{ft as l}from"./src--GO-VSJ0.js";import{n as u,t as d}from"./VersionBadge-DBquJl76.js";var f={class:`launch-page`,"data-testid":`page-content`},p={class:`launch-branding`},m={class:`launch-title`},h={key:0,class:`launch-subtitle`},g=l(i({__name:`LaunchShell`,props:{title:{},subtitle:{},wide:{type:Boolean}},setup(i){return(l,g)=>(a(),n(`div`,f,[t(`div`,{class:r([`launch-container`,{"launch-container--wide":i.wide}])},[t(`header`,p,[s(l.$slots,`before-mark`,{},void 0,!0),e(u,{class:`launch-mark`}),t(`h1`,m,o(i.title),1),i.subtitle?(a(),n(`p`,h,o(i.subtitle),1)):c(``,!0)]),s(l.$slots,`default`,{},void 0,!0)],2),s(l.$slots,`outside`,{},void 0,!0),e(d)]))}}),[[`__scopeId`,`data-v-0ff0b7cd`]]);export{g as t};
1
+ import{D as e,_ as t,b as n,en as r,k as i,mt as a,rn as o,xt as s,y as c}from"./runtime-core.esm-bundler-DujKY9QV.js";import{ft as l}from"./src-DIBHat7I.js";import{n as u,t as d}from"./VersionBadge-CW7czacg.js";var f={class:`launch-page`,"data-testid":`page-content`},p={class:`launch-branding`},m={class:`launch-title`},h={key:0,class:`launch-subtitle`},g=l(i({__name:`LaunchShell`,props:{title:{},subtitle:{},wide:{type:Boolean}},setup(i){return(l,g)=>(a(),n(`div`,f,[t(`div`,{class:r([`launch-container`,{"launch-container--wide":i.wide}])},[t(`header`,p,[s(l.$slots,`before-mark`,{},void 0,!0),e(u,{class:`launch-mark`}),t(`h1`,m,o(i.title),1),i.subtitle?(a(),n(`p`,h,o(i.subtitle),1)):c(``,!0)]),s(l.$slots,`default`,{},void 0,!0)],2),s(l.$slots,`outside`,{},void 0,!0),e(d)]))}}),[[`__scopeId`,`data-v-0ff0b7cd`]]);export{g as t};
@@ -0,0 +1,3 @@
1
+ import{B as e,C as t,z as n}from"./reactivity.esm-bundler-BQ9SB2vv.js";import{D as r,E as i,Ht as a,St as o,Yt as s,Z as c,_ as l,b as u,bt as d,ct as f,en as p,et as m,ft as h,g,k as _,mt as v,nn as y,o as b,qt as x,rn as S,tt as C,v as w,wt as T,xt as E,y as D}from"./runtime-core.esm-bundler-DujKY9QV.js";import{C as O,S as k,t as A,w as j}from"./runtime-dom.esm-bundler-CyEVRK6B.js";import{n as ee}from"./vue-i18n-o7yraQpR.js";import{C as M,H as N,J as te,S as ne,Y as re,a as P,dt as F,ft as I}from"./src-DIBHat7I.js";import{n as ie}from"./scenario.store-BIFQPXgl.js";import{r as ae,t as oe}from"./AiChatModals-C-hXImkO.js";import{t as se}from"./useAiChatDrawer-D_ofn8Eo.js";import{i as L}from"./dist-N4nrnbnA.js";import{I as ce,N as R}from"./index-Ci2CNnit.js";import{t as le}from"./useProjectCloudOrg-Czxlg00k.js";import{t as ue}from"./SendToChatDialog-BdWKjYmv.js";var z=e=>Array.isArray(e),de=e=>typeof e==`object`&&!!e&&!Array.isArray(e),fe=e=>e===null?`var(--jtv-null-color)`:{string:`var(--jtv-string-color)`,number:`var(--jtv-number-color)`,boolean:`var(--jtv-boolean-color)`}[typeof e]??`var(--jtv-valueKey-color)`,pe=e=>`"${e}":`,me=(e,t)=>e===1?`${e} ${t?`element`:`property`}`:`${e} ${t?`elements`:`properties`}`,B=(e,t,n,r=!1)=>n?r?`${e}${t}[${t}].`:`${e}${t}.`:e,V=(e,t,n)=>n?`${e}${t}`:e.slice(0,-1),he={class:`json-view-item`},ge=[`aria-expanded`],H={class:`properties`},U={class:`value-key`},W=function(e){return e[e.OBJECT=0]=`OBJECT`,e[e.ARRAY=1]=`ARRAY`,e[e.VALUE=2]=`VALUE`,e}({}),_e=_({name:`JsonTreeViewItem`,__name:`JsonTreeViewItem`,props:{data:{},maxDepth:{default:1},canSelect:{type:Boolean,default:!1}},emits:[`selected`],setup(e,{emit:n}){let i=n,a=t(e.data.depth<e.maxDepth),c=()=>{a.value=!a.value},f=e=>{let t={key:e.key,value:e.value,path:e.path};i(`selected`,t)},m=e=>i(`selected`,e),h=g(()=>({"chevron-arrow":!0,opened:a.value})),_=g(()=>({"value-key":!0,"can-select":e.canSelect})),C=g(()=>{let{length:t,type:n}=e.data;return t===void 0?``:me(t,n===1)}),E=g(()=>JSON.stringify(e.data.value)),ee=e=>pe(e.key),M=e=>fe(e);return(t,n)=>{let i=o(`JsonTreeViewItem`,!0);return v(),u(`div`,he,[e.data.type===0||e.data.type===1?(v(),u(b,{key:0},[l(`button`,{class:`data-key`,type:`button`,"aria-expanded":a.value,onClick:j(c,[`stop`])},[l(`div`,{class:p(h.value),"aria-hidden":`true`},null,2),l(`span`,null,S(e.data.key)+`:`,1),l(`span`,H,S(C.value),1)],8,ge),r(A,{name:`expand`},{default:x(()=>[s(l(`div`,null,[(v(!0),u(b,null,d(e.data.children,t=>(v(),w(i,{key:ee(t),data:t,"max-depth":e.maxDepth,"can-select":e.canSelect,onSelected:m},null,8,[`data`,`max-depth`,`can-select`]))),128))],512),[[k,a.value]])]),_:1})],64)):D(``,!0),e.data.type===2?(v(),w(T(e.canSelect?`button`:`div`),{key:1,class:p(_.value),type:e.canSelect?`button`:null,tabindex:e.canSelect?0:null,onClick:n[0]||=t=>e.canSelect?f(e.data):null,onKeyup:[n[1]||=O(t=>e.canSelect?f(e.data):null,[`enter`]),n[2]||=O(j(t=>e.canSelect?f(e.data):null,[`prevent`]),[`space`])]},{default:x(()=>[l(`span`,U,S(e.data.key)+`:`,1),l(`span`,{style:y({color:M(e.data.value)})},S(E.value),5)]),_:1},40,[`class`,`type`,`tabindex`])):D(``,!0)])}}}),G=((e,t)=>{let n=e.__vccOpts||e;for(let[e,r]of t)n[e]=r;return n})(_({name:`JsonTreeView`,__name:`JsonTreeView`,props:{json:{},rootKey:{default:`/`},maxDepth:{default:1},colorScheme:{default:`light`}},emits:[`selected`],setup(e,{emit:t}){let n=t,r=e=>n(`selected`,e),i=(e,t,n,r,i)=>{let a=t.map((t,a)=>s(a.toString(),t,n+1,B(r,e,i,!0),!1));return{key:e,type:W.ARRAY,depth:n,path:r,length:a.length,children:a}},a=(e,t,n,r,i)=>{let a=Object.entries(t).map(([t,a])=>s(t,a,n+1,B(r,e,i),!0));return{key:e,type:W.OBJECT,depth:n,path:r,length:a.length,children:a}},o=(e,t,n,r,i)=>({key:e,type:W.VALUE,path:V(r,e,i),depth:n,value:t}),s=(e,t,n,r,s)=>z(t)?i(e,t,n,r,s):de(t)?a(e,t,n,r,s):o(e,t,n,r,s),c=(e,t)=>{try{let n=JSON.parse(e);return de(n)||z(n)?s(t,n,0,``,!0):o(t,n,0,``,!0)}catch{return o(t,e,0,``,!0)}},l=g(()=>c(e.json,e.rootKey));return(t,n)=>(v(),w(_e,{class:p([`root-item`,{dark:e.colorScheme===`dark`}]),data:l.value,"max-depth":e.maxDepth,onSelected:r},null,8,[`class`,`data`,`max-depth`]))}}),[[`__scopeId`,`data-v-9f840ee1`]]),K={class:`log-card__icon`},q=[`innerHTML`],ve={key:0,class:`log-card__badge`},ye=[`innerHTML`],be={class:`log-card__clip`},xe=320,Se=150,J=I(_({__name:`LogCard`,props:{icon:{},title:{},color:{},badge:{},muted:{type:Boolean},defaultCollapsed:{type:Boolean},lastLine:{}},setup(n){let i=n,a=t(!i.defaultCollapsed),o=t(!!i.defaultCollapsed),s=t(!!i.defaultCollapsed);function c(){a.value?(a.value=!1,setTimeout(()=>{o.value=!0,s.value=!0},xe)):(o.value=!1,s.value=!1,setTimeout(()=>{a.value=!0},Se))}return(t,i)=>(v(),u(`div`,{class:p([`log-card`,{"log-card--muted":n.muted,"log-card--open":!s.value}])},[l(`div`,{class:`log-card__header`,style:y({background:n.color}),onClick:c},[l(`span`,K,S(n.icon),1),l(`span`,{class:`log-card__title`,innerHTML:e(R).sanitize(n.title)},null,8,q),n.badge?(v(),u(`span`,ve,S(n.badge),1)):D(``,!0),t.$slots.default?(v(),u(`span`,{key:1,class:p([`log-card__chevron`,{"log-card__chevron--open":!s.value}])},[...i[0]||=[l(`svg`,{width:`8`,height:`8`,viewBox:`0 0 8 8`,fill:`currentColor`},[l(`polygon`,{points:`0,0 8,4 0,8`})],-1)]],2)):D(``,!0)],4),t.$slots.default?(v(),u(b,{key:0},[r(A,{name:`dots`},{default:x(()=>[o.value?(v(),u(`div`,{key:0,class:`log-card__preview`,style:y({borderLeftColor:n.color})},[n.lastLine?(v(),u(`span`,{key:0,class:`log-card__last-line`,innerHTML:e(R).sanitize(n.lastLine)},null,8,ye)):(v(),u(b,{key:1},[i[1]||=l(`span`,{class:`log-card__dot`},null,-1),i[2]||=l(`span`,{class:`log-card__dot`},null,-1),i[3]||=l(`span`,{class:`log-card__dot`},null,-1)],64))],4)):D(``,!0)]),_:1}),l(`div`,{class:p([`log-card__grid`,{"log-card__grid--open":a.value}])},[l(`div`,be,[l(`div`,{class:`log-card__body`,style:y({borderLeftColor:n.color})},[E(t.$slots,`default`,{},void 0,!0)],4)])],2)],64)):D(``,!0)],2))}}),[[`__scopeId`,`data-v-641c6e90`]]),Y={key:5},Ce=[`title`],we=[`innerHTML`],Te=I(_({__name:`LogLine`,props:{log:{}},emits:[`click`],setup(t,{emit:n}){let a=t,o=n;function s(){let e=window.getSelection();e&&e.toString().length>0||o(`click`,a.log)}let c={debug:`#c72bd4`,info:`#a3a3a3`,warn:`#f59e0b`,error:`#ef4444`,fatal:`#ef4444`},d=g(()=>c[a.log.level]??`#a3a3a3`),f=g(()=>a.log.logCard?.state===`self`?a.log.logCard.type:null);function p(e){return e.metadata!=null&&Object.keys(e.metadata).length>0}function m(e){if(!e.metadata)return``;try{return JSON.stringify(e.metadata,null,2)}catch{return String(e.metadata)}}function h(e){return JSON.stringify(e.json)}return(n,o)=>(v(),u(`div`,null,[f.value===`command-start`?(v(),w(J,{key:0,icon:`⌗`,title:t.log.logCard.header,color:`#3b82f6`,onClick:s},{default:x(()=>[i(S(t.log.message),1)]),_:1},8,[`title`])):f.value===`command-fail`?(v(),w(J,{key:1,icon:`⌗`,title:t.log.logCard.header,color:`#ef4444`,badge:`✗ ${t.log.message}`,onClick:s},null,8,[`title`,`badge`])):f.value===`system-warn`?(v(),w(J,{key:2,icon:`⚠`,title:t.log.logCard.header,color:`#ef4444`,badge:t.log.message,onClick:s},null,8,[`title`,`badge`])):f.value===`json`?(v(),w(J,{key:3,icon:`</>`,title:t.log.logCard.header,color:d.value},{default:x(()=>[l(`div`,{onClick:o[0]||=j(()=>{},[`stop`])},[r(e(G),{json:h(a.log),maxDepth:2},null,8,[`json`])])]),_:1},8,[`title`,`color`])):t.log.json?(v(),w(J,{key:4,icon:`</>`,title:`JSON`,color:d.value,onClick:s},{default:x(()=>[l(`div`,{onClick:o[1]||=j(()=>{},[`stop`])},[r(e(G),{json:h(a.log),maxDepth:2},null,8,[`json`])])]),_:1},8,[`color`])):(v(),u(`div`,Y,[l(`div`,{class:`log-line`,"data-testid":`log-message`,style:y({boxShadow:`inset 3px 0 0 0 ${d.value}`}),title:p(a.log)?m(a.log):void 0,onClick:s},[l(`span`,{class:`log-message`,innerHTML:e(R).sanitize(a.log.message)},null,8,we)],12,Ce)]))]))}}),[[`__scopeId`,`data-v-6ac1d4e1`]]),Ee={class:`log-filter`},De={class:`log-filter__row`},Oe={class:`log-filter__level-option`},ke={class:`log-filter__level-chip`},Ae={key:0,class:`log-filter__badges`},je=[`title`],Me={class:`log-filter__badge-type`},Ne={key:0,class:`log-filter__badge-flag`},Pe={class:`log-filter__badge-pattern`},Fe=[`aria-label`,`onClick`],Ie={class:`log-filter__popover`},Le={class:`log-filter__popover-title`},Re={class:`log-filter__popover-row`},ze={class:`log-filter__popover-row log-filter__popover-row--between`},Be={for:`logfilter-regex-toggle`,class:`log-filter__popover-label`},Ve={class:`log-filter__popover-input-wrap`},He={key:0,class:`log-filter__popover-error`},Ue={class:`log-filter__popover-actions`},We=I(_({__name:`LogFilter`,props:{modelValue:{}},emits:[`update:modelValue`],setup(n,{emit:o}){let{t:s}=ee(),c=n,f=o,m={debug:`#c72bd4`,info:`#a3a3a3`,warn:`#f59e0b`,error:`#ef4444`,fatal:`#ef4444`},g=L.map(e=>({label:e.charAt(0).toUpperCase()+e.slice(1),value:e,color:m[e]??`#a3a3a3`})),_=t([...c.modelValue.levels]),T=t([...c.modelValue.filters]),E=!1;a(_,e=>{E||f(`update:modelValue`,{levels:e,filters:T.value})}),a(()=>c.modelValue,e=>{E=!0,_.value=[...e.levels],T.value=[...e.filters],C(()=>{E=!1})});let O=t(null),k=t(``),A=t(`include`),j=t(!1),N=t(``);function ne(e){O.value?.toggle(e)}function re(){O.value?.hide()}function I(e){try{return new RegExp(e),!0}catch(e){return N.value=e instanceof Error?e.message:`Invalid regex`,!1}}function ie(){let e=k.value.trim();e&&(N.value=``,(!j.value||I(e))&&(T.value=[...T.value,{id:`${Date.now()}-${Math.random()}`,pattern:e,type:A.value,isRegex:j.value}],k.value=``,f(`update:modelValue`,{levels:_.value,filters:T.value}),re()))}function ae(e){e.key===`Enter`&&(e.preventDefault(),ie()),e.key===`Escape`&&re()}function oe(){N.value=``}function se(e){T.value=T.value.filter(t=>t.id!==e),f(`update:modelValue`,{levels:_.value,filters:T.value})}function ce(){_.value=[...L],T.value=[],f(`update:modelValue`,{levels:[...L],filters:[]})}return h(()=>{}),(t,n)=>(v(),u(`div`,Ee,[l(`div`,De,[r(e(P),{modelValue:_.value,"onUpdate:modelValue":n[0]||=e=>_.value=e,options:e(g),"option-label":`label`,"option-value":`value`,placeholder:e(s)(`logFilter.levelsPlaceholder`),class:`log-filter__levels`,size:`small`,"max-selected-labels":3,display:`chip`},{option:x(({option:e})=>[l(`div`,Oe,[l(`span`,{class:`log-filter__level-dot`,style:y({backgroundColor:e.color})},null,4),i(` `+S(e.label),1)])]),chip:x(({value:e})=>[l(`div`,ke,[l(`span`,{class:`log-filter__level-dot`,style:y({backgroundColor:m[e]})},null,4),i(` `+S(e.charAt(0).toUpperCase()+e.slice(1)),1)])]),_:1},8,[`modelValue`,`options`,`placeholder`]),r(e(F),{icon:`ti ti-filter`,label:e(s)(`logFilter.addFilter`),size:`small`,severity:`secondary`,badge:T.value.length>0?String(T.value.length):void 0,"badge-severity":`contrast`,onClick:ne},null,8,[`label`,`badge`]),T.value.length>0||_.value.length<e(L).length?(v(),w(e(F),{key:0,icon:`ti ti-filter-off`,variant:`text`,rounded:``,size:`small`,severity:`secondary`,"aria-label":e(s)(`logFilter.clearAll`),title:e(s)(`logFilter.clearAll`),onClick:ce},null,8,[`aria-label`,`title`])):D(``,!0)]),T.value.length>0?(v(),u(`div`,Ae,[(v(!0),u(b,null,d(T.value,t=>(v(),u(`span`,{key:t.id,class:p([`log-filter__badge`,t.type===`include`?`log-filter__badge--include`:`log-filter__badge--exclude`]),title:`${t.type} · ${t.isRegex?`regex`:`text`}: ${t.pattern}`},[l(`span`,Me,S(t.type===`include`?`+`:`−`),1),t.isRegex?(v(),u(`span`,Ne,`.*`)):D(``,!0),l(`span`,Pe,S(t.pattern),1),l(`button`,{class:`log-filter__badge-remove`,"aria-label":e(s)(`logFilter.removeFilter`),onClick:e=>se(t.id)},[...n[5]||=[l(`i`,{class:`ti ti-x`,style:{"font-size":`0.6rem`}},null,-1)]],8,Fe)],10,je))),128))])):D(``,!0),r(e(M),{ref_key:`popoverRef`,ref:O},{default:x(()=>[l(`div`,Ie,[l(`p`,Le,S(e(s)(`logFilter.newFilter`)),1),l(`div`,Re,[l(`button`,{class:p([`log-filter__type-btn`,A.value===`include`&&`log-filter__type-btn--active-include`]),onClick:n[1]||=e=>A.value=`include`},[n[6]||=l(`i`,{class:`ti ti-plus`},null,-1),i(` `+S(e(s)(`logFilter.include`)),1)],2),l(`button`,{class:p([`log-filter__type-btn`,A.value===`exclude`&&`log-filter__type-btn--active-exclude`]),onClick:n[2]||=e=>A.value=`exclude`},[n[7]||=l(`i`,{class:`ti ti-minus`},null,-1),i(` `+S(e(s)(`logFilter.exclude`)),1)],2)]),l(`div`,ze,[l(`label`,Be,S(e(s)(`logFilter.regex`)),1),l(`button`,{id:`logfilter-regex-toggle`,class:p([`log-filter__regex-toggle`,j.value&&`log-filter__regex-toggle--on`]),onClick:n[3]||=e=>{j.value=!j.value,N.value=``}},` .* `,2)]),l(`div`,Ve,[r(e(te),{modelValue:k.value,"onUpdate:modelValue":n[4]||=e=>k.value=e,placeholder:j.value?e(s)(`logFilter.regexPlaceholder`):e(s)(`logFilter.filterPlaceholder`),class:`log-filter__popover-input`,invalid:!!N.value,autofocus:``,onInput:oe,onKeydown:ae},null,8,[`modelValue`,`placeholder`,`invalid`]),N.value?(v(),u(`p`,He,S(N.value),1)):D(``,!0)]),l(`div`,Ue,[r(e(F),{label:e(s)(`logFilter.add`),icon:`ti ti-check`,size:`small`,disabled:!k.value.trim(),onClick:ie},null,8,[`label`,`disabled`]),r(e(F),{label:e(s)(`logFilter.cancel`),size:`small`,severity:`secondary`,variant:`text`,onClick:re},null,8,[`label`])])])]),_:1},512)]))}}),[[`__scopeId`,`data-v-69deb3b1`]]),Ge,{min:X,max:Z,abs:Ke,floor:qe}=Math,Je=(e,t,n)=>X(n,Z(t,e)),Ye=e=>e.sort((e,t)=>e-t),Xe=setTimeout,Ze=clearTimeout,Qe=typeof queueMicrotask==`function`?queueMicrotask:e=>{Promise.resolve().then(e)},$e=()=>{let e;return[new Promise(t=>{e=t}),e]},et=e=>e.ownerDocument,tt=e=>e.defaultView,nt=()=>(Ge??=/iP(hone|od|ad)/.test(navigator.userAgent)||navigator.platform===`MacIntel`&&navigator.maxTouchPoints>0,Ge),rt=e=>Z(e.t(),e.o()),it=({l:e,i:t,u:n,p:r,m:i,h:a,t:o,S:s,v:c,I:l},u=0)=>{let d=!!l,f=!!u,p=1,m=0,h=0,g=0,_=0,v=0,y=0,b=0,x=0,S=null,C=[0,f?Z(u-1,0):-1],w=0,T=!1,E=new Set,D=()=>g-h,O=()=>D()+v+_,k=e=>n(e)-v,A=e=>{e&&(nt()&&b!==0||S&&x===1?v+=e:_+=e)};return{k:()=>{E.clear()},O:()=>p,l:(t=200)=>{if(!T||f)return C;let n,r;if(y)[n,r]=C;else{let i=Z(0,O()),a=i+m;d||(t=Z(0,t),b!==1&&(i-=t),b!==2&&(a+=t)),[n,r]=C=e(Z(0,i),Z(0,a)),S&&(n=X(n,S[0]),r=Z(r,S[1]))}return[Z(n,0),X(r,s()-1)]},T:e=>t(e-h),R:a,u:k,p:r,N:s,A:()=>g,M:()=>b!==0,o:()=>m,C:()=>h,t:o,j:()=>(y=_,_=0,[y,x===2]),q:(e,t)=>{let n=[e,t];return E.add(n),()=>{E.delete(n)}},P:(n,s)=>{let u,C,j=0;switch(n){case 1:{if(s===g&&x===0)break;let e=y;y=0;let t=s-g,n=Ke(t);e&&n<Ke(e)+1||x!==0||(b=t<0?2:1),f&&=!1,g=s,j=4;let r=D();r>=-m&&r<=o()&&(j+=1,C=n>m);break}case 2:j=8,b!==0&&(u=!0,j+=1),b=0,x=0,S=null;break;case 3:{let e=s.filter(([e,t])=>!a(e,t));if(!e.length)break;A(e.reduce((e,[t,n])=>{let i;if(x===2)i=!0;else if(S&&x===1)i=t<S[0];else{let e=D(),n=k(t),a=r(t);i=b!==1&&x===0?n+a<=e:n<e&&n+a<e+m}return i&&(e+=n-r(t)),e},0));for(let[t,n]of e){let e=r(t),a=i(t,n);d&&(w+=a?n:n-e)}d&&m&&w>m&&(A(l(t(O()))),d=!1),j=3,C=!0;break}case 4:m!==s&&(m||(T=C=!0),m=s,j=3);break;case 5:s[1]?(A(c(s[0],!0)),x=2,j=1):(c(s[0]),j=1);break;case 6:h=s;break;case 7:x=1;break;case 9:A(s),j=3;break;case 8:S=e(s,s+m),j=1}j&&(p=1+(2147483647&p),u&&v&&(_+=v,v=0),E.forEach(([e,t])=>{j&e&&t(C)}))}}},Q=(e,t,n)=>{let r=n?`unshift`:`push`;for(let n=0;n<t;n++)e[r](-1);return e},$=(e,t,n,r=0,i=t-1)=>{let a=r;for(;r<=i;){let t=qe((r+i)/2);e(t)<=n?(a=t,r=t+1):i=t-1}return Je(a,0,t-1)},at=(e,t,n)=>{let r=n&&n[1]||t||40,i=-1,a=0,o=n&&n[0],s=o?Q(o.slice(0,X(e,o.length)),Z(0,e-o.length)):Q([],e),c=Q([],e+1),l=e=>{let t=s[e];return t===-1?r:t},u=t=>{if(!e)return 0;if(i>=t)return c[t];i<0&&(c[0]=0,i=0);let n=i,r=c[n];for(;n<t;)r+=l(n),c[++n]=r;return i=t,r};return{l:(t,n)=>{let r,i;return a=X(a,e-1),u(a)<=t?(i=$(u,e,n,a),r=$(u,e,t,a,i)):(r=$(u,e,t,void 0,a),i=$(u,e,n,r)),a=r,[r,i]},i:t=>$(u,e,t),u,p:l,m:(e,t)=>{let n=s[e]===-1;return s[e]=t,i=X(e,i),n},h:(e,t=-1)=>s[e]===t,t:()=>u(e),S:()=>e,v:(t,n)=>{let a=t-e;return i=n?-1:X(t-1,i),e=t,a>0?(Q(c,a),Q(s,a,n),r*a):(c.splice(a),(n?s.splice(0,-a):s.splice(a)).reduce((e,t)=>e-(t===-1?r:t),0))},I:t?void 0:e=>{let t=0,n=[];s.forEach((r,i)=>{r!==-1&&(r&&n.push(r),i<e&&t++)}),i=-1,Ye(n);let a=n.length,o=a/2|0,c=a%2==0?(n[o-1]+n[o])/2:n[o],l=r;return((r=c)-l)*Z(e-t,0)},B:()=>[s.slice(),r]}},ot=e=>{let t;return{X(n){(t||=new(tt(et(n))).ResizeObserver(e)).observe(n)},Y(e){t.unobserve(e)},J(){t&&t.disconnect()}}},st=(e,t,n,r,i,a,o)=>{let s,c,l=0,u=!1,d=!1,f=!1,p=!1,m=Date.now,h=r?`scrollLeft`:`scrollTop`,g=r?`left`:`top`,_=e=>i?-e:e,v=()=>_(n[h]),y=(e,t)=>{n.scrollTo({[g]:_(e),behavior:t?`smooth`:`instant`})},b=()=>{if(u||d)return u=!1,void x();f=!1,e.P(2)},x=()=>{Ze(c),c=Xe(b,150)},S=()=>{l=m(),f&&(p=!0),o&&e.P(6,o()),e.P(1,v()),x()},C=t=>{if(u||!e.M()||t.ctrlKey)return;let n=m()-l;150>n&&50<n&&(r?t.deltaX:t.deltaY)&&(u=!0)},w=()=>{d=!0,f=p=!1},T=()=>{d=!1,nt()&&(f=!0)};return t.addEventListener(`scroll`,S),t.addEventListener(`wheel`,C,{passive:!0}),t.addEventListener(`touchstart`,w,{passive:!0}),t.addEventListener(`touchend`,T,{passive:!0}),{J:()=>{t.removeEventListener(`scroll`,S),t.removeEventListener(`wheel`,C),t.removeEventListener(`touchstart`,w),t.removeEventListener(`touchend`,T),Ze(c)},U:()=>{let[t,r]=e.j();if(!t)return;p&&a&&a(),p=!1;let i=e.A()+t;i<=0||i>=e.C()+e.t()-e.o()?y(i):n.scrollBy({[g]:_(t),behavior:`instant`}),r&&(s&&s(),e.o()>e.t()&&e.P(1,v()))},G:(t,n)=>{let r,i,a;s&&s();let o=s=()=>{r=!0,Ze(i),a&&a()},c=()=>{if(!r){if(e.o()&&(Ze(i),i=Xe(o,150)),n){for(let[t,n]=e.l(0);t<=n;t++)if(e.R(t))return;o()}e.P(7),y(t(),n)}},l=()=>{if(r)return;let t;a=e.q(2,()=>{t||(t=!0,Qe(()=>{t=!1,c()}))}),c()};n?(e.P(8,t()),Qe(l)):l()}}},ct=(e,t)=>{e.K(()=>t)},lt=(e,t,n,{align:r,smooth:i,offset:a=0}={})=>{if(n=Je(n,0,t.N()-1),r===`nearest`){let e=t.u(n),i=t.A();if(e<i)r=`start`;else{if(!(e+t.p(n)>i+t.o()))return;r=`end`}}e.K(()=>a+e.Z()+t.u(n)+(r===`end`?t.p(n)-t.o():r===`center`?(t.p(n)-t.o())/2:0),i)},ut=_(e=>{let n=t(),i=g(()=>e.ee.value&&e.te.u(e.oe)),o=g(()=>e.ee.value&&e.te.R(e.oe)),s=g(()=>e.re({item:e.ne,index:e.oe}));return a(()=>n.value&&e.oe,(t,r,i)=>{i(e.se(n.value,e.oe))},{flush:`post`}),()=>{let{le:t,ie:a,ce:c,oe:l,ne:u}=e,d=o.value,{style:f,...p}=e.ae?.({item:u,index:l})||{},h={contain:`layout style`,position:d&&a?void 0:`absolute`,[t?`height`:`width`]:`100%`,[t?`top`:`left`]:`0px`,[t?`insetInlineStart`:`top`]:i.value+`px`,visibility:!d||a?void 0:`hidden`,...f};return t&&(h.display=`inline-flex`),r(c,m({ref:n,style:h},p),{default:()=>[s.value]},16,[`style`])}},{props:{ee:null,te:null,re:null,ne:null,se:null,oe:null,le:null,ie:null,ce:null,ae:null}}),dt=(e,t)=>{if(e.length===1){let t=e[0].key;if(t!=null)return t}return`_`+t},ft=(e,t)=>e[0]===t[0]&&e[1]===t[1],pt=_({props:{data:{type:Array,required:!0},bufferSize:Number,itemSize:Number,shift:Boolean,horizontal:Boolean,startMargin:{type:Number,default:0},ssrCount:Number,scrollRef:Object,as:{type:String,default:`div`},item:{type:String,default:`div`},itemProps:Function,keepMounted:Array,cache:Object},emits:[`scroll`,`scrollEnd`],setup(e,{emit:n,expose:i,slots:o}){let s=!!e.ssrCount,l=e.horizontal,u=t(),d=at(e.data.length,e.itemSize,e.cache),p=it(d,e.ssrCount),m=((e,t)=>{let n,r,i=$e(),a=new WeakMap,o=ot(r=>{let i=[];for(let{target:o,contentRect:{width:s,height:c}}of r)if(o===n)(s||c)&&e.P(4,t?s:c);else if(o.offsetParent){let e=a.get(o);e!=null&&i.push([e,t?s:c])}i.length&&e.P(3,i)});return{ue(a,s=a.parentElement){o.X(n=s),r=st(e,s,s,t,t&&getComputedStyle(s).direction===`rtl`,()=>{let e=t?`overflowX`:`overflowY`,n=s.style,r=n[e];n[e]=`hidden`,Xe(()=>{n[e]=r})}),i[1](!0)},k(){o.J(),r&&r.J(),i[1](!1),i=$e()},fe:(e,t)=>(a.set(e,t),o.X(e),()=>{a.delete(e),o.Y(e)}),async K(e,t){await i[0]&&r.G(e,t)},de(){r&&r.U()},Z:e.C}})(p,l),_=t(p.O());p.q(1,()=>{_.value=p.O()}),p.q(4,()=>{n(`scroll`,p.A())}),p.q(8,()=>{n(`scrollEnd`)});let v=g(t=>{_.value;let n=p.l(e.bufferSize);return t&&ft(t,n)?t:n}),y=g(()=>_.value&&p.M()),b=g(()=>_.value&&p.t());return f(()=>{s=!1;let t=u.value,n=requestAnimationFrame(()=>{m.ue(t,e.scrollRef)});h(()=>{cancelAnimationFrame(n)})}),h(()=>{p.k(),m.k()}),a(()=>e.data.length,t=>{p.P(5,[t,e.shift])}),a(()=>e.startMargin,e=>{p.P(6,e)},{immediate:!0}),a([_],()=>{m.de()},{flush:`post`}),i({get cache(){return d.B()},get scrollOffset(){return p.A()},get scrollSize(){return rt(p)},get viewportSize(){return p.o()},findItemIndex:p.T,getItemOffset:p.u,getItemSize:p.p,scrollToIndex:(e,t)=>lt(m,p,e,t),scrollTo:e=>ct(m,e),scrollBy:e=>((e,t,n)=>{ct(e,n+t.A())})(m,p,e)}),()=>{let t=e.as,n=e.item,i=b.value,a=[],d=t=>{let i=o.default({item:e.data[t],index:t});return r(ut,{key:dt(i,t),ee:_,te:p,se:m.fe,oe:t,re:o.default,ne:e.data[t],le:l,ie:s,ce:n,ae:e.itemProps},null,8,[`ee`,`te`,`se`,`oe`,`re`,`ne`,`le`,`ie`,`ce`,`ae`])};if(e.keepMounted){let t=e.data.length,n=new Set(e.keepMounted);for(let[e,t]=v.value;e<=t;e++)n.add(e);Ye([...n]).forEach(e=>{e<t&&a.push(d(e))})}else for(let[e,t]=v.value;e<=t;e++)a.push(d(e));return r(t,{ref:u,style:{contain:`size style`,overflowAnchor:`none`,flex:`none`,position:`relative`,width:l?i+`px`:`100%`,height:l?`100%`:i+`px`,pointerEvents:y.value?`none`:void 0}},typeof(f=a)==`function`||Object.prototype.toString.call(f)===`[object Object]`&&!c(f)?a:{default:()=>[a],_:2},8,[`style`]);var f}}}),mt=_({props:{data:{type:Array,required:!0},bufferSize:Number,itemSize:Number,shift:Boolean,horizontal:Boolean,ssrCount:Number,itemProps:Function,keepMounted:Array,cache:Object},emits:[`scroll`,`scrollEnd`],setup(e,{emit:n,expose:i,slots:a}){let o=e.horizontal,s=e=>{n(`scroll`,e)},l=()=>{n(`scrollEnd`)},u=t();return i({get cache(){return u.value.cache},get scrollOffset(){return u.value.scrollOffset},get scrollSize(){return u.value.scrollSize},get viewportSize(){return u.value.viewportSize},findItemIndex:(...e)=>u.value.findItemIndex(...e),getItemOffset:(...e)=>u.value.getItemOffset(...e),getItemSize:(...e)=>u.value.getItemSize(...e),scrollToIndex:(...e)=>u.value.scrollToIndex(...e),scrollTo:(...e)=>u.value.scrollTo(...e),scrollBy:(...e)=>u.value.scrollBy(...e)}),()=>{return r(`div`,{style:{display:o?`inline-block`:`block`,[o?`overflowX`:`overflowY`]:`auto`,contain:`strict`,width:`100%`,height:`100%`}},[r(pt,{ref:u,data:e.data,bufferSize:e.bufferSize,itemSize:e.itemSize,itemProps:e.itemProps,shift:e.shift,ssrCount:e.ssrCount,horizontal:o,keepMounted:e.keepMounted,cache:e.cache,onScroll:s,onScrollEnd:l},(t=a,typeof t==`function`||Object.prototype.toString.call(t)===`[object Object]`&&!c(t)?a:{default:()=>[a],_:2}),8,[`data`,`bufferSize`,`itemSize`,`itemProps`,`shift`,`ssrCount`,`horizontal`,`keepMounted`,`cache`,`onScroll`,`onScrollEnd`])],4);var t}}}),ht={class:`log-viewer`},gt={class:`log-viewer__toolbar`},_t={class:`log-viewer__toolbar-right`},vt={class:`log-viewer__count`},yt=[`title`],bt=[`title`],xt={class:`log-viewer__pin-wrap`},St=[`title`],Ct={key:0,class:`log-viewer__loading`},wt={key:1,class:`log-viewer__scroll log-viewer__empty`},Tt={class:`log-viewer__simple-line`},Et={key:0,class:`log-viewer__time-separator`},Dt={class:`log-viewer__time-separator-label`},Ot=150,kt=2e3,At=I(_({__name:`LogViewer`,props:{logs:{},loading:{type:Boolean,default:!1},receivedPerSec:{default:void 0},flushedPerSec:{default:void 0},processStartedAt:{default:void 0},showStats:{type:Boolean,default:!1},serviceLabel:{default:void 0}},emits:[`filter-change`,`log-click`],setup(o,{emit:s}){let c=o,p=s,{t:m}=ee(),h=[10,50,100,200,500,1e3,2e3,5e3,1e4],_=t(500),y=t({levels:[...L],filters:[]}),T=t(!0),E=t(null),O=t(!1),k=t(!1),A=t(0),j;function M(e){let t=0;for(let n of e)n.hidden&&!n.logCard&&t++;return t}function te(e){if(j===void 0)return null;for(let t=e.length-1;t>=0;t--)if(e[t].id===j)return e.slice(t+1);return null}function P(e){let t=e.length>_.value?e.slice(e.length-_.value):e;j=t[t.length-1]?.id,H.value=M(t),ge(t),T.value&&C(()=>C(q))}function I(e){e.length!==0&&(j=e[e.length-1].id,H.value+=M(e),he(e,pe(),B.value),B.value.length>_.value?B.value=B.value.slice(B.value.length-_.value):n(B),T.value&&C(q))}function R(){if(A.value===0)return;A.value=0;let e=c.logs,t=te(e);t===null?P(e):I(t)}a(()=>c.logs,e=>{if(e.length===0){j=void 0,A.value=0,H.value=0,ge([]);return}if(!T.value){let t=te(e);A.value=t===null?e.length:t.length;return}if(j===void 0){P(e);return}let t=te(e);t===null?P(e):I(t)},{deep:!1}),f(()=>{c.logs.length>0&&P(c.logs)});let z=new WeakMap;function de(e){if(z.has(e))return z.get(e);try{let t=new RegExp(e.pattern,`i`);return z.set(e,t),t}catch{return z.set(e,null),null}}function fe(e,t){if(e.isRegex){let n=de(e);return n?n.test(t):!1}return t.toLowerCase().includes(e.pattern.toLowerCase())}function pe(){return{levelSet:new Set(y.value.levels),filterAll:y.value.levels.length>=L.length,includes:y.value.filters.filter(e=>e.type===`include`),excludes:y.value.filters.filter(e=>e.type===`exclude`),hidden:O.value}}function me(e,t){return!(!t.hidden&&e.hidden||!t.filterAll&&!t.levelSet.has(e.level)||t.includes.length>0&&!t.includes.some(t=>fe(t,e.message))||t.excludes.some(t=>fe(t,e.message)))}let B=t([]),V=new Map;function he(e,t,n){for(let r of e){let e=r.logCard;if(e){if(e.state===`self`){me(r,t)&&n.push({...r,_type:`log`});continue}if(e.state===`open`){let t={_type:`card`,id:e.id,type:e.type,header:e.header,collapsable:e.collapsable??!0,defaultCollapsed:e.collapsed??!1,body:[]};V.set(e.id,t),n.push(t);continue}if(e.state===`close`){V.delete(e.id);continue}let i=V.get(e.id);i&&me(r,t)&&i.body.push(r);continue}me(r,t)&&n.push({...r,_type:`log`})}}function ge(e){V=new Map;let t=pe(),n=[];he(e,t,n),B.value=n}a([y,O,_],()=>{P(c.logs)});let H=t(0),U=t(null),W=t(null);a(()=>c.logs,e=>{if(e.length===0){U.value=null,W.value=null;return}let t=Date.now();U.value===null&&(U.value=t),W.value=t});let _e=g(()=>{if(U.value===null||W.value===null)return null;let e=W.value-U.value;return e<=0?null:e<1e3?`${e}ms`:e<6e4?`${(e/1e3).toFixed(1)}s`:e<36e5?`${Math.floor(e/6e4)}m ${Math.floor(e%6e4/1e3)}s`:`${Math.floor(e/36e5)}h ${Math.floor(e%36e5/6e4)}m`}),G=0,K=0;function q(){E.value&&B.value.length!==0&&(G=Date.now()+Ot,E.value.scrollToIndex(B.value.length-1,{align:`end`}))}function ve(e){let t=e<K;if(!t&&Date.now()<G){K=e;return}if(K=e,!E.value)return;let n=E.value.scrollSize-e-E.value.viewportSize;T.value?t&&n>1&&(T.value=!1):n<=1&&(T.value=!0,R(),C(q))}function ye(){T.value=!T.value,T.value&&(R(),C(q))}f(()=>{T.value&&C(q)});function be(e){y.value=e}function xe(e){p(`log-click`,e)}let Se=t(null),Y=t(!1),Ce=ie(),{openWithContext:we}=se(),Ee=``;function De(){let e=window.getSelection();return e&&e.toString().trim()?e.toString().trim():``}function Oe(){return B.value.map(e=>e._type===`card`?e.body.map(e=>`[${e.level}] ${e.message}`).join(`
2
+ `):`[${e.level}] ${e.message}`).join(`
3
+ `)}function ke(){Ee=De(),Y.value=!0}let{available:Ae}=le(),je=t(null);function Me(){let e=De()||Fe();e.trim()&&je.value?.open(e)}function Ne(e,t,n){Y.value=!1,Se.value?.showScenarioDialog(e,void 0,t,n??void 0)}async function Pe(e,t){Y.value=!1,await Ie(e===`keep`?void 0:e,t??void 0)}function Fe(){let e=Ee||Oe();return c.serviceLabel?`Service: ${c.serviceLabel}\n\n${e}`:e}async function Ie(e,t){let n=Fe();n.trim()&&(await Ce.createConversation({runner:e,providerId:t}),we({text:n,label:m(`logViewer.logsContext`),icon:`ti-list`}))}async function Le(e,t,n,r){let i=Fe(),a=t||i,o=await Ce.createConversation({scenarioId:e,scenarioInput:a});if(a&&o){let t=n!==`keep`||r.trim()?{...n===`keep`?{}:{runnerOverride:n},...r.trim()?{modelOverride:r.trim()}:{}}:void 0;Ce.startScenarioRun(o.id,e,a,void 0,t)}we({text:i,label:m(`logViewer.logsContext`),icon:`ti-list`})}function Re(e){return e._type===`card`?e.body[0]?.timestamp??``:e.timestamp}function ze(e){if(e===0)return!0;let t=B.value[e-1],n=B.value[e];return new Date(Re(n)).getTime()-new Date(Re(t)).getTime()>kt}function Be(e){return new Date(e).toLocaleString()}return(t,n)=>(v(),u(`div`,ht,[l(`div`,gt,[r(We,{"model-value":y.value,"onUpdate:modelValue":be},null,8,[`model-value`]),l(`div`,_t,[!k.value&&H.value>0?(v(),w(e(F),{key:0,icon:O.value?`ti ti-eye`:`ti ti-eye-off`,severity:O.value?`warn`:`secondary`,variant:`text`,rounded:``,size:`small`,"aria-label":O.value?e(m)(`logViewer.showingHidden`):e(m)(`logViewer.hiddenFiltered`),title:e(m)(`logViewer.hiddenLogsToggle`,{n:H.value}),onClick:n[0]||=e=>O.value=!O.value},null,8,[`icon`,`severity`,`aria-label`,`title`])):D(``,!0),l(`span`,vt,[i(S(k.value?c.logs.length:B.value.length)+` / `,1),r(e(ne),{modelValue:_.value,"onUpdate:modelValue":n[1]||=e=>_.value=e,options:h,size:`small`,class:`log-viewer__limit-select`,title:e(m)(`logViewer.maxLines`)},null,8,[`modelValue`,`title`])]),c.showStats&&_e.value!==null?(v(),u(`span`,{key:1,class:`log-viewer__stats`,title:e(m)(`logViewer.timeSpan`)},`⏱ `+S(_e.value),9,yt)):D(``,!0),c.showStats&&c.receivedPerSec!==void 0?(v(),u(`span`,{key:2,class:`log-viewer__stats`,title:e(m)(`logViewer.throughput`)},`↓`+S(c.receivedPerSec)+`/s · ⬡`+S(c.flushedPerSec)+`/s`,9,bt)):D(``,!0),r(e(F),{icon:k.value?`ti ti-code`:`ti ti-align-left`,severity:k.value?`warn`:`secondary`,variant:`text`,rounded:``,size:`small`,"aria-label":k.value?e(m)(`logViewer.simpleModeOn`):e(m)(`logViewer.simpleModeOff`),title:e(m)(`logViewer.toggleSimple`),onClick:n[2]||=e=>k.value=!k.value},null,8,[`icon`,`severity`,`aria-label`,`title`]),r(e(F),{icon:`ti ti-brain`,severity:`secondary`,variant:`text`,rounded:``,size:`small`,"aria-label":e(m)(`logViewer.sendToAi`),title:e(m)(`logViewer.sendToAiTitle`),onClick:ke},null,8,[`aria-label`,`title`]),e(Ae)?(v(),w(e(F),{key:3,icon:e(ce),severity:`secondary`,variant:`text`,rounded:``,size:`small`,"aria-label":e(m)(`logViewer.sendToChat`),title:e(m)(`logViewer.sendToChat`),onClick:Me},null,8,[`icon`,`aria-label`,`title`])):D(``,!0),l(`div`,xt,[r(e(F),{icon:T.value?`ti ti-player-pause`:`ti ti-arrow-down`,severity:T.value?`success`:`secondary`,variant:`text`,rounded:``,size:`small`,"aria-label":T.value?e(m)(`logViewer.autoScrollOn`):e(m)(`logViewer.autoScrollOff`),title:T.value?e(m)(`logViewer.live`):e(m)(`logViewer.paused`),onClick:ye},null,8,[`icon`,`severity`,`aria-label`,`title`]),!T.value&&A.value>0?(v(),u(`span`,{key:0,class:`log-viewer__waiting-badge`,title:e(m)(`logViewer.waitingLogs`,{n:A.value})},S(A.value>999?`999+`:A.value),9,St)):D(``,!0)])])]),o.loading&&c.logs.length===0?(v(),u(`div`,Ct,[r(e(N),{style:{width:`2rem`,height:`2rem`}}),l(`span`,null,S(e(m)(`logViewer.loading`)),1)])):B.value.length===0?(v(),u(`div`,wt,S(e(m)(`logViewer.empty`)),1)):k.value?(v(),w(e(mt),{key:2,ref_key:`listRef`,ref:E,data:c.logs,class:`log-viewer__scroll`,onScroll:ve},{default:x(({item:e})=>[l(`span`,Tt,S(e.raw),1)]),_:1},8,[`data`])):(v(),w(e(mt),{key:3,ref_key:`listRef`,ref:E,data:B.value,class:`log-viewer__scroll`,onScroll:ve},{default:x(({item:e,index:t})=>[ze(t)?(v(),u(`div`,Et,[n[4]||=l(`span`,{class:`log-viewer__time-separator-line`},null,-1),l(`span`,Dt,S(Be(Re(e))),1),n[5]||=l(`span`,{class:`log-viewer__time-separator-line`},null,-1)])):D(``,!0),e._type===`card`?(v(),w(J,{key:1,icon:`🐋`,title:e.header,color:`#1d4ed8`,"default-collapsed":e.defaultCollapsed,"last-line":e.body.length>0?e.body[e.body.length-1].message:void 0},{default:x(()=>[(v(!0),u(b,null,d(e.body,e=>(v(),w(Te,{key:e.id,log:e,onClick:xe},null,8,[`log`]))),128))]),_:2},1032,[`title`,`default-collapsed`,`last-line`])):(v(),w(Te,{key:2,log:e,onClick:xe},null,8,[`log`]))]),_:1},8,[`data`])),r(e(re),{visible:Y.value,header:e(m)(`kanban.board.launchAiDialog.header`),modal:!0,style:{width:`700px`,maxHeight:`80vh`},"onUpdate:visible":n[3]||=e=>{e||(Y.value=!1)}},{default:x(()=>[r(ae,{compact:``,onSelectScenario:Ne,onSkip:Pe})]),_:1},8,[`visible`,`header`]),r(oe,{ref_key:`aiModalsRef`,ref:Se,onConfirmScenarioStart:Le},null,512),e(Ae)?(v(),w(ue,{key:4,ref_key:`sendToChatRef`,ref:je},null,512)):D(``,!0)]))}}),[[`__scopeId`,`data-v-cf3a9fec`]]);export{At as t};
@@ -0,0 +1 @@
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,g as s,k as c,mt as l,o as u,qt as d,rn as f,v as p,y as m}from"./runtime-core.esm-bundler-DujKY9QV.js";import{n as h}from"./vue-i18n-o7yraQpR.js";import{J as g,W as _,Y as v,dt as y,ft as b,w as x}from"./src-DIBHat7I.js";import{r as S}from"./trpc-BAZGRZBD.js";import{n as C,r as w}from"./error-DpF7X5iu.js";var T={own:`settingsPage.orgKeySourceOwn`,machine:`settingsPage.orgKeySourceMachine`,locked:`settingsPage.orgKeySourceLocked`};async function E(){return S.setup.getOrgKeys.query()}function D(e){return e.unreadable.apiKeys+e.unreadable.conversations+e.unreadable.secrets}function O(e){return!e.vault||e.vault.source===`locked`||e.syncMismatch?!0:e.canary!==`ok`}function k(e){return e.hasCanary?e.locked?e.isCurrentKey?`ok`:`no`:e.isCurrentKey?`current`:`differs`:`unverifiable`}function A(e){return e===`ok`||e===`differs`||e===`unverifiable`}var j={class:`org-key`},M={class:`org-key__hint`},N={class:`org-key__row`},P={class:`org-key__row`},F=b(c({__name:`OrgKeyPrompt`,props:{orgId:{},reference:{},title:{},hint:{},confirmLabel:{}},emits:[`close`,`adopted`],setup(c,{emit:b}){let T=c,E=b,{t:D}=h(),O=t(``),F=t(``),I=t(void 0),L=t(!1),R=t(``);i(()=>T.orgId,()=>{O.value=``,F.value=``,I.value=void 0,R.value=``});function z(e){return/^[0-9a-f]{64}$/i.test(e.trim())}let B=s(()=>{switch(I.value){case`ok`:return D(`settingsPage.adoptKeyMatch`);case`differs`:return D(`settingsPage.adoptKeyDiffers`);default:return D(`settingsPage.adoptKeyNoCanary`)}});async function V(){if(T.orgId){L.value=!0,R.value=``;try{if(T.reference===`cloud`){let e=await S.cloudSync.checkOrgKey.query({orgId:T.orgId,keyHex:O.value.trim()});I.value=e.matches?`ok`:`no`}else{let e=await S.setup.checkOrgKeyLocal.query({orgId:T.orgId,keyHex:O.value.trim()});I.value=k(e)}}catch(e){I.value=void 0,R.value=C(e)??``}finally{L.value=!1}}}async function H(){if(T.orgId){L.value=!0,R.value=``;try{await S.cloudSync.adoptOrgKey.mutate({orgId:T.orgId,keyHex:O.value.trim(),masterPassword:F.value}),E(`adopted`)}catch(e){R.value=w(e,D)}finally{L.value=!1}}}return(t,i)=>(l(),p(e(v),{visible:c.orgId!==null,"onUpdate:visible":i[2]||=e=>{e||E(`close`)},header:c.title,modal:``,style:{width:`30rem`}},{default:d(()=>[a(`div`,j,[a(`p`,M,f(c.hint),1),a(`div`,N,[n(e(g),{modelValue:O.value,"onUpdate:modelValue":i[0]||=e=>O.value=e,placeholder:e(D)(`settingsPage.adoptKeyPlaceholder`),autocomplete:`off`},null,8,[`modelValue`,`placeholder`]),n(e(y),{label:e(D)(`settingsPage.adoptKeyCheck`),size:`small`,variant:`outlined`,disabled:!z(O.value)||L.value,onClick:V},null,8,[`label`,`disabled`])]),I.value===`no`?(l(),p(e(_),{key:0,severity:`warn`},{default:d(()=>[r(f(e(D)(`settingsPage.adoptKeyNoMatch`)),1)]),_:1})):I.value===`current`?(l(),p(e(_),{key:1,severity:`info`},{default:d(()=>[r(f(e(D)(`settingsPage.adoptKeyAlreadyCurrent`)),1)]),_:1})):m(``,!0),e(A)(I.value)?(l(),o(u,{key:2},[n(e(_),{severity:I.value===`ok`?`success`:`warn`},{default:d(()=>[r(f(B.value),1)]),_:1},8,[`severity`]),a(`div`,P,[n(e(x),{modelValue:F.value,"onUpdate:modelValue":i[1]||=e=>F.value=e,placeholder:e(D)(`settingsPage.masterPassword`),feedback:!1,toggleMask:``,class:`org-key__grow`},null,8,[`modelValue`,`placeholder`]),n(e(y),{label:c.confirmLabel,size:`small`,disabled:!F.value||L.value,loading:L.value,onClick:H},null,8,[`label`,`disabled`,`loading`])])],64)):m(``,!0),R.value?(l(),p(e(_),{key:3,severity:`error`},{default:d(()=>[r(f(R.value),1)]),_:1})):m(``,!0)])]),_:1},8,[`visible`,`header`]))}}),[[`__scopeId`,`data-v-2cdaec32`]]);export{D as a,O as i,T as n,E as r,F as t};
@@ -0,0 +1 @@
1
+ .process-controls[data-v-f03e6251]{align-items:center;gap:.5rem;display:flex}
@@ -0,0 +1 @@
1
+ import{B as e,C as t}from"./reactivity.esm-bundler-BQ9SB2vv.js";import{Ct as n,D as r,Yt as i,b as a,k as o,mt as s,o as c,v as l,y as u}from"./runtime-core.esm-bundler-DujKY9QV.js";import{n as d}from"./vue-i18n-o7yraQpR.js";import{P as f,dt as p,ft as m}from"./src-DIBHat7I.js";import{r as h}from"./error-DpF7X5iu.js";import{c as g}from"./index-Ci2CNnit.js";var _={class:`process-controls`},v=m(o({__name:`ProcessControls`,props:{agentId:{},processId:{},state:{},compact:{type:Boolean}},emits:[`action`],setup(o,{emit:m}){let v=o,y=m,b=f(),x=g(),{t:S}=d(),C=t(null),w=e=>e===`stopped`||e===`errored`,T=e=>e===`running`||e===`starting`,E=e=>e===`running`;async function D(){C.value=`start`;try{await x.start(v.agentId,v.processId)}catch(e){b.add({severity:`error`,summary:S(`processControls.startFailed`),detail:e?.message?h(e,S):S(`processControls.startServiceFailed`),life:5e3})}finally{C.value=null,y(`action`,`start`)}}async function O(){C.value=`stop`;try{await x.stop(v.agentId,v.processId)}catch(e){b.add({severity:`error`,summary:S(`processControls.stopFailed`),detail:e?.message?h(e,S):S(`processControls.stopServiceFailed`),life:5e3})}finally{C.value=null,y(`action`,`stop`)}}async function k(){C.value=`restart`;try{await x.restart(v.agentId,v.processId)}catch(e){b.add({severity:`error`,summary:S(`processControls.restartFailed`),detail:e?.message?h(e,S):S(`processControls.restartServiceFailed`),life:5e3})}finally{C.value=null,y(`action`,`restart`)}}return(t,o)=>{let d=n(`tooltip`);return s(),a(`div`,_,[w(v.state)?i((s(),l(e(p),{key:0,icon:`ti ti-player-play`,label:v.compact?void 0:e(S)(`actions.start`),"aria-label":e(S)(`actions.start`),severity:`success`,size:`small`,variant:v.compact?`text`:`filled`,rounded:v.compact,"data-testid":`process-start-btn`,disabled:C.value!==null,loading:C.value===`start`,onClick:D},null,8,[`label`,`aria-label`,`variant`,`rounded`,`disabled`,`loading`])),[[d,v.compact?e(S)(`actions.start`):void 0,void 0,{top:!0}]]):u(``,!0),T(v.state)?(s(),a(c,{key:1},[i(r(e(p),{icon:`ti ti-player-stop`,label:v.compact?void 0:e(S)(`actions.stop`),"aria-label":e(S)(`actions.stop`),severity:`danger`,size:`small`,variant:v.compact?`text`:`filled`,rounded:v.compact,disabled:C.value!==null,loading:C.value===`stop`,onClick:O},null,8,[`label`,`aria-label`,`variant`,`rounded`,`disabled`,`loading`]),[[d,v.compact?e(S)(`actions.stop`):void 0,void 0,{top:!0}]]),E(v.state)?i((s(),l(e(p),{key:0,icon:`ti ti-refresh`,label:v.compact?void 0:e(S)(`actions.restart`),"aria-label":e(S)(`actions.restart`),severity:`warn`,size:`small`,variant:v.compact?`text`:`filled`,rounded:v.compact,disabled:C.value!==null,loading:C.value===`restart`,onClick:k},null,8,[`label`,`aria-label`,`variant`,`rounded`,`disabled`,`loading`])),[[d,v.compact?e(S)(`actions.restart`):void 0,void 0,{top:!0}]]):u(``,!0)],64)):u(``,!0)])}}}),[[`__scopeId`,`data-v-f03e6251`]]);export{v as t};
@@ -0,0 +1 @@
1
+ import{B as e,C as t}from"./reactivity.esm-bundler-BQ9SB2vv.js";import{D as n,_ as r,b as i,ct as a,ft as ee,g as o,k as s,mt as c,o as te,rn as l,v as ne,y as u}from"./runtime-core.esm-bundler-DujKY9QV.js";import{n as re}from"./vue-i18n-o7yraQpR.js";import{g as ie}from"./useApi-s_02lHjl-DZYO2tHU.js";import{B as d,H as ae,U as oe,dt as f,ft as p}from"./src-DIBHat7I.js";import{r as m}from"./trpc-BAZGRZBD.js";import{t as h}from"./agent.store-piokQ9Dt.js";import{t as se}from"./ProcessControls-TEZutuxq.js";import{t as ce}from"./ProcessMetrics-1P6iE2Il.js";import{t as le}from"./LogViewer-DsusKk2b.js";var ue={class:`process-detail`},de={key:0,class:`process-detail__loading`},fe={key:1,class:`process-detail__error`},pe={class:`process-detail__header`},me={class:`process-detail__header-left`},he={class:`process-detail__title`},g={class:`process-detail__id`},_={key:0,class:`process-detail__metrics`},v={class:`section-title`},y={key:1,class:`process-detail__metrics-skeleton`},b={class:`metric-skeleton`},x={class:`metric-skeleton`},S={class:`process-detail__info`},C={class:`info-grid`},w={key:0,class:`info-item`},T={class:`info-label`},E={class:`info-value`},D={key:1,class:`info-item`},O={class:`info-label`},k={class:`info-value`},A={class:`info-item`},j={class:`info-label`},M={class:`info-value`},N={key:2,class:`info-item`},P={class:`info-label`},F={class:`info-value`},I={key:3,class:`info-item`},L={class:`info-label`},R={class:`info-value`},ge={key:4,class:`info-item info-item--wide`},_e={class:`info-label`},ve={class:`info-value info-value--path`,"data-testid":`process-cwd`},ye={class:`process-detail__logs`},be={class:`section-title`},xe={class:`process-detail__log-container`},z=p(s({__name:`ProcessDetailPage`,props:{agentId:{},processId:{}},setup(s){let p=s,z=ie(),{t:B}=re(),Se=h(),Ce=o(()=>V.value?.agentId?Se.agents.find(e=>e.config.id===V.value.agentId)?.config.name??V.value.agentId:null),V=t(null),H=t([]),U=t(null),W=t(!1),G=t(!0),K=t(!0),q=t(null),J=null,Y=null,X=null,Z={running:{severity:`success`,icon:`ti ti-circle-check`},stopped:{severity:`secondary`,icon:`ti ti-player-stop`},errored:{severity:`danger`,icon:`ti ti-circle-x`},starting:{severity:`warn`,icon:`ti ti-spin ti-loader-2`}},Q=o(()=>{let e=V.value?.state??`stopped`;return Z[e]??Z.stopped});async function $(){try{V.value=await m.process.get.query({agentId:p.agentId,id:p.processId})}catch(e){q.value=e instanceof Error?e.message:`Failed to load process`}}async function we(){K.value=!0;try{H.value=await m.process.logs.query({agentId:p.agentId,processId:p.processId})}catch{}finally{K.value=!1}}async function Te(){W.value=!0;try{U.value=await m.process.metrics.query({agentId:p.agentId,processId:p.processId})}catch{}finally{W.value=!1}}function Ee(){let e=m.process.onLog.subscribe({agentId:p.agentId,processId:p.processId},{onData(e){H.value=[...H.value,e],H.value.length>1e4&&(H.value=H.value.slice(H.value.length-1e4))}});J=()=>e.unsubscribe()}function De(){let e=m.process.onStatus.subscribe({agentId:p.agentId,processId:p.processId},{onData(e){V.value=e}});Y=()=>e.unsubscribe()}function Oe(){let e=m.process.onMetrics.subscribe({agentId:p.agentId,processId:p.processId},{onData(e){U.value=e}});X=()=>e.unsubscribe()}function ke(){$()}return a(async()=>{G.value=!0,await Promise.all([$(),we(),Te()]),G.value=!1,Ee(),De(),Oe()}),ee(()=>{J?.(),Y?.(),X?.()}),(t,a)=>(c(),i(`div`,ue,[G.value?(c(),i(`div`,de,[n(e(ae),{style:{width:`3rem`,height:`3rem`}}),r(`span`,null,l(e(B)(`processDetail.loading`)),1)])):q.value?(c(),i(`div`,fe,[a[2]||=r(`i`,{class:`ti ti-alert-triangle`,style:{"font-size":`2rem`,color:`var(--r-red-500)`}},null,-1),r(`p`,null,l(q.value),1),n(e(f),{label:e(B)(`processDetail.goBack`),icon:`ti ti-arrow-left`,severity:`secondary`,onClick:a[0]||=t=>e(z).back()},null,8,[`label`])])):V.value?(c(),i(te,{key:2},[r(`div`,pe,[r(`div`,me,[n(e(f),{icon:`ti ti-arrow-left`,variant:`text`,rounded:``,severity:`secondary`,"aria-label":e(B)(`processDetail.goBack`),onClick:a[1]||=t=>e(z).back()},null,8,[`aria-label`]),r(`div`,he,[r(`h1`,null,l(V.value.serviceId),1),r(`span`,g,l(V.value.id),1)]),n(e(oe),{value:V.value.state,severity:Q.value.severity,icon:Q.value.icon},null,8,[`value`,`severity`,`icon`])]),n(se,{"agent-id":p.agentId,"process-id":p.processId,state:V.value.state,onAction:ke},null,8,[`agent-id`,`process-id`,`state`])]),U.value||W.value?(c(),i(`section`,_,[r(`h2`,v,l(e(B)(`processDetail.metrics`)),1),U.value?(c(),ne(ce,{key:0,cpu:U.value.cpu,memory:U.value.memory},null,8,[`cpu`,`memory`])):(c(),i(`div`,y,[r(`div`,b,[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`})]),r(`div`,x,[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`})])]))])):u(``,!0),r(`section`,S,[r(`div`,C,[V.value.pid?(c(),i(`div`,w,[r(`span`,T,l(e(B)(`processDetail.pid`)),1),r(`span`,E,l(V.value.pid),1)])):u(``,!0),V.value.agentId?(c(),i(`div`,D,[r(`span`,O,l(e(B)(`processDetail.agent`)),1),r(`span`,k,l(Ce.value),1)])):u(``,!0),r(`div`,A,[r(`span`,j,l(e(B)(`processDetail.restarts`)),1),r(`span`,M,l(V.value.restartCount),1)]),V.value.startedAt?(c(),i(`div`,N,[r(`span`,P,l(e(B)(`processDetail.started`)),1),r(`span`,F,l(new Date(V.value.startedAt).toLocaleString()),1)])):u(``,!0),V.value.exitCode==null?u(``,!0):(c(),i(`div`,I,[r(`span`,L,l(e(B)(`processDetail.exitCode`)),1),r(`span`,R,l(V.value.exitCode),1)])),V.value.cwd?(c(),i(`div`,ge,[r(`span`,_e,l(e(B)(`processDetail.cwd`)),1),r(`span`,ve,l(V.value.cwd),1)])):u(``,!0)])]),r(`section`,ye,[r(`h2`,be,l(e(B)(`processDetail.logs`)),1),r(`div`,xe,[n(le,{logs:H.value,loading:K.value,"service-label":V.value?.serviceId},null,8,[`logs`,`loading`,`service-label`])])])],64)):u(``,!0)]))}}),[[`__scopeId`,`data-v-f8f4344d`]]);export{z as default};
@@ -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,nn as s,rn as c}from"./runtime-core.esm-bundler-DujKY9QV.js";import{n as l}from"./vue-i18n-o7yraQpR.js";import{I as u,ft as d}from"./src-DIBHat7I.js";var f={class:`process-metrics`},p={class:`metric-card`},m={class:`metric-card__header`},h={class:`metric-card__label`},g={class:`metric-card__value`},_={class:`metric-card`},v={class:`metric-card__header`},y={class:`metric-card__label`},b={class:`metric-card__value`},x={class:`metric-card__sub`},S=d(a({__name:`ProcessMetrics`,props:{cpu:{},memory:{}},setup(a){let d=a,{t:S}=l();function C(e){return e<1024?`${e} B`:e<1048576?`${(e/1024).toFixed(1)} KB`:e<1073741824?`${(e/1048576).toFixed(1)} MB`:`${(e/1073741824).toFixed(2)} GB`}let w=i(()=>Math.min(Math.round(d.cpu*100)/100,100)),T=i(()=>C(d.memory)),E=i(()=>d.cpu>=80?`#ef4444`:d.cpu>=50?`#f59e0b`:`#22c55e`);return(i,a)=>(o(),r(`div`,f,[n(`div`,p,[n(`div`,m,[a[0]||=n(`i`,{class:`ti ti-cpu`},null,-1),n(`span`,h,c(e(S)(`processMetrics.cpu`)),1)]),n(`div`,g,c(w.value)+`%`,1),t(e(u),{value:w.value,"show-value":!1,class:`metric-card__bar`,style:s({"--progress-fill":E.value})},null,8,[`value`,`style`])]),n(`div`,_,[n(`div`,v,[a[1]||=n(`i`,{class:`ti ti-database`},null,-1),n(`span`,y,c(e(S)(`processMetrics.memory`)),1)]),n(`div`,b,c(T.value),1),n(`div`,x,c(e(S)(`processMetrics.bytes`,{count:d.memory.toLocaleString()})),1)])]))}}),[[`__scopeId`,`data-v-0c146c1b`]]);export{S as t};
@@ -0,0 +1 @@
1
+ import{B as e,C as t}from"./reactivity.esm-bundler-BQ9SB2vv.js";import{$ as n,D as r,E as i,Ft as ee,Ht as a,_ as o,b as s,g as c,k as l,mt as u,o as d,qt as f,rn as p,v as m,y as h}from"./runtime-core.esm-bundler-DujKY9QV.js";import{C as g}from"./runtime-dom.esm-bundler-CyEVRK6B.js";import{n as te}from"./vue-i18n-o7yraQpR.js";import{n as _}from"./project-launch.store-CTmbl8UY.js";import{J as v,S as y,W as b,Y as x,dt as S,ft as C}from"./src-DIBHat7I.js";import{r as w}from"./trpc-BAZGRZBD.js";import{n as T}from"./project.store-CNC6_4r4.js";import{n as E}from"./cloud-auth-D_am4FlK.js";import{t as ne}from"./useProjectCatalog-BrvUGv9A.js";import{r as D,t as re}from"./error-DpF7X5iu.js";import{t as ie}from"./OrgKeyPrompt-CX9K7r9I.js";import{t as ae}from"./DirectoryPickerDialog-DIMSeDhw.js";var oe={class:`create-form`},se={class:`create-field`},ce={for:`new-project-name`},le={class:`create-field`},ue={for:`new-project-desc`},O={class:`create-field`},k={for:`new-project-target`},A={class:`create-hint`},j={key:0,class:`create-field`},M={class:`create-path`},N=[`title`],P={key:1,class:`create-hint`},F=C(l({__name:`ProjectCreateDialog`,props:n({initialTarget:{},localPath:{}},{visible:{type:Boolean,required:!0},visibleModifiers:{}}),emits:n([`created`],[`update:visible`]),setup(n,{emit:l}){let C=n,F=c(()=>C.initialTarget!==void 0),I=ee(n,`visible`),L=l,{t:R}=te(),z=T(),B=_(),V=ne(),H=t(``),U=t(``),W=t(`local`),G=t(!1),K=t(``),q=t(null),J=t(!1),Y=t(null),X=t(null),de=c(()=>[{id:`local`,name:R(`projectSwitcher.local`)},...V.orgGroups.value.map(e=>({id:e.orgId,name:e.name}))]),fe=c(()=>W.value===`local`&&!q.value),Z=c(()=>!!H.value.trim()&&!fe.value);a(I,e=>{e&&(H.value=``,U.value=``,W.value=C.initialTarget===void 0?B.activeOrgId??`local`:C.initialTarget??`local`,K.value=``,Y.value=null,X.value=null,q.value=C.localPath??null,C.localPath&&(H.value=Q(C.localPath)),F.value||V.refreshCloud())},{immediate:!0});function Q(e){return e.split(/[\\/]+/).filter(Boolean).at(-1)??``}async function pe(e){if(K.value=``,e.status===`importable`){G.value=!0;try{let t=await z.importLocal(e.path);B.setActiveProject(t.id,null),I.value=!1,L(`created`,{id:t.id,name:t.name,orgId:null})}catch(e){K.value=D(e,R)}finally{G.value=!1}return}q.value=e.path,H.value.trim()||(H.value=Q(e.path))}async function $(){if(!Z.value||G.value)return;let e=H.value.trim(),t=W.value===`local`?null:W.value;G.value=!0,K.value=``;try{let n=(X.value?.orgId===t?X.value:null)??await z.create({name:e,description:U.value.trim()||void 0,orgId:t,...t?{}:{localPath:q.value??void 0}});if(!n)throw Error(z.error??R(`projectSwitcher.createFailed`));X.value={id:n.id,name:n.name,orgId:t},t&&await w.cloudSync.trackProject.mutate({orgId:t,cloudUrl:E(),projectId:n.id}),X.value=null,B.setActiveProject(n.id,t),I.value=!1,L(`created`,{id:n.id,name:n.name,orgId:t})}catch(e){K.value=D(e,R),re(e)&&t&&(Y.value=t)}finally{G.value=!1}}async function me(){Y.value=null,K.value=``,await $()}return(t,n)=>(u(),s(d,null,[r(e(x),{visible:I.value,"onUpdate:visible":n[5]||=e=>I.value=e,header:e(R)(`projectSwitcher.createTitle`),modal:``,style:{width:`26rem`}},{footer:f(()=>[r(e(S),{label:e(R)(`actions.cancel`),severity:`secondary`,variant:`text`,disabled:G.value,onClick:n[4]||=e=>I.value=!1},null,8,[`label`,`disabled`]),r(e(S),{label:e(R)(`projectSwitcher.create`),icon:`ti ti-plus`,loading:G.value,disabled:!Z.value,onClick:$},null,8,[`label`,`loading`,`disabled`])]),default:f(()=>[o(`div`,oe,[o(`div`,se,[o(`label`,ce,p(e(R)(`projectSwitcher.nameLabel`)),1),r(e(v),{id:`new-project-name`,modelValue:H.value,"onUpdate:modelValue":n[0]||=e=>H.value=e,autofocus:``,placeholder:e(R)(`projectSwitcher.namePlaceholder`),onKeyup:g($,[`enter`])},null,8,[`modelValue`,`placeholder`])]),o(`div`,le,[o(`label`,ue,p(e(R)(`projectList.descriptionLabel`)),1),r(e(v),{id:`new-project-desc`,modelValue:U.value,"onUpdate:modelValue":n[1]||=e=>U.value=e,placeholder:e(R)(`projectList.descriptionPlaceholder`),onKeyup:g($,[`enter`])},null,8,[`modelValue`,`placeholder`])]),o(`div`,O,[F.value?h(``,!0):(u(),s(d,{key:0},[o(`label`,k,p(e(R)(`projectSwitcher.targetLabel`)),1),r(e(y),{inputId:`new-project-target`,modelValue:W.value,"onUpdate:modelValue":n[2]||=e=>W.value=e,options:de.value,optionLabel:`name`,optionValue:`id`},null,8,[`modelValue`,`options`])],64)),o(`small`,A,p(W.value===`local`?e(R)(`projectSwitcher.localHint`):e(R)(`projectSwitcher.cloudHint`)),1)]),W.value===`local`?(u(),s(`div`,j,[o(`label`,null,p(e(R)(`projectSwitcher.folderLabel`)),1),o(`div`,M,[q.value?(u(),s(`code`,{key:0,class:`create-path__value`,title:q.value},p(q.value),9,N)):(u(),s(`span`,P,p(e(R)(`projectSwitcher.folderNone`)),1)),C.localPath?h(``,!0):(u(),m(e(S),{key:2,label:q.value?e(R)(`projectSwitcher.folderChange`):e(R)(`projectSwitcher.folderChoose`),icon:`ti ti-folder-open`,size:`small`,severity:`secondary`,variant:`outlined`,"data-testid":`create-choose-folder`,onClick:n[3]||=e=>J.value=!0},null,8,[`label`]))])])):h(``,!0),K.value?(u(),m(e(b),{key:1,severity:`error`},{default:f(()=>[i(p(K.value),1)]),_:1})):h(``,!0)])]),_:1},8,[`visible`,`header`]),J.value?(u(),m(ae,{key:0,visible:J.value,"onUpdate:visible":n[6]||=e=>J.value=e,mode:`local`,onLocalChosen:pe},null,8,[`visible`])):h(``,!0),r(ie,{"org-id":Y.value,reference:`cloud`,title:e(R)(`projectSwitcher.keyPromptTitle`),hint:e(R)(`projectSwitcher.keyPromptHint`),"confirm-label":e(R)(`projectSwitcher.keyPromptUse`),onClose:n[7]||=e=>Y.value=null,onAdopted:me},null,8,[`org-id`,`title`,`hint`,`confirm-label`])],64))}}),[[`__scopeId`,`data-v-6fe25904`]]);export{F as t};
@@ -1 +1 @@
1
- import{C as e}from"./reactivity.esm-bundler-BQ9SB2vv.js";import{Ht as t,k as n,mt as r,v as i,y as a}from"./runtime-core.esm-bundler-DujKY9QV.js";import{a as o,n as s}from"./project-launch.store-B5nhdGdh.js";import{r as c}from"./trpc-CfuFkKgp.js";import{n as l}from"./project.store-Bm2JWNbd.js";import{t as u}from"./DirectoryPickerDialog-DCyhT3-W.js";var d=n({__name:`ProjectLocationGate`,setup(n){let d=l(),f=s(),{activeProjectId:p}=o(f),m=e(!1),h=e(``),g=e(null),_=e(``),v=new Set;function y(e,t){return`${e??`local`}:${t}`}return t([p,()=>d.projects.length],async([e])=>{if(!e||v.has(y(f.activeOrgId,e)))return;let t=d.getByRef({id:e,orgId:f.activeOrgId})??d.getById(e);if(t&&t.orgId){try{let{path:n}=await c.project.getLocalPath.query({id:e,orgId:t.orgId});if(n)return}catch{return}v.add(y(t.orgId,e)),h.value=e,g.value=t.orgId??null,_.value=t.name,m.value=!0}},{immediate:!0}),(e,t)=>h.value?(r(),i(u,{key:0,visible:m.value,"onUpdate:visible":t[0]||=e=>m.value=e,"project-id":h.value,"org-id":g.value,"project-name":_.value,required:``},null,8,[`visible`,`project-id`,`org-id`,`project-name`])):a(``,!0)}});export{d as t};
1
+ import{C as e}from"./reactivity.esm-bundler-BQ9SB2vv.js";import{Ht as t,k as n,mt as r,v as i,y as a}from"./runtime-core.esm-bundler-DujKY9QV.js";import{a as o,n as s}from"./project-launch.store-CTmbl8UY.js";import{r as c}from"./trpc-BAZGRZBD.js";import{n as l}from"./project.store-CNC6_4r4.js";import{t as u}from"./DirectoryPickerDialog-DIMSeDhw.js";var d=n({__name:`ProjectLocationGate`,setup(n){let d=l(),f=s(),{activeProjectId:p}=o(f),m=e(!1),h=e(``),g=e(null),_=e(``),v=new Set;function y(e,t){return`${e??`local`}:${t}`}return t([p,()=>d.projects.length],async([e])=>{if(!e||v.has(y(f.activeOrgId,e)))return;let t=d.getByRef({id:e,orgId:f.activeOrgId})??d.getById(e);if(t&&t.orgId){try{let{path:n}=await c.project.getLocalPath.query({id:e,orgId:t.orgId});if(n)return}catch{return}v.add(y(t.orgId,e)),h.value=e,g.value=t.orgId??null,_.value=t.name,m.value=!0}},{immediate:!0}),(e,t)=>h.value?(r(),i(u,{key:0,visible:m.value,"onUpdate:visible":t[0]||=e=>m.value=e,"project-id":h.value,"org-id":g.value,"project-name":_.value,required:``},null,8,[`visible`,`project-id`,`org-id`,`project-name`])):a(``,!0)}});export{d as t};
@@ -0,0 +1 @@
1
+ import{B as e,C as t}from"./reactivity.esm-bundler-BQ9SB2vv.js";import{$ as n,D as r,E as i,Ft as a,Ht as o,_ as s,b as c,k as l,mt as u,o as d,qt as f,rn as p,v as m,y as h}from"./runtime-core.esm-bundler-DujKY9QV.js";import{n as g}from"./vue-i18n-o7yraQpR.js";import{n as _}from"./project-launch.store-CTmbl8UY.js";import{S as v,W as y,Y as b,dt as x,ft as S}from"./src-DIBHat7I.js";import{r as C}from"./trpc-BAZGRZBD.js";import{n as w}from"./project.store-CNC6_4r4.js";import{n as T}from"./cloud-auth-D_am4FlK.js";import{t as E}from"./useProjectCatalog-BrvUGv9A.js";import{r as D,t as O}from"./error-DpF7X5iu.js";import{t as k}from"./OrgKeyPrompt-CX9K7r9I.js";var A={class:`publish-form`},j={for:`publish-target`},M={class:`publish-hint`},N=S(l({__name:`ProjectPublishDialog`,props:n({project:{}},{visible:{type:Boolean,required:!0},visibleModifiers:{}}),emits:n([`published`],[`update:visible`]),setup(n,{emit:l}){let S=a(n,`visible`),N=n,P=l,{t:F}=g(),I=w(),L=_(),R=E(),z=t(null),B=t(!1),V=t(``),H=t(null);o(S,async e=>{e&&(V.value=``,z.value=R.orgGroups.value[0]?.orgId??null,await R.refreshCloud(),z.value??=R.orgGroups.value[0]?.orgId??null)},{immediate:!0});async function U(){let e=N.project,t=z.value;if(e&&t){B.value=!0,V.value=``;try{await C.cloudSync.publishProject.mutate({orgId:t,cloudUrl:T(),projectId:e.id}),await I.fetchAll(),L.activeProjectId===e.id&&L.setActiveProject(e.id,t),S.value=!1,P(`published`,t)}catch(e){V.value=D(e,F),O(e)&&(H.value=t)}finally{B.value=!1}}}async function W(){H.value=null,V.value=``,await U()}return(t,a)=>(u(),c(d,null,[r(e(b),{visible:S.value,"onUpdate:visible":a[2]||=e=>S.value=e,header:e(F)(`projectSwitcher.publishTitle`,{project:n.project?.name??``}),modal:``,style:{width:`26rem`}},{footer:f(()=>[r(e(x),{label:e(F)(`actions.cancel`),severity:`secondary`,variant:`text`,disabled:B.value,onClick:a[1]||=e=>S.value=!1},null,8,[`label`,`disabled`]),r(e(x),{label:e(F)(`projectSwitcher.publishAccept`),icon:`ti ti-cloud-upload`,loading:B.value,disabled:!z.value,onClick:U},null,8,[`label`,`loading`,`disabled`])]),default:f(()=>[s(`div`,A,[s(`label`,j,p(e(F)(`projectSwitcher.publishOrgLabel`)),1),r(e(v),{inputId:`publish-target`,modelValue:z.value,"onUpdate:modelValue":a[0]||=e=>z.value=e,options:e(R).orgGroups.value,optionLabel:`name`,optionValue:`orgId`},null,8,[`modelValue`,`options`]),s(`small`,M,p(e(F)(`projectSwitcher.publishHint`)),1),V.value?(u(),m(e(y),{key:0,severity:`error`},{default:f(()=>[i(p(V.value),1)]),_:1})):h(``,!0)])]),_:1},8,[`visible`,`header`]),r(k,{"org-id":H.value,reference:`cloud`,title:e(F)(`projectSwitcher.keyPromptTitle`),hint:e(F)(`projectSwitcher.keyPromptHint`),"confirm-label":e(F)(`projectSwitcher.keyPromptUse`),onClose:a[3]||=e=>H.value=null,onAdopted:W},null,8,[`org-id`,`title`,`hint`,`confirm-label`])],64))}}),[[`__scopeId`,`data-v-aa5680f5`]]);export{N as t};
@@ -1,2 +1,2 @@
1
- import{B as e,C as t}from"./reactivity.esm-bundler-BQ9SB2vv.js";import{D as n,E as r,_ as i,b as a,ct as o,ft as s,k as c,mt as l,rn as u,tt as d}from"./runtime-core.esm-bundler-DujKY9QV.js";import{dt as f,ft as p}from"./src--GO-VSJ0.js";import{r as m}from"./trpc-CfuFkKgp.js";var h={class:`random-job-test`},g={class:`random-job-test__actions`},_={class:`random-job-test__meta`},v={key:0,class:`random-job-test__empty`},y={key:1},b=`runeya:random-job-test:job-id`,x=`runeya:random-job-test:logs`,S=p(c({__name:`RandomJobTestPage`,setup(c){let p=t(null),S=t(!1),C=t([]),w=t(null),T=null;function E(){p.value?sessionStorage.setItem(b,p.value):sessionStorage.removeItem(b),sessionStorage.setItem(x,JSON.stringify(C.value))}function D(e){C.value=[...C.value,e],C.value.length>2e3&&(C.value=C.value.slice(C.value.length-2e3)),E(),d(()=>{w.value&&(w.value.scrollTop=w.value.scrollHeight)})}function O(){T?.unsubscribe(),T=null}function k(e){O(),T=m.debug.streamRandomJob.subscribe({jobId:e},{onData(e){e.type===`tick`?D(`[${new Date(e.at).toLocaleTimeString()}] #${e.index} -> ${e.value.toFixed(8)}`):(D(`[${new Date(e.at).toLocaleTimeString()}] done: ${e.reason}`),S.value=!1,p.value=null,E())},onError(e){D(`[sub] error: ${e.message}`),S.value=!1,E()},onComplete(){D(`[sub] complete`),S.value=!1,E()}}),D(`[sub] started for job ${e}`)}async function A(){if(S.value)return;C.value=[],E();let e=await m.debug.startRandomJob.mutate({intervalMs:300,maxTicks:1e3});p.value=e.jobId,S.value=!0,E(),D(`[job] started id=${e.jobId}, intervalMs=${e.intervalMs}, maxTicks=${e.maxTicks}`),k(e.jobId)}async function j(){if(p.value)try{await m.debug.stopRandomJob.mutate({jobId:p.value}),D(`[job] stop requested id=${p.value}`),S.value=!1,p.value=null,E()}catch(e){D(`[job] stop error: ${e.message}`)}}function M(){C.value=[],E()}return o(async()=>{let e=sessionStorage.getItem(x);if(e)try{let t=JSON.parse(e);Array.isArray(t)&&(C.value=t)}catch{}let t=sessionStorage.getItem(b);if(t){p.value=t;try{let e=await m.debug.randomJobStatus.query({jobId:t});S.value=e.running,E(),e.running?(D(`[job] reconnected id=${t}, tick=${e.tick}`),k(t)):(D(`[job] previous job ended (id=${t})`),p.value=null,E())}catch{S.value=!1,p.value=null,D(`[job] previous job not found`),E()}}}),s(()=>{O()}),(t,o)=>(l(),a(`div`,h,[o[3]||=i(`header`,{class:`random-job-test__header`},[i(`h1`,null,`Random Job Test`),i(`p`,null,`Click start to launch a server job and stream Math.random() values in real time.`)],-1),i(`div`,g,[n(e(f),{label:`Start job`,icon:`ti ti-player-play`,disabled:S.value,onClick:A},null,8,[`disabled`]),n(e(f),{label:`Stop`,icon:`ti ti-player-stop`,severity:`danger`,disabled:!S.value,onClick:j},null,8,[`disabled`]),n(e(f),{label:`Clear logs`,icon:`ti ti-trash`,severity:`secondary`,variant:`outlined`,onClick:M})]),i(`div`,_,[i(`span`,null,[o[0]||=i(`strong`,null,`Job ID:`,-1),r(` `+u(p.value??`none`),1)]),i(`span`,null,[o[1]||=i(`strong`,null,`Status:`,-1),r(` `+u(S.value?`running`:`idle`),1)]),i(`span`,null,[o[2]||=i(`strong`,null,`Lines:`,-1),r(` `+u(C.value.length),1)])]),i(`section`,{ref_key:`logsEl`,ref:w,class:`random-job-test__logs`,"aria-live":`polite`},[C.value.length===0?(l(),a(`div`,v,`No logs yet.`)):(l(),a(`pre`,y,u(C.value.join(`
1
+ import{B as e,C as t}from"./reactivity.esm-bundler-BQ9SB2vv.js";import{D as n,E as r,_ as i,b as a,ct as o,ft as s,k as c,mt as l,rn as u,tt as d}from"./runtime-core.esm-bundler-DujKY9QV.js";import{dt as f,ft as p}from"./src-DIBHat7I.js";import{r as m}from"./trpc-BAZGRZBD.js";var h={class:`random-job-test`},g={class:`random-job-test__actions`},_={class:`random-job-test__meta`},v={key:0,class:`random-job-test__empty`},y={key:1},b=`runeya:random-job-test:job-id`,x=`runeya:random-job-test:logs`,S=p(c({__name:`RandomJobTestPage`,setup(c){let p=t(null),S=t(!1),C=t([]),w=t(null),T=null;function E(){p.value?sessionStorage.setItem(b,p.value):sessionStorage.removeItem(b),sessionStorage.setItem(x,JSON.stringify(C.value))}function D(e){C.value=[...C.value,e],C.value.length>2e3&&(C.value=C.value.slice(C.value.length-2e3)),E(),d(()=>{w.value&&(w.value.scrollTop=w.value.scrollHeight)})}function O(){T?.unsubscribe(),T=null}function k(e){O(),T=m.debug.streamRandomJob.subscribe({jobId:e},{onData(e){e.type===`tick`?D(`[${new Date(e.at).toLocaleTimeString()}] #${e.index} -> ${e.value.toFixed(8)}`):(D(`[${new Date(e.at).toLocaleTimeString()}] done: ${e.reason}`),S.value=!1,p.value=null,E())},onError(e){D(`[sub] error: ${e.message}`),S.value=!1,E()},onComplete(){D(`[sub] complete`),S.value=!1,E()}}),D(`[sub] started for job ${e}`)}async function A(){if(S.value)return;C.value=[],E();let e=await m.debug.startRandomJob.mutate({intervalMs:300,maxTicks:1e3});p.value=e.jobId,S.value=!0,E(),D(`[job] started id=${e.jobId}, intervalMs=${e.intervalMs}, maxTicks=${e.maxTicks}`),k(e.jobId)}async function j(){if(p.value)try{await m.debug.stopRandomJob.mutate({jobId:p.value}),D(`[job] stop requested id=${p.value}`),S.value=!1,p.value=null,E()}catch(e){D(`[job] stop error: ${e.message}`)}}function M(){C.value=[],E()}return o(async()=>{let e=sessionStorage.getItem(x);if(e)try{let t=JSON.parse(e);Array.isArray(t)&&(C.value=t)}catch{}let t=sessionStorage.getItem(b);if(t){p.value=t;try{let e=await m.debug.randomJobStatus.query({jobId:t});S.value=e.running,E(),e.running?(D(`[job] reconnected id=${t}, tick=${e.tick}`),k(t)):(D(`[job] previous job ended (id=${t})`),p.value=null,E())}catch{S.value=!1,p.value=null,D(`[job] previous job not found`),E()}}}),s(()=>{O()}),(t,o)=>(l(),a(`div`,h,[o[3]||=i(`header`,{class:`random-job-test__header`},[i(`h1`,null,`Random Job Test`),i(`p`,null,`Click start to launch a server job and stream Math.random() values in real time.`)],-1),i(`div`,g,[n(e(f),{label:`Start job`,icon:`ti ti-player-play`,disabled:S.value,onClick:A},null,8,[`disabled`]),n(e(f),{label:`Stop`,icon:`ti ti-player-stop`,severity:`danger`,disabled:!S.value,onClick:j},null,8,[`disabled`]),n(e(f),{label:`Clear logs`,icon:`ti ti-trash`,severity:`secondary`,variant:`outlined`,onClick:M})]),i(`div`,_,[i(`span`,null,[o[0]||=i(`strong`,null,`Job ID:`,-1),r(` `+u(p.value??`none`),1)]),i(`span`,null,[o[1]||=i(`strong`,null,`Status:`,-1),r(` `+u(S.value?`running`:`idle`),1)]),i(`span`,null,[o[2]||=i(`strong`,null,`Lines:`,-1),r(` `+u(C.value.length),1)])]),i(`section`,{ref_key:`logsEl`,ref:w,class:`random-job-test__logs`,"aria-live":`polite`},[C.value.length===0?(l(),a(`div`,v,`No logs yet.`)):(l(),a(`pre`,y,u(C.value.join(`
2
2
  `)),1))],512)]))}}),[[`__scopeId`,`data-v-96a7afb9`]]);export{S as default};
@@ -1 +1 @@
1
- .vue-flow__controls{box-shadow:0 0 2px 1px #00000014}.vue-flow__controls-button{box-sizing:content-box;cursor:pointer;-webkit-user-select:none;user-select:none;background:#fefefe;border:none;border-bottom:1px solid #eee;justify-content:center;align-items:center;width:16px;height:16px;padding:5px;display:flex}.vue-flow__controls-button svg{width:100%;max-width:12px;max-height:12px}.vue-flow__controls-button:hover{background:#f4f4f4}.vue-flow__controls-button:disabled{pointer-events:none}.vue-flow__controls-button:disabled svg{fill-opacity:.4}.vue-flow__minimap{background-color:#fff}.vue-flow__minimap.pannable{cursor:grab}.vue-flow__minimap.dragging{cursor:grabbing}.vue-flow__minimap-mask.pannable{cursor:grab}.scenario-node-editor[data-v-2f0b3467]{flex-direction:column;flex:1;gap:.6rem;padding:1rem;display:flex;overflow-y:auto}.form-row[data-v-2f0b3467]{grid-template-columns:1fr 1fr;gap:.5rem;display:grid}.form-row>.form-group[data-v-2f0b3467]{min-width:0}.form-group[data-v-2f0b3467]{flex-direction:column;gap:.25rem;display:flex}.form-label[data-v-2f0b3467]{opacity:.55;text-transform:uppercase;letter-spacing:.06em;font-size:.72rem;font-weight:600}.inline-check[data-v-2f0b3467]{align-items:center;gap:.5rem;padding:.25rem 0;font-size:.85rem;display:flex}.form-note[data-v-2f0b3467]{opacity:.6;align-self:center;font-size:.75rem}.role-preview[data-v-2f0b3467]{background:var(--r-bg-hover,#6366f10f);border:1px solid var(--r-border);border-radius:4px;padding:.5rem .6rem}.role-preview__label[data-v-2f0b3467]{text-transform:uppercase;letter-spacing:.05em;opacity:.5;font-size:.7rem;font-weight:600}.role-preview__text[data-v-2f0b3467]{opacity:.75;white-space:pre-wrap;margin:.25rem 0 0;font-size:.78rem;line-height:1.4}.scenario-editor[data-v-85fe37a4]{flex-direction:column;height:100%;display:flex}.scenario-editor__toolbar[data-v-85fe37a4]{border-bottom:1px solid var(--r-border);flex-direction:column;flex-shrink:0;display:flex}.scenario-editor__toolbar-row[data-v-85fe37a4]{align-items:center;gap:.4rem;padding:.35rem 1rem;display:flex}.scenario-editor__toolbar-row--primary[data-v-85fe37a4]{border-bottom:1px solid var(--r-border)}.scenario-editor__toolbar-row--secondary[data-v-85fe37a4]{padding-top:.25rem;padding-bottom:.25rem}.scenario-editor__toolbar-sep[data-v-85fe37a4]{background:var(--r-border);width:1px;height:16px;margin:0 .2rem}.scenario-editor__icon-input[data-v-85fe37a4]{border:1px solid var(--r-surface-300);background:var(--r-bg);border-radius:4px;align-items:center;gap:.4rem;padding:0 .4rem;display:flex}.scenario-editor__name[data-v-85fe37a4]{width:200px}.scenario-editor__desc[data-v-85fe37a4]{width:220px;font-size:.9rem}.scenario-editor__traversal-select[data-v-85fe37a4]{width:150px;font-size:.85rem}.scenario-editor__traversal-help[data-v-85fe37a4]{opacity:.5;cursor:help;flex-shrink:0;font-size:.85rem}.scenario-editor__traversal-help[data-v-85fe37a4]:hover{opacity:.9}.scenario-editor__leader[data-v-85fe37a4]{width:160px}.scenario-editor__content[data-v-85fe37a4]{flex:1;min-height:0;display:flex;position:relative;overflow:hidden}.scenario-editor__canvas[data-v-85fe37a4]{flex:1;width:100%;height:100%;min-height:0;position:relative}.scenario-editor__panel--editor[data-v-85fe37a4]{border-left:1px solid var(--r-border);background:var(--r-bg);z-index:10;flex-direction:column;width:340px;display:flex;position:absolute;top:0;bottom:0;right:0;overflow:hidden;box-shadow:-4px 0 24px #0000004d}.detail-header[data-v-85fe37a4]{border-bottom:1px solid var(--r-border);flex-shrink:0;align-items:center;gap:.6rem;padding:.75rem 1rem;display:flex}.detail-header__icon[data-v-85fe37a4]{opacity:.7;font-size:.95rem}.detail-header__title[data-v-85fe37a4]{font-size:.9rem;font-weight:600}.detail-header__close[data-v-85fe37a4]{margin-left:auto}.detail-body[data-v-85fe37a4]{flex-direction:column;flex:1;gap:.85rem;padding:1rem;display:flex;overflow-y:auto}.detail-field[data-v-85fe37a4]{flex-direction:column;gap:.35rem;display:flex}.detail-label[data-v-85fe37a4]{opacity:.55;text-transform:uppercase;letter-spacing:.06em;font-size:.72rem;font-weight:600}.detail-color-row[data-v-85fe37a4]{align-items:center;gap:.5rem;display:flex}.detail-color-text[data-v-85fe37a4]{flex:1;font-family:monospace;font-size:.85rem}.detail-footer[data-v-85fe37a4]{border-top:1px solid var(--r-border);flex-shrink:0;padding:.75rem 1rem}.add-node-form[data-v-85fe37a4]{flex-direction:column;gap:.5rem;padding:.5rem 0 1rem;display:flex}.add-node-label[data-v-85fe37a4]{font-size:.875rem;font-weight:600}.required[data-v-85fe37a4]{color:var(--r-red-400)}.scenario-editor__ai-panel[data-v-85fe37a4]{border-right:1px solid var(--r-border);flex-direction:column;flex-shrink:0;gap:.75rem;width:320px;padding:1rem;display:flex;overflow-y:auto}.scenario-editor__ai-panel-header[data-v-85fe37a4]{align-items:center;gap:.5rem;font-size:.95rem;font-weight:600;display:flex}.scenario-editor__ai-provider[data-v-85fe37a4]{flex-direction:column;gap:.4rem;display:flex}.scenario-editor__ai-provider-label[data-v-85fe37a4]{opacity:.6;font-size:.8rem}.scenario-editor__ai-no-provider[data-v-85fe37a4]{color:var(--r-orange-400);background:color-mix(in srgb, var(--r-orange-400) 8%, transparent);border:1px solid color-mix(in srgb, var(--r-orange-400) 25%, transparent);border-radius:4px;align-items:center;gap:.5rem;padding:.5rem .75rem;font-size:.82rem;display:flex}.scenario-editor__ai-textarea[data-v-85fe37a4]{resize:vertical;width:100%}.scenario-editor__ai-btn[data-v-85fe37a4]{width:100%}.scenario-editor__ai-hint[data-v-85fe37a4]{opacity:.4;margin:0;font-size:.75rem}.scenario-editor__ai-stream[data-v-85fe37a4]{background:var(--r-bg-hover);border:1px solid var(--r-border);border-radius:4px;padding:.5rem}.scenario-editor__ai-stream-label[data-v-85fe37a4]{opacity:.55;align-items:center;gap:.4rem;margin-bottom:.4rem;font-size:.78rem;display:flex}.scenario-editor__ai-stream-text[data-v-85fe37a4]{opacity:.5;white-space:pre-wrap;word-break:break-all;max-height:180px;margin:0;font-size:.7rem;overflow-y:auto}.scenario-editor__ai-error[data-v-85fe37a4]{color:var(--r-red-400);align-items:center;gap:.4rem;font-size:.82rem;display:flex}.export-json[data-v-85fe37a4]{background:var(--r-bg-hover);border:1px solid var(--r-border);white-space:pre-wrap;word-break:break-all;border-radius:4px;max-height:400px;padding:.75rem;font-size:.78rem;overflow-y:auto}.import-error[data-v-85fe37a4]{color:var(--r-red-400);margin-top:.5rem;font-size:.82rem}.scenario-editor__toolbar-btn[data-v-85fe37a4]{gap:.3rem;font-size:.78rem}.add-node-popover[data-v-85fe37a4]{flex-direction:column;gap:.25rem;min-width:200px;padding:.25rem;display:flex}.add-node-popover__item[data-v-85fe37a4]{cursor:pointer;color:var(--r-text);text-align:left;background:0 0;border:none;border-radius:4px;align-items:center;gap:.75rem;width:100%;padding:.6rem .75rem;transition:background .15s;display:flex}.add-node-popover__item[data-v-85fe37a4]:hover{background:var(--r-bg-hover)}.add-node-popover__item svg[data-v-85fe37a4]{opacity:.7;flex-shrink:0}.add-node-popover__item-text[data-v-85fe37a4]{flex-direction:column;gap:.1rem;display:flex}.add-node-popover__item-label[data-v-85fe37a4]{font-size:.85rem;font-weight:600}.add-node-popover__item-desc[data-v-85fe37a4]{opacity:.5;font-size:.75rem}.switch-dialog__intro{opacity:.8;margin:0 0 .75rem;font-size:.875rem}.switch-dialog__links{flex-direction:column;gap:.4rem;margin:0;padding:0;list-style:none;display:flex}.switch-dialog__links li{align-items:center;gap:.5rem;font-size:.85rem;display:flex}.switch-dialog__node{background:var(--r-bg-hover);border:1px solid var(--r-border);border-radius:4px;padding:.15rem .4rem;font-family:monospace}.switch-dialog__arrow{opacity:.5;font-size:.7rem}.drawer-enter-active,.drawer-leave-active{transition:transform .22s cubic-bezier(.4,0,.2,1)}.drawer-enter-from,.drawer-leave-to{transform:translate(100%)}.scenario-flow-canvas .vue-flow__pane{background-color:#0b0c14;background-image:radial-gradient(circle,#6366f18c 1.5px,#0000 1.5px);background-size:28px 28px}.scenario-flow-canvas .vue-flow__background{background-color:#0b0c14}.scenario-flow-canvas .vue-flow__node-default{box-shadow:none!important;background:0 0!important;border:none!important;border-radius:0!important;padding:0!important}.scenario-flow-canvas .vue-flow__node-group{box-shadow:none!important;background:0 0!important;border:none!important;padding:0!important}.scenario-flow-canvas .vue-flow__edge-path{stroke:#6366f18c;stroke-width:2.5px;filter:drop-shadow(0 0 3px #6366f166)}.scenario-flow-canvas .vue-flow__edge.animated .vue-flow__edge-path{will-change:stroke-dashoffset;animation:1.2s linear infinite scenario-dash}@keyframes scenario-dash{0%{stroke-dashoffset:8px}to{stroke-dashoffset:0}}.scenario-flow-canvas .vue-flow__edge.selected:not(.edge--cycle) .vue-flow__edge-path{stroke:#a855f7!important;stroke-width:4px!important;filter:drop-shadow(0 0 8px #a855f7cc)!important}.scenario-flow-canvas .vue-flow__edge.edge--cycle .vue-flow__edge-path{stroke:#ef4444!important;stroke-width:3px!important;filter:drop-shadow(0 0 6px #ef4444b3)!important}.scenario-flow-canvas .vue-flow__connection-path{stroke:#6366f199;stroke-width:2px;stroke-dasharray:6 4}.scenario-flow-canvas .vue-flow__selection{background:#6366f10f;border:1px dashed #6366f180}
1
+ .vue-flow__controls{box-shadow:0 0 2px 1px #00000014}.vue-flow__controls-button{box-sizing:content-box;cursor:pointer;-webkit-user-select:none;user-select:none;background:#fefefe;border:none;border-bottom:1px solid #eee;justify-content:center;align-items:center;width:16px;height:16px;padding:5px;display:flex}.vue-flow__controls-button svg{width:100%;max-width:12px;max-height:12px}.vue-flow__controls-button:hover{background:#f4f4f4}.vue-flow__controls-button:disabled{pointer-events:none}.vue-flow__controls-button:disabled svg{fill-opacity:.4}.vue-flow__minimap{background-color:#fff}.vue-flow__minimap.pannable{cursor:grab}.vue-flow__minimap.dragging{cursor:grabbing}.vue-flow__minimap-mask.pannable{cursor:grab}.scenario-node-editor[data-v-9cda1592]{flex-direction:column;flex:1;gap:.6rem;padding:1rem;display:flex;overflow-y:auto}.form-row[data-v-9cda1592]{grid-template-columns:1fr 1fr;gap:.5rem;display:grid}.form-row>.form-group[data-v-9cda1592]{min-width:0}.form-group[data-v-9cda1592]{flex-direction:column;gap:.25rem;display:flex}.form-label[data-v-9cda1592]{opacity:.55;text-transform:uppercase;letter-spacing:.06em;font-size:.72rem;font-weight:600}.inline-check[data-v-9cda1592]{align-items:center;gap:.5rem;padding:.25rem 0;font-size:.85rem;display:flex}.form-note[data-v-9cda1592]{opacity:.6;align-self:center;font-size:.75rem}.role-preview[data-v-9cda1592]{background:var(--r-bg-hover,#6366f10f);border:1px solid var(--r-border);border-radius:4px;padding:.5rem .6rem}.role-preview__label[data-v-9cda1592]{text-transform:uppercase;letter-spacing:.05em;opacity:.5;font-size:.7rem;font-weight:600}.role-preview__text[data-v-9cda1592]{opacity:.75;white-space:pre-wrap;margin:.25rem 0 0;font-size:.78rem;line-height:1.4}.scenario-editor[data-v-85fe37a4]{flex-direction:column;height:100%;display:flex}.scenario-editor__toolbar[data-v-85fe37a4]{border-bottom:1px solid var(--r-border);flex-direction:column;flex-shrink:0;display:flex}.scenario-editor__toolbar-row[data-v-85fe37a4]{align-items:center;gap:.4rem;padding:.35rem 1rem;display:flex}.scenario-editor__toolbar-row--primary[data-v-85fe37a4]{border-bottom:1px solid var(--r-border)}.scenario-editor__toolbar-row--secondary[data-v-85fe37a4]{padding-top:.25rem;padding-bottom:.25rem}.scenario-editor__toolbar-sep[data-v-85fe37a4]{background:var(--r-border);width:1px;height:16px;margin:0 .2rem}.scenario-editor__icon-input[data-v-85fe37a4]{border:1px solid var(--r-surface-300);background:var(--r-bg);border-radius:4px;align-items:center;gap:.4rem;padding:0 .4rem;display:flex}.scenario-editor__name[data-v-85fe37a4]{width:200px}.scenario-editor__desc[data-v-85fe37a4]{width:220px;font-size:.9rem}.scenario-editor__traversal-select[data-v-85fe37a4]{width:150px;font-size:.85rem}.scenario-editor__traversal-help[data-v-85fe37a4]{opacity:.5;cursor:help;flex-shrink:0;font-size:.85rem}.scenario-editor__traversal-help[data-v-85fe37a4]:hover{opacity:.9}.scenario-editor__leader[data-v-85fe37a4]{width:160px}.scenario-editor__content[data-v-85fe37a4]{flex:1;min-height:0;display:flex;position:relative;overflow:hidden}.scenario-editor__canvas[data-v-85fe37a4]{flex:1;width:100%;height:100%;min-height:0;position:relative}.scenario-editor__panel--editor[data-v-85fe37a4]{border-left:1px solid var(--r-border);background:var(--r-bg);z-index:10;flex-direction:column;width:340px;display:flex;position:absolute;top:0;bottom:0;right:0;overflow:hidden;box-shadow:-4px 0 24px #0000004d}.detail-header[data-v-85fe37a4]{border-bottom:1px solid var(--r-border);flex-shrink:0;align-items:center;gap:.6rem;padding:.75rem 1rem;display:flex}.detail-header__icon[data-v-85fe37a4]{opacity:.7;font-size:.95rem}.detail-header__title[data-v-85fe37a4]{font-size:.9rem;font-weight:600}.detail-header__close[data-v-85fe37a4]{margin-left:auto}.detail-body[data-v-85fe37a4]{flex-direction:column;flex:1;gap:.85rem;padding:1rem;display:flex;overflow-y:auto}.detail-field[data-v-85fe37a4]{flex-direction:column;gap:.35rem;display:flex}.detail-label[data-v-85fe37a4]{opacity:.55;text-transform:uppercase;letter-spacing:.06em;font-size:.72rem;font-weight:600}.detail-color-row[data-v-85fe37a4]{align-items:center;gap:.5rem;display:flex}.detail-color-text[data-v-85fe37a4]{flex:1;font-family:monospace;font-size:.85rem}.detail-footer[data-v-85fe37a4]{border-top:1px solid var(--r-border);flex-shrink:0;padding:.75rem 1rem}.add-node-form[data-v-85fe37a4]{flex-direction:column;gap:.5rem;padding:.5rem 0 1rem;display:flex}.add-node-label[data-v-85fe37a4]{font-size:.875rem;font-weight:600}.required[data-v-85fe37a4]{color:var(--r-red-400)}.scenario-editor__ai-panel[data-v-85fe37a4]{border-right:1px solid var(--r-border);flex-direction:column;flex-shrink:0;gap:.75rem;width:320px;padding:1rem;display:flex;overflow-y:auto}.scenario-editor__ai-panel-header[data-v-85fe37a4]{align-items:center;gap:.5rem;font-size:.95rem;font-weight:600;display:flex}.scenario-editor__ai-provider[data-v-85fe37a4]{flex-direction:column;gap:.4rem;display:flex}.scenario-editor__ai-provider-label[data-v-85fe37a4]{opacity:.6;font-size:.8rem}.scenario-editor__ai-no-provider[data-v-85fe37a4]{color:var(--r-orange-400);background:color-mix(in srgb, var(--r-orange-400) 8%, transparent);border:1px solid color-mix(in srgb, var(--r-orange-400) 25%, transparent);border-radius:4px;align-items:center;gap:.5rem;padding:.5rem .75rem;font-size:.82rem;display:flex}.scenario-editor__ai-textarea[data-v-85fe37a4]{resize:vertical;width:100%}.scenario-editor__ai-btn[data-v-85fe37a4]{width:100%}.scenario-editor__ai-hint[data-v-85fe37a4]{opacity:.4;margin:0;font-size:.75rem}.scenario-editor__ai-stream[data-v-85fe37a4]{background:var(--r-bg-hover);border:1px solid var(--r-border);border-radius:4px;padding:.5rem}.scenario-editor__ai-stream-label[data-v-85fe37a4]{opacity:.55;align-items:center;gap:.4rem;margin-bottom:.4rem;font-size:.78rem;display:flex}.scenario-editor__ai-stream-text[data-v-85fe37a4]{opacity:.5;white-space:pre-wrap;word-break:break-all;max-height:180px;margin:0;font-size:.7rem;overflow-y:auto}.scenario-editor__ai-error[data-v-85fe37a4]{color:var(--r-red-400);align-items:center;gap:.4rem;font-size:.82rem;display:flex}.export-json[data-v-85fe37a4]{background:var(--r-bg-hover);border:1px solid var(--r-border);white-space:pre-wrap;word-break:break-all;border-radius:4px;max-height:400px;padding:.75rem;font-size:.78rem;overflow-y:auto}.import-error[data-v-85fe37a4]{color:var(--r-red-400);margin-top:.5rem;font-size:.82rem}.scenario-editor__toolbar-btn[data-v-85fe37a4]{gap:.3rem;font-size:.78rem}.add-node-popover[data-v-85fe37a4]{flex-direction:column;gap:.25rem;min-width:200px;padding:.25rem;display:flex}.add-node-popover__item[data-v-85fe37a4]{cursor:pointer;color:var(--r-text);text-align:left;background:0 0;border:none;border-radius:4px;align-items:center;gap:.75rem;width:100%;padding:.6rem .75rem;transition:background .15s;display:flex}.add-node-popover__item[data-v-85fe37a4]:hover{background:var(--r-bg-hover)}.add-node-popover__item svg[data-v-85fe37a4]{opacity:.7;flex-shrink:0}.add-node-popover__item-text[data-v-85fe37a4]{flex-direction:column;gap:.1rem;display:flex}.add-node-popover__item-label[data-v-85fe37a4]{font-size:.85rem;font-weight:600}.add-node-popover__item-desc[data-v-85fe37a4]{opacity:.5;font-size:.75rem}.switch-dialog__intro{opacity:.8;margin:0 0 .75rem;font-size:.875rem}.switch-dialog__links{flex-direction:column;gap:.4rem;margin:0;padding:0;list-style:none;display:flex}.switch-dialog__links li{align-items:center;gap:.5rem;font-size:.85rem;display:flex}.switch-dialog__node{background:var(--r-bg-hover);border:1px solid var(--r-border);border-radius:4px;padding:.15rem .4rem;font-family:monospace}.switch-dialog__arrow{opacity:.5;font-size:.7rem}.drawer-enter-active,.drawer-leave-active{transition:transform .22s cubic-bezier(.4,0,.2,1)}.drawer-enter-from,.drawer-leave-to{transform:translate(100%)}.scenario-flow-canvas .vue-flow__pane{background-color:#0b0c14;background-image:radial-gradient(circle,#6366f18c 1.5px,#0000 1.5px);background-size:28px 28px}.scenario-flow-canvas .vue-flow__background{background-color:#0b0c14}.scenario-flow-canvas .vue-flow__node-default{box-shadow:none!important;background:0 0!important;border:none!important;border-radius:0!important;padding:0!important}.scenario-flow-canvas .vue-flow__node-group{box-shadow:none!important;background:0 0!important;border:none!important;padding:0!important}.scenario-flow-canvas .vue-flow__edge-path{stroke:#6366f18c;stroke-width:2.5px;filter:drop-shadow(0 0 3px #6366f166)}.scenario-flow-canvas .vue-flow__edge.animated .vue-flow__edge-path{will-change:stroke-dashoffset;animation:1.2s linear infinite scenario-dash}@keyframes scenario-dash{0%{stroke-dashoffset:8px}to{stroke-dashoffset:0}}.scenario-flow-canvas .vue-flow__edge.selected:not(.edge--cycle) .vue-flow__edge-path{stroke:#a855f7!important;stroke-width:4px!important;filter:drop-shadow(0 0 8px #a855f7cc)!important}.scenario-flow-canvas .vue-flow__edge.edge--cycle .vue-flow__edge-path{stroke:#ef4444!important;stroke-width:3px!important;filter:drop-shadow(0 0 6px #ef4444b3)!important}.scenario-flow-canvas .vue-flow__connection-path{stroke:#6366f199;stroke-width:2px;stroke-dasharray:6 4}.scenario-flow-canvas .vue-flow__selection{background:#6366f10f;border:1px dashed #6366f180}