@runeya/runeya 2.0.142 → 2.0.144

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 (94) hide show
  1. package/package.json +1 -1
  2. package/web/assets/{AgentScalarChatInterface.vue-uNy1P-l4.js → AgentScalarChatInterface.vue-B-SjOsdj.js} +1 -1
  3. package/web/assets/{AgentTerminalPage-CFnALyb1.js → AgentTerminalPage-JzC8DUgu.js} +1 -1
  4. package/web/assets/{AiChatModals-B6svb69W.js → AiChatModals-D1928AxG.js} +1 -1
  5. package/web/assets/AppLayout-8sBPr3od.css +1 -0
  6. package/web/assets/AppLayout-CVQIBYqg.js +1 -0
  7. package/web/assets/{AuditPage-BsSpX2TJ.js → AuditPage-BZIJ3_Kr.js} +1 -1
  8. package/web/assets/{CloudAccountPage-DabrwDsa.js → CloudAccountPage-DBv470sT.js} +1 -1
  9. package/web/assets/CloudMessagingPage-Cn3JhJsY.css +1 -0
  10. package/web/assets/CloudMessagingPage-qCI8-UDL.js +2 -0
  11. package/web/assets/{DashboardPage-DMByzpgW.js → DashboardPage-D0UZM0mr.js} +1 -1
  12. package/web/assets/{DirectoryPickerDialog-CDyk4Z_Q.js → DirectoryPickerDialog-B5DvDfQP.js} +1 -1
  13. package/web/assets/{EditorIcon-BGHxAlSR.js → EditorIcon-CypGLV6w.js} +1 -1
  14. package/web/assets/{EnvironmentForm-BlGWpU2_.js → EnvironmentForm-Bw8Djnqm.js} +1 -1
  15. package/web/assets/EnvironmentForm-CkKVSiT7.css +1 -0
  16. package/web/assets/EnvironmentFormPage-B59uiYtp.js +1 -0
  17. package/web/assets/EnvironmentFormPage-C1gS0BI_.css +1 -0
  18. package/web/assets/EnvironmentListPage-BKhq_xXN.css +1 -0
  19. package/web/assets/EnvironmentListPage-W9zLDZAg.js +1 -0
  20. package/web/assets/{FlagChip-CHio0TB3.js → FlagChip-R_T5qYpL.js} +1 -1
  21. package/web/assets/{KanbanBoardPage-C52zM-Zw.js → KanbanBoardPage-DwPqoJDJ.js} +3 -3
  22. package/web/assets/{KanbanListPage-BmNdd1aP.js → KanbanListPage-Bn9k8Rpc.js} +1 -1
  23. package/web/assets/{LaunchProjectPage-B5sXxaet.js → LaunchProjectPage-Dc7v1UjQ.js} +1 -1
  24. package/web/assets/{LaunchServicesPage-C1u6lV4l.js → LaunchServicesPage-CXUS9O3y.js} +1 -1
  25. package/web/assets/{LaunchShell-CeyVMzL2.js → LaunchShell-LonTJpb3.js} +1 -1
  26. package/web/assets/LogViewer-DkuqWYkQ.js +3 -0
  27. package/web/assets/{LogViewer-DEsbVxax.css → LogViewer-OHdSLleq.css} +1 -1
  28. package/web/assets/{OrgKeyPrompt-NDfCQ-In.js → OrgKeyPrompt-By1VjlSN.js} +1 -1
  29. package/web/assets/{ProcessControls-D23gTUiv.js → ProcessControls-C0skzKGL.js} +1 -1
  30. package/web/assets/{ProcessDetailPage-vHpK0Eer.js → ProcessDetailPage-BvPX6z_X.js} +1 -1
  31. package/web/assets/{ProcessMetrics-DtneQJzo.js → ProcessMetrics-Crlfkelj.js} +1 -1
  32. package/web/assets/{ProjectCreateDialog-2PZX7tq2.js → ProjectCreateDialog-C4o9u15L.js} +1 -1
  33. package/web/assets/{ProjectLocationGate-fMAxwT0y.js → ProjectLocationGate-BJ1CSQt0.js} +1 -1
  34. package/web/assets/{ProjectPublishDialog-BylWoa0n.js → ProjectPublishDialog-Cp-zXdGm.js} +1 -1
  35. package/web/assets/{RandomJobTestPage-DUclmkBw.js → RandomJobTestPage-DF4a1U13.js} +1 -1
  36. package/web/assets/{ScenarioEditorPage-DbEsfuZa.js → ScenarioEditorPage-Dl-gEkJI.js} +1 -1
  37. package/web/assets/{SendToChatDialog-DGuOMMrS.js → SendToChatDialog-Dg2SHkVD.js} +1 -1
  38. package/web/assets/{ServiceControlsBar-D6M8hYFk.js → ServiceControlsBar-q2VHWaxK.js} +1 -1
  39. package/web/assets/ServiceDetailPage-CJ8WaFod.js +2 -0
  40. package/web/assets/ServiceDetailPage-COdaCZ6r.css +1 -0
  41. package/web/assets/{ServiceFormPage-BgHSW1XX.js → ServiceFormPage-tT_n7WUy.js} +1 -1
  42. package/web/assets/{SettingsPage-CPFBr7QE.js → SettingsPage-CWakkv0V.js} +4 -4
  43. package/web/assets/{UnlockPage-B4VEN9LN.js → UnlockPage-BKAdMJkb.js} +1 -1
  44. package/web/assets/{VaultMigrationPage-9qDGbF9X.js → VaultMigrationPage-D9KUTTss.js} +1 -1
  45. package/web/assets/{VersionBadge-CqHdCnuJ.js → VersionBadge-moKP5bAv.js} +1 -1
  46. package/web/assets/{WikiPage-Pjosr1Vn.js → WikiPage-hLUndDxo.js} +1 -1
  47. package/web/assets/{WikiView-Bcxq2mQW.js → WikiView-rrjXRR72.js} +1 -1
  48. package/web/assets/{add-scalar-classes-BnJYThbS.js → add-scalar-classes-CBfRr8B2.js} +1 -1
  49. package/web/assets/{agent.store-DTyu_McS.js → agent.store-B3dVemmT.js} +1 -1
  50. package/web/assets/{auth-D_pCPFq7.js → auth-BCrvnP1U.js} +2 -2
  51. package/web/assets/{cloud-chat.store-CMklOB48.js → cloud-chat.store-Wg1poFem.js} +1 -1
  52. package/web/assets/{cloud-client-CX0pW7Kt.js → cloud-client-DQlUaoAw.js} +2 -2
  53. package/web/assets/{cloud-session-ja0-uvVS.js → cloud-session-DRUqcSGP.js} +2 -2
  54. package/web/assets/{editor.store-BAjGG8Ji.js → editor.store-SoH48ux2.js} +1 -1
  55. package/web/assets/i18n-BszFg0ko.js +1 -0
  56. package/web/assets/{index-eb4FRryj.css → index-C_JV7fYy.css} +1 -1
  57. package/web/assets/{index-DTrxphh3.js → index-D_x2s8Ut.js} +3 -3
  58. package/web/assets/{modal-Cvv2YgUo.js → modal-CpsVK_dA.js} +1 -1
  59. package/web/assets/{project-launch.store-C7xfTlMc.js → project-launch.store-C3fZeRGb.js} +1 -1
  60. package/web/assets/{project.store-ZpH_PaSy.js → project.store-BEk4fciH.js} +1 -1
  61. package/web/assets/{scenario.store-F78cizck.js → scenario.store-D-JrRiVO.js} +1 -1
  62. package/web/assets/{service.store-Dti7eDhR.js → service.store-B5uYZtyM.js} +1 -1
  63. package/web/assets/{settings-scope-CUuHrUpc.js → settings-scope-Blnwj3rR.js} +1 -1
  64. package/web/assets/{settings.store-De1-3IG8.js → settings.store-Bo3FYs1o.js} +1 -1
  65. package/web/assets/{src-Ds4DOFJs.js → src--GO-VSJ0.js} +2 -2
  66. package/web/assets/{src-DXlxwMXe.js → src-CAwAaB5j.js} +1 -1
  67. package/web/assets/src-CcvmgMAA.css +1 -0
  68. package/web/assets/{src-C0KK-qsF.js → src-DValZNJU.js} +2 -2
  69. package/web/assets/{src-DUVb4kUw.css → src-DuBXN1hu.css} +1 -1
  70. package/web/assets/{trpc-B5Yw_z6v.js → trpc-DbsE5GvQ.js} +3 -3
  71. package/web/assets/{useCloudOrg-QzX8ryg1.js → useCloudOrg-DygUBG1a.js} +1 -1
  72. package/web/assets/{useEnvVarAutocomplete-BdGgINv9.js → useEnvVarAutocomplete-DmYNOXgd.js} +1 -1
  73. package/web/assets/{useProjectCatalog-Cr90BND4.js → useProjectCatalog-D2mHB7dg.js} +1 -1
  74. package/web/assets/{useProjectCloudOrg-2wwByg2k.js → useProjectCloudOrg-avTCVold.js} +1 -1
  75. package/web/assets/{useServiceUrlHost-CxbARDeg.js → useServiceUrlHost-Q3fzGox3.js} +1 -1
  76. package/web/assets/vue-draggable-plus-BHsveB8w.css +1 -0
  77. package/web/assets/vue-draggable-plus-WgrMXXmE.js +1 -0
  78. package/web/index.html +20 -20
  79. package/web/assets/AppLayout-BKlJtfuQ.js +0 -1
  80. package/web/assets/AppLayout-C4sv2O-I.css +0 -1
  81. package/web/assets/CloudMessagingPage-BcEvuswL.css +0 -1
  82. package/web/assets/CloudMessagingPage-BtOJO5FB.js +0 -2
  83. package/web/assets/EnvironmentForm-CMwzl9kA.css +0 -1
  84. package/web/assets/EnvironmentFormPage-B-dpyO0_.js +0 -1
  85. package/web/assets/EnvironmentFormPage-CYv6PG5q.css +0 -1
  86. package/web/assets/EnvironmentListPage-BlaOiTVh.js +0 -1
  87. package/web/assets/EnvironmentListPage-fRWTY84U.css +0 -1
  88. package/web/assets/LogViewer-CAvRwSZu.js +0 -3
  89. package/web/assets/ServiceDetailPage-DOycCWLP.css +0 -1
  90. package/web/assets/ServiceDetailPage-G-A9ryZD.js +0 -2
  91. package/web/assets/i18n-CXvcscXP.js +0 -1
  92. package/web/assets/src-CR9xphzo.css +0 -1
  93. package/web/assets/vue-draggable-plus-2Opxvs3C.css +0 -1
  94. package/web/assets/vue-draggable-plus-pTwVkhnN.js +0 -1
@@ -1 +1 @@
1
- import{n as e}from"./rolldown-runtime-Dd_uD5pT.js";import{B as t,C as n}from"./reactivity.esm-bundler-BQ9SB2vv.js";import{D as r,E as i,Ht as a,_ as o,b as s,bt as c,en as l,ft as u,g as d,k as f,mt as p,o as m,qt as h,rn as g,v as _,xt as v,y}from"./runtime-core.esm-bundler-DujKY9QV.js";import{C as b,J as ee,P as x,W as S,Y as te,dt as C,ft as w,mt as T,w as E}from"./src-Ds4DOFJs.js";import{r as D}from"./trpc-B5Yw_z6v.js";import{n as ne}from"./project.store-ZpH_PaSy.js";import{i as re,r as ie,t as ae}from"./cloud-auth-D_am4FlK.js";import{n as O}from"./error-DpF7X5iu.js";import{r as oe}from"./cloud-session-ja0-uvVS.js";import{n as se}from"./cloud-client-CX0pW7Kt.js";import{t as ce}from"./use-polling-CEkhIY_9.js";import{a as le,i as ue,n as de,r as fe,t as pe}from"./OrgKeyPrompt-NDfCQ-In.js";function me(){let e=0;return{begin(){let t=++e;return()=>t===e}}}var he=[`live`,`key-mismatch`];function ge(e){return e.some(e=>!he.includes(e))}var _e={class:`org-key-field`},k=w(f({__name:`OrgKeyField`,props:{keyHex:{},copiedDetail:{},revealed:{type:Boolean}},setup(e){let r=e,{t:i}=T(),a=x(),c=n(r.revealed===!0),u=`•`.repeat(16),f=d(()=>r.keyHex?c.value?r.keyHex:u:`—`);async function m(){if(r.keyHex)try{await navigator.clipboard.writeText(r.keyHex),a.add({severity:`success`,summary:i(`settingsPage.copied`),detail:r.copiedDetail,life:2e3})}catch{a.add({severity:`error`,summary:i(`common.error`),detail:i(`settingsPage.failedToCopy`),life:3e3})}}return(n,r)=>(p(),s(`div`,_e,[o(`code`,{class:l([`org-key-field__value`,{"org-key-field__value--empty":!e.keyHex}])},g(f.value),3),e.keyHex?(p(),_(t(C),{key:0,icon:c.value?`ti ti-eye-off`:`ti ti-eye`,variant:`text`,rounded:``,severity:`secondary`,title:c.value?t(i)(`settingsPage.hideKey`):t(i)(`settingsPage.showKey`),onClick:r[0]||=e=>c.value=!c.value},null,8,[`icon`,`title`])):y(``,!0),e.keyHex?(p(),_(t(C),{key:1,icon:`ti ti-copy`,variant:`text`,rounded:``,severity:`secondary`,title:t(i)(`settingsPage.copyToClipboard`),onClick:m},null,8,[`title`])):y(``,!0)]))}}),[[`__scopeId`,`data-v-911d3e9e`]]),ve={key:0,class:`org-reset`},ye={class:`org-reset__actions`},A={key:1,class:`org-reset`},j={key:0,class:`org-reset__text`},M={key:1,class:`org-reset__text`},N={key:2,class:`org-reset__text`},P={key:3,class:`org-reset__text`},F={class:`org-reset__text`},I={class:`org-reset__actions`},be=w(f({__name:`OrgKeyResetDialog`,props:{orgId:{},orgName:{},locked:{type:Boolean},mismatch:{type:Boolean},canSetKey:{type:Boolean}},emits:[`close`,`done`],setup(e,{emit:c}){let l=e,u=c,d=n(``),f=n(``),m=n(!1),v=n(``),b=n(``);a(()=>l.orgId,()=>{d.value=``,f.value=``,v.value=``,b.value=``});async function x(){if(l.orgId){m.value=!0,v.value=``;try{let e=await D.cloudSync.resetOrgKey.mutate({orgId:l.orgId,masterPassword:f.value});b.value=e.keyHex,d.value=``,f.value=``,u(`done`)}catch(e){v.value=O(e)}finally{m.value=!1}}}return(n,a)=>(p(),_(t(te),{visible:e.orgId!==null,"onUpdate:visible":a[4]||=e=>{e||u(`close`)},header:`Réinitialiser la clé de l'organisation`,modal:``,style:{width:`32rem`}},{default:h(()=>[b.value?(p(),s(`div`,ve,[r(t(S),{severity:`success`},{default:h(()=>[...a[5]||=[i(` Clé neuve en place, propre à cette organisation. Conservez-la : les autres membres devront la saisir, et elle n'est récupérable nulle part. `,-1)]]),_:1}),r(k,{revealed:``,"key-hex":b.value,"copied-detail":`Clé de ${e.orgName} copiée`},null,8,[`key-hex`,`copied-detail`]),o(`div`,ye,[r(t(C),{label:`J'ai conservé la clé`,size:`small`,onClick:a[0]||=e=>u(`close`)})])])):(p(),s(`div`,A,[e.mismatch?(p(),s(`p`,j,` Cette organisation utilise une autre clé que cette machine : rien ne se synchronise. `)):y(``,!0),e.locked?(p(),s(`p`,M,[...a[6]||=[i(` Coffre `,-1),o(`strong`,null,`verrouillé`,-1),i(` : son contenu est chiffré sous une clé absente de cette machine. La clé neuve s'installe sans le convertir, ce qui est illisible le `,-1),o(`strong`,null,`reste`,-1),i(`. Les autres membres perdent l'accès jusqu'à réception de la nouvelle clé. `,-1)]])):(p(),s(`p`,N,[...a[7]||=[i(` Le contenu local est re-chiffré sous la clé neuve, après sauvegarde : `,-1),o(`strong`,null,`rien n'est perdu ici`,-1),i(`. Les `,-1),o(`strong`,null,`autres membres`,-1),i(` perdent l'accès jusqu'à ce que vous leur transmettiez la clé. Ce qui est descendu du cloud sans avoir été lisible ici le reste. `,-1)]])),e.canSetKey?(p(),s(`p`,P,[...a[8]||=[i(` Pour seulement aligner cette machine sur la clé de l'organisation, utilisez `,-1),o(`strong`,null,`Renseigner la clé`,-1),i(`. `,-1)]])):y(``,!0),o(`p`,F,[a[9]||=i(` La clé neuve ne vaut que pour cette organisation. Le re-chiffrement demande votre master password. Pour confirmer, saisissez le nom de l'organisation : `,-1),o(`code`,null,g(e.orgName),1)]),r(t(ee),{modelValue:d.value,"onUpdate:modelValue":a[1]||=e=>d.value=e,placeholder:e.orgName,autocomplete:`off`},null,8,[`modelValue`,`placeholder`]),r(t(E),{modelValue:f.value,"onUpdate:modelValue":a[2]||=e=>f.value=e,placeholder:`Master password de cette machine`,feedback:!1,toggleMask:``,class:`org-reset__password`},null,8,[`modelValue`]),v.value?(p(),_(t(S),{key:4,severity:`error`},{default:h(()=>[i(g(v.value),1)]),_:1})):y(``,!0),o(`div`,I,[r(t(C),{label:`Annuler`,variant:`text`,size:`small`,severity:`secondary`,onClick:a[3]||=e=>u(`close`)}),r(t(C),{label:`Réinitialiser la clé`,severity:`danger`,size:`small`,disabled:d.value.trim()!==e.orgName||!f.value||m.value,loading:m.value,onClick:x},null,8,[`disabled`,`loading`])])]))]),_:1},8,[`visible`]))}}),[[`__scopeId`,`data-v-dfe2c532`]]),L={class:`org-vault`},R={class:`org-vault__head`},xe=[`title`],z={class:`org-vault__actions`},Se={class:`org-vault__meta`},Ce={key:0,class:`org-vault__key`},B={class:`org-vault__key-label`},we=w(f({__name:`OrgVaultRow`,props:{org:{},orgId:{},displayName:{},adoptable:{type:Boolean}},emits:[`adopt`],setup(e){let n=e,{t:a}=T(),c=d(()=>n.displayName||n.org?.name||n.orgId),u=d(()=>n.org?le(n.org):0),f=d(()=>{let e=[];if(!n.org)return``;let{apiKeys:t,conversations:r,secrets:i}=n.org.unreadable;return i&&e.push(a(`settingsPage.unreadableSecrets`,i,{named:{count:i}})),t&&e.push(a(`settingsPage.unreadableApiKeys`,t,{named:{count:t}})),r&&e.push(a(`settingsPage.unreadableConversations`,r,{named:{count:r}})),e.join(` · `)});return(n,d)=>(p(),s(`div`,L,[o(`div`,R,[o(`span`,{class:`org-vault__name`,title:e.orgId},g(c.value),9,xe),o(`span`,z,[v(n.$slots,`actions`)])]),o(`div`,Se,[v(n.$slots,`meta`),e.org?(p(),s(m,{key:0},[d[1]||=o(`span`,{class:`org-vault__sep`,"aria-hidden":`true`},`·`,-1),o(`span`,{class:l([`org-vault__source`,`org-vault__source--${e.org.source}`])},g(t(a)(t(de)[e.org.source])),3)],64)):y(``,!0)]),e.org?(p(),s(`div`,Ce,[o(`span`,B,g(t(a)(`settingsPage.keyHex`)),1),r(k,{"key-hex":e.org.keyHex,"copied-detail":t(a)(`settingsPage.orgKeyCopied`)},null,8,[`key-hex`,`copied-detail`])])):y(``,!0),u.value?(p(),_(t(S),{key:1,severity:`warn`,class:`org-vault__unreadable`},{default:h(()=>[i(g(t(a)(`settingsPage.unreadableTitle`,{org:c.value,detail:f.value})),1)]),_:1})):y(``,!0),e.adoptable===!1?y(``,!0):(p(),_(t(C),{key:2,label:t(a)(`settingsPage.adoptKey`),variant:`text`,size:`small`,class:`org-vault__adopt`,onClick:d[0]||=e=>n.$emit(`adopt`)},null,8,[`label`]))]))}}),[[`__scopeId`,`data-v-cb8c6468`]]),Te={class:`cloud-account`},Ee={class:`cloud-card`},De={class:`cloud-card__head`},Oe={class:`cloud-card__headtext`},ke={class:`cloud-card__subtitle`},Ae={key:0,class:`panel`},je={class:`signup`},Me=[`href`],Ne={key:1,class:`panel`},Pe={class:`accounts`},Fe=[`onClick`],Ie=[`src`,`alt`],Le={key:1,class:`avatar avatar--sm`},Re={class:`account__info`},ze={class:`account__name`},Be={key:0,class:`account__badge`},Ve={class:`account__email`},He={key:0,class:`account__cloud`},Ue={class:`orgs`},We={class:`orgs__head`},Ge={key:0,class:`orgs__empty`},Ke={key:1,class:`orgs__empty`},qe=[`href`],Je={class:`orgs__list`},Ye={class:`org__state`},Xe={class:`org__projects`},Ze={class:`orgs`},Qe={class:`orgs__head`},$e={key:0,class:`orgs__empty`},et={key:1,class:`orgs__empty`},tt={key:2,class:`orgs__list`},nt={class:`org__info`},rt={class:`org__name`},it={key:0,class:`badge`},at={class:`org__state`},ot={key:0,class:`list-menu`},st={class:`org-note`},ct=[`href`],V=f({__name:`CloudAccountPage`,setup(e){let{accounts:f,currentAccount:v,signIn:ee,signOut:te,refresh:w}=oe(),T=n(``),E=d(()=>f.value.find(e=>e.id===T.value)??v.value??f.value[0]??null);function le(e){return v.value?.id===e}let de=d(()=>new Set(f.value.map(e=>e.cloudUrl)).size>1);function he(e){return ae(e.userId,{accountId:e.id})}function _e(e,t){return(e||t||`?`).trim().split(/\s+/).slice(0,2).map(e=>e.charAt(0).toUpperCase()).join(``)||`?`}let k=n(``);async function ve(e){k.value=e;try{await te(e),T.value===e&&(T.value=``),J.value=[],await $()}finally{k.value=``}}let ye=d(()=>re()),A=d(()=>ie()),j=n(!1),M=n(``);async function N(){j.value=!0,M.value=``;try{await ee()}catch{M.value=`Impossible de joindre Runeya Cloud. Vérifiez la configuration du serveur local.`,j.value=!1}}let P=n([]),F=n(!1),I=n(``),L=n([]),R=ne();function xe(e){let t=L.value.find(t=>t.orgId===e);if(!t)return`Non synchronisée`;switch(t.state){case`live`:return`Synchronisée`;case`connecting`:return`Connexion…`;case`unauthenticated`:return`Reconnexion au cloud requise`;case`outdated`:return t.lastIncompatibleVersion?`Mise à jour requise (plus récent que Runeya ${t.lastIncompatibleVersion})`:`Mise à jour de Runeya requise`;case`key-mismatch`:return`Clé de chiffrement différente de celle de l'organisation`;default:return`Arrêtée`}}x();let z=n({});async function Se(e){if(e.length)try{await D.cloudSync.rememberOrgNames.mutate({orgs:e.map(e=>({orgId:e.id,name:e.name}))})}catch{}}async function Ce(){try{let e=await fe();z.value=Object.fromEntries(e.orgs.map(e=>[e.orgId,e]))}catch{z.value={}}}function B(e){return L.value.find(t=>t.orgId===e)?.state===`key-mismatch`||V.value[e]===`mismatch`}let V=n({});async function lt(e,t){let n=await Promise.all(e.map(async e=>{try{let t=await D.cloudSync.orgKeyStatus.query({orgId:e.id});return[e.id,t.status]}catch{return[e.id,`unknown`]}}));t()&&(V.value=Object.fromEntries(n))}let H=n(null);function ut(e){return ue({vault:z.value[e],canary:V.value[e],syncMismatch:B(e)})}let U=n(null),W=n(null);function dt(e,t){W.value=e,U.value?.toggle(t)}function ft(e){let t=W.value;U.value?.hide(),t&&e(t)}let G=n(null),pt=d(()=>P.value.find(e=>e.id===G.value)??null);function mt(e){let t=R.projects.filter(t=>t.orgId===e).length;return t===0?`Aucun projet`:t===1?`1 projet`:`${t} projets`}let ht=d(()=>ge(L.value.map(e=>e.state)));async function gt(){L.value=await D.cloudSync.list.query()}let K=ce(gt,3e3,`cloud-sync-state`);a(ht,e=>{e?K.start():K.stop()}),u(()=>K.stop());let _t=me();async function q(){let e=_t.begin();F.value=!0,I.value=``;try{let[t,n]=await Promise.all([se.organization.list(E.value?.id),D.cloudSync.list.query(),R.fetchAll(),Ce()]);if(!e())return;if(t.error){I.value=`Impossible de récupérer vos organisations.`;return}P.value=t.data??[],L.value=n,lt(P.value,e),Se(P.value)}catch(t){e()&&(I.value=O(t))}finally{e()&&(F.value=!1)}}let J=n([]),Y=n(!1),X=n(``),Z=n(``),Q=new Intl.RelativeTimeFormat(`fr`,{numeric:`auto`});function vt(e){let t=new Date(e.lastSeenAt).getTime(),n=``;if(Number.isFinite(t)){let e=Math.round((t-Date.now())/6e4);n=Math.abs(e)<60?Q.format(e,`minute`):Math.abs(e)<1440?Q.format(Math.round(e/60),`hour`):Q.format(Math.round(e/1440),`day`)}return[e.kind===`device`?`Machine`:`Navigateur`,n&&`vu ${n}`,e.ipAddress].filter(Boolean).join(` · `)}async function $(){Y.value=!0,X.value=``;try{let e=E.value?.id;if(!e){J.value=[];return}let t=await D.cloudAuth.devices.query({accountId:e});J.value=t.devices}catch(e){X.value=O(e)}finally{Y.value=!1}}async function yt(e){Z.value=e.id,X.value=``;try{let{self:t}=await D.cloudAuth.revokeDevice.mutate({id:e.id,...E.value?{accountId:E.value.id}:{}});if(t){J.value=[],T.value=``,await w();return}await $()}catch(e){X.value=O(e)}finally{Z.value=``}}return a(()=>E.value?.id,e=>{e&&(q(),$())},{immediate:!0}),(e,n)=>(p(),s(`div`,Te,[o(`div`,Ee,[o(`div`,De,[n[7]||=o(`div`,{class:`cloud-card__badge`},[o(`i`,{class:`ti ti-cloud`})],-1),o(`div`,Oe,[n[6]||=o(`h1`,{class:`cloud-card__title`},`Runeya Cloud`,-1),o(`p`,ke,g(t(f).length?`Vos comptes`:`Connectez-vous pour synchroniser et collaborer`),1)])]),t(f).length?(p(),s(`div`,Ne,[o(`ul`,Pe,[(p(!0),s(m,null,c(t(f),e=>(p(),s(`li`,{key:e.id,class:l([`account`,{"account--inspected":E.value?.id===e.id}])},[o(`button`,{type:`button`,class:`account__pick`,onClick:t=>T.value=e.id},[e.image?(p(),s(`img`,{key:0,src:he(e),alt:e.name,class:`avatar avatar--img avatar--sm`},null,8,Ie)):(p(),s(`div`,Le,g(_e(e.name,e.email)),1)),o(`span`,Re,[o(`strong`,ze,[i(g(e.name||e.email)+` `,1),le(e.id)?(p(),s(`span`,Be,`projet ouvert`)):y(``,!0)]),o(`span`,Ve,g(e.email),1),de.value?(p(),s(`span`,He,g(e.cloudUrl),1)):y(``,!0)])],8,Fe),r(t(C),{icon:`ti ti-logout`,severity:`secondary`,variant:`text`,rounded:``,size:`small`,loading:k.value===e.id,title:`Déconnecter ${e.email}`,"aria-label":`Déconnecter ${e.email}`,onClick:t=>ve(e.id)},null,8,[`loading`,`title`,`aria-label`,`onClick`])],2))),128))]),r(t(C),{label:`Lier un autre compte`,icon:`ti ti-plus`,severity:`secondary`,variant:`outlined`,size:`small`,class:`accounts__add`,loading:j.value,onClick:N},null,8,[`loading`]),o(`div`,Ue,[o(`div`,We,[n[10]||=o(`h2`,{class:`orgs__title`},`Organisations`,-1),r(t(C),{icon:`ti ti-refresh`,severity:`secondary`,variant:`text`,rounded:``,size:`small`,loading:F.value,"aria-label":`Rafraîchir`,onClick:q},null,8,[`loading`])]),F.value&&!P.value.length?(p(),s(`p`,Ge,`Chargement…`)):P.value.length?(p(),s(m,{key:2},[o(`ul`,Je,[(p(!0),s(m,null,c(P.value,e=>(p(),s(`li`,{key:e.id,class:`org`},[r(we,{"org-id":e.id,org:z.value[e.id]??null,"display-name":e.name,adoptable:!1},{meta:h(()=>[o(`span`,Ye,g(xe(e.id)),1),n[13]||=o(`span`,{class:`org__sep`,"aria-hidden":`true`},`·`,-1),o(`span`,Xe,g(mt(e.id)),1)]),actions:h(()=>[r(t(C),{icon:`ti ti-dots-vertical`,variant:`text`,rounded:``,size:`small`,severity:`secondary`,"aria-label":`Actions sur cette organisation`,onClick:t=>dt(e,t)},null,8,[`onClick`])]),_:2},1032,[`org-id`,`org`,`display-name`])]))),128))]),n[14]||=o(`p`,{class:`orgs__hint`},` Ouvrez un projet depuis le sélecteur en bas de la fenêtre pour le synchroniser sur cette machine. `,-1)],64)):(p(),s(`p`,Ke,[n[11]||=i(` Aucune organisation. Créez-en une sur `,-1),o(`a`,{href:A.value,target:`_blank`,rel:`noopener`,class:`link link--strong`},`Runeya Cloud`,8,qe),n[12]||=i(`. `,-1)])),I.value?(p(),_(t(S),{key:3,severity:`error`},{default:h(()=>[i(g(I.value),1)]),_:1})):y(``,!0)]),o(`div`,Ze,[o(`div`,Qe,[n[15]||=o(`h2`,{class:`orgs__title`},`Sessions actives`,-1),r(t(C),{icon:`ti ti-refresh`,severity:`secondary`,variant:`text`,rounded:``,size:`small`,loading:Y.value,"aria-label":`Rafraîchir`,onClick:$},null,8,[`loading`])]),Y.value&&!J.value.length?(p(),s(`p`,$e,`Chargement…`)):J.value.length?(p(),s(`ul`,tt,[(p(!0),s(m,null,c(J.value,e=>(p(),s(`li`,{key:e.id,class:`org`},[o(`div`,nt,[o(`strong`,rt,[o(`i`,{class:l(e.kind===`device`?`ti ti-device-desktop`:`ti ti-world`)},null,2),i(` `+g(e.name)+` `,1),e.current?(p(),s(`span`,it,`cette machine`)):y(``,!0)]),o(`span`,at,g(vt(e)),1)]),r(t(C),{label:e.current?`Délier`:`Révoquer`,icon:`ti ti-x`,severity:`danger`,size:`small`,variant:`text`,loading:Z.value===e.id,onClick:t=>yt(e)},null,8,[`label`,`loading`,`onClick`])]))),128))])):(p(),s(`p`,et,`Aucune session active.`)),X.value?(p(),_(t(S),{key:3,severity:`error`},{default:h(()=>[i(g(X.value),1)]),_:1})):y(``,!0)]),r(t(b),{ref_key:`orgMenu`,ref:U},{default:h(()=>[W.value?(p(),s(`div`,ot,[ut(W.value.id)?(p(),s(`button`,{key:0,class:`list-menu__item`,onClick:n[0]||=e=>ft(e=>H.value=e.id)},[...n[16]||=[o(`i`,{class:`ti ti-key`},null,-1),o(`span`,null,`Renseigner la clé de l'organisation`,-1)]])):y(``,!0),o(`button`,{class:`list-menu__item list-menu__item--danger`,onClick:n[1]||=e=>ft(e=>G.value=e.id)},[...n[17]||=[o(`i`,{class:`ti ti-refresh`},null,-1),o(`span`,null,`Réinitialiser la clé`,-1)]])])):y(``,!0)]),_:1},512),r(be,{"org-id":G.value,"org-name":pt.value?.name??``,locked:G.value?z.value[G.value]?.source===`locked`:!1,mismatch:G.value?B(G.value):!1,"can-set-key":G.value?ut(G.value):!1,onClose:n[2]||=e=>G.value=null,onDone:n[3]||=e=>q()},null,8,[`org-id`,`org-name`,`locked`,`mismatch`,`can-set-key`]),r(pe,{"org-id":H.value,reference:`cloud`,title:`Renseigner la clé de l'organisation`,hint:`Cette machine utilisera cette clé pour cette organisation. La clé publiée par l'organisation n'est pas modifiée. Son coffre et ceux de ses projets sont re-chiffrés, après sauvegarde.`,"confirm-label":`Renseigner cette clé`,onClose:n[4]||=e=>H.value=null,onAdopted:n[5]||=e=>{H.value=null,q()}},null,8,[`org-id`]),o(`div`,st,[n[20]||=o(`i`,{class:`ti ti-info-circle`},null,-1),o(`span`,null,[n[18]||=i(` La gestion des organisations se fait sur `,-1),o(`a`,{href:A.value,target:`_blank`,rel:`noopener`,class:`link link--strong`},`Runeya Cloud`,8,ct),n[19]||=i(`. `,-1)])])])):(p(),s(`div`,Ae,[n[9]||=o(`p`,{class:`signin-note`},` La connexion se fait sur Runeya Cloud. Vous serez redirigé pour autoriser cette application locale, puis ramené ici. `,-1),r(t(C),{loading:j.value,label:`Se connecter avec Runeya Cloud`,icon:`ti ti-external-link`,class:`submit-btn`,onClick:N},null,8,[`loading`]),M.value?(p(),_(t(S),{key:0,severity:`error`},{default:h(()=>[i(g(M.value),1)]),_:1})):y(``,!0),o(`div`,je,[n[8]||=o(`span`,null,`Pas encore de compte ?`,-1),o(`a`,{href:ye.value,target:`_blank`,rel:`noopener`,class:`link link--strong`},`Créez-en un sur Runeya Cloud`,8,Me)])]))])]))}}),lt=e({default:()=>H}),H=w(V,[[`__scopeId`,`data-v-fd55ce9b`]]);export{k as i,lt as n,we as r,H as t};
1
+ import{n as e}from"./rolldown-runtime-Dd_uD5pT.js";import{B as t,C as n}from"./reactivity.esm-bundler-BQ9SB2vv.js";import{D as r,E as i,Ht as a,_ as o,b as s,bt as c,en as l,ft as u,g as d,k as f,mt as p,o as m,qt as h,rn as g,v as _,xt as v,y}from"./runtime-core.esm-bundler-DujKY9QV.js";import{C as b,J as ee,P as x,W as S,Y as te,dt as C,ft as w,mt as T,w as E}from"./src--GO-VSJ0.js";import{r as D}from"./trpc-DbsE5GvQ.js";import{n as ne}from"./project.store-BEk4fciH.js";import{i as re,r as ie,t as ae}from"./cloud-auth-D_am4FlK.js";import{n as O}from"./error-DpF7X5iu.js";import{r as oe}from"./cloud-session-DRUqcSGP.js";import{n as se}from"./cloud-client-DQlUaoAw.js";import{t as ce}from"./use-polling-CEkhIY_9.js";import{a as le,i as ue,n as de,r as fe,t as pe}from"./OrgKeyPrompt-By1VjlSN.js";function me(){let e=0;return{begin(){let t=++e;return()=>t===e}}}var he=[`live`,`key-mismatch`];function ge(e){return e.some(e=>!he.includes(e))}var _e={class:`org-key-field`},k=w(f({__name:`OrgKeyField`,props:{keyHex:{},copiedDetail:{},revealed:{type:Boolean}},setup(e){let r=e,{t:i}=T(),a=x(),c=n(r.revealed===!0),u=`•`.repeat(16),f=d(()=>r.keyHex?c.value?r.keyHex:u:`—`);async function m(){if(r.keyHex)try{await navigator.clipboard.writeText(r.keyHex),a.add({severity:`success`,summary:i(`settingsPage.copied`),detail:r.copiedDetail,life:2e3})}catch{a.add({severity:`error`,summary:i(`common.error`),detail:i(`settingsPage.failedToCopy`),life:3e3})}}return(n,r)=>(p(),s(`div`,_e,[o(`code`,{class:l([`org-key-field__value`,{"org-key-field__value--empty":!e.keyHex}])},g(f.value),3),e.keyHex?(p(),_(t(C),{key:0,icon:c.value?`ti ti-eye-off`:`ti ti-eye`,variant:`text`,rounded:``,severity:`secondary`,title:c.value?t(i)(`settingsPage.hideKey`):t(i)(`settingsPage.showKey`),onClick:r[0]||=e=>c.value=!c.value},null,8,[`icon`,`title`])):y(``,!0),e.keyHex?(p(),_(t(C),{key:1,icon:`ti ti-copy`,variant:`text`,rounded:``,severity:`secondary`,title:t(i)(`settingsPage.copyToClipboard`),onClick:m},null,8,[`title`])):y(``,!0)]))}}),[[`__scopeId`,`data-v-911d3e9e`]]),ve={key:0,class:`org-reset`},ye={class:`org-reset__actions`},A={key:1,class:`org-reset`},j={key:0,class:`org-reset__text`},M={key:1,class:`org-reset__text`},N={key:2,class:`org-reset__text`},P={key:3,class:`org-reset__text`},F={class:`org-reset__text`},I={class:`org-reset__actions`},be=w(f({__name:`OrgKeyResetDialog`,props:{orgId:{},orgName:{},locked:{type:Boolean},mismatch:{type:Boolean},canSetKey:{type:Boolean}},emits:[`close`,`done`],setup(e,{emit:c}){let l=e,u=c,d=n(``),f=n(``),m=n(!1),v=n(``),b=n(``);a(()=>l.orgId,()=>{d.value=``,f.value=``,v.value=``,b.value=``});async function x(){if(l.orgId){m.value=!0,v.value=``;try{let e=await D.cloudSync.resetOrgKey.mutate({orgId:l.orgId,masterPassword:f.value});b.value=e.keyHex,d.value=``,f.value=``,u(`done`)}catch(e){v.value=O(e)}finally{m.value=!1}}}return(n,a)=>(p(),_(t(te),{visible:e.orgId!==null,"onUpdate:visible":a[4]||=e=>{e||u(`close`)},header:`Réinitialiser la clé de l'organisation`,modal:``,style:{width:`32rem`}},{default:h(()=>[b.value?(p(),s(`div`,ve,[r(t(S),{severity:`success`},{default:h(()=>[...a[5]||=[i(` Clé neuve en place, propre à cette organisation. Conservez-la : les autres membres devront la saisir, et elle n'est récupérable nulle part. `,-1)]]),_:1}),r(k,{revealed:``,"key-hex":b.value,"copied-detail":`Clé de ${e.orgName} copiée`},null,8,[`key-hex`,`copied-detail`]),o(`div`,ye,[r(t(C),{label:`J'ai conservé la clé`,size:`small`,onClick:a[0]||=e=>u(`close`)})])])):(p(),s(`div`,A,[e.mismatch?(p(),s(`p`,j,` Cette organisation utilise une autre clé que cette machine : rien ne se synchronise. `)):y(``,!0),e.locked?(p(),s(`p`,M,[...a[6]||=[i(` Coffre `,-1),o(`strong`,null,`verrouillé`,-1),i(` : son contenu est chiffré sous une clé absente de cette machine. La clé neuve s'installe sans le convertir, ce qui est illisible le `,-1),o(`strong`,null,`reste`,-1),i(`. Les autres membres perdent l'accès jusqu'à réception de la nouvelle clé. `,-1)]])):(p(),s(`p`,N,[...a[7]||=[i(` Le contenu local est re-chiffré sous la clé neuve, après sauvegarde : `,-1),o(`strong`,null,`rien n'est perdu ici`,-1),i(`. Les `,-1),o(`strong`,null,`autres membres`,-1),i(` perdent l'accès jusqu'à ce que vous leur transmettiez la clé. Ce qui est descendu du cloud sans avoir été lisible ici le reste. `,-1)]])),e.canSetKey?(p(),s(`p`,P,[...a[8]||=[i(` Pour seulement aligner cette machine sur la clé de l'organisation, utilisez `,-1),o(`strong`,null,`Renseigner la clé`,-1),i(`. `,-1)]])):y(``,!0),o(`p`,F,[a[9]||=i(` La clé neuve ne vaut que pour cette organisation. Le re-chiffrement demande votre master password. Pour confirmer, saisissez le nom de l'organisation : `,-1),o(`code`,null,g(e.orgName),1)]),r(t(ee),{modelValue:d.value,"onUpdate:modelValue":a[1]||=e=>d.value=e,placeholder:e.orgName,autocomplete:`off`},null,8,[`modelValue`,`placeholder`]),r(t(E),{modelValue:f.value,"onUpdate:modelValue":a[2]||=e=>f.value=e,placeholder:`Master password de cette machine`,feedback:!1,toggleMask:``,class:`org-reset__password`},null,8,[`modelValue`]),v.value?(p(),_(t(S),{key:4,severity:`error`},{default:h(()=>[i(g(v.value),1)]),_:1})):y(``,!0),o(`div`,I,[r(t(C),{label:`Annuler`,variant:`text`,size:`small`,severity:`secondary`,onClick:a[3]||=e=>u(`close`)}),r(t(C),{label:`Réinitialiser la clé`,severity:`danger`,size:`small`,disabled:d.value.trim()!==e.orgName||!f.value||m.value,loading:m.value,onClick:x},null,8,[`disabled`,`loading`])])]))]),_:1},8,[`visible`]))}}),[[`__scopeId`,`data-v-dfe2c532`]]),L={class:`org-vault`},R={class:`org-vault__head`},xe=[`title`],z={class:`org-vault__actions`},Se={class:`org-vault__meta`},Ce={key:0,class:`org-vault__key`},B={class:`org-vault__key-label`},we=w(f({__name:`OrgVaultRow`,props:{org:{},orgId:{},displayName:{},adoptable:{type:Boolean}},emits:[`adopt`],setup(e){let n=e,{t:a}=T(),c=d(()=>n.displayName||n.org?.name||n.orgId),u=d(()=>n.org?le(n.org):0),f=d(()=>{let e=[];if(!n.org)return``;let{apiKeys:t,conversations:r,secrets:i}=n.org.unreadable;return i&&e.push(a(`settingsPage.unreadableSecrets`,i,{named:{count:i}})),t&&e.push(a(`settingsPage.unreadableApiKeys`,t,{named:{count:t}})),r&&e.push(a(`settingsPage.unreadableConversations`,r,{named:{count:r}})),e.join(` · `)});return(n,d)=>(p(),s(`div`,L,[o(`div`,R,[o(`span`,{class:`org-vault__name`,title:e.orgId},g(c.value),9,xe),o(`span`,z,[v(n.$slots,`actions`)])]),o(`div`,Se,[v(n.$slots,`meta`),e.org?(p(),s(m,{key:0},[d[1]||=o(`span`,{class:`org-vault__sep`,"aria-hidden":`true`},`·`,-1),o(`span`,{class:l([`org-vault__source`,`org-vault__source--${e.org.source}`])},g(t(a)(t(de)[e.org.source])),3)],64)):y(``,!0)]),e.org?(p(),s(`div`,Ce,[o(`span`,B,g(t(a)(`settingsPage.keyHex`)),1),r(k,{"key-hex":e.org.keyHex,"copied-detail":t(a)(`settingsPage.orgKeyCopied`)},null,8,[`key-hex`,`copied-detail`])])):y(``,!0),u.value?(p(),_(t(S),{key:1,severity:`warn`,class:`org-vault__unreadable`},{default:h(()=>[i(g(t(a)(`settingsPage.unreadableTitle`,{org:c.value,detail:f.value})),1)]),_:1})):y(``,!0),e.adoptable===!1?y(``,!0):(p(),_(t(C),{key:2,label:t(a)(`settingsPage.adoptKey`),variant:`text`,size:`small`,class:`org-vault__adopt`,onClick:d[0]||=e=>n.$emit(`adopt`)},null,8,[`label`]))]))}}),[[`__scopeId`,`data-v-cb8c6468`]]),Te={class:`cloud-account`},Ee={class:`cloud-card`},De={class:`cloud-card__head`},Oe={class:`cloud-card__headtext`},ke={class:`cloud-card__subtitle`},Ae={key:0,class:`panel`},je={class:`signup`},Me=[`href`],Ne={key:1,class:`panel`},Pe={class:`accounts`},Fe=[`onClick`],Ie=[`src`,`alt`],Le={key:1,class:`avatar avatar--sm`},Re={class:`account__info`},ze={class:`account__name`},Be={key:0,class:`account__badge`},Ve={class:`account__email`},He={key:0,class:`account__cloud`},Ue={class:`orgs`},We={class:`orgs__head`},Ge={key:0,class:`orgs__empty`},Ke={key:1,class:`orgs__empty`},qe=[`href`],Je={class:`orgs__list`},Ye={class:`org__state`},Xe={class:`org__projects`},Ze={class:`orgs`},Qe={class:`orgs__head`},$e={key:0,class:`orgs__empty`},et={key:1,class:`orgs__empty`},tt={key:2,class:`orgs__list`},nt={class:`org__info`},rt={class:`org__name`},it={key:0,class:`badge`},at={class:`org__state`},ot={key:0,class:`list-menu`},st={class:`org-note`},ct=[`href`],V=f({__name:`CloudAccountPage`,setup(e){let{accounts:f,currentAccount:v,signIn:ee,signOut:te,refresh:w}=oe(),T=n(``),E=d(()=>f.value.find(e=>e.id===T.value)??v.value??f.value[0]??null);function le(e){return v.value?.id===e}let de=d(()=>new Set(f.value.map(e=>e.cloudUrl)).size>1);function he(e){return ae(e.userId,{accountId:e.id})}function _e(e,t){return(e||t||`?`).trim().split(/\s+/).slice(0,2).map(e=>e.charAt(0).toUpperCase()).join(``)||`?`}let k=n(``);async function ve(e){k.value=e;try{await te(e),T.value===e&&(T.value=``),J.value=[],await $()}finally{k.value=``}}let ye=d(()=>re()),A=d(()=>ie()),j=n(!1),M=n(``);async function N(){j.value=!0,M.value=``;try{await ee()}catch{M.value=`Impossible de joindre Runeya Cloud. Vérifiez la configuration du serveur local.`,j.value=!1}}let P=n([]),F=n(!1),I=n(``),L=n([]),R=ne();function xe(e){let t=L.value.find(t=>t.orgId===e);if(!t)return`Non synchronisée`;switch(t.state){case`live`:return`Synchronisée`;case`connecting`:return`Connexion…`;case`unauthenticated`:return`Reconnexion au cloud requise`;case`outdated`:return t.lastIncompatibleVersion?`Mise à jour requise (plus récent que Runeya ${t.lastIncompatibleVersion})`:`Mise à jour de Runeya requise`;case`key-mismatch`:return`Clé de chiffrement différente de celle de l'organisation`;default:return`Arrêtée`}}x();let z=n({});async function Se(e){if(e.length)try{await D.cloudSync.rememberOrgNames.mutate({orgs:e.map(e=>({orgId:e.id,name:e.name}))})}catch{}}async function Ce(){try{let e=await fe();z.value=Object.fromEntries(e.orgs.map(e=>[e.orgId,e]))}catch{z.value={}}}function B(e){return L.value.find(t=>t.orgId===e)?.state===`key-mismatch`||V.value[e]===`mismatch`}let V=n({});async function lt(e,t){let n=await Promise.all(e.map(async e=>{try{let t=await D.cloudSync.orgKeyStatus.query({orgId:e.id});return[e.id,t.status]}catch{return[e.id,`unknown`]}}));t()&&(V.value=Object.fromEntries(n))}let H=n(null);function ut(e){return ue({vault:z.value[e],canary:V.value[e],syncMismatch:B(e)})}let U=n(null),W=n(null);function dt(e,t){W.value=e,U.value?.toggle(t)}function ft(e){let t=W.value;U.value?.hide(),t&&e(t)}let G=n(null),pt=d(()=>P.value.find(e=>e.id===G.value)??null);function mt(e){let t=R.projects.filter(t=>t.orgId===e).length;return t===0?`Aucun projet`:t===1?`1 projet`:`${t} projets`}let ht=d(()=>ge(L.value.map(e=>e.state)));async function gt(){L.value=await D.cloudSync.list.query()}let K=ce(gt,3e3,`cloud-sync-state`);a(ht,e=>{e?K.start():K.stop()}),u(()=>K.stop());let _t=me();async function q(){let e=_t.begin();F.value=!0,I.value=``;try{let[t,n]=await Promise.all([se.organization.list(E.value?.id),D.cloudSync.list.query(),R.fetchAll(),Ce()]);if(!e())return;if(t.error){I.value=`Impossible de récupérer vos organisations.`;return}P.value=t.data??[],L.value=n,lt(P.value,e),Se(P.value)}catch(t){e()&&(I.value=O(t))}finally{e()&&(F.value=!1)}}let J=n([]),Y=n(!1),X=n(``),Z=n(``),Q=new Intl.RelativeTimeFormat(`fr`,{numeric:`auto`});function vt(e){let t=new Date(e.lastSeenAt).getTime(),n=``;if(Number.isFinite(t)){let e=Math.round((t-Date.now())/6e4);n=Math.abs(e)<60?Q.format(e,`minute`):Math.abs(e)<1440?Q.format(Math.round(e/60),`hour`):Q.format(Math.round(e/1440),`day`)}return[e.kind===`device`?`Machine`:`Navigateur`,n&&`vu ${n}`,e.ipAddress].filter(Boolean).join(` · `)}async function $(){Y.value=!0,X.value=``;try{let e=E.value?.id;if(!e){J.value=[];return}let t=await D.cloudAuth.devices.query({accountId:e});J.value=t.devices}catch(e){X.value=O(e)}finally{Y.value=!1}}async function yt(e){Z.value=e.id,X.value=``;try{let{self:t}=await D.cloudAuth.revokeDevice.mutate({id:e.id,...E.value?{accountId:E.value.id}:{}});if(t){J.value=[],T.value=``,await w();return}await $()}catch(e){X.value=O(e)}finally{Z.value=``}}return a(()=>E.value?.id,e=>{e&&(q(),$())},{immediate:!0}),(e,n)=>(p(),s(`div`,Te,[o(`div`,Ee,[o(`div`,De,[n[7]||=o(`div`,{class:`cloud-card__badge`},[o(`i`,{class:`ti ti-cloud`})],-1),o(`div`,Oe,[n[6]||=o(`h1`,{class:`cloud-card__title`},`Runeya Cloud`,-1),o(`p`,ke,g(t(f).length?`Vos comptes`:`Connectez-vous pour synchroniser et collaborer`),1)])]),t(f).length?(p(),s(`div`,Ne,[o(`ul`,Pe,[(p(!0),s(m,null,c(t(f),e=>(p(),s(`li`,{key:e.id,class:l([`account`,{"account--inspected":E.value?.id===e.id}])},[o(`button`,{type:`button`,class:`account__pick`,onClick:t=>T.value=e.id},[e.image?(p(),s(`img`,{key:0,src:he(e),alt:e.name,class:`avatar avatar--img avatar--sm`},null,8,Ie)):(p(),s(`div`,Le,g(_e(e.name,e.email)),1)),o(`span`,Re,[o(`strong`,ze,[i(g(e.name||e.email)+` `,1),le(e.id)?(p(),s(`span`,Be,`projet ouvert`)):y(``,!0)]),o(`span`,Ve,g(e.email),1),de.value?(p(),s(`span`,He,g(e.cloudUrl),1)):y(``,!0)])],8,Fe),r(t(C),{icon:`ti ti-logout`,severity:`secondary`,variant:`text`,rounded:``,size:`small`,loading:k.value===e.id,title:`Déconnecter ${e.email}`,"aria-label":`Déconnecter ${e.email}`,onClick:t=>ve(e.id)},null,8,[`loading`,`title`,`aria-label`,`onClick`])],2))),128))]),r(t(C),{label:`Lier un autre compte`,icon:`ti ti-plus`,severity:`secondary`,variant:`outlined`,size:`small`,class:`accounts__add`,loading:j.value,onClick:N},null,8,[`loading`]),o(`div`,Ue,[o(`div`,We,[n[10]||=o(`h2`,{class:`orgs__title`},`Organisations`,-1),r(t(C),{icon:`ti ti-refresh`,severity:`secondary`,variant:`text`,rounded:``,size:`small`,loading:F.value,"aria-label":`Rafraîchir`,onClick:q},null,8,[`loading`])]),F.value&&!P.value.length?(p(),s(`p`,Ge,`Chargement…`)):P.value.length?(p(),s(m,{key:2},[o(`ul`,Je,[(p(!0),s(m,null,c(P.value,e=>(p(),s(`li`,{key:e.id,class:`org`},[r(we,{"org-id":e.id,org:z.value[e.id]??null,"display-name":e.name,adoptable:!1},{meta:h(()=>[o(`span`,Ye,g(xe(e.id)),1),n[13]||=o(`span`,{class:`org__sep`,"aria-hidden":`true`},`·`,-1),o(`span`,Xe,g(mt(e.id)),1)]),actions:h(()=>[r(t(C),{icon:`ti ti-dots-vertical`,variant:`text`,rounded:``,size:`small`,severity:`secondary`,"aria-label":`Actions sur cette organisation`,onClick:t=>dt(e,t)},null,8,[`onClick`])]),_:2},1032,[`org-id`,`org`,`display-name`])]))),128))]),n[14]||=o(`p`,{class:`orgs__hint`},` Ouvrez un projet depuis le sélecteur en bas de la fenêtre pour le synchroniser sur cette machine. `,-1)],64)):(p(),s(`p`,Ke,[n[11]||=i(` Aucune organisation. Créez-en une sur `,-1),o(`a`,{href:A.value,target:`_blank`,rel:`noopener`,class:`link link--strong`},`Runeya Cloud`,8,qe),n[12]||=i(`. `,-1)])),I.value?(p(),_(t(S),{key:3,severity:`error`},{default:h(()=>[i(g(I.value),1)]),_:1})):y(``,!0)]),o(`div`,Ze,[o(`div`,Qe,[n[15]||=o(`h2`,{class:`orgs__title`},`Sessions actives`,-1),r(t(C),{icon:`ti ti-refresh`,severity:`secondary`,variant:`text`,rounded:``,size:`small`,loading:Y.value,"aria-label":`Rafraîchir`,onClick:$},null,8,[`loading`])]),Y.value&&!J.value.length?(p(),s(`p`,$e,`Chargement…`)):J.value.length?(p(),s(`ul`,tt,[(p(!0),s(m,null,c(J.value,e=>(p(),s(`li`,{key:e.id,class:`org`},[o(`div`,nt,[o(`strong`,rt,[o(`i`,{class:l(e.kind===`device`?`ti ti-device-desktop`:`ti ti-world`)},null,2),i(` `+g(e.name)+` `,1),e.current?(p(),s(`span`,it,`cette machine`)):y(``,!0)]),o(`span`,at,g(vt(e)),1)]),r(t(C),{label:e.current?`Délier`:`Révoquer`,icon:`ti ti-x`,severity:`danger`,size:`small`,variant:`text`,loading:Z.value===e.id,onClick:t=>yt(e)},null,8,[`label`,`loading`,`onClick`])]))),128))])):(p(),s(`p`,et,`Aucune session active.`)),X.value?(p(),_(t(S),{key:3,severity:`error`},{default:h(()=>[i(g(X.value),1)]),_:1})):y(``,!0)]),r(t(b),{ref_key:`orgMenu`,ref:U},{default:h(()=>[W.value?(p(),s(`div`,ot,[ut(W.value.id)?(p(),s(`button`,{key:0,class:`list-menu__item`,onClick:n[0]||=e=>ft(e=>H.value=e.id)},[...n[16]||=[o(`i`,{class:`ti ti-key`},null,-1),o(`span`,null,`Renseigner la clé de l'organisation`,-1)]])):y(``,!0),o(`button`,{class:`list-menu__item list-menu__item--danger`,onClick:n[1]||=e=>ft(e=>G.value=e.id)},[...n[17]||=[o(`i`,{class:`ti ti-refresh`},null,-1),o(`span`,null,`Réinitialiser la clé`,-1)]])])):y(``,!0)]),_:1},512),r(be,{"org-id":G.value,"org-name":pt.value?.name??``,locked:G.value?z.value[G.value]?.source===`locked`:!1,mismatch:G.value?B(G.value):!1,"can-set-key":G.value?ut(G.value):!1,onClose:n[2]||=e=>G.value=null,onDone:n[3]||=e=>q()},null,8,[`org-id`,`org-name`,`locked`,`mismatch`,`can-set-key`]),r(pe,{"org-id":H.value,reference:`cloud`,title:`Renseigner la clé de l'organisation`,hint:`Cette machine utilisera cette clé pour cette organisation. La clé publiée par l'organisation n'est pas modifiée. Son coffre et ceux de ses projets sont re-chiffrés, après sauvegarde.`,"confirm-label":`Renseigner cette clé`,onClose:n[4]||=e=>H.value=null,onAdopted:n[5]||=e=>{H.value=null,q()}},null,8,[`org-id`]),o(`div`,st,[n[20]||=o(`i`,{class:`ti ti-info-circle`},null,-1),o(`span`,null,[n[18]||=i(` La gestion des organisations se fait sur `,-1),o(`a`,{href:A.value,target:`_blank`,rel:`noopener`,class:`link link--strong`},`Runeya Cloud`,8,ct),n[19]||=i(`. `,-1)])])])):(p(),s(`div`,Ae,[n[9]||=o(`p`,{class:`signin-note`},` La connexion se fait sur Runeya Cloud. Vous serez redirigé pour autoriser cette application locale, puis ramené ici. `,-1),r(t(C),{loading:j.value,label:`Se connecter avec Runeya Cloud`,icon:`ti ti-external-link`,class:`submit-btn`,onClick:N},null,8,[`loading`]),M.value?(p(),_(t(S),{key:0,severity:`error`},{default:h(()=>[i(g(M.value),1)]),_:1})):y(``,!0),o(`div`,je,[n[8]||=o(`span`,null,`Pas encore de compte ?`,-1),o(`a`,{href:ye.value,target:`_blank`,rel:`noopener`,class:`link link--strong`},`Créez-en un sur Runeya Cloud`,8,Me)])]))])]))}}),lt=e({default:()=>H}),H=w(V,[[`__scopeId`,`data-v-fd55ce9b`]]);export{k as i,lt as n,we as r,H as t};
@@ -0,0 +1 @@
1
+ .cloud-chat[data-v-b9759e45]{flex-direction:column;width:100%;height:100%;min-height:0;padding:1rem 1.25rem;display:flex}.org-select[data-v-b9759e45]{min-width:200px}.notice[data-v-b9759e45]{color:var(--r-text-muted,#888);text-align:center;padding:2rem 0}.panel[data-v-b9759e45]{flex:1;min-height:0}.connect-cta[data-v-b9759e45]{text-align:center;border:1px solid var(--r-border);background:var(--r-bg);border-radius:16px;flex-direction:column;align-items:center;gap:.75rem;max-width:420px;margin:3rem auto;padding:2rem;display:flex}.connect-cta__badge[data-v-b9759e45]{color:#fff;background:linear-gradient(135deg,#ec4899,#a855f7);border-radius:16px;justify-content:center;align-items:center;width:60px;height:60px;font-size:1.75rem;display:flex;box-shadow:0 6px 18px #a855f766}.connect-cta__title[data-v-b9759e45]{margin:.25rem 0 0;font-size:1.25rem;font-weight:800}.connect-cta__desc[data-v-b9759e45]{color:var(--r-text-muted);margin:0 0 .5rem;font-size:.9rem;line-height:1.5}
@@ -0,0 +1,2 @@
1
+ import{B as e,C as t}from"./reactivity.esm-bundler-BQ9SB2vv.js";import{D as n,_ as r,b as i,en as a,g as o,k as s,mt as c,qt as ee,rn as l,v as te}from"./runtime-core.esm-bundler-DujKY9QV.js";import{Y as ne,dt as re,ft as u,mt as ie}from"./src--GO-VSJ0.js";import{g as d}from"./useApi-s_02lHjl-DZYO2tHU.js";import{n as f}from"./scenario.store-D-JrRiVO.js";import{n as p,r as m,t as h}from"./cloud-auth-D_am4FlK.js";import{r as ae}from"./cloud-session-DRUqcSGP.js";import{n as oe,t as se}from"./cloud-client-DQlUaoAw.js";import{r as ce,t as g}from"./AiChatModals-D1928AxG.js";import{t as _}from"./useAiChatDrawer-D_ofn8Eo.js";import{P as v,d as y,f as b}from"./index-D_x2s8Ut.js";import{n as x}from"./src-CAwAaB5j.js";import{t as S}from"./cloud-chat.store-Wg1poFem.js";import{t as C}from"./useCloudOrg-DygUBG1a.js";var w={class:`cloud-chat`},T={key:0,class:`connect-cta`},E={class:`connect-cta__badge`},D={class:`connect-cta__title`},O={class:`connect-cta__desc`},k={key:1,class:`notice`},A=u(s({__name:`CloudMessagingPage`,setup(s){let{t:u}=ie(),A=d(),{user:j}=ae(),M=o(()=>j.value?.id),N=o(()=>p());function P(e){return h(e,{orgId:I.value})}function F(e,t){return t?u(`cloudMessaging.${e}`,t):u(`cloudMessaging.${e}`)}let{orgId:I,orgSlug:L,members:R,unavailability:z}=C(),B=t([]),{columnTitles:V}=b(B);function H(e,t){return V.value[y(e,t)]}function U(){L.value&&window.open(`${m()}/app/${L.value}/settings/org/billing`,`_blank`,`noopener`)}let W=S();function G(e){W.noteChannelRead(e)}let K=o(()=>m().replace(/\/+$/,``));function le(e){let t=/^\/app\/[^/]+(\/kanban\/[^/]+(?:\/card\/[^/?#]+)?)(?:[?#].*)?$/.exec(e);return t?t[1]:null}function ue(e,t){if(t!==K.value){A.push(e);return}let n=le(e);n?A.push(n):window.open(`${t}${e}`,`_blank`,`noopener`)}let{openWithContext:q}=_(),J=f(),Y=t(null),X=t(!1),Z=t(null);function Q(){let e=Z.value;if(!e)return``;let t=e=>new Date(e).toLocaleTimeString([],{hour:`2-digit`,minute:`2-digit`}),n=e.messages.map(e=>`[${t(e.createdAt)}] ${e.userName}: ${e.content}`).join(`
2
+ `);return`Messages de la conversation « ${e.title} » :\n\n${n}`}function $(){return u(`cloudMessaging.aiContextLabel`,{count:Z.value?.messages.length??0})}function de(e){e.messages.length&&(Z.value=e,X.value=!0)}async function fe(e,t){let n=Q();n.trim()&&(await J.createConversation({runner:e,providerId:t}),q({text:n,label:$(),icon:`ti-messages`}))}function pe(e,t,n){X.value=!1,Y.value?.showScenarioDialog(e,void 0,t,n??void 0)}async function me(e,t){X.value=!1,await fe(e===`keep`?void 0:e,t??void 0)}async function he(e,t,n,r){let i=Q(),a=t||i,o=await J.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;J.startScenarioRun(o.id,e,a,void 0,t)}q({text:i,label:$(),icon:`ti-messages`})}return(t,o)=>(c(),i(`div`,w,[e(j)?e(I)?(c(),te(e(x),{key:2,class:`panel`,client:e(oe),"org-id":e(I),"cloud-api-base-url":N.value,"avatar-url":P,"stream-url":e(se),"notify-on-unread":!1,"current-user-id":M.value,members:e(R),t:F,"internal-origins":[K.value],"enable-select-to-ai":``,"card-column":H,onCardRefs:o[1]||=e=>B.value=e,onChannelRead:G,onAiContext:de,onInternalLink:ue,onUpgrade:U},null,8,[`client`,`org-id`,`cloud-api-base-url`,`stream-url`,`current-user-id`,`members`,`internal-origins`])):(c(),i(`div`,k,l(e(z)===`not-member`?e(u)(`cloudMessaging.orgNotAccessible`):e(u)(`cloudMessaging.noProjectOrg`)),1)):(c(),i(`div`,T,[r(`div`,E,[r(`i`,{class:a(e(v))},null,2)]),r(`h2`,D,l(e(u)(`cloudMessaging.notConnectedTitle`)),1),r(`p`,O,l(e(u)(`cloudMessaging.notConnectedDesc`)),1),n(e(re),{label:e(u)(`cloudMessaging.connectAction`),icon:`ti ti-cloud`,onClick:o[0]||=t=>e(A).push({name:`cloud-account`})},null,8,[`label`])])),n(e(ne),{visible:X.value,header:e(u)(`kanban.board.launchAiDialog.header`),modal:!0,style:{width:`700px`,maxHeight:`80vh`},"onUpdate:visible":o[2]||=e=>{e||(X.value=!1)}},{default:ee(()=>[n(ce,{compact:``,onSelectScenario:pe,onSkip:me})]),_:1},8,[`visible`,`header`]),n(g,{ref_key:`aiModalsRef`,ref:Y,onConfirmScenarioStart:he},null,512)]))}}),[[`__scopeId`,`data-v-b9759e45`]]);export{A as default};
@@ -1 +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{F as O,I as k,m as A,p as j}from"./floating-ui.dom-DWhsZyqT.js";import{C as M,G as N,J as P,K as F,P as I,T as L,U as ee,V as R,Y as z,dt as B,ft as V,j as te,mt as H}from"./src-Ds4DOFJs.js";import{n as U}from"./project-launch.store-C7xfTlMc.js";import{g as W}from"./useApi-s_02lHjl-DZYO2tHU.js";import{r as G}from"./trpc-B5Yw_z6v.js";import{n as K}from"./project.store-ZpH_PaSy.js";import{n as q}from"./error-DpF7X5iu.js";import{r as ne}from"./cloud-session-ja0-uvVS.js";import{t as J}from"./service.store-Dti7eDhR.js";import{t as Y}from"./agent.store-DTyu_McS.js";import{r as re,t as ie}from"./process-BWkHpZOM.js";import{c as ae}from"./index-DTrxphh3.js";import{t as X}from"./ProcessControls-D23gTUiv.js";import{t as oe}from"./DirectoryPickerDialog-CDyk4Z_Q.js";import{t as se}from"./ProjectCreateDialog-2PZX7tq2.js";import{t as ce}from"./ProjectPublishDialog-BylWoa0n.js";var le={class:`card-title-row`},ue=[`title`],de={key:0,class:`card-description`},fe={class:`card-meta`},pe={class:`meta-item`},me={key:0,class:`meta-item meta-item--cloud`},he=V(_({__name:`ProjectCard`,props:{project:{},active:{type:Boolean}},emits:[`click`],setup(t,{emit:n}){let r=n,{t:i}=H(),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(R),{class:m([`project-card`,{"project-card--active":t.active}]),onClick:i[0]||=e=>r(`click`)},{title:x(()=>[u(`div`,le,[u(`span`,{class:`card-title`,title:t.project.name},S(t.project.name),9,ue),E(n.$slots,`actions`,{},void 0,!0)])]),content:x(()=>[t.project.description?(v(),d(`p`,de,S(s(t.project.description,120)),1)):D(``,!0),u(`div`,fe,[u(`span`,pe,[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`,me,[i[2]||=u(`i`,{class:`ti ti-cloud`},null,-1),o(S(a.value),1)])):D(``,!0)])]),_:3},8,[`class`]))}}),[[`__scopeId`,`data-v-95e62c18`]]),ge={class:`panel`},_e={class:`panel__header`},ve={class:`panel__title`},ye={key:0,class:`panel__empty`},be={key:1,class:`project-list`},xe=[`aria-label`,`onClick`],Se={key:0,class:`project-menu`},Ce={class:`dialog-field`},we={for:`dashboard-edit-name`},Te={class:`dialog-field`},Ee={for:`dashboard-edit-desc`},De=V(_({__name:`ProjectsPanel`,setup(n){let{t:r}=H(),i=I(),s=te(),c=K(),l=U(),{isLinked:p}=ne(),m=t(!1),h=t(null),_=t(null),y=t(!1),C=t(!1),T=t(null),E=t(!1),A=t(null),j=t({name:``,description:``}),N=t(!1),F=t(null),L=g(()=>c.projects.find(e=>e.id===l.activeProjectId&&(e.orgId??null)===(l.activeOrgId??null))??null);function R(e){return L.value?.id===e.id&&(L.value?.orgId??null)===(e.orgId??null)}function V(e){l.setActiveProject(e.id,e.orgId??null)}function W(e,t){h.value=t,_.value?.toggle(e)}function J(){_.value?.hide()}function Y(e){i.add({severity:`error`,summary:r(`common.error`),detail:q(e),life:5e3})}function re(e){i.add({severity:`success`,summary:r(`projectList.created`),detail:r(`projectList.createdDetail`,{name:e.name}),life:3e3})}function ie(e){J(),T.value=e,C.value=!0}function ae(e){A.value=e,j.value={name:e.name,description:e.description??``},E.value=!0,J()}async function X(){let e=A.value;if(e&&j.value.name.trim()){m.value=!0;try{if(!await c.update(e,{name:j.value.name.trim(),description:j.value.description.trim()})){Y(c.error);return}E.value=!1,i.add({severity:`success`,summary:r(`projectDetail.nameUpdated`),life:2e3})}finally{m.value=!1}}}async function le(e){if(J(),A.value=e,F.value=null,e.orgId)try{let{path:t}=await G.project.getLocalPath.query({id:e.id,orgId:e.orgId});F.value=t??null}catch{F.value=null}N.value=!0}function ue(e){F.value=e}function de(e){J(),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=R(e);if(!await c.remove(e)){Y(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`,ge,[u(`div`,_e,[u(`h2`,ve,S(e(r)(`dashboard.projects`)),1),a(e(ee),{value:String(e(c).projectCount),severity:`secondary`},null,8,[`value`]),a(e(B),{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`,ye,S(e(r)(`dashboard.noProjects`)),1)):(v(),d(`div`,be,[(v(!0),d(b,null,f(e(c).projects,t=>(v(),w(he,{key:`${t.orgId??`local`}:${t.id}`,project:t,active:R(t),"data-testid":`project-row-link`,onClick:e=>V(t)},{actions:x(()=>[u(`button`,{type:`button`,class:`project-menu-button`,"aria-label":e(r)(`common.actions`),onClick:k(e=>W(e,t),[`stop`])},[...n[13]||=[u(`i`,{class:`ti ti-dots-vertical`},null,-1)]],8,xe)]),_:2},1032,[`project`,`active`,`onClick`]))),128))])),a(e(M),{ref_key:`menu`,ref:_},{default:x(()=>[h.value?(v(),d(`div`,Se,[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=>le(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(se,{visible:y.value,"onUpdate:visible":n[5]||=e=>y.value=e,onCreated:re},null,8,[`visible`]),a(ce,{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(z),{visible:E.value,"onUpdate:visible":n[11]||=e=>E.value=e,header:e(r)(`dashboard.editProject`),modal:``,style:{width:`420px`}},{footer:x(()=>[a(e(B),{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(B),{label:e(r)(`actions.save`),icon:`ti ti-check`,loading:m.value,disabled:!j.value.name.trim(),onClick:X},null,8,[`label`,`loading`,`disabled`])]),default:x(()=>[u(`div`,Ce,[u(`label`,we,S(e(r)(`common.name`)),1),a(e(P),{id:`dashboard-edit-name`,modelValue:j.value.name,"onUpdate:modelValue":n[8]||=e=>j.value.name=e,autofocus:``,onKeyup:O(X,[`enter`])},null,8,[`modelValue`])]),u(`div`,Te,[u(`label`,Ee,S(e(r)(`common.description`)),1),a(e(P),{id:`dashboard-edit-desc`,modelValue:j.value.description,"onUpdate:modelValue":n[9]||=e=>j.value.description=e,onKeyup:O(X,[`enter`])},null,8,[`modelValue`])])]),_:1},8,[`visible`,`header`]),A.value?.orgId?(v(),w(oe,{key:2,visible:N.value,"onUpdate:visible":n[12]||=e=>N.value=e,"project-id":A.value.id,"org-id":A.value.orgId,"project-name":A.value.name,"initial-path":F.value,onChosen:ue},null,8,[`visible`,`project-id`,`org-id`,`project-name`,`initial-path`])):D(``,!0)]))}}),[[`__scopeId`,`data-v-76822031`]]);function Oe(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 ke(e,t,n){if(e.length===0)return{nodes:[],width:n.padding*2,height:n.padding*2};let r=Oe(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 Ae=.2,Z=1.1,je=16;function Me(e){return Math.min(3,Math.max(Ae,e))}function Ne(e,t,n){let r=Me(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 Pe(e,t,n){return{...e,x:e.x+t,y:e.y+n}}function Fe(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(je,t.width/4,t.height/4),r=Me(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 Ie(){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=Ne(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=Pe(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=Fe(t,n)}let d=e=>({x:e.width/2,y:e.height/2});function f(t){e.value=Ne(e.value,Z*Z,d(t))}function p(t){e.value=Ne(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 Le={class:`panel service-graph`},Re=[`aria-expanded`],ze={class:`panel__title`},Be={class:`service-graph__hint`},Ve={key:0,class:`panel__empty`},He={key:1,class:`panel__empty`},Ue={key:2,class:`panel__empty`},We={key:0,class:`panel__empty`},Ge={class:`service-graph__controls`},Ke=[`title`,`aria-label`],qe=[`title`,`aria-label`],Je=[`title`,`aria-label`],Ye=[`viewBox`,`width`,`height`,`aria-label`],Xe=[`d`],Ze=[`aria-label`,`onMouseenter`,`onFocus`,`onClick`,`onKeydown`],Qe=[`x`,`y`],$e=[`x`,`y`],et=[`x`,`y`],tt={key:1,class:`service-graph__keys`},nt={key:2,class:`service-graph__warnings`},rt=210,it=84,at=24,Q=150,ot=44,st=`runeya.dashboard.serviceGraphCollapsed`,ct=V(_({__name:`ServiceGraphPanel`,props:{project:{}},setup(n){let r=n,{t:i}=H(),a=W(),s=t([]),l=t([]),p=t([]),h=t(!1),_=t(!1),x=t(null);function w(){try{return localStorage.getItem(st)!==`false`}catch{return!0}}let T=t(w());function E(){T.value=!T.value;try{localStorage.setItem(st,String(T.value))}catch{}}c(T,e=>{e||M()});function A(){s.value=[],l.value=[],p.value=[]}let j=0;async function M(){let e=r.project,t=++j;if(!e||T.value){A(),h.value=!1,_.value=!1;return}h.value=!0,_.value=!1;try{let n=await G.project.graph.query({id:e.id,orgId:e.orgId??null});if(t!==j)return;s.value=n.nodes,l.value=n.edges,p.value=n.dangling}catch{if(t!==j)return;_.value=!0,A()}finally{t===j&&(h.value=!1)}}c(()=>r.project?`${r.project.id}|${r.project.orgId??``}`:null,M,{immediate:!0});let N=g(()=>ke(s.value,l.value,{columnWidth:rt,rowHeight:it,padding:at})),P=g(()=>new Map(N.value.nodes.map(e=>[e.id,e]))),F=g(()=>l.value.flatMap(e=>{let t=P.value.get(e.from),n=P.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 I(e){return x.value!==null&&(e.from===x.value||e.to===x.value)}function L(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 ee=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 R(e){return s.value.find(t=>t.id===e)}let z=t(null),B=Ie(),{transform:V,isPanning:te}=B;function U(){return{width:z.value?.clientWidth??0,height:z.value?.clientHeight??0}}function K(){B.fit({width:N.value.width,height:N.value.height},U())}c(()=>`${N.value.width}x${N.value.height}`,()=>void C(K),{immediate:!0});function q(e){B.dragJustEnded()||a.push(`/services/${e}`)}return(t,n)=>(v(),d(`section`,Le,[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`,ze,S(e(i)(`dashboard.graphTitle`)),1),u(`span`,Be,S(e(i)(`dashboard.graphHint`)),1)],10,Re),T.value?D(``,!0):(v(),d(b,{key:0},[h.value?(v(),d(`p`,Ve,S(e(i)(`dashboard.graphLoading`)),1)):_.value?(v(),d(`p`,He,S(e(i)(`dashboard.graphFailed`)),1)):s.value.length===0?(v(),d(`p`,Ue,S(e(i)(`dashboard.graphNoServices`)),1)):(v(),d(b,{key:3},[l.value.length===0?(v(),d(`p`,We,S(e(i)(`dashboard.graphNoLinks`)),1)):D(``,!0),u(`div`,{ref_key:`frame`,ref:z,class:m([`service-graph__frame`,{"service-graph__frame--panning":e(te)}]),onWheel:n[7]||=(...t)=>e(B).onWheel&&e(B).onWheel(...t),onPointerdown:n[8]||=(...t)=>e(B).onPointerDown&&e(B).onPointerDown(...t),onDblclick:k(K,[`self`])},[u(`div`,Ge,[u(`button`,{type:`button`,class:`service-graph__control`,title:e(i)(`dashboard.graphZoomIn`),"aria-label":e(i)(`dashboard.graphZoomIn`),onClick:n[0]||=t=>e(B).zoomIn(U()),onPointerdown:n[1]||=k(()=>{},[`stop`])},[...n[9]||=[u(`i`,{class:`ti ti-plus`,"aria-hidden":`true`},null,-1)]],40,Ke),u(`button`,{type:`button`,class:`service-graph__control`,title:e(i)(`dashboard.graphZoomOut`),"aria-label":e(i)(`dashboard.graphZoomOut`),onClick:n[2]||=t=>e(B).zoomOut(U()),onPointerdown:n[3]||=k(()=>{},[`stop`])},[...n[10]||=[u(`i`,{class:`ti ti-minus`,"aria-hidden":`true`},null,-1)]],40,qe),u(`button`,{type:`button`,class:`service-graph__control`,title:e(i)(`dashboard.graphFit`),"aria-label":e(i)(`dashboard.graphFit`),onClick:K,onPointerdown:n[4]||=k(()=>{},[`stop`])},[...n[11]||=[u(`i`,{class:`ti ti-arrows-move`,"aria-hidden":`true`},null,-1)]],40,Je)]),(v(),d(`svg`,{class:`service-graph__svg`,viewBox:`0 0 ${N.value.width} ${N.value.height}`,width:N.value.width,height:N.value.height,style:y({transform:`translate(${e(V).x}px, ${e(V).y}px) scale(${e(V).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(F.value,e=>(v(),d(`path`,{key:e.id,d:e.path,class:m([`service-graph__edge`,{"service-graph__edge--active":I(e),"service-graph__edge--dimmed":x.value!==null&&!I(e)}]),"marker-end":`url(#service-graph-arrow)`},null,10,Xe))),128)),(v(!0),d(b,null,f(N.value.nodes,e=>(v(),d(`g`,{key:e.id,class:m([`service-graph__node`,{"service-graph__node--dimmed":L(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(k(t=>q(e.id),[`prevent`]),[`enter`]),O(k(t=>q(e.id),[`prevent`]),[`space`])]},[u(`rect`,{x:e.x-Q/2,y:e.y-ot/2,width:Q,height:ot,rx:`8`,class:m([`service-graph__box`,{"service-graph__box--ambiguous":e.ambiguousSlug}])},null,10,Qe),u(`text`,{x:e.x,y:e.y-3,class:`service-graph__name`},S(e.name),9,$e),u(`text`,{x:e.x,y:e.y+12,class:`service-graph__slug`},S(e.slug),9,et)],42,Ze))),128))],12,Ye))],34),ee.value.length>0?(v(),d(`p`,tt,[o(S(e(i)(`dashboard.graphVia`))+` `,1),(v(!0),d(b,null,f(ee.value,e=>(v(),d(`code`,{key:e},S(e),1))),128))])):D(``,!0),p.value.length>0?(v(),d(`ul`,nt,[(v(!0),d(b,null,f(p.value,t=>(v(),d(`li`,{key:`${t.from}-${t.slug}`},S(e(i)(`dashboard.graphDangling`,{service:R(t.from)?.name??t.from,slug:t.slug,keys:t.keys.join(`, `)})),1))),128))])):D(``,!0)],64))],64))]))}}),[[`__scopeId`,`data-v-06ba13f6`]]);function lt(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 ut={key:0,class:`service-row__agent service-row__agent--missing`},dt={key:1,class:`service-row__agent`},ft=[`aria-label`],pt={class:`service-row__name`},mt={key:2,class:`service-row__state`},ht={key:3,class:`service-row__agent-hint`},gt={key:4,class:`ti ti-alert-triangle service-row__health`},_t=V(_({__name:`ServiceStatusRow`,props:{service:{},processes:{},now:{},showAgent:{type:Boolean}},setup(t){let n=t,{t:r}=H(),s=W(),c=Y(),f=g(()=>ie(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(()=>re(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`,dt,[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`,ut,S(e(r)(`serviceHeader.noAgent`)),1)),l(u(`span`,{class:`service-row__dot`,role:`img`,"aria-label":e(r)(`status.${p.value}`)},null,8,ft),[[c,e(r)(`status.${p.value}`),void 0,{top:!0}]]),u(`span`,pt,S(t.service.name),1),p.value===`stopped`?D(``,!0):(v(),d(`span`,mt,[o(S(e(r)(`status.${p.value}`))+` `,1),x.value===null?D(``,!0):(v(),d(b,{key:0},[o(` · `+S(e(lt)(x.value)),1)],64))])),y.value&&!t.showAgent?(v(),d(`span`,ht,[s[1]||=u(`i`,{class:`ti ti-server`},null,-1),o(S(y.value),1)])):D(``,!0),C.value?l((v(),d(`i`,gt,null,512)),[[c,e(r)(`dashboard.unhealthy`),void 0,{top:!0}]]):D(``,!0)]),a(X,{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 vt(){let e=ae(),t=J(),n=g(()=>t.services.map(t=>{let n=e.getByService(t.id);return{service:t,processes:n,state:ie(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 yt={class:`panel`,"data-testid":`services-panel`},bt={class:`panel__header`},xt={class:`panel__title`},St={class:`panel__count`},Ct={key:0,class:`panel__empty`},wt={key:1,class:`panel__empty`},Tt={class:`service-group__count`},Et=V(_({__name:`ServicesPanel`,props:r({project:{},now:{}},{filter:{default:`all`},filterModifiers:{}}),emits:[`update:filter`],setup(n){let r=n,{t:i}=H(),c=W(),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}=vt(),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))}),k=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`&&k.value.length>1);function M(){c.push({name:`service-create`,...r.project?{query:{projectId:r.project.id}}:{}})}return(t,r)=>(v(),d(`section`,yt,[u(`div`,bt,[u(`h2`,xt,[o(S(e(i)(`dashboard.services`))+` `,1),u(`span`,St,S(e(C).length),1)]),a(e(F),{class:`panel__search`},{default:x(()=>[a(e(N),{class:`ti ti-search`}),a(e(P),{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(B),{icon:`ti ti-plus`,label:e(i)(`projectDetail.createNew`),size:`small`,variant:`text`,onClick:M},null,8,[`label`])]),a(e(L),{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`,Ct,S(e(i)(`dashboard.noServices`)),1)):O.value.length===0?(v(),d(`p`,wt,S(e(i)(`dashboard.noServicesForFilter`)),1)):(v(),w(A,{key:2,tag:`div`,name:`service-list`,class:`service-list`},{default:x(()=>[(v(!0),d(b,null,f(k.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`,Tt,S(e.entries.length),1)],2)):D(``,!0),(v(!0),d(b,null,f(e.entries,e=>(v(),w(_t,{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`]]),Dt={class:`stat-tile__value`},Ot={class:`stat-tile__label`},$=V(_({__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=W(),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`,Dt,[a(j,{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`,Ot,S(n.label),1)]),_:1},8,[`type`,`class`,`aria-pressed`]))}}),[[`__scopeId`,`data-v-502c82fd`]]),kt={class:`dashboard-page`},At=[`aria-label`],jt={class:`summary-strip__group`},Mt={class:`summary-strip__group summary-strip__group--end`},Nt={class:`dashboard-columns`},Pt={class:`dashboard-aside`},Ft={class:`panel`},It={class:`panel__header`},Lt={class:`panel__title`},Rt={key:0,class:`panel__empty`},zt={key:1,class:`agent-list`},Bt={class:`agent-item__name`},Vt={class:`agent-item__state`},Ht=V(_({__name:`DashboardPage`,setup(n){let{t:r}=H(),i=K(),o=Y(),s=ae(),c=J(),l=U(),_=t(Date.now()),y=null,x=t(null),C=g(()=>i.projects.find(e=>e.id===l.activeProjectId&&(e.orgId??null)===(l.activeOrgId??null))??null);p(async()=>{await Promise.all([i.fetchAll(),o.fetchAll(),s.fetchAll(),c.fetchAll()]),y=setInterval(()=>{_.value=Date.now()},1e3);try{let e=await G.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),x.value=t}catch{x.value=null}}),h(()=>{y&&clearInterval(y)});let{runningCount:T,erroredCount:E,stoppedCount:O}=vt(),k=t(`all`);function A(e){k.value=k.value===e?`all`:e}let j=g(()=>o.agents.filter(e=>!e.status.connected).length);return(t,n)=>(v(),d(`div`,kt,[u(`section`,{class:`summary-strip`,"aria-label":e(r)(`dashboard.healthBand`)},[u(`div`,jt,[a($,{icon:`ti-player-play`,tone:`success`,value:e(T),label:e(r)(`dashboard.servicesRunning`),selectable:``,active:k.value===`running`,onSelect:n[0]||=e=>A(`running`)},null,8,[`value`,`label`,`active`]),a($,{icon:`ti-alert-triangle`,tone:e(E)>0?`danger`:`neutral`,value:e(E),label:e(r)(`dashboard.servicesErrored`),selectable:``,active:k.value===`issues`,onSelect:n[1]||=e=>A(`issues`)},null,8,[`tone`,`value`,`label`,`active`]),a($,{icon:`ti-player-pause`,tone:`neutral`,value:e(O),label:e(r)(`dashboard.servicesStopped`),selectable:``,active:k.value===`stopped`,onSelect:n[2]||=e=>A(`stopped`)},null,8,[`value`,`label`,`active`])]),u(`div`,Mt,[a($,{icon:`ti-server`,tone:j.value>0?`warn`:`success`,value:`${e(o).connectedAgents.length}/${e(o).agents.length}`,label:e(r)(`dashboard.agentsConnected`),to:`/settings?section=agents`},null,8,[`tone`,`value`,`label`]),a($,{icon:`ti-book`,value:x.value??`—`,label:e(r)(`dashboard.globalWiki`),to:`/wiki`},null,8,[`value`,`label`])])],8,At),C.value?(v(),w(ct,{key:0,project:C.value},null,8,[`project`])):D(``,!0),u(`div`,Nt,[a(Et,{filter:k.value,"onUpdate:filter":n[3]||=e=>k.value=e,project:C.value,now:_.value},null,8,[`filter`,`project`,`now`]),u(`div`,Pt,[a(De),u(`section`,Ft,[u(`div`,It,[u(`h2`,Lt,S(e(r)(`dashboard.agentStatus`)),1)]),e(o).agents.length===0?(v(),d(`p`,Rt,S(e(r)(`dashboard.noAgents`)),1)):(v(),d(`ul`,zt,[(v(!0),d(b,null,f(e(o).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`,Bt,S(t.config.name),1),u(`span`,Vt,S(t.status.connected?e(r)(`dashboard.connected`):e(r)(`dashboard.disconnected`)),1)]))),128))]))])])])]))}}),[[`__scopeId`,`data-v-751324e8`]]);export{Ht as default};
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{F as O,I as k,m as A,p as j}from"./floating-ui.dom-DWhsZyqT.js";import{C as M,G as N,J as P,K as F,P as I,T as L,U as ee,V as R,Y as z,dt as B,ft as V,j as te,mt as H}from"./src--GO-VSJ0.js";import{n as U}from"./project-launch.store-C3fZeRGb.js";import{g as W}from"./useApi-s_02lHjl-DZYO2tHU.js";import{r as G}from"./trpc-DbsE5GvQ.js";import{n as K}from"./project.store-BEk4fciH.js";import{n as q}from"./error-DpF7X5iu.js";import{r as ne}from"./cloud-session-DRUqcSGP.js";import{t as J}from"./service.store-B5uYZtyM.js";import{t as Y}from"./agent.store-B3dVemmT.js";import{r as re,t as ie}from"./process-BWkHpZOM.js";import{c as ae}from"./index-D_x2s8Ut.js";import{t as X}from"./ProcessControls-C0skzKGL.js";import{t as oe}from"./DirectoryPickerDialog-B5DvDfQP.js";import{t as se}from"./ProjectCreateDialog-C4o9u15L.js";import{t as ce}from"./ProjectPublishDialog-Cp-zXdGm.js";var le={class:`card-title-row`},ue=[`title`],de={key:0,class:`card-description`},fe={class:`card-meta`},pe={class:`meta-item`},me={key:0,class:`meta-item meta-item--cloud`},he=V(_({__name:`ProjectCard`,props:{project:{},active:{type:Boolean}},emits:[`click`],setup(t,{emit:n}){let r=n,{t:i}=H(),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(R),{class:m([`project-card`,{"project-card--active":t.active}]),onClick:i[0]||=e=>r(`click`)},{title:x(()=>[u(`div`,le,[u(`span`,{class:`card-title`,title:t.project.name},S(t.project.name),9,ue),E(n.$slots,`actions`,{},void 0,!0)])]),content:x(()=>[t.project.description?(v(),d(`p`,de,S(s(t.project.description,120)),1)):D(``,!0),u(`div`,fe,[u(`span`,pe,[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`,me,[i[2]||=u(`i`,{class:`ti ti-cloud`},null,-1),o(S(a.value),1)])):D(``,!0)])]),_:3},8,[`class`]))}}),[[`__scopeId`,`data-v-95e62c18`]]),ge={class:`panel`},_e={class:`panel__header`},ve={class:`panel__title`},ye={key:0,class:`panel__empty`},be={key:1,class:`project-list`},xe=[`aria-label`,`onClick`],Se={key:0,class:`project-menu`},Ce={class:`dialog-field`},we={for:`dashboard-edit-name`},Te={class:`dialog-field`},Ee={for:`dashboard-edit-desc`},De=V(_({__name:`ProjectsPanel`,setup(n){let{t:r}=H(),i=I(),s=te(),c=K(),l=U(),{isLinked:p}=ne(),m=t(!1),h=t(null),_=t(null),y=t(!1),C=t(!1),T=t(null),E=t(!1),A=t(null),j=t({name:``,description:``}),N=t(!1),F=t(null),L=g(()=>c.projects.find(e=>e.id===l.activeProjectId&&(e.orgId??null)===(l.activeOrgId??null))??null);function R(e){return L.value?.id===e.id&&(L.value?.orgId??null)===(e.orgId??null)}function V(e){l.setActiveProject(e.id,e.orgId??null)}function W(e,t){h.value=t,_.value?.toggle(e)}function J(){_.value?.hide()}function Y(e){i.add({severity:`error`,summary:r(`common.error`),detail:q(e),life:5e3})}function re(e){i.add({severity:`success`,summary:r(`projectList.created`),detail:r(`projectList.createdDetail`,{name:e.name}),life:3e3})}function ie(e){J(),T.value=e,C.value=!0}function ae(e){A.value=e,j.value={name:e.name,description:e.description??``},E.value=!0,J()}async function X(){let e=A.value;if(e&&j.value.name.trim()){m.value=!0;try{if(!await c.update(e,{name:j.value.name.trim(),description:j.value.description.trim()})){Y(c.error);return}E.value=!1,i.add({severity:`success`,summary:r(`projectDetail.nameUpdated`),life:2e3})}finally{m.value=!1}}}async function le(e){if(J(),A.value=e,F.value=null,e.orgId)try{let{path:t}=await G.project.getLocalPath.query({id:e.id,orgId:e.orgId});F.value=t??null}catch{F.value=null}N.value=!0}function ue(e){F.value=e}function de(e){J(),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=R(e);if(!await c.remove(e)){Y(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`,ge,[u(`div`,_e,[u(`h2`,ve,S(e(r)(`dashboard.projects`)),1),a(e(ee),{value:String(e(c).projectCount),severity:`secondary`},null,8,[`value`]),a(e(B),{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`,ye,S(e(r)(`dashboard.noProjects`)),1)):(v(),d(`div`,be,[(v(!0),d(b,null,f(e(c).projects,t=>(v(),w(he,{key:`${t.orgId??`local`}:${t.id}`,project:t,active:R(t),"data-testid":`project-row-link`,onClick:e=>V(t)},{actions:x(()=>[u(`button`,{type:`button`,class:`project-menu-button`,"aria-label":e(r)(`common.actions`),onClick:k(e=>W(e,t),[`stop`])},[...n[13]||=[u(`i`,{class:`ti ti-dots-vertical`},null,-1)]],8,xe)]),_:2},1032,[`project`,`active`,`onClick`]))),128))])),a(e(M),{ref_key:`menu`,ref:_},{default:x(()=>[h.value?(v(),d(`div`,Se,[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=>le(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(se,{visible:y.value,"onUpdate:visible":n[5]||=e=>y.value=e,onCreated:re},null,8,[`visible`]),a(ce,{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(z),{visible:E.value,"onUpdate:visible":n[11]||=e=>E.value=e,header:e(r)(`dashboard.editProject`),modal:``,style:{width:`420px`}},{footer:x(()=>[a(e(B),{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(B),{label:e(r)(`actions.save`),icon:`ti ti-check`,loading:m.value,disabled:!j.value.name.trim(),onClick:X},null,8,[`label`,`loading`,`disabled`])]),default:x(()=>[u(`div`,Ce,[u(`label`,we,S(e(r)(`common.name`)),1),a(e(P),{id:`dashboard-edit-name`,modelValue:j.value.name,"onUpdate:modelValue":n[8]||=e=>j.value.name=e,autofocus:``,onKeyup:O(X,[`enter`])},null,8,[`modelValue`])]),u(`div`,Te,[u(`label`,Ee,S(e(r)(`common.description`)),1),a(e(P),{id:`dashboard-edit-desc`,modelValue:j.value.description,"onUpdate:modelValue":n[9]||=e=>j.value.description=e,onKeyup:O(X,[`enter`])},null,8,[`modelValue`])])]),_:1},8,[`visible`,`header`]),A.value?.orgId?(v(),w(oe,{key:2,visible:N.value,"onUpdate:visible":n[12]||=e=>N.value=e,"project-id":A.value.id,"org-id":A.value.orgId,"project-name":A.value.name,"initial-path":F.value,onChosen:ue},null,8,[`visible`,`project-id`,`org-id`,`project-name`,`initial-path`])):D(``,!0)]))}}),[[`__scopeId`,`data-v-76822031`]]);function Oe(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 ke(e,t,n){if(e.length===0)return{nodes:[],width:n.padding*2,height:n.padding*2};let r=Oe(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 Ae=.2,Z=1.1,je=16;function Me(e){return Math.min(3,Math.max(Ae,e))}function Ne(e,t,n){let r=Me(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 Pe(e,t,n){return{...e,x:e.x+t,y:e.y+n}}function Fe(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(je,t.width/4,t.height/4),r=Me(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 Ie(){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=Ne(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=Pe(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=Fe(t,n)}let d=e=>({x:e.width/2,y:e.height/2});function f(t){e.value=Ne(e.value,Z*Z,d(t))}function p(t){e.value=Ne(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 Le={class:`panel service-graph`},Re=[`aria-expanded`],ze={class:`panel__title`},Be={class:`service-graph__hint`},Ve={key:0,class:`panel__empty`},He={key:1,class:`panel__empty`},Ue={key:2,class:`panel__empty`},We={key:0,class:`panel__empty`},Ge={class:`service-graph__controls`},Ke=[`title`,`aria-label`],qe=[`title`,`aria-label`],Je=[`title`,`aria-label`],Ye=[`viewBox`,`width`,`height`,`aria-label`],Xe=[`d`],Ze=[`aria-label`,`onMouseenter`,`onFocus`,`onClick`,`onKeydown`],Qe=[`x`,`y`],$e=[`x`,`y`],et=[`x`,`y`],tt={key:1,class:`service-graph__keys`},nt={key:2,class:`service-graph__warnings`},rt=210,it=84,at=24,Q=150,ot=44,st=`runeya.dashboard.serviceGraphCollapsed`,ct=V(_({__name:`ServiceGraphPanel`,props:{project:{}},setup(n){let r=n,{t:i}=H(),a=W(),s=t([]),l=t([]),p=t([]),h=t(!1),_=t(!1),x=t(null);function w(){try{return localStorage.getItem(st)!==`false`}catch{return!0}}let T=t(w());function E(){T.value=!T.value;try{localStorage.setItem(st,String(T.value))}catch{}}c(T,e=>{e||M()});function A(){s.value=[],l.value=[],p.value=[]}let j=0;async function M(){let e=r.project,t=++j;if(!e||T.value){A(),h.value=!1,_.value=!1;return}h.value=!0,_.value=!1;try{let n=await G.project.graph.query({id:e.id,orgId:e.orgId??null});if(t!==j)return;s.value=n.nodes,l.value=n.edges,p.value=n.dangling}catch{if(t!==j)return;_.value=!0,A()}finally{t===j&&(h.value=!1)}}c(()=>r.project?`${r.project.id}|${r.project.orgId??``}`:null,M,{immediate:!0});let N=g(()=>ke(s.value,l.value,{columnWidth:rt,rowHeight:it,padding:at})),P=g(()=>new Map(N.value.nodes.map(e=>[e.id,e]))),F=g(()=>l.value.flatMap(e=>{let t=P.value.get(e.from),n=P.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 I(e){return x.value!==null&&(e.from===x.value||e.to===x.value)}function L(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 ee=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 R(e){return s.value.find(t=>t.id===e)}let z=t(null),B=Ie(),{transform:V,isPanning:te}=B;function U(){return{width:z.value?.clientWidth??0,height:z.value?.clientHeight??0}}function K(){B.fit({width:N.value.width,height:N.value.height},U())}c(()=>`${N.value.width}x${N.value.height}`,()=>void C(K),{immediate:!0});function q(e){B.dragJustEnded()||a.push(`/services/${e}`)}return(t,n)=>(v(),d(`section`,Le,[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`,ze,S(e(i)(`dashboard.graphTitle`)),1),u(`span`,Be,S(e(i)(`dashboard.graphHint`)),1)],10,Re),T.value?D(``,!0):(v(),d(b,{key:0},[h.value?(v(),d(`p`,Ve,S(e(i)(`dashboard.graphLoading`)),1)):_.value?(v(),d(`p`,He,S(e(i)(`dashboard.graphFailed`)),1)):s.value.length===0?(v(),d(`p`,Ue,S(e(i)(`dashboard.graphNoServices`)),1)):(v(),d(b,{key:3},[l.value.length===0?(v(),d(`p`,We,S(e(i)(`dashboard.graphNoLinks`)),1)):D(``,!0),u(`div`,{ref_key:`frame`,ref:z,class:m([`service-graph__frame`,{"service-graph__frame--panning":e(te)}]),onWheel:n[7]||=(...t)=>e(B).onWheel&&e(B).onWheel(...t),onPointerdown:n[8]||=(...t)=>e(B).onPointerDown&&e(B).onPointerDown(...t),onDblclick:k(K,[`self`])},[u(`div`,Ge,[u(`button`,{type:`button`,class:`service-graph__control`,title:e(i)(`dashboard.graphZoomIn`),"aria-label":e(i)(`dashboard.graphZoomIn`),onClick:n[0]||=t=>e(B).zoomIn(U()),onPointerdown:n[1]||=k(()=>{},[`stop`])},[...n[9]||=[u(`i`,{class:`ti ti-plus`,"aria-hidden":`true`},null,-1)]],40,Ke),u(`button`,{type:`button`,class:`service-graph__control`,title:e(i)(`dashboard.graphZoomOut`),"aria-label":e(i)(`dashboard.graphZoomOut`),onClick:n[2]||=t=>e(B).zoomOut(U()),onPointerdown:n[3]||=k(()=>{},[`stop`])},[...n[10]||=[u(`i`,{class:`ti ti-minus`,"aria-hidden":`true`},null,-1)]],40,qe),u(`button`,{type:`button`,class:`service-graph__control`,title:e(i)(`dashboard.graphFit`),"aria-label":e(i)(`dashboard.graphFit`),onClick:K,onPointerdown:n[4]||=k(()=>{},[`stop`])},[...n[11]||=[u(`i`,{class:`ti ti-arrows-move`,"aria-hidden":`true`},null,-1)]],40,Je)]),(v(),d(`svg`,{class:`service-graph__svg`,viewBox:`0 0 ${N.value.width} ${N.value.height}`,width:N.value.width,height:N.value.height,style:y({transform:`translate(${e(V).x}px, ${e(V).y}px) scale(${e(V).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(F.value,e=>(v(),d(`path`,{key:e.id,d:e.path,class:m([`service-graph__edge`,{"service-graph__edge--active":I(e),"service-graph__edge--dimmed":x.value!==null&&!I(e)}]),"marker-end":`url(#service-graph-arrow)`},null,10,Xe))),128)),(v(!0),d(b,null,f(N.value.nodes,e=>(v(),d(`g`,{key:e.id,class:m([`service-graph__node`,{"service-graph__node--dimmed":L(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(k(t=>q(e.id),[`prevent`]),[`enter`]),O(k(t=>q(e.id),[`prevent`]),[`space`])]},[u(`rect`,{x:e.x-Q/2,y:e.y-ot/2,width:Q,height:ot,rx:`8`,class:m([`service-graph__box`,{"service-graph__box--ambiguous":e.ambiguousSlug}])},null,10,Qe),u(`text`,{x:e.x,y:e.y-3,class:`service-graph__name`},S(e.name),9,$e),u(`text`,{x:e.x,y:e.y+12,class:`service-graph__slug`},S(e.slug),9,et)],42,Ze))),128))],12,Ye))],34),ee.value.length>0?(v(),d(`p`,tt,[o(S(e(i)(`dashboard.graphVia`))+` `,1),(v(!0),d(b,null,f(ee.value,e=>(v(),d(`code`,{key:e},S(e),1))),128))])):D(``,!0),p.value.length>0?(v(),d(`ul`,nt,[(v(!0),d(b,null,f(p.value,t=>(v(),d(`li`,{key:`${t.from}-${t.slug}`},S(e(i)(`dashboard.graphDangling`,{service:R(t.from)?.name??t.from,slug:t.slug,keys:t.keys.join(`, `)})),1))),128))])):D(``,!0)],64))],64))]))}}),[[`__scopeId`,`data-v-06ba13f6`]]);function lt(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 ut={key:0,class:`service-row__agent service-row__agent--missing`},dt={key:1,class:`service-row__agent`},ft=[`aria-label`],pt={class:`service-row__name`},mt={key:2,class:`service-row__state`},ht={key:3,class:`service-row__agent-hint`},gt={key:4,class:`ti ti-alert-triangle service-row__health`},_t=V(_({__name:`ServiceStatusRow`,props:{service:{},processes:{},now:{},showAgent:{type:Boolean}},setup(t){let n=t,{t:r}=H(),s=W(),c=Y(),f=g(()=>ie(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(()=>re(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`,dt,[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`,ut,S(e(r)(`serviceHeader.noAgent`)),1)),l(u(`span`,{class:`service-row__dot`,role:`img`,"aria-label":e(r)(`status.${p.value}`)},null,8,ft),[[c,e(r)(`status.${p.value}`),void 0,{top:!0}]]),u(`span`,pt,S(t.service.name),1),p.value===`stopped`?D(``,!0):(v(),d(`span`,mt,[o(S(e(r)(`status.${p.value}`))+` `,1),x.value===null?D(``,!0):(v(),d(b,{key:0},[o(` · `+S(e(lt)(x.value)),1)],64))])),y.value&&!t.showAgent?(v(),d(`span`,ht,[s[1]||=u(`i`,{class:`ti ti-server`},null,-1),o(S(y.value),1)])):D(``,!0),C.value?l((v(),d(`i`,gt,null,512)),[[c,e(r)(`dashboard.unhealthy`),void 0,{top:!0}]]):D(``,!0)]),a(X,{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 vt(){let e=ae(),t=J(),n=g(()=>t.services.map(t=>{let n=e.getByService(t.id);return{service:t,processes:n,state:ie(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 yt={class:`panel`,"data-testid":`services-panel`},bt={class:`panel__header`},xt={class:`panel__title`},St={class:`panel__count`},Ct={key:0,class:`panel__empty`},wt={key:1,class:`panel__empty`},Tt={class:`service-group__count`},Et=V(_({__name:`ServicesPanel`,props:r({project:{},now:{}},{filter:{default:`all`},filterModifiers:{}}),emits:[`update:filter`],setup(n){let r=n,{t:i}=H(),c=W(),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}=vt(),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))}),k=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`&&k.value.length>1);function M(){c.push({name:`service-create`,...r.project?{query:{projectId:r.project.id}}:{}})}return(t,r)=>(v(),d(`section`,yt,[u(`div`,bt,[u(`h2`,xt,[o(S(e(i)(`dashboard.services`))+` `,1),u(`span`,St,S(e(C).length),1)]),a(e(F),{class:`panel__search`},{default:x(()=>[a(e(N),{class:`ti ti-search`}),a(e(P),{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(B),{icon:`ti ti-plus`,label:e(i)(`projectDetail.createNew`),size:`small`,variant:`text`,onClick:M},null,8,[`label`])]),a(e(L),{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`,Ct,S(e(i)(`dashboard.noServices`)),1)):O.value.length===0?(v(),d(`p`,wt,S(e(i)(`dashboard.noServicesForFilter`)),1)):(v(),w(A,{key:2,tag:`div`,name:`service-list`,class:`service-list`},{default:x(()=>[(v(!0),d(b,null,f(k.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`,Tt,S(e.entries.length),1)],2)):D(``,!0),(v(!0),d(b,null,f(e.entries,e=>(v(),w(_t,{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`]]),Dt={class:`stat-tile__value`},Ot={class:`stat-tile__label`},$=V(_({__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=W(),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`,Dt,[a(j,{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`,Ot,S(n.label),1)]),_:1},8,[`type`,`class`,`aria-pressed`]))}}),[[`__scopeId`,`data-v-502c82fd`]]),kt={class:`dashboard-page`},At=[`aria-label`],jt={class:`summary-strip__group`},Mt={class:`summary-strip__group summary-strip__group--end`},Nt={class:`dashboard-columns`},Pt={class:`dashboard-aside`},Ft={class:`panel`},It={class:`panel__header`},Lt={class:`panel__title`},Rt={key:0,class:`panel__empty`},zt={key:1,class:`agent-list`},Bt={class:`agent-item__name`},Vt={class:`agent-item__state`},Ht=V(_({__name:`DashboardPage`,setup(n){let{t:r}=H(),i=K(),o=Y(),s=ae(),c=J(),l=U(),_=t(Date.now()),y=null,x=t(null),C=g(()=>i.projects.find(e=>e.id===l.activeProjectId&&(e.orgId??null)===(l.activeOrgId??null))??null);p(async()=>{await Promise.all([i.fetchAll(),o.fetchAll(),s.fetchAll(),c.fetchAll()]),y=setInterval(()=>{_.value=Date.now()},1e3);try{let e=await G.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),x.value=t}catch{x.value=null}}),h(()=>{y&&clearInterval(y)});let{runningCount:T,erroredCount:E,stoppedCount:O}=vt(),k=t(`all`);function A(e){k.value=k.value===e?`all`:e}let j=g(()=>o.agents.filter(e=>!e.status.connected).length);return(t,n)=>(v(),d(`div`,kt,[u(`section`,{class:`summary-strip`,"aria-label":e(r)(`dashboard.healthBand`)},[u(`div`,jt,[a($,{icon:`ti-player-play`,tone:`success`,value:e(T),label:e(r)(`dashboard.servicesRunning`),selectable:``,active:k.value===`running`,onSelect:n[0]||=e=>A(`running`)},null,8,[`value`,`label`,`active`]),a($,{icon:`ti-alert-triangle`,tone:e(E)>0?`danger`:`neutral`,value:e(E),label:e(r)(`dashboard.servicesErrored`),selectable:``,active:k.value===`issues`,onSelect:n[1]||=e=>A(`issues`)},null,8,[`tone`,`value`,`label`,`active`]),a($,{icon:`ti-player-pause`,tone:`neutral`,value:e(O),label:e(r)(`dashboard.servicesStopped`),selectable:``,active:k.value===`stopped`,onSelect:n[2]||=e=>A(`stopped`)},null,8,[`value`,`label`,`active`])]),u(`div`,Mt,[a($,{icon:`ti-server`,tone:j.value>0?`warn`:`success`,value:`${e(o).connectedAgents.length}/${e(o).agents.length}`,label:e(r)(`dashboard.agentsConnected`),to:`/settings?section=agents`},null,8,[`tone`,`value`,`label`]),a($,{icon:`ti-book`,value:x.value??`—`,label:e(r)(`dashboard.globalWiki`),to:`/wiki`},null,8,[`value`,`label`])])],8,At),C.value?(v(),w(ct,{key:0,project:C.value},null,8,[`project`])):D(``,!0),u(`div`,Nt,[a(Et,{filter:k.value,"onUpdate:filter":n[3]||=e=>k.value=e,project:C.value,now:_.value},null,8,[`filter`,`project`,`now`]),u(`div`,Pt,[a(De),u(`section`,Ft,[u(`div`,It,[u(`h2`,Lt,S(e(r)(`dashboard.agentStatus`)),1)]),e(o).agents.length===0?(v(),d(`p`,Rt,S(e(r)(`dashboard.noAgents`)),1)):(v(),d(`ul`,zt,[(v(!0),d(b,null,f(e(o).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`,Bt,S(t.config.name),1),u(`span`,Vt,S(t.status.connected?e(r)(`dashboard.connected`):e(r)(`dashboard.disconnected`)),1)]))),128))]))])])])]))}}),[[`__scopeId`,`data-v-751324e8`]]);export{Ht as default};
@@ -1 +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 l,g as u,k as d,mt as f,o as p,qt as m,rn as h,tt as ee,v as g,y as _}from"./runtime-core.esm-bundler-DujKY9QV.js";import{F as v,I as y}from"./floating-ui.dom-DWhsZyqT.js";import{G as te,J as ne,K as b,W as x,Y as re,dt as S,ft as C,mt as ie}from"./src-Ds4DOFJs.js";import{r as w}from"./trpc-B5Yw_z6v.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(d({__name:`DirectoryPickerDialog`,props:{visible:{type:Boolean},mode:{},projectId:{},orgId:{},projectName:{},required:{type:Boolean},initialPath:{}},emits:[`update:visible`,`chosen`,`local-chosen`],setup(d,{emit:C}){let O=d,k=C,A=u(()=>O.mode===`local`),{t:j}=ie(),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=u(()=>D(V.value)),W=u(()=>{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=u(()=>!!M.value&&z.value?.ok===!0&&!L.value),K=u(()=>{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=u(()=>K.value.at(-1)?.label??``),be=u(()=>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 ee(),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 $=u(()=>{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)=>(f(),g(e(re),{visible:d.visible,modal:``,closable:!d.required,"close-on-escape":!d.required,header:A.value?e(j)(`directoryPicker.localTitle`):e(j)(`directoryPicker.title`,{project:d.projectName??``}),style:{width:`46rem`,maxWidth:`95vw`},"data-testid":`directory-picker`,"onUpdate:visible":i[5]||=e=>k(`update:visible`,e),onShow:Y},{footer:m(()=>[d.required?_(``,!0):(f(),g(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:m(()=>[o(`p`,ae,h(A.value?e(j)(`directoryPicker.localLead`):e(j)(`directoryPicker.lead`)),1),o(`p`,oe,h(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`},[(f(!0),s(p,null,c(K.value,(e,t)=>(f(),s(p,{key:e.path},[t?(f(),s(`i`,le)):_(``,!0),t===K.value.length-1?(f(),s(`span`,ue,h(e.label),1)):(f(),s(`button`,{key:2,type:`button`,class:`picker-crumbs__link`,disabled:I.value,onClick:t=>Z(e.path)},h(e.label),9,de))],64))),128))],8,ce)]),n(e(b),{class:`picker-filter`},{default:m(()=>[n(e(te),{class:`ti ti-search`}),n(e(ne),{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(y(Ce,[`prevent`]),[`down`]),v(xe,[`enter`])],onPaste:Se},null,8,[`modelValue`,`placeholder`,`onKeydown`])]),_:1}),o(`p`,fe,[U.value?(f(),s(p,{key:0},[r(h(e(j)(`directoryPicker.pathHint`)),1)],64)):_(``,!0)]),o(`div`,{class:`picker-list`,"data-testid":`directory-picker-list`,onKeydown:[i[2]||=v(y(e=>X(e,1),[`prevent`]),[`down`]),i[3]||=v(y(e=>X(e,-1),[`prevent`]),[`up`])]},[I.value?(f(),s(`p`,pe,h(e(j)(`directoryPicker.loading`)),1)):P.value.length?W.value.length?_(``,!0):(f(),s(`p`,he,h(e(j)(`directoryPicker.noMatch`,{filter:V.value})),1)):(f(),s(`p`,me,h(e(j)(`directoryPicker.empty`)),1)),(f(!0),s(p,null,c(W.value,t=>(f(),s(`button`,{key:t.path,type:`button`,class:l([`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,h(t.name),1),t.hasRuneyaProject?(f(),s(`span`,ve,h(e(j)(`directoryPicker.badgeHasProject`)),1)):_(``,!0)],10,ge))),128)),F.value?(f(),s(`p`,ye,h(e(j)(`directoryPicker.truncated`)),1)):_(``,!0)],32),$.value?(f(),g(e(x),{key:0,severity:`warn`,"data-testid":`directory-picker-refusal`},{default:m(()=>[r(h($.value),1)]),_:1})):_(``,!0),R.value?(f(),g(e(x),{key:1,severity:`error`,"data-testid":`directory-picker-error`},{default:m(()=>[r(h(R.value),1)]),_:1})):_(``,!0)]),_:1},8,[`visible`,`closable`,`close-on-escape`,`header`]))}}),[[`__scopeId`,`data-v-483feee4`]]);export{O as t};
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 l,g as u,k as d,mt as f,o as p,qt as m,rn as h,tt as ee,v as g,y as _}from"./runtime-core.esm-bundler-DujKY9QV.js";import{F as v,I as y}from"./floating-ui.dom-DWhsZyqT.js";import{G as te,J as ne,K as b,W as x,Y as re,dt as S,ft as C,mt as ie}from"./src--GO-VSJ0.js";import{r as w}from"./trpc-DbsE5GvQ.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(d({__name:`DirectoryPickerDialog`,props:{visible:{type:Boolean},mode:{},projectId:{},orgId:{},projectName:{},required:{type:Boolean},initialPath:{}},emits:[`update:visible`,`chosen`,`local-chosen`],setup(d,{emit:C}){let O=d,k=C,A=u(()=>O.mode===`local`),{t:j}=ie(),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=u(()=>D(V.value)),W=u(()=>{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=u(()=>!!M.value&&z.value?.ok===!0&&!L.value),K=u(()=>{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=u(()=>K.value.at(-1)?.label??``),be=u(()=>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 ee(),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 $=u(()=>{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)=>(f(),g(e(re),{visible:d.visible,modal:``,closable:!d.required,"close-on-escape":!d.required,header:A.value?e(j)(`directoryPicker.localTitle`):e(j)(`directoryPicker.title`,{project:d.projectName??``}),style:{width:`46rem`,maxWidth:`95vw`},"data-testid":`directory-picker`,"onUpdate:visible":i[5]||=e=>k(`update:visible`,e),onShow:Y},{footer:m(()=>[d.required?_(``,!0):(f(),g(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:m(()=>[o(`p`,ae,h(A.value?e(j)(`directoryPicker.localLead`):e(j)(`directoryPicker.lead`)),1),o(`p`,oe,h(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`},[(f(!0),s(p,null,c(K.value,(e,t)=>(f(),s(p,{key:e.path},[t?(f(),s(`i`,le)):_(``,!0),t===K.value.length-1?(f(),s(`span`,ue,h(e.label),1)):(f(),s(`button`,{key:2,type:`button`,class:`picker-crumbs__link`,disabled:I.value,onClick:t=>Z(e.path)},h(e.label),9,de))],64))),128))],8,ce)]),n(e(b),{class:`picker-filter`},{default:m(()=>[n(e(te),{class:`ti ti-search`}),n(e(ne),{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(y(Ce,[`prevent`]),[`down`]),v(xe,[`enter`])],onPaste:Se},null,8,[`modelValue`,`placeholder`,`onKeydown`])]),_:1}),o(`p`,fe,[U.value?(f(),s(p,{key:0},[r(h(e(j)(`directoryPicker.pathHint`)),1)],64)):_(``,!0)]),o(`div`,{class:`picker-list`,"data-testid":`directory-picker-list`,onKeydown:[i[2]||=v(y(e=>X(e,1),[`prevent`]),[`down`]),i[3]||=v(y(e=>X(e,-1),[`prevent`]),[`up`])]},[I.value?(f(),s(`p`,pe,h(e(j)(`directoryPicker.loading`)),1)):P.value.length?W.value.length?_(``,!0):(f(),s(`p`,he,h(e(j)(`directoryPicker.noMatch`,{filter:V.value})),1)):(f(),s(`p`,me,h(e(j)(`directoryPicker.empty`)),1)),(f(!0),s(p,null,c(W.value,t=>(f(),s(`button`,{key:t.path,type:`button`,class:l([`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,h(t.name),1),t.hasRuneyaProject?(f(),s(`span`,ve,h(e(j)(`directoryPicker.badgeHasProject`)),1)):_(``,!0)],10,ge))),128)),F.value?(f(),s(`p`,ye,h(e(j)(`directoryPicker.truncated`)),1)):_(``,!0)],32),$.value?(f(),g(e(x),{key:0,severity:`warn`,"data-testid":`directory-picker-refusal`},{default:m(()=>[r(h($.value),1)]),_:1})):_(``,!0),R.value?(f(),g(e(x),{key:1,severity:`error`,"data-testid":`directory-picker-error`},{default:m(()=>[r(h(R.value),1)]),_:1})):_(``,!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-Ds4DOFJs.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--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>
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>
@@ -1 +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{I as h}from"./floating-ui.dom-DWhsZyqT.js";import{F as g,J as _,P as te,S as ne,U as re,_ as v,a as ie,b as ae,c as y,dt as b,ft as x,g as oe,h as se,k as ce,m as le,mt 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-Ds4DOFJs.js";import{r as ge}from"./project.store-ZpH_PaSy.js";import{t as _e}from"./agent.store-DTyu_McS.js";import{i as ve,n as ye,r as w,t as T}from"./useEnvVarAutocomplete-BdGgINv9.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=te(),{t:z}=ue(),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(ae),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(ce),{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(ne),{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(ie),{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(oe),{key:0,class:`inherited-accordion`},{default:d(()=>[n(e(se),{value:`inherited`},{default:d(()=>[n(e(le),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(re),{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-a6ed54b0`]]);export{L as t};
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{I as h}from"./floating-ui.dom-DWhsZyqT.js";import{F as g,J as _,P as te,S as ne,U as re,_ as v,a as ie,b as ae,c as y,dt as b,ft as x,g as oe,h as se,k as ce,m as le,mt 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--GO-VSJ0.js";import{r as ge}from"./project.store-BEk4fciH.js";import{t as _e}from"./agent.store-B3dVemmT.js";import{i as ve,n as ye,r as w,t as T}from"./useEnvVarAutocomplete-DmYNOXgd.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=te(),{t:z}=ue(),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(ae),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(ce),{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(ne),{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(ie),{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(oe),{key:0,class:`inherited-accordion`},{default:d(()=>[n(e(se),{value:`inherited`},{default:d(()=>[n(e(le),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(re),{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
+ .tab-icon[data-v-9667d993]{margin-right:.4rem;font-size:.85rem}.environment-form[data-v-9667d993] .r-tab{padding-top:var(--r-space-1)}.environment-form[data-v-9667d993] .r-tab-panels{padding:var(--r-space-4) 0 0}.tab-content[data-v-9667d993]{flex-direction:column;gap:1.25rem;display:flex}.form-group[data-v-9667d993]{flex-direction:column;gap:.5rem;margin-bottom:1.5rem;display:flex}.form-group[data-v-9667d993]:last-child{margin-bottom:0}.form-group label[data-v-9667d993]{color:var(--text-color);font-weight:500}.required[data-v-9667d993]{color:var(--red-500);font-weight:700}.form-actions[data-v-9667d993]{border-top:1px solid var(--surface-border);justify-content:flex-end;gap:1rem;margin-top:2rem;padding-top:2rem;display:flex}.form-row[data-v-9667d993]{gap:1.5rem;display:flex}.flex-1[data-v-9667d993]{flex:1}.color-field[data-v-9667d993]{align-items:center;gap:.75rem;display:flex}.color-input[data-v-9667d993]{flex:1;font-family:Monaco,Menlo,monospace;font-size:.85rem}.switch-row[data-v-9667d993]{justify-content:space-between;align-items:center;gap:1rem;display:flex}.empty-variables[data-v-9667d993]{color:var(--r-text-muted);justify-content:center;align-items:center;gap:.5rem;padding:2rem;display:flex}.empty-variables .ti[data-v-9667d993]{font-size:1rem}.inherited-accordion[data-v-9667d993]{margin-top:1rem}.inherited-header[data-v-9667d993]{color:var(--r-text-muted);align-items:center;gap:.5rem;font-size:.875rem;font-weight:600;display:inline-flex}.inherited-header .ti[data-v-9667d993]{font-size:.8rem}.inherited-row-key[data-v-9667d993]{flex-direction:column;gap:.2rem;display:flex}.preview-key[data-v-9667d993]{color:var(--r-text);font-family:JetBrains Mono,Fira Code,monospace;font-size:.85rem;font-weight:600}.preview-value[data-v-9667d993]{color:var(--r-text);word-break:break-all;font-family:JetBrains Mono,Fira Code,monospace;font-size:.85rem}.source-badge[data-v-9667d993]{opacity:.7;font-size:.7rem}.secret-mask[data-v-9667d993]{color:var(--r-text-muted,#6b7280);font-size:.85rem;font-style:italic}.value-row[data-v-9667d993]{align-items:center;display:inline-flex}.value-actions[data-v-9667d993]{flex-shrink:0;align-items:center;gap:.2rem;margin-right:.4rem;display:inline-flex}.action-icon[data-v-9667d993]{color:var(--r-text-muted,#9ca3af);cursor:pointer;padding:.15rem;font-size:.75rem;transition:color .15s}.action-icon[data-v-9667d993]:hover{color:var(--r-text)}.action-icon.ti-check[data-v-9667d993]{color:var(--r-green-500,#22c55e)}
@@ -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{H as u,P as d,ft as f,mt as p}from"./src--GO-VSJ0.js";import{g as m,h}from"./useApi-s_02lHjl-DZYO2tHU.js";import{r as g}from"./project.store-BEk4fciH.js";import{n as _}from"./error-DpF7X5iu.js";import{t as v}from"./EnvironmentForm-Bw8Djnqm.js";var y={class:`environment-form-page`},b={key:0,class:`loading`},x={key:1},S=f(o({__name:`EnvironmentFormPage`,setup(o){let{t:f}=p(),S=h(),C=m(),w=g(),T=d(),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:f(`environmentFormPage.updated`),detail:`"${e.name}" ${f(`environmentFormPage.updatedDesc`)}`,life:3e3})):(await w.create(e),T.add({severity:`success`,summary:f(`environmentFormPage.created`),detail:`"${e.name}" ${f(`environmentFormPage.createdDesc`)}`,life:3e3}),N())}catch(e){console.error(`Save failed:`,_(e)),T.add({severity:`error`,summary:f(`environmentFormPage.saveFailed`),detail:_(e)??f(`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(u))])):(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
+ .environment-form-page[data-v-4e790e9c]{max-width:900px;margin:0 auto}.loading[data-v-4e790e9c]{justify-content:center;align-items:center;padding:4rem 2rem;display:flex}
@@ -0,0 +1 @@
1
+ .loading[data-v-3c91161e]{justify-content:center;align-items:center;padding:4rem 2rem;display:flex}.environments-grid[data-v-3c91161e]{grid-template-columns:repeat(auto-fill,minmax(min(350px,100%),1fr));gap:1rem;display:grid}.environment-card[data-v-3c91161e]{min-width:0;transition:box-shadow var(--r-duration-base) ease;cursor:pointer;height:100%;position:relative}@media (hover:hover) and (pointer:fine){.environment-card[data-v-3c91161e]:hover{box-shadow:var(--r-shadow-md)}}.environment-card[data-v-3c91161e]:focus-visible{outline:var(--r-focus-ring-width) var(--r-focus-ring-style) var(--r-focus-ring-color);outline-offset:2px}.environment-card[data-v-3c91161e]:before{content:"";background:var(--env-color,transparent);pointer-events:none;width:4px;position:absolute;inset:0 auto 0 0}.environment-card.active[data-v-3c91161e]:after{content:"";border-radius:inherit;box-shadow:inset 0 0 0 2px var(--r-primary-text);pointer-events:none;position:absolute;inset:0}.environment-card.immutable[data-v-3c91161e]{opacity:.9}.title-row[data-v-3c91161e]{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem 1rem;width:100%;display:flex}.title-name[data-v-3c91161e]{align-items:center;gap:.5rem;min-width:0;display:flex}.title-name>span[data-v-3c91161e]:last-child{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.env-swatch[data-v-3c91161e]{border:1px solid var(--r-border);border-radius:4px;flex-shrink:0;width:14px;height:14px}.badges[data-v-3c91161e]{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:.5rem;display:flex}.badges[data-v-3c91161e] .r-tag{font-size:var(--r-text-xs);font-weight:var(--r-font-weight-semibold);padding:.0625rem .375rem}.star-default[data-v-3c91161e]{border-radius:var(--r-radius-sm);color:var(--r-yellow-400);opacity:.35;cursor:pointer;transition:transform var(--r-duration-fast) var(--r-ease-out), opacity var(--r-duration-base) ease;background:0 0;border:none;padding:.125rem;font-size:1rem;display:inline-flex}.star-default--on[data-v-3c91161e]{opacity:1;cursor:default}@media (hover:hover) and (pointer:fine){.star-default[data-v-3c91161e]:not(.star-default--on):hover{opacity:1}}.star-default[data-v-3c91161e]:not(.star-default--on):active{transform:scale(.9)}.star-default[data-v-3c91161e]:focus-visible{opacity:1;outline:var(--r-focus-ring-width) var(--r-focus-ring-style) var(--r-focus-ring-color)}.description[data-v-3c91161e]{overflow-wrap:anywhere;color:var(--r-text-muted);margin:.5rem 0;font-size:.9rem}.parents[data-v-3c91161e],.var-count[data-v-3c91161e]{color:var(--r-text-muted);margin:.25rem 0;font-size:.85rem}.actions[data-v-3c91161e]{justify-content:flex-end;gap:.25rem;display:flex}.environment-card[data-v-3c91161e] .r-card__body{flex-direction:column;gap:0;height:100%;padding:.75rem;display:flex}.environment-card[data-v-3c91161e] .r-card__title{margin-bottom:.5rem;padding:0}.environment-card[data-v-3c91161e] .r-card__content{flex:1;padding:0}.environment-card[data-v-3c91161e] .r-card__footer{margin-top:auto;padding:.5rem 0 0}
@@ -0,0 +1 @@
1
+ import{B as e,C as t}from"./reactivity.esm-bundler-BQ9SB2vv.js";import{Ct as ee,D as n,Yt as r,_ as i,b as a,bt as o,ct as s,en as c,g as l,k as te,mt as u,nn as d,o as f,qt as p,rn as m,u as h,v as g,y as _}from"./runtime-core.esm-bundler-DujKY9QV.js";import{F as ne,I as v}from"./floating-ui.dom-DWhsZyqT.js";import{H as re,P as y,U as b,V as ie,Y as x,dt as S,ft as C,j as ae,mt as oe}from"./src--GO-VSJ0.js";import{n as w}from"./project-launch.store-C3fZeRGb.js";import{g as T,h as E}from"./useApi-s_02lHjl-DZYO2tHU.js";import{n as D,r as O}from"./project.store-BEk4fciH.js";import{n as k}from"./error-DpF7X5iu.js";import{n as A}from"./page-actions-CSvO7j9F.js";import{t as j}from"./EnvironmentForm-Bw8Djnqm.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=C(te({__name:`EnvironmentListPage`,setup(te){let{t:C}=oe(),H=E(),U=T(),W=O(),G=D(),K=w(),ce=ae(),q=y(),J=l(()=>H.params.projectId),Y=t(!1),X=l(()=>G.getByRef({id:J.value,orgId:K.activeOrgId})??G.getById(J.value)),Z=l(()=>X.value?.activeEnvironmentId),le=l(()=>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}`}s(async()=>{await W.fetchAll(J.value)});async function de(e){try{await W.create(e),Y.value=!1,q.add({severity:`success`,summary:C(`environmentList.created`),detail:C(`environmentList.createdDesc`),life:3e3})}catch(e){q.add({severity:`error`,summary:C(`environmentList.createError`),detail:k(e)??C(`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:C(`environmentList.defaultSet`),detail:C(`environmentList.defaultSetDesc`),life:3e3})}catch(e){q.add({severity:`error`,summary:C(`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:C(`environmentList.activated`),life:3e3})}catch(e){q.add({severity:`error`,summary:C(`environmentList.failedToActivate`),detail:k(e),life:5e3})}}function me(e,t){ce.require({message:C(`environmentList.deleteConfirmMsg`,{name:t}),header:C(`environmentList.deleteTitle`),icon:`ti ti-alert-triangle`,accept:async()=>{try{await W.deleteEnv(e),q.add({severity:`success`,summary:C(`environmentList.deleted`),detail:C(`environmentList.deletedDesc`),life:3e3})}catch(e){q.add({severity:`error`,summary:C(`environmentList.failedToDelete`),detail:k(e),life:5e3})}}})}return(t,s)=>{let l=ee(`tooltip`);return u(),a(`div`,M,[(u(),g(h,{to:e(A),defer:``},[n(e(S),{icon:`ti ti-plus`,title:e(C)(`environmentList.createButton`),"aria-label":e(C)(`environmentList.createButton`),onClick:s[0]||=e=>Y.value=!0},null,8,[`title`,`aria-label`])],8,[`to`])),e(W).loading?(u(),a(`div`,N,[n(e(re))])):(u(),a(`div`,P,[(u(!0),a(f,null,o(le.value,t=>(u(),g(e(ie),{key:t.id,class:c([`environment-card`,{active:t.id===Z.value,immutable:t.immutable}]),style:d(t.bgColor||t.color?{"--env-color":Q(t.bgColor)||Q(t.color)}:{}),tabindex:`0`,onClick:e=>$(t.id),onKeydown:ne(v(e=>$(t.id),[`self`]),[`enter`])},{title:p(()=>[i(`div`,F,[i(`div`,I,[t.color||t.bgColor?(u(),a(`span`,{key:0,class:`env-swatch`,style:d({backgroundColor:Q(t.bgColor)||Q(t.color),color:Q(t.color)})},null,4)):_(``,!0),i(`span`,null,m(t.name),1)]),i(`div`,L,[t.immutable?(u(),g(e(b),{key:0,severity:`warn`,value:e(C)(`environmentList.immutableBadge`)},null,8,[`value`])):_(``,!0),t.id===Z.value?(u(),g(e(b),{key:1,severity:`success`,value:e(C)(`environmentList.activeBadge`)},null,8,[`value`])):_(``,!0),i(`button`,{type:`button`,class:c([`star-default`,{"star-default--on":t.default}]),title:t.default?e(C)(`environmentList.defaultEnv`):e(C)(`environmentList.setAsDefault`),"aria-label":t.default?e(C)(`environmentList.defaultEnv`):e(C)(`environmentList.setAsDefault`),"aria-pressed":!!t.default,onClick:v(e=>!t.default&&fe(t.id),[`stop`])},[i(`i`,{class:c([`ti`,t.default?`ti-star-filled`:`ti-star`]),"aria-hidden":`true`},null,2)],10,R)])])]),content:p(()=>[t.description?(u(),a(`p`,z,m(t.description),1)):_(``,!0),t.parentIds.length>0?(u(),a(`p`,se,m(e(C)(`environmentList.parents`,{names:ue(t.parentIds).join(`, `)})),1)):_(``,!0),i(`p`,B,m(e(C)(`environmentList.variableCount`,Object.keys(t.variables??{}).length)),1)]),footer:p(()=>[i(`div`,V,[t.id!==Z.value&&!t.immutable?r((u(),g(e(S),{key:0,onClick:v(e=>pe(t.id),[`stop`]),variant:`text`,rounded:``,icon:`ti ti-check`},null,8,[`onClick`])),[[l,e(C)(`environmentList.activateButton`),void 0,{top:!0}]]):_(``,!0),r(n(e(S),{onClick:v(e=>$(t.id),[`stop`]),variant:`text`,rounded:``,icon:`ti ti-pencil`},null,8,[`onClick`]),[[l,e(C)(`environmentList.editButton`),void 0,{top:!0}]]),!t.immutable&&t.id!==Z.value?r((u(),g(e(S),{key:1,onClick:v(e=>me(t.id,t.name),[`stop`]),variant:`text`,rounded:``,icon:`ti ti-trash`,severity:`danger`,"data-testid":`env-delete-btn`},null,8,[`onClick`])),[[l,e(C)(`environmentList.deleteButton`),void 0,{top:!0}]]):_(``,!0)])]),_:2},1032,[`class`,`style`,`onClick`,`onKeydown`]))),128))])),n(e(x),{visible:Y.value,"onUpdate:visible":s[2]||=e=>Y.value=e,header:e(C)(`environments.createEnvironment`),style:{width:`600px`},modal:!1},{default:p(()=>[n(j,{"project-id":J.value,onSave:de,onCancel:s[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-Ds4DOFJs.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--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,4 +1,4 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/trpc-B5Yw_z6v.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-D_pCPFq7.js","assets/settings-scope-CUuHrUpc.js","assets/project.store-ZpH_PaSy.js","assets/project-launch.store-C7xfTlMc.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{F as oe,I as h}from"./floating-ui.dom-DWhsZyqT.js";import{C as se,J as ce,S as le,Y as g,dt as _,ft as v,j as ue,mt as de,q as fe}from"./src-Ds4DOFJs.js";import{a as pe,i as y,n as b}from"./project-launch.store-C7xfTlMc.js";import{g as me,h as he}from"./useApi-s_02lHjl-DZYO2tHU.js";import{n as ge}from"./scenario.store-F78cizck.js";import{r as x}from"./trpc-B5Yw_z6v.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-CX0pW7Kt.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-B6svb69W.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-QzX8ryg1.js";import{i as Fe,r as Ie,t as Le}from"./src-C0KK-qsF.js";import{t as Re}from"./SendToChatDialog-DGuOMMrS.js";var ze=y(`kanban-queue`,()=>{let e=b();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=v(re({__name:`KanbanBoardPage`,props:{id:{}},setup(re){let v=re,{t:y}=de(),b=me(),x=he(),{orgId:C,orgSlug:w,cloudUser:kt,members:At,available:jt}=Pe(),Mt=ue();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?y(`kanban.board.${e}`,t):y(`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,()=>v.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:v.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:v.id,cardId:t}});return}if($t){$t=!1,b.back();return}b.replace({name:Zt.value,params:{id:v.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}=pe(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||y(`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(`📍 ${y(`kanban.board.editor.columnLabel`,{column:n})}`),r&&a.push(r),a.push(`🔗 [${y(`kanban.board.editor.openCardLink`)}](${i})`),pn.value?.open(a.join(`
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/trpc-DbsE5GvQ.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-BCrvnP1U.js","assets/settings-scope-Blnwj3rR.js","assets/project.store-BEk4fciH.js","assets/project-launch.store-C3fZeRGb.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{F as oe,I as h}from"./floating-ui.dom-DWhsZyqT.js";import{C as se,J as ce,S as le,Y as g,dt as _,ft as v,j as ue,mt as de,q as fe}from"./src--GO-VSJ0.js";import{a as pe,i as y,n as b}from"./project-launch.store-C3fZeRGb.js";import{g as me,h as he}from"./useApi-s_02lHjl-DZYO2tHU.js";import{n as ge}from"./scenario.store-D-JrRiVO.js";import{r as x}from"./trpc-DbsE5GvQ.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-DQlUaoAw.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-D1928AxG.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-DygUBG1a.js";import{i as Fe,r as Ie,t as Le}from"./src-DValZNJU.js";import{t as Re}from"./SendToChatDialog-Dg2SHkVD.js";var ze=y(`kanban-queue`,()=>{let e=b();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=v(re({__name:`KanbanBoardPage`,props:{id:{}},setup(re){let v=re,{t:y}=de(),b=me(),x=he(),{orgId:C,orgSlug:w,cloudUser:kt,members:At,available:jt}=Pe(),Mt=ue();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?y(`kanban.board.${e}`,t):y(`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,()=>v.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:v.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:v.id,cardId:t}});return}if($t){$t=!1,b.back();return}b.replace({name:Zt.value,params:{id:v.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}=pe(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||y(`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(`📍 ${y(`kanban.board.editor.columnLabel`,{column:n})}`),r&&a.push(r),a.push(`🔗 [${y(`kanban.board.editor.openCardLink`)}](${i})`),pn.value?.open(a.join(`
3
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()});r&&await yn(r.id,`conversation_started`),D.value?.closeCardEditor(),n?I.openWithKanbanContext(n):I.open()}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),await yn(a.id,`scenario_started`,`Scenario run — ${a.id}`)}D.value?.closeCardEditor(),I.open()}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-B5Yw_z6v.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-CUuHrUpc.js`).then(e=>e.n);return{settingsScope:e}},__vite__mapDeps([6,1,7,2,3,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:v.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:y(t?`kanban.board.archiveBoard.confirm`:`kanban.board.archiveBoard.restoreConfirm`,{name:e.name}),header:y(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:y(`kanban.list.dialogs.confirmDeleteMessage`,{name:e.name}),header:y(`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?y(`kanban.list.${e}`,t):y(`kanban.list.${e}`),Qn=t(null),$n=(e,t)=>t?y(`kanban.${e}`,t):y(`kanban.${e}`);function er(e){Qn.value=null,b.push({name:Qt.value,params:{id:v.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(_),{key:0,label:e(y)(`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(_),{key:1,icon:`ti ti-chart-line`,variant:`text`,rounded:``,size:`small`,"aria-label":e(y)(`kanban.list.flow.open`),onClick:i[1]||=e=>Xn.value=O.value},null,8,[`aria-label`])),[[c,e(y)(`kanban.list.flow.open`),void 0,{bottom:!0}]]):m(``,!0),O.value?a((u(),p(e(_),{key:2,icon:`ti ti-history`,variant:`text`,rounded:``,size:`small`,"aria-label":e(y)(`kanban.list.history.open`),onClick:i[2]||=e=>Qn.value=O.value},null,8,[`aria-label`])),[[c,e(y)(`kanban.list.history.open`),void 0,{bottom:!0}]]):m(``,!0),e(T).canWrite.value?(u(),p(e(_),{key:3,icon:`ti ti-dots-vertical`,severity:`secondary`,variant:`outlined`,size:`small`,title:e(y)(`kanban.board.actions.menu`),"aria-label":e(y)(`kanban.board.actions.menu`),onClick:i[3]||=e=>Yn.value?.toggle(e)},null,8,[`title`,`aria-label`])):m(``,!0),r(e(se),{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(y)(`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(y)(`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(y)(`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(y)(`kanban.list.restore`):e(y)(`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(y)(`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(y)(`kanban.cloud.readOnlyNotice`)),1),o(`span`,He,f(e(y)(`kanban.cloud.upgradeCta`)),1)])):m(``,!0)]),"column-actions":d(({column:t})=>[M.value?m(``,!0):a((u(),p(e(_),{key:0,icon:`ti ti-list`,variant:`text`,rounded:``,size:`small`,onClick:h(e=>An(t),[`stop`])},null,8,[`onClick`])),[[c,e(y)(`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(y)(`kanban.board.queue.tooltipInQueue`):e(y)(`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(y)(`kanban.board.aiStatus.companion`),void 0,{bottom:!0}]]):_n(t)===`streaming`?a((u(),s(`span`,Ge,null,512)),[[c,e(y)(`kanban.board.aiStatus.streaming`),void 0,{bottom:!0}]]):_n(t)===`unread`?a((u(),s(`span`,Ke,null,512)),[[c,e(y)(`kanban.board.aiStatus.unread`),void 0,{bottom:!0}]]):m(``,!0)]),"card-editor-actions":d(({card:t,colId:n,draft:i})=>[r(e(_),{label:e(y)(`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(_),{label:e(y)(`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(g),{visible:L.value,header:e(y)(`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(g),{visible:Y.value,header:e(y)(`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(_),{label:e(y)(`actions.cancel`),variant:`text`,onClick:i[16]||=e=>Y.value=!1},null,8,[`label`]),r(e(_),{label:e(y)(`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(y)(`kanban.list.nameLabel`)),1),r(e(ce),{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(y)(`kanban.list.descriptionLabel`)),1),r(e(fe),{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(y)(`kanban.list.instructionsLabel`)),1),r(e(fe),{id:`kb-board-instructions`,modelValue:X.value.instructions,"onUpdate:modelValue":i[15]||=e=>X.value.instructions=e,rows:`6`,class:`w-full`,placeholder:e(y)(`kanban.list.instructionsPlaceholder`)},null,8,[`modelValue`,`placeholder`]),o(`small`,et,f(e(y)(`kanban.list.instructionsHint`)),1)])])]),_:1},8,[`visible`,`header`]),r(e(g),{visible:Z.value,header:e(y)(`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(_),{label:e(y)(`actions.cancel`),variant:`text`,onClick:i[19]||=e=>Z.value=!1},null,8,[`label`]),r(e(_),{label:e(y)(`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(y)(`kanban.board.saveTemplate.hint`,{count:O.value?.columns.length??0})),1),r(e(ce),{modelValue:Q.value,"onUpdate:modelValue":i[18]||=e=>Q.value=e,class:`w-full`,autofocus:``,placeholder:e(y)(`kanban.board.saveTemplate.namePlaceholder`),onKeyup:oe(Jn,[`enter`])},null,8,[`modelValue`,`placeholder`])])]),_:1},8,[`visible`,`header`]),r(e(g),{visible:K.value,header:e(y)(`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(_),{label:e(y)(`actions.cancel`),variant:`text`,onClick:i[22]||=e=>K.value=!1},null,8,[`label`]),r(e(_),{label:e(y)(`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(y)(`kanban.board.populateDialog.hint`)),1),r(e(fe),{modelValue:J.value,"onUpdate:modelValue":i[21]||=e=>J.value=e,placeholder:e(y)(`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(g),{visible:q.value,header:e(y)(`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(y)(`kanban.board.queue.panelHeader`)),1),r(e(_),{icon:`ti ti-x`,variant:`text`,rounded:``,size:`small`,onClick:i[25]||=e=>V.value=!1})]),o(`div`,dt,[o(`span`,ft,f(e(y)(`kanban.board.queue.concurrency`)),1),o(`div`,pt,[r(e(_),{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(_),{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(y)(`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(_),{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(y)(`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(_),{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(y)(`kanban.board.queue.empty`)),1)):m(``,!0),o(`div`,xt,[r(e(_),{label:e(y)(`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(g),{visible:H.value,header:e(y)(`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(_),{label:e(y)(`actions.cancel`),variant:`text`,onClick:i[31]||=e=>H.value=!1},null,8,[`label`]),r(e(_),{label:e(y)(`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(y)(`kanban.board.queue.addColumnDialog.runner`)),1),r(e(le),{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(y)(`kanban.board.queue.addColumnDialog.scenario`)),1),r(e(le),{modelValue:W.value,"onUpdate:modelValue":i[30]||=e=>W.value=e,"input-id":`kanban-queue-scenario`,options:[{id:``,name:e(y)(`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-df304229`]]);export{C as default};
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()});r&&await yn(r.id,`conversation_started`),D.value?.closeCardEditor(),n?I.openWithKanbanContext(n):I.open()}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),await yn(a.id,`scenario_started`,`Scenario run — ${a.id}`)}D.value?.closeCardEditor(),I.open()}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-DbsE5GvQ.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-Blnwj3rR.js`).then(e=>e.n);return{settingsScope:e}},__vite__mapDeps([6,1,7,2,3,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:v.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:y(t?`kanban.board.archiveBoard.confirm`:`kanban.board.archiveBoard.restoreConfirm`,{name:e.name}),header:y(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:y(`kanban.list.dialogs.confirmDeleteMessage`,{name:e.name}),header:y(`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?y(`kanban.list.${e}`,t):y(`kanban.list.${e}`),Qn=t(null),$n=(e,t)=>t?y(`kanban.${e}`,t):y(`kanban.${e}`);function er(e){Qn.value=null,b.push({name:Qt.value,params:{id:v.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(_),{key:0,label:e(y)(`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(_),{key:1,icon:`ti ti-chart-line`,variant:`text`,rounded:``,size:`small`,"aria-label":e(y)(`kanban.list.flow.open`),onClick:i[1]||=e=>Xn.value=O.value},null,8,[`aria-label`])),[[c,e(y)(`kanban.list.flow.open`),void 0,{bottom:!0}]]):m(``,!0),O.value?a((u(),p(e(_),{key:2,icon:`ti ti-history`,variant:`text`,rounded:``,size:`small`,"aria-label":e(y)(`kanban.list.history.open`),onClick:i[2]||=e=>Qn.value=O.value},null,8,[`aria-label`])),[[c,e(y)(`kanban.list.history.open`),void 0,{bottom:!0}]]):m(``,!0),e(T).canWrite.value?(u(),p(e(_),{key:3,icon:`ti ti-dots-vertical`,severity:`secondary`,variant:`outlined`,size:`small`,title:e(y)(`kanban.board.actions.menu`),"aria-label":e(y)(`kanban.board.actions.menu`),onClick:i[3]||=e=>Yn.value?.toggle(e)},null,8,[`title`,`aria-label`])):m(``,!0),r(e(se),{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(y)(`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(y)(`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(y)(`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(y)(`kanban.list.restore`):e(y)(`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(y)(`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(y)(`kanban.cloud.readOnlyNotice`)),1),o(`span`,He,f(e(y)(`kanban.cloud.upgradeCta`)),1)])):m(``,!0)]),"column-actions":d(({column:t})=>[M.value?m(``,!0):a((u(),p(e(_),{key:0,icon:`ti ti-list`,variant:`text`,rounded:``,size:`small`,onClick:h(e=>An(t),[`stop`])},null,8,[`onClick`])),[[c,e(y)(`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(y)(`kanban.board.queue.tooltipInQueue`):e(y)(`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(y)(`kanban.board.aiStatus.companion`),void 0,{bottom:!0}]]):_n(t)===`streaming`?a((u(),s(`span`,Ge,null,512)),[[c,e(y)(`kanban.board.aiStatus.streaming`),void 0,{bottom:!0}]]):_n(t)===`unread`?a((u(),s(`span`,Ke,null,512)),[[c,e(y)(`kanban.board.aiStatus.unread`),void 0,{bottom:!0}]]):m(``,!0)]),"card-editor-actions":d(({card:t,colId:n,draft:i})=>[r(e(_),{label:e(y)(`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(_),{label:e(y)(`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(g),{visible:L.value,header:e(y)(`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(g),{visible:Y.value,header:e(y)(`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(_),{label:e(y)(`actions.cancel`),variant:`text`,onClick:i[16]||=e=>Y.value=!1},null,8,[`label`]),r(e(_),{label:e(y)(`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(y)(`kanban.list.nameLabel`)),1),r(e(ce),{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(y)(`kanban.list.descriptionLabel`)),1),r(e(fe),{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(y)(`kanban.list.instructionsLabel`)),1),r(e(fe),{id:`kb-board-instructions`,modelValue:X.value.instructions,"onUpdate:modelValue":i[15]||=e=>X.value.instructions=e,rows:`6`,class:`w-full`,placeholder:e(y)(`kanban.list.instructionsPlaceholder`)},null,8,[`modelValue`,`placeholder`]),o(`small`,et,f(e(y)(`kanban.list.instructionsHint`)),1)])])]),_:1},8,[`visible`,`header`]),r(e(g),{visible:Z.value,header:e(y)(`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(_),{label:e(y)(`actions.cancel`),variant:`text`,onClick:i[19]||=e=>Z.value=!1},null,8,[`label`]),r(e(_),{label:e(y)(`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(y)(`kanban.board.saveTemplate.hint`,{count:O.value?.columns.length??0})),1),r(e(ce),{modelValue:Q.value,"onUpdate:modelValue":i[18]||=e=>Q.value=e,class:`w-full`,autofocus:``,placeholder:e(y)(`kanban.board.saveTemplate.namePlaceholder`),onKeyup:oe(Jn,[`enter`])},null,8,[`modelValue`,`placeholder`])])]),_:1},8,[`visible`,`header`]),r(e(g),{visible:K.value,header:e(y)(`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(_),{label:e(y)(`actions.cancel`),variant:`text`,onClick:i[22]||=e=>K.value=!1},null,8,[`label`]),r(e(_),{label:e(y)(`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(y)(`kanban.board.populateDialog.hint`)),1),r(e(fe),{modelValue:J.value,"onUpdate:modelValue":i[21]||=e=>J.value=e,placeholder:e(y)(`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(g),{visible:q.value,header:e(y)(`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(y)(`kanban.board.queue.panelHeader`)),1),r(e(_),{icon:`ti ti-x`,variant:`text`,rounded:``,size:`small`,onClick:i[25]||=e=>V.value=!1})]),o(`div`,dt,[o(`span`,ft,f(e(y)(`kanban.board.queue.concurrency`)),1),o(`div`,pt,[r(e(_),{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(_),{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(y)(`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(_),{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(y)(`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(_),{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(y)(`kanban.board.queue.empty`)),1)):m(``,!0),o(`div`,xt,[r(e(_),{label:e(y)(`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(g),{visible:H.value,header:e(y)(`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(_),{label:e(y)(`actions.cancel`),variant:`text`,onClick:i[31]||=e=>H.value=!1},null,8,[`label`]),r(e(_),{label:e(y)(`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(y)(`kanban.board.queue.addColumnDialog.runner`)),1),r(e(le),{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(y)(`kanban.board.queue.addColumnDialog.scenario`)),1),r(e(le),{modelValue:W.value,"onUpdate:modelValue":i[30]||=e=>W.value=e,"input-id":`kanban-queue-scenario`,options:[{id:``,name:e(y)(`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-df304229`]]);export{C as default};
@@ -1 +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 ee,rn as c,v as l,y as u}from"./runtime-core.esm-bundler-DujKY9QV.js";import{I as d}from"./floating-ui.dom-DWhsZyqT.js";import{dt as f,ft as p,mt as m}from"./src-Ds4DOFJs.js";import{g as h}from"./useApi-s_02lHjl-DZYO2tHU.js";import{n as g}from"./project.store-ZpH_PaSy.js";import{r as _,t as v}from"./cloud-auth-D_am4FlK.js";import{n as y,r as b}from"./cloud-client-CX0pW7Kt.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-QzX8ryg1.js";import{n as D}from"./src-C0KK-qsF.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=p(o({__name:`KanbanListPage`,props:{mode:{default:`board`}},setup(o){let{t:p,te:P}=m(),F=o,I=a(()=>F.mode===`list`?`/issues`:`/kanban`),L=h(),{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?p(r,t):p(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(),l(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:ee(()=>[e(U).planLocked.value?(s(),i(`a`,{key:0,class:`upgrade-banner`,href:`#`,onClick:d(Y,[`prevent`])},[r(`span`,null,c(e(p)(`kanban.cloud.readOnlyNotice`)),1),r(`span`,N,c(e(p)(`kanban.cloud.upgradeCta`)),1)])):u(``,!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,c(e(B)===`not-member`?e(p)(`kanban.cloud.orgNotAccessible`):e(p)(`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,c(e(p)(`kanban.cloud.notConnectedTitle`)),1),r(`p`,j,c(e(p)(`kanban.cloud.notConnectedDesc`)),1),t(e(f),{label:e(p)(`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};
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 ee,rn as c,v as l,y as u}from"./runtime-core.esm-bundler-DujKY9QV.js";import{I as d}from"./floating-ui.dom-DWhsZyqT.js";import{dt as f,ft as p,mt as m}from"./src--GO-VSJ0.js";import{g as h}from"./useApi-s_02lHjl-DZYO2tHU.js";import{n as g}from"./project.store-BEk4fciH.js";import{r as _,t as v}from"./cloud-auth-D_am4FlK.js";import{n as y,r as b}from"./cloud-client-DQlUaoAw.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-DygUBG1a.js";import{n as D}from"./src-DValZNJU.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=p(o({__name:`KanbanListPage`,props:{mode:{default:`board`}},setup(o){let{t:p,te:P}=m(),F=o,I=a(()=>F.mode===`list`?`/issues`:`/kanban`),L=h(),{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?p(r,t):p(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(),l(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:ee(()=>[e(U).planLocked.value?(s(),i(`a`,{key:0,class:`upgrade-banner`,href:`#`,onClick:d(Y,[`prevent`])},[r(`span`,null,c(e(p)(`kanban.cloud.readOnlyNotice`)),1),r(`span`,N,c(e(p)(`kanban.cloud.upgradeCta`)),1)])):u(``,!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,c(e(B)===`not-member`?e(p)(`kanban.cloud.orgNotAccessible`):e(p)(`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,c(e(p)(`kanban.cloud.notConnectedTitle`)),1),r(`p`,j,c(e(p)(`kanban.cloud.notConnectedDesc`)),1),t(e(f),{label:e(p)(`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};